diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm
new file mode 100644
index 0000000..ec35bd5
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm
@@ -0,0 +1,75 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %result "result"
+               OpMemberName %result 0 "res0"
+               OpMemberName %result 1 "res1"
+               OpMemberName %result 2 "res2"
+               OpName %_ ""
+               OpName %block0 "block0"
+               OpMemberName %block0 0 "data0"
+               OpName %__0 ""
+               OpName %block1 "block1"
+               OpMemberName %block1 0 "data1"
+               OpName %__1 ""
+               OpName %block2 "block2"
+               OpMemberName %block2 0 "data2"
+               OpName %__2 ""
+               OpMemberDecorate %result 0 Offset 0
+               OpMemberDecorate %result 1 Offset 4
+               OpMemberDecorate %result 2 Offset 8
+               OpDecorate %result Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 3
+               OpMemberDecorate %block0 0 Offset 0
+               OpDecorate %block0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpMemberDecorate %block1 0 Offset 0
+               OpDecorate %block1 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 1
+               OpMemberDecorate %block2 0 Offset 0
+               OpDecorate %block2 Block
+               OpDecorate %__2 DescriptorSet 0
+               OpDecorate %__2 Binding 2
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+     %result = OpTypeStruct %int %int %int
+%_ptr_StorageBuffer_result = OpTypePointer StorageBuffer %result
+          %_ = OpVariable %_ptr_StorageBuffer_result StorageBuffer
+      %int_0 = OpConstant %int 0
+     %block0 = OpTypeStruct %int
+%_ptr_Uniform_block0 = OpTypePointer Uniform %block0
+        %__0 = OpVariable %_ptr_Uniform_block0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_1 = OpConstant %int 1
+     %block1 = OpTypeStruct %int
+%_ptr_Uniform_block1 = OpTypePointer Uniform %block1
+        %__1 = OpVariable %_ptr_Uniform_block1 Uniform
+      %int_2 = OpConstant %int 2
+     %block2 = OpTypeStruct %int
+%_ptr_Uniform_block2 = OpTypePointer Uniform %block2
+        %__2 = OpVariable %_ptr_Uniform_block2 Uniform
+       %main = OpFunction %void None %12
+         %23 = OpLabel
+         %24 = OpAccessChain %_ptr_Uniform_int %__0 %int_0
+         %25 = OpLoad %int %24
+         %26 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_0
+               OpStore %26 %25
+         %27 = OpAccessChain %_ptr_Uniform_int %__1 %int_0
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_1
+               OpStore %29 %28
+         %30 = OpAccessChain %_ptr_Uniform_int %__2 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_2
+               OpStore %32 %31
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.hlsl b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..970956b
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+RWByteAddressBuffer x_4 : register(u3, space0);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b2, space0) {
+  uint4 x_10[1];
+};
+
+void main_1() {
+  const int x_25 = asint(x_6[0].x);
+  x_4.Store(0u, asuint(x_25));
+  const int x_28 = asint(x_8[0].x);
+  x_4.Store(4u, asuint(x_28));
+  const int x_31 = asint(x_10[0].x);
+  x_4.Store(8u, asuint(x_31));
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.msl b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.msl
new file mode 100644
index 0000000..396f33d
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct result {
+  /* 0x0000 */ int res0;
+  /* 0x0004 */ int res1;
+  /* 0x0008 */ int res2;
+};
+struct block0 {
+  /* 0x0000 */ int data0;
+};
+struct block1 {
+  /* 0x0000 */ int data1;
+};
+struct block2 {
+  /* 0x0000 */ int data2;
+};
+
+void main_1(constant block0& x_6, constant block1& x_8, constant block2& x_10, device result& x_4) {
+  int const x_25 = x_6.data0;
+  x_4.res0 = x_25;
+  int const x_28 = x_8.data1;
+  x_4.res1 = x_28;
+  int const x_31 = x_10.data2;
+  x_4.res2 = x_31;
+  return;
+}
+
+kernel void tint_symbol(constant block0& x_6 [[buffer(0)]], constant block1& x_8 [[buffer(1)]], constant block2& x_10 [[buffer(2)]], device result& x_4 [[buffer(3)]]) {
+  main_1(x_6, x_8, x_10, x_4);
+  return;
+}
+
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.spvasm b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..bd8b189
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.spvasm
@@ -0,0 +1,88 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 36
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %result "result"
+               OpMemberName %result 0 "res0"
+               OpMemberName %result 1 "res1"
+               OpMemberName %result 2 "res2"
+               OpName %x_4 "x_4"
+               OpName %block0 "block0"
+               OpMemberName %block0 0 "data0"
+               OpName %x_6 "x_6"
+               OpName %block1 "block1"
+               OpMemberName %block1 0 "data1"
+               OpName %x_8 "x_8"
+               OpName %block2 "block2"
+               OpMemberName %block2 0 "data2"
+               OpName %x_10 "x_10"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %result Block
+               OpMemberDecorate %result 0 Offset 0
+               OpMemberDecorate %result 1 Offset 4
+               OpMemberDecorate %result 2 Offset 8
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 3
+               OpDecorate %block0 Block
+               OpMemberDecorate %block0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %block1 Block
+               OpMemberDecorate %block1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %block2 Block
+               OpMemberDecorate %block2 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 2
+        %int = OpTypeInt 32 1
+     %result = OpTypeStruct %int %int %int
+%_ptr_StorageBuffer_result = OpTypePointer StorageBuffer %result
+        %x_4 = OpVariable %_ptr_StorageBuffer_result StorageBuffer
+     %block0 = OpTypeStruct %int
+%_ptr_Uniform_block0 = OpTypePointer Uniform %block0
+        %x_6 = OpVariable %_ptr_Uniform_block0 Uniform
+     %block1 = OpTypeStruct %int
+%_ptr_Uniform_block1 = OpTypePointer Uniform %block1
+        %x_8 = OpVariable %_ptr_Uniform_block1 Uniform
+     %block2 = OpTypeStruct %int
+%_ptr_Uniform_block2 = OpTypePointer Uniform %block2
+       %x_10 = OpVariable %_ptr_Uniform_block2 Uniform
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %21 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %22 = OpLoad %int %21
+         %24 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %24 %22
+         %25 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %26 = OpLoad %int %25
+         %28 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_1
+               OpStore %28 %26
+         %29 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_2
+               OpStore %32 %30
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.wgsl b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..7f8a2d7
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct result {
+  res0 : i32;
+  res1 : i32;
+  res2 : i32;
+};
+
+[[block]]
+struct block0 {
+  data0 : i32;
+};
+
+[[block]]
+struct block1 {
+  data1 : i32;
+};
+
+[[block]]
+struct block2 {
+  data2 : i32;
+};
+
+[[group(0), binding(3)]] var<storage, read_write> x_4 : result;
+
+[[group(0), binding(0)]] var<uniform> x_6 : block0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : block1;
+
+[[group(0), binding(2)]] var<uniform> x_10 : block2;
+
+fn main_1() {
+  let x_25 : i32 = x_6.data0;
+  x_4.res0 = x_25;
+  let x_28 : i32 = x_8.data1;
+  x_4.res1 = x_28;
+  let x_31 : i32 = x_10.data2;
+  x_4.res2 = x_31;
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
new file mode 100644
index 0000000..7f8a2d7
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct result {
+  res0 : i32;
+  res1 : i32;
+  res2 : i32;
+};
+
+[[block]]
+struct block0 {
+  data0 : i32;
+};
+
+[[block]]
+struct block1 {
+  data1 : i32;
+};
+
+[[block]]
+struct block2 {
+  data2 : i32;
+};
+
+[[group(0), binding(3)]] var<storage, read_write> x_4 : result;
+
+[[group(0), binding(0)]] var<uniform> x_6 : block0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : block1;
+
+[[group(0), binding(2)]] var<uniform> x_10 : block2;
+
+fn main_1() {
+  let x_25 : i32 = x_6.data0;
+  x_4.res0 = x_25;
+  let x_28 : i32 = x_8.data1;
+  x_4.res1 = x_28;
+  let x_31 : i32 = x_10.data2;
+  x_4.res2 = x_31;
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.hlsl b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..970956b
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+RWByteAddressBuffer x_4 : register(u3, space0);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b2, space0) {
+  uint4 x_10[1];
+};
+
+void main_1() {
+  const int x_25 = asint(x_6[0].x);
+  x_4.Store(0u, asuint(x_25));
+  const int x_28 = asint(x_8[0].x);
+  x_4.Store(4u, asuint(x_28));
+  const int x_31 = asint(x_10[0].x);
+  x_4.Store(8u, asuint(x_31));
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.msl b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.msl
new file mode 100644
index 0000000..396f33d
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct result {
+  /* 0x0000 */ int res0;
+  /* 0x0004 */ int res1;
+  /* 0x0008 */ int res2;
+};
+struct block0 {
+  /* 0x0000 */ int data0;
+};
+struct block1 {
+  /* 0x0000 */ int data1;
+};
+struct block2 {
+  /* 0x0000 */ int data2;
+};
+
+void main_1(constant block0& x_6, constant block1& x_8, constant block2& x_10, device result& x_4) {
+  int const x_25 = x_6.data0;
+  x_4.res0 = x_25;
+  int const x_28 = x_8.data1;
+  x_4.res1 = x_28;
+  int const x_31 = x_10.data2;
+  x_4.res2 = x_31;
+  return;
+}
+
+kernel void tint_symbol(constant block0& x_6 [[buffer(0)]], constant block1& x_8 [[buffer(1)]], constant block2& x_10 [[buffer(2)]], device result& x_4 [[buffer(3)]]) {
+  main_1(x_6, x_8, x_10, x_4);
+  return;
+}
+
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.spvasm b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..bd8b189
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.spvasm
@@ -0,0 +1,88 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 36
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %result "result"
+               OpMemberName %result 0 "res0"
+               OpMemberName %result 1 "res1"
+               OpMemberName %result 2 "res2"
+               OpName %x_4 "x_4"
+               OpName %block0 "block0"
+               OpMemberName %block0 0 "data0"
+               OpName %x_6 "x_6"
+               OpName %block1 "block1"
+               OpMemberName %block1 0 "data1"
+               OpName %x_8 "x_8"
+               OpName %block2 "block2"
+               OpMemberName %block2 0 "data2"
+               OpName %x_10 "x_10"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %result Block
+               OpMemberDecorate %result 0 Offset 0
+               OpMemberDecorate %result 1 Offset 4
+               OpMemberDecorate %result 2 Offset 8
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 3
+               OpDecorate %block0 Block
+               OpMemberDecorate %block0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %block1 Block
+               OpMemberDecorate %block1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %block2 Block
+               OpMemberDecorate %block2 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 2
+        %int = OpTypeInt 32 1
+     %result = OpTypeStruct %int %int %int
+%_ptr_StorageBuffer_result = OpTypePointer StorageBuffer %result
+        %x_4 = OpVariable %_ptr_StorageBuffer_result StorageBuffer
+     %block0 = OpTypeStruct %int
+%_ptr_Uniform_block0 = OpTypePointer Uniform %block0
+        %x_6 = OpVariable %_ptr_Uniform_block0 Uniform
+     %block1 = OpTypeStruct %int
+%_ptr_Uniform_block1 = OpTypePointer Uniform %block1
+        %x_8 = OpVariable %_ptr_Uniform_block1 Uniform
+     %block2 = OpTypeStruct %int
+%_ptr_Uniform_block2 = OpTypePointer Uniform %block2
+       %x_10 = OpVariable %_ptr_Uniform_block2 Uniform
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %21 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %22 = OpLoad %int %21
+         %24 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %24 %22
+         %25 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %26 = OpLoad %int %25
+         %28 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_1
+               OpStore %28 %26
+         %29 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_2
+               OpStore %32 %30
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.wgsl b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..7f8a2d7
--- /dev/null
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct result {
+  res0 : i32;
+  res1 : i32;
+  res2 : i32;
+};
+
+[[block]]
+struct block0 {
+  data0 : i32;
+};
+
+[[block]]
+struct block1 {
+  data1 : i32;
+};
+
+[[block]]
+struct block2 {
+  data2 : i32;
+};
+
+[[group(0), binding(3)]] var<storage, read_write> x_4 : result;
+
+[[group(0), binding(0)]] var<uniform> x_6 : block0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : block1;
+
+[[group(0), binding(2)]] var<uniform> x_10 : block2;
+
+fn main_1() {
+  let x_25 : i32 = x_6.data0;
+  x_4.res0 = x_25;
+  let x_28 : i32 = x_8.data1;
+  x_4.res1 = x_28;
+  let x_31 : i32 = x_10.data2;
+  x_4.res2 = x_31;
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm
new file mode 100644
index 0000000..1fb15a6
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm
@@ -0,0 +1,35 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %block0 "block0"
+               OpMemberName %block0 0 "data"
+               OpName %_ ""
+               OpMemberDecorate %block0 0 Offset 0
+               OpDecorate %block0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+     %block0 = OpTypeStruct %v4float
+%_ptr_StorageBuffer_block0 = OpTypePointer StorageBuffer %block0
+          %_ = OpVariable %_ptr_StorageBuffer_block0 StorageBuffer
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %16 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+%_ptr_StorageBuffer_v4float = OpTypePointer StorageBuffer %v4float
+       %main = OpFunction %void None %6
+         %18 = OpLabel
+         %19 = OpAccessChain %_ptr_StorageBuffer_v4float %_ %int_0
+               OpStore %19 %16
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.hlsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..a5513da
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.hlsl
@@ -0,0 +1,12 @@
+RWByteAddressBuffer x_4 : register(u1, space0);
+
+void main_1() {
+  x_4.Store4(0u, asuint(float4(1.0f, 2.0f, 3.0f, 4.0f)));
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.msl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.msl
new file mode 100644
index 0000000..a410fd8
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.msl
@@ -0,0 +1,17 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct block0 {
+  /* 0x0000 */ packed_float4 data;
+};
+
+void main_1(device block0& x_4) {
+  x_4.data = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  return;
+}
+
+kernel void tint_symbol(device block0& x_4 [[buffer(1)]]) {
+  main_1(x_4);
+  return;
+}
+
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.spvasm b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..9494d1f
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.spvasm
@@ -0,0 +1,44 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 22
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %block0 "block0"
+               OpMemberName %block0 0 "data"
+               OpName %x_4 "x_4"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %block0 Block
+               OpMemberDecorate %block0 0 Offset 0
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+     %block0 = OpTypeStruct %v4float
+%_ptr_StorageBuffer_block0 = OpTypePointer StorageBuffer %block0
+        %x_4 = OpVariable %_ptr_StorageBuffer_block0 StorageBuffer
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_v4float = OpTypePointer StorageBuffer %v4float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %18 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+     %main_1 = OpFunction %void None %6
+          %9 = OpLabel
+         %13 = OpAccessChain %_ptr_StorageBuffer_v4float %x_4 %uint_0
+               OpStore %13 %18
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %6
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..40325a2
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.wgsl
@@ -0,0 +1,16 @@
+[[block]]
+struct block0 {
+  data : vec4<f32>;
+};
+
+[[group(0), binding(1)]] var<storage, read_write> x_4 : block0;
+
+fn main_1() {
+  x_4.data = vec4<f32>(1.0, 2.0, 3.0, 4.0);
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
new file mode 100644
index 0000000..40325a2
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
@@ -0,0 +1,16 @@
+[[block]]
+struct block0 {
+  data : vec4<f32>;
+};
+
+[[group(0), binding(1)]] var<storage, read_write> x_4 : block0;
+
+fn main_1() {
+  x_4.data = vec4<f32>(1.0, 2.0, 3.0, 4.0);
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.hlsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..a5513da
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.hlsl
@@ -0,0 +1,12 @@
+RWByteAddressBuffer x_4 : register(u1, space0);
+
+void main_1() {
+  x_4.Store4(0u, asuint(float4(1.0f, 2.0f, 3.0f, 4.0f)));
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.msl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.msl
new file mode 100644
index 0000000..a410fd8
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.msl
@@ -0,0 +1,17 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct block0 {
+  /* 0x0000 */ packed_float4 data;
+};
+
+void main_1(device block0& x_4) {
+  x_4.data = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  return;
+}
+
+kernel void tint_symbol(device block0& x_4 [[buffer(1)]]) {
+  main_1(x_4);
+  return;
+}
+
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.spvasm b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..9494d1f
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.spvasm
@@ -0,0 +1,44 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 22
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %block0 "block0"
+               OpMemberName %block0 0 "data"
+               OpName %x_4 "x_4"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %block0 Block
+               OpMemberDecorate %block0 0 Offset 0
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+     %block0 = OpTypeStruct %v4float
+%_ptr_StorageBuffer_block0 = OpTypePointer StorageBuffer %block0
+        %x_4 = OpVariable %_ptr_StorageBuffer_block0 StorageBuffer
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_v4float = OpTypePointer StorageBuffer %v4float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %18 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+     %main_1 = OpFunction %void None %6
+          %9 = OpLabel
+         %13 = OpAccessChain %_ptr_StorageBuffer_v4float %x_4 %uint_0
+               OpStore %13 %18
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %6
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..40325a2
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+[[block]]
+struct block0 {
+  data : vec4<f32>;
+};
+
+[[group(0), binding(1)]] var<storage, read_write> x_4 : block0;
+
+fn main_1() {
+  x_4.data = vec4<f32>(1.0, 2.0, 3.0, 4.0);
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm
new file mode 100644
index 0000000..3747c38
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm
@@ -0,0 +1,56 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position %frag_color
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpName %frag_color "frag_color"
+               OpName %block0 "block0"
+               OpMemberName %block0 0 "in_color"
+               OpName %__0 ""
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+               OpDecorate %frag_color Location 0
+               OpMemberDecorate %block0 0 Offset 0
+               OpDecorate %block0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %position = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %frag_color = OpVariable %_ptr_Output_v4float Output
+     %block0 = OpTypeStruct %v4float
+%_ptr_Uniform_block0 = OpTypePointer Uniform %block0
+        %__0 = OpVariable %_ptr_Uniform_block0 Uniform
+%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
+       %main = OpFunction %void None %10
+         %23 = OpLabel
+         %24 = OpLoad %v4float %position
+         %25 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %25 %24
+         %26 = OpAccessChain %_ptr_Uniform_v4float %__0 %int_0
+         %27 = OpLoad %v4float %26
+               OpStore %frag_color %27
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.hlsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..3b1f34a
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  gl_Position = position;
+  const float4 x_27 = asfloat(x_8[0]);
+  frag_color = x_27;
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+  float4 frag_color_1;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position, frag_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.msl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.msl
new file mode 100644
index 0000000..de2d334
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct block0 {
+  /* 0x0000 */ packed_float4 in_color;
+};
+struct main_out {
+  float4 gl_Position;
+  float4 frag_color_1;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(constant block0& x_8, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float4 const x_24 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_24;
+  float4 const x_27 = x_8.in_color;
+  *(tint_symbol_8) = x_27;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant block0& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_9 = position_param;
+  main_1(x_8, &(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_10, .frag_color_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.spvasm b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..a0529db
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.spvasm
@@ -0,0 +1,92 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 45
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %frag_color "frag_color"
+               OpName %block0 "block0"
+               OpMemberName %block0 0 "in_color"
+               OpName %x_8 "x_8"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpMemberName %main_out 1 "frag_color_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %block0 Block
+               OpMemberDecorate %block0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+ %frag_color = OpVariable %_ptr_Private_v4float Private %8
+     %block0 = OpTypeStruct %v4float
+%_ptr_Uniform_block0 = OpTypePointer Uniform %block0
+        %x_8 = OpVariable %_ptr_Uniform_block0 Uniform
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
+   %main_out = OpTypeStruct %v4float %v4float
+         %29 = OpTypeFunction %void %main_out
+    %float_1 = OpConstant %float 1
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %23 = OpLoad %v4float %position
+               OpStore %gl_Position %23
+         %27 = OpAccessChain %_ptr_Uniform_v4float %x_8 %uint_0
+         %28 = OpLoad %v4float %27
+               OpStore %frag_color %28
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %29
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %33 = OpLabel
+         %34 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %34
+         %35 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %35
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %37 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %39 = OpLoad %v4float %tint_symbol
+               OpStore %position %39
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %gl_Position
+         %43 = OpLoad %v4float %frag_color
+         %44 = OpCompositeConstruct %main_out %42 %43
+         %41 = OpFunctionCall %void %tint_symbol_4 %44
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..1b98fae
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.wgsl
@@ -0,0 +1,34 @@
+[[block]]
+struct block0 {
+  in_color : vec4<f32>;
+};
+
+var<private> position : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : block0;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_24 : vec4<f32> = position;
+  gl_Position = x_24;
+  let x_27 : vec4<f32> = x_8.in_color;
+  frag_color = x_27;
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position, frag_color);
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
new file mode 100644
index 0000000..1b98fae
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
@@ -0,0 +1,34 @@
+[[block]]
+struct block0 {
+  in_color : vec4<f32>;
+};
+
+var<private> position : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : block0;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_24 : vec4<f32> = position;
+  gl_Position = x_24;
+  let x_27 : vec4<f32> = x_8.in_color;
+  frag_color = x_27;
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position, frag_color);
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.hlsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..3b1f34a
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  gl_Position = position;
+  const float4 x_27 = asfloat(x_8[0]);
+  frag_color = x_27;
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+  float4 frag_color_1;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position, frag_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.msl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.msl
new file mode 100644
index 0000000..de2d334
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct block0 {
+  /* 0x0000 */ packed_float4 in_color;
+};
+struct main_out {
+  float4 gl_Position;
+  float4 frag_color_1;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(constant block0& x_8, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float4 const x_24 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_24;
+  float4 const x_27 = x_8.in_color;
+  *(tint_symbol_8) = x_27;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant block0& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_9 = position_param;
+  main_1(x_8, &(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_10, .frag_color_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.spvasm b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..a0529db
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.spvasm
@@ -0,0 +1,92 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 45
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %frag_color "frag_color"
+               OpName %block0 "block0"
+               OpMemberName %block0 0 "in_color"
+               OpName %x_8 "x_8"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpMemberName %main_out 1 "frag_color_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %block0 Block
+               OpMemberDecorate %block0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+ %frag_color = OpVariable %_ptr_Private_v4float Private %8
+     %block0 = OpTypeStruct %v4float
+%_ptr_Uniform_block0 = OpTypePointer Uniform %block0
+        %x_8 = OpVariable %_ptr_Uniform_block0 Uniform
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
+   %main_out = OpTypeStruct %v4float %v4float
+         %29 = OpTypeFunction %void %main_out
+    %float_1 = OpConstant %float 1
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %23 = OpLoad %v4float %position
+               OpStore %gl_Position %23
+         %27 = OpAccessChain %_ptr_Uniform_v4float %x_8 %uint_0
+         %28 = OpLoad %v4float %27
+               OpStore %frag_color %28
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %29
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %33 = OpLabel
+         %34 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %34
+         %35 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %35
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %37 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %39 = OpLoad %v4float %tint_symbol
+               OpStore %position %39
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %gl_Position
+         %43 = OpLoad %v4float %frag_color
+         %44 = OpCompositeConstruct %main_out %42 %43
+         %41 = OpFunctionCall %void %tint_symbol_4 %44
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..1b98fae
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.wgsl
@@ -0,0 +1,34 @@
+[[block]]
+struct block0 {
+  in_color : vec4<f32>;
+};
+
+var<private> position : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : block0;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_24 : vec4<f32> = position;
+  gl_Position = x_24;
+  let x_27 : vec4<f32> = x_8.in_color;
+  frag_color = x_27;
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position, frag_color);
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm
new file mode 100644
index 0000000..8c4be60
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm
@@ -0,0 +1,25 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %final_color %frag_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %final_color "final_color"
+               OpName %frag_color "frag_color"
+               OpDecorate %final_color Location 0
+               OpDecorate %frag_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%final_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+ %frag_color = OpVariable %_ptr_Input_v4float Input
+       %main = OpFunction %void None %6
+         %11 = OpLabel
+         %12 = OpLoad %v4float %frag_color
+               OpStore %final_color %12
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.hlsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..acf1be9
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 final_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  final_color = frag_color;
+  return;
+}
+
+struct main_out {
+  float4 final_color_1;
+};
+struct tint_symbol_1 {
+  float4 frag_color_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 final_color_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 frag_color_param = tint_symbol.frag_color_param;
+  frag_color = frag_color_param;
+  main_1();
+  const main_out tint_symbol_3 = {final_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.final_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.msl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.msl
new file mode 100644
index 0000000..838993a
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 final_color_1;
+};
+struct tint_symbol_2 {
+  float4 frag_color_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  float4 final_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_12 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_12;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const frag_color_param = tint_symbol_1.frag_color_param;
+  tint_symbol_8 = frag_color_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.final_color_1=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.final_color_1=tint_symbol_4.final_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.spvasm b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..dd25b21
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.spvasm
@@ -0,0 +1,59 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %final_color "final_color"
+               OpName %frag_color "frag_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "final_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%final_color = OpVariable %_ptr_Private_v4float Private %5
+ %frag_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %16 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %15 = OpLoad %v4float %frag_color
+               OpStore %final_color %15
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %16
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %20 = OpLabel
+         %21 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %21
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %23 = OpLabel
+         %24 = OpLoad %v4float %tint_symbol
+               OpStore %frag_color %24
+         %25 = OpFunctionCall %void %main_1
+         %27 = OpLoad %v4float %final_color
+         %28 = OpCompositeConstruct %main_out %27
+         %26 = OpFunctionCall %void %tint_symbol_3 %28
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..0901c1f
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.spvasm.expected.wgsl
@@ -0,0 +1,21 @@
+var<private> final_color : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+fn main_1() {
+  let x_12 : vec4<f32> = frag_color;
+  final_color = x_12;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  final_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+  frag_color = frag_color_param;
+  main_1();
+  return main_out(final_color);
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
new file mode 100644
index 0000000..0901c1f
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
@@ -0,0 +1,21 @@
+var<private> final_color : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+fn main_1() {
+  let x_12 : vec4<f32> = frag_color;
+  final_color = x_12;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  final_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+  frag_color = frag_color_param;
+  main_1();
+  return main_out(final_color);
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.hlsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..acf1be9
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 final_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  final_color = frag_color;
+  return;
+}
+
+struct main_out {
+  float4 final_color_1;
+};
+struct tint_symbol_1 {
+  float4 frag_color_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 final_color_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 frag_color_param = tint_symbol.frag_color_param;
+  frag_color = frag_color_param;
+  main_1();
+  const main_out tint_symbol_3 = {final_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.final_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.msl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.msl
new file mode 100644
index 0000000..838993a
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 final_color_1;
+};
+struct tint_symbol_2 {
+  float4 frag_color_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  float4 final_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_12 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_12;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const frag_color_param = tint_symbol_1.frag_color_param;
+  tint_symbol_8 = frag_color_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.final_color_1=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.final_color_1=tint_symbol_4.final_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.spvasm b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..dd25b21
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.spvasm
@@ -0,0 +1,59 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %final_color "final_color"
+               OpName %frag_color "frag_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "final_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%final_color = OpVariable %_ptr_Private_v4float Private %5
+ %frag_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %16 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %15 = OpLoad %v4float %frag_color
+               OpStore %final_color %15
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %16
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %20 = OpLabel
+         %21 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %21
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %23 = OpLabel
+         %24 = OpLoad %v4float %tint_symbol
+               OpStore %frag_color %24
+         %25 = OpFunctionCall %void %main_1
+         %27 = OpLoad %v4float %final_color
+         %28 = OpCompositeConstruct %main_out %27
+         %26 = OpFunctionCall %void %tint_symbol_3 %28
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..0901c1f
--- /dev/null
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+var<private> final_color : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+fn main_1() {
+  let x_12 : vec4<f32> = frag_color;
+  final_color = x_12;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  final_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+  frag_color = frag_color_param;
+  main_1();
+  return main_out(final_color);
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm
new file mode 100644
index 0000000..a3139e6
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position %frag_color
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpName %frag_color "frag_color"
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+               OpDecorate %frag_color Location 1
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %position = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %frag_color = OpVariable %_ptr_Output_v4float Output
+  %float_0_5 = OpConstant %float 0.5
+       %main = OpFunction %void None %8
+         %20 = OpLabel
+         %21 = OpLoad %v4float %position
+         %22 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %22 %21
+         %23 = OpLoad %v4float %position
+         %24 = OpVectorTimesScalar %v4float %23 %float_0_5
+               OpStore %frag_color %24
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3cc9cde
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  gl_Position = position;
+  frag_color = (position * 0.5f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+  float4 frag_color_1;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD1;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position, frag_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.msl b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2ce3e85
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+  float4 frag_color_1;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn1)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float4 const x_21 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_21;
+  float4 const x_23 = *(tint_symbol_6);
+  *(tint_symbol_8) = (x_23 * 0.5f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_9 = position_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_10, .frag_color_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ee8e353
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,79 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 40
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpMemberName %main_out 1 "frag_color_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpDecorate %tint_symbol_3 Location 1
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+ %frag_color = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+  %float_0_5 = OpConstant %float 0.5
+   %main_out = OpTypeStruct %v4float %v4float
+         %24 = OpTypeFunction %void %main_out
+    %float_1 = OpConstant %float 1
+     %main_1 = OpFunction %void None %16
+         %19 = OpLabel
+         %20 = OpLoad %v4float %position
+               OpStore %gl_Position %20
+         %21 = OpLoad %v4float %position
+         %23 = OpVectorTimesScalar %v4float %21 %float_0_5
+               OpStore %frag_color %23
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %24
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %28 = OpLabel
+         %29 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %29
+         %30 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %30
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %16
+         %32 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %34 = OpLoad %v4float %tint_symbol
+               OpStore %position %34
+         %35 = OpFunctionCall %void %main_1
+         %37 = OpLoad %v4float %gl_Position
+         %38 = OpLoad %v4float %frag_color
+         %39 = OpCompositeConstruct %main_out %37 %38
+         %36 = OpFunctionCall %void %tint_symbol_4 %39
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b9cc524
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> position : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_21 : vec4<f32> = position;
+  gl_Position = x_21;
+  let x_23 : vec4<f32> = position;
+  frag_color = (x_23 * 0.5);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+  [[location(1)]]
+  frag_color_1 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position, frag_color);
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
new file mode 100644
index 0000000..b9cc524
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
@@ -0,0 +1,27 @@
+var<private> position : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_21 : vec4<f32> = position;
+  gl_Position = x_21;
+  let x_23 : vec4<f32> = position;
+  frag_color = (x_23 * 0.5);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+  [[location(1)]]
+  frag_color_1 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position, frag_color);
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3cc9cde
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  gl_Position = position;
+  frag_color = (position * 0.5f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+  float4 frag_color_1;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD1;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position, frag_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.msl b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2ce3e85
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+  float4 frag_color_1;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn1)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float4 const x_21 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_21;
+  float4 const x_23 = *(tint_symbol_6);
+  *(tint_symbol_8) = (x_23 * 0.5f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_9 = position_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_10, .frag_color_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ee8e353
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,79 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 40
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpMemberName %main_out 1 "frag_color_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpDecorate %tint_symbol_3 Location 1
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+ %frag_color = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+  %float_0_5 = OpConstant %float 0.5
+   %main_out = OpTypeStruct %v4float %v4float
+         %24 = OpTypeFunction %void %main_out
+    %float_1 = OpConstant %float 1
+     %main_1 = OpFunction %void None %16
+         %19 = OpLabel
+         %20 = OpLoad %v4float %position
+               OpStore %gl_Position %20
+         %21 = OpLoad %v4float %position
+         %23 = OpVectorTimesScalar %v4float %21 %float_0_5
+               OpStore %frag_color %23
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %24
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %28 = OpLabel
+         %29 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %29
+         %30 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %30
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %16
+         %32 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %34 = OpLoad %v4float %tint_symbol
+               OpStore %position %34
+         %35 = OpFunctionCall %void %main_1
+         %37 = OpLoad %v4float %gl_Position
+         %38 = OpLoad %v4float %frag_color
+         %39 = OpCompositeConstruct %main_out %37 %38
+         %36 = OpFunctionCall %void %tint_symbol_4 %39
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b9cc524
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> position : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_21 : vec4<f32> = position;
+  gl_Position = x_21;
+  let x_23 : vec4<f32> = position;
+  frag_color = (x_23 * 0.5);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+  [[location(1)]]
+  frag_color_1 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position, frag_color);
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm
new file mode 100644
index 0000000..2496d10
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm
@@ -0,0 +1,59 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %frag_color %color_out
+               OpExecutionMode %main OriginUpperLeft
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %iv "iv"
+               OpName %frag_color "frag_color"
+               OpName %color_out "color_out"
+               OpDecorate %frag_color Location 1
+               OpDecorate %color_out Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+ %frag_color = OpVariable %_ptr_Input_v4float Input
+    %v2float = OpTypeVector %float 2
+  %float_256 = OpConstant %float 256
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+     %int_64 = OpConstant %int 64
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+  %color_out = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+       %main = OpFunction %void None %7
+         %27 = OpLabel
+         %iv = OpVariable %_ptr_Function_v2int Function
+         %28 = OpLoad %v4float %frag_color
+         %29 = OpVectorShuffle %v2float %28 %28 0 1
+         %30 = OpVectorTimesScalar %v2float %29 %float_256
+         %31 = OpConvertFToS %v2int %30
+               OpStore %iv %31
+         %32 = OpAccessChain %_ptr_Function_int %iv %uint_1
+         %33 = OpLoad %int %32
+         %34 = OpSDiv %int %33 %int_2
+         %35 = OpBitwiseAnd %int %34 %int_64
+         %36 = OpIEqual %bool %35 %int_64
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %color_out %25
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %color_out %26
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.hlsl b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..15b4ff6
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int2 iv = int2(0, 0);
+  const float4 x_28 = frag_color;
+  iv = int2((float2(x_28.x, x_28.y) * 256.0f));
+  const int x_33 = iv.y;
+  if ((((x_33 / 2) & 64) == 64)) {
+    color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    color_out = float4(0.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_1 {
+  float4 frag_color_param : TEXCOORD1;
+};
+struct tint_symbol_2 {
+  float4 color_out_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 frag_color_param = tint_symbol.frag_color_param;
+  frag_color = frag_color_param;
+  main_1();
+  const main_out tint_symbol_3 = {color_out};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.color_out_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.msl b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.msl
new file mode 100644
index 0000000..ae8e6eb
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_2 {
+  float4 frag_color_param [[user(locn1)]];
+};
+struct tint_symbol_3 {
+  float4 color_out_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int2 iv = 0;
+  float4 const x_28 = *(tint_symbol_6);
+  iv = int2((float2(x_28.x, x_28.y) * 256.0f));
+  int const x_33 = iv.y;
+  if ((((x_33 / 2) & 64) == 64)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const frag_color_param = tint_symbol_1.frag_color_param;
+  tint_symbol_8 = frag_color_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.color_out_1=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.color_out_1=tint_symbol_4.color_out_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.spvasm b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..6d6715e
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.spvasm
@@ -0,0 +1,96 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 59
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %frag_color "frag_color"
+               OpName %color_out "color_out"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %iv "iv"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol Location 1
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+ %frag_color = OpVariable %_ptr_Private_v4float Private %5
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %19 = OpConstantNull %v2int
+    %v2float = OpTypeVector %float 2
+  %float_256 = OpConstant %float 256
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+     %int_64 = OpConstant %int 64
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %46 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %iv = OpVariable %_ptr_Function_v2int Function %19
+         %20 = OpLoad %v4float %frag_color
+         %23 = OpCompositeExtract %float %20 0
+         %24 = OpCompositeExtract %float %20 1
+         %25 = OpCompositeConstruct %v2float %23 %24
+         %27 = OpVectorTimesScalar %v2float %25 %float_256
+         %21 = OpConvertFToS %v2int %27
+               OpStore %iv %21
+         %31 = OpAccessChain %_ptr_Function_int %iv %uint_1
+         %32 = OpLoad %int %31
+         %34 = OpSDiv %int %32 %int_2
+         %36 = OpBitwiseAnd %int %34 %int_64
+         %37 = OpIEqual %bool %36 %int_64
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpStore %color_out %44
+               OpBranch %39
+         %41 = OpLabel
+               OpStore %color_out %45
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %46
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %50 = OpLabel
+         %51 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %51
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %53 = OpLabel
+         %54 = OpLoad %v4float %tint_symbol
+               OpStore %frag_color %54
+         %55 = OpFunctionCall %void %main_1
+         %57 = OpLoad %v4float %color_out
+         %58 = OpCompositeConstruct %main_out %57
+         %56 = OpFunctionCall %void %tint_symbol_3 %58
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..cbbd626
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+var<private> frag_color : vec4<f32>;
+
+var<private> color_out : vec4<f32>;
+
+fn main_1() {
+  var iv : vec2<i32>;
+  let x_28 : vec4<f32> = frag_color;
+  iv = vec2<i32>((vec2<f32>(x_28.x, x_28.y) * 256.0));
+  let x_33 : i32 = iv.y;
+  if ((((x_33 / 2) & 64) == 64)) {
+    color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    color_out = vec4<f32>(0.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(1)]] frag_color_param : vec4<f32>) -> main_out {
+  frag_color = frag_color_param;
+  main_1();
+  return main_out(color_out);
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl
new file mode 100644
index 0000000..cbbd626
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl
@@ -0,0 +1,28 @@
+var<private> frag_color : vec4<f32>;
+
+var<private> color_out : vec4<f32>;
+
+fn main_1() {
+  var iv : vec2<i32>;
+  let x_28 : vec4<f32> = frag_color;
+  iv = vec2<i32>((vec2<f32>(x_28.x, x_28.y) * 256.0));
+  let x_33 : i32 = iv.y;
+  if ((((x_33 / 2) & 64) == 64)) {
+    color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    color_out = vec4<f32>(0.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(1)]] frag_color_param : vec4<f32>) -> main_out {
+  frag_color = frag_color_param;
+  main_1();
+  return main_out(color_out);
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.hlsl b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..15b4ff6
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int2 iv = int2(0, 0);
+  const float4 x_28 = frag_color;
+  iv = int2((float2(x_28.x, x_28.y) * 256.0f));
+  const int x_33 = iv.y;
+  if ((((x_33 / 2) & 64) == 64)) {
+    color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    color_out = float4(0.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_1 {
+  float4 frag_color_param : TEXCOORD1;
+};
+struct tint_symbol_2 {
+  float4 color_out_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 frag_color_param = tint_symbol.frag_color_param;
+  frag_color = frag_color_param;
+  main_1();
+  const main_out tint_symbol_3 = {color_out};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.color_out_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.msl b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.msl
new file mode 100644
index 0000000..ae8e6eb
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_2 {
+  float4 frag_color_param [[user(locn1)]];
+};
+struct tint_symbol_3 {
+  float4 color_out_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int2 iv = 0;
+  float4 const x_28 = *(tint_symbol_6);
+  iv = int2((float2(x_28.x, x_28.y) * 256.0f));
+  int const x_33 = iv.y;
+  if ((((x_33 / 2) & 64) == 64)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const frag_color_param = tint_symbol_1.frag_color_param;
+  tint_symbol_8 = frag_color_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.color_out_1=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.color_out_1=tint_symbol_4.color_out_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.spvasm b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..6d6715e
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.spvasm
@@ -0,0 +1,96 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 59
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %frag_color "frag_color"
+               OpName %color_out "color_out"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %iv "iv"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol Location 1
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+ %frag_color = OpVariable %_ptr_Private_v4float Private %5
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %19 = OpConstantNull %v2int
+    %v2float = OpTypeVector %float 2
+  %float_256 = OpConstant %float 256
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+     %int_64 = OpConstant %int 64
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %46 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %iv = OpVariable %_ptr_Function_v2int Function %19
+         %20 = OpLoad %v4float %frag_color
+         %23 = OpCompositeExtract %float %20 0
+         %24 = OpCompositeExtract %float %20 1
+         %25 = OpCompositeConstruct %v2float %23 %24
+         %27 = OpVectorTimesScalar %v2float %25 %float_256
+         %21 = OpConvertFToS %v2int %27
+               OpStore %iv %21
+         %31 = OpAccessChain %_ptr_Function_int %iv %uint_1
+         %32 = OpLoad %int %31
+         %34 = OpSDiv %int %32 %int_2
+         %36 = OpBitwiseAnd %int %34 %int_64
+         %37 = OpIEqual %bool %36 %int_64
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpStore %color_out %44
+               OpBranch %39
+         %41 = OpLabel
+               OpStore %color_out %45
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %46
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %50 = OpLabel
+         %51 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %51
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %53 = OpLabel
+         %54 = OpLoad %v4float %tint_symbol
+               OpStore %frag_color %54
+         %55 = OpFunctionCall %void %main_1
+         %57 = OpLoad %v4float %color_out
+         %58 = OpCompositeConstruct %main_out %57
+         %56 = OpFunctionCall %void %tint_symbol_3 %58
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..cbbd626
--- /dev/null
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+var<private> frag_color : vec4<f32>;
+
+var<private> color_out : vec4<f32>;
+
+fn main_1() {
+  var iv : vec2<i32>;
+  let x_28 : vec4<f32> = frag_color;
+  iv = vec2<i32>((vec2<f32>(x_28.x, x_28.y) * 256.0));
+  let x_33 : i32 = iv.y;
+  if ((((x_33 / 2) & 64) == 64)) {
+    color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    color_out = vec4<f32>(0.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(1)]] frag_color_param : vec4<f32>) -> main_out {
+  frag_color = frag_color_param;
+  main_1();
+  return main_out(color_out);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm
new file mode 100644
index 0000000..cdbcbc0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm
@@ -0,0 +1,44 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %x "x"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %x RelaxedPrecision
+               OpDecorate %5 RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %20 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %8
+         %21 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function
+               OpStore %x %int_0
+          %5 = OpLoad %int %x
+          %6 = OpExtInst %int %1 SClamp %5 %int_0 %int_3
+         %22 = OpVectorExtractDynamic %float %15 %6
+         %23 = OpFOrdGreaterThanEqual %bool %22 %float_1
+               OpSelectionMerge %24 None
+               OpBranchConditional %23 %25 %24
+         %25 = OpLabel
+               OpBranch %24
+         %24 = OpLabel
+               OpStore %_GLF_color %20
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..485db30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x = 0;
+  x = 0;
+  if ((float4(1.0f, 1.0f, 1.0f, 1.0f)[clamp(x, 0, 3)] >= 1.0f)) {
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b9d21c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.msl
@@ -0,0 +1,28 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int x = 0;
+  x = 0;
+  int const x_5 = x;
+  if ((float4(1.0f, 1.0f, 1.0f, 1.0f)[clamp(x_5, 0, 3)] >= 1.0f)) {
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ee25aef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+         %21 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x "x"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+         %19 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %30 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %15
+               OpStore %x %int_0
+         %17 = OpLoad %int %x
+         %20 = OpExtInst %int %21 SClamp %17 %int_0 %int_3
+         %23 = OpVectorExtractDynamic %float %19 %20
+         %24 = OpFOrdGreaterThanEqual %bool %23 %float_1
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+               OpStore %x_GLF_color %29
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %30
+%tint_symbol = OpFunctionParameter %main_out
+         %34 = OpLabel
+         %35 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %35
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %main_1
+         %40 = OpLoad %v4float %x_GLF_color
+         %41 = OpCompositeConstruct %main_out %40
+         %39 = OpFunctionCall %void %tint_symbol_2 %41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8432d48
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x : i32;
+  x = 0;
+  let x_5 : i32 = x;
+  if ((vec4<f32>(1.0, 1.0, 1.0, 1.0)[clamp(x_5, 0, 3)] >= 1.0)) {
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
new file mode 100644
index 0000000..8432d48
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
@@ -0,0 +1,22 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x : i32;
+  x = 0;
+  let x_5 : i32 = x;
+  if ((vec4<f32>(1.0, 1.0, 1.0, 1.0)[clamp(x_5, 0, 3)] >= 1.0)) {
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..485db30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x = 0;
+  x = 0;
+  if ((float4(1.0f, 1.0f, 1.0f, 1.0f)[clamp(x, 0, 3)] >= 1.0f)) {
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b9d21c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.msl
@@ -0,0 +1,28 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int x = 0;
+  x = 0;
+  int const x_5 = x;
+  if ((float4(1.0f, 1.0f, 1.0f, 1.0f)[clamp(x_5, 0, 3)] >= 1.0f)) {
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ee25aef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+         %21 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x "x"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+         %19 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %30 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %15
+               OpStore %x %int_0
+         %17 = OpLoad %int %x
+         %20 = OpExtInst %int %21 SClamp %17 %int_0 %int_3
+         %23 = OpVectorExtractDynamic %float %19 %20
+         %24 = OpFOrdGreaterThanEqual %bool %23 %float_1
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+               OpStore %x_GLF_color %29
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %30
+%tint_symbol = OpFunctionParameter %main_out
+         %34 = OpLabel
+         %35 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %35
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %main_1
+         %40 = OpLoad %v4float %x_GLF_color
+         %41 = OpCompositeConstruct %main_out %40
+         %39 = OpFunctionCall %void %tint_symbol_2 %41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8432d48
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x : i32;
+  x = 0;
+  let x_5 : i32 = x;
+  if ((vec4<f32>(1.0, 1.0, 1.0, 1.0)[clamp(x_5, 0, 3)] >= 1.0)) {
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm
new file mode 100644
index 0000000..f43761b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm
@@ -0,0 +1,244 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %tmp_struct "tmp_struct"
+               OpMemberName %tmp_struct 0 "nmb"
+               OpName %binarySearch_struct_tmp_struct_i1_1_1_ "binarySearch(struct-tmp_struct-i1[1]1;"
+               OpName %obj "obj"
+               OpName %one "one"
+               OpName %zero "zero"
+               OpName %tmp_float "tmp_float"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %color "color"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %tmp_struct 0 RelaxedPrecision
+               OpDecorate %binarySearch_struct_tmp_struct_i1_1_1_ RelaxedPrecision
+               OpDecorate %one RelaxedPrecision
+               OpDecorate %zero RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+ %tmp_struct = OpTypeStruct %_arr_int_uint_1
+%_ptr_Function_tmp_struct = OpTypePointer Function %tmp_struct
+         %36 = OpTypeFunction %int %_ptr_Function_tmp_struct
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+     %int_n1 = OpConstant %int -1
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %53 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %55 = OpConstantComposite %v2float %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+         %57 = OpUndef %tmp_struct
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+         %61 = OpConstantNull %_arr_int_uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+         %63 = OpUndef %int
+         %64 = OpUndef %bool
+         %65 = OpUndef %int
+         %66 = OpUndef %bool
+       %main = OpFunction %void None %30
+         %67 = OpLabel
+         %24 = OpVariable %_ptr_Function__arr_int_uint_1 Function
+         %68 = OpVariable %_ptr_Function_bool Function %false
+         %17 = OpVariable %_ptr_Function_int Function
+         %18 = OpVariable %_ptr_Function_int Function
+         %19 = OpVariable %_ptr_Function_int Function
+         %20 = OpVariable %_ptr_Function_int Function
+         %69 = OpVariable %_ptr_Function_bool Function %false
+  %tmp_float = OpVariable %_ptr_Function_float Function
+      %color = OpVariable %_ptr_Function_v3float Function
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %75 = OpLoad %float %74
+               OpStore %tmp_float %75
+         %76 = OpCompositeConstruct %v3float %75 %75 %75
+               OpStore %color %76
+         %77 = OpCompositeExtract %_arr_int_uint_1 %57 0
+               OpStore %24 %77
+               OpStore %68 %false
+               OpBranch %78
+         %78 = OpLabel
+         %79 = OpPhi %bool %false %73 %64 %80
+               OpLoopMerge %81 %80 None
+               OpBranch %82
+         %82 = OpLabel
+               OpStore %18 %int_1
+               OpBranch %83
+         %83 = OpLabel
+         %21 = OpPhi %int %int_1 %82 %22 %84
+               OpLoopMerge %85 %84 None
+               OpBranch %86
+         %86 = OpLabel
+         %87 = OpSGreaterThan %bool %21 %int_10
+               OpBranchConditional %87 %88 %85
+         %88 = OpLabel
+         %22 = OpISub %int %21 %int_1
+               OpStore %19 %22
+         %89 = OpAccessChain %_ptr_Function_int %24 %22
+         %23 = OpLoad %int %89
+         %90 = OpIEqual %bool %23 %int_1
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+               OpStore %68 %true
+               OpStore %17 %int_1
+               OpBranch %85
+         %91 = OpLabel
+               OpStore %18 %22
+               OpBranch %84
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+         %25 = OpPhi %int %63 %86 %int_1 %92
+         %93 = OpPhi %bool %79 %86 %true %92
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %81 %94
+         %94 = OpLabel
+               OpStore %68 %true
+               OpStore %17 %int_n1
+               OpBranch %81
+         %80 = OpLabel
+               OpBranch %78
+         %81 = OpLabel
+         %26 = OpPhi %int %25 %85 %int_n1 %94
+               OpStore %20 %26
+         %95 = OpIEqual %bool %26 %int_n1
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %98
+         %97 = OpLabel
+               OpKill
+         %98 = OpLabel
+               OpStore %_GLF_color %53
+         %99 = OpVectorShuffle %v2float %76 %76 1 2
+        %100 = OpFAdd %v2float %99 %55
+        %101 = OpVectorShuffle %v3float %76 %100 0 3 4
+               OpStore %color %101
+        %102 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %103 = OpLoad %float %102
+        %104 = OpFOrdGreaterThan %bool %103 %float_1
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %105
+        %106 = OpLabel
+               OpStore %69 %true
+               OpBranch %71
+        %105 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+        %107 = OpCompositeExtract %float %101 0
+        %108 = OpCompositeExtract %float %101 1
+        %109 = OpCompositeExtract %float %101 2
+        %110 = OpCompositeConstruct %v4float %107 %108 %109 %float_1
+               OpStore %_GLF_color %110
+               OpStore %69 %true
+               OpBranch %71
+         %72 = OpLabel
+               OpBranch %70
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%binarySearch_struct_tmp_struct_i1_1_1_ = OpFunction %int None %36
+        %obj = OpFunctionParameter %_ptr_Function_tmp_struct
+        %111 = OpLabel
+        %112 = OpVariable %_ptr_Function_bool Function %false
+         %16 = OpVariable %_ptr_Function_int Function
+        %one = OpVariable %_ptr_Function_int Function
+       %zero = OpVariable %_ptr_Function_int Function
+               OpBranch %113
+        %113 = OpLabel
+        %114 = OpPhi %bool %false %111 %66 %115
+               OpLoopMerge %116 %115 None
+               OpBranch %117
+        %117 = OpLabel
+               OpStore %one %int_1
+               OpBranch %118
+        %118 = OpLabel
+         %15 = OpPhi %int %int_1 %117 %13 %119
+               OpLoopMerge %120 %119 None
+               OpBranch %121
+        %121 = OpLabel
+        %122 = OpSGreaterThan %bool %15 %int_10
+               OpBranchConditional %122 %123 %120
+        %123 = OpLabel
+         %13 = OpISub %int %15 %int_1
+               OpStore %zero %13
+        %124 = OpAccessChain %_ptr_Function_int %obj %int_0 %13
+         %14 = OpLoad %int %124
+        %125 = OpIEqual %bool %14 %int_1
+               OpSelectionMerge %126 None
+               OpBranchConditional %125 %127 %126
+        %127 = OpLabel
+               OpStore %112 %true
+               OpStore %16 %int_1
+               OpBranch %120
+        %126 = OpLabel
+               OpStore %one %13
+               OpBranch %119
+        %119 = OpLabel
+               OpBranch %118
+        %120 = OpLabel
+         %27 = OpPhi %int %65 %121 %int_1 %127
+        %128 = OpPhi %bool %114 %121 %true %127
+               OpSelectionMerge %129 None
+               OpBranchConditional %128 %116 %129
+        %129 = OpLabel
+               OpStore %112 %true
+               OpStore %16 %int_n1
+               OpBranch %116
+        %115 = OpLabel
+               OpBranch %113
+        %116 = OpLabel
+         %28 = OpPhi %int %27 %120 %int_n1 %129
+               OpReturnValue %28
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f0e2766
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,168 @@
+struct tmp_struct {
+  int nmb[1];
+};
+
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_24[1] = (int[1])0;
+  bool x_68 = false;
+  int x_17 = 0;
+  int x_18 = 0;
+  int x_19 = 0;
+  int x_20 = 0;
+  bool x_69 = false;
+  float tmp_float = 0.0f;
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  while (true) {
+    int x_25 = 0;
+    float3 x_101 = float3(0.0f, 0.0f, 0.0f);
+    bool x_79_phi = false;
+    int x_26_phi = 0;
+    const float x_75 = asfloat(x_11[0].y);
+    tmp_float = x_75;
+    const float3 x_76 = float3(x_75, x_75, x_75);
+    color = x_76;
+    const int tint_symbol_3[1] = {0};
+    const tmp_struct tint_symbol_4 = {tint_symbol_3};
+    x_24 = tint_symbol_4.nmb;
+    x_68 = false;
+    x_79_phi = false;
+    while (true) {
+      int x_21_phi = 0;
+      int x_25_phi = 0;
+      bool x_93_phi = false;
+      const bool x_79 = x_79_phi;
+      x_18 = 1;
+      x_21_phi = 1;
+      while (true) {
+        const int x_21 = x_21_phi;
+        x_25_phi = 0;
+        x_93_phi = x_79;
+        if ((x_21 > 10)) {
+        } else {
+          break;
+        }
+        const int x_22 = (x_21 - 1);
+        x_19 = x_22;
+        const int x_23 = x_24[x_22];
+        if ((x_23 == 1)) {
+          x_68 = true;
+          x_17 = 1;
+          x_25_phi = 1;
+          x_93_phi = true;
+          break;
+        }
+        x_18 = x_22;
+        {
+          x_21_phi = x_22;
+        }
+      }
+      x_25 = x_25_phi;
+      const bool x_93 = x_93_phi;
+      x_26_phi = x_25;
+      if (x_93) {
+        break;
+      }
+      x_68 = true;
+      x_17 = -1;
+      x_26_phi = -1;
+      break;
+      {
+        x_79_phi = false;
+      }
+    }
+    const int x_26 = x_26_phi;
+    x_20 = x_26;
+    if ((x_26 == -1)) {
+      discard;
+    } else {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      const float2 x_100 = (float2(x_76.y, x_76.z) + float2(1.0f, 1.0f));
+      x_101 = float3(x_76.x, x_100.x, x_100.y);
+      color = x_101;
+      const float x_103 = asfloat(x_11[0].x);
+      if ((x_103 > 1.0f)) {
+        x_69 = true;
+        break;
+      }
+    }
+    x_GLF_color = float4(x_101.x, x_101.y, x_101.z, 1.0f);
+    x_69 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int binarySearch_struct_tmp_struct_i1_1_1_(inout tmp_struct obj) {
+  bool x_112 = false;
+  int x_16 = 0;
+  int one = 0;
+  int zero = 0;
+  int x_27 = 0;
+  bool x_114_phi = false;
+  int x_28_phi = 0;
+  x_114_phi = false;
+  while (true) {
+    int x_15_phi = 0;
+    int x_27_phi = 0;
+    bool x_128_phi = false;
+    const bool x_114 = x_114_phi;
+    one = 1;
+    x_15_phi = 1;
+    while (true) {
+      const int x_15 = x_15_phi;
+      x_27_phi = 0;
+      x_128_phi = x_114;
+      if ((x_15 > 10)) {
+      } else {
+        break;
+      }
+      const int x_13 = (x_15 - 1);
+      zero = x_13;
+      const int x_14 = obj.nmb[x_13];
+      if ((x_14 == 1)) {
+        x_112 = true;
+        x_16 = 1;
+        x_27_phi = 1;
+        x_128_phi = true;
+        break;
+      }
+      one = x_13;
+      {
+        x_15_phi = x_13;
+      }
+    }
+    x_27 = x_27_phi;
+    const bool x_128 = x_128_phi;
+    x_28_phi = x_27;
+    if (x_128) {
+      break;
+    }
+    x_112 = true;
+    x_16 = -1;
+    x_28_phi = -1;
+    break;
+    {
+      x_114_phi = false;
+    }
+  }
+  return x_28_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5262879
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.msl
@@ -0,0 +1,174 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[1];
+};
+struct tmp_struct {
+  tint_array_wrapper nmb;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_11, thread float4* const tint_symbol_6) {
+  tint_array_wrapper x_24 = {};
+  bool x_68 = false;
+  int x_17 = 0;
+  int x_18 = 0;
+  int x_19 = 0;
+  int x_20 = 0;
+  bool x_69 = false;
+  float tmp_float = 0.0f;
+  float3 color = 0.0f;
+  while (true) {
+    int x_25 = 0;
+    float3 x_101 = 0.0f;
+    bool x_79_phi = false;
+    int x_26_phi = 0;
+    float const x_75 = x_11.injectionSwitch.y;
+    tmp_float = x_75;
+    float3 const x_76 = float3(x_75, x_75, x_75);
+    color = x_76;
+    tint_array_wrapper const tint_symbol_3 = {.arr={0}};
+    tmp_struct const tint_symbol_4 = {.nmb=tint_symbol_3};
+    x_24 = tint_symbol_4.nmb;
+    x_68 = false;
+    x_79_phi = false;
+    while (true) {
+      int x_21_phi = 0;
+      int x_25_phi = 0;
+      bool x_93_phi = false;
+      bool const x_79 = x_79_phi;
+      x_18 = 1;
+      x_21_phi = 1;
+      while (true) {
+        int const x_21 = x_21_phi;
+        x_25_phi = 0;
+        x_93_phi = x_79;
+        if ((x_21 > 10)) {
+        } else {
+          break;
+        }
+        int const x_22 = (x_21 - 1);
+        x_19 = x_22;
+        int const x_23 = x_24.arr[x_22];
+        if ((x_23 == 1)) {
+          x_68 = true;
+          x_17 = 1;
+          x_25_phi = 1;
+          x_93_phi = true;
+          break;
+        }
+        x_18 = x_22;
+        {
+          x_21_phi = x_22;
+        }
+      }
+      x_25 = x_25_phi;
+      bool const x_93 = x_93_phi;
+      x_26_phi = x_25;
+      if (x_93) {
+        break;
+      }
+      x_68 = true;
+      x_17 = -1;
+      x_26_phi = -1;
+      break;
+      {
+        x_79_phi = false;
+      }
+    }
+    int const x_26 = x_26_phi;
+    x_20 = x_26;
+    if ((x_26 == -1)) {
+      discard_fragment();
+    } else {
+      *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      float2 const x_100 = (float2(x_76.y, x_76.z) + float2(1.0f, 1.0f));
+      x_101 = float3(x_76.x, x_100.x, x_100.y);
+      color = x_101;
+      float const x_103 = x_11.injectionSwitch.x;
+      if ((x_103 > 1.0f)) {
+        x_69 = true;
+        break;
+      }
+    }
+    *(tint_symbol_6) = float4(x_101.x, x_101.y, x_101.z, 1.0f);
+    x_69 = true;
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_11, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int binarySearch_struct_tmp_struct_i1_1_1_(thread tmp_struct* const obj) {
+  bool x_112 = false;
+  int x_16 = 0;
+  int one = 0;
+  int zero = 0;
+  int x_27 = 0;
+  bool x_114_phi = false;
+  int x_28_phi = 0;
+  x_114_phi = false;
+  while (true) {
+    int x_15_phi = 0;
+    int x_27_phi = 0;
+    bool x_128_phi = false;
+    bool const x_114 = x_114_phi;
+    one = 1;
+    x_15_phi = 1;
+    while (true) {
+      int const x_15 = x_15_phi;
+      x_27_phi = 0;
+      x_128_phi = x_114;
+      if ((x_15 > 10)) {
+      } else {
+        break;
+      }
+      int const x_13 = (x_15 - 1);
+      zero = x_13;
+      int const x_14 = (*(obj)).nmb.arr[x_13];
+      if ((x_14 == 1)) {
+        x_112 = true;
+        x_16 = 1;
+        x_27_phi = 1;
+        x_128_phi = true;
+        break;
+      }
+      one = x_13;
+      {
+        x_15_phi = x_13;
+      }
+    }
+    x_27 = x_27_phi;
+    bool const x_128 = x_128_phi;
+    x_28_phi = x_27;
+    if (x_128) {
+      break;
+    }
+    x_112 = true;
+    x_16 = -1;
+    x_28_phi = -1;
+    break;
+    {
+      x_114_phi = false;
+    }
+  }
+  int const x_28 = x_28_phi;
+  return x_28;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..18ca5d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,345 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 177
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_24 "x_24"
+               OpName %x_68 "x_68"
+               OpName %x_17 "x_17"
+               OpName %x_18 "x_18"
+               OpName %x_19 "x_19"
+               OpName %x_20 "x_20"
+               OpName %x_69 "x_69"
+               OpName %tmp_float "tmp_float"
+               OpName %color "color"
+               OpName %x_25 "x_25"
+               OpName %x_101 "x_101"
+               OpName %x_79_phi "x_79_phi"
+               OpName %x_26_phi "x_26_phi"
+               OpName %tmp_struct "tmp_struct"
+               OpMemberName %tmp_struct 0 "nmb"
+               OpName %x_21_phi "x_21_phi"
+               OpName %x_25_phi "x_25_phi"
+               OpName %x_93_phi "x_93_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %binarySearch_struct_tmp_struct_i1_1_1_ "binarySearch_struct_tmp_struct_i1_1_1_"
+               OpName %obj "obj"
+               OpName %x_112 "x_112"
+               OpName %x_16 "x_16"
+               OpName %one "one"
+               OpName %zero "zero"
+               OpName %x_27 "x_27"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_28_phi "x_28_phi"
+               OpName %x_15_phi "x_15_phi"
+               OpName %x_27_phi "x_27_phi"
+               OpName %x_128_phi "x_128_phi"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 4
+               OpMemberDecorate %tmp_struct 0 Offset 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+         %22 = OpConstantNull %_arr_int_uint_1
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %37 = OpConstantNull %float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %41 = OpConstantNull %v3float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+ %tmp_struct = OpTypeStruct %_arr_int_uint_1
+      %int_0 = OpConstant %int 0
+         %57 = OpConstantComposite %_arr_int_uint_1 %int_0
+         %58 = OpConstantComposite %tmp_struct %57
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+       %true = OpConstantTrue %bool
+     %int_n1 = OpConstant %int -1
+    %float_0 = OpConstant %float 0
+         %98 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+        %103 = OpConstantComposite %v2float %float_1 %float_1
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+        %123 = OpTypeFunction %void %main_out
+%_ptr_Function_tmp_struct = OpTypePointer Function %tmp_struct
+        %135 = OpTypeFunction %int %_ptr_Function_tmp_struct
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_24 = OpVariable %_ptr_Function__arr_int_uint_1 Function %22
+       %x_68 = OpVariable %_ptr_Function_bool Function %27
+       %x_17 = OpVariable %_ptr_Function_int Function %30
+       %x_18 = OpVariable %_ptr_Function_int Function %30
+       %x_19 = OpVariable %_ptr_Function_int Function %30
+       %x_20 = OpVariable %_ptr_Function_int Function %30
+       %x_69 = OpVariable %_ptr_Function_bool Function %27
+  %tmp_float = OpVariable %_ptr_Function_float Function %37
+      %color = OpVariable %_ptr_Function_v3float Function %41
+       %x_25 = OpVariable %_ptr_Function_int Function %30
+      %x_101 = OpVariable %_ptr_Function_v3float Function %41
+   %x_79_phi = OpVariable %_ptr_Function_bool Function %27
+   %x_26_phi = OpVariable %_ptr_Function_int Function %30
+   %x_21_phi = OpVariable %_ptr_Function_int Function %30
+   %x_25_phi = OpVariable %_ptr_Function_int Function %30
+   %x_93_phi = OpVariable %_ptr_Function_bool Function %27
+               OpStore %x_68 %false
+               OpStore %x_69 %false
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_1
+         %53 = OpLoad %float %52
+               OpStore %tmp_float %53
+         %54 = OpCompositeConstruct %v3float %53 %53 %53
+               OpStore %color %54
+         %59 = OpCompositeExtract %_arr_int_uint_1 %58 0
+               OpStore %x_24 %59
+               OpStore %x_68 %false
+               OpStore %x_79_phi %false
+               OpBranch %60
+         %60 = OpLabel
+               OpLoopMerge %61 %62 None
+               OpBranch %63
+         %63 = OpLabel
+         %67 = OpLoad %bool %x_79_phi
+               OpStore %x_18 %int_1
+               OpStore %x_21_phi %int_1
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %x_21_phi
+               OpStore %x_25_phi %int_0
+               OpStore %x_93_phi %67
+         %75 = OpSGreaterThan %bool %73 %int_10
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+               OpBranch %76
+         %78 = OpLabel
+               OpBranch %70
+         %76 = OpLabel
+         %79 = OpISub %int %73 %int_1
+               OpStore %x_19 %79
+         %80 = OpAccessChain %_ptr_Function_int %x_24 %79
+         %81 = OpLoad %int %80
+         %82 = OpIEqual %bool %81 %int_1
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+               OpStore %x_68 %true
+               OpStore %x_17 %int_1
+               OpStore %x_25_phi %int_1
+               OpStore %x_93_phi %true
+               OpBranch %70
+         %83 = OpLabel
+               OpStore %x_18 %79
+               OpBranch %71
+         %71 = OpLabel
+               OpStore %x_21_phi %79
+               OpBranch %69
+         %70 = OpLabel
+         %86 = OpLoad %int %x_25_phi
+               OpStore %x_25 %86
+         %87 = OpLoad %bool %x_93_phi
+         %88 = OpLoad %int %x_25
+               OpStore %x_26_phi %88
+               OpSelectionMerge %89 None
+               OpBranchConditional %87 %90 %89
+         %90 = OpLabel
+               OpBranch %61
+         %89 = OpLabel
+               OpStore %x_68 %true
+               OpStore %x_17 %int_n1
+               OpStore %x_26_phi %int_n1
+               OpBranch %61
+         %62 = OpLabel
+               OpStore %x_79_phi %false
+               OpBranch %60
+         %61 = OpLabel
+         %92 = OpLoad %int %x_26_phi
+               OpStore %x_20 %92
+         %93 = OpIEqual %bool %92 %int_n1
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %96
+         %95 = OpLabel
+               OpKill
+         %96 = OpLabel
+               OpStore %x_GLF_color %98
+         %99 = OpCompositeExtract %float %54 1
+        %100 = OpCompositeExtract %float %54 2
+        %101 = OpCompositeConstruct %v2float %99 %100
+        %104 = OpFAdd %v2float %101 %103
+        %105 = OpCompositeExtract %float %54 0
+        %106 = OpCompositeExtract %float %104 0
+        %107 = OpCompositeExtract %float %104 1
+        %108 = OpCompositeConstruct %v3float %105 %106 %107
+               OpStore %x_101 %108
+        %109 = OpLoad %v3float %x_101
+               OpStore %color %109
+        %110 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_0
+        %111 = OpLoad %float %110
+        %112 = OpFOrdGreaterThan %bool %111 %float_1
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+               OpStore %x_69 %true
+               OpBranch %43
+        %113 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+        %115 = OpAccessChain %_ptr_Function_float %x_101 %uint_0
+        %116 = OpLoad %float %115
+        %117 = OpAccessChain %_ptr_Function_float %x_101 %uint_1
+        %118 = OpLoad %float %117
+        %120 = OpAccessChain %_ptr_Function_float %x_101 %uint_2
+        %121 = OpLoad %float %120
+        %122 = OpCompositeConstruct %v4float %116 %118 %121 %float_1
+               OpStore %x_GLF_color %122
+               OpStore %x_69 %true
+               OpBranch %43
+         %44 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %123
+%tint_symbol = OpFunctionParameter %main_out
+        %127 = OpLabel
+        %128 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %128
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %130 = OpLabel
+        %131 = OpFunctionCall %void %main_1
+        %133 = OpLoad %v4float %x_GLF_color
+        %134 = OpCompositeConstruct %main_out %133
+        %132 = OpFunctionCall %void %tint_symbol_2 %134
+               OpReturn
+               OpFunctionEnd
+%binarySearch_struct_tmp_struct_i1_1_1_ = OpFunction %int None %135
+        %obj = OpFunctionParameter %_ptr_Function_tmp_struct
+        %139 = OpLabel
+      %x_112 = OpVariable %_ptr_Function_bool Function %27
+       %x_16 = OpVariable %_ptr_Function_int Function %30
+        %one = OpVariable %_ptr_Function_int Function %30
+       %zero = OpVariable %_ptr_Function_int Function %30
+       %x_27 = OpVariable %_ptr_Function_int Function %30
+  %x_114_phi = OpVariable %_ptr_Function_bool Function %27
+   %x_28_phi = OpVariable %_ptr_Function_int Function %30
+   %x_15_phi = OpVariable %_ptr_Function_int Function %30
+   %x_27_phi = OpVariable %_ptr_Function_int Function %30
+  %x_128_phi = OpVariable %_ptr_Function_bool Function %27
+               OpStore %x_112 %false
+               OpStore %x_114_phi %false
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %154 = OpLoad %bool %x_114_phi
+               OpStore %one %int_1
+               OpStore %x_15_phi %int_1
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+        %159 = OpLoad %int %x_15_phi
+               OpStore %x_27_phi %int_0
+               OpStore %x_128_phi %154
+        %160 = OpSGreaterThan %bool %159 %int_10
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+               OpBranch %161
+        %163 = OpLabel
+               OpBranch %156
+        %161 = OpLabel
+        %164 = OpISub %int %159 %int_1
+               OpStore %zero %164
+        %166 = OpAccessChain %_ptr_Function_int %obj %uint_0 %164
+        %167 = OpLoad %int %166
+        %168 = OpIEqual %bool %167 %int_1
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %169
+        %170 = OpLabel
+               OpStore %x_112 %true
+               OpStore %x_16 %int_1
+               OpStore %x_27_phi %int_1
+               OpStore %x_128_phi %true
+               OpBranch %156
+        %169 = OpLabel
+               OpStore %one %164
+               OpBranch %157
+        %157 = OpLabel
+               OpStore %x_15_phi %164
+               OpBranch %155
+        %156 = OpLabel
+        %171 = OpLoad %int %x_27_phi
+               OpStore %x_27 %171
+        %172 = OpLoad %bool %x_128_phi
+        %173 = OpLoad %int %x_27
+               OpStore %x_28_phi %173
+               OpSelectionMerge %174 None
+               OpBranchConditional %172 %175 %174
+        %175 = OpLabel
+               OpBranch %148
+        %174 = OpLabel
+               OpStore %x_112 %true
+               OpStore %x_16 %int_n1
+               OpStore %x_28_phi %int_n1
+               OpBranch %148
+        %149 = OpLabel
+               OpStore %x_114_phi %false
+               OpBranch %147
+        %148 = OpLabel
+        %176 = OpLoad %int %x_28_phi
+               OpReturnValue %176
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..58324d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,172 @@
+struct tmp_struct {
+  nmb : array<i32, 1>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_24 : array<i32, 1>;
+  var x_68 : bool = false;
+  var x_17 : i32;
+  var x_18 : i32;
+  var x_19 : i32;
+  var x_20 : i32;
+  var x_69 : bool = false;
+  var tmp_float : f32;
+  var color : vec3<f32>;
+  loop {
+    var x_25 : i32;
+    var x_101 : vec3<f32>;
+    var x_79_phi : bool;
+    var x_26_phi : i32;
+    let x_75 : f32 = x_11.injectionSwitch.y;
+    tmp_float = x_75;
+    let x_76 : vec3<f32> = vec3<f32>(x_75, x_75, x_75);
+    color = x_76;
+    x_24 = tmp_struct(array<i32, 1>(0)).nmb;
+    x_68 = false;
+    x_79_phi = false;
+    loop {
+      var x_21_phi : i32;
+      var x_25_phi : i32;
+      var x_93_phi : bool;
+      let x_79 : bool = x_79_phi;
+      x_18 = 1;
+      x_21_phi = 1;
+      loop {
+        let x_21 : i32 = x_21_phi;
+        x_25_phi = 0;
+        x_93_phi = x_79;
+        if ((x_21 > 10)) {
+        } else {
+          break;
+        }
+        let x_22 : i32 = (x_21 - 1);
+        x_19 = x_22;
+        let x_23 : i32 = x_24[x_22];
+        if ((x_23 == 1)) {
+          x_68 = true;
+          x_17 = 1;
+          x_25_phi = 1;
+          x_93_phi = true;
+          break;
+        }
+        x_18 = x_22;
+
+        continuing {
+          x_21_phi = x_22;
+        }
+      }
+      x_25 = x_25_phi;
+      let x_93 : bool = x_93_phi;
+      x_26_phi = x_25;
+      if (x_93) {
+        break;
+      }
+      x_68 = true;
+      x_17 = -1;
+      x_26_phi = -1;
+      break;
+
+      continuing {
+        x_79_phi = false;
+      }
+    }
+    let x_26 : i32 = x_26_phi;
+    x_20 = x_26;
+    if ((x_26 == -1)) {
+      discard;
+    } else {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      let x_100 : vec2<f32> = (vec2<f32>(x_76.y, x_76.z) + vec2<f32>(1.0, 1.0));
+      x_101 = vec3<f32>(x_76.x, x_100.x, x_100.y);
+      color = x_101;
+      let x_103 : f32 = x_11.injectionSwitch.x;
+      if ((x_103 > 1.0)) {
+        x_69 = true;
+        break;
+      }
+    }
+    x_GLF_color = vec4<f32>(x_101.x, x_101.y, x_101.z, 1.0);
+    x_69 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn binarySearch_struct_tmp_struct_i1_1_1_(obj : ptr<function, tmp_struct>) -> i32 {
+  var x_112 : bool = false;
+  var x_16 : i32;
+  var one : i32;
+  var zero : i32;
+  var x_27 : i32;
+  var x_114_phi : bool;
+  var x_28_phi : i32;
+  x_114_phi = false;
+  loop {
+    var x_15_phi : i32;
+    var x_27_phi : i32;
+    var x_128_phi : bool;
+    let x_114 : bool = x_114_phi;
+    one = 1;
+    x_15_phi = 1;
+    loop {
+      let x_15 : i32 = x_15_phi;
+      x_27_phi = 0;
+      x_128_phi = x_114;
+      if ((x_15 > 10)) {
+      } else {
+        break;
+      }
+      let x_13 : i32 = (x_15 - 1);
+      zero = x_13;
+      let x_14 : i32 = (*(obj)).nmb[x_13];
+      if ((x_14 == 1)) {
+        x_112 = true;
+        x_16 = 1;
+        x_27_phi = 1;
+        x_128_phi = true;
+        break;
+      }
+      one = x_13;
+
+      continuing {
+        x_15_phi = x_13;
+      }
+    }
+    x_27 = x_27_phi;
+    let x_128 : bool = x_128_phi;
+    x_28_phi = x_27;
+    if (x_128) {
+      break;
+    }
+    x_112 = true;
+    x_16 = -1;
+    x_28_phi = -1;
+    break;
+
+    continuing {
+      x_114_phi = false;
+    }
+  }
+  let x_28 : i32 = x_28_phi;
+  return x_28;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
new file mode 100644
index 0000000..58324d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
@@ -0,0 +1,172 @@
+struct tmp_struct {
+  nmb : array<i32, 1>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_24 : array<i32, 1>;
+  var x_68 : bool = false;
+  var x_17 : i32;
+  var x_18 : i32;
+  var x_19 : i32;
+  var x_20 : i32;
+  var x_69 : bool = false;
+  var tmp_float : f32;
+  var color : vec3<f32>;
+  loop {
+    var x_25 : i32;
+    var x_101 : vec3<f32>;
+    var x_79_phi : bool;
+    var x_26_phi : i32;
+    let x_75 : f32 = x_11.injectionSwitch.y;
+    tmp_float = x_75;
+    let x_76 : vec3<f32> = vec3<f32>(x_75, x_75, x_75);
+    color = x_76;
+    x_24 = tmp_struct(array<i32, 1>(0)).nmb;
+    x_68 = false;
+    x_79_phi = false;
+    loop {
+      var x_21_phi : i32;
+      var x_25_phi : i32;
+      var x_93_phi : bool;
+      let x_79 : bool = x_79_phi;
+      x_18 = 1;
+      x_21_phi = 1;
+      loop {
+        let x_21 : i32 = x_21_phi;
+        x_25_phi = 0;
+        x_93_phi = x_79;
+        if ((x_21 > 10)) {
+        } else {
+          break;
+        }
+        let x_22 : i32 = (x_21 - 1);
+        x_19 = x_22;
+        let x_23 : i32 = x_24[x_22];
+        if ((x_23 == 1)) {
+          x_68 = true;
+          x_17 = 1;
+          x_25_phi = 1;
+          x_93_phi = true;
+          break;
+        }
+        x_18 = x_22;
+
+        continuing {
+          x_21_phi = x_22;
+        }
+      }
+      x_25 = x_25_phi;
+      let x_93 : bool = x_93_phi;
+      x_26_phi = x_25;
+      if (x_93) {
+        break;
+      }
+      x_68 = true;
+      x_17 = -1;
+      x_26_phi = -1;
+      break;
+
+      continuing {
+        x_79_phi = false;
+      }
+    }
+    let x_26 : i32 = x_26_phi;
+    x_20 = x_26;
+    if ((x_26 == -1)) {
+      discard;
+    } else {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      let x_100 : vec2<f32> = (vec2<f32>(x_76.y, x_76.z) + vec2<f32>(1.0, 1.0));
+      x_101 = vec3<f32>(x_76.x, x_100.x, x_100.y);
+      color = x_101;
+      let x_103 : f32 = x_11.injectionSwitch.x;
+      if ((x_103 > 1.0)) {
+        x_69 = true;
+        break;
+      }
+    }
+    x_GLF_color = vec4<f32>(x_101.x, x_101.y, x_101.z, 1.0);
+    x_69 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn binarySearch_struct_tmp_struct_i1_1_1_(obj : ptr<function, tmp_struct>) -> i32 {
+  var x_112 : bool = false;
+  var x_16 : i32;
+  var one : i32;
+  var zero : i32;
+  var x_27 : i32;
+  var x_114_phi : bool;
+  var x_28_phi : i32;
+  x_114_phi = false;
+  loop {
+    var x_15_phi : i32;
+    var x_27_phi : i32;
+    var x_128_phi : bool;
+    let x_114 : bool = x_114_phi;
+    one = 1;
+    x_15_phi = 1;
+    loop {
+      let x_15 : i32 = x_15_phi;
+      x_27_phi = 0;
+      x_128_phi = x_114;
+      if ((x_15 > 10)) {
+      } else {
+        break;
+      }
+      let x_13 : i32 = (x_15 - 1);
+      zero = x_13;
+      let x_14 : i32 = (*(obj)).nmb[x_13];
+      if ((x_14 == 1)) {
+        x_112 = true;
+        x_16 = 1;
+        x_27_phi = 1;
+        x_128_phi = true;
+        break;
+      }
+      one = x_13;
+
+      continuing {
+        x_15_phi = x_13;
+      }
+    }
+    x_27 = x_27_phi;
+    let x_128 : bool = x_128_phi;
+    x_28_phi = x_27;
+    if (x_128) {
+      break;
+    }
+    x_112 = true;
+    x_16 = -1;
+    x_28_phi = -1;
+    break;
+
+    continuing {
+      x_114_phi = false;
+    }
+  }
+  let x_28 : i32 = x_28_phi;
+  return x_28;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f0e2766
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,168 @@
+struct tmp_struct {
+  int nmb[1];
+};
+
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_24[1] = (int[1])0;
+  bool x_68 = false;
+  int x_17 = 0;
+  int x_18 = 0;
+  int x_19 = 0;
+  int x_20 = 0;
+  bool x_69 = false;
+  float tmp_float = 0.0f;
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  while (true) {
+    int x_25 = 0;
+    float3 x_101 = float3(0.0f, 0.0f, 0.0f);
+    bool x_79_phi = false;
+    int x_26_phi = 0;
+    const float x_75 = asfloat(x_11[0].y);
+    tmp_float = x_75;
+    const float3 x_76 = float3(x_75, x_75, x_75);
+    color = x_76;
+    const int tint_symbol_3[1] = {0};
+    const tmp_struct tint_symbol_4 = {tint_symbol_3};
+    x_24 = tint_symbol_4.nmb;
+    x_68 = false;
+    x_79_phi = false;
+    while (true) {
+      int x_21_phi = 0;
+      int x_25_phi = 0;
+      bool x_93_phi = false;
+      const bool x_79 = x_79_phi;
+      x_18 = 1;
+      x_21_phi = 1;
+      while (true) {
+        const int x_21 = x_21_phi;
+        x_25_phi = 0;
+        x_93_phi = x_79;
+        if ((x_21 > 10)) {
+        } else {
+          break;
+        }
+        const int x_22 = (x_21 - 1);
+        x_19 = x_22;
+        const int x_23 = x_24[x_22];
+        if ((x_23 == 1)) {
+          x_68 = true;
+          x_17 = 1;
+          x_25_phi = 1;
+          x_93_phi = true;
+          break;
+        }
+        x_18 = x_22;
+        {
+          x_21_phi = x_22;
+        }
+      }
+      x_25 = x_25_phi;
+      const bool x_93 = x_93_phi;
+      x_26_phi = x_25;
+      if (x_93) {
+        break;
+      }
+      x_68 = true;
+      x_17 = -1;
+      x_26_phi = -1;
+      break;
+      {
+        x_79_phi = false;
+      }
+    }
+    const int x_26 = x_26_phi;
+    x_20 = x_26;
+    if ((x_26 == -1)) {
+      discard;
+    } else {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      const float2 x_100 = (float2(x_76.y, x_76.z) + float2(1.0f, 1.0f));
+      x_101 = float3(x_76.x, x_100.x, x_100.y);
+      color = x_101;
+      const float x_103 = asfloat(x_11[0].x);
+      if ((x_103 > 1.0f)) {
+        x_69 = true;
+        break;
+      }
+    }
+    x_GLF_color = float4(x_101.x, x_101.y, x_101.z, 1.0f);
+    x_69 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int binarySearch_struct_tmp_struct_i1_1_1_(inout tmp_struct obj) {
+  bool x_112 = false;
+  int x_16 = 0;
+  int one = 0;
+  int zero = 0;
+  int x_27 = 0;
+  bool x_114_phi = false;
+  int x_28_phi = 0;
+  x_114_phi = false;
+  while (true) {
+    int x_15_phi = 0;
+    int x_27_phi = 0;
+    bool x_128_phi = false;
+    const bool x_114 = x_114_phi;
+    one = 1;
+    x_15_phi = 1;
+    while (true) {
+      const int x_15 = x_15_phi;
+      x_27_phi = 0;
+      x_128_phi = x_114;
+      if ((x_15 > 10)) {
+      } else {
+        break;
+      }
+      const int x_13 = (x_15 - 1);
+      zero = x_13;
+      const int x_14 = obj.nmb[x_13];
+      if ((x_14 == 1)) {
+        x_112 = true;
+        x_16 = 1;
+        x_27_phi = 1;
+        x_128_phi = true;
+        break;
+      }
+      one = x_13;
+      {
+        x_15_phi = x_13;
+      }
+    }
+    x_27 = x_27_phi;
+    const bool x_128 = x_128_phi;
+    x_28_phi = x_27;
+    if (x_128) {
+      break;
+    }
+    x_112 = true;
+    x_16 = -1;
+    x_28_phi = -1;
+    break;
+    {
+      x_114_phi = false;
+    }
+  }
+  return x_28_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5262879
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.msl
@@ -0,0 +1,174 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[1];
+};
+struct tmp_struct {
+  tint_array_wrapper nmb;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_11, thread float4* const tint_symbol_6) {
+  tint_array_wrapper x_24 = {};
+  bool x_68 = false;
+  int x_17 = 0;
+  int x_18 = 0;
+  int x_19 = 0;
+  int x_20 = 0;
+  bool x_69 = false;
+  float tmp_float = 0.0f;
+  float3 color = 0.0f;
+  while (true) {
+    int x_25 = 0;
+    float3 x_101 = 0.0f;
+    bool x_79_phi = false;
+    int x_26_phi = 0;
+    float const x_75 = x_11.injectionSwitch.y;
+    tmp_float = x_75;
+    float3 const x_76 = float3(x_75, x_75, x_75);
+    color = x_76;
+    tint_array_wrapper const tint_symbol_3 = {.arr={0}};
+    tmp_struct const tint_symbol_4 = {.nmb=tint_symbol_3};
+    x_24 = tint_symbol_4.nmb;
+    x_68 = false;
+    x_79_phi = false;
+    while (true) {
+      int x_21_phi = 0;
+      int x_25_phi = 0;
+      bool x_93_phi = false;
+      bool const x_79 = x_79_phi;
+      x_18 = 1;
+      x_21_phi = 1;
+      while (true) {
+        int const x_21 = x_21_phi;
+        x_25_phi = 0;
+        x_93_phi = x_79;
+        if ((x_21 > 10)) {
+        } else {
+          break;
+        }
+        int const x_22 = (x_21 - 1);
+        x_19 = x_22;
+        int const x_23 = x_24.arr[x_22];
+        if ((x_23 == 1)) {
+          x_68 = true;
+          x_17 = 1;
+          x_25_phi = 1;
+          x_93_phi = true;
+          break;
+        }
+        x_18 = x_22;
+        {
+          x_21_phi = x_22;
+        }
+      }
+      x_25 = x_25_phi;
+      bool const x_93 = x_93_phi;
+      x_26_phi = x_25;
+      if (x_93) {
+        break;
+      }
+      x_68 = true;
+      x_17 = -1;
+      x_26_phi = -1;
+      break;
+      {
+        x_79_phi = false;
+      }
+    }
+    int const x_26 = x_26_phi;
+    x_20 = x_26;
+    if ((x_26 == -1)) {
+      discard_fragment();
+    } else {
+      *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      float2 const x_100 = (float2(x_76.y, x_76.z) + float2(1.0f, 1.0f));
+      x_101 = float3(x_76.x, x_100.x, x_100.y);
+      color = x_101;
+      float const x_103 = x_11.injectionSwitch.x;
+      if ((x_103 > 1.0f)) {
+        x_69 = true;
+        break;
+      }
+    }
+    *(tint_symbol_6) = float4(x_101.x, x_101.y, x_101.z, 1.0f);
+    x_69 = true;
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_11, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int binarySearch_struct_tmp_struct_i1_1_1_(thread tmp_struct* const obj) {
+  bool x_112 = false;
+  int x_16 = 0;
+  int one = 0;
+  int zero = 0;
+  int x_27 = 0;
+  bool x_114_phi = false;
+  int x_28_phi = 0;
+  x_114_phi = false;
+  while (true) {
+    int x_15_phi = 0;
+    int x_27_phi = 0;
+    bool x_128_phi = false;
+    bool const x_114 = x_114_phi;
+    one = 1;
+    x_15_phi = 1;
+    while (true) {
+      int const x_15 = x_15_phi;
+      x_27_phi = 0;
+      x_128_phi = x_114;
+      if ((x_15 > 10)) {
+      } else {
+        break;
+      }
+      int const x_13 = (x_15 - 1);
+      zero = x_13;
+      int const x_14 = (*(obj)).nmb.arr[x_13];
+      if ((x_14 == 1)) {
+        x_112 = true;
+        x_16 = 1;
+        x_27_phi = 1;
+        x_128_phi = true;
+        break;
+      }
+      one = x_13;
+      {
+        x_15_phi = x_13;
+      }
+    }
+    x_27 = x_27_phi;
+    bool const x_128 = x_128_phi;
+    x_28_phi = x_27;
+    if (x_128) {
+      break;
+    }
+    x_112 = true;
+    x_16 = -1;
+    x_28_phi = -1;
+    break;
+    {
+      x_114_phi = false;
+    }
+  }
+  int const x_28 = x_28_phi;
+  return x_28;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..18ca5d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,345 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 177
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_24 "x_24"
+               OpName %x_68 "x_68"
+               OpName %x_17 "x_17"
+               OpName %x_18 "x_18"
+               OpName %x_19 "x_19"
+               OpName %x_20 "x_20"
+               OpName %x_69 "x_69"
+               OpName %tmp_float "tmp_float"
+               OpName %color "color"
+               OpName %x_25 "x_25"
+               OpName %x_101 "x_101"
+               OpName %x_79_phi "x_79_phi"
+               OpName %x_26_phi "x_26_phi"
+               OpName %tmp_struct "tmp_struct"
+               OpMemberName %tmp_struct 0 "nmb"
+               OpName %x_21_phi "x_21_phi"
+               OpName %x_25_phi "x_25_phi"
+               OpName %x_93_phi "x_93_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %binarySearch_struct_tmp_struct_i1_1_1_ "binarySearch_struct_tmp_struct_i1_1_1_"
+               OpName %obj "obj"
+               OpName %x_112 "x_112"
+               OpName %x_16 "x_16"
+               OpName %one "one"
+               OpName %zero "zero"
+               OpName %x_27 "x_27"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_28_phi "x_28_phi"
+               OpName %x_15_phi "x_15_phi"
+               OpName %x_27_phi "x_27_phi"
+               OpName %x_128_phi "x_128_phi"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 4
+               OpMemberDecorate %tmp_struct 0 Offset 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+         %22 = OpConstantNull %_arr_int_uint_1
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %37 = OpConstantNull %float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %41 = OpConstantNull %v3float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+ %tmp_struct = OpTypeStruct %_arr_int_uint_1
+      %int_0 = OpConstant %int 0
+         %57 = OpConstantComposite %_arr_int_uint_1 %int_0
+         %58 = OpConstantComposite %tmp_struct %57
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+       %true = OpConstantTrue %bool
+     %int_n1 = OpConstant %int -1
+    %float_0 = OpConstant %float 0
+         %98 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+        %103 = OpConstantComposite %v2float %float_1 %float_1
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+        %123 = OpTypeFunction %void %main_out
+%_ptr_Function_tmp_struct = OpTypePointer Function %tmp_struct
+        %135 = OpTypeFunction %int %_ptr_Function_tmp_struct
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_24 = OpVariable %_ptr_Function__arr_int_uint_1 Function %22
+       %x_68 = OpVariable %_ptr_Function_bool Function %27
+       %x_17 = OpVariable %_ptr_Function_int Function %30
+       %x_18 = OpVariable %_ptr_Function_int Function %30
+       %x_19 = OpVariable %_ptr_Function_int Function %30
+       %x_20 = OpVariable %_ptr_Function_int Function %30
+       %x_69 = OpVariable %_ptr_Function_bool Function %27
+  %tmp_float = OpVariable %_ptr_Function_float Function %37
+      %color = OpVariable %_ptr_Function_v3float Function %41
+       %x_25 = OpVariable %_ptr_Function_int Function %30
+      %x_101 = OpVariable %_ptr_Function_v3float Function %41
+   %x_79_phi = OpVariable %_ptr_Function_bool Function %27
+   %x_26_phi = OpVariable %_ptr_Function_int Function %30
+   %x_21_phi = OpVariable %_ptr_Function_int Function %30
+   %x_25_phi = OpVariable %_ptr_Function_int Function %30
+   %x_93_phi = OpVariable %_ptr_Function_bool Function %27
+               OpStore %x_68 %false
+               OpStore %x_69 %false
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_1
+         %53 = OpLoad %float %52
+               OpStore %tmp_float %53
+         %54 = OpCompositeConstruct %v3float %53 %53 %53
+               OpStore %color %54
+         %59 = OpCompositeExtract %_arr_int_uint_1 %58 0
+               OpStore %x_24 %59
+               OpStore %x_68 %false
+               OpStore %x_79_phi %false
+               OpBranch %60
+         %60 = OpLabel
+               OpLoopMerge %61 %62 None
+               OpBranch %63
+         %63 = OpLabel
+         %67 = OpLoad %bool %x_79_phi
+               OpStore %x_18 %int_1
+               OpStore %x_21_phi %int_1
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %x_21_phi
+               OpStore %x_25_phi %int_0
+               OpStore %x_93_phi %67
+         %75 = OpSGreaterThan %bool %73 %int_10
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+               OpBranch %76
+         %78 = OpLabel
+               OpBranch %70
+         %76 = OpLabel
+         %79 = OpISub %int %73 %int_1
+               OpStore %x_19 %79
+         %80 = OpAccessChain %_ptr_Function_int %x_24 %79
+         %81 = OpLoad %int %80
+         %82 = OpIEqual %bool %81 %int_1
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+               OpStore %x_68 %true
+               OpStore %x_17 %int_1
+               OpStore %x_25_phi %int_1
+               OpStore %x_93_phi %true
+               OpBranch %70
+         %83 = OpLabel
+               OpStore %x_18 %79
+               OpBranch %71
+         %71 = OpLabel
+               OpStore %x_21_phi %79
+               OpBranch %69
+         %70 = OpLabel
+         %86 = OpLoad %int %x_25_phi
+               OpStore %x_25 %86
+         %87 = OpLoad %bool %x_93_phi
+         %88 = OpLoad %int %x_25
+               OpStore %x_26_phi %88
+               OpSelectionMerge %89 None
+               OpBranchConditional %87 %90 %89
+         %90 = OpLabel
+               OpBranch %61
+         %89 = OpLabel
+               OpStore %x_68 %true
+               OpStore %x_17 %int_n1
+               OpStore %x_26_phi %int_n1
+               OpBranch %61
+         %62 = OpLabel
+               OpStore %x_79_phi %false
+               OpBranch %60
+         %61 = OpLabel
+         %92 = OpLoad %int %x_26_phi
+               OpStore %x_20 %92
+         %93 = OpIEqual %bool %92 %int_n1
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %96
+         %95 = OpLabel
+               OpKill
+         %96 = OpLabel
+               OpStore %x_GLF_color %98
+         %99 = OpCompositeExtract %float %54 1
+        %100 = OpCompositeExtract %float %54 2
+        %101 = OpCompositeConstruct %v2float %99 %100
+        %104 = OpFAdd %v2float %101 %103
+        %105 = OpCompositeExtract %float %54 0
+        %106 = OpCompositeExtract %float %104 0
+        %107 = OpCompositeExtract %float %104 1
+        %108 = OpCompositeConstruct %v3float %105 %106 %107
+               OpStore %x_101 %108
+        %109 = OpLoad %v3float %x_101
+               OpStore %color %109
+        %110 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_0
+        %111 = OpLoad %float %110
+        %112 = OpFOrdGreaterThan %bool %111 %float_1
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+               OpStore %x_69 %true
+               OpBranch %43
+        %113 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+        %115 = OpAccessChain %_ptr_Function_float %x_101 %uint_0
+        %116 = OpLoad %float %115
+        %117 = OpAccessChain %_ptr_Function_float %x_101 %uint_1
+        %118 = OpLoad %float %117
+        %120 = OpAccessChain %_ptr_Function_float %x_101 %uint_2
+        %121 = OpLoad %float %120
+        %122 = OpCompositeConstruct %v4float %116 %118 %121 %float_1
+               OpStore %x_GLF_color %122
+               OpStore %x_69 %true
+               OpBranch %43
+         %44 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %123
+%tint_symbol = OpFunctionParameter %main_out
+        %127 = OpLabel
+        %128 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %128
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %130 = OpLabel
+        %131 = OpFunctionCall %void %main_1
+        %133 = OpLoad %v4float %x_GLF_color
+        %134 = OpCompositeConstruct %main_out %133
+        %132 = OpFunctionCall %void %tint_symbol_2 %134
+               OpReturn
+               OpFunctionEnd
+%binarySearch_struct_tmp_struct_i1_1_1_ = OpFunction %int None %135
+        %obj = OpFunctionParameter %_ptr_Function_tmp_struct
+        %139 = OpLabel
+      %x_112 = OpVariable %_ptr_Function_bool Function %27
+       %x_16 = OpVariable %_ptr_Function_int Function %30
+        %one = OpVariable %_ptr_Function_int Function %30
+       %zero = OpVariable %_ptr_Function_int Function %30
+       %x_27 = OpVariable %_ptr_Function_int Function %30
+  %x_114_phi = OpVariable %_ptr_Function_bool Function %27
+   %x_28_phi = OpVariable %_ptr_Function_int Function %30
+   %x_15_phi = OpVariable %_ptr_Function_int Function %30
+   %x_27_phi = OpVariable %_ptr_Function_int Function %30
+  %x_128_phi = OpVariable %_ptr_Function_bool Function %27
+               OpStore %x_112 %false
+               OpStore %x_114_phi %false
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %154 = OpLoad %bool %x_114_phi
+               OpStore %one %int_1
+               OpStore %x_15_phi %int_1
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+        %159 = OpLoad %int %x_15_phi
+               OpStore %x_27_phi %int_0
+               OpStore %x_128_phi %154
+        %160 = OpSGreaterThan %bool %159 %int_10
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+               OpBranch %161
+        %163 = OpLabel
+               OpBranch %156
+        %161 = OpLabel
+        %164 = OpISub %int %159 %int_1
+               OpStore %zero %164
+        %166 = OpAccessChain %_ptr_Function_int %obj %uint_0 %164
+        %167 = OpLoad %int %166
+        %168 = OpIEqual %bool %167 %int_1
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %169
+        %170 = OpLabel
+               OpStore %x_112 %true
+               OpStore %x_16 %int_1
+               OpStore %x_27_phi %int_1
+               OpStore %x_128_phi %true
+               OpBranch %156
+        %169 = OpLabel
+               OpStore %one %164
+               OpBranch %157
+        %157 = OpLabel
+               OpStore %x_15_phi %164
+               OpBranch %155
+        %156 = OpLabel
+        %171 = OpLoad %int %x_27_phi
+               OpStore %x_27 %171
+        %172 = OpLoad %bool %x_128_phi
+        %173 = OpLoad %int %x_27
+               OpStore %x_28_phi %173
+               OpSelectionMerge %174 None
+               OpBranchConditional %172 %175 %174
+        %175 = OpLabel
+               OpBranch %148
+        %174 = OpLabel
+               OpStore %x_112 %true
+               OpStore %x_16 %int_n1
+               OpStore %x_28_phi %int_n1
+               OpBranch %148
+        %149 = OpLabel
+               OpStore %x_114_phi %false
+               OpBranch %147
+        %148 = OpLabel
+        %176 = OpLoad %int %x_28_phi
+               OpReturnValue %176
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..58324d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,172 @@
+struct tmp_struct {
+  nmb : array<i32, 1>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_24 : array<i32, 1>;
+  var x_68 : bool = false;
+  var x_17 : i32;
+  var x_18 : i32;
+  var x_19 : i32;
+  var x_20 : i32;
+  var x_69 : bool = false;
+  var tmp_float : f32;
+  var color : vec3<f32>;
+  loop {
+    var x_25 : i32;
+    var x_101 : vec3<f32>;
+    var x_79_phi : bool;
+    var x_26_phi : i32;
+    let x_75 : f32 = x_11.injectionSwitch.y;
+    tmp_float = x_75;
+    let x_76 : vec3<f32> = vec3<f32>(x_75, x_75, x_75);
+    color = x_76;
+    x_24 = tmp_struct(array<i32, 1>(0)).nmb;
+    x_68 = false;
+    x_79_phi = false;
+    loop {
+      var x_21_phi : i32;
+      var x_25_phi : i32;
+      var x_93_phi : bool;
+      let x_79 : bool = x_79_phi;
+      x_18 = 1;
+      x_21_phi = 1;
+      loop {
+        let x_21 : i32 = x_21_phi;
+        x_25_phi = 0;
+        x_93_phi = x_79;
+        if ((x_21 > 10)) {
+        } else {
+          break;
+        }
+        let x_22 : i32 = (x_21 - 1);
+        x_19 = x_22;
+        let x_23 : i32 = x_24[x_22];
+        if ((x_23 == 1)) {
+          x_68 = true;
+          x_17 = 1;
+          x_25_phi = 1;
+          x_93_phi = true;
+          break;
+        }
+        x_18 = x_22;
+
+        continuing {
+          x_21_phi = x_22;
+        }
+      }
+      x_25 = x_25_phi;
+      let x_93 : bool = x_93_phi;
+      x_26_phi = x_25;
+      if (x_93) {
+        break;
+      }
+      x_68 = true;
+      x_17 = -1;
+      x_26_phi = -1;
+      break;
+
+      continuing {
+        x_79_phi = false;
+      }
+    }
+    let x_26 : i32 = x_26_phi;
+    x_20 = x_26;
+    if ((x_26 == -1)) {
+      discard;
+    } else {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      let x_100 : vec2<f32> = (vec2<f32>(x_76.y, x_76.z) + vec2<f32>(1.0, 1.0));
+      x_101 = vec3<f32>(x_76.x, x_100.x, x_100.y);
+      color = x_101;
+      let x_103 : f32 = x_11.injectionSwitch.x;
+      if ((x_103 > 1.0)) {
+        x_69 = true;
+        break;
+      }
+    }
+    x_GLF_color = vec4<f32>(x_101.x, x_101.y, x_101.z, 1.0);
+    x_69 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn binarySearch_struct_tmp_struct_i1_1_1_(obj : ptr<function, tmp_struct>) -> i32 {
+  var x_112 : bool = false;
+  var x_16 : i32;
+  var one : i32;
+  var zero : i32;
+  var x_27 : i32;
+  var x_114_phi : bool;
+  var x_28_phi : i32;
+  x_114_phi = false;
+  loop {
+    var x_15_phi : i32;
+    var x_27_phi : i32;
+    var x_128_phi : bool;
+    let x_114 : bool = x_114_phi;
+    one = 1;
+    x_15_phi = 1;
+    loop {
+      let x_15 : i32 = x_15_phi;
+      x_27_phi = 0;
+      x_128_phi = x_114;
+      if ((x_15 > 10)) {
+      } else {
+        break;
+      }
+      let x_13 : i32 = (x_15 - 1);
+      zero = x_13;
+      let x_14 : i32 = (*(obj)).nmb[x_13];
+      if ((x_14 == 1)) {
+        x_112 = true;
+        x_16 = 1;
+        x_27_phi = 1;
+        x_128_phi = true;
+        break;
+      }
+      one = x_13;
+
+      continuing {
+        x_15_phi = x_13;
+      }
+    }
+    x_27 = x_27_phi;
+    let x_128 : bool = x_128_phi;
+    x_28_phi = x_27;
+    if (x_128) {
+      break;
+    }
+    x_112 = true;
+    x_16 = -1;
+    x_28_phi = -1;
+    break;
+
+    continuing {
+      x_114_phi = false;
+    }
+  }
+  let x_28 : i32 = x_28_phi;
+  return x_28;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm
new file mode 100644
index 0000000..323b987
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm
@@ -0,0 +1,315 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap(i1;i1;"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %quicksort_ "quicksort("
+               OpName %temp "temp"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %pivot "pivot"
+               OpName %i_0 "i"
+               OpName %j_0 "j"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %l_0 "l"
+               OpName %h_0 "h"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %i_1 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %36 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+     %int_10 = OpConstant %int 10
+      %int_4 = OpConstant %int 4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %56 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %main = OpFunction %void None %32
+         %59 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function
+               OpStore %i_1 %int_0
+               OpBranch %60
+         %60 = OpLabel
+               OpLoopMerge %61 %62 None
+               OpBranch %63
+         %63 = OpLabel
+         %64 = OpLoad %int %i_1
+         %65 = OpSLessThan %bool %64 %int_10
+               OpBranchConditional %65 %66 %61
+         %66 = OpLabel
+         %67 = OpLoad %int %i_1
+         %68 = OpLoad %int %i_1
+         %69 = OpISub %int %int_10 %68
+         %70 = OpAccessChain %_ptr_Private_int %obj %int_0 %67
+               OpStore %70 %69
+         %71 = OpLoad %int %i_1
+         %72 = OpLoad %int %i_1
+         %73 = OpAccessChain %_ptr_Private_int %obj %int_0 %72
+         %74 = OpLoad %int %73
+         %75 = OpLoad %int %i_1
+         %76 = OpAccessChain %_ptr_Private_int %obj %int_0 %75
+         %77 = OpLoad %int %76
+         %78 = OpIMul %int %74 %77
+         %79 = OpAccessChain %_ptr_Private_int %obj %int_0 %71
+               OpStore %79 %78
+               OpBranch %62
+         %62 = OpLabel
+         %80 = OpLoad %int %i_1
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %i_1 %81
+               OpBranch %60
+         %61 = OpLabel
+         %82 = OpFunctionCall %void %quicksort_
+         %83 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
+         %86 = OpLoad %int %85
+         %87 = OpSLessThan %bool %84 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+               OpStore %_GLF_color %55
+               OpBranch %88
+         %90 = OpLabel
+               OpStore %_GLF_color %56
+               OpBranch %88
+         %88 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %35
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %91 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+         %92 = OpLoad %int %i
+         %93 = OpAccessChain %_ptr_Private_int %obj %int_0 %92
+         %94 = OpLoad %int %93
+               OpStore %temp %94
+         %95 = OpLoad %int %i
+         %96 = OpLoad %int %j
+         %97 = OpAccessChain %_ptr_Private_int %obj %int_0 %96
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Private_int %obj %int_0 %95
+               OpStore %99 %98
+        %100 = OpLoad %int %j
+        %101 = OpLoad %int %temp
+        %102 = OpAccessChain %_ptr_Private_int %obj %int_0 %100
+               OpStore %102 %101
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %36
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %103 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+        %104 = OpLoad %int %h
+        %105 = OpAccessChain %_ptr_Private_int %obj %int_0 %104
+        %106 = OpLoad %int %105
+               OpStore %pivot %106
+        %107 = OpLoad %int %l
+        %108 = OpISub %int %107 %int_1
+               OpStore %i_0 %108
+        %109 = OpLoad %int %l
+               OpStore %j_0 %109
+               OpBranch %110
+        %110 = OpLabel
+               OpLoopMerge %111 %112 None
+               OpBranch %113
+        %113 = OpLabel
+        %114 = OpLoad %int %j_0
+        %115 = OpLoad %int %h
+        %116 = OpISub %int %115 %int_1
+        %117 = OpSLessThanEqual %bool %114 %116
+               OpBranchConditional %117 %118 %111
+        %118 = OpLabel
+        %119 = OpLoad %int %j_0
+        %120 = OpAccessChain %_ptr_Private_int %obj %int_0 %119
+        %121 = OpLoad %int %120
+        %122 = OpLoad %int %pivot
+        %123 = OpSLessThanEqual %bool %121 %122
+               OpSelectionMerge %124 None
+               OpBranchConditional %123 %125 %124
+        %125 = OpLabel
+        %126 = OpLoad %int %i_0
+        %127 = OpIAdd %int %126 %int_1
+               OpStore %i_0 %127
+        %128 = OpLoad %int %i_0
+               OpStore %param %128
+        %129 = OpLoad %int %j_0
+               OpStore %param_0 %129
+        %130 = OpFunctionCall %void %swap_i1_i1_ %param %param_0
+               OpBranch %124
+        %124 = OpLabel
+               OpBranch %112
+        %112 = OpLabel
+        %131 = OpLoad %int %j_0
+        %132 = OpIAdd %int %131 %int_1
+               OpStore %j_0 %132
+               OpBranch %110
+        %111 = OpLabel
+        %133 = OpLoad %int %i_0
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %param_1 %134
+        %135 = OpLoad %int %h
+               OpStore %param_2 %135
+        %136 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2
+        %137 = OpLoad %int %i_0
+        %138 = OpIAdd %int %137 %int_1
+               OpReturnValue %138
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %32
+        %139 = OpLabel
+        %l_0 = OpVariable %_ptr_Function_int Function
+        %h_0 = OpVariable %_ptr_Function_int Function
+        %top = OpVariable %_ptr_Function_int Function
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %p = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+               OpStore %l_0 %int_0
+               OpStore %h_0 %int_9
+               OpStore %top %int_n1
+        %140 = OpLoad %int %top
+        %141 = OpIAdd %int %140 %int_1
+               OpStore %top %141
+        %142 = OpLoad %int %l_0
+        %143 = OpAccessChain %_ptr_Function_int %stack %141
+               OpStore %143 %142
+        %144 = OpLoad %int %top
+        %145 = OpIAdd %int %144 %int_1
+               OpStore %top %145
+        %146 = OpLoad %int %h_0
+        %147 = OpAccessChain %_ptr_Function_int %stack %145
+               OpStore %147 %146
+               OpBranch %148
+        %148 = OpLabel
+               OpLoopMerge %149 %150 None
+               OpBranch %151
+        %151 = OpLabel
+        %152 = OpLoad %int %top
+        %153 = OpSGreaterThanEqual %bool %152 %int_0
+               OpBranchConditional %153 %154 %149
+        %154 = OpLabel
+        %155 = OpLoad %int %top
+        %156 = OpISub %int %155 %int_1
+               OpStore %top %156
+        %157 = OpAccessChain %_ptr_Function_int %stack %155
+        %158 = OpLoad %int %157
+               OpStore %h_0 %158
+        %159 = OpLoad %int %top
+        %160 = OpISub %int %159 %int_1
+               OpStore %top %160
+        %161 = OpAccessChain %_ptr_Function_int %stack %159
+        %162 = OpLoad %int %161
+               OpStore %l_0 %162
+        %163 = OpLoad %int %l_0
+               OpStore %param_3 %163
+        %164 = OpLoad %int %h_0
+               OpStore %param_4 %164
+        %165 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
+               OpStore %p %165
+        %166 = OpLoad %int %p
+        %167 = OpISub %int %166 %int_1
+        %168 = OpLoad %int %l_0
+        %169 = OpSGreaterThan %bool %167 %168
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %170
+        %171 = OpLabel
+        %172 = OpLoad %int %top
+        %173 = OpIAdd %int %172 %int_1
+               OpStore %top %173
+        %174 = OpLoad %int %l_0
+        %175 = OpAccessChain %_ptr_Function_int %stack %173
+               OpStore %175 %174
+        %176 = OpLoad %int %top
+        %177 = OpIAdd %int %176 %int_1
+               OpStore %top %177
+        %178 = OpLoad %int %p
+        %179 = OpISub %int %178 %int_1
+        %180 = OpAccessChain %_ptr_Function_int %stack %177
+               OpStore %180 %179
+               OpBranch %170
+        %170 = OpLabel
+        %181 = OpLoad %int %p
+        %182 = OpIAdd %int %181 %int_1
+        %183 = OpLoad %int %h_0
+        %184 = OpSLessThan %bool %182 %183
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %185
+        %186 = OpLabel
+        %187 = OpLoad %int %top
+        %188 = OpIAdd %int %187 %int_1
+               OpStore %top %188
+        %189 = OpLoad %int %p
+        %190 = OpIAdd %int %189 %int_1
+        %191 = OpAccessChain %_ptr_Function_int %stack %188
+               OpStore %191 %190
+        %192 = OpLoad %int %top
+        %193 = OpIAdd %int %192 %int_1
+               OpStore %top %193
+        %194 = OpLoad %int %h_0
+        %195 = OpAccessChain %_ptr_Function_int %stack %193
+               OpStore %195 %194
+               OpBranch %185
+        %185 = OpLabel
+               OpBranch %150
+        %150 = OpLabel
+               OpBranch %148
+        %149 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2e1f778
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,154 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_30 : register(b0, space0) {
+  uint4 x_30[1];
+};
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_92 = i;
+  const int x_94 = obj.numbers[x_92];
+  temp = x_94;
+  const int x_95 = i;
+  const int x_96 = j;
+  const int x_98 = obj.numbers[x_96];
+  obj.numbers[x_95] = x_98;
+  const int x_100 = j;
+  obj.numbers[x_100] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_104 = h;
+  const int x_106 = obj.numbers[x_104];
+  pivot = x_106;
+  const int x_107 = l;
+  i_1 = (x_107 - 1);
+  const int x_109 = l;
+  j_1 = x_109;
+  while (true) {
+    const int x_114 = j_1;
+    const int x_115 = h;
+    if ((x_114 <= (x_115 - 1))) {
+    } else {
+      break;
+    }
+    const int x_121 = obj.numbers[j_1];
+    if ((x_121 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_135 = h;
+  param_3 = x_135;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_141 = (top + 1);
+  top = x_141;
+  stack[x_141] = l_1;
+  const int x_145 = (top + 1);
+  top = x_145;
+  stack[x_145] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_155 = top;
+    top = (x_155 - 1);
+    const int x_158 = stack[x_155];
+    h_1 = x_158;
+    const int x_159 = top;
+    top = (x_159 - 1);
+    const int x_162 = stack[x_159];
+    l_1 = x_162;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_165 = performPartition_i1_i1_(param_4, param_5);
+    p = x_165;
+    if (((p - 1) > l_1)) {
+      const int x_173 = (top + 1);
+      top = x_173;
+      stack[x_173] = l_1;
+      const int x_177 = (top + 1);
+      top = x_177;
+      stack[x_177] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_188 = (top + 1);
+      top = x_188;
+      stack[x_188] = (p + 1);
+      const int x_193 = (top + 1);
+      top = x_193;
+      stack[x_193] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_71 = i_2;
+      const int x_74 = obj.numbers[i_2];
+      const int x_77 = obj.numbers[i_2];
+      obj.numbers[x_71] = (x_74 * x_77);
+    }
+  }
+  quicksort_();
+  const int x_84 = obj.numbers[0];
+  const int x_86 = obj.numbers[4];
+  if ((x_84 < x_86)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 1.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3bf51a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.msl
@@ -0,0 +1,198 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_4) {
+  int temp = 0;
+  int const x_92 = *(i);
+  int const x_94 = (*(tint_symbol_4)).numbers.arr[x_92];
+  temp = x_94;
+  int const x_95 = *(i);
+  int const x_96 = *(j);
+  int const x_98 = (*(tint_symbol_4)).numbers.arr[x_96];
+  (*(tint_symbol_4)).numbers.arr[x_95] = x_98;
+  int const x_100 = *(j);
+  int const x_101 = temp;
+  (*(tint_symbol_4)).numbers.arr[x_100] = x_101;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_5) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_104 = *(h);
+  int const x_106 = (*(tint_symbol_5)).numbers.arr[x_104];
+  pivot = x_106;
+  int const x_107 = *(l);
+  i_1 = (x_107 - 1);
+  int const x_109 = *(l);
+  j_1 = x_109;
+  while (true) {
+    int const x_114 = j_1;
+    int const x_115 = *(h);
+    if ((x_114 <= (x_115 - 1))) {
+    } else {
+      break;
+    }
+    int const x_119 = j_1;
+    int const x_121 = (*(tint_symbol_5)).numbers.arr[x_119];
+    int const x_122 = pivot;
+    if ((x_121 <= x_122)) {
+      int const x_126 = i_1;
+      i_1 = (x_126 + 1);
+      int const x_128 = i_1;
+      param = x_128;
+      int const x_129 = j_1;
+      param_1 = x_129;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_5);
+    }
+    {
+      int const x_131 = j_1;
+      j_1 = (x_131 + 1);
+    }
+  }
+  int const x_133 = i_1;
+  param_2 = (x_133 + 1);
+  int const x_135 = *(h);
+  param_3 = x_135;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_5);
+  int const x_137 = i_1;
+  return (x_137 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_6) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_140 = top;
+  int const x_141 = (x_140 + 1);
+  top = x_141;
+  int const x_142 = l_1;
+  stack.arr[x_141] = x_142;
+  int const x_144 = top;
+  int const x_145 = (x_144 + 1);
+  top = x_145;
+  int const x_146 = h_1;
+  stack.arr[x_145] = x_146;
+  while (true) {
+    int const x_152 = top;
+    if ((x_152 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_155 = top;
+    top = (x_155 - 1);
+    int const x_158 = stack.arr[x_155];
+    h_1 = x_158;
+    int const x_159 = top;
+    top = (x_159 - 1);
+    int const x_162 = stack.arr[x_159];
+    l_1 = x_162;
+    int const x_163 = l_1;
+    param_4 = x_163;
+    int const x_164 = h_1;
+    param_5 = x_164;
+    int const x_165 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_6);
+    p = x_165;
+    int const x_166 = p;
+    int const x_168 = l_1;
+    if (((x_166 - 1) > x_168)) {
+      int const x_172 = top;
+      int const x_173 = (x_172 + 1);
+      top = x_173;
+      int const x_174 = l_1;
+      stack.arr[x_173] = x_174;
+      int const x_176 = top;
+      int const x_177 = (x_176 + 1);
+      top = x_177;
+      int const x_178 = p;
+      stack.arr[x_177] = (x_178 - 1);
+    }
+    int const x_181 = p;
+    int const x_183 = h_1;
+    if (((x_181 + 1) < x_183)) {
+      int const x_187 = top;
+      int const x_188 = (x_187 + 1);
+      top = x_188;
+      int const x_189 = p;
+      stack.arr[x_188] = (x_189 + 1);
+      int const x_192 = top;
+      int const x_193 = (x_192 + 1);
+      top = x_193;
+      int const x_194 = h_1;
+      stack.arr[x_193] = x_194;
+    }
+  }
+  return;
+}
+
+void main_1(thread QuicksortObject* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  int i_2 = 0;
+  i_2 = 0;
+  while (true) {
+    int const x_64 = i_2;
+    if ((x_64 < 10)) {
+    } else {
+      break;
+    }
+    int const x_67 = i_2;
+    int const x_68 = i_2;
+    (*(tint_symbol_7)).numbers.arr[x_67] = (10 - x_68);
+    int const x_71 = i_2;
+    int const x_72 = i_2;
+    int const x_74 = (*(tint_symbol_7)).numbers.arr[x_72];
+    int const x_75 = i_2;
+    int const x_77 = (*(tint_symbol_7)).numbers.arr[x_75];
+    (*(tint_symbol_7)).numbers.arr[x_71] = (x_74 * x_77);
+    {
+      int const x_80 = i_2;
+      i_2 = (x_80 + 1);
+    }
+  }
+  quicksort_(tint_symbol_7);
+  int const x_84 = (*(tint_symbol_7)).numbers.arr[0];
+  int const x_86 = (*(tint_symbol_7)).numbers.arr[4];
+  if ((x_84 < x_86)) {
+    *(tint_symbol_8) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_8) = float4(0.0f, 1.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread QuicksortObject tint_symbol_9 = {};
+  thread float4 tint_symbol_10 = 0.0f;
+  main_1(&(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7a0c9e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,367 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 235
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_30 "x_30"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_30 NonWritable
+               OpDecorate %x_30 DescriptorSet 0
+               OpDecorate %x_30 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_30 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %46 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %106 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %114 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+     %int_10 = OpConstant %int 10
+      %int_4 = OpConstant %int 4
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %221 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %222 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %223 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %20
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %26 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %28
+         %30 = OpLoad %int %i
+         %33 = OpAccessChain %_ptr_Private_int %obj %uint_0 %30
+         %34 = OpLoad %int %33
+               OpStore %temp %34
+         %36 = OpLoad %int %i
+         %38 = OpLoad %int %j
+         %39 = OpAccessChain %_ptr_Private_int %obj %uint_0 %38
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Private_int %obj %uint_0 %36
+               OpStore %41 %40
+         %43 = OpLoad %int %j
+         %44 = OpLoad %int %temp
+         %45 = OpAccessChain %_ptr_Private_int %obj %uint_0 %43
+               OpStore %45 %44
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %46
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %50 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %28
+        %i_1 = OpVariable %_ptr_Function_int Function %28
+        %j_1 = OpVariable %_ptr_Function_int Function %28
+      %param = OpVariable %_ptr_Function_int Function %28
+    %param_1 = OpVariable %_ptr_Function_int Function %28
+    %param_2 = OpVariable %_ptr_Function_int Function %28
+    %param_3 = OpVariable %_ptr_Function_int Function %28
+         %59 = OpLoad %int %h
+         %60 = OpAccessChain %_ptr_Private_int %obj %uint_0 %59
+         %61 = OpLoad %int %60
+               OpStore %pivot %61
+         %63 = OpLoad %int %l
+         %65 = OpISub %int %63 %int_1
+               OpStore %i_1 %65
+         %67 = OpLoad %int %l
+               OpStore %j_1 %67
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpLoad %int %j_1
+         %74 = OpLoad %int %h
+         %75 = OpISub %int %74 %int_1
+         %76 = OpSLessThanEqual %bool %72 %75
+               OpSelectionMerge %78 None
+               OpBranchConditional %76 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %69
+         %78 = OpLabel
+         %81 = OpLoad %int %j_1
+         %82 = OpAccessChain %_ptr_Private_int %obj %uint_0 %81
+         %83 = OpLoad %int %82
+         %84 = OpLoad %int %pivot
+         %85 = OpSLessThanEqual %bool %83 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpLoad %int %i_1
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %i_1 %89
+         %90 = OpLoad %int %i_1
+               OpStore %param %90
+         %91 = OpLoad %int %j_1
+               OpStore %param_1 %91
+         %92 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+         %95 = OpLoad %int %j_1
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %j_1 %96
+               OpBranch %68
+         %69 = OpLabel
+         %97 = OpLoad %int %i_1
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %param_2 %98
+        %100 = OpLoad %int %h
+               OpStore %param_3 %100
+        %101 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %104 = OpLoad %int %i_1
+        %105 = OpIAdd %int %104 %int_1
+               OpReturnValue %105
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %106
+        %108 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %28
+        %h_1 = OpVariable %_ptr_Function_int Function %28
+        %top = OpVariable %_ptr_Function_int Function %28
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %114
+          %p = OpVariable %_ptr_Function_int Function %28
+    %param_4 = OpVariable %_ptr_Function_int Function %28
+    %param_5 = OpVariable %_ptr_Function_int Function %28
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %121 = OpLoad %int %top
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %top %122
+        %123 = OpLoad %int %l_1
+        %124 = OpAccessChain %_ptr_Function_int %stack %122
+               OpStore %124 %123
+        %125 = OpLoad %int %top
+        %126 = OpIAdd %int %125 %int_1
+               OpStore %top %126
+        %127 = OpLoad %int %h_1
+        %128 = OpAccessChain %_ptr_Function_int %stack %126
+               OpStore %128 %127
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %top
+        %134 = OpSGreaterThanEqual %bool %133 %int_0
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %130
+        %135 = OpLabel
+        %138 = OpLoad %int %top
+        %139 = OpISub %int %138 %int_1
+               OpStore %top %139
+        %140 = OpAccessChain %_ptr_Function_int %stack %138
+        %141 = OpLoad %int %140
+               OpStore %h_1 %141
+        %142 = OpLoad %int %top
+        %143 = OpISub %int %142 %int_1
+               OpStore %top %143
+        %144 = OpAccessChain %_ptr_Function_int %stack %142
+        %145 = OpLoad %int %144
+               OpStore %l_1 %145
+        %146 = OpLoad %int %l_1
+               OpStore %param_4 %146
+        %147 = OpLoad %int %h_1
+               OpStore %param_5 %147
+        %148 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %148
+        %151 = OpLoad %int %p
+        %152 = OpLoad %int %l_1
+        %153 = OpISub %int %151 %int_1
+        %154 = OpSGreaterThan %bool %153 %152
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpLoad %int %top
+        %158 = OpIAdd %int %157 %int_1
+               OpStore %top %158
+        %159 = OpLoad %int %l_1
+        %160 = OpAccessChain %_ptr_Function_int %stack %158
+               OpStore %160 %159
+        %161 = OpLoad %int %top
+        %162 = OpIAdd %int %161 %int_1
+               OpStore %top %162
+        %163 = OpLoad %int %p
+        %164 = OpAccessChain %_ptr_Function_int %stack %162
+        %165 = OpISub %int %163 %int_1
+               OpStore %164 %165
+               OpBranch %155
+        %155 = OpLabel
+        %166 = OpLoad %int %p
+        %167 = OpLoad %int %h_1
+        %168 = OpIAdd %int %166 %int_1
+        %169 = OpSLessThan %bool %168 %167
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %170
+        %171 = OpLabel
+        %172 = OpLoad %int %top
+        %173 = OpIAdd %int %172 %int_1
+               OpStore %top %173
+        %174 = OpLoad %int %p
+        %175 = OpAccessChain %_ptr_Function_int %stack %173
+        %176 = OpIAdd %int %174 %int_1
+               OpStore %175 %176
+        %177 = OpLoad %int %top
+        %178 = OpIAdd %int %177 %int_1
+               OpStore %top %178
+        %179 = OpLoad %int %h_1
+        %180 = OpAccessChain %_ptr_Function_int %stack %178
+               OpStore %180 %179
+               OpBranch %170
+        %170 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpBranch %129
+        %130 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %106
+        %182 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %28
+               OpStore %i_2 %int_0
+               OpBranch %184
+        %184 = OpLabel
+               OpLoopMerge %185 %186 None
+               OpBranch %187
+        %187 = OpLabel
+        %188 = OpLoad %int %i_2
+        %190 = OpSLessThan %bool %188 %int_10
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %193
+        %192 = OpLabel
+               OpBranch %191
+        %193 = OpLabel
+               OpBranch %185
+        %191 = OpLabel
+        %194 = OpLoad %int %i_2
+        %195 = OpLoad %int %i_2
+        %196 = OpAccessChain %_ptr_Private_int %obj %uint_0 %194
+        %197 = OpISub %int %int_10 %195
+               OpStore %196 %197
+        %198 = OpLoad %int %i_2
+        %199 = OpLoad %int %i_2
+        %200 = OpAccessChain %_ptr_Private_int %obj %uint_0 %199
+        %201 = OpLoad %int %200
+        %202 = OpLoad %int %i_2
+        %203 = OpAccessChain %_ptr_Private_int %obj %uint_0 %202
+        %204 = OpLoad %int %203
+        %205 = OpAccessChain %_ptr_Private_int %obj %uint_0 %198
+        %206 = OpIMul %int %201 %204
+               OpStore %205 %206
+               OpBranch %186
+        %186 = OpLabel
+        %207 = OpLoad %int %i_2
+        %208 = OpIAdd %int %207 %int_1
+               OpStore %i_2 %208
+               OpBranch %184
+        %185 = OpLabel
+        %209 = OpFunctionCall %void %quicksort_
+        %210 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %211 = OpLoad %int %210
+        %213 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %214 = OpLoad %int %213
+        %215 = OpSLessThan %bool %211 %214
+               OpSelectionMerge %216 None
+               OpBranchConditional %215 %217 %218
+        %217 = OpLabel
+               OpStore %x_GLF_color %221
+               OpBranch %216
+        %218 = OpLabel
+               OpStore %x_GLF_color %222
+               OpBranch %216
+        %216 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %223
+%tint_symbol = OpFunctionParameter %main_out
+        %227 = OpLabel
+        %228 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %228
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %106
+        %230 = OpLabel
+        %231 = OpFunctionCall %void %main_1
+        %233 = OpLoad %v4float %x_GLF_color
+        %234 = OpCompositeConstruct %main_out %233
+        %232 = OpFunctionCall %void %tint_symbol_2 %234
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..03cd2ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,197 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_30 : buf0;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_92 : i32 = *(i);
+  let x_94 : i32 = obj.numbers[x_92];
+  temp = x_94;
+  let x_95 : i32 = *(i);
+  let x_96 : i32 = *(j);
+  let x_98 : i32 = obj.numbers[x_96];
+  obj.numbers[x_95] = x_98;
+  let x_100 : i32 = *(j);
+  let x_101 : i32 = temp;
+  obj.numbers[x_100] = x_101;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_104 : i32 = *(h);
+  let x_106 : i32 = obj.numbers[x_104];
+  pivot = x_106;
+  let x_107 : i32 = *(l);
+  i_1 = (x_107 - 1);
+  let x_109 : i32 = *(l);
+  j_1 = x_109;
+  loop {
+    let x_114 : i32 = j_1;
+    let x_115 : i32 = *(h);
+    if ((x_114 <= (x_115 - 1))) {
+    } else {
+      break;
+    }
+    let x_119 : i32 = j_1;
+    let x_121 : i32 = obj.numbers[x_119];
+    let x_122 : i32 = pivot;
+    if ((x_121 <= x_122)) {
+      let x_126 : i32 = i_1;
+      i_1 = (x_126 + 1);
+      let x_128 : i32 = i_1;
+      param = x_128;
+      let x_129 : i32 = j_1;
+      param_1 = x_129;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_131 : i32 = j_1;
+      j_1 = (x_131 + 1);
+    }
+  }
+  let x_133 : i32 = i_1;
+  param_2 = (x_133 + 1);
+  let x_135 : i32 = *(h);
+  param_3 = x_135;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_137 : i32 = i_1;
+  return (x_137 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_140 : i32 = top;
+  let x_141 : i32 = (x_140 + 1);
+  top = x_141;
+  let x_142 : i32 = l_1;
+  stack[x_141] = x_142;
+  let x_144 : i32 = top;
+  let x_145 : i32 = (x_144 + 1);
+  top = x_145;
+  let x_146 : i32 = h_1;
+  stack[x_145] = x_146;
+  loop {
+    let x_152 : i32 = top;
+    if ((x_152 >= 0)) {
+    } else {
+      break;
+    }
+    let x_155 : i32 = top;
+    top = (x_155 - 1);
+    let x_158 : i32 = stack[x_155];
+    h_1 = x_158;
+    let x_159 : i32 = top;
+    top = (x_159 - 1);
+    let x_162 : i32 = stack[x_159];
+    l_1 = x_162;
+    let x_163 : i32 = l_1;
+    param_4 = x_163;
+    let x_164 : i32 = h_1;
+    param_5 = x_164;
+    let x_165 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_165;
+    let x_166 : i32 = p;
+    let x_168 : i32 = l_1;
+    if (((x_166 - 1) > x_168)) {
+      let x_172 : i32 = top;
+      let x_173 : i32 = (x_172 + 1);
+      top = x_173;
+      let x_174 : i32 = l_1;
+      stack[x_173] = x_174;
+      let x_176 : i32 = top;
+      let x_177 : i32 = (x_176 + 1);
+      top = x_177;
+      let x_178 : i32 = p;
+      stack[x_177] = (x_178 - 1);
+    }
+    let x_181 : i32 = p;
+    let x_183 : i32 = h_1;
+    if (((x_181 + 1) < x_183)) {
+      let x_187 : i32 = top;
+      let x_188 : i32 = (x_187 + 1);
+      top = x_188;
+      let x_189 : i32 = p;
+      stack[x_188] = (x_189 + 1);
+      let x_192 : i32 = top;
+      let x_193 : i32 = (x_192 + 1);
+      top = x_193;
+      let x_194 : i32 = h_1;
+      stack[x_193] = x_194;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  i_2 = 0;
+  loop {
+    let x_64 : i32 = i_2;
+    if ((x_64 < 10)) {
+    } else {
+      break;
+    }
+    let x_67 : i32 = i_2;
+    let x_68 : i32 = i_2;
+    obj.numbers[x_67] = (10 - x_68);
+    let x_71 : i32 = i_2;
+    let x_72 : i32 = i_2;
+    let x_74 : i32 = obj.numbers[x_72];
+    let x_75 : i32 = i_2;
+    let x_77 : i32 = obj.numbers[x_75];
+    obj.numbers[x_71] = (x_74 * x_77);
+
+    continuing {
+      let x_80 : i32 = i_2;
+      i_2 = (x_80 + 1);
+    }
+  }
+  quicksort_();
+  let x_84 : i32 = obj.numbers[0];
+  let x_86 : i32 = obj.numbers[4];
+  if ((x_84 < x_86)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
new file mode 100644
index 0000000..03cd2ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
@@ -0,0 +1,197 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_30 : buf0;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_92 : i32 = *(i);
+  let x_94 : i32 = obj.numbers[x_92];
+  temp = x_94;
+  let x_95 : i32 = *(i);
+  let x_96 : i32 = *(j);
+  let x_98 : i32 = obj.numbers[x_96];
+  obj.numbers[x_95] = x_98;
+  let x_100 : i32 = *(j);
+  let x_101 : i32 = temp;
+  obj.numbers[x_100] = x_101;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_104 : i32 = *(h);
+  let x_106 : i32 = obj.numbers[x_104];
+  pivot = x_106;
+  let x_107 : i32 = *(l);
+  i_1 = (x_107 - 1);
+  let x_109 : i32 = *(l);
+  j_1 = x_109;
+  loop {
+    let x_114 : i32 = j_1;
+    let x_115 : i32 = *(h);
+    if ((x_114 <= (x_115 - 1))) {
+    } else {
+      break;
+    }
+    let x_119 : i32 = j_1;
+    let x_121 : i32 = obj.numbers[x_119];
+    let x_122 : i32 = pivot;
+    if ((x_121 <= x_122)) {
+      let x_126 : i32 = i_1;
+      i_1 = (x_126 + 1);
+      let x_128 : i32 = i_1;
+      param = x_128;
+      let x_129 : i32 = j_1;
+      param_1 = x_129;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_131 : i32 = j_1;
+      j_1 = (x_131 + 1);
+    }
+  }
+  let x_133 : i32 = i_1;
+  param_2 = (x_133 + 1);
+  let x_135 : i32 = *(h);
+  param_3 = x_135;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_137 : i32 = i_1;
+  return (x_137 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_140 : i32 = top;
+  let x_141 : i32 = (x_140 + 1);
+  top = x_141;
+  let x_142 : i32 = l_1;
+  stack[x_141] = x_142;
+  let x_144 : i32 = top;
+  let x_145 : i32 = (x_144 + 1);
+  top = x_145;
+  let x_146 : i32 = h_1;
+  stack[x_145] = x_146;
+  loop {
+    let x_152 : i32 = top;
+    if ((x_152 >= 0)) {
+    } else {
+      break;
+    }
+    let x_155 : i32 = top;
+    top = (x_155 - 1);
+    let x_158 : i32 = stack[x_155];
+    h_1 = x_158;
+    let x_159 : i32 = top;
+    top = (x_159 - 1);
+    let x_162 : i32 = stack[x_159];
+    l_1 = x_162;
+    let x_163 : i32 = l_1;
+    param_4 = x_163;
+    let x_164 : i32 = h_1;
+    param_5 = x_164;
+    let x_165 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_165;
+    let x_166 : i32 = p;
+    let x_168 : i32 = l_1;
+    if (((x_166 - 1) > x_168)) {
+      let x_172 : i32 = top;
+      let x_173 : i32 = (x_172 + 1);
+      top = x_173;
+      let x_174 : i32 = l_1;
+      stack[x_173] = x_174;
+      let x_176 : i32 = top;
+      let x_177 : i32 = (x_176 + 1);
+      top = x_177;
+      let x_178 : i32 = p;
+      stack[x_177] = (x_178 - 1);
+    }
+    let x_181 : i32 = p;
+    let x_183 : i32 = h_1;
+    if (((x_181 + 1) < x_183)) {
+      let x_187 : i32 = top;
+      let x_188 : i32 = (x_187 + 1);
+      top = x_188;
+      let x_189 : i32 = p;
+      stack[x_188] = (x_189 + 1);
+      let x_192 : i32 = top;
+      let x_193 : i32 = (x_192 + 1);
+      top = x_193;
+      let x_194 : i32 = h_1;
+      stack[x_193] = x_194;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  i_2 = 0;
+  loop {
+    let x_64 : i32 = i_2;
+    if ((x_64 < 10)) {
+    } else {
+      break;
+    }
+    let x_67 : i32 = i_2;
+    let x_68 : i32 = i_2;
+    obj.numbers[x_67] = (10 - x_68);
+    let x_71 : i32 = i_2;
+    let x_72 : i32 = i_2;
+    let x_74 : i32 = obj.numbers[x_72];
+    let x_75 : i32 = i_2;
+    let x_77 : i32 = obj.numbers[x_75];
+    obj.numbers[x_71] = (x_74 * x_77);
+
+    continuing {
+      let x_80 : i32 = i_2;
+      i_2 = (x_80 + 1);
+    }
+  }
+  quicksort_();
+  let x_84 : i32 = obj.numbers[0];
+  let x_86 : i32 = obj.numbers[4];
+  if ((x_84 < x_86)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2e1f778
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,154 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_30 : register(b0, space0) {
+  uint4 x_30[1];
+};
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_92 = i;
+  const int x_94 = obj.numbers[x_92];
+  temp = x_94;
+  const int x_95 = i;
+  const int x_96 = j;
+  const int x_98 = obj.numbers[x_96];
+  obj.numbers[x_95] = x_98;
+  const int x_100 = j;
+  obj.numbers[x_100] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_104 = h;
+  const int x_106 = obj.numbers[x_104];
+  pivot = x_106;
+  const int x_107 = l;
+  i_1 = (x_107 - 1);
+  const int x_109 = l;
+  j_1 = x_109;
+  while (true) {
+    const int x_114 = j_1;
+    const int x_115 = h;
+    if ((x_114 <= (x_115 - 1))) {
+    } else {
+      break;
+    }
+    const int x_121 = obj.numbers[j_1];
+    if ((x_121 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_135 = h;
+  param_3 = x_135;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_141 = (top + 1);
+  top = x_141;
+  stack[x_141] = l_1;
+  const int x_145 = (top + 1);
+  top = x_145;
+  stack[x_145] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_155 = top;
+    top = (x_155 - 1);
+    const int x_158 = stack[x_155];
+    h_1 = x_158;
+    const int x_159 = top;
+    top = (x_159 - 1);
+    const int x_162 = stack[x_159];
+    l_1 = x_162;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_165 = performPartition_i1_i1_(param_4, param_5);
+    p = x_165;
+    if (((p - 1) > l_1)) {
+      const int x_173 = (top + 1);
+      top = x_173;
+      stack[x_173] = l_1;
+      const int x_177 = (top + 1);
+      top = x_177;
+      stack[x_177] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_188 = (top + 1);
+      top = x_188;
+      stack[x_188] = (p + 1);
+      const int x_193 = (top + 1);
+      top = x_193;
+      stack[x_193] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_71 = i_2;
+      const int x_74 = obj.numbers[i_2];
+      const int x_77 = obj.numbers[i_2];
+      obj.numbers[x_71] = (x_74 * x_77);
+    }
+  }
+  quicksort_();
+  const int x_84 = obj.numbers[0];
+  const int x_86 = obj.numbers[4];
+  if ((x_84 < x_86)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 1.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3bf51a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.msl
@@ -0,0 +1,198 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_4) {
+  int temp = 0;
+  int const x_92 = *(i);
+  int const x_94 = (*(tint_symbol_4)).numbers.arr[x_92];
+  temp = x_94;
+  int const x_95 = *(i);
+  int const x_96 = *(j);
+  int const x_98 = (*(tint_symbol_4)).numbers.arr[x_96];
+  (*(tint_symbol_4)).numbers.arr[x_95] = x_98;
+  int const x_100 = *(j);
+  int const x_101 = temp;
+  (*(tint_symbol_4)).numbers.arr[x_100] = x_101;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_5) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_104 = *(h);
+  int const x_106 = (*(tint_symbol_5)).numbers.arr[x_104];
+  pivot = x_106;
+  int const x_107 = *(l);
+  i_1 = (x_107 - 1);
+  int const x_109 = *(l);
+  j_1 = x_109;
+  while (true) {
+    int const x_114 = j_1;
+    int const x_115 = *(h);
+    if ((x_114 <= (x_115 - 1))) {
+    } else {
+      break;
+    }
+    int const x_119 = j_1;
+    int const x_121 = (*(tint_symbol_5)).numbers.arr[x_119];
+    int const x_122 = pivot;
+    if ((x_121 <= x_122)) {
+      int const x_126 = i_1;
+      i_1 = (x_126 + 1);
+      int const x_128 = i_1;
+      param = x_128;
+      int const x_129 = j_1;
+      param_1 = x_129;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_5);
+    }
+    {
+      int const x_131 = j_1;
+      j_1 = (x_131 + 1);
+    }
+  }
+  int const x_133 = i_1;
+  param_2 = (x_133 + 1);
+  int const x_135 = *(h);
+  param_3 = x_135;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_5);
+  int const x_137 = i_1;
+  return (x_137 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_6) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_140 = top;
+  int const x_141 = (x_140 + 1);
+  top = x_141;
+  int const x_142 = l_1;
+  stack.arr[x_141] = x_142;
+  int const x_144 = top;
+  int const x_145 = (x_144 + 1);
+  top = x_145;
+  int const x_146 = h_1;
+  stack.arr[x_145] = x_146;
+  while (true) {
+    int const x_152 = top;
+    if ((x_152 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_155 = top;
+    top = (x_155 - 1);
+    int const x_158 = stack.arr[x_155];
+    h_1 = x_158;
+    int const x_159 = top;
+    top = (x_159 - 1);
+    int const x_162 = stack.arr[x_159];
+    l_1 = x_162;
+    int const x_163 = l_1;
+    param_4 = x_163;
+    int const x_164 = h_1;
+    param_5 = x_164;
+    int const x_165 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_6);
+    p = x_165;
+    int const x_166 = p;
+    int const x_168 = l_1;
+    if (((x_166 - 1) > x_168)) {
+      int const x_172 = top;
+      int const x_173 = (x_172 + 1);
+      top = x_173;
+      int const x_174 = l_1;
+      stack.arr[x_173] = x_174;
+      int const x_176 = top;
+      int const x_177 = (x_176 + 1);
+      top = x_177;
+      int const x_178 = p;
+      stack.arr[x_177] = (x_178 - 1);
+    }
+    int const x_181 = p;
+    int const x_183 = h_1;
+    if (((x_181 + 1) < x_183)) {
+      int const x_187 = top;
+      int const x_188 = (x_187 + 1);
+      top = x_188;
+      int const x_189 = p;
+      stack.arr[x_188] = (x_189 + 1);
+      int const x_192 = top;
+      int const x_193 = (x_192 + 1);
+      top = x_193;
+      int const x_194 = h_1;
+      stack.arr[x_193] = x_194;
+    }
+  }
+  return;
+}
+
+void main_1(thread QuicksortObject* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  int i_2 = 0;
+  i_2 = 0;
+  while (true) {
+    int const x_64 = i_2;
+    if ((x_64 < 10)) {
+    } else {
+      break;
+    }
+    int const x_67 = i_2;
+    int const x_68 = i_2;
+    (*(tint_symbol_7)).numbers.arr[x_67] = (10 - x_68);
+    int const x_71 = i_2;
+    int const x_72 = i_2;
+    int const x_74 = (*(tint_symbol_7)).numbers.arr[x_72];
+    int const x_75 = i_2;
+    int const x_77 = (*(tint_symbol_7)).numbers.arr[x_75];
+    (*(tint_symbol_7)).numbers.arr[x_71] = (x_74 * x_77);
+    {
+      int const x_80 = i_2;
+      i_2 = (x_80 + 1);
+    }
+  }
+  quicksort_(tint_symbol_7);
+  int const x_84 = (*(tint_symbol_7)).numbers.arr[0];
+  int const x_86 = (*(tint_symbol_7)).numbers.arr[4];
+  if ((x_84 < x_86)) {
+    *(tint_symbol_8) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_8) = float4(0.0f, 1.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread QuicksortObject tint_symbol_9 = {};
+  thread float4 tint_symbol_10 = 0.0f;
+  main_1(&(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7a0c9e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,367 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 235
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_30 "x_30"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_30 NonWritable
+               OpDecorate %x_30 DescriptorSet 0
+               OpDecorate %x_30 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_30 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %46 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %106 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %114 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+     %int_10 = OpConstant %int 10
+      %int_4 = OpConstant %int 4
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %221 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %222 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %223 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %20
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %26 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %28
+         %30 = OpLoad %int %i
+         %33 = OpAccessChain %_ptr_Private_int %obj %uint_0 %30
+         %34 = OpLoad %int %33
+               OpStore %temp %34
+         %36 = OpLoad %int %i
+         %38 = OpLoad %int %j
+         %39 = OpAccessChain %_ptr_Private_int %obj %uint_0 %38
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Private_int %obj %uint_0 %36
+               OpStore %41 %40
+         %43 = OpLoad %int %j
+         %44 = OpLoad %int %temp
+         %45 = OpAccessChain %_ptr_Private_int %obj %uint_0 %43
+               OpStore %45 %44
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %46
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %50 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %28
+        %i_1 = OpVariable %_ptr_Function_int Function %28
+        %j_1 = OpVariable %_ptr_Function_int Function %28
+      %param = OpVariable %_ptr_Function_int Function %28
+    %param_1 = OpVariable %_ptr_Function_int Function %28
+    %param_2 = OpVariable %_ptr_Function_int Function %28
+    %param_3 = OpVariable %_ptr_Function_int Function %28
+         %59 = OpLoad %int %h
+         %60 = OpAccessChain %_ptr_Private_int %obj %uint_0 %59
+         %61 = OpLoad %int %60
+               OpStore %pivot %61
+         %63 = OpLoad %int %l
+         %65 = OpISub %int %63 %int_1
+               OpStore %i_1 %65
+         %67 = OpLoad %int %l
+               OpStore %j_1 %67
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpLoad %int %j_1
+         %74 = OpLoad %int %h
+         %75 = OpISub %int %74 %int_1
+         %76 = OpSLessThanEqual %bool %72 %75
+               OpSelectionMerge %78 None
+               OpBranchConditional %76 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %69
+         %78 = OpLabel
+         %81 = OpLoad %int %j_1
+         %82 = OpAccessChain %_ptr_Private_int %obj %uint_0 %81
+         %83 = OpLoad %int %82
+         %84 = OpLoad %int %pivot
+         %85 = OpSLessThanEqual %bool %83 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpLoad %int %i_1
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %i_1 %89
+         %90 = OpLoad %int %i_1
+               OpStore %param %90
+         %91 = OpLoad %int %j_1
+               OpStore %param_1 %91
+         %92 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+         %95 = OpLoad %int %j_1
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %j_1 %96
+               OpBranch %68
+         %69 = OpLabel
+         %97 = OpLoad %int %i_1
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %param_2 %98
+        %100 = OpLoad %int %h
+               OpStore %param_3 %100
+        %101 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %104 = OpLoad %int %i_1
+        %105 = OpIAdd %int %104 %int_1
+               OpReturnValue %105
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %106
+        %108 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %28
+        %h_1 = OpVariable %_ptr_Function_int Function %28
+        %top = OpVariable %_ptr_Function_int Function %28
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %114
+          %p = OpVariable %_ptr_Function_int Function %28
+    %param_4 = OpVariable %_ptr_Function_int Function %28
+    %param_5 = OpVariable %_ptr_Function_int Function %28
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %121 = OpLoad %int %top
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %top %122
+        %123 = OpLoad %int %l_1
+        %124 = OpAccessChain %_ptr_Function_int %stack %122
+               OpStore %124 %123
+        %125 = OpLoad %int %top
+        %126 = OpIAdd %int %125 %int_1
+               OpStore %top %126
+        %127 = OpLoad %int %h_1
+        %128 = OpAccessChain %_ptr_Function_int %stack %126
+               OpStore %128 %127
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %top
+        %134 = OpSGreaterThanEqual %bool %133 %int_0
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %130
+        %135 = OpLabel
+        %138 = OpLoad %int %top
+        %139 = OpISub %int %138 %int_1
+               OpStore %top %139
+        %140 = OpAccessChain %_ptr_Function_int %stack %138
+        %141 = OpLoad %int %140
+               OpStore %h_1 %141
+        %142 = OpLoad %int %top
+        %143 = OpISub %int %142 %int_1
+               OpStore %top %143
+        %144 = OpAccessChain %_ptr_Function_int %stack %142
+        %145 = OpLoad %int %144
+               OpStore %l_1 %145
+        %146 = OpLoad %int %l_1
+               OpStore %param_4 %146
+        %147 = OpLoad %int %h_1
+               OpStore %param_5 %147
+        %148 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %148
+        %151 = OpLoad %int %p
+        %152 = OpLoad %int %l_1
+        %153 = OpISub %int %151 %int_1
+        %154 = OpSGreaterThan %bool %153 %152
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpLoad %int %top
+        %158 = OpIAdd %int %157 %int_1
+               OpStore %top %158
+        %159 = OpLoad %int %l_1
+        %160 = OpAccessChain %_ptr_Function_int %stack %158
+               OpStore %160 %159
+        %161 = OpLoad %int %top
+        %162 = OpIAdd %int %161 %int_1
+               OpStore %top %162
+        %163 = OpLoad %int %p
+        %164 = OpAccessChain %_ptr_Function_int %stack %162
+        %165 = OpISub %int %163 %int_1
+               OpStore %164 %165
+               OpBranch %155
+        %155 = OpLabel
+        %166 = OpLoad %int %p
+        %167 = OpLoad %int %h_1
+        %168 = OpIAdd %int %166 %int_1
+        %169 = OpSLessThan %bool %168 %167
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %170
+        %171 = OpLabel
+        %172 = OpLoad %int %top
+        %173 = OpIAdd %int %172 %int_1
+               OpStore %top %173
+        %174 = OpLoad %int %p
+        %175 = OpAccessChain %_ptr_Function_int %stack %173
+        %176 = OpIAdd %int %174 %int_1
+               OpStore %175 %176
+        %177 = OpLoad %int %top
+        %178 = OpIAdd %int %177 %int_1
+               OpStore %top %178
+        %179 = OpLoad %int %h_1
+        %180 = OpAccessChain %_ptr_Function_int %stack %178
+               OpStore %180 %179
+               OpBranch %170
+        %170 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpBranch %129
+        %130 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %106
+        %182 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %28
+               OpStore %i_2 %int_0
+               OpBranch %184
+        %184 = OpLabel
+               OpLoopMerge %185 %186 None
+               OpBranch %187
+        %187 = OpLabel
+        %188 = OpLoad %int %i_2
+        %190 = OpSLessThan %bool %188 %int_10
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %193
+        %192 = OpLabel
+               OpBranch %191
+        %193 = OpLabel
+               OpBranch %185
+        %191 = OpLabel
+        %194 = OpLoad %int %i_2
+        %195 = OpLoad %int %i_2
+        %196 = OpAccessChain %_ptr_Private_int %obj %uint_0 %194
+        %197 = OpISub %int %int_10 %195
+               OpStore %196 %197
+        %198 = OpLoad %int %i_2
+        %199 = OpLoad %int %i_2
+        %200 = OpAccessChain %_ptr_Private_int %obj %uint_0 %199
+        %201 = OpLoad %int %200
+        %202 = OpLoad %int %i_2
+        %203 = OpAccessChain %_ptr_Private_int %obj %uint_0 %202
+        %204 = OpLoad %int %203
+        %205 = OpAccessChain %_ptr_Private_int %obj %uint_0 %198
+        %206 = OpIMul %int %201 %204
+               OpStore %205 %206
+               OpBranch %186
+        %186 = OpLabel
+        %207 = OpLoad %int %i_2
+        %208 = OpIAdd %int %207 %int_1
+               OpStore %i_2 %208
+               OpBranch %184
+        %185 = OpLabel
+        %209 = OpFunctionCall %void %quicksort_
+        %210 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %211 = OpLoad %int %210
+        %213 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %214 = OpLoad %int %213
+        %215 = OpSLessThan %bool %211 %214
+               OpSelectionMerge %216 None
+               OpBranchConditional %215 %217 %218
+        %217 = OpLabel
+               OpStore %x_GLF_color %221
+               OpBranch %216
+        %218 = OpLabel
+               OpStore %x_GLF_color %222
+               OpBranch %216
+        %216 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %223
+%tint_symbol = OpFunctionParameter %main_out
+        %227 = OpLabel
+        %228 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %228
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %106
+        %230 = OpLabel
+        %231 = OpFunctionCall %void %main_1
+        %233 = OpLoad %v4float %x_GLF_color
+        %234 = OpCompositeConstruct %main_out %233
+        %232 = OpFunctionCall %void %tint_symbol_2 %234
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..03cd2ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,197 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_30 : buf0;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_92 : i32 = *(i);
+  let x_94 : i32 = obj.numbers[x_92];
+  temp = x_94;
+  let x_95 : i32 = *(i);
+  let x_96 : i32 = *(j);
+  let x_98 : i32 = obj.numbers[x_96];
+  obj.numbers[x_95] = x_98;
+  let x_100 : i32 = *(j);
+  let x_101 : i32 = temp;
+  obj.numbers[x_100] = x_101;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_104 : i32 = *(h);
+  let x_106 : i32 = obj.numbers[x_104];
+  pivot = x_106;
+  let x_107 : i32 = *(l);
+  i_1 = (x_107 - 1);
+  let x_109 : i32 = *(l);
+  j_1 = x_109;
+  loop {
+    let x_114 : i32 = j_1;
+    let x_115 : i32 = *(h);
+    if ((x_114 <= (x_115 - 1))) {
+    } else {
+      break;
+    }
+    let x_119 : i32 = j_1;
+    let x_121 : i32 = obj.numbers[x_119];
+    let x_122 : i32 = pivot;
+    if ((x_121 <= x_122)) {
+      let x_126 : i32 = i_1;
+      i_1 = (x_126 + 1);
+      let x_128 : i32 = i_1;
+      param = x_128;
+      let x_129 : i32 = j_1;
+      param_1 = x_129;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_131 : i32 = j_1;
+      j_1 = (x_131 + 1);
+    }
+  }
+  let x_133 : i32 = i_1;
+  param_2 = (x_133 + 1);
+  let x_135 : i32 = *(h);
+  param_3 = x_135;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_137 : i32 = i_1;
+  return (x_137 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_140 : i32 = top;
+  let x_141 : i32 = (x_140 + 1);
+  top = x_141;
+  let x_142 : i32 = l_1;
+  stack[x_141] = x_142;
+  let x_144 : i32 = top;
+  let x_145 : i32 = (x_144 + 1);
+  top = x_145;
+  let x_146 : i32 = h_1;
+  stack[x_145] = x_146;
+  loop {
+    let x_152 : i32 = top;
+    if ((x_152 >= 0)) {
+    } else {
+      break;
+    }
+    let x_155 : i32 = top;
+    top = (x_155 - 1);
+    let x_158 : i32 = stack[x_155];
+    h_1 = x_158;
+    let x_159 : i32 = top;
+    top = (x_159 - 1);
+    let x_162 : i32 = stack[x_159];
+    l_1 = x_162;
+    let x_163 : i32 = l_1;
+    param_4 = x_163;
+    let x_164 : i32 = h_1;
+    param_5 = x_164;
+    let x_165 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_165;
+    let x_166 : i32 = p;
+    let x_168 : i32 = l_1;
+    if (((x_166 - 1) > x_168)) {
+      let x_172 : i32 = top;
+      let x_173 : i32 = (x_172 + 1);
+      top = x_173;
+      let x_174 : i32 = l_1;
+      stack[x_173] = x_174;
+      let x_176 : i32 = top;
+      let x_177 : i32 = (x_176 + 1);
+      top = x_177;
+      let x_178 : i32 = p;
+      stack[x_177] = (x_178 - 1);
+    }
+    let x_181 : i32 = p;
+    let x_183 : i32 = h_1;
+    if (((x_181 + 1) < x_183)) {
+      let x_187 : i32 = top;
+      let x_188 : i32 = (x_187 + 1);
+      top = x_188;
+      let x_189 : i32 = p;
+      stack[x_188] = (x_189 + 1);
+      let x_192 : i32 = top;
+      let x_193 : i32 = (x_192 + 1);
+      top = x_193;
+      let x_194 : i32 = h_1;
+      stack[x_193] = x_194;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  i_2 = 0;
+  loop {
+    let x_64 : i32 = i_2;
+    if ((x_64 < 10)) {
+    } else {
+      break;
+    }
+    let x_67 : i32 = i_2;
+    let x_68 : i32 = i_2;
+    obj.numbers[x_67] = (10 - x_68);
+    let x_71 : i32 = i_2;
+    let x_72 : i32 = i_2;
+    let x_74 : i32 = obj.numbers[x_72];
+    let x_75 : i32 = i_2;
+    let x_77 : i32 = obj.numbers[x_75];
+    obj.numbers[x_71] = (x_74 * x_77);
+
+    continuing {
+      let x_80 : i32 = i_2;
+      i_2 = (x_80 + 1);
+    }
+  }
+  quicksort_();
+  let x_84 : i32 = obj.numbers[0];
+  let x_86 : i32 = obj.numbers[4];
+  if ((x_84 < x_86)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm
new file mode 100644
index 0000000..13024f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm
@@ -0,0 +1,188 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %x "x"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %15 = OpTypeFunction %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_5 = OpConstant %float 5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %float_0 = OpConstant %float 0
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+    %uint_17 = OpConstant %uint 17
+%_arr_v2float_uint_17 = OpTypeArray %v2float %uint_17
+%_ptr_Function__arr_v2float_uint_17 = OpTypePointer Function %_arr_v2float_uint_17
+%_ptr_Function_float = OpTypePointer Function %float
+     %int_15 = OpConstant %int 15
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %40 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %41 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %13
+         %43 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+       %data = OpVariable %_ptr_Function__arr_v2float_uint_17 Function
+               OpStore %i %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpConvertFToS %int %50
+         %52 = OpIAdd %int %int_4 %51
+         %53 = OpSLessThan %bool %48 %52
+               OpBranchConditional %53 %54 %45
+         %54 = OpLabel
+         %55 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %56 = OpLoad %float %55
+         %57 = OpFOrdGreaterThanEqual %bool %56 %float_0
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpStore %j %int_0
+               OpBranch %60
+         %60 = OpLabel
+               OpLoopMerge %61 %62 None
+               OpBranch %63
+         %63 = OpLabel
+         %64 = OpLoad %int %j
+         %65 = OpSLessThan %bool %64 %int_4
+               OpBranchConditional %65 %66 %61
+         %66 = OpLabel
+         %67 = OpLoad %int %j
+         %68 = OpIMul %int %int_4 %67
+         %69 = OpLoad %int %i
+         %70 = OpIAdd %int %68 %69
+         %71 = OpFunctionCall %float %func_
+         %72 = OpAccessChain %_ptr_Function_float %data %70 %uint_0
+               OpStore %72 %71
+         %73 = OpAccessChain %_ptr_Function_float %data %int_0 %uint_0
+         %74 = OpLoad %float %73
+         %75 = OpFOrdEqual %bool %74 %float_5
+         %76 = OpLogicalNot %bool %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_float %data %int_15 %uint_0
+         %80 = OpLoad %float %79
+         %81 = OpFOrdEqual %bool %80 %float_5
+               OpBranch %77
+         %77 = OpLabel
+         %82 = OpPhi %bool %75 %66 %81 %78
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpStore %_GLF_color %40
+               OpBranch %83
+         %85 = OpLabel
+               OpStore %_GLF_color %41
+               OpBranch %83
+         %83 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpFOrdGreaterThan %bool %87 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+               OpReturn
+         %91 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+         %93 = OpLoad %int %j
+         %94 = OpIAdd %int %93 %int_1
+               OpStore %j %94
+               OpBranch %60
+         %61 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %95 = OpLoad %int %i
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %i %96
+               OpBranch %44
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %float None %15
+         %97 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function
+         %98 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpFOrdLessThan %bool %99 %float_1
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpReturnValue %float_5
+        %101 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %106 = OpLoad %float %105
+        %107 = OpFOrdGreaterThan %bool %104 %106
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %108
+        %109 = OpLabel
+               OpReturnValue %float_1
+        %108 = OpLabel
+        %110 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %111 = OpLoad %float %110
+        %112 = OpConvertFToS %int %111
+               OpStore %x %112
+        %113 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %114 = OpLoad %float %113
+        %115 = OpExtInst %float %1 FClamp %114 %float_0 %float_1
+        %116 = OpConvertFToS %int %115
+        %117 = OpIMul %int %116 %int_3
+        %118 = OpLoad %int %x
+        %119 = OpIAdd %int %118 %117
+               OpStore %x %119
+        %120 = OpLoad %int %x
+        %121 = OpConvertSToF %float %120
+        %122 = OpFAdd %float %float_5 %121
+               OpReturnValue %122
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b29e01e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,98 @@
+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 float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  int x = 0;
+  const float x_99 = gl_FragCoord.x;
+  if ((x_99 < 1.0f)) {
+    return 5.0f;
+  }
+  const float x_104 = asfloat(x_7[0].x);
+  const float x_106 = asfloat(x_7[0].y);
+  if ((x_104 > x_106)) {
+    return 1.0f;
+  }
+  const float x_111 = asfloat(x_7[0].x);
+  x = int(x_111);
+  const float x_114 = asfloat(x_7[0].x);
+  x = (x + (int(clamp(x_114, 0.0f, 1.0f)) * 3));
+  return (5.0f + float(x));
+}
+
+void main_1() {
+  int i = 0;
+  int j = 0;
+  float2 data[17] = (float2[17])0;
+  i = 0;
+  while (true) {
+    const int x_48 = i;
+    const float x_50 = asfloat(x_7[0].x);
+    if ((x_48 < (4 + int(x_50)))) {
+    } else {
+      break;
+    }
+    const float x_56 = gl_FragCoord.x;
+    if ((x_56 >= 0.0f)) {
+      j = 0;
+      while (true) {
+        bool x_81 = false;
+        bool x_82_phi = false;
+        if ((j < 4)) {
+        } else {
+          break;
+        }
+        const int x_67 = j;
+        const int x_69 = i;
+        const float x_71 = func_();
+        data[((4 * x_67) + x_69)].x = x_71;
+        const float x_74 = data[0].x;
+        const bool x_75 = (x_74 == 5.0f);
+        x_82_phi = x_75;
+        if (!(x_75)) {
+          const float x_80 = data[15].x;
+          x_81 = (x_80 == 5.0f);
+          x_82_phi = x_81;
+        }
+        if (x_82_phi) {
+          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);
+        }
+        const float x_87 = asfloat(x_7[0].x);
+        const float x_89 = asfloat(x_7[0].y);
+        if ((x_87 > x_89)) {
+          return;
+        }
+        {
+          j = (j + 1);
+        }
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4eedfbc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.msl
@@ -0,0 +1,106 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float2 arr[17];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  int x = 0;
+  float const x_99 = (*(tint_symbol_5)).x;
+  if ((x_99 < 1.0f)) {
+    return 5.0f;
+  }
+  float const x_104 = x_7.injectionSwitch.x;
+  float const x_106 = x_7.injectionSwitch.y;
+  if ((x_104 > x_106)) {
+    return 1.0f;
+  }
+  float const x_111 = x_7.injectionSwitch.x;
+  x = int(x_111);
+  float const x_114 = x_7.injectionSwitch.x;
+  int const x_118 = x;
+  x = (x_118 + (int(clamp(x_114, 0.0f, 1.0f)) * 3));
+  int const x_120 = x;
+  return (5.0f + float(x_120));
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int i = 0;
+  int j = 0;
+  tint_array_wrapper data = {};
+  i = 0;
+  while (true) {
+    int const x_48 = i;
+    float const x_50 = x_7.injectionSwitch.x;
+    if ((x_48 < (4 + int(x_50)))) {
+    } else {
+      break;
+    }
+    float const x_56 = (*(tint_symbol_6)).x;
+    if ((x_56 >= 0.0f)) {
+      j = 0;
+      while (true) {
+        bool x_81 = false;
+        bool x_82_phi = false;
+        int const x_64 = j;
+        if ((x_64 < 4)) {
+        } else {
+          break;
+        }
+        int const x_67 = j;
+        int const x_69 = i;
+        float const x_71 = func_(x_7, tint_symbol_6);
+        data.arr[((4 * x_67) + x_69)].x = x_71;
+        float const x_74 = data.arr[0].x;
+        bool const x_75 = (x_74 == 5.0f);
+        x_82_phi = x_75;
+        if (!(x_75)) {
+          float const x_80 = data.arr[15].x;
+          x_81 = (x_80 == 5.0f);
+          x_82_phi = x_81;
+        }
+        bool const x_82 = x_82_phi;
+        if (x_82) {
+          *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        } else {
+          *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        }
+        float const x_87 = x_7.injectionSwitch.x;
+        float const x_89 = x_7.injectionSwitch.y;
+        if ((x_87 > x_89)) {
+          return;
+        }
+        {
+          int const x_93 = j;
+          j = (x_93 + 1);
+        }
+      }
+    }
+    {
+      int const x_95 = i;
+      i = (x_95 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..068c255
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,247 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 151
+; Schema: 0
+               OpCapability Shader
+         %50 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %x_81 "x_81"
+               OpName %x_82_phi "x_82_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v2float_uint_17 ArrayStride 8
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %15 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_5 = OpConstant %float 5
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+      %int_3 = OpConstant %int 3
+       %void = OpTypeVoid
+         %58 = OpTypeFunction %void
+    %uint_17 = OpConstant %uint 17
+%_arr_v2float_uint_17 = OpTypeArray %v2float %uint_17
+%_ptr_Function__arr_v2float_uint_17 = OpTypePointer Function %_arr_v2float_uint_17
+         %68 = OpConstantNull %_arr_v2float_uint_17
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %95 = OpConstantNull %bool
+%_ptr_Function_float = OpTypePointer Function %float
+     %int_15 = OpConstant %int 15
+        %124 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %125 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %138 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %15
+         %17 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpFOrdLessThan %bool %26 %float_1
+               OpSelectionMerge %30 None
+               OpBranchConditional %28 %31 %30
+         %31 = OpLabel
+               OpReturnValue %float_5
+         %30 = OpLabel
+         %34 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %35 = OpLoad %float %34
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThan %bool %35 %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+               OpReturnValue %float_1
+         %40 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %43 = OpLoad %float %42
+         %44 = OpConvertFToS %int %43
+               OpStore %x %44
+         %45 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %46 = OpLoad %float %45
+         %47 = OpLoad %int %x
+         %49 = OpExtInst %float %50 NClamp %46 %float_0 %float_1
+         %48 = OpConvertFToS %int %49
+         %53 = OpIMul %int %48 %int_3
+         %54 = OpIAdd %int %47 %53
+               OpStore %x %54
+         %55 = OpLoad %int %x
+         %56 = OpConvertSToF %float %55
+         %57 = OpFAdd %float %float_5 %56
+               OpReturnValue %57
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %58
+         %61 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %j = OpVariable %_ptr_Function_int Function %21
+       %data = OpVariable %_ptr_Function__arr_v2float_uint_17 Function %68
+       %x_81 = OpVariable %_ptr_Function_bool Function %95
+   %x_82_phi = OpVariable %_ptr_Function_bool Function %95
+               OpStore %i %int_0
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %76 = OpLoad %float %75
+         %78 = OpConvertFToS %int %76
+         %79 = OpIAdd %int %int_4 %78
+         %80 = OpSLessThan %bool %74 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %71
+         %81 = OpLabel
+         %84 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %85 = OpLoad %float %84
+         %86 = OpFOrdGreaterThanEqual %bool %85 %float_0
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+               OpStore %j %int_0
+               OpBranch %89
+         %89 = OpLabel
+               OpLoopMerge %90 %91 None
+               OpBranch %92
+         %92 = OpLabel
+         %97 = OpLoad %int %j
+         %98 = OpSLessThan %bool %97 %int_4
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %90
+         %99 = OpLabel
+        %102 = OpLoad %int %j
+        %103 = OpLoad %int %i
+        %104 = OpFunctionCall %float %func_
+        %105 = OpIMul %int %int_4 %102
+        %106 = OpIAdd %int %105 %103
+        %108 = OpAccessChain %_ptr_Function_float %data %106 %uint_0
+               OpStore %108 %104
+        %109 = OpAccessChain %_ptr_Function_float %data %int_0 %uint_0
+        %110 = OpLoad %float %109
+        %111 = OpFOrdEqual %bool %110 %float_5
+               OpStore %x_82_phi %111
+        %112 = OpLogicalNot %bool %111
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+        %116 = OpAccessChain %_ptr_Function_float %data %int_15 %uint_0
+        %117 = OpLoad %float %116
+        %118 = OpFOrdEqual %bool %117 %float_5
+               OpStore %x_81 %118
+        %119 = OpLoad %bool %x_81
+               OpStore %x_82_phi %119
+               OpBranch %113
+        %113 = OpLabel
+        %120 = OpLoad %bool %x_82_phi
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpStore %x_GLF_color %124
+               OpBranch %121
+        %123 = OpLabel
+               OpStore %x_GLF_color %125
+               OpBranch %121
+        %121 = OpLabel
+        %126 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+        %127 = OpLoad %float %126
+        %128 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+        %129 = OpLoad %float %128
+        %130 = OpFOrdGreaterThan %bool %127 %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+               OpReturn
+        %131 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+        %133 = OpLoad %int %j
+        %135 = OpIAdd %int %133 %int_1
+               OpStore %j %135
+               OpBranch %89
+         %90 = OpLabel
+               OpBranch %87
+         %87 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+        %136 = OpLoad %int %i
+        %137 = OpIAdd %int %136 %int_1
+               OpStore %i %137
+               OpBranch %70
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %138
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %142 = OpLabel
+        %143 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %143
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %58
+        %145 = OpLabel
+        %146 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %146
+        %147 = OpFunctionCall %void %main_1
+        %149 = OpLoad %v4float %x_GLF_color
+        %150 = OpCompositeConstruct %main_out %149
+        %148 = OpFunctionCall %void %tint_symbol_3 %150
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..430c6db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,104 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var x : i32;
+  let x_99 : f32 = gl_FragCoord.x;
+  if ((x_99 < 1.0)) {
+    return 5.0;
+  }
+  let x_104 : f32 = x_7.injectionSwitch.x;
+  let x_106 : f32 = x_7.injectionSwitch.y;
+  if ((x_104 > x_106)) {
+    return 1.0;
+  }
+  let x_111 : f32 = x_7.injectionSwitch.x;
+  x = i32(x_111);
+  let x_114 : f32 = x_7.injectionSwitch.x;
+  let x_118 : i32 = x;
+  x = (x_118 + (i32(clamp(x_114, 0.0, 1.0)) * 3));
+  let x_120 : i32 = x;
+  return (5.0 + f32(x_120));
+}
+
+fn main_1() {
+  var i : i32;
+  var j : i32;
+  var data : array<vec2<f32>, 17>;
+  i = 0;
+  loop {
+    let x_48 : i32 = i;
+    let x_50 : f32 = x_7.injectionSwitch.x;
+    if ((x_48 < (4 + i32(x_50)))) {
+    } else {
+      break;
+    }
+    let x_56 : f32 = gl_FragCoord.x;
+    if ((x_56 >= 0.0)) {
+      j = 0;
+      loop {
+        var x_81 : bool;
+        var x_82_phi : bool;
+        let x_64 : i32 = j;
+        if ((x_64 < 4)) {
+        } else {
+          break;
+        }
+        let x_67 : i32 = j;
+        let x_69 : i32 = i;
+        let x_71 : f32 = func_();
+        data[((4 * x_67) + x_69)].x = x_71;
+        let x_74 : f32 = data[0].x;
+        let x_75 : bool = (x_74 == 5.0);
+        x_82_phi = x_75;
+        if (!(x_75)) {
+          let x_80 : f32 = data[15].x;
+          x_81 = (x_80 == 5.0);
+          x_82_phi = x_81;
+        }
+        let x_82 : bool = x_82_phi;
+        if (x_82) {
+          x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        } else {
+          x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        }
+        let x_87 : f32 = x_7.injectionSwitch.x;
+        let x_89 : f32 = x_7.injectionSwitch.y;
+        if ((x_87 > x_89)) {
+          return;
+        }
+
+        continuing {
+          let x_93 : i32 = j;
+          j = (x_93 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_95 : i32 = i;
+      i = (x_95 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
new file mode 100644
index 0000000..430c6db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
@@ -0,0 +1,104 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var x : i32;
+  let x_99 : f32 = gl_FragCoord.x;
+  if ((x_99 < 1.0)) {
+    return 5.0;
+  }
+  let x_104 : f32 = x_7.injectionSwitch.x;
+  let x_106 : f32 = x_7.injectionSwitch.y;
+  if ((x_104 > x_106)) {
+    return 1.0;
+  }
+  let x_111 : f32 = x_7.injectionSwitch.x;
+  x = i32(x_111);
+  let x_114 : f32 = x_7.injectionSwitch.x;
+  let x_118 : i32 = x;
+  x = (x_118 + (i32(clamp(x_114, 0.0, 1.0)) * 3));
+  let x_120 : i32 = x;
+  return (5.0 + f32(x_120));
+}
+
+fn main_1() {
+  var i : i32;
+  var j : i32;
+  var data : array<vec2<f32>, 17>;
+  i = 0;
+  loop {
+    let x_48 : i32 = i;
+    let x_50 : f32 = x_7.injectionSwitch.x;
+    if ((x_48 < (4 + i32(x_50)))) {
+    } else {
+      break;
+    }
+    let x_56 : f32 = gl_FragCoord.x;
+    if ((x_56 >= 0.0)) {
+      j = 0;
+      loop {
+        var x_81 : bool;
+        var x_82_phi : bool;
+        let x_64 : i32 = j;
+        if ((x_64 < 4)) {
+        } else {
+          break;
+        }
+        let x_67 : i32 = j;
+        let x_69 : i32 = i;
+        let x_71 : f32 = func_();
+        data[((4 * x_67) + x_69)].x = x_71;
+        let x_74 : f32 = data[0].x;
+        let x_75 : bool = (x_74 == 5.0);
+        x_82_phi = x_75;
+        if (!(x_75)) {
+          let x_80 : f32 = data[15].x;
+          x_81 = (x_80 == 5.0);
+          x_82_phi = x_81;
+        }
+        let x_82 : bool = x_82_phi;
+        if (x_82) {
+          x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        } else {
+          x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        }
+        let x_87 : f32 = x_7.injectionSwitch.x;
+        let x_89 : f32 = x_7.injectionSwitch.y;
+        if ((x_87 > x_89)) {
+          return;
+        }
+
+        continuing {
+          let x_93 : i32 = j;
+          j = (x_93 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_95 : i32 = i;
+      i = (x_95 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b29e01e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,98 @@
+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 float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  int x = 0;
+  const float x_99 = gl_FragCoord.x;
+  if ((x_99 < 1.0f)) {
+    return 5.0f;
+  }
+  const float x_104 = asfloat(x_7[0].x);
+  const float x_106 = asfloat(x_7[0].y);
+  if ((x_104 > x_106)) {
+    return 1.0f;
+  }
+  const float x_111 = asfloat(x_7[0].x);
+  x = int(x_111);
+  const float x_114 = asfloat(x_7[0].x);
+  x = (x + (int(clamp(x_114, 0.0f, 1.0f)) * 3));
+  return (5.0f + float(x));
+}
+
+void main_1() {
+  int i = 0;
+  int j = 0;
+  float2 data[17] = (float2[17])0;
+  i = 0;
+  while (true) {
+    const int x_48 = i;
+    const float x_50 = asfloat(x_7[0].x);
+    if ((x_48 < (4 + int(x_50)))) {
+    } else {
+      break;
+    }
+    const float x_56 = gl_FragCoord.x;
+    if ((x_56 >= 0.0f)) {
+      j = 0;
+      while (true) {
+        bool x_81 = false;
+        bool x_82_phi = false;
+        if ((j < 4)) {
+        } else {
+          break;
+        }
+        const int x_67 = j;
+        const int x_69 = i;
+        const float x_71 = func_();
+        data[((4 * x_67) + x_69)].x = x_71;
+        const float x_74 = data[0].x;
+        const bool x_75 = (x_74 == 5.0f);
+        x_82_phi = x_75;
+        if (!(x_75)) {
+          const float x_80 = data[15].x;
+          x_81 = (x_80 == 5.0f);
+          x_82_phi = x_81;
+        }
+        if (x_82_phi) {
+          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);
+        }
+        const float x_87 = asfloat(x_7[0].x);
+        const float x_89 = asfloat(x_7[0].y);
+        if ((x_87 > x_89)) {
+          return;
+        }
+        {
+          j = (j + 1);
+        }
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4eedfbc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.msl
@@ -0,0 +1,106 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float2 arr[17];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  int x = 0;
+  float const x_99 = (*(tint_symbol_5)).x;
+  if ((x_99 < 1.0f)) {
+    return 5.0f;
+  }
+  float const x_104 = x_7.injectionSwitch.x;
+  float const x_106 = x_7.injectionSwitch.y;
+  if ((x_104 > x_106)) {
+    return 1.0f;
+  }
+  float const x_111 = x_7.injectionSwitch.x;
+  x = int(x_111);
+  float const x_114 = x_7.injectionSwitch.x;
+  int const x_118 = x;
+  x = (x_118 + (int(clamp(x_114, 0.0f, 1.0f)) * 3));
+  int const x_120 = x;
+  return (5.0f + float(x_120));
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int i = 0;
+  int j = 0;
+  tint_array_wrapper data = {};
+  i = 0;
+  while (true) {
+    int const x_48 = i;
+    float const x_50 = x_7.injectionSwitch.x;
+    if ((x_48 < (4 + int(x_50)))) {
+    } else {
+      break;
+    }
+    float const x_56 = (*(tint_symbol_6)).x;
+    if ((x_56 >= 0.0f)) {
+      j = 0;
+      while (true) {
+        bool x_81 = false;
+        bool x_82_phi = false;
+        int const x_64 = j;
+        if ((x_64 < 4)) {
+        } else {
+          break;
+        }
+        int const x_67 = j;
+        int const x_69 = i;
+        float const x_71 = func_(x_7, tint_symbol_6);
+        data.arr[((4 * x_67) + x_69)].x = x_71;
+        float const x_74 = data.arr[0].x;
+        bool const x_75 = (x_74 == 5.0f);
+        x_82_phi = x_75;
+        if (!(x_75)) {
+          float const x_80 = data.arr[15].x;
+          x_81 = (x_80 == 5.0f);
+          x_82_phi = x_81;
+        }
+        bool const x_82 = x_82_phi;
+        if (x_82) {
+          *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        } else {
+          *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        }
+        float const x_87 = x_7.injectionSwitch.x;
+        float const x_89 = x_7.injectionSwitch.y;
+        if ((x_87 > x_89)) {
+          return;
+        }
+        {
+          int const x_93 = j;
+          j = (x_93 + 1);
+        }
+      }
+    }
+    {
+      int const x_95 = i;
+      i = (x_95 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..068c255
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,247 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 151
+; Schema: 0
+               OpCapability Shader
+         %50 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %x_81 "x_81"
+               OpName %x_82_phi "x_82_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v2float_uint_17 ArrayStride 8
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %15 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_5 = OpConstant %float 5
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+      %int_3 = OpConstant %int 3
+       %void = OpTypeVoid
+         %58 = OpTypeFunction %void
+    %uint_17 = OpConstant %uint 17
+%_arr_v2float_uint_17 = OpTypeArray %v2float %uint_17
+%_ptr_Function__arr_v2float_uint_17 = OpTypePointer Function %_arr_v2float_uint_17
+         %68 = OpConstantNull %_arr_v2float_uint_17
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %95 = OpConstantNull %bool
+%_ptr_Function_float = OpTypePointer Function %float
+     %int_15 = OpConstant %int 15
+        %124 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %125 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %138 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %15
+         %17 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpFOrdLessThan %bool %26 %float_1
+               OpSelectionMerge %30 None
+               OpBranchConditional %28 %31 %30
+         %31 = OpLabel
+               OpReturnValue %float_5
+         %30 = OpLabel
+         %34 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %35 = OpLoad %float %34
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThan %bool %35 %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+               OpReturnValue %float_1
+         %40 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %43 = OpLoad %float %42
+         %44 = OpConvertFToS %int %43
+               OpStore %x %44
+         %45 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %46 = OpLoad %float %45
+         %47 = OpLoad %int %x
+         %49 = OpExtInst %float %50 NClamp %46 %float_0 %float_1
+         %48 = OpConvertFToS %int %49
+         %53 = OpIMul %int %48 %int_3
+         %54 = OpIAdd %int %47 %53
+               OpStore %x %54
+         %55 = OpLoad %int %x
+         %56 = OpConvertSToF %float %55
+         %57 = OpFAdd %float %float_5 %56
+               OpReturnValue %57
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %58
+         %61 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %j = OpVariable %_ptr_Function_int Function %21
+       %data = OpVariable %_ptr_Function__arr_v2float_uint_17 Function %68
+       %x_81 = OpVariable %_ptr_Function_bool Function %95
+   %x_82_phi = OpVariable %_ptr_Function_bool Function %95
+               OpStore %i %int_0
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %76 = OpLoad %float %75
+         %78 = OpConvertFToS %int %76
+         %79 = OpIAdd %int %int_4 %78
+         %80 = OpSLessThan %bool %74 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %71
+         %81 = OpLabel
+         %84 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %85 = OpLoad %float %84
+         %86 = OpFOrdGreaterThanEqual %bool %85 %float_0
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+               OpStore %j %int_0
+               OpBranch %89
+         %89 = OpLabel
+               OpLoopMerge %90 %91 None
+               OpBranch %92
+         %92 = OpLabel
+         %97 = OpLoad %int %j
+         %98 = OpSLessThan %bool %97 %int_4
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %90
+         %99 = OpLabel
+        %102 = OpLoad %int %j
+        %103 = OpLoad %int %i
+        %104 = OpFunctionCall %float %func_
+        %105 = OpIMul %int %int_4 %102
+        %106 = OpIAdd %int %105 %103
+        %108 = OpAccessChain %_ptr_Function_float %data %106 %uint_0
+               OpStore %108 %104
+        %109 = OpAccessChain %_ptr_Function_float %data %int_0 %uint_0
+        %110 = OpLoad %float %109
+        %111 = OpFOrdEqual %bool %110 %float_5
+               OpStore %x_82_phi %111
+        %112 = OpLogicalNot %bool %111
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+        %116 = OpAccessChain %_ptr_Function_float %data %int_15 %uint_0
+        %117 = OpLoad %float %116
+        %118 = OpFOrdEqual %bool %117 %float_5
+               OpStore %x_81 %118
+        %119 = OpLoad %bool %x_81
+               OpStore %x_82_phi %119
+               OpBranch %113
+        %113 = OpLabel
+        %120 = OpLoad %bool %x_82_phi
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpStore %x_GLF_color %124
+               OpBranch %121
+        %123 = OpLabel
+               OpStore %x_GLF_color %125
+               OpBranch %121
+        %121 = OpLabel
+        %126 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+        %127 = OpLoad %float %126
+        %128 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+        %129 = OpLoad %float %128
+        %130 = OpFOrdGreaterThan %bool %127 %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+               OpReturn
+        %131 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+        %133 = OpLoad %int %j
+        %135 = OpIAdd %int %133 %int_1
+               OpStore %j %135
+               OpBranch %89
+         %90 = OpLabel
+               OpBranch %87
+         %87 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+        %136 = OpLoad %int %i
+        %137 = OpIAdd %int %136 %int_1
+               OpStore %i %137
+               OpBranch %70
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %138
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %142 = OpLabel
+        %143 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %143
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %58
+        %145 = OpLabel
+        %146 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %146
+        %147 = OpFunctionCall %void %main_1
+        %149 = OpLoad %v4float %x_GLF_color
+        %150 = OpCompositeConstruct %main_out %149
+        %148 = OpFunctionCall %void %tint_symbol_3 %150
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..430c6db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,104 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var x : i32;
+  let x_99 : f32 = gl_FragCoord.x;
+  if ((x_99 < 1.0)) {
+    return 5.0;
+  }
+  let x_104 : f32 = x_7.injectionSwitch.x;
+  let x_106 : f32 = x_7.injectionSwitch.y;
+  if ((x_104 > x_106)) {
+    return 1.0;
+  }
+  let x_111 : f32 = x_7.injectionSwitch.x;
+  x = i32(x_111);
+  let x_114 : f32 = x_7.injectionSwitch.x;
+  let x_118 : i32 = x;
+  x = (x_118 + (i32(clamp(x_114, 0.0, 1.0)) * 3));
+  let x_120 : i32 = x;
+  return (5.0 + f32(x_120));
+}
+
+fn main_1() {
+  var i : i32;
+  var j : i32;
+  var data : array<vec2<f32>, 17>;
+  i = 0;
+  loop {
+    let x_48 : i32 = i;
+    let x_50 : f32 = x_7.injectionSwitch.x;
+    if ((x_48 < (4 + i32(x_50)))) {
+    } else {
+      break;
+    }
+    let x_56 : f32 = gl_FragCoord.x;
+    if ((x_56 >= 0.0)) {
+      j = 0;
+      loop {
+        var x_81 : bool;
+        var x_82_phi : bool;
+        let x_64 : i32 = j;
+        if ((x_64 < 4)) {
+        } else {
+          break;
+        }
+        let x_67 : i32 = j;
+        let x_69 : i32 = i;
+        let x_71 : f32 = func_();
+        data[((4 * x_67) + x_69)].x = x_71;
+        let x_74 : f32 = data[0].x;
+        let x_75 : bool = (x_74 == 5.0);
+        x_82_phi = x_75;
+        if (!(x_75)) {
+          let x_80 : f32 = data[15].x;
+          x_81 = (x_80 == 5.0);
+          x_82_phi = x_81;
+        }
+        let x_82 : bool = x_82_phi;
+        if (x_82) {
+          x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        } else {
+          x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        }
+        let x_87 : f32 = x_7.injectionSwitch.x;
+        let x_89 : f32 = x_7.injectionSwitch.y;
+        if ((x_87 > x_89)) {
+          return;
+        }
+
+        continuing {
+          let x_93 : i32 = j;
+          j = (x_93 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_95 : i32 = i;
+      i = (x_95 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm
new file mode 100644
index 0000000..8f8a7d6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm
@@ -0,0 +1,194 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_i1_ "func(i1;"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %data "data"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %temp "temp"
+               OpName %i "i"
+               OpName %i_0 "i"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+         %19 = OpTypeFunction %float %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_int_uint_9 = OpTypeArray %int %uint_9
+%_ptr_Private__arr_int_uint_9 = OpTypePointer Private %_arr_int_uint_9
+       %data = OpVariable %_ptr_Private__arr_int_uint_9 Private
+      %int_5 = OpConstant %int 5
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_6 = OpConstant %int 6
+      %int_8 = OpConstant %int 8
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+     %uint_7 = OpConstant %uint 7
+%_arr_int_uint_7 = OpTypeArray %int %uint_7
+%_ptr_Private__arr_int_uint_7 = OpTypePointer Private %_arr_int_uint_7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_7 Private
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %15
+         %46 = OpLabel
+        %i_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+               OpStore %i_0 %int_0
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i_0
+         %52 = OpSLessThan %bool %51 %int_6
+               OpBranchConditional %52 %53 %48
+         %53 = OpLabel
+         %54 = OpLoad %int %i_0
+               OpStore %param %54
+         %55 = OpFunctionCall %float %func_i1_ %param
+         %56 = OpLoad %int %i_0
+               OpStore %param_0 %56
+         %57 = OpFunctionCall %float %func_i1_ %param_0
+         %58 = OpFOrdEqual %bool %57 %float_1
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpStore %_GLF_color %44
+               OpBranch %59
+         %61 = OpLabel
+               OpStore %_GLF_color %45
+               OpBranch %59
+         %59 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+         %62 = OpLoad %int %i_0
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %i_0 %63
+               OpBranch %47
+         %48 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_i1_ = OpFunction %float None %19
+          %a = OpFunctionParameter %_ptr_Function_int
+         %64 = OpLabel
+          %b = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %b %int_0
+         %65 = OpAccessChain %_ptr_Private_int %data %int_0
+               OpStore %65 %int_5
+         %66 = OpAccessChain %_ptr_Private_int %data %int_2
+               OpStore %66 %int_0
+         %67 = OpAccessChain %_ptr_Private_int %data %int_4
+               OpStore %67 %int_0
+         %68 = OpAccessChain %_ptr_Private_int %data %int_6
+               OpStore %68 %int_0
+         %69 = OpAccessChain %_ptr_Private_int %data %int_8
+               OpStore %69 %int_0
+         %70 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %71 = OpLoad %float %70
+         %72 = OpFOrdGreaterThanEqual %bool %71 %float_0
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+               OpBranch %75
+         %75 = OpLabel
+               OpLoopMerge %76 %77 None
+               OpBranch %78
+         %78 = OpLabel
+         %79 = OpLoad %int %b
+         %80 = OpLoad %int %a
+         %81 = OpSLessThanEqual %bool %79 %80
+               OpBranchConditional %81 %82 %76
+         %82 = OpLabel
+         %83 = OpLoad %int %b
+         %84 = OpSLessThanEqual %bool %83 %int_5
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpLoad %int %b
+         %88 = OpLoad %int %b
+         %89 = OpAccessChain %_ptr_Private_int %data %88
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Private_int %temp %87
+               OpStore %91 %90
+         %92 = OpLoad %int %b
+         %93 = OpIAdd %int %92 %int_2
+               OpStore %b %93
+               OpBranch %85
+         %85 = OpLabel
+               OpBranch %77
+         %77 = OpLabel
+               OpBranch %75
+         %76 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+               OpStore %i %int_0
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+         %98 = OpLoad %int %i
+         %99 = OpSLessThan %bool %98 %int_3
+               OpBranchConditional %99 %100 %95
+        %100 = OpLabel
+        %101 = OpLoad %int %i
+        %102 = OpAccessChain %_ptr_Private_int %temp %int_0
+        %103 = OpLoad %int %102
+        %104 = OpIAdd %int %103 %int_1
+        %105 = OpAccessChain %_ptr_Private_int %data %101
+               OpStore %105 %104
+               OpBranch %96
+         %96 = OpLabel
+        %106 = OpLoad %int %i
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %i %107
+               OpBranch %94
+         %95 = OpLabel
+        %108 = OpAccessChain %_ptr_Private_int %temp %int_0
+        %109 = OpLoad %int %108
+        %110 = OpIEqual %bool %109 %int_5
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %111
+        %112 = OpLabel
+        %113 = OpAccessChain %_ptr_Private_int %data %int_0
+        %114 = OpLoad %int %113
+        %115 = OpIEqual %bool %114 %int_6
+               OpBranch %111
+        %111 = OpLabel
+        %116 = OpPhi %bool %110 %95 %115 %112
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %119
+        %118 = OpLabel
+               OpReturnValue %float_1
+        %119 = OpLabel
+               OpReturnValue %float_0
+        %117 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b2bb718
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,96 @@
+static int data[9] = (int[9])0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int temp[7] = (int[7])0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_i1_(inout int a) {
+  int b = 0;
+  int i = 0;
+  bool x_115 = false;
+  bool x_116_phi = false;
+  b = 0;
+  data[0] = 5;
+  data[2] = 0;
+  data[4] = 0;
+  data[6] = 0;
+  data[8] = 0;
+  const float x_71 = gl_FragCoord.x;
+  if ((x_71 >= 0.0f)) {
+    while (true) {
+      const int x_79 = b;
+      const int x_80 = a;
+      if ((x_79 <= x_80)) {
+      } else {
+        break;
+      }
+      if ((b <= 5)) {
+        const int x_87 = b;
+        const int x_90 = data[b];
+        temp[x_87] = x_90;
+        b = (b + 2);
+      }
+    }
+  }
+  i = 0;
+  {
+    for(; (i < 3); i = (i + 1)) {
+      const int x_101 = i;
+      const int x_103 = temp[0];
+      data[x_101] = (x_103 + 1);
+    }
+  }
+  const int x_109 = temp[0];
+  const bool x_110 = (x_109 == 5);
+  x_116_phi = x_110;
+  if (x_110) {
+    const int x_114 = data[0];
+    x_115 = (x_114 == 6);
+    x_116_phi = x_115;
+  }
+  if (x_116_phi) {
+    return 1.0f;
+  } else {
+    return 0.0f;
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  int i_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  i_1 = 0;
+  {
+    for(; (i_1 < 6); i_1 = (i_1 + 1)) {
+      param = i_1;
+      const float x_55 = func_i1_(param);
+      param_1 = i_1;
+      const float x_57 = func_i1_(param_1);
+      if ((x_57 == 1.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);
+      }
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..106d158
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.msl
@@ -0,0 +1,121 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[9];
+};
+struct tint_array_wrapper_1 {
+  int arr[7];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_i1_(thread int* const a, thread tint_array_wrapper* const tint_symbol_5, thread float4* const tint_symbol_6, thread tint_array_wrapper_1* const tint_symbol_7) {
+  int b = 0;
+  int i = 0;
+  bool x_115 = false;
+  bool x_116_phi = false;
+  b = 0;
+  (*(tint_symbol_5)).arr[0] = 5;
+  (*(tint_symbol_5)).arr[2] = 0;
+  (*(tint_symbol_5)).arr[4] = 0;
+  (*(tint_symbol_5)).arr[6] = 0;
+  (*(tint_symbol_5)).arr[8] = 0;
+  float const x_71 = (*(tint_symbol_6)).x;
+  if ((x_71 >= 0.0f)) {
+    while (true) {
+      int const x_79 = b;
+      int const x_80 = *(a);
+      if ((x_79 <= x_80)) {
+      } else {
+        break;
+      }
+      int const x_83 = b;
+      if ((x_83 <= 5)) {
+        int const x_87 = b;
+        int const x_88 = b;
+        int const x_90 = (*(tint_symbol_5)).arr[x_88];
+        (*(tint_symbol_7)).arr[x_87] = x_90;
+        int const x_92 = b;
+        b = (x_92 + 2);
+      }
+    }
+  }
+  i = 0;
+  while (true) {
+    int const x_98 = i;
+    if ((x_98 < 3)) {
+    } else {
+      break;
+    }
+    int const x_101 = i;
+    int const x_103 = (*(tint_symbol_7)).arr[0];
+    (*(tint_symbol_5)).arr[x_101] = (x_103 + 1);
+    {
+      int const x_106 = i;
+      i = (x_106 + 1);
+    }
+  }
+  int const x_109 = (*(tint_symbol_7)).arr[0];
+  bool const x_110 = (x_109 == 5);
+  x_116_phi = x_110;
+  if (x_110) {
+    int const x_114 = (*(tint_symbol_5)).arr[0];
+    x_115 = (x_114 == 6);
+    x_116_phi = x_115;
+  }
+  bool const x_116 = x_116_phi;
+  if (x_116) {
+    return 1.0f;
+  } else {
+    return 0.0f;
+  }
+  return 0.0f;
+}
+
+void main_1(thread tint_array_wrapper* const tint_symbol_8, thread float4* const tint_symbol_9, thread tint_array_wrapper_1* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int i_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  i_1 = 0;
+  while (true) {
+    int const x_51 = i_1;
+    if ((x_51 < 6)) {
+    } else {
+      break;
+    }
+    int const x_54 = i_1;
+    param = x_54;
+    float const x_55 = func_i1_(&(param), tint_symbol_8, tint_symbol_9, tint_symbol_10);
+    int const x_56 = i_1;
+    param_1 = x_56;
+    float const x_57 = func_i1_(&(param_1), tint_symbol_8, tint_symbol_9, tint_symbol_10);
+    if ((x_57 == 1.0f)) {
+      *(tint_symbol_11) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    } else {
+      *(tint_symbol_11) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    }
+    {
+      int const x_62 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread tint_array_wrapper tint_symbol_13 = {};
+  thread tint_array_wrapper_1 tint_symbol_14 = {};
+  thread float4 tint_symbol_15 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(&(tint_symbol_13), &(tint_symbol_12), &(tint_symbol_14), &(tint_symbol_15));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_15};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0129c00
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,258 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 153
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %temp "temp"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_i1_ "func_i1_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %x_115 "x_115"
+               OpName %x_116_phi "x_116_phi"
+               OpName %main_1 "main_1"
+               OpName %i_1 "i_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_9 ArrayStride 4
+               OpDecorate %_arr_int_uint_7 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_int_uint_9 = OpTypeArray %int %uint_9
+%_ptr_Private__arr_int_uint_9 = OpTypePointer Private %_arr_int_uint_9
+          %7 = OpConstantNull %_arr_int_uint_9
+       %data = OpVariable %_ptr_Private__arr_int_uint_9 Private %7
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_7 = OpConstant %uint 7
+%_arr_int_uint_7 = OpTypeArray %int %uint_7
+%_ptr_Private__arr_int_uint_7 = OpTypePointer Private %_arr_int_uint_7
+         %17 = OpConstantNull %_arr_int_uint_7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_7 Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %float %_ptr_Function_int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %34 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_6 = OpConstant %int 6
+      %int_8 = OpConstant %int 8
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+        %110 = OpTypeFunction %void
+        %136 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %137 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %float None %23
+          %a = OpFunctionParameter %_ptr_Function_int
+         %27 = OpLabel
+          %b = OpVariable %_ptr_Function_int Function %29
+          %i = OpVariable %_ptr_Function_int Function %29
+      %x_115 = OpVariable %_ptr_Function_bool Function %34
+  %x_116_phi = OpVariable %_ptr_Function_bool Function %34
+               OpStore %b %int_0
+         %38 = OpAccessChain %_ptr_Private_int %data %int_0
+               OpStore %38 %int_5
+         %41 = OpAccessChain %_ptr_Private_int %data %int_2
+               OpStore %41 %int_0
+         %43 = OpAccessChain %_ptr_Private_int %data %int_4
+               OpStore %43 %int_0
+         %45 = OpAccessChain %_ptr_Private_int %data %int_6
+               OpStore %45 %int_0
+         %47 = OpAccessChain %_ptr_Private_int %data %int_8
+               OpStore %47 %int_0
+         %50 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %51 = OpLoad %float %50
+         %53 = OpFOrdGreaterThanEqual %bool %51 %float_0
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpLoad %int %b
+         %62 = OpLoad %int %a
+         %63 = OpSLessThanEqual %bool %60 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %57
+         %64 = OpLabel
+         %67 = OpLoad %int %b
+         %68 = OpSLessThanEqual %bool %67 %int_5
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpLoad %int %b
+         %72 = OpLoad %int %b
+         %73 = OpAccessChain %_ptr_Private_int %data %72
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Private_int %temp %71
+               OpStore %75 %74
+         %76 = OpLoad %int %b
+         %77 = OpIAdd %int %76 %int_2
+               OpStore %b %77
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+               OpBranch %56
+         %57 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpStore %i %int_0
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %82 = OpLoad %int %i
+         %84 = OpSLessThan %bool %82 %int_3
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+               OpBranch %85
+         %87 = OpLabel
+               OpBranch %79
+         %85 = OpLabel
+         %88 = OpLoad %int %i
+         %89 = OpAccessChain %_ptr_Private_int %temp %int_0
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Private_int %data %88
+         %93 = OpIAdd %int %90 %int_1
+               OpStore %91 %93
+               OpBranch %80
+         %80 = OpLabel
+         %94 = OpLoad %int %i
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %i %95
+               OpBranch %78
+         %79 = OpLabel
+         %96 = OpAccessChain %_ptr_Private_int %temp %int_0
+         %97 = OpLoad %int %96
+         %98 = OpIEqual %bool %97 %int_5
+               OpStore %x_116_phi %98
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %99
+        %100 = OpLabel
+        %101 = OpAccessChain %_ptr_Private_int %data %int_0
+        %102 = OpLoad %int %101
+        %103 = OpIEqual %bool %102 %int_6
+               OpStore %x_115 %103
+        %104 = OpLoad %bool %x_115
+               OpStore %x_116_phi %104
+               OpBranch %99
+         %99 = OpLabel
+        %105 = OpLoad %bool %x_116_phi
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %107 = OpLabel
+               OpReturnValue %float_1
+        %108 = OpLabel
+               OpReturnValue %float_0
+        %106 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %110
+        %113 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function %29
+      %param = OpVariable %_ptr_Function_int Function %29
+    %param_1 = OpVariable %_ptr_Function_int Function %29
+               OpStore %i_1 %int_0
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpLoad %int %i_1
+        %122 = OpSLessThan %bool %121 %int_6
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %125
+        %124 = OpLabel
+               OpBranch %123
+        %125 = OpLabel
+               OpBranch %118
+        %123 = OpLabel
+        %126 = OpLoad %int %i_1
+               OpStore %param %126
+        %127 = OpFunctionCall %float %func_i1_ %param
+        %129 = OpLoad %int %i_1
+               OpStore %param_1 %129
+        %130 = OpFunctionCall %float %func_i1_ %param_1
+        %132 = OpFOrdEqual %bool %130 %float_1
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %134 = OpLabel
+               OpStore %x_GLF_color %136
+               OpBranch %133
+        %135 = OpLabel
+               OpStore %x_GLF_color %137
+               OpBranch %133
+        %133 = OpLabel
+               OpBranch %119
+        %119 = OpLabel
+        %138 = OpLoad %int %i_1
+        %139 = OpIAdd %int %138 %int_1
+               OpStore %i_1 %139
+               OpBranch %117
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %140
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %110
+        %147 = OpLabel
+        %148 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %148
+        %149 = OpFunctionCall %void %main_1
+        %151 = OpLoad %v4float %x_GLF_color
+        %152 = OpCompositeConstruct %main_out %151
+        %150 = OpFunctionCall %void %tint_symbol_3 %152
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a09f0d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,114 @@
+var<private> data : array<i32, 9>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> temp : array<i32, 7>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(a : ptr<function, i32>) -> f32 {
+  var b : i32;
+  var i : i32;
+  var x_115 : bool;
+  var x_116_phi : bool;
+  b = 0;
+  data[0] = 5;
+  data[2] = 0;
+  data[4] = 0;
+  data[6] = 0;
+  data[8] = 0;
+  let x_71 : f32 = gl_FragCoord.x;
+  if ((x_71 >= 0.0)) {
+    loop {
+      let x_79 : i32 = b;
+      let x_80 : i32 = *(a);
+      if ((x_79 <= x_80)) {
+      } else {
+        break;
+      }
+      let x_83 : i32 = b;
+      if ((x_83 <= 5)) {
+        let x_87 : i32 = b;
+        let x_88 : i32 = b;
+        let x_90 : i32 = data[x_88];
+        temp[x_87] = x_90;
+        let x_92 : i32 = b;
+        b = (x_92 + 2);
+      }
+    }
+  }
+  i = 0;
+  loop {
+    let x_98 : i32 = i;
+    if ((x_98 < 3)) {
+    } else {
+      break;
+    }
+    let x_101 : i32 = i;
+    let x_103 : i32 = temp[0];
+    data[x_101] = (x_103 + 1);
+
+    continuing {
+      let x_106 : i32 = i;
+      i = (x_106 + 1);
+    }
+  }
+  let x_109 : i32 = temp[0];
+  let x_110 : bool = (x_109 == 5);
+  x_116_phi = x_110;
+  if (x_110) {
+    let x_114 : i32 = data[0];
+    x_115 = (x_114 == 6);
+    x_116_phi = x_115;
+  }
+  let x_116 : bool = x_116_phi;
+  if (x_116) {
+    return 1.0;
+  } else {
+    return 0.0;
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var i_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  i_1 = 0;
+  loop {
+    let x_51 : i32 = i_1;
+    if ((x_51 < 6)) {
+    } else {
+      break;
+    }
+    let x_54 : i32 = i_1;
+    param = x_54;
+    let x_55 : f32 = func_i1_(&(param));
+    let x_56 : i32 = i_1;
+    param_1 = x_56;
+    let x_57 : f32 = func_i1_(&(param_1));
+    if ((x_57 == 1.0)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    } else {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    }
+
+    continuing {
+      let x_62 : i32 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
new file mode 100644
index 0000000..a09f0d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
@@ -0,0 +1,114 @@
+var<private> data : array<i32, 9>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> temp : array<i32, 7>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(a : ptr<function, i32>) -> f32 {
+  var b : i32;
+  var i : i32;
+  var x_115 : bool;
+  var x_116_phi : bool;
+  b = 0;
+  data[0] = 5;
+  data[2] = 0;
+  data[4] = 0;
+  data[6] = 0;
+  data[8] = 0;
+  let x_71 : f32 = gl_FragCoord.x;
+  if ((x_71 >= 0.0)) {
+    loop {
+      let x_79 : i32 = b;
+      let x_80 : i32 = *(a);
+      if ((x_79 <= x_80)) {
+      } else {
+        break;
+      }
+      let x_83 : i32 = b;
+      if ((x_83 <= 5)) {
+        let x_87 : i32 = b;
+        let x_88 : i32 = b;
+        let x_90 : i32 = data[x_88];
+        temp[x_87] = x_90;
+        let x_92 : i32 = b;
+        b = (x_92 + 2);
+      }
+    }
+  }
+  i = 0;
+  loop {
+    let x_98 : i32 = i;
+    if ((x_98 < 3)) {
+    } else {
+      break;
+    }
+    let x_101 : i32 = i;
+    let x_103 : i32 = temp[0];
+    data[x_101] = (x_103 + 1);
+
+    continuing {
+      let x_106 : i32 = i;
+      i = (x_106 + 1);
+    }
+  }
+  let x_109 : i32 = temp[0];
+  let x_110 : bool = (x_109 == 5);
+  x_116_phi = x_110;
+  if (x_110) {
+    let x_114 : i32 = data[0];
+    x_115 = (x_114 == 6);
+    x_116_phi = x_115;
+  }
+  let x_116 : bool = x_116_phi;
+  if (x_116) {
+    return 1.0;
+  } else {
+    return 0.0;
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var i_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  i_1 = 0;
+  loop {
+    let x_51 : i32 = i_1;
+    if ((x_51 < 6)) {
+    } else {
+      break;
+    }
+    let x_54 : i32 = i_1;
+    param = x_54;
+    let x_55 : f32 = func_i1_(&(param));
+    let x_56 : i32 = i_1;
+    param_1 = x_56;
+    let x_57 : f32 = func_i1_(&(param_1));
+    if ((x_57 == 1.0)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    } else {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    }
+
+    continuing {
+      let x_62 : i32 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b2bb718
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,96 @@
+static int data[9] = (int[9])0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int temp[7] = (int[7])0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_i1_(inout int a) {
+  int b = 0;
+  int i = 0;
+  bool x_115 = false;
+  bool x_116_phi = false;
+  b = 0;
+  data[0] = 5;
+  data[2] = 0;
+  data[4] = 0;
+  data[6] = 0;
+  data[8] = 0;
+  const float x_71 = gl_FragCoord.x;
+  if ((x_71 >= 0.0f)) {
+    while (true) {
+      const int x_79 = b;
+      const int x_80 = a;
+      if ((x_79 <= x_80)) {
+      } else {
+        break;
+      }
+      if ((b <= 5)) {
+        const int x_87 = b;
+        const int x_90 = data[b];
+        temp[x_87] = x_90;
+        b = (b + 2);
+      }
+    }
+  }
+  i = 0;
+  {
+    for(; (i < 3); i = (i + 1)) {
+      const int x_101 = i;
+      const int x_103 = temp[0];
+      data[x_101] = (x_103 + 1);
+    }
+  }
+  const int x_109 = temp[0];
+  const bool x_110 = (x_109 == 5);
+  x_116_phi = x_110;
+  if (x_110) {
+    const int x_114 = data[0];
+    x_115 = (x_114 == 6);
+    x_116_phi = x_115;
+  }
+  if (x_116_phi) {
+    return 1.0f;
+  } else {
+    return 0.0f;
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  int i_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  i_1 = 0;
+  {
+    for(; (i_1 < 6); i_1 = (i_1 + 1)) {
+      param = i_1;
+      const float x_55 = func_i1_(param);
+      param_1 = i_1;
+      const float x_57 = func_i1_(param_1);
+      if ((x_57 == 1.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);
+      }
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..106d158
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.msl
@@ -0,0 +1,121 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[9];
+};
+struct tint_array_wrapper_1 {
+  int arr[7];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_i1_(thread int* const a, thread tint_array_wrapper* const tint_symbol_5, thread float4* const tint_symbol_6, thread tint_array_wrapper_1* const tint_symbol_7) {
+  int b = 0;
+  int i = 0;
+  bool x_115 = false;
+  bool x_116_phi = false;
+  b = 0;
+  (*(tint_symbol_5)).arr[0] = 5;
+  (*(tint_symbol_5)).arr[2] = 0;
+  (*(tint_symbol_5)).arr[4] = 0;
+  (*(tint_symbol_5)).arr[6] = 0;
+  (*(tint_symbol_5)).arr[8] = 0;
+  float const x_71 = (*(tint_symbol_6)).x;
+  if ((x_71 >= 0.0f)) {
+    while (true) {
+      int const x_79 = b;
+      int const x_80 = *(a);
+      if ((x_79 <= x_80)) {
+      } else {
+        break;
+      }
+      int const x_83 = b;
+      if ((x_83 <= 5)) {
+        int const x_87 = b;
+        int const x_88 = b;
+        int const x_90 = (*(tint_symbol_5)).arr[x_88];
+        (*(tint_symbol_7)).arr[x_87] = x_90;
+        int const x_92 = b;
+        b = (x_92 + 2);
+      }
+    }
+  }
+  i = 0;
+  while (true) {
+    int const x_98 = i;
+    if ((x_98 < 3)) {
+    } else {
+      break;
+    }
+    int const x_101 = i;
+    int const x_103 = (*(tint_symbol_7)).arr[0];
+    (*(tint_symbol_5)).arr[x_101] = (x_103 + 1);
+    {
+      int const x_106 = i;
+      i = (x_106 + 1);
+    }
+  }
+  int const x_109 = (*(tint_symbol_7)).arr[0];
+  bool const x_110 = (x_109 == 5);
+  x_116_phi = x_110;
+  if (x_110) {
+    int const x_114 = (*(tint_symbol_5)).arr[0];
+    x_115 = (x_114 == 6);
+    x_116_phi = x_115;
+  }
+  bool const x_116 = x_116_phi;
+  if (x_116) {
+    return 1.0f;
+  } else {
+    return 0.0f;
+  }
+  return 0.0f;
+}
+
+void main_1(thread tint_array_wrapper* const tint_symbol_8, thread float4* const tint_symbol_9, thread tint_array_wrapper_1* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int i_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  i_1 = 0;
+  while (true) {
+    int const x_51 = i_1;
+    if ((x_51 < 6)) {
+    } else {
+      break;
+    }
+    int const x_54 = i_1;
+    param = x_54;
+    float const x_55 = func_i1_(&(param), tint_symbol_8, tint_symbol_9, tint_symbol_10);
+    int const x_56 = i_1;
+    param_1 = x_56;
+    float const x_57 = func_i1_(&(param_1), tint_symbol_8, tint_symbol_9, tint_symbol_10);
+    if ((x_57 == 1.0f)) {
+      *(tint_symbol_11) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    } else {
+      *(tint_symbol_11) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    }
+    {
+      int const x_62 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread tint_array_wrapper tint_symbol_13 = {};
+  thread tint_array_wrapper_1 tint_symbol_14 = {};
+  thread float4 tint_symbol_15 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(&(tint_symbol_13), &(tint_symbol_12), &(tint_symbol_14), &(tint_symbol_15));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_15};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0129c00
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,258 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 153
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %temp "temp"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_i1_ "func_i1_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %x_115 "x_115"
+               OpName %x_116_phi "x_116_phi"
+               OpName %main_1 "main_1"
+               OpName %i_1 "i_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_9 ArrayStride 4
+               OpDecorate %_arr_int_uint_7 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_int_uint_9 = OpTypeArray %int %uint_9
+%_ptr_Private__arr_int_uint_9 = OpTypePointer Private %_arr_int_uint_9
+          %7 = OpConstantNull %_arr_int_uint_9
+       %data = OpVariable %_ptr_Private__arr_int_uint_9 Private %7
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_7 = OpConstant %uint 7
+%_arr_int_uint_7 = OpTypeArray %int %uint_7
+%_ptr_Private__arr_int_uint_7 = OpTypePointer Private %_arr_int_uint_7
+         %17 = OpConstantNull %_arr_int_uint_7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_7 Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %float %_ptr_Function_int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %34 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_6 = OpConstant %int 6
+      %int_8 = OpConstant %int 8
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+        %110 = OpTypeFunction %void
+        %136 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %137 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %float None %23
+          %a = OpFunctionParameter %_ptr_Function_int
+         %27 = OpLabel
+          %b = OpVariable %_ptr_Function_int Function %29
+          %i = OpVariable %_ptr_Function_int Function %29
+      %x_115 = OpVariable %_ptr_Function_bool Function %34
+  %x_116_phi = OpVariable %_ptr_Function_bool Function %34
+               OpStore %b %int_0
+         %38 = OpAccessChain %_ptr_Private_int %data %int_0
+               OpStore %38 %int_5
+         %41 = OpAccessChain %_ptr_Private_int %data %int_2
+               OpStore %41 %int_0
+         %43 = OpAccessChain %_ptr_Private_int %data %int_4
+               OpStore %43 %int_0
+         %45 = OpAccessChain %_ptr_Private_int %data %int_6
+               OpStore %45 %int_0
+         %47 = OpAccessChain %_ptr_Private_int %data %int_8
+               OpStore %47 %int_0
+         %50 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %51 = OpLoad %float %50
+         %53 = OpFOrdGreaterThanEqual %bool %51 %float_0
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpLoad %int %b
+         %62 = OpLoad %int %a
+         %63 = OpSLessThanEqual %bool %60 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %57
+         %64 = OpLabel
+         %67 = OpLoad %int %b
+         %68 = OpSLessThanEqual %bool %67 %int_5
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpLoad %int %b
+         %72 = OpLoad %int %b
+         %73 = OpAccessChain %_ptr_Private_int %data %72
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Private_int %temp %71
+               OpStore %75 %74
+         %76 = OpLoad %int %b
+         %77 = OpIAdd %int %76 %int_2
+               OpStore %b %77
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+               OpBranch %56
+         %57 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpStore %i %int_0
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %82 = OpLoad %int %i
+         %84 = OpSLessThan %bool %82 %int_3
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+               OpBranch %85
+         %87 = OpLabel
+               OpBranch %79
+         %85 = OpLabel
+         %88 = OpLoad %int %i
+         %89 = OpAccessChain %_ptr_Private_int %temp %int_0
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Private_int %data %88
+         %93 = OpIAdd %int %90 %int_1
+               OpStore %91 %93
+               OpBranch %80
+         %80 = OpLabel
+         %94 = OpLoad %int %i
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %i %95
+               OpBranch %78
+         %79 = OpLabel
+         %96 = OpAccessChain %_ptr_Private_int %temp %int_0
+         %97 = OpLoad %int %96
+         %98 = OpIEqual %bool %97 %int_5
+               OpStore %x_116_phi %98
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %99
+        %100 = OpLabel
+        %101 = OpAccessChain %_ptr_Private_int %data %int_0
+        %102 = OpLoad %int %101
+        %103 = OpIEqual %bool %102 %int_6
+               OpStore %x_115 %103
+        %104 = OpLoad %bool %x_115
+               OpStore %x_116_phi %104
+               OpBranch %99
+         %99 = OpLabel
+        %105 = OpLoad %bool %x_116_phi
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %107 = OpLabel
+               OpReturnValue %float_1
+        %108 = OpLabel
+               OpReturnValue %float_0
+        %106 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %110
+        %113 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function %29
+      %param = OpVariable %_ptr_Function_int Function %29
+    %param_1 = OpVariable %_ptr_Function_int Function %29
+               OpStore %i_1 %int_0
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpLoad %int %i_1
+        %122 = OpSLessThan %bool %121 %int_6
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %125
+        %124 = OpLabel
+               OpBranch %123
+        %125 = OpLabel
+               OpBranch %118
+        %123 = OpLabel
+        %126 = OpLoad %int %i_1
+               OpStore %param %126
+        %127 = OpFunctionCall %float %func_i1_ %param
+        %129 = OpLoad %int %i_1
+               OpStore %param_1 %129
+        %130 = OpFunctionCall %float %func_i1_ %param_1
+        %132 = OpFOrdEqual %bool %130 %float_1
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %134 = OpLabel
+               OpStore %x_GLF_color %136
+               OpBranch %133
+        %135 = OpLabel
+               OpStore %x_GLF_color %137
+               OpBranch %133
+        %133 = OpLabel
+               OpBranch %119
+        %119 = OpLabel
+        %138 = OpLoad %int %i_1
+        %139 = OpIAdd %int %138 %int_1
+               OpStore %i_1 %139
+               OpBranch %117
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %140
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %110
+        %147 = OpLabel
+        %148 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %148
+        %149 = OpFunctionCall %void %main_1
+        %151 = OpLoad %v4float %x_GLF_color
+        %152 = OpCompositeConstruct %main_out %151
+        %150 = OpFunctionCall %void %tint_symbol_3 %152
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a09f0d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,114 @@
+var<private> data : array<i32, 9>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> temp : array<i32, 7>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(a : ptr<function, i32>) -> f32 {
+  var b : i32;
+  var i : i32;
+  var x_115 : bool;
+  var x_116_phi : bool;
+  b = 0;
+  data[0] = 5;
+  data[2] = 0;
+  data[4] = 0;
+  data[6] = 0;
+  data[8] = 0;
+  let x_71 : f32 = gl_FragCoord.x;
+  if ((x_71 >= 0.0)) {
+    loop {
+      let x_79 : i32 = b;
+      let x_80 : i32 = *(a);
+      if ((x_79 <= x_80)) {
+      } else {
+        break;
+      }
+      let x_83 : i32 = b;
+      if ((x_83 <= 5)) {
+        let x_87 : i32 = b;
+        let x_88 : i32 = b;
+        let x_90 : i32 = data[x_88];
+        temp[x_87] = x_90;
+        let x_92 : i32 = b;
+        b = (x_92 + 2);
+      }
+    }
+  }
+  i = 0;
+  loop {
+    let x_98 : i32 = i;
+    if ((x_98 < 3)) {
+    } else {
+      break;
+    }
+    let x_101 : i32 = i;
+    let x_103 : i32 = temp[0];
+    data[x_101] = (x_103 + 1);
+
+    continuing {
+      let x_106 : i32 = i;
+      i = (x_106 + 1);
+    }
+  }
+  let x_109 : i32 = temp[0];
+  let x_110 : bool = (x_109 == 5);
+  x_116_phi = x_110;
+  if (x_110) {
+    let x_114 : i32 = data[0];
+    x_115 = (x_114 == 6);
+    x_116_phi = x_115;
+  }
+  let x_116 : bool = x_116_phi;
+  if (x_116) {
+    return 1.0;
+  } else {
+    return 0.0;
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var i_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  i_1 = 0;
+  loop {
+    let x_51 : i32 = i_1;
+    if ((x_51 < 6)) {
+    } else {
+      break;
+    }
+    let x_54 : i32 = i_1;
+    param = x_54;
+    let x_55 : f32 = func_i1_(&(param));
+    let x_56 : i32 = i_1;
+    param_1 = x_56;
+    let x_57 : f32 = func_i1_(&(param_1));
+    if ((x_57 == 1.0)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    } else {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    }
+
+    continuing {
+      let x_62 : i32 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm
new file mode 100644
index 0000000..ff91ed1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm
@@ -0,0 +1,159 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_i1_ "func(i1;"
+               OpName %x "x"
+               OpName %a "a"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i_0 "i"
+               OpName %param "param"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %16 = OpTypeFunction %void %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_int_uint_9 = OpTypeArray %int %uint_9
+%_ptr_Function__arr_int_uint_9 = OpTypePointer Function %_arr_int_uint_9
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+     %int_10 = OpConstant %int 10
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %13
+         %38 = OpLabel
+        %i_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+               OpStore %i_0 %int_1
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i_0
+         %44 = OpSLessThan %bool %43 %int_6
+               OpBranchConditional %44 %45 %40
+         %45 = OpLabel
+         %46 = OpLoad %int %i_0
+               OpStore %param %46
+         %47 = OpFunctionCall %void %func_i1_ %param
+               OpBranch %41
+         %41 = OpLabel
+         %48 = OpLoad %int %i_0
+         %49 = OpIAdd %int %48 %int_1
+               OpStore %i_0 %49
+               OpBranch %39
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_i1_ = OpFunction %void None %16
+          %x = OpFunctionParameter %_ptr_Function_int
+         %50 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+       %data = OpVariable %_ptr_Function__arr_int_uint_9 Function
+       %temp = OpVariable %_ptr_Function__arr_int_uint_2 Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+         %51 = OpAccessChain %_ptr_Function_int %data %int_0
+               OpStore %51 %int_5
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %a
+         %57 = OpLoad %int %x
+         %58 = OpSLessThanEqual %bool %56 %57
+               OpBranchConditional %58 %59 %53
+         %59 = OpLabel
+         %60 = OpLoad %int %a
+         %61 = OpSLessThanEqual %bool %60 %int_10
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpLoad %int %a
+         %65 = OpExtInst %int %1 SMin %64 %int_1
+         %66 = OpLoad %int %a
+         %67 = OpExtInst %int %1 SMin %66 %int_0
+         %68 = OpAccessChain %_ptr_Function_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Function_int %temp %65
+               OpStore %70 %69
+         %71 = OpLoad %int %a
+         %72 = OpIAdd %int %71 %int_1
+               OpStore %a %72
+               OpBranch %62
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %i %int_0
+               OpBranch %73
+         %73 = OpLabel
+               OpLoopMerge %74 %75 None
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpLoad %int %i
+         %78 = OpSLessThan %bool %77 %int_2
+               OpBranchConditional %78 %79 %74
+         %79 = OpLabel
+         %80 = OpLoad %int %i
+         %81 = OpAccessChain %_ptr_Function_int %temp %int_0
+         %82 = OpLoad %int %81
+         %83 = OpLoad %int %i
+         %84 = OpIAdd %int %82 %83
+         %85 = OpAccessChain %_ptr_Function_int %data %80
+               OpStore %85 %84
+               OpBranch %75
+         %75 = OpLabel
+         %86 = OpLoad %int %i
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %i %87
+               OpBranch %73
+         %74 = OpLabel
+         %88 = OpAccessChain %_ptr_Function_int %data %int_0
+         %89 = OpLoad %int %88
+         %90 = OpIEqual %bool %89 %int_5
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+         %93 = OpAccessChain %_ptr_Function_int %data %int_1
+         %94 = OpLoad %int %93
+         %95 = OpIEqual %bool %94 %int_6
+               OpBranch %91
+         %91 = OpLabel
+         %96 = OpPhi %bool %90 %74 %95 %92
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %99
+         %98 = OpLabel
+               OpStore %_GLF_color %36
+               OpBranch %97
+         %99 = OpLabel
+               OpStore %_GLF_color %37
+               OpBranch %97
+         %97 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..86ba9e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,75 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_i1_(inout int x) {
+  int a = 0;
+  int data[9] = (int[9])0;
+  int temp[2] = (int[2])0;
+  int i = 0;
+  bool x_95 = false;
+  bool x_96_phi = false;
+  a = 0;
+  data[0] = 5;
+  while (true) {
+    const int x_56 = a;
+    const int x_57 = x;
+    if ((x_56 <= x_57)) {
+    } else {
+      break;
+    }
+    if ((a <= 10)) {
+      const int x_64 = a;
+      const int x_69 = data[min(a, 0)];
+      temp[min(x_64, 1)] = x_69;
+      a = (a + 1);
+    }
+  }
+  i = 0;
+  {
+    for(; (i < 2); i = (i + 1)) {
+      const int x_80 = i;
+      const int x_82 = temp[0];
+      data[x_80] = (x_82 + i);
+    }
+  }
+  const int x_89 = data[0];
+  const bool x_90 = (x_89 == 5);
+  x_96_phi = x_90;
+  if (x_90) {
+    const int x_94 = data[1];
+    x_95 = (x_94 == 6);
+    x_96_phi = x_95;
+  }
+  if (x_96_phi) {
+    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);
+  }
+  return;
+}
+
+void main_1() {
+  int i_1 = 0;
+  int param = 0;
+  i_1 = 1;
+  {
+    for(; (i_1 < 6); i_1 = (i_1 + 1)) {
+      param = i_1;
+      func_i1_(param);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8260441
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.msl
@@ -0,0 +1,104 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[9];
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_i1_(thread int* const x, thread float4* const tint_symbol_4) {
+  int a = 0;
+  tint_array_wrapper data = {};
+  tint_array_wrapper_1 temp = {};
+  int i = 0;
+  bool x_95 = false;
+  bool x_96_phi = false;
+  a = 0;
+  data.arr[0] = 5;
+  while (true) {
+    int const x_56 = a;
+    int const x_57 = *(x);
+    if ((x_56 <= x_57)) {
+    } else {
+      break;
+    }
+    int const x_60 = a;
+    if ((x_60 <= 10)) {
+      int const x_64 = a;
+      int const x_66 = a;
+      int const x_69 = data.arr[min(x_66, 0)];
+      temp.arr[min(x_64, 1)] = x_69;
+      int const x_71 = a;
+      a = (x_71 + 1);
+    }
+  }
+  i = 0;
+  while (true) {
+    int const x_77 = i;
+    if ((x_77 < 2)) {
+    } else {
+      break;
+    }
+    int const x_80 = i;
+    int const x_82 = temp.arr[0];
+    int const x_83 = i;
+    data.arr[x_80] = (x_82 + x_83);
+    {
+      int const x_86 = i;
+      i = (x_86 + 1);
+    }
+  }
+  int const x_89 = data.arr[0];
+  bool const x_90 = (x_89 == 5);
+  x_96_phi = x_90;
+  if (x_90) {
+    int const x_94 = data.arr[1];
+    x_95 = (x_94 == 6);
+    x_96_phi = x_95;
+  }
+  bool const x_96 = x_96_phi;
+  if (x_96) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+void main_1(thread float4* const tint_symbol_5) {
+  int i_1 = 0;
+  int param = 0;
+  i_1 = 1;
+  while (true) {
+    int const x_43 = i_1;
+    if ((x_43 < 6)) {
+    } else {
+      break;
+    }
+    int const x_46 = i_1;
+    param = x_46;
+    func_i1_(&(param), tint_symbol_5);
+    {
+      int const x_48 = i_1;
+      i_1 = (x_48 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(&(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8945024
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,220 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %a "a"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i "i"
+               OpName %x_95 "x_95"
+               OpName %x_96_phi "x_96_phi"
+               OpName %main_1 "main_1"
+               OpName %i_1 "i_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_9 ArrayStride 4
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+          %8 = OpTypeFunction %void %_ptr_Function_int
+         %16 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_int_uint_9 = OpTypeArray %int %uint_9
+%_ptr_Function__arr_int_uint_9 = OpTypePointer Function %_arr_int_uint_9
+         %22 = OpConstantNull %_arr_int_uint_9
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %27 = OpConstantNull %_arr_int_uint_2
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %98 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %99 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %100 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %void None %8
+          %x = OpFunctionParameter %_ptr_Function_int
+         %14 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %16
+       %data = OpVariable %_ptr_Function__arr_int_uint_9 Function %22
+       %temp = OpVariable %_ptr_Function__arr_int_uint_2 Function %27
+          %i = OpVariable %_ptr_Function_int Function %16
+       %x_95 = OpVariable %_ptr_Function_bool Function %32
+   %x_96_phi = OpVariable %_ptr_Function_bool Function %32
+               OpStore %a %int_0
+         %35 = OpAccessChain %_ptr_Function_int %data %int_0
+               OpStore %35 %int_5
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %a
+         %43 = OpLoad %int %x
+         %44 = OpSLessThanEqual %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %38
+         %45 = OpLabel
+         %48 = OpLoad %int %a
+         %50 = OpSLessThanEqual %bool %48 %int_10
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpLoad %int %a
+         %54 = OpLoad %int %a
+         %55 = OpExtInst %int %56 SMin %54 %int_0
+         %57 = OpAccessChain %_ptr_Function_int %data %55
+         %58 = OpLoad %int %57
+         %59 = OpExtInst %int %56 SMin %53 %int_1
+         %61 = OpAccessChain %_ptr_Function_int %temp %59
+               OpStore %61 %58
+         %62 = OpLoad %int %a
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %a %63
+               OpBranch %51
+         %51 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+               OpStore %i %int_0
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %i
+         %70 = OpSLessThan %bool %68 %int_2
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %65
+         %71 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Function_int %temp %int_0
+         %76 = OpLoad %int %75
+         %77 = OpLoad %int %i
+         %78 = OpAccessChain %_ptr_Function_int %data %74
+         %79 = OpIAdd %int %76 %77
+               OpStore %78 %79
+               OpBranch %66
+         %66 = OpLabel
+         %80 = OpLoad %int %i
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %i %81
+               OpBranch %64
+         %65 = OpLabel
+         %82 = OpAccessChain %_ptr_Function_int %data %int_0
+         %83 = OpLoad %int %82
+         %84 = OpIEqual %bool %83 %int_5
+               OpStore %x_96_phi %84
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Function_int %data %int_1
+         %88 = OpLoad %int %87
+         %90 = OpIEqual %bool %88 %int_6
+               OpStore %x_95 %90
+         %91 = OpLoad %bool %x_95
+               OpStore %x_96_phi %91
+               OpBranch %85
+         %85 = OpLabel
+         %92 = OpLoad %bool %x_96_phi
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpStore %x_GLF_color %98
+               OpBranch %93
+         %95 = OpLabel
+               OpStore %x_GLF_color %99
+               OpBranch %93
+         %93 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %100
+        %102 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function %16
+      %param = OpVariable %_ptr_Function_int Function %16
+               OpStore %i_1 %int_1
+               OpBranch %105
+        %105 = OpLabel
+               OpLoopMerge %106 %107 None
+               OpBranch %108
+        %108 = OpLabel
+        %109 = OpLoad %int %i_1
+        %110 = OpSLessThan %bool %109 %int_6
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %113
+        %112 = OpLabel
+               OpBranch %111
+        %113 = OpLabel
+               OpBranch %106
+        %111 = OpLabel
+        %114 = OpLoad %int %i_1
+               OpStore %param %114
+        %115 = OpFunctionCall %void %func_i1_ %param
+               OpBranch %107
+        %107 = OpLabel
+        %117 = OpLoad %int %i_1
+        %118 = OpIAdd %int %117 %int_1
+               OpStore %i_1 %118
+               OpBranch %105
+        %106 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %100
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..19735ee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,94 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) {
+  var a : i32;
+  var data : array<i32, 9>;
+  var temp : array<i32, 2>;
+  var i : i32;
+  var x_95 : bool;
+  var x_96_phi : bool;
+  a = 0;
+  data[0] = 5;
+  loop {
+    let x_56 : i32 = a;
+    let x_57 : i32 = *(x);
+    if ((x_56 <= x_57)) {
+    } else {
+      break;
+    }
+    let x_60 : i32 = a;
+    if ((x_60 <= 10)) {
+      let x_64 : i32 = a;
+      let x_66 : i32 = a;
+      let x_69 : i32 = data[min(x_66, 0)];
+      temp[min(x_64, 1)] = x_69;
+      let x_71 : i32 = a;
+      a = (x_71 + 1);
+    }
+  }
+  i = 0;
+  loop {
+    let x_77 : i32 = i;
+    if ((x_77 < 2)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = i;
+    let x_82 : i32 = temp[0];
+    let x_83 : i32 = i;
+    data[x_80] = (x_82 + x_83);
+
+    continuing {
+      let x_86 : i32 = i;
+      i = (x_86 + 1);
+    }
+  }
+  let x_89 : i32 = data[0];
+  let x_90 : bool = (x_89 == 5);
+  x_96_phi = x_90;
+  if (x_90) {
+    let x_94 : i32 = data[1];
+    x_95 = (x_94 == 6);
+    x_96_phi = x_95;
+  }
+  let x_96 : bool = x_96_phi;
+  if (x_96) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+fn main_1() {
+  var i_1 : i32;
+  var param : i32;
+  i_1 = 1;
+  loop {
+    let x_43 : i32 = i_1;
+    if ((x_43 < 6)) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = i_1;
+    param = x_46;
+    func_i1_(&(param));
+
+    continuing {
+      let x_48 : i32 = i_1;
+      i_1 = (x_48 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
new file mode 100644
index 0000000..19735ee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
@@ -0,0 +1,94 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) {
+  var a : i32;
+  var data : array<i32, 9>;
+  var temp : array<i32, 2>;
+  var i : i32;
+  var x_95 : bool;
+  var x_96_phi : bool;
+  a = 0;
+  data[0] = 5;
+  loop {
+    let x_56 : i32 = a;
+    let x_57 : i32 = *(x);
+    if ((x_56 <= x_57)) {
+    } else {
+      break;
+    }
+    let x_60 : i32 = a;
+    if ((x_60 <= 10)) {
+      let x_64 : i32 = a;
+      let x_66 : i32 = a;
+      let x_69 : i32 = data[min(x_66, 0)];
+      temp[min(x_64, 1)] = x_69;
+      let x_71 : i32 = a;
+      a = (x_71 + 1);
+    }
+  }
+  i = 0;
+  loop {
+    let x_77 : i32 = i;
+    if ((x_77 < 2)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = i;
+    let x_82 : i32 = temp[0];
+    let x_83 : i32 = i;
+    data[x_80] = (x_82 + x_83);
+
+    continuing {
+      let x_86 : i32 = i;
+      i = (x_86 + 1);
+    }
+  }
+  let x_89 : i32 = data[0];
+  let x_90 : bool = (x_89 == 5);
+  x_96_phi = x_90;
+  if (x_90) {
+    let x_94 : i32 = data[1];
+    x_95 = (x_94 == 6);
+    x_96_phi = x_95;
+  }
+  let x_96 : bool = x_96_phi;
+  if (x_96) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+fn main_1() {
+  var i_1 : i32;
+  var param : i32;
+  i_1 = 1;
+  loop {
+    let x_43 : i32 = i_1;
+    if ((x_43 < 6)) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = i_1;
+    param = x_46;
+    func_i1_(&(param));
+
+    continuing {
+      let x_48 : i32 = i_1;
+      i_1 = (x_48 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..86ba9e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,75 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_i1_(inout int x) {
+  int a = 0;
+  int data[9] = (int[9])0;
+  int temp[2] = (int[2])0;
+  int i = 0;
+  bool x_95 = false;
+  bool x_96_phi = false;
+  a = 0;
+  data[0] = 5;
+  while (true) {
+    const int x_56 = a;
+    const int x_57 = x;
+    if ((x_56 <= x_57)) {
+    } else {
+      break;
+    }
+    if ((a <= 10)) {
+      const int x_64 = a;
+      const int x_69 = data[min(a, 0)];
+      temp[min(x_64, 1)] = x_69;
+      a = (a + 1);
+    }
+  }
+  i = 0;
+  {
+    for(; (i < 2); i = (i + 1)) {
+      const int x_80 = i;
+      const int x_82 = temp[0];
+      data[x_80] = (x_82 + i);
+    }
+  }
+  const int x_89 = data[0];
+  const bool x_90 = (x_89 == 5);
+  x_96_phi = x_90;
+  if (x_90) {
+    const int x_94 = data[1];
+    x_95 = (x_94 == 6);
+    x_96_phi = x_95;
+  }
+  if (x_96_phi) {
+    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);
+  }
+  return;
+}
+
+void main_1() {
+  int i_1 = 0;
+  int param = 0;
+  i_1 = 1;
+  {
+    for(; (i_1 < 6); i_1 = (i_1 + 1)) {
+      param = i_1;
+      func_i1_(param);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8260441
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.msl
@@ -0,0 +1,104 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[9];
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_i1_(thread int* const x, thread float4* const tint_symbol_4) {
+  int a = 0;
+  tint_array_wrapper data = {};
+  tint_array_wrapper_1 temp = {};
+  int i = 0;
+  bool x_95 = false;
+  bool x_96_phi = false;
+  a = 0;
+  data.arr[0] = 5;
+  while (true) {
+    int const x_56 = a;
+    int const x_57 = *(x);
+    if ((x_56 <= x_57)) {
+    } else {
+      break;
+    }
+    int const x_60 = a;
+    if ((x_60 <= 10)) {
+      int const x_64 = a;
+      int const x_66 = a;
+      int const x_69 = data.arr[min(x_66, 0)];
+      temp.arr[min(x_64, 1)] = x_69;
+      int const x_71 = a;
+      a = (x_71 + 1);
+    }
+  }
+  i = 0;
+  while (true) {
+    int const x_77 = i;
+    if ((x_77 < 2)) {
+    } else {
+      break;
+    }
+    int const x_80 = i;
+    int const x_82 = temp.arr[0];
+    int const x_83 = i;
+    data.arr[x_80] = (x_82 + x_83);
+    {
+      int const x_86 = i;
+      i = (x_86 + 1);
+    }
+  }
+  int const x_89 = data.arr[0];
+  bool const x_90 = (x_89 == 5);
+  x_96_phi = x_90;
+  if (x_90) {
+    int const x_94 = data.arr[1];
+    x_95 = (x_94 == 6);
+    x_96_phi = x_95;
+  }
+  bool const x_96 = x_96_phi;
+  if (x_96) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+void main_1(thread float4* const tint_symbol_5) {
+  int i_1 = 0;
+  int param = 0;
+  i_1 = 1;
+  while (true) {
+    int const x_43 = i_1;
+    if ((x_43 < 6)) {
+    } else {
+      break;
+    }
+    int const x_46 = i_1;
+    param = x_46;
+    func_i1_(&(param), tint_symbol_5);
+    {
+      int const x_48 = i_1;
+      i_1 = (x_48 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(&(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8945024
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,220 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %a "a"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i "i"
+               OpName %x_95 "x_95"
+               OpName %x_96_phi "x_96_phi"
+               OpName %main_1 "main_1"
+               OpName %i_1 "i_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_9 ArrayStride 4
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+          %8 = OpTypeFunction %void %_ptr_Function_int
+         %16 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_int_uint_9 = OpTypeArray %int %uint_9
+%_ptr_Function__arr_int_uint_9 = OpTypePointer Function %_arr_int_uint_9
+         %22 = OpConstantNull %_arr_int_uint_9
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %27 = OpConstantNull %_arr_int_uint_2
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %98 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %99 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %100 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %void None %8
+          %x = OpFunctionParameter %_ptr_Function_int
+         %14 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %16
+       %data = OpVariable %_ptr_Function__arr_int_uint_9 Function %22
+       %temp = OpVariable %_ptr_Function__arr_int_uint_2 Function %27
+          %i = OpVariable %_ptr_Function_int Function %16
+       %x_95 = OpVariable %_ptr_Function_bool Function %32
+   %x_96_phi = OpVariable %_ptr_Function_bool Function %32
+               OpStore %a %int_0
+         %35 = OpAccessChain %_ptr_Function_int %data %int_0
+               OpStore %35 %int_5
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %a
+         %43 = OpLoad %int %x
+         %44 = OpSLessThanEqual %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %38
+         %45 = OpLabel
+         %48 = OpLoad %int %a
+         %50 = OpSLessThanEqual %bool %48 %int_10
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpLoad %int %a
+         %54 = OpLoad %int %a
+         %55 = OpExtInst %int %56 SMin %54 %int_0
+         %57 = OpAccessChain %_ptr_Function_int %data %55
+         %58 = OpLoad %int %57
+         %59 = OpExtInst %int %56 SMin %53 %int_1
+         %61 = OpAccessChain %_ptr_Function_int %temp %59
+               OpStore %61 %58
+         %62 = OpLoad %int %a
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %a %63
+               OpBranch %51
+         %51 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+               OpStore %i %int_0
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %i
+         %70 = OpSLessThan %bool %68 %int_2
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %65
+         %71 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Function_int %temp %int_0
+         %76 = OpLoad %int %75
+         %77 = OpLoad %int %i
+         %78 = OpAccessChain %_ptr_Function_int %data %74
+         %79 = OpIAdd %int %76 %77
+               OpStore %78 %79
+               OpBranch %66
+         %66 = OpLabel
+         %80 = OpLoad %int %i
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %i %81
+               OpBranch %64
+         %65 = OpLabel
+         %82 = OpAccessChain %_ptr_Function_int %data %int_0
+         %83 = OpLoad %int %82
+         %84 = OpIEqual %bool %83 %int_5
+               OpStore %x_96_phi %84
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Function_int %data %int_1
+         %88 = OpLoad %int %87
+         %90 = OpIEqual %bool %88 %int_6
+               OpStore %x_95 %90
+         %91 = OpLoad %bool %x_95
+               OpStore %x_96_phi %91
+               OpBranch %85
+         %85 = OpLabel
+         %92 = OpLoad %bool %x_96_phi
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpStore %x_GLF_color %98
+               OpBranch %93
+         %95 = OpLabel
+               OpStore %x_GLF_color %99
+               OpBranch %93
+         %93 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %100
+        %102 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function %16
+      %param = OpVariable %_ptr_Function_int Function %16
+               OpStore %i_1 %int_1
+               OpBranch %105
+        %105 = OpLabel
+               OpLoopMerge %106 %107 None
+               OpBranch %108
+        %108 = OpLabel
+        %109 = OpLoad %int %i_1
+        %110 = OpSLessThan %bool %109 %int_6
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %113
+        %112 = OpLabel
+               OpBranch %111
+        %113 = OpLabel
+               OpBranch %106
+        %111 = OpLabel
+        %114 = OpLoad %int %i_1
+               OpStore %param %114
+        %115 = OpFunctionCall %void %func_i1_ %param
+               OpBranch %107
+        %107 = OpLabel
+        %117 = OpLoad %int %i_1
+        %118 = OpIAdd %int %117 %int_1
+               OpStore %i_1 %118
+               OpBranch %105
+        %106 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %100
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..19735ee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,94 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) {
+  var a : i32;
+  var data : array<i32, 9>;
+  var temp : array<i32, 2>;
+  var i : i32;
+  var x_95 : bool;
+  var x_96_phi : bool;
+  a = 0;
+  data[0] = 5;
+  loop {
+    let x_56 : i32 = a;
+    let x_57 : i32 = *(x);
+    if ((x_56 <= x_57)) {
+    } else {
+      break;
+    }
+    let x_60 : i32 = a;
+    if ((x_60 <= 10)) {
+      let x_64 : i32 = a;
+      let x_66 : i32 = a;
+      let x_69 : i32 = data[min(x_66, 0)];
+      temp[min(x_64, 1)] = x_69;
+      let x_71 : i32 = a;
+      a = (x_71 + 1);
+    }
+  }
+  i = 0;
+  loop {
+    let x_77 : i32 = i;
+    if ((x_77 < 2)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = i;
+    let x_82 : i32 = temp[0];
+    let x_83 : i32 = i;
+    data[x_80] = (x_82 + x_83);
+
+    continuing {
+      let x_86 : i32 = i;
+      i = (x_86 + 1);
+    }
+  }
+  let x_89 : i32 = data[0];
+  let x_90 : bool = (x_89 == 5);
+  x_96_phi = x_90;
+  if (x_90) {
+    let x_94 : i32 = data[1];
+    x_95 = (x_94 == 6);
+    x_96_phi = x_95;
+  }
+  let x_96 : bool = x_96_phi;
+  if (x_96) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+fn main_1() {
+  var i_1 : i32;
+  var param : i32;
+  i_1 = 1;
+  loop {
+    let x_43 : i32 = i_1;
+    if ((x_43 < 6)) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = i_1;
+    param = x_46;
+    func_i1_(&(param));
+
+    continuing {
+      let x_48 : i32 = i_1;
+      i_1 = (x_48 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm
new file mode 100644
index 0000000..ae7a96f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm
@@ -0,0 +1,125 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %gl_LocalInvocationID
+               OpExecutionMode %main LocalSize 16 1 1
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %lid "lid"
+               OpName %gl_LocalInvocationID "gl_LocalInvocationID"
+               OpName %val "val"
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "global_seed"
+               OpMemberName %doesNotMatter 1 "data"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %__0 ""
+               OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpMemberDecorate %doesNotMatter 1 Offset 4
+               OpDecorate %doesNotMatter BufferBlock
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%gl_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%_runtimearr_int = OpTypeRuntimeArray %int
+%doesNotMatter = OpTypeStruct %int %_runtimearr_int
+%_ptr_Uniform_doesNotMatter = OpTypePointer Uniform %doesNotMatter
+          %_ = OpVariable %_ptr_Uniform_doesNotMatter Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+  %float_100 = OpConstant %float 100
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+     %int_42 = OpConstant %int 42
+    %uint_16 = OpConstant %uint 16
+     %uint_1 = OpConstant %uint 1
+%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_16 %uint_1 %uint_1
+       %main = OpFunction %void None %14
+         %38 = OpLabel
+        %lid = OpVariable %_ptr_Function_int Function
+        %val = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %39 = OpAccessChain %_ptr_Input_uint %gl_LocalInvocationID %uint_0
+         %40 = OpLoad %uint %39
+         %41 = OpBitcast %int %40
+               OpStore %lid %41
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %43 = OpLoad %int %42
+               OpStore %val %43
+               OpStore %i %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpSLessThan %bool %48 %int_2
+               OpBranchConditional %49 %50 %45
+         %50 = OpLabel
+         %51 = OpLoad %int %lid
+         %52 = OpSGreaterThan %bool %51 %int_0
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+         %55 = OpLoad %int %lid
+         %56 = OpISub %int %55 %int_1
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_1 %56
+         %58 = OpLoad %int %57
+         %59 = OpLoad %int %val
+         %60 = OpIAdd %int %59 %58
+               OpStore %val %60
+         %61 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %62 = OpLoad %float %61
+         %63 = OpFOrdGreaterThan %bool %62 %float_100
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %45
+         %64 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %46
+         %46 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %i %67
+               OpBranch %44
+         %45 = OpLabel
+         %68 = OpLoad %int %lid
+         %69 = OpIEqual %bool %68 %int_0
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %_ %int_1 %int_0
+               OpStore %72 %int_42
+               OpBranch %70
+         %70 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9ed54bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,45 @@
+static uint3 gl_LocalInvocationID = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_7 : register(u0, space0);
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[1];
+};
+
+void main_1() {
+  int lid = 0;
+  int val = 0;
+  int i = 0;
+  const uint x_40 = gl_LocalInvocationID.x;
+  lid = asint(x_40);
+  const int x_43 = asint(x_7.Load(0u));
+  val = x_43;
+  i = 0;
+  {
+    for(; (i < 2); i = (i + 1)) {
+      if ((lid > 0)) {
+        const int x_58 = asint(x_7.Load((4u + (4u * uint((lid - 1))))));
+        val = (val + x_58);
+        const float x_62 = asfloat(x_10[0].x);
+        if ((x_62 > 100.0f)) {
+          break;
+        }
+      }
+      GroupMemoryBarrierWithGroupSync();
+    }
+  }
+  if ((lid == 0)) {
+    x_7.Store((4u + (4u * uint(0))), asuint(42));
+  }
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 gl_LocalInvocationID_param : SV_GroupThreadID;
+};
+
+[numthreads(16, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 gl_LocalInvocationID_param = tint_symbol.gl_LocalInvocationID_param;
+  gl_LocalInvocationID = gl_LocalInvocationID_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..99eb99a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct doesNotMatter {
+  /* 0x0000 */ int global_seed;
+  /* 0x0004 */ int data[1];
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+
+void main_1(constant buf1& x_10, device doesNotMatter& x_7, thread uint3* const tint_symbol_2) {
+  int lid = 0;
+  int val = 0;
+  int i = 0;
+  uint const x_40 = (*(tint_symbol_2)).x;
+  lid = as_type<int>(x_40);
+  int const x_43 = x_7.global_seed;
+  val = x_43;
+  i = 0;
+  while (true) {
+    int const x_48 = i;
+    if ((x_48 < 2)) {
+    } else {
+      break;
+    }
+    int const x_51 = lid;
+    if ((x_51 > 0)) {
+      int const x_55 = lid;
+      int const x_58 = x_7.data[(x_55 - 1)];
+      int const x_59 = val;
+      val = (x_59 + x_58);
+      float const x_62 = x_10.injectionSwitch.x;
+      if ((x_62 > 100.0f)) {
+        break;
+      }
+    }
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+    {
+      int const x_66 = i;
+      i = (x_66 + 1);
+    }
+  }
+  int const x_68 = lid;
+  if ((x_68 == 0)) {
+    x_7.data[0] = 42;
+  }
+  return;
+}
+
+kernel void tint_symbol(uint3 gl_LocalInvocationID_param [[thread_position_in_threadgroup]], constant buf1& x_10 [[buffer(1)]], device doesNotMatter& x_7 [[buffer(0)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = gl_LocalInvocationID_param;
+  main_1(x_10, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..552cb1b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,144 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 81
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 16 1 1
+               OpName %gl_LocalInvocationID "gl_LocalInvocationID"
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "global_seed"
+               OpMemberName %doesNotMatter 1 "data"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %lid "lid"
+               OpName %val "val"
+               OpName %i "i"
+               OpName %main "main"
+               OpDecorate %doesNotMatter Block
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpMemberDecorate %doesNotMatter 1 Offset 4
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol BuiltIn LocalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+%gl_LocalInvocationID = OpVariable %_ptr_Private_v3uint Private %5
+        %int = OpTypeInt 32 1
+%_runtimearr_int = OpTypeRuntimeArray %int
+%doesNotMatter = OpTypeStruct %int %_runtimearr_int
+%_ptr_StorageBuffer_doesNotMatter = OpTypePointer StorageBuffer %doesNotMatter
+        %x_7 = OpVariable %_ptr_StorageBuffer_doesNotMatter StorageBuffer
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+  %float_100 = OpConstant %float 100
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+     %int_42 = OpConstant %int 42
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+        %lid = OpVariable %_ptr_Function_int Function %24
+        %val = OpVariable %_ptr_Function_int Function %24
+          %i = OpVariable %_ptr_Function_int Function %24
+         %29 = OpAccessChain %_ptr_Private_uint %gl_LocalInvocationID %uint_0
+         %30 = OpLoad %uint %29
+         %31 = OpBitcast %int %30
+               OpStore %lid %31
+         %33 = OpAccessChain %_ptr_StorageBuffer_int %x_7 %uint_0
+         %34 = OpLoad %int %33
+               OpStore %val %34
+               OpStore %i %int_0
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpSLessThan %bool %40 %int_2
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %37
+         %44 = OpLabel
+         %47 = OpLoad %int %lid
+         %48 = OpSGreaterThan %bool %47 %int_0
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+         %51 = OpLoad %int %lid
+         %54 = OpISub %int %51 %int_1
+         %55 = OpAccessChain %_ptr_StorageBuffer_int %x_7 %uint_1 %54
+         %56 = OpLoad %int %55
+         %57 = OpLoad %int %val
+         %58 = OpIAdd %int %57 %56
+               OpStore %val %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+         %61 = OpLoad %float %60
+         %63 = OpFOrdGreaterThan %bool %61 %float_100
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %37
+         %64 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %38
+         %38 = OpLabel
+         %69 = OpLoad %int %i
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %i %70
+               OpBranch %36
+         %37 = OpLabel
+         %71 = OpLoad %int %lid
+         %72 = OpIEqual %bool %71 %int_0
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpAccessChain %_ptr_StorageBuffer_int %x_7 %uint_1 %int_0
+               OpStore %75 %int_42
+               OpBranch %73
+         %73 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %78 = OpLabel
+         %79 = OpLoad %v3uint %tint_symbol
+               OpStore %gl_LocalInvocationID %79
+         %80 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f57b088
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,64 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct doesNotMatter {
+  global_seed : i32;
+  data : RTArr;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_LocalInvocationID : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_7 : doesNotMatter;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn main_1() {
+  var lid : i32;
+  var val : i32;
+  var i : i32;
+  let x_40 : u32 = gl_LocalInvocationID.x;
+  lid = bitcast<i32>(x_40);
+  let x_43 : i32 = x_7.global_seed;
+  val = x_43;
+  i = 0;
+  loop {
+    let x_48 : i32 = i;
+    if ((x_48 < 2)) {
+    } else {
+      break;
+    }
+    let x_51 : i32 = lid;
+    if ((x_51 > 0)) {
+      let x_55 : i32 = lid;
+      let x_58 : i32 = x_7.data[(x_55 - 1)];
+      let x_59 : i32 = val;
+      val = (x_59 + x_58);
+      let x_62 : f32 = x_10.injectionSwitch.x;
+      if ((x_62 > 100.0)) {
+        break;
+      }
+    }
+    workgroupBarrier();
+
+    continuing {
+      let x_66 : i32 = i;
+      i = (x_66 + 1);
+    }
+  }
+  let x_68 : i32 = lid;
+  if ((x_68 == 0)) {
+    x_7.data[0] = 42;
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(16, 1, 1)]]
+fn main([[builtin(local_invocation_id)]] gl_LocalInvocationID_param : vec3<u32>) {
+  gl_LocalInvocationID = gl_LocalInvocationID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
new file mode 100644
index 0000000..f57b088
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
@@ -0,0 +1,64 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct doesNotMatter {
+  global_seed : i32;
+  data : RTArr;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_LocalInvocationID : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_7 : doesNotMatter;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn main_1() {
+  var lid : i32;
+  var val : i32;
+  var i : i32;
+  let x_40 : u32 = gl_LocalInvocationID.x;
+  lid = bitcast<i32>(x_40);
+  let x_43 : i32 = x_7.global_seed;
+  val = x_43;
+  i = 0;
+  loop {
+    let x_48 : i32 = i;
+    if ((x_48 < 2)) {
+    } else {
+      break;
+    }
+    let x_51 : i32 = lid;
+    if ((x_51 > 0)) {
+      let x_55 : i32 = lid;
+      let x_58 : i32 = x_7.data[(x_55 - 1)];
+      let x_59 : i32 = val;
+      val = (x_59 + x_58);
+      let x_62 : f32 = x_10.injectionSwitch.x;
+      if ((x_62 > 100.0)) {
+        break;
+      }
+    }
+    workgroupBarrier();
+
+    continuing {
+      let x_66 : i32 = i;
+      i = (x_66 + 1);
+    }
+  }
+  let x_68 : i32 = lid;
+  if ((x_68 == 0)) {
+    x_7.data[0] = 42;
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(16, 1, 1)]]
+fn main([[builtin(local_invocation_id)]] gl_LocalInvocationID_param : vec3<u32>) {
+  gl_LocalInvocationID = gl_LocalInvocationID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9ed54bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,45 @@
+static uint3 gl_LocalInvocationID = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_7 : register(u0, space0);
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[1];
+};
+
+void main_1() {
+  int lid = 0;
+  int val = 0;
+  int i = 0;
+  const uint x_40 = gl_LocalInvocationID.x;
+  lid = asint(x_40);
+  const int x_43 = asint(x_7.Load(0u));
+  val = x_43;
+  i = 0;
+  {
+    for(; (i < 2); i = (i + 1)) {
+      if ((lid > 0)) {
+        const int x_58 = asint(x_7.Load((4u + (4u * uint((lid - 1))))));
+        val = (val + x_58);
+        const float x_62 = asfloat(x_10[0].x);
+        if ((x_62 > 100.0f)) {
+          break;
+        }
+      }
+      GroupMemoryBarrierWithGroupSync();
+    }
+  }
+  if ((lid == 0)) {
+    x_7.Store((4u + (4u * uint(0))), asuint(42));
+  }
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 gl_LocalInvocationID_param : SV_GroupThreadID;
+};
+
+[numthreads(16, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 gl_LocalInvocationID_param = tint_symbol.gl_LocalInvocationID_param;
+  gl_LocalInvocationID = gl_LocalInvocationID_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..99eb99a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct doesNotMatter {
+  /* 0x0000 */ int global_seed;
+  /* 0x0004 */ int data[1];
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+
+void main_1(constant buf1& x_10, device doesNotMatter& x_7, thread uint3* const tint_symbol_2) {
+  int lid = 0;
+  int val = 0;
+  int i = 0;
+  uint const x_40 = (*(tint_symbol_2)).x;
+  lid = as_type<int>(x_40);
+  int const x_43 = x_7.global_seed;
+  val = x_43;
+  i = 0;
+  while (true) {
+    int const x_48 = i;
+    if ((x_48 < 2)) {
+    } else {
+      break;
+    }
+    int const x_51 = lid;
+    if ((x_51 > 0)) {
+      int const x_55 = lid;
+      int const x_58 = x_7.data[(x_55 - 1)];
+      int const x_59 = val;
+      val = (x_59 + x_58);
+      float const x_62 = x_10.injectionSwitch.x;
+      if ((x_62 > 100.0f)) {
+        break;
+      }
+    }
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+    {
+      int const x_66 = i;
+      i = (x_66 + 1);
+    }
+  }
+  int const x_68 = lid;
+  if ((x_68 == 0)) {
+    x_7.data[0] = 42;
+  }
+  return;
+}
+
+kernel void tint_symbol(uint3 gl_LocalInvocationID_param [[thread_position_in_threadgroup]], constant buf1& x_10 [[buffer(1)]], device doesNotMatter& x_7 [[buffer(0)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = gl_LocalInvocationID_param;
+  main_1(x_10, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..552cb1b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,144 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 81
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 16 1 1
+               OpName %gl_LocalInvocationID "gl_LocalInvocationID"
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "global_seed"
+               OpMemberName %doesNotMatter 1 "data"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %lid "lid"
+               OpName %val "val"
+               OpName %i "i"
+               OpName %main "main"
+               OpDecorate %doesNotMatter Block
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpMemberDecorate %doesNotMatter 1 Offset 4
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol BuiltIn LocalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+%gl_LocalInvocationID = OpVariable %_ptr_Private_v3uint Private %5
+        %int = OpTypeInt 32 1
+%_runtimearr_int = OpTypeRuntimeArray %int
+%doesNotMatter = OpTypeStruct %int %_runtimearr_int
+%_ptr_StorageBuffer_doesNotMatter = OpTypePointer StorageBuffer %doesNotMatter
+        %x_7 = OpVariable %_ptr_StorageBuffer_doesNotMatter StorageBuffer
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+  %float_100 = OpConstant %float 100
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+     %int_42 = OpConstant %int 42
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+        %lid = OpVariable %_ptr_Function_int Function %24
+        %val = OpVariable %_ptr_Function_int Function %24
+          %i = OpVariable %_ptr_Function_int Function %24
+         %29 = OpAccessChain %_ptr_Private_uint %gl_LocalInvocationID %uint_0
+         %30 = OpLoad %uint %29
+         %31 = OpBitcast %int %30
+               OpStore %lid %31
+         %33 = OpAccessChain %_ptr_StorageBuffer_int %x_7 %uint_0
+         %34 = OpLoad %int %33
+               OpStore %val %34
+               OpStore %i %int_0
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpSLessThan %bool %40 %int_2
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %37
+         %44 = OpLabel
+         %47 = OpLoad %int %lid
+         %48 = OpSGreaterThan %bool %47 %int_0
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+         %51 = OpLoad %int %lid
+         %54 = OpISub %int %51 %int_1
+         %55 = OpAccessChain %_ptr_StorageBuffer_int %x_7 %uint_1 %54
+         %56 = OpLoad %int %55
+         %57 = OpLoad %int %val
+         %58 = OpIAdd %int %57 %56
+               OpStore %val %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+         %61 = OpLoad %float %60
+         %63 = OpFOrdGreaterThan %bool %61 %float_100
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %37
+         %64 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %38
+         %38 = OpLabel
+         %69 = OpLoad %int %i
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %i %70
+               OpBranch %36
+         %37 = OpLabel
+         %71 = OpLoad %int %lid
+         %72 = OpIEqual %bool %71 %int_0
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpAccessChain %_ptr_StorageBuffer_int %x_7 %uint_1 %int_0
+               OpStore %75 %int_42
+               OpBranch %73
+         %73 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %78 = OpLabel
+         %79 = OpLoad %v3uint %tint_symbol
+               OpStore %gl_LocalInvocationID %79
+         %80 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f57b088
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,64 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct doesNotMatter {
+  global_seed : i32;
+  data : RTArr;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_LocalInvocationID : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_7 : doesNotMatter;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn main_1() {
+  var lid : i32;
+  var val : i32;
+  var i : i32;
+  let x_40 : u32 = gl_LocalInvocationID.x;
+  lid = bitcast<i32>(x_40);
+  let x_43 : i32 = x_7.global_seed;
+  val = x_43;
+  i = 0;
+  loop {
+    let x_48 : i32 = i;
+    if ((x_48 < 2)) {
+    } else {
+      break;
+    }
+    let x_51 : i32 = lid;
+    if ((x_51 > 0)) {
+      let x_55 : i32 = lid;
+      let x_58 : i32 = x_7.data[(x_55 - 1)];
+      let x_59 : i32 = val;
+      val = (x_59 + x_58);
+      let x_62 : f32 = x_10.injectionSwitch.x;
+      if ((x_62 > 100.0)) {
+        break;
+      }
+    }
+    workgroupBarrier();
+
+    continuing {
+      let x_66 : i32 = i;
+      i = (x_66 + 1);
+    }
+  }
+  let x_68 : i32 = lid;
+  if ((x_68 == 0)) {
+    x_7.data[0] = 42;
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(16, 1, 1)]]
+fn main([[builtin(local_invocation_id)]] gl_LocalInvocationID_param : vec3<u32>) {
+  gl_LocalInvocationID = gl_LocalInvocationID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm
new file mode 100644
index 0000000..e46b7c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm
@@ -0,0 +1,68 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %GLF_live12c5 "GLF_live12c5"
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+      %false = OpConstantFalse %bool
+       %main = OpFunction %void None %8
+         %25 = OpLabel
+%GLF_live12c5 = OpVariable %_ptr_Function_bool Function
+               OpStore %_GLF_color %14
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %31 = OpLoad %float %30
+         %32 = OpFOrdLessThan %bool %31 %float_0
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+               OpStore %GLF_live12c5 %false
+         %35 = OpLoad %bool %GLF_live12c5
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %28
+         %37 = OpLabel
+               OpBranch %28
+         %36 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+               OpBranchConditional %false %26 %27
+         %33 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..896cc41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,61 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  bool GLF_live12c5 = false;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    const float x_31 = asfloat(x_5[0].y);
+    if ((x_31 < 0.0f)) {
+      GLF_live12c5 = false;
+      if (GLF_live12c5) {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      } else {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    break;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f5bdadc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool GLF_live12c5 = false;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    float const x_31 = x_5.injectionSwitch.y;
+    if ((x_31 < 0.0f)) {
+      GLF_live12c5 = false;
+      bool const x_35 = GLF_live12c5;
+      if (x_35) {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      } else {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    break;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..84e6aca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,113 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %GLF_live12c5 "GLF_live12c5"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+%GLF_live12c5 = OpVariable %_ptr_Function_bool Function %19
+               OpStore %x_GLF_color %22
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFOrdLessThan %bool %32 %float_0
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+               OpStore %GLF_live12c5 %false
+         %37 = OpLoad %bool %GLF_live12c5
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+               OpBranch %25
+         %40 = OpLabel
+               OpBranch %25
+         %38 = OpLabel
+               OpBranch %25
+         %34 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+               OpSelectionMerge %41 None
+               OpBranchConditional %false %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %24
+         %41 = OpLabel
+               OpBranch %23
+         %24 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 25[%25] is not post dominated by the back-edge block 41[%41]
+  %41 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..4e7bacd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var GLF_live12c5 : bool;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  loop {
+    let x_31 : f32 = x_5.injectionSwitch.y;
+    if ((x_31 < 0.0)) {
+      GLF_live12c5 = false;
+      let x_35 : bool = GLF_live12c5;
+      if (x_35) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    break;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
new file mode 100644
index 0000000..4e7bacd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var GLF_live12c5 : bool;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  loop {
+    let x_31 : f32 = x_5.injectionSwitch.y;
+    if ((x_31 < 0.0)) {
+      GLF_live12c5 = false;
+      let x_35 : bool = GLF_live12c5;
+      if (x_35) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    break;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..896cc41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,61 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  bool GLF_live12c5 = false;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    const float x_31 = asfloat(x_5[0].y);
+    if ((x_31 < 0.0f)) {
+      GLF_live12c5 = false;
+      if (GLF_live12c5) {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      } else {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    break;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f5bdadc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool GLF_live12c5 = false;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    float const x_31 = x_5.injectionSwitch.y;
+    if ((x_31 < 0.0f)) {
+      GLF_live12c5 = false;
+      bool const x_35 = GLF_live12c5;
+      if (x_35) {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      } else {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    break;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..84e6aca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,113 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %GLF_live12c5 "GLF_live12c5"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+%GLF_live12c5 = OpVariable %_ptr_Function_bool Function %19
+               OpStore %x_GLF_color %22
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFOrdLessThan %bool %32 %float_0
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+               OpStore %GLF_live12c5 %false
+         %37 = OpLoad %bool %GLF_live12c5
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+               OpBranch %25
+         %40 = OpLabel
+               OpBranch %25
+         %38 = OpLabel
+               OpBranch %25
+         %34 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+               OpSelectionMerge %41 None
+               OpBranchConditional %false %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %24
+         %41 = OpLabel
+               OpBranch %23
+         %24 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 25[%25] is not post dominated by the back-edge block 41[%41]
+  %41 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..4e7bacd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var GLF_live12c5 : bool;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  loop {
+    let x_31 : f32 = x_5.injectionSwitch.y;
+    if ((x_31 < 0.0)) {
+      GLF_live12c5 = false;
+      let x_35 : bool = GLF_live12c5;
+      if (x_35) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    break;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm
new file mode 100644
index 0000000..d6c3f47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm
@@ -0,0 +1,59 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %float_1 = OpConstant %float 1
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %8
+         %22 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %23
+         %23 = OpLabel
+         %24 = OpFunctionCall %void %func_
+               OpLoopMerge %25 %23 None
+               OpBranchConditional %false %23 %25
+         %25 = OpLabel
+               OpStore %_GLF_color %21
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %void None %8
+         %26 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %28 = OpLoad %float %27
+         %29 = OpFOrdGreaterThan %bool %float_1 %28
+               OpSelectionMerge %30 None
+               OpBranchConditional %29 %31 %30
+         %31 = OpLabel
+               OpKill
+         %30 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..993c3df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,39 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_() {
+  const float x_28 = asfloat(x_6[0].x);
+  if ((1.0f > x_28)) {
+    discard;
+  }
+  return;
+}
+
+void main_1() {
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  while (true) {
+    func_();
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..54b06ad
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.msl
@@ -0,0 +1,42 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_(constant buf0& x_6) {
+  float const x_28 = x_6.one;
+  if ((1.0f > x_28)) {
+    discard_fragment();
+  }
+  return;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  while (true) {
+    func_(x_6);
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5378d74
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,101 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 51
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %39 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %19 = OpLoad %float %18
+         %21 = OpFOrdGreaterThan %bool %float_1 %19
+               OpSelectionMerge %23 None
+               OpBranchConditional %21 %24 %23
+         %24 = OpLabel
+               OpKill
+         %23 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %11
+         %26 = OpLabel
+               OpStore %x_GLF_color %28
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %func_
+               OpSelectionMerge %35 None
+               OpBranchConditional %false %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %30
+         %35 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+               OpBranch %29
+         %30 = OpLabel
+               OpStore %x_GLF_color %38
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %39
+%tint_symbol = OpFunctionParameter %main_out
+         %43 = OpLabel
+         %44 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %44
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %main_1
+         %49 = OpLoad %v4float %x_GLF_color
+         %50 = OpCompositeConstruct %main_out %49
+         %48 = OpFunctionCall %void %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..64f1aaa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() {
+  let x_28 : f32 = x_6.one;
+  if ((1.0 > x_28)) {
+    discard;
+  }
+  return;
+}
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  loop {
+    func_();
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
new file mode 100644
index 0000000..64f1aaa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() {
+  let x_28 : f32 = x_6.one;
+  if ((1.0 > x_28)) {
+    discard;
+  }
+  return;
+}
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  loop {
+    func_();
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..993c3df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,39 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_() {
+  const float x_28 = asfloat(x_6[0].x);
+  if ((1.0f > x_28)) {
+    discard;
+  }
+  return;
+}
+
+void main_1() {
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  while (true) {
+    func_();
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..54b06ad
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.msl
@@ -0,0 +1,42 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_(constant buf0& x_6) {
+  float const x_28 = x_6.one;
+  if ((1.0f > x_28)) {
+    discard_fragment();
+  }
+  return;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  while (true) {
+    func_(x_6);
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5378d74
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,101 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 51
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %39 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %19 = OpLoad %float %18
+         %21 = OpFOrdGreaterThan %bool %float_1 %19
+               OpSelectionMerge %23 None
+               OpBranchConditional %21 %24 %23
+         %24 = OpLabel
+               OpKill
+         %23 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %11
+         %26 = OpLabel
+               OpStore %x_GLF_color %28
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %func_
+               OpSelectionMerge %35 None
+               OpBranchConditional %false %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %30
+         %35 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+               OpBranch %29
+         %30 = OpLabel
+               OpStore %x_GLF_color %38
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %39
+%tint_symbol = OpFunctionParameter %main_out
+         %43 = OpLabel
+         %44 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %44
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %main_1
+         %49 = OpLoad %v4float %x_GLF_color
+         %50 = OpCompositeConstruct %main_out %49
+         %48 = OpFunctionCall %void %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..64f1aaa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() {
+  let x_28 : f32 = x_6.one;
+  if ((1.0 > x_28)) {
+    discard;
+  }
+  return;
+}
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  loop {
+    func_();
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm
new file mode 100644
index 0000000..07f5e01
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm
@@ -0,0 +1,93 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %data "data"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %data RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %int_2 = OpConstant %int 2
+       %main = OpFunction %void None %13
+         %36 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function
+         %37 = OpAccessChain %_ptr_Function_int %data %int_1
+          %7 = OpLoad %int %37
+         %38 = OpSLessThan %bool %int_1 %7
+         %10 = OpSelect %int %38 %int_2 %int_1
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpPhi %int %int_1 %36 %41 %42
+         %11 = OpPhi %int %10 %36 %8 %42
+         %43 = OpSLessThan %bool %11 %int_3
+               OpLoopMerge %44 %42 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+          %8 = OpIAdd %int %11 %int_1
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %47 = OpLoad %float %46
+         %48 = OpConvertFToS %int %47
+               OpSelectionMerge %49 None
+               OpSwitch %48 %50 19 %51 38 %52 23 %52 78 %53
+         %50 = OpLabel
+               OpBranch %42
+         %51 = OpLabel
+          %9 = OpIAdd %int %40 %int_1
+               OpBranch %52
+         %52 = OpLabel
+         %54 = OpPhi %int %40 %45 %9 %51
+               OpBranch %42
+         %53 = OpLabel
+               OpStore %_GLF_color %31
+               OpBranch %50
+         %49 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+         %41 = OpPhi %int %40 %50 %54 %52 %int_0 %49
+               OpBranch %39
+         %44 = OpLabel
+         %55 = OpAccessChain %_ptr_Function_int %data %40
+               OpStore %55 %int_1
+               OpStore %_GLF_color %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1dab6f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,85 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int data[10] = (int[10])0;
+  int x_40 = 0;
+  int x_40_phi = 0;
+  int x_11_phi = 0;
+  const int x_7 = data[1];
+  const int x_10 = ((1 < x_7) ? 2 : 1);
+  x_40_phi = 1;
+  x_11_phi = x_10;
+  while (true) {
+    int x_54 = 0;
+    int x_41 = 0;
+    int x_41_phi = 0;
+    x_40 = x_40_phi;
+    const int x_11 = x_11_phi;
+    if ((x_11 < 3)) {
+    } else {
+      break;
+    }
+    int x_54_phi = 0;
+    const int x_8 = (x_11 + 1);
+    const float x_47 = asfloat(x_6[0].x);
+    x_54_phi = x_40;
+    switch(int(x_47)) {
+      case 78: {
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        /* fallthrough */
+      }
+      case 19: {
+        x_54_phi = asint((x_40 + asint(1)));
+        /* fallthrough */
+      }
+      case 23:
+      case 38: {
+        x_54 = x_54_phi;
+        x_41_phi = x_54;
+        {
+          x_41 = x_41_phi;
+          x_40_phi = x_41;
+          x_11_phi = x_8;
+        }
+        continue;
+        break;
+      }
+      default: {
+        x_41_phi = x_40;
+        {
+          x_41 = x_41_phi;
+          x_40_phi = x_41;
+          x_11_phi = x_8;
+        }
+        continue;
+        break;
+      }
+    }
+    x_41_phi = 0;
+    {
+      x_41 = x_41_phi;
+      x_40_phi = x_41;
+      x_11_phi = x_8;
+    }
+  }
+  data[x_40] = 1;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1063af2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  tint_array_wrapper data = {};
+  int x_40 = 0;
+  int x_40_phi = 0;
+  int x_11_phi = 0;
+  int const x_7 = data.arr[1];
+  int const x_10 = select(1, 2, (1 < x_7));
+  x_40_phi = 1;
+  x_11_phi = x_10;
+  while (true) {
+    int x_54 = 0;
+    int x_41 = 0;
+    int x_41_phi = 0;
+    x_40 = x_40_phi;
+    int const x_11 = x_11_phi;
+    if ((x_11 < 3)) {
+    } else {
+      break;
+    }
+    int x_54_phi = 0;
+    int const x_8 = (x_11 + 1);
+    float const x_47 = x_6.injectionSwitch.x;
+    x_54_phi = x_40;
+    switch(int(x_47)) {
+      case 78: {
+        *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        /* fallthrough */
+      }
+      case 19: {
+        x_54_phi = as_type<int>((x_40 + as_type<int>(1)));
+        /* fallthrough */
+      }
+      case 23:
+      case 38: {
+        x_54 = x_54_phi;
+        x_41_phi = x_54;
+        {
+          x_41 = x_41_phi;
+          x_40_phi = x_41;
+          x_11_phi = x_8;
+        }
+        continue;
+        break;
+      }
+      default: {
+        x_41_phi = x_40;
+        {
+          x_41 = x_41_phi;
+          x_40_phi = x_41;
+          x_11_phi = x_8;
+        }
+        continue;
+        break;
+      }
+    }
+    x_41_phi = 0;
+    {
+      x_41 = x_41_phi;
+      x_40_phi = x_41;
+      x_11_phi = x_8;
+    }
+  }
+  data.arr[x_40] = 1;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..556a05f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,162 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %x_40 "x_40"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_11_phi "x_11_phi"
+               OpName %x_54 "x_54"
+               OpName %x_41 "x_41"
+               OpName %x_41_phi "x_41_phi"
+               OpName %x_54_phi "x_54_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %22 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %63 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+         %77 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %78 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function %22
+       %x_40 = OpVariable %_ptr_Function_int Function %25
+   %x_40_phi = OpVariable %_ptr_Function_int Function %25
+   %x_11_phi = OpVariable %_ptr_Function_int Function %25
+       %x_54 = OpVariable %_ptr_Function_int Function %25
+       %x_41 = OpVariable %_ptr_Function_int Function %25
+   %x_41_phi = OpVariable %_ptr_Function_int Function %25
+   %x_54_phi = OpVariable %_ptr_Function_int Function %25
+         %29 = OpAccessChain %_ptr_Function_int %data %int_1
+         %30 = OpLoad %int %29
+         %32 = OpSLessThan %bool %int_1 %30
+         %31 = OpSelect %int %32 %int_2 %int_1
+               OpStore %x_40_phi %int_1
+               OpStore %x_11_phi %31
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %42 = OpLoad %int %x_40_phi
+               OpStore %x_40 %42
+         %43 = OpLoad %int %x_11_phi
+         %45 = OpSLessThan %bool %43 %int_3
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %36
+         %46 = OpLabel
+         %50 = OpIAdd %int %43 %int_1
+         %53 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %54 = OpLoad %float %53
+         %55 = OpLoad %int %x_40
+               OpStore %x_54_phi %55
+         %57 = OpConvertFToS %int %54
+               OpSelectionMerge %56 None
+               OpSwitch %57 %58 78 %59 19 %60 23 %61 38 %61
+         %59 = OpLabel
+               OpStore %x_GLF_color %63
+               OpBranch %60
+         %60 = OpLabel
+         %65 = OpLoad %int %x_40
+         %66 = OpCopyObject %int %int_1
+         %67 = OpIAdd %int %65 %66
+         %64 = OpCopyObject %int %67
+               OpStore %x_54_phi %64
+               OpBranch %61
+         %61 = OpLabel
+         %68 = OpLoad %int %x_54_phi
+               OpStore %x_54 %68
+         %69 = OpLoad %int %x_54
+               OpStore %x_41_phi %69
+               OpBranch %37
+         %58 = OpLabel
+         %70 = OpLoad %int %x_40
+               OpStore %x_41_phi %70
+               OpBranch %37
+         %56 = OpLabel
+               OpStore %x_41_phi %int_0
+               OpBranch %37
+         %37 = OpLabel
+         %72 = OpLoad %int %x_41_phi
+               OpStore %x_41 %72
+         %73 = OpLoad %int %x_41
+               OpStore %x_40_phi %73
+               OpStore %x_11_phi %50
+               OpBranch %35
+         %36 = OpLabel
+         %74 = OpLoad %int %x_40
+         %75 = OpAccessChain %_ptr_Function_int %data %74
+               OpStore %75 %int_1
+               OpStore %x_GLF_color %77
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %78
+%tint_symbol = OpFunctionParameter %main_out
+         %82 = OpLabel
+         %83 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %83
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %85 = OpLabel
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_2 %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e49880e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,74 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<i32, 10>;
+  var x_40 : i32;
+  var x_40_phi : i32;
+  var x_11_phi : i32;
+  let x_7 : i32 = data[1];
+  let x_10 : i32 = select(1, 2, (1 < x_7));
+  x_40_phi = 1;
+  x_11_phi = x_10;
+  loop {
+    var x_54 : i32;
+    var x_41 : i32;
+    var x_41_phi : i32;
+    x_40 = x_40_phi;
+    let x_11 : i32 = x_11_phi;
+    if ((x_11 < 3)) {
+    } else {
+      break;
+    }
+    var x_54_phi : i32;
+    let x_8 : i32 = (x_11 + 1);
+    let x_47 : f32 = x_6.injectionSwitch.x;
+    x_54_phi = x_40;
+    switch(i32(x_47)) {
+      case 78: {
+        x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+        fallthrough;
+      }
+      case 19: {
+        x_54_phi = bitcast<i32>((x_40 + bitcast<i32>(1)));
+        fallthrough;
+      }
+      case 23, 38: {
+        x_54 = x_54_phi;
+        x_41_phi = x_54;
+        continue;
+      }
+      default: {
+        x_41_phi = x_40;
+        continue;
+      }
+    }
+    x_41_phi = 0;
+
+    continuing {
+      x_41 = x_41_phi;
+      x_40_phi = x_41;
+      x_11_phi = x_8;
+    }
+  }
+  data[x_40] = 1;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
new file mode 100644
index 0000000..e49880e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
@@ -0,0 +1,74 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<i32, 10>;
+  var x_40 : i32;
+  var x_40_phi : i32;
+  var x_11_phi : i32;
+  let x_7 : i32 = data[1];
+  let x_10 : i32 = select(1, 2, (1 < x_7));
+  x_40_phi = 1;
+  x_11_phi = x_10;
+  loop {
+    var x_54 : i32;
+    var x_41 : i32;
+    var x_41_phi : i32;
+    x_40 = x_40_phi;
+    let x_11 : i32 = x_11_phi;
+    if ((x_11 < 3)) {
+    } else {
+      break;
+    }
+    var x_54_phi : i32;
+    let x_8 : i32 = (x_11 + 1);
+    let x_47 : f32 = x_6.injectionSwitch.x;
+    x_54_phi = x_40;
+    switch(i32(x_47)) {
+      case 78: {
+        x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+        fallthrough;
+      }
+      case 19: {
+        x_54_phi = bitcast<i32>((x_40 + bitcast<i32>(1)));
+        fallthrough;
+      }
+      case 23, 38: {
+        x_54 = x_54_phi;
+        x_41_phi = x_54;
+        continue;
+      }
+      default: {
+        x_41_phi = x_40;
+        continue;
+      }
+    }
+    x_41_phi = 0;
+
+    continuing {
+      x_41 = x_41_phi;
+      x_40_phi = x_41;
+      x_11_phi = x_8;
+    }
+  }
+  data[x_40] = 1;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1dab6f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,85 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int data[10] = (int[10])0;
+  int x_40 = 0;
+  int x_40_phi = 0;
+  int x_11_phi = 0;
+  const int x_7 = data[1];
+  const int x_10 = ((1 < x_7) ? 2 : 1);
+  x_40_phi = 1;
+  x_11_phi = x_10;
+  while (true) {
+    int x_54 = 0;
+    int x_41 = 0;
+    int x_41_phi = 0;
+    x_40 = x_40_phi;
+    const int x_11 = x_11_phi;
+    if ((x_11 < 3)) {
+    } else {
+      break;
+    }
+    int x_54_phi = 0;
+    const int x_8 = (x_11 + 1);
+    const float x_47 = asfloat(x_6[0].x);
+    x_54_phi = x_40;
+    switch(int(x_47)) {
+      case 78: {
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        /* fallthrough */
+      }
+      case 19: {
+        x_54_phi = asint((x_40 + asint(1)));
+        /* fallthrough */
+      }
+      case 23:
+      case 38: {
+        x_54 = x_54_phi;
+        x_41_phi = x_54;
+        {
+          x_41 = x_41_phi;
+          x_40_phi = x_41;
+          x_11_phi = x_8;
+        }
+        continue;
+        break;
+      }
+      default: {
+        x_41_phi = x_40;
+        {
+          x_41 = x_41_phi;
+          x_40_phi = x_41;
+          x_11_phi = x_8;
+        }
+        continue;
+        break;
+      }
+    }
+    x_41_phi = 0;
+    {
+      x_41 = x_41_phi;
+      x_40_phi = x_41;
+      x_11_phi = x_8;
+    }
+  }
+  data[x_40] = 1;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1063af2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  tint_array_wrapper data = {};
+  int x_40 = 0;
+  int x_40_phi = 0;
+  int x_11_phi = 0;
+  int const x_7 = data.arr[1];
+  int const x_10 = select(1, 2, (1 < x_7));
+  x_40_phi = 1;
+  x_11_phi = x_10;
+  while (true) {
+    int x_54 = 0;
+    int x_41 = 0;
+    int x_41_phi = 0;
+    x_40 = x_40_phi;
+    int const x_11 = x_11_phi;
+    if ((x_11 < 3)) {
+    } else {
+      break;
+    }
+    int x_54_phi = 0;
+    int const x_8 = (x_11 + 1);
+    float const x_47 = x_6.injectionSwitch.x;
+    x_54_phi = x_40;
+    switch(int(x_47)) {
+      case 78: {
+        *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        /* fallthrough */
+      }
+      case 19: {
+        x_54_phi = as_type<int>((x_40 + as_type<int>(1)));
+        /* fallthrough */
+      }
+      case 23:
+      case 38: {
+        x_54 = x_54_phi;
+        x_41_phi = x_54;
+        {
+          x_41 = x_41_phi;
+          x_40_phi = x_41;
+          x_11_phi = x_8;
+        }
+        continue;
+        break;
+      }
+      default: {
+        x_41_phi = x_40;
+        {
+          x_41 = x_41_phi;
+          x_40_phi = x_41;
+          x_11_phi = x_8;
+        }
+        continue;
+        break;
+      }
+    }
+    x_41_phi = 0;
+    {
+      x_41 = x_41_phi;
+      x_40_phi = x_41;
+      x_11_phi = x_8;
+    }
+  }
+  data.arr[x_40] = 1;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..556a05f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,162 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %x_40 "x_40"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_11_phi "x_11_phi"
+               OpName %x_54 "x_54"
+               OpName %x_41 "x_41"
+               OpName %x_41_phi "x_41_phi"
+               OpName %x_54_phi "x_54_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %22 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %63 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+         %77 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %78 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function %22
+       %x_40 = OpVariable %_ptr_Function_int Function %25
+   %x_40_phi = OpVariable %_ptr_Function_int Function %25
+   %x_11_phi = OpVariable %_ptr_Function_int Function %25
+       %x_54 = OpVariable %_ptr_Function_int Function %25
+       %x_41 = OpVariable %_ptr_Function_int Function %25
+   %x_41_phi = OpVariable %_ptr_Function_int Function %25
+   %x_54_phi = OpVariable %_ptr_Function_int Function %25
+         %29 = OpAccessChain %_ptr_Function_int %data %int_1
+         %30 = OpLoad %int %29
+         %32 = OpSLessThan %bool %int_1 %30
+         %31 = OpSelect %int %32 %int_2 %int_1
+               OpStore %x_40_phi %int_1
+               OpStore %x_11_phi %31
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %42 = OpLoad %int %x_40_phi
+               OpStore %x_40 %42
+         %43 = OpLoad %int %x_11_phi
+         %45 = OpSLessThan %bool %43 %int_3
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %36
+         %46 = OpLabel
+         %50 = OpIAdd %int %43 %int_1
+         %53 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %54 = OpLoad %float %53
+         %55 = OpLoad %int %x_40
+               OpStore %x_54_phi %55
+         %57 = OpConvertFToS %int %54
+               OpSelectionMerge %56 None
+               OpSwitch %57 %58 78 %59 19 %60 23 %61 38 %61
+         %59 = OpLabel
+               OpStore %x_GLF_color %63
+               OpBranch %60
+         %60 = OpLabel
+         %65 = OpLoad %int %x_40
+         %66 = OpCopyObject %int %int_1
+         %67 = OpIAdd %int %65 %66
+         %64 = OpCopyObject %int %67
+               OpStore %x_54_phi %64
+               OpBranch %61
+         %61 = OpLabel
+         %68 = OpLoad %int %x_54_phi
+               OpStore %x_54 %68
+         %69 = OpLoad %int %x_54
+               OpStore %x_41_phi %69
+               OpBranch %37
+         %58 = OpLabel
+         %70 = OpLoad %int %x_40
+               OpStore %x_41_phi %70
+               OpBranch %37
+         %56 = OpLabel
+               OpStore %x_41_phi %int_0
+               OpBranch %37
+         %37 = OpLabel
+         %72 = OpLoad %int %x_41_phi
+               OpStore %x_41 %72
+         %73 = OpLoad %int %x_41
+               OpStore %x_40_phi %73
+               OpStore %x_11_phi %50
+               OpBranch %35
+         %36 = OpLabel
+         %74 = OpLoad %int %x_40
+         %75 = OpAccessChain %_ptr_Function_int %data %74
+               OpStore %75 %int_1
+               OpStore %x_GLF_color %77
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %78
+%tint_symbol = OpFunctionParameter %main_out
+         %82 = OpLabel
+         %83 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %83
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %85 = OpLabel
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_2 %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e49880e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,74 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<i32, 10>;
+  var x_40 : i32;
+  var x_40_phi : i32;
+  var x_11_phi : i32;
+  let x_7 : i32 = data[1];
+  let x_10 : i32 = select(1, 2, (1 < x_7));
+  x_40_phi = 1;
+  x_11_phi = x_10;
+  loop {
+    var x_54 : i32;
+    var x_41 : i32;
+    var x_41_phi : i32;
+    x_40 = x_40_phi;
+    let x_11 : i32 = x_11_phi;
+    if ((x_11 < 3)) {
+    } else {
+      break;
+    }
+    var x_54_phi : i32;
+    let x_8 : i32 = (x_11 + 1);
+    let x_47 : f32 = x_6.injectionSwitch.x;
+    x_54_phi = x_40;
+    switch(i32(x_47)) {
+      case 78: {
+        x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+        fallthrough;
+      }
+      case 19: {
+        x_54_phi = bitcast<i32>((x_40 + bitcast<i32>(1)));
+        fallthrough;
+      }
+      case 23, 38: {
+        x_54 = x_54_phi;
+        x_41_phi = x_54;
+        continue;
+      }
+      default: {
+        x_41_phi = x_40;
+        continue;
+      }
+    }
+    x_41_phi = 0;
+
+    continuing {
+      x_41 = x_41_phi;
+      x_40_phi = x_41;
+      x_11_phi = x_8;
+    }
+  }
+  data[x_40] = 1;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm
new file mode 100644
index 0000000..79f78a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm
@@ -0,0 +1,62 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %7
+         %24 = OpLabel
+         %25 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpFOrdGreaterThan %bool %26 %float_1
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %32
+         %32 = OpLabel
+               OpBranch %30
+         %31 = OpLabel
+               OpUnreachable
+         %28 = OpLabel
+               OpStore %_GLF_color %23
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.hlsl
new file mode 100755
index 0000000..4f12524
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_26 = asfloat(x_5[0].x);
+  if ((x_26 > 1.0f)) {
+    while (true) {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+    }
+    return;
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+error: validation errors
+T:\tmp\u2wg.0:25: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..7bf030e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_26 = x_5.injectionSwitch.x;
+  if ((x_26 > 1.0f)) {
+    while (true) {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+    }
+    return;
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5ae61bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,88 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 45
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %33 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %20 = OpLoad %float %19
+         %22 = OpFOrdGreaterThan %bool %20 %float_1
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %24
+         %25 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %28
+         %28 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+               OpReturn
+         %24 = OpLabel
+               OpStore %x_GLF_color %32
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %33
+%tint_symbol = OpFunctionParameter %main_out
+         %37 = OpLabel
+         %38 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %38
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %main_1
+         %43 = OpLoad %v4float %x_GLF_color
+         %44 = OpCompositeConstruct %main_out %43
+         %42 = OpFunctionCall %void %tint_symbol_2 %44
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1d247e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,31 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_26 : f32 = x_5.injectionSwitch.x;
+  if ((x_26 > 1.0)) {
+    loop {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+    return;
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
new file mode 100644
index 0000000..1d247e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
@@ -0,0 +1,31 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_26 : f32 = x_5.injectionSwitch.x;
+  if ((x_26 > 1.0)) {
+    loop {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+    return;
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.hlsl
new file mode 100755
index 0000000..a19c1f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_26 = asfloat(x_5[0].x);
+  if ((x_26 > 1.0f)) {
+    while (true) {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+    }
+    return;
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+error: validation errors
+T:\tmp\uc0s.0:25: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..7bf030e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_26 = x_5.injectionSwitch.x;
+  if ((x_26 > 1.0f)) {
+    while (true) {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+    }
+    return;
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5ae61bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,88 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 45
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %33 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %20 = OpLoad %float %19
+         %22 = OpFOrdGreaterThan %bool %20 %float_1
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %24
+         %25 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %28
+         %28 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+               OpReturn
+         %24 = OpLabel
+               OpStore %x_GLF_color %32
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %33
+%tint_symbol = OpFunctionParameter %main_out
+         %37 = OpLabel
+         %38 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %38
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %main_1
+         %43 = OpLoad %v4float %x_GLF_color
+         %44 = OpCompositeConstruct %main_out %43
+         %42 = OpFunctionCall %void %tint_symbol_2 %44
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1d247e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,31 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_26 : f32 = x_5.injectionSwitch.x;
+  if ((x_26 > 1.0)) {
+    loop {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+    return;
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm
new file mode 100644
index 0000000..4154ff3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm
@@ -0,0 +1,100 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "f0"
+               OpMemberName %S 1 "f1"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %S 0 RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+          %S = OpTypeStruct %int %mat4v3float
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %23 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %24 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %25 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %26 = OpConstantComposite %mat4v3float %22 %23 %24 %25
+         %27 = OpConstantComposite %S %int_0 %26
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %37 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %int_1000 = OpConstant %int 1000
+         %39 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %14
+         %40 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpPhi %S %27 %41 %46 %47
+         %11 = OpPhi %int %int_0 %41 %9 %47
+         %48 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %49 = OpLoad %float %48
+         %50 = OpFOrdEqual %bool %49 %float_0
+         %51 = OpSelect %int %50 %int_1 %int_2
+         %52 = OpSLessThan %bool %11 %51
+               OpLoopMerge %53 %47 None
+               OpBranchConditional %52 %47 %53
+         %47 = OpLabel
+               OpStore %_GLF_color %37
+          %7 = OpCompositeExtract %int %45 0
+          %8 = OpIAdd %int %7 %int_1
+         %46 = OpCompositeInsert %S %8 %45 0
+          %9 = OpIAdd %int %11 %int_1
+               OpBranch %44
+         %53 = OpLabel
+         %10 = OpCompositeExtract %int %45 0
+         %54 = OpSLessThan %bool %10 %int_1000
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpBranch %42
+         %55 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %12 = OpPhi %int %int_0 %42 %6 %58
+         %59 = OpSLessThan %bool %12 %51
+               OpLoopMerge %60 %58 None
+               OpBranchConditional %59 %58 %60
+         %58 = OpLabel
+               OpStore %_GLF_color %39
+          %6 = OpIAdd %int %12 %int_1
+               OpBranch %57
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..f98d1d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.hlsl
@@ -0,0 +1,78 @@
+struct S {
+  int f0;
+  float4x3 f1;
+};
+
+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() {
+  int x_51 = 0;
+  int x_12_phi = 0;
+  while (true) {
+    S x_45 = (S)0;
+    S x_45_phi = (S)0;
+    int x_11_phi = 0;
+    const S tint_symbol_4 = {0, 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))};
+    x_45_phi = tint_symbol_4;
+    x_11_phi = 0;
+    while (true) {
+      S x_46 = (S)0;
+      int x_9 = 0;
+      x_45 = x_45_phi;
+      const int x_11 = x_11_phi;
+      const float x_49 = gl_FragCoord.x;
+      x_51 = ((x_49 == 0.0f) ? 1 : 2);
+      if ((x_11 < x_51)) {
+      } else {
+        break;
+      }
+      {
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        x_46 = x_45;
+        x_46.f0 = (x_45.f0 + 1);
+        x_9 = (x_11 + 1);
+        x_45_phi = x_46;
+        x_11_phi = x_9;
+      }
+    }
+    if ((x_45.f0 < 1000)) {
+      break;
+    }
+    break;
+  }
+  x_12_phi = 0;
+  while (true) {
+    int x_6 = 0;
+    const int x_12 = x_12_phi;
+    if ((x_12 < x_51)) {
+    } else {
+      break;
+    }
+    {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      x_6 = (x_12 + 1);
+      x_12_phi = x_6;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.msl
new file mode 100644
index 0000000..734666e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.msl
@@ -0,0 +1,76 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int f0;
+  float4x3 f1;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int x_51 = 0;
+  int x_12_phi = 0;
+  while (true) {
+    S x_45 = {};
+    S x_45_phi = {};
+    int x_11_phi = 0;
+    S const tint_symbol_4 = {.f0=0, .f1=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))};
+    x_45_phi = tint_symbol_4;
+    x_11_phi = 0;
+    while (true) {
+      S x_46 = {};
+      int x_9 = 0;
+      x_45 = x_45_phi;
+      int const x_11 = x_11_phi;
+      float const x_49 = (*(tint_symbol_6)).x;
+      x_51 = select(2, 1, (x_49 == 0.0f));
+      if ((x_11 < x_51)) {
+      } else {
+        break;
+      }
+      {
+        *(tint_symbol_7) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        x_46 = x_45;
+        x_46.f0 = (x_45.f0 + 1);
+        x_9 = (x_11 + 1);
+        x_45_phi = x_46;
+        x_11_phi = x_9;
+      }
+    }
+    if ((x_45.f0 < 1000)) {
+      break;
+    }
+    break;
+  }
+  x_12_phi = 0;
+  while (true) {
+    int x_6 = 0;
+    int const x_12 = x_12_phi;
+    if ((x_12 < x_51)) {
+    } else {
+      break;
+    }
+    {
+      *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      x_6 = (x_12 + 1);
+      x_12_phi = x_6;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..c5af5ad
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.spvasm
@@ -0,0 +1,190 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 106
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_51 "x_51"
+               OpName %x_12_phi "x_12_phi"
+               OpName %S "S"
+               OpMemberName %S 0 "f0"
+               OpMemberName %S 1 "f1"
+               OpName %x_45 "x_45"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_11_phi "x_11_phi"
+               OpName %x_46 "x_46"
+               OpName %x_9 "x_9"
+               OpName %x_6 "x_6"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 16
+               OpMemberDecorate %S 1 ColMajor
+               OpMemberDecorate %S 1 MatrixStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+          %S = OpTypeStruct %int %mat4v3float
+%_ptr_Function_S = OpTypePointer Function %S
+         %29 = OpConstantNull %S
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %35 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %36 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %37 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %38 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %39 = OpConstantComposite %mat4v3float %35 %36 %37 %38
+         %40 = OpConstantComposite %S %int_0 %39
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+         %64 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %int_1000 = OpConstant %int 1000
+         %90 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %93 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_51 = OpVariable %_ptr_Function_int Function %18
+   %x_12_phi = OpVariable %_ptr_Function_int Function %18
+       %x_45 = OpVariable %_ptr_Function_S Function %29
+   %x_45_phi = OpVariable %_ptr_Function_S Function %29
+   %x_11_phi = OpVariable %_ptr_Function_int Function %18
+       %x_46 = OpVariable %_ptr_Function_S Function %29
+        %x_9 = OpVariable %_ptr_Function_int Function %18
+        %x_6 = OpVariable %_ptr_Function_int Function %18
+               OpBranch %20
+         %20 = OpLabel
+               OpLoopMerge %21 %22 None
+               OpBranch %23
+         %23 = OpLabel
+               OpStore %x_45_phi %40
+               OpStore %x_11_phi %int_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %47 = OpLoad %S %x_45_phi
+               OpStore %x_45 %47
+         %48 = OpLoad %int %x_11_phi
+         %52 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %53 = OpLoad %float %52
+         %55 = OpFOrdEqual %bool %53 %float_0
+         %54 = OpSelect %int %55 %int_1 %int_2
+               OpStore %x_51 %54
+         %59 = OpLoad %int %x_51
+         %60 = OpSLessThan %bool %48 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %42
+         %61 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpStore %x_GLF_color %64
+         %65 = OpLoad %S %x_45
+               OpStore %x_46 %65
+         %66 = OpAccessChain %_ptr_Function_int %x_46 %uint_0
+         %67 = OpAccessChain %_ptr_Function_int %x_45 %uint_0
+         %68 = OpLoad %int %67
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %66 %69
+         %70 = OpIAdd %int %48 %int_1
+               OpStore %x_9 %70
+         %71 = OpLoad %S %x_46
+               OpStore %x_45_phi %71
+         %72 = OpLoad %int %x_9
+               OpStore %x_11_phi %72
+               OpBranch %41
+         %42 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_int %x_45 %uint_0
+         %74 = OpLoad %int %73
+         %76 = OpSLessThan %bool %74 %int_1000
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+               OpBranch %21
+         %77 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+               OpBranch %20
+         %21 = OpLabel
+               OpStore %x_12_phi %int_0
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %84 = OpLoad %int %x_12_phi
+         %85 = OpLoad %int %x_51
+         %86 = OpSLessThan %bool %84 %85
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %80
+         %87 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+               OpStore %x_GLF_color %90
+         %91 = OpIAdd %int %84 %int_1
+               OpStore %x_6 %91
+         %92 = OpLoad %int %x_6
+               OpStore %x_12_phi %92
+               OpBranch %79
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %93
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %97 = OpLabel
+         %98 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %98
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+        %100 = OpLabel
+        %101 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %101
+        %102 = OpFunctionCall %void %main_1
+        %104 = OpLoad %v4float %x_GLF_color
+        %105 = OpCompositeConstruct %main_out %104
+        %103 = OpFunctionCall %void %tint_symbol_3 %105
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..088c0f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.spvasm.expected.wgsl
@@ -0,0 +1,73 @@
+struct S {
+  f0 : i32;
+  f1 : mat4x3<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_51 : i32;
+  var x_12_phi : i32;
+  loop {
+    var x_45 : S;
+    var x_45_phi : S;
+    var x_11_phi : i32;
+    x_45_phi = S(0, mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0)));
+    x_11_phi = 0;
+    loop {
+      var x_46 : S;
+      var x_9 : i32;
+      x_45 = x_45_phi;
+      let x_11 : i32 = x_11_phi;
+      let x_49 : f32 = gl_FragCoord.x;
+      x_51 = select(2, 1, (x_49 == 0.0));
+      if ((x_11 < x_51)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+        x_46 = x_45;
+        x_46.f0 = (x_45.f0 + 1);
+        x_9 = (x_11 + 1);
+        x_45_phi = x_46;
+        x_11_phi = x_9;
+      }
+    }
+    if ((x_45.f0 < 1000)) {
+      break;
+    }
+    break;
+  }
+  x_12_phi = 0;
+  loop {
+    var x_6 : i32;
+    let x_12 : i32 = x_12_phi;
+    if ((x_12 < x_51)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      x_6 = (x_12 + 1);
+      x_12_phi = x_6;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
new file mode 100644
index 0000000..088c0f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
@@ -0,0 +1,73 @@
+struct S {
+  f0 : i32;
+  f1 : mat4x3<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_51 : i32;
+  var x_12_phi : i32;
+  loop {
+    var x_45 : S;
+    var x_45_phi : S;
+    var x_11_phi : i32;
+    x_45_phi = S(0, mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0)));
+    x_11_phi = 0;
+    loop {
+      var x_46 : S;
+      var x_9 : i32;
+      x_45 = x_45_phi;
+      let x_11 : i32 = x_11_phi;
+      let x_49 : f32 = gl_FragCoord.x;
+      x_51 = select(2, 1, (x_49 == 0.0));
+      if ((x_11 < x_51)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+        x_46 = x_45;
+        x_46.f0 = (x_45.f0 + 1);
+        x_9 = (x_11 + 1);
+        x_45_phi = x_46;
+        x_11_phi = x_9;
+      }
+    }
+    if ((x_45.f0 < 1000)) {
+      break;
+    }
+    break;
+  }
+  x_12_phi = 0;
+  loop {
+    var x_6 : i32;
+    let x_12 : i32 = x_12_phi;
+    if ((x_12 < x_51)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      x_6 = (x_12 + 1);
+      x_12_phi = x_6;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..f98d1d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.hlsl
@@ -0,0 +1,78 @@
+struct S {
+  int f0;
+  float4x3 f1;
+};
+
+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() {
+  int x_51 = 0;
+  int x_12_phi = 0;
+  while (true) {
+    S x_45 = (S)0;
+    S x_45_phi = (S)0;
+    int x_11_phi = 0;
+    const S tint_symbol_4 = {0, 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))};
+    x_45_phi = tint_symbol_4;
+    x_11_phi = 0;
+    while (true) {
+      S x_46 = (S)0;
+      int x_9 = 0;
+      x_45 = x_45_phi;
+      const int x_11 = x_11_phi;
+      const float x_49 = gl_FragCoord.x;
+      x_51 = ((x_49 == 0.0f) ? 1 : 2);
+      if ((x_11 < x_51)) {
+      } else {
+        break;
+      }
+      {
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        x_46 = x_45;
+        x_46.f0 = (x_45.f0 + 1);
+        x_9 = (x_11 + 1);
+        x_45_phi = x_46;
+        x_11_phi = x_9;
+      }
+    }
+    if ((x_45.f0 < 1000)) {
+      break;
+    }
+    break;
+  }
+  x_12_phi = 0;
+  while (true) {
+    int x_6 = 0;
+    const int x_12 = x_12_phi;
+    if ((x_12 < x_51)) {
+    } else {
+      break;
+    }
+    {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      x_6 = (x_12 + 1);
+      x_12_phi = x_6;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.msl
new file mode 100644
index 0000000..734666e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.msl
@@ -0,0 +1,76 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int f0;
+  float4x3 f1;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int x_51 = 0;
+  int x_12_phi = 0;
+  while (true) {
+    S x_45 = {};
+    S x_45_phi = {};
+    int x_11_phi = 0;
+    S const tint_symbol_4 = {.f0=0, .f1=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))};
+    x_45_phi = tint_symbol_4;
+    x_11_phi = 0;
+    while (true) {
+      S x_46 = {};
+      int x_9 = 0;
+      x_45 = x_45_phi;
+      int const x_11 = x_11_phi;
+      float const x_49 = (*(tint_symbol_6)).x;
+      x_51 = select(2, 1, (x_49 == 0.0f));
+      if ((x_11 < x_51)) {
+      } else {
+        break;
+      }
+      {
+        *(tint_symbol_7) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        x_46 = x_45;
+        x_46.f0 = (x_45.f0 + 1);
+        x_9 = (x_11 + 1);
+        x_45_phi = x_46;
+        x_11_phi = x_9;
+      }
+    }
+    if ((x_45.f0 < 1000)) {
+      break;
+    }
+    break;
+  }
+  x_12_phi = 0;
+  while (true) {
+    int x_6 = 0;
+    int const x_12 = x_12_phi;
+    if ((x_12 < x_51)) {
+    } else {
+      break;
+    }
+    {
+      *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      x_6 = (x_12 + 1);
+      x_12_phi = x_6;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..c5af5ad
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.spvasm
@@ -0,0 +1,190 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 106
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_51 "x_51"
+               OpName %x_12_phi "x_12_phi"
+               OpName %S "S"
+               OpMemberName %S 0 "f0"
+               OpMemberName %S 1 "f1"
+               OpName %x_45 "x_45"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_11_phi "x_11_phi"
+               OpName %x_46 "x_46"
+               OpName %x_9 "x_9"
+               OpName %x_6 "x_6"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 16
+               OpMemberDecorate %S 1 ColMajor
+               OpMemberDecorate %S 1 MatrixStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+          %S = OpTypeStruct %int %mat4v3float
+%_ptr_Function_S = OpTypePointer Function %S
+         %29 = OpConstantNull %S
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %35 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %36 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %37 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %38 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %39 = OpConstantComposite %mat4v3float %35 %36 %37 %38
+         %40 = OpConstantComposite %S %int_0 %39
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+         %64 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %int_1000 = OpConstant %int 1000
+         %90 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %93 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_51 = OpVariable %_ptr_Function_int Function %18
+   %x_12_phi = OpVariable %_ptr_Function_int Function %18
+       %x_45 = OpVariable %_ptr_Function_S Function %29
+   %x_45_phi = OpVariable %_ptr_Function_S Function %29
+   %x_11_phi = OpVariable %_ptr_Function_int Function %18
+       %x_46 = OpVariable %_ptr_Function_S Function %29
+        %x_9 = OpVariable %_ptr_Function_int Function %18
+        %x_6 = OpVariable %_ptr_Function_int Function %18
+               OpBranch %20
+         %20 = OpLabel
+               OpLoopMerge %21 %22 None
+               OpBranch %23
+         %23 = OpLabel
+               OpStore %x_45_phi %40
+               OpStore %x_11_phi %int_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %47 = OpLoad %S %x_45_phi
+               OpStore %x_45 %47
+         %48 = OpLoad %int %x_11_phi
+         %52 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %53 = OpLoad %float %52
+         %55 = OpFOrdEqual %bool %53 %float_0
+         %54 = OpSelect %int %55 %int_1 %int_2
+               OpStore %x_51 %54
+         %59 = OpLoad %int %x_51
+         %60 = OpSLessThan %bool %48 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %42
+         %61 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpStore %x_GLF_color %64
+         %65 = OpLoad %S %x_45
+               OpStore %x_46 %65
+         %66 = OpAccessChain %_ptr_Function_int %x_46 %uint_0
+         %67 = OpAccessChain %_ptr_Function_int %x_45 %uint_0
+         %68 = OpLoad %int %67
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %66 %69
+         %70 = OpIAdd %int %48 %int_1
+               OpStore %x_9 %70
+         %71 = OpLoad %S %x_46
+               OpStore %x_45_phi %71
+         %72 = OpLoad %int %x_9
+               OpStore %x_11_phi %72
+               OpBranch %41
+         %42 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_int %x_45 %uint_0
+         %74 = OpLoad %int %73
+         %76 = OpSLessThan %bool %74 %int_1000
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+               OpBranch %21
+         %77 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+               OpBranch %20
+         %21 = OpLabel
+               OpStore %x_12_phi %int_0
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %84 = OpLoad %int %x_12_phi
+         %85 = OpLoad %int %x_51
+         %86 = OpSLessThan %bool %84 %85
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %80
+         %87 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+               OpStore %x_GLF_color %90
+         %91 = OpIAdd %int %84 %int_1
+               OpStore %x_6 %91
+         %92 = OpLoad %int %x_6
+               OpStore %x_12_phi %92
+               OpBranch %79
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %93
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %97 = OpLabel
+         %98 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %98
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+        %100 = OpLabel
+        %101 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %101
+        %102 = OpFunctionCall %void %main_1
+        %104 = OpLoad %v4float %x_GLF_color
+        %105 = OpCompositeConstruct %main_out %104
+        %103 = OpFunctionCall %void %tint_symbol_3 %105
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..088c0f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl.expected.wgsl
@@ -0,0 +1,73 @@
+struct S {
+  f0 : i32;
+  f1 : mat4x3<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_51 : i32;
+  var x_12_phi : i32;
+  loop {
+    var x_45 : S;
+    var x_45_phi : S;
+    var x_11_phi : i32;
+    x_45_phi = S(0, mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0)));
+    x_11_phi = 0;
+    loop {
+      var x_46 : S;
+      var x_9 : i32;
+      x_45 = x_45_phi;
+      let x_11 : i32 = x_11_phi;
+      let x_49 : f32 = gl_FragCoord.x;
+      x_51 = select(2, 1, (x_49 == 0.0));
+      if ((x_11 < x_51)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+        x_46 = x_45;
+        x_46.f0 = (x_45.f0 + 1);
+        x_9 = (x_11 + 1);
+        x_45_phi = x_46;
+        x_11_phi = x_9;
+      }
+    }
+    if ((x_45.f0 < 1000)) {
+      break;
+    }
+    break;
+  }
+  x_12_phi = 0;
+  loop {
+    var x_6 : i32;
+    let x_12 : i32 = x_12_phi;
+    if ((x_12 < x_51)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      x_6 = (x_12 + 1);
+      x_12_phi = x_6;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm
new file mode 100644
index 0000000..c9c5d6f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm
@@ -0,0 +1,100 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %GLF_live6search_ "GLF_live6search("
+               OpName %GLF_live6index "GLF_live6index"
+               OpName %GLF_live6currentNode "GLF_live6currentNode"
+               OpName %GLF_live6tree "GLF_live6tree"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %GLF_live6search_ RelaxedPrecision
+               OpDecorate %GLF_live6index RelaxedPrecision
+               OpDecorate %GLF_live6currentNode RelaxedPrecision
+               OpDecorate %GLF_live6tree RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %17 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+%GLF_live6tree = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %37 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %15
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThan %bool %40 %float_1
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %13 = OpFunctionCall %int %GLF_live6search_
+               OpBranch %42
+         %42 = OpLabel
+               OpStore %_GLF_color %37
+               OpReturn
+               OpFunctionEnd
+%GLF_live6search_ = OpFunction %int None %17
+         %44 = OpLabel
+%GLF_live6index = OpVariable %_ptr_Function_int Function
+%GLF_live6currentNode = OpVariable %_ptr_Function_int Function
+               OpStore %GLF_live6index %int_0
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+               OpBranchConditional %true %49 %46
+         %49 = OpLabel
+         %10 = OpLoad %int %GLF_live6index
+         %50 = OpAccessChain %_ptr_Private_int %GLF_live6tree %10
+         %11 = OpLoad %int %50
+               OpStore %GLF_live6currentNode %11
+         %12 = OpLoad %int %GLF_live6currentNode
+         %51 = OpINotEqual %bool %12 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpReturnValue %int_1
+         %52 = OpLabel
+               OpStore %GLF_live6index %int_1
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %45
+         %46 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..626404f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+static int GLF_live6tree[10] = (int[10])0;
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int GLF_live6search_() {
+  int GLF_live6index = 0;
+  int GLF_live6currentNode = 0;
+  GLF_live6index = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    const int x_11 = GLF_live6tree[GLF_live6index];
+    GLF_live6currentNode = x_11;
+    if ((GLF_live6currentNode != 1)) {
+      return 1;
+    }
+    GLF_live6index = 1;
+  }
+  return 1;
+}
+
+void main_1() {
+  const float x_40 = asfloat(x_9[0].x);
+  if ((x_40 > 1.0f)) {
+    const int x_13 = GLF_live6search_();
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8e00df9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int GLF_live6search_(thread tint_array_wrapper* const tint_symbol_4) {
+  int GLF_live6index = 0;
+  int GLF_live6currentNode = 0;
+  GLF_live6index = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    int const x_10 = GLF_live6index;
+    int const x_11 = (*(tint_symbol_4)).arr[x_10];
+    GLF_live6currentNode = x_11;
+    int const x_12 = GLF_live6currentNode;
+    if ((x_12 != 1)) {
+      return 1;
+    }
+    GLF_live6index = 1;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_9, thread tint_array_wrapper* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_40 = x_9.injectionSwitch.x;
+  if ((x_40 > 1.0f)) {
+    int const x_13 = GLF_live6search_(tint_symbol_5);
+  }
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread tint_array_wrapper tint_symbol_7 = {};
+  thread float4 tint_symbol_8 = 0.0f;
+  main_1(x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3e841df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,131 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %GLF_live6tree "GLF_live6tree"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %GLF_live6search_ "GLF_live6search_"
+               OpName %GLF_live6index "GLF_live6index"
+               OpName %GLF_live6currentNode "GLF_live6currentNode"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+%GLF_live6tree = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+         %19 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %45 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %59 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+%GLF_live6search_ = OpFunction %int None %19
+         %21 = OpLabel
+%GLF_live6index = OpVariable %_ptr_Function_int Function %24
+%GLF_live6currentNode = OpVariable %_ptr_Function_int Function %24
+               OpStore %GLF_live6index %int_0
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+               OpSelectionMerge %33 None
+               OpBranchConditional %true %34 %35
+         %34 = OpLabel
+               OpBranch %33
+         %35 = OpLabel
+               OpBranch %28
+         %33 = OpLabel
+         %36 = OpLoad %int %GLF_live6index
+         %38 = OpAccessChain %_ptr_Private_int %GLF_live6tree %36
+         %39 = OpLoad %int %38
+               OpStore %GLF_live6currentNode %39
+         %40 = OpLoad %int %GLF_live6currentNode
+         %42 = OpINotEqual %bool %40 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpReturnValue %int_1
+         %43 = OpLabel
+               OpStore %GLF_live6index %int_1
+               OpBranch %29
+         %29 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %45
+         %48 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %52 = OpLoad %float %51
+         %54 = OpFOrdGreaterThan %bool %52 %float_1
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpFunctionCall %int %GLF_live6search_
+               OpBranch %55
+         %55 = OpLabel
+               OpStore %x_GLF_color %59
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %45
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..bd10f84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,51 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> GLF_live6tree : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn GLF_live6search_() -> i32 {
+  var GLF_live6index : i32;
+  var GLF_live6currentNode : i32;
+  GLF_live6index = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    let x_10 : i32 = GLF_live6index;
+    let x_11 : i32 = GLF_live6tree[x_10];
+    GLF_live6currentNode = x_11;
+    let x_12 : i32 = GLF_live6currentNode;
+    if ((x_12 != 1)) {
+      return 1;
+    }
+    GLF_live6index = 1;
+  }
+  return 1;
+}
+
+fn main_1() {
+  let x_40 : f32 = x_9.injectionSwitch.x;
+  if ((x_40 > 1.0)) {
+    let x_13 : i32 = GLF_live6search_();
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
new file mode 100644
index 0000000..bd10f84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
@@ -0,0 +1,51 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> GLF_live6tree : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn GLF_live6search_() -> i32 {
+  var GLF_live6index : i32;
+  var GLF_live6currentNode : i32;
+  GLF_live6index = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    let x_10 : i32 = GLF_live6index;
+    let x_11 : i32 = GLF_live6tree[x_10];
+    GLF_live6currentNode = x_11;
+    let x_12 : i32 = GLF_live6currentNode;
+    if ((x_12 != 1)) {
+      return 1;
+    }
+    GLF_live6index = 1;
+  }
+  return 1;
+}
+
+fn main_1() {
+  let x_40 : f32 = x_9.injectionSwitch.x;
+  if ((x_40 > 1.0)) {
+    let x_13 : i32 = GLF_live6search_();
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..626404f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+static int GLF_live6tree[10] = (int[10])0;
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int GLF_live6search_() {
+  int GLF_live6index = 0;
+  int GLF_live6currentNode = 0;
+  GLF_live6index = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    const int x_11 = GLF_live6tree[GLF_live6index];
+    GLF_live6currentNode = x_11;
+    if ((GLF_live6currentNode != 1)) {
+      return 1;
+    }
+    GLF_live6index = 1;
+  }
+  return 1;
+}
+
+void main_1() {
+  const float x_40 = asfloat(x_9[0].x);
+  if ((x_40 > 1.0f)) {
+    const int x_13 = GLF_live6search_();
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8e00df9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int GLF_live6search_(thread tint_array_wrapper* const tint_symbol_4) {
+  int GLF_live6index = 0;
+  int GLF_live6currentNode = 0;
+  GLF_live6index = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    int const x_10 = GLF_live6index;
+    int const x_11 = (*(tint_symbol_4)).arr[x_10];
+    GLF_live6currentNode = x_11;
+    int const x_12 = GLF_live6currentNode;
+    if ((x_12 != 1)) {
+      return 1;
+    }
+    GLF_live6index = 1;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_9, thread tint_array_wrapper* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_40 = x_9.injectionSwitch.x;
+  if ((x_40 > 1.0f)) {
+    int const x_13 = GLF_live6search_(tint_symbol_5);
+  }
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread tint_array_wrapper tint_symbol_7 = {};
+  thread float4 tint_symbol_8 = 0.0f;
+  main_1(x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3e841df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,131 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %GLF_live6tree "GLF_live6tree"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %GLF_live6search_ "GLF_live6search_"
+               OpName %GLF_live6index "GLF_live6index"
+               OpName %GLF_live6currentNode "GLF_live6currentNode"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+%GLF_live6tree = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+         %19 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %45 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %59 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+%GLF_live6search_ = OpFunction %int None %19
+         %21 = OpLabel
+%GLF_live6index = OpVariable %_ptr_Function_int Function %24
+%GLF_live6currentNode = OpVariable %_ptr_Function_int Function %24
+               OpStore %GLF_live6index %int_0
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+               OpSelectionMerge %33 None
+               OpBranchConditional %true %34 %35
+         %34 = OpLabel
+               OpBranch %33
+         %35 = OpLabel
+               OpBranch %28
+         %33 = OpLabel
+         %36 = OpLoad %int %GLF_live6index
+         %38 = OpAccessChain %_ptr_Private_int %GLF_live6tree %36
+         %39 = OpLoad %int %38
+               OpStore %GLF_live6currentNode %39
+         %40 = OpLoad %int %GLF_live6currentNode
+         %42 = OpINotEqual %bool %40 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpReturnValue %int_1
+         %43 = OpLabel
+               OpStore %GLF_live6index %int_1
+               OpBranch %29
+         %29 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %45
+         %48 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %52 = OpLoad %float %51
+         %54 = OpFOrdGreaterThan %bool %52 %float_1
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpFunctionCall %int %GLF_live6search_
+               OpBranch %55
+         %55 = OpLabel
+               OpStore %x_GLF_color %59
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %45
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..bd10f84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,51 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> GLF_live6tree : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn GLF_live6search_() -> i32 {
+  var GLF_live6index : i32;
+  var GLF_live6currentNode : i32;
+  GLF_live6index = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    let x_10 : i32 = GLF_live6index;
+    let x_11 : i32 = GLF_live6tree[x_10];
+    GLF_live6currentNode = x_11;
+    let x_12 : i32 = GLF_live6currentNode;
+    if ((x_12 != 1)) {
+      return 1;
+    }
+    GLF_live6index = 1;
+  }
+  return 1;
+}
+
+fn main_1() {
+  let x_40 : f32 = x_9.injectionSwitch.x;
+  if ((x_40 > 1.0)) {
+    let x_13 : i32 = GLF_live6search_();
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm
new file mode 100644
index 0000000..0cc68a0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm
@@ -0,0 +1,627 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %drawShape_vf2_ "drawShape(vf2;"
+               OpName %pos "pos"
+               OpName %c2 "c2"
+               OpName %c3 "c3"
+               OpName %c4 "c4"
+               OpName %c5 "c5"
+               OpName %c6 "c6"
+               OpName %GLF_live4i "GLF_live4i"
+               OpName %GLF_live4_looplimiter5 "GLF_live4_looplimiter5"
+               OpName %GLF_live7m42 "GLF_live7m42"
+               OpName %GLF_live7m33 "GLF_live7m33"
+               OpName %GLF_live7cols "GLF_live7cols"
+               OpName %GLF_live7_looplimiter3 "GLF_live7_looplimiter3"
+               OpName %GLF_live7rows "GLF_live7rows"
+               OpName %GLF_live7_looplimiter2 "GLF_live7_looplimiter2"
+               OpName %GLF_live7_looplimiter1 "GLF_live7_looplimiter1"
+               OpName %GLF_live7c "GLF_live7c"
+               OpName %GLF_live7r "GLF_live7r"
+               OpName %GLF_live7_looplimiter0 "GLF_live7_looplimiter0"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %GLF_live7sum_index "GLF_live7sum_index"
+               OpName %GLF_live7_looplimiter7 "GLF_live7_looplimiter7"
+               OpName %GLF_live7cols_0 "GLF_live7cols"
+               OpName %GLF_live7rows_0 "GLF_live7rows"
+               OpName %GLF_live7sums "GLF_live7sums"
+               OpName %GLF_live7c_0 "GLF_live7c"
+               OpName %GLF_live7r_0 "GLF_live7r"
+               OpName %indexable "indexable"
+               OpName %position "position"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %i "i"
+               OpName %param_1 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %GLF_live4i RelaxedPrecision
+               OpDecorate %39 RelaxedPrecision
+               OpDecorate %GLF_live4_looplimiter5 RelaxedPrecision
+               OpDecorate %40 RelaxedPrecision
+               OpDecorate %41 RelaxedPrecision
+               OpDecorate %42 RelaxedPrecision
+               OpDecorate %GLF_live7cols RelaxedPrecision
+               OpDecorate %43 RelaxedPrecision
+               OpDecorate %GLF_live7_looplimiter3 RelaxedPrecision
+               OpDecorate %44 RelaxedPrecision
+               OpDecorate %45 RelaxedPrecision
+               OpDecorate %46 RelaxedPrecision
+               OpDecorate %GLF_live7rows RelaxedPrecision
+               OpDecorate %47 RelaxedPrecision
+               OpDecorate %GLF_live7_looplimiter2 RelaxedPrecision
+               OpDecorate %48 RelaxedPrecision
+               OpDecorate %49 RelaxedPrecision
+               OpDecorate %50 RelaxedPrecision
+               OpDecorate %GLF_live7_looplimiter1 RelaxedPrecision
+               OpDecorate %GLF_live7c RelaxedPrecision
+               OpDecorate %51 RelaxedPrecision
+               OpDecorate %52 RelaxedPrecision
+               OpDecorate %53 RelaxedPrecision
+               OpDecorate %54 RelaxedPrecision
+               OpDecorate %GLF_live7r RelaxedPrecision
+               OpDecorate %55 RelaxedPrecision
+               OpDecorate %GLF_live7_looplimiter0 RelaxedPrecision
+               OpDecorate %56 RelaxedPrecision
+               OpDecorate %57 RelaxedPrecision
+               OpDecorate %58 RelaxedPrecision
+               OpDecorate %59 RelaxedPrecision
+               OpDecorate %60 RelaxedPrecision
+               OpDecorate %61 RelaxedPrecision
+               OpDecorate %62 RelaxedPrecision
+               OpDecorate %63 RelaxedPrecision
+               OpDecorate %64 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %65 RelaxedPrecision
+               OpDecorate %66 RelaxedPrecision
+               OpDecorate %67 RelaxedPrecision
+               OpDecorate %68 RelaxedPrecision
+               OpDecorate %69 RelaxedPrecision
+               OpDecorate %70 RelaxedPrecision
+               OpDecorate %71 RelaxedPrecision
+               OpDecorate %72 RelaxedPrecision
+               OpDecorate %73 RelaxedPrecision
+               OpDecorate %74 RelaxedPrecision
+               OpDecorate %75 RelaxedPrecision
+               OpDecorate %76 RelaxedPrecision
+               OpDecorate %77 RelaxedPrecision
+               OpDecorate %78 RelaxedPrecision
+               OpDecorate %GLF_live7sum_index RelaxedPrecision
+               OpDecorate %GLF_live7_looplimiter7 RelaxedPrecision
+               OpDecorate %GLF_live7cols_0 RelaxedPrecision
+               OpDecorate %79 RelaxedPrecision
+               OpDecorate %80 RelaxedPrecision
+               OpDecorate %81 RelaxedPrecision
+               OpDecorate %82 RelaxedPrecision
+               OpDecorate %GLF_live7rows_0 RelaxedPrecision
+               OpDecorate %83 RelaxedPrecision
+               OpDecorate %84 RelaxedPrecision
+               OpDecorate %85 RelaxedPrecision
+               OpDecorate %GLF_live7c_0 RelaxedPrecision
+               OpDecorate %86 RelaxedPrecision
+               OpDecorate %GLF_live7r_0 RelaxedPrecision
+               OpDecorate %87 RelaxedPrecision
+               OpDecorate %88 RelaxedPrecision
+               OpDecorate %89 RelaxedPrecision
+               OpDecorate %90 RelaxedPrecision
+               OpDecorate %91 RelaxedPrecision
+               OpDecorate %92 RelaxedPrecision
+               OpDecorate %93 RelaxedPrecision
+               OpDecorate %94 RelaxedPrecision
+               OpDecorate %95 RelaxedPrecision
+               OpDecorate %96 RelaxedPrecision
+               OpDecorate %97 RelaxedPrecision
+               OpDecorate %98 RelaxedPrecision
+               OpDecorate %99 RelaxedPrecision
+               OpDecorate %100 RelaxedPrecision
+               OpDecorate %101 RelaxedPrecision
+               OpDecorate %102 RelaxedPrecision
+               OpDecorate %103 RelaxedPrecision
+               OpDecorate %104 RelaxedPrecision
+               OpDecorate %105 RelaxedPrecision
+               OpDecorate %106 RelaxedPrecision
+               OpDecorate %107 RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %108 RelaxedPrecision
+               OpDecorate %109 RelaxedPrecision
+               OpDecorate %110 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+        %112 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v3float = OpTypeVector %float 3
+        %117 = OpTypeFunction %v3float %_ptr_Function_v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+        %124 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+      %int_7 = OpConstant %int 7
+      %int_1 = OpConstant %int 1
+%mat4v2float = OpTypeMatrix %v2float 4
+%_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float
+    %float_0 = OpConstant %float 0
+        %135 = OpConstantComposite %v2float %float_1 %float_0
+        %136 = OpConstantComposite %v2float %float_0 %float_1
+        %137 = OpConstantComposite %v2float %float_0 %float_0
+        %138 = OpConstantComposite %mat4v2float %135 %136 %137 %135
+%mat3v3float = OpTypeMatrix %v3float 3
+%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
+        %141 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+        %142 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+        %143 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+        %144 = OpConstantComposite %mat3v3float %141 %142 %143
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+      %int_9 = OpConstant %int 9
+    %float_2 = OpConstant %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %int_25 = OpConstant %int 25
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %158 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %112
+        %159 = OpLabel
+   %position = OpVariable %_ptr_Function_v2float Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v2float Function
+          %i = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+        %160 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %161 = OpLoad %float %160
+        %162 = OpFOrdGreaterThanEqual %bool %161 %float_2
+               OpSelectionMerge %163 None
+               OpBranchConditional %162 %164 %163
+        %164 = OpLabel
+        %165 = OpLoad %v4float %gl_FragCoord
+        %166 = OpVectorShuffle %v2float %165 %165 0 1
+               OpStore %position %166
+        %167 = OpLoad %v2float %position
+               OpStore %param %167
+        %168 = OpFunctionCall %v3float %drawShape_vf2_ %param
+        %169 = OpLoad %v2float %position
+               OpStore %param_0 %169
+        %170 = OpFunctionCall %v3float %drawShape_vf2_ %param_0
+               OpStore %i %int_25
+               OpBranch %171
+        %171 = OpLabel
+               OpLoopMerge %172 %173 None
+               OpBranch %174
+        %174 = OpLabel
+        %108 = OpLoad %int %i
+        %175 = OpSGreaterThan %bool %108 %int_0
+               OpBranchConditional %175 %176 %172
+        %176 = OpLabel
+        %177 = OpLoad %v2float %position
+               OpStore %param_1 %177
+        %178 = OpFunctionCall %v3float %drawShape_vf2_ %param_1
+               OpBranch %173
+        %173 = OpLabel
+        %109 = OpLoad %int %i
+        %110 = OpISub %int %109 %int_1
+               OpStore %i %110
+               OpBranch %171
+        %172 = OpLabel
+               OpBranch %163
+        %163 = OpLabel
+               OpStore %_GLF_color %158
+               OpReturn
+               OpFunctionEnd
+%drawShape_vf2_ = OpFunction %v3float None %117
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+        %179 = OpLabel
+         %c2 = OpVariable %_ptr_Function_bool Function
+         %c3 = OpVariable %_ptr_Function_bool Function
+         %c4 = OpVariable %_ptr_Function_bool Function
+         %c5 = OpVariable %_ptr_Function_bool Function
+         %c6 = OpVariable %_ptr_Function_bool Function
+ %GLF_live4i = OpVariable %_ptr_Function_int Function
+%GLF_live4_looplimiter5 = OpVariable %_ptr_Function_int Function
+%GLF_live7m42 = OpVariable %_ptr_Function_mat4v2float Function
+%GLF_live7m33 = OpVariable %_ptr_Function_mat3v3float Function
+%GLF_live7cols = OpVariable %_ptr_Function_int Function
+%GLF_live7_looplimiter3 = OpVariable %_ptr_Function_int Function
+%GLF_live7rows = OpVariable %_ptr_Function_int Function
+%GLF_live7_looplimiter2 = OpVariable %_ptr_Function_int Function
+%GLF_live7_looplimiter1 = OpVariable %_ptr_Function_int Function
+ %GLF_live7c = OpVariable %_ptr_Function_int Function
+ %GLF_live7r = OpVariable %_ptr_Function_int Function
+%GLF_live7_looplimiter0 = OpVariable %_ptr_Function_int Function
+%GLF_live7sum_index = OpVariable %_ptr_Function_int Function
+%GLF_live7_looplimiter7 = OpVariable %_ptr_Function_int Function
+%GLF_live7cols_0 = OpVariable %_ptr_Function_int Function
+%GLF_live7rows_0 = OpVariable %_ptr_Function_int Function
+%GLF_live7sums = OpVariable %_ptr_Function__arr_float_uint_9 Function
+%GLF_live7c_0 = OpVariable %_ptr_Function_int Function
+%GLF_live7r_0 = OpVariable %_ptr_Function_int Function
+        %180 = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function_mat3v3float Function
+        %181 = OpAccessChain %_ptr_Function_float %pos %uint_0
+        %182 = OpLoad %float %181
+        %183 = OpFOrdGreaterThan %bool %182 %float_1
+               OpStore %c2 %183
+        %184 = OpLoad %bool %c2
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %185
+        %186 = OpLabel
+               OpReturnValue %124
+        %185 = OpLabel
+        %187 = OpAccessChain %_ptr_Function_float %pos %uint_1
+        %188 = OpLoad %float %187
+        %189 = OpFOrdLessThan %bool %188 %float_1
+               OpStore %c3 %189
+        %190 = OpLoad %bool %c3
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %191
+        %192 = OpLabel
+               OpReturnValue %124
+        %191 = OpLabel
+        %193 = OpAccessChain %_ptr_Function_float %pos %uint_1
+        %194 = OpLoad %float %193
+        %195 = OpFOrdGreaterThan %bool %194 %float_1
+               OpStore %c4 %195
+        %196 = OpLoad %bool %c4
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+               OpReturnValue %124
+        %197 = OpLabel
+        %199 = OpAccessChain %_ptr_Function_float %pos %uint_0
+        %200 = OpLoad %float %199
+        %201 = OpFOrdLessThan %bool %200 %float_1
+               OpStore %c5 %201
+        %202 = OpLoad %bool %c5
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %203
+        %204 = OpLabel
+               OpReturnValue %124
+        %203 = OpLabel
+        %205 = OpAccessChain %_ptr_Function_float %pos %uint_0
+        %206 = OpLoad %float %205
+        %207 = OpFAdd %float %206 %float_1
+        %208 = OpFOrdGreaterThan %bool %207 %float_1
+               OpStore %c6 %208
+        %209 = OpLoad %bool %c6
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %210
+        %211 = OpLabel
+               OpReturnValue %124
+        %210 = OpLabel
+               OpStore %GLF_live4i %int_0
+               OpBranch %212
+        %212 = OpLabel
+               OpLoopMerge %213 %214 None
+               OpBranch %215
+        %215 = OpLabel
+         %39 = OpLoad %int %GLF_live4i
+        %216 = OpSLessThan %bool %39 %int_4
+               OpBranchConditional %216 %217 %213
+        %217 = OpLabel
+         %40 = OpLoad %int %GLF_live4_looplimiter5
+        %218 = OpSGreaterThanEqual %bool %40 %int_7
+               OpSelectionMerge %219 None
+               OpBranchConditional %218 %220 %219
+        %220 = OpLabel
+               OpBranch %213
+        %219 = OpLabel
+         %41 = OpLoad %int %GLF_live4_looplimiter5
+         %42 = OpIAdd %int %41 %int_1
+               OpStore %GLF_live4_looplimiter5 %42
+               OpStore %GLF_live7m42 %138
+               OpStore %GLF_live7m33 %144
+               OpStore %GLF_live7cols %int_2
+               OpBranch %221
+        %221 = OpLabel
+               OpLoopMerge %222 %223 None
+               OpBranch %224
+        %224 = OpLabel
+         %43 = OpLoad %int %GLF_live7cols
+        %225 = OpSLessThan %bool %43 %int_4
+               OpBranchConditional %225 %226 %222
+        %226 = OpLabel
+         %44 = OpLoad %int %GLF_live7_looplimiter3
+        %227 = OpSGreaterThanEqual %bool %44 %int_7
+               OpSelectionMerge %228 None
+               OpBranchConditional %227 %229 %228
+        %229 = OpLabel
+               OpBranch %222
+        %228 = OpLabel
+         %45 = OpLoad %int %GLF_live7_looplimiter3
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %GLF_live7_looplimiter3 %46
+               OpStore %GLF_live7rows %int_2
+               OpBranch %230
+        %230 = OpLabel
+               OpLoopMerge %231 %232 None
+               OpBranch %233
+        %233 = OpLabel
+         %47 = OpLoad %int %GLF_live7rows
+        %234 = OpSLessThan %bool %47 %int_4
+               OpBranchConditional %234 %235 %231
+        %235 = OpLabel
+         %48 = OpLoad %int %GLF_live7_looplimiter2
+        %236 = OpSGreaterThanEqual %bool %48 %int_7
+               OpSelectionMerge %237 None
+               OpBranchConditional %236 %238 %237
+        %238 = OpLabel
+               OpBranch %231
+        %237 = OpLabel
+         %49 = OpLoad %int %GLF_live7_looplimiter2
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %GLF_live7_looplimiter2 %50
+               OpStore %GLF_live7_looplimiter1 %int_0
+               OpStore %GLF_live7c %int_0
+               OpBranch %239
+        %239 = OpLabel
+               OpLoopMerge %240 %241 None
+               OpBranch %242
+        %242 = OpLabel
+         %51 = OpLoad %int %GLF_live7c
+        %243 = OpSLessThan %bool %51 %int_3
+               OpBranchConditional %243 %244 %240
+        %244 = OpLabel
+         %52 = OpLoad %int %GLF_live7_looplimiter1
+        %245 = OpSGreaterThanEqual %bool %52 %int_7
+               OpSelectionMerge %246 None
+               OpBranchConditional %245 %247 %246
+        %247 = OpLabel
+               OpBranch %240
+        %246 = OpLabel
+         %53 = OpLoad %int %GLF_live7_looplimiter1
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %GLF_live7_looplimiter1 %54
+               OpStore %GLF_live7r %int_0
+               OpBranch %248
+        %248 = OpLabel
+               OpLoopMerge %249 %250 None
+               OpBranch %251
+        %251 = OpLabel
+         %55 = OpLoad %int %GLF_live7r
+        %252 = OpSLessThan %bool %55 %int_2
+               OpBranchConditional %252 %253 %249
+        %253 = OpLabel
+         %56 = OpLoad %int %GLF_live7_looplimiter0
+        %254 = OpSGreaterThanEqual %bool %56 %int_7
+               OpSelectionMerge %255 None
+               OpBranchConditional %254 %256 %255
+        %256 = OpLabel
+               OpBranch %249
+        %255 = OpLabel
+         %57 = OpLoad %int %GLF_live7_looplimiter0
+         %58 = OpIAdd %int %57 %int_1
+               OpStore %GLF_live7_looplimiter0 %58
+         %59 = OpLoad %int %GLF_live7c
+        %257 = OpSGreaterThanEqual %bool %59 %int_0
+         %60 = OpLoad %int %GLF_live7c
+        %258 = OpSLessThan %bool %60 %int_3
+        %259 = OpLogicalAnd %bool %257 %258
+         %61 = OpLoad %int %GLF_live7c
+        %260 = OpSelect %int %259 %61 %int_0
+         %62 = OpLoad %int %GLF_live7r
+        %261 = OpSGreaterThanEqual %bool %62 %int_0
+         %63 = OpLoad %int %GLF_live7r
+        %262 = OpSLessThan %bool %63 %int_3
+        %263 = OpLogicalAnd %bool %261 %262
+         %64 = OpLoad %int %GLF_live7r
+        %264 = OpSelect %int %263 %64 %int_0
+        %265 = OpAccessChain %_ptr_Function_float %GLF_live7m33 %260 %264
+               OpStore %265 %float_1
+        %266 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %267 = OpLoad %float %266
+        %268 = OpFOrdGreaterThan %bool %float_0 %267
+               OpSelectionMerge %269 None
+               OpBranchConditional %268 %270 %271
+        %270 = OpLabel
+               OpBranch %269
+        %271 = OpLabel
+         %65 = OpLoad %int %GLF_live7c
+        %272 = OpSGreaterThanEqual %bool %65 %int_0
+         %66 = OpLoad %int %GLF_live7c
+        %273 = OpSLessThan %bool %66 %int_4
+        %274 = OpLogicalAnd %bool %272 %273
+         %67 = OpLoad %int %GLF_live7c
+        %275 = OpSelect %int %274 %67 %int_0
+         %68 = OpLoad %int %GLF_live7r
+        %276 = OpSGreaterThanEqual %bool %68 %int_0
+         %69 = OpLoad %int %GLF_live7r
+        %277 = OpSLessThan %bool %69 %int_2
+        %278 = OpLogicalAnd %bool %276 %277
+         %70 = OpLoad %int %GLF_live7r
+        %279 = OpSelect %int %278 %70 %int_0
+        %280 = OpAccessChain %_ptr_Function_float %GLF_live7m42 %275 %279
+               OpStore %280 %float_1
+               OpBranch %269
+        %269 = OpLabel
+               OpBranch %250
+        %250 = OpLabel
+         %71 = OpLoad %int %GLF_live7r
+         %72 = OpIAdd %int %71 %int_1
+               OpStore %GLF_live7r %72
+               OpBranch %248
+        %249 = OpLabel
+               OpBranch %241
+        %241 = OpLabel
+         %73 = OpLoad %int %GLF_live7c
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %GLF_live7c %74
+               OpBranch %239
+        %240 = OpLabel
+               OpBranch %232
+        %232 = OpLabel
+         %75 = OpLoad %int %GLF_live7rows
+         %76 = OpIAdd %int %75 %int_1
+               OpStore %GLF_live7rows %76
+               OpBranch %230
+        %231 = OpLabel
+               OpBranch %223
+        %223 = OpLabel
+         %77 = OpLoad %int %GLF_live7cols
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %GLF_live7cols %78
+               OpBranch %221
+        %222 = OpLabel
+               OpStore %GLF_live7sum_index %int_0
+               OpStore %GLF_live7_looplimiter7 %int_0
+               OpStore %GLF_live7cols_0 %int_2
+               OpBranch %281
+        %281 = OpLabel
+               OpLoopMerge %282 %283 None
+               OpBranch %284
+        %284 = OpLabel
+         %79 = OpLoad %int %GLF_live7cols_0
+        %285 = OpSLessThan %bool %79 %int_4
+               OpBranchConditional %285 %286 %282
+        %286 = OpLabel
+         %80 = OpLoad %int %GLF_live7_looplimiter7
+        %287 = OpSGreaterThanEqual %bool %80 %int_7
+               OpSelectionMerge %288 None
+               OpBranchConditional %287 %289 %288
+        %289 = OpLabel
+               OpBranch %282
+        %288 = OpLabel
+         %81 = OpLoad %int %GLF_live7_looplimiter7
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %GLF_live7_looplimiter7 %82
+               OpStore %GLF_live7rows_0 %int_2
+         %83 = OpLoad %int %GLF_live7sum_index
+        %290 = OpSGreaterThanEqual %bool %83 %int_0
+         %84 = OpLoad %int %GLF_live7sum_index
+        %291 = OpSLessThan %bool %84 %int_9
+        %292 = OpLogicalAnd %bool %290 %291
+         %85 = OpLoad %int %GLF_live7sum_index
+        %293 = OpSelect %int %292 %85 %int_0
+        %294 = OpAccessChain %_ptr_Function_float %GLF_live7sums %293
+               OpStore %294 %float_0
+               OpStore %GLF_live7c_0 %int_0
+               OpBranch %295
+        %295 = OpLabel
+               OpLoopMerge %296 %297 None
+               OpBranch %298
+        %298 = OpLabel
+         %86 = OpLoad %int %GLF_live7c_0
+        %299 = OpSLessThan %bool %86 %int_1
+               OpBranchConditional %299 %300 %296
+        %300 = OpLabel
+               OpStore %GLF_live7r_0 %int_0
+               OpBranch %301
+        %301 = OpLabel
+               OpLoopMerge %302 %303 None
+               OpBranch %304
+        %304 = OpLabel
+         %87 = OpLoad %int %GLF_live7r_0
+         %88 = OpLoad %int %GLF_live7rows_0
+        %305 = OpSLessThan %bool %87 %88
+               OpBranchConditional %305 %306 %302
+        %306 = OpLabel
+         %89 = OpLoad %int %GLF_live7sum_index
+        %307 = OpSGreaterThanEqual %bool %89 %int_0
+         %90 = OpLoad %int %GLF_live7sum_index
+        %308 = OpSLessThan %bool %90 %int_9
+        %309 = OpLogicalAnd %bool %307 %308
+         %91 = OpLoad %int %GLF_live7sum_index
+        %310 = OpSelect %int %309 %91 %int_0
+        %311 = OpLoad %mat3v3float %GLF_live7m33
+        %312 = OpTranspose %mat3v3float %311
+         %92 = OpLoad %int %GLF_live7c_0
+        %313 = OpSLessThan %bool %92 %int_3
+               OpSelectionMerge %314 None
+               OpBranchConditional %313 %315 %316
+        %315 = OpLabel
+               OpStore %180 %int_1
+               OpBranch %314
+        %316 = OpLabel
+        %317 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %318 = OpLoad %float %317
+        %319 = OpConvertFToS %int %318
+               OpStore %180 %319
+               OpBranch %314
+        %314 = OpLabel
+        %320 = OpLoad %int %180
+         %93 = OpLoad %int %GLF_live7r_0
+        %321 = OpSLessThan %bool %93 %int_3
+        %322 = OpSelect %int %321 %int_1 %int_0
+               OpStore %indexable %312
+        %323 = OpAccessChain %_ptr_Function_float %indexable %320 %322
+        %324 = OpLoad %float %323
+        %325 = OpAccessChain %_ptr_Function_float %GLF_live7sums %310
+        %326 = OpLoad %float %325
+        %327 = OpFAdd %float %326 %324
+        %328 = OpAccessChain %_ptr_Function_float %GLF_live7sums %310
+               OpStore %328 %327
+         %94 = OpLoad %int %GLF_live7sum_index
+        %329 = OpSGreaterThanEqual %bool %94 %int_0
+         %95 = OpLoad %int %GLF_live7sum_index
+        %330 = OpSLessThan %bool %95 %int_9
+        %331 = OpLogicalAnd %bool %329 %330
+         %96 = OpLoad %int %GLF_live7sum_index
+        %332 = OpSelect %int %331 %96 %int_0
+         %97 = OpLoad %int %GLF_live7r_0
+        %333 = OpAccessChain %_ptr_Function_float %GLF_live7m42 %int_1 %97
+        %334 = OpLoad %float %333
+        %335 = OpAccessChain %_ptr_Function_float %GLF_live7sums %332
+        %336 = OpLoad %float %335
+        %337 = OpFAdd %float %336 %334
+        %338 = OpAccessChain %_ptr_Function_float %GLF_live7sums %332
+               OpStore %338 %337
+               OpBranch %303
+        %303 = OpLabel
+         %98 = OpLoad %int %GLF_live7r_0
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %GLF_live7r_0 %99
+               OpBranch %301
+        %302 = OpLabel
+               OpBranch %297
+        %297 = OpLabel
+        %100 = OpLoad %int %GLF_live7c_0
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %GLF_live7c_0 %101
+               OpBranch %295
+        %296 = OpLabel
+        %102 = OpLoad %int %GLF_live7sum_index
+        %103 = OpIAdd %int %102 %int_1
+               OpStore %GLF_live7sum_index %103
+               OpBranch %283
+        %283 = OpLabel
+        %104 = OpLoad %int %GLF_live7cols_0
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %GLF_live7cols_0 %105
+               OpBranch %281
+        %282 = OpLabel
+               OpBranch %214
+        %214 = OpLabel
+        %106 = OpLoad %int %GLF_live4i
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %GLF_live4i %107
+               OpBranch %212
+        %213 = OpLabel
+               OpReturnValue %124
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1907070
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,237 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_25 : register(b0, space0) {
+  uint4 x_25[1];
+};
+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);
+
+float3 drawShape_vf2_(inout float2 pos) {
+  bool c2 = false;
+  bool c3 = false;
+  bool c4 = false;
+  bool c5 = false;
+  bool c6 = false;
+  int GLF_live4i = 0;
+  int GLF_live4_looplimiter5 = 0;
+  float4x2 GLF_live7m42 = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x3 GLF_live7m33 = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int GLF_live7cols = 0;
+  int GLF_live7_looplimiter3 = 0;
+  int GLF_live7rows = 0;
+  int GLF_live7_looplimiter2 = 0;
+  int GLF_live7_looplimiter1 = 0;
+  int GLF_live7c = 0;
+  int GLF_live7r = 0;
+  int GLF_live7_looplimiter0 = 0;
+  int GLF_live7sum_index = 0;
+  int GLF_live7_looplimiter7 = 0;
+  int GLF_live7cols_1 = 0;
+  int GLF_live7rows_1 = 0;
+  float GLF_live7sums[9] = (float[9])0;
+  int GLF_live7c_1 = 0;
+  int GLF_live7r_1 = 0;
+  int x_180 = 0;
+  float3x3 indexable = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_182 = pos.x;
+  c2 = (x_182 > 1.0f);
+  if (c2) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  const float x_188 = pos.y;
+  c3 = (x_188 < 1.0f);
+  if (c3) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  const float x_194 = pos.y;
+  c4 = (x_194 > 1.0f);
+  if (c4) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  const float x_200 = pos.x;
+  c5 = (x_200 < 1.0f);
+  if (c5) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  const float x_206 = pos.x;
+  c6 = ((x_206 + 1.0f) > 1.0f);
+  if (c6) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  GLF_live4i = 0;
+  {
+    for(; (GLF_live4i < 4); GLF_live4i = (GLF_live4i + 1)) {
+      if ((GLF_live4_looplimiter5 >= 7)) {
+        break;
+      }
+      GLF_live4_looplimiter5 = (GLF_live4_looplimiter5 + 1);
+      GLF_live7m42 = float4x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f), float2(0.0f, 0.0f), float2(1.0f, 0.0f));
+      GLF_live7m33 = float3x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f));
+      GLF_live7cols = 2;
+      {
+        for(; (GLF_live7cols < 4); GLF_live7cols = (GLF_live7cols + 1)) {
+          if ((GLF_live7_looplimiter3 >= 7)) {
+            break;
+          }
+          GLF_live7_looplimiter3 = (GLF_live7_looplimiter3 + 1);
+          GLF_live7rows = 2;
+          {
+            for(; (GLF_live7rows < 4); GLF_live7rows = (GLF_live7rows + 1)) {
+              if ((GLF_live7_looplimiter2 >= 7)) {
+                break;
+              }
+              GLF_live7_looplimiter2 = (GLF_live7_looplimiter2 + 1);
+              GLF_live7_looplimiter1 = 0;
+              GLF_live7c = 0;
+              {
+                for(; (GLF_live7c < 3); GLF_live7c = (GLF_live7c + 1)) {
+                  if ((GLF_live7_looplimiter1 >= 7)) {
+                    break;
+                  }
+                  GLF_live7_looplimiter1 = (GLF_live7_looplimiter1 + 1);
+                  GLF_live7r = 0;
+                  {
+                    for(; (GLF_live7r < 2); GLF_live7r = (GLF_live7r + 1)) {
+                      if ((GLF_live7_looplimiter0 >= 7)) {
+                        break;
+                      }
+                      GLF_live7_looplimiter0 = (GLF_live7_looplimiter0 + 1);
+                      bool tint_tmp = (GLF_live7c >= 0);
+                      if (tint_tmp) {
+                        tint_tmp = (GLF_live7c < 3);
+                      }
+                      bool tint_tmp_1 = (GLF_live7r >= 0);
+                      if (tint_tmp_1) {
+                        tint_tmp_1 = (GLF_live7r < 3);
+                      }
+                      set_float3(GLF_live7m33[((tint_tmp) ? GLF_live7c : 0)], ((tint_tmp_1) ? GLF_live7r : 0), 1.0f);
+                      const float x_267 = asfloat(x_25[0].y);
+                      if ((0.0f > x_267)) {
+                      } else {
+                        bool tint_tmp_2 = (GLF_live7c >= 0);
+                        if (tint_tmp_2) {
+                          tint_tmp_2 = (GLF_live7c < 4);
+                        }
+                        bool tint_tmp_3 = (GLF_live7r >= 0);
+                        if (tint_tmp_3) {
+                          tint_tmp_3 = (GLF_live7r < 2);
+                        }
+                        set_float2(GLF_live7m42[((tint_tmp_2) ? GLF_live7c : 0)], ((tint_tmp_3) ? GLF_live7r : 0), 1.0f);
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      GLF_live7sum_index = 0;
+      GLF_live7_looplimiter7 = 0;
+      GLF_live7cols_1 = 2;
+      {
+        for(; (GLF_live7cols_1 < 4); GLF_live7cols_1 = (GLF_live7cols_1 + 1)) {
+          if ((GLF_live7_looplimiter7 >= 7)) {
+            break;
+          }
+          GLF_live7_looplimiter7 = (GLF_live7_looplimiter7 + 1);
+          GLF_live7rows_1 = 2;
+          bool tint_tmp_4 = (GLF_live7sum_index >= 0);
+          if (tint_tmp_4) {
+            tint_tmp_4 = (GLF_live7sum_index < 9);
+          }
+          GLF_live7sums[((tint_tmp_4) ? GLF_live7sum_index : 0)] = 0.0f;
+          GLF_live7c_1 = 0;
+          {
+            for(; (GLF_live7c_1 < 1); GLF_live7c_1 = (GLF_live7c_1 + 1)) {
+              GLF_live7r_1 = 0;
+              {
+                for(; (GLF_live7r_1 < GLF_live7rows_1); GLF_live7r_1 = (GLF_live7r_1 + 1)) {
+                  bool tint_tmp_5 = (GLF_live7sum_index >= 0);
+                  if (tint_tmp_5) {
+                    tint_tmp_5 = (GLF_live7sum_index < 9);
+                  }
+                  const int x_310 = ((tint_tmp_5) ? GLF_live7sum_index : 0);
+                  const float3x3 x_312 = transpose(GLF_live7m33);
+                  if ((GLF_live7c_1 < 3)) {
+                    x_180 = 1;
+                  } else {
+                    const float x_318 = asfloat(x_25[0].x);
+                    x_180 = int(x_318);
+                  }
+                  const int x_320 = x_180;
+                  const int x_93 = GLF_live7r_1;
+                  indexable = x_312;
+                  const float x_324 = indexable[x_320][((x_93 < 3) ? 1 : 0)];
+                  const float x_326 = GLF_live7sums[x_310];
+                  GLF_live7sums[x_310] = (x_326 + x_324);
+                  bool tint_tmp_6 = (GLF_live7sum_index >= 0);
+                  if (tint_tmp_6) {
+                    tint_tmp_6 = (GLF_live7sum_index < 9);
+                  }
+                  const int x_332 = ((tint_tmp_6) ? GLF_live7sum_index : 0);
+                  const float x_334 = GLF_live7m42[1][GLF_live7r_1];
+                  const float x_336 = GLF_live7sums[x_332];
+                  GLF_live7sums[x_332] = (x_336 + x_334);
+                }
+              }
+            }
+          }
+          GLF_live7sum_index = (GLF_live7sum_index + 1);
+        }
+      }
+    }
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1() {
+  float2 position = float2(0.0f, 0.0f);
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  int i = 0;
+  float2 param_2 = float2(0.0f, 0.0f);
+  const float x_161 = asfloat(x_25[0].x);
+  if ((x_161 >= 2.0f)) {
+    const float4 x_165 = gl_FragCoord;
+    position = float2(x_165.x, x_165.y);
+    param = position;
+    const float3 x_168 = drawShape_vf2_(param);
+    param_1 = position;
+    const float3 x_170 = drawShape_vf2_(param_1);
+    i = 25;
+    {
+      for(; (i > 0); i = (i - 1)) {
+        param_2 = position;
+        const float3 x_178 = drawShape_vf2_(param_2);
+      }
+    }
+  }
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..9f3a7ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.msl
@@ -0,0 +1,312 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 drawShape_vf2_(constant buf0& x_25, thread float2* const pos) {
+  bool c2 = false;
+  bool c3 = false;
+  bool c4 = false;
+  bool c5 = false;
+  bool c6 = false;
+  int GLF_live4i = 0;
+  int GLF_live4_looplimiter5 = 0;
+  float4x2 GLF_live7m42 = float4x2(0.0f);
+  float3x3 GLF_live7m33 = float3x3(0.0f);
+  int GLF_live7cols = 0;
+  int GLF_live7_looplimiter3 = 0;
+  int GLF_live7rows = 0;
+  int GLF_live7_looplimiter2 = 0;
+  int GLF_live7_looplimiter1 = 0;
+  int GLF_live7c = 0;
+  int GLF_live7r = 0;
+  int GLF_live7_looplimiter0 = 0;
+  int GLF_live7sum_index = 0;
+  int GLF_live7_looplimiter7 = 0;
+  int GLF_live7cols_1 = 0;
+  int GLF_live7rows_1 = 0;
+  tint_array_wrapper GLF_live7sums = {};
+  int GLF_live7c_1 = 0;
+  int GLF_live7r_1 = 0;
+  int x_180 = 0;
+  float3x3 indexable = float3x3(0.0f);
+  float const x_182 = (*(pos)).x;
+  c2 = (x_182 > 1.0f);
+  bool const x_184 = c2;
+  if (x_184) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  float const x_188 = (*(pos)).y;
+  c3 = (x_188 < 1.0f);
+  bool const x_190 = c3;
+  if (x_190) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  float const x_194 = (*(pos)).y;
+  c4 = (x_194 > 1.0f);
+  bool const x_196 = c4;
+  if (x_196) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  float const x_200 = (*(pos)).x;
+  c5 = (x_200 < 1.0f);
+  bool const x_202 = c5;
+  if (x_202) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  float const x_206 = (*(pos)).x;
+  c6 = ((x_206 + 1.0f) > 1.0f);
+  bool const x_209 = c6;
+  if (x_209) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  GLF_live4i = 0;
+  while (true) {
+    int const x_39 = GLF_live4i;
+    if ((x_39 < 4)) {
+    } else {
+      break;
+    }
+    int const x_40 = GLF_live4_looplimiter5;
+    if ((x_40 >= 7)) {
+      break;
+    }
+    int const x_41 = GLF_live4_looplimiter5;
+    GLF_live4_looplimiter5 = (x_41 + 1);
+    GLF_live7m42 = float4x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f), float2(0.0f, 0.0f), float2(1.0f, 0.0f));
+    GLF_live7m33 = float3x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f));
+    GLF_live7cols = 2;
+    while (true) {
+      int const x_43 = GLF_live7cols;
+      if ((x_43 < 4)) {
+      } else {
+        break;
+      }
+      int const x_44 = GLF_live7_looplimiter3;
+      if ((x_44 >= 7)) {
+        break;
+      }
+      int const x_45 = GLF_live7_looplimiter3;
+      GLF_live7_looplimiter3 = (x_45 + 1);
+      GLF_live7rows = 2;
+      while (true) {
+        int const x_47 = GLF_live7rows;
+        if ((x_47 < 4)) {
+        } else {
+          break;
+        }
+        int const x_48 = GLF_live7_looplimiter2;
+        if ((x_48 >= 7)) {
+          break;
+        }
+        int const x_49 = GLF_live7_looplimiter2;
+        GLF_live7_looplimiter2 = (x_49 + 1);
+        GLF_live7_looplimiter1 = 0;
+        GLF_live7c = 0;
+        while (true) {
+          int const x_51 = GLF_live7c;
+          if ((x_51 < 3)) {
+          } else {
+            break;
+          }
+          int const x_52 = GLF_live7_looplimiter1;
+          if ((x_52 >= 7)) {
+            break;
+          }
+          int const x_53 = GLF_live7_looplimiter1;
+          GLF_live7_looplimiter1 = (x_53 + 1);
+          GLF_live7r = 0;
+          while (true) {
+            int const x_55 = GLF_live7r;
+            if ((x_55 < 2)) {
+            } else {
+              break;
+            }
+            int const x_56 = GLF_live7_looplimiter0;
+            if ((x_56 >= 7)) {
+              break;
+            }
+            int const x_57 = GLF_live7_looplimiter0;
+            GLF_live7_looplimiter0 = (x_57 + 1);
+            int const x_59 = GLF_live7c;
+            int const x_60 = GLF_live7c;
+            int const x_61 = GLF_live7c;
+            int const x_62 = GLF_live7r;
+            int const x_63 = GLF_live7r;
+            int const x_64 = GLF_live7r;
+            GLF_live7m33[select(0, x_61, ((x_59 >= 0) && (x_60 < 3)))][select(0, x_64, ((x_62 >= 0) && (x_63 < 3)))] = 1.0f;
+            float const x_267 = x_25.injectionSwitch.y;
+            if ((0.0f > x_267)) {
+            } else {
+              int const x_65 = GLF_live7c;
+              int const x_66 = GLF_live7c;
+              int const x_67 = GLF_live7c;
+              int const x_68 = GLF_live7r;
+              int const x_69 = GLF_live7r;
+              int const x_70 = GLF_live7r;
+              GLF_live7m42[select(0, x_67, ((x_65 >= 0) && (x_66 < 4)))][select(0, x_70, ((x_68 >= 0) && (x_69 < 2)))] = 1.0f;
+            }
+            {
+              int const x_71 = GLF_live7r;
+              GLF_live7r = (x_71 + 1);
+            }
+          }
+          {
+            int const x_73 = GLF_live7c;
+            GLF_live7c = (x_73 + 1);
+          }
+        }
+        {
+          int const x_75 = GLF_live7rows;
+          GLF_live7rows = (x_75 + 1);
+        }
+      }
+      {
+        int const x_77 = GLF_live7cols;
+        GLF_live7cols = (x_77 + 1);
+      }
+    }
+    GLF_live7sum_index = 0;
+    GLF_live7_looplimiter7 = 0;
+    GLF_live7cols_1 = 2;
+    while (true) {
+      int const x_79 = GLF_live7cols_1;
+      if ((x_79 < 4)) {
+      } else {
+        break;
+      }
+      int const x_80 = GLF_live7_looplimiter7;
+      if ((x_80 >= 7)) {
+        break;
+      }
+      int const x_81 = GLF_live7_looplimiter7;
+      GLF_live7_looplimiter7 = (x_81 + 1);
+      GLF_live7rows_1 = 2;
+      int const x_83 = GLF_live7sum_index;
+      int const x_84 = GLF_live7sum_index;
+      int const x_85 = GLF_live7sum_index;
+      GLF_live7sums.arr[select(0, x_85, ((x_83 >= 0) && (x_84 < 9)))] = 0.0f;
+      GLF_live7c_1 = 0;
+      while (true) {
+        int const x_86 = GLF_live7c_1;
+        if ((x_86 < 1)) {
+        } else {
+          break;
+        }
+        GLF_live7r_1 = 0;
+        while (true) {
+          int const x_87 = GLF_live7r_1;
+          int const x_88 = GLF_live7rows_1;
+          if ((x_87 < x_88)) {
+          } else {
+            break;
+          }
+          int const x_89 = GLF_live7sum_index;
+          int const x_90 = GLF_live7sum_index;
+          int const x_91 = GLF_live7sum_index;
+          int const x_310 = select(0, x_91, ((x_89 >= 0) && (x_90 < 9)));
+          float3x3 const x_311 = GLF_live7m33;
+          float3x3 const x_312 = transpose(x_311);
+          int const x_92 = GLF_live7c_1;
+          if ((x_92 < 3)) {
+            x_180 = 1;
+          } else {
+            float const x_318 = x_25.injectionSwitch.x;
+            x_180 = int(x_318);
+          }
+          int const x_320 = x_180;
+          int const x_93 = GLF_live7r_1;
+          indexable = x_312;
+          float const x_324 = indexable[x_320][select(0, 1, (x_93 < 3))];
+          float const x_326 = GLF_live7sums.arr[x_310];
+          GLF_live7sums.arr[x_310] = (x_326 + x_324);
+          int const x_94 = GLF_live7sum_index;
+          int const x_95 = GLF_live7sum_index;
+          int const x_96 = GLF_live7sum_index;
+          int const x_332 = select(0, x_96, ((x_94 >= 0) && (x_95 < 9)));
+          int const x_97 = GLF_live7r_1;
+          float const x_334 = GLF_live7m42[1][x_97];
+          float const x_336 = GLF_live7sums.arr[x_332];
+          GLF_live7sums.arr[x_332] = (x_336 + x_334);
+          {
+            int const x_98 = GLF_live7r_1;
+            GLF_live7r_1 = (x_98 + 1);
+          }
+        }
+        {
+          int const x_100 = GLF_live7c_1;
+          GLF_live7c_1 = (x_100 + 1);
+        }
+      }
+      int const x_102 = GLF_live7sum_index;
+      GLF_live7sum_index = (x_102 + 1);
+      {
+        int const x_104 = GLF_live7cols_1;
+        GLF_live7cols_1 = (x_104 + 1);
+      }
+    }
+    {
+      int const x_106 = GLF_live4i;
+      GLF_live4i = (x_106 + 1);
+    }
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1(constant buf0& x_25, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 position = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  int i = 0;
+  float2 param_2 = 0.0f;
+  float const x_161 = x_25.injectionSwitch.x;
+  if ((x_161 >= 2.0f)) {
+    float4 const x_165 = *(tint_symbol_5);
+    position = float2(x_165.x, x_165.y);
+    float2 const x_167 = position;
+    param = x_167;
+    float3 const x_168 = drawShape_vf2_(x_25, &(param));
+    float2 const x_169 = position;
+    param_1 = x_169;
+    float3 const x_170 = drawShape_vf2_(x_25, &(param_1));
+    i = 25;
+    while (true) {
+      int const x_108 = i;
+      if ((x_108 > 0)) {
+      } else {
+        break;
+      }
+      float2 const x_177 = position;
+      param_2 = x_177;
+      float3 const x_178 = drawShape_vf2_(x_25, &(param_2));
+      {
+        int const x_109 = i;
+        i = (x_109 - 1);
+      }
+    }
+  }
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_25 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_25, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..694e352
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,663 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 403
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_25 "x_25"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %drawShape_vf2_ "drawShape_vf2_"
+               OpName %pos "pos"
+               OpName %c2 "c2"
+               OpName %c3 "c3"
+               OpName %c4 "c4"
+               OpName %c5 "c5"
+               OpName %c6 "c6"
+               OpName %GLF_live4i "GLF_live4i"
+               OpName %GLF_live4_looplimiter5 "GLF_live4_looplimiter5"
+               OpName %GLF_live7m42 "GLF_live7m42"
+               OpName %GLF_live7m33 "GLF_live7m33"
+               OpName %GLF_live7cols "GLF_live7cols"
+               OpName %GLF_live7_looplimiter3 "GLF_live7_looplimiter3"
+               OpName %GLF_live7rows "GLF_live7rows"
+               OpName %GLF_live7_looplimiter2 "GLF_live7_looplimiter2"
+               OpName %GLF_live7_looplimiter1 "GLF_live7_looplimiter1"
+               OpName %GLF_live7c "GLF_live7c"
+               OpName %GLF_live7r "GLF_live7r"
+               OpName %GLF_live7_looplimiter0 "GLF_live7_looplimiter0"
+               OpName %GLF_live7sum_index "GLF_live7sum_index"
+               OpName %GLF_live7_looplimiter7 "GLF_live7_looplimiter7"
+               OpName %GLF_live7cols_1 "GLF_live7cols_1"
+               OpName %GLF_live7rows_1 "GLF_live7rows_1"
+               OpName %GLF_live7sums "GLF_live7sums"
+               OpName %GLF_live7c_1 "GLF_live7c_1"
+               OpName %GLF_live7r_1 "GLF_live7r_1"
+               OpName %x_180 "x_180"
+               OpName %indexable "indexable"
+               OpName %main_1 "main_1"
+               OpName %position "position"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %i "i"
+               OpName %param_2 "param_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_25 NonWritable
+               OpDecorate %x_25 DescriptorSet 0
+               OpDecorate %x_25 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_25 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %v3float %_ptr_Function_v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %24 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpConstantNull %int
+%mat4v2float = OpTypeMatrix %v2float 4
+%_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float
+         %37 = OpConstantNull %mat4v2float
+%mat3v3float = OpTypeMatrix %v3float 3
+%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
+         %41 = OpConstantNull %mat3v3float
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %59 = OpConstantNull %_arr_float_uint_9
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+         %74 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+     %uint_1 = OpConstant %uint 1
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+      %int_7 = OpConstant %int 7
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %125 = OpConstantComposite %v2float %float_1 %float_0
+        %126 = OpConstantComposite %v2float %float_0 %float_1
+        %127 = OpConstantComposite %v2float %float_0 %float_0
+        %128 = OpConstantComposite %mat4v2float %125 %126 %127 %125
+        %129 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+        %130 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+        %131 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+        %132 = OpConstantComposite %mat3v3float %129 %130 %131
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_9 = OpConstant %int 9
+       %void = OpTypeVoid
+        %348 = OpTypeFunction %void
+        %353 = OpConstantNull %v2float
+    %float_2 = OpConstant %float 2
+     %int_25 = OpConstant %int 25
+        %389 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %390 = OpTypeFunction %void %main_out
+%drawShape_vf2_ = OpFunction %v3float None %15
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %c2 = OpVariable %_ptr_Function_bool Function %24
+         %c3 = OpVariable %_ptr_Function_bool Function %24
+         %c4 = OpVariable %_ptr_Function_bool Function %24
+         %c5 = OpVariable %_ptr_Function_bool Function %24
+         %c6 = OpVariable %_ptr_Function_bool Function %24
+ %GLF_live4i = OpVariable %_ptr_Function_int Function %32
+%GLF_live4_looplimiter5 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7m42 = OpVariable %_ptr_Function_mat4v2float Function %37
+%GLF_live7m33 = OpVariable %_ptr_Function_mat3v3float Function %41
+%GLF_live7cols = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter3 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7rows = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter2 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter1 = OpVariable %_ptr_Function_int Function %32
+ %GLF_live7c = OpVariable %_ptr_Function_int Function %32
+ %GLF_live7r = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter0 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7sum_index = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter7 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7cols_1 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7rows_1 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %59
+%GLF_live7c_1 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7r_1 = OpVariable %_ptr_Function_int Function %32
+      %x_180 = OpVariable %_ptr_Function_int Function %32
+  %indexable = OpVariable %_ptr_Function_mat3v3float Function %41
+         %67 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %68 = OpLoad %float %67
+         %70 = OpFOrdGreaterThan %bool %68 %float_1
+               OpStore %c2 %70
+         %71 = OpLoad %bool %c2
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpReturnValue %74
+         %72 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpFOrdLessThan %bool %78 %float_1
+               OpStore %c3 %79
+         %80 = OpLoad %bool %c3
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+               OpReturnValue %74
+         %81 = OpLabel
+         %84 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %85 = OpLoad %float %84
+         %86 = OpFOrdGreaterThan %bool %85 %float_1
+               OpStore %c4 %86
+         %87 = OpLoad %bool %c4
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpReturnValue %74
+         %88 = OpLabel
+         %91 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %92 = OpLoad %float %91
+         %93 = OpFOrdLessThan %bool %92 %float_1
+               OpStore %c5 %93
+         %94 = OpLoad %bool %c5
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+               OpReturnValue %74
+         %95 = OpLabel
+         %98 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpFAdd %float %99 %float_1
+        %101 = OpFOrdGreaterThan %bool %100 %float_1
+               OpStore %c6 %101
+        %102 = OpLoad %bool %c6
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+               OpReturnValue %74
+        %103 = OpLabel
+               OpStore %GLF_live4i %int_0
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %GLF_live4i
+        %112 = OpSLessThan %bool %110 %int_4
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %115
+        %114 = OpLabel
+               OpBranch %113
+        %115 = OpLabel
+               OpBranch %107
+        %113 = OpLabel
+        %116 = OpLoad %int %GLF_live4_looplimiter5
+        %118 = OpSGreaterThanEqual %bool %116 %int_7
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpBranch %107
+        %119 = OpLabel
+        %121 = OpLoad %int %GLF_live4_looplimiter5
+        %123 = OpIAdd %int %121 %int_1
+               OpStore %GLF_live4_looplimiter5 %123
+               OpStore %GLF_live7m42 %128
+               OpStore %GLF_live7m33 %132
+               OpStore %GLF_live7cols %int_2
+               OpBranch %134
+        %134 = OpLabel
+               OpLoopMerge %135 %136 None
+               OpBranch %137
+        %137 = OpLabel
+        %138 = OpLoad %int %GLF_live7cols
+        %139 = OpSLessThan %bool %138 %int_4
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %142
+        %141 = OpLabel
+               OpBranch %140
+        %142 = OpLabel
+               OpBranch %135
+        %140 = OpLabel
+        %143 = OpLoad %int %GLF_live7_looplimiter3
+        %144 = OpSGreaterThanEqual %bool %143 %int_7
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %145
+        %146 = OpLabel
+               OpBranch %135
+        %145 = OpLabel
+        %147 = OpLoad %int %GLF_live7_looplimiter3
+        %148 = OpIAdd %int %147 %int_1
+               OpStore %GLF_live7_looplimiter3 %148
+               OpStore %GLF_live7rows %int_2
+               OpBranch %149
+        %149 = OpLabel
+               OpLoopMerge %150 %151 None
+               OpBranch %152
+        %152 = OpLabel
+        %153 = OpLoad %int %GLF_live7rows
+        %154 = OpSLessThan %bool %153 %int_4
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+               OpBranch %155
+        %157 = OpLabel
+               OpBranch %150
+        %155 = OpLabel
+        %158 = OpLoad %int %GLF_live7_looplimiter2
+        %159 = OpSGreaterThanEqual %bool %158 %int_7
+               OpSelectionMerge %160 None
+               OpBranchConditional %159 %161 %160
+        %161 = OpLabel
+               OpBranch %150
+        %160 = OpLabel
+        %162 = OpLoad %int %GLF_live7_looplimiter2
+        %163 = OpIAdd %int %162 %int_1
+               OpStore %GLF_live7_looplimiter2 %163
+               OpStore %GLF_live7_looplimiter1 %int_0
+               OpStore %GLF_live7c %int_0
+               OpBranch %164
+        %164 = OpLabel
+               OpLoopMerge %165 %166 None
+               OpBranch %167
+        %167 = OpLabel
+        %168 = OpLoad %int %GLF_live7c
+        %170 = OpSLessThan %bool %168 %int_3
+               OpSelectionMerge %171 None
+               OpBranchConditional %170 %172 %173
+        %172 = OpLabel
+               OpBranch %171
+        %173 = OpLabel
+               OpBranch %165
+        %171 = OpLabel
+        %174 = OpLoad %int %GLF_live7_looplimiter1
+        %175 = OpSGreaterThanEqual %bool %174 %int_7
+               OpSelectionMerge %176 None
+               OpBranchConditional %175 %177 %176
+        %177 = OpLabel
+               OpBranch %165
+        %176 = OpLabel
+        %178 = OpLoad %int %GLF_live7_looplimiter1
+        %179 = OpIAdd %int %178 %int_1
+               OpStore %GLF_live7_looplimiter1 %179
+               OpStore %GLF_live7r %int_0
+               OpBranch %180
+        %180 = OpLabel
+               OpLoopMerge %181 %182 None
+               OpBranch %183
+        %183 = OpLabel
+        %184 = OpLoad %int %GLF_live7r
+        %185 = OpSLessThan %bool %184 %int_2
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+               OpBranch %181
+        %186 = OpLabel
+        %189 = OpLoad %int %GLF_live7_looplimiter0
+        %190 = OpSGreaterThanEqual %bool %189 %int_7
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %191
+        %192 = OpLabel
+               OpBranch %181
+        %191 = OpLabel
+        %193 = OpLoad %int %GLF_live7_looplimiter0
+        %194 = OpIAdd %int %193 %int_1
+               OpStore %GLF_live7_looplimiter0 %194
+        %195 = OpLoad %int %GLF_live7c
+        %196 = OpLoad %int %GLF_live7c
+        %197 = OpLoad %int %GLF_live7c
+        %198 = OpLoad %int %GLF_live7r
+        %199 = OpLoad %int %GLF_live7r
+        %200 = OpLoad %int %GLF_live7r
+        %202 = OpSGreaterThanEqual %bool %195 %int_0
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %203
+        %204 = OpLabel
+        %205 = OpSLessThan %bool %196 %int_3
+               OpBranch %203
+        %203 = OpLabel
+        %206 = OpPhi %bool %202 %191 %205 %204
+        %201 = OpSelect %int %206 %197 %int_0
+        %208 = OpSGreaterThanEqual %bool %198 %int_0
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %209
+        %210 = OpLabel
+        %211 = OpSLessThan %bool %199 %int_3
+               OpBranch %209
+        %209 = OpLabel
+        %212 = OpPhi %bool %208 %203 %211 %210
+        %207 = OpSelect %int %212 %200 %int_0
+        %213 = OpAccessChain %_ptr_Function_float %GLF_live7m33 %201 %207
+               OpStore %213 %float_1
+        %215 = OpAccessChain %_ptr_Uniform_float %x_25 %uint_0 %uint_1
+        %216 = OpLoad %float %215
+        %217 = OpFOrdGreaterThan %bool %float_0 %216
+               OpSelectionMerge %218 None
+               OpBranchConditional %217 %219 %220
+        %219 = OpLabel
+               OpBranch %218
+        %220 = OpLabel
+        %221 = OpLoad %int %GLF_live7c
+        %222 = OpLoad %int %GLF_live7c
+        %223 = OpLoad %int %GLF_live7c
+        %224 = OpLoad %int %GLF_live7r
+        %225 = OpLoad %int %GLF_live7r
+        %226 = OpLoad %int %GLF_live7r
+        %228 = OpSGreaterThanEqual %bool %221 %int_0
+               OpSelectionMerge %229 None
+               OpBranchConditional %228 %230 %229
+        %230 = OpLabel
+        %231 = OpSLessThan %bool %222 %int_4
+               OpBranch %229
+        %229 = OpLabel
+        %232 = OpPhi %bool %228 %220 %231 %230
+        %227 = OpSelect %int %232 %223 %int_0
+        %234 = OpSGreaterThanEqual %bool %224 %int_0
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %237 = OpSLessThan %bool %225 %int_2
+               OpBranch %235
+        %235 = OpLabel
+        %238 = OpPhi %bool %234 %229 %237 %236
+        %233 = OpSelect %int %238 %226 %int_0
+        %239 = OpAccessChain %_ptr_Function_float %GLF_live7m42 %227 %233
+               OpStore %239 %float_1
+               OpBranch %218
+        %218 = OpLabel
+               OpBranch %182
+        %182 = OpLabel
+        %240 = OpLoad %int %GLF_live7r
+        %241 = OpIAdd %int %240 %int_1
+               OpStore %GLF_live7r %241
+               OpBranch %180
+        %181 = OpLabel
+               OpBranch %166
+        %166 = OpLabel
+        %242 = OpLoad %int %GLF_live7c
+        %243 = OpIAdd %int %242 %int_1
+               OpStore %GLF_live7c %243
+               OpBranch %164
+        %165 = OpLabel
+               OpBranch %151
+        %151 = OpLabel
+        %244 = OpLoad %int %GLF_live7rows
+        %245 = OpIAdd %int %244 %int_1
+               OpStore %GLF_live7rows %245
+               OpBranch %149
+        %150 = OpLabel
+               OpBranch %136
+        %136 = OpLabel
+        %246 = OpLoad %int %GLF_live7cols
+        %247 = OpIAdd %int %246 %int_1
+               OpStore %GLF_live7cols %247
+               OpBranch %134
+        %135 = OpLabel
+               OpStore %GLF_live7sum_index %int_0
+               OpStore %GLF_live7_looplimiter7 %int_0
+               OpStore %GLF_live7cols_1 %int_2
+               OpBranch %248
+        %248 = OpLabel
+               OpLoopMerge %249 %250 None
+               OpBranch %251
+        %251 = OpLabel
+        %252 = OpLoad %int %GLF_live7cols_1
+        %253 = OpSLessThan %bool %252 %int_4
+               OpSelectionMerge %254 None
+               OpBranchConditional %253 %255 %256
+        %255 = OpLabel
+               OpBranch %254
+        %256 = OpLabel
+               OpBranch %249
+        %254 = OpLabel
+        %257 = OpLoad %int %GLF_live7_looplimiter7
+        %258 = OpSGreaterThanEqual %bool %257 %int_7
+               OpSelectionMerge %259 None
+               OpBranchConditional %258 %260 %259
+        %260 = OpLabel
+               OpBranch %249
+        %259 = OpLabel
+        %261 = OpLoad %int %GLF_live7_looplimiter7
+        %262 = OpIAdd %int %261 %int_1
+               OpStore %GLF_live7_looplimiter7 %262
+               OpStore %GLF_live7rows_1 %int_2
+        %263 = OpLoad %int %GLF_live7sum_index
+        %264 = OpLoad %int %GLF_live7sum_index
+        %265 = OpLoad %int %GLF_live7sum_index
+        %267 = OpSGreaterThanEqual %bool %263 %int_0
+               OpSelectionMerge %268 None
+               OpBranchConditional %267 %269 %268
+        %269 = OpLabel
+        %271 = OpSLessThan %bool %264 %int_9
+               OpBranch %268
+        %268 = OpLabel
+        %272 = OpPhi %bool %267 %259 %271 %269
+        %266 = OpSelect %int %272 %265 %int_0
+        %273 = OpAccessChain %_ptr_Function_float %GLF_live7sums %266
+               OpStore %273 %float_0
+               OpStore %GLF_live7c_1 %int_0
+               OpBranch %274
+        %274 = OpLabel
+               OpLoopMerge %275 %276 None
+               OpBranch %277
+        %277 = OpLabel
+        %278 = OpLoad %int %GLF_live7c_1
+        %279 = OpSLessThan %bool %278 %int_1
+               OpSelectionMerge %280 None
+               OpBranchConditional %279 %281 %282
+        %281 = OpLabel
+               OpBranch %280
+        %282 = OpLabel
+               OpBranch %275
+        %280 = OpLabel
+               OpStore %GLF_live7r_1 %int_0
+               OpBranch %283
+        %283 = OpLabel
+               OpLoopMerge %284 %285 None
+               OpBranch %286
+        %286 = OpLabel
+        %287 = OpLoad %int %GLF_live7r_1
+        %288 = OpLoad %int %GLF_live7rows_1
+        %289 = OpSLessThan %bool %287 %288
+               OpSelectionMerge %290 None
+               OpBranchConditional %289 %291 %292
+        %291 = OpLabel
+               OpBranch %290
+        %292 = OpLabel
+               OpBranch %284
+        %290 = OpLabel
+        %293 = OpLoad %int %GLF_live7sum_index
+        %294 = OpLoad %int %GLF_live7sum_index
+        %295 = OpLoad %int %GLF_live7sum_index
+        %297 = OpSGreaterThanEqual %bool %293 %int_0
+               OpSelectionMerge %298 None
+               OpBranchConditional %297 %299 %298
+        %299 = OpLabel
+        %300 = OpSLessThan %bool %294 %int_9
+               OpBranch %298
+        %298 = OpLabel
+        %301 = OpPhi %bool %297 %290 %300 %299
+        %296 = OpSelect %int %301 %295 %int_0
+        %302 = OpLoad %mat3v3float %GLF_live7m33
+        %303 = OpTranspose %mat3v3float %302
+        %304 = OpLoad %int %GLF_live7c_1
+        %305 = OpSLessThan %bool %304 %int_3
+               OpSelectionMerge %306 None
+               OpBranchConditional %305 %307 %308
+        %307 = OpLabel
+               OpStore %x_180 %int_1
+               OpBranch %306
+        %308 = OpLabel
+        %309 = OpAccessChain %_ptr_Uniform_float %x_25 %uint_0 %uint_0
+        %310 = OpLoad %float %309
+        %311 = OpConvertFToS %int %310
+               OpStore %x_180 %311
+               OpBranch %306
+        %306 = OpLabel
+        %312 = OpLoad %int %x_180
+        %313 = OpLoad %int %GLF_live7r_1
+               OpStore %indexable %303
+        %315 = OpSLessThan %bool %313 %int_3
+        %314 = OpSelect %int %315 %int_1 %int_0
+        %316 = OpAccessChain %_ptr_Function_float %indexable %312 %314
+        %317 = OpLoad %float %316
+        %318 = OpAccessChain %_ptr_Function_float %GLF_live7sums %296
+        %319 = OpLoad %float %318
+        %320 = OpAccessChain %_ptr_Function_float %GLF_live7sums %296
+        %321 = OpFAdd %float %319 %317
+               OpStore %320 %321
+        %322 = OpLoad %int %GLF_live7sum_index
+        %323 = OpLoad %int %GLF_live7sum_index
+        %324 = OpLoad %int %GLF_live7sum_index
+        %326 = OpSGreaterThanEqual %bool %322 %int_0
+               OpSelectionMerge %327 None
+               OpBranchConditional %326 %328 %327
+        %328 = OpLabel
+        %329 = OpSLessThan %bool %323 %int_9
+               OpBranch %327
+        %327 = OpLabel
+        %330 = OpPhi %bool %326 %306 %329 %328
+        %325 = OpSelect %int %330 %324 %int_0
+        %331 = OpLoad %int %GLF_live7r_1
+        %332 = OpAccessChain %_ptr_Function_float %GLF_live7m42 %int_1 %331
+        %333 = OpLoad %float %332
+        %334 = OpAccessChain %_ptr_Function_float %GLF_live7sums %325
+        %335 = OpLoad %float %334
+        %336 = OpAccessChain %_ptr_Function_float %GLF_live7sums %325
+        %337 = OpFAdd %float %335 %333
+               OpStore %336 %337
+               OpBranch %285
+        %285 = OpLabel
+        %338 = OpLoad %int %GLF_live7r_1
+        %339 = OpIAdd %int %338 %int_1
+               OpStore %GLF_live7r_1 %339
+               OpBranch %283
+        %284 = OpLabel
+               OpBranch %276
+        %276 = OpLabel
+        %340 = OpLoad %int %GLF_live7c_1
+        %341 = OpIAdd %int %340 %int_1
+               OpStore %GLF_live7c_1 %341
+               OpBranch %274
+        %275 = OpLabel
+        %342 = OpLoad %int %GLF_live7sum_index
+        %343 = OpIAdd %int %342 %int_1
+               OpStore %GLF_live7sum_index %343
+               OpBranch %250
+        %250 = OpLabel
+        %344 = OpLoad %int %GLF_live7cols_1
+        %345 = OpIAdd %int %344 %int_1
+               OpStore %GLF_live7cols_1 %345
+               OpBranch %248
+        %249 = OpLabel
+               OpBranch %108
+        %108 = OpLabel
+        %346 = OpLoad %int %GLF_live4i
+        %347 = OpIAdd %int %346 %int_1
+               OpStore %GLF_live4i %347
+               OpBranch %106
+        %107 = OpLabel
+               OpReturnValue %74
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %348
+        %351 = OpLabel
+   %position = OpVariable %_ptr_Function_v2float Function %353
+      %param = OpVariable %_ptr_Function_v2float Function %353
+    %param_1 = OpVariable %_ptr_Function_v2float Function %353
+          %i = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_v2float Function %353
+        %358 = OpAccessChain %_ptr_Uniform_float %x_25 %uint_0 %uint_0
+        %359 = OpLoad %float %358
+        %361 = OpFOrdGreaterThanEqual %bool %359 %float_2
+               OpSelectionMerge %362 None
+               OpBranchConditional %361 %363 %362
+        %363 = OpLabel
+        %364 = OpLoad %v4float %gl_FragCoord
+        %365 = OpCompositeExtract %float %364 0
+        %366 = OpCompositeExtract %float %364 1
+        %367 = OpCompositeConstruct %v2float %365 %366
+               OpStore %position %367
+        %368 = OpLoad %v2float %position
+               OpStore %param %368
+        %369 = OpFunctionCall %v3float %drawShape_vf2_ %param
+        %371 = OpLoad %v2float %position
+               OpStore %param_1 %371
+        %372 = OpFunctionCall %v3float %drawShape_vf2_ %param_1
+               OpStore %i %int_25
+               OpBranch %375
+        %375 = OpLabel
+               OpLoopMerge %376 %377 None
+               OpBranch %378
+        %378 = OpLabel
+        %379 = OpLoad %int %i
+        %380 = OpSGreaterThan %bool %379 %int_0
+               OpSelectionMerge %381 None
+               OpBranchConditional %380 %382 %383
+        %382 = OpLabel
+               OpBranch %381
+        %383 = OpLabel
+               OpBranch %376
+        %381 = OpLabel
+        %384 = OpLoad %v2float %position
+               OpStore %param_2 %384
+        %385 = OpFunctionCall %v3float %drawShape_vf2_ %param_2
+               OpBranch %377
+        %377 = OpLabel
+        %387 = OpLoad %int %i
+        %388 = OpISub %int %387 %int_1
+               OpStore %i %388
+               OpBranch %375
+        %376 = OpLabel
+               OpBranch %362
+        %362 = OpLabel
+               OpStore %x_GLF_color %389
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %390
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %394 = OpLabel
+        %395 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %395
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %348
+        %397 = OpLabel
+        %398 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %398
+        %399 = OpFunctionCall %void %main_1
+        %401 = OpLoad %v4float %x_GLF_color
+        %402 = OpCompositeConstruct %main_out %401
+        %400 = OpFunctionCall %void %tint_symbol_3 %402
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..9ca6d37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,317 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_25 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn drawShape_vf2_(pos : ptr<function, vec2<f32>>) -> vec3<f32> {
+  var c2 : bool;
+  var c3 : bool;
+  var c4 : bool;
+  var c5 : bool;
+  var c6 : bool;
+  var GLF_live4i : i32;
+  var GLF_live4_looplimiter5 : i32;
+  var GLF_live7m42 : mat4x2<f32>;
+  var GLF_live7m33 : mat3x3<f32>;
+  var GLF_live7cols : i32;
+  var GLF_live7_looplimiter3 : i32;
+  var GLF_live7rows : i32;
+  var GLF_live7_looplimiter2 : i32;
+  var GLF_live7_looplimiter1 : i32;
+  var GLF_live7c : i32;
+  var GLF_live7r : i32;
+  var GLF_live7_looplimiter0 : i32;
+  var GLF_live7sum_index : i32;
+  var GLF_live7_looplimiter7 : i32;
+  var GLF_live7cols_1 : i32;
+  var GLF_live7rows_1 : i32;
+  var GLF_live7sums : array<f32, 9>;
+  var GLF_live7c_1 : i32;
+  var GLF_live7r_1 : i32;
+  var x_180 : i32;
+  var indexable : mat3x3<f32>;
+  let x_182 : f32 = (*(pos)).x;
+  c2 = (x_182 > 1.0);
+  let x_184 : bool = c2;
+  if (x_184) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_188 : f32 = (*(pos)).y;
+  c3 = (x_188 < 1.0);
+  let x_190 : bool = c3;
+  if (x_190) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_194 : f32 = (*(pos)).y;
+  c4 = (x_194 > 1.0);
+  let x_196 : bool = c4;
+  if (x_196) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_200 : f32 = (*(pos)).x;
+  c5 = (x_200 < 1.0);
+  let x_202 : bool = c5;
+  if (x_202) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_206 : f32 = (*(pos)).x;
+  c6 = ((x_206 + 1.0) > 1.0);
+  let x_209 : bool = c6;
+  if (x_209) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  GLF_live4i = 0;
+  loop {
+    let x_39 : i32 = GLF_live4i;
+    if ((x_39 < 4)) {
+    } else {
+      break;
+    }
+    let x_40 : i32 = GLF_live4_looplimiter5;
+    if ((x_40 >= 7)) {
+      break;
+    }
+    let x_41 : i32 = GLF_live4_looplimiter5;
+    GLF_live4_looplimiter5 = (x_41 + 1);
+    GLF_live7m42 = mat4x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0), vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 0.0));
+    GLF_live7m33 = mat3x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0));
+    GLF_live7cols = 2;
+    loop {
+      let x_43 : i32 = GLF_live7cols;
+      if ((x_43 < 4)) {
+      } else {
+        break;
+      }
+      let x_44 : i32 = GLF_live7_looplimiter3;
+      if ((x_44 >= 7)) {
+        break;
+      }
+      let x_45 : i32 = GLF_live7_looplimiter3;
+      GLF_live7_looplimiter3 = (x_45 + 1);
+      GLF_live7rows = 2;
+      loop {
+        let x_47 : i32 = GLF_live7rows;
+        if ((x_47 < 4)) {
+        } else {
+          break;
+        }
+        let x_48 : i32 = GLF_live7_looplimiter2;
+        if ((x_48 >= 7)) {
+          break;
+        }
+        let x_49 : i32 = GLF_live7_looplimiter2;
+        GLF_live7_looplimiter2 = (x_49 + 1);
+        GLF_live7_looplimiter1 = 0;
+        GLF_live7c = 0;
+        loop {
+          let x_51 : i32 = GLF_live7c;
+          if ((x_51 < 3)) {
+          } else {
+            break;
+          }
+          let x_52 : i32 = GLF_live7_looplimiter1;
+          if ((x_52 >= 7)) {
+            break;
+          }
+          let x_53 : i32 = GLF_live7_looplimiter1;
+          GLF_live7_looplimiter1 = (x_53 + 1);
+          GLF_live7r = 0;
+          loop {
+            let x_55 : i32 = GLF_live7r;
+            if ((x_55 < 2)) {
+            } else {
+              break;
+            }
+            let x_56 : i32 = GLF_live7_looplimiter0;
+            if ((x_56 >= 7)) {
+              break;
+            }
+            let x_57 : i32 = GLF_live7_looplimiter0;
+            GLF_live7_looplimiter0 = (x_57 + 1);
+            let x_59 : i32 = GLF_live7c;
+            let x_60 : i32 = GLF_live7c;
+            let x_61 : i32 = GLF_live7c;
+            let x_62 : i32 = GLF_live7r;
+            let x_63 : i32 = GLF_live7r;
+            let x_64 : i32 = GLF_live7r;
+            GLF_live7m33[select(0, x_61, ((x_59 >= 0) && (x_60 < 3)))][select(0, x_64, ((x_62 >= 0) && (x_63 < 3)))] = 1.0;
+            let x_267 : f32 = x_25.injectionSwitch.y;
+            if ((0.0 > x_267)) {
+            } else {
+              let x_65 : i32 = GLF_live7c;
+              let x_66 : i32 = GLF_live7c;
+              let x_67 : i32 = GLF_live7c;
+              let x_68 : i32 = GLF_live7r;
+              let x_69 : i32 = GLF_live7r;
+              let x_70 : i32 = GLF_live7r;
+              GLF_live7m42[select(0, x_67, ((x_65 >= 0) && (x_66 < 4)))][select(0, x_70, ((x_68 >= 0) && (x_69 < 2)))] = 1.0;
+            }
+
+            continuing {
+              let x_71 : i32 = GLF_live7r;
+              GLF_live7r = (x_71 + 1);
+            }
+          }
+
+          continuing {
+            let x_73 : i32 = GLF_live7c;
+            GLF_live7c = (x_73 + 1);
+          }
+        }
+
+        continuing {
+          let x_75 : i32 = GLF_live7rows;
+          GLF_live7rows = (x_75 + 1);
+        }
+      }
+
+      continuing {
+        let x_77 : i32 = GLF_live7cols;
+        GLF_live7cols = (x_77 + 1);
+      }
+    }
+    GLF_live7sum_index = 0;
+    GLF_live7_looplimiter7 = 0;
+    GLF_live7cols_1 = 2;
+    loop {
+      let x_79 : i32 = GLF_live7cols_1;
+      if ((x_79 < 4)) {
+      } else {
+        break;
+      }
+      let x_80 : i32 = GLF_live7_looplimiter7;
+      if ((x_80 >= 7)) {
+        break;
+      }
+      let x_81 : i32 = GLF_live7_looplimiter7;
+      GLF_live7_looplimiter7 = (x_81 + 1);
+      GLF_live7rows_1 = 2;
+      let x_83 : i32 = GLF_live7sum_index;
+      let x_84 : i32 = GLF_live7sum_index;
+      let x_85 : i32 = GLF_live7sum_index;
+      GLF_live7sums[select(0, x_85, ((x_83 >= 0) && (x_84 < 9)))] = 0.0;
+      GLF_live7c_1 = 0;
+      loop {
+        let x_86 : i32 = GLF_live7c_1;
+        if ((x_86 < 1)) {
+        } else {
+          break;
+        }
+        GLF_live7r_1 = 0;
+        loop {
+          let x_87 : i32 = GLF_live7r_1;
+          let x_88 : i32 = GLF_live7rows_1;
+          if ((x_87 < x_88)) {
+          } else {
+            break;
+          }
+          let x_89 : i32 = GLF_live7sum_index;
+          let x_90 : i32 = GLF_live7sum_index;
+          let x_91 : i32 = GLF_live7sum_index;
+          let x_310 : i32 = select(0, x_91, ((x_89 >= 0) && (x_90 < 9)));
+          let x_311 : mat3x3<f32> = GLF_live7m33;
+          let x_312 : mat3x3<f32> = transpose(x_311);
+          let x_92 : i32 = GLF_live7c_1;
+          if ((x_92 < 3)) {
+            x_180 = 1;
+          } else {
+            let x_318 : f32 = x_25.injectionSwitch.x;
+            x_180 = i32(x_318);
+          }
+          let x_320 : i32 = x_180;
+          let x_93 : i32 = GLF_live7r_1;
+          indexable = x_312;
+          let x_324 : f32 = indexable[x_320][select(0, 1, (x_93 < 3))];
+          let x_326 : f32 = GLF_live7sums[x_310];
+          GLF_live7sums[x_310] = (x_326 + x_324);
+          let x_94 : i32 = GLF_live7sum_index;
+          let x_95 : i32 = GLF_live7sum_index;
+          let x_96 : i32 = GLF_live7sum_index;
+          let x_332 : i32 = select(0, x_96, ((x_94 >= 0) && (x_95 < 9)));
+          let x_97 : i32 = GLF_live7r_1;
+          let x_334 : f32 = GLF_live7m42[1][x_97];
+          let x_336 : f32 = GLF_live7sums[x_332];
+          GLF_live7sums[x_332] = (x_336 + x_334);
+
+          continuing {
+            let x_98 : i32 = GLF_live7r_1;
+            GLF_live7r_1 = (x_98 + 1);
+          }
+        }
+
+        continuing {
+          let x_100 : i32 = GLF_live7c_1;
+          GLF_live7c_1 = (x_100 + 1);
+        }
+      }
+      let x_102 : i32 = GLF_live7sum_index;
+      GLF_live7sum_index = (x_102 + 1);
+
+      continuing {
+        let x_104 : i32 = GLF_live7cols_1;
+        GLF_live7cols_1 = (x_104 + 1);
+      }
+    }
+
+    continuing {
+      let x_106 : i32 = GLF_live4i;
+      GLF_live4i = (x_106 + 1);
+    }
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var position : vec2<f32>;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var i : i32;
+  var param_2 : vec2<f32>;
+  let x_161 : f32 = x_25.injectionSwitch.x;
+  if ((x_161 >= 2.0)) {
+    let x_165 : vec4<f32> = gl_FragCoord;
+    position = vec2<f32>(x_165.x, x_165.y);
+    let x_167 : vec2<f32> = position;
+    param = x_167;
+    let x_168 : vec3<f32> = drawShape_vf2_(&(param));
+    let x_169 : vec2<f32> = position;
+    param_1 = x_169;
+    let x_170 : vec3<f32> = drawShape_vf2_(&(param_1));
+    i = 25;
+    loop {
+      let x_108 : i32 = i;
+      if ((x_108 > 0)) {
+      } else {
+        break;
+      }
+      let x_177 : vec2<f32> = position;
+      param_2 = x_177;
+      let x_178 : vec3<f32> = drawShape_vf2_(&(param_2));
+
+      continuing {
+        let x_109 : i32 = i;
+        i = (x_109 - 1);
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
new file mode 100644
index 0000000..9ca6d37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
@@ -0,0 +1,317 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_25 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn drawShape_vf2_(pos : ptr<function, vec2<f32>>) -> vec3<f32> {
+  var c2 : bool;
+  var c3 : bool;
+  var c4 : bool;
+  var c5 : bool;
+  var c6 : bool;
+  var GLF_live4i : i32;
+  var GLF_live4_looplimiter5 : i32;
+  var GLF_live7m42 : mat4x2<f32>;
+  var GLF_live7m33 : mat3x3<f32>;
+  var GLF_live7cols : i32;
+  var GLF_live7_looplimiter3 : i32;
+  var GLF_live7rows : i32;
+  var GLF_live7_looplimiter2 : i32;
+  var GLF_live7_looplimiter1 : i32;
+  var GLF_live7c : i32;
+  var GLF_live7r : i32;
+  var GLF_live7_looplimiter0 : i32;
+  var GLF_live7sum_index : i32;
+  var GLF_live7_looplimiter7 : i32;
+  var GLF_live7cols_1 : i32;
+  var GLF_live7rows_1 : i32;
+  var GLF_live7sums : array<f32, 9>;
+  var GLF_live7c_1 : i32;
+  var GLF_live7r_1 : i32;
+  var x_180 : i32;
+  var indexable : mat3x3<f32>;
+  let x_182 : f32 = (*(pos)).x;
+  c2 = (x_182 > 1.0);
+  let x_184 : bool = c2;
+  if (x_184) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_188 : f32 = (*(pos)).y;
+  c3 = (x_188 < 1.0);
+  let x_190 : bool = c3;
+  if (x_190) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_194 : f32 = (*(pos)).y;
+  c4 = (x_194 > 1.0);
+  let x_196 : bool = c4;
+  if (x_196) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_200 : f32 = (*(pos)).x;
+  c5 = (x_200 < 1.0);
+  let x_202 : bool = c5;
+  if (x_202) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_206 : f32 = (*(pos)).x;
+  c6 = ((x_206 + 1.0) > 1.0);
+  let x_209 : bool = c6;
+  if (x_209) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  GLF_live4i = 0;
+  loop {
+    let x_39 : i32 = GLF_live4i;
+    if ((x_39 < 4)) {
+    } else {
+      break;
+    }
+    let x_40 : i32 = GLF_live4_looplimiter5;
+    if ((x_40 >= 7)) {
+      break;
+    }
+    let x_41 : i32 = GLF_live4_looplimiter5;
+    GLF_live4_looplimiter5 = (x_41 + 1);
+    GLF_live7m42 = mat4x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0), vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 0.0));
+    GLF_live7m33 = mat3x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0));
+    GLF_live7cols = 2;
+    loop {
+      let x_43 : i32 = GLF_live7cols;
+      if ((x_43 < 4)) {
+      } else {
+        break;
+      }
+      let x_44 : i32 = GLF_live7_looplimiter3;
+      if ((x_44 >= 7)) {
+        break;
+      }
+      let x_45 : i32 = GLF_live7_looplimiter3;
+      GLF_live7_looplimiter3 = (x_45 + 1);
+      GLF_live7rows = 2;
+      loop {
+        let x_47 : i32 = GLF_live7rows;
+        if ((x_47 < 4)) {
+        } else {
+          break;
+        }
+        let x_48 : i32 = GLF_live7_looplimiter2;
+        if ((x_48 >= 7)) {
+          break;
+        }
+        let x_49 : i32 = GLF_live7_looplimiter2;
+        GLF_live7_looplimiter2 = (x_49 + 1);
+        GLF_live7_looplimiter1 = 0;
+        GLF_live7c = 0;
+        loop {
+          let x_51 : i32 = GLF_live7c;
+          if ((x_51 < 3)) {
+          } else {
+            break;
+          }
+          let x_52 : i32 = GLF_live7_looplimiter1;
+          if ((x_52 >= 7)) {
+            break;
+          }
+          let x_53 : i32 = GLF_live7_looplimiter1;
+          GLF_live7_looplimiter1 = (x_53 + 1);
+          GLF_live7r = 0;
+          loop {
+            let x_55 : i32 = GLF_live7r;
+            if ((x_55 < 2)) {
+            } else {
+              break;
+            }
+            let x_56 : i32 = GLF_live7_looplimiter0;
+            if ((x_56 >= 7)) {
+              break;
+            }
+            let x_57 : i32 = GLF_live7_looplimiter0;
+            GLF_live7_looplimiter0 = (x_57 + 1);
+            let x_59 : i32 = GLF_live7c;
+            let x_60 : i32 = GLF_live7c;
+            let x_61 : i32 = GLF_live7c;
+            let x_62 : i32 = GLF_live7r;
+            let x_63 : i32 = GLF_live7r;
+            let x_64 : i32 = GLF_live7r;
+            GLF_live7m33[select(0, x_61, ((x_59 >= 0) && (x_60 < 3)))][select(0, x_64, ((x_62 >= 0) && (x_63 < 3)))] = 1.0;
+            let x_267 : f32 = x_25.injectionSwitch.y;
+            if ((0.0 > x_267)) {
+            } else {
+              let x_65 : i32 = GLF_live7c;
+              let x_66 : i32 = GLF_live7c;
+              let x_67 : i32 = GLF_live7c;
+              let x_68 : i32 = GLF_live7r;
+              let x_69 : i32 = GLF_live7r;
+              let x_70 : i32 = GLF_live7r;
+              GLF_live7m42[select(0, x_67, ((x_65 >= 0) && (x_66 < 4)))][select(0, x_70, ((x_68 >= 0) && (x_69 < 2)))] = 1.0;
+            }
+
+            continuing {
+              let x_71 : i32 = GLF_live7r;
+              GLF_live7r = (x_71 + 1);
+            }
+          }
+
+          continuing {
+            let x_73 : i32 = GLF_live7c;
+            GLF_live7c = (x_73 + 1);
+          }
+        }
+
+        continuing {
+          let x_75 : i32 = GLF_live7rows;
+          GLF_live7rows = (x_75 + 1);
+        }
+      }
+
+      continuing {
+        let x_77 : i32 = GLF_live7cols;
+        GLF_live7cols = (x_77 + 1);
+      }
+    }
+    GLF_live7sum_index = 0;
+    GLF_live7_looplimiter7 = 0;
+    GLF_live7cols_1 = 2;
+    loop {
+      let x_79 : i32 = GLF_live7cols_1;
+      if ((x_79 < 4)) {
+      } else {
+        break;
+      }
+      let x_80 : i32 = GLF_live7_looplimiter7;
+      if ((x_80 >= 7)) {
+        break;
+      }
+      let x_81 : i32 = GLF_live7_looplimiter7;
+      GLF_live7_looplimiter7 = (x_81 + 1);
+      GLF_live7rows_1 = 2;
+      let x_83 : i32 = GLF_live7sum_index;
+      let x_84 : i32 = GLF_live7sum_index;
+      let x_85 : i32 = GLF_live7sum_index;
+      GLF_live7sums[select(0, x_85, ((x_83 >= 0) && (x_84 < 9)))] = 0.0;
+      GLF_live7c_1 = 0;
+      loop {
+        let x_86 : i32 = GLF_live7c_1;
+        if ((x_86 < 1)) {
+        } else {
+          break;
+        }
+        GLF_live7r_1 = 0;
+        loop {
+          let x_87 : i32 = GLF_live7r_1;
+          let x_88 : i32 = GLF_live7rows_1;
+          if ((x_87 < x_88)) {
+          } else {
+            break;
+          }
+          let x_89 : i32 = GLF_live7sum_index;
+          let x_90 : i32 = GLF_live7sum_index;
+          let x_91 : i32 = GLF_live7sum_index;
+          let x_310 : i32 = select(0, x_91, ((x_89 >= 0) && (x_90 < 9)));
+          let x_311 : mat3x3<f32> = GLF_live7m33;
+          let x_312 : mat3x3<f32> = transpose(x_311);
+          let x_92 : i32 = GLF_live7c_1;
+          if ((x_92 < 3)) {
+            x_180 = 1;
+          } else {
+            let x_318 : f32 = x_25.injectionSwitch.x;
+            x_180 = i32(x_318);
+          }
+          let x_320 : i32 = x_180;
+          let x_93 : i32 = GLF_live7r_1;
+          indexable = x_312;
+          let x_324 : f32 = indexable[x_320][select(0, 1, (x_93 < 3))];
+          let x_326 : f32 = GLF_live7sums[x_310];
+          GLF_live7sums[x_310] = (x_326 + x_324);
+          let x_94 : i32 = GLF_live7sum_index;
+          let x_95 : i32 = GLF_live7sum_index;
+          let x_96 : i32 = GLF_live7sum_index;
+          let x_332 : i32 = select(0, x_96, ((x_94 >= 0) && (x_95 < 9)));
+          let x_97 : i32 = GLF_live7r_1;
+          let x_334 : f32 = GLF_live7m42[1][x_97];
+          let x_336 : f32 = GLF_live7sums[x_332];
+          GLF_live7sums[x_332] = (x_336 + x_334);
+
+          continuing {
+            let x_98 : i32 = GLF_live7r_1;
+            GLF_live7r_1 = (x_98 + 1);
+          }
+        }
+
+        continuing {
+          let x_100 : i32 = GLF_live7c_1;
+          GLF_live7c_1 = (x_100 + 1);
+        }
+      }
+      let x_102 : i32 = GLF_live7sum_index;
+      GLF_live7sum_index = (x_102 + 1);
+
+      continuing {
+        let x_104 : i32 = GLF_live7cols_1;
+        GLF_live7cols_1 = (x_104 + 1);
+      }
+    }
+
+    continuing {
+      let x_106 : i32 = GLF_live4i;
+      GLF_live4i = (x_106 + 1);
+    }
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var position : vec2<f32>;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var i : i32;
+  var param_2 : vec2<f32>;
+  let x_161 : f32 = x_25.injectionSwitch.x;
+  if ((x_161 >= 2.0)) {
+    let x_165 : vec4<f32> = gl_FragCoord;
+    position = vec2<f32>(x_165.x, x_165.y);
+    let x_167 : vec2<f32> = position;
+    param = x_167;
+    let x_168 : vec3<f32> = drawShape_vf2_(&(param));
+    let x_169 : vec2<f32> = position;
+    param_1 = x_169;
+    let x_170 : vec3<f32> = drawShape_vf2_(&(param_1));
+    i = 25;
+    loop {
+      let x_108 : i32 = i;
+      if ((x_108 > 0)) {
+      } else {
+        break;
+      }
+      let x_177 : vec2<f32> = position;
+      param_2 = x_177;
+      let x_178 : vec3<f32> = drawShape_vf2_(&(param_2));
+
+      continuing {
+        let x_109 : i32 = i;
+        i = (x_109 - 1);
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1907070
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,237 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_25 : register(b0, space0) {
+  uint4 x_25[1];
+};
+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);
+
+float3 drawShape_vf2_(inout float2 pos) {
+  bool c2 = false;
+  bool c3 = false;
+  bool c4 = false;
+  bool c5 = false;
+  bool c6 = false;
+  int GLF_live4i = 0;
+  int GLF_live4_looplimiter5 = 0;
+  float4x2 GLF_live7m42 = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x3 GLF_live7m33 = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int GLF_live7cols = 0;
+  int GLF_live7_looplimiter3 = 0;
+  int GLF_live7rows = 0;
+  int GLF_live7_looplimiter2 = 0;
+  int GLF_live7_looplimiter1 = 0;
+  int GLF_live7c = 0;
+  int GLF_live7r = 0;
+  int GLF_live7_looplimiter0 = 0;
+  int GLF_live7sum_index = 0;
+  int GLF_live7_looplimiter7 = 0;
+  int GLF_live7cols_1 = 0;
+  int GLF_live7rows_1 = 0;
+  float GLF_live7sums[9] = (float[9])0;
+  int GLF_live7c_1 = 0;
+  int GLF_live7r_1 = 0;
+  int x_180 = 0;
+  float3x3 indexable = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_182 = pos.x;
+  c2 = (x_182 > 1.0f);
+  if (c2) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  const float x_188 = pos.y;
+  c3 = (x_188 < 1.0f);
+  if (c3) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  const float x_194 = pos.y;
+  c4 = (x_194 > 1.0f);
+  if (c4) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  const float x_200 = pos.x;
+  c5 = (x_200 < 1.0f);
+  if (c5) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  const float x_206 = pos.x;
+  c6 = ((x_206 + 1.0f) > 1.0f);
+  if (c6) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  GLF_live4i = 0;
+  {
+    for(; (GLF_live4i < 4); GLF_live4i = (GLF_live4i + 1)) {
+      if ((GLF_live4_looplimiter5 >= 7)) {
+        break;
+      }
+      GLF_live4_looplimiter5 = (GLF_live4_looplimiter5 + 1);
+      GLF_live7m42 = float4x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f), float2(0.0f, 0.0f), float2(1.0f, 0.0f));
+      GLF_live7m33 = float3x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f));
+      GLF_live7cols = 2;
+      {
+        for(; (GLF_live7cols < 4); GLF_live7cols = (GLF_live7cols + 1)) {
+          if ((GLF_live7_looplimiter3 >= 7)) {
+            break;
+          }
+          GLF_live7_looplimiter3 = (GLF_live7_looplimiter3 + 1);
+          GLF_live7rows = 2;
+          {
+            for(; (GLF_live7rows < 4); GLF_live7rows = (GLF_live7rows + 1)) {
+              if ((GLF_live7_looplimiter2 >= 7)) {
+                break;
+              }
+              GLF_live7_looplimiter2 = (GLF_live7_looplimiter2 + 1);
+              GLF_live7_looplimiter1 = 0;
+              GLF_live7c = 0;
+              {
+                for(; (GLF_live7c < 3); GLF_live7c = (GLF_live7c + 1)) {
+                  if ((GLF_live7_looplimiter1 >= 7)) {
+                    break;
+                  }
+                  GLF_live7_looplimiter1 = (GLF_live7_looplimiter1 + 1);
+                  GLF_live7r = 0;
+                  {
+                    for(; (GLF_live7r < 2); GLF_live7r = (GLF_live7r + 1)) {
+                      if ((GLF_live7_looplimiter0 >= 7)) {
+                        break;
+                      }
+                      GLF_live7_looplimiter0 = (GLF_live7_looplimiter0 + 1);
+                      bool tint_tmp = (GLF_live7c >= 0);
+                      if (tint_tmp) {
+                        tint_tmp = (GLF_live7c < 3);
+                      }
+                      bool tint_tmp_1 = (GLF_live7r >= 0);
+                      if (tint_tmp_1) {
+                        tint_tmp_1 = (GLF_live7r < 3);
+                      }
+                      set_float3(GLF_live7m33[((tint_tmp) ? GLF_live7c : 0)], ((tint_tmp_1) ? GLF_live7r : 0), 1.0f);
+                      const float x_267 = asfloat(x_25[0].y);
+                      if ((0.0f > x_267)) {
+                      } else {
+                        bool tint_tmp_2 = (GLF_live7c >= 0);
+                        if (tint_tmp_2) {
+                          tint_tmp_2 = (GLF_live7c < 4);
+                        }
+                        bool tint_tmp_3 = (GLF_live7r >= 0);
+                        if (tint_tmp_3) {
+                          tint_tmp_3 = (GLF_live7r < 2);
+                        }
+                        set_float2(GLF_live7m42[((tint_tmp_2) ? GLF_live7c : 0)], ((tint_tmp_3) ? GLF_live7r : 0), 1.0f);
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      GLF_live7sum_index = 0;
+      GLF_live7_looplimiter7 = 0;
+      GLF_live7cols_1 = 2;
+      {
+        for(; (GLF_live7cols_1 < 4); GLF_live7cols_1 = (GLF_live7cols_1 + 1)) {
+          if ((GLF_live7_looplimiter7 >= 7)) {
+            break;
+          }
+          GLF_live7_looplimiter7 = (GLF_live7_looplimiter7 + 1);
+          GLF_live7rows_1 = 2;
+          bool tint_tmp_4 = (GLF_live7sum_index >= 0);
+          if (tint_tmp_4) {
+            tint_tmp_4 = (GLF_live7sum_index < 9);
+          }
+          GLF_live7sums[((tint_tmp_4) ? GLF_live7sum_index : 0)] = 0.0f;
+          GLF_live7c_1 = 0;
+          {
+            for(; (GLF_live7c_1 < 1); GLF_live7c_1 = (GLF_live7c_1 + 1)) {
+              GLF_live7r_1 = 0;
+              {
+                for(; (GLF_live7r_1 < GLF_live7rows_1); GLF_live7r_1 = (GLF_live7r_1 + 1)) {
+                  bool tint_tmp_5 = (GLF_live7sum_index >= 0);
+                  if (tint_tmp_5) {
+                    tint_tmp_5 = (GLF_live7sum_index < 9);
+                  }
+                  const int x_310 = ((tint_tmp_5) ? GLF_live7sum_index : 0);
+                  const float3x3 x_312 = transpose(GLF_live7m33);
+                  if ((GLF_live7c_1 < 3)) {
+                    x_180 = 1;
+                  } else {
+                    const float x_318 = asfloat(x_25[0].x);
+                    x_180 = int(x_318);
+                  }
+                  const int x_320 = x_180;
+                  const int x_93 = GLF_live7r_1;
+                  indexable = x_312;
+                  const float x_324 = indexable[x_320][((x_93 < 3) ? 1 : 0)];
+                  const float x_326 = GLF_live7sums[x_310];
+                  GLF_live7sums[x_310] = (x_326 + x_324);
+                  bool tint_tmp_6 = (GLF_live7sum_index >= 0);
+                  if (tint_tmp_6) {
+                    tint_tmp_6 = (GLF_live7sum_index < 9);
+                  }
+                  const int x_332 = ((tint_tmp_6) ? GLF_live7sum_index : 0);
+                  const float x_334 = GLF_live7m42[1][GLF_live7r_1];
+                  const float x_336 = GLF_live7sums[x_332];
+                  GLF_live7sums[x_332] = (x_336 + x_334);
+                }
+              }
+            }
+          }
+          GLF_live7sum_index = (GLF_live7sum_index + 1);
+        }
+      }
+    }
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1() {
+  float2 position = float2(0.0f, 0.0f);
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  int i = 0;
+  float2 param_2 = float2(0.0f, 0.0f);
+  const float x_161 = asfloat(x_25[0].x);
+  if ((x_161 >= 2.0f)) {
+    const float4 x_165 = gl_FragCoord;
+    position = float2(x_165.x, x_165.y);
+    param = position;
+    const float3 x_168 = drawShape_vf2_(param);
+    param_1 = position;
+    const float3 x_170 = drawShape_vf2_(param_1);
+    i = 25;
+    {
+      for(; (i > 0); i = (i - 1)) {
+        param_2 = position;
+        const float3 x_178 = drawShape_vf2_(param_2);
+      }
+    }
+  }
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..9f3a7ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.msl
@@ -0,0 +1,312 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 drawShape_vf2_(constant buf0& x_25, thread float2* const pos) {
+  bool c2 = false;
+  bool c3 = false;
+  bool c4 = false;
+  bool c5 = false;
+  bool c6 = false;
+  int GLF_live4i = 0;
+  int GLF_live4_looplimiter5 = 0;
+  float4x2 GLF_live7m42 = float4x2(0.0f);
+  float3x3 GLF_live7m33 = float3x3(0.0f);
+  int GLF_live7cols = 0;
+  int GLF_live7_looplimiter3 = 0;
+  int GLF_live7rows = 0;
+  int GLF_live7_looplimiter2 = 0;
+  int GLF_live7_looplimiter1 = 0;
+  int GLF_live7c = 0;
+  int GLF_live7r = 0;
+  int GLF_live7_looplimiter0 = 0;
+  int GLF_live7sum_index = 0;
+  int GLF_live7_looplimiter7 = 0;
+  int GLF_live7cols_1 = 0;
+  int GLF_live7rows_1 = 0;
+  tint_array_wrapper GLF_live7sums = {};
+  int GLF_live7c_1 = 0;
+  int GLF_live7r_1 = 0;
+  int x_180 = 0;
+  float3x3 indexable = float3x3(0.0f);
+  float const x_182 = (*(pos)).x;
+  c2 = (x_182 > 1.0f);
+  bool const x_184 = c2;
+  if (x_184) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  float const x_188 = (*(pos)).y;
+  c3 = (x_188 < 1.0f);
+  bool const x_190 = c3;
+  if (x_190) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  float const x_194 = (*(pos)).y;
+  c4 = (x_194 > 1.0f);
+  bool const x_196 = c4;
+  if (x_196) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  float const x_200 = (*(pos)).x;
+  c5 = (x_200 < 1.0f);
+  bool const x_202 = c5;
+  if (x_202) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  float const x_206 = (*(pos)).x;
+  c6 = ((x_206 + 1.0f) > 1.0f);
+  bool const x_209 = c6;
+  if (x_209) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  GLF_live4i = 0;
+  while (true) {
+    int const x_39 = GLF_live4i;
+    if ((x_39 < 4)) {
+    } else {
+      break;
+    }
+    int const x_40 = GLF_live4_looplimiter5;
+    if ((x_40 >= 7)) {
+      break;
+    }
+    int const x_41 = GLF_live4_looplimiter5;
+    GLF_live4_looplimiter5 = (x_41 + 1);
+    GLF_live7m42 = float4x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f), float2(0.0f, 0.0f), float2(1.0f, 0.0f));
+    GLF_live7m33 = float3x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f));
+    GLF_live7cols = 2;
+    while (true) {
+      int const x_43 = GLF_live7cols;
+      if ((x_43 < 4)) {
+      } else {
+        break;
+      }
+      int const x_44 = GLF_live7_looplimiter3;
+      if ((x_44 >= 7)) {
+        break;
+      }
+      int const x_45 = GLF_live7_looplimiter3;
+      GLF_live7_looplimiter3 = (x_45 + 1);
+      GLF_live7rows = 2;
+      while (true) {
+        int const x_47 = GLF_live7rows;
+        if ((x_47 < 4)) {
+        } else {
+          break;
+        }
+        int const x_48 = GLF_live7_looplimiter2;
+        if ((x_48 >= 7)) {
+          break;
+        }
+        int const x_49 = GLF_live7_looplimiter2;
+        GLF_live7_looplimiter2 = (x_49 + 1);
+        GLF_live7_looplimiter1 = 0;
+        GLF_live7c = 0;
+        while (true) {
+          int const x_51 = GLF_live7c;
+          if ((x_51 < 3)) {
+          } else {
+            break;
+          }
+          int const x_52 = GLF_live7_looplimiter1;
+          if ((x_52 >= 7)) {
+            break;
+          }
+          int const x_53 = GLF_live7_looplimiter1;
+          GLF_live7_looplimiter1 = (x_53 + 1);
+          GLF_live7r = 0;
+          while (true) {
+            int const x_55 = GLF_live7r;
+            if ((x_55 < 2)) {
+            } else {
+              break;
+            }
+            int const x_56 = GLF_live7_looplimiter0;
+            if ((x_56 >= 7)) {
+              break;
+            }
+            int const x_57 = GLF_live7_looplimiter0;
+            GLF_live7_looplimiter0 = (x_57 + 1);
+            int const x_59 = GLF_live7c;
+            int const x_60 = GLF_live7c;
+            int const x_61 = GLF_live7c;
+            int const x_62 = GLF_live7r;
+            int const x_63 = GLF_live7r;
+            int const x_64 = GLF_live7r;
+            GLF_live7m33[select(0, x_61, ((x_59 >= 0) && (x_60 < 3)))][select(0, x_64, ((x_62 >= 0) && (x_63 < 3)))] = 1.0f;
+            float const x_267 = x_25.injectionSwitch.y;
+            if ((0.0f > x_267)) {
+            } else {
+              int const x_65 = GLF_live7c;
+              int const x_66 = GLF_live7c;
+              int const x_67 = GLF_live7c;
+              int const x_68 = GLF_live7r;
+              int const x_69 = GLF_live7r;
+              int const x_70 = GLF_live7r;
+              GLF_live7m42[select(0, x_67, ((x_65 >= 0) && (x_66 < 4)))][select(0, x_70, ((x_68 >= 0) && (x_69 < 2)))] = 1.0f;
+            }
+            {
+              int const x_71 = GLF_live7r;
+              GLF_live7r = (x_71 + 1);
+            }
+          }
+          {
+            int const x_73 = GLF_live7c;
+            GLF_live7c = (x_73 + 1);
+          }
+        }
+        {
+          int const x_75 = GLF_live7rows;
+          GLF_live7rows = (x_75 + 1);
+        }
+      }
+      {
+        int const x_77 = GLF_live7cols;
+        GLF_live7cols = (x_77 + 1);
+      }
+    }
+    GLF_live7sum_index = 0;
+    GLF_live7_looplimiter7 = 0;
+    GLF_live7cols_1 = 2;
+    while (true) {
+      int const x_79 = GLF_live7cols_1;
+      if ((x_79 < 4)) {
+      } else {
+        break;
+      }
+      int const x_80 = GLF_live7_looplimiter7;
+      if ((x_80 >= 7)) {
+        break;
+      }
+      int const x_81 = GLF_live7_looplimiter7;
+      GLF_live7_looplimiter7 = (x_81 + 1);
+      GLF_live7rows_1 = 2;
+      int const x_83 = GLF_live7sum_index;
+      int const x_84 = GLF_live7sum_index;
+      int const x_85 = GLF_live7sum_index;
+      GLF_live7sums.arr[select(0, x_85, ((x_83 >= 0) && (x_84 < 9)))] = 0.0f;
+      GLF_live7c_1 = 0;
+      while (true) {
+        int const x_86 = GLF_live7c_1;
+        if ((x_86 < 1)) {
+        } else {
+          break;
+        }
+        GLF_live7r_1 = 0;
+        while (true) {
+          int const x_87 = GLF_live7r_1;
+          int const x_88 = GLF_live7rows_1;
+          if ((x_87 < x_88)) {
+          } else {
+            break;
+          }
+          int const x_89 = GLF_live7sum_index;
+          int const x_90 = GLF_live7sum_index;
+          int const x_91 = GLF_live7sum_index;
+          int const x_310 = select(0, x_91, ((x_89 >= 0) && (x_90 < 9)));
+          float3x3 const x_311 = GLF_live7m33;
+          float3x3 const x_312 = transpose(x_311);
+          int const x_92 = GLF_live7c_1;
+          if ((x_92 < 3)) {
+            x_180 = 1;
+          } else {
+            float const x_318 = x_25.injectionSwitch.x;
+            x_180 = int(x_318);
+          }
+          int const x_320 = x_180;
+          int const x_93 = GLF_live7r_1;
+          indexable = x_312;
+          float const x_324 = indexable[x_320][select(0, 1, (x_93 < 3))];
+          float const x_326 = GLF_live7sums.arr[x_310];
+          GLF_live7sums.arr[x_310] = (x_326 + x_324);
+          int const x_94 = GLF_live7sum_index;
+          int const x_95 = GLF_live7sum_index;
+          int const x_96 = GLF_live7sum_index;
+          int const x_332 = select(0, x_96, ((x_94 >= 0) && (x_95 < 9)));
+          int const x_97 = GLF_live7r_1;
+          float const x_334 = GLF_live7m42[1][x_97];
+          float const x_336 = GLF_live7sums.arr[x_332];
+          GLF_live7sums.arr[x_332] = (x_336 + x_334);
+          {
+            int const x_98 = GLF_live7r_1;
+            GLF_live7r_1 = (x_98 + 1);
+          }
+        }
+        {
+          int const x_100 = GLF_live7c_1;
+          GLF_live7c_1 = (x_100 + 1);
+        }
+      }
+      int const x_102 = GLF_live7sum_index;
+      GLF_live7sum_index = (x_102 + 1);
+      {
+        int const x_104 = GLF_live7cols_1;
+        GLF_live7cols_1 = (x_104 + 1);
+      }
+    }
+    {
+      int const x_106 = GLF_live4i;
+      GLF_live4i = (x_106 + 1);
+    }
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1(constant buf0& x_25, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 position = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  int i = 0;
+  float2 param_2 = 0.0f;
+  float const x_161 = x_25.injectionSwitch.x;
+  if ((x_161 >= 2.0f)) {
+    float4 const x_165 = *(tint_symbol_5);
+    position = float2(x_165.x, x_165.y);
+    float2 const x_167 = position;
+    param = x_167;
+    float3 const x_168 = drawShape_vf2_(x_25, &(param));
+    float2 const x_169 = position;
+    param_1 = x_169;
+    float3 const x_170 = drawShape_vf2_(x_25, &(param_1));
+    i = 25;
+    while (true) {
+      int const x_108 = i;
+      if ((x_108 > 0)) {
+      } else {
+        break;
+      }
+      float2 const x_177 = position;
+      param_2 = x_177;
+      float3 const x_178 = drawShape_vf2_(x_25, &(param_2));
+      {
+        int const x_109 = i;
+        i = (x_109 - 1);
+      }
+    }
+  }
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_25 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_25, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..694e352
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,663 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 403
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_25 "x_25"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %drawShape_vf2_ "drawShape_vf2_"
+               OpName %pos "pos"
+               OpName %c2 "c2"
+               OpName %c3 "c3"
+               OpName %c4 "c4"
+               OpName %c5 "c5"
+               OpName %c6 "c6"
+               OpName %GLF_live4i "GLF_live4i"
+               OpName %GLF_live4_looplimiter5 "GLF_live4_looplimiter5"
+               OpName %GLF_live7m42 "GLF_live7m42"
+               OpName %GLF_live7m33 "GLF_live7m33"
+               OpName %GLF_live7cols "GLF_live7cols"
+               OpName %GLF_live7_looplimiter3 "GLF_live7_looplimiter3"
+               OpName %GLF_live7rows "GLF_live7rows"
+               OpName %GLF_live7_looplimiter2 "GLF_live7_looplimiter2"
+               OpName %GLF_live7_looplimiter1 "GLF_live7_looplimiter1"
+               OpName %GLF_live7c "GLF_live7c"
+               OpName %GLF_live7r "GLF_live7r"
+               OpName %GLF_live7_looplimiter0 "GLF_live7_looplimiter0"
+               OpName %GLF_live7sum_index "GLF_live7sum_index"
+               OpName %GLF_live7_looplimiter7 "GLF_live7_looplimiter7"
+               OpName %GLF_live7cols_1 "GLF_live7cols_1"
+               OpName %GLF_live7rows_1 "GLF_live7rows_1"
+               OpName %GLF_live7sums "GLF_live7sums"
+               OpName %GLF_live7c_1 "GLF_live7c_1"
+               OpName %GLF_live7r_1 "GLF_live7r_1"
+               OpName %x_180 "x_180"
+               OpName %indexable "indexable"
+               OpName %main_1 "main_1"
+               OpName %position "position"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %i "i"
+               OpName %param_2 "param_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_25 NonWritable
+               OpDecorate %x_25 DescriptorSet 0
+               OpDecorate %x_25 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_25 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %v3float %_ptr_Function_v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %24 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpConstantNull %int
+%mat4v2float = OpTypeMatrix %v2float 4
+%_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float
+         %37 = OpConstantNull %mat4v2float
+%mat3v3float = OpTypeMatrix %v3float 3
+%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
+         %41 = OpConstantNull %mat3v3float
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %59 = OpConstantNull %_arr_float_uint_9
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+         %74 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+     %uint_1 = OpConstant %uint 1
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+      %int_7 = OpConstant %int 7
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %125 = OpConstantComposite %v2float %float_1 %float_0
+        %126 = OpConstantComposite %v2float %float_0 %float_1
+        %127 = OpConstantComposite %v2float %float_0 %float_0
+        %128 = OpConstantComposite %mat4v2float %125 %126 %127 %125
+        %129 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+        %130 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+        %131 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+        %132 = OpConstantComposite %mat3v3float %129 %130 %131
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_9 = OpConstant %int 9
+       %void = OpTypeVoid
+        %348 = OpTypeFunction %void
+        %353 = OpConstantNull %v2float
+    %float_2 = OpConstant %float 2
+     %int_25 = OpConstant %int 25
+        %389 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %390 = OpTypeFunction %void %main_out
+%drawShape_vf2_ = OpFunction %v3float None %15
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %c2 = OpVariable %_ptr_Function_bool Function %24
+         %c3 = OpVariable %_ptr_Function_bool Function %24
+         %c4 = OpVariable %_ptr_Function_bool Function %24
+         %c5 = OpVariable %_ptr_Function_bool Function %24
+         %c6 = OpVariable %_ptr_Function_bool Function %24
+ %GLF_live4i = OpVariable %_ptr_Function_int Function %32
+%GLF_live4_looplimiter5 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7m42 = OpVariable %_ptr_Function_mat4v2float Function %37
+%GLF_live7m33 = OpVariable %_ptr_Function_mat3v3float Function %41
+%GLF_live7cols = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter3 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7rows = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter2 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter1 = OpVariable %_ptr_Function_int Function %32
+ %GLF_live7c = OpVariable %_ptr_Function_int Function %32
+ %GLF_live7r = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter0 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7sum_index = OpVariable %_ptr_Function_int Function %32
+%GLF_live7_looplimiter7 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7cols_1 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7rows_1 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %59
+%GLF_live7c_1 = OpVariable %_ptr_Function_int Function %32
+%GLF_live7r_1 = OpVariable %_ptr_Function_int Function %32
+      %x_180 = OpVariable %_ptr_Function_int Function %32
+  %indexable = OpVariable %_ptr_Function_mat3v3float Function %41
+         %67 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %68 = OpLoad %float %67
+         %70 = OpFOrdGreaterThan %bool %68 %float_1
+               OpStore %c2 %70
+         %71 = OpLoad %bool %c2
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpReturnValue %74
+         %72 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpFOrdLessThan %bool %78 %float_1
+               OpStore %c3 %79
+         %80 = OpLoad %bool %c3
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+               OpReturnValue %74
+         %81 = OpLabel
+         %84 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %85 = OpLoad %float %84
+         %86 = OpFOrdGreaterThan %bool %85 %float_1
+               OpStore %c4 %86
+         %87 = OpLoad %bool %c4
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpReturnValue %74
+         %88 = OpLabel
+         %91 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %92 = OpLoad %float %91
+         %93 = OpFOrdLessThan %bool %92 %float_1
+               OpStore %c5 %93
+         %94 = OpLoad %bool %c5
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+               OpReturnValue %74
+         %95 = OpLabel
+         %98 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpFAdd %float %99 %float_1
+        %101 = OpFOrdGreaterThan %bool %100 %float_1
+               OpStore %c6 %101
+        %102 = OpLoad %bool %c6
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+               OpReturnValue %74
+        %103 = OpLabel
+               OpStore %GLF_live4i %int_0
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %GLF_live4i
+        %112 = OpSLessThan %bool %110 %int_4
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %115
+        %114 = OpLabel
+               OpBranch %113
+        %115 = OpLabel
+               OpBranch %107
+        %113 = OpLabel
+        %116 = OpLoad %int %GLF_live4_looplimiter5
+        %118 = OpSGreaterThanEqual %bool %116 %int_7
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpBranch %107
+        %119 = OpLabel
+        %121 = OpLoad %int %GLF_live4_looplimiter5
+        %123 = OpIAdd %int %121 %int_1
+               OpStore %GLF_live4_looplimiter5 %123
+               OpStore %GLF_live7m42 %128
+               OpStore %GLF_live7m33 %132
+               OpStore %GLF_live7cols %int_2
+               OpBranch %134
+        %134 = OpLabel
+               OpLoopMerge %135 %136 None
+               OpBranch %137
+        %137 = OpLabel
+        %138 = OpLoad %int %GLF_live7cols
+        %139 = OpSLessThan %bool %138 %int_4
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %142
+        %141 = OpLabel
+               OpBranch %140
+        %142 = OpLabel
+               OpBranch %135
+        %140 = OpLabel
+        %143 = OpLoad %int %GLF_live7_looplimiter3
+        %144 = OpSGreaterThanEqual %bool %143 %int_7
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %145
+        %146 = OpLabel
+               OpBranch %135
+        %145 = OpLabel
+        %147 = OpLoad %int %GLF_live7_looplimiter3
+        %148 = OpIAdd %int %147 %int_1
+               OpStore %GLF_live7_looplimiter3 %148
+               OpStore %GLF_live7rows %int_2
+               OpBranch %149
+        %149 = OpLabel
+               OpLoopMerge %150 %151 None
+               OpBranch %152
+        %152 = OpLabel
+        %153 = OpLoad %int %GLF_live7rows
+        %154 = OpSLessThan %bool %153 %int_4
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+               OpBranch %155
+        %157 = OpLabel
+               OpBranch %150
+        %155 = OpLabel
+        %158 = OpLoad %int %GLF_live7_looplimiter2
+        %159 = OpSGreaterThanEqual %bool %158 %int_7
+               OpSelectionMerge %160 None
+               OpBranchConditional %159 %161 %160
+        %161 = OpLabel
+               OpBranch %150
+        %160 = OpLabel
+        %162 = OpLoad %int %GLF_live7_looplimiter2
+        %163 = OpIAdd %int %162 %int_1
+               OpStore %GLF_live7_looplimiter2 %163
+               OpStore %GLF_live7_looplimiter1 %int_0
+               OpStore %GLF_live7c %int_0
+               OpBranch %164
+        %164 = OpLabel
+               OpLoopMerge %165 %166 None
+               OpBranch %167
+        %167 = OpLabel
+        %168 = OpLoad %int %GLF_live7c
+        %170 = OpSLessThan %bool %168 %int_3
+               OpSelectionMerge %171 None
+               OpBranchConditional %170 %172 %173
+        %172 = OpLabel
+               OpBranch %171
+        %173 = OpLabel
+               OpBranch %165
+        %171 = OpLabel
+        %174 = OpLoad %int %GLF_live7_looplimiter1
+        %175 = OpSGreaterThanEqual %bool %174 %int_7
+               OpSelectionMerge %176 None
+               OpBranchConditional %175 %177 %176
+        %177 = OpLabel
+               OpBranch %165
+        %176 = OpLabel
+        %178 = OpLoad %int %GLF_live7_looplimiter1
+        %179 = OpIAdd %int %178 %int_1
+               OpStore %GLF_live7_looplimiter1 %179
+               OpStore %GLF_live7r %int_0
+               OpBranch %180
+        %180 = OpLabel
+               OpLoopMerge %181 %182 None
+               OpBranch %183
+        %183 = OpLabel
+        %184 = OpLoad %int %GLF_live7r
+        %185 = OpSLessThan %bool %184 %int_2
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+               OpBranch %181
+        %186 = OpLabel
+        %189 = OpLoad %int %GLF_live7_looplimiter0
+        %190 = OpSGreaterThanEqual %bool %189 %int_7
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %191
+        %192 = OpLabel
+               OpBranch %181
+        %191 = OpLabel
+        %193 = OpLoad %int %GLF_live7_looplimiter0
+        %194 = OpIAdd %int %193 %int_1
+               OpStore %GLF_live7_looplimiter0 %194
+        %195 = OpLoad %int %GLF_live7c
+        %196 = OpLoad %int %GLF_live7c
+        %197 = OpLoad %int %GLF_live7c
+        %198 = OpLoad %int %GLF_live7r
+        %199 = OpLoad %int %GLF_live7r
+        %200 = OpLoad %int %GLF_live7r
+        %202 = OpSGreaterThanEqual %bool %195 %int_0
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %203
+        %204 = OpLabel
+        %205 = OpSLessThan %bool %196 %int_3
+               OpBranch %203
+        %203 = OpLabel
+        %206 = OpPhi %bool %202 %191 %205 %204
+        %201 = OpSelect %int %206 %197 %int_0
+        %208 = OpSGreaterThanEqual %bool %198 %int_0
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %209
+        %210 = OpLabel
+        %211 = OpSLessThan %bool %199 %int_3
+               OpBranch %209
+        %209 = OpLabel
+        %212 = OpPhi %bool %208 %203 %211 %210
+        %207 = OpSelect %int %212 %200 %int_0
+        %213 = OpAccessChain %_ptr_Function_float %GLF_live7m33 %201 %207
+               OpStore %213 %float_1
+        %215 = OpAccessChain %_ptr_Uniform_float %x_25 %uint_0 %uint_1
+        %216 = OpLoad %float %215
+        %217 = OpFOrdGreaterThan %bool %float_0 %216
+               OpSelectionMerge %218 None
+               OpBranchConditional %217 %219 %220
+        %219 = OpLabel
+               OpBranch %218
+        %220 = OpLabel
+        %221 = OpLoad %int %GLF_live7c
+        %222 = OpLoad %int %GLF_live7c
+        %223 = OpLoad %int %GLF_live7c
+        %224 = OpLoad %int %GLF_live7r
+        %225 = OpLoad %int %GLF_live7r
+        %226 = OpLoad %int %GLF_live7r
+        %228 = OpSGreaterThanEqual %bool %221 %int_0
+               OpSelectionMerge %229 None
+               OpBranchConditional %228 %230 %229
+        %230 = OpLabel
+        %231 = OpSLessThan %bool %222 %int_4
+               OpBranch %229
+        %229 = OpLabel
+        %232 = OpPhi %bool %228 %220 %231 %230
+        %227 = OpSelect %int %232 %223 %int_0
+        %234 = OpSGreaterThanEqual %bool %224 %int_0
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %237 = OpSLessThan %bool %225 %int_2
+               OpBranch %235
+        %235 = OpLabel
+        %238 = OpPhi %bool %234 %229 %237 %236
+        %233 = OpSelect %int %238 %226 %int_0
+        %239 = OpAccessChain %_ptr_Function_float %GLF_live7m42 %227 %233
+               OpStore %239 %float_1
+               OpBranch %218
+        %218 = OpLabel
+               OpBranch %182
+        %182 = OpLabel
+        %240 = OpLoad %int %GLF_live7r
+        %241 = OpIAdd %int %240 %int_1
+               OpStore %GLF_live7r %241
+               OpBranch %180
+        %181 = OpLabel
+               OpBranch %166
+        %166 = OpLabel
+        %242 = OpLoad %int %GLF_live7c
+        %243 = OpIAdd %int %242 %int_1
+               OpStore %GLF_live7c %243
+               OpBranch %164
+        %165 = OpLabel
+               OpBranch %151
+        %151 = OpLabel
+        %244 = OpLoad %int %GLF_live7rows
+        %245 = OpIAdd %int %244 %int_1
+               OpStore %GLF_live7rows %245
+               OpBranch %149
+        %150 = OpLabel
+               OpBranch %136
+        %136 = OpLabel
+        %246 = OpLoad %int %GLF_live7cols
+        %247 = OpIAdd %int %246 %int_1
+               OpStore %GLF_live7cols %247
+               OpBranch %134
+        %135 = OpLabel
+               OpStore %GLF_live7sum_index %int_0
+               OpStore %GLF_live7_looplimiter7 %int_0
+               OpStore %GLF_live7cols_1 %int_2
+               OpBranch %248
+        %248 = OpLabel
+               OpLoopMerge %249 %250 None
+               OpBranch %251
+        %251 = OpLabel
+        %252 = OpLoad %int %GLF_live7cols_1
+        %253 = OpSLessThan %bool %252 %int_4
+               OpSelectionMerge %254 None
+               OpBranchConditional %253 %255 %256
+        %255 = OpLabel
+               OpBranch %254
+        %256 = OpLabel
+               OpBranch %249
+        %254 = OpLabel
+        %257 = OpLoad %int %GLF_live7_looplimiter7
+        %258 = OpSGreaterThanEqual %bool %257 %int_7
+               OpSelectionMerge %259 None
+               OpBranchConditional %258 %260 %259
+        %260 = OpLabel
+               OpBranch %249
+        %259 = OpLabel
+        %261 = OpLoad %int %GLF_live7_looplimiter7
+        %262 = OpIAdd %int %261 %int_1
+               OpStore %GLF_live7_looplimiter7 %262
+               OpStore %GLF_live7rows_1 %int_2
+        %263 = OpLoad %int %GLF_live7sum_index
+        %264 = OpLoad %int %GLF_live7sum_index
+        %265 = OpLoad %int %GLF_live7sum_index
+        %267 = OpSGreaterThanEqual %bool %263 %int_0
+               OpSelectionMerge %268 None
+               OpBranchConditional %267 %269 %268
+        %269 = OpLabel
+        %271 = OpSLessThan %bool %264 %int_9
+               OpBranch %268
+        %268 = OpLabel
+        %272 = OpPhi %bool %267 %259 %271 %269
+        %266 = OpSelect %int %272 %265 %int_0
+        %273 = OpAccessChain %_ptr_Function_float %GLF_live7sums %266
+               OpStore %273 %float_0
+               OpStore %GLF_live7c_1 %int_0
+               OpBranch %274
+        %274 = OpLabel
+               OpLoopMerge %275 %276 None
+               OpBranch %277
+        %277 = OpLabel
+        %278 = OpLoad %int %GLF_live7c_1
+        %279 = OpSLessThan %bool %278 %int_1
+               OpSelectionMerge %280 None
+               OpBranchConditional %279 %281 %282
+        %281 = OpLabel
+               OpBranch %280
+        %282 = OpLabel
+               OpBranch %275
+        %280 = OpLabel
+               OpStore %GLF_live7r_1 %int_0
+               OpBranch %283
+        %283 = OpLabel
+               OpLoopMerge %284 %285 None
+               OpBranch %286
+        %286 = OpLabel
+        %287 = OpLoad %int %GLF_live7r_1
+        %288 = OpLoad %int %GLF_live7rows_1
+        %289 = OpSLessThan %bool %287 %288
+               OpSelectionMerge %290 None
+               OpBranchConditional %289 %291 %292
+        %291 = OpLabel
+               OpBranch %290
+        %292 = OpLabel
+               OpBranch %284
+        %290 = OpLabel
+        %293 = OpLoad %int %GLF_live7sum_index
+        %294 = OpLoad %int %GLF_live7sum_index
+        %295 = OpLoad %int %GLF_live7sum_index
+        %297 = OpSGreaterThanEqual %bool %293 %int_0
+               OpSelectionMerge %298 None
+               OpBranchConditional %297 %299 %298
+        %299 = OpLabel
+        %300 = OpSLessThan %bool %294 %int_9
+               OpBranch %298
+        %298 = OpLabel
+        %301 = OpPhi %bool %297 %290 %300 %299
+        %296 = OpSelect %int %301 %295 %int_0
+        %302 = OpLoad %mat3v3float %GLF_live7m33
+        %303 = OpTranspose %mat3v3float %302
+        %304 = OpLoad %int %GLF_live7c_1
+        %305 = OpSLessThan %bool %304 %int_3
+               OpSelectionMerge %306 None
+               OpBranchConditional %305 %307 %308
+        %307 = OpLabel
+               OpStore %x_180 %int_1
+               OpBranch %306
+        %308 = OpLabel
+        %309 = OpAccessChain %_ptr_Uniform_float %x_25 %uint_0 %uint_0
+        %310 = OpLoad %float %309
+        %311 = OpConvertFToS %int %310
+               OpStore %x_180 %311
+               OpBranch %306
+        %306 = OpLabel
+        %312 = OpLoad %int %x_180
+        %313 = OpLoad %int %GLF_live7r_1
+               OpStore %indexable %303
+        %315 = OpSLessThan %bool %313 %int_3
+        %314 = OpSelect %int %315 %int_1 %int_0
+        %316 = OpAccessChain %_ptr_Function_float %indexable %312 %314
+        %317 = OpLoad %float %316
+        %318 = OpAccessChain %_ptr_Function_float %GLF_live7sums %296
+        %319 = OpLoad %float %318
+        %320 = OpAccessChain %_ptr_Function_float %GLF_live7sums %296
+        %321 = OpFAdd %float %319 %317
+               OpStore %320 %321
+        %322 = OpLoad %int %GLF_live7sum_index
+        %323 = OpLoad %int %GLF_live7sum_index
+        %324 = OpLoad %int %GLF_live7sum_index
+        %326 = OpSGreaterThanEqual %bool %322 %int_0
+               OpSelectionMerge %327 None
+               OpBranchConditional %326 %328 %327
+        %328 = OpLabel
+        %329 = OpSLessThan %bool %323 %int_9
+               OpBranch %327
+        %327 = OpLabel
+        %330 = OpPhi %bool %326 %306 %329 %328
+        %325 = OpSelect %int %330 %324 %int_0
+        %331 = OpLoad %int %GLF_live7r_1
+        %332 = OpAccessChain %_ptr_Function_float %GLF_live7m42 %int_1 %331
+        %333 = OpLoad %float %332
+        %334 = OpAccessChain %_ptr_Function_float %GLF_live7sums %325
+        %335 = OpLoad %float %334
+        %336 = OpAccessChain %_ptr_Function_float %GLF_live7sums %325
+        %337 = OpFAdd %float %335 %333
+               OpStore %336 %337
+               OpBranch %285
+        %285 = OpLabel
+        %338 = OpLoad %int %GLF_live7r_1
+        %339 = OpIAdd %int %338 %int_1
+               OpStore %GLF_live7r_1 %339
+               OpBranch %283
+        %284 = OpLabel
+               OpBranch %276
+        %276 = OpLabel
+        %340 = OpLoad %int %GLF_live7c_1
+        %341 = OpIAdd %int %340 %int_1
+               OpStore %GLF_live7c_1 %341
+               OpBranch %274
+        %275 = OpLabel
+        %342 = OpLoad %int %GLF_live7sum_index
+        %343 = OpIAdd %int %342 %int_1
+               OpStore %GLF_live7sum_index %343
+               OpBranch %250
+        %250 = OpLabel
+        %344 = OpLoad %int %GLF_live7cols_1
+        %345 = OpIAdd %int %344 %int_1
+               OpStore %GLF_live7cols_1 %345
+               OpBranch %248
+        %249 = OpLabel
+               OpBranch %108
+        %108 = OpLabel
+        %346 = OpLoad %int %GLF_live4i
+        %347 = OpIAdd %int %346 %int_1
+               OpStore %GLF_live4i %347
+               OpBranch %106
+        %107 = OpLabel
+               OpReturnValue %74
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %348
+        %351 = OpLabel
+   %position = OpVariable %_ptr_Function_v2float Function %353
+      %param = OpVariable %_ptr_Function_v2float Function %353
+    %param_1 = OpVariable %_ptr_Function_v2float Function %353
+          %i = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_v2float Function %353
+        %358 = OpAccessChain %_ptr_Uniform_float %x_25 %uint_0 %uint_0
+        %359 = OpLoad %float %358
+        %361 = OpFOrdGreaterThanEqual %bool %359 %float_2
+               OpSelectionMerge %362 None
+               OpBranchConditional %361 %363 %362
+        %363 = OpLabel
+        %364 = OpLoad %v4float %gl_FragCoord
+        %365 = OpCompositeExtract %float %364 0
+        %366 = OpCompositeExtract %float %364 1
+        %367 = OpCompositeConstruct %v2float %365 %366
+               OpStore %position %367
+        %368 = OpLoad %v2float %position
+               OpStore %param %368
+        %369 = OpFunctionCall %v3float %drawShape_vf2_ %param
+        %371 = OpLoad %v2float %position
+               OpStore %param_1 %371
+        %372 = OpFunctionCall %v3float %drawShape_vf2_ %param_1
+               OpStore %i %int_25
+               OpBranch %375
+        %375 = OpLabel
+               OpLoopMerge %376 %377 None
+               OpBranch %378
+        %378 = OpLabel
+        %379 = OpLoad %int %i
+        %380 = OpSGreaterThan %bool %379 %int_0
+               OpSelectionMerge %381 None
+               OpBranchConditional %380 %382 %383
+        %382 = OpLabel
+               OpBranch %381
+        %383 = OpLabel
+               OpBranch %376
+        %381 = OpLabel
+        %384 = OpLoad %v2float %position
+               OpStore %param_2 %384
+        %385 = OpFunctionCall %v3float %drawShape_vf2_ %param_2
+               OpBranch %377
+        %377 = OpLabel
+        %387 = OpLoad %int %i
+        %388 = OpISub %int %387 %int_1
+               OpStore %i %388
+               OpBranch %375
+        %376 = OpLabel
+               OpBranch %362
+        %362 = OpLabel
+               OpStore %x_GLF_color %389
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %390
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %394 = OpLabel
+        %395 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %395
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %348
+        %397 = OpLabel
+        %398 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %398
+        %399 = OpFunctionCall %void %main_1
+        %401 = OpLoad %v4float %x_GLF_color
+        %402 = OpCompositeConstruct %main_out %401
+        %400 = OpFunctionCall %void %tint_symbol_3 %402
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..9ca6d37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,317 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_25 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn drawShape_vf2_(pos : ptr<function, vec2<f32>>) -> vec3<f32> {
+  var c2 : bool;
+  var c3 : bool;
+  var c4 : bool;
+  var c5 : bool;
+  var c6 : bool;
+  var GLF_live4i : i32;
+  var GLF_live4_looplimiter5 : i32;
+  var GLF_live7m42 : mat4x2<f32>;
+  var GLF_live7m33 : mat3x3<f32>;
+  var GLF_live7cols : i32;
+  var GLF_live7_looplimiter3 : i32;
+  var GLF_live7rows : i32;
+  var GLF_live7_looplimiter2 : i32;
+  var GLF_live7_looplimiter1 : i32;
+  var GLF_live7c : i32;
+  var GLF_live7r : i32;
+  var GLF_live7_looplimiter0 : i32;
+  var GLF_live7sum_index : i32;
+  var GLF_live7_looplimiter7 : i32;
+  var GLF_live7cols_1 : i32;
+  var GLF_live7rows_1 : i32;
+  var GLF_live7sums : array<f32, 9>;
+  var GLF_live7c_1 : i32;
+  var GLF_live7r_1 : i32;
+  var x_180 : i32;
+  var indexable : mat3x3<f32>;
+  let x_182 : f32 = (*(pos)).x;
+  c2 = (x_182 > 1.0);
+  let x_184 : bool = c2;
+  if (x_184) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_188 : f32 = (*(pos)).y;
+  c3 = (x_188 < 1.0);
+  let x_190 : bool = c3;
+  if (x_190) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_194 : f32 = (*(pos)).y;
+  c4 = (x_194 > 1.0);
+  let x_196 : bool = c4;
+  if (x_196) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_200 : f32 = (*(pos)).x;
+  c5 = (x_200 < 1.0);
+  let x_202 : bool = c5;
+  if (x_202) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  let x_206 : f32 = (*(pos)).x;
+  c6 = ((x_206 + 1.0) > 1.0);
+  let x_209 : bool = c6;
+  if (x_209) {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  GLF_live4i = 0;
+  loop {
+    let x_39 : i32 = GLF_live4i;
+    if ((x_39 < 4)) {
+    } else {
+      break;
+    }
+    let x_40 : i32 = GLF_live4_looplimiter5;
+    if ((x_40 >= 7)) {
+      break;
+    }
+    let x_41 : i32 = GLF_live4_looplimiter5;
+    GLF_live4_looplimiter5 = (x_41 + 1);
+    GLF_live7m42 = mat4x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0), vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 0.0));
+    GLF_live7m33 = mat3x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0));
+    GLF_live7cols = 2;
+    loop {
+      let x_43 : i32 = GLF_live7cols;
+      if ((x_43 < 4)) {
+      } else {
+        break;
+      }
+      let x_44 : i32 = GLF_live7_looplimiter3;
+      if ((x_44 >= 7)) {
+        break;
+      }
+      let x_45 : i32 = GLF_live7_looplimiter3;
+      GLF_live7_looplimiter3 = (x_45 + 1);
+      GLF_live7rows = 2;
+      loop {
+        let x_47 : i32 = GLF_live7rows;
+        if ((x_47 < 4)) {
+        } else {
+          break;
+        }
+        let x_48 : i32 = GLF_live7_looplimiter2;
+        if ((x_48 >= 7)) {
+          break;
+        }
+        let x_49 : i32 = GLF_live7_looplimiter2;
+        GLF_live7_looplimiter2 = (x_49 + 1);
+        GLF_live7_looplimiter1 = 0;
+        GLF_live7c = 0;
+        loop {
+          let x_51 : i32 = GLF_live7c;
+          if ((x_51 < 3)) {
+          } else {
+            break;
+          }
+          let x_52 : i32 = GLF_live7_looplimiter1;
+          if ((x_52 >= 7)) {
+            break;
+          }
+          let x_53 : i32 = GLF_live7_looplimiter1;
+          GLF_live7_looplimiter1 = (x_53 + 1);
+          GLF_live7r = 0;
+          loop {
+            let x_55 : i32 = GLF_live7r;
+            if ((x_55 < 2)) {
+            } else {
+              break;
+            }
+            let x_56 : i32 = GLF_live7_looplimiter0;
+            if ((x_56 >= 7)) {
+              break;
+            }
+            let x_57 : i32 = GLF_live7_looplimiter0;
+            GLF_live7_looplimiter0 = (x_57 + 1);
+            let x_59 : i32 = GLF_live7c;
+            let x_60 : i32 = GLF_live7c;
+            let x_61 : i32 = GLF_live7c;
+            let x_62 : i32 = GLF_live7r;
+            let x_63 : i32 = GLF_live7r;
+            let x_64 : i32 = GLF_live7r;
+            GLF_live7m33[select(0, x_61, ((x_59 >= 0) && (x_60 < 3)))][select(0, x_64, ((x_62 >= 0) && (x_63 < 3)))] = 1.0;
+            let x_267 : f32 = x_25.injectionSwitch.y;
+            if ((0.0 > x_267)) {
+            } else {
+              let x_65 : i32 = GLF_live7c;
+              let x_66 : i32 = GLF_live7c;
+              let x_67 : i32 = GLF_live7c;
+              let x_68 : i32 = GLF_live7r;
+              let x_69 : i32 = GLF_live7r;
+              let x_70 : i32 = GLF_live7r;
+              GLF_live7m42[select(0, x_67, ((x_65 >= 0) && (x_66 < 4)))][select(0, x_70, ((x_68 >= 0) && (x_69 < 2)))] = 1.0;
+            }
+
+            continuing {
+              let x_71 : i32 = GLF_live7r;
+              GLF_live7r = (x_71 + 1);
+            }
+          }
+
+          continuing {
+            let x_73 : i32 = GLF_live7c;
+            GLF_live7c = (x_73 + 1);
+          }
+        }
+
+        continuing {
+          let x_75 : i32 = GLF_live7rows;
+          GLF_live7rows = (x_75 + 1);
+        }
+      }
+
+      continuing {
+        let x_77 : i32 = GLF_live7cols;
+        GLF_live7cols = (x_77 + 1);
+      }
+    }
+    GLF_live7sum_index = 0;
+    GLF_live7_looplimiter7 = 0;
+    GLF_live7cols_1 = 2;
+    loop {
+      let x_79 : i32 = GLF_live7cols_1;
+      if ((x_79 < 4)) {
+      } else {
+        break;
+      }
+      let x_80 : i32 = GLF_live7_looplimiter7;
+      if ((x_80 >= 7)) {
+        break;
+      }
+      let x_81 : i32 = GLF_live7_looplimiter7;
+      GLF_live7_looplimiter7 = (x_81 + 1);
+      GLF_live7rows_1 = 2;
+      let x_83 : i32 = GLF_live7sum_index;
+      let x_84 : i32 = GLF_live7sum_index;
+      let x_85 : i32 = GLF_live7sum_index;
+      GLF_live7sums[select(0, x_85, ((x_83 >= 0) && (x_84 < 9)))] = 0.0;
+      GLF_live7c_1 = 0;
+      loop {
+        let x_86 : i32 = GLF_live7c_1;
+        if ((x_86 < 1)) {
+        } else {
+          break;
+        }
+        GLF_live7r_1 = 0;
+        loop {
+          let x_87 : i32 = GLF_live7r_1;
+          let x_88 : i32 = GLF_live7rows_1;
+          if ((x_87 < x_88)) {
+          } else {
+            break;
+          }
+          let x_89 : i32 = GLF_live7sum_index;
+          let x_90 : i32 = GLF_live7sum_index;
+          let x_91 : i32 = GLF_live7sum_index;
+          let x_310 : i32 = select(0, x_91, ((x_89 >= 0) && (x_90 < 9)));
+          let x_311 : mat3x3<f32> = GLF_live7m33;
+          let x_312 : mat3x3<f32> = transpose(x_311);
+          let x_92 : i32 = GLF_live7c_1;
+          if ((x_92 < 3)) {
+            x_180 = 1;
+          } else {
+            let x_318 : f32 = x_25.injectionSwitch.x;
+            x_180 = i32(x_318);
+          }
+          let x_320 : i32 = x_180;
+          let x_93 : i32 = GLF_live7r_1;
+          indexable = x_312;
+          let x_324 : f32 = indexable[x_320][select(0, 1, (x_93 < 3))];
+          let x_326 : f32 = GLF_live7sums[x_310];
+          GLF_live7sums[x_310] = (x_326 + x_324);
+          let x_94 : i32 = GLF_live7sum_index;
+          let x_95 : i32 = GLF_live7sum_index;
+          let x_96 : i32 = GLF_live7sum_index;
+          let x_332 : i32 = select(0, x_96, ((x_94 >= 0) && (x_95 < 9)));
+          let x_97 : i32 = GLF_live7r_1;
+          let x_334 : f32 = GLF_live7m42[1][x_97];
+          let x_336 : f32 = GLF_live7sums[x_332];
+          GLF_live7sums[x_332] = (x_336 + x_334);
+
+          continuing {
+            let x_98 : i32 = GLF_live7r_1;
+            GLF_live7r_1 = (x_98 + 1);
+          }
+        }
+
+        continuing {
+          let x_100 : i32 = GLF_live7c_1;
+          GLF_live7c_1 = (x_100 + 1);
+        }
+      }
+      let x_102 : i32 = GLF_live7sum_index;
+      GLF_live7sum_index = (x_102 + 1);
+
+      continuing {
+        let x_104 : i32 = GLF_live7cols_1;
+        GLF_live7cols_1 = (x_104 + 1);
+      }
+    }
+
+    continuing {
+      let x_106 : i32 = GLF_live4i;
+      GLF_live4i = (x_106 + 1);
+    }
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var position : vec2<f32>;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var i : i32;
+  var param_2 : vec2<f32>;
+  let x_161 : f32 = x_25.injectionSwitch.x;
+  if ((x_161 >= 2.0)) {
+    let x_165 : vec4<f32> = gl_FragCoord;
+    position = vec2<f32>(x_165.x, x_165.y);
+    let x_167 : vec2<f32> = position;
+    param = x_167;
+    let x_168 : vec3<f32> = drawShape_vf2_(&(param));
+    let x_169 : vec2<f32> = position;
+    param_1 = x_169;
+    let x_170 : vec3<f32> = drawShape_vf2_(&(param_1));
+    i = 25;
+    loop {
+      let x_108 : i32 = i;
+      if ((x_108 > 0)) {
+      } else {
+        break;
+      }
+      let x_177 : vec2<f32> = position;
+      param_2 = x_177;
+      let x_178 : vec3<f32> = drawShape_vf2_(&(param_2));
+
+      continuing {
+        let x_109 : i32 = i;
+        i = (x_109 - 1);
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm
new file mode 100644
index 0000000..92880f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm
@@ -0,0 +1,223 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_i1_ "func(i1;"
+               OpName %b "b"
+               OpName %ndx "ndx"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %param "param"
+               OpName %x "x"
+               OpName %param_0 "param"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+         %20 = OpTypeFunction %float %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+  %float_800 = OpConstant %float 800
+         %33 = OpConstantComposite %v2float %float_1 %float_800
+      %int_1 = OpConstant %int 1
+    %float_3 = OpConstant %float 3
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_5 = OpConstant %float 5
+         %39 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_float = OpTypePointer Output %float
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_65 = OpConstant %int 65
+     %int_10 = OpConstant %int 10
+         %47 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %16
+         %48 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_int Function
+          %x = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %39
+               OpStore %f %float_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_1
+         %54 = OpLoad %float %53
+         %55 = OpConvertFToS %int %54
+         %56 = OpSLessThan %bool %55 %int_0
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+               OpKill
+         %59 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %61 = OpLoad %float %60
+         %62 = OpConvertFToS %int %61
+               OpStore %param %62
+         %63 = OpFunctionCall %float %func_i1_ %param
+               OpStore %f %63
+               OpBranch %57
+         %57 = OpLabel
+         %64 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_1
+         %65 = OpLoad %float %64
+         %66 = OpConvertFToS %int %65
+         %67 = OpSGreaterThan %bool %66 %int_65
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpKill
+         %68 = OpLabel
+               OpStore %x %int_0
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %x
+         %75 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %76 = OpLoad %float %75
+         %77 = OpConvertFToS %int %76
+         %78 = OpIAdd %int %77 %int_1
+         %79 = OpSLessThan %bool %74 %78
+               OpBranchConditional %79 %80 %71
+         %80 = OpLabel
+         %81 = OpLoad %int %x
+         %82 = OpIAdd %int %81 %int_10
+               OpStore %param_0 %82
+         %83 = OpFunctionCall %float %func_i1_ %param_0
+               OpStore %f %83
+               OpBranch %72
+         %72 = OpLabel
+         %84 = OpLoad %int %x
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %x %85
+               OpBranch %70
+         %71 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %87 = OpLoad %float %86
+         %88 = OpConvertFToS %int %87
+         %89 = OpSGreaterThan %bool %88 %int_1
+               OpBranchConditional %89 %49 %50
+         %50 = OpLabel
+         %90 = OpLoad %float %f
+         %91 = OpFOrdEqual %bool %90 %float_3
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %94
+         %93 = OpLabel
+               OpStore %_GLF_color %47
+               OpBranch %92
+         %94 = OpLabel
+               OpStore %_GLF_color %37
+               OpBranch %92
+         %92 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_i1_ = OpFunction %float None %20
+          %b = OpFunctionParameter %_ptr_Function_int
+         %95 = OpLabel
+        %ndx = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %ndx %int_0
+               OpBranch %96
+         %96 = OpLabel
+               OpLoopMerge %97 %98 None
+               OpBranch %99
+         %99 = OpLabel
+        %100 = OpLoad %int %ndx
+        %101 = OpSLessThan %bool %100 %int_2
+               OpBranchConditional %101 %102 %97
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %104 = OpLoad %float %103
+        %105 = OpFOrdLessThan %bool %104 %float_0
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+               OpStore %i %int_0
+               OpBranch %108
+        %108 = OpLabel
+               OpLoopMerge %109 %110 None
+               OpBranch %111
+        %111 = OpLabel
+        %112 = OpLoad %int %i
+        %113 = OpSLessThan %bool %112 %int_2
+               OpBranchConditional %113 %114 %109
+        %114 = OpLabel
+        %115 = OpExtInst %v2float %1 Cosh %33
+        %116 = OpCompositeExtract %float %115 0
+        %117 = OpConvertFToS %int %116
+        %118 = OpSLessThanEqual %bool %117 %int_1
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpKill
+        %119 = OpLabel
+               OpBranch %110
+        %110 = OpLabel
+        %121 = OpLoad %int %i
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %i %122
+               OpBranch %108
+        %109 = OpLabel
+               OpBranch %106
+        %106 = OpLabel
+               OpBranch %98
+         %98 = OpLabel
+        %123 = OpLoad %int %ndx
+        %124 = OpIAdd %int %123 %int_1
+               OpStore %ndx %124
+               OpBranch %96
+         %97 = OpLabel
+        %125 = OpLoad %int %b
+        %126 = OpSGreaterThan %bool %125 %int_1
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %127
+        %128 = OpLabel
+               OpReturnValue %float_3
+        %127 = OpLabel
+        %129 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %130 = OpLoad %float %129
+        %131 = OpFOrdLessThan %bool %130 %float_0
+               OpSelectionMerge %132 None
+               OpBranchConditional %131 %133 %132
+        %133 = OpLabel
+               OpStore %_GLF_color %37
+               OpBranch %132
+        %132 = OpLabel
+               OpReturnValue %float_5
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..96c79d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,106 @@
+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);
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+
+float func_i1_(inout int b) {
+  int ndx = 0;
+  int i = 0;
+  ndx = 0;
+  {
+    for(; (ndx < 2); ndx = (ndx + 1)) {
+      const float x_104 = gl_FragCoord.x;
+      if ((x_104 < 0.0f)) {
+        i = 0;
+        {
+          for(; (i < 2); i = (i + 1)) {
+            if ((int(cosh(float2(1.0f, 800.0f)).x) <= 1)) {
+              discard;
+            }
+          }
+        }
+      }
+    }
+  }
+  const int x_125 = b;
+  if ((x_125 > 1)) {
+    return 3.0f;
+  }
+  const float x_130 = gl_FragCoord.x;
+  if ((x_130 < 0.0f)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return 5.0f;
+}
+
+void main_1() {
+  float f = 0.0f;
+  int param = 0;
+  int x_1 = 0;
+  int param_1 = 0;
+  x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  f = 0.0f;
+  while (true) {
+    const float x_54 = x_GLF_color.y;
+    if ((int(x_54) < 0)) {
+      discard;
+    } else {
+      const float x_61 = asfloat(x_11[0].x);
+      param = int(x_61);
+      const float x_63 = func_i1_(param);
+      f = x_63;
+    }
+    const float x_65 = x_GLF_color.y;
+    if ((int(x_65) > 65)) {
+      discard;
+    }
+    x_1 = 0;
+    while (true) {
+      const int x_74 = x_1;
+      const float x_76 = asfloat(x_11[0].x);
+      if ((x_74 < (int(x_76) + 1))) {
+      } else {
+        break;
+      }
+      param_1 = (x_1 + 10);
+      const float x_83 = func_i1_(param_1);
+      f = x_83;
+      {
+        x_1 = (x_1 + 1);
+      }
+    }
+    {
+      const float x_87 = asfloat(x_11[0].x);
+      if ((int(x_87) > 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((f == 3.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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d5ad884
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.msl
@@ -0,0 +1,122 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_i1_(thread int* const b, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int ndx = 0;
+  int i = 0;
+  ndx = 0;
+  while (true) {
+    int const x_100 = ndx;
+    if ((x_100 < 2)) {
+    } else {
+      break;
+    }
+    float const x_104 = (*(tint_symbol_5)).x;
+    if ((x_104 < 0.0f)) {
+      i = 0;
+      while (true) {
+        int const x_112 = i;
+        if ((x_112 < 2)) {
+        } else {
+          break;
+        }
+        if ((int(cosh(float2(1.0f, 800.0f)).x) <= 1)) {
+          discard_fragment();
+        }
+        {
+          int const x_121 = i;
+          i = (x_121 + 1);
+        }
+      }
+    }
+    {
+      int const x_123 = ndx;
+      ndx = (x_123 + 1);
+    }
+  }
+  int const x_125 = *(b);
+  if ((x_125 > 1)) {
+    return 3.0f;
+  }
+  float const x_130 = (*(tint_symbol_5)).x;
+  if ((x_130 < 0.0f)) {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return 5.0f;
+}
+
+void main_1(constant buf0& x_11, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float f = 0.0f;
+  int param = 0;
+  int x_1 = 0;
+  int param_1 = 0;
+  *(tint_symbol_7) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  f = 0.0f;
+  while (true) {
+    float const x_54 = (*(tint_symbol_7)).y;
+    if ((int(x_54) < 0)) {
+      discard_fragment();
+    } else {
+      float const x_61 = x_11.zero;
+      param = int(x_61);
+      float const x_63 = func_i1_(&(param), tint_symbol_8, tint_symbol_7);
+      f = x_63;
+    }
+    float const x_65 = (*(tint_symbol_7)).y;
+    if ((int(x_65) > 65)) {
+      discard_fragment();
+    }
+    x_1 = 0;
+    while (true) {
+      int const x_74 = x_1;
+      float const x_76 = x_11.zero;
+      if ((x_74 < (int(x_76) + 1))) {
+      } else {
+        break;
+      }
+      int const x_81 = x_1;
+      param_1 = (x_81 + 10);
+      float const x_83 = func_i1_(&(param_1), tint_symbol_8, tint_symbol_7);
+      f = x_83;
+      {
+        int const x_84 = x_1;
+        x_1 = (x_84 + 1);
+      }
+    }
+    {
+      float const x_87 = x_11.zero;
+      if ((int(x_87) > 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_90 = f;
+  if ((x_90 == 3.0f)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_11, &(tint_symbol_10), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e54f592
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,287 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 164
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_i1_ "func_i1_"
+               OpName %b "b"
+               OpName %ndx "ndx"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %param "param"
+               OpName %x "x"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %14 = OpTypeFunction %float %_ptr_Function_int
+         %21 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+  %float_800 = OpConstant %float 800
+         %59 = OpConstantComposite %v2float %float_1 %float_800
+      %int_1 = OpConstant %int 1
+    %float_3 = OpConstant %float 3
+         %80 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_5 = OpConstant %float 5
+       %void = OpTypeVoid
+         %82 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %88 = OpConstantNull %float
+         %92 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_65 = OpConstant %int 65
+     %int_10 = OpConstant %int 10
+        %150 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %151 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %float None %14
+          %b = OpFunctionParameter %_ptr_Function_int
+         %19 = OpLabel
+        %ndx = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+               OpStore %ndx %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %ndx
+         %30 = OpSLessThan %bool %28 %int_2
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+         %38 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %39 = OpLoad %float %38
+         %41 = OpFOrdLessThan %bool %39 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpStore %i %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpSLessThan %bool %48 %int_2
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %45
+         %50 = OpLabel
+         %54 = OpExtInst %v2float %56 Cosh %59
+         %60 = OpCompositeExtract %float %54 0
+         %53 = OpConvertFToS %int %60
+         %62 = OpSLessThanEqual %bool %53 %int_1
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+               OpKill
+         %63 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %65 = OpLoad %int %i
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %i %66
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+         %67 = OpLoad %int %ndx
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %ndx %68
+               OpBranch %24
+         %25 = OpLabel
+         %70 = OpLoad %int %b
+         %71 = OpSGreaterThan %bool %70 %int_1
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpReturnValue %float_3
+         %72 = OpLabel
+         %75 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %76 = OpLoad %float %75
+         %77 = OpFOrdLessThan %bool %76 %float_0
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %78
+         %78 = OpLabel
+               OpReturnValue %float_5
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %82
+         %85 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %88
+      %param = OpVariable %_ptr_Function_int Function %21
+          %x = OpVariable %_ptr_Function_int Function %21
+    %param_1 = OpVariable %_ptr_Function_int Function %21
+               OpStore %x_GLF_color %92
+               OpStore %f %float_0
+               OpBranch %93
+         %93 = OpLabel
+               OpLoopMerge %94 %95 None
+               OpBranch %96
+         %96 = OpLabel
+         %98 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+         %99 = OpLoad %float %98
+        %100 = OpConvertFToS %int %99
+        %101 = OpSLessThan %bool %100 %int_0
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpKill
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0
+        %107 = OpLoad %float %106
+        %108 = OpConvertFToS %int %107
+               OpStore %param %108
+        %109 = OpFunctionCall %float %func_i1_ %param
+               OpStore %f %109
+               OpBranch %102
+        %102 = OpLabel
+        %111 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpConvertFToS %int %112
+        %115 = OpSGreaterThan %bool %113 %int_65
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+               OpKill
+        %116 = OpLabel
+               OpStore %x %int_0
+               OpBranch %118
+        %118 = OpLabel
+               OpLoopMerge %119 %120 None
+               OpBranch %121
+        %121 = OpLabel
+        %122 = OpLoad %int %x
+        %123 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpConvertFToS %int %124
+        %126 = OpIAdd %int %125 %int_1
+        %127 = OpSLessThan %bool %122 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+               OpBranch %128
+        %130 = OpLabel
+               OpBranch %119
+        %128 = OpLabel
+        %131 = OpLoad %int %x
+        %133 = OpIAdd %int %131 %int_10
+               OpStore %param_1 %133
+        %134 = OpFunctionCall %float %func_i1_ %param_1
+               OpStore %f %134
+               OpBranch %120
+        %120 = OpLabel
+        %136 = OpLoad %int %x
+        %137 = OpIAdd %int %136 %int_1
+               OpStore %x %137
+               OpBranch %118
+        %119 = OpLabel
+               OpBranch %95
+         %95 = OpLabel
+        %138 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0
+        %139 = OpLoad %float %138
+        %140 = OpConvertFToS %int %139
+        %141 = OpSGreaterThan %bool %140 %int_1
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %94
+        %142 = OpLabel
+               OpBranch %93
+         %94 = OpLabel
+        %145 = OpLoad %float %f
+        %146 = OpFOrdEqual %bool %145 %float_3
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %149
+        %148 = OpLabel
+               OpStore %x_GLF_color %150
+               OpBranch %147
+        %149 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %147
+        %147 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %151
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %155 = OpLabel
+        %156 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %156
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %82
+        %158 = OpLabel
+        %159 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %159
+        %160 = OpFunctionCall %void %main_1
+        %162 = OpLoad %v4float %x_GLF_color
+        %163 = OpCompositeConstruct %main_out %162
+        %161 = OpFunctionCall %void %tint_symbol_3 %163
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 95[%95] is not post dominated by the back-edge block 142[%142]
+  %142 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a6a3d97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,125 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+fn func_i1_(b : ptr<function, i32>) -> f32 {
+  var ndx : i32;
+  var i : i32;
+  ndx = 0;
+  loop {
+    let x_100 : i32 = ndx;
+    if ((x_100 < 2)) {
+    } else {
+      break;
+    }
+    let x_104 : f32 = gl_FragCoord.x;
+    if ((x_104 < 0.0)) {
+      i = 0;
+      loop {
+        let x_112 : i32 = i;
+        if ((x_112 < 2)) {
+        } else {
+          break;
+        }
+        if ((i32(cosh(vec2<f32>(1.0, 800.0)).x) <= 1)) {
+          discard;
+        }
+
+        continuing {
+          let x_121 : i32 = i;
+          i = (x_121 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_123 : i32 = ndx;
+      ndx = (x_123 + 1);
+    }
+  }
+  let x_125 : i32 = *(b);
+  if ((x_125 > 1)) {
+    return 3.0;
+  }
+  let x_130 : f32 = gl_FragCoord.x;
+  if ((x_130 < 0.0)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return 5.0;
+}
+
+fn main_1() {
+  var f : f32;
+  var param : i32;
+  var x : i32;
+  var param_1 : i32;
+  x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  f = 0.0;
+  loop {
+    let x_54 : f32 = x_GLF_color.y;
+    if ((i32(x_54) < 0)) {
+      discard;
+    } else {
+      let x_61 : f32 = x_11.zero;
+      param = i32(x_61);
+      let x_63 : f32 = func_i1_(&(param));
+      f = x_63;
+    }
+    let x_65 : f32 = x_GLF_color.y;
+    if ((i32(x_65) > 65)) {
+      discard;
+    }
+    x = 0;
+    loop {
+      let x_74 : i32 = x;
+      let x_76 : f32 = x_11.zero;
+      if ((x_74 < (i32(x_76) + 1))) {
+      } else {
+        break;
+      }
+      let x_81 : i32 = x;
+      param_1 = (x_81 + 10);
+      let x_83 : f32 = func_i1_(&(param_1));
+      f = x_83;
+
+      continuing {
+        let x_84 : i32 = x;
+        x = (x_84 + 1);
+      }
+    }
+
+    continuing {
+      let x_87 : f32 = x_11.zero;
+      if ((i32(x_87) > 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_90 : f32 = f;
+  if ((x_90 == 3.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
new file mode 100644
index 0000000..a6a3d97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
@@ -0,0 +1,125 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+fn func_i1_(b : ptr<function, i32>) -> f32 {
+  var ndx : i32;
+  var i : i32;
+  ndx = 0;
+  loop {
+    let x_100 : i32 = ndx;
+    if ((x_100 < 2)) {
+    } else {
+      break;
+    }
+    let x_104 : f32 = gl_FragCoord.x;
+    if ((x_104 < 0.0)) {
+      i = 0;
+      loop {
+        let x_112 : i32 = i;
+        if ((x_112 < 2)) {
+        } else {
+          break;
+        }
+        if ((i32(cosh(vec2<f32>(1.0, 800.0)).x) <= 1)) {
+          discard;
+        }
+
+        continuing {
+          let x_121 : i32 = i;
+          i = (x_121 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_123 : i32 = ndx;
+      ndx = (x_123 + 1);
+    }
+  }
+  let x_125 : i32 = *(b);
+  if ((x_125 > 1)) {
+    return 3.0;
+  }
+  let x_130 : f32 = gl_FragCoord.x;
+  if ((x_130 < 0.0)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return 5.0;
+}
+
+fn main_1() {
+  var f : f32;
+  var param : i32;
+  var x : i32;
+  var param_1 : i32;
+  x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  f = 0.0;
+  loop {
+    let x_54 : f32 = x_GLF_color.y;
+    if ((i32(x_54) < 0)) {
+      discard;
+    } else {
+      let x_61 : f32 = x_11.zero;
+      param = i32(x_61);
+      let x_63 : f32 = func_i1_(&(param));
+      f = x_63;
+    }
+    let x_65 : f32 = x_GLF_color.y;
+    if ((i32(x_65) > 65)) {
+      discard;
+    }
+    x = 0;
+    loop {
+      let x_74 : i32 = x;
+      let x_76 : f32 = x_11.zero;
+      if ((x_74 < (i32(x_76) + 1))) {
+      } else {
+        break;
+      }
+      let x_81 : i32 = x;
+      param_1 = (x_81 + 10);
+      let x_83 : f32 = func_i1_(&(param_1));
+      f = x_83;
+
+      continuing {
+        let x_84 : i32 = x;
+        x = (x_84 + 1);
+      }
+    }
+
+    continuing {
+      let x_87 : f32 = x_11.zero;
+      if ((i32(x_87) > 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_90 : f32 = f;
+  if ((x_90 == 3.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..96c79d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,106 @@
+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);
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+
+float func_i1_(inout int b) {
+  int ndx = 0;
+  int i = 0;
+  ndx = 0;
+  {
+    for(; (ndx < 2); ndx = (ndx + 1)) {
+      const float x_104 = gl_FragCoord.x;
+      if ((x_104 < 0.0f)) {
+        i = 0;
+        {
+          for(; (i < 2); i = (i + 1)) {
+            if ((int(cosh(float2(1.0f, 800.0f)).x) <= 1)) {
+              discard;
+            }
+          }
+        }
+      }
+    }
+  }
+  const int x_125 = b;
+  if ((x_125 > 1)) {
+    return 3.0f;
+  }
+  const float x_130 = gl_FragCoord.x;
+  if ((x_130 < 0.0f)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return 5.0f;
+}
+
+void main_1() {
+  float f = 0.0f;
+  int param = 0;
+  int x_1 = 0;
+  int param_1 = 0;
+  x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  f = 0.0f;
+  while (true) {
+    const float x_54 = x_GLF_color.y;
+    if ((int(x_54) < 0)) {
+      discard;
+    } else {
+      const float x_61 = asfloat(x_11[0].x);
+      param = int(x_61);
+      const float x_63 = func_i1_(param);
+      f = x_63;
+    }
+    const float x_65 = x_GLF_color.y;
+    if ((int(x_65) > 65)) {
+      discard;
+    }
+    x_1 = 0;
+    while (true) {
+      const int x_74 = x_1;
+      const float x_76 = asfloat(x_11[0].x);
+      if ((x_74 < (int(x_76) + 1))) {
+      } else {
+        break;
+      }
+      param_1 = (x_1 + 10);
+      const float x_83 = func_i1_(param_1);
+      f = x_83;
+      {
+        x_1 = (x_1 + 1);
+      }
+    }
+    {
+      const float x_87 = asfloat(x_11[0].x);
+      if ((int(x_87) > 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((f == 3.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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d5ad884
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.msl
@@ -0,0 +1,122 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_i1_(thread int* const b, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int ndx = 0;
+  int i = 0;
+  ndx = 0;
+  while (true) {
+    int const x_100 = ndx;
+    if ((x_100 < 2)) {
+    } else {
+      break;
+    }
+    float const x_104 = (*(tint_symbol_5)).x;
+    if ((x_104 < 0.0f)) {
+      i = 0;
+      while (true) {
+        int const x_112 = i;
+        if ((x_112 < 2)) {
+        } else {
+          break;
+        }
+        if ((int(cosh(float2(1.0f, 800.0f)).x) <= 1)) {
+          discard_fragment();
+        }
+        {
+          int const x_121 = i;
+          i = (x_121 + 1);
+        }
+      }
+    }
+    {
+      int const x_123 = ndx;
+      ndx = (x_123 + 1);
+    }
+  }
+  int const x_125 = *(b);
+  if ((x_125 > 1)) {
+    return 3.0f;
+  }
+  float const x_130 = (*(tint_symbol_5)).x;
+  if ((x_130 < 0.0f)) {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return 5.0f;
+}
+
+void main_1(constant buf0& x_11, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float f = 0.0f;
+  int param = 0;
+  int x_1 = 0;
+  int param_1 = 0;
+  *(tint_symbol_7) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  f = 0.0f;
+  while (true) {
+    float const x_54 = (*(tint_symbol_7)).y;
+    if ((int(x_54) < 0)) {
+      discard_fragment();
+    } else {
+      float const x_61 = x_11.zero;
+      param = int(x_61);
+      float const x_63 = func_i1_(&(param), tint_symbol_8, tint_symbol_7);
+      f = x_63;
+    }
+    float const x_65 = (*(tint_symbol_7)).y;
+    if ((int(x_65) > 65)) {
+      discard_fragment();
+    }
+    x_1 = 0;
+    while (true) {
+      int const x_74 = x_1;
+      float const x_76 = x_11.zero;
+      if ((x_74 < (int(x_76) + 1))) {
+      } else {
+        break;
+      }
+      int const x_81 = x_1;
+      param_1 = (x_81 + 10);
+      float const x_83 = func_i1_(&(param_1), tint_symbol_8, tint_symbol_7);
+      f = x_83;
+      {
+        int const x_84 = x_1;
+        x_1 = (x_84 + 1);
+      }
+    }
+    {
+      float const x_87 = x_11.zero;
+      if ((int(x_87) > 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_90 = f;
+  if ((x_90 == 3.0f)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_11, &(tint_symbol_10), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e54f592
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,287 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 164
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_i1_ "func_i1_"
+               OpName %b "b"
+               OpName %ndx "ndx"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %param "param"
+               OpName %x "x"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %14 = OpTypeFunction %float %_ptr_Function_int
+         %21 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+  %float_800 = OpConstant %float 800
+         %59 = OpConstantComposite %v2float %float_1 %float_800
+      %int_1 = OpConstant %int 1
+    %float_3 = OpConstant %float 3
+         %80 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_5 = OpConstant %float 5
+       %void = OpTypeVoid
+         %82 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %88 = OpConstantNull %float
+         %92 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_65 = OpConstant %int 65
+     %int_10 = OpConstant %int 10
+        %150 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %151 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %float None %14
+          %b = OpFunctionParameter %_ptr_Function_int
+         %19 = OpLabel
+        %ndx = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+               OpStore %ndx %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %ndx
+         %30 = OpSLessThan %bool %28 %int_2
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+         %38 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %39 = OpLoad %float %38
+         %41 = OpFOrdLessThan %bool %39 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpStore %i %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpSLessThan %bool %48 %int_2
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %45
+         %50 = OpLabel
+         %54 = OpExtInst %v2float %56 Cosh %59
+         %60 = OpCompositeExtract %float %54 0
+         %53 = OpConvertFToS %int %60
+         %62 = OpSLessThanEqual %bool %53 %int_1
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+               OpKill
+         %63 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %65 = OpLoad %int %i
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %i %66
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+         %67 = OpLoad %int %ndx
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %ndx %68
+               OpBranch %24
+         %25 = OpLabel
+         %70 = OpLoad %int %b
+         %71 = OpSGreaterThan %bool %70 %int_1
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpReturnValue %float_3
+         %72 = OpLabel
+         %75 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %76 = OpLoad %float %75
+         %77 = OpFOrdLessThan %bool %76 %float_0
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %78
+         %78 = OpLabel
+               OpReturnValue %float_5
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %82
+         %85 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %88
+      %param = OpVariable %_ptr_Function_int Function %21
+          %x = OpVariable %_ptr_Function_int Function %21
+    %param_1 = OpVariable %_ptr_Function_int Function %21
+               OpStore %x_GLF_color %92
+               OpStore %f %float_0
+               OpBranch %93
+         %93 = OpLabel
+               OpLoopMerge %94 %95 None
+               OpBranch %96
+         %96 = OpLabel
+         %98 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+         %99 = OpLoad %float %98
+        %100 = OpConvertFToS %int %99
+        %101 = OpSLessThan %bool %100 %int_0
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpKill
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0
+        %107 = OpLoad %float %106
+        %108 = OpConvertFToS %int %107
+               OpStore %param %108
+        %109 = OpFunctionCall %float %func_i1_ %param
+               OpStore %f %109
+               OpBranch %102
+        %102 = OpLabel
+        %111 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpConvertFToS %int %112
+        %115 = OpSGreaterThan %bool %113 %int_65
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+               OpKill
+        %116 = OpLabel
+               OpStore %x %int_0
+               OpBranch %118
+        %118 = OpLabel
+               OpLoopMerge %119 %120 None
+               OpBranch %121
+        %121 = OpLabel
+        %122 = OpLoad %int %x
+        %123 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpConvertFToS %int %124
+        %126 = OpIAdd %int %125 %int_1
+        %127 = OpSLessThan %bool %122 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+               OpBranch %128
+        %130 = OpLabel
+               OpBranch %119
+        %128 = OpLabel
+        %131 = OpLoad %int %x
+        %133 = OpIAdd %int %131 %int_10
+               OpStore %param_1 %133
+        %134 = OpFunctionCall %float %func_i1_ %param_1
+               OpStore %f %134
+               OpBranch %120
+        %120 = OpLabel
+        %136 = OpLoad %int %x
+        %137 = OpIAdd %int %136 %int_1
+               OpStore %x %137
+               OpBranch %118
+        %119 = OpLabel
+               OpBranch %95
+         %95 = OpLabel
+        %138 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0
+        %139 = OpLoad %float %138
+        %140 = OpConvertFToS %int %139
+        %141 = OpSGreaterThan %bool %140 %int_1
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %94
+        %142 = OpLabel
+               OpBranch %93
+         %94 = OpLabel
+        %145 = OpLoad %float %f
+        %146 = OpFOrdEqual %bool %145 %float_3
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %149
+        %148 = OpLabel
+               OpStore %x_GLF_color %150
+               OpBranch %147
+        %149 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %147
+        %147 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %151
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %155 = OpLabel
+        %156 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %156
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %82
+        %158 = OpLabel
+        %159 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %159
+        %160 = OpFunctionCall %void %main_1
+        %162 = OpLoad %v4float %x_GLF_color
+        %163 = OpCompositeConstruct %main_out %162
+        %161 = OpFunctionCall %void %tint_symbol_3 %163
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 95[%95] is not post dominated by the back-edge block 142[%142]
+  %142 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a6a3d97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,125 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+fn func_i1_(b : ptr<function, i32>) -> f32 {
+  var ndx : i32;
+  var i : i32;
+  ndx = 0;
+  loop {
+    let x_100 : i32 = ndx;
+    if ((x_100 < 2)) {
+    } else {
+      break;
+    }
+    let x_104 : f32 = gl_FragCoord.x;
+    if ((x_104 < 0.0)) {
+      i = 0;
+      loop {
+        let x_112 : i32 = i;
+        if ((x_112 < 2)) {
+        } else {
+          break;
+        }
+        if ((i32(cosh(vec2<f32>(1.0, 800.0)).x) <= 1)) {
+          discard;
+        }
+
+        continuing {
+          let x_121 : i32 = i;
+          i = (x_121 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_123 : i32 = ndx;
+      ndx = (x_123 + 1);
+    }
+  }
+  let x_125 : i32 = *(b);
+  if ((x_125 > 1)) {
+    return 3.0;
+  }
+  let x_130 : f32 = gl_FragCoord.x;
+  if ((x_130 < 0.0)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return 5.0;
+}
+
+fn main_1() {
+  var f : f32;
+  var param : i32;
+  var x : i32;
+  var param_1 : i32;
+  x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  f = 0.0;
+  loop {
+    let x_54 : f32 = x_GLF_color.y;
+    if ((i32(x_54) < 0)) {
+      discard;
+    } else {
+      let x_61 : f32 = x_11.zero;
+      param = i32(x_61);
+      let x_63 : f32 = func_i1_(&(param));
+      f = x_63;
+    }
+    let x_65 : f32 = x_GLF_color.y;
+    if ((i32(x_65) > 65)) {
+      discard;
+    }
+    x = 0;
+    loop {
+      let x_74 : i32 = x;
+      let x_76 : f32 = x_11.zero;
+      if ((x_74 < (i32(x_76) + 1))) {
+      } else {
+        break;
+      }
+      let x_81 : i32 = x;
+      param_1 = (x_81 + 10);
+      let x_83 : f32 = func_i1_(&(param_1));
+      f = x_83;
+
+      continuing {
+        let x_84 : i32 = x;
+        x = (x_84 + 1);
+      }
+    }
+
+    continuing {
+      let x_87 : f32 = x_11.zero;
+      if ((i32(x_87) > 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_90 : f32 = f;
+  if ((x_90 == 3.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm
new file mode 100644
index 0000000..efa8502
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm
@@ -0,0 +1,133 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %numbers "numbers"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3_0 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3
+%_arr_int_uint_3_0 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3_0
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_0 = OpConstant %float 0
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+    %numbers = OpVariable %_ptr_Function__arr_int_uint_3 Function
+          %a = OpVariable %_ptr_Function_v2float Function
+          %b = OpVariable %_ptr_Function_float Function
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Function_int %numbers %38
+               OpStore %41 %40
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Function_int %numbers %43
+               OpStore %46 %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Function_int %numbers %48
+               OpStore %51 %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_2
+         %56 = OpLoad %float %55
+         %57 = OpFOrdLessThan %bool %float_0 %56
+         %58 = OpSelect %int %57 %int_1 %int_2
+         %59 = OpAccessChain %_ptr_Function_int %numbers %58
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpCompositeConstruct %v2float %54 %61
+               OpStore %a %62
+         %63 = OpLoad %v2float %a
+         %64 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %67 = OpLoad %float %66
+         %68 = OpCompositeConstruct %v2float %65 %67
+         %69 = OpDot %float %63 %68
+               OpStore %b %69
+         %70 = OpLoad %float %b
+         %71 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %72 = OpLoad %float %71
+         %73 = OpFOrdEqual %bool %70 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %87
+         %89 = OpCompositeConstruct %v4float %79 %82 %85 %88
+               OpStore %_GLF_color %89
+               OpBranch %74
+         %76 = OpLabel
+         %90 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpCompositeConstruct %v4float %92 %92 %92 %92
+               OpStore %_GLF_color %93
+               OpBranch %74
+         %74 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..01b699a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,65 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int numbers[3] = (int[3])0;
+  float2 a = float2(0.0f, 0.0f);
+  float b = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  numbers[x_38] = x_40;
+  const int x_43 = asint(x_6[1].x);
+  const int x_45 = asint(x_6[1].x);
+  numbers[x_43] = x_45;
+  const int x_48 = asint(x_6[2].x);
+  const int x_50 = asint(x_6[2].x);
+  numbers[x_48] = x_50;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_53 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_56 = asfloat(x_9[2].x);
+  const int x_60 = numbers[((0.0f < x_56) ? 1 : 2)];
+  a = float2(float(x_53), float(x_60));
+  const float2 x_63 = a;
+  const float x_65 = asfloat(x_9[1].x);
+  const float x_67 = asfloat(x_9[1].x);
+  b = dot(x_63, float2(x_65, x_67));
+  const float x_70 = b;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_72 = asfloat(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  if ((x_70 == x_72)) {
+    const int x_78 = asint(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_81 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_84 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_87 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_78), float(x_81), float(x_84), float(x_87));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_91 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_92 = float(x_91);
+    x_GLF_color = float4(x_92, x_92, x_92, x_92);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1545462
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 numbers = {};
+  float2 a = 0.0f;
+  float b = 0.0f;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  numbers.arr[x_38] = x_40;
+  int const x_43 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_45 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  numbers.arr[x_43] = x_45;
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_50 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  numbers.arr[x_48] = x_50;
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_56 = x_9.x_GLF_uniform_float_values.arr[2].el;
+  int const x_60 = numbers.arr[select(2, 1, (0.0f < x_56))];
+  a = float2(float(x_53), float(x_60));
+  float2 const x_63 = a;
+  float const x_65 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  float const x_67 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  b = dot(x_63, float2(x_65, x_67));
+  float const x_70 = b;
+  float const x_72 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_70 == x_72)) {
+    int const x_78 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_84 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_87 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_78), float(x_81), float(x_84), float(x_87));
+  } else {
+    int const x_91 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_92 = float(x_91);
+    *(tint_symbol_4) = float4(x_92, x_92, x_92, x_92);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..cad1211
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,170 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %numbers "numbers"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_3_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_arr_int_uint_3_0 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3_0 = OpTypePointer Function %_arr_int_uint_3_0
+         %26 = OpConstantNull %_arr_int_uint_3_0
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %30 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %33 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+        %100 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+    %numbers = OpVariable %_ptr_Function__arr_int_uint_3_0 Function %26
+          %a = OpVariable %_ptr_Function_v2float Function %30
+          %b = OpVariable %_ptr_Function_float Function %33
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %42 = OpAccessChain %_ptr_Function_int %numbers %38
+               OpStore %42 %40
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Function_int %numbers %45
+               OpStore %48 %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Function_int %numbers %51
+               OpStore %54 %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_2
+         %59 = OpLoad %float %58
+         %62 = OpFOrdLessThan %bool %float_0 %59
+         %60 = OpSelect %int %62 %int_1 %int_2
+         %64 = OpAccessChain %_ptr_Function_int %numbers %60
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %56
+         %67 = OpConvertSToF %float %65
+         %68 = OpCompositeConstruct %v2float %66 %67
+               OpStore %a %68
+         %69 = OpLoad %v2float %a
+         %70 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %73 = OpLoad %float %72
+         %75 = OpCompositeConstruct %v2float %71 %73
+         %74 = OpDot %float %69 %75
+               OpStore %b %74
+         %76 = OpLoad %float %b
+         %77 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %78 = OpLoad %float %77
+         %79 = OpFOrdEqual %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %84
+         %92 = OpConvertSToF %float %86
+         %93 = OpConvertSToF %float %88
+         %94 = OpConvertSToF %float %90
+         %95 = OpCompositeConstruct %v4float %91 %92 %93 %94
+               OpStore %x_GLF_color %95
+               OpBranch %80
+         %82 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %97 = OpLoad %int %96
+         %98 = OpConvertSToF %float %97
+         %99 = OpCompositeConstruct %v4float %98 %98 %98 %98
+               OpStore %x_GLF_color %99
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %100
+%tint_symbol = OpFunctionParameter %main_out
+        %104 = OpLabel
+        %105 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %105
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %107 = OpLabel
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_2 %111
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a706204
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,67 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var numbers : array<i32, 3>;
+  var a : vec2<f32>;
+  var b : f32;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+  numbers[x_38] = x_40;
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_45 : i32 = x_6.x_GLF_uniform_int_values[1];
+  numbers[x_43] = x_45;
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_50 : i32 = x_6.x_GLF_uniform_int_values[2];
+  numbers[x_48] = x_50;
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_56 : f32 = x_9.x_GLF_uniform_float_values[2];
+  let x_60 : i32 = numbers[select(2, 1, (0.0 < x_56))];
+  a = vec2<f32>(f32(x_53), f32(x_60));
+  let x_63 : vec2<f32> = a;
+  let x_65 : f32 = x_9.x_GLF_uniform_float_values[1];
+  let x_67 : f32 = x_9.x_GLF_uniform_float_values[1];
+  b = dot(x_63, vec2<f32>(x_65, x_67));
+  let x_70 : f32 = b;
+  let x_72 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((x_70 == x_72)) {
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_87 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_78), f32(x_81), f32(x_84), f32(x_87));
+  } else {
+    let x_91 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_92 : f32 = f32(x_91);
+    x_GLF_color = vec4<f32>(x_92, x_92, x_92, x_92);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
new file mode 100644
index 0000000..a706204
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
@@ -0,0 +1,67 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var numbers : array<i32, 3>;
+  var a : vec2<f32>;
+  var b : f32;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+  numbers[x_38] = x_40;
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_45 : i32 = x_6.x_GLF_uniform_int_values[1];
+  numbers[x_43] = x_45;
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_50 : i32 = x_6.x_GLF_uniform_int_values[2];
+  numbers[x_48] = x_50;
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_56 : f32 = x_9.x_GLF_uniform_float_values[2];
+  let x_60 : i32 = numbers[select(2, 1, (0.0 < x_56))];
+  a = vec2<f32>(f32(x_53), f32(x_60));
+  let x_63 : vec2<f32> = a;
+  let x_65 : f32 = x_9.x_GLF_uniform_float_values[1];
+  let x_67 : f32 = x_9.x_GLF_uniform_float_values[1];
+  b = dot(x_63, vec2<f32>(x_65, x_67));
+  let x_70 : f32 = b;
+  let x_72 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((x_70 == x_72)) {
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_87 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_78), f32(x_81), f32(x_84), f32(x_87));
+  } else {
+    let x_91 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_92 : f32 = f32(x_91);
+    x_GLF_color = vec4<f32>(x_92, x_92, x_92, x_92);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..01b699a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,65 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int numbers[3] = (int[3])0;
+  float2 a = float2(0.0f, 0.0f);
+  float b = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  numbers[x_38] = x_40;
+  const int x_43 = asint(x_6[1].x);
+  const int x_45 = asint(x_6[1].x);
+  numbers[x_43] = x_45;
+  const int x_48 = asint(x_6[2].x);
+  const int x_50 = asint(x_6[2].x);
+  numbers[x_48] = x_50;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_53 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_56 = asfloat(x_9[2].x);
+  const int x_60 = numbers[((0.0f < x_56) ? 1 : 2)];
+  a = float2(float(x_53), float(x_60));
+  const float2 x_63 = a;
+  const float x_65 = asfloat(x_9[1].x);
+  const float x_67 = asfloat(x_9[1].x);
+  b = dot(x_63, float2(x_65, x_67));
+  const float x_70 = b;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_72 = asfloat(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  if ((x_70 == x_72)) {
+    const int x_78 = asint(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_81 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_84 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_87 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_78), float(x_81), float(x_84), float(x_87));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_91 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_92 = float(x_91);
+    x_GLF_color = float4(x_92, x_92, x_92, x_92);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1545462
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 numbers = {};
+  float2 a = 0.0f;
+  float b = 0.0f;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  numbers.arr[x_38] = x_40;
+  int const x_43 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_45 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  numbers.arr[x_43] = x_45;
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_50 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  numbers.arr[x_48] = x_50;
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_56 = x_9.x_GLF_uniform_float_values.arr[2].el;
+  int const x_60 = numbers.arr[select(2, 1, (0.0f < x_56))];
+  a = float2(float(x_53), float(x_60));
+  float2 const x_63 = a;
+  float const x_65 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  float const x_67 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  b = dot(x_63, float2(x_65, x_67));
+  float const x_70 = b;
+  float const x_72 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_70 == x_72)) {
+    int const x_78 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_84 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_87 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_78), float(x_81), float(x_84), float(x_87));
+  } else {
+    int const x_91 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_92 = float(x_91);
+    *(tint_symbol_4) = float4(x_92, x_92, x_92, x_92);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..cad1211
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,170 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %numbers "numbers"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_3_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_arr_int_uint_3_0 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3_0 = OpTypePointer Function %_arr_int_uint_3_0
+         %26 = OpConstantNull %_arr_int_uint_3_0
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %30 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %33 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+        %100 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+    %numbers = OpVariable %_ptr_Function__arr_int_uint_3_0 Function %26
+          %a = OpVariable %_ptr_Function_v2float Function %30
+          %b = OpVariable %_ptr_Function_float Function %33
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %42 = OpAccessChain %_ptr_Function_int %numbers %38
+               OpStore %42 %40
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Function_int %numbers %45
+               OpStore %48 %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Function_int %numbers %51
+               OpStore %54 %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_2
+         %59 = OpLoad %float %58
+         %62 = OpFOrdLessThan %bool %float_0 %59
+         %60 = OpSelect %int %62 %int_1 %int_2
+         %64 = OpAccessChain %_ptr_Function_int %numbers %60
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %56
+         %67 = OpConvertSToF %float %65
+         %68 = OpCompositeConstruct %v2float %66 %67
+               OpStore %a %68
+         %69 = OpLoad %v2float %a
+         %70 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %73 = OpLoad %float %72
+         %75 = OpCompositeConstruct %v2float %71 %73
+         %74 = OpDot %float %69 %75
+               OpStore %b %74
+         %76 = OpLoad %float %b
+         %77 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %78 = OpLoad %float %77
+         %79 = OpFOrdEqual %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %84
+         %92 = OpConvertSToF %float %86
+         %93 = OpConvertSToF %float %88
+         %94 = OpConvertSToF %float %90
+         %95 = OpCompositeConstruct %v4float %91 %92 %93 %94
+               OpStore %x_GLF_color %95
+               OpBranch %80
+         %82 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %97 = OpLoad %int %96
+         %98 = OpConvertSToF %float %97
+         %99 = OpCompositeConstruct %v4float %98 %98 %98 %98
+               OpStore %x_GLF_color %99
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %100
+%tint_symbol = OpFunctionParameter %main_out
+        %104 = OpLabel
+        %105 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %105
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %107 = OpLabel
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_2 %111
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a706204
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,67 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var numbers : array<i32, 3>;
+  var a : vec2<f32>;
+  var b : f32;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+  numbers[x_38] = x_40;
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_45 : i32 = x_6.x_GLF_uniform_int_values[1];
+  numbers[x_43] = x_45;
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_50 : i32 = x_6.x_GLF_uniform_int_values[2];
+  numbers[x_48] = x_50;
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_56 : f32 = x_9.x_GLF_uniform_float_values[2];
+  let x_60 : i32 = numbers[select(2, 1, (0.0 < x_56))];
+  a = vec2<f32>(f32(x_53), f32(x_60));
+  let x_63 : vec2<f32> = a;
+  let x_65 : f32 = x_9.x_GLF_uniform_float_values[1];
+  let x_67 : f32 = x_9.x_GLF_uniform_float_values[1];
+  b = dot(x_63, vec2<f32>(x_65, x_67));
+  let x_70 : f32 = b;
+  let x_72 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((x_70 == x_72)) {
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_87 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_78), f32(x_81), f32(x_84), f32(x_87));
+  } else {
+    let x_91 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_92 : f32 = f32(x_91);
+    x_GLF_color = vec4<f32>(x_92, x_92, x_92, x_92);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm
new file mode 100644
index 0000000..2fd2194
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm
@@ -0,0 +1,123 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %s "s"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %j "j"
+               OpName %c "c"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %14 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_2 = OpConstant %float 2
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_3 = OpConstant %float 3
+     %int_10 = OpConstant %int 10
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+    %float_5 = OpConstant %float 5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %32 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %12
+         %33 = OpLabel
+          %c = OpVariable %_ptr_Function_v4float Function
+         %34 = OpFunctionCall %float %func_
+         %35 = OpCompositeConstruct %v4float %34 %float_0 %float_0 %float_1
+               OpStore %c %35
+         %36 = OpFunctionCall %float %func_
+         %37 = OpFOrdEqual %bool %36 %float_5
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+         %41 = OpLoad %v4float %c
+               OpStore %_GLF_color %41
+               OpBranch %38
+         %40 = OpLabel
+               OpStore %_GLF_color %32
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %float None %14
+         %42 = OpLabel
+          %s = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+               OpStore %s %float_2
+               OpStore %i %int_0
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %49 = OpLoad %int %48
+         %50 = OpIAdd %int %49 %int_1
+         %51 = OpSLessThan %bool %47 %50
+               OpBranchConditional %51 %52 %44
+         %52 = OpLabel
+         %53 = OpLoad %float %s
+         %54 = OpFAdd %float %53 %float_3
+               OpStore %s %54
+               OpStore %j %int_0
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %j
+         %60 = OpSLessThan %bool %59 %int_10
+               OpBranchConditional %60 %61 %56
+         %61 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %63 = OpLoad %int %62
+         %64 = OpIEqual %bool %63 %int_1
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpKill
+         %65 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %67 = OpLoad %int %j
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %j %68
+               OpBranch %55
+         %56 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+         %69 = OpLoad %int %i
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %i %70
+               OpBranch %43
+         %44 = OpLabel
+         %71 = OpLoad %float %s
+               OpReturnValue %71
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..897064d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,61 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  float s = 0.0f;
+  int i = 0;
+  int j = 0;
+  s = 2.0f;
+  i = 0;
+  while (true) {
+    const int x_47 = i;
+    const int x_49 = asint(x_8[0].x);
+    if ((x_47 < (x_49 + 1))) {
+    } else {
+      break;
+    }
+    s = (s + 3.0f);
+    j = 0;
+    {
+      for(; (j < 10); j = (j + 1)) {
+        const int x_63 = asint(x_8[0].x);
+        if ((x_63 == 1)) {
+          discard;
+        }
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return s;
+}
+
+void main_1() {
+  float4 c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_34 = func_();
+  c = float4(x_34, 0.0f, 0.0f, 1.0f);
+  const float x_36 = func_();
+  if ((x_36 == 5.0f)) {
+    x_GLF_color = c;
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..9140262
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(constant buf0& x_8) {
+  float s = 0.0f;
+  int i = 0;
+  int j = 0;
+  s = 2.0f;
+  i = 0;
+  while (true) {
+    int const x_47 = i;
+    int const x_49 = x_8.zero;
+    if ((x_47 < (x_49 + 1))) {
+    } else {
+      break;
+    }
+    float const x_53 = s;
+    s = (x_53 + 3.0f);
+    j = 0;
+    while (true) {
+      int const x_59 = j;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      int const x_63 = x_8.zero;
+      if ((x_63 == 1)) {
+        discard_fragment();
+      }
+      {
+        int const x_67 = j;
+        j = (x_67 + 1);
+      }
+    }
+    {
+      int const x_69 = i;
+      i = (x_69 + 1);
+    }
+  }
+  float const x_71 = s;
+  return x_71;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float4 c = 0.0f;
+  float const x_34 = func_(x_8);
+  c = float4(x_34, 0.0f, 0.0f, 1.0f);
+  float const x_36 = func_(x_8);
+  if ((x_36 == 5.0f)) {
+    float4 const x_41 = c;
+    *(tint_symbol_4) = x_41;
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d7c1363
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,168 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 94
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %s "s"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_2 = OpConstant %float 2
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_3 = OpConstant %float 3
+     %int_10 = OpConstant %int 10
+       %void = OpTypeVoid
+         %64 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+    %float_5 = OpConstant %float 5
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %82 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %12
+         %14 = OpLabel
+          %s = OpVariable %_ptr_Function_float Function %17
+          %i = OpVariable %_ptr_Function_int Function %20
+          %j = OpVariable %_ptr_Function_int Function %20
+               OpStore %s %float_2
+               OpStore %i %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %i
+         %32 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %33 = OpLoad %int %32
+         %35 = OpIAdd %int %33 %int_1
+         %36 = OpSLessThan %bool %28 %35
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpBranch %38
+         %40 = OpLabel
+               OpBranch %25
+         %38 = OpLabel
+         %41 = OpLoad %float %s
+         %43 = OpFAdd %float %41 %float_3
+               OpStore %s %43
+               OpStore %j %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %j
+         %50 = OpSLessThan %bool %48 %int_10
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %45
+         %51 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %55 %int_1
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpKill
+         %57 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %59 = OpLoad %int %j
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %j %60
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+         %61 = OpLoad %int %i
+         %62 = OpIAdd %int %61 %int_1
+               OpStore %i %62
+               OpBranch %24
+         %25 = OpLabel
+         %63 = OpLoad %float %s
+               OpReturnValue %63
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %64
+         %67 = OpLabel
+          %c = OpVariable %_ptr_Function_v4float Function %9
+         %70 = OpFunctionCall %float %func_
+         %73 = OpCompositeConstruct %v4float %70 %float_0 %float_0 %float_1
+               OpStore %c %73
+         %74 = OpFunctionCall %float %func_
+         %76 = OpFOrdEqual %bool %74 %float_5
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+         %80 = OpLoad %v4float %c
+               OpStore %x_GLF_color %80
+               OpBranch %77
+         %79 = OpLabel
+               OpStore %x_GLF_color %81
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %82
+%tint_symbol = OpFunctionParameter %main_out
+         %86 = OpLabel
+         %87 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %87
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %64
+         %89 = OpLabel
+         %90 = OpFunctionCall %void %main_1
+         %92 = OpLoad %v4float %x_GLF_color
+         %93 = OpCompositeConstruct %main_out %92
+         %91 = OpFunctionCall %void %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f8b40bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,75 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var s : f32;
+  var i : i32;
+  var j : i32;
+  s = 2.0;
+  i = 0;
+  loop {
+    let x_47 : i32 = i;
+    let x_49 : i32 = x_8.zero;
+    if ((x_47 < (x_49 + 1))) {
+    } else {
+      break;
+    }
+    let x_53 : f32 = s;
+    s = (x_53 + 3.0);
+    j = 0;
+    loop {
+      let x_59 : i32 = j;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      let x_63 : i32 = x_8.zero;
+      if ((x_63 == 1)) {
+        discard;
+      }
+
+      continuing {
+        let x_67 : i32 = j;
+        j = (x_67 + 1);
+      }
+    }
+
+    continuing {
+      let x_69 : i32 = i;
+      i = (x_69 + 1);
+    }
+  }
+  let x_71 : f32 = s;
+  return x_71;
+}
+
+fn main_1() {
+  var c : vec4<f32>;
+  let x_34 : f32 = func_();
+  c = vec4<f32>(x_34, 0.0, 0.0, 1.0);
+  let x_36 : f32 = func_();
+  if ((x_36 == 5.0)) {
+    let x_41 : vec4<f32> = c;
+    x_GLF_color = x_41;
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
new file mode 100644
index 0000000..f8b40bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
@@ -0,0 +1,75 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var s : f32;
+  var i : i32;
+  var j : i32;
+  s = 2.0;
+  i = 0;
+  loop {
+    let x_47 : i32 = i;
+    let x_49 : i32 = x_8.zero;
+    if ((x_47 < (x_49 + 1))) {
+    } else {
+      break;
+    }
+    let x_53 : f32 = s;
+    s = (x_53 + 3.0);
+    j = 0;
+    loop {
+      let x_59 : i32 = j;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      let x_63 : i32 = x_8.zero;
+      if ((x_63 == 1)) {
+        discard;
+      }
+
+      continuing {
+        let x_67 : i32 = j;
+        j = (x_67 + 1);
+      }
+    }
+
+    continuing {
+      let x_69 : i32 = i;
+      i = (x_69 + 1);
+    }
+  }
+  let x_71 : f32 = s;
+  return x_71;
+}
+
+fn main_1() {
+  var c : vec4<f32>;
+  let x_34 : f32 = func_();
+  c = vec4<f32>(x_34, 0.0, 0.0, 1.0);
+  let x_36 : f32 = func_();
+  if ((x_36 == 5.0)) {
+    let x_41 : vec4<f32> = c;
+    x_GLF_color = x_41;
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..897064d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,61 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  float s = 0.0f;
+  int i = 0;
+  int j = 0;
+  s = 2.0f;
+  i = 0;
+  while (true) {
+    const int x_47 = i;
+    const int x_49 = asint(x_8[0].x);
+    if ((x_47 < (x_49 + 1))) {
+    } else {
+      break;
+    }
+    s = (s + 3.0f);
+    j = 0;
+    {
+      for(; (j < 10); j = (j + 1)) {
+        const int x_63 = asint(x_8[0].x);
+        if ((x_63 == 1)) {
+          discard;
+        }
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return s;
+}
+
+void main_1() {
+  float4 c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_34 = func_();
+  c = float4(x_34, 0.0f, 0.0f, 1.0f);
+  const float x_36 = func_();
+  if ((x_36 == 5.0f)) {
+    x_GLF_color = c;
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..9140262
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(constant buf0& x_8) {
+  float s = 0.0f;
+  int i = 0;
+  int j = 0;
+  s = 2.0f;
+  i = 0;
+  while (true) {
+    int const x_47 = i;
+    int const x_49 = x_8.zero;
+    if ((x_47 < (x_49 + 1))) {
+    } else {
+      break;
+    }
+    float const x_53 = s;
+    s = (x_53 + 3.0f);
+    j = 0;
+    while (true) {
+      int const x_59 = j;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      int const x_63 = x_8.zero;
+      if ((x_63 == 1)) {
+        discard_fragment();
+      }
+      {
+        int const x_67 = j;
+        j = (x_67 + 1);
+      }
+    }
+    {
+      int const x_69 = i;
+      i = (x_69 + 1);
+    }
+  }
+  float const x_71 = s;
+  return x_71;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float4 c = 0.0f;
+  float const x_34 = func_(x_8);
+  c = float4(x_34, 0.0f, 0.0f, 1.0f);
+  float const x_36 = func_(x_8);
+  if ((x_36 == 5.0f)) {
+    float4 const x_41 = c;
+    *(tint_symbol_4) = x_41;
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d7c1363
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,168 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 94
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %s "s"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_2 = OpConstant %float 2
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_3 = OpConstant %float 3
+     %int_10 = OpConstant %int 10
+       %void = OpTypeVoid
+         %64 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+    %float_5 = OpConstant %float 5
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %82 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %12
+         %14 = OpLabel
+          %s = OpVariable %_ptr_Function_float Function %17
+          %i = OpVariable %_ptr_Function_int Function %20
+          %j = OpVariable %_ptr_Function_int Function %20
+               OpStore %s %float_2
+               OpStore %i %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %i
+         %32 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %33 = OpLoad %int %32
+         %35 = OpIAdd %int %33 %int_1
+         %36 = OpSLessThan %bool %28 %35
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpBranch %38
+         %40 = OpLabel
+               OpBranch %25
+         %38 = OpLabel
+         %41 = OpLoad %float %s
+         %43 = OpFAdd %float %41 %float_3
+               OpStore %s %43
+               OpStore %j %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %j
+         %50 = OpSLessThan %bool %48 %int_10
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %45
+         %51 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %55 %int_1
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpKill
+         %57 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %59 = OpLoad %int %j
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %j %60
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+         %61 = OpLoad %int %i
+         %62 = OpIAdd %int %61 %int_1
+               OpStore %i %62
+               OpBranch %24
+         %25 = OpLabel
+         %63 = OpLoad %float %s
+               OpReturnValue %63
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %64
+         %67 = OpLabel
+          %c = OpVariable %_ptr_Function_v4float Function %9
+         %70 = OpFunctionCall %float %func_
+         %73 = OpCompositeConstruct %v4float %70 %float_0 %float_0 %float_1
+               OpStore %c %73
+         %74 = OpFunctionCall %float %func_
+         %76 = OpFOrdEqual %bool %74 %float_5
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+         %80 = OpLoad %v4float %c
+               OpStore %x_GLF_color %80
+               OpBranch %77
+         %79 = OpLabel
+               OpStore %x_GLF_color %81
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %82
+%tint_symbol = OpFunctionParameter %main_out
+         %86 = OpLabel
+         %87 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %87
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %64
+         %89 = OpLabel
+         %90 = OpFunctionCall %void %main_1
+         %92 = OpLoad %v4float %x_GLF_color
+         %93 = OpCompositeConstruct %main_out %92
+         %91 = OpFunctionCall %void %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f8b40bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,75 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var s : f32;
+  var i : i32;
+  var j : i32;
+  s = 2.0;
+  i = 0;
+  loop {
+    let x_47 : i32 = i;
+    let x_49 : i32 = x_8.zero;
+    if ((x_47 < (x_49 + 1))) {
+    } else {
+      break;
+    }
+    let x_53 : f32 = s;
+    s = (x_53 + 3.0);
+    j = 0;
+    loop {
+      let x_59 : i32 = j;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      let x_63 : i32 = x_8.zero;
+      if ((x_63 == 1)) {
+        discard;
+      }
+
+      continuing {
+        let x_67 : i32 = j;
+        j = (x_67 + 1);
+      }
+    }
+
+    continuing {
+      let x_69 : i32 = i;
+      i = (x_69 + 1);
+    }
+  }
+  let x_71 : f32 = s;
+  return x_71;
+}
+
+fn main_1() {
+  var c : vec4<f32>;
+  let x_34 : f32 = func_();
+  c = vec4<f32>(x_34, 0.0, 0.0, 1.0);
+  let x_36 : f32 = func_();
+  if ((x_36 == 5.0)) {
+    let x_41 : vec4<f32> = c;
+    x_GLF_color = x_41;
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm
new file mode 100644
index 0000000..e055b34
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm
@@ -0,0 +1,117 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %v "v"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+    %v2float = OpTypeVector %float 2
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_0 = OpConstant %uint 0
+       %main = OpFunction %void None %13
+         %37 = OpLabel
+          %v = OpVariable %_ptr_Function_v2int Function
+         %38 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %39 %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpCompositeConstruct %v4float %48 %48 %48 %48
+               OpStore %_GLF_color %49
+               OpBranch %43
+         %45 = OpLabel
+         %50 = OpLoad %v4float %gl_FragCoord
+         %51 = OpVectorShuffle %v2float %50 %50 0 1
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpCompositeConstruct %v2float %53 %55
+         %57 = OpFSub %v2float %51 %56
+         %58 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %59 = OpLoad %float %58
+         %60 = OpVectorTimesScalar %v2float %57 %59
+         %61 = OpConvertFToS %v2int %60
+               OpStore %v %61
+         %62 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Function_int %v %uint_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpISub %int %65 %67
+         %69 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %70 = OpLoad %int %69
+         %71 = OpBitwiseAnd %int %68 %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpAccessChain %_ptr_Function_int %v %uint_0
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %76 = OpLoad %int %75
+         %77 = OpBitwiseAnd %int %74 %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %80 = OpLoad %float %79
+         %81 = OpCompositeConstruct %v4float %63 %72 %78 %80
+               OpStore %_GLF_color %81
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..810c81c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,56 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  int2 v = int2(0, 0);
+  const float x_39 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_39 < x_41)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_48 = float(x_47);
+    x_GLF_color = float4(x_48, x_48, x_48, x_48);
+  } else {
+    const float4 x_50 = gl_FragCoord;
+    const float x_53 = asfloat(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_55 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_59 = asfloat(x_6[2].x);
+    v = int2(((float2(x_50.x, x_50.y) - float2(x_53, x_55)) * x_59));
+    const float x_63 = asfloat(x_6[1].x);
+    const int x_65 = v.y;
+    const int x_67 = asint(x_8[1].x);
+    const int x_70 = asint(x_8[1].x);
+    const int x_74 = v.x;
+    const int x_76 = asint(x_8[1].x);
+    const float x_80 = asfloat(x_6[1].x);
+    x_GLF_color = float4(x_63, float(((x_65 - x_67) & x_70)), float((x_74 & x_76)), x_80);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4c716f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.msl
@@ -0,0 +1,66 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int2 v = 0;
+  float const x_39 = (*(tint_symbol_5)).y;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_39 < x_41)) {
+    int const x_47 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_48 = float(x_47);
+    *(tint_symbol_6) = float4(x_48, x_48, x_48, x_48);
+  } else {
+    float4 const x_50 = *(tint_symbol_5);
+    float const x_53 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_55 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_59 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    v = int2(((float2(x_50.x, x_50.y) - float2(x_53, x_55)) * x_59));
+    float const x_63 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    int const x_65 = v.y;
+    int const x_67 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_70 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_74 = v.x;
+    int const x_76 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_80 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_6) = float4(x_63, float(((x_65 - x_67) & x_70)), float((x_74 & x_76)), x_80);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..c4e8344
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,156 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 101
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %30 = OpConstantNull %v2int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_int = OpTypePointer Function %int
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %v = OpVariable %_ptr_Function_v2int Function %30
+         %33 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %34 = OpLoad %float %33
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpFOrdLessThan %bool %34 %39
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpCompositeConstruct %v4float %48 %48 %48 %48
+               OpStore %x_GLF_color %49
+               OpBranch %42
+         %44 = OpLabel
+         %50 = OpLoad %v4float %gl_FragCoord
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %57 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %58 = OpLoad %float %57
+         %61 = OpCompositeExtract %float %50 0
+         %62 = OpCompositeExtract %float %50 1
+         %63 = OpCompositeConstruct %v2float %61 %62
+         %64 = OpCompositeConstruct %v2float %53 %55
+         %65 = OpFSub %v2float %63 %64
+         %66 = OpVectorTimesScalar %v2float %65 %58
+         %59 = OpConvertFToS %v2int %66
+               OpStore %v %59
+         %67 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %68 = OpLoad %float %67
+         %70 = OpAccessChain %_ptr_Function_int %v %uint_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_int %v %uint_0
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %81 = OpLoad %float %80
+         %83 = OpISub %int %71 %73
+         %84 = OpBitwiseAnd %int %83 %75
+         %82 = OpConvertSToF %float %84
+         %86 = OpBitwiseAnd %int %77 %79
+         %85 = OpConvertSToF %float %86
+         %87 = OpCompositeConstruct %v4float %68 %82 %85 %81
+               OpStore %x_GLF_color %87
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %88
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %95 = OpLabel
+         %96 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %96
+         %97 = OpFunctionCall %void %main_1
+         %99 = OpLoad %v4float %x_GLF_color
+        %100 = OpCompositeConstruct %main_out %99
+         %98 = OpFunctionCall %void %tint_symbol_3 %100
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..9a549c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var v : vec2<i32>;
+  let x_39 : f32 = gl_FragCoord.y;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_39 < x_41)) {
+    let x_47 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_48 : f32 = f32(x_47);
+    x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+  } else {
+    let x_50 : vec4<f32> = gl_FragCoord;
+    let x_53 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_55 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_59 : f32 = x_6.x_GLF_uniform_float_values[2];
+    v = vec2<i32>(((vec2<f32>(x_50.x, x_50.y) - vec2<f32>(x_53, x_55)) * x_59));
+    let x_63 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_65 : i32 = v.y;
+    let x_67 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_70 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = v.x;
+    let x_76 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_80 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_63, f32(((x_65 - x_67) & x_70)), f32((x_74 & x_76)), x_80);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
new file mode 100644
index 0000000..9a549c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var v : vec2<i32>;
+  let x_39 : f32 = gl_FragCoord.y;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_39 < x_41)) {
+    let x_47 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_48 : f32 = f32(x_47);
+    x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+  } else {
+    let x_50 : vec4<f32> = gl_FragCoord;
+    let x_53 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_55 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_59 : f32 = x_6.x_GLF_uniform_float_values[2];
+    v = vec2<i32>(((vec2<f32>(x_50.x, x_50.y) - vec2<f32>(x_53, x_55)) * x_59));
+    let x_63 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_65 : i32 = v.y;
+    let x_67 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_70 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = v.x;
+    let x_76 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_80 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_63, f32(((x_65 - x_67) & x_70)), f32((x_74 & x_76)), x_80);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..810c81c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,56 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  int2 v = int2(0, 0);
+  const float x_39 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_39 < x_41)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_48 = float(x_47);
+    x_GLF_color = float4(x_48, x_48, x_48, x_48);
+  } else {
+    const float4 x_50 = gl_FragCoord;
+    const float x_53 = asfloat(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_55 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_59 = asfloat(x_6[2].x);
+    v = int2(((float2(x_50.x, x_50.y) - float2(x_53, x_55)) * x_59));
+    const float x_63 = asfloat(x_6[1].x);
+    const int x_65 = v.y;
+    const int x_67 = asint(x_8[1].x);
+    const int x_70 = asint(x_8[1].x);
+    const int x_74 = v.x;
+    const int x_76 = asint(x_8[1].x);
+    const float x_80 = asfloat(x_6[1].x);
+    x_GLF_color = float4(x_63, float(((x_65 - x_67) & x_70)), float((x_74 & x_76)), x_80);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4c716f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.msl
@@ -0,0 +1,66 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int2 v = 0;
+  float const x_39 = (*(tint_symbol_5)).y;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_39 < x_41)) {
+    int const x_47 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_48 = float(x_47);
+    *(tint_symbol_6) = float4(x_48, x_48, x_48, x_48);
+  } else {
+    float4 const x_50 = *(tint_symbol_5);
+    float const x_53 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_55 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_59 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    v = int2(((float2(x_50.x, x_50.y) - float2(x_53, x_55)) * x_59));
+    float const x_63 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    int const x_65 = v.y;
+    int const x_67 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_70 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_74 = v.x;
+    int const x_76 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_80 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_6) = float4(x_63, float(((x_65 - x_67) & x_70)), float((x_74 & x_76)), x_80);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..c4e8344
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,156 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 101
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %30 = OpConstantNull %v2int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_int = OpTypePointer Function %int
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %v = OpVariable %_ptr_Function_v2int Function %30
+         %33 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %34 = OpLoad %float %33
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpFOrdLessThan %bool %34 %39
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpCompositeConstruct %v4float %48 %48 %48 %48
+               OpStore %x_GLF_color %49
+               OpBranch %42
+         %44 = OpLabel
+         %50 = OpLoad %v4float %gl_FragCoord
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %57 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %58 = OpLoad %float %57
+         %61 = OpCompositeExtract %float %50 0
+         %62 = OpCompositeExtract %float %50 1
+         %63 = OpCompositeConstruct %v2float %61 %62
+         %64 = OpCompositeConstruct %v2float %53 %55
+         %65 = OpFSub %v2float %63 %64
+         %66 = OpVectorTimesScalar %v2float %65 %58
+         %59 = OpConvertFToS %v2int %66
+               OpStore %v %59
+         %67 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %68 = OpLoad %float %67
+         %70 = OpAccessChain %_ptr_Function_int %v %uint_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_int %v %uint_0
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %81 = OpLoad %float %80
+         %83 = OpISub %int %71 %73
+         %84 = OpBitwiseAnd %int %83 %75
+         %82 = OpConvertSToF %float %84
+         %86 = OpBitwiseAnd %int %77 %79
+         %85 = OpConvertSToF %float %86
+         %87 = OpCompositeConstruct %v4float %68 %82 %85 %81
+               OpStore %x_GLF_color %87
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %88
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %95 = OpLabel
+         %96 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %96
+         %97 = OpFunctionCall %void %main_1
+         %99 = OpLoad %v4float %x_GLF_color
+        %100 = OpCompositeConstruct %main_out %99
+         %98 = OpFunctionCall %void %tint_symbol_3 %100
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..9a549c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var v : vec2<i32>;
+  let x_39 : f32 = gl_FragCoord.y;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_39 < x_41)) {
+    let x_47 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_48 : f32 = f32(x_47);
+    x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+  } else {
+    let x_50 : vec4<f32> = gl_FragCoord;
+    let x_53 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_55 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_59 : f32 = x_6.x_GLF_uniform_float_values[2];
+    v = vec2<i32>(((vec2<f32>(x_50.x, x_50.y) - vec2<f32>(x_53, x_55)) * x_59));
+    let x_63 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_65 : i32 = v.y;
+    let x_67 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_70 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = v.x;
+    let x_76 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_80 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_63, f32(((x_65 - x_67) & x_70)), f32((x_74 & x_76)), x_80);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm
new file mode 100644
index 0000000..5f64bee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm
@@ -0,0 +1,72 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %_ ""
+               OpName %d "d"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%float_0_100000001 = OpConstant %float 0.100000001
+         %14 = OpConstantComposite %v2float %float_0_100000001 %float_0_100000001
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+%float_1_15927994 = OpConstant %float 1.15927994
+%float_0_64349997 = OpConstant %float 0.64349997
+         %24 = OpConstantComposite %v2float %float_1_15927994 %float_0_64349997
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %32 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %33 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function
+          %d = OpVariable %_ptr_Function_float Function
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %35 = OpLoad %int %34
+         %36 = OpCompositeConstruct %v2int %35 %int_3
+         %37 = OpExtInst %v2float %1 Ldexp %14 %36
+         %38 = OpExtInst %v2float %1 Acos %37
+               OpStore %v %38
+         %39 = OpLoad %v2float %v
+         %40 = OpExtInst %float %1 Distance %39 %24
+               OpStore %d %40
+         %41 = OpLoad %float %d
+         %42 = OpFOrdLessThan %bool %41 %float_0_00999999978
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpStore %_GLF_color %31
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %_GLF_color %32
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..7f591b1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,32 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v = float2(0.0f, 0.0f);
+  float d = 0.0f;
+  const int x_35 = asint(x_6[0].x);
+  v = acos(ldexp(float2(0.100000001f, 0.100000001f), int2(x_35, 3)));
+  d = distance(v, float2(1.159279943f, 0.64349997f));
+  if ((d < 0.01f)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..7cbea1f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 v = 0.0f;
+  float d = 0.0f;
+  int const x_35 = x_6.two;
+  v = acos(ldexp(float2(0.100000001f, 0.100000001f), int2(x_35, 3)));
+  float2 const x_39 = v;
+  d = distance(x_39, float2(1.159279943f, 0.64349997f));
+  float const x_41 = d;
+  if ((x_41 < 0.01f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..abe5509
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+         %29 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %d "d"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %19 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%float_0_100000001 = OpConstant %float 0.100000001
+         %32 = OpConstantComposite %v2float %float_0_100000001 %float_0_100000001
+      %v2int = OpTypeVector %int 2
+      %int_3 = OpConstant %int 3
+%float_1_15927994 = OpConstant %float 1.15927994
+%float_0_64349997 = OpConstant %float 0.64349997
+         %40 = OpConstantComposite %v2float %float_1_15927994 %float_0_64349997
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %50 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %51 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %19
+          %d = OpVariable %_ptr_Function_float Function %22
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %27 = OpLoad %int %26
+         %35 = OpCompositeConstruct %v2int %27 %int_3
+         %30 = OpExtInst %v2float %29 Ldexp %32 %35
+         %28 = OpExtInst %v2float %29 Acos %30
+               OpStore %v %28
+         %36 = OpLoad %v2float %v
+         %37 = OpExtInst %float %29 Distance %36 %40
+               OpStore %d %37
+         %41 = OpLoad %float %d
+         %43 = OpFOrdLessThan %bool %41 %float_0_00999999978
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpStore %x_GLF_color %50
+               OpBranch %45
+         %47 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %52
+%tint_symbol = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %59 = OpLabel
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..eb29614
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  two : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  var d : f32;
+  let x_35 : i32 = x_6.two;
+  v = acos(ldexp(vec2<f32>(0.100000001, 0.100000001), vec2<i32>(x_35, 3)));
+  let x_39 : vec2<f32> = v;
+  d = distance(x_39, vec2<f32>(1.159279943, 0.64349997));
+  let x_41 : f32 = d;
+  if ((x_41 < 0.01)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
new file mode 100644
index 0000000..eb29614
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  two : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  var d : f32;
+  let x_35 : i32 = x_6.two;
+  v = acos(ldexp(vec2<f32>(0.100000001, 0.100000001), vec2<i32>(x_35, 3)));
+  let x_39 : vec2<f32> = v;
+  d = distance(x_39, vec2<f32>(1.159279943, 0.64349997));
+  let x_41 : f32 = d;
+  if ((x_41 < 0.01)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7f591b1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,32 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v = float2(0.0f, 0.0f);
+  float d = 0.0f;
+  const int x_35 = asint(x_6[0].x);
+  v = acos(ldexp(float2(0.100000001f, 0.100000001f), int2(x_35, 3)));
+  d = distance(v, float2(1.159279943f, 0.64349997f));
+  if ((d < 0.01f)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..7cbea1f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 v = 0.0f;
+  float d = 0.0f;
+  int const x_35 = x_6.two;
+  v = acos(ldexp(float2(0.100000001f, 0.100000001f), int2(x_35, 3)));
+  float2 const x_39 = v;
+  d = distance(x_39, float2(1.159279943f, 0.64349997f));
+  float const x_41 = d;
+  if ((x_41 < 0.01f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..abe5509
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+         %29 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %d "d"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %19 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%float_0_100000001 = OpConstant %float 0.100000001
+         %32 = OpConstantComposite %v2float %float_0_100000001 %float_0_100000001
+      %v2int = OpTypeVector %int 2
+      %int_3 = OpConstant %int 3
+%float_1_15927994 = OpConstant %float 1.15927994
+%float_0_64349997 = OpConstant %float 0.64349997
+         %40 = OpConstantComposite %v2float %float_1_15927994 %float_0_64349997
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %50 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %51 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %19
+          %d = OpVariable %_ptr_Function_float Function %22
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %27 = OpLoad %int %26
+         %35 = OpCompositeConstruct %v2int %27 %int_3
+         %30 = OpExtInst %v2float %29 Ldexp %32 %35
+         %28 = OpExtInst %v2float %29 Acos %30
+               OpStore %v %28
+         %36 = OpLoad %v2float %v
+         %37 = OpExtInst %float %29 Distance %36 %40
+               OpStore %d %37
+         %41 = OpLoad %float %d
+         %43 = OpFOrdLessThan %bool %41 %float_0_00999999978
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpStore %x_GLF_color %50
+               OpBranch %45
+         %47 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %52
+%tint_symbol = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %59 = OpLabel
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..eb29614
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  two : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  var d : f32;
+  let x_35 : i32 = x_6.two;
+  v = acos(ldexp(vec2<f32>(0.100000001, 0.100000001), vec2<i32>(x_35, 3)));
+  let x_39 : vec2<f32> = v;
+  d = distance(x_39, vec2<f32>(1.159279943, 0.64349997));
+  let x_41 : f32 = d;
+  if ((x_41 < 0.01)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm
new file mode 100644
index 0000000..835b595
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm
@@ -0,0 +1,143 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %nan "nan"
+               OpName %undefined "undefined"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_10 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+        %int = OpTypeInt 32 1
+     %int_n1 = OpConstant %int -1
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+       %buf1 = OpTypeStruct %_arr_int_uint_10
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_8 = OpConstant %int 8
+       %main = OpFunction %void None %13
+         %40 = OpLabel
+        %nan = OpVariable %_ptr_Function_float Function
+  %undefined = OpVariable %_ptr_Function_v4float Function
+         %41 = OpBitcast %float %int_n1
+               OpStore %nan %41
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %44 %47 %50 %53
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_7
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %57 %60 %63 %66
+         %68 = OpLoad %float %nan
+         %69 = OpCompositeConstruct %v4float %68 %68 %68 %68
+         %70 = OpExtInst %v4float %1 FMix %54 %67 %69
+               OpStore %undefined %70
+         %71 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+         %74 = OpLoad %int %73
+         %75 = OpIEqual %bool %72 %74
+         %76 = OpLogicalNot %bool %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_float %undefined %uint_0
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %82 = OpLoad %float %81
+         %83 = OpFOrdGreaterThan %bool %80 %82
+               OpBranch %77
+         %77 = OpLabel
+         %84 = OpPhi %bool %75 %40 %83 %78
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %89
+         %91 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %98 = OpLoad %int %97
+         %99 = OpConvertSToF %float %98
+        %100 = OpCompositeConstruct %v4float %90 %93 %96 %99
+               OpStore %_GLF_color %100
+               OpBranch %85
+         %87 = OpLabel
+        %101 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+        %102 = OpLoad %int %101
+        %103 = OpConvertSToF %float %102
+        %104 = OpCompositeConstruct %v4float %103 %103 %103 %103
+               OpStore %_GLF_color %104
+               OpBranch %85
+         %85 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b8826cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,66 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[10];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float nan = 0.0f;
+  float4 undefined = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_83 = false;
+  bool x_84_phi = false;
+  nan = asfloat(-1);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_43 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const int x_46 = asint(x_7[1].x);
+  const int x_49 = asint(x_7[2].x);
+  const int x_52 = asint(x_7[3].x);
+  const int x_56 = asint(x_7[4].x);
+  const int x_59 = asint(x_7[5].x);
+  const int x_62 = asint(x_7[6].x);
+  const int x_65 = asint(x_7[7].x);
+  const float x_68 = nan;
+  undefined = lerp(float4(float(x_43), float(x_46), float(x_49), float(x_52)), float4(float(x_56), float(x_59), float(x_62), float(x_65)), float4(x_68, x_68, x_68, x_68));
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_72 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_74 = asint(x_7[9].x);
+  const bool x_75 = (x_72 == x_74);
+  x_84_phi = x_75;
+  if (!(x_75)) {
+    const float x_80 = undefined.x;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_82 = asfloat(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_83 = (x_80 > x_82);
+    x_84_phi = x_83;
+  }
+  if (x_84_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_89 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_92 = asint(x_7[8].x);
+    const int x_95 = asint(x_7[8].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_98 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_89), float(x_92), float(x_95), float(x_98));
+  } else {
+    const int x_102 = asint(x_7[8].x);
+    const float x_103 = float(x_102);
+    x_GLF_color = float4(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..95cc7fb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[10];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float nan = 0.0f;
+  float4 undefined = 0.0f;
+  bool x_83 = false;
+  bool x_84_phi = false;
+  nan = as_type<float>(-1);
+  int const x_43 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_46 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_49 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  int const x_52 = x_7.x_GLF_uniform_int_values.arr[3].el;
+  int const x_56 = x_7.x_GLF_uniform_int_values.arr[4].el;
+  int const x_59 = x_7.x_GLF_uniform_int_values.arr[5].el;
+  int const x_62 = x_7.x_GLF_uniform_int_values.arr[6].el;
+  int const x_65 = x_7.x_GLF_uniform_int_values.arr[7].el;
+  float const x_68 = nan;
+  undefined = mix(float4(float(x_43), float(x_46), float(x_49), float(x_52)), float4(float(x_56), float(x_59), float(x_62), float(x_65)), float4(x_68, x_68, x_68, x_68));
+  int const x_72 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_74 = x_7.x_GLF_uniform_int_values.arr[9].el;
+  bool const x_75 = (x_72 == x_74);
+  x_84_phi = x_75;
+  if (!(x_75)) {
+    float const x_80 = undefined.x;
+    float const x_82 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    x_83 = (x_80 > x_82);
+    x_84_phi = x_83;
+  }
+  bool const x_84 = x_84_phi;
+  if (x_84) {
+    int const x_89 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_92 = x_7.x_GLF_uniform_int_values.arr[8].el;
+    int const x_95 = x_7.x_GLF_uniform_int_values.arr[8].el;
+    int const x_98 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_89), float(x_92), float(x_95), float(x_98));
+  } else {
+    int const x_102 = x_7.x_GLF_uniform_int_values.arr[8].el;
+    float const x_103 = float(x_102);
+    *(tint_symbol_4) = float4(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a076bbb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,187 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 126
+; Schema: 0
+               OpCapability Shader
+         %64 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %nan "nan"
+               OpName %undefined "undefined"
+               OpName %x_83 "x_83"
+               OpName %x_84_phi "x_84_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+       %buf1 = OpTypeStruct %_arr_int_uint_10
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+     %int_n1 = OpConstant %int -1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_9 = OpConstant %int 9
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float
+        %114 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+        %nan = OpVariable %_ptr_Function_float Function %26
+  %undefined = OpVariable %_ptr_Function_v4float Function %17
+       %x_83 = OpVariable %_ptr_Function_bool Function %32
+   %x_84_phi = OpVariable %_ptr_Function_bool Function %32
+         %34 = OpBitcast %float %int_n1
+               OpStore %nan %34
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %48 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_3
+         %49 = OpLoad %int %48
+         %51 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_4
+         %52 = OpLoad %int %51
+         %54 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_5
+         %55 = OpLoad %int %54
+         %57 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_6
+         %58 = OpLoad %int %57
+         %60 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_7
+         %61 = OpLoad %int %60
+         %62 = OpLoad %float %nan
+         %65 = OpConvertSToF %float %40
+         %66 = OpConvertSToF %float %43
+         %67 = OpConvertSToF %float %46
+         %68 = OpConvertSToF %float %49
+         %69 = OpCompositeConstruct %v4float %65 %66 %67 %68
+         %70 = OpConvertSToF %float %52
+         %71 = OpConvertSToF %float %55
+         %72 = OpConvertSToF %float %58
+         %73 = OpConvertSToF %float %61
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+         %75 = OpCompositeConstruct %v4float %62 %62 %62 %62
+         %63 = OpExtInst %v4float %64 FMix %69 %74 %75
+               OpStore %undefined %63
+         %76 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_9
+         %80 = OpLoad %int %79
+         %81 = OpIEqual %bool %77 %80
+               OpStore %x_84_phi %81
+         %82 = OpLogicalNot %bool %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpAccessChain %_ptr_Function_float %undefined %uint_0
+         %86 = OpLoad %float %85
+         %88 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %89 = OpLoad %float %88
+         %90 = OpFOrdGreaterThan %bool %86 %89
+               OpStore %x_83 %90
+         %91 = OpLoad %bool %x_83
+               OpStore %x_84_phi %91
+               OpBranch %83
+         %83 = OpLabel
+         %92 = OpLoad %bool %x_84_phi
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %97 = OpLoad %int %96
+         %99 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_8
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_8
+        %102 = OpLoad %int %101
+        %103 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+        %104 = OpLoad %int %103
+        %105 = OpConvertSToF %float %97
+        %106 = OpConvertSToF %float %100
+        %107 = OpConvertSToF %float %102
+        %108 = OpConvertSToF %float %104
+        %109 = OpCompositeConstruct %v4float %105 %106 %107 %108
+               OpStore %x_GLF_color %109
+               OpBranch %93
+         %95 = OpLabel
+        %110 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_8
+        %111 = OpLoad %int %110
+        %112 = OpConvertSToF %float %111
+        %113 = OpCompositeConstruct %v4float %112 %112 %112 %112
+               OpStore %x_GLF_color %113
+               OpBranch %93
+         %93 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %114
+%tint_symbol = OpFunctionParameter %main_out
+        %118 = OpLabel
+        %119 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %119
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %121 = OpLabel
+        %122 = OpFunctionCall %void %main_1
+        %124 = OpLoad %v4float %x_GLF_color
+        %125 = OpCompositeConstruct %main_out %124
+        %123 = OpFunctionCall %void %tint_symbol_2 %125
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a59f8d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 10>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var nan : f32;
+  var undefined : vec4<f32>;
+  var x_83 : bool;
+  var x_84_phi : bool;
+  nan = bitcast<f32>(-1);
+  let x_43 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_46 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+  let x_52 : i32 = x_7.x_GLF_uniform_int_values[3];
+  let x_56 : i32 = x_7.x_GLF_uniform_int_values[4];
+  let x_59 : i32 = x_7.x_GLF_uniform_int_values[5];
+  let x_62 : i32 = x_7.x_GLF_uniform_int_values[6];
+  let x_65 : i32 = x_7.x_GLF_uniform_int_values[7];
+  let x_68 : f32 = nan;
+  undefined = mix(vec4<f32>(f32(x_43), f32(x_46), f32(x_49), f32(x_52)), vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65)), vec4<f32>(x_68, x_68, x_68, x_68));
+  let x_72 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_74 : i32 = x_7.x_GLF_uniform_int_values[9];
+  let x_75 : bool = (x_72 == x_74);
+  x_84_phi = x_75;
+  if (!(x_75)) {
+    let x_80 : f32 = undefined.x;
+    let x_82 : f32 = x_9.x_GLF_uniform_float_values[0];
+    x_83 = (x_80 > x_82);
+    x_84_phi = x_83;
+  }
+  let x_84 : bool = x_84_phi;
+  if (x_84) {
+    let x_89 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_92 : i32 = x_7.x_GLF_uniform_int_values[8];
+    let x_95 : i32 = x_7.x_GLF_uniform_int_values[8];
+    let x_98 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_89), f32(x_92), f32(x_95), f32(x_98));
+  } else {
+    let x_102 : i32 = x_7.x_GLF_uniform_int_values[8];
+    let x_103 : f32 = f32(x_102);
+    x_GLF_color = vec4<f32>(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
new file mode 100644
index 0000000..a59f8d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 10>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var nan : f32;
+  var undefined : vec4<f32>;
+  var x_83 : bool;
+  var x_84_phi : bool;
+  nan = bitcast<f32>(-1);
+  let x_43 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_46 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+  let x_52 : i32 = x_7.x_GLF_uniform_int_values[3];
+  let x_56 : i32 = x_7.x_GLF_uniform_int_values[4];
+  let x_59 : i32 = x_7.x_GLF_uniform_int_values[5];
+  let x_62 : i32 = x_7.x_GLF_uniform_int_values[6];
+  let x_65 : i32 = x_7.x_GLF_uniform_int_values[7];
+  let x_68 : f32 = nan;
+  undefined = mix(vec4<f32>(f32(x_43), f32(x_46), f32(x_49), f32(x_52)), vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65)), vec4<f32>(x_68, x_68, x_68, x_68));
+  let x_72 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_74 : i32 = x_7.x_GLF_uniform_int_values[9];
+  let x_75 : bool = (x_72 == x_74);
+  x_84_phi = x_75;
+  if (!(x_75)) {
+    let x_80 : f32 = undefined.x;
+    let x_82 : f32 = x_9.x_GLF_uniform_float_values[0];
+    x_83 = (x_80 > x_82);
+    x_84_phi = x_83;
+  }
+  let x_84 : bool = x_84_phi;
+  if (x_84) {
+    let x_89 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_92 : i32 = x_7.x_GLF_uniform_int_values[8];
+    let x_95 : i32 = x_7.x_GLF_uniform_int_values[8];
+    let x_98 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_89), f32(x_92), f32(x_95), f32(x_98));
+  } else {
+    let x_102 : i32 = x_7.x_GLF_uniform_int_values[8];
+    let x_103 : f32 = f32(x_102);
+    x_GLF_color = vec4<f32>(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b8826cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,66 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[10];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float nan = 0.0f;
+  float4 undefined = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_83 = false;
+  bool x_84_phi = false;
+  nan = asfloat(-1);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_43 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const int x_46 = asint(x_7[1].x);
+  const int x_49 = asint(x_7[2].x);
+  const int x_52 = asint(x_7[3].x);
+  const int x_56 = asint(x_7[4].x);
+  const int x_59 = asint(x_7[5].x);
+  const int x_62 = asint(x_7[6].x);
+  const int x_65 = asint(x_7[7].x);
+  const float x_68 = nan;
+  undefined = lerp(float4(float(x_43), float(x_46), float(x_49), float(x_52)), float4(float(x_56), float(x_59), float(x_62), float(x_65)), float4(x_68, x_68, x_68, x_68));
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_72 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_74 = asint(x_7[9].x);
+  const bool x_75 = (x_72 == x_74);
+  x_84_phi = x_75;
+  if (!(x_75)) {
+    const float x_80 = undefined.x;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_82 = asfloat(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_83 = (x_80 > x_82);
+    x_84_phi = x_83;
+  }
+  if (x_84_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_89 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_92 = asint(x_7[8].x);
+    const int x_95 = asint(x_7[8].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_98 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_89), float(x_92), float(x_95), float(x_98));
+  } else {
+    const int x_102 = asint(x_7[8].x);
+    const float x_103 = float(x_102);
+    x_GLF_color = float4(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..95cc7fb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[10];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float nan = 0.0f;
+  float4 undefined = 0.0f;
+  bool x_83 = false;
+  bool x_84_phi = false;
+  nan = as_type<float>(-1);
+  int const x_43 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_46 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_49 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  int const x_52 = x_7.x_GLF_uniform_int_values.arr[3].el;
+  int const x_56 = x_7.x_GLF_uniform_int_values.arr[4].el;
+  int const x_59 = x_7.x_GLF_uniform_int_values.arr[5].el;
+  int const x_62 = x_7.x_GLF_uniform_int_values.arr[6].el;
+  int const x_65 = x_7.x_GLF_uniform_int_values.arr[7].el;
+  float const x_68 = nan;
+  undefined = mix(float4(float(x_43), float(x_46), float(x_49), float(x_52)), float4(float(x_56), float(x_59), float(x_62), float(x_65)), float4(x_68, x_68, x_68, x_68));
+  int const x_72 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_74 = x_7.x_GLF_uniform_int_values.arr[9].el;
+  bool const x_75 = (x_72 == x_74);
+  x_84_phi = x_75;
+  if (!(x_75)) {
+    float const x_80 = undefined.x;
+    float const x_82 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    x_83 = (x_80 > x_82);
+    x_84_phi = x_83;
+  }
+  bool const x_84 = x_84_phi;
+  if (x_84) {
+    int const x_89 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_92 = x_7.x_GLF_uniform_int_values.arr[8].el;
+    int const x_95 = x_7.x_GLF_uniform_int_values.arr[8].el;
+    int const x_98 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_89), float(x_92), float(x_95), float(x_98));
+  } else {
+    int const x_102 = x_7.x_GLF_uniform_int_values.arr[8].el;
+    float const x_103 = float(x_102);
+    *(tint_symbol_4) = float4(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..a076bbb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,187 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 126
+; Schema: 0
+               OpCapability Shader
+         %64 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %nan "nan"
+               OpName %undefined "undefined"
+               OpName %x_83 "x_83"
+               OpName %x_84_phi "x_84_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+       %buf1 = OpTypeStruct %_arr_int_uint_10
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+     %int_n1 = OpConstant %int -1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_9 = OpConstant %int 9
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float
+        %114 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+        %nan = OpVariable %_ptr_Function_float Function %26
+  %undefined = OpVariable %_ptr_Function_v4float Function %17
+       %x_83 = OpVariable %_ptr_Function_bool Function %32
+   %x_84_phi = OpVariable %_ptr_Function_bool Function %32
+         %34 = OpBitcast %float %int_n1
+               OpStore %nan %34
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %48 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_3
+         %49 = OpLoad %int %48
+         %51 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_4
+         %52 = OpLoad %int %51
+         %54 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_5
+         %55 = OpLoad %int %54
+         %57 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_6
+         %58 = OpLoad %int %57
+         %60 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_7
+         %61 = OpLoad %int %60
+         %62 = OpLoad %float %nan
+         %65 = OpConvertSToF %float %40
+         %66 = OpConvertSToF %float %43
+         %67 = OpConvertSToF %float %46
+         %68 = OpConvertSToF %float %49
+         %69 = OpCompositeConstruct %v4float %65 %66 %67 %68
+         %70 = OpConvertSToF %float %52
+         %71 = OpConvertSToF %float %55
+         %72 = OpConvertSToF %float %58
+         %73 = OpConvertSToF %float %61
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+         %75 = OpCompositeConstruct %v4float %62 %62 %62 %62
+         %63 = OpExtInst %v4float %64 FMix %69 %74 %75
+               OpStore %undefined %63
+         %76 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_9
+         %80 = OpLoad %int %79
+         %81 = OpIEqual %bool %77 %80
+               OpStore %x_84_phi %81
+         %82 = OpLogicalNot %bool %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpAccessChain %_ptr_Function_float %undefined %uint_0
+         %86 = OpLoad %float %85
+         %88 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %89 = OpLoad %float %88
+         %90 = OpFOrdGreaterThan %bool %86 %89
+               OpStore %x_83 %90
+         %91 = OpLoad %bool %x_83
+               OpStore %x_84_phi %91
+               OpBranch %83
+         %83 = OpLabel
+         %92 = OpLoad %bool %x_84_phi
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %97 = OpLoad %int %96
+         %99 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_8
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_8
+        %102 = OpLoad %int %101
+        %103 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+        %104 = OpLoad %int %103
+        %105 = OpConvertSToF %float %97
+        %106 = OpConvertSToF %float %100
+        %107 = OpConvertSToF %float %102
+        %108 = OpConvertSToF %float %104
+        %109 = OpCompositeConstruct %v4float %105 %106 %107 %108
+               OpStore %x_GLF_color %109
+               OpBranch %93
+         %95 = OpLabel
+        %110 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_8
+        %111 = OpLoad %int %110
+        %112 = OpConvertSToF %float %111
+        %113 = OpCompositeConstruct %v4float %112 %112 %112 %112
+               OpStore %x_GLF_color %113
+               OpBranch %93
+         %93 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %114
+%tint_symbol = OpFunctionParameter %main_out
+        %118 = OpLabel
+        %119 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %119
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %121 = OpLabel
+        %122 = OpFunctionCall %void %main_1
+        %124 = OpLoad %v4float %x_GLF_color
+        %125 = OpCompositeConstruct %main_out %124
+        %123 = OpFunctionCall %void %tint_symbol_2 %125
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a59f8d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 10>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var nan : f32;
+  var undefined : vec4<f32>;
+  var x_83 : bool;
+  var x_84_phi : bool;
+  nan = bitcast<f32>(-1);
+  let x_43 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_46 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+  let x_52 : i32 = x_7.x_GLF_uniform_int_values[3];
+  let x_56 : i32 = x_7.x_GLF_uniform_int_values[4];
+  let x_59 : i32 = x_7.x_GLF_uniform_int_values[5];
+  let x_62 : i32 = x_7.x_GLF_uniform_int_values[6];
+  let x_65 : i32 = x_7.x_GLF_uniform_int_values[7];
+  let x_68 : f32 = nan;
+  undefined = mix(vec4<f32>(f32(x_43), f32(x_46), f32(x_49), f32(x_52)), vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65)), vec4<f32>(x_68, x_68, x_68, x_68));
+  let x_72 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_74 : i32 = x_7.x_GLF_uniform_int_values[9];
+  let x_75 : bool = (x_72 == x_74);
+  x_84_phi = x_75;
+  if (!(x_75)) {
+    let x_80 : f32 = undefined.x;
+    let x_82 : f32 = x_9.x_GLF_uniform_float_values[0];
+    x_83 = (x_80 > x_82);
+    x_84_phi = x_83;
+  }
+  let x_84 : bool = x_84_phi;
+  if (x_84) {
+    let x_89 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_92 : i32 = x_7.x_GLF_uniform_int_values[8];
+    let x_95 : i32 = x_7.x_GLF_uniform_int_values[8];
+    let x_98 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_89), f32(x_92), f32(x_95), f32(x_98));
+  } else {
+    let x_102 : i32 = x_7.x_GLF_uniform_int_values[8];
+    let x_103 : f32 = f32(x_102);
+    x_GLF_color = vec4<f32>(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm
new file mode 100644
index 0000000..995d851
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm
@@ -0,0 +1,114 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %undefined "undefined"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 RelaxedPrecision
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_5 = OpConstant %float 5
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %21
+         %39 = OpLabel
+  %undefined = OpVariable %_ptr_Function_float Function
+         %40 = OpFMod %float %float_5 %float_0
+               OpStore %undefined %40
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %10 = OpLoad %int %41
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %11 = OpLoad %int %42
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %12 = OpLoad %int %43
+         %13 = OpIAdd %int %11 %12
+         %44 = OpIEqual %bool %10 %13
+         %45 = OpLogicalNot %bool %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+         %48 = OpLoad %float %undefined
+         %49 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpFOrdGreaterThan %bool %48 %50
+               OpBranch %46
+         %46 = OpLabel
+         %52 = OpPhi %bool %44 %39 %51 %47
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %15 = OpLoad %int %56
+         %57 = OpConvertSToF %float %15
+         %58 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %16 = OpLoad %int %58
+         %59 = OpConvertSToF %float %16
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %17 = OpLoad %int %60
+         %61 = OpConvertSToF %float %17
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %18 = OpLoad %int %62
+         %63 = OpConvertSToF %float %18
+         %64 = OpCompositeConstruct %v4float %57 %59 %61 %63
+               OpStore %_GLF_color %64
+               OpBranch %53
+         %55 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %19 = OpLoad %int %65
+         %66 = OpConvertSToF %float %19
+         %67 = OpCompositeConstruct %v4float %66 %66 %66 %66
+               OpStore %_GLF_color %67
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..84838ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,56 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float undefined = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  undefined = (5.0f % 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_10 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_11 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_12 = asint(x_6[1].x);
+  const bool x_44 = (x_10 == (x_11 + x_12));
+  x_52_phi = x_44;
+  if (!(x_44)) {
+    const float x_48 = undefined;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_50 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_51 = (x_48 > x_50);
+    x_52_phi = x_51;
+  }
+  if (x_52_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_15 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_16 = asint(x_6[1].x);
+    const int x_17 = asint(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_18 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_15), float(x_16), float(x_17), float(x_18));
+  } else {
+    const int x_19 = asint(x_6[1].x);
+    const float x_66 = float(x_19);
+    x_GLF_color = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.msl
new file mode 100755
index 0000000..ad2c3ca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float undefined = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  undefined = (5.0f % 0.0f);
+  int const x_10 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_11 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_12 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  bool const x_44 = (x_10 == (x_11 + x_12));
+  x_52_phi = x_44;
+  if (!(x_44)) {
+    float const x_48 = undefined;
+    float const x_50 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    x_51 = (x_48 > x_50);
+    x_52_phi = x_51;
+  }
+  bool const x_52 = x_52_phi;
+  if (x_52) {
+    int const x_15 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_16 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_17 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_18 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_15), float(x_16), float(x_17), float(x_18));
+  } else {
+    int const x_19 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_66 = float(x_19);
+    *(tint_symbol_4) = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\u348.0.metal:35:21: error: invalid operands to binary expression ('float' and 'float')
+  undefined = (5.0f % 0.0f);
+               ~~~~ ^ ~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..042259a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,148 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %undefined "undefined"
+               OpName %x_51 "x_51"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+    %float_5 = OpConstant %float 5
+    %float_0 = OpConstant %float 0
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+  %undefined = OpVariable %_ptr_Function_float Function %26
+       %x_51 = OpVariable %_ptr_Function_bool Function %30
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %30
+         %34 = OpFMod %float %float_5 %float_0
+               OpStore %undefined %34
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpIAdd %int %41 %44
+         %46 = OpIEqual %bool %39 %45
+               OpStore %x_52_phi %46
+         %47 = OpLogicalNot %bool %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %50 = OpLoad %float %undefined
+         %52 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdGreaterThan %bool %50 %53
+               OpStore %x_51 %54
+         %55 = OpLoad %bool %x_51
+               OpStore %x_52_phi %55
+               OpBranch %48
+         %48 = OpLabel
+         %56 = OpLoad %bool %x_52_phi
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ee6f6f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var undefined : f32;
+  var x_51 : bool;
+  var x_52_phi : bool;
+  undefined = (5.0 % 0.0);
+  let x_10 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_11 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_12 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_44 : bool = (x_10 == (x_11 + x_12));
+  x_52_phi = x_44;
+  if (!(x_44)) {
+    let x_48 : f32 = undefined;
+    let x_50 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_51 = (x_48 > x_50);
+    x_52_phi = x_51;
+  }
+  let x_52 : bool = x_52_phi;
+  if (x_52) {
+    let x_15 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_16 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_17 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_18 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_15), f32(x_16), f32(x_17), f32(x_18));
+  } else {
+    let x_19 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : f32 = f32(x_19);
+    x_GLF_color = vec4<f32>(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
new file mode 100644
index 0000000..ee6f6f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var undefined : f32;
+  var x_51 : bool;
+  var x_52_phi : bool;
+  undefined = (5.0 % 0.0);
+  let x_10 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_11 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_12 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_44 : bool = (x_10 == (x_11 + x_12));
+  x_52_phi = x_44;
+  if (!(x_44)) {
+    let x_48 : f32 = undefined;
+    let x_50 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_51 = (x_48 > x_50);
+    x_52_phi = x_51;
+  }
+  let x_52 : bool = x_52_phi;
+  if (x_52) {
+    let x_15 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_16 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_17 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_18 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_15), f32(x_16), f32(x_17), f32(x_18));
+  } else {
+    let x_19 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : f32 = f32(x_19);
+    x_GLF_color = vec4<f32>(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..84838ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,56 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float undefined = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  undefined = (5.0f % 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_10 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_11 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_12 = asint(x_6[1].x);
+  const bool x_44 = (x_10 == (x_11 + x_12));
+  x_52_phi = x_44;
+  if (!(x_44)) {
+    const float x_48 = undefined;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_50 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_51 = (x_48 > x_50);
+    x_52_phi = x_51;
+  }
+  if (x_52_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_15 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_16 = asint(x_6[1].x);
+    const int x_17 = asint(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_18 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_15), float(x_16), float(x_17), float(x_18));
+  } else {
+    const int x_19 = asint(x_6[1].x);
+    const float x_66 = float(x_19);
+    x_GLF_color = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.msl
new file mode 100755
index 0000000..201dc73
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.msl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float undefined = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  undefined = (5.0f % 0.0f);
+  int const x_10 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_11 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_12 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  bool const x_44 = (x_10 == (x_11 + x_12));
+  x_52_phi = x_44;
+  if (!(x_44)) {
+    float const x_48 = undefined;
+    float const x_50 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    x_51 = (x_48 > x_50);
+    x_52_phi = x_51;
+  }
+  bool const x_52 = x_52_phi;
+  if (x_52) {
+    int const x_15 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_16 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_17 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_18 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_15), float(x_16), float(x_17), float(x_18));
+  } else {
+    int const x_19 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_66 = float(x_19);
+    *(tint_symbol_4) = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\u5b0.0.metal:35:21: error: invalid operands to binary expression ('float' and 'float')
+  undefined = (5.0f % 0.0f);
+               ~~~~ ^ ~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..042259a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,148 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %undefined "undefined"
+               OpName %x_51 "x_51"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+    %float_5 = OpConstant %float 5
+    %float_0 = OpConstant %float 0
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+  %undefined = OpVariable %_ptr_Function_float Function %26
+       %x_51 = OpVariable %_ptr_Function_bool Function %30
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %30
+         %34 = OpFMod %float %float_5 %float_0
+               OpStore %undefined %34
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpIAdd %int %41 %44
+         %46 = OpIEqual %bool %39 %45
+               OpStore %x_52_phi %46
+         %47 = OpLogicalNot %bool %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %50 = OpLoad %float %undefined
+         %52 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdGreaterThan %bool %50 %53
+               OpStore %x_51 %54
+         %55 = OpLoad %bool %x_51
+               OpStore %x_52_phi %55
+               OpBranch %48
+         %48 = OpLabel
+         %56 = OpLoad %bool %x_52_phi
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ee6f6f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var undefined : f32;
+  var x_51 : bool;
+  var x_52_phi : bool;
+  undefined = (5.0 % 0.0);
+  let x_10 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_11 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_12 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_44 : bool = (x_10 == (x_11 + x_12));
+  x_52_phi = x_44;
+  if (!(x_44)) {
+    let x_48 : f32 = undefined;
+    let x_50 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_51 = (x_48 > x_50);
+    x_52_phi = x_51;
+  }
+  let x_52 : bool = x_52_phi;
+  if (x_52) {
+    let x_15 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_16 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_17 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_18 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_15), f32(x_16), f32(x_17), f32(x_18));
+  } else {
+    let x_19 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : f32 = f32(x_19);
+    x_GLF_color = vec4<f32>(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm
new file mode 100644
index 0000000..00788a0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm
@@ -0,0 +1,147 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f0 "f0"
+               OpName %s1 "s1"
+               OpName %f1 "f1"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+   %float_10 = OpConstant %float 10
+%float_9_99999997en07 = OpConstant %float 9.99999997e-07
+%float_0x1_b38fb8pn127 = OpConstant %float 0x1.b38fb8p-127
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+%float_0_99000001 = OpConstant %float 0.99000001
+%float_0_00999999978 = OpConstant %float 0.00999999978
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function
+         %s1 = OpVariable %_ptr_Function_float Function
+         %f1 = OpVariable %_ptr_Function_float Function
+         %37 = OpFMod %float %float_10 %float_9_99999997en07
+               OpStore %f0 %37
+               OpStore %s1 %float_0x1_b38fb8pn127
+         %38 = OpLoad %float %s1
+         %39 = OpFOrdEqual %bool %38 %float_0
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+               OpStore %s1 %float_1
+               OpBranch %40
+         %40 = OpLabel
+         %42 = OpLoad %float %s1
+         %43 = OpFMod %float %float_10 %42
+               OpStore %f1 %43
+         %44 = OpLoad %float %f1
+         %45 = OpIsInf %bool %44
+         %46 = OpLoad %float %s1
+         %47 = OpFOrdEqual %bool %46 %float_1
+         %48 = OpLogicalOr %bool %45 %47
+         %49 = OpLogicalNot %bool %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+         %52 = OpLoad %float %f0
+         %53 = OpLoad %float %f1
+         %54 = OpFOrdEqual %bool %52 %53
+         %55 = OpLogicalNot %bool %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpLoad %float %f0
+         %59 = OpFOrdGreaterThan %bool %58 %float_0_99000001
+         %60 = OpLoad %float %f0
+         %61 = OpFOrdLessThan %bool %60 %float_0_00999999978
+         %62 = OpLogicalAnd %bool %59 %61
+               OpBranch %56
+         %56 = OpLabel
+         %63 = OpPhi %bool %54 %51 %62 %57
+         %64 = OpLogicalNot %bool %63
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+         %67 = OpLoad %float %f1
+         %68 = OpFOrdGreaterThan %bool %67 %float_0_99000001
+         %69 = OpLoad %float %f1
+         %70 = OpFOrdLessThan %bool %69 %float_0_00999999978
+         %71 = OpLogicalAnd %bool %68 %70
+               OpBranch %65
+         %65 = OpLabel
+         %72 = OpPhi %bool %63 %56 %71 %66
+               OpBranch %50
+         %50 = OpLabel
+         %73 = OpPhi %bool %48 %40 %72 %65
+         %74 = OpLoad %float %f1
+         %75 = OpFOrdEqual %bool %74 %float_10
+         %76 = OpLogicalOr %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %87
+         %89 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %90
+         %92 = OpCompositeConstruct %v4float %82 %85 %88 %91
+               OpStore %_GLF_color %92
+               OpBranch %77
+         %79 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpCompositeConstruct %v4float %95 %95 %95 %95
+               OpStore %_GLF_color %96
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..134d1e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,88 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+
+void main_1() {
+  float f0 = 0.0f;
+  float s1 = 0.0f;
+  float f1 = 0.0f;
+  bool x_72 = false;
+  bool x_73_phi = false;
+  f0 = (10.0f % 0.000001f);
+  s1 = 9.99999935e-39f;
+  if ((s1 == 0.0f)) {
+    s1 = 1.0f;
+  }
+  bool x_62 = false;
+  bool x_71 = false;
+  bool x_63_phi = false;
+  bool x_72_phi = false;
+  f1 = (10.0f % s1);
+  bool tint_tmp = isinf(f1);
+  if (!tint_tmp) {
+    tint_tmp = (s1 == 1.0f);
+  }
+  const bool x_48 = (tint_tmp);
+  x_73_phi = x_48;
+  if (!(x_48)) {
+    const bool x_54 = (f0 == f1);
+    x_63_phi = x_54;
+    if (!(x_54)) {
+      bool tint_tmp_1 = (f0 > 0.99000001f);
+      if (tint_tmp_1) {
+        tint_tmp_1 = (f0 < 0.01f);
+      }
+      x_62 = (tint_tmp_1);
+      x_63_phi = x_62;
+    }
+    const bool x_63 = x_63_phi;
+    x_72_phi = x_63;
+    if (!(x_63)) {
+      bool tint_tmp_2 = (f1 > 0.99000001f);
+      if (tint_tmp_2) {
+        tint_tmp_2 = (f1 < 0.01f);
+      }
+      x_71 = (tint_tmp_2);
+      x_72_phi = x_71;
+    }
+    x_72 = x_72_phi;
+    x_73_phi = x_72;
+  }
+  bool tint_tmp_3 = x_73_phi;
+  if (!tint_tmp_3) {
+    tint_tmp_3 = (f1 == 10.0f);
+  }
+  if ((tint_tmp_3)) {
+    const int x_81 = asint(x_8[1].x);
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_84 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_87 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_90 = asint(x_8[1].x);
+    x_GLF_color = float4(float(x_81), float(x_84), float(x_87), float(x_90));
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_94 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_95 = float(x_94);
+    x_GLF_color = float4(x_95, x_95, x_95, x_95);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.msl
new file mode 100755
index 0000000..b44e5d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.msl
@@ -0,0 +1,108 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float f0 = 0.0f;
+  float s1 = 0.0f;
+  float f1 = 0.0f;
+  bool x_72 = false;
+  bool x_73_phi = false;
+  f0 = (10.0f % 0.000001f);
+  s1 = 9.99999935e-39f;
+  float const x_38 = s1;
+  if ((x_38 == 0.0f)) {
+    s1 = 1.0f;
+  }
+  bool x_62 = false;
+  bool x_71 = false;
+  bool x_63_phi = false;
+  bool x_72_phi = false;
+  float const x_42 = s1;
+  f1 = (10.0f % x_42);
+  float const x_44 = f1;
+  float const x_46 = s1;
+  bool const x_48 = (isinf(x_44) || (x_46 == 1.0f));
+  x_73_phi = x_48;
+  if (!(x_48)) {
+    float const x_52 = f0;
+    float const x_53 = f1;
+    bool const x_54 = (x_52 == x_53);
+    x_63_phi = x_54;
+    if (!(x_54)) {
+      float const x_58 = f0;
+      float const x_60 = f0;
+      x_62 = ((x_58 > 0.99000001f) && (x_60 < 0.01f));
+      x_63_phi = x_62;
+    }
+    bool const x_63 = x_63_phi;
+    x_72_phi = x_63;
+    if (!(x_63)) {
+      float const x_67 = f1;
+      float const x_69 = f1;
+      x_71 = ((x_67 > 0.99000001f) && (x_69 < 0.01f));
+      x_72_phi = x_71;
+    }
+    x_72 = x_72_phi;
+    x_73_phi = x_72;
+  }
+  bool const x_73 = x_73_phi;
+  float const x_74 = f1;
+  if ((x_73 || (x_74 == 10.0f))) {
+    int const x_81 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_84 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_87 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_90 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_81), float(x_84), float(x_87), float(x_90));
+  } else {
+    int const x_94 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_95 = float(x_94);
+    *(tint_symbol_4) = float4(x_95, x_95, x_95, x_95);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\u3v4.0.metal:37:15: error: invalid operands to binary expression ('float' and 'float')
+  f0 = (10.0f % 0.000001f);
+        ~~~~~ ^ ~~~~~~~~~
+T:\tmp\u3v4.0.metal:48:15: error: invalid operands to binary expression ('float' and 'const float')
+  f1 = (10.0f % x_42);
+        ~~~~~ ^ ~~~~
+2 errors generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f597477
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,227 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 132
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f0 "f0"
+               OpName %s1 "s1"
+               OpName %f1 "f1"
+               OpName %x_72 "x_72"
+               OpName %x_73_phi "x_73_phi"
+               OpName %x_62 "x_62"
+               OpName %x_71 "x_71"
+               OpName %x_63_phi "x_63_phi"
+               OpName %x_72_phi "x_72_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+   %float_10 = OpConstant %float 10
+%float_9_99999997en07 = OpConstant %float 9.99999997e-07
+%float_0x1_b38fb8pn127 = OpConstant %float 0x1.b38fb8p-127
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+%float_0_99000001 = OpConstant %float 0.99000001
+%float_0_00999999978 = OpConstant %float 0.00999999978
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+        %120 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function %26
+         %s1 = OpVariable %_ptr_Function_float Function %26
+         %f1 = OpVariable %_ptr_Function_float Function %26
+       %x_72 = OpVariable %_ptr_Function_bool Function %32
+   %x_73_phi = OpVariable %_ptr_Function_bool Function %32
+       %x_62 = OpVariable %_ptr_Function_bool Function %32
+       %x_71 = OpVariable %_ptr_Function_bool Function %32
+   %x_63_phi = OpVariable %_ptr_Function_bool Function %32
+   %x_72_phi = OpVariable %_ptr_Function_bool Function %32
+         %36 = OpFMod %float %float_10 %float_9_99999997en07
+               OpStore %f0 %36
+               OpStore %s1 %float_0x1_b38fb8pn127
+         %38 = OpLoad %float %s1
+         %40 = OpFOrdEqual %bool %38 %float_0
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpStore %s1 %float_1
+               OpBranch %41
+         %41 = OpLabel
+         %48 = OpLoad %float %s1
+         %49 = OpFMod %float %float_10 %48
+               OpStore %f1 %49
+         %50 = OpLoad %float %f1
+         %51 = OpLoad %float %s1
+         %52 = OpIsInf %bool %50
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %53 %54
+         %54 = OpLabel
+         %55 = OpFOrdEqual %bool %51 %float_1
+               OpBranch %53
+         %53 = OpLabel
+         %56 = OpPhi %bool %52 %41 %55 %54
+               OpStore %x_73_phi %56
+         %57 = OpLogicalNot %bool %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpLoad %float %f0
+         %61 = OpLoad %float %f1
+         %62 = OpFOrdEqual %bool %60 %61
+               OpStore %x_63_phi %62
+         %63 = OpLogicalNot %bool %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+         %66 = OpLoad %float %f0
+         %67 = OpLoad %float %f0
+         %69 = OpFOrdGreaterThan %bool %66 %float_0_99000001
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %73 = OpFOrdLessThan %bool %67 %float_0_00999999978
+               OpBranch %70
+         %70 = OpLabel
+         %74 = OpPhi %bool %69 %65 %73 %71
+               OpStore %x_62 %74
+         %75 = OpLoad %bool %x_62
+               OpStore %x_63_phi %75
+               OpBranch %64
+         %64 = OpLabel
+         %76 = OpLoad %bool %x_63_phi
+               OpStore %x_72_phi %76
+         %77 = OpLogicalNot %bool %76
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+         %80 = OpLoad %float %f1
+         %81 = OpLoad %float %f1
+         %82 = OpFOrdGreaterThan %bool %80 %float_0_99000001
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpFOrdLessThan %bool %81 %float_0_00999999978
+               OpBranch %83
+         %83 = OpLabel
+         %86 = OpPhi %bool %82 %79 %85 %84
+               OpStore %x_71 %86
+         %87 = OpLoad %bool %x_71
+               OpStore %x_72_phi %87
+               OpBranch %78
+         %78 = OpLabel
+         %88 = OpLoad %bool %x_72_phi
+               OpStore %x_72 %88
+         %89 = OpLoad %bool %x_72
+               OpStore %x_73_phi %89
+               OpBranch %58
+         %58 = OpLabel
+         %90 = OpLoad %bool %x_73_phi
+         %91 = OpLoad %float %f1
+               OpSelectionMerge %92 None
+               OpBranchConditional %90 %92 %93
+         %93 = OpLabel
+         %94 = OpFOrdEqual %bool %91 %float_10
+               OpBranch %92
+         %92 = OpLabel
+         %95 = OpPhi %bool %90 %58 %94 %93
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %98
+         %97 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %103 = OpLoad %int %102
+        %105 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %103
+        %112 = OpConvertSToF %float %106
+        %113 = OpConvertSToF %float %108
+        %114 = OpConvertSToF %float %110
+        %115 = OpCompositeConstruct %v4float %111 %112 %113 %114
+               OpStore %x_GLF_color %115
+               OpBranch %96
+         %98 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %117 = OpLoad %int %116
+        %118 = OpConvertSToF %float %117
+        %119 = OpCompositeConstruct %v4float %118 %118 %118 %118
+               OpStore %x_GLF_color %119
+               OpBranch %96
+         %96 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %120
+%tint_symbol = OpFunctionParameter %main_out
+        %124 = OpLabel
+        %125 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %125
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %127 = OpLabel
+        %128 = OpFunctionCall %void %main_1
+        %130 = OpLoad %v4float %x_GLF_color
+        %131 = OpCompositeConstruct %main_out %130
+        %129 = OpFunctionCall %void %tint_symbol_2 %131
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8b2ad19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,90 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var f0 : f32;
+  var s1 : f32;
+  var f1 : f32;
+  var x_72 : bool;
+  var x_73_phi : bool;
+  f0 = (10.0 % 0.000001);
+  s1 = 0x1.b38fb8p-127;
+  let x_38 : f32 = s1;
+  if ((x_38 == 0.0)) {
+    s1 = 1.0;
+  }
+  var x_62 : bool;
+  var x_71 : bool;
+  var x_63_phi : bool;
+  var x_72_phi : bool;
+  let x_42 : f32 = s1;
+  f1 = (10.0 % x_42);
+  let x_44 : f32 = f1;
+  let x_46 : f32 = s1;
+  let x_48 : bool = (isInf(x_44) || (x_46 == 1.0));
+  x_73_phi = x_48;
+  if (!(x_48)) {
+    let x_52 : f32 = f0;
+    let x_53 : f32 = f1;
+    let x_54 : bool = (x_52 == x_53);
+    x_63_phi = x_54;
+    if (!(x_54)) {
+      let x_58 : f32 = f0;
+      let x_60 : f32 = f0;
+      x_62 = ((x_58 > 0.99000001) && (x_60 < 0.01));
+      x_63_phi = x_62;
+    }
+    let x_63 : bool = x_63_phi;
+    x_72_phi = x_63;
+    if (!(x_63)) {
+      let x_67 : f32 = f1;
+      let x_69 : f32 = f1;
+      x_71 = ((x_67 > 0.99000001) && (x_69 < 0.01));
+      x_72_phi = x_71;
+    }
+    x_72 = x_72_phi;
+    x_73_phi = x_72;
+  }
+  let x_73 : bool = x_73_phi;
+  let x_74 : f32 = f1;
+  if ((x_73 || (x_74 == 10.0))) {
+    let x_81 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_87 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_90 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_81), f32(x_84), f32(x_87), f32(x_90));
+  } else {
+    let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_95 : f32 = f32(x_94);
+    x_GLF_color = vec4<f32>(x_95, x_95, x_95, x_95);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl
new file mode 100644
index 0000000..8b2ad19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl
@@ -0,0 +1,90 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var f0 : f32;
+  var s1 : f32;
+  var f1 : f32;
+  var x_72 : bool;
+  var x_73_phi : bool;
+  f0 = (10.0 % 0.000001);
+  s1 = 0x1.b38fb8p-127;
+  let x_38 : f32 = s1;
+  if ((x_38 == 0.0)) {
+    s1 = 1.0;
+  }
+  var x_62 : bool;
+  var x_71 : bool;
+  var x_63_phi : bool;
+  var x_72_phi : bool;
+  let x_42 : f32 = s1;
+  f1 = (10.0 % x_42);
+  let x_44 : f32 = f1;
+  let x_46 : f32 = s1;
+  let x_48 : bool = (isInf(x_44) || (x_46 == 1.0));
+  x_73_phi = x_48;
+  if (!(x_48)) {
+    let x_52 : f32 = f0;
+    let x_53 : f32 = f1;
+    let x_54 : bool = (x_52 == x_53);
+    x_63_phi = x_54;
+    if (!(x_54)) {
+      let x_58 : f32 = f0;
+      let x_60 : f32 = f0;
+      x_62 = ((x_58 > 0.99000001) && (x_60 < 0.01));
+      x_63_phi = x_62;
+    }
+    let x_63 : bool = x_63_phi;
+    x_72_phi = x_63;
+    if (!(x_63)) {
+      let x_67 : f32 = f1;
+      let x_69 : f32 = f1;
+      x_71 = ((x_67 > 0.99000001) && (x_69 < 0.01));
+      x_72_phi = x_71;
+    }
+    x_72 = x_72_phi;
+    x_73_phi = x_72;
+  }
+  let x_73 : bool = x_73_phi;
+  let x_74 : f32 = f1;
+  if ((x_73 || (x_74 == 10.0))) {
+    let x_81 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_87 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_90 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_81), f32(x_84), f32(x_87), f32(x_90));
+  } else {
+    let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_95 : f32 = f32(x_94);
+    x_GLF_color = vec4<f32>(x_95, x_95, x_95, x_95);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0fdd32b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl:28:19 error: expected ';' for assignment statement
+  s1 = 0x1.b38fb8p-127;
+                  ^^^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..0fdd32b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.msl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl:28:19 error: expected ';' for assignment statement
+  s1 = 0x1.b38fb8p-127;
+                  ^^^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0fdd32b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl:28:19 error: expected ';' for assignment statement
+  s1 = 0x1.b38fb8p-127;
+                  ^^^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..0fdd32b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl:28:19 error: expected ';' for assignment statement
+  s1 = 0x1.b38fb8p-127;
+                  ^^^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm
new file mode 100644
index 0000000..4a6ac9d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm
@@ -0,0 +1,130 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %I "I"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %N "N"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %R "R"
+               OpName %ref "ref"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+ %uint_92985 = OpConstant %uint 92985
+     %v4uint = OpTypeVector %uint 4
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+  %float_0_5 = OpConstant %float 0.5
+         %35 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %15
+         %38 = OpLabel
+          %I = OpVariable %_ptr_Function_v4float Function
+          %N = OpVariable %_ptr_Function_v4float Function
+          %R = OpVariable %_ptr_Function_v4float Function
+        %ref = OpVariable %_ptr_Function_v4float Function
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %40 = OpLoad %int %39
+         %41 = OpBitcast %uint %40
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %43 = OpLoad %int %42
+         %44 = OpBitcast %uint %43
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %46 = OpLoad %int %45
+         %47 = OpBitcast %uint %46
+         %48 = OpCompositeConstruct %v4uint %41 %44 %47 %uint_92985
+         %49 = OpBitcast %v4float %48
+               OpStore %I %49
+         %50 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %51 = OpLoad %float %50
+         %52 = OpCompositeConstruct %v4float %51 %51 %51 %51
+               OpStore %N %52
+         %53 = OpLoad %v4float %I
+         %54 = OpExtInst %v4float %1 Reflect %53 %35
+               OpStore %R %54
+         %55 = OpLoad %v4float %I
+         %56 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_2
+         %57 = OpLoad %float %56
+         %58 = OpLoad %v4float %N
+         %59 = OpLoad %v4float %I
+         %60 = OpDot %float %58 %59
+         %61 = OpFMul %float %57 %60
+         %62 = OpLoad %v4float %N
+         %63 = OpVectorTimesScalar %v4float %62 %61
+         %64 = OpFSub %v4float %55 %63
+               OpStore %ref %64
+         %65 = OpLoad %v4float %R
+         %66 = OpLoad %v4float %ref
+         %67 = OpExtInst %float %1 Distance %65 %66
+         %68 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %69 = OpLoad %float %68
+         %70 = OpFOrdLessThan %bool %67 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpCompositeConstruct %v4float %76 %79 %82 %85
+               OpStore %_GLF_color %86
+               OpBranch %71
+         %73 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpCompositeConstruct %v4float %89 %89 %89 %89
+               OpStore %_GLF_color %90
+               OpBranch %71
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9136c66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,71 @@
+SKIP: FAILED
+
+
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var I : vec4<f32>;
+  var N : vec4<f32>;
+  var R : vec4<f32>;
+  var ref : vec4<f32>;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[4];
+  I = bitcast<vec4<f32>>(vec4<u32>(bitcast<u32>(x_40), bitcast<u32>(x_43), bitcast<u32>(x_46), 92985u));
+  let x_51 : f32 = x_9.x_GLF_uniform_float_values[1];
+  N = vec4<f32>(x_51, x_51, x_51, x_51);
+  let x_53 : vec4<f32> = I;
+  R = reflect(x_53, vec4<f32>(0.5, 0.5, 0.5, 0.5));
+  let x_55 : vec4<f32> = I;
+  let x_57 : f32 = x_9.x_GLF_uniform_float_values[2];
+  let x_58 : vec4<f32> = N;
+  let x_59 : vec4<f32> = I;
+  let x_62 : vec4<f32> = N;
+  ref = (x_55 - (x_62 * (x_57 * dot(x_58, x_59))));
+  let x_65 : vec4<f32> = R;
+  let x_66 : vec4<f32> = ref;
+  let x_69 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((distance(x_65, x_66) < x_69)) {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_75), f32(x_78), f32(x_81), f32(x_84));
+  } else {
+    let x_88 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_89 : f32 = f32(x_88);
+    x_GLF_color = vec4<f32>(x_89, x_89, x_89, x_89);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+Failed to generate: error: Unable to do bitcast to type __vec_4__f32
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..9237c80
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float4 I = 0.0f;
+  float4 N = 0.0f;
+  float4 R = 0.0f;
+  float4 ref = 0.0f;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_43 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  I = as_type<float4>(uint4(as_type<uint>(x_40), as_type<uint>(x_43), as_type<uint>(x_46), 92985u));
+  float const x_51 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  N = float4(x_51, x_51, x_51, x_51);
+  float4 const x_53 = I;
+  R = reflect(x_53, float4(0.5f, 0.5f, 0.5f, 0.5f));
+  float4 const x_55 = I;
+  float const x_57 = x_9.x_GLF_uniform_float_values.arr[2].el;
+  float4 const x_58 = N;
+  float4 const x_59 = I;
+  float4 const x_62 = N;
+  ref = (x_55 - (x_62 * (x_57 * dot(x_58, x_59))));
+  float4 const x_65 = R;
+  float4 const x_66 = ref;
+  float const x_69 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  if ((distance(x_65, x_66) < x_69)) {
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_78 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_84 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_75), float(x_78), float(x_81), float(x_84));
+  } else {
+    int const x_88 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_89 = float(x_88);
+    *(tint_symbol_4) = float4(x_89, x_89, x_89, x_89);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..dcddef3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,164 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+         %54 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %I "I"
+               OpName %N "N"
+               OpName %R "R"
+               OpName %ref "ref"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %v4uint = OpTypeVector %uint 4
+ %uint_92985 = OpConstant %uint 92985
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+  %float_0_5 = OpConstant %float 0.5
+         %56 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %95 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %I = OpVariable %_ptr_Function_v4float Function %17
+          %N = OpVariable %_ptr_Function_v4float Function %17
+          %R = OpVariable %_ptr_Function_v4float Function %17
+        %ref = OpVariable %_ptr_Function_v4float Function %17
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %33 = OpLoad %int %32
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %36 = OpLoad %int %35
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %39 = OpLoad %int %38
+         %42 = OpBitcast %uint %33
+         %43 = OpBitcast %uint %36
+         %44 = OpBitcast %uint %39
+         %46 = OpCompositeConstruct %v4uint %42 %43 %44 %uint_92985
+         %40 = OpBitcast %v4float %46
+               OpStore %I %40
+         %49 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %N %51
+         %52 = OpLoad %v4float %I
+         %53 = OpExtInst %v4float %54 Reflect %52 %56
+               OpStore %R %53
+         %57 = OpLoad %v4float %I
+         %58 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_2
+         %59 = OpLoad %float %58
+         %60 = OpLoad %v4float %N
+         %61 = OpLoad %v4float %I
+         %62 = OpLoad %v4float %N
+         %63 = OpDot %float %60 %61
+         %64 = OpFMul %float %59 %63
+         %65 = OpVectorTimesScalar %v4float %62 %64
+         %66 = OpFSub %v4float %57 %65
+               OpStore %ref %66
+         %67 = OpLoad %v4float %R
+         %68 = OpLoad %v4float %ref
+         %70 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %71 = OpLoad %float %70
+         %72 = OpExtInst %float %54 Distance %67 %68
+         %73 = OpFOrdLessThan %bool %72 %71
+               OpSelectionMerge %75 None
+               OpBranchConditional %73 %76 %77
+         %76 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %79
+         %87 = OpConvertSToF %float %81
+         %88 = OpConvertSToF %float %83
+         %89 = OpConvertSToF %float %85
+         %90 = OpCompositeConstruct %v4float %86 %87 %88 %89
+               OpStore %x_GLF_color %90
+               OpBranch %75
+         %77 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpCompositeConstruct %v4float %93 %93 %93 %93
+               OpStore %x_GLF_color %94
+               OpBranch %75
+         %75 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %95
+%tint_symbol = OpFunctionParameter %main_out
+         %99 = OpLabel
+        %100 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %100
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %102 = OpLabel
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_2 %106
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c992ddc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,66 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var I : vec4<f32>;
+  var N : vec4<f32>;
+  var R : vec4<f32>;
+  var ref : vec4<f32>;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[4];
+  I = bitcast<vec4<f32>>(vec4<u32>(bitcast<u32>(x_40), bitcast<u32>(x_43), bitcast<u32>(x_46), 92985u));
+  let x_51 : f32 = x_9.x_GLF_uniform_float_values[1];
+  N = vec4<f32>(x_51, x_51, x_51, x_51);
+  let x_53 : vec4<f32> = I;
+  R = reflect(x_53, vec4<f32>(0.5, 0.5, 0.5, 0.5));
+  let x_55 : vec4<f32> = I;
+  let x_57 : f32 = x_9.x_GLF_uniform_float_values[2];
+  let x_58 : vec4<f32> = N;
+  let x_59 : vec4<f32> = I;
+  let x_62 : vec4<f32> = N;
+  ref = (x_55 - (x_62 * (x_57 * dot(x_58, x_59))));
+  let x_65 : vec4<f32> = R;
+  let x_66 : vec4<f32> = ref;
+  let x_69 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((distance(x_65, x_66) < x_69)) {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_75), f32(x_78), f32(x_81), f32(x_84));
+  } else {
+    let x_88 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_89 : f32 = f32(x_88);
+    x_GLF_color = vec4<f32>(x_89, x_89, x_89, x_89);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
new file mode 100644
index 0000000..c992ddc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
@@ -0,0 +1,66 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var I : vec4<f32>;
+  var N : vec4<f32>;
+  var R : vec4<f32>;
+  var ref : vec4<f32>;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[4];
+  I = bitcast<vec4<f32>>(vec4<u32>(bitcast<u32>(x_40), bitcast<u32>(x_43), bitcast<u32>(x_46), 92985u));
+  let x_51 : f32 = x_9.x_GLF_uniform_float_values[1];
+  N = vec4<f32>(x_51, x_51, x_51, x_51);
+  let x_53 : vec4<f32> = I;
+  R = reflect(x_53, vec4<f32>(0.5, 0.5, 0.5, 0.5));
+  let x_55 : vec4<f32> = I;
+  let x_57 : f32 = x_9.x_GLF_uniform_float_values[2];
+  let x_58 : vec4<f32> = N;
+  let x_59 : vec4<f32> = I;
+  let x_62 : vec4<f32> = N;
+  ref = (x_55 - (x_62 * (x_57 * dot(x_58, x_59))));
+  let x_65 : vec4<f32> = R;
+  let x_66 : vec4<f32> = ref;
+  let x_69 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((distance(x_65, x_66) < x_69)) {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_75), f32(x_78), f32(x_81), f32(x_84));
+  } else {
+    let x_88 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_89 : f32 = f32(x_88);
+    x_GLF_color = vec4<f32>(x_89, x_89, x_89, x_89);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9136c66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,71 @@
+SKIP: FAILED
+
+
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var I : vec4<f32>;
+  var N : vec4<f32>;
+  var R : vec4<f32>;
+  var ref : vec4<f32>;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[4];
+  I = bitcast<vec4<f32>>(vec4<u32>(bitcast<u32>(x_40), bitcast<u32>(x_43), bitcast<u32>(x_46), 92985u));
+  let x_51 : f32 = x_9.x_GLF_uniform_float_values[1];
+  N = vec4<f32>(x_51, x_51, x_51, x_51);
+  let x_53 : vec4<f32> = I;
+  R = reflect(x_53, vec4<f32>(0.5, 0.5, 0.5, 0.5));
+  let x_55 : vec4<f32> = I;
+  let x_57 : f32 = x_9.x_GLF_uniform_float_values[2];
+  let x_58 : vec4<f32> = N;
+  let x_59 : vec4<f32> = I;
+  let x_62 : vec4<f32> = N;
+  ref = (x_55 - (x_62 * (x_57 * dot(x_58, x_59))));
+  let x_65 : vec4<f32> = R;
+  let x_66 : vec4<f32> = ref;
+  let x_69 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((distance(x_65, x_66) < x_69)) {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_75), f32(x_78), f32(x_81), f32(x_84));
+  } else {
+    let x_88 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_89 : f32 = f32(x_88);
+    x_GLF_color = vec4<f32>(x_89, x_89, x_89, x_89);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+Failed to generate: error: Unable to do bitcast to type __vec_4__f32
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..9237c80
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float4 I = 0.0f;
+  float4 N = 0.0f;
+  float4 R = 0.0f;
+  float4 ref = 0.0f;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_43 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  I = as_type<float4>(uint4(as_type<uint>(x_40), as_type<uint>(x_43), as_type<uint>(x_46), 92985u));
+  float const x_51 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  N = float4(x_51, x_51, x_51, x_51);
+  float4 const x_53 = I;
+  R = reflect(x_53, float4(0.5f, 0.5f, 0.5f, 0.5f));
+  float4 const x_55 = I;
+  float const x_57 = x_9.x_GLF_uniform_float_values.arr[2].el;
+  float4 const x_58 = N;
+  float4 const x_59 = I;
+  float4 const x_62 = N;
+  ref = (x_55 - (x_62 * (x_57 * dot(x_58, x_59))));
+  float4 const x_65 = R;
+  float4 const x_66 = ref;
+  float const x_69 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  if ((distance(x_65, x_66) < x_69)) {
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_78 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_84 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_75), float(x_78), float(x_81), float(x_84));
+  } else {
+    int const x_88 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_89 = float(x_88);
+    *(tint_symbol_4) = float4(x_89, x_89, x_89, x_89);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..dcddef3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,164 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+         %54 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %I "I"
+               OpName %N "N"
+               OpName %R "R"
+               OpName %ref "ref"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %v4uint = OpTypeVector %uint 4
+ %uint_92985 = OpConstant %uint 92985
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+  %float_0_5 = OpConstant %float 0.5
+         %56 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %95 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %I = OpVariable %_ptr_Function_v4float Function %17
+          %N = OpVariable %_ptr_Function_v4float Function %17
+          %R = OpVariable %_ptr_Function_v4float Function %17
+        %ref = OpVariable %_ptr_Function_v4float Function %17
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %33 = OpLoad %int %32
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %36 = OpLoad %int %35
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %39 = OpLoad %int %38
+         %42 = OpBitcast %uint %33
+         %43 = OpBitcast %uint %36
+         %44 = OpBitcast %uint %39
+         %46 = OpCompositeConstruct %v4uint %42 %43 %44 %uint_92985
+         %40 = OpBitcast %v4float %46
+               OpStore %I %40
+         %49 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %N %51
+         %52 = OpLoad %v4float %I
+         %53 = OpExtInst %v4float %54 Reflect %52 %56
+               OpStore %R %53
+         %57 = OpLoad %v4float %I
+         %58 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_2
+         %59 = OpLoad %float %58
+         %60 = OpLoad %v4float %N
+         %61 = OpLoad %v4float %I
+         %62 = OpLoad %v4float %N
+         %63 = OpDot %float %60 %61
+         %64 = OpFMul %float %59 %63
+         %65 = OpVectorTimesScalar %v4float %62 %64
+         %66 = OpFSub %v4float %57 %65
+               OpStore %ref %66
+         %67 = OpLoad %v4float %R
+         %68 = OpLoad %v4float %ref
+         %70 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %71 = OpLoad %float %70
+         %72 = OpExtInst %float %54 Distance %67 %68
+         %73 = OpFOrdLessThan %bool %72 %71
+               OpSelectionMerge %75 None
+               OpBranchConditional %73 %76 %77
+         %76 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %79
+         %87 = OpConvertSToF %float %81
+         %88 = OpConvertSToF %float %83
+         %89 = OpConvertSToF %float %85
+         %90 = OpCompositeConstruct %v4float %86 %87 %88 %89
+               OpStore %x_GLF_color %90
+               OpBranch %75
+         %77 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpCompositeConstruct %v4float %93 %93 %93 %93
+               OpStore %x_GLF_color %94
+               OpBranch %75
+         %75 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %95
+%tint_symbol = OpFunctionParameter %main_out
+         %99 = OpLabel
+        %100 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %100
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %102 = OpLabel
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_2 %106
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c992ddc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,66 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var I : vec4<f32>;
+  var N : vec4<f32>;
+  var R : vec4<f32>;
+  var ref : vec4<f32>;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[4];
+  I = bitcast<vec4<f32>>(vec4<u32>(bitcast<u32>(x_40), bitcast<u32>(x_43), bitcast<u32>(x_46), 92985u));
+  let x_51 : f32 = x_9.x_GLF_uniform_float_values[1];
+  N = vec4<f32>(x_51, x_51, x_51, x_51);
+  let x_53 : vec4<f32> = I;
+  R = reflect(x_53, vec4<f32>(0.5, 0.5, 0.5, 0.5));
+  let x_55 : vec4<f32> = I;
+  let x_57 : f32 = x_9.x_GLF_uniform_float_values[2];
+  let x_58 : vec4<f32> = N;
+  let x_59 : vec4<f32> = I;
+  let x_62 : vec4<f32> = N;
+  ref = (x_55 - (x_62 * (x_57 * dot(x_58, x_59))));
+  let x_65 : vec4<f32> = R;
+  let x_66 : vec4<f32> = ref;
+  let x_69 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((distance(x_65, x_66) < x_69)) {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_75), f32(x_78), f32(x_81), f32(x_84));
+  } else {
+    let x_88 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_89 : f32 = f32(x_88);
+    x_GLF_color = vec4<f32>(x_89, x_89, x_89, x_89);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm
new file mode 100644
index 0000000..f4303dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm
@@ -0,0 +1,105 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %undefined "undefined"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+%float_0x1_8p_128 = OpConstant %float 0x1.8p+128
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %18
+         %35 = OpLabel
+  %undefined = OpVariable %_ptr_Function_float Function
+         %36 = OpExtInst %float %1 Sinh %float_0x1_8p_128
+               OpStore %undefined %36
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %10 = OpLoad %int %37
+         %38 = OpIEqual %bool %int_1 %10
+         %39 = OpLogicalNot %bool %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %42 = OpLoad %float %undefined
+         %43 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpFOrdGreaterThan %bool %42 %44
+               OpBranch %40
+         %40 = OpLabel
+         %46 = OpPhi %bool %38 %35 %45 %41
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %12 = OpLoad %int %50
+         %51 = OpConvertSToF %float %12
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %13 = OpLoad %int %52
+         %53 = OpConvertSToF %float %13
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %14 = OpLoad %int %54
+         %55 = OpConvertSToF %float %14
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %15 = OpLoad %int %56
+         %57 = OpConvertSToF %float %15
+         %58 = OpCompositeConstruct %v4float %51 %53 %55 %57
+               OpStore %_GLF_color %58
+               OpBranch %47
+         %49 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %16 = OpLoad %int %59
+         %60 = OpConvertSToF %float %16
+         %61 = OpCompositeConstruct %v4float %60 %60 %60 %60
+               OpStore %_GLF_color %61
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ed5eaec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,53 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float undefined = 0.0f;
+  bool x_45 = false;
+  bool x_46_phi = false;
+  undefined = sinh(asfloat(0x7fc00000u));
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_10 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const bool x_38 = (1 == x_10);
+  x_46_phi = x_38;
+  if (!(x_38)) {
+    const float x_42 = undefined;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_44 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_45 = (x_42 > x_44);
+    x_46_phi = x_45;
+  }
+  if (x_46_phi) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_12 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_13 = asint(x_6[1].x);
+    const int x_14 = asint(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_15 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_12), float(x_13), float(x_14), float(x_15));
+  } else {
+    const int x_16 = asint(x_6[1].x);
+    const float x_60 = float(x_16);
+    x_GLF_color = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bea3fa4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.msl
@@ -0,0 +1,67 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float undefined = 0.0f;
+  bool x_45 = false;
+  bool x_46_phi = false;
+  undefined = sinh(NAN);
+  int const x_10 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  bool const x_38 = (1 == x_10);
+  x_46_phi = x_38;
+  if (!(x_38)) {
+    float const x_42 = undefined;
+    float const x_44 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    x_45 = (x_42 > x_44);
+    x_46_phi = x_45;
+  }
+  bool const x_46 = x_46_phi;
+  if (x_46) {
+    int const x_12 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_13 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_14 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_15 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_12), float(x_13), float(x_14), float(x_15));
+  } else {
+    int const x_16 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_60 = float(x_16);
+    *(tint_symbol_4) = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..c418795
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,143 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 84
+; Schema: 0
+               OpCapability Shader
+         %33 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %undefined "undefined"
+               OpName %x_45 "x_45"
+               OpName %x_46_phi "x_46_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+%float_0x1_8p_128 = OpConstant %float 0x1.8p+128
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %72 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+  %undefined = OpVariable %_ptr_Function_float Function %26
+       %x_45 = OpVariable %_ptr_Function_bool Function %30
+   %x_46_phi = OpVariable %_ptr_Function_bool Function %30
+         %32 = OpExtInst %float %33 Sinh %float_0x1_8p_128
+               OpStore %undefined %32
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %41 = OpIEqual %bool %int_1 %39
+               OpStore %x_46_phi %41
+         %42 = OpLogicalNot %bool %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+         %45 = OpLoad %float %undefined
+         %47 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %48 = OpLoad %float %47
+         %49 = OpFOrdGreaterThan %bool %45 %48
+               OpStore %x_45 %49
+         %50 = OpLoad %bool %x_45
+               OpStore %x_46_phi %50
+               OpBranch %43
+         %43 = OpLabel
+         %51 = OpLoad %bool %x_46_phi
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %56
+         %64 = OpConvertSToF %float %58
+         %65 = OpConvertSToF %float %60
+         %66 = OpConvertSToF %float %62
+         %67 = OpCompositeConstruct %v4float %63 %64 %65 %66
+               OpStore %x_GLF_color %67
+               OpBranch %52
+         %54 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpCompositeConstruct %v4float %70 %70 %70 %70
+               OpStore %x_GLF_color %71
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %72
+%tint_symbol = OpFunctionParameter %main_out
+         %76 = OpLabel
+         %77 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %77
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %79 = OpLabel
+         %80 = OpFunctionCall %void %main_1
+         %82 = OpLoad %v4float %x_GLF_color
+         %83 = OpCompositeConstruct %main_out %82
+         %81 = OpFunctionCall %void %tint_symbol_2 %83
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..09b3c27
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var undefined : f32;
+  var x_45 : bool;
+  var x_46_phi : bool;
+  undefined = sinh(0x1.8p+128);
+  let x_10 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_38 : bool = (1 == x_10);
+  x_46_phi = x_38;
+  if (!(x_38)) {
+    let x_42 : f32 = undefined;
+    let x_44 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_45 = (x_42 > x_44);
+    x_46_phi = x_45;
+  }
+  let x_46 : bool = x_46_phi;
+  if (x_46) {
+    let x_12 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_13 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_14 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_15 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_12), f32(x_13), f32(x_14), f32(x_15));
+  } else {
+    let x_16 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_60 : f32 = f32(x_16);
+    x_GLF_color = vec4<f32>(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
new file mode 100644
index 0000000..09b3c27
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var undefined : f32;
+  var x_45 : bool;
+  var x_46_phi : bool;
+  undefined = sinh(0x1.8p+128);
+  let x_10 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_38 : bool = (1 == x_10);
+  x_46_phi = x_38;
+  if (!(x_38)) {
+    let x_42 : f32 = undefined;
+    let x_44 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_45 = (x_42 > x_44);
+    x_46_phi = x_45;
+  }
+  let x_46 : bool = x_46_phi;
+  if (x_46) {
+    let x_12 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_13 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_14 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_15 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_12), f32(x_13), f32(x_14), f32(x_15));
+  } else {
+    let x_16 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_60 : f32 = f32(x_16);
+    x_GLF_color = vec4<f32>(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7b92bee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl:25:23 error: expected ')' for function call
+  undefined = sinh(0x1.8p+128);
+                      ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..7b92bee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.msl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl:25:23 error: expected ')' for function call
+  undefined = sinh(0x1.8p+128);
+                      ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7b92bee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl:25:23 error: expected ')' for function call
+  undefined = sinh(0x1.8p+128);
+                      ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7b92bee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl:25:23 error: expected ')' for function call
+  undefined = sinh(0x1.8p+128);
+                      ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm
new file mode 100644
index 0000000..f4ea14e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm
@@ -0,0 +1,70 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %dist1 "dist1"
+               OpName %dist2 "dist2"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %16 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+%_ptr_Function_float = OpTypePointer Function %float
+%float_0_761590004 = OpConstant %float 0.761590004
+%float_0_964030027 = OpConstant %float 0.964030027
+%float_0_995050013 = OpConstant %float 0.995050013
+%float_0_999329984 = OpConstant %float 0.999329984
+         %22 = OpConstantComposite %v4float %float_0_761590004 %float_0_964030027 %float_0_995050013 %float_0_999329984
+%float_0_100000001 = OpConstant %float 0.100000001
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %29 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+      %dist1 = OpVariable %_ptr_Function_float Function
+      %dist2 = OpVariable %_ptr_Function_float Function
+               OpStore %v %16
+         %30 = OpLoad %v4float %v
+         %31 = OpExtInst %v4float %1 Tanh %30
+         %32 = OpLoad %v4float %v
+         %33 = OpExtInst %v4float %1 Sinh %32
+         %34 = OpLoad %v4float %v
+         %35 = OpExtInst %v4float %1 Cosh %34
+         %36 = OpFDiv %v4float %33 %35
+         %37 = OpExtInst %float %1 Distance %31 %36
+               OpStore %dist1 %37
+         %38 = OpLoad %v4float %v
+         %39 = OpExtInst %v4float %1 Tanh %38
+         %40 = OpExtInst %float %1 Distance %39 %22
+               OpStore %dist2 %40
+         %41 = OpLoad %float %dist1
+         %42 = OpFOrdLessThan %bool %41 %float_0_100000001
+         %43 = OpLoad %float %dist2
+         %44 = OpFOrdLessThan %bool %43 %float_0_100000001
+         %45 = OpLogicalAnd %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..5cb60bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float dist1 = 0.0f;
+  float dist2 = 0.0f;
+  v = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  dist1 = distance(tanh(v), (sinh(v) / cosh(v)));
+  dist2 = distance(tanh(v), float4(0.761590004f, 0.964030027f, 0.995050013f, 0.999329984f));
+  bool tint_tmp = (dist1 < 0.100000001f);
+  if (tint_tmp) {
+    tint_tmp = (dist2 < 0.100000001f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3b940f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float dist1 = 0.0f;
+  float dist2 = 0.0f;
+  v = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  float4 const x_30 = v;
+  float4 const x_32 = v;
+  float4 const x_34 = v;
+  dist1 = distance(tanh(x_30), (sinh(x_32) / cosh(x_34)));
+  float4 const x_38 = v;
+  dist2 = distance(tanh(x_38), float4(0.761590004f, 0.964030027f, 0.995050013f, 0.999329984f));
+  float const x_41 = dist1;
+  float const x_43 = dist2;
+  if (((x_41 < 0.100000001f) && (x_43 < 0.100000001f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1f2f4f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+         %27 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %dist1 "dist1"
+               OpName %dist2 "dist2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %22 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+%float_0_761590004 = OpConstant %float 0.761590004
+%float_0_964030027 = OpConstant %float 0.964030027
+%float_0_995050013 = OpConstant %float 0.995050013
+%float_0_999329984 = OpConstant %float 0.999329984
+         %39 = OpConstantComposite %v4float %float_0_761590004 %float_0_964030027 %float_0_995050013 %float_0_999329984
+%float_0_100000001 = OpConstant %float 0.100000001
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %53 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %5
+      %dist1 = OpVariable %_ptr_Function_float Function %16
+      %dist2 = OpVariable %_ptr_Function_float Function %16
+               OpStore %v %22
+         %23 = OpLoad %v4float %v
+         %24 = OpLoad %v4float %v
+         %25 = OpLoad %v4float %v
+         %28 = OpExtInst %v4float %27 Tanh %23
+         %29 = OpExtInst %v4float %27 Sinh %24
+         %30 = OpExtInst %v4float %27 Cosh %25
+         %31 = OpFDiv %v4float %29 %30
+         %26 = OpExtInst %float %27 Distance %28 %31
+               OpStore %dist1 %26
+         %32 = OpLoad %v4float %v
+         %34 = OpExtInst %v4float %27 Tanh %32
+         %33 = OpExtInst %float %27 Distance %34 %39
+               OpStore %dist2 %33
+         %40 = OpLoad %float %dist1
+         %41 = OpLoad %float %dist2
+         %43 = OpFOrdLessThan %bool %40 %float_0_100000001
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %45
+         %46 = OpLabel
+         %47 = OpFOrdLessThan %bool %41 %float_0_100000001
+               OpBranch %45
+         %45 = OpLabel
+         %48 = OpPhi %bool %43 %11 %47 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %49
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8bcb3a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,33 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var dist1 : f32;
+  var dist2 : f32;
+  v = vec4<f32>(1.0, 2.0, 3.0, 4.0);
+  let x_30 : vec4<f32> = v;
+  let x_32 : vec4<f32> = v;
+  let x_34 : vec4<f32> = v;
+  dist1 = distance(tanh(x_30), (sinh(x_32) / cosh(x_34)));
+  let x_38 : vec4<f32> = v;
+  dist2 = distance(tanh(x_38), vec4<f32>(0.761590004, 0.964030027, 0.995050013, 0.999329984));
+  let x_41 : f32 = dist1;
+  let x_43 : f32 = dist2;
+  if (((x_41 < 0.100000001) && (x_43 < 0.100000001))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
new file mode 100644
index 0000000..8bcb3a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
@@ -0,0 +1,33 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var dist1 : f32;
+  var dist2 : f32;
+  v = vec4<f32>(1.0, 2.0, 3.0, 4.0);
+  let x_30 : vec4<f32> = v;
+  let x_32 : vec4<f32> = v;
+  let x_34 : vec4<f32> = v;
+  dist1 = distance(tanh(x_30), (sinh(x_32) / cosh(x_34)));
+  let x_38 : vec4<f32> = v;
+  dist2 = distance(tanh(x_38), vec4<f32>(0.761590004, 0.964030027, 0.995050013, 0.999329984));
+  let x_41 : f32 = dist1;
+  let x_43 : f32 = dist2;
+  if (((x_41 < 0.100000001) && (x_43 < 0.100000001))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..5cb60bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float dist1 = 0.0f;
+  float dist2 = 0.0f;
+  v = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  dist1 = distance(tanh(v), (sinh(v) / cosh(v)));
+  dist2 = distance(tanh(v), float4(0.761590004f, 0.964030027f, 0.995050013f, 0.999329984f));
+  bool tint_tmp = (dist1 < 0.100000001f);
+  if (tint_tmp) {
+    tint_tmp = (dist2 < 0.100000001f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3b940f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float dist1 = 0.0f;
+  float dist2 = 0.0f;
+  v = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  float4 const x_30 = v;
+  float4 const x_32 = v;
+  float4 const x_34 = v;
+  dist1 = distance(tanh(x_30), (sinh(x_32) / cosh(x_34)));
+  float4 const x_38 = v;
+  dist2 = distance(tanh(x_38), float4(0.761590004f, 0.964030027f, 0.995050013f, 0.999329984f));
+  float const x_41 = dist1;
+  float const x_43 = dist2;
+  if (((x_41 < 0.100000001f) && (x_43 < 0.100000001f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1f2f4f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+         %27 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %dist1 "dist1"
+               OpName %dist2 "dist2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %22 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+%float_0_761590004 = OpConstant %float 0.761590004
+%float_0_964030027 = OpConstant %float 0.964030027
+%float_0_995050013 = OpConstant %float 0.995050013
+%float_0_999329984 = OpConstant %float 0.999329984
+         %39 = OpConstantComposite %v4float %float_0_761590004 %float_0_964030027 %float_0_995050013 %float_0_999329984
+%float_0_100000001 = OpConstant %float 0.100000001
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %53 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %5
+      %dist1 = OpVariable %_ptr_Function_float Function %16
+      %dist2 = OpVariable %_ptr_Function_float Function %16
+               OpStore %v %22
+         %23 = OpLoad %v4float %v
+         %24 = OpLoad %v4float %v
+         %25 = OpLoad %v4float %v
+         %28 = OpExtInst %v4float %27 Tanh %23
+         %29 = OpExtInst %v4float %27 Sinh %24
+         %30 = OpExtInst %v4float %27 Cosh %25
+         %31 = OpFDiv %v4float %29 %30
+         %26 = OpExtInst %float %27 Distance %28 %31
+               OpStore %dist1 %26
+         %32 = OpLoad %v4float %v
+         %34 = OpExtInst %v4float %27 Tanh %32
+         %33 = OpExtInst %float %27 Distance %34 %39
+               OpStore %dist2 %33
+         %40 = OpLoad %float %dist1
+         %41 = OpLoad %float %dist2
+         %43 = OpFOrdLessThan %bool %40 %float_0_100000001
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %45
+         %46 = OpLabel
+         %47 = OpFOrdLessThan %bool %41 %float_0_100000001
+               OpBranch %45
+         %45 = OpLabel
+         %48 = OpPhi %bool %43 %11 %47 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %49
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8bcb3a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,33 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var dist1 : f32;
+  var dist2 : f32;
+  v = vec4<f32>(1.0, 2.0, 3.0, 4.0);
+  let x_30 : vec4<f32> = v;
+  let x_32 : vec4<f32> = v;
+  let x_34 : vec4<f32> = v;
+  dist1 = distance(tanh(x_30), (sinh(x_32) / cosh(x_34)));
+  let x_38 : vec4<f32> = v;
+  dist2 = distance(tanh(x_38), vec4<f32>(0.761590004, 0.964030027, 0.995050013, 0.999329984));
+  let x_41 : f32 = dist1;
+  let x_43 : f32 = dist2;
+  if (((x_41 < 0.100000001) && (x_43 < 0.100000001))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm
new file mode 100644
index 0000000..65b9079
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm
@@ -0,0 +1,228 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %m0 "m0"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %m1 "m1"
+               OpName %undefined "undefined"
+               OpName %defined "defined"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %v3 "v3"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpDecorate %_arr_int_uint_12 ArrayStride 16
+               OpMemberDecorate %buf1 0 RelaxedPrecision
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %34 RelaxedPrecision
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %37 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%mat3v4float = OpTypeMatrix %v4float 3
+%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_12 = OpConstant %uint 12
+%_arr_int_uint_12 = OpTypeArray %int %uint_12
+       %buf1 = OpTypeStruct %_arr_int_uint_12
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+    %float_4 = OpConstant %float 4
+     %int_10 = OpConstant %int 10
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+    %float_8 = OpConstant %float 8
+     %int_11 = OpConstant %int 11
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %64 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %v3int = OpTypeVector %int 3
+    %int_500 = OpConstant %int 500
+         %67 = OpConstantComposite %v3int %int_500 %int_500 %int_500
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Output_float = OpTypePointer Output %float
+       %main = OpFunction %void None %37
+         %78 = OpLabel
+         %m0 = OpVariable %_ptr_Function_mat3v4float Function
+         %m1 = OpVariable %_ptr_Function_mat3v4float Function
+  %undefined = OpVariable %_ptr_Function_v3float Function
+    %defined = OpVariable %_ptr_Function_v3float Function
+         %v0 = OpVariable %_ptr_Function_v4float Function
+         %v1 = OpVariable %_ptr_Function_v4float Function
+         %v2 = OpVariable %_ptr_Function_v4float Function
+         %v3 = OpVariable %_ptr_Function_v4float Function
+         %79 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %17 = OpLoad %int %79
+         %80 = OpConvertSToF %float %17
+         %81 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %18 = OpLoad %int %81
+         %82 = OpConvertSToF %float %18
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %19 = OpLoad %int %83
+         %84 = OpConvertSToF %float %19
+         %85 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_10
+         %20 = OpLoad %int %85
+         %86 = OpConvertSToF %float %20
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_7
+         %21 = OpLoad %int %87
+         %88 = OpConvertSToF %float %21
+         %89 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %22 = OpLoad %int %89
+         %90 = OpConvertSToF %float %22
+         %91 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+         %23 = OpLoad %int %91
+         %92 = OpConvertSToF %float %23
+         %93 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %24 = OpLoad %int %93
+         %94 = OpConvertSToF %float %24
+         %95 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %25 = OpLoad %int %95
+         %96 = OpConvertSToF %float %25
+         %97 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %26 = OpLoad %int %97
+         %98 = OpConvertSToF %float %26
+         %99 = OpCompositeConstruct %v4float %80 %82 %84 %float_4
+        %100 = OpCompositeConstruct %v4float %86 %88 %90 %float_8
+        %101 = OpCompositeConstruct %v4float %92 %94 %96 %98
+        %102 = OpCompositeConstruct %mat3v4float %99 %100 %101
+               OpStore %m0 %102
+        %103 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %27 = OpLoad %int %103
+        %104 = OpConvertSToF %float %27
+        %105 = OpCompositeConstruct %v4float %104 %float_0 %float_0 %float_0
+        %106 = OpCompositeConstruct %v4float %float_0 %104 %float_0 %float_0
+        %107 = OpCompositeConstruct %v4float %float_0 %float_0 %104 %float_0
+        %108 = OpCompositeConstruct %mat3v4float %105 %106 %107
+               OpStore %m1 %108
+        %109 = OpExtInst %v3float %1 Ldexp %64 %67
+               OpStore %undefined %109
+        %110 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %28 = OpLoad %int %110
+        %111 = OpConvertSToF %float %28
+        %112 = OpCompositeConstruct %v3float %111 %111 %111
+        %113 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %113
+        %114 = OpCompositeConstruct %v3int %29 %29 %29
+        %115 = OpExtInst %v3float %1 Ldexp %112 %114
+               OpStore %defined %115
+        %116 = OpLoad %mat3v4float %m0
+        %117 = OpLoad %v3float %undefined
+        %118 = OpMatrixTimesVector %v4float %116 %117
+               OpStore %v0 %118
+        %119 = OpLoad %mat3v4float %m1
+        %120 = OpLoad %v3float %undefined
+        %121 = OpMatrixTimesVector %v4float %119 %120
+               OpStore %v1 %121
+        %122 = OpLoad %mat3v4float %m0
+        %123 = OpLoad %v3float %defined
+        %124 = OpMatrixTimesVector %v4float %122 %123
+               OpStore %v2 %124
+        %125 = OpLoad %mat3v4float %m1
+        %126 = OpLoad %v3float %defined
+        %127 = OpMatrixTimesVector %v4float %125 %126
+               OpStore %v3 %127
+        %128 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+        %129 = OpLoad %float %128
+        %130 = OpAccessChain %_ptr_Function_float %v3 %uint_0
+        %131 = OpLoad %float %130
+        %132 = OpFOrdGreaterThan %bool %129 %131
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %134 = OpLabel
+        %136 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %30 = OpLoad %int %136
+        %137 = OpConvertSToF %float %30
+        %138 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+         %31 = OpLoad %int %138
+        %139 = OpConvertSToF %float %31
+        %140 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+         %32 = OpLoad %int %140
+        %141 = OpConvertSToF %float %32
+        %142 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %33 = OpLoad %int %142
+        %143 = OpConvertSToF %float %33
+        %144 = OpCompositeConstruct %v4float %137 %139 %141 %143
+               OpStore %_GLF_color %144
+               OpBranch %133
+        %135 = OpLabel
+        %145 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+         %34 = OpLoad %int %145
+        %146 = OpConvertSToF %float %34
+        %147 = OpCompositeConstruct %v4float %146 %146 %146 %146
+               OpStore %_GLF_color %147
+               OpBranch %133
+        %133 = OpLabel
+        %148 = OpAccessChain %_ptr_Function_float %v0 %uint_0
+        %149 = OpLoad %float %148
+        %150 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+        %151 = OpLoad %float %150
+        %152 = OpFOrdLessThan %bool %149 %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+        %155 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+        %156 = OpLoad %float %155
+        %157 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_1
+               OpStore %157 %156
+               OpBranch %153
+        %153 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..4a1c25c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,77 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[12];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_15 : register(b0, space0) {
+  uint4 x_15[1];
+};
+
+void main_1() {
+  float3x4 m0 = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x4 m1 = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3 undefined = float3(0.0f, 0.0f, 0.0f);
+  float3 defined = float3(0.0f, 0.0f, 0.0f);
+  float4 v0 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v3 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const int x_17 = asint(x_6[4].x);
+  const int x_18 = asint(x_6[5].x);
+  const int x_19 = asint(x_6[6].x);
+  const int x_20 = asint(x_6[10].x);
+  const int x_21 = asint(x_6[7].x);
+  const int x_22 = asint(x_6[8].x);
+  const int x_23 = asint(x_6[11].x);
+  const int x_24 = asint(x_6[1].x);
+  const int x_25 = asint(x_6[2].x);
+  const int x_26 = asint(x_6[3].x);
+  m0 = float3x4(float4(float(x_17), float(x_18), float(x_19), 4.0f), float4(float(x_20), float(x_21), float(x_22), 8.0f), float4(float(x_23), float(x_24), float(x_25), float(x_26)));
+  const int x_27 = asint(x_6[4].x);
+  const float x_104 = float(x_27);
+  m1 = float3x4(float4(x_104, 0.0f, 0.0f, 0.0f), float4(0.0f, x_104, 0.0f, 0.0f), float4(0.0f, 0.0f, x_104, 0.0f));
+  undefined = ldexp(float3(1.0f, 1.0f, 1.0f), int3(500, 500, 500));
+  const int x_28 = asint(x_6[4].x);
+  const float x_111 = float(x_28);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  defined = ldexp(float3(x_111, x_111, x_111), int3(x_29, x_29, x_29));
+  v0 = mul(undefined, m0);
+  v1 = mul(undefined, m1);
+  v2 = mul(defined, m0);
+  v3 = mul(defined, m1);
+  const float x_129 = v2.x;
+  const float x_131 = v3.x;
+  if ((x_129 > x_131)) {
+    const int x_30 = asint(x_6[4].x);
+    const int x_31 = asint(x_6[9].x);
+    const int x_32 = asint(x_6[9].x);
+    const int x_33 = asint(x_6[4].x);
+    x_GLF_color = float4(float(x_30), float(x_31), float(x_32), float(x_33));
+  } else {
+    const int x_34 = asint(x_6[9].x);
+    const float x_146 = float(x_34);
+    x_GLF_color = float4(x_146, x_146, x_146, x_146);
+  }
+  const float x_149 = v0.x;
+  const float x_151 = v1.x;
+  if ((x_149 < x_151)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_156 = asfloat(x_15[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color.y = x_156;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8009725
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.msl
@@ -0,0 +1,100 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[12];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_15, thread float4* const tint_symbol_4) {
+  float3x4 m0 = float3x4(0.0f);
+  float3x4 m1 = float3x4(0.0f);
+  float3 undefined = 0.0f;
+  float3 defined = 0.0f;
+  float4 v0 = 0.0f;
+  float4 v1 = 0.0f;
+  float4 v2 = 0.0f;
+  float4 v3 = 0.0f;
+  int const x_17 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_18 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_19 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_20 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  int const x_21 = x_6.x_GLF_uniform_int_values.arr[7].el;
+  int const x_22 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_23 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_24 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  m0 = float3x4(float4(float(x_17), float(x_18), float(x_19), 4.0f), float4(float(x_20), float(x_21), float(x_22), 8.0f), float4(float(x_23), float(x_24), float(x_25), float(x_26)));
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  float const x_104 = float(x_27);
+  m1 = float3x4(float4(x_104, 0.0f, 0.0f, 0.0f), float4(0.0f, x_104, 0.0f, 0.0f), float4(0.0f, 0.0f, x_104, 0.0f));
+  undefined = ldexp(float3(1.0f, 1.0f, 1.0f), int3(500, 500, 500));
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  float const x_111 = float(x_28);
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  defined = ldexp(float3(x_111, x_111, x_111), int3(x_29, x_29, x_29));
+  float3x4 const x_116 = m0;
+  float3 const x_117 = undefined;
+  v0 = (x_116 * x_117);
+  float3x4 const x_119 = m1;
+  float3 const x_120 = undefined;
+  v1 = (x_119 * x_120);
+  float3x4 const x_122 = m0;
+  float3 const x_123 = defined;
+  v2 = (x_122 * x_123);
+  float3x4 const x_125 = m1;
+  float3 const x_126 = defined;
+  v3 = (x_125 * x_126);
+  float const x_129 = v2.x;
+  float const x_131 = v3.x;
+  if ((x_129 > x_131)) {
+    int const x_30 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_31 = x_6.x_GLF_uniform_int_values.arr[9].el;
+    int const x_32 = x_6.x_GLF_uniform_int_values.arr[9].el;
+    int const x_33 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    *(tint_symbol_4) = float4(float(x_30), float(x_31), float(x_32), float(x_33));
+  } else {
+    int const x_34 = x_6.x_GLF_uniform_int_values.arr[9].el;
+    float const x_146 = float(x_34);
+    *(tint_symbol_4) = float4(x_146, x_146, x_146, x_146);
+  }
+  float const x_149 = v0.x;
+  float const x_151 = v1.x;
+  if ((x_149 < x_151)) {
+    float const x_156 = x_15.x_GLF_uniform_float_values.arr[0].el;
+    (*(tint_symbol_4)).y = x_156;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_15 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_15, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5f8230b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,244 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 175
+; Schema: 0
+               OpCapability Shader
+         %96 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_15 "x_15"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m0 "m0"
+               OpName %m1 "m1"
+               OpName %undefined "undefined"
+               OpName %defined "defined"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %v3 "v3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_12 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_15 NonWritable
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_12 = OpConstant %uint 12
+%_arr_int_uint_12 = OpTypeArray %int %uint_12
+       %buf1 = OpTypeStruct %_arr_int_uint_12
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_15 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%mat3v4float = OpTypeMatrix %v4float 3
+%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
+         %27 = OpConstantNull %mat3v4float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %32 = OpConstantNull %v3float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_4 = OpConstant %int 4
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+     %int_10 = OpConstant %int 10
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+     %int_11 = OpConstant %int 11
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %float_4 = OpConstant %float 4
+    %float_8 = OpConstant %float 8
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %98 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %v3int = OpTypeVector %int 3
+    %int_500 = OpConstant %int 500
+        %101 = OpConstantComposite %v3int %int_500 %int_500 %int_500
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+        %163 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %m0 = OpVariable %_ptr_Function_mat3v4float Function %27
+         %m1 = OpVariable %_ptr_Function_mat3v4float Function %27
+  %undefined = OpVariable %_ptr_Function_v3float Function %32
+    %defined = OpVariable %_ptr_Function_v3float Function %32
+         %v0 = OpVariable %_ptr_Function_v4float Function %12
+         %v1 = OpVariable %_ptr_Function_v4float Function %12
+         %v2 = OpVariable %_ptr_Function_v4float Function %12
+         %v3 = OpVariable %_ptr_Function_v4float Function %12
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %43 = OpLoad %int %42
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %46 = OpLoad %int %45
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+         %49 = OpLoad %int %48
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+         %52 = OpLoad %int %51
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+         %55 = OpLoad %int %54
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+         %58 = OpLoad %int %57
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+         %61 = OpLoad %int %60
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %67 = OpLoad %int %66
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %43
+         %72 = OpConvertSToF %float %46
+         %73 = OpConvertSToF %float %49
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %float_4
+         %76 = OpConvertSToF %float %52
+         %77 = OpConvertSToF %float %55
+         %78 = OpConvertSToF %float %58
+         %80 = OpCompositeConstruct %v4float %76 %77 %78 %float_8
+         %81 = OpConvertSToF %float %61
+         %82 = OpConvertSToF %float %64
+         %83 = OpConvertSToF %float %67
+         %84 = OpConvertSToF %float %70
+         %85 = OpCompositeConstruct %v4float %81 %82 %83 %84
+         %86 = OpCompositeConstruct %mat3v4float %75 %80 %85
+               OpStore %m0 %86
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %91 = OpCompositeConstruct %v4float %89 %float_0 %float_0 %float_0
+         %92 = OpCompositeConstruct %v4float %float_0 %89 %float_0 %float_0
+         %93 = OpCompositeConstruct %v4float %float_0 %float_0 %89 %float_0
+         %94 = OpCompositeConstruct %mat3v4float %91 %92 %93
+               OpStore %m1 %94
+         %95 = OpExtInst %v3float %96 Ldexp %98 %101
+               OpStore %undefined %95
+        %102 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %103 = OpLoad %int %102
+        %104 = OpConvertSToF %float %103
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %107 = OpLoad %int %106
+        %109 = OpCompositeConstruct %v3float %104 %104 %104
+        %110 = OpCompositeConstruct %v3int %107 %107 %107
+        %108 = OpExtInst %v3float %96 Ldexp %109 %110
+               OpStore %defined %108
+        %111 = OpLoad %mat3v4float %m0
+        %112 = OpLoad %v3float %undefined
+        %113 = OpMatrixTimesVector %v4float %111 %112
+               OpStore %v0 %113
+        %114 = OpLoad %mat3v4float %m1
+        %115 = OpLoad %v3float %undefined
+        %116 = OpMatrixTimesVector %v4float %114 %115
+               OpStore %v1 %116
+        %117 = OpLoad %mat3v4float %m0
+        %118 = OpLoad %v3float %defined
+        %119 = OpMatrixTimesVector %v4float %117 %118
+               OpStore %v2 %119
+        %120 = OpLoad %mat3v4float %m1
+        %121 = OpLoad %v3float %defined
+        %122 = OpMatrixTimesVector %v4float %120 %121
+               OpStore %v3 %122
+        %124 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpAccessChain %_ptr_Function_float %v3 %uint_0
+        %127 = OpLoad %float %126
+        %128 = OpFOrdGreaterThan %bool %125 %127
+               OpSelectionMerge %130 None
+               OpBranchConditional %128 %131 %132
+        %131 = OpLabel
+        %133 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %134 = OpLoad %int %133
+        %136 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+        %139 = OpLoad %int %138
+        %140 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %141 = OpLoad %int %140
+        %142 = OpConvertSToF %float %134
+        %143 = OpConvertSToF %float %137
+        %144 = OpConvertSToF %float %139
+        %145 = OpConvertSToF %float %141
+        %146 = OpCompositeConstruct %v4float %142 %143 %144 %145
+               OpStore %x_GLF_color %146
+               OpBranch %130
+        %132 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+        %148 = OpLoad %int %147
+        %149 = OpConvertSToF %float %148
+        %150 = OpCompositeConstruct %v4float %149 %149 %149 %149
+               OpStore %x_GLF_color %150
+               OpBranch %130
+        %130 = OpLabel
+        %151 = OpAccessChain %_ptr_Function_float %v0 %uint_0
+        %152 = OpLoad %float %151
+        %153 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+        %154 = OpLoad %float %153
+        %155 = OpFOrdLessThan %bool %152 %154
+               OpSelectionMerge %156 None
+               OpBranchConditional %155 %157 %156
+        %157 = OpLabel
+        %159 = OpAccessChain %_ptr_Uniform_float %x_15 %uint_0 %int_0
+        %160 = OpLoad %float %159
+        %162 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %162 %160
+               OpBranch %156
+        %156 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %163
+%tint_symbol = OpFunctionParameter %main_out
+        %167 = OpLabel
+        %168 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %168
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %170 = OpLabel
+        %171 = OpFunctionCall %void %main_1
+        %173 = OpLoad %v4float %x_GLF_color
+        %174 = OpCompositeConstruct %main_out %173
+        %172 = OpFunctionCall %void %tint_symbol_2 %174
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e298a8c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,92 @@
+type Arr = [[stride(16)]] array<i32, 12>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+
+fn main_1() {
+  var m0 : mat3x4<f32>;
+  var m1 : mat3x4<f32>;
+  var undefined : vec3<f32>;
+  var defined : vec3<f32>;
+  var v0 : vec4<f32>;
+  var v1 : vec4<f32>;
+  var v2 : vec4<f32>;
+  var v3 : vec4<f32>;
+  let x_17 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_18 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_19 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_20 : i32 = x_6.x_GLF_uniform_int_values[10];
+  let x_21 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_22 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_23 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_24 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[3];
+  m0 = mat3x4<f32>(vec4<f32>(f32(x_17), f32(x_18), f32(x_19), 4.0), vec4<f32>(f32(x_20), f32(x_21), f32(x_22), 8.0), vec4<f32>(f32(x_23), f32(x_24), f32(x_25), f32(x_26)));
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_104 : f32 = f32(x_27);
+  m1 = mat3x4<f32>(vec4<f32>(x_104, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_104, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_104, 0.0));
+  undefined = ldexp(vec3<f32>(1.0, 1.0, 1.0), vec3<i32>(500, 500, 500));
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_111 : f32 = f32(x_28);
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  defined = ldexp(vec3<f32>(x_111, x_111, x_111), vec3<i32>(x_29, x_29, x_29));
+  let x_116 : mat3x4<f32> = m0;
+  let x_117 : vec3<f32> = undefined;
+  v0 = (x_116 * x_117);
+  let x_119 : mat3x4<f32> = m1;
+  let x_120 : vec3<f32> = undefined;
+  v1 = (x_119 * x_120);
+  let x_122 : mat3x4<f32> = m0;
+  let x_123 : vec3<f32> = defined;
+  v2 = (x_122 * x_123);
+  let x_125 : mat3x4<f32> = m1;
+  let x_126 : vec3<f32> = defined;
+  v3 = (x_125 * x_126);
+  let x_129 : f32 = v2.x;
+  let x_131 : f32 = v3.x;
+  if ((x_129 > x_131)) {
+    let x_30 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_31 : i32 = x_6.x_GLF_uniform_int_values[9];
+    let x_32 : i32 = x_6.x_GLF_uniform_int_values[9];
+    let x_33 : i32 = x_6.x_GLF_uniform_int_values[4];
+    x_GLF_color = vec4<f32>(f32(x_30), f32(x_31), f32(x_32), f32(x_33));
+  } else {
+    let x_34 : i32 = x_6.x_GLF_uniform_int_values[9];
+    let x_146 : f32 = f32(x_34);
+    x_GLF_color = vec4<f32>(x_146, x_146, x_146, x_146);
+  }
+  let x_149 : f32 = v0.x;
+  let x_151 : f32 = v1.x;
+  if ((x_149 < x_151)) {
+    let x_156 : f32 = x_15.x_GLF_uniform_float_values[0];
+    x_GLF_color.y = x_156;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
new file mode 100644
index 0000000..e298a8c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
@@ -0,0 +1,92 @@
+type Arr = [[stride(16)]] array<i32, 12>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+
+fn main_1() {
+  var m0 : mat3x4<f32>;
+  var m1 : mat3x4<f32>;
+  var undefined : vec3<f32>;
+  var defined : vec3<f32>;
+  var v0 : vec4<f32>;
+  var v1 : vec4<f32>;
+  var v2 : vec4<f32>;
+  var v3 : vec4<f32>;
+  let x_17 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_18 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_19 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_20 : i32 = x_6.x_GLF_uniform_int_values[10];
+  let x_21 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_22 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_23 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_24 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[3];
+  m0 = mat3x4<f32>(vec4<f32>(f32(x_17), f32(x_18), f32(x_19), 4.0), vec4<f32>(f32(x_20), f32(x_21), f32(x_22), 8.0), vec4<f32>(f32(x_23), f32(x_24), f32(x_25), f32(x_26)));
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_104 : f32 = f32(x_27);
+  m1 = mat3x4<f32>(vec4<f32>(x_104, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_104, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_104, 0.0));
+  undefined = ldexp(vec3<f32>(1.0, 1.0, 1.0), vec3<i32>(500, 500, 500));
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_111 : f32 = f32(x_28);
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  defined = ldexp(vec3<f32>(x_111, x_111, x_111), vec3<i32>(x_29, x_29, x_29));
+  let x_116 : mat3x4<f32> = m0;
+  let x_117 : vec3<f32> = undefined;
+  v0 = (x_116 * x_117);
+  let x_119 : mat3x4<f32> = m1;
+  let x_120 : vec3<f32> = undefined;
+  v1 = (x_119 * x_120);
+  let x_122 : mat3x4<f32> = m0;
+  let x_123 : vec3<f32> = defined;
+  v2 = (x_122 * x_123);
+  let x_125 : mat3x4<f32> = m1;
+  let x_126 : vec3<f32> = defined;
+  v3 = (x_125 * x_126);
+  let x_129 : f32 = v2.x;
+  let x_131 : f32 = v3.x;
+  if ((x_129 > x_131)) {
+    let x_30 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_31 : i32 = x_6.x_GLF_uniform_int_values[9];
+    let x_32 : i32 = x_6.x_GLF_uniform_int_values[9];
+    let x_33 : i32 = x_6.x_GLF_uniform_int_values[4];
+    x_GLF_color = vec4<f32>(f32(x_30), f32(x_31), f32(x_32), f32(x_33));
+  } else {
+    let x_34 : i32 = x_6.x_GLF_uniform_int_values[9];
+    let x_146 : f32 = f32(x_34);
+    x_GLF_color = vec4<f32>(x_146, x_146, x_146, x_146);
+  }
+  let x_149 : f32 = v0.x;
+  let x_151 : f32 = v1.x;
+  if ((x_149 < x_151)) {
+    let x_156 : f32 = x_15.x_GLF_uniform_float_values[0];
+    x_GLF_color.y = x_156;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4a1c25c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,77 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[12];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_15 : register(b0, space0) {
+  uint4 x_15[1];
+};
+
+void main_1() {
+  float3x4 m0 = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x4 m1 = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3 undefined = float3(0.0f, 0.0f, 0.0f);
+  float3 defined = float3(0.0f, 0.0f, 0.0f);
+  float4 v0 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v3 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const int x_17 = asint(x_6[4].x);
+  const int x_18 = asint(x_6[5].x);
+  const int x_19 = asint(x_6[6].x);
+  const int x_20 = asint(x_6[10].x);
+  const int x_21 = asint(x_6[7].x);
+  const int x_22 = asint(x_6[8].x);
+  const int x_23 = asint(x_6[11].x);
+  const int x_24 = asint(x_6[1].x);
+  const int x_25 = asint(x_6[2].x);
+  const int x_26 = asint(x_6[3].x);
+  m0 = float3x4(float4(float(x_17), float(x_18), float(x_19), 4.0f), float4(float(x_20), float(x_21), float(x_22), 8.0f), float4(float(x_23), float(x_24), float(x_25), float(x_26)));
+  const int x_27 = asint(x_6[4].x);
+  const float x_104 = float(x_27);
+  m1 = float3x4(float4(x_104, 0.0f, 0.0f, 0.0f), float4(0.0f, x_104, 0.0f, 0.0f), float4(0.0f, 0.0f, x_104, 0.0f));
+  undefined = ldexp(float3(1.0f, 1.0f, 1.0f), int3(500, 500, 500));
+  const int x_28 = asint(x_6[4].x);
+  const float x_111 = float(x_28);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  defined = ldexp(float3(x_111, x_111, x_111), int3(x_29, x_29, x_29));
+  v0 = mul(undefined, m0);
+  v1 = mul(undefined, m1);
+  v2 = mul(defined, m0);
+  v3 = mul(defined, m1);
+  const float x_129 = v2.x;
+  const float x_131 = v3.x;
+  if ((x_129 > x_131)) {
+    const int x_30 = asint(x_6[4].x);
+    const int x_31 = asint(x_6[9].x);
+    const int x_32 = asint(x_6[9].x);
+    const int x_33 = asint(x_6[4].x);
+    x_GLF_color = float4(float(x_30), float(x_31), float(x_32), float(x_33));
+  } else {
+    const int x_34 = asint(x_6[9].x);
+    const float x_146 = float(x_34);
+    x_GLF_color = float4(x_146, x_146, x_146, x_146);
+  }
+  const float x_149 = v0.x;
+  const float x_151 = v1.x;
+  if ((x_149 < x_151)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_156 = asfloat(x_15[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color.y = x_156;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8009725
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.msl
@@ -0,0 +1,100 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[12];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_15, thread float4* const tint_symbol_4) {
+  float3x4 m0 = float3x4(0.0f);
+  float3x4 m1 = float3x4(0.0f);
+  float3 undefined = 0.0f;
+  float3 defined = 0.0f;
+  float4 v0 = 0.0f;
+  float4 v1 = 0.0f;
+  float4 v2 = 0.0f;
+  float4 v3 = 0.0f;
+  int const x_17 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_18 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_19 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_20 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  int const x_21 = x_6.x_GLF_uniform_int_values.arr[7].el;
+  int const x_22 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_23 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_24 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  m0 = float3x4(float4(float(x_17), float(x_18), float(x_19), 4.0f), float4(float(x_20), float(x_21), float(x_22), 8.0f), float4(float(x_23), float(x_24), float(x_25), float(x_26)));
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  float const x_104 = float(x_27);
+  m1 = float3x4(float4(x_104, 0.0f, 0.0f, 0.0f), float4(0.0f, x_104, 0.0f, 0.0f), float4(0.0f, 0.0f, x_104, 0.0f));
+  undefined = ldexp(float3(1.0f, 1.0f, 1.0f), int3(500, 500, 500));
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  float const x_111 = float(x_28);
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  defined = ldexp(float3(x_111, x_111, x_111), int3(x_29, x_29, x_29));
+  float3x4 const x_116 = m0;
+  float3 const x_117 = undefined;
+  v0 = (x_116 * x_117);
+  float3x4 const x_119 = m1;
+  float3 const x_120 = undefined;
+  v1 = (x_119 * x_120);
+  float3x4 const x_122 = m0;
+  float3 const x_123 = defined;
+  v2 = (x_122 * x_123);
+  float3x4 const x_125 = m1;
+  float3 const x_126 = defined;
+  v3 = (x_125 * x_126);
+  float const x_129 = v2.x;
+  float const x_131 = v3.x;
+  if ((x_129 > x_131)) {
+    int const x_30 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_31 = x_6.x_GLF_uniform_int_values.arr[9].el;
+    int const x_32 = x_6.x_GLF_uniform_int_values.arr[9].el;
+    int const x_33 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    *(tint_symbol_4) = float4(float(x_30), float(x_31), float(x_32), float(x_33));
+  } else {
+    int const x_34 = x_6.x_GLF_uniform_int_values.arr[9].el;
+    float const x_146 = float(x_34);
+    *(tint_symbol_4) = float4(x_146, x_146, x_146, x_146);
+  }
+  float const x_149 = v0.x;
+  float const x_151 = v1.x;
+  if ((x_149 < x_151)) {
+    float const x_156 = x_15.x_GLF_uniform_float_values.arr[0].el;
+    (*(tint_symbol_4)).y = x_156;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_15 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_15, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5f8230b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,244 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 175
+; Schema: 0
+               OpCapability Shader
+         %96 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_15 "x_15"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m0 "m0"
+               OpName %m1 "m1"
+               OpName %undefined "undefined"
+               OpName %defined "defined"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %v3 "v3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_12 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_15 NonWritable
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_12 = OpConstant %uint 12
+%_arr_int_uint_12 = OpTypeArray %int %uint_12
+       %buf1 = OpTypeStruct %_arr_int_uint_12
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_15 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%mat3v4float = OpTypeMatrix %v4float 3
+%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
+         %27 = OpConstantNull %mat3v4float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %32 = OpConstantNull %v3float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_4 = OpConstant %int 4
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+     %int_10 = OpConstant %int 10
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+     %int_11 = OpConstant %int 11
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %float_4 = OpConstant %float 4
+    %float_8 = OpConstant %float 8
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %98 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %v3int = OpTypeVector %int 3
+    %int_500 = OpConstant %int 500
+        %101 = OpConstantComposite %v3int %int_500 %int_500 %int_500
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+        %163 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %m0 = OpVariable %_ptr_Function_mat3v4float Function %27
+         %m1 = OpVariable %_ptr_Function_mat3v4float Function %27
+  %undefined = OpVariable %_ptr_Function_v3float Function %32
+    %defined = OpVariable %_ptr_Function_v3float Function %32
+         %v0 = OpVariable %_ptr_Function_v4float Function %12
+         %v1 = OpVariable %_ptr_Function_v4float Function %12
+         %v2 = OpVariable %_ptr_Function_v4float Function %12
+         %v3 = OpVariable %_ptr_Function_v4float Function %12
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %43 = OpLoad %int %42
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %46 = OpLoad %int %45
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+         %49 = OpLoad %int %48
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+         %52 = OpLoad %int %51
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+         %55 = OpLoad %int %54
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+         %58 = OpLoad %int %57
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+         %61 = OpLoad %int %60
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %67 = OpLoad %int %66
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %43
+         %72 = OpConvertSToF %float %46
+         %73 = OpConvertSToF %float %49
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %float_4
+         %76 = OpConvertSToF %float %52
+         %77 = OpConvertSToF %float %55
+         %78 = OpConvertSToF %float %58
+         %80 = OpCompositeConstruct %v4float %76 %77 %78 %float_8
+         %81 = OpConvertSToF %float %61
+         %82 = OpConvertSToF %float %64
+         %83 = OpConvertSToF %float %67
+         %84 = OpConvertSToF %float %70
+         %85 = OpCompositeConstruct %v4float %81 %82 %83 %84
+         %86 = OpCompositeConstruct %mat3v4float %75 %80 %85
+               OpStore %m0 %86
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %91 = OpCompositeConstruct %v4float %89 %float_0 %float_0 %float_0
+         %92 = OpCompositeConstruct %v4float %float_0 %89 %float_0 %float_0
+         %93 = OpCompositeConstruct %v4float %float_0 %float_0 %89 %float_0
+         %94 = OpCompositeConstruct %mat3v4float %91 %92 %93
+               OpStore %m1 %94
+         %95 = OpExtInst %v3float %96 Ldexp %98 %101
+               OpStore %undefined %95
+        %102 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %103 = OpLoad %int %102
+        %104 = OpConvertSToF %float %103
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %107 = OpLoad %int %106
+        %109 = OpCompositeConstruct %v3float %104 %104 %104
+        %110 = OpCompositeConstruct %v3int %107 %107 %107
+        %108 = OpExtInst %v3float %96 Ldexp %109 %110
+               OpStore %defined %108
+        %111 = OpLoad %mat3v4float %m0
+        %112 = OpLoad %v3float %undefined
+        %113 = OpMatrixTimesVector %v4float %111 %112
+               OpStore %v0 %113
+        %114 = OpLoad %mat3v4float %m1
+        %115 = OpLoad %v3float %undefined
+        %116 = OpMatrixTimesVector %v4float %114 %115
+               OpStore %v1 %116
+        %117 = OpLoad %mat3v4float %m0
+        %118 = OpLoad %v3float %defined
+        %119 = OpMatrixTimesVector %v4float %117 %118
+               OpStore %v2 %119
+        %120 = OpLoad %mat3v4float %m1
+        %121 = OpLoad %v3float %defined
+        %122 = OpMatrixTimesVector %v4float %120 %121
+               OpStore %v3 %122
+        %124 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpAccessChain %_ptr_Function_float %v3 %uint_0
+        %127 = OpLoad %float %126
+        %128 = OpFOrdGreaterThan %bool %125 %127
+               OpSelectionMerge %130 None
+               OpBranchConditional %128 %131 %132
+        %131 = OpLabel
+        %133 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %134 = OpLoad %int %133
+        %136 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+        %139 = OpLoad %int %138
+        %140 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %141 = OpLoad %int %140
+        %142 = OpConvertSToF %float %134
+        %143 = OpConvertSToF %float %137
+        %144 = OpConvertSToF %float %139
+        %145 = OpConvertSToF %float %141
+        %146 = OpCompositeConstruct %v4float %142 %143 %144 %145
+               OpStore %x_GLF_color %146
+               OpBranch %130
+        %132 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+        %148 = OpLoad %int %147
+        %149 = OpConvertSToF %float %148
+        %150 = OpCompositeConstruct %v4float %149 %149 %149 %149
+               OpStore %x_GLF_color %150
+               OpBranch %130
+        %130 = OpLabel
+        %151 = OpAccessChain %_ptr_Function_float %v0 %uint_0
+        %152 = OpLoad %float %151
+        %153 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+        %154 = OpLoad %float %153
+        %155 = OpFOrdLessThan %bool %152 %154
+               OpSelectionMerge %156 None
+               OpBranchConditional %155 %157 %156
+        %157 = OpLabel
+        %159 = OpAccessChain %_ptr_Uniform_float %x_15 %uint_0 %int_0
+        %160 = OpLoad %float %159
+        %162 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %162 %160
+               OpBranch %156
+        %156 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %163
+%tint_symbol = OpFunctionParameter %main_out
+        %167 = OpLabel
+        %168 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %168
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %170 = OpLabel
+        %171 = OpFunctionCall %void %main_1
+        %173 = OpLoad %v4float %x_GLF_color
+        %174 = OpCompositeConstruct %main_out %173
+        %172 = OpFunctionCall %void %tint_symbol_2 %174
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e298a8c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,92 @@
+type Arr = [[stride(16)]] array<i32, 12>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+
+fn main_1() {
+  var m0 : mat3x4<f32>;
+  var m1 : mat3x4<f32>;
+  var undefined : vec3<f32>;
+  var defined : vec3<f32>;
+  var v0 : vec4<f32>;
+  var v1 : vec4<f32>;
+  var v2 : vec4<f32>;
+  var v3 : vec4<f32>;
+  let x_17 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_18 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_19 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_20 : i32 = x_6.x_GLF_uniform_int_values[10];
+  let x_21 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_22 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_23 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_24 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[3];
+  m0 = mat3x4<f32>(vec4<f32>(f32(x_17), f32(x_18), f32(x_19), 4.0), vec4<f32>(f32(x_20), f32(x_21), f32(x_22), 8.0), vec4<f32>(f32(x_23), f32(x_24), f32(x_25), f32(x_26)));
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_104 : f32 = f32(x_27);
+  m1 = mat3x4<f32>(vec4<f32>(x_104, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_104, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_104, 0.0));
+  undefined = ldexp(vec3<f32>(1.0, 1.0, 1.0), vec3<i32>(500, 500, 500));
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_111 : f32 = f32(x_28);
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  defined = ldexp(vec3<f32>(x_111, x_111, x_111), vec3<i32>(x_29, x_29, x_29));
+  let x_116 : mat3x4<f32> = m0;
+  let x_117 : vec3<f32> = undefined;
+  v0 = (x_116 * x_117);
+  let x_119 : mat3x4<f32> = m1;
+  let x_120 : vec3<f32> = undefined;
+  v1 = (x_119 * x_120);
+  let x_122 : mat3x4<f32> = m0;
+  let x_123 : vec3<f32> = defined;
+  v2 = (x_122 * x_123);
+  let x_125 : mat3x4<f32> = m1;
+  let x_126 : vec3<f32> = defined;
+  v3 = (x_125 * x_126);
+  let x_129 : f32 = v2.x;
+  let x_131 : f32 = v3.x;
+  if ((x_129 > x_131)) {
+    let x_30 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_31 : i32 = x_6.x_GLF_uniform_int_values[9];
+    let x_32 : i32 = x_6.x_GLF_uniform_int_values[9];
+    let x_33 : i32 = x_6.x_GLF_uniform_int_values[4];
+    x_GLF_color = vec4<f32>(f32(x_30), f32(x_31), f32(x_32), f32(x_33));
+  } else {
+    let x_34 : i32 = x_6.x_GLF_uniform_int_values[9];
+    let x_146 : f32 = f32(x_34);
+    x_GLF_color = vec4<f32>(x_146, x_146, x_146, x_146);
+  }
+  let x_149 : f32 = v0.x;
+  let x_151 : f32 = v1.x;
+  if ((x_149 < x_151)) {
+    let x_156 : f32 = x_15.x_GLF_uniform_float_values[0];
+    x_GLF_color.y = x_156;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm
new file mode 100644
index 0000000..7853f53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm
@@ -0,0 +1,100 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %v "v"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %uint_100 = OpConstant %uint 100
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %28 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %v = OpVariable %_ptr_Function_v4float Function
+         %29 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %30 = OpLoad %int %29
+               OpStore %i %30
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %35 %37
+               OpBranchConditional %38 %39 %32
+         %39 = OpLabel
+         %40 = OpExtInst %v4float %1 UnpackUnorm4x8 %uint_100
+               OpStore %v %40
+         %41 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %42 = OpLoad %float %41
+         %43 = OpConvertFToS %int %42
+         %44 = OpLoad %int %i
+         %45 = OpSGreaterThan %bool %43 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %_GLF_color %51
+               OpReturn
+         %46 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %31
+         %32 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %56 %59 %62 %65
+               OpStore %_GLF_color %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..7fc33ee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+float4 tint_unpack4x8unorm(uint param_0) {
+  uint j = param_0;
+  uint4 i = uint4(j & 0xff, (j >> 8) & 0xff, (j >> 16) & 0xff, j >> 24);
+  return float4(i) / 255.0;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const int x_30 = asint(x_6[1].x);
+  i = x_30;
+  while (true) {
+    const int x_35 = i;
+    const int x_37 = asint(x_6[2].x);
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    v = tint_unpack4x8unorm(100u);
+    const float x_42 = v.x;
+    if ((int(x_42) > i)) {
+      const int x_49 = asint(x_6[1].x);
+      const float x_50 = float(x_49);
+      x_GLF_color = float4(x_50, x_50, x_50, x_50);
+      return;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_55 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_58 = asint(x_6[1].x);
+  const int x_61 = asint(x_6[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_64 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5daa237
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,62 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  float4 v = 0.0f;
+  int const x_30 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_30;
+  while (true) {
+    int const x_35 = i;
+    int const x_37 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    v = unpack_unorm4x8_to_float(100u);
+    float const x_42 = v.x;
+    int const x_44 = i;
+    if ((int(x_42) > x_44)) {
+      int const x_49 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      float const x_50 = float(x_49);
+      *(tint_symbol_4) = float4(x_50, x_50, x_50, x_50);
+      return;
+    }
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_61 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_64 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1b6c2cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,138 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 85
+; Schema: 0
+               OpCapability Shader
+         %43 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+   %uint_100 = OpConstant %uint 100
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %73 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %v = OpVariable %_ptr_Function_v4float Function %12
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %28 = OpLoad %int %27
+               OpStore %i %28
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %36 = OpLoad %int %35
+         %37 = OpSLessThan %bool %33 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %30
+         %39 = OpLabel
+         %42 = OpExtInst %v4float %43 UnpackUnorm4x8 %uint_100
+               OpStore %v %42
+         %46 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %47 = OpLoad %float %46
+         %48 = OpLoad %int %i
+         %49 = OpConvertFToS %int %47
+         %50 = OpSGreaterThan %bool %49 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpCompositeConstruct %v4float %55 %55 %55 %55
+               OpStore %x_GLF_color %56
+               OpReturn
+         %51 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %57 = OpLoad %int %i
+         %58 = OpIAdd %int %57 %int_1
+               OpStore %i %58
+               OpBranch %29
+         %30 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %73
+%tint_symbol = OpFunctionParameter %main_out
+         %77 = OpLabel
+         %78 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %78
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %80 = OpLabel
+         %81 = OpFunctionCall %void %main_1
+         %83 = OpLoad %v4float %x_GLF_color
+         %84 = OpCompositeConstruct %main_out %83
+         %82 = OpFunctionCall %void %tint_symbol_2 %84
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a67101b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var v : vec4<f32>;
+  let x_30 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_30;
+  loop {
+    let x_35 : i32 = i;
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    v = unpack4x8unorm(100u);
+    let x_42 : f32 = v.x;
+    let x_44 : i32 = i;
+    if ((i32(x_42) > x_44)) {
+      let x_49 : i32 = x_6.x_GLF_uniform_int_values[1];
+      let x_50 : f32 = f32(x_49);
+      x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+      return;
+    }
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_61 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_64 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
new file mode 100644
index 0000000..a67101b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var v : vec4<f32>;
+  let x_30 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_30;
+  loop {
+    let x_35 : i32 = i;
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    v = unpack4x8unorm(100u);
+    let x_42 : f32 = v.x;
+    let x_44 : i32 = i;
+    if ((i32(x_42) > x_44)) {
+      let x_49 : i32 = x_6.x_GLF_uniform_int_values[1];
+      let x_50 : f32 = f32(x_49);
+      x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+      return;
+    }
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_61 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_64 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7fc33ee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+float4 tint_unpack4x8unorm(uint param_0) {
+  uint j = param_0;
+  uint4 i = uint4(j & 0xff, (j >> 8) & 0xff, (j >> 16) & 0xff, j >> 24);
+  return float4(i) / 255.0;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const int x_30 = asint(x_6[1].x);
+  i = x_30;
+  while (true) {
+    const int x_35 = i;
+    const int x_37 = asint(x_6[2].x);
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    v = tint_unpack4x8unorm(100u);
+    const float x_42 = v.x;
+    if ((int(x_42) > i)) {
+      const int x_49 = asint(x_6[1].x);
+      const float x_50 = float(x_49);
+      x_GLF_color = float4(x_50, x_50, x_50, x_50);
+      return;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_55 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_58 = asint(x_6[1].x);
+  const int x_61 = asint(x_6[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_64 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5daa237
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,62 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  float4 v = 0.0f;
+  int const x_30 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_30;
+  while (true) {
+    int const x_35 = i;
+    int const x_37 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    v = unpack_unorm4x8_to_float(100u);
+    float const x_42 = v.x;
+    int const x_44 = i;
+    if ((int(x_42) > x_44)) {
+      int const x_49 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      float const x_50 = float(x_49);
+      *(tint_symbol_4) = float4(x_50, x_50, x_50, x_50);
+      return;
+    }
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_61 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_64 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1b6c2cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,138 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 85
+; Schema: 0
+               OpCapability Shader
+         %43 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+   %uint_100 = OpConstant %uint 100
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %73 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %v = OpVariable %_ptr_Function_v4float Function %12
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %28 = OpLoad %int %27
+               OpStore %i %28
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %36 = OpLoad %int %35
+         %37 = OpSLessThan %bool %33 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %30
+         %39 = OpLabel
+         %42 = OpExtInst %v4float %43 UnpackUnorm4x8 %uint_100
+               OpStore %v %42
+         %46 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %47 = OpLoad %float %46
+         %48 = OpLoad %int %i
+         %49 = OpConvertFToS %int %47
+         %50 = OpSGreaterThan %bool %49 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpCompositeConstruct %v4float %55 %55 %55 %55
+               OpStore %x_GLF_color %56
+               OpReturn
+         %51 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %57 = OpLoad %int %i
+         %58 = OpIAdd %int %57 %int_1
+               OpStore %i %58
+               OpBranch %29
+         %30 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %73
+%tint_symbol = OpFunctionParameter %main_out
+         %77 = OpLabel
+         %78 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %78
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %80 = OpLabel
+         %81 = OpFunctionCall %void %main_1
+         %83 = OpLoad %v4float %x_GLF_color
+         %84 = OpCompositeConstruct %main_out %83
+         %82 = OpFunctionCall %void %tint_symbol_2 %84
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a67101b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var v : vec4<f32>;
+  let x_30 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_30;
+  loop {
+    let x_35 : i32 = i;
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    v = unpack4x8unorm(100u);
+    let x_42 : f32 = v.x;
+    let x_44 : i32 = i;
+    if ((i32(x_42) > x_44)) {
+      let x_49 : i32 = x_6.x_GLF_uniform_int_values[1];
+      let x_50 : f32 = f32(x_49);
+      x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+      return;
+    }
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_61 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_64 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm
new file mode 100644
index 0000000..28c1c7a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm
@@ -0,0 +1,133 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %arr "arr"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %b "b"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %c "c"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3_0 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3
+%_arr_int_uint_3_0 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3_0
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %16
+         %38 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_int_uint_3 Function
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpCompositeConstruct %_arr_int_uint_3 %40 %42 %44
+               OpStore %arr %45
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Function_int %arr %47
+         %49 = OpLoad %int %48
+               OpStore %a %49
+         %50 = OpLoad %int %a
+         %51 = OpISub %int %50 %int_1
+               OpStore %b %51
+         %52 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpFOrdLessThan %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+         %59 = OpLoad %int %b
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %b %60
+               OpBranch %57
+         %57 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %62 = OpLoad %int %61
+               OpStore %c %62
+         %63 = OpLoad %int %c
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %67 = OpLoad %int %66
+         %68 = OpExtInst %int %1 SClamp %63 %65 %67
+         %69 = OpLoad %int %b
+         %70 = OpAccessChain %_ptr_Function_int %arr %68
+               OpStore %70 %69
+         %71 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Function_int %arr %72
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Function_int %arr %77
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %79
+         %81 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Function_int %arr %82
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Function_int %arr %87
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %89
+         %91 = OpCompositeConstruct %v4float %75 %80 %85 %90
+               OpStore %_GLF_color %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..82c801a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,68 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int arr[3] = (int[3])0;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  const int x_40 = asint(x_7[1].x);
+  const int x_42 = asint(x_7[1].x);
+  const int x_44 = asint(x_7[1].x);
+  const int tint_symbol_6[3] = {x_40, x_42, x_44};
+  arr = tint_symbol_6;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const int x_49 = arr[x_47];
+  a = x_49;
+  b = (a - 1);
+  const float x_53 = gl_FragCoord.x;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_55 = asfloat(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_53 < x_55)) {
+    b = (b + 1);
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_62 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  c = x_62;
+  const int x_63 = c;
+  const int x_65 = asint(x_7[1].x);
+  const int x_67 = asint(x_7[2].x);
+  arr[clamp(x_63, x_65, x_67)] = b;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_72 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_74 = arr[x_72];
+  const int x_77 = asint(x_7[1].x);
+  const int x_79 = arr[x_77];
+  const int x_82 = asint(x_7[1].x);
+  const int x_84 = arr[x_82];
+  const int x_87 = asint(x_7[2].x);
+  const int x_89 = arr[x_87];
+  x_GLF_color = float4(float(x_74), float(x_79), float(x_84), float(x_89));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..76666da
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_11, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper_2 arr = {};
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int const x_40 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_42 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_44 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  tint_array_wrapper_2 const tint_symbol_4 = {.arr={x_40, x_42, x_44}};
+  arr = tint_symbol_4;
+  int const x_47 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_49 = arr.arr[x_47];
+  a = x_49;
+  int const x_50 = a;
+  b = (x_50 - 1);
+  float const x_53 = (*(tint_symbol_6)).x;
+  float const x_55 = x_11.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_53 < x_55)) {
+    int const x_59 = b;
+    b = (x_59 + 1);
+  }
+  int const x_62 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  c = x_62;
+  int const x_63 = c;
+  int const x_65 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_67 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  int const x_69 = b;
+  arr.arr[clamp(x_63, x_65, x_67)] = x_69;
+  int const x_72 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_74 = arr.arr[x_72];
+  int const x_77 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_79 = arr.arr[x_77];
+  int const x_82 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_84 = arr.arr[x_82];
+  int const x_87 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  int const x_89 = arr.arr[x_87];
+  *(tint_symbol_7) = float4(float(x_74), float(x_79), float(x_84), float(x_89));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, x_11, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5b91fa9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,173 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 111
+; Schema: 0
+               OpCapability Shader
+         %75 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_3_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_arr_int_uint_3_0 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3_0 = OpTypePointer Function %_arr_int_uint_3_0
+         %30 = OpConstantNull %_arr_int_uint_3_0
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_int_uint_3_0 Function %30
+          %a = OpVariable %_ptr_Function_int Function %33
+          %b = OpVariable %_ptr_Function_int Function %33
+          %c = OpVariable %_ptr_Function_int Function %33
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpCompositeConstruct %_arr_int_uint_3_0 %40 %42 %44
+               OpStore %arr %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Function_int %arr %48
+         %50 = OpLoad %int %49
+               OpStore %a %50
+         %51 = OpLoad %int %a
+         %52 = OpISub %int %51 %int_1
+               OpStore %b %52
+         %54 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %55 = OpLoad %float %54
+         %57 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpFOrdLessThan %bool %55 %58
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %61
+         %62 = OpLabel
+         %63 = OpLoad %int %b
+         %64 = OpIAdd %int %63 %int_1
+               OpStore %b %64
+               OpBranch %61
+         %61 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %66 = OpLoad %int %65
+               OpStore %c %66
+         %67 = OpLoad %int %c
+         %68 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %71 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %72 = OpLoad %int %71
+         %73 = OpLoad %int %b
+         %74 = OpExtInst %int %75 SClamp %67 %69 %72
+         %76 = OpAccessChain %_ptr_Function_int %arr %74
+               OpStore %76 %73
+         %77 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Function_int %arr %78
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Function_int %arr %82
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Function_int %arr %86
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Function_int %arr %90
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %80
+         %94 = OpConvertSToF %float %84
+         %95 = OpConvertSToF %float %88
+         %96 = OpConvertSToF %float %92
+         %97 = OpCompositeConstruct %v4float %93 %94 %95 %96
+               OpStore %x_GLF_color %97
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %98
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %105 = OpLabel
+        %106 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %106
+        %107 = OpFunctionCall %void %main_1
+        %109 = OpLoad %v4float %x_GLF_color
+        %110 = OpCompositeConstruct %main_out %109
+        %108 = OpFunctionCall %void %tint_symbol_3 %110
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..eac5611
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,72 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<i32, 3>;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  let x_40 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_44 : i32 = x_7.x_GLF_uniform_int_values[1];
+  arr = array<i32, 3>(x_40, x_42, x_44);
+  let x_47 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_49 : i32 = arr[x_47];
+  a = x_49;
+  let x_50 : i32 = a;
+  b = (x_50 - 1);
+  let x_53 : f32 = gl_FragCoord.x;
+  let x_55 : f32 = x_11.x_GLF_uniform_float_values[0];
+  if ((x_53 < x_55)) {
+    let x_59 : i32 = b;
+    b = (x_59 + 1);
+  }
+  let x_62 : i32 = x_7.x_GLF_uniform_int_values[0];
+  c = x_62;
+  let x_63 : i32 = c;
+  let x_65 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_67 : i32 = x_7.x_GLF_uniform_int_values[2];
+  let x_69 : i32 = b;
+  arr[clamp(x_63, x_65, x_67)] = x_69;
+  let x_72 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_74 : i32 = arr[x_72];
+  let x_77 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_79 : i32 = arr[x_77];
+  let x_82 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_84 : i32 = arr[x_82];
+  let x_87 : i32 = x_7.x_GLF_uniform_int_values[2];
+  let x_89 : i32 = arr[x_87];
+  x_GLF_color = vec4<f32>(f32(x_74), f32(x_79), f32(x_84), f32(x_89));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
new file mode 100644
index 0000000..eac5611
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
@@ -0,0 +1,72 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<i32, 3>;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  let x_40 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_44 : i32 = x_7.x_GLF_uniform_int_values[1];
+  arr = array<i32, 3>(x_40, x_42, x_44);
+  let x_47 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_49 : i32 = arr[x_47];
+  a = x_49;
+  let x_50 : i32 = a;
+  b = (x_50 - 1);
+  let x_53 : f32 = gl_FragCoord.x;
+  let x_55 : f32 = x_11.x_GLF_uniform_float_values[0];
+  if ((x_53 < x_55)) {
+    let x_59 : i32 = b;
+    b = (x_59 + 1);
+  }
+  let x_62 : i32 = x_7.x_GLF_uniform_int_values[0];
+  c = x_62;
+  let x_63 : i32 = c;
+  let x_65 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_67 : i32 = x_7.x_GLF_uniform_int_values[2];
+  let x_69 : i32 = b;
+  arr[clamp(x_63, x_65, x_67)] = x_69;
+  let x_72 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_74 : i32 = arr[x_72];
+  let x_77 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_79 : i32 = arr[x_77];
+  let x_82 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_84 : i32 = arr[x_82];
+  let x_87 : i32 = x_7.x_GLF_uniform_int_values[2];
+  let x_89 : i32 = arr[x_87];
+  x_GLF_color = vec4<f32>(f32(x_74), f32(x_79), f32(x_84), f32(x_89));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..82c801a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,68 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int arr[3] = (int[3])0;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  const int x_40 = asint(x_7[1].x);
+  const int x_42 = asint(x_7[1].x);
+  const int x_44 = asint(x_7[1].x);
+  const int tint_symbol_6[3] = {x_40, x_42, x_44};
+  arr = tint_symbol_6;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const int x_49 = arr[x_47];
+  a = x_49;
+  b = (a - 1);
+  const float x_53 = gl_FragCoord.x;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_55 = asfloat(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_53 < x_55)) {
+    b = (b + 1);
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_62 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  c = x_62;
+  const int x_63 = c;
+  const int x_65 = asint(x_7[1].x);
+  const int x_67 = asint(x_7[2].x);
+  arr[clamp(x_63, x_65, x_67)] = b;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_72 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_74 = arr[x_72];
+  const int x_77 = asint(x_7[1].x);
+  const int x_79 = arr[x_77];
+  const int x_82 = asint(x_7[1].x);
+  const int x_84 = arr[x_82];
+  const int x_87 = asint(x_7[2].x);
+  const int x_89 = arr[x_87];
+  x_GLF_color = float4(float(x_74), float(x_79), float(x_84), float(x_89));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..76666da
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_11, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper_2 arr = {};
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int const x_40 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_42 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_44 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  tint_array_wrapper_2 const tint_symbol_4 = {.arr={x_40, x_42, x_44}};
+  arr = tint_symbol_4;
+  int const x_47 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_49 = arr.arr[x_47];
+  a = x_49;
+  int const x_50 = a;
+  b = (x_50 - 1);
+  float const x_53 = (*(tint_symbol_6)).x;
+  float const x_55 = x_11.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_53 < x_55)) {
+    int const x_59 = b;
+    b = (x_59 + 1);
+  }
+  int const x_62 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  c = x_62;
+  int const x_63 = c;
+  int const x_65 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_67 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  int const x_69 = b;
+  arr.arr[clamp(x_63, x_65, x_67)] = x_69;
+  int const x_72 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_74 = arr.arr[x_72];
+  int const x_77 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_79 = arr.arr[x_77];
+  int const x_82 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_84 = arr.arr[x_82];
+  int const x_87 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  int const x_89 = arr.arr[x_87];
+  *(tint_symbol_7) = float4(float(x_74), float(x_79), float(x_84), float(x_89));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, x_11, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5b91fa9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,173 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 111
+; Schema: 0
+               OpCapability Shader
+         %75 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_3_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_arr_int_uint_3_0 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3_0 = OpTypePointer Function %_arr_int_uint_3_0
+         %30 = OpConstantNull %_arr_int_uint_3_0
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_int_uint_3_0 Function %30
+          %a = OpVariable %_ptr_Function_int Function %33
+          %b = OpVariable %_ptr_Function_int Function %33
+          %c = OpVariable %_ptr_Function_int Function %33
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpCompositeConstruct %_arr_int_uint_3_0 %40 %42 %44
+               OpStore %arr %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Function_int %arr %48
+         %50 = OpLoad %int %49
+               OpStore %a %50
+         %51 = OpLoad %int %a
+         %52 = OpISub %int %51 %int_1
+               OpStore %b %52
+         %54 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %55 = OpLoad %float %54
+         %57 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpFOrdLessThan %bool %55 %58
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %61
+         %62 = OpLabel
+         %63 = OpLoad %int %b
+         %64 = OpIAdd %int %63 %int_1
+               OpStore %b %64
+               OpBranch %61
+         %61 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %66 = OpLoad %int %65
+               OpStore %c %66
+         %67 = OpLoad %int %c
+         %68 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %71 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %72 = OpLoad %int %71
+         %73 = OpLoad %int %b
+         %74 = OpExtInst %int %75 SClamp %67 %69 %72
+         %76 = OpAccessChain %_ptr_Function_int %arr %74
+               OpStore %76 %73
+         %77 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Function_int %arr %78
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Function_int %arr %82
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Function_int %arr %86
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Function_int %arr %90
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %80
+         %94 = OpConvertSToF %float %84
+         %95 = OpConvertSToF %float %88
+         %96 = OpConvertSToF %float %92
+         %97 = OpCompositeConstruct %v4float %93 %94 %95 %96
+               OpStore %x_GLF_color %97
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %98
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %105 = OpLabel
+        %106 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %106
+        %107 = OpFunctionCall %void %main_1
+        %109 = OpLoad %v4float %x_GLF_color
+        %110 = OpCompositeConstruct %main_out %109
+        %108 = OpFunctionCall %void %tint_symbol_3 %110
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..eac5611
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,72 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<i32, 3>;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  let x_40 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_44 : i32 = x_7.x_GLF_uniform_int_values[1];
+  arr = array<i32, 3>(x_40, x_42, x_44);
+  let x_47 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_49 : i32 = arr[x_47];
+  a = x_49;
+  let x_50 : i32 = a;
+  b = (x_50 - 1);
+  let x_53 : f32 = gl_FragCoord.x;
+  let x_55 : f32 = x_11.x_GLF_uniform_float_values[0];
+  if ((x_53 < x_55)) {
+    let x_59 : i32 = b;
+    b = (x_59 + 1);
+  }
+  let x_62 : i32 = x_7.x_GLF_uniform_int_values[0];
+  c = x_62;
+  let x_63 : i32 = c;
+  let x_65 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_67 : i32 = x_7.x_GLF_uniform_int_values[2];
+  let x_69 : i32 = b;
+  arr[clamp(x_63, x_65, x_67)] = x_69;
+  let x_72 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_74 : i32 = arr[x_72];
+  let x_77 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_79 : i32 = arr[x_77];
+  let x_82 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_84 : i32 = arr[x_82];
+  let x_87 : i32 = x_7.x_GLF_uniform_int_values[2];
+  let x_89 : i32 = arr[x_87];
+  x_GLF_color = vec4<f32>(f32(x_74), f32(x_79), f32(x_84), f32(x_89));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm
new file mode 100644
index 0000000..973f76c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm
@@ -0,0 +1,401 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %arr0 "arr0"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %arr1 "arr1"
+               OpName %a "a"
+               OpName %limiter0 "limiter0"
+               OpName %limiter1 "limiter1"
+               OpName %b "b"
+               OpName %limiter2 "limiter2"
+               OpName %limiter3 "limiter3"
+               OpName %d "d"
+               OpName %ref0 "ref0"
+               OpName %ref1 "ref1"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "one"
+               OpName %__0 ""
+               OpDecorate %_arr_int_uint_20 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+    %uint_20 = OpConstant %uint 20
+%_arr_int_uint_20 = OpTypeArray %int %uint_20
+       %buf0 = OpTypeStruct %_arr_int_uint_20
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_11 = OpConstant %int 11
+     %int_18 = OpConstant %int 18
+     %int_19 = OpConstant %int 19
+%_ptr_Function_int = OpTypePointer Function %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %main = OpFunction %void None %22
+         %57 = OpLabel
+       %arr0 = OpVariable %_ptr_Function__arr_int_uint_10 Function
+       %arr1 = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %a = OpVariable %_ptr_Function_int Function
+   %limiter0 = OpVariable %_ptr_Function_int Function
+   %limiter1 = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+   %limiter2 = OpVariable %_ptr_Function_int Function
+   %limiter3 = OpVariable %_ptr_Function_int Function
+          %d = OpVariable %_ptr_Function_int Function
+       %ref0 = OpVariable %_ptr_Function__arr_int_uint_10 Function
+       %ref1 = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %i = OpVariable %_ptr_Function_int Function
+         %58 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_7
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_10
+         %77 = OpLoad %int %76
+         %78 = OpCompositeConstruct %_arr_int_uint_10 %59 %61 %63 %65 %67 %69 %71 %73 %75 %77
+               OpStore %arr0 %78
+         %79 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_12
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_15
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_16
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_17
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_13
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_14
+         %92 = OpLoad %int %91
+         %93 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_18
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_19
+         %98 = OpLoad %int %97
+         %99 = OpCompositeConstruct %_arr_int_uint_10 %80 %82 %84 %86 %88 %90 %92 %94 %96 %98
+               OpStore %arr1 %99
+        %100 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+        %101 = OpLoad %int %100
+               OpStore %a %101
+               OpBranch %102
+        %102 = OpLabel
+               OpLoopMerge %103 %104 None
+               OpBranch %105
+        %105 = OpLabel
+        %106 = OpLoad %int %a
+        %107 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %108 = OpLoad %int %107
+        %109 = OpSLessThan %bool %106 %108
+               OpBranchConditional %109 %110 %103
+        %110 = OpLabel
+        %111 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %112 = OpLoad %int %111
+               OpStore %limiter0 %112
+               OpBranch %113
+        %113 = OpLabel
+               OpLoopMerge %114 %115 None
+               OpBranch %116
+        %116 = OpLabel
+        %117 = OpLoad %int %limiter0
+        %118 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+        %119 = OpLoad %int %118
+        %120 = OpSLessThan %bool %117 %119
+               OpBranchConditional %120 %121 %114
+        %121 = OpLabel
+        %122 = OpLoad %int %limiter0
+        %123 = OpIAdd %int %122 %int_1
+               OpStore %limiter0 %123
+        %124 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %125 = OpLoad %int %124
+               OpStore %limiter1 %125
+        %126 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %127 = OpLoad %int %126
+               OpStore %b %127
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %132 = OpLoad %int %b
+        %133 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %134 = OpLoad %int %133
+        %135 = OpSLessThan %bool %132 %134
+               OpBranchConditional %135 %136 %129
+        %136 = OpLabel
+        %137 = OpLoad %int %limiter1
+        %138 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+        %139 = OpLoad %int %138
+        %140 = OpSGreaterThan %bool %137 %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+               OpBranch %129
+        %141 = OpLabel
+        %143 = OpLoad %int %limiter1
+        %144 = OpIAdd %int %143 %int_1
+               OpStore %limiter1 %144
+        %145 = OpLoad %int %b
+        %146 = OpLoad %int %a
+        %147 = OpAccessChain %_ptr_Function_int %arr1 %146
+        %148 = OpLoad %int %147
+        %149 = OpAccessChain %_ptr_Function_int %arr0 %145
+               OpStore %149 %148
+               OpBranch %130
+        %130 = OpLabel
+        %150 = OpLoad %int %b
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %b %151
+               OpBranch %128
+        %129 = OpLabel
+               OpBranch %115
+        %115 = OpLabel
+               OpBranch %113
+        %114 = OpLabel
+               OpStore %limiter2 %int_0
+               OpBranch %152
+        %152 = OpLabel
+               OpLoopMerge %153 %154 None
+               OpBranch %155
+        %155 = OpLabel
+        %156 = OpLoad %int %limiter2
+        %157 = OpSLessThan %bool %156 %int_5
+               OpBranchConditional %157 %158 %153
+        %158 = OpLabel
+        %159 = OpLoad %int %limiter2
+        %160 = OpIAdd %int %159 %int_1
+               OpStore %limiter2 %160
+        %161 = OpAccessChain %_ptr_Function_int %arr1 %int_1
+        %162 = OpLoad %int %161
+        %163 = OpAccessChain %_ptr_Function_int %arr0 %int_1
+               OpStore %163 %162
+               OpBranch %154
+        %154 = OpLabel
+               OpBranch %152
+        %153 = OpLabel
+               OpBranch %164
+        %164 = OpLabel
+               OpLoopMerge %165 %166 None
+               OpBranch %167
+        %167 = OpLabel
+               OpStore %limiter3 %int_0
+               OpStore %d %int_0
+               OpBranch %168
+        %168 = OpLabel
+               OpLoopMerge %169 %170 None
+               OpBranch %171
+        %171 = OpLabel
+        %172 = OpLoad %int %d
+        %173 = OpSLessThan %bool %172 %int_10
+               OpBranchConditional %173 %174 %169
+        %174 = OpLabel
+        %175 = OpLoad %int %limiter3
+        %176 = OpSGreaterThan %bool %175 %int_4
+               OpSelectionMerge %177 None
+               OpBranchConditional %176 %178 %177
+        %178 = OpLabel
+               OpBranch %169
+        %177 = OpLabel
+        %179 = OpLoad %int %limiter3
+        %180 = OpIAdd %int %179 %int_1
+               OpStore %limiter3 %180
+        %181 = OpLoad %int %d
+        %182 = OpLoad %int %d
+        %183 = OpAccessChain %_ptr_Function_int %arr0 %182
+        %184 = OpLoad %int %183
+        %185 = OpAccessChain %_ptr_Function_int %arr1 %181
+               OpStore %185 %184
+               OpBranch %170
+        %170 = OpLabel
+        %186 = OpLoad %int %d
+        %187 = OpIAdd %int %186 %int_1
+               OpStore %d %187
+               OpBranch %168
+        %169 = OpLabel
+               OpBranch %166
+        %166 = OpLabel
+        %188 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %189 = OpLoad %int %188
+        %190 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %191 = OpLoad %int %190
+        %192 = OpIEqual %bool %189 %191
+               OpBranchConditional %192 %164 %165
+        %165 = OpLabel
+               OpBranch %104
+        %104 = OpLabel
+        %193 = OpLoad %int %a
+        %194 = OpIAdd %int %193 %int_1
+               OpStore %a %194
+               OpBranch %102
+        %103 = OpLabel
+        %195 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+        %196 = OpLoad %int %195
+        %197 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_12
+        %198 = OpLoad %int %197
+        %199 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+        %200 = OpLoad %int %199
+        %201 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+        %202 = OpLoad %int %201
+        %203 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+        %204 = OpLoad %int %203
+        %205 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_7
+        %206 = OpLoad %int %205
+        %207 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+        %208 = OpLoad %int %207
+        %209 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+        %210 = OpLoad %int %209
+        %211 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %212 = OpLoad %int %211
+        %213 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_10
+        %214 = OpLoad %int %213
+        %215 = OpCompositeConstruct %_arr_int_uint_10 %196 %198 %200 %202 %204 %206 %208 %210 %212 %214
+               OpStore %ref0 %215
+        %216 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+        %217 = OpLoad %int %216
+        %218 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_12
+        %219 = OpLoad %int %218
+        %220 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+        %221 = OpLoad %int %220
+        %222 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+        %223 = OpLoad %int %222
+        %224 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+        %225 = OpLoad %int %224
+        %226 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_13
+        %227 = OpLoad %int %226
+        %228 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_14
+        %229 = OpLoad %int %228
+        %230 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+        %231 = OpLoad %int %230
+        %232 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_18
+        %233 = OpLoad %int %232
+        %234 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_19
+        %235 = OpLoad %int %234
+        %236 = OpCompositeConstruct %_arr_int_uint_10 %217 %219 %221 %223 %225 %227 %229 %231 %233 %235
+               OpStore %ref1 %236
+        %237 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %238 = OpLoad %int %237
+        %239 = OpConvertSToF %float %238
+        %240 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %241 = OpLoad %int %240
+        %242 = OpConvertSToF %float %241
+        %243 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %244 = OpLoad %int %243
+        %245 = OpConvertSToF %float %244
+        %246 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %247 = OpLoad %int %246
+        %248 = OpConvertSToF %float %247
+        %249 = OpCompositeConstruct %v4float %239 %242 %245 %248
+               OpStore %_GLF_color %249
+        %250 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %251 = OpLoad %int %250
+               OpStore %i %251
+               OpBranch %252
+        %252 = OpLabel
+               OpLoopMerge %253 %254 None
+               OpBranch %255
+        %255 = OpLabel
+        %256 = OpLoad %int %i
+        %257 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %258 = OpLoad %int %257
+        %259 = OpSLessThan %bool %256 %258
+               OpBranchConditional %259 %260 %253
+        %260 = OpLabel
+        %261 = OpLoad %int %i
+        %262 = OpAccessChain %_ptr_Function_int %arr0 %261
+        %263 = OpLoad %int %262
+        %264 = OpLoad %int %i
+        %265 = OpAccessChain %_ptr_Function_int %ref0 %264
+        %266 = OpLoad %int %265
+        %267 = OpINotEqual %bool %263 %266
+        %268 = OpLogicalNot %bool %267
+               OpSelectionMerge %269 None
+               OpBranchConditional %268 %270 %269
+        %270 = OpLabel
+        %271 = OpLoad %int %i
+        %272 = OpAccessChain %_ptr_Function_int %arr1 %271
+        %273 = OpLoad %int %272
+        %274 = OpLoad %int %i
+        %275 = OpAccessChain %_ptr_Function_int %ref1 %274
+        %276 = OpLoad %int %275
+        %277 = OpINotEqual %bool %273 %276
+               OpBranch %269
+        %269 = OpLabel
+        %278 = OpPhi %bool %267 %260 %277 %270
+               OpSelectionMerge %279 None
+               OpBranchConditional %278 %280 %279
+        %280 = OpLabel
+        %281 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %282 = OpLoad %int %281
+        %283 = OpConvertSToF %float %282
+        %284 = OpCompositeConstruct %v4float %283 %283 %283 %283
+               OpStore %_GLF_color %284
+               OpBranch %279
+        %279 = OpLabel
+               OpBranch %254
+        %254 = OpLabel
+        %285 = OpLoad %int %i
+        %286 = OpIAdd %int %285 %int_1
+               OpStore %i %286
+               OpBranch %252
+        %253 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..de01a1a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,204 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[20];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_19 : register(b1, space0) {
+  uint4 x_19[1];
+};
+
+void main_1() {
+  int arr0[10] = (int[10])0;
+  int arr1[10] = (int[10])0;
+  int a = 0;
+  int limiter0 = 0;
+  int limiter1 = 0;
+  int b = 0;
+  int limiter2 = 0;
+  int limiter3 = 0;
+  int d = 0;
+  int ref0[10] = (int[10])0;
+  int ref1[10] = (int[10])0;
+  int i = 0;
+  const int x_59 = asint(x_6[3].x);
+  const int x_61 = asint(x_6[2].x);
+  const int x_63 = asint(x_6[4].x);
+  const int x_65 = asint(x_6[5].x);
+  const int x_67 = asint(x_6[6].x);
+  const int x_69 = asint(x_6[7].x);
+  const int x_71 = asint(x_6[8].x);
+  const int x_73 = asint(x_6[9].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_75 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_77 = asint(x_6[10].x);
+  const int tint_symbol_3[10] = {x_59, x_61, x_63, x_65, x_67, x_69, x_71, x_73, x_75, x_77};
+  arr0 = tint_symbol_3;
+  const int x_80 = asint(x_6[1].x);
+  const int x_82 = asint(x_6[12].x);
+  const int x_84 = asint(x_6[15].x);
+  const int x_86 = asint(x_6[16].x);
+  const int x_88 = asint(x_6[17].x);
+  const int x_90 = asint(x_6[13].x);
+  const int x_92 = asint(x_6[14].x);
+  const int x_94 = asint(x_6[11].x);
+  const int x_96 = asint(x_6[18].x);
+  const int x_98 = asint(x_6[19].x);
+  const int tint_symbol_4[10] = {x_80, x_82, x_84, x_86, x_88, x_90, x_92, x_94, x_96, x_98};
+  arr1 = tint_symbol_4;
+  const int x_101 = asint(x_6[8].x);
+  a = x_101;
+  while (true) {
+    const int x_106 = a;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_108 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_106 < x_108)) {
+    } else {
+      break;
+    }
+    const int x_112 = asint(x_6[3].x);
+    limiter0 = x_112;
+    while (true) {
+      const int x_117 = limiter0;
+      const int x_119 = asint(x_6[4].x);
+      if ((x_117 < x_119)) {
+      } else {
+        break;
+      }
+      limiter0 = (limiter0 + 1);
+      const int x_125 = asint(x_6[2].x);
+      limiter1 = x_125;
+      const int x_127 = asint(x_6[3].x);
+      b = x_127;
+      while (true) {
+        const int x_132 = b;
+        const int x_134 = asint(x_6[1].x);
+        if ((x_132 < x_134)) {
+        } else {
+          break;
+        }
+        const int x_137 = limiter1;
+        const int x_139 = asint(x_6[5].x);
+        if ((x_137 > x_139)) {
+          break;
+        }
+        limiter1 = (limiter1 + 1);
+        const int x_145 = b;
+        const int x_148 = arr1[a];
+        arr0[x_145] = x_148;
+        {
+          b = (b + 1);
+        }
+      }
+    }
+    limiter2 = 0;
+    while (true) {
+      if ((limiter2 < 5)) {
+      } else {
+        break;
+      }
+      limiter2 = (limiter2 + 1);
+      const int x_162 = arr1[1];
+      arr0[1] = x_162;
+    }
+    while (true) {
+      limiter3 = 0;
+      d = 0;
+      {
+        for(; (d < 10); d = (d + 1)) {
+          if ((limiter3 > 4)) {
+            break;
+          }
+          limiter3 = (limiter3 + 1);
+          const int x_181 = d;
+          const int x_184 = arr0[d];
+          arr1[x_181] = x_184;
+        }
+      }
+      {
+        const int x_189 = asint(x_6[2].x);
+        const int x_191 = asint(x_6[3].x);
+        if ((x_189 == x_191)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const int x_196 = asint(x_6[11].x);
+  const int x_198 = asint(x_6[12].x);
+  const int x_200 = asint(x_6[11].x);
+  const int x_202 = asint(x_6[5].x);
+  const int x_204 = asint(x_6[6].x);
+  const int x_206 = asint(x_6[7].x);
+  const int x_208 = asint(x_6[8].x);
+  const int x_210 = asint(x_6[9].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_212 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_214 = asint(x_6[10].x);
+  const int tint_symbol_5[10] = {x_196, x_198, x_200, x_202, x_204, x_206, x_208, x_210, x_212, x_214};
+  ref0 = tint_symbol_5;
+  const int x_217 = asint(x_6[11].x);
+  const int x_219 = asint(x_6[12].x);
+  const int x_221 = asint(x_6[11].x);
+  const int x_223 = asint(x_6[5].x);
+  const int x_225 = asint(x_6[6].x);
+  const int x_227 = asint(x_6[13].x);
+  const int x_229 = asint(x_6[14].x);
+  const int x_231 = asint(x_6[11].x);
+  const int x_233 = asint(x_6[18].x);
+  const int x_235 = asint(x_6[19].x);
+  const int tint_symbol_6[10] = {x_217, x_219, x_221, x_223, x_225, x_227, x_229, x_231, x_233, x_235};
+  ref1 = tint_symbol_6;
+  const int x_238 = asint(x_6[2].x);
+  const int x_241 = asint(x_6[3].x);
+  const int x_244 = asint(x_6[3].x);
+  const int x_247 = asint(x_6[2].x);
+  x_GLF_color = float4(float(x_238), float(x_241), float(x_244), float(x_247));
+  const int x_251 = asint(x_6[3].x);
+  i = x_251;
+  while (true) {
+    bool x_277 = false;
+    bool x_278_phi = false;
+    const int x_256 = i;
+    const int x_258 = asint(x_6[1].x);
+    if ((x_256 < x_258)) {
+    } else {
+      break;
+    }
+    const int x_263 = arr0[i];
+    const int x_266 = ref0[i];
+    const bool x_267 = (x_263 != x_266);
+    x_278_phi = x_267;
+    if (!(x_267)) {
+      const int x_273 = arr1[i];
+      const int x_276 = ref1[i];
+      x_277 = (x_273 != x_276);
+      x_278_phi = x_277;
+    }
+    if (x_278_phi) {
+      const int x_282 = asint(x_6[3].x);
+      const float x_283 = float(x_282);
+      x_GLF_color = float4(x_283, x_283, x_283, x_283);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_7 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..417083d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.msl
@@ -0,0 +1,237 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[20];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct buf1 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper_1 {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8) {
+  tint_array_wrapper_1 arr0 = {};
+  tint_array_wrapper_1 arr1 = {};
+  int a = 0;
+  int limiter0 = 0;
+  int limiter1 = 0;
+  int b = 0;
+  int limiter2 = 0;
+  int limiter3 = 0;
+  int d = 0;
+  tint_array_wrapper_1 ref0 = {};
+  tint_array_wrapper_1 ref1 = {};
+  int i = 0;
+  int const x_59 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_61 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_63 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_65 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_67 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_69 = x_6.x_GLF_uniform_int_values.arr[7].el;
+  int const x_71 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_73 = x_6.x_GLF_uniform_int_values.arr[9].el;
+  int const x_75 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_77 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_59, x_61, x_63, x_65, x_67, x_69, x_71, x_73, x_75, x_77}};
+  arr0 = tint_symbol_3;
+  int const x_80 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_82 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_84 = x_6.x_GLF_uniform_int_values.arr[15].el;
+  int const x_86 = x_6.x_GLF_uniform_int_values.arr[16].el;
+  int const x_88 = x_6.x_GLF_uniform_int_values.arr[17].el;
+  int const x_90 = x_6.x_GLF_uniform_int_values.arr[13].el;
+  int const x_92 = x_6.x_GLF_uniform_int_values.arr[14].el;
+  int const x_94 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_96 = x_6.x_GLF_uniform_int_values.arr[18].el;
+  int const x_98 = x_6.x_GLF_uniform_int_values.arr[19].el;
+  tint_array_wrapper_1 const tint_symbol_4 = {.arr={x_80, x_82, x_84, x_86, x_88, x_90, x_92, x_94, x_96, x_98}};
+  arr1 = tint_symbol_4;
+  int const x_101 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  a = x_101;
+  while (true) {
+    int const x_106 = a;
+    int const x_108 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_106 < x_108)) {
+    } else {
+      break;
+    }
+    int const x_112 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    limiter0 = x_112;
+    while (true) {
+      int const x_117 = limiter0;
+      int const x_119 = x_6.x_GLF_uniform_int_values.arr[4].el;
+      if ((x_117 < x_119)) {
+      } else {
+        break;
+      }
+      int const x_122 = limiter0;
+      limiter0 = (x_122 + 1);
+      int const x_125 = x_6.x_GLF_uniform_int_values.arr[2].el;
+      limiter1 = x_125;
+      int const x_127 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      b = x_127;
+      while (true) {
+        int const x_132 = b;
+        int const x_134 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        if ((x_132 < x_134)) {
+        } else {
+          break;
+        }
+        int const x_137 = limiter1;
+        int const x_139 = x_6.x_GLF_uniform_int_values.arr[5].el;
+        if ((x_137 > x_139)) {
+          break;
+        }
+        int const x_143 = limiter1;
+        limiter1 = (x_143 + 1);
+        int const x_145 = b;
+        int const x_146 = a;
+        int const x_148 = arr1.arr[x_146];
+        arr0.arr[x_145] = x_148;
+        {
+          int const x_150 = b;
+          b = (x_150 + 1);
+        }
+      }
+    }
+    limiter2 = 0;
+    while (true) {
+      int const x_156 = limiter2;
+      if ((x_156 < 5)) {
+      } else {
+        break;
+      }
+      int const x_159 = limiter2;
+      limiter2 = (x_159 + 1);
+      int const x_162 = arr1.arr[1];
+      arr0.arr[1] = x_162;
+    }
+    while (true) {
+      limiter3 = 0;
+      d = 0;
+      while (true) {
+        int const x_172 = d;
+        if ((x_172 < 10)) {
+        } else {
+          break;
+        }
+        int const x_175 = limiter3;
+        if ((x_175 > 4)) {
+          break;
+        }
+        int const x_179 = limiter3;
+        limiter3 = (x_179 + 1);
+        int const x_181 = d;
+        int const x_182 = d;
+        int const x_184 = arr0.arr[x_182];
+        arr1.arr[x_181] = x_184;
+        {
+          int const x_186 = d;
+          d = (x_186 + 1);
+        }
+      }
+      {
+        int const x_189 = x_6.x_GLF_uniform_int_values.arr[2].el;
+        int const x_191 = x_6.x_GLF_uniform_int_values.arr[3].el;
+        if ((x_189 == x_191)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      int const x_193 = a;
+      a = (x_193 + 1);
+    }
+  }
+  int const x_196 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_198 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_200 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_202 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_204 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_206 = x_6.x_GLF_uniform_int_values.arr[7].el;
+  int const x_208 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_210 = x_6.x_GLF_uniform_int_values.arr[9].el;
+  int const x_212 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_214 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  tint_array_wrapper_1 const tint_symbol_5 = {.arr={x_196, x_198, x_200, x_202, x_204, x_206, x_208, x_210, x_212, x_214}};
+  ref0 = tint_symbol_5;
+  int const x_217 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_219 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_221 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_223 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_225 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_227 = x_6.x_GLF_uniform_int_values.arr[13].el;
+  int const x_229 = x_6.x_GLF_uniform_int_values.arr[14].el;
+  int const x_231 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_233 = x_6.x_GLF_uniform_int_values.arr[18].el;
+  int const x_235 = x_6.x_GLF_uniform_int_values.arr[19].el;
+  tint_array_wrapper_1 const tint_symbol_6 = {.arr={x_217, x_219, x_221, x_223, x_225, x_227, x_229, x_231, x_233, x_235}};
+  ref1 = tint_symbol_6;
+  int const x_238 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_241 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_244 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_247 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  *(tint_symbol_8) = float4(float(x_238), float(x_241), float(x_244), float(x_247));
+  int const x_251 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  i = x_251;
+  while (true) {
+    bool x_277 = false;
+    bool x_278_phi = false;
+    int const x_256 = i;
+    int const x_258 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_256 < x_258)) {
+    } else {
+      break;
+    }
+    int const x_261 = i;
+    int const x_263 = arr0.arr[x_261];
+    int const x_264 = i;
+    int const x_266 = ref0.arr[x_264];
+    bool const x_267 = (x_263 != x_266);
+    x_278_phi = x_267;
+    if (!(x_267)) {
+      int const x_271 = i;
+      int const x_273 = arr1.arr[x_271];
+      int const x_274 = i;
+      int const x_276 = ref1.arr[x_274];
+      x_277 = (x_273 != x_276);
+      x_278_phi = x_277;
+    }
+    bool const x_278 = x_278_phi;
+    if (x_278) {
+      int const x_282 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      float const x_283 = float(x_282);
+      *(tint_symbol_8) = float4(x_283, x_283, x_283, x_283);
+    }
+    {
+      int const x_285 = i;
+      i = (x_285 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  main_1(x_6, &(tint_symbol_9));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_1 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..db432fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,489 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 324
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "one"
+               OpName %x_19 "x_19"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr0 "arr0"
+               OpName %arr1 "arr1"
+               OpName %a "a"
+               OpName %limiter0 "limiter0"
+               OpName %limiter1 "limiter1"
+               OpName %b "b"
+               OpName %limiter2 "limiter2"
+               OpName %limiter3 "limiter3"
+               OpName %d "d"
+               OpName %ref0 "ref0"
+               OpName %ref1 "ref1"
+               OpName %i "i"
+               OpName %x_277 "x_277"
+               OpName %x_278_phi "x_278_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_20 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_20 = OpConstant %uint 20
+%_arr_int_uint_20 = OpTypeArray %int %uint_20
+       %buf0 = OpTypeStruct %_arr_int_uint_20
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_19 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %26 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_11 = OpConstant %int 11
+     %int_18 = OpConstant %int 18
+     %int_19 = OpConstant %int 19
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+        %276 = OpConstantNull %bool
+   %main_out = OpTypeStruct %v4float
+        %312 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+       %arr0 = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+       %arr1 = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+          %a = OpVariable %_ptr_Function_int Function %30
+   %limiter0 = OpVariable %_ptr_Function_int Function %30
+   %limiter1 = OpVariable %_ptr_Function_int Function %30
+          %b = OpVariable %_ptr_Function_int Function %30
+   %limiter2 = OpVariable %_ptr_Function_int Function %30
+   %limiter3 = OpVariable %_ptr_Function_int Function %30
+          %d = OpVariable %_ptr_Function_int Function %30
+       %ref0 = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+       %ref1 = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+          %i = OpVariable %_ptr_Function_int Function %30
+      %x_277 = OpVariable %_ptr_Function_bool Function %276
+  %x_278_phi = OpVariable %_ptr_Function_bool Function %276
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %44 = OpLoad %int %43
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %47 = OpLoad %int %46
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %50 = OpLoad %int %49
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %53 = OpLoad %int %52
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+         %56 = OpLoad %int %55
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+         %59 = OpLoad %int %58
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+         %62 = OpLoad %int %61
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+         %65 = OpLoad %int %64
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+         %71 = OpLoad %int %70
+         %72 = OpCompositeConstruct %_arr_int_uint_10 %44 %47 %50 %53 %56 %59 %62 %65 %68 %71
+               OpStore %arr0 %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+         %78 = OpLoad %int %77
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_15
+         %81 = OpLoad %int %80
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_16
+         %84 = OpLoad %int %83
+         %86 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_17
+         %87 = OpLoad %int %86
+         %89 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_13
+         %90 = OpLoad %int %89
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_14
+         %93 = OpLoad %int %92
+         %95 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+         %96 = OpLoad %int %95
+         %98 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_18
+         %99 = OpLoad %int %98
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_19
+        %102 = OpLoad %int %101
+        %103 = OpCompositeConstruct %_arr_int_uint_10 %75 %78 %81 %84 %87 %90 %93 %96 %99 %102
+               OpStore %arr1 %103
+        %104 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+        %105 = OpLoad %int %104
+               OpStore %a %105
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %a
+        %111 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %112 = OpLoad %int %111
+        %113 = OpSLessThan %bool %110 %112
+               OpSelectionMerge %115 None
+               OpBranchConditional %113 %116 %117
+        %116 = OpLabel
+               OpBranch %115
+        %117 = OpLabel
+               OpBranch %107
+        %115 = OpLabel
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %119 = OpLoad %int %118
+               OpStore %limiter0 %119
+               OpBranch %120
+        %120 = OpLabel
+               OpLoopMerge %121 %122 None
+               OpBranch %123
+        %123 = OpLabel
+        %124 = OpLoad %int %limiter0
+        %125 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %126 = OpLoad %int %125
+        %127 = OpSLessThan %bool %124 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+               OpBranch %128
+        %130 = OpLabel
+               OpBranch %121
+        %128 = OpLabel
+        %131 = OpLoad %int %limiter0
+        %132 = OpIAdd %int %131 %int_1
+               OpStore %limiter0 %132
+        %133 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %134 = OpLoad %int %133
+               OpStore %limiter1 %134
+        %135 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %136 = OpLoad %int %135
+               OpStore %b %136
+               OpBranch %137
+        %137 = OpLabel
+               OpLoopMerge %138 %139 None
+               OpBranch %140
+        %140 = OpLabel
+        %141 = OpLoad %int %b
+        %142 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %143 = OpLoad %int %142
+        %144 = OpSLessThan %bool %141 %143
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %147
+        %146 = OpLabel
+               OpBranch %145
+        %147 = OpLabel
+               OpBranch %138
+        %145 = OpLabel
+        %148 = OpLoad %int %limiter1
+        %149 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %150 = OpLoad %int %149
+        %151 = OpSGreaterThan %bool %148 %150
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %152
+        %153 = OpLabel
+               OpBranch %138
+        %152 = OpLabel
+        %154 = OpLoad %int %limiter1
+        %155 = OpIAdd %int %154 %int_1
+               OpStore %limiter1 %155
+        %156 = OpLoad %int %b
+        %157 = OpLoad %int %a
+        %158 = OpAccessChain %_ptr_Function_int %arr1 %157
+        %159 = OpLoad %int %158
+        %160 = OpAccessChain %_ptr_Function_int %arr0 %156
+               OpStore %160 %159
+               OpBranch %139
+        %139 = OpLabel
+        %161 = OpLoad %int %b
+        %162 = OpIAdd %int %161 %int_1
+               OpStore %b %162
+               OpBranch %137
+        %138 = OpLabel
+               OpBranch %122
+        %122 = OpLabel
+               OpBranch %120
+        %121 = OpLabel
+               OpStore %limiter2 %int_0
+               OpBranch %163
+        %163 = OpLabel
+               OpLoopMerge %164 %165 None
+               OpBranch %166
+        %166 = OpLabel
+        %167 = OpLoad %int %limiter2
+        %168 = OpSLessThan %bool %167 %int_5
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %171
+        %170 = OpLabel
+               OpBranch %169
+        %171 = OpLabel
+               OpBranch %164
+        %169 = OpLabel
+        %172 = OpLoad %int %limiter2
+        %173 = OpIAdd %int %172 %int_1
+               OpStore %limiter2 %173
+        %174 = OpAccessChain %_ptr_Function_int %arr1 %int_1
+        %175 = OpLoad %int %174
+        %176 = OpAccessChain %_ptr_Function_int %arr0 %int_1
+               OpStore %176 %175
+               OpBranch %165
+        %165 = OpLabel
+               OpBranch %163
+        %164 = OpLabel
+               OpBranch %177
+        %177 = OpLabel
+               OpLoopMerge %178 %179 None
+               OpBranch %180
+        %180 = OpLabel
+               OpStore %limiter3 %int_0
+               OpStore %d %int_0
+               OpBranch %181
+        %181 = OpLabel
+               OpLoopMerge %182 %183 None
+               OpBranch %184
+        %184 = OpLabel
+        %185 = OpLoad %int %d
+        %186 = OpSLessThan %bool %185 %int_10
+               OpSelectionMerge %187 None
+               OpBranchConditional %186 %188 %189
+        %188 = OpLabel
+               OpBranch %187
+        %189 = OpLabel
+               OpBranch %182
+        %187 = OpLabel
+        %190 = OpLoad %int %limiter3
+        %191 = OpSGreaterThan %bool %190 %int_4
+               OpSelectionMerge %192 None
+               OpBranchConditional %191 %193 %192
+        %193 = OpLabel
+               OpBranch %182
+        %192 = OpLabel
+        %194 = OpLoad %int %limiter3
+        %195 = OpIAdd %int %194 %int_1
+               OpStore %limiter3 %195
+        %196 = OpLoad %int %d
+        %197 = OpLoad %int %d
+        %198 = OpAccessChain %_ptr_Function_int %arr0 %197
+        %199 = OpLoad %int %198
+        %200 = OpAccessChain %_ptr_Function_int %arr1 %196
+               OpStore %200 %199
+               OpBranch %183
+        %183 = OpLabel
+        %201 = OpLoad %int %d
+        %202 = OpIAdd %int %201 %int_1
+               OpStore %d %202
+               OpBranch %181
+        %182 = OpLabel
+               OpBranch %179
+        %179 = OpLabel
+        %203 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %204 = OpLoad %int %203
+        %205 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %206 = OpLoad %int %205
+        %207 = OpIEqual %bool %204 %206
+               OpSelectionMerge %208 None
+               OpBranchConditional %207 %209 %210
+        %209 = OpLabel
+               OpBranch %208
+        %210 = OpLabel
+               OpBranch %178
+        %208 = OpLabel
+               OpBranch %177
+        %178 = OpLabel
+               OpBranch %108
+        %108 = OpLabel
+        %211 = OpLoad %int %a
+        %212 = OpIAdd %int %211 %int_1
+               OpStore %a %212
+               OpBranch %106
+        %107 = OpLabel
+        %213 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %214 = OpLoad %int %213
+        %215 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+        %216 = OpLoad %int %215
+        %217 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %218 = OpLoad %int %217
+        %219 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %220 = OpLoad %int %219
+        %221 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %222 = OpLoad %int %221
+        %223 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+        %224 = OpLoad %int %223
+        %225 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+        %226 = OpLoad %int %225
+        %227 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+        %228 = OpLoad %int %227
+        %229 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %230 = OpLoad %int %229
+        %231 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+        %232 = OpLoad %int %231
+        %233 = OpCompositeConstruct %_arr_int_uint_10 %214 %216 %218 %220 %222 %224 %226 %228 %230 %232
+               OpStore %ref0 %233
+        %234 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %235 = OpLoad %int %234
+        %236 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+        %237 = OpLoad %int %236
+        %238 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %239 = OpLoad %int %238
+        %240 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %241 = OpLoad %int %240
+        %242 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %243 = OpLoad %int %242
+        %244 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_13
+        %245 = OpLoad %int %244
+        %246 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_14
+        %247 = OpLoad %int %246
+        %248 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %249 = OpLoad %int %248
+        %250 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_18
+        %251 = OpLoad %int %250
+        %252 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_19
+        %253 = OpLoad %int %252
+        %254 = OpCompositeConstruct %_arr_int_uint_10 %235 %237 %239 %241 %243 %245 %247 %249 %251 %253
+               OpStore %ref1 %254
+        %255 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %256 = OpLoad %int %255
+        %257 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %258 = OpLoad %int %257
+        %259 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %260 = OpLoad %int %259
+        %261 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %262 = OpLoad %int %261
+        %263 = OpConvertSToF %float %256
+        %264 = OpConvertSToF %float %258
+        %265 = OpConvertSToF %float %260
+        %266 = OpConvertSToF %float %262
+        %267 = OpCompositeConstruct %v4float %263 %264 %265 %266
+               OpStore %x_GLF_color %267
+        %268 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %269 = OpLoad %int %268
+               OpStore %i %269
+               OpBranch %270
+        %270 = OpLabel
+               OpLoopMerge %271 %272 None
+               OpBranch %273
+        %273 = OpLabel
+        %278 = OpLoad %int %i
+        %279 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %280 = OpLoad %int %279
+        %281 = OpSLessThan %bool %278 %280
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %284
+        %283 = OpLabel
+               OpBranch %282
+        %284 = OpLabel
+               OpBranch %271
+        %282 = OpLabel
+        %285 = OpLoad %int %i
+        %286 = OpAccessChain %_ptr_Function_int %arr0 %285
+        %287 = OpLoad %int %286
+        %288 = OpLoad %int %i
+        %289 = OpAccessChain %_ptr_Function_int %ref0 %288
+        %290 = OpLoad %int %289
+        %291 = OpINotEqual %bool %287 %290
+               OpStore %x_278_phi %291
+        %292 = OpLogicalNot %bool %291
+               OpSelectionMerge %293 None
+               OpBranchConditional %292 %294 %293
+        %294 = OpLabel
+        %295 = OpLoad %int %i
+        %296 = OpAccessChain %_ptr_Function_int %arr1 %295
+        %297 = OpLoad %int %296
+        %298 = OpLoad %int %i
+        %299 = OpAccessChain %_ptr_Function_int %ref1 %298
+        %300 = OpLoad %int %299
+        %301 = OpINotEqual %bool %297 %300
+               OpStore %x_277 %301
+        %302 = OpLoad %bool %x_277
+               OpStore %x_278_phi %302
+               OpBranch %293
+        %293 = OpLabel
+        %303 = OpLoad %bool %x_278_phi
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %304
+        %305 = OpLabel
+        %306 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %307 = OpLoad %int %306
+        %308 = OpConvertSToF %float %307
+        %309 = OpCompositeConstruct %v4float %308 %308 %308 %308
+               OpStore %x_GLF_color %309
+               OpBranch %304
+        %304 = OpLabel
+               OpBranch %272
+        %272 = OpLabel
+        %310 = OpLoad %int %i
+        %311 = OpIAdd %int %310 %int_1
+               OpStore %i %311
+               OpBranch %270
+        %271 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %312
+%tint_symbol = OpFunctionParameter %main_out
+        %316 = OpLabel
+        %317 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %317
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %319 = OpLabel
+        %320 = OpFunctionCall %void %main_1
+        %322 = OpLoad %v4float %x_GLF_color
+        %323 = OpCompositeConstruct %main_out %322
+        %321 = OpFunctionCall %void %tint_symbol_2 %323
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 179[%179] is not post dominated by the back-edge block 208[%208]
+  %208 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..60a0604
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,232 @@
+type Arr = [[stride(16)]] array<i32, 20>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+
+fn main_1() {
+  var arr0 : array<i32, 10>;
+  var arr1 : array<i32, 10>;
+  var a : i32;
+  var limiter0 : i32;
+  var limiter1 : i32;
+  var b : i32;
+  var limiter2 : i32;
+  var limiter3 : i32;
+  var d : i32;
+  var ref0 : array<i32, 10>;
+  var ref1 : array<i32, 10>;
+  var i : i32;
+  let x_59 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_61 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_65 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_67 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_69 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_71 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_73 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = x_6.x_GLF_uniform_int_values[10];
+  arr0 = array<i32, 10>(x_59, x_61, x_63, x_65, x_67, x_69, x_71, x_73, x_75, x_77);
+  let x_80 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_82 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[15];
+  let x_86 : i32 = x_6.x_GLF_uniform_int_values[16];
+  let x_88 : i32 = x_6.x_GLF_uniform_int_values[17];
+  let x_90 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_92 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_94 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_96 : i32 = x_6.x_GLF_uniform_int_values[18];
+  let x_98 : i32 = x_6.x_GLF_uniform_int_values[19];
+  arr1 = array<i32, 10>(x_80, x_82, x_84, x_86, x_88, x_90, x_92, x_94, x_96, x_98);
+  let x_101 : i32 = x_6.x_GLF_uniform_int_values[8];
+  a = x_101;
+  loop {
+    let x_106 : i32 = a;
+    let x_108 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_106 < x_108)) {
+    } else {
+      break;
+    }
+    let x_112 : i32 = x_6.x_GLF_uniform_int_values[3];
+    limiter0 = x_112;
+    loop {
+      let x_117 : i32 = limiter0;
+      let x_119 : i32 = x_6.x_GLF_uniform_int_values[4];
+      if ((x_117 < x_119)) {
+      } else {
+        break;
+      }
+      let x_122 : i32 = limiter0;
+      limiter0 = (x_122 + 1);
+      let x_125 : i32 = x_6.x_GLF_uniform_int_values[2];
+      limiter1 = x_125;
+      let x_127 : i32 = x_6.x_GLF_uniform_int_values[3];
+      b = x_127;
+      loop {
+        let x_132 : i32 = b;
+        let x_134 : i32 = x_6.x_GLF_uniform_int_values[1];
+        if ((x_132 < x_134)) {
+        } else {
+          break;
+        }
+        let x_137 : i32 = limiter1;
+        let x_139 : i32 = x_6.x_GLF_uniform_int_values[5];
+        if ((x_137 > x_139)) {
+          break;
+        }
+        let x_143 : i32 = limiter1;
+        limiter1 = (x_143 + 1);
+        let x_145 : i32 = b;
+        let x_146 : i32 = a;
+        let x_148 : i32 = arr1[x_146];
+        arr0[x_145] = x_148;
+
+        continuing {
+          let x_150 : i32 = b;
+          b = (x_150 + 1);
+        }
+      }
+    }
+    limiter2 = 0;
+    loop {
+      let x_156 : i32 = limiter2;
+      if ((x_156 < 5)) {
+      } else {
+        break;
+      }
+      let x_159 : i32 = limiter2;
+      limiter2 = (x_159 + 1);
+      let x_162 : i32 = arr1[1];
+      arr0[1] = x_162;
+    }
+    loop {
+      limiter3 = 0;
+      d = 0;
+      loop {
+        let x_172 : i32 = d;
+        if ((x_172 < 10)) {
+        } else {
+          break;
+        }
+        let x_175 : i32 = limiter3;
+        if ((x_175 > 4)) {
+          break;
+        }
+        let x_179 : i32 = limiter3;
+        limiter3 = (x_179 + 1);
+        let x_181 : i32 = d;
+        let x_182 : i32 = d;
+        let x_184 : i32 = arr0[x_182];
+        arr1[x_181] = x_184;
+
+        continuing {
+          let x_186 : i32 = d;
+          d = (x_186 + 1);
+        }
+      }
+
+      continuing {
+        let x_189 : i32 = x_6.x_GLF_uniform_int_values[2];
+        let x_191 : i32 = x_6.x_GLF_uniform_int_values[3];
+        if ((x_189 == x_191)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_193 : i32 = a;
+      a = (x_193 + 1);
+    }
+  }
+  let x_196 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_198 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_200 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_202 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_204 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_206 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_208 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_210 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_212 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_214 : i32 = x_6.x_GLF_uniform_int_values[10];
+  ref0 = array<i32, 10>(x_196, x_198, x_200, x_202, x_204, x_206, x_208, x_210, x_212, x_214);
+  let x_217 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_219 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_221 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_223 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_225 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_227 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_229 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_231 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_233 : i32 = x_6.x_GLF_uniform_int_values[18];
+  let x_235 : i32 = x_6.x_GLF_uniform_int_values[19];
+  ref1 = array<i32, 10>(x_217, x_219, x_221, x_223, x_225, x_227, x_229, x_231, x_233, x_235);
+  let x_238 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_241 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_244 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_247 : i32 = x_6.x_GLF_uniform_int_values[2];
+  x_GLF_color = vec4<f32>(f32(x_238), f32(x_241), f32(x_244), f32(x_247));
+  let x_251 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = x_251;
+  loop {
+    var x_277 : bool;
+    var x_278_phi : bool;
+    let x_256 : i32 = i;
+    let x_258 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_256 < x_258)) {
+    } else {
+      break;
+    }
+    let x_261 : i32 = i;
+    let x_263 : i32 = arr0[x_261];
+    let x_264 : i32 = i;
+    let x_266 : i32 = ref0[x_264];
+    let x_267 : bool = (x_263 != x_266);
+    x_278_phi = x_267;
+    if (!(x_267)) {
+      let x_271 : i32 = i;
+      let x_273 : i32 = arr1[x_271];
+      let x_274 : i32 = i;
+      let x_276 : i32 = ref1[x_274];
+      x_277 = (x_273 != x_276);
+      x_278_phi = x_277;
+    }
+    let x_278 : bool = x_278_phi;
+    if (x_278) {
+      let x_282 : i32 = x_6.x_GLF_uniform_int_values[3];
+      let x_283 : f32 = f32(x_282);
+      x_GLF_color = vec4<f32>(x_283, x_283, x_283, x_283);
+    }
+
+    continuing {
+      let x_285 : i32 = i;
+      i = (x_285 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
new file mode 100644
index 0000000..60a0604
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
@@ -0,0 +1,232 @@
+type Arr = [[stride(16)]] array<i32, 20>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+
+fn main_1() {
+  var arr0 : array<i32, 10>;
+  var arr1 : array<i32, 10>;
+  var a : i32;
+  var limiter0 : i32;
+  var limiter1 : i32;
+  var b : i32;
+  var limiter2 : i32;
+  var limiter3 : i32;
+  var d : i32;
+  var ref0 : array<i32, 10>;
+  var ref1 : array<i32, 10>;
+  var i : i32;
+  let x_59 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_61 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_65 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_67 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_69 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_71 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_73 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = x_6.x_GLF_uniform_int_values[10];
+  arr0 = array<i32, 10>(x_59, x_61, x_63, x_65, x_67, x_69, x_71, x_73, x_75, x_77);
+  let x_80 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_82 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[15];
+  let x_86 : i32 = x_6.x_GLF_uniform_int_values[16];
+  let x_88 : i32 = x_6.x_GLF_uniform_int_values[17];
+  let x_90 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_92 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_94 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_96 : i32 = x_6.x_GLF_uniform_int_values[18];
+  let x_98 : i32 = x_6.x_GLF_uniform_int_values[19];
+  arr1 = array<i32, 10>(x_80, x_82, x_84, x_86, x_88, x_90, x_92, x_94, x_96, x_98);
+  let x_101 : i32 = x_6.x_GLF_uniform_int_values[8];
+  a = x_101;
+  loop {
+    let x_106 : i32 = a;
+    let x_108 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_106 < x_108)) {
+    } else {
+      break;
+    }
+    let x_112 : i32 = x_6.x_GLF_uniform_int_values[3];
+    limiter0 = x_112;
+    loop {
+      let x_117 : i32 = limiter0;
+      let x_119 : i32 = x_6.x_GLF_uniform_int_values[4];
+      if ((x_117 < x_119)) {
+      } else {
+        break;
+      }
+      let x_122 : i32 = limiter0;
+      limiter0 = (x_122 + 1);
+      let x_125 : i32 = x_6.x_GLF_uniform_int_values[2];
+      limiter1 = x_125;
+      let x_127 : i32 = x_6.x_GLF_uniform_int_values[3];
+      b = x_127;
+      loop {
+        let x_132 : i32 = b;
+        let x_134 : i32 = x_6.x_GLF_uniform_int_values[1];
+        if ((x_132 < x_134)) {
+        } else {
+          break;
+        }
+        let x_137 : i32 = limiter1;
+        let x_139 : i32 = x_6.x_GLF_uniform_int_values[5];
+        if ((x_137 > x_139)) {
+          break;
+        }
+        let x_143 : i32 = limiter1;
+        limiter1 = (x_143 + 1);
+        let x_145 : i32 = b;
+        let x_146 : i32 = a;
+        let x_148 : i32 = arr1[x_146];
+        arr0[x_145] = x_148;
+
+        continuing {
+          let x_150 : i32 = b;
+          b = (x_150 + 1);
+        }
+      }
+    }
+    limiter2 = 0;
+    loop {
+      let x_156 : i32 = limiter2;
+      if ((x_156 < 5)) {
+      } else {
+        break;
+      }
+      let x_159 : i32 = limiter2;
+      limiter2 = (x_159 + 1);
+      let x_162 : i32 = arr1[1];
+      arr0[1] = x_162;
+    }
+    loop {
+      limiter3 = 0;
+      d = 0;
+      loop {
+        let x_172 : i32 = d;
+        if ((x_172 < 10)) {
+        } else {
+          break;
+        }
+        let x_175 : i32 = limiter3;
+        if ((x_175 > 4)) {
+          break;
+        }
+        let x_179 : i32 = limiter3;
+        limiter3 = (x_179 + 1);
+        let x_181 : i32 = d;
+        let x_182 : i32 = d;
+        let x_184 : i32 = arr0[x_182];
+        arr1[x_181] = x_184;
+
+        continuing {
+          let x_186 : i32 = d;
+          d = (x_186 + 1);
+        }
+      }
+
+      continuing {
+        let x_189 : i32 = x_6.x_GLF_uniform_int_values[2];
+        let x_191 : i32 = x_6.x_GLF_uniform_int_values[3];
+        if ((x_189 == x_191)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_193 : i32 = a;
+      a = (x_193 + 1);
+    }
+  }
+  let x_196 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_198 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_200 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_202 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_204 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_206 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_208 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_210 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_212 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_214 : i32 = x_6.x_GLF_uniform_int_values[10];
+  ref0 = array<i32, 10>(x_196, x_198, x_200, x_202, x_204, x_206, x_208, x_210, x_212, x_214);
+  let x_217 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_219 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_221 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_223 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_225 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_227 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_229 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_231 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_233 : i32 = x_6.x_GLF_uniform_int_values[18];
+  let x_235 : i32 = x_6.x_GLF_uniform_int_values[19];
+  ref1 = array<i32, 10>(x_217, x_219, x_221, x_223, x_225, x_227, x_229, x_231, x_233, x_235);
+  let x_238 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_241 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_244 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_247 : i32 = x_6.x_GLF_uniform_int_values[2];
+  x_GLF_color = vec4<f32>(f32(x_238), f32(x_241), f32(x_244), f32(x_247));
+  let x_251 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = x_251;
+  loop {
+    var x_277 : bool;
+    var x_278_phi : bool;
+    let x_256 : i32 = i;
+    let x_258 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_256 < x_258)) {
+    } else {
+      break;
+    }
+    let x_261 : i32 = i;
+    let x_263 : i32 = arr0[x_261];
+    let x_264 : i32 = i;
+    let x_266 : i32 = ref0[x_264];
+    let x_267 : bool = (x_263 != x_266);
+    x_278_phi = x_267;
+    if (!(x_267)) {
+      let x_271 : i32 = i;
+      let x_273 : i32 = arr1[x_271];
+      let x_274 : i32 = i;
+      let x_276 : i32 = ref1[x_274];
+      x_277 = (x_273 != x_276);
+      x_278_phi = x_277;
+    }
+    let x_278 : bool = x_278_phi;
+    if (x_278) {
+      let x_282 : i32 = x_6.x_GLF_uniform_int_values[3];
+      let x_283 : f32 = f32(x_282);
+      x_GLF_color = vec4<f32>(x_283, x_283, x_283, x_283);
+    }
+
+    continuing {
+      let x_285 : i32 = i;
+      i = (x_285 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..de01a1a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,204 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[20];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_19 : register(b1, space0) {
+  uint4 x_19[1];
+};
+
+void main_1() {
+  int arr0[10] = (int[10])0;
+  int arr1[10] = (int[10])0;
+  int a = 0;
+  int limiter0 = 0;
+  int limiter1 = 0;
+  int b = 0;
+  int limiter2 = 0;
+  int limiter3 = 0;
+  int d = 0;
+  int ref0[10] = (int[10])0;
+  int ref1[10] = (int[10])0;
+  int i = 0;
+  const int x_59 = asint(x_6[3].x);
+  const int x_61 = asint(x_6[2].x);
+  const int x_63 = asint(x_6[4].x);
+  const int x_65 = asint(x_6[5].x);
+  const int x_67 = asint(x_6[6].x);
+  const int x_69 = asint(x_6[7].x);
+  const int x_71 = asint(x_6[8].x);
+  const int x_73 = asint(x_6[9].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_75 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_77 = asint(x_6[10].x);
+  const int tint_symbol_3[10] = {x_59, x_61, x_63, x_65, x_67, x_69, x_71, x_73, x_75, x_77};
+  arr0 = tint_symbol_3;
+  const int x_80 = asint(x_6[1].x);
+  const int x_82 = asint(x_6[12].x);
+  const int x_84 = asint(x_6[15].x);
+  const int x_86 = asint(x_6[16].x);
+  const int x_88 = asint(x_6[17].x);
+  const int x_90 = asint(x_6[13].x);
+  const int x_92 = asint(x_6[14].x);
+  const int x_94 = asint(x_6[11].x);
+  const int x_96 = asint(x_6[18].x);
+  const int x_98 = asint(x_6[19].x);
+  const int tint_symbol_4[10] = {x_80, x_82, x_84, x_86, x_88, x_90, x_92, x_94, x_96, x_98};
+  arr1 = tint_symbol_4;
+  const int x_101 = asint(x_6[8].x);
+  a = x_101;
+  while (true) {
+    const int x_106 = a;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_108 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_106 < x_108)) {
+    } else {
+      break;
+    }
+    const int x_112 = asint(x_6[3].x);
+    limiter0 = x_112;
+    while (true) {
+      const int x_117 = limiter0;
+      const int x_119 = asint(x_6[4].x);
+      if ((x_117 < x_119)) {
+      } else {
+        break;
+      }
+      limiter0 = (limiter0 + 1);
+      const int x_125 = asint(x_6[2].x);
+      limiter1 = x_125;
+      const int x_127 = asint(x_6[3].x);
+      b = x_127;
+      while (true) {
+        const int x_132 = b;
+        const int x_134 = asint(x_6[1].x);
+        if ((x_132 < x_134)) {
+        } else {
+          break;
+        }
+        const int x_137 = limiter1;
+        const int x_139 = asint(x_6[5].x);
+        if ((x_137 > x_139)) {
+          break;
+        }
+        limiter1 = (limiter1 + 1);
+        const int x_145 = b;
+        const int x_148 = arr1[a];
+        arr0[x_145] = x_148;
+        {
+          b = (b + 1);
+        }
+      }
+    }
+    limiter2 = 0;
+    while (true) {
+      if ((limiter2 < 5)) {
+      } else {
+        break;
+      }
+      limiter2 = (limiter2 + 1);
+      const int x_162 = arr1[1];
+      arr0[1] = x_162;
+    }
+    while (true) {
+      limiter3 = 0;
+      d = 0;
+      {
+        for(; (d < 10); d = (d + 1)) {
+          if ((limiter3 > 4)) {
+            break;
+          }
+          limiter3 = (limiter3 + 1);
+          const int x_181 = d;
+          const int x_184 = arr0[d];
+          arr1[x_181] = x_184;
+        }
+      }
+      {
+        const int x_189 = asint(x_6[2].x);
+        const int x_191 = asint(x_6[3].x);
+        if ((x_189 == x_191)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const int x_196 = asint(x_6[11].x);
+  const int x_198 = asint(x_6[12].x);
+  const int x_200 = asint(x_6[11].x);
+  const int x_202 = asint(x_6[5].x);
+  const int x_204 = asint(x_6[6].x);
+  const int x_206 = asint(x_6[7].x);
+  const int x_208 = asint(x_6[8].x);
+  const int x_210 = asint(x_6[9].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_212 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_214 = asint(x_6[10].x);
+  const int tint_symbol_5[10] = {x_196, x_198, x_200, x_202, x_204, x_206, x_208, x_210, x_212, x_214};
+  ref0 = tint_symbol_5;
+  const int x_217 = asint(x_6[11].x);
+  const int x_219 = asint(x_6[12].x);
+  const int x_221 = asint(x_6[11].x);
+  const int x_223 = asint(x_6[5].x);
+  const int x_225 = asint(x_6[6].x);
+  const int x_227 = asint(x_6[13].x);
+  const int x_229 = asint(x_6[14].x);
+  const int x_231 = asint(x_6[11].x);
+  const int x_233 = asint(x_6[18].x);
+  const int x_235 = asint(x_6[19].x);
+  const int tint_symbol_6[10] = {x_217, x_219, x_221, x_223, x_225, x_227, x_229, x_231, x_233, x_235};
+  ref1 = tint_symbol_6;
+  const int x_238 = asint(x_6[2].x);
+  const int x_241 = asint(x_6[3].x);
+  const int x_244 = asint(x_6[3].x);
+  const int x_247 = asint(x_6[2].x);
+  x_GLF_color = float4(float(x_238), float(x_241), float(x_244), float(x_247));
+  const int x_251 = asint(x_6[3].x);
+  i = x_251;
+  while (true) {
+    bool x_277 = false;
+    bool x_278_phi = false;
+    const int x_256 = i;
+    const int x_258 = asint(x_6[1].x);
+    if ((x_256 < x_258)) {
+    } else {
+      break;
+    }
+    const int x_263 = arr0[i];
+    const int x_266 = ref0[i];
+    const bool x_267 = (x_263 != x_266);
+    x_278_phi = x_267;
+    if (!(x_267)) {
+      const int x_273 = arr1[i];
+      const int x_276 = ref1[i];
+      x_277 = (x_273 != x_276);
+      x_278_phi = x_277;
+    }
+    if (x_278_phi) {
+      const int x_282 = asint(x_6[3].x);
+      const float x_283 = float(x_282);
+      x_GLF_color = float4(x_283, x_283, x_283, x_283);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_7 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..417083d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.msl
@@ -0,0 +1,237 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[20];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct buf1 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper_1 {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8) {
+  tint_array_wrapper_1 arr0 = {};
+  tint_array_wrapper_1 arr1 = {};
+  int a = 0;
+  int limiter0 = 0;
+  int limiter1 = 0;
+  int b = 0;
+  int limiter2 = 0;
+  int limiter3 = 0;
+  int d = 0;
+  tint_array_wrapper_1 ref0 = {};
+  tint_array_wrapper_1 ref1 = {};
+  int i = 0;
+  int const x_59 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_61 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_63 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_65 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_67 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_69 = x_6.x_GLF_uniform_int_values.arr[7].el;
+  int const x_71 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_73 = x_6.x_GLF_uniform_int_values.arr[9].el;
+  int const x_75 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_77 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_59, x_61, x_63, x_65, x_67, x_69, x_71, x_73, x_75, x_77}};
+  arr0 = tint_symbol_3;
+  int const x_80 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_82 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_84 = x_6.x_GLF_uniform_int_values.arr[15].el;
+  int const x_86 = x_6.x_GLF_uniform_int_values.arr[16].el;
+  int const x_88 = x_6.x_GLF_uniform_int_values.arr[17].el;
+  int const x_90 = x_6.x_GLF_uniform_int_values.arr[13].el;
+  int const x_92 = x_6.x_GLF_uniform_int_values.arr[14].el;
+  int const x_94 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_96 = x_6.x_GLF_uniform_int_values.arr[18].el;
+  int const x_98 = x_6.x_GLF_uniform_int_values.arr[19].el;
+  tint_array_wrapper_1 const tint_symbol_4 = {.arr={x_80, x_82, x_84, x_86, x_88, x_90, x_92, x_94, x_96, x_98}};
+  arr1 = tint_symbol_4;
+  int const x_101 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  a = x_101;
+  while (true) {
+    int const x_106 = a;
+    int const x_108 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_106 < x_108)) {
+    } else {
+      break;
+    }
+    int const x_112 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    limiter0 = x_112;
+    while (true) {
+      int const x_117 = limiter0;
+      int const x_119 = x_6.x_GLF_uniform_int_values.arr[4].el;
+      if ((x_117 < x_119)) {
+      } else {
+        break;
+      }
+      int const x_122 = limiter0;
+      limiter0 = (x_122 + 1);
+      int const x_125 = x_6.x_GLF_uniform_int_values.arr[2].el;
+      limiter1 = x_125;
+      int const x_127 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      b = x_127;
+      while (true) {
+        int const x_132 = b;
+        int const x_134 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        if ((x_132 < x_134)) {
+        } else {
+          break;
+        }
+        int const x_137 = limiter1;
+        int const x_139 = x_6.x_GLF_uniform_int_values.arr[5].el;
+        if ((x_137 > x_139)) {
+          break;
+        }
+        int const x_143 = limiter1;
+        limiter1 = (x_143 + 1);
+        int const x_145 = b;
+        int const x_146 = a;
+        int const x_148 = arr1.arr[x_146];
+        arr0.arr[x_145] = x_148;
+        {
+          int const x_150 = b;
+          b = (x_150 + 1);
+        }
+      }
+    }
+    limiter2 = 0;
+    while (true) {
+      int const x_156 = limiter2;
+      if ((x_156 < 5)) {
+      } else {
+        break;
+      }
+      int const x_159 = limiter2;
+      limiter2 = (x_159 + 1);
+      int const x_162 = arr1.arr[1];
+      arr0.arr[1] = x_162;
+    }
+    while (true) {
+      limiter3 = 0;
+      d = 0;
+      while (true) {
+        int const x_172 = d;
+        if ((x_172 < 10)) {
+        } else {
+          break;
+        }
+        int const x_175 = limiter3;
+        if ((x_175 > 4)) {
+          break;
+        }
+        int const x_179 = limiter3;
+        limiter3 = (x_179 + 1);
+        int const x_181 = d;
+        int const x_182 = d;
+        int const x_184 = arr0.arr[x_182];
+        arr1.arr[x_181] = x_184;
+        {
+          int const x_186 = d;
+          d = (x_186 + 1);
+        }
+      }
+      {
+        int const x_189 = x_6.x_GLF_uniform_int_values.arr[2].el;
+        int const x_191 = x_6.x_GLF_uniform_int_values.arr[3].el;
+        if ((x_189 == x_191)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      int const x_193 = a;
+      a = (x_193 + 1);
+    }
+  }
+  int const x_196 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_198 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_200 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_202 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_204 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_206 = x_6.x_GLF_uniform_int_values.arr[7].el;
+  int const x_208 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_210 = x_6.x_GLF_uniform_int_values.arr[9].el;
+  int const x_212 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_214 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  tint_array_wrapper_1 const tint_symbol_5 = {.arr={x_196, x_198, x_200, x_202, x_204, x_206, x_208, x_210, x_212, x_214}};
+  ref0 = tint_symbol_5;
+  int const x_217 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_219 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_221 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_223 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_225 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_227 = x_6.x_GLF_uniform_int_values.arr[13].el;
+  int const x_229 = x_6.x_GLF_uniform_int_values.arr[14].el;
+  int const x_231 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_233 = x_6.x_GLF_uniform_int_values.arr[18].el;
+  int const x_235 = x_6.x_GLF_uniform_int_values.arr[19].el;
+  tint_array_wrapper_1 const tint_symbol_6 = {.arr={x_217, x_219, x_221, x_223, x_225, x_227, x_229, x_231, x_233, x_235}};
+  ref1 = tint_symbol_6;
+  int const x_238 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_241 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_244 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_247 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  *(tint_symbol_8) = float4(float(x_238), float(x_241), float(x_244), float(x_247));
+  int const x_251 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  i = x_251;
+  while (true) {
+    bool x_277 = false;
+    bool x_278_phi = false;
+    int const x_256 = i;
+    int const x_258 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_256 < x_258)) {
+    } else {
+      break;
+    }
+    int const x_261 = i;
+    int const x_263 = arr0.arr[x_261];
+    int const x_264 = i;
+    int const x_266 = ref0.arr[x_264];
+    bool const x_267 = (x_263 != x_266);
+    x_278_phi = x_267;
+    if (!(x_267)) {
+      int const x_271 = i;
+      int const x_273 = arr1.arr[x_271];
+      int const x_274 = i;
+      int const x_276 = ref1.arr[x_274];
+      x_277 = (x_273 != x_276);
+      x_278_phi = x_277;
+    }
+    bool const x_278 = x_278_phi;
+    if (x_278) {
+      int const x_282 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      float const x_283 = float(x_282);
+      *(tint_symbol_8) = float4(x_283, x_283, x_283, x_283);
+    }
+    {
+      int const x_285 = i;
+      i = (x_285 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  main_1(x_6, &(tint_symbol_9));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_1 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..db432fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,489 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 324
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "one"
+               OpName %x_19 "x_19"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr0 "arr0"
+               OpName %arr1 "arr1"
+               OpName %a "a"
+               OpName %limiter0 "limiter0"
+               OpName %limiter1 "limiter1"
+               OpName %b "b"
+               OpName %limiter2 "limiter2"
+               OpName %limiter3 "limiter3"
+               OpName %d "d"
+               OpName %ref0 "ref0"
+               OpName %ref1 "ref1"
+               OpName %i "i"
+               OpName %x_277 "x_277"
+               OpName %x_278_phi "x_278_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_20 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_20 = OpConstant %uint 20
+%_arr_int_uint_20 = OpTypeArray %int %uint_20
+       %buf0 = OpTypeStruct %_arr_int_uint_20
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_19 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %26 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_11 = OpConstant %int 11
+     %int_18 = OpConstant %int 18
+     %int_19 = OpConstant %int 19
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+        %276 = OpConstantNull %bool
+   %main_out = OpTypeStruct %v4float
+        %312 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+       %arr0 = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+       %arr1 = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+          %a = OpVariable %_ptr_Function_int Function %30
+   %limiter0 = OpVariable %_ptr_Function_int Function %30
+   %limiter1 = OpVariable %_ptr_Function_int Function %30
+          %b = OpVariable %_ptr_Function_int Function %30
+   %limiter2 = OpVariable %_ptr_Function_int Function %30
+   %limiter3 = OpVariable %_ptr_Function_int Function %30
+          %d = OpVariable %_ptr_Function_int Function %30
+       %ref0 = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+       %ref1 = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+          %i = OpVariable %_ptr_Function_int Function %30
+      %x_277 = OpVariable %_ptr_Function_bool Function %276
+  %x_278_phi = OpVariable %_ptr_Function_bool Function %276
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %44 = OpLoad %int %43
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %47 = OpLoad %int %46
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %50 = OpLoad %int %49
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %53 = OpLoad %int %52
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+         %56 = OpLoad %int %55
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+         %59 = OpLoad %int %58
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+         %62 = OpLoad %int %61
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+         %65 = OpLoad %int %64
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+         %71 = OpLoad %int %70
+         %72 = OpCompositeConstruct %_arr_int_uint_10 %44 %47 %50 %53 %56 %59 %62 %65 %68 %71
+               OpStore %arr0 %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+         %78 = OpLoad %int %77
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_15
+         %81 = OpLoad %int %80
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_16
+         %84 = OpLoad %int %83
+         %86 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_17
+         %87 = OpLoad %int %86
+         %89 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_13
+         %90 = OpLoad %int %89
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_14
+         %93 = OpLoad %int %92
+         %95 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+         %96 = OpLoad %int %95
+         %98 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_18
+         %99 = OpLoad %int %98
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_19
+        %102 = OpLoad %int %101
+        %103 = OpCompositeConstruct %_arr_int_uint_10 %75 %78 %81 %84 %87 %90 %93 %96 %99 %102
+               OpStore %arr1 %103
+        %104 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+        %105 = OpLoad %int %104
+               OpStore %a %105
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %a
+        %111 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %112 = OpLoad %int %111
+        %113 = OpSLessThan %bool %110 %112
+               OpSelectionMerge %115 None
+               OpBranchConditional %113 %116 %117
+        %116 = OpLabel
+               OpBranch %115
+        %117 = OpLabel
+               OpBranch %107
+        %115 = OpLabel
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %119 = OpLoad %int %118
+               OpStore %limiter0 %119
+               OpBranch %120
+        %120 = OpLabel
+               OpLoopMerge %121 %122 None
+               OpBranch %123
+        %123 = OpLabel
+        %124 = OpLoad %int %limiter0
+        %125 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %126 = OpLoad %int %125
+        %127 = OpSLessThan %bool %124 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+               OpBranch %128
+        %130 = OpLabel
+               OpBranch %121
+        %128 = OpLabel
+        %131 = OpLoad %int %limiter0
+        %132 = OpIAdd %int %131 %int_1
+               OpStore %limiter0 %132
+        %133 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %134 = OpLoad %int %133
+               OpStore %limiter1 %134
+        %135 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %136 = OpLoad %int %135
+               OpStore %b %136
+               OpBranch %137
+        %137 = OpLabel
+               OpLoopMerge %138 %139 None
+               OpBranch %140
+        %140 = OpLabel
+        %141 = OpLoad %int %b
+        %142 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %143 = OpLoad %int %142
+        %144 = OpSLessThan %bool %141 %143
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %147
+        %146 = OpLabel
+               OpBranch %145
+        %147 = OpLabel
+               OpBranch %138
+        %145 = OpLabel
+        %148 = OpLoad %int %limiter1
+        %149 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %150 = OpLoad %int %149
+        %151 = OpSGreaterThan %bool %148 %150
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %152
+        %153 = OpLabel
+               OpBranch %138
+        %152 = OpLabel
+        %154 = OpLoad %int %limiter1
+        %155 = OpIAdd %int %154 %int_1
+               OpStore %limiter1 %155
+        %156 = OpLoad %int %b
+        %157 = OpLoad %int %a
+        %158 = OpAccessChain %_ptr_Function_int %arr1 %157
+        %159 = OpLoad %int %158
+        %160 = OpAccessChain %_ptr_Function_int %arr0 %156
+               OpStore %160 %159
+               OpBranch %139
+        %139 = OpLabel
+        %161 = OpLoad %int %b
+        %162 = OpIAdd %int %161 %int_1
+               OpStore %b %162
+               OpBranch %137
+        %138 = OpLabel
+               OpBranch %122
+        %122 = OpLabel
+               OpBranch %120
+        %121 = OpLabel
+               OpStore %limiter2 %int_0
+               OpBranch %163
+        %163 = OpLabel
+               OpLoopMerge %164 %165 None
+               OpBranch %166
+        %166 = OpLabel
+        %167 = OpLoad %int %limiter2
+        %168 = OpSLessThan %bool %167 %int_5
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %171
+        %170 = OpLabel
+               OpBranch %169
+        %171 = OpLabel
+               OpBranch %164
+        %169 = OpLabel
+        %172 = OpLoad %int %limiter2
+        %173 = OpIAdd %int %172 %int_1
+               OpStore %limiter2 %173
+        %174 = OpAccessChain %_ptr_Function_int %arr1 %int_1
+        %175 = OpLoad %int %174
+        %176 = OpAccessChain %_ptr_Function_int %arr0 %int_1
+               OpStore %176 %175
+               OpBranch %165
+        %165 = OpLabel
+               OpBranch %163
+        %164 = OpLabel
+               OpBranch %177
+        %177 = OpLabel
+               OpLoopMerge %178 %179 None
+               OpBranch %180
+        %180 = OpLabel
+               OpStore %limiter3 %int_0
+               OpStore %d %int_0
+               OpBranch %181
+        %181 = OpLabel
+               OpLoopMerge %182 %183 None
+               OpBranch %184
+        %184 = OpLabel
+        %185 = OpLoad %int %d
+        %186 = OpSLessThan %bool %185 %int_10
+               OpSelectionMerge %187 None
+               OpBranchConditional %186 %188 %189
+        %188 = OpLabel
+               OpBranch %187
+        %189 = OpLabel
+               OpBranch %182
+        %187 = OpLabel
+        %190 = OpLoad %int %limiter3
+        %191 = OpSGreaterThan %bool %190 %int_4
+               OpSelectionMerge %192 None
+               OpBranchConditional %191 %193 %192
+        %193 = OpLabel
+               OpBranch %182
+        %192 = OpLabel
+        %194 = OpLoad %int %limiter3
+        %195 = OpIAdd %int %194 %int_1
+               OpStore %limiter3 %195
+        %196 = OpLoad %int %d
+        %197 = OpLoad %int %d
+        %198 = OpAccessChain %_ptr_Function_int %arr0 %197
+        %199 = OpLoad %int %198
+        %200 = OpAccessChain %_ptr_Function_int %arr1 %196
+               OpStore %200 %199
+               OpBranch %183
+        %183 = OpLabel
+        %201 = OpLoad %int %d
+        %202 = OpIAdd %int %201 %int_1
+               OpStore %d %202
+               OpBranch %181
+        %182 = OpLabel
+               OpBranch %179
+        %179 = OpLabel
+        %203 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %204 = OpLoad %int %203
+        %205 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %206 = OpLoad %int %205
+        %207 = OpIEqual %bool %204 %206
+               OpSelectionMerge %208 None
+               OpBranchConditional %207 %209 %210
+        %209 = OpLabel
+               OpBranch %208
+        %210 = OpLabel
+               OpBranch %178
+        %208 = OpLabel
+               OpBranch %177
+        %178 = OpLabel
+               OpBranch %108
+        %108 = OpLabel
+        %211 = OpLoad %int %a
+        %212 = OpIAdd %int %211 %int_1
+               OpStore %a %212
+               OpBranch %106
+        %107 = OpLabel
+        %213 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %214 = OpLoad %int %213
+        %215 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+        %216 = OpLoad %int %215
+        %217 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %218 = OpLoad %int %217
+        %219 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %220 = OpLoad %int %219
+        %221 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %222 = OpLoad %int %221
+        %223 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+        %224 = OpLoad %int %223
+        %225 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+        %226 = OpLoad %int %225
+        %227 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+        %228 = OpLoad %int %227
+        %229 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %230 = OpLoad %int %229
+        %231 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+        %232 = OpLoad %int %231
+        %233 = OpCompositeConstruct %_arr_int_uint_10 %214 %216 %218 %220 %222 %224 %226 %228 %230 %232
+               OpStore %ref0 %233
+        %234 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %235 = OpLoad %int %234
+        %236 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+        %237 = OpLoad %int %236
+        %238 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %239 = OpLoad %int %238
+        %240 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %241 = OpLoad %int %240
+        %242 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %243 = OpLoad %int %242
+        %244 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_13
+        %245 = OpLoad %int %244
+        %246 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_14
+        %247 = OpLoad %int %246
+        %248 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+        %249 = OpLoad %int %248
+        %250 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_18
+        %251 = OpLoad %int %250
+        %252 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_19
+        %253 = OpLoad %int %252
+        %254 = OpCompositeConstruct %_arr_int_uint_10 %235 %237 %239 %241 %243 %245 %247 %249 %251 %253
+               OpStore %ref1 %254
+        %255 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %256 = OpLoad %int %255
+        %257 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %258 = OpLoad %int %257
+        %259 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %260 = OpLoad %int %259
+        %261 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %262 = OpLoad %int %261
+        %263 = OpConvertSToF %float %256
+        %264 = OpConvertSToF %float %258
+        %265 = OpConvertSToF %float %260
+        %266 = OpConvertSToF %float %262
+        %267 = OpCompositeConstruct %v4float %263 %264 %265 %266
+               OpStore %x_GLF_color %267
+        %268 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %269 = OpLoad %int %268
+               OpStore %i %269
+               OpBranch %270
+        %270 = OpLabel
+               OpLoopMerge %271 %272 None
+               OpBranch %273
+        %273 = OpLabel
+        %278 = OpLoad %int %i
+        %279 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %280 = OpLoad %int %279
+        %281 = OpSLessThan %bool %278 %280
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %284
+        %283 = OpLabel
+               OpBranch %282
+        %284 = OpLabel
+               OpBranch %271
+        %282 = OpLabel
+        %285 = OpLoad %int %i
+        %286 = OpAccessChain %_ptr_Function_int %arr0 %285
+        %287 = OpLoad %int %286
+        %288 = OpLoad %int %i
+        %289 = OpAccessChain %_ptr_Function_int %ref0 %288
+        %290 = OpLoad %int %289
+        %291 = OpINotEqual %bool %287 %290
+               OpStore %x_278_phi %291
+        %292 = OpLogicalNot %bool %291
+               OpSelectionMerge %293 None
+               OpBranchConditional %292 %294 %293
+        %294 = OpLabel
+        %295 = OpLoad %int %i
+        %296 = OpAccessChain %_ptr_Function_int %arr1 %295
+        %297 = OpLoad %int %296
+        %298 = OpLoad %int %i
+        %299 = OpAccessChain %_ptr_Function_int %ref1 %298
+        %300 = OpLoad %int %299
+        %301 = OpINotEqual %bool %297 %300
+               OpStore %x_277 %301
+        %302 = OpLoad %bool %x_277
+               OpStore %x_278_phi %302
+               OpBranch %293
+        %293 = OpLabel
+        %303 = OpLoad %bool %x_278_phi
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %304
+        %305 = OpLabel
+        %306 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %307 = OpLoad %int %306
+        %308 = OpConvertSToF %float %307
+        %309 = OpCompositeConstruct %v4float %308 %308 %308 %308
+               OpStore %x_GLF_color %309
+               OpBranch %304
+        %304 = OpLabel
+               OpBranch %272
+        %272 = OpLabel
+        %310 = OpLoad %int %i
+        %311 = OpIAdd %int %310 %int_1
+               OpStore %i %311
+               OpBranch %270
+        %271 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %312
+%tint_symbol = OpFunctionParameter %main_out
+        %316 = OpLabel
+        %317 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %317
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %319 = OpLabel
+        %320 = OpFunctionCall %void %main_1
+        %322 = OpLoad %v4float %x_GLF_color
+        %323 = OpCompositeConstruct %main_out %322
+        %321 = OpFunctionCall %void %tint_symbol_2 %323
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 179[%179] is not post dominated by the back-edge block 208[%208]
+  %208 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..60a0604
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,232 @@
+type Arr = [[stride(16)]] array<i32, 20>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+
+fn main_1() {
+  var arr0 : array<i32, 10>;
+  var arr1 : array<i32, 10>;
+  var a : i32;
+  var limiter0 : i32;
+  var limiter1 : i32;
+  var b : i32;
+  var limiter2 : i32;
+  var limiter3 : i32;
+  var d : i32;
+  var ref0 : array<i32, 10>;
+  var ref1 : array<i32, 10>;
+  var i : i32;
+  let x_59 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_61 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_65 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_67 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_69 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_71 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_73 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = x_6.x_GLF_uniform_int_values[10];
+  arr0 = array<i32, 10>(x_59, x_61, x_63, x_65, x_67, x_69, x_71, x_73, x_75, x_77);
+  let x_80 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_82 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[15];
+  let x_86 : i32 = x_6.x_GLF_uniform_int_values[16];
+  let x_88 : i32 = x_6.x_GLF_uniform_int_values[17];
+  let x_90 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_92 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_94 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_96 : i32 = x_6.x_GLF_uniform_int_values[18];
+  let x_98 : i32 = x_6.x_GLF_uniform_int_values[19];
+  arr1 = array<i32, 10>(x_80, x_82, x_84, x_86, x_88, x_90, x_92, x_94, x_96, x_98);
+  let x_101 : i32 = x_6.x_GLF_uniform_int_values[8];
+  a = x_101;
+  loop {
+    let x_106 : i32 = a;
+    let x_108 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_106 < x_108)) {
+    } else {
+      break;
+    }
+    let x_112 : i32 = x_6.x_GLF_uniform_int_values[3];
+    limiter0 = x_112;
+    loop {
+      let x_117 : i32 = limiter0;
+      let x_119 : i32 = x_6.x_GLF_uniform_int_values[4];
+      if ((x_117 < x_119)) {
+      } else {
+        break;
+      }
+      let x_122 : i32 = limiter0;
+      limiter0 = (x_122 + 1);
+      let x_125 : i32 = x_6.x_GLF_uniform_int_values[2];
+      limiter1 = x_125;
+      let x_127 : i32 = x_6.x_GLF_uniform_int_values[3];
+      b = x_127;
+      loop {
+        let x_132 : i32 = b;
+        let x_134 : i32 = x_6.x_GLF_uniform_int_values[1];
+        if ((x_132 < x_134)) {
+        } else {
+          break;
+        }
+        let x_137 : i32 = limiter1;
+        let x_139 : i32 = x_6.x_GLF_uniform_int_values[5];
+        if ((x_137 > x_139)) {
+          break;
+        }
+        let x_143 : i32 = limiter1;
+        limiter1 = (x_143 + 1);
+        let x_145 : i32 = b;
+        let x_146 : i32 = a;
+        let x_148 : i32 = arr1[x_146];
+        arr0[x_145] = x_148;
+
+        continuing {
+          let x_150 : i32 = b;
+          b = (x_150 + 1);
+        }
+      }
+    }
+    limiter2 = 0;
+    loop {
+      let x_156 : i32 = limiter2;
+      if ((x_156 < 5)) {
+      } else {
+        break;
+      }
+      let x_159 : i32 = limiter2;
+      limiter2 = (x_159 + 1);
+      let x_162 : i32 = arr1[1];
+      arr0[1] = x_162;
+    }
+    loop {
+      limiter3 = 0;
+      d = 0;
+      loop {
+        let x_172 : i32 = d;
+        if ((x_172 < 10)) {
+        } else {
+          break;
+        }
+        let x_175 : i32 = limiter3;
+        if ((x_175 > 4)) {
+          break;
+        }
+        let x_179 : i32 = limiter3;
+        limiter3 = (x_179 + 1);
+        let x_181 : i32 = d;
+        let x_182 : i32 = d;
+        let x_184 : i32 = arr0[x_182];
+        arr1[x_181] = x_184;
+
+        continuing {
+          let x_186 : i32 = d;
+          d = (x_186 + 1);
+        }
+      }
+
+      continuing {
+        let x_189 : i32 = x_6.x_GLF_uniform_int_values[2];
+        let x_191 : i32 = x_6.x_GLF_uniform_int_values[3];
+        if ((x_189 == x_191)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_193 : i32 = a;
+      a = (x_193 + 1);
+    }
+  }
+  let x_196 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_198 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_200 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_202 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_204 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_206 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_208 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_210 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_212 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_214 : i32 = x_6.x_GLF_uniform_int_values[10];
+  ref0 = array<i32, 10>(x_196, x_198, x_200, x_202, x_204, x_206, x_208, x_210, x_212, x_214);
+  let x_217 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_219 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_221 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_223 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_225 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_227 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_229 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_231 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_233 : i32 = x_6.x_GLF_uniform_int_values[18];
+  let x_235 : i32 = x_6.x_GLF_uniform_int_values[19];
+  ref1 = array<i32, 10>(x_217, x_219, x_221, x_223, x_225, x_227, x_229, x_231, x_233, x_235);
+  let x_238 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_241 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_244 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_247 : i32 = x_6.x_GLF_uniform_int_values[2];
+  x_GLF_color = vec4<f32>(f32(x_238), f32(x_241), f32(x_244), f32(x_247));
+  let x_251 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = x_251;
+  loop {
+    var x_277 : bool;
+    var x_278_phi : bool;
+    let x_256 : i32 = i;
+    let x_258 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_256 < x_258)) {
+    } else {
+      break;
+    }
+    let x_261 : i32 = i;
+    let x_263 : i32 = arr0[x_261];
+    let x_264 : i32 = i;
+    let x_266 : i32 = ref0[x_264];
+    let x_267 : bool = (x_263 != x_266);
+    x_278_phi = x_267;
+    if (!(x_267)) {
+      let x_271 : i32 = i;
+      let x_273 : i32 = arr1[x_271];
+      let x_274 : i32 = i;
+      let x_276 : i32 = ref1[x_274];
+      x_277 = (x_273 != x_276);
+      x_278_phi = x_277;
+    }
+    let x_278 : bool = x_278_phi;
+    if (x_278) {
+      let x_282 : i32 = x_6.x_GLF_uniform_int_values[3];
+      let x_283 : f32 = f32(x_282);
+      x_GLF_color = vec4<f32>(x_283, x_283, x_283, x_283);
+    }
+
+    continuing {
+      let x_285 : i32 = i;
+      i = (x_285 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm
new file mode 100644
index 0000000..c686e93
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm
@@ -0,0 +1,154 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v1 "v1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v2 "v2"
+               OpName %v3 "v3"
+               OpName %v4 "v4"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_7 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_7 = OpConstant %uint 7
+%_arr_float_uint_7 = OpTypeArray %float %uint_7
+       %buf0 = OpTypeStruct %_arr_float_uint_7
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_1_57079637 = OpConstant %float 1.57079637
+%float_1_11976957 = OpConstant %float 1.11976957
+%float_0x1_8p_128 = OpConstant %float 0x1.8p+128
+%float_0_927295208 = OpConstant %float 0.927295208
+         %27 = OpConstantComposite %v4float %float_1_57079637 %float_1_11976957 %float_0x1_8p_128 %float_0_927295208
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+      %int_3 = OpConstant %int 3
+      %int_6 = OpConstant %int 6
+     %uint_3 = OpConstant %uint 3
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %12
+         %39 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v4float Function
+         %v2 = OpVariable %_ptr_Function_v4float Function
+         %v3 = OpVariable %_ptr_Function_v4float Function
+         %v4 = OpVariable %_ptr_Function_v4float Function
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %v4float %41 %43 %45 %47
+               OpStore %v1 %48
+               OpStore %v2 %27
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %v3 %51
+         %52 = OpLoad %v4float %v1
+         %53 = OpLoad %v4float %v2
+         %54 = OpLoad %v4float %v3
+         %55 = OpExtInst %v4float %1 SmoothStep %52 %53 %54
+               OpStore %v4 %55
+         %56 = OpLoad %v4float %v4
+         %57 = OpVectorShuffle %v4float %56 %56 0 1 3 0
+               OpStore %_GLF_color %57
+         %58 = OpAccessChain %_ptr_Function_float %v4 %uint_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_4
+         %61 = OpLoad %float %60
+         %62 = OpFOrdGreaterThan %bool %59 %61
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+         %65 = OpAccessChain %_ptr_Function_float %v4 %uint_0
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_5
+         %68 = OpLoad %float %67
+         %69 = OpFOrdLessThan %bool %66 %68
+               OpBranch %63
+         %63 = OpLabel
+         %70 = OpPhi %bool %62 %39 %69 %64
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_float %v4 %uint_1
+         %74 = OpLoad %float %73
+         %75 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %76 = OpLoad %float %75
+         %77 = OpFOrdGreaterThan %bool %74 %76
+               OpBranch %71
+         %71 = OpLabel
+         %78 = OpPhi %bool %70 %63 %77 %72
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+         %81 = OpAccessChain %_ptr_Function_float %v4 %uint_1
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_6
+         %84 = OpLoad %float %83
+         %85 = OpFOrdLessThan %bool %82 %84
+               OpBranch %79
+         %79 = OpLabel
+         %86 = OpPhi %bool %78 %71 %85 %80
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+         %89 = OpAccessChain %_ptr_Function_float %v4 %uint_3
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %92 = OpLoad %float %91
+         %93 = OpFOrdEqual %bool %90 %92
+               OpBranch %87
+         %87 = OpLabel
+         %94 = OpPhi %bool %86 %79 %93 %88
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %101 = OpLoad %float %100
+        %102 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %105 = OpLoad %float %104
+        %106 = OpCompositeConstruct %v4float %99 %101 %103 %105
+               OpStore %_GLF_color %106
+               OpBranch %95
+         %97 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %108 = OpLoad %float %107
+        %109 = OpCompositeConstruct %v4float %108 %108 %108 %108
+               OpStore %_GLF_color %109
+               OpBranch %95
+         %95 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..841bebf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,94 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[7];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v3 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v4 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_69 = false;
+  bool x_77 = false;
+  bool x_85 = false;
+  bool x_93 = false;
+  bool x_70_phi = false;
+  bool x_78_phi = false;
+  bool x_86_phi = false;
+  bool x_94_phi = false;
+  const float x_41 = asfloat(x_6[2].x);
+  const float x_43 = asfloat(x_6[2].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_47 = asfloat(x_6[2].x);
+  v1 = float4(x_41, x_43, x_45, x_47);
+  v2 = float4(1.570796371f, 1.119769573f, asfloat(0x7fc00000u), 0.927295208f);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_50 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  v3 = float4(x_50, x_50, x_50, x_50);
+  v4 = smoothstep(v1, v2, v3);
+  const float4 x_56 = v4;
+  x_GLF_color = float4(x_56.x, x_56.y, x_56.w, x_56.x);
+  const float x_59 = v4.x;
+  const float x_61 = asfloat(x_6[4].x);
+  const bool x_62 = (x_59 > x_61);
+  x_70_phi = x_62;
+  if (x_62) {
+    const float x_66 = v4.x;
+    const float x_68 = asfloat(x_6[5].x);
+    x_69 = (x_66 < x_68);
+    x_70_phi = x_69;
+  }
+  const bool x_70 = x_70_phi;
+  x_78_phi = x_70;
+  if (x_70) {
+    const float x_74 = v4.y;
+    const float x_76 = asfloat(x_6[3].x);
+    x_77 = (x_74 > x_76);
+    x_78_phi = x_77;
+  }
+  const bool x_78 = x_78_phi;
+  x_86_phi = x_78;
+  if (x_78) {
+    const float x_82 = v4.y;
+    const float x_84 = asfloat(x_6[6].x);
+    x_85 = (x_82 < x_84);
+    x_86_phi = x_85;
+  }
+  const bool x_86 = x_86_phi;
+  x_94_phi = x_86;
+  if (x_86) {
+    const float x_90 = v4.w;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_92 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_93 = (x_90 == x_92);
+    x_94_phi = x_93;
+  }
+  if (x_94_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_99 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_101 = asfloat(x_6[1].x);
+    const float x_103 = asfloat(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_105 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(x_99, x_101, x_103, x_105);
+  } else {
+    const float x_108 = asfloat(x_6[1].x);
+    x_GLF_color = float4(x_108, x_108, x_108, x_108);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f541d0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.msl
@@ -0,0 +1,103 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[7];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float4 v1 = 0.0f;
+  float4 v2 = 0.0f;
+  float4 v3 = 0.0f;
+  float4 v4 = 0.0f;
+  bool x_69 = false;
+  bool x_77 = false;
+  bool x_85 = false;
+  bool x_93 = false;
+  bool x_70_phi = false;
+  bool x_78_phi = false;
+  bool x_86_phi = false;
+  bool x_94_phi = false;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_45 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_47 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  v1 = float4(x_41, x_43, x_45, x_47);
+  v2 = float4(1.570796371f, 1.119769573f, NAN, 0.927295208f);
+  float const x_50 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v3 = float4(x_50, x_50, x_50, x_50);
+  float4 const x_52 = v1;
+  float4 const x_53 = v2;
+  float4 const x_54 = v3;
+  v4 = smoothstep(x_52, x_53, x_54);
+  float4 const x_56 = v4;
+  *(tint_symbol_4) = float4(x_56.x, x_56.y, x_56.w, x_56.x);
+  float const x_59 = v4.x;
+  float const x_61 = x_6.x_GLF_uniform_float_values.arr[4].el;
+  bool const x_62 = (x_59 > x_61);
+  x_70_phi = x_62;
+  if (x_62) {
+    float const x_66 = v4.x;
+    float const x_68 = x_6.x_GLF_uniform_float_values.arr[5].el;
+    x_69 = (x_66 < x_68);
+    x_70_phi = x_69;
+  }
+  bool const x_70 = x_70_phi;
+  x_78_phi = x_70;
+  if (x_70) {
+    float const x_74 = v4.y;
+    float const x_76 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    x_77 = (x_74 > x_76);
+    x_78_phi = x_77;
+  }
+  bool const x_78 = x_78_phi;
+  x_86_phi = x_78;
+  if (x_78) {
+    float const x_82 = v4.y;
+    float const x_84 = x_6.x_GLF_uniform_float_values.arr[6].el;
+    x_85 = (x_82 < x_84);
+    x_86_phi = x_85;
+  }
+  bool const x_86 = x_86_phi;
+  x_94_phi = x_86;
+  if (x_86) {
+    float const x_90 = v4.w;
+    float const x_92 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    x_93 = (x_90 == x_92);
+    x_94_phi = x_93;
+  }
+  bool const x_94 = x_94_phi;
+  if (x_94) {
+    float const x_99 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_101 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_103 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_105 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_99, x_101, x_103, x_105);
+  } else {
+    float const x_108 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_4) = float4(x_108, x_108, x_108, x_108);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f43127a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,224 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 143
+; Schema: 0
+               OpCapability Shader
+         %60 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %v3 "v3"
+               OpName %v4 "v4"
+               OpName %x_69 "x_69"
+               OpName %x_77 "x_77"
+               OpName %x_85 "x_85"
+               OpName %x_93 "x_93"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_78_phi "x_78_phi"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_94_phi "x_94_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_7 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_7 = OpConstant %uint 7
+%_arr_float_uint_7 = OpTypeArray %float %uint_7
+       %buf0 = OpTypeStruct %_arr_float_uint_7
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %26 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+%float_1_57079637 = OpConstant %float 1.57079637
+%float_1_11976957 = OpConstant %float 1.11976957
+%float_0x1_8p_128 = OpConstant %float 0x1.8p+128
+%float_0_927295208 = OpConstant %float 0.927295208
+         %52 = OpConstantComposite %v4float %float_1_57079637 %float_1_11976957 %float_0x1_8p_128 %float_0_927295208
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+      %int_3 = OpConstant %int 3
+      %int_6 = OpConstant %int 6
+     %uint_3 = OpConstant %uint 3
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %131 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v4float Function %11
+         %v2 = OpVariable %_ptr_Function_v4float Function %11
+         %v3 = OpVariable %_ptr_Function_v4float Function %11
+         %v4 = OpVariable %_ptr_Function_v4float Function %11
+       %x_69 = OpVariable %_ptr_Function_bool Function %26
+       %x_77 = OpVariable %_ptr_Function_bool Function %26
+       %x_85 = OpVariable %_ptr_Function_bool Function %26
+       %x_93 = OpVariable %_ptr_Function_bool Function %26
+   %x_70_phi = OpVariable %_ptr_Function_bool Function %26
+   %x_78_phi = OpVariable %_ptr_Function_bool Function %26
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %26
+   %x_94_phi = OpVariable %_ptr_Function_bool Function %26
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %41 = OpLoad %float %40
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %46 = OpLoad %float %45
+         %47 = OpCompositeConstruct %v4float %39 %41 %44 %46
+               OpStore %v1 %47
+               OpStore %v2 %52
+         %53 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %54 = OpLoad %float %53
+         %55 = OpCompositeConstruct %v4float %54 %54 %54 %54
+               OpStore %v3 %55
+         %56 = OpLoad %v4float %v1
+         %57 = OpLoad %v4float %v2
+         %58 = OpLoad %v4float %v3
+         %59 = OpExtInst %v4float %60 SmoothStep %56 %57 %58
+               OpStore %v4 %59
+         %61 = OpLoad %v4float %v4
+         %62 = OpCompositeExtract %float %61 0
+         %63 = OpCompositeExtract %float %61 1
+         %64 = OpCompositeExtract %float %61 3
+         %65 = OpCompositeExtract %float %61 0
+         %66 = OpCompositeConstruct %v4float %62 %63 %64 %65
+               OpStore %x_GLF_color %66
+         %68 = OpAccessChain %_ptr_Function_float %v4 %uint_0
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %72 = OpLoad %float %71
+         %73 = OpFOrdGreaterThan %bool %69 %72
+               OpStore %x_70_phi %73
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+         %76 = OpAccessChain %_ptr_Function_float %v4 %uint_0
+         %77 = OpLoad %float %76
+         %79 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_5
+         %80 = OpLoad %float %79
+         %81 = OpFOrdLessThan %bool %77 %80
+               OpStore %x_69 %81
+         %82 = OpLoad %bool %x_69
+               OpStore %x_70_phi %82
+               OpBranch %74
+         %74 = OpLabel
+         %83 = OpLoad %bool %x_70_phi
+               OpStore %x_78_phi %83
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %84
+         %85 = OpLabel
+         %87 = OpAccessChain %_ptr_Function_float %v4 %uint_1
+         %88 = OpLoad %float %87
+         %90 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %91 = OpLoad %float %90
+         %92 = OpFOrdGreaterThan %bool %88 %91
+               OpStore %x_77 %92
+         %93 = OpLoad %bool %x_77
+               OpStore %x_78_phi %93
+               OpBranch %84
+         %84 = OpLabel
+         %94 = OpLoad %bool %x_78_phi
+               OpStore %x_86_phi %94
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+         %97 = OpAccessChain %_ptr_Function_float %v4 %uint_1
+         %98 = OpLoad %float %97
+        %100 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_6
+        %101 = OpLoad %float %100
+        %102 = OpFOrdLessThan %bool %98 %101
+               OpStore %x_85 %102
+        %103 = OpLoad %bool %x_85
+               OpStore %x_86_phi %103
+               OpBranch %95
+         %95 = OpLabel
+        %104 = OpLoad %bool %x_86_phi
+               OpStore %x_94_phi %104
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %105
+        %106 = OpLabel
+        %108 = OpAccessChain %_ptr_Function_float %v4 %uint_3
+        %109 = OpLoad %float %108
+        %110 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %111 = OpLoad %float %110
+        %112 = OpFOrdEqual %bool %109 %111
+               OpStore %x_93 %112
+        %113 = OpLoad %bool %x_93
+               OpStore %x_94_phi %113
+               OpBranch %105
+        %105 = OpLabel
+        %114 = OpLoad %bool %x_94_phi
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %117
+        %116 = OpLabel
+        %118 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %119 = OpLoad %float %118
+        %121 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %122 = OpLoad %float %121
+        %123 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %124 = OpLoad %float %123
+        %125 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %126 = OpLoad %float %125
+        %127 = OpCompositeConstruct %v4float %119 %122 %124 %126
+               OpStore %x_GLF_color %127
+               OpBranch %115
+        %117 = OpLabel
+        %128 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %129 = OpLoad %float %128
+        %130 = OpCompositeConstruct %v4float %129 %129 %129 %129
+               OpStore %x_GLF_color %130
+               OpBranch %115
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %131
+%tint_symbol = OpFunctionParameter %main_out
+        %135 = OpLabel
+        %136 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %136
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+        %138 = OpLabel
+        %139 = OpFunctionCall %void %main_1
+        %141 = OpLoad %v4float %x_GLF_color
+        %142 = OpCompositeConstruct %main_out %141
+        %140 = OpFunctionCall %void %tint_symbol_2 %142
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..32f966d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,96 @@
+type Arr = [[stride(16)]] array<f32, 7>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec4<f32>;
+  var v2 : vec4<f32>;
+  var v3 : vec4<f32>;
+  var v4 : vec4<f32>;
+  var x_69 : bool;
+  var x_77 : bool;
+  var x_85 : bool;
+  var x_93 : bool;
+  var x_70_phi : bool;
+  var x_78_phi : bool;
+  var x_86_phi : bool;
+  var x_94_phi : bool;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[2];
+  v1 = vec4<f32>(x_41, x_43, x_45, x_47);
+  v2 = vec4<f32>(1.570796371, 1.119769573, 0x1.8p+128, 0.927295208);
+  let x_50 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v3 = vec4<f32>(x_50, x_50, x_50, x_50);
+  let x_52 : vec4<f32> = v1;
+  let x_53 : vec4<f32> = v2;
+  let x_54 : vec4<f32> = v3;
+  v4 = smoothStep(x_52, x_53, x_54);
+  let x_56 : vec4<f32> = v4;
+  x_GLF_color = vec4<f32>(x_56.x, x_56.y, x_56.w, x_56.x);
+  let x_59 : f32 = v4.x;
+  let x_61 : f32 = x_6.x_GLF_uniform_float_values[4];
+  let x_62 : bool = (x_59 > x_61);
+  x_70_phi = x_62;
+  if (x_62) {
+    let x_66 : f32 = v4.x;
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[5];
+    x_69 = (x_66 < x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_78_phi = x_70;
+  if (x_70) {
+    let x_74 : f32 = v4.y;
+    let x_76 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_77 = (x_74 > x_76);
+    x_78_phi = x_77;
+  }
+  let x_78 : bool = x_78_phi;
+  x_86_phi = x_78;
+  if (x_78) {
+    let x_82 : f32 = v4.y;
+    let x_84 : f32 = x_6.x_GLF_uniform_float_values[6];
+    x_85 = (x_82 < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_94_phi = x_86;
+  if (x_86) {
+    let x_90 : f32 = v4.w;
+    let x_92 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_93 = (x_90 == x_92);
+    x_94_phi = x_93;
+  }
+  let x_94 : bool = x_94_phi;
+  if (x_94) {
+    let x_99 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_101 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_103 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_105 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_99, x_101, x_103, x_105);
+  } else {
+    let x_108 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_108, x_108, x_108, x_108);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
new file mode 100644
index 0000000..32f966d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
@@ -0,0 +1,96 @@
+type Arr = [[stride(16)]] array<f32, 7>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec4<f32>;
+  var v2 : vec4<f32>;
+  var v3 : vec4<f32>;
+  var v4 : vec4<f32>;
+  var x_69 : bool;
+  var x_77 : bool;
+  var x_85 : bool;
+  var x_93 : bool;
+  var x_70_phi : bool;
+  var x_78_phi : bool;
+  var x_86_phi : bool;
+  var x_94_phi : bool;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[2];
+  v1 = vec4<f32>(x_41, x_43, x_45, x_47);
+  v2 = vec4<f32>(1.570796371, 1.119769573, 0x1.8p+128, 0.927295208);
+  let x_50 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v3 = vec4<f32>(x_50, x_50, x_50, x_50);
+  let x_52 : vec4<f32> = v1;
+  let x_53 : vec4<f32> = v2;
+  let x_54 : vec4<f32> = v3;
+  v4 = smoothStep(x_52, x_53, x_54);
+  let x_56 : vec4<f32> = v4;
+  x_GLF_color = vec4<f32>(x_56.x, x_56.y, x_56.w, x_56.x);
+  let x_59 : f32 = v4.x;
+  let x_61 : f32 = x_6.x_GLF_uniform_float_values[4];
+  let x_62 : bool = (x_59 > x_61);
+  x_70_phi = x_62;
+  if (x_62) {
+    let x_66 : f32 = v4.x;
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[5];
+    x_69 = (x_66 < x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_78_phi = x_70;
+  if (x_70) {
+    let x_74 : f32 = v4.y;
+    let x_76 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_77 = (x_74 > x_76);
+    x_78_phi = x_77;
+  }
+  let x_78 : bool = x_78_phi;
+  x_86_phi = x_78;
+  if (x_78) {
+    let x_82 : f32 = v4.y;
+    let x_84 : f32 = x_6.x_GLF_uniform_float_values[6];
+    x_85 = (x_82 < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_94_phi = x_86;
+  if (x_86) {
+    let x_90 : f32 = v4.w;
+    let x_92 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_93 = (x_90 == x_92);
+    x_94_phi = x_93;
+  }
+  let x_94 : bool = x_94_phi;
+  if (x_94) {
+    let x_99 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_101 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_103 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_105 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_99, x_101, x_103, x_105);
+  } else {
+    let x_108 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_108, x_108, x_108, x_108);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..62792b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl:30:47 error: expected ')' for type constructor
+  v2 = vec4<f32>(1.570796371, 1.119769573, 0x1.8p+128, 0.927295208);
+                                              ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..62792b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.msl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl:30:47 error: expected ')' for type constructor
+  v2 = vec4<f32>(1.570796371, 1.119769573, 0x1.8p+128, 0.927295208);
+                                              ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..62792b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl:30:47 error: expected ')' for type constructor
+  v2 = vec4<f32>(1.570796371, 1.119769573, 0x1.8p+128, 0.927295208);
+                                              ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..62792b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl:30:47 error: expected ')' for type constructor
+  v2 = vec4<f32>(1.570796371, 1.119769573, 0x1.8p+128, 0.927295208);
+                                              ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm
new file mode 100644
index 0000000..d25e5e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm
@@ -0,0 +1,116 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%float_n621_596008 = OpConstant %float -621.596008
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %13
+         %30 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+          %f = OpVariable %_ptr_Function_float Function
+         %31 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpConvertSToF %float %32
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpConvertSToF %float %35
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpCompositeConstruct %v4float %33 %36 %float_n621_596008 %39
+               OpStore %v %40
+         %41 = OpLoad %v4float %v
+         %42 = OpExtInst %v4float %1 Trunc %41
+         %43 = OpExtInst %v4float %1 Atan %42
+         %44 = OpCompositeExtract %float %43 2
+               OpStore %f %44
+         %45 = OpLoad %float %f
+         %46 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpFNegate %float %47
+         %49 = OpFOrdGreaterThan %bool %45 %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+         %52 = OpLoad %float %f
+         %53 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %54 = OpLoad %float %53
+         %55 = OpFNegate %float %54
+         %56 = OpFOrdLessThan %bool %52 %55
+               OpBranch %50
+         %50 = OpLabel
+         %57 = OpPhi %bool %49 %30 %56 %51
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpCompositeConstruct %v4float %63 %66 %69 %72
+               OpStore %_GLF_color %73
+               OpBranch %58
+         %60 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpCompositeConstruct %v4float %76 %76 %76 %76
+               OpStore %_GLF_color %77
+               OpBranch %58
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..be0338b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,62 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float f = 0.0f;
+  bool x_56 = false;
+  bool x_57_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_32 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_35 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  v = float4(float(x_32), float(x_35), -621.596008301f, float(x_38));
+  f = atan(trunc(v)).z;
+  const float x_45 = f;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const bool x_49 = (x_45 > -(x_47));
+  x_57_phi = x_49;
+  if (x_49) {
+    const float x_52 = f;
+    const float x_54 = asfloat(x_9[1].x);
+    x_56 = (x_52 < -(x_54));
+    x_57_phi = x_56;
+  }
+  if (x_57_phi) {
+    const int x_62 = asint(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_68 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_71 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_62), float(x_65), float(x_68), float(x_71));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_75 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_76 = float(x_75);
+    x_GLF_color = float4(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..7559de0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float f = 0.0f;
+  bool x_56 = false;
+  bool x_57_phi = false;
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  v = float4(float(x_32), float(x_35), -621.596008301f, float(x_38));
+  float4 const x_41 = v;
+  f = atan(trunc(x_41)).z;
+  float const x_45 = f;
+  float const x_47 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_49 = (x_45 > -(x_47));
+  x_57_phi = x_49;
+  if (x_49) {
+    float const x_52 = f;
+    float const x_54 = x_9.x_GLF_uniform_float_values.arr[1].el;
+    x_56 = (x_52 < -(x_54));
+    x_57_phi = x_56;
+  }
+  bool const x_57 = x_57_phi;
+  if (x_57) {
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_68 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_62), float(x_65), float(x_68), float(x_71));
+  } else {
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_76 = float(x_75);
+    *(tint_symbol_4) = float4(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f01fd57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,161 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 100
+; Schema: 0
+               OpCapability Shader
+         %49 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %f "f"
+               OpName %x_56 "x_56"
+               OpName %x_57_phi "x_57_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %27 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %31 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%float_n621_596008 = OpConstant %float -621.596008
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %16
+          %f = OpVariable %_ptr_Function_float Function %27
+       %x_56 = OpVariable %_ptr_Function_bool Function %31
+   %x_57_phi = OpVariable %_ptr_Function_bool Function %31
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpConvertSToF %float %37
+         %43 = OpConvertSToF %float %39
+         %45 = OpConvertSToF %float %41
+         %46 = OpCompositeConstruct %v4float %42 %43 %float_n621_596008 %45
+               OpStore %v %46
+         %47 = OpLoad %v4float %v
+         %50 = OpExtInst %v4float %49 Trunc %47
+         %48 = OpExtInst %v4float %49 Atan %50
+         %51 = OpCompositeExtract %float %48 2
+               OpStore %f %51
+         %52 = OpLoad %float %f
+         %54 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpFNegate %float %55
+         %57 = OpFOrdGreaterThan %bool %52 %56
+               OpStore %x_57_phi %57
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpLoad %float %f
+         %62 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %63 = OpLoad %float %62
+         %64 = OpFNegate %float %63
+         %65 = OpFOrdLessThan %bool %60 %64
+               OpStore %x_56 %65
+         %66 = OpLoad %bool %x_56
+               OpStore %x_57_phi %66
+               OpBranch %58
+         %58 = OpLabel
+         %67 = OpLoad %bool %x_57_phi
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %72
+         %80 = OpConvertSToF %float %74
+         %81 = OpConvertSToF %float %76
+         %82 = OpConvertSToF %float %78
+         %83 = OpCompositeConstruct %v4float %79 %80 %81 %82
+               OpStore %x_GLF_color %83
+               OpBranch %68
+         %70 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %85
+         %87 = OpCompositeConstruct %v4float %86 %86 %86 %86
+               OpStore %x_GLF_color %87
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %88
+%tint_symbol = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %95 = OpLabel
+         %96 = OpFunctionCall %void %main_1
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpCompositeConstruct %main_out %98
+         %97 = OpFunctionCall %void %tint_symbol_2 %99
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..0ac797e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,66 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var f : f32;
+  var x_56 : bool;
+  var x_57_phi : bool;
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v = vec4<f32>(f32(x_32), f32(x_35), -621.596008301, f32(x_38));
+  let x_41 : vec4<f32> = v;
+  f = atan(trunc(x_41)).z;
+  let x_45 : f32 = f;
+  let x_47 : f32 = x_9.x_GLF_uniform_float_values[0];
+  let x_49 : bool = (x_45 > -(x_47));
+  x_57_phi = x_49;
+  if (x_49) {
+    let x_52 : f32 = f;
+    let x_54 : f32 = x_9.x_GLF_uniform_float_values[1];
+    x_56 = (x_52 < -(x_54));
+    x_57_phi = x_56;
+  }
+  let x_57 : bool = x_57_phi;
+  if (x_57) {
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_62), f32(x_65), f32(x_68), f32(x_71));
+  } else {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_76 : f32 = f32(x_75);
+    x_GLF_color = vec4<f32>(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
new file mode 100644
index 0000000..0ac797e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
@@ -0,0 +1,66 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var f : f32;
+  var x_56 : bool;
+  var x_57_phi : bool;
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v = vec4<f32>(f32(x_32), f32(x_35), -621.596008301, f32(x_38));
+  let x_41 : vec4<f32> = v;
+  f = atan(trunc(x_41)).z;
+  let x_45 : f32 = f;
+  let x_47 : f32 = x_9.x_GLF_uniform_float_values[0];
+  let x_49 : bool = (x_45 > -(x_47));
+  x_57_phi = x_49;
+  if (x_49) {
+    let x_52 : f32 = f;
+    let x_54 : f32 = x_9.x_GLF_uniform_float_values[1];
+    x_56 = (x_52 < -(x_54));
+    x_57_phi = x_56;
+  }
+  let x_57 : bool = x_57_phi;
+  if (x_57) {
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_62), f32(x_65), f32(x_68), f32(x_71));
+  } else {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_76 : f32 = f32(x_75);
+    x_GLF_color = vec4<f32>(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..be0338b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,62 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float f = 0.0f;
+  bool x_56 = false;
+  bool x_57_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_32 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_35 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  v = float4(float(x_32), float(x_35), -621.596008301f, float(x_38));
+  f = atan(trunc(v)).z;
+  const float x_45 = f;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const bool x_49 = (x_45 > -(x_47));
+  x_57_phi = x_49;
+  if (x_49) {
+    const float x_52 = f;
+    const float x_54 = asfloat(x_9[1].x);
+    x_56 = (x_52 < -(x_54));
+    x_57_phi = x_56;
+  }
+  if (x_57_phi) {
+    const int x_62 = asint(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_68 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_71 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_62), float(x_65), float(x_68), float(x_71));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_75 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_76 = float(x_75);
+    x_GLF_color = float4(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..7559de0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float f = 0.0f;
+  bool x_56 = false;
+  bool x_57_phi = false;
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  v = float4(float(x_32), float(x_35), -621.596008301f, float(x_38));
+  float4 const x_41 = v;
+  f = atan(trunc(x_41)).z;
+  float const x_45 = f;
+  float const x_47 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_49 = (x_45 > -(x_47));
+  x_57_phi = x_49;
+  if (x_49) {
+    float const x_52 = f;
+    float const x_54 = x_9.x_GLF_uniform_float_values.arr[1].el;
+    x_56 = (x_52 < -(x_54));
+    x_57_phi = x_56;
+  }
+  bool const x_57 = x_57_phi;
+  if (x_57) {
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_68 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_62), float(x_65), float(x_68), float(x_71));
+  } else {
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_76 = float(x_75);
+    *(tint_symbol_4) = float4(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f01fd57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,161 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 100
+; Schema: 0
+               OpCapability Shader
+         %49 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %f "f"
+               OpName %x_56 "x_56"
+               OpName %x_57_phi "x_57_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %27 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %31 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%float_n621_596008 = OpConstant %float -621.596008
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %16
+          %f = OpVariable %_ptr_Function_float Function %27
+       %x_56 = OpVariable %_ptr_Function_bool Function %31
+   %x_57_phi = OpVariable %_ptr_Function_bool Function %31
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpConvertSToF %float %37
+         %43 = OpConvertSToF %float %39
+         %45 = OpConvertSToF %float %41
+         %46 = OpCompositeConstruct %v4float %42 %43 %float_n621_596008 %45
+               OpStore %v %46
+         %47 = OpLoad %v4float %v
+         %50 = OpExtInst %v4float %49 Trunc %47
+         %48 = OpExtInst %v4float %49 Atan %50
+         %51 = OpCompositeExtract %float %48 2
+               OpStore %f %51
+         %52 = OpLoad %float %f
+         %54 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpFNegate %float %55
+         %57 = OpFOrdGreaterThan %bool %52 %56
+               OpStore %x_57_phi %57
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpLoad %float %f
+         %62 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %63 = OpLoad %float %62
+         %64 = OpFNegate %float %63
+         %65 = OpFOrdLessThan %bool %60 %64
+               OpStore %x_56 %65
+         %66 = OpLoad %bool %x_56
+               OpStore %x_57_phi %66
+               OpBranch %58
+         %58 = OpLabel
+         %67 = OpLoad %bool %x_57_phi
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %72
+         %80 = OpConvertSToF %float %74
+         %81 = OpConvertSToF %float %76
+         %82 = OpConvertSToF %float %78
+         %83 = OpCompositeConstruct %v4float %79 %80 %81 %82
+               OpStore %x_GLF_color %83
+               OpBranch %68
+         %70 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %85
+         %87 = OpCompositeConstruct %v4float %86 %86 %86 %86
+               OpStore %x_GLF_color %87
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %88
+%tint_symbol = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %95 = OpLabel
+         %96 = OpFunctionCall %void %main_1
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpCompositeConstruct %main_out %98
+         %97 = OpFunctionCall %void %tint_symbol_2 %99
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..0ac797e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,66 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var f : f32;
+  var x_56 : bool;
+  var x_57_phi : bool;
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v = vec4<f32>(f32(x_32), f32(x_35), -621.596008301, f32(x_38));
+  let x_41 : vec4<f32> = v;
+  f = atan(trunc(x_41)).z;
+  let x_45 : f32 = f;
+  let x_47 : f32 = x_9.x_GLF_uniform_float_values[0];
+  let x_49 : bool = (x_45 > -(x_47));
+  x_57_phi = x_49;
+  if (x_49) {
+    let x_52 : f32 = f;
+    let x_54 : f32 = x_9.x_GLF_uniform_float_values[1];
+    x_56 = (x_52 < -(x_54));
+    x_57_phi = x_56;
+  }
+  let x_57 : bool = x_57_phi;
+  if (x_57) {
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_62), f32(x_65), f32(x_68), f32(x_71));
+  } else {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_76 : f32 = f32(x_75);
+    x_GLF_color = vec4<f32>(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm
new file mode 100644
index 0000000..3fa5b16
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm
@@ -0,0 +1,90 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_i1_ "func(i1;"
+               OpName %x "x"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpTypeFunction %int %_ptr_Function_int
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %30 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %12
+         %31 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %33 = OpLoad %int %32
+               OpStore %b %33
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpPhi %int %33 %31 %36 %34
+               OpStore %param %35
+         %37 = OpFunctionCall %int %func_i1_ %param
+               OpStore %a %37
+         %36 = OpIAdd %int %35 %int_1
+               OpStore %b %36
+         %38 = OpSLessThan %bool %36 %int_4
+               OpLoopMerge %39 %34 None
+               OpBranchConditional %38 %34 %39
+         %39 = OpLabel
+         %40 = OpIEqual %bool %37 %int_3
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %41
+         %43 = OpLabel
+               OpStore %_GLF_color %30
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_i1_ = OpFunction %int None %15
+          %x = OpFunctionParameter %_ptr_Function_int
+         %44 = OpLabel
+         %45 = OpLoad %int %x
+         %46 = OpIEqual %bool %45 %int_10
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+               OpKill
+         %47 = OpLabel
+         %49 = OpLoad %int %x
+               OpReturnValue %49
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..8477479
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_i1_(inout int x) {
+  const int x_45 = x;
+  if ((x_45 == 10)) {
+    discard;
+  }
+  const int x_49 = x;
+  return x_49;
+}
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int param = 0;
+  int x_37 = 0;
+  int x_35_phi = 0;
+  a = 0;
+  const int x_33 = asint(x_9[0].x);
+  b = x_33;
+  x_35_phi = x_33;
+  while (true) {
+    const int x_35 = x_35_phi;
+    param = x_35;
+    x_37 = func_i1_(param);
+    a = x_37;
+    const int x_36 = (x_35 + 1);
+    b = x_36;
+    x_35_phi = x_36;
+    if ((x_36 < 4)) {
+    } else {
+      break;
+    }
+  }
+  if ((x_37 == asint(3))) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..66a656e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_i1_(thread int* const x) {
+  int const x_45 = *(x);
+  if ((x_45 == 10)) {
+    discard_fragment();
+  }
+  int const x_49 = *(x);
+  return x_49;
+}
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  int param = 0;
+  int x_37 = 0;
+  int x_35_phi = 0;
+  a = 0;
+  int const x_33 = x_9.zero;
+  b = x_33;
+  x_35_phi = x_33;
+  while (true) {
+    int const x_35 = x_35_phi;
+    param = x_35;
+    x_37 = func_i1_(&(param));
+    a = x_37;
+    int const x_36 = (x_35 + 1);
+    b = x_36;
+    x_35_phi = x_36;
+    if ((x_36 < 4)) {
+    } else {
+      break;
+    }
+  }
+  if ((x_37 == as_type<int>(3))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f8a6cea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,145 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 80
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %param "param"
+               OpName %x_37 "x_37"
+               OpName %x_35_phi "x_35_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %int %_ptr_Function_int
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+       %void = OpTypeVoid
+         %26 = OpTypeFunction %void
+         %31 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %66 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %67 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %int None %12
+          %x = OpFunctionParameter %_ptr_Function_int
+         %16 = OpLabel
+         %18 = OpLoad %int %x
+         %20 = OpIEqual %bool %18 %int_10
+               OpSelectionMerge %22 None
+               OpBranchConditional %20 %23 %22
+         %23 = OpLabel
+               OpKill
+         %22 = OpLabel
+         %25 = OpLoad %int %x
+               OpReturnValue %25
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %26
+         %29 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %31
+          %b = OpVariable %_ptr_Function_int Function %31
+      %param = OpVariable %_ptr_Function_int Function %31
+       %x_37 = OpVariable %_ptr_Function_int Function %31
+   %x_35_phi = OpVariable %_ptr_Function_int Function %31
+               OpStore %a %int_0
+         %40 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %41 = OpLoad %int %40
+               OpStore %b %41
+               OpStore %x_35_phi %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %x_35_phi
+               OpStore %param %46
+         %47 = OpFunctionCall %int %func_i1_ %param
+               OpStore %x_37 %47
+         %49 = OpLoad %int %x_37
+               OpStore %a %49
+         %51 = OpIAdd %int %46 %int_1
+               OpStore %b %51
+               OpStore %x_35_phi %51
+         %53 = OpSLessThan %bool %51 %int_4
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpBranch %54
+         %56 = OpLabel
+               OpBranch %43
+         %54 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+         %57 = OpLoad %int %x_37
+         %58 = OpCopyObject %int %int_3
+         %60 = OpIEqual %bool %57 %58
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpStore %x_GLF_color %66
+               OpBranch %61
+         %63 = OpLabel
+               OpStore %x_GLF_color %67
+               OpBranch %61
+         %61 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %68
+%tint_symbol = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %26
+         %75 = OpLabel
+         %76 = OpFunctionCall %void %main_1
+         %78 = OpLoad %v4float %x_GLF_color
+         %79 = OpCompositeConstruct %main_out %78
+         %77 = OpFunctionCall %void %tint_symbol_2 %79
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..39b2064
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,59 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) -> i32 {
+  let x_45 : i32 = *(x);
+  if ((x_45 == 10)) {
+    discard;
+  }
+  let x_49 : i32 = *(x);
+  return x_49;
+}
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var param : i32;
+  var x_37 : i32;
+  var x_35_phi : i32;
+  a = 0;
+  let x_33 : i32 = x_9.zero;
+  b = x_33;
+  x_35_phi = x_33;
+  loop {
+    let x_35 : i32 = x_35_phi;
+    param = x_35;
+    x_37 = func_i1_(&(param));
+    a = x_37;
+    let x_36 : i32 = (x_35 + 1);
+    b = x_36;
+    x_35_phi = x_36;
+    if ((x_36 < 4)) {
+    } else {
+      break;
+    }
+  }
+  if ((x_37 == bitcast<i32>(3))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
new file mode 100644
index 0000000..39b2064
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
@@ -0,0 +1,59 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) -> i32 {
+  let x_45 : i32 = *(x);
+  if ((x_45 == 10)) {
+    discard;
+  }
+  let x_49 : i32 = *(x);
+  return x_49;
+}
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var param : i32;
+  var x_37 : i32;
+  var x_35_phi : i32;
+  a = 0;
+  let x_33 : i32 = x_9.zero;
+  b = x_33;
+  x_35_phi = x_33;
+  loop {
+    let x_35 : i32 = x_35_phi;
+    param = x_35;
+    x_37 = func_i1_(&(param));
+    a = x_37;
+    let x_36 : i32 = (x_35 + 1);
+    b = x_36;
+    x_35_phi = x_36;
+    if ((x_36 < 4)) {
+    } else {
+      break;
+    }
+  }
+  if ((x_37 == bitcast<i32>(3))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..8477479
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_i1_(inout int x) {
+  const int x_45 = x;
+  if ((x_45 == 10)) {
+    discard;
+  }
+  const int x_49 = x;
+  return x_49;
+}
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int param = 0;
+  int x_37 = 0;
+  int x_35_phi = 0;
+  a = 0;
+  const int x_33 = asint(x_9[0].x);
+  b = x_33;
+  x_35_phi = x_33;
+  while (true) {
+    const int x_35 = x_35_phi;
+    param = x_35;
+    x_37 = func_i1_(param);
+    a = x_37;
+    const int x_36 = (x_35 + 1);
+    b = x_36;
+    x_35_phi = x_36;
+    if ((x_36 < 4)) {
+    } else {
+      break;
+    }
+  }
+  if ((x_37 == asint(3))) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..66a656e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_i1_(thread int* const x) {
+  int const x_45 = *(x);
+  if ((x_45 == 10)) {
+    discard_fragment();
+  }
+  int const x_49 = *(x);
+  return x_49;
+}
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  int param = 0;
+  int x_37 = 0;
+  int x_35_phi = 0;
+  a = 0;
+  int const x_33 = x_9.zero;
+  b = x_33;
+  x_35_phi = x_33;
+  while (true) {
+    int const x_35 = x_35_phi;
+    param = x_35;
+    x_37 = func_i1_(&(param));
+    a = x_37;
+    int const x_36 = (x_35 + 1);
+    b = x_36;
+    x_35_phi = x_36;
+    if ((x_36 < 4)) {
+    } else {
+      break;
+    }
+  }
+  if ((x_37 == as_type<int>(3))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f8a6cea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,145 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 80
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %param "param"
+               OpName %x_37 "x_37"
+               OpName %x_35_phi "x_35_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %int %_ptr_Function_int
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+       %void = OpTypeVoid
+         %26 = OpTypeFunction %void
+         %31 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %66 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %67 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %int None %12
+          %x = OpFunctionParameter %_ptr_Function_int
+         %16 = OpLabel
+         %18 = OpLoad %int %x
+         %20 = OpIEqual %bool %18 %int_10
+               OpSelectionMerge %22 None
+               OpBranchConditional %20 %23 %22
+         %23 = OpLabel
+               OpKill
+         %22 = OpLabel
+         %25 = OpLoad %int %x
+               OpReturnValue %25
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %26
+         %29 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %31
+          %b = OpVariable %_ptr_Function_int Function %31
+      %param = OpVariable %_ptr_Function_int Function %31
+       %x_37 = OpVariable %_ptr_Function_int Function %31
+   %x_35_phi = OpVariable %_ptr_Function_int Function %31
+               OpStore %a %int_0
+         %40 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %41 = OpLoad %int %40
+               OpStore %b %41
+               OpStore %x_35_phi %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %x_35_phi
+               OpStore %param %46
+         %47 = OpFunctionCall %int %func_i1_ %param
+               OpStore %x_37 %47
+         %49 = OpLoad %int %x_37
+               OpStore %a %49
+         %51 = OpIAdd %int %46 %int_1
+               OpStore %b %51
+               OpStore %x_35_phi %51
+         %53 = OpSLessThan %bool %51 %int_4
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpBranch %54
+         %56 = OpLabel
+               OpBranch %43
+         %54 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+         %57 = OpLoad %int %x_37
+         %58 = OpCopyObject %int %int_3
+         %60 = OpIEqual %bool %57 %58
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpStore %x_GLF_color %66
+               OpBranch %61
+         %63 = OpLabel
+               OpStore %x_GLF_color %67
+               OpBranch %61
+         %61 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %68
+%tint_symbol = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %26
+         %75 = OpLabel
+         %76 = OpFunctionCall %void %main_1
+         %78 = OpLoad %v4float %x_GLF_color
+         %79 = OpCompositeConstruct %main_out %78
+         %77 = OpFunctionCall %void %tint_symbol_2 %79
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..39b2064
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,59 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) -> i32 {
+  let x_45 : i32 = *(x);
+  if ((x_45 == 10)) {
+    discard;
+  }
+  let x_49 : i32 = *(x);
+  return x_49;
+}
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var param : i32;
+  var x_37 : i32;
+  var x_35_phi : i32;
+  a = 0;
+  let x_33 : i32 = x_9.zero;
+  b = x_33;
+  x_35_phi = x_33;
+  loop {
+    let x_35 : i32 = x_35_phi;
+    param = x_35;
+    x_37 = func_i1_(&(param));
+    a = x_37;
+    let x_36 : i32 = (x_35 + 1);
+    b = x_36;
+    x_35_phi = x_36;
+    if ((x_36 < 4)) {
+    } else {
+      break;
+    }
+  }
+  if ((x_37 == bitcast<i32>(3))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm
new file mode 100644
index 0000000..08cec7e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm
@@ -0,0 +1,133 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f1_ "f1("
+               OpName %a "a"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %a_0 "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %18 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %16
+         %37 = OpLabel
+        %a_0 = OpVariable %_ptr_Function_int Function
+         %38 = OpFunctionCall %int %f1_
+               OpStore %a_0 %38
+         %39 = OpLoad %int %a_0
+         %40 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %41 = OpLoad %int %40
+         %42 = OpIEqual %bool %39 %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpCompositeConstruct %v4float %48 %51 %54 %57
+               OpStore %_GLF_color %58
+               OpBranch %43
+         %45 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpCompositeConstruct %v4float %61 %61 %61 %61
+               OpStore %_GLF_color %62
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+        %f1_ = OpFunction %int None %18
+         %63 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_256
+         %64 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %67 = OpLoad %float %66
+         %68 = OpFOrdGreaterThan %bool %65 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpLoad %int %a
+         %72 = OpIAdd %int %71 %int_1
+               OpStore %a %72
+               OpBranch %69
+         %69 = OpLabel
+         %73 = OpLoad %int %a
+         %74 = OpBitCount %int %73
+               OpStore %i %74
+         %75 = OpLoad %int %i
+         %76 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpSLessThan %bool %75 %77
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %82 = OpLoad %int %81
+               OpReturnValue %82
+         %79 = OpLabel
+         %83 = OpLoad %int %i
+               OpReturnValue %83
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ff5511e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,71 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int f1_() {
+  int a = 0;
+  int i = 0;
+  a = 256;
+  const float x_65 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_67 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_65 > x_67)) {
+    a = (a + 1);
+  }
+  i = countbits(a);
+  const int x_75 = i;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_77 = asint(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_75 < x_77)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_82 = asint(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    return x_82;
+  }
+  return i;
+}
+
+void main_1() {
+  int a_1 = 0;
+  const int x_38 = f1_();
+  a_1 = x_38;
+  const int x_39 = a_1;
+  const int x_41 = asint(x_11[2].x);
+  if ((x_39 == x_41)) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_11[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_50 = asint(x_11[1].x);
+    const int x_53 = asint(x_11[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_11[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    const int x_60 = asint(x_11[1].x);
+    const float x_61 = float(x_60);
+    x_GLF_color = float4(x_61, x_61, x_61, x_61);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..cbab4db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.msl
@@ -0,0 +1,82 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int f1_(constant buf0& x_8, constant buf1& x_11, thread float4* const tint_symbol_5) {
+  int a = 0;
+  int i = 0;
+  a = 256;
+  float const x_65 = (*(tint_symbol_5)).y;
+  float const x_67 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_65 > x_67)) {
+    int const x_71 = a;
+    a = (x_71 + 1);
+  }
+  int const x_73 = a;
+  i = popcount(x_73);
+  int const x_75 = i;
+  int const x_77 = x_11.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_75 < x_77)) {
+    int const x_82 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    return x_82;
+  }
+  int const x_83 = i;
+  return x_83;
+}
+
+void main_1(constant buf0& x_8, constant buf1& x_11, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int a_1 = 0;
+  int const x_38 = f1_(x_8, x_11, tint_symbol_6);
+  a_1 = x_38;
+  int const x_39 = a_1;
+  int const x_41 = x_11.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_39 == x_41)) {
+    int const x_47 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    int const x_50 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_53 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_7) = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    int const x_60 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    float const x_61 = float(x_60);
+    *(tint_symbol_7) = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_8, x_11, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f6ad901
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,171 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 102
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f1_ "f1_"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %a_1 "a_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %23 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+    %int_256 = OpConstant %int 256
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %void = OpTypeVoid
+         %58 = OpTypeFunction %void
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %89 = OpTypeFunction %void %main_out
+        %f1_ = OpFunction %int None %23
+         %25 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %28
+          %i = OpVariable %_ptr_Function_int Function %28
+               OpStore %a %int_256
+         %32 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %33 = OpLoad %float %32
+         %37 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThan %bool %33 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %41
+         %42 = OpLabel
+         %43 = OpLoad %int %a
+         %45 = OpIAdd %int %43 %int_1
+               OpStore %a %45
+               OpBranch %41
+         %41 = OpLabel
+         %46 = OpLoad %int %a
+         %47 = OpBitCount %int %46
+               OpStore %i %47
+         %48 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %48 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %56 = OpLoad %int %55
+               OpReturnValue %56
+         %53 = OpLabel
+         %57 = OpLoad %int %i
+               OpReturnValue %57
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %58
+         %61 = OpLabel
+        %a_1 = OpVariable %_ptr_Function_int Function %28
+         %63 = OpFunctionCall %int %f1_
+               OpStore %a_1 %63
+         %64 = OpLoad %int %a_1
+         %66 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %67 = OpLoad %int %66
+         %68 = OpIEqual %bool %64 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %73
+         %81 = OpConvertSToF %float %75
+         %82 = OpConvertSToF %float %77
+         %83 = OpConvertSToF %float %79
+         %84 = OpCompositeConstruct %v4float %80 %81 %82 %83
+               OpStore %x_GLF_color %84
+               OpBranch %69
+         %71 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpCompositeConstruct %v4float %87 %87 %87 %87
+               OpStore %x_GLF_color %88
+               OpBranch %69
+         %69 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %89
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %93 = OpLabel
+         %94 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %94
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %58
+         %96 = OpLabel
+         %97 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %97
+         %98 = OpFunctionCall %void %main_1
+        %100 = OpLoad %v4float %x_GLF_color
+        %101 = OpCompositeConstruct %main_out %100
+         %99 = OpFunctionCall %void %tint_symbol_3 %101
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a14b4cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,75 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f1_() -> i32 {
+  var a : i32;
+  var i : i32;
+  a = 256;
+  let x_65 : f32 = gl_FragCoord.y;
+  let x_67 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_65 > x_67)) {
+    let x_71 : i32 = a;
+    a = (x_71 + 1);
+  }
+  let x_73 : i32 = a;
+  i = countOneBits(x_73);
+  let x_75 : i32 = i;
+  let x_77 : i32 = x_11.x_GLF_uniform_int_values[0];
+  if ((x_75 < x_77)) {
+    let x_82 : i32 = x_11.x_GLF_uniform_int_values[0];
+    return x_82;
+  }
+  let x_83 : i32 = i;
+  return x_83;
+}
+
+fn main_1() {
+  var a_1 : i32;
+  let x_38 : i32 = f1_();
+  a_1 = x_38;
+  let x_39 : i32 = a_1;
+  let x_41 : i32 = x_11.x_GLF_uniform_int_values[2];
+  if ((x_39 == x_41)) {
+    let x_47 : i32 = x_11.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_53 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_11.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_47), f32(x_50), f32(x_53), f32(x_56));
+  } else {
+    let x_60 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_61 : f32 = f32(x_60);
+    x_GLF_color = vec4<f32>(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
new file mode 100644
index 0000000..a14b4cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
@@ -0,0 +1,75 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f1_() -> i32 {
+  var a : i32;
+  var i : i32;
+  a = 256;
+  let x_65 : f32 = gl_FragCoord.y;
+  let x_67 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_65 > x_67)) {
+    let x_71 : i32 = a;
+    a = (x_71 + 1);
+  }
+  let x_73 : i32 = a;
+  i = countOneBits(x_73);
+  let x_75 : i32 = i;
+  let x_77 : i32 = x_11.x_GLF_uniform_int_values[0];
+  if ((x_75 < x_77)) {
+    let x_82 : i32 = x_11.x_GLF_uniform_int_values[0];
+    return x_82;
+  }
+  let x_83 : i32 = i;
+  return x_83;
+}
+
+fn main_1() {
+  var a_1 : i32;
+  let x_38 : i32 = f1_();
+  a_1 = x_38;
+  let x_39 : i32 = a_1;
+  let x_41 : i32 = x_11.x_GLF_uniform_int_values[2];
+  if ((x_39 == x_41)) {
+    let x_47 : i32 = x_11.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_53 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_11.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_47), f32(x_50), f32(x_53), f32(x_56));
+  } else {
+    let x_60 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_61 : f32 = f32(x_60);
+    x_GLF_color = vec4<f32>(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ff5511e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,71 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int f1_() {
+  int a = 0;
+  int i = 0;
+  a = 256;
+  const float x_65 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_67 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_65 > x_67)) {
+    a = (a + 1);
+  }
+  i = countbits(a);
+  const int x_75 = i;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_77 = asint(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_75 < x_77)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_82 = asint(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    return x_82;
+  }
+  return i;
+}
+
+void main_1() {
+  int a_1 = 0;
+  const int x_38 = f1_();
+  a_1 = x_38;
+  const int x_39 = a_1;
+  const int x_41 = asint(x_11[2].x);
+  if ((x_39 == x_41)) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_11[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_50 = asint(x_11[1].x);
+    const int x_53 = asint(x_11[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_11[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    const int x_60 = asint(x_11[1].x);
+    const float x_61 = float(x_60);
+    x_GLF_color = float4(x_61, x_61, x_61, x_61);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..cbab4db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.msl
@@ -0,0 +1,82 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int f1_(constant buf0& x_8, constant buf1& x_11, thread float4* const tint_symbol_5) {
+  int a = 0;
+  int i = 0;
+  a = 256;
+  float const x_65 = (*(tint_symbol_5)).y;
+  float const x_67 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_65 > x_67)) {
+    int const x_71 = a;
+    a = (x_71 + 1);
+  }
+  int const x_73 = a;
+  i = popcount(x_73);
+  int const x_75 = i;
+  int const x_77 = x_11.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_75 < x_77)) {
+    int const x_82 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    return x_82;
+  }
+  int const x_83 = i;
+  return x_83;
+}
+
+void main_1(constant buf0& x_8, constant buf1& x_11, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int a_1 = 0;
+  int const x_38 = f1_(x_8, x_11, tint_symbol_6);
+  a_1 = x_38;
+  int const x_39 = a_1;
+  int const x_41 = x_11.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_39 == x_41)) {
+    int const x_47 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    int const x_50 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_53 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_7) = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    int const x_60 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    float const x_61 = float(x_60);
+    *(tint_symbol_7) = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_8, x_11, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f6ad901
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,171 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 102
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f1_ "f1_"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %a_1 "a_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %23 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+    %int_256 = OpConstant %int 256
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %void = OpTypeVoid
+         %58 = OpTypeFunction %void
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %89 = OpTypeFunction %void %main_out
+        %f1_ = OpFunction %int None %23
+         %25 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %28
+          %i = OpVariable %_ptr_Function_int Function %28
+               OpStore %a %int_256
+         %32 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %33 = OpLoad %float %32
+         %37 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThan %bool %33 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %41
+         %42 = OpLabel
+         %43 = OpLoad %int %a
+         %45 = OpIAdd %int %43 %int_1
+               OpStore %a %45
+               OpBranch %41
+         %41 = OpLabel
+         %46 = OpLoad %int %a
+         %47 = OpBitCount %int %46
+               OpStore %i %47
+         %48 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %48 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %56 = OpLoad %int %55
+               OpReturnValue %56
+         %53 = OpLabel
+         %57 = OpLoad %int %i
+               OpReturnValue %57
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %58
+         %61 = OpLabel
+        %a_1 = OpVariable %_ptr_Function_int Function %28
+         %63 = OpFunctionCall %int %f1_
+               OpStore %a_1 %63
+         %64 = OpLoad %int %a_1
+         %66 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %67 = OpLoad %int %66
+         %68 = OpIEqual %bool %64 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %73
+         %81 = OpConvertSToF %float %75
+         %82 = OpConvertSToF %float %77
+         %83 = OpConvertSToF %float %79
+         %84 = OpCompositeConstruct %v4float %80 %81 %82 %83
+               OpStore %x_GLF_color %84
+               OpBranch %69
+         %71 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpCompositeConstruct %v4float %87 %87 %87 %87
+               OpStore %x_GLF_color %88
+               OpBranch %69
+         %69 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %89
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %93 = OpLabel
+         %94 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %94
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %58
+         %96 = OpLabel
+         %97 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %97
+         %98 = OpFunctionCall %void %main_1
+        %100 = OpLoad %v4float %x_GLF_color
+        %101 = OpCompositeConstruct %main_out %100
+         %99 = OpFunctionCall %void %tint_symbol_3 %101
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a14b4cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,75 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f1_() -> i32 {
+  var a : i32;
+  var i : i32;
+  a = 256;
+  let x_65 : f32 = gl_FragCoord.y;
+  let x_67 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_65 > x_67)) {
+    let x_71 : i32 = a;
+    a = (x_71 + 1);
+  }
+  let x_73 : i32 = a;
+  i = countOneBits(x_73);
+  let x_75 : i32 = i;
+  let x_77 : i32 = x_11.x_GLF_uniform_int_values[0];
+  if ((x_75 < x_77)) {
+    let x_82 : i32 = x_11.x_GLF_uniform_int_values[0];
+    return x_82;
+  }
+  let x_83 : i32 = i;
+  return x_83;
+}
+
+fn main_1() {
+  var a_1 : i32;
+  let x_38 : i32 = f1_();
+  a_1 = x_38;
+  let x_39 : i32 = a_1;
+  let x_41 : i32 = x_11.x_GLF_uniform_int_values[2];
+  if ((x_39 == x_41)) {
+    let x_47 : i32 = x_11.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_53 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_11.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_47), f32(x_50), f32(x_53), f32(x_56));
+  } else {
+    let x_60 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_61 : f32 = f32(x_60);
+    x_GLF_color = vec4<f32>(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm
new file mode 100644
index 0000000..cc1186f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm
@@ -0,0 +1,91 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %8
+         %22 = OpLabel
+         %23 = OpBitReverse %int %int_1
+         %24 = OpExtInst %int %1 SMin %int_1 %23
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %26 = OpLoad %int %25
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpPhi %int %26 %22 %29 %30
+         %31 = OpPhi %int %int_1 %22 %32 %30
+         %33 = OpISub %int %24 %int_1
+         %34 = OpSLessThanEqual %bool %31 %33
+               OpLoopMerge %35 %30 None
+               OpBranchConditional %34 %36 %35
+         %36 = OpLabel
+         %29 = OpIAdd %int %28 %31
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpIEqual %bool %38 %int_1
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+               OpBranch %35
+         %40 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+         %32 = OpIAdd %int %31 %int_1
+               OpBranch %27
+         %35 = OpLabel
+         %42 = OpPhi %int %28 %27 %29 %41
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %44 = OpLoad %int %43
+         %45 = OpIEqual %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpCompositeConstruct %v4float %51 %54 %54 %51
+               OpStore %_GLF_color %55
+               OpBranch %46
+         %48 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpCompositeConstruct %v4float %58 %58 %58 %58
+               OpStore %_GLF_color %59
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..d241a8e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.hlsl
@@ -0,0 +1,67 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_28 = 0;
+  int x_29 = 0;
+  int x_28_phi = 0;
+  int x_31_phi = 0;
+  int x_42_phi = 0;
+  const int x_24 = min(1, reversebits(1));
+  const int x_26 = asint(x_5[3].x);
+  x_28_phi = x_26;
+  x_31_phi = 1;
+  while (true) {
+    int x_32 = 0;
+    x_28 = x_28_phi;
+    const int x_31 = x_31_phi;
+    x_42_phi = x_28;
+    if ((x_31 <= (x_24 - 1))) {
+    } else {
+      break;
+    }
+    x_29 = asint((x_28 + asint(x_31)));
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_38 == 1)) {
+      x_42_phi = x_29;
+      break;
+    }
+    {
+      x_32 = (x_31 + 1);
+      x_28_phi = x_29;
+      x_31_phi = x_32;
+    }
+  }
+  const int x_42 = x_42_phi;
+  const int x_44 = asint(x_5[2].x);
+  if ((x_42 == x_44)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_51 = float(x_50);
+    const int x_53 = asint(x_5[1].x);
+    const float x_54 = float(x_53);
+    x_GLF_color = float4(x_51, x_54, x_54, x_51);
+  } else {
+    const int x_57 = asint(x_5[1].x);
+    const float x_58 = float(x_57);
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.msl
new file mode 100644
index 0000000..971d8fe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int x_28 = 0;
+  int x_29 = 0;
+  int x_28_phi = 0;
+  int x_31_phi = 0;
+  int x_42_phi = 0;
+  int const x_24 = min(1, reverse_bits(1));
+  int const x_26 = x_5.x_GLF_uniform_int_values.arr[3].el;
+  x_28_phi = x_26;
+  x_31_phi = 1;
+  while (true) {
+    int x_32 = 0;
+    x_28 = x_28_phi;
+    int const x_31 = x_31_phi;
+    x_42_phi = x_28;
+    if ((x_31 <= (x_24 - 1))) {
+    } else {
+      break;
+    }
+    x_29 = as_type<int>((x_28 + as_type<int>(x_31)));
+    int const x_38 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_38 == 1)) {
+      x_42_phi = x_29;
+      break;
+    }
+    {
+      x_32 = (x_31 + 1);
+      x_28_phi = x_29;
+      x_31_phi = x_32;
+    }
+  }
+  int const x_42 = x_42_phi;
+  int const x_44 = x_5.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_42 == x_44)) {
+    int const x_50 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    float const x_51 = float(x_50);
+    int const x_53 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    float const x_54 = float(x_53);
+    *(tint_symbol_4) = float4(x_51, x_54, x_54, x_51);
+  } else {
+    int const x_57 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    float const x_58 = float(x_57);
+    *(tint_symbol_4) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..5d23f77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.spvasm
@@ -0,0 +1,161 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 94
+; Schema: 0
+               OpCapability Shader
+         %27 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_28 "x_28"
+               OpName %x_29 "x_29"
+               OpName %x_28_phi "x_28_phi"
+               OpName %x_31_phi "x_31_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %x_32 "x_32"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %82 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_28 = OpVariable %_ptr_Function_int Function %21
+       %x_29 = OpVariable %_ptr_Function_int Function %21
+   %x_28_phi = OpVariable %_ptr_Function_int Function %21
+   %x_31_phi = OpVariable %_ptr_Function_int Function %21
+   %x_42_phi = OpVariable %_ptr_Function_int Function %21
+       %x_32 = OpVariable %_ptr_Function_int Function %21
+         %29 = OpBitReverse %int %int_1
+         %26 = OpExtInst %int %27 SMin %int_1 %29
+         %33 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_3
+         %34 = OpLoad %int %33
+               OpStore %x_28_phi %34
+               OpStore %x_31_phi %int_1
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %40 = OpLoad %int %x_28_phi
+               OpStore %x_28 %40
+         %41 = OpLoad %int %x_31_phi
+         %42 = OpLoad %int %x_28
+               OpStore %x_42_phi %42
+         %43 = OpISub %int %26 %int_1
+         %44 = OpSLessThanEqual %bool %41 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %36
+         %46 = OpLabel
+         %50 = OpLoad %int %x_28
+         %51 = OpCopyObject %int %41
+         %52 = OpIAdd %int %50 %51
+         %49 = OpCopyObject %int %52
+               OpStore %x_29 %49
+         %54 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %55 %int_1
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+         %59 = OpLoad %int %x_29
+               OpStore %x_42_phi %59
+               OpBranch %36
+         %57 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %60 = OpIAdd %int %41 %int_1
+               OpStore %x_32 %60
+         %61 = OpLoad %int %x_29
+               OpStore %x_28_phi %61
+         %62 = OpLoad %int %x_32
+               OpStore %x_31_phi %62
+               OpBranch %35
+         %36 = OpLabel
+         %63 = OpLoad %int %x_42_phi
+         %65 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpIEqual %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpCompositeConstruct %v4float %73 %76 %76 %73
+               OpStore %x_GLF_color %77
+               OpBranch %68
+         %70 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %79
+         %81 = OpCompositeConstruct %v4float %80 %80 %80 %80
+               OpStore %x_GLF_color %81
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %82
+%tint_symbol = OpFunctionParameter %main_out
+         %86 = OpLabel
+         %87 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %87
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %89 = OpLabel
+         %90 = OpFunctionCall %void %main_1
+         %92 = OpLoad %v4float %x_GLF_color
+         %93 = OpCompositeConstruct %main_out %92
+         %91 = OpFunctionCall %void %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..c0b46ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.spvasm.expected.wgsl
@@ -0,0 +1,69 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_28 : i32;
+  var x_29 : i32;
+  var x_28_phi : i32;
+  var x_31_phi : i32;
+  var x_42_phi : i32;
+  let x_24 : i32 = min(1, reverseBits(1));
+  let x_26 : i32 = x_5.x_GLF_uniform_int_values[3];
+  x_28_phi = x_26;
+  x_31_phi = 1;
+  loop {
+    var x_32 : i32;
+    x_28 = x_28_phi;
+    let x_31 : i32 = x_31_phi;
+    x_42_phi = x_28;
+    if ((x_31 <= (x_24 - 1))) {
+    } else {
+      break;
+    }
+    x_29 = bitcast<i32>((x_28 + bitcast<i32>(x_31)));
+    let x_38 : i32 = x_5.x_GLF_uniform_int_values[0];
+    if ((x_38 == 1)) {
+      x_42_phi = x_29;
+      break;
+    }
+
+    continuing {
+      x_32 = (x_31 + 1);
+      x_28_phi = x_29;
+      x_31_phi = x_32;
+    }
+  }
+  let x_42 : i32 = x_42_phi;
+  let x_44 : i32 = x_5.x_GLF_uniform_int_values[2];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_51 : f32 = f32(x_50);
+    let x_53 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_54 : f32 = f32(x_53);
+    x_GLF_color = vec4<f32>(x_51, x_54, x_54, x_51);
+  } else {
+    let x_57 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
new file mode 100644
index 0000000..c0b46ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
@@ -0,0 +1,69 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_28 : i32;
+  var x_29 : i32;
+  var x_28_phi : i32;
+  var x_31_phi : i32;
+  var x_42_phi : i32;
+  let x_24 : i32 = min(1, reverseBits(1));
+  let x_26 : i32 = x_5.x_GLF_uniform_int_values[3];
+  x_28_phi = x_26;
+  x_31_phi = 1;
+  loop {
+    var x_32 : i32;
+    x_28 = x_28_phi;
+    let x_31 : i32 = x_31_phi;
+    x_42_phi = x_28;
+    if ((x_31 <= (x_24 - 1))) {
+    } else {
+      break;
+    }
+    x_29 = bitcast<i32>((x_28 + bitcast<i32>(x_31)));
+    let x_38 : i32 = x_5.x_GLF_uniform_int_values[0];
+    if ((x_38 == 1)) {
+      x_42_phi = x_29;
+      break;
+    }
+
+    continuing {
+      x_32 = (x_31 + 1);
+      x_28_phi = x_29;
+      x_31_phi = x_32;
+    }
+  }
+  let x_42 : i32 = x_42_phi;
+  let x_44 : i32 = x_5.x_GLF_uniform_int_values[2];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_51 : f32 = f32(x_50);
+    let x_53 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_54 : f32 = f32(x_53);
+    x_GLF_color = vec4<f32>(x_51, x_54, x_54, x_51);
+  } else {
+    let x_57 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..d241a8e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.hlsl
@@ -0,0 +1,67 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_28 = 0;
+  int x_29 = 0;
+  int x_28_phi = 0;
+  int x_31_phi = 0;
+  int x_42_phi = 0;
+  const int x_24 = min(1, reversebits(1));
+  const int x_26 = asint(x_5[3].x);
+  x_28_phi = x_26;
+  x_31_phi = 1;
+  while (true) {
+    int x_32 = 0;
+    x_28 = x_28_phi;
+    const int x_31 = x_31_phi;
+    x_42_phi = x_28;
+    if ((x_31 <= (x_24 - 1))) {
+    } else {
+      break;
+    }
+    x_29 = asint((x_28 + asint(x_31)));
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_38 == 1)) {
+      x_42_phi = x_29;
+      break;
+    }
+    {
+      x_32 = (x_31 + 1);
+      x_28_phi = x_29;
+      x_31_phi = x_32;
+    }
+  }
+  const int x_42 = x_42_phi;
+  const int x_44 = asint(x_5[2].x);
+  if ((x_42 == x_44)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_51 = float(x_50);
+    const int x_53 = asint(x_5[1].x);
+    const float x_54 = float(x_53);
+    x_GLF_color = float4(x_51, x_54, x_54, x_51);
+  } else {
+    const int x_57 = asint(x_5[1].x);
+    const float x_58 = float(x_57);
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.msl
new file mode 100644
index 0000000..971d8fe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int x_28 = 0;
+  int x_29 = 0;
+  int x_28_phi = 0;
+  int x_31_phi = 0;
+  int x_42_phi = 0;
+  int const x_24 = min(1, reverse_bits(1));
+  int const x_26 = x_5.x_GLF_uniform_int_values.arr[3].el;
+  x_28_phi = x_26;
+  x_31_phi = 1;
+  while (true) {
+    int x_32 = 0;
+    x_28 = x_28_phi;
+    int const x_31 = x_31_phi;
+    x_42_phi = x_28;
+    if ((x_31 <= (x_24 - 1))) {
+    } else {
+      break;
+    }
+    x_29 = as_type<int>((x_28 + as_type<int>(x_31)));
+    int const x_38 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_38 == 1)) {
+      x_42_phi = x_29;
+      break;
+    }
+    {
+      x_32 = (x_31 + 1);
+      x_28_phi = x_29;
+      x_31_phi = x_32;
+    }
+  }
+  int const x_42 = x_42_phi;
+  int const x_44 = x_5.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_42 == x_44)) {
+    int const x_50 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    float const x_51 = float(x_50);
+    int const x_53 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    float const x_54 = float(x_53);
+    *(tint_symbol_4) = float4(x_51, x_54, x_54, x_51);
+  } else {
+    int const x_57 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    float const x_58 = float(x_57);
+    *(tint_symbol_4) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..5d23f77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.spvasm
@@ -0,0 +1,161 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 94
+; Schema: 0
+               OpCapability Shader
+         %27 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_28 "x_28"
+               OpName %x_29 "x_29"
+               OpName %x_28_phi "x_28_phi"
+               OpName %x_31_phi "x_31_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %x_32 "x_32"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %82 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_28 = OpVariable %_ptr_Function_int Function %21
+       %x_29 = OpVariable %_ptr_Function_int Function %21
+   %x_28_phi = OpVariable %_ptr_Function_int Function %21
+   %x_31_phi = OpVariable %_ptr_Function_int Function %21
+   %x_42_phi = OpVariable %_ptr_Function_int Function %21
+       %x_32 = OpVariable %_ptr_Function_int Function %21
+         %29 = OpBitReverse %int %int_1
+         %26 = OpExtInst %int %27 SMin %int_1 %29
+         %33 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_3
+         %34 = OpLoad %int %33
+               OpStore %x_28_phi %34
+               OpStore %x_31_phi %int_1
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %40 = OpLoad %int %x_28_phi
+               OpStore %x_28 %40
+         %41 = OpLoad %int %x_31_phi
+         %42 = OpLoad %int %x_28
+               OpStore %x_42_phi %42
+         %43 = OpISub %int %26 %int_1
+         %44 = OpSLessThanEqual %bool %41 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %36
+         %46 = OpLabel
+         %50 = OpLoad %int %x_28
+         %51 = OpCopyObject %int %41
+         %52 = OpIAdd %int %50 %51
+         %49 = OpCopyObject %int %52
+               OpStore %x_29 %49
+         %54 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %55 %int_1
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+         %59 = OpLoad %int %x_29
+               OpStore %x_42_phi %59
+               OpBranch %36
+         %57 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %60 = OpIAdd %int %41 %int_1
+               OpStore %x_32 %60
+         %61 = OpLoad %int %x_29
+               OpStore %x_28_phi %61
+         %62 = OpLoad %int %x_32
+               OpStore %x_31_phi %62
+               OpBranch %35
+         %36 = OpLabel
+         %63 = OpLoad %int %x_42_phi
+         %65 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpIEqual %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpCompositeConstruct %v4float %73 %76 %76 %73
+               OpStore %x_GLF_color %77
+               OpBranch %68
+         %70 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %79
+         %81 = OpCompositeConstruct %v4float %80 %80 %80 %80
+               OpStore %x_GLF_color %81
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %82
+%tint_symbol = OpFunctionParameter %main_out
+         %86 = OpLabel
+         %87 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %87
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %89 = OpLabel
+         %90 = OpFunctionCall %void %main_1
+         %92 = OpLoad %v4float %x_GLF_color
+         %93 = OpCompositeConstruct %main_out %92
+         %91 = OpFunctionCall %void %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..c0b46ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl.expected.wgsl
@@ -0,0 +1,69 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_28 : i32;
+  var x_29 : i32;
+  var x_28_phi : i32;
+  var x_31_phi : i32;
+  var x_42_phi : i32;
+  let x_24 : i32 = min(1, reverseBits(1));
+  let x_26 : i32 = x_5.x_GLF_uniform_int_values[3];
+  x_28_phi = x_26;
+  x_31_phi = 1;
+  loop {
+    var x_32 : i32;
+    x_28 = x_28_phi;
+    let x_31 : i32 = x_31_phi;
+    x_42_phi = x_28;
+    if ((x_31 <= (x_24 - 1))) {
+    } else {
+      break;
+    }
+    x_29 = bitcast<i32>((x_28 + bitcast<i32>(x_31)));
+    let x_38 : i32 = x_5.x_GLF_uniform_int_values[0];
+    if ((x_38 == 1)) {
+      x_42_phi = x_29;
+      break;
+    }
+
+    continuing {
+      x_32 = (x_31 + 1);
+      x_28_phi = x_29;
+      x_31_phi = x_32;
+    }
+  }
+  let x_42 : i32 = x_42_phi;
+  let x_44 : i32 = x_5.x_GLF_uniform_int_values[2];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_51 : f32 = f32(x_50);
+    let x_53 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_54 : f32 = f32(x_53);
+    x_GLF_color = vec4<f32>(x_51, x_54, x_54, x_51);
+  } else {
+    let x_57 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm
new file mode 100644
index 0000000..5b2a258
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm
@@ -0,0 +1,119 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__1 ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 2
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+          %_ = OpVariable %_ptr_Uniform_buf2 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__1 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %31 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %32 = OpVariable %_ptr_Function_int Function
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %34 = OpLoad %float %33
+         %35 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpFOrdLessThan %bool %34 %36
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %42 = OpLoad %int %41
+               OpStore %32 %42
+               OpBranch %38
+         %40 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %44 = OpLoad %int %43
+               OpStore %32 %44
+               OpBranch %38
+         %38 = OpLabel
+         %45 = OpLoad %int %32
+         %46 = OpBitwiseOr %int %45 %int_1
+         %47 = OpNot %int %46
+               OpStore %a %47
+         %48 = OpLoad %int %a
+         %49 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpNot %int %50
+         %52 = OpIEqual %bool %48 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpCompositeConstruct %v4float %58 %61 %64 %67
+               OpStore %_GLF_color %68
+               OpBranch %53
+         %55 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %70
+         %72 = OpCompositeConstruct %v4float %71 %71 %71 %71
+               OpStore %_GLF_color %72
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..53fa4d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_6 : register(b2, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int x_32 = 0;
+  const float x_34 = asfloat(x_6[0].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_34 < x_36)) {
+    const int x_42 = asint(x_10[1].x);
+    x_32 = x_42;
+  } else {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_44 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_32 = x_44;
+  }
+  a = ~((x_32 | 1));
+  const int x_48 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_50 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_48 == ~(x_50))) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_60 = asint(x_10[1].x);
+    const int x_63 = asint(x_10[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_57), float(x_60), float(x_63), float(x_66));
+  } else {
+    const int x_70 = asint(x_10[1].x);
+    const float x_71 = float(x_70);
+    x_GLF_color = float4(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d5bab81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf2 {
+  /* 0x0000 */ float zero;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf2& x_6, constant buf0& x_8, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int x_32 = 0;
+  float const x_34 = x_6.zero;
+  float const x_36 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_34 < x_36)) {
+    int const x_42 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    x_32 = x_42;
+  } else {
+    int const x_44 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    x_32 = x_44;
+  }
+  int const x_45 = x_32;
+  a = ~((x_45 | 1));
+  int const x_48 = a;
+  int const x_50 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_48 == ~(x_50))) {
+    int const x_57 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_63 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_66 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_57), float(x_60), float(x_63), float(x_66));
+  } else {
+    int const x_70 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_71 = float(x_70);
+    *(tint_symbol_4) = float4(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf2& x_6 [[buffer(2)]], constant buf0& x_8 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2144540
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,155 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %x_32 "x_32"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_6 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %20 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %20
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %20
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %29
+       %x_32 = OpVariable %_ptr_Function_int Function %29
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %34 = OpLoad %float %33
+         %36 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %37 = OpLoad %float %36
+         %38 = OpFOrdLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %46 = OpLoad %int %45
+               OpStore %x_32 %46
+               OpBranch %40
+         %42 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %48 = OpLoad %int %47
+               OpStore %x_32 %48
+               OpBranch %40
+         %40 = OpLabel
+         %49 = OpLoad %int %x_32
+         %51 = OpBitwiseOr %int %49 %int_1
+         %50 = OpNot %int %51
+               OpStore %a %50
+         %52 = OpLoad %int %a
+         %53 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpNot %int %54
+         %56 = OpIEqual %bool %52 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1e307de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,67 @@
+[[block]]
+struct buf2 {
+  zero : f32;
+};
+
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var x_32 : i32;
+  let x_34 : f32 = x_6.zero;
+  let x_36 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_34 < x_36)) {
+    let x_42 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_32 = x_42;
+  } else {
+    let x_44 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_32 = x_44;
+  }
+  let x_45 : i32 = x_32;
+  a = ~((x_45 | 1));
+  let x_48 : i32 = a;
+  let x_50 : i32 = x_10.x_GLF_uniform_int_values[0];
+  if ((x_48 == ~(x_50))) {
+    let x_57 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_57), f32(x_60), f32(x_63), f32(x_66));
+  } else {
+    let x_70 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_71 : f32 = f32(x_70);
+    x_GLF_color = vec4<f32>(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
new file mode 100644
index 0000000..1e307de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
@@ -0,0 +1,67 @@
+[[block]]
+struct buf2 {
+  zero : f32;
+};
+
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var x_32 : i32;
+  let x_34 : f32 = x_6.zero;
+  let x_36 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_34 < x_36)) {
+    let x_42 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_32 = x_42;
+  } else {
+    let x_44 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_32 = x_44;
+  }
+  let x_45 : i32 = x_32;
+  a = ~((x_45 | 1));
+  let x_48 : i32 = a;
+  let x_50 : i32 = x_10.x_GLF_uniform_int_values[0];
+  if ((x_48 == ~(x_50))) {
+    let x_57 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_57), f32(x_60), f32(x_63), f32(x_66));
+  } else {
+    let x_70 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_71 : f32 = f32(x_70);
+    x_GLF_color = vec4<f32>(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..53fa4d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_6 : register(b2, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int x_32 = 0;
+  const float x_34 = asfloat(x_6[0].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_34 < x_36)) {
+    const int x_42 = asint(x_10[1].x);
+    x_32 = x_42;
+  } else {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_44 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_32 = x_44;
+  }
+  a = ~((x_32 | 1));
+  const int x_48 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_50 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_48 == ~(x_50))) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_60 = asint(x_10[1].x);
+    const int x_63 = asint(x_10[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_57), float(x_60), float(x_63), float(x_66));
+  } else {
+    const int x_70 = asint(x_10[1].x);
+    const float x_71 = float(x_70);
+    x_GLF_color = float4(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d5bab81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf2 {
+  /* 0x0000 */ float zero;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf2& x_6, constant buf0& x_8, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int x_32 = 0;
+  float const x_34 = x_6.zero;
+  float const x_36 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_34 < x_36)) {
+    int const x_42 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    x_32 = x_42;
+  } else {
+    int const x_44 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    x_32 = x_44;
+  }
+  int const x_45 = x_32;
+  a = ~((x_45 | 1));
+  int const x_48 = a;
+  int const x_50 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_48 == ~(x_50))) {
+    int const x_57 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_63 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_66 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_57), float(x_60), float(x_63), float(x_66));
+  } else {
+    int const x_70 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_71 = float(x_70);
+    *(tint_symbol_4) = float4(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf2& x_6 [[buffer(2)]], constant buf0& x_8 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2144540
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,155 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %x_32 "x_32"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_6 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %20 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %20
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %20
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %29
+       %x_32 = OpVariable %_ptr_Function_int Function %29
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %34 = OpLoad %float %33
+         %36 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %37 = OpLoad %float %36
+         %38 = OpFOrdLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %46 = OpLoad %int %45
+               OpStore %x_32 %46
+               OpBranch %40
+         %42 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %48 = OpLoad %int %47
+               OpStore %x_32 %48
+               OpBranch %40
+         %40 = OpLabel
+         %49 = OpLoad %int %x_32
+         %51 = OpBitwiseOr %int %49 %int_1
+         %50 = OpNot %int %51
+               OpStore %a %50
+         %52 = OpLoad %int %a
+         %53 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpNot %int %54
+         %56 = OpIEqual %bool %52 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1e307de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,67 @@
+[[block]]
+struct buf2 {
+  zero : f32;
+};
+
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var x_32 : i32;
+  let x_34 : f32 = x_6.zero;
+  let x_36 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_34 < x_36)) {
+    let x_42 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_32 = x_42;
+  } else {
+    let x_44 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_32 = x_44;
+  }
+  let x_45 : i32 = x_32;
+  a = ~((x_45 | 1));
+  let x_48 : i32 = a;
+  let x_50 : i32 = x_10.x_GLF_uniform_int_values[0];
+  if ((x_48 == ~(x_50))) {
+    let x_57 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_57), f32(x_60), f32(x_63), f32(x_66));
+  } else {
+    let x_70 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_71 : f32 = f32(x_70);
+    x_GLF_color = vec4<f32>(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm
new file mode 100644
index 0000000..a53bb72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm
@@ -0,0 +1,229 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %c "c"
+               OpName %a "a"
+               OpName %i1 "i1"
+               OpName %i2 "i2"
+               OpName %i3 "i3"
+               OpName %i4 "i4"
+               OpName %i5 "i5"
+               OpName %i6 "i6"
+               OpName %i7 "i7"
+               OpName %i8 "i8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %int_17 = OpConstant %int 17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+   %float_n1 = OpConstant %float -1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %16
+         %37 = OpLabel
+          %c = OpVariable %_ptr_Function_v4float Function
+          %a = OpVariable %_ptr_Function_int Function
+         %i1 = OpVariable %_ptr_Function_int Function
+         %i2 = OpVariable %_ptr_Function_int Function
+         %i3 = OpVariable %_ptr_Function_int Function
+         %i4 = OpVariable %_ptr_Function_int Function
+         %i5 = OpVariable %_ptr_Function_int Function
+         %i6 = OpVariable %_ptr_Function_int Function
+         %i7 = OpVariable %_ptr_Function_int Function
+         %i8 = OpVariable %_ptr_Function_int Function
+               OpStore %c %22
+               OpStore %a %int_0
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %a
+         %47 = OpAccessChain %_ptr_Function_float %c %46
+               OpStore %47 %float_1
+               OpStore %i1 %int_0
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpLoad %int %i1
+         %53 = OpSLessThan %bool %52 %int_1
+               OpBranchConditional %53 %54 %49
+         %54 = OpLabel
+               OpStore %i2 %int_0
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %i2
+         %60 = OpSLessThan %bool %59 %int_1
+               OpBranchConditional %60 %61 %56
+         %61 = OpLabel
+               OpStore %i3 %int_0
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %66 = OpLoad %int %i3
+         %67 = OpSLessThan %bool %66 %int_1
+               OpBranchConditional %67 %68 %63
+         %68 = OpLabel
+               OpStore %i4 %int_0
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %i4
+         %74 = OpSLessThan %bool %73 %int_1
+               OpBranchConditional %74 %75 %70
+         %75 = OpLabel
+               OpStore %i5 %int_0
+               OpBranch %76
+         %76 = OpLabel
+               OpLoopMerge %77 %78 None
+               OpBranch %79
+         %79 = OpLabel
+         %80 = OpLoad %int %i5
+         %81 = OpSLessThan %bool %80 %int_1
+               OpBranchConditional %81 %82 %77
+         %82 = OpLabel
+               OpStore %i6 %int_0
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+         %87 = OpLoad %int %i6
+         %88 = OpSLessThan %bool %87 %int_1
+               OpBranchConditional %88 %89 %84
+         %89 = OpLabel
+               OpStore %i7 %int_0
+               OpBranch %90
+         %90 = OpLabel
+               OpLoopMerge %91 %92 None
+               OpBranch %93
+         %93 = OpLabel
+         %94 = OpLoad %int %i7
+         %95 = OpSLessThan %bool %94 %int_1
+               OpBranchConditional %95 %96 %91
+         %96 = OpLabel
+               OpStore %i8 %int_0
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %101 = OpLoad %int %i8
+        %102 = OpSLessThan %bool %101 %int_17
+               OpBranchConditional %102 %103 %98
+        %103 = OpLabel
+        %104 = OpLoad %int %a
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %a %105
+               OpBranch %99
+         %99 = OpLabel
+        %106 = OpLoad %int %i8
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %i8 %107
+               OpBranch %97
+         %98 = OpLabel
+               OpBranch %92
+         %92 = OpLabel
+        %108 = OpLoad %int %i7
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %i7 %109
+               OpBranch %90
+         %91 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+        %110 = OpLoad %int %i6
+        %111 = OpIAdd %int %110 %int_1
+               OpStore %i6 %111
+               OpBranch %83
+         %84 = OpLabel
+               OpBranch %78
+         %78 = OpLabel
+        %112 = OpLoad %int %i5
+        %113 = OpIAdd %int %112 %int_1
+               OpStore %i5 %113
+               OpBranch %76
+         %77 = OpLabel
+               OpBranch %71
+         %71 = OpLabel
+        %114 = OpLoad %int %i4
+        %115 = OpIAdd %int %114 %int_1
+               OpStore %i4 %115
+               OpBranch %69
+         %70 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+        %116 = OpLoad %int %i3
+        %117 = OpIAdd %int %116 %int_1
+               OpStore %i3 %117
+               OpBranch %62
+         %63 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+        %118 = OpLoad %int %i2
+        %119 = OpIAdd %int %118 %int_1
+               OpStore %i2 %119
+               OpBranch %55
+         %56 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+        %120 = OpLoad %int %i1
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %i1 %121
+               OpBranch %48
+         %49 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+        %122 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %123 = OpLoad %float %122
+        %124 = OpFOrdLessThan %bool %123 %float_n1
+               OpBranchConditional %124 %42 %43
+         %43 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+        %125 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %126 = OpLoad %float %125
+        %127 = OpFOrdLessThan %bool %126 %float_n1
+               OpBranchConditional %127 %38 %39
+         %39 = OpLabel
+        %128 = OpLoad %v4float %c
+               OpStore %_GLF_color %128
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..400e058
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,102 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+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 c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int a = 0;
+  int i1 = 0;
+  int i2 = 0;
+  int i3 = 0;
+  int i4 = 0;
+  int i5 = 0;
+  int i6 = 0;
+  int i7 = 0;
+  int i8_1 = 0;
+  c = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  a = 0;
+  while (true) {
+    while (true) {
+      set_float4(c, a, 1.0f);
+      i1 = 0;
+      {
+        for(; (i1 < 1); i1 = (i1 + 1)) {
+          i2 = 0;
+          {
+            for(; (i2 < 1); i2 = (i2 + 1)) {
+              i3 = 0;
+              {
+                for(; (i3 < 1); i3 = (i3 + 1)) {
+                  i4 = 0;
+                  {
+                    for(; (i4 < 1); i4 = (i4 + 1)) {
+                      i5 = 0;
+                      {
+                        for(; (i5 < 1); i5 = (i5 + 1)) {
+                          i6 = 0;
+                          {
+                            for(; (i6 < 1); i6 = (i6 + 1)) {
+                              i7 = 0;
+                              {
+                                for(; (i7 < 1); i7 = (i7 + 1)) {
+                                  i8_1 = 0;
+                                  {
+                                    for(; (i8_1 < 17); i8_1 = (i8_1 + 1)) {
+                                      a = (a + 1);
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      {
+        const float x_123 = gl_FragCoord.x;
+        if ((x_123 < -1.0f)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      const float x_126 = gl_FragCoord.y;
+      if ((x_126 < -1.0f)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = c;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5e6ba53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,156 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4 c = 0.0f;
+  int a = 0;
+  int i1 = 0;
+  int i2 = 0;
+  int i3 = 0;
+  int i4 = 0;
+  int i5 = 0;
+  int i6 = 0;
+  int i7 = 0;
+  int i8_1 = 0;
+  c = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  a = 0;
+  while (true) {
+    while (true) {
+      int const x_46 = a;
+      c[x_46] = 1.0f;
+      i1 = 0;
+      while (true) {
+        int const x_52 = i1;
+        if ((x_52 < 1)) {
+        } else {
+          break;
+        }
+        i2 = 0;
+        while (true) {
+          int const x_59 = i2;
+          if ((x_59 < 1)) {
+          } else {
+            break;
+          }
+          i3 = 0;
+          while (true) {
+            int const x_66 = i3;
+            if ((x_66 < 1)) {
+            } else {
+              break;
+            }
+            i4 = 0;
+            while (true) {
+              int const x_73 = i4;
+              if ((x_73 < 1)) {
+              } else {
+                break;
+              }
+              i5 = 0;
+              while (true) {
+                int const x_80 = i5;
+                if ((x_80 < 1)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                while (true) {
+                  int const x_87 = i6;
+                  if ((x_87 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  while (true) {
+                    int const x_94 = i7;
+                    if ((x_94 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    while (true) {
+                      int const x_101 = i8_1;
+                      if ((x_101 < 17)) {
+                      } else {
+                        break;
+                      }
+                      int const x_104 = a;
+                      a = (x_104 + 1);
+                      {
+                        int const x_106 = i8_1;
+                        i8_1 = (x_106 + 1);
+                      }
+                    }
+                    {
+                      int const x_108 = i7;
+                      i7 = (x_108 + 1);
+                    }
+                  }
+                  {
+                    int const x_110 = i6;
+                    i6 = (x_110 + 1);
+                  }
+                }
+                {
+                  int const x_112 = i5;
+                  i5 = (x_112 + 1);
+                }
+              }
+              {
+                int const x_114 = i4;
+                i4 = (x_114 + 1);
+              }
+            }
+            {
+              int const x_116 = i3;
+              i3 = (x_116 + 1);
+            }
+          }
+          {
+            int const x_118 = i2;
+            i2 = (x_118 + 1);
+          }
+        }
+        {
+          int const x_120 = i1;
+          i1 = (x_120 + 1);
+        }
+      }
+      {
+        float const x_123 = (*(tint_symbol_5)).x;
+        if ((x_123 < -1.0f)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      float const x_126 = (*(tint_symbol_5)).y;
+      if ((x_126 < -1.0f)) {
+      } else {
+        break;
+      }
+    }
+  }
+  float4 const x_128 = c;
+  *(tint_symbol_6) = x_128;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..dde7eba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,323 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 168
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %a "a"
+               OpName %i1 "i1"
+               OpName %i2 "i2"
+               OpName %i3 "i3"
+               OpName %i4 "i4"
+               OpName %i5 "i5"
+               OpName %i6 "i6"
+               OpName %i7 "i7"
+               OpName %i8_1 "i8_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %int_17 = OpConstant %int 17
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n1 = OpConstant %float -1
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+        %155 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %c = OpVariable %_ptr_Function_v4float Function %5
+          %a = OpVariable %_ptr_Function_int Function %20
+         %i1 = OpVariable %_ptr_Function_int Function %20
+         %i2 = OpVariable %_ptr_Function_int Function %20
+         %i3 = OpVariable %_ptr_Function_int Function %20
+         %i4 = OpVariable %_ptr_Function_int Function %20
+         %i5 = OpVariable %_ptr_Function_int Function %20
+         %i6 = OpVariable %_ptr_Function_int Function %20
+         %i7 = OpVariable %_ptr_Function_int Function %20
+       %i8_1 = OpVariable %_ptr_Function_int Function %20
+               OpStore %c %31
+               OpStore %a %int_0
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %a
+         %43 = OpAccessChain %_ptr_Function_float %c %41
+               OpStore %43 %float_1
+               OpStore %i1 %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i1
+         %50 = OpSLessThan %bool %48 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %45
+         %52 = OpLabel
+               OpStore %i2 %int_0
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %i2
+         %60 = OpSLessThan %bool %59 %int_1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %56
+         %61 = OpLabel
+               OpStore %i3 %int_0
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %i3
+         %69 = OpSLessThan %bool %68 %int_1
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %65
+         %70 = OpLabel
+               OpStore %i4 %int_0
+               OpBranch %73
+         %73 = OpLabel
+               OpLoopMerge %74 %75 None
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpLoad %int %i4
+         %78 = OpSLessThan %bool %77 %int_1
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %74
+         %79 = OpLabel
+               OpStore %i5 %int_0
+               OpBranch %82
+         %82 = OpLabel
+               OpLoopMerge %83 %84 None
+               OpBranch %85
+         %85 = OpLabel
+         %86 = OpLoad %int %i5
+         %87 = OpSLessThan %bool %86 %int_1
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+               OpBranch %88
+         %90 = OpLabel
+               OpBranch %83
+         %88 = OpLabel
+               OpStore %i6 %int_0
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i6
+         %96 = OpSLessThan %bool %95 %int_1
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %99
+         %98 = OpLabel
+               OpBranch %97
+         %99 = OpLabel
+               OpBranch %92
+         %97 = OpLabel
+               OpStore %i7 %int_0
+               OpBranch %100
+        %100 = OpLabel
+               OpLoopMerge %101 %102 None
+               OpBranch %103
+        %103 = OpLabel
+        %104 = OpLoad %int %i7
+        %105 = OpSLessThan %bool %104 %int_1
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %107 = OpLabel
+               OpBranch %106
+        %108 = OpLabel
+               OpBranch %101
+        %106 = OpLabel
+               OpStore %i8_1 %int_0
+               OpBranch %109
+        %109 = OpLabel
+               OpLoopMerge %110 %111 None
+               OpBranch %112
+        %112 = OpLabel
+        %113 = OpLoad %int %i8_1
+        %115 = OpSLessThan %bool %113 %int_17
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+               OpBranch %116
+        %118 = OpLabel
+               OpBranch %110
+        %116 = OpLabel
+        %119 = OpLoad %int %a
+        %120 = OpIAdd %int %119 %int_1
+               OpStore %a %120
+               OpBranch %111
+        %111 = OpLabel
+        %121 = OpLoad %int %i8_1
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %i8_1 %122
+               OpBranch %109
+        %110 = OpLabel
+               OpBranch %102
+        %102 = OpLabel
+        %123 = OpLoad %int %i7
+        %124 = OpIAdd %int %123 %int_1
+               OpStore %i7 %124
+               OpBranch %100
+        %101 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+        %125 = OpLoad %int %i6
+        %126 = OpIAdd %int %125 %int_1
+               OpStore %i6 %126
+               OpBranch %91
+         %92 = OpLabel
+               OpBranch %84
+         %84 = OpLabel
+        %127 = OpLoad %int %i5
+        %128 = OpIAdd %int %127 %int_1
+               OpStore %i5 %128
+               OpBranch %82
+         %83 = OpLabel
+               OpBranch %75
+         %75 = OpLabel
+        %129 = OpLoad %int %i4
+        %130 = OpIAdd %int %129 %int_1
+               OpStore %i4 %130
+               OpBranch %73
+         %74 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+        %131 = OpLoad %int %i3
+        %132 = OpIAdd %int %131 %int_1
+               OpStore %i3 %132
+               OpBranch %64
+         %65 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+        %133 = OpLoad %int %i2
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %i2 %134
+               OpBranch %55
+         %56 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+        %135 = OpLoad %int %i1
+        %136 = OpIAdd %int %135 %int_1
+               OpStore %i1 %136
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+        %140 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %141 = OpLoad %float %140
+        %143 = OpFOrdLessThan %bool %141 %float_n1
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %38
+        %144 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+        %148 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %149 = OpLoad %float %148
+        %150 = OpFOrdLessThan %bool %149 %float_n1
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %153
+        %152 = OpLabel
+               OpBranch %151
+        %153 = OpLabel
+               OpBranch %34
+        %151 = OpLabel
+               OpBranch %33
+         %34 = OpLabel
+        %154 = OpLoad %v4float %c
+               OpStore %x_GLF_color %154
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %155
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %159 = OpLabel
+        %160 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %160
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+        %162 = OpLabel
+        %163 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %163
+        %164 = OpFunctionCall %void %main_1
+        %166 = OpLoad %v4float %x_GLF_color
+        %167 = OpCompositeConstruct %main_out %166
+        %165 = OpFunctionCall %void %tint_symbol_3 %167
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 35[%35] is not post dominated by the back-edge block 151[%151]
+  %151 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..73515b9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,161 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec4<f32>;
+  var a : i32;
+  var i1 : i32;
+  var i2 : i32;
+  var i3 : i32;
+  var i4 : i32;
+  var i5 : i32;
+  var i6 : i32;
+  var i7 : i32;
+  var i8_1 : i32;
+  c = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  a = 0;
+  loop {
+    loop {
+      let x_46 : i32 = a;
+      c[x_46] = 1.0;
+      i1 = 0;
+      loop {
+        let x_52 : i32 = i1;
+        if ((x_52 < 1)) {
+        } else {
+          break;
+        }
+        i2 = 0;
+        loop {
+          let x_59 : i32 = i2;
+          if ((x_59 < 1)) {
+          } else {
+            break;
+          }
+          i3 = 0;
+          loop {
+            let x_66 : i32 = i3;
+            if ((x_66 < 1)) {
+            } else {
+              break;
+            }
+            i4 = 0;
+            loop {
+              let x_73 : i32 = i4;
+              if ((x_73 < 1)) {
+              } else {
+                break;
+              }
+              i5 = 0;
+              loop {
+                let x_80 : i32 = i5;
+                if ((x_80 < 1)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                loop {
+                  let x_87 : i32 = i6;
+                  if ((x_87 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  loop {
+                    let x_94 : i32 = i7;
+                    if ((x_94 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    loop {
+                      let x_101 : i32 = i8_1;
+                      if ((x_101 < 17)) {
+                      } else {
+                        break;
+                      }
+                      let x_104 : i32 = a;
+                      a = (x_104 + 1);
+
+                      continuing {
+                        let x_106 : i32 = i8_1;
+                        i8_1 = (x_106 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_108 : i32 = i7;
+                      i7 = (x_108 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_110 : i32 = i6;
+                    i6 = (x_110 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_112 : i32 = i5;
+                  i5 = (x_112 + 1);
+                }
+              }
+
+              continuing {
+                let x_114 : i32 = i4;
+                i4 = (x_114 + 1);
+              }
+            }
+
+            continuing {
+              let x_116 : i32 = i3;
+              i3 = (x_116 + 1);
+            }
+          }
+
+          continuing {
+            let x_118 : i32 = i2;
+            i2 = (x_118 + 1);
+          }
+        }
+
+        continuing {
+          let x_120 : i32 = i1;
+          i1 = (x_120 + 1);
+        }
+      }
+
+      continuing {
+        let x_123 : f32 = gl_FragCoord.x;
+        if ((x_123 < -1.0)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_126 : f32 = gl_FragCoord.y;
+      if ((x_126 < -1.0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_128 : vec4<f32> = c;
+  x_GLF_color = x_128;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
new file mode 100644
index 0000000..73515b9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
@@ -0,0 +1,161 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec4<f32>;
+  var a : i32;
+  var i1 : i32;
+  var i2 : i32;
+  var i3 : i32;
+  var i4 : i32;
+  var i5 : i32;
+  var i6 : i32;
+  var i7 : i32;
+  var i8_1 : i32;
+  c = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  a = 0;
+  loop {
+    loop {
+      let x_46 : i32 = a;
+      c[x_46] = 1.0;
+      i1 = 0;
+      loop {
+        let x_52 : i32 = i1;
+        if ((x_52 < 1)) {
+        } else {
+          break;
+        }
+        i2 = 0;
+        loop {
+          let x_59 : i32 = i2;
+          if ((x_59 < 1)) {
+          } else {
+            break;
+          }
+          i3 = 0;
+          loop {
+            let x_66 : i32 = i3;
+            if ((x_66 < 1)) {
+            } else {
+              break;
+            }
+            i4 = 0;
+            loop {
+              let x_73 : i32 = i4;
+              if ((x_73 < 1)) {
+              } else {
+                break;
+              }
+              i5 = 0;
+              loop {
+                let x_80 : i32 = i5;
+                if ((x_80 < 1)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                loop {
+                  let x_87 : i32 = i6;
+                  if ((x_87 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  loop {
+                    let x_94 : i32 = i7;
+                    if ((x_94 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    loop {
+                      let x_101 : i32 = i8_1;
+                      if ((x_101 < 17)) {
+                      } else {
+                        break;
+                      }
+                      let x_104 : i32 = a;
+                      a = (x_104 + 1);
+
+                      continuing {
+                        let x_106 : i32 = i8_1;
+                        i8_1 = (x_106 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_108 : i32 = i7;
+                      i7 = (x_108 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_110 : i32 = i6;
+                    i6 = (x_110 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_112 : i32 = i5;
+                  i5 = (x_112 + 1);
+                }
+              }
+
+              continuing {
+                let x_114 : i32 = i4;
+                i4 = (x_114 + 1);
+              }
+            }
+
+            continuing {
+              let x_116 : i32 = i3;
+              i3 = (x_116 + 1);
+            }
+          }
+
+          continuing {
+            let x_118 : i32 = i2;
+            i2 = (x_118 + 1);
+          }
+        }
+
+        continuing {
+          let x_120 : i32 = i1;
+          i1 = (x_120 + 1);
+        }
+      }
+
+      continuing {
+        let x_123 : f32 = gl_FragCoord.x;
+        if ((x_123 < -1.0)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_126 : f32 = gl_FragCoord.y;
+      if ((x_126 < -1.0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_128 : vec4<f32> = c;
+  x_GLF_color = x_128;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..400e058
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,102 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+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 c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int a = 0;
+  int i1 = 0;
+  int i2 = 0;
+  int i3 = 0;
+  int i4 = 0;
+  int i5 = 0;
+  int i6 = 0;
+  int i7 = 0;
+  int i8_1 = 0;
+  c = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  a = 0;
+  while (true) {
+    while (true) {
+      set_float4(c, a, 1.0f);
+      i1 = 0;
+      {
+        for(; (i1 < 1); i1 = (i1 + 1)) {
+          i2 = 0;
+          {
+            for(; (i2 < 1); i2 = (i2 + 1)) {
+              i3 = 0;
+              {
+                for(; (i3 < 1); i3 = (i3 + 1)) {
+                  i4 = 0;
+                  {
+                    for(; (i4 < 1); i4 = (i4 + 1)) {
+                      i5 = 0;
+                      {
+                        for(; (i5 < 1); i5 = (i5 + 1)) {
+                          i6 = 0;
+                          {
+                            for(; (i6 < 1); i6 = (i6 + 1)) {
+                              i7 = 0;
+                              {
+                                for(; (i7 < 1); i7 = (i7 + 1)) {
+                                  i8_1 = 0;
+                                  {
+                                    for(; (i8_1 < 17); i8_1 = (i8_1 + 1)) {
+                                      a = (a + 1);
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      {
+        const float x_123 = gl_FragCoord.x;
+        if ((x_123 < -1.0f)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      const float x_126 = gl_FragCoord.y;
+      if ((x_126 < -1.0f)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = c;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5e6ba53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,156 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4 c = 0.0f;
+  int a = 0;
+  int i1 = 0;
+  int i2 = 0;
+  int i3 = 0;
+  int i4 = 0;
+  int i5 = 0;
+  int i6 = 0;
+  int i7 = 0;
+  int i8_1 = 0;
+  c = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  a = 0;
+  while (true) {
+    while (true) {
+      int const x_46 = a;
+      c[x_46] = 1.0f;
+      i1 = 0;
+      while (true) {
+        int const x_52 = i1;
+        if ((x_52 < 1)) {
+        } else {
+          break;
+        }
+        i2 = 0;
+        while (true) {
+          int const x_59 = i2;
+          if ((x_59 < 1)) {
+          } else {
+            break;
+          }
+          i3 = 0;
+          while (true) {
+            int const x_66 = i3;
+            if ((x_66 < 1)) {
+            } else {
+              break;
+            }
+            i4 = 0;
+            while (true) {
+              int const x_73 = i4;
+              if ((x_73 < 1)) {
+              } else {
+                break;
+              }
+              i5 = 0;
+              while (true) {
+                int const x_80 = i5;
+                if ((x_80 < 1)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                while (true) {
+                  int const x_87 = i6;
+                  if ((x_87 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  while (true) {
+                    int const x_94 = i7;
+                    if ((x_94 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    while (true) {
+                      int const x_101 = i8_1;
+                      if ((x_101 < 17)) {
+                      } else {
+                        break;
+                      }
+                      int const x_104 = a;
+                      a = (x_104 + 1);
+                      {
+                        int const x_106 = i8_1;
+                        i8_1 = (x_106 + 1);
+                      }
+                    }
+                    {
+                      int const x_108 = i7;
+                      i7 = (x_108 + 1);
+                    }
+                  }
+                  {
+                    int const x_110 = i6;
+                    i6 = (x_110 + 1);
+                  }
+                }
+                {
+                  int const x_112 = i5;
+                  i5 = (x_112 + 1);
+                }
+              }
+              {
+                int const x_114 = i4;
+                i4 = (x_114 + 1);
+              }
+            }
+            {
+              int const x_116 = i3;
+              i3 = (x_116 + 1);
+            }
+          }
+          {
+            int const x_118 = i2;
+            i2 = (x_118 + 1);
+          }
+        }
+        {
+          int const x_120 = i1;
+          i1 = (x_120 + 1);
+        }
+      }
+      {
+        float const x_123 = (*(tint_symbol_5)).x;
+        if ((x_123 < -1.0f)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      float const x_126 = (*(tint_symbol_5)).y;
+      if ((x_126 < -1.0f)) {
+      } else {
+        break;
+      }
+    }
+  }
+  float4 const x_128 = c;
+  *(tint_symbol_6) = x_128;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..dde7eba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,323 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 168
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %a "a"
+               OpName %i1 "i1"
+               OpName %i2 "i2"
+               OpName %i3 "i3"
+               OpName %i4 "i4"
+               OpName %i5 "i5"
+               OpName %i6 "i6"
+               OpName %i7 "i7"
+               OpName %i8_1 "i8_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %int_17 = OpConstant %int 17
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n1 = OpConstant %float -1
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+        %155 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %c = OpVariable %_ptr_Function_v4float Function %5
+          %a = OpVariable %_ptr_Function_int Function %20
+         %i1 = OpVariable %_ptr_Function_int Function %20
+         %i2 = OpVariable %_ptr_Function_int Function %20
+         %i3 = OpVariable %_ptr_Function_int Function %20
+         %i4 = OpVariable %_ptr_Function_int Function %20
+         %i5 = OpVariable %_ptr_Function_int Function %20
+         %i6 = OpVariable %_ptr_Function_int Function %20
+         %i7 = OpVariable %_ptr_Function_int Function %20
+       %i8_1 = OpVariable %_ptr_Function_int Function %20
+               OpStore %c %31
+               OpStore %a %int_0
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %a
+         %43 = OpAccessChain %_ptr_Function_float %c %41
+               OpStore %43 %float_1
+               OpStore %i1 %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i1
+         %50 = OpSLessThan %bool %48 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %45
+         %52 = OpLabel
+               OpStore %i2 %int_0
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %i2
+         %60 = OpSLessThan %bool %59 %int_1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %56
+         %61 = OpLabel
+               OpStore %i3 %int_0
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %i3
+         %69 = OpSLessThan %bool %68 %int_1
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %65
+         %70 = OpLabel
+               OpStore %i4 %int_0
+               OpBranch %73
+         %73 = OpLabel
+               OpLoopMerge %74 %75 None
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpLoad %int %i4
+         %78 = OpSLessThan %bool %77 %int_1
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %74
+         %79 = OpLabel
+               OpStore %i5 %int_0
+               OpBranch %82
+         %82 = OpLabel
+               OpLoopMerge %83 %84 None
+               OpBranch %85
+         %85 = OpLabel
+         %86 = OpLoad %int %i5
+         %87 = OpSLessThan %bool %86 %int_1
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+               OpBranch %88
+         %90 = OpLabel
+               OpBranch %83
+         %88 = OpLabel
+               OpStore %i6 %int_0
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i6
+         %96 = OpSLessThan %bool %95 %int_1
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %99
+         %98 = OpLabel
+               OpBranch %97
+         %99 = OpLabel
+               OpBranch %92
+         %97 = OpLabel
+               OpStore %i7 %int_0
+               OpBranch %100
+        %100 = OpLabel
+               OpLoopMerge %101 %102 None
+               OpBranch %103
+        %103 = OpLabel
+        %104 = OpLoad %int %i7
+        %105 = OpSLessThan %bool %104 %int_1
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %107 = OpLabel
+               OpBranch %106
+        %108 = OpLabel
+               OpBranch %101
+        %106 = OpLabel
+               OpStore %i8_1 %int_0
+               OpBranch %109
+        %109 = OpLabel
+               OpLoopMerge %110 %111 None
+               OpBranch %112
+        %112 = OpLabel
+        %113 = OpLoad %int %i8_1
+        %115 = OpSLessThan %bool %113 %int_17
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+               OpBranch %116
+        %118 = OpLabel
+               OpBranch %110
+        %116 = OpLabel
+        %119 = OpLoad %int %a
+        %120 = OpIAdd %int %119 %int_1
+               OpStore %a %120
+               OpBranch %111
+        %111 = OpLabel
+        %121 = OpLoad %int %i8_1
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %i8_1 %122
+               OpBranch %109
+        %110 = OpLabel
+               OpBranch %102
+        %102 = OpLabel
+        %123 = OpLoad %int %i7
+        %124 = OpIAdd %int %123 %int_1
+               OpStore %i7 %124
+               OpBranch %100
+        %101 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+        %125 = OpLoad %int %i6
+        %126 = OpIAdd %int %125 %int_1
+               OpStore %i6 %126
+               OpBranch %91
+         %92 = OpLabel
+               OpBranch %84
+         %84 = OpLabel
+        %127 = OpLoad %int %i5
+        %128 = OpIAdd %int %127 %int_1
+               OpStore %i5 %128
+               OpBranch %82
+         %83 = OpLabel
+               OpBranch %75
+         %75 = OpLabel
+        %129 = OpLoad %int %i4
+        %130 = OpIAdd %int %129 %int_1
+               OpStore %i4 %130
+               OpBranch %73
+         %74 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+        %131 = OpLoad %int %i3
+        %132 = OpIAdd %int %131 %int_1
+               OpStore %i3 %132
+               OpBranch %64
+         %65 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+        %133 = OpLoad %int %i2
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %i2 %134
+               OpBranch %55
+         %56 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+        %135 = OpLoad %int %i1
+        %136 = OpIAdd %int %135 %int_1
+               OpStore %i1 %136
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+        %140 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %141 = OpLoad %float %140
+        %143 = OpFOrdLessThan %bool %141 %float_n1
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %38
+        %144 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+        %148 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %149 = OpLoad %float %148
+        %150 = OpFOrdLessThan %bool %149 %float_n1
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %153
+        %152 = OpLabel
+               OpBranch %151
+        %153 = OpLabel
+               OpBranch %34
+        %151 = OpLabel
+               OpBranch %33
+         %34 = OpLabel
+        %154 = OpLoad %v4float %c
+               OpStore %x_GLF_color %154
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %155
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %159 = OpLabel
+        %160 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %160
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+        %162 = OpLabel
+        %163 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %163
+        %164 = OpFunctionCall %void %main_1
+        %166 = OpLoad %v4float %x_GLF_color
+        %167 = OpCompositeConstruct %main_out %166
+        %165 = OpFunctionCall %void %tint_symbol_3 %167
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 35[%35] is not post dominated by the back-edge block 151[%151]
+  %151 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..73515b9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,161 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec4<f32>;
+  var a : i32;
+  var i1 : i32;
+  var i2 : i32;
+  var i3 : i32;
+  var i4 : i32;
+  var i5 : i32;
+  var i6 : i32;
+  var i7 : i32;
+  var i8_1 : i32;
+  c = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  a = 0;
+  loop {
+    loop {
+      let x_46 : i32 = a;
+      c[x_46] = 1.0;
+      i1 = 0;
+      loop {
+        let x_52 : i32 = i1;
+        if ((x_52 < 1)) {
+        } else {
+          break;
+        }
+        i2 = 0;
+        loop {
+          let x_59 : i32 = i2;
+          if ((x_59 < 1)) {
+          } else {
+            break;
+          }
+          i3 = 0;
+          loop {
+            let x_66 : i32 = i3;
+            if ((x_66 < 1)) {
+            } else {
+              break;
+            }
+            i4 = 0;
+            loop {
+              let x_73 : i32 = i4;
+              if ((x_73 < 1)) {
+              } else {
+                break;
+              }
+              i5 = 0;
+              loop {
+                let x_80 : i32 = i5;
+                if ((x_80 < 1)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                loop {
+                  let x_87 : i32 = i6;
+                  if ((x_87 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  loop {
+                    let x_94 : i32 = i7;
+                    if ((x_94 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    loop {
+                      let x_101 : i32 = i8_1;
+                      if ((x_101 < 17)) {
+                      } else {
+                        break;
+                      }
+                      let x_104 : i32 = a;
+                      a = (x_104 + 1);
+
+                      continuing {
+                        let x_106 : i32 = i8_1;
+                        i8_1 = (x_106 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_108 : i32 = i7;
+                      i7 = (x_108 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_110 : i32 = i6;
+                    i6 = (x_110 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_112 : i32 = i5;
+                  i5 = (x_112 + 1);
+                }
+              }
+
+              continuing {
+                let x_114 : i32 = i4;
+                i4 = (x_114 + 1);
+              }
+            }
+
+            continuing {
+              let x_116 : i32 = i3;
+              i3 = (x_116 + 1);
+            }
+          }
+
+          continuing {
+            let x_118 : i32 = i2;
+            i2 = (x_118 + 1);
+          }
+        }
+
+        continuing {
+          let x_120 : i32 = i1;
+          i1 = (x_120 + 1);
+        }
+      }
+
+      continuing {
+        let x_123 : f32 = gl_FragCoord.x;
+        if ((x_123 < -1.0)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_126 : f32 = gl_FragCoord.y;
+      if ((x_126 < -1.0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_128 : vec4<f32> = c;
+  x_GLF_color = x_128;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm
new file mode 100644
index 0000000..6808a31
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm
@@ -0,0 +1,296 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %sums "sums"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %indexable "indexable"
+               OpName %indexable_0 "indexable"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 RelaxedPrecision
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %a RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %b RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %c RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %d RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %34 RelaxedPrecision
+               OpDecorate %35 RelaxedPrecision
+               OpDecorate %36 RelaxedPrecision
+               OpDecorate %37 RelaxedPrecision
+               OpDecorate %38 RelaxedPrecision
+               OpDecorate %39 RelaxedPrecision
+               OpDecorate %40 RelaxedPrecision
+               OpDecorate %41 RelaxedPrecision
+               OpDecorate %42 RelaxedPrecision
+               OpDecorate %43 RelaxedPrecision
+               OpDecorate %44 RelaxedPrecision
+               OpDecorate %45 RelaxedPrecision
+               OpDecorate %46 RelaxedPrecision
+               OpDecorate %47 RelaxedPrecision
+               OpDecorate %48 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %49 RelaxedPrecision
+               OpDecorate %50 RelaxedPrecision
+               OpDecorate %51 RelaxedPrecision
+               OpDecorate %52 RelaxedPrecision
+               OpDecorate %53 RelaxedPrecision
+       %void = OpTypeVoid
+         %55 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+%_ptr_Function_int = OpTypePointer Function %int
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %55
+         %82 = OpLabel
+       %sums = OpVariable %_ptr_Function__arr_float_uint_2 Function
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+          %d = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function_mat2v2float Function
+%indexable_0 = OpVariable %_ptr_Function_mat2v2float Function
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %16 = OpLoad %int %83
+         %84 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpFNegate %float %85
+         %87 = OpAccessChain %_ptr_Function_float %sums %16
+               OpStore %87 %86
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %18 = OpLoad %int %88
+         %89 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %90 = OpLoad %float %89
+         %91 = OpFNegate %float %90
+         %92 = OpAccessChain %_ptr_Function_float %sums %18
+               OpStore %92 %91
+         %93 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %19 = OpLoad %int %93
+               OpStore %a %19
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+         %20 = OpLoad %int %a
+         %98 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %21 = OpLoad %int %98
+         %99 = OpSLessThan %bool %20 %21
+               OpBranchConditional %99 %100 %95
+        %100 = OpLabel
+        %101 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %22 = OpLoad %int %101
+               OpStore %b %22
+               OpBranch %102
+        %102 = OpLabel
+               OpLoopMerge %103 %104 None
+               OpBranch %105
+        %105 = OpLabel
+         %23 = OpLoad %int %b
+        %106 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %24 = OpLoad %int %106
+        %107 = OpSLessThan %bool %23 %24
+               OpBranchConditional %107 %108 %103
+        %108 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %25 = OpLoad %int %109
+               OpStore %c %25
+               OpBranch %110
+        %110 = OpLabel
+               OpLoopMerge %111 %112 None
+               OpBranch %113
+        %113 = OpLabel
+         %26 = OpLoad %int %c
+         %27 = OpLoad %int %a
+        %114 = OpSLessThanEqual %bool %26 %27
+               OpBranchConditional %114 %115 %111
+        %115 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %28 = OpLoad %int %116
+               OpStore %d %28
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+         %29 = OpLoad %int %d
+        %121 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %30 = OpLoad %int %121
+        %122 = OpSLessThan %bool %29 %30
+               OpBranchConditional %122 %123 %118
+        %123 = OpLabel
+         %31 = OpLoad %int %a
+        %124 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %32 = OpLoad %int %124
+        %125 = OpConvertSToF %float %32
+        %126 = OpCompositeConstruct %v2float %125 %float_0
+        %127 = OpCompositeConstruct %v2float %float_0 %125
+        %128 = OpCompositeConstruct %mat2v2float %126 %127
+         %33 = OpLoad %int %c
+        %129 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %34 = OpLoad %int %129
+               OpStore %indexable %128
+        %130 = OpAccessChain %_ptr_Function_float %indexable %33 %34
+        %131 = OpLoad %float %130
+        %132 = OpAccessChain %_ptr_Function_float %sums %31
+               OpStore %132 %131
+         %35 = OpLoad %int %a
+        %133 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %36 = OpLoad %int %133
+        %134 = OpConvertSToF %float %36
+        %135 = OpCompositeConstruct %v2float %134 %float_0
+        %136 = OpCompositeConstruct %v2float %float_0 %134
+        %137 = OpCompositeConstruct %mat2v2float %135 %136
+         %37 = OpLoad %int %c
+        %138 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %38 = OpLoad %int %138
+               OpStore %indexable_0 %137
+        %139 = OpAccessChain %_ptr_Function_float %indexable_0 %37 %38
+        %140 = OpLoad %float %139
+        %141 = OpAccessChain %_ptr_Function_float %sums %35
+        %142 = OpLoad %float %141
+        %143 = OpFAdd %float %142 %140
+        %144 = OpAccessChain %_ptr_Function_float %sums %35
+               OpStore %144 %143
+               OpBranch %119
+        %119 = OpLabel
+         %39 = OpLoad %int %d
+         %40 = OpIAdd %int %39 %int_1
+               OpStore %d %40
+               OpBranch %117
+        %118 = OpLabel
+               OpBranch %112
+        %112 = OpLabel
+         %41 = OpLoad %int %c
+         %42 = OpIAdd %int %41 %int_1
+               OpStore %c %42
+               OpBranch %110
+        %111 = OpLabel
+               OpBranch %104
+        %104 = OpLabel
+         %43 = OpLoad %int %b
+         %44 = OpIAdd %int %43 %int_1
+               OpStore %b %44
+               OpBranch %102
+        %103 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+         %45 = OpLoad %int %a
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %a %46
+               OpBranch %94
+         %95 = OpLabel
+        %145 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %47 = OpLoad %int %145
+        %146 = OpAccessChain %_ptr_Function_float %sums %47
+        %147 = OpLoad %float %146
+        %148 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+        %149 = OpLoad %float %148
+        %150 = OpFOrdEqual %bool %147 %149
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %151
+        %152 = OpLabel
+        %153 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %48 = OpLoad %int %153
+        %154 = OpAccessChain %_ptr_Function_float %sums %48
+        %155 = OpLoad %float %154
+        %156 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_2
+        %157 = OpLoad %float %156
+        %158 = OpFOrdEqual %bool %155 %157
+               OpBranch %151
+        %151 = OpLabel
+        %159 = OpPhi %bool %150 %95 %158 %152
+               OpSelectionMerge %160 None
+               OpBranchConditional %159 %161 %162
+        %161 = OpLabel
+        %163 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %49 = OpLoad %int %163
+        %164 = OpConvertSToF %float %49
+        %165 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %50 = OpLoad %int %165
+        %166 = OpConvertSToF %float %50
+        %167 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %167
+        %168 = OpConvertSToF %float %51
+        %169 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %52 = OpLoad %int %169
+        %170 = OpConvertSToF %float %52
+        %171 = OpCompositeConstruct %v4float %164 %166 %168 %170
+               OpStore %_GLF_color %171
+               OpBranch %160
+        %162 = OpLabel
+        %172 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %172
+        %173 = OpConvertSToF %float %53
+        %174 = OpCompositeConstruct %v4float %173 %173 %173 %173
+               OpStore %_GLF_color %174
+               OpBranch %160
+        %160 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2d3af22
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,128 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float sums[2] = (float[2])0;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int d = 0;
+  float2x2 indexable = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 indexable_1 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_158 = false;
+  bool x_159_phi = false;
+  const int x_16 = asint(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_85 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  sums[x_16] = -(x_85);
+  const int x_18 = asint(x_6[2].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_90 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  sums[x_18] = -(x_90);
+  const int x_19 = asint(x_6[1].x);
+  a = x_19;
+  while (true) {
+    const int x_20 = a;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_21 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_20 < x_21)) {
+    } else {
+      break;
+    }
+    const int x_22 = asint(x_6[1].x);
+    b = x_22;
+    while (true) {
+      const int x_23 = b;
+      const int x_24 = asint(x_6[3].x);
+      if ((x_23 < x_24)) {
+      } else {
+        break;
+      }
+      const int x_25 = asint(x_6[1].x);
+      c = x_25;
+      {
+        for(; (c <= a); c = (c + 1)) {
+          const int x_28 = asint(x_6[1].x);
+          d = x_28;
+          while (true) {
+            const int x_29 = d;
+            const int x_30 = asint(x_6[3].x);
+            if ((x_29 < x_30)) {
+            } else {
+              break;
+            }
+            const int x_31 = a;
+            const int x_32 = asint(x_6[2].x);
+            const float x_125 = float(x_32);
+            const int x_33 = c;
+            const int x_34 = asint(x_6[2].x);
+            indexable = float2x2(float2(x_125, 0.0f), float2(0.0f, x_125));
+            const float x_131 = indexable[x_33][x_34];
+            sums[x_31] = x_131;
+            const int x_35 = a;
+            const int x_36 = asint(x_6[2].x);
+            const float x_134 = float(x_36);
+            const int x_37 = c;
+            const int x_38 = asint(x_6[2].x);
+            indexable_1 = float2x2(float2(x_134, 0.0f), float2(0.0f, x_134));
+            const float x_140 = indexable_1[x_37][x_38];
+            const float x_142 = sums[x_35];
+            sums[x_35] = (x_142 + x_140);
+            {
+              d = (d + 1);
+            }
+          }
+        }
+      }
+      {
+        b = (b + 1);
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const int x_47 = asint(x_6[1].x);
+  const float x_147 = sums[x_47];
+  const float x_149 = asfloat(x_8[1].x);
+  const bool x_150 = (x_147 == x_149);
+  x_159_phi = x_150;
+  if (x_150) {
+    const int x_48 = asint(x_6[2].x);
+    const float x_155 = sums[x_48];
+    const float x_157 = asfloat(x_8[2].x);
+    x_158 = (x_155 == x_157);
+    x_159_phi = x_158;
+  }
+  if (x_159_phi) {
+    const int x_49 = asint(x_6[2].x);
+    const int x_50 = asint(x_6[1].x);
+    const int x_51 = asint(x_6[1].x);
+    const int x_52 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_49), float(x_50), float(x_51), float(x_52));
+  } else {
+    const int x_53 = asint(x_6[1].x);
+    const float x_173 = float(x_53);
+    x_GLF_color = float4(x_173, x_173, x_173, x_173);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ed07fe7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.msl
@@ -0,0 +1,157 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 sums = {};
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int d = 0;
+  float2x2 indexable = float2x2(0.0f);
+  float2x2 indexable_1 = float2x2(0.0f);
+  bool x_158 = false;
+  bool x_159_phi = false;
+  int const x_16 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_85 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  sums.arr[x_16] = -(x_85);
+  int const x_18 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_90 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  sums.arr[x_18] = -(x_90);
+  int const x_19 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_19;
+  while (true) {
+    int const x_20 = a;
+    int const x_21 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_20 < x_21)) {
+    } else {
+      break;
+    }
+    int const x_22 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    b = x_22;
+    while (true) {
+      int const x_23 = b;
+      int const x_24 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      if ((x_23 < x_24)) {
+      } else {
+        break;
+      }
+      int const x_25 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      c = x_25;
+      while (true) {
+        int const x_26 = c;
+        int const x_27 = a;
+        if ((x_26 <= x_27)) {
+        } else {
+          break;
+        }
+        int const x_28 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        d = x_28;
+        while (true) {
+          int const x_29 = d;
+          int const x_30 = x_6.x_GLF_uniform_int_values.arr[3].el;
+          if ((x_29 < x_30)) {
+          } else {
+            break;
+          }
+          int const x_31 = a;
+          int const x_32 = x_6.x_GLF_uniform_int_values.arr[2].el;
+          float const x_125 = float(x_32);
+          int const x_33 = c;
+          int const x_34 = x_6.x_GLF_uniform_int_values.arr[2].el;
+          indexable = float2x2(float2(x_125, 0.0f), float2(0.0f, x_125));
+          float const x_131 = indexable[x_33][x_34];
+          sums.arr[x_31] = x_131;
+          int const x_35 = a;
+          int const x_36 = x_6.x_GLF_uniform_int_values.arr[2].el;
+          float const x_134 = float(x_36);
+          int const x_37 = c;
+          int const x_38 = x_6.x_GLF_uniform_int_values.arr[2].el;
+          indexable_1 = float2x2(float2(x_134, 0.0f), float2(0.0f, x_134));
+          float const x_140 = indexable_1[x_37][x_38];
+          float const x_142 = sums.arr[x_35];
+          sums.arr[x_35] = (x_142 + x_140);
+          {
+            int const x_39 = d;
+            d = (x_39 + 1);
+          }
+        }
+        {
+          int const x_41 = c;
+          c = (x_41 + 1);
+        }
+      }
+      {
+        int const x_43 = b;
+        b = (x_43 + 1);
+      }
+    }
+    {
+      int const x_45 = a;
+      a = (x_45 + 1);
+    }
+  }
+  int const x_47 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_147 = sums.arr[x_47];
+  float const x_149 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  bool const x_150 = (x_147 == x_149);
+  x_159_phi = x_150;
+  if (x_150) {
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_155 = sums.arr[x_48];
+    float const x_157 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    x_158 = (x_155 == x_157);
+    x_159_phi = x_158;
+  }
+  bool const x_159 = x_159_phi;
+  if (x_159) {
+    int const x_49 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_52 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_49), float(x_50), float(x_51), float(x_52));
+  } else {
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_173 = float(x_53);
+    *(tint_symbol_4) = float4(x_173, x_173, x_173, x_173);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7c6e615
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,320 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 205
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %sums "sums"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %x_158 "x_158"
+               OpName %x_159_phi "x_159_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+         %28 = OpConstantNull %_arr_float_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %39 = OpConstantNull %mat2v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %44 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+        %193 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+       %sums = OpVariable %_ptr_Function__arr_float_uint_2 Function %28
+          %a = OpVariable %_ptr_Function_int Function %31
+          %b = OpVariable %_ptr_Function_int Function %31
+          %c = OpVariable %_ptr_Function_int Function %31
+          %d = OpVariable %_ptr_Function_int Function %31
+  %indexable = OpVariable %_ptr_Function_mat2v2float Function %39
+%indexable_1 = OpVariable %_ptr_Function_mat2v2float Function %39
+      %x_158 = OpVariable %_ptr_Function_bool Function %44
+  %x_159_phi = OpVariable %_ptr_Function_bool Function %44
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %54 = OpLoad %float %53
+         %56 = OpAccessChain %_ptr_Function_float %sums %50
+         %57 = OpFNegate %float %54
+               OpStore %56 %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Function_float %sums %60
+         %64 = OpFNegate %float %62
+               OpStore %63 %64
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+               OpStore %a %66
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %a
+         %72 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpSLessThan %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %68
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %79 = OpLoad %int %78
+               OpStore %b %79
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %b
+         %86 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %87 = OpLoad %int %86
+         %88 = OpSLessThan %bool %84 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+               OpBranch %89
+         %91 = OpLabel
+               OpBranch %81
+         %89 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %93 = OpLoad %int %92
+               OpStore %c %93
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+         %98 = OpLoad %int %c
+         %99 = OpLoad %int %a
+        %100 = OpSLessThanEqual %bool %98 %99
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %103
+        %102 = OpLabel
+               OpBranch %101
+        %103 = OpLabel
+               OpBranch %95
+        %101 = OpLabel
+        %104 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %105 = OpLoad %int %104
+               OpStore %d %105
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %d
+        %111 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %112 = OpLoad %int %111
+        %113 = OpSLessThan %bool %110 %112
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %115 = OpLabel
+               OpBranch %114
+        %116 = OpLabel
+               OpBranch %107
+        %114 = OpLabel
+        %117 = OpLoad %int %a
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %119
+        %121 = OpLoad %int %c
+        %122 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %123 = OpLoad %int %122
+        %125 = OpCompositeConstruct %v2float %120 %float_0
+        %126 = OpCompositeConstruct %v2float %float_0 %120
+        %127 = OpCompositeConstruct %mat2v2float %125 %126
+               OpStore %indexable %127
+        %128 = OpAccessChain %_ptr_Function_float %indexable %121 %123
+        %129 = OpLoad %float %128
+        %130 = OpAccessChain %_ptr_Function_float %sums %117
+               OpStore %130 %129
+        %131 = OpLoad %int %a
+        %132 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %133 = OpLoad %int %132
+        %134 = OpConvertSToF %float %133
+        %135 = OpLoad %int %c
+        %136 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %137 = OpLoad %int %136
+        %138 = OpCompositeConstruct %v2float %134 %float_0
+        %139 = OpCompositeConstruct %v2float %float_0 %134
+        %140 = OpCompositeConstruct %mat2v2float %138 %139
+               OpStore %indexable_1 %140
+        %141 = OpAccessChain %_ptr_Function_float %indexable_1 %135 %137
+        %142 = OpLoad %float %141
+        %143 = OpAccessChain %_ptr_Function_float %sums %131
+        %144 = OpLoad %float %143
+        %145 = OpAccessChain %_ptr_Function_float %sums %131
+        %146 = OpFAdd %float %144 %142
+               OpStore %145 %146
+               OpBranch %108
+        %108 = OpLabel
+        %147 = OpLoad %int %d
+        %148 = OpIAdd %int %147 %int_1
+               OpStore %d %148
+               OpBranch %106
+        %107 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+        %149 = OpLoad %int %c
+        %150 = OpIAdd %int %149 %int_1
+               OpStore %c %150
+               OpBranch %94
+         %95 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+        %151 = OpLoad %int %b
+        %152 = OpIAdd %int %151 %int_1
+               OpStore %b %152
+               OpBranch %80
+         %81 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+        %153 = OpLoad %int %a
+        %154 = OpIAdd %int %153 %int_1
+               OpStore %a %154
+               OpBranch %67
+         %68 = OpLabel
+        %155 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %156 = OpLoad %int %155
+        %157 = OpAccessChain %_ptr_Function_float %sums %156
+        %158 = OpLoad %float %157
+        %159 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %160 = OpLoad %float %159
+        %161 = OpFOrdEqual %bool %158 %160
+               OpStore %x_159_phi %161
+               OpSelectionMerge %162 None
+               OpBranchConditional %161 %163 %162
+        %163 = OpLabel
+        %164 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %165 = OpLoad %int %164
+        %166 = OpAccessChain %_ptr_Function_float %sums %165
+        %167 = OpLoad %float %166
+        %168 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %169 = OpLoad %float %168
+        %170 = OpFOrdEqual %bool %167 %169
+               OpStore %x_158 %170
+        %171 = OpLoad %bool %x_158
+               OpStore %x_159_phi %171
+               OpBranch %162
+        %162 = OpLabel
+        %172 = OpLoad %bool %x_159_phi
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %175
+        %174 = OpLabel
+        %176 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %177 = OpLoad %int %176
+        %178 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %179 = OpLoad %int %178
+        %180 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %181 = OpLoad %int %180
+        %182 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %183 = OpLoad %int %182
+        %184 = OpConvertSToF %float %177
+        %185 = OpConvertSToF %float %179
+        %186 = OpConvertSToF %float %181
+        %187 = OpConvertSToF %float %183
+        %188 = OpCompositeConstruct %v4float %184 %185 %186 %187
+               OpStore %x_GLF_color %188
+               OpBranch %173
+        %175 = OpLabel
+        %189 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %190 = OpLoad %int %189
+        %191 = OpConvertSToF %float %190
+        %192 = OpCompositeConstruct %v4float %191 %191 %191 %191
+               OpStore %x_GLF_color %192
+               OpBranch %173
+        %173 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %193
+%tint_symbol = OpFunctionParameter %main_out
+        %197 = OpLabel
+        %198 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %198
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %200 = OpLabel
+        %201 = OpFunctionCall %void %main_1
+        %203 = OpLoad %v4float %x_GLF_color
+        %204 = OpCompositeConstruct %main_out %203
+        %202 = OpFunctionCall %void %tint_symbol_2 %204
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..83081ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,150 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var sums : array<f32, 2>;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var d : i32;
+  var indexable : mat2x2<f32>;
+  var indexable_1 : mat2x2<f32>;
+  var x_158 : bool;
+  var x_159_phi : bool;
+  let x_16 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_85 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_16] = -(x_85);
+  let x_18 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_90 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_18] = -(x_90);
+  let x_19 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_19;
+  loop {
+    let x_20 : i32 = a;
+    let x_21 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_20 < x_21)) {
+    } else {
+      break;
+    }
+    let x_22 : i32 = x_6.x_GLF_uniform_int_values[1];
+    b = x_22;
+    loop {
+      let x_23 : i32 = b;
+      let x_24 : i32 = x_6.x_GLF_uniform_int_values[3];
+      if ((x_23 < x_24)) {
+      } else {
+        break;
+      }
+      let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+      c = x_25;
+      loop {
+        let x_26 : i32 = c;
+        let x_27 : i32 = a;
+        if ((x_26 <= x_27)) {
+        } else {
+          break;
+        }
+        let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+        d = x_28;
+        loop {
+          let x_29 : i32 = d;
+          let x_30 : i32 = x_6.x_GLF_uniform_int_values[3];
+          if ((x_29 < x_30)) {
+          } else {
+            break;
+          }
+          let x_31 : i32 = a;
+          let x_32 : i32 = x_6.x_GLF_uniform_int_values[2];
+          let x_125 : f32 = f32(x_32);
+          let x_33 : i32 = c;
+          let x_34 : i32 = x_6.x_GLF_uniform_int_values[2];
+          indexable = mat2x2<f32>(vec2<f32>(x_125, 0.0), vec2<f32>(0.0, x_125));
+          let x_131 : f32 = indexable[x_33][x_34];
+          sums[x_31] = x_131;
+          let x_35 : i32 = a;
+          let x_36 : i32 = x_6.x_GLF_uniform_int_values[2];
+          let x_134 : f32 = f32(x_36);
+          let x_37 : i32 = c;
+          let x_38 : i32 = x_6.x_GLF_uniform_int_values[2];
+          indexable_1 = mat2x2<f32>(vec2<f32>(x_134, 0.0), vec2<f32>(0.0, x_134));
+          let x_140 : f32 = indexable_1[x_37][x_38];
+          let x_142 : f32 = sums[x_35];
+          sums[x_35] = (x_142 + x_140);
+
+          continuing {
+            let x_39 : i32 = d;
+            d = (x_39 + 1);
+          }
+        }
+
+        continuing {
+          let x_41 : i32 = c;
+          c = (x_41 + 1);
+        }
+      }
+
+      continuing {
+        let x_43 : i32 = b;
+        b = (x_43 + 1);
+      }
+    }
+
+    continuing {
+      let x_45 : i32 = a;
+      a = (x_45 + 1);
+    }
+  }
+  let x_47 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_147 : f32 = sums[x_47];
+  let x_149 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_150 : bool = (x_147 == x_149);
+  x_159_phi = x_150;
+  if (x_150) {
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_155 : f32 = sums[x_48];
+    let x_157 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_158 = (x_155 == x_157);
+    x_159_phi = x_158;
+  }
+  let x_159 : bool = x_159_phi;
+  if (x_159) {
+    let x_49 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_49), f32(x_50), f32(x_51), f32(x_52));
+  } else {
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_173 : f32 = f32(x_53);
+    x_GLF_color = vec4<f32>(x_173, x_173, x_173, x_173);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
new file mode 100644
index 0000000..83081ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
@@ -0,0 +1,150 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var sums : array<f32, 2>;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var d : i32;
+  var indexable : mat2x2<f32>;
+  var indexable_1 : mat2x2<f32>;
+  var x_158 : bool;
+  var x_159_phi : bool;
+  let x_16 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_85 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_16] = -(x_85);
+  let x_18 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_90 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_18] = -(x_90);
+  let x_19 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_19;
+  loop {
+    let x_20 : i32 = a;
+    let x_21 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_20 < x_21)) {
+    } else {
+      break;
+    }
+    let x_22 : i32 = x_6.x_GLF_uniform_int_values[1];
+    b = x_22;
+    loop {
+      let x_23 : i32 = b;
+      let x_24 : i32 = x_6.x_GLF_uniform_int_values[3];
+      if ((x_23 < x_24)) {
+      } else {
+        break;
+      }
+      let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+      c = x_25;
+      loop {
+        let x_26 : i32 = c;
+        let x_27 : i32 = a;
+        if ((x_26 <= x_27)) {
+        } else {
+          break;
+        }
+        let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+        d = x_28;
+        loop {
+          let x_29 : i32 = d;
+          let x_30 : i32 = x_6.x_GLF_uniform_int_values[3];
+          if ((x_29 < x_30)) {
+          } else {
+            break;
+          }
+          let x_31 : i32 = a;
+          let x_32 : i32 = x_6.x_GLF_uniform_int_values[2];
+          let x_125 : f32 = f32(x_32);
+          let x_33 : i32 = c;
+          let x_34 : i32 = x_6.x_GLF_uniform_int_values[2];
+          indexable = mat2x2<f32>(vec2<f32>(x_125, 0.0), vec2<f32>(0.0, x_125));
+          let x_131 : f32 = indexable[x_33][x_34];
+          sums[x_31] = x_131;
+          let x_35 : i32 = a;
+          let x_36 : i32 = x_6.x_GLF_uniform_int_values[2];
+          let x_134 : f32 = f32(x_36);
+          let x_37 : i32 = c;
+          let x_38 : i32 = x_6.x_GLF_uniform_int_values[2];
+          indexable_1 = mat2x2<f32>(vec2<f32>(x_134, 0.0), vec2<f32>(0.0, x_134));
+          let x_140 : f32 = indexable_1[x_37][x_38];
+          let x_142 : f32 = sums[x_35];
+          sums[x_35] = (x_142 + x_140);
+
+          continuing {
+            let x_39 : i32 = d;
+            d = (x_39 + 1);
+          }
+        }
+
+        continuing {
+          let x_41 : i32 = c;
+          c = (x_41 + 1);
+        }
+      }
+
+      continuing {
+        let x_43 : i32 = b;
+        b = (x_43 + 1);
+      }
+    }
+
+    continuing {
+      let x_45 : i32 = a;
+      a = (x_45 + 1);
+    }
+  }
+  let x_47 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_147 : f32 = sums[x_47];
+  let x_149 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_150 : bool = (x_147 == x_149);
+  x_159_phi = x_150;
+  if (x_150) {
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_155 : f32 = sums[x_48];
+    let x_157 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_158 = (x_155 == x_157);
+    x_159_phi = x_158;
+  }
+  let x_159 : bool = x_159_phi;
+  if (x_159) {
+    let x_49 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_49), f32(x_50), f32(x_51), f32(x_52));
+  } else {
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_173 : f32 = f32(x_53);
+    x_GLF_color = vec4<f32>(x_173, x_173, x_173, x_173);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2d3af22
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,128 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float sums[2] = (float[2])0;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int d = 0;
+  float2x2 indexable = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 indexable_1 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_158 = false;
+  bool x_159_phi = false;
+  const int x_16 = asint(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_85 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  sums[x_16] = -(x_85);
+  const int x_18 = asint(x_6[2].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_90 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  sums[x_18] = -(x_90);
+  const int x_19 = asint(x_6[1].x);
+  a = x_19;
+  while (true) {
+    const int x_20 = a;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_21 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_20 < x_21)) {
+    } else {
+      break;
+    }
+    const int x_22 = asint(x_6[1].x);
+    b = x_22;
+    while (true) {
+      const int x_23 = b;
+      const int x_24 = asint(x_6[3].x);
+      if ((x_23 < x_24)) {
+      } else {
+        break;
+      }
+      const int x_25 = asint(x_6[1].x);
+      c = x_25;
+      {
+        for(; (c <= a); c = (c + 1)) {
+          const int x_28 = asint(x_6[1].x);
+          d = x_28;
+          while (true) {
+            const int x_29 = d;
+            const int x_30 = asint(x_6[3].x);
+            if ((x_29 < x_30)) {
+            } else {
+              break;
+            }
+            const int x_31 = a;
+            const int x_32 = asint(x_6[2].x);
+            const float x_125 = float(x_32);
+            const int x_33 = c;
+            const int x_34 = asint(x_6[2].x);
+            indexable = float2x2(float2(x_125, 0.0f), float2(0.0f, x_125));
+            const float x_131 = indexable[x_33][x_34];
+            sums[x_31] = x_131;
+            const int x_35 = a;
+            const int x_36 = asint(x_6[2].x);
+            const float x_134 = float(x_36);
+            const int x_37 = c;
+            const int x_38 = asint(x_6[2].x);
+            indexable_1 = float2x2(float2(x_134, 0.0f), float2(0.0f, x_134));
+            const float x_140 = indexable_1[x_37][x_38];
+            const float x_142 = sums[x_35];
+            sums[x_35] = (x_142 + x_140);
+            {
+              d = (d + 1);
+            }
+          }
+        }
+      }
+      {
+        b = (b + 1);
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const int x_47 = asint(x_6[1].x);
+  const float x_147 = sums[x_47];
+  const float x_149 = asfloat(x_8[1].x);
+  const bool x_150 = (x_147 == x_149);
+  x_159_phi = x_150;
+  if (x_150) {
+    const int x_48 = asint(x_6[2].x);
+    const float x_155 = sums[x_48];
+    const float x_157 = asfloat(x_8[2].x);
+    x_158 = (x_155 == x_157);
+    x_159_phi = x_158;
+  }
+  if (x_159_phi) {
+    const int x_49 = asint(x_6[2].x);
+    const int x_50 = asint(x_6[1].x);
+    const int x_51 = asint(x_6[1].x);
+    const int x_52 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_49), float(x_50), float(x_51), float(x_52));
+  } else {
+    const int x_53 = asint(x_6[1].x);
+    const float x_173 = float(x_53);
+    x_GLF_color = float4(x_173, x_173, x_173, x_173);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ed07fe7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.msl
@@ -0,0 +1,157 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 sums = {};
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int d = 0;
+  float2x2 indexable = float2x2(0.0f);
+  float2x2 indexable_1 = float2x2(0.0f);
+  bool x_158 = false;
+  bool x_159_phi = false;
+  int const x_16 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_85 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  sums.arr[x_16] = -(x_85);
+  int const x_18 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_90 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  sums.arr[x_18] = -(x_90);
+  int const x_19 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_19;
+  while (true) {
+    int const x_20 = a;
+    int const x_21 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_20 < x_21)) {
+    } else {
+      break;
+    }
+    int const x_22 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    b = x_22;
+    while (true) {
+      int const x_23 = b;
+      int const x_24 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      if ((x_23 < x_24)) {
+      } else {
+        break;
+      }
+      int const x_25 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      c = x_25;
+      while (true) {
+        int const x_26 = c;
+        int const x_27 = a;
+        if ((x_26 <= x_27)) {
+        } else {
+          break;
+        }
+        int const x_28 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        d = x_28;
+        while (true) {
+          int const x_29 = d;
+          int const x_30 = x_6.x_GLF_uniform_int_values.arr[3].el;
+          if ((x_29 < x_30)) {
+          } else {
+            break;
+          }
+          int const x_31 = a;
+          int const x_32 = x_6.x_GLF_uniform_int_values.arr[2].el;
+          float const x_125 = float(x_32);
+          int const x_33 = c;
+          int const x_34 = x_6.x_GLF_uniform_int_values.arr[2].el;
+          indexable = float2x2(float2(x_125, 0.0f), float2(0.0f, x_125));
+          float const x_131 = indexable[x_33][x_34];
+          sums.arr[x_31] = x_131;
+          int const x_35 = a;
+          int const x_36 = x_6.x_GLF_uniform_int_values.arr[2].el;
+          float const x_134 = float(x_36);
+          int const x_37 = c;
+          int const x_38 = x_6.x_GLF_uniform_int_values.arr[2].el;
+          indexable_1 = float2x2(float2(x_134, 0.0f), float2(0.0f, x_134));
+          float const x_140 = indexable_1[x_37][x_38];
+          float const x_142 = sums.arr[x_35];
+          sums.arr[x_35] = (x_142 + x_140);
+          {
+            int const x_39 = d;
+            d = (x_39 + 1);
+          }
+        }
+        {
+          int const x_41 = c;
+          c = (x_41 + 1);
+        }
+      }
+      {
+        int const x_43 = b;
+        b = (x_43 + 1);
+      }
+    }
+    {
+      int const x_45 = a;
+      a = (x_45 + 1);
+    }
+  }
+  int const x_47 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_147 = sums.arr[x_47];
+  float const x_149 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  bool const x_150 = (x_147 == x_149);
+  x_159_phi = x_150;
+  if (x_150) {
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_155 = sums.arr[x_48];
+    float const x_157 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    x_158 = (x_155 == x_157);
+    x_159_phi = x_158;
+  }
+  bool const x_159 = x_159_phi;
+  if (x_159) {
+    int const x_49 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_52 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_49), float(x_50), float(x_51), float(x_52));
+  } else {
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_173 = float(x_53);
+    *(tint_symbol_4) = float4(x_173, x_173, x_173, x_173);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7c6e615
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,320 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 205
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %sums "sums"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %x_158 "x_158"
+               OpName %x_159_phi "x_159_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+         %28 = OpConstantNull %_arr_float_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %39 = OpConstantNull %mat2v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %44 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+        %193 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+       %sums = OpVariable %_ptr_Function__arr_float_uint_2 Function %28
+          %a = OpVariable %_ptr_Function_int Function %31
+          %b = OpVariable %_ptr_Function_int Function %31
+          %c = OpVariable %_ptr_Function_int Function %31
+          %d = OpVariable %_ptr_Function_int Function %31
+  %indexable = OpVariable %_ptr_Function_mat2v2float Function %39
+%indexable_1 = OpVariable %_ptr_Function_mat2v2float Function %39
+      %x_158 = OpVariable %_ptr_Function_bool Function %44
+  %x_159_phi = OpVariable %_ptr_Function_bool Function %44
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %54 = OpLoad %float %53
+         %56 = OpAccessChain %_ptr_Function_float %sums %50
+         %57 = OpFNegate %float %54
+               OpStore %56 %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Function_float %sums %60
+         %64 = OpFNegate %float %62
+               OpStore %63 %64
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+               OpStore %a %66
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %a
+         %72 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpSLessThan %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %68
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %79 = OpLoad %int %78
+               OpStore %b %79
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %b
+         %86 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %87 = OpLoad %int %86
+         %88 = OpSLessThan %bool %84 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+               OpBranch %89
+         %91 = OpLabel
+               OpBranch %81
+         %89 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %93 = OpLoad %int %92
+               OpStore %c %93
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+         %98 = OpLoad %int %c
+         %99 = OpLoad %int %a
+        %100 = OpSLessThanEqual %bool %98 %99
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %103
+        %102 = OpLabel
+               OpBranch %101
+        %103 = OpLabel
+               OpBranch %95
+        %101 = OpLabel
+        %104 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %105 = OpLoad %int %104
+               OpStore %d %105
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %d
+        %111 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %112 = OpLoad %int %111
+        %113 = OpSLessThan %bool %110 %112
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %115 = OpLabel
+               OpBranch %114
+        %116 = OpLabel
+               OpBranch %107
+        %114 = OpLabel
+        %117 = OpLoad %int %a
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %119
+        %121 = OpLoad %int %c
+        %122 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %123 = OpLoad %int %122
+        %125 = OpCompositeConstruct %v2float %120 %float_0
+        %126 = OpCompositeConstruct %v2float %float_0 %120
+        %127 = OpCompositeConstruct %mat2v2float %125 %126
+               OpStore %indexable %127
+        %128 = OpAccessChain %_ptr_Function_float %indexable %121 %123
+        %129 = OpLoad %float %128
+        %130 = OpAccessChain %_ptr_Function_float %sums %117
+               OpStore %130 %129
+        %131 = OpLoad %int %a
+        %132 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %133 = OpLoad %int %132
+        %134 = OpConvertSToF %float %133
+        %135 = OpLoad %int %c
+        %136 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %137 = OpLoad %int %136
+        %138 = OpCompositeConstruct %v2float %134 %float_0
+        %139 = OpCompositeConstruct %v2float %float_0 %134
+        %140 = OpCompositeConstruct %mat2v2float %138 %139
+               OpStore %indexable_1 %140
+        %141 = OpAccessChain %_ptr_Function_float %indexable_1 %135 %137
+        %142 = OpLoad %float %141
+        %143 = OpAccessChain %_ptr_Function_float %sums %131
+        %144 = OpLoad %float %143
+        %145 = OpAccessChain %_ptr_Function_float %sums %131
+        %146 = OpFAdd %float %144 %142
+               OpStore %145 %146
+               OpBranch %108
+        %108 = OpLabel
+        %147 = OpLoad %int %d
+        %148 = OpIAdd %int %147 %int_1
+               OpStore %d %148
+               OpBranch %106
+        %107 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+        %149 = OpLoad %int %c
+        %150 = OpIAdd %int %149 %int_1
+               OpStore %c %150
+               OpBranch %94
+         %95 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+        %151 = OpLoad %int %b
+        %152 = OpIAdd %int %151 %int_1
+               OpStore %b %152
+               OpBranch %80
+         %81 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+        %153 = OpLoad %int %a
+        %154 = OpIAdd %int %153 %int_1
+               OpStore %a %154
+               OpBranch %67
+         %68 = OpLabel
+        %155 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %156 = OpLoad %int %155
+        %157 = OpAccessChain %_ptr_Function_float %sums %156
+        %158 = OpLoad %float %157
+        %159 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %160 = OpLoad %float %159
+        %161 = OpFOrdEqual %bool %158 %160
+               OpStore %x_159_phi %161
+               OpSelectionMerge %162 None
+               OpBranchConditional %161 %163 %162
+        %163 = OpLabel
+        %164 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %165 = OpLoad %int %164
+        %166 = OpAccessChain %_ptr_Function_float %sums %165
+        %167 = OpLoad %float %166
+        %168 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %169 = OpLoad %float %168
+        %170 = OpFOrdEqual %bool %167 %169
+               OpStore %x_158 %170
+        %171 = OpLoad %bool %x_158
+               OpStore %x_159_phi %171
+               OpBranch %162
+        %162 = OpLabel
+        %172 = OpLoad %bool %x_159_phi
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %175
+        %174 = OpLabel
+        %176 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %177 = OpLoad %int %176
+        %178 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %179 = OpLoad %int %178
+        %180 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %181 = OpLoad %int %180
+        %182 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %183 = OpLoad %int %182
+        %184 = OpConvertSToF %float %177
+        %185 = OpConvertSToF %float %179
+        %186 = OpConvertSToF %float %181
+        %187 = OpConvertSToF %float %183
+        %188 = OpCompositeConstruct %v4float %184 %185 %186 %187
+               OpStore %x_GLF_color %188
+               OpBranch %173
+        %175 = OpLabel
+        %189 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %190 = OpLoad %int %189
+        %191 = OpConvertSToF %float %190
+        %192 = OpCompositeConstruct %v4float %191 %191 %191 %191
+               OpStore %x_GLF_color %192
+               OpBranch %173
+        %173 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %193
+%tint_symbol = OpFunctionParameter %main_out
+        %197 = OpLabel
+        %198 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %198
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %200 = OpLabel
+        %201 = OpFunctionCall %void %main_1
+        %203 = OpLoad %v4float %x_GLF_color
+        %204 = OpCompositeConstruct %main_out %203
+        %202 = OpFunctionCall %void %tint_symbol_2 %204
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..83081ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,150 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var sums : array<f32, 2>;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var d : i32;
+  var indexable : mat2x2<f32>;
+  var indexable_1 : mat2x2<f32>;
+  var x_158 : bool;
+  var x_159_phi : bool;
+  let x_16 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_85 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_16] = -(x_85);
+  let x_18 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_90 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_18] = -(x_90);
+  let x_19 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_19;
+  loop {
+    let x_20 : i32 = a;
+    let x_21 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_20 < x_21)) {
+    } else {
+      break;
+    }
+    let x_22 : i32 = x_6.x_GLF_uniform_int_values[1];
+    b = x_22;
+    loop {
+      let x_23 : i32 = b;
+      let x_24 : i32 = x_6.x_GLF_uniform_int_values[3];
+      if ((x_23 < x_24)) {
+      } else {
+        break;
+      }
+      let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+      c = x_25;
+      loop {
+        let x_26 : i32 = c;
+        let x_27 : i32 = a;
+        if ((x_26 <= x_27)) {
+        } else {
+          break;
+        }
+        let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+        d = x_28;
+        loop {
+          let x_29 : i32 = d;
+          let x_30 : i32 = x_6.x_GLF_uniform_int_values[3];
+          if ((x_29 < x_30)) {
+          } else {
+            break;
+          }
+          let x_31 : i32 = a;
+          let x_32 : i32 = x_6.x_GLF_uniform_int_values[2];
+          let x_125 : f32 = f32(x_32);
+          let x_33 : i32 = c;
+          let x_34 : i32 = x_6.x_GLF_uniform_int_values[2];
+          indexable = mat2x2<f32>(vec2<f32>(x_125, 0.0), vec2<f32>(0.0, x_125));
+          let x_131 : f32 = indexable[x_33][x_34];
+          sums[x_31] = x_131;
+          let x_35 : i32 = a;
+          let x_36 : i32 = x_6.x_GLF_uniform_int_values[2];
+          let x_134 : f32 = f32(x_36);
+          let x_37 : i32 = c;
+          let x_38 : i32 = x_6.x_GLF_uniform_int_values[2];
+          indexable_1 = mat2x2<f32>(vec2<f32>(x_134, 0.0), vec2<f32>(0.0, x_134));
+          let x_140 : f32 = indexable_1[x_37][x_38];
+          let x_142 : f32 = sums[x_35];
+          sums[x_35] = (x_142 + x_140);
+
+          continuing {
+            let x_39 : i32 = d;
+            d = (x_39 + 1);
+          }
+        }
+
+        continuing {
+          let x_41 : i32 = c;
+          c = (x_41 + 1);
+        }
+      }
+
+      continuing {
+        let x_43 : i32 = b;
+        b = (x_43 + 1);
+      }
+    }
+
+    continuing {
+      let x_45 : i32 = a;
+      a = (x_45 + 1);
+    }
+  }
+  let x_47 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_147 : f32 = sums[x_47];
+  let x_149 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_150 : bool = (x_147 == x_149);
+  x_159_phi = x_150;
+  if (x_150) {
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_155 : f32 = sums[x_48];
+    let x_157 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_158 = (x_155 == x_157);
+    x_159_phi = x_158;
+  }
+  let x_159 : bool = x_159_phi;
+  if (x_159) {
+    let x_49 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_49), f32(x_50), f32(x_51), f32(x_52));
+  } else {
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_173 : f32 = f32(x_53);
+    x_GLF_color = vec4<f32>(x_173, x_173, x_173, x_173);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm
new file mode 100644
index 0000000..f91310b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm
@@ -0,0 +1,74 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+%float_142_699997 = OpConstant %float 142.699997
+        %int = OpTypeInt 32 1
+  %float_100 = OpConstant %float 100
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %9
+         %24 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+               OpStore %f %float_142_699997
+         %25 = OpLoad %float %f
+         %26 = OpConvertFToS %int %25
+         %27 = OpConvertSToF %float %26
+         %28 = OpFOrdGreaterThan %bool %27 %float_100
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %31
+         %30 = OpLabel
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %33 = OpLoad %int %32
+         %34 = OpConvertSToF %float %33
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %36 = OpLoad %int %35
+         %37 = OpConvertSToF %float %36
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpConvertSToF %float %39
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpCompositeConstruct %v4float %34 %37 %40 %43
+               OpStore %_GLF_color %44
+               OpBranch %29
+         %31 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %47 %47 %47 %47
+               OpStore %_GLF_color %48
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..77a66e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  f = 142.699996948f;
+  if ((float(int(f)) > 100.0f)) {
+    const int x_33 = asint(x_6[1].x);
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_36 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_39 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_42 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_33), float(x_36), float(x_39), float(x_42));
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_47 = float(x_46);
+    x_GLF_color = float4(x_47, x_47, x_47, x_47);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..739634a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  f = 142.699996948f;
+  float const x_25 = f;
+  if ((float(int(x_25)) > 100.0f)) {
+    int const x_33 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_39 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_33), float(x_36), float(x_39), float(x_42));
+  } else {
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_47 = float(x_46);
+    *(tint_symbol_4) = float4(x_47, x_47, x_47, x_47);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7f8bc30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+%float_142_699997 = OpConstant %float 142.699997
+  %float_100 = OpConstant %float 100
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %21
+               OpStore %f %float_142_699997
+         %23 = OpLoad %float %f
+         %25 = OpConvertFToS %int %23
+         %24 = OpConvertSToF %float %25
+         %27 = OpFOrdGreaterThan %bool %24 %float_100
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %36 = OpLoad %int %35
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %36
+         %45 = OpConvertSToF %float %39
+         %46 = OpConvertSToF %float %41
+         %47 = OpConvertSToF %float %43
+         %48 = OpCompositeConstruct %v4float %44 %45 %46 %47
+               OpStore %x_GLF_color %48
+               OpBranch %29
+         %31 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpCompositeConstruct %v4float %51 %51 %51 %51
+               OpStore %x_GLF_color %52
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f7217b1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,39 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var f : f32;
+  f = 142.699996948;
+  let x_25 : f32 = f;
+  if ((f32(i32(x_25)) > 100.0)) {
+    let x_33 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_33), f32(x_36), f32(x_39), f32(x_42));
+  } else {
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_47 : f32 = f32(x_46);
+    x_GLF_color = vec4<f32>(x_47, x_47, x_47, x_47);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
new file mode 100644
index 0000000..f7217b1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
@@ -0,0 +1,39 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var f : f32;
+  f = 142.699996948;
+  let x_25 : f32 = f;
+  if ((f32(i32(x_25)) > 100.0)) {
+    let x_33 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_33), f32(x_36), f32(x_39), f32(x_42));
+  } else {
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_47 : f32 = f32(x_46);
+    x_GLF_color = vec4<f32>(x_47, x_47, x_47, x_47);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..77a66e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  f = 142.699996948f;
+  if ((float(int(f)) > 100.0f)) {
+    const int x_33 = asint(x_6[1].x);
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_36 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_39 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_42 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_33), float(x_36), float(x_39), float(x_42));
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_47 = float(x_46);
+    x_GLF_color = float4(x_47, x_47, x_47, x_47);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..739634a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  f = 142.699996948f;
+  float const x_25 = f;
+  if ((float(int(x_25)) > 100.0f)) {
+    int const x_33 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_39 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_33), float(x_36), float(x_39), float(x_42));
+  } else {
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_47 = float(x_46);
+    *(tint_symbol_4) = float4(x_47, x_47, x_47, x_47);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7f8bc30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+%float_142_699997 = OpConstant %float 142.699997
+  %float_100 = OpConstant %float 100
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %21
+               OpStore %f %float_142_699997
+         %23 = OpLoad %float %f
+         %25 = OpConvertFToS %int %23
+         %24 = OpConvertSToF %float %25
+         %27 = OpFOrdGreaterThan %bool %24 %float_100
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %36 = OpLoad %int %35
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %36
+         %45 = OpConvertSToF %float %39
+         %46 = OpConvertSToF %float %41
+         %47 = OpConvertSToF %float %43
+         %48 = OpCompositeConstruct %v4float %44 %45 %46 %47
+               OpStore %x_GLF_color %48
+               OpBranch %29
+         %31 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpCompositeConstruct %v4float %51 %51 %51 %51
+               OpStore %x_GLF_color %52
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f7217b1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,39 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var f : f32;
+  f = 142.699996948;
+  let x_25 : f32 = f;
+  if ((f32(i32(x_25)) > 100.0)) {
+    let x_33 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_33), f32(x_36), f32(x_39), f32(x_42));
+  } else {
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_47 : f32 = f32(x_46);
+    x_GLF_color = vec4<f32>(x_47, x_47, x_47, x_47);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm
new file mode 100644
index 0000000..c832ba4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm
@@ -0,0 +1,148 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %sums "sums"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %indexable "indexable"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%mat2v4float = OpTypeMatrix %v4float 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %38 = OpLabel
+       %sums = OpVariable %_ptr_Function__arr_float_uint_3 Function
+          %i = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function_mat2v4float Function
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpCompositeConstruct %_arr_float_uint_3 %40 %42 %44
+               OpStore %sums %45
+               OpStore %i %int_0
+               OpBranch %46
+         %46 = OpLabel
+               OpLoopMerge %47 %48 None
+               OpBranch %49
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpExtInst %int %1 SClamp %52 %54 %int_2
+         %56 = OpSLessThan %bool %50 %55
+               OpBranchConditional %56 %57 %47
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpCompositeConstruct %v4float %61 %float_0 %float_0 %float_0
+         %63 = OpCompositeConstruct %v4float %float_0 %61 %float_0 %float_0
+         %64 = OpCompositeConstruct %mat2v4float %62 %63
+         %65 = OpLoad %int %i
+         %66 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %67 = OpLoad %int %66
+               OpStore %indexable %64
+         %68 = OpAccessChain %_ptr_Function_float %indexable %65 %67
+         %69 = OpLoad %float %68
+         %70 = OpAccessChain %_ptr_Function_float %sums %59
+         %71 = OpLoad %float %70
+         %72 = OpFAdd %float %71 %69
+         %73 = OpAccessChain %_ptr_Function_float %sums %59
+               OpStore %73 %72
+               OpBranch %48
+         %48 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %i %75
+               OpBranch %46
+         %47 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Function_float %sums %77
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %81 = OpLoad %float %80
+         %82 = OpFOrdEqual %bool %79 %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %87
+         %89 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %90
+         %92 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %93 = OpLoad %int %92
+         %94 = OpConvertSToF %float %93
+         %95 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %96 = OpLoad %int %95
+         %97 = OpConvertSToF %float %96
+         %98 = OpCompositeConstruct %v4float %88 %91 %94 %97
+               OpStore %_GLF_color %98
+               OpBranch %83
+         %85 = OpLabel
+         %99 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %100
+        %102 = OpCompositeConstruct %v4float %101 %101 %101 %101
+               OpStore %_GLF_color %102
+               OpBranch %83
+         %83 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d99ee63
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,76 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float sums[3] = (float[3])0;
+  int i = 0;
+  float2x4 indexable = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float tint_symbol_4[3] = {x_40, x_42, x_44};
+  sums = tint_symbol_4;
+  i = 0;
+  while (true) {
+    const int x_50 = i;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_9[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    if ((x_50 < clamp(x_52, x_54, 2))) {
+    } else {
+      break;
+    }
+    const int x_59 = asint(x_9[2].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_61 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_65 = i;
+    const int x_67 = asint(x_9[1].x);
+    indexable = float2x4(float4(x_61, 0.0f, 0.0f, 0.0f), float4(0.0f, x_61, 0.0f, 0.0f));
+    const float x_69 = indexable[x_65][x_67];
+    const float x_71 = sums[x_59];
+    sums[x_59] = (x_71 + x_69);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_77 = asint(x_9[2].x);
+  const float x_79 = sums[x_77];
+  const float x_81 = asfloat(x_6[1].x);
+  if ((x_79 == x_81)) {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_87 = asint(x_9[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const int x_90 = asint(x_9[1].x);
+    const int x_93 = asint(x_9[1].x);
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_96 = asint(x_9[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    x_GLF_color = float4(float(x_87), float(x_90), float(x_93), float(x_96));
+  } else {
+    const int x_100 = asint(x_9[1].x);
+    const float x_101 = float(x_100);
+    x_GLF_color = float4(x_101, x_101, x_101, x_101);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d993da9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.msl
@@ -0,0 +1,89 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 sums = {};
+  int i = 0;
+  float2x4 indexable = float2x4(0.0f);
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_40, x_42, x_44}};
+  sums = tint_symbol_3;
+  i = 0;
+  while (true) {
+    int const x_50 = i;
+    int const x_52 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_54 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_50 < clamp(x_52, x_54, 2))) {
+    } else {
+      break;
+    }
+    int const x_59 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_61 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    int const x_65 = i;
+    int const x_67 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    indexable = float2x4(float4(x_61, 0.0f, 0.0f, 0.0f), float4(0.0f, x_61, 0.0f, 0.0f));
+    float const x_69 = indexable[x_65][x_67];
+    float const x_71 = sums.arr[x_59];
+    sums.arr[x_59] = (x_71 + x_69);
+    {
+      int const x_74 = i;
+      i = (x_74 + 1);
+    }
+  }
+  int const x_77 = x_9.x_GLF_uniform_int_values.arr[2].el;
+  float const x_79 = sums.arr[x_77];
+  float const x_81 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_79 == x_81)) {
+    int const x_87 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_90 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_93 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_96 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_87), float(x_90), float(x_93), float(x_96));
+  } else {
+    int const x_100 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_101 = float(x_100);
+    *(tint_symbol_5) = float4(x_101, x_101, x_101, x_101);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9bb7464
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,190 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 123
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %sums "sums"
+               OpName %i "i"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+         %27 = OpConstantNull %_arr_float_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+%mat2v4float = OpTypeMatrix %v4float 2
+%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
+         %34 = OpConstantNull %mat2v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+        %111 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+       %sums = OpVariable %_ptr_Function__arr_float_uint_3 Function %27
+          %i = OpVariable %_ptr_Function_int Function %30
+  %indexable = OpVariable %_ptr_Function_mat2v4float Function %34
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpCompositeConstruct %_arr_float_uint_3 %39 %41 %43
+               OpStore %sums %44
+               OpStore %i %int_0
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpExtInst %int %56 SClamp %52 %54 %int_2
+         %58 = OpSLessThan %bool %49 %55
+               OpSelectionMerge %60 None
+               OpBranchConditional %58 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %46
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpLoad %int %i
+         %69 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %70 = OpLoad %int %69
+         %72 = OpCompositeConstruct %v4float %66 %float_0 %float_0 %float_0
+         %73 = OpCompositeConstruct %v4float %float_0 %66 %float_0 %float_0
+         %74 = OpCompositeConstruct %mat2v4float %72 %73
+               OpStore %indexable %74
+         %76 = OpAccessChain %_ptr_Function_float %indexable %67 %70
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Function_float %sums %64
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Function_float %sums %64
+         %81 = OpFAdd %float %79 %77
+               OpStore %80 %81
+               OpBranch %47
+         %47 = OpLabel
+         %82 = OpLoad %int %i
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %i %83
+               OpBranch %45
+         %46 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Function_float %sums %85
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %89 = OpLoad %float %88
+         %90 = OpFOrdEqual %bool %87 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %93
+         %92 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %101 = OpLoad %int %100
+        %102 = OpConvertSToF %float %95
+        %103 = OpConvertSToF %float %97
+        %104 = OpConvertSToF %float %99
+        %105 = OpConvertSToF %float %101
+        %106 = OpCompositeConstruct %v4float %102 %103 %104 %105
+               OpStore %x_GLF_color %106
+               OpBranch %91
+         %93 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %108 = OpLoad %int %107
+        %109 = OpConvertSToF %float %108
+        %110 = OpCompositeConstruct %v4float %109 %109 %109 %109
+               OpStore %x_GLF_color %110
+               OpBranch %91
+         %91 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %111
+%tint_symbol = OpFunctionParameter %main_out
+        %115 = OpLabel
+        %116 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %116
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %118 = OpLabel
+        %119 = OpFunctionCall %void %main_1
+        %121 = OpLoad %v4float %x_GLF_color
+        %122 = OpCompositeConstruct %main_out %121
+        %120 = OpFunctionCall %void %tint_symbol_2 %122
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..07d81cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var sums : array<f32, 3>;
+  var i : i32;
+  var indexable : mat2x4<f32>;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  sums = array<f32, 3>(x_40, x_42, x_44);
+  i = 0;
+  loop {
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_54 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_50 < clamp(x_52, x_54, 2))) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_61 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_65 : i32 = i;
+    let x_67 : i32 = x_9.x_GLF_uniform_int_values[1];
+    indexable = mat2x4<f32>(vec4<f32>(x_61, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_61, 0.0, 0.0));
+    let x_69 : f32 = indexable[x_65][x_67];
+    let x_71 : f32 = sums[x_59];
+    sums[x_59] = (x_71 + x_69);
+
+    continuing {
+      let x_74 : i32 = i;
+      i = (x_74 + 1);
+    }
+  }
+  let x_77 : i32 = x_9.x_GLF_uniform_int_values[2];
+  let x_79 : f32 = sums[x_77];
+  let x_81 : f32 = x_6.x_GLF_uniform_float_values[1];
+  if ((x_79 == x_81)) {
+    let x_87 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_90 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_93 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_96 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_87), f32(x_90), f32(x_93), f32(x_96));
+  } else {
+    let x_100 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_101 : f32 = f32(x_100);
+    x_GLF_color = vec4<f32>(x_101, x_101, x_101, x_101);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
new file mode 100644
index 0000000..07d81cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var sums : array<f32, 3>;
+  var i : i32;
+  var indexable : mat2x4<f32>;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  sums = array<f32, 3>(x_40, x_42, x_44);
+  i = 0;
+  loop {
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_54 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_50 < clamp(x_52, x_54, 2))) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_61 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_65 : i32 = i;
+    let x_67 : i32 = x_9.x_GLF_uniform_int_values[1];
+    indexable = mat2x4<f32>(vec4<f32>(x_61, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_61, 0.0, 0.0));
+    let x_69 : f32 = indexable[x_65][x_67];
+    let x_71 : f32 = sums[x_59];
+    sums[x_59] = (x_71 + x_69);
+
+    continuing {
+      let x_74 : i32 = i;
+      i = (x_74 + 1);
+    }
+  }
+  let x_77 : i32 = x_9.x_GLF_uniform_int_values[2];
+  let x_79 : f32 = sums[x_77];
+  let x_81 : f32 = x_6.x_GLF_uniform_float_values[1];
+  if ((x_79 == x_81)) {
+    let x_87 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_90 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_93 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_96 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_87), f32(x_90), f32(x_93), f32(x_96));
+  } else {
+    let x_100 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_101 : f32 = f32(x_100);
+    x_GLF_color = vec4<f32>(x_101, x_101, x_101, x_101);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d99ee63
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,76 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float sums[3] = (float[3])0;
+  int i = 0;
+  float2x4 indexable = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float tint_symbol_4[3] = {x_40, x_42, x_44};
+  sums = tint_symbol_4;
+  i = 0;
+  while (true) {
+    const int x_50 = i;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_9[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    if ((x_50 < clamp(x_52, x_54, 2))) {
+    } else {
+      break;
+    }
+    const int x_59 = asint(x_9[2].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_61 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_65 = i;
+    const int x_67 = asint(x_9[1].x);
+    indexable = float2x4(float4(x_61, 0.0f, 0.0f, 0.0f), float4(0.0f, x_61, 0.0f, 0.0f));
+    const float x_69 = indexable[x_65][x_67];
+    const float x_71 = sums[x_59];
+    sums[x_59] = (x_71 + x_69);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_77 = asint(x_9[2].x);
+  const float x_79 = sums[x_77];
+  const float x_81 = asfloat(x_6[1].x);
+  if ((x_79 == x_81)) {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_87 = asint(x_9[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const int x_90 = asint(x_9[1].x);
+    const int x_93 = asint(x_9[1].x);
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_96 = asint(x_9[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    x_GLF_color = float4(float(x_87), float(x_90), float(x_93), float(x_96));
+  } else {
+    const int x_100 = asint(x_9[1].x);
+    const float x_101 = float(x_100);
+    x_GLF_color = float4(x_101, x_101, x_101, x_101);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d993da9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.msl
@@ -0,0 +1,89 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 sums = {};
+  int i = 0;
+  float2x4 indexable = float2x4(0.0f);
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_40, x_42, x_44}};
+  sums = tint_symbol_3;
+  i = 0;
+  while (true) {
+    int const x_50 = i;
+    int const x_52 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_54 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_50 < clamp(x_52, x_54, 2))) {
+    } else {
+      break;
+    }
+    int const x_59 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_61 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    int const x_65 = i;
+    int const x_67 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    indexable = float2x4(float4(x_61, 0.0f, 0.0f, 0.0f), float4(0.0f, x_61, 0.0f, 0.0f));
+    float const x_69 = indexable[x_65][x_67];
+    float const x_71 = sums.arr[x_59];
+    sums.arr[x_59] = (x_71 + x_69);
+    {
+      int const x_74 = i;
+      i = (x_74 + 1);
+    }
+  }
+  int const x_77 = x_9.x_GLF_uniform_int_values.arr[2].el;
+  float const x_79 = sums.arr[x_77];
+  float const x_81 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_79 == x_81)) {
+    int const x_87 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_90 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_93 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_96 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_87), float(x_90), float(x_93), float(x_96));
+  } else {
+    int const x_100 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_101 = float(x_100);
+    *(tint_symbol_5) = float4(x_101, x_101, x_101, x_101);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9bb7464
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,190 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 123
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %sums "sums"
+               OpName %i "i"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+         %27 = OpConstantNull %_arr_float_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+%mat2v4float = OpTypeMatrix %v4float 2
+%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
+         %34 = OpConstantNull %mat2v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+        %111 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+       %sums = OpVariable %_ptr_Function__arr_float_uint_3 Function %27
+          %i = OpVariable %_ptr_Function_int Function %30
+  %indexable = OpVariable %_ptr_Function_mat2v4float Function %34
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpCompositeConstruct %_arr_float_uint_3 %39 %41 %43
+               OpStore %sums %44
+               OpStore %i %int_0
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpExtInst %int %56 SClamp %52 %54 %int_2
+         %58 = OpSLessThan %bool %49 %55
+               OpSelectionMerge %60 None
+               OpBranchConditional %58 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %46
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpLoad %int %i
+         %69 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %70 = OpLoad %int %69
+         %72 = OpCompositeConstruct %v4float %66 %float_0 %float_0 %float_0
+         %73 = OpCompositeConstruct %v4float %float_0 %66 %float_0 %float_0
+         %74 = OpCompositeConstruct %mat2v4float %72 %73
+               OpStore %indexable %74
+         %76 = OpAccessChain %_ptr_Function_float %indexable %67 %70
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Function_float %sums %64
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Function_float %sums %64
+         %81 = OpFAdd %float %79 %77
+               OpStore %80 %81
+               OpBranch %47
+         %47 = OpLabel
+         %82 = OpLoad %int %i
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %i %83
+               OpBranch %45
+         %46 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Function_float %sums %85
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %89 = OpLoad %float %88
+         %90 = OpFOrdEqual %bool %87 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %93
+         %92 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %101 = OpLoad %int %100
+        %102 = OpConvertSToF %float %95
+        %103 = OpConvertSToF %float %97
+        %104 = OpConvertSToF %float %99
+        %105 = OpConvertSToF %float %101
+        %106 = OpCompositeConstruct %v4float %102 %103 %104 %105
+               OpStore %x_GLF_color %106
+               OpBranch %91
+         %93 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %108 = OpLoad %int %107
+        %109 = OpConvertSToF %float %108
+        %110 = OpCompositeConstruct %v4float %109 %109 %109 %109
+               OpStore %x_GLF_color %110
+               OpBranch %91
+         %91 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %111
+%tint_symbol = OpFunctionParameter %main_out
+        %115 = OpLabel
+        %116 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %116
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %118 = OpLabel
+        %119 = OpFunctionCall %void %main_1
+        %121 = OpLoad %v4float %x_GLF_color
+        %122 = OpCompositeConstruct %main_out %121
+        %120 = OpFunctionCall %void %tint_symbol_2 %122
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..07d81cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var sums : array<f32, 3>;
+  var i : i32;
+  var indexable : mat2x4<f32>;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  sums = array<f32, 3>(x_40, x_42, x_44);
+  i = 0;
+  loop {
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_54 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_50 < clamp(x_52, x_54, 2))) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_61 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_65 : i32 = i;
+    let x_67 : i32 = x_9.x_GLF_uniform_int_values[1];
+    indexable = mat2x4<f32>(vec4<f32>(x_61, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_61, 0.0, 0.0));
+    let x_69 : f32 = indexable[x_65][x_67];
+    let x_71 : f32 = sums[x_59];
+    sums[x_59] = (x_71 + x_69);
+
+    continuing {
+      let x_74 : i32 = i;
+      i = (x_74 + 1);
+    }
+  }
+  let x_77 : i32 = x_9.x_GLF_uniform_int_values[2];
+  let x_79 : f32 = sums[x_77];
+  let x_81 : f32 = x_6.x_GLF_uniform_float_values[1];
+  if ((x_79 == x_81)) {
+    let x_87 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_90 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_93 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_96 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_87), f32(x_90), f32(x_93), f32(x_96));
+  } else {
+    let x_100 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_101 : f32 = f32(x_100);
+    x_GLF_color = vec4<f32>(x_101, x_101, x_101, x_101);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm
new file mode 100644
index 0000000..3b37d9a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm
@@ -0,0 +1,97 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %13
+         %31 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+          %b = OpVariable %_ptr_Function_float Function
+               OpStore %a %float_1
+         %32 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %33 = OpLoad %float %32
+         %34 = OpLoad %float %a
+         %35 = OpSelect %float %false %34 %float_0
+         %36 = OpExtInst %float %1 FClamp %33 %35 %float_1
+               OpStore %b %36
+         %37 = OpLoad %float %b
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdEqual %bool %37 %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+         %44 = OpLoad %float %b
+         %45 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %46 = OpLoad %float %45
+         %47 = OpFMul %float %44 %46
+         %48 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpCompositeConstruct %v4float %47 %50 %53 %56
+               OpStore %_GLF_color %57
+               OpBranch %41
+         %43 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %60 %60 %60 %60
+               OpStore %_GLF_color %61
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9f5ecd9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,48 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  a = 1.0f;
+  const float x_33 = asfloat(x_7[1].x);
+  b = clamp(x_33, (false ? a : 0.0f), 1.0f);
+  const float x_37 = b;
+  const float x_39 = asfloat(x_7[1].x);
+  if ((x_37 == x_39)) {
+    const float x_44 = b;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_46 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_55 = asint(x_9[1].x);
+    x_GLF_color = float4((x_44 * x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_60 = float(x_59);
+    x_GLF_color = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..526c96a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.msl
@@ -0,0 +1,62 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float b = 0.0f;
+  a = 1.0f;
+  float const x_33 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_34 = a;
+  b = clamp(x_33, select(0.0f, x_34, false), 1.0f);
+  float const x_37 = b;
+  float const x_39 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_37 == x_39)) {
+    float const x_44 = b;
+    float const x_46 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    int const x_49 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_52 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_55 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4((x_44 * x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    int const x_59 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    float const x_60 = float(x_59);
+    *(tint_symbol_4) = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..81d2e09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,132 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+         %35 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %25
+          %b = OpVariable %_ptr_Function_float Function %25
+               OpStore %a %float_1
+         %31 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %32 = OpLoad %float %31
+         %33 = OpLoad %float %a
+         %36 = OpSelect %float %false %33 %float_0
+         %34 = OpExtInst %float %35 NClamp %32 %36 %float_1
+               OpStore %b %34
+         %40 = OpLoad %float %b
+         %41 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %42 = OpLoad %float %41
+         %43 = OpFOrdEqual %bool %40 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+         %47 = OpLoad %float %b
+         %49 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpFMul %float %47 %50
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %44
+         %46 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %44
+         %44 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..883179d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  a = 1.0;
+  let x_33 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_34 : f32 = a;
+  b = clamp(x_33, select(0.0, x_34, false), 1.0);
+  let x_37 : f32 = b;
+  let x_39 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((x_37 == x_39)) {
+    let x_44 : f32 = b;
+    let x_46 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_49 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>((x_44 * x_46), f32(x_49), f32(x_52), f32(x_55));
+  } else {
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_60 : f32 = f32(x_59);
+    x_GLF_color = vec4<f32>(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
new file mode 100644
index 0000000..883179d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  a = 1.0;
+  let x_33 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_34 : f32 = a;
+  b = clamp(x_33, select(0.0, x_34, false), 1.0);
+  let x_37 : f32 = b;
+  let x_39 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((x_37 == x_39)) {
+    let x_44 : f32 = b;
+    let x_46 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_49 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>((x_44 * x_46), f32(x_49), f32(x_52), f32(x_55));
+  } else {
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_60 : f32 = f32(x_59);
+    x_GLF_color = vec4<f32>(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9f5ecd9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,48 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  a = 1.0f;
+  const float x_33 = asfloat(x_7[1].x);
+  b = clamp(x_33, (false ? a : 0.0f), 1.0f);
+  const float x_37 = b;
+  const float x_39 = asfloat(x_7[1].x);
+  if ((x_37 == x_39)) {
+    const float x_44 = b;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_46 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_55 = asint(x_9[1].x);
+    x_GLF_color = float4((x_44 * x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_60 = float(x_59);
+    x_GLF_color = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..526c96a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.msl
@@ -0,0 +1,62 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float b = 0.0f;
+  a = 1.0f;
+  float const x_33 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_34 = a;
+  b = clamp(x_33, select(0.0f, x_34, false), 1.0f);
+  float const x_37 = b;
+  float const x_39 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_37 == x_39)) {
+    float const x_44 = b;
+    float const x_46 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    int const x_49 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_52 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_55 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4((x_44 * x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    int const x_59 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    float const x_60 = float(x_59);
+    *(tint_symbol_4) = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..81d2e09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,132 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+         %35 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %25
+          %b = OpVariable %_ptr_Function_float Function %25
+               OpStore %a %float_1
+         %31 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %32 = OpLoad %float %31
+         %33 = OpLoad %float %a
+         %36 = OpSelect %float %false %33 %float_0
+         %34 = OpExtInst %float %35 NClamp %32 %36 %float_1
+               OpStore %b %34
+         %40 = OpLoad %float %b
+         %41 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %42 = OpLoad %float %41
+         %43 = OpFOrdEqual %bool %40 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+         %47 = OpLoad %float %b
+         %49 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpFMul %float %47 %50
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %44
+         %46 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %44
+         %44 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..883179d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  a = 1.0;
+  let x_33 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_34 : f32 = a;
+  b = clamp(x_33, select(0.0, x_34, false), 1.0);
+  let x_37 : f32 = b;
+  let x_39 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((x_37 == x_39)) {
+    let x_44 : f32 = b;
+    let x_46 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_49 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>((x_44 * x_46), f32(x_49), f32(x_52), f32(x_55));
+  } else {
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_60 : f32 = f32(x_59);
+    x_GLF_color = vec4<f32>(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm
new file mode 100644
index 0000000..4885ce2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm
@@ -0,0 +1,184 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf1 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+%mat4v4float = OpTypeMatrix %v4float 4
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %13
+         %38 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+          %i = OpVariable %_ptr_Function_int Function
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpCompositeConstruct %v4float %41 %44 %47 %50
+               OpStore %v %51
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %53 = OpLoad %int %52
+               OpStore %i %53
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpSLessThan %bool %58 %60
+               OpBranchConditional %61 %62 %55
+         %62 = OpLabel
+         %63 = OpLoad %v4float %v
+         %64 = OpLoad %v4float %v
+         %65 = OpLoad %v4float %v
+         %66 = OpLoad %v4float %v
+         %67 = OpCompositeExtract %float %63 0
+         %68 = OpCompositeExtract %float %63 1
+         %69 = OpCompositeExtract %float %63 2
+         %70 = OpCompositeExtract %float %63 3
+         %71 = OpCompositeExtract %float %64 0
+         %72 = OpCompositeExtract %float %64 1
+         %73 = OpCompositeExtract %float %64 2
+         %74 = OpCompositeExtract %float %64 3
+         %75 = OpCompositeExtract %float %65 0
+         %76 = OpCompositeExtract %float %65 1
+         %77 = OpCompositeExtract %float %65 2
+         %78 = OpCompositeExtract %float %65 3
+         %79 = OpCompositeExtract %float %66 0
+         %80 = OpCompositeExtract %float %66 1
+         %81 = OpCompositeExtract %float %66 2
+         %82 = OpCompositeExtract %float %66 3
+         %83 = OpCompositeConstruct %v4float %67 %68 %69 %70
+         %84 = OpCompositeConstruct %v4float %71 %72 %73 %74
+         %85 = OpCompositeConstruct %v4float %75 %76 %77 %78
+         %86 = OpCompositeConstruct %v4float %79 %80 %81 %82
+         %87 = OpCompositeConstruct %mat4v4float %83 %84 %85 %86
+         %88 = OpLoad %int %i
+         %89 = OpCompositeExtract %v4float %87 0
+         %90 = OpVectorExtractDynamic %float %89 %88
+         %91 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %92 = OpLoad %float %91
+         %93 = OpFOrdGreaterThan %bool %90 %92
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+         %96 = OpLoad %int %i
+         %97 = OpLoad %v4float %v
+         %98 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %99 = OpLoad %float %98
+        %100 = OpCompositeConstruct %v4float %99 %99 %99 %99
+        %101 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+        %102 = OpLoad %float %101
+        %103 = OpCompositeConstruct %v4float %102 %102 %102 %102
+        %104 = OpExtInst %v4float %1 FClamp %97 %100 %103
+        %105 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %106 = OpLoad %int %105
+        %107 = OpVectorExtractDynamic %float %104 %106
+        %108 = OpAccessChain %_ptr_Function_float %v %96
+               OpStore %108 %107
+               OpBranch %94
+         %94 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+        %109 = OpLoad %int %i
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %i %110
+               OpBranch %54
+         %55 = OpLabel
+        %111 = OpLoad %v4float %v
+        %112 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %113
+        %115 = OpCompositeConstruct %v4float %114 %114 %114 %114
+        %116 = OpFOrdEqual %v4bool %111 %115
+        %117 = OpAll %bool %116
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %120
+        %119 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %122 = OpLoad %int %121
+        %123 = OpConvertSToF %float %122
+        %124 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+        %125 = OpLoad %int %124
+        %126 = OpConvertSToF %float %125
+        %127 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+        %128 = OpLoad %int %127
+        %129 = OpConvertSToF %float %128
+        %130 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %131 = OpLoad %int %130
+        %132 = OpConvertSToF %float %131
+        %133 = OpCompositeConstruct %v4float %123 %126 %129 %132
+               OpStore %_GLF_color %133
+               OpBranch %118
+        %120 = OpLabel
+        %134 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+        %135 = OpLoad %int %134
+        %136 = OpConvertSToF %float %135
+        %137 = OpCompositeConstruct %v4float %136 %136 %136 %136
+               OpStore %_GLF_color %137
+               OpBranch %118
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2f20f12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,81 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[5];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  const int x_40 = asint(x_6[1].x);
+  const int x_43 = asint(x_6[2].x);
+  const int x_46 = asint(x_6[3].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_49 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v = float4(float(x_40), float(x_43), float(x_46), float(x_49));
+  const int x_53 = asint(x_6[4].x);
+  i = x_53;
+  while (true) {
+    const int x_58 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    const float4 x_63 = v;
+    const float4 x_64 = v;
+    const float4 x_65 = v;
+    const float4 x_66 = v;
+    const int x_88 = i;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_92 = asfloat(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((float4x4(float4(x_63.x, x_63.y, x_63.z, x_63.w), float4(x_64.x, x_64.y, x_64.z, x_64.w), float4(x_65.x, x_65.y, x_65.z, x_65.w), float4(x_66.x, x_66.y, x_66.z, x_66.w))[0u][x_88] > x_92)) {
+      const int x_96 = i;
+      const float4 x_97 = v;
+      const float x_99 = asfloat(x_9[1].x);
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const float x_102 = asfloat(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      const int x_106 = asint(x_6[1].x);
+      set_float4(v, x_96, clamp(x_97, float4(x_99, x_99, x_99, x_99), float4(x_102, x_102, x_102, x_102))[x_106]);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const float4 x_111 = v;
+  const int x_113 = asint(x_6[1].x);
+  const float x_114 = float(x_113);
+  if (all((x_111 == float4(x_114, x_114, x_114, x_114)))) {
+    const int x_122 = asint(x_6[1].x);
+    const int x_125 = asint(x_6[4].x);
+    const int x_128 = asint(x_6[4].x);
+    const int x_131 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_122), float(x_125), float(x_128), float(x_131));
+  } else {
+    const int x_135 = asint(x_6[4].x);
+    const float x_136 = float(x_135);
+    x_GLF_color = float4(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3c693a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  int i = 0;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_43 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_49 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  v = float4(float(x_40), float(x_43), float(x_46), float(x_49));
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  i = x_53;
+  while (true) {
+    int const x_58 = i;
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    float4 const x_63 = v;
+    float4 const x_64 = v;
+    float4 const x_65 = v;
+    float4 const x_66 = v;
+    int const x_88 = i;
+    float const x_92 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    if ((float4x4(float4(x_63.x, x_63.y, x_63.z, x_63.w), float4(x_64.x, x_64.y, x_64.z, x_64.w), float4(x_65.x, x_65.y, x_65.z, x_65.w), float4(x_66.x, x_66.y, x_66.z, x_66.w))[0u][x_88] > x_92)) {
+      int const x_96 = i;
+      float4 const x_97 = v;
+      float const x_99 = x_9.x_GLF_uniform_float_values.arr[1].el;
+      float const x_102 = x_9.x_GLF_uniform_float_values.arr[0].el;
+      int const x_106 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      v[x_96] = clamp(x_97, float4(x_99, x_99, x_99, x_99), float4(x_102, x_102, x_102, x_102))[x_106];
+    }
+    {
+      int const x_109 = i;
+      i = (x_109 + 1);
+    }
+  }
+  float4 const x_111 = v;
+  int const x_113 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_114 = float(x_113);
+  if (all((x_111 == float4(x_114, x_114, x_114, x_114)))) {
+    int const x_122 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_125 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_128 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_131 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_122), float(x_125), float(x_128), float(x_131));
+  } else {
+    int const x_135 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    float const x_136 = float(x_135);
+    *(tint_symbol_4) = float4(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..fa87ce8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,222 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 155
+; Schema: 0
+               OpCapability Shader
+        %109 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf1 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_float = OpTypePointer Function %float
+     %v4bool = OpTypeVector %bool 4
+   %main_out = OpTypeStruct %v4float
+        %143 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %17
+          %i = OpVariable %_ptr_Function_int Function %28
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %36 = OpLoad %int %35
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %39 = OpLoad %int %38
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %33
+         %44 = OpConvertSToF %float %36
+         %45 = OpConvertSToF %float %39
+         %46 = OpConvertSToF %float %42
+         %47 = OpCompositeConstruct %v4float %43 %44 %45 %46
+               OpStore %v %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %50 = OpLoad %int %49
+               OpStore %i %50
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpSLessThan %bool %55 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %58 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %52
+         %60 = OpLabel
+         %63 = OpLoad %v4float %v
+         %64 = OpLoad %v4float %v
+         %65 = OpLoad %v4float %v
+         %66 = OpLoad %v4float %v
+         %67 = OpLoad %int %i
+         %69 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %70 = OpLoad %float %69
+         %72 = OpCompositeExtract %float %63 0
+         %73 = OpCompositeExtract %float %63 1
+         %74 = OpCompositeExtract %float %63 2
+         %75 = OpCompositeExtract %float %63 3
+         %76 = OpCompositeConstruct %v4float %72 %73 %74 %75
+         %77 = OpCompositeExtract %float %64 0
+         %78 = OpCompositeExtract %float %64 1
+         %79 = OpCompositeExtract %float %64 2
+         %80 = OpCompositeExtract %float %64 3
+         %81 = OpCompositeConstruct %v4float %77 %78 %79 %80
+         %82 = OpCompositeExtract %float %65 0
+         %83 = OpCompositeExtract %float %65 1
+         %84 = OpCompositeExtract %float %65 2
+         %85 = OpCompositeExtract %float %65 3
+         %86 = OpCompositeConstruct %v4float %82 %83 %84 %85
+         %87 = OpCompositeExtract %float %66 0
+         %88 = OpCompositeExtract %float %66 1
+         %89 = OpCompositeExtract %float %66 2
+         %90 = OpCompositeExtract %float %66 3
+         %91 = OpCompositeConstruct %v4float %87 %88 %89 %90
+         %92 = OpCompositeConstruct %mat4v4float %76 %81 %86 %91
+         %93 = OpCompositeExtract %v4float %92 0
+         %94 = OpVectorExtractDynamic %float %93 %67
+         %95 = OpFOrdGreaterThan %bool %94 %70
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+         %98 = OpLoad %int %i
+         %99 = OpLoad %v4float %v
+        %100 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+        %101 = OpLoad %float %100
+        %102 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %105 = OpLoad %int %104
+        %107 = OpAccessChain %_ptr_Function_float %v %98
+        %110 = OpCompositeConstruct %v4float %101 %101 %101 %101
+        %111 = OpCompositeConstruct %v4float %103 %103 %103 %103
+        %108 = OpExtInst %v4float %109 NClamp %99 %110 %111
+        %112 = OpVectorExtractDynamic %float %108 %105
+               OpStore %107 %112
+               OpBranch %96
+         %96 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+        %113 = OpLoad %int %i
+        %114 = OpIAdd %int %113 %int_1
+               OpStore %i %114
+               OpBranch %51
+         %52 = OpLabel
+        %115 = OpLoad %v4float %v
+        %116 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %117 = OpLoad %int %116
+        %118 = OpConvertSToF %float %117
+        %120 = OpCompositeConstruct %v4float %118 %118 %118 %118
+        %121 = OpFOrdEqual %v4bool %115 %120
+        %119 = OpAll %bool %121
+               OpSelectionMerge %123 None
+               OpBranchConditional %119 %124 %125
+        %124 = OpLabel
+        %126 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %127 = OpLoad %int %126
+        %128 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %129 = OpLoad %int %128
+        %130 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %133 = OpLoad %int %132
+        %134 = OpConvertSToF %float %127
+        %135 = OpConvertSToF %float %129
+        %136 = OpConvertSToF %float %131
+        %137 = OpConvertSToF %float %133
+        %138 = OpCompositeConstruct %v4float %134 %135 %136 %137
+               OpStore %x_GLF_color %138
+               OpBranch %123
+        %125 = OpLabel
+        %139 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %140 = OpLoad %int %139
+        %141 = OpConvertSToF %float %140
+        %142 = OpCompositeConstruct %v4float %141 %141 %141 %141
+               OpStore %x_GLF_color %142
+               OpBranch %123
+        %123 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %143
+%tint_symbol = OpFunctionParameter %main_out
+        %147 = OpLabel
+        %148 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %148
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %150 = OpLabel
+        %151 = OpFunctionCall %void %main_1
+        %153 = OpLoad %v4float %x_GLF_color
+        %154 = OpCompositeConstruct %main_out %153
+        %152 = OpFunctionCall %void %tint_symbol_2 %154
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..667c5e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var i : i32;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v = vec4<f32>(f32(x_40), f32(x_43), f32(x_46), f32(x_49));
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[4];
+  i = x_53;
+  loop {
+    let x_58 : i32 = i;
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    let x_63 : vec4<f32> = v;
+    let x_64 : vec4<f32> = v;
+    let x_65 : vec4<f32> = v;
+    let x_66 : vec4<f32> = v;
+    let x_88 : i32 = i;
+    let x_92 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((mat4x4<f32>(vec4<f32>(x_63.x, x_63.y, x_63.z, x_63.w), vec4<f32>(x_64.x, x_64.y, x_64.z, x_64.w), vec4<f32>(x_65.x, x_65.y, x_65.z, x_65.w), vec4<f32>(x_66.x, x_66.y, x_66.z, x_66.w))[0u][x_88] > x_92)) {
+      let x_96 : i32 = i;
+      let x_97 : vec4<f32> = v;
+      let x_99 : f32 = x_9.x_GLF_uniform_float_values[1];
+      let x_102 : f32 = x_9.x_GLF_uniform_float_values[0];
+      let x_106 : i32 = x_6.x_GLF_uniform_int_values[1];
+      v[x_96] = clamp(x_97, vec4<f32>(x_99, x_99, x_99, x_99), vec4<f32>(x_102, x_102, x_102, x_102))[x_106];
+    }
+
+    continuing {
+      let x_109 : i32 = i;
+      i = (x_109 + 1);
+    }
+  }
+  let x_111 : vec4<f32> = v;
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_114 : f32 = f32(x_113);
+  if (all((x_111 == vec4<f32>(x_114, x_114, x_114, x_114)))) {
+    let x_122 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_125 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_128 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_131 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_122), f32(x_125), f32(x_128), f32(x_131));
+  } else {
+    let x_135 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_136 : f32 = f32(x_135);
+    x_GLF_color = vec4<f32>(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
new file mode 100644
index 0000000..667c5e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var i : i32;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v = vec4<f32>(f32(x_40), f32(x_43), f32(x_46), f32(x_49));
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[4];
+  i = x_53;
+  loop {
+    let x_58 : i32 = i;
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    let x_63 : vec4<f32> = v;
+    let x_64 : vec4<f32> = v;
+    let x_65 : vec4<f32> = v;
+    let x_66 : vec4<f32> = v;
+    let x_88 : i32 = i;
+    let x_92 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((mat4x4<f32>(vec4<f32>(x_63.x, x_63.y, x_63.z, x_63.w), vec4<f32>(x_64.x, x_64.y, x_64.z, x_64.w), vec4<f32>(x_65.x, x_65.y, x_65.z, x_65.w), vec4<f32>(x_66.x, x_66.y, x_66.z, x_66.w))[0u][x_88] > x_92)) {
+      let x_96 : i32 = i;
+      let x_97 : vec4<f32> = v;
+      let x_99 : f32 = x_9.x_GLF_uniform_float_values[1];
+      let x_102 : f32 = x_9.x_GLF_uniform_float_values[0];
+      let x_106 : i32 = x_6.x_GLF_uniform_int_values[1];
+      v[x_96] = clamp(x_97, vec4<f32>(x_99, x_99, x_99, x_99), vec4<f32>(x_102, x_102, x_102, x_102))[x_106];
+    }
+
+    continuing {
+      let x_109 : i32 = i;
+      i = (x_109 + 1);
+    }
+  }
+  let x_111 : vec4<f32> = v;
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_114 : f32 = f32(x_113);
+  if (all((x_111 == vec4<f32>(x_114, x_114, x_114, x_114)))) {
+    let x_122 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_125 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_128 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_131 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_122), f32(x_125), f32(x_128), f32(x_131));
+  } else {
+    let x_135 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_136 : f32 = f32(x_135);
+    x_GLF_color = vec4<f32>(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2f20f12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,81 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[5];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  const int x_40 = asint(x_6[1].x);
+  const int x_43 = asint(x_6[2].x);
+  const int x_46 = asint(x_6[3].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_49 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v = float4(float(x_40), float(x_43), float(x_46), float(x_49));
+  const int x_53 = asint(x_6[4].x);
+  i = x_53;
+  while (true) {
+    const int x_58 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    const float4 x_63 = v;
+    const float4 x_64 = v;
+    const float4 x_65 = v;
+    const float4 x_66 = v;
+    const int x_88 = i;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_92 = asfloat(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((float4x4(float4(x_63.x, x_63.y, x_63.z, x_63.w), float4(x_64.x, x_64.y, x_64.z, x_64.w), float4(x_65.x, x_65.y, x_65.z, x_65.w), float4(x_66.x, x_66.y, x_66.z, x_66.w))[0u][x_88] > x_92)) {
+      const int x_96 = i;
+      const float4 x_97 = v;
+      const float x_99 = asfloat(x_9[1].x);
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const float x_102 = asfloat(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      const int x_106 = asint(x_6[1].x);
+      set_float4(v, x_96, clamp(x_97, float4(x_99, x_99, x_99, x_99), float4(x_102, x_102, x_102, x_102))[x_106]);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const float4 x_111 = v;
+  const int x_113 = asint(x_6[1].x);
+  const float x_114 = float(x_113);
+  if (all((x_111 == float4(x_114, x_114, x_114, x_114)))) {
+    const int x_122 = asint(x_6[1].x);
+    const int x_125 = asint(x_6[4].x);
+    const int x_128 = asint(x_6[4].x);
+    const int x_131 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_122), float(x_125), float(x_128), float(x_131));
+  } else {
+    const int x_135 = asint(x_6[4].x);
+    const float x_136 = float(x_135);
+    x_GLF_color = float4(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3c693a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  int i = 0;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_43 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_49 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  v = float4(float(x_40), float(x_43), float(x_46), float(x_49));
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  i = x_53;
+  while (true) {
+    int const x_58 = i;
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    float4 const x_63 = v;
+    float4 const x_64 = v;
+    float4 const x_65 = v;
+    float4 const x_66 = v;
+    int const x_88 = i;
+    float const x_92 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    if ((float4x4(float4(x_63.x, x_63.y, x_63.z, x_63.w), float4(x_64.x, x_64.y, x_64.z, x_64.w), float4(x_65.x, x_65.y, x_65.z, x_65.w), float4(x_66.x, x_66.y, x_66.z, x_66.w))[0u][x_88] > x_92)) {
+      int const x_96 = i;
+      float4 const x_97 = v;
+      float const x_99 = x_9.x_GLF_uniform_float_values.arr[1].el;
+      float const x_102 = x_9.x_GLF_uniform_float_values.arr[0].el;
+      int const x_106 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      v[x_96] = clamp(x_97, float4(x_99, x_99, x_99, x_99), float4(x_102, x_102, x_102, x_102))[x_106];
+    }
+    {
+      int const x_109 = i;
+      i = (x_109 + 1);
+    }
+  }
+  float4 const x_111 = v;
+  int const x_113 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_114 = float(x_113);
+  if (all((x_111 == float4(x_114, x_114, x_114, x_114)))) {
+    int const x_122 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_125 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_128 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_131 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_122), float(x_125), float(x_128), float(x_131));
+  } else {
+    int const x_135 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    float const x_136 = float(x_135);
+    *(tint_symbol_4) = float4(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..fa87ce8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,222 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 155
+; Schema: 0
+               OpCapability Shader
+        %109 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf1 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_float = OpTypePointer Function %float
+     %v4bool = OpTypeVector %bool 4
+   %main_out = OpTypeStruct %v4float
+        %143 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %17
+          %i = OpVariable %_ptr_Function_int Function %28
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %36 = OpLoad %int %35
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %39 = OpLoad %int %38
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %33
+         %44 = OpConvertSToF %float %36
+         %45 = OpConvertSToF %float %39
+         %46 = OpConvertSToF %float %42
+         %47 = OpCompositeConstruct %v4float %43 %44 %45 %46
+               OpStore %v %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %50 = OpLoad %int %49
+               OpStore %i %50
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpSLessThan %bool %55 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %58 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %52
+         %60 = OpLabel
+         %63 = OpLoad %v4float %v
+         %64 = OpLoad %v4float %v
+         %65 = OpLoad %v4float %v
+         %66 = OpLoad %v4float %v
+         %67 = OpLoad %int %i
+         %69 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %70 = OpLoad %float %69
+         %72 = OpCompositeExtract %float %63 0
+         %73 = OpCompositeExtract %float %63 1
+         %74 = OpCompositeExtract %float %63 2
+         %75 = OpCompositeExtract %float %63 3
+         %76 = OpCompositeConstruct %v4float %72 %73 %74 %75
+         %77 = OpCompositeExtract %float %64 0
+         %78 = OpCompositeExtract %float %64 1
+         %79 = OpCompositeExtract %float %64 2
+         %80 = OpCompositeExtract %float %64 3
+         %81 = OpCompositeConstruct %v4float %77 %78 %79 %80
+         %82 = OpCompositeExtract %float %65 0
+         %83 = OpCompositeExtract %float %65 1
+         %84 = OpCompositeExtract %float %65 2
+         %85 = OpCompositeExtract %float %65 3
+         %86 = OpCompositeConstruct %v4float %82 %83 %84 %85
+         %87 = OpCompositeExtract %float %66 0
+         %88 = OpCompositeExtract %float %66 1
+         %89 = OpCompositeExtract %float %66 2
+         %90 = OpCompositeExtract %float %66 3
+         %91 = OpCompositeConstruct %v4float %87 %88 %89 %90
+         %92 = OpCompositeConstruct %mat4v4float %76 %81 %86 %91
+         %93 = OpCompositeExtract %v4float %92 0
+         %94 = OpVectorExtractDynamic %float %93 %67
+         %95 = OpFOrdGreaterThan %bool %94 %70
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+         %98 = OpLoad %int %i
+         %99 = OpLoad %v4float %v
+        %100 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+        %101 = OpLoad %float %100
+        %102 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %105 = OpLoad %int %104
+        %107 = OpAccessChain %_ptr_Function_float %v %98
+        %110 = OpCompositeConstruct %v4float %101 %101 %101 %101
+        %111 = OpCompositeConstruct %v4float %103 %103 %103 %103
+        %108 = OpExtInst %v4float %109 NClamp %99 %110 %111
+        %112 = OpVectorExtractDynamic %float %108 %105
+               OpStore %107 %112
+               OpBranch %96
+         %96 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+        %113 = OpLoad %int %i
+        %114 = OpIAdd %int %113 %int_1
+               OpStore %i %114
+               OpBranch %51
+         %52 = OpLabel
+        %115 = OpLoad %v4float %v
+        %116 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %117 = OpLoad %int %116
+        %118 = OpConvertSToF %float %117
+        %120 = OpCompositeConstruct %v4float %118 %118 %118 %118
+        %121 = OpFOrdEqual %v4bool %115 %120
+        %119 = OpAll %bool %121
+               OpSelectionMerge %123 None
+               OpBranchConditional %119 %124 %125
+        %124 = OpLabel
+        %126 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %127 = OpLoad %int %126
+        %128 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %129 = OpLoad %int %128
+        %130 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %133 = OpLoad %int %132
+        %134 = OpConvertSToF %float %127
+        %135 = OpConvertSToF %float %129
+        %136 = OpConvertSToF %float %131
+        %137 = OpConvertSToF %float %133
+        %138 = OpCompositeConstruct %v4float %134 %135 %136 %137
+               OpStore %x_GLF_color %138
+               OpBranch %123
+        %125 = OpLabel
+        %139 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %140 = OpLoad %int %139
+        %141 = OpConvertSToF %float %140
+        %142 = OpCompositeConstruct %v4float %141 %141 %141 %141
+               OpStore %x_GLF_color %142
+               OpBranch %123
+        %123 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %143
+%tint_symbol = OpFunctionParameter %main_out
+        %147 = OpLabel
+        %148 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %148
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %150 = OpLabel
+        %151 = OpFunctionCall %void %main_1
+        %153 = OpLoad %v4float %x_GLF_color
+        %154 = OpCompositeConstruct %main_out %153
+        %152 = OpFunctionCall %void %tint_symbol_2 %154
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..667c5e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var i : i32;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v = vec4<f32>(f32(x_40), f32(x_43), f32(x_46), f32(x_49));
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[4];
+  i = x_53;
+  loop {
+    let x_58 : i32 = i;
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    let x_63 : vec4<f32> = v;
+    let x_64 : vec4<f32> = v;
+    let x_65 : vec4<f32> = v;
+    let x_66 : vec4<f32> = v;
+    let x_88 : i32 = i;
+    let x_92 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((mat4x4<f32>(vec4<f32>(x_63.x, x_63.y, x_63.z, x_63.w), vec4<f32>(x_64.x, x_64.y, x_64.z, x_64.w), vec4<f32>(x_65.x, x_65.y, x_65.z, x_65.w), vec4<f32>(x_66.x, x_66.y, x_66.z, x_66.w))[0u][x_88] > x_92)) {
+      let x_96 : i32 = i;
+      let x_97 : vec4<f32> = v;
+      let x_99 : f32 = x_9.x_GLF_uniform_float_values[1];
+      let x_102 : f32 = x_9.x_GLF_uniform_float_values[0];
+      let x_106 : i32 = x_6.x_GLF_uniform_int_values[1];
+      v[x_96] = clamp(x_97, vec4<f32>(x_99, x_99, x_99, x_99), vec4<f32>(x_102, x_102, x_102, x_102))[x_106];
+    }
+
+    continuing {
+      let x_109 : i32 = i;
+      i = (x_109 + 1);
+    }
+  }
+  let x_111 : vec4<f32> = v;
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_114 : f32 = f32(x_113);
+  if (all((x_111 == vec4<f32>(x_114, x_114, x_114, x_114)))) {
+    let x_122 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_125 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_128 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_131 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_122), f32(x_125), f32(x_128), f32(x_131));
+  } else {
+    let x_135 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_136 : f32 = f32(x_135);
+    x_GLF_color = vec4<f32>(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm
new file mode 100644
index 0000000..b12b364
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm
@@ -0,0 +1,106 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %v0 "v0"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v1 "v1"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_n580_015015 = OpConstant %float -580.015015
+  %float_100 = OpConstant %float 100
+         %26 = OpConstantComposite %v2float %float_100 %float_100
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %13
+         %34 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v2float Function
+         %v1 = OpVariable %_ptr_Function_v2float Function
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %36 = OpLoad %float %35
+         %37 = OpCompositeConstruct %v2float %36 %float_n580_015015
+               OpStore %v0 %37
+         %38 = OpLoad %v2float %v0
+         %39 = OpExtInst %v2float %1 Ceil %38
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpFNegate %float %41
+         %43 = OpCompositeConstruct %v2float %42 %42
+         %44 = OpExtInst %v2float %1 FClamp %39 %43 %26
+               OpStore %v1 %44
+         %45 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %46 = OpLoad %float %45
+         %47 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %48 = OpLoad %float %47
+         %49 = OpFNegate %float %48
+         %50 = OpFOrdEqual %bool %46 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %56 %59 %62 %65
+               OpStore %_GLF_color %66
+               OpBranch %51
+         %53 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpCompositeConstruct %v4float %69 %69 %69 %69
+               OpStore %_GLF_color %70
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..50ae4f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,50 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float2 v0 = float2(0.0f, 0.0f);
+  float2 v1 = float2(0.0f, 0.0f);
+  const float x_36 = asfloat(x_6[1].x);
+  v0 = float2(x_36, -580.015014648f);
+  const float2 x_38 = v0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_42 = -(x_41);
+  v1 = clamp(ceil(x_38), float2(x_42, x_42), float2(100.0f, 100.0f));
+  const float x_46 = v1.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_48 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_46 == -(x_48))) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_58 = asint(x_9[1].x);
+    const int x_61 = asint(x_9[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_64 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    const int x_68 = asint(x_9[1].x);
+    const float x_69 = float(x_68);
+    x_GLF_color = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..79fe600
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float2 v0 = 0.0f;
+  float2 v1 = 0.0f;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  v0 = float2(x_36, -580.015014648f);
+  float2 const x_38 = v0;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_42 = -(x_41);
+  v1 = clamp(ceil(x_38), float2(x_42, x_42), float2(100.0f, 100.0f));
+  float const x_46 = v1.y;
+  float const x_48 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_46 == -(x_48))) {
+    int const x_55 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_58 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    int const x_68 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_69 = float(x_68);
+    *(tint_symbol_4) = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5cf6c3e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,141 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 88
+; Schema: 0
+               OpCapability Shader
+         %41 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_n580_015015 = OpConstant %float -580.015015
+      %int_0 = OpConstant %int 0
+  %float_100 = OpConstant %float 100
+         %45 = OpConstantComposite %v2float %float_100 %float_100
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %76 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v2float Function %26
+         %v1 = OpVariable %_ptr_Function_v2float Function %26
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %32 = OpLoad %float %31
+         %34 = OpCompositeConstruct %v2float %32 %float_n580_015015
+               OpStore %v0 %34
+         %35 = OpLoad %v2float %v0
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFNegate %float %38
+         %42 = OpExtInst %v2float %41 Ceil %35
+         %43 = OpCompositeConstruct %v2float %39 %39
+         %40 = OpExtInst %v2float %41 NClamp %42 %43 %45
+               OpStore %v1 %40
+         %48 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %49 = OpLoad %float %48
+         %50 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpFNegate %float %51
+         %53 = OpFOrdEqual %bool %49 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %53 %56 %57
+         %56 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %60
+         %68 = OpConvertSToF %float %62
+         %69 = OpConvertSToF %float %64
+         %70 = OpConvertSToF %float %66
+         %71 = OpCompositeConstruct %v4float %67 %68 %69 %70
+               OpStore %x_GLF_color %71
+               OpBranch %55
+         %57 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpCompositeConstruct %v4float %74 %74 %74 %74
+               OpStore %x_GLF_color %75
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %76
+%tint_symbol = OpFunctionParameter %main_out
+         %80 = OpLabel
+         %81 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %81
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %83 = OpLabel
+         %84 = OpFunctionCall %void %main_1
+         %86 = OpLoad %v4float %x_GLF_color
+         %87 = OpCompositeConstruct %main_out %86
+         %85 = OpFunctionCall %void %tint_symbol_2 %87
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..bc87bc8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,55 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var v0 : vec2<f32>;
+  var v1 : vec2<f32>;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[1];
+  v0 = vec2<f32>(x_36, -580.015014648);
+  let x_38 : vec2<f32> = v0;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = -(x_41);
+  v1 = clamp(ceil(x_38), vec2<f32>(x_42, x_42), vec2<f32>(100.0, 100.0));
+  let x_46 : f32 = v1.y;
+  let x_48 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_46 == -(x_48))) {
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_68 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
new file mode 100644
index 0000000..bc87bc8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
@@ -0,0 +1,55 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var v0 : vec2<f32>;
+  var v1 : vec2<f32>;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[1];
+  v0 = vec2<f32>(x_36, -580.015014648);
+  let x_38 : vec2<f32> = v0;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = -(x_41);
+  v1 = clamp(ceil(x_38), vec2<f32>(x_42, x_42), vec2<f32>(100.0, 100.0));
+  let x_46 : f32 = v1.y;
+  let x_48 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_46 == -(x_48))) {
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_68 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..50ae4f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,50 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float2 v0 = float2(0.0f, 0.0f);
+  float2 v1 = float2(0.0f, 0.0f);
+  const float x_36 = asfloat(x_6[1].x);
+  v0 = float2(x_36, -580.015014648f);
+  const float2 x_38 = v0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_42 = -(x_41);
+  v1 = clamp(ceil(x_38), float2(x_42, x_42), float2(100.0f, 100.0f));
+  const float x_46 = v1.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_48 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_46 == -(x_48))) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_58 = asint(x_9[1].x);
+    const int x_61 = asint(x_9[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_64 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    const int x_68 = asint(x_9[1].x);
+    const float x_69 = float(x_68);
+    x_GLF_color = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..79fe600
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float2 v0 = 0.0f;
+  float2 v1 = 0.0f;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  v0 = float2(x_36, -580.015014648f);
+  float2 const x_38 = v0;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_42 = -(x_41);
+  v1 = clamp(ceil(x_38), float2(x_42, x_42), float2(100.0f, 100.0f));
+  float const x_46 = v1.y;
+  float const x_48 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_46 == -(x_48))) {
+    int const x_55 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_58 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    int const x_68 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_69 = float(x_68);
+    *(tint_symbol_4) = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5cf6c3e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,141 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 88
+; Schema: 0
+               OpCapability Shader
+         %41 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_n580_015015 = OpConstant %float -580.015015
+      %int_0 = OpConstant %int 0
+  %float_100 = OpConstant %float 100
+         %45 = OpConstantComposite %v2float %float_100 %float_100
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %76 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v2float Function %26
+         %v1 = OpVariable %_ptr_Function_v2float Function %26
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %32 = OpLoad %float %31
+         %34 = OpCompositeConstruct %v2float %32 %float_n580_015015
+               OpStore %v0 %34
+         %35 = OpLoad %v2float %v0
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFNegate %float %38
+         %42 = OpExtInst %v2float %41 Ceil %35
+         %43 = OpCompositeConstruct %v2float %39 %39
+         %40 = OpExtInst %v2float %41 NClamp %42 %43 %45
+               OpStore %v1 %40
+         %48 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %49 = OpLoad %float %48
+         %50 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpFNegate %float %51
+         %53 = OpFOrdEqual %bool %49 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %53 %56 %57
+         %56 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %60
+         %68 = OpConvertSToF %float %62
+         %69 = OpConvertSToF %float %64
+         %70 = OpConvertSToF %float %66
+         %71 = OpCompositeConstruct %v4float %67 %68 %69 %70
+               OpStore %x_GLF_color %71
+               OpBranch %55
+         %57 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpCompositeConstruct %v4float %74 %74 %74 %74
+               OpStore %x_GLF_color %75
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %76
+%tint_symbol = OpFunctionParameter %main_out
+         %80 = OpLabel
+         %81 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %81
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %83 = OpLabel
+         %84 = OpFunctionCall %void %main_1
+         %86 = OpLoad %v4float %x_GLF_color
+         %87 = OpCompositeConstruct %main_out %86
+         %85 = OpFunctionCall %void %tint_symbol_2 %87
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..bc87bc8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,55 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var v0 : vec2<f32>;
+  var v1 : vec2<f32>;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[1];
+  v0 = vec2<f32>(x_36, -580.015014648);
+  let x_38 : vec2<f32> = v0;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = -(x_41);
+  v1 = clamp(ceil(x_38), vec2<f32>(x_42, x_42), vec2<f32>(100.0, 100.0));
+  let x_46 : f32 = v1.y;
+  let x_48 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_46 == -(x_48))) {
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_68 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm
new file mode 100644
index 0000000..2f7516b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm
@@ -0,0 +1,110 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %v0 "v0"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v1 "v1"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_3_79999995 = OpConstant %float 3.79999995
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %13
+         %35 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v2float Function
+         %v1 = OpVariable %_ptr_Function_v2float Function
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %37 = OpLoad %float %36
+         %38 = OpCompositeConstruct %v2float %37 %float_3_79999995
+               OpStore %v0 %38
+         %39 = OpLoad %v2float %v0
+         %40 = OpCompositeConstruct %v2float %float_1 %float_1
+         %41 = OpFSub %v2float %39 %40
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %43 = OpLoad %float %42
+         %44 = OpCompositeConstruct %v2float %float_0 %float_0
+         %45 = OpCompositeConstruct %v2float %43 %43
+         %46 = OpExtInst %v2float %1 FClamp %41 %44 %45
+               OpStore %v1 %46
+         %47 = OpLoad %v2float %v1
+         %48 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %49 = OpLoad %float %48
+         %50 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %51 = OpLoad %float %50
+         %52 = OpCompositeConstruct %v2float %49 %51
+         %53 = OpFOrdEqual %v2bool %47 %52
+         %54 = OpAll %bool %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpCompositeConstruct %v4float %60 %63 %66 %69
+               OpStore %_GLF_color %70
+               OpBranch %55
+         %57 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpCompositeConstruct %v4float %73 %73 %73 %73
+               OpStore %_GLF_color %74
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..8f6279c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float2 v0 = float2(0.0f, 0.0f);
+  float2 v1 = float2(0.0f, 0.0f);
+  const float x_37 = asfloat(x_6[2].x);
+  v0 = float2(x_37, 3.799999952f);
+  const float2 x_39 = v0;
+  const float x_43 = asfloat(x_6[1].x);
+  v1 = clamp((x_39 - float2(1.0f, 1.0f)), float2(0.0f, 0.0f), float2(x_43, x_43));
+  const float2 x_47 = v1;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_49 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_51 = asfloat(x_6[1].x);
+  if (all((x_47 == float2(x_49, x_51)))) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_62 = asint(x_9[1].x);
+    const int x_65 = asint(x_9[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_68 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_59), float(x_62), float(x_65), float(x_68));
+  } else {
+    const int x_72 = asint(x_9[1].x);
+    const float x_73 = float(x_72);
+    x_GLF_color = float4(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..154e812
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float2 v0 = 0.0f;
+  float2 v1 = 0.0f;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  v0 = float2(x_37, 3.799999952f);
+  float2 const x_39 = v0;
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  v1 = clamp((x_39 - float2(1.0f, 1.0f)), float2(0.0f, 0.0f), float2(x_43, x_43));
+  float2 const x_47 = v1;
+  float const x_49 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_51 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  if (all((x_47 == float2(x_49, x_51)))) {
+    int const x_59 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_62 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_68 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_59), float(x_62), float(x_65), float(x_68));
+  } else {
+    int const x_72 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_73 = float(x_72);
+    *(tint_symbol_4) = float4(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..758face
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,145 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+         %41 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %27 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_3_79999995 = OpConstant %float 3.79999995
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %43 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %46 = OpConstantComposite %v2float %float_0 %float_0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v2float Function %27
+         %v1 = OpVariable %_ptr_Function_v2float Function %27
+         %32 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %33 = OpLoad %float %32
+         %35 = OpCompositeConstruct %v2float %33 %float_3_79999995
+               OpStore %v0 %35
+         %36 = OpLoad %v2float %v0
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %39 = OpLoad %float %38
+         %44 = OpFSub %v2float %36 %43
+         %47 = OpCompositeConstruct %v2float %39 %39
+         %40 = OpExtInst %v2float %41 NClamp %44 %46 %47
+               OpStore %v1 %40
+         %48 = OpLoad %v2float %v1
+         %50 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %56 = OpCompositeConstruct %v2float %51 %53
+         %57 = OpFOrdEqual %v2bool %48 %56
+         %54 = OpAll %bool %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %54 %60 %61
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %59
+         %61 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..fa52af1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,55 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var v0 : vec2<f32>;
+  var v1 : vec2<f32>;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[2];
+  v0 = vec2<f32>(x_37, 3.799999952);
+  let x_39 : vec2<f32> = v0;
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[1];
+  v1 = clamp((x_39 - vec2<f32>(1.0, 1.0)), vec2<f32>(0.0, 0.0), vec2<f32>(x_43, x_43));
+  let x_47 : vec2<f32> = v1;
+  let x_49 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_51 : f32 = x_6.x_GLF_uniform_float_values[1];
+  if (all((x_47 == vec2<f32>(x_49, x_51)))) {
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_68 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_59), f32(x_62), f32(x_65), f32(x_68));
+  } else {
+    let x_72 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_73 : f32 = f32(x_72);
+    x_GLF_color = vec4<f32>(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
new file mode 100644
index 0000000..fa52af1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
@@ -0,0 +1,55 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var v0 : vec2<f32>;
+  var v1 : vec2<f32>;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[2];
+  v0 = vec2<f32>(x_37, 3.799999952);
+  let x_39 : vec2<f32> = v0;
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[1];
+  v1 = clamp((x_39 - vec2<f32>(1.0, 1.0)), vec2<f32>(0.0, 0.0), vec2<f32>(x_43, x_43));
+  let x_47 : vec2<f32> = v1;
+  let x_49 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_51 : f32 = x_6.x_GLF_uniform_float_values[1];
+  if (all((x_47 == vec2<f32>(x_49, x_51)))) {
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_68 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_59), f32(x_62), f32(x_65), f32(x_68));
+  } else {
+    let x_72 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_73 : f32 = f32(x_72);
+    x_GLF_color = vec4<f32>(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..8f6279c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float2 v0 = float2(0.0f, 0.0f);
+  float2 v1 = float2(0.0f, 0.0f);
+  const float x_37 = asfloat(x_6[2].x);
+  v0 = float2(x_37, 3.799999952f);
+  const float2 x_39 = v0;
+  const float x_43 = asfloat(x_6[1].x);
+  v1 = clamp((x_39 - float2(1.0f, 1.0f)), float2(0.0f, 0.0f), float2(x_43, x_43));
+  const float2 x_47 = v1;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_49 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_51 = asfloat(x_6[1].x);
+  if (all((x_47 == float2(x_49, x_51)))) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_62 = asint(x_9[1].x);
+    const int x_65 = asint(x_9[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_68 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_59), float(x_62), float(x_65), float(x_68));
+  } else {
+    const int x_72 = asint(x_9[1].x);
+    const float x_73 = float(x_72);
+    x_GLF_color = float4(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..154e812
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float2 v0 = 0.0f;
+  float2 v1 = 0.0f;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  v0 = float2(x_37, 3.799999952f);
+  float2 const x_39 = v0;
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  v1 = clamp((x_39 - float2(1.0f, 1.0f)), float2(0.0f, 0.0f), float2(x_43, x_43));
+  float2 const x_47 = v1;
+  float const x_49 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_51 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  if (all((x_47 == float2(x_49, x_51)))) {
+    int const x_59 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_62 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_68 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_59), float(x_62), float(x_65), float(x_68));
+  } else {
+    int const x_72 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_73 = float(x_72);
+    *(tint_symbol_4) = float4(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..758face
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,145 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+         %41 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %27 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_3_79999995 = OpConstant %float 3.79999995
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %43 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %46 = OpConstantComposite %v2float %float_0 %float_0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v2float Function %27
+         %v1 = OpVariable %_ptr_Function_v2float Function %27
+         %32 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %33 = OpLoad %float %32
+         %35 = OpCompositeConstruct %v2float %33 %float_3_79999995
+               OpStore %v0 %35
+         %36 = OpLoad %v2float %v0
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %39 = OpLoad %float %38
+         %44 = OpFSub %v2float %36 %43
+         %47 = OpCompositeConstruct %v2float %39 %39
+         %40 = OpExtInst %v2float %41 NClamp %44 %46 %47
+               OpStore %v1 %40
+         %48 = OpLoad %v2float %v1
+         %50 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %56 = OpCompositeConstruct %v2float %51 %53
+         %57 = OpFOrdEqual %v2bool %48 %56
+         %54 = OpAll %bool %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %54 %60 %61
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %59
+         %61 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..fa52af1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,55 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var v0 : vec2<f32>;
+  var v1 : vec2<f32>;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[2];
+  v0 = vec2<f32>(x_37, 3.799999952);
+  let x_39 : vec2<f32> = v0;
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[1];
+  v1 = clamp((x_39 - vec2<f32>(1.0, 1.0)), vec2<f32>(0.0, 0.0), vec2<f32>(x_43, x_43));
+  let x_47 : vec2<f32> = v1;
+  let x_49 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_51 : f32 = x_6.x_GLF_uniform_float_values[1];
+  if (all((x_47 == vec2<f32>(x_49, x_51)))) {
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_68 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_59), f32(x_62), f32(x_65), f32(x_68));
+  } else {
+    let x_72 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_73 : f32 = f32(x_72);
+    x_GLF_color = vec4<f32>(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm
new file mode 100644
index 0000000..197686f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm
@@ -0,0 +1,95 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %v0 "v0"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v1 "v1"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "zero"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+       %buf1 = OpTypeStruct %float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %12
+         %30 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v2float Function
+         %v1 = OpVariable %_ptr_Function_v4float Function
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %32 = OpLoad %float %31
+         %33 = OpCompositeConstruct %v2float %32 %32
+               OpStore %v0 %33
+         %34 = OpAccessChain %_ptr_Function_float %v0 %uint_0
+         %35 = OpLoad %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+               OpStore %v1 %36
+         %37 = OpAccessChain %_ptr_Uniform_float %__0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpFUnordNotEqual %bool %38 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_float %__0 %int_0
+         %46 = OpLoad %float %45
+         %47 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %48 = OpLoad %float %47
+         %49 = OpFOrdEqual %bool %46 %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpReturn
+         %50 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %53 = OpLoad %float %52
+         %54 = OpVectorShuffle %v2float %36 %36 1 2
+         %55 = OpCompositeConstruct %v2float %53 %53
+         %56 = OpFSub %v2float %54 %55
+         %57 = OpVectorShuffle %v4float %36 %56 0 4 5 3
+               OpStore %v1 %57
+               OpBranch %42
+         %44 = OpLabel
+               OpKill
+         %42 = OpLabel
+               OpStore %_GLF_color %57
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..011b17f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,52 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v0 = float2(0.0f, 0.0f);
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_57 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_32 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v0 = float2(x_32, x_32);
+  const float x_35 = v0.x;
+  const float4 x_36 = float4(x_35, x_35, x_35, x_35);
+  v1 = x_36;
+  const float x_38 = asfloat(x_9[0].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if (!((x_38 == x_40))) {
+    const float x_46 = asfloat(x_9[0].x);
+    const float x_48 = asfloat(x_6[1].x);
+    if ((x_46 == x_48)) {
+      return;
+    }
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_53 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float2 x_56 = (float2(x_36.y, x_36.z) - float2(x_53, x_53));
+    x_57 = float4(x_36.x, x_56.x, x_56.y, x_36.w);
+    v1 = x_57;
+  } else {
+    discard;
+  }
+  x_GLF_color = x_57;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ef7e17e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf1 {
+  /* 0x0000 */ float zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float2 v0 = 0.0f;
+  float4 v1 = 0.0f;
+  float4 x_57 = 0.0f;
+  float const x_32 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v0 = float2(x_32, x_32);
+  float const x_35 = v0.x;
+  float4 const x_36 = float4(x_35, x_35, x_35, x_35);
+  v1 = x_36;
+  float const x_38 = x_9.zero;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if (!((x_38 == x_40))) {
+    float const x_46 = x_9.zero;
+    float const x_48 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    if ((x_46 == x_48)) {
+      return;
+    }
+    float const x_53 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float2 const x_56 = (float2(x_36.y, x_36.z) - float2(x_53, x_53));
+    x_57 = float4(x_36.x, x_56.x, x_56.y, x_36.w);
+    v1 = x_57;
+  } else {
+    discard_fragment();
+  }
+  *(tint_symbol_4) = x_57;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2a2cc7e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 83
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "zero"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %x_57 "x_57"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf1 = OpTypeStruct %float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %14 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %14
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %14
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %24 = OpConstantNull %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %71 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v2float Function %24
+         %v1 = OpVariable %_ptr_Function_v4float Function %14
+       %x_57 = OpVariable %_ptr_Function_v4float Function %14
+         %32 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %33 = OpLoad %float %32
+         %34 = OpCompositeConstruct %v2float %33 %33
+               OpStore %v0 %34
+         %36 = OpAccessChain %_ptr_Function_float %v0 %uint_0
+         %37 = OpLoad %float %36
+         %38 = OpCompositeConstruct %v4float %37 %37 %37 %37
+               OpStore %v1 %38
+         %39 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %44 = OpFOrdEqual %bool %40 %42
+         %43 = OpLogicalNot %bool %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %43 %47 %48
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpFOrdEqual %bool %50 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpReturn
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpCompositeExtract %float %38 1
+         %60 = OpCompositeExtract %float %38 2
+         %61 = OpCompositeConstruct %v2float %59 %60
+         %62 = OpCompositeConstruct %v2float %58 %58
+         %63 = OpFSub %v2float %61 %62
+         %64 = OpCompositeExtract %float %38 0
+         %65 = OpCompositeExtract %float %63 0
+         %66 = OpCompositeExtract %float %63 1
+         %67 = OpCompositeExtract %float %38 3
+         %68 = OpCompositeConstruct %v4float %64 %65 %66 %67
+               OpStore %x_57 %68
+         %69 = OpLoad %v4float %x_57
+               OpStore %v1 %69
+               OpBranch %46
+         %48 = OpLabel
+               OpKill
+         %46 = OpLabel
+         %70 = OpLoad %v4float %x_57
+               OpStore %x_GLF_color %70
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %71
+%tint_symbol = OpFunctionParameter %main_out
+         %75 = OpLabel
+         %76 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %76
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %78 = OpLabel
+         %79 = OpFunctionCall %void %main_1
+         %81 = OpLoad %v4float %x_GLF_color
+         %82 = OpCompositeConstruct %main_out %81
+         %80 = OpFunctionCall %void %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..edebd91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  zero : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v0 : vec2<f32>;
+  var v1 : vec4<f32>;
+  var x_57 : vec4<f32>;
+  let x_32 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v0 = vec2<f32>(x_32, x_32);
+  let x_35 : f32 = v0.x;
+  let x_36 : vec4<f32> = vec4<f32>(x_35, x_35, x_35, x_35);
+  v1 = x_36;
+  let x_38 : f32 = x_9.zero;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if (!((x_38 == x_40))) {
+    let x_46 : f32 = x_9.zero;
+    let x_48 : f32 = x_6.x_GLF_uniform_float_values[1];
+    if ((x_46 == x_48)) {
+      return;
+    }
+    let x_53 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_56 : vec2<f32> = (vec2<f32>(x_36.y, x_36.z) - vec2<f32>(x_53, x_53));
+    x_57 = vec4<f32>(x_36.x, x_56.x, x_56.y, x_36.w);
+    v1 = x_57;
+  } else {
+    discard;
+  }
+  x_GLF_color = x_57;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
new file mode 100644
index 0000000..edebd91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  zero : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v0 : vec2<f32>;
+  var v1 : vec4<f32>;
+  var x_57 : vec4<f32>;
+  let x_32 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v0 = vec2<f32>(x_32, x_32);
+  let x_35 : f32 = v0.x;
+  let x_36 : vec4<f32> = vec4<f32>(x_35, x_35, x_35, x_35);
+  v1 = x_36;
+  let x_38 : f32 = x_9.zero;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if (!((x_38 == x_40))) {
+    let x_46 : f32 = x_9.zero;
+    let x_48 : f32 = x_6.x_GLF_uniform_float_values[1];
+    if ((x_46 == x_48)) {
+      return;
+    }
+    let x_53 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_56 : vec2<f32> = (vec2<f32>(x_36.y, x_36.z) - vec2<f32>(x_53, x_53));
+    x_57 = vec4<f32>(x_36.x, x_56.x, x_56.y, x_36.w);
+    v1 = x_57;
+  } else {
+    discard;
+  }
+  x_GLF_color = x_57;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..011b17f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,52 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v0 = float2(0.0f, 0.0f);
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_57 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_32 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v0 = float2(x_32, x_32);
+  const float x_35 = v0.x;
+  const float4 x_36 = float4(x_35, x_35, x_35, x_35);
+  v1 = x_36;
+  const float x_38 = asfloat(x_9[0].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if (!((x_38 == x_40))) {
+    const float x_46 = asfloat(x_9[0].x);
+    const float x_48 = asfloat(x_6[1].x);
+    if ((x_46 == x_48)) {
+      return;
+    }
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_53 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float2 x_56 = (float2(x_36.y, x_36.z) - float2(x_53, x_53));
+    x_57 = float4(x_36.x, x_56.x, x_56.y, x_36.w);
+    v1 = x_57;
+  } else {
+    discard;
+  }
+  x_GLF_color = x_57;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ef7e17e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf1 {
+  /* 0x0000 */ float zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float2 v0 = 0.0f;
+  float4 v1 = 0.0f;
+  float4 x_57 = 0.0f;
+  float const x_32 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v0 = float2(x_32, x_32);
+  float const x_35 = v0.x;
+  float4 const x_36 = float4(x_35, x_35, x_35, x_35);
+  v1 = x_36;
+  float const x_38 = x_9.zero;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if (!((x_38 == x_40))) {
+    float const x_46 = x_9.zero;
+    float const x_48 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    if ((x_46 == x_48)) {
+      return;
+    }
+    float const x_53 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float2 const x_56 = (float2(x_36.y, x_36.z) - float2(x_53, x_53));
+    x_57 = float4(x_36.x, x_56.x, x_56.y, x_36.w);
+    v1 = x_57;
+  } else {
+    discard_fragment();
+  }
+  *(tint_symbol_4) = x_57;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2a2cc7e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 83
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "zero"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %x_57 "x_57"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf1 = OpTypeStruct %float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %14 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %14
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %14
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %24 = OpConstantNull %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %71 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v2float Function %24
+         %v1 = OpVariable %_ptr_Function_v4float Function %14
+       %x_57 = OpVariable %_ptr_Function_v4float Function %14
+         %32 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %33 = OpLoad %float %32
+         %34 = OpCompositeConstruct %v2float %33 %33
+               OpStore %v0 %34
+         %36 = OpAccessChain %_ptr_Function_float %v0 %uint_0
+         %37 = OpLoad %float %36
+         %38 = OpCompositeConstruct %v4float %37 %37 %37 %37
+               OpStore %v1 %38
+         %39 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %44 = OpFOrdEqual %bool %40 %42
+         %43 = OpLogicalNot %bool %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %43 %47 %48
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpFOrdEqual %bool %50 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpReturn
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpCompositeExtract %float %38 1
+         %60 = OpCompositeExtract %float %38 2
+         %61 = OpCompositeConstruct %v2float %59 %60
+         %62 = OpCompositeConstruct %v2float %58 %58
+         %63 = OpFSub %v2float %61 %62
+         %64 = OpCompositeExtract %float %38 0
+         %65 = OpCompositeExtract %float %63 0
+         %66 = OpCompositeExtract %float %63 1
+         %67 = OpCompositeExtract %float %38 3
+         %68 = OpCompositeConstruct %v4float %64 %65 %66 %67
+               OpStore %x_57 %68
+         %69 = OpLoad %v4float %x_57
+               OpStore %v1 %69
+               OpBranch %46
+         %48 = OpLabel
+               OpKill
+         %46 = OpLabel
+         %70 = OpLoad %v4float %x_57
+               OpStore %x_GLF_color %70
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %71
+%tint_symbol = OpFunctionParameter %main_out
+         %75 = OpLabel
+         %76 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %76
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %78 = OpLabel
+         %79 = OpFunctionCall %void %main_1
+         %81 = OpLoad %v4float %x_GLF_color
+         %82 = OpCompositeConstruct %main_out %81
+         %80 = OpFunctionCall %void %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..edebd91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  zero : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v0 : vec2<f32>;
+  var v1 : vec4<f32>;
+  var x_57 : vec4<f32>;
+  let x_32 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v0 = vec2<f32>(x_32, x_32);
+  let x_35 : f32 = v0.x;
+  let x_36 : vec4<f32> = vec4<f32>(x_35, x_35, x_35, x_35);
+  v1 = x_36;
+  let x_38 : f32 = x_9.zero;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if (!((x_38 == x_40))) {
+    let x_46 : f32 = x_9.zero;
+    let x_48 : f32 = x_6.x_GLF_uniform_float_values[1];
+    if ((x_46 == x_48)) {
+      return;
+    }
+    let x_53 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_56 : vec2<f32> = (vec2<f32>(x_36.y, x_36.z) - vec2<f32>(x_53, x_53));
+    x_57 = vec4<f32>(x_36.x, x_56.x, x_56.y, x_36.w);
+    v1 = x_57;
+  } else {
+    discard;
+  }
+  x_GLF_color = x_57;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm
new file mode 100644
index 0000000..1fae8ca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm
@@ -0,0 +1,243 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func0_ "func0("
+               OpName %func1_ "func1("
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %tmp "tmp"
+               OpName %_GLF_color "_GLF_color"
+               OpName %a "a"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %buf3 "buf3"
+               OpMemberName %buf3 0 "three"
+               OpName %__1 ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_uint_values"
+               OpName %__2 ""
+               OpName %a_0 "a"
+               OpName %i "i"
+               OpName %j "j"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpMemberDecorate %buf3 0 Offset 0
+               OpDecorate %buf3 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 3
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__2 DescriptorSet 0
+               OpDecorate %__2 Binding 0
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %26 = OpTypeFunction %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf2 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %buf3 = OpTypeStruct %int
+%_ptr_Uniform_buf3 = OpTypePointer Uniform %buf3
+        %__1 = OpVariable %_ptr_Uniform_buf3 Uniform
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf0 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__2 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+      %int_5 = OpConstant %int 5
+     %uint_2 = OpConstant %uint 2
+%_ptr_Output_float = OpTypePointer Output %float
+       %main = OpFunction %void None %24
+         %54 = OpLabel
+        %a_0 = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+         %55 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %56 = OpLoad %float %55
+         %57 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %58 = OpLoad %float %57
+         %59 = OpFOrdGreaterThan %bool %56 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %70 = OpLoad %float %69
+         %71 = OpCompositeConstruct %v4float %64 %66 %68 %70
+               OpStore %_GLF_color %71
+               OpBranch %60
+         %62 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_uint %__2 %int_0 %int_0
+         %73 = OpLoad %uint %72
+         %74 = OpExtInst %v4float %1 UnpackSnorm4x8 %73
+               OpStore %_GLF_color %74
+               OpBranch %60
+         %60 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %76 = OpLoad %int %75
+               OpStore %a_0 %76
+               OpStore %i %int_0
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+         %81 = OpLoad %int %i
+         %82 = OpSLessThan %bool %81 %int_5
+               OpBranchConditional %82 %83 %78
+         %83 = OpLabel
+               OpStore %j %int_0
+               OpBranch %84
+         %84 = OpLabel
+               OpLoopMerge %85 %86 None
+               OpBranch %87
+         %87 = OpLabel
+         %88 = OpLoad %int %j
+         %89 = OpSLessThan %bool %88 %int_2
+               OpBranchConditional %89 %90 %85
+         %90 = OpLabel
+         %91 = OpFunctionCall %int %func1_
+         %92 = OpLoad %int %a_0
+         %93 = OpIAdd %int %92 %91
+               OpStore %a_0 %93
+               OpBranch %86
+         %86 = OpLabel
+         %94 = OpLoad %int %j
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %j %95
+               OpBranch %84
+         %85 = OpLabel
+               OpBranch %79
+         %79 = OpLabel
+         %96 = OpLoad %int %i
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %i %97
+               OpBranch %77
+         %78 = OpLabel
+         %98 = OpLoad %int %a_0
+         %99 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %100 = OpLoad %int %99
+        %101 = OpIEqual %bool %98 %100
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %104 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %105 = OpLoad %float %104
+        %106 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_2
+        %107 = OpLoad %float %106
+        %108 = OpFSub %float %107 %105
+        %109 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_2
+               OpStore %109 %108
+               OpBranch %102
+        %102 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %func0_ = OpFunction %void None %24
+        %110 = OpLabel
+        %tmp = OpVariable %_ptr_Function_v4float Function
+        %111 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %112 = OpLoad %float %111
+        %113 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %114 = OpLoad %float %113
+        %115 = OpFOrdGreaterThan %bool %112 %114
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+        %118 = OpLoad %v4float %_GLF_color
+               OpStore %tmp %118
+               OpBranch %116
+        %116 = OpLabel
+        %119 = OpLoad %v4float %tmp
+               OpStore %_GLF_color %119
+               OpReturn
+               OpFunctionEnd
+     %func1_ = OpFunction %int None %26
+        %120 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+        %121 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %122 = OpLoad %int %121
+               OpStore %a %122
+               OpBranch %123
+        %123 = OpLabel
+               OpLoopMerge %124 %125 None
+               OpBranch %126
+        %126 = OpLabel
+        %127 = OpLoad %int %a
+        %128 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %129 = OpLoad %int %128
+        %130 = OpSLessThan %bool %127 %129
+               OpBranchConditional %130 %131 %124
+        %131 = OpLabel
+        %132 = OpAccessChain %_ptr_Uniform_int %__1 %int_0
+        %133 = OpLoad %int %132
+        %134 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %135 = OpLoad %int %134
+        %136 = OpSGreaterThan %bool %133 %135
+               OpSelectionMerge %137 None
+               OpBranchConditional %136 %138 %139
+        %138 = OpLabel
+        %140 = OpFunctionCall %void %func0_
+        %141 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %142 = OpLoad %int %141
+               OpStore %a %142
+               OpBranch %137
+        %139 = OpLabel
+        %143 = OpFunctionCall %void %func0_
+               OpBranch %137
+        %137 = OpLabel
+               OpBranch %125
+        %125 = OpLabel
+               OpBranch %123
+        %124 = OpLabel
+        %144 = OpLoad %int %a
+               OpReturnValue %144
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9ea252e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,119 @@
+float4 tint_unpack4x8snorm(uint param_0) {
+  int j = int(param_0);
+  int4 i = int4(j << 24, j << 16, j << 8, j) >> 24;
+  return clamp(float4(i) / 127.0, -1.0, 1.0);
+}
+
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_12 : register(b2, space0) {
+  uint4 x_12[4];
+};
+cbuffer cbuffer_x_14 : register(b3, space0) {
+  uint4 x_14[1];
+};
+cbuffer cbuffer_x_16 : register(b0, space0) {
+  uint4 x_16[1];
+};
+
+void func0_() {
+  float4 tmp = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_112 = gl_FragCoord.x;
+  const float x_114 = asfloat(x_8[1].x);
+  if ((x_112 > x_114)) {
+    tmp = x_GLF_color;
+  }
+  x_GLF_color = tmp;
+  return;
+}
+
+int func1_() {
+  int a = 0;
+  const int x_122 = asint(x_12[1].x);
+  a = x_122;
+  while (true) {
+    const int x_127 = a;
+    const int x_129 = asint(x_12[3].x);
+    if ((x_127 < x_129)) {
+    } else {
+      break;
+    }
+    const int x_133 = asint(x_14[0].x);
+    const int x_135 = asint(x_12[1].x);
+    if ((x_133 > x_135)) {
+      func0_();
+      const int x_142 = asint(x_12[3].x);
+      a = x_142;
+    } else {
+      func0_();
+    }
+  }
+  return a;
+}
+
+void main_1() {
+  int a_1 = 0;
+  int i = 0;
+  int j = 0;
+  const float x_56 = gl_FragCoord.x;
+  const float x_58 = asfloat(x_8[1].x);
+  if ((x_56 > x_58)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+    const float x_66 = asfloat(x_8[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_70 = asfloat(x_8[2].x);
+    x_GLF_color = float4(x_64, x_66, x_68, x_70);
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const uint x_73 = x_16[scalar_offset_2 / 4][scalar_offset_2 % 4];
+    x_GLF_color = tint_unpack4x8snorm(x_73);
+  }
+  const int x_76 = asint(x_12[2].x);
+  a_1 = x_76;
+  i = 0;
+  {
+    for(; (i < 5); i = (i + 1)) {
+      j = 0;
+      {
+        for(; (j < 2); j = (j + 1)) {
+          const int x_91 = func1_();
+          a_1 = (a_1 + x_91);
+        }
+      }
+    }
+  }
+  const int x_98 = a_1;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_100 = asint(x_12[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  if ((x_98 == x_100)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_105 = asfloat(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_107 = x_GLF_color.z;
+    x_GLF_color.z = (x_107 - x_105);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1cbfbfa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.msl
@@ -0,0 +1,146 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct buf3 {
+  /* 0x0000 */ int three;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_uint_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func0_(constant buf1& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4 tmp = 0.0f;
+  float const x_112 = (*(tint_symbol_5)).x;
+  float const x_114 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_112 > x_114)) {
+    float4 const x_118 = *(tint_symbol_6);
+    tmp = x_118;
+  }
+  float4 const x_119 = tmp;
+  *(tint_symbol_6) = x_119;
+  return;
+}
+
+int func1_(constant buf2& x_12, constant buf3& x_14, constant buf1& x_8, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  int a = 0;
+  int const x_122 = x_12.x_GLF_uniform_int_values.arr[1].el;
+  a = x_122;
+  while (true) {
+    int const x_127 = a;
+    int const x_129 = x_12.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_127 < x_129)) {
+    } else {
+      break;
+    }
+    int const x_133 = x_14.three;
+    int const x_135 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_133 > x_135)) {
+      func0_(x_8, tint_symbol_7, tint_symbol_8);
+      int const x_142 = x_12.x_GLF_uniform_int_values.arr[3].el;
+      a = x_142;
+    } else {
+      func0_(x_8, tint_symbol_7, tint_symbol_8);
+    }
+  }
+  int const x_144 = a;
+  return x_144;
+}
+
+void main_1(constant buf1& x_8, constant buf0& x_16, constant buf2& x_12, constant buf3& x_14, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int a_1 = 0;
+  int i = 0;
+  int j = 0;
+  float const x_56 = (*(tint_symbol_9)).x;
+  float const x_58 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_56 > x_58)) {
+    float const x_64 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_66 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    float const x_68 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_70 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    *(tint_symbol_10) = float4(x_64, x_66, x_68, x_70);
+  } else {
+    uint const x_73 = x_16.x_GLF_uniform_uint_values.arr[0].el;
+    *(tint_symbol_10) = unpack_snorm4x8_to_float(x_73);
+  }
+  int const x_76 = x_12.x_GLF_uniform_int_values.arr[2].el;
+  a_1 = x_76;
+  i = 0;
+  while (true) {
+    int const x_81 = i;
+    if ((x_81 < 5)) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      int const x_88 = j;
+      if ((x_88 < 2)) {
+      } else {
+        break;
+      }
+      int const x_91 = func1_(x_12, x_14, x_8, tint_symbol_9, tint_symbol_10);
+      int const x_92 = a_1;
+      a_1 = (x_92 + x_91);
+      {
+        int const x_94 = j;
+        j = (x_94 + 1);
+      }
+    }
+    {
+      int const x_96 = i;
+      i = (x_96 + 1);
+    }
+  }
+  int const x_98 = a_1;
+  int const x_100 = x_12.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_98 == x_100)) {
+    float const x_105 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_107 = (*(tint_symbol_10)).z;
+    (*(tint_symbol_10)).z = (x_107 - x_105);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_16 [[buffer(0)]], constant buf2& x_12 [[buffer(2)]], constant buf3& x_14 [[buffer(3)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_8, x_16, x_12, x_14, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..aa2284f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,297 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 168
+; Schema: 0
+               OpCapability Shader
+        %113 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %buf3 "buf3"
+               OpMemberName %buf3 0 "three"
+               OpName %x_14 "x_14"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_uint_values"
+               OpName %x_16 "x_16"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func0_ "func0_"
+               OpName %tmp "tmp"
+               OpName %func1_ "func1_"
+               OpName %a "a"
+               OpName %main_1 "main_1"
+               OpName %a_1 "a_1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 2
+               OpDecorate %buf3 Block
+               OpMemberDecorate %buf3 0 Offset 0
+               OpDecorate %x_14 NonWritable
+               OpDecorate %x_14 DescriptorSet 0
+               OpDecorate %x_14 Binding 3
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpDecorate %x_16 NonWritable
+               OpDecorate %x_16 DescriptorSet 0
+               OpDecorate %x_16 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf2 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_12 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %buf3 = OpTypeStruct %int
+%_ptr_Uniform_buf3 = OpTypePointer Uniform %buf3
+       %x_14 = OpVariable %_ptr_Uniform_buf3 Uniform
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf0 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_16 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %31 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+         %51 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %56 = OpConstantNull %int
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+      %int_5 = OpConstant %int 5
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+        %155 = OpTypeFunction %void %main_out
+     %func0_ = OpFunction %void None %31
+         %34 = OpLabel
+        %tmp = OpVariable %_ptr_Function_v4float Function %5
+         %39 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %40 = OpLoad %float %39
+         %43 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %44 = OpLoad %float %43
+         %45 = OpFOrdGreaterThan %bool %40 %44
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %47
+         %48 = OpLabel
+         %49 = OpLoad %v4float %x_GLF_color
+               OpStore %tmp %49
+               OpBranch %47
+         %47 = OpLabel
+         %50 = OpLoad %v4float %tmp
+               OpStore %x_GLF_color %50
+               OpReturn
+               OpFunctionEnd
+     %func1_ = OpFunction %int None %51
+         %53 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %56
+         %58 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %59 = OpLoad %int %58
+               OpStore %a %59
+               OpBranch %60
+         %60 = OpLabel
+               OpLoopMerge %61 %62 None
+               OpBranch %63
+         %63 = OpLabel
+         %64 = OpLoad %int %a
+         %66 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_3
+         %67 = OpLoad %int %66
+         %68 = OpSLessThan %bool %64 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+               OpBranch %69
+         %71 = OpLabel
+               OpBranch %61
+         %69 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpSGreaterThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+         %80 = OpFunctionCall %void %func0_
+         %81 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_3
+         %82 = OpLoad %int %81
+               OpStore %a %82
+               OpBranch %77
+         %79 = OpLabel
+         %83 = OpFunctionCall %void %func0_
+               OpBranch %77
+         %77 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+               OpBranch %60
+         %61 = OpLabel
+         %84 = OpLoad %int %a
+               OpReturnValue %84
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %31
+         %86 = OpLabel
+        %a_1 = OpVariable %_ptr_Function_int Function %56
+          %i = OpVariable %_ptr_Function_int Function %56
+          %j = OpVariable %_ptr_Function_int Function %56
+         %90 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %93 = OpLoad %float %92
+         %94 = OpFOrdGreaterThan %bool %91 %93
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+         %99 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+        %100 = OpLoad %float %99
+        %101 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %102 = OpLoad %float %101
+        %103 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %107 = OpLoad %float %106
+        %108 = OpCompositeConstruct %v4float %100 %102 %104 %107
+               OpStore %x_GLF_color %108
+               OpBranch %95
+         %97 = OpLabel
+        %110 = OpAccessChain %_ptr_Uniform_uint %x_16 %uint_0 %int_0
+        %111 = OpLoad %uint %110
+        %112 = OpExtInst %v4float %113 UnpackSnorm4x8 %111
+               OpStore %x_GLF_color %112
+               OpBranch %95
+         %95 = OpLabel
+        %114 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_2
+        %115 = OpLoad %int %114
+               OpStore %a_1 %115
+               OpStore %i %int_0
+               OpBranch %116
+        %116 = OpLabel
+               OpLoopMerge %117 %118 None
+               OpBranch %119
+        %119 = OpLabel
+        %120 = OpLoad %int %i
+        %122 = OpSLessThan %bool %120 %int_5
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %125
+        %124 = OpLabel
+               OpBranch %123
+        %125 = OpLabel
+               OpBranch %117
+        %123 = OpLabel
+               OpStore %j %int_0
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %130 = OpLoad %int %j
+        %131 = OpSLessThan %bool %130 %int_2
+               OpSelectionMerge %132 None
+               OpBranchConditional %131 %133 %134
+        %133 = OpLabel
+               OpBranch %132
+        %134 = OpLabel
+               OpBranch %127
+        %132 = OpLabel
+        %135 = OpFunctionCall %int %func1_
+        %136 = OpLoad %int %a_1
+        %137 = OpIAdd %int %136 %135
+               OpStore %a_1 %137
+               OpBranch %128
+        %128 = OpLabel
+        %138 = OpLoad %int %j
+        %139 = OpIAdd %int %138 %int_1
+               OpStore %j %139
+               OpBranch %126
+        %127 = OpLabel
+               OpBranch %118
+        %118 = OpLabel
+        %140 = OpLoad %int %i
+        %141 = OpIAdd %int %140 %int_1
+               OpStore %i %141
+               OpBranch %116
+        %117 = OpLabel
+        %142 = OpLoad %int %a_1
+        %143 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %144 = OpLoad %int %143
+        %145 = OpIEqual %bool %142 %144
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+        %149 = OpLoad %float %148
+        %151 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_2
+        %152 = OpLoad %float %151
+        %153 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_2
+        %154 = OpFSub %float %152 %149
+               OpStore %153 %154
+               OpBranch %146
+        %146 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %155
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %159 = OpLabel
+        %160 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %160
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %31
+        %162 = OpLabel
+        %163 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %163
+        %164 = OpFunctionCall %void %main_1
+        %166 = OpLoad %v4float %x_GLF_color
+        %167 = OpCompositeConstruct %main_out %166
+        %165 = OpFunctionCall %void %tint_symbol_3 %167
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..771813e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,144 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[block]]
+struct buf3 {
+  three : i32;
+};
+
+type Arr_2 = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_uint_values : Arr_2;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+
+[[group(0), binding(3)]] var<uniform> x_14 : buf3;
+
+[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+
+fn func0_() {
+  var tmp : vec4<f32>;
+  let x_112 : f32 = gl_FragCoord.x;
+  let x_114 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_112 > x_114)) {
+    let x_118 : vec4<f32> = x_GLF_color;
+    tmp = x_118;
+  }
+  let x_119 : vec4<f32> = tmp;
+  x_GLF_color = x_119;
+  return;
+}
+
+fn func1_() -> i32 {
+  var a : i32;
+  let x_122 : i32 = x_12.x_GLF_uniform_int_values[1];
+  a = x_122;
+  loop {
+    let x_127 : i32 = a;
+    let x_129 : i32 = x_12.x_GLF_uniform_int_values[3];
+    if ((x_127 < x_129)) {
+    } else {
+      break;
+    }
+    let x_133 : i32 = x_14.three;
+    let x_135 : i32 = x_12.x_GLF_uniform_int_values[1];
+    if ((x_133 > x_135)) {
+      func0_();
+      let x_142 : i32 = x_12.x_GLF_uniform_int_values[3];
+      a = x_142;
+    } else {
+      func0_();
+    }
+  }
+  let x_144 : i32 = a;
+  return x_144;
+}
+
+fn main_1() {
+  var a_1 : i32;
+  var i : i32;
+  var j : i32;
+  let x_56 : f32 = gl_FragCoord.x;
+  let x_58 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_56 > x_58)) {
+    let x_64 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_66 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_68 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_70 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_GLF_color = vec4<f32>(x_64, x_66, x_68, x_70);
+  } else {
+    let x_73 : u32 = x_16.x_GLF_uniform_uint_values[0];
+    x_GLF_color = unpack4x8snorm(x_73);
+  }
+  let x_76 : i32 = x_12.x_GLF_uniform_int_values[2];
+  a_1 = x_76;
+  i = 0;
+  loop {
+    let x_81 : i32 = i;
+    if ((x_81 < 5)) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_88 : i32 = j;
+      if ((x_88 < 2)) {
+      } else {
+        break;
+      }
+      let x_91 : i32 = func1_();
+      let x_92 : i32 = a_1;
+      a_1 = (x_92 + x_91);
+
+      continuing {
+        let x_94 : i32 = j;
+        j = (x_94 + 1);
+      }
+    }
+
+    continuing {
+      let x_96 : i32 = i;
+      i = (x_96 + 1);
+    }
+  }
+  let x_98 : i32 = a_1;
+  let x_100 : i32 = x_12.x_GLF_uniform_int_values[0];
+  if ((x_98 == x_100)) {
+    let x_105 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_107 : f32 = x_GLF_color.z;
+    x_GLF_color.z = (x_107 - x_105);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
new file mode 100644
index 0000000..771813e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
@@ -0,0 +1,144 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[block]]
+struct buf3 {
+  three : i32;
+};
+
+type Arr_2 = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_uint_values : Arr_2;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+
+[[group(0), binding(3)]] var<uniform> x_14 : buf3;
+
+[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+
+fn func0_() {
+  var tmp : vec4<f32>;
+  let x_112 : f32 = gl_FragCoord.x;
+  let x_114 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_112 > x_114)) {
+    let x_118 : vec4<f32> = x_GLF_color;
+    tmp = x_118;
+  }
+  let x_119 : vec4<f32> = tmp;
+  x_GLF_color = x_119;
+  return;
+}
+
+fn func1_() -> i32 {
+  var a : i32;
+  let x_122 : i32 = x_12.x_GLF_uniform_int_values[1];
+  a = x_122;
+  loop {
+    let x_127 : i32 = a;
+    let x_129 : i32 = x_12.x_GLF_uniform_int_values[3];
+    if ((x_127 < x_129)) {
+    } else {
+      break;
+    }
+    let x_133 : i32 = x_14.three;
+    let x_135 : i32 = x_12.x_GLF_uniform_int_values[1];
+    if ((x_133 > x_135)) {
+      func0_();
+      let x_142 : i32 = x_12.x_GLF_uniform_int_values[3];
+      a = x_142;
+    } else {
+      func0_();
+    }
+  }
+  let x_144 : i32 = a;
+  return x_144;
+}
+
+fn main_1() {
+  var a_1 : i32;
+  var i : i32;
+  var j : i32;
+  let x_56 : f32 = gl_FragCoord.x;
+  let x_58 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_56 > x_58)) {
+    let x_64 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_66 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_68 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_70 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_GLF_color = vec4<f32>(x_64, x_66, x_68, x_70);
+  } else {
+    let x_73 : u32 = x_16.x_GLF_uniform_uint_values[0];
+    x_GLF_color = unpack4x8snorm(x_73);
+  }
+  let x_76 : i32 = x_12.x_GLF_uniform_int_values[2];
+  a_1 = x_76;
+  i = 0;
+  loop {
+    let x_81 : i32 = i;
+    if ((x_81 < 5)) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_88 : i32 = j;
+      if ((x_88 < 2)) {
+      } else {
+        break;
+      }
+      let x_91 : i32 = func1_();
+      let x_92 : i32 = a_1;
+      a_1 = (x_92 + x_91);
+
+      continuing {
+        let x_94 : i32 = j;
+        j = (x_94 + 1);
+      }
+    }
+
+    continuing {
+      let x_96 : i32 = i;
+      i = (x_96 + 1);
+    }
+  }
+  let x_98 : i32 = a_1;
+  let x_100 : i32 = x_12.x_GLF_uniform_int_values[0];
+  if ((x_98 == x_100)) {
+    let x_105 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_107 : f32 = x_GLF_color.z;
+    x_GLF_color.z = (x_107 - x_105);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9ea252e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,119 @@
+float4 tint_unpack4x8snorm(uint param_0) {
+  int j = int(param_0);
+  int4 i = int4(j << 24, j << 16, j << 8, j) >> 24;
+  return clamp(float4(i) / 127.0, -1.0, 1.0);
+}
+
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_12 : register(b2, space0) {
+  uint4 x_12[4];
+};
+cbuffer cbuffer_x_14 : register(b3, space0) {
+  uint4 x_14[1];
+};
+cbuffer cbuffer_x_16 : register(b0, space0) {
+  uint4 x_16[1];
+};
+
+void func0_() {
+  float4 tmp = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_112 = gl_FragCoord.x;
+  const float x_114 = asfloat(x_8[1].x);
+  if ((x_112 > x_114)) {
+    tmp = x_GLF_color;
+  }
+  x_GLF_color = tmp;
+  return;
+}
+
+int func1_() {
+  int a = 0;
+  const int x_122 = asint(x_12[1].x);
+  a = x_122;
+  while (true) {
+    const int x_127 = a;
+    const int x_129 = asint(x_12[3].x);
+    if ((x_127 < x_129)) {
+    } else {
+      break;
+    }
+    const int x_133 = asint(x_14[0].x);
+    const int x_135 = asint(x_12[1].x);
+    if ((x_133 > x_135)) {
+      func0_();
+      const int x_142 = asint(x_12[3].x);
+      a = x_142;
+    } else {
+      func0_();
+    }
+  }
+  return a;
+}
+
+void main_1() {
+  int a_1 = 0;
+  int i = 0;
+  int j = 0;
+  const float x_56 = gl_FragCoord.x;
+  const float x_58 = asfloat(x_8[1].x);
+  if ((x_56 > x_58)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+    const float x_66 = asfloat(x_8[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_70 = asfloat(x_8[2].x);
+    x_GLF_color = float4(x_64, x_66, x_68, x_70);
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const uint x_73 = x_16[scalar_offset_2 / 4][scalar_offset_2 % 4];
+    x_GLF_color = tint_unpack4x8snorm(x_73);
+  }
+  const int x_76 = asint(x_12[2].x);
+  a_1 = x_76;
+  i = 0;
+  {
+    for(; (i < 5); i = (i + 1)) {
+      j = 0;
+      {
+        for(; (j < 2); j = (j + 1)) {
+          const int x_91 = func1_();
+          a_1 = (a_1 + x_91);
+        }
+      }
+    }
+  }
+  const int x_98 = a_1;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_100 = asint(x_12[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  if ((x_98 == x_100)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_105 = asfloat(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_107 = x_GLF_color.z;
+    x_GLF_color.z = (x_107 - x_105);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1cbfbfa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.msl
@@ -0,0 +1,146 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct buf3 {
+  /* 0x0000 */ int three;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_uint_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func0_(constant buf1& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4 tmp = 0.0f;
+  float const x_112 = (*(tint_symbol_5)).x;
+  float const x_114 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_112 > x_114)) {
+    float4 const x_118 = *(tint_symbol_6);
+    tmp = x_118;
+  }
+  float4 const x_119 = tmp;
+  *(tint_symbol_6) = x_119;
+  return;
+}
+
+int func1_(constant buf2& x_12, constant buf3& x_14, constant buf1& x_8, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  int a = 0;
+  int const x_122 = x_12.x_GLF_uniform_int_values.arr[1].el;
+  a = x_122;
+  while (true) {
+    int const x_127 = a;
+    int const x_129 = x_12.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_127 < x_129)) {
+    } else {
+      break;
+    }
+    int const x_133 = x_14.three;
+    int const x_135 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_133 > x_135)) {
+      func0_(x_8, tint_symbol_7, tint_symbol_8);
+      int const x_142 = x_12.x_GLF_uniform_int_values.arr[3].el;
+      a = x_142;
+    } else {
+      func0_(x_8, tint_symbol_7, tint_symbol_8);
+    }
+  }
+  int const x_144 = a;
+  return x_144;
+}
+
+void main_1(constant buf1& x_8, constant buf0& x_16, constant buf2& x_12, constant buf3& x_14, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int a_1 = 0;
+  int i = 0;
+  int j = 0;
+  float const x_56 = (*(tint_symbol_9)).x;
+  float const x_58 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_56 > x_58)) {
+    float const x_64 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_66 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    float const x_68 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_70 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    *(tint_symbol_10) = float4(x_64, x_66, x_68, x_70);
+  } else {
+    uint const x_73 = x_16.x_GLF_uniform_uint_values.arr[0].el;
+    *(tint_symbol_10) = unpack_snorm4x8_to_float(x_73);
+  }
+  int const x_76 = x_12.x_GLF_uniform_int_values.arr[2].el;
+  a_1 = x_76;
+  i = 0;
+  while (true) {
+    int const x_81 = i;
+    if ((x_81 < 5)) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      int const x_88 = j;
+      if ((x_88 < 2)) {
+      } else {
+        break;
+      }
+      int const x_91 = func1_(x_12, x_14, x_8, tint_symbol_9, tint_symbol_10);
+      int const x_92 = a_1;
+      a_1 = (x_92 + x_91);
+      {
+        int const x_94 = j;
+        j = (x_94 + 1);
+      }
+    }
+    {
+      int const x_96 = i;
+      i = (x_96 + 1);
+    }
+  }
+  int const x_98 = a_1;
+  int const x_100 = x_12.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_98 == x_100)) {
+    float const x_105 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_107 = (*(tint_symbol_10)).z;
+    (*(tint_symbol_10)).z = (x_107 - x_105);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_16 [[buffer(0)]], constant buf2& x_12 [[buffer(2)]], constant buf3& x_14 [[buffer(3)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_8, x_16, x_12, x_14, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..aa2284f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,297 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 168
+; Schema: 0
+               OpCapability Shader
+        %113 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %buf3 "buf3"
+               OpMemberName %buf3 0 "three"
+               OpName %x_14 "x_14"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_uint_values"
+               OpName %x_16 "x_16"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func0_ "func0_"
+               OpName %tmp "tmp"
+               OpName %func1_ "func1_"
+               OpName %a "a"
+               OpName %main_1 "main_1"
+               OpName %a_1 "a_1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 2
+               OpDecorate %buf3 Block
+               OpMemberDecorate %buf3 0 Offset 0
+               OpDecorate %x_14 NonWritable
+               OpDecorate %x_14 DescriptorSet 0
+               OpDecorate %x_14 Binding 3
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpDecorate %x_16 NonWritable
+               OpDecorate %x_16 DescriptorSet 0
+               OpDecorate %x_16 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf2 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_12 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %buf3 = OpTypeStruct %int
+%_ptr_Uniform_buf3 = OpTypePointer Uniform %buf3
+       %x_14 = OpVariable %_ptr_Uniform_buf3 Uniform
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf0 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_16 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %31 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+         %51 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %56 = OpConstantNull %int
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+      %int_5 = OpConstant %int 5
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+        %155 = OpTypeFunction %void %main_out
+     %func0_ = OpFunction %void None %31
+         %34 = OpLabel
+        %tmp = OpVariable %_ptr_Function_v4float Function %5
+         %39 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %40 = OpLoad %float %39
+         %43 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %44 = OpLoad %float %43
+         %45 = OpFOrdGreaterThan %bool %40 %44
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %47
+         %48 = OpLabel
+         %49 = OpLoad %v4float %x_GLF_color
+               OpStore %tmp %49
+               OpBranch %47
+         %47 = OpLabel
+         %50 = OpLoad %v4float %tmp
+               OpStore %x_GLF_color %50
+               OpReturn
+               OpFunctionEnd
+     %func1_ = OpFunction %int None %51
+         %53 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %56
+         %58 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %59 = OpLoad %int %58
+               OpStore %a %59
+               OpBranch %60
+         %60 = OpLabel
+               OpLoopMerge %61 %62 None
+               OpBranch %63
+         %63 = OpLabel
+         %64 = OpLoad %int %a
+         %66 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_3
+         %67 = OpLoad %int %66
+         %68 = OpSLessThan %bool %64 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+               OpBranch %69
+         %71 = OpLabel
+               OpBranch %61
+         %69 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpSGreaterThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+         %80 = OpFunctionCall %void %func0_
+         %81 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_3
+         %82 = OpLoad %int %81
+               OpStore %a %82
+               OpBranch %77
+         %79 = OpLabel
+         %83 = OpFunctionCall %void %func0_
+               OpBranch %77
+         %77 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+               OpBranch %60
+         %61 = OpLabel
+         %84 = OpLoad %int %a
+               OpReturnValue %84
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %31
+         %86 = OpLabel
+        %a_1 = OpVariable %_ptr_Function_int Function %56
+          %i = OpVariable %_ptr_Function_int Function %56
+          %j = OpVariable %_ptr_Function_int Function %56
+         %90 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %93 = OpLoad %float %92
+         %94 = OpFOrdGreaterThan %bool %91 %93
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+         %99 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+        %100 = OpLoad %float %99
+        %101 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %102 = OpLoad %float %101
+        %103 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %107 = OpLoad %float %106
+        %108 = OpCompositeConstruct %v4float %100 %102 %104 %107
+               OpStore %x_GLF_color %108
+               OpBranch %95
+         %97 = OpLabel
+        %110 = OpAccessChain %_ptr_Uniform_uint %x_16 %uint_0 %int_0
+        %111 = OpLoad %uint %110
+        %112 = OpExtInst %v4float %113 UnpackSnorm4x8 %111
+               OpStore %x_GLF_color %112
+               OpBranch %95
+         %95 = OpLabel
+        %114 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_2
+        %115 = OpLoad %int %114
+               OpStore %a_1 %115
+               OpStore %i %int_0
+               OpBranch %116
+        %116 = OpLabel
+               OpLoopMerge %117 %118 None
+               OpBranch %119
+        %119 = OpLabel
+        %120 = OpLoad %int %i
+        %122 = OpSLessThan %bool %120 %int_5
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %125
+        %124 = OpLabel
+               OpBranch %123
+        %125 = OpLabel
+               OpBranch %117
+        %123 = OpLabel
+               OpStore %j %int_0
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %130 = OpLoad %int %j
+        %131 = OpSLessThan %bool %130 %int_2
+               OpSelectionMerge %132 None
+               OpBranchConditional %131 %133 %134
+        %133 = OpLabel
+               OpBranch %132
+        %134 = OpLabel
+               OpBranch %127
+        %132 = OpLabel
+        %135 = OpFunctionCall %int %func1_
+        %136 = OpLoad %int %a_1
+        %137 = OpIAdd %int %136 %135
+               OpStore %a_1 %137
+               OpBranch %128
+        %128 = OpLabel
+        %138 = OpLoad %int %j
+        %139 = OpIAdd %int %138 %int_1
+               OpStore %j %139
+               OpBranch %126
+        %127 = OpLabel
+               OpBranch %118
+        %118 = OpLabel
+        %140 = OpLoad %int %i
+        %141 = OpIAdd %int %140 %int_1
+               OpStore %i %141
+               OpBranch %116
+        %117 = OpLabel
+        %142 = OpLoad %int %a_1
+        %143 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %144 = OpLoad %int %143
+        %145 = OpIEqual %bool %142 %144
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+        %149 = OpLoad %float %148
+        %151 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_2
+        %152 = OpLoad %float %151
+        %153 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_2
+        %154 = OpFSub %float %152 %149
+               OpStore %153 %154
+               OpBranch %146
+        %146 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %155
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %159 = OpLabel
+        %160 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %160
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %31
+        %162 = OpLabel
+        %163 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %163
+        %164 = OpFunctionCall %void %main_1
+        %166 = OpLoad %v4float %x_GLF_color
+        %167 = OpCompositeConstruct %main_out %166
+        %165 = OpFunctionCall %void %tint_symbol_3 %167
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..771813e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,144 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[block]]
+struct buf3 {
+  three : i32;
+};
+
+type Arr_2 = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_uint_values : Arr_2;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+
+[[group(0), binding(3)]] var<uniform> x_14 : buf3;
+
+[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+
+fn func0_() {
+  var tmp : vec4<f32>;
+  let x_112 : f32 = gl_FragCoord.x;
+  let x_114 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_112 > x_114)) {
+    let x_118 : vec4<f32> = x_GLF_color;
+    tmp = x_118;
+  }
+  let x_119 : vec4<f32> = tmp;
+  x_GLF_color = x_119;
+  return;
+}
+
+fn func1_() -> i32 {
+  var a : i32;
+  let x_122 : i32 = x_12.x_GLF_uniform_int_values[1];
+  a = x_122;
+  loop {
+    let x_127 : i32 = a;
+    let x_129 : i32 = x_12.x_GLF_uniform_int_values[3];
+    if ((x_127 < x_129)) {
+    } else {
+      break;
+    }
+    let x_133 : i32 = x_14.three;
+    let x_135 : i32 = x_12.x_GLF_uniform_int_values[1];
+    if ((x_133 > x_135)) {
+      func0_();
+      let x_142 : i32 = x_12.x_GLF_uniform_int_values[3];
+      a = x_142;
+    } else {
+      func0_();
+    }
+  }
+  let x_144 : i32 = a;
+  return x_144;
+}
+
+fn main_1() {
+  var a_1 : i32;
+  var i : i32;
+  var j : i32;
+  let x_56 : f32 = gl_FragCoord.x;
+  let x_58 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_56 > x_58)) {
+    let x_64 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_66 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_68 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_70 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_GLF_color = vec4<f32>(x_64, x_66, x_68, x_70);
+  } else {
+    let x_73 : u32 = x_16.x_GLF_uniform_uint_values[0];
+    x_GLF_color = unpack4x8snorm(x_73);
+  }
+  let x_76 : i32 = x_12.x_GLF_uniform_int_values[2];
+  a_1 = x_76;
+  i = 0;
+  loop {
+    let x_81 : i32 = i;
+    if ((x_81 < 5)) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_88 : i32 = j;
+      if ((x_88 < 2)) {
+      } else {
+        break;
+      }
+      let x_91 : i32 = func1_();
+      let x_92 : i32 = a_1;
+      a_1 = (x_92 + x_91);
+
+      continuing {
+        let x_94 : i32 = j;
+        j = (x_94 + 1);
+      }
+    }
+
+    continuing {
+      let x_96 : i32 = i;
+      i = (x_96 + 1);
+    }
+  }
+  let x_98 : i32 = a_1;
+  let x_100 : i32 = x_12.x_GLF_uniform_int_values[0];
+  if ((x_98 == x_100)) {
+    let x_105 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_107 : f32 = x_GLF_color.z;
+    x_GLF_color.z = (x_107 - x_105);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm
new file mode 100644
index 0000000..75c8e10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm
@@ -0,0 +1,93 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf0 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+   %float_10 = OpConstant %float 10
+%mat4v4float = OpTypeMatrix %v4float 4
+    %float_0 = OpConstant %float 0
+       %main = OpFunction %void None %9
+         %31 = OpLabel
+         %32 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %33 = OpLoad %float %32
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %35 = OpLoad %float %34
+         %36 = OpFOrdGreaterThan %bool %33 %35
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %40 = OpLoad %float %39
+         %41 = OpCompositeConstruct %v4float %40 %40 %40 %40
+               OpStore %_GLF_color %41
+         %42 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %43 = OpLoad %float %42
+         %44 = OpFOrdGreaterThan %bool %43 %35
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_4
+         %48 = OpLoad %float %47
+         %49 = OpCompositeConstruct %v4float %48 %48 %48 %48
+               OpStore %_GLF_color %49
+               OpBranch %45
+         %45 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %51 = OpLoad %float %50
+         %52 = OpCompositeConstruct %v4float %51 %51 %51 %51
+               OpStore %_GLF_color %52
+               OpBranch %37
+         %37 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %54 = OpLoad %float %53
+         %55 = OpCompositeConstruct %v4float %35 %54 %54 %float_10
+               OpStore %_GLF_color %55
+         %56 = OpCompositeConstruct %v4float %35 %float_0 %float_0 %float_0
+         %57 = OpCompositeConstruct %v4float %float_0 %35 %float_0 %float_0
+         %58 = OpCompositeConstruct %v4float %float_0 %float_0 %35 %float_0
+         %59 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %35
+         %60 = OpCompositeConstruct %mat4v4float %56 %57 %58 %59
+         %61 = OpLoad %v4float %_GLF_color
+         %62 = OpMatrixTimesVector %v4float %60 %61
+               OpStore %_GLF_color %62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..87a0b35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.hlsl
@@ -0,0 +1,45 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_33 = gl_FragCoord.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_35 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_33 > x_35)) {
+    const float x_40 = asfloat(x_6[2].x);
+    x_GLF_color = float4(x_40, x_40, x_40, x_40);
+    const float x_43 = gl_FragCoord.y;
+    if ((x_43 > x_35)) {
+      const float x_48 = asfloat(x_6[4].x);
+      x_GLF_color = float4(x_48, x_48, x_48, x_48);
+    }
+    const float x_51 = asfloat(x_6[3].x);
+    x_GLF_color = float4(x_51, x_51, x_51, x_51);
+  }
+  const float x_54 = asfloat(x_6[1].x);
+  x_GLF_color = float4(x_35, x_54, x_54, 10.0f);
+  x_GLF_color = mul(x_GLF_color, float4x4(float4(x_35, 0.0f, 0.0f, 0.0f), float4(0.0f, x_35, 0.0f, 0.0f), float4(0.0f, 0.0f, x_35, 0.0f), float4(0.0f, 0.0f, 0.0f, x_35)));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.msl
new file mode 100644
index 0000000..1102160
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.msl
@@ -0,0 +1,51 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_33 = (*(tint_symbol_5)).x;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_33 > x_35)) {
+    float const x_40 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    *(tint_symbol_6) = float4(x_40, x_40, x_40, x_40);
+    float const x_43 = (*(tint_symbol_5)).y;
+    if ((x_43 > x_35)) {
+      float const x_48 = x_6.x_GLF_uniform_float_values.arr[4].el;
+      *(tint_symbol_6) = float4(x_48, x_48, x_48, x_48);
+    }
+    float const x_51 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    *(tint_symbol_6) = float4(x_51, x_51, x_51, x_51);
+  }
+  float const x_54 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_6) = float4(x_35, x_54, x_54, 10.0f);
+  float4 const x_61 = *(tint_symbol_6);
+  *(tint_symbol_6) = (float4x4(float4(x_35, 0.0f, 0.0f, 0.0f), float4(0.0f, x_35, 0.0f, 0.0f), float4(0.0f, 0.0f, x_35, 0.0f), float4(0.0f, 0.0f, 0.0f, x_35)) * x_61);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..71352d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf0 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+   %float_10 = OpConstant %float 10
+%mat4v4float = OpTypeMatrix %v4float 4
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+         %66 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %23 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %24 = OpLoad %float %23
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %29 = OpLoad %float %28
+         %30 = OpFOrdGreaterThan %bool %24 %29
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %36 = OpLoad %float %35
+         %37 = OpCompositeConstruct %v4float %36 %36 %36 %36
+               OpStore %x_GLF_color %37
+         %39 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThan %bool %40 %29
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %46 = OpLoad %float %45
+         %47 = OpCompositeConstruct %v4float %46 %46 %46 %46
+               OpStore %x_GLF_color %47
+               OpBranch %42
+         %42 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %50 = OpLoad %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %x_GLF_color %51
+               OpBranch %32
+         %32 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %54 = OpLoad %float %53
+         %56 = OpCompositeConstruct %v4float %29 %54 %54 %float_10
+               OpStore %x_GLF_color %56
+         %57 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %v4float %29 %float_0 %float_0 %float_0
+         %61 = OpCompositeConstruct %v4float %float_0 %29 %float_0 %float_0
+         %62 = OpCompositeConstruct %v4float %float_0 %float_0 %29 %float_0
+         %63 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %29
+         %64 = OpCompositeConstruct %mat4v4float %60 %61 %62 %63
+         %65 = OpMatrixTimesVector %v4float %64 %57
+               OpStore %x_GLF_color %65
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %66
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %70 = OpLabel
+         %71 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %73 = OpLabel
+         %74 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %74
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_3 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..4b6e9c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.spvasm.expected.wgsl
@@ -0,0 +1,45 @@
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_33 : f32 = gl_FragCoord.x;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_33 > x_35)) {
+    let x_40 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_GLF_color = vec4<f32>(x_40, x_40, x_40, x_40);
+    let x_43 : f32 = gl_FragCoord.y;
+    if ((x_43 > x_35)) {
+      let x_48 : f32 = x_6.x_GLF_uniform_float_values[4];
+      x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+    }
+    let x_51 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_GLF_color = vec4<f32>(x_51, x_51, x_51, x_51);
+  }
+  let x_54 : f32 = x_6.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_35, x_54, x_54, 10.0);
+  let x_61 : vec4<f32> = x_GLF_color;
+  x_GLF_color = (mat4x4<f32>(vec4<f32>(x_35, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_35, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_35, 0.0), vec4<f32>(0.0, 0.0, 0.0, x_35)) * x_61);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
new file mode 100644
index 0000000..4b6e9c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
@@ -0,0 +1,45 @@
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_33 : f32 = gl_FragCoord.x;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_33 > x_35)) {
+    let x_40 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_GLF_color = vec4<f32>(x_40, x_40, x_40, x_40);
+    let x_43 : f32 = gl_FragCoord.y;
+    if ((x_43 > x_35)) {
+      let x_48 : f32 = x_6.x_GLF_uniform_float_values[4];
+      x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+    }
+    let x_51 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_GLF_color = vec4<f32>(x_51, x_51, x_51, x_51);
+  }
+  let x_54 : f32 = x_6.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_35, x_54, x_54, 10.0);
+  let x_61 : vec4<f32> = x_GLF_color;
+  x_GLF_color = (mat4x4<f32>(vec4<f32>(x_35, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_35, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_35, 0.0), vec4<f32>(0.0, 0.0, 0.0, x_35)) * x_61);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..87a0b35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.hlsl
@@ -0,0 +1,45 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_33 = gl_FragCoord.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_35 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_33 > x_35)) {
+    const float x_40 = asfloat(x_6[2].x);
+    x_GLF_color = float4(x_40, x_40, x_40, x_40);
+    const float x_43 = gl_FragCoord.y;
+    if ((x_43 > x_35)) {
+      const float x_48 = asfloat(x_6[4].x);
+      x_GLF_color = float4(x_48, x_48, x_48, x_48);
+    }
+    const float x_51 = asfloat(x_6[3].x);
+    x_GLF_color = float4(x_51, x_51, x_51, x_51);
+  }
+  const float x_54 = asfloat(x_6[1].x);
+  x_GLF_color = float4(x_35, x_54, x_54, 10.0f);
+  x_GLF_color = mul(x_GLF_color, float4x4(float4(x_35, 0.0f, 0.0f, 0.0f), float4(0.0f, x_35, 0.0f, 0.0f), float4(0.0f, 0.0f, x_35, 0.0f), float4(0.0f, 0.0f, 0.0f, x_35)));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.msl
new file mode 100644
index 0000000..1102160
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.msl
@@ -0,0 +1,51 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_33 = (*(tint_symbol_5)).x;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_33 > x_35)) {
+    float const x_40 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    *(tint_symbol_6) = float4(x_40, x_40, x_40, x_40);
+    float const x_43 = (*(tint_symbol_5)).y;
+    if ((x_43 > x_35)) {
+      float const x_48 = x_6.x_GLF_uniform_float_values.arr[4].el;
+      *(tint_symbol_6) = float4(x_48, x_48, x_48, x_48);
+    }
+    float const x_51 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    *(tint_symbol_6) = float4(x_51, x_51, x_51, x_51);
+  }
+  float const x_54 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_6) = float4(x_35, x_54, x_54, 10.0f);
+  float4 const x_61 = *(tint_symbol_6);
+  *(tint_symbol_6) = (float4x4(float4(x_35, 0.0f, 0.0f, 0.0f), float4(0.0f, x_35, 0.0f, 0.0f), float4(0.0f, 0.0f, x_35, 0.0f), float4(0.0f, 0.0f, 0.0f, x_35)) * x_61);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..71352d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf0 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+   %float_10 = OpConstant %float 10
+%mat4v4float = OpTypeMatrix %v4float 4
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+         %66 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %23 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %24 = OpLoad %float %23
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %29 = OpLoad %float %28
+         %30 = OpFOrdGreaterThan %bool %24 %29
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %36 = OpLoad %float %35
+         %37 = OpCompositeConstruct %v4float %36 %36 %36 %36
+               OpStore %x_GLF_color %37
+         %39 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThan %bool %40 %29
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %46 = OpLoad %float %45
+         %47 = OpCompositeConstruct %v4float %46 %46 %46 %46
+               OpStore %x_GLF_color %47
+               OpBranch %42
+         %42 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %50 = OpLoad %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %x_GLF_color %51
+               OpBranch %32
+         %32 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %54 = OpLoad %float %53
+         %56 = OpCompositeConstruct %v4float %29 %54 %54 %float_10
+               OpStore %x_GLF_color %56
+         %57 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %v4float %29 %float_0 %float_0 %float_0
+         %61 = OpCompositeConstruct %v4float %float_0 %29 %float_0 %float_0
+         %62 = OpCompositeConstruct %v4float %float_0 %float_0 %29 %float_0
+         %63 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %29
+         %64 = OpCompositeConstruct %mat4v4float %60 %61 %62 %63
+         %65 = OpMatrixTimesVector %v4float %64 %57
+               OpStore %x_GLF_color %65
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %66
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %70 = OpLabel
+         %71 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %73 = OpLabel
+         %74 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %74
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_3 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..4b6e9c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl.expected.wgsl
@@ -0,0 +1,45 @@
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_33 : f32 = gl_FragCoord.x;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_33 > x_35)) {
+    let x_40 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_GLF_color = vec4<f32>(x_40, x_40, x_40, x_40);
+    let x_43 : f32 = gl_FragCoord.y;
+    if ((x_43 > x_35)) {
+      let x_48 : f32 = x_6.x_GLF_uniform_float_values[4];
+      x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+    }
+    let x_51 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_GLF_color = vec4<f32>(x_51, x_51, x_51, x_51);
+  }
+  let x_54 : f32 = x_6.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_35, x_54, x_54, 10.0);
+  let x_61 : vec4<f32> = x_GLF_color;
+  x_GLF_color = (mat4x4<f32>(vec4<f32>(x_35, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_35, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_35, 0.0), vec4<f32>(0.0, 0.0, 0.0, x_35)) * x_61);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm
new file mode 100644
index 0000000..6982d41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm
@@ -0,0 +1,112 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %b "b"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+      %false = OpConstantFalse %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %16
+         %36 = OpLabel
+          %b = OpVariable %_ptr_Function_bool Function
+               OpStore %b %true
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThan %bool %38 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %47 = OpLoad %float %46
+         %48 = OpFOrdLessThan %bool %45 %47
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+               OpStore %b %false
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+         %51 = OpLoad %bool %b
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %10 = OpLoad %int %55
+         %56 = OpConvertSToF %float %10
+         %57 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %11 = OpLoad %int %57
+         %58 = OpConvertSToF %float %11
+         %59 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %12 = OpLoad %int %59
+         %60 = OpConvertSToF %float %12
+         %61 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %13 = OpLoad %int %61
+         %62 = OpConvertSToF %float %13
+         %63 = OpCompositeConstruct %v4float %56 %58 %60 %62
+               OpStore %_GLF_color %63
+               OpBranch %52
+         %54 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %14 = OpLoad %int %64
+         %65 = OpConvertSToF %float %14
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %_GLF_color %66
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f628868
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  bool b = false;
+  b = true;
+  const float x_38 = asfloat(x_6[0].x);
+  const float x_40 = asfloat(x_6[0].y);
+  if ((x_38 > x_40)) {
+    const float x_45 = asfloat(x_6[0].x);
+    const float x_47 = asfloat(x_6[0].y);
+    if ((x_45 < x_47)) {
+      b = false;
+    }
+  }
+  if (b) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_10 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+    const int x_11 = asint(x_8[1].x);
+    const int x_12 = asint(x_8[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_13 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_10), float(x_11), float(x_12), float(x_13));
+  } else {
+    const int x_14 = asint(x_8[1].x);
+    const float x_65 = float(x_14);
+    x_GLF_color = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..944acdb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 v1;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  bool b = false;
+  b = true;
+  float const x_38 = x_6.v1.x;
+  float const x_40 = x_6.v1.y;
+  if ((x_38 > x_40)) {
+    float const x_45 = x_6.v1.x;
+    float const x_47 = x_6.v1.y;
+    if ((x_45 < x_47)) {
+      b = false;
+    }
+  }
+  bool const x_51 = b;
+  if (x_51) {
+    int const x_10 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_11 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_12 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_13 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_10), float(x_11), float(x_12), float(x_13));
+  } else {
+    int const x_14 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_65 = float(x_14);
+    *(tint_symbol_4) = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f5af17d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,139 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 82
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %26 = OpConstantNull %bool
+       %true = OpConstantTrue %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %70 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %b = OpVariable %_ptr_Function_bool Function %26
+               OpStore %b %true
+         %30 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %31 = OpLoad %float %30
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpFOrdGreaterThan %bool %31 %34
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %39 %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %b %false
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %46 = OpLoad %bool %b
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %55 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %53
+         %62 = OpConvertSToF %float %56
+         %63 = OpConvertSToF %float %58
+         %64 = OpConvertSToF %float %60
+         %65 = OpCompositeConstruct %v4float %61 %62 %63 %64
+               OpStore %x_GLF_color %65
+               OpBranch %47
+         %49 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpCompositeConstruct %v4float %68 %68 %68 %68
+               OpStore %x_GLF_color %69
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %70
+%tint_symbol = OpFunctionParameter %main_out
+         %74 = OpLabel
+         %75 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %75
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %77 = OpLabel
+         %78 = OpFunctionCall %void %main_1
+         %80 = OpLoad %v4float %x_GLF_color
+         %81 = OpCompositeConstruct %main_out %80
+         %79 = OpFunctionCall %void %tint_symbol_2 %81
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5cf4af4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,55 @@
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var b : bool;
+  b = true;
+  let x_38 : f32 = x_6.v1.x;
+  let x_40 : f32 = x_6.v1.y;
+  if ((x_38 > x_40)) {
+    let x_45 : f32 = x_6.v1.x;
+    let x_47 : f32 = x_6.v1.y;
+    if ((x_45 < x_47)) {
+      b = false;
+    }
+  }
+  let x_51 : bool = b;
+  if (x_51) {
+    let x_10 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_11 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_12 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_13 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_10), f32(x_11), f32(x_12), f32(x_13));
+  } else {
+    let x_14 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_65 : f32 = f32(x_14);
+    x_GLF_color = vec4<f32>(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
new file mode 100644
index 0000000..5cf4af4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
@@ -0,0 +1,55 @@
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var b : bool;
+  b = true;
+  let x_38 : f32 = x_6.v1.x;
+  let x_40 : f32 = x_6.v1.y;
+  if ((x_38 > x_40)) {
+    let x_45 : f32 = x_6.v1.x;
+    let x_47 : f32 = x_6.v1.y;
+    if ((x_45 < x_47)) {
+      b = false;
+    }
+  }
+  let x_51 : bool = b;
+  if (x_51) {
+    let x_10 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_11 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_12 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_13 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_10), f32(x_11), f32(x_12), f32(x_13));
+  } else {
+    let x_14 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_65 : f32 = f32(x_14);
+    x_GLF_color = vec4<f32>(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f628868
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  bool b = false;
+  b = true;
+  const float x_38 = asfloat(x_6[0].x);
+  const float x_40 = asfloat(x_6[0].y);
+  if ((x_38 > x_40)) {
+    const float x_45 = asfloat(x_6[0].x);
+    const float x_47 = asfloat(x_6[0].y);
+    if ((x_45 < x_47)) {
+      b = false;
+    }
+  }
+  if (b) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_10 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+    const int x_11 = asint(x_8[1].x);
+    const int x_12 = asint(x_8[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_13 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_10), float(x_11), float(x_12), float(x_13));
+  } else {
+    const int x_14 = asint(x_8[1].x);
+    const float x_65 = float(x_14);
+    x_GLF_color = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..944acdb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 v1;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  bool b = false;
+  b = true;
+  float const x_38 = x_6.v1.x;
+  float const x_40 = x_6.v1.y;
+  if ((x_38 > x_40)) {
+    float const x_45 = x_6.v1.x;
+    float const x_47 = x_6.v1.y;
+    if ((x_45 < x_47)) {
+      b = false;
+    }
+  }
+  bool const x_51 = b;
+  if (x_51) {
+    int const x_10 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_11 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_12 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_13 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_10), float(x_11), float(x_12), float(x_13));
+  } else {
+    int const x_14 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_65 = float(x_14);
+    *(tint_symbol_4) = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f5af17d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,139 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 82
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %26 = OpConstantNull %bool
+       %true = OpConstantTrue %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %70 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %b = OpVariable %_ptr_Function_bool Function %26
+               OpStore %b %true
+         %30 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %31 = OpLoad %float %30
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpFOrdGreaterThan %bool %31 %34
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %39 %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %b %false
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %46 = OpLoad %bool %b
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %55 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %53
+         %62 = OpConvertSToF %float %56
+         %63 = OpConvertSToF %float %58
+         %64 = OpConvertSToF %float %60
+         %65 = OpCompositeConstruct %v4float %61 %62 %63 %64
+               OpStore %x_GLF_color %65
+               OpBranch %47
+         %49 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpCompositeConstruct %v4float %68 %68 %68 %68
+               OpStore %x_GLF_color %69
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %70
+%tint_symbol = OpFunctionParameter %main_out
+         %74 = OpLabel
+         %75 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %75
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %77 = OpLabel
+         %78 = OpFunctionCall %void %main_1
+         %80 = OpLoad %v4float %x_GLF_color
+         %81 = OpCompositeConstruct %main_out %80
+         %79 = OpFunctionCall %void %tint_symbol_2 %81
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5cf4af4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,55 @@
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var b : bool;
+  b = true;
+  let x_38 : f32 = x_6.v1.x;
+  let x_40 : f32 = x_6.v1.y;
+  if ((x_38 > x_40)) {
+    let x_45 : f32 = x_6.v1.x;
+    let x_47 : f32 = x_6.v1.y;
+    if ((x_45 < x_47)) {
+      b = false;
+    }
+  }
+  let x_51 : bool = b;
+  if (x_51) {
+    let x_10 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_11 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_12 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_13 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_10), f32(x_11), f32(x_12), f32(x_13));
+  } else {
+    let x_14 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_65 : f32 = f32(x_14);
+    x_GLF_color = vec4<f32>(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm
new file mode 100644
index 0000000..483ac64
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm
@@ -0,0 +1,109 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %24 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %26 = OpLoad %int %25
+               OpStore %a %26
+         %27 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %28 = OpLoad %int %27
+               OpStore %i %28
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %35 = OpLoad %int %34
+         %36 = OpSLessThan %bool %33 %35
+               OpBranchConditional %36 %37 %30
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpNot %int %38
+         %40 = OpINotEqual %bool %39 %int_0
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+         %43 = OpLoad %int %a
+         %44 = OpIAdd %int %43 %int_1
+               OpStore %a %44
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %i %46
+               OpBranch %29
+         %30 = OpLabel
+         %47 = OpLoad %int %a
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %49 = OpLoad %int %48
+         %50 = OpIEqual %bool %47 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %56 %59 %62 %65
+               OpStore %_GLF_color %66
+               OpBranch %51
+         %53 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpCompositeConstruct %v4float %69 %69 %69 %69
+               OpStore %_GLF_color %70
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..6d029f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,57 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_26 = asint(x_6[1].x);
+  a = x_26;
+  const int x_28 = asint(x_6[1].x);
+  i = x_28;
+  while (true) {
+    const int x_33 = i;
+    const int x_35 = asint(x_6[2].x);
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    if ((~(i) != 0)) {
+      a = (a + 1);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_47 = a;
+  const int x_49 = asint(x_6[2].x);
+  if ((x_47 == x_49)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const int x_58 = asint(x_6[1].x);
+    const int x_61 = asint(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_64 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    const int x_68 = asint(x_6[1].x);
+    const float x_69 = float(x_68);
+    x_GLF_color = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..374c16d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.msl
@@ -0,0 +1,68 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_26;
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_28;
+  while (true) {
+    int const x_33 = i;
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    int const x_38 = i;
+    if ((~(x_38) != 0)) {
+      int const x_43 = a;
+      a = (x_43 + 1);
+    }
+    {
+      int const x_45 = i;
+      i = (x_45 + 1);
+    }
+  }
+  int const x_47 = a;
+  int const x_49 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_47 == x_49)) {
+    int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    int const x_68 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_69 = float(x_68);
+    *(tint_symbol_4) = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2f722c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %31
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpNot %int %43
+         %46 = OpINotEqual %bool %44 %int_0
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+         %49 = OpLoad %int %a
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %a %50
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpIAdd %int %51 %int_1
+               OpStore %i %52
+               OpBranch %30
+         %31 = OpLabel
+         %53 = OpLoad %int %a
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..0900dc7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,62 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_26;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_28;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    if ((~(x_38) != 0)) {
+      let x_43 : i32 = a;
+      a = (x_43 + 1);
+    }
+
+    continuing {
+      let x_45 : i32 = i;
+      i = (x_45 + 1);
+    }
+  }
+  let x_47 : i32 = a;
+  let x_49 : i32 = x_6.x_GLF_uniform_int_values[2];
+  if ((x_47 == x_49)) {
+    let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
new file mode 100644
index 0000000..0900dc7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
@@ -0,0 +1,62 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_26;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_28;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    if ((~(x_38) != 0)) {
+      let x_43 : i32 = a;
+      a = (x_43 + 1);
+    }
+
+    continuing {
+      let x_45 : i32 = i;
+      i = (x_45 + 1);
+    }
+  }
+  let x_47 : i32 = a;
+  let x_49 : i32 = x_6.x_GLF_uniform_int_values[2];
+  if ((x_47 == x_49)) {
+    let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..6d029f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,57 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_26 = asint(x_6[1].x);
+  a = x_26;
+  const int x_28 = asint(x_6[1].x);
+  i = x_28;
+  while (true) {
+    const int x_33 = i;
+    const int x_35 = asint(x_6[2].x);
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    if ((~(i) != 0)) {
+      a = (a + 1);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_47 = a;
+  const int x_49 = asint(x_6[2].x);
+  if ((x_47 == x_49)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const int x_58 = asint(x_6[1].x);
+    const int x_61 = asint(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_64 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    const int x_68 = asint(x_6[1].x);
+    const float x_69 = float(x_68);
+    x_GLF_color = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..374c16d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.msl
@@ -0,0 +1,68 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_26;
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_28;
+  while (true) {
+    int const x_33 = i;
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    int const x_38 = i;
+    if ((~(x_38) != 0)) {
+      int const x_43 = a;
+      a = (x_43 + 1);
+    }
+    {
+      int const x_45 = i;
+      i = (x_45 + 1);
+    }
+  }
+  int const x_47 = a;
+  int const x_49 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_47 == x_49)) {
+    int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    int const x_68 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_69 = float(x_68);
+    *(tint_symbol_4) = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2f722c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %31
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpNot %int %43
+         %46 = OpINotEqual %bool %44 %int_0
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+         %49 = OpLoad %int %a
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %a %50
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpIAdd %int %51 %int_1
+               OpStore %i %52
+               OpBranch %30
+         %31 = OpLabel
+         %53 = OpLoad %int %a
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..0900dc7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,62 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_26;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_28;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    if ((~(x_38) != 0)) {
+      let x_43 : i32 = a;
+      a = (x_43 + 1);
+    }
+
+    continuing {
+      let x_45 : i32 = i;
+      i = (x_45 + 1);
+    }
+  }
+  let x_47 : i32 = a;
+  let x_49 : i32 = x_6.x_GLF_uniform_int_values[2];
+  if ((x_47 == x_49)) {
+    let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm
new file mode 100644
index 0000000..92b329d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm
@@ -0,0 +1,126 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "injectionSwitch"
+               OpName %__0 ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__1 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 1
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__1 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %main = OpFunction %void None %15
+         %36 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_1
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpConvertSToF %float %41
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpConvertSToF %float %44
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpCompositeConstruct %v4float %39 %42 %45 %48
+               OpStore %_GLF_color %49
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %50
+               OpStore %i %51
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpSLessThan %bool %56 %58
+               OpBranchConditional %59 %60 %53
+         %60 = OpLabel
+         %61 = OpLoad %int %a
+         %62 = OpIAdd %int %61 %int_1
+               OpStore %a %62
+         %63 = OpSGreaterThan %bool %61 %int_3
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %53
+         %64 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %67 = OpLoad %float %66
+         %68 = OpAccessChain %_ptr_Uniform_float %__1 %int_0 %int_0
+         %69 = OpLoad %float %68
+         %70 = OpFOrdGreaterThan %bool %67 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+               OpKill
+         %71 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %73 = OpLoad %int %i
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %i %74
+               OpBranch %52
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..8a9fa57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,62 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b2, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[1];
+};
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 1;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_41 = asint(x_6[1].x);
+  const int x_44 = asint(x_6[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_38), float(x_41), float(x_44), float(x_47));
+  const int x_51 = asint(x_6[1].x);
+  i = x_51;
+  while (true) {
+    const int x_56 = i;
+    const int x_58 = asint(x_6[2].x);
+    if ((x_56 < x_58)) {
+    } else {
+      break;
+    }
+    const int x_61 = a;
+    a = (x_61 + 1);
+    if ((x_61 > 3)) {
+      break;
+    }
+    const float x_67 = asfloat(x_9[0].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_69 = asfloat(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_67 > x_69)) {
+      discard;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..51c4567
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,77 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf2& x_9, constant buf1& x_11, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 1;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_41 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_44 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_38), float(x_41), float(x_44), float(x_47));
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_51;
+  while (true) {
+    int const x_56 = i;
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_56 < x_58)) {
+    } else {
+      break;
+    }
+    int const x_61 = a;
+    a = (x_61 + 1);
+    if ((x_61 > 3)) {
+      break;
+    }
+    float const x_67 = x_9.injectionSwitch.x;
+    float const x_69 = x_11.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_67 > x_69)) {
+      discard_fragment();
+    }
+    {
+      int const x_73 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf2& x_9 [[buffer(2)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, x_11, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..978adb0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,165 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 2
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_9 = OpVariable %_ptr_Uniform_buf2 Uniform
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %24
+         %27 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %30
+          %i = OpVariable %_ptr_Function_int Function %30
+               OpStore %a %int_1
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %37
+         %45 = OpConvertSToF %float %39
+         %46 = OpConvertSToF %float %41
+         %47 = OpConvertSToF %float %43
+         %48 = OpCompositeConstruct %v4float %44 %45 %46 %47
+               OpStore %x_GLF_color %48
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+               OpStore %i %50
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+         %55 = OpLoad %int %i
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpSLessThan %bool %55 %58
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %52
+         %61 = OpLabel
+         %64 = OpLoad %int %a
+         %65 = OpIAdd %int %64 %int_1
+               OpStore %a %65
+         %67 = OpSGreaterThan %bool %64 %int_3
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpBranch %52
+         %68 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %74 = OpLoad %float %73
+         %75 = OpFOrdGreaterThan %bool %72 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+               OpKill
+         %76 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+         %78 = OpLoad %int %i
+         %79 = OpIAdd %int %78 %int_1
+               OpStore %i %79
+               OpBranch %51
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..aa0d3ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,74 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  injectionSwitch : vec2<f32>;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 1;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_41 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_38), f32(x_41), f32(x_44), f32(x_47));
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_51;
+  loop {
+    let x_56 : i32 = i;
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_56 < x_58)) {
+    } else {
+      break;
+    }
+    let x_61 : i32 = a;
+    a = (x_61 + 1);
+    if ((x_61 > 3)) {
+      break;
+    }
+    let x_67 : f32 = x_9.injectionSwitch.x;
+    let x_69 : f32 = x_11.x_GLF_uniform_float_values[0];
+    if ((x_67 > x_69)) {
+      discard;
+    }
+
+    continuing {
+      let x_73 : i32 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
new file mode 100644
index 0000000..aa0d3ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
@@ -0,0 +1,74 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  injectionSwitch : vec2<f32>;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 1;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_41 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_38), f32(x_41), f32(x_44), f32(x_47));
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_51;
+  loop {
+    let x_56 : i32 = i;
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_56 < x_58)) {
+    } else {
+      break;
+    }
+    let x_61 : i32 = a;
+    a = (x_61 + 1);
+    if ((x_61 > 3)) {
+      break;
+    }
+    let x_67 : f32 = x_9.injectionSwitch.x;
+    let x_69 : f32 = x_11.x_GLF_uniform_float_values[0];
+    if ((x_67 > x_69)) {
+      discard;
+    }
+
+    continuing {
+      let x_73 : i32 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..8a9fa57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,62 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b2, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[1];
+};
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 1;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_41 = asint(x_6[1].x);
+  const int x_44 = asint(x_6[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_38), float(x_41), float(x_44), float(x_47));
+  const int x_51 = asint(x_6[1].x);
+  i = x_51;
+  while (true) {
+    const int x_56 = i;
+    const int x_58 = asint(x_6[2].x);
+    if ((x_56 < x_58)) {
+    } else {
+      break;
+    }
+    const int x_61 = a;
+    a = (x_61 + 1);
+    if ((x_61 > 3)) {
+      break;
+    }
+    const float x_67 = asfloat(x_9[0].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_69 = asfloat(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_67 > x_69)) {
+      discard;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..51c4567
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,77 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf2& x_9, constant buf1& x_11, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 1;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_41 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_44 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_38), float(x_41), float(x_44), float(x_47));
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_51;
+  while (true) {
+    int const x_56 = i;
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_56 < x_58)) {
+    } else {
+      break;
+    }
+    int const x_61 = a;
+    a = (x_61 + 1);
+    if ((x_61 > 3)) {
+      break;
+    }
+    float const x_67 = x_9.injectionSwitch.x;
+    float const x_69 = x_11.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_67 > x_69)) {
+      discard_fragment();
+    }
+    {
+      int const x_73 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf2& x_9 [[buffer(2)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, x_11, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..978adb0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,165 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 2
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_9 = OpVariable %_ptr_Uniform_buf2 Uniform
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %24
+         %27 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %30
+          %i = OpVariable %_ptr_Function_int Function %30
+               OpStore %a %int_1
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %37
+         %45 = OpConvertSToF %float %39
+         %46 = OpConvertSToF %float %41
+         %47 = OpConvertSToF %float %43
+         %48 = OpCompositeConstruct %v4float %44 %45 %46 %47
+               OpStore %x_GLF_color %48
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+               OpStore %i %50
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+         %55 = OpLoad %int %i
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpSLessThan %bool %55 %58
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %52
+         %61 = OpLabel
+         %64 = OpLoad %int %a
+         %65 = OpIAdd %int %64 %int_1
+               OpStore %a %65
+         %67 = OpSGreaterThan %bool %64 %int_3
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpBranch %52
+         %68 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %74 = OpLoad %float %73
+         %75 = OpFOrdGreaterThan %bool %72 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+               OpKill
+         %76 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+         %78 = OpLoad %int %i
+         %79 = OpIAdd %int %78 %int_1
+               OpStore %i %79
+               OpBranch %51
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..aa0d3ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,74 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  injectionSwitch : vec2<f32>;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 1;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_41 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_38), f32(x_41), f32(x_44), f32(x_47));
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_51;
+  loop {
+    let x_56 : i32 = i;
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_56 < x_58)) {
+    } else {
+      break;
+    }
+    let x_61 : i32 = a;
+    a = (x_61 + 1);
+    if ((x_61 > 3)) {
+      break;
+    }
+    let x_67 : f32 = x_9.injectionSwitch.x;
+    let x_69 : f32 = x_11.x_GLF_uniform_float_values[0];
+    if ((x_67 > x_69)) {
+      discard;
+    }
+
+    continuing {
+      let x_73 : i32 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm
new file mode 100644
index 0000000..84990a8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm
@@ -0,0 +1,65 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "quarter"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%float_424_113007 = OpConstant %float 424.113007
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_1_29999995 = OpConstant %float 1.29999995
+%float_19_6200008 = OpConstant %float 19.6200008
+  %float_425 = OpConstant %float 425
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+   %float_20 = OpConstant %float 20
+         %23 = OpConstantComposite %v4float %float_425 %float_1 %float_2 %float_20
+       %bool = OpTypeBool
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %30 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %32 = OpLoad %float %31
+         %33 = OpCompositeConstruct %v4float %float_424_113007 %32 %float_1_29999995 %float_19_6200008
+         %34 = OpExtInst %v4float %1 Ceil %33
+               OpStore %v %34
+         %35 = OpLoad %v4float %v
+         %36 = OpFOrdEqual %v4bool %35 %23
+         %37 = OpAll %bool %36
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %38
+         %40 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1009de2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_32 = asfloat(x_6[0].x);
+  v = ceil(float4(424.113006592f, x_32, 1.299999952f, 19.620000839f));
+  if (all((v == float4(425.0f, 1.0f, 2.0f, 20.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8e6db1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float quarter;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float const x_32 = x_6.quarter;
+  v = ceil(float4(424.113006592f, x_32, 1.299999952f, 19.620000839f));
+  float4 const x_35 = v;
+  if (all((x_35 == float4(425.0f, 1.0f, 2.0f, 20.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..c4f9009
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+         %23 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "quarter"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_424_113007 = OpConstant %float 424.113007
+%float_1_29999995 = OpConstant %float 1.29999995
+%float_19_6200008 = OpConstant %float 19.6200008
+       %bool = OpTypeBool
+  %float_425 = OpConstant %float 425
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+   %float_20 = OpConstant %float 20
+         %35 = OpConstantComposite %v4float %float_425 %float_1 %float_2 %float_20
+     %v4bool = OpTypeVector %bool 4
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %8
+         %20 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %21 = OpLoad %float %20
+         %27 = OpCompositeConstruct %v4float %float_424_113007 %21 %float_1_29999995 %float_19_6200008
+         %22 = OpExtInst %v4float %23 Ceil %27
+               OpStore %v %22
+         %28 = OpLoad %v4float %v
+         %36 = OpFOrdEqual %v4bool %28 %35
+         %29 = OpAll %bool %36
+               OpSelectionMerge %38 None
+               OpBranchConditional %29 %39 %40
+         %39 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %38
+         %40 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..cb4aa38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  quarter : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_32 : f32 = x_6.quarter;
+  v = ceil(vec4<f32>(424.113006592, x_32, 1.299999952, 19.620000839));
+  let x_35 : vec4<f32> = v;
+  if (all((x_35 == vec4<f32>(425.0, 1.0, 2.0, 20.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
new file mode 100644
index 0000000..cb4aa38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  quarter : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_32 : f32 = x_6.quarter;
+  v = ceil(vec4<f32>(424.113006592, x_32, 1.299999952, 19.620000839));
+  let x_35 : vec4<f32> = v;
+  if (all((x_35 == vec4<f32>(425.0, 1.0, 2.0, 20.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1009de2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_32 = asfloat(x_6[0].x);
+  v = ceil(float4(424.113006592f, x_32, 1.299999952f, 19.620000839f));
+  if (all((v == float4(425.0f, 1.0f, 2.0f, 20.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8e6db1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float quarter;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float const x_32 = x_6.quarter;
+  v = ceil(float4(424.113006592f, x_32, 1.299999952f, 19.620000839f));
+  float4 const x_35 = v;
+  if (all((x_35 == float4(425.0f, 1.0f, 2.0f, 20.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..c4f9009
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+         %23 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "quarter"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_424_113007 = OpConstant %float 424.113007
+%float_1_29999995 = OpConstant %float 1.29999995
+%float_19_6200008 = OpConstant %float 19.6200008
+       %bool = OpTypeBool
+  %float_425 = OpConstant %float 425
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+   %float_20 = OpConstant %float 20
+         %35 = OpConstantComposite %v4float %float_425 %float_1 %float_2 %float_20
+     %v4bool = OpTypeVector %bool 4
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %8
+         %20 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %21 = OpLoad %float %20
+         %27 = OpCompositeConstruct %v4float %float_424_113007 %21 %float_1_29999995 %float_19_6200008
+         %22 = OpExtInst %v4float %23 Ceil %27
+               OpStore %v %22
+         %28 = OpLoad %v4float %v
+         %36 = OpFOrdEqual %v4bool %28 %35
+         %29 = OpAll %bool %36
+               OpSelectionMerge %38 None
+               OpBranchConditional %29 %39 %40
+         %39 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %38
+         %40 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..cb4aa38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  quarter : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_32 : f32 = x_6.quarter;
+  v = ceil(vec4<f32>(424.113006592, x_32, 1.299999952, 19.620000839));
+  let x_35 : vec4<f32> = v;
+  if (all((x_35 == vec4<f32>(425.0, 1.0, 2.0, 20.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm
new file mode 100644
index 0000000..12e9e7b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm
@@ -0,0 +1,72 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+      %int_9 = OpConstant %int 9
+       %bool = OpTypeBool
+     %int_10 = OpConstant %int 10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %23 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+               OpStore %i %int_0
+               OpStore %j %int_1
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %i
+         %29 = OpLoad %int %j
+         %30 = OpExtInst %int %1 SClamp %29 %int_5 %int_9
+         %31 = OpSLessThan %bool %28 %30
+               OpBranchConditional %31 %32 %25
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %34 = OpIAdd %int %33 %int_1
+               OpStore %i %34
+         %35 = OpLoad %int %j
+         %36 = OpIAdd %int %35 %int_1
+               OpStore %j %36
+               OpBranch %26
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+         %37 = OpLoad %int %i
+         %38 = OpIEqual %bool %37 %int_9
+         %39 = OpLoad %int %j
+         %40 = OpIEqual %bool %39 %int_10
+         %41 = OpLogicalAnd %bool %38 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..cef004d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,40 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int j = 0;
+  i = 0;
+  j = 1;
+  while (true) {
+    if ((i < clamp(j, 5, 9))) {
+    } else {
+      break;
+    }
+    i = (i + 1);
+    j = (j + 1);
+  }
+  bool tint_tmp = (i == 9);
+  if (tint_tmp) {
+    tint_tmp = (j == 10);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..35f0b9c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.msl
@@ -0,0 +1,45 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  int j = 0;
+  i = 0;
+  j = 1;
+  while (true) {
+    int const x_28 = i;
+    int const x_29 = j;
+    if ((x_28 < clamp(x_29, 5, 9))) {
+    } else {
+      break;
+    }
+    int const x_33 = i;
+    i = (x_33 + 1);
+    int const x_35 = j;
+    j = (x_35 + 1);
+  }
+  int const x_37 = i;
+  int const x_39 = j;
+  if (((x_37 == 9) && (x_39 == 10))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..99a8be5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+         %26 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+      %int_9 = OpConstant %int 9
+       %bool = OpTypeBool
+     %int_10 = OpConstant %int 10
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %51 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %52 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+          %j = OpVariable %_ptr_Function_int Function %15
+               OpStore %i %int_0
+               OpStore %j %int_1
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %23 = OpLoad %int %i
+         %24 = OpLoad %int %j
+         %25 = OpExtInst %int %26 SClamp %24 %int_5 %int_9
+         %29 = OpSLessThan %bool %23 %25
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %20
+         %31 = OpLabel
+         %34 = OpLoad %int %i
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %i %35
+         %36 = OpLoad %int %j
+         %37 = OpIAdd %int %36 %int_1
+               OpStore %j %37
+               OpBranch %21
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpLoad %int %j
+         %40 = OpIEqual %bool %38 %int_9
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+         %44 = OpIEqual %bool %39 %int_10
+               OpBranch %41
+         %41 = OpLabel
+         %45 = OpPhi %bool %40 %20 %44 %42
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %x_GLF_color %52
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..367bf40
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,39 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var j : i32;
+  i = 0;
+  j = 1;
+  loop {
+    let x_28 : i32 = i;
+    let x_29 : i32 = j;
+    if ((x_28 < clamp(x_29, 5, 9))) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = i;
+    i = (x_33 + 1);
+    let x_35 : i32 = j;
+    j = (x_35 + 1);
+  }
+  let x_37 : i32 = i;
+  let x_39 : i32 = j;
+  if (((x_37 == 9) && (x_39 == 10))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
new file mode 100644
index 0000000..367bf40
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
@@ -0,0 +1,39 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var j : i32;
+  i = 0;
+  j = 1;
+  loop {
+    let x_28 : i32 = i;
+    let x_29 : i32 = j;
+    if ((x_28 < clamp(x_29, 5, 9))) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = i;
+    i = (x_33 + 1);
+    let x_35 : i32 = j;
+    j = (x_35 + 1);
+  }
+  let x_37 : i32 = i;
+  let x_39 : i32 = j;
+  if (((x_37 == 9) && (x_39 == 10))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..cef004d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,40 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int j = 0;
+  i = 0;
+  j = 1;
+  while (true) {
+    if ((i < clamp(j, 5, 9))) {
+    } else {
+      break;
+    }
+    i = (i + 1);
+    j = (j + 1);
+  }
+  bool tint_tmp = (i == 9);
+  if (tint_tmp) {
+    tint_tmp = (j == 10);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..35f0b9c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.msl
@@ -0,0 +1,45 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  int j = 0;
+  i = 0;
+  j = 1;
+  while (true) {
+    int const x_28 = i;
+    int const x_29 = j;
+    if ((x_28 < clamp(x_29, 5, 9))) {
+    } else {
+      break;
+    }
+    int const x_33 = i;
+    i = (x_33 + 1);
+    int const x_35 = j;
+    j = (x_35 + 1);
+  }
+  int const x_37 = i;
+  int const x_39 = j;
+  if (((x_37 == 9) && (x_39 == 10))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..99a8be5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+         %26 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+      %int_9 = OpConstant %int 9
+       %bool = OpTypeBool
+     %int_10 = OpConstant %int 10
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %51 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %52 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+          %j = OpVariable %_ptr_Function_int Function %15
+               OpStore %i %int_0
+               OpStore %j %int_1
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %23 = OpLoad %int %i
+         %24 = OpLoad %int %j
+         %25 = OpExtInst %int %26 SClamp %24 %int_5 %int_9
+         %29 = OpSLessThan %bool %23 %25
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %20
+         %31 = OpLabel
+         %34 = OpLoad %int %i
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %i %35
+         %36 = OpLoad %int %j
+         %37 = OpIAdd %int %36 %int_1
+               OpStore %j %37
+               OpBranch %21
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpLoad %int %j
+         %40 = OpIEqual %bool %38 %int_9
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+         %44 = OpIEqual %bool %39 %int_10
+               OpBranch %41
+         %41 = OpLabel
+         %45 = OpPhi %bool %40 %20 %44 %42
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %x_GLF_color %52
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..367bf40
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,39 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var j : i32;
+  i = 0;
+  j = 1;
+  loop {
+    let x_28 : i32 = i;
+    let x_29 : i32 = j;
+    if ((x_28 < clamp(x_29, 5, 9))) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = i;
+    i = (x_33 + 1);
+    let x_35 : i32 = j;
+    j = (x_35 + 1);
+  }
+  let x_37 : i32 = i;
+  let x_39 : i32 = j;
+  if (((x_37 == 9) && (x_39 == 10))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm
new file mode 100644
index 0000000..8bcd480
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm
@@ -0,0 +1,58 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %float_2 = OpConstant %float 2
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+   %float_n1 = OpConstant %float -1
+    %float_0 = OpConstant %float 0
+    %v4float = OpTypeVector %float 4
+         %18 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %bool = OpTypeBool
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %23 = OpLabel
+         %24 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %25 = OpLoad %float %24
+         %26 = OpExtInst %float %1 FClamp %float_2 %25 %float_1
+         %27 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %28 = OpLoad %float %27
+         %29 = OpExtInst %float %1 FClamp %float_n1 %float_0 %28
+         %30 = OpCompositeConstruct %v4float %26 %29 %float_0 %float_1
+         %31 = OpFOrdNotEqual %v4bool %30 %18
+         %32 = OpAny %bool %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %_GLF_color %18
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..94f03e4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,29 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_25 = asfloat(x_5[0].x);
+  const float x_28 = asfloat(x_5[0].x);
+  if (any((float4(clamp(2.0f, x_25, 1.0f), clamp(-1.0f, 0.0f, x_28), 0.0f, 1.0f) != float4(1.0f, 0.0f, 0.0f, 1.0f)))) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..53f9786
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.msl
@@ -0,0 +1,32 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_25 = x_5.zero;
+  float const x_28 = x_5.zero;
+  if (any((float4(clamp(2.0f, x_25, 1.0f), clamp(-1.0f, 0.0f, x_28), 0.0f, 1.0f) != float4(1.0f, 0.0f, 0.0f, 1.0f)))) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..694832d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,90 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 51
+; Schema: 0
+               OpCapability Shader
+         %25 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %float_2 = OpConstant %float 2
+    %float_1 = OpConstant %float 1
+   %float_n1 = OpConstant %float -1
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+     %v4bool = OpTypeVector %bool 4
+         %38 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %39 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %19 = OpLoad %float %18
+         %20 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %21 = OpLoad %float %20
+         %24 = OpExtInst %float %25 NClamp %float_2 %19 %float_1
+         %28 = OpExtInst %float %25 NClamp %float_n1 %float_0 %21
+         %31 = OpCompositeConstruct %v4float %24 %28 %float_0 %float_1
+         %33 = OpFOrdNotEqual %v4bool %31 %32
+         %22 = OpAny %bool %33
+               OpSelectionMerge %35 None
+               OpBranchConditional %22 %36 %37
+         %36 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %35
+         %37 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %39
+%tint_symbol = OpFunctionParameter %main_out
+         %43 = OpLabel
+         %44 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %44
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %main_1
+         %49 = OpLoad %v4float %x_GLF_color
+         %50 = OpCompositeConstruct %main_out %49
+         %48 = OpFunctionCall %void %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ad25a06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,30 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : f32 = x_5.zero;
+  let x_28 : f32 = x_5.zero;
+  if (any((vec4<f32>(clamp(2.0, x_25, 1.0), clamp(-1.0, 0.0, x_28), 0.0, 1.0) != vec4<f32>(1.0, 0.0, 0.0, 1.0)))) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
new file mode 100644
index 0000000..ad25a06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
@@ -0,0 +1,30 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : f32 = x_5.zero;
+  let x_28 : f32 = x_5.zero;
+  if (any((vec4<f32>(clamp(2.0, x_25, 1.0), clamp(-1.0, 0.0, x_28), 0.0, 1.0) != vec4<f32>(1.0, 0.0, 0.0, 1.0)))) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..94f03e4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,29 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_25 = asfloat(x_5[0].x);
+  const float x_28 = asfloat(x_5[0].x);
+  if (any((float4(clamp(2.0f, x_25, 1.0f), clamp(-1.0f, 0.0f, x_28), 0.0f, 1.0f) != float4(1.0f, 0.0f, 0.0f, 1.0f)))) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..53f9786
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.msl
@@ -0,0 +1,32 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_25 = x_5.zero;
+  float const x_28 = x_5.zero;
+  if (any((float4(clamp(2.0f, x_25, 1.0f), clamp(-1.0f, 0.0f, x_28), 0.0f, 1.0f) != float4(1.0f, 0.0f, 0.0f, 1.0f)))) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..694832d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,90 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 51
+; Schema: 0
+               OpCapability Shader
+         %25 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %float_2 = OpConstant %float 2
+    %float_1 = OpConstant %float 1
+   %float_n1 = OpConstant %float -1
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+     %v4bool = OpTypeVector %bool 4
+         %38 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %39 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %19 = OpLoad %float %18
+         %20 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %21 = OpLoad %float %20
+         %24 = OpExtInst %float %25 NClamp %float_2 %19 %float_1
+         %28 = OpExtInst %float %25 NClamp %float_n1 %float_0 %21
+         %31 = OpCompositeConstruct %v4float %24 %28 %float_0 %float_1
+         %33 = OpFOrdNotEqual %v4bool %31 %32
+         %22 = OpAny %bool %33
+               OpSelectionMerge %35 None
+               OpBranchConditional %22 %36 %37
+         %36 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %35
+         %37 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %39
+%tint_symbol = OpFunctionParameter %main_out
+         %43 = OpLabel
+         %44 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %44
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %main_1
+         %49 = OpLoad %v4float %x_GLF_color
+         %50 = OpCompositeConstruct %main_out %49
+         %48 = OpFunctionCall %void %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ad25a06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,30 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : f32 = x_5.zero;
+  let x_28 : f32 = x_5.zero;
+  if (any((vec4<f32>(clamp(2.0, x_25, 1.0), clamp(-1.0, 0.0, x_28), 0.0, 1.0) != vec4<f32>(1.0, 0.0, 0.0, 1.0)))) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm
new file mode 100644
index 0000000..148690a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm
@@ -0,0 +1,59 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %13 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Function_float = OpTypePointer Function %float
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+       %main = OpFunction %void None %8
+         %21 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+               OpStore %_GLF_color %13
+         %22 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %23 = OpLoad %float %22
+         %24 = OpExtInst %float %1 FClamp %23 %float_1 %float_1
+               OpStore %f %24
+         %25 = OpLoad %float %f
+         %26 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %27 = OpLoad %float %26
+         %28 = OpFOrdGreaterThan %bool %25 %27
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %31
+         %30 = OpLabel
+               OpStore %_GLF_color %13
+               OpBranch %29
+         %31 = OpLabel
+         %32 = OpLoad %float %f
+         %33 = OpCompositeConstruct %v4float %32 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %33
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e17c5d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,33 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  float f = 0.0f;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_23 = asfloat(x_6[0].x);
+  f = clamp(x_23, 1.0f, 1.0f);
+  const float x_25 = f;
+  const float x_27 = asfloat(x_6[0].x);
+  if ((x_25 > x_27)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8239923
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float const x_23 = x_6.one;
+  f = clamp(x_23, 1.0f, 1.0f);
+  float const x_25 = f;
+  float const x_27 = x_6.one;
+  if ((x_25 > x_27)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    float const x_32 = f;
+    *(tint_symbol_4) = float4(x_32, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..fa00ca6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,92 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+         %26 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+               OpStore %x_GLF_color %19
+         %23 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %24 = OpLoad %float %23
+         %25 = OpExtInst %float %26 NClamp %24 %float_1 %float_1
+               OpStore %f %25
+         %28 = OpLoad %float %f
+         %29 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpFOrdGreaterThan %bool %28 %30
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %35
+         %34 = OpLabel
+               OpStore %x_GLF_color %19
+               OpBranch %33
+         %35 = OpLabel
+         %36 = OpLoad %float %f
+         %37 = OpCompositeConstruct %v4float %36 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %37
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5b41038
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var f : f32;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_23 : f32 = x_6.one;
+  f = clamp(x_23, 1.0, 1.0);
+  let x_25 : f32 = f;
+  let x_27 : f32 = x_6.one;
+  if ((x_25 > x_27)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    let x_32 : f32 = f;
+    x_GLF_color = vec4<f32>(x_32, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
new file mode 100644
index 0000000..5b41038
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var f : f32;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_23 : f32 = x_6.one;
+  f = clamp(x_23, 1.0, 1.0);
+  let x_25 : f32 = f;
+  let x_27 : f32 = x_6.one;
+  if ((x_25 > x_27)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    let x_32 : f32 = f;
+    x_GLF_color = vec4<f32>(x_32, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e17c5d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,33 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  float f = 0.0f;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_23 = asfloat(x_6[0].x);
+  f = clamp(x_23, 1.0f, 1.0f);
+  const float x_25 = f;
+  const float x_27 = asfloat(x_6[0].x);
+  if ((x_25 > x_27)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8239923
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float const x_23 = x_6.one;
+  f = clamp(x_23, 1.0f, 1.0f);
+  float const x_25 = f;
+  float const x_27 = x_6.one;
+  if ((x_25 > x_27)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    float const x_32 = f;
+    *(tint_symbol_4) = float4(x_32, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..fa00ca6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,92 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+         %26 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+               OpStore %x_GLF_color %19
+         %23 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %24 = OpLoad %float %23
+         %25 = OpExtInst %float %26 NClamp %24 %float_1 %float_1
+               OpStore %f %25
+         %28 = OpLoad %float %f
+         %29 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpFOrdGreaterThan %bool %28 %30
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %35
+         %34 = OpLabel
+               OpStore %x_GLF_color %19
+               OpBranch %33
+         %35 = OpLabel
+         %36 = OpLoad %float %f
+         %37 = OpCompositeConstruct %v4float %36 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %37
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5b41038
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var f : f32;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_23 : f32 = x_6.one;
+  f = clamp(x_23, 1.0, 1.0);
+  let x_25 : f32 = f;
+  let x_27 : f32 = x_6.one;
+  if ((x_25 > x_27)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    let x_32 : f32 = f;
+    x_GLF_color = vec4<f32>(x_32, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm
new file mode 100644
index 0000000..35ba5e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm
@@ -0,0 +1,66 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "fourtytwo"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %float_1 = OpConstant %float 1
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_42 = OpConstant %float 42
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %20 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %23 = OpLoad %float %22
+         %24 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %25 = OpLoad %float %24
+         %26 = OpExtInst %float %1 FClamp %float_1 %23 %25
+         %27 = OpFOrdGreaterThan %bool %26 %float_42
+         %28 = OpLogicalNot %bool %27
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %29
+         %30 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %32 = OpLoad %float %31
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %34 = OpLoad %float %33
+         %35 = OpExtInst %float %1 FClamp %float_1 %32 %34
+         %36 = OpFOrdLessThan %bool %35 %float_42
+               OpBranch %29
+         %29 = OpLabel
+         %37 = OpPhi %bool %27 %21 %36 %30
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %38
+         %40 = OpLabel
+               OpStore %_GLF_color %20
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..88c1339
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,39 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_36 = false;
+  bool x_37_phi = false;
+  const float x_23 = asfloat(x_5[0].x);
+  const float x_25 = asfloat(x_5[0].x);
+  const bool x_27 = (clamp(1.0f, x_23, x_25) > 42.0f);
+  x_37_phi = x_27;
+  if (!(x_27)) {
+    const float x_32 = asfloat(x_5[0].x);
+    const float x_34 = asfloat(x_5[0].x);
+    x_36 = (clamp(1.0f, x_32, x_34) < 42.0f);
+    x_37_phi = x_36;
+  }
+  if (x_37_phi) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d8002a7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float fourtytwo;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_36 = false;
+  bool x_37_phi = false;
+  float const x_23 = x_5.fourtytwo;
+  float const x_25 = x_5.fourtytwo;
+  bool const x_27 = (clamp(1.0f, x_23, x_25) > 42.0f);
+  x_37_phi = x_27;
+  if (!(x_27)) {
+    float const x_32 = x_5.fourtytwo;
+    float const x_34 = x_5.fourtytwo;
+    x_36 = (clamp(1.0f, x_32, x_34) < 42.0f);
+    x_37_phi = x_36;
+  }
+  bool const x_37 = x_37_phi;
+  if (x_37) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b6f79eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,108 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "fourtytwo"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_37_phi "x_37_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %18 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+   %float_42 = OpConstant %float 42
+    %float_0 = OpConstant %float 0
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_bool Function %18
+   %x_37_phi = OpVariable %_ptr_Function_bool Function %18
+         %23 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %24 = OpLoad %float %23
+         %25 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpExtInst %float %28 NClamp %float_1 %24 %26
+         %31 = OpFOrdGreaterThan %bool %27 %float_42
+               OpStore %x_37_phi %31
+         %32 = OpLogicalNot %bool %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %36 = OpLoad %float %35
+         %37 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpExtInst %float %28 NClamp %float_1 %36 %38
+         %40 = OpFOrdLessThan %bool %39 %float_42
+               OpStore %x_36 %40
+         %41 = OpLoad %bool %x_36
+               OpStore %x_37_phi %41
+               OpBranch %33
+         %33 = OpLabel
+         %42 = OpLoad %bool %x_37_phi
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..4969baa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,41 @@
+[[block]]
+struct buf0 {
+  fourtytwo : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool;
+  var x_37_phi : bool;
+  let x_23 : f32 = x_5.fourtytwo;
+  let x_25 : f32 = x_5.fourtytwo;
+  let x_27 : bool = (clamp(1.0, x_23, x_25) > 42.0);
+  x_37_phi = x_27;
+  if (!(x_27)) {
+    let x_32 : f32 = x_5.fourtytwo;
+    let x_34 : f32 = x_5.fourtytwo;
+    x_36 = (clamp(1.0, x_32, x_34) < 42.0);
+    x_37_phi = x_36;
+  }
+  let x_37 : bool = x_37_phi;
+  if (x_37) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
new file mode 100644
index 0000000..4969baa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
@@ -0,0 +1,41 @@
+[[block]]
+struct buf0 {
+  fourtytwo : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool;
+  var x_37_phi : bool;
+  let x_23 : f32 = x_5.fourtytwo;
+  let x_25 : f32 = x_5.fourtytwo;
+  let x_27 : bool = (clamp(1.0, x_23, x_25) > 42.0);
+  x_37_phi = x_27;
+  if (!(x_27)) {
+    let x_32 : f32 = x_5.fourtytwo;
+    let x_34 : f32 = x_5.fourtytwo;
+    x_36 = (clamp(1.0, x_32, x_34) < 42.0);
+    x_37_phi = x_36;
+  }
+  let x_37 : bool = x_37_phi;
+  if (x_37) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..88c1339
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,39 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_36 = false;
+  bool x_37_phi = false;
+  const float x_23 = asfloat(x_5[0].x);
+  const float x_25 = asfloat(x_5[0].x);
+  const bool x_27 = (clamp(1.0f, x_23, x_25) > 42.0f);
+  x_37_phi = x_27;
+  if (!(x_27)) {
+    const float x_32 = asfloat(x_5[0].x);
+    const float x_34 = asfloat(x_5[0].x);
+    x_36 = (clamp(1.0f, x_32, x_34) < 42.0f);
+    x_37_phi = x_36;
+  }
+  if (x_37_phi) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d8002a7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float fourtytwo;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_36 = false;
+  bool x_37_phi = false;
+  float const x_23 = x_5.fourtytwo;
+  float const x_25 = x_5.fourtytwo;
+  bool const x_27 = (clamp(1.0f, x_23, x_25) > 42.0f);
+  x_37_phi = x_27;
+  if (!(x_27)) {
+    float const x_32 = x_5.fourtytwo;
+    float const x_34 = x_5.fourtytwo;
+    x_36 = (clamp(1.0f, x_32, x_34) < 42.0f);
+    x_37_phi = x_36;
+  }
+  bool const x_37 = x_37_phi;
+  if (x_37) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b6f79eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,108 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "fourtytwo"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_37_phi "x_37_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %18 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+   %float_42 = OpConstant %float 42
+    %float_0 = OpConstant %float 0
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_bool Function %18
+   %x_37_phi = OpVariable %_ptr_Function_bool Function %18
+         %23 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %24 = OpLoad %float %23
+         %25 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpExtInst %float %28 NClamp %float_1 %24 %26
+         %31 = OpFOrdGreaterThan %bool %27 %float_42
+               OpStore %x_37_phi %31
+         %32 = OpLogicalNot %bool %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %36 = OpLoad %float %35
+         %37 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpExtInst %float %28 NClamp %float_1 %36 %38
+         %40 = OpFOrdLessThan %bool %39 %float_42
+               OpStore %x_36 %40
+         %41 = OpLoad %bool %x_36
+               OpStore %x_37_phi %41
+               OpBranch %33
+         %33 = OpLabel
+         %42 = OpLoad %bool %x_37_phi
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..4969baa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,41 @@
+[[block]]
+struct buf0 {
+  fourtytwo : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool;
+  var x_37_phi : bool;
+  let x_23 : f32 = x_5.fourtytwo;
+  let x_25 : f32 = x_5.fourtytwo;
+  let x_27 : bool = (clamp(1.0, x_23, x_25) > 42.0);
+  x_37_phi = x_27;
+  if (!(x_27)) {
+    let x_32 : f32 = x_5.fourtytwo;
+    let x_34 : f32 = x_5.fourtytwo;
+    x_36 = (clamp(1.0, x_32, x_34) < 42.0);
+    x_37_phi = x_36;
+  }
+  let x_37 : bool = x_37_phi;
+  if (x_37) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm
new file mode 100644
index 0000000..00630f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %one "one"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+    %v2float = OpTypeVector %float 2
+    %float_2 = OpConstant %float 2
+         %12 = OpConstantComposite %v2float %float_2 %float_1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %float_0 = OpConstant %float 0
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %6
+         %20 = OpLabel
+        %one = OpVariable %_ptr_Function_float Function
+               OpStore %one %float_1
+         %21 = OpLoad %float %one
+         %22 = OpSelect %float %true %float_0 %21
+         %23 = OpCompositeConstruct %v2float %float_1 %22
+         %24 = OpDot %float %12 %23
+         %25 = OpFOrdNotEqual %bool %24 %float_2
+               OpSelectionMerge %26 None
+               OpBranchConditional %25 %27 %28
+         %27 = OpLabel
+               OpStore %_GLF_color %18
+               OpBranch %26
+         %28 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %26
+         %26 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..5c12f10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float one = 0.0f;
+  one = 1.0f;
+  if ((dot(float2(2.0f, 1.0f), float2(1.0f, (true ? 0.0f : one))) != 2.0f)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a096be9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float one = 0.0f;
+  one = 1.0f;
+  float const x_21 = one;
+  if ((dot(float2(2.0f, 1.0f), float2(1.0f, select(x_21, 0.0f, true))) != 2.0f)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0e37e00
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,77 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %one "one"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %14 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+    %v2float = OpTypeVector %float 2
+    %float_2 = OpConstant %float 2
+         %20 = OpConstantComposite %v2float %float_2 %float_1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %float_0 = OpConstant %float 0
+         %30 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+        %one = OpVariable %_ptr_Function_float Function %14
+               OpStore %one %float_1
+         %16 = OpLoad %float %one
+         %21 = OpSelect %float %true %float_0 %16
+         %25 = OpCompositeConstruct %v2float %float_1 %21
+         %17 = OpDot %float %20 %25
+         %26 = OpFOrdNotEqual %bool %17 %float_2
+               OpSelectionMerge %27 None
+               OpBranchConditional %26 %28 %29
+         %28 = OpLabel
+               OpStore %x_GLF_color %30
+               OpBranch %27
+         %29 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2617e9c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var one : f32;
+  one = 1.0;
+  let x_21 : f32 = one;
+  if ((dot(vec2<f32>(2.0, 1.0), vec2<f32>(1.0, select(x_21, 0.0, true))) != 2.0)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
new file mode 100644
index 0000000..2617e9c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var one : f32;
+  one = 1.0;
+  let x_21 : f32 = one;
+  if ((dot(vec2<f32>(2.0, 1.0), vec2<f32>(1.0, select(x_21, 0.0, true))) != 2.0)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..5c12f10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float one = 0.0f;
+  one = 1.0f;
+  if ((dot(float2(2.0f, 1.0f), float2(1.0f, (true ? 0.0f : one))) != 2.0f)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a096be9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float one = 0.0f;
+  one = 1.0f;
+  float const x_21 = one;
+  if ((dot(float2(2.0f, 1.0f), float2(1.0f, select(x_21, 0.0f, true))) != 2.0f)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0e37e00
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,77 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %one "one"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %14 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+    %v2float = OpTypeVector %float 2
+    %float_2 = OpConstant %float 2
+         %20 = OpConstantComposite %v2float %float_2 %float_1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %float_0 = OpConstant %float 0
+         %30 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+        %one = OpVariable %_ptr_Function_float Function %14
+               OpStore %one %float_1
+         %16 = OpLoad %float %one
+         %21 = OpSelect %float %true %float_0 %16
+         %25 = OpCompositeConstruct %v2float %float_1 %21
+         %17 = OpDot %float %20 %25
+         %26 = OpFOrdNotEqual %bool %17 %float_2
+               OpSelectionMerge %27 None
+               OpBranchConditional %26 %28 %29
+         %28 = OpLabel
+               OpStore %x_GLF_color %30
+               OpBranch %27
+         %29 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2617e9c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var one : f32;
+  one = 1.0;
+  let x_21 : f32 = one;
+  if ((dot(vec2<f32>(2.0, 1.0), vec2<f32>(1.0, select(x_21, 0.0, true))) != 2.0)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm
new file mode 100644
index 0000000..82fac22
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm
@@ -0,0 +1,62 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %float_3 = OpConstant %float 3
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %27 = OpLabel
+         %28 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %29 = OpLoad %float %28
+         %30 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %31 = OpLoad %float %30
+         %32 = OpFAdd %float %float_2 %31
+         %33 = OpExtInst %float %1 FClamp %29 %float_1 %32
+         %34 = OpFOrdGreaterThanEqual %bool %float_3 %33
+               OpSelectionMerge %35 None
+               OpBranchConditional %34 %36 %37
+         %36 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %35
+         %37 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..1ca0a69
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.hlsl
@@ -0,0 +1,35 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_29 = gl_FragCoord.x;
+  const float x_31 = asfloat(x_6[0].x);
+  if ((3.0f >= clamp(x_29, 1.0f, (2.0f + x_31)))) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.msl
new file mode 100644
index 0000000..6dd8555
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_29 = (*(tint_symbol_5)).x;
+  float const x_31 = x_6.one;
+  if ((3.0f >= clamp(x_29, 1.0f, (2.0f + x_31)))) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..b16c6e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.spvasm
@@ -0,0 +1,96 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_3 = OpConstant %float 3
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %40 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %22 = OpLoad %float %21
+         %24 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %25 = OpLoad %float %24
+         %31 = OpFAdd %float %float_2 %25
+         %27 = OpExtInst %float %28 NClamp %22 %float_1 %31
+         %32 = OpFOrdGreaterThanEqual %bool %float_3 %27
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %34
+         %36 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %40
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %44 = OpLabel
+         %45 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %47 = OpLabel
+         %48 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %48
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_3 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..12d7ca4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.spvasm.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_29 : f32 = gl_FragCoord.x;
+  let x_31 : f32 = x_6.one;
+  if ((3.0 >= clamp(x_29, 1.0, (2.0 + x_31)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
new file mode 100644
index 0000000..12d7ca4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_29 : f32 = gl_FragCoord.x;
+  let x_31 : f32 = x_6.one;
+  if ((3.0 >= clamp(x_29, 1.0, (2.0 + x_31)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..1ca0a69
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_29 = gl_FragCoord.x;
+  const float x_31 = asfloat(x_6[0].x);
+  if ((3.0f >= clamp(x_29, 1.0f, (2.0f + x_31)))) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.msl
new file mode 100644
index 0000000..6dd8555
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_29 = (*(tint_symbol_5)).x;
+  float const x_31 = x_6.one;
+  if ((3.0f >= clamp(x_29, 1.0f, (2.0f + x_31)))) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..b16c6e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.spvasm
@@ -0,0 +1,96 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_3 = OpConstant %float 3
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %40 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %22 = OpLoad %float %21
+         %24 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %25 = OpLoad %float %24
+         %31 = OpFAdd %float %float_2 %25
+         %27 = OpExtInst %float %28 NClamp %22 %float_1 %31
+         %32 = OpFOrdGreaterThanEqual %bool %float_3 %27
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %34
+         %36 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %40
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %44 = OpLabel
+         %45 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %47 = OpLabel
+         %48 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %48
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_3 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..12d7ca4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_29 : f32 = gl_FragCoord.x;
+  let x_31 : f32 = x_6.one;
+  if ((3.0 >= clamp(x_29, 1.0, (2.0 + x_31)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm
new file mode 100644
index 0000000..a02f599
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm
@@ -0,0 +1,133 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %highSigned "highSigned"
+               OpName %highUnsigned "highUnsigned"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %data "data"
+               OpName %i_0 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+     %uint_2 = OpConstant %uint 2
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+    %uint_10 = OpConstant %uint 10
+      %int_6 = OpConstant %int 6
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %35 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %12
+         %37 = OpLabel
+ %highSigned = OpVariable %_ptr_Function_int Function
+%highUnsigned = OpVariable %_ptr_Function_uint Function
+          %i = OpVariable %_ptr_Function_int Function
+       %data = OpVariable %_ptr_Function__arr_int_uint_2 Function
+        %i_0 = OpVariable %_ptr_Function_uint Function
+               OpStore %highSigned %int_1
+               OpStore %highUnsigned %uint_2
+               OpStore %i %int_0
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpLoad %int %i
+         %43 = OpLoad %int %highSigned
+         %44 = OpExtInst %int %1 SMin %int_10 %43
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %46 = OpLoad %int %45
+         %47 = OpIAdd %int %44 %46
+         %48 = OpSLessThan %bool %42 %47
+               OpBranchConditional %48 %49 %39
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Function_int %data %50
+               OpStore %51 %int_5
+               OpBranch %40
+         %40 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %38
+         %39 = OpLabel
+               OpStore %i_0 %uint_1
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %uint %i_0
+         %59 = OpLoad %uint %highUnsigned
+         %60 = OpExtInst %uint %1 UMin %uint_10 %59
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %62 = OpLoad %int %61
+         %63 = OpBitcast %uint %62
+         %64 = OpIAdd %uint %60 %63
+         %65 = OpULessThan %bool %58 %64
+               OpBranchConditional %65 %66 %55
+         %66 = OpLabel
+         %67 = OpLoad %uint %i_0
+         %68 = OpAccessChain %_ptr_Function_int %data %67
+               OpStore %68 %int_6
+               OpBranch %56
+         %56 = OpLabel
+         %69 = OpLoad %uint %i_0
+         %70 = OpIAdd %uint %69 %int_1
+               OpStore %i_0 %70
+               OpBranch %54
+         %55 = OpLabel
+         %71 = OpAccessChain %_ptr_Function_int %data %int_0
+         %72 = OpLoad %int %71
+         %73 = OpIEqual %bool %72 %int_5
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+         %76 = OpAccessChain %_ptr_Function_int %data %int_1
+         %77 = OpLoad %int %76
+         %78 = OpIEqual %bool %77 %int_6
+               OpBranch %74
+         %74 = OpLabel
+         %79 = OpPhi %bool %73 %55 %78 %75
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpStore %_GLF_color %35
+               OpBranch %80
+         %82 = OpLabel
+               OpStore %_GLF_color %36
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..fa2f460
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int highSigned = 0;
+  uint highUnsigned = 0u;
+  int i = 0;
+  int data[2] = (int[2])0;
+  uint i_1 = 0u;
+  bool x_78 = false;
+  bool x_79_phi = false;
+  highSigned = 1;
+  highUnsigned = 2u;
+  i = 0;
+  while (true) {
+    const int x_42 = i;
+    const int x_43 = highSigned;
+    const int x_46 = asint(x_8[0].x);
+    if ((x_42 < (min(10, x_43) + x_46))) {
+    } else {
+      break;
+    }
+    data[i] = 5;
+    {
+      i = (i + 1);
+    }
+  }
+  i_1 = 1u;
+  while (true) {
+    const uint x_58 = i_1;
+    const uint x_59 = highUnsigned;
+    const int x_62 = asint(x_8[0].x);
+    if ((x_58 < (min(10u, x_59) + asuint(x_62)))) {
+    } else {
+      break;
+    }
+    data[i_1] = 6;
+    {
+      i_1 = (i_1 + asuint(1));
+    }
+  }
+  const int x_72 = data[0];
+  const bool x_73 = (x_72 == 5);
+  x_79_phi = x_73;
+  if (x_73) {
+    const int x_77 = data[1];
+    x_78 = (x_77 == 6);
+    x_79_phi = x_78;
+  }
+  if (x_79_phi) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b29ecd0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int highSigned = 0;
+  uint highUnsigned = 0u;
+  int i = 0;
+  tint_array_wrapper data = {};
+  uint i_1 = 0u;
+  bool x_78 = false;
+  bool x_79_phi = false;
+  highSigned = 1;
+  highUnsigned = 2u;
+  i = 0;
+  while (true) {
+    int const x_42 = i;
+    int const x_43 = highSigned;
+    int const x_46 = x_8.zero;
+    if ((x_42 < (min(10, x_43) + x_46))) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    data.arr[x_50] = 5;
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  i_1 = 1u;
+  while (true) {
+    uint const x_58 = i_1;
+    uint const x_59 = highUnsigned;
+    int const x_62 = x_8.zero;
+    if ((x_58 < (min(10u, x_59) + as_type<uint>(x_62)))) {
+    } else {
+      break;
+    }
+    uint const x_67 = i_1;
+    data.arr[x_67] = 6;
+    {
+      uint const x_69 = i_1;
+      i_1 = (x_69 + as_type<uint>(1));
+    }
+  }
+  int const x_72 = data.arr[0];
+  bool const x_73 = (x_72 == 5);
+  x_79_phi = x_73;
+  if (x_73) {
+    int const x_77 = data.arr[1];
+    x_78 = (x_77 == 6);
+    x_79_phi = x_78;
+  }
+  bool const x_79 = x_79_phi;
+  if (x_79) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1144dfa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,191 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+         %48 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %highSigned "highSigned"
+               OpName %highUnsigned "highUnsigned"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %i_1 "i_1"
+               OpName %x_78 "x_78"
+               OpName %x_79_phi "x_79_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %22 = OpConstantNull %uint
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %28 = OpConstantNull %_arr_int_uint_2
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %int_10 = OpConstant %int 10
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+    %uint_10 = OpConstant %uint 10
+      %int_6 = OpConstant %int 6
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %98 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %99 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %100 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+ %highSigned = OpVariable %_ptr_Function_int Function %18
+%highUnsigned = OpVariable %_ptr_Function_uint Function %22
+          %i = OpVariable %_ptr_Function_int Function %18
+       %data = OpVariable %_ptr_Function__arr_int_uint_2 Function %28
+        %i_1 = OpVariable %_ptr_Function_uint Function %22
+       %x_78 = OpVariable %_ptr_Function_bool Function %33
+   %x_79_phi = OpVariable %_ptr_Function_bool Function %33
+               OpStore %highSigned %int_1
+               OpStore %highUnsigned %uint_2
+               OpStore %i %int_0
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpLoad %int %highSigned
+         %45 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %46 = OpLoad %int %45
+         %47 = OpExtInst %int %48 SMin %int_10 %42
+         %50 = OpIAdd %int %47 %46
+         %51 = OpSLessThan %bool %41 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %38
+         %52 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpAccessChain %_ptr_Function_int %data %55
+               OpStore %56 %int_5
+               OpBranch %39
+         %39 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %37
+         %38 = OpLabel
+               OpStore %i_1 %uint_1
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpLoad %uint %i_1
+         %66 = OpLoad %uint %highUnsigned
+         %67 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %68 = OpLoad %int %67
+         %69 = OpExtInst %uint %48 UMin %uint_10 %66
+         %71 = OpBitcast %uint %68
+         %72 = OpIAdd %uint %69 %71
+         %73 = OpULessThan %bool %65 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %62
+         %74 = OpLabel
+         %77 = OpLoad %uint %i_1
+         %78 = OpAccessChain %_ptr_Function_int %data %77
+               OpStore %78 %int_6
+               OpBranch %63
+         %63 = OpLabel
+         %80 = OpLoad %uint %i_1
+         %81 = OpBitcast %uint %int_1
+         %82 = OpIAdd %uint %80 %81
+               OpStore %i_1 %82
+               OpBranch %61
+         %62 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %data %int_0
+         %84 = OpLoad %int %83
+         %85 = OpIEqual %bool %84 %int_5
+               OpStore %x_79_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Function_int %data %int_1
+         %89 = OpLoad %int %88
+         %90 = OpIEqual %bool %89 %int_6
+               OpStore %x_78 %90
+         %91 = OpLoad %bool %x_78
+               OpStore %x_79_phi %91
+               OpBranch %86
+         %86 = OpLabel
+         %92 = OpLoad %bool %x_79_phi
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpStore %x_GLF_color %98
+               OpBranch %93
+         %95 = OpLabel
+               OpStore %x_GLF_color %99
+               OpBranch %93
+         %93 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %100
+%tint_symbol = OpFunctionParameter %main_out
+        %104 = OpLabel
+        %105 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %105
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %107 = OpLabel
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_2 %111
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1ba10ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,80 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var highSigned : i32;
+  var highUnsigned : u32;
+  var i : i32;
+  var data : array<i32, 2>;
+  var i_1 : u32;
+  var x_78 : bool;
+  var x_79_phi : bool;
+  highSigned = 1;
+  highUnsigned = 2u;
+  i = 0;
+  loop {
+    let x_42 : i32 = i;
+    let x_43 : i32 = highSigned;
+    let x_46 : i32 = x_8.zero;
+    if ((x_42 < (min(10, x_43) + x_46))) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    data[x_50] = 5;
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  i_1 = 1u;
+  loop {
+    let x_58 : u32 = i_1;
+    let x_59 : u32 = highUnsigned;
+    let x_62 : i32 = x_8.zero;
+    if ((x_58 < (min(10u, x_59) + bitcast<u32>(x_62)))) {
+    } else {
+      break;
+    }
+    let x_67 : u32 = i_1;
+    data[x_67] = 6;
+
+    continuing {
+      let x_69 : u32 = i_1;
+      i_1 = (x_69 + bitcast<u32>(1));
+    }
+  }
+  let x_72 : i32 = data[0];
+  let x_73 : bool = (x_72 == 5);
+  x_79_phi = x_73;
+  if (x_73) {
+    let x_77 : i32 = data[1];
+    x_78 = (x_77 == 6);
+    x_79_phi = x_78;
+  }
+  let x_79 : bool = x_79_phi;
+  if (x_79) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
new file mode 100644
index 0000000..1ba10ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
@@ -0,0 +1,80 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var highSigned : i32;
+  var highUnsigned : u32;
+  var i : i32;
+  var data : array<i32, 2>;
+  var i_1 : u32;
+  var x_78 : bool;
+  var x_79_phi : bool;
+  highSigned = 1;
+  highUnsigned = 2u;
+  i = 0;
+  loop {
+    let x_42 : i32 = i;
+    let x_43 : i32 = highSigned;
+    let x_46 : i32 = x_8.zero;
+    if ((x_42 < (min(10, x_43) + x_46))) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    data[x_50] = 5;
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  i_1 = 1u;
+  loop {
+    let x_58 : u32 = i_1;
+    let x_59 : u32 = highUnsigned;
+    let x_62 : i32 = x_8.zero;
+    if ((x_58 < (min(10u, x_59) + bitcast<u32>(x_62)))) {
+    } else {
+      break;
+    }
+    let x_67 : u32 = i_1;
+    data[x_67] = 6;
+
+    continuing {
+      let x_69 : u32 = i_1;
+      i_1 = (x_69 + bitcast<u32>(1));
+    }
+  }
+  let x_72 : i32 = data[0];
+  let x_73 : bool = (x_72 == 5);
+  x_79_phi = x_73;
+  if (x_73) {
+    let x_77 : i32 = data[1];
+    x_78 = (x_77 == 6);
+    x_79_phi = x_78;
+  }
+  let x_79 : bool = x_79_phi;
+  if (x_79) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..fa2f460
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int highSigned = 0;
+  uint highUnsigned = 0u;
+  int i = 0;
+  int data[2] = (int[2])0;
+  uint i_1 = 0u;
+  bool x_78 = false;
+  bool x_79_phi = false;
+  highSigned = 1;
+  highUnsigned = 2u;
+  i = 0;
+  while (true) {
+    const int x_42 = i;
+    const int x_43 = highSigned;
+    const int x_46 = asint(x_8[0].x);
+    if ((x_42 < (min(10, x_43) + x_46))) {
+    } else {
+      break;
+    }
+    data[i] = 5;
+    {
+      i = (i + 1);
+    }
+  }
+  i_1 = 1u;
+  while (true) {
+    const uint x_58 = i_1;
+    const uint x_59 = highUnsigned;
+    const int x_62 = asint(x_8[0].x);
+    if ((x_58 < (min(10u, x_59) + asuint(x_62)))) {
+    } else {
+      break;
+    }
+    data[i_1] = 6;
+    {
+      i_1 = (i_1 + asuint(1));
+    }
+  }
+  const int x_72 = data[0];
+  const bool x_73 = (x_72 == 5);
+  x_79_phi = x_73;
+  if (x_73) {
+    const int x_77 = data[1];
+    x_78 = (x_77 == 6);
+    x_79_phi = x_78;
+  }
+  if (x_79_phi) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b29ecd0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int highSigned = 0;
+  uint highUnsigned = 0u;
+  int i = 0;
+  tint_array_wrapper data = {};
+  uint i_1 = 0u;
+  bool x_78 = false;
+  bool x_79_phi = false;
+  highSigned = 1;
+  highUnsigned = 2u;
+  i = 0;
+  while (true) {
+    int const x_42 = i;
+    int const x_43 = highSigned;
+    int const x_46 = x_8.zero;
+    if ((x_42 < (min(10, x_43) + x_46))) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    data.arr[x_50] = 5;
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  i_1 = 1u;
+  while (true) {
+    uint const x_58 = i_1;
+    uint const x_59 = highUnsigned;
+    int const x_62 = x_8.zero;
+    if ((x_58 < (min(10u, x_59) + as_type<uint>(x_62)))) {
+    } else {
+      break;
+    }
+    uint const x_67 = i_1;
+    data.arr[x_67] = 6;
+    {
+      uint const x_69 = i_1;
+      i_1 = (x_69 + as_type<uint>(1));
+    }
+  }
+  int const x_72 = data.arr[0];
+  bool const x_73 = (x_72 == 5);
+  x_79_phi = x_73;
+  if (x_73) {
+    int const x_77 = data.arr[1];
+    x_78 = (x_77 == 6);
+    x_79_phi = x_78;
+  }
+  bool const x_79 = x_79_phi;
+  if (x_79) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1144dfa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,191 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+         %48 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %highSigned "highSigned"
+               OpName %highUnsigned "highUnsigned"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %i_1 "i_1"
+               OpName %x_78 "x_78"
+               OpName %x_79_phi "x_79_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %22 = OpConstantNull %uint
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %28 = OpConstantNull %_arr_int_uint_2
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %int_10 = OpConstant %int 10
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+    %uint_10 = OpConstant %uint 10
+      %int_6 = OpConstant %int 6
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %98 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %99 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %100 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+ %highSigned = OpVariable %_ptr_Function_int Function %18
+%highUnsigned = OpVariable %_ptr_Function_uint Function %22
+          %i = OpVariable %_ptr_Function_int Function %18
+       %data = OpVariable %_ptr_Function__arr_int_uint_2 Function %28
+        %i_1 = OpVariable %_ptr_Function_uint Function %22
+       %x_78 = OpVariable %_ptr_Function_bool Function %33
+   %x_79_phi = OpVariable %_ptr_Function_bool Function %33
+               OpStore %highSigned %int_1
+               OpStore %highUnsigned %uint_2
+               OpStore %i %int_0
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpLoad %int %highSigned
+         %45 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %46 = OpLoad %int %45
+         %47 = OpExtInst %int %48 SMin %int_10 %42
+         %50 = OpIAdd %int %47 %46
+         %51 = OpSLessThan %bool %41 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %38
+         %52 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpAccessChain %_ptr_Function_int %data %55
+               OpStore %56 %int_5
+               OpBranch %39
+         %39 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %37
+         %38 = OpLabel
+               OpStore %i_1 %uint_1
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpLoad %uint %i_1
+         %66 = OpLoad %uint %highUnsigned
+         %67 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %68 = OpLoad %int %67
+         %69 = OpExtInst %uint %48 UMin %uint_10 %66
+         %71 = OpBitcast %uint %68
+         %72 = OpIAdd %uint %69 %71
+         %73 = OpULessThan %bool %65 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %62
+         %74 = OpLabel
+         %77 = OpLoad %uint %i_1
+         %78 = OpAccessChain %_ptr_Function_int %data %77
+               OpStore %78 %int_6
+               OpBranch %63
+         %63 = OpLabel
+         %80 = OpLoad %uint %i_1
+         %81 = OpBitcast %uint %int_1
+         %82 = OpIAdd %uint %80 %81
+               OpStore %i_1 %82
+               OpBranch %61
+         %62 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %data %int_0
+         %84 = OpLoad %int %83
+         %85 = OpIEqual %bool %84 %int_5
+               OpStore %x_79_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Function_int %data %int_1
+         %89 = OpLoad %int %88
+         %90 = OpIEqual %bool %89 %int_6
+               OpStore %x_78 %90
+         %91 = OpLoad %bool %x_78
+               OpStore %x_79_phi %91
+               OpBranch %86
+         %86 = OpLabel
+         %92 = OpLoad %bool %x_79_phi
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpStore %x_GLF_color %98
+               OpBranch %93
+         %95 = OpLabel
+               OpStore %x_GLF_color %99
+               OpBranch %93
+         %93 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %100
+%tint_symbol = OpFunctionParameter %main_out
+        %104 = OpLabel
+        %105 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %105
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %107 = OpLabel
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_2 %111
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1ba10ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,80 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var highSigned : i32;
+  var highUnsigned : u32;
+  var i : i32;
+  var data : array<i32, 2>;
+  var i_1 : u32;
+  var x_78 : bool;
+  var x_79_phi : bool;
+  highSigned = 1;
+  highUnsigned = 2u;
+  i = 0;
+  loop {
+    let x_42 : i32 = i;
+    let x_43 : i32 = highSigned;
+    let x_46 : i32 = x_8.zero;
+    if ((x_42 < (min(10, x_43) + x_46))) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    data[x_50] = 5;
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  i_1 = 1u;
+  loop {
+    let x_58 : u32 = i_1;
+    let x_59 : u32 = highUnsigned;
+    let x_62 : i32 = x_8.zero;
+    if ((x_58 < (min(10u, x_59) + bitcast<u32>(x_62)))) {
+    } else {
+      break;
+    }
+    let x_67 : u32 = i_1;
+    data[x_67] = 6;
+
+    continuing {
+      let x_69 : u32 = i_1;
+      i_1 = (x_69 + bitcast<u32>(1));
+    }
+  }
+  let x_72 : i32 = data[0];
+  let x_73 : bool = (x_72 == 5);
+  x_79_phi = x_73;
+  if (x_73) {
+    let x_77 : i32 = data[1];
+    x_78 = (x_77 == 6);
+    x_79_phi = x_78;
+  }
+  let x_79 : bool = x_79_phi;
+  if (x_79) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm
new file mode 100644
index 0000000..ffceb4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm
@@ -0,0 +1,65 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %float_1 = OpConstant %float 1
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %8
+         %22 = OpLabel
+         %23 = OpFMod %float %float_1 %float_1
+         %24 = OpFOrdLessThanEqual %bool %23 %float_0_00999999978
+               OpSelectionMerge %25 None
+               OpBranchConditional %24 %26 %27
+         %26 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %28
+         %30 = OpConvertSToF %float %29
+         %31 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpConvertSToF %float %32
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpConvertSToF %float %35
+         %37 = OpCompositeConstruct %v4float %float_1 %30 %33 %36
+               OpStore %_GLF_color %37
+               OpBranch %25
+         %27 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpConvertSToF %float %39
+         %41 = OpCompositeConstruct %v4float %40 %40 %40 %40
+               OpStore %_GLF_color %41
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..4cb3c14
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,35 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+
+void main_1() {
+  if (((1.0f % 1.0f) <= 0.01f)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_29 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_32 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_35 = asint(x_5[1].x);
+    x_GLF_color = float4(1.0f, float(x_29), float(x_32), float(x_35));
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_39 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_40 = float(x_39);
+    x_GLF_color = float4(x_40, x_40, x_40, x_40);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.msl
new file mode 100755
index 0000000..e2d1f94
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  if (((1.0f % 1.0f) <= 0.01f)) {
+    int const x_29 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    int const x_32 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    int const x_35 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(1.0f, float(x_29), float(x_32), float(x_35));
+  } else {
+    int const x_39 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    float const x_40 = float(x_39);
+    *(tint_symbol_4) = float4(x_40, x_40, x_40, x_40);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\u8zg.0.metal:22:14: error: invalid operands to binary expression ('float' and 'float')
+  if (((1.0f % 1.0f) <= 0.01f)) {
+        ~~~~ ^ ~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1f59503
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %20 = OpFMod %float %float_1 %float_1
+         %22 = OpFOrdLessThanEqual %bool %20 %float_0_00999999978
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %26
+         %25 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %33 = OpLoad %int %32
+         %35 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %36 = OpLoad %int %35
+         %37 = OpConvertSToF %float %31
+         %38 = OpConvertSToF %float %33
+         %39 = OpConvertSToF %float %36
+         %40 = OpCompositeConstruct %v4float %float_1 %37 %38 %39
+               OpStore %x_GLF_color %40
+               OpBranch %24
+         %26 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpCompositeConstruct %v4float %43 %43 %43 %43
+               OpStore %x_GLF_color %44
+               OpBranch %24
+         %24 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..020e0e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,35 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  if (((1.0 % 1.0) <= 0.01)) {
+    let x_29 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_32 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_35 : i32 = x_5.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(1.0, f32(x_29), f32(x_32), f32(x_35));
+  } else {
+    let x_39 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_40 : f32 = f32(x_39);
+    x_GLF_color = vec4<f32>(x_40, x_40, x_40, x_40);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
new file mode 100644
index 0000000..020e0e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
@@ -0,0 +1,35 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  if (((1.0 % 1.0) <= 0.01)) {
+    let x_29 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_32 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_35 : i32 = x_5.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(1.0, f32(x_29), f32(x_32), f32(x_35));
+  } else {
+    let x_39 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_40 : f32 = f32(x_39);
+    x_GLF_color = vec4<f32>(x_40, x_40, x_40, x_40);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4cb3c14
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+
+void main_1() {
+  if (((1.0f % 1.0f) <= 0.01f)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_29 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_32 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_35 = asint(x_5[1].x);
+    x_GLF_color = float4(1.0f, float(x_29), float(x_32), float(x_35));
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_39 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_40 = float(x_39);
+    x_GLF_color = float4(x_40, x_40, x_40, x_40);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.msl
new file mode 100755
index 0000000..5e4bde3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.msl
@@ -0,0 +1,49 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  if (((1.0f % 1.0f) <= 0.01f)) {
+    int const x_29 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    int const x_32 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    int const x_35 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(1.0f, float(x_29), float(x_32), float(x_35));
+  } else {
+    int const x_39 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    float const x_40 = float(x_39);
+    *(tint_symbol_4) = float4(x_40, x_40, x_40, x_40);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\u180.0.metal:22:14: error: invalid operands to binary expression ('float' and 'float')
+  if (((1.0f % 1.0f) <= 0.01f)) {
+        ~~~~ ^ ~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1f59503
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %20 = OpFMod %float %float_1 %float_1
+         %22 = OpFOrdLessThanEqual %bool %20 %float_0_00999999978
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %26
+         %25 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %33 = OpLoad %int %32
+         %35 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %36 = OpLoad %int %35
+         %37 = OpConvertSToF %float %31
+         %38 = OpConvertSToF %float %33
+         %39 = OpConvertSToF %float %36
+         %40 = OpCompositeConstruct %v4float %float_1 %37 %38 %39
+               OpStore %x_GLF_color %40
+               OpBranch %24
+         %26 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpCompositeConstruct %v4float %43 %43 %43 %43
+               OpStore %x_GLF_color %44
+               OpBranch %24
+         %24 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..020e0e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,35 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  if (((1.0 % 1.0) <= 0.01)) {
+    let x_29 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_32 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_35 : i32 = x_5.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(1.0, f32(x_29), f32(x_32), f32(x_35));
+  } else {
+    let x_39 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_40 : f32 = f32(x_39);
+    x_GLF_color = vec4<f32>(x_40, x_40, x_40, x_40);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm
new file mode 100644
index 0000000..78defc8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm
@@ -0,0 +1,106 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+%float_40_3300018 = OpConstant %float 40.3300018
+    %float_1 = OpConstant %float 1
+        %int = OpTypeInt 32 1
+  %int_98980 = OpConstant %int 98980
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %12
+         %31 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %32 = OpExtInst %float %1 Ldexp %float_1 %int_98980
+         %33 = OpExtInst %float %1 Pow %float_40_3300018 %32
+               OpStore %f %33
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpIAdd %int %37 %39
+         %41 = OpIEqual %bool %35 %40
+         %42 = OpLogicalNot %bool %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+         %45 = OpLoad %float %f
+         %46 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpFOrdGreaterThan %bool %45 %47
+               OpBranch %43
+         %43 = OpLabel
+         %49 = OpPhi %bool %41 %31 %48 %44
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpCompositeConstruct %v4float %55 %58 %61 %64
+               OpStore %_GLF_color %65
+               OpBranch %50
+         %52 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpCompositeConstruct %v4float %68 %68 %68 %68
+               OpStore %_GLF_color %69
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f6a50e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,56 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  bool x_48 = false;
+  bool x_49_phi = false;
+  f = pow(40.330001831f, ldexp(1.0f, 98980));
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_35 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_37 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_39 = asint(x_6[1].x);
+  const bool x_41 = (x_35 == (x_37 + x_39));
+  x_49_phi = x_41;
+  if (!(x_41)) {
+    const float x_45 = f;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_47 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_48 = (x_45 > x_47);
+    x_49_phi = x_48;
+  }
+  if (x_49_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_57 = asint(x_6[1].x);
+    const int x_60 = asint(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_63 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    const int x_67 = asint(x_6[1].x);
+    const float x_68 = float(x_67);
+    x_GLF_color = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b0caa47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  bool x_48 = false;
+  bool x_49_phi = false;
+  f = pow(40.330001831f, ldexp(1.0f, 98980));
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_39 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  bool const x_41 = (x_35 == (x_37 + x_39));
+  x_49_phi = x_41;
+  if (!(x_41)) {
+    float const x_45 = f;
+    float const x_47 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    x_48 = (x_45 > x_47);
+    x_49_phi = x_48;
+  }
+  bool const x_49 = x_49_phi;
+  if (x_49) {
+    int const x_54 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_57 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_68 = float(x_67);
+    *(tint_symbol_4) = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..fc4fc19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,151 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+         %33 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %x_48 "x_48"
+               OpName %x_49_phi "x_49_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+%float_40_3300018 = OpConstant %float 40.3300018
+    %float_1 = OpConstant %float 1
+  %int_98980 = OpConstant %int 98980
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %26
+       %x_48 = OpVariable %_ptr_Function_bool Function %30
+   %x_49_phi = OpVariable %_ptr_Function_bool Function %30
+         %35 = OpExtInst %float %33 Ldexp %float_1 %int_98980
+         %32 = OpExtInst %float %33 Pow %float_40_3300018 %35
+               OpStore %f %32
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpIAdd %int %44 %47
+         %49 = OpIEqual %bool %42 %48
+               OpStore %x_49_phi %49
+         %50 = OpLogicalNot %bool %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpLoad %float %f
+         %55 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %56 = OpLoad %float %55
+         %57 = OpFOrdGreaterThan %bool %53 %56
+               OpStore %x_48 %57
+         %58 = OpLoad %bool %x_48
+               OpStore %x_49_phi %58
+               OpBranch %51
+         %51 = OpLabel
+         %59 = OpLoad %bool %x_49_phi
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %60
+         %62 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %60
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5f17cf5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_48 : bool;
+  var x_49_phi : bool;
+  f = pow(40.330001831, ldexp(1.0, 98980));
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_39 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_41 : bool = (x_35 == (x_37 + x_39));
+  x_49_phi = x_41;
+  if (!(x_41)) {
+    let x_45 : f32 = f;
+    let x_47 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_48 = (x_45 > x_47);
+    x_49_phi = x_48;
+  }
+  let x_49 : bool = x_49_phi;
+  if (x_49) {
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_57 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_54), f32(x_57), f32(x_60), f32(x_63));
+  } else {
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_68 : f32 = f32(x_67);
+    x_GLF_color = vec4<f32>(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
new file mode 100644
index 0000000..5f17cf5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_48 : bool;
+  var x_49_phi : bool;
+  f = pow(40.330001831, ldexp(1.0, 98980));
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_39 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_41 : bool = (x_35 == (x_37 + x_39));
+  x_49_phi = x_41;
+  if (!(x_41)) {
+    let x_45 : f32 = f;
+    let x_47 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_48 = (x_45 > x_47);
+    x_49_phi = x_48;
+  }
+  let x_49 : bool = x_49_phi;
+  if (x_49) {
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_57 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_54), f32(x_57), f32(x_60), f32(x_63));
+  } else {
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_68 : f32 = f32(x_67);
+    x_GLF_color = vec4<f32>(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f6a50e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,56 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  bool x_48 = false;
+  bool x_49_phi = false;
+  f = pow(40.330001831f, ldexp(1.0f, 98980));
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_35 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_37 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_39 = asint(x_6[1].x);
+  const bool x_41 = (x_35 == (x_37 + x_39));
+  x_49_phi = x_41;
+  if (!(x_41)) {
+    const float x_45 = f;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_47 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_48 = (x_45 > x_47);
+    x_49_phi = x_48;
+  }
+  if (x_49_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_57 = asint(x_6[1].x);
+    const int x_60 = asint(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_63 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    const int x_67 = asint(x_6[1].x);
+    const float x_68 = float(x_67);
+    x_GLF_color = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b0caa47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  bool x_48 = false;
+  bool x_49_phi = false;
+  f = pow(40.330001831f, ldexp(1.0f, 98980));
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_39 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  bool const x_41 = (x_35 == (x_37 + x_39));
+  x_49_phi = x_41;
+  if (!(x_41)) {
+    float const x_45 = f;
+    float const x_47 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    x_48 = (x_45 > x_47);
+    x_49_phi = x_48;
+  }
+  bool const x_49 = x_49_phi;
+  if (x_49) {
+    int const x_54 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_57 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_68 = float(x_67);
+    *(tint_symbol_4) = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..fc4fc19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,151 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+         %33 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %x_48 "x_48"
+               OpName %x_49_phi "x_49_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+%float_40_3300018 = OpConstant %float 40.3300018
+    %float_1 = OpConstant %float 1
+  %int_98980 = OpConstant %int 98980
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %26
+       %x_48 = OpVariable %_ptr_Function_bool Function %30
+   %x_49_phi = OpVariable %_ptr_Function_bool Function %30
+         %35 = OpExtInst %float %33 Ldexp %float_1 %int_98980
+         %32 = OpExtInst %float %33 Pow %float_40_3300018 %35
+               OpStore %f %32
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpIAdd %int %44 %47
+         %49 = OpIEqual %bool %42 %48
+               OpStore %x_49_phi %49
+         %50 = OpLogicalNot %bool %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpLoad %float %f
+         %55 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %56 = OpLoad %float %55
+         %57 = OpFOrdGreaterThan %bool %53 %56
+               OpStore %x_48 %57
+         %58 = OpLoad %bool %x_48
+               OpStore %x_49_phi %58
+               OpBranch %51
+         %51 = OpLabel
+         %59 = OpLoad %bool %x_49_phi
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %60
+         %62 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %60
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5f17cf5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_48 : bool;
+  var x_49_phi : bool;
+  f = pow(40.330001831, ldexp(1.0, 98980));
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_39 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_41 : bool = (x_35 == (x_37 + x_39));
+  x_49_phi = x_41;
+  if (!(x_41)) {
+    let x_45 : f32 = f;
+    let x_47 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_48 = (x_45 > x_47);
+    x_49_phi = x_48;
+  }
+  let x_49 : bool = x_49_phi;
+  if (x_49) {
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_57 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_54), f32(x_57), f32(x_60), f32(x_63));
+  } else {
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_68 : f32 = f32(x_67);
+    x_GLF_color = vec4<f32>(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm
new file mode 100644
index 0000000..aa75585
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm
@@ -0,0 +1,83 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %12 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %bool = OpTypeBool
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %19 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %20 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+               OpStore %_GLF_color %12
+         %22 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %23 = OpLoad %float %22
+         %24 = OpFOrdLessThan %bool %23 %float_0
+         %25 = OpLogicalNot %bool %24
+               OpSelectionMerge %26 None
+               OpBranchConditional %25 %27 %26
+         %27 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %29 = OpLoad %float %28
+         %30 = OpFOrdLessThan %bool %29 %float_1
+               OpBranch %26
+         %26 = OpLabel
+         %31 = OpPhi %bool %24 %21 %30 %27
+               OpSelectionMerge %32 None
+               OpBranchConditional %31 %33 %32
+         %33 = OpLabel
+               OpReturn
+         %32 = OpLabel
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %35 = OpLoad %float %34
+         %36 = OpFOrdLessThan %bool %35 %float_0
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %45 = OpLoad %float %44
+         %46 = OpFOrdLessThan %bool %45 %float_0
+               OpBranchConditional %46 %47 %41
+         %47 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %41
+         %42 = OpLabel
+               OpBranch %40
+         %41 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %_GLF_color %20
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..40ad3c7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,50 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  bool x_30 = false;
+  bool x_31_phi = false;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_23 = asfloat(x_5[0].x);
+  const bool x_24 = (x_23 < 0.0f);
+  x_31_phi = x_24;
+  if (!(x_24)) {
+    const float x_29 = asfloat(x_5[0].x);
+    x_30 = (x_29 < 1.0f);
+    x_31_phi = x_30;
+  }
+  if (x_31_phi) {
+    return;
+  }
+  const float x_35 = asfloat(x_5[0].x);
+  if ((x_35 < 0.0f)) {
+    while (true) {
+      const float x_45 = asfloat(x_5[0].x);
+      if ((x_45 < 0.0f)) {
+      } else {
+        break;
+      }
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      break;
+    }
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..526a975
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_30 = false;
+  bool x_31_phi = false;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float const x_23 = x_5.one;
+  bool const x_24 = (x_23 < 0.0f);
+  x_31_phi = x_24;
+  if (!(x_24)) {
+    float const x_29 = x_5.one;
+    x_30 = (x_29 < 1.0f);
+    x_31_phi = x_30;
+  }
+  bool const x_31 = x_31_phi;
+  if (x_31) {
+    return;
+  }
+  float const x_35 = x_5.one;
+  if ((x_35 < 0.0f)) {
+    while (true) {
+      float const x_45 = x_5.one;
+      if ((x_45 < 0.0f)) {
+      } else {
+        break;
+      }
+      *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      break;
+    }
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ed5bd9f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,129 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %x_31_phi "x_31_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %18 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %55 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_bool Function %18
+   %x_31_phi = OpVariable %_ptr_Function_bool Function %18
+               OpStore %x_GLF_color %21
+         %25 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpFOrdLessThan %bool %26 %float_0
+               OpStore %x_31_phi %27
+         %28 = OpLogicalNot %bool %27
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %29
+         %30 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %32 = OpLoad %float %31
+         %34 = OpFOrdLessThan %bool %32 %float_1
+               OpStore %x_30 %34
+         %35 = OpLoad %bool %x_30
+               OpStore %x_31_phi %35
+               OpBranch %29
+         %29 = OpLabel
+         %36 = OpLoad %bool %x_31_phi
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+               OpReturn
+         %37 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %40 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpFOrdLessThan %bool %50 %float_0
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %46
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %46
+         %47 = OpLabel
+               OpBranch %45
+         %46 = OpLabel
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %57
+%tint_symbol = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %64 = OpLabel
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_2 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c41a337
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,52 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_30 : bool;
+  var x_31_phi : bool;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_23 : f32 = x_5.one;
+  let x_24 : bool = (x_23 < 0.0);
+  x_31_phi = x_24;
+  if (!(x_24)) {
+    let x_29 : f32 = x_5.one;
+    x_30 = (x_29 < 1.0);
+    x_31_phi = x_30;
+  }
+  let x_31 : bool = x_31_phi;
+  if (x_31) {
+    return;
+  }
+  let x_35 : f32 = x_5.one;
+  if ((x_35 < 0.0)) {
+    loop {
+      let x_45 : f32 = x_5.one;
+      if ((x_45 < 0.0)) {
+      } else {
+        break;
+      }
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      break;
+    }
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
new file mode 100644
index 0000000..c41a337
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
@@ -0,0 +1,52 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_30 : bool;
+  var x_31_phi : bool;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_23 : f32 = x_5.one;
+  let x_24 : bool = (x_23 < 0.0);
+  x_31_phi = x_24;
+  if (!(x_24)) {
+    let x_29 : f32 = x_5.one;
+    x_30 = (x_29 < 1.0);
+    x_31_phi = x_30;
+  }
+  let x_31 : bool = x_31_phi;
+  if (x_31) {
+    return;
+  }
+  let x_35 : f32 = x_5.one;
+  if ((x_35 < 0.0)) {
+    loop {
+      let x_45 : f32 = x_5.one;
+      if ((x_45 < 0.0)) {
+      } else {
+        break;
+      }
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      break;
+    }
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..40ad3c7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,50 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  bool x_30 = false;
+  bool x_31_phi = false;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_23 = asfloat(x_5[0].x);
+  const bool x_24 = (x_23 < 0.0f);
+  x_31_phi = x_24;
+  if (!(x_24)) {
+    const float x_29 = asfloat(x_5[0].x);
+    x_30 = (x_29 < 1.0f);
+    x_31_phi = x_30;
+  }
+  if (x_31_phi) {
+    return;
+  }
+  const float x_35 = asfloat(x_5[0].x);
+  if ((x_35 < 0.0f)) {
+    while (true) {
+      const float x_45 = asfloat(x_5[0].x);
+      if ((x_45 < 0.0f)) {
+      } else {
+        break;
+      }
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      break;
+    }
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..526a975
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_30 = false;
+  bool x_31_phi = false;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float const x_23 = x_5.one;
+  bool const x_24 = (x_23 < 0.0f);
+  x_31_phi = x_24;
+  if (!(x_24)) {
+    float const x_29 = x_5.one;
+    x_30 = (x_29 < 1.0f);
+    x_31_phi = x_30;
+  }
+  bool const x_31 = x_31_phi;
+  if (x_31) {
+    return;
+  }
+  float const x_35 = x_5.one;
+  if ((x_35 < 0.0f)) {
+    while (true) {
+      float const x_45 = x_5.one;
+      if ((x_45 < 0.0f)) {
+      } else {
+        break;
+      }
+      *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      break;
+    }
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ed5bd9f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,129 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %x_31_phi "x_31_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %18 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %55 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_bool Function %18
+   %x_31_phi = OpVariable %_ptr_Function_bool Function %18
+               OpStore %x_GLF_color %21
+         %25 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpFOrdLessThan %bool %26 %float_0
+               OpStore %x_31_phi %27
+         %28 = OpLogicalNot %bool %27
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %29
+         %30 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %32 = OpLoad %float %31
+         %34 = OpFOrdLessThan %bool %32 %float_1
+               OpStore %x_30 %34
+         %35 = OpLoad %bool %x_30
+               OpStore %x_31_phi %35
+               OpBranch %29
+         %29 = OpLabel
+         %36 = OpLoad %bool %x_31_phi
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+               OpReturn
+         %37 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %40 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpFOrdLessThan %bool %50 %float_0
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %46
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %46
+         %47 = OpLabel
+               OpBranch %45
+         %46 = OpLabel
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %57
+%tint_symbol = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %64 = OpLabel
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_2 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c41a337
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,52 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_30 : bool;
+  var x_31_phi : bool;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_23 : f32 = x_5.one;
+  let x_24 : bool = (x_23 < 0.0);
+  x_31_phi = x_24;
+  if (!(x_24)) {
+    let x_29 : f32 = x_5.one;
+    x_30 = (x_29 < 1.0);
+    x_31_phi = x_30;
+  }
+  let x_31 : bool = x_31_phi;
+  if (x_31) {
+    return;
+  }
+  let x_35 : f32 = x_5.one;
+  if ((x_35 < 0.0)) {
+    loop {
+      let x_45 : f32 = x_5.one;
+      if ((x_45 < 0.0)) {
+      } else {
+        break;
+      }
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      break;
+    }
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm
new file mode 100644
index 0000000..7abb413
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm
@@ -0,0 +1,70 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+%float_724_322021 = OpConstant %float 724.322021
+       %bool = OpTypeBool
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %27 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %28 = OpExtInst %float %1 Sinh %float_724_322021
+               OpStore %f %28
+         %29 = OpLoad %float %f
+         %30 = OpIsInf %bool %29
+         %31 = OpLogicalNot %bool %30
+               OpSelectionMerge %32 None
+               OpBranchConditional %31 %33 %32
+         %33 = OpLabel
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %37 = OpLoad %float %36
+         %38 = OpFOrdLessThan %bool %35 %37
+               OpBranch %32
+         %32 = OpLabel
+         %39 = OpPhi %bool %30 %27 %38 %33
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %42
+         %41 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %40
+         %42 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %40
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3b7aff0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,39 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  bool x_38 = false;
+  bool x_39_phi = false;
+  f = sinh(724.322021484f);
+  const bool x_30 = isinf(f);
+  x_39_phi = x_30;
+  if (!(x_30)) {
+    const float x_35 = asfloat(x_6[0].x);
+    const float x_37 = asfloat(x_6[0].y);
+    x_38 = (x_35 < x_37);
+    x_39_phi = x_38;
+  }
+  if (x_39_phi) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1396285
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.msl
@@ -0,0 +1,44 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  bool x_38 = false;
+  bool x_39_phi = false;
+  f = sinh(724.322021484f);
+  float const x_29 = f;
+  bool const x_30 = isinf(x_29);
+  x_39_phi = x_30;
+  if (!(x_30)) {
+    float const x_35 = x_6.injectionSwitch.x;
+    float const x_37 = x_6.injectionSwitch.y;
+    x_38 = (x_35 < x_37);
+    x_39_phi = x_38;
+  }
+  bool const x_39 = x_39_phi;
+  if (x_39) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..78fda08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+         %25 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %x_38 "x_38"
+               OpName %x_39_phi "x_39_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %22 = OpConstantNull %bool
+%float_724_322021 = OpConstant %float 724.322021
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %18
+       %x_38 = OpVariable %_ptr_Function_bool Function %22
+   %x_39_phi = OpVariable %_ptr_Function_bool Function %22
+         %24 = OpExtInst %float %25 Sinh %float_724_322021
+               OpStore %f %24
+         %27 = OpLoad %float %f
+         %28 = OpIsInf %bool %27
+               OpStore %x_39_phi %28
+         %29 = OpLogicalNot %bool %28
+               OpSelectionMerge %30 None
+               OpBranchConditional %29 %31 %30
+         %31 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %36 = OpLoad %float %35
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdLessThan %bool %36 %39
+               OpStore %x_38 %40
+         %41 = OpLoad %bool %x_38
+               OpStore %x_39_phi %41
+               OpBranch %30
+         %30 = OpLabel
+         %42 = OpLoad %bool %x_39_phi
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %x_GLF_color %49
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..39460bf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_38 : bool;
+  var x_39_phi : bool;
+  f = sinh(724.322021484);
+  let x_29 : f32 = f;
+  let x_30 : bool = isInf(x_29);
+  x_39_phi = x_30;
+  if (!(x_30)) {
+    let x_35 : f32 = x_6.injectionSwitch.x;
+    let x_37 : f32 = x_6.injectionSwitch.y;
+    x_38 = (x_35 < x_37);
+    x_39_phi = x_38;
+  }
+  let x_39 : bool = x_39_phi;
+  if (x_39) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl
new file mode 100644
index 0000000..39460bf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl
@@ -0,0 +1,42 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_38 : bool;
+  var x_39_phi : bool;
+  f = sinh(724.322021484);
+  let x_29 : f32 = f;
+  let x_30 : bool = isInf(x_29);
+  x_39_phi = x_30;
+  if (!(x_30)) {
+    let x_35 : f32 = x_6.injectionSwitch.x;
+    let x_37 : f32 = x_6.injectionSwitch.y;
+    x_38 = (x_35 < x_37);
+    x_39_phi = x_38;
+  }
+  let x_39 : bool = x_39_phi;
+  if (x_39) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3b7aff0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,39 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  bool x_38 = false;
+  bool x_39_phi = false;
+  f = sinh(724.322021484f);
+  const bool x_30 = isinf(f);
+  x_39_phi = x_30;
+  if (!(x_30)) {
+    const float x_35 = asfloat(x_6[0].x);
+    const float x_37 = asfloat(x_6[0].y);
+    x_38 = (x_35 < x_37);
+    x_39_phi = x_38;
+  }
+  if (x_39_phi) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1396285
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.msl
@@ -0,0 +1,44 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  bool x_38 = false;
+  bool x_39_phi = false;
+  f = sinh(724.322021484f);
+  float const x_29 = f;
+  bool const x_30 = isinf(x_29);
+  x_39_phi = x_30;
+  if (!(x_30)) {
+    float const x_35 = x_6.injectionSwitch.x;
+    float const x_37 = x_6.injectionSwitch.y;
+    x_38 = (x_35 < x_37);
+    x_39_phi = x_38;
+  }
+  bool const x_39 = x_39_phi;
+  if (x_39) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..78fda08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+         %25 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %x_38 "x_38"
+               OpName %x_39_phi "x_39_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %22 = OpConstantNull %bool
+%float_724_322021 = OpConstant %float 724.322021
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %18
+       %x_38 = OpVariable %_ptr_Function_bool Function %22
+   %x_39_phi = OpVariable %_ptr_Function_bool Function %22
+         %24 = OpExtInst %float %25 Sinh %float_724_322021
+               OpStore %f %24
+         %27 = OpLoad %float %f
+         %28 = OpIsInf %bool %27
+               OpStore %x_39_phi %28
+         %29 = OpLogicalNot %bool %28
+               OpSelectionMerge %30 None
+               OpBranchConditional %29 %31 %30
+         %31 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %36 = OpLoad %float %35
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdLessThan %bool %36 %39
+               OpStore %x_38 %40
+         %41 = OpLoad %bool %x_38
+               OpStore %x_39_phi %41
+               OpBranch %30
+         %30 = OpLabel
+         %42 = OpLoad %bool %x_39_phi
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %x_GLF_color %49
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..39460bf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_38 : bool;
+  var x_39_phi : bool;
+  f = sinh(724.322021484);
+  let x_29 : f32 = f;
+  let x_30 : bool = isInf(x_29);
+  x_39_phi = x_30;
+  if (!(x_30)) {
+    let x_35 : f32 = x_6.injectionSwitch.x;
+    let x_37 : f32 = x_6.injectionSwitch.y;
+    x_38 = (x_35 < x_37);
+    x_39_phi = x_38;
+  }
+  let x_39 : bool = x_39_phi;
+  if (x_39) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm
new file mode 100644
index 0000000..db63815
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm
@@ -0,0 +1,68 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %4 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %5 RelaxedPrecision
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+    %v2float = OpTypeVector %float 2
+      %int_1 = OpConstant %int 1
+    %float_2 = OpConstant %float 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpUndef %v2float
+         %23 = OpConstantNull %v4float
+       %main = OpFunction %void None %7
+         %24 = OpLabel
+               OpBranch %25
+         %25 = OpLabel
+         %26 = OpPhi %v2float %22 %24 %27 %28
+          %5 = OpPhi %int %int_2 %24 %4 %28
+         %29 = OpSLessThan %bool %5 %int_3
+               OpLoopMerge %30 %28 None
+               OpBranchConditional %29 %28 %30
+         %28 = OpLabel
+         %31 = OpConvertSToF %float %5
+         %32 = OpCompositeConstruct %v2float %float_1 %31
+         %27 = OpVectorShuffle %v2float %32 %23 0 1
+          %4 = OpIAdd %int %5 %int_1
+               OpBranch %25
+         %30 = OpLabel
+         %33 = OpCompositeExtract %float %26 0
+         %34 = OpFOrdNotEqual %bool %33 %float_1
+         %35 = OpLogicalNot %bool %34
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+         %38 = OpCompositeExtract %float %26 1
+         %39 = OpFOrdNotEqual %bool %38 %float_2
+               OpBranch %36
+         %36 = OpLabel
+         %40 = OpPhi %bool %34 %30 %39 %37
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+               OpStore %_GLF_color %15
+               OpBranch %41
+         %43 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..527fc4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.hlsl
@@ -0,0 +1,54 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 x_26 = float2(0.0f, 0.0f);
+  bool x_39 = false;
+  float2 x_26_phi = float2(0.0f, 0.0f);
+  int x_5_phi = 0;
+  bool x_40_phi = false;
+  x_26_phi = float2(0.0f, 0.0f);
+  x_5_phi = 2;
+  while (true) {
+    float2 x_27 = float2(0.0f, 0.0f);
+    int x_4 = 0;
+    x_26 = x_26_phi;
+    const int x_5 = x_5_phi;
+    if ((x_5 < 3)) {
+    } else {
+      break;
+    }
+    {
+      const float2 x_32 = float2(1.0f, float(x_5));
+      x_27 = float2(x_32.x, x_32.y);
+      x_4 = (x_5 + 1);
+      x_26_phi = x_27;
+      x_5_phi = x_4;
+    }
+  }
+  const bool x_34 = (x_26.x != 1.0f);
+  x_40_phi = x_34;
+  if (!(x_34)) {
+    x_39 = (x_26.y != 2.0f);
+    x_40_phi = x_39;
+  }
+  if (x_40_phi) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.msl
new file mode 100644
index 0000000..3a57b28
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 x_26 = 0.0f;
+  bool x_39 = false;
+  float2 x_26_phi = 0.0f;
+  int x_5_phi = 0;
+  bool x_40_phi = false;
+  x_26_phi = float2(0.0f, 0.0f);
+  x_5_phi = 2;
+  while (true) {
+    float2 x_27 = 0.0f;
+    int x_4 = 0;
+    x_26 = x_26_phi;
+    int const x_5 = x_5_phi;
+    if ((x_5 < 3)) {
+    } else {
+      break;
+    }
+    {
+      float2 const x_32 = float2(1.0f, float(x_5));
+      x_27 = float2(x_32.x, x_32.y);
+      x_4 = (x_5 + 1);
+      x_26_phi = x_27;
+      x_5_phi = x_4;
+    }
+  }
+  bool const x_34 = (x_26.x != 1.0f);
+  x_40_phi = x_34;
+  if (!(x_34)) {
+    x_39 = (x_26.y != 2.0f);
+    x_40_phi = x_39;
+  }
+  bool const x_40 = x_40_phi;
+  if (x_40) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..5d950f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.spvasm
@@ -0,0 +1,145 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 85
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_26 "x_26"
+               OpName %x_39 "x_39"
+               OpName %x_26_phi "x_26_phi"
+               OpName %x_5_phi "x_5_phi"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_27 "x_27"
+               OpName %x_4 "x_4"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v2float %float_0 %float_0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_2 = OpConstant %float 2
+         %71 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %72 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %73 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %x_26 = OpVariable %_ptr_Function_v2float Function %15
+       %x_39 = OpVariable %_ptr_Function_bool Function %19
+   %x_26_phi = OpVariable %_ptr_Function_v2float Function %15
+    %x_5_phi = OpVariable %_ptr_Function_int Function %24
+   %x_40_phi = OpVariable %_ptr_Function_bool Function %19
+       %x_27 = OpVariable %_ptr_Function_v2float Function %15
+        %x_4 = OpVariable %_ptr_Function_int Function %24
+               OpStore %x_26_phi %27
+               OpStore %x_5_phi %int_2
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %35 = OpLoad %v2float %x_26_phi
+               OpStore %x_26 %35
+         %36 = OpLoad %int %x_5_phi
+         %38 = OpSLessThan %bool %36 %int_3
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %30
+         %39 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %43 = OpConvertSToF %float %36
+         %44 = OpCompositeConstruct %v2float %float_1 %43
+         %45 = OpCompositeExtract %float %44 0
+         %46 = OpCompositeExtract %float %44 1
+         %47 = OpCompositeConstruct %v2float %45 %46
+               OpStore %x_27 %47
+         %49 = OpIAdd %int %36 %int_1
+               OpStore %x_4 %49
+         %50 = OpLoad %v2float %x_27
+               OpStore %x_26_phi %50
+         %51 = OpLoad %int %x_4
+               OpStore %x_5_phi %51
+               OpBranch %29
+         %30 = OpLabel
+         %55 = OpAccessChain %_ptr_Function_float %x_26 %uint_0
+         %56 = OpLoad %float %55
+         %57 = OpFOrdNotEqual %bool %56 %float_1
+               OpStore %x_40_phi %57
+         %58 = OpLogicalNot %bool %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+         %62 = OpAccessChain %_ptr_Function_float %x_26 %uint_1
+         %63 = OpLoad %float %62
+         %65 = OpFOrdNotEqual %bool %63 %float_2
+               OpStore %x_39 %65
+         %66 = OpLoad %bool %x_39
+               OpStore %x_40_phi %66
+               OpBranch %59
+         %59 = OpLabel
+         %67 = OpLoad %bool %x_40_phi
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpStore %x_GLF_color %71
+               OpBranch %68
+         %70 = OpLabel
+               OpStore %x_GLF_color %72
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %73
+%tint_symbol = OpFunctionParameter %main_out
+         %77 = OpLabel
+         %78 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %78
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %80 = OpLabel
+         %81 = OpFunctionCall %void %main_1
+         %83 = OpLoad %v4float %x_GLF_color
+         %84 = OpCompositeConstruct %main_out %83
+         %82 = OpFunctionCall %void %tint_symbol_2 %84
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..2d4b641
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.spvasm.expected.wgsl
@@ -0,0 +1,53 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_26 : vec2<f32>;
+  var x_39 : bool;
+  var x_26_phi : vec2<f32>;
+  var x_5_phi : i32;
+  var x_40_phi : bool;
+  x_26_phi = vec2<f32>(0.0, 0.0);
+  x_5_phi = 2;
+  loop {
+    var x_27 : vec2<f32>;
+    var x_4 : i32;
+    x_26 = x_26_phi;
+    let x_5 : i32 = x_5_phi;
+    if ((x_5 < 3)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_32 : vec2<f32> = vec2<f32>(1.0, f32(x_5));
+      x_27 = vec2<f32>(x_32.x, x_32.y);
+      x_4 = (x_5 + 1);
+      x_26_phi = x_27;
+      x_5_phi = x_4;
+    }
+  }
+  let x_34 : bool = (x_26.x != 1.0);
+  x_40_phi = x_34;
+  if (!(x_34)) {
+    x_39 = (x_26.y != 2.0);
+    x_40_phi = x_39;
+  }
+  let x_40 : bool = x_40_phi;
+  if (x_40) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
new file mode 100644
index 0000000..2d4b641
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
@@ -0,0 +1,53 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_26 : vec2<f32>;
+  var x_39 : bool;
+  var x_26_phi : vec2<f32>;
+  var x_5_phi : i32;
+  var x_40_phi : bool;
+  x_26_phi = vec2<f32>(0.0, 0.0);
+  x_5_phi = 2;
+  loop {
+    var x_27 : vec2<f32>;
+    var x_4 : i32;
+    x_26 = x_26_phi;
+    let x_5 : i32 = x_5_phi;
+    if ((x_5 < 3)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_32 : vec2<f32> = vec2<f32>(1.0, f32(x_5));
+      x_27 = vec2<f32>(x_32.x, x_32.y);
+      x_4 = (x_5 + 1);
+      x_26_phi = x_27;
+      x_5_phi = x_4;
+    }
+  }
+  let x_34 : bool = (x_26.x != 1.0);
+  x_40_phi = x_34;
+  if (!(x_34)) {
+    x_39 = (x_26.y != 2.0);
+    x_40_phi = x_39;
+  }
+  let x_40 : bool = x_40_phi;
+  if (x_40) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..527fc4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.hlsl
@@ -0,0 +1,54 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 x_26 = float2(0.0f, 0.0f);
+  bool x_39 = false;
+  float2 x_26_phi = float2(0.0f, 0.0f);
+  int x_5_phi = 0;
+  bool x_40_phi = false;
+  x_26_phi = float2(0.0f, 0.0f);
+  x_5_phi = 2;
+  while (true) {
+    float2 x_27 = float2(0.0f, 0.0f);
+    int x_4 = 0;
+    x_26 = x_26_phi;
+    const int x_5 = x_5_phi;
+    if ((x_5 < 3)) {
+    } else {
+      break;
+    }
+    {
+      const float2 x_32 = float2(1.0f, float(x_5));
+      x_27 = float2(x_32.x, x_32.y);
+      x_4 = (x_5 + 1);
+      x_26_phi = x_27;
+      x_5_phi = x_4;
+    }
+  }
+  const bool x_34 = (x_26.x != 1.0f);
+  x_40_phi = x_34;
+  if (!(x_34)) {
+    x_39 = (x_26.y != 2.0f);
+    x_40_phi = x_39;
+  }
+  if (x_40_phi) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.msl
new file mode 100644
index 0000000..3a57b28
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 x_26 = 0.0f;
+  bool x_39 = false;
+  float2 x_26_phi = 0.0f;
+  int x_5_phi = 0;
+  bool x_40_phi = false;
+  x_26_phi = float2(0.0f, 0.0f);
+  x_5_phi = 2;
+  while (true) {
+    float2 x_27 = 0.0f;
+    int x_4 = 0;
+    x_26 = x_26_phi;
+    int const x_5 = x_5_phi;
+    if ((x_5 < 3)) {
+    } else {
+      break;
+    }
+    {
+      float2 const x_32 = float2(1.0f, float(x_5));
+      x_27 = float2(x_32.x, x_32.y);
+      x_4 = (x_5 + 1);
+      x_26_phi = x_27;
+      x_5_phi = x_4;
+    }
+  }
+  bool const x_34 = (x_26.x != 1.0f);
+  x_40_phi = x_34;
+  if (!(x_34)) {
+    x_39 = (x_26.y != 2.0f);
+    x_40_phi = x_39;
+  }
+  bool const x_40 = x_40_phi;
+  if (x_40) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..5d950f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.spvasm
@@ -0,0 +1,145 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 85
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_26 "x_26"
+               OpName %x_39 "x_39"
+               OpName %x_26_phi "x_26_phi"
+               OpName %x_5_phi "x_5_phi"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_27 "x_27"
+               OpName %x_4 "x_4"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v2float %float_0 %float_0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_2 = OpConstant %float 2
+         %71 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %72 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %73 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %x_26 = OpVariable %_ptr_Function_v2float Function %15
+       %x_39 = OpVariable %_ptr_Function_bool Function %19
+   %x_26_phi = OpVariable %_ptr_Function_v2float Function %15
+    %x_5_phi = OpVariable %_ptr_Function_int Function %24
+   %x_40_phi = OpVariable %_ptr_Function_bool Function %19
+       %x_27 = OpVariable %_ptr_Function_v2float Function %15
+        %x_4 = OpVariable %_ptr_Function_int Function %24
+               OpStore %x_26_phi %27
+               OpStore %x_5_phi %int_2
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %35 = OpLoad %v2float %x_26_phi
+               OpStore %x_26 %35
+         %36 = OpLoad %int %x_5_phi
+         %38 = OpSLessThan %bool %36 %int_3
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %30
+         %39 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %43 = OpConvertSToF %float %36
+         %44 = OpCompositeConstruct %v2float %float_1 %43
+         %45 = OpCompositeExtract %float %44 0
+         %46 = OpCompositeExtract %float %44 1
+         %47 = OpCompositeConstruct %v2float %45 %46
+               OpStore %x_27 %47
+         %49 = OpIAdd %int %36 %int_1
+               OpStore %x_4 %49
+         %50 = OpLoad %v2float %x_27
+               OpStore %x_26_phi %50
+         %51 = OpLoad %int %x_4
+               OpStore %x_5_phi %51
+               OpBranch %29
+         %30 = OpLabel
+         %55 = OpAccessChain %_ptr_Function_float %x_26 %uint_0
+         %56 = OpLoad %float %55
+         %57 = OpFOrdNotEqual %bool %56 %float_1
+               OpStore %x_40_phi %57
+         %58 = OpLogicalNot %bool %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+         %62 = OpAccessChain %_ptr_Function_float %x_26 %uint_1
+         %63 = OpLoad %float %62
+         %65 = OpFOrdNotEqual %bool %63 %float_2
+               OpStore %x_39 %65
+         %66 = OpLoad %bool %x_39
+               OpStore %x_40_phi %66
+               OpBranch %59
+         %59 = OpLabel
+         %67 = OpLoad %bool %x_40_phi
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpStore %x_GLF_color %71
+               OpBranch %68
+         %70 = OpLabel
+               OpStore %x_GLF_color %72
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %73
+%tint_symbol = OpFunctionParameter %main_out
+         %77 = OpLabel
+         %78 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %78
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %80 = OpLabel
+         %81 = OpFunctionCall %void %main_1
+         %83 = OpLoad %v4float %x_GLF_color
+         %84 = OpCompositeConstruct %main_out %83
+         %82 = OpFunctionCall %void %tint_symbol_2 %84
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..2d4b641
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl.expected.wgsl
@@ -0,0 +1,53 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_26 : vec2<f32>;
+  var x_39 : bool;
+  var x_26_phi : vec2<f32>;
+  var x_5_phi : i32;
+  var x_40_phi : bool;
+  x_26_phi = vec2<f32>(0.0, 0.0);
+  x_5_phi = 2;
+  loop {
+    var x_27 : vec2<f32>;
+    var x_4 : i32;
+    x_26 = x_26_phi;
+    let x_5 : i32 = x_5_phi;
+    if ((x_5 < 3)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_32 : vec2<f32> = vec2<f32>(1.0, f32(x_5));
+      x_27 = vec2<f32>(x_32.x, x_32.y);
+      x_4 = (x_5 + 1);
+      x_26_phi = x_27;
+      x_5_phi = x_4;
+    }
+  }
+  let x_34 : bool = (x_26.x != 1.0);
+  x_40_phi = x_34;
+  if (!(x_34)) {
+    x_39 = (x_26.y != 2.0);
+    x_40_phi = x_39;
+  }
+  let x_40 : bool = x_40_phi;
+  if (x_40) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm
new file mode 100644
index 0000000..432d78b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+%float_0_910000026 = OpConstant %float 0.910000026
+       %bool = OpTypeBool
+%float_0_930000007 = OpConstant %float 0.930000007
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %17 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %6
+         %18 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %19 = OpExtInst %float %1 Tanh %float_1
+         %20 = OpExtInst %float %1 Atan2 %float_1 %19
+               OpStore %f %20
+         %21 = OpLoad %float %f
+         %22 = OpFOrdGreaterThan %bool %21 %float_0_910000026
+         %23 = OpLoad %float %f
+         %24 = OpFOrdLessThan %bool %23 %float_0_930000007
+         %25 = OpLogicalAnd %bool %22 %24
+               OpSelectionMerge %26 None
+               OpBranchConditional %25 %27 %28
+         %27 = OpLabel
+               OpStore %_GLF_color %16
+               OpBranch %26
+         %28 = OpLabel
+               OpStore %_GLF_color %17
+               OpBranch %26
+         %26 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c627f2d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  f = atan2(1.0f, tanh(1.0f));
+  bool tint_tmp = (f > 0.910000026f);
+  if (tint_tmp) {
+    tint_tmp = (f < 0.930000007f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2bef818
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  f = atan2(1.0f, tanh(1.0f));
+  float const x_21 = f;
+  float const x_23 = f;
+  if (((x_21 > 0.910000026f) && (x_23 < 0.930000007f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b1523b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 47
+; Schema: 0
+               OpCapability Shader
+         %16 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %14 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+%float_0_910000026 = OpConstant %float 0.910000026
+       %bool = OpTypeBool
+%float_0_930000007 = OpConstant %float 0.930000007
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %35 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %14
+         %18 = OpExtInst %float %16 Tanh %float_1
+         %15 = OpExtInst %float %16 Atan2 %float_1 %18
+               OpStore %f %15
+         %19 = OpLoad %float %f
+         %20 = OpLoad %float %f
+         %22 = OpFOrdGreaterThan %bool %19 %float_0_910000026
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %24
+         %25 = OpLabel
+         %27 = OpFOrdLessThan %bool %20 %float_0_930000007
+               OpBranch %24
+         %24 = OpLabel
+         %28 = OpPhi %bool %22 %11 %27 %25
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %31
+         %30 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %35
+%tint_symbol = OpFunctionParameter %main_out
+         %39 = OpLabel
+         %40 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %40
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %main_1
+         %45 = OpLoad %v4float %x_GLF_color
+         %46 = OpCompositeConstruct %main_out %45
+         %44 = OpFunctionCall %void %tint_symbol_2 %46
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..aa69903
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,25 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  f = atan2(1.0, tanh(1.0));
+  let x_21 : f32 = f;
+  let x_23 : f32 = f;
+  if (((x_21 > 0.910000026) && (x_23 < 0.930000007))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
new file mode 100644
index 0000000..aa69903
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
@@ -0,0 +1,25 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  f = atan2(1.0, tanh(1.0));
+  let x_21 : f32 = f;
+  let x_23 : f32 = f;
+  if (((x_21 > 0.910000026) && (x_23 < 0.930000007))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c627f2d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  f = atan2(1.0f, tanh(1.0f));
+  bool tint_tmp = (f > 0.910000026f);
+  if (tint_tmp) {
+    tint_tmp = (f < 0.930000007f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2bef818
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  f = atan2(1.0f, tanh(1.0f));
+  float const x_21 = f;
+  float const x_23 = f;
+  if (((x_21 > 0.910000026f) && (x_23 < 0.930000007f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b1523b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 47
+; Schema: 0
+               OpCapability Shader
+         %16 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %14 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+%float_0_910000026 = OpConstant %float 0.910000026
+       %bool = OpTypeBool
+%float_0_930000007 = OpConstant %float 0.930000007
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %35 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %14
+         %18 = OpExtInst %float %16 Tanh %float_1
+         %15 = OpExtInst %float %16 Atan2 %float_1 %18
+               OpStore %f %15
+         %19 = OpLoad %float %f
+         %20 = OpLoad %float %f
+         %22 = OpFOrdGreaterThan %bool %19 %float_0_910000026
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %24
+         %25 = OpLabel
+         %27 = OpFOrdLessThan %bool %20 %float_0_930000007
+               OpBranch %24
+         %24 = OpLabel
+         %28 = OpPhi %bool %22 %11 %27 %25
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %31
+         %30 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %35
+%tint_symbol = OpFunctionParameter %main_out
+         %39 = OpLabel
+         %40 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %40
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %main_1
+         %45 = OpLoad %v4float %x_GLF_color
+         %46 = OpCompositeConstruct %main_out %45
+         %44 = OpFunctionCall %void %tint_symbol_2 %46
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..aa69903
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  f = atan2(1.0, tanh(1.0));
+  let x_21 : f32 = f;
+  let x_23 : f32 = f;
+  if (((x_21 > 0.910000026) && (x_23 < 0.930000007))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm
new file mode 100644
index 0000000..69c2747
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm
@@ -0,0 +1,154 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_f1_ "func(f1;"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+        %int = OpTypeInt 32 1
+         %18 = OpTypeFunction %int %_ptr_Function_float
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+%float_0_699999988 = OpConstant %float 0.699999988
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %33 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function
+               OpStore %param %float_0_699999988
+         %34 = OpFunctionCall %int %func_f1_ %param
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %36 = OpLoad %int %35
+         %37 = OpIEqual %bool %34 %36
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpCompositeConstruct %v4float %43 %46 %49 %52
+               OpStore %_GLF_color %53
+               OpBranch %38
+         %40 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpCompositeConstruct %v4float %56 %56 %56 %56
+               OpStore %_GLF_color %57
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_f1_ = OpFunction %int None %18
+          %f = OpFunctionParameter %_ptr_Function_float
+         %58 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %60 = OpLoad %int %59
+               OpStore %a %60
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %62 = OpLoad %int %61
+               OpStore %b %62
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %64 = OpLoad %int %63
+               OpStore %i %64
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpLoad %int %i
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %71 = OpLoad %int %70
+         %72 = OpSLessThan %bool %69 %71
+               OpBranchConditional %72 %73 %66
+         %73 = OpLabel
+         %74 = OpLoad %int %a
+         %75 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %76 = OpLoad %int %75
+         %77 = OpSGreaterThan %bool %74 %76
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+               OpBranch %66
+         %78 = OpLabel
+         %80 = OpLoad %float %f
+         %81 = OpConvertFToS %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpSDiv %int %83 %int_2
+         %85 = OpISub %int %81 %84
+         %86 = OpLoad %int %i
+         %87 = OpIAdd %int %85 %86
+               OpStore %a %87
+         %88 = OpLoad %int %b
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %b %89
+               OpBranch %67
+         %67 = OpLabel
+         %90 = OpLoad %int %i
+         %91 = OpIAdd %int %90 %int_1
+               OpStore %i %91
+               OpBranch %65
+         %66 = OpLabel
+         %92 = OpLoad %int %b
+         %93 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpIEqual %bool %92 %94
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %98
+         %97 = OpLabel
+         %99 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %100 = OpLoad %int %99
+               OpReturnValue %100
+         %98 = OpLabel
+        %101 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %102 = OpLoad %int %101
+               OpReturnValue %102
+         %96 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b8364d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,80 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_f1_(inout float f) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  const int x_60 = asint(x_8[1].x);
+  a = x_60;
+  const int x_62 = asint(x_8[2].x);
+  b = x_62;
+  const int x_64 = asint(x_8[2].x);
+  i = x_64;
+  while (true) {
+    const int x_69 = i;
+    const int x_71 = asint(x_8[4].x);
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    const int x_74 = a;
+    const int x_76 = asint(x_8[3].x);
+    if ((x_74 > x_76)) {
+      break;
+    }
+    const float x_80 = f;
+    const int x_83 = asint(x_8[1].x);
+    a = ((int(x_80) - (x_83 / 2)) + i);
+    b = (b + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_92 = b;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_94 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_92 == x_94)) {
+    const int x_100 = asint(x_8[1].x);
+    return x_100;
+  } else {
+    const int x_102 = asint(x_8[2].x);
+    return x_102;
+  }
+  return 0;
+}
+
+void main_1() {
+  float param = 0.0f;
+  param = 0.699999988f;
+  const int x_34 = func_f1_(param);
+  const int x_36 = asint(x_8[1].x);
+  if ((x_34 == x_36)) {
+    const int x_42 = asint(x_8[1].x);
+    const int x_45 = asint(x_8[2].x);
+    const int x_48 = asint(x_8[2].x);
+    const int x_51 = asint(x_8[1].x);
+    x_GLF_color = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  } else {
+    const int x_55 = asint(x_8[2].x);
+    const float x_56 = float(x_55);
+    x_GLF_color = float4(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e105e07
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.msl
@@ -0,0 +1,92 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_f1_(constant buf0& x_8, thread float* const f) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int const x_60 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  a = x_60;
+  int const x_62 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  b = x_62;
+  int const x_64 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  i = x_64;
+  while (true) {
+    int const x_69 = i;
+    int const x_71 = x_8.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    int const x_74 = a;
+    int const x_76 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_74 > x_76)) {
+      break;
+    }
+    float const x_80 = *(f);
+    int const x_83 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_86 = i;
+    a = ((int(x_80) - (x_83 / 2)) + x_86);
+    int const x_88 = b;
+    b = (x_88 + 1);
+    {
+      int const x_90 = i;
+      i = (x_90 + 1);
+    }
+  }
+  int const x_92 = b;
+  int const x_94 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_92 == x_94)) {
+    int const x_100 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    return x_100;
+  } else {
+    int const x_102 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    return x_102;
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float param = 0.0f;
+  param = 0.699999988f;
+  int const x_34 = func_f1_(x_8, &(param));
+  int const x_36 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_34 == x_36)) {
+    int const x_42 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_45 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_48 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_51 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  } else {
+    int const x_55 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    float const x_56 = float(x_55);
+    *(tint_symbol_4) = float4(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..769deeb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,193 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 124
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_f1_ "func_f1_"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %int %_ptr_Function_float
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %80 = OpTypeFunction %void
+         %85 = OpConstantNull %float
+%float_0_699999988 = OpConstant %float 0.699999988
+   %main_out = OpTypeStruct %v4float
+        %112 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %int None %15
+          %f = OpFunctionParameter %_ptr_Function_float
+         %19 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %22
+          %b = OpVariable %_ptr_Function_int Function %22
+          %i = OpVariable %_ptr_Function_int Function %22
+         %28 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %29 = OpLoad %int %28
+               OpStore %a %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %b %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %34 = OpLoad %int %33
+               OpStore %i %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %42 = OpLoad %int %41
+         %43 = OpSLessThan %bool %39 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %36
+         %45 = OpLabel
+         %48 = OpLoad %int %a
+         %50 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %51 = OpLoad %int %50
+         %52 = OpSGreaterThan %bool %48 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpBranch %36
+         %53 = OpLabel
+         %56 = OpLoad %float %f
+         %57 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpLoad %int %i
+         %60 = OpConvertFToS %int %56
+         %61 = OpSDiv %int %58 %int_2
+         %62 = OpISub %int %60 %61
+         %63 = OpIAdd %int %62 %59
+               OpStore %a %63
+         %64 = OpLoad %int %b
+         %65 = OpIAdd %int %64 %int_1
+               OpStore %b %65
+               OpBranch %37
+         %37 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %i %67
+               OpBranch %35
+         %36 = OpLabel
+         %68 = OpLoad %int %b
+         %70 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpIEqual %bool %68 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %77 = OpLoad %int %76
+               OpReturnValue %77
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %79 = OpLoad %int %78
+               OpReturnValue %79
+         %73 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %80
+         %83 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function %85
+               OpStore %param %float_0_699999988
+         %87 = OpFunctionCall %int %func_f1_ %param
+         %89 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpIEqual %bool %87 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %94
+         %93 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpConvertSToF %float %96
+        %104 = OpConvertSToF %float %98
+        %105 = OpConvertSToF %float %100
+        %106 = OpConvertSToF %float %102
+        %107 = OpCompositeConstruct %v4float %103 %104 %105 %106
+               OpStore %x_GLF_color %107
+               OpBranch %92
+         %94 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %109
+        %111 = OpCompositeConstruct %v4float %110 %110 %110 %110
+               OpStore %x_GLF_color %111
+               OpBranch %92
+         %92 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %112
+%tint_symbol = OpFunctionParameter %main_out
+        %116 = OpLabel
+        %117 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %117
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %80
+        %119 = OpLabel
+        %120 = OpFunctionCall %void %main_1
+        %122 = OpLoad %v4float %x_GLF_color
+        %123 = OpCompositeConstruct %main_out %122
+        %121 = OpFunctionCall %void %tint_symbol_2 %123
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e697708
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,86 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_f1_(f : ptr<function, f32>) -> i32 {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  let x_60 : i32 = x_8.x_GLF_uniform_int_values[1];
+  a = x_60;
+  let x_62 : i32 = x_8.x_GLF_uniform_int_values[2];
+  b = x_62;
+  let x_64 : i32 = x_8.x_GLF_uniform_int_values[2];
+  i = x_64;
+  loop {
+    let x_69 : i32 = i;
+    let x_71 : i32 = x_8.x_GLF_uniform_int_values[4];
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    let x_74 : i32 = a;
+    let x_76 : i32 = x_8.x_GLF_uniform_int_values[3];
+    if ((x_74 > x_76)) {
+      break;
+    }
+    let x_80 : f32 = *(f);
+    let x_83 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_86 : i32 = i;
+    a = ((i32(x_80) - (x_83 / 2)) + x_86);
+    let x_88 : i32 = b;
+    b = (x_88 + 1);
+
+    continuing {
+      let x_90 : i32 = i;
+      i = (x_90 + 1);
+    }
+  }
+  let x_92 : i32 = b;
+  let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_92 == x_94)) {
+    let x_100 : i32 = x_8.x_GLF_uniform_int_values[1];
+    return x_100;
+  } else {
+    let x_102 : i32 = x_8.x_GLF_uniform_int_values[2];
+    return x_102;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var param : f32;
+  param = 0.699999988;
+  let x_34 : i32 = func_f1_(&(param));
+  let x_36 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_34 == x_36)) {
+    let x_42 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_45 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_48 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_51 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+  } else {
+    let x_55 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_56 : f32 = f32(x_55);
+    x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
new file mode 100644
index 0000000..e697708
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
@@ -0,0 +1,86 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_f1_(f : ptr<function, f32>) -> i32 {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  let x_60 : i32 = x_8.x_GLF_uniform_int_values[1];
+  a = x_60;
+  let x_62 : i32 = x_8.x_GLF_uniform_int_values[2];
+  b = x_62;
+  let x_64 : i32 = x_8.x_GLF_uniform_int_values[2];
+  i = x_64;
+  loop {
+    let x_69 : i32 = i;
+    let x_71 : i32 = x_8.x_GLF_uniform_int_values[4];
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    let x_74 : i32 = a;
+    let x_76 : i32 = x_8.x_GLF_uniform_int_values[3];
+    if ((x_74 > x_76)) {
+      break;
+    }
+    let x_80 : f32 = *(f);
+    let x_83 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_86 : i32 = i;
+    a = ((i32(x_80) - (x_83 / 2)) + x_86);
+    let x_88 : i32 = b;
+    b = (x_88 + 1);
+
+    continuing {
+      let x_90 : i32 = i;
+      i = (x_90 + 1);
+    }
+  }
+  let x_92 : i32 = b;
+  let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_92 == x_94)) {
+    let x_100 : i32 = x_8.x_GLF_uniform_int_values[1];
+    return x_100;
+  } else {
+    let x_102 : i32 = x_8.x_GLF_uniform_int_values[2];
+    return x_102;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var param : f32;
+  param = 0.699999988;
+  let x_34 : i32 = func_f1_(&(param));
+  let x_36 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_34 == x_36)) {
+    let x_42 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_45 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_48 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_51 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+  } else {
+    let x_55 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_56 : f32 = f32(x_55);
+    x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b8364d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,80 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_f1_(inout float f) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  const int x_60 = asint(x_8[1].x);
+  a = x_60;
+  const int x_62 = asint(x_8[2].x);
+  b = x_62;
+  const int x_64 = asint(x_8[2].x);
+  i = x_64;
+  while (true) {
+    const int x_69 = i;
+    const int x_71 = asint(x_8[4].x);
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    const int x_74 = a;
+    const int x_76 = asint(x_8[3].x);
+    if ((x_74 > x_76)) {
+      break;
+    }
+    const float x_80 = f;
+    const int x_83 = asint(x_8[1].x);
+    a = ((int(x_80) - (x_83 / 2)) + i);
+    b = (b + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_92 = b;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_94 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_92 == x_94)) {
+    const int x_100 = asint(x_8[1].x);
+    return x_100;
+  } else {
+    const int x_102 = asint(x_8[2].x);
+    return x_102;
+  }
+  return 0;
+}
+
+void main_1() {
+  float param = 0.0f;
+  param = 0.699999988f;
+  const int x_34 = func_f1_(param);
+  const int x_36 = asint(x_8[1].x);
+  if ((x_34 == x_36)) {
+    const int x_42 = asint(x_8[1].x);
+    const int x_45 = asint(x_8[2].x);
+    const int x_48 = asint(x_8[2].x);
+    const int x_51 = asint(x_8[1].x);
+    x_GLF_color = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  } else {
+    const int x_55 = asint(x_8[2].x);
+    const float x_56 = float(x_55);
+    x_GLF_color = float4(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e105e07
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.msl
@@ -0,0 +1,92 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_f1_(constant buf0& x_8, thread float* const f) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int const x_60 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  a = x_60;
+  int const x_62 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  b = x_62;
+  int const x_64 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  i = x_64;
+  while (true) {
+    int const x_69 = i;
+    int const x_71 = x_8.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    int const x_74 = a;
+    int const x_76 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_74 > x_76)) {
+      break;
+    }
+    float const x_80 = *(f);
+    int const x_83 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_86 = i;
+    a = ((int(x_80) - (x_83 / 2)) + x_86);
+    int const x_88 = b;
+    b = (x_88 + 1);
+    {
+      int const x_90 = i;
+      i = (x_90 + 1);
+    }
+  }
+  int const x_92 = b;
+  int const x_94 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_92 == x_94)) {
+    int const x_100 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    return x_100;
+  } else {
+    int const x_102 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    return x_102;
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float param = 0.0f;
+  param = 0.699999988f;
+  int const x_34 = func_f1_(x_8, &(param));
+  int const x_36 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_34 == x_36)) {
+    int const x_42 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_45 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_48 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_51 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  } else {
+    int const x_55 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    float const x_56 = float(x_55);
+    *(tint_symbol_4) = float4(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..769deeb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,193 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 124
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_f1_ "func_f1_"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %int %_ptr_Function_float
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %80 = OpTypeFunction %void
+         %85 = OpConstantNull %float
+%float_0_699999988 = OpConstant %float 0.699999988
+   %main_out = OpTypeStruct %v4float
+        %112 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %int None %15
+          %f = OpFunctionParameter %_ptr_Function_float
+         %19 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %22
+          %b = OpVariable %_ptr_Function_int Function %22
+          %i = OpVariable %_ptr_Function_int Function %22
+         %28 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %29 = OpLoad %int %28
+               OpStore %a %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %b %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %34 = OpLoad %int %33
+               OpStore %i %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %42 = OpLoad %int %41
+         %43 = OpSLessThan %bool %39 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %36
+         %45 = OpLabel
+         %48 = OpLoad %int %a
+         %50 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %51 = OpLoad %int %50
+         %52 = OpSGreaterThan %bool %48 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpBranch %36
+         %53 = OpLabel
+         %56 = OpLoad %float %f
+         %57 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpLoad %int %i
+         %60 = OpConvertFToS %int %56
+         %61 = OpSDiv %int %58 %int_2
+         %62 = OpISub %int %60 %61
+         %63 = OpIAdd %int %62 %59
+               OpStore %a %63
+         %64 = OpLoad %int %b
+         %65 = OpIAdd %int %64 %int_1
+               OpStore %b %65
+               OpBranch %37
+         %37 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %i %67
+               OpBranch %35
+         %36 = OpLabel
+         %68 = OpLoad %int %b
+         %70 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpIEqual %bool %68 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %77 = OpLoad %int %76
+               OpReturnValue %77
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %79 = OpLoad %int %78
+               OpReturnValue %79
+         %73 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %80
+         %83 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function %85
+               OpStore %param %float_0_699999988
+         %87 = OpFunctionCall %int %func_f1_ %param
+         %89 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpIEqual %bool %87 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %94
+         %93 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpConvertSToF %float %96
+        %104 = OpConvertSToF %float %98
+        %105 = OpConvertSToF %float %100
+        %106 = OpConvertSToF %float %102
+        %107 = OpCompositeConstruct %v4float %103 %104 %105 %106
+               OpStore %x_GLF_color %107
+               OpBranch %92
+         %94 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %109
+        %111 = OpCompositeConstruct %v4float %110 %110 %110 %110
+               OpStore %x_GLF_color %111
+               OpBranch %92
+         %92 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %112
+%tint_symbol = OpFunctionParameter %main_out
+        %116 = OpLabel
+        %117 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %117
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %80
+        %119 = OpLabel
+        %120 = OpFunctionCall %void %main_1
+        %122 = OpLoad %v4float %x_GLF_color
+        %123 = OpCompositeConstruct %main_out %122
+        %121 = OpFunctionCall %void %tint_symbol_2 %123
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e697708
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,86 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_f1_(f : ptr<function, f32>) -> i32 {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  let x_60 : i32 = x_8.x_GLF_uniform_int_values[1];
+  a = x_60;
+  let x_62 : i32 = x_8.x_GLF_uniform_int_values[2];
+  b = x_62;
+  let x_64 : i32 = x_8.x_GLF_uniform_int_values[2];
+  i = x_64;
+  loop {
+    let x_69 : i32 = i;
+    let x_71 : i32 = x_8.x_GLF_uniform_int_values[4];
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    let x_74 : i32 = a;
+    let x_76 : i32 = x_8.x_GLF_uniform_int_values[3];
+    if ((x_74 > x_76)) {
+      break;
+    }
+    let x_80 : f32 = *(f);
+    let x_83 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_86 : i32 = i;
+    a = ((i32(x_80) - (x_83 / 2)) + x_86);
+    let x_88 : i32 = b;
+    b = (x_88 + 1);
+
+    continuing {
+      let x_90 : i32 = i;
+      i = (x_90 + 1);
+    }
+  }
+  let x_92 : i32 = b;
+  let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_92 == x_94)) {
+    let x_100 : i32 = x_8.x_GLF_uniform_int_values[1];
+    return x_100;
+  } else {
+    let x_102 : i32 = x_8.x_GLF_uniform_int_values[2];
+    return x_102;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var param : f32;
+  param = 0.699999988;
+  let x_34 : i32 = func_f1_(&(param));
+  let x_36 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_34 == x_36)) {
+    let x_42 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_45 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_48 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_51 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+  } else {
+    let x_55 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_56 : f32 = f32(x_55);
+    x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm
new file mode 100644
index 0000000..f316c31
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm
@@ -0,0 +1,66 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %mixed "mixed"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_1 = OpConstant %float 1
+         %13 = OpConstantComposite %v2float %float_1 %float_1
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_0_5 = OpConstant %float 0.5
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %28 = OpLabel
+      %mixed = OpVariable %_ptr_Function_v2float Function
+         %29 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %30 = OpLoad %v2float %29
+         %31 = OpCompositeConstruct %v2float %float_0_5 %float_0_5
+         %32 = OpExtInst %v2float %1 FMix %13 %30 %31
+               OpStore %mixed %32
+         %33 = OpLoad %v2float %mixed
+         %34 = OpFOrdEqual %v2bool %33 %13
+         %35 = OpAll %bool %34
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+         %39 = OpAccessChain %_ptr_Function_float %mixed %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpCompositeConstruct %v4float %40 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %41
+               OpBranch %36
+         %38 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e67d2bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,31 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 mixed = float2(0.0f, 0.0f);
+  const float2 x_30 = asfloat(x_6[0].xy);
+  mixed = lerp(float2(1.0f, 1.0f), x_30, float2(0.5f, 0.5f));
+  if (all((mixed == float2(1.0f, 1.0f)))) {
+    const float x_40 = mixed.x;
+    x_GLF_color = float4(x_40, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b48da79
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 mixed = 0.0f;
+  float2 const x_30 = x_6.one;
+  mixed = mix(float2(1.0f, 1.0f), x_30, float2(0.5f, 0.5f));
+  float2 const x_33 = mixed;
+  if (all((x_33 == float2(1.0f, 1.0f)))) {
+    float const x_40 = mixed.x;
+    *(tint_symbol_4) = float4(x_40, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..cfefd60
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+         %25 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %mixed "mixed"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v2float %float_1 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %29 = OpConstantComposite %v2float %float_0_5 %float_0_5
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+      %mixed = OpVariable %_ptr_Function_v2float Function %18
+         %22 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %23 = OpLoad %v2float %22
+         %24 = OpExtInst %v2float %25 FMix %27 %23 %29
+               OpStore %mixed %24
+         %30 = OpLoad %v2float %mixed
+         %33 = OpFOrdEqual %v2bool %30 %27
+         %31 = OpAll %bool %33
+               OpSelectionMerge %35 None
+               OpBranchConditional %31 %36 %37
+         %36 = OpLabel
+         %39 = OpAccessChain %_ptr_Function_float %mixed %uint_0
+         %40 = OpLoad %float %39
+         %42 = OpCompositeConstruct %v4float %40 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %42
+               OpBranch %35
+         %37 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..04be2cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var mixed : vec2<f32>;
+  let x_30 : vec2<f32> = x_6.one;
+  mixed = mix(vec2<f32>(1.0, 1.0), x_30, vec2<f32>(0.5, 0.5));
+  let x_33 : vec2<f32> = mixed;
+  if (all((x_33 == vec2<f32>(1.0, 1.0)))) {
+    let x_40 : f32 = mixed.x;
+    x_GLF_color = vec4<f32>(x_40, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
new file mode 100644
index 0000000..04be2cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var mixed : vec2<f32>;
+  let x_30 : vec2<f32> = x_6.one;
+  mixed = mix(vec2<f32>(1.0, 1.0), x_30, vec2<f32>(0.5, 0.5));
+  let x_33 : vec2<f32> = mixed;
+  if (all((x_33 == vec2<f32>(1.0, 1.0)))) {
+    let x_40 : f32 = mixed.x;
+    x_GLF_color = vec4<f32>(x_40, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e67d2bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 mixed = float2(0.0f, 0.0f);
+  const float2 x_30 = asfloat(x_6[0].xy);
+  mixed = lerp(float2(1.0f, 1.0f), x_30, float2(0.5f, 0.5f));
+  if (all((mixed == float2(1.0f, 1.0f)))) {
+    const float x_40 = mixed.x;
+    x_GLF_color = float4(x_40, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b48da79
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 mixed = 0.0f;
+  float2 const x_30 = x_6.one;
+  mixed = mix(float2(1.0f, 1.0f), x_30, float2(0.5f, 0.5f));
+  float2 const x_33 = mixed;
+  if (all((x_33 == float2(1.0f, 1.0f)))) {
+    float const x_40 = mixed.x;
+    *(tint_symbol_4) = float4(x_40, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..cfefd60
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+         %25 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %mixed "mixed"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v2float %float_1 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %29 = OpConstantComposite %v2float %float_0_5 %float_0_5
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+      %mixed = OpVariable %_ptr_Function_v2float Function %18
+         %22 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %23 = OpLoad %v2float %22
+         %24 = OpExtInst %v2float %25 FMix %27 %23 %29
+               OpStore %mixed %24
+         %30 = OpLoad %v2float %mixed
+         %33 = OpFOrdEqual %v2bool %30 %27
+         %31 = OpAll %bool %33
+               OpSelectionMerge %35 None
+               OpBranchConditional %31 %36 %37
+         %36 = OpLabel
+         %39 = OpAccessChain %_ptr_Function_float %mixed %uint_0
+         %40 = OpLoad %float %39
+         %42 = OpCompositeConstruct %v4float %40 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %42
+               OpBranch %35
+         %37 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..04be2cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var mixed : vec2<f32>;
+  let x_30 : vec2<f32> = x_6.one;
+  mixed = mix(vec2<f32>(1.0, 1.0), x_30, vec2<f32>(0.5, 0.5));
+  let x_33 : vec2<f32> = mixed;
+  if (all((x_33 == vec2<f32>(1.0, 1.0)))) {
+    let x_40 : f32 = mixed.x;
+    x_GLF_color = vec4<f32>(x_40, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm
new file mode 100644
index 0000000..89e69f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm
@@ -0,0 +1,109 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "zero"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %false = OpConstantFalse %bool
+       %main = OpFunction %void None %10
+         %26 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %28 = OpLoad %int %27
+         %29 = OpConvertSToF %float %28
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %31 = OpLoad %int %30
+         %32 = OpConvertSToF %float %31
+         %33 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpConvertSToF %float %37
+         %39 = OpCompositeConstruct %v4float %29 %32 %35 %38
+               OpStore %_GLF_color %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %__0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpIEqual %bool %45 %47
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+               OpBranch %42
+         %49 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %__0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+               OpBranch %41
+         %56 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %__0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %61 = OpLoad %int %60
+         %62 = OpIEqual %bool %59 %61
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+               OpKill
+         %63 = OpLabel
+               OpReturn
+         %42 = OpLabel
+               OpBranchConditional %false %40 %41
+         %41 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpCompositeConstruct %v4float %67 %67 %67 %67
+               OpStore %_GLF_color %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ad30a5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,66 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[4];
+};
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[1];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_28 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_31 = asint(x_5[1].x);
+  const int x_34 = asint(x_5[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_37 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_28), float(x_31), float(x_34), float(x_37));
+  while (true) {
+    const int x_45 = asint(x_7[0].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_45 == x_47)) {
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    const int x_52 = asint(x_7[0].x);
+    const int x_54 = asint(x_5[2].x);
+    if ((x_52 == x_54)) {
+      break;
+    }
+    const int x_59 = asint(x_7[0].x);
+    const int x_61 = asint(x_5[3].x);
+    if ((x_59 == x_61)) {
+      discard;
+    }
+    return;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_66 = asint(x_5[1].x);
+  const float x_67 = float(x_66);
+  x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..fc4bcb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,73 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct buf1 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_7, thread float4* const tint_symbol_4) {
+  int const x_28 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_31 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_34 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_37 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_28), float(x_31), float(x_34), float(x_37));
+  while (true) {
+    int const x_45 = x_7.zero;
+    int const x_47 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_45 == x_47)) {
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    int const x_52 = x_7.zero;
+    int const x_54 = x_5.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_52 == x_54)) {
+      break;
+    }
+    int const x_59 = x_7.zero;
+    int const x_61 = x_5.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_59 == x_61)) {
+      discard_fragment();
+    }
+    return;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_66 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  float const x_67 = float(x_66);
+  *(tint_symbol_4) = float4(x_67, x_67, x_67, x_67);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_7 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4c0d3dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,154 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 87
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "zero"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %75 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+         %25 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %26 = OpLoad %int %25
+         %28 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %29 = OpLoad %int %28
+         %30 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %31 = OpLoad %int %30
+         %32 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %33 = OpLoad %int %32
+         %34 = OpConvertSToF %float %26
+         %35 = OpConvertSToF %float %29
+         %36 = OpConvertSToF %float %31
+         %37 = OpConvertSToF %float %33
+         %38 = OpCompositeConstruct %v4float %34 %35 %36 %37
+               OpStore %x_GLF_color %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpIEqual %bool %44 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %49
+         %50 = OpLabel
+               OpBranch %41
+         %49 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %52 = OpLoad %int %51
+         %54 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %52 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %40
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %60 = OpLoad %int %59
+         %62 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_3
+         %63 = OpLoad %int %62
+         %64 = OpIEqual %bool %60 %63
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpKill
+         %65 = OpLabel
+               OpReturn
+         %41 = OpLabel
+               OpSelectionMerge %68 None
+               OpBranchConditional %false %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %40
+         %68 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpCompositeConstruct %v4float %73 %73 %73 %73
+               OpStore %x_GLF_color %74
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %75
+%tint_symbol = OpFunctionParameter %main_out
+         %79 = OpLabel
+         %80 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %80
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %82 = OpLabel
+         %83 = OpFunctionCall %void %main_1
+         %85 = OpLoad %v4float %x_GLF_color
+         %86 = OpCompositeConstruct %main_out %85
+         %84 = OpFunctionCall %void %tint_symbol_2 %86
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 41[%41] is not post dominated by the back-edge block 68[%68]
+  %68 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8e2cdde
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+fn main_1() {
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_34 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_37 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_28), f32(x_31), f32(x_34), f32(x_37));
+  loop {
+    let x_45 : i32 = x_7.zero;
+    let x_47 : i32 = x_5.x_GLF_uniform_int_values[0];
+    if ((x_45 == x_47)) {
+      continue;
+    }
+    let x_52 : i32 = x_7.zero;
+    let x_54 : i32 = x_5.x_GLF_uniform_int_values[2];
+    if ((x_52 == x_54)) {
+      break;
+    }
+    let x_59 : i32 = x_7.zero;
+    let x_61 : i32 = x_5.x_GLF_uniform_int_values[3];
+    if ((x_59 == x_61)) {
+      discard;
+    }
+    return;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_66 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_67 : f32 = f32(x_66);
+  x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
new file mode 100644
index 0000000..8e2cdde
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+fn main_1() {
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_34 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_37 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_28), f32(x_31), f32(x_34), f32(x_37));
+  loop {
+    let x_45 : i32 = x_7.zero;
+    let x_47 : i32 = x_5.x_GLF_uniform_int_values[0];
+    if ((x_45 == x_47)) {
+      continue;
+    }
+    let x_52 : i32 = x_7.zero;
+    let x_54 : i32 = x_5.x_GLF_uniform_int_values[2];
+    if ((x_52 == x_54)) {
+      break;
+    }
+    let x_59 : i32 = x_7.zero;
+    let x_61 : i32 = x_5.x_GLF_uniform_int_values[3];
+    if ((x_59 == x_61)) {
+      discard;
+    }
+    return;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_66 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_67 : f32 = f32(x_66);
+  x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ad30a5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,66 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[4];
+};
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[1];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_28 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_31 = asint(x_5[1].x);
+  const int x_34 = asint(x_5[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_37 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_28), float(x_31), float(x_34), float(x_37));
+  while (true) {
+    const int x_45 = asint(x_7[0].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_45 == x_47)) {
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    const int x_52 = asint(x_7[0].x);
+    const int x_54 = asint(x_5[2].x);
+    if ((x_52 == x_54)) {
+      break;
+    }
+    const int x_59 = asint(x_7[0].x);
+    const int x_61 = asint(x_5[3].x);
+    if ((x_59 == x_61)) {
+      discard;
+    }
+    return;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_66 = asint(x_5[1].x);
+  const float x_67 = float(x_66);
+  x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..fc4bcb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,73 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct buf1 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_7, thread float4* const tint_symbol_4) {
+  int const x_28 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_31 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_34 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_37 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_28), float(x_31), float(x_34), float(x_37));
+  while (true) {
+    int const x_45 = x_7.zero;
+    int const x_47 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_45 == x_47)) {
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    int const x_52 = x_7.zero;
+    int const x_54 = x_5.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_52 == x_54)) {
+      break;
+    }
+    int const x_59 = x_7.zero;
+    int const x_61 = x_5.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_59 == x_61)) {
+      discard_fragment();
+    }
+    return;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_66 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  float const x_67 = float(x_66);
+  *(tint_symbol_4) = float4(x_67, x_67, x_67, x_67);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_7 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4c0d3dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,154 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 87
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "zero"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %75 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+         %25 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %26 = OpLoad %int %25
+         %28 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %29 = OpLoad %int %28
+         %30 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %31 = OpLoad %int %30
+         %32 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %33 = OpLoad %int %32
+         %34 = OpConvertSToF %float %26
+         %35 = OpConvertSToF %float %29
+         %36 = OpConvertSToF %float %31
+         %37 = OpConvertSToF %float %33
+         %38 = OpCompositeConstruct %v4float %34 %35 %36 %37
+               OpStore %x_GLF_color %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpIEqual %bool %44 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %49
+         %50 = OpLabel
+               OpBranch %41
+         %49 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %52 = OpLoad %int %51
+         %54 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %52 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %40
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %60 = OpLoad %int %59
+         %62 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_3
+         %63 = OpLoad %int %62
+         %64 = OpIEqual %bool %60 %63
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpKill
+         %65 = OpLabel
+               OpReturn
+         %41 = OpLabel
+               OpSelectionMerge %68 None
+               OpBranchConditional %false %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %40
+         %68 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpCompositeConstruct %v4float %73 %73 %73 %73
+               OpStore %x_GLF_color %74
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %75
+%tint_symbol = OpFunctionParameter %main_out
+         %79 = OpLabel
+         %80 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %80
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %82 = OpLabel
+         %83 = OpFunctionCall %void %main_1
+         %85 = OpLoad %v4float %x_GLF_color
+         %86 = OpCompositeConstruct %main_out %85
+         %84 = OpFunctionCall %void %tint_symbol_2 %86
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 41[%41] is not post dominated by the back-edge block 68[%68]
+  %68 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8e2cdde
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+fn main_1() {
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_34 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_37 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_28), f32(x_31), f32(x_34), f32(x_37));
+  loop {
+    let x_45 : i32 = x_7.zero;
+    let x_47 : i32 = x_5.x_GLF_uniform_int_values[0];
+    if ((x_45 == x_47)) {
+      continue;
+    }
+    let x_52 : i32 = x_7.zero;
+    let x_54 : i32 = x_5.x_GLF_uniform_int_values[2];
+    if ((x_52 == x_54)) {
+      break;
+    }
+    let x_59 : i32 = x_7.zero;
+    let x_61 : i32 = x_5.x_GLF_uniform_int_values[3];
+    if ((x_59 == x_61)) {
+      discard;
+    }
+    return;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_66 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_67 : f32 = f32(x_66);
+  x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm
new file mode 100644
index 0000000..ce81748
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm
@@ -0,0 +1,173 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %Array "Array"
+               OpMemberName %Array 0 "values"
+               OpName %func_struct_Array_i1_2_1_ "func(struct-Array-i1[2]1;"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %Array 0 RelaxedPrecision
+               OpDecorate %func_struct_Array_i1_2_1_ RelaxedPrecision
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+      %Array = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_Array = OpTypePointer Function %Array
+         %28 = OpTypeFunction %int %_ptr_Function_Array
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %41 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %45 = OpUndef %Array
+         %46 = OpUndef %int
+         %47 = OpUndef %bool
+         %48 = OpConstantNull %_arr_int_uint_2
+       %main = OpFunction %void None %22
+         %49 = OpLabel
+         %50 = OpVariable %_ptr_Function_bool Function %false
+         %15 = OpVariable %_ptr_Function_int Function
+         %16 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_Array Function
+               OpStore %param %45
+               OpStore %50 %false
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %17 = OpLoad %int %58
+         %59 = OpAccessChain %_ptr_Function_int %param %int_0 %17
+         %18 = OpLoad %int %59
+         %60 = OpIEqual %bool %18 %int_1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpStore %50 %true
+               OpStore %15 %int_1
+               OpBranch %55
+         %61 = OpLabel
+               OpBranch %55
+         %56 = OpLabel
+               OpBranch %54
+         %55 = OpLabel
+         %19 = OpPhi %int %int_1 %62 %46 %61
+         %63 = OpPhi %bool %true %62 %false %61
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %52 %64
+         %64 = OpLabel
+               OpStore %50 %true
+               OpStore %15 %int_1
+               OpBranch %52
+         %53 = OpLabel
+               OpBranch %51
+         %52 = OpLabel
+         %20 = OpPhi %int %19 %55 %int_1 %64
+               OpStore %16 %20
+         %65 = OpIEqual %bool %20 %int_1
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %68 = OpLabel
+               OpStore %_GLF_color %42
+               OpBranch %66
+         %67 = OpLabel
+               OpStore %_GLF_color %41
+               OpBranch %66
+         %66 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_struct_Array_i1_2_1_ = OpFunction %int None %28
+          %a = OpFunctionParameter %_ptr_Function_Array
+         %69 = OpLabel
+         %70 = OpVariable %_ptr_Function_bool Function %false
+         %12 = OpVariable %_ptr_Function_int Function
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpPhi %bool %false %69 %47 %73
+               OpLoopMerge %74 %73 None
+               OpBranch %75
+         %75 = OpLabel
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpPhi %bool %72 %75 %47 %78
+               OpLoopMerge %79 %78 None
+               OpBranch %80
+         %80 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %10 = OpLoad %int %82
+         %83 = OpAccessChain %_ptr_Function_int %a %int_0 %10
+         %11 = OpLoad %int %83
+         %84 = OpIEqual %bool %11 %int_1
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+               OpStore %70 %true
+               OpStore %12 %int_1
+               OpBranch %79
+         %85 = OpLabel
+               OpBranch %79
+         %78 = OpLabel
+               OpBranch %76
+         %79 = OpLabel
+         %13 = OpPhi %int %int_1 %86 %46 %85
+         %87 = OpPhi %bool %true %86 %77 %85
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %74 %88
+         %88 = OpLabel
+               OpStore %70 %true
+               OpStore %12 %int_1
+               OpBranch %74
+         %73 = OpLabel
+               OpBranch %71
+         %74 = OpLabel
+         %14 = OpPhi %int %13 %79 %int_1 %88
+               OpReturnValue %14
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..fc32950
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,119 @@
+struct Array {
+  int values[2];
+};
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_50 = false;
+  int x_15 = 0;
+  int x_16 = 0;
+  Array param = (Array)0;
+  int x_19 = 0;
+  int x_20_phi = 0;
+  const int tint_symbol_3[2] = {0, 0};
+  const Array tint_symbol_4 = {tint_symbol_3};
+  param = tint_symbol_4;
+  x_50 = false;
+  while (true) {
+    int x_19_phi = 0;
+    bool x_63_phi = false;
+    while (true) {
+      const int x_17 = asint(x_8[0].x);
+      const int x_18 = param.values[x_17];
+      if ((x_18 == 1)) {
+        x_50 = true;
+        x_15 = 1;
+        x_19_phi = 1;
+        x_63_phi = true;
+        break;
+      }
+      x_19_phi = 0;
+      x_63_phi = false;
+      break;
+    }
+    x_19 = x_19_phi;
+    const bool x_63 = x_63_phi;
+    x_20_phi = x_19;
+    if (x_63) {
+      break;
+    }
+    x_50 = true;
+    x_15 = 1;
+    x_20_phi = 1;
+    break;
+  }
+  const int x_20 = x_20_phi;
+  x_16 = x_20;
+  if ((x_20 == 1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int func_struct_Array_i1_2_1_(inout Array a) {
+  bool x_70 = false;
+  int x_12 = 0;
+  int x_13 = 0;
+  bool x_72_phi = false;
+  int x_14_phi = 0;
+  x_72_phi = false;
+  while (true) {
+    bool x_77 = false;
+    bool x_77_phi = false;
+    int x_13_phi = 0;
+    bool x_87_phi = false;
+    x_77_phi = x_72_phi;
+    while (true) {
+      x_77 = x_77_phi;
+      const int x_10 = asint(x_8[0].x);
+      const int x_11 = a.values[x_10];
+      if ((x_11 == 1)) {
+        x_70 = true;
+        x_12 = 1;
+        x_13_phi = 1;
+        x_87_phi = true;
+        break;
+      }
+      x_13_phi = 0;
+      x_87_phi = x_77;
+      break;
+      {
+        x_77_phi = false;
+      }
+    }
+    x_13 = x_13_phi;
+    const bool x_87 = x_87_phi;
+    x_14_phi = x_13;
+    if (x_87) {
+      break;
+    }
+    x_70 = true;
+    x_12 = 1;
+    x_14_phi = 1;
+    break;
+    {
+      x_72_phi = false;
+    }
+  }
+  return x_14_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a3005e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.msl
@@ -0,0 +1,126 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct Array {
+  tint_array_wrapper values;
+};
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_6) {
+  bool x_50 = false;
+  int x_15 = 0;
+  int x_16 = 0;
+  Array param = {};
+  int x_19 = 0;
+  int x_20_phi = 0;
+  tint_array_wrapper const tint_symbol_3 = {.arr={0, 0}};
+  Array const tint_symbol_4 = {.values=tint_symbol_3};
+  param = tint_symbol_4;
+  x_50 = false;
+  while (true) {
+    int x_19_phi = 0;
+    bool x_63_phi = false;
+    while (true) {
+      int const x_17 = x_8.zero;
+      int const x_18 = param.values.arr[x_17];
+      if ((x_18 == 1)) {
+        x_50 = true;
+        x_15 = 1;
+        x_19_phi = 1;
+        x_63_phi = true;
+        break;
+      }
+      x_19_phi = 0;
+      x_63_phi = false;
+      break;
+    }
+    x_19 = x_19_phi;
+    bool const x_63 = x_63_phi;
+    x_20_phi = x_19;
+    if (x_63) {
+      break;
+    }
+    x_50 = true;
+    x_15 = 1;
+    x_20_phi = 1;
+    break;
+  }
+  int const x_20 = x_20_phi;
+  x_16 = x_20;
+  if ((x_20 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_8, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int func_struct_Array_i1_2_1_(constant buf0& x_8, thread Array* const a) {
+  bool x_70 = false;
+  int x_12 = 0;
+  int x_13 = 0;
+  bool x_72_phi = false;
+  int x_14_phi = 0;
+  x_72_phi = false;
+  while (true) {
+    bool x_77 = false;
+    bool x_77_phi = false;
+    int x_13_phi = 0;
+    bool x_87_phi = false;
+    bool const x_72 = x_72_phi;
+    x_77_phi = x_72;
+    while (true) {
+      x_77 = x_77_phi;
+      int const x_10 = x_8.zero;
+      int const x_11 = (*(a)).values.arr[x_10];
+      if ((x_11 == 1)) {
+        x_70 = true;
+        x_12 = 1;
+        x_13_phi = 1;
+        x_87_phi = true;
+        break;
+      }
+      x_13_phi = 0;
+      x_87_phi = x_77;
+      break;
+      {
+        x_77_phi = false;
+      }
+    }
+    x_13 = x_13_phi;
+    bool const x_87 = x_87_phi;
+    x_14_phi = x_13;
+    if (x_87) {
+      break;
+    }
+    x_70 = true;
+    x_12 = 1;
+    x_14_phi = 1;
+    break;
+    {
+      x_72_phi = false;
+    }
+  }
+  int const x_14 = x_14_phi;
+  return x_14;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b34c579
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,249 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_50 "x_50"
+               OpName %x_15 "x_15"
+               OpName %x_16 "x_16"
+               OpName %Array "Array"
+               OpMemberName %Array 0 "values"
+               OpName %param "param"
+               OpName %x_19 "x_19"
+               OpName %x_20_phi "x_20_phi"
+               OpName %x_19_phi "x_19_phi"
+               OpName %x_63_phi "x_63_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_struct_Array_i1_2_1_ "func_struct_Array_i1_2_1_"
+               OpName %a "a"
+               OpName %x_70 "x_70"
+               OpName %x_12 "x_12"
+               OpName %x_13 "x_13"
+               OpName %x_72_phi "x_72_phi"
+               OpName %x_14_phi "x_14_phi"
+               OpName %x_77 "x_77"
+               OpName %x_77_phi "x_77_phi"
+               OpName %x_13_phi "x_13_phi"
+               OpName %x_87_phi "x_87_phi"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %Array 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %20 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+      %Array = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_Array = OpTypePointer Function %Array
+         %31 = OpConstantNull %Array
+      %int_0 = OpConstant %int 0
+         %35 = OpConstantComposite %_arr_int_uint_2 %int_0 %int_0
+         %36 = OpConstantComposite %Array %35
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %70 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %71 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %72 = OpTypeFunction %void %main_out
+         %84 = OpTypeFunction %int %_ptr_Function_Array
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_50 = OpVariable %_ptr_Function_bool Function %20
+       %x_15 = OpVariable %_ptr_Function_int Function %23
+       %x_16 = OpVariable %_ptr_Function_int Function %23
+      %param = OpVariable %_ptr_Function_Array Function %31
+       %x_19 = OpVariable %_ptr_Function_int Function %23
+   %x_20_phi = OpVariable %_ptr_Function_int Function %23
+   %x_19_phi = OpVariable %_ptr_Function_int Function %23
+   %x_63_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_50 %false
+               OpStore %param %36
+               OpStore %x_50 %false
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Function_int %param %uint_0 %50
+         %52 = OpLoad %int %51
+         %54 = OpIEqual %bool %52 %int_1
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpStore %x_50 %true
+               OpStore %x_15 %int_1
+               OpStore %x_19_phi %int_1
+               OpStore %x_63_phi %true
+               OpBranch %44
+         %55 = OpLabel
+               OpStore %x_19_phi %int_0
+               OpStore %x_63_phi %false
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %43
+         %44 = OpLabel
+         %58 = OpLoad %int %x_19_phi
+               OpStore %x_19 %58
+         %59 = OpLoad %bool %x_63_phi
+         %60 = OpLoad %int %x_19
+               OpStore %x_20_phi %60
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %61
+         %62 = OpLabel
+               OpBranch %38
+         %61 = OpLabel
+               OpStore %x_50 %true
+               OpStore %x_15 %int_1
+               OpStore %x_20_phi %int_1
+               OpBranch %38
+         %39 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+         %63 = OpLoad %int %x_20_phi
+               OpStore %x_16 %63
+         %64 = OpIEqual %bool %63 %int_1
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+               OpStore %x_GLF_color %70
+               OpBranch %65
+         %67 = OpLabel
+               OpStore %x_GLF_color %71
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %72
+%tint_symbol = OpFunctionParameter %main_out
+         %76 = OpLabel
+         %77 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %77
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %79 = OpLabel
+         %80 = OpFunctionCall %void %main_1
+         %82 = OpLoad %v4float %x_GLF_color
+         %83 = OpCompositeConstruct %main_out %82
+         %81 = OpFunctionCall %void %tint_symbol_2 %83
+               OpReturn
+               OpFunctionEnd
+%func_struct_Array_i1_2_1_ = OpFunction %int None %84
+          %a = OpFunctionParameter %_ptr_Function_Array
+         %87 = OpLabel
+       %x_70 = OpVariable %_ptr_Function_bool Function %20
+       %x_12 = OpVariable %_ptr_Function_int Function %23
+       %x_13 = OpVariable %_ptr_Function_int Function %23
+   %x_72_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_14_phi = OpVariable %_ptr_Function_int Function %23
+       %x_77 = OpVariable %_ptr_Function_bool Function %20
+   %x_77_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_13_phi = OpVariable %_ptr_Function_int Function %23
+   %x_87_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_70 %false
+               OpStore %x_72_phi %false
+               OpBranch %93
+         %93 = OpLabel
+               OpLoopMerge %94 %95 None
+               OpBranch %96
+         %96 = OpLabel
+        %101 = OpLoad %bool %x_72_phi
+               OpStore %x_77_phi %101
+               OpBranch %102
+        %102 = OpLabel
+               OpLoopMerge %103 %104 None
+               OpBranch %105
+        %105 = OpLabel
+        %106 = OpLoad %bool %x_77_phi
+               OpStore %x_77 %106
+        %107 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+        %108 = OpLoad %int %107
+        %110 = OpAccessChain %_ptr_Function_int %a %uint_0 %108
+        %111 = OpLoad %int %110
+        %112 = OpIEqual %bool %111 %int_1
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+               OpStore %x_70 %true
+               OpStore %x_12 %int_1
+               OpStore %x_13_phi %int_1
+               OpStore %x_87_phi %true
+               OpBranch %103
+        %113 = OpLabel
+               OpStore %x_13_phi %int_0
+        %115 = OpLoad %bool %x_77
+               OpStore %x_87_phi %115
+               OpBranch %103
+        %104 = OpLabel
+               OpStore %x_77_phi %false
+               OpBranch %102
+        %103 = OpLabel
+        %116 = OpLoad %int %x_13_phi
+               OpStore %x_13 %116
+        %117 = OpLoad %bool %x_87_phi
+        %118 = OpLoad %int %x_13
+               OpStore %x_14_phi %118
+               OpSelectionMerge %119 None
+               OpBranchConditional %117 %120 %119
+        %120 = OpLabel
+               OpBranch %94
+        %119 = OpLabel
+               OpStore %x_70 %true
+               OpStore %x_12 %int_1
+               OpStore %x_14_phi %int_1
+               OpBranch %94
+         %95 = OpLabel
+               OpStore %x_72_phi %false
+               OpBranch %93
+         %94 = OpLabel
+        %121 = OpLoad %int %x_14_phi
+               OpReturnValue %121
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c3fe68b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,122 @@
+struct Array {
+  values : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_50 : bool = false;
+  var x_15 : i32;
+  var x_16 : i32;
+  var param : Array;
+  var x_19 : i32;
+  var x_20_phi : i32;
+  param = Array(array<i32, 2>(0, 0));
+  x_50 = false;
+  loop {
+    var x_19_phi : i32;
+    var x_63_phi : bool;
+    loop {
+      let x_17 : i32 = x_8.zero;
+      let x_18 : i32 = param.values[x_17];
+      if ((x_18 == 1)) {
+        x_50 = true;
+        x_15 = 1;
+        x_19_phi = 1;
+        x_63_phi = true;
+        break;
+      }
+      x_19_phi = 0;
+      x_63_phi = false;
+      break;
+    }
+    x_19 = x_19_phi;
+    let x_63 : bool = x_63_phi;
+    x_20_phi = x_19;
+    if (x_63) {
+      break;
+    }
+    x_50 = true;
+    x_15 = 1;
+    x_20_phi = 1;
+    break;
+  }
+  let x_20 : i32 = x_20_phi;
+  x_16 = x_20;
+  if ((x_20 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_struct_Array_i1_2_1_(a : ptr<function, Array>) -> i32 {
+  var x_70 : bool = false;
+  var x_12 : i32;
+  var x_13 : i32;
+  var x_72_phi : bool;
+  var x_14_phi : i32;
+  x_72_phi = false;
+  loop {
+    var x_77 : bool;
+    var x_77_phi : bool;
+    var x_13_phi : i32;
+    var x_87_phi : bool;
+    let x_72 : bool = x_72_phi;
+    x_77_phi = x_72;
+    loop {
+      x_77 = x_77_phi;
+      let x_10 : i32 = x_8.zero;
+      let x_11 : i32 = (*(a)).values[x_10];
+      if ((x_11 == 1)) {
+        x_70 = true;
+        x_12 = 1;
+        x_13_phi = 1;
+        x_87_phi = true;
+        break;
+      }
+      x_13_phi = 0;
+      x_87_phi = x_77;
+      break;
+
+      continuing {
+        x_77_phi = false;
+      }
+    }
+    x_13 = x_13_phi;
+    let x_87 : bool = x_87_phi;
+    x_14_phi = x_13;
+    if (x_87) {
+      break;
+    }
+    x_70 = true;
+    x_12 = 1;
+    x_14_phi = 1;
+    break;
+
+    continuing {
+      x_72_phi = false;
+    }
+  }
+  let x_14 : i32 = x_14_phi;
+  return x_14;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
new file mode 100644
index 0000000..c3fe68b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
@@ -0,0 +1,122 @@
+struct Array {
+  values : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_50 : bool = false;
+  var x_15 : i32;
+  var x_16 : i32;
+  var param : Array;
+  var x_19 : i32;
+  var x_20_phi : i32;
+  param = Array(array<i32, 2>(0, 0));
+  x_50 = false;
+  loop {
+    var x_19_phi : i32;
+    var x_63_phi : bool;
+    loop {
+      let x_17 : i32 = x_8.zero;
+      let x_18 : i32 = param.values[x_17];
+      if ((x_18 == 1)) {
+        x_50 = true;
+        x_15 = 1;
+        x_19_phi = 1;
+        x_63_phi = true;
+        break;
+      }
+      x_19_phi = 0;
+      x_63_phi = false;
+      break;
+    }
+    x_19 = x_19_phi;
+    let x_63 : bool = x_63_phi;
+    x_20_phi = x_19;
+    if (x_63) {
+      break;
+    }
+    x_50 = true;
+    x_15 = 1;
+    x_20_phi = 1;
+    break;
+  }
+  let x_20 : i32 = x_20_phi;
+  x_16 = x_20;
+  if ((x_20 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_struct_Array_i1_2_1_(a : ptr<function, Array>) -> i32 {
+  var x_70 : bool = false;
+  var x_12 : i32;
+  var x_13 : i32;
+  var x_72_phi : bool;
+  var x_14_phi : i32;
+  x_72_phi = false;
+  loop {
+    var x_77 : bool;
+    var x_77_phi : bool;
+    var x_13_phi : i32;
+    var x_87_phi : bool;
+    let x_72 : bool = x_72_phi;
+    x_77_phi = x_72;
+    loop {
+      x_77 = x_77_phi;
+      let x_10 : i32 = x_8.zero;
+      let x_11 : i32 = (*(a)).values[x_10];
+      if ((x_11 == 1)) {
+        x_70 = true;
+        x_12 = 1;
+        x_13_phi = 1;
+        x_87_phi = true;
+        break;
+      }
+      x_13_phi = 0;
+      x_87_phi = x_77;
+      break;
+
+      continuing {
+        x_77_phi = false;
+      }
+    }
+    x_13 = x_13_phi;
+    let x_87 : bool = x_87_phi;
+    x_14_phi = x_13;
+    if (x_87) {
+      break;
+    }
+    x_70 = true;
+    x_12 = 1;
+    x_14_phi = 1;
+    break;
+
+    continuing {
+      x_72_phi = false;
+    }
+  }
+  let x_14 : i32 = x_14_phi;
+  return x_14;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..fc32950
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,119 @@
+struct Array {
+  int values[2];
+};
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_50 = false;
+  int x_15 = 0;
+  int x_16 = 0;
+  Array param = (Array)0;
+  int x_19 = 0;
+  int x_20_phi = 0;
+  const int tint_symbol_3[2] = {0, 0};
+  const Array tint_symbol_4 = {tint_symbol_3};
+  param = tint_symbol_4;
+  x_50 = false;
+  while (true) {
+    int x_19_phi = 0;
+    bool x_63_phi = false;
+    while (true) {
+      const int x_17 = asint(x_8[0].x);
+      const int x_18 = param.values[x_17];
+      if ((x_18 == 1)) {
+        x_50 = true;
+        x_15 = 1;
+        x_19_phi = 1;
+        x_63_phi = true;
+        break;
+      }
+      x_19_phi = 0;
+      x_63_phi = false;
+      break;
+    }
+    x_19 = x_19_phi;
+    const bool x_63 = x_63_phi;
+    x_20_phi = x_19;
+    if (x_63) {
+      break;
+    }
+    x_50 = true;
+    x_15 = 1;
+    x_20_phi = 1;
+    break;
+  }
+  const int x_20 = x_20_phi;
+  x_16 = x_20;
+  if ((x_20 == 1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int func_struct_Array_i1_2_1_(inout Array a) {
+  bool x_70 = false;
+  int x_12 = 0;
+  int x_13 = 0;
+  bool x_72_phi = false;
+  int x_14_phi = 0;
+  x_72_phi = false;
+  while (true) {
+    bool x_77 = false;
+    bool x_77_phi = false;
+    int x_13_phi = 0;
+    bool x_87_phi = false;
+    x_77_phi = x_72_phi;
+    while (true) {
+      x_77 = x_77_phi;
+      const int x_10 = asint(x_8[0].x);
+      const int x_11 = a.values[x_10];
+      if ((x_11 == 1)) {
+        x_70 = true;
+        x_12 = 1;
+        x_13_phi = 1;
+        x_87_phi = true;
+        break;
+      }
+      x_13_phi = 0;
+      x_87_phi = x_77;
+      break;
+      {
+        x_77_phi = false;
+      }
+    }
+    x_13 = x_13_phi;
+    const bool x_87 = x_87_phi;
+    x_14_phi = x_13;
+    if (x_87) {
+      break;
+    }
+    x_70 = true;
+    x_12 = 1;
+    x_14_phi = 1;
+    break;
+    {
+      x_72_phi = false;
+    }
+  }
+  return x_14_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a3005e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.msl
@@ -0,0 +1,126 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct Array {
+  tint_array_wrapper values;
+};
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_6) {
+  bool x_50 = false;
+  int x_15 = 0;
+  int x_16 = 0;
+  Array param = {};
+  int x_19 = 0;
+  int x_20_phi = 0;
+  tint_array_wrapper const tint_symbol_3 = {.arr={0, 0}};
+  Array const tint_symbol_4 = {.values=tint_symbol_3};
+  param = tint_symbol_4;
+  x_50 = false;
+  while (true) {
+    int x_19_phi = 0;
+    bool x_63_phi = false;
+    while (true) {
+      int const x_17 = x_8.zero;
+      int const x_18 = param.values.arr[x_17];
+      if ((x_18 == 1)) {
+        x_50 = true;
+        x_15 = 1;
+        x_19_phi = 1;
+        x_63_phi = true;
+        break;
+      }
+      x_19_phi = 0;
+      x_63_phi = false;
+      break;
+    }
+    x_19 = x_19_phi;
+    bool const x_63 = x_63_phi;
+    x_20_phi = x_19;
+    if (x_63) {
+      break;
+    }
+    x_50 = true;
+    x_15 = 1;
+    x_20_phi = 1;
+    break;
+  }
+  int const x_20 = x_20_phi;
+  x_16 = x_20;
+  if ((x_20 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_8, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int func_struct_Array_i1_2_1_(constant buf0& x_8, thread Array* const a) {
+  bool x_70 = false;
+  int x_12 = 0;
+  int x_13 = 0;
+  bool x_72_phi = false;
+  int x_14_phi = 0;
+  x_72_phi = false;
+  while (true) {
+    bool x_77 = false;
+    bool x_77_phi = false;
+    int x_13_phi = 0;
+    bool x_87_phi = false;
+    bool const x_72 = x_72_phi;
+    x_77_phi = x_72;
+    while (true) {
+      x_77 = x_77_phi;
+      int const x_10 = x_8.zero;
+      int const x_11 = (*(a)).values.arr[x_10];
+      if ((x_11 == 1)) {
+        x_70 = true;
+        x_12 = 1;
+        x_13_phi = 1;
+        x_87_phi = true;
+        break;
+      }
+      x_13_phi = 0;
+      x_87_phi = x_77;
+      break;
+      {
+        x_77_phi = false;
+      }
+    }
+    x_13 = x_13_phi;
+    bool const x_87 = x_87_phi;
+    x_14_phi = x_13;
+    if (x_87) {
+      break;
+    }
+    x_70 = true;
+    x_12 = 1;
+    x_14_phi = 1;
+    break;
+    {
+      x_72_phi = false;
+    }
+  }
+  int const x_14 = x_14_phi;
+  return x_14;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b34c579
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,249 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_50 "x_50"
+               OpName %x_15 "x_15"
+               OpName %x_16 "x_16"
+               OpName %Array "Array"
+               OpMemberName %Array 0 "values"
+               OpName %param "param"
+               OpName %x_19 "x_19"
+               OpName %x_20_phi "x_20_phi"
+               OpName %x_19_phi "x_19_phi"
+               OpName %x_63_phi "x_63_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_struct_Array_i1_2_1_ "func_struct_Array_i1_2_1_"
+               OpName %a "a"
+               OpName %x_70 "x_70"
+               OpName %x_12 "x_12"
+               OpName %x_13 "x_13"
+               OpName %x_72_phi "x_72_phi"
+               OpName %x_14_phi "x_14_phi"
+               OpName %x_77 "x_77"
+               OpName %x_77_phi "x_77_phi"
+               OpName %x_13_phi "x_13_phi"
+               OpName %x_87_phi "x_87_phi"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %Array 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %20 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+      %Array = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_Array = OpTypePointer Function %Array
+         %31 = OpConstantNull %Array
+      %int_0 = OpConstant %int 0
+         %35 = OpConstantComposite %_arr_int_uint_2 %int_0 %int_0
+         %36 = OpConstantComposite %Array %35
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %70 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %71 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %72 = OpTypeFunction %void %main_out
+         %84 = OpTypeFunction %int %_ptr_Function_Array
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_50 = OpVariable %_ptr_Function_bool Function %20
+       %x_15 = OpVariable %_ptr_Function_int Function %23
+       %x_16 = OpVariable %_ptr_Function_int Function %23
+      %param = OpVariable %_ptr_Function_Array Function %31
+       %x_19 = OpVariable %_ptr_Function_int Function %23
+   %x_20_phi = OpVariable %_ptr_Function_int Function %23
+   %x_19_phi = OpVariable %_ptr_Function_int Function %23
+   %x_63_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_50 %false
+               OpStore %param %36
+               OpStore %x_50 %false
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Function_int %param %uint_0 %50
+         %52 = OpLoad %int %51
+         %54 = OpIEqual %bool %52 %int_1
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpStore %x_50 %true
+               OpStore %x_15 %int_1
+               OpStore %x_19_phi %int_1
+               OpStore %x_63_phi %true
+               OpBranch %44
+         %55 = OpLabel
+               OpStore %x_19_phi %int_0
+               OpStore %x_63_phi %false
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %43
+         %44 = OpLabel
+         %58 = OpLoad %int %x_19_phi
+               OpStore %x_19 %58
+         %59 = OpLoad %bool %x_63_phi
+         %60 = OpLoad %int %x_19
+               OpStore %x_20_phi %60
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %61
+         %62 = OpLabel
+               OpBranch %38
+         %61 = OpLabel
+               OpStore %x_50 %true
+               OpStore %x_15 %int_1
+               OpStore %x_20_phi %int_1
+               OpBranch %38
+         %39 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+         %63 = OpLoad %int %x_20_phi
+               OpStore %x_16 %63
+         %64 = OpIEqual %bool %63 %int_1
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+               OpStore %x_GLF_color %70
+               OpBranch %65
+         %67 = OpLabel
+               OpStore %x_GLF_color %71
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %72
+%tint_symbol = OpFunctionParameter %main_out
+         %76 = OpLabel
+         %77 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %77
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %79 = OpLabel
+         %80 = OpFunctionCall %void %main_1
+         %82 = OpLoad %v4float %x_GLF_color
+         %83 = OpCompositeConstruct %main_out %82
+         %81 = OpFunctionCall %void %tint_symbol_2 %83
+               OpReturn
+               OpFunctionEnd
+%func_struct_Array_i1_2_1_ = OpFunction %int None %84
+          %a = OpFunctionParameter %_ptr_Function_Array
+         %87 = OpLabel
+       %x_70 = OpVariable %_ptr_Function_bool Function %20
+       %x_12 = OpVariable %_ptr_Function_int Function %23
+       %x_13 = OpVariable %_ptr_Function_int Function %23
+   %x_72_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_14_phi = OpVariable %_ptr_Function_int Function %23
+       %x_77 = OpVariable %_ptr_Function_bool Function %20
+   %x_77_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_13_phi = OpVariable %_ptr_Function_int Function %23
+   %x_87_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_70 %false
+               OpStore %x_72_phi %false
+               OpBranch %93
+         %93 = OpLabel
+               OpLoopMerge %94 %95 None
+               OpBranch %96
+         %96 = OpLabel
+        %101 = OpLoad %bool %x_72_phi
+               OpStore %x_77_phi %101
+               OpBranch %102
+        %102 = OpLabel
+               OpLoopMerge %103 %104 None
+               OpBranch %105
+        %105 = OpLabel
+        %106 = OpLoad %bool %x_77_phi
+               OpStore %x_77 %106
+        %107 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+        %108 = OpLoad %int %107
+        %110 = OpAccessChain %_ptr_Function_int %a %uint_0 %108
+        %111 = OpLoad %int %110
+        %112 = OpIEqual %bool %111 %int_1
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+               OpStore %x_70 %true
+               OpStore %x_12 %int_1
+               OpStore %x_13_phi %int_1
+               OpStore %x_87_phi %true
+               OpBranch %103
+        %113 = OpLabel
+               OpStore %x_13_phi %int_0
+        %115 = OpLoad %bool %x_77
+               OpStore %x_87_phi %115
+               OpBranch %103
+        %104 = OpLabel
+               OpStore %x_77_phi %false
+               OpBranch %102
+        %103 = OpLabel
+        %116 = OpLoad %int %x_13_phi
+               OpStore %x_13 %116
+        %117 = OpLoad %bool %x_87_phi
+        %118 = OpLoad %int %x_13
+               OpStore %x_14_phi %118
+               OpSelectionMerge %119 None
+               OpBranchConditional %117 %120 %119
+        %120 = OpLabel
+               OpBranch %94
+        %119 = OpLabel
+               OpStore %x_70 %true
+               OpStore %x_12 %int_1
+               OpStore %x_14_phi %int_1
+               OpBranch %94
+         %95 = OpLabel
+               OpStore %x_72_phi %false
+               OpBranch %93
+         %94 = OpLabel
+        %121 = OpLoad %int %x_14_phi
+               OpReturnValue %121
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c3fe68b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,122 @@
+struct Array {
+  values : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_50 : bool = false;
+  var x_15 : i32;
+  var x_16 : i32;
+  var param : Array;
+  var x_19 : i32;
+  var x_20_phi : i32;
+  param = Array(array<i32, 2>(0, 0));
+  x_50 = false;
+  loop {
+    var x_19_phi : i32;
+    var x_63_phi : bool;
+    loop {
+      let x_17 : i32 = x_8.zero;
+      let x_18 : i32 = param.values[x_17];
+      if ((x_18 == 1)) {
+        x_50 = true;
+        x_15 = 1;
+        x_19_phi = 1;
+        x_63_phi = true;
+        break;
+      }
+      x_19_phi = 0;
+      x_63_phi = false;
+      break;
+    }
+    x_19 = x_19_phi;
+    let x_63 : bool = x_63_phi;
+    x_20_phi = x_19;
+    if (x_63) {
+      break;
+    }
+    x_50 = true;
+    x_15 = 1;
+    x_20_phi = 1;
+    break;
+  }
+  let x_20 : i32 = x_20_phi;
+  x_16 = x_20;
+  if ((x_20 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_struct_Array_i1_2_1_(a : ptr<function, Array>) -> i32 {
+  var x_70 : bool = false;
+  var x_12 : i32;
+  var x_13 : i32;
+  var x_72_phi : bool;
+  var x_14_phi : i32;
+  x_72_phi = false;
+  loop {
+    var x_77 : bool;
+    var x_77_phi : bool;
+    var x_13_phi : i32;
+    var x_87_phi : bool;
+    let x_72 : bool = x_72_phi;
+    x_77_phi = x_72;
+    loop {
+      x_77 = x_77_phi;
+      let x_10 : i32 = x_8.zero;
+      let x_11 : i32 = (*(a)).values[x_10];
+      if ((x_11 == 1)) {
+        x_70 = true;
+        x_12 = 1;
+        x_13_phi = 1;
+        x_87_phi = true;
+        break;
+      }
+      x_13_phi = 0;
+      x_87_phi = x_77;
+      break;
+
+      continuing {
+        x_77_phi = false;
+      }
+    }
+    x_13 = x_13_phi;
+    let x_87 : bool = x_87_phi;
+    x_14_phi = x_13;
+    if (x_87) {
+      break;
+    }
+    x_70 = true;
+    x_12 = 1;
+    x_14_phi = 1;
+    break;
+
+    continuing {
+      x_72_phi = false;
+    }
+  }
+  let x_14 : i32 = x_14_phi;
+  return x_14;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm
new file mode 100644
index 0000000..ba041ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm
@@ -0,0 +1,77 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %Array "Array"
+               OpMemberName %Array 0 "values"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %one "one"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %Array 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+      %Array = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_Array = OpTypePointer Function %Array
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %32 = OpLabel
+          %a = OpVariable %_ptr_Function_Array Function
+          %b = OpVariable %_ptr_Function_Array Function
+        %one = OpVariable %_ptr_Function_float Function
+         %33 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %10 = OpLoad %int %33
+         %34 = OpAccessChain %_ptr_Function_int %a %int_0 %10
+               OpStore %34 %int_1
+         %35 = OpLoad %Array %a
+               OpStore %b %35
+               OpStore %one %float_0
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %11 = OpLoad %int %36
+         %37 = OpAccessChain %_ptr_Function_int %b %int_0 %11
+         %12 = OpLoad %int %37
+         %38 = OpIEqual %bool %12 %int_1
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %39
+         %40 = OpLabel
+               OpStore %one %float_1
+               OpBranch %39
+         %39 = OpLabel
+         %41 = OpLoad %float %one
+         %42 = OpCompositeConstruct %v4float %41 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %42
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3be4868
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,39 @@
+struct Array {
+  int values[2];
+};
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  Array a = (Array)0;
+  Array b = (Array)0;
+  float one = 0.0f;
+  const int x_10 = asint(x_7[0].x);
+  a.values[x_10] = 1;
+  b = a;
+  one = 0.0f;
+  const int x_11 = asint(x_7[0].x);
+  const int x_12 = b.values[x_11];
+  if ((x_12 == 1)) {
+    one = 1.0f;
+  }
+  x_GLF_color = float4(one, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..92b1932
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct Array {
+  tint_array_wrapper values;
+};
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  Array a = {};
+  Array b = {};
+  float one = 0.0f;
+  int const x_10 = x_7.zero;
+  a.values.arr[x_10] = 1;
+  Array const x_35 = a;
+  b = x_35;
+  one = 0.0f;
+  int const x_11 = x_7.zero;
+  int const x_12 = b.values.arr[x_11];
+  if ((x_12 == 1)) {
+    one = 1.0f;
+  }
+  float const x_41 = one;
+  *(tint_symbol_4) = float4(x_41, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..71364d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 59
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %Array "Array"
+               OpMemberName %Array 0 "values"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %one "one"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %Array 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+      %Array = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_Array = OpTypePointer Function %Array
+         %22 = OpConstantNull %Array
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %47 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_Array Function %22
+          %b = OpVariable %_ptr_Function_Array Function %22
+        %one = OpVariable %_ptr_Function_float Function %26
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_Function_int %a %uint_0 %30
+               OpStore %32 %int_1
+         %34 = OpLoad %Array %a
+               OpStore %b %34
+               OpStore %one %float_0
+         %36 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Function_int %b %uint_0 %37
+         %39 = OpLoad %int %38
+         %40 = OpIEqual %bool %39 %int_1
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %42
+         %43 = OpLabel
+               OpStore %one %float_1
+               OpBranch %42
+         %42 = OpLabel
+         %45 = OpLoad %float %one
+         %46 = OpCompositeConstruct %v4float %45 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %46
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %47
+%tint_symbol = OpFunctionParameter %main_out
+         %51 = OpLabel
+         %52 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %52
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %main_1
+         %57 = OpLoad %v4float %x_GLF_color
+         %58 = OpCompositeConstruct %main_out %57
+         %56 = OpFunctionCall %void %tint_symbol_2 %58
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6e13d32
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+struct Array {
+  values : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : Array;
+  var b : Array;
+  var one : f32;
+  let x_10 : i32 = x_7.zero;
+  a.values[x_10] = 1;
+  let x_35 : Array = a;
+  b = x_35;
+  one = 0.0;
+  let x_11 : i32 = x_7.zero;
+  let x_12 : i32 = b.values[x_11];
+  if ((x_12 == 1)) {
+    one = 1.0;
+  }
+  let x_41 : f32 = one;
+  x_GLF_color = vec4<f32>(x_41, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
new file mode 100644
index 0000000..6e13d32
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
@@ -0,0 +1,42 @@
+struct Array {
+  values : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : Array;
+  var b : Array;
+  var one : f32;
+  let x_10 : i32 = x_7.zero;
+  a.values[x_10] = 1;
+  let x_35 : Array = a;
+  b = x_35;
+  one = 0.0;
+  let x_11 : i32 = x_7.zero;
+  let x_12 : i32 = b.values[x_11];
+  if ((x_12 == 1)) {
+    one = 1.0;
+  }
+  let x_41 : f32 = one;
+  x_GLF_color = vec4<f32>(x_41, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3be4868
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,39 @@
+struct Array {
+  int values[2];
+};
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  Array a = (Array)0;
+  Array b = (Array)0;
+  float one = 0.0f;
+  const int x_10 = asint(x_7[0].x);
+  a.values[x_10] = 1;
+  b = a;
+  one = 0.0f;
+  const int x_11 = asint(x_7[0].x);
+  const int x_12 = b.values[x_11];
+  if ((x_12 == 1)) {
+    one = 1.0f;
+  }
+  x_GLF_color = float4(one, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..92b1932
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct Array {
+  tint_array_wrapper values;
+};
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  Array a = {};
+  Array b = {};
+  float one = 0.0f;
+  int const x_10 = x_7.zero;
+  a.values.arr[x_10] = 1;
+  Array const x_35 = a;
+  b = x_35;
+  one = 0.0f;
+  int const x_11 = x_7.zero;
+  int const x_12 = b.values.arr[x_11];
+  if ((x_12 == 1)) {
+    one = 1.0f;
+  }
+  float const x_41 = one;
+  *(tint_symbol_4) = float4(x_41, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..71364d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 59
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %Array "Array"
+               OpMemberName %Array 0 "values"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %one "one"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %Array 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+      %Array = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_Array = OpTypePointer Function %Array
+         %22 = OpConstantNull %Array
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %47 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_Array Function %22
+          %b = OpVariable %_ptr_Function_Array Function %22
+        %one = OpVariable %_ptr_Function_float Function %26
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_Function_int %a %uint_0 %30
+               OpStore %32 %int_1
+         %34 = OpLoad %Array %a
+               OpStore %b %34
+               OpStore %one %float_0
+         %36 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Function_int %b %uint_0 %37
+         %39 = OpLoad %int %38
+         %40 = OpIEqual %bool %39 %int_1
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %42
+         %43 = OpLabel
+               OpStore %one %float_1
+               OpBranch %42
+         %42 = OpLabel
+         %45 = OpLoad %float %one
+         %46 = OpCompositeConstruct %v4float %45 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %46
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %47
+%tint_symbol = OpFunctionParameter %main_out
+         %51 = OpLabel
+         %52 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %52
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %main_1
+         %57 = OpLoad %v4float %x_GLF_color
+         %58 = OpCompositeConstruct %main_out %57
+         %56 = OpFunctionCall %void %tint_symbol_2 %58
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6e13d32
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+struct Array {
+  values : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : Array;
+  var b : Array;
+  var one : f32;
+  let x_10 : i32 = x_7.zero;
+  a.values[x_10] = 1;
+  let x_35 : Array = a;
+  b = x_35;
+  one = 0.0;
+  let x_11 : i32 = x_7.zero;
+  let x_12 : i32 = b.values[x_11];
+  if ((x_12 == 1)) {
+    one = 1.0;
+  }
+  let x_41 : f32 = one;
+  x_GLF_color = vec4<f32>(x_41, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm
new file mode 100644
index 0000000..68ef2be
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm
@@ -0,0 +1,181 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %Array "Array"
+               OpMemberName %Array 0 "values"
+               OpName %func_struct_Array_i1_2_1_ "func(struct-Array-i1[2]1;"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %Array 0 RelaxedPrecision
+               OpDecorate %func_struct_Array_i1_2_1_ RelaxedPrecision
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+       %void = OpTypeVoid
+         %25 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+      %Array = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_Array = OpTypePointer Function %Array
+         %31 = OpTypeFunction %int %_ptr_Function_Array
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+     %int_42 = OpConstant %int 42
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %48 = OpUndef %int
+         %49 = OpUndef %bool
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+       %main = OpFunction %void None %25
+         %51 = OpLabel
+         %52 = OpVariable %_ptr_Function_bool Function %false
+         %17 = OpVariable %_ptr_Function_int Function
+         %18 = OpVariable %_ptr_Function_int Function
+         %16 = OpVariable %_ptr_Function__arr_int_uint_2 Function
+      %param = OpVariable %_ptr_Function_Array Function
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %12 = OpLoad %int %53
+         %22 = OpLoad %_arr_int_uint_2 %16
+         %23 = OpCompositeInsert %_arr_int_uint_2 %12 %22 0
+               OpStore %16 %23
+         %54 = OpLoad %_arr_int_uint_2 %16
+         %55 = OpCompositeConstruct %Array %54
+               OpStore %param %55
+               OpStore %52 %false
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpAccessChain %_ptr_Function_int %param %int_0 %12
+         %19 = OpLoad %int %63
+         %64 = OpIEqual %bool %19 %int_0
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpStore %52 %true
+               OpStore %17 %int_42
+               OpBranch %60
+         %65 = OpLabel
+               OpBranch %60
+         %61 = OpLabel
+               OpBranch %59
+         %60 = OpLabel
+         %20 = OpPhi %int %int_42 %66 %48 %65
+         %67 = OpPhi %bool %true %66 %false %65
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %57 %68
+         %68 = OpLabel
+               OpStore %52 %true
+               OpStore %17 %int_42
+               OpBranch %57
+         %58 = OpLabel
+               OpBranch %56
+         %57 = OpLabel
+         %21 = OpPhi %int %20 %60 %int_42 %68
+               OpStore %18 %21
+         %69 = OpIEqual %bool %21 %int_42
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %72 = OpLabel
+               OpStore %_GLF_color %45
+               OpBranch %70
+         %71 = OpLabel
+               OpStore %_GLF_color %44
+               OpBranch %70
+         %70 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_struct_Array_i1_2_1_ = OpFunction %int None %31
+          %a = OpFunctionParameter %_ptr_Function_Array
+         %73 = OpLabel
+         %74 = OpVariable %_ptr_Function_bool Function %false
+         %13 = OpVariable %_ptr_Function_int Function
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpPhi %bool %false %73 %49 %77
+               OpLoopMerge %78 %77 None
+               OpBranch %79
+         %79 = OpLabel
+               OpBranch %80
+         %80 = OpLabel
+         %81 = OpPhi %bool %76 %79 %49 %82
+               OpLoopMerge %83 %82 None
+               OpBranch %84
+         %84 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %10 = OpLoad %int %86
+         %87 = OpAccessChain %_ptr_Function_int %a %int_0 %10
+         %11 = OpLoad %int %87
+         %88 = OpIEqual %bool %11 %int_0
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+               OpStore %74 %true
+               OpStore %13 %int_42
+               OpBranch %83
+         %89 = OpLabel
+               OpBranch %83
+         %82 = OpLabel
+               OpBranch %80
+         %83 = OpLabel
+         %14 = OpPhi %int %int_42 %90 %48 %89
+         %91 = OpPhi %bool %true %90 %81 %89
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %78 %92
+         %92 = OpLabel
+               OpStore %74 %true
+               OpStore %13 %int_42
+               OpBranch %78
+         %77 = OpLabel
+               OpBranch %75
+         %78 = OpLabel
+         %15 = OpPhi %int %14 %83 %int_42 %92
+               OpReturnValue %15
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e7e6754
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,122 @@
+struct Array {
+  int values[2];
+};
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_52 = false;
+  int x_17 = 0;
+  int x_18 = 0;
+  int x_16[2] = (int[2])0;
+  Array param = (Array)0;
+  int x_20 = 0;
+  int x_21_phi = 0;
+  const int x_12 = asint(x_8[0].x);
+  int x_23_1[2] = x_16;
+  x_23_1[0u] = x_12;
+  x_16 = x_23_1;
+  const Array tint_symbol_3 = {x_16};
+  param = tint_symbol_3;
+  x_52 = false;
+  while (true) {
+    int x_20_phi = 0;
+    bool x_67_phi = false;
+    while (true) {
+      const int x_19 = param.values[x_12];
+      if ((x_19 == 0)) {
+        x_52 = true;
+        x_17 = 42;
+        x_20_phi = 42;
+        x_67_phi = true;
+        break;
+      }
+      x_20_phi = 0;
+      x_67_phi = false;
+      break;
+    }
+    x_20 = x_20_phi;
+    const bool x_67 = x_67_phi;
+    x_21_phi = x_20;
+    if (x_67) {
+      break;
+    }
+    x_52 = true;
+    x_17 = 42;
+    x_21_phi = 42;
+    break;
+  }
+  const int x_21 = x_21_phi;
+  x_18 = x_21;
+  if ((x_21 == 42)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+int func_struct_Array_i1_2_1_(inout Array a) {
+  bool x_74 = false;
+  int x_13 = 0;
+  int x_14 = 0;
+  bool x_76_phi = false;
+  int x_15_phi = 0;
+  x_76_phi = false;
+  while (true) {
+    bool x_81 = false;
+    bool x_81_phi = false;
+    int x_14_phi = 0;
+    bool x_91_phi = false;
+    x_81_phi = x_76_phi;
+    while (true) {
+      x_81 = x_81_phi;
+      const int x_10 = asint(x_8[0].x);
+      const int x_11 = a.values[x_10];
+      if ((x_11 == 0)) {
+        x_74 = true;
+        x_13 = 42;
+        x_14_phi = 42;
+        x_91_phi = true;
+        break;
+      }
+      x_14_phi = 0;
+      x_91_phi = x_81;
+      break;
+      {
+        x_81_phi = false;
+      }
+    }
+    x_14 = x_14_phi;
+    const bool x_91 = x_91_phi;
+    x_15_phi = x_14;
+    if (x_91) {
+      break;
+    }
+    x_74 = true;
+    x_13 = 42;
+    x_15_phi = 42;
+    break;
+    {
+      x_76_phi = false;
+    }
+  }
+  return x_15_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d77e254
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.msl
@@ -0,0 +1,132 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct Array {
+  tint_array_wrapper values;
+};
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5) {
+  bool x_52 = false;
+  int x_17 = 0;
+  int x_18 = 0;
+  tint_array_wrapper x_16 = {};
+  Array param = {};
+  int x_20 = 0;
+  int x_21_phi = 0;
+  int const x_12 = x_8.zero;
+  tint_array_wrapper const x_22 = x_16;
+  tint_array_wrapper x_23_1 = x_22;
+  x_23_1.arr[0u] = x_12;
+  tint_array_wrapper const x_23 = x_23_1;
+  x_16 = x_23;
+  tint_array_wrapper const x_54 = x_16;
+  Array const tint_symbol_3 = {.values=x_54};
+  param = tint_symbol_3;
+  x_52 = false;
+  while (true) {
+    int x_20_phi = 0;
+    bool x_67_phi = false;
+    while (true) {
+      int const x_19 = param.values.arr[x_12];
+      if ((x_19 == 0)) {
+        x_52 = true;
+        x_17 = 42;
+        x_20_phi = 42;
+        x_67_phi = true;
+        break;
+      }
+      x_20_phi = 0;
+      x_67_phi = false;
+      break;
+    }
+    x_20 = x_20_phi;
+    bool const x_67 = x_67_phi;
+    x_21_phi = x_20;
+    if (x_67) {
+      break;
+    }
+    x_52 = true;
+    x_17 = 42;
+    x_21_phi = 42;
+    break;
+  }
+  int const x_21 = x_21_phi;
+  x_18 = x_21;
+  if ((x_21 == 42)) {
+    *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_8, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+int func_struct_Array_i1_2_1_(constant buf0& x_8, thread Array* const a) {
+  bool x_74 = false;
+  int x_13 = 0;
+  int x_14 = 0;
+  bool x_76_phi = false;
+  int x_15_phi = 0;
+  x_76_phi = false;
+  while (true) {
+    bool x_81 = false;
+    bool x_81_phi = false;
+    int x_14_phi = 0;
+    bool x_91_phi = false;
+    bool const x_76 = x_76_phi;
+    x_81_phi = x_76;
+    while (true) {
+      x_81 = x_81_phi;
+      int const x_10 = x_8.zero;
+      int const x_11 = (*(a)).values.arr[x_10];
+      if ((x_11 == 0)) {
+        x_74 = true;
+        x_13 = 42;
+        x_14_phi = 42;
+        x_91_phi = true;
+        break;
+      }
+      x_14_phi = 0;
+      x_91_phi = x_81;
+      break;
+      {
+        x_81_phi = false;
+      }
+    }
+    x_14 = x_14_phi;
+    bool const x_91 = x_91_phi;
+    x_15_phi = x_14;
+    if (x_91) {
+      break;
+    }
+    x_74 = true;
+    x_13 = 42;
+    x_15_phi = 42;
+    break;
+    {
+      x_76_phi = false;
+    }
+  }
+  int const x_15 = x_15_phi;
+  return x_15;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..83f6e26
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,261 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 129
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_52 "x_52"
+               OpName %x_17 "x_17"
+               OpName %x_18 "x_18"
+               OpName %x_16 "x_16"
+               OpName %Array "Array"
+               OpMemberName %Array 0 "values"
+               OpName %param "param"
+               OpName %x_20 "x_20"
+               OpName %x_21_phi "x_21_phi"
+               OpName %x_23_1 "x_23_1"
+               OpName %x_20_phi "x_20_phi"
+               OpName %x_67_phi "x_67_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_struct_Array_i1_2_1_ "func_struct_Array_i1_2_1_"
+               OpName %a "a"
+               OpName %x_74 "x_74"
+               OpName %x_13 "x_13"
+               OpName %x_14 "x_14"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_15_phi "x_15_phi"
+               OpName %x_81 "x_81"
+               OpName %x_81_phi "x_81_phi"
+               OpName %x_14_phi "x_14_phi"
+               OpName %x_91_phi "x_91_phi"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %Array 0 Offset 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %20 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %30 = OpConstantNull %_arr_int_uint_2
+      %Array = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_Array = OpTypePointer Function %Array
+         %34 = OpConstantNull %Array
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %true = OpConstantTrue %bool
+     %int_42 = OpConstant %int 42
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %77 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %78 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %79 = OpTypeFunction %void %main_out
+         %91 = OpTypeFunction %int %_ptr_Function_Array
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_52 = OpVariable %_ptr_Function_bool Function %20
+       %x_17 = OpVariable %_ptr_Function_int Function %23
+       %x_18 = OpVariable %_ptr_Function_int Function %23
+       %x_16 = OpVariable %_ptr_Function__arr_int_uint_2 Function %30
+      %param = OpVariable %_ptr_Function_Array Function %34
+       %x_20 = OpVariable %_ptr_Function_int Function %23
+   %x_21_phi = OpVariable %_ptr_Function_int Function %23
+     %x_23_1 = OpVariable %_ptr_Function__arr_int_uint_2 Function %30
+   %x_20_phi = OpVariable %_ptr_Function_int Function %23
+   %x_67_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_52 %false
+         %39 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %40 = OpLoad %int %39
+         %41 = OpLoad %_arr_int_uint_2 %x_16
+               OpStore %x_23_1 %41
+         %43 = OpAccessChain %_ptr_Function_int %x_23_1 %uint_0
+               OpStore %43 %40
+         %44 = OpLoad %_arr_int_uint_2 %x_23_1
+               OpStore %x_16 %44
+         %45 = OpLoad %_arr_int_uint_2 %x_16
+         %46 = OpCompositeConstruct %Array %45
+               OpStore %param %46
+               OpStore %x_52 %false
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Function_int %param %uint_0 %40
+         %58 = OpLoad %int %57
+         %60 = OpIEqual %bool %58 %int_0
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpStore %x_52 %true
+               OpStore %x_17 %int_42
+               OpStore %x_20_phi %int_42
+               OpStore %x_67_phi %true
+               OpBranch %54
+         %61 = OpLabel
+               OpStore %x_20_phi %int_0
+               OpStore %x_67_phi %false
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+         %65 = OpLoad %int %x_20_phi
+               OpStore %x_20 %65
+         %66 = OpLoad %bool %x_67_phi
+         %67 = OpLoad %int %x_20
+               OpStore %x_21_phi %67
+               OpSelectionMerge %68 None
+               OpBranchConditional %66 %69 %68
+         %69 = OpLabel
+               OpBranch %48
+         %68 = OpLabel
+               OpStore %x_52 %true
+               OpStore %x_17 %int_42
+               OpStore %x_21_phi %int_42
+               OpBranch %48
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+         %70 = OpLoad %int %x_21_phi
+               OpStore %x_18 %70
+         %71 = OpIEqual %bool %70 %int_42
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %74
+         %73 = OpLabel
+               OpStore %x_GLF_color %77
+               OpBranch %72
+         %74 = OpLabel
+               OpStore %x_GLF_color %78
+               OpBranch %72
+         %72 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %79
+%tint_symbol = OpFunctionParameter %main_out
+         %83 = OpLabel
+         %84 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %84
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %86 = OpLabel
+         %87 = OpFunctionCall %void %main_1
+         %89 = OpLoad %v4float %x_GLF_color
+         %90 = OpCompositeConstruct %main_out %89
+         %88 = OpFunctionCall %void %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
+%func_struct_Array_i1_2_1_ = OpFunction %int None %91
+          %a = OpFunctionParameter %_ptr_Function_Array
+         %94 = OpLabel
+       %x_74 = OpVariable %_ptr_Function_bool Function %20
+       %x_13 = OpVariable %_ptr_Function_int Function %23
+       %x_14 = OpVariable %_ptr_Function_int Function %23
+   %x_76_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_15_phi = OpVariable %_ptr_Function_int Function %23
+       %x_81 = OpVariable %_ptr_Function_bool Function %20
+   %x_81_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_14_phi = OpVariable %_ptr_Function_int Function %23
+   %x_91_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_74 %false
+               OpStore %x_76_phi %false
+               OpBranch %100
+        %100 = OpLabel
+               OpLoopMerge %101 %102 None
+               OpBranch %103
+        %103 = OpLabel
+        %108 = OpLoad %bool %x_76_phi
+               OpStore %x_81_phi %108
+               OpBranch %109
+        %109 = OpLabel
+               OpLoopMerge %110 %111 None
+               OpBranch %112
+        %112 = OpLabel
+        %113 = OpLoad %bool %x_81_phi
+               OpStore %x_81 %113
+        %114 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+        %115 = OpLoad %int %114
+        %117 = OpAccessChain %_ptr_Function_int %a %uint_0 %115
+        %118 = OpLoad %int %117
+        %119 = OpIEqual %bool %118 %int_0
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %120
+        %121 = OpLabel
+               OpStore %x_74 %true
+               OpStore %x_13 %int_42
+               OpStore %x_14_phi %int_42
+               OpStore %x_91_phi %true
+               OpBranch %110
+        %120 = OpLabel
+               OpStore %x_14_phi %int_0
+        %122 = OpLoad %bool %x_81
+               OpStore %x_91_phi %122
+               OpBranch %110
+        %111 = OpLabel
+               OpStore %x_81_phi %false
+               OpBranch %109
+        %110 = OpLabel
+        %123 = OpLoad %int %x_14_phi
+               OpStore %x_14 %123
+        %124 = OpLoad %bool %x_91_phi
+        %125 = OpLoad %int %x_14
+               OpStore %x_15_phi %125
+               OpSelectionMerge %126 None
+               OpBranchConditional %124 %127 %126
+        %127 = OpLabel
+               OpBranch %101
+        %126 = OpLabel
+               OpStore %x_74 %true
+               OpStore %x_13 %int_42
+               OpStore %x_15_phi %int_42
+               OpBranch %101
+        %102 = OpLabel
+               OpStore %x_76_phi %false
+               OpBranch %100
+        %101 = OpLabel
+        %128 = OpLoad %int %x_15_phi
+               OpReturnValue %128
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..29debc5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,129 @@
+struct Array {
+  values : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_52 : bool = false;
+  var x_17 : i32;
+  var x_18 : i32;
+  var x_16 : array<i32, 2>;
+  var param : Array;
+  var x_20 : i32;
+  var x_21_phi : i32;
+  let x_12 : i32 = x_8.zero;
+  let x_22 : array<i32, 2> = x_16;
+  var x_23_1 : array<i32, 2> = x_22;
+  x_23_1[0u] = x_12;
+  let x_23 : array<i32, 2> = x_23_1;
+  x_16 = x_23;
+  let x_54 : array<i32, 2> = x_16;
+  param = Array(x_54);
+  x_52 = false;
+  loop {
+    var x_20_phi : i32;
+    var x_67_phi : bool;
+    loop {
+      let x_19 : i32 = param.values[x_12];
+      if ((x_19 == 0)) {
+        x_52 = true;
+        x_17 = 42;
+        x_20_phi = 42;
+        x_67_phi = true;
+        break;
+      }
+      x_20_phi = 0;
+      x_67_phi = false;
+      break;
+    }
+    x_20 = x_20_phi;
+    let x_67 : bool = x_67_phi;
+    x_21_phi = x_20;
+    if (x_67) {
+      break;
+    }
+    x_52 = true;
+    x_17 = 42;
+    x_21_phi = 42;
+    break;
+  }
+  let x_21 : i32 = x_21_phi;
+  x_18 = x_21;
+  if ((x_21 == 42)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_struct_Array_i1_2_1_(a : ptr<function, Array>) -> i32 {
+  var x_74 : bool = false;
+  var x_13 : i32;
+  var x_14 : i32;
+  var x_76_phi : bool;
+  var x_15_phi : i32;
+  x_76_phi = false;
+  loop {
+    var x_81 : bool;
+    var x_81_phi : bool;
+    var x_14_phi : i32;
+    var x_91_phi : bool;
+    let x_76 : bool = x_76_phi;
+    x_81_phi = x_76;
+    loop {
+      x_81 = x_81_phi;
+      let x_10 : i32 = x_8.zero;
+      let x_11 : i32 = (*(a)).values[x_10];
+      if ((x_11 == 0)) {
+        x_74 = true;
+        x_13 = 42;
+        x_14_phi = 42;
+        x_91_phi = true;
+        break;
+      }
+      x_14_phi = 0;
+      x_91_phi = x_81;
+      break;
+
+      continuing {
+        x_81_phi = false;
+      }
+    }
+    x_14 = x_14_phi;
+    let x_91 : bool = x_91_phi;
+    x_15_phi = x_14;
+    if (x_91) {
+      break;
+    }
+    x_74 = true;
+    x_13 = 42;
+    x_15_phi = 42;
+    break;
+
+    continuing {
+      x_76_phi = false;
+    }
+  }
+  let x_15 : i32 = x_15_phi;
+  return x_15;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
new file mode 100644
index 0000000..29debc5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
@@ -0,0 +1,129 @@
+struct Array {
+  values : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_52 : bool = false;
+  var x_17 : i32;
+  var x_18 : i32;
+  var x_16 : array<i32, 2>;
+  var param : Array;
+  var x_20 : i32;
+  var x_21_phi : i32;
+  let x_12 : i32 = x_8.zero;
+  let x_22 : array<i32, 2> = x_16;
+  var x_23_1 : array<i32, 2> = x_22;
+  x_23_1[0u] = x_12;
+  let x_23 : array<i32, 2> = x_23_1;
+  x_16 = x_23;
+  let x_54 : array<i32, 2> = x_16;
+  param = Array(x_54);
+  x_52 = false;
+  loop {
+    var x_20_phi : i32;
+    var x_67_phi : bool;
+    loop {
+      let x_19 : i32 = param.values[x_12];
+      if ((x_19 == 0)) {
+        x_52 = true;
+        x_17 = 42;
+        x_20_phi = 42;
+        x_67_phi = true;
+        break;
+      }
+      x_20_phi = 0;
+      x_67_phi = false;
+      break;
+    }
+    x_20 = x_20_phi;
+    let x_67 : bool = x_67_phi;
+    x_21_phi = x_20;
+    if (x_67) {
+      break;
+    }
+    x_52 = true;
+    x_17 = 42;
+    x_21_phi = 42;
+    break;
+  }
+  let x_21 : i32 = x_21_phi;
+  x_18 = x_21;
+  if ((x_21 == 42)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_struct_Array_i1_2_1_(a : ptr<function, Array>) -> i32 {
+  var x_74 : bool = false;
+  var x_13 : i32;
+  var x_14 : i32;
+  var x_76_phi : bool;
+  var x_15_phi : i32;
+  x_76_phi = false;
+  loop {
+    var x_81 : bool;
+    var x_81_phi : bool;
+    var x_14_phi : i32;
+    var x_91_phi : bool;
+    let x_76 : bool = x_76_phi;
+    x_81_phi = x_76;
+    loop {
+      x_81 = x_81_phi;
+      let x_10 : i32 = x_8.zero;
+      let x_11 : i32 = (*(a)).values[x_10];
+      if ((x_11 == 0)) {
+        x_74 = true;
+        x_13 = 42;
+        x_14_phi = 42;
+        x_91_phi = true;
+        break;
+      }
+      x_14_phi = 0;
+      x_91_phi = x_81;
+      break;
+
+      continuing {
+        x_81_phi = false;
+      }
+    }
+    x_14 = x_14_phi;
+    let x_91 : bool = x_91_phi;
+    x_15_phi = x_14;
+    if (x_91) {
+      break;
+    }
+    x_74 = true;
+    x_13 = 42;
+    x_15_phi = 42;
+    break;
+
+    continuing {
+      x_76_phi = false;
+    }
+  }
+  let x_15 : i32 = x_15_phi;
+  return x_15;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e7e6754
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,122 @@
+struct Array {
+  int values[2];
+};
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_52 = false;
+  int x_17 = 0;
+  int x_18 = 0;
+  int x_16[2] = (int[2])0;
+  Array param = (Array)0;
+  int x_20 = 0;
+  int x_21_phi = 0;
+  const int x_12 = asint(x_8[0].x);
+  int x_23_1[2] = x_16;
+  x_23_1[0u] = x_12;
+  x_16 = x_23_1;
+  const Array tint_symbol_3 = {x_16};
+  param = tint_symbol_3;
+  x_52 = false;
+  while (true) {
+    int x_20_phi = 0;
+    bool x_67_phi = false;
+    while (true) {
+      const int x_19 = param.values[x_12];
+      if ((x_19 == 0)) {
+        x_52 = true;
+        x_17 = 42;
+        x_20_phi = 42;
+        x_67_phi = true;
+        break;
+      }
+      x_20_phi = 0;
+      x_67_phi = false;
+      break;
+    }
+    x_20 = x_20_phi;
+    const bool x_67 = x_67_phi;
+    x_21_phi = x_20;
+    if (x_67) {
+      break;
+    }
+    x_52 = true;
+    x_17 = 42;
+    x_21_phi = 42;
+    break;
+  }
+  const int x_21 = x_21_phi;
+  x_18 = x_21;
+  if ((x_21 == 42)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+int func_struct_Array_i1_2_1_(inout Array a) {
+  bool x_74 = false;
+  int x_13 = 0;
+  int x_14 = 0;
+  bool x_76_phi = false;
+  int x_15_phi = 0;
+  x_76_phi = false;
+  while (true) {
+    bool x_81 = false;
+    bool x_81_phi = false;
+    int x_14_phi = 0;
+    bool x_91_phi = false;
+    x_81_phi = x_76_phi;
+    while (true) {
+      x_81 = x_81_phi;
+      const int x_10 = asint(x_8[0].x);
+      const int x_11 = a.values[x_10];
+      if ((x_11 == 0)) {
+        x_74 = true;
+        x_13 = 42;
+        x_14_phi = 42;
+        x_91_phi = true;
+        break;
+      }
+      x_14_phi = 0;
+      x_91_phi = x_81;
+      break;
+      {
+        x_81_phi = false;
+      }
+    }
+    x_14 = x_14_phi;
+    const bool x_91 = x_91_phi;
+    x_15_phi = x_14;
+    if (x_91) {
+      break;
+    }
+    x_74 = true;
+    x_13 = 42;
+    x_15_phi = 42;
+    break;
+    {
+      x_76_phi = false;
+    }
+  }
+  return x_15_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d77e254
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.msl
@@ -0,0 +1,132 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct Array {
+  tint_array_wrapper values;
+};
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5) {
+  bool x_52 = false;
+  int x_17 = 0;
+  int x_18 = 0;
+  tint_array_wrapper x_16 = {};
+  Array param = {};
+  int x_20 = 0;
+  int x_21_phi = 0;
+  int const x_12 = x_8.zero;
+  tint_array_wrapper const x_22 = x_16;
+  tint_array_wrapper x_23_1 = x_22;
+  x_23_1.arr[0u] = x_12;
+  tint_array_wrapper const x_23 = x_23_1;
+  x_16 = x_23;
+  tint_array_wrapper const x_54 = x_16;
+  Array const tint_symbol_3 = {.values=x_54};
+  param = tint_symbol_3;
+  x_52 = false;
+  while (true) {
+    int x_20_phi = 0;
+    bool x_67_phi = false;
+    while (true) {
+      int const x_19 = param.values.arr[x_12];
+      if ((x_19 == 0)) {
+        x_52 = true;
+        x_17 = 42;
+        x_20_phi = 42;
+        x_67_phi = true;
+        break;
+      }
+      x_20_phi = 0;
+      x_67_phi = false;
+      break;
+    }
+    x_20 = x_20_phi;
+    bool const x_67 = x_67_phi;
+    x_21_phi = x_20;
+    if (x_67) {
+      break;
+    }
+    x_52 = true;
+    x_17 = 42;
+    x_21_phi = 42;
+    break;
+  }
+  int const x_21 = x_21_phi;
+  x_18 = x_21;
+  if ((x_21 == 42)) {
+    *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_8, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+int func_struct_Array_i1_2_1_(constant buf0& x_8, thread Array* const a) {
+  bool x_74 = false;
+  int x_13 = 0;
+  int x_14 = 0;
+  bool x_76_phi = false;
+  int x_15_phi = 0;
+  x_76_phi = false;
+  while (true) {
+    bool x_81 = false;
+    bool x_81_phi = false;
+    int x_14_phi = 0;
+    bool x_91_phi = false;
+    bool const x_76 = x_76_phi;
+    x_81_phi = x_76;
+    while (true) {
+      x_81 = x_81_phi;
+      int const x_10 = x_8.zero;
+      int const x_11 = (*(a)).values.arr[x_10];
+      if ((x_11 == 0)) {
+        x_74 = true;
+        x_13 = 42;
+        x_14_phi = 42;
+        x_91_phi = true;
+        break;
+      }
+      x_14_phi = 0;
+      x_91_phi = x_81;
+      break;
+      {
+        x_81_phi = false;
+      }
+    }
+    x_14 = x_14_phi;
+    bool const x_91 = x_91_phi;
+    x_15_phi = x_14;
+    if (x_91) {
+      break;
+    }
+    x_74 = true;
+    x_13 = 42;
+    x_15_phi = 42;
+    break;
+    {
+      x_76_phi = false;
+    }
+  }
+  int const x_15 = x_15_phi;
+  return x_15;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..83f6e26
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,261 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 129
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_52 "x_52"
+               OpName %x_17 "x_17"
+               OpName %x_18 "x_18"
+               OpName %x_16 "x_16"
+               OpName %Array "Array"
+               OpMemberName %Array 0 "values"
+               OpName %param "param"
+               OpName %x_20 "x_20"
+               OpName %x_21_phi "x_21_phi"
+               OpName %x_23_1 "x_23_1"
+               OpName %x_20_phi "x_20_phi"
+               OpName %x_67_phi "x_67_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_struct_Array_i1_2_1_ "func_struct_Array_i1_2_1_"
+               OpName %a "a"
+               OpName %x_74 "x_74"
+               OpName %x_13 "x_13"
+               OpName %x_14 "x_14"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_15_phi "x_15_phi"
+               OpName %x_81 "x_81"
+               OpName %x_81_phi "x_81_phi"
+               OpName %x_14_phi "x_14_phi"
+               OpName %x_91_phi "x_91_phi"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %Array 0 Offset 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %20 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %30 = OpConstantNull %_arr_int_uint_2
+      %Array = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_Array = OpTypePointer Function %Array
+         %34 = OpConstantNull %Array
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %true = OpConstantTrue %bool
+     %int_42 = OpConstant %int 42
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %77 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %78 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %79 = OpTypeFunction %void %main_out
+         %91 = OpTypeFunction %int %_ptr_Function_Array
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_52 = OpVariable %_ptr_Function_bool Function %20
+       %x_17 = OpVariable %_ptr_Function_int Function %23
+       %x_18 = OpVariable %_ptr_Function_int Function %23
+       %x_16 = OpVariable %_ptr_Function__arr_int_uint_2 Function %30
+      %param = OpVariable %_ptr_Function_Array Function %34
+       %x_20 = OpVariable %_ptr_Function_int Function %23
+   %x_21_phi = OpVariable %_ptr_Function_int Function %23
+     %x_23_1 = OpVariable %_ptr_Function__arr_int_uint_2 Function %30
+   %x_20_phi = OpVariable %_ptr_Function_int Function %23
+   %x_67_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_52 %false
+         %39 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %40 = OpLoad %int %39
+         %41 = OpLoad %_arr_int_uint_2 %x_16
+               OpStore %x_23_1 %41
+         %43 = OpAccessChain %_ptr_Function_int %x_23_1 %uint_0
+               OpStore %43 %40
+         %44 = OpLoad %_arr_int_uint_2 %x_23_1
+               OpStore %x_16 %44
+         %45 = OpLoad %_arr_int_uint_2 %x_16
+         %46 = OpCompositeConstruct %Array %45
+               OpStore %param %46
+               OpStore %x_52 %false
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Function_int %param %uint_0 %40
+         %58 = OpLoad %int %57
+         %60 = OpIEqual %bool %58 %int_0
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpStore %x_52 %true
+               OpStore %x_17 %int_42
+               OpStore %x_20_phi %int_42
+               OpStore %x_67_phi %true
+               OpBranch %54
+         %61 = OpLabel
+               OpStore %x_20_phi %int_0
+               OpStore %x_67_phi %false
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+         %65 = OpLoad %int %x_20_phi
+               OpStore %x_20 %65
+         %66 = OpLoad %bool %x_67_phi
+         %67 = OpLoad %int %x_20
+               OpStore %x_21_phi %67
+               OpSelectionMerge %68 None
+               OpBranchConditional %66 %69 %68
+         %69 = OpLabel
+               OpBranch %48
+         %68 = OpLabel
+               OpStore %x_52 %true
+               OpStore %x_17 %int_42
+               OpStore %x_21_phi %int_42
+               OpBranch %48
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+         %70 = OpLoad %int %x_21_phi
+               OpStore %x_18 %70
+         %71 = OpIEqual %bool %70 %int_42
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %74
+         %73 = OpLabel
+               OpStore %x_GLF_color %77
+               OpBranch %72
+         %74 = OpLabel
+               OpStore %x_GLF_color %78
+               OpBranch %72
+         %72 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %79
+%tint_symbol = OpFunctionParameter %main_out
+         %83 = OpLabel
+         %84 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %84
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %86 = OpLabel
+         %87 = OpFunctionCall %void %main_1
+         %89 = OpLoad %v4float %x_GLF_color
+         %90 = OpCompositeConstruct %main_out %89
+         %88 = OpFunctionCall %void %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
+%func_struct_Array_i1_2_1_ = OpFunction %int None %91
+          %a = OpFunctionParameter %_ptr_Function_Array
+         %94 = OpLabel
+       %x_74 = OpVariable %_ptr_Function_bool Function %20
+       %x_13 = OpVariable %_ptr_Function_int Function %23
+       %x_14 = OpVariable %_ptr_Function_int Function %23
+   %x_76_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_15_phi = OpVariable %_ptr_Function_int Function %23
+       %x_81 = OpVariable %_ptr_Function_bool Function %20
+   %x_81_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_14_phi = OpVariable %_ptr_Function_int Function %23
+   %x_91_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_74 %false
+               OpStore %x_76_phi %false
+               OpBranch %100
+        %100 = OpLabel
+               OpLoopMerge %101 %102 None
+               OpBranch %103
+        %103 = OpLabel
+        %108 = OpLoad %bool %x_76_phi
+               OpStore %x_81_phi %108
+               OpBranch %109
+        %109 = OpLabel
+               OpLoopMerge %110 %111 None
+               OpBranch %112
+        %112 = OpLabel
+        %113 = OpLoad %bool %x_81_phi
+               OpStore %x_81 %113
+        %114 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+        %115 = OpLoad %int %114
+        %117 = OpAccessChain %_ptr_Function_int %a %uint_0 %115
+        %118 = OpLoad %int %117
+        %119 = OpIEqual %bool %118 %int_0
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %120
+        %121 = OpLabel
+               OpStore %x_74 %true
+               OpStore %x_13 %int_42
+               OpStore %x_14_phi %int_42
+               OpStore %x_91_phi %true
+               OpBranch %110
+        %120 = OpLabel
+               OpStore %x_14_phi %int_0
+        %122 = OpLoad %bool %x_81
+               OpStore %x_91_phi %122
+               OpBranch %110
+        %111 = OpLabel
+               OpStore %x_81_phi %false
+               OpBranch %109
+        %110 = OpLabel
+        %123 = OpLoad %int %x_14_phi
+               OpStore %x_14 %123
+        %124 = OpLoad %bool %x_91_phi
+        %125 = OpLoad %int %x_14
+               OpStore %x_15_phi %125
+               OpSelectionMerge %126 None
+               OpBranchConditional %124 %127 %126
+        %127 = OpLabel
+               OpBranch %101
+        %126 = OpLabel
+               OpStore %x_74 %true
+               OpStore %x_13 %int_42
+               OpStore %x_15_phi %int_42
+               OpBranch %101
+        %102 = OpLabel
+               OpStore %x_76_phi %false
+               OpBranch %100
+        %101 = OpLabel
+        %128 = OpLoad %int %x_15_phi
+               OpReturnValue %128
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..29debc5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,129 @@
+struct Array {
+  values : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_52 : bool = false;
+  var x_17 : i32;
+  var x_18 : i32;
+  var x_16 : array<i32, 2>;
+  var param : Array;
+  var x_20 : i32;
+  var x_21_phi : i32;
+  let x_12 : i32 = x_8.zero;
+  let x_22 : array<i32, 2> = x_16;
+  var x_23_1 : array<i32, 2> = x_22;
+  x_23_1[0u] = x_12;
+  let x_23 : array<i32, 2> = x_23_1;
+  x_16 = x_23;
+  let x_54 : array<i32, 2> = x_16;
+  param = Array(x_54);
+  x_52 = false;
+  loop {
+    var x_20_phi : i32;
+    var x_67_phi : bool;
+    loop {
+      let x_19 : i32 = param.values[x_12];
+      if ((x_19 == 0)) {
+        x_52 = true;
+        x_17 = 42;
+        x_20_phi = 42;
+        x_67_phi = true;
+        break;
+      }
+      x_20_phi = 0;
+      x_67_phi = false;
+      break;
+    }
+    x_20 = x_20_phi;
+    let x_67 : bool = x_67_phi;
+    x_21_phi = x_20;
+    if (x_67) {
+      break;
+    }
+    x_52 = true;
+    x_17 = 42;
+    x_21_phi = 42;
+    break;
+  }
+  let x_21 : i32 = x_21_phi;
+  x_18 = x_21;
+  if ((x_21 == 42)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_struct_Array_i1_2_1_(a : ptr<function, Array>) -> i32 {
+  var x_74 : bool = false;
+  var x_13 : i32;
+  var x_14 : i32;
+  var x_76_phi : bool;
+  var x_15_phi : i32;
+  x_76_phi = false;
+  loop {
+    var x_81 : bool;
+    var x_81_phi : bool;
+    var x_14_phi : i32;
+    var x_91_phi : bool;
+    let x_76 : bool = x_76_phi;
+    x_81_phi = x_76;
+    loop {
+      x_81 = x_81_phi;
+      let x_10 : i32 = x_8.zero;
+      let x_11 : i32 = (*(a)).values[x_10];
+      if ((x_11 == 0)) {
+        x_74 = true;
+        x_13 = 42;
+        x_14_phi = 42;
+        x_91_phi = true;
+        break;
+      }
+      x_14_phi = 0;
+      x_91_phi = x_81;
+      break;
+
+      continuing {
+        x_81_phi = false;
+      }
+    }
+    x_14 = x_14_phi;
+    let x_91 : bool = x_91_phi;
+    x_15_phi = x_14;
+    if (x_91) {
+      break;
+    }
+    x_74 = true;
+    x_13 = 42;
+    x_15_phi = 42;
+    break;
+
+    continuing {
+      x_76_phi = false;
+    }
+  }
+  let x_15 : i32 = x_15_phi;
+  return x_15;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm
new file mode 100644
index 0000000..2fe322f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm
@@ -0,0 +1,76 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+         %17 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf1 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_2 = OpConstant %uint 2
+       %main = OpFunction %void None %12
+         %30 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+         %31 = OpExtInst %v4float %1 Cosh %17
+         %32 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %33 = OpLoad %float %32
+         %34 = OpCompositeConstruct %v4float %33 %33 %33 %33
+         %35 = OpCompositeConstruct %v4float %float_1 %float_1 %float_1 %float_1
+         %36 = OpExtInst %v4float %1 FClamp %31 %34 %35
+               OpStore %v %36
+         %37 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Function_float %v %uint_2
+         %46 = OpLoad %float %45
+         %47 = OpCompositeConstruct %v4float %38 %41 %44 %46
+               OpStore %_GLF_color %47
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..7223823
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,36 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_33 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v = clamp(cosh(float4(1.0f, 1.0f, 1.0f, 1.0f)), float4(x_33, x_33, x_33, x_33), float4(1.0f, 1.0f, 1.0f, 1.0f));
+  const float x_38 = v.x;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_43 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_46 = v.z;
+  x_GLF_color = float4(x_38, float(x_40), float(x_43), x_46);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2b232fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float const x_33 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v = clamp(cosh(float4(1.0f, 1.0f, 1.0f, 1.0f)), float4(x_33, x_33, x_33, x_33), float4(1.0f, 1.0f, 1.0f, 1.0f));
+  float const x_38 = v.x;
+  int const x_40 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_43 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_46 = v.z;
+  *(tint_symbol_4) = float4(x_38, float(x_40), float(x_43), x_46);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e90552e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,108 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+         %31 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf1 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %34 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %11
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %29 = OpLoad %float %28
+         %32 = OpExtInst %v4float %31 Cosh %34
+         %35 = OpCompositeConstruct %v4float %29 %29 %29 %29
+         %30 = OpExtInst %v4float %31 NClamp %32 %35 %34
+               OpStore %v %30
+         %37 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %38 = OpLoad %float %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %45 = OpAccessChain %_ptr_Function_float %v %uint_2
+         %46 = OpLoad %float %45
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpCompositeConstruct %v4float %38 %47 %48 %46
+               OpStore %x_GLF_color %49
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b0081f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v = clamp(cosh(vec4<f32>(1.0, 1.0, 1.0, 1.0)), vec4<f32>(x_33, x_33, x_33, x_33), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_38 : f32 = v.x;
+  let x_40 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_43 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_46 : f32 = v.z;
+  x_GLF_color = vec4<f32>(x_38, f32(x_40), f32(x_43), x_46);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
new file mode 100644
index 0000000..b0081f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v = clamp(cosh(vec4<f32>(1.0, 1.0, 1.0, 1.0)), vec4<f32>(x_33, x_33, x_33, x_33), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_38 : f32 = v.x;
+  let x_40 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_43 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_46 : f32 = v.z;
+  x_GLF_color = vec4<f32>(x_38, f32(x_40), f32(x_43), x_46);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7223823
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,36 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_33 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v = clamp(cosh(float4(1.0f, 1.0f, 1.0f, 1.0f)), float4(x_33, x_33, x_33, x_33), float4(1.0f, 1.0f, 1.0f, 1.0f));
+  const float x_38 = v.x;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_43 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_46 = v.z;
+  x_GLF_color = float4(x_38, float(x_40), float(x_43), x_46);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2b232fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float const x_33 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v = clamp(cosh(float4(1.0f, 1.0f, 1.0f, 1.0f)), float4(x_33, x_33, x_33, x_33), float4(1.0f, 1.0f, 1.0f, 1.0f));
+  float const x_38 = v.x;
+  int const x_40 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_43 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_46 = v.z;
+  *(tint_symbol_4) = float4(x_38, float(x_40), float(x_43), x_46);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e90552e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,108 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+         %31 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf1 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %34 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %11
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %29 = OpLoad %float %28
+         %32 = OpExtInst %v4float %31 Cosh %34
+         %35 = OpCompositeConstruct %v4float %29 %29 %29 %29
+         %30 = OpExtInst %v4float %31 NClamp %32 %35 %34
+               OpStore %v %30
+         %37 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %38 = OpLoad %float %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %45 = OpAccessChain %_ptr_Function_float %v %uint_2
+         %46 = OpLoad %float %45
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpCompositeConstruct %v4float %38 %47 %48 %46
+               OpStore %x_GLF_color %49
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b0081f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v = clamp(cosh(vec4<f32>(1.0, 1.0, 1.0, 1.0)), vec4<f32>(x_33, x_33, x_33, x_33), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_38 : f32 = v.x;
+  let x_40 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_43 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_46 : f32 = v.z;
+  x_GLF_color = vec4<f32>(x_38, f32(x_40), f32(x_43), x_46);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm
new file mode 100644
index 0000000..1fa7ee6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm
@@ -0,0 +1,181 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %i_0 "i"
+               OpName %i_1 "i"
+               OpName %indexable "indexable"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+      %int_4 = OpConstant %int 4
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_2 Function
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %36 = OpLoad %int %35
+               OpStore %a %36
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %38 = OpLoad %int %37
+               OpStore %b %38
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpCompositeConstruct %v4float %41 %41 %41 %41
+               OpStore %_GLF_color %42
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %44 = OpLoad %int %43
+               OpStore %i %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %49 %51
+               OpBranchConditional %52 %53 %46
+         %53 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %56 = OpLoad %int %55
+         %57 = OpSGreaterThan %bool %54 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpLoad %int %a
+         %61 = OpIAdd %int %60 %int_1
+               OpStore %a %61
+               OpSelectionMerge %62 None
+               OpBranchConditional %false %63 %62
+         %63 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %65 = OpLoad %int %64
+               OpStore %i_0 %65
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %70 = OpLoad %int %i_0
+         %71 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpSLessThan %bool %70 %72
+               OpBranchConditional %73 %74 %67
+         %74 = OpLabel
+               OpReturn
+         %68 = OpLabel
+               OpBranch %66
+         %67 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+         %75 = OpLoad %int %i
+         %76 = OpIAdd %int %75 %int_1
+               OpStore %i %76
+               OpBranch %45
+         %46 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %78 = OpLoad %int %77
+               OpStore %i_1 %78
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %83 = OpLoad %int %i_1
+         %84 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpSLessThan %bool %83 %85
+               OpBranchConditional %86 %87 %80
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %91 = OpLoad %int %90
+         %92 = OpCompositeConstruct %_arr_int_uint_2 %89 %91
+         %93 = OpLoad %int %b
+               OpStore %indexable %92
+         %94 = OpAccessChain %_ptr_Function_int %indexable %93
+         %95 = OpLoad %int %94
+         %96 = OpLoad %int %a
+         %97 = OpIAdd %int %96 %95
+               OpStore %a %97
+               OpBranch %81
+         %81 = OpLabel
+         %98 = OpLoad %int %i_1
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %i_1 %99
+               OpBranch %79
+         %80 = OpLabel
+        %100 = OpLoad %int %a
+        %101 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpIEqual %bool %100 %102
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %110
+        %112 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %113
+        %115 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %108 %111 %114 %117
+               OpStore %_GLF_color %118
+               OpBranch %104
+        %104 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..773f4d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,98 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int indexable[2] = (int[2])0;
+  const int x_36 = asint(x_6[2].x);
+  a = x_36;
+  const int x_38 = asint(x_6[3].x);
+  b = x_38;
+  const int x_40 = asint(x_6[2].x);
+  const float x_41 = float(x_40);
+  x_GLF_color = float4(x_41, x_41, x_41, x_41);
+  const int x_44 = asint(x_6[2].x);
+  i = x_44;
+  while (true) {
+    const int x_49 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_51 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    const int x_54 = i;
+    const int x_56 = asint(x_6[3].x);
+    if ((x_54 > x_56)) {
+      a = (a + 1);
+      if (false) {
+        const int x_65 = asint(x_6[2].x);
+        i_1 = x_65;
+        while (true) {
+          const int x_70 = i_1;
+          const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+          const int x_72 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+          if ((x_70 < x_72)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_78 = asint(x_6[2].x);
+  i_2 = x_78;
+  while (true) {
+    const int x_83 = i_2;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_85 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_83 < x_85)) {
+    } else {
+      break;
+    }
+    const int x_89 = asint(x_6[3].x);
+    const int x_91 = asint(x_6[4].x);
+    const int x_93 = b;
+    const int tint_symbol_3[2] = {x_89, x_91};
+    indexable = tint_symbol_3;
+    const int x_95 = indexable[x_93];
+    a = (a + x_95);
+    {
+      i_2 = (i_2 + 1);
+    }
+  }
+  const int x_100 = a;
+  const int x_102 = asint(x_6[1].x);
+  if ((x_100 == x_102)) {
+    const int x_107 = asint(x_6[3].x);
+    const int x_110 = asint(x_6[2].x);
+    const int x_113 = asint(x_6[2].x);
+    const int x_116 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..604ed91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  tint_array_wrapper_1 indexable = {};
+  int const x_36 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_36;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  b = x_38;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_41 = float(x_40);
+  *(tint_symbol_5) = float4(x_41, x_41, x_41, x_41);
+  int const x_44 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_44;
+  while (true) {
+    int const x_49 = i;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    int const x_54 = i;
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_54 > x_56)) {
+      int const x_60 = a;
+      a = (x_60 + 1);
+      if (false) {
+        int const x_65 = x_6.x_GLF_uniform_int_values.arr[2].el;
+        i_1 = x_65;
+        while (true) {
+          int const x_70 = i_1;
+          int const x_72 = x_6.x_GLF_uniform_int_values.arr[0].el;
+          if ((x_70 < x_72)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+    {
+      int const x_75 = i;
+      i = (x_75 + 1);
+    }
+  }
+  int const x_78 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i_2 = x_78;
+  while (true) {
+    int const x_83 = i_2;
+    int const x_85 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_83 < x_85)) {
+    } else {
+      break;
+    }
+    int const x_89 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_91 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_93 = b;
+    tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_89, x_91}};
+    indexable = tint_symbol_3;
+    int const x_95 = indexable.arr[x_93];
+    int const x_96 = a;
+    a = (x_96 + x_95);
+    {
+      int const x_98 = i_2;
+      i_2 = (x_98 + 1);
+    }
+  }
+  int const x_100 = a;
+  int const x_102 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_100 == x_102)) {
+    int const x_107 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_110 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_113 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_116 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_5) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..fe39eb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,231 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 142
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %30 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %130 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+        %i_1 = OpVariable %_ptr_Function_int Function %21
+        %i_2 = OpVariable %_ptr_Function_int Function %21
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_2 Function %30
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %35 = OpLoad %int %34
+               OpStore %a %35
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %38 = OpLoad %int %37
+               OpStore %b %38
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpCompositeConstruct %v4float %41 %41 %41 %41
+               OpStore %x_GLF_color %42
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %44 = OpLoad %int %43
+               OpStore %i %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpSLessThan %bool %49 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %53 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %46
+         %55 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %60 = OpLoad %int %59
+         %61 = OpSGreaterThan %bool %58 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpLoad %int %a
+         %66 = OpIAdd %int %64 %int_1
+               OpStore %a %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %false %69 %68
+         %69 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %71 = OpLoad %int %70
+               OpStore %i_1 %71
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %int %i_1
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpSLessThan %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpBranch %80
+         %82 = OpLabel
+               OpBranch %73
+         %80 = OpLabel
+               OpReturn
+         %74 = OpLabel
+               OpBranch %72
+         %73 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+         %83 = OpLoad %int %i
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %i %84
+               OpBranch %45
+         %46 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %86 = OpLoad %int %85
+               OpStore %i_2 %86
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpLoad %int %i_2
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %94 = OpSLessThan %bool %91 %93
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+               OpBranch %95
+         %97 = OpLabel
+               OpBranch %88
+         %95 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %99 = OpLoad %int %98
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %102 = OpLoad %int %101
+        %103 = OpLoad %int %b
+        %104 = OpCompositeConstruct %_arr_int_uint_2 %99 %102
+               OpStore %indexable %104
+        %105 = OpAccessChain %_ptr_Function_int %indexable %103
+        %106 = OpLoad %int %105
+        %107 = OpLoad %int %a
+        %108 = OpIAdd %int %107 %106
+               OpStore %a %108
+               OpBranch %89
+         %89 = OpLabel
+        %109 = OpLoad %int %i_2
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %i_2 %110
+               OpBranch %87
+         %88 = OpLabel
+        %111 = OpLoad %int %a
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %113 = OpLoad %int %112
+        %114 = OpIEqual %bool %111 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %118 = OpLoad %int %117
+        %119 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %124 = OpLoad %int %123
+        %125 = OpConvertSToF %float %118
+        %126 = OpConvertSToF %float %120
+        %127 = OpConvertSToF %float %122
+        %128 = OpConvertSToF %float %124
+        %129 = OpCompositeConstruct %v4float %125 %126 %127 %128
+               OpStore %x_GLF_color %129
+               OpBranch %115
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %130
+%tint_symbol = OpFunctionParameter %main_out
+        %134 = OpLabel
+        %135 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %135
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %137 = OpLabel
+        %138 = OpFunctionCall %void %main_1
+        %140 = OpLoad %v4float %x_GLF_color
+        %141 = OpCompositeConstruct %main_out %140
+        %139 = OpFunctionCall %void %tint_symbol_2 %141
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..723c264
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,103 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var indexable : array<i32, 2>;
+  let x_36 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_36;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[3];
+  b = x_38;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_41 : f32 = f32(x_40);
+  x_GLF_color = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_44;
+  loop {
+    let x_49 : i32 = i;
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    let x_54 : i32 = i;
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[3];
+    if ((x_54 > x_56)) {
+      let x_60 : i32 = a;
+      a = (x_60 + 1);
+      if (false) {
+        let x_65 : i32 = x_6.x_GLF_uniform_int_values[2];
+        i_1 = x_65;
+        loop {
+          let x_70 : i32 = i_1;
+          let x_72 : i32 = x_6.x_GLF_uniform_int_values[0];
+          if ((x_70 < x_72)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+
+    continuing {
+      let x_75 : i32 = i;
+      i = (x_75 + 1);
+    }
+  }
+  let x_78 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i_2 = x_78;
+  loop {
+    let x_83 : i32 = i_2;
+    let x_85 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_83 < x_85)) {
+    } else {
+      break;
+    }
+    let x_89 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_91 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_93 : i32 = b;
+    indexable = array<i32, 2>(x_89, x_91);
+    let x_95 : i32 = indexable[x_93];
+    let x_96 : i32 = a;
+    a = (x_96 + x_95);
+
+    continuing {
+      let x_98 : i32 = i_2;
+      i_2 = (x_98 + 1);
+    }
+  }
+  let x_100 : i32 = a;
+  let x_102 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_100 == x_102)) {
+    let x_107 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_110 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_113 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_116 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
new file mode 100644
index 0000000..723c264
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
@@ -0,0 +1,103 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var indexable : array<i32, 2>;
+  let x_36 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_36;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[3];
+  b = x_38;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_41 : f32 = f32(x_40);
+  x_GLF_color = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_44;
+  loop {
+    let x_49 : i32 = i;
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    let x_54 : i32 = i;
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[3];
+    if ((x_54 > x_56)) {
+      let x_60 : i32 = a;
+      a = (x_60 + 1);
+      if (false) {
+        let x_65 : i32 = x_6.x_GLF_uniform_int_values[2];
+        i_1 = x_65;
+        loop {
+          let x_70 : i32 = i_1;
+          let x_72 : i32 = x_6.x_GLF_uniform_int_values[0];
+          if ((x_70 < x_72)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+
+    continuing {
+      let x_75 : i32 = i;
+      i = (x_75 + 1);
+    }
+  }
+  let x_78 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i_2 = x_78;
+  loop {
+    let x_83 : i32 = i_2;
+    let x_85 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_83 < x_85)) {
+    } else {
+      break;
+    }
+    let x_89 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_91 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_93 : i32 = b;
+    indexable = array<i32, 2>(x_89, x_91);
+    let x_95 : i32 = indexable[x_93];
+    let x_96 : i32 = a;
+    a = (x_96 + x_95);
+
+    continuing {
+      let x_98 : i32 = i_2;
+      i_2 = (x_98 + 1);
+    }
+  }
+  let x_100 : i32 = a;
+  let x_102 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_100 == x_102)) {
+    let x_107 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_110 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_113 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_116 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..773f4d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,98 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int indexable[2] = (int[2])0;
+  const int x_36 = asint(x_6[2].x);
+  a = x_36;
+  const int x_38 = asint(x_6[3].x);
+  b = x_38;
+  const int x_40 = asint(x_6[2].x);
+  const float x_41 = float(x_40);
+  x_GLF_color = float4(x_41, x_41, x_41, x_41);
+  const int x_44 = asint(x_6[2].x);
+  i = x_44;
+  while (true) {
+    const int x_49 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_51 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    const int x_54 = i;
+    const int x_56 = asint(x_6[3].x);
+    if ((x_54 > x_56)) {
+      a = (a + 1);
+      if (false) {
+        const int x_65 = asint(x_6[2].x);
+        i_1 = x_65;
+        while (true) {
+          const int x_70 = i_1;
+          const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+          const int x_72 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+          if ((x_70 < x_72)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_78 = asint(x_6[2].x);
+  i_2 = x_78;
+  while (true) {
+    const int x_83 = i_2;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_85 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_83 < x_85)) {
+    } else {
+      break;
+    }
+    const int x_89 = asint(x_6[3].x);
+    const int x_91 = asint(x_6[4].x);
+    const int x_93 = b;
+    const int tint_symbol_3[2] = {x_89, x_91};
+    indexable = tint_symbol_3;
+    const int x_95 = indexable[x_93];
+    a = (a + x_95);
+    {
+      i_2 = (i_2 + 1);
+    }
+  }
+  const int x_100 = a;
+  const int x_102 = asint(x_6[1].x);
+  if ((x_100 == x_102)) {
+    const int x_107 = asint(x_6[3].x);
+    const int x_110 = asint(x_6[2].x);
+    const int x_113 = asint(x_6[2].x);
+    const int x_116 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..604ed91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  tint_array_wrapper_1 indexable = {};
+  int const x_36 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_36;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  b = x_38;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_41 = float(x_40);
+  *(tint_symbol_5) = float4(x_41, x_41, x_41, x_41);
+  int const x_44 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_44;
+  while (true) {
+    int const x_49 = i;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    int const x_54 = i;
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_54 > x_56)) {
+      int const x_60 = a;
+      a = (x_60 + 1);
+      if (false) {
+        int const x_65 = x_6.x_GLF_uniform_int_values.arr[2].el;
+        i_1 = x_65;
+        while (true) {
+          int const x_70 = i_1;
+          int const x_72 = x_6.x_GLF_uniform_int_values.arr[0].el;
+          if ((x_70 < x_72)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+    {
+      int const x_75 = i;
+      i = (x_75 + 1);
+    }
+  }
+  int const x_78 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i_2 = x_78;
+  while (true) {
+    int const x_83 = i_2;
+    int const x_85 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_83 < x_85)) {
+    } else {
+      break;
+    }
+    int const x_89 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_91 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_93 = b;
+    tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_89, x_91}};
+    indexable = tint_symbol_3;
+    int const x_95 = indexable.arr[x_93];
+    int const x_96 = a;
+    a = (x_96 + x_95);
+    {
+      int const x_98 = i_2;
+      i_2 = (x_98 + 1);
+    }
+  }
+  int const x_100 = a;
+  int const x_102 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_100 == x_102)) {
+    int const x_107 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_110 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_113 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_116 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_5) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..fe39eb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,231 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 142
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %30 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %130 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+        %i_1 = OpVariable %_ptr_Function_int Function %21
+        %i_2 = OpVariable %_ptr_Function_int Function %21
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_2 Function %30
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %35 = OpLoad %int %34
+               OpStore %a %35
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %38 = OpLoad %int %37
+               OpStore %b %38
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpCompositeConstruct %v4float %41 %41 %41 %41
+               OpStore %x_GLF_color %42
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %44 = OpLoad %int %43
+               OpStore %i %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpSLessThan %bool %49 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %53 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %46
+         %55 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %60 = OpLoad %int %59
+         %61 = OpSGreaterThan %bool %58 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpLoad %int %a
+         %66 = OpIAdd %int %64 %int_1
+               OpStore %a %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %false %69 %68
+         %69 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %71 = OpLoad %int %70
+               OpStore %i_1 %71
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %int %i_1
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpSLessThan %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpBranch %80
+         %82 = OpLabel
+               OpBranch %73
+         %80 = OpLabel
+               OpReturn
+         %74 = OpLabel
+               OpBranch %72
+         %73 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+         %83 = OpLoad %int %i
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %i %84
+               OpBranch %45
+         %46 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %86 = OpLoad %int %85
+               OpStore %i_2 %86
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpLoad %int %i_2
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %94 = OpSLessThan %bool %91 %93
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+               OpBranch %95
+         %97 = OpLabel
+               OpBranch %88
+         %95 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %99 = OpLoad %int %98
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %102 = OpLoad %int %101
+        %103 = OpLoad %int %b
+        %104 = OpCompositeConstruct %_arr_int_uint_2 %99 %102
+               OpStore %indexable %104
+        %105 = OpAccessChain %_ptr_Function_int %indexable %103
+        %106 = OpLoad %int %105
+        %107 = OpLoad %int %a
+        %108 = OpIAdd %int %107 %106
+               OpStore %a %108
+               OpBranch %89
+         %89 = OpLabel
+        %109 = OpLoad %int %i_2
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %i_2 %110
+               OpBranch %87
+         %88 = OpLabel
+        %111 = OpLoad %int %a
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %113 = OpLoad %int %112
+        %114 = OpIEqual %bool %111 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %118 = OpLoad %int %117
+        %119 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %124 = OpLoad %int %123
+        %125 = OpConvertSToF %float %118
+        %126 = OpConvertSToF %float %120
+        %127 = OpConvertSToF %float %122
+        %128 = OpConvertSToF %float %124
+        %129 = OpCompositeConstruct %v4float %125 %126 %127 %128
+               OpStore %x_GLF_color %129
+               OpBranch %115
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %130
+%tint_symbol = OpFunctionParameter %main_out
+        %134 = OpLabel
+        %135 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %135
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %137 = OpLabel
+        %138 = OpFunctionCall %void %main_1
+        %140 = OpLoad %v4float %x_GLF_color
+        %141 = OpCompositeConstruct %main_out %140
+        %139 = OpFunctionCall %void %tint_symbol_2 %141
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..723c264
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,103 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var indexable : array<i32, 2>;
+  let x_36 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_36;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[3];
+  b = x_38;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_41 : f32 = f32(x_40);
+  x_GLF_color = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_44;
+  loop {
+    let x_49 : i32 = i;
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    let x_54 : i32 = i;
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[3];
+    if ((x_54 > x_56)) {
+      let x_60 : i32 = a;
+      a = (x_60 + 1);
+      if (false) {
+        let x_65 : i32 = x_6.x_GLF_uniform_int_values[2];
+        i_1 = x_65;
+        loop {
+          let x_70 : i32 = i_1;
+          let x_72 : i32 = x_6.x_GLF_uniform_int_values[0];
+          if ((x_70 < x_72)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+
+    continuing {
+      let x_75 : i32 = i;
+      i = (x_75 + 1);
+    }
+  }
+  let x_78 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i_2 = x_78;
+  loop {
+    let x_83 : i32 = i_2;
+    let x_85 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_83 < x_85)) {
+    } else {
+      break;
+    }
+    let x_89 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_91 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_93 : i32 = b;
+    indexable = array<i32, 2>(x_89, x_91);
+    let x_95 : i32 = indexable[x_93];
+    let x_96 : i32 = a;
+    a = (x_96 + x_95);
+
+    continuing {
+      let x_98 : i32 = i_2;
+      i_2 = (x_98 + 1);
+    }
+  }
+  let x_100 : i32 = a;
+  let x_102 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_100 == x_102)) {
+    let x_107 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_110 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_113 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_116 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm
new file mode 100644
index 0000000..305dd5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm
@@ -0,0 +1,130 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %i_0 "i"
+               OpName %i_1 "i"
+               OpName %indexable "indexable"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %20 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+      %int_2 = OpConstant %int 2
+         %28 = OpConstantComposite %_arr_int_uint_2 %int_1 %int_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+     %int_28 = OpConstant %int 28
+    %float_1 = OpConstant %float 1
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %11
+         %33 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_2 Function
+               OpStore %a %int_0
+               OpStore %b %int_1
+               OpStore %_GLF_color %20
+               OpStore %i %int_0
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpSLessThan %bool %38 %int_10
+               OpBranchConditional %39 %40 %35
+         %40 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpSGreaterThan %bool %41 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+         %45 = OpLoad %int %a
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %a %46
+               OpSelectionMerge %47 None
+               OpBranchConditional %false %48 %47
+         %48 = OpLabel
+               OpStore %i_0 %int_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %i_0
+         %54 = OpSLessThan %bool %53 %int_10
+               OpBranchConditional %54 %55 %50
+         %55 = OpLabel
+               OpReturn
+         %51 = OpLabel
+               OpBranch %49
+         %50 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpIAdd %int %56 %int_1
+               OpStore %i %57
+               OpBranch %34
+         %35 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpLoad %int %i_1
+         %63 = OpSLessThan %bool %62 %int_10
+               OpBranchConditional %63 %64 %59
+         %64 = OpLabel
+         %65 = OpLoad %int %b
+               OpStore %indexable %28
+         %66 = OpAccessChain %_ptr_Function_int %indexable %65
+         %67 = OpLoad %int %66
+         %68 = OpLoad %int %a
+         %69 = OpIAdd %int %68 %67
+               OpStore %a %69
+               OpBranch %60
+         %60 = OpLabel
+         %70 = OpLoad %int %i_1
+         %71 = OpIAdd %int %70 %int_1
+               OpStore %i_1 %71
+               OpBranch %58
+         %59 = OpLabel
+         %72 = OpLoad %int %a
+         %73 = OpIEqual %bool %72 %int_28
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+               OpStore %_GLF_color %32
+               OpBranch %74
+         %74 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..f8fc44b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.hlsl
@@ -0,0 +1,59 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int indexable[2] = (int[2])0;
+  a = 0;
+  b = 1;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      if ((i > 1)) {
+        a = (a + 1);
+        if (false) {
+          i_1 = 0;
+          while (true) {
+            if ((i_1 < 10)) {
+            } else {
+              break;
+            }
+            return;
+          }
+        }
+      }
+    }
+  }
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      const int x_65 = b;
+      const int tint_symbol_2[2] = {1, 2};
+      indexable = tint_symbol_2;
+      const int x_67 = indexable[x_65];
+      a = (a + x_67);
+    }
+  }
+  if ((a == 28)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.msl
new file mode 100644
index 0000000..030119e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.msl
@@ -0,0 +1,84 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  tint_array_wrapper indexable = {};
+  a = 0;
+  b = 1;
+  *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    int const x_38 = i;
+    if ((x_38 < 10)) {
+    } else {
+      break;
+    }
+    int const x_41 = i;
+    if ((x_41 > 1)) {
+      int const x_45 = a;
+      a = (x_45 + 1);
+      if (false) {
+        i_1 = 0;
+        while (true) {
+          int const x_53 = i_1;
+          if ((x_53 < 10)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+    {
+      int const x_56 = i;
+      i = (x_56 + 1);
+    }
+  }
+  i_2 = 0;
+  while (true) {
+    int const x_62 = i_2;
+    if ((x_62 < 10)) {
+    } else {
+      break;
+    }
+    int const x_65 = b;
+    tint_array_wrapper const tint_symbol_3 = {.arr={1, 2}};
+    indexable = tint_symbol_3;
+    int const x_67 = indexable.arr[x_65];
+    int const x_68 = a;
+    a = (x_68 + x_67);
+    {
+      int const x_70 = i_2;
+      i_2 = (x_70 + 1);
+    }
+  }
+  int const x_72 = a;
+  if ((x_72 == 28)) {
+    *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(&(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..cb6d107
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.spvasm
@@ -0,0 +1,178 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 98
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %25 = OpConstantNull %_arr_int_uint_2
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_2 = OpConstant %int 2
+         %72 = OpConstantComposite %_arr_int_uint_2 %int_1 %int_2
+     %int_28 = OpConstant %int 28
+    %float_1 = OpConstant %float 1
+         %85 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %86 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %15
+          %b = OpVariable %_ptr_Function_int Function %15
+          %i = OpVariable %_ptr_Function_int Function %15
+        %i_1 = OpVariable %_ptr_Function_int Function %15
+        %i_2 = OpVariable %_ptr_Function_int Function %15
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_2 Function %25
+               OpStore %a %int_0
+               OpStore %b %int_1
+               OpStore %x_GLF_color %29
+               OpStore %i %int_0
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpSLessThan %bool %34 %int_10
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpBranch %38
+         %40 = OpLabel
+               OpBranch %31
+         %38 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpSGreaterThan %bool %41 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+         %45 = OpLoad %int %a
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %a %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %false %49 %48
+         %49 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %54 = OpLoad %int %i_1
+         %55 = OpSLessThan %bool %54 %int_10
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpBranch %56
+         %58 = OpLabel
+               OpBranch %51
+         %56 = OpLabel
+               OpReturn
+         %52 = OpLabel
+               OpBranch %50
+         %51 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %i %60
+               OpBranch %30
+         %31 = OpLabel
+               OpStore %i_2 %int_0
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpLoad %int %i_2
+         %66 = OpSLessThan %bool %65 %int_10
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %62
+         %67 = OpLabel
+         %70 = OpLoad %int %b
+               OpStore %indexable %72
+         %73 = OpAccessChain %_ptr_Function_int %indexable %70
+         %74 = OpLoad %int %73
+         %75 = OpLoad %int %a
+         %76 = OpIAdd %int %75 %74
+               OpStore %a %76
+               OpBranch %63
+         %63 = OpLabel
+         %77 = OpLoad %int %i_2
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %i_2 %78
+               OpBranch %61
+         %62 = OpLabel
+         %79 = OpLoad %int %a
+         %81 = OpIEqual %bool %79 %int_28
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+               OpStore %x_GLF_color %85
+               OpBranch %82
+         %82 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %86
+%tint_symbol = OpFunctionParameter %main_out
+         %90 = OpLabel
+         %91 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %91
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %93 = OpLabel
+         %94 = OpFunctionCall %void %main_1
+         %96 = OpLoad %v4float %x_GLF_color
+         %97 = OpCompositeConstruct %main_out %96
+         %95 = OpFunctionCall %void %tint_symbol_2 %97
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..c7c18d1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.spvasm.expected.wgsl
@@ -0,0 +1,76 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var indexable : array<i32, 2>;
+  a = 0;
+  b = 1;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  loop {
+    let x_38 : i32 = i;
+    if ((x_38 < 10)) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = i;
+    if ((x_41 > 1)) {
+      let x_45 : i32 = a;
+      a = (x_45 + 1);
+      if (false) {
+        i_1 = 0;
+        loop {
+          let x_53 : i32 = i_1;
+          if ((x_53 < 10)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 + 1);
+    }
+  }
+  i_2 = 0;
+  loop {
+    let x_62 : i32 = i_2;
+    if ((x_62 < 10)) {
+    } else {
+      break;
+    }
+    let x_65 : i32 = b;
+    indexable = array<i32, 2>(1, 2);
+    let x_67 : i32 = indexable[x_65];
+    let x_68 : i32 = a;
+    a = (x_68 + x_67);
+
+    continuing {
+      let x_70 : i32 = i_2;
+      i_2 = (x_70 + 1);
+    }
+  }
+  let x_72 : i32 = a;
+  if ((x_72 == 28)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
new file mode 100644
index 0000000..c7c18d1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
@@ -0,0 +1,76 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var indexable : array<i32, 2>;
+  a = 0;
+  b = 1;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  loop {
+    let x_38 : i32 = i;
+    if ((x_38 < 10)) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = i;
+    if ((x_41 > 1)) {
+      let x_45 : i32 = a;
+      a = (x_45 + 1);
+      if (false) {
+        i_1 = 0;
+        loop {
+          let x_53 : i32 = i_1;
+          if ((x_53 < 10)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 + 1);
+    }
+  }
+  i_2 = 0;
+  loop {
+    let x_62 : i32 = i_2;
+    if ((x_62 < 10)) {
+    } else {
+      break;
+    }
+    let x_65 : i32 = b;
+    indexable = array<i32, 2>(1, 2);
+    let x_67 : i32 = indexable[x_65];
+    let x_68 : i32 = a;
+    a = (x_68 + x_67);
+
+    continuing {
+      let x_70 : i32 = i_2;
+      i_2 = (x_70 + 1);
+    }
+  }
+  let x_72 : i32 = a;
+  if ((x_72 == 28)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..f8fc44b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.hlsl
@@ -0,0 +1,59 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int indexable[2] = (int[2])0;
+  a = 0;
+  b = 1;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      if ((i > 1)) {
+        a = (a + 1);
+        if (false) {
+          i_1 = 0;
+          while (true) {
+            if ((i_1 < 10)) {
+            } else {
+              break;
+            }
+            return;
+          }
+        }
+      }
+    }
+  }
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      const int x_65 = b;
+      const int tint_symbol_2[2] = {1, 2};
+      indexable = tint_symbol_2;
+      const int x_67 = indexable[x_65];
+      a = (a + x_67);
+    }
+  }
+  if ((a == 28)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.msl
new file mode 100644
index 0000000..030119e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.msl
@@ -0,0 +1,84 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  tint_array_wrapper indexable = {};
+  a = 0;
+  b = 1;
+  *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    int const x_38 = i;
+    if ((x_38 < 10)) {
+    } else {
+      break;
+    }
+    int const x_41 = i;
+    if ((x_41 > 1)) {
+      int const x_45 = a;
+      a = (x_45 + 1);
+      if (false) {
+        i_1 = 0;
+        while (true) {
+          int const x_53 = i_1;
+          if ((x_53 < 10)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+    {
+      int const x_56 = i;
+      i = (x_56 + 1);
+    }
+  }
+  i_2 = 0;
+  while (true) {
+    int const x_62 = i_2;
+    if ((x_62 < 10)) {
+    } else {
+      break;
+    }
+    int const x_65 = b;
+    tint_array_wrapper const tint_symbol_3 = {.arr={1, 2}};
+    indexable = tint_symbol_3;
+    int const x_67 = indexable.arr[x_65];
+    int const x_68 = a;
+    a = (x_68 + x_67);
+    {
+      int const x_70 = i_2;
+      i_2 = (x_70 + 1);
+    }
+  }
+  int const x_72 = a;
+  if ((x_72 == 28)) {
+    *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(&(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..cb6d107
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.spvasm
@@ -0,0 +1,178 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 98
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %25 = OpConstantNull %_arr_int_uint_2
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_2 = OpConstant %int 2
+         %72 = OpConstantComposite %_arr_int_uint_2 %int_1 %int_2
+     %int_28 = OpConstant %int 28
+    %float_1 = OpConstant %float 1
+         %85 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %86 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %15
+          %b = OpVariable %_ptr_Function_int Function %15
+          %i = OpVariable %_ptr_Function_int Function %15
+        %i_1 = OpVariable %_ptr_Function_int Function %15
+        %i_2 = OpVariable %_ptr_Function_int Function %15
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_2 Function %25
+               OpStore %a %int_0
+               OpStore %b %int_1
+               OpStore %x_GLF_color %29
+               OpStore %i %int_0
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpSLessThan %bool %34 %int_10
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpBranch %38
+         %40 = OpLabel
+               OpBranch %31
+         %38 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpSGreaterThan %bool %41 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+         %45 = OpLoad %int %a
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %a %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %false %49 %48
+         %49 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %54 = OpLoad %int %i_1
+         %55 = OpSLessThan %bool %54 %int_10
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpBranch %56
+         %58 = OpLabel
+               OpBranch %51
+         %56 = OpLabel
+               OpReturn
+         %52 = OpLabel
+               OpBranch %50
+         %51 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %i %60
+               OpBranch %30
+         %31 = OpLabel
+               OpStore %i_2 %int_0
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpLoad %int %i_2
+         %66 = OpSLessThan %bool %65 %int_10
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %62
+         %67 = OpLabel
+         %70 = OpLoad %int %b
+               OpStore %indexable %72
+         %73 = OpAccessChain %_ptr_Function_int %indexable %70
+         %74 = OpLoad %int %73
+         %75 = OpLoad %int %a
+         %76 = OpIAdd %int %75 %74
+               OpStore %a %76
+               OpBranch %63
+         %63 = OpLabel
+         %77 = OpLoad %int %i_2
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %i_2 %78
+               OpBranch %61
+         %62 = OpLabel
+         %79 = OpLoad %int %a
+         %81 = OpIEqual %bool %79 %int_28
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+               OpStore %x_GLF_color %85
+               OpBranch %82
+         %82 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %86
+%tint_symbol = OpFunctionParameter %main_out
+         %90 = OpLabel
+         %91 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %91
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %93 = OpLabel
+         %94 = OpFunctionCall %void %main_1
+         %96 = OpLoad %v4float %x_GLF_color
+         %97 = OpCompositeConstruct %main_out %96
+         %95 = OpFunctionCall %void %tint_symbol_2 %97
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..c7c18d1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl.expected.wgsl
@@ -0,0 +1,76 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var indexable : array<i32, 2>;
+  a = 0;
+  b = 1;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  loop {
+    let x_38 : i32 = i;
+    if ((x_38 < 10)) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = i;
+    if ((x_41 > 1)) {
+      let x_45 : i32 = a;
+      a = (x_45 + 1);
+      if (false) {
+        i_1 = 0;
+        loop {
+          let x_53 : i32 = i_1;
+          if ((x_53 < 10)) {
+          } else {
+            break;
+          }
+          return;
+        }
+      }
+    }
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 + 1);
+    }
+  }
+  i_2 = 0;
+  loop {
+    let x_62 : i32 = i_2;
+    if ((x_62 < 10)) {
+    } else {
+      break;
+    }
+    let x_65 : i32 = b;
+    indexable = array<i32, 2>(1, 2);
+    let x_67 : i32 = indexable[x_65];
+    let x_68 : i32 = a;
+    a = (x_68 + x_67);
+
+    continuing {
+      let x_70 : i32 = i_2;
+      i_2 = (x_70 + 1);
+    }
+  }
+  let x_72 : i32 = a;
+  if ((x_72 == 28)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm
new file mode 100644
index 0000000..2509f0f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm
@@ -0,0 +1,146 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %A1 "A1"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %b "b"
+               OpName %c "c"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_3_0 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+%_arr_float_uint_3_0 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3_0
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %15
+         %35 = OpLabel
+         %A1 = OpVariable %_ptr_Function__arr_float_uint_3 Function
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_float Function
+          %c = OpVariable %_ptr_Function_bool Function
+         %36 = OpVariable %_ptr_Function_bool Function
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %42 = OpLoad %float %41
+         %43 = OpCompositeConstruct %_arr_float_uint_3 %38 %40 %42
+               OpStore %A1 %43
+         %44 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpExtInst %int %1 SClamp %45 %47 %49
+               OpStore %a %50
+         %51 = OpLoad %int %a
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpExtInst %int %1 SClamp %51 %53 %55
+         %57 = OpAccessChain %_ptr_Function_float %A1 %56
+         %58 = OpLoad %float %57
+               OpStore %b %58
+         %59 = OpLoad %float %b
+         %60 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Function_float %A1 %61
+         %63 = OpLoad %float %62
+         %64 = OpFOrdLessThan %bool %59 %63
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %69 = OpLoad %float %68
+         %70 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %71 = OpLoad %float %70
+         %72 = OpFOrdGreaterThan %bool %69 %71
+               OpStore %36 %72
+               OpBranch %65
+         %67 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %74 = OpLoad %float %73
+         %75 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Function_float %A1 %76
+         %78 = OpLoad %float %77
+         %79 = OpFOrdLessThan %bool %74 %78
+               OpStore %36 %79
+               OpBranch %65
+         %65 = OpLabel
+         %80 = OpLoad %bool %36
+               OpStore %c %80
+         %81 = OpLoad %bool %c
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %89
+         %91 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpCompositeConstruct %v4float %87 %90 %93 %96
+               OpStore %_GLF_color %97
+               OpBranch %82
+         %84 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %99 = OpLoad %float %98
+        %100 = OpCompositeConstruct %v4float %99 %99 %99 %99
+               OpStore %_GLF_color %100
+               OpBranch %82
+         %82 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ee0a08b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,77 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float A1[3] = (float[3])0;
+  int a = 0;
+  float b = 0.0f;
+  bool c = false;
+  bool x_36 = false;
+  const float x_38 = asfloat(x_6[2].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_42 = asfloat(x_6[1].x);
+  const float tint_symbol_4[3] = {x_38, x_40, x_42};
+  A1 = tint_symbol_4;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_49 = asint(x_9[1].x);
+  a = clamp(x_45, x_47, x_49);
+  const int x_51 = a;
+  const int x_53 = asint(x_9[1].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_55 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_58 = A1[clamp(x_51, x_53, x_55)];
+  b = x_58;
+  const float x_59 = b;
+  const int x_61 = asint(x_9[1].x);
+  const float x_63 = A1[x_61];
+  if ((x_59 < x_63)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_69 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_71 = asfloat(x_6[2].x);
+    x_36 = (x_69 > x_71);
+  } else {
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_74 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_76 = asint(x_9[2].x);
+    const float x_78 = A1[x_76];
+    x_36 = (x_74 < x_78);
+  }
+  c = x_36;
+  if (c) {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_86 = asint(x_9[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const int x_89 = asint(x_9[1].x);
+    const int x_92 = asint(x_9[1].x);
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_95 = asint(x_9[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    x_GLF_color = float4(float(x_86), float(x_89), float(x_92), float(x_95));
+  } else {
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const float x_99 = asfloat(x_6[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    x_GLF_color = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6b19b36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.msl
@@ -0,0 +1,90 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 A1 = {};
+  int a = 0;
+  float b = 0.0f;
+  bool c = false;
+  bool x_36 = false;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_38, x_40, x_42}};
+  A1 = tint_symbol_3;
+  int const x_45 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  int const x_47 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  int const x_49 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  a = clamp(x_45, x_47, x_49);
+  int const x_51 = a;
+  int const x_53 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  int const x_55 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  float const x_58 = A1.arr[clamp(x_51, x_53, x_55)];
+  b = x_58;
+  float const x_59 = b;
+  int const x_61 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  float const x_63 = A1.arr[x_61];
+  if ((x_59 < x_63)) {
+    float const x_69 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_71 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    x_36 = (x_69 > x_71);
+  } else {
+    float const x_74 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    int const x_76 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_78 = A1.arr[x_76];
+    x_36 = (x_74 < x_78);
+  }
+  bool const x_80 = x_36;
+  c = x_80;
+  bool const x_81 = c;
+  if (x_81) {
+    int const x_86 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_89 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_92 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_95 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_86), float(x_89), float(x_92), float(x_95));
+  } else {
+    float const x_99 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_5) = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5e0a897
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,186 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 121
+; Schema: 0
+               OpCapability Shader
+         %58 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %A1 "A1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_36 "x_36"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_arr_float_uint_3_0 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3_0 = OpTypePointer Function %_arr_float_uint_3_0
+         %26 = OpConstantNull %_arr_float_uint_3_0
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %32 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %109 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %A1 = OpVariable %_ptr_Function__arr_float_uint_3_0 Function %26
+          %a = OpVariable %_ptr_Function_int Function %29
+          %b = OpVariable %_ptr_Function_float Function %32
+          %c = OpVariable %_ptr_Function_bool Function %36
+       %x_36 = OpVariable %_ptr_Function_bool Function %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %45 = OpLoad %float %44
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %49 = OpCompositeConstruct %_arr_float_uint_3_0 %42 %45 %48
+               OpStore %A1 %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpExtInst %int %58 SClamp %52 %54 %56
+               OpStore %a %57
+         %59 = OpLoad %int %a
+         %60 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpExtInst %int %58 SClamp %59 %61 %63
+         %65 = OpAccessChain %_ptr_Function_float %A1 %64
+         %66 = OpLoad %float %65
+               OpStore %b %66
+         %67 = OpLoad %float %b
+         %68 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Function_float %A1 %69
+         %71 = OpLoad %float %70
+         %72 = OpFOrdLessThan %bool %67 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %79 = OpLoad %float %78
+         %80 = OpFOrdGreaterThan %bool %77 %79
+               OpStore %x_36 %80
+               OpBranch %73
+         %75 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Function_float %A1 %84
+         %86 = OpLoad %float %85
+         %87 = OpFOrdLessThan %bool %82 %86
+               OpStore %x_36 %87
+               OpBranch %73
+         %73 = OpLabel
+         %88 = OpLoad %bool %x_36
+               OpStore %c %88
+         %89 = OpLoad %bool %c
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %94
+        %102 = OpConvertSToF %float %96
+        %103 = OpConvertSToF %float %98
+        %104 = OpConvertSToF %float %100
+        %105 = OpCompositeConstruct %v4float %101 %102 %103 %104
+               OpStore %x_GLF_color %105
+               OpBranch %90
+         %92 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %107 = OpLoad %float %106
+        %108 = OpCompositeConstruct %v4float %107 %107 %107 %107
+               OpStore %x_GLF_color %108
+               OpBranch %90
+         %90 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %109
+%tint_symbol = OpFunctionParameter %main_out
+        %113 = OpLabel
+        %114 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %114
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %116 = OpLabel
+        %117 = OpFunctionCall %void %main_1
+        %119 = OpLoad %v4float %x_GLF_color
+        %120 = OpCompositeConstruct %main_out %119
+        %118 = OpFunctionCall %void %tint_symbol_2 %120
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f6f65a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A1 : array<f32, 3>;
+  var a : i32;
+  var b : f32;
+  var c : bool;
+  var x_36 : bool;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[1];
+  A1 = array<f32, 3>(x_38, x_40, x_42);
+  let x_45 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_47 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_49 : i32 = x_9.x_GLF_uniform_int_values[1];
+  a = clamp(x_45, x_47, x_49);
+  let x_51 : i32 = a;
+  let x_53 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_55 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_58 : f32 = A1[clamp(x_51, x_53, x_55)];
+  b = x_58;
+  let x_59 : f32 = b;
+  let x_61 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_63 : f32 = A1[x_61];
+  if ((x_59 < x_63)) {
+    let x_69 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_71 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_36 = (x_69 > x_71);
+  } else {
+    let x_74 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_76 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_78 : f32 = A1[x_76];
+    x_36 = (x_74 < x_78);
+  }
+  let x_80 : bool = x_36;
+  c = x_80;
+  let x_81 : bool = c;
+  if (x_81) {
+    let x_86 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_89 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_92 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_95 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_86), f32(x_89), f32(x_92), f32(x_95));
+  } else {
+    let x_99 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
new file mode 100644
index 0000000..f6f65a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A1 : array<f32, 3>;
+  var a : i32;
+  var b : f32;
+  var c : bool;
+  var x_36 : bool;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[1];
+  A1 = array<f32, 3>(x_38, x_40, x_42);
+  let x_45 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_47 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_49 : i32 = x_9.x_GLF_uniform_int_values[1];
+  a = clamp(x_45, x_47, x_49);
+  let x_51 : i32 = a;
+  let x_53 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_55 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_58 : f32 = A1[clamp(x_51, x_53, x_55)];
+  b = x_58;
+  let x_59 : f32 = b;
+  let x_61 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_63 : f32 = A1[x_61];
+  if ((x_59 < x_63)) {
+    let x_69 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_71 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_36 = (x_69 > x_71);
+  } else {
+    let x_74 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_76 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_78 : f32 = A1[x_76];
+    x_36 = (x_74 < x_78);
+  }
+  let x_80 : bool = x_36;
+  c = x_80;
+  let x_81 : bool = c;
+  if (x_81) {
+    let x_86 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_89 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_92 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_95 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_86), f32(x_89), f32(x_92), f32(x_95));
+  } else {
+    let x_99 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ee0a08b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,77 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float A1[3] = (float[3])0;
+  int a = 0;
+  float b = 0.0f;
+  bool c = false;
+  bool x_36 = false;
+  const float x_38 = asfloat(x_6[2].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_42 = asfloat(x_6[1].x);
+  const float tint_symbol_4[3] = {x_38, x_40, x_42};
+  A1 = tint_symbol_4;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_49 = asint(x_9[1].x);
+  a = clamp(x_45, x_47, x_49);
+  const int x_51 = a;
+  const int x_53 = asint(x_9[1].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_55 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_58 = A1[clamp(x_51, x_53, x_55)];
+  b = x_58;
+  const float x_59 = b;
+  const int x_61 = asint(x_9[1].x);
+  const float x_63 = A1[x_61];
+  if ((x_59 < x_63)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_69 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_71 = asfloat(x_6[2].x);
+    x_36 = (x_69 > x_71);
+  } else {
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_74 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_76 = asint(x_9[2].x);
+    const float x_78 = A1[x_76];
+    x_36 = (x_74 < x_78);
+  }
+  c = x_36;
+  if (c) {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_86 = asint(x_9[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const int x_89 = asint(x_9[1].x);
+    const int x_92 = asint(x_9[1].x);
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_95 = asint(x_9[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    x_GLF_color = float4(float(x_86), float(x_89), float(x_92), float(x_95));
+  } else {
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const float x_99 = asfloat(x_6[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    x_GLF_color = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6b19b36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.msl
@@ -0,0 +1,90 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 A1 = {};
+  int a = 0;
+  float b = 0.0f;
+  bool c = false;
+  bool x_36 = false;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_38, x_40, x_42}};
+  A1 = tint_symbol_3;
+  int const x_45 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  int const x_47 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  int const x_49 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  a = clamp(x_45, x_47, x_49);
+  int const x_51 = a;
+  int const x_53 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  int const x_55 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  float const x_58 = A1.arr[clamp(x_51, x_53, x_55)];
+  b = x_58;
+  float const x_59 = b;
+  int const x_61 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  float const x_63 = A1.arr[x_61];
+  if ((x_59 < x_63)) {
+    float const x_69 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_71 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    x_36 = (x_69 > x_71);
+  } else {
+    float const x_74 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    int const x_76 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_78 = A1.arr[x_76];
+    x_36 = (x_74 < x_78);
+  }
+  bool const x_80 = x_36;
+  c = x_80;
+  bool const x_81 = c;
+  if (x_81) {
+    int const x_86 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_89 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_92 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_95 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_86), float(x_89), float(x_92), float(x_95));
+  } else {
+    float const x_99 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_5) = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5e0a897
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,186 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 121
+; Schema: 0
+               OpCapability Shader
+         %58 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %A1 "A1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_36 "x_36"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_arr_float_uint_3_0 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3_0 = OpTypePointer Function %_arr_float_uint_3_0
+         %26 = OpConstantNull %_arr_float_uint_3_0
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %32 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %109 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %A1 = OpVariable %_ptr_Function__arr_float_uint_3_0 Function %26
+          %a = OpVariable %_ptr_Function_int Function %29
+          %b = OpVariable %_ptr_Function_float Function %32
+          %c = OpVariable %_ptr_Function_bool Function %36
+       %x_36 = OpVariable %_ptr_Function_bool Function %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %45 = OpLoad %float %44
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %49 = OpCompositeConstruct %_arr_float_uint_3_0 %42 %45 %48
+               OpStore %A1 %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpExtInst %int %58 SClamp %52 %54 %56
+               OpStore %a %57
+         %59 = OpLoad %int %a
+         %60 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpExtInst %int %58 SClamp %59 %61 %63
+         %65 = OpAccessChain %_ptr_Function_float %A1 %64
+         %66 = OpLoad %float %65
+               OpStore %b %66
+         %67 = OpLoad %float %b
+         %68 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Function_float %A1 %69
+         %71 = OpLoad %float %70
+         %72 = OpFOrdLessThan %bool %67 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %79 = OpLoad %float %78
+         %80 = OpFOrdGreaterThan %bool %77 %79
+               OpStore %x_36 %80
+               OpBranch %73
+         %75 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Function_float %A1 %84
+         %86 = OpLoad %float %85
+         %87 = OpFOrdLessThan %bool %82 %86
+               OpStore %x_36 %87
+               OpBranch %73
+         %73 = OpLabel
+         %88 = OpLoad %bool %x_36
+               OpStore %c %88
+         %89 = OpLoad %bool %c
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %94
+        %102 = OpConvertSToF %float %96
+        %103 = OpConvertSToF %float %98
+        %104 = OpConvertSToF %float %100
+        %105 = OpCompositeConstruct %v4float %101 %102 %103 %104
+               OpStore %x_GLF_color %105
+               OpBranch %90
+         %92 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %107 = OpLoad %float %106
+        %108 = OpCompositeConstruct %v4float %107 %107 %107 %107
+               OpStore %x_GLF_color %108
+               OpBranch %90
+         %90 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %109
+%tint_symbol = OpFunctionParameter %main_out
+        %113 = OpLabel
+        %114 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %114
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %116 = OpLabel
+        %117 = OpFunctionCall %void %main_1
+        %119 = OpLoad %v4float %x_GLF_color
+        %120 = OpCompositeConstruct %main_out %119
+        %118 = OpFunctionCall %void %tint_symbol_2 %120
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f6f65a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A1 : array<f32, 3>;
+  var a : i32;
+  var b : f32;
+  var c : bool;
+  var x_36 : bool;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[1];
+  A1 = array<f32, 3>(x_38, x_40, x_42);
+  let x_45 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_47 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_49 : i32 = x_9.x_GLF_uniform_int_values[1];
+  a = clamp(x_45, x_47, x_49);
+  let x_51 : i32 = a;
+  let x_53 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_55 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_58 : f32 = A1[clamp(x_51, x_53, x_55)];
+  b = x_58;
+  let x_59 : f32 = b;
+  let x_61 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_63 : f32 = A1[x_61];
+  if ((x_59 < x_63)) {
+    let x_69 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_71 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_36 = (x_69 > x_71);
+  } else {
+    let x_74 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_76 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_78 : f32 = A1[x_76];
+    x_36 = (x_74 < x_78);
+  }
+  let x_80 : bool = x_36;
+  c = x_80;
+  let x_81 : bool = c;
+  if (x_81) {
+    let x_86 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_89 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_92 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_95 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_86), f32(x_89), f32(x_92), f32(x_95));
+  } else {
+    let x_99 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm
new file mode 100644
index 0000000..0d7bd95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm
@@ -0,0 +1,128 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+       %bool = OpTypeBool
+    %v3float = OpTypeVector %float 3
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %v3uint = OpTypeVector %uint 3
+         %28 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_2
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %34 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+          %i = OpVariable %_ptr_Function_int Function
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %36 = OpLoad %int %35
+         %37 = OpConvertSToF %float %36
+         %38 = OpCompositeConstruct %v4float %37 %37 %37 %37
+               OpStore %v %38
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %40 = OpLoad %int %39
+               OpStore %i %40
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %47 = OpLoad %int %46
+         %48 = OpSLessThan %bool %45 %47
+               OpBranchConditional %48 %49 %42
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpLoad %int %i
+         %52 = OpConvertSToF %float %51
+         %53 = OpVectorExtractDynamic %uint %28 %50
+         %54 = OpAccessChain %_ptr_Function_float %v %53
+               OpStore %54 %52
+               OpBranch %43
+         %43 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpIAdd %int %55 %int_1
+               OpStore %i %56
+               OpBranch %41
+         %42 = OpLabel
+         %57 = OpLoad %v4float %v
+         %58 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpCompositeConstruct %v4float %60 %63 %66 %69
+         %71 = OpFOrdEqual %v4bool %57 %70
+         %72 = OpAll %bool %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %83
+         %85 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpCompositeConstruct %v4float %78 %81 %84 %87
+               OpStore %_GLF_color %88
+               OpBranch %73
+         %75 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %90
+         %92 = OpCompositeConstruct %v4float %91 %91 %91 %91
+               OpStore %_GLF_color %92
+               OpBranch %73
+         %73 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a8ef20d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,66 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  const int x_36 = asint(x_6[3].x);
+  const float x_37 = float(x_36);
+  v = float4(x_37, x_37, x_37, x_37);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  i = x_40;
+  while (true) {
+    const int x_45 = i;
+    const int x_47 = asint(x_6[3].x);
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    set_float4(v, uint3(0u, 1u, 2u)[i], float(i));
+    {
+      i = (i + 1);
+    }
+  }
+  const float4 x_57 = v;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_59 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_62 = asint(x_6[1].x);
+  const int x_65 = asint(x_6[2].x);
+  const int x_68 = asint(x_6[3].x);
+  if (all((x_57 == float4(float(x_59), float(x_62), float(x_65), float(x_68))))) {
+    const int x_77 = asint(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_80 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_83 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_86 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_77), float(x_80), float(x_83), float(x_86));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_90 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_91 = float(x_90);
+    x_GLF_color = float4(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3d744a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,70 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  int i = 0;
+  int const x_36 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  float const x_37 = float(x_36);
+  v = float4(x_37, x_37, x_37, x_37);
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i = x_40;
+  while (true) {
+    int const x_45 = i;
+    int const x_47 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    int const x_51 = i;
+    v[uint3(0u, 1u, 2u)[x_50]] = float(x_51);
+    {
+      int const x_55 = i;
+      i = (x_55 + 1);
+    }
+  }
+  float4 const x_57 = v;
+  int const x_59 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_65 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_68 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  if (all((x_57 == float4(float(x_59), float(x_62), float(x_65), float(x_68))))) {
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_80 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_83 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_86 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_77), float(x_80), float(x_83), float(x_86));
+  } else {
+    int const x_90 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_91 = float(x_90);
+    *(tint_symbol_4) = float4(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..72cbcba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,164 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 109
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+         %51 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_2
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+     %v4bool = OpTypeVector %bool 4
+   %main_out = OpTypeStruct %v4float
+         %97 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %12
+          %i = OpVariable %_ptr_Function_int Function %23
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %28 = OpLoad %int %27
+         %29 = OpConvertSToF %float %28
+         %30 = OpCompositeConstruct %v4float %29 %29 %29 %29
+               OpStore %v %30
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %33 = OpLoad %int %32
+               OpStore %i %33
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %38 %40
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %35
+         %43 = OpLabel
+         %46 = OpLoad %int %i
+         %47 = OpLoad %int %i
+         %52 = OpVectorExtractDynamic %uint %51 %46
+         %54 = OpAccessChain %_ptr_Function_float %v %52
+         %55 = OpConvertSToF %float %47
+               OpStore %54 %55
+               OpBranch %36
+         %36 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpIAdd %int %56 %int_1
+               OpStore %i %58
+               OpBranch %34
+         %35 = OpLabel
+         %59 = OpLoad %v4float %v
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %68 = OpLoad %int %67
+         %70 = OpConvertSToF %float %61
+         %71 = OpConvertSToF %float %63
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+         %75 = OpFOrdEqual %v4bool %59 %74
+         %69 = OpAll %bool %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %69 %78 %79
+         %78 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %81
+         %89 = OpConvertSToF %float %83
+         %90 = OpConvertSToF %float %85
+         %91 = OpConvertSToF %float %87
+         %92 = OpCompositeConstruct %v4float %88 %89 %90 %91
+               OpStore %x_GLF_color %92
+               OpBranch %77
+         %79 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpCompositeConstruct %v4float %95 %95 %95 %95
+               OpStore %x_GLF_color %96
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %97
+%tint_symbol = OpFunctionParameter %main_out
+        %101 = OpLabel
+        %102 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %102
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %104 = OpLabel
+        %105 = OpFunctionCall %void %main_1
+        %107 = OpLoad %v4float %x_GLF_color
+        %108 = OpCompositeConstruct %main_out %107
+        %106 = OpFunctionCall %void %tint_symbol_2 %108
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f495ad7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,64 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var i : i32;
+  let x_36 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_37 : f32 = f32(x_36);
+  v = vec4<f32>(x_37, x_37, x_37, x_37);
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = x_40;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[3];
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_51 : i32 = i;
+    v[vec3<u32>(0u, 1u, 2u)[x_50]] = f32(x_51);
+
+    continuing {
+      let x_55 : i32 = i;
+      i = (x_55 + 1);
+    }
+  }
+  let x_57 : vec4<f32> = v;
+  let x_59 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_65 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_68 : i32 = x_6.x_GLF_uniform_int_values[3];
+  if (all((x_57 == vec4<f32>(f32(x_59), f32(x_62), f32(x_65), f32(x_68))))) {
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_83 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_86 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_77), f32(x_80), f32(x_83), f32(x_86));
+  } else {
+    let x_90 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_91 : f32 = f32(x_90);
+    x_GLF_color = vec4<f32>(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
new file mode 100644
index 0000000..f495ad7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
@@ -0,0 +1,64 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var i : i32;
+  let x_36 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_37 : f32 = f32(x_36);
+  v = vec4<f32>(x_37, x_37, x_37, x_37);
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = x_40;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[3];
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_51 : i32 = i;
+    v[vec3<u32>(0u, 1u, 2u)[x_50]] = f32(x_51);
+
+    continuing {
+      let x_55 : i32 = i;
+      i = (x_55 + 1);
+    }
+  }
+  let x_57 : vec4<f32> = v;
+  let x_59 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_65 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_68 : i32 = x_6.x_GLF_uniform_int_values[3];
+  if (all((x_57 == vec4<f32>(f32(x_59), f32(x_62), f32(x_65), f32(x_68))))) {
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_83 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_86 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_77), f32(x_80), f32(x_83), f32(x_86));
+  } else {
+    let x_90 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_91 : f32 = f32(x_90);
+    x_GLF_color = vec4<f32>(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a8ef20d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,66 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  const int x_36 = asint(x_6[3].x);
+  const float x_37 = float(x_36);
+  v = float4(x_37, x_37, x_37, x_37);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  i = x_40;
+  while (true) {
+    const int x_45 = i;
+    const int x_47 = asint(x_6[3].x);
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    set_float4(v, uint3(0u, 1u, 2u)[i], float(i));
+    {
+      i = (i + 1);
+    }
+  }
+  const float4 x_57 = v;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_59 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_62 = asint(x_6[1].x);
+  const int x_65 = asint(x_6[2].x);
+  const int x_68 = asint(x_6[3].x);
+  if (all((x_57 == float4(float(x_59), float(x_62), float(x_65), float(x_68))))) {
+    const int x_77 = asint(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_80 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_83 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_86 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_77), float(x_80), float(x_83), float(x_86));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_90 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_91 = float(x_90);
+    x_GLF_color = float4(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3d744a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,70 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  int i = 0;
+  int const x_36 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  float const x_37 = float(x_36);
+  v = float4(x_37, x_37, x_37, x_37);
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i = x_40;
+  while (true) {
+    int const x_45 = i;
+    int const x_47 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    int const x_51 = i;
+    v[uint3(0u, 1u, 2u)[x_50]] = float(x_51);
+    {
+      int const x_55 = i;
+      i = (x_55 + 1);
+    }
+  }
+  float4 const x_57 = v;
+  int const x_59 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_65 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_68 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  if (all((x_57 == float4(float(x_59), float(x_62), float(x_65), float(x_68))))) {
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_80 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_83 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_86 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_77), float(x_80), float(x_83), float(x_86));
+  } else {
+    int const x_90 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_91 = float(x_90);
+    *(tint_symbol_4) = float4(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..72cbcba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,164 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 109
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+         %51 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_2
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+     %v4bool = OpTypeVector %bool 4
+   %main_out = OpTypeStruct %v4float
+         %97 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %12
+          %i = OpVariable %_ptr_Function_int Function %23
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %28 = OpLoad %int %27
+         %29 = OpConvertSToF %float %28
+         %30 = OpCompositeConstruct %v4float %29 %29 %29 %29
+               OpStore %v %30
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %33 = OpLoad %int %32
+               OpStore %i %33
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %38 %40
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %35
+         %43 = OpLabel
+         %46 = OpLoad %int %i
+         %47 = OpLoad %int %i
+         %52 = OpVectorExtractDynamic %uint %51 %46
+         %54 = OpAccessChain %_ptr_Function_float %v %52
+         %55 = OpConvertSToF %float %47
+               OpStore %54 %55
+               OpBranch %36
+         %36 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpIAdd %int %56 %int_1
+               OpStore %i %58
+               OpBranch %34
+         %35 = OpLabel
+         %59 = OpLoad %v4float %v
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %68 = OpLoad %int %67
+         %70 = OpConvertSToF %float %61
+         %71 = OpConvertSToF %float %63
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+         %75 = OpFOrdEqual %v4bool %59 %74
+         %69 = OpAll %bool %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %69 %78 %79
+         %78 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %81
+         %89 = OpConvertSToF %float %83
+         %90 = OpConvertSToF %float %85
+         %91 = OpConvertSToF %float %87
+         %92 = OpCompositeConstruct %v4float %88 %89 %90 %91
+               OpStore %x_GLF_color %92
+               OpBranch %77
+         %79 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpCompositeConstruct %v4float %95 %95 %95 %95
+               OpStore %x_GLF_color %96
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %97
+%tint_symbol = OpFunctionParameter %main_out
+        %101 = OpLabel
+        %102 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %102
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %104 = OpLabel
+        %105 = OpFunctionCall %void %main_1
+        %107 = OpLoad %v4float %x_GLF_color
+        %108 = OpCompositeConstruct %main_out %107
+        %106 = OpFunctionCall %void %tint_symbol_2 %108
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f495ad7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,64 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var i : i32;
+  let x_36 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_37 : f32 = f32(x_36);
+  v = vec4<f32>(x_37, x_37, x_37, x_37);
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = x_40;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[3];
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_51 : i32 = i;
+    v[vec3<u32>(0u, 1u, 2u)[x_50]] = f32(x_51);
+
+    continuing {
+      let x_55 : i32 = i;
+      i = (x_55 + 1);
+    }
+  }
+  let x_57 : vec4<f32> = v;
+  let x_59 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_65 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_68 : i32 = x_6.x_GLF_uniform_int_values[3];
+  if (all((x_57 == vec4<f32>(f32(x_59), f32(x_62), f32(x_65), f32(x_68))))) {
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_83 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_86 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_77), f32(x_80), f32(x_83), f32(x_86));
+  } else {
+    let x_90 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_91 : f32 = f32(x_90);
+    x_GLF_color = vec4<f32>(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm
new file mode 100644
index 0000000..2e8e153
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm
@@ -0,0 +1,163 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_f1_ "func(f1;"
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %24 = OpTypeFunction %float %_ptr_Function_float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %v4bool = OpTypeVector %bool 4
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %21
+         %42 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %44 = OpLoad %float %43
+               OpStore %param %44
+         %45 = OpFunctionCall %float %func_f1_ %param
+               OpStore %a %45
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %49 = OpLoad %float %48
+         %50 = OpFAdd %float %47 %49
+               OpStore %param_0 %50
+         %51 = OpFunctionCall %float %func_f1_ %param_0
+         %52 = OpLoad %float %a
+         %53 = OpFAdd %float %52 %51
+               OpStore %a %53
+         %54 = OpLoad %float %a
+         %55 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %56 = OpLoad %float %55
+         %57 = OpFOrdEqual %bool %54 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpLoad %v4float %_GLF_color
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpCompositeConstruct %v4float %62 %64 %66 %68
+         %70 = OpFOrdEqual %v4bool %60 %69
+         %71 = OpAll %bool %70
+               OpBranch %58
+         %58 = OpLabel
+         %72 = OpPhi %bool %57 %42 %71 %59
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %15 = OpLoad %int %76
+         %77 = OpConvertSToF %float %15
+         %78 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %16 = OpLoad %int %78
+         %79 = OpConvertSToF %float %16
+         %80 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %17 = OpLoad %int %80
+         %81 = OpConvertSToF %float %17
+         %82 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %18 = OpLoad %int %82
+         %83 = OpConvertSToF %float %18
+         %84 = OpCompositeConstruct %v4float %77 %79 %81 %83
+               OpStore %_GLF_color %84
+               OpBranch %73
+         %75 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %19 = OpLoad %int %85
+         %86 = OpConvertSToF %float %19
+         %87 = OpCompositeConstruct %v4float %86 %86 %86 %86
+               OpStore %_GLF_color %87
+               OpBranch %73
+         %73 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_f1_ = OpFunction %float None %24
+          %b = OpFunctionParameter %_ptr_Function_float
+         %88 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %92 = OpLoad %float %91
+         %93 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %94 = OpLoad %float %93
+         %95 = OpCompositeConstruct %v4float %90 %92 %94 %float_1
+               OpStore %_GLF_color %95
+         %96 = OpLoad %v4float %_GLF_color
+               OpStore %_GLF_color %96
+         %97 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %98 = OpLoad %float %97
+         %99 = OpLoad %float %b
+        %100 = OpFOrdGreaterThanEqual %bool %98 %99
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %104 = OpLoad %float %103
+               OpReturnValue %104
+        %101 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+        %106 = OpLoad %float %105
+               OpReturnValue %106
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..4152b78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,91 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[4];
+};
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[2];
+};
+
+float func_f1_(inout float b) {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_90 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_92 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_94 = asfloat(x_7[1].x);
+  x_GLF_color = float4(x_90, x_92, x_94, 1.0f);
+  x_GLF_color = x_GLF_color;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_98 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_99 = b;
+  if ((x_98 >= x_99)) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_104 = asfloat(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    return x_104;
+  }
+  const float x_106 = asfloat(x_7[2].x);
+  return x_106;
+}
+
+void main_1() {
+  float a = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  bool x_71 = false;
+  bool x_72_phi = false;
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  param = x_44;
+  const float x_45 = func_f1_(param);
+  a = x_45;
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const float x_49 = asfloat(x_7[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  param_1 = (x_47 + x_49);
+  const float x_51 = func_f1_(param_1);
+  a = (a + x_51);
+  const float x_54 = a;
+  const float x_56 = asfloat(x_7[3].x);
+  const bool x_57 = (x_54 == x_56);
+  x_72_phi = x_57;
+  if (x_57) {
+    const float4 x_60 = x_GLF_color;
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const float x_62 = asfloat(x_7[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_7[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    const float x_66 = asfloat(x_7[1].x);
+    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_7[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+    x_71 = all((x_60 == float4(x_62, x_64, x_66, x_68)));
+    x_72_phi = x_71;
+  }
+  if (x_72_phi) {
+    const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+    const int x_15 = asint(x_12[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+    const int x_16 = asint(x_12[1].x);
+    const int x_17 = asint(x_12[1].x);
+    const uint scalar_offset_11 = ((16u * uint(0))) / 4;
+    const int x_18 = asint(x_12[scalar_offset_11 / 4][scalar_offset_11 % 4]);
+    x_GLF_color = float4(float(x_15), float(x_16), float(x_17), float(x_18));
+  } else {
+    const int x_19 = asint(x_12[1].x);
+    const float x_86 = float(x_19);
+    x_GLF_color = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3242c11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.msl
@@ -0,0 +1,99 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_f1_(constant buf1& x_7, thread float* const b, thread float4* const tint_symbol_4) {
+  float const x_90 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_92 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_94 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_4) = float4(x_90, x_92, x_94, 1.0f);
+  float4 const x_96 = *(tint_symbol_4);
+  *(tint_symbol_4) = x_96;
+  float const x_98 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_99 = *(b);
+  if ((x_98 >= x_99)) {
+    float const x_104 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    return x_104;
+  }
+  float const x_106 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  return x_106;
+}
+
+void main_1(constant buf1& x_7, constant buf0& x_12, thread float4* const tint_symbol_5) {
+  float a = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  bool x_71 = false;
+  bool x_72_phi = false;
+  float const x_44 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  param = x_44;
+  float const x_45 = func_f1_(x_7, &(param), tint_symbol_5);
+  a = x_45;
+  float const x_47 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_49 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  param_1 = (x_47 + x_49);
+  float const x_51 = func_f1_(x_7, &(param_1), tint_symbol_5);
+  float const x_52 = a;
+  a = (x_52 + x_51);
+  float const x_54 = a;
+  float const x_56 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  bool const x_57 = (x_54 == x_56);
+  x_72_phi = x_57;
+  if (x_57) {
+    float4 const x_60 = *(tint_symbol_5);
+    float const x_62 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_64 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_66 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    float const x_68 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    x_71 = all((x_60 == float4(x_62, x_64, x_66, x_68)));
+    x_72_phi = x_71;
+  }
+  bool const x_72 = x_72_phi;
+  if (x_72) {
+    int const x_15 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    int const x_16 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    int const x_17 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    int const x_18 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_15), float(x_16), float(x_17), float(x_18));
+  } else {
+    int const x_19 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    float const x_86 = float(x_19);
+    *(tint_symbol_5) = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, x_12, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..862ad1a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,201 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_f1_ "func_f1_"
+               OpName %b "b"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %x_71 "x_71"
+               OpName %x_72_phi "x_72_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpTypeFunction %float %_ptr_Function_float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %51 = OpTypeFunction %void
+         %56 = OpConstantNull %float
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %61 = OpConstantNull %bool
+      %int_3 = OpConstant %int 3
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %float None %20
+          %b = OpFunctionParameter %_ptr_Function_float
+         %24 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %29 = OpLoad %float %28
+         %30 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %31 = OpLoad %float %30
+         %33 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %34 = OpLoad %float %33
+         %36 = OpCompositeConstruct %v4float %29 %31 %34 %float_1
+               OpStore %x_GLF_color %36
+         %37 = OpLoad %v4float %x_GLF_color
+               OpStore %x_GLF_color %37
+         %38 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %41 = OpLoad %float %b
+         %42 = OpFOrdGreaterThanEqual %bool %39 %41
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %47 = OpLoad %float %46
+               OpReturnValue %47
+         %44 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %50 = OpLoad %float %49
+               OpReturnValue %50
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %51
+         %54 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %56
+      %param = OpVariable %_ptr_Function_float Function %56
+    %param_1 = OpVariable %_ptr_Function_float Function %56
+       %x_71 = OpVariable %_ptr_Function_bool Function %61
+   %x_72_phi = OpVariable %_ptr_Function_bool Function %61
+         %63 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %64 = OpLoad %float %63
+               OpStore %param %64
+         %65 = OpFunctionCall %float %func_f1_ %param
+               OpStore %a %65
+         %67 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %70 = OpLoad %float %69
+         %71 = OpFAdd %float %68 %70
+               OpStore %param_1 %71
+         %72 = OpFunctionCall %float %func_f1_ %param_1
+         %74 = OpLoad %float %a
+         %75 = OpFAdd %float %74 %72
+               OpStore %a %75
+         %76 = OpLoad %float %a
+         %78 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+         %79 = OpLoad %float %78
+         %80 = OpFOrdEqual %bool %76 %79
+               OpStore %x_72_phi %80
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+         %83 = OpLoad %v4float %x_GLF_color
+         %84 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %91 = OpLoad %float %90
+         %93 = OpCompositeConstruct %v4float %85 %87 %89 %91
+         %94 = OpFOrdEqual %v4bool %83 %93
+         %92 = OpAll %bool %94
+               OpStore %x_71 %92
+         %96 = OpLoad %bool %x_71
+               OpStore %x_72_phi %96
+               OpBranch %81
+         %81 = OpLabel
+         %97 = OpLoad %bool %x_72_phi
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %100
+         %99 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %103
+        %111 = OpConvertSToF %float %105
+        %112 = OpConvertSToF %float %107
+        %113 = OpConvertSToF %float %109
+        %114 = OpCompositeConstruct %v4float %110 %111 %112 %113
+               OpStore %x_GLF_color %114
+               OpBranch %98
+        %100 = OpLabel
+        %115 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %117 %117 %117 %117
+               OpStore %x_GLF_color %118
+               OpBranch %98
+         %98 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %51
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f0938fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,91 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+fn func_f1_(b : ptr<function, f32>) -> f32 {
+  let x_90 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_92 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_94 : f32 = x_7.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_90, x_92, x_94, 1.0);
+  let x_96 : vec4<f32> = x_GLF_color;
+  x_GLF_color = x_96;
+  let x_98 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_99 : f32 = *(b);
+  if ((x_98 >= x_99)) {
+    let x_104 : f32 = x_7.x_GLF_uniform_float_values[0];
+    return x_104;
+  }
+  let x_106 : f32 = x_7.x_GLF_uniform_float_values[2];
+  return x_106;
+}
+
+fn main_1() {
+  var a : f32;
+  var param : f32;
+  var param_1 : f32;
+  var x_71 : bool;
+  var x_72_phi : bool;
+  let x_44 : f32 = x_7.x_GLF_uniform_float_values[0];
+  param = x_44;
+  let x_45 : f32 = func_f1_(&(param));
+  a = x_45;
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_49 : f32 = x_7.x_GLF_uniform_float_values[0];
+  param_1 = (x_47 + x_49);
+  let x_51 : f32 = func_f1_(&(param_1));
+  let x_52 : f32 = a;
+  a = (x_52 + x_51);
+  let x_54 : f32 = a;
+  let x_56 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_57 : bool = (x_54 == x_56);
+  x_72_phi = x_57;
+  if (x_57) {
+    let x_60 : vec4<f32> = x_GLF_color;
+    let x_62 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_64 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_66 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_68 : f32 = x_7.x_GLF_uniform_float_values[0];
+    x_71 = all((x_60 == vec4<f32>(x_62, x_64, x_66, x_68)));
+    x_72_phi = x_71;
+  }
+  let x_72 : bool = x_72_phi;
+  if (x_72) {
+    let x_15 : i32 = x_12.x_GLF_uniform_int_values[0];
+    let x_16 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_17 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_18 : i32 = x_12.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_15), f32(x_16), f32(x_17), f32(x_18));
+  } else {
+    let x_19 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_19);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
new file mode 100644
index 0000000..f0938fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
@@ -0,0 +1,91 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+fn func_f1_(b : ptr<function, f32>) -> f32 {
+  let x_90 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_92 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_94 : f32 = x_7.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_90, x_92, x_94, 1.0);
+  let x_96 : vec4<f32> = x_GLF_color;
+  x_GLF_color = x_96;
+  let x_98 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_99 : f32 = *(b);
+  if ((x_98 >= x_99)) {
+    let x_104 : f32 = x_7.x_GLF_uniform_float_values[0];
+    return x_104;
+  }
+  let x_106 : f32 = x_7.x_GLF_uniform_float_values[2];
+  return x_106;
+}
+
+fn main_1() {
+  var a : f32;
+  var param : f32;
+  var param_1 : f32;
+  var x_71 : bool;
+  var x_72_phi : bool;
+  let x_44 : f32 = x_7.x_GLF_uniform_float_values[0];
+  param = x_44;
+  let x_45 : f32 = func_f1_(&(param));
+  a = x_45;
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_49 : f32 = x_7.x_GLF_uniform_float_values[0];
+  param_1 = (x_47 + x_49);
+  let x_51 : f32 = func_f1_(&(param_1));
+  let x_52 : f32 = a;
+  a = (x_52 + x_51);
+  let x_54 : f32 = a;
+  let x_56 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_57 : bool = (x_54 == x_56);
+  x_72_phi = x_57;
+  if (x_57) {
+    let x_60 : vec4<f32> = x_GLF_color;
+    let x_62 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_64 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_66 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_68 : f32 = x_7.x_GLF_uniform_float_values[0];
+    x_71 = all((x_60 == vec4<f32>(x_62, x_64, x_66, x_68)));
+    x_72_phi = x_71;
+  }
+  let x_72 : bool = x_72_phi;
+  if (x_72) {
+    let x_15 : i32 = x_12.x_GLF_uniform_int_values[0];
+    let x_16 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_17 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_18 : i32 = x_12.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_15), f32(x_16), f32(x_17), f32(x_18));
+  } else {
+    let x_19 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_19);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4152b78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,91 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[4];
+};
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[2];
+};
+
+float func_f1_(inout float b) {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_90 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_92 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_94 = asfloat(x_7[1].x);
+  x_GLF_color = float4(x_90, x_92, x_94, 1.0f);
+  x_GLF_color = x_GLF_color;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_98 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_99 = b;
+  if ((x_98 >= x_99)) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_104 = asfloat(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    return x_104;
+  }
+  const float x_106 = asfloat(x_7[2].x);
+  return x_106;
+}
+
+void main_1() {
+  float a = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  bool x_71 = false;
+  bool x_72_phi = false;
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  param = x_44;
+  const float x_45 = func_f1_(param);
+  a = x_45;
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const float x_49 = asfloat(x_7[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  param_1 = (x_47 + x_49);
+  const float x_51 = func_f1_(param_1);
+  a = (a + x_51);
+  const float x_54 = a;
+  const float x_56 = asfloat(x_7[3].x);
+  const bool x_57 = (x_54 == x_56);
+  x_72_phi = x_57;
+  if (x_57) {
+    const float4 x_60 = x_GLF_color;
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const float x_62 = asfloat(x_7[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_7[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    const float x_66 = asfloat(x_7[1].x);
+    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_7[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+    x_71 = all((x_60 == float4(x_62, x_64, x_66, x_68)));
+    x_72_phi = x_71;
+  }
+  if (x_72_phi) {
+    const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+    const int x_15 = asint(x_12[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+    const int x_16 = asint(x_12[1].x);
+    const int x_17 = asint(x_12[1].x);
+    const uint scalar_offset_11 = ((16u * uint(0))) / 4;
+    const int x_18 = asint(x_12[scalar_offset_11 / 4][scalar_offset_11 % 4]);
+    x_GLF_color = float4(float(x_15), float(x_16), float(x_17), float(x_18));
+  } else {
+    const int x_19 = asint(x_12[1].x);
+    const float x_86 = float(x_19);
+    x_GLF_color = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3242c11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.msl
@@ -0,0 +1,99 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_f1_(constant buf1& x_7, thread float* const b, thread float4* const tint_symbol_4) {
+  float const x_90 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_92 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_94 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_4) = float4(x_90, x_92, x_94, 1.0f);
+  float4 const x_96 = *(tint_symbol_4);
+  *(tint_symbol_4) = x_96;
+  float const x_98 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_99 = *(b);
+  if ((x_98 >= x_99)) {
+    float const x_104 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    return x_104;
+  }
+  float const x_106 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  return x_106;
+}
+
+void main_1(constant buf1& x_7, constant buf0& x_12, thread float4* const tint_symbol_5) {
+  float a = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  bool x_71 = false;
+  bool x_72_phi = false;
+  float const x_44 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  param = x_44;
+  float const x_45 = func_f1_(x_7, &(param), tint_symbol_5);
+  a = x_45;
+  float const x_47 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_49 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  param_1 = (x_47 + x_49);
+  float const x_51 = func_f1_(x_7, &(param_1), tint_symbol_5);
+  float const x_52 = a;
+  a = (x_52 + x_51);
+  float const x_54 = a;
+  float const x_56 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  bool const x_57 = (x_54 == x_56);
+  x_72_phi = x_57;
+  if (x_57) {
+    float4 const x_60 = *(tint_symbol_5);
+    float const x_62 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_64 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_66 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    float const x_68 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    x_71 = all((x_60 == float4(x_62, x_64, x_66, x_68)));
+    x_72_phi = x_71;
+  }
+  bool const x_72 = x_72_phi;
+  if (x_72) {
+    int const x_15 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    int const x_16 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    int const x_17 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    int const x_18 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_15), float(x_16), float(x_17), float(x_18));
+  } else {
+    int const x_19 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    float const x_86 = float(x_19);
+    *(tint_symbol_5) = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, x_12, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..862ad1a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,201 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_f1_ "func_f1_"
+               OpName %b "b"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %x_71 "x_71"
+               OpName %x_72_phi "x_72_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpTypeFunction %float %_ptr_Function_float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %51 = OpTypeFunction %void
+         %56 = OpConstantNull %float
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %61 = OpConstantNull %bool
+      %int_3 = OpConstant %int 3
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %float None %20
+          %b = OpFunctionParameter %_ptr_Function_float
+         %24 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %29 = OpLoad %float %28
+         %30 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %31 = OpLoad %float %30
+         %33 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %34 = OpLoad %float %33
+         %36 = OpCompositeConstruct %v4float %29 %31 %34 %float_1
+               OpStore %x_GLF_color %36
+         %37 = OpLoad %v4float %x_GLF_color
+               OpStore %x_GLF_color %37
+         %38 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %41 = OpLoad %float %b
+         %42 = OpFOrdGreaterThanEqual %bool %39 %41
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %47 = OpLoad %float %46
+               OpReturnValue %47
+         %44 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %50 = OpLoad %float %49
+               OpReturnValue %50
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %51
+         %54 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %56
+      %param = OpVariable %_ptr_Function_float Function %56
+    %param_1 = OpVariable %_ptr_Function_float Function %56
+       %x_71 = OpVariable %_ptr_Function_bool Function %61
+   %x_72_phi = OpVariable %_ptr_Function_bool Function %61
+         %63 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %64 = OpLoad %float %63
+               OpStore %param %64
+         %65 = OpFunctionCall %float %func_f1_ %param
+               OpStore %a %65
+         %67 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %70 = OpLoad %float %69
+         %71 = OpFAdd %float %68 %70
+               OpStore %param_1 %71
+         %72 = OpFunctionCall %float %func_f1_ %param_1
+         %74 = OpLoad %float %a
+         %75 = OpFAdd %float %74 %72
+               OpStore %a %75
+         %76 = OpLoad %float %a
+         %78 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+         %79 = OpLoad %float %78
+         %80 = OpFOrdEqual %bool %76 %79
+               OpStore %x_72_phi %80
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+         %83 = OpLoad %v4float %x_GLF_color
+         %84 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %91 = OpLoad %float %90
+         %93 = OpCompositeConstruct %v4float %85 %87 %89 %91
+         %94 = OpFOrdEqual %v4bool %83 %93
+         %92 = OpAll %bool %94
+               OpStore %x_71 %92
+         %96 = OpLoad %bool %x_71
+               OpStore %x_72_phi %96
+               OpBranch %81
+         %81 = OpLabel
+         %97 = OpLoad %bool %x_72_phi
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %100
+         %99 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %103
+        %111 = OpConvertSToF %float %105
+        %112 = OpConvertSToF %float %107
+        %113 = OpConvertSToF %float %109
+        %114 = OpCompositeConstruct %v4float %110 %111 %112 %113
+               OpStore %x_GLF_color %114
+               OpBranch %98
+        %100 = OpLabel
+        %115 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %117 %117 %117 %117
+               OpStore %x_GLF_color %118
+               OpBranch %98
+         %98 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %51
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f0938fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,91 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+fn func_f1_(b : ptr<function, f32>) -> f32 {
+  let x_90 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_92 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_94 : f32 = x_7.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_90, x_92, x_94, 1.0);
+  let x_96 : vec4<f32> = x_GLF_color;
+  x_GLF_color = x_96;
+  let x_98 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_99 : f32 = *(b);
+  if ((x_98 >= x_99)) {
+    let x_104 : f32 = x_7.x_GLF_uniform_float_values[0];
+    return x_104;
+  }
+  let x_106 : f32 = x_7.x_GLF_uniform_float_values[2];
+  return x_106;
+}
+
+fn main_1() {
+  var a : f32;
+  var param : f32;
+  var param_1 : f32;
+  var x_71 : bool;
+  var x_72_phi : bool;
+  let x_44 : f32 = x_7.x_GLF_uniform_float_values[0];
+  param = x_44;
+  let x_45 : f32 = func_f1_(&(param));
+  a = x_45;
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_49 : f32 = x_7.x_GLF_uniform_float_values[0];
+  param_1 = (x_47 + x_49);
+  let x_51 : f32 = func_f1_(&(param_1));
+  let x_52 : f32 = a;
+  a = (x_52 + x_51);
+  let x_54 : f32 = a;
+  let x_56 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_57 : bool = (x_54 == x_56);
+  x_72_phi = x_57;
+  if (x_57) {
+    let x_60 : vec4<f32> = x_GLF_color;
+    let x_62 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_64 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_66 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_68 : f32 = x_7.x_GLF_uniform_float_values[0];
+    x_71 = all((x_60 == vec4<f32>(x_62, x_64, x_66, x_68)));
+    x_72_phi = x_71;
+  }
+  let x_72 : bool = x_72_phi;
+  if (x_72) {
+    let x_15 : i32 = x_12.x_GLF_uniform_int_values[0];
+    let x_16 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_17 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_18 : i32 = x_12.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_15), f32(x_16), f32(x_17), f32(x_18));
+  } else {
+    let x_19 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_19);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm
new file mode 100644
index 0000000..296caae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm
@@ -0,0 +1,90 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_0 = OpConstant %uint 0
+%_ptr_Output_float = OpTypePointer Output %float
+      %int_2 = OpConstant %int 2
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+       %main = OpFunction %void None %9
+         %28 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+         %29 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %30 = OpLoad %float %29
+               OpStore %a %30
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %32 = OpLoad %float %31
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %34 = OpLoad %float %33
+         %35 = OpFOrdGreaterThan %bool %32 %34
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpLoad %float %a
+         %41 = OpFAdd %float %40 %39
+               OpStore %a %41
+         %42 = OpLoad %float %a
+         %43 = OpCompositeConstruct %v4float %42 %42 %42 %42
+               OpStore %_GLF_color %43
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %47 = OpLoad %float %46
+         %48 = OpFOrdGreaterThan %bool %45 %47
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+         %51 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_0
+         %52 = OpLoad %float %51
+         %53 = OpLoad %float %a
+         %54 = OpFAdd %float %53 %52
+               OpStore %a %54
+         %55 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %56 = OpLoad %float %55
+         %57 = OpCompositeConstruct %v4float %56 %56 %56 %56
+               OpStore %_GLF_color %57
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %58 = OpLoad %float %a
+         %59 = OpCompositeConstruct %v4float %58 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %59
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..fdbd6e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  const float x_30 = asfloat(x_6[1].x);
+  a = x_30;
+  const float x_32 = asfloat(x_6[3].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_32 > x_34)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_39 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    a = (a + x_39);
+    const float x_42 = a;
+    x_GLF_color = float4(x_42, x_42, x_42, x_42);
+    const float x_45 = asfloat(x_6[3].x);
+    const float x_47 = asfloat(x_6[1].x);
+    if ((x_45 > x_47)) {
+      const float x_52 = x_GLF_color.x;
+      a = (a + x_52);
+      const float x_56 = asfloat(x_6[2].x);
+      x_GLF_color = float4(x_56, x_56, x_56, x_56);
+    }
+  }
+  x_GLF_color = float4(a, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b989bf7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float const x_30 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = x_30;
+  float const x_32 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_32 > x_34)) {
+    float const x_39 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_40 = a;
+    a = (x_40 + x_39);
+    float const x_42 = a;
+    *(tint_symbol_4) = float4(x_42, x_42, x_42, x_42);
+    float const x_45 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_47 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    if ((x_45 > x_47)) {
+      float const x_52 = (*(tint_symbol_4)).x;
+      float const x_53 = a;
+      a = (x_53 + x_52);
+      float const x_56 = x_6.x_GLF_uniform_float_values.arr[2].el;
+      *(tint_symbol_4) = float4(x_56, x_56, x_56, x_56);
+    }
+  }
+  float const x_58 = a;
+  *(tint_symbol_4) = float4(x_58, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..57160b2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,122 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_2 = OpConstant %int 2
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %63 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+         %25 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %26 = OpLoad %float %25
+               OpStore %a %26
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %29 = OpLoad %float %28
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %29 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpLoad %float %a
+         %40 = OpFAdd %float %39 %38
+               OpStore %a %40
+         %41 = OpLoad %float %a
+         %42 = OpCompositeConstruct %v4float %41 %41 %41 %41
+               OpStore %x_GLF_color %42
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %44 = OpLoad %float %43
+         %45 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %46 = OpLoad %float %45
+         %47 = OpFOrdGreaterThan %bool %44 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %51 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %52 = OpLoad %float %51
+         %53 = OpLoad %float %a
+         %54 = OpFAdd %float %53 %52
+               OpStore %a %54
+         %56 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %57 = OpLoad %float %56
+         %58 = OpCompositeConstruct %v4float %57 %57 %57 %57
+               OpStore %x_GLF_color %58
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+         %59 = OpLoad %float %a
+         %62 = OpCompositeConstruct %v4float %59 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %62
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %63
+%tint_symbol = OpFunctionParameter %main_out
+         %67 = OpLabel
+         %68 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %68
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3598a77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,48 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = x_30;
+  let x_32 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_32 > x_34)) {
+    let x_39 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_40 : f32 = a;
+    a = (x_40 + x_39);
+    let x_42 : f32 = a;
+    x_GLF_color = vec4<f32>(x_42, x_42, x_42, x_42);
+    let x_45 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_47 : f32 = x_6.x_GLF_uniform_float_values[1];
+    if ((x_45 > x_47)) {
+      let x_52 : f32 = x_GLF_color.x;
+      let x_53 : f32 = a;
+      a = (x_53 + x_52);
+      let x_56 : f32 = x_6.x_GLF_uniform_float_values[2];
+      x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+    }
+  }
+  let x_58 : f32 = a;
+  x_GLF_color = vec4<f32>(x_58, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
new file mode 100644
index 0000000..3598a77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
@@ -0,0 +1,48 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = x_30;
+  let x_32 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_32 > x_34)) {
+    let x_39 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_40 : f32 = a;
+    a = (x_40 + x_39);
+    let x_42 : f32 = a;
+    x_GLF_color = vec4<f32>(x_42, x_42, x_42, x_42);
+    let x_45 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_47 : f32 = x_6.x_GLF_uniform_float_values[1];
+    if ((x_45 > x_47)) {
+      let x_52 : f32 = x_GLF_color.x;
+      let x_53 : f32 = a;
+      a = (x_53 + x_52);
+      let x_56 : f32 = x_6.x_GLF_uniform_float_values[2];
+      x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+    }
+  }
+  let x_58 : f32 = a;
+  x_GLF_color = vec4<f32>(x_58, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..fdbd6e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  const float x_30 = asfloat(x_6[1].x);
+  a = x_30;
+  const float x_32 = asfloat(x_6[3].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_32 > x_34)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_39 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    a = (a + x_39);
+    const float x_42 = a;
+    x_GLF_color = float4(x_42, x_42, x_42, x_42);
+    const float x_45 = asfloat(x_6[3].x);
+    const float x_47 = asfloat(x_6[1].x);
+    if ((x_45 > x_47)) {
+      const float x_52 = x_GLF_color.x;
+      a = (a + x_52);
+      const float x_56 = asfloat(x_6[2].x);
+      x_GLF_color = float4(x_56, x_56, x_56, x_56);
+    }
+  }
+  x_GLF_color = float4(a, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b989bf7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float const x_30 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = x_30;
+  float const x_32 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_32 > x_34)) {
+    float const x_39 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_40 = a;
+    a = (x_40 + x_39);
+    float const x_42 = a;
+    *(tint_symbol_4) = float4(x_42, x_42, x_42, x_42);
+    float const x_45 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_47 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    if ((x_45 > x_47)) {
+      float const x_52 = (*(tint_symbol_4)).x;
+      float const x_53 = a;
+      a = (x_53 + x_52);
+      float const x_56 = x_6.x_GLF_uniform_float_values.arr[2].el;
+      *(tint_symbol_4) = float4(x_56, x_56, x_56, x_56);
+    }
+  }
+  float const x_58 = a;
+  *(tint_symbol_4) = float4(x_58, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..57160b2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,122 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_2 = OpConstant %int 2
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %63 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+         %25 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %26 = OpLoad %float %25
+               OpStore %a %26
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %29 = OpLoad %float %28
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %29 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpLoad %float %a
+         %40 = OpFAdd %float %39 %38
+               OpStore %a %40
+         %41 = OpLoad %float %a
+         %42 = OpCompositeConstruct %v4float %41 %41 %41 %41
+               OpStore %x_GLF_color %42
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %44 = OpLoad %float %43
+         %45 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %46 = OpLoad %float %45
+         %47 = OpFOrdGreaterThan %bool %44 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %51 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %52 = OpLoad %float %51
+         %53 = OpLoad %float %a
+         %54 = OpFAdd %float %53 %52
+               OpStore %a %54
+         %56 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %57 = OpLoad %float %56
+         %58 = OpCompositeConstruct %v4float %57 %57 %57 %57
+               OpStore %x_GLF_color %58
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+         %59 = OpLoad %float %a
+         %62 = OpCompositeConstruct %v4float %59 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %62
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %63
+%tint_symbol = OpFunctionParameter %main_out
+         %67 = OpLabel
+         %68 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %68
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3598a77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,48 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = x_30;
+  let x_32 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_32 > x_34)) {
+    let x_39 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_40 : f32 = a;
+    a = (x_40 + x_39);
+    let x_42 : f32 = a;
+    x_GLF_color = vec4<f32>(x_42, x_42, x_42, x_42);
+    let x_45 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_47 : f32 = x_6.x_GLF_uniform_float_values[1];
+    if ((x_45 > x_47)) {
+      let x_52 : f32 = x_GLF_color.x;
+      let x_53 : f32 = a;
+      a = (x_53 + x_52);
+      let x_56 : f32 = x_6.x_GLF_uniform_float_values[2];
+      x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+    }
+  }
+  let x_58 : f32 = a;
+  x_GLF_color = vec4<f32>(x_58, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm
new file mode 100644
index 0000000..8abfc55
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm
@@ -0,0 +1,103 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %25 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %29 = OpLoad %int %28
+         %30 = OpSNegate %int %29
+               OpStore %i %30
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %i
+         %36 = OpIAdd %int %35 %int_1
+               OpStore %i %36
+         %37 = OpBitReverse %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %39 = OpLoad %int %38
+         %40 = OpSLessThanEqual %bool %37 %39
+               OpBranchConditional %40 %41 %32
+         %41 = OpLabel
+         %42 = OpLoad %int %a
+         %43 = OpIAdd %int %42 %int_1
+               OpStore %a %43
+               OpBranch %33
+         %33 = OpLabel
+               OpBranch %31
+         %32 = OpLabel
+         %44 = OpLoad %int %a
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpIEqual %bool %44 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpCompositeConstruct %v4float %53 %56 %59 %62
+               OpStore %_GLF_color %63
+               OpBranch %48
+         %50 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %66 %66 %66 %66
+               OpStore %_GLF_color %67
+               OpBranch %48
+         %48 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..eacc3f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,52 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[1].x);
+  a = x_27;
+  const int x_29 = asint(x_6[3].x);
+  i = -(x_29);
+  while (true) {
+    const int x_36 = (i + 1);
+    i = x_36;
+    const int x_39 = asint(x_6[2].x);
+    if ((reversebits(x_36) <= x_39)) {
+    } else {
+      break;
+    }
+    a = (a + 1);
+  }
+  const int x_44 = a;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_46 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_44 == x_46)) {
+    const int x_52 = asint(x_6[2].x);
+    const int x_55 = asint(x_6[1].x);
+    const int x_58 = asint(x_6[1].x);
+    const int x_61 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_52), float(x_55), float(x_58), float(x_61));
+  } else {
+    const int x_65 = asint(x_6[1].x);
+    const float x_66 = float(x_65);
+    x_GLF_color = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f8f6e26
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_27;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  i = -(x_29);
+  while (true) {
+    int const x_35 = i;
+    int const x_36 = (x_35 + 1);
+    i = x_36;
+    int const x_39 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((reverse_bits(x_36) <= x_39)) {
+    } else {
+      break;
+    }
+    int const x_42 = a;
+    a = (x_42 + 1);
+  }
+  int const x_44 = a;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_44 == x_46)) {
+    int const x_52 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_55 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_52), float(x_55), float(x_58), float(x_61));
+  } else {
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_66 = float(x_65);
+    *(tint_symbol_4) = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9d357a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,141 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 86
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %30 = OpLoad %int %29
+         %31 = OpSNegate %int %30
+               OpStore %i %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %37 = OpIAdd %int %36 %int_1
+               OpStore %i %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %40 = OpLoad %int %39
+         %41 = OpBitReverse %int %37
+         %42 = OpSLessThanEqual %bool %41 %40
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %33
+         %44 = OpLabel
+         %47 = OpLoad %int %a
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %a %48
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+         %49 = OpLoad %int %a
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpIEqual %bool %49 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %58
+         %66 = OpConvertSToF %float %60
+         %67 = OpConvertSToF %float %62
+         %68 = OpConvertSToF %float %64
+         %69 = OpCompositeConstruct %v4float %65 %66 %67 %68
+               OpStore %x_GLF_color %69
+               OpBranch %54
+         %56 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpCompositeConstruct %v4float %72 %72 %72 %72
+               OpStore %x_GLF_color %73
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %74
+%tint_symbol = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %81 = OpLabel
+         %82 = OpFunctionCall %void %main_1
+         %84 = OpLoad %v4float %x_GLF_color
+         %85 = OpCompositeConstruct %main_out %84
+         %83 = OpFunctionCall %void %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e594013
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = -(x_29);
+  loop {
+    let x_35 : i32 = i;
+    let x_36 : i32 = (x_35 + 1);
+    i = x_36;
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((reverseBits(x_36) <= x_39)) {
+    } else {
+      break;
+    }
+    let x_42 : i32 = a;
+    a = (x_42 + 1);
+  }
+  let x_44 : i32 = a;
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_44 == x_46)) {
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_55 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_52), f32(x_55), f32(x_58), f32(x_61));
+  } else {
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : f32 = f32(x_65);
+    x_GLF_color = vec4<f32>(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
new file mode 100644
index 0000000..e594013
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = -(x_29);
+  loop {
+    let x_35 : i32 = i;
+    let x_36 : i32 = (x_35 + 1);
+    i = x_36;
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((reverseBits(x_36) <= x_39)) {
+    } else {
+      break;
+    }
+    let x_42 : i32 = a;
+    a = (x_42 + 1);
+  }
+  let x_44 : i32 = a;
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_44 == x_46)) {
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_55 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_52), f32(x_55), f32(x_58), f32(x_61));
+  } else {
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : f32 = f32(x_65);
+    x_GLF_color = vec4<f32>(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..eacc3f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,52 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[1].x);
+  a = x_27;
+  const int x_29 = asint(x_6[3].x);
+  i = -(x_29);
+  while (true) {
+    const int x_36 = (i + 1);
+    i = x_36;
+    const int x_39 = asint(x_6[2].x);
+    if ((reversebits(x_36) <= x_39)) {
+    } else {
+      break;
+    }
+    a = (a + 1);
+  }
+  const int x_44 = a;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_46 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_44 == x_46)) {
+    const int x_52 = asint(x_6[2].x);
+    const int x_55 = asint(x_6[1].x);
+    const int x_58 = asint(x_6[1].x);
+    const int x_61 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_52), float(x_55), float(x_58), float(x_61));
+  } else {
+    const int x_65 = asint(x_6[1].x);
+    const float x_66 = float(x_65);
+    x_GLF_color = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f8f6e26
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_27;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  i = -(x_29);
+  while (true) {
+    int const x_35 = i;
+    int const x_36 = (x_35 + 1);
+    i = x_36;
+    int const x_39 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((reverse_bits(x_36) <= x_39)) {
+    } else {
+      break;
+    }
+    int const x_42 = a;
+    a = (x_42 + 1);
+  }
+  int const x_44 = a;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_44 == x_46)) {
+    int const x_52 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_55 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_52), float(x_55), float(x_58), float(x_61));
+  } else {
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_66 = float(x_65);
+    *(tint_symbol_4) = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9d357a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,141 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 86
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %30 = OpLoad %int %29
+         %31 = OpSNegate %int %30
+               OpStore %i %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %37 = OpIAdd %int %36 %int_1
+               OpStore %i %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %40 = OpLoad %int %39
+         %41 = OpBitReverse %int %37
+         %42 = OpSLessThanEqual %bool %41 %40
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %33
+         %44 = OpLabel
+         %47 = OpLoad %int %a
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %a %48
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+         %49 = OpLoad %int %a
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpIEqual %bool %49 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %58
+         %66 = OpConvertSToF %float %60
+         %67 = OpConvertSToF %float %62
+         %68 = OpConvertSToF %float %64
+         %69 = OpCompositeConstruct %v4float %65 %66 %67 %68
+               OpStore %x_GLF_color %69
+               OpBranch %54
+         %56 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpCompositeConstruct %v4float %72 %72 %72 %72
+               OpStore %x_GLF_color %73
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %74
+%tint_symbol = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %81 = OpLabel
+         %82 = OpFunctionCall %void %main_1
+         %84 = OpLoad %v4float %x_GLF_color
+         %85 = OpCompositeConstruct %main_out %84
+         %83 = OpFunctionCall %void %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e594013
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = -(x_29);
+  loop {
+    let x_35 : i32 = i;
+    let x_36 : i32 = (x_35 + 1);
+    i = x_36;
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((reverseBits(x_36) <= x_39)) {
+    } else {
+      break;
+    }
+    let x_42 : i32 = a;
+    a = (x_42 + 1);
+  }
+  let x_44 : i32 = a;
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_44 == x_46)) {
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_55 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_52), f32(x_55), f32(x_58), f32(x_61));
+  } else {
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : f32 = f32(x_65);
+    x_GLF_color = vec4<f32>(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm
new file mode 100644
index 0000000..b9e06f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm
@@ -0,0 +1,106 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "ten"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "minusEight"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_5 = OpConstant %int 5
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+     %int_n4 = OpConstant %int -4
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %30 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %12
+         %31 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+               OpStore %b %int_0
+               OpStore %i %int_0
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %38 = OpLoad %int %37
+         %39 = OpSLessThan %bool %36 %38
+               OpBranchConditional %39 %40 %33
+         %40 = OpLabel
+         %41 = OpLoad %int %a
+         %42 = OpSGreaterThan %bool %41 %int_5
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %33
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %__0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpSDiv %int %46 %int_n4
+         %48 = OpLoad %int %a
+         %49 = OpIAdd %int %48 %47
+               OpStore %a %49
+         %50 = OpLoad %int %b
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %b %51
+               OpBranch %34
+         %34 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %32
+         %33 = OpLabel
+         %54 = OpLoad %int %b
+         %55 = OpIEqual %bool %54 %int_3
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %56
+         %58 = OpLabel
+               OpStore %_GLF_color %30
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..7c9249e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,53 @@
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  a = 0;
+  b = 0;
+  i = 0;
+  while (true) {
+    const int x_36 = i;
+    const int x_38 = asint(x_8[0].x);
+    if ((x_36 < x_38)) {
+    } else {
+      break;
+    }
+    if ((a > 5)) {
+      break;
+    }
+    const int x_46 = asint(x_10[0].x);
+    a = (a + (x_46 / -4));
+    b = (b + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  if ((b == 3)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..673c478
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ int ten;
+};
+struct buf0 {
+  /* 0x0000 */ int minusEight;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  a = 0;
+  b = 0;
+  i = 0;
+  while (true) {
+    int const x_36 = i;
+    int const x_38 = x_8.ten;
+    if ((x_36 < x_38)) {
+    } else {
+      break;
+    }
+    int const x_41 = a;
+    if ((x_41 > 5)) {
+      break;
+    }
+    int const x_46 = x_10.minusEight;
+    int const x_48 = a;
+    a = (x_48 + (x_46 / -4));
+    int const x_50 = b;
+    b = (x_50 + 1);
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  int const x_54 = b;
+  if ((x_54 == 3)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_8 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b50c135
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,146 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "ten"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "minusEight"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_5 = OpConstant %int 5
+     %int_n4 = OpConstant %int -4
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %64 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %65 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %66 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_0
+               OpStore %b %int_0
+               OpStore %i %int_0
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %29 = OpLoad %int %i
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %34 = OpLoad %int %33
+         %35 = OpSLessThan %bool %29 %34
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %26
+         %37 = OpLabel
+         %40 = OpLoad %int %a
+         %42 = OpSGreaterThan %bool %40 %int_5
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %26
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %46 = OpLoad %int %45
+         %47 = OpLoad %int %a
+         %49 = OpSDiv %int %46 %int_n4
+         %50 = OpIAdd %int %47 %49
+               OpStore %a %50
+         %51 = OpLoad %int %b
+         %53 = OpIAdd %int %51 %int_1
+               OpStore %b %53
+               OpBranch %27
+         %27 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %i %55
+               OpBranch %25
+         %26 = OpLabel
+         %56 = OpLoad %int %b
+         %58 = OpIEqual %bool %56 %int_3
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpStore %x_GLF_color %64
+               OpBranch %59
+         %61 = OpLabel
+               OpStore %x_GLF_color %65
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %66
+%tint_symbol = OpFunctionParameter %main_out
+         %70 = OpLabel
+         %71 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %71
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %73 = OpLabel
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_2 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7a99cd9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,64 @@
+[[block]]
+struct buf1 {
+  ten : i32;
+};
+
+[[block]]
+struct buf0 {
+  minusEight : i32;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  a = 0;
+  b = 0;
+  i = 0;
+  loop {
+    let x_36 : i32 = i;
+    let x_38 : i32 = x_8.ten;
+    if ((x_36 < x_38)) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = a;
+    if ((x_41 > 5)) {
+      break;
+    }
+    let x_46 : i32 = x_10.minusEight;
+    let x_48 : i32 = a;
+    a = (x_48 + (x_46 / -4));
+    let x_50 : i32 = b;
+    b = (x_50 + 1);
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_54 : i32 = b;
+  if ((x_54 == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
new file mode 100644
index 0000000..7a99cd9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
@@ -0,0 +1,64 @@
+[[block]]
+struct buf1 {
+  ten : i32;
+};
+
+[[block]]
+struct buf0 {
+  minusEight : i32;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  a = 0;
+  b = 0;
+  i = 0;
+  loop {
+    let x_36 : i32 = i;
+    let x_38 : i32 = x_8.ten;
+    if ((x_36 < x_38)) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = a;
+    if ((x_41 > 5)) {
+      break;
+    }
+    let x_46 : i32 = x_10.minusEight;
+    let x_48 : i32 = a;
+    a = (x_48 + (x_46 / -4));
+    let x_50 : i32 = b;
+    b = (x_50 + 1);
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_54 : i32 = b;
+  if ((x_54 == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7c9249e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,53 @@
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  a = 0;
+  b = 0;
+  i = 0;
+  while (true) {
+    const int x_36 = i;
+    const int x_38 = asint(x_8[0].x);
+    if ((x_36 < x_38)) {
+    } else {
+      break;
+    }
+    if ((a > 5)) {
+      break;
+    }
+    const int x_46 = asint(x_10[0].x);
+    a = (a + (x_46 / -4));
+    b = (b + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  if ((b == 3)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..673c478
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ int ten;
+};
+struct buf0 {
+  /* 0x0000 */ int minusEight;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  a = 0;
+  b = 0;
+  i = 0;
+  while (true) {
+    int const x_36 = i;
+    int const x_38 = x_8.ten;
+    if ((x_36 < x_38)) {
+    } else {
+      break;
+    }
+    int const x_41 = a;
+    if ((x_41 > 5)) {
+      break;
+    }
+    int const x_46 = x_10.minusEight;
+    int const x_48 = a;
+    a = (x_48 + (x_46 / -4));
+    int const x_50 = b;
+    b = (x_50 + 1);
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  int const x_54 = b;
+  if ((x_54 == 3)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_8 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b50c135
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,146 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "ten"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "minusEight"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_5 = OpConstant %int 5
+     %int_n4 = OpConstant %int -4
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %64 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %65 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %66 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_0
+               OpStore %b %int_0
+               OpStore %i %int_0
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %29 = OpLoad %int %i
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %34 = OpLoad %int %33
+         %35 = OpSLessThan %bool %29 %34
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %26
+         %37 = OpLabel
+         %40 = OpLoad %int %a
+         %42 = OpSGreaterThan %bool %40 %int_5
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %26
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %46 = OpLoad %int %45
+         %47 = OpLoad %int %a
+         %49 = OpSDiv %int %46 %int_n4
+         %50 = OpIAdd %int %47 %49
+               OpStore %a %50
+         %51 = OpLoad %int %b
+         %53 = OpIAdd %int %51 %int_1
+               OpStore %b %53
+               OpBranch %27
+         %27 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %i %55
+               OpBranch %25
+         %26 = OpLabel
+         %56 = OpLoad %int %b
+         %58 = OpIEqual %bool %56 %int_3
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpStore %x_GLF_color %64
+               OpBranch %59
+         %61 = OpLabel
+               OpStore %x_GLF_color %65
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %66
+%tint_symbol = OpFunctionParameter %main_out
+         %70 = OpLabel
+         %71 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %71
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %73 = OpLabel
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_2 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7a99cd9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,64 @@
+[[block]]
+struct buf1 {
+  ten : i32;
+};
+
+[[block]]
+struct buf0 {
+  minusEight : i32;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  a = 0;
+  b = 0;
+  i = 0;
+  loop {
+    let x_36 : i32 = i;
+    let x_38 : i32 = x_8.ten;
+    if ((x_36 < x_38)) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = a;
+    if ((x_41 > 5)) {
+      break;
+    }
+    let x_46 : i32 = x_10.minusEight;
+    let x_48 : i32 = a;
+    a = (x_48 + (x_46 / -4));
+    let x_50 : i32 = b;
+    b = (x_50 + 1);
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_54 : i32 = b;
+  if ((x_54 == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm
new file mode 100644
index 0000000..033c99e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm
@@ -0,0 +1,144 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %i "i"
+               OpName %v "v"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %30 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %31 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+    %float_2 = OpConstant %float 2
+     %uint_2 = OpConstant %uint 2
+    %float_3 = OpConstant %float 3
+     %uint_3 = OpConstant %uint 3
+%_ptr_Output_float = OpTypePointer Output %float
+       %main = OpFunction %void None %13
+         %40 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %v = OpVariable %_ptr_Function_v3float Function
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %42 = OpLoad %float %41
+               OpStore %f %42
+               OpStore %a %int_1
+               OpStore %b %int_0
+               OpStore %c %int_1
+               OpStore %i %int_0
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpSLessThan %bool %47 %int_3
+               OpBranchConditional %48 %49 %44
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpLoad %float %f
+         %52 = OpLoad %int %i
+         %53 = OpConvertSToF %float %52
+         %54 = OpFAdd %float %51 %53
+         %55 = OpAccessChain %_ptr_Function_float %v %50
+               OpStore %55 %54
+               OpBranch %45
+         %45 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpIAdd %int %56 %int_1
+               OpStore %i %57
+               OpBranch %43
+         %44 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %59 = OpLoad %float %58
+         %60 = OpFOrdEqual %bool %59 %float_1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+               OpStore %_GLF_color %30
+               OpBranch %65
+         %65 = OpLabel
+         %67 = OpLoad %int %c
+         %68 = OpLoad %int %a
+         %69 = OpLoad %int %b
+         %70 = OpBitwiseOr %int %68 %69
+         %71 = OpBitwiseAnd %int %67 %70
+         %72 = OpIEqual %bool %71 %int_0
+               OpBranchConditional %72 %63 %64
+         %64 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %74 = OpLoad %float %73
+         %75 = OpFOrdEqual %bool %74 %float_1
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+               OpStore %_GLF_color %31
+               OpBranch %76
+         %76 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+         %78 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %79 = OpLoad %float %78
+         %80 = OpFOrdEqual %bool %79 %float_1
+         %81 = OpSelect %float %80 %float_1 %float_0
+         %82 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %83 = OpLoad %float %82
+         %84 = OpFOrdEqual %bool %83 %float_2
+         %85 = OpSelect %float %84 %float_0 %float_1
+         %86 = OpAccessChain %_ptr_Function_float %v %uint_2
+         %87 = OpLoad %float %86
+         %88 = OpFOrdEqual %bool %87 %float_3
+         %89 = OpSelect %float %88 %float_0 %float_1
+         %90 = OpCompositeConstruct %v3float %81 %85 %89
+         %91 = OpLoad %v4float %_GLF_color
+         %92 = OpVectorShuffle %v4float %91 %90 4 5 6 3
+               OpStore %_GLF_color %92
+         %93 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_3
+               OpStore %93 %float_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..173ce9c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,65 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int i = 0;
+  float3 v = float3(0.0f, 0.0f, 0.0f);
+  const float x_42 = asfloat(x_6[0].x);
+  f = x_42;
+  a = 1;
+  b = 0;
+  c = 1;
+  i = 0;
+  {
+    for(; (i < 3); i = (i + 1)) {
+      set_float3(v, i, (f + float(i)));
+    }
+  }
+  const float x_59 = asfloat(x_6[0].x);
+  if ((x_59 == 1.0f)) {
+    while (true) {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      {
+        if (((c & (a | b)) == 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    const float x_74 = asfloat(x_6[0].x);
+    if ((x_74 == 1.0f)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    }
+  }
+  const float x_79 = v.x;
+  const float x_83 = v.y;
+  const float x_87 = v.z;
+  const float3 x_90 = float3(((x_79 == 1.0f) ? 1.0f : 0.0f), ((x_83 == 2.0f) ? 0.0f : 1.0f), ((x_87 == 3.0f) ? 0.0f : 1.0f));
+  x_GLF_color = float4(x_90.x, x_90.y, x_90.z, x_GLF_color.w);
+  x_GLF_color.w = 1.0f;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bab3597
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int i = 0;
+  float3 v = 0.0f;
+  float const x_42 = x_6.one;
+  f = x_42;
+  a = 1;
+  b = 0;
+  c = 1;
+  i = 0;
+  while (true) {
+    int const x_47 = i;
+    if ((x_47 < 3)) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    float const x_51 = f;
+    int const x_52 = i;
+    v[x_50] = (x_51 + float(x_52));
+    {
+      int const x_56 = i;
+      i = (x_56 + 1);
+    }
+  }
+  float const x_59 = x_6.one;
+  if ((x_59 == 1.0f)) {
+    while (true) {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      {
+        int const x_67 = c;
+        int const x_68 = a;
+        int const x_69 = b;
+        if (((x_67 & (x_68 | x_69)) == 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    float const x_74 = x_6.one;
+    if ((x_74 == 1.0f)) {
+      *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    }
+  }
+  float const x_79 = v.x;
+  float const x_83 = v.y;
+  float const x_87 = v.z;
+  float3 const x_90 = float3(select(0.0f, 1.0f, (x_79 == 1.0f)), select(1.0f, 0.0f, (x_83 == 2.0f)), select(1.0f, 0.0f, (x_87 == 3.0f)));
+  float4 const x_91 = *(tint_symbol_4);
+  *(tint_symbol_4) = float4(x_90.x, x_90.y, x_90.z, x_91.w);
+  (*(tint_symbol_4)).w = 1.0f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..597775c58
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,199 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 120
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %i "i"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %28 = OpConstantNull %v3float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %66 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %81 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+     %uint_3 = OpConstant %uint 3
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %c = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+          %v = OpVariable %_ptr_Function_v3float Function %28
+         %32 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %33 = OpLoad %float %32
+               OpStore %f %33
+               OpStore %a %int_1
+               OpStore %b %int_0
+               OpStore %c %int_1
+               OpStore %i %int_0
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpSLessThan %bool %40 %int_3
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %37
+         %44 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpLoad %float %f
+         %49 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Function_float %v %47
+         %51 = OpConvertSToF %float %49
+         %52 = OpFAdd %float %48 %51
+               OpStore %50 %52
+               OpBranch %38
+         %38 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %i %54
+               OpBranch %36
+         %37 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpFOrdEqual %bool %56 %float_1
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %x_GLF_color %66
+               OpBranch %63
+         %63 = OpLabel
+         %67 = OpLoad %int %c
+         %68 = OpLoad %int %a
+         %69 = OpLoad %int %b
+         %70 = OpBitwiseOr %int %68 %69
+         %71 = OpBitwiseAnd %int %67 %70
+         %72 = OpIEqual %bool %71 %int_0
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %62
+         %73 = OpLabel
+               OpBranch %61
+         %62 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %77 = OpLoad %float %76
+         %78 = OpFOrdEqual %bool %77 %float_1
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpStore %x_GLF_color %81
+               OpBranch %79
+         %79 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %82 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %83 = OpLoad %float %82
+         %85 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %86 = OpLoad %float %85
+         %88 = OpAccessChain %_ptr_Function_float %v %uint_2
+         %89 = OpLoad %float %88
+         %91 = OpFOrdEqual %bool %83 %float_1
+         %90 = OpSelect %float %91 %float_1 %float_0
+         %94 = OpFOrdEqual %bool %86 %float_2
+         %92 = OpSelect %float %94 %float_0 %float_1
+         %97 = OpFOrdEqual %bool %89 %float_3
+         %95 = OpSelect %float %97 %float_0 %float_1
+         %98 = OpCompositeConstruct %v3float %90 %92 %95
+         %99 = OpLoad %v4float %x_GLF_color
+        %100 = OpCompositeExtract %float %98 0
+        %101 = OpCompositeExtract %float %98 1
+        %102 = OpCompositeExtract %float %98 2
+        %103 = OpCompositeExtract %float %99 3
+        %104 = OpCompositeConstruct %v4float %100 %101 %102 %103
+               OpStore %x_GLF_color %104
+        %107 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_3
+               OpStore %107 %float_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %108
+%tint_symbol = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+        %115 = OpLabel
+        %116 = OpFunctionCall %void %main_1
+        %118 = OpLoad %v4float %x_GLF_color
+        %119 = OpCompositeConstruct %main_out %118
+        %117 = OpFunctionCall %void %tint_symbol_2 %119
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 63[%63] is not post dominated by the back-edge block 73[%73]
+  %73 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b06321e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,78 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var i : i32;
+  var v : vec3<f32>;
+  let x_42 : f32 = x_6.one;
+  f = x_42;
+  a = 1;
+  b = 0;
+  c = 1;
+  i = 0;
+  loop {
+    let x_47 : i32 = i;
+    if ((x_47 < 3)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_51 : f32 = f;
+    let x_52 : i32 = i;
+    v[x_50] = (x_51 + f32(x_52));
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 + 1);
+    }
+  }
+  let x_59 : f32 = x_6.one;
+  if ((x_59 == 1.0)) {
+    loop {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+
+      continuing {
+        let x_67 : i32 = c;
+        let x_68 : i32 = a;
+        let x_69 : i32 = b;
+        if (((x_67 & (x_68 | x_69)) == 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    let x_74 : f32 = x_6.one;
+    if ((x_74 == 1.0)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    }
+  }
+  let x_79 : f32 = v.x;
+  let x_83 : f32 = v.y;
+  let x_87 : f32 = v.z;
+  let x_90 : vec3<f32> = vec3<f32>(select(0.0, 1.0, (x_79 == 1.0)), select(1.0, 0.0, (x_83 == 2.0)), select(1.0, 0.0, (x_87 == 3.0)));
+  let x_91 : vec4<f32> = x_GLF_color;
+  x_GLF_color = vec4<f32>(x_90.x, x_90.y, x_90.z, x_91.w);
+  x_GLF_color.w = 1.0;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
new file mode 100644
index 0000000..b06321e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
@@ -0,0 +1,78 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var i : i32;
+  var v : vec3<f32>;
+  let x_42 : f32 = x_6.one;
+  f = x_42;
+  a = 1;
+  b = 0;
+  c = 1;
+  i = 0;
+  loop {
+    let x_47 : i32 = i;
+    if ((x_47 < 3)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_51 : f32 = f;
+    let x_52 : i32 = i;
+    v[x_50] = (x_51 + f32(x_52));
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 + 1);
+    }
+  }
+  let x_59 : f32 = x_6.one;
+  if ((x_59 == 1.0)) {
+    loop {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+
+      continuing {
+        let x_67 : i32 = c;
+        let x_68 : i32 = a;
+        let x_69 : i32 = b;
+        if (((x_67 & (x_68 | x_69)) == 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    let x_74 : f32 = x_6.one;
+    if ((x_74 == 1.0)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    }
+  }
+  let x_79 : f32 = v.x;
+  let x_83 : f32 = v.y;
+  let x_87 : f32 = v.z;
+  let x_90 : vec3<f32> = vec3<f32>(select(0.0, 1.0, (x_79 == 1.0)), select(1.0, 0.0, (x_83 == 2.0)), select(1.0, 0.0, (x_87 == 3.0)));
+  let x_91 : vec4<f32> = x_GLF_color;
+  x_GLF_color = vec4<f32>(x_90.x, x_90.y, x_90.z, x_91.w);
+  x_GLF_color.w = 1.0;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..173ce9c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,65 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int i = 0;
+  float3 v = float3(0.0f, 0.0f, 0.0f);
+  const float x_42 = asfloat(x_6[0].x);
+  f = x_42;
+  a = 1;
+  b = 0;
+  c = 1;
+  i = 0;
+  {
+    for(; (i < 3); i = (i + 1)) {
+      set_float3(v, i, (f + float(i)));
+    }
+  }
+  const float x_59 = asfloat(x_6[0].x);
+  if ((x_59 == 1.0f)) {
+    while (true) {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      {
+        if (((c & (a | b)) == 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    const float x_74 = asfloat(x_6[0].x);
+    if ((x_74 == 1.0f)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    }
+  }
+  const float x_79 = v.x;
+  const float x_83 = v.y;
+  const float x_87 = v.z;
+  const float3 x_90 = float3(((x_79 == 1.0f) ? 1.0f : 0.0f), ((x_83 == 2.0f) ? 0.0f : 1.0f), ((x_87 == 3.0f) ? 0.0f : 1.0f));
+  x_GLF_color = float4(x_90.x, x_90.y, x_90.z, x_GLF_color.w);
+  x_GLF_color.w = 1.0f;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..bab3597
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int i = 0;
+  float3 v = 0.0f;
+  float const x_42 = x_6.one;
+  f = x_42;
+  a = 1;
+  b = 0;
+  c = 1;
+  i = 0;
+  while (true) {
+    int const x_47 = i;
+    if ((x_47 < 3)) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    float const x_51 = f;
+    int const x_52 = i;
+    v[x_50] = (x_51 + float(x_52));
+    {
+      int const x_56 = i;
+      i = (x_56 + 1);
+    }
+  }
+  float const x_59 = x_6.one;
+  if ((x_59 == 1.0f)) {
+    while (true) {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      {
+        int const x_67 = c;
+        int const x_68 = a;
+        int const x_69 = b;
+        if (((x_67 & (x_68 | x_69)) == 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    float const x_74 = x_6.one;
+    if ((x_74 == 1.0f)) {
+      *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    }
+  }
+  float const x_79 = v.x;
+  float const x_83 = v.y;
+  float const x_87 = v.z;
+  float3 const x_90 = float3(select(0.0f, 1.0f, (x_79 == 1.0f)), select(1.0f, 0.0f, (x_83 == 2.0f)), select(1.0f, 0.0f, (x_87 == 3.0f)));
+  float4 const x_91 = *(tint_symbol_4);
+  *(tint_symbol_4) = float4(x_90.x, x_90.y, x_90.z, x_91.w);
+  (*(tint_symbol_4)).w = 1.0f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..597775c58
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,199 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 120
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %i "i"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %28 = OpConstantNull %v3float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %66 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %81 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+     %uint_3 = OpConstant %uint 3
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %c = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+          %v = OpVariable %_ptr_Function_v3float Function %28
+         %32 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %33 = OpLoad %float %32
+               OpStore %f %33
+               OpStore %a %int_1
+               OpStore %b %int_0
+               OpStore %c %int_1
+               OpStore %i %int_0
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpSLessThan %bool %40 %int_3
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %37
+         %44 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpLoad %float %f
+         %49 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Function_float %v %47
+         %51 = OpConvertSToF %float %49
+         %52 = OpFAdd %float %48 %51
+               OpStore %50 %52
+               OpBranch %38
+         %38 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %i %54
+               OpBranch %36
+         %37 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpFOrdEqual %bool %56 %float_1
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %x_GLF_color %66
+               OpBranch %63
+         %63 = OpLabel
+         %67 = OpLoad %int %c
+         %68 = OpLoad %int %a
+         %69 = OpLoad %int %b
+         %70 = OpBitwiseOr %int %68 %69
+         %71 = OpBitwiseAnd %int %67 %70
+         %72 = OpIEqual %bool %71 %int_0
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %62
+         %73 = OpLabel
+               OpBranch %61
+         %62 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %77 = OpLoad %float %76
+         %78 = OpFOrdEqual %bool %77 %float_1
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpStore %x_GLF_color %81
+               OpBranch %79
+         %79 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %82 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %83 = OpLoad %float %82
+         %85 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %86 = OpLoad %float %85
+         %88 = OpAccessChain %_ptr_Function_float %v %uint_2
+         %89 = OpLoad %float %88
+         %91 = OpFOrdEqual %bool %83 %float_1
+         %90 = OpSelect %float %91 %float_1 %float_0
+         %94 = OpFOrdEqual %bool %86 %float_2
+         %92 = OpSelect %float %94 %float_0 %float_1
+         %97 = OpFOrdEqual %bool %89 %float_3
+         %95 = OpSelect %float %97 %float_0 %float_1
+         %98 = OpCompositeConstruct %v3float %90 %92 %95
+         %99 = OpLoad %v4float %x_GLF_color
+        %100 = OpCompositeExtract %float %98 0
+        %101 = OpCompositeExtract %float %98 1
+        %102 = OpCompositeExtract %float %98 2
+        %103 = OpCompositeExtract %float %99 3
+        %104 = OpCompositeConstruct %v4float %100 %101 %102 %103
+               OpStore %x_GLF_color %104
+        %107 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_3
+               OpStore %107 %float_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %108
+%tint_symbol = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+        %115 = OpLabel
+        %116 = OpFunctionCall %void %main_1
+        %118 = OpLoad %v4float %x_GLF_color
+        %119 = OpCompositeConstruct %main_out %118
+        %117 = OpFunctionCall %void %tint_symbol_2 %119
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 63[%63] is not post dominated by the back-edge block 73[%73]
+  %73 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b06321e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,78 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var i : i32;
+  var v : vec3<f32>;
+  let x_42 : f32 = x_6.one;
+  f = x_42;
+  a = 1;
+  b = 0;
+  c = 1;
+  i = 0;
+  loop {
+    let x_47 : i32 = i;
+    if ((x_47 < 3)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_51 : f32 = f;
+    let x_52 : i32 = i;
+    v[x_50] = (x_51 + f32(x_52));
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 + 1);
+    }
+  }
+  let x_59 : f32 = x_6.one;
+  if ((x_59 == 1.0)) {
+    loop {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+
+      continuing {
+        let x_67 : i32 = c;
+        let x_68 : i32 = a;
+        let x_69 : i32 = b;
+        if (((x_67 & (x_68 | x_69)) == 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    let x_74 : f32 = x_6.one;
+    if ((x_74 == 1.0)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    }
+  }
+  let x_79 : f32 = v.x;
+  let x_83 : f32 = v.y;
+  let x_87 : f32 = v.z;
+  let x_90 : vec3<f32> = vec3<f32>(select(0.0, 1.0, (x_79 == 1.0)), select(1.0, 0.0, (x_83 == 2.0)), select(1.0, 0.0, (x_87 == 3.0)));
+  let x_91 : vec4<f32> = x_GLF_color;
+  x_GLF_color = vec4<f32>(x_90.x, x_90.y, x_90.z, x_91.w);
+  x_GLF_color.w = 1.0;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm
new file mode 100644
index 0000000..294733e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm
@@ -0,0 +1,214 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_f1_ "func(f1;"
+               OpName %x "x"
+               OpName %a "a"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %float %_ptr_Function_float
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+    %float_6 = OpConstant %float 6
+    %float_5 = OpConstant %float 5
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %24 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %12
+         %28 = OpLabel
+         %29 = OpVariable %_ptr_Function_bool Function %false
+         %30 = OpVariable %_ptr_Function_float Function
+         %31 = OpVariable %_ptr_Function_float Function
+         %32 = OpVariable %_ptr_Function_float Function
+         %33 = OpVariable %_ptr_Function_bool Function %false
+         %34 = OpVariable %_ptr_Function_float Function
+         %35 = OpVariable %_ptr_Function_float Function
+         %36 = OpVariable %_ptr_Function_float Function
+          %f = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+               OpStore %f %float_0
+               OpStore %i %float_0
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %float %i
+               OpStore %param %38
+               OpStore %33 %false
+               OpLoopMerge %39 %37 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %float %param
+               OpStore %35 %41
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %float %35
+         %49 = OpLoad %float %param
+         %50 = OpFOrdEqual %bool %48 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpLoad %float %35
+               OpStore %33 %true
+               OpStore %34 %53
+               OpBranch %45
+         %51 = OpLabel
+         %54 = OpLoad %float %35
+         %55 = OpFAdd %float %54 %float_1
+               OpStore %35 %55
+               OpBranch %46
+         %46 = OpLabel
+         %56 = OpLoad %float %35
+         %57 = OpLoad %float %param
+         %58 = OpFOrdLessThan %bool %56 %57
+               OpBranchConditional %58 %44 %45
+         %45 = OpLabel
+         %59 = OpLoad %bool %33
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %42 %60
+         %60 = OpLabel
+               OpStore %33 %true
+               OpStore %34 %float_0
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+         %61 = OpLoad %float %34
+               OpStore %36 %61
+               OpStore %f %61
+               OpStore %param_0 %float_1
+               OpStore %29 %false
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %float %param_0
+               OpStore %31 %63
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %70 = OpLoad %float %31
+         %71 = OpLoad %float %param_0
+         %72 = OpFOrdEqual %bool %70 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpLoad %float %31
+               OpStore %29 %true
+               OpStore %30 %75
+               OpBranch %67
+         %73 = OpLabel
+         %76 = OpLoad %float %31
+         %77 = OpFAdd %float %76 %float_1
+               OpStore %31 %77
+               OpBranch %68
+         %68 = OpLabel
+         %78 = OpLoad %float %31
+         %79 = OpLoad %float %param_0
+         %80 = OpFOrdLessThan %bool %78 %79
+               OpBranchConditional %80 %66 %67
+         %67 = OpLabel
+         %81 = OpLoad %bool %29
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %64 %82
+         %82 = OpLabel
+               OpStore %29 %true
+               OpStore %30 %float_0
+               OpBranch %64
+         %65 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+         %83 = OpLoad %float %30
+               OpStore %32 %83
+         %84 = OpLoad %float %i
+         %85 = OpFAdd %float %84 %83
+               OpStore %i %85
+         %86 = OpFOrdLessThan %bool %85 %float_6
+               OpBranchConditional %86 %37 %39
+         %39 = OpLabel
+         %87 = OpLoad %float %f
+         %88 = OpFOrdEqual %bool %87 %float_5
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %89
+         %91 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %89
+         %89 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_f1_ = OpFunction %float None %15
+          %x = OpFunctionParameter %_ptr_Function_float
+         %92 = OpLabel
+         %93 = OpVariable %_ptr_Function_bool Function %false
+         %94 = OpVariable %_ptr_Function_float Function
+          %a = OpVariable %_ptr_Function_float Function
+               OpBranch %95
+         %95 = OpLabel
+         %96 = OpLoad %float %x
+               OpStore %a %96
+               OpLoopMerge %97 %98 None
+               OpBranch %99
+         %99 = OpLabel
+               OpLoopMerge %100 %101 None
+               OpBranch %102
+        %102 = OpLabel
+        %103 = OpLoad %float %a
+        %104 = OpLoad %float %x
+        %105 = OpFOrdEqual %bool %103 %104
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+        %108 = OpLoad %float %a
+               OpStore %93 %true
+               OpStore %94 %108
+               OpBranch %100
+        %106 = OpLabel
+        %109 = OpLoad %float %a
+        %110 = OpFAdd %float %109 %float_1
+               OpStore %a %110
+               OpBranch %101
+        %101 = OpLabel
+        %111 = OpLoad %float %a
+        %112 = OpLoad %float %x
+        %113 = OpFOrdLessThan %bool %111 %112
+               OpBranchConditional %113 %99 %100
+        %100 = OpLabel
+        %114 = OpLoad %bool %93
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %97 %115
+        %115 = OpLabel
+               OpStore %93 %true
+               OpStore %94 %float_0
+               OpBranch %97
+         %98 = OpLabel
+               OpBranch %95
+         %97 = OpLabel
+        %116 = OpLoad %float %94
+               OpReturnValue %116
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0dbbaa9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,139 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_29 = false;
+  float x_30 = 0.0f;
+  float x_31 = 0.0f;
+  float x_32 = 0.0f;
+  bool x_33 = false;
+  float x_34 = 0.0f;
+  float x_35 = 0.0f;
+  float x_36 = 0.0f;
+  float f = 0.0f;
+  float i = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  f = 0.0f;
+  i = 0.0f;
+  while (true) {
+    param = i;
+    x_33 = false;
+    while (true) {
+      x_35 = param;
+      while (true) {
+        if ((x_35 == param)) {
+          const float x_53 = x_35;
+          x_33 = true;
+          x_34 = x_53;
+          break;
+        }
+        x_35 = (x_35 + 1.0f);
+        {
+          if ((x_35 < param)) {
+          } else {
+            break;
+          }
+        }
+      }
+      if (x_33) {
+        break;
+      }
+      x_33 = true;
+      x_34 = 0.0f;
+      break;
+    }
+    const float x_61 = x_34;
+    x_36 = x_61;
+    f = x_61;
+    param_1 = 1.0f;
+    x_29 = false;
+    while (true) {
+      x_31 = param_1;
+      while (true) {
+        if ((x_31 == param_1)) {
+          const float x_75 = x_31;
+          x_29 = true;
+          x_30 = x_75;
+          break;
+        }
+        x_31 = (x_31 + 1.0f);
+        {
+          if ((x_31 < param_1)) {
+          } else {
+            break;
+          }
+        }
+      }
+      if (x_29) {
+        break;
+      }
+      x_29 = true;
+      x_30 = 0.0f;
+      break;
+    }
+    const float x_83 = x_30;
+    x_32 = x_83;
+    const float x_85 = (i + x_83);
+    i = x_85;
+    if ((x_85 < 6.0f)) {
+    } else {
+      break;
+    }
+  }
+  if ((f == 5.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
+
+float func_f1_(inout float x) {
+  bool x_93 = false;
+  float x_94 = 0.0f;
+  float a = 0.0f;
+  while (true) {
+    const float x_96 = x;
+    a = x_96;
+    while (true) {
+      const float x_103 = a;
+      const float x_104 = x;
+      if ((x_103 == x_104)) {
+        const float x_108 = a;
+        x_93 = true;
+        x_94 = x_108;
+        break;
+      }
+      a = (a + 1.0f);
+      {
+        const float x_111 = a;
+        const float x_112 = x;
+        if ((x_111 < x_112)) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_93) {
+      break;
+    }
+    x_93 = true;
+    x_94 = 0.0f;
+    break;
+  }
+  return x_94;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..cf63430
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.msl
@@ -0,0 +1,162 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool x_29 = false;
+  float x_30 = 0.0f;
+  float x_31 = 0.0f;
+  float x_32 = 0.0f;
+  bool x_33 = false;
+  float x_34 = 0.0f;
+  float x_35 = 0.0f;
+  float x_36 = 0.0f;
+  float f = 0.0f;
+  float i = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  f = 0.0f;
+  i = 0.0f;
+  while (true) {
+    float const x_38 = i;
+    param = x_38;
+    x_33 = false;
+    while (true) {
+      float const x_41 = param;
+      x_35 = x_41;
+      while (true) {
+        float const x_48 = x_35;
+        float const x_49 = param;
+        if ((x_48 == x_49)) {
+          float const x_53 = x_35;
+          x_33 = true;
+          x_34 = x_53;
+          break;
+        }
+        float const x_54 = x_35;
+        x_35 = (x_54 + 1.0f);
+        {
+          float const x_56 = x_35;
+          float const x_57 = param;
+          if ((x_56 < x_57)) {
+          } else {
+            break;
+          }
+        }
+      }
+      bool const x_59 = x_33;
+      if (x_59) {
+        break;
+      }
+      x_33 = true;
+      x_34 = 0.0f;
+      break;
+    }
+    float const x_61 = x_34;
+    x_36 = x_61;
+    f = x_61;
+    param_1 = 1.0f;
+    x_29 = false;
+    while (true) {
+      float const x_63 = param_1;
+      x_31 = x_63;
+      while (true) {
+        float const x_70 = x_31;
+        float const x_71 = param_1;
+        if ((x_70 == x_71)) {
+          float const x_75 = x_31;
+          x_29 = true;
+          x_30 = x_75;
+          break;
+        }
+        float const x_76 = x_31;
+        x_31 = (x_76 + 1.0f);
+        {
+          float const x_78 = x_31;
+          float const x_79 = param_1;
+          if ((x_78 < x_79)) {
+          } else {
+            break;
+          }
+        }
+      }
+      bool const x_81 = x_29;
+      if (x_81) {
+        break;
+      }
+      x_29 = true;
+      x_30 = 0.0f;
+      break;
+    }
+    float const x_83 = x_30;
+    x_32 = x_83;
+    float const x_84 = i;
+    float const x_85 = (x_84 + x_83);
+    i = x_85;
+    if ((x_85 < 6.0f)) {
+    } else {
+      break;
+    }
+  }
+  float const x_87 = f;
+  if ((x_87 == 5.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+float func_f1_(thread float* const x) {
+  bool x_93 = false;
+  float x_94 = 0.0f;
+  float a = 0.0f;
+  while (true) {
+    float const x_96 = *(x);
+    a = x_96;
+    while (true) {
+      float const x_103 = a;
+      float const x_104 = *(x);
+      if ((x_103 == x_104)) {
+        float const x_108 = a;
+        x_93 = true;
+        x_94 = x_108;
+        break;
+      }
+      float const x_109 = a;
+      a = (x_109 + 1.0f);
+      {
+        float const x_111 = a;
+        float const x_112 = *(x);
+        if ((x_111 < x_112)) {
+        } else {
+          break;
+        }
+      }
+    }
+    bool const x_114 = x_93;
+    if (x_114) {
+      break;
+    }
+    x_93 = true;
+    x_94 = 0.0f;
+    break;
+  }
+  float const x_116 = x_94;
+  return x_116;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..278320d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,308 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 156
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_29 "x_29"
+               OpName %x_30 "x_30"
+               OpName %x_31 "x_31"
+               OpName %x_32 "x_32"
+               OpName %x_33 "x_33"
+               OpName %x_34 "x_34"
+               OpName %x_35 "x_35"
+               OpName %x_36 "x_36"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_f1_ "func_f1_"
+               OpName %x "x"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %a "a"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %16 = OpConstantNull %bool
+%_ptr_Function_float = OpTypePointer Function %float
+         %19 = OpConstantNull %float
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+    %float_6 = OpConstant %float 6
+    %float_5 = OpConstant %float 5
+        %105 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %106 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %107 = OpTypeFunction %void %main_out
+        %119 = OpTypeFunction %float %_ptr_Function_float
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %x_29 = OpVariable %_ptr_Function_bool Function %16
+       %x_30 = OpVariable %_ptr_Function_float Function %19
+       %x_31 = OpVariable %_ptr_Function_float Function %19
+       %x_32 = OpVariable %_ptr_Function_float Function %19
+       %x_33 = OpVariable %_ptr_Function_bool Function %16
+       %x_34 = OpVariable %_ptr_Function_float Function %19
+       %x_35 = OpVariable %_ptr_Function_float Function %19
+       %x_36 = OpVariable %_ptr_Function_float Function %19
+          %f = OpVariable %_ptr_Function_float Function %19
+          %i = OpVariable %_ptr_Function_float Function %19
+      %param = OpVariable %_ptr_Function_float Function %19
+    %param_1 = OpVariable %_ptr_Function_float Function %19
+               OpStore %x_29 %false
+               OpStore %x_33 %false
+               OpStore %f %float_0
+               OpStore %i %float_0
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %float %i
+               OpStore %param %35
+               OpStore %x_33 %false
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %float %param
+               OpStore %x_35 %40
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %float %x_35
+         %46 = OpLoad %float %param
+         %47 = OpFOrdEqual %bool %45 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %50 = OpLoad %float %x_35
+               OpStore %x_33 %true
+               OpStore %x_34 %50
+               OpBranch %42
+         %48 = OpLabel
+         %52 = OpLoad %float %x_35
+         %54 = OpFAdd %float %52 %float_1
+               OpStore %x_35 %54
+               OpBranch %43
+         %43 = OpLabel
+         %55 = OpLoad %float %x_35
+         %56 = OpLoad %float %param
+         %57 = OpFOrdLessThan %bool %55 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %42
+         %58 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+         %61 = OpLoad %bool %x_33
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+               OpBranch %37
+         %62 = OpLabel
+               OpStore %x_33 %true
+               OpStore %x_34 %float_0
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+         %64 = OpLoad %float %x_34
+               OpStore %x_36 %64
+               OpStore %f %64
+               OpStore %param_1 %float_1
+               OpStore %x_29 %false
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpLoad %float %param_1
+               OpStore %x_31 %69
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %float %x_31
+         %75 = OpLoad %float %param_1
+         %76 = OpFOrdEqual %bool %74 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpLoad %float %x_31
+               OpStore %x_29 %true
+               OpStore %x_30 %79
+               OpBranch %71
+         %77 = OpLabel
+         %80 = OpLoad %float %x_31
+         %81 = OpFAdd %float %80 %float_1
+               OpStore %x_31 %81
+               OpBranch %72
+         %72 = OpLabel
+         %82 = OpLoad %float %x_31
+         %83 = OpLoad %float %param_1
+         %84 = OpFOrdLessThan %bool %82 %83
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+               OpBranch %85
+         %87 = OpLabel
+               OpBranch %71
+         %85 = OpLabel
+               OpBranch %70
+         %71 = OpLabel
+         %88 = OpLoad %bool %x_29
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+               OpBranch %66
+         %89 = OpLabel
+               OpStore %x_29 %true
+               OpStore %x_30 %float_0
+               OpBranch %66
+         %67 = OpLabel
+               OpBranch %65
+         %66 = OpLabel
+         %91 = OpLoad %float %x_30
+               OpStore %x_32 %91
+         %92 = OpLoad %float %i
+         %93 = OpFAdd %float %92 %91
+               OpStore %i %93
+         %95 = OpFOrdLessThan %bool %93 %float_6
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %98
+         %97 = OpLabel
+               OpBranch %96
+         %98 = OpLabel
+               OpBranch %32
+         %96 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+               OpBranch %31
+         %32 = OpLabel
+         %99 = OpLoad %float %f
+        %101 = OpFOrdEqual %bool %99 %float_5
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpStore %x_GLF_color %105
+               OpBranch %102
+        %104 = OpLabel
+               OpStore %x_GLF_color %106
+               OpBranch %102
+        %102 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %107
+%tint_symbol = OpFunctionParameter %main_out
+        %111 = OpLabel
+        %112 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %112
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+        %114 = OpLabel
+        %115 = OpFunctionCall %void %main_1
+        %117 = OpLoad %v4float %x_GLF_color
+        %118 = OpCompositeConstruct %main_out %117
+        %116 = OpFunctionCall %void %tint_symbol_2 %118
+               OpReturn
+               OpFunctionEnd
+   %func_f1_ = OpFunction %float None %119
+          %x = OpFunctionParameter %_ptr_Function_float
+        %122 = OpLabel
+       %x_93 = OpVariable %_ptr_Function_bool Function %16
+       %x_94 = OpVariable %_ptr_Function_float Function %19
+          %a = OpVariable %_ptr_Function_float Function %19
+               OpStore %x_93 %false
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %131 = OpLoad %float %x
+               OpStore %a %131
+               OpBranch %132
+        %132 = OpLabel
+               OpLoopMerge %133 %134 None
+               OpBranch %135
+        %135 = OpLabel
+        %136 = OpLoad %float %a
+        %138 = OpLoad %float %x
+        %139 = OpFOrdEqual %bool %136 %138
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %140
+        %141 = OpLabel
+        %142 = OpLoad %float %a
+               OpStore %x_93 %true
+               OpStore %x_94 %142
+               OpBranch %133
+        %140 = OpLabel
+        %143 = OpLoad %float %a
+        %144 = OpFAdd %float %143 %float_1
+               OpStore %a %144
+               OpBranch %134
+        %134 = OpLabel
+        %145 = OpLoad %float %a
+        %147 = OpLoad %float %x
+        %148 = OpFOrdLessThan %bool %145 %147
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %151
+        %150 = OpLabel
+               OpBranch %149
+        %151 = OpLabel
+               OpBranch %133
+        %149 = OpLabel
+               OpBranch %132
+        %133 = OpLabel
+        %152 = OpLoad %bool %x_93
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+               OpBranch %127
+        %153 = OpLabel
+               OpStore %x_93 %true
+               OpStore %x_94 %float_0
+               OpBranch %127
+        %128 = OpLabel
+               OpBranch %126
+        %127 = OpLabel
+        %155 = OpLoad %float %x_94
+               OpReturnValue %155
+               OpFunctionEnd
+1:1: The continue construct with the continue target 43[%43] is not post dominated by the back-edge block 58[%58]
+  %58 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..14ef8d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,159 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_29 : bool = false;
+  var x_30 : f32;
+  var x_31 : f32;
+  var x_32 : f32;
+  var x_33 : bool = false;
+  var x_34 : f32;
+  var x_35 : f32;
+  var x_36 : f32;
+  var f : f32;
+  var i : f32;
+  var param : f32;
+  var param_1 : f32;
+  f = 0.0;
+  i = 0.0;
+  loop {
+    let x_38 : f32 = i;
+    param = x_38;
+    x_33 = false;
+    loop {
+      let x_41 : f32 = param;
+      x_35 = x_41;
+      loop {
+        let x_48 : f32 = x_35;
+        let x_49 : f32 = param;
+        if ((x_48 == x_49)) {
+          let x_53 : f32 = x_35;
+          x_33 = true;
+          x_34 = x_53;
+          break;
+        }
+        let x_54 : f32 = x_35;
+        x_35 = (x_54 + 1.0);
+
+        continuing {
+          let x_56 : f32 = x_35;
+          let x_57 : f32 = param;
+          if ((x_56 < x_57)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_59 : bool = x_33;
+      if (x_59) {
+        break;
+      }
+      x_33 = true;
+      x_34 = 0.0;
+      break;
+    }
+    let x_61 : f32 = x_34;
+    x_36 = x_61;
+    f = x_61;
+    param_1 = 1.0;
+    x_29 = false;
+    loop {
+      let x_63 : f32 = param_1;
+      x_31 = x_63;
+      loop {
+        let x_70 : f32 = x_31;
+        let x_71 : f32 = param_1;
+        if ((x_70 == x_71)) {
+          let x_75 : f32 = x_31;
+          x_29 = true;
+          x_30 = x_75;
+          break;
+        }
+        let x_76 : f32 = x_31;
+        x_31 = (x_76 + 1.0);
+
+        continuing {
+          let x_78 : f32 = x_31;
+          let x_79 : f32 = param_1;
+          if ((x_78 < x_79)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_81 : bool = x_29;
+      if (x_81) {
+        break;
+      }
+      x_29 = true;
+      x_30 = 0.0;
+      break;
+    }
+    let x_83 : f32 = x_30;
+    x_32 = x_83;
+    let x_84 : f32 = i;
+    let x_85 : f32 = (x_84 + x_83);
+    i = x_85;
+    if ((x_85 < 6.0)) {
+    } else {
+      break;
+    }
+  }
+  let x_87 : f32 = f;
+  if ((x_87 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_f1_(x : ptr<function, f32>) -> f32 {
+  var x_93 : bool = false;
+  var x_94 : f32;
+  var a : f32;
+  loop {
+    let x_96 : f32 = *(x);
+    a = x_96;
+    loop {
+      let x_103 : f32 = a;
+      let x_104 : f32 = *(x);
+      if ((x_103 == x_104)) {
+        let x_108 : f32 = a;
+        x_93 = true;
+        x_94 = x_108;
+        break;
+      }
+      let x_109 : f32 = a;
+      a = (x_109 + 1.0);
+
+      continuing {
+        let x_111 : f32 = a;
+        let x_112 : f32 = *(x);
+        if ((x_111 < x_112)) {
+        } else {
+          break;
+        }
+      }
+    }
+    let x_114 : bool = x_93;
+    if (x_114) {
+      break;
+    }
+    x_93 = true;
+    x_94 = 0.0;
+    break;
+  }
+  let x_116 : f32 = x_94;
+  return x_116;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
new file mode 100644
index 0000000..14ef8d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
@@ -0,0 +1,159 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_29 : bool = false;
+  var x_30 : f32;
+  var x_31 : f32;
+  var x_32 : f32;
+  var x_33 : bool = false;
+  var x_34 : f32;
+  var x_35 : f32;
+  var x_36 : f32;
+  var f : f32;
+  var i : f32;
+  var param : f32;
+  var param_1 : f32;
+  f = 0.0;
+  i = 0.0;
+  loop {
+    let x_38 : f32 = i;
+    param = x_38;
+    x_33 = false;
+    loop {
+      let x_41 : f32 = param;
+      x_35 = x_41;
+      loop {
+        let x_48 : f32 = x_35;
+        let x_49 : f32 = param;
+        if ((x_48 == x_49)) {
+          let x_53 : f32 = x_35;
+          x_33 = true;
+          x_34 = x_53;
+          break;
+        }
+        let x_54 : f32 = x_35;
+        x_35 = (x_54 + 1.0);
+
+        continuing {
+          let x_56 : f32 = x_35;
+          let x_57 : f32 = param;
+          if ((x_56 < x_57)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_59 : bool = x_33;
+      if (x_59) {
+        break;
+      }
+      x_33 = true;
+      x_34 = 0.0;
+      break;
+    }
+    let x_61 : f32 = x_34;
+    x_36 = x_61;
+    f = x_61;
+    param_1 = 1.0;
+    x_29 = false;
+    loop {
+      let x_63 : f32 = param_1;
+      x_31 = x_63;
+      loop {
+        let x_70 : f32 = x_31;
+        let x_71 : f32 = param_1;
+        if ((x_70 == x_71)) {
+          let x_75 : f32 = x_31;
+          x_29 = true;
+          x_30 = x_75;
+          break;
+        }
+        let x_76 : f32 = x_31;
+        x_31 = (x_76 + 1.0);
+
+        continuing {
+          let x_78 : f32 = x_31;
+          let x_79 : f32 = param_1;
+          if ((x_78 < x_79)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_81 : bool = x_29;
+      if (x_81) {
+        break;
+      }
+      x_29 = true;
+      x_30 = 0.0;
+      break;
+    }
+    let x_83 : f32 = x_30;
+    x_32 = x_83;
+    let x_84 : f32 = i;
+    let x_85 : f32 = (x_84 + x_83);
+    i = x_85;
+    if ((x_85 < 6.0)) {
+    } else {
+      break;
+    }
+  }
+  let x_87 : f32 = f;
+  if ((x_87 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_f1_(x : ptr<function, f32>) -> f32 {
+  var x_93 : bool = false;
+  var x_94 : f32;
+  var a : f32;
+  loop {
+    let x_96 : f32 = *(x);
+    a = x_96;
+    loop {
+      let x_103 : f32 = a;
+      let x_104 : f32 = *(x);
+      if ((x_103 == x_104)) {
+        let x_108 : f32 = a;
+        x_93 = true;
+        x_94 = x_108;
+        break;
+      }
+      let x_109 : f32 = a;
+      a = (x_109 + 1.0);
+
+      continuing {
+        let x_111 : f32 = a;
+        let x_112 : f32 = *(x);
+        if ((x_111 < x_112)) {
+        } else {
+          break;
+        }
+      }
+    }
+    let x_114 : bool = x_93;
+    if (x_114) {
+      break;
+    }
+    x_93 = true;
+    x_94 = 0.0;
+    break;
+  }
+  let x_116 : f32 = x_94;
+  return x_116;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0dbbaa9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,139 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_29 = false;
+  float x_30 = 0.0f;
+  float x_31 = 0.0f;
+  float x_32 = 0.0f;
+  bool x_33 = false;
+  float x_34 = 0.0f;
+  float x_35 = 0.0f;
+  float x_36 = 0.0f;
+  float f = 0.0f;
+  float i = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  f = 0.0f;
+  i = 0.0f;
+  while (true) {
+    param = i;
+    x_33 = false;
+    while (true) {
+      x_35 = param;
+      while (true) {
+        if ((x_35 == param)) {
+          const float x_53 = x_35;
+          x_33 = true;
+          x_34 = x_53;
+          break;
+        }
+        x_35 = (x_35 + 1.0f);
+        {
+          if ((x_35 < param)) {
+          } else {
+            break;
+          }
+        }
+      }
+      if (x_33) {
+        break;
+      }
+      x_33 = true;
+      x_34 = 0.0f;
+      break;
+    }
+    const float x_61 = x_34;
+    x_36 = x_61;
+    f = x_61;
+    param_1 = 1.0f;
+    x_29 = false;
+    while (true) {
+      x_31 = param_1;
+      while (true) {
+        if ((x_31 == param_1)) {
+          const float x_75 = x_31;
+          x_29 = true;
+          x_30 = x_75;
+          break;
+        }
+        x_31 = (x_31 + 1.0f);
+        {
+          if ((x_31 < param_1)) {
+          } else {
+            break;
+          }
+        }
+      }
+      if (x_29) {
+        break;
+      }
+      x_29 = true;
+      x_30 = 0.0f;
+      break;
+    }
+    const float x_83 = x_30;
+    x_32 = x_83;
+    const float x_85 = (i + x_83);
+    i = x_85;
+    if ((x_85 < 6.0f)) {
+    } else {
+      break;
+    }
+  }
+  if ((f == 5.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
+
+float func_f1_(inout float x) {
+  bool x_93 = false;
+  float x_94 = 0.0f;
+  float a = 0.0f;
+  while (true) {
+    const float x_96 = x;
+    a = x_96;
+    while (true) {
+      const float x_103 = a;
+      const float x_104 = x;
+      if ((x_103 == x_104)) {
+        const float x_108 = a;
+        x_93 = true;
+        x_94 = x_108;
+        break;
+      }
+      a = (a + 1.0f);
+      {
+        const float x_111 = a;
+        const float x_112 = x;
+        if ((x_111 < x_112)) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_93) {
+      break;
+    }
+    x_93 = true;
+    x_94 = 0.0f;
+    break;
+  }
+  return x_94;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..cf63430
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.msl
@@ -0,0 +1,162 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool x_29 = false;
+  float x_30 = 0.0f;
+  float x_31 = 0.0f;
+  float x_32 = 0.0f;
+  bool x_33 = false;
+  float x_34 = 0.0f;
+  float x_35 = 0.0f;
+  float x_36 = 0.0f;
+  float f = 0.0f;
+  float i = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  f = 0.0f;
+  i = 0.0f;
+  while (true) {
+    float const x_38 = i;
+    param = x_38;
+    x_33 = false;
+    while (true) {
+      float const x_41 = param;
+      x_35 = x_41;
+      while (true) {
+        float const x_48 = x_35;
+        float const x_49 = param;
+        if ((x_48 == x_49)) {
+          float const x_53 = x_35;
+          x_33 = true;
+          x_34 = x_53;
+          break;
+        }
+        float const x_54 = x_35;
+        x_35 = (x_54 + 1.0f);
+        {
+          float const x_56 = x_35;
+          float const x_57 = param;
+          if ((x_56 < x_57)) {
+          } else {
+            break;
+          }
+        }
+      }
+      bool const x_59 = x_33;
+      if (x_59) {
+        break;
+      }
+      x_33 = true;
+      x_34 = 0.0f;
+      break;
+    }
+    float const x_61 = x_34;
+    x_36 = x_61;
+    f = x_61;
+    param_1 = 1.0f;
+    x_29 = false;
+    while (true) {
+      float const x_63 = param_1;
+      x_31 = x_63;
+      while (true) {
+        float const x_70 = x_31;
+        float const x_71 = param_1;
+        if ((x_70 == x_71)) {
+          float const x_75 = x_31;
+          x_29 = true;
+          x_30 = x_75;
+          break;
+        }
+        float const x_76 = x_31;
+        x_31 = (x_76 + 1.0f);
+        {
+          float const x_78 = x_31;
+          float const x_79 = param_1;
+          if ((x_78 < x_79)) {
+          } else {
+            break;
+          }
+        }
+      }
+      bool const x_81 = x_29;
+      if (x_81) {
+        break;
+      }
+      x_29 = true;
+      x_30 = 0.0f;
+      break;
+    }
+    float const x_83 = x_30;
+    x_32 = x_83;
+    float const x_84 = i;
+    float const x_85 = (x_84 + x_83);
+    i = x_85;
+    if ((x_85 < 6.0f)) {
+    } else {
+      break;
+    }
+  }
+  float const x_87 = f;
+  if ((x_87 == 5.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+float func_f1_(thread float* const x) {
+  bool x_93 = false;
+  float x_94 = 0.0f;
+  float a = 0.0f;
+  while (true) {
+    float const x_96 = *(x);
+    a = x_96;
+    while (true) {
+      float const x_103 = a;
+      float const x_104 = *(x);
+      if ((x_103 == x_104)) {
+        float const x_108 = a;
+        x_93 = true;
+        x_94 = x_108;
+        break;
+      }
+      float const x_109 = a;
+      a = (x_109 + 1.0f);
+      {
+        float const x_111 = a;
+        float const x_112 = *(x);
+        if ((x_111 < x_112)) {
+        } else {
+          break;
+        }
+      }
+    }
+    bool const x_114 = x_93;
+    if (x_114) {
+      break;
+    }
+    x_93 = true;
+    x_94 = 0.0f;
+    break;
+  }
+  float const x_116 = x_94;
+  return x_116;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..278320d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,308 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 156
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_29 "x_29"
+               OpName %x_30 "x_30"
+               OpName %x_31 "x_31"
+               OpName %x_32 "x_32"
+               OpName %x_33 "x_33"
+               OpName %x_34 "x_34"
+               OpName %x_35 "x_35"
+               OpName %x_36 "x_36"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_f1_ "func_f1_"
+               OpName %x "x"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %a "a"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %16 = OpConstantNull %bool
+%_ptr_Function_float = OpTypePointer Function %float
+         %19 = OpConstantNull %float
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+    %float_6 = OpConstant %float 6
+    %float_5 = OpConstant %float 5
+        %105 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %106 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %107 = OpTypeFunction %void %main_out
+        %119 = OpTypeFunction %float %_ptr_Function_float
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %x_29 = OpVariable %_ptr_Function_bool Function %16
+       %x_30 = OpVariable %_ptr_Function_float Function %19
+       %x_31 = OpVariable %_ptr_Function_float Function %19
+       %x_32 = OpVariable %_ptr_Function_float Function %19
+       %x_33 = OpVariable %_ptr_Function_bool Function %16
+       %x_34 = OpVariable %_ptr_Function_float Function %19
+       %x_35 = OpVariable %_ptr_Function_float Function %19
+       %x_36 = OpVariable %_ptr_Function_float Function %19
+          %f = OpVariable %_ptr_Function_float Function %19
+          %i = OpVariable %_ptr_Function_float Function %19
+      %param = OpVariable %_ptr_Function_float Function %19
+    %param_1 = OpVariable %_ptr_Function_float Function %19
+               OpStore %x_29 %false
+               OpStore %x_33 %false
+               OpStore %f %float_0
+               OpStore %i %float_0
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %float %i
+               OpStore %param %35
+               OpStore %x_33 %false
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %float %param
+               OpStore %x_35 %40
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %float %x_35
+         %46 = OpLoad %float %param
+         %47 = OpFOrdEqual %bool %45 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %50 = OpLoad %float %x_35
+               OpStore %x_33 %true
+               OpStore %x_34 %50
+               OpBranch %42
+         %48 = OpLabel
+         %52 = OpLoad %float %x_35
+         %54 = OpFAdd %float %52 %float_1
+               OpStore %x_35 %54
+               OpBranch %43
+         %43 = OpLabel
+         %55 = OpLoad %float %x_35
+         %56 = OpLoad %float %param
+         %57 = OpFOrdLessThan %bool %55 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %42
+         %58 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+         %61 = OpLoad %bool %x_33
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+               OpBranch %37
+         %62 = OpLabel
+               OpStore %x_33 %true
+               OpStore %x_34 %float_0
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+         %64 = OpLoad %float %x_34
+               OpStore %x_36 %64
+               OpStore %f %64
+               OpStore %param_1 %float_1
+               OpStore %x_29 %false
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpLoad %float %param_1
+               OpStore %x_31 %69
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %float %x_31
+         %75 = OpLoad %float %param_1
+         %76 = OpFOrdEqual %bool %74 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpLoad %float %x_31
+               OpStore %x_29 %true
+               OpStore %x_30 %79
+               OpBranch %71
+         %77 = OpLabel
+         %80 = OpLoad %float %x_31
+         %81 = OpFAdd %float %80 %float_1
+               OpStore %x_31 %81
+               OpBranch %72
+         %72 = OpLabel
+         %82 = OpLoad %float %x_31
+         %83 = OpLoad %float %param_1
+         %84 = OpFOrdLessThan %bool %82 %83
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+               OpBranch %85
+         %87 = OpLabel
+               OpBranch %71
+         %85 = OpLabel
+               OpBranch %70
+         %71 = OpLabel
+         %88 = OpLoad %bool %x_29
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+               OpBranch %66
+         %89 = OpLabel
+               OpStore %x_29 %true
+               OpStore %x_30 %float_0
+               OpBranch %66
+         %67 = OpLabel
+               OpBranch %65
+         %66 = OpLabel
+         %91 = OpLoad %float %x_30
+               OpStore %x_32 %91
+         %92 = OpLoad %float %i
+         %93 = OpFAdd %float %92 %91
+               OpStore %i %93
+         %95 = OpFOrdLessThan %bool %93 %float_6
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %98
+         %97 = OpLabel
+               OpBranch %96
+         %98 = OpLabel
+               OpBranch %32
+         %96 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+               OpBranch %31
+         %32 = OpLabel
+         %99 = OpLoad %float %f
+        %101 = OpFOrdEqual %bool %99 %float_5
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpStore %x_GLF_color %105
+               OpBranch %102
+        %104 = OpLabel
+               OpStore %x_GLF_color %106
+               OpBranch %102
+        %102 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %107
+%tint_symbol = OpFunctionParameter %main_out
+        %111 = OpLabel
+        %112 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %112
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+        %114 = OpLabel
+        %115 = OpFunctionCall %void %main_1
+        %117 = OpLoad %v4float %x_GLF_color
+        %118 = OpCompositeConstruct %main_out %117
+        %116 = OpFunctionCall %void %tint_symbol_2 %118
+               OpReturn
+               OpFunctionEnd
+   %func_f1_ = OpFunction %float None %119
+          %x = OpFunctionParameter %_ptr_Function_float
+        %122 = OpLabel
+       %x_93 = OpVariable %_ptr_Function_bool Function %16
+       %x_94 = OpVariable %_ptr_Function_float Function %19
+          %a = OpVariable %_ptr_Function_float Function %19
+               OpStore %x_93 %false
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %131 = OpLoad %float %x
+               OpStore %a %131
+               OpBranch %132
+        %132 = OpLabel
+               OpLoopMerge %133 %134 None
+               OpBranch %135
+        %135 = OpLabel
+        %136 = OpLoad %float %a
+        %138 = OpLoad %float %x
+        %139 = OpFOrdEqual %bool %136 %138
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %140
+        %141 = OpLabel
+        %142 = OpLoad %float %a
+               OpStore %x_93 %true
+               OpStore %x_94 %142
+               OpBranch %133
+        %140 = OpLabel
+        %143 = OpLoad %float %a
+        %144 = OpFAdd %float %143 %float_1
+               OpStore %a %144
+               OpBranch %134
+        %134 = OpLabel
+        %145 = OpLoad %float %a
+        %147 = OpLoad %float %x
+        %148 = OpFOrdLessThan %bool %145 %147
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %151
+        %150 = OpLabel
+               OpBranch %149
+        %151 = OpLabel
+               OpBranch %133
+        %149 = OpLabel
+               OpBranch %132
+        %133 = OpLabel
+        %152 = OpLoad %bool %x_93
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+               OpBranch %127
+        %153 = OpLabel
+               OpStore %x_93 %true
+               OpStore %x_94 %float_0
+               OpBranch %127
+        %128 = OpLabel
+               OpBranch %126
+        %127 = OpLabel
+        %155 = OpLoad %float %x_94
+               OpReturnValue %155
+               OpFunctionEnd
+1:1: The continue construct with the continue target 43[%43] is not post dominated by the back-edge block 58[%58]
+  %58 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..14ef8d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,159 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_29 : bool = false;
+  var x_30 : f32;
+  var x_31 : f32;
+  var x_32 : f32;
+  var x_33 : bool = false;
+  var x_34 : f32;
+  var x_35 : f32;
+  var x_36 : f32;
+  var f : f32;
+  var i : f32;
+  var param : f32;
+  var param_1 : f32;
+  f = 0.0;
+  i = 0.0;
+  loop {
+    let x_38 : f32 = i;
+    param = x_38;
+    x_33 = false;
+    loop {
+      let x_41 : f32 = param;
+      x_35 = x_41;
+      loop {
+        let x_48 : f32 = x_35;
+        let x_49 : f32 = param;
+        if ((x_48 == x_49)) {
+          let x_53 : f32 = x_35;
+          x_33 = true;
+          x_34 = x_53;
+          break;
+        }
+        let x_54 : f32 = x_35;
+        x_35 = (x_54 + 1.0);
+
+        continuing {
+          let x_56 : f32 = x_35;
+          let x_57 : f32 = param;
+          if ((x_56 < x_57)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_59 : bool = x_33;
+      if (x_59) {
+        break;
+      }
+      x_33 = true;
+      x_34 = 0.0;
+      break;
+    }
+    let x_61 : f32 = x_34;
+    x_36 = x_61;
+    f = x_61;
+    param_1 = 1.0;
+    x_29 = false;
+    loop {
+      let x_63 : f32 = param_1;
+      x_31 = x_63;
+      loop {
+        let x_70 : f32 = x_31;
+        let x_71 : f32 = param_1;
+        if ((x_70 == x_71)) {
+          let x_75 : f32 = x_31;
+          x_29 = true;
+          x_30 = x_75;
+          break;
+        }
+        let x_76 : f32 = x_31;
+        x_31 = (x_76 + 1.0);
+
+        continuing {
+          let x_78 : f32 = x_31;
+          let x_79 : f32 = param_1;
+          if ((x_78 < x_79)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_81 : bool = x_29;
+      if (x_81) {
+        break;
+      }
+      x_29 = true;
+      x_30 = 0.0;
+      break;
+    }
+    let x_83 : f32 = x_30;
+    x_32 = x_83;
+    let x_84 : f32 = i;
+    let x_85 : f32 = (x_84 + x_83);
+    i = x_85;
+    if ((x_85 < 6.0)) {
+    } else {
+      break;
+    }
+  }
+  let x_87 : f32 = f;
+  if ((x_87 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_f1_(x : ptr<function, f32>) -> f32 {
+  var x_93 : bool = false;
+  var x_94 : f32;
+  var a : f32;
+  loop {
+    let x_96 : f32 = *(x);
+    a = x_96;
+    loop {
+      let x_103 : f32 = a;
+      let x_104 : f32 = *(x);
+      if ((x_103 == x_104)) {
+        let x_108 : f32 = a;
+        x_93 = true;
+        x_94 = x_108;
+        break;
+      }
+      let x_109 : f32 = a;
+      a = (x_109 + 1.0);
+
+      continuing {
+        let x_111 : f32 = a;
+        let x_112 : f32 = *(x);
+        if ((x_111 < x_112)) {
+        } else {
+          break;
+        }
+      }
+    }
+    let x_114 : bool = x_93;
+    if (x_114) {
+      break;
+    }
+    x_93 = true;
+    x_94 = 0.0;
+    break;
+  }
+  let x_116 : f32 = x_94;
+  return x_116;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm
new file mode 100644
index 0000000..3ccb8a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm
@@ -0,0 +1,154 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %q "q"
+               OpName %i "i"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %c "c"
+               OpName %array0 "array0"
+               OpName %array1 "array1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %q RelaxedPrecision
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %c RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+       %void = OpTypeVoid
+         %28 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Private__arr_float_uint_3 = OpTypePointer Private %_arr_float_uint_3
+     %array0 = OpVariable %_ptr_Private__arr_float_uint_3 Private
+    %float_0 = OpConstant %float 0
+%_ptr_Private_float = OpTypePointer Private %float
+     %array1 = OpVariable %_ptr_Private__arr_float_uint_3 Private
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_61 = OpConstant %int 61
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %28
+         %53 = OpLabel
+          %q = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+               OpStore %q %int_0
+         %54 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %55 = OpLoad %float %54
+         %12 = OpConvertFToS %int %55
+         %13 = OpSMod %int %12 %int_3
+               OpStore %i %13
+               OpStore %c %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %14 = OpLoad %int %c
+         %60 = OpSLessThan %bool %14 %int_3
+               OpBranchConditional %60 %61 %57
+         %61 = OpLabel
+         %15 = OpLoad %int %c
+         %62 = OpAccessChain %_ptr_Private_float %array0 %15
+               OpStore %62 %float_0
+         %16 = OpLoad %int %c
+         %63 = OpAccessChain %_ptr_Private_float %array1 %16
+               OpStore %63 %float_0
+         %64 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %65 = OpLoad %float %64
+         %17 = OpConvertFToS %int %65
+         %18 = OpLoad %int %q
+         %19 = OpIAdd %int %17 %18
+               OpSelectionMerge %66 None
+               OpSwitch %19 %66 0 %67 51 %68 61 %69
+         %67 = OpLabel
+               OpStore %q %int_61
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+               OpBranchConditional %true %74 %71
+         %74 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+               OpBranch %70
+         %71 = OpLabel
+         %20 = OpLoad %int %c
+         %75 = OpAccessChain %_ptr_Private_float %array0 %20
+               OpStore %75 %float_1
+               OpBranch %69
+         %69 = OpLabel
+         %76 = OpAccessChain %_ptr_Private_float %array1 %int_0
+               OpStore %76 %float_1
+         %21 = OpLoad %int %c
+         %77 = OpAccessChain %_ptr_Private_float %array1 %21
+               OpStore %77 %float_1
+               OpBranch %66
+         %66 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+         %22 = OpLoad %int %c
+         %23 = OpIAdd %int %22 %int_1
+               OpStore %c %23
+               OpBranch %56
+         %57 = OpLabel
+         %24 = OpLoad %int %i
+         %78 = OpAccessChain %_ptr_Private_float %array1 %24
+         %79 = OpLoad %float %78
+         %25 = OpLoad %int %i
+         %80 = OpAccessChain %_ptr_Private_float %array0 %25
+         %81 = OpLoad %float %80
+         %26 = OpLoad %int %i
+         %82 = OpAccessChain %_ptr_Private_float %array0 %26
+         %83 = OpLoad %float %82
+         %84 = OpCompositeConstruct %v4float %79 %81 %83 %float_1
+               OpStore %_GLF_color %84
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.hlsl
new file mode 100755
index 0000000..d17d70d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float array0[3] = (float[3])0;
+static float array1[3] = (float[3])0;
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int q = 0;
+  int i = 0;
+  int c = 0;
+  q = 0;
+  const float x_55 = gl_FragCoord.x;
+  i = (int(x_55) % 3);
+  c = 0;
+  {
+    for(; (c < 3); c = (c + 1)) {
+      array0[c] = 0.0f;
+      array1[c] = 0.0f;
+      const float x_65 = asfloat(x_11[0].x);
+      switch((int(x_65) + q)) {
+        case 51: {
+          while (true) {
+            if (true) {
+            } else {
+              break;
+            }
+          }
+          array0[c] = 1.0f;
+          /* fallthrough */
+        }
+        case 61: {
+          array1[0] = 1.0f;
+          array1[c] = 1.0f;
+          break;
+        }
+        case 0: {
+          q = 61;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+    }
+  }
+  const float x_79 = array1[i];
+  const float x_81 = array0[i];
+  const float x_83 = array0[i];
+  x_GLF_color = float4(x_79, x_81, x_83, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+Internal compiler error: access violation. Attempted to read from address 0xFFFFFFFFFFFFFFE8
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f9b0707
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.msl
@@ -0,0 +1,89 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_11, thread float4* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6, thread tint_array_wrapper* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  int q = 0;
+  int i = 0;
+  int c = 0;
+  q = 0;
+  float const x_55 = (*(tint_symbol_5)).x;
+  i = (int(x_55) % 3);
+  c = 0;
+  while (true) {
+    int const x_14 = c;
+    if ((x_14 < 3)) {
+    } else {
+      break;
+    }
+    int const x_15 = c;
+    (*(tint_symbol_6)).arr[x_15] = 0.0f;
+    int const x_16 = c;
+    (*(tint_symbol_7)).arr[x_16] = 0.0f;
+    float const x_65 = x_11.injectionSwitch.x;
+    int const x_18 = q;
+    switch((int(x_65) + x_18)) {
+      case 51: {
+        while (true) {
+          if (true) {
+          } else {
+            break;
+          }
+        }
+        int const x_20 = c;
+        (*(tint_symbol_6)).arr[x_20] = 1.0f;
+        /* fallthrough */
+      }
+      case 61: {
+        (*(tint_symbol_7)).arr[0] = 1.0f;
+        int const x_21 = c;
+        (*(tint_symbol_7)).arr[x_21] = 1.0f;
+        break;
+      }
+      case 0: {
+        q = 61;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_22 = c;
+      c = (x_22 + 1);
+    }
+  }
+  int const x_24 = i;
+  float const x_79 = (*(tint_symbol_7)).arr[x_24];
+  int const x_25 = i;
+  float const x_81 = (*(tint_symbol_6)).arr[x_25];
+  int const x_26 = i;
+  float const x_83 = (*(tint_symbol_6)).arr[x_26];
+  *(tint_symbol_8) = float4(x_79, x_81, x_83, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread tint_array_wrapper tint_symbol_10 = {};
+  thread tint_array_wrapper tint_symbol_11 = {};
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_11, &(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..eabbd52
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,185 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %array0 "array0"
+               OpName %array1 "array1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %q "q"
+               OpName %i "i"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Private__arr_float_uint_3 = OpTypePointer Private %_arr_float_uint_3
+         %11 = OpConstantNull %_arr_float_uint_3
+     %array0 = OpVariable %_ptr_Private__arr_float_uint_3 Private %11
+     %array1 = OpVariable %_ptr_Private__arr_float_uint_3 Private %11
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+     %int_61 = OpConstant %int 61
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %94 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %q = OpVariable %_ptr_Function_int Function %29
+          %i = OpVariable %_ptr_Function_int Function %29
+          %c = OpVariable %_ptr_Function_int Function %29
+               OpStore %q %int_0
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %36 = OpLoad %float %35
+         %37 = OpConvertFToS %int %36
+         %39 = OpSMod %int %37 %int_3
+               OpStore %i %39
+               OpStore %c %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %c
+         %45 = OpSLessThan %bool %44 %int_3
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %49
+         %48 = OpLabel
+               OpBranch %47
+         %49 = OpLabel
+               OpBranch %41
+         %47 = OpLabel
+         %50 = OpLoad %int %c
+         %51 = OpAccessChain %_ptr_Private_float %array0 %50
+               OpStore %51 %float_0
+         %53 = OpLoad %int %c
+         %54 = OpAccessChain %_ptr_Private_float %array1 %53
+               OpStore %54 %float_0
+         %56 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_0
+         %57 = OpLoad %float %56
+         %58 = OpLoad %int %q
+         %60 = OpConvertFToS %int %57
+         %61 = OpIAdd %int %60 %58
+               OpSelectionMerge %59 None
+               OpSwitch %61 %62 51 %63 61 %64 0 %65
+         %63 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+               OpSelectionMerge %71 None
+               OpBranchConditional %true %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %67
+         %71 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %66
+         %67 = OpLabel
+         %74 = OpLoad %int %c
+         %75 = OpAccessChain %_ptr_Private_float %array0 %74
+               OpStore %75 %float_1
+               OpBranch %64
+         %64 = OpLabel
+         %77 = OpAccessChain %_ptr_Private_float %array1 %int_0
+               OpStore %77 %float_1
+         %78 = OpLoad %int %c
+         %79 = OpAccessChain %_ptr_Private_float %array1 %78
+               OpStore %79 %float_1
+               OpBranch %59
+         %65 = OpLabel
+               OpStore %q %int_61
+               OpBranch %59
+         %62 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+         %81 = OpLoad %int %c
+         %83 = OpIAdd %int %81 %int_1
+               OpStore %c %83
+               OpBranch %40
+         %41 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpAccessChain %_ptr_Private_float %array1 %84
+         %86 = OpLoad %float %85
+         %87 = OpLoad %int %i
+         %88 = OpAccessChain %_ptr_Private_float %array0 %87
+         %89 = OpLoad %float %88
+         %90 = OpLoad %int %i
+         %91 = OpAccessChain %_ptr_Private_float %array0 %90
+         %92 = OpLoad %float %91
+         %93 = OpCompositeConstruct %v4float %86 %89 %92 %float_1
+               OpStore %x_GLF_color %93
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %94
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %98 = OpLabel
+         %99 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %99
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %101 = OpLabel
+        %102 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %102
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_3 %106
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f6836ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,85 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> array0 : array<f32, 3>;
+
+var<private> array1 : array<f32, 3>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var q : i32;
+  var i : i32;
+  var c : i32;
+  q = 0;
+  let x_55 : f32 = gl_FragCoord.x;
+  i = (i32(x_55) % 3);
+  c = 0;
+  loop {
+    let x_14 : i32 = c;
+    if ((x_14 < 3)) {
+    } else {
+      break;
+    }
+    let x_15 : i32 = c;
+    array0[x_15] = 0.0;
+    let x_16 : i32 = c;
+    array1[x_16] = 0.0;
+    let x_65 : f32 = x_11.injectionSwitch.x;
+    let x_18 : i32 = q;
+    switch((i32(x_65) + x_18)) {
+      case 51: {
+        loop {
+          if (true) {
+          } else {
+            break;
+          }
+        }
+        let x_20 : i32 = c;
+        array0[x_20] = 1.0;
+        fallthrough;
+      }
+      case 61: {
+        array1[0] = 1.0;
+        let x_21 : i32 = c;
+        array1[x_21] = 1.0;
+      }
+      case 0: {
+        q = 61;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_22 : i32 = c;
+      c = (x_22 + 1);
+    }
+  }
+  let x_24 : i32 = i;
+  let x_79 : f32 = array1[x_24];
+  let x_25 : i32 = i;
+  let x_81 : f32 = array0[x_25];
+  let x_26 : i32 = i;
+  let x_83 : f32 = array0[x_26];
+  x_GLF_color = vec4<f32>(x_79, x_81, x_83, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
new file mode 100644
index 0000000..f6836ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
@@ -0,0 +1,85 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> array0 : array<f32, 3>;
+
+var<private> array1 : array<f32, 3>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var q : i32;
+  var i : i32;
+  var c : i32;
+  q = 0;
+  let x_55 : f32 = gl_FragCoord.x;
+  i = (i32(x_55) % 3);
+  c = 0;
+  loop {
+    let x_14 : i32 = c;
+    if ((x_14 < 3)) {
+    } else {
+      break;
+    }
+    let x_15 : i32 = c;
+    array0[x_15] = 0.0;
+    let x_16 : i32 = c;
+    array1[x_16] = 0.0;
+    let x_65 : f32 = x_11.injectionSwitch.x;
+    let x_18 : i32 = q;
+    switch((i32(x_65) + x_18)) {
+      case 51: {
+        loop {
+          if (true) {
+          } else {
+            break;
+          }
+        }
+        let x_20 : i32 = c;
+        array0[x_20] = 1.0;
+        fallthrough;
+      }
+      case 61: {
+        array1[0] = 1.0;
+        let x_21 : i32 = c;
+        array1[x_21] = 1.0;
+      }
+      case 0: {
+        q = 61;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_22 : i32 = c;
+      c = (x_22 + 1);
+    }
+  }
+  let x_24 : i32 = i;
+  let x_79 : f32 = array1[x_24];
+  let x_25 : i32 = i;
+  let x_81 : f32 = array0[x_25];
+  let x_26 : i32 = i;
+  let x_83 : f32 = array0[x_26];
+  x_GLF_color = vec4<f32>(x_79, x_81, x_83, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.hlsl
new file mode 100755
index 0000000..d17d70d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,76 @@
+SKIP: FAILED
+
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float array0[3] = (float[3])0;
+static float array1[3] = (float[3])0;
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int q = 0;
+  int i = 0;
+  int c = 0;
+  q = 0;
+  const float x_55 = gl_FragCoord.x;
+  i = (int(x_55) % 3);
+  c = 0;
+  {
+    for(; (c < 3); c = (c + 1)) {
+      array0[c] = 0.0f;
+      array1[c] = 0.0f;
+      const float x_65 = asfloat(x_11[0].x);
+      switch((int(x_65) + q)) {
+        case 51: {
+          while (true) {
+            if (true) {
+            } else {
+              break;
+            }
+          }
+          array0[c] = 1.0f;
+          /* fallthrough */
+        }
+        case 61: {
+          array1[0] = 1.0f;
+          array1[c] = 1.0f;
+          break;
+        }
+        case 0: {
+          q = 61;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+    }
+  }
+  const float x_79 = array1[i];
+  const float x_81 = array0[i];
+  const float x_83 = array0[i];
+  x_GLF_color = float4(x_79, x_81, x_83, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+Internal compiler error: access violation. Attempted to read from address 0xFFFFFFFFFFFFFFE8
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f9b0707
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.msl
@@ -0,0 +1,89 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_11, thread float4* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6, thread tint_array_wrapper* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  int q = 0;
+  int i = 0;
+  int c = 0;
+  q = 0;
+  float const x_55 = (*(tint_symbol_5)).x;
+  i = (int(x_55) % 3);
+  c = 0;
+  while (true) {
+    int const x_14 = c;
+    if ((x_14 < 3)) {
+    } else {
+      break;
+    }
+    int const x_15 = c;
+    (*(tint_symbol_6)).arr[x_15] = 0.0f;
+    int const x_16 = c;
+    (*(tint_symbol_7)).arr[x_16] = 0.0f;
+    float const x_65 = x_11.injectionSwitch.x;
+    int const x_18 = q;
+    switch((int(x_65) + x_18)) {
+      case 51: {
+        while (true) {
+          if (true) {
+          } else {
+            break;
+          }
+        }
+        int const x_20 = c;
+        (*(tint_symbol_6)).arr[x_20] = 1.0f;
+        /* fallthrough */
+      }
+      case 61: {
+        (*(tint_symbol_7)).arr[0] = 1.0f;
+        int const x_21 = c;
+        (*(tint_symbol_7)).arr[x_21] = 1.0f;
+        break;
+      }
+      case 0: {
+        q = 61;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_22 = c;
+      c = (x_22 + 1);
+    }
+  }
+  int const x_24 = i;
+  float const x_79 = (*(tint_symbol_7)).arr[x_24];
+  int const x_25 = i;
+  float const x_81 = (*(tint_symbol_6)).arr[x_25];
+  int const x_26 = i;
+  float const x_83 = (*(tint_symbol_6)).arr[x_26];
+  *(tint_symbol_8) = float4(x_79, x_81, x_83, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread tint_array_wrapper tint_symbol_10 = {};
+  thread tint_array_wrapper tint_symbol_11 = {};
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_11, &(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..eabbd52
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,185 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %array0 "array0"
+               OpName %array1 "array1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %q "q"
+               OpName %i "i"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Private__arr_float_uint_3 = OpTypePointer Private %_arr_float_uint_3
+         %11 = OpConstantNull %_arr_float_uint_3
+     %array0 = OpVariable %_ptr_Private__arr_float_uint_3 Private %11
+     %array1 = OpVariable %_ptr_Private__arr_float_uint_3 Private %11
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+     %int_61 = OpConstant %int 61
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %94 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %q = OpVariable %_ptr_Function_int Function %29
+          %i = OpVariable %_ptr_Function_int Function %29
+          %c = OpVariable %_ptr_Function_int Function %29
+               OpStore %q %int_0
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %36 = OpLoad %float %35
+         %37 = OpConvertFToS %int %36
+         %39 = OpSMod %int %37 %int_3
+               OpStore %i %39
+               OpStore %c %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %c
+         %45 = OpSLessThan %bool %44 %int_3
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %49
+         %48 = OpLabel
+               OpBranch %47
+         %49 = OpLabel
+               OpBranch %41
+         %47 = OpLabel
+         %50 = OpLoad %int %c
+         %51 = OpAccessChain %_ptr_Private_float %array0 %50
+               OpStore %51 %float_0
+         %53 = OpLoad %int %c
+         %54 = OpAccessChain %_ptr_Private_float %array1 %53
+               OpStore %54 %float_0
+         %56 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_0
+         %57 = OpLoad %float %56
+         %58 = OpLoad %int %q
+         %60 = OpConvertFToS %int %57
+         %61 = OpIAdd %int %60 %58
+               OpSelectionMerge %59 None
+               OpSwitch %61 %62 51 %63 61 %64 0 %65
+         %63 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+               OpSelectionMerge %71 None
+               OpBranchConditional %true %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %67
+         %71 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %66
+         %67 = OpLabel
+         %74 = OpLoad %int %c
+         %75 = OpAccessChain %_ptr_Private_float %array0 %74
+               OpStore %75 %float_1
+               OpBranch %64
+         %64 = OpLabel
+         %77 = OpAccessChain %_ptr_Private_float %array1 %int_0
+               OpStore %77 %float_1
+         %78 = OpLoad %int %c
+         %79 = OpAccessChain %_ptr_Private_float %array1 %78
+               OpStore %79 %float_1
+               OpBranch %59
+         %65 = OpLabel
+               OpStore %q %int_61
+               OpBranch %59
+         %62 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+         %81 = OpLoad %int %c
+         %83 = OpIAdd %int %81 %int_1
+               OpStore %c %83
+               OpBranch %40
+         %41 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpAccessChain %_ptr_Private_float %array1 %84
+         %86 = OpLoad %float %85
+         %87 = OpLoad %int %i
+         %88 = OpAccessChain %_ptr_Private_float %array0 %87
+         %89 = OpLoad %float %88
+         %90 = OpLoad %int %i
+         %91 = OpAccessChain %_ptr_Private_float %array0 %90
+         %92 = OpLoad %float %91
+         %93 = OpCompositeConstruct %v4float %86 %89 %92 %float_1
+               OpStore %x_GLF_color %93
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %94
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %98 = OpLabel
+         %99 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %99
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %101 = OpLabel
+        %102 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %102
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_3 %106
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f6836ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,85 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> array0 : array<f32, 3>;
+
+var<private> array1 : array<f32, 3>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var q : i32;
+  var i : i32;
+  var c : i32;
+  q = 0;
+  let x_55 : f32 = gl_FragCoord.x;
+  i = (i32(x_55) % 3);
+  c = 0;
+  loop {
+    let x_14 : i32 = c;
+    if ((x_14 < 3)) {
+    } else {
+      break;
+    }
+    let x_15 : i32 = c;
+    array0[x_15] = 0.0;
+    let x_16 : i32 = c;
+    array1[x_16] = 0.0;
+    let x_65 : f32 = x_11.injectionSwitch.x;
+    let x_18 : i32 = q;
+    switch((i32(x_65) + x_18)) {
+      case 51: {
+        loop {
+          if (true) {
+          } else {
+            break;
+          }
+        }
+        let x_20 : i32 = c;
+        array0[x_20] = 1.0;
+        fallthrough;
+      }
+      case 61: {
+        array1[0] = 1.0;
+        let x_21 : i32 = c;
+        array1[x_21] = 1.0;
+      }
+      case 0: {
+        q = 61;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_22 : i32 = c;
+      c = (x_22 + 1);
+    }
+  }
+  let x_24 : i32 = i;
+  let x_79 : f32 = array1[x_24];
+  let x_25 : i32 = i;
+  let x_81 : f32 = array0[x_25];
+  let x_26 : i32 = i;
+  let x_83 : f32 = array0[x_26];
+  x_GLF_color = vec4<f32>(x_79, x_81, x_83, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm
new file mode 100644
index 0000000..a660e7a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm
@@ -0,0 +1,162 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %f "f"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %r "r"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "injectionSwitch"
+               OpName %__1 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 2
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__1 = OpVariable %_ptr_Uniform_buf2 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+     %uint_1 = OpConstant %uint 1
+    %int_100 = OpConstant %int 100
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %16
+         %40 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+          %r = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_global_loop_count %int_0
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %42 = OpLoad %float %41
+               OpStore %f %42
+         %43 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %44 = OpLoad %int %43
+               OpStore %r %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %r
+         %50 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %49 %51
+               OpBranchConditional %52 %53 %46
+         %53 = OpLabel
+         %54 = OpLoad %int %_GLF_global_loop_count
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %_GLF_global_loop_count %55
+         %56 = OpAccessChain %_ptr_Uniform_v2float %__1 %int_0
+         %57 = OpLoad %v2float %56
+         %58 = OpDPdx %v2float %57
+         %59 = OpCompositeExtract %float %58 1
+         %60 = OpLoad %float %f
+         %61 = OpFAdd %float %60 %59
+               OpStore %f %61
+               OpBranch %47
+         %47 = OpLabel
+         %62 = OpLoad %int %r
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %r %63
+               OpBranch %45
+         %46 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %_GLF_global_loop_count
+         %69 = OpSLessThan %bool %68 %int_100
+               OpBranchConditional %69 %70 %65
+         %70 = OpLabel
+         %71 = OpLoad %int %_GLF_global_loop_count
+         %72 = OpIAdd %int %71 %int_1
+               OpStore %_GLF_global_loop_count %72
+         %73 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %74 = OpLoad %float %73
+         %75 = OpLoad %float %f
+         %76 = OpFAdd %float %75 %74
+               OpStore %f %76
+               OpBranch %66
+         %66 = OpLabel
+               OpBranch %64
+         %65 = OpLabel
+         %77 = OpLoad %float %f
+         %78 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %79 = OpLoad %float %78
+         %80 = OpFOrdEqual %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %85
+         %87 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpCompositeConstruct %v4float %86 %89 %92 %95
+               OpStore %_GLF_color %96
+               OpBranch %81
+         %83 = OpLabel
+         %97 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpConvertSToF %float %98
+        %100 = OpCompositeConstruct %v4float %99 %99 %99 %99
+               OpStore %_GLF_color %100
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f469577
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,76 @@
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[3];
+};
+cbuffer cbuffer_x_12 : register(b2, space0) {
+  uint4 x_12[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int r = 0;
+  x_GLF_global_loop_count = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  f = x_42;
+  const int x_44 = asint(x_10[1].x);
+  r = x_44;
+  while (true) {
+    const int x_49 = r;
+    const int x_51 = asint(x_10[2].x);
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    const float2 x_57 = asfloat(x_12[0].xy);
+    f = (f + ddx(x_57).y);
+    {
+      r = (r + 1);
+    }
+  }
+  while (true) {
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_74 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    f = (f + x_74);
+  }
+  const float x_77 = f;
+  const float x_79 = asfloat(x_7[1].x);
+  if ((x_77 == x_79)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_85 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_88 = asint(x_10[1].x);
+    const int x_91 = asint(x_10[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_94 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_85), float(x_88), float(x_91), float(x_94));
+  } else {
+    const int x_98 = asint(x_10[1].x);
+    const float x_99 = float(x_98);
+    x_GLF_color = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8361b24
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.msl
@@ -0,0 +1,95 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_10, constant buf2& x_12, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  float f = 0.0f;
+  int r = 0;
+  *(tint_symbol_4) = 0;
+  float const x_42 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  f = x_42;
+  int const x_44 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  r = x_44;
+  while (true) {
+    int const x_49 = r;
+    int const x_51 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    int const x_54 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_54 + 1);
+    float2 const x_57 = x_12.injectionSwitch;
+    float const x_60 = f;
+    f = (x_60 + dfdx(x_57).y);
+    {
+      int const x_62 = r;
+      r = (x_62 + 1);
+    }
+  }
+  while (true) {
+    int const x_68 = *(tint_symbol_4);
+    if ((x_68 < 100)) {
+    } else {
+      break;
+    }
+    int const x_71 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_71 + 1);
+    float const x_74 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_75 = f;
+    f = (x_75 + x_74);
+  }
+  float const x_77 = f;
+  float const x_79 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_77 == x_79)) {
+    int const x_85 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_88 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_91 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_94 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_85), float(x_88), float(x_91), float(x_94));
+  } else {
+    int const x_98 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_99 = float(x_98);
+    *(tint_symbol_5) = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]], constant buf2& x_12 [[buffer(2)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_10, x_12, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..c816929
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,207 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 121
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "injectionSwitch"
+               OpName %x_12 "x_12"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %r "r"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 2
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_12 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %24 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %24
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %24
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %33 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %int_100 = OpConstant %int 100
+   %main_out = OpTypeStruct %v4float
+        %109 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %33
+          %r = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+         %39 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %40 = OpLoad %float %39
+               OpStore %f %40
+         %43 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %44 = OpLoad %int %43
+               OpStore %r %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %r
+         %51 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %52 = OpLoad %int %51
+         %53 = OpSLessThan %bool %49 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %53 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %46
+         %55 = OpLabel
+         %58 = OpLoad %int %x_GLF_global_loop_count
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %x_GLF_global_loop_count %59
+         %61 = OpAccessChain %_ptr_Uniform_v2float %x_12 %uint_0
+         %62 = OpLoad %v2float %61
+         %63 = OpLoad %float %f
+         %64 = OpDPdx %v2float %62
+         %65 = OpCompositeExtract %float %64 1
+         %66 = OpFAdd %float %63 %65
+               OpStore %f %66
+               OpBranch %47
+         %47 = OpLabel
+         %67 = OpLoad %int %r
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %r %68
+               OpBranch %45
+         %46 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %x_GLF_global_loop_count
+         %75 = OpSLessThan %bool %73 %int_100
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+               OpBranch %76
+         %78 = OpLabel
+               OpBranch %70
+         %76 = OpLabel
+         %79 = OpLoad %int %x_GLF_global_loop_count
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %x_GLF_global_loop_count %80
+         %81 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %82 = OpLoad %float %81
+         %83 = OpLoad %float %f
+         %84 = OpFAdd %float %83 %82
+               OpStore %f %84
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %69
+         %70 = OpLabel
+         %85 = OpLoad %float %f
+         %86 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %87 = OpLoad %float %86
+         %88 = OpFOrdEqual %bool %85 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %94 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %99 = OpLoad %int %98
+        %100 = OpConvertSToF %float %93
+        %101 = OpConvertSToF %float %95
+        %102 = OpConvertSToF %float %97
+        %103 = OpConvertSToF %float %99
+        %104 = OpCompositeConstruct %v4float %100 %101 %102 %103
+               OpStore %x_GLF_color %104
+               OpBranch %89
+         %91 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %106 = OpLoad %int %105
+        %107 = OpConvertSToF %float %106
+        %108 = OpCompositeConstruct %v4float %107 %107 %107 %107
+               OpStore %x_GLF_color %108
+               OpBranch %89
+         %89 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %109
+%tint_symbol = OpFunctionParameter %main_out
+        %113 = OpLabel
+        %114 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %114
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+        %116 = OpLabel
+        %117 = OpFunctionCall %void %main_1
+        %119 = OpLoad %v4float %x_GLF_color
+        %120 = OpCompositeConstruct %main_out %119
+        %118 = OpFunctionCall %void %tint_symbol_2 %120
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d3e05f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,93 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[block]]
+struct buf2 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var r : i32;
+  x_GLF_global_loop_count = 0;
+  let x_42 : f32 = x_7.x_GLF_uniform_float_values[0];
+  f = x_42;
+  let x_44 : i32 = x_10.x_GLF_uniform_int_values[1];
+  r = x_44;
+  loop {
+    let x_49 : i32 = r;
+    let x_51 : i32 = x_10.x_GLF_uniform_int_values[2];
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    let x_54 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_54 + 1);
+    let x_57 : vec2<f32> = x_12.injectionSwitch;
+    let x_60 : f32 = f;
+    f = (x_60 + dpdx(x_57).y);
+
+    continuing {
+      let x_62 : i32 = r;
+      r = (x_62 + 1);
+    }
+  }
+  loop {
+    let x_68 : i32 = x_GLF_global_loop_count;
+    if ((x_68 < 100)) {
+    } else {
+      break;
+    }
+    let x_71 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_71 + 1);
+    let x_74 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_75 : f32 = f;
+    f = (x_75 + x_74);
+  }
+  let x_77 : f32 = f;
+  let x_79 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((x_77 == x_79)) {
+    let x_85 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_88 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_91 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_94 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_85), f32(x_88), f32(x_91), f32(x_94));
+  } else {
+    let x_98 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_99 : f32 = f32(x_98);
+    x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
new file mode 100644
index 0000000..d3e05f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
@@ -0,0 +1,93 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[block]]
+struct buf2 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var r : i32;
+  x_GLF_global_loop_count = 0;
+  let x_42 : f32 = x_7.x_GLF_uniform_float_values[0];
+  f = x_42;
+  let x_44 : i32 = x_10.x_GLF_uniform_int_values[1];
+  r = x_44;
+  loop {
+    let x_49 : i32 = r;
+    let x_51 : i32 = x_10.x_GLF_uniform_int_values[2];
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    let x_54 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_54 + 1);
+    let x_57 : vec2<f32> = x_12.injectionSwitch;
+    let x_60 : f32 = f;
+    f = (x_60 + dpdx(x_57).y);
+
+    continuing {
+      let x_62 : i32 = r;
+      r = (x_62 + 1);
+    }
+  }
+  loop {
+    let x_68 : i32 = x_GLF_global_loop_count;
+    if ((x_68 < 100)) {
+    } else {
+      break;
+    }
+    let x_71 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_71 + 1);
+    let x_74 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_75 : f32 = f;
+    f = (x_75 + x_74);
+  }
+  let x_77 : f32 = f;
+  let x_79 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((x_77 == x_79)) {
+    let x_85 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_88 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_91 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_94 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_85), f32(x_88), f32(x_91), f32(x_94));
+  } else {
+    let x_98 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_99 : f32 = f32(x_98);
+    x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f469577
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,76 @@
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[3];
+};
+cbuffer cbuffer_x_12 : register(b2, space0) {
+  uint4 x_12[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int r = 0;
+  x_GLF_global_loop_count = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  f = x_42;
+  const int x_44 = asint(x_10[1].x);
+  r = x_44;
+  while (true) {
+    const int x_49 = r;
+    const int x_51 = asint(x_10[2].x);
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    const float2 x_57 = asfloat(x_12[0].xy);
+    f = (f + ddx(x_57).y);
+    {
+      r = (r + 1);
+    }
+  }
+  while (true) {
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_74 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    f = (f + x_74);
+  }
+  const float x_77 = f;
+  const float x_79 = asfloat(x_7[1].x);
+  if ((x_77 == x_79)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_85 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_88 = asint(x_10[1].x);
+    const int x_91 = asint(x_10[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_94 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_85), float(x_88), float(x_91), float(x_94));
+  } else {
+    const int x_98 = asint(x_10[1].x);
+    const float x_99 = float(x_98);
+    x_GLF_color = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8361b24
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.msl
@@ -0,0 +1,95 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_10, constant buf2& x_12, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  float f = 0.0f;
+  int r = 0;
+  *(tint_symbol_4) = 0;
+  float const x_42 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  f = x_42;
+  int const x_44 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  r = x_44;
+  while (true) {
+    int const x_49 = r;
+    int const x_51 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    int const x_54 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_54 + 1);
+    float2 const x_57 = x_12.injectionSwitch;
+    float const x_60 = f;
+    f = (x_60 + dfdx(x_57).y);
+    {
+      int const x_62 = r;
+      r = (x_62 + 1);
+    }
+  }
+  while (true) {
+    int const x_68 = *(tint_symbol_4);
+    if ((x_68 < 100)) {
+    } else {
+      break;
+    }
+    int const x_71 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_71 + 1);
+    float const x_74 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_75 = f;
+    f = (x_75 + x_74);
+  }
+  float const x_77 = f;
+  float const x_79 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_77 == x_79)) {
+    int const x_85 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_88 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_91 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_94 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_85), float(x_88), float(x_91), float(x_94));
+  } else {
+    int const x_98 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_99 = float(x_98);
+    *(tint_symbol_5) = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]], constant buf2& x_12 [[buffer(2)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_10, x_12, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..c816929
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,207 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 121
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "injectionSwitch"
+               OpName %x_12 "x_12"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %r "r"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 2
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_12 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %24 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %24
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %24
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %33 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %int_100 = OpConstant %int 100
+   %main_out = OpTypeStruct %v4float
+        %109 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %33
+          %r = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+         %39 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %40 = OpLoad %float %39
+               OpStore %f %40
+         %43 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %44 = OpLoad %int %43
+               OpStore %r %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %r
+         %51 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %52 = OpLoad %int %51
+         %53 = OpSLessThan %bool %49 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %53 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %46
+         %55 = OpLabel
+         %58 = OpLoad %int %x_GLF_global_loop_count
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %x_GLF_global_loop_count %59
+         %61 = OpAccessChain %_ptr_Uniform_v2float %x_12 %uint_0
+         %62 = OpLoad %v2float %61
+         %63 = OpLoad %float %f
+         %64 = OpDPdx %v2float %62
+         %65 = OpCompositeExtract %float %64 1
+         %66 = OpFAdd %float %63 %65
+               OpStore %f %66
+               OpBranch %47
+         %47 = OpLabel
+         %67 = OpLoad %int %r
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %r %68
+               OpBranch %45
+         %46 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %x_GLF_global_loop_count
+         %75 = OpSLessThan %bool %73 %int_100
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+               OpBranch %76
+         %78 = OpLabel
+               OpBranch %70
+         %76 = OpLabel
+         %79 = OpLoad %int %x_GLF_global_loop_count
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %x_GLF_global_loop_count %80
+         %81 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %82 = OpLoad %float %81
+         %83 = OpLoad %float %f
+         %84 = OpFAdd %float %83 %82
+               OpStore %f %84
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %69
+         %70 = OpLabel
+         %85 = OpLoad %float %f
+         %86 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %87 = OpLoad %float %86
+         %88 = OpFOrdEqual %bool %85 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %94 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %99 = OpLoad %int %98
+        %100 = OpConvertSToF %float %93
+        %101 = OpConvertSToF %float %95
+        %102 = OpConvertSToF %float %97
+        %103 = OpConvertSToF %float %99
+        %104 = OpCompositeConstruct %v4float %100 %101 %102 %103
+               OpStore %x_GLF_color %104
+               OpBranch %89
+         %91 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %106 = OpLoad %int %105
+        %107 = OpConvertSToF %float %106
+        %108 = OpCompositeConstruct %v4float %107 %107 %107 %107
+               OpStore %x_GLF_color %108
+               OpBranch %89
+         %89 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %109
+%tint_symbol = OpFunctionParameter %main_out
+        %113 = OpLabel
+        %114 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %114
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+        %116 = OpLabel
+        %117 = OpFunctionCall %void %main_1
+        %119 = OpLoad %v4float %x_GLF_color
+        %120 = OpCompositeConstruct %main_out %119
+        %118 = OpFunctionCall %void %tint_symbol_2 %120
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d3e05f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,93 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[block]]
+struct buf2 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var r : i32;
+  x_GLF_global_loop_count = 0;
+  let x_42 : f32 = x_7.x_GLF_uniform_float_values[0];
+  f = x_42;
+  let x_44 : i32 = x_10.x_GLF_uniform_int_values[1];
+  r = x_44;
+  loop {
+    let x_49 : i32 = r;
+    let x_51 : i32 = x_10.x_GLF_uniform_int_values[2];
+    if ((x_49 < x_51)) {
+    } else {
+      break;
+    }
+    let x_54 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_54 + 1);
+    let x_57 : vec2<f32> = x_12.injectionSwitch;
+    let x_60 : f32 = f;
+    f = (x_60 + dpdx(x_57).y);
+
+    continuing {
+      let x_62 : i32 = r;
+      r = (x_62 + 1);
+    }
+  }
+  loop {
+    let x_68 : i32 = x_GLF_global_loop_count;
+    if ((x_68 < 100)) {
+    } else {
+      break;
+    }
+    let x_71 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_71 + 1);
+    let x_74 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_75 : f32 = f;
+    f = (x_75 + x_74);
+  }
+  let x_77 : f32 = f;
+  let x_79 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((x_77 == x_79)) {
+    let x_85 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_88 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_91 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_94 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_85), f32(x_88), f32(x_91), f32(x_94));
+  } else {
+    let x_98 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_99 : f32 = f32(x_98);
+    x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm
new file mode 100644
index 0000000..4e0f99a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm
@@ -0,0 +1,118 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_2 = OpConstant %int 2
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function_float Function
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %37 = OpLoad %float %36
+               OpStore %f %37
+         %38 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %39 = OpLoad %int %38
+               OpStore %i %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpSGreaterThan %bool %44 %46
+               OpBranchConditional %47 %48 %41
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpConvertSToF %float %49
+         %51 = OpExtInst %float %1 FMax %float_1 %50
+         %52 = OpFSub %float %float_1 %51
+               OpStore %a %52
+         %53 = OpLoad %float %a
+         %54 = OpExtInst %float %1 FMax %53 %float_0
+         %55 = OpExtInst %float %1 FMin %54 %float_0
+               OpStore %f %55
+               OpBranch %42
+         %42 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpISub %int %56 %int_1
+               OpStore %i %57
+               OpBranch %40
+         %41 = OpLabel
+         %58 = OpLoad %float %f
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %60 = OpLoad %float %59
+         %61 = OpFOrdEqual %bool %58 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpLoad %float %f
+         %69 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %70
+         %72 = OpCompositeConstruct %v4float %67 %68 %71 %float_1
+               OpStore %_GLF_color %72
+               OpBranch %62
+         %64 = OpLabel
+               OpStore %_GLF_color %34
+               OpBranch %62
+         %62 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d60898f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int i = 0;
+  float a = 0.0f;
+  const float x_37 = asfloat(x_6[1].x);
+  f = x_37;
+  const int x_39 = asint(x_9[1].x);
+  i = x_39;
+  while (true) {
+    const int x_44 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_9[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_44 > x_46)) {
+    } else {
+      break;
+    }
+    a = (1.0f - max(1.0f, float(i)));
+    f = min(max(a, 0.0f), 0.0f);
+    {
+      i = (i - 1);
+    }
+  }
+  const float x_58 = f;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_60 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_58 == x_60)) {
+    const int x_66 = asint(x_9[2].x);
+    const float x_68 = f;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_70 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_66), x_68, float(x_70), 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..c3d3e97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  int i = 0;
+  float a = 0.0f;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  f = x_37;
+  int const x_39 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_39;
+  while (true) {
+    int const x_44 = i;
+    int const x_46 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_44 > x_46)) {
+    } else {
+      break;
+    }
+    int const x_49 = i;
+    a = (1.0f - fmax(1.0f, float(x_49)));
+    float const x_53 = a;
+    f = fmin(fmax(x_53, 0.0f), 0.0f);
+    {
+      int const x_56 = i;
+      i = (x_56 - 1);
+    }
+  }
+  float const x_58 = f;
+  float const x_60 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_58 == x_60)) {
+    int const x_66 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_68 = f;
+    int const x_70 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_66), x_68, float(x_70), 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b1d5a29
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,159 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 93
+; Schema: 0
+               OpCapability Shader
+         %55 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+         %80 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %81 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %29
+          %a = OpVariable %_ptr_Function_float Function %26
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %35 = OpLoad %float %34
+               OpStore %f %35
+         %37 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpSGreaterThan %bool %43 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %40
+         %49 = OpLabel
+         %52 = OpLoad %int %i
+         %56 = OpConvertSToF %float %52
+         %54 = OpExtInst %float %55 NMax %float_1 %56
+         %57 = OpFSub %float %float_1 %54
+               OpStore %a %57
+         %58 = OpLoad %float %a
+         %60 = OpExtInst %float %55 NMax %58 %float_0
+         %59 = OpExtInst %float %55 NMin %60 %float_0
+               OpStore %f %59
+               OpBranch %41
+         %41 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpISub %int %62 %int_1
+               OpStore %i %63
+               OpBranch %39
+         %40 = OpLabel
+         %64 = OpLoad %float %f
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpFOrdEqual %bool %64 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %73 = OpLoad %int %72
+         %74 = OpLoad %float %f
+         %75 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %73
+         %78 = OpConvertSToF %float %76
+         %79 = OpCompositeConstruct %v4float %77 %74 %78 %float_1
+               OpStore %x_GLF_color %79
+               OpBranch %68
+         %70 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %81
+%tint_symbol = OpFunctionParameter %main_out
+         %85 = OpLabel
+         %86 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %86
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %88 = OpLabel
+         %89 = OpFunctionCall %void %main_1
+         %91 = OpLoad %v4float %x_GLF_color
+         %92 = OpCompositeConstruct %main_out %91
+         %90 = OpFunctionCall %void %tint_symbol_2 %92
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..973feb9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,68 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var a : f32;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[1];
+  f = x_37;
+  let x_39 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_39;
+  loop {
+    let x_44 : i32 = i;
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_44 > x_46)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = i;
+    a = (1.0 - max(1.0, f32(x_49)));
+    let x_53 : f32 = a;
+    f = min(max(x_53, 0.0), 0.0);
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 - 1);
+    }
+  }
+  let x_58 : f32 = f;
+  let x_60 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_58 == x_60)) {
+    let x_66 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_68 : f32 = f;
+    let x_70 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_66), x_68, f32(x_70), 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
new file mode 100644
index 0000000..973feb9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
@@ -0,0 +1,68 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var a : f32;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[1];
+  f = x_37;
+  let x_39 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_39;
+  loop {
+    let x_44 : i32 = i;
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_44 > x_46)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = i;
+    a = (1.0 - max(1.0, f32(x_49)));
+    let x_53 : f32 = a;
+    f = min(max(x_53, 0.0), 0.0);
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 - 1);
+    }
+  }
+  let x_58 : f32 = f;
+  let x_60 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_58 == x_60)) {
+    let x_66 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_68 : f32 = f;
+    let x_70 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_66), x_68, f32(x_70), 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d60898f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int i = 0;
+  float a = 0.0f;
+  const float x_37 = asfloat(x_6[1].x);
+  f = x_37;
+  const int x_39 = asint(x_9[1].x);
+  i = x_39;
+  while (true) {
+    const int x_44 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_9[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_44 > x_46)) {
+    } else {
+      break;
+    }
+    a = (1.0f - max(1.0f, float(i)));
+    f = min(max(a, 0.0f), 0.0f);
+    {
+      i = (i - 1);
+    }
+  }
+  const float x_58 = f;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_60 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_58 == x_60)) {
+    const int x_66 = asint(x_9[2].x);
+    const float x_68 = f;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_70 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_66), x_68, float(x_70), 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..c3d3e97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  int i = 0;
+  float a = 0.0f;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  f = x_37;
+  int const x_39 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_39;
+  while (true) {
+    int const x_44 = i;
+    int const x_46 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_44 > x_46)) {
+    } else {
+      break;
+    }
+    int const x_49 = i;
+    a = (1.0f - fmax(1.0f, float(x_49)));
+    float const x_53 = a;
+    f = fmin(fmax(x_53, 0.0f), 0.0f);
+    {
+      int const x_56 = i;
+      i = (x_56 - 1);
+    }
+  }
+  float const x_58 = f;
+  float const x_60 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_58 == x_60)) {
+    int const x_66 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_68 = f;
+    int const x_70 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_66), x_68, float(x_70), 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b1d5a29
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,159 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 93
+; Schema: 0
+               OpCapability Shader
+         %55 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+         %80 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %81 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %29
+          %a = OpVariable %_ptr_Function_float Function %26
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %35 = OpLoad %float %34
+               OpStore %f %35
+         %37 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpSGreaterThan %bool %43 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %40
+         %49 = OpLabel
+         %52 = OpLoad %int %i
+         %56 = OpConvertSToF %float %52
+         %54 = OpExtInst %float %55 NMax %float_1 %56
+         %57 = OpFSub %float %float_1 %54
+               OpStore %a %57
+         %58 = OpLoad %float %a
+         %60 = OpExtInst %float %55 NMax %58 %float_0
+         %59 = OpExtInst %float %55 NMin %60 %float_0
+               OpStore %f %59
+               OpBranch %41
+         %41 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpISub %int %62 %int_1
+               OpStore %i %63
+               OpBranch %39
+         %40 = OpLabel
+         %64 = OpLoad %float %f
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpFOrdEqual %bool %64 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %73 = OpLoad %int %72
+         %74 = OpLoad %float %f
+         %75 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %73
+         %78 = OpConvertSToF %float %76
+         %79 = OpCompositeConstruct %v4float %77 %74 %78 %float_1
+               OpStore %x_GLF_color %79
+               OpBranch %68
+         %70 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %81
+%tint_symbol = OpFunctionParameter %main_out
+         %85 = OpLabel
+         %86 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %86
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %88 = OpLabel
+         %89 = OpFunctionCall %void %main_1
+         %91 = OpLoad %v4float %x_GLF_color
+         %92 = OpCompositeConstruct %main_out %91
+         %90 = OpFunctionCall %void %tint_symbol_2 %92
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..973feb9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,68 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var a : f32;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[1];
+  f = x_37;
+  let x_39 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_39;
+  loop {
+    let x_44 : i32 = i;
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_44 > x_46)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = i;
+    a = (1.0 - max(1.0, f32(x_49)));
+    let x_53 : f32 = a;
+    f = min(max(x_53, 0.0), 0.0);
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 - 1);
+    }
+  }
+  let x_58 : f32 = f;
+  let x_60 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_58 == x_60)) {
+    let x_66 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_68 : f32 = f;
+    let x_70 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_66), x_68, f32(x_70), 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm
new file mode 100644
index 0000000..2100420
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm
@@ -0,0 +1,63 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %m "m"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+         %13 = OpConstantComposite %v2float %float_1 %float_2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %16 = OpConstantComposite %v2float %float_3 %float_4
+         %17 = OpConstantComposite %mat2v2float %13 %16
+  %float_0_5 = OpConstant %float 0.5
+  %float_1_5 = OpConstant %float 1.5
+         %20 = OpConstantComposite %v2float %float_0_5 %float_1_5
+         %21 = OpConstantComposite %mat2v2float %20 %13
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %6
+         %29 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function
+         %30 = OpTranspose %mat2v2float %17
+         %31 = OpFDiv %float %float_1 %float_2
+         %32 = OpMatrixTimesScalar %mat2v2float %30 %31
+               OpStore %m %32
+         %33 = OpLoad %mat2v2float %m
+         %34 = OpCompositeExtract %v2float %33 0
+         %35 = OpCompositeExtract %v2float %21 0
+         %36 = OpFOrdEqual %v2bool %34 %35
+         %37 = OpAll %bool %36
+         %38 = OpCompositeExtract %v2float %33 1
+         %39 = OpCompositeExtract %v2float %21 1
+         %40 = OpFOrdEqual %v2bool %38 %39
+         %41 = OpAll %bool %40
+         %42 = OpLogicalAnd %bool %37 %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c9c5e08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  m = (transpose(float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f))) * (1.0f / 2.0f));
+  const float2x2 x_33 = m;
+  bool tint_tmp = all((x_33[0u] == float2x2(float2(0.5f, 1.5f), float2(1.0f, 2.0f))[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_33[1u] == float2x2(float2(0.5f, 1.5f), float2(1.0f, 2.0f))[1u]));
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6ff0e42
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2x2 m = float2x2(0.0f);
+  m = (transpose(float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f))) * (1.0f / 2.0f));
+  float2x2 const x_33 = m;
+  if ((all((x_33[0u] == float2x2(float2(0.5f, 1.5f), float2(1.0f, 2.0f))[0u])) && all((x_33[1u] == float2x2(float2(0.5f, 1.5f), float2(1.0f, 2.0f))[1u])))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e11c805
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,102 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %16 = OpConstantNull %mat2v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+         %20 = OpConstantComposite %v2float %float_1 %float_2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %23 = OpConstantComposite %v2float %float_3 %float_4
+         %24 = OpConstantComposite %mat2v2float %20 %23
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+  %float_0_5 = OpConstant %float 0.5
+  %float_1_5 = OpConstant %float 1.5
+         %35 = OpConstantComposite %v2float %float_0_5 %float_1_5
+         %36 = OpConstantComposite %mat2v2float %35 %20
+     %v2bool = OpTypeVector %bool 2
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %53 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %54 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function %16
+         %17 = OpTranspose %mat2v2float %24
+         %25 = OpFDiv %float %float_1 %float_2
+         %26 = OpMatrixTimesScalar %mat2v2float %17 %25
+               OpStore %m %26
+         %27 = OpLoad %mat2v2float %m
+         %32 = OpCompositeExtract %v2float %27 0
+         %37 = OpCompositeExtract %v2float %36 0
+         %38 = OpFOrdEqual %v2bool %32 %37
+         %28 = OpAll %bool %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %28 %41 %40
+         %41 = OpLabel
+         %44 = OpCompositeExtract %v2float %27 1
+         %45 = OpCompositeExtract %v2float %36 1
+         %46 = OpFOrdEqual %v2bool %44 %45
+         %42 = OpAll %bool %46
+               OpBranch %40
+         %40 = OpLabel
+         %47 = OpPhi %bool %28 %11 %42 %41
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+               OpStore %x_GLF_color %52
+               OpBranch %48
+         %50 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %48
+         %48 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %54
+%tint_symbol = OpFunctionParameter %main_out
+         %58 = OpLabel
+         %59 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %59
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %61 = OpLabel
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_2 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..af5a1c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  m = (transpose(mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0))) * (1.0 / 2.0));
+  let x_33 : mat2x2<f32> = m;
+  if ((all((x_33[0u] == mat2x2<f32>(vec2<f32>(0.5, 1.5), vec2<f32>(1.0, 2.0))[0u])) && all((x_33[1u] == mat2x2<f32>(vec2<f32>(0.5, 1.5), vec2<f32>(1.0, 2.0))[1u])))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
new file mode 100644
index 0000000..af5a1c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  m = (transpose(mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0))) * (1.0 / 2.0));
+  let x_33 : mat2x2<f32> = m;
+  if ((all((x_33[0u] == mat2x2<f32>(vec2<f32>(0.5, 1.5), vec2<f32>(1.0, 2.0))[0u])) && all((x_33[1u] == mat2x2<f32>(vec2<f32>(0.5, 1.5), vec2<f32>(1.0, 2.0))[1u])))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c9c5e08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  m = (transpose(float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f))) * (1.0f / 2.0f));
+  const float2x2 x_33 = m;
+  bool tint_tmp = all((x_33[0u] == float2x2(float2(0.5f, 1.5f), float2(1.0f, 2.0f))[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_33[1u] == float2x2(float2(0.5f, 1.5f), float2(1.0f, 2.0f))[1u]));
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6ff0e42
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2x2 m = float2x2(0.0f);
+  m = (transpose(float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f))) * (1.0f / 2.0f));
+  float2x2 const x_33 = m;
+  if ((all((x_33[0u] == float2x2(float2(0.5f, 1.5f), float2(1.0f, 2.0f))[0u])) && all((x_33[1u] == float2x2(float2(0.5f, 1.5f), float2(1.0f, 2.0f))[1u])))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e11c805
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,102 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %16 = OpConstantNull %mat2v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+         %20 = OpConstantComposite %v2float %float_1 %float_2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %23 = OpConstantComposite %v2float %float_3 %float_4
+         %24 = OpConstantComposite %mat2v2float %20 %23
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+  %float_0_5 = OpConstant %float 0.5
+  %float_1_5 = OpConstant %float 1.5
+         %35 = OpConstantComposite %v2float %float_0_5 %float_1_5
+         %36 = OpConstantComposite %mat2v2float %35 %20
+     %v2bool = OpTypeVector %bool 2
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %53 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %54 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function %16
+         %17 = OpTranspose %mat2v2float %24
+         %25 = OpFDiv %float %float_1 %float_2
+         %26 = OpMatrixTimesScalar %mat2v2float %17 %25
+               OpStore %m %26
+         %27 = OpLoad %mat2v2float %m
+         %32 = OpCompositeExtract %v2float %27 0
+         %37 = OpCompositeExtract %v2float %36 0
+         %38 = OpFOrdEqual %v2bool %32 %37
+         %28 = OpAll %bool %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %28 %41 %40
+         %41 = OpLabel
+         %44 = OpCompositeExtract %v2float %27 1
+         %45 = OpCompositeExtract %v2float %36 1
+         %46 = OpFOrdEqual %v2bool %44 %45
+         %42 = OpAll %bool %46
+               OpBranch %40
+         %40 = OpLabel
+         %47 = OpPhi %bool %28 %11 %42 %41
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+               OpStore %x_GLF_color %52
+               OpBranch %48
+         %50 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %48
+         %48 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %54
+%tint_symbol = OpFunctionParameter %main_out
+         %58 = OpLabel
+         %59 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %59
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %61 = OpLabel
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_2 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..af5a1c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  m = (transpose(mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0))) * (1.0 / 2.0));
+  let x_33 : mat2x2<f32> = m;
+  if ((all((x_33[0u] == mat2x2<f32>(vec2<f32>(0.5, 1.5), vec2<f32>(1.0, 2.0))[0u])) && all((x_33[1u] == mat2x2<f32>(vec2<f32>(0.5, 1.5), vec2<f32>(1.0, 2.0))[1u])))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm
new file mode 100644
index 0000000..809a678
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm
@@ -0,0 +1,112 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %12 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %26 = OpLabel
+         %27 = OpFunctionCall %int %func_
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %29 = OpLoad %int %28
+         %30 = OpIEqual %bool %27 %29
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %35 = OpLoad %int %34
+         %36 = OpConvertSToF %float %35
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpConvertSToF %float %41
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %44 = OpLoad %int %43
+         %45 = OpConvertSToF %float %44
+         %46 = OpCompositeConstruct %v4float %36 %39 %42 %45
+               OpStore %_GLF_color %46
+               OpBranch %31
+         %33 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpCompositeConstruct %v4float %49 %49 %49 %49
+               OpStore %_GLF_color %50
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %int None %12
+         %51 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %53 = OpLoad %int %52
+               OpStore %i %53
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpSelectionMerge %60 None
+               OpBranchConditional %true %61 %60
+         %61 = OpLabel
+               OpSelectionMerge %62 None
+               OpBranchConditional %true %63 %62
+         %63 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %65 = OpLoad %int %64
+               OpReturnValue %65
+         %62 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpSLessThan %bool %66 %68
+               OpBranchConditional %69 %54 %55
+         %55 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %71 = OpLoad %int %70
+               OpReturnValue %71
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..6878f83
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,65 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_53 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  i = x_53;
+  while (true) {
+    i = (i + 1);
+    if (true) {
+      if (true) {
+        const int x_65 = asint(x_7[2].x);
+        return x_65;
+      }
+    }
+    {
+      const int x_66 = i;
+      const int x_68 = asint(x_7[1].x);
+      if ((x_66 < x_68)) {
+      } else {
+        break;
+      }
+    }
+  }
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_71 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  return x_71;
+}
+
+void main_1() {
+  const int x_27 = func_();
+  const int x_29 = asint(x_7[2].x);
+  if ((x_27 == x_29)) {
+    const int x_35 = asint(x_7[2].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_41 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_44 = asint(x_7[2].x);
+    x_GLF_color = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_49 = float(x_48);
+    x_GLF_color = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2f4c481
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_(constant buf0& x_7) {
+  int i = 0;
+  int const x_53 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  i = x_53;
+  while (true) {
+    int const x_58 = i;
+    i = (x_58 + 1);
+    if (true) {
+      if (true) {
+        int const x_65 = x_7.x_GLF_uniform_int_values.arr[2].el;
+        return x_65;
+      }
+    }
+    {
+      int const x_66 = i;
+      int const x_68 = x_7.x_GLF_uniform_int_values.arr[1].el;
+      if ((x_66 < x_68)) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_71 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  return x_71;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int const x_27 = func_(x_7);
+  int const x_29 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_27 == x_29)) {
+    int const x_35 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_38 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_41 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_44 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    int const x_48 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_49 = float(x_48);
+    *(tint_symbol_4) = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ef74140
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,157 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 91
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+         %15 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %51 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %79 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %15
+         %17 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %20
+         %24 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %25 = OpLoad %int %24
+               OpStore %i %25
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %i
+         %32 = OpIAdd %int %30 %int_1
+               OpStore %i %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %true %36 %35
+         %36 = OpLabel
+               OpSelectionMerge %37 None
+               OpBranchConditional %true %38 %37
+         %38 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %41 = OpLoad %int %40
+               OpReturnValue %41
+         %37 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %42 = OpLoad %int %i
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpSLessThan %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %27
+         %46 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %50 = OpLoad %int %49
+               OpReturnValue %50
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %51
+         %54 = OpLabel
+         %55 = OpFunctionCall %int %func_
+         %56 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %57 = OpLoad %int %56
+         %58 = OpIEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %63
+         %71 = OpConvertSToF %float %65
+         %72 = OpConvertSToF %float %67
+         %73 = OpConvertSToF %float %69
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+               OpStore %x_GLF_color %74
+               OpBranch %59
+         %61 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %76
+         %78 = OpCompositeConstruct %v4float %77 %77 %77 %77
+               OpStore %x_GLF_color %78
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %79
+%tint_symbol = OpFunctionParameter %main_out
+         %83 = OpLabel
+         %84 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %84
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %51
+         %86 = OpLabel
+         %87 = OpFunctionCall %void %main_1
+         %89 = OpLoad %v4float %x_GLF_color
+         %90 = OpCompositeConstruct %main_out %89
+         %88 = OpFunctionCall %void %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 28[%28] is not post dominated by the back-edge block 46[%46]
+  %46 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..cb4c4d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var i : i32;
+  let x_53 : i32 = x_7.x_GLF_uniform_int_values[0];
+  i = x_53;
+  loop {
+    let x_58 : i32 = i;
+    i = (x_58 + 1);
+    if (true) {
+      if (true) {
+        let x_65 : i32 = x_7.x_GLF_uniform_int_values[2];
+        return x_65;
+      }
+    }
+
+    continuing {
+      let x_66 : i32 = i;
+      let x_68 : i32 = x_7.x_GLF_uniform_int_values[1];
+      if ((x_66 < x_68)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_71 : i32 = x_7.x_GLF_uniform_int_values[0];
+  return x_71;
+}
+
+fn main_1() {
+  let x_27 : i32 = func_();
+  let x_29 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_27 == x_29)) {
+    let x_35 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_38 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_41 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_7.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
+  } else {
+    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_49 : f32 = f32(x_48);
+    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
new file mode 100644
index 0000000..cb4c4d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var i : i32;
+  let x_53 : i32 = x_7.x_GLF_uniform_int_values[0];
+  i = x_53;
+  loop {
+    let x_58 : i32 = i;
+    i = (x_58 + 1);
+    if (true) {
+      if (true) {
+        let x_65 : i32 = x_7.x_GLF_uniform_int_values[2];
+        return x_65;
+      }
+    }
+
+    continuing {
+      let x_66 : i32 = i;
+      let x_68 : i32 = x_7.x_GLF_uniform_int_values[1];
+      if ((x_66 < x_68)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_71 : i32 = x_7.x_GLF_uniform_int_values[0];
+  return x_71;
+}
+
+fn main_1() {
+  let x_27 : i32 = func_();
+  let x_29 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_27 == x_29)) {
+    let x_35 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_38 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_41 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_7.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
+  } else {
+    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_49 : f32 = f32(x_48);
+    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..6878f83
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,65 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_53 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  i = x_53;
+  while (true) {
+    i = (i + 1);
+    if (true) {
+      if (true) {
+        const int x_65 = asint(x_7[2].x);
+        return x_65;
+      }
+    }
+    {
+      const int x_66 = i;
+      const int x_68 = asint(x_7[1].x);
+      if ((x_66 < x_68)) {
+      } else {
+        break;
+      }
+    }
+  }
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_71 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  return x_71;
+}
+
+void main_1() {
+  const int x_27 = func_();
+  const int x_29 = asint(x_7[2].x);
+  if ((x_27 == x_29)) {
+    const int x_35 = asint(x_7[2].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_41 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_44 = asint(x_7[2].x);
+    x_GLF_color = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_49 = float(x_48);
+    x_GLF_color = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2f4c481
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_(constant buf0& x_7) {
+  int i = 0;
+  int const x_53 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  i = x_53;
+  while (true) {
+    int const x_58 = i;
+    i = (x_58 + 1);
+    if (true) {
+      if (true) {
+        int const x_65 = x_7.x_GLF_uniform_int_values.arr[2].el;
+        return x_65;
+      }
+    }
+    {
+      int const x_66 = i;
+      int const x_68 = x_7.x_GLF_uniform_int_values.arr[1].el;
+      if ((x_66 < x_68)) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_71 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  return x_71;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int const x_27 = func_(x_7);
+  int const x_29 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_27 == x_29)) {
+    int const x_35 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_38 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_41 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_44 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    int const x_48 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_49 = float(x_48);
+    *(tint_symbol_4) = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ef74140
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,157 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 91
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+         %15 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %51 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %79 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %15
+         %17 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %20
+         %24 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %25 = OpLoad %int %24
+               OpStore %i %25
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %i
+         %32 = OpIAdd %int %30 %int_1
+               OpStore %i %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %true %36 %35
+         %36 = OpLabel
+               OpSelectionMerge %37 None
+               OpBranchConditional %true %38 %37
+         %38 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %41 = OpLoad %int %40
+               OpReturnValue %41
+         %37 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %42 = OpLoad %int %i
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpSLessThan %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %27
+         %46 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %50 = OpLoad %int %49
+               OpReturnValue %50
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %51
+         %54 = OpLabel
+         %55 = OpFunctionCall %int %func_
+         %56 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %57 = OpLoad %int %56
+         %58 = OpIEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %63
+         %71 = OpConvertSToF %float %65
+         %72 = OpConvertSToF %float %67
+         %73 = OpConvertSToF %float %69
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+               OpStore %x_GLF_color %74
+               OpBranch %59
+         %61 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %76
+         %78 = OpCompositeConstruct %v4float %77 %77 %77 %77
+               OpStore %x_GLF_color %78
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %79
+%tint_symbol = OpFunctionParameter %main_out
+         %83 = OpLabel
+         %84 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %84
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %51
+         %86 = OpLabel
+         %87 = OpFunctionCall %void %main_1
+         %89 = OpLoad %v4float %x_GLF_color
+         %90 = OpCompositeConstruct %main_out %89
+         %88 = OpFunctionCall %void %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 28[%28] is not post dominated by the back-edge block 46[%46]
+  %46 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..cb4c4d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var i : i32;
+  let x_53 : i32 = x_7.x_GLF_uniform_int_values[0];
+  i = x_53;
+  loop {
+    let x_58 : i32 = i;
+    i = (x_58 + 1);
+    if (true) {
+      if (true) {
+        let x_65 : i32 = x_7.x_GLF_uniform_int_values[2];
+        return x_65;
+      }
+    }
+
+    continuing {
+      let x_66 : i32 = i;
+      let x_68 : i32 = x_7.x_GLF_uniform_int_values[1];
+      if ((x_66 < x_68)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_71 : i32 = x_7.x_GLF_uniform_int_values[0];
+  return x_71;
+}
+
+fn main_1() {
+  let x_27 : i32 = func_();
+  let x_29 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_27 == x_29)) {
+    let x_35 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_38 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_41 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_7.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
+  } else {
+    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_49 : f32 = f32(x_48);
+    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm
new file mode 100644
index 0000000..091e8c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm
@@ -0,0 +1,148 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+         %27 = OpConstantComposite %_arr_int_uint_10 %int_1 %int_2 %int_3 %int_4 %int_5 %int_6 %int_7 %int_8 %int_9 %int_10
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+      %v2int = OpTypeVector %int 2
+     %uint_1 = OpConstant %uint 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %11
+         %40 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %arr %27
+               OpStore %a %int_0
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Function_int %arr %42
+         %44 = OpLoad %int %43
+         %45 = OpIEqual %bool %44 %int_2
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %49 = OpLoad %int %48
+               OpStore %i %49
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpSLessThan %bool %54 %56
+               OpBranchConditional %57 %58 %51
+         %58 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %i %60
+               OpBranch %50
+         %51 = OpLabel
+         %61 = OpLoad %int %a
+         %62 = OpIAdd %int %61 %int_1
+               OpStore %a %62
+               OpBranch %46
+         %46 = OpLabel
+         %63 = OpLoad %int %a
+         %64 = OpSMod %int %int_n1 %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpIEqual %bool %64 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpCompositeConstruct %v2int %71 %71
+         %73 = OpCompositeExtract %int %72 1
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_int %arr %73
+               OpStore %76 %75
+               OpBranch %68
+         %68 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Function_int %arr %78
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpIEqual %bool %80 %82
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpConvertSToF %float %97
+         %99 = OpCompositeConstruct %v4float %89 %92 %95 %98
+               OpStore %_GLF_color %99
+               OpBranch %84
+         %86 = OpLabel
+        %100 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %101 = OpLoad %int %100
+        %102 = OpConvertSToF %float %101
+        %103 = OpCompositeConstruct %v4float %102 %102 %102 %102
+               OpStore %_GLF_color %103
+               OpBranch %84
+         %84 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..642f1e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,68 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int arr[10] = (int[10])0;
+  int a = 0;
+  int i = 0;
+  const int tint_symbol_3[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+  arr = tint_symbol_3;
+  a = 0;
+  const int x_42 = asint(x_7[1].x);
+  const int x_44 = arr[x_42];
+  if ((x_44 == 2)) {
+    const int x_49 = asint(x_7[2].x);
+    i = x_49;
+    while (true) {
+      const int x_54 = i;
+      const uint scalar_offset = ((16u * uint(0))) / 4;
+      const int x_56 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      {
+        i = (i + 1);
+      }
+    }
+    a = (a + 1);
+  }
+  const int x_63 = a;
+  const int x_66 = asint(x_7[2].x);
+  if (((-1 % x_63) == x_66)) {
+    const int x_71 = asint(x_7[1].x);
+    const int x_75 = asint(x_7[2].x);
+    arr[int2(x_71, x_71).y] = x_75;
+  }
+  const int x_78 = asint(x_7[1].x);
+  const int x_80 = arr[x_78];
+  const int x_82 = asint(x_7[2].x);
+  if ((x_80 == x_82)) {
+    const int x_88 = asint(x_7[1].x);
+    const int x_91 = asint(x_7[2].x);
+    const int x_94 = asint(x_7[2].x);
+    const int x_97 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_88), float(x_91), float(x_94), float(x_97));
+  } else {
+    const int x_101 = asint(x_7[2].x);
+    const float x_102 = float(x_101);
+    x_GLF_color = float4(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..821d826
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.msl
@@ -0,0 +1,82 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_1 arr = {};
+  int a = 0;
+  int i = 0;
+  tint_array_wrapper_1 const tint_symbol_3 = {.arr={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
+  arr = tint_symbol_3;
+  a = 0;
+  int const x_42 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_44 = arr.arr[x_42];
+  if ((x_44 == 2)) {
+    int const x_49 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    i = x_49;
+    while (true) {
+      int const x_54 = i;
+      int const x_56 = x_7.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      {
+        int const x_59 = i;
+        i = (x_59 + 1);
+      }
+    }
+    int const x_61 = a;
+    a = (x_61 + 1);
+  }
+  int const x_63 = a;
+  int const x_66 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if (((-1 % x_63) == x_66)) {
+    int const x_71 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_75 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    arr.arr[int2(x_71, x_71).y] = x_75;
+  }
+  int const x_78 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_80 = arr.arr[x_78];
+  int const x_82 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_80 == x_82)) {
+    int const x_88 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_91 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_94 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_97 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_5) = float4(float(x_88), float(x_91), float(x_94), float(x_97));
+  } else {
+    int const x_101 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    float const x_102 = float(x_101);
+    *(tint_symbol_5) = float4(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5790633
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,187 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %23 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+         %38 = OpConstantComposite %_arr_int_uint_10 %int_1 %int_2 %int_3 %int_4 %int_5 %int_6 %int_7 %int_8 %int_9 %int_10
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+      %v2int = OpTypeVector %int 2
+   %main_out = OpTypeStruct %v4float
+        %110 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_int_uint_10 Function %23
+          %a = OpVariable %_ptr_Function_int Function %26
+          %i = OpVariable %_ptr_Function_int Function %26
+               OpStore %arr %38
+               OpStore %a %int_0
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Function_int %arr %43
+         %45 = OpLoad %int %44
+         %46 = OpIEqual %bool %45 %int_2
+               OpSelectionMerge %48 None
+               OpBranchConditional %46 %49 %48
+         %49 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %51 = OpLoad %int %50
+               OpStore %i %51
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpSLessThan %bool %56 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %53
+         %60 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %63 = OpLoad %int %i
+         %64 = OpIAdd %int %63 %int_1
+               OpStore %i %64
+               OpBranch %52
+         %53 = OpLabel
+         %65 = OpLoad %int %a
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %a %66
+               OpBranch %48
+         %48 = OpLabel
+         %67 = OpLoad %int %a
+         %68 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %69 = OpLoad %int %68
+         %71 = OpSMod %int %int_n1 %67
+         %72 = OpIEqual %bool %71 %69
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %78 = OpLoad %int %77
+         %80 = OpCompositeConstruct %v2int %76 %76
+         %81 = OpCompositeExtract %int %80 1
+         %82 = OpAccessChain %_ptr_Function_int %arr %81
+               OpStore %82 %78
+               OpBranch %73
+         %73 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Function_int %arr %84
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpIEqual %bool %86 %88
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %94
+        %102 = OpConvertSToF %float %96
+        %103 = OpConvertSToF %float %98
+        %104 = OpConvertSToF %float %100
+        %105 = OpCompositeConstruct %v4float %101 %102 %103 %104
+               OpStore %x_GLF_color %105
+               OpBranch %90
+         %92 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpCompositeConstruct %v4float %108 %108 %108 %108
+               OpStore %x_GLF_color %109
+               OpBranch %90
+         %90 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %110
+%tint_symbol = OpFunctionParameter %main_out
+        %114 = OpLabel
+        %115 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %115
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %117 = OpLabel
+        %118 = OpFunctionCall %void %main_1
+        %120 = OpLoad %v4float %x_GLF_color
+        %121 = OpCompositeConstruct %main_out %120
+        %119 = OpFunctionCall %void %tint_symbol_2 %121
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6a47f1c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,72 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<i32, 10>;
+  var a : i32;
+  var i : i32;
+  arr = array<i32, 10>(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+  a = 0;
+  let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_44 : i32 = arr[x_42];
+  if ((x_44 == 2)) {
+    let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+    i = x_49;
+    loop {
+      let x_54 : i32 = i;
+      let x_56 : i32 = x_7.x_GLF_uniform_int_values[0];
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_59 : i32 = i;
+        i = (x_59 + 1);
+      }
+    }
+    let x_61 : i32 = a;
+    a = (x_61 + 1);
+  }
+  let x_63 : i32 = a;
+  let x_66 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if (((-1 % x_63) == x_66)) {
+    let x_71 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_75 : i32 = x_7.x_GLF_uniform_int_values[2];
+    arr[vec2<i32>(x_71, x_71).y] = x_75;
+  }
+  let x_78 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_80 : i32 = arr[x_78];
+  let x_82 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_80 == x_82)) {
+    let x_88 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_91 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_94 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_97 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_88), f32(x_91), f32(x_94), f32(x_97));
+  } else {
+    let x_101 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_102 : f32 = f32(x_101);
+    x_GLF_color = vec4<f32>(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
new file mode 100644
index 0000000..6a47f1c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
@@ -0,0 +1,72 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<i32, 10>;
+  var a : i32;
+  var i : i32;
+  arr = array<i32, 10>(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+  a = 0;
+  let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_44 : i32 = arr[x_42];
+  if ((x_44 == 2)) {
+    let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+    i = x_49;
+    loop {
+      let x_54 : i32 = i;
+      let x_56 : i32 = x_7.x_GLF_uniform_int_values[0];
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_59 : i32 = i;
+        i = (x_59 + 1);
+      }
+    }
+    let x_61 : i32 = a;
+    a = (x_61 + 1);
+  }
+  let x_63 : i32 = a;
+  let x_66 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if (((-1 % x_63) == x_66)) {
+    let x_71 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_75 : i32 = x_7.x_GLF_uniform_int_values[2];
+    arr[vec2<i32>(x_71, x_71).y] = x_75;
+  }
+  let x_78 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_80 : i32 = arr[x_78];
+  let x_82 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_80 == x_82)) {
+    let x_88 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_91 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_94 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_97 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_88), f32(x_91), f32(x_94), f32(x_97));
+  } else {
+    let x_101 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_102 : f32 = f32(x_101);
+    x_GLF_color = vec4<f32>(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..642f1e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,68 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int arr[10] = (int[10])0;
+  int a = 0;
+  int i = 0;
+  const int tint_symbol_3[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+  arr = tint_symbol_3;
+  a = 0;
+  const int x_42 = asint(x_7[1].x);
+  const int x_44 = arr[x_42];
+  if ((x_44 == 2)) {
+    const int x_49 = asint(x_7[2].x);
+    i = x_49;
+    while (true) {
+      const int x_54 = i;
+      const uint scalar_offset = ((16u * uint(0))) / 4;
+      const int x_56 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      {
+        i = (i + 1);
+      }
+    }
+    a = (a + 1);
+  }
+  const int x_63 = a;
+  const int x_66 = asint(x_7[2].x);
+  if (((-1 % x_63) == x_66)) {
+    const int x_71 = asint(x_7[1].x);
+    const int x_75 = asint(x_7[2].x);
+    arr[int2(x_71, x_71).y] = x_75;
+  }
+  const int x_78 = asint(x_7[1].x);
+  const int x_80 = arr[x_78];
+  const int x_82 = asint(x_7[2].x);
+  if ((x_80 == x_82)) {
+    const int x_88 = asint(x_7[1].x);
+    const int x_91 = asint(x_7[2].x);
+    const int x_94 = asint(x_7[2].x);
+    const int x_97 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_88), float(x_91), float(x_94), float(x_97));
+  } else {
+    const int x_101 = asint(x_7[2].x);
+    const float x_102 = float(x_101);
+    x_GLF_color = float4(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..821d826
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.msl
@@ -0,0 +1,82 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_1 arr = {};
+  int a = 0;
+  int i = 0;
+  tint_array_wrapper_1 const tint_symbol_3 = {.arr={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
+  arr = tint_symbol_3;
+  a = 0;
+  int const x_42 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_44 = arr.arr[x_42];
+  if ((x_44 == 2)) {
+    int const x_49 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    i = x_49;
+    while (true) {
+      int const x_54 = i;
+      int const x_56 = x_7.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      {
+        int const x_59 = i;
+        i = (x_59 + 1);
+      }
+    }
+    int const x_61 = a;
+    a = (x_61 + 1);
+  }
+  int const x_63 = a;
+  int const x_66 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if (((-1 % x_63) == x_66)) {
+    int const x_71 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_75 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    arr.arr[int2(x_71, x_71).y] = x_75;
+  }
+  int const x_78 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_80 = arr.arr[x_78];
+  int const x_82 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_80 == x_82)) {
+    int const x_88 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_91 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_94 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_97 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_5) = float4(float(x_88), float(x_91), float(x_94), float(x_97));
+  } else {
+    int const x_101 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    float const x_102 = float(x_101);
+    *(tint_symbol_5) = float4(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5790633
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,187 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %23 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+         %38 = OpConstantComposite %_arr_int_uint_10 %int_1 %int_2 %int_3 %int_4 %int_5 %int_6 %int_7 %int_8 %int_9 %int_10
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+      %v2int = OpTypeVector %int 2
+   %main_out = OpTypeStruct %v4float
+        %110 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_int_uint_10 Function %23
+          %a = OpVariable %_ptr_Function_int Function %26
+          %i = OpVariable %_ptr_Function_int Function %26
+               OpStore %arr %38
+               OpStore %a %int_0
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Function_int %arr %43
+         %45 = OpLoad %int %44
+         %46 = OpIEqual %bool %45 %int_2
+               OpSelectionMerge %48 None
+               OpBranchConditional %46 %49 %48
+         %49 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %51 = OpLoad %int %50
+               OpStore %i %51
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpSLessThan %bool %56 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %53
+         %60 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %63 = OpLoad %int %i
+         %64 = OpIAdd %int %63 %int_1
+               OpStore %i %64
+               OpBranch %52
+         %53 = OpLabel
+         %65 = OpLoad %int %a
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %a %66
+               OpBranch %48
+         %48 = OpLabel
+         %67 = OpLoad %int %a
+         %68 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %69 = OpLoad %int %68
+         %71 = OpSMod %int %int_n1 %67
+         %72 = OpIEqual %bool %71 %69
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %78 = OpLoad %int %77
+         %80 = OpCompositeConstruct %v2int %76 %76
+         %81 = OpCompositeExtract %int %80 1
+         %82 = OpAccessChain %_ptr_Function_int %arr %81
+               OpStore %82 %78
+               OpBranch %73
+         %73 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Function_int %arr %84
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpIEqual %bool %86 %88
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %94
+        %102 = OpConvertSToF %float %96
+        %103 = OpConvertSToF %float %98
+        %104 = OpConvertSToF %float %100
+        %105 = OpCompositeConstruct %v4float %101 %102 %103 %104
+               OpStore %x_GLF_color %105
+               OpBranch %90
+         %92 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpCompositeConstruct %v4float %108 %108 %108 %108
+               OpStore %x_GLF_color %109
+               OpBranch %90
+         %90 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %110
+%tint_symbol = OpFunctionParameter %main_out
+        %114 = OpLabel
+        %115 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %115
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %117 = OpLabel
+        %118 = OpFunctionCall %void %main_1
+        %120 = OpLoad %v4float %x_GLF_color
+        %121 = OpCompositeConstruct %main_out %120
+        %119 = OpFunctionCall %void %tint_symbol_2 %121
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6a47f1c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,72 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<i32, 10>;
+  var a : i32;
+  var i : i32;
+  arr = array<i32, 10>(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+  a = 0;
+  let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_44 : i32 = arr[x_42];
+  if ((x_44 == 2)) {
+    let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+    i = x_49;
+    loop {
+      let x_54 : i32 = i;
+      let x_56 : i32 = x_7.x_GLF_uniform_int_values[0];
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_59 : i32 = i;
+        i = (x_59 + 1);
+      }
+    }
+    let x_61 : i32 = a;
+    a = (x_61 + 1);
+  }
+  let x_63 : i32 = a;
+  let x_66 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if (((-1 % x_63) == x_66)) {
+    let x_71 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_75 : i32 = x_7.x_GLF_uniform_int_values[2];
+    arr[vec2<i32>(x_71, x_71).y] = x_75;
+  }
+  let x_78 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_80 : i32 = arr[x_78];
+  let x_82 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_80 == x_82)) {
+    let x_88 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_91 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_94 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_97 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_88), f32(x_91), f32(x_94), f32(x_97));
+  } else {
+    let x_101 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_102 : f32 = f32(x_101);
+    x_GLF_color = vec4<f32>(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm
new file mode 100644
index 0000000..b510068
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm
@@ -0,0 +1,42 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_2 = OpConstant %float 2
+    %float_4 = OpConstant %float 4
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %17 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %6
+         %18 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+               OpStore %f %float_2
+         %19 = OpLoad %float %f
+         %20 = OpExtInst %float %1 Exp2 %19
+         %21 = OpFOrdEqual %bool %20 %float_4
+               OpSelectionMerge %22 None
+               OpBranchConditional %21 %23 %24
+         %23 = OpLabel
+               OpStore %_GLF_color %16
+               OpBranch %22
+         %24 = OpLabel
+               OpStore %_GLF_color %17
+               OpBranch %22
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9f1319b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  f = 2.0f;
+  if ((exp2(f) == 4.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..387bc0b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  f = 2.0f;
+  float const x_19 = f;
+  if ((exp2(x_19) == 4.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e668d86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,74 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+         %18 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %14 = OpConstantNull %float
+    %float_2 = OpConstant %float 2
+    %float_4 = OpConstant %float 4
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %29 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %14
+               OpStore %f %float_2
+         %16 = OpLoad %float %f
+         %17 = OpExtInst %float %18 Exp2 %16
+         %20 = OpFOrdEqual %bool %17 %float_4
+               OpSelectionMerge %22 None
+               OpBranchConditional %20 %23 %24
+         %23 = OpLabel
+               OpStore %x_GLF_color %27
+               OpBranch %22
+         %24 = OpLabel
+               OpStore %x_GLF_color %28
+               OpBranch %22
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %29
+%tint_symbol = OpFunctionParameter %main_out
+         %33 = OpLabel
+         %34 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %34
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %x_GLF_color
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_2 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..620e1b8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  f = 2.0;
+  let x_19 : f32 = f;
+  if ((exp2(x_19) == 4.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
new file mode 100644
index 0000000..620e1b8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  f = 2.0;
+  let x_19 : f32 = f;
+  if ((exp2(x_19) == 4.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9f1319b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  f = 2.0f;
+  if ((exp2(f) == 4.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..387bc0b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  f = 2.0f;
+  float const x_19 = f;
+  if ((exp2(x_19) == 4.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e668d86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,74 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+         %18 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %14 = OpConstantNull %float
+    %float_2 = OpConstant %float 2
+    %float_4 = OpConstant %float 4
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %29 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %14
+               OpStore %f %float_2
+         %16 = OpLoad %float %f
+         %17 = OpExtInst %float %18 Exp2 %16
+         %20 = OpFOrdEqual %bool %17 %float_4
+               OpSelectionMerge %22 None
+               OpBranchConditional %20 %23 %24
+         %23 = OpLabel
+               OpStore %x_GLF_color %27
+               OpBranch %22
+         %24 = OpLabel
+               OpStore %x_GLF_color %28
+               OpBranch %22
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %29
+%tint_symbol = OpFunctionParameter %main_out
+         %33 = OpLabel
+         %34 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %34
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %x_GLF_color
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_2 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..620e1b8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  f = 2.0;
+  let x_19 : f32 = f;
+  if ((exp2(x_19) == 4.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm
new file mode 100644
index 0000000..42541f5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm
@@ -0,0 +1,122 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %arr "arr"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_2 = OpConstant %float 2
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_2 = OpConstant %int 2
+       %main = OpFunction %void None %13
+         %35 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+        %arr = OpVariable %_ptr_Function__arr_float_uint_10 Function
+               OpStore %f %float_2
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %49 = OpLoad %float %48
+         %50 = OpLoad %float %f
+         %51 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %52 = OpLoad %float %51
+         %53 = OpExtInst %float %1 Pow %50 %52
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpCompositeConstruct %_arr_float_uint_10 %37 %39 %41 %43 %45 %47 %49 %53 %55 %57
+               OpStore %arr %58
+         %59 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Function_float %arr %60
+         %62 = OpLoad %float %61
+         %63 = OpConvertFToS %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %65 = OpLoad %int %64
+         %66 = OpIEqual %bool %63 %65
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpCompositeConstruct %v4float %72 %75 %78 %81
+               OpStore %_GLF_color %82
+               OpBranch %67
+         %69 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpCompositeConstruct %v4float %85 %85 %85 %85
+               OpStore %_GLF_color %86
+               OpBranch %67
+         %67 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..81e4598
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,65 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  float arr[10] = (float[10])0;
+  f = 2.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_37 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_39 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_43 = asfloat(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const float x_49 = asfloat(x_7[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  const float x_50 = f;
+  const float x_52 = asfloat(x_7[1].x);
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const float x_55 = asfloat(x_7[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+  const float x_57 = asfloat(x_7[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+  const float tint_symbol_4[10] = {x_37, x_39, x_41, x_43, x_45, x_47, x_49, pow(x_50, x_52), x_55, x_57};
+  arr = tint_symbol_4;
+  const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+  const int x_60 = asint(x_9[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+  const float x_62 = arr[x_60];
+  const int x_65 = asint(x_9[3].x);
+  if ((int(x_62) == x_65)) {
+    const int x_71 = asint(x_9[1].x);
+    const int x_74 = asint(x_9[2].x);
+    const int x_77 = asint(x_9[2].x);
+    const int x_80 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_71), float(x_74), float(x_77), float(x_80));
+  } else {
+    const int x_84 = asint(x_9[2].x);
+    const float x_85 = float(x_84);
+    x_GLF_color = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3eea4ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_5) {
+  float f = 0.0f;
+  tint_array_wrapper_2 arr = {};
+  f = 2.0f;
+  float const x_37 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_39 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_41 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_43 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_45 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_47 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_49 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_50 = f;
+  float const x_52 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_55 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_57 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_37, x_39, x_41, x_43, x_45, x_47, x_49, pow(x_50, x_52), x_55, x_57}};
+  arr = tint_symbol_3;
+  int const x_60 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  float const x_62 = arr.arr[x_60];
+  int const x_65 = x_9.x_GLF_uniform_int_values.arr[3].el;
+  if ((int(x_62) == x_65)) {
+    int const x_71 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_74 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    int const x_77 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    int const x_80 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_5) = float4(float(x_71), float(x_74), float(x_77), float(x_80));
+  } else {
+    int const x_84 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_85 = float(x_84);
+    *(tint_symbol_5) = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..bb87b20
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,159 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 105
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %arr "arr"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %31 = OpConstantNull %_arr_float_uint_10
+    %float_2 = OpConstant %float 2
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %93 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %26
+        %arr = OpVariable %_ptr_Function__arr_float_uint_10 Function %31
+               OpStore %f %float_2
+         %36 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %49 = OpLoad %float %48
+         %50 = OpLoad %float %f
+         %52 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpExtInst %float %59 Pow %50 %53
+         %60 = OpCompositeConstruct %_arr_float_uint_10 %37 %39 %41 %43 %45 %47 %49 %58 %55 %57
+               OpStore %arr %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Function_float %arr %63
+         %65 = OpLoad %float %64
+         %67 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_3
+         %68 = OpLoad %int %67
+         %69 = OpConvertFToS %int %65
+         %70 = OpIEqual %bool %69 %68
+               OpSelectionMerge %72 None
+               OpBranchConditional %70 %73 %74
+         %73 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %76 = OpLoad %int %75
+         %78 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %76
+         %85 = OpConvertSToF %float %79
+         %86 = OpConvertSToF %float %81
+         %87 = OpConvertSToF %float %83
+         %88 = OpCompositeConstruct %v4float %84 %85 %86 %87
+               OpStore %x_GLF_color %88
+               OpBranch %72
+         %74 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %90
+         %92 = OpCompositeConstruct %v4float %91 %91 %91 %91
+               OpStore %x_GLF_color %92
+               OpBranch %72
+         %72 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %93
+%tint_symbol = OpFunctionParameter %main_out
+         %97 = OpLabel
+         %98 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %98
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %100 = OpLabel
+        %101 = OpFunctionCall %void %main_1
+        %103 = OpLoad %v4float %x_GLF_color
+        %104 = OpCompositeConstruct %main_out %103
+        %102 = OpFunctionCall %void %tint_symbol_2 %104
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..0c41106
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var arr : array<f32, 10>;
+  f = 2.0;
+  let x_37 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_39 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_41 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_43 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_49 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_50 : f32 = f;
+  let x_52 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_55 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_57 : f32 = x_7.x_GLF_uniform_float_values[0];
+  arr = array<f32, 10>(x_37, x_39, x_41, x_43, x_45, x_47, x_49, pow(x_50, x_52), x_55, x_57);
+  let x_60 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_62 : f32 = arr[x_60];
+  let x_65 : i32 = x_9.x_GLF_uniform_int_values[3];
+  if ((i32(x_62) == x_65)) {
+    let x_71 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_77 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_80 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_71), f32(x_74), f32(x_77), f32(x_80));
+  } else {
+    let x_84 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
new file mode 100644
index 0000000..0c41106
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var arr : array<f32, 10>;
+  f = 2.0;
+  let x_37 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_39 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_41 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_43 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_49 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_50 : f32 = f;
+  let x_52 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_55 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_57 : f32 = x_7.x_GLF_uniform_float_values[0];
+  arr = array<f32, 10>(x_37, x_39, x_41, x_43, x_45, x_47, x_49, pow(x_50, x_52), x_55, x_57);
+  let x_60 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_62 : f32 = arr[x_60];
+  let x_65 : i32 = x_9.x_GLF_uniform_int_values[3];
+  if ((i32(x_62) == x_65)) {
+    let x_71 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_77 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_80 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_71), f32(x_74), f32(x_77), f32(x_80));
+  } else {
+    let x_84 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..81e4598
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,65 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  float arr[10] = (float[10])0;
+  f = 2.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_37 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_39 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_43 = asfloat(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const float x_49 = asfloat(x_7[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  const float x_50 = f;
+  const float x_52 = asfloat(x_7[1].x);
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const float x_55 = asfloat(x_7[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+  const float x_57 = asfloat(x_7[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+  const float tint_symbol_4[10] = {x_37, x_39, x_41, x_43, x_45, x_47, x_49, pow(x_50, x_52), x_55, x_57};
+  arr = tint_symbol_4;
+  const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+  const int x_60 = asint(x_9[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+  const float x_62 = arr[x_60];
+  const int x_65 = asint(x_9[3].x);
+  if ((int(x_62) == x_65)) {
+    const int x_71 = asint(x_9[1].x);
+    const int x_74 = asint(x_9[2].x);
+    const int x_77 = asint(x_9[2].x);
+    const int x_80 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_71), float(x_74), float(x_77), float(x_80));
+  } else {
+    const int x_84 = asint(x_9[2].x);
+    const float x_85 = float(x_84);
+    x_GLF_color = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3eea4ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_5) {
+  float f = 0.0f;
+  tint_array_wrapper_2 arr = {};
+  f = 2.0f;
+  float const x_37 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_39 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_41 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_43 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_45 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_47 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_49 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_50 = f;
+  float const x_52 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_55 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_57 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_37, x_39, x_41, x_43, x_45, x_47, x_49, pow(x_50, x_52), x_55, x_57}};
+  arr = tint_symbol_3;
+  int const x_60 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  float const x_62 = arr.arr[x_60];
+  int const x_65 = x_9.x_GLF_uniform_int_values.arr[3].el;
+  if ((int(x_62) == x_65)) {
+    int const x_71 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_74 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    int const x_77 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    int const x_80 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_5) = float4(float(x_71), float(x_74), float(x_77), float(x_80));
+  } else {
+    int const x_84 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_85 = float(x_84);
+    *(tint_symbol_5) = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..bb87b20
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,159 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 105
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %arr "arr"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %31 = OpConstantNull %_arr_float_uint_10
+    %float_2 = OpConstant %float 2
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %93 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %26
+        %arr = OpVariable %_ptr_Function__arr_float_uint_10 Function %31
+               OpStore %f %float_2
+         %36 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %49 = OpLoad %float %48
+         %50 = OpLoad %float %f
+         %52 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpExtInst %float %59 Pow %50 %53
+         %60 = OpCompositeConstruct %_arr_float_uint_10 %37 %39 %41 %43 %45 %47 %49 %58 %55 %57
+               OpStore %arr %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Function_float %arr %63
+         %65 = OpLoad %float %64
+         %67 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_3
+         %68 = OpLoad %int %67
+         %69 = OpConvertFToS %int %65
+         %70 = OpIEqual %bool %69 %68
+               OpSelectionMerge %72 None
+               OpBranchConditional %70 %73 %74
+         %73 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %76 = OpLoad %int %75
+         %78 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %76
+         %85 = OpConvertSToF %float %79
+         %86 = OpConvertSToF %float %81
+         %87 = OpConvertSToF %float %83
+         %88 = OpCompositeConstruct %v4float %84 %85 %86 %87
+               OpStore %x_GLF_color %88
+               OpBranch %72
+         %74 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %90
+         %92 = OpCompositeConstruct %v4float %91 %91 %91 %91
+               OpStore %x_GLF_color %92
+               OpBranch %72
+         %72 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %93
+%tint_symbol = OpFunctionParameter %main_out
+         %97 = OpLabel
+         %98 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %98
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %100 = OpLabel
+        %101 = OpFunctionCall %void %main_1
+        %103 = OpLoad %v4float %x_GLF_color
+        %104 = OpCompositeConstruct %main_out %103
+        %102 = OpFunctionCall %void %tint_symbol_2 %104
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..0c41106
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var arr : array<f32, 10>;
+  f = 2.0;
+  let x_37 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_39 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_41 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_43 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_49 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_50 : f32 = f;
+  let x_52 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_55 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_57 : f32 = x_7.x_GLF_uniform_float_values[0];
+  arr = array<f32, 10>(x_37, x_39, x_41, x_43, x_45, x_47, x_49, pow(x_50, x_52), x_55, x_57);
+  let x_60 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_62 : f32 = arr[x_60];
+  let x_65 : i32 = x_9.x_GLF_uniform_int_values[3];
+  if ((i32(x_62) == x_65)) {
+    let x_71 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_77 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_80 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_71), f32(x_74), f32(x_77), f32(x_80));
+  } else {
+    let x_84 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm
new file mode 100644
index 0000000..f50e47e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm
@@ -0,0 +1,88 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %ret "ret"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %12 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %27 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %10
+         %28 = OpLabel
+         %29 = OpFunctionCall %int %func_
+         %30 = OpIEqual %bool %29 %int_2
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %int None %12
+         %34 = OpLabel
+        %ret = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %ret %int_0
+               OpStore %i %int_3
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %40 = OpLoad %int %i
+         %41 = OpBitwiseAnd %int %40 %int_1
+         %42 = OpSGreaterThan %bool %39 %41
+               OpBranchConditional %42 %43 %36
+         %43 = OpLabel
+         %44 = OpLoad %int %ret
+         %45 = OpIAdd %int %44 %int_1
+               OpStore %ret %45
+               OpBranch %37
+         %37 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %47 = OpLoad %int %46
+         %48 = OpLoad %int %i
+         %49 = OpISub %int %48 %47
+               OpStore %i %49
+               OpBranch %35
+         %36 = OpLabel
+         %50 = OpLoad %int %ret
+               OpReturnValue %50
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..757f40b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  int ret = 0;
+  int i = 0;
+  ret = 0;
+  i = 3;
+  while (true) {
+    if ((i > (i & 1))) {
+    } else {
+      break;
+    }
+    ret = (ret + 1);
+    {
+      const int x_47 = asint(x_8[0].x);
+      i = (i - x_47);
+    }
+  }
+  return ret;
+}
+
+void main_1() {
+  const int x_29 = func_();
+  if ((x_29 == 2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f57fd22
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_(constant buf0& x_8) {
+  int ret = 0;
+  int i = 0;
+  ret = 0;
+  i = 3;
+  while (true) {
+    int const x_39 = i;
+    int const x_40 = i;
+    if ((x_39 > (x_40 & 1))) {
+    } else {
+      break;
+    }
+    int const x_44 = ret;
+    ret = (x_44 + 1);
+    {
+      int const x_47 = x_8.one;
+      int const x_48 = i;
+      i = (x_48 - x_47);
+    }
+  }
+  int const x_50 = ret;
+  return x_50;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int const x_29 = func_(x_8);
+  if ((x_29 == 2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6d8b1a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,127 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 70
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %ret "ret"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %17 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %void = OpTypeVoid
+         %44 = OpTypeFunction %void
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %57 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %12
+         %14 = OpLabel
+        %ret = OpVariable %_ptr_Function_int Function %17
+          %i = OpVariable %_ptr_Function_int Function %17
+               OpStore %ret %int_0
+               OpStore %i %int_3
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %i
+         %26 = OpLoad %int %i
+         %28 = OpBitwiseAnd %int %26 %int_1
+         %29 = OpSGreaterThan %bool %25 %28
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %22
+         %31 = OpLabel
+         %34 = OpLoad %int %ret
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %ret %35
+               OpBranch %23
+         %23 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %40 = OpLoad %int %39
+         %41 = OpLoad %int %i
+         %42 = OpISub %int %41 %40
+               OpStore %i %42
+               OpBranch %21
+         %22 = OpLabel
+         %43 = OpLoad %int %ret
+               OpReturnValue %43
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %int %func_
+         %50 = OpIEqual %bool %48 %int_2
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %51
+         %53 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %58
+%tint_symbol = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %44
+         %65 = OpLabel
+         %66 = OpFunctionCall %void %main_1
+         %68 = OpLoad %v4float %x_GLF_color
+         %69 = OpCompositeConstruct %main_out %68
+         %67 = OpFunctionCall %void %tint_symbol_2 %69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b8c3805
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,54 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var ret : i32;
+  var i : i32;
+  ret = 0;
+  i = 3;
+  loop {
+    let x_39 : i32 = i;
+    let x_40 : i32 = i;
+    if ((x_39 > (x_40 & 1))) {
+    } else {
+      break;
+    }
+    let x_44 : i32 = ret;
+    ret = (x_44 + 1);
+
+    continuing {
+      let x_47 : i32 = x_8.one;
+      let x_48 : i32 = i;
+      i = (x_48 - x_47);
+    }
+  }
+  let x_50 : i32 = ret;
+  return x_50;
+}
+
+fn main_1() {
+  let x_29 : i32 = func_();
+  if ((x_29 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
new file mode 100644
index 0000000..b8c3805
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
@@ -0,0 +1,54 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var ret : i32;
+  var i : i32;
+  ret = 0;
+  i = 3;
+  loop {
+    let x_39 : i32 = i;
+    let x_40 : i32 = i;
+    if ((x_39 > (x_40 & 1))) {
+    } else {
+      break;
+    }
+    let x_44 : i32 = ret;
+    ret = (x_44 + 1);
+
+    continuing {
+      let x_47 : i32 = x_8.one;
+      let x_48 : i32 = i;
+      i = (x_48 - x_47);
+    }
+  }
+  let x_50 : i32 = ret;
+  return x_50;
+}
+
+fn main_1() {
+  let x_29 : i32 = func_();
+  if ((x_29 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..757f40b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  int ret = 0;
+  int i = 0;
+  ret = 0;
+  i = 3;
+  while (true) {
+    if ((i > (i & 1))) {
+    } else {
+      break;
+    }
+    ret = (ret + 1);
+    {
+      const int x_47 = asint(x_8[0].x);
+      i = (i - x_47);
+    }
+  }
+  return ret;
+}
+
+void main_1() {
+  const int x_29 = func_();
+  if ((x_29 == 2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f57fd22
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_(constant buf0& x_8) {
+  int ret = 0;
+  int i = 0;
+  ret = 0;
+  i = 3;
+  while (true) {
+    int const x_39 = i;
+    int const x_40 = i;
+    if ((x_39 > (x_40 & 1))) {
+    } else {
+      break;
+    }
+    int const x_44 = ret;
+    ret = (x_44 + 1);
+    {
+      int const x_47 = x_8.one;
+      int const x_48 = i;
+      i = (x_48 - x_47);
+    }
+  }
+  int const x_50 = ret;
+  return x_50;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int const x_29 = func_(x_8);
+  if ((x_29 == 2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6d8b1a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,127 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 70
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %ret "ret"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %17 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %void = OpTypeVoid
+         %44 = OpTypeFunction %void
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %57 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %12
+         %14 = OpLabel
+        %ret = OpVariable %_ptr_Function_int Function %17
+          %i = OpVariable %_ptr_Function_int Function %17
+               OpStore %ret %int_0
+               OpStore %i %int_3
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %i
+         %26 = OpLoad %int %i
+         %28 = OpBitwiseAnd %int %26 %int_1
+         %29 = OpSGreaterThan %bool %25 %28
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %22
+         %31 = OpLabel
+         %34 = OpLoad %int %ret
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %ret %35
+               OpBranch %23
+         %23 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %40 = OpLoad %int %39
+         %41 = OpLoad %int %i
+         %42 = OpISub %int %41 %40
+               OpStore %i %42
+               OpBranch %21
+         %22 = OpLabel
+         %43 = OpLoad %int %ret
+               OpReturnValue %43
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %int %func_
+         %50 = OpIEqual %bool %48 %int_2
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %51
+         %53 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %58
+%tint_symbol = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %44
+         %65 = OpLabel
+         %66 = OpFunctionCall %void %main_1
+         %68 = OpLoad %v4float %x_GLF_color
+         %69 = OpCompositeConstruct %main_out %68
+         %67 = OpFunctionCall %void %tint_symbol_2 %69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b8c3805
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,54 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var ret : i32;
+  var i : i32;
+  ret = 0;
+  i = 3;
+  loop {
+    let x_39 : i32 = i;
+    let x_40 : i32 = i;
+    if ((x_39 > (x_40 & 1))) {
+    } else {
+      break;
+    }
+    let x_44 : i32 = ret;
+    ret = (x_44 + 1);
+
+    continuing {
+      let x_47 : i32 = x_8.one;
+      let x_48 : i32 = i;
+      i = (x_48 - x_47);
+    }
+  }
+  let x_50 : i32 = ret;
+  return x_50;
+}
+
+fn main_1() {
+  let x_29 : i32 = func_();
+  if ((x_29 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm
new file mode 100644
index 0000000..6c35fbe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm
@@ -0,0 +1,50 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %20 = OpLabel
+         %21 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %22 = OpLoad %int %21
+         %23 = OpBitwiseAnd %int %22 %int_0
+         %24 = OpIEqual %bool %23 %int_0
+               OpSelectionMerge %25 None
+               OpBranchConditional %24 %26 %27
+         %26 = OpLabel
+               OpStore %_GLF_color %18
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..34a3e6f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_22 = asint(x_5[0].x);
+  if (((x_22 & 0) == 0)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.msl
new file mode 100644
index 0000000..fab551b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_22 = x_5.one;
+  if (((x_22 & 0) == 0)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..b79eb2a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %30 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %22 = OpBitwiseAnd %int %20 %int_0
+         %23 = OpIEqual %bool %22 %int_0
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpStore %x_GLF_color %30
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..f8191eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_22 : i32 = x_5.one;
+  if (((x_22 & 0) == 0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
new file mode 100644
index 0000000..f8191eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_22 : i32 = x_5.one;
+  if (((x_22 & 0) == 0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..34a3e6f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_22 = asint(x_5[0].x);
+  if (((x_22 & 0) == 0)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.msl
new file mode 100644
index 0000000..fab551b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_22 = x_5.one;
+  if (((x_22 & 0) == 0)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..b79eb2a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %30 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %22 = OpBitwiseAnd %int %20 %int_0
+         %23 = OpIEqual %bool %22 %int_0
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpStore %x_GLF_color %30
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..f8191eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_22 : i32 = x_5.one;
+  if (((x_22 & 0) == 0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm
new file mode 100644
index 0000000..819e53a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm
@@ -0,0 +1,51 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+     %int_n1 = OpConstant %int -1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %20 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %23 = OpLoad %int %22
+         %24 = OpBitwiseOr %int %int_n1 %23
+         %25 = OpIEqual %bool %24 %int_n1
+               OpSelectionMerge %26 None
+               OpBranchConditional %25 %27 %28
+         %27 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %26
+         %28 = OpLabel
+               OpStore %_GLF_color %20
+               OpBranch %26
+         %26 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..9c68880
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_23 = asint(x_5[0].x);
+  if (((-1 | x_23) == -1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.msl
new file mode 100644
index 0000000..7b5a9e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_23 = x_5.one;
+  if (((-1 | x_23) == -1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..5edb687
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %int_n1 = OpConstant %int -1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %30 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %22 = OpBitwiseOr %int %int_n1 %20
+         %23 = OpIEqual %bool %22 %int_n1
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpStore %x_GLF_color %30
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..6af6f72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_23 : i32 = x_5.one;
+  if (((-1 | x_23) == -1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
new file mode 100644
index 0000000..6af6f72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_23 : i32 = x_5.one;
+  if (((-1 | x_23) == -1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..9c68880
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_23 = asint(x_5[0].x);
+  if (((-1 | x_23) == -1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.msl
new file mode 100644
index 0000000..7b5a9e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_23 = x_5.one;
+  if (((-1 | x_23) == -1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..5edb687
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %int_n1 = OpConstant %int -1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %30 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %22 = OpBitwiseOr %int %int_n1 %20
+         %23 = OpIEqual %bool %22 %int_n1
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpStore %x_GLF_color %30
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..6af6f72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_23 : i32 = x_5.one;
+  if (((-1 | x_23) == -1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm
new file mode 100644
index 0000000..3c50991
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm
@@ -0,0 +1,53 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %a RelaxedPrecision
+               OpDecorate %b RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_6 = OpConstant %int 6
+      %int_5 = OpConstant %int 5
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %10
+         %24 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_6
+               OpStore %b %int_5
+          %6 = OpLoad %int %a
+          %7 = OpLoad %int %b
+          %8 = OpBitwiseXor %int %6 %7
+         %25 = OpINotEqual %bool %8 %int_3
+               OpSelectionMerge %26 None
+               OpBranchConditional %25 %27 %28
+         %27 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %26
+         %28 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %26
+         %26 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f27c44b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  a = 6;
+  b = 5;
+  if (((a ^ b) != 3)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5084cf3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  a = 6;
+  b = 5;
+  int const x_6 = a;
+  int const x_7 = b;
+  if (((x_6 ^ x_7) != 3)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0671048
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,79 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_6 = OpConstant %int 6
+      %int_5 = OpConstant %int 5
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %15
+          %b = OpVariable %_ptr_Function_int Function %15
+               OpStore %a %int_6
+               OpStore %b %int_5
+         %19 = OpLoad %int %a
+         %20 = OpLoad %int %b
+         %21 = OpBitwiseXor %int %19 %20
+         %23 = OpINotEqual %bool %21 %int_3
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpStore %x_GLF_color %29
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a475384
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  a = 6;
+  b = 5;
+  let x_6 : i32 = a;
+  let x_7 : i32 = b;
+  if (((x_6 ^ x_7) != 3)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
new file mode 100644
index 0000000..a475384
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
@@ -0,0 +1,27 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  a = 6;
+  b = 5;
+  let x_6 : i32 = a;
+  let x_7 : i32 = b;
+  if (((x_6 ^ x_7) != 3)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f27c44b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  a = 6;
+  b = 5;
+  if (((a ^ b) != 3)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5084cf3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  a = 6;
+  b = 5;
+  int const x_6 = a;
+  int const x_7 = b;
+  if (((x_6 ^ x_7) != 3)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0671048
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,79 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_6 = OpConstant %int 6
+      %int_5 = OpConstant %int 5
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %15
+          %b = OpVariable %_ptr_Function_int Function %15
+               OpStore %a %int_6
+               OpStore %b %int_5
+         %19 = OpLoad %int %a
+         %20 = OpLoad %int %b
+         %21 = OpBitwiseXor %int %19 %20
+         %23 = OpINotEqual %bool %21 %int_3
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpStore %x_GLF_color %29
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a475384
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  a = 6;
+  b = 5;
+  let x_6 : i32 = a;
+  let x_7 : i32 = b;
+  if (((x_6 ^ x_7) != 3)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm
new file mode 100644
index 0000000..e200183
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm
@@ -0,0 +1,41 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %17 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %6
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_bool Function
+               OpStore %a %false
+         %19 = OpLoad %bool %a
+         %20 = OpLogicalAnd %bool %true %19
+               OpSelectionMerge %21 None
+               OpBranchConditional %20 %22 %23
+         %22 = OpLabel
+               OpStore %_GLF_color %15
+               OpBranch %21
+         %23 = OpLabel
+               OpStore %_GLF_color %17
+               OpBranch %21
+         %21 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..205d238
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool a = false;
+  a = false;
+  bool tint_tmp = true;
+  if (tint_tmp) {
+    tint_tmp = a;
+  }
+  if ((tint_tmp)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.msl
new file mode 100644
index 0000000..c5fe7c9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool a = false;
+  a = false;
+  bool const x_19 = a;
+  if ((true && x_19)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..ae7b276
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.spvasm
@@ -0,0 +1,77 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %29 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_bool Function %15
+               OpStore %a %false
+         %17 = OpLoad %bool %a
+               OpSelectionMerge %19 None
+               OpBranchConditional %true %20 %19
+         %20 = OpLabel
+               OpBranch %19
+         %19 = OpLabel
+         %21 = OpPhi %bool %true %11 %17 %20
+               OpSelectionMerge %22 None
+               OpBranchConditional %21 %23 %24
+         %23 = OpLabel
+               OpStore %x_GLF_color %26
+               OpBranch %22
+         %24 = OpLabel
+               OpStore %x_GLF_color %28
+               OpBranch %22
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %29
+%tint_symbol = OpFunctionParameter %main_out
+         %33 = OpLabel
+         %34 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %34
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %x_GLF_color
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_2 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..3d02048
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.spvasm.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : bool;
+  a = false;
+  let x_19 : bool = a;
+  if ((true && x_19)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
new file mode 100644
index 0000000..3d02048
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : bool;
+  a = false;
+  let x_19 : bool = a;
+  if ((true && x_19)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..205d238
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool a = false;
+  a = false;
+  bool tint_tmp = true;
+  if (tint_tmp) {
+    tint_tmp = a;
+  }
+  if ((tint_tmp)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.msl
new file mode 100644
index 0000000..c5fe7c9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool a = false;
+  a = false;
+  bool const x_19 = a;
+  if ((true && x_19)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..ae7b276
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.spvasm
@@ -0,0 +1,77 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %29 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_bool Function %15
+               OpStore %a %false
+         %17 = OpLoad %bool %a
+               OpSelectionMerge %19 None
+               OpBranchConditional %true %20 %19
+         %20 = OpLabel
+               OpBranch %19
+         %19 = OpLabel
+         %21 = OpPhi %bool %true %11 %17 %20
+               OpSelectionMerge %22 None
+               OpBranchConditional %21 %23 %24
+         %23 = OpLabel
+               OpStore %x_GLF_color %26
+               OpBranch %22
+         %24 = OpLabel
+               OpStore %x_GLF_color %28
+               OpBranch %22
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %29
+%tint_symbol = OpFunctionParameter %main_out
+         %33 = OpLabel
+         %34 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %34
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %x_GLF_color
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_2 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..3d02048
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : bool;
+  a = false;
+  let x_19 : bool = a;
+  if ((true && x_19)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm
new file mode 100644
index 0000000..757b7ac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm
@@ -0,0 +1,71 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_3 = OpConstant %int 3
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %10
+         %29 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %i %int_2
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+          %6 = OpLoad %int %i
+          %7 = OpIAdd %int %6 %int_1
+               OpStore %i %7
+               OpBranch %32
+         %32 = OpLabel
+         %34 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %35 = OpLoad %float %34
+         %36 = OpFOrdGreaterThanEqual %bool %35 %float_0
+         %37 = OpLogicalAnd %bool %36 %false
+               OpBranchConditional %37 %30 %31
+         %31 = OpLabel
+          %8 = OpLoad %int %i
+         %38 = OpIEqual %bool %8 %int_3
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %39
+         %41 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..52e6a55
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,46 @@
+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() {
+  int i = 0;
+  i = 2;
+  while (true) {
+    i = (i + 1);
+    {
+      const float x_35 = gl_FragCoord.x;
+      bool tint_tmp = (x_35 >= 0.0f);
+      if (tint_tmp) {
+        tint_tmp = false;
+      }
+      if ((tint_tmp)) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((i == 3)) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a3fb456
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  i = 2;
+  while (true) {
+    int const x_6 = i;
+    i = (x_6 + 1);
+    {
+      float const x_35 = (*(tint_symbol_5)).x;
+      if (((x_35 >= 0.0f) && false)) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_8 = i;
+  if ((x_8 == 3)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5285dcf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,119 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+         %49 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %50 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %51 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %i %int_2
+               OpBranch %20
+         %20 = OpLabel
+               OpLoopMerge %21 %22 None
+               OpBranch %23
+         %23 = OpLabel
+         %24 = OpLoad %int %i
+         %26 = OpIAdd %int %24 %int_1
+               OpStore %i %26
+               OpBranch %22
+         %22 = OpLabel
+         %30 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %31 = OpLoad %float %30
+         %33 = OpFOrdGreaterThanEqual %bool %31 %float_0
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+         %38 = OpPhi %bool %33 %22 %false %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %21
+         %39 = OpLabel
+               OpBranch %20
+         %21 = OpLabel
+         %42 = OpLoad %int %i
+         %44 = OpIEqual %bool %42 %int_3
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+               OpStore %x_GLF_color %49
+               OpBranch %45
+         %47 = OpLabel
+               OpStore %x_GLF_color %50
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %51
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %55 = OpLabel
+         %56 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %58 = OpLabel
+         %59 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %59
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_3 %63
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 22[%22] is not post dominated by the back-edge block 39[%39]
+  %39 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..4fa9901
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,39 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 2;
+  loop {
+    let x_6 : i32 = i;
+    i = (x_6 + 1);
+
+    continuing {
+      let x_35 : f32 = gl_FragCoord.x;
+      if (((x_35 >= 0.0) && false)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_8 : i32 = i;
+  if ((x_8 == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
new file mode 100644
index 0000000..4fa9901
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
@@ -0,0 +1,39 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 2;
+  loop {
+    let x_6 : i32 = i;
+    i = (x_6 + 1);
+
+    continuing {
+      let x_35 : f32 = gl_FragCoord.x;
+      if (((x_35 >= 0.0) && false)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_8 : i32 = i;
+  if ((x_8 == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..52e6a55
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,46 @@
+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() {
+  int i = 0;
+  i = 2;
+  while (true) {
+    i = (i + 1);
+    {
+      const float x_35 = gl_FragCoord.x;
+      bool tint_tmp = (x_35 >= 0.0f);
+      if (tint_tmp) {
+        tint_tmp = false;
+      }
+      if ((tint_tmp)) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((i == 3)) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a3fb456
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  i = 2;
+  while (true) {
+    int const x_6 = i;
+    i = (x_6 + 1);
+    {
+      float const x_35 = (*(tint_symbol_5)).x;
+      if (((x_35 >= 0.0f) && false)) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_8 = i;
+  if ((x_8 == 3)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5285dcf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,119 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+         %49 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %50 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %51 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %i %int_2
+               OpBranch %20
+         %20 = OpLabel
+               OpLoopMerge %21 %22 None
+               OpBranch %23
+         %23 = OpLabel
+         %24 = OpLoad %int %i
+         %26 = OpIAdd %int %24 %int_1
+               OpStore %i %26
+               OpBranch %22
+         %22 = OpLabel
+         %30 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %31 = OpLoad %float %30
+         %33 = OpFOrdGreaterThanEqual %bool %31 %float_0
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+         %38 = OpPhi %bool %33 %22 %false %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %21
+         %39 = OpLabel
+               OpBranch %20
+         %21 = OpLabel
+         %42 = OpLoad %int %i
+         %44 = OpIEqual %bool %42 %int_3
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+               OpStore %x_GLF_color %49
+               OpBranch %45
+         %47 = OpLabel
+               OpStore %x_GLF_color %50
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %51
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %55 = OpLabel
+         %56 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %58 = OpLabel
+         %59 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %59
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_3 %63
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 22[%22] is not post dominated by the back-edge block 39[%39]
+  %39 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..4fa9901
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,39 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 2;
+  loop {
+    let x_6 : i32 = i;
+    i = (x_6 + 1);
+
+    continuing {
+      let x_35 : f32 = gl_FragCoord.x;
+      if (((x_35 >= 0.0) && false)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_8 : i32 = i;
+  if ((x_8 == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm
new file mode 100644
index 0000000..1155fec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm
@@ -0,0 +1,45 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %18 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %6
+         %20 = OpLabel
+         %21 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %22 = OpLoad %float %21
+         %23 = OpFOrdLessThan %bool %22 %float_0
+         %24 = OpLogicalOr %bool %23 %true
+               OpSelectionMerge %25 None
+               OpBranchConditional %24 %26 %27
+         %26 = OpLabel
+               OpStore %_GLF_color %18
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..e1f6bdd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.hlsl
@@ -0,0 +1,35 @@
+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() {
+  const float x_22 = gl_FragCoord.x;
+  bool tint_tmp = (x_22 < 0.0f);
+  if (!tint_tmp) {
+    tint_tmp = true;
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.msl
new file mode 100644
index 0000000..c32c624
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_22 = (*(tint_symbol_5)).x;
+  if (((x_22 < 0.0f) || true)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..53bc076
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.spvasm
@@ -0,0 +1,84 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %32 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %33 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %19 = OpLoad %float %18
+         %21 = OpFOrdLessThan %bool %19 %float_0
+               OpSelectionMerge %23 None
+               OpBranchConditional %21 %23 %24
+         %24 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+         %26 = OpPhi %bool %21 %14 %true %24
+               OpSelectionMerge %27 None
+               OpBranchConditional %26 %28 %29
+         %28 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %27
+         %29 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %33
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %37 = OpLabel
+         %38 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %38
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %40 = OpLabel
+         %41 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %41
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_3 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..56678ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.spvasm.expected.wgsl
@@ -0,0 +1,25 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_22 : f32 = gl_FragCoord.x;
+  if (((x_22 < 0.0) || true)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
new file mode 100644
index 0000000..56678ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
@@ -0,0 +1,25 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_22 : f32 = gl_FragCoord.x;
+  if (((x_22 < 0.0) || true)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..e1f6bdd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+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() {
+  const float x_22 = gl_FragCoord.x;
+  bool tint_tmp = (x_22 < 0.0f);
+  if (!tint_tmp) {
+    tint_tmp = true;
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.msl
new file mode 100644
index 0000000..c32c624
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_22 = (*(tint_symbol_5)).x;
+  if (((x_22 < 0.0f) || true)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..53bc076
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.spvasm
@@ -0,0 +1,84 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %32 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %33 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %19 = OpLoad %float %18
+         %21 = OpFOrdLessThan %bool %19 %float_0
+               OpSelectionMerge %23 None
+               OpBranchConditional %21 %23 %24
+         %24 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+         %26 = OpPhi %bool %21 %14 %true %24
+               OpSelectionMerge %27 None
+               OpBranchConditional %26 %28 %29
+         %28 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %27
+         %29 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %33
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %37 = OpLabel
+         %38 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %38
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %40 = OpLabel
+         %41 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %41
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_3 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..56678ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_22 : f32 = gl_FragCoord.x;
+  if (((x_22 < 0.0) || true)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm
new file mode 100644
index 0000000..9ddf7dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm
@@ -0,0 +1,62 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %minValue "minValue"
+               OpName %negMinValue "negMinValue"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "minusOne"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+%int_n2147483648 = OpConstant %int -2147483648
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %24 = OpLabel
+   %minValue = OpVariable %_ptr_Function_int Function
+%negMinValue = OpVariable %_ptr_Function_int Function
+               OpStore %minValue %int_n2147483648
+         %25 = OpLoad %int %minValue
+         %26 = OpSNegate %int %25
+               OpStore %negMinValue %26
+         %27 = OpLoad %int %negMinValue
+         %28 = OpLoad %int %minValue
+         %29 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %30 = OpLoad %int %29
+         %31 = OpIMul %int %28 %30
+         %32 = OpIEqual %bool %27 %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9fa0010
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int minValue = 0;
+  int negMinValue = 0;
+  minValue = -2147483648;
+  negMinValue = -(minValue);
+  const int x_27 = negMinValue;
+  const int x_28 = minValue;
+  const int x_30 = asint(x_7[0].x);
+  if ((x_27 == (x_28 * x_30))) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bc8e92f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int minusOne;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int minValue = 0;
+  int negMinValue = 0;
+  minValue = -2147483648;
+  int const x_25 = minValue;
+  negMinValue = -(x_25);
+  int const x_27 = negMinValue;
+  int const x_28 = minValue;
+  int const x_30 = x_7.minusOne;
+  if ((x_27 == (x_28 * x_30))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3ae71bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,95 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "minusOne"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %minValue "minValue"
+               OpName %negMinValue "negMinValue"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+%int_n2147483648 = OpConstant %int -2147483648
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %40 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+   %minValue = OpVariable %_ptr_Function_int Function %18
+%negMinValue = OpVariable %_ptr_Function_int Function %18
+               OpStore %minValue %int_n2147483648
+         %21 = OpLoad %int %minValue
+         %22 = OpSNegate %int %21
+               OpStore %negMinValue %22
+         %23 = OpLoad %int %negMinValue
+         %24 = OpLoad %int %minValue
+         %28 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %29 = OpLoad %int %28
+         %30 = OpIMul %int %24 %29
+         %31 = OpIEqual %bool %23 %30
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %35
+         %34 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %40
+%tint_symbol = OpFunctionParameter %main_out
+         %44 = OpLabel
+         %45 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %45
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %v4float %x_GLF_color
+         %51 = OpCompositeConstruct %main_out %50
+         %49 = OpFunctionCall %void %tint_symbol_2 %51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ae8dd8b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  minusOne : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var minValue : i32;
+  var negMinValue : i32;
+  minValue = -2147483648;
+  let x_25 : i32 = minValue;
+  negMinValue = -(x_25);
+  let x_27 : i32 = negMinValue;
+  let x_28 : i32 = minValue;
+  let x_30 : i32 = x_7.minusOne;
+  if ((x_27 == (x_28 * x_30))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
new file mode 100644
index 0000000..ae8dd8b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  minusOne : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var minValue : i32;
+  var negMinValue : i32;
+  minValue = -2147483648;
+  let x_25 : i32 = minValue;
+  negMinValue = -(x_25);
+  let x_27 : i32 = negMinValue;
+  let x_28 : i32 = minValue;
+  let x_30 : i32 = x_7.minusOne;
+  if ((x_27 == (x_28 * x_30))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9fa0010
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int minValue = 0;
+  int negMinValue = 0;
+  minValue = -2147483648;
+  negMinValue = -(minValue);
+  const int x_27 = negMinValue;
+  const int x_28 = minValue;
+  const int x_30 = asint(x_7[0].x);
+  if ((x_27 == (x_28 * x_30))) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..bc8e92f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int minusOne;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int minValue = 0;
+  int negMinValue = 0;
+  minValue = -2147483648;
+  int const x_25 = minValue;
+  negMinValue = -(x_25);
+  int const x_27 = negMinValue;
+  int const x_28 = minValue;
+  int const x_30 = x_7.minusOne;
+  if ((x_27 == (x_28 * x_30))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3ae71bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,95 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "minusOne"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %minValue "minValue"
+               OpName %negMinValue "negMinValue"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+%int_n2147483648 = OpConstant %int -2147483648
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %40 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+   %minValue = OpVariable %_ptr_Function_int Function %18
+%negMinValue = OpVariable %_ptr_Function_int Function %18
+               OpStore %minValue %int_n2147483648
+         %21 = OpLoad %int %minValue
+         %22 = OpSNegate %int %21
+               OpStore %negMinValue %22
+         %23 = OpLoad %int %negMinValue
+         %24 = OpLoad %int %minValue
+         %28 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %29 = OpLoad %int %28
+         %30 = OpIMul %int %24 %29
+         %31 = OpIEqual %bool %23 %30
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %35
+         %34 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %40
+%tint_symbol = OpFunctionParameter %main_out
+         %44 = OpLabel
+         %45 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %45
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %v4float %x_GLF_color
+         %51 = OpCompositeConstruct %main_out %50
+         %49 = OpFunctionCall %void %tint_symbol_2 %51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ae8dd8b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  minusOne : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var minValue : i32;
+  var negMinValue : i32;
+  minValue = -2147483648;
+  let x_25 : i32 = minValue;
+  negMinValue = -(x_25);
+  let x_27 : i32 = negMinValue;
+  let x_28 : i32 = minValue;
+  let x_30 : i32 = x_7.minusOne;
+  if ((x_27 == (x_28 * x_30))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm
new file mode 100644
index 0000000..6b8e95c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %5 RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_3 = OpConstant %int 3
+     %int_n4 = OpConstant %int -4
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %20 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %21 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %i %int_3
+          %5 = OpLoad %int %i
+          %6 = OpNot %int %5
+         %22 = OpIEqual %bool %6 %int_n4
+               OpSelectionMerge %23 None
+               OpBranchConditional %22 %24 %25
+         %24 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %23
+         %25 = OpLabel
+               OpStore %_GLF_color %20
+               OpBranch %23
+         %23 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..200bb96
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  i = 3;
+  if ((~(i) == -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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.msl
new file mode 100644
index 0000000..cff2cd3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  i = 3;
+  int const x_5 = i;
+  if ((~(x_5) == -4)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..358ea77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.spvasm
@@ -0,0 +1,74 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_3 = OpConstant %int 3
+     %int_n4 = OpConstant %int -4
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %29 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+               OpStore %i %int_3
+         %17 = OpLoad %int %i
+         %18 = OpNot %int %17
+         %20 = OpIEqual %bool %18 %int_n4
+               OpSelectionMerge %22 None
+               OpBranchConditional %20 %23 %24
+         %23 = OpLabel
+               OpStore %x_GLF_color %27
+               OpBranch %22
+         %24 = OpLabel
+               OpStore %x_GLF_color %28
+               OpBranch %22
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %29
+%tint_symbol = OpFunctionParameter %main_out
+         %33 = OpLabel
+         %34 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %34
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %x_GLF_color
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_2 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..ec3893d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.spvasm.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 3;
+  let x_5 : i32 = i;
+  if ((~(x_5) == -4)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
new file mode 100644
index 0000000..ec3893d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 3;
+  let x_5 : i32 = i;
+  if ((~(x_5) == -4)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..200bb96
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  i = 3;
+  if ((~(i) == -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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.msl
new file mode 100644
index 0000000..cff2cd3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  i = 3;
+  int const x_5 = i;
+  if ((~(x_5) == -4)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..358ea77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.spvasm
@@ -0,0 +1,74 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_3 = OpConstant %int 3
+     %int_n4 = OpConstant %int -4
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %29 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+               OpStore %i %int_3
+         %17 = OpLoad %int %i
+         %18 = OpNot %int %17
+         %20 = OpIEqual %bool %18 %int_n4
+               OpSelectionMerge %22 None
+               OpBranchConditional %20 %23 %24
+         %23 = OpLabel
+               OpStore %x_GLF_color %27
+               OpBranch %22
+         %24 = OpLabel
+               OpStore %x_GLF_color %28
+               OpBranch %22
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %29
+%tint_symbol = OpFunctionParameter %main_out
+         %33 = OpLabel
+         %34 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %34
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %x_GLF_color
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_2 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..ec3893d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 3;
+  let x_5 : i32 = i;
+  if ((~(x_5) == -4)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm
new file mode 100644
index 0000000..e4241f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm
@@ -0,0 +1,166 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %e "e"
+               OpName %f "f"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+    %uint_77 = OpConstant %uint 77
+       %buf0 = OpTypeStruct %uint
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+    %uint_32 = OpConstant %uint 32
+  %uint_3243 = OpConstant %uint 3243
+    %uint_33 = OpConstant %uint 33
+    %uint_23 = OpConstant %uint 23
+   %uint_345 = OpConstant %uint 345
+  %uint_2395 = OpConstant %uint 2395
+%uint_290485 = OpConstant %uint 290485
+ %uint_44321 = OpConstant %uint 44321
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %37 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %13
+         %39 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+          %b = OpVariable %_ptr_Function_uint Function
+          %c = OpVariable %_ptr_Function_uint Function
+          %d = OpVariable %_ptr_Function_uint Function
+          %e = OpVariable %_ptr_Function_uint Function
+          %f = OpVariable %_ptr_Function_uint Function
+         %40 = OpAccessChain %_ptr_Uniform_uint %_ %int_0
+         %41 = OpLoad %uint %40
+         %42 = OpIAdd %uint %uint_77 %41
+         %43 = OpShiftRightLogical %uint %42 %uint_32
+               OpStore %a %43
+         %44 = OpAccessChain %_ptr_Uniform_uint %_ %int_0
+         %45 = OpLoad %uint %44
+         %46 = OpIAdd %uint %uint_3243 %45
+         %47 = OpShiftRightLogical %uint %46 %uint_33
+               OpStore %b %47
+         %48 = OpAccessChain %_ptr_Uniform_uint %_ %int_0
+         %49 = OpLoad %uint %48
+         %50 = OpIAdd %uint %uint_23 %49
+         %51 = OpShiftRightLogical %uint %50 %uint_345
+               OpStore %c %51
+         %52 = OpAccessChain %_ptr_Uniform_uint %_ %int_0
+         %53 = OpLoad %uint %52
+         %54 = OpIAdd %uint %uint_2395 %53
+         %55 = OpShiftLeftLogical %uint %54 %uint_32
+               OpStore %d %55
+         %56 = OpAccessChain %_ptr_Uniform_uint %_ %int_0
+         %57 = OpLoad %uint %56
+         %58 = OpIAdd %uint %uint_290485 %57
+         %59 = OpShiftLeftLogical %uint %58 %uint_33
+               OpStore %e %59
+         %60 = OpAccessChain %_ptr_Uniform_uint %_ %int_0
+         %61 = OpLoad %uint %60
+         %62 = OpIAdd %uint %uint_44321 %61
+         %63 = OpShiftLeftLogical %uint %62 %uint_345
+               OpStore %f %63
+         %64 = OpLoad %uint %a
+         %65 = OpINotEqual %bool %64 %uint_1
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %66
+         %67 = OpLabel
+               OpStore %a %uint_1
+               OpBranch %66
+         %66 = OpLabel
+         %68 = OpLoad %uint %b
+         %69 = OpINotEqual %bool %68 %uint_0
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+               OpStore %b %uint_0
+               OpBranch %70
+         %70 = OpLabel
+         %72 = OpLoad %uint %c
+         %73 = OpINotEqual %bool %72 %uint_1
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+               OpStore %c %uint_1
+               OpBranch %74
+         %74 = OpLabel
+         %76 = OpLoad %uint %d
+         %77 = OpINotEqual %bool %76 %uint_0
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+               OpStore %d %uint_0
+               OpBranch %78
+         %78 = OpLabel
+         %80 = OpLoad %uint %e
+         %81 = OpINotEqual %bool %80 %uint_1
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+               OpStore %e %uint_1
+               OpBranch %82
+         %82 = OpLabel
+         %84 = OpLoad %uint %f
+         %85 = OpINotEqual %bool %84 %uint_0
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+               OpStore %f %uint_0
+               OpBranch %86
+         %86 = OpLabel
+         %88 = OpLoad %uint %a
+         %89 = OpIEqual %bool %88 %uint_1
+         %90 = OpLoad %uint %b
+         %91 = OpIEqual %bool %90 %uint_0
+         %92 = OpLogicalAnd %bool %89 %91
+         %93 = OpLoad %uint %c
+         %94 = OpIEqual %bool %93 %uint_1
+         %95 = OpLogicalAnd %bool %92 %94
+         %96 = OpLoad %uint %d
+         %97 = OpIEqual %bool %96 %uint_0
+         %98 = OpLogicalAnd %bool %95 %97
+         %99 = OpLoad %uint %e
+        %100 = OpIEqual %bool %99 %uint_1
+        %101 = OpLogicalAnd %bool %98 %100
+        %102 = OpLoad %uint %f
+        %103 = OpIEqual %bool %102 %uint_0
+        %104 = OpLogicalAnd %bool %101 %103
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+               OpStore %_GLF_color %37
+               OpBranch %105
+        %107 = OpLabel
+               OpStore %_GLF_color %38
+               OpBranch %105
+        %105 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..44f7ed6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.hlsl
@@ -0,0 +1,83 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  uint b = 0u;
+  uint c = 0u;
+  uint d = 0u;
+  uint e = 0u;
+  uint f = 0u;
+  const uint x_41 = x_6[0].x;
+  a = ((77u + x_41) >> 32u);
+  const uint x_45 = x_6[0].x;
+  b = ((3243u + x_45) >> 33u);
+  const uint x_49 = x_6[0].x;
+  c = ((23u + x_49) >> 345u);
+  const uint x_53 = x_6[0].x;
+  d = ((2395u + x_53) << 32u);
+  const uint x_57 = x_6[0].x;
+  e = ((290485u + x_57) << 33u);
+  const uint x_61 = x_6[0].x;
+  f = ((44321u + x_61) << 345u);
+  if ((a != 1u)) {
+    a = 1u;
+  }
+  if ((b != 0u)) {
+    b = 0u;
+  }
+  if ((c != 1u)) {
+    c = 1u;
+  }
+  if ((d != 0u)) {
+    d = 0u;
+  }
+  if ((e != 1u)) {
+    e = 1u;
+  }
+  if ((f != 0u)) {
+    f = 0u;
+  }
+  bool tint_tmp_4 = (a == 1u);
+  if (tint_tmp_4) {
+    tint_tmp_4 = (b == 0u);
+  }
+  bool tint_tmp_3 = (tint_tmp_4);
+  if (tint_tmp_3) {
+    tint_tmp_3 = (c == 1u);
+  }
+  bool tint_tmp_2 = (tint_tmp_3);
+  if (tint_tmp_2) {
+    tint_tmp_2 = (d == 0u);
+  }
+  bool tint_tmp_1 = (tint_tmp_2);
+  if (tint_tmp_1) {
+    tint_tmp_1 = (e == 1u);
+  }
+  bool tint_tmp = (tint_tmp_1);
+  if (tint_tmp) {
+    tint_tmp = (f == 0u);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.msl
new file mode 100644
index 0000000..5d8fa54
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ uint one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  uint b = 0u;
+  uint c = 0u;
+  uint d = 0u;
+  uint e = 0u;
+  uint f = 0u;
+  uint const x_41 = x_6.one;
+  a = ((77u + x_41) >> 32u);
+  uint const x_45 = x_6.one;
+  b = ((3243u + x_45) >> 33u);
+  uint const x_49 = x_6.one;
+  c = ((23u + x_49) >> 345u);
+  uint const x_53 = x_6.one;
+  d = ((2395u + x_53) << 32u);
+  uint const x_57 = x_6.one;
+  e = ((290485u + x_57) << 33u);
+  uint const x_61 = x_6.one;
+  f = ((44321u + x_61) << 345u);
+  uint const x_64 = a;
+  if ((x_64 != 1u)) {
+    a = 1u;
+  }
+  uint const x_68 = b;
+  if ((x_68 != 0u)) {
+    b = 0u;
+  }
+  uint const x_72 = c;
+  if ((x_72 != 1u)) {
+    c = 1u;
+  }
+  uint const x_76 = d;
+  if ((x_76 != 0u)) {
+    d = 0u;
+  }
+  uint const x_80 = e;
+  if ((x_80 != 1u)) {
+    e = 1u;
+  }
+  uint const x_84 = f;
+  if ((x_84 != 0u)) {
+    f = 0u;
+  }
+  uint const x_88 = a;
+  uint const x_90 = b;
+  uint const x_93 = c;
+  uint const x_96 = d;
+  uint const x_99 = e;
+  uint const x_102 = f;
+  if (((((((x_88 == 1u) && (x_90 == 0u)) && (x_93 == 1u)) && (x_96 == 0u)) && (x_99 == 1u)) && (x_102 == 0u))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..8468b806
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.spvasm
@@ -0,0 +1,221 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %e "e"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+       %buf0 = OpTypeStruct %uint
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %18 = OpConstantNull %uint
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+    %uint_77 = OpConstant %uint 77
+    %uint_32 = OpConstant %uint 32
+  %uint_3243 = OpConstant %uint 3243
+    %uint_33 = OpConstant %uint 33
+    %uint_23 = OpConstant %uint 23
+   %uint_345 = OpConstant %uint 345
+  %uint_2395 = OpConstant %uint 2395
+%uint_290485 = OpConstant %uint 290485
+ %uint_44321 = OpConstant %uint 44321
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %117 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %118 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %18
+          %b = OpVariable %_ptr_Function_uint Function %18
+          %c = OpVariable %_ptr_Function_uint Function %18
+          %d = OpVariable %_ptr_Function_uint Function %18
+          %e = OpVariable %_ptr_Function_uint Function %18
+          %f = OpVariable %_ptr_Function_uint Function %18
+         %26 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %27 = OpLoad %uint %26
+         %29 = OpIAdd %uint %uint_77 %27
+         %31 = OpShiftRightLogical %uint %29 %uint_32
+               OpStore %a %31
+         %32 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %33 = OpLoad %uint %32
+         %35 = OpIAdd %uint %uint_3243 %33
+         %37 = OpShiftRightLogical %uint %35 %uint_33
+               OpStore %b %37
+         %38 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %39 = OpLoad %uint %38
+         %41 = OpIAdd %uint %uint_23 %39
+         %43 = OpShiftRightLogical %uint %41 %uint_345
+               OpStore %c %43
+         %44 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %45 = OpLoad %uint %44
+         %47 = OpIAdd %uint %uint_2395 %45
+         %48 = OpShiftLeftLogical %uint %47 %uint_32
+               OpStore %d %48
+         %49 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %50 = OpLoad %uint %49
+         %52 = OpIAdd %uint %uint_290485 %50
+         %53 = OpShiftLeftLogical %uint %52 %uint_33
+               OpStore %e %53
+         %54 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %55 = OpLoad %uint %54
+         %57 = OpIAdd %uint %uint_44321 %55
+         %58 = OpShiftLeftLogical %uint %57 %uint_345
+               OpStore %f %58
+         %59 = OpLoad %uint %a
+         %61 = OpINotEqual %bool %59 %uint_1
+               OpSelectionMerge %63 None
+               OpBranchConditional %61 %64 %63
+         %64 = OpLabel
+               OpStore %a %uint_1
+               OpBranch %63
+         %63 = OpLabel
+         %65 = OpLoad %uint %b
+         %66 = OpINotEqual %bool %65 %uint_0
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+               OpStore %b %uint_0
+               OpBranch %67
+         %67 = OpLabel
+         %69 = OpLoad %uint %c
+         %70 = OpINotEqual %bool %69 %uint_1
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+               OpStore %c %uint_1
+               OpBranch %71
+         %71 = OpLabel
+         %73 = OpLoad %uint %d
+         %74 = OpINotEqual %bool %73 %uint_0
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+               OpStore %d %uint_0
+               OpBranch %75
+         %75 = OpLabel
+         %77 = OpLoad %uint %e
+         %78 = OpINotEqual %bool %77 %uint_1
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpStore %e %uint_1
+               OpBranch %79
+         %79 = OpLabel
+         %81 = OpLoad %uint %f
+         %82 = OpINotEqual %bool %81 %uint_0
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+               OpStore %f %uint_0
+               OpBranch %83
+         %83 = OpLabel
+         %85 = OpLoad %uint %a
+         %86 = OpLoad %uint %b
+         %87 = OpLoad %uint %c
+         %88 = OpLoad %uint %d
+         %89 = OpLoad %uint %e
+         %90 = OpLoad %uint %f
+         %91 = OpIEqual %bool %85 %uint_1
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %92
+         %93 = OpLabel
+         %94 = OpIEqual %bool %86 %uint_0
+               OpBranch %92
+         %92 = OpLabel
+         %95 = OpPhi %bool %91 %83 %94 %93
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+         %98 = OpIEqual %bool %87 %uint_1
+               OpBranch %96
+         %96 = OpLabel
+         %99 = OpPhi %bool %95 %92 %98 %97
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %100
+        %101 = OpLabel
+        %102 = OpIEqual %bool %88 %uint_0
+               OpBranch %100
+        %100 = OpLabel
+        %103 = OpPhi %bool %99 %96 %102 %101
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+        %106 = OpIEqual %bool %89 %uint_1
+               OpBranch %104
+        %104 = OpLabel
+        %107 = OpPhi %bool %103 %100 %106 %105
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %108
+        %109 = OpLabel
+        %110 = OpIEqual %bool %90 %uint_0
+               OpBranch %108
+        %108 = OpLabel
+        %111 = OpPhi %bool %107 %104 %110 %109
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %114
+        %113 = OpLabel
+               OpStore %x_GLF_color %117
+               OpBranch %112
+        %114 = OpLabel
+               OpStore %x_GLF_color %118
+               OpBranch %112
+        %112 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..ec6d634
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.spvasm.expected.wgsl
@@ -0,0 +1,76 @@
+[[block]]
+struct buf0 {
+  one : u32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var b : u32;
+  var c : u32;
+  var d : u32;
+  var e : u32;
+  var f : u32;
+  let x_41 : u32 = x_6.one;
+  a = ((77u + x_41) >> 32u);
+  let x_45 : u32 = x_6.one;
+  b = ((3243u + x_45) >> 33u);
+  let x_49 : u32 = x_6.one;
+  c = ((23u + x_49) >> 345u);
+  let x_53 : u32 = x_6.one;
+  d = ((2395u + x_53) << 32u);
+  let x_57 : u32 = x_6.one;
+  e = ((290485u + x_57) << 33u);
+  let x_61 : u32 = x_6.one;
+  f = ((44321u + x_61) << 345u);
+  let x_64 : u32 = a;
+  if ((x_64 != 1u)) {
+    a = 1u;
+  }
+  let x_68 : u32 = b;
+  if ((x_68 != 0u)) {
+    b = 0u;
+  }
+  let x_72 : u32 = c;
+  if ((x_72 != 1u)) {
+    c = 1u;
+  }
+  let x_76 : u32 = d;
+  if ((x_76 != 0u)) {
+    d = 0u;
+  }
+  let x_80 : u32 = e;
+  if ((x_80 != 1u)) {
+    e = 1u;
+  }
+  let x_84 : u32 = f;
+  if ((x_84 != 0u)) {
+    f = 0u;
+  }
+  let x_88 : u32 = a;
+  let x_90 : u32 = b;
+  let x_93 : u32 = c;
+  let x_96 : u32 = d;
+  let x_99 : u32 = e;
+  let x_102 : u32 = f;
+  if (((((((x_88 == 1u) && (x_90 == 0u)) && (x_93 == 1u)) && (x_96 == 0u)) && (x_99 == 1u)) && (x_102 == 0u))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
new file mode 100644
index 0000000..ec6d634
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
@@ -0,0 +1,76 @@
+[[block]]
+struct buf0 {
+  one : u32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var b : u32;
+  var c : u32;
+  var d : u32;
+  var e : u32;
+  var f : u32;
+  let x_41 : u32 = x_6.one;
+  a = ((77u + x_41) >> 32u);
+  let x_45 : u32 = x_6.one;
+  b = ((3243u + x_45) >> 33u);
+  let x_49 : u32 = x_6.one;
+  c = ((23u + x_49) >> 345u);
+  let x_53 : u32 = x_6.one;
+  d = ((2395u + x_53) << 32u);
+  let x_57 : u32 = x_6.one;
+  e = ((290485u + x_57) << 33u);
+  let x_61 : u32 = x_6.one;
+  f = ((44321u + x_61) << 345u);
+  let x_64 : u32 = a;
+  if ((x_64 != 1u)) {
+    a = 1u;
+  }
+  let x_68 : u32 = b;
+  if ((x_68 != 0u)) {
+    b = 0u;
+  }
+  let x_72 : u32 = c;
+  if ((x_72 != 1u)) {
+    c = 1u;
+  }
+  let x_76 : u32 = d;
+  if ((x_76 != 0u)) {
+    d = 0u;
+  }
+  let x_80 : u32 = e;
+  if ((x_80 != 1u)) {
+    e = 1u;
+  }
+  let x_84 : u32 = f;
+  if ((x_84 != 0u)) {
+    f = 0u;
+  }
+  let x_88 : u32 = a;
+  let x_90 : u32 = b;
+  let x_93 : u32 = c;
+  let x_96 : u32 = d;
+  let x_99 : u32 = e;
+  let x_102 : u32 = f;
+  if (((((((x_88 == 1u) && (x_90 == 0u)) && (x_93 == 1u)) && (x_96 == 0u)) && (x_99 == 1u)) && (x_102 == 0u))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..44f7ed6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.hlsl
@@ -0,0 +1,83 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  uint b = 0u;
+  uint c = 0u;
+  uint d = 0u;
+  uint e = 0u;
+  uint f = 0u;
+  const uint x_41 = x_6[0].x;
+  a = ((77u + x_41) >> 32u);
+  const uint x_45 = x_6[0].x;
+  b = ((3243u + x_45) >> 33u);
+  const uint x_49 = x_6[0].x;
+  c = ((23u + x_49) >> 345u);
+  const uint x_53 = x_6[0].x;
+  d = ((2395u + x_53) << 32u);
+  const uint x_57 = x_6[0].x;
+  e = ((290485u + x_57) << 33u);
+  const uint x_61 = x_6[0].x;
+  f = ((44321u + x_61) << 345u);
+  if ((a != 1u)) {
+    a = 1u;
+  }
+  if ((b != 0u)) {
+    b = 0u;
+  }
+  if ((c != 1u)) {
+    c = 1u;
+  }
+  if ((d != 0u)) {
+    d = 0u;
+  }
+  if ((e != 1u)) {
+    e = 1u;
+  }
+  if ((f != 0u)) {
+    f = 0u;
+  }
+  bool tint_tmp_4 = (a == 1u);
+  if (tint_tmp_4) {
+    tint_tmp_4 = (b == 0u);
+  }
+  bool tint_tmp_3 = (tint_tmp_4);
+  if (tint_tmp_3) {
+    tint_tmp_3 = (c == 1u);
+  }
+  bool tint_tmp_2 = (tint_tmp_3);
+  if (tint_tmp_2) {
+    tint_tmp_2 = (d == 0u);
+  }
+  bool tint_tmp_1 = (tint_tmp_2);
+  if (tint_tmp_1) {
+    tint_tmp_1 = (e == 1u);
+  }
+  bool tint_tmp = (tint_tmp_1);
+  if (tint_tmp) {
+    tint_tmp = (f == 0u);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.msl
new file mode 100644
index 0000000..5d8fa54
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ uint one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  uint b = 0u;
+  uint c = 0u;
+  uint d = 0u;
+  uint e = 0u;
+  uint f = 0u;
+  uint const x_41 = x_6.one;
+  a = ((77u + x_41) >> 32u);
+  uint const x_45 = x_6.one;
+  b = ((3243u + x_45) >> 33u);
+  uint const x_49 = x_6.one;
+  c = ((23u + x_49) >> 345u);
+  uint const x_53 = x_6.one;
+  d = ((2395u + x_53) << 32u);
+  uint const x_57 = x_6.one;
+  e = ((290485u + x_57) << 33u);
+  uint const x_61 = x_6.one;
+  f = ((44321u + x_61) << 345u);
+  uint const x_64 = a;
+  if ((x_64 != 1u)) {
+    a = 1u;
+  }
+  uint const x_68 = b;
+  if ((x_68 != 0u)) {
+    b = 0u;
+  }
+  uint const x_72 = c;
+  if ((x_72 != 1u)) {
+    c = 1u;
+  }
+  uint const x_76 = d;
+  if ((x_76 != 0u)) {
+    d = 0u;
+  }
+  uint const x_80 = e;
+  if ((x_80 != 1u)) {
+    e = 1u;
+  }
+  uint const x_84 = f;
+  if ((x_84 != 0u)) {
+    f = 0u;
+  }
+  uint const x_88 = a;
+  uint const x_90 = b;
+  uint const x_93 = c;
+  uint const x_96 = d;
+  uint const x_99 = e;
+  uint const x_102 = f;
+  if (((((((x_88 == 1u) && (x_90 == 0u)) && (x_93 == 1u)) && (x_96 == 0u)) && (x_99 == 1u)) && (x_102 == 0u))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..8468b806
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.spvasm
@@ -0,0 +1,221 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %e "e"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+       %buf0 = OpTypeStruct %uint
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %18 = OpConstantNull %uint
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+    %uint_77 = OpConstant %uint 77
+    %uint_32 = OpConstant %uint 32
+  %uint_3243 = OpConstant %uint 3243
+    %uint_33 = OpConstant %uint 33
+    %uint_23 = OpConstant %uint 23
+   %uint_345 = OpConstant %uint 345
+  %uint_2395 = OpConstant %uint 2395
+%uint_290485 = OpConstant %uint 290485
+ %uint_44321 = OpConstant %uint 44321
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %117 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %118 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %18
+          %b = OpVariable %_ptr_Function_uint Function %18
+          %c = OpVariable %_ptr_Function_uint Function %18
+          %d = OpVariable %_ptr_Function_uint Function %18
+          %e = OpVariable %_ptr_Function_uint Function %18
+          %f = OpVariable %_ptr_Function_uint Function %18
+         %26 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %27 = OpLoad %uint %26
+         %29 = OpIAdd %uint %uint_77 %27
+         %31 = OpShiftRightLogical %uint %29 %uint_32
+               OpStore %a %31
+         %32 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %33 = OpLoad %uint %32
+         %35 = OpIAdd %uint %uint_3243 %33
+         %37 = OpShiftRightLogical %uint %35 %uint_33
+               OpStore %b %37
+         %38 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %39 = OpLoad %uint %38
+         %41 = OpIAdd %uint %uint_23 %39
+         %43 = OpShiftRightLogical %uint %41 %uint_345
+               OpStore %c %43
+         %44 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %45 = OpLoad %uint %44
+         %47 = OpIAdd %uint %uint_2395 %45
+         %48 = OpShiftLeftLogical %uint %47 %uint_32
+               OpStore %d %48
+         %49 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %50 = OpLoad %uint %49
+         %52 = OpIAdd %uint %uint_290485 %50
+         %53 = OpShiftLeftLogical %uint %52 %uint_33
+               OpStore %e %53
+         %54 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %55 = OpLoad %uint %54
+         %57 = OpIAdd %uint %uint_44321 %55
+         %58 = OpShiftLeftLogical %uint %57 %uint_345
+               OpStore %f %58
+         %59 = OpLoad %uint %a
+         %61 = OpINotEqual %bool %59 %uint_1
+               OpSelectionMerge %63 None
+               OpBranchConditional %61 %64 %63
+         %64 = OpLabel
+               OpStore %a %uint_1
+               OpBranch %63
+         %63 = OpLabel
+         %65 = OpLoad %uint %b
+         %66 = OpINotEqual %bool %65 %uint_0
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+               OpStore %b %uint_0
+               OpBranch %67
+         %67 = OpLabel
+         %69 = OpLoad %uint %c
+         %70 = OpINotEqual %bool %69 %uint_1
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+               OpStore %c %uint_1
+               OpBranch %71
+         %71 = OpLabel
+         %73 = OpLoad %uint %d
+         %74 = OpINotEqual %bool %73 %uint_0
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+               OpStore %d %uint_0
+               OpBranch %75
+         %75 = OpLabel
+         %77 = OpLoad %uint %e
+         %78 = OpINotEqual %bool %77 %uint_1
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpStore %e %uint_1
+               OpBranch %79
+         %79 = OpLabel
+         %81 = OpLoad %uint %f
+         %82 = OpINotEqual %bool %81 %uint_0
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+               OpStore %f %uint_0
+               OpBranch %83
+         %83 = OpLabel
+         %85 = OpLoad %uint %a
+         %86 = OpLoad %uint %b
+         %87 = OpLoad %uint %c
+         %88 = OpLoad %uint %d
+         %89 = OpLoad %uint %e
+         %90 = OpLoad %uint %f
+         %91 = OpIEqual %bool %85 %uint_1
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %92
+         %93 = OpLabel
+         %94 = OpIEqual %bool %86 %uint_0
+               OpBranch %92
+         %92 = OpLabel
+         %95 = OpPhi %bool %91 %83 %94 %93
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+         %98 = OpIEqual %bool %87 %uint_1
+               OpBranch %96
+         %96 = OpLabel
+         %99 = OpPhi %bool %95 %92 %98 %97
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %100
+        %101 = OpLabel
+        %102 = OpIEqual %bool %88 %uint_0
+               OpBranch %100
+        %100 = OpLabel
+        %103 = OpPhi %bool %99 %96 %102 %101
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+        %106 = OpIEqual %bool %89 %uint_1
+               OpBranch %104
+        %104 = OpLabel
+        %107 = OpPhi %bool %103 %100 %106 %105
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %108
+        %109 = OpLabel
+        %110 = OpIEqual %bool %90 %uint_0
+               OpBranch %108
+        %108 = OpLabel
+        %111 = OpPhi %bool %107 %104 %110 %109
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %114
+        %113 = OpLabel
+               OpStore %x_GLF_color %117
+               OpBranch %112
+        %114 = OpLabel
+               OpStore %x_GLF_color %118
+               OpBranch %112
+        %112 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..ec6d634
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl.expected.wgsl
@@ -0,0 +1,76 @@
+[[block]]
+struct buf0 {
+  one : u32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var b : u32;
+  var c : u32;
+  var d : u32;
+  var e : u32;
+  var f : u32;
+  let x_41 : u32 = x_6.one;
+  a = ((77u + x_41) >> 32u);
+  let x_45 : u32 = x_6.one;
+  b = ((3243u + x_45) >> 33u);
+  let x_49 : u32 = x_6.one;
+  c = ((23u + x_49) >> 345u);
+  let x_53 : u32 = x_6.one;
+  d = ((2395u + x_53) << 32u);
+  let x_57 : u32 = x_6.one;
+  e = ((290485u + x_57) << 33u);
+  let x_61 : u32 = x_6.one;
+  f = ((44321u + x_61) << 345u);
+  let x_64 : u32 = a;
+  if ((x_64 != 1u)) {
+    a = 1u;
+  }
+  let x_68 : u32 = b;
+  if ((x_68 != 0u)) {
+    b = 0u;
+  }
+  let x_72 : u32 = c;
+  if ((x_72 != 1u)) {
+    c = 1u;
+  }
+  let x_76 : u32 = d;
+  if ((x_76 != 0u)) {
+    d = 0u;
+  }
+  let x_80 : u32 = e;
+  if ((x_80 != 1u)) {
+    e = 1u;
+  }
+  let x_84 : u32 = f;
+  if ((x_84 != 0u)) {
+    f = 0u;
+  }
+  let x_88 : u32 = a;
+  let x_90 : u32 = b;
+  let x_93 : u32 = c;
+  let x_96 : u32 = d;
+  let x_99 : u32 = e;
+  let x_102 : u32 = f;
+  if (((((((x_88 == 1u) && (x_90 == 0u)) && (x_93 == 1u)) && (x_96 == 0u)) && (x_99 == 1u)) && (x_102 == 0u))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm
new file mode 100644
index 0000000..6e903ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm
@@ -0,0 +1,47 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %5 RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %8
+         %22 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %i %int_5
+          %5 = OpLoad %int %i
+          %6 = OpShiftRightArithmetic %int %5 %int_1
+         %23 = OpINotEqual %bool %6 %int_2
+               OpSelectionMerge %24 None
+               OpBranchConditional %23 %25 %26
+         %25 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %24
+         %26 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %24
+         %24 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..cc5e352
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  i = 5;
+  if (((i >> asuint(1)) != 2)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.msl
new file mode 100644
index 0000000..c314545
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  i = 5;
+  int const x_5 = i;
+  if (((x_5 >> as_type<uint>(1)) != 2)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..9f2db98
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.spvasm
@@ -0,0 +1,77 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_5 = OpConstant %int 5
+       %uint = OpTypeInt 32 0
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+               OpStore %i %int_5
+         %17 = OpLoad %int %i
+         %18 = OpBitcast %uint %int_1
+         %21 = OpShiftRightArithmetic %int %17 %18
+         %23 = OpINotEqual %bool %21 %int_2
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpStore %x_GLF_color %29
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..f04d8e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.spvasm.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 5;
+  let x_5 : i32 = i;
+  if (((x_5 >> bitcast<u32>(1)) != 2)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
new file mode 100644
index 0000000..f04d8e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 5;
+  let x_5 : i32 = i;
+  if (((x_5 >> bitcast<u32>(1)) != 2)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..cc5e352
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  i = 5;
+  if (((i >> asuint(1)) != 2)) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.msl
new file mode 100644
index 0000000..c314545
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  i = 5;
+  int const x_5 = i;
+  if (((x_5 >> as_type<uint>(1)) != 2)) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..9f2db98
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.spvasm
@@ -0,0 +1,77 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_5 = OpConstant %int 5
+       %uint = OpTypeInt 32 0
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+               OpStore %i %int_5
+         %17 = OpLoad %int %i
+         %18 = OpBitcast %uint %int_1
+         %21 = OpShiftRightArithmetic %int %17 %18
+         %23 = OpINotEqual %bool %21 %int_2
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpStore %x_GLF_color %29
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %x_GLF_color %31
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..f04d8e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 5;
+  let x_5 : i32 = i;
+  if (((x_5 >> bitcast<u32>(1)) != 2)) {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm
new file mode 100644
index 0000000..8a5c45c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm
@@ -0,0 +1,44 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %a RelaxedPrecision
+               OpDecorate %5 RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+     %uint_4 = OpConstant %uint 4
+     %uint_2 = OpConstant %uint 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %20 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+               OpStore %a %uint_4
+          %5 = OpLoad %uint %a
+          %6 = OpUDiv %uint %5 %uint_2
+               OpSelectionMerge %21 None
+               OpSwitch %6 %22 2 %23
+         %22 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %21
+         %23 = OpLabel
+               OpStore %_GLF_color %18
+               OpBranch %21
+         %21 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..2b46425
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  a = 4u;
+  switch((a / 2u)) {
+    case 2u: {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+    default: {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.msl
new file mode 100644
index 0000000..a8ec9c9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  a = 4u;
+  uint const x_5 = a;
+  switch((x_5 / 2u)) {
+    case 2u: {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+    default: {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..541bbd0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %15 = OpConstantNull %uint
+     %uint_4 = OpConstant %uint 4
+     %uint_2 = OpConstant %uint 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %27 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %15
+               OpStore %a %uint_4
+         %17 = OpLoad %uint %a
+         %20 = OpUDiv %uint %17 %uint_2
+               OpSelectionMerge %18 None
+               OpSwitch %20 %21 2 %22
+         %22 = OpLabel
+               OpStore %x_GLF_color %25
+               OpBranch %18
+         %21 = OpLabel
+               OpStore %x_GLF_color %26
+               OpBranch %18
+         %18 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %27
+%tint_symbol = OpFunctionParameter %main_out
+         %31 = OpLabel
+         %32 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %main_1
+         %37 = OpLoad %v4float %x_GLF_color
+         %38 = OpCompositeConstruct %main_out %37
+         %36 = OpFunctionCall %void %tint_symbol_2 %38
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..be6fc47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.spvasm.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  a = 4u;
+  let x_5 : u32 = a;
+  switch((x_5 / 2u)) {
+    case 2u: {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+    default: {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
new file mode 100644
index 0000000..be6fc47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
@@ -0,0 +1,27 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  a = 4u;
+  let x_5 : u32 = a;
+  switch((x_5 / 2u)) {
+    case 2u: {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+    default: {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..2b46425
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  a = 4u;
+  switch((a / 2u)) {
+    case 2u: {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+    default: {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.msl
new file mode 100644
index 0000000..a8ec9c9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  a = 4u;
+  uint const x_5 = a;
+  switch((x_5 / 2u)) {
+    case 2u: {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+    default: {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..541bbd0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %15 = OpConstantNull %uint
+     %uint_4 = OpConstant %uint 4
+     %uint_2 = OpConstant %uint 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %27 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %15
+               OpStore %a %uint_4
+         %17 = OpLoad %uint %a
+         %20 = OpUDiv %uint %17 %uint_2
+               OpSelectionMerge %18 None
+               OpSwitch %20 %21 2 %22
+         %22 = OpLabel
+               OpStore %x_GLF_color %25
+               OpBranch %18
+         %21 = OpLabel
+               OpStore %x_GLF_color %26
+               OpBranch %18
+         %18 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %27
+%tint_symbol = OpFunctionParameter %main_out
+         %31 = OpLabel
+         %32 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %main_1
+         %37 = OpLoad %v4float %x_GLF_color
+         %38 = OpCompositeConstruct %main_out %37
+         %36 = OpFunctionCall %void %tint_symbol_2 %38
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..be6fc47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  a = 4u;
+  let x_5 : u32 = a;
+  switch((x_5 / 2u)) {
+    case 2u: {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+    default: {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm
new file mode 100644
index 0000000..ca6478b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm
@@ -0,0 +1,75 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_10 = OpConstant %float 10
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %24 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %25 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+               OpStore %f %float_1
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %31 = OpLoad %float %30
+         %32 = OpLoad %float %f
+         %33 = OpFAdd %float %32 %31
+               OpStore %f %33
+               OpBranch %28
+         %28 = OpLabel
+         %34 = OpLoad %float %f
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %36 = OpLoad %float %35
+         %37 = OpFAdd %float %float_9 %36
+         %38 = OpExtInst %float %1 FClamp %34 %float_8 %37
+         %39 = OpFOrdGreaterThan %bool %float_10 %38
+               OpBranchConditional %39 %26 %27
+         %27 = OpLabel
+         %40 = OpLoad %float %f
+         %41 = OpFOrdEqual %bool %40 %float_10
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2553d12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,41 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  f = 1.0f;
+  while (true) {
+    const float x_31 = asfloat(x_6[0].x);
+    f = (f + x_31);
+    {
+      const float x_34 = f;
+      const float x_36 = asfloat(x_6[0].x);
+      if ((10.0f > clamp(x_34, 8.0f, (9.0f + x_36)))) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((f == 10.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bc7a9d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  f = 1.0f;
+  while (true) {
+    float const x_31 = x_6.one;
+    float const x_32 = f;
+    f = (x_32 + x_31);
+    {
+      float const x_34 = f;
+      float const x_36 = x_6.one;
+      if ((10.0f > clamp(x_34, 8.0f, (9.0f + x_36)))) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_40 = f;
+  if ((x_40 == 10.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9b5b3ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,120 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+         %35 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_10 = OpConstant %float 10
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %50 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %51 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+               OpStore %f %float_1
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %26 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %27 = OpLoad %float %26
+         %28 = OpLoad %float %f
+         %29 = OpFAdd %float %28 %27
+               OpStore %f %29
+               OpBranch %21
+         %21 = OpLabel
+         %30 = OpLoad %float %f
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %32 = OpLoad %float %31
+         %38 = OpFAdd %float %float_9 %32
+         %34 = OpExtInst %float %35 NClamp %30 %float_8 %38
+         %39 = OpFOrdGreaterThan %bool %float_10 %34
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %20
+         %41 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+         %44 = OpLoad %float %f
+         %45 = OpFOrdEqual %bool %44 %float_10
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %x_GLF_color %50
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %52
+%tint_symbol = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %59 = OpLabel
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 21[%21] is not post dominated by the back-edge block 41[%41]
+  %41 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8478100
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,45 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  f = 1.0;
+  loop {
+    let x_31 : f32 = x_6.one;
+    let x_32 : f32 = f;
+    f = (x_32 + x_31);
+
+    continuing {
+      let x_34 : f32 = f;
+      let x_36 : f32 = x_6.one;
+      if ((10.0 > clamp(x_34, 8.0, (9.0 + x_36)))) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_40 : f32 = f;
+  if ((x_40 == 10.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
new file mode 100644
index 0000000..8478100
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
@@ -0,0 +1,45 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  f = 1.0;
+  loop {
+    let x_31 : f32 = x_6.one;
+    let x_32 : f32 = f;
+    f = (x_32 + x_31);
+
+    continuing {
+      let x_34 : f32 = f;
+      let x_36 : f32 = x_6.one;
+      if ((10.0 > clamp(x_34, 8.0, (9.0 + x_36)))) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_40 : f32 = f;
+  if ((x_40 == 10.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2553d12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,41 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  f = 1.0f;
+  while (true) {
+    const float x_31 = asfloat(x_6[0].x);
+    f = (f + x_31);
+    {
+      const float x_34 = f;
+      const float x_36 = asfloat(x_6[0].x);
+      if ((10.0f > clamp(x_34, 8.0f, (9.0f + x_36)))) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((f == 10.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..bc7a9d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  f = 1.0f;
+  while (true) {
+    float const x_31 = x_6.one;
+    float const x_32 = f;
+    f = (x_32 + x_31);
+    {
+      float const x_34 = f;
+      float const x_36 = x_6.one;
+      if ((10.0f > clamp(x_34, 8.0f, (9.0f + x_36)))) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_40 = f;
+  if ((x_40 == 10.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9b5b3ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,120 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+         %35 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_10 = OpConstant %float 10
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %50 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %51 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+               OpStore %f %float_1
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %26 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %27 = OpLoad %float %26
+         %28 = OpLoad %float %f
+         %29 = OpFAdd %float %28 %27
+               OpStore %f %29
+               OpBranch %21
+         %21 = OpLabel
+         %30 = OpLoad %float %f
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %32 = OpLoad %float %31
+         %38 = OpFAdd %float %float_9 %32
+         %34 = OpExtInst %float %35 NClamp %30 %float_8 %38
+         %39 = OpFOrdGreaterThan %bool %float_10 %34
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %20
+         %41 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+         %44 = OpLoad %float %f
+         %45 = OpFOrdEqual %bool %44 %float_10
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %x_GLF_color %50
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %52
+%tint_symbol = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %59 = OpLabel
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 21[%21] is not post dominated by the back-edge block 41[%41]
+  %41 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8478100
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,45 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  f = 1.0;
+  loop {
+    let x_31 : f32 = x_6.one;
+    let x_32 : f32 = f;
+    f = (x_32 + x_31);
+
+    continuing {
+      let x_34 : f32 = f;
+      let x_36 : f32 = x_6.one;
+      if ((10.0 > clamp(x_34, 8.0, (9.0 + x_36)))) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_40 : f32 = f;
+  if ((x_40 == 10.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm
new file mode 100644
index 0000000..90e1cbb5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm
@@ -0,0 +1,53 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %20 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %22 = OpLabel
+         %23 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %24 = OpLoad %int %23
+         %25 = OpISub %int %int_3 %24
+         %26 = OpIAdd %int %int_1 %25
+         %27 = OpIEqual %bool %26 %int_3
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %30
+         %29 = OpLabel
+               OpStore %_GLF_color %20
+               OpBranch %28
+         %30 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %28
+         %28 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..047beed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_24 = asint(x_5[0].x);
+  if (((1 + (3 - x_24)) == 3)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b73cd87
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_24 = x_5.one;
+  if (((1 + (3 - x_24)) == 3)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4b46ac2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,85 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %34 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %23 = OpISub %int %int_3 %20
+         %24 = OpIAdd %int %int_1 %23
+         %25 = OpIEqual %bool %24 %int_3
+               OpSelectionMerge %27 None
+               OpBranchConditional %25 %28 %29
+         %28 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %27
+         %29 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol = OpFunctionParameter %main_out
+         %38 = OpLabel
+         %39 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %39
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ed61556
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_24 : i32 = x_5.one;
+  if (((1 + (3 - x_24)) == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
new file mode 100644
index 0000000..ed61556
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_24 : i32 = x_5.one;
+  if (((1 + (3 - x_24)) == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..047beed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_24 = asint(x_5[0].x);
+  if (((1 + (3 - x_24)) == 3)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b73cd87
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_24 = x_5.one;
+  if (((1 + (3 - x_24)) == 3)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4b46ac2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,85 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %34 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %23 = OpISub %int %int_3 %20
+         %24 = OpIAdd %int %int_1 %23
+         %25 = OpIEqual %bool %24 %int_3
+               OpSelectionMerge %27 None
+               OpBranchConditional %25 %28 %29
+         %28 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %27
+         %29 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol = OpFunctionParameter %main_out
+         %38 = OpLabel
+         %39 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %39
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ed61556
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_24 : i32 = x_5.one;
+  if (((1 + (3 - x_24)) == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm
new file mode 100644
index 0000000..bf8546c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm
@@ -0,0 +1,80 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "twoandthree"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+         %21 = OpConstantComposite %v2float %float_1 %float_1
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_2 = OpConstant %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %30 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function
+          %b = OpVariable %_ptr_Function_v2float Function
+         %31 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %32 = OpLoad %v2float %31
+               OpStore %a %32
+         %33 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %34 = OpLoad %float %33
+         %35 = OpLoad %v2float %a
+         %36 = OpExtInst %v2float %1 FClamp %35 %21 %21
+         %37 = OpCompositeExtract %float %36 1
+         %38 = OpCompositeConstruct %v2float %34 %37
+               OpStore %b %38
+         %39 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdEqual %bool %40 %float_2
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %44 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %45 = OpLoad %float %44
+         %46 = OpFOrdEqual %bool %45 %float_1
+               OpBranch %42
+         %42 = OpLabel
+         %47 = OpPhi %bool %41 %30 %46 %43
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %48
+         %50 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %48
+         %48 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3e0c589
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 a = float2(0.0f, 0.0f);
+  float2 b = float2(0.0f, 0.0f);
+  bool x_46 = false;
+  bool x_47_phi = false;
+  const float2 x_32 = asfloat(x_6[0].xy);
+  a = x_32;
+  const float x_34 = a.x;
+  b = float2(x_34, clamp(a, float2(1.0f, 1.0f), float2(1.0f, 1.0f)).y);
+  const float x_40 = b.x;
+  const bool x_41 = (x_40 == 2.0f);
+  x_47_phi = x_41;
+  if (x_41) {
+    const float x_45 = b.y;
+    x_46 = (x_45 == 1.0f);
+    x_47_phi = x_46;
+  }
+  if (x_47_phi) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4aa4b0c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 twoandthree;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 a = 0.0f;
+  float2 b = 0.0f;
+  bool x_46 = false;
+  bool x_47_phi = false;
+  float2 const x_32 = x_6.twoandthree;
+  a = x_32;
+  float const x_34 = a.x;
+  float2 const x_35 = a;
+  b = float2(x_34, clamp(x_35, float2(1.0f, 1.0f), float2(1.0f, 1.0f)).y);
+  float const x_40 = b.x;
+  bool const x_41 = (x_40 == 2.0f);
+  x_47_phi = x_41;
+  if (x_41) {
+    float const x_45 = b.y;
+    x_46 = (x_45 == 1.0f);
+    x_47_phi = x_46;
+  }
+  bool const x_47 = x_47_phi;
+  if (x_47) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e0f212a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,121 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 70
+; Schema: 0
+               OpCapability Shader
+         %35 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "twoandthree"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_46 "x_46"
+               OpName %x_47_phi "x_47_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %23 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+         %37 = OpConstantComposite %v2float %float_1 %float_1
+    %float_2 = OpConstant %float 2
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %57 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function %18
+          %b = OpVariable %_ptr_Function_v2float Function %18
+       %x_46 = OpVariable %_ptr_Function_bool Function %23
+   %x_47_phi = OpVariable %_ptr_Function_bool Function %23
+         %28 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %29 = OpLoad %v2float %28
+               OpStore %a %29
+         %31 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpLoad %v2float %a
+         %34 = OpExtInst %v2float %35 NClamp %33 %37 %37
+         %38 = OpCompositeExtract %float %34 1
+         %39 = OpCompositeConstruct %v2float %32 %38
+               OpStore %b %39
+         %40 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %41 = OpLoad %float %40
+         %43 = OpFOrdEqual %bool %41 %float_2
+               OpStore %x_47_phi %43
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %48 = OpLoad %float %47
+         %49 = OpFOrdEqual %bool %48 %float_1
+               OpStore %x_46 %49
+         %50 = OpLoad %bool %x_46
+               OpStore %x_47_phi %50
+               OpBranch %44
+         %44 = OpLabel
+         %51 = OpLoad %bool %x_47_phi
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %52
+         %54 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %58
+%tint_symbol = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %65 = OpLabel
+         %66 = OpFunctionCall %void %main_1
+         %68 = OpLoad %v4float %x_GLF_color
+         %69 = OpCompositeConstruct %main_out %68
+         %67 = OpFunctionCall %void %tint_symbol_2 %69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..dc6b0c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  twoandthree : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec2<f32>;
+  var x_46 : bool;
+  var x_47_phi : bool;
+  let x_32 : vec2<f32> = x_6.twoandthree;
+  a = x_32;
+  let x_34 : f32 = a.x;
+  let x_35 : vec2<f32> = a;
+  b = vec2<f32>(x_34, clamp(x_35, vec2<f32>(1.0, 1.0), vec2<f32>(1.0, 1.0)).y);
+  let x_40 : f32 = b.x;
+  let x_41 : bool = (x_40 == 2.0);
+  x_47_phi = x_41;
+  if (x_41) {
+    let x_45 : f32 = b.y;
+    x_46 = (x_45 == 1.0);
+    x_47_phi = x_46;
+  }
+  let x_47 : bool = x_47_phi;
+  if (x_47) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
new file mode 100644
index 0000000..dc6b0c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  twoandthree : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec2<f32>;
+  var x_46 : bool;
+  var x_47_phi : bool;
+  let x_32 : vec2<f32> = x_6.twoandthree;
+  a = x_32;
+  let x_34 : f32 = a.x;
+  let x_35 : vec2<f32> = a;
+  b = vec2<f32>(x_34, clamp(x_35, vec2<f32>(1.0, 1.0), vec2<f32>(1.0, 1.0)).y);
+  let x_40 : f32 = b.x;
+  let x_41 : bool = (x_40 == 2.0);
+  x_47_phi = x_41;
+  if (x_41) {
+    let x_45 : f32 = b.y;
+    x_46 = (x_45 == 1.0);
+    x_47_phi = x_46;
+  }
+  let x_47 : bool = x_47_phi;
+  if (x_47) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3e0c589
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,43 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 a = float2(0.0f, 0.0f);
+  float2 b = float2(0.0f, 0.0f);
+  bool x_46 = false;
+  bool x_47_phi = false;
+  const float2 x_32 = asfloat(x_6[0].xy);
+  a = x_32;
+  const float x_34 = a.x;
+  b = float2(x_34, clamp(a, float2(1.0f, 1.0f), float2(1.0f, 1.0f)).y);
+  const float x_40 = b.x;
+  const bool x_41 = (x_40 == 2.0f);
+  x_47_phi = x_41;
+  if (x_41) {
+    const float x_45 = b.y;
+    x_46 = (x_45 == 1.0f);
+    x_47_phi = x_46;
+  }
+  if (x_47_phi) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4aa4b0c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 twoandthree;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 a = 0.0f;
+  float2 b = 0.0f;
+  bool x_46 = false;
+  bool x_47_phi = false;
+  float2 const x_32 = x_6.twoandthree;
+  a = x_32;
+  float const x_34 = a.x;
+  float2 const x_35 = a;
+  b = float2(x_34, clamp(x_35, float2(1.0f, 1.0f), float2(1.0f, 1.0f)).y);
+  float const x_40 = b.x;
+  bool const x_41 = (x_40 == 2.0f);
+  x_47_phi = x_41;
+  if (x_41) {
+    float const x_45 = b.y;
+    x_46 = (x_45 == 1.0f);
+    x_47_phi = x_46;
+  }
+  bool const x_47 = x_47_phi;
+  if (x_47) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e0f212a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,121 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 70
+; Schema: 0
+               OpCapability Shader
+         %35 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "twoandthree"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_46 "x_46"
+               OpName %x_47_phi "x_47_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %23 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+         %37 = OpConstantComposite %v2float %float_1 %float_1
+    %float_2 = OpConstant %float 2
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %57 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function %18
+          %b = OpVariable %_ptr_Function_v2float Function %18
+       %x_46 = OpVariable %_ptr_Function_bool Function %23
+   %x_47_phi = OpVariable %_ptr_Function_bool Function %23
+         %28 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %29 = OpLoad %v2float %28
+               OpStore %a %29
+         %31 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpLoad %v2float %a
+         %34 = OpExtInst %v2float %35 NClamp %33 %37 %37
+         %38 = OpCompositeExtract %float %34 1
+         %39 = OpCompositeConstruct %v2float %32 %38
+               OpStore %b %39
+         %40 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %41 = OpLoad %float %40
+         %43 = OpFOrdEqual %bool %41 %float_2
+               OpStore %x_47_phi %43
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %48 = OpLoad %float %47
+         %49 = OpFOrdEqual %bool %48 %float_1
+               OpStore %x_46 %49
+         %50 = OpLoad %bool %x_46
+               OpStore %x_47_phi %50
+               OpBranch %44
+         %44 = OpLabel
+         %51 = OpLoad %bool %x_47_phi
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %52
+         %54 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %58
+%tint_symbol = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %65 = OpLabel
+         %66 = OpFunctionCall %void %main_1
+         %68 = OpLoad %v4float %x_GLF_color
+         %69 = OpCompositeConstruct %main_out %68
+         %67 = OpFunctionCall %void %tint_symbol_2 %69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..dc6b0c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  twoandthree : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec2<f32>;
+  var x_46 : bool;
+  var x_47_phi : bool;
+  let x_32 : vec2<f32> = x_6.twoandthree;
+  a = x_32;
+  let x_34 : f32 = a.x;
+  let x_35 : vec2<f32> = a;
+  b = vec2<f32>(x_34, clamp(x_35, vec2<f32>(1.0, 1.0), vec2<f32>(1.0, 1.0)).y);
+  let x_40 : f32 = b.x;
+  let x_41 : bool = (x_40 == 2.0);
+  x_47_phi = x_41;
+  if (x_41) {
+    let x_45 : f32 = b.y;
+    x_46 = (x_45 == 1.0);
+    x_47_phi = x_46;
+  }
+  let x_47 : bool = x_47_phi;
+  if (x_47) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm
new file mode 100644
index 0000000..65d8735
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm
@@ -0,0 +1,54 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_4 = OpConstant %float 4
+    %v4float = OpTypeVector %float 4
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_0
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %23 = OpLabel
+         %24 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %25 = OpLoad %float %24
+         %26 = OpCompositeConstruct %v4float %float_1 %float_2 %25 %float_4
+         %27 = OpDot %float %26 %18
+         %28 = OpFOrdEqual %bool %27 %float_2
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %31
+         %30 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d3f224d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_25 = asfloat(x_5[0].x);
+  if ((dot(float4(1.0f, 2.0f, x_25, 4.0f), float4(0.0f, 1.0f, 0.0f, 0.0f)) == 2.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8639723
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_25 = x_5.three;
+  if ((dot(float4(1.0f, 2.0f, x_25, 4.0f), float4(0.0f, 1.0f, 0.0f, 0.0f)) == 2.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d9bb8a7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,85 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_4 = OpConstant %float 4
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_0
+       %bool = OpTypeBool
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %34 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %19 = OpLoad %float %18
+         %24 = OpCompositeConstruct %v4float %float_1 %float_2 %19 %float_4
+         %20 = OpDot %float %24 %26
+         %27 = OpFOrdEqual %bool %20 %float_2
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol = OpFunctionParameter %main_out
+         %38 = OpLabel
+         %39 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %39
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..da33dc4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : f32 = x_5.three;
+  if ((dot(vec4<f32>(1.0, 2.0, x_25, 4.0), vec4<f32>(0.0, 1.0, 0.0, 0.0)) == 2.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
new file mode 100644
index 0000000..da33dc4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : f32 = x_5.three;
+  if ((dot(vec4<f32>(1.0, 2.0, x_25, 4.0), vec4<f32>(0.0, 1.0, 0.0, 0.0)) == 2.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d3f224d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_25 = asfloat(x_5[0].x);
+  if ((dot(float4(1.0f, 2.0f, x_25, 4.0f), float4(0.0f, 1.0f, 0.0f, 0.0f)) == 2.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8639723
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_25 = x_5.three;
+  if ((dot(float4(1.0f, 2.0f, x_25, 4.0f), float4(0.0f, 1.0f, 0.0f, 0.0f)) == 2.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d9bb8a7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,85 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_4 = OpConstant %float 4
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_0
+       %bool = OpTypeBool
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %34 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %19 = OpLoad %float %18
+         %24 = OpCompositeConstruct %v4float %float_1 %float_2 %19 %float_4
+         %20 = OpDot %float %24 %26
+         %27 = OpFOrdEqual %bool %20 %float_2
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol = OpFunctionParameter %main_out
+         %38 = OpLabel
+         %39 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %39
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..da33dc4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : f32 = x_5.three;
+  if ((dot(vec4<f32>(1.0, 2.0, x_25, 4.0), vec4<f32>(0.0, 1.0, 0.0, 0.0)) == 2.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm
new file mode 100644
index 0000000..eb91750
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm
@@ -0,0 +1,55 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %float_2 = OpConstant %float 2
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v2float = OpTypeVector %float 2
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %v2float %float_0 %float_2
+    %float_6 = OpConstant %float 6
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %24 = OpLabel
+         %25 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %26 = OpLoad %float %25
+         %27 = OpCompositeConstruct %v2float %float_2 %26
+         %28 = OpDot %float %27 %16
+         %29 = OpFOrdEqual %bool %28 %float_6
+               OpSelectionMerge %30 None
+               OpBranchConditional %29 %31 %32
+         %31 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %30
+         %32 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %30
+         %30 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..43f1990
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_26 = asfloat(x_5[0].x);
+  if ((dot(float2(2.0f, x_26), float2(0.0f, 2.0f)) == 6.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.msl
new file mode 100644
index 0000000..5f40f93
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_26 = x_5.three;
+  if ((dot(float2(2.0f, x_26), float2(0.0f, 2.0f)) == 6.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..61c450f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.spvasm
@@ -0,0 +1,86 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 47
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v2float = OpTypeVector %float 2
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v2float %float_0 %float_2
+    %float_6 = OpConstant %float 6
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %35 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %19 = OpLoad %float %18
+         %23 = OpCompositeConstruct %v2float %float_2 %19
+         %20 = OpDot %float %23 %25
+         %27 = OpFOrdEqual %bool %20 %float_6
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %35
+%tint_symbol = OpFunctionParameter %main_out
+         %39 = OpLabel
+         %40 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %40
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %main_1
+         %45 = OpLoad %v4float %x_GLF_color
+         %46 = OpCompositeConstruct %main_out %45
+         %44 = OpFunctionCall %void %tint_symbol_2 %46
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..b9c222e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_26 : f32 = x_5.three;
+  if ((dot(vec2<f32>(2.0, x_26), vec2<f32>(0.0, 2.0)) == 6.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
new file mode 100644
index 0000000..b9c222e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_26 : f32 = x_5.three;
+  if ((dot(vec2<f32>(2.0, x_26), vec2<f32>(0.0, 2.0)) == 6.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..43f1990
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_26 = asfloat(x_5[0].x);
+  if ((dot(float2(2.0f, x_26), float2(0.0f, 2.0f)) == 6.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.msl
new file mode 100644
index 0000000..5f40f93
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_26 = x_5.three;
+  if ((dot(float2(2.0f, x_26), float2(0.0f, 2.0f)) == 6.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..61c450f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.spvasm
@@ -0,0 +1,86 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 47
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v2float = OpTypeVector %float 2
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v2float %float_0 %float_2
+    %float_6 = OpConstant %float 6
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %35 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %19 = OpLoad %float %18
+         %23 = OpCompositeConstruct %v2float %float_2 %19
+         %20 = OpDot %float %23 %25
+         %27 = OpFOrdEqual %bool %20 %float_6
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %35
+%tint_symbol = OpFunctionParameter %main_out
+         %39 = OpLabel
+         %40 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %40
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %main_1
+         %45 = OpLoad %v4float %x_GLF_color
+         %46 = OpCompositeConstruct %main_out %45
+         %44 = OpFunctionCall %void %tint_symbol_2 %46
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..b9c222e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_26 : f32 = x_5.three;
+  if ((dot(vec2<f32>(2.0, x_26), vec2<f32>(0.0, 2.0)) == 6.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm
new file mode 100644
index 0000000..f868d4d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm
@@ -0,0 +1,71 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %5 RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_5 = OpConstant %int 5
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %27 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %12
+         %28 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %i %int_5
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+          %5 = OpLoad %int %i
+         %33 = OpSGreaterThanEqual %bool %5 %int_0
+               OpBranchConditional %33 %34 %30
+         %34 = OpLabel
+          %6 = OpLoad %int %i
+          %7 = OpISub %int %6 %int_3
+               OpStore %i %7
+          %8 = OpLoad %int %i
+          %9 = OpIAdd %int %8 %int_1
+               OpStore %i %9
+               OpBranch %31
+         %31 = OpLabel
+               OpBranch %29
+         %30 = OpLabel
+         %10 = OpLoad %int %i
+         %35 = OpIEqual %bool %10 %int_n1
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %36
+         %38 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c8380b4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  i = 5;
+  while (true) {
+    if ((i >= 0)) {
+    } else {
+      break;
+    }
+    i = (i - 3);
+    i = (i + 1);
+  }
+  if ((i == -1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..921f5ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  i = 5;
+  while (true) {
+    int const x_5 = i;
+    if ((x_5 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_6 = i;
+    i = (x_6 - 3);
+    int const x_8 = i;
+    i = (x_8 + 1);
+  }
+  int const x_10 = i;
+  if ((x_10 == -1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..85eee57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,100 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_5 = OpConstant %int 5
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+               OpStore %i %int_5
+               OpBranch %17
+         %17 = OpLabel
+               OpLoopMerge %18 %19 None
+               OpBranch %20
+         %20 = OpLabel
+         %21 = OpLoad %int %i
+         %23 = OpSGreaterThanEqual %bool %21 %int_0
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpBranch %25
+         %27 = OpLabel
+               OpBranch %18
+         %25 = OpLabel
+         %28 = OpLoad %int %i
+         %30 = OpISub %int %28 %int_3
+               OpStore %i %30
+         %31 = OpLoad %int %i
+         %33 = OpIAdd %int %31 %int_1
+               OpStore %i %33
+               OpBranch %19
+         %19 = OpLabel
+               OpBranch %17
+         %18 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpIEqual %bool %34 %int_n1
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7c7b28a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,35 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 5;
+  loop {
+    let x_5 : i32 = i;
+    if ((x_5 >= 0)) {
+    } else {
+      break;
+    }
+    let x_6 : i32 = i;
+    i = (x_6 - 3);
+    let x_8 : i32 = i;
+    i = (x_8 + 1);
+  }
+  let x_10 : i32 = i;
+  if ((x_10 == -1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
new file mode 100644
index 0000000..7c7b28a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
@@ -0,0 +1,35 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 5;
+  loop {
+    let x_5 : i32 = i;
+    if ((x_5 >= 0)) {
+    } else {
+      break;
+    }
+    let x_6 : i32 = i;
+    i = (x_6 - 3);
+    let x_8 : i32 = i;
+    i = (x_8 + 1);
+  }
+  let x_10 : i32 = i;
+  if ((x_10 == -1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c8380b4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  i = 5;
+  while (true) {
+    if ((i >= 0)) {
+    } else {
+      break;
+    }
+    i = (i - 3);
+    i = (i + 1);
+  }
+  if ((i == -1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..921f5ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  i = 5;
+  while (true) {
+    int const x_5 = i;
+    if ((x_5 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_6 = i;
+    i = (x_6 - 3);
+    int const x_8 = i;
+    i = (x_8 + 1);
+  }
+  int const x_10 = i;
+  if ((x_10 == -1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..85eee57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,100 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_5 = OpConstant %int 5
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+               OpStore %i %int_5
+               OpBranch %17
+         %17 = OpLabel
+               OpLoopMerge %18 %19 None
+               OpBranch %20
+         %20 = OpLabel
+         %21 = OpLoad %int %i
+         %23 = OpSGreaterThanEqual %bool %21 %int_0
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %27
+         %26 = OpLabel
+               OpBranch %25
+         %27 = OpLabel
+               OpBranch %18
+         %25 = OpLabel
+         %28 = OpLoad %int %i
+         %30 = OpISub %int %28 %int_3
+               OpStore %i %30
+         %31 = OpLoad %int %i
+         %33 = OpIAdd %int %31 %int_1
+               OpStore %i %33
+               OpBranch %19
+         %19 = OpLabel
+               OpBranch %17
+         %18 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpIEqual %bool %34 %int_n1
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7c7b28a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,35 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  i = 5;
+  loop {
+    let x_5 : i32 = i;
+    if ((x_5 >= 0)) {
+    } else {
+      break;
+    }
+    let x_6 : i32 = i;
+    i = (x_6 - 3);
+    let x_8 : i32 = i;
+    i = (x_8 + 1);
+  }
+  let x_10 : i32 = i;
+  if ((x_10 == -1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm
new file mode 100644
index 0000000..ce10f86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm
@@ -0,0 +1,63 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_4 = OpConstant %float 4
+    %float_2 = OpConstant %float 2
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_1_89999998 = OpConstant %float 1.89999998
+       %bool = OpTypeBool
+%float_2_0999999 = OpConstant %float 2.0999999
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %25 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %26 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %27 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %28 = OpLoad %float %27
+         %29 = OpFMul %float %float_2 %28
+         %30 = OpFDiv %float %float_4 %29
+               OpStore %f %30
+         %31 = OpLoad %float %f
+         %32 = OpFOrdGreaterThan %bool %31 %float_1_89999998
+         %33 = OpLoad %float %f
+         %34 = OpFOrdLessThan %bool %33 %float_2_0999999
+         %35 = OpLogicalAnd %bool %32 %34
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %36
+         %38 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d20ee0a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  const float x_28 = asfloat(x_6[0].x);
+  f = (4.0f / (2.0f * x_28));
+  bool tint_tmp = (f > 1.899999976f);
+  if (tint_tmp) {
+    tint_tmp = (f < 2.099999905f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b807292
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float const x_28 = x_6.one;
+  f = (4.0f / (2.0f * x_28));
+  float const x_31 = f;
+  float const x_33 = f;
+  if (((x_31 > 1.899999976f) && (x_33 < 2.099999905f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..056fe41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,100 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_4 = OpConstant %float 4
+    %float_2 = OpConstant %float 2
+%float_1_89999998 = OpConstant %float 1.89999998
+       %bool = OpTypeBool
+%float_2_0999999 = OpConstant %float 2.0999999
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+         %21 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %22 = OpLoad %float %21
+         %25 = OpFMul %float %float_2 %22
+         %26 = OpFDiv %float %float_4 %25
+               OpStore %f %26
+         %27 = OpLoad %float %f
+         %28 = OpLoad %float %f
+         %30 = OpFOrdGreaterThan %bool %27 %float_1_89999998
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpFOrdLessThan %bool %28 %float_2_0999999
+               OpBranch %32
+         %32 = OpLabel
+         %36 = OpPhi %bool %30 %14 %35 %33
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5b77b48
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  let x_28 : f32 = x_6.one;
+  f = (4.0 / (2.0 * x_28));
+  let x_31 : f32 = f;
+  let x_33 : f32 = f;
+  if (((x_31 > 1.899999976) && (x_33 < 2.099999905))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
new file mode 100644
index 0000000..5b77b48
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  let x_28 : f32 = x_6.one;
+  f = (4.0 / (2.0 * x_28));
+  let x_31 : f32 = f;
+  let x_33 : f32 = f;
+  if (((x_31 > 1.899999976) && (x_33 < 2.099999905))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d20ee0a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  const float x_28 = asfloat(x_6[0].x);
+  f = (4.0f / (2.0f * x_28));
+  bool tint_tmp = (f > 1.899999976f);
+  if (tint_tmp) {
+    tint_tmp = (f < 2.099999905f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b807292
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float const x_28 = x_6.one;
+  f = (4.0f / (2.0f * x_28));
+  float const x_31 = f;
+  float const x_33 = f;
+  if (((x_31 > 1.899999976f) && (x_33 < 2.099999905f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..056fe41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,100 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_4 = OpConstant %float 4
+    %float_2 = OpConstant %float 2
+%float_1_89999998 = OpConstant %float 1.89999998
+       %bool = OpTypeBool
+%float_2_0999999 = OpConstant %float 2.0999999
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+         %21 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %22 = OpLoad %float %21
+         %25 = OpFMul %float %float_2 %22
+         %26 = OpFDiv %float %float_4 %25
+               OpStore %f %26
+         %27 = OpLoad %float %f
+         %28 = OpLoad %float %f
+         %30 = OpFOrdGreaterThan %bool %27 %float_1_89999998
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpFOrdLessThan %bool %28 %float_2_0999999
+               OpBranch %32
+         %32 = OpLabel
+         %36 = OpPhi %bool %30 %14 %35 %33
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5b77b48
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  let x_28 : f32 = x_6.one;
+  f = (4.0 / (2.0 * x_28));
+  let x_31 : f32 = f;
+  let x_33 : f32 = f;
+  if (((x_31 > 1.899999976) && (x_33 < 2.099999905))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm
new file mode 100644
index 0000000..d57d2f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm
@@ -0,0 +1,62 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "four"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_2 = OpConstant %float 2
+    %float_1 = OpConstant %float 1
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_7_9000001 = OpConstant %float 7.9000001
+       %bool = OpTypeBool
+%float_8_10000038 = OpConstant %float 8.10000038
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %24 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %25 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+         %26 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %27 = OpLoad %float %26
+         %28 = OpFDiv %float %float_1 %27
+         %29 = OpFDiv %float %float_2 %28
+               OpStore %a %29
+         %30 = OpLoad %float %a
+         %31 = OpFOrdGreaterThan %bool %30 %float_7_9000001
+         %32 = OpLoad %float %a
+         %33 = OpFOrdLessThan %bool %32 %float_8_10000038
+         %34 = OpLogicalAnd %bool %31 %33
+               OpSelectionMerge %35 None
+               OpBranchConditional %34 %36 %37
+         %36 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %35
+         %37 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1b0d83d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  const float x_27 = asfloat(x_6[0].x);
+  a = (2.0f / (1.0f / x_27));
+  bool tint_tmp = (a > 7.900000095f);
+  if (tint_tmp) {
+    tint_tmp = (a < 8.100000381f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..21d1062
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float four;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float const x_27 = x_6.four;
+  a = (2.0f / (1.0f / x_27));
+  float const x_30 = a;
+  float const x_32 = a;
+  if (((x_30 > 7.900000095f) && (x_32 < 8.100000381f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..595ed70
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,99 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "four"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+    %float_1 = OpConstant %float 1
+%float_7_9000001 = OpConstant %float 7.9000001
+       %bool = OpTypeBool
+%float_8_10000038 = OpConstant %float 8.10000038
+    %float_0 = OpConstant %float 0
+         %41 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %43 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %17
+         %21 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %22 = OpLoad %float %21
+         %25 = OpFDiv %float %float_1 %22
+         %26 = OpFDiv %float %float_2 %25
+               OpStore %a %26
+         %27 = OpLoad %float %a
+         %28 = OpLoad %float %a
+         %30 = OpFOrdGreaterThan %bool %27 %float_7_9000001
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpFOrdLessThan %bool %28 %float_8_10000038
+               OpBranch %32
+         %32 = OpLabel
+         %36 = OpPhi %bool %30 %14 %35 %33
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %41
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %43
+%tint_symbol = OpFunctionParameter %main_out
+         %47 = OpLabel
+         %48 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %48
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %main_1
+         %53 = OpLoad %v4float %x_GLF_color
+         %54 = OpCompositeConstruct %main_out %53
+         %52 = OpFunctionCall %void %tint_symbol_2 %54
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8900821
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  four : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  let x_27 : f32 = x_6.four;
+  a = (2.0 / (1.0 / x_27));
+  let x_30 : f32 = a;
+  let x_32 : f32 = a;
+  if (((x_30 > 7.900000095) && (x_32 < 8.100000381))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
new file mode 100644
index 0000000..8900821
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  four : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  let x_27 : f32 = x_6.four;
+  a = (2.0 / (1.0 / x_27));
+  let x_30 : f32 = a;
+  let x_32 : f32 = a;
+  if (((x_30 > 7.900000095) && (x_32 < 8.100000381))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1b0d83d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  const float x_27 = asfloat(x_6[0].x);
+  a = (2.0f / (1.0f / x_27));
+  bool tint_tmp = (a > 7.900000095f);
+  if (tint_tmp) {
+    tint_tmp = (a < 8.100000381f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..21d1062
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float four;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float const x_27 = x_6.four;
+  a = (2.0f / (1.0f / x_27));
+  float const x_30 = a;
+  float const x_32 = a;
+  if (((x_30 > 7.900000095f) && (x_32 < 8.100000381f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..595ed70
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,99 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "four"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+    %float_1 = OpConstant %float 1
+%float_7_9000001 = OpConstant %float 7.9000001
+       %bool = OpTypeBool
+%float_8_10000038 = OpConstant %float 8.10000038
+    %float_0 = OpConstant %float 0
+         %41 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %43 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %17
+         %21 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %22 = OpLoad %float %21
+         %25 = OpFDiv %float %float_1 %22
+         %26 = OpFDiv %float %float_2 %25
+               OpStore %a %26
+         %27 = OpLoad %float %a
+         %28 = OpLoad %float %a
+         %30 = OpFOrdGreaterThan %bool %27 %float_7_9000001
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpFOrdLessThan %bool %28 %float_8_10000038
+               OpBranch %32
+         %32 = OpLabel
+         %36 = OpPhi %bool %30 %14 %35 %33
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %41
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %43
+%tint_symbol = OpFunctionParameter %main_out
+         %47 = OpLabel
+         %48 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %48
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %main_1
+         %53 = OpLoad %v4float %x_GLF_color
+         %54 = OpCompositeConstruct %main_out %53
+         %52 = OpFunctionCall %void %tint_symbol_2 %54
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8900821
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  four : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  let x_27 : f32 = x_6.four;
+  a = (2.0 / (1.0 / x_27));
+  let x_30 : f32 = a;
+  let x_32 : f32 = a;
+  if (((x_30 > 7.900000095) && (x_32 < 8.100000381))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm
new file mode 100644
index 0000000..07d5959
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm
@@ -0,0 +1,63 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_4 = OpConstant %float 4
+    %float_2 = OpConstant %float 2
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_7_9000001 = OpConstant %float 7.9000001
+       %bool = OpTypeBool
+%float_8_10000038 = OpConstant %float 8.10000038
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %25 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %26 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %27 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %28 = OpLoad %float %27
+         %29 = OpFDiv %float %float_2 %28
+         %30 = OpFMul %float %float_4 %29
+               OpStore %f %30
+         %31 = OpLoad %float %f
+         %32 = OpFOrdGreaterThan %bool %31 %float_7_9000001
+         %33 = OpLoad %float %f
+         %34 = OpFOrdLessThan %bool %33 %float_8_10000038
+         %35 = OpLogicalAnd %bool %32 %34
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %36
+         %38 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..33b44f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  const float x_28 = asfloat(x_6[0].x);
+  f = (4.0f * (2.0f / x_28));
+  bool tint_tmp = (f > 7.900000095f);
+  if (tint_tmp) {
+    tint_tmp = (f < 8.100000381f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8ca949d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float const x_28 = x_6.one;
+  f = (4.0f * (2.0f / x_28));
+  float const x_31 = f;
+  float const x_33 = f;
+  if (((x_31 > 7.900000095f) && (x_33 < 8.100000381f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a3e6ce2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,100 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_4 = OpConstant %float 4
+    %float_2 = OpConstant %float 2
+%float_7_9000001 = OpConstant %float 7.9000001
+       %bool = OpTypeBool
+%float_8_10000038 = OpConstant %float 8.10000038
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+         %21 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %22 = OpLoad %float %21
+         %25 = OpFDiv %float %float_2 %22
+         %26 = OpFMul %float %float_4 %25
+               OpStore %f %26
+         %27 = OpLoad %float %f
+         %28 = OpLoad %float %f
+         %30 = OpFOrdGreaterThan %bool %27 %float_7_9000001
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpFOrdLessThan %bool %28 %float_8_10000038
+               OpBranch %32
+         %32 = OpLabel
+         %36 = OpPhi %bool %30 %14 %35 %33
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..fd79096
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  let x_28 : f32 = x_6.one;
+  f = (4.0 * (2.0 / x_28));
+  let x_31 : f32 = f;
+  let x_33 : f32 = f;
+  if (((x_31 > 7.900000095) && (x_33 < 8.100000381))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
new file mode 100644
index 0000000..fd79096
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  let x_28 : f32 = x_6.one;
+  f = (4.0 * (2.0 / x_28));
+  let x_31 : f32 = f;
+  let x_33 : f32 = f;
+  if (((x_31 > 7.900000095) && (x_33 < 8.100000381))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..33b44f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  const float x_28 = asfloat(x_6[0].x);
+  f = (4.0f * (2.0f / x_28));
+  bool tint_tmp = (f > 7.900000095f);
+  if (tint_tmp) {
+    tint_tmp = (f < 8.100000381f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8ca949d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float const x_28 = x_6.one;
+  f = (4.0f * (2.0f / x_28));
+  float const x_31 = f;
+  float const x_33 = f;
+  if (((x_31 > 7.900000095f) && (x_33 < 8.100000381f))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..a3e6ce2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,100 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 56
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_4 = OpConstant %float 4
+    %float_2 = OpConstant %float 2
+%float_7_9000001 = OpConstant %float 7.9000001
+       %bool = OpTypeBool
+%float_8_10000038 = OpConstant %float 8.10000038
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+         %21 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %22 = OpLoad %float %21
+         %25 = OpFDiv %float %float_2 %22
+         %26 = OpFMul %float %float_4 %25
+               OpStore %f %26
+         %27 = OpLoad %float %f
+         %28 = OpLoad %float %f
+         %30 = OpFOrdGreaterThan %bool %27 %float_7_9000001
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpFOrdLessThan %bool %28 %float_8_10000038
+               OpBranch %32
+         %32 = OpLabel
+         %36 = OpPhi %bool %30 %14 %35 %33
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %44
+%tint_symbol = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %main_1
+         %54 = OpLoad %v4float %x_GLF_color
+         %55 = OpCompositeConstruct %main_out %54
+         %53 = OpFunctionCall %void %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..fd79096
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,33 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  let x_28 : f32 = x_6.one;
+  f = (4.0 * (2.0 / x_28));
+  let x_31 : f32 = f;
+  let x_33 : f32 = f;
+  if (((x_31 > 7.900000095) && (x_33 < 8.100000381))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm
new file mode 100644
index 0000000..d72bc85
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm
@@ -0,0 +1,85 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+      %false = OpConstantFalse %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %12
+         %30 = OpLabel
+          %b = OpVariable %_ptr_Function_bool Function
+          %i = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function_float Function
+               OpStore %b %false
+               OpStore %i %int_1
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+          %7 = OpLoad %int %i
+         %35 = OpSGreaterThan %bool %7 %int_0
+               OpBranchConditional %35 %36 %32
+         %36 = OpLabel
+          %8 = OpLoad %int %i
+         %37 = OpConvertSToF %float %8
+         %38 = OpFAdd %float %float_1 %37
+               OpStore %a %38
+         %39 = OpLoad %float %a
+         %40 = OpFSub %float %float_2 %39
+         %41 = OpFOrdEqual %bool %40 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpStore %b %true
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+          %9 = OpLoad %int %i
+         %10 = OpISub %int %9 %int_1
+               OpStore %i %10
+               OpBranch %31
+         %32 = OpLabel
+         %44 = OpLoad %bool %b
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %45
+         %47 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e718661
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool b = false;
+  int i = 0;
+  float a = 0.0f;
+  b = false;
+  i = 1;
+  {
+    for(; (i > 0); i = (i - 1)) {
+      a = (1.0f + float(i));
+      if (((2.0f - a) == 0.0f)) {
+        b = true;
+      }
+    }
+  }
+  if (b) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1392c3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool b = false;
+  int i = 0;
+  float a = 0.0f;
+  b = false;
+  i = 1;
+  while (true) {
+    int const x_7 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    int const x_8 = i;
+    a = (1.0f + float(x_8));
+    float const x_39 = a;
+    if (((2.0f - x_39) == 0.0f)) {
+      b = true;
+    }
+    {
+      int const x_9 = i;
+      i = (x_9 - 1);
+    }
+  }
+  bool const x_44 = b;
+  if (x_44) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8756e12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,118 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpConstantNull %float
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+         %53 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %b = OpVariable %_ptr_Function_bool Function %15
+          %i = OpVariable %_ptr_Function_int Function %19
+          %a = OpVariable %_ptr_Function_float Function %22
+               OpStore %b %false
+               OpStore %i %int_1
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %29 = OpLoad %int %i
+         %31 = OpSGreaterThan %bool %29 %int_0
+               OpSelectionMerge %32 None
+               OpBranchConditional %31 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %26
+         %32 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpConvertSToF %float %35
+         %38 = OpFAdd %float %float_1 %37
+               OpStore %a %38
+         %39 = OpLoad %float %a
+         %41 = OpFSub %float %float_2 %39
+         %43 = OpFOrdEqual %bool %41 %float_0
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpStore %b %true
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpISub %int %47 %int_1
+               OpStore %i %48
+               OpBranch %25
+         %26 = OpLabel
+         %49 = OpLoad %bool %b
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..99ec59a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,45 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var b : bool;
+  var i : i32;
+  var a : f32;
+  b = false;
+  i = 1;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    let x_8 : i32 = i;
+    a = (1.0 + f32(x_8));
+    let x_39 : f32 = a;
+    if (((2.0 - x_39) == 0.0)) {
+      b = true;
+    }
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 - 1);
+    }
+  }
+  let x_44 : bool = b;
+  if (x_44) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
new file mode 100644
index 0000000..99ec59a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
@@ -0,0 +1,45 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var b : bool;
+  var i : i32;
+  var a : f32;
+  b = false;
+  i = 1;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    let x_8 : i32 = i;
+    a = (1.0 + f32(x_8));
+    let x_39 : f32 = a;
+    if (((2.0 - x_39) == 0.0)) {
+      b = true;
+    }
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 - 1);
+    }
+  }
+  let x_44 : bool = b;
+  if (x_44) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e718661
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool b = false;
+  int i = 0;
+  float a = 0.0f;
+  b = false;
+  i = 1;
+  {
+    for(; (i > 0); i = (i - 1)) {
+      a = (1.0f + float(i));
+      if (((2.0f - a) == 0.0f)) {
+        b = true;
+      }
+    }
+  }
+  if (b) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1392c3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool b = false;
+  int i = 0;
+  float a = 0.0f;
+  b = false;
+  i = 1;
+  while (true) {
+    int const x_7 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    int const x_8 = i;
+    a = (1.0f + float(x_8));
+    float const x_39 = a;
+    if (((2.0f - x_39) == 0.0f)) {
+      b = true;
+    }
+    {
+      int const x_9 = i;
+      i = (x_9 - 1);
+    }
+  }
+  bool const x_44 = b;
+  if (x_44) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8756e12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,118 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpConstantNull %float
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+         %53 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %b = OpVariable %_ptr_Function_bool Function %15
+          %i = OpVariable %_ptr_Function_int Function %19
+          %a = OpVariable %_ptr_Function_float Function %22
+               OpStore %b %false
+               OpStore %i %int_1
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %29 = OpLoad %int %i
+         %31 = OpSGreaterThan %bool %29 %int_0
+               OpSelectionMerge %32 None
+               OpBranchConditional %31 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %26
+         %32 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpConvertSToF %float %35
+         %38 = OpFAdd %float %float_1 %37
+               OpStore %a %38
+         %39 = OpLoad %float %a
+         %41 = OpFSub %float %float_2 %39
+         %43 = OpFOrdEqual %bool %41 %float_0
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpStore %b %true
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpISub %int %47 %int_1
+               OpStore %i %48
+               OpBranch %25
+         %26 = OpLabel
+         %49 = OpLoad %bool %b
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..99ec59a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,45 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var b : bool;
+  var i : i32;
+  var a : f32;
+  b = false;
+  i = 1;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    let x_8 : i32 = i;
+    a = (1.0 + f32(x_8));
+    let x_39 : f32 = a;
+    if (((2.0 - x_39) == 0.0)) {
+      b = true;
+    }
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 - 1);
+    }
+  }
+  let x_44 : bool = b;
+  if (x_44) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm
new file mode 100644
index 0000000..966e0fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm
@@ -0,0 +1,86 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+      %false = OpConstantFalse %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_3 = OpConstant %float 3
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %30 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %12
+         %31 = OpLabel
+          %b = OpVariable %_ptr_Function_bool Function
+          %i = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function_float Function
+               OpStore %b %false
+               OpStore %i %int_1
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+          %7 = OpLoad %int %i
+         %36 = OpSGreaterThan %bool %7 %int_0
+               OpBranchConditional %36 %37 %33
+         %37 = OpLabel
+          %8 = OpLoad %int %i
+         %38 = OpConvertSToF %float %8
+         %39 = OpFSub %float %float_3 %38
+               OpStore %a %39
+         %40 = OpLoad %float %a
+         %41 = OpFSub %float %float_2 %40
+         %42 = OpFOrdEqual %bool %41 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %b %true
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+          %9 = OpLoad %int %i
+         %10 = OpISub %int %9 %int_1
+               OpStore %i %10
+               OpBranch %32
+         %33 = OpLabel
+         %45 = OpLoad %bool %b
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %_GLF_color %30
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a2804a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool b = false;
+  int i = 0;
+  float a = 0.0f;
+  b = false;
+  i = 1;
+  {
+    for(; (i > 0); i = (i - 1)) {
+      a = (3.0f - float(i));
+      if (((2.0f - a) == 0.0f)) {
+        b = true;
+      }
+    }
+  }
+  if (b) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..c2559b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool b = false;
+  int i = 0;
+  float a = 0.0f;
+  b = false;
+  i = 1;
+  while (true) {
+    int const x_7 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    int const x_8 = i;
+    a = (3.0f - float(x_8));
+    float const x_40 = a;
+    if (((2.0f - x_40) == 0.0f)) {
+      b = true;
+    }
+    {
+      int const x_9 = i;
+      i = (x_9 - 1);
+    }
+  }
+  bool const x_45 = b;
+  if (x_45) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2c915e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,119 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpConstantNull %float
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+    %float_3 = OpConstant %float 3
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %54 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %b = OpVariable %_ptr_Function_bool Function %15
+          %i = OpVariable %_ptr_Function_int Function %19
+          %a = OpVariable %_ptr_Function_float Function %22
+               OpStore %b %false
+               OpStore %i %int_1
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %29 = OpLoad %int %i
+         %31 = OpSGreaterThan %bool %29 %int_0
+               OpSelectionMerge %32 None
+               OpBranchConditional %31 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %26
+         %32 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpConvertSToF %float %35
+         %38 = OpFSub %float %float_3 %37
+               OpStore %a %38
+         %39 = OpLoad %float %a
+         %41 = OpFSub %float %float_2 %39
+         %43 = OpFOrdEqual %bool %41 %float_0
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpStore %b %true
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpISub %int %47 %int_1
+               OpStore %i %48
+               OpBranch %25
+         %26 = OpLabel
+         %49 = OpLoad %bool %b
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %56
+%tint_symbol = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %63 = OpLabel
+         %64 = OpFunctionCall %void %main_1
+         %66 = OpLoad %v4float %x_GLF_color
+         %67 = OpCompositeConstruct %main_out %66
+         %65 = OpFunctionCall %void %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..44ac190
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,45 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var b : bool;
+  var i : i32;
+  var a : f32;
+  b = false;
+  i = 1;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    let x_8 : i32 = i;
+    a = (3.0 - f32(x_8));
+    let x_40 : f32 = a;
+    if (((2.0 - x_40) == 0.0)) {
+      b = true;
+    }
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 - 1);
+    }
+  }
+  let x_45 : bool = b;
+  if (x_45) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
new file mode 100644
index 0000000..44ac190
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
@@ -0,0 +1,45 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var b : bool;
+  var i : i32;
+  var a : f32;
+  b = false;
+  i = 1;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    let x_8 : i32 = i;
+    a = (3.0 - f32(x_8));
+    let x_40 : f32 = a;
+    if (((2.0 - x_40) == 0.0)) {
+      b = true;
+    }
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 - 1);
+    }
+  }
+  let x_45 : bool = b;
+  if (x_45) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a2804a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool b = false;
+  int i = 0;
+  float a = 0.0f;
+  b = false;
+  i = 1;
+  {
+    for(; (i > 0); i = (i - 1)) {
+      a = (3.0f - float(i));
+      if (((2.0f - a) == 0.0f)) {
+        b = true;
+      }
+    }
+  }
+  if (b) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..c2559b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool b = false;
+  int i = 0;
+  float a = 0.0f;
+  b = false;
+  i = 1;
+  while (true) {
+    int const x_7 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    int const x_8 = i;
+    a = (3.0f - float(x_8));
+    float const x_40 = a;
+    if (((2.0f - x_40) == 0.0f)) {
+      b = true;
+    }
+    {
+      int const x_9 = i;
+      i = (x_9 - 1);
+    }
+  }
+  bool const x_45 = b;
+  if (x_45) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2c915e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,119 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpConstantNull %float
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+    %float_3 = OpConstant %float 3
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %54 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %b = OpVariable %_ptr_Function_bool Function %15
+          %i = OpVariable %_ptr_Function_int Function %19
+          %a = OpVariable %_ptr_Function_float Function %22
+               OpStore %b %false
+               OpStore %i %int_1
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %29 = OpLoad %int %i
+         %31 = OpSGreaterThan %bool %29 %int_0
+               OpSelectionMerge %32 None
+               OpBranchConditional %31 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %26
+         %32 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpConvertSToF %float %35
+         %38 = OpFSub %float %float_3 %37
+               OpStore %a %38
+         %39 = OpLoad %float %a
+         %41 = OpFSub %float %float_2 %39
+         %43 = OpFOrdEqual %bool %41 %float_0
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpStore %b %true
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpISub %int %47 %int_1
+               OpStore %i %48
+               OpBranch %25
+         %26 = OpLabel
+         %49 = OpLoad %bool %b
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %56
+%tint_symbol = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %63 = OpLabel
+         %64 = OpFunctionCall %void %main_1
+         %66 = OpLoad %v4float %x_GLF_color
+         %67 = OpCompositeConstruct %main_out %66
+         %65 = OpFunctionCall %void %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..44ac190
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,45 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var b : bool;
+  var i : i32;
+  var a : f32;
+  b = false;
+  i = 1;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 > 0)) {
+    } else {
+      break;
+    }
+    let x_8 : i32 = i;
+    a = (3.0 - f32(x_8));
+    let x_40 : f32 = a;
+    if (((2.0 - x_40) == 0.0)) {
+      b = true;
+    }
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 - 1);
+    }
+  }
+  let x_45 : bool = b;
+  if (x_45) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm
new file mode 100644
index 0000000..eebf568
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm
@@ -0,0 +1,75 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "five"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %24 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %26 = OpLoad %int %25
+               OpStore %i %26
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpLoad %int %i
+         %32 = OpSGreaterThan %bool %31 %int_0
+               OpBranchConditional %32 %33 %28
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %35 = OpISub %int %34 %int_1
+               OpStore %i %35
+         %36 = OpLoad %int %i
+         %37 = OpISub %int %36 %int_1
+               OpStore %i %37
+               OpBranch %29
+         %29 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpIEqual %bool %38 %int_n1
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %42
+         %41 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %40
+         %42 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %40
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b852869
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,38 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  const int x_26 = asint(x_6[0].x);
+  i = x_26;
+  while (true) {
+    if ((i > 0)) {
+    } else {
+      break;
+    }
+    i = (i - 1);
+    i = (i - 1);
+  }
+  if ((i == -1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..9138eca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.msl
@@ -0,0 +1,45 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int five;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int const x_26 = x_6.five;
+  i = x_26;
+  while (true) {
+    int const x_31 = i;
+    if ((x_31 > 0)) {
+    } else {
+      break;
+    }
+    int const x_34 = i;
+    i = (x_34 - 1);
+    int const x_36 = i;
+    i = (x_36 - 1);
+  }
+  int const x_38 = i;
+  if ((x_38 == -1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..30086d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "five"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %18
+         %22 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %23 = OpLoad %int %22
+               OpStore %i %23
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %i
+         %30 = OpSGreaterThan %bool %28 %int_0
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpISub %int %35 %int_1
+               OpStore %i %37
+         %38 = OpLoad %int %i
+         %39 = OpISub %int %38 %int_1
+               OpStore %i %39
+               OpBranch %26
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpIEqual %bool %40 %int_n1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %x_GLF_color %49
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b7d98c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,43 @@
+[[block]]
+struct buf0 {
+  five : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  let x_26 : i32 = x_6.five;
+  i = x_26;
+  loop {
+    let x_31 : i32 = i;
+    if ((x_31 > 0)) {
+    } else {
+      break;
+    }
+    let x_34 : i32 = i;
+    i = (x_34 - 1);
+    let x_36 : i32 = i;
+    i = (x_36 - 1);
+  }
+  let x_38 : i32 = i;
+  if ((x_38 == -1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
new file mode 100644
index 0000000..b7d98c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
@@ -0,0 +1,43 @@
+[[block]]
+struct buf0 {
+  five : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  let x_26 : i32 = x_6.five;
+  i = x_26;
+  loop {
+    let x_31 : i32 = i;
+    if ((x_31 > 0)) {
+    } else {
+      break;
+    }
+    let x_34 : i32 = i;
+    i = (x_34 - 1);
+    let x_36 : i32 = i;
+    i = (x_36 - 1);
+  }
+  let x_38 : i32 = i;
+  if ((x_38 == -1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b852869
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,38 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  const int x_26 = asint(x_6[0].x);
+  i = x_26;
+  while (true) {
+    if ((i > 0)) {
+    } else {
+      break;
+    }
+    i = (i - 1);
+    i = (i - 1);
+  }
+  if ((i == -1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..9138eca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.msl
@@ -0,0 +1,45 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int five;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int const x_26 = x_6.five;
+  i = x_26;
+  while (true) {
+    int const x_31 = i;
+    if ((x_31 > 0)) {
+    } else {
+      break;
+    }
+    int const x_34 = i;
+    i = (x_34 - 1);
+    int const x_36 = i;
+    i = (x_36 - 1);
+  }
+  int const x_38 = i;
+  if ((x_38 == -1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..30086d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "five"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %18
+         %22 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %23 = OpLoad %int %22
+               OpStore %i %23
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %i
+         %30 = OpSGreaterThan %bool %28 %int_0
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpISub %int %35 %int_1
+               OpStore %i %37
+         %38 = OpLoad %int %i
+         %39 = OpISub %int %38 %int_1
+               OpStore %i %39
+               OpBranch %26
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpIEqual %bool %40 %int_n1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %x_GLF_color %49
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b7d98c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,43 @@
+[[block]]
+struct buf0 {
+  five : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  let x_26 : i32 = x_6.five;
+  i = x_26;
+  loop {
+    let x_31 : i32 = i;
+    if ((x_31 > 0)) {
+    } else {
+      break;
+    }
+    let x_34 : i32 = i;
+    i = (x_34 - 1);
+    let x_36 : i32 = i;
+    i = (x_36 - 1);
+  }
+  let x_38 : i32 = i;
+  if ((x_38 == -1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm
new file mode 100644
index 0000000..8bdc7b1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm
@@ -0,0 +1,75 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %d "d"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_5 = OpConstant %float 5
+    %float_8 = OpConstant %float 8
+%float_n12_1999998 = OpConstant %float -12.1999998
+         %16 = OpConstantComposite %v3float %float_5 %float_8 %float_n12_1999998
+    %float_1 = OpConstant %float 1
+%float_4_9000001 = OpConstant %float 4.9000001
+%float_n2_0999999 = OpConstant %float -2.0999999
+         %20 = OpConstantComposite %v3float %float_1 %float_4_9000001 %float_n2_0999999
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+%float_0_100000001 = OpConstant %float 0.100000001
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %34 = OpLabel
+          %v = OpVariable %_ptr_Function_v3float Function
+          %d = OpVariable %_ptr_Function_float Function
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %36 = OpLoad %float %35
+         %37 = OpCompositeConstruct %v3float %36 %36 %36
+         %38 = OpExtInst %v3float %1 FMix %16 %20 %37
+               OpStore %v %38
+         %39 = OpLoad %v3float %v
+         %40 = OpExtInst %float %1 Distance %39 %20
+               OpStore %d %40
+         %41 = OpLoad %float %d
+         %42 = OpFOrdLessThan %bool %41 %float_0_100000001
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %v4float %47 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %48
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %_GLF_color %33
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..7a3d498
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,33 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float3 v = float3(0.0f, 0.0f, 0.0f);
+  float d = 0.0f;
+  const float x_36 = asfloat(x_6[0].x);
+  v = lerp(float3(5.0f, 8.0f, -12.199999809f), float3(1.0f, 4.900000095f, -2.099999905f), float3(x_36, x_36, x_36));
+  d = distance(v, float3(1.0f, 4.900000095f, -2.099999905f));
+  if ((d < 0.100000001f)) {
+    const float x_47 = v.x;
+    x_GLF_color = float4(x_47, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..02ce404
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float3 v = 0.0f;
+  float d = 0.0f;
+  float const x_36 = x_6.one;
+  v = mix(float3(5.0f, 8.0f, -12.199999809f), float3(1.0f, 4.900000095f, -2.099999905f), float3(x_36, x_36, x_36));
+  float3 const x_39 = v;
+  d = distance(x_39, float3(1.0f, 4.900000095f, -2.099999905f));
+  float const x_41 = d;
+  if ((x_41 < 0.100000001f)) {
+    float const x_47 = v.x;
+    *(tint_symbol_4) = float4(x_47, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0427ed3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %d "d"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %18 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_5 = OpConstant %float 5
+    %float_8 = OpConstant %float 8
+%float_n12_1999998 = OpConstant %float -12.1999998
+         %32 = OpConstantComposite %v3float %float_5 %float_8 %float_n12_1999998
+    %float_1 = OpConstant %float 1
+%float_4_9000001 = OpConstant %float 4.9000001
+%float_n2_0999999 = OpConstant %float -2.0999999
+         %36 = OpConstantComposite %v3float %float_1 %float_4_9000001 %float_n2_0999999
+%float_0_100000001 = OpConstant %float 0.100000001
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %51 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %v = OpVariable %_ptr_Function_v3float Function %18
+          %d = OpVariable %_ptr_Function_float Function %21
+         %25 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %26 = OpLoad %float %25
+         %37 = OpCompositeConstruct %v3float %26 %26 %26
+         %27 = OpExtInst %v3float %28 FMix %32 %36 %37
+               OpStore %v %27
+         %38 = OpLoad %v3float %v
+         %39 = OpExtInst %float %28 Distance %38 %36
+               OpStore %d %39
+         %40 = OpLoad %float %d
+         %42 = OpFOrdLessThan %bool %40 %float_0_100000001
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %48 = OpLoad %float %47
+         %50 = OpCompositeConstruct %v4float %48 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %50
+               OpBranch %44
+         %46 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %44
+         %44 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %52
+%tint_symbol = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %59 = OpLabel
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..39b846d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec3<f32>;
+  var d : f32;
+  let x_36 : f32 = x_6.one;
+  v = mix(vec3<f32>(5.0, 8.0, -12.199999809), vec3<f32>(1.0, 4.900000095, -2.099999905), vec3<f32>(x_36, x_36, x_36));
+  let x_39 : vec3<f32> = v;
+  d = distance(x_39, vec3<f32>(1.0, 4.900000095, -2.099999905));
+  let x_41 : f32 = d;
+  if ((x_41 < 0.100000001)) {
+    let x_47 : f32 = v.x;
+    x_GLF_color = vec4<f32>(x_47, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
new file mode 100644
index 0000000..39b846d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec3<f32>;
+  var d : f32;
+  let x_36 : f32 = x_6.one;
+  v = mix(vec3<f32>(5.0, 8.0, -12.199999809), vec3<f32>(1.0, 4.900000095, -2.099999905), vec3<f32>(x_36, x_36, x_36));
+  let x_39 : vec3<f32> = v;
+  d = distance(x_39, vec3<f32>(1.0, 4.900000095, -2.099999905));
+  let x_41 : f32 = d;
+  if ((x_41 < 0.100000001)) {
+    let x_47 : f32 = v.x;
+    x_GLF_color = vec4<f32>(x_47, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7a3d498
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,33 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float3 v = float3(0.0f, 0.0f, 0.0f);
+  float d = 0.0f;
+  const float x_36 = asfloat(x_6[0].x);
+  v = lerp(float3(5.0f, 8.0f, -12.199999809f), float3(1.0f, 4.900000095f, -2.099999905f), float3(x_36, x_36, x_36));
+  d = distance(v, float3(1.0f, 4.900000095f, -2.099999905f));
+  if ((d < 0.100000001f)) {
+    const float x_47 = v.x;
+    x_GLF_color = float4(x_47, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..02ce404
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float3 v = 0.0f;
+  float d = 0.0f;
+  float const x_36 = x_6.one;
+  v = mix(float3(5.0f, 8.0f, -12.199999809f), float3(1.0f, 4.900000095f, -2.099999905f), float3(x_36, x_36, x_36));
+  float3 const x_39 = v;
+  d = distance(x_39, float3(1.0f, 4.900000095f, -2.099999905f));
+  float const x_41 = d;
+  if ((x_41 < 0.100000001f)) {
+    float const x_47 = v.x;
+    *(tint_symbol_4) = float4(x_47, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0427ed3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %d "d"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %18 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_5 = OpConstant %float 5
+    %float_8 = OpConstant %float 8
+%float_n12_1999998 = OpConstant %float -12.1999998
+         %32 = OpConstantComposite %v3float %float_5 %float_8 %float_n12_1999998
+    %float_1 = OpConstant %float 1
+%float_4_9000001 = OpConstant %float 4.9000001
+%float_n2_0999999 = OpConstant %float -2.0999999
+         %36 = OpConstantComposite %v3float %float_1 %float_4_9000001 %float_n2_0999999
+%float_0_100000001 = OpConstant %float 0.100000001
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %51 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %v = OpVariable %_ptr_Function_v3float Function %18
+          %d = OpVariable %_ptr_Function_float Function %21
+         %25 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %26 = OpLoad %float %25
+         %37 = OpCompositeConstruct %v3float %26 %26 %26
+         %27 = OpExtInst %v3float %28 FMix %32 %36 %37
+               OpStore %v %27
+         %38 = OpLoad %v3float %v
+         %39 = OpExtInst %float %28 Distance %38 %36
+               OpStore %d %39
+         %40 = OpLoad %float %d
+         %42 = OpFOrdLessThan %bool %40 %float_0_100000001
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %48 = OpLoad %float %47
+         %50 = OpCompositeConstruct %v4float %48 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %50
+               OpBranch %44
+         %46 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %44
+         %44 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %52
+%tint_symbol = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %59 = OpLabel
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..39b846d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec3<f32>;
+  var d : f32;
+  let x_36 : f32 = x_6.one;
+  v = mix(vec3<f32>(5.0, 8.0, -12.199999809), vec3<f32>(1.0, 4.900000095, -2.099999905), vec3<f32>(x_36, x_36, x_36));
+  let x_39 : vec3<f32> = v;
+  d = distance(x_39, vec3<f32>(1.0, 4.900000095, -2.099999905));
+  let x_41 : f32 = d;
+  if ((x_41 < 0.100000001)) {
+    let x_47 : f32 = v.x;
+    x_GLF_color = vec4<f32>(x_47, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm
new file mode 100644
index 0000000..3b25608
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm
@@ -0,0 +1,57 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "four"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+     %int_n2 = OpConstant %int -2
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %24 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %10
+         %25 = OpLabel
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+          %6 = OpLoad %int %26
+          %7 = OpSDiv %int %6 %int_2
+          %8 = OpSNegate %int %7
+         %27 = OpIEqual %bool %8 %int_n2
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %30
+         %29 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %28
+         %30 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %28
+         %28 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..400828d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_6 = asint(x_5[0].x);
+  if ((-((x_6 / 2)) == -2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..342ee1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int four;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_6 = x_5.four;
+  if ((-((x_6 / 2)) == -2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..10f5bab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,85 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "four"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+     %int_n2 = OpConstant %int -2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %34 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %23 = OpSDiv %int %20 %int_2
+         %21 = OpSNegate %int %23
+         %25 = OpIEqual %bool %21 %int_n2
+               OpSelectionMerge %27 None
+               OpBranchConditional %25 %28 %29
+         %28 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %27
+         %29 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol = OpFunctionParameter %main_out
+         %38 = OpLabel
+         %39 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %39
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..31222ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  four : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_6 : i32 = x_5.four;
+  if ((-((x_6 / 2)) == -2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
new file mode 100644
index 0000000..31222ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  four : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_6 : i32 = x_5.four;
+  if ((-((x_6 / 2)) == -2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..400828d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_6 = asint(x_5[0].x);
+  if ((-((x_6 / 2)) == -2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..342ee1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int four;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_6 = x_5.four;
+  if ((-((x_6 / 2)) == -2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..10f5bab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,85 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "four"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+     %int_n2 = OpConstant %int -2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %34 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %23 = OpSDiv %int %20 %int_2
+         %21 = OpSNegate %int %23
+         %25 = OpIEqual %bool %21 %int_n2
+               OpSelectionMerge %27 None
+               OpBranchConditional %25 %28 %29
+         %28 = OpLabel
+               OpStore %x_GLF_color %32
+               OpBranch %27
+         %29 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol = OpFunctionParameter %main_out
+         %38 = OpLabel
+         %39 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %39
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..31222ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  four : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_6 : i32 = x_5.four;
+  if ((-((x_6 / 2)) == -2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm
new file mode 100644
index 0000000..a73279f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm
@@ -0,0 +1,58 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %x "x"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_5 = OpConstant %int 5
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %int_n4 = OpConstant %int -4
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %24 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %26 = OpLoad %int %25
+         %27 = OpISub %int %int_5 %26
+         %28 = OpSNegate %int %27
+               OpStore %x %28
+         %29 = OpLoad %int %x
+         %30 = OpIEqual %bool %29 %int_n4
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..abdc55d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x = 0;
+  const int x_26 = asint(x_6[0].x);
+  x = -((5 - x_26));
+  if ((x == -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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ba94661
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int x = 0;
+  int const x_26 = x_6.one;
+  x = -((5 - x_26));
+  int const x_29 = x;
+  if ((x_29 == -4)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..567ae13
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,91 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x "x"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+     %int_n4 = OpConstant %int -4
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %18
+         %22 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %23 = OpLoad %int %22
+         %26 = OpISub %int %int_5 %23
+         %24 = OpSNegate %int %26
+               OpStore %x %24
+         %27 = OpLoad %int %x
+         %29 = OpIEqual %bool %27 %int_n4
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %x_GLF_color %37
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..73f36ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x : i32;
+  let x_26 : i32 = x_6.one;
+  x = -((5 - x_26));
+  let x_29 : i32 = x;
+  if ((x_29 == -4)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
new file mode 100644
index 0000000..73f36ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x : i32;
+  let x_26 : i32 = x_6.one;
+  x = -((5 - x_26));
+  let x_29 : i32 = x;
+  if ((x_29 == -4)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..abdc55d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x = 0;
+  const int x_26 = asint(x_6[0].x);
+  x = -((5 - x_26));
+  if ((x == -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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ba94661
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int x = 0;
+  int const x_26 = x_6.one;
+  x = -((5 - x_26));
+  int const x_29 = x;
+  if ((x_29 == -4)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..567ae13
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,91 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x "x"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+     %int_n4 = OpConstant %int -4
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %18
+         %22 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %23 = OpLoad %int %22
+         %26 = OpISub %int %int_5 %23
+         %24 = OpSNegate %int %26
+               OpStore %x %24
+         %27 = OpLoad %int %x
+         %29 = OpIEqual %bool %27 %int_n4
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %x_GLF_color %37
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..73f36ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x : i32;
+  let x_26 : i32 = x_6.one;
+  x = -((5 - x_26));
+  let x_29 : i32 = x;
+  if ((x_29 == -4)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm
new file mode 100644
index 0000000..a280ffec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm
@@ -0,0 +1,56 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %17 = OpConstantComposite %v2float %float_0 %float_0
+         %18 = OpConstantComposite %v2float %float_0 %float_1
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %24 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %25 = OpLabel
+         %26 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %27 = OpLoad %v2float %26
+         %28 = OpExtInst %v2float %1 FMix %27 %15 %17
+         %29 = OpFOrdEqual %v2bool %28 %18
+         %30 = OpAll %bool %29
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..6aca1c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float2 x_27 = asfloat(x_5[0].xy);
+  if (all((lerp(x_27, float2(1.0f, 1.0f), float2(0.0f, 0.0f)) == float2(0.0f, 1.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..945cd53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float2 const x_27 = x_5.injectionSwitch;
+  if (all((mix(x_27, float2(1.0f, 1.0f), float2(0.0f, 0.0f)) == float2(0.0f, 1.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f1fcd90
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,88 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 49
+; Schema: 0
+               OpCapability Shader
+         %24 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %26 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v2float %float_0 %float_0
+         %29 = OpConstantComposite %v2float %float_0 %float_1
+     %v2bool = OpTypeVector %bool 2
+         %35 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %37 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_v2float %x_5 %uint_0
+         %20 = OpLoad %v2float %19
+         %23 = OpExtInst %v2float %24 FMix %20 %26 %28
+         %30 = OpFOrdEqual %v2bool %23 %29
+         %21 = OpAll %bool %30
+               OpSelectionMerge %32 None
+               OpBranchConditional %21 %33 %34
+         %33 = OpLabel
+               OpStore %x_GLF_color %35
+               OpBranch %32
+         %34 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %32
+         %32 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %37
+%tint_symbol = OpFunctionParameter %main_out
+         %41 = OpLabel
+         %42 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %42
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %main_1
+         %47 = OpLoad %v4float %x_GLF_color
+         %48 = OpCompositeConstruct %main_out %47
+         %46 = OpFunctionCall %void %tint_symbol_2 %48
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..fcf7c4a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_27 : vec2<f32> = x_5.injectionSwitch;
+  if (all((mix(x_27, vec2<f32>(1.0, 1.0), vec2<f32>(0.0, 0.0)) == vec2<f32>(0.0, 1.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
new file mode 100644
index 0000000..fcf7c4a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_27 : vec2<f32> = x_5.injectionSwitch;
+  if (all((mix(x_27, vec2<f32>(1.0, 1.0), vec2<f32>(0.0, 0.0)) == vec2<f32>(0.0, 1.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..6aca1c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float2 x_27 = asfloat(x_5[0].xy);
+  if (all((lerp(x_27, float2(1.0f, 1.0f), float2(0.0f, 0.0f)) == float2(0.0f, 1.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..945cd53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float2 const x_27 = x_5.injectionSwitch;
+  if (all((mix(x_27, float2(1.0f, 1.0f), float2(0.0f, 0.0f)) == float2(0.0f, 1.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f1fcd90
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,88 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 49
+; Schema: 0
+               OpCapability Shader
+         %24 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %26 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v2float %float_0 %float_0
+         %29 = OpConstantComposite %v2float %float_0 %float_1
+     %v2bool = OpTypeVector %bool 2
+         %35 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %37 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_v2float %x_5 %uint_0
+         %20 = OpLoad %v2float %19
+         %23 = OpExtInst %v2float %24 FMix %20 %26 %28
+         %30 = OpFOrdEqual %v2bool %23 %29
+         %21 = OpAll %bool %30
+               OpSelectionMerge %32 None
+               OpBranchConditional %21 %33 %34
+         %33 = OpLabel
+               OpStore %x_GLF_color %35
+               OpBranch %32
+         %34 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %32
+         %32 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %37
+%tint_symbol = OpFunctionParameter %main_out
+         %41 = OpLabel
+         %42 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %42
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %main_1
+         %47 = OpLoad %v4float %x_GLF_color
+         %48 = OpCompositeConstruct %main_out %47
+         %46 = OpFunctionCall %void %tint_symbol_2 %48
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..fcf7c4a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_27 : vec2<f32> = x_5.injectionSwitch;
+  if (all((mix(x_27, vec2<f32>(1.0, 1.0), vec2<f32>(0.0, 0.0)) == vec2<f32>(0.0, 1.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm
new file mode 100644
index 0000000..6e30025
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm
@@ -0,0 +1,58 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+      %false = OpConstantFalse %bool
+         %19 = OpConstantComposite %v2bool %false %false
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+    %float_0 = OpConstant %float 0
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %27 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %29 = OpLoad %v2float %28
+         %30 = OpSelect %v2float %19 %15 %29
+         %31 = OpCompositeExtract %float %30 0
+         %32 = OpFOrdEqual %bool %31 %float_0
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..563318c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float2 x_29 = asfloat(x_5[0].xy);
+  if (((bool2(false, false) ? float2(1.0f, 1.0f) : x_29).x == 0.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2d5c01d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float2 const x_29 = x_5.injectionSwitch;
+  if ((select(x_29, float2(1.0f, 1.0f), bool2(false, false)).x == 0.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4d94830
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,87 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+      %false = OpConstantFalse %bool
+         %25 = OpConstantComposite %v2bool %false %false
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %36 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_v2float %x_5 %uint_0
+         %20 = OpLoad %v2float %19
+         %21 = OpSelect %v2float %25 %27 %20
+         %28 = OpCompositeExtract %float %21 0
+         %30 = OpFOrdEqual %bool %28 %float_0
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %x_GLF_color %35
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %36
+%tint_symbol = OpFunctionParameter %main_out
+         %40 = OpLabel
+         %41 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %41
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %main_1
+         %46 = OpLoad %v4float %x_GLF_color
+         %47 = OpCompositeConstruct %main_out %46
+         %45 = OpFunctionCall %void %tint_symbol_2 %47
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..790f1a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_29 : vec2<f32> = x_5.injectionSwitch;
+  if ((select(x_29, vec2<f32>(1.0, 1.0), vec2<bool>(false, false)).x == 0.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
new file mode 100644
index 0000000..790f1a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_29 : vec2<f32> = x_5.injectionSwitch;
+  if ((select(x_29, vec2<f32>(1.0, 1.0), vec2<bool>(false, false)).x == 0.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..563318c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float2 x_29 = asfloat(x_5[0].xy);
+  if (((bool2(false, false) ? float2(1.0f, 1.0f) : x_29).x == 0.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2d5c01d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float2 const x_29 = x_5.injectionSwitch;
+  if ((select(x_29, float2(1.0f, 1.0f), bool2(false, false)).x == 0.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4d94830
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,87 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+      %false = OpConstantFalse %bool
+         %25 = OpConstantComposite %v2bool %false %false
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %36 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_v2float %x_5 %uint_0
+         %20 = OpLoad %v2float %19
+         %21 = OpSelect %v2float %25 %27 %20
+         %28 = OpCompositeExtract %float %21 0
+         %30 = OpFOrdEqual %bool %28 %float_0
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %x_GLF_color %35
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %36
+%tint_symbol = OpFunctionParameter %main_out
+         %40 = OpLabel
+         %41 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %41
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %main_1
+         %46 = OpLoad %v4float %x_GLF_color
+         %47 = OpCompositeConstruct %main_out %46
+         %45 = OpFunctionCall %void %tint_symbol_2 %47
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..790f1a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_29 : vec2<f32> = x_5.injectionSwitch;
+  if ((select(x_29, vec2<f32>(1.0, 1.0), vec2<bool>(false, false)).x == 0.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm
new file mode 100644
index 0000000..d0b8717
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm
@@ -0,0 +1,76 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "threeandfour"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+    %float_5 = OpConstant %float 5
+         %16 = OpConstantComposite %v4float %float_2 %float_3 %float_4 %float_5
+    %v2float = OpTypeVector %float 2
+    %float_6 = OpConstant %float 6
+         %19 = OpConstantComposite %v2float %float_2 %float_6
+    %float_1 = OpConstant %float 1
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+         %31 = OpConstantComposite %v2bool %true %false
+         %32 = OpConstantComposite %v4float %float_1 %float_6 %float_4 %float_5
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %38 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+               OpStore %v %16
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpCompositeConstruct %v2float %float_1 %40
+         %42 = OpSelect %v2float %31 %41 %19
+         %43 = OpLoad %v4float %v
+         %44 = OpVectorShuffle %v4float %43 %42 4 5 2 3
+               OpStore %v %44
+         %45 = OpLoad %v4float %v
+         %46 = OpFOrdEqual %v4bool %45 %32
+         %47 = OpAll %bool %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+               OpStore %_GLF_color %36
+               OpBranch %48
+         %50 = OpLabel
+               OpStore %_GLF_color %37
+               OpBranch %48
+         %48 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f11d3d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,33 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  v = float4(2.0f, 3.0f, 4.0f, 5.0f);
+  const float x_40 = asfloat(x_6[0].y);
+  const float2 x_42 = (bool2(true, false) ? float2(1.0f, x_40) : float2(2.0f, 6.0f));
+  const float4 x_43 = v;
+  v = float4(x_42.x, x_42.y, x_43.z, x_43.w);
+  if (all((v == float4(1.0f, 6.0f, 4.0f, 5.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..11c6999
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 threeandfour;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  v = float4(2.0f, 3.0f, 4.0f, 5.0f);
+  float const x_40 = x_6.threeandfour.y;
+  float2 const x_42 = select(float2(2.0f, 6.0f), float2(1.0f, x_40), bool2(true, false));
+  float4 const x_43 = v;
+  v = float4(x_42.x, x_42.y, x_43.z, x_43.w);
+  float4 const x_45 = v;
+  if (all((x_45 == float4(1.0f, 6.0f, 4.0f, 5.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..86501a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "threeandfour"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+    %float_5 = OpConstant %float 5
+         %22 = OpConstantComposite %v4float %float_2 %float_3 %float_4 %float_5
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+         %34 = OpConstantComposite %v2bool %true %false
+    %float_1 = OpConstant %float 1
+    %float_6 = OpConstant %float 6
+         %38 = OpConstantComposite %v2float %float_2 %float_6
+         %47 = OpConstantComposite %v4float %float_1 %float_6 %float_4 %float_5
+     %v4bool = OpTypeVector %bool 4
+    %float_0 = OpConstant %float 0
+         %54 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %9
+               OpStore %v %22
+         %27 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %28 = OpLoad %float %27
+         %36 = OpCompositeConstruct %v2float %float_1 %28
+         %29 = OpSelect %v2float %34 %36 %38
+         %39 = OpLoad %v4float %v
+         %40 = OpCompositeExtract %float %29 0
+         %41 = OpCompositeExtract %float %29 1
+         %42 = OpCompositeExtract %float %39 2
+         %43 = OpCompositeExtract %float %39 3
+         %44 = OpCompositeConstruct %v4float %40 %41 %42 %43
+               OpStore %v %44
+         %45 = OpLoad %v4float %v
+         %48 = OpFOrdEqual %v4bool %45 %47
+         %46 = OpAll %bool %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %46 %51 %52
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %56
+%tint_symbol = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %63 = OpLabel
+         %64 = OpFunctionCall %void %main_1
+         %66 = OpLoad %v4float %x_GLF_color
+         %67 = OpCompositeConstruct %main_out %66
+         %65 = OpFunctionCall %void %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8168671
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  threeandfour : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  v = vec4<f32>(2.0, 3.0, 4.0, 5.0);
+  let x_40 : f32 = x_6.threeandfour.y;
+  let x_42 : vec2<f32> = select(vec2<f32>(2.0, 6.0), vec2<f32>(1.0, x_40), vec2<bool>(true, false));
+  let x_43 : vec4<f32> = v;
+  v = vec4<f32>(x_42.x, x_42.y, x_43.z, x_43.w);
+  let x_45 : vec4<f32> = v;
+  if (all((x_45 == vec4<f32>(1.0, 6.0, 4.0, 5.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
new file mode 100644
index 0000000..8168671
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  threeandfour : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  v = vec4<f32>(2.0, 3.0, 4.0, 5.0);
+  let x_40 : f32 = x_6.threeandfour.y;
+  let x_42 : vec2<f32> = select(vec2<f32>(2.0, 6.0), vec2<f32>(1.0, x_40), vec2<bool>(true, false));
+  let x_43 : vec4<f32> = v;
+  v = vec4<f32>(x_42.x, x_42.y, x_43.z, x_43.w);
+  let x_45 : vec4<f32> = v;
+  if (all((x_45 == vec4<f32>(1.0, 6.0, 4.0, 5.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f11d3d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,33 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  v = float4(2.0f, 3.0f, 4.0f, 5.0f);
+  const float x_40 = asfloat(x_6[0].y);
+  const float2 x_42 = (bool2(true, false) ? float2(1.0f, x_40) : float2(2.0f, 6.0f));
+  const float4 x_43 = v;
+  v = float4(x_42.x, x_42.y, x_43.z, x_43.w);
+  if (all((v == float4(1.0f, 6.0f, 4.0f, 5.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..11c6999
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 threeandfour;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  v = float4(2.0f, 3.0f, 4.0f, 5.0f);
+  float const x_40 = x_6.threeandfour.y;
+  float2 const x_42 = select(float2(2.0f, 6.0f), float2(1.0f, x_40), bool2(true, false));
+  float4 const x_43 = v;
+  v = float4(x_42.x, x_42.y, x_43.z, x_43.w);
+  float4 const x_45 = v;
+  if (all((x_45 == float4(1.0f, 6.0f, 4.0f, 5.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..86501a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "threeandfour"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+    %float_5 = OpConstant %float 5
+         %22 = OpConstantComposite %v4float %float_2 %float_3 %float_4 %float_5
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+         %34 = OpConstantComposite %v2bool %true %false
+    %float_1 = OpConstant %float 1
+    %float_6 = OpConstant %float 6
+         %38 = OpConstantComposite %v2float %float_2 %float_6
+         %47 = OpConstantComposite %v4float %float_1 %float_6 %float_4 %float_5
+     %v4bool = OpTypeVector %bool 4
+    %float_0 = OpConstant %float 0
+         %54 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %9
+               OpStore %v %22
+         %27 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %28 = OpLoad %float %27
+         %36 = OpCompositeConstruct %v2float %float_1 %28
+         %29 = OpSelect %v2float %34 %36 %38
+         %39 = OpLoad %v4float %v
+         %40 = OpCompositeExtract %float %29 0
+         %41 = OpCompositeExtract %float %29 1
+         %42 = OpCompositeExtract %float %39 2
+         %43 = OpCompositeExtract %float %39 3
+         %44 = OpCompositeConstruct %v4float %40 %41 %42 %43
+               OpStore %v %44
+         %45 = OpLoad %v4float %v
+         %48 = OpFOrdEqual %v4bool %45 %47
+         %46 = OpAll %bool %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %46 %51 %52
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %56
+%tint_symbol = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %63 = OpLabel
+         %64 = OpFunctionCall %void %main_1
+         %66 = OpLoad %v4float %x_GLF_color
+         %67 = OpCompositeConstruct %main_out %66
+         %65 = OpFunctionCall %void %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8168671
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  threeandfour : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  v = vec4<f32>(2.0, 3.0, 4.0, 5.0);
+  let x_40 : f32 = x_6.threeandfour.y;
+  let x_42 : vec2<f32> = select(vec2<f32>(2.0, 6.0), vec2<f32>(1.0, x_40), vec2<bool>(true, false));
+  let x_43 : vec4<f32> = v;
+  v = vec4<f32>(x_42.x, x_42.y, x_43.z, x_43.w);
+  let x_45 : vec4<f32> = v;
+  if (all((x_45 == vec4<f32>(1.0, 6.0, 4.0, 5.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm
new file mode 100644
index 0000000..5c12018
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm
@@ -0,0 +1,51 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %12 = OpConstantComposite %v2float %float_1 %float_1
+    %float_2 = OpConstant %float 2
+         %14 = OpConstantComposite %v2float %float_2 %float_2
+         %15 = OpConstantComposite %v4float %float_1 %float_1 %float_2 %float_2
+       %bool = OpTypeBool
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %20 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %6
+         %22 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+         %23 = OpLoad %v4float %v
+         %24 = OpVectorShuffle %v4float %23 %12 4 5 2 3
+               OpStore %v %24
+         %25 = OpLoad %v4float %v
+         %26 = OpVectorShuffle %v4float %25 %14 0 1 4 5
+               OpStore %v %26
+         %27 = OpLoad %v4float %v
+         %28 = OpFOrdEqual %v4bool %27 %15
+         %29 = OpAll %bool %28
+               OpSelectionMerge %30 None
+               OpBranchConditional %29 %31 %32
+         %31 = OpLabel
+               OpStore %_GLF_color %20
+               OpBranch %30
+         %32 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %30
+         %30 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..274014d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,29 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float4 x_23 = v;
+  v = float4(float2(1.0f, 1.0f).x, float2(1.0f, 1.0f).y, x_23.z, x_23.w);
+  const float4 x_25 = v;
+  v = float4(x_25.x, x_25.y, float2(2.0f, 2.0f).x, float2(2.0f, 2.0f).y);
+  if (all((v == float4(1.0f, 1.0f, 2.0f, 2.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..df1620d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float4 const x_23 = v;
+  v = float4(float2(1.0f, 1.0f).x, float2(1.0f, 1.0f).y, x_23.z, x_23.w);
+  float4 const x_25 = v;
+  v = float4(x_25.x, x_25.y, float2(2.0f, 2.0f).x, float2(2.0f, 2.0f).y);
+  float4 const x_27 = v;
+  if (all((x_27 == float4(1.0f, 1.0f, 2.0f, 2.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e87aa5b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,89 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %17 = OpConstantComposite %v2float %float_1 %float_1
+    %float_2 = OpConstant %float 2
+         %27 = OpConstantComposite %v2float %float_2 %float_2
+       %bool = OpTypeBool
+         %34 = OpConstantComposite %v4float %float_1 %float_1 %float_2 %float_2
+     %v4bool = OpTypeVector %bool 4
+    %float_0 = OpConstant %float 0
+         %41 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %43 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %5
+         %14 = OpLoad %v4float %v
+         %18 = OpCompositeExtract %float %17 0
+         %19 = OpCompositeExtract %float %17 1
+         %20 = OpCompositeExtract %float %14 2
+         %21 = OpCompositeExtract %float %14 3
+         %22 = OpCompositeConstruct %v4float %18 %19 %20 %21
+               OpStore %v %22
+         %23 = OpLoad %v4float %v
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %28 = OpCompositeExtract %float %27 0
+         %29 = OpCompositeExtract %float %27 1
+         %30 = OpCompositeConstruct %v4float %24 %25 %28 %29
+               OpStore %v %30
+         %31 = OpLoad %v4float %v
+         %35 = OpFOrdEqual %v4bool %31 %34
+         %32 = OpAll %bool %35
+               OpSelectionMerge %37 None
+               OpBranchConditional %32 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %41
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %43
+%tint_symbol = OpFunctionParameter %main_out
+         %47 = OpLabel
+         %48 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %48
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %main_1
+         %53 = OpLoad %v4float %x_GLF_color
+         %54 = OpCompositeConstruct %main_out %53
+         %52 = OpFunctionCall %void %tint_symbol_2 %54
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..13ebbb0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_23 : vec4<f32> = v;
+  v = vec4<f32>(vec2<f32>(1.0, 1.0).x, vec2<f32>(1.0, 1.0).y, x_23.z, x_23.w);
+  let x_25 : vec4<f32> = v;
+  v = vec4<f32>(x_25.x, x_25.y, vec2<f32>(2.0, 2.0).x, vec2<f32>(2.0, 2.0).y);
+  let x_27 : vec4<f32> = v;
+  if (all((x_27 == vec4<f32>(1.0, 1.0, 2.0, 2.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
new file mode 100644
index 0000000..13ebbb0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
@@ -0,0 +1,27 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_23 : vec4<f32> = v;
+  v = vec4<f32>(vec2<f32>(1.0, 1.0).x, vec2<f32>(1.0, 1.0).y, x_23.z, x_23.w);
+  let x_25 : vec4<f32> = v;
+  v = vec4<f32>(x_25.x, x_25.y, vec2<f32>(2.0, 2.0).x, vec2<f32>(2.0, 2.0).y);
+  let x_27 : vec4<f32> = v;
+  if (all((x_27 == vec4<f32>(1.0, 1.0, 2.0, 2.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..274014d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,29 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float4 x_23 = v;
+  v = float4(float2(1.0f, 1.0f).x, float2(1.0f, 1.0f).y, x_23.z, x_23.w);
+  const float4 x_25 = v;
+  v = float4(x_25.x, x_25.y, float2(2.0f, 2.0f).x, float2(2.0f, 2.0f).y);
+  if (all((v == float4(1.0f, 1.0f, 2.0f, 2.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..df1620d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float4 const x_23 = v;
+  v = float4(float2(1.0f, 1.0f).x, float2(1.0f, 1.0f).y, x_23.z, x_23.w);
+  float4 const x_25 = v;
+  v = float4(x_25.x, x_25.y, float2(2.0f, 2.0f).x, float2(2.0f, 2.0f).y);
+  float4 const x_27 = v;
+  if (all((x_27 == float4(1.0f, 1.0f, 2.0f, 2.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e87aa5b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,89 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %17 = OpConstantComposite %v2float %float_1 %float_1
+    %float_2 = OpConstant %float 2
+         %27 = OpConstantComposite %v2float %float_2 %float_2
+       %bool = OpTypeBool
+         %34 = OpConstantComposite %v4float %float_1 %float_1 %float_2 %float_2
+     %v4bool = OpTypeVector %bool 4
+    %float_0 = OpConstant %float 0
+         %41 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %43 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %5
+         %14 = OpLoad %v4float %v
+         %18 = OpCompositeExtract %float %17 0
+         %19 = OpCompositeExtract %float %17 1
+         %20 = OpCompositeExtract %float %14 2
+         %21 = OpCompositeExtract %float %14 3
+         %22 = OpCompositeConstruct %v4float %18 %19 %20 %21
+               OpStore %v %22
+         %23 = OpLoad %v4float %v
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %28 = OpCompositeExtract %float %27 0
+         %29 = OpCompositeExtract %float %27 1
+         %30 = OpCompositeConstruct %v4float %24 %25 %28 %29
+               OpStore %v %30
+         %31 = OpLoad %v4float %v
+         %35 = OpFOrdEqual %v4bool %31 %34
+         %32 = OpAll %bool %35
+               OpSelectionMerge %37 None
+               OpBranchConditional %32 %38 %39
+         %38 = OpLabel
+               OpStore %x_GLF_color %41
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %x_GLF_color %42
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %43
+%tint_symbol = OpFunctionParameter %main_out
+         %47 = OpLabel
+         %48 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %48
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %main_1
+         %53 = OpLoad %v4float %x_GLF_color
+         %54 = OpCompositeConstruct %main_out %53
+         %52 = OpFunctionCall %void %tint_symbol_2 %54
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..13ebbb0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_23 : vec4<f32> = v;
+  v = vec4<f32>(vec2<f32>(1.0, 1.0).x, vec2<f32>(1.0, 1.0).y, x_23.z, x_23.w);
+  let x_25 : vec4<f32> = v;
+  v = vec4<f32>(x_25.x, x_25.y, vec2<f32>(2.0, 2.0).x, vec2<f32>(2.0, 2.0).y);
+  let x_27 : vec4<f32> = v;
+  if (all((x_27 == vec4<f32>(1.0, 1.0, 2.0, 2.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm
new file mode 100644
index 0000000..8876c35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm
@@ -0,0 +1,79 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zeroOne"
+               OpName %_ ""
+               OpName %d "d"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %15 = OpConstantComposite %v2float %float_2 %float_3
+    %float_4 = OpConstant %float 4
+    %float_5 = OpConstant %float 5
+         %18 = OpConstantComposite %v2float %float_4 %float_5
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %24 = OpConstantComposite %v2float %float_2 %float_5
+%float_0_100000001 = OpConstant %float 0.100000001
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+    %float_1 = OpConstant %float 1
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %35 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function
+          %d = OpVariable %_ptr_Function_float Function
+         %36 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %37 = OpLoad %v2float %36
+         %38 = OpExtInst %v2float %1 FMix %15 %18 %37
+               OpStore %v %38
+         %39 = OpLoad %v2float %v
+         %40 = OpExtInst %float %1 Distance %39 %24
+               OpStore %d %40
+         %41 = OpLoad %float %d
+         %42 = OpFOrdLessThan %bool %41 %float_0_100000001
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %47 = OpLoad %float %46
+         %48 = OpFSub %float %47 %float_1
+         %49 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %50 = OpLoad %float %49
+         %51 = OpFSub %float %50 %float_5
+         %52 = OpCompositeConstruct %v4float %48 %51 %float_0 %float_1
+               OpStore %_GLF_color %52
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %_GLF_color %34
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..037715d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v = float2(0.0f, 0.0f);
+  float d = 0.0f;
+  const float2 x_37 = asfloat(x_6[0].xy);
+  v = lerp(float2(2.0f, 3.0f), float2(4.0f, 5.0f), x_37);
+  d = distance(v, float2(2.0f, 5.0f));
+  if ((d < 0.100000001f)) {
+    const float x_47 = v.x;
+    const float x_50 = v.y;
+    x_GLF_color = float4((x_47 - 1.0f), (x_50 - 5.0f), 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bea0ac6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 zeroOne;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 v = 0.0f;
+  float d = 0.0f;
+  float2 const x_37 = x_6.zeroOne;
+  v = mix(float2(2.0f, 3.0f), float2(4.0f, 5.0f), x_37);
+  float2 const x_39 = v;
+  d = distance(x_39, float2(2.0f, 5.0f));
+  float const x_41 = d;
+  if ((x_41 < 0.100000001f)) {
+    float const x_47 = v.x;
+    float const x_50 = v.y;
+    *(tint_symbol_4) = float4((x_47 - 1.0f), (x_50 - 5.0f), 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..311c2d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zeroOne"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %d "d"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %31 = OpConstantComposite %v2float %float_2 %float_3
+    %float_4 = OpConstant %float 4
+    %float_5 = OpConstant %float 5
+         %34 = OpConstantComposite %v2float %float_4 %float_5
+         %37 = OpConstantComposite %v2float %float_2 %float_5
+%float_0_100000001 = OpConstant %float 0.100000001
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %18
+          %d = OpVariable %_ptr_Function_float Function %21
+         %25 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %26 = OpLoad %v2float %25
+         %27 = OpExtInst %v2float %28 FMix %31 %34 %26
+               OpStore %v %27
+         %35 = OpLoad %v2float %v
+         %36 = OpExtInst %float %28 Distance %35 %37
+               OpStore %d %36
+         %38 = OpLoad %float %d
+         %40 = OpFOrdLessThan %bool %38 %float_0_100000001
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %46 = OpLoad %float %45
+         %48 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %49 = OpLoad %float %48
+         %51 = OpFSub %float %46 %float_1
+         %52 = OpFSub %float %49 %float_5
+         %54 = OpCompositeConstruct %v4float %51 %52 %float_0 %float_1
+               OpStore %x_GLF_color %54
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %56
+%tint_symbol = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %63 = OpLabel
+         %64 = OpFunctionCall %void %main_1
+         %66 = OpLoad %v4float %x_GLF_color
+         %67 = OpCompositeConstruct %main_out %66
+         %65 = OpFunctionCall %void %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d0d096b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,37 @@
+[[block]]
+struct buf0 {
+  zeroOne : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  var d : f32;
+  let x_37 : vec2<f32> = x_6.zeroOne;
+  v = mix(vec2<f32>(2.0, 3.0), vec2<f32>(4.0, 5.0), x_37);
+  let x_39 : vec2<f32> = v;
+  d = distance(x_39, vec2<f32>(2.0, 5.0));
+  let x_41 : f32 = d;
+  if ((x_41 < 0.100000001)) {
+    let x_47 : f32 = v.x;
+    let x_50 : f32 = v.y;
+    x_GLF_color = vec4<f32>((x_47 - 1.0), (x_50 - 5.0), 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
new file mode 100644
index 0000000..d0d096b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
@@ -0,0 +1,37 @@
+[[block]]
+struct buf0 {
+  zeroOne : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  var d : f32;
+  let x_37 : vec2<f32> = x_6.zeroOne;
+  v = mix(vec2<f32>(2.0, 3.0), vec2<f32>(4.0, 5.0), x_37);
+  let x_39 : vec2<f32> = v;
+  d = distance(x_39, vec2<f32>(2.0, 5.0));
+  let x_41 : f32 = d;
+  if ((x_41 < 0.100000001)) {
+    let x_47 : f32 = v.x;
+    let x_50 : f32 = v.y;
+    x_GLF_color = vec4<f32>((x_47 - 1.0), (x_50 - 5.0), 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..037715d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v = float2(0.0f, 0.0f);
+  float d = 0.0f;
+  const float2 x_37 = asfloat(x_6[0].xy);
+  v = lerp(float2(2.0f, 3.0f), float2(4.0f, 5.0f), x_37);
+  d = distance(v, float2(2.0f, 5.0f));
+  if ((d < 0.100000001f)) {
+    const float x_47 = v.x;
+    const float x_50 = v.y;
+    x_GLF_color = float4((x_47 - 1.0f), (x_50 - 5.0f), 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..bea0ac6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 zeroOne;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 v = 0.0f;
+  float d = 0.0f;
+  float2 const x_37 = x_6.zeroOne;
+  v = mix(float2(2.0f, 3.0f), float2(4.0f, 5.0f), x_37);
+  float2 const x_39 = v;
+  d = distance(x_39, float2(2.0f, 5.0f));
+  float const x_41 = d;
+  if ((x_41 < 0.100000001f)) {
+    float const x_47 = v.x;
+    float const x_50 = v.y;
+    *(tint_symbol_4) = float4((x_47 - 1.0f), (x_50 - 5.0f), 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..311c2d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zeroOne"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %d "d"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %31 = OpConstantComposite %v2float %float_2 %float_3
+    %float_4 = OpConstant %float 4
+    %float_5 = OpConstant %float 5
+         %34 = OpConstantComposite %v2float %float_4 %float_5
+         %37 = OpConstantComposite %v2float %float_2 %float_5
+%float_0_100000001 = OpConstant %float 0.100000001
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %18
+          %d = OpVariable %_ptr_Function_float Function %21
+         %25 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %26 = OpLoad %v2float %25
+         %27 = OpExtInst %v2float %28 FMix %31 %34 %26
+               OpStore %v %27
+         %35 = OpLoad %v2float %v
+         %36 = OpExtInst %float %28 Distance %35 %37
+               OpStore %d %36
+         %38 = OpLoad %float %d
+         %40 = OpFOrdLessThan %bool %38 %float_0_100000001
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %46 = OpLoad %float %45
+         %48 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %49 = OpLoad %float %48
+         %51 = OpFSub %float %46 %float_1
+         %52 = OpFSub %float %49 %float_5
+         %54 = OpCompositeConstruct %v4float %51 %52 %float_0 %float_1
+               OpStore %x_GLF_color %54
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %56
+%tint_symbol = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %63 = OpLabel
+         %64 = OpFunctionCall %void %main_1
+         %66 = OpLoad %v4float %x_GLF_color
+         %67 = OpCompositeConstruct %main_out %66
+         %65 = OpFunctionCall %void %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d0d096b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,37 @@
+[[block]]
+struct buf0 {
+  zeroOne : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  var d : f32;
+  let x_37 : vec2<f32> = x_6.zeroOne;
+  v = mix(vec2<f32>(2.0, 3.0), vec2<f32>(4.0, 5.0), x_37);
+  let x_39 : vec2<f32> = v;
+  d = distance(x_39, vec2<f32>(2.0, 5.0));
+  let x_41 : f32 = d;
+  if ((x_41 < 0.100000001)) {
+    let x_47 : f32 = v.x;
+    let x_50 : f32 = v.y;
+    x_GLF_color = vec4<f32>((x_47 - 1.0), (x_50 - 5.0), 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm
new file mode 100644
index 0000000..183b491
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm
@@ -0,0 +1,100 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %v2int = OpTypeVector %int 2
+     %uint_1 = OpConstant %uint 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %30 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function__arr_int_uint_2 Function
+         %31 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %i %32
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %int %i
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpSLessThan %bool %37 %39
+               OpBranchConditional %40 %41 %34
+         %41 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %46 = OpLoad %int %45
+         %47 = OpCompositeConstruct %v2int %int_3 %46
+         %48 = OpCompositeConstruct %v2int %44 %44
+         %49 = OpSMod %v2int %48 %47
+         %50 = OpCompositeExtract %int %49 1
+         %51 = OpCompositeConstruct %_arr_int_uint_2 %43 %50
+               OpStore %a %51
+               OpBranch %35
+         %35 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %33
+         %34 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_int %a %55
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Function_int %a %66
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpCompositeConstruct %v4float %58 %61 %64 %69
+               OpStore %_GLF_color %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2d00ef0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,50 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int a[2] = (int[2])0;
+  const int x_32 = asint(x_6[2].x);
+  i = x_32;
+  while (true) {
+    const int x_37 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_39 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_37 < x_39)) {
+    } else {
+      break;
+    }
+    const int x_43 = asint(x_6[1].x);
+    const int x_44 = i;
+    const int x_46 = asint(x_6[3].x);
+    const int tint_symbol_3[2] = {x_43, (int2(x_44, x_44) % int2(3, x_46)).y};
+    a = tint_symbol_3;
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_55 = asint(x_6[2].x);
+  const int x_57 = a[x_55];
+  const int x_60 = asint(x_6[1].x);
+  const int x_63 = asint(x_6[1].x);
+  const int x_66 = asint(x_6[2].x);
+  const int x_68 = a[x_66];
+  x_GLF_color = float4(float(x_57), float(x_60), float(x_63), float(x_68));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e614cff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  int i = 0;
+  tint_array_wrapper_1 a = {};
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_32;
+  while (true) {
+    int const x_37 = i;
+    int const x_39 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_37 < x_39)) {
+    } else {
+      break;
+    }
+    int const x_43 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_44 = i;
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_43, ((int2(x_44, x_44) % int2(3, x_46))).y}};
+    a = tint_symbol_3;
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  int const x_55 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_57 = a.arr[x_55];
+  int const x_60 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_63 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_68 = a.arr[x_66];
+  *(tint_symbol_5) = float4(float(x_57), float(x_60), float(x_63), float(x_68));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0d3cc7f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,139 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %26 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %v2int = OpTypeVector %int 2
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %a = OpVariable %_ptr_Function__arr_int_uint_2 Function %26
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %31 = OpLoad %int %30
+               OpStore %i %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpSLessThan %bool %36 %39
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+               OpBranch %42
+         %44 = OpLabel
+               OpBranch %33
+         %42 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %51 = OpLoad %int %50
+         %53 = OpCompositeConstruct %v2int %48 %48
+         %54 = OpCompositeConstruct %v2int %int_3 %51
+         %55 = OpSMod %v2int %53 %54
+         %56 = OpCompositeExtract %int %55 1
+         %57 = OpCompositeConstruct %_arr_int_uint_2 %47 %56
+               OpStore %a %57
+               OpBranch %34
+         %34 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %32
+         %33 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Function_int %a %61
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Function_int %a %69
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %63
+         %73 = OpConvertSToF %float %65
+         %74 = OpConvertSToF %float %67
+         %75 = OpConvertSToF %float %71
+         %76 = OpCompositeConstruct %v4float %72 %73 %74 %75
+               OpStore %x_GLF_color %76
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d60c969
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,53 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var a : array<i32, 2>;
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_32;
+  loop {
+    let x_37 : i32 = i;
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_37 < x_39)) {
+    } else {
+      break;
+    }
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_44 : i32 = i;
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[3];
+    a = array<i32, 2>(x_43, ((vec2<i32>(x_44, x_44) % vec2<i32>(3, x_46))).y);
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_55 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_57 : i32 = a[x_55];
+  let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_68 : i32 = a[x_66];
+  x_GLF_color = vec4<f32>(f32(x_57), f32(x_60), f32(x_63), f32(x_68));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
new file mode 100644
index 0000000..d60c969
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
@@ -0,0 +1,53 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var a : array<i32, 2>;
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_32;
+  loop {
+    let x_37 : i32 = i;
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_37 < x_39)) {
+    } else {
+      break;
+    }
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_44 : i32 = i;
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[3];
+    a = array<i32, 2>(x_43, ((vec2<i32>(x_44, x_44) % vec2<i32>(3, x_46))).y);
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_55 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_57 : i32 = a[x_55];
+  let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_68 : i32 = a[x_66];
+  x_GLF_color = vec4<f32>(f32(x_57), f32(x_60), f32(x_63), f32(x_68));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2d00ef0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,50 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int a[2] = (int[2])0;
+  const int x_32 = asint(x_6[2].x);
+  i = x_32;
+  while (true) {
+    const int x_37 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_39 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_37 < x_39)) {
+    } else {
+      break;
+    }
+    const int x_43 = asint(x_6[1].x);
+    const int x_44 = i;
+    const int x_46 = asint(x_6[3].x);
+    const int tint_symbol_3[2] = {x_43, (int2(x_44, x_44) % int2(3, x_46)).y};
+    a = tint_symbol_3;
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_55 = asint(x_6[2].x);
+  const int x_57 = a[x_55];
+  const int x_60 = asint(x_6[1].x);
+  const int x_63 = asint(x_6[1].x);
+  const int x_66 = asint(x_6[2].x);
+  const int x_68 = a[x_66];
+  x_GLF_color = float4(float(x_57), float(x_60), float(x_63), float(x_68));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e614cff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  int i = 0;
+  tint_array_wrapper_1 a = {};
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_32;
+  while (true) {
+    int const x_37 = i;
+    int const x_39 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_37 < x_39)) {
+    } else {
+      break;
+    }
+    int const x_43 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_44 = i;
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_43, ((int2(x_44, x_44) % int2(3, x_46))).y}};
+    a = tint_symbol_3;
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  int const x_55 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_57 = a.arr[x_55];
+  int const x_60 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_63 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_68 = a.arr[x_66];
+  *(tint_symbol_5) = float4(float(x_57), float(x_60), float(x_63), float(x_68));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0d3cc7f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,139 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %26 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %v2int = OpTypeVector %int 2
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %a = OpVariable %_ptr_Function__arr_int_uint_2 Function %26
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %31 = OpLoad %int %30
+               OpStore %i %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpSLessThan %bool %36 %39
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+               OpBranch %42
+         %44 = OpLabel
+               OpBranch %33
+         %42 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %51 = OpLoad %int %50
+         %53 = OpCompositeConstruct %v2int %48 %48
+         %54 = OpCompositeConstruct %v2int %int_3 %51
+         %55 = OpSMod %v2int %53 %54
+         %56 = OpCompositeExtract %int %55 1
+         %57 = OpCompositeConstruct %_arr_int_uint_2 %47 %56
+               OpStore %a %57
+               OpBranch %34
+         %34 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %32
+         %33 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Function_int %a %61
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Function_int %a %69
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %63
+         %73 = OpConvertSToF %float %65
+         %74 = OpConvertSToF %float %67
+         %75 = OpConvertSToF %float %71
+         %76 = OpCompositeConstruct %v4float %72 %73 %74 %75
+               OpStore %x_GLF_color %76
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d60c969
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,53 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var a : array<i32, 2>;
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_32;
+  loop {
+    let x_37 : i32 = i;
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_37 < x_39)) {
+    } else {
+      break;
+    }
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_44 : i32 = i;
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[3];
+    a = array<i32, 2>(x_43, ((vec2<i32>(x_44, x_44) % vec2<i32>(3, x_46))).y);
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_55 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_57 : i32 = a[x_55];
+  let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_68 : i32 = a[x_66];
+  x_GLF_color = vec4<f32>(f32(x_57), f32(x_60), f32(x_63), f32(x_68));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm
new file mode 100644
index 0000000..1ac8707
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm
@@ -0,0 +1,132 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %arr "arr"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+%_ptr_Function_int = OpTypePointer Function %int
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %13
+         %34 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_float_uint_3 Function
+          %i = OpVariable %_ptr_Function_int Function
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %40 = OpLoad %float %39
+         %41 = OpCompositeConstruct %_arr_float_uint_3 %36 %38 %40
+               OpStore %arr %41
+               OpStore %i %int_1
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %i
+         %47 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpExtInst %int %1 SMin %48 %int_3
+         %50 = OpSLessThan %bool %46 %49
+               OpBranchConditional %50 %51 %43
+         %51 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Function_float %arr %53
+         %57 = OpLoad %float %56
+         %58 = OpFAdd %float %57 %55
+         %59 = OpAccessChain %_ptr_Function_float %arr %53
+               OpStore %59 %58
+               OpBranch %44
+         %44 = OpLabel
+         %60 = OpLoad %int %i
+         %61 = OpIAdd %int %60 %int_1
+               OpStore %i %61
+               OpBranch %42
+         %43 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Function_float %arr %63
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %67 = OpLoad %float %66
+         %68 = OpFOrdEqual %bool %65 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %76
+         %78 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %79
+         %81 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %82
+         %84 = OpCompositeConstruct %v4float %74 %77 %80 %83
+               OpStore %_GLF_color %84
+               OpBranch %69
+         %71 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpCompositeConstruct %v4float %87 %87 %87 %87
+               OpStore %_GLF_color %88
+               OpBranch %69
+         %69 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..15bbbf8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,67 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float arr[3] = (float[3])0;
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_38 = asfloat(x_6[1].x);
+  const float x_40 = asfloat(x_6[2].x);
+  const float tint_symbol_4[3] = {x_36, x_38, x_40};
+  arr = tint_symbol_4;
+  i = 1;
+  while (true) {
+    const int x_46 = i;
+    const int x_48 = asint(x_9[2].x);
+    if ((x_46 < min(x_48, 3))) {
+    } else {
+      break;
+    }
+    const int x_53 = asint(x_9[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_55 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_57 = arr[x_53];
+    arr[x_53] = (x_57 + x_55);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_63 = asint(x_9[2].x);
+  const float x_65 = arr[x_63];
+  const float x_67 = asfloat(x_6[3].x);
+  if ((x_65 == x_67)) {
+    const int x_73 = asint(x_9[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_76 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_79 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_82 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_73), float(x_76), float(x_79), float(x_82));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_86 = asint(x_9[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_87 = float(x_86);
+    x_GLF_color = float4(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..cd5d0e3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 arr = {};
+  int i = 0;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_36, x_38, x_40}};
+  arr = tint_symbol_3;
+  i = 1;
+  while (true) {
+    int const x_46 = i;
+    int const x_48 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_46 < min(x_48, 3))) {
+    } else {
+      break;
+    }
+    int const x_53 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_55 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_57 = arr.arr[x_53];
+    arr.arr[x_53] = (x_57 + x_55);
+    {
+      int const x_60 = i;
+      i = (x_60 + 1);
+    }
+  }
+  int const x_63 = x_9.x_GLF_uniform_int_values.arr[2].el;
+  float const x_65 = arr.arr[x_63];
+  float const x_67 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  if ((x_65 == x_67)) {
+    int const x_73 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_76 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_79 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_82 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_5) = float4(float(x_73), float(x_76), float(x_79), float(x_82));
+  } else {
+    int const x_86 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    float const x_87 = float(x_86);
+    *(tint_symbol_5) = float4(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4323c1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,174 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 109
+; Schema: 0
+               OpCapability Shader
+         %52 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+         %27 = OpConstantNull %_arr_float_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+         %97 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_float_uint_3 Function %27
+          %i = OpVariable %_ptr_Function_int Function %30
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %35 = OpLoad %float %34
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %38 = OpLoad %float %37
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %41 = OpLoad %float %40
+         %42 = OpCompositeConstruct %_arr_float_uint_3 %35 %38 %41
+               OpStore %arr %42
+               OpStore %i %int_1
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %47 = OpLoad %int %i
+         %49 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %50 = OpLoad %int %49
+         %51 = OpExtInst %int %52 SMin %50 %int_3
+         %54 = OpSLessThan %bool %47 %51
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %58
+         %57 = OpLabel
+               OpBranch %56
+         %58 = OpLabel
+               OpBranch %44
+         %56 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %62 = OpLoad %float %61
+         %64 = OpAccessChain %_ptr_Function_float %arr %60
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Function_float %arr %60
+         %67 = OpFAdd %float %65 %62
+               OpStore %66 %67
+               OpBranch %45
+         %45 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %i %69
+               OpBranch %43
+         %44 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Function_float %arr %71
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %75 = OpLoad %float %74
+         %76 = OpFOrdEqual %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %81
+         %89 = OpConvertSToF %float %83
+         %90 = OpConvertSToF %float %85
+         %91 = OpConvertSToF %float %87
+         %92 = OpCompositeConstruct %v4float %88 %89 %90 %91
+               OpStore %x_GLF_color %92
+               OpBranch %77
+         %79 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpCompositeConstruct %v4float %95 %95 %95 %95
+               OpStore %x_GLF_color %96
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %97
+%tint_symbol = OpFunctionParameter %main_out
+        %101 = OpLabel
+        %102 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %102
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %104 = OpLabel
+        %105 = OpFunctionCall %void %main_1
+        %107 = OpLoad %v4float %x_GLF_color
+        %108 = OpCompositeConstruct %main_out %107
+        %106 = OpFunctionCall %void %tint_symbol_2 %108
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..acc05e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,72 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<f32, 3>;
+  var i : i32;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[2];
+  arr = array<f32, 3>(x_36, x_38, x_40);
+  i = 1;
+  loop {
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_9.x_GLF_uniform_int_values[2];
+    if ((x_46 < min(x_48, 3))) {
+    } else {
+      break;
+    }
+    let x_53 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_55 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_57 : f32 = arr[x_53];
+    arr[x_53] = (x_57 + x_55);
+
+    continuing {
+      let x_60 : i32 = i;
+      i = (x_60 + 1);
+    }
+  }
+  let x_63 : i32 = x_9.x_GLF_uniform_int_values[2];
+  let x_65 : f32 = arr[x_63];
+  let x_67 : f32 = x_6.x_GLF_uniform_float_values[3];
+  if ((x_65 == x_67)) {
+    let x_73 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_76 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_79 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_82 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_73), f32(x_76), f32(x_79), f32(x_82));
+  } else {
+    let x_86 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_87 : f32 = f32(x_86);
+    x_GLF_color = vec4<f32>(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
new file mode 100644
index 0000000..acc05e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
@@ -0,0 +1,72 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<f32, 3>;
+  var i : i32;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[2];
+  arr = array<f32, 3>(x_36, x_38, x_40);
+  i = 1;
+  loop {
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_9.x_GLF_uniform_int_values[2];
+    if ((x_46 < min(x_48, 3))) {
+    } else {
+      break;
+    }
+    let x_53 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_55 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_57 : f32 = arr[x_53];
+    arr[x_53] = (x_57 + x_55);
+
+    continuing {
+      let x_60 : i32 = i;
+      i = (x_60 + 1);
+    }
+  }
+  let x_63 : i32 = x_9.x_GLF_uniform_int_values[2];
+  let x_65 : f32 = arr[x_63];
+  let x_67 : f32 = x_6.x_GLF_uniform_float_values[3];
+  if ((x_65 == x_67)) {
+    let x_73 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_76 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_79 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_82 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_73), f32(x_76), f32(x_79), f32(x_82));
+  } else {
+    let x_86 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_87 : f32 = f32(x_86);
+    x_GLF_color = vec4<f32>(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..15bbbf8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,67 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float arr[3] = (float[3])0;
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_38 = asfloat(x_6[1].x);
+  const float x_40 = asfloat(x_6[2].x);
+  const float tint_symbol_4[3] = {x_36, x_38, x_40};
+  arr = tint_symbol_4;
+  i = 1;
+  while (true) {
+    const int x_46 = i;
+    const int x_48 = asint(x_9[2].x);
+    if ((x_46 < min(x_48, 3))) {
+    } else {
+      break;
+    }
+    const int x_53 = asint(x_9[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_55 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_57 = arr[x_53];
+    arr[x_53] = (x_57 + x_55);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_63 = asint(x_9[2].x);
+  const float x_65 = arr[x_63];
+  const float x_67 = asfloat(x_6[3].x);
+  if ((x_65 == x_67)) {
+    const int x_73 = asint(x_9[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_76 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_79 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_82 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_73), float(x_76), float(x_79), float(x_82));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_86 = asint(x_9[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_87 = float(x_86);
+    x_GLF_color = float4(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..cd5d0e3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 arr = {};
+  int i = 0;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_36, x_38, x_40}};
+  arr = tint_symbol_3;
+  i = 1;
+  while (true) {
+    int const x_46 = i;
+    int const x_48 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_46 < min(x_48, 3))) {
+    } else {
+      break;
+    }
+    int const x_53 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_55 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_57 = arr.arr[x_53];
+    arr.arr[x_53] = (x_57 + x_55);
+    {
+      int const x_60 = i;
+      i = (x_60 + 1);
+    }
+  }
+  int const x_63 = x_9.x_GLF_uniform_int_values.arr[2].el;
+  float const x_65 = arr.arr[x_63];
+  float const x_67 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  if ((x_65 == x_67)) {
+    int const x_73 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_76 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_79 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_82 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_5) = float4(float(x_73), float(x_76), float(x_79), float(x_82));
+  } else {
+    int const x_86 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    float const x_87 = float(x_86);
+    *(tint_symbol_5) = float4(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4323c1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,174 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 109
+; Schema: 0
+               OpCapability Shader
+         %52 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+         %27 = OpConstantNull %_arr_float_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+         %97 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_float_uint_3 Function %27
+          %i = OpVariable %_ptr_Function_int Function %30
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %35 = OpLoad %float %34
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %38 = OpLoad %float %37
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %41 = OpLoad %float %40
+         %42 = OpCompositeConstruct %_arr_float_uint_3 %35 %38 %41
+               OpStore %arr %42
+               OpStore %i %int_1
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %47 = OpLoad %int %i
+         %49 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %50 = OpLoad %int %49
+         %51 = OpExtInst %int %52 SMin %50 %int_3
+         %54 = OpSLessThan %bool %47 %51
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %58
+         %57 = OpLabel
+               OpBranch %56
+         %58 = OpLabel
+               OpBranch %44
+         %56 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %62 = OpLoad %float %61
+         %64 = OpAccessChain %_ptr_Function_float %arr %60
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Function_float %arr %60
+         %67 = OpFAdd %float %65 %62
+               OpStore %66 %67
+               OpBranch %45
+         %45 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %i %69
+               OpBranch %43
+         %44 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Function_float %arr %71
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %75 = OpLoad %float %74
+         %76 = OpFOrdEqual %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %81
+         %89 = OpConvertSToF %float %83
+         %90 = OpConvertSToF %float %85
+         %91 = OpConvertSToF %float %87
+         %92 = OpCompositeConstruct %v4float %88 %89 %90 %91
+               OpStore %x_GLF_color %92
+               OpBranch %77
+         %79 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpCompositeConstruct %v4float %95 %95 %95 %95
+               OpStore %x_GLF_color %96
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %97
+%tint_symbol = OpFunctionParameter %main_out
+        %101 = OpLabel
+        %102 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %102
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %104 = OpLabel
+        %105 = OpFunctionCall %void %main_1
+        %107 = OpLoad %v4float %x_GLF_color
+        %108 = OpCompositeConstruct %main_out %107
+        %106 = OpFunctionCall %void %tint_symbol_2 %108
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..acc05e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,72 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<f32, 3>;
+  var i : i32;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[2];
+  arr = array<f32, 3>(x_36, x_38, x_40);
+  i = 1;
+  loop {
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_9.x_GLF_uniform_int_values[2];
+    if ((x_46 < min(x_48, 3))) {
+    } else {
+      break;
+    }
+    let x_53 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_55 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_57 : f32 = arr[x_53];
+    arr[x_53] = (x_57 + x_55);
+
+    continuing {
+      let x_60 : i32 = i;
+      i = (x_60 + 1);
+    }
+  }
+  let x_63 : i32 = x_9.x_GLF_uniform_int_values[2];
+  let x_65 : f32 = arr[x_63];
+  let x_67 : f32 = x_6.x_GLF_uniform_float_values[3];
+  if ((x_65 == x_67)) {
+    let x_73 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_76 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_79 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_82 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_73), f32(x_76), f32(x_79), f32(x_82));
+  } else {
+    let x_86 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_87 : f32 = f32(x_86);
+    x_GLF_color = vec4<f32>(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm
new file mode 100644
index 0000000..6a84984
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm
@@ -0,0 +1,107 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %24 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %26 = OpLoad %int %25
+               OpStore %a %26
+         %27 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %28 = OpLoad %int %27
+               OpStore %i %28
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpSLessThan %bool %33 %35
+               OpBranchConditional %36 %37 %30
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+               OpSelectionMerge %39 None
+               OpSwitch %38 %39 -1 %40 0 %40
+         %40 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+               OpStore %a %42
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpIAdd %int %43 %int_1
+               OpStore %i %44
+               OpBranch %29
+         %30 = OpLabel
+         %45 = OpLoad %int %a
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpIEqual %bool %45 %47
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpCompositeConstruct %v4float %54 %57 %60 %63
+               OpStore %_GLF_color %64
+               OpBranch %49
+         %51 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpCompositeConstruct %v4float %67 %67 %67 %67
+               OpStore %_GLF_color %68
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..40b4b79
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,64 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_26 = asint(x_6[2].x);
+  a = x_26;
+  const int x_28 = asint(x_6[2].x);
+  i = x_28;
+  while (true) {
+    const int x_33 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_35 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 0:
+      case -1: {
+        const int x_42 = asint(x_6[1].x);
+        a = x_42;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_45 = a;
+  const int x_47 = asint(x_6[1].x);
+  if ((x_45 == x_47)) {
+    const int x_53 = asint(x_6[1].x);
+    const int x_56 = asint(x_6[2].x);
+    const int x_59 = asint(x_6[2].x);
+    const int x_62 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_53), float(x_56), float(x_59), float(x_62));
+  } else {
+    const int x_66 = asint(x_6[2].x);
+    const float x_67 = float(x_66);
+    x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..cb70f17
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_26;
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_28;
+  while (true) {
+    int const x_33 = i;
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    int const x_38 = i;
+    switch(x_38) {
+      case 0:
+      case -1: {
+        int const x_42 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        a = x_42;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_43 = i;
+      i = (x_43 + 1);
+    }
+  }
+  int const x_45 = a;
+  int const x_47 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_45 == x_47)) {
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_59 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_53), float(x_56), float(x_59), float(x_62));
+  } else {
+    int const x_66 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_67 = float(x_66);
+    *(tint_symbol_4) = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..89156fd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 88
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %76 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %31
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+               OpSelectionMerge %44 None
+               OpSwitch %43 %45 0 %46 -1 %46
+         %46 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %49 = OpLoad %int %48
+               OpStore %a %49
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %i %51
+               OpBranch %30
+         %31 = OpLabel
+         %52 = OpLoad %int %a
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %60
+         %68 = OpConvertSToF %float %62
+         %69 = OpConvertSToF %float %64
+         %70 = OpConvertSToF %float %66
+         %71 = OpCompositeConstruct %v4float %67 %68 %69 %70
+               OpStore %x_GLF_color %71
+               OpBranch %56
+         %58 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpCompositeConstruct %v4float %74 %74 %74 %74
+               OpStore %x_GLF_color %75
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %76
+%tint_symbol = OpFunctionParameter %main_out
+         %80 = OpLabel
+         %81 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %81
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %83 = OpLabel
+         %84 = OpFunctionCall %void %main_1
+         %86 = OpLoad %v4float %x_GLF_color
+         %87 = OpCompositeConstruct %main_out %86
+         %85 = OpFunctionCall %void %tint_symbol_2 %87
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5bce8a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,66 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_26;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_28;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    switch(x_38) {
+      case 0, -1: {
+        let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+        a = x_42;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_43 : i32 = i;
+      i = (x_43 + 1);
+    }
+  }
+  let x_45 : i32 = a;
+  let x_47 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_45 == x_47)) {
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_53), f32(x_56), f32(x_59), f32(x_62));
+  } else {
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : f32 = f32(x_66);
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
new file mode 100644
index 0000000..5bce8a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
@@ -0,0 +1,66 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_26;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_28;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    switch(x_38) {
+      case 0, -1: {
+        let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+        a = x_42;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_43 : i32 = i;
+      i = (x_43 + 1);
+    }
+  }
+  let x_45 : i32 = a;
+  let x_47 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_45 == x_47)) {
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_53), f32(x_56), f32(x_59), f32(x_62));
+  } else {
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : f32 = f32(x_66);
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..40b4b79
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,64 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_26 = asint(x_6[2].x);
+  a = x_26;
+  const int x_28 = asint(x_6[2].x);
+  i = x_28;
+  while (true) {
+    const int x_33 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_35 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 0:
+      case -1: {
+        const int x_42 = asint(x_6[1].x);
+        a = x_42;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_45 = a;
+  const int x_47 = asint(x_6[1].x);
+  if ((x_45 == x_47)) {
+    const int x_53 = asint(x_6[1].x);
+    const int x_56 = asint(x_6[2].x);
+    const int x_59 = asint(x_6[2].x);
+    const int x_62 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_53), float(x_56), float(x_59), float(x_62));
+  } else {
+    const int x_66 = asint(x_6[2].x);
+    const float x_67 = float(x_66);
+    x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..cb70f17
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_26;
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_28;
+  while (true) {
+    int const x_33 = i;
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    int const x_38 = i;
+    switch(x_38) {
+      case 0:
+      case -1: {
+        int const x_42 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        a = x_42;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_43 = i;
+      i = (x_43 + 1);
+    }
+  }
+  int const x_45 = a;
+  int const x_47 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_45 == x_47)) {
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_59 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_53), float(x_56), float(x_59), float(x_62));
+  } else {
+    int const x_66 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_67 = float(x_66);
+    *(tint_symbol_4) = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..89156fd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 88
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %76 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %31
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+               OpSelectionMerge %44 None
+               OpSwitch %43 %45 0 %46 -1 %46
+         %46 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %49 = OpLoad %int %48
+               OpStore %a %49
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %i %51
+               OpBranch %30
+         %31 = OpLabel
+         %52 = OpLoad %int %a
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %60
+         %68 = OpConvertSToF %float %62
+         %69 = OpConvertSToF %float %64
+         %70 = OpConvertSToF %float %66
+         %71 = OpCompositeConstruct %v4float %67 %68 %69 %70
+               OpStore %x_GLF_color %71
+               OpBranch %56
+         %58 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpCompositeConstruct %v4float %74 %74 %74 %74
+               OpStore %x_GLF_color %75
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %76
+%tint_symbol = OpFunctionParameter %main_out
+         %80 = OpLabel
+         %81 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %81
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %83 = OpLabel
+         %84 = OpFunctionCall %void %main_1
+         %86 = OpLoad %v4float %x_GLF_color
+         %87 = OpCompositeConstruct %main_out %86
+         %85 = OpFunctionCall %void %tint_symbol_2 %87
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5bce8a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,66 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_26;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_28;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_33 < x_35)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    switch(x_38) {
+      case 0, -1: {
+        let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+        a = x_42;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_43 : i32 = i;
+      i = (x_43 + 1);
+    }
+  }
+  let x_45 : i32 = a;
+  let x_47 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_45 == x_47)) {
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_53), f32(x_56), f32(x_59), f32(x_62));
+  } else {
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : f32 = f32(x_66);
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm
new file mode 100644
index 0000000..b22a5e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm
@@ -0,0 +1,97 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f0 "f0"
+               OpName %f1 "f1"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+%float_0x1_8p_128 = OpConstant %float 0x1.8p+128
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function
+         %f1 = OpVariable %_ptr_Function_float Function
+               OpStore %f0 %float_0x1_8p_128
+         %35 = OpLoad %float %f0
+         %36 = OpExtInst %float %1 Fract %35
+               OpStore %f1 %36
+         %37 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThan %bool %38 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpCompositeConstruct %v4float %47 %50 %53 %56
+               OpStore %_GLF_color %57
+               OpBranch %42
+         %44 = OpLabel
+         %58 = OpLoad %float %f1
+         %59 = OpCompositeConstruct %v4float %58 %58 %58 %58
+               OpStore %_GLF_color %59
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..8f9bef0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,50 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[2];
+};
+
+void main_1() {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  f0 = asfloat(0x7fc00000u);
+  f1 = frac(f0);
+  const float x_38 = gl_FragCoord.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_38 > x_40)) {
+    const int x_46 = asint(x_10[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_55 = asint(x_10[1].x);
+    x_GLF_color = float4(float(x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    const float x_58 = f1;
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..0fb34b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, constant buf1& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  f0 = NAN;
+  float const x_35 = f0;
+  f1 = fract(x_35);
+  float const x_38 = (*(tint_symbol_5)).x;
+  float const x_40 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_38 > x_40)) {
+    int const x_46 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_49 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_52 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_55 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_6) = float4(float(x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    float const x_58 = f1;
+    *(tint_symbol_6) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_10, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2097959
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,135 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+         %34 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %f0 "f0"
+               OpName %f1 "f1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%float_0x1_8p_128 = OpConstant %float 0x1.8p+128
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function %29
+         %f1 = OpVariable %_ptr_Function_float Function %29
+               OpStore %f0 %float_0x1_8p_128
+         %32 = OpLoad %float %f0
+         %33 = OpExtInst %float %34 Fract %32
+               OpStore %f1 %33
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %41 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdGreaterThan %bool %38 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %51
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %45
+         %47 = OpLabel
+         %63 = OpLoad %float %f1
+         %64 = OpCompositeConstruct %v4float %63 %63 %63 %63
+               OpStore %x_GLF_color %64
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..4f8be8c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn main_1() {
+  var f0 : f32;
+  var f1 : f32;
+  f0 = 0x1.8p+128;
+  let x_35 : f32 = f0;
+  f1 = fract(x_35);
+  let x_38 : f32 = gl_FragCoord.x;
+  let x_40 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_38 > x_40)) {
+    let x_46 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_49 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_55 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_46), f32(x_49), f32(x_52), f32(x_55));
+  } else {
+    let x_58 : f32 = f1;
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
new file mode 100644
index 0000000..4f8be8c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn main_1() {
+  var f0 : f32;
+  var f1 : f32;
+  f0 = 0x1.8p+128;
+  let x_35 : f32 = f0;
+  f1 = fract(x_35);
+  let x_38 : f32 = gl_FragCoord.x;
+  let x_40 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_38 > x_40)) {
+    let x_46 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_49 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_55 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_46), f32(x_49), f32(x_52), f32(x_55));
+  } else {
+    let x_58 : f32 = f1;
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..560771b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl:26:11 error: expected ';' for assignment statement
+  f0 = 0x1.8p+128;
+          ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..560771b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.msl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl:26:11 error: expected ';' for assignment statement
+  f0 = 0x1.8p+128;
+          ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..560771b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl:26:11 error: expected ';' for assignment statement
+  f0 = 0x1.8p+128;
+          ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..560771b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl:26:11 error: expected ';' for assignment statement
+  f0 = 0x1.8p+128;
+          ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm
new file mode 100644
index 0000000..a985dd6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm
@@ -0,0 +1,101 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v1 "v1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+         %23 = OpConstantComposite %v2float %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %bool = OpTypeBool
+       %main = OpFunction %void None %11
+         %28 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function
+          %b = OpVariable %_ptr_Function_v2float Function
+          %a = OpVariable %_ptr_Function_float Function
+         %29 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %30 = OpLoad %float %29
+         %31 = OpCompositeConstruct %v2float %30 %30
+               OpStore %v1 %31
+         %32 = OpLoad %v2float %v1
+         %33 = OpExtInst %v2float %1 Fract %32
+               OpStore %b %33
+         %34 = OpLoad %v2float %b
+         %35 = OpExtInst %v2float %1 SmoothStep %23 %23 %34
+         %36 = OpCompositeExtract %float %35 0
+               OpStore %a %36
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpLoad %float %a
+         %40 = OpLoad %float %a
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpCompositeConstruct %v4float %38 %39 %40 %42
+               OpStore %_GLF_color %43
+         %44 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %45 = OpLoad %float %44
+         %46 = OpFOrdLessThan %bool %45 %float_1
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %50 = OpLoad %float %49
+         %51 = OpFOrdLessThan %bool %50 %float_1
+               OpBranch %47
+         %47 = OpLabel
+         %52 = OpPhi %bool %46 %28 %51 %48
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpCompositeConstruct %v4float %57 %59 %61 %63
+               OpStore %_GLF_color %64
+               OpBranch %53
+         %55 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpCompositeConstruct %v4float %66 %66 %66 %66
+               OpStore %_GLF_color %67
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e520d49
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,60 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v1 = float2(0.0f, 0.0f);
+  float2 b = float2(0.0f, 0.0f);
+  float a = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_30 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float2(x_30, x_30);
+  b = frac(v1);
+  a = smoothstep(float2(1.0f, 1.0f), float2(1.0f, 1.0f), b).x;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_38 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_39 = a;
+  const float x_40 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  x_GLF_color = float4(x_38, x_39, x_40, x_42);
+  const float x_45 = b.x;
+  const bool x_46 = (x_45 < 1.0f);
+  x_52_phi = x_46;
+  if (x_46) {
+    const float x_50 = b.y;
+    x_51 = (x_50 < 1.0f);
+    x_52_phi = x_51;
+  }
+  if (x_52_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_57 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_59 = b.x;
+    const float x_61 = b.y;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_63 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(x_57, x_59, x_61, x_63);
+  } else {
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_66 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..18c63cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.msl
@@ -0,0 +1,67 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  float2 b = 0.0f;
+  float a = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  float const x_30 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float2(x_30, x_30);
+  float2 const x_32 = v1;
+  b = fract(x_32);
+  float2 const x_34 = b;
+  a = smoothstep(float2(1.0f, 1.0f), float2(1.0f, 1.0f), x_34).x;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_39 = a;
+  float const x_40 = a;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  *(tint_symbol_4) = float4(x_38, x_39, x_40, x_42);
+  float const x_45 = b.x;
+  bool const x_46 = (x_45 < 1.0f);
+  x_52_phi = x_46;
+  if (x_46) {
+    float const x_50 = b.y;
+    x_51 = (x_50 < 1.0f);
+    x_52_phi = x_51;
+  }
+  bool const x_52 = x_52_phi;
+  if (x_52) {
+    float const x_57 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_59 = b.x;
+    float const x_61 = b.y;
+    float const x_63 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_57, x_59, x_61, x_63);
+  } else {
+    float const x_66 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8371f68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,145 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+         %40 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %b "b"
+               OpName %a "a"
+               OpName %x_51 "x_51"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %21 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %29 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %44 = OpConstantComposite %v2float %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %78 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %21
+          %b = OpVariable %_ptr_Function_v2float Function %21
+          %a = OpVariable %_ptr_Function_float Function %25
+       %x_51 = OpVariable %_ptr_Function_bool Function %29
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %29
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpCompositeConstruct %v2float %36 %36
+               OpStore %v1 %37
+         %38 = OpLoad %v2float %v1
+         %39 = OpExtInst %v2float %40 Fract %38
+               OpStore %b %39
+         %41 = OpLoad %v2float %b
+         %42 = OpExtInst %v2float %40 SmoothStep %44 %44 %41
+         %45 = OpCompositeExtract %float %42 0
+               OpStore %a %45
+         %46 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpLoad %float %a
+         %49 = OpLoad %float %a
+         %50 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpCompositeConstruct %v4float %47 %48 %49 %51
+               OpStore %x_GLF_color %52
+         %53 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %54 = OpLoad %float %53
+         %55 = OpFOrdLessThan %bool %54 %float_1
+               OpStore %x_52_phi %55
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %59 = OpLoad %float %58
+         %60 = OpFOrdLessThan %bool %59 %float_1
+               OpStore %x_51 %60
+         %61 = OpLoad %bool %x_51
+               OpStore %x_52_phi %61
+               OpBranch %56
+         %56 = OpLabel
+         %62 = OpLoad %bool %x_52_phi
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %67 = OpLoad %float %66
+         %68 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %69 = OpLoad %float %68
+         %70 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %73 = OpLoad %float %72
+         %74 = OpCompositeConstruct %v4float %67 %69 %71 %73
+               OpStore %x_GLF_color %74
+               OpBranch %63
+         %65 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %76 = OpLoad %float %75
+         %77 = OpCompositeConstruct %v4float %76 %76 %76 %76
+               OpStore %x_GLF_color %77
+               OpBranch %63
+         %63 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %78
+%tint_symbol = OpFunctionParameter %main_out
+         %82 = OpLabel
+         %83 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %83
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %85 = OpLabel
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_2 %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..14326d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var b : vec2<f32>;
+  var a : f32;
+  var x_51 : bool;
+  var x_52_phi : bool;
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec2<f32>(x_30, x_30);
+  let x_32 : vec2<f32> = v1;
+  b = fract(x_32);
+  let x_34 : vec2<f32> = b;
+  a = smoothStep(vec2<f32>(1.0, 1.0), vec2<f32>(1.0, 1.0), x_34).x;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_39 : f32 = a;
+  let x_40 : f32 = a;
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_38, x_39, x_40, x_42);
+  let x_45 : f32 = b.x;
+  let x_46 : bool = (x_45 < 1.0);
+  x_52_phi = x_46;
+  if (x_46) {
+    let x_50 : f32 = b.y;
+    x_51 = (x_50 < 1.0);
+    x_52_phi = x_51;
+  }
+  let x_52 : bool = x_52_phi;
+  if (x_52) {
+    let x_57 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_59 : f32 = b.x;
+    let x_61 : f32 = b.y;
+    let x_63 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_57, x_59, x_61, x_63);
+  } else {
+    let x_66 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
new file mode 100644
index 0000000..14326d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var b : vec2<f32>;
+  var a : f32;
+  var x_51 : bool;
+  var x_52_phi : bool;
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec2<f32>(x_30, x_30);
+  let x_32 : vec2<f32> = v1;
+  b = fract(x_32);
+  let x_34 : vec2<f32> = b;
+  a = smoothStep(vec2<f32>(1.0, 1.0), vec2<f32>(1.0, 1.0), x_34).x;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_39 : f32 = a;
+  let x_40 : f32 = a;
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_38, x_39, x_40, x_42);
+  let x_45 : f32 = b.x;
+  let x_46 : bool = (x_45 < 1.0);
+  x_52_phi = x_46;
+  if (x_46) {
+    let x_50 : f32 = b.y;
+    x_51 = (x_50 < 1.0);
+    x_52_phi = x_51;
+  }
+  let x_52 : bool = x_52_phi;
+  if (x_52) {
+    let x_57 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_59 : f32 = b.x;
+    let x_61 : f32 = b.y;
+    let x_63 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_57, x_59, x_61, x_63);
+  } else {
+    let x_66 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e520d49
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,60 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v1 = float2(0.0f, 0.0f);
+  float2 b = float2(0.0f, 0.0f);
+  float a = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_30 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float2(x_30, x_30);
+  b = frac(v1);
+  a = smoothstep(float2(1.0f, 1.0f), float2(1.0f, 1.0f), b).x;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_38 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_39 = a;
+  const float x_40 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  x_GLF_color = float4(x_38, x_39, x_40, x_42);
+  const float x_45 = b.x;
+  const bool x_46 = (x_45 < 1.0f);
+  x_52_phi = x_46;
+  if (x_46) {
+    const float x_50 = b.y;
+    x_51 = (x_50 < 1.0f);
+    x_52_phi = x_51;
+  }
+  if (x_52_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_57 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_59 = b.x;
+    const float x_61 = b.y;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_63 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(x_57, x_59, x_61, x_63);
+  } else {
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_66 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..18c63cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.msl
@@ -0,0 +1,67 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  float2 b = 0.0f;
+  float a = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  float const x_30 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float2(x_30, x_30);
+  float2 const x_32 = v1;
+  b = fract(x_32);
+  float2 const x_34 = b;
+  a = smoothstep(float2(1.0f, 1.0f), float2(1.0f, 1.0f), x_34).x;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_39 = a;
+  float const x_40 = a;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  *(tint_symbol_4) = float4(x_38, x_39, x_40, x_42);
+  float const x_45 = b.x;
+  bool const x_46 = (x_45 < 1.0f);
+  x_52_phi = x_46;
+  if (x_46) {
+    float const x_50 = b.y;
+    x_51 = (x_50 < 1.0f);
+    x_52_phi = x_51;
+  }
+  bool const x_52 = x_52_phi;
+  if (x_52) {
+    float const x_57 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_59 = b.x;
+    float const x_61 = b.y;
+    float const x_63 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_57, x_59, x_61, x_63);
+  } else {
+    float const x_66 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8371f68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,145 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+         %40 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %b "b"
+               OpName %a "a"
+               OpName %x_51 "x_51"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %21 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %29 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %44 = OpConstantComposite %v2float %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %78 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %21
+          %b = OpVariable %_ptr_Function_v2float Function %21
+          %a = OpVariable %_ptr_Function_float Function %25
+       %x_51 = OpVariable %_ptr_Function_bool Function %29
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %29
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpCompositeConstruct %v2float %36 %36
+               OpStore %v1 %37
+         %38 = OpLoad %v2float %v1
+         %39 = OpExtInst %v2float %40 Fract %38
+               OpStore %b %39
+         %41 = OpLoad %v2float %b
+         %42 = OpExtInst %v2float %40 SmoothStep %44 %44 %41
+         %45 = OpCompositeExtract %float %42 0
+               OpStore %a %45
+         %46 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpLoad %float %a
+         %49 = OpLoad %float %a
+         %50 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpCompositeConstruct %v4float %47 %48 %49 %51
+               OpStore %x_GLF_color %52
+         %53 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %54 = OpLoad %float %53
+         %55 = OpFOrdLessThan %bool %54 %float_1
+               OpStore %x_52_phi %55
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %59 = OpLoad %float %58
+         %60 = OpFOrdLessThan %bool %59 %float_1
+               OpStore %x_51 %60
+         %61 = OpLoad %bool %x_51
+               OpStore %x_52_phi %61
+               OpBranch %56
+         %56 = OpLabel
+         %62 = OpLoad %bool %x_52_phi
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %67 = OpLoad %float %66
+         %68 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %69 = OpLoad %float %68
+         %70 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %73 = OpLoad %float %72
+         %74 = OpCompositeConstruct %v4float %67 %69 %71 %73
+               OpStore %x_GLF_color %74
+               OpBranch %63
+         %65 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %76 = OpLoad %float %75
+         %77 = OpCompositeConstruct %v4float %76 %76 %76 %76
+               OpStore %x_GLF_color %77
+               OpBranch %63
+         %63 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %78
+%tint_symbol = OpFunctionParameter %main_out
+         %82 = OpLabel
+         %83 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %83
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %85 = OpLabel
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_2 %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..14326d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var b : vec2<f32>;
+  var a : f32;
+  var x_51 : bool;
+  var x_52_phi : bool;
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec2<f32>(x_30, x_30);
+  let x_32 : vec2<f32> = v1;
+  b = fract(x_32);
+  let x_34 : vec2<f32> = b;
+  a = smoothStep(vec2<f32>(1.0, 1.0), vec2<f32>(1.0, 1.0), x_34).x;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_39 : f32 = a;
+  let x_40 : f32 = a;
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_38, x_39, x_40, x_42);
+  let x_45 : f32 = b.x;
+  let x_46 : bool = (x_45 < 1.0);
+  x_52_phi = x_46;
+  if (x_46) {
+    let x_50 : f32 = b.y;
+    x_51 = (x_50 < 1.0);
+    x_52_phi = x_51;
+  }
+  let x_52 : bool = x_52_phi;
+  if (x_52) {
+    let x_57 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_59 : f32 = b.x;
+    let x_61 : f32 = b.y;
+    let x_63 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_57, x_59, x_61, x_63);
+  } else {
+    let x_66 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_66, x_66, x_66, x_66);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm
new file mode 100644
index 0000000..7a15382
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm
@@ -0,0 +1,92 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %27 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %28 = OpLoad %float %27
+         %29 = OpConvertFToS %int %28
+               OpStore %a %29
+         %30 = OpLoad %int %a
+         %31 = OpNot %int %30
+         %32 = OpSLessThan %bool %31 %int_0
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %36 = OpLoad %int %35
+               OpStore %a %36
+               OpBranch %33
+         %33 = OpLabel
+         %37 = OpLoad %int %a
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpIEqual %bool %37 %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpCompositeConstruct %v4float %46 %49 %52 %55
+               OpStore %_GLF_color %56
+               OpBranch %41
+         %43 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpCompositeConstruct %v4float %59 %59 %59 %59
+               OpStore %_GLF_color %60
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0bc8372
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,51 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const float x_28 = gl_FragCoord.x;
+  a = int(x_28);
+  if ((~(a) < 0)) {
+    const int x_36 = asint(x_7[1].x);
+    a = x_36;
+  }
+  const int x_37 = a;
+  const int x_39 = asint(x_7[1].x);
+  if ((x_37 == x_39)) {
+    const int x_45 = asint(x_7[1].x);
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_51 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_54 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_58 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_59 = float(x_58);
+    x_GLF_color = float4(x_59, x_59, x_59, x_59);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..98f7829
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  float const x_28 = (*(tint_symbol_5)).x;
+  a = int(x_28);
+  int const x_30 = a;
+  if ((~(x_30) < 0)) {
+    int const x_36 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    a = x_36;
+  }
+  int const x_37 = a;
+  int const x_39 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_37 == x_39)) {
+    int const x_45 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_48 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_51 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_6) = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    int const x_58 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_59 = float(x_58);
+    *(tint_symbol_6) = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..698e085
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %24
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %28 = OpLoad %float %27
+         %29 = OpConvertFToS %int %28
+               OpStore %a %29
+         %30 = OpLoad %int %a
+         %31 = OpNot %int %30
+         %33 = OpSLessThan %bool %31 %int_0
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %40 = OpLoad %int %39
+               OpStore %a %40
+               OpBranch %35
+         %35 = OpLabel
+         %41 = OpLoad %int %a
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpIEqual %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %49
+         %57 = OpConvertSToF %float %51
+         %58 = OpConvertSToF %float %53
+         %59 = OpConvertSToF %float %55
+         %60 = OpCompositeConstruct %v4float %56 %57 %58 %59
+               OpStore %x_GLF_color %60
+               OpBranch %45
+         %47 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpCompositeConstruct %v4float %63 %63 %63 %63
+               OpStore %x_GLF_color %64
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b258d3f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_28 : f32 = gl_FragCoord.x;
+  a = i32(x_28);
+  let x_30 : i32 = a;
+  if ((~(x_30) < 0)) {
+    let x_36 : i32 = x_7.x_GLF_uniform_int_values[1];
+    a = x_36;
+  }
+  let x_37 : i32 = a;
+  let x_39 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_37 == x_39)) {
+    let x_45 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_51 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  } else {
+    let x_58 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_59 : f32 = f32(x_58);
+    x_GLF_color = vec4<f32>(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
new file mode 100644
index 0000000..b258d3f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_28 : f32 = gl_FragCoord.x;
+  a = i32(x_28);
+  let x_30 : i32 = a;
+  if ((~(x_30) < 0)) {
+    let x_36 : i32 = x_7.x_GLF_uniform_int_values[1];
+    a = x_36;
+  }
+  let x_37 : i32 = a;
+  let x_39 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_37 == x_39)) {
+    let x_45 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_51 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  } else {
+    let x_58 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_59 : f32 = f32(x_58);
+    x_GLF_color = vec4<f32>(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0bc8372
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,51 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const float x_28 = gl_FragCoord.x;
+  a = int(x_28);
+  if ((~(a) < 0)) {
+    const int x_36 = asint(x_7[1].x);
+    a = x_36;
+  }
+  const int x_37 = a;
+  const int x_39 = asint(x_7[1].x);
+  if ((x_37 == x_39)) {
+    const int x_45 = asint(x_7[1].x);
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_51 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_54 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_58 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_59 = float(x_58);
+    x_GLF_color = float4(x_59, x_59, x_59, x_59);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..98f7829
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  float const x_28 = (*(tint_symbol_5)).x;
+  a = int(x_28);
+  int const x_30 = a;
+  if ((~(x_30) < 0)) {
+    int const x_36 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    a = x_36;
+  }
+  int const x_37 = a;
+  int const x_39 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_37 == x_39)) {
+    int const x_45 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_48 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_51 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_6) = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    int const x_58 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_59 = float(x_58);
+    *(tint_symbol_6) = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..698e085
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %24
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %28 = OpLoad %float %27
+         %29 = OpConvertFToS %int %28
+               OpStore %a %29
+         %30 = OpLoad %int %a
+         %31 = OpNot %int %30
+         %33 = OpSLessThan %bool %31 %int_0
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %40 = OpLoad %int %39
+               OpStore %a %40
+               OpBranch %35
+         %35 = OpLabel
+         %41 = OpLoad %int %a
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpIEqual %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %49
+         %57 = OpConvertSToF %float %51
+         %58 = OpConvertSToF %float %53
+         %59 = OpConvertSToF %float %55
+         %60 = OpCompositeConstruct %v4float %56 %57 %58 %59
+               OpStore %x_GLF_color %60
+               OpBranch %45
+         %47 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpCompositeConstruct %v4float %63 %63 %63 %63
+               OpStore %x_GLF_color %64
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b258d3f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_28 : f32 = gl_FragCoord.x;
+  a = i32(x_28);
+  let x_30 : i32 = a;
+  if ((~(x_30) < 0)) {
+    let x_36 : i32 = x_7.x_GLF_uniform_int_values[1];
+    a = x_36;
+  }
+  let x_37 : i32 = a;
+  let x_39 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_37 == x_39)) {
+    let x_45 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_51 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  } else {
+    let x_58 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_59 : f32 = f32(x_58);
+    x_GLF_color = vec4<f32>(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm
new file mode 100644
index 0000000..10cf8c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm
@@ -0,0 +1,180 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %data "data"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %y "y"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_v4float_uint_2 = OpTypeArray %v4float %uint_2
+%_ptr_Function__arr_v4float_uint_2 = OpTypePointer Function %_arr_v4float_uint_2
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %16
+         %40 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_v4float_uint_2 Function
+          %b = OpVariable %_ptr_Function_int Function
+          %y = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpCompositeConstruct %v4float %42 %42 %42 %42
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpCompositeConstruct %v4float %45 %45 %45 %45
+         %47 = OpCompositeConstruct %_arr_v4float_uint_2 %43 %46
+               OpStore %data %47
+         %48 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %49 = OpLoad %int %48
+               OpStore %b %49
+         %50 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %51 = OpLoad %float %50
+         %52 = OpConvertFToS %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %56 = OpLoad %float %55
+         %57 = OpConvertFToS %int %56
+         %58 = OpBitwiseOr %int %54 %57
+         %59 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpExtInst %int %1 SClamp %52 %58 %60
+               OpStore %y %61
+         %62 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %63 = OpLoad %int %62
+               OpStore %i %63
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpSLessThan %bool %68 %70
+               OpBranchConditional %71 %72 %65
+         %72 = OpLabel
+         %73 = OpLoad %int %b
+         %74 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpSGreaterThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpLoad %int %y
+         %80 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpSGreaterThan %bool %79 %81
+               OpBranch %77
+         %77 = OpLabel
+         %83 = OpPhi %bool %76 %72 %82 %78
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %84
+         %85 = OpLabel
+               OpBranch %65
+         %84 = OpLabel
+         %86 = OpLoad %int %b
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %b %87
+               OpBranch %66
+         %66 = OpLabel
+         %88 = OpLoad %int %i
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %i %89
+               OpBranch %64
+         %65 = OpLabel
+         %90 = OpLoad %int %b
+         %91 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %92 = OpLoad %int %91
+         %93 = OpIEqual %bool %90 %92
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %101 = OpLoad %int %100
+        %102 = OpExtInst %int %1 SClamp %97 %99 %101
+        %103 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %104 = OpLoad %int %103
+        %105 = OpConvertSToF %float %104
+        %106 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %110
+        %112 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %113
+        %115 = OpCompositeConstruct %v4float %105 %108 %111 %114
+        %116 = OpAccessChain %_ptr_Function_v4float %data %102
+               OpStore %116 %115
+               OpBranch %94
+         %94 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %118 = OpLoad %int %117
+        %119 = OpAccessChain %_ptr_Function_v4float %data %118
+        %120 = OpLoad %v4float %119
+        %121 = OpCompositeExtract %float %120 0
+        %122 = OpCompositeExtract %float %120 1
+        %123 = OpCompositeExtract %float %120 2
+        %124 = OpCompositeExtract %float %120 3
+        %125 = OpCompositeConstruct %v4float %121 %122 %123 %124
+               OpStore %_GLF_color %125
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2ab5b03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,95 @@
+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 * uint(0))) / 4;
+  const float x_42 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float4 tint_symbol_6[2] = {float4(x_42, x_42, x_42, x_42), float4(x_45, x_45, x_45, x_45)};
+  data = tint_symbol_6;
+  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;
+  while (true) {
+    bool x_82 = false;
+    bool x_83_phi = false;
+    const int x_68 = i;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 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 * uint(0))) / 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 * uint(0))) / 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..18db7a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.msl
@@ -0,0 +1,109 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float4 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_10, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper_2 data = {};
+  int b = 0;
+  int y = 0;
+  int i = 0;
+  float const x_42 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_45 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_4 = {.arr={float4(x_42, x_42, x_42, x_42), float4(x_45, x_45, x_45, x_45)}};
+  data = tint_symbol_4;
+  int const x_49 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  b = x_49;
+  float const x_51 = (*(tint_symbol_6)).y;
+  int const x_54 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  float const x_56 = (*(tint_symbol_6)).y;
+  int const x_60 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  y = clamp(int(x_51), (x_54 | int(x_56)), x_60);
+  int const x_63 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  i = x_63;
+  while (true) {
+    bool x_82 = false;
+    bool x_83_phi = false;
+    int const x_68 = i;
+    int const x_70 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_68 < x_70)) {
+    } else {
+      break;
+    }
+    int const x_73 = b;
+    int const x_75 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    bool const x_76 = (x_73 > x_75);
+    x_83_phi = x_76;
+    if (x_76) {
+      int const x_79 = y;
+      int const x_81 = x_10.x_GLF_uniform_int_values.arr[1].el;
+      x_82 = (x_79 > x_81);
+      x_83_phi = x_82;
+    }
+    bool const x_83 = x_83_phi;
+    if (x_83) {
+      break;
+    }
+    int const x_86 = b;
+    b = (x_86 + 1);
+    {
+      int const x_88 = i;
+      i = (x_88 + 1);
+    }
+  }
+  int const x_90 = b;
+  int const x_92 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_90 == x_92)) {
+    int const x_97 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_99 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_101 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_104 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_107 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_110 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_113 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    data.arr[clamp(x_97, x_99, x_101)] = float4(float(x_104), float(x_107), float(x_110), float(x_113));
+  }
+  int const x_118 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  float4 const x_120 = data.arr[x_118];
+  *(tint_symbol_7) = float4(x_120.x, x_120.y, x_120.z, x_120.w);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, x_10, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7fc19f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,236 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 153
+; Schema: 0
+               OpCapability Shader
+         %61 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %b "b"
+               OpName %y "y"
+               OpName %i "i"
+               OpName %x_82 "x_82"
+               OpName %x_83_phi "x_83_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_v4float_uint_2 = OpTypeArray %v4float %uint_2
+%_ptr_Function__arr_v4float_uint_2 = OpTypePointer Function %_arr_v4float_uint_2
+         %31 = OpConstantNull %_arr_v4float_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Private_float = OpTypePointer Private %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %74 = OpConstantNull %bool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_v4float_uint_2 Function %31
+          %b = OpVariable %_ptr_Function_int Function %34
+          %y = OpVariable %_ptr_Function_int Function %34
+          %i = OpVariable %_ptr_Function_int Function %34
+       %x_82 = OpVariable %_ptr_Function_bool Function %74
+   %x_83_phi = OpVariable %_ptr_Function_bool Function %74
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpCompositeConstruct %v4float %41 %41 %41 %41
+         %45 = OpCompositeConstruct %v4float %43 %43 %43 %43
+         %46 = OpCompositeConstruct %_arr_v4float_uint_2 %44 %45
+               OpStore %data %46
+         %49 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %50 = OpLoad %int %49
+               OpStore %b %50
+         %52 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %59 = OpLoad %int %58
+         %62 = OpConvertFToS %int %53
+         %63 = OpConvertFToS %int %57
+         %64 = OpBitwiseOr %int %55 %63
+         %60 = OpExtInst %int %61 SClamp %62 %64 %59
+               OpStore %y %60
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %66 = OpLoad %int %65
+               OpStore %i %66
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %int %i
+         %77 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpSLessThan %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpBranch %80
+         %82 = OpLabel
+               OpBranch %68
+         %80 = OpLabel
+         %83 = OpLoad %int %b
+         %84 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpSGreaterThan %bool %83 %85
+               OpStore %x_83_phi %86
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+         %89 = OpLoad %int %y
+         %90 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %91 = OpLoad %int %90
+         %92 = OpSGreaterThan %bool %89 %91
+               OpStore %x_82 %92
+         %93 = OpLoad %bool %x_82
+               OpStore %x_83_phi %93
+               OpBranch %87
+         %87 = OpLabel
+         %94 = OpLoad %bool %x_83_phi
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+               OpBranch %68
+         %95 = OpLabel
+         %97 = OpLoad %int %b
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %b %98
+               OpBranch %69
+         %69 = OpLabel
+         %99 = OpLoad %int %i
+        %100 = OpIAdd %int %99 %int_1
+               OpStore %i %100
+               OpBranch %67
+         %68 = OpLabel
+        %101 = OpLoad %int %b
+        %102 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %103 = OpLoad %int %102
+        %104 = OpIEqual %bool %101 %103
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %105
+        %106 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %111 = OpLoad %int %110
+        %113 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %118 = OpLoad %int %117
+        %119 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %122 = OpLoad %int %121
+        %123 = OpExtInst %int %61 SClamp %109 %111 %114
+        %125 = OpAccessChain %_ptr_Function_v4float %data %123
+        %126 = OpConvertSToF %float %116
+        %127 = OpConvertSToF %float %118
+        %128 = OpConvertSToF %float %120
+        %129 = OpConvertSToF %float %122
+        %130 = OpCompositeConstruct %v4float %126 %127 %128 %129
+               OpStore %125 %130
+               OpBranch %105
+        %105 = OpLabel
+        %131 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %132 = OpLoad %int %131
+        %133 = OpAccessChain %_ptr_Function_v4float %data %132
+        %134 = OpLoad %v4float %133
+        %135 = OpCompositeExtract %float %134 0
+        %136 = OpCompositeExtract %float %134 1
+        %137 = OpCompositeExtract %float %134 2
+        %138 = OpCompositeExtract %float %134 3
+        %139 = OpCompositeConstruct %v4float %135 %136 %137 %138
+               OpStore %x_GLF_color %139
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %140
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %147 = OpLabel
+        %148 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %148
+        %149 = OpFunctionCall %void %main_1
+        %151 = OpLoad %v4float %x_GLF_color
+        %152 = OpCompositeConstruct %main_out %151
+        %150 = OpFunctionCall %void %tint_symbol_3 %152
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5e2efc9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,99 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<vec4<f32>, 2>;
+  var b : i32;
+  var y : i32;
+  var i : i32;
+  let x_42 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[0];
+  data = array<vec4<f32>, 2>(vec4<f32>(x_42, x_42, x_42, x_42), vec4<f32>(x_45, x_45, x_45, x_45));
+  let x_49 : i32 = x_10.x_GLF_uniform_int_values[1];
+  b = x_49;
+  let x_51 : f32 = gl_FragCoord.y;
+  let x_54 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_56 : f32 = gl_FragCoord.y;
+  let x_60 : i32 = x_10.x_GLF_uniform_int_values[1];
+  y = clamp(i32(x_51), (x_54 | i32(x_56)), x_60);
+  let x_63 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_63;
+  loop {
+    var x_82 : bool;
+    var x_83_phi : bool;
+    let x_68 : i32 = i;
+    let x_70 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_68 < x_70)) {
+    } else {
+      break;
+    }
+    let x_73 : i32 = b;
+    let x_75 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_76 : bool = (x_73 > x_75);
+    x_83_phi = x_76;
+    if (x_76) {
+      let x_79 : i32 = y;
+      let x_81 : i32 = x_10.x_GLF_uniform_int_values[1];
+      x_82 = (x_79 > x_81);
+      x_83_phi = x_82;
+    }
+    let x_83 : bool = x_83_phi;
+    if (x_83) {
+      break;
+    }
+    let x_86 : i32 = b;
+    b = (x_86 + 1);
+
+    continuing {
+      let x_88 : i32 = i;
+      i = (x_88 + 1);
+    }
+  }
+  let x_90 : i32 = b;
+  let x_92 : i32 = x_10.x_GLF_uniform_int_values[0];
+  if ((x_90 == x_92)) {
+    let x_97 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_99 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_101 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_104 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_107 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_110 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_113 : i32 = x_10.x_GLF_uniform_int_values[1];
+    data[clamp(x_97, x_99, x_101)] = vec4<f32>(f32(x_104), f32(x_107), f32(x_110), f32(x_113));
+  }
+  let x_118 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_120 : vec4<f32> = data[x_118];
+  x_GLF_color = vec4<f32>(x_120.x, x_120.y, x_120.z, x_120.w);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
new file mode 100644
index 0000000..5e2efc9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
@@ -0,0 +1,99 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<vec4<f32>, 2>;
+  var b : i32;
+  var y : i32;
+  var i : i32;
+  let x_42 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[0];
+  data = array<vec4<f32>, 2>(vec4<f32>(x_42, x_42, x_42, x_42), vec4<f32>(x_45, x_45, x_45, x_45));
+  let x_49 : i32 = x_10.x_GLF_uniform_int_values[1];
+  b = x_49;
+  let x_51 : f32 = gl_FragCoord.y;
+  let x_54 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_56 : f32 = gl_FragCoord.y;
+  let x_60 : i32 = x_10.x_GLF_uniform_int_values[1];
+  y = clamp(i32(x_51), (x_54 | i32(x_56)), x_60);
+  let x_63 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_63;
+  loop {
+    var x_82 : bool;
+    var x_83_phi : bool;
+    let x_68 : i32 = i;
+    let x_70 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_68 < x_70)) {
+    } else {
+      break;
+    }
+    let x_73 : i32 = b;
+    let x_75 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_76 : bool = (x_73 > x_75);
+    x_83_phi = x_76;
+    if (x_76) {
+      let x_79 : i32 = y;
+      let x_81 : i32 = x_10.x_GLF_uniform_int_values[1];
+      x_82 = (x_79 > x_81);
+      x_83_phi = x_82;
+    }
+    let x_83 : bool = x_83_phi;
+    if (x_83) {
+      break;
+    }
+    let x_86 : i32 = b;
+    b = (x_86 + 1);
+
+    continuing {
+      let x_88 : i32 = i;
+      i = (x_88 + 1);
+    }
+  }
+  let x_90 : i32 = b;
+  let x_92 : i32 = x_10.x_GLF_uniform_int_values[0];
+  if ((x_90 == x_92)) {
+    let x_97 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_99 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_101 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_104 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_107 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_110 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_113 : i32 = x_10.x_GLF_uniform_int_values[1];
+    data[clamp(x_97, x_99, x_101)] = vec4<f32>(f32(x_104), f32(x_107), f32(x_110), f32(x_113));
+  }
+  let x_118 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_120 : vec4<f32> = data[x_118];
+  x_GLF_color = vec4<f32>(x_120.x, x_120.y, x_120.z, x_120.w);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2ab5b03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,95 @@
+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 * uint(0))) / 4;
+  const float x_42 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float4 tint_symbol_6[2] = {float4(x_42, x_42, x_42, x_42), float4(x_45, x_45, x_45, x_45)};
+  data = tint_symbol_6;
+  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;
+  while (true) {
+    bool x_82 = false;
+    bool x_83_phi = false;
+    const int x_68 = i;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 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 * uint(0))) / 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 * uint(0))) / 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..18db7a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.msl
@@ -0,0 +1,109 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float4 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_10, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper_2 data = {};
+  int b = 0;
+  int y = 0;
+  int i = 0;
+  float const x_42 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_45 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_4 = {.arr={float4(x_42, x_42, x_42, x_42), float4(x_45, x_45, x_45, x_45)}};
+  data = tint_symbol_4;
+  int const x_49 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  b = x_49;
+  float const x_51 = (*(tint_symbol_6)).y;
+  int const x_54 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  float const x_56 = (*(tint_symbol_6)).y;
+  int const x_60 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  y = clamp(int(x_51), (x_54 | int(x_56)), x_60);
+  int const x_63 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  i = x_63;
+  while (true) {
+    bool x_82 = false;
+    bool x_83_phi = false;
+    int const x_68 = i;
+    int const x_70 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_68 < x_70)) {
+    } else {
+      break;
+    }
+    int const x_73 = b;
+    int const x_75 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    bool const x_76 = (x_73 > x_75);
+    x_83_phi = x_76;
+    if (x_76) {
+      int const x_79 = y;
+      int const x_81 = x_10.x_GLF_uniform_int_values.arr[1].el;
+      x_82 = (x_79 > x_81);
+      x_83_phi = x_82;
+    }
+    bool const x_83 = x_83_phi;
+    if (x_83) {
+      break;
+    }
+    int const x_86 = b;
+    b = (x_86 + 1);
+    {
+      int const x_88 = i;
+      i = (x_88 + 1);
+    }
+  }
+  int const x_90 = b;
+  int const x_92 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_90 == x_92)) {
+    int const x_97 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_99 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_101 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_104 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_107 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_110 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_113 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    data.arr[clamp(x_97, x_99, x_101)] = float4(float(x_104), float(x_107), float(x_110), float(x_113));
+  }
+  int const x_118 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  float4 const x_120 = data.arr[x_118];
+  *(tint_symbol_7) = float4(x_120.x, x_120.y, x_120.z, x_120.w);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, x_10, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7fc19f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,236 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 153
+; Schema: 0
+               OpCapability Shader
+         %61 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %b "b"
+               OpName %y "y"
+               OpName %i "i"
+               OpName %x_82 "x_82"
+               OpName %x_83_phi "x_83_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_v4float_uint_2 = OpTypeArray %v4float %uint_2
+%_ptr_Function__arr_v4float_uint_2 = OpTypePointer Function %_arr_v4float_uint_2
+         %31 = OpConstantNull %_arr_v4float_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Private_float = OpTypePointer Private %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %74 = OpConstantNull %bool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_v4float_uint_2 Function %31
+          %b = OpVariable %_ptr_Function_int Function %34
+          %y = OpVariable %_ptr_Function_int Function %34
+          %i = OpVariable %_ptr_Function_int Function %34
+       %x_82 = OpVariable %_ptr_Function_bool Function %74
+   %x_83_phi = OpVariable %_ptr_Function_bool Function %74
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpCompositeConstruct %v4float %41 %41 %41 %41
+         %45 = OpCompositeConstruct %v4float %43 %43 %43 %43
+         %46 = OpCompositeConstruct %_arr_v4float_uint_2 %44 %45
+               OpStore %data %46
+         %49 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %50 = OpLoad %int %49
+               OpStore %b %50
+         %52 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %59 = OpLoad %int %58
+         %62 = OpConvertFToS %int %53
+         %63 = OpConvertFToS %int %57
+         %64 = OpBitwiseOr %int %55 %63
+         %60 = OpExtInst %int %61 SClamp %62 %64 %59
+               OpStore %y %60
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %66 = OpLoad %int %65
+               OpStore %i %66
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %int %i
+         %77 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpSLessThan %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpBranch %80
+         %82 = OpLabel
+               OpBranch %68
+         %80 = OpLabel
+         %83 = OpLoad %int %b
+         %84 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpSGreaterThan %bool %83 %85
+               OpStore %x_83_phi %86
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+         %89 = OpLoad %int %y
+         %90 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %91 = OpLoad %int %90
+         %92 = OpSGreaterThan %bool %89 %91
+               OpStore %x_82 %92
+         %93 = OpLoad %bool %x_82
+               OpStore %x_83_phi %93
+               OpBranch %87
+         %87 = OpLabel
+         %94 = OpLoad %bool %x_83_phi
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+               OpBranch %68
+         %95 = OpLabel
+         %97 = OpLoad %int %b
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %b %98
+               OpBranch %69
+         %69 = OpLabel
+         %99 = OpLoad %int %i
+        %100 = OpIAdd %int %99 %int_1
+               OpStore %i %100
+               OpBranch %67
+         %68 = OpLabel
+        %101 = OpLoad %int %b
+        %102 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %103 = OpLoad %int %102
+        %104 = OpIEqual %bool %101 %103
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %105
+        %106 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %111 = OpLoad %int %110
+        %113 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %118 = OpLoad %int %117
+        %119 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %122 = OpLoad %int %121
+        %123 = OpExtInst %int %61 SClamp %109 %111 %114
+        %125 = OpAccessChain %_ptr_Function_v4float %data %123
+        %126 = OpConvertSToF %float %116
+        %127 = OpConvertSToF %float %118
+        %128 = OpConvertSToF %float %120
+        %129 = OpConvertSToF %float %122
+        %130 = OpCompositeConstruct %v4float %126 %127 %128 %129
+               OpStore %125 %130
+               OpBranch %105
+        %105 = OpLabel
+        %131 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %132 = OpLoad %int %131
+        %133 = OpAccessChain %_ptr_Function_v4float %data %132
+        %134 = OpLoad %v4float %133
+        %135 = OpCompositeExtract %float %134 0
+        %136 = OpCompositeExtract %float %134 1
+        %137 = OpCompositeExtract %float %134 2
+        %138 = OpCompositeExtract %float %134 3
+        %139 = OpCompositeConstruct %v4float %135 %136 %137 %138
+               OpStore %x_GLF_color %139
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %140
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %147 = OpLabel
+        %148 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %148
+        %149 = OpFunctionCall %void %main_1
+        %151 = OpLoad %v4float %x_GLF_color
+        %152 = OpCompositeConstruct %main_out %151
+        %150 = OpFunctionCall %void %tint_symbol_3 %152
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5e2efc9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,99 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<vec4<f32>, 2>;
+  var b : i32;
+  var y : i32;
+  var i : i32;
+  let x_42 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[0];
+  data = array<vec4<f32>, 2>(vec4<f32>(x_42, x_42, x_42, x_42), vec4<f32>(x_45, x_45, x_45, x_45));
+  let x_49 : i32 = x_10.x_GLF_uniform_int_values[1];
+  b = x_49;
+  let x_51 : f32 = gl_FragCoord.y;
+  let x_54 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_56 : f32 = gl_FragCoord.y;
+  let x_60 : i32 = x_10.x_GLF_uniform_int_values[1];
+  y = clamp(i32(x_51), (x_54 | i32(x_56)), x_60);
+  let x_63 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_63;
+  loop {
+    var x_82 : bool;
+    var x_83_phi : bool;
+    let x_68 : i32 = i;
+    let x_70 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_68 < x_70)) {
+    } else {
+      break;
+    }
+    let x_73 : i32 = b;
+    let x_75 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_76 : bool = (x_73 > x_75);
+    x_83_phi = x_76;
+    if (x_76) {
+      let x_79 : i32 = y;
+      let x_81 : i32 = x_10.x_GLF_uniform_int_values[1];
+      x_82 = (x_79 > x_81);
+      x_83_phi = x_82;
+    }
+    let x_83 : bool = x_83_phi;
+    if (x_83) {
+      break;
+    }
+    let x_86 : i32 = b;
+    b = (x_86 + 1);
+
+    continuing {
+      let x_88 : i32 = i;
+      i = (x_88 + 1);
+    }
+  }
+  let x_90 : i32 = b;
+  let x_92 : i32 = x_10.x_GLF_uniform_int_values[0];
+  if ((x_90 == x_92)) {
+    let x_97 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_99 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_101 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_104 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_107 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_110 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_113 : i32 = x_10.x_GLF_uniform_int_values[1];
+    data[clamp(x_97, x_99, x_101)] = vec4<f32>(f32(x_104), f32(x_107), f32(x_110), f32(x_113));
+  }
+  let x_118 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_120 : vec4<f32> = data[x_118];
+  x_GLF_color = vec4<f32>(x_120.x, x_120.y, x_120.z, x_120.w);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm
new file mode 100644
index 0000000..b71a3d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm
@@ -0,0 +1,153 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %icoord "icoord"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %icoord_0 "icoord"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+    %v2float = OpTypeVector %float 2
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_3 = OpConstant %int 3
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf0 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+       %main = OpFunction %void None %14
+         %39 = OpLabel
+     %icoord = OpVariable %_ptr_Function_v2int Function
+         %40 = OpVariable %_ptr_Function_float Function
+   %icoord_0 = OpVariable %_ptr_Function_v2int Function
+         %41 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %44 = OpLoad %float %43
+         %45 = OpFMul %float %42 %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpFOrdGreaterThan %bool %45 %47
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+         %52 = OpLoad %v4float %gl_FragCoord
+         %53 = OpVectorShuffle %v2float %52 %52 0 1
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %55 = OpLoad %float %54
+         %56 = OpVectorTimesScalar %v2float %53 %55
+         %57 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %60 = OpLoad %float %59
+         %61 = OpCompositeConstruct %v2float %58 %60
+         %62 = OpFSub %v2float %56 %61
+         %63 = OpConvertFToS %v2int %62
+               OpStore %icoord %63
+         %64 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %67 = OpLoad %float %66
+         %68 = OpAccessChain %_ptr_Function_int %icoord %uint_0
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Function_int %icoord %uint_1
+         %71 = OpLoad %int %70
+         %72 = OpIMul %int %69 %71
+         %73 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpINotEqual %bool %72 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %80 = OpLoad %float %79
+               OpStore %40 %80
+               OpBranch %76
+         %78 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %82 = OpLoad %float %81
+               OpStore %40 %82
+               OpBranch %76
+         %76 = OpLabel
+         %83 = OpLoad %float %40
+         %84 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %85
+         %87 = OpCompositeConstruct %v4float %65 %67 %83 %86
+               OpStore %_GLF_color %87
+               OpBranch %49
+         %51 = OpLabel
+         %88 = OpLoad %v4float %gl_FragCoord
+         %89 = OpVectorShuffle %v2float %88 %88 0 1
+         %90 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %91 = OpLoad %float %90
+         %92 = OpVectorTimesScalar %v2float %89 %91
+         %93 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %94 = OpLoad %float %93
+         %95 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %96 = OpLoad %float %95
+         %97 = OpCompositeConstruct %v2float %94 %96
+         %98 = OpFSub %v2float %92 %97
+         %99 = OpConvertFToS %v2int %98
+               OpStore %icoord_0 %99
+        %100 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+        %101 = OpLoad %float %100
+        %102 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Function_int %icoord_0 %uint_0
+        %105 = OpLoad %int %104
+        %106 = OpConvertSToF %float %105
+        %107 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+        %108 = OpLoad %float %107
+        %109 = OpCompositeConstruct %v4float %101 %103 %106 %108
+               OpStore %_GLF_color %109
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..8837bf0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,75 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+
+void main_1() {
+  int2 icoord = int2(0, 0);
+  float x_40 = 0.0f;
+  int2 icoord_1 = int2(0, 0);
+  const float x_42 = gl_FragCoord.x;
+  const float x_44 = asfloat(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if (((x_42 * x_44) > x_47)) {
+    const float4 x_52 = gl_FragCoord;
+    const float x_55 = asfloat(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_58 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_60 = asfloat(x_6[2].x);
+    icoord = int2(((float2(x_52.x, x_52.y) * x_55) - float2(x_58, x_60)));
+    const float x_65 = asfloat(x_6[2].x);
+    const float x_67 = asfloat(x_6[3].x);
+    const int x_69 = icoord.x;
+    const int x_71 = icoord.y;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if (((x_69 * x_71) != x_74)) {
+      const float x_80 = asfloat(x_6[3].x);
+      x_40 = x_80;
+    } else {
+      const float x_82 = asfloat(x_6[2].x);
+      x_40 = x_82;
+    }
+    const float x_83 = x_40;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_85 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(x_65, x_67, x_83, float(x_85));
+  } else {
+    const float4 x_88 = gl_FragCoord;
+    const float x_91 = asfloat(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_94 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_96 = asfloat(x_6[2].x);
+    icoord_1 = int2(((float2(x_88.x, x_88.y) * x_91) - float2(x_94, x_96)));
+    const float x_101 = asfloat(x_6[3].x);
+    const float x_103 = asfloat(x_6[3].x);
+    const int x_105 = icoord_1.x;
+    const float x_108 = asfloat(x_6[3].x);
+    x_GLF_color = float4(x_101, x_103, float(x_105), x_108);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..c57161c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int2 icoord = 0;
+  float x_40 = 0.0f;
+  int2 icoord_1 = 0;
+  float const x_42 = (*(tint_symbol_5)).x;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_47 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if (((x_42 * x_44) > x_47)) {
+    float4 const x_52 = *(tint_symbol_5);
+    float const x_55 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_58 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_60 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    icoord = int2(((float2(x_52.x, x_52.y) * x_55) - float2(x_58, x_60)));
+    float const x_65 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    float const x_67 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    int const x_69 = icoord.x;
+    int const x_71 = icoord.y;
+    int const x_74 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if (((x_69 * x_71) != x_74)) {
+      float const x_80 = x_6.x_GLF_uniform_float_values.arr[3].el;
+      x_40 = x_80;
+    } else {
+      float const x_82 = x_6.x_GLF_uniform_float_values.arr[2].el;
+      x_40 = x_82;
+    }
+    float const x_83 = x_40;
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(x_65, x_67, x_83, float(x_85));
+  } else {
+    float4 const x_88 = *(tint_symbol_5);
+    float const x_91 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_94 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_96 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    icoord_1 = int2(((float2(x_88.x, x_88.y) * x_91) - float2(x_94, x_96)));
+    float const x_101 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_103 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    int const x_105 = icoord_1.x;
+    float const x_108 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    *(tint_symbol_6) = float4(x_101, x_103, float(x_105), x_108);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..76e8564
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,196 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 132
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %icoord "icoord"
+               OpName %x_40 "x_40"
+               OpName %icoord_1 "icoord_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf0 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %30 = OpConstantNull %v2int
+%_ptr_Function_float = OpTypePointer Function %float
+         %33 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+    %v2float = OpTypeVector %float 2
+      %int_3 = OpConstant %int 3
+%_ptr_Function_int = OpTypePointer Function %int
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+     %icoord = OpVariable %_ptr_Function_v2int Function %30
+       %x_40 = OpVariable %_ptr_Function_float Function %33
+   %icoord_1 = OpVariable %_ptr_Function_v2int Function %30
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpFMul %float %38 %42
+         %47 = OpFOrdGreaterThan %bool %46 %45
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+         %52 = OpLoad %v4float %gl_FragCoord
+         %53 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %54 = OpLoad %float %53
+         %55 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %59 = OpLoad %float %58
+         %62 = OpCompositeExtract %float %52 0
+         %63 = OpCompositeExtract %float %52 1
+         %64 = OpCompositeConstruct %v2float %62 %63
+         %65 = OpVectorTimesScalar %v2float %64 %54
+         %66 = OpCompositeConstruct %v2float %56 %59
+         %67 = OpFSub %v2float %65 %66
+         %60 = OpConvertFToS %v2int %67
+               OpStore %icoord %60
+         %68 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %72 = OpLoad %float %71
+         %74 = OpAccessChain %_ptr_Function_int %icoord %uint_0
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_int %icoord %uint_1
+         %77 = OpLoad %int %76
+         %79 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpIMul %int %75 %77
+         %82 = OpINotEqual %bool %81 %80
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %87 = OpLoad %float %86
+               OpStore %x_40 %87
+               OpBranch %83
+         %85 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %89 = OpLoad %float %88
+               OpStore %x_40 %89
+               OpBranch %83
+         %83 = OpLabel
+         %90 = OpLoad %float %x_40
+         %91 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpCompositeConstruct %v4float %69 %72 %90 %93
+               OpStore %x_GLF_color %94
+               OpBranch %49
+         %51 = OpLabel
+         %95 = OpLoad %v4float %gl_FragCoord
+         %96 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %97 = OpLoad %float %96
+         %98 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+        %101 = OpLoad %float %100
+        %103 = OpCompositeExtract %float %95 0
+        %104 = OpCompositeExtract %float %95 1
+        %105 = OpCompositeConstruct %v2float %103 %104
+        %106 = OpVectorTimesScalar %v2float %105 %97
+        %107 = OpCompositeConstruct %v2float %99 %101
+        %108 = OpFSub %v2float %106 %107
+        %102 = OpConvertFToS %v2int %108
+               OpStore %icoord_1 %102
+        %109 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %112 = OpLoad %float %111
+        %113 = OpAccessChain %_ptr_Function_int %icoord_1 %uint_0
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %116 = OpLoad %float %115
+        %117 = OpConvertSToF %float %114
+        %118 = OpCompositeConstruct %v4float %110 %112 %117 %116
+               OpStore %x_GLF_color %118
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %119
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %126 = OpLabel
+        %127 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %127
+        %128 = OpFunctionCall %void %main_1
+        %130 = OpLoad %v4float %x_GLF_color
+        %131 = OpCompositeConstruct %main_out %130
+        %129 = OpFunctionCall %void %tint_symbol_3 %131
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8306f38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,76 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var icoord : vec2<i32>;
+  var x_40 : f32;
+  var icoord_1 : vec2<i32>;
+  let x_42 : f32 = gl_FragCoord.x;
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if (((x_42 * x_44) > x_47)) {
+    let x_52 : vec4<f32> = gl_FragCoord;
+    let x_55 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_60 : f32 = x_6.x_GLF_uniform_float_values[2];
+    icoord = vec2<i32>(((vec2<f32>(x_52.x, x_52.y) * x_55) - vec2<f32>(x_58, x_60)));
+    let x_65 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_67 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_69 : i32 = icoord.x;
+    let x_71 : i32 = icoord.y;
+    let x_74 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if (((x_69 * x_71) != x_74)) {
+      let x_80 : f32 = x_6.x_GLF_uniform_float_values[3];
+      x_40 = x_80;
+    } else {
+      let x_82 : f32 = x_6.x_GLF_uniform_float_values[2];
+      x_40 = x_82;
+    }
+    let x_83 : f32 = x_40;
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(x_65, x_67, x_83, f32(x_85));
+  } else {
+    let x_88 : vec4<f32> = gl_FragCoord;
+    let x_91 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_94 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_96 : f32 = x_6.x_GLF_uniform_float_values[2];
+    icoord_1 = vec2<i32>(((vec2<f32>(x_88.x, x_88.y) * x_91) - vec2<f32>(x_94, x_96)));
+    let x_101 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_103 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_105 : i32 = icoord_1.x;
+    let x_108 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_GLF_color = vec4<f32>(x_101, x_103, f32(x_105), x_108);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
new file mode 100644
index 0000000..8306f38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
@@ -0,0 +1,76 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var icoord : vec2<i32>;
+  var x_40 : f32;
+  var icoord_1 : vec2<i32>;
+  let x_42 : f32 = gl_FragCoord.x;
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if (((x_42 * x_44) > x_47)) {
+    let x_52 : vec4<f32> = gl_FragCoord;
+    let x_55 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_60 : f32 = x_6.x_GLF_uniform_float_values[2];
+    icoord = vec2<i32>(((vec2<f32>(x_52.x, x_52.y) * x_55) - vec2<f32>(x_58, x_60)));
+    let x_65 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_67 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_69 : i32 = icoord.x;
+    let x_71 : i32 = icoord.y;
+    let x_74 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if (((x_69 * x_71) != x_74)) {
+      let x_80 : f32 = x_6.x_GLF_uniform_float_values[3];
+      x_40 = x_80;
+    } else {
+      let x_82 : f32 = x_6.x_GLF_uniform_float_values[2];
+      x_40 = x_82;
+    }
+    let x_83 : f32 = x_40;
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(x_65, x_67, x_83, f32(x_85));
+  } else {
+    let x_88 : vec4<f32> = gl_FragCoord;
+    let x_91 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_94 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_96 : f32 = x_6.x_GLF_uniform_float_values[2];
+    icoord_1 = vec2<i32>(((vec2<f32>(x_88.x, x_88.y) * x_91) - vec2<f32>(x_94, x_96)));
+    let x_101 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_103 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_105 : i32 = icoord_1.x;
+    let x_108 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_GLF_color = vec4<f32>(x_101, x_103, f32(x_105), x_108);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..8837bf0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,75 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+
+void main_1() {
+  int2 icoord = int2(0, 0);
+  float x_40 = 0.0f;
+  int2 icoord_1 = int2(0, 0);
+  const float x_42 = gl_FragCoord.x;
+  const float x_44 = asfloat(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if (((x_42 * x_44) > x_47)) {
+    const float4 x_52 = gl_FragCoord;
+    const float x_55 = asfloat(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_58 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_60 = asfloat(x_6[2].x);
+    icoord = int2(((float2(x_52.x, x_52.y) * x_55) - float2(x_58, x_60)));
+    const float x_65 = asfloat(x_6[2].x);
+    const float x_67 = asfloat(x_6[3].x);
+    const int x_69 = icoord.x;
+    const int x_71 = icoord.y;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if (((x_69 * x_71) != x_74)) {
+      const float x_80 = asfloat(x_6[3].x);
+      x_40 = x_80;
+    } else {
+      const float x_82 = asfloat(x_6[2].x);
+      x_40 = x_82;
+    }
+    const float x_83 = x_40;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_85 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(x_65, x_67, x_83, float(x_85));
+  } else {
+    const float4 x_88 = gl_FragCoord;
+    const float x_91 = asfloat(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_94 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_96 = asfloat(x_6[2].x);
+    icoord_1 = int2(((float2(x_88.x, x_88.y) * x_91) - float2(x_94, x_96)));
+    const float x_101 = asfloat(x_6[3].x);
+    const float x_103 = asfloat(x_6[3].x);
+    const int x_105 = icoord_1.x;
+    const float x_108 = asfloat(x_6[3].x);
+    x_GLF_color = float4(x_101, x_103, float(x_105), x_108);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..c57161c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int2 icoord = 0;
+  float x_40 = 0.0f;
+  int2 icoord_1 = 0;
+  float const x_42 = (*(tint_symbol_5)).x;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_47 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if (((x_42 * x_44) > x_47)) {
+    float4 const x_52 = *(tint_symbol_5);
+    float const x_55 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_58 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_60 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    icoord = int2(((float2(x_52.x, x_52.y) * x_55) - float2(x_58, x_60)));
+    float const x_65 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    float const x_67 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    int const x_69 = icoord.x;
+    int const x_71 = icoord.y;
+    int const x_74 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if (((x_69 * x_71) != x_74)) {
+      float const x_80 = x_6.x_GLF_uniform_float_values.arr[3].el;
+      x_40 = x_80;
+    } else {
+      float const x_82 = x_6.x_GLF_uniform_float_values.arr[2].el;
+      x_40 = x_82;
+    }
+    float const x_83 = x_40;
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(x_65, x_67, x_83, float(x_85));
+  } else {
+    float4 const x_88 = *(tint_symbol_5);
+    float const x_91 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_94 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_96 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    icoord_1 = int2(((float2(x_88.x, x_88.y) * x_91) - float2(x_94, x_96)));
+    float const x_101 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_103 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    int const x_105 = icoord_1.x;
+    float const x_108 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    *(tint_symbol_6) = float4(x_101, x_103, float(x_105), x_108);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..76e8564
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,196 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 132
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %icoord "icoord"
+               OpName %x_40 "x_40"
+               OpName %icoord_1 "icoord_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf0 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %30 = OpConstantNull %v2int
+%_ptr_Function_float = OpTypePointer Function %float
+         %33 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+    %v2float = OpTypeVector %float 2
+      %int_3 = OpConstant %int 3
+%_ptr_Function_int = OpTypePointer Function %int
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+     %icoord = OpVariable %_ptr_Function_v2int Function %30
+       %x_40 = OpVariable %_ptr_Function_float Function %33
+   %icoord_1 = OpVariable %_ptr_Function_v2int Function %30
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpFMul %float %38 %42
+         %47 = OpFOrdGreaterThan %bool %46 %45
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+         %52 = OpLoad %v4float %gl_FragCoord
+         %53 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %54 = OpLoad %float %53
+         %55 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %59 = OpLoad %float %58
+         %62 = OpCompositeExtract %float %52 0
+         %63 = OpCompositeExtract %float %52 1
+         %64 = OpCompositeConstruct %v2float %62 %63
+         %65 = OpVectorTimesScalar %v2float %64 %54
+         %66 = OpCompositeConstruct %v2float %56 %59
+         %67 = OpFSub %v2float %65 %66
+         %60 = OpConvertFToS %v2int %67
+               OpStore %icoord %60
+         %68 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %72 = OpLoad %float %71
+         %74 = OpAccessChain %_ptr_Function_int %icoord %uint_0
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_int %icoord %uint_1
+         %77 = OpLoad %int %76
+         %79 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpIMul %int %75 %77
+         %82 = OpINotEqual %bool %81 %80
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %87 = OpLoad %float %86
+               OpStore %x_40 %87
+               OpBranch %83
+         %85 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %89 = OpLoad %float %88
+               OpStore %x_40 %89
+               OpBranch %83
+         %83 = OpLabel
+         %90 = OpLoad %float %x_40
+         %91 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpCompositeConstruct %v4float %69 %72 %90 %93
+               OpStore %x_GLF_color %94
+               OpBranch %49
+         %51 = OpLabel
+         %95 = OpLoad %v4float %gl_FragCoord
+         %96 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %97 = OpLoad %float %96
+         %98 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+        %101 = OpLoad %float %100
+        %103 = OpCompositeExtract %float %95 0
+        %104 = OpCompositeExtract %float %95 1
+        %105 = OpCompositeConstruct %v2float %103 %104
+        %106 = OpVectorTimesScalar %v2float %105 %97
+        %107 = OpCompositeConstruct %v2float %99 %101
+        %108 = OpFSub %v2float %106 %107
+        %102 = OpConvertFToS %v2int %108
+               OpStore %icoord_1 %102
+        %109 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %112 = OpLoad %float %111
+        %113 = OpAccessChain %_ptr_Function_int %icoord_1 %uint_0
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %116 = OpLoad %float %115
+        %117 = OpConvertSToF %float %114
+        %118 = OpCompositeConstruct %v4float %110 %112 %117 %116
+               OpStore %x_GLF_color %118
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %119
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %126 = OpLabel
+        %127 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %127
+        %128 = OpFunctionCall %void %main_1
+        %130 = OpLoad %v4float %x_GLF_color
+        %131 = OpCompositeConstruct %main_out %130
+        %129 = OpFunctionCall %void %tint_symbol_3 %131
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8306f38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,76 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var icoord : vec2<i32>;
+  var x_40 : f32;
+  var icoord_1 : vec2<i32>;
+  let x_42 : f32 = gl_FragCoord.x;
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if (((x_42 * x_44) > x_47)) {
+    let x_52 : vec4<f32> = gl_FragCoord;
+    let x_55 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_60 : f32 = x_6.x_GLF_uniform_float_values[2];
+    icoord = vec2<i32>(((vec2<f32>(x_52.x, x_52.y) * x_55) - vec2<f32>(x_58, x_60)));
+    let x_65 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_67 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_69 : i32 = icoord.x;
+    let x_71 : i32 = icoord.y;
+    let x_74 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if (((x_69 * x_71) != x_74)) {
+      let x_80 : f32 = x_6.x_GLF_uniform_float_values[3];
+      x_40 = x_80;
+    } else {
+      let x_82 : f32 = x_6.x_GLF_uniform_float_values[2];
+      x_40 = x_82;
+    }
+    let x_83 : f32 = x_40;
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(x_65, x_67, x_83, f32(x_85));
+  } else {
+    let x_88 : vec4<f32> = gl_FragCoord;
+    let x_91 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_94 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_96 : f32 = x_6.x_GLF_uniform_float_values[2];
+    icoord_1 = vec2<i32>(((vec2<f32>(x_88.x, x_88.y) * x_91) - vec2<f32>(x_94, x_96)));
+    let x_101 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_103 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_105 : i32 = icoord_1.x;
+    let x_108 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_GLF_color = vec4<f32>(x_101, x_103, f32(x_105), x_108);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm
new file mode 100644
index 0000000..be0471e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm
@@ -0,0 +1,168 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func_f1_ "func(f1;"
+               OpName %x "x"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %float %_ptr_Function_float
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %15
+         %39 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function
+         %40 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %41 = OpLoad %float %40
+               OpStore %param %41
+         %42 = OpFunctionCall %float %func_f1_ %param
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %44 = OpLoad %float %43
+         %45 = OpFOrdEqual %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %51 %54 %57 %60
+               OpStore %_GLF_color %61
+               OpBranch %46
+         %48 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpCompositeConstruct %v4float %64 %64 %64 %64
+               OpStore %_GLF_color %65
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_f1_ = OpFunction %float None %18
+          %x = OpFunctionParameter %_ptr_Function_float
+         %66 = OpLabel
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+               OpBranchConditional %true %71 %68
+         %71 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %79 = OpLoad %float %78
+         %80 = OpFOrdLessThan %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+         %87 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %90 = OpLoad %float %89
+         %91 = OpFOrdLessThan %bool %88 %90
+               OpBranchConditional %91 %83 %84
+         %84 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+         %92 = OpLoad %float %x
+         %93 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %94 = OpLoad %float %93
+         %95 = OpFOrdLessThan %bool %92 %94
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %99 = OpLoad %float %98
+               OpReturnValue %99
+         %96 = OpLabel
+               OpBranch %74
+         %74 = OpLabel
+        %100 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %101 = OpLoad %float %100
+        %102 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+        %103 = OpLoad %float %102
+        %104 = OpFOrdLessThan %bool %101 %103
+               OpBranchConditional %104 %72 %73
+         %73 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %67
+         %68 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %106 = OpLoad %float %105
+               OpReturnValue %106
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..44df57f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,91 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[2];
+};
+
+float func_f1_(inout float x) {
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    while (true) {
+      const float x_77 = gl_FragCoord.y;
+      const float x_79 = asfloat(x_8[2].x);
+      if ((x_77 < x_79)) {
+        while (true) {
+          {
+            const float x_88 = gl_FragCoord.x;
+            const float x_90 = asfloat(x_8[2].x);
+            if ((x_88 < x_90)) {
+            } else {
+              break;
+            }
+          }
+        }
+      }
+      const float x_92 = x;
+      const float x_94 = asfloat(x_8[3].x);
+      if ((x_92 < x_94)) {
+        const float x_99 = asfloat(x_8[1].x);
+        return x_99;
+      }
+      {
+        const float x_101 = gl_FragCoord.y;
+        const float x_103 = asfloat(x_8[2].x);
+        if ((x_101 < x_103)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_106 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  return x_106;
+}
+
+void main_1() {
+  float param = 0.0f;
+  const float x_41 = gl_FragCoord.x;
+  param = x_41;
+  const float x_42 = func_f1_(param);
+  const float x_44 = asfloat(x_8[1].x);
+  if ((x_42 == x_44)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_53 = asint(x_11[1].x);
+    const int x_56 = asint(x_11[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_50), float(x_53), float(x_56), float(x_59));
+  } else {
+    const int x_63 = asint(x_11[1].x);
+    const float x_64 = float(x_63);
+    x_GLF_color = float4(x_64, x_64, x_64, x_64);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bb3bd84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_f1_(constant buf1& x_8, thread float* const x, thread float4* const tint_symbol_5) {
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    while (true) {
+      float const x_77 = (*(tint_symbol_5)).y;
+      float const x_79 = x_8.x_GLF_uniform_float_values.arr[2].el;
+      if ((x_77 < x_79)) {
+        while (true) {
+          {
+            float const x_88 = (*(tint_symbol_5)).x;
+            float const x_90 = x_8.x_GLF_uniform_float_values.arr[2].el;
+            if ((x_88 < x_90)) {
+            } else {
+              break;
+            }
+          }
+        }
+      }
+      float const x_92 = *(x);
+      float const x_94 = x_8.x_GLF_uniform_float_values.arr[3].el;
+      if ((x_92 < x_94)) {
+        float const x_99 = x_8.x_GLF_uniform_float_values.arr[1].el;
+        return x_99;
+      }
+      {
+        float const x_101 = (*(tint_symbol_5)).y;
+        float const x_103 = x_8.x_GLF_uniform_float_values.arr[2].el;
+        if ((x_101 < x_103)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  float const x_106 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  return x_106;
+}
+
+void main_1(constant buf1& x_8, constant buf0& x_11, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float param = 0.0f;
+  float const x_41 = (*(tint_symbol_6)).x;
+  param = x_41;
+  float const x_42 = func_f1_(x_8, &(param), tint_symbol_6);
+  float const x_44 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_42 == x_44)) {
+    int const x_50 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    int const x_53 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_59 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_7) = float4(float(x_50), float(x_53), float(x_56), float(x_59));
+  } else {
+    int const x_63 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    float const x_64 = float(x_63);
+    *(tint_symbol_7) = float4(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_8, x_11, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..855bbda
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,229 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 134
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_f1_ "func_f1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %23 = OpTypeFunction %float %_ptr_Function_float
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %87 = OpTypeFunction %void
+         %92 = OpConstantNull %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %121 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %float None %23
+          %x = OpFunctionParameter %_ptr_Function_float
+         %27 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+               OpSelectionMerge %34 None
+               OpBranchConditional %true %35 %36
+         %35 = OpLabel
+               OpBranch %34
+         %36 = OpLabel
+               OpBranch %29
+         %34 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %43 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %44 = OpLoad %float %43
+         %48 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %49 = OpLoad %float %48
+         %50 = OpFOrdLessThan %bool %44 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %58 = OpLoad %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %60 = OpLoad %float %59
+         %61 = OpFOrdLessThan %bool %58 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %54
+         %62 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+         %66 = OpLoad %float %x
+         %68 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_3
+         %69 = OpLoad %float %68
+         %70 = OpFOrdLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %75 = OpLoad %float %74
+               OpReturnValue %75
+         %71 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+         %76 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %79 = OpLoad %float %78
+         %80 = OpFOrdLessThan %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %38
+         %81 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpBranch %28
+         %29 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %86 = OpLoad %float %85
+               OpReturnValue %86
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %87
+         %90 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function %92
+         %93 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %94 = OpLoad %float %93
+               OpStore %param %94
+         %95 = OpFunctionCall %float %func_f1_ %param
+         %97 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %98 = OpLoad %float %97
+         %99 = OpFOrdEqual %bool %95 %98
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %102
+        %101 = OpLabel
+        %104 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %111 = OpLoad %int %110
+        %112 = OpConvertSToF %float %105
+        %113 = OpConvertSToF %float %107
+        %114 = OpConvertSToF %float %109
+        %115 = OpConvertSToF %float %111
+        %116 = OpCompositeConstruct %v4float %112 %113 %114 %115
+               OpStore %x_GLF_color %116
+               OpBranch %100
+        %102 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %118 = OpLoad %int %117
+        %119 = OpConvertSToF %float %118
+        %120 = OpCompositeConstruct %v4float %119 %119 %119 %119
+               OpStore %x_GLF_color %120
+               OpBranch %100
+        %100 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %121
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %125 = OpLabel
+        %126 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %126
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %87
+        %128 = OpLabel
+        %129 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %129
+        %130 = OpFunctionCall %void %main_1
+        %132 = OpLoad %v4float %x_GLF_color
+        %133 = OpCompositeConstruct %main_out %132
+        %131 = OpFunctionCall %void %tint_symbol_3 %133
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 39[%39] is not post dominated by the back-edge block 81[%81]
+  %81 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..36f0a6f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,96 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+fn func_f1_(x : ptr<function, f32>) -> f32 {
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    loop {
+      let x_77 : f32 = gl_FragCoord.y;
+      let x_79 : f32 = x_8.x_GLF_uniform_float_values[2];
+      if ((x_77 < x_79)) {
+        loop {
+
+          continuing {
+            let x_88 : f32 = gl_FragCoord.x;
+            let x_90 : f32 = x_8.x_GLF_uniform_float_values[2];
+            if ((x_88 < x_90)) {
+            } else {
+              break;
+            }
+          }
+        }
+      }
+      let x_92 : f32 = *(x);
+      let x_94 : f32 = x_8.x_GLF_uniform_float_values[3];
+      if ((x_92 < x_94)) {
+        let x_99 : f32 = x_8.x_GLF_uniform_float_values[1];
+        return x_99;
+      }
+
+      continuing {
+        let x_101 : f32 = gl_FragCoord.y;
+        let x_103 : f32 = x_8.x_GLF_uniform_float_values[2];
+        if ((x_101 < x_103)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  let x_106 : f32 = x_8.x_GLF_uniform_float_values[0];
+  return x_106;
+}
+
+fn main_1() {
+  var param : f32;
+  let x_41 : f32 = gl_FragCoord.x;
+  param = x_41;
+  let x_42 : f32 = func_f1_(&(param));
+  let x_44 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_11.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_59 : i32 = x_11.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_50), f32(x_53), f32(x_56), f32(x_59));
+  } else {
+    let x_63 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_64 : f32 = f32(x_63);
+    x_GLF_color = vec4<f32>(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
new file mode 100644
index 0000000..36f0a6f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
@@ -0,0 +1,96 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+fn func_f1_(x : ptr<function, f32>) -> f32 {
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    loop {
+      let x_77 : f32 = gl_FragCoord.y;
+      let x_79 : f32 = x_8.x_GLF_uniform_float_values[2];
+      if ((x_77 < x_79)) {
+        loop {
+
+          continuing {
+            let x_88 : f32 = gl_FragCoord.x;
+            let x_90 : f32 = x_8.x_GLF_uniform_float_values[2];
+            if ((x_88 < x_90)) {
+            } else {
+              break;
+            }
+          }
+        }
+      }
+      let x_92 : f32 = *(x);
+      let x_94 : f32 = x_8.x_GLF_uniform_float_values[3];
+      if ((x_92 < x_94)) {
+        let x_99 : f32 = x_8.x_GLF_uniform_float_values[1];
+        return x_99;
+      }
+
+      continuing {
+        let x_101 : f32 = gl_FragCoord.y;
+        let x_103 : f32 = x_8.x_GLF_uniform_float_values[2];
+        if ((x_101 < x_103)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  let x_106 : f32 = x_8.x_GLF_uniform_float_values[0];
+  return x_106;
+}
+
+fn main_1() {
+  var param : f32;
+  let x_41 : f32 = gl_FragCoord.x;
+  param = x_41;
+  let x_42 : f32 = func_f1_(&(param));
+  let x_44 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_11.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_59 : i32 = x_11.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_50), f32(x_53), f32(x_56), f32(x_59));
+  } else {
+    let x_63 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_64 : f32 = f32(x_63);
+    x_GLF_color = vec4<f32>(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..44df57f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,91 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[2];
+};
+
+float func_f1_(inout float x) {
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    while (true) {
+      const float x_77 = gl_FragCoord.y;
+      const float x_79 = asfloat(x_8[2].x);
+      if ((x_77 < x_79)) {
+        while (true) {
+          {
+            const float x_88 = gl_FragCoord.x;
+            const float x_90 = asfloat(x_8[2].x);
+            if ((x_88 < x_90)) {
+            } else {
+              break;
+            }
+          }
+        }
+      }
+      const float x_92 = x;
+      const float x_94 = asfloat(x_8[3].x);
+      if ((x_92 < x_94)) {
+        const float x_99 = asfloat(x_8[1].x);
+        return x_99;
+      }
+      {
+        const float x_101 = gl_FragCoord.y;
+        const float x_103 = asfloat(x_8[2].x);
+        if ((x_101 < x_103)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_106 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  return x_106;
+}
+
+void main_1() {
+  float param = 0.0f;
+  const float x_41 = gl_FragCoord.x;
+  param = x_41;
+  const float x_42 = func_f1_(param);
+  const float x_44 = asfloat(x_8[1].x);
+  if ((x_42 == x_44)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_53 = asint(x_11[1].x);
+    const int x_56 = asint(x_11[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_50), float(x_53), float(x_56), float(x_59));
+  } else {
+    const int x_63 = asint(x_11[1].x);
+    const float x_64 = float(x_63);
+    x_GLF_color = float4(x_64, x_64, x_64, x_64);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..bb3bd84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_f1_(constant buf1& x_8, thread float* const x, thread float4* const tint_symbol_5) {
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    while (true) {
+      float const x_77 = (*(tint_symbol_5)).y;
+      float const x_79 = x_8.x_GLF_uniform_float_values.arr[2].el;
+      if ((x_77 < x_79)) {
+        while (true) {
+          {
+            float const x_88 = (*(tint_symbol_5)).x;
+            float const x_90 = x_8.x_GLF_uniform_float_values.arr[2].el;
+            if ((x_88 < x_90)) {
+            } else {
+              break;
+            }
+          }
+        }
+      }
+      float const x_92 = *(x);
+      float const x_94 = x_8.x_GLF_uniform_float_values.arr[3].el;
+      if ((x_92 < x_94)) {
+        float const x_99 = x_8.x_GLF_uniform_float_values.arr[1].el;
+        return x_99;
+      }
+      {
+        float const x_101 = (*(tint_symbol_5)).y;
+        float const x_103 = x_8.x_GLF_uniform_float_values.arr[2].el;
+        if ((x_101 < x_103)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  float const x_106 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  return x_106;
+}
+
+void main_1(constant buf1& x_8, constant buf0& x_11, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float param = 0.0f;
+  float const x_41 = (*(tint_symbol_6)).x;
+  param = x_41;
+  float const x_42 = func_f1_(x_8, &(param), tint_symbol_6);
+  float const x_44 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_42 == x_44)) {
+    int const x_50 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    int const x_53 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_59 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_7) = float4(float(x_50), float(x_53), float(x_56), float(x_59));
+  } else {
+    int const x_63 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    float const x_64 = float(x_63);
+    *(tint_symbol_7) = float4(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_8, x_11, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..855bbda
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,229 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 134
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_f1_ "func_f1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %23 = OpTypeFunction %float %_ptr_Function_float
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %87 = OpTypeFunction %void
+         %92 = OpConstantNull %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %121 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %float None %23
+          %x = OpFunctionParameter %_ptr_Function_float
+         %27 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+               OpSelectionMerge %34 None
+               OpBranchConditional %true %35 %36
+         %35 = OpLabel
+               OpBranch %34
+         %36 = OpLabel
+               OpBranch %29
+         %34 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %43 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %44 = OpLoad %float %43
+         %48 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %49 = OpLoad %float %48
+         %50 = OpFOrdLessThan %bool %44 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %58 = OpLoad %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %60 = OpLoad %float %59
+         %61 = OpFOrdLessThan %bool %58 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %54
+         %62 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+         %66 = OpLoad %float %x
+         %68 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_3
+         %69 = OpLoad %float %68
+         %70 = OpFOrdLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %75 = OpLoad %float %74
+               OpReturnValue %75
+         %71 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+         %76 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %79 = OpLoad %float %78
+         %80 = OpFOrdLessThan %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %38
+         %81 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpBranch %28
+         %29 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %86 = OpLoad %float %85
+               OpReturnValue %86
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %87
+         %90 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function %92
+         %93 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %94 = OpLoad %float %93
+               OpStore %param %94
+         %95 = OpFunctionCall %float %func_f1_ %param
+         %97 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %98 = OpLoad %float %97
+         %99 = OpFOrdEqual %bool %95 %98
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %102
+        %101 = OpLabel
+        %104 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %111 = OpLoad %int %110
+        %112 = OpConvertSToF %float %105
+        %113 = OpConvertSToF %float %107
+        %114 = OpConvertSToF %float %109
+        %115 = OpConvertSToF %float %111
+        %116 = OpCompositeConstruct %v4float %112 %113 %114 %115
+               OpStore %x_GLF_color %116
+               OpBranch %100
+        %102 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %118 = OpLoad %int %117
+        %119 = OpConvertSToF %float %118
+        %120 = OpCompositeConstruct %v4float %119 %119 %119 %119
+               OpStore %x_GLF_color %120
+               OpBranch %100
+        %100 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %121
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %125 = OpLabel
+        %126 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %126
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %87
+        %128 = OpLabel
+        %129 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %129
+        %130 = OpFunctionCall %void %main_1
+        %132 = OpLoad %v4float %x_GLF_color
+        %133 = OpCompositeConstruct %main_out %132
+        %131 = OpFunctionCall %void %tint_symbol_3 %133
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 39[%39] is not post dominated by the back-edge block 81[%81]
+  %81 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..36f0a6f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,96 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+fn func_f1_(x : ptr<function, f32>) -> f32 {
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    loop {
+      let x_77 : f32 = gl_FragCoord.y;
+      let x_79 : f32 = x_8.x_GLF_uniform_float_values[2];
+      if ((x_77 < x_79)) {
+        loop {
+
+          continuing {
+            let x_88 : f32 = gl_FragCoord.x;
+            let x_90 : f32 = x_8.x_GLF_uniform_float_values[2];
+            if ((x_88 < x_90)) {
+            } else {
+              break;
+            }
+          }
+        }
+      }
+      let x_92 : f32 = *(x);
+      let x_94 : f32 = x_8.x_GLF_uniform_float_values[3];
+      if ((x_92 < x_94)) {
+        let x_99 : f32 = x_8.x_GLF_uniform_float_values[1];
+        return x_99;
+      }
+
+      continuing {
+        let x_101 : f32 = gl_FragCoord.y;
+        let x_103 : f32 = x_8.x_GLF_uniform_float_values[2];
+        if ((x_101 < x_103)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  let x_106 : f32 = x_8.x_GLF_uniform_float_values[0];
+  return x_106;
+}
+
+fn main_1() {
+  var param : f32;
+  let x_41 : f32 = gl_FragCoord.x;
+  param = x_41;
+  let x_42 : f32 = func_f1_(&(param));
+  let x_44 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_11.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_59 : i32 = x_11.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_50), f32(x_53), f32(x_56), f32(x_59));
+  } else {
+    let x_63 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_64 : f32 = f32(x_63);
+    x_GLF_color = vec4<f32>(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm
new file mode 100644
index 0000000..273ca9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm
@@ -0,0 +1,135 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func_vf2_ "func(vf2;"
+               OpName %pos "pos"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %__0 ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__1 ""
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 0
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %bool = OpTypeBool
+         %22 = OpTypeFunction %bool %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %false = OpConstantFalse %bool
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__1 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %17
+         %41 = OpLabel
+      %param = OpVariable %_ptr_Function_v2float Function
+         %42 = OpLoad %v4float %gl_FragCoord
+         %43 = OpVectorShuffle %v2float %42 %42 0 1
+               OpStore %param %43
+         %44 = OpFunctionCall %bool %func_vf2_ %param
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+               OpKill
+         %45 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpCompositeConstruct %v4float %49 %52 %55 %58
+               OpStore %_GLF_color %59
+               OpReturn
+               OpFunctionEnd
+  %func_vf2_ = OpFunction %bool None %22
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+         %60 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpFOrdLessThan %bool %62 %64
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %66
+         %67 = OpLabel
+               OpReturnValue %true
+         %66 = OpLabel
+         %68 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %69 = OpLoad %float %68
+         %70 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %71 = OpLoad %float %70
+         %72 = OpFOrdGreaterThan %bool %69 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+               OpReturnValue %false
+         %73 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_float %__0 %int_0
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %78 = OpLoad %float %77
+         %79 = OpFOrdGreaterThan %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %80
+         %81 = OpLabel
+               OpReturnValue %true
+         %80 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ca64df3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,69 @@
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+cbuffer cbuffer_x_10 : register(b2, space0) {
+  uint4 x_10[1];
+};
+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);
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[2];
+};
+
+bool func_vf2_(inout float2 pos) {
+  const float x_62 = pos.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_64 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_62 < x_64)) {
+    return true;
+  }
+  const float x_69 = pos.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_71 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_69 > x_71)) {
+    return false;
+  }
+  const float x_76 = asfloat(x_10[0].x);
+  const float x_78 = asfloat(x_8[1].x);
+  if ((x_76 > x_78)) {
+    return true;
+  }
+  return true;
+}
+
+void main_1() {
+  float2 param = float2(0.0f, 0.0f);
+  const float4 x_42 = gl_FragCoord;
+  param = float2(x_42.x, x_42.y);
+  const bool x_44 = func_vf2_(param);
+  if (x_44) {
+    discard;
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_48 = asint(x_13[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_51 = asint(x_13[1].x);
+  const int x_54 = asint(x_13[1].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_57 = asint(x_13[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  x_GLF_color = float4(float(x_48), float(x_51), float(x_54), float(x_57));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d8dcfb9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ float zero;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool func_vf2_(constant buf1& x_8, constant buf2& x_10, thread float2* const pos) {
+  float const x_62 = (*(pos)).x;
+  float const x_64 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_62 < x_64)) {
+    return true;
+  }
+  float const x_69 = (*(pos)).y;
+  float const x_71 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_69 > x_71)) {
+    return false;
+  }
+  float const x_76 = x_10.zero;
+  float const x_78 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_76 > x_78)) {
+    return true;
+  }
+  return true;
+}
+
+void main_1(constant buf1& x_8, constant buf2& x_10, constant buf0& x_13, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 param = 0.0f;
+  float4 const x_42 = *(tint_symbol_5);
+  param = float2(x_42.x, x_42.y);
+  bool const x_44 = func_vf2_(x_8, x_10, &(param));
+  if (x_44) {
+    discard_fragment();
+  }
+  int const x_48 = x_13.x_GLF_uniform_int_values.arr[0].el;
+  int const x_51 = x_13.x_GLF_uniform_int_values.arr[1].el;
+  int const x_54 = x_13.x_GLF_uniform_int_values.arr[1].el;
+  int const x_57 = x_13.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_6) = float4(float(x_48), float(x_51), float(x_54), float(x_57));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf2& x_10 [[buffer(2)]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_10, x_13, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..66c0a8c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,175 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 104
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_13 "x_13"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_vf2_ "func_vf2_"
+               OpName %pos "pos"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_10 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %14 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %14
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %14
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %14
+       %bool = OpTypeBool
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %25 = OpTypeFunction %bool %_ptr_Function_v2float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %63 = OpTypeFunction %void
+         %68 = OpConstantNull %v2float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %91 = OpTypeFunction %void %main_out
+  %func_vf2_ = OpFunction %bool None %25
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+         %31 = OpLabel
+         %35 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %36 = OpLoad %float %35
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %36 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpReturnValue %true
+         %42 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %48 = OpLoad %float %47
+         %49 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpFOrdGreaterThan %bool %48 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpReturnValue %false
+         %52 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %59 = OpLoad %float %58
+         %60 = OpFOrdGreaterThan %bool %56 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpReturnValue %true
+         %61 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %63
+         %66 = OpLabel
+      %param = OpVariable %_ptr_Function_v2float Function %68
+         %69 = OpLoad %v4float %gl_FragCoord
+         %70 = OpCompositeExtract %float %69 0
+         %71 = OpCompositeExtract %float %69 1
+         %72 = OpCompositeConstruct %v2float %70 %71
+               OpStore %param %72
+         %73 = OpFunctionCall %bool %func_vf2_ %param
+               OpSelectionMerge %75 None
+               OpBranchConditional %73 %76 %75
+         %76 = OpLabel
+               OpKill
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %79
+         %87 = OpConvertSToF %float %81
+         %88 = OpConvertSToF %float %83
+         %89 = OpConvertSToF %float %85
+         %90 = OpCompositeConstruct %v4float %86 %87 %88 %89
+               OpStore %x_GLF_color %90
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %91
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %95 = OpLabel
+         %96 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %96
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %63
+         %98 = OpLabel
+         %99 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %99
+        %100 = OpFunctionCall %void %main_1
+        %102 = OpLoad %v4float %x_GLF_color
+        %103 = OpCompositeConstruct %main_out %102
+        %101 = OpFunctionCall %void %tint_symbol_3 %103
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d352923
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,75 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zero : f32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+fn func_vf2_(pos : ptr<function, vec2<f32>>) -> bool {
+  let x_62 : f32 = (*(pos)).x;
+  let x_64 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_62 < x_64)) {
+    return true;
+  }
+  let x_69 : f32 = (*(pos)).y;
+  let x_71 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_69 > x_71)) {
+    return false;
+  }
+  let x_76 : f32 = x_10.zero;
+  let x_78 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_76 > x_78)) {
+    return true;
+  }
+  return true;
+}
+
+fn main_1() {
+  var param : vec2<f32>;
+  let x_42 : vec4<f32> = gl_FragCoord;
+  param = vec2<f32>(x_42.x, x_42.y);
+  let x_44 : bool = func_vf2_(&(param));
+  if (x_44) {
+    discard;
+  }
+  let x_48 : i32 = x_13.x_GLF_uniform_int_values[0];
+  let x_51 : i32 = x_13.x_GLF_uniform_int_values[1];
+  let x_54 : i32 = x_13.x_GLF_uniform_int_values[1];
+  let x_57 : i32 = x_13.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_48), f32(x_51), f32(x_54), f32(x_57));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
new file mode 100644
index 0000000..d352923
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
@@ -0,0 +1,75 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zero : f32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+fn func_vf2_(pos : ptr<function, vec2<f32>>) -> bool {
+  let x_62 : f32 = (*(pos)).x;
+  let x_64 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_62 < x_64)) {
+    return true;
+  }
+  let x_69 : f32 = (*(pos)).y;
+  let x_71 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_69 > x_71)) {
+    return false;
+  }
+  let x_76 : f32 = x_10.zero;
+  let x_78 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_76 > x_78)) {
+    return true;
+  }
+  return true;
+}
+
+fn main_1() {
+  var param : vec2<f32>;
+  let x_42 : vec4<f32> = gl_FragCoord;
+  param = vec2<f32>(x_42.x, x_42.y);
+  let x_44 : bool = func_vf2_(&(param));
+  if (x_44) {
+    discard;
+  }
+  let x_48 : i32 = x_13.x_GLF_uniform_int_values[0];
+  let x_51 : i32 = x_13.x_GLF_uniform_int_values[1];
+  let x_54 : i32 = x_13.x_GLF_uniform_int_values[1];
+  let x_57 : i32 = x_13.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_48), f32(x_51), f32(x_54), f32(x_57));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ca64df3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,69 @@
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+cbuffer cbuffer_x_10 : register(b2, space0) {
+  uint4 x_10[1];
+};
+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);
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[2];
+};
+
+bool func_vf2_(inout float2 pos) {
+  const float x_62 = pos.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_64 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_62 < x_64)) {
+    return true;
+  }
+  const float x_69 = pos.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_71 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_69 > x_71)) {
+    return false;
+  }
+  const float x_76 = asfloat(x_10[0].x);
+  const float x_78 = asfloat(x_8[1].x);
+  if ((x_76 > x_78)) {
+    return true;
+  }
+  return true;
+}
+
+void main_1() {
+  float2 param = float2(0.0f, 0.0f);
+  const float4 x_42 = gl_FragCoord;
+  param = float2(x_42.x, x_42.y);
+  const bool x_44 = func_vf2_(param);
+  if (x_44) {
+    discard;
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_48 = asint(x_13[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_51 = asint(x_13[1].x);
+  const int x_54 = asint(x_13[1].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_57 = asint(x_13[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  x_GLF_color = float4(float(x_48), float(x_51), float(x_54), float(x_57));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d8dcfb9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ float zero;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool func_vf2_(constant buf1& x_8, constant buf2& x_10, thread float2* const pos) {
+  float const x_62 = (*(pos)).x;
+  float const x_64 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_62 < x_64)) {
+    return true;
+  }
+  float const x_69 = (*(pos)).y;
+  float const x_71 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_69 > x_71)) {
+    return false;
+  }
+  float const x_76 = x_10.zero;
+  float const x_78 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_76 > x_78)) {
+    return true;
+  }
+  return true;
+}
+
+void main_1(constant buf1& x_8, constant buf2& x_10, constant buf0& x_13, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 param = 0.0f;
+  float4 const x_42 = *(tint_symbol_5);
+  param = float2(x_42.x, x_42.y);
+  bool const x_44 = func_vf2_(x_8, x_10, &(param));
+  if (x_44) {
+    discard_fragment();
+  }
+  int const x_48 = x_13.x_GLF_uniform_int_values.arr[0].el;
+  int const x_51 = x_13.x_GLF_uniform_int_values.arr[1].el;
+  int const x_54 = x_13.x_GLF_uniform_int_values.arr[1].el;
+  int const x_57 = x_13.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_6) = float4(float(x_48), float(x_51), float(x_54), float(x_57));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf2& x_10 [[buffer(2)]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_10, x_13, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..66c0a8c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,175 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 104
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_13 "x_13"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_vf2_ "func_vf2_"
+               OpName %pos "pos"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_10 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %14 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %14
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %14
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %14
+       %bool = OpTypeBool
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %25 = OpTypeFunction %bool %_ptr_Function_v2float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %63 = OpTypeFunction %void
+         %68 = OpConstantNull %v2float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %91 = OpTypeFunction %void %main_out
+  %func_vf2_ = OpFunction %bool None %25
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+         %31 = OpLabel
+         %35 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %36 = OpLoad %float %35
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %36 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpReturnValue %true
+         %42 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %48 = OpLoad %float %47
+         %49 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpFOrdGreaterThan %bool %48 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpReturnValue %false
+         %52 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %59 = OpLoad %float %58
+         %60 = OpFOrdGreaterThan %bool %56 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpReturnValue %true
+         %61 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %63
+         %66 = OpLabel
+      %param = OpVariable %_ptr_Function_v2float Function %68
+         %69 = OpLoad %v4float %gl_FragCoord
+         %70 = OpCompositeExtract %float %69 0
+         %71 = OpCompositeExtract %float %69 1
+         %72 = OpCompositeConstruct %v2float %70 %71
+               OpStore %param %72
+         %73 = OpFunctionCall %bool %func_vf2_ %param
+               OpSelectionMerge %75 None
+               OpBranchConditional %73 %76 %75
+         %76 = OpLabel
+               OpKill
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %79
+         %87 = OpConvertSToF %float %81
+         %88 = OpConvertSToF %float %83
+         %89 = OpConvertSToF %float %85
+         %90 = OpCompositeConstruct %v4float %86 %87 %88 %89
+               OpStore %x_GLF_color %90
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %91
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %95 = OpLabel
+         %96 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %96
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %63
+         %98 = OpLabel
+         %99 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %99
+        %100 = OpFunctionCall %void %main_1
+        %102 = OpLoad %v4float %x_GLF_color
+        %103 = OpCompositeConstruct %main_out %102
+        %101 = OpFunctionCall %void %tint_symbol_3 %103
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d352923
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,75 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zero : f32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+fn func_vf2_(pos : ptr<function, vec2<f32>>) -> bool {
+  let x_62 : f32 = (*(pos)).x;
+  let x_64 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_62 < x_64)) {
+    return true;
+  }
+  let x_69 : f32 = (*(pos)).y;
+  let x_71 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_69 > x_71)) {
+    return false;
+  }
+  let x_76 : f32 = x_10.zero;
+  let x_78 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_76 > x_78)) {
+    return true;
+  }
+  return true;
+}
+
+fn main_1() {
+  var param : vec2<f32>;
+  let x_42 : vec4<f32> = gl_FragCoord;
+  param = vec2<f32>(x_42.x, x_42.y);
+  let x_44 : bool = func_vf2_(&(param));
+  if (x_44) {
+    discard;
+  }
+  let x_48 : i32 = x_13.x_GLF_uniform_int_values[0];
+  let x_51 : i32 = x_13.x_GLF_uniform_int_values[1];
+  let x_54 : i32 = x_13.x_GLF_uniform_int_values[1];
+  let x_57 : i32 = x_13.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_48), f32(x_51), f32(x_54), f32(x_57));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm
new file mode 100644
index 0000000..20110aa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm
@@ -0,0 +1,113 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %9
+         %24 = OpLabel
+               OpStore %_GLF_global_loop_count %int_0
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %26 = OpLoad %int %25
+         %27 = OpConvertSToF %float %26
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %28
+         %30 = OpConvertSToF %float %29
+         %31 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpConvertSToF %float %32
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpConvertSToF %float %35
+         %37 = OpCompositeConstruct %v4float %27 %30 %33 %36
+               OpStore %_GLF_color %37
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpLoad %int %_GLF_global_loop_count
+         %43 = OpSLessThan %bool %42 %int_100
+               OpBranchConditional %43 %44 %39
+         %44 = OpLabel
+         %45 = OpLoad %int %_GLF_global_loop_count
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %_GLF_global_loop_count %46
+         %47 = OpLogicalNot %bool %true
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpIEqual %bool %51 %53
+               OpBranch %48
+         %48 = OpLabel
+         %55 = OpPhi %bool %true %44 %54 %49
+         %56 = OpLogicalNot %bool %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %39
+         %57 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+               OpBranch %38
+         %39 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %_GLF_global_loop_count
+         %64 = OpSLessThan %bool %63 %int_100
+               OpBranchConditional %64 %65 %60
+         %65 = OpLabel
+         %66 = OpLoad %int %_GLF_global_loop_count
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %_GLF_global_loop_count %67
+         %68 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpCompositeConstruct %v4float %70 %70 %70 %70
+               OpStore %_GLF_color %71
+               OpBranch %61
+         %61 = OpLabel
+               OpBranch %59
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f3abef7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,62 @@
+static int x_GLF_global_loop_count = 0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+
+void main_1() {
+  x_GLF_global_loop_count = 0;
+  const int x_26 = asint(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_32 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_35 = asint(x_6[1].x);
+  x_GLF_color = float4(float(x_26), float(x_29), float(x_32), float(x_35));
+  while (true) {
+    bool x_54 = false;
+    bool x_55_phi = false;
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    x_55_phi = true;
+    if (!(true)) {
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_51 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      const int x_53 = asint(x_6[1].x);
+      x_54 = (x_51 == x_53);
+      x_55_phi = x_54;
+    }
+    if (!(x_55_phi)) {
+      break;
+    }
+  }
+  while (true) {
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_69 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_70 = float(x_69);
+    x_GLF_color = float4(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..80f3c6a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.msl
@@ -0,0 +1,73 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  *(tint_symbol_4) = 0;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  *(tint_symbol_5) = float4(float(x_26), float(x_29), float(x_32), float(x_35));
+  while (true) {
+    bool x_54 = false;
+    bool x_55_phi = false;
+    int const x_42 = *(tint_symbol_4);
+    if ((x_42 < 100)) {
+    } else {
+      break;
+    }
+    int const x_45 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_45 + 1);
+    x_55_phi = true;
+    if (!(true)) {
+      int const x_51 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      x_54 = (x_51 == x_53);
+      x_55_phi = x_54;
+    }
+    bool const x_55 = x_55_phi;
+    if (!(x_55)) {
+      break;
+    }
+  }
+  while (true) {
+    int const x_63 = *(tint_symbol_4);
+    if ((x_63 < 100)) {
+    } else {
+      break;
+    }
+    int const x_66 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_66 + 1);
+    int const x_69 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_70 = float(x_69);
+    *(tint_symbol_5) = float4(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d85fb18
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,166 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 97
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_54 "x_54"
+               OpName %x_55_phi "x_55_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %46 = OpConstantNull %bool
+    %int_100 = OpConstant %int 100
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %85 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+       %x_54 = OpVariable %_ptr_Function_bool Function %46
+   %x_55_phi = OpVariable %_ptr_Function_bool Function %46
+               OpStore %x_GLF_global_loop_count %int_0
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %29 = OpLoad %int %28
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %34 = OpConvertSToF %float %27
+         %35 = OpConvertSToF %float %29
+         %36 = OpConvertSToF %float %31
+         %37 = OpConvertSToF %float %33
+         %38 = OpCompositeConstruct %v4float %34 %35 %36 %37
+               OpStore %x_GLF_color %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %48 = OpLoad %int %x_GLF_global_loop_count
+         %50 = OpSLessThan %bool %48 %int_100
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %40
+         %51 = OpLabel
+         %54 = OpLoad %int %x_GLF_global_loop_count
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %x_GLF_global_loop_count %55
+               OpStore %x_55_phi %true
+         %57 = OpLogicalNot %bool %true
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpIEqual %bool %61 %63
+               OpStore %x_54 %64
+         %65 = OpLoad %bool %x_54
+               OpStore %x_55_phi %65
+               OpBranch %58
+         %58 = OpLabel
+         %66 = OpLoad %bool %x_55_phi
+         %67 = OpLogicalNot %bool %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpBranch %40
+         %68 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %x_GLF_global_loop_count
+         %75 = OpSLessThan %bool %74 %int_100
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+               OpBranch %76
+         %78 = OpLabel
+               OpBranch %71
+         %76 = OpLabel
+         %79 = OpLoad %int %x_GLF_global_loop_count
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %x_GLF_global_loop_count %80
+         %81 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %82
+         %84 = OpCompositeConstruct %v4float %83 %83 %83 %83
+               OpStore %x_GLF_color %84
+               OpBranch %72
+         %72 = OpLabel
+               OpBranch %70
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %85
+%tint_symbol = OpFunctionParameter %main_out
+         %89 = OpLabel
+         %90 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %90
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %92 = OpLabel
+         %93 = OpFunctionCall %void %main_1
+         %95 = OpLoad %v4float %x_GLF_color
+         %96 = OpCompositeConstruct %main_out %95
+         %94 = OpFunctionCall %void %tint_symbol_2 %96
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1beed3d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,67 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_26), f32(x_29), f32(x_32), f32(x_35));
+  loop {
+    var x_54 : bool;
+    var x_55_phi : bool;
+    let x_42 : i32 = x_GLF_global_loop_count;
+    if ((x_42 < 100)) {
+    } else {
+      break;
+    }
+    let x_45 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_45 + 1);
+    x_55_phi = true;
+    if (!(true)) {
+      let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+      x_54 = (x_51 == x_53);
+      x_55_phi = x_54;
+    }
+    let x_55 : bool = x_55_phi;
+    if (!(x_55)) {
+      break;
+    }
+  }
+  loop {
+    let x_63 : i32 = x_GLF_global_loop_count;
+    if ((x_63 < 100)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_66 + 1);
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_70 : f32 = f32(x_69);
+    x_GLF_color = vec4<f32>(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
new file mode 100644
index 0000000..1beed3d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
@@ -0,0 +1,67 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_26), f32(x_29), f32(x_32), f32(x_35));
+  loop {
+    var x_54 : bool;
+    var x_55_phi : bool;
+    let x_42 : i32 = x_GLF_global_loop_count;
+    if ((x_42 < 100)) {
+    } else {
+      break;
+    }
+    let x_45 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_45 + 1);
+    x_55_phi = true;
+    if (!(true)) {
+      let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+      x_54 = (x_51 == x_53);
+      x_55_phi = x_54;
+    }
+    let x_55 : bool = x_55_phi;
+    if (!(x_55)) {
+      break;
+    }
+  }
+  loop {
+    let x_63 : i32 = x_GLF_global_loop_count;
+    if ((x_63 < 100)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_66 + 1);
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_70 : f32 = f32(x_69);
+    x_GLF_color = vec4<f32>(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f3abef7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,62 @@
+static int x_GLF_global_loop_count = 0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+
+void main_1() {
+  x_GLF_global_loop_count = 0;
+  const int x_26 = asint(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_32 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_35 = asint(x_6[1].x);
+  x_GLF_color = float4(float(x_26), float(x_29), float(x_32), float(x_35));
+  while (true) {
+    bool x_54 = false;
+    bool x_55_phi = false;
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    x_55_phi = true;
+    if (!(true)) {
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_51 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      const int x_53 = asint(x_6[1].x);
+      x_54 = (x_51 == x_53);
+      x_55_phi = x_54;
+    }
+    if (!(x_55_phi)) {
+      break;
+    }
+  }
+  while (true) {
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_69 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_70 = float(x_69);
+    x_GLF_color = float4(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..80f3c6a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.msl
@@ -0,0 +1,73 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  *(tint_symbol_4) = 0;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  *(tint_symbol_5) = float4(float(x_26), float(x_29), float(x_32), float(x_35));
+  while (true) {
+    bool x_54 = false;
+    bool x_55_phi = false;
+    int const x_42 = *(tint_symbol_4);
+    if ((x_42 < 100)) {
+    } else {
+      break;
+    }
+    int const x_45 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_45 + 1);
+    x_55_phi = true;
+    if (!(true)) {
+      int const x_51 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      x_54 = (x_51 == x_53);
+      x_55_phi = x_54;
+    }
+    bool const x_55 = x_55_phi;
+    if (!(x_55)) {
+      break;
+    }
+  }
+  while (true) {
+    int const x_63 = *(tint_symbol_4);
+    if ((x_63 < 100)) {
+    } else {
+      break;
+    }
+    int const x_66 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_66 + 1);
+    int const x_69 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_70 = float(x_69);
+    *(tint_symbol_5) = float4(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d85fb18
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,166 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 97
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_54 "x_54"
+               OpName %x_55_phi "x_55_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %46 = OpConstantNull %bool
+    %int_100 = OpConstant %int 100
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %85 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+       %x_54 = OpVariable %_ptr_Function_bool Function %46
+   %x_55_phi = OpVariable %_ptr_Function_bool Function %46
+               OpStore %x_GLF_global_loop_count %int_0
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %29 = OpLoad %int %28
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %34 = OpConvertSToF %float %27
+         %35 = OpConvertSToF %float %29
+         %36 = OpConvertSToF %float %31
+         %37 = OpConvertSToF %float %33
+         %38 = OpCompositeConstruct %v4float %34 %35 %36 %37
+               OpStore %x_GLF_color %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %48 = OpLoad %int %x_GLF_global_loop_count
+         %50 = OpSLessThan %bool %48 %int_100
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %40
+         %51 = OpLabel
+         %54 = OpLoad %int %x_GLF_global_loop_count
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %x_GLF_global_loop_count %55
+               OpStore %x_55_phi %true
+         %57 = OpLogicalNot %bool %true
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpIEqual %bool %61 %63
+               OpStore %x_54 %64
+         %65 = OpLoad %bool %x_54
+               OpStore %x_55_phi %65
+               OpBranch %58
+         %58 = OpLabel
+         %66 = OpLoad %bool %x_55_phi
+         %67 = OpLogicalNot %bool %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpBranch %40
+         %68 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %x_GLF_global_loop_count
+         %75 = OpSLessThan %bool %74 %int_100
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+               OpBranch %76
+         %78 = OpLabel
+               OpBranch %71
+         %76 = OpLabel
+         %79 = OpLoad %int %x_GLF_global_loop_count
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %x_GLF_global_loop_count %80
+         %81 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %82
+         %84 = OpCompositeConstruct %v4float %83 %83 %83 %83
+               OpStore %x_GLF_color %84
+               OpBranch %72
+         %72 = OpLabel
+               OpBranch %70
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %85
+%tint_symbol = OpFunctionParameter %main_out
+         %89 = OpLabel
+         %90 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %90
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %92 = OpLabel
+         %93 = OpFunctionCall %void %main_1
+         %95 = OpLoad %v4float %x_GLF_color
+         %96 = OpCompositeConstruct %main_out %95
+         %94 = OpFunctionCall %void %tint_symbol_2 %96
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1beed3d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,67 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_26), f32(x_29), f32(x_32), f32(x_35));
+  loop {
+    var x_54 : bool;
+    var x_55_phi : bool;
+    let x_42 : i32 = x_GLF_global_loop_count;
+    if ((x_42 < 100)) {
+    } else {
+      break;
+    }
+    let x_45 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_45 + 1);
+    x_55_phi = true;
+    if (!(true)) {
+      let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+      x_54 = (x_51 == x_53);
+      x_55_phi = x_54;
+    }
+    let x_55 : bool = x_55_phi;
+    if (!(x_55)) {
+      break;
+    }
+  }
+  loop {
+    let x_63 : i32 = x_GLF_global_loop_count;
+    if ((x_63 < 100)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_66 + 1);
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_70 : f32 = f32(x_69);
+    x_GLF_color = vec4<f32>(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm
new file mode 100644
index 0000000..be0f8f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm
@@ -0,0 +1,267 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %m "m"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v "v"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %b "b"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "one"
+               OpName %__1 ""
+               OpName %zero "zero"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_18 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 2
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+       %uint = OpTypeInt 32 0
+    %uint_18 = OpConstant %uint 18
+%_arr_float_uint_18 = OpTypeArray %float %uint_18
+       %buf1 = OpTypeStruct %_arr_float_uint_18
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+     %int_11 = OpConstant %int 11
+     %int_12 = OpConstant %int 12
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+       %buf2 = OpTypeStruct %int
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__1 = OpVariable %_ptr_Uniform_buf2 Uniform
+     %int_17 = OpConstant %int 17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %20
+         %60 = OpLabel
+          %m = OpVariable %_ptr_Function_mat4v4float Function
+          %v = OpVariable %_ptr_Function_v4float Function
+          %f = OpVariable %_ptr_Function_float Function
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+       %zero = OpVariable %_ptr_Function_float Function
+               OpStore %_GLF_global_loop_count %int_0
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_4
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_5
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_6
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_7
+         %74 = OpLoad %float %73
+         %75 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_8
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_9
+         %78 = OpLoad %float %77
+         %79 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_10
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_11
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_12
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_13
+         %86 = OpLoad %float %85
+         %87 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_14
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_15
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_16
+         %92 = OpLoad %float %91
+         %93 = OpCompositeConstruct %v4float %62 %64 %66 %68
+         %94 = OpCompositeConstruct %v4float %70 %72 %74 %76
+         %95 = OpCompositeConstruct %v4float %78 %80 %82 %84
+         %96 = OpCompositeConstruct %v4float %86 %88 %90 %92
+         %97 = OpCompositeConstruct %mat4v4float %93 %94 %95 %96
+               OpStore %m %97
+         %98 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+        %101 = OpLoad %float %100
+        %102 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_4
+        %105 = OpLoad %float %104
+        %106 = OpCompositeConstruct %v4float %99 %101 %103 %105
+               OpStore %v %106
+        %107 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %108 = OpLoad %float %107
+               OpStore %f %108
+        %109 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %110 = OpLoad %int %109
+               OpStore %a %110
+               OpBranch %111
+        %111 = OpLabel
+               OpLoopMerge %112 %113 None
+               OpBranch %114
+        %114 = OpLabel
+        %115 = OpLoad %int %_GLF_global_loop_count
+        %116 = OpSLessThan %bool %115 %int_10
+               OpBranchConditional %116 %117 %112
+        %117 = OpLabel
+        %118 = OpLoad %int %_GLF_global_loop_count
+        %119 = OpIAdd %int %118 %int_1
+               OpStore %_GLF_global_loop_count %119
+        %120 = OpLoad %int %a
+        %121 = OpExtInst %int %1 SClamp %120 %int_0 %int_3
+        %122 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Function_float %v %121
+        %125 = OpLoad %float %124
+        %126 = OpFAdd %float %125 %123
+        %127 = OpAccessChain %_ptr_Function_float %v %121
+               OpStore %127 %126
+        %128 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %129 = OpLoad %int %128
+               OpStore %b %129
+               OpBranch %130
+        %130 = OpLabel
+               OpLoopMerge %131 %132 None
+               OpBranch %133
+        %133 = OpLabel
+        %134 = OpLoad %int %_GLF_global_loop_count
+        %135 = OpSLessThan %bool %134 %int_10
+               OpBranchConditional %135 %136 %131
+        %136 = OpLabel
+        %137 = OpLoad %int %_GLF_global_loop_count
+        %138 = OpIAdd %int %137 %int_1
+               OpStore %_GLF_global_loop_count %138
+        %139 = OpLoad %int %b
+        %140 = OpExtInst %int %1 SClamp %139 %int_0 %int_3
+        %141 = OpAccessChain %_ptr_Function_float %v %140
+        %142 = OpLoad %float %141
+        %143 = OpLoad %int %b
+        %144 = OpExtInst %int %1 SClamp %143 %int_0 %int_3
+        %145 = OpLoad %int %a
+        %146 = OpAccessChain %_ptr_Function_float %m %144 %145
+        %147 = OpLoad %float %146
+        %148 = OpFMul %float %142 %147
+        %149 = OpLoad %float %f
+        %150 = OpFAdd %float %149 %148
+               OpStore %f %150
+               OpBranch %132
+        %132 = OpLabel
+        %151 = OpLoad %int %b
+        %152 = OpISub %int %151 %int_1
+               OpStore %b %152
+               OpBranch %130
+        %131 = OpLabel
+        %153 = OpLoad %int %a
+        %154 = OpExtInst %int %1 SClamp %153 %int_0 %int_3
+        %155 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %156 = OpLoad %float %155
+        %157 = OpAccessChain %_ptr_Function_float %m %int_1 %154
+               OpStore %157 %156
+        %158 = OpAccessChain %_ptr_Uniform_int %__1 %int_0
+        %159 = OpLoad %int %158
+        %160 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %161 = OpLoad %int %160
+        %162 = OpIEqual %bool %159 %161
+               OpSelectionMerge %163 None
+               OpBranchConditional %162 %164 %163
+        %164 = OpLabel
+               OpKill
+        %163 = OpLabel
+        %165 = OpAccessChain %_ptr_Uniform_int %__1 %int_0
+        %166 = OpLoad %int %165
+        %167 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %168 = OpLoad %int %167
+        %169 = OpIEqual %bool %166 %168
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %170
+        %171 = OpLabel
+               OpKill
+        %170 = OpLabel
+               OpBranch %113
+        %113 = OpLabel
+        %172 = OpLoad %int %a
+        %173 = OpIAdd %int %172 %int_1
+               OpStore %a %173
+               OpBranch %111
+        %112 = OpLabel
+        %174 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %175 = OpLoad %float %174
+               OpStore %zero %175
+        %176 = OpLoad %float %f
+        %177 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_17
+        %178 = OpLoad %float %177
+        %179 = OpFUnordNotEqual %bool %176 %178
+               OpSelectionMerge %180 None
+               OpBranchConditional %179 %181 %180
+        %181 = OpLabel
+        %182 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %183 = OpLoad %float %182
+               OpStore %zero %183
+               OpBranch %180
+        %180 = OpLabel
+        %184 = OpLoad %float %f
+        %185 = OpLoad %float %zero
+        %186 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %187 = OpLoad %int %186
+        %188 = OpConvertSToF %float %187
+        %189 = OpLoad %float %f
+        %190 = OpCompositeConstruct %v4float %184 %185 %188 %189
+               OpStore %_GLF_color %190
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1765c5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,114 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[18];
+};
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[4];
+};
+cbuffer cbuffer_x_15 : register(b2, space0) {
+  uint4 x_15[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4x4 m = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  float zero = 0.0f;
+  x_GLF_global_loop_count = 0;
+  const float x_62 = asfloat(x_7[1].x);
+  const float x_64 = asfloat(x_7[2].x);
+  const float x_66 = asfloat(x_7[3].x);
+  const float x_68 = asfloat(x_7[4].x);
+  const float x_70 = asfloat(x_7[5].x);
+  const float x_72 = asfloat(x_7[6].x);
+  const float x_74 = asfloat(x_7[7].x);
+  const float x_76 = asfloat(x_7[8].x);
+  const float x_78 = asfloat(x_7[9].x);
+  const float x_80 = asfloat(x_7[10].x);
+  const float x_82 = asfloat(x_7[11].x);
+  const float x_84 = asfloat(x_7[12].x);
+  const float x_86 = asfloat(x_7[13].x);
+  const float x_88 = asfloat(x_7[14].x);
+  const float x_90 = asfloat(x_7[15].x);
+  const float x_92 = asfloat(x_7[16].x);
+  m = float4x4(float4(x_62, x_64, x_66, x_68), float4(x_70, x_72, x_74, x_76), float4(x_78, x_80, x_82, x_84), float4(x_86, x_88, x_90, x_92));
+  const float x_99 = asfloat(x_7[1].x);
+  const float x_101 = asfloat(x_7[2].x);
+  const float x_103 = asfloat(x_7[3].x);
+  const float x_105 = asfloat(x_7[4].x);
+  v = float4(x_99, x_101, x_103, x_105);
+  const float x_108 = asfloat(x_7[1].x);
+  f = x_108;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_110 = asint(x_12[scalar_offset / 4][scalar_offset % 4]);
+  a = x_110;
+  {
+    for(; (x_GLF_global_loop_count < 10); a = (a + 1)) {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      const int x_121 = clamp(a, 0, 3);
+      const float x_123 = asfloat(x_7[1].x);
+      const float x_125 = v[x_121];
+      set_float4(v, x_121, (x_125 + x_123));
+      const int x_129 = asint(x_12[2].x);
+      b = x_129;
+      {
+        for(; (x_GLF_global_loop_count < 10); b = (b - 1)) {
+          x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+          const float x_142 = v[clamp(b, 0, 3)];
+          const float x_147 = m[clamp(b, 0, 3)][a];
+          f = (f + (x_142 * x_147));
+        }
+      }
+      const int x_153 = a;
+      const float x_156 = asfloat(x_7[1].x);
+      set_float4(m[1], clamp(x_153, 0, 3), x_156);
+      const int x_159 = asint(x_15[0].x);
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const int x_161 = asint(x_12[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_159 == x_161)) {
+        discard;
+      }
+      const int x_166 = asint(x_15[0].x);
+      const int x_168 = asint(x_12[1].x);
+      if ((x_166 == x_168)) {
+        discard;
+      }
+    }
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_175 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  zero = x_175;
+  const float x_176 = f;
+  const float x_178 = asfloat(x_7[17].x);
+  if (!((x_176 == x_178))) {
+    const float x_183 = asfloat(x_7[1].x);
+    zero = x_183;
+  }
+  const float x_184 = f;
+  const float x_185 = zero;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_187 = asint(x_12[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  x_GLF_color = float4(x_184, x_185, float(x_187), f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..68f7998
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.msl
@@ -0,0 +1,145 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[18];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct buf2 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_12, constant buf2& x_15, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  float4x4 m = float4x4(0.0f);
+  float4 v = 0.0f;
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  float zero = 0.0f;
+  *(tint_symbol_4) = 0;
+  float const x_62 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_64 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_66 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  float const x_68 = x_7.x_GLF_uniform_float_values.arr[4].el;
+  float const x_70 = x_7.x_GLF_uniform_float_values.arr[5].el;
+  float const x_72 = x_7.x_GLF_uniform_float_values.arr[6].el;
+  float const x_74 = x_7.x_GLF_uniform_float_values.arr[7].el;
+  float const x_76 = x_7.x_GLF_uniform_float_values.arr[8].el;
+  float const x_78 = x_7.x_GLF_uniform_float_values.arr[9].el;
+  float const x_80 = x_7.x_GLF_uniform_float_values.arr[10].el;
+  float const x_82 = x_7.x_GLF_uniform_float_values.arr[11].el;
+  float const x_84 = x_7.x_GLF_uniform_float_values.arr[12].el;
+  float const x_86 = x_7.x_GLF_uniform_float_values.arr[13].el;
+  float const x_88 = x_7.x_GLF_uniform_float_values.arr[14].el;
+  float const x_90 = x_7.x_GLF_uniform_float_values.arr[15].el;
+  float const x_92 = x_7.x_GLF_uniform_float_values.arr[16].el;
+  m = float4x4(float4(x_62, x_64, x_66, x_68), float4(x_70, x_72, x_74, x_76), float4(x_78, x_80, x_82, x_84), float4(x_86, x_88, x_90, x_92));
+  float const x_99 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_101 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_103 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  float const x_105 = x_7.x_GLF_uniform_float_values.arr[4].el;
+  v = float4(x_99, x_101, x_103, x_105);
+  float const x_108 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  f = x_108;
+  int const x_110 = x_12.x_GLF_uniform_int_values.arr[0].el;
+  a = x_110;
+  while (true) {
+    int const x_115 = *(tint_symbol_4);
+    if ((x_115 < 10)) {
+    } else {
+      break;
+    }
+    int const x_118 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_118 + 1);
+    int const x_120 = a;
+    int const x_121 = clamp(x_120, 0, 3);
+    float const x_123 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    float const x_125 = v[x_121];
+    v[x_121] = (x_125 + x_123);
+    int const x_129 = x_12.x_GLF_uniform_int_values.arr[2].el;
+    b = x_129;
+    while (true) {
+      int const x_134 = *(tint_symbol_4);
+      if ((x_134 < 10)) {
+      } else {
+        break;
+      }
+      int const x_137 = *(tint_symbol_4);
+      *(tint_symbol_4) = (x_137 + 1);
+      int const x_139 = b;
+      float const x_142 = v[clamp(x_139, 0, 3)];
+      int const x_143 = b;
+      int const x_145 = a;
+      float const x_147 = m[clamp(x_143, 0, 3)][x_145];
+      float const x_149 = f;
+      f = (x_149 + (x_142 * x_147));
+      {
+        int const x_151 = b;
+        b = (x_151 - 1);
+      }
+    }
+    int const x_153 = a;
+    float const x_156 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    m[1][clamp(x_153, 0, 3)] = x_156;
+    int const x_159 = x_15.one;
+    int const x_161 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_159 == x_161)) {
+      discard_fragment();
+    }
+    int const x_166 = x_15.one;
+    int const x_168 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_166 == x_168)) {
+      discard_fragment();
+    }
+    {
+      int const x_172 = a;
+      a = (x_172 + 1);
+    }
+  }
+  float const x_175 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  zero = x_175;
+  float const x_176 = f;
+  float const x_178 = x_7.x_GLF_uniform_float_values.arr[17].el;
+  if (!((x_176 == x_178))) {
+    float const x_183 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    zero = x_183;
+  }
+  float const x_184 = f;
+  float const x_185 = zero;
+  int const x_187 = x_12.x_GLF_uniform_int_values.arr[0].el;
+  float const x_189 = f;
+  *(tint_symbol_5) = float4(x_184, x_185, float(x_187), x_189);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]], constant buf2& x_15 [[buffer(2)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_12, x_15, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f1de9d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,314 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 213
+; Schema: 0
+               OpCapability Shader
+        %127 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "one"
+               OpName %x_15 "x_15"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %v "v"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %zero "zero"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_18 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_15 NonWritable
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 2
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+    %uint_18 = OpConstant %uint 18
+%_arr_float_uint_18 = OpTypeArray %float %uint_18
+       %buf1 = OpTypeStruct %_arr_float_uint_18
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf2 = OpTypeStruct %int
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_15 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %23 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %23
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %23
+       %void = OpTypeVoid
+         %26 = OpTypeFunction %void
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %33 = OpConstantNull %mat4v4float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %38 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+     %int_11 = OpConstant %int 11
+     %int_12 = OpConstant %int 12
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_17 = OpConstant %int 17
+   %main_out = OpTypeStruct %v4float
+        %201 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %26
+         %29 = OpLabel
+          %m = OpVariable %_ptr_Function_mat4v4float Function %33
+          %v = OpVariable %_ptr_Function_v4float Function %23
+          %f = OpVariable %_ptr_Function_float Function %38
+          %a = OpVariable %_ptr_Function_int Function %4
+          %b = OpVariable %_ptr_Function_int Function %4
+       %zero = OpVariable %_ptr_Function_float Function %38
+               OpStore %x_GLF_global_loop_count %int_0
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %50 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %51 = OpLoad %float %50
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+         %54 = OpLoad %float %53
+         %56 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_4
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_5
+         %60 = OpLoad %float %59
+         %62 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_6
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_7
+         %66 = OpLoad %float %65
+         %68 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_8
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_9
+         %72 = OpLoad %float %71
+         %74 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_10
+         %75 = OpLoad %float %74
+         %77 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_11
+         %78 = OpLoad %float %77
+         %80 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_12
+         %81 = OpLoad %float %80
+         %83 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_13
+         %84 = OpLoad %float %83
+         %86 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_14
+         %87 = OpLoad %float %86
+         %89 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_15
+         %90 = OpLoad %float %89
+         %92 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_16
+         %93 = OpLoad %float %92
+         %94 = OpCompositeConstruct %v4float %48 %51 %54 %57
+         %95 = OpCompositeConstruct %v4float %60 %63 %66 %69
+         %96 = OpCompositeConstruct %v4float %72 %75 %78 %81
+         %97 = OpCompositeConstruct %v4float %84 %87 %90 %93
+         %98 = OpCompositeConstruct %mat4v4float %94 %95 %96 %97
+               OpStore %m %98
+         %99 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %100 = OpLoad %float %99
+        %101 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+        %102 = OpLoad %float %101
+        %103 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_4
+        %106 = OpLoad %float %105
+        %107 = OpCompositeConstruct %v4float %100 %102 %104 %106
+               OpStore %v %107
+        %108 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %109 = OpLoad %float %108
+               OpStore %f %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %112 = OpLoad %int %111
+               OpStore %a %112
+               OpBranch %113
+        %113 = OpLabel
+               OpLoopMerge %114 %115 None
+               OpBranch %116
+        %116 = OpLabel
+        %117 = OpLoad %int %x_GLF_global_loop_count
+        %118 = OpSLessThan %bool %117 %int_10
+               OpSelectionMerge %120 None
+               OpBranchConditional %118 %121 %122
+        %121 = OpLabel
+               OpBranch %120
+        %122 = OpLabel
+               OpBranch %114
+        %120 = OpLabel
+        %123 = OpLoad %int %x_GLF_global_loop_count
+        %124 = OpIAdd %int %123 %int_1
+               OpStore %x_GLF_global_loop_count %124
+        %125 = OpLoad %int %a
+        %126 = OpExtInst %int %127 SClamp %125 %int_0 %int_3
+        %128 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %129 = OpLoad %float %128
+        %130 = OpAccessChain %_ptr_Function_float %v %126
+        %131 = OpLoad %float %130
+        %132 = OpAccessChain %_ptr_Function_float %v %126
+        %133 = OpFAdd %float %131 %129
+               OpStore %132 %133
+        %134 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_2
+        %135 = OpLoad %int %134
+               OpStore %b %135
+               OpBranch %136
+        %136 = OpLabel
+               OpLoopMerge %137 %138 None
+               OpBranch %139
+        %139 = OpLabel
+        %140 = OpLoad %int %x_GLF_global_loop_count
+        %141 = OpSLessThan %bool %140 %int_10
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %137
+        %142 = OpLabel
+        %145 = OpLoad %int %x_GLF_global_loop_count
+        %146 = OpIAdd %int %145 %int_1
+               OpStore %x_GLF_global_loop_count %146
+        %147 = OpLoad %int %b
+        %148 = OpExtInst %int %127 SClamp %147 %int_0 %int_3
+        %149 = OpAccessChain %_ptr_Function_float %v %148
+        %150 = OpLoad %float %149
+        %151 = OpLoad %int %b
+        %152 = OpLoad %int %a
+        %153 = OpExtInst %int %127 SClamp %151 %int_0 %int_3
+        %154 = OpAccessChain %_ptr_Function_float %m %153 %152
+        %155 = OpLoad %float %154
+        %156 = OpLoad %float %f
+        %157 = OpFMul %float %150 %155
+        %158 = OpFAdd %float %156 %157
+               OpStore %f %158
+               OpBranch %138
+        %138 = OpLabel
+        %159 = OpLoad %int %b
+        %160 = OpISub %int %159 %int_1
+               OpStore %b %160
+               OpBranch %136
+        %137 = OpLabel
+        %161 = OpLoad %int %a
+        %162 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %163 = OpLoad %float %162
+        %164 = OpExtInst %int %127 SClamp %161 %int_0 %int_3
+        %165 = OpAccessChain %_ptr_Function_float %m %int_1 %164
+               OpStore %165 %163
+        %166 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0
+        %167 = OpLoad %int %166
+        %168 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %169 = OpLoad %int %168
+        %170 = OpIEqual %bool %167 %169
+               OpSelectionMerge %171 None
+               OpBranchConditional %170 %172 %171
+        %172 = OpLabel
+               OpKill
+        %171 = OpLabel
+        %173 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0
+        %174 = OpLoad %int %173
+        %175 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %176 = OpLoad %int %175
+        %177 = OpIEqual %bool %174 %176
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %178
+        %179 = OpLabel
+               OpKill
+        %178 = OpLabel
+               OpBranch %115
+        %115 = OpLabel
+        %180 = OpLoad %int %a
+        %181 = OpIAdd %int %180 %int_1
+               OpStore %a %181
+               OpBranch %113
+        %114 = OpLabel
+        %182 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+        %183 = OpLoad %float %182
+               OpStore %zero %183
+        %184 = OpLoad %float %f
+        %186 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_17
+        %187 = OpLoad %float %186
+        %189 = OpFOrdEqual %bool %184 %187
+        %188 = OpLogicalNot %bool %189
+               OpSelectionMerge %190 None
+               OpBranchConditional %188 %191 %190
+        %191 = OpLabel
+        %192 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %193 = OpLoad %float %192
+               OpStore %zero %193
+               OpBranch %190
+        %190 = OpLabel
+        %194 = OpLoad %float %f
+        %195 = OpLoad %float %zero
+        %196 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %197 = OpLoad %int %196
+        %198 = OpLoad %float %f
+        %199 = OpConvertSToF %float %197
+        %200 = OpCompositeConstruct %v4float %194 %195 %199 %198
+               OpStore %x_GLF_color %200
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %201
+%tint_symbol = OpFunctionParameter %main_out
+        %205 = OpLabel
+        %206 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %206
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %26
+        %208 = OpLabel
+        %209 = OpFunctionCall %void %main_1
+        %211 = OpLoad %v4float %x_GLF_color
+        %212 = OpCompositeConstruct %main_out %211
+        %210 = OpFunctionCall %void %tint_symbol_2 %212
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..40aaeca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,144 @@
+type Arr = [[stride(16)]] array<f32, 18>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[block]]
+struct buf2 {
+  one : i32;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_15 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat4x4<f32>;
+  var v : vec4<f32>;
+  var f : f32;
+  var a : i32;
+  var b : i32;
+  var zero : f32;
+  x_GLF_global_loop_count = 0;
+  let x_62 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_64 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_66 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_68 : f32 = x_7.x_GLF_uniform_float_values[4];
+  let x_70 : f32 = x_7.x_GLF_uniform_float_values[5];
+  let x_72 : f32 = x_7.x_GLF_uniform_float_values[6];
+  let x_74 : f32 = x_7.x_GLF_uniform_float_values[7];
+  let x_76 : f32 = x_7.x_GLF_uniform_float_values[8];
+  let x_78 : f32 = x_7.x_GLF_uniform_float_values[9];
+  let x_80 : f32 = x_7.x_GLF_uniform_float_values[10];
+  let x_82 : f32 = x_7.x_GLF_uniform_float_values[11];
+  let x_84 : f32 = x_7.x_GLF_uniform_float_values[12];
+  let x_86 : f32 = x_7.x_GLF_uniform_float_values[13];
+  let x_88 : f32 = x_7.x_GLF_uniform_float_values[14];
+  let x_90 : f32 = x_7.x_GLF_uniform_float_values[15];
+  let x_92 : f32 = x_7.x_GLF_uniform_float_values[16];
+  m = mat4x4<f32>(vec4<f32>(x_62, x_64, x_66, x_68), vec4<f32>(x_70, x_72, x_74, x_76), vec4<f32>(x_78, x_80, x_82, x_84), vec4<f32>(x_86, x_88, x_90, x_92));
+  let x_99 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_101 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_103 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_105 : f32 = x_7.x_GLF_uniform_float_values[4];
+  v = vec4<f32>(x_99, x_101, x_103, x_105);
+  let x_108 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = x_108;
+  let x_110 : i32 = x_12.x_GLF_uniform_int_values[0];
+  a = x_110;
+  loop {
+    let x_115 : i32 = x_GLF_global_loop_count;
+    if ((x_115 < 10)) {
+    } else {
+      break;
+    }
+    let x_118 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_118 + 1);
+    let x_120 : i32 = a;
+    let x_121 : i32 = clamp(x_120, 0, 3);
+    let x_123 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_125 : f32 = v[x_121];
+    v[x_121] = (x_125 + x_123);
+    let x_129 : i32 = x_12.x_GLF_uniform_int_values[2];
+    b = x_129;
+    loop {
+      let x_134 : i32 = x_GLF_global_loop_count;
+      if ((x_134 < 10)) {
+      } else {
+        break;
+      }
+      let x_137 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_137 + 1);
+      let x_139 : i32 = b;
+      let x_142 : f32 = v[clamp(x_139, 0, 3)];
+      let x_143 : i32 = b;
+      let x_145 : i32 = a;
+      let x_147 : f32 = m[clamp(x_143, 0, 3)][x_145];
+      let x_149 : f32 = f;
+      f = (x_149 + (x_142 * x_147));
+
+      continuing {
+        let x_151 : i32 = b;
+        b = (x_151 - 1);
+      }
+    }
+    let x_153 : i32 = a;
+    let x_156 : f32 = x_7.x_GLF_uniform_float_values[1];
+    m[1][clamp(x_153, 0, 3)] = x_156;
+    let x_159 : i32 = x_15.one;
+    let x_161 : i32 = x_12.x_GLF_uniform_int_values[0];
+    if ((x_159 == x_161)) {
+      discard;
+    }
+    let x_166 : i32 = x_15.one;
+    let x_168 : i32 = x_12.x_GLF_uniform_int_values[1];
+    if ((x_166 == x_168)) {
+      discard;
+    }
+
+    continuing {
+      let x_172 : i32 = a;
+      a = (x_172 + 1);
+    }
+  }
+  let x_175 : f32 = x_7.x_GLF_uniform_float_values[0];
+  zero = x_175;
+  let x_176 : f32 = f;
+  let x_178 : f32 = x_7.x_GLF_uniform_float_values[17];
+  if (!((x_176 == x_178))) {
+    let x_183 : f32 = x_7.x_GLF_uniform_float_values[1];
+    zero = x_183;
+  }
+  let x_184 : f32 = f;
+  let x_185 : f32 = zero;
+  let x_187 : i32 = x_12.x_GLF_uniform_int_values[0];
+  let x_189 : f32 = f;
+  x_GLF_color = vec4<f32>(x_184, x_185, f32(x_187), x_189);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
new file mode 100644
index 0000000..40aaeca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
@@ -0,0 +1,144 @@
+type Arr = [[stride(16)]] array<f32, 18>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[block]]
+struct buf2 {
+  one : i32;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_15 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat4x4<f32>;
+  var v : vec4<f32>;
+  var f : f32;
+  var a : i32;
+  var b : i32;
+  var zero : f32;
+  x_GLF_global_loop_count = 0;
+  let x_62 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_64 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_66 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_68 : f32 = x_7.x_GLF_uniform_float_values[4];
+  let x_70 : f32 = x_7.x_GLF_uniform_float_values[5];
+  let x_72 : f32 = x_7.x_GLF_uniform_float_values[6];
+  let x_74 : f32 = x_7.x_GLF_uniform_float_values[7];
+  let x_76 : f32 = x_7.x_GLF_uniform_float_values[8];
+  let x_78 : f32 = x_7.x_GLF_uniform_float_values[9];
+  let x_80 : f32 = x_7.x_GLF_uniform_float_values[10];
+  let x_82 : f32 = x_7.x_GLF_uniform_float_values[11];
+  let x_84 : f32 = x_7.x_GLF_uniform_float_values[12];
+  let x_86 : f32 = x_7.x_GLF_uniform_float_values[13];
+  let x_88 : f32 = x_7.x_GLF_uniform_float_values[14];
+  let x_90 : f32 = x_7.x_GLF_uniform_float_values[15];
+  let x_92 : f32 = x_7.x_GLF_uniform_float_values[16];
+  m = mat4x4<f32>(vec4<f32>(x_62, x_64, x_66, x_68), vec4<f32>(x_70, x_72, x_74, x_76), vec4<f32>(x_78, x_80, x_82, x_84), vec4<f32>(x_86, x_88, x_90, x_92));
+  let x_99 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_101 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_103 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_105 : f32 = x_7.x_GLF_uniform_float_values[4];
+  v = vec4<f32>(x_99, x_101, x_103, x_105);
+  let x_108 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = x_108;
+  let x_110 : i32 = x_12.x_GLF_uniform_int_values[0];
+  a = x_110;
+  loop {
+    let x_115 : i32 = x_GLF_global_loop_count;
+    if ((x_115 < 10)) {
+    } else {
+      break;
+    }
+    let x_118 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_118 + 1);
+    let x_120 : i32 = a;
+    let x_121 : i32 = clamp(x_120, 0, 3);
+    let x_123 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_125 : f32 = v[x_121];
+    v[x_121] = (x_125 + x_123);
+    let x_129 : i32 = x_12.x_GLF_uniform_int_values[2];
+    b = x_129;
+    loop {
+      let x_134 : i32 = x_GLF_global_loop_count;
+      if ((x_134 < 10)) {
+      } else {
+        break;
+      }
+      let x_137 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_137 + 1);
+      let x_139 : i32 = b;
+      let x_142 : f32 = v[clamp(x_139, 0, 3)];
+      let x_143 : i32 = b;
+      let x_145 : i32 = a;
+      let x_147 : f32 = m[clamp(x_143, 0, 3)][x_145];
+      let x_149 : f32 = f;
+      f = (x_149 + (x_142 * x_147));
+
+      continuing {
+        let x_151 : i32 = b;
+        b = (x_151 - 1);
+      }
+    }
+    let x_153 : i32 = a;
+    let x_156 : f32 = x_7.x_GLF_uniform_float_values[1];
+    m[1][clamp(x_153, 0, 3)] = x_156;
+    let x_159 : i32 = x_15.one;
+    let x_161 : i32 = x_12.x_GLF_uniform_int_values[0];
+    if ((x_159 == x_161)) {
+      discard;
+    }
+    let x_166 : i32 = x_15.one;
+    let x_168 : i32 = x_12.x_GLF_uniform_int_values[1];
+    if ((x_166 == x_168)) {
+      discard;
+    }
+
+    continuing {
+      let x_172 : i32 = a;
+      a = (x_172 + 1);
+    }
+  }
+  let x_175 : f32 = x_7.x_GLF_uniform_float_values[0];
+  zero = x_175;
+  let x_176 : f32 = f;
+  let x_178 : f32 = x_7.x_GLF_uniform_float_values[17];
+  if (!((x_176 == x_178))) {
+    let x_183 : f32 = x_7.x_GLF_uniform_float_values[1];
+    zero = x_183;
+  }
+  let x_184 : f32 = f;
+  let x_185 : f32 = zero;
+  let x_187 : i32 = x_12.x_GLF_uniform_int_values[0];
+  let x_189 : f32 = f;
+  x_GLF_color = vec4<f32>(x_184, x_185, f32(x_187), x_189);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1765c5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,114 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[18];
+};
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[4];
+};
+cbuffer cbuffer_x_15 : register(b2, space0) {
+  uint4 x_15[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4x4 m = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  float zero = 0.0f;
+  x_GLF_global_loop_count = 0;
+  const float x_62 = asfloat(x_7[1].x);
+  const float x_64 = asfloat(x_7[2].x);
+  const float x_66 = asfloat(x_7[3].x);
+  const float x_68 = asfloat(x_7[4].x);
+  const float x_70 = asfloat(x_7[5].x);
+  const float x_72 = asfloat(x_7[6].x);
+  const float x_74 = asfloat(x_7[7].x);
+  const float x_76 = asfloat(x_7[8].x);
+  const float x_78 = asfloat(x_7[9].x);
+  const float x_80 = asfloat(x_7[10].x);
+  const float x_82 = asfloat(x_7[11].x);
+  const float x_84 = asfloat(x_7[12].x);
+  const float x_86 = asfloat(x_7[13].x);
+  const float x_88 = asfloat(x_7[14].x);
+  const float x_90 = asfloat(x_7[15].x);
+  const float x_92 = asfloat(x_7[16].x);
+  m = float4x4(float4(x_62, x_64, x_66, x_68), float4(x_70, x_72, x_74, x_76), float4(x_78, x_80, x_82, x_84), float4(x_86, x_88, x_90, x_92));
+  const float x_99 = asfloat(x_7[1].x);
+  const float x_101 = asfloat(x_7[2].x);
+  const float x_103 = asfloat(x_7[3].x);
+  const float x_105 = asfloat(x_7[4].x);
+  v = float4(x_99, x_101, x_103, x_105);
+  const float x_108 = asfloat(x_7[1].x);
+  f = x_108;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_110 = asint(x_12[scalar_offset / 4][scalar_offset % 4]);
+  a = x_110;
+  {
+    for(; (x_GLF_global_loop_count < 10); a = (a + 1)) {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      const int x_121 = clamp(a, 0, 3);
+      const float x_123 = asfloat(x_7[1].x);
+      const float x_125 = v[x_121];
+      set_float4(v, x_121, (x_125 + x_123));
+      const int x_129 = asint(x_12[2].x);
+      b = x_129;
+      {
+        for(; (x_GLF_global_loop_count < 10); b = (b - 1)) {
+          x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+          const float x_142 = v[clamp(b, 0, 3)];
+          const float x_147 = m[clamp(b, 0, 3)][a];
+          f = (f + (x_142 * x_147));
+        }
+      }
+      const int x_153 = a;
+      const float x_156 = asfloat(x_7[1].x);
+      set_float4(m[1], clamp(x_153, 0, 3), x_156);
+      const int x_159 = asint(x_15[0].x);
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const int x_161 = asint(x_12[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_159 == x_161)) {
+        discard;
+      }
+      const int x_166 = asint(x_15[0].x);
+      const int x_168 = asint(x_12[1].x);
+      if ((x_166 == x_168)) {
+        discard;
+      }
+    }
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_175 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  zero = x_175;
+  const float x_176 = f;
+  const float x_178 = asfloat(x_7[17].x);
+  if (!((x_176 == x_178))) {
+    const float x_183 = asfloat(x_7[1].x);
+    zero = x_183;
+  }
+  const float x_184 = f;
+  const float x_185 = zero;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_187 = asint(x_12[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  x_GLF_color = float4(x_184, x_185, float(x_187), f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..68f7998
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.msl
@@ -0,0 +1,145 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[18];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct buf2 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_12, constant buf2& x_15, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  float4x4 m = float4x4(0.0f);
+  float4 v = 0.0f;
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  float zero = 0.0f;
+  *(tint_symbol_4) = 0;
+  float const x_62 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_64 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_66 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  float const x_68 = x_7.x_GLF_uniform_float_values.arr[4].el;
+  float const x_70 = x_7.x_GLF_uniform_float_values.arr[5].el;
+  float const x_72 = x_7.x_GLF_uniform_float_values.arr[6].el;
+  float const x_74 = x_7.x_GLF_uniform_float_values.arr[7].el;
+  float const x_76 = x_7.x_GLF_uniform_float_values.arr[8].el;
+  float const x_78 = x_7.x_GLF_uniform_float_values.arr[9].el;
+  float const x_80 = x_7.x_GLF_uniform_float_values.arr[10].el;
+  float const x_82 = x_7.x_GLF_uniform_float_values.arr[11].el;
+  float const x_84 = x_7.x_GLF_uniform_float_values.arr[12].el;
+  float const x_86 = x_7.x_GLF_uniform_float_values.arr[13].el;
+  float const x_88 = x_7.x_GLF_uniform_float_values.arr[14].el;
+  float const x_90 = x_7.x_GLF_uniform_float_values.arr[15].el;
+  float const x_92 = x_7.x_GLF_uniform_float_values.arr[16].el;
+  m = float4x4(float4(x_62, x_64, x_66, x_68), float4(x_70, x_72, x_74, x_76), float4(x_78, x_80, x_82, x_84), float4(x_86, x_88, x_90, x_92));
+  float const x_99 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_101 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_103 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  float const x_105 = x_7.x_GLF_uniform_float_values.arr[4].el;
+  v = float4(x_99, x_101, x_103, x_105);
+  float const x_108 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  f = x_108;
+  int const x_110 = x_12.x_GLF_uniform_int_values.arr[0].el;
+  a = x_110;
+  while (true) {
+    int const x_115 = *(tint_symbol_4);
+    if ((x_115 < 10)) {
+    } else {
+      break;
+    }
+    int const x_118 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_118 + 1);
+    int const x_120 = a;
+    int const x_121 = clamp(x_120, 0, 3);
+    float const x_123 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    float const x_125 = v[x_121];
+    v[x_121] = (x_125 + x_123);
+    int const x_129 = x_12.x_GLF_uniform_int_values.arr[2].el;
+    b = x_129;
+    while (true) {
+      int const x_134 = *(tint_symbol_4);
+      if ((x_134 < 10)) {
+      } else {
+        break;
+      }
+      int const x_137 = *(tint_symbol_4);
+      *(tint_symbol_4) = (x_137 + 1);
+      int const x_139 = b;
+      float const x_142 = v[clamp(x_139, 0, 3)];
+      int const x_143 = b;
+      int const x_145 = a;
+      float const x_147 = m[clamp(x_143, 0, 3)][x_145];
+      float const x_149 = f;
+      f = (x_149 + (x_142 * x_147));
+      {
+        int const x_151 = b;
+        b = (x_151 - 1);
+      }
+    }
+    int const x_153 = a;
+    float const x_156 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    m[1][clamp(x_153, 0, 3)] = x_156;
+    int const x_159 = x_15.one;
+    int const x_161 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_159 == x_161)) {
+      discard_fragment();
+    }
+    int const x_166 = x_15.one;
+    int const x_168 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_166 == x_168)) {
+      discard_fragment();
+    }
+    {
+      int const x_172 = a;
+      a = (x_172 + 1);
+    }
+  }
+  float const x_175 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  zero = x_175;
+  float const x_176 = f;
+  float const x_178 = x_7.x_GLF_uniform_float_values.arr[17].el;
+  if (!((x_176 == x_178))) {
+    float const x_183 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    zero = x_183;
+  }
+  float const x_184 = f;
+  float const x_185 = zero;
+  int const x_187 = x_12.x_GLF_uniform_int_values.arr[0].el;
+  float const x_189 = f;
+  *(tint_symbol_5) = float4(x_184, x_185, float(x_187), x_189);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]], constant buf2& x_15 [[buffer(2)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_12, x_15, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f1de9d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,314 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 213
+; Schema: 0
+               OpCapability Shader
+        %127 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "one"
+               OpName %x_15 "x_15"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %v "v"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %zero "zero"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_18 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_15 NonWritable
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 2
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+    %uint_18 = OpConstant %uint 18
+%_arr_float_uint_18 = OpTypeArray %float %uint_18
+       %buf1 = OpTypeStruct %_arr_float_uint_18
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf2 = OpTypeStruct %int
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_15 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %23 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %23
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %23
+       %void = OpTypeVoid
+         %26 = OpTypeFunction %void
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %33 = OpConstantNull %mat4v4float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %38 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+     %int_11 = OpConstant %int 11
+     %int_12 = OpConstant %int 12
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_17 = OpConstant %int 17
+   %main_out = OpTypeStruct %v4float
+        %201 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %26
+         %29 = OpLabel
+          %m = OpVariable %_ptr_Function_mat4v4float Function %33
+          %v = OpVariable %_ptr_Function_v4float Function %23
+          %f = OpVariable %_ptr_Function_float Function %38
+          %a = OpVariable %_ptr_Function_int Function %4
+          %b = OpVariable %_ptr_Function_int Function %4
+       %zero = OpVariable %_ptr_Function_float Function %38
+               OpStore %x_GLF_global_loop_count %int_0
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %50 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %51 = OpLoad %float %50
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+         %54 = OpLoad %float %53
+         %56 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_4
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_5
+         %60 = OpLoad %float %59
+         %62 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_6
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_7
+         %66 = OpLoad %float %65
+         %68 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_8
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_9
+         %72 = OpLoad %float %71
+         %74 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_10
+         %75 = OpLoad %float %74
+         %77 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_11
+         %78 = OpLoad %float %77
+         %80 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_12
+         %81 = OpLoad %float %80
+         %83 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_13
+         %84 = OpLoad %float %83
+         %86 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_14
+         %87 = OpLoad %float %86
+         %89 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_15
+         %90 = OpLoad %float %89
+         %92 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_16
+         %93 = OpLoad %float %92
+         %94 = OpCompositeConstruct %v4float %48 %51 %54 %57
+         %95 = OpCompositeConstruct %v4float %60 %63 %66 %69
+         %96 = OpCompositeConstruct %v4float %72 %75 %78 %81
+         %97 = OpCompositeConstruct %v4float %84 %87 %90 %93
+         %98 = OpCompositeConstruct %mat4v4float %94 %95 %96 %97
+               OpStore %m %98
+         %99 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %100 = OpLoad %float %99
+        %101 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+        %102 = OpLoad %float %101
+        %103 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_4
+        %106 = OpLoad %float %105
+        %107 = OpCompositeConstruct %v4float %100 %102 %104 %106
+               OpStore %v %107
+        %108 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %109 = OpLoad %float %108
+               OpStore %f %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %112 = OpLoad %int %111
+               OpStore %a %112
+               OpBranch %113
+        %113 = OpLabel
+               OpLoopMerge %114 %115 None
+               OpBranch %116
+        %116 = OpLabel
+        %117 = OpLoad %int %x_GLF_global_loop_count
+        %118 = OpSLessThan %bool %117 %int_10
+               OpSelectionMerge %120 None
+               OpBranchConditional %118 %121 %122
+        %121 = OpLabel
+               OpBranch %120
+        %122 = OpLabel
+               OpBranch %114
+        %120 = OpLabel
+        %123 = OpLoad %int %x_GLF_global_loop_count
+        %124 = OpIAdd %int %123 %int_1
+               OpStore %x_GLF_global_loop_count %124
+        %125 = OpLoad %int %a
+        %126 = OpExtInst %int %127 SClamp %125 %int_0 %int_3
+        %128 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %129 = OpLoad %float %128
+        %130 = OpAccessChain %_ptr_Function_float %v %126
+        %131 = OpLoad %float %130
+        %132 = OpAccessChain %_ptr_Function_float %v %126
+        %133 = OpFAdd %float %131 %129
+               OpStore %132 %133
+        %134 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_2
+        %135 = OpLoad %int %134
+               OpStore %b %135
+               OpBranch %136
+        %136 = OpLabel
+               OpLoopMerge %137 %138 None
+               OpBranch %139
+        %139 = OpLabel
+        %140 = OpLoad %int %x_GLF_global_loop_count
+        %141 = OpSLessThan %bool %140 %int_10
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %137
+        %142 = OpLabel
+        %145 = OpLoad %int %x_GLF_global_loop_count
+        %146 = OpIAdd %int %145 %int_1
+               OpStore %x_GLF_global_loop_count %146
+        %147 = OpLoad %int %b
+        %148 = OpExtInst %int %127 SClamp %147 %int_0 %int_3
+        %149 = OpAccessChain %_ptr_Function_float %v %148
+        %150 = OpLoad %float %149
+        %151 = OpLoad %int %b
+        %152 = OpLoad %int %a
+        %153 = OpExtInst %int %127 SClamp %151 %int_0 %int_3
+        %154 = OpAccessChain %_ptr_Function_float %m %153 %152
+        %155 = OpLoad %float %154
+        %156 = OpLoad %float %f
+        %157 = OpFMul %float %150 %155
+        %158 = OpFAdd %float %156 %157
+               OpStore %f %158
+               OpBranch %138
+        %138 = OpLabel
+        %159 = OpLoad %int %b
+        %160 = OpISub %int %159 %int_1
+               OpStore %b %160
+               OpBranch %136
+        %137 = OpLabel
+        %161 = OpLoad %int %a
+        %162 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %163 = OpLoad %float %162
+        %164 = OpExtInst %int %127 SClamp %161 %int_0 %int_3
+        %165 = OpAccessChain %_ptr_Function_float %m %int_1 %164
+               OpStore %165 %163
+        %166 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0
+        %167 = OpLoad %int %166
+        %168 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %169 = OpLoad %int %168
+        %170 = OpIEqual %bool %167 %169
+               OpSelectionMerge %171 None
+               OpBranchConditional %170 %172 %171
+        %172 = OpLabel
+               OpKill
+        %171 = OpLabel
+        %173 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0
+        %174 = OpLoad %int %173
+        %175 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %176 = OpLoad %int %175
+        %177 = OpIEqual %bool %174 %176
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %178
+        %179 = OpLabel
+               OpKill
+        %178 = OpLabel
+               OpBranch %115
+        %115 = OpLabel
+        %180 = OpLoad %int %a
+        %181 = OpIAdd %int %180 %int_1
+               OpStore %a %181
+               OpBranch %113
+        %114 = OpLabel
+        %182 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+        %183 = OpLoad %float %182
+               OpStore %zero %183
+        %184 = OpLoad %float %f
+        %186 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_17
+        %187 = OpLoad %float %186
+        %189 = OpFOrdEqual %bool %184 %187
+        %188 = OpLogicalNot %bool %189
+               OpSelectionMerge %190 None
+               OpBranchConditional %188 %191 %190
+        %191 = OpLabel
+        %192 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %193 = OpLoad %float %192
+               OpStore %zero %193
+               OpBranch %190
+        %190 = OpLabel
+        %194 = OpLoad %float %f
+        %195 = OpLoad %float %zero
+        %196 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+        %197 = OpLoad %int %196
+        %198 = OpLoad %float %f
+        %199 = OpConvertSToF %float %197
+        %200 = OpCompositeConstruct %v4float %194 %195 %199 %198
+               OpStore %x_GLF_color %200
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %201
+%tint_symbol = OpFunctionParameter %main_out
+        %205 = OpLabel
+        %206 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %206
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %26
+        %208 = OpLabel
+        %209 = OpFunctionCall %void %main_1
+        %211 = OpLoad %v4float %x_GLF_color
+        %212 = OpCompositeConstruct %main_out %211
+        %210 = OpFunctionCall %void %tint_symbol_2 %212
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..40aaeca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,144 @@
+type Arr = [[stride(16)]] array<f32, 18>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[block]]
+struct buf2 {
+  one : i32;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_15 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat4x4<f32>;
+  var v : vec4<f32>;
+  var f : f32;
+  var a : i32;
+  var b : i32;
+  var zero : f32;
+  x_GLF_global_loop_count = 0;
+  let x_62 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_64 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_66 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_68 : f32 = x_7.x_GLF_uniform_float_values[4];
+  let x_70 : f32 = x_7.x_GLF_uniform_float_values[5];
+  let x_72 : f32 = x_7.x_GLF_uniform_float_values[6];
+  let x_74 : f32 = x_7.x_GLF_uniform_float_values[7];
+  let x_76 : f32 = x_7.x_GLF_uniform_float_values[8];
+  let x_78 : f32 = x_7.x_GLF_uniform_float_values[9];
+  let x_80 : f32 = x_7.x_GLF_uniform_float_values[10];
+  let x_82 : f32 = x_7.x_GLF_uniform_float_values[11];
+  let x_84 : f32 = x_7.x_GLF_uniform_float_values[12];
+  let x_86 : f32 = x_7.x_GLF_uniform_float_values[13];
+  let x_88 : f32 = x_7.x_GLF_uniform_float_values[14];
+  let x_90 : f32 = x_7.x_GLF_uniform_float_values[15];
+  let x_92 : f32 = x_7.x_GLF_uniform_float_values[16];
+  m = mat4x4<f32>(vec4<f32>(x_62, x_64, x_66, x_68), vec4<f32>(x_70, x_72, x_74, x_76), vec4<f32>(x_78, x_80, x_82, x_84), vec4<f32>(x_86, x_88, x_90, x_92));
+  let x_99 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_101 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_103 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_105 : f32 = x_7.x_GLF_uniform_float_values[4];
+  v = vec4<f32>(x_99, x_101, x_103, x_105);
+  let x_108 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = x_108;
+  let x_110 : i32 = x_12.x_GLF_uniform_int_values[0];
+  a = x_110;
+  loop {
+    let x_115 : i32 = x_GLF_global_loop_count;
+    if ((x_115 < 10)) {
+    } else {
+      break;
+    }
+    let x_118 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_118 + 1);
+    let x_120 : i32 = a;
+    let x_121 : i32 = clamp(x_120, 0, 3);
+    let x_123 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_125 : f32 = v[x_121];
+    v[x_121] = (x_125 + x_123);
+    let x_129 : i32 = x_12.x_GLF_uniform_int_values[2];
+    b = x_129;
+    loop {
+      let x_134 : i32 = x_GLF_global_loop_count;
+      if ((x_134 < 10)) {
+      } else {
+        break;
+      }
+      let x_137 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_137 + 1);
+      let x_139 : i32 = b;
+      let x_142 : f32 = v[clamp(x_139, 0, 3)];
+      let x_143 : i32 = b;
+      let x_145 : i32 = a;
+      let x_147 : f32 = m[clamp(x_143, 0, 3)][x_145];
+      let x_149 : f32 = f;
+      f = (x_149 + (x_142 * x_147));
+
+      continuing {
+        let x_151 : i32 = b;
+        b = (x_151 - 1);
+      }
+    }
+    let x_153 : i32 = a;
+    let x_156 : f32 = x_7.x_GLF_uniform_float_values[1];
+    m[1][clamp(x_153, 0, 3)] = x_156;
+    let x_159 : i32 = x_15.one;
+    let x_161 : i32 = x_12.x_GLF_uniform_int_values[0];
+    if ((x_159 == x_161)) {
+      discard;
+    }
+    let x_166 : i32 = x_15.one;
+    let x_168 : i32 = x_12.x_GLF_uniform_int_values[1];
+    if ((x_166 == x_168)) {
+      discard;
+    }
+
+    continuing {
+      let x_172 : i32 = a;
+      a = (x_172 + 1);
+    }
+  }
+  let x_175 : f32 = x_7.x_GLF_uniform_float_values[0];
+  zero = x_175;
+  let x_176 : f32 = f;
+  let x_178 : f32 = x_7.x_GLF_uniform_float_values[17];
+  if (!((x_176 == x_178))) {
+    let x_183 : f32 = x_7.x_GLF_uniform_float_values[1];
+    zero = x_183;
+  }
+  let x_184 : f32 = f;
+  let x_185 : f32 = zero;
+  let x_187 : i32 = x_12.x_GLF_uniform_int_values[0];
+  let x_189 : f32 = f;
+  x_GLF_color = vec4<f32>(x_184, x_185, f32(x_187), x_189);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm
new file mode 100644
index 0000000..ec9e316
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm
@@ -0,0 +1,127 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %13 = OpTypeFunction %int
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %11
+         %30 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_global_loop_count %int_0
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %_GLF_global_loop_count
+         %36 = OpIAdd %int %35 %int_1
+               OpStore %_GLF_global_loop_count %36
+               OpSelectionMerge %37 None
+               OpBranchConditional %false %38 %37
+         %38 = OpLabel
+               OpReturn
+         %37 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+         %39 = OpLoad %int %_GLF_global_loop_count
+         %40 = OpSLessThan %bool %39 %int_100
+         %41 = OpLogicalAnd %bool %true %40
+               OpBranchConditional %41 %31 %32
+         %32 = OpLabel
+         %42 = OpFunctionCall %int %func_
+               OpStore %a %42
+         %43 = OpLoad %int %a
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %45 = OpLoad %int %44
+         %46 = OpIEqual %bool %43 %45
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpCompositeConstruct %v4float %52 %55 %58 %61
+               OpStore %_GLF_color %62
+               OpBranch %47
+         %49 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %_GLF_color %66
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %int None %13
+         %67 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpLoad %int %_GLF_global_loop_count
+         %73 = OpSLessThan %bool %72 %int_100
+               OpBranchConditional %73 %74 %69
+         %74 = OpLabel
+         %75 = OpLoad %int %_GLF_global_loop_count
+         %76 = OpIAdd %int %75 %int_1
+               OpStore %_GLF_global_loop_count %76
+         %77 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %78 = OpLoad %int %77
+               OpReturnValue %78
+         %70 = OpLabel
+               OpBranch %68
+         %69 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %80 = OpLoad %int %79
+               OpReturnValue %80
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d19bc36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,73 @@
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  while (true) {
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_78 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    return x_78;
+  }
+  const int x_80 = asint(x_7[2].x);
+  return x_80;
+}
+
+void main_1() {
+  int a = 0;
+  x_GLF_global_loop_count = 0;
+  while (true) {
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    if (false) {
+      return;
+    }
+    {
+      bool tint_tmp = true;
+      if (tint_tmp) {
+        tint_tmp = (x_GLF_global_loop_count < 100);
+      }
+      if ((tint_tmp)) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_42 = func_();
+  a = x_42;
+  const int x_43 = a;
+  const int x_45 = asint(x_7[2].x);
+  if ((x_43 == x_45)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_51 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_54 = asint(x_7[1].x);
+    const int x_57 = asint(x_7[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_51), float(x_54), float(x_57), float(x_60));
+  } else {
+    const int x_64 = asint(x_7[1].x);
+    const float x_65 = float(x_64);
+    x_GLF_color = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e3bf7ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.msl
@@ -0,0 +1,80 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_(constant buf0& x_7, thread int* const tint_symbol_4) {
+  while (true) {
+    int const x_72 = *(tint_symbol_4);
+    if ((x_72 < 100)) {
+    } else {
+      break;
+    }
+    int const x_75 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_75 + 1);
+    int const x_78 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    return x_78;
+  }
+  int const x_80 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  return x_80;
+}
+
+void main_1(constant buf0& x_7, thread int* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  *(tint_symbol_5) = 0;
+  while (true) {
+    int const x_35 = *(tint_symbol_5);
+    *(tint_symbol_5) = (x_35 + 1);
+    if (false) {
+      return;
+    }
+    {
+      int const x_39 = *(tint_symbol_5);
+      if ((true && (x_39 < 100))) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_42 = func_(x_7, tint_symbol_5);
+  a = x_42;
+  int const x_43 = a;
+  int const x_45 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_43 == x_45)) {
+    int const x_51 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_57 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_60 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_51), float(x_54), float(x_57), float(x_60));
+  } else {
+    int const x_64 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_65 = float(x_64);
+    *(tint_symbol_6) = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread int tint_symbol_7 = 0;
+  thread float4 tint_symbol_8 = 0.0f;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e2beca5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,182 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 104
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+         %18 = OpTypeFunction %int
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %43 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %92 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %18
+         %20 = OpLabel
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %x_GLF_global_loop_count
+         %27 = OpSLessThan %bool %25 %int_100
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpBranch %29
+         %31 = OpLabel
+               OpBranch %22
+         %29 = OpLabel
+         %32 = OpLoad %int %x_GLF_global_loop_count
+         %34 = OpIAdd %int %32 %int_1
+               OpStore %x_GLF_global_loop_count %34
+         %38 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %39 = OpLoad %int %38
+               OpReturnValue %39
+         %23 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %42 = OpLoad %int %41
+               OpReturnValue %42
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %43
+         %46 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %x_GLF_global_loop_count
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %x_GLF_global_loop_count %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %false %57 %56
+         %57 = OpLabel
+               OpReturn
+         %56 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+         %58 = OpLoad %int %x_GLF_global_loop_count
+               OpSelectionMerge %60 None
+               OpBranchConditional %true %61 %60
+         %61 = OpLabel
+         %62 = OpSLessThan %bool %58 %int_100
+               OpBranch %60
+         %60 = OpLabel
+         %63 = OpPhi %bool %true %51 %62 %61
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %50
+         %64 = OpLabel
+               OpBranch %49
+         %50 = OpLabel
+         %67 = OpFunctionCall %int %func_
+               OpStore %a %67
+         %68 = OpLoad %int %a
+         %69 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %70 = OpLoad %int %69
+         %71 = OpIEqual %bool %68 %70
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %74
+         %73 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %76
+         %84 = OpConvertSToF %float %78
+         %85 = OpConvertSToF %float %80
+         %86 = OpConvertSToF %float %82
+         %87 = OpCompositeConstruct %v4float %83 %84 %85 %86
+               OpStore %x_GLF_color %87
+               OpBranch %72
+         %74 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %89
+         %91 = OpCompositeConstruct %v4float %90 %90 %90 %90
+               OpStore %x_GLF_color %91
+               OpBranch %72
+         %72 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %92
+%tint_symbol = OpFunctionParameter %main_out
+         %96 = OpLabel
+         %97 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %97
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %43
+         %99 = OpLabel
+        %100 = OpFunctionCall %void %main_1
+        %102 = OpLoad %v4float %x_GLF_color
+        %103 = OpCompositeConstruct %main_out %102
+        %101 = OpFunctionCall %void %tint_symbol_2 %103
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 51[%51] is not post dominated by the back-edge block 64[%64]
+  %64 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..96fb7f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,75 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  loop {
+    let x_72 : i32 = x_GLF_global_loop_count;
+    if ((x_72 < 100)) {
+    } else {
+      break;
+    }
+    let x_75 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_75 + 1);
+    let x_78 : i32 = x_7.x_GLF_uniform_int_values[0];
+    return x_78;
+  }
+  let x_80 : i32 = x_7.x_GLF_uniform_int_values[2];
+  return x_80;
+}
+
+fn main_1() {
+  var a : i32;
+  x_GLF_global_loop_count = 0;
+  loop {
+    let x_35 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_35 + 1);
+    if (false) {
+      return;
+    }
+
+    continuing {
+      let x_39 : i32 = x_GLF_global_loop_count;
+      if ((true && (x_39 < 100))) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_42 : i32 = func_();
+  a = x_42;
+  let x_43 : i32 = a;
+  let x_45 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_43 == x_45)) {
+    let x_51 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_57 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_60 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_51), f32(x_54), f32(x_57), f32(x_60));
+  } else {
+    let x_64 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_65 : f32 = f32(x_64);
+    x_GLF_color = vec4<f32>(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
new file mode 100644
index 0000000..96fb7f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
@@ -0,0 +1,75 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  loop {
+    let x_72 : i32 = x_GLF_global_loop_count;
+    if ((x_72 < 100)) {
+    } else {
+      break;
+    }
+    let x_75 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_75 + 1);
+    let x_78 : i32 = x_7.x_GLF_uniform_int_values[0];
+    return x_78;
+  }
+  let x_80 : i32 = x_7.x_GLF_uniform_int_values[2];
+  return x_80;
+}
+
+fn main_1() {
+  var a : i32;
+  x_GLF_global_loop_count = 0;
+  loop {
+    let x_35 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_35 + 1);
+    if (false) {
+      return;
+    }
+
+    continuing {
+      let x_39 : i32 = x_GLF_global_loop_count;
+      if ((true && (x_39 < 100))) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_42 : i32 = func_();
+  a = x_42;
+  let x_43 : i32 = a;
+  let x_45 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_43 == x_45)) {
+    let x_51 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_57 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_60 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_51), f32(x_54), f32(x_57), f32(x_60));
+  } else {
+    let x_64 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_65 : f32 = f32(x_64);
+    x_GLF_color = vec4<f32>(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d19bc36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,73 @@
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  while (true) {
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_78 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    return x_78;
+  }
+  const int x_80 = asint(x_7[2].x);
+  return x_80;
+}
+
+void main_1() {
+  int a = 0;
+  x_GLF_global_loop_count = 0;
+  while (true) {
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    if (false) {
+      return;
+    }
+    {
+      bool tint_tmp = true;
+      if (tint_tmp) {
+        tint_tmp = (x_GLF_global_loop_count < 100);
+      }
+      if ((tint_tmp)) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_42 = func_();
+  a = x_42;
+  const int x_43 = a;
+  const int x_45 = asint(x_7[2].x);
+  if ((x_43 == x_45)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_51 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_54 = asint(x_7[1].x);
+    const int x_57 = asint(x_7[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_51), float(x_54), float(x_57), float(x_60));
+  } else {
+    const int x_64 = asint(x_7[1].x);
+    const float x_65 = float(x_64);
+    x_GLF_color = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e3bf7ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.msl
@@ -0,0 +1,80 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_(constant buf0& x_7, thread int* const tint_symbol_4) {
+  while (true) {
+    int const x_72 = *(tint_symbol_4);
+    if ((x_72 < 100)) {
+    } else {
+      break;
+    }
+    int const x_75 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_75 + 1);
+    int const x_78 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    return x_78;
+  }
+  int const x_80 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  return x_80;
+}
+
+void main_1(constant buf0& x_7, thread int* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  *(tint_symbol_5) = 0;
+  while (true) {
+    int const x_35 = *(tint_symbol_5);
+    *(tint_symbol_5) = (x_35 + 1);
+    if (false) {
+      return;
+    }
+    {
+      int const x_39 = *(tint_symbol_5);
+      if ((true && (x_39 < 100))) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_42 = func_(x_7, tint_symbol_5);
+  a = x_42;
+  int const x_43 = a;
+  int const x_45 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_43 == x_45)) {
+    int const x_51 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_57 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_60 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_51), float(x_54), float(x_57), float(x_60));
+  } else {
+    int const x_64 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_65 = float(x_64);
+    *(tint_symbol_6) = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread int tint_symbol_7 = 0;
+  thread float4 tint_symbol_8 = 0.0f;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e2beca5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,182 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 104
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+         %18 = OpTypeFunction %int
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %43 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %92 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %18
+         %20 = OpLabel
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %x_GLF_global_loop_count
+         %27 = OpSLessThan %bool %25 %int_100
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpBranch %29
+         %31 = OpLabel
+               OpBranch %22
+         %29 = OpLabel
+         %32 = OpLoad %int %x_GLF_global_loop_count
+         %34 = OpIAdd %int %32 %int_1
+               OpStore %x_GLF_global_loop_count %34
+         %38 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %39 = OpLoad %int %38
+               OpReturnValue %39
+         %23 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %42 = OpLoad %int %41
+               OpReturnValue %42
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %43
+         %46 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %x_GLF_global_loop_count
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %x_GLF_global_loop_count %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %false %57 %56
+         %57 = OpLabel
+               OpReturn
+         %56 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+         %58 = OpLoad %int %x_GLF_global_loop_count
+               OpSelectionMerge %60 None
+               OpBranchConditional %true %61 %60
+         %61 = OpLabel
+         %62 = OpSLessThan %bool %58 %int_100
+               OpBranch %60
+         %60 = OpLabel
+         %63 = OpPhi %bool %true %51 %62 %61
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %50
+         %64 = OpLabel
+               OpBranch %49
+         %50 = OpLabel
+         %67 = OpFunctionCall %int %func_
+               OpStore %a %67
+         %68 = OpLoad %int %a
+         %69 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %70 = OpLoad %int %69
+         %71 = OpIEqual %bool %68 %70
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %74
+         %73 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %76
+         %84 = OpConvertSToF %float %78
+         %85 = OpConvertSToF %float %80
+         %86 = OpConvertSToF %float %82
+         %87 = OpCompositeConstruct %v4float %83 %84 %85 %86
+               OpStore %x_GLF_color %87
+               OpBranch %72
+         %74 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %89
+         %91 = OpCompositeConstruct %v4float %90 %90 %90 %90
+               OpStore %x_GLF_color %91
+               OpBranch %72
+         %72 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %92
+%tint_symbol = OpFunctionParameter %main_out
+         %96 = OpLabel
+         %97 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %97
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %43
+         %99 = OpLabel
+        %100 = OpFunctionCall %void %main_1
+        %102 = OpLoad %v4float %x_GLF_color
+        %103 = OpCompositeConstruct %main_out %102
+        %101 = OpFunctionCall %void %tint_symbol_2 %103
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 51[%51] is not post dominated by the back-edge block 64[%64]
+  %64 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..96fb7f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,75 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  loop {
+    let x_72 : i32 = x_GLF_global_loop_count;
+    if ((x_72 < 100)) {
+    } else {
+      break;
+    }
+    let x_75 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_75 + 1);
+    let x_78 : i32 = x_7.x_GLF_uniform_int_values[0];
+    return x_78;
+  }
+  let x_80 : i32 = x_7.x_GLF_uniform_int_values[2];
+  return x_80;
+}
+
+fn main_1() {
+  var a : i32;
+  x_GLF_global_loop_count = 0;
+  loop {
+    let x_35 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_35 + 1);
+    if (false) {
+      return;
+    }
+
+    continuing {
+      let x_39 : i32 = x_GLF_global_loop_count;
+      if ((true && (x_39 < 100))) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_42 : i32 = func_();
+  a = x_42;
+  let x_43 : i32 = a;
+  let x_45 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_43 == x_45)) {
+    let x_51 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_57 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_60 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_51), f32(x_54), f32(x_57), f32(x_60));
+  } else {
+    let x_64 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_65 : f32 = f32(x_64);
+    x_GLF_color = vec4<f32>(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm
new file mode 100644
index 0000000..56ca498
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm
@@ -0,0 +1,89 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %int_100 = OpConstant %int 100
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %8
+         %21 = OpLabel
+               OpBranch %22
+         %22 = OpLabel
+         %23 = OpPhi %int %int_0 %21 %24 %25
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %27 = OpLoad %int %26
+         %28 = OpISub %int %int_100 %27
+         %29 = OpSLessThan %bool %23 %28
+               OpLoopMerge %30 %25 None
+               OpBranchConditional %29 %25 %30
+         %25 = OpLabel
+         %24 = OpIAdd %int %23 %int_1
+               OpBranch %22
+         %30 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpIEqual %bool %32 %int_0
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpPhi %int %int_1 %35 %38 %39
+         %40 = OpPhi %int %23 %35 %41 %39
+         %42 = OpSLessThan %bool %40 %int_100
+               OpLoopMerge %43 %39 None
+               OpBranchConditional %42 %39 %43
+         %39 = OpLabel
+         %41 = OpIAdd %int %40 %int_1
+         %44 = OpISub %int %int_1 %37
+         %38 = OpIMul %int %37 %44
+               OpBranch %36
+         %43 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+         %45 = OpPhi %int %int_1 %30 %37 %43
+         %46 = OpIEqual %bool %45 %32
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %50 = OpConvertSToF %float %27
+         %51 = OpConvertSToF %float %32
+         %52 = OpCompositeConstruct %v4float %50 %51 %51 %50
+               OpStore %_GLF_color %52
+               OpBranch %47
+         %49 = OpLabel
+         %53 = OpConvertSToF %float %32
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %_GLF_color %54
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..6d2b86d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.hlsl
@@ -0,0 +1,75 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_23 = 0;
+  int x_27 = 0;
+  int x_37 = 0;
+  int x_23_phi = 0;
+  int x_45_phi = 0;
+  x_23_phi = 0;
+  while (true) {
+    int x_24 = 0;
+    x_23 = x_23_phi;
+    x_27 = asint(x_5[1].x);
+    if ((x_23 < (100 - asint(x_27)))) {
+    } else {
+      break;
+    }
+    {
+      x_24 = asint((x_23 + asint(1)));
+      x_23_phi = x_24;
+    }
+  }
+  int x_37_phi = 0;
+  int x_40_phi = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_32 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  x_45_phi = 1;
+  if ((x_32 == 0)) {
+    x_37_phi = 1;
+    x_40_phi = x_23;
+    while (true) {
+      int x_41 = 0;
+      int x_38 = 0;
+      x_37 = x_37_phi;
+      const int x_40 = x_40_phi;
+      if ((x_40 < 100)) {
+      } else {
+        break;
+      }
+      {
+        x_41 = (x_40 + 1);
+        x_38 = asint((x_37 * asint((1 - asint(x_37)))));
+        x_37_phi = x_38;
+        x_40_phi = x_41;
+      }
+    }
+    x_45_phi = x_37;
+  }
+  if ((x_45_phi == x_32)) {
+    const float x_50 = float(x_27);
+    const float x_51 = float(x_32);
+    x_GLF_color = float4(x_50, x_51, x_51, x_50);
+  } else {
+    const float x_53 = float(x_32);
+    x_GLF_color = float4(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.msl
new file mode 100644
index 0000000..de0a7fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.msl
@@ -0,0 +1,85 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int x_23 = 0;
+  int x_27 = 0;
+  int x_37 = 0;
+  int x_23_phi = 0;
+  int x_45_phi = 0;
+  x_23_phi = 0;
+  while (true) {
+    int x_24 = 0;
+    x_23 = x_23_phi;
+    x_27 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_23 < (100 - as_type<int>(x_27)))) {
+    } else {
+      break;
+    }
+    {
+      x_24 = as_type<int>((x_23 + as_type<int>(1)));
+      x_23_phi = x_24;
+    }
+  }
+  int x_37_phi = 0;
+  int x_40_phi = 0;
+  int const x_32 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  x_45_phi = 1;
+  if ((x_32 == 0)) {
+    x_37_phi = 1;
+    x_40_phi = x_23;
+    while (true) {
+      int x_41 = 0;
+      int x_38 = 0;
+      x_37 = x_37_phi;
+      int const x_40 = x_40_phi;
+      if ((x_40 < 100)) {
+      } else {
+        break;
+      }
+      {
+        x_41 = (x_40 + 1);
+        x_38 = as_type<int>((x_37 * as_type<int>((1 - as_type<int>(x_37)))));
+        x_37_phi = x_38;
+        x_40_phi = x_41;
+      }
+    }
+    x_45_phi = x_37;
+  }
+  int const x_45 = x_45_phi;
+  if ((x_45 == x_32)) {
+    float const x_50 = float(x_27);
+    float const x_51 = float(x_32);
+    *(tint_symbol_4) = float4(x_50, x_51, x_51, x_50);
+  } else {
+    float const x_53 = float(x_32);
+    *(tint_symbol_4) = float4(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..5db6580
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.spvasm
@@ -0,0 +1,192 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_23 "x_23"
+               OpName %x_27 "x_27"
+               OpName %x_37 "x_37"
+               OpName %x_23_phi "x_23_phi"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_24 "x_24"
+               OpName %x_37_phi "x_37_phi"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_41 "x_41"
+               OpName %x_38 "x_38"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %95 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_23 = OpVariable %_ptr_Function_int Function %21
+       %x_27 = OpVariable %_ptr_Function_int Function %21
+       %x_37 = OpVariable %_ptr_Function_int Function %21
+   %x_23_phi = OpVariable %_ptr_Function_int Function %21
+   %x_45_phi = OpVariable %_ptr_Function_int Function %21
+       %x_24 = OpVariable %_ptr_Function_int Function %21
+   %x_37_phi = OpVariable %_ptr_Function_int Function %21
+   %x_40_phi = OpVariable %_ptr_Function_int Function %21
+       %x_41 = OpVariable %_ptr_Function_int Function %21
+       %x_38 = OpVariable %_ptr_Function_int Function %21
+               OpStore %x_23_phi %int_0
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %32 = OpLoad %int %x_23_phi
+               OpStore %x_23 %32
+         %36 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %37 = OpLoad %int %36
+               OpStore %x_27 %37
+         %38 = OpLoad %int %x_23
+         %41 = OpLoad %int %x_27
+         %40 = OpCopyObject %int %41
+         %42 = OpISub %int %int_100 %40
+         %43 = OpSLessThan %bool %38 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %28
+         %45 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+         %49 = OpLoad %int %x_23
+         %50 = OpCopyObject %int %int_1
+         %51 = OpIAdd %int %49 %50
+         %48 = OpCopyObject %int %51
+               OpStore %x_24 %48
+         %52 = OpLoad %int %x_24
+               OpStore %x_23_phi %52
+               OpBranch %27
+         %28 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %56 = OpLoad %int %55
+               OpStore %x_45_phi %int_1
+         %57 = OpIEqual %bool %56 %int_0
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpStore %x_37_phi %int_1
+         %60 = OpLoad %int %x_23
+               OpStore %x_40_phi %60
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %67 = OpLoad %int %x_37_phi
+               OpStore %x_37 %67
+         %68 = OpLoad %int %x_40_phi
+         %69 = OpSLessThan %bool %68 %int_100
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %62
+         %70 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+         %73 = OpIAdd %int %68 %int_1
+               OpStore %x_41 %73
+         %75 = OpLoad %int %x_37
+         %78 = OpLoad %int %x_37
+         %77 = OpCopyObject %int %78
+         %79 = OpISub %int %int_1 %77
+         %76 = OpCopyObject %int %79
+         %80 = OpIMul %int %75 %76
+         %74 = OpCopyObject %int %80
+               OpStore %x_38 %74
+         %81 = OpLoad %int %x_38
+               OpStore %x_37_phi %81
+         %82 = OpLoad %int %x_41
+               OpStore %x_40_phi %82
+               OpBranch %61
+         %62 = OpLabel
+         %83 = OpLoad %int %x_37
+               OpStore %x_45_phi %83
+               OpBranch %58
+         %58 = OpLabel
+         %84 = OpLoad %int %x_45_phi
+         %85 = OpIEqual %bool %84 %56
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+         %90 = OpLoad %int %x_27
+         %89 = OpConvertSToF %float %90
+         %91 = OpConvertSToF %float %56
+         %92 = OpCompositeConstruct %v4float %89 %91 %91 %89
+               OpStore %x_GLF_color %92
+               OpBranch %86
+         %88 = OpLabel
+         %93 = OpConvertSToF %float %56
+         %94 = OpCompositeConstruct %v4float %93 %93 %93 %93
+               OpStore %x_GLF_color %94
+               OpBranch %86
+         %86 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %95
+%tint_symbol = OpFunctionParameter %main_out
+         %99 = OpLabel
+        %100 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %100
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %102 = OpLabel
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_2 %106
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..038864a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.spvasm.expected.wgsl
@@ -0,0 +1,80 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_23 : i32;
+  var x_27 : i32;
+  var x_37 : i32;
+  var x_23_phi : i32;
+  var x_45_phi : i32;
+  x_23_phi = 0;
+  loop {
+    var x_24 : i32;
+    x_23 = x_23_phi;
+    x_27 = x_5.x_GLF_uniform_int_values[1];
+    if ((x_23 < (100 - bitcast<i32>(x_27)))) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_24 = bitcast<i32>((x_23 + bitcast<i32>(1)));
+      x_23_phi = x_24;
+    }
+  }
+  var x_37_phi : i32;
+  var x_40_phi : i32;
+  let x_32 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_45_phi = 1;
+  if ((x_32 == 0)) {
+    x_37_phi = 1;
+    x_40_phi = x_23;
+    loop {
+      var x_41 : i32;
+      var x_38 : i32;
+      x_37 = x_37_phi;
+      let x_40 : i32 = x_40_phi;
+      if ((x_40 < 100)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        x_41 = (x_40 + 1);
+        x_38 = bitcast<i32>((x_37 * bitcast<i32>((1 - bitcast<i32>(x_37)))));
+        x_37_phi = x_38;
+        x_40_phi = x_41;
+      }
+    }
+    x_45_phi = x_37;
+  }
+  let x_45 : i32 = x_45_phi;
+  if ((x_45 == x_32)) {
+    let x_50 : f32 = f32(x_27);
+    let x_51 : f32 = f32(x_32);
+    x_GLF_color = vec4<f32>(x_50, x_51, x_51, x_50);
+  } else {
+    let x_53 : f32 = f32(x_32);
+    x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
new file mode 100644
index 0000000..038864a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
@@ -0,0 +1,80 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_23 : i32;
+  var x_27 : i32;
+  var x_37 : i32;
+  var x_23_phi : i32;
+  var x_45_phi : i32;
+  x_23_phi = 0;
+  loop {
+    var x_24 : i32;
+    x_23 = x_23_phi;
+    x_27 = x_5.x_GLF_uniform_int_values[1];
+    if ((x_23 < (100 - bitcast<i32>(x_27)))) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_24 = bitcast<i32>((x_23 + bitcast<i32>(1)));
+      x_23_phi = x_24;
+    }
+  }
+  var x_37_phi : i32;
+  var x_40_phi : i32;
+  let x_32 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_45_phi = 1;
+  if ((x_32 == 0)) {
+    x_37_phi = 1;
+    x_40_phi = x_23;
+    loop {
+      var x_41 : i32;
+      var x_38 : i32;
+      x_37 = x_37_phi;
+      let x_40 : i32 = x_40_phi;
+      if ((x_40 < 100)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        x_41 = (x_40 + 1);
+        x_38 = bitcast<i32>((x_37 * bitcast<i32>((1 - bitcast<i32>(x_37)))));
+        x_37_phi = x_38;
+        x_40_phi = x_41;
+      }
+    }
+    x_45_phi = x_37;
+  }
+  let x_45 : i32 = x_45_phi;
+  if ((x_45 == x_32)) {
+    let x_50 : f32 = f32(x_27);
+    let x_51 : f32 = f32(x_32);
+    x_GLF_color = vec4<f32>(x_50, x_51, x_51, x_50);
+  } else {
+    let x_53 : f32 = f32(x_32);
+    x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..6d2b86d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.hlsl
@@ -0,0 +1,75 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_23 = 0;
+  int x_27 = 0;
+  int x_37 = 0;
+  int x_23_phi = 0;
+  int x_45_phi = 0;
+  x_23_phi = 0;
+  while (true) {
+    int x_24 = 0;
+    x_23 = x_23_phi;
+    x_27 = asint(x_5[1].x);
+    if ((x_23 < (100 - asint(x_27)))) {
+    } else {
+      break;
+    }
+    {
+      x_24 = asint((x_23 + asint(1)));
+      x_23_phi = x_24;
+    }
+  }
+  int x_37_phi = 0;
+  int x_40_phi = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_32 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  x_45_phi = 1;
+  if ((x_32 == 0)) {
+    x_37_phi = 1;
+    x_40_phi = x_23;
+    while (true) {
+      int x_41 = 0;
+      int x_38 = 0;
+      x_37 = x_37_phi;
+      const int x_40 = x_40_phi;
+      if ((x_40 < 100)) {
+      } else {
+        break;
+      }
+      {
+        x_41 = (x_40 + 1);
+        x_38 = asint((x_37 * asint((1 - asint(x_37)))));
+        x_37_phi = x_38;
+        x_40_phi = x_41;
+      }
+    }
+    x_45_phi = x_37;
+  }
+  if ((x_45_phi == x_32)) {
+    const float x_50 = float(x_27);
+    const float x_51 = float(x_32);
+    x_GLF_color = float4(x_50, x_51, x_51, x_50);
+  } else {
+    const float x_53 = float(x_32);
+    x_GLF_color = float4(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.msl
new file mode 100644
index 0000000..de0a7fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.msl
@@ -0,0 +1,85 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int x_23 = 0;
+  int x_27 = 0;
+  int x_37 = 0;
+  int x_23_phi = 0;
+  int x_45_phi = 0;
+  x_23_phi = 0;
+  while (true) {
+    int x_24 = 0;
+    x_23 = x_23_phi;
+    x_27 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_23 < (100 - as_type<int>(x_27)))) {
+    } else {
+      break;
+    }
+    {
+      x_24 = as_type<int>((x_23 + as_type<int>(1)));
+      x_23_phi = x_24;
+    }
+  }
+  int x_37_phi = 0;
+  int x_40_phi = 0;
+  int const x_32 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  x_45_phi = 1;
+  if ((x_32 == 0)) {
+    x_37_phi = 1;
+    x_40_phi = x_23;
+    while (true) {
+      int x_41 = 0;
+      int x_38 = 0;
+      x_37 = x_37_phi;
+      int const x_40 = x_40_phi;
+      if ((x_40 < 100)) {
+      } else {
+        break;
+      }
+      {
+        x_41 = (x_40 + 1);
+        x_38 = as_type<int>((x_37 * as_type<int>((1 - as_type<int>(x_37)))));
+        x_37_phi = x_38;
+        x_40_phi = x_41;
+      }
+    }
+    x_45_phi = x_37;
+  }
+  int const x_45 = x_45_phi;
+  if ((x_45 == x_32)) {
+    float const x_50 = float(x_27);
+    float const x_51 = float(x_32);
+    *(tint_symbol_4) = float4(x_50, x_51, x_51, x_50);
+  } else {
+    float const x_53 = float(x_32);
+    *(tint_symbol_4) = float4(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..5db6580
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.spvasm
@@ -0,0 +1,192 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_23 "x_23"
+               OpName %x_27 "x_27"
+               OpName %x_37 "x_37"
+               OpName %x_23_phi "x_23_phi"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_24 "x_24"
+               OpName %x_37_phi "x_37_phi"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_41 "x_41"
+               OpName %x_38 "x_38"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %95 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_23 = OpVariable %_ptr_Function_int Function %21
+       %x_27 = OpVariable %_ptr_Function_int Function %21
+       %x_37 = OpVariable %_ptr_Function_int Function %21
+   %x_23_phi = OpVariable %_ptr_Function_int Function %21
+   %x_45_phi = OpVariable %_ptr_Function_int Function %21
+       %x_24 = OpVariable %_ptr_Function_int Function %21
+   %x_37_phi = OpVariable %_ptr_Function_int Function %21
+   %x_40_phi = OpVariable %_ptr_Function_int Function %21
+       %x_41 = OpVariable %_ptr_Function_int Function %21
+       %x_38 = OpVariable %_ptr_Function_int Function %21
+               OpStore %x_23_phi %int_0
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %32 = OpLoad %int %x_23_phi
+               OpStore %x_23 %32
+         %36 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %37 = OpLoad %int %36
+               OpStore %x_27 %37
+         %38 = OpLoad %int %x_23
+         %41 = OpLoad %int %x_27
+         %40 = OpCopyObject %int %41
+         %42 = OpISub %int %int_100 %40
+         %43 = OpSLessThan %bool %38 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %28
+         %45 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+         %49 = OpLoad %int %x_23
+         %50 = OpCopyObject %int %int_1
+         %51 = OpIAdd %int %49 %50
+         %48 = OpCopyObject %int %51
+               OpStore %x_24 %48
+         %52 = OpLoad %int %x_24
+               OpStore %x_23_phi %52
+               OpBranch %27
+         %28 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %56 = OpLoad %int %55
+               OpStore %x_45_phi %int_1
+         %57 = OpIEqual %bool %56 %int_0
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpStore %x_37_phi %int_1
+         %60 = OpLoad %int %x_23
+               OpStore %x_40_phi %60
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %67 = OpLoad %int %x_37_phi
+               OpStore %x_37 %67
+         %68 = OpLoad %int %x_40_phi
+         %69 = OpSLessThan %bool %68 %int_100
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %62
+         %70 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+         %73 = OpIAdd %int %68 %int_1
+               OpStore %x_41 %73
+         %75 = OpLoad %int %x_37
+         %78 = OpLoad %int %x_37
+         %77 = OpCopyObject %int %78
+         %79 = OpISub %int %int_1 %77
+         %76 = OpCopyObject %int %79
+         %80 = OpIMul %int %75 %76
+         %74 = OpCopyObject %int %80
+               OpStore %x_38 %74
+         %81 = OpLoad %int %x_38
+               OpStore %x_37_phi %81
+         %82 = OpLoad %int %x_41
+               OpStore %x_40_phi %82
+               OpBranch %61
+         %62 = OpLabel
+         %83 = OpLoad %int %x_37
+               OpStore %x_45_phi %83
+               OpBranch %58
+         %58 = OpLabel
+         %84 = OpLoad %int %x_45_phi
+         %85 = OpIEqual %bool %84 %56
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+         %90 = OpLoad %int %x_27
+         %89 = OpConvertSToF %float %90
+         %91 = OpConvertSToF %float %56
+         %92 = OpCompositeConstruct %v4float %89 %91 %91 %89
+               OpStore %x_GLF_color %92
+               OpBranch %86
+         %88 = OpLabel
+         %93 = OpConvertSToF %float %56
+         %94 = OpCompositeConstruct %v4float %93 %93 %93 %93
+               OpStore %x_GLF_color %94
+               OpBranch %86
+         %86 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %95
+%tint_symbol = OpFunctionParameter %main_out
+         %99 = OpLabel
+        %100 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %100
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %102 = OpLabel
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_2 %106
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..038864a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl.expected.wgsl
@@ -0,0 +1,80 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_23 : i32;
+  var x_27 : i32;
+  var x_37 : i32;
+  var x_23_phi : i32;
+  var x_45_phi : i32;
+  x_23_phi = 0;
+  loop {
+    var x_24 : i32;
+    x_23 = x_23_phi;
+    x_27 = x_5.x_GLF_uniform_int_values[1];
+    if ((x_23 < (100 - bitcast<i32>(x_27)))) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_24 = bitcast<i32>((x_23 + bitcast<i32>(1)));
+      x_23_phi = x_24;
+    }
+  }
+  var x_37_phi : i32;
+  var x_40_phi : i32;
+  let x_32 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_45_phi = 1;
+  if ((x_32 == 0)) {
+    x_37_phi = 1;
+    x_40_phi = x_23;
+    loop {
+      var x_41 : i32;
+      var x_38 : i32;
+      x_37 = x_37_phi;
+      let x_40 : i32 = x_40_phi;
+      if ((x_40 < 100)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        x_41 = (x_40 + 1);
+        x_38 = bitcast<i32>((x_37 * bitcast<i32>((1 - bitcast<i32>(x_37)))));
+        x_37_phi = x_38;
+        x_40_phi = x_41;
+      }
+    }
+    x_45_phi = x_37;
+  }
+  let x_45 : i32 = x_45_phi;
+  if ((x_45 == x_32)) {
+    let x_50 : f32 = f32(x_27);
+    let x_51 : f32 = f32(x_32);
+    x_GLF_color = vec4<f32>(x_50, x_51, x_51, x_50);
+  } else {
+    let x_53 : f32 = f32(x_32);
+    x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm
new file mode 100644
index 0000000..e13f402
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm
@@ -0,0 +1,98 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+      %int_4 = OpConstant %int 4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %9
+         %25 = OpLabel
+               OpStore %_GLF_global_loop_count %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %_GLF_global_loop_count
+         %31 = OpSLessThan %bool %30 %int_100
+               OpBranchConditional %31 %32 %27
+         %32 = OpLabel
+         %33 = OpLoad %int %_GLF_global_loop_count
+         %34 = OpIAdd %int %33 %int_1
+               OpStore %_GLF_global_loop_count %34
+         %35 = OpLoad %int %_GLF_global_loop_count
+         %36 = OpLoad %int %_GLF_global_loop_count
+         %37 = OpIMul %int %35 %36
+         %38 = OpSGreaterThan %bool %37 %int_10
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %39
+         %40 = OpLabel
+               OpBranch %27
+         %39 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %41 = OpLoad %int %_GLF_global_loop_count
+         %42 = OpIEqual %bool %41 %int_4
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpCompositeConstruct %v4float %48 %51 %54 %57
+               OpStore %_GLF_color %58
+               OpBranch %43
+         %45 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpCompositeConstruct %v4float %61 %61 %61 %61
+               OpStore %_GLF_color %62
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b176ae5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+static int x_GLF_global_loop_count = 0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+
+void main_1() {
+  x_GLF_global_loop_count = 0;
+  while (true) {
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    if (((x_GLF_global_loop_count * x_GLF_global_loop_count) > 10)) {
+      break;
+    }
+  }
+  if ((x_GLF_global_loop_count == 4)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const int x_50 = asint(x_6[1].x);
+    const int x_53 = asint(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    const int x_60 = asint(x_6[1].x);
+    const float x_61 = float(x_60);
+    x_GLF_color = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a7c34d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.msl
@@ -0,0 +1,60 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  *(tint_symbol_4) = 0;
+  while (true) {
+    int const x_30 = *(tint_symbol_4);
+    if ((x_30 < 100)) {
+    } else {
+      break;
+    }
+    int const x_33 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_33 + 1);
+    int const x_35 = *(tint_symbol_4);
+    int const x_36 = *(tint_symbol_4);
+    if (((x_35 * x_36) > 10)) {
+      break;
+    }
+  }
+  int const x_41 = *(tint_symbol_4);
+  if ((x_41 == 4)) {
+    int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_61 = float(x_60);
+    *(tint_symbol_5) = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6b93297
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,136 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 81
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+      %int_4 = OpConstant %int 4
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %69 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+               OpStore %x_GLF_global_loop_count %int_0
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %x_GLF_global_loop_count
+         %29 = OpSLessThan %bool %27 %int_100
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %24
+         %31 = OpLabel
+         %34 = OpLoad %int %x_GLF_global_loop_count
+         %36 = OpIAdd %int %34 %int_1
+               OpStore %x_GLF_global_loop_count %36
+         %37 = OpLoad %int %x_GLF_global_loop_count
+         %38 = OpLoad %int %x_GLF_global_loop_count
+         %39 = OpIMul %int %37 %38
+         %41 = OpSGreaterThan %bool %39 %int_10
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpBranch %24
+         %42 = OpLabel
+               OpBranch %25
+         %25 = OpLabel
+               OpBranch %23
+         %24 = OpLabel
+         %44 = OpLoad %int %x_GLF_global_loop_count
+         %46 = OpIEqual %bool %44 %int_4
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %53
+         %61 = OpConvertSToF %float %55
+         %62 = OpConvertSToF %float %57
+         %63 = OpConvertSToF %float %59
+         %64 = OpCompositeConstruct %v4float %60 %61 %62 %63
+               OpStore %x_GLF_color %64
+               OpBranch %47
+         %49 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpCompositeConstruct %v4float %67 %67 %67 %67
+               OpStore %x_GLF_color %68
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %69
+%tint_symbol = OpFunctionParameter %main_out
+         %73 = OpLabel
+         %74 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %74
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %76 = OpLabel
+         %77 = OpFunctionCall %void %main_1
+         %79 = OpLoad %v4float %x_GLF_color
+         %80 = OpCompositeConstruct %main_out %79
+         %78 = OpFunctionCall %void %tint_symbol_2 %80
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..27cfa37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  loop {
+    let x_30 : i32 = x_GLF_global_loop_count;
+    if ((x_30 < 100)) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_33 + 1);
+    let x_35 : i32 = x_GLF_global_loop_count;
+    let x_36 : i32 = x_GLF_global_loop_count;
+    if (((x_35 * x_36) > 10)) {
+      break;
+    }
+  }
+  let x_41 : i32 = x_GLF_global_loop_count;
+  if ((x_41 == 4)) {
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_47), f32(x_50), f32(x_53), f32(x_56));
+  } else {
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_61 : f32 = f32(x_60);
+    x_GLF_color = vec4<f32>(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
new file mode 100644
index 0000000..27cfa37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  loop {
+    let x_30 : i32 = x_GLF_global_loop_count;
+    if ((x_30 < 100)) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_33 + 1);
+    let x_35 : i32 = x_GLF_global_loop_count;
+    let x_36 : i32 = x_GLF_global_loop_count;
+    if (((x_35 * x_36) > 10)) {
+      break;
+    }
+  }
+  let x_41 : i32 = x_GLF_global_loop_count;
+  if ((x_41 == 4)) {
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_47), f32(x_50), f32(x_53), f32(x_56));
+  } else {
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_61 : f32 = f32(x_60);
+    x_GLF_color = vec4<f32>(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b176ae5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+static int x_GLF_global_loop_count = 0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+
+void main_1() {
+  x_GLF_global_loop_count = 0;
+  while (true) {
+    if ((x_GLF_global_loop_count < 100)) {
+    } else {
+      break;
+    }
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    if (((x_GLF_global_loop_count * x_GLF_global_loop_count) > 10)) {
+      break;
+    }
+  }
+  if ((x_GLF_global_loop_count == 4)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const int x_50 = asint(x_6[1].x);
+    const int x_53 = asint(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    const int x_60 = asint(x_6[1].x);
+    const float x_61 = float(x_60);
+    x_GLF_color = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a7c34d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.msl
@@ -0,0 +1,60 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  *(tint_symbol_4) = 0;
+  while (true) {
+    int const x_30 = *(tint_symbol_4);
+    if ((x_30 < 100)) {
+    } else {
+      break;
+    }
+    int const x_33 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_33 + 1);
+    int const x_35 = *(tint_symbol_4);
+    int const x_36 = *(tint_symbol_4);
+    if (((x_35 * x_36) > 10)) {
+      break;
+    }
+  }
+  int const x_41 = *(tint_symbol_4);
+  if ((x_41 == 4)) {
+    int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_61 = float(x_60);
+    *(tint_symbol_5) = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6b93297
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,136 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 81
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+      %int_4 = OpConstant %int 4
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %69 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+               OpStore %x_GLF_global_loop_count %int_0
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %x_GLF_global_loop_count
+         %29 = OpSLessThan %bool %27 %int_100
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %24
+         %31 = OpLabel
+         %34 = OpLoad %int %x_GLF_global_loop_count
+         %36 = OpIAdd %int %34 %int_1
+               OpStore %x_GLF_global_loop_count %36
+         %37 = OpLoad %int %x_GLF_global_loop_count
+         %38 = OpLoad %int %x_GLF_global_loop_count
+         %39 = OpIMul %int %37 %38
+         %41 = OpSGreaterThan %bool %39 %int_10
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpBranch %24
+         %42 = OpLabel
+               OpBranch %25
+         %25 = OpLabel
+               OpBranch %23
+         %24 = OpLabel
+         %44 = OpLoad %int %x_GLF_global_loop_count
+         %46 = OpIEqual %bool %44 %int_4
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %53
+         %61 = OpConvertSToF %float %55
+         %62 = OpConvertSToF %float %57
+         %63 = OpConvertSToF %float %59
+         %64 = OpCompositeConstruct %v4float %60 %61 %62 %63
+               OpStore %x_GLF_color %64
+               OpBranch %47
+         %49 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpCompositeConstruct %v4float %67 %67 %67 %67
+               OpStore %x_GLF_color %68
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %69
+%tint_symbol = OpFunctionParameter %main_out
+         %73 = OpLabel
+         %74 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %74
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %76 = OpLabel
+         %77 = OpFunctionCall %void %main_1
+         %79 = OpLoad %v4float %x_GLF_color
+         %80 = OpCompositeConstruct %main_out %79
+         %78 = OpFunctionCall %void %tint_symbol_2 %80
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..27cfa37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  loop {
+    let x_30 : i32 = x_GLF_global_loop_count;
+    if ((x_30 < 100)) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_33 + 1);
+    let x_35 : i32 = x_GLF_global_loop_count;
+    let x_36 : i32 = x_GLF_global_loop_count;
+    if (((x_35 * x_36) > 10)) {
+      break;
+    }
+  }
+  let x_41 : i32 = x_GLF_global_loop_count;
+  if ((x_41 == 4)) {
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_47), f32(x_50), f32(x_53), f32(x_56));
+  } else {
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_61 : f32 = f32(x_60);
+    x_GLF_color = vec4<f32>(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm
new file mode 100644
index 0000000..d4c4872
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm
@@ -0,0 +1,70 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %25 = OpLoad %int %24
+               OpStore %a %25
+         %26 = OpLoad %int %a
+         %27 = OpIEqual %bool %26 %int_0
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %30
+         %29 = OpLabel
+         %31 = OpLoad %int %a
+         %32 = OpIAdd %int %31 %int_1
+               OpStore %a %32
+               OpBranch %28
+         %30 = OpLabel
+         %33 = OpLoad %int %a
+         %34 = OpIAdd %int %33 %int_1
+               OpStore %a %34
+               OpBranch %28
+         %28 = OpLabel
+         %35 = OpLoad %int %a
+         %36 = OpIEqual %bool %35 %int_1
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..edc0a80
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,35 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const int x_25 = asint(x_6[0].x);
+  a = x_25;
+  if ((a == 0)) {
+    a = (a + 1);
+  } else {
+    a = (a + 1);
+  }
+  if ((a == 1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..63f4fcd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.msl
@@ -0,0 +1,42 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_25 = x_6.zero;
+  a = x_25;
+  int const x_26 = a;
+  if ((x_26 == 0)) {
+    int const x_31 = a;
+    a = (x_31 + 1);
+  } else {
+    int const x_33 = a;
+    a = (x_33 + 1);
+  }
+  int const x_35 = a;
+  if ((x_35 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2016928
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %43 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %44 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+         %22 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %23 = OpLoad %int %22
+               OpStore %a %23
+         %24 = OpLoad %int %a
+         %26 = OpIEqual %bool %24 %int_0
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %30
+         %29 = OpLabel
+         %31 = OpLoad %int %a
+         %33 = OpIAdd %int %31 %int_1
+               OpStore %a %33
+               OpBranch %28
+         %30 = OpLabel
+         %34 = OpLoad %int %a
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %a %35
+               OpBranch %28
+         %28 = OpLabel
+         %36 = OpLoad %int %a
+         %37 = OpIEqual %bool %36 %int_1
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %38
+         %40 = OpLabel
+               OpStore %x_GLF_color %44
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a2c8423
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_25 : i32 = x_6.zero;
+  a = x_25;
+  let x_26 : i32 = a;
+  if ((x_26 == 0)) {
+    let x_31 : i32 = a;
+    a = (x_31 + 1);
+  } else {
+    let x_33 : i32 = a;
+    a = (x_33 + 1);
+  }
+  let x_35 : i32 = a;
+  if ((x_35 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
new file mode 100644
index 0000000..a2c8423
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_25 : i32 = x_6.zero;
+  a = x_25;
+  let x_26 : i32 = a;
+  if ((x_26 == 0)) {
+    let x_31 : i32 = a;
+    a = (x_31 + 1);
+  } else {
+    let x_33 : i32 = a;
+    a = (x_33 + 1);
+  }
+  let x_35 : i32 = a;
+  if ((x_35 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..edc0a80
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const int x_25 = asint(x_6[0].x);
+  a = x_25;
+  if ((a == 0)) {
+    a = (a + 1);
+  } else {
+    a = (a + 1);
+  }
+  if ((a == 1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..63f4fcd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.msl
@@ -0,0 +1,42 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_25 = x_6.zero;
+  a = x_25;
+  int const x_26 = a;
+  if ((x_26 == 0)) {
+    int const x_31 = a;
+    a = (x_31 + 1);
+  } else {
+    int const x_33 = a;
+    a = (x_33 + 1);
+  }
+  int const x_35 = a;
+  if ((x_35 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2016928
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %43 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %44 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+         %22 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %23 = OpLoad %int %22
+               OpStore %a %23
+         %24 = OpLoad %int %a
+         %26 = OpIEqual %bool %24 %int_0
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %30
+         %29 = OpLabel
+         %31 = OpLoad %int %a
+         %33 = OpIAdd %int %31 %int_1
+               OpStore %a %33
+               OpBranch %28
+         %30 = OpLabel
+         %34 = OpLoad %int %a
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %a %35
+               OpBranch %28
+         %28 = OpLabel
+         %36 = OpLoad %int %a
+         %37 = OpIEqual %bool %36 %int_1
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %38
+         %40 = OpLabel
+               OpStore %x_GLF_color %44
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a2c8423
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_25 : i32 = x_6.zero;
+  a = x_25;
+  let x_26 : i32 = a;
+  if ((x_26 == 0)) {
+    let x_31 : i32 = a;
+    a = (x_31 + 1);
+  } else {
+    let x_33 : i32 = a;
+    a = (x_33 + 1);
+  }
+  let x_35 : i32 = a;
+  if ((x_35 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm
new file mode 100644
index 0000000..059c9b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm
@@ -0,0 +1,96 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+       %bool = OpTypeBool
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %12
+         %29 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %31 = OpLoad %float %30
+         %32 = OpCompositeConstruct %v4float %31 %31 %31 %31
+               OpStore %_GLF_color %32
+         %33 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpFOrdGreaterThanEqual %bool %34 %36
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %41 = OpLoad %int %40
+               OpSelectionMerge %42 None
+               OpSwitch %41 %42 16 %43 0 %43
+         %43 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpConvertSToF %float %41
+         %48 = OpCompositeConstruct %v4float %46 %47 %47 %46
+               OpStore %_GLF_color %48
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpIEqual %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+         %56 = OpCompositeConstruct %v4float %36 %36 %36 %36
+               OpStore %_GLF_color %56
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..7837732
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.hlsl
@@ -0,0 +1,59 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  const float x_31 = asfloat(x_6[1].x);
+  x_GLF_color = float4(x_31, x_31, x_31, x_31);
+  const float x_34 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_34 >= x_36)) {
+    const int x_41 = asint(x_8[1].x);
+    switch(x_41) {
+      case 0:
+      case 16: {
+        const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+        const int x_45 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+        const float x_46 = float(x_45);
+        const float x_47 = float(x_41);
+        x_GLF_color = float4(x_46, x_47, x_47, x_46);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+  }
+  const int x_50 = asint(x_8[1].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_52 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_50 == x_52)) {
+    x_GLF_color = float4(x_36, x_36, x_36, x_36);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.msl
new file mode 100644
index 0000000..2a9fb15
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_31 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_5) = float4(x_31, x_31, x_31, x_31);
+  float const x_34 = (*(tint_symbol_6)).y;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_34 >= x_36)) {
+    int const x_41 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    switch(x_41) {
+      case 0:
+      case 16: {
+        int const x_45 = x_8.x_GLF_uniform_int_values.arr[0].el;
+        float const x_46 = float(x_45);
+        float const x_47 = float(x_41);
+        *(tint_symbol_5) = float4(x_46, x_47, x_47, x_46);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+  }
+  int const x_50 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_52 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_50 == x_52)) {
+    *(tint_symbol_5) = float4(x_36, x_36, x_36, x_36);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_8, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..69687bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.spvasm
@@ -0,0 +1,135 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %62 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+         %29 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %30 = OpLoad %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %x_GLF_color %31
+         %34 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %35 = OpLoad %float %34
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThanEqual %bool %35 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %41
+         %42 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %45 = OpLoad %int %44
+               OpSelectionMerge %46 None
+               OpSwitch %45 %47 0 %48 16 %48
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpConvertSToF %float %45
+         %53 = OpCompositeConstruct %v4float %51 %52 %52 %51
+               OpStore %x_GLF_color %53
+               OpBranch %46
+         %47 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpIEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+         %61 = OpCompositeConstruct %v4float %38 %38 %38 %38
+               OpStore %x_GLF_color %61
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %62
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %66 = OpLabel
+         %67 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %69 = OpLabel
+         %70 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %70
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_3 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..8f12c6b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.spvasm.expected.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  let x_31 : f32 = x_6.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_31, x_31, x_31, x_31);
+  let x_34 : f32 = gl_FragCoord.y;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_34 >= x_36)) {
+    let x_41 : i32 = x_8.x_GLF_uniform_int_values[1];
+    switch(x_41) {
+      case 0, 16: {
+        let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+        let x_46 : f32 = f32(x_45);
+        let x_47 : f32 = f32(x_41);
+        x_GLF_color = vec4<f32>(x_46, x_47, x_47, x_46);
+      }
+      default: {
+      }
+    }
+  }
+  let x_50 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_52 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_50 == x_52)) {
+    x_GLF_color = vec4<f32>(x_36, x_36, x_36, x_36);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
new file mode 100644
index 0000000..8f12c6b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  let x_31 : f32 = x_6.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_31, x_31, x_31, x_31);
+  let x_34 : f32 = gl_FragCoord.y;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_34 >= x_36)) {
+    let x_41 : i32 = x_8.x_GLF_uniform_int_values[1];
+    switch(x_41) {
+      case 0, 16: {
+        let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+        let x_46 : f32 = f32(x_45);
+        let x_47 : f32 = f32(x_41);
+        x_GLF_color = vec4<f32>(x_46, x_47, x_47, x_46);
+      }
+      default: {
+      }
+    }
+  }
+  let x_50 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_52 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_50 == x_52)) {
+    x_GLF_color = vec4<f32>(x_36, x_36, x_36, x_36);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..7837732
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.hlsl
@@ -0,0 +1,59 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  const float x_31 = asfloat(x_6[1].x);
+  x_GLF_color = float4(x_31, x_31, x_31, x_31);
+  const float x_34 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_34 >= x_36)) {
+    const int x_41 = asint(x_8[1].x);
+    switch(x_41) {
+      case 0:
+      case 16: {
+        const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+        const int x_45 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+        const float x_46 = float(x_45);
+        const float x_47 = float(x_41);
+        x_GLF_color = float4(x_46, x_47, x_47, x_46);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+  }
+  const int x_50 = asint(x_8[1].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_52 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_50 == x_52)) {
+    x_GLF_color = float4(x_36, x_36, x_36, x_36);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.msl
new file mode 100644
index 0000000..2a9fb15
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_31 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_5) = float4(x_31, x_31, x_31, x_31);
+  float const x_34 = (*(tint_symbol_6)).y;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_34 >= x_36)) {
+    int const x_41 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    switch(x_41) {
+      case 0:
+      case 16: {
+        int const x_45 = x_8.x_GLF_uniform_int_values.arr[0].el;
+        float const x_46 = float(x_45);
+        float const x_47 = float(x_41);
+        *(tint_symbol_5) = float4(x_46, x_47, x_47, x_46);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+  }
+  int const x_50 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_52 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_50 == x_52)) {
+    *(tint_symbol_5) = float4(x_36, x_36, x_36, x_36);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_8, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..69687bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.spvasm
@@ -0,0 +1,135 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %62 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+         %29 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %30 = OpLoad %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %x_GLF_color %31
+         %34 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %35 = OpLoad %float %34
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThanEqual %bool %35 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %41
+         %42 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %45 = OpLoad %int %44
+               OpSelectionMerge %46 None
+               OpSwitch %45 %47 0 %48 16 %48
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpConvertSToF %float %45
+         %53 = OpCompositeConstruct %v4float %51 %52 %52 %51
+               OpStore %x_GLF_color %53
+               OpBranch %46
+         %47 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpIEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+         %61 = OpCompositeConstruct %v4float %38 %38 %38 %38
+               OpStore %x_GLF_color %61
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %62
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %66 = OpLabel
+         %67 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %69 = OpLabel
+         %70 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %70
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_3 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..8f12c6b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl.expected.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  let x_31 : f32 = x_6.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_31, x_31, x_31, x_31);
+  let x_34 : f32 = gl_FragCoord.y;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_34 >= x_36)) {
+    let x_41 : i32 = x_8.x_GLF_uniform_int_values[1];
+    switch(x_41) {
+      case 0, 16: {
+        let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+        let x_46 : f32 = f32(x_45);
+        let x_47 : f32 = f32(x_41);
+        x_GLF_color = vec4<f32>(x_46, x_47, x_47, x_46);
+      }
+      default: {
+      }
+    }
+  }
+  let x_50 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_52 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_50 == x_52)) {
+    x_GLF_color = vec4<f32>(x_36, x_36, x_36, x_36);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm
new file mode 100644
index 0000000..c201685
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm
@@ -0,0 +1,134 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %c "c"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+       %true = OpConstantTrue %bool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %11
+         %27 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %28
+               OpStore %a %29
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %31 = OpLoad %int %30
+               OpStore %b %31
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %33 = OpLoad %int %32
+               OpStore %c %33
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %int %a
+         %39 = OpLoad %int %b
+         %40 = OpSLessThan %bool %38 %39
+               OpBranchConditional %40 %41 %35
+         %41 = OpLabel
+         %42 = OpLoad %int %a
+         %43 = OpIAdd %int %42 %int_1
+               OpStore %a %43
+         %44 = OpLoad %int %c
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %46 = OpLoad %int %45
+         %47 = OpIEqual %bool %44 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %52 = OpLoad %int %51
+         %53 = OpLoad %int %c
+         %54 = OpIMul %int %53 %52
+               OpStore %c %54
+               OpBranch %48
+         %50 = OpLabel
+               OpSelectionMerge %55 None
+               OpBranchConditional %true %56 %55
+         %56 = OpLabel
+               OpBranch %36
+         %55 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpBranch %34
+         %35 = OpLabel
+         %57 = OpLoad %int %a
+         %58 = OpLoad %int %b
+         %59 = OpIEqual %bool %57 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpLoad %int %c
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %64 = OpLoad %int %63
+         %65 = OpIEqual %bool %62 %64
+               OpBranch %60
+         %60 = OpLabel
+         %66 = OpPhi %bool %59 %35 %65 %61
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpCompositeConstruct %v4float %72 %75 %78 %81
+               OpStore %_GLF_color %82
+               OpBranch %67
+         %69 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpCompositeConstruct %v4float %85 %85 %85 %85
+               OpStore %_GLF_color %86
+               OpBranch %67
+         %67 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1ee50e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,73 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  bool x_65 = false;
+  bool x_66_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_29;
+  const int x_31 = asint(x_6[1].x);
+  b = x_31;
+  const int x_33 = asint(x_6[2].x);
+  c = x_33;
+  while (true) {
+    if ((a < b)) {
+    } else {
+      break;
+    }
+    a = (a + 1);
+    const int x_44 = c;
+    const int x_46 = asint(x_6[2].x);
+    if ((x_44 == x_46)) {
+      const int x_52 = asint(x_6[3].x);
+      c = (c * x_52);
+    } else {
+      if (true) {
+        continue;
+      }
+    }
+  }
+  const bool x_59 = (a == b);
+  x_66_phi = x_59;
+  if (x_59) {
+    const int x_62 = c;
+    const int x_64 = asint(x_6[3].x);
+    x_65 = (x_62 == x_64);
+    x_66_phi = x_65;
+  }
+  if (x_66_phi) {
+    const int x_71 = asint(x_6[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_77 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_80 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_71), float(x_74), float(x_77), float(x_80));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_84 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_85 = float(x_84);
+    x_GLF_color = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b18bbf7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.msl
@@ -0,0 +1,86 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  bool x_65 = false;
+  bool x_66_phi = false;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_29;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  b = x_31;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  c = x_33;
+  while (true) {
+    int const x_38 = a;
+    int const x_39 = b;
+    if ((x_38 < x_39)) {
+    } else {
+      break;
+    }
+    int const x_42 = a;
+    a = (x_42 + 1);
+    int const x_44 = c;
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_44 == x_46)) {
+      int const x_52 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      int const x_53 = c;
+      c = (x_53 * x_52);
+    } else {
+      if (true) {
+        continue;
+      }
+    }
+  }
+  int const x_57 = a;
+  int const x_58 = b;
+  bool const x_59 = (x_57 == x_58);
+  x_66_phi = x_59;
+  if (x_59) {
+    int const x_62 = c;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    x_65 = (x_62 == x_64);
+    x_66_phi = x_65;
+  }
+  bool const x_66 = x_66_phi;
+  if (x_66) {
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_74 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_80 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_71), float(x_74), float(x_77), float(x_80));
+  } else {
+    int const x_84 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_85 = float(x_84);
+    *(tint_symbol_4) = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a7e3461
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,182 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 110
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_65 "x_65"
+               OpName %x_66_phi "x_66_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %c = OpVariable %_ptr_Function_int Function %21
+       %x_65 = OpVariable %_ptr_Function_bool Function %27
+   %x_66_phi = OpVariable %_ptr_Function_bool Function %27
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %33 = OpLoad %int %32
+               OpStore %a %33
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %36 = OpLoad %int %35
+               OpStore %b %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %39 = OpLoad %int %38
+               OpStore %c %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %a
+         %45 = OpLoad %int %b
+         %46 = OpSLessThan %bool %44 %45
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+               OpBranch %47
+         %49 = OpLabel
+               OpBranch %41
+         %47 = OpLabel
+         %50 = OpLoad %int %a
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %a %51
+         %52 = OpLoad %int %c
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %61 = OpLoad %int %60
+         %62 = OpLoad %int %c
+         %63 = OpIMul %int %62 %61
+               OpStore %c %63
+               OpBranch %56
+         %58 = OpLabel
+               OpSelectionMerge %65 None
+               OpBranchConditional %true %66 %65
+         %66 = OpLabel
+               OpBranch %42
+         %65 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %40
+         %41 = OpLabel
+         %67 = OpLoad %int %a
+         %68 = OpLoad %int %b
+         %69 = OpIEqual %bool %67 %68
+               OpStore %x_66_phi %69
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %int %c
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %74 = OpLoad %int %73
+         %75 = OpIEqual %bool %72 %74
+               OpStore %x_65 %75
+         %76 = OpLoad %bool %x_65
+               OpStore %x_66_phi %76
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %bool %x_66_phi
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %82
+         %90 = OpConvertSToF %float %84
+         %91 = OpConvertSToF %float %86
+         %92 = OpConvertSToF %float %88
+         %93 = OpCompositeConstruct %v4float %89 %90 %91 %92
+               OpStore %x_GLF_color %93
+               OpBranch %78
+         %80 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpCompositeConstruct %v4float %96 %96 %96 %96
+               OpStore %x_GLF_color %97
+               OpBranch %78
+         %78 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %98
+%tint_symbol = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %105 = OpLabel
+        %106 = OpFunctionCall %void %main_1
+        %108 = OpLoad %v4float %x_GLF_color
+        %109 = OpCompositeConstruct %main_out %108
+        %107 = OpFunctionCall %void %tint_symbol_2 %109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..73577eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,79 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var x_65 : bool;
+  var x_66_phi : bool;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_29;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[1];
+  b = x_31;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[2];
+  c = x_33;
+  loop {
+    let x_38 : i32 = a;
+    let x_39 : i32 = b;
+    if ((x_38 < x_39)) {
+    } else {
+      break;
+    }
+    let x_42 : i32 = a;
+    a = (x_42 + 1);
+    let x_44 : i32 = c;
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_44 == x_46)) {
+      let x_52 : i32 = x_6.x_GLF_uniform_int_values[3];
+      let x_53 : i32 = c;
+      c = (x_53 * x_52);
+    } else {
+      if (true) {
+        continue;
+      }
+    }
+  }
+  let x_57 : i32 = a;
+  let x_58 : i32 = b;
+  let x_59 : bool = (x_57 == x_58);
+  x_66_phi = x_59;
+  if (x_59) {
+    let x_62 : i32 = c;
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_65 = (x_62 == x_64);
+    x_66_phi = x_65;
+  }
+  let x_66 : bool = x_66_phi;
+  if (x_66) {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_71), f32(x_74), f32(x_77), f32(x_80));
+  } else {
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
new file mode 100644
index 0000000..73577eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
@@ -0,0 +1,79 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var x_65 : bool;
+  var x_66_phi : bool;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_29;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[1];
+  b = x_31;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[2];
+  c = x_33;
+  loop {
+    let x_38 : i32 = a;
+    let x_39 : i32 = b;
+    if ((x_38 < x_39)) {
+    } else {
+      break;
+    }
+    let x_42 : i32 = a;
+    a = (x_42 + 1);
+    let x_44 : i32 = c;
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_44 == x_46)) {
+      let x_52 : i32 = x_6.x_GLF_uniform_int_values[3];
+      let x_53 : i32 = c;
+      c = (x_53 * x_52);
+    } else {
+      if (true) {
+        continue;
+      }
+    }
+  }
+  let x_57 : i32 = a;
+  let x_58 : i32 = b;
+  let x_59 : bool = (x_57 == x_58);
+  x_66_phi = x_59;
+  if (x_59) {
+    let x_62 : i32 = c;
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_65 = (x_62 == x_64);
+    x_66_phi = x_65;
+  }
+  let x_66 : bool = x_66_phi;
+  if (x_66) {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_71), f32(x_74), f32(x_77), f32(x_80));
+  } else {
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1ee50e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,73 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  bool x_65 = false;
+  bool x_66_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_29;
+  const int x_31 = asint(x_6[1].x);
+  b = x_31;
+  const int x_33 = asint(x_6[2].x);
+  c = x_33;
+  while (true) {
+    if ((a < b)) {
+    } else {
+      break;
+    }
+    a = (a + 1);
+    const int x_44 = c;
+    const int x_46 = asint(x_6[2].x);
+    if ((x_44 == x_46)) {
+      const int x_52 = asint(x_6[3].x);
+      c = (c * x_52);
+    } else {
+      if (true) {
+        continue;
+      }
+    }
+  }
+  const bool x_59 = (a == b);
+  x_66_phi = x_59;
+  if (x_59) {
+    const int x_62 = c;
+    const int x_64 = asint(x_6[3].x);
+    x_65 = (x_62 == x_64);
+    x_66_phi = x_65;
+  }
+  if (x_66_phi) {
+    const int x_71 = asint(x_6[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_77 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_80 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_71), float(x_74), float(x_77), float(x_80));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_84 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_85 = float(x_84);
+    x_GLF_color = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b18bbf7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.msl
@@ -0,0 +1,86 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  bool x_65 = false;
+  bool x_66_phi = false;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_29;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  b = x_31;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  c = x_33;
+  while (true) {
+    int const x_38 = a;
+    int const x_39 = b;
+    if ((x_38 < x_39)) {
+    } else {
+      break;
+    }
+    int const x_42 = a;
+    a = (x_42 + 1);
+    int const x_44 = c;
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_44 == x_46)) {
+      int const x_52 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      int const x_53 = c;
+      c = (x_53 * x_52);
+    } else {
+      if (true) {
+        continue;
+      }
+    }
+  }
+  int const x_57 = a;
+  int const x_58 = b;
+  bool const x_59 = (x_57 == x_58);
+  x_66_phi = x_59;
+  if (x_59) {
+    int const x_62 = c;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    x_65 = (x_62 == x_64);
+    x_66_phi = x_65;
+  }
+  bool const x_66 = x_66_phi;
+  if (x_66) {
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_74 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_80 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_71), float(x_74), float(x_77), float(x_80));
+  } else {
+    int const x_84 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_85 = float(x_84);
+    *(tint_symbol_4) = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..a7e3461
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,182 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 110
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_65 "x_65"
+               OpName %x_66_phi "x_66_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %c = OpVariable %_ptr_Function_int Function %21
+       %x_65 = OpVariable %_ptr_Function_bool Function %27
+   %x_66_phi = OpVariable %_ptr_Function_bool Function %27
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %33 = OpLoad %int %32
+               OpStore %a %33
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %36 = OpLoad %int %35
+               OpStore %b %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %39 = OpLoad %int %38
+               OpStore %c %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %a
+         %45 = OpLoad %int %b
+         %46 = OpSLessThan %bool %44 %45
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+               OpBranch %47
+         %49 = OpLabel
+               OpBranch %41
+         %47 = OpLabel
+         %50 = OpLoad %int %a
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %a %51
+         %52 = OpLoad %int %c
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %61 = OpLoad %int %60
+         %62 = OpLoad %int %c
+         %63 = OpIMul %int %62 %61
+               OpStore %c %63
+               OpBranch %56
+         %58 = OpLabel
+               OpSelectionMerge %65 None
+               OpBranchConditional %true %66 %65
+         %66 = OpLabel
+               OpBranch %42
+         %65 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %40
+         %41 = OpLabel
+         %67 = OpLoad %int %a
+         %68 = OpLoad %int %b
+         %69 = OpIEqual %bool %67 %68
+               OpStore %x_66_phi %69
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %int %c
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %74 = OpLoad %int %73
+         %75 = OpIEqual %bool %72 %74
+               OpStore %x_65 %75
+         %76 = OpLoad %bool %x_65
+               OpStore %x_66_phi %76
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %bool %x_66_phi
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %82
+         %90 = OpConvertSToF %float %84
+         %91 = OpConvertSToF %float %86
+         %92 = OpConvertSToF %float %88
+         %93 = OpCompositeConstruct %v4float %89 %90 %91 %92
+               OpStore %x_GLF_color %93
+               OpBranch %78
+         %80 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpCompositeConstruct %v4float %96 %96 %96 %96
+               OpStore %x_GLF_color %97
+               OpBranch %78
+         %78 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %98
+%tint_symbol = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %105 = OpLabel
+        %106 = OpFunctionCall %void %main_1
+        %108 = OpLoad %v4float %x_GLF_color
+        %109 = OpCompositeConstruct %main_out %108
+        %107 = OpFunctionCall %void %tint_symbol_2 %109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..73577eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,79 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var x_65 : bool;
+  var x_66_phi : bool;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_29;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[1];
+  b = x_31;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[2];
+  c = x_33;
+  loop {
+    let x_38 : i32 = a;
+    let x_39 : i32 = b;
+    if ((x_38 < x_39)) {
+    } else {
+      break;
+    }
+    let x_42 : i32 = a;
+    a = (x_42 + 1);
+    let x_44 : i32 = c;
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_44 == x_46)) {
+      let x_52 : i32 = x_6.x_GLF_uniform_int_values[3];
+      let x_53 : i32 = c;
+      c = (x_53 * x_52);
+    } else {
+      if (true) {
+        continue;
+      }
+    }
+  }
+  let x_57 : i32 = a;
+  let x_58 : i32 = b;
+  let x_59 : bool = (x_57 == x_58);
+  x_66_phi = x_59;
+  if (x_59) {
+    let x_62 : i32 = c;
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_65 = (x_62 == x_64);
+    x_66_phi = x_65;
+  }
+  let x_66 : bool = x_66_phi;
+  if (x_66) {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_71), f32(x_74), f32(x_77), f32(x_80));
+  } else {
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm
new file mode 100644
index 0000000..61eabc3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm
@@ -0,0 +1,97 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+       %main = OpFunction %void None %9
+         %24 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_1
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %29 = OpLoad %int %a
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpSGreaterThanEqual %bool %29 %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+               OpBranch %26
+         %33 = OpLabel
+               OpSelectionMerge %35 None
+               OpBranchConditional %true %36 %35
+         %36 = OpLabel
+               OpKill
+         %35 = OpLabel
+         %37 = OpLoad %int %a
+         %38 = OpIAdd %int %37 %int_1
+               OpStore %a %38
+               OpBranch %27
+         %27 = OpLabel
+         %39 = OpLoad %int %a
+         %40 = OpINotEqual %bool %39 %int_1
+               OpBranchConditional %40 %25 %26
+         %26 = OpLabel
+         %41 = OpLoad %int %a
+         %42 = OpIEqual %bool %41 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpCompositeConstruct %v4float %float_1 %48 %51 %54
+               OpStore %_GLF_color %55
+               OpBranch %43
+         %45 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpCompositeConstruct %v4float %58 %58 %58 %58
+               OpStore %_GLF_color %59
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..5317e21
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,55 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  a = 1;
+  while (true) {
+    const int x_29 = a;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_31 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_29 >= x_31)) {
+      break;
+    }
+    if (true) {
+      discard;
+    }
+    a = (a + 1);
+    {
+      if ((a != 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((a == 1)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_53 = asint(x_6[1].x);
+    x_GLF_color = float4(1.0f, float(x_47), float(x_50), float(x_53));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_58 = float(x_57);
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6aa0157
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.msl
@@ -0,0 +1,64 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  a = 1;
+  while (true) {
+    int const x_29 = a;
+    int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_29 >= x_31)) {
+      break;
+    }
+    if (true) {
+      discard_fragment();
+    }
+    int const x_37 = a;
+    a = (x_37 + 1);
+    {
+      int const x_39 = a;
+      if ((x_39 != 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_41 = a;
+  if ((x_41 == 1)) {
+    int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(1.0f, float(x_47), float(x_50), float(x_53));
+  } else {
+    int const x_57 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_58 = float(x_57);
+    *(tint_symbol_4) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d01a3ec2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_1
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %a
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpSGreaterThanEqual %bool %27 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpBranch %24
+         %35 = OpLabel
+               OpSelectionMerge %38 None
+               OpBranchConditional %true %39 %38
+         %39 = OpLabel
+               OpKill
+         %38 = OpLabel
+         %40 = OpLoad %int %a
+         %41 = OpIAdd %int %40 %int_1
+               OpStore %a %41
+               OpBranch %25
+         %25 = OpLabel
+         %42 = OpLoad %int %a
+         %43 = OpINotEqual %bool %42 %int_1
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %24
+         %44 = OpLabel
+               OpBranch %23
+         %24 = OpLabel
+         %47 = OpLoad %int %a
+         %48 = OpIEqual %bool %47 %int_1
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %float_1 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %49
+         %51 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 25[%25] is not post dominated by the back-edge block 44[%44]
+  %44 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..80683f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,58 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = 1;
+  loop {
+    let x_29 : i32 = a;
+    let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_29 >= x_31)) {
+      break;
+    }
+    if (true) {
+      discard;
+    }
+    let x_37 : i32 = a;
+    a = (x_37 + 1);
+
+    continuing {
+      let x_39 : i32 = a;
+      if ((x_39 != 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_41 : i32 = a;
+  if ((x_41 == 1)) {
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(1.0, f32(x_47), f32(x_50), f32(x_53));
+  } else {
+    let x_57 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
new file mode 100644
index 0000000..80683f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
@@ -0,0 +1,58 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = 1;
+  loop {
+    let x_29 : i32 = a;
+    let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_29 >= x_31)) {
+      break;
+    }
+    if (true) {
+      discard;
+    }
+    let x_37 : i32 = a;
+    a = (x_37 + 1);
+
+    continuing {
+      let x_39 : i32 = a;
+      if ((x_39 != 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_41 : i32 = a;
+  if ((x_41 == 1)) {
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(1.0, f32(x_47), f32(x_50), f32(x_53));
+  } else {
+    let x_57 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..5317e21
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,55 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  a = 1;
+  while (true) {
+    const int x_29 = a;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_31 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_29 >= x_31)) {
+      break;
+    }
+    if (true) {
+      discard;
+    }
+    a = (a + 1);
+    {
+      if ((a != 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((a == 1)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_53 = asint(x_6[1].x);
+    x_GLF_color = float4(1.0f, float(x_47), float(x_50), float(x_53));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_58 = float(x_57);
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6aa0157
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.msl
@@ -0,0 +1,64 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  a = 1;
+  while (true) {
+    int const x_29 = a;
+    int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_29 >= x_31)) {
+      break;
+    }
+    if (true) {
+      discard_fragment();
+    }
+    int const x_37 = a;
+    a = (x_37 + 1);
+    {
+      int const x_39 = a;
+      if ((x_39 != 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_41 = a;
+  if ((x_41 == 1)) {
+    int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(1.0f, float(x_47), float(x_50), float(x_53));
+  } else {
+    int const x_57 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_58 = float(x_57);
+    *(tint_symbol_4) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d01a3ec2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,142 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_1
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %a
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpSGreaterThanEqual %bool %27 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpBranch %24
+         %35 = OpLabel
+               OpSelectionMerge %38 None
+               OpBranchConditional %true %39 %38
+         %39 = OpLabel
+               OpKill
+         %38 = OpLabel
+         %40 = OpLoad %int %a
+         %41 = OpIAdd %int %40 %int_1
+               OpStore %a %41
+               OpBranch %25
+         %25 = OpLabel
+         %42 = OpLoad %int %a
+         %43 = OpINotEqual %bool %42 %int_1
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %24
+         %44 = OpLabel
+               OpBranch %23
+         %24 = OpLabel
+         %47 = OpLoad %int %a
+         %48 = OpIEqual %bool %47 %int_1
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %float_1 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %49
+         %51 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 25[%25] is not post dominated by the back-edge block 44[%44]
+  %44 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..80683f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,58 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = 1;
+  loop {
+    let x_29 : i32 = a;
+    let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_29 >= x_31)) {
+      break;
+    }
+    if (true) {
+      discard;
+    }
+    let x_37 : i32 = a;
+    a = (x_37 + 1);
+
+    continuing {
+      let x_39 : i32 = a;
+      if ((x_39 != 1)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_41 : i32 = a;
+  if ((x_41 == 1)) {
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(1.0, f32(x_47), f32(x_50), f32(x_53));
+  } else {
+    let x_57 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm
new file mode 100644
index 0000000..d7e3f85
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm
@@ -0,0 +1,86 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_7 = OpConstant %int 7
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %25 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpLoad %int %i
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %33 = OpLoad %int %32
+         %34 = OpIAdd %int %int_7 %33
+         %35 = OpSLessThan %bool %31 %34
+               OpBranchConditional %35 %36 %28
+         %36 = OpLabel
+         %37 = OpLoad %int %i
+               OpSelectionMerge %38 None
+               OpSwitch %37 %38 7 %39 8 %39
+         %39 = OpLabel
+         %40 = OpLoad %int %a
+         %41 = OpIAdd %int %40 %int_1
+               OpStore %a %41
+               OpBranch %38
+         %38 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+         %42 = OpLoad %int %i
+         %43 = OpIAdd %int %42 %int_1
+               OpStore %i %43
+               OpBranch %27
+         %28 = OpLabel
+         %44 = OpLoad %int %a
+         %45 = OpIEqual %bool %44 %int_2
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3ac8a37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,52 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    const int x_31 = i;
+    const int x_33 = asint(x_7[0].x);
+    if ((x_31 < (7 + x_33))) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 7:
+      case 8: {
+        a = (a + 1);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  if ((a == 2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b25d714
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_31 = i;
+    int const x_33 = x_7.three;
+    if ((x_31 < (7 + x_33))) {
+    } else {
+      break;
+    }
+    int const x_37 = i;
+    switch(x_37) {
+      case 7:
+      case 8: {
+        int const x_40 = a;
+        a = (x_40 + 1);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_42 = i;
+      i = (x_42 + 1);
+    }
+  }
+  int const x_44 = a;
+  if ((x_44 == 2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5e511e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,127 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_7 = OpConstant %int 7
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %56 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %i
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpIAdd %int %int_7 %30
+         %33 = OpSLessThan %bool %25 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %22
+         %35 = OpLabel
+         %38 = OpLoad %int %i
+               OpSelectionMerge %39 None
+               OpSwitch %38 %40 7 %41 8 %41
+         %41 = OpLabel
+         %42 = OpLoad %int %a
+         %44 = OpIAdd %int %42 %int_1
+               OpStore %a %44
+               OpBranch %39
+         %40 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %i %46
+               OpBranch %21
+         %22 = OpLabel
+         %47 = OpLoad %int %a
+         %49 = OpIEqual %bool %47 %int_2
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %57
+%tint_symbol = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %64 = OpLabel
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_2 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1a774f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,55 @@
+[[block]]
+struct buf0 {
+  three : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_31 : i32 = i;
+    let x_33 : i32 = x_7.three;
+    if ((x_31 < (7 + x_33))) {
+    } else {
+      break;
+    }
+    let x_37 : i32 = i;
+    switch(x_37) {
+      case 7, 8: {
+        let x_40 : i32 = a;
+        a = (x_40 + 1);
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_42 : i32 = i;
+      i = (x_42 + 1);
+    }
+  }
+  let x_44 : i32 = a;
+  if ((x_44 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
new file mode 100644
index 0000000..1a774f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
@@ -0,0 +1,55 @@
+[[block]]
+struct buf0 {
+  three : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_31 : i32 = i;
+    let x_33 : i32 = x_7.three;
+    if ((x_31 < (7 + x_33))) {
+    } else {
+      break;
+    }
+    let x_37 : i32 = i;
+    switch(x_37) {
+      case 7, 8: {
+        let x_40 : i32 = a;
+        a = (x_40 + 1);
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_42 : i32 = i;
+      i = (x_42 + 1);
+    }
+  }
+  let x_44 : i32 = a;
+  if ((x_44 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3ac8a37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,52 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    const int x_31 = i;
+    const int x_33 = asint(x_7[0].x);
+    if ((x_31 < (7 + x_33))) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 7:
+      case 8: {
+        a = (a + 1);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  if ((a == 2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b25d714
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_31 = i;
+    int const x_33 = x_7.three;
+    if ((x_31 < (7 + x_33))) {
+    } else {
+      break;
+    }
+    int const x_37 = i;
+    switch(x_37) {
+      case 7:
+      case 8: {
+        int const x_40 = a;
+        a = (x_40 + 1);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_42 = i;
+      i = (x_42 + 1);
+    }
+  }
+  int const x_44 = a;
+  if ((x_44 == 2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5e511e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,127 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_7 = OpConstant %int 7
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %56 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %i
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpIAdd %int %int_7 %30
+         %33 = OpSLessThan %bool %25 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %22
+         %35 = OpLabel
+         %38 = OpLoad %int %i
+               OpSelectionMerge %39 None
+               OpSwitch %38 %40 7 %41 8 %41
+         %41 = OpLabel
+         %42 = OpLoad %int %a
+         %44 = OpIAdd %int %42 %int_1
+               OpStore %a %44
+               OpBranch %39
+         %40 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %i %46
+               OpBranch %21
+         %22 = OpLabel
+         %47 = OpLoad %int %a
+         %49 = OpIEqual %bool %47 %int_2
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %57
+%tint_symbol = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %64 = OpLabel
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_2 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1a774f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,55 @@
+[[block]]
+struct buf0 {
+  three : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_31 : i32 = i;
+    let x_33 : i32 = x_7.three;
+    if ((x_31 < (7 + x_33))) {
+    } else {
+      break;
+    }
+    let x_37 : i32 = i;
+    switch(x_37) {
+      case 7, 8: {
+        let x_40 : i32 = a;
+        a = (x_40 + 1);
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_42 : i32 = i;
+      i = (x_42 + 1);
+    }
+  }
+  let x_44 : i32 = a;
+  if ((x_44 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm
new file mode 100644
index 0000000..475f280
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm
@@ -0,0 +1,147 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %arr "arr"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_3_0 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+%_arr_float_uint_3_0 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3_0
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+%_ptr_Function_int = OpTypePointer Function %int
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %13
+         %32 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_float_uint_3 Function
+          %a = OpVariable %_ptr_Function_int Function
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %34 = OpLoad %float %33
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %38 = OpLoad %float %37
+         %39 = OpCompositeConstruct %_arr_float_uint_3 %34 %36 %38
+               OpStore %arr %39
+               OpStore %a %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %a
+         %45 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpSLessThanEqual %bool %44 %46
+               OpBranchConditional %47 %48 %41
+         %48 = OpLabel
+         %49 = OpLoad %int %a
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %a %50
+         %51 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %52 = OpLoad %float %51
+         %53 = OpAccessChain %_ptr_Function_float %arr %49
+               OpStore %53 %52
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %40
+         %41 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_float %arr %55
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpFOrdEqual %bool %57 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Function_float %arr %64
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpFOrdEqual %bool %66 %68
+               OpBranch %61
+         %61 = OpLabel
+         %70 = OpPhi %bool %60 %41 %69 %62
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Function_float %arr %74
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %78 = OpLoad %float %77
+         %79 = OpFOrdEqual %bool %76 %78
+               OpBranch %71
+         %71 = OpLabel
+         %80 = OpPhi %bool %70 %61 %79 %72
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Function_float %arr %85
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %93 = OpLoad %float %92
+         %94 = OpCompositeConstruct %v4float %87 %89 %91 %93
+               OpStore %_GLF_color %94
+               OpBranch %81
+         %83 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %96 = OpLoad %float %95
+         %97 = OpCompositeConstruct %v4float %96 %96 %96 %96
+               OpStore %_GLF_color %97
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9e41aaa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,87 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float arr[3] = (float[3])0;
+  int a = 0;
+  bool x_69 = false;
+  bool x_79 = false;
+  bool x_70_phi = false;
+  bool x_80_phi = false;
+  const float x_34 = asfloat(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_38 = asfloat(x_6[2].x);
+  const float tint_symbol_4[3] = {x_34, x_36, x_38};
+  arr = tint_symbol_4;
+  a = 0;
+  while (true) {
+    const int x_44 = a;
+    const int x_46 = asint(x_9[1].x);
+    if ((x_44 <= x_46)) {
+    } else {
+      break;
+    }
+    const int x_49 = a;
+    a = (x_49 + 1);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_52 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    arr[x_49] = x_52;
+  }
+  const int x_55 = asint(x_9[1].x);
+  const float x_57 = arr[x_55];
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_59 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const bool x_60 = (x_57 == x_59);
+  x_70_phi = x_60;
+  if (x_60) {
+    const int x_64 = asint(x_9[2].x);
+    const float x_66 = arr[x_64];
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_69 = (x_66 == x_68);
+    x_70_phi = x_69;
+  }
+  const bool x_70 = x_70_phi;
+  x_80_phi = x_70;
+  if (x_70) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_9[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_76 = arr[x_74];
+    const float x_78 = asfloat(x_6[2].x);
+    x_79 = (x_76 == x_78);
+    x_80_phi = x_79;
+  }
+  if (x_80_phi) {
+    const int x_85 = asint(x_9[1].x);
+    const float x_87 = arr[x_85];
+    const float x_89 = asfloat(x_6[1].x);
+    const float x_91 = asfloat(x_6[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_93 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(x_87, x_89, x_91, x_93);
+  } else {
+    const float x_96 = asfloat(x_6[1].x);
+    x_GLF_color = float4(x_96, x_96, x_96, x_96);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..28fc564
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 arr = {};
+  int a = 0;
+  bool x_69 = false;
+  bool x_79 = false;
+  bool x_70_phi = false;
+  bool x_80_phi = false;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_34, x_36, x_38}};
+  arr = tint_symbol_3;
+  a = 0;
+  while (true) {
+    int const x_44 = a;
+    int const x_46 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_44 <= x_46)) {
+    } else {
+      break;
+    }
+    int const x_49 = a;
+    a = (x_49 + 1);
+    float const x_52 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    arr.arr[x_49] = x_52;
+  }
+  int const x_55 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  float const x_57 = arr.arr[x_55];
+  float const x_59 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_60 = (x_57 == x_59);
+  x_70_phi = x_60;
+  if (x_60) {
+    int const x_64 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_66 = arr.arr[x_64];
+    float const x_68 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    x_69 = (x_66 == x_68);
+    x_70_phi = x_69;
+  }
+  bool const x_70 = x_70_phi;
+  x_80_phi = x_70;
+  if (x_70) {
+    int const x_74 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    float const x_76 = arr.arr[x_74];
+    float const x_78 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    x_79 = (x_76 == x_78);
+    x_80_phi = x_79;
+  }
+  bool const x_80 = x_80_phi;
+  if (x_80) {
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_87 = arr.arr[x_85];
+    float const x_89 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_91 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_93 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_5) = float4(x_87, x_89, x_91, x_93);
+  } else {
+    float const x_96 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_5) = float4(x_96, x_96, x_96, x_96);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9d4d51a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,206 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 125
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %x_69 "x_69"
+               OpName %x_79 "x_79"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_80_phi "x_80_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_arr_float_uint_3_0 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3_0 = OpTypePointer Function %_arr_float_uint_3_0
+         %26 = OpConstantNull %_arr_float_uint_3_0
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+        %113 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_float_uint_3_0 Function %26
+          %a = OpVariable %_ptr_Function_int Function %29
+       %x_69 = OpVariable %_ptr_Function_bool Function %33
+       %x_79 = OpVariable %_ptr_Function_bool Function %33
+   %x_70_phi = OpVariable %_ptr_Function_bool Function %33
+   %x_80_phi = OpVariable %_ptr_Function_bool Function %33
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %41 = OpLoad %float %40
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %44 = OpLoad %float %43
+         %46 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %_arr_float_uint_3_0 %41 %44 %47
+               OpStore %arr %48
+               OpStore %a %int_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %a
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpSLessThanEqual %bool %53 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %50
+         %58 = OpLabel
+         %61 = OpLoad %int %a
+         %62 = OpIAdd %int %61 %int_1
+               OpStore %a %62
+         %63 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %64 = OpLoad %float %63
+         %66 = OpAccessChain %_ptr_Function_float %arr %61
+               OpStore %66 %64
+               OpBranch %51
+         %51 = OpLabel
+               OpBranch %49
+         %50 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Function_float %arr %68
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %72 = OpLoad %float %71
+         %73 = OpFOrdEqual %bool %70 %72
+               OpStore %x_70_phi %73
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Function_float %arr %77
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %81 = OpLoad %float %80
+         %82 = OpFOrdEqual %bool %79 %81
+               OpStore %x_69 %82
+         %83 = OpLoad %bool %x_69
+               OpStore %x_70_phi %83
+               OpBranch %74
+         %74 = OpLabel
+         %84 = OpLoad %bool %x_70_phi
+               OpStore %x_80_phi %84
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Function_float %arr %88
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %92 = OpLoad %float %91
+         %93 = OpFOrdEqual %bool %90 %92
+               OpStore %x_79 %93
+         %94 = OpLoad %bool %x_79
+               OpStore %x_80_phi %94
+               OpBranch %85
+         %85 = OpLabel
+         %95 = OpLoad %bool %x_80_phi
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %98
+         %97 = OpLabel
+         %99 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Function_float %arr %100
+        %102 = OpLoad %float %101
+        %103 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %106 = OpLoad %float %105
+        %107 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %108 = OpLoad %float %107
+        %109 = OpCompositeConstruct %v4float %102 %104 %106 %108
+               OpStore %x_GLF_color %109
+               OpBranch %96
+         %98 = OpLabel
+        %110 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %111 = OpLoad %float %110
+        %112 = OpCompositeConstruct %v4float %111 %111 %111 %111
+               OpStore %x_GLF_color %112
+               OpBranch %96
+         %96 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %113
+%tint_symbol = OpFunctionParameter %main_out
+        %117 = OpLabel
+        %118 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %118
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %120 = OpLabel
+        %121 = OpFunctionCall %void %main_1
+        %123 = OpLoad %v4float %x_GLF_color
+        %124 = OpCompositeConstruct %main_out %123
+        %122 = OpFunctionCall %void %tint_symbol_2 %124
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..dff82e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,90 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<f32, 3>;
+  var a : i32;
+  var x_69 : bool;
+  var x_79 : bool;
+  var x_70_phi : bool;
+  var x_80_phi : bool;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[2];
+  arr = array<f32, 3>(x_34, x_36, x_38);
+  a = 0;
+  loop {
+    let x_44 : i32 = a;
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[1];
+    if ((x_44 <= x_46)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = a;
+    a = (x_49 + 1);
+    let x_52 : f32 = x_6.x_GLF_uniform_float_values[0];
+    arr[x_49] = x_52;
+  }
+  let x_55 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_57 : f32 = arr[x_55];
+  let x_59 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_60 : bool = (x_57 == x_59);
+  x_70_phi = x_60;
+  if (x_60) {
+    let x_64 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_66 : f32 = arr[x_64];
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_69 = (x_66 == x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_80_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_76 : f32 = arr[x_74];
+    let x_78 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_79 = (x_76 == x_78);
+    x_80_phi = x_79;
+  }
+  let x_80 : bool = x_80_phi;
+  if (x_80) {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_87 : f32 = arr[x_85];
+    let x_89 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_91 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_93 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_87, x_89, x_91, x_93);
+  } else {
+    let x_96 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_96, x_96, x_96, x_96);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
new file mode 100644
index 0000000..dff82e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
@@ -0,0 +1,90 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<f32, 3>;
+  var a : i32;
+  var x_69 : bool;
+  var x_79 : bool;
+  var x_70_phi : bool;
+  var x_80_phi : bool;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[2];
+  arr = array<f32, 3>(x_34, x_36, x_38);
+  a = 0;
+  loop {
+    let x_44 : i32 = a;
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[1];
+    if ((x_44 <= x_46)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = a;
+    a = (x_49 + 1);
+    let x_52 : f32 = x_6.x_GLF_uniform_float_values[0];
+    arr[x_49] = x_52;
+  }
+  let x_55 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_57 : f32 = arr[x_55];
+  let x_59 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_60 : bool = (x_57 == x_59);
+  x_70_phi = x_60;
+  if (x_60) {
+    let x_64 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_66 : f32 = arr[x_64];
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_69 = (x_66 == x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_80_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_76 : f32 = arr[x_74];
+    let x_78 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_79 = (x_76 == x_78);
+    x_80_phi = x_79;
+  }
+  let x_80 : bool = x_80_phi;
+  if (x_80) {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_87 : f32 = arr[x_85];
+    let x_89 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_91 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_93 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_87, x_89, x_91, x_93);
+  } else {
+    let x_96 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_96, x_96, x_96, x_96);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9e41aaa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,87 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float arr[3] = (float[3])0;
+  int a = 0;
+  bool x_69 = false;
+  bool x_79 = false;
+  bool x_70_phi = false;
+  bool x_80_phi = false;
+  const float x_34 = asfloat(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_38 = asfloat(x_6[2].x);
+  const float tint_symbol_4[3] = {x_34, x_36, x_38};
+  arr = tint_symbol_4;
+  a = 0;
+  while (true) {
+    const int x_44 = a;
+    const int x_46 = asint(x_9[1].x);
+    if ((x_44 <= x_46)) {
+    } else {
+      break;
+    }
+    const int x_49 = a;
+    a = (x_49 + 1);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_52 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    arr[x_49] = x_52;
+  }
+  const int x_55 = asint(x_9[1].x);
+  const float x_57 = arr[x_55];
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_59 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const bool x_60 = (x_57 == x_59);
+  x_70_phi = x_60;
+  if (x_60) {
+    const int x_64 = asint(x_9[2].x);
+    const float x_66 = arr[x_64];
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_69 = (x_66 == x_68);
+    x_70_phi = x_69;
+  }
+  const bool x_70 = x_70_phi;
+  x_80_phi = x_70;
+  if (x_70) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_9[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_76 = arr[x_74];
+    const float x_78 = asfloat(x_6[2].x);
+    x_79 = (x_76 == x_78);
+    x_80_phi = x_79;
+  }
+  if (x_80_phi) {
+    const int x_85 = asint(x_9[1].x);
+    const float x_87 = arr[x_85];
+    const float x_89 = asfloat(x_6[1].x);
+    const float x_91 = asfloat(x_6[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_93 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(x_87, x_89, x_91, x_93);
+  } else {
+    const float x_96 = asfloat(x_6[1].x);
+    x_GLF_color = float4(x_96, x_96, x_96, x_96);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..28fc564
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 arr = {};
+  int a = 0;
+  bool x_69 = false;
+  bool x_79 = false;
+  bool x_70_phi = false;
+  bool x_80_phi = false;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_34, x_36, x_38}};
+  arr = tint_symbol_3;
+  a = 0;
+  while (true) {
+    int const x_44 = a;
+    int const x_46 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_44 <= x_46)) {
+    } else {
+      break;
+    }
+    int const x_49 = a;
+    a = (x_49 + 1);
+    float const x_52 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    arr.arr[x_49] = x_52;
+  }
+  int const x_55 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  float const x_57 = arr.arr[x_55];
+  float const x_59 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_60 = (x_57 == x_59);
+  x_70_phi = x_60;
+  if (x_60) {
+    int const x_64 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    float const x_66 = arr.arr[x_64];
+    float const x_68 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    x_69 = (x_66 == x_68);
+    x_70_phi = x_69;
+  }
+  bool const x_70 = x_70_phi;
+  x_80_phi = x_70;
+  if (x_70) {
+    int const x_74 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    float const x_76 = arr.arr[x_74];
+    float const x_78 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    x_79 = (x_76 == x_78);
+    x_80_phi = x_79;
+  }
+  bool const x_80 = x_80_phi;
+  if (x_80) {
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_87 = arr.arr[x_85];
+    float const x_89 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_91 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_93 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_5) = float4(x_87, x_89, x_91, x_93);
+  } else {
+    float const x_96 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_5) = float4(x_96, x_96, x_96, x_96);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9d4d51a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,206 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 125
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %x_69 "x_69"
+               OpName %x_79 "x_79"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_80_phi "x_80_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_arr_float_uint_3_0 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3_0 = OpTypePointer Function %_arr_float_uint_3_0
+         %26 = OpConstantNull %_arr_float_uint_3_0
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+        %113 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_float_uint_3_0 Function %26
+          %a = OpVariable %_ptr_Function_int Function %29
+       %x_69 = OpVariable %_ptr_Function_bool Function %33
+       %x_79 = OpVariable %_ptr_Function_bool Function %33
+   %x_70_phi = OpVariable %_ptr_Function_bool Function %33
+   %x_80_phi = OpVariable %_ptr_Function_bool Function %33
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %41 = OpLoad %float %40
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %44 = OpLoad %float %43
+         %46 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %_arr_float_uint_3_0 %41 %44 %47
+               OpStore %arr %48
+               OpStore %a %int_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %a
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpSLessThanEqual %bool %53 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %50
+         %58 = OpLabel
+         %61 = OpLoad %int %a
+         %62 = OpIAdd %int %61 %int_1
+               OpStore %a %62
+         %63 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %64 = OpLoad %float %63
+         %66 = OpAccessChain %_ptr_Function_float %arr %61
+               OpStore %66 %64
+               OpBranch %51
+         %51 = OpLabel
+               OpBranch %49
+         %50 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Function_float %arr %68
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %72 = OpLoad %float %71
+         %73 = OpFOrdEqual %bool %70 %72
+               OpStore %x_70_phi %73
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Function_float %arr %77
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %81 = OpLoad %float %80
+         %82 = OpFOrdEqual %bool %79 %81
+               OpStore %x_69 %82
+         %83 = OpLoad %bool %x_69
+               OpStore %x_70_phi %83
+               OpBranch %74
+         %74 = OpLabel
+         %84 = OpLoad %bool %x_70_phi
+               OpStore %x_80_phi %84
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Function_float %arr %88
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %92 = OpLoad %float %91
+         %93 = OpFOrdEqual %bool %90 %92
+               OpStore %x_79 %93
+         %94 = OpLoad %bool %x_79
+               OpStore %x_80_phi %94
+               OpBranch %85
+         %85 = OpLabel
+         %95 = OpLoad %bool %x_80_phi
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %98
+         %97 = OpLabel
+         %99 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Function_float %arr %100
+        %102 = OpLoad %float %101
+        %103 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %106 = OpLoad %float %105
+        %107 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %108 = OpLoad %float %107
+        %109 = OpCompositeConstruct %v4float %102 %104 %106 %108
+               OpStore %x_GLF_color %109
+               OpBranch %96
+         %98 = OpLabel
+        %110 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %111 = OpLoad %float %110
+        %112 = OpCompositeConstruct %v4float %111 %111 %111 %111
+               OpStore %x_GLF_color %112
+               OpBranch %96
+         %96 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %113
+%tint_symbol = OpFunctionParameter %main_out
+        %117 = OpLabel
+        %118 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %118
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %120 = OpLabel
+        %121 = OpFunctionCall %void %main_1
+        %123 = OpLoad %v4float %x_GLF_color
+        %124 = OpCompositeConstruct %main_out %123
+        %122 = OpFunctionCall %void %tint_symbol_2 %124
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..dff82e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,90 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<f32, 3>;
+  var a : i32;
+  var x_69 : bool;
+  var x_79 : bool;
+  var x_70_phi : bool;
+  var x_80_phi : bool;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[2];
+  arr = array<f32, 3>(x_34, x_36, x_38);
+  a = 0;
+  loop {
+    let x_44 : i32 = a;
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[1];
+    if ((x_44 <= x_46)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = a;
+    a = (x_49 + 1);
+    let x_52 : f32 = x_6.x_GLF_uniform_float_values[0];
+    arr[x_49] = x_52;
+  }
+  let x_55 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_57 : f32 = arr[x_55];
+  let x_59 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_60 : bool = (x_57 == x_59);
+  x_70_phi = x_60;
+  if (x_60) {
+    let x_64 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_66 : f32 = arr[x_64];
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_69 = (x_66 == x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_80_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_76 : f32 = arr[x_74];
+    let x_78 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_79 = (x_76 == x_78);
+    x_80_phi = x_79;
+  }
+  let x_80 : bool = x_80_phi;
+  if (x_80) {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_87 : f32 = arr[x_85];
+    let x_89 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_91 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_93 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_87, x_89, x_91, x_93);
+  } else {
+    let x_96 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_96, x_96, x_96, x_96);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm
new file mode 100644
index 0000000..0bb66ca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm
@@ -0,0 +1,134 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f0 "f0"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %f1 "f1"
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+%float_1_10000002 = OpConstant %float 1.10000002
+      %int_2 = OpConstant %int 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %32 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function
+         %f1 = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %34 = OpLoad %float %33
+               OpStore %f0 %34
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %36 = OpLoad %float %35
+               OpStore %f1 %36
+         %37 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpSLessThan %bool %43 %45
+               OpBranchConditional %46 %47 %40
+         %47 = OpLabel
+         %48 = OpLoad %float %f0
+         %49 = OpFMul %float %float_1_10000002 %48
+         %50 = OpExtInst %float %1 FAbs %49
+               OpStore %f0 %50
+         %51 = OpLoad %float %f0
+               OpStore %f1 %51
+               OpBranch %41
+         %41 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %39
+         %40 = OpLabel
+         %54 = OpLoad %float %f1
+         %55 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %56 = OpLoad %float %55
+         %57 = OpFOrdGreaterThan %bool %54 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpLoad %float %f1
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %62 = OpLoad %float %61
+         %63 = OpFOrdLessThan %bool %60 %62
+               OpBranch %58
+         %58 = OpLabel
+         %64 = OpPhi %bool %57 %40 %63 %59
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpCompositeConstruct %v4float %70 %73 %76 %79
+               OpStore %_GLF_color %80
+               OpBranch %65
+         %67 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %82
+         %84 = OpCompositeConstruct %v4float %83 %83 %83 %83
+               OpStore %_GLF_color %84
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..8d0ce84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,73 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  int i = 0;
+  bool x_63 = false;
+  bool x_64_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  f0 = x_34;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  f1 = x_36;
+  const int x_38 = asint(x_10[1].x);
+  i = x_38;
+  while (true) {
+    const int x_43 = i;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    f0 = abs((1.100000024f * f0));
+    f1 = f0;
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_54 = f1;
+  const float x_56 = asfloat(x_6[1].x);
+  const bool x_57 = (x_54 > x_56);
+  x_64_phi = x_57;
+  if (x_57) {
+    const float x_60 = f1;
+    const float x_62 = asfloat(x_6[2].x);
+    x_63 = (x_60 < x_62);
+    x_64_phi = x_63;
+  }
+  if (x_64_phi) {
+    const int x_69 = asint(x_10[2].x);
+    const int x_72 = asint(x_10[1].x);
+    const int x_75 = asint(x_10[1].x);
+    const int x_78 = asint(x_10[2].x);
+    x_GLF_color = float4(float(x_69), float(x_72), float(x_75), float(x_78));
+  } else {
+    const int x_82 = asint(x_10[1].x);
+    const float x_83 = float(x_82);
+    x_GLF_color = float4(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..fa49516
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  int i = 0;
+  bool x_63 = false;
+  bool x_64_phi = false;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  f0 = x_34;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  f1 = x_36;
+  int const x_38 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  i = x_38;
+  while (true) {
+    int const x_43 = i;
+    int const x_45 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    float const x_48 = f0;
+    f0 = fabs((1.100000024f * x_48));
+    float const x_51 = f0;
+    f1 = x_51;
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  float const x_54 = f1;
+  float const x_56 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  bool const x_57 = (x_54 > x_56);
+  x_64_phi = x_57;
+  if (x_57) {
+    float const x_60 = f1;
+    float const x_62 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    x_63 = (x_60 < x_62);
+    x_64_phi = x_63;
+  }
+  bool const x_64 = x_64_phi;
+  if (x_64) {
+    int const x_69 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_72 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_75 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_69), float(x_72), float(x_75), float(x_78));
+  } else {
+    int const x_82 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_83 = float(x_82);
+    *(tint_symbol_4) = float4(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2189bcd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,185 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 110
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f0 "f0"
+               OpName %f1 "f1"
+               OpName %i "i"
+               OpName %x_63 "x_63"
+               OpName %x_64_phi "x_64_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%float_1_10000002 = OpConstant %float 1.10000002
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function %25
+         %f1 = OpVariable %_ptr_Function_float Function %25
+          %i = OpVariable %_ptr_Function_int Function %29
+       %x_63 = OpVariable %_ptr_Function_bool Function %33
+   %x_64_phi = OpVariable %_ptr_Function_bool Function %33
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+               OpStore %f0 %39
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %41 = OpLoad %float %40
+               OpStore %f1 %41
+         %44 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %45 = OpLoad %int %44
+               OpStore %i %45
+               OpBranch %46
+         %46 = OpLabel
+               OpLoopMerge %47 %48 None
+               OpBranch %49
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpSLessThan %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpBranch %54
+         %56 = OpLabel
+               OpBranch %47
+         %54 = OpLabel
+         %57 = OpLoad %float %f0
+         %61 = OpFMul %float %float_1_10000002 %57
+         %58 = OpExtInst %float %59 FAbs %61
+               OpStore %f0 %58
+         %62 = OpLoad %float %f0
+               OpStore %f1 %62
+               OpBranch %48
+         %48 = OpLabel
+         %63 = OpLoad %int %i
+         %64 = OpIAdd %int %63 %int_1
+               OpStore %i %64
+               OpBranch %46
+         %47 = OpLabel
+         %65 = OpLoad %float %f1
+         %66 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %67 = OpLoad %float %66
+         %68 = OpFOrdGreaterThan %bool %65 %67
+               OpStore %x_64_phi %68
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpLoad %float %f1
+         %73 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %74 = OpLoad %float %73
+         %75 = OpFOrdLessThan %bool %71 %74
+               OpStore %x_63 %75
+         %76 = OpLoad %bool %x_63
+               OpStore %x_64_phi %76
+               OpBranch %69
+         %69 = OpLabel
+         %77 = OpLoad %bool %x_64_phi
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %82
+         %90 = OpConvertSToF %float %84
+         %91 = OpConvertSToF %float %86
+         %92 = OpConvertSToF %float %88
+         %93 = OpCompositeConstruct %v4float %89 %90 %91 %92
+               OpStore %x_GLF_color %93
+               OpBranch %78
+         %80 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpCompositeConstruct %v4float %96 %96 %96 %96
+               OpStore %x_GLF_color %97
+               OpBranch %78
+         %78 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %98
+%tint_symbol = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %105 = OpLabel
+        %106 = OpFunctionCall %void %main_1
+        %108 = OpLoad %v4float %x_GLF_color
+        %109 = OpCompositeConstruct %main_out %108
+        %107 = OpFunctionCall %void %tint_symbol_2 %109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..0fc1914
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f0 : f32;
+  var f1 : f32;
+  var i : i32;
+  var x_63 : bool;
+  var x_64_phi : bool;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f0 = x_34;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f1 = x_36;
+  let x_38 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_48 : f32 = f0;
+    f0 = abs((1.100000024 * x_48));
+    let x_51 : f32 = f0;
+    f1 = x_51;
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_54 : f32 = f1;
+  let x_56 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_57 : bool = (x_54 > x_56);
+  x_64_phi = x_57;
+  if (x_57) {
+    let x_60 : f32 = f1;
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_63 = (x_60 < x_62);
+    x_64_phi = x_63;
+  }
+  let x_64 : bool = x_64_phi;
+  if (x_64) {
+    let x_69 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_72 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_75 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_69), f32(x_72), f32(x_75), f32(x_78));
+  } else {
+    let x_82 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_83 : f32 = f32(x_82);
+    x_GLF_color = vec4<f32>(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
new file mode 100644
index 0000000..0fc1914
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f0 : f32;
+  var f1 : f32;
+  var i : i32;
+  var x_63 : bool;
+  var x_64_phi : bool;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f0 = x_34;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f1 = x_36;
+  let x_38 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_48 : f32 = f0;
+    f0 = abs((1.100000024 * x_48));
+    let x_51 : f32 = f0;
+    f1 = x_51;
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_54 : f32 = f1;
+  let x_56 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_57 : bool = (x_54 > x_56);
+  x_64_phi = x_57;
+  if (x_57) {
+    let x_60 : f32 = f1;
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_63 = (x_60 < x_62);
+    x_64_phi = x_63;
+  }
+  let x_64 : bool = x_64_phi;
+  if (x_64) {
+    let x_69 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_72 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_75 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_69), f32(x_72), f32(x_75), f32(x_78));
+  } else {
+    let x_82 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_83 : f32 = f32(x_82);
+    x_GLF_color = vec4<f32>(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..8d0ce84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,73 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  int i = 0;
+  bool x_63 = false;
+  bool x_64_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  f0 = x_34;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  f1 = x_36;
+  const int x_38 = asint(x_10[1].x);
+  i = x_38;
+  while (true) {
+    const int x_43 = i;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    f0 = abs((1.100000024f * f0));
+    f1 = f0;
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_54 = f1;
+  const float x_56 = asfloat(x_6[1].x);
+  const bool x_57 = (x_54 > x_56);
+  x_64_phi = x_57;
+  if (x_57) {
+    const float x_60 = f1;
+    const float x_62 = asfloat(x_6[2].x);
+    x_63 = (x_60 < x_62);
+    x_64_phi = x_63;
+  }
+  if (x_64_phi) {
+    const int x_69 = asint(x_10[2].x);
+    const int x_72 = asint(x_10[1].x);
+    const int x_75 = asint(x_10[1].x);
+    const int x_78 = asint(x_10[2].x);
+    x_GLF_color = float4(float(x_69), float(x_72), float(x_75), float(x_78));
+  } else {
+    const int x_82 = asint(x_10[1].x);
+    const float x_83 = float(x_82);
+    x_GLF_color = float4(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..fa49516
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  int i = 0;
+  bool x_63 = false;
+  bool x_64_phi = false;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  f0 = x_34;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  f1 = x_36;
+  int const x_38 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  i = x_38;
+  while (true) {
+    int const x_43 = i;
+    int const x_45 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    float const x_48 = f0;
+    f0 = fabs((1.100000024f * x_48));
+    float const x_51 = f0;
+    f1 = x_51;
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  float const x_54 = f1;
+  float const x_56 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  bool const x_57 = (x_54 > x_56);
+  x_64_phi = x_57;
+  if (x_57) {
+    float const x_60 = f1;
+    float const x_62 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    x_63 = (x_60 < x_62);
+    x_64_phi = x_63;
+  }
+  bool const x_64 = x_64_phi;
+  if (x_64) {
+    int const x_69 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_72 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_75 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_69), float(x_72), float(x_75), float(x_78));
+  } else {
+    int const x_82 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_83 = float(x_82);
+    *(tint_symbol_4) = float4(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2189bcd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,185 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 110
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f0 "f0"
+               OpName %f1 "f1"
+               OpName %i "i"
+               OpName %x_63 "x_63"
+               OpName %x_64_phi "x_64_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%float_1_10000002 = OpConstant %float 1.10000002
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function %25
+         %f1 = OpVariable %_ptr_Function_float Function %25
+          %i = OpVariable %_ptr_Function_int Function %29
+       %x_63 = OpVariable %_ptr_Function_bool Function %33
+   %x_64_phi = OpVariable %_ptr_Function_bool Function %33
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+               OpStore %f0 %39
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %41 = OpLoad %float %40
+               OpStore %f1 %41
+         %44 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %45 = OpLoad %int %44
+               OpStore %i %45
+               OpBranch %46
+         %46 = OpLabel
+               OpLoopMerge %47 %48 None
+               OpBranch %49
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpSLessThan %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpBranch %54
+         %56 = OpLabel
+               OpBranch %47
+         %54 = OpLabel
+         %57 = OpLoad %float %f0
+         %61 = OpFMul %float %float_1_10000002 %57
+         %58 = OpExtInst %float %59 FAbs %61
+               OpStore %f0 %58
+         %62 = OpLoad %float %f0
+               OpStore %f1 %62
+               OpBranch %48
+         %48 = OpLabel
+         %63 = OpLoad %int %i
+         %64 = OpIAdd %int %63 %int_1
+               OpStore %i %64
+               OpBranch %46
+         %47 = OpLabel
+         %65 = OpLoad %float %f1
+         %66 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %67 = OpLoad %float %66
+         %68 = OpFOrdGreaterThan %bool %65 %67
+               OpStore %x_64_phi %68
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpLoad %float %f1
+         %73 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %74 = OpLoad %float %73
+         %75 = OpFOrdLessThan %bool %71 %74
+               OpStore %x_63 %75
+         %76 = OpLoad %bool %x_63
+               OpStore %x_64_phi %76
+               OpBranch %69
+         %69 = OpLabel
+         %77 = OpLoad %bool %x_64_phi
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %82
+         %90 = OpConvertSToF %float %84
+         %91 = OpConvertSToF %float %86
+         %92 = OpConvertSToF %float %88
+         %93 = OpCompositeConstruct %v4float %89 %90 %91 %92
+               OpStore %x_GLF_color %93
+               OpBranch %78
+         %80 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpCompositeConstruct %v4float %96 %96 %96 %96
+               OpStore %x_GLF_color %97
+               OpBranch %78
+         %78 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %98
+%tint_symbol = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %105 = OpLabel
+        %106 = OpFunctionCall %void %main_1
+        %108 = OpLoad %v4float %x_GLF_color
+        %109 = OpCompositeConstruct %main_out %108
+        %107 = OpFunctionCall %void %tint_symbol_2 %109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..0fc1914
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f0 : f32;
+  var f1 : f32;
+  var i : i32;
+  var x_63 : bool;
+  var x_64_phi : bool;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f0 = x_34;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f1 = x_36;
+  let x_38 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_48 : f32 = f0;
+    f0 = abs((1.100000024 * x_48));
+    let x_51 : f32 = f0;
+    f1 = x_51;
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_54 : f32 = f1;
+  let x_56 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_57 : bool = (x_54 > x_56);
+  x_64_phi = x_57;
+  if (x_57) {
+    let x_60 : f32 = f1;
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_63 = (x_60 < x_62);
+    x_64_phi = x_63;
+  }
+  let x_64 : bool = x_64_phi;
+  if (x_64) {
+    let x_69 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_72 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_75 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_69), f32(x_72), f32(x_75), f32(x_78));
+  } else {
+    let x_82 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_83 : f32 = f32(x_82);
+    x_GLF_color = vec4<f32>(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm
new file mode 100644
index 0000000..cd15881
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm
@@ -0,0 +1,124 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+     %int_10 = OpConstant %int 10
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %26 = OpLabel
+               OpStore %_GLF_global_loop_count %int_0
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %_GLF_global_loop_count
+         %29 = OpSLessThan %bool %28 %int_10
+               OpLoopMerge %30 %31 None
+               OpBranchConditional %29 %31 %30
+         %31 = OpLabel
+         %32 = OpLoad %int %_GLF_global_loop_count
+         %33 = OpIAdd %int %32 %int_1
+               OpStore %_GLF_global_loop_count %33
+         %34 = OpFunctionCall %void %func_
+               OpBranch %27
+         %30 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %_GLF_global_loop_count
+         %37 = OpSLessThan %bool %36 %int_10
+               OpLoopMerge %38 %39 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+         %40 = OpLoad %int %_GLF_global_loop_count
+         %41 = OpIAdd %int %40 %int_1
+               OpStore %_GLF_global_loop_count %41
+               OpBranch %35
+         %38 = OpLabel
+         %42 = OpLoad %int %_GLF_global_loop_count
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %44 = OpLoad %int %43
+         %45 = OpIEqual %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpCompositeConstruct %v4float %51 %54 %54 %51
+               OpStore %_GLF_color %55
+               OpBranch %46
+         %48 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpCompositeConstruct %v4float %58 %58 %58 %58
+               OpStore %_GLF_color %59
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %void None %10
+         %60 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %64 = OpLoad %int %63
+               OpBranch %65
+         %65 = OpLabel
+         %66 = OpPhi %int %64 %60 %67 %68
+         %69 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %70 = OpLoad %int %69
+         %71 = OpSLessThan %bool %66 %70
+               OpLoopMerge %72 %68 None
+               OpBranchConditional %71 %68 %72
+         %68 = OpLabel
+         %73 = OpLoad %int %_GLF_global_loop_count
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %_GLF_global_loop_count %74
+         %67 = OpIAdd %int %66 %int_1
+               OpBranch %65
+         %72 = OpLabel
+         %75 = OpSLessThan %bool %62 %62
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+               OpReturn
+         %76 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e89c902
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,79 @@
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_() {
+  int x_66_phi = 0;
+  const int x_62 = asint(x_7[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_64 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  x_66_phi = x_64;
+  while (true) {
+    int x_67 = 0;
+    const int x_66 = x_66_phi;
+    const int x_70 = asint(x_7[3].x);
+    if ((x_66 < x_70)) {
+    } else {
+      break;
+    }
+    {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      x_67 = (x_66 + 1);
+      x_66_phi = x_67;
+    }
+  }
+  if ((x_62 < x_62)) {
+    return;
+  }
+  return;
+}
+
+void main_1() {
+  x_GLF_global_loop_count = 0;
+  while (true) {
+    if ((x_GLF_global_loop_count < 10)) {
+    } else {
+      break;
+    }
+    {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      func_();
+    }
+  }
+  {
+    for(; (x_GLF_global_loop_count < 10); x_GLF_global_loop_count = (x_GLF_global_loop_count + 1)) {
+    }
+  }
+  const int x_42 = x_GLF_global_loop_count;
+  const int x_44 = asint(x_7[2].x);
+  if ((x_42 == x_44)) {
+    const int x_50 = asint(x_7[1].x);
+    const float x_51 = float(x_50);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_53 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_54 = float(x_53);
+    x_GLF_color = float4(x_51, x_54, x_54, x_51);
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_58 = float(x_57);
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..9a18e81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.msl
@@ -0,0 +1,96 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_(constant buf0& x_7, thread int* const tint_symbol_4) {
+  int x_66_phi = 0;
+  int const x_62 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_64 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  x_66_phi = x_64;
+  while (true) {
+    int x_67 = 0;
+    int const x_66 = x_66_phi;
+    int const x_70 = x_7.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_66 < x_70)) {
+    } else {
+      break;
+    }
+    {
+      int const x_73 = *(tint_symbol_4);
+      *(tint_symbol_4) = (x_73 + 1);
+      x_67 = (x_66 + 1);
+      x_66_phi = x_67;
+    }
+  }
+  if ((x_62 < x_62)) {
+    return;
+  }
+  return;
+}
+
+void main_1(constant buf0& x_7, thread int* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  *(tint_symbol_5) = 0;
+  while (true) {
+    int const x_28 = *(tint_symbol_5);
+    if ((x_28 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_32 = *(tint_symbol_5);
+      *(tint_symbol_5) = (x_32 + 1);
+      func_(x_7, tint_symbol_5);
+    }
+  }
+  while (true) {
+    int const x_36 = *(tint_symbol_5);
+    if ((x_36 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_40 = *(tint_symbol_5);
+      *(tint_symbol_5) = (x_40 + 1);
+    }
+  }
+  int const x_42 = *(tint_symbol_5);
+  int const x_44 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_42 == x_44)) {
+    int const x_50 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_51 = float(x_50);
+    int const x_53 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_54 = float(x_53);
+    *(tint_symbol_6) = float4(x_51, x_54, x_54, x_51);
+  } else {
+    int const x_57 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_58 = float(x_57);
+    *(tint_symbol_6) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread int tint_symbol_7 = 0;
+  thread float4 tint_symbol_8 = 0.0f;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..209a878
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,193 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 110
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %x_66_phi "x_66_phi"
+               OpName %x_67 "x_67"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+     %int_10 = OpConstant %int 10
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %void None %18
+         %21 = OpLabel
+   %x_66_phi = OpVariable %_ptr_Function_int Function %4
+       %x_67 = OpVariable %_ptr_Function_int Function %4
+         %27 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %30 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %31 = OpLoad %int %30
+               OpStore %x_66_phi %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %37 = OpLoad %int %x_66_phi
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_3
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %37 %40
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %33
+         %43 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+         %46 = OpLoad %int %x_GLF_global_loop_count
+         %47 = OpIAdd %int %46 %int_1
+               OpStore %x_GLF_global_loop_count %47
+         %48 = OpIAdd %int %37 %int_1
+               OpStore %x_67 %48
+         %49 = OpLoad %int %x_67
+               OpStore %x_66_phi %49
+               OpBranch %32
+         %33 = OpLabel
+         %50 = OpSLessThan %bool %28 %28
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpReturn
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %18
+         %54 = OpLabel
+               OpStore %x_GLF_global_loop_count %int_0
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %x_GLF_global_loop_count
+         %61 = OpSLessThan %bool %59 %int_10
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %56
+         %62 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %65 = OpLoad %int %x_GLF_global_loop_count
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %x_GLF_global_loop_count %66
+         %67 = OpFunctionCall %void %func_
+               OpBranch %55
+         %56 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpLoad %int %x_GLF_global_loop_count
+         %73 = OpSLessThan %bool %72 %int_10
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %69
+         %74 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %int %x_GLF_global_loop_count
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %x_GLF_global_loop_count %78
+               OpBranch %68
+         %69 = OpLabel
+         %79 = OpLoad %int %x_GLF_global_loop_count
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpIEqual %bool %79 %82
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpCompositeConstruct %v4float %89 %92 %92 %89
+               OpStore %x_GLF_color %93
+               OpBranch %84
+         %86 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpCompositeConstruct %v4float %96 %96 %96 %96
+               OpStore %x_GLF_color %97
+               OpBranch %84
+         %84 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %98
+%tint_symbol = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %105 = OpLabel
+        %106 = OpFunctionCall %void %main_1
+        %108 = OpLoad %v4float %x_GLF_color
+        %109 = OpCompositeConstruct %main_out %108
+        %107 = OpFunctionCall %void %tint_symbol_2 %109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..bb1a4df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,93 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() {
+  var x_66_phi : i32;
+  let x_62 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_64 : i32 = x_7.x_GLF_uniform_int_values[0];
+  x_66_phi = x_64;
+  loop {
+    var x_67 : i32;
+    let x_66 : i32 = x_66_phi;
+    let x_70 : i32 = x_7.x_GLF_uniform_int_values[3];
+    if ((x_66 < x_70)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_73 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_73 + 1);
+      x_67 = (x_66 + 1);
+      x_66_phi = x_67;
+    }
+  }
+  if ((x_62 < x_62)) {
+    return;
+  }
+  return;
+}
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  loop {
+    let x_28 : i32 = x_GLF_global_loop_count;
+    if ((x_28 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_32 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_32 + 1);
+      func_();
+    }
+  }
+  loop {
+    let x_36 : i32 = x_GLF_global_loop_count;
+    if ((x_36 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_40 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_40 + 1);
+    }
+  }
+  let x_42 : i32 = x_GLF_global_loop_count;
+  let x_44 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_51 : f32 = f32(x_50);
+    let x_53 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_54 : f32 = f32(x_53);
+    x_GLF_color = vec4<f32>(x_51, x_54, x_54, x_51);
+  } else {
+    let x_57 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
new file mode 100644
index 0000000..bb1a4df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
@@ -0,0 +1,93 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() {
+  var x_66_phi : i32;
+  let x_62 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_64 : i32 = x_7.x_GLF_uniform_int_values[0];
+  x_66_phi = x_64;
+  loop {
+    var x_67 : i32;
+    let x_66 : i32 = x_66_phi;
+    let x_70 : i32 = x_7.x_GLF_uniform_int_values[3];
+    if ((x_66 < x_70)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_73 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_73 + 1);
+      x_67 = (x_66 + 1);
+      x_66_phi = x_67;
+    }
+  }
+  if ((x_62 < x_62)) {
+    return;
+  }
+  return;
+}
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  loop {
+    let x_28 : i32 = x_GLF_global_loop_count;
+    if ((x_28 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_32 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_32 + 1);
+      func_();
+    }
+  }
+  loop {
+    let x_36 : i32 = x_GLF_global_loop_count;
+    if ((x_36 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_40 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_40 + 1);
+    }
+  }
+  let x_42 : i32 = x_GLF_global_loop_count;
+  let x_44 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_51 : f32 = f32(x_50);
+    let x_53 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_54 : f32 = f32(x_53);
+    x_GLF_color = vec4<f32>(x_51, x_54, x_54, x_51);
+  } else {
+    let x_57 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e89c902
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,79 @@
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_() {
+  int x_66_phi = 0;
+  const int x_62 = asint(x_7[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_64 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  x_66_phi = x_64;
+  while (true) {
+    int x_67 = 0;
+    const int x_66 = x_66_phi;
+    const int x_70 = asint(x_7[3].x);
+    if ((x_66 < x_70)) {
+    } else {
+      break;
+    }
+    {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      x_67 = (x_66 + 1);
+      x_66_phi = x_67;
+    }
+  }
+  if ((x_62 < x_62)) {
+    return;
+  }
+  return;
+}
+
+void main_1() {
+  x_GLF_global_loop_count = 0;
+  while (true) {
+    if ((x_GLF_global_loop_count < 10)) {
+    } else {
+      break;
+    }
+    {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      func_();
+    }
+  }
+  {
+    for(; (x_GLF_global_loop_count < 10); x_GLF_global_loop_count = (x_GLF_global_loop_count + 1)) {
+    }
+  }
+  const int x_42 = x_GLF_global_loop_count;
+  const int x_44 = asint(x_7[2].x);
+  if ((x_42 == x_44)) {
+    const int x_50 = asint(x_7[1].x);
+    const float x_51 = float(x_50);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_53 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_54 = float(x_53);
+    x_GLF_color = float4(x_51, x_54, x_54, x_51);
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_58 = float(x_57);
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..9a18e81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.msl
@@ -0,0 +1,96 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_(constant buf0& x_7, thread int* const tint_symbol_4) {
+  int x_66_phi = 0;
+  int const x_62 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_64 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  x_66_phi = x_64;
+  while (true) {
+    int x_67 = 0;
+    int const x_66 = x_66_phi;
+    int const x_70 = x_7.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_66 < x_70)) {
+    } else {
+      break;
+    }
+    {
+      int const x_73 = *(tint_symbol_4);
+      *(tint_symbol_4) = (x_73 + 1);
+      x_67 = (x_66 + 1);
+      x_66_phi = x_67;
+    }
+  }
+  if ((x_62 < x_62)) {
+    return;
+  }
+  return;
+}
+
+void main_1(constant buf0& x_7, thread int* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  *(tint_symbol_5) = 0;
+  while (true) {
+    int const x_28 = *(tint_symbol_5);
+    if ((x_28 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_32 = *(tint_symbol_5);
+      *(tint_symbol_5) = (x_32 + 1);
+      func_(x_7, tint_symbol_5);
+    }
+  }
+  while (true) {
+    int const x_36 = *(tint_symbol_5);
+    if ((x_36 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_40 = *(tint_symbol_5);
+      *(tint_symbol_5) = (x_40 + 1);
+    }
+  }
+  int const x_42 = *(tint_symbol_5);
+  int const x_44 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_42 == x_44)) {
+    int const x_50 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_51 = float(x_50);
+    int const x_53 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_54 = float(x_53);
+    *(tint_symbol_6) = float4(x_51, x_54, x_54, x_51);
+  } else {
+    int const x_57 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_58 = float(x_57);
+    *(tint_symbol_6) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread int tint_symbol_7 = 0;
+  thread float4 tint_symbol_8 = 0.0f;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..209a878
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,193 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 110
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %x_66_phi "x_66_phi"
+               OpName %x_67 "x_67"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+     %int_10 = OpConstant %int 10
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %void None %18
+         %21 = OpLabel
+   %x_66_phi = OpVariable %_ptr_Function_int Function %4
+       %x_67 = OpVariable %_ptr_Function_int Function %4
+         %27 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %30 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %31 = OpLoad %int %30
+               OpStore %x_66_phi %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %37 = OpLoad %int %x_66_phi
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_3
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %37 %40
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %33
+         %43 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+         %46 = OpLoad %int %x_GLF_global_loop_count
+         %47 = OpIAdd %int %46 %int_1
+               OpStore %x_GLF_global_loop_count %47
+         %48 = OpIAdd %int %37 %int_1
+               OpStore %x_67 %48
+         %49 = OpLoad %int %x_67
+               OpStore %x_66_phi %49
+               OpBranch %32
+         %33 = OpLabel
+         %50 = OpSLessThan %bool %28 %28
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpReturn
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %18
+         %54 = OpLabel
+               OpStore %x_GLF_global_loop_count %int_0
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %x_GLF_global_loop_count
+         %61 = OpSLessThan %bool %59 %int_10
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %56
+         %62 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %65 = OpLoad %int %x_GLF_global_loop_count
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %x_GLF_global_loop_count %66
+         %67 = OpFunctionCall %void %func_
+               OpBranch %55
+         %56 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpLoad %int %x_GLF_global_loop_count
+         %73 = OpSLessThan %bool %72 %int_10
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %69
+         %74 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %int %x_GLF_global_loop_count
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %x_GLF_global_loop_count %78
+               OpBranch %68
+         %69 = OpLabel
+         %79 = OpLoad %int %x_GLF_global_loop_count
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpIEqual %bool %79 %82
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpCompositeConstruct %v4float %89 %92 %92 %89
+               OpStore %x_GLF_color %93
+               OpBranch %84
+         %86 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpCompositeConstruct %v4float %96 %96 %96 %96
+               OpStore %x_GLF_color %97
+               OpBranch %84
+         %84 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %98
+%tint_symbol = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %105 = OpLabel
+        %106 = OpFunctionCall %void %main_1
+        %108 = OpLoad %v4float %x_GLF_color
+        %109 = OpCompositeConstruct %main_out %108
+        %107 = OpFunctionCall %void %tint_symbol_2 %109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..bb1a4df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,93 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() {
+  var x_66_phi : i32;
+  let x_62 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_64 : i32 = x_7.x_GLF_uniform_int_values[0];
+  x_66_phi = x_64;
+  loop {
+    var x_67 : i32;
+    let x_66 : i32 = x_66_phi;
+    let x_70 : i32 = x_7.x_GLF_uniform_int_values[3];
+    if ((x_66 < x_70)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_73 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_73 + 1);
+      x_67 = (x_66 + 1);
+      x_66_phi = x_67;
+    }
+  }
+  if ((x_62 < x_62)) {
+    return;
+  }
+  return;
+}
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  loop {
+    let x_28 : i32 = x_GLF_global_loop_count;
+    if ((x_28 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_32 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_32 + 1);
+      func_();
+    }
+  }
+  loop {
+    let x_36 : i32 = x_GLF_global_loop_count;
+    if ((x_36 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_40 : i32 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_40 + 1);
+    }
+  }
+  let x_42 : i32 = x_GLF_global_loop_count;
+  let x_44 : i32 = x_7.x_GLF_uniform_int_values[2];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_51 : f32 = f32(x_50);
+    let x_53 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_54 : f32 = f32(x_53);
+    x_GLF_color = vec4<f32>(x_51, x_54, x_54, x_51);
+  } else {
+    let x_57 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm
new file mode 100644
index 0000000..52dd4a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm
@@ -0,0 +1,96 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_0
+      %int_4 = OpConstant %int 4
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %32 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %10
+         %33 = OpLabel
+          %a = OpVariable %_ptr_Function__arr_int_uint_3 Function
+          %b = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+         %34 = OpAccessChain %_ptr_Function_int %a %int_0
+               OpStore %34 %int_1
+         %35 = OpAccessChain %_ptr_Function_int %a %int_1
+               OpStore %35 %int_2
+         %36 = OpAccessChain %_ptr_Function_int %a %int_2
+               OpStore %36 %int_3
+               OpStore %b %int_0
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Function_int %a %38
+         %40 = OpLoad %int %39
+               OpStore %c %40
+         %41 = OpLoad %int %c
+         %42 = OpSGreaterThan %bool %41 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %_GLF_color %29
+         %45 = OpLoad %int %b
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %b %46
+               OpBranch %43
+         %43 = OpLabel
+         %47 = OpLoad %int %b
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %b %48
+         %49 = OpExtInst %int %1 SClamp %48 %int_0 %int_2
+         %50 = OpAccessChain %_ptr_Function_int %a %49
+         %51 = OpLoad %int %50
+         %52 = OpIAdd %int %51 %int_1
+               OpStore %50 %52
+         %53 = OpAccessChain %_ptr_Function_int %a %int_2
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %54 %int_4
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpStore %_GLF_color %31
+               OpBranch %56
+         %58 = OpLabel
+               OpStore %_GLF_color %32
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a84f052
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a[3] = (int[3])0;
+  int b = 0;
+  int c = 0;
+  a[0] = 1;
+  a[1] = 2;
+  a[2] = 3;
+  b = 0;
+  const int x_38 = asint(x_8[0].x);
+  const int x_40 = a[x_38];
+  c = x_40;
+  if ((c > 1)) {
+    x_GLF_color = float4(0.0f, 1.0f, 1.0f, 0.0f);
+    b = (b + 1);
+  }
+  const int x_48 = (b + 1);
+  b = x_48;
+  const int x_50_save = clamp(x_48, 0, 2);
+  const int x_51 = a[x_50_save];
+  a[x_50_save] = (x_51 + 1);
+  const int x_54 = a[2];
+  if ((x_54 == 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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..231e58a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.msl
@@ -0,0 +1,56 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper {
+  int arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper a = {};
+  int b = 0;
+  int c = 0;
+  a.arr[0] = 1;
+  a.arr[1] = 2;
+  a.arr[2] = 3;
+  b = 0;
+  int const x_38 = x_8.one;
+  int const x_40 = a.arr[x_38];
+  c = x_40;
+  int const x_41 = c;
+  if ((x_41 > 1)) {
+    *(tint_symbol_4) = float4(0.0f, 1.0f, 1.0f, 0.0f);
+    int const x_45 = b;
+    b = (x_45 + 1);
+  }
+  int const x_47 = b;
+  int const x_48 = (x_47 + 1);
+  b = x_48;
+  int const x_50_save = clamp(x_48, 0, 2);
+  int const x_51 = a.arr[x_50_save];
+  a.arr[x_50_save] = (x_51 + 1);
+  int const x_54 = a.arr[2];
+  if ((x_54 == 4)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..413b393
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,133 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+         %52 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3
+         %21 = OpConstantNull %_arr_int_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %46 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_0
+      %int_4 = OpConstant %int 4
+         %64 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %65 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %66 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function__arr_int_uint_3 Function %21
+          %b = OpVariable %_ptr_Function_int Function %24
+          %c = OpVariable %_ptr_Function_int Function %24
+         %27 = OpAccessChain %_ptr_Function_int %a %int_0
+               OpStore %27 %int_1
+         %29 = OpAccessChain %_ptr_Function_int %a %int_1
+               OpStore %29 %int_2
+         %31 = OpAccessChain %_ptr_Function_int %a %int_2
+               OpStore %31 %int_3
+               OpStore %b %int_0
+         %35 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %36 = OpLoad %int %35
+         %37 = OpAccessChain %_ptr_Function_int %a %36
+         %38 = OpLoad %int %37
+               OpStore %c %38
+         %39 = OpLoad %int %c
+         %40 = OpSGreaterThan %bool %39 %int_1
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %42
+         %43 = OpLabel
+               OpStore %x_GLF_color %46
+         %47 = OpLoad %int %b
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %b %48
+               OpBranch %42
+         %42 = OpLabel
+         %49 = OpLoad %int %b
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %b %50
+         %51 = OpExtInst %int %52 SClamp %50 %int_0 %int_2
+         %53 = OpAccessChain %_ptr_Function_int %a %51
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Function_int %a %51
+         %56 = OpIAdd %int %54 %int_1
+               OpStore %55 %56
+         %57 = OpAccessChain %_ptr_Function_int %a %int_2
+         %58 = OpLoad %int %57
+         %60 = OpIEqual %bool %58 %int_4
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpStore %x_GLF_color %64
+               OpBranch %61
+         %63 = OpLabel
+               OpStore %x_GLF_color %65
+               OpBranch %61
+         %61 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %66
+%tint_symbol = OpFunctionParameter %main_out
+         %70 = OpLabel
+         %71 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %71
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %73 = OpLabel
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_2 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f70aa97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,51 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : array<i32, 3>;
+  var b : i32;
+  var c : i32;
+  a[0] = 1;
+  a[1] = 2;
+  a[2] = 3;
+  b = 0;
+  let x_38 : i32 = x_8.one;
+  let x_40 : i32 = a[x_38];
+  c = x_40;
+  let x_41 : i32 = c;
+  if ((x_41 > 1)) {
+    x_GLF_color = vec4<f32>(0.0, 1.0, 1.0, 0.0);
+    let x_45 : i32 = b;
+    b = (x_45 + 1);
+  }
+  let x_47 : i32 = b;
+  let x_48 : i32 = (x_47 + 1);
+  b = x_48;
+  let x_50 : ptr<function, i32> = &(a[clamp(x_48, 0, 2)]);
+  let x_51 : i32 = *(x_50);
+  *(x_50) = (x_51 + 1);
+  let x_54 : i32 = a[2];
+  if ((x_54 == 4)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
new file mode 100644
index 0000000..f70aa97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
@@ -0,0 +1,51 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : array<i32, 3>;
+  var b : i32;
+  var c : i32;
+  a[0] = 1;
+  a[1] = 2;
+  a[2] = 3;
+  b = 0;
+  let x_38 : i32 = x_8.one;
+  let x_40 : i32 = a[x_38];
+  c = x_40;
+  let x_41 : i32 = c;
+  if ((x_41 > 1)) {
+    x_GLF_color = vec4<f32>(0.0, 1.0, 1.0, 0.0);
+    let x_45 : i32 = b;
+    b = (x_45 + 1);
+  }
+  let x_47 : i32 = b;
+  let x_48 : i32 = (x_47 + 1);
+  b = x_48;
+  let x_50 : ptr<function, i32> = &(a[clamp(x_48, 0, 2)]);
+  let x_51 : i32 = *(x_50);
+  *(x_50) = (x_51 + 1);
+  let x_54 : i32 = a[2];
+  if ((x_54 == 4)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a84f052
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a[3] = (int[3])0;
+  int b = 0;
+  int c = 0;
+  a[0] = 1;
+  a[1] = 2;
+  a[2] = 3;
+  b = 0;
+  const int x_38 = asint(x_8[0].x);
+  const int x_40 = a[x_38];
+  c = x_40;
+  if ((c > 1)) {
+    x_GLF_color = float4(0.0f, 1.0f, 1.0f, 0.0f);
+    b = (b + 1);
+  }
+  const int x_48 = (b + 1);
+  b = x_48;
+  const int x_50_save = clamp(x_48, 0, 2);
+  const int x_51 = a[x_50_save];
+  a[x_50_save] = (x_51 + 1);
+  const int x_54 = a[2];
+  if ((x_54 == 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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..231e58a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.msl
@@ -0,0 +1,56 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper {
+  int arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper a = {};
+  int b = 0;
+  int c = 0;
+  a.arr[0] = 1;
+  a.arr[1] = 2;
+  a.arr[2] = 3;
+  b = 0;
+  int const x_38 = x_8.one;
+  int const x_40 = a.arr[x_38];
+  c = x_40;
+  int const x_41 = c;
+  if ((x_41 > 1)) {
+    *(tint_symbol_4) = float4(0.0f, 1.0f, 1.0f, 0.0f);
+    int const x_45 = b;
+    b = (x_45 + 1);
+  }
+  int const x_47 = b;
+  int const x_48 = (x_47 + 1);
+  b = x_48;
+  int const x_50_save = clamp(x_48, 0, 2);
+  int const x_51 = a.arr[x_50_save];
+  a.arr[x_50_save] = (x_51 + 1);
+  int const x_54 = a.arr[2];
+  if ((x_54 == 4)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..413b393
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,133 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+         %52 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3
+         %21 = OpConstantNull %_arr_int_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %46 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_0
+      %int_4 = OpConstant %int 4
+         %64 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %65 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %66 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function__arr_int_uint_3 Function %21
+          %b = OpVariable %_ptr_Function_int Function %24
+          %c = OpVariable %_ptr_Function_int Function %24
+         %27 = OpAccessChain %_ptr_Function_int %a %int_0
+               OpStore %27 %int_1
+         %29 = OpAccessChain %_ptr_Function_int %a %int_1
+               OpStore %29 %int_2
+         %31 = OpAccessChain %_ptr_Function_int %a %int_2
+               OpStore %31 %int_3
+               OpStore %b %int_0
+         %35 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %36 = OpLoad %int %35
+         %37 = OpAccessChain %_ptr_Function_int %a %36
+         %38 = OpLoad %int %37
+               OpStore %c %38
+         %39 = OpLoad %int %c
+         %40 = OpSGreaterThan %bool %39 %int_1
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %42
+         %43 = OpLabel
+               OpStore %x_GLF_color %46
+         %47 = OpLoad %int %b
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %b %48
+               OpBranch %42
+         %42 = OpLabel
+         %49 = OpLoad %int %b
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %b %50
+         %51 = OpExtInst %int %52 SClamp %50 %int_0 %int_2
+         %53 = OpAccessChain %_ptr_Function_int %a %51
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Function_int %a %51
+         %56 = OpIAdd %int %54 %int_1
+               OpStore %55 %56
+         %57 = OpAccessChain %_ptr_Function_int %a %int_2
+         %58 = OpLoad %int %57
+         %60 = OpIEqual %bool %58 %int_4
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpStore %x_GLF_color %64
+               OpBranch %61
+         %63 = OpLabel
+               OpStore %x_GLF_color %65
+               OpBranch %61
+         %61 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %66
+%tint_symbol = OpFunctionParameter %main_out
+         %70 = OpLabel
+         %71 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %71
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %73 = OpLabel
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_2 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f70aa97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,51 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : array<i32, 3>;
+  var b : i32;
+  var c : i32;
+  a[0] = 1;
+  a[1] = 2;
+  a[2] = 3;
+  b = 0;
+  let x_38 : i32 = x_8.one;
+  let x_40 : i32 = a[x_38];
+  c = x_40;
+  let x_41 : i32 = c;
+  if ((x_41 > 1)) {
+    x_GLF_color = vec4<f32>(0.0, 1.0, 1.0, 0.0);
+    let x_45 : i32 = b;
+    b = (x_45 + 1);
+  }
+  let x_47 : i32 = b;
+  let x_48 : i32 = (x_47 + 1);
+  b = x_48;
+  let x_50 : ptr<function, i32> = &(a[clamp(x_48, 0, 2)]);
+  let x_51 : i32 = *(x_50);
+  *(x_50) = (x_51 + 1);
+  let x_54 : i32 = a[2];
+  if ((x_54 == 4)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm
new file mode 100644
index 0000000..6d83d1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm
@@ -0,0 +1,121 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %indexable "indexable"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+     %uint_9 = OpConstant %uint 9
+%_arr_int_uint_9 = OpTypeArray %int %uint_9
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+         %31 = OpConstantComposite %_arr_int_uint_9 %int_1 %int_2 %int_3 %int_4 %int_5 %int_6 %int_7 %int_8 %int_9
+%_ptr_Function__arr_int_uint_9 = OpTypePointer Function %_arr_int_uint_9
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %11
+         %36 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_9 Function
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %38 = OpLoad %int %37
+               OpStore %a %38
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %40 = OpLoad %int %39
+               OpStore %i %40
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpSLessThan %bool %45 %47
+               OpBranchConditional %48 %49 %42
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %52 = OpLoad %int %51
+         %53 = OpSMod %int %50 %52
+               OpStore %indexable %31
+         %54 = OpAccessChain %_ptr_Function_int %indexable %53
+         %55 = OpLoad %int %54
+         %56 = OpLoad %int %a
+         %57 = OpIAdd %int %56 %55
+               OpStore %a %57
+               OpBranch %43
+         %43 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %41
+         %42 = OpLabel
+         %60 = OpLoad %int %a
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpIEqual %bool %60 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %69 %72 %75 %78
+               OpStore %_GLF_color %79
+               OpBranch %64
+         %66 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpCompositeConstruct %v4float %82 %82 %82 %82
+               OpStore %_GLF_color %83
+               OpBranch %64
+         %64 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..7e2ef37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,60 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  int indexable[9] = (int[9])0;
+  const int x_38 = asint(x_6[2].x);
+  a = x_38;
+  const int x_40 = asint(x_6[3].x);
+  i = x_40;
+  while (true) {
+    const int x_45 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    const int x_50 = i;
+    const int x_52 = asint(x_6[4].x);
+    const int tint_symbol_3[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
+    indexable = tint_symbol_3;
+    const int x_55 = indexable[(x_50 % x_52)];
+    a = (a + x_55);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_60 = a;
+  const int x_62 = asint(x_6[1].x);
+  if ((x_60 == x_62)) {
+    const int x_68 = asint(x_6[2].x);
+    const int x_71 = asint(x_6[3].x);
+    const int x_74 = asint(x_6[3].x);
+    const int x_77 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_68), float(x_71), float(x_74), float(x_77));
+  } else {
+    const int x_81 = asint(x_6[3].x);
+    const float x_82 = float(x_81);
+    x_GLF_color = float4(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8671edc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  int a = 0;
+  int i = 0;
+  tint_array_wrapper_1 indexable = {};
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_38;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  i = x_40;
+  while (true) {
+    int const x_45 = i;
+    int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    int const x_52 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    tint_array_wrapper_1 const tint_symbol_3 = {.arr={1, 2, 3, 4, 5, 6, 7, 8, 9}};
+    indexable = tint_symbol_3;
+    int const x_55 = indexable.arr[(x_50 % x_52)];
+    int const x_56 = a;
+    a = (x_56 + x_55);
+    {
+      int const x_58 = i;
+      i = (x_58 + 1);
+    }
+  }
+  int const x_60 = a;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_60 == x_62)) {
+    int const x_68 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_74 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_5) = float4(float(x_68), float(x_71), float(x_74), float(x_77));
+  } else {
+    int const x_81 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    float const x_82 = float(x_81);
+    *(tint_symbol_5) = float4(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..761bab9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,161 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 103
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_9 = OpConstant %uint 9
+%_arr_int_uint_9 = OpTypeArray %int %uint_9
+%_ptr_Function__arr_int_uint_9 = OpTypePointer Function %_arr_int_uint_9
+         %27 = OpConstantNull %_arr_int_uint_9
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+         %59 = OpConstantComposite %_arr_int_uint_9 %int_1 %int_2 %int_3 %int_4 %int_5 %int_6 %int_7 %int_8 %int_9
+   %main_out = OpTypeStruct %v4float
+         %91 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_9 Function %27
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %a %32
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %35 = OpLoad %int %34
+               OpStore %i %35
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpSLessThan %bool %40 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %37
+         %46 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %52 = OpLoad %int %51
+               OpStore %indexable %59
+         %60 = OpSMod %int %49 %52
+         %61 = OpAccessChain %_ptr_Function_int %indexable %60
+         %62 = OpLoad %int %61
+         %63 = OpLoad %int %a
+         %64 = OpIAdd %int %63 %62
+               OpStore %a %64
+               OpBranch %38
+         %38 = OpLabel
+         %65 = OpLoad %int %i
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %i %66
+               OpBranch %36
+         %37 = OpLabel
+         %67 = OpLoad %int %a
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpIEqual %bool %67 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %75
+         %83 = OpConvertSToF %float %77
+         %84 = OpConvertSToF %float %79
+         %85 = OpConvertSToF %float %81
+         %86 = OpCompositeConstruct %v4float %82 %83 %84 %85
+               OpStore %x_GLF_color %86
+               OpBranch %71
+         %73 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpCompositeConstruct %v4float %89 %89 %89 %89
+               OpStore %x_GLF_color %90
+               OpBranch %71
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %91
+%tint_symbol = OpFunctionParameter %main_out
+         %95 = OpLabel
+         %96 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %96
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %98 = OpLabel
+         %99 = OpFunctionCall %void %main_1
+        %101 = OpLoad %v4float %x_GLF_color
+        %102 = OpCompositeConstruct %main_out %101
+        %100 = OpFunctionCall %void %tint_symbol_2 %102
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..486246c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,64 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var indexable : array<i32, 9>;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_38;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = x_40;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[4];
+    indexable = array<i32, 9>(1, 2, 3, 4, 5, 6, 7, 8, 9);
+    let x_55 : i32 = indexable[(x_50 % x_52)];
+    let x_56 : i32 = a;
+    a = (x_56 + x_55);
+
+    continuing {
+      let x_58 : i32 = i;
+      i = (x_58 + 1);
+    }
+  }
+  let x_60 : i32 = a;
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_60 == x_62)) {
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_68), f32(x_71), f32(x_74), f32(x_77));
+  } else {
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_82 : f32 = f32(x_81);
+    x_GLF_color = vec4<f32>(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
new file mode 100644
index 0000000..486246c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
@@ -0,0 +1,64 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var indexable : array<i32, 9>;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_38;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = x_40;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[4];
+    indexable = array<i32, 9>(1, 2, 3, 4, 5, 6, 7, 8, 9);
+    let x_55 : i32 = indexable[(x_50 % x_52)];
+    let x_56 : i32 = a;
+    a = (x_56 + x_55);
+
+    continuing {
+      let x_58 : i32 = i;
+      i = (x_58 + 1);
+    }
+  }
+  let x_60 : i32 = a;
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_60 == x_62)) {
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_68), f32(x_71), f32(x_74), f32(x_77));
+  } else {
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_82 : f32 = f32(x_81);
+    x_GLF_color = vec4<f32>(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7e2ef37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,60 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  int indexable[9] = (int[9])0;
+  const int x_38 = asint(x_6[2].x);
+  a = x_38;
+  const int x_40 = asint(x_6[3].x);
+  i = x_40;
+  while (true) {
+    const int x_45 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    const int x_50 = i;
+    const int x_52 = asint(x_6[4].x);
+    const int tint_symbol_3[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
+    indexable = tint_symbol_3;
+    const int x_55 = indexable[(x_50 % x_52)];
+    a = (a + x_55);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_60 = a;
+  const int x_62 = asint(x_6[1].x);
+  if ((x_60 == x_62)) {
+    const int x_68 = asint(x_6[2].x);
+    const int x_71 = asint(x_6[3].x);
+    const int x_74 = asint(x_6[3].x);
+    const int x_77 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_68), float(x_71), float(x_74), float(x_77));
+  } else {
+    const int x_81 = asint(x_6[3].x);
+    const float x_82 = float(x_81);
+    x_GLF_color = float4(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8671edc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  int a = 0;
+  int i = 0;
+  tint_array_wrapper_1 indexable = {};
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_38;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  i = x_40;
+  while (true) {
+    int const x_45 = i;
+    int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    int const x_52 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    tint_array_wrapper_1 const tint_symbol_3 = {.arr={1, 2, 3, 4, 5, 6, 7, 8, 9}};
+    indexable = tint_symbol_3;
+    int const x_55 = indexable.arr[(x_50 % x_52)];
+    int const x_56 = a;
+    a = (x_56 + x_55);
+    {
+      int const x_58 = i;
+      i = (x_58 + 1);
+    }
+  }
+  int const x_60 = a;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_60 == x_62)) {
+    int const x_68 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_74 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_5) = float4(float(x_68), float(x_71), float(x_74), float(x_77));
+  } else {
+    int const x_81 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    float const x_82 = float(x_81);
+    *(tint_symbol_5) = float4(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..761bab9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,161 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 103
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_9 = OpConstant %uint 9
+%_arr_int_uint_9 = OpTypeArray %int %uint_9
+%_ptr_Function__arr_int_uint_9 = OpTypePointer Function %_arr_int_uint_9
+         %27 = OpConstantNull %_arr_int_uint_9
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+         %59 = OpConstantComposite %_arr_int_uint_9 %int_1 %int_2 %int_3 %int_4 %int_5 %int_6 %int_7 %int_8 %int_9
+   %main_out = OpTypeStruct %v4float
+         %91 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_9 Function %27
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %a %32
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %35 = OpLoad %int %34
+               OpStore %i %35
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpSLessThan %bool %40 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %37
+         %46 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %52 = OpLoad %int %51
+               OpStore %indexable %59
+         %60 = OpSMod %int %49 %52
+         %61 = OpAccessChain %_ptr_Function_int %indexable %60
+         %62 = OpLoad %int %61
+         %63 = OpLoad %int %a
+         %64 = OpIAdd %int %63 %62
+               OpStore %a %64
+               OpBranch %38
+         %38 = OpLabel
+         %65 = OpLoad %int %i
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %i %66
+               OpBranch %36
+         %37 = OpLabel
+         %67 = OpLoad %int %a
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpIEqual %bool %67 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %75
+         %83 = OpConvertSToF %float %77
+         %84 = OpConvertSToF %float %79
+         %85 = OpConvertSToF %float %81
+         %86 = OpCompositeConstruct %v4float %82 %83 %84 %85
+               OpStore %x_GLF_color %86
+               OpBranch %71
+         %73 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpCompositeConstruct %v4float %89 %89 %89 %89
+               OpStore %x_GLF_color %90
+               OpBranch %71
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %91
+%tint_symbol = OpFunctionParameter %main_out
+         %95 = OpLabel
+         %96 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %96
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %98 = OpLabel
+         %99 = OpFunctionCall %void %main_1
+        %101 = OpLoad %v4float %x_GLF_color
+        %102 = OpCompositeConstruct %main_out %101
+        %100 = OpFunctionCall %void %tint_symbol_2 %102
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..486246c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,64 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var indexable : array<i32, 9>;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_38;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = x_40;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[4];
+    indexable = array<i32, 9>(1, 2, 3, 4, 5, 6, 7, 8, 9);
+    let x_55 : i32 = indexable[(x_50 % x_52)];
+    let x_56 : i32 = a;
+    a = (x_56 + x_55);
+
+    continuing {
+      let x_58 : i32 = i;
+      i = (x_58 + 1);
+    }
+  }
+  let x_60 : i32 = a;
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_60 == x_62)) {
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_68), f32(x_71), f32(x_74), f32(x_77));
+  } else {
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_82 : f32 = f32(x_81);
+    x_GLF_color = vec4<f32>(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm
new file mode 100644
index 0000000..8524015
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm
@@ -0,0 +1,159 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %c "c"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+     %int_10 = OpConstant %int 10
+      %int_5 = OpConstant %int 5
+      %int_3 = OpConstant %int 3
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %11
+         %29 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %31 = OpLoad %int %30
+               OpStore %a %31
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %33 = OpLoad %int %32
+               OpStore %b %33
+               OpStore %c %int_1
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %int %b
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %38 %40
+         %42 = OpLoad %int %a
+         %43 = OpSLessThan %bool %42 %int_10
+         %44 = OpLogicalAnd %bool %41 %43
+               OpBranchConditional %44 %45 %35
+         %45 = OpLabel
+         %46 = OpLoad %int %c
+         %47 = OpSGreaterThan %bool %46 %int_5
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+               OpBranch %35
+         %48 = OpLabel
+         %50 = OpLoad %int %a
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %a %51
+         %52 = OpLoad %int %c
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %c %53
+         %54 = OpLoad %int %b
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %b %55
+               OpBranch %36
+         %36 = OpLabel
+               OpBranch %34
+         %35 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpLoad %int %a
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpSLessThan %bool %60 %62
+               OpBranchConditional %63 %64 %57
+         %64 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+         %65 = OpLoad %int %a
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %a %66
+               OpBranch %56
+         %57 = OpLabel
+         %67 = OpLoad %int %a
+         %68 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpIEqual %bool %67 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpLoad %int %b
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %75 = OpLoad %int %74
+         %76 = OpIEqual %bool %73 %75
+               OpBranch %71
+         %71 = OpLabel
+         %77 = OpPhi %bool %70 %57 %76 %72
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+         %80 = OpLoad %int %c
+         %81 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %82 = OpLoad %int %81
+         %83 = OpIEqual %bool %80 %82
+               OpBranch %78
+         %78 = OpLabel
+         %84 = OpPhi %bool %77 %71 %83 %79
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %89
+         %91 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %98 = OpLoad %int %97
+         %99 = OpConvertSToF %float %98
+        %100 = OpCompositeConstruct %v4float %90 %93 %96 %99
+               OpStore %_GLF_color %100
+               OpBranch %85
+         %87 = OpLabel
+        %101 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %102 = OpLoad %int %101
+        %103 = OpConvertSToF %float %102
+        %104 = OpCompositeConstruct %v4float %103 %103 %103 %103
+               OpStore %_GLF_color %104
+               OpBranch %85
+         %85 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1693e5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,96 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  bool x_76 = false;
+  bool x_83 = false;
+  bool x_77_phi = false;
+  bool x_84_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_31 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_31;
+  const int x_33 = asint(x_6[2].x);
+  b = x_33;
+  c = 1;
+  while (true) {
+    const int x_38 = b;
+    const int x_40 = asint(x_6[4].x);
+    bool tint_tmp = (x_38 < x_40);
+    if (tint_tmp) {
+      tint_tmp = (a < 10);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    if ((c > 5)) {
+      break;
+    }
+    a = (a + 1);
+    c = (c + 1);
+    b = (b + 1);
+  }
+  while (true) {
+    const int x_60 = a;
+    const int x_62 = asint(x_6[1].x);
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const int x_67 = a;
+  const int x_69 = asint(x_6[1].x);
+  const bool x_70 = (x_67 == x_69);
+  x_77_phi = x_70;
+  if (x_70) {
+    const int x_73 = b;
+    const int x_75 = asint(x_6[3].x);
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  const bool x_77 = x_77_phi;
+  x_84_phi = x_77;
+  if (x_77) {
+    const int x_80 = c;
+    const int x_82 = asint(x_6[3].x);
+    x_83 = (x_80 == x_82);
+    x_84_phi = x_83;
+  }
+  if (x_84_phi) {
+    const int x_89 = asint(x_6[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_92 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_95 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_98 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_89), float(x_92), float(x_95), float(x_98));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_102 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_103 = float(x_102);
+    x_GLF_color = float4(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2c946fe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  bool x_76 = false;
+  bool x_83 = false;
+  bool x_77_phi = false;
+  bool x_84_phi = false;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_31;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  b = x_33;
+  c = 1;
+  while (true) {
+    int const x_38 = b;
+    int const x_40 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_42 = a;
+    if (((x_38 < x_40) && (x_42 < 10))) {
+    } else {
+      break;
+    }
+    int const x_46 = c;
+    if ((x_46 > 5)) {
+      break;
+    }
+    int const x_50 = a;
+    a = (x_50 + 1);
+    int const x_52 = c;
+    c = (x_52 + 1);
+    int const x_54 = b;
+    b = (x_54 + 1);
+  }
+  while (true) {
+    int const x_60 = a;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    {
+      int const x_65 = a;
+      a = (x_65 + 1);
+    }
+  }
+  int const x_67 = a;
+  int const x_69 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  bool const x_70 = (x_67 == x_69);
+  x_77_phi = x_70;
+  if (x_70) {
+    int const x_73 = b;
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  bool const x_77 = x_77_phi;
+  x_84_phi = x_77;
+  if (x_77) {
+    int const x_80 = c;
+    int const x_82 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    x_83 = (x_80 == x_82);
+    x_84_phi = x_83;
+  }
+  bool const x_84 = x_84_phi;
+  if (x_84) {
+    int const x_89 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_92 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_95 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_98 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_89), float(x_92), float(x_95), float(x_98));
+  } else {
+    int const x_102 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_103 = float(x_102);
+    *(tint_symbol_4) = float4(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..94f92e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,225 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 135
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_76 "x_76"
+               OpName %x_83 "x_83"
+               OpName %x_77_phi "x_77_phi"
+               OpName %x_84_phi "x_84_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+     %int_10 = OpConstant %int 10
+      %int_5 = OpConstant %int 5
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %123 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %c = OpVariable %_ptr_Function_int Function %21
+       %x_76 = OpVariable %_ptr_Function_bool Function %27
+       %x_83 = OpVariable %_ptr_Function_bool Function %27
+   %x_77_phi = OpVariable %_ptr_Function_bool Function %27
+   %x_84_phi = OpVariable %_ptr_Function_bool Function %27
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %35 = OpLoad %int %34
+               OpStore %a %35
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %38 = OpLoad %int %37
+               OpStore %b %38
+               OpStore %c %int_1
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %b
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %47 = OpLoad %int %46
+         %48 = OpLoad %int %a
+         %49 = OpSLessThan %bool %44 %47
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+         %53 = OpSLessThan %bool %48 %int_10
+               OpBranch %50
+         %50 = OpLabel
+         %54 = OpPhi %bool %49 %43 %53 %51
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %41
+         %55 = OpLabel
+         %58 = OpLoad %int %c
+         %60 = OpSGreaterThan %bool %58 %int_5
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpBranch %41
+         %61 = OpLabel
+         %63 = OpLoad %int %a
+         %64 = OpIAdd %int %63 %int_1
+               OpStore %a %64
+         %65 = OpLoad %int %c
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %c %66
+         %67 = OpLoad %int %b
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %b %68
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %40
+         %41 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %a
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpSLessThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %70
+         %77 = OpLabel
+               OpBranch %71
+         %71 = OpLabel
+         %80 = OpLoad %int %a
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %a %81
+               OpBranch %69
+         %70 = OpLabel
+         %82 = OpLoad %int %a
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpIEqual %bool %82 %84
+               OpStore %x_77_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpLoad %int %b
+         %90 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %91 = OpLoad %int %90
+         %92 = OpIEqual %bool %88 %91
+               OpStore %x_76 %92
+         %93 = OpLoad %bool %x_76
+               OpStore %x_77_phi %93
+               OpBranch %86
+         %86 = OpLabel
+         %94 = OpLoad %bool %x_77_phi
+               OpStore %x_84_phi %94
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+         %97 = OpLoad %int %c
+         %98 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %99 = OpLoad %int %98
+        %100 = OpIEqual %bool %97 %99
+               OpStore %x_83 %100
+        %101 = OpLoad %bool %x_83
+               OpStore %x_84_phi %101
+               OpBranch %95
+         %95 = OpLabel
+        %102 = OpLoad %bool %x_84_phi
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %111 = OpLoad %int %110
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %107
+        %115 = OpConvertSToF %float %109
+        %116 = OpConvertSToF %float %111
+        %117 = OpConvertSToF %float %113
+        %118 = OpCompositeConstruct %v4float %114 %115 %116 %117
+               OpStore %x_GLF_color %118
+               OpBranch %103
+        %105 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %120 = OpLoad %int %119
+        %121 = OpConvertSToF %float %120
+        %122 = OpCompositeConstruct %v4float %121 %121 %121 %121
+               OpStore %x_GLF_color %122
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %123
+%tint_symbol = OpFunctionParameter %main_out
+        %127 = OpLabel
+        %128 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %128
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %130 = OpLabel
+        %131 = OpFunctionCall %void %main_1
+        %133 = OpLoad %v4float %x_GLF_color
+        %134 = OpCompositeConstruct %main_out %133
+        %132 = OpFunctionCall %void %tint_symbol_2 %134
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5a769f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,99 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var x_76 : bool;
+  var x_83 : bool;
+  var x_77_phi : bool;
+  var x_84_phi : bool;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_31;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[2];
+  b = x_33;
+  c = 1;
+  loop {
+    let x_38 : i32 = b;
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_42 : i32 = a;
+    if (((x_38 < x_40) && (x_42 < 10))) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = c;
+    if ((x_46 > 5)) {
+      break;
+    }
+    let x_50 : i32 = a;
+    a = (x_50 + 1);
+    let x_52 : i32 = c;
+    c = (x_52 + 1);
+    let x_54 : i32 = b;
+    b = (x_54 + 1);
+  }
+  loop {
+    let x_60 : i32 = a;
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_65 : i32 = a;
+      a = (x_65 + 1);
+    }
+  }
+  let x_67 : i32 = a;
+  let x_69 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_70 : bool = (x_67 == x_69);
+  x_77_phi = x_70;
+  if (x_70) {
+    let x_73 : i32 = b;
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  let x_77 : bool = x_77_phi;
+  x_84_phi = x_77;
+  if (x_77) {
+    let x_80 : i32 = c;
+    let x_82 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_83 = (x_80 == x_82);
+    x_84_phi = x_83;
+  }
+  let x_84 : bool = x_84_phi;
+  if (x_84) {
+    let x_89 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_92 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_95 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_98 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_89), f32(x_92), f32(x_95), f32(x_98));
+  } else {
+    let x_102 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_103 : f32 = f32(x_102);
+    x_GLF_color = vec4<f32>(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
new file mode 100644
index 0000000..5a769f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
@@ -0,0 +1,99 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var x_76 : bool;
+  var x_83 : bool;
+  var x_77_phi : bool;
+  var x_84_phi : bool;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_31;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[2];
+  b = x_33;
+  c = 1;
+  loop {
+    let x_38 : i32 = b;
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_42 : i32 = a;
+    if (((x_38 < x_40) && (x_42 < 10))) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = c;
+    if ((x_46 > 5)) {
+      break;
+    }
+    let x_50 : i32 = a;
+    a = (x_50 + 1);
+    let x_52 : i32 = c;
+    c = (x_52 + 1);
+    let x_54 : i32 = b;
+    b = (x_54 + 1);
+  }
+  loop {
+    let x_60 : i32 = a;
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_65 : i32 = a;
+      a = (x_65 + 1);
+    }
+  }
+  let x_67 : i32 = a;
+  let x_69 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_70 : bool = (x_67 == x_69);
+  x_77_phi = x_70;
+  if (x_70) {
+    let x_73 : i32 = b;
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  let x_77 : bool = x_77_phi;
+  x_84_phi = x_77;
+  if (x_77) {
+    let x_80 : i32 = c;
+    let x_82 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_83 = (x_80 == x_82);
+    x_84_phi = x_83;
+  }
+  let x_84 : bool = x_84_phi;
+  if (x_84) {
+    let x_89 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_92 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_95 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_98 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_89), f32(x_92), f32(x_95), f32(x_98));
+  } else {
+    let x_102 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_103 : f32 = f32(x_102);
+    x_GLF_color = vec4<f32>(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1693e5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,96 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  bool x_76 = false;
+  bool x_83 = false;
+  bool x_77_phi = false;
+  bool x_84_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_31 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_31;
+  const int x_33 = asint(x_6[2].x);
+  b = x_33;
+  c = 1;
+  while (true) {
+    const int x_38 = b;
+    const int x_40 = asint(x_6[4].x);
+    bool tint_tmp = (x_38 < x_40);
+    if (tint_tmp) {
+      tint_tmp = (a < 10);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    if ((c > 5)) {
+      break;
+    }
+    a = (a + 1);
+    c = (c + 1);
+    b = (b + 1);
+  }
+  while (true) {
+    const int x_60 = a;
+    const int x_62 = asint(x_6[1].x);
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const int x_67 = a;
+  const int x_69 = asint(x_6[1].x);
+  const bool x_70 = (x_67 == x_69);
+  x_77_phi = x_70;
+  if (x_70) {
+    const int x_73 = b;
+    const int x_75 = asint(x_6[3].x);
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  const bool x_77 = x_77_phi;
+  x_84_phi = x_77;
+  if (x_77) {
+    const int x_80 = c;
+    const int x_82 = asint(x_6[3].x);
+    x_83 = (x_80 == x_82);
+    x_84_phi = x_83;
+  }
+  if (x_84_phi) {
+    const int x_89 = asint(x_6[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_92 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_95 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_98 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_89), float(x_92), float(x_95), float(x_98));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_102 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_103 = float(x_102);
+    x_GLF_color = float4(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2c946fe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  bool x_76 = false;
+  bool x_83 = false;
+  bool x_77_phi = false;
+  bool x_84_phi = false;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_31;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  b = x_33;
+  c = 1;
+  while (true) {
+    int const x_38 = b;
+    int const x_40 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    int const x_42 = a;
+    if (((x_38 < x_40) && (x_42 < 10))) {
+    } else {
+      break;
+    }
+    int const x_46 = c;
+    if ((x_46 > 5)) {
+      break;
+    }
+    int const x_50 = a;
+    a = (x_50 + 1);
+    int const x_52 = c;
+    c = (x_52 + 1);
+    int const x_54 = b;
+    b = (x_54 + 1);
+  }
+  while (true) {
+    int const x_60 = a;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    {
+      int const x_65 = a;
+      a = (x_65 + 1);
+    }
+  }
+  int const x_67 = a;
+  int const x_69 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  bool const x_70 = (x_67 == x_69);
+  x_77_phi = x_70;
+  if (x_70) {
+    int const x_73 = b;
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  bool const x_77 = x_77_phi;
+  x_84_phi = x_77;
+  if (x_77) {
+    int const x_80 = c;
+    int const x_82 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    x_83 = (x_80 == x_82);
+    x_84_phi = x_83;
+  }
+  bool const x_84 = x_84_phi;
+  if (x_84) {
+    int const x_89 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_92 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_95 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_98 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_89), float(x_92), float(x_95), float(x_98));
+  } else {
+    int const x_102 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_103 = float(x_102);
+    *(tint_symbol_4) = float4(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..94f92e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,225 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 135
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_76 "x_76"
+               OpName %x_83 "x_83"
+               OpName %x_77_phi "x_77_phi"
+               OpName %x_84_phi "x_84_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+     %int_10 = OpConstant %int 10
+      %int_5 = OpConstant %int 5
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %123 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %b = OpVariable %_ptr_Function_int Function %21
+          %c = OpVariable %_ptr_Function_int Function %21
+       %x_76 = OpVariable %_ptr_Function_bool Function %27
+       %x_83 = OpVariable %_ptr_Function_bool Function %27
+   %x_77_phi = OpVariable %_ptr_Function_bool Function %27
+   %x_84_phi = OpVariable %_ptr_Function_bool Function %27
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %35 = OpLoad %int %34
+               OpStore %a %35
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %38 = OpLoad %int %37
+               OpStore %b %38
+               OpStore %c %int_1
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %b
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %47 = OpLoad %int %46
+         %48 = OpLoad %int %a
+         %49 = OpSLessThan %bool %44 %47
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+         %53 = OpSLessThan %bool %48 %int_10
+               OpBranch %50
+         %50 = OpLabel
+         %54 = OpPhi %bool %49 %43 %53 %51
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %41
+         %55 = OpLabel
+         %58 = OpLoad %int %c
+         %60 = OpSGreaterThan %bool %58 %int_5
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpBranch %41
+         %61 = OpLabel
+         %63 = OpLoad %int %a
+         %64 = OpIAdd %int %63 %int_1
+               OpStore %a %64
+         %65 = OpLoad %int %c
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %c %66
+         %67 = OpLoad %int %b
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %b %68
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %40
+         %41 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %a
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpSLessThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %70
+         %77 = OpLabel
+               OpBranch %71
+         %71 = OpLabel
+         %80 = OpLoad %int %a
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %a %81
+               OpBranch %69
+         %70 = OpLabel
+         %82 = OpLoad %int %a
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpIEqual %bool %82 %84
+               OpStore %x_77_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpLoad %int %b
+         %90 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %91 = OpLoad %int %90
+         %92 = OpIEqual %bool %88 %91
+               OpStore %x_76 %92
+         %93 = OpLoad %bool %x_76
+               OpStore %x_77_phi %93
+               OpBranch %86
+         %86 = OpLabel
+         %94 = OpLoad %bool %x_77_phi
+               OpStore %x_84_phi %94
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+         %97 = OpLoad %int %c
+         %98 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %99 = OpLoad %int %98
+        %100 = OpIEqual %bool %97 %99
+               OpStore %x_83 %100
+        %101 = OpLoad %bool %x_83
+               OpStore %x_84_phi %101
+               OpBranch %95
+         %95 = OpLabel
+        %102 = OpLoad %bool %x_84_phi
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %111 = OpLoad %int %110
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %107
+        %115 = OpConvertSToF %float %109
+        %116 = OpConvertSToF %float %111
+        %117 = OpConvertSToF %float %113
+        %118 = OpCompositeConstruct %v4float %114 %115 %116 %117
+               OpStore %x_GLF_color %118
+               OpBranch %103
+        %105 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %120 = OpLoad %int %119
+        %121 = OpConvertSToF %float %120
+        %122 = OpCompositeConstruct %v4float %121 %121 %121 %121
+               OpStore %x_GLF_color %122
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %123
+%tint_symbol = OpFunctionParameter %main_out
+        %127 = OpLabel
+        %128 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %128
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %130 = OpLabel
+        %131 = OpFunctionCall %void %main_1
+        %133 = OpLoad %v4float %x_GLF_color
+        %134 = OpCompositeConstruct %main_out %133
+        %132 = OpFunctionCall %void %tint_symbol_2 %134
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5a769f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,99 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var x_76 : bool;
+  var x_83 : bool;
+  var x_77_phi : bool;
+  var x_84_phi : bool;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_31;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[2];
+  b = x_33;
+  c = 1;
+  loop {
+    let x_38 : i32 = b;
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[4];
+    let x_42 : i32 = a;
+    if (((x_38 < x_40) && (x_42 < 10))) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = c;
+    if ((x_46 > 5)) {
+      break;
+    }
+    let x_50 : i32 = a;
+    a = (x_50 + 1);
+    let x_52 : i32 = c;
+    c = (x_52 + 1);
+    let x_54 : i32 = b;
+    b = (x_54 + 1);
+  }
+  loop {
+    let x_60 : i32 = a;
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_65 : i32 = a;
+      a = (x_65 + 1);
+    }
+  }
+  let x_67 : i32 = a;
+  let x_69 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_70 : bool = (x_67 == x_69);
+  x_77_phi = x_70;
+  if (x_70) {
+    let x_73 : i32 = b;
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  let x_77 : bool = x_77_phi;
+  x_84_phi = x_77;
+  if (x_77) {
+    let x_80 : i32 = c;
+    let x_82 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_83 = (x_80 == x_82);
+    x_84_phi = x_83;
+  }
+  let x_84 : bool = x_84_phi;
+  if (x_84) {
+    let x_89 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_92 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_95 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_98 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_89), f32(x_92), f32(x_95), f32(x_98));
+  } else {
+    let x_102 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_103 : f32 = f32(x_102);
+    x_GLF_color = vec4<f32>(x_103, x_103, x_103, x_103);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm
new file mode 100644
index 0000000..a5e67ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm
@@ -0,0 +1,145 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %m "m"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %arr "arr"
+               OpName %v "v"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+%mat3v3float = OpTypeMatrix %v3float 3
+%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
+%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
+      %int_1 = OpConstant %int 1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %v3bool = OpTypeVector %bool 3
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_3 = OpConstant %int 3
+       %main = OpFunction %void None %15
+         %43 = OpLabel
+          %m = OpVariable %_ptr_Function_mat3v3float Function
+          %a = OpVariable %_ptr_Function_int Function
+        %arr = OpVariable %_ptr_Function__arr_v3float_uint_2 Function
+          %v = OpVariable %_ptr_Function_v3float Function
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpCompositeConstruct %v3float %46 %float_0 %float_0
+         %48 = OpCompositeConstruct %v3float %float_0 %46 %float_0
+         %49 = OpCompositeConstruct %v3float %float_0 %float_0 %46
+         %50 = OpCompositeConstruct %mat3v3float %47 %48 %49
+               OpStore %m %50
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %52 = OpLoad %int %51
+               OpStore %a %52
+         %53 = OpLoad %int %a
+         %54 = OpLoad %int %a
+         %55 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %56 = OpLoad %float %55
+         %57 = OpAccessChain %_ptr_Function_float %m %53 %54
+               OpStore %57 %56
+         %58 = OpAccessChain %_ptr_Function_v3float %m %int_1
+         %59 = OpLoad %v3float %58
+         %60 = OpAccessChain %_ptr_Function_v3float %m %int_1
+         %61 = OpLoad %v3float %60
+         %62 = OpCompositeConstruct %_arr_v3float_uint_2 %59 %61
+               OpStore %arr %62
+         %63 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %64 = OpLoad %float %63
+         %65 = OpCompositeConstruct %v3float %64 %64 %64
+               OpStore %v %65
+         %66 = OpLoad %int %a
+         %67 = OpAccessChain %_ptr_Function_v3float %arr %66
+         %68 = OpLoad %v3float %67
+         %69 = OpLoad %v3float %v
+         %70 = OpFAdd %v3float %69 %68
+               OpStore %v %70
+         %71 = OpLoad %v3float %v
+         %72 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %76
+         %78 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %79
+         %81 = OpCompositeConstruct %v3float %74 %77 %80
+         %82 = OpFOrdEqual %v3bool %71 %81
+         %83 = OpAll %bool %82
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %97 = OpLoad %int %96
+         %98 = OpConvertSToF %float %97
+         %99 = OpCompositeConstruct %v4float %89 %92 %95 %98
+               OpStore %_GLF_color %99
+               OpBranch %84
+         %86 = OpLabel
+        %100 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %101 = OpLoad %int %100
+        %102 = OpConvertSToF %float %101
+        %103 = OpCompositeConstruct %v4float %102 %102 %102 %102
+               OpStore %_GLF_color %103
+               OpBranch %84
+         %84 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1bc001a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,70 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float3x3 m = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int a = 0;
+  float3 arr[2] = (float3[2])0;
+  float3 v = float3(0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_46 = float(x_45);
+  m = float3x3(float3(x_46, 0.0f, 0.0f), float3(0.0f, x_46, 0.0f), float3(0.0f, 0.0f, x_46));
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_52 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = x_52;
+  const int x_53 = a;
+  const int x_54 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_56 = asfloat(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  set_float3(m[x_53], x_54, x_56);
+  const float3 x_59 = m[1];
+  const float3 x_61 = m[1];
+  const float3 tint_symbol_4[2] = {x_59, x_61};
+  arr = tint_symbol_4;
+  const float x_64 = asfloat(x_9[1].x);
+  v = float3(x_64, x_64, x_64);
+  const float3 x_68 = arr[a];
+  v = (v + x_68);
+  const float3 x_71 = v;
+  const int x_73 = asint(x_6[1].x);
+  const int x_76 = asint(x_6[2].x);
+  const int x_79 = asint(x_6[1].x);
+  if (all((x_71 == float3(float(x_73), float(x_76), float(x_79))))) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_88 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_91 = asint(x_6[3].x);
+    const int x_94 = asint(x_6[3].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_97 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_88), float(x_91), float(x_94), float(x_97));
+  } else {
+    const int x_101 = asint(x_6[3].x);
+    const float x_102 = float(x_101);
+    x_GLF_color = float4(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..384a32d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  float3 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5) {
+  float3x3 m = float3x3(0.0f);
+  int a = 0;
+  tint_array_wrapper_2 arr = {};
+  float3 v = 0.0f;
+  int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_46 = float(x_45);
+  m = float3x3(float3(x_46, 0.0f, 0.0f), float3(0.0f, x_46, 0.0f), float3(0.0f, 0.0f, x_46));
+  int const x_52 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_52;
+  int const x_53 = a;
+  int const x_54 = a;
+  float const x_56 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  m[x_53][x_54] = x_56;
+  float3 const x_59 = m[1];
+  float3 const x_61 = m[1];
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_59, x_61}};
+  arr = tint_symbol_3;
+  float const x_64 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  v = float3(x_64, x_64, x_64);
+  int const x_66 = a;
+  float3 const x_68 = arr.arr[x_66];
+  float3 const x_69 = v;
+  v = (x_69 + x_68);
+  float3 const x_71 = v;
+  int const x_73 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_76 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_79 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if (all((x_71 == float3(float(x_73), float(x_76), float(x_79))))) {
+    int const x_88 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_91 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_94 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_97 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_88), float(x_91), float(x_94), float(x_97));
+  } else {
+    int const x_101 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    float const x_102 = float(x_101);
+    *(tint_symbol_5) = float4(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..dcf9f7f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,182 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %a "a"
+               OpName %arr "arr"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v3float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat3v3float = OpTypeMatrix %v3float 3
+%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
+         %28 = OpConstantNull %mat3v3float
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
+%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
+         %35 = OpConstantNull %_arr_v3float_uint_2
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %38 = OpConstantNull %v3float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_0 = OpConstant %float 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %v3bool = OpTypeVector %bool 3
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %110 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %m = OpVariable %_ptr_Function_mat3v3float Function %28
+          %a = OpVariable %_ptr_Function_int Function %31
+        %arr = OpVariable %_ptr_Function__arr_v3float_uint_2 Function %35
+          %v = OpVariable %_ptr_Function_v3float Function %38
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %46 = OpCompositeConstruct %v3float %44 %float_0 %float_0
+         %47 = OpCompositeConstruct %v3float %float_0 %44 %float_0
+         %48 = OpCompositeConstruct %v3float %float_0 %float_0 %44
+         %49 = OpCompositeConstruct %mat3v3float %46 %47 %48
+               OpStore %m %49
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %51 = OpLoad %int %50
+               OpStore %a %51
+         %52 = OpLoad %int %a
+         %53 = OpLoad %int %a
+         %55 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Function_float %m %52 %53
+               OpStore %58 %56
+         %60 = OpAccessChain %_ptr_Function_v3float %m %int_1
+         %61 = OpLoad %v3float %60
+         %62 = OpAccessChain %_ptr_Function_v3float %m %int_1
+         %63 = OpLoad %v3float %62
+         %64 = OpCompositeConstruct %_arr_v3float_uint_2 %61 %63
+               OpStore %arr %64
+         %65 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %66 = OpLoad %float %65
+         %67 = OpCompositeConstruct %v3float %66 %66 %66
+               OpStore %v %67
+         %68 = OpLoad %int %a
+         %69 = OpAccessChain %_ptr_Function_v3float %arr %68
+         %70 = OpLoad %v3float %69
+         %71 = OpLoad %v3float %v
+         %72 = OpFAdd %v3float %71 %70
+               OpStore %v %72
+         %73 = OpLoad %v3float %v
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %83 = OpConvertSToF %float %75
+         %84 = OpConvertSToF %float %78
+         %85 = OpConvertSToF %float %80
+         %86 = OpCompositeConstruct %v3float %83 %84 %85
+         %87 = OpFOrdEqual %v3bool %73 %86
+         %81 = OpAll %bool %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %81 %90 %91
+         %90 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %95 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %93
+        %102 = OpConvertSToF %float %96
+        %103 = OpConvertSToF %float %98
+        %104 = OpConvertSToF %float %100
+        %105 = OpCompositeConstruct %v4float %101 %102 %103 %104
+               OpStore %x_GLF_color %105
+               OpBranch %89
+         %91 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpCompositeConstruct %v4float %108 %108 %108 %108
+               OpStore %x_GLF_color %109
+               OpBranch %89
+         %89 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %110
+%tint_symbol = OpFunctionParameter %main_out
+        %114 = OpLabel
+        %115 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %115
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %117 = OpLabel
+        %118 = OpFunctionCall %void %main_1
+        %120 = OpLoad %v4float %x_GLF_color
+        %121 = OpCompositeConstruct %main_out %120
+        %119 = OpFunctionCall %void %tint_symbol_2 %121
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..302eb53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat3x3<f32>;
+  var a : i32;
+  var arr : array<vec3<f32>, 2>;
+  var v : vec3<f32>;
+  let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_46 : f32 = f32(x_45);
+  m = mat3x3<f32>(vec3<f32>(x_46, 0.0, 0.0), vec3<f32>(0.0, x_46, 0.0), vec3<f32>(0.0, 0.0, x_46));
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_52;
+  let x_53 : i32 = a;
+  let x_54 : i32 = a;
+  let x_56 : f32 = x_9.x_GLF_uniform_float_values[0];
+  m[x_53][x_54] = x_56;
+  let x_59 : vec3<f32> = m[1];
+  let x_61 : vec3<f32> = m[1];
+  arr = array<vec3<f32>, 2>(x_59, x_61);
+  let x_64 : f32 = x_9.x_GLF_uniform_float_values[1];
+  v = vec3<f32>(x_64, x_64, x_64);
+  let x_66 : i32 = a;
+  let x_68 : vec3<f32> = arr[x_66];
+  let x_69 : vec3<f32> = v;
+  v = (x_69 + x_68);
+  let x_71 : vec3<f32> = v;
+  let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_76 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_79 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if (all((x_71 == vec3<f32>(f32(x_73), f32(x_76), f32(x_79))))) {
+    let x_88 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_91 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_94 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_97 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_88), f32(x_91), f32(x_94), f32(x_97));
+  } else {
+    let x_101 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_102 : f32 = f32(x_101);
+    x_GLF_color = vec4<f32>(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
new file mode 100644
index 0000000..302eb53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat3x3<f32>;
+  var a : i32;
+  var arr : array<vec3<f32>, 2>;
+  var v : vec3<f32>;
+  let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_46 : f32 = f32(x_45);
+  m = mat3x3<f32>(vec3<f32>(x_46, 0.0, 0.0), vec3<f32>(0.0, x_46, 0.0), vec3<f32>(0.0, 0.0, x_46));
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_52;
+  let x_53 : i32 = a;
+  let x_54 : i32 = a;
+  let x_56 : f32 = x_9.x_GLF_uniform_float_values[0];
+  m[x_53][x_54] = x_56;
+  let x_59 : vec3<f32> = m[1];
+  let x_61 : vec3<f32> = m[1];
+  arr = array<vec3<f32>, 2>(x_59, x_61);
+  let x_64 : f32 = x_9.x_GLF_uniform_float_values[1];
+  v = vec3<f32>(x_64, x_64, x_64);
+  let x_66 : i32 = a;
+  let x_68 : vec3<f32> = arr[x_66];
+  let x_69 : vec3<f32> = v;
+  v = (x_69 + x_68);
+  let x_71 : vec3<f32> = v;
+  let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_76 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_79 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if (all((x_71 == vec3<f32>(f32(x_73), f32(x_76), f32(x_79))))) {
+    let x_88 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_91 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_94 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_97 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_88), f32(x_91), f32(x_94), f32(x_97));
+  } else {
+    let x_101 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_102 : f32 = f32(x_101);
+    x_GLF_color = vec4<f32>(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1bc001a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,70 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float3x3 m = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int a = 0;
+  float3 arr[2] = (float3[2])0;
+  float3 v = float3(0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_46 = float(x_45);
+  m = float3x3(float3(x_46, 0.0f, 0.0f), float3(0.0f, x_46, 0.0f), float3(0.0f, 0.0f, x_46));
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_52 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = x_52;
+  const int x_53 = a;
+  const int x_54 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_56 = asfloat(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  set_float3(m[x_53], x_54, x_56);
+  const float3 x_59 = m[1];
+  const float3 x_61 = m[1];
+  const float3 tint_symbol_4[2] = {x_59, x_61};
+  arr = tint_symbol_4;
+  const float x_64 = asfloat(x_9[1].x);
+  v = float3(x_64, x_64, x_64);
+  const float3 x_68 = arr[a];
+  v = (v + x_68);
+  const float3 x_71 = v;
+  const int x_73 = asint(x_6[1].x);
+  const int x_76 = asint(x_6[2].x);
+  const int x_79 = asint(x_6[1].x);
+  if (all((x_71 == float3(float(x_73), float(x_76), float(x_79))))) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_88 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_91 = asint(x_6[3].x);
+    const int x_94 = asint(x_6[3].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_97 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_88), float(x_91), float(x_94), float(x_97));
+  } else {
+    const int x_101 = asint(x_6[3].x);
+    const float x_102 = float(x_101);
+    x_GLF_color = float4(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..384a32d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  float3 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5) {
+  float3x3 m = float3x3(0.0f);
+  int a = 0;
+  tint_array_wrapper_2 arr = {};
+  float3 v = 0.0f;
+  int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_46 = float(x_45);
+  m = float3x3(float3(x_46, 0.0f, 0.0f), float3(0.0f, x_46, 0.0f), float3(0.0f, 0.0f, x_46));
+  int const x_52 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_52;
+  int const x_53 = a;
+  int const x_54 = a;
+  float const x_56 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  m[x_53][x_54] = x_56;
+  float3 const x_59 = m[1];
+  float3 const x_61 = m[1];
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_59, x_61}};
+  arr = tint_symbol_3;
+  float const x_64 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  v = float3(x_64, x_64, x_64);
+  int const x_66 = a;
+  float3 const x_68 = arr.arr[x_66];
+  float3 const x_69 = v;
+  v = (x_69 + x_68);
+  float3 const x_71 = v;
+  int const x_73 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_76 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_79 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if (all((x_71 == float3(float(x_73), float(x_76), float(x_79))))) {
+    int const x_88 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_91 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_94 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_97 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_88), float(x_91), float(x_94), float(x_97));
+  } else {
+    int const x_101 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    float const x_102 = float(x_101);
+    *(tint_symbol_5) = float4(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..dcf9f7f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,182 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %a "a"
+               OpName %arr "arr"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v3float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat3v3float = OpTypeMatrix %v3float 3
+%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
+         %28 = OpConstantNull %mat3v3float
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
+%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
+         %35 = OpConstantNull %_arr_v3float_uint_2
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %38 = OpConstantNull %v3float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_0 = OpConstant %float 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %v3bool = OpTypeVector %bool 3
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %110 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %m = OpVariable %_ptr_Function_mat3v3float Function %28
+          %a = OpVariable %_ptr_Function_int Function %31
+        %arr = OpVariable %_ptr_Function__arr_v3float_uint_2 Function %35
+          %v = OpVariable %_ptr_Function_v3float Function %38
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %46 = OpCompositeConstruct %v3float %44 %float_0 %float_0
+         %47 = OpCompositeConstruct %v3float %float_0 %44 %float_0
+         %48 = OpCompositeConstruct %v3float %float_0 %float_0 %44
+         %49 = OpCompositeConstruct %mat3v3float %46 %47 %48
+               OpStore %m %49
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %51 = OpLoad %int %50
+               OpStore %a %51
+         %52 = OpLoad %int %a
+         %53 = OpLoad %int %a
+         %55 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Function_float %m %52 %53
+               OpStore %58 %56
+         %60 = OpAccessChain %_ptr_Function_v3float %m %int_1
+         %61 = OpLoad %v3float %60
+         %62 = OpAccessChain %_ptr_Function_v3float %m %int_1
+         %63 = OpLoad %v3float %62
+         %64 = OpCompositeConstruct %_arr_v3float_uint_2 %61 %63
+               OpStore %arr %64
+         %65 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %66 = OpLoad %float %65
+         %67 = OpCompositeConstruct %v3float %66 %66 %66
+               OpStore %v %67
+         %68 = OpLoad %int %a
+         %69 = OpAccessChain %_ptr_Function_v3float %arr %68
+         %70 = OpLoad %v3float %69
+         %71 = OpLoad %v3float %v
+         %72 = OpFAdd %v3float %71 %70
+               OpStore %v %72
+         %73 = OpLoad %v3float %v
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %83 = OpConvertSToF %float %75
+         %84 = OpConvertSToF %float %78
+         %85 = OpConvertSToF %float %80
+         %86 = OpCompositeConstruct %v3float %83 %84 %85
+         %87 = OpFOrdEqual %v3bool %73 %86
+         %81 = OpAll %bool %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %81 %90 %91
+         %90 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %95 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %93
+        %102 = OpConvertSToF %float %96
+        %103 = OpConvertSToF %float %98
+        %104 = OpConvertSToF %float %100
+        %105 = OpCompositeConstruct %v4float %101 %102 %103 %104
+               OpStore %x_GLF_color %105
+               OpBranch %89
+         %91 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpCompositeConstruct %v4float %108 %108 %108 %108
+               OpStore %x_GLF_color %109
+               OpBranch %89
+         %89 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %110
+%tint_symbol = OpFunctionParameter %main_out
+        %114 = OpLabel
+        %115 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %115
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %117 = OpLabel
+        %118 = OpFunctionCall %void %main_1
+        %120 = OpLoad %v4float %x_GLF_color
+        %121 = OpCompositeConstruct %main_out %120
+        %119 = OpFunctionCall %void %tint_symbol_2 %121
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..302eb53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat3x3<f32>;
+  var a : i32;
+  var arr : array<vec3<f32>, 2>;
+  var v : vec3<f32>;
+  let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_46 : f32 = f32(x_45);
+  m = mat3x3<f32>(vec3<f32>(x_46, 0.0, 0.0), vec3<f32>(0.0, x_46, 0.0), vec3<f32>(0.0, 0.0, x_46));
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_52;
+  let x_53 : i32 = a;
+  let x_54 : i32 = a;
+  let x_56 : f32 = x_9.x_GLF_uniform_float_values[0];
+  m[x_53][x_54] = x_56;
+  let x_59 : vec3<f32> = m[1];
+  let x_61 : vec3<f32> = m[1];
+  arr = array<vec3<f32>, 2>(x_59, x_61);
+  let x_64 : f32 = x_9.x_GLF_uniform_float_values[1];
+  v = vec3<f32>(x_64, x_64, x_64);
+  let x_66 : i32 = a;
+  let x_68 : vec3<f32> = arr[x_66];
+  let x_69 : vec3<f32> = v;
+  v = (x_69 + x_68);
+  let x_71 : vec3<f32> = v;
+  let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_76 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_79 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if (all((x_71 == vec3<f32>(f32(x_73), f32(x_76), f32(x_79))))) {
+    let x_88 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_91 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_94 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_97 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_88), f32(x_91), f32(x_94), f32(x_97));
+  } else {
+    let x_101 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_102 : f32 = f32(x_101);
+    x_GLF_color = vec4<f32>(x_102, x_102, x_102, x_102);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm
new file mode 100644
index 0000000..c366dac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm
@@ -0,0 +1,152 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %v "v"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %m "m"
+               OpName %indexable "indexable"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%mat3v4float = OpTypeMatrix %v4float 3
+%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %15
+         %42 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %v = OpVariable %_ptr_Function_v4float Function
+          %m = OpVariable %_ptr_Function_mat3v4float Function
+  %indexable = OpVariable %_ptr_Function_mat4v4float Function
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %44 = OpLoad %int %43
+               OpStore %a %44
+         %45 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_2
+         %46 = OpLoad %float %45
+         %47 = OpCompositeConstruct %v4float %46 %46 %46 %46
+               OpStore %v %47
+         %48 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_3
+         %49 = OpLoad %float %48
+         %50 = OpCompositeConstruct %v4float %49 %float_0 %float_0 %float_0
+         %51 = OpCompositeConstruct %v4float %float_0 %49 %float_0 %float_0
+         %52 = OpCompositeConstruct %v4float %float_0 %float_0 %49 %float_0
+         %53 = OpCompositeConstruct %mat3v4float %50 %51 %52
+               OpStore %m %53
+         %54 = OpLoad %int %a
+         %55 = OpLoad %int %a
+         %56 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Function_float %m %54 %55
+               OpStore %58 %57
+         %59 = OpLoad %int %a
+         %60 = OpLoad %mat3v4float %m
+         %61 = OpCompositeExtract %float %60 0 0
+         %62 = OpCompositeExtract %float %60 0 1
+         %63 = OpCompositeExtract %float %60 0 2
+         %64 = OpCompositeExtract %float %60 0 3
+         %65 = OpCompositeExtract %float %60 1 0
+         %66 = OpCompositeExtract %float %60 1 1
+         %67 = OpCompositeExtract %float %60 1 2
+         %68 = OpCompositeExtract %float %60 1 3
+         %69 = OpCompositeExtract %float %60 2 0
+         %70 = OpCompositeExtract %float %60 2 1
+         %71 = OpCompositeExtract %float %60 2 2
+         %72 = OpCompositeExtract %float %60 2 3
+         %73 = OpCompositeConstruct %v4float %61 %62 %63 %64
+         %74 = OpCompositeConstruct %v4float %65 %66 %67 %68
+         %75 = OpCompositeConstruct %v4float %69 %70 %71 %72
+         %76 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_1
+         %77 = OpCompositeConstruct %mat4v4float %73 %74 %75 %76
+         %78 = OpLoad %int %a
+         %79 = OpLoad %int %a
+               OpStore %indexable %77
+         %80 = OpAccessChain %_ptr_Function_float %indexable %78 %79
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Function_float %v %59
+         %83 = OpLoad %float %82
+         %84 = OpFAdd %float %83 %81
+         %85 = OpAccessChain %_ptr_Function_float %v %59
+               OpStore %85 %84
+         %86 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %89 = OpLoad %float %88
+         %90 = OpFOrdEqual %bool %87 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %93
+         %92 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpConvertSToF %float %98
+        %100 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %101 = OpLoad %int %100
+        %102 = OpConvertSToF %float %101
+        %103 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %104 = OpLoad %int %103
+        %105 = OpConvertSToF %float %104
+        %106 = OpCompositeConstruct %v4float %96 %99 %102 %105
+               OpStore %_GLF_color %106
+               OpBranch %91
+         %93 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %108 = OpLoad %int %107
+        %109 = OpConvertSToF %float %108
+        %110 = OpCompositeConstruct %v4float %109 %109 %109 %109
+               OpStore %_GLF_color %110
+               OpBranch %91
+         %91 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..71686c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,68 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float3x4 m = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4x4 indexable = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_44 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_44;
+  const float x_46 = asfloat(x_9[2].x);
+  v = float4(x_46, x_46, x_46, x_46);
+  const float x_49 = asfloat(x_9[3].x);
+  m = float3x4(float4(x_49, 0.0f, 0.0f, 0.0f), float4(0.0f, x_49, 0.0f, 0.0f), float4(0.0f, 0.0f, x_49, 0.0f));
+  const int x_54 = a;
+  const int x_55 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_57 = asfloat(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  set_float4(m[x_54], x_55, x_57);
+  const int x_59 = a;
+  const float3x4 x_60 = m;
+  const int x_78 = a;
+  const int x_79 = a;
+  indexable = float4x4(float4(x_60[0u].x, x_60[0u].y, x_60[0u].z, x_60[0u].w), float4(x_60[1u].x, x_60[1u].y, x_60[1u].z, x_60[1u].w), float4(x_60[2u].x, x_60[2u].y, x_60[2u].z, x_60[2u].w), float4(0.0f, 0.0f, 0.0f, 1.0f));
+  const float x_81 = indexable[x_78][x_79];
+  const float x_83 = v[x_59];
+  set_float4(v, x_59, (x_83 + x_81));
+  const float x_87 = v.y;
+  const float x_89 = asfloat(x_9[1].x);
+  if ((x_87 == x_89)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_95 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_98 = asint(x_6[1].x);
+    const int x_101 = asint(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_104 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_95), float(x_98), float(x_101), float(x_104));
+  } else {
+    const int x_108 = asint(x_6[1].x);
+    const float x_109 = float(x_108);
+    x_GLF_color = float4(x_109, x_109, x_109, x_109);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..00f2b25
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.msl
@@ -0,0 +1,77 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  int a = 0;
+  float4 v = 0.0f;
+  float3x4 m = float3x4(0.0f);
+  float4x4 indexable = float4x4(0.0f);
+  int const x_44 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_44;
+  float const x_46 = x_9.x_GLF_uniform_float_values.arr[2].el;
+  v = float4(x_46, x_46, x_46, x_46);
+  float const x_49 = x_9.x_GLF_uniform_float_values.arr[3].el;
+  m = float3x4(float4(x_49, 0.0f, 0.0f, 0.0f), float4(0.0f, x_49, 0.0f, 0.0f), float4(0.0f, 0.0f, x_49, 0.0f));
+  int const x_54 = a;
+  int const x_55 = a;
+  float const x_57 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  m[x_54][x_55] = x_57;
+  int const x_59 = a;
+  float3x4 const x_60 = m;
+  int const x_78 = a;
+  int const x_79 = a;
+  indexable = float4x4(float4(x_60[0u].x, x_60[0u].y, x_60[0u].z, x_60[0u].w), float4(x_60[1u].x, x_60[1u].y, x_60[1u].z, x_60[1u].w), float4(x_60[2u].x, x_60[2u].y, x_60[2u].z, x_60[2u].w), float4(0.0f, 0.0f, 0.0f, 1.0f));
+  float const x_81 = indexable[x_78][x_79];
+  float const x_83 = v[x_59];
+  v[x_59] = (x_83 + x_81);
+  float const x_87 = v.y;
+  float const x_89 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_87 == x_89)) {
+    int const x_95 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_98 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_101 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_104 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_95), float(x_98), float(x_101), float(x_104));
+  } else {
+    int const x_108 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_109 = float(x_108);
+    *(tint_symbol_4) = float4(x_109, x_109, x_109, x_109);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..03ce671
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,200 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 141
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v "v"
+               OpName %m "m"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%mat3v4float = OpTypeMatrix %v4float 3
+%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
+         %32 = OpConstantNull %mat3v4float
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %36 = OpConstantNull %mat4v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+         %94 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+        %129 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %26
+          %v = OpVariable %_ptr_Function_v4float Function %17
+          %m = OpVariable %_ptr_Function_mat3v4float Function %32
+  %indexable = OpVariable %_ptr_Function_mat4v4float Function %36
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+               OpStore %a %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_2
+         %45 = OpLoad %float %44
+         %46 = OpCompositeConstruct %v4float %45 %45 %45 %45
+               OpStore %v %46
+         %48 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_3
+         %49 = OpLoad %float %48
+         %51 = OpCompositeConstruct %v4float %49 %float_0 %float_0 %float_0
+         %52 = OpCompositeConstruct %v4float %float_0 %49 %float_0 %float_0
+         %53 = OpCompositeConstruct %v4float %float_0 %float_0 %49 %float_0
+         %54 = OpCompositeConstruct %mat3v4float %51 %52 %53
+               OpStore %m %54
+         %55 = OpLoad %int %a
+         %56 = OpLoad %int %a
+         %57 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %60 = OpAccessChain %_ptr_Function_float %m %55 %56
+               OpStore %60 %58
+         %61 = OpLoad %int %a
+         %62 = OpLoad %mat3v4float %m
+         %63 = OpLoad %int %a
+         %64 = OpLoad %int %a
+         %65 = OpCompositeExtract %v4float %62 0
+         %66 = OpCompositeExtract %float %65 0
+         %67 = OpCompositeExtract %v4float %62 0
+         %68 = OpCompositeExtract %float %67 1
+         %69 = OpCompositeExtract %v4float %62 0
+         %70 = OpCompositeExtract %float %69 2
+         %71 = OpCompositeExtract %v4float %62 0
+         %72 = OpCompositeExtract %float %71 3
+         %73 = OpCompositeConstruct %v4float %66 %68 %70 %72
+         %75 = OpCompositeExtract %v4float %62 1
+         %76 = OpCompositeExtract %float %75 0
+         %77 = OpCompositeExtract %v4float %62 1
+         %78 = OpCompositeExtract %float %77 1
+         %79 = OpCompositeExtract %v4float %62 1
+         %80 = OpCompositeExtract %float %79 2
+         %81 = OpCompositeExtract %v4float %62 1
+         %82 = OpCompositeExtract %float %81 3
+         %83 = OpCompositeConstruct %v4float %76 %78 %80 %82
+         %84 = OpCompositeExtract %v4float %62 2
+         %85 = OpCompositeExtract %float %84 0
+         %86 = OpCompositeExtract %v4float %62 2
+         %87 = OpCompositeExtract %float %86 1
+         %88 = OpCompositeExtract %v4float %62 2
+         %89 = OpCompositeExtract %float %88 2
+         %90 = OpCompositeExtract %v4float %62 2
+         %91 = OpCompositeExtract %float %90 3
+         %92 = OpCompositeConstruct %v4float %85 %87 %89 %91
+         %95 = OpCompositeConstruct %mat4v4float %73 %83 %92 %94
+               OpStore %indexable %95
+         %96 = OpAccessChain %_ptr_Function_float %indexable %63 %64
+         %97 = OpLoad %float %96
+         %98 = OpAccessChain %_ptr_Function_float %v %61
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Function_float %v %61
+        %101 = OpFAdd %float %99 %97
+               OpStore %100 %101
+        %102 = OpAccessChain %_ptr_Function_float %v %uint_1
+        %103 = OpLoad %float %102
+        %105 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+        %106 = OpLoad %float %105
+        %107 = OpFOrdEqual %bool %103 %106
+               OpSelectionMerge %109 None
+               OpBranchConditional %107 %110 %111
+        %110 = OpLabel
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %115 = OpLoad %int %114
+        %116 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %117 = OpLoad %int %116
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %113
+        %121 = OpConvertSToF %float %115
+        %122 = OpConvertSToF %float %117
+        %123 = OpConvertSToF %float %119
+        %124 = OpCompositeConstruct %v4float %120 %121 %122 %123
+               OpStore %x_GLF_color %124
+               OpBranch %109
+        %111 = OpLabel
+        %125 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %126
+        %128 = OpCompositeConstruct %v4float %127 %127 %127 %127
+               OpStore %x_GLF_color %128
+               OpBranch %109
+        %109 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %129
+%tint_symbol = OpFunctionParameter %main_out
+        %133 = OpLabel
+        %134 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %134
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %136 = OpLabel
+        %137 = OpFunctionCall %void %main_1
+        %139 = OpLoad %v4float %x_GLF_color
+        %140 = OpCompositeConstruct %main_out %139
+        %138 = OpFunctionCall %void %tint_symbol_2 %140
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ff8e0f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,69 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var v : vec4<f32>;
+  var m : mat3x4<f32>;
+  var indexable : mat4x4<f32>;
+  let x_44 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_44;
+  let x_46 : f32 = x_9.x_GLF_uniform_float_values[2];
+  v = vec4<f32>(x_46, x_46, x_46, x_46);
+  let x_49 : f32 = x_9.x_GLF_uniform_float_values[3];
+  m = mat3x4<f32>(vec4<f32>(x_49, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_49, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_49, 0.0));
+  let x_54 : i32 = a;
+  let x_55 : i32 = a;
+  let x_57 : f32 = x_9.x_GLF_uniform_float_values[0];
+  m[x_54][x_55] = x_57;
+  let x_59 : i32 = a;
+  let x_60 : mat3x4<f32> = m;
+  let x_78 : i32 = a;
+  let x_79 : i32 = a;
+  indexable = mat4x4<f32>(vec4<f32>(x_60[0u].x, x_60[0u].y, x_60[0u].z, x_60[0u].w), vec4<f32>(x_60[1u].x, x_60[1u].y, x_60[1u].z, x_60[1u].w), vec4<f32>(x_60[2u].x, x_60[2u].y, x_60[2u].z, x_60[2u].w), vec4<f32>(0.0, 0.0, 0.0, 1.0));
+  let x_81 : f32 = indexable[x_78][x_79];
+  let x_83 : f32 = v[x_59];
+  v[x_59] = (x_83 + x_81);
+  let x_87 : f32 = v.y;
+  let x_89 : f32 = x_9.x_GLF_uniform_float_values[1];
+  if ((x_87 == x_89)) {
+    let x_95 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_98 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_101 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_104 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_95), f32(x_98), f32(x_101), f32(x_104));
+  } else {
+    let x_108 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_109 : f32 = f32(x_108);
+    x_GLF_color = vec4<f32>(x_109, x_109, x_109, x_109);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
new file mode 100644
index 0000000..ff8e0f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
@@ -0,0 +1,69 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var v : vec4<f32>;
+  var m : mat3x4<f32>;
+  var indexable : mat4x4<f32>;
+  let x_44 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_44;
+  let x_46 : f32 = x_9.x_GLF_uniform_float_values[2];
+  v = vec4<f32>(x_46, x_46, x_46, x_46);
+  let x_49 : f32 = x_9.x_GLF_uniform_float_values[3];
+  m = mat3x4<f32>(vec4<f32>(x_49, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_49, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_49, 0.0));
+  let x_54 : i32 = a;
+  let x_55 : i32 = a;
+  let x_57 : f32 = x_9.x_GLF_uniform_float_values[0];
+  m[x_54][x_55] = x_57;
+  let x_59 : i32 = a;
+  let x_60 : mat3x4<f32> = m;
+  let x_78 : i32 = a;
+  let x_79 : i32 = a;
+  indexable = mat4x4<f32>(vec4<f32>(x_60[0u].x, x_60[0u].y, x_60[0u].z, x_60[0u].w), vec4<f32>(x_60[1u].x, x_60[1u].y, x_60[1u].z, x_60[1u].w), vec4<f32>(x_60[2u].x, x_60[2u].y, x_60[2u].z, x_60[2u].w), vec4<f32>(0.0, 0.0, 0.0, 1.0));
+  let x_81 : f32 = indexable[x_78][x_79];
+  let x_83 : f32 = v[x_59];
+  v[x_59] = (x_83 + x_81);
+  let x_87 : f32 = v.y;
+  let x_89 : f32 = x_9.x_GLF_uniform_float_values[1];
+  if ((x_87 == x_89)) {
+    let x_95 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_98 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_101 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_104 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_95), f32(x_98), f32(x_101), f32(x_104));
+  } else {
+    let x_108 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_109 : f32 = f32(x_108);
+    x_GLF_color = vec4<f32>(x_109, x_109, x_109, x_109);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..71686c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,68 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float3x4 m = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4x4 indexable = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_44 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_44;
+  const float x_46 = asfloat(x_9[2].x);
+  v = float4(x_46, x_46, x_46, x_46);
+  const float x_49 = asfloat(x_9[3].x);
+  m = float3x4(float4(x_49, 0.0f, 0.0f, 0.0f), float4(0.0f, x_49, 0.0f, 0.0f), float4(0.0f, 0.0f, x_49, 0.0f));
+  const int x_54 = a;
+  const int x_55 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_57 = asfloat(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  set_float4(m[x_54], x_55, x_57);
+  const int x_59 = a;
+  const float3x4 x_60 = m;
+  const int x_78 = a;
+  const int x_79 = a;
+  indexable = float4x4(float4(x_60[0u].x, x_60[0u].y, x_60[0u].z, x_60[0u].w), float4(x_60[1u].x, x_60[1u].y, x_60[1u].z, x_60[1u].w), float4(x_60[2u].x, x_60[2u].y, x_60[2u].z, x_60[2u].w), float4(0.0f, 0.0f, 0.0f, 1.0f));
+  const float x_81 = indexable[x_78][x_79];
+  const float x_83 = v[x_59];
+  set_float4(v, x_59, (x_83 + x_81));
+  const float x_87 = v.y;
+  const float x_89 = asfloat(x_9[1].x);
+  if ((x_87 == x_89)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_95 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_98 = asint(x_6[1].x);
+    const int x_101 = asint(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_104 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_95), float(x_98), float(x_101), float(x_104));
+  } else {
+    const int x_108 = asint(x_6[1].x);
+    const float x_109 = float(x_108);
+    x_GLF_color = float4(x_109, x_109, x_109, x_109);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..00f2b25
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.msl
@@ -0,0 +1,77 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  int a = 0;
+  float4 v = 0.0f;
+  float3x4 m = float3x4(0.0f);
+  float4x4 indexable = float4x4(0.0f);
+  int const x_44 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_44;
+  float const x_46 = x_9.x_GLF_uniform_float_values.arr[2].el;
+  v = float4(x_46, x_46, x_46, x_46);
+  float const x_49 = x_9.x_GLF_uniform_float_values.arr[3].el;
+  m = float3x4(float4(x_49, 0.0f, 0.0f, 0.0f), float4(0.0f, x_49, 0.0f, 0.0f), float4(0.0f, 0.0f, x_49, 0.0f));
+  int const x_54 = a;
+  int const x_55 = a;
+  float const x_57 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  m[x_54][x_55] = x_57;
+  int const x_59 = a;
+  float3x4 const x_60 = m;
+  int const x_78 = a;
+  int const x_79 = a;
+  indexable = float4x4(float4(x_60[0u].x, x_60[0u].y, x_60[0u].z, x_60[0u].w), float4(x_60[1u].x, x_60[1u].y, x_60[1u].z, x_60[1u].w), float4(x_60[2u].x, x_60[2u].y, x_60[2u].z, x_60[2u].w), float4(0.0f, 0.0f, 0.0f, 1.0f));
+  float const x_81 = indexable[x_78][x_79];
+  float const x_83 = v[x_59];
+  v[x_59] = (x_83 + x_81);
+  float const x_87 = v.y;
+  float const x_89 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_87 == x_89)) {
+    int const x_95 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_98 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_101 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_104 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_95), float(x_98), float(x_101), float(x_104));
+  } else {
+    int const x_108 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_109 = float(x_108);
+    *(tint_symbol_4) = float4(x_109, x_109, x_109, x_109);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..03ce671
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,200 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 141
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v "v"
+               OpName %m "m"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%mat3v4float = OpTypeMatrix %v4float 3
+%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
+         %32 = OpConstantNull %mat3v4float
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %36 = OpConstantNull %mat4v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+         %94 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+        %129 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %26
+          %v = OpVariable %_ptr_Function_v4float Function %17
+          %m = OpVariable %_ptr_Function_mat3v4float Function %32
+  %indexable = OpVariable %_ptr_Function_mat4v4float Function %36
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+               OpStore %a %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_2
+         %45 = OpLoad %float %44
+         %46 = OpCompositeConstruct %v4float %45 %45 %45 %45
+               OpStore %v %46
+         %48 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_3
+         %49 = OpLoad %float %48
+         %51 = OpCompositeConstruct %v4float %49 %float_0 %float_0 %float_0
+         %52 = OpCompositeConstruct %v4float %float_0 %49 %float_0 %float_0
+         %53 = OpCompositeConstruct %v4float %float_0 %float_0 %49 %float_0
+         %54 = OpCompositeConstruct %mat3v4float %51 %52 %53
+               OpStore %m %54
+         %55 = OpLoad %int %a
+         %56 = OpLoad %int %a
+         %57 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %60 = OpAccessChain %_ptr_Function_float %m %55 %56
+               OpStore %60 %58
+         %61 = OpLoad %int %a
+         %62 = OpLoad %mat3v4float %m
+         %63 = OpLoad %int %a
+         %64 = OpLoad %int %a
+         %65 = OpCompositeExtract %v4float %62 0
+         %66 = OpCompositeExtract %float %65 0
+         %67 = OpCompositeExtract %v4float %62 0
+         %68 = OpCompositeExtract %float %67 1
+         %69 = OpCompositeExtract %v4float %62 0
+         %70 = OpCompositeExtract %float %69 2
+         %71 = OpCompositeExtract %v4float %62 0
+         %72 = OpCompositeExtract %float %71 3
+         %73 = OpCompositeConstruct %v4float %66 %68 %70 %72
+         %75 = OpCompositeExtract %v4float %62 1
+         %76 = OpCompositeExtract %float %75 0
+         %77 = OpCompositeExtract %v4float %62 1
+         %78 = OpCompositeExtract %float %77 1
+         %79 = OpCompositeExtract %v4float %62 1
+         %80 = OpCompositeExtract %float %79 2
+         %81 = OpCompositeExtract %v4float %62 1
+         %82 = OpCompositeExtract %float %81 3
+         %83 = OpCompositeConstruct %v4float %76 %78 %80 %82
+         %84 = OpCompositeExtract %v4float %62 2
+         %85 = OpCompositeExtract %float %84 0
+         %86 = OpCompositeExtract %v4float %62 2
+         %87 = OpCompositeExtract %float %86 1
+         %88 = OpCompositeExtract %v4float %62 2
+         %89 = OpCompositeExtract %float %88 2
+         %90 = OpCompositeExtract %v4float %62 2
+         %91 = OpCompositeExtract %float %90 3
+         %92 = OpCompositeConstruct %v4float %85 %87 %89 %91
+         %95 = OpCompositeConstruct %mat4v4float %73 %83 %92 %94
+               OpStore %indexable %95
+         %96 = OpAccessChain %_ptr_Function_float %indexable %63 %64
+         %97 = OpLoad %float %96
+         %98 = OpAccessChain %_ptr_Function_float %v %61
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Function_float %v %61
+        %101 = OpFAdd %float %99 %97
+               OpStore %100 %101
+        %102 = OpAccessChain %_ptr_Function_float %v %uint_1
+        %103 = OpLoad %float %102
+        %105 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+        %106 = OpLoad %float %105
+        %107 = OpFOrdEqual %bool %103 %106
+               OpSelectionMerge %109 None
+               OpBranchConditional %107 %110 %111
+        %110 = OpLabel
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %115 = OpLoad %int %114
+        %116 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %117 = OpLoad %int %116
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %113
+        %121 = OpConvertSToF %float %115
+        %122 = OpConvertSToF %float %117
+        %123 = OpConvertSToF %float %119
+        %124 = OpCompositeConstruct %v4float %120 %121 %122 %123
+               OpStore %x_GLF_color %124
+               OpBranch %109
+        %111 = OpLabel
+        %125 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %126
+        %128 = OpCompositeConstruct %v4float %127 %127 %127 %127
+               OpStore %x_GLF_color %128
+               OpBranch %109
+        %109 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %129
+%tint_symbol = OpFunctionParameter %main_out
+        %133 = OpLabel
+        %134 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %134
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %136 = OpLabel
+        %137 = OpFunctionCall %void %main_1
+        %139 = OpLoad %v4float %x_GLF_color
+        %140 = OpCompositeConstruct %main_out %139
+        %138 = OpFunctionCall %void %tint_symbol_2 %140
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ff8e0f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,69 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var v : vec4<f32>;
+  var m : mat3x4<f32>;
+  var indexable : mat4x4<f32>;
+  let x_44 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_44;
+  let x_46 : f32 = x_9.x_GLF_uniform_float_values[2];
+  v = vec4<f32>(x_46, x_46, x_46, x_46);
+  let x_49 : f32 = x_9.x_GLF_uniform_float_values[3];
+  m = mat3x4<f32>(vec4<f32>(x_49, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_49, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_49, 0.0));
+  let x_54 : i32 = a;
+  let x_55 : i32 = a;
+  let x_57 : f32 = x_9.x_GLF_uniform_float_values[0];
+  m[x_54][x_55] = x_57;
+  let x_59 : i32 = a;
+  let x_60 : mat3x4<f32> = m;
+  let x_78 : i32 = a;
+  let x_79 : i32 = a;
+  indexable = mat4x4<f32>(vec4<f32>(x_60[0u].x, x_60[0u].y, x_60[0u].z, x_60[0u].w), vec4<f32>(x_60[1u].x, x_60[1u].y, x_60[1u].z, x_60[1u].w), vec4<f32>(x_60[2u].x, x_60[2u].y, x_60[2u].z, x_60[2u].w), vec4<f32>(0.0, 0.0, 0.0, 1.0));
+  let x_81 : f32 = indexable[x_78][x_79];
+  let x_83 : f32 = v[x_59];
+  v[x_59] = (x_83 + x_81);
+  let x_87 : f32 = v.y;
+  let x_89 : f32 = x_9.x_GLF_uniform_float_values[1];
+  if ((x_87 == x_89)) {
+    let x_95 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_98 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_101 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_104 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_95), f32(x_98), f32(x_101), f32(x_104));
+  } else {
+    let x_108 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_109 : f32 = f32(x_108);
+    x_GLF_color = vec4<f32>(x_109, x_109, x_109, x_109);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm
new file mode 100644
index 0000000..c0dce99
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm
@@ -0,0 +1,61 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %x "x"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+         %11 = OpTypeFunction %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+  %float_0_5 = OpConstant %float 0.5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+       %main = OpFunction %void None %8
+         %24 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %func_
+               OpStore %_GLF_color %26
+               OpLoopMerge %27 %25 None
+               OpBranchConditional %false %25 %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %v4float None %11
+         %28 = OpLabel
+          %x = OpVariable %_ptr_Function_float Function
+               OpStore %x %float_1
+         %29 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpFOrdLessThan %bool %30 %float_0
+               OpSelectionMerge %32 None
+               OpBranchConditional %31 %33 %32
+         %33 = OpLabel
+               OpStore %x %float_0_5
+               OpBranch %32
+         %32 = OpLabel
+         %34 = OpLoad %float %x
+         %35 = OpCompositeConstruct %v4float %34 %float_0 %float_0 %float_1
+               OpReturnValue %35
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9f97945
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,44 @@
+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);
+
+float4 func_() {
+  float x = 0.0f;
+  x = 1.0f;
+  const float x_30 = gl_FragCoord.x;
+  if ((x_30 < 0.0f)) {
+    x = 0.5f;
+  }
+  return float4(x, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1() {
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  while (true) {
+    const float4 x_26 = func_();
+    x_GLF_color = x_26;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ab5b07e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.msl
@@ -0,0 +1,44 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 func_(thread float4* const tint_symbol_5) {
+  float x = 0.0f;
+  x = 1.0f;
+  float const x_30 = (*(tint_symbol_5)).x;
+  if ((x_30 < 0.0f)) {
+    x = 0.5f;
+  }
+  float const x_34 = x;
+  return float4(x_34, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  while (true) {
+    float4 const x_26 = func_(tint_symbol_7);
+    *(tint_symbol_6) = x_26;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..62468de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 58
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %11 = OpTypeFunction %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+  %float_0_5 = OpConstant %float 0.5
+       %void = OpTypeVoid
+         %31 = OpTypeFunction %void
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v4float None %11
+         %13 = OpLabel
+          %x = OpVariable %_ptr_Function_float Function %16
+               OpStore %x %float_1
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %22 = OpLoad %float %21
+         %24 = OpFOrdLessThan %bool %22 %float_0
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+               OpStore %x %float_0_5
+               OpBranch %26
+         %26 = OpLabel
+         %29 = OpLoad %float %x
+         %30 = OpCompositeConstruct %v4float %29 %float_0 %float_0 %float_1
+               OpReturnValue %30
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %31
+         %34 = OpLabel
+               OpStore %x_GLF_color %35
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %func_
+               OpStore %x_GLF_color %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %false %43 %44
+         %43 = OpLabel
+               OpBranch %42
+         %44 = OpLabel
+               OpBranch %37
+         %42 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %45
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %31
+         %52 = OpLabel
+         %53 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %53
+         %54 = OpFunctionCall %void %main_1
+         %56 = OpLoad %v4float %x_GLF_color
+         %57 = OpCompositeConstruct %main_out %56
+         %55 = OpFunctionCall %void %tint_symbol_3 %57
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7d42f20
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,39 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec4<f32> {
+  var x : f32;
+  x = 1.0;
+  let x_30 : f32 = gl_FragCoord.x;
+  if ((x_30 < 0.0)) {
+    x = 0.5;
+  }
+  let x_34 : f32 = x;
+  return vec4<f32>(x_34, 0.0, 0.0, 1.0);
+}
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  loop {
+    let x_26 : vec4<f32> = func_();
+    x_GLF_color = x_26;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
new file mode 100644
index 0000000..7d42f20
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
@@ -0,0 +1,39 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec4<f32> {
+  var x : f32;
+  x = 1.0;
+  let x_30 : f32 = gl_FragCoord.x;
+  if ((x_30 < 0.0)) {
+    x = 0.5;
+  }
+  let x_34 : f32 = x;
+  return vec4<f32>(x_34, 0.0, 0.0, 1.0);
+}
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  loop {
+    let x_26 : vec4<f32> = func_();
+    x_GLF_color = x_26;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9f97945
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,44 @@
+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);
+
+float4 func_() {
+  float x = 0.0f;
+  x = 1.0f;
+  const float x_30 = gl_FragCoord.x;
+  if ((x_30 < 0.0f)) {
+    x = 0.5f;
+  }
+  return float4(x, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1() {
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  while (true) {
+    const float4 x_26 = func_();
+    x_GLF_color = x_26;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ab5b07e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.msl
@@ -0,0 +1,44 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 func_(thread float4* const tint_symbol_5) {
+  float x = 0.0f;
+  x = 1.0f;
+  float const x_30 = (*(tint_symbol_5)).x;
+  if ((x_30 < 0.0f)) {
+    x = 0.5f;
+  }
+  float const x_34 = x;
+  return float4(x_34, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  while (true) {
+    float4 const x_26 = func_(tint_symbol_7);
+    *(tint_symbol_6) = x_26;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..62468de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 58
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %11 = OpTypeFunction %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+  %float_0_5 = OpConstant %float 0.5
+       %void = OpTypeVoid
+         %31 = OpTypeFunction %void
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v4float None %11
+         %13 = OpLabel
+          %x = OpVariable %_ptr_Function_float Function %16
+               OpStore %x %float_1
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %22 = OpLoad %float %21
+         %24 = OpFOrdLessThan %bool %22 %float_0
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+               OpStore %x %float_0_5
+               OpBranch %26
+         %26 = OpLabel
+         %29 = OpLoad %float %x
+         %30 = OpCompositeConstruct %v4float %29 %float_0 %float_0 %float_1
+               OpReturnValue %30
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %31
+         %34 = OpLabel
+               OpStore %x_GLF_color %35
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %func_
+               OpStore %x_GLF_color %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %false %43 %44
+         %43 = OpLabel
+               OpBranch %42
+         %44 = OpLabel
+               OpBranch %37
+         %42 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %45
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %31
+         %52 = OpLabel
+         %53 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %53
+         %54 = OpFunctionCall %void %main_1
+         %56 = OpLoad %v4float %x_GLF_color
+         %57 = OpCompositeConstruct %main_out %56
+         %55 = OpFunctionCall %void %tint_symbol_3 %57
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7d42f20
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,39 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec4<f32> {
+  var x : f32;
+  x = 1.0;
+  let x_30 : f32 = gl_FragCoord.x;
+  if ((x_30 < 0.0)) {
+    x = 0.5;
+  }
+  let x_34 : f32 = x;
+  return vec4<f32>(x_34, 0.0, 0.0, 1.0);
+}
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  loop {
+    let x_26 : vec4<f32> = func_();
+    x_GLF_color = x_26;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm
new file mode 100644
index 0000000..7abcce9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm
@@ -0,0 +1,93 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %returnRed_ "returnRed("
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+         %11 = OpTypeFunction %v4float
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %20 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+         %26 = OpUndef %v4float
+         %27 = OpUndef %bool
+       %main = OpFunction %void None %8
+         %28 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpFunctionCall %v4float %returnRed_
+               OpStore %_GLF_color %30
+               OpLoopMerge %31 %29 None
+               OpBranchConditional %false %29 %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %returnRed_ = OpFunction %v4float None %11
+         %32 = OpLabel
+         %33 = OpVariable %_ptr_Function_bool Function %false
+         %34 = OpVariable %_ptr_Function_v4float Function
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpPhi %bool %false %32 %27 %37
+               OpLoopMerge %38 %37 None
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %44 = OpLoad %int %43
+         %45 = OpIEqual %bool %44 %int_1
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpStore %33 %true
+               OpStore %34 %20
+               OpBranch %40
+         %46 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpBranchConditional %false %39 %40
+         %40 = OpLabel
+         %48 = OpPhi %v4float %20 %47 %26 %41
+         %49 = OpPhi %bool %true %47 %false %41
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %38 %50
+         %50 = OpLabel
+               OpStore %33 %true
+               OpStore %34 %20
+               OpBranch %38
+         %37 = OpLabel
+               OpBranch %35
+         %38 = OpLabel
+         %51 = OpPhi %v4float %48 %40 %20 %50
+               OpReturnValue %51
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e3f6afa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,76 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float4 returnRed_() {
+  bool x_33 = false;
+  float4 x_34 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_48 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_36_phi = false;
+  float4 x_51_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_36_phi = false;
+  while (true) {
+    float4 x_48_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    bool x_49_phi = false;
+    const bool x_36 = x_36_phi;
+    while (true) {
+      const int x_44 = asint(x_6[0].x);
+      if ((x_44 == 1)) {
+        x_33 = true;
+        x_34 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        x_48_phi = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        x_49_phi = true;
+        break;
+      }
+      {
+        x_48_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_49_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    x_48 = x_48_phi;
+    const bool x_49 = x_49_phi;
+    x_51_phi = x_48;
+    if (x_49) {
+      break;
+    }
+    x_33 = true;
+    x_34 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    x_51_phi = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+    {
+      x_36_phi = false;
+    }
+  }
+  return x_51_phi;
+}
+
+void main_1() {
+  while (true) {
+    const float4 x_30 = returnRed_();
+    x_GLF_color = x_30;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..241c4bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,80 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 returnRed_(constant buf0& x_6) {
+  bool x_33 = false;
+  float4 x_34 = 0.0f;
+  float4 x_48 = 0.0f;
+  bool x_36_phi = false;
+  float4 x_51_phi = 0.0f;
+  x_36_phi = false;
+  while (true) {
+    float4 x_48_phi = 0.0f;
+    bool x_49_phi = false;
+    bool const x_36 = x_36_phi;
+    while (true) {
+      int const x_44 = x_6.zero;
+      if ((x_44 == 1)) {
+        x_33 = true;
+        x_34 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        x_48_phi = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        x_49_phi = true;
+        break;
+      }
+      {
+        x_48_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_49_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    x_48 = x_48_phi;
+    bool const x_49 = x_49_phi;
+    x_51_phi = x_48;
+    if (x_49) {
+      break;
+    }
+    x_33 = true;
+    x_34 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    x_51_phi = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+    {
+      x_36_phi = false;
+    }
+  }
+  float4 const x_51 = x_51_phi;
+  return x_51;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  while (true) {
+    float4 const x_30 = returnRed_(x_6);
+    *(tint_symbol_4) = x_30;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..bc45980
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,175 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 83
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %returnRed_ "returnRed_"
+               OpName %x_33 "x_33"
+               OpName %x_34 "x_34"
+               OpName %x_48 "x_48"
+               OpName %x_36_phi "x_36_phi"
+               OpName %x_51_phi "x_51_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %x_49_phi "x_49_phi"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %v4float
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %59 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %71 = OpTypeFunction %void %main_out
+ %returnRed_ = OpFunction %v4float None %12
+         %14 = OpLabel
+       %x_33 = OpVariable %_ptr_Function_bool Function %19
+       %x_34 = OpVariable %_ptr_Function_v4float Function %9
+       %x_48 = OpVariable %_ptr_Function_v4float Function %9
+   %x_36_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_51_phi = OpVariable %_ptr_Function_v4float Function %9
+   %x_48_phi = OpVariable %_ptr_Function_v4float Function %9
+   %x_49_phi = OpVariable %_ptr_Function_bool Function %19
+               OpStore %x_33 %false
+               OpStore %x_36_phi %false
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %31 = OpLoad %bool %x_36_phi
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %40 = OpLoad %int %39
+         %42 = OpIEqual %bool %40 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %x_33 %true
+               OpStore %x_34 %48
+               OpStore %x_48_phi %48
+               OpStore %x_49_phi %true
+               OpBranch %33
+         %43 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpStore %x_48_phi %49
+               OpStore %x_49_phi %false
+               OpSelectionMerge %50 None
+               OpBranchConditional %false %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %33
+         %50 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+         %53 = OpLoad %v4float %x_48_phi
+               OpStore %x_48 %53
+         %54 = OpLoad %bool %x_49_phi
+         %55 = OpLoad %v4float %x_48
+               OpStore %x_51_phi %55
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+               OpBranch %26
+         %56 = OpLabel
+               OpStore %x_33 %true
+               OpStore %x_34 %48
+               OpStore %x_51_phi %48
+               OpBranch %26
+         %27 = OpLabel
+               OpStore %x_36_phi %false
+               OpBranch %25
+         %26 = OpLabel
+         %58 = OpLoad %v4float %x_51_phi
+               OpReturnValue %58
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %59
+         %62 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpFunctionCall %v4float %returnRed_
+               OpStore %x_GLF_color %67
+               OpSelectionMerge %68 None
+               OpBranchConditional %false %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %64
+         %68 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpBranch %63
+         %64 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %71
+%tint_symbol = OpFunctionParameter %main_out
+         %75 = OpLabel
+         %76 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %76
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %59
+         %78 = OpLabel
+         %79 = OpFunctionCall %void %main_1
+         %81 = OpLoad %v4float %x_GLF_color
+         %82 = OpCompositeConstruct %main_out %81
+         %80 = OpFunctionCall %void %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 34[%34] is not post dominated by the back-edge block 50[%50]
+  %50 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c24e92c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,80 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn returnRed_() -> vec4<f32> {
+  var x_33 : bool = false;
+  var x_34 : vec4<f32>;
+  var x_48 : vec4<f32>;
+  var x_36_phi : bool;
+  var x_51_phi : vec4<f32>;
+  x_36_phi = false;
+  loop {
+    var x_48_phi : vec4<f32>;
+    var x_49_phi : bool;
+    let x_36 : bool = x_36_phi;
+    loop {
+      let x_44 : i32 = x_6.zero;
+      if ((x_44 == 1)) {
+        x_33 = true;
+        x_34 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        x_48_phi = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        x_49_phi = true;
+        break;
+      }
+
+      continuing {
+        x_48_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_49_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    x_48 = x_48_phi;
+    let x_49 : bool = x_49_phi;
+    x_51_phi = x_48;
+    if (x_49) {
+      break;
+    }
+    x_33 = true;
+    x_34 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    x_51_phi = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    break;
+
+    continuing {
+      x_36_phi = false;
+    }
+  }
+  let x_51 : vec4<f32> = x_51_phi;
+  return x_51;
+}
+
+fn main_1() {
+  loop {
+    let x_30 : vec4<f32> = returnRed_();
+    x_GLF_color = x_30;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
new file mode 100644
index 0000000..c24e92c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
@@ -0,0 +1,80 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn returnRed_() -> vec4<f32> {
+  var x_33 : bool = false;
+  var x_34 : vec4<f32>;
+  var x_48 : vec4<f32>;
+  var x_36_phi : bool;
+  var x_51_phi : vec4<f32>;
+  x_36_phi = false;
+  loop {
+    var x_48_phi : vec4<f32>;
+    var x_49_phi : bool;
+    let x_36 : bool = x_36_phi;
+    loop {
+      let x_44 : i32 = x_6.zero;
+      if ((x_44 == 1)) {
+        x_33 = true;
+        x_34 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        x_48_phi = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        x_49_phi = true;
+        break;
+      }
+
+      continuing {
+        x_48_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_49_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    x_48 = x_48_phi;
+    let x_49 : bool = x_49_phi;
+    x_51_phi = x_48;
+    if (x_49) {
+      break;
+    }
+    x_33 = true;
+    x_34 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    x_51_phi = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    break;
+
+    continuing {
+      x_36_phi = false;
+    }
+  }
+  let x_51 : vec4<f32> = x_51_phi;
+  return x_51;
+}
+
+fn main_1() {
+  loop {
+    let x_30 : vec4<f32> = returnRed_();
+    x_GLF_color = x_30;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e3f6afa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,76 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float4 returnRed_() {
+  bool x_33 = false;
+  float4 x_34 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_48 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_36_phi = false;
+  float4 x_51_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_36_phi = false;
+  while (true) {
+    float4 x_48_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    bool x_49_phi = false;
+    const bool x_36 = x_36_phi;
+    while (true) {
+      const int x_44 = asint(x_6[0].x);
+      if ((x_44 == 1)) {
+        x_33 = true;
+        x_34 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        x_48_phi = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        x_49_phi = true;
+        break;
+      }
+      {
+        x_48_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_49_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    x_48 = x_48_phi;
+    const bool x_49 = x_49_phi;
+    x_51_phi = x_48;
+    if (x_49) {
+      break;
+    }
+    x_33 = true;
+    x_34 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    x_51_phi = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+    {
+      x_36_phi = false;
+    }
+  }
+  return x_51_phi;
+}
+
+void main_1() {
+  while (true) {
+    const float4 x_30 = returnRed_();
+    x_GLF_color = x_30;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..241c4bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,80 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 returnRed_(constant buf0& x_6) {
+  bool x_33 = false;
+  float4 x_34 = 0.0f;
+  float4 x_48 = 0.0f;
+  bool x_36_phi = false;
+  float4 x_51_phi = 0.0f;
+  x_36_phi = false;
+  while (true) {
+    float4 x_48_phi = 0.0f;
+    bool x_49_phi = false;
+    bool const x_36 = x_36_phi;
+    while (true) {
+      int const x_44 = x_6.zero;
+      if ((x_44 == 1)) {
+        x_33 = true;
+        x_34 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        x_48_phi = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        x_49_phi = true;
+        break;
+      }
+      {
+        x_48_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_49_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    x_48 = x_48_phi;
+    bool const x_49 = x_49_phi;
+    x_51_phi = x_48;
+    if (x_49) {
+      break;
+    }
+    x_33 = true;
+    x_34 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    x_51_phi = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+    {
+      x_36_phi = false;
+    }
+  }
+  float4 const x_51 = x_51_phi;
+  return x_51;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  while (true) {
+    float4 const x_30 = returnRed_(x_6);
+    *(tint_symbol_4) = x_30;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..bc45980
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,175 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 83
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %returnRed_ "returnRed_"
+               OpName %x_33 "x_33"
+               OpName %x_34 "x_34"
+               OpName %x_48 "x_48"
+               OpName %x_36_phi "x_36_phi"
+               OpName %x_51_phi "x_51_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %x_49_phi "x_49_phi"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %v4float
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %59 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %71 = OpTypeFunction %void %main_out
+ %returnRed_ = OpFunction %v4float None %12
+         %14 = OpLabel
+       %x_33 = OpVariable %_ptr_Function_bool Function %19
+       %x_34 = OpVariable %_ptr_Function_v4float Function %9
+       %x_48 = OpVariable %_ptr_Function_v4float Function %9
+   %x_36_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_51_phi = OpVariable %_ptr_Function_v4float Function %9
+   %x_48_phi = OpVariable %_ptr_Function_v4float Function %9
+   %x_49_phi = OpVariable %_ptr_Function_bool Function %19
+               OpStore %x_33 %false
+               OpStore %x_36_phi %false
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %31 = OpLoad %bool %x_36_phi
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %40 = OpLoad %int %39
+         %42 = OpIEqual %bool %40 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %x_33 %true
+               OpStore %x_34 %48
+               OpStore %x_48_phi %48
+               OpStore %x_49_phi %true
+               OpBranch %33
+         %43 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpStore %x_48_phi %49
+               OpStore %x_49_phi %false
+               OpSelectionMerge %50 None
+               OpBranchConditional %false %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %33
+         %50 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+         %53 = OpLoad %v4float %x_48_phi
+               OpStore %x_48 %53
+         %54 = OpLoad %bool %x_49_phi
+         %55 = OpLoad %v4float %x_48
+               OpStore %x_51_phi %55
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+               OpBranch %26
+         %56 = OpLabel
+               OpStore %x_33 %true
+               OpStore %x_34 %48
+               OpStore %x_51_phi %48
+               OpBranch %26
+         %27 = OpLabel
+               OpStore %x_36_phi %false
+               OpBranch %25
+         %26 = OpLabel
+         %58 = OpLoad %v4float %x_51_phi
+               OpReturnValue %58
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %59
+         %62 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpFunctionCall %v4float %returnRed_
+               OpStore %x_GLF_color %67
+               OpSelectionMerge %68 None
+               OpBranchConditional %false %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %64
+         %68 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpBranch %63
+         %64 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %71
+%tint_symbol = OpFunctionParameter %main_out
+         %75 = OpLabel
+         %76 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %76
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %59
+         %78 = OpLabel
+         %79 = OpFunctionCall %void %main_1
+         %81 = OpLoad %v4float %x_GLF_color
+         %82 = OpCompositeConstruct %main_out %81
+         %80 = OpFunctionCall %void %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 34[%34] is not post dominated by the back-edge block 50[%50]
+  %50 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c24e92c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,80 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn returnRed_() -> vec4<f32> {
+  var x_33 : bool = false;
+  var x_34 : vec4<f32>;
+  var x_48 : vec4<f32>;
+  var x_36_phi : bool;
+  var x_51_phi : vec4<f32>;
+  x_36_phi = false;
+  loop {
+    var x_48_phi : vec4<f32>;
+    var x_49_phi : bool;
+    let x_36 : bool = x_36_phi;
+    loop {
+      let x_44 : i32 = x_6.zero;
+      if ((x_44 == 1)) {
+        x_33 = true;
+        x_34 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        x_48_phi = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        x_49_phi = true;
+        break;
+      }
+
+      continuing {
+        x_48_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_49_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    x_48 = x_48_phi;
+    let x_49 : bool = x_49_phi;
+    x_51_phi = x_48;
+    if (x_49) {
+      break;
+    }
+    x_33 = true;
+    x_34 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    x_51_phi = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    break;
+
+    continuing {
+      x_36_phi = false;
+    }
+  }
+  let x_51 : vec4<f32> = x_51_phi;
+  return x_51;
+}
+
+fn main_1() {
+  loop {
+    let x_30 : vec4<f32> = returnRed_();
+    x_GLF_color = x_30;
+    if (false) {
+    } else {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm
new file mode 100644
index 0000000..c218332
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm
@@ -0,0 +1,84 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+          %9 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+      %int_8 = OpConstant %int 8
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+      %false = OpConstantFalse %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %7
+         %24 = OpLabel
+               OpSelectionMerge %25 None
+               OpBranchConditional %false %26 %27
+         %26 = OpLabel
+         %28 = OpFunctionCall %float %func_
+         %29 = OpCompositeConstruct %v4float %28 %28 %28 %28
+               OpStore %_GLF_color %29
+               OpBranch %25
+         %27 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %float None %9
+         %30 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %i %int_0
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %i
+         %36 = OpSLessThan %bool %35 %int_10
+               OpBranchConditional %36 %37 %32
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpSGreaterThan %bool %38 %int_5
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %42 = OpLoad %int %i
+         %43 = OpIAdd %int %42 %int_1
+               OpStore %i %43
+               OpBranch %40
+         %40 = OpLabel
+         %44 = OpLoad %int %i
+         %45 = OpSGreaterThan %bool %44 %int_8
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpReturnValue %float_0
+         %46 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpIAdd %int %48 %int_1
+               OpStore %i %49
+               OpBranch %31
+         %32 = OpLabel
+               OpReturnValue %float_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..4dcae3d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,41 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  int i = 0;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      if ((i > 5)) {
+        i = (i + 1);
+      }
+      if ((i > 8)) {
+        return 0.0f;
+      }
+    }
+  }
+  return 1.0f;
+}
+
+void main_1() {
+  if (false) {
+    const float x_28 = func_();
+    x_GLF_color = float4(x_28, x_28, x_28, x_28);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5b389f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_() {
+  int i = 0;
+  i = 0;
+  while (true) {
+    int const x_35 = i;
+    if ((x_35 < 10)) {
+    } else {
+      break;
+    }
+    int const x_38 = i;
+    if ((x_38 > 5)) {
+      int const x_42 = i;
+      i = (x_42 + 1);
+    }
+    int const x_44 = i;
+    if ((x_44 > 8)) {
+      return 0.0f;
+    }
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  return 1.0f;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  if (false) {
+    float const x_28 = func_();
+    *(tint_symbol_4) = float4(x_28, x_28, x_28, x_28);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f2a69e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,120 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+          %8 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %14 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+      %int_8 = OpConstant %int 8
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+         %44 = OpTypeFunction %void
+      %false = OpConstantFalse %bool
+         %54 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %8
+         %10 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %14
+               OpStore %i %int_0
+               OpBranch %16
+         %16 = OpLabel
+               OpLoopMerge %17 %18 None
+               OpBranch %19
+         %19 = OpLabel
+         %20 = OpLoad %int %i
+         %22 = OpSLessThan %bool %20 %int_10
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %26
+         %25 = OpLabel
+               OpBranch %24
+         %26 = OpLabel
+               OpBranch %17
+         %24 = OpLabel
+         %27 = OpLoad %int %i
+         %29 = OpSGreaterThan %bool %27 %int_5
+               OpSelectionMerge %30 None
+               OpBranchConditional %29 %31 %30
+         %31 = OpLabel
+         %32 = OpLoad %int %i
+         %34 = OpIAdd %int %32 %int_1
+               OpStore %i %34
+               OpBranch %30
+         %30 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpSGreaterThan %bool %35 %int_8
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+               OpReturnValue %float_0
+         %38 = OpLabel
+               OpBranch %18
+         %18 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpIAdd %int %41 %int_1
+               OpStore %i %42
+               OpBranch %16
+         %17 = OpLabel
+               OpReturnValue %float_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %44
+         %47 = OpLabel
+               OpSelectionMerge %49 None
+               OpBranchConditional %false %50 %51
+         %50 = OpLabel
+         %52 = OpFunctionCall %float %func_
+         %53 = OpCompositeConstruct %v4float %52 %52 %52 %52
+               OpStore %x_GLF_color %53
+               OpBranch %49
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %44
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c5a9a86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var i : i32;
+  i = 0;
+  loop {
+    let x_35 : i32 = i;
+    if ((x_35 < 10)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    if ((x_38 > 5)) {
+      let x_42 : i32 = i;
+      i = (x_42 + 1);
+    }
+    let x_44 : i32 = i;
+    if ((x_44 > 8)) {
+      return 0.0;
+    }
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  return 1.0;
+}
+
+fn main_1() {
+  if (false) {
+    let x_28 : f32 = func_();
+    x_GLF_color = vec4<f32>(x_28, x_28, x_28, x_28);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
new file mode 100644
index 0000000..c5a9a86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
@@ -0,0 +1,49 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var i : i32;
+  i = 0;
+  loop {
+    let x_35 : i32 = i;
+    if ((x_35 < 10)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    if ((x_38 > 5)) {
+      let x_42 : i32 = i;
+      i = (x_42 + 1);
+    }
+    let x_44 : i32 = i;
+    if ((x_44 > 8)) {
+      return 0.0;
+    }
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  return 1.0;
+}
+
+fn main_1() {
+  if (false) {
+    let x_28 : f32 = func_();
+    x_GLF_color = vec4<f32>(x_28, x_28, x_28, x_28);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4dcae3d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,41 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  int i = 0;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      if ((i > 5)) {
+        i = (i + 1);
+      }
+      if ((i > 8)) {
+        return 0.0f;
+      }
+    }
+  }
+  return 1.0f;
+}
+
+void main_1() {
+  if (false) {
+    const float x_28 = func_();
+    x_GLF_color = float4(x_28, x_28, x_28, x_28);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5b389f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_() {
+  int i = 0;
+  i = 0;
+  while (true) {
+    int const x_35 = i;
+    if ((x_35 < 10)) {
+    } else {
+      break;
+    }
+    int const x_38 = i;
+    if ((x_38 > 5)) {
+      int const x_42 = i;
+      i = (x_42 + 1);
+    }
+    int const x_44 = i;
+    if ((x_44 > 8)) {
+      return 0.0f;
+    }
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  return 1.0f;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  if (false) {
+    float const x_28 = func_();
+    *(tint_symbol_4) = float4(x_28, x_28, x_28, x_28);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f2a69e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,120 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+          %8 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %14 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+      %int_8 = OpConstant %int 8
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+         %44 = OpTypeFunction %void
+      %false = OpConstantFalse %bool
+         %54 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %8
+         %10 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %14
+               OpStore %i %int_0
+               OpBranch %16
+         %16 = OpLabel
+               OpLoopMerge %17 %18 None
+               OpBranch %19
+         %19 = OpLabel
+         %20 = OpLoad %int %i
+         %22 = OpSLessThan %bool %20 %int_10
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %26
+         %25 = OpLabel
+               OpBranch %24
+         %26 = OpLabel
+               OpBranch %17
+         %24 = OpLabel
+         %27 = OpLoad %int %i
+         %29 = OpSGreaterThan %bool %27 %int_5
+               OpSelectionMerge %30 None
+               OpBranchConditional %29 %31 %30
+         %31 = OpLabel
+         %32 = OpLoad %int %i
+         %34 = OpIAdd %int %32 %int_1
+               OpStore %i %34
+               OpBranch %30
+         %30 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpSGreaterThan %bool %35 %int_8
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+               OpReturnValue %float_0
+         %38 = OpLabel
+               OpBranch %18
+         %18 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpIAdd %int %41 %int_1
+               OpStore %i %42
+               OpBranch %16
+         %17 = OpLabel
+               OpReturnValue %float_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %44
+         %47 = OpLabel
+               OpSelectionMerge %49 None
+               OpBranchConditional %false %50 %51
+         %50 = OpLabel
+         %52 = OpFunctionCall %float %func_
+         %53 = OpCompositeConstruct %v4float %52 %52 %52 %52
+               OpStore %x_GLF_color %53
+               OpBranch %49
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %44
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c5a9a86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var i : i32;
+  i = 0;
+  loop {
+    let x_35 : i32 = i;
+    if ((x_35 < 10)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    if ((x_38 > 5)) {
+      let x_42 : i32 = i;
+      i = (x_42 + 1);
+    }
+    let x_44 : i32 = i;
+    if ((x_44 > 8)) {
+      return 0.0;
+    }
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  return 1.0;
+}
+
+fn main_1() {
+  if (false) {
+    let x_28 : f32 = func_();
+    x_GLF_color = vec4<f32>(x_28, x_28, x_28, x_28);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm
new file mode 100644
index 0000000..7c4c765
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm
@@ -0,0 +1,76 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %x "x"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %10 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_2 = OpConstant %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+   %float_12 = OpConstant %float 12
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+   %float_13 = OpConstant %float 13
+    %float_1 = OpConstant %float 1
+      %false = OpConstantFalse %bool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %8
+         %27 = OpLabel
+               OpSelectionMerge %28 None
+               OpBranchConditional %false %29 %30
+         %29 = OpLabel
+         %31 = OpFunctionCall %float %func_
+         %32 = OpCompositeConstruct %v4float %31 %31 %31 %31
+               OpStore %_GLF_color %32
+               OpBranch %28
+         %30 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %28
+         %28 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %float None %10
+         %33 = OpLabel
+          %x = OpVariable %_ptr_Function_float Function
+               OpStore %x %float_2
+         %34 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %35 = OpLoad %float %34
+         %36 = OpFOrdEqual %bool %35 %float_12
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdEqual %bool %40 %float_13
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %44 = OpLoad %float %x
+         %45 = OpFAdd %float %44 %float_1
+               OpStore %x %45
+               OpBranch %42
+         %42 = OpLabel
+         %46 = OpLoad %float %x
+               OpReturnValue %46
+         %37 = OpLabel
+               OpReturnValue %float_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e579458
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,45 @@
+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);
+
+float func_() {
+  float x = 0.0f;
+  x = 2.0f;
+  const float x_35 = gl_FragCoord.x;
+  if ((x_35 == 12.0f)) {
+    const float x_40 = gl_FragCoord.y;
+    if ((x_40 == 13.0f)) {
+      x = (x + 1.0f);
+    }
+    return x;
+  }
+  return 1.0f;
+}
+
+void main_1() {
+  if (false) {
+    const float x_31 = func_();
+    x_GLF_color = float4(x_31, x_31, x_31, x_31);
+  } else {
+    x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..019020d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(thread float4* const tint_symbol_5) {
+  float x = 0.0f;
+  x = 2.0f;
+  float const x_35 = (*(tint_symbol_5)).x;
+  if ((x_35 == 12.0f)) {
+    float const x_40 = (*(tint_symbol_5)).y;
+    if ((x_40 == 13.0f)) {
+      float const x_44 = x;
+      x = (x_44 + 1.0f);
+    }
+    float const x_46 = x;
+    return x_46;
+  }
+  return 1.0f;
+}
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  if (false) {
+    float const x_31 = func_(tint_symbol_6);
+    *(tint_symbol_7) = float4(x_31, x_31, x_31, x_31);
+  } else {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..eaaf448
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %11 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpConstantNull %float
+    %float_2 = OpConstant %float 2
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_12 = OpConstant %float 12
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+   %float_13 = OpConstant %float 13
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+         %39 = OpTypeFunction %void
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+         %50 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %51 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %11
+         %13 = OpLabel
+          %x = OpVariable %_ptr_Function_float Function %16
+               OpStore %x %float_2
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %22 = OpLoad %float %21
+         %24 = OpFOrdEqual %bool %22 %float_12
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+         %29 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpFOrdEqual %bool %30 %float_13
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+         %35 = OpLoad %float %x
+         %37 = OpFAdd %float %35 %float_1
+               OpStore %x %37
+               OpBranch %33
+         %33 = OpLabel
+         %38 = OpLoad %float %x
+               OpReturnValue %38
+         %26 = OpLabel
+               OpReturnValue %float_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %39
+         %42 = OpLabel
+               OpSelectionMerge %44 None
+               OpBranchConditional %false %45 %46
+         %45 = OpLabel
+         %47 = OpFunctionCall %float %func_
+         %48 = OpCompositeConstruct %v4float %47 %47 %47 %47
+               OpStore %x_GLF_color %48
+               OpBranch %44
+         %46 = OpLabel
+               OpStore %x_GLF_color %50
+               OpBranch %44
+         %44 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %51
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %55 = OpLabel
+         %56 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %39
+         %58 = OpLabel
+         %59 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %59
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_3 %63
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..cf1481a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,41 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var x : f32;
+  x = 2.0;
+  let x_35 : f32 = gl_FragCoord.x;
+  if ((x_35 == 12.0)) {
+    let x_40 : f32 = gl_FragCoord.y;
+    if ((x_40 == 13.0)) {
+      let x_44 : f32 = x;
+      x = (x_44 + 1.0);
+    }
+    let x_46 : f32 = x;
+    return x_46;
+  }
+  return 1.0;
+}
+
+fn main_1() {
+  if (false) {
+    let x_31 : f32 = func_();
+    x_GLF_color = vec4<f32>(x_31, x_31, x_31, x_31);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
new file mode 100644
index 0000000..cf1481a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
@@ -0,0 +1,41 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var x : f32;
+  x = 2.0;
+  let x_35 : f32 = gl_FragCoord.x;
+  if ((x_35 == 12.0)) {
+    let x_40 : f32 = gl_FragCoord.y;
+    if ((x_40 == 13.0)) {
+      let x_44 : f32 = x;
+      x = (x_44 + 1.0);
+    }
+    let x_46 : f32 = x;
+    return x_46;
+  }
+  return 1.0;
+}
+
+fn main_1() {
+  if (false) {
+    let x_31 : f32 = func_();
+    x_GLF_color = vec4<f32>(x_31, x_31, x_31, x_31);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e579458
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,45 @@
+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);
+
+float func_() {
+  float x = 0.0f;
+  x = 2.0f;
+  const float x_35 = gl_FragCoord.x;
+  if ((x_35 == 12.0f)) {
+    const float x_40 = gl_FragCoord.y;
+    if ((x_40 == 13.0f)) {
+      x = (x + 1.0f);
+    }
+    return x;
+  }
+  return 1.0f;
+}
+
+void main_1() {
+  if (false) {
+    const float x_31 = func_();
+    x_GLF_color = float4(x_31, x_31, x_31, x_31);
+  } else {
+    x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..019020d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(thread float4* const tint_symbol_5) {
+  float x = 0.0f;
+  x = 2.0f;
+  float const x_35 = (*(tint_symbol_5)).x;
+  if ((x_35 == 12.0f)) {
+    float const x_40 = (*(tint_symbol_5)).y;
+    if ((x_40 == 13.0f)) {
+      float const x_44 = x;
+      x = (x_44 + 1.0f);
+    }
+    float const x_46 = x;
+    return x_46;
+  }
+  return 1.0f;
+}
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  if (false) {
+    float const x_31 = func_(tint_symbol_6);
+    *(tint_symbol_7) = float4(x_31, x_31, x_31, x_31);
+  } else {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..eaaf448
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %11 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpConstantNull %float
+    %float_2 = OpConstant %float 2
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_12 = OpConstant %float 12
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+   %float_13 = OpConstant %float 13
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+         %39 = OpTypeFunction %void
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+         %50 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %51 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %11
+         %13 = OpLabel
+          %x = OpVariable %_ptr_Function_float Function %16
+               OpStore %x %float_2
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %22 = OpLoad %float %21
+         %24 = OpFOrdEqual %bool %22 %float_12
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+         %29 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpFOrdEqual %bool %30 %float_13
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+         %35 = OpLoad %float %x
+         %37 = OpFAdd %float %35 %float_1
+               OpStore %x %37
+               OpBranch %33
+         %33 = OpLabel
+         %38 = OpLoad %float %x
+               OpReturnValue %38
+         %26 = OpLabel
+               OpReturnValue %float_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %39
+         %42 = OpLabel
+               OpSelectionMerge %44 None
+               OpBranchConditional %false %45 %46
+         %45 = OpLabel
+         %47 = OpFunctionCall %float %func_
+         %48 = OpCompositeConstruct %v4float %47 %47 %47 %47
+               OpStore %x_GLF_color %48
+               OpBranch %44
+         %46 = OpLabel
+               OpStore %x_GLF_color %50
+               OpBranch %44
+         %44 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %51
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %55 = OpLabel
+         %56 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %39
+         %58 = OpLabel
+         %59 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %59
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_3 %63
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..cf1481a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,41 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var x : f32;
+  x = 2.0;
+  let x_35 : f32 = gl_FragCoord.x;
+  if ((x_35 == 12.0)) {
+    let x_40 : f32 = gl_FragCoord.y;
+    if ((x_40 == 13.0)) {
+      let x_44 : f32 = x;
+      x = (x_44 + 1.0);
+    }
+    let x_46 : f32 = x;
+    return x_46;
+  }
+  return 1.0;
+}
+
+fn main_1() {
+  if (false) {
+    let x_31 : f32 = func_();
+    x_GLF_color = vec4<f32>(x_31, x_31, x_31, x_31);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm
new file mode 100644
index 0000000..fa863d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm
@@ -0,0 +1,152 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %15
+         %38 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+        %arr = OpVariable %_ptr_Function__arr_int_uint_2 Function
+          %a = OpVariable %_ptr_Function_int Function
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %40 = OpLoad %int %39
+               OpStore %i %40
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %47 = OpLoad %int %46
+         %48 = OpSLessThan %bool %45 %47
+               OpBranchConditional %48 %49 %42
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Function_int %arr %50
+               OpStore %53 %52
+               OpBranch %43
+         %43 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %i %55
+               OpBranch %41
+         %42 = OpLabel
+               OpStore %a %int_n1
+         %56 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpFOrdLessThan %bool %57 %59
+         %61 = OpLogicalNot %bool %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpLoad %int %a
+         %65 = OpIAdd %int %64 %int_1
+               OpStore %a %65
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Function_int %arr %65
+               OpStore %68 %67
+               OpBranch %62
+         %62 = OpLabel
+         %69 = OpLoad %int %a
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %a %70
+         %71 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Function_int %arr %70
+               OpStore %73 %72
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_int %arr %75
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpIEqual %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpLoad %int %a
+         %85 = OpConvertSToF %float %84
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %87
+         %89 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %90
+         %92 = OpLoad %int %a
+         %93 = OpConvertSToF %float %92
+         %94 = OpCompositeConstruct %v4float %85 %88 %91 %93
+               OpStore %_GLF_color %94
+               OpBranch %81
+         %83 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %96 = OpLoad %int %95
+         %97 = OpConvertSToF %float %96
+         %98 = OpCompositeConstruct %v4float %97 %97 %97 %97
+               OpStore %_GLF_color %98
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..489e5a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,83 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int arr[2] = (int[2])0;
+  int a = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  i = x_40;
+  while (true) {
+    const int x_45 = i;
+    const int x_47 = asint(x_7[2].x);
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    const int x_50 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    arr[x_50] = x_52;
+    {
+      i = (i + 1);
+    }
+  }
+  a = -1;
+  const float x_57 = gl_FragCoord.y;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_59 = asfloat(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if (!((x_57 < x_59))) {
+    const int x_65 = (a + 1);
+    a = x_65;
+    const int x_67 = asint(x_7[1].x);
+    arr[x_65] = x_67;
+  }
+  const int x_70 = (a + 1);
+  a = x_70;
+  const int x_72 = asint(x_7[2].x);
+  arr[x_70] = x_72;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_75 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_77 = arr[x_75];
+  const int x_79 = asint(x_7[1].x);
+  if ((x_77 == x_79)) {
+    const int x_84 = a;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_87 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_90 = asint(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_84), float(x_87), float(x_90), float(a));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_96 = asint(x_7[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_97 = float(x_96);
+    x_GLF_color = float4(x_97, x_97, x_97, x_97);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..26ba969
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.msl
@@ -0,0 +1,96 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_11, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  tint_array_wrapper_2 arr = {};
+  int a = 0;
+  int const x_40 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  i = x_40;
+  while (true) {
+    int const x_45 = i;
+    int const x_47 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    int const x_52 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    arr.arr[x_50] = x_52;
+    {
+      int const x_54 = i;
+      i = (x_54 + 1);
+    }
+  }
+  a = -1;
+  float const x_57 = (*(tint_symbol_5)).y;
+  float const x_59 = x_11.x_GLF_uniform_float_values.arr[0].el;
+  if (!((x_57 < x_59))) {
+    int const x_64 = a;
+    int const x_65 = (x_64 + 1);
+    a = x_65;
+    int const x_67 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    arr.arr[x_65] = x_67;
+  }
+  int const x_69 = a;
+  int const x_70 = (x_69 + 1);
+  a = x_70;
+  int const x_72 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  arr.arr[x_70] = x_72;
+  int const x_75 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_77 = arr.arr[x_75];
+  int const x_79 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_77 == x_79)) {
+    int const x_84 = a;
+    int const x_87 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_90 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_92 = a;
+    *(tint_symbol_6) = float4(float(x_84), float(x_87), float(x_90), float(x_92));
+  } else {
+    int const x_96 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_97 = float(x_96);
+    *(tint_symbol_6) = float4(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_11, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e953d6b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,197 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 120
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %34 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+        %107 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %29
+        %arr = OpVariable %_ptr_Function__arr_int_uint_2 Function %34
+          %a = OpVariable %_ptr_Function_int Function %29
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %40 = OpLoad %int %39
+               OpStore %i %40
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %47 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpSLessThan %bool %45 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %49 %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %42
+         %51 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Function_int %arr %54
+               OpStore %57 %56
+               OpBranch %43
+         %43 = OpLabel
+         %58 = OpLoad %int %i
+         %60 = OpIAdd %int %58 %int_1
+               OpStore %i %60
+               OpBranch %41
+         %42 = OpLabel
+               OpStore %a %int_n1
+         %63 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %64 = OpLoad %float %63
+         %66 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %67 = OpLoad %float %66
+         %69 = OpFOrdLessThan %bool %64 %67
+         %68 = OpLogicalNot %bool %69
+               OpSelectionMerge %70 None
+               OpBranchConditional %68 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %int %a
+         %73 = OpIAdd %int %72 %int_1
+               OpStore %a %73
+         %74 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_int %arr %73
+               OpStore %76 %75
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %int %a
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %a %78
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Function_int %arr %78
+               OpStore %81 %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Function_int %arr %83
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpIEqual %bool %85 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+         %92 = OpLoad %int %a
+         %93 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %96 = OpLoad %int %95
+         %97 = OpLoad %int %a
+         %98 = OpConvertSToF %float %92
+         %99 = OpConvertSToF %float %94
+        %100 = OpConvertSToF %float %96
+        %101 = OpConvertSToF %float %97
+        %102 = OpCompositeConstruct %v4float %98 %99 %100 %101
+               OpStore %x_GLF_color %102
+               OpBranch %89
+         %91 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+        %104 = OpLoad %int %103
+        %105 = OpConvertSToF %float %104
+        %106 = OpCompositeConstruct %v4float %105 %105 %105 %105
+               OpStore %x_GLF_color %106
+               OpBranch %89
+         %89 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %107
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %111 = OpLabel
+        %112 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %112
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %114 = OpLabel
+        %115 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %115
+        %116 = OpFunctionCall %void %main_1
+        %118 = OpLoad %v4float %x_GLF_color
+        %119 = OpCompositeConstruct %main_out %118
+        %117 = OpFunctionCall %void %tint_symbol_3 %119
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..afe4b0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,87 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var arr : array<i32, 2>;
+  var a : i32;
+  let x_40 : i32 = x_7.x_GLF_uniform_int_values[0];
+  i = x_40;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : i32 = x_7.x_GLF_uniform_int_values[2];
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_7.x_GLF_uniform_int_values[0];
+    arr[x_50] = x_52;
+
+    continuing {
+      let x_54 : i32 = i;
+      i = (x_54 + 1);
+    }
+  }
+  a = -1;
+  let x_57 : f32 = gl_FragCoord.y;
+  let x_59 : f32 = x_11.x_GLF_uniform_float_values[0];
+  if (!((x_57 < x_59))) {
+    let x_64 : i32 = a;
+    let x_65 : i32 = (x_64 + 1);
+    a = x_65;
+    let x_67 : i32 = x_7.x_GLF_uniform_int_values[1];
+    arr[x_65] = x_67;
+  }
+  let x_69 : i32 = a;
+  let x_70 : i32 = (x_69 + 1);
+  a = x_70;
+  let x_72 : i32 = x_7.x_GLF_uniform_int_values[2];
+  arr[x_70] = x_72;
+  let x_75 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = arr[x_75];
+  let x_79 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_77 == x_79)) {
+    let x_84 : i32 = a;
+    let x_87 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_90 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_92 : i32 = a;
+    x_GLF_color = vec4<f32>(f32(x_84), f32(x_87), f32(x_90), f32(x_92));
+  } else {
+    let x_96 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_97 : f32 = f32(x_96);
+    x_GLF_color = vec4<f32>(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
new file mode 100644
index 0000000..afe4b0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
@@ -0,0 +1,87 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var arr : array<i32, 2>;
+  var a : i32;
+  let x_40 : i32 = x_7.x_GLF_uniform_int_values[0];
+  i = x_40;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : i32 = x_7.x_GLF_uniform_int_values[2];
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_7.x_GLF_uniform_int_values[0];
+    arr[x_50] = x_52;
+
+    continuing {
+      let x_54 : i32 = i;
+      i = (x_54 + 1);
+    }
+  }
+  a = -1;
+  let x_57 : f32 = gl_FragCoord.y;
+  let x_59 : f32 = x_11.x_GLF_uniform_float_values[0];
+  if (!((x_57 < x_59))) {
+    let x_64 : i32 = a;
+    let x_65 : i32 = (x_64 + 1);
+    a = x_65;
+    let x_67 : i32 = x_7.x_GLF_uniform_int_values[1];
+    arr[x_65] = x_67;
+  }
+  let x_69 : i32 = a;
+  let x_70 : i32 = (x_69 + 1);
+  a = x_70;
+  let x_72 : i32 = x_7.x_GLF_uniform_int_values[2];
+  arr[x_70] = x_72;
+  let x_75 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = arr[x_75];
+  let x_79 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_77 == x_79)) {
+    let x_84 : i32 = a;
+    let x_87 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_90 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_92 : i32 = a;
+    x_GLF_color = vec4<f32>(f32(x_84), f32(x_87), f32(x_90), f32(x_92));
+  } else {
+    let x_96 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_97 : f32 = f32(x_96);
+    x_GLF_color = vec4<f32>(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..489e5a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,83 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int arr[2] = (int[2])0;
+  int a = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  i = x_40;
+  while (true) {
+    const int x_45 = i;
+    const int x_47 = asint(x_7[2].x);
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    const int x_50 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    arr[x_50] = x_52;
+    {
+      i = (i + 1);
+    }
+  }
+  a = -1;
+  const float x_57 = gl_FragCoord.y;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_59 = asfloat(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if (!((x_57 < x_59))) {
+    const int x_65 = (a + 1);
+    a = x_65;
+    const int x_67 = asint(x_7[1].x);
+    arr[x_65] = x_67;
+  }
+  const int x_70 = (a + 1);
+  a = x_70;
+  const int x_72 = asint(x_7[2].x);
+  arr[x_70] = x_72;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_75 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_77 = arr[x_75];
+  const int x_79 = asint(x_7[1].x);
+  if ((x_77 == x_79)) {
+    const int x_84 = a;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_87 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_90 = asint(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_84), float(x_87), float(x_90), float(a));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_96 = asint(x_7[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_97 = float(x_96);
+    x_GLF_color = float4(x_97, x_97, x_97, x_97);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..26ba969
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.msl
@@ -0,0 +1,96 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_11, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  tint_array_wrapper_2 arr = {};
+  int a = 0;
+  int const x_40 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  i = x_40;
+  while (true) {
+    int const x_45 = i;
+    int const x_47 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    int const x_50 = i;
+    int const x_52 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    arr.arr[x_50] = x_52;
+    {
+      int const x_54 = i;
+      i = (x_54 + 1);
+    }
+  }
+  a = -1;
+  float const x_57 = (*(tint_symbol_5)).y;
+  float const x_59 = x_11.x_GLF_uniform_float_values.arr[0].el;
+  if (!((x_57 < x_59))) {
+    int const x_64 = a;
+    int const x_65 = (x_64 + 1);
+    a = x_65;
+    int const x_67 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    arr.arr[x_65] = x_67;
+  }
+  int const x_69 = a;
+  int const x_70 = (x_69 + 1);
+  a = x_70;
+  int const x_72 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  arr.arr[x_70] = x_72;
+  int const x_75 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_77 = arr.arr[x_75];
+  int const x_79 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_77 == x_79)) {
+    int const x_84 = a;
+    int const x_87 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_90 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_92 = a;
+    *(tint_symbol_6) = float4(float(x_84), float(x_87), float(x_90), float(x_92));
+  } else {
+    int const x_96 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_97 = float(x_96);
+    *(tint_symbol_6) = float4(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_11, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e953d6b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,197 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 120
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %34 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+        %107 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %29
+        %arr = OpVariable %_ptr_Function__arr_int_uint_2 Function %34
+          %a = OpVariable %_ptr_Function_int Function %29
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %40 = OpLoad %int %39
+               OpStore %i %40
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %47 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpSLessThan %bool %45 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %49 %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %42
+         %51 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Function_int %arr %54
+               OpStore %57 %56
+               OpBranch %43
+         %43 = OpLabel
+         %58 = OpLoad %int %i
+         %60 = OpIAdd %int %58 %int_1
+               OpStore %i %60
+               OpBranch %41
+         %42 = OpLabel
+               OpStore %a %int_n1
+         %63 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %64 = OpLoad %float %63
+         %66 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %67 = OpLoad %float %66
+         %69 = OpFOrdLessThan %bool %64 %67
+         %68 = OpLogicalNot %bool %69
+               OpSelectionMerge %70 None
+               OpBranchConditional %68 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %int %a
+         %73 = OpIAdd %int %72 %int_1
+               OpStore %a %73
+         %74 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_int %arr %73
+               OpStore %76 %75
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %int %a
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %a %78
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Function_int %arr %78
+               OpStore %81 %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Function_int %arr %83
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpIEqual %bool %85 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+         %92 = OpLoad %int %a
+         %93 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %96 = OpLoad %int %95
+         %97 = OpLoad %int %a
+         %98 = OpConvertSToF %float %92
+         %99 = OpConvertSToF %float %94
+        %100 = OpConvertSToF %float %96
+        %101 = OpConvertSToF %float %97
+        %102 = OpCompositeConstruct %v4float %98 %99 %100 %101
+               OpStore %x_GLF_color %102
+               OpBranch %89
+         %91 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+        %104 = OpLoad %int %103
+        %105 = OpConvertSToF %float %104
+        %106 = OpCompositeConstruct %v4float %105 %105 %105 %105
+               OpStore %x_GLF_color %106
+               OpBranch %89
+         %89 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %107
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %111 = OpLabel
+        %112 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %112
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %114 = OpLabel
+        %115 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %115
+        %116 = OpFunctionCall %void %main_1
+        %118 = OpLoad %v4float %x_GLF_color
+        %119 = OpCompositeConstruct %main_out %118
+        %117 = OpFunctionCall %void %tint_symbol_3 %119
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..afe4b0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,87 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var arr : array<i32, 2>;
+  var a : i32;
+  let x_40 : i32 = x_7.x_GLF_uniform_int_values[0];
+  i = x_40;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : i32 = x_7.x_GLF_uniform_int_values[2];
+    if ((x_45 < x_47)) {
+    } else {
+      break;
+    }
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_7.x_GLF_uniform_int_values[0];
+    arr[x_50] = x_52;
+
+    continuing {
+      let x_54 : i32 = i;
+      i = (x_54 + 1);
+    }
+  }
+  a = -1;
+  let x_57 : f32 = gl_FragCoord.y;
+  let x_59 : f32 = x_11.x_GLF_uniform_float_values[0];
+  if (!((x_57 < x_59))) {
+    let x_64 : i32 = a;
+    let x_65 : i32 = (x_64 + 1);
+    a = x_65;
+    let x_67 : i32 = x_7.x_GLF_uniform_int_values[1];
+    arr[x_65] = x_67;
+  }
+  let x_69 : i32 = a;
+  let x_70 : i32 = (x_69 + 1);
+  a = x_70;
+  let x_72 : i32 = x_7.x_GLF_uniform_int_values[2];
+  arr[x_70] = x_72;
+  let x_75 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = arr[x_75];
+  let x_79 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_77 == x_79)) {
+    let x_84 : i32 = a;
+    let x_87 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_90 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_92 : i32 = a;
+    x_GLF_color = vec4<f32>(f32(x_84), f32(x_87), f32(x_90), f32(x_92));
+  } else {
+    let x_96 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_97 : f32 = f32(x_96);
+    x_GLF_color = vec4<f32>(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm
new file mode 100644
index 0000000..cb67953
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm
@@ -0,0 +1,122 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %b "b"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_2 = OpConstant %int 2
+       %main = OpFunction %void None %14
+         %32 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_float Function
+         %33 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %34 = OpLoad %int %33
+               OpStore %a %34
+         %35 = OpLoad %int %a
+         %36 = OpIAdd %int %35 %int_1
+               OpStore %a %36
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpSLessThan %bool %43 %45
+               OpBranchConditional %46 %47 %40
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpConvertSToF %float %48
+         %50 = OpLoad %int %a
+         %51 = OpSNegate %int %50
+         %52 = OpExtInst %float %1 Ldexp %49 %51
+               OpStore %b %52
+               OpBranch %41
+         %41 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %i %54
+               OpBranch %39
+         %40 = OpLabel
+         %55 = OpLoad %float %b
+         %56 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpFOrdEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpCompositeConstruct %v4float %64 %67 %70 %73
+               OpStore %_GLF_color %74
+               OpBranch %59
+         %61 = OpLabel
+         %75 = OpLoad %float %b
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %_GLF_color %76
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..18402b4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,59 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  float b = 0.0f;
+  const int x_34 = asint(x_6[1].x);
+  a = x_34;
+  a = (a + 1);
+  const int x_38 = asint(x_6[1].x);
+  i = x_38;
+  while (true) {
+    const int x_43 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    b = ldexp(float(i), -(a));
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_55 = b;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_57 = asfloat(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_55 == x_57)) {
+    const int x_63 = asint(x_6[2].x);
+    const int x_66 = asint(x_6[1].x);
+    const int x_69 = asint(x_6[1].x);
+    const int x_72 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_63), float(x_66), float(x_69), float(x_72));
+  } else {
+    const float x_75 = b;
+    x_GLF_color = float4(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bcdae40
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  float b = 0.0f;
+  int const x_34 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_34;
+  int const x_35 = a;
+  a = (x_35 + 1);
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_38;
+  while (true) {
+    int const x_43 = i;
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    int const x_48 = i;
+    int const x_50 = a;
+    b = ldexp(float(x_48), -(x_50));
+    {
+      int const x_53 = i;
+      i = (x_53 + 1);
+    }
+  }
+  float const x_55 = b;
+  float const x_57 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_55 == x_57)) {
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_66 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_69 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_72 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_63), float(x_66), float(x_69), float(x_72));
+  } else {
+    float const x_75 = b;
+    *(tint_symbol_4) = float4(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..895c6ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,163 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 97
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %85 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %26
+          %i = OpVariable %_ptr_Function_int Function %26
+          %b = OpVariable %_ptr_Function_float Function %30
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %35 = OpLoad %int %34
+               OpStore %a %35
+         %36 = OpLoad %int %a
+         %37 = OpIAdd %int %36 %int_1
+               OpStore %a %37
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %39 = OpLoad %int %38
+               OpStore %i %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpSLessThan %bool %44 %47
+               OpSelectionMerge %50 None
+               OpBranchConditional %48 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %41
+         %50 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpLoad %int %a
+         %57 = OpConvertSToF %float %53
+         %58 = OpSNegate %int %54
+         %55 = OpExtInst %float %56 Ldexp %57 %58
+               OpStore %b %55
+               OpBranch %42
+         %42 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %i %60
+               OpBranch %40
+         %41 = OpLabel
+         %61 = OpLoad %float %b
+         %63 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpFOrdEqual %bool %61 %64
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %71
+         %79 = OpConvertSToF %float %73
+         %80 = OpConvertSToF %float %75
+         %81 = OpConvertSToF %float %77
+         %82 = OpCompositeConstruct %v4float %78 %79 %80 %81
+               OpStore %x_GLF_color %82
+               OpBranch %66
+         %68 = OpLabel
+         %83 = OpLoad %float %b
+         %84 = OpCompositeConstruct %v4float %83 %83 %83 %83
+               OpStore %x_GLF_color %84
+               OpBranch %66
+         %66 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %85
+%tint_symbol = OpFunctionParameter %main_out
+         %89 = OpLabel
+         %90 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %90
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %92 = OpLabel
+         %93 = OpFunctionCall %void %main_1
+         %95 = OpLoad %v4float %x_GLF_color
+         %96 = OpCompositeConstruct %main_out %95
+         %94 = OpFunctionCall %void %tint_symbol_2 %96
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..bb8ec9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var b : f32;
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_34;
+  let x_35 : i32 = a;
+  a = (x_35 + 1);
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_48 : i32 = i;
+    let x_50 : i32 = a;
+    b = ldexp(f32(x_48), -(x_50));
+
+    continuing {
+      let x_53 : i32 = i;
+      i = (x_53 + 1);
+    }
+  }
+  let x_55 : f32 = b;
+  let x_57 : f32 = x_10.x_GLF_uniform_float_values[0];
+  if ((x_55 == x_57)) {
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_72 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_63), f32(x_66), f32(x_69), f32(x_72));
+  } else {
+    let x_75 : f32 = b;
+    x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
new file mode 100644
index 0000000..bb8ec9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var b : f32;
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_34;
+  let x_35 : i32 = a;
+  a = (x_35 + 1);
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_48 : i32 = i;
+    let x_50 : i32 = a;
+    b = ldexp(f32(x_48), -(x_50));
+
+    continuing {
+      let x_53 : i32 = i;
+      i = (x_53 + 1);
+    }
+  }
+  let x_55 : f32 = b;
+  let x_57 : f32 = x_10.x_GLF_uniform_float_values[0];
+  if ((x_55 == x_57)) {
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_72 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_63), f32(x_66), f32(x_69), f32(x_72));
+  } else {
+    let x_75 : f32 = b;
+    x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..18402b4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,59 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  float b = 0.0f;
+  const int x_34 = asint(x_6[1].x);
+  a = x_34;
+  a = (a + 1);
+  const int x_38 = asint(x_6[1].x);
+  i = x_38;
+  while (true) {
+    const int x_43 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    b = ldexp(float(i), -(a));
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_55 = b;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_57 = asfloat(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_55 == x_57)) {
+    const int x_63 = asint(x_6[2].x);
+    const int x_66 = asint(x_6[1].x);
+    const int x_69 = asint(x_6[1].x);
+    const int x_72 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_63), float(x_66), float(x_69), float(x_72));
+  } else {
+    const float x_75 = b;
+    x_GLF_color = float4(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..bcdae40
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  float b = 0.0f;
+  int const x_34 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_34;
+  int const x_35 = a;
+  a = (x_35 + 1);
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_38;
+  while (true) {
+    int const x_43 = i;
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    int const x_48 = i;
+    int const x_50 = a;
+    b = ldexp(float(x_48), -(x_50));
+    {
+      int const x_53 = i;
+      i = (x_53 + 1);
+    }
+  }
+  float const x_55 = b;
+  float const x_57 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_55 == x_57)) {
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_66 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_69 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_72 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_63), float(x_66), float(x_69), float(x_72));
+  } else {
+    float const x_75 = b;
+    *(tint_symbol_4) = float4(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..895c6ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,163 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 97
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %85 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %26
+          %i = OpVariable %_ptr_Function_int Function %26
+          %b = OpVariable %_ptr_Function_float Function %30
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %35 = OpLoad %int %34
+               OpStore %a %35
+         %36 = OpLoad %int %a
+         %37 = OpIAdd %int %36 %int_1
+               OpStore %a %37
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %39 = OpLoad %int %38
+               OpStore %i %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpSLessThan %bool %44 %47
+               OpSelectionMerge %50 None
+               OpBranchConditional %48 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %41
+         %50 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpLoad %int %a
+         %57 = OpConvertSToF %float %53
+         %58 = OpSNegate %int %54
+         %55 = OpExtInst %float %56 Ldexp %57 %58
+               OpStore %b %55
+               OpBranch %42
+         %42 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %i %60
+               OpBranch %40
+         %41 = OpLabel
+         %61 = OpLoad %float %b
+         %63 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpFOrdEqual %bool %61 %64
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %71
+         %79 = OpConvertSToF %float %73
+         %80 = OpConvertSToF %float %75
+         %81 = OpConvertSToF %float %77
+         %82 = OpCompositeConstruct %v4float %78 %79 %80 %81
+               OpStore %x_GLF_color %82
+               OpBranch %66
+         %68 = OpLabel
+         %83 = OpLoad %float %b
+         %84 = OpCompositeConstruct %v4float %83 %83 %83 %83
+               OpStore %x_GLF_color %84
+               OpBranch %66
+         %66 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %85
+%tint_symbol = OpFunctionParameter %main_out
+         %89 = OpLabel
+         %90 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %90
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %92 = OpLabel
+         %93 = OpFunctionCall %void %main_1
+         %95 = OpLoad %v4float %x_GLF_color
+         %96 = OpCompositeConstruct %main_out %95
+         %94 = OpFunctionCall %void %tint_symbol_2 %96
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..bb8ec9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var b : f32;
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_34;
+  let x_35 : i32 = a;
+  a = (x_35 + 1);
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_48 : i32 = i;
+    let x_50 : i32 = a;
+    b = ldexp(f32(x_48), -(x_50));
+
+    continuing {
+      let x_53 : i32 = i;
+      i = (x_53 + 1);
+    }
+  }
+  let x_55 : f32 = b;
+  let x_57 : f32 = x_10.x_GLF_uniform_float_values[0];
+  if ((x_55 == x_57)) {
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_72 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_63), f32(x_66), f32(x_69), f32(x_72));
+  } else {
+    let x_75 : f32 = b;
+    x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm
new file mode 100644
index 0000000..e6136d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm
@@ -0,0 +1,154 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_f1_ "func(f1;"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+        %int = OpTypeInt 32 1
+         %18 = OpTypeFunction %int %_ptr_Function_float
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+%float_0_699999988 = OpConstant %float 0.699999988
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %33 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function
+               OpStore %param %float_0_699999988
+         %34 = OpFunctionCall %int %func_f1_ %param
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %36 = OpLoad %int %35
+         %37 = OpIEqual %bool %34 %36
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpCompositeConstruct %v4float %43 %46 %49 %52
+               OpStore %_GLF_color %53
+               OpBranch %38
+         %40 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpCompositeConstruct %v4float %56 %56 %56 %56
+               OpStore %_GLF_color %57
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_f1_ = OpFunction %int None %18
+          %f = OpFunctionParameter %_ptr_Function_float
+         %58 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %60 = OpLoad %int %59
+               OpStore %a %60
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %62 = OpLoad %int %61
+               OpStore %b %62
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %64 = OpLoad %int %63
+               OpStore %i %64
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpLoad %int %i
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %71 = OpLoad %int %70
+         %72 = OpSLessThan %bool %69 %71
+               OpBranchConditional %72 %73 %66
+         %73 = OpLabel
+         %74 = OpLoad %int %a
+         %75 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %76 = OpLoad %int %75
+         %77 = OpSGreaterThan %bool %74 %76
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+               OpBranch %66
+         %78 = OpLabel
+         %80 = OpLoad %float %f
+         %81 = OpConvertFToS %int %80
+         %82 = OpISub %int %81 %int_1
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpISub %int %82 %84
+         %86 = OpLoad %int %i
+         %87 = OpIAdd %int %85 %86
+               OpStore %a %87
+         %88 = OpLoad %int %b
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %b %89
+               OpBranch %67
+         %67 = OpLabel
+         %90 = OpLoad %int %i
+         %91 = OpIAdd %int %90 %int_1
+               OpStore %i %91
+               OpBranch %65
+         %66 = OpLabel
+         %92 = OpLoad %int %b
+         %93 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpIEqual %bool %92 %94
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %98
+         %97 = OpLabel
+         %99 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %100 = OpLoad %int %99
+               OpReturnValue %100
+         %98 = OpLabel
+        %101 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %102 = OpLoad %int %101
+               OpReturnValue %102
+         %96 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ae1cfdf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,80 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_f1_(inout float f) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  const int x_60 = asint(x_8[1].x);
+  a = x_60;
+  const int x_62 = asint(x_8[2].x);
+  b = x_62;
+  const int x_64 = asint(x_8[2].x);
+  i = x_64;
+  while (true) {
+    const int x_69 = i;
+    const int x_71 = asint(x_8[4].x);
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    const int x_74 = a;
+    const int x_76 = asint(x_8[3].x);
+    if ((x_74 > x_76)) {
+      break;
+    }
+    const float x_80 = f;
+    const int x_84 = asint(x_8[1].x);
+    a = (((int(x_80) - 1) - x_84) + i);
+    b = (b + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_92 = b;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_94 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_92 == x_94)) {
+    const int x_100 = asint(x_8[1].x);
+    return x_100;
+  } else {
+    const int x_102 = asint(x_8[2].x);
+    return x_102;
+  }
+  return 0;
+}
+
+void main_1() {
+  float param = 0.0f;
+  param = 0.699999988f;
+  const int x_34 = func_f1_(param);
+  const int x_36 = asint(x_8[1].x);
+  if ((x_34 == x_36)) {
+    const int x_42 = asint(x_8[1].x);
+    const int x_45 = asint(x_8[2].x);
+    const int x_48 = asint(x_8[2].x);
+    const int x_51 = asint(x_8[1].x);
+    x_GLF_color = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  } else {
+    const int x_55 = asint(x_8[2].x);
+    const float x_56 = float(x_55);
+    x_GLF_color = float4(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e2416d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.msl
@@ -0,0 +1,92 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_f1_(constant buf0& x_8, thread float* const f) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int const x_60 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  a = x_60;
+  int const x_62 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  b = x_62;
+  int const x_64 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  i = x_64;
+  while (true) {
+    int const x_69 = i;
+    int const x_71 = x_8.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    int const x_74 = a;
+    int const x_76 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_74 > x_76)) {
+      break;
+    }
+    float const x_80 = *(f);
+    int const x_84 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_86 = i;
+    a = (((int(x_80) - 1) - x_84) + x_86);
+    int const x_88 = b;
+    b = (x_88 + 1);
+    {
+      int const x_90 = i;
+      i = (x_90 + 1);
+    }
+  }
+  int const x_92 = b;
+  int const x_94 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_92 == x_94)) {
+    int const x_100 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    return x_100;
+  } else {
+    int const x_102 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    return x_102;
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float param = 0.0f;
+  param = 0.699999988f;
+  int const x_34 = func_f1_(x_8, &(param));
+  int const x_36 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_34 == x_36)) {
+    int const x_42 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_45 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_48 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_51 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  } else {
+    int const x_55 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    float const x_56 = float(x_55);
+    *(tint_symbol_4) = float4(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ef89a41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,193 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 124
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_f1_ "func_f1_"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %int %_ptr_Function_float
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %80 = OpTypeFunction %void
+         %85 = OpConstantNull %float
+%float_0_699999988 = OpConstant %float 0.699999988
+   %main_out = OpTypeStruct %v4float
+        %112 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %int None %15
+          %f = OpFunctionParameter %_ptr_Function_float
+         %19 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %22
+          %b = OpVariable %_ptr_Function_int Function %22
+          %i = OpVariable %_ptr_Function_int Function %22
+         %28 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %29 = OpLoad %int %28
+               OpStore %a %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %b %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %34 = OpLoad %int %33
+               OpStore %i %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %42 = OpLoad %int %41
+         %43 = OpSLessThan %bool %39 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %36
+         %45 = OpLabel
+         %48 = OpLoad %int %a
+         %50 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %51 = OpLoad %int %50
+         %52 = OpSGreaterThan %bool %48 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpBranch %36
+         %53 = OpLabel
+         %56 = OpLoad %float %f
+         %57 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpLoad %int %i
+         %60 = OpConvertFToS %int %56
+         %61 = OpISub %int %60 %int_1
+         %62 = OpISub %int %61 %58
+         %63 = OpIAdd %int %62 %59
+               OpStore %a %63
+         %64 = OpLoad %int %b
+         %65 = OpIAdd %int %64 %int_1
+               OpStore %b %65
+               OpBranch %37
+         %37 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %i %67
+               OpBranch %35
+         %36 = OpLabel
+         %68 = OpLoad %int %b
+         %70 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpIEqual %bool %68 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %77 = OpLoad %int %76
+               OpReturnValue %77
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %79 = OpLoad %int %78
+               OpReturnValue %79
+         %73 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %80
+         %83 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function %85
+               OpStore %param %float_0_699999988
+         %87 = OpFunctionCall %int %func_f1_ %param
+         %89 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpIEqual %bool %87 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %94
+         %93 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpConvertSToF %float %96
+        %104 = OpConvertSToF %float %98
+        %105 = OpConvertSToF %float %100
+        %106 = OpConvertSToF %float %102
+        %107 = OpCompositeConstruct %v4float %103 %104 %105 %106
+               OpStore %x_GLF_color %107
+               OpBranch %92
+         %94 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %109
+        %111 = OpCompositeConstruct %v4float %110 %110 %110 %110
+               OpStore %x_GLF_color %111
+               OpBranch %92
+         %92 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %112
+%tint_symbol = OpFunctionParameter %main_out
+        %116 = OpLabel
+        %117 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %117
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %80
+        %119 = OpLabel
+        %120 = OpFunctionCall %void %main_1
+        %122 = OpLoad %v4float %x_GLF_color
+        %123 = OpCompositeConstruct %main_out %122
+        %121 = OpFunctionCall %void %tint_symbol_2 %123
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a15e3bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,86 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_f1_(f : ptr<function, f32>) -> i32 {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  let x_60 : i32 = x_8.x_GLF_uniform_int_values[1];
+  a = x_60;
+  let x_62 : i32 = x_8.x_GLF_uniform_int_values[2];
+  b = x_62;
+  let x_64 : i32 = x_8.x_GLF_uniform_int_values[2];
+  i = x_64;
+  loop {
+    let x_69 : i32 = i;
+    let x_71 : i32 = x_8.x_GLF_uniform_int_values[4];
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    let x_74 : i32 = a;
+    let x_76 : i32 = x_8.x_GLF_uniform_int_values[3];
+    if ((x_74 > x_76)) {
+      break;
+    }
+    let x_80 : f32 = *(f);
+    let x_84 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_86 : i32 = i;
+    a = (((i32(x_80) - 1) - x_84) + x_86);
+    let x_88 : i32 = b;
+    b = (x_88 + 1);
+
+    continuing {
+      let x_90 : i32 = i;
+      i = (x_90 + 1);
+    }
+  }
+  let x_92 : i32 = b;
+  let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_92 == x_94)) {
+    let x_100 : i32 = x_8.x_GLF_uniform_int_values[1];
+    return x_100;
+  } else {
+    let x_102 : i32 = x_8.x_GLF_uniform_int_values[2];
+    return x_102;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var param : f32;
+  param = 0.699999988;
+  let x_34 : i32 = func_f1_(&(param));
+  let x_36 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_34 == x_36)) {
+    let x_42 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_45 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_48 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_51 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+  } else {
+    let x_55 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_56 : f32 = f32(x_55);
+    x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
new file mode 100644
index 0000000..a15e3bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
@@ -0,0 +1,86 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_f1_(f : ptr<function, f32>) -> i32 {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  let x_60 : i32 = x_8.x_GLF_uniform_int_values[1];
+  a = x_60;
+  let x_62 : i32 = x_8.x_GLF_uniform_int_values[2];
+  b = x_62;
+  let x_64 : i32 = x_8.x_GLF_uniform_int_values[2];
+  i = x_64;
+  loop {
+    let x_69 : i32 = i;
+    let x_71 : i32 = x_8.x_GLF_uniform_int_values[4];
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    let x_74 : i32 = a;
+    let x_76 : i32 = x_8.x_GLF_uniform_int_values[3];
+    if ((x_74 > x_76)) {
+      break;
+    }
+    let x_80 : f32 = *(f);
+    let x_84 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_86 : i32 = i;
+    a = (((i32(x_80) - 1) - x_84) + x_86);
+    let x_88 : i32 = b;
+    b = (x_88 + 1);
+
+    continuing {
+      let x_90 : i32 = i;
+      i = (x_90 + 1);
+    }
+  }
+  let x_92 : i32 = b;
+  let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_92 == x_94)) {
+    let x_100 : i32 = x_8.x_GLF_uniform_int_values[1];
+    return x_100;
+  } else {
+    let x_102 : i32 = x_8.x_GLF_uniform_int_values[2];
+    return x_102;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var param : f32;
+  param = 0.699999988;
+  let x_34 : i32 = func_f1_(&(param));
+  let x_36 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_34 == x_36)) {
+    let x_42 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_45 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_48 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_51 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+  } else {
+    let x_55 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_56 : f32 = f32(x_55);
+    x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ae1cfdf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,80 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_f1_(inout float f) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  const int x_60 = asint(x_8[1].x);
+  a = x_60;
+  const int x_62 = asint(x_8[2].x);
+  b = x_62;
+  const int x_64 = asint(x_8[2].x);
+  i = x_64;
+  while (true) {
+    const int x_69 = i;
+    const int x_71 = asint(x_8[4].x);
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    const int x_74 = a;
+    const int x_76 = asint(x_8[3].x);
+    if ((x_74 > x_76)) {
+      break;
+    }
+    const float x_80 = f;
+    const int x_84 = asint(x_8[1].x);
+    a = (((int(x_80) - 1) - x_84) + i);
+    b = (b + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_92 = b;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_94 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_92 == x_94)) {
+    const int x_100 = asint(x_8[1].x);
+    return x_100;
+  } else {
+    const int x_102 = asint(x_8[2].x);
+    return x_102;
+  }
+  return 0;
+}
+
+void main_1() {
+  float param = 0.0f;
+  param = 0.699999988f;
+  const int x_34 = func_f1_(param);
+  const int x_36 = asint(x_8[1].x);
+  if ((x_34 == x_36)) {
+    const int x_42 = asint(x_8[1].x);
+    const int x_45 = asint(x_8[2].x);
+    const int x_48 = asint(x_8[2].x);
+    const int x_51 = asint(x_8[1].x);
+    x_GLF_color = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  } else {
+    const int x_55 = asint(x_8[2].x);
+    const float x_56 = float(x_55);
+    x_GLF_color = float4(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e2416d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.msl
@@ -0,0 +1,92 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_f1_(constant buf0& x_8, thread float* const f) {
+  int a = 0;
+  int b = 0;
+  int i = 0;
+  int const x_60 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  a = x_60;
+  int const x_62 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  b = x_62;
+  int const x_64 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  i = x_64;
+  while (true) {
+    int const x_69 = i;
+    int const x_71 = x_8.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    int const x_74 = a;
+    int const x_76 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_74 > x_76)) {
+      break;
+    }
+    float const x_80 = *(f);
+    int const x_84 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_86 = i;
+    a = (((int(x_80) - 1) - x_84) + x_86);
+    int const x_88 = b;
+    b = (x_88 + 1);
+    {
+      int const x_90 = i;
+      i = (x_90 + 1);
+    }
+  }
+  int const x_92 = b;
+  int const x_94 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_92 == x_94)) {
+    int const x_100 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    return x_100;
+  } else {
+    int const x_102 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    return x_102;
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float param = 0.0f;
+  param = 0.699999988f;
+  int const x_34 = func_f1_(x_8, &(param));
+  int const x_36 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_34 == x_36)) {
+    int const x_42 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_45 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_48 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_51 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  } else {
+    int const x_55 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    float const x_56 = float(x_55);
+    *(tint_symbol_4) = float4(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ef89a41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,193 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 124
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_f1_ "func_f1_"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %int %_ptr_Function_float
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %80 = OpTypeFunction %void
+         %85 = OpConstantNull %float
+%float_0_699999988 = OpConstant %float 0.699999988
+   %main_out = OpTypeStruct %v4float
+        %112 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %int None %15
+          %f = OpFunctionParameter %_ptr_Function_float
+         %19 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %22
+          %b = OpVariable %_ptr_Function_int Function %22
+          %i = OpVariable %_ptr_Function_int Function %22
+         %28 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %29 = OpLoad %int %28
+               OpStore %a %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %b %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %34 = OpLoad %int %33
+               OpStore %i %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %42 = OpLoad %int %41
+         %43 = OpSLessThan %bool %39 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %36
+         %45 = OpLabel
+         %48 = OpLoad %int %a
+         %50 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %51 = OpLoad %int %50
+         %52 = OpSGreaterThan %bool %48 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpBranch %36
+         %53 = OpLabel
+         %56 = OpLoad %float %f
+         %57 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpLoad %int %i
+         %60 = OpConvertFToS %int %56
+         %61 = OpISub %int %60 %int_1
+         %62 = OpISub %int %61 %58
+         %63 = OpIAdd %int %62 %59
+               OpStore %a %63
+         %64 = OpLoad %int %b
+         %65 = OpIAdd %int %64 %int_1
+               OpStore %b %65
+               OpBranch %37
+         %37 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %i %67
+               OpBranch %35
+         %36 = OpLabel
+         %68 = OpLoad %int %b
+         %70 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpIEqual %bool %68 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %77 = OpLoad %int %76
+               OpReturnValue %77
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %79 = OpLoad %int %78
+               OpReturnValue %79
+         %73 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %80
+         %83 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function %85
+               OpStore %param %float_0_699999988
+         %87 = OpFunctionCall %int %func_f1_ %param
+         %89 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpIEqual %bool %87 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %94
+         %93 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpConvertSToF %float %96
+        %104 = OpConvertSToF %float %98
+        %105 = OpConvertSToF %float %100
+        %106 = OpConvertSToF %float %102
+        %107 = OpCompositeConstruct %v4float %103 %104 %105 %106
+               OpStore %x_GLF_color %107
+               OpBranch %92
+         %94 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %109
+        %111 = OpCompositeConstruct %v4float %110 %110 %110 %110
+               OpStore %x_GLF_color %111
+               OpBranch %92
+         %92 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %112
+%tint_symbol = OpFunctionParameter %main_out
+        %116 = OpLabel
+        %117 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %117
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %80
+        %119 = OpLabel
+        %120 = OpFunctionCall %void %main_1
+        %122 = OpLoad %v4float %x_GLF_color
+        %123 = OpCompositeConstruct %main_out %122
+        %121 = OpFunctionCall %void %tint_symbol_2 %123
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a15e3bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,86 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_f1_(f : ptr<function, f32>) -> i32 {
+  var a : i32;
+  var b : i32;
+  var i : i32;
+  let x_60 : i32 = x_8.x_GLF_uniform_int_values[1];
+  a = x_60;
+  let x_62 : i32 = x_8.x_GLF_uniform_int_values[2];
+  b = x_62;
+  let x_64 : i32 = x_8.x_GLF_uniform_int_values[2];
+  i = x_64;
+  loop {
+    let x_69 : i32 = i;
+    let x_71 : i32 = x_8.x_GLF_uniform_int_values[4];
+    if ((x_69 < x_71)) {
+    } else {
+      break;
+    }
+    let x_74 : i32 = a;
+    let x_76 : i32 = x_8.x_GLF_uniform_int_values[3];
+    if ((x_74 > x_76)) {
+      break;
+    }
+    let x_80 : f32 = *(f);
+    let x_84 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_86 : i32 = i;
+    a = (((i32(x_80) - 1) - x_84) + x_86);
+    let x_88 : i32 = b;
+    b = (x_88 + 1);
+
+    continuing {
+      let x_90 : i32 = i;
+      i = (x_90 + 1);
+    }
+  }
+  let x_92 : i32 = b;
+  let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_92 == x_94)) {
+    let x_100 : i32 = x_8.x_GLF_uniform_int_values[1];
+    return x_100;
+  } else {
+    let x_102 : i32 = x_8.x_GLF_uniform_int_values[2];
+    return x_102;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var param : f32;
+  param = 0.699999988;
+  let x_34 : i32 = func_f1_(&(param));
+  let x_36 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_34 == x_36)) {
+    let x_42 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_45 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_48 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_51 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+  } else {
+    let x_55 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_56 : f32 = f32(x_55);
+    x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm
new file mode 100644
index 0000000..3849888
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm
@@ -0,0 +1,156 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f1_ "f1("
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %A "A"
+               OpName %a "a"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %i_0 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %19 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %17
+         %41 = OpLabel
+        %i_0 = OpVariable %_ptr_Function_int Function
+         %42 = OpFunctionCall %int %f1_
+               OpStore %i_0 %42
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpConvertSToF %float %44
+         %46 = OpLoad %int %i_0
+         %47 = OpConvertSToF %float %46
+         %48 = OpLoad %int %i_0
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpCompositeConstruct %v4float %45 %47 %49 %52
+               OpStore %_GLF_color %53
+               OpReturn
+               OpFunctionEnd
+        %f1_ = OpFunction %int None %19
+         %54 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %A = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %a = OpVariable %_ptr_Function_int Function
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %56 = OpLoad %int %55
+               OpStore %i %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %i
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpSLessThan %bool %61 %63
+               OpBranchConditional %64 %65 %58
+         %65 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Function_int %A %66
+               OpStore %69 %68
+               OpBranch %59
+         %59 = OpLabel
+         %70 = OpLoad %int %i
+         %71 = OpIAdd %int %70 %int_1
+               OpStore %i %71
+               OpBranch %57
+         %58 = OpLabel
+               OpStore %a %int_n1
+         %72 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpFOrdGreaterThanEqual %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpLoad %int %a
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %a %80
+         %81 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Function_int %A %80
+               OpStore %83 %82
+               OpBranch %77
+         %77 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Function_int %A %85
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpIEqual %bool %87 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %93
+         %92 = OpLabel
+         %94 = OpLoad %int %a
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %a %95
+         %96 = OpAccessChain %_ptr_Function_int %A %95
+         %97 = OpLoad %int %96
+               OpReturnValue %97
+         %93 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %99 = OpLoad %int %98
+               OpReturnValue %99
+         %91 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..8a664a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,85 @@
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int f1_() {
+  int i = 0;
+  int A[10] = (int[10])0;
+  int a = 0;
+  const int x_56 = asint(x_8[2].x);
+  i = x_56;
+  while (true) {
+    const int x_61 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_63 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_61 < x_63)) {
+    } else {
+      break;
+    }
+    const int x_66 = i;
+    const int x_68 = asint(x_8[2].x);
+    A[x_66] = x_68;
+    {
+      i = (i + 1);
+    }
+  }
+  a = -1;
+  const float x_73 = gl_FragCoord.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_75 = asfloat(x_12[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_73 >= x_75)) {
+    const int x_80 = (a + 1);
+    a = x_80;
+    const int x_82 = asint(x_8[1].x);
+    A[x_80] = x_82;
+  }
+  const int x_85 = asint(x_8[2].x);
+  const int x_87 = A[x_85];
+  const int x_89 = asint(x_8[1].x);
+  if ((x_87 == x_89)) {
+    const int x_95 = (a + 1);
+    a = x_95;
+    const int x_97 = A[x_95];
+    return x_97;
+  } else {
+    const int x_99 = asint(x_8[1].x);
+    return x_99;
+  }
+  return 0;
+}
+
+void main_1() {
+  int i_1 = 0;
+  const int x_42 = f1_();
+  i_1 = x_42;
+  const int x_44 = asint(x_8[1].x);
+  const int x_46 = i_1;
+  const int x_48 = i_1;
+  const int x_51 = asint(x_8[1].x);
+  x_GLF_color = float4(float(x_44), float(x_46), float(x_48), float(x_51));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d0afc76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int f1_(constant buf1& x_8, constant buf0& x_12, thread float4* const tint_symbol_5) {
+  int i = 0;
+  tint_array_wrapper_2 A = {};
+  int a = 0;
+  int const x_56 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  i = x_56;
+  while (true) {
+    int const x_61 = i;
+    int const x_63 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_61 < x_63)) {
+    } else {
+      break;
+    }
+    int const x_66 = i;
+    int const x_68 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    A.arr[x_66] = x_68;
+    {
+      int const x_70 = i;
+      i = (x_70 + 1);
+    }
+  }
+  a = -1;
+  float const x_73 = (*(tint_symbol_5)).y;
+  float const x_75 = x_12.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_73 >= x_75)) {
+    int const x_79 = a;
+    int const x_80 = (x_79 + 1);
+    a = x_80;
+    int const x_82 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    A.arr[x_80] = x_82;
+  }
+  int const x_85 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  int const x_87 = A.arr[x_85];
+  int const x_89 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_87 == x_89)) {
+    int const x_94 = a;
+    int const x_95 = (x_94 + 1);
+    a = x_95;
+    int const x_97 = A.arr[x_95];
+    return x_97;
+  } else {
+    int const x_99 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    return x_99;
+  }
+  return 0;
+}
+
+void main_1(constant buf1& x_8, constant buf0& x_12, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int i_1 = 0;
+  int const x_42 = f1_(x_8, x_12, tint_symbol_6);
+  i_1 = x_42;
+  int const x_44 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_46 = i_1;
+  int const x_48 = i_1;
+  int const x_51 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  *(tint_symbol_7) = float4(float(x_44), float(x_46), float(x_48), float(x_51));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_8, x_12, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ed58ead
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,201 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 121
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_12 "x_12"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f1_ "f1_"
+               OpName %i "i"
+               OpName %A "A"
+               OpName %a "a"
+               OpName %main_1 "main_1"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+         %23 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %33 = OpConstantNull %_arr_int_uint_10
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %void = OpTypeVoid
+         %91 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+        %f1_ = OpFunction %int None %23
+         %25 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %28
+          %A = OpVariable %_ptr_Function__arr_int_uint_10 Function %33
+          %a = OpVariable %_ptr_Function_int Function %28
+         %38 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %39 = OpLoad %int %38
+               OpStore %i %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpSLessThan %bool %44 %47
+               OpSelectionMerge %50 None
+               OpBranchConditional %48 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %41
+         %50 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_int %A %53
+               OpStore %56 %55
+               OpBranch %42
+         %42 = OpLabel
+         %57 = OpLoad %int %i
+         %59 = OpIAdd %int %57 %int_1
+               OpStore %i %59
+               OpBranch %40
+         %41 = OpLabel
+               OpStore %a %int_n1
+         %62 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpFOrdGreaterThanEqual %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpLoad %int %a
+         %71 = OpIAdd %int %70 %int_1
+               OpStore %a %71
+         %72 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Function_int %A %71
+               OpStore %74 %73
+               OpBranch %68
+         %68 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Function_int %A %76
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpIEqual %bool %78 %80
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+         %85 = OpLoad %int %a
+         %86 = OpIAdd %int %85 %int_1
+               OpStore %a %86
+         %87 = OpAccessChain %_ptr_Function_int %A %86
+         %88 = OpLoad %int %87
+               OpReturnValue %88
+         %84 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %90 = OpLoad %int %89
+               OpReturnValue %90
+         %82 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %91
+         %94 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function %28
+         %96 = OpFunctionCall %int %f1_
+               OpStore %i_1 %96
+         %97 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpLoad %int %i_1
+        %100 = OpLoad %int %i_1
+        %101 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpConvertSToF %float %98
+        %104 = OpConvertSToF %float %99
+        %105 = OpConvertSToF %float %100
+        %106 = OpConvertSToF %float %102
+        %107 = OpCompositeConstruct %v4float %103 %104 %105 %106
+               OpStore %x_GLF_color %107
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %108
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %91
+        %115 = OpLabel
+        %116 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %116
+        %117 = OpFunctionCall %void %main_1
+        %119 = OpLoad %v4float %x_GLF_color
+        %120 = OpCompositeConstruct %main_out %119
+        %118 = OpFunctionCall %void %tint_symbol_3 %120
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..4135af8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,93 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f1_() -> i32 {
+  var i : i32;
+  var A : array<i32, 10>;
+  var a : i32;
+  let x_56 : i32 = x_8.x_GLF_uniform_int_values[2];
+  i = x_56;
+  loop {
+    let x_61 : i32 = i;
+    let x_63 : i32 = x_8.x_GLF_uniform_int_values[0];
+    if ((x_61 < x_63)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = i;
+    let x_68 : i32 = x_8.x_GLF_uniform_int_values[2];
+    A[x_66] = x_68;
+
+    continuing {
+      let x_70 : i32 = i;
+      i = (x_70 + 1);
+    }
+  }
+  a = -1;
+  let x_73 : f32 = gl_FragCoord.y;
+  let x_75 : f32 = x_12.x_GLF_uniform_float_values[0];
+  if ((x_73 >= x_75)) {
+    let x_79 : i32 = a;
+    let x_80 : i32 = (x_79 + 1);
+    a = x_80;
+    let x_82 : i32 = x_8.x_GLF_uniform_int_values[1];
+    A[x_80] = x_82;
+  }
+  let x_85 : i32 = x_8.x_GLF_uniform_int_values[2];
+  let x_87 : i32 = A[x_85];
+  let x_89 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_87 == x_89)) {
+    let x_94 : i32 = a;
+    let x_95 : i32 = (x_94 + 1);
+    a = x_95;
+    let x_97 : i32 = A[x_95];
+    return x_97;
+  } else {
+    let x_99 : i32 = x_8.x_GLF_uniform_int_values[1];
+    return x_99;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var i_1 : i32;
+  let x_42 : i32 = f1_();
+  i_1 = x_42;
+  let x_44 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_46 : i32 = i_1;
+  let x_48 : i32 = i_1;
+  let x_51 : i32 = x_8.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_44), f32(x_46), f32(x_48), f32(x_51));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
new file mode 100644
index 0000000..4135af8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
@@ -0,0 +1,93 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f1_() -> i32 {
+  var i : i32;
+  var A : array<i32, 10>;
+  var a : i32;
+  let x_56 : i32 = x_8.x_GLF_uniform_int_values[2];
+  i = x_56;
+  loop {
+    let x_61 : i32 = i;
+    let x_63 : i32 = x_8.x_GLF_uniform_int_values[0];
+    if ((x_61 < x_63)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = i;
+    let x_68 : i32 = x_8.x_GLF_uniform_int_values[2];
+    A[x_66] = x_68;
+
+    continuing {
+      let x_70 : i32 = i;
+      i = (x_70 + 1);
+    }
+  }
+  a = -1;
+  let x_73 : f32 = gl_FragCoord.y;
+  let x_75 : f32 = x_12.x_GLF_uniform_float_values[0];
+  if ((x_73 >= x_75)) {
+    let x_79 : i32 = a;
+    let x_80 : i32 = (x_79 + 1);
+    a = x_80;
+    let x_82 : i32 = x_8.x_GLF_uniform_int_values[1];
+    A[x_80] = x_82;
+  }
+  let x_85 : i32 = x_8.x_GLF_uniform_int_values[2];
+  let x_87 : i32 = A[x_85];
+  let x_89 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_87 == x_89)) {
+    let x_94 : i32 = a;
+    let x_95 : i32 = (x_94 + 1);
+    a = x_95;
+    let x_97 : i32 = A[x_95];
+    return x_97;
+  } else {
+    let x_99 : i32 = x_8.x_GLF_uniform_int_values[1];
+    return x_99;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var i_1 : i32;
+  let x_42 : i32 = f1_();
+  i_1 = x_42;
+  let x_44 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_46 : i32 = i_1;
+  let x_48 : i32 = i_1;
+  let x_51 : i32 = x_8.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_44), f32(x_46), f32(x_48), f32(x_51));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..8a664a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,85 @@
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int f1_() {
+  int i = 0;
+  int A[10] = (int[10])0;
+  int a = 0;
+  const int x_56 = asint(x_8[2].x);
+  i = x_56;
+  while (true) {
+    const int x_61 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_63 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_61 < x_63)) {
+    } else {
+      break;
+    }
+    const int x_66 = i;
+    const int x_68 = asint(x_8[2].x);
+    A[x_66] = x_68;
+    {
+      i = (i + 1);
+    }
+  }
+  a = -1;
+  const float x_73 = gl_FragCoord.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_75 = asfloat(x_12[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_73 >= x_75)) {
+    const int x_80 = (a + 1);
+    a = x_80;
+    const int x_82 = asint(x_8[1].x);
+    A[x_80] = x_82;
+  }
+  const int x_85 = asint(x_8[2].x);
+  const int x_87 = A[x_85];
+  const int x_89 = asint(x_8[1].x);
+  if ((x_87 == x_89)) {
+    const int x_95 = (a + 1);
+    a = x_95;
+    const int x_97 = A[x_95];
+    return x_97;
+  } else {
+    const int x_99 = asint(x_8[1].x);
+    return x_99;
+  }
+  return 0;
+}
+
+void main_1() {
+  int i_1 = 0;
+  const int x_42 = f1_();
+  i_1 = x_42;
+  const int x_44 = asint(x_8[1].x);
+  const int x_46 = i_1;
+  const int x_48 = i_1;
+  const int x_51 = asint(x_8[1].x);
+  x_GLF_color = float4(float(x_44), float(x_46), float(x_48), float(x_51));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d0afc76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int f1_(constant buf1& x_8, constant buf0& x_12, thread float4* const tint_symbol_5) {
+  int i = 0;
+  tint_array_wrapper_2 A = {};
+  int a = 0;
+  int const x_56 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  i = x_56;
+  while (true) {
+    int const x_61 = i;
+    int const x_63 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_61 < x_63)) {
+    } else {
+      break;
+    }
+    int const x_66 = i;
+    int const x_68 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    A.arr[x_66] = x_68;
+    {
+      int const x_70 = i;
+      i = (x_70 + 1);
+    }
+  }
+  a = -1;
+  float const x_73 = (*(tint_symbol_5)).y;
+  float const x_75 = x_12.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_73 >= x_75)) {
+    int const x_79 = a;
+    int const x_80 = (x_79 + 1);
+    a = x_80;
+    int const x_82 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    A.arr[x_80] = x_82;
+  }
+  int const x_85 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  int const x_87 = A.arr[x_85];
+  int const x_89 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_87 == x_89)) {
+    int const x_94 = a;
+    int const x_95 = (x_94 + 1);
+    a = x_95;
+    int const x_97 = A.arr[x_95];
+    return x_97;
+  } else {
+    int const x_99 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    return x_99;
+  }
+  return 0;
+}
+
+void main_1(constant buf1& x_8, constant buf0& x_12, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int i_1 = 0;
+  int const x_42 = f1_(x_8, x_12, tint_symbol_6);
+  i_1 = x_42;
+  int const x_44 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_46 = i_1;
+  int const x_48 = i_1;
+  int const x_51 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  *(tint_symbol_7) = float4(float(x_44), float(x_46), float(x_48), float(x_51));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_8, x_12, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ed58ead
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,201 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 121
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_12 "x_12"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f1_ "f1_"
+               OpName %i "i"
+               OpName %A "A"
+               OpName %a "a"
+               OpName %main_1 "main_1"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+         %23 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %33 = OpConstantNull %_arr_int_uint_10
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %void = OpTypeVoid
+         %91 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+        %f1_ = OpFunction %int None %23
+         %25 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %28
+          %A = OpVariable %_ptr_Function__arr_int_uint_10 Function %33
+          %a = OpVariable %_ptr_Function_int Function %28
+         %38 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %39 = OpLoad %int %38
+               OpStore %i %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpSLessThan %bool %44 %47
+               OpSelectionMerge %50 None
+               OpBranchConditional %48 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %41
+         %50 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_int %A %53
+               OpStore %56 %55
+               OpBranch %42
+         %42 = OpLabel
+         %57 = OpLoad %int %i
+         %59 = OpIAdd %int %57 %int_1
+               OpStore %i %59
+               OpBranch %40
+         %41 = OpLabel
+               OpStore %a %int_n1
+         %62 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpFOrdGreaterThanEqual %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpLoad %int %a
+         %71 = OpIAdd %int %70 %int_1
+               OpStore %a %71
+         %72 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Function_int %A %71
+               OpStore %74 %73
+               OpBranch %68
+         %68 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Function_int %A %76
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpIEqual %bool %78 %80
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+         %85 = OpLoad %int %a
+         %86 = OpIAdd %int %85 %int_1
+               OpStore %a %86
+         %87 = OpAccessChain %_ptr_Function_int %A %86
+         %88 = OpLoad %int %87
+               OpReturnValue %88
+         %84 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %90 = OpLoad %int %89
+               OpReturnValue %90
+         %82 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %91
+         %94 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function %28
+         %96 = OpFunctionCall %int %f1_
+               OpStore %i_1 %96
+         %97 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpLoad %int %i_1
+        %100 = OpLoad %int %i_1
+        %101 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpConvertSToF %float %98
+        %104 = OpConvertSToF %float %99
+        %105 = OpConvertSToF %float %100
+        %106 = OpConvertSToF %float %102
+        %107 = OpCompositeConstruct %v4float %103 %104 %105 %106
+               OpStore %x_GLF_color %107
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %108
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %91
+        %115 = OpLabel
+        %116 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %116
+        %117 = OpFunctionCall %void %main_1
+        %119 = OpLoad %v4float %x_GLF_color
+        %120 = OpCompositeConstruct %main_out %119
+        %118 = OpFunctionCall %void %tint_symbol_3 %120
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..4135af8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,93 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f1_() -> i32 {
+  var i : i32;
+  var A : array<i32, 10>;
+  var a : i32;
+  let x_56 : i32 = x_8.x_GLF_uniform_int_values[2];
+  i = x_56;
+  loop {
+    let x_61 : i32 = i;
+    let x_63 : i32 = x_8.x_GLF_uniform_int_values[0];
+    if ((x_61 < x_63)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = i;
+    let x_68 : i32 = x_8.x_GLF_uniform_int_values[2];
+    A[x_66] = x_68;
+
+    continuing {
+      let x_70 : i32 = i;
+      i = (x_70 + 1);
+    }
+  }
+  a = -1;
+  let x_73 : f32 = gl_FragCoord.y;
+  let x_75 : f32 = x_12.x_GLF_uniform_float_values[0];
+  if ((x_73 >= x_75)) {
+    let x_79 : i32 = a;
+    let x_80 : i32 = (x_79 + 1);
+    a = x_80;
+    let x_82 : i32 = x_8.x_GLF_uniform_int_values[1];
+    A[x_80] = x_82;
+  }
+  let x_85 : i32 = x_8.x_GLF_uniform_int_values[2];
+  let x_87 : i32 = A[x_85];
+  let x_89 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_87 == x_89)) {
+    let x_94 : i32 = a;
+    let x_95 : i32 = (x_94 + 1);
+    a = x_95;
+    let x_97 : i32 = A[x_95];
+    return x_97;
+  } else {
+    let x_99 : i32 = x_8.x_GLF_uniform_int_values[1];
+    return x_99;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var i_1 : i32;
+  let x_42 : i32 = f1_();
+  i_1 = x_42;
+  let x_44 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_46 : i32 = i_1;
+  let x_48 : i32 = i_1;
+  let x_51 : i32 = x_8.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_44), f32(x_46), f32(x_48), f32(x_51));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm
new file mode 100644
index 0000000..8e160de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm
@@ -0,0 +1,178 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v1 "v1"
+               OpName %ref "ref"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+         %v1 = OpVariable %_ptr_Function_v4float Function
+        %ref = OpVariable %_ptr_Function_v4float Function
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpCompositeConstruct %v4float %36 %36 %36 %36
+         %38 = OpExtInst %uint %1 PackUnorm4x8 %37
+               OpStore %a %38
+         %39 = OpLoad %uint %a
+         %40 = OpExtInst %v4float %1 UnpackSnorm4x8 %39
+               OpStore %v1 %40
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpFNegate %float %42
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %45 = OpLoad %float %44
+         %46 = OpFDiv %float %43 %45
+         %47 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %48 = OpLoad %float %47
+         %49 = OpFNegate %float %48
+         %50 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %51 = OpLoad %float %50
+         %52 = OpFDiv %float %49 %51
+         %53 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %54 = OpLoad %float %53
+         %55 = OpFNegate %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %57 = OpLoad %float %56
+         %58 = OpFDiv %float %55 %57
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %60 = OpLoad %float %59
+         %61 = OpFNegate %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %63 = OpLoad %float %62
+         %64 = OpFDiv %float %61 %63
+         %65 = OpCompositeConstruct %v4float %46 %52 %58 %64
+               OpStore %ref %65
+         %66 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Function_float %v1 %67
+         %69 = OpLoad %float %68
+         %70 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Function_float %ref %71
+         %73 = OpLoad %float %72
+         %74 = OpFOrdEqual %bool %69 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Function_float %v1 %78
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Function_float %ref %82
+         %84 = OpLoad %float %83
+         %85 = OpFOrdEqual %bool %80 %84
+               OpBranch %75
+         %75 = OpLabel
+         %86 = OpPhi %bool %74 %34 %85 %76
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Function_float %v1 %90
+         %92 = OpLoad %float %91
+         %93 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Function_float %ref %94
+         %96 = OpLoad %float %95
+         %97 = OpFOrdEqual %bool %92 %96
+               OpBranch %87
+         %87 = OpLabel
+         %98 = OpPhi %bool %86 %75 %97 %88
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %99
+        %100 = OpLabel
+        %101 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %102 = OpLoad %int %101
+        %103 = OpAccessChain %_ptr_Function_float %v1 %102
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Function_float %ref %106
+        %108 = OpLoad %float %107
+        %109 = OpFOrdEqual %bool %104 %108
+               OpBranch %99
+         %99 = OpLabel
+        %110 = OpPhi %bool %98 %87 %109 %100
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %113
+        %112 = OpLabel
+        %114 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %115 = OpLoad %int %114
+        %116 = OpConvertSToF %float %115
+        %117 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %118 = OpLoad %int %117
+        %119 = OpConvertSToF %float %118
+        %120 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %121 = OpLoad %int %120
+        %122 = OpConvertSToF %float %121
+        %123 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %124 = OpLoad %int %123
+        %125 = OpConvertSToF %float %124
+        %126 = OpCompositeConstruct %v4float %116 %119 %122 %125
+               OpStore %_GLF_color %126
+               OpBranch %111
+        %113 = OpLabel
+        %127 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Function_float %v1 %128
+        %130 = OpLoad %float %129
+        %131 = OpCompositeConstruct %v4float %130 %130 %130 %130
+               OpStore %_GLF_color %131
+               OpBranch %111
+        %111 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..67cbab7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,109 @@
+uint tint_pack4x8unorm(float4 param_0) {
+  uint4 i = uint4(round(clamp(param_0, 0.0, 1.0) * 255.0));
+  return (i.x | i.y << 8 | i.z << 16 | i.w << 24);
+}
+
+float4 tint_unpack4x8snorm(uint param_0) {
+  int j = int(param_0);
+  int4 i = int4(j << 24, j << 16, j << 8, j) >> 24;
+  return clamp(float4(i) / 127.0, -1.0, 1.0);
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+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() {
+  uint a = 0u;
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 ref = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_85 = false;
+  bool x_97 = false;
+  bool x_109 = false;
+  bool x_86_phi = false;
+  bool x_98_phi = false;
+  bool x_110_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = tint_pack4x8unorm(float4(x_36, x_36, x_36, x_36));
+  v1 = tint_unpack4x8snorm(a);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_45 = asfloat(x_6[1].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_48 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_51 = asfloat(x_6[1].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_54 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_57 = asfloat(x_6[1].x);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_60 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const float x_63 = asfloat(x_6[1].x);
+  ref = float4((-(x_42) / x_45), (-(x_48) / x_51), (-(x_54) / x_57), (-(x_60) / x_63));
+  const int x_67 = asint(x_10[1].x);
+  const float x_69 = v1[x_67];
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const int x_71 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const float x_73 = ref[x_71];
+  const bool x_74 = (x_69 == x_73);
+  x_86_phi = x_74;
+  if (x_74) {
+    const int x_78 = asint(x_10[3].x);
+    const float x_80 = v1[x_78];
+    const int x_82 = asint(x_10[2].x);
+    const float x_84 = ref[x_82];
+    x_85 = (x_80 == x_84);
+    x_86_phi = x_85;
+  }
+  const bool x_86 = x_86_phi;
+  x_98_phi = x_86;
+  if (x_86) {
+    const int x_90 = asint(x_10[2].x);
+    const float x_92 = v1[x_90];
+    const int x_94 = asint(x_10[3].x);
+    const float x_96 = ref[x_94];
+    x_97 = (x_92 == x_96);
+    x_98_phi = x_97;
+  }
+  const bool x_98 = x_98_phi;
+  x_110_phi = x_98;
+  if (x_98) {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_102 = asint(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_104 = v1[x_102];
+    const int x_106 = asint(x_10[1].x);
+    const float x_108 = ref[x_106];
+    x_109 = (x_104 == x_108);
+    x_110_phi = x_109;
+  }
+  if (x_110_phi) {
+    const int x_115 = asint(x_10[3].x);
+    const int x_118 = asint(x_10[1].x);
+    const int x_121 = asint(x_10[1].x);
+    const int x_124 = asint(x_10[3].x);
+    x_GLF_color = float4(float(x_115), float(x_118), float(x_121), float(x_124));
+  } else {
+    const int x_128 = asint(x_10[1].x);
+    const float x_130 = v1[x_128];
+    x_GLF_color = float4(x_130, x_130, x_130, x_130);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d135092
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.msl
@@ -0,0 +1,110 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 v1 = 0.0f;
+  float4 ref = 0.0f;
+  bool x_85 = false;
+  bool x_97 = false;
+  bool x_109 = false;
+  bool x_86_phi = false;
+  bool x_98_phi = false;
+  bool x_110_phi = false;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  a = pack_float_to_unorm4x8(float4(x_36, x_36, x_36, x_36));
+  uint const x_39 = a;
+  v1 = unpack_snorm4x8_to_float(x_39);
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_45 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_48 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_51 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_54 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_57 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_60 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_63 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  ref = float4((-(x_42) / x_45), (-(x_48) / x_51), (-(x_54) / x_57), (-(x_60) / x_63));
+  int const x_67 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  float const x_69 = v1[x_67];
+  int const x_71 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  float const x_73 = ref[x_71];
+  bool const x_74 = (x_69 == x_73);
+  x_86_phi = x_74;
+  if (x_74) {
+    int const x_78 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_80 = v1[x_78];
+    int const x_82 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_84 = ref[x_82];
+    x_85 = (x_80 == x_84);
+    x_86_phi = x_85;
+  }
+  bool const x_86 = x_86_phi;
+  x_98_phi = x_86;
+  if (x_86) {
+    int const x_90 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_92 = v1[x_90];
+    int const x_94 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_96 = ref[x_94];
+    x_97 = (x_92 == x_96);
+    x_98_phi = x_97;
+  }
+  bool const x_98 = x_98_phi;
+  x_110_phi = x_98;
+  if (x_98) {
+    int const x_102 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_104 = v1[x_102];
+    int const x_106 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_108 = ref[x_106];
+    x_109 = (x_104 == x_108);
+    x_110_phi = x_109;
+  }
+  bool const x_110 = x_110_phi;
+  if (x_110) {
+    int const x_115 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_118 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_121 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_124 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_115), float(x_118), float(x_121), float(x_124));
+  } else {
+    int const x_128 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_130 = v1[x_128];
+    *(tint_symbol_4) = float4(x_130, x_130, x_130, x_130);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a1804d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,239 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 160
+; Schema: 0
+               OpCapability Shader
+         %45 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %ref "ref"
+               OpName %x_85 "x_85"
+               OpName %x_97 "x_97"
+               OpName %x_109 "x_109"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_110_phi "x_110_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %148 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %26
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+        %ref = OpVariable %_ptr_Function_v4float Function %17
+       %x_85 = OpVariable %_ptr_Function_bool Function %33
+       %x_97 = OpVariable %_ptr_Function_bool Function %33
+      %x_109 = OpVariable %_ptr_Function_bool Function %33
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %33
+   %x_98_phi = OpVariable %_ptr_Function_bool Function %33
+  %x_110_phi = OpVariable %_ptr_Function_bool Function %33
+         %42 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %46 = OpCompositeConstruct %v4float %43 %43 %43 %43
+         %44 = OpExtInst %uint %45 PackUnorm4x8 %46
+               OpStore %a %44
+         %47 = OpLoad %uint %a
+         %48 = OpExtInst %v4float %45 UnpackSnorm4x8 %47
+               OpStore %v1 %48
+         %49 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %65 = OpLoad %float %64
+         %66 = OpFNegate %float %50
+         %67 = OpFDiv %float %66 %53
+         %68 = OpFNegate %float %55
+         %69 = OpFDiv %float %68 %57
+         %70 = OpFNegate %float %59
+         %71 = OpFDiv %float %70 %61
+         %72 = OpFNegate %float %63
+         %73 = OpFDiv %float %72 %65
+         %74 = OpCompositeConstruct %v4float %67 %69 %71 %73
+               OpStore %ref %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %79 = OpAccessChain %_ptr_Function_float %v1 %77
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Function_float %ref %82
+         %84 = OpLoad %float %83
+         %85 = OpFOrdEqual %bool %80 %84
+               OpStore %x_86_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Function_float %v1 %90
+         %92 = OpLoad %float %91
+         %94 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Function_float %ref %95
+         %97 = OpLoad %float %96
+         %98 = OpFOrdEqual %bool %92 %97
+               OpStore %x_85 %98
+         %99 = OpLoad %bool %x_85
+               OpStore %x_86_phi %99
+               OpBranch %86
+         %86 = OpLabel
+        %100 = OpLoad %bool %x_86_phi
+               OpStore %x_98_phi %100
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %104 = OpLoad %int %103
+        %105 = OpAccessChain %_ptr_Function_float %v1 %104
+        %106 = OpLoad %float %105
+        %107 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Function_float %ref %108
+        %110 = OpLoad %float %109
+        %111 = OpFOrdEqual %bool %106 %110
+               OpStore %x_97 %111
+        %112 = OpLoad %bool %x_97
+               OpStore %x_98_phi %112
+               OpBranch %101
+        %101 = OpLabel
+        %113 = OpLoad %bool %x_98_phi
+               OpStore %x_110_phi %113
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %117 = OpLoad %int %116
+        %118 = OpAccessChain %_ptr_Function_float %v1 %117
+        %119 = OpLoad %float %118
+        %120 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Function_float %ref %121
+        %123 = OpLoad %float %122
+        %124 = OpFOrdEqual %bool %119 %123
+               OpStore %x_109 %124
+        %125 = OpLoad %bool %x_109
+               OpStore %x_110_phi %125
+               OpBranch %114
+        %114 = OpLabel
+        %126 = OpLoad %bool %x_110_phi
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %129
+        %128 = OpLabel
+        %130 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %133 = OpLoad %int %132
+        %134 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %135 = OpLoad %int %134
+        %136 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %137 = OpLoad %int %136
+        %138 = OpConvertSToF %float %131
+        %139 = OpConvertSToF %float %133
+        %140 = OpConvertSToF %float %135
+        %141 = OpConvertSToF %float %137
+        %142 = OpCompositeConstruct %v4float %138 %139 %140 %141
+               OpStore %x_GLF_color %142
+               OpBranch %127
+        %129 = OpLabel
+        %143 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %144 = OpLoad %int %143
+        %145 = OpAccessChain %_ptr_Function_float %v1 %144
+        %146 = OpLoad %float %145
+        %147 = OpCompositeConstruct %v4float %146 %146 %146 %146
+               OpStore %x_GLF_color %147
+               OpBranch %127
+        %127 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %148
+%tint_symbol = OpFunctionParameter %main_out
+        %152 = OpLabel
+        %153 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %153
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %155 = OpLabel
+        %156 = OpFunctionCall %void %main_1
+        %158 = OpLoad %v4float %x_GLF_color
+        %159 = OpCompositeConstruct %main_out %158
+        %157 = OpFunctionCall %void %tint_symbol_2 %159
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..281628c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,102 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var ref : vec4<f32>;
+  var x_85 : bool;
+  var x_97 : bool;
+  var x_109 : bool;
+  var x_86_phi : bool;
+  var x_98_phi : bool;
+  var x_110_phi : bool;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  a = pack4x8unorm(vec4<f32>(x_36, x_36, x_36, x_36));
+  let x_39 : u32 = a;
+  v1 = unpack4x8snorm(x_39);
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_48 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_51 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_54 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_57 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_60 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_63 : f32 = x_6.x_GLF_uniform_float_values[1];
+  ref = vec4<f32>((-(x_42) / x_45), (-(x_48) / x_51), (-(x_54) / x_57), (-(x_60) / x_63));
+  let x_67 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_69 : f32 = v1[x_67];
+  let x_71 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_73 : f32 = ref[x_71];
+  let x_74 : bool = (x_69 == x_73);
+  x_86_phi = x_74;
+  if (x_74) {
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_80 : f32 = v1[x_78];
+    let x_82 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_84 : f32 = ref[x_82];
+    x_85 = (x_80 == x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_98_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_92 : f32 = v1[x_90];
+    let x_94 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_96 : f32 = ref[x_94];
+    x_97 = (x_92 == x_96);
+    x_98_phi = x_97;
+  }
+  let x_98 : bool = x_98_phi;
+  x_110_phi = x_98;
+  if (x_98) {
+    let x_102 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_104 : f32 = v1[x_102];
+    let x_106 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_108 : f32 = ref[x_106];
+    x_109 = (x_104 == x_108);
+    x_110_phi = x_109;
+  }
+  let x_110 : bool = x_110_phi;
+  if (x_110) {
+    let x_115 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_118 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_121 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_124 : i32 = x_10.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_115), f32(x_118), f32(x_121), f32(x_124));
+  } else {
+    let x_128 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_130 : f32 = v1[x_128];
+    x_GLF_color = vec4<f32>(x_130, x_130, x_130, x_130);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
new file mode 100644
index 0000000..281628c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
@@ -0,0 +1,102 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var ref : vec4<f32>;
+  var x_85 : bool;
+  var x_97 : bool;
+  var x_109 : bool;
+  var x_86_phi : bool;
+  var x_98_phi : bool;
+  var x_110_phi : bool;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  a = pack4x8unorm(vec4<f32>(x_36, x_36, x_36, x_36));
+  let x_39 : u32 = a;
+  v1 = unpack4x8snorm(x_39);
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_48 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_51 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_54 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_57 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_60 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_63 : f32 = x_6.x_GLF_uniform_float_values[1];
+  ref = vec4<f32>((-(x_42) / x_45), (-(x_48) / x_51), (-(x_54) / x_57), (-(x_60) / x_63));
+  let x_67 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_69 : f32 = v1[x_67];
+  let x_71 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_73 : f32 = ref[x_71];
+  let x_74 : bool = (x_69 == x_73);
+  x_86_phi = x_74;
+  if (x_74) {
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_80 : f32 = v1[x_78];
+    let x_82 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_84 : f32 = ref[x_82];
+    x_85 = (x_80 == x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_98_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_92 : f32 = v1[x_90];
+    let x_94 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_96 : f32 = ref[x_94];
+    x_97 = (x_92 == x_96);
+    x_98_phi = x_97;
+  }
+  let x_98 : bool = x_98_phi;
+  x_110_phi = x_98;
+  if (x_98) {
+    let x_102 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_104 : f32 = v1[x_102];
+    let x_106 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_108 : f32 = ref[x_106];
+    x_109 = (x_104 == x_108);
+    x_110_phi = x_109;
+  }
+  let x_110 : bool = x_110_phi;
+  if (x_110) {
+    let x_115 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_118 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_121 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_124 : i32 = x_10.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_115), f32(x_118), f32(x_121), f32(x_124));
+  } else {
+    let x_128 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_130 : f32 = v1[x_128];
+    x_GLF_color = vec4<f32>(x_130, x_130, x_130, x_130);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..67cbab7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,109 @@
+uint tint_pack4x8unorm(float4 param_0) {
+  uint4 i = uint4(round(clamp(param_0, 0.0, 1.0) * 255.0));
+  return (i.x | i.y << 8 | i.z << 16 | i.w << 24);
+}
+
+float4 tint_unpack4x8snorm(uint param_0) {
+  int j = int(param_0);
+  int4 i = int4(j << 24, j << 16, j << 8, j) >> 24;
+  return clamp(float4(i) / 127.0, -1.0, 1.0);
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+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() {
+  uint a = 0u;
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 ref = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_85 = false;
+  bool x_97 = false;
+  bool x_109 = false;
+  bool x_86_phi = false;
+  bool x_98_phi = false;
+  bool x_110_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = tint_pack4x8unorm(float4(x_36, x_36, x_36, x_36));
+  v1 = tint_unpack4x8snorm(a);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_45 = asfloat(x_6[1].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_48 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_51 = asfloat(x_6[1].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_54 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_57 = asfloat(x_6[1].x);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_60 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const float x_63 = asfloat(x_6[1].x);
+  ref = float4((-(x_42) / x_45), (-(x_48) / x_51), (-(x_54) / x_57), (-(x_60) / x_63));
+  const int x_67 = asint(x_10[1].x);
+  const float x_69 = v1[x_67];
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const int x_71 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const float x_73 = ref[x_71];
+  const bool x_74 = (x_69 == x_73);
+  x_86_phi = x_74;
+  if (x_74) {
+    const int x_78 = asint(x_10[3].x);
+    const float x_80 = v1[x_78];
+    const int x_82 = asint(x_10[2].x);
+    const float x_84 = ref[x_82];
+    x_85 = (x_80 == x_84);
+    x_86_phi = x_85;
+  }
+  const bool x_86 = x_86_phi;
+  x_98_phi = x_86;
+  if (x_86) {
+    const int x_90 = asint(x_10[2].x);
+    const float x_92 = v1[x_90];
+    const int x_94 = asint(x_10[3].x);
+    const float x_96 = ref[x_94];
+    x_97 = (x_92 == x_96);
+    x_98_phi = x_97;
+  }
+  const bool x_98 = x_98_phi;
+  x_110_phi = x_98;
+  if (x_98) {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_102 = asint(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_104 = v1[x_102];
+    const int x_106 = asint(x_10[1].x);
+    const float x_108 = ref[x_106];
+    x_109 = (x_104 == x_108);
+    x_110_phi = x_109;
+  }
+  if (x_110_phi) {
+    const int x_115 = asint(x_10[3].x);
+    const int x_118 = asint(x_10[1].x);
+    const int x_121 = asint(x_10[1].x);
+    const int x_124 = asint(x_10[3].x);
+    x_GLF_color = float4(float(x_115), float(x_118), float(x_121), float(x_124));
+  } else {
+    const int x_128 = asint(x_10[1].x);
+    const float x_130 = v1[x_128];
+    x_GLF_color = float4(x_130, x_130, x_130, x_130);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d135092
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.msl
@@ -0,0 +1,110 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 v1 = 0.0f;
+  float4 ref = 0.0f;
+  bool x_85 = false;
+  bool x_97 = false;
+  bool x_109 = false;
+  bool x_86_phi = false;
+  bool x_98_phi = false;
+  bool x_110_phi = false;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  a = pack_float_to_unorm4x8(float4(x_36, x_36, x_36, x_36));
+  uint const x_39 = a;
+  v1 = unpack_snorm4x8_to_float(x_39);
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_45 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_48 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_51 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_54 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_57 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_60 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_63 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  ref = float4((-(x_42) / x_45), (-(x_48) / x_51), (-(x_54) / x_57), (-(x_60) / x_63));
+  int const x_67 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  float const x_69 = v1[x_67];
+  int const x_71 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  float const x_73 = ref[x_71];
+  bool const x_74 = (x_69 == x_73);
+  x_86_phi = x_74;
+  if (x_74) {
+    int const x_78 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_80 = v1[x_78];
+    int const x_82 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_84 = ref[x_82];
+    x_85 = (x_80 == x_84);
+    x_86_phi = x_85;
+  }
+  bool const x_86 = x_86_phi;
+  x_98_phi = x_86;
+  if (x_86) {
+    int const x_90 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_92 = v1[x_90];
+    int const x_94 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_96 = ref[x_94];
+    x_97 = (x_92 == x_96);
+    x_98_phi = x_97;
+  }
+  bool const x_98 = x_98_phi;
+  x_110_phi = x_98;
+  if (x_98) {
+    int const x_102 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_104 = v1[x_102];
+    int const x_106 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_108 = ref[x_106];
+    x_109 = (x_104 == x_108);
+    x_110_phi = x_109;
+  }
+  bool const x_110 = x_110_phi;
+  if (x_110) {
+    int const x_115 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_118 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_121 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_124 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_115), float(x_118), float(x_121), float(x_124));
+  } else {
+    int const x_128 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_130 = v1[x_128];
+    *(tint_symbol_4) = float4(x_130, x_130, x_130, x_130);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..a1804d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,239 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 160
+; Schema: 0
+               OpCapability Shader
+         %45 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %ref "ref"
+               OpName %x_85 "x_85"
+               OpName %x_97 "x_97"
+               OpName %x_109 "x_109"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_110_phi "x_110_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %148 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %26
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+        %ref = OpVariable %_ptr_Function_v4float Function %17
+       %x_85 = OpVariable %_ptr_Function_bool Function %33
+       %x_97 = OpVariable %_ptr_Function_bool Function %33
+      %x_109 = OpVariable %_ptr_Function_bool Function %33
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %33
+   %x_98_phi = OpVariable %_ptr_Function_bool Function %33
+  %x_110_phi = OpVariable %_ptr_Function_bool Function %33
+         %42 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %46 = OpCompositeConstruct %v4float %43 %43 %43 %43
+         %44 = OpExtInst %uint %45 PackUnorm4x8 %46
+               OpStore %a %44
+         %47 = OpLoad %uint %a
+         %48 = OpExtInst %v4float %45 UnpackSnorm4x8 %47
+               OpStore %v1 %48
+         %49 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %65 = OpLoad %float %64
+         %66 = OpFNegate %float %50
+         %67 = OpFDiv %float %66 %53
+         %68 = OpFNegate %float %55
+         %69 = OpFDiv %float %68 %57
+         %70 = OpFNegate %float %59
+         %71 = OpFDiv %float %70 %61
+         %72 = OpFNegate %float %63
+         %73 = OpFDiv %float %72 %65
+         %74 = OpCompositeConstruct %v4float %67 %69 %71 %73
+               OpStore %ref %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %79 = OpAccessChain %_ptr_Function_float %v1 %77
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Function_float %ref %82
+         %84 = OpLoad %float %83
+         %85 = OpFOrdEqual %bool %80 %84
+               OpStore %x_86_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Function_float %v1 %90
+         %92 = OpLoad %float %91
+         %94 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Function_float %ref %95
+         %97 = OpLoad %float %96
+         %98 = OpFOrdEqual %bool %92 %97
+               OpStore %x_85 %98
+         %99 = OpLoad %bool %x_85
+               OpStore %x_86_phi %99
+               OpBranch %86
+         %86 = OpLabel
+        %100 = OpLoad %bool %x_86_phi
+               OpStore %x_98_phi %100
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %104 = OpLoad %int %103
+        %105 = OpAccessChain %_ptr_Function_float %v1 %104
+        %106 = OpLoad %float %105
+        %107 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Function_float %ref %108
+        %110 = OpLoad %float %109
+        %111 = OpFOrdEqual %bool %106 %110
+               OpStore %x_97 %111
+        %112 = OpLoad %bool %x_97
+               OpStore %x_98_phi %112
+               OpBranch %101
+        %101 = OpLabel
+        %113 = OpLoad %bool %x_98_phi
+               OpStore %x_110_phi %113
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %117 = OpLoad %int %116
+        %118 = OpAccessChain %_ptr_Function_float %v1 %117
+        %119 = OpLoad %float %118
+        %120 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Function_float %ref %121
+        %123 = OpLoad %float %122
+        %124 = OpFOrdEqual %bool %119 %123
+               OpStore %x_109 %124
+        %125 = OpLoad %bool %x_109
+               OpStore %x_110_phi %125
+               OpBranch %114
+        %114 = OpLabel
+        %126 = OpLoad %bool %x_110_phi
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %129
+        %128 = OpLabel
+        %130 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %133 = OpLoad %int %132
+        %134 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %135 = OpLoad %int %134
+        %136 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %137 = OpLoad %int %136
+        %138 = OpConvertSToF %float %131
+        %139 = OpConvertSToF %float %133
+        %140 = OpConvertSToF %float %135
+        %141 = OpConvertSToF %float %137
+        %142 = OpCompositeConstruct %v4float %138 %139 %140 %141
+               OpStore %x_GLF_color %142
+               OpBranch %127
+        %129 = OpLabel
+        %143 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %144 = OpLoad %int %143
+        %145 = OpAccessChain %_ptr_Function_float %v1 %144
+        %146 = OpLoad %float %145
+        %147 = OpCompositeConstruct %v4float %146 %146 %146 %146
+               OpStore %x_GLF_color %147
+               OpBranch %127
+        %127 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %148
+%tint_symbol = OpFunctionParameter %main_out
+        %152 = OpLabel
+        %153 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %153
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %155 = OpLabel
+        %156 = OpFunctionCall %void %main_1
+        %158 = OpLoad %v4float %x_GLF_color
+        %159 = OpCompositeConstruct %main_out %158
+        %157 = OpFunctionCall %void %tint_symbol_2 %159
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..281628c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,102 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var ref : vec4<f32>;
+  var x_85 : bool;
+  var x_97 : bool;
+  var x_109 : bool;
+  var x_86_phi : bool;
+  var x_98_phi : bool;
+  var x_110_phi : bool;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  a = pack4x8unorm(vec4<f32>(x_36, x_36, x_36, x_36));
+  let x_39 : u32 = a;
+  v1 = unpack4x8snorm(x_39);
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_48 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_51 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_54 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_57 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_60 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_63 : f32 = x_6.x_GLF_uniform_float_values[1];
+  ref = vec4<f32>((-(x_42) / x_45), (-(x_48) / x_51), (-(x_54) / x_57), (-(x_60) / x_63));
+  let x_67 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_69 : f32 = v1[x_67];
+  let x_71 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_73 : f32 = ref[x_71];
+  let x_74 : bool = (x_69 == x_73);
+  x_86_phi = x_74;
+  if (x_74) {
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_80 : f32 = v1[x_78];
+    let x_82 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_84 : f32 = ref[x_82];
+    x_85 = (x_80 == x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_98_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_92 : f32 = v1[x_90];
+    let x_94 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_96 : f32 = ref[x_94];
+    x_97 = (x_92 == x_96);
+    x_98_phi = x_97;
+  }
+  let x_98 : bool = x_98_phi;
+  x_110_phi = x_98;
+  if (x_98) {
+    let x_102 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_104 : f32 = v1[x_102];
+    let x_106 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_108 : f32 = ref[x_106];
+    x_109 = (x_104 == x_108);
+    x_110_phi = x_109;
+  }
+  let x_110 : bool = x_110_phi;
+  if (x_110) {
+    let x_115 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_118 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_121 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_124 : i32 = x_10.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_115), f32(x_118), f32(x_121), f32(x_124));
+  } else {
+    let x_128 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_130 : f32 = v1[x_128];
+    x_GLF_color = vec4<f32>(x_130, x_130, x_130, x_130);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm
new file mode 100644
index 0000000..07cab15
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm
@@ -0,0 +1,133 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %count0 "count0"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %count1 "count1"
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_3 = OpConstant %int 3
+       %main = OpFunction %void None %11
+         %27 = OpLabel
+     %count0 = OpVariable %_ptr_Function_int Function
+     %count1 = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %29 = OpLoad %int %28
+               OpStore %count0 %29
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %31 = OpLoad %int %30
+               OpStore %count1 %31
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %33 = OpLoad %int %32
+               OpStore %i %33
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %38 %40
+               OpBranchConditional %41 %42 %35
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+               OpSelectionMerge %44 None
+               OpSwitch %43 %44 0 %45 1 %45 3 %46 2 %46
+         %45 = OpLabel
+         %47 = OpLoad %int %count0
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %count0 %48
+               OpBranch %46
+         %46 = OpLabel
+         %49 = OpLoad %int %count1
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %count1 %50
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpIAdd %int %51 %int_1
+               OpStore %i %52
+               OpBranch %34
+         %35 = OpLabel
+         %53 = OpLoad %int %count1
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %70
+         %72 = OpCompositeConstruct %v4float %62 %65 %68 %71
+               OpStore %_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+         %77 = OpLoad %int %count0
+         %78 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpINotEqual %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpCompositeConstruct %v4float %85 %85 %85 %85
+               OpStore %_GLF_color %86
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..bb5b30e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,78 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int count0 = 0;
+  int count1 = 0;
+  int i = 0;
+  const int x_29 = asint(x_6[2].x);
+  count0 = x_29;
+  const int x_31 = asint(x_6[2].x);
+  count1 = x_31;
+  const int x_33 = asint(x_6[2].x);
+  i = x_33;
+  while (true) {
+    const int x_38 = i;
+    const int x_40 = asint(x_6[4].x);
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 0:
+      case 1: {
+        count0 = (count0 + 1);
+        /* fallthrough */
+      }
+      case 2:
+      case 3: {
+        count1 = (count1 + 1);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_53 = count1;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_55 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_53 == x_55)) {
+    const int x_61 = asint(x_6[3].x);
+    const int x_64 = asint(x_6[2].x);
+    const int x_67 = asint(x_6[2].x);
+    const int x_70 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+  } else {
+    const int x_74 = asint(x_6[2].x);
+    const float x_75 = float(x_74);
+    x_GLF_color = float4(x_75, x_75, x_75, x_75);
+  }
+  const int x_77 = count0;
+  const int x_79 = asint(x_6[1].x);
+  if ((x_77 != x_79)) {
+    const int x_84 = asint(x_6[2].x);
+    const float x_85 = float(x_84);
+    x_GLF_color = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4f33cd7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int count0 = 0;
+  int count1 = 0;
+  int i = 0;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  count0 = x_29;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  count1 = x_31;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_33;
+  while (true) {
+    int const x_38 = i;
+    int const x_40 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    int const x_43 = i;
+    switch(x_43) {
+      case 0:
+      case 1: {
+        int const x_47 = count0;
+        count0 = (x_47 + 1);
+        /* fallthrough */
+      }
+      case 2:
+      case 3: {
+        int const x_49 = count1;
+        count1 = (x_49 + 1);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_51 = i;
+      i = (x_51 + 1);
+    }
+  }
+  int const x_53 = count1;
+  int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_53 == x_55)) {
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_70 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+  } else {
+    int const x_74 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_75 = float(x_74);
+    *(tint_symbol_4) = float4(x_75, x_75, x_75, x_75);
+  }
+  int const x_77 = count0;
+  int const x_79 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_77 != x_79)) {
+    int const x_84 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_85 = float(x_84);
+    *(tint_symbol_4) = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4075f23
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,173 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 106
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %count0 "count0"
+               OpName %count1 "count1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+         %94 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+     %count0 = OpVariable %_ptr_Function_int Function %21
+     %count1 = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %28 = OpLoad %int %27
+               OpStore %count0 %28
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %30 = OpLoad %int %29
+               OpStore %count1 %30
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %i %32
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %37 %40
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %34
+         %43 = OpLabel
+         %46 = OpLoad %int %i
+               OpSelectionMerge %47 None
+               OpSwitch %46 %48 0 %49 1 %49 2 %50 3 %50
+         %49 = OpLabel
+         %51 = OpLoad %int %count0
+         %53 = OpIAdd %int %51 %int_1
+               OpStore %count0 %53
+               OpBranch %50
+         %50 = OpLabel
+         %54 = OpLoad %int %count1
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %count1 %55
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpIAdd %int %56 %int_1
+               OpStore %i %57
+               OpBranch %33
+         %34 = OpLabel
+         %58 = OpLoad %int %count1
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpIEqual %bool %58 %61
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %68
+         %76 = OpConvertSToF %float %70
+         %77 = OpConvertSToF %float %72
+         %78 = OpConvertSToF %float %74
+         %79 = OpCompositeConstruct %v4float %75 %76 %77 %78
+               OpStore %x_GLF_color %79
+               OpBranch %63
+         %65 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpCompositeConstruct %v4float %82 %82 %82 %82
+               OpStore %x_GLF_color %83
+               OpBranch %63
+         %63 = OpLabel
+         %84 = OpLoad %int %count0
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpINotEqual %bool %84 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpCompositeConstruct %v4float %92 %92 %92 %92
+               OpStore %x_GLF_color %93
+               OpBranch %88
+         %88 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %94
+%tint_symbol = OpFunctionParameter %main_out
+         %98 = OpLabel
+         %99 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %99
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %101 = OpLabel
+        %102 = OpFunctionCall %void %main_1
+        %104 = OpLoad %v4float %x_GLF_color
+        %105 = OpCompositeConstruct %main_out %104
+        %103 = OpFunctionCall %void %tint_symbol_2 %105
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c70fd11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,81 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var count0 : i32;
+  var count1 : i32;
+  var i : i32;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[2];
+  count0 = x_29;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[2];
+  count1 = x_31;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_33;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[4];
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    let x_43 : i32 = i;
+    switch(x_43) {
+      case 0, 1: {
+        let x_47 : i32 = count0;
+        count0 = (x_47 + 1);
+        fallthrough;
+      }
+      case 2, 3: {
+        let x_49 : i32 = count1;
+        count1 = (x_49 + 1);
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_51 : i32 = i;
+      i = (x_51 + 1);
+    }
+  }
+  let x_53 : i32 = count1;
+  let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_53 == x_55)) {
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_61), f32(x_64), f32(x_67), f32(x_70));
+  } else {
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_75 : f32 = f32(x_74);
+    x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+  }
+  let x_77 : i32 = count0;
+  let x_79 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_77 != x_79)) {
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
new file mode 100644
index 0000000..c70fd11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
@@ -0,0 +1,81 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var count0 : i32;
+  var count1 : i32;
+  var i : i32;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[2];
+  count0 = x_29;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[2];
+  count1 = x_31;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_33;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[4];
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    let x_43 : i32 = i;
+    switch(x_43) {
+      case 0, 1: {
+        let x_47 : i32 = count0;
+        count0 = (x_47 + 1);
+        fallthrough;
+      }
+      case 2, 3: {
+        let x_49 : i32 = count1;
+        count1 = (x_49 + 1);
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_51 : i32 = i;
+      i = (x_51 + 1);
+    }
+  }
+  let x_53 : i32 = count1;
+  let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_53 == x_55)) {
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_61), f32(x_64), f32(x_67), f32(x_70));
+  } else {
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_75 : f32 = f32(x_74);
+    x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+  }
+  let x_77 : i32 = count0;
+  let x_79 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_77 != x_79)) {
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..bb5b30e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,78 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int count0 = 0;
+  int count1 = 0;
+  int i = 0;
+  const int x_29 = asint(x_6[2].x);
+  count0 = x_29;
+  const int x_31 = asint(x_6[2].x);
+  count1 = x_31;
+  const int x_33 = asint(x_6[2].x);
+  i = x_33;
+  while (true) {
+    const int x_38 = i;
+    const int x_40 = asint(x_6[4].x);
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 0:
+      case 1: {
+        count0 = (count0 + 1);
+        /* fallthrough */
+      }
+      case 2:
+      case 3: {
+        count1 = (count1 + 1);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_53 = count1;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_55 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_53 == x_55)) {
+    const int x_61 = asint(x_6[3].x);
+    const int x_64 = asint(x_6[2].x);
+    const int x_67 = asint(x_6[2].x);
+    const int x_70 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+  } else {
+    const int x_74 = asint(x_6[2].x);
+    const float x_75 = float(x_74);
+    x_GLF_color = float4(x_75, x_75, x_75, x_75);
+  }
+  const int x_77 = count0;
+  const int x_79 = asint(x_6[1].x);
+  if ((x_77 != x_79)) {
+    const int x_84 = asint(x_6[2].x);
+    const float x_85 = float(x_84);
+    x_GLF_color = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4f33cd7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int count0 = 0;
+  int count1 = 0;
+  int i = 0;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  count0 = x_29;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  count1 = x_31;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_33;
+  while (true) {
+    int const x_38 = i;
+    int const x_40 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    int const x_43 = i;
+    switch(x_43) {
+      case 0:
+      case 1: {
+        int const x_47 = count0;
+        count0 = (x_47 + 1);
+        /* fallthrough */
+      }
+      case 2:
+      case 3: {
+        int const x_49 = count1;
+        count1 = (x_49 + 1);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_51 = i;
+      i = (x_51 + 1);
+    }
+  }
+  int const x_53 = count1;
+  int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_53 == x_55)) {
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_70 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+  } else {
+    int const x_74 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_75 = float(x_74);
+    *(tint_symbol_4) = float4(x_75, x_75, x_75, x_75);
+  }
+  int const x_77 = count0;
+  int const x_79 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_77 != x_79)) {
+    int const x_84 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_85 = float(x_84);
+    *(tint_symbol_4) = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4075f23
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,173 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 106
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %count0 "count0"
+               OpName %count1 "count1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+         %94 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+     %count0 = OpVariable %_ptr_Function_int Function %21
+     %count1 = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %28 = OpLoad %int %27
+               OpStore %count0 %28
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %30 = OpLoad %int %29
+               OpStore %count1 %30
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %i %32
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %37 %40
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %34
+         %43 = OpLabel
+         %46 = OpLoad %int %i
+               OpSelectionMerge %47 None
+               OpSwitch %46 %48 0 %49 1 %49 2 %50 3 %50
+         %49 = OpLabel
+         %51 = OpLoad %int %count0
+         %53 = OpIAdd %int %51 %int_1
+               OpStore %count0 %53
+               OpBranch %50
+         %50 = OpLabel
+         %54 = OpLoad %int %count1
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %count1 %55
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpIAdd %int %56 %int_1
+               OpStore %i %57
+               OpBranch %33
+         %34 = OpLabel
+         %58 = OpLoad %int %count1
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpIEqual %bool %58 %61
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %68
+         %76 = OpConvertSToF %float %70
+         %77 = OpConvertSToF %float %72
+         %78 = OpConvertSToF %float %74
+         %79 = OpCompositeConstruct %v4float %75 %76 %77 %78
+               OpStore %x_GLF_color %79
+               OpBranch %63
+         %65 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpCompositeConstruct %v4float %82 %82 %82 %82
+               OpStore %x_GLF_color %83
+               OpBranch %63
+         %63 = OpLabel
+         %84 = OpLoad %int %count0
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpINotEqual %bool %84 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpCompositeConstruct %v4float %92 %92 %92 %92
+               OpStore %x_GLF_color %93
+               OpBranch %88
+         %88 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %94
+%tint_symbol = OpFunctionParameter %main_out
+         %98 = OpLabel
+         %99 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %99
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %101 = OpLabel
+        %102 = OpFunctionCall %void %main_1
+        %104 = OpLoad %v4float %x_GLF_color
+        %105 = OpCompositeConstruct %main_out %104
+        %103 = OpFunctionCall %void %tint_symbol_2 %105
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c70fd11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,81 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var count0 : i32;
+  var count1 : i32;
+  var i : i32;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[2];
+  count0 = x_29;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[2];
+  count1 = x_31;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_33;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[4];
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    let x_43 : i32 = i;
+    switch(x_43) {
+      case 0, 1: {
+        let x_47 : i32 = count0;
+        count0 = (x_47 + 1);
+        fallthrough;
+      }
+      case 2, 3: {
+        let x_49 : i32 = count1;
+        count1 = (x_49 + 1);
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_51 : i32 = i;
+      i = (x_51 + 1);
+    }
+  }
+  let x_53 : i32 = count1;
+  let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_53 == x_55)) {
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_61), f32(x_64), f32(x_67), f32(x_70));
+  } else {
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_75 : f32 = f32(x_74);
+    x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+  }
+  let x_77 : i32 = count0;
+  let x_79 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_77 != x_79)) {
+    let x_84 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm
new file mode 100644
index 0000000..5eb0519
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm
@@ -0,0 +1,103 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %data "data"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_float_uint_2_0 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_arr_float_uint_2_0 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2_0
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %13
+         %31 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_2 Function
+          %a = OpVariable %_ptr_Function_float Function
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %33 = OpLoad %int %32
+         %34 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Function_float %data %33
+               OpStore %36 %35
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Function_float %data %38
+               OpStore %41 %40
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpBitwiseAnd %int %43 %int_2
+         %45 = OpBitwiseXor %int %int_1 %44
+         %46 = OpAccessChain %_ptr_Function_float %data %45
+         %47 = OpLoad %float %46
+               OpStore %a %47
+         %48 = OpLoad %float %a
+         %49 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpFOrdEqual %bool %48 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %56 = OpLoad %float %55
+         %57 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %62 = OpLoad %float %61
+         %63 = OpCompositeConstruct %v4float %56 %58 %60 %62
+               OpStore %_GLF_color %63
+               OpBranch %52
+         %54 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %65 = OpLoad %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %_GLF_color %66
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..596a485
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,53 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float data[2] = (float[2])0;
+  float a = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_33 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_35 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  data[x_33] = x_35;
+  const int x_38 = asint(x_6[1].x);
+  const float x_40 = asfloat(x_8[1].x);
+  data[x_38] = x_40;
+  const int x_43 = asint(x_6[1].x);
+  const float x_47 = data[(1 ^ (x_43 & 2))];
+  a = x_47;
+  const float x_48 = a;
+  const float x_50 = asfloat(x_8[1].x);
+  if ((x_48 == x_50)) {
+    const float x_56 = asfloat(x_8[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_58 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_60 = asfloat(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_62 = asfloat(x_8[1].x);
+    x_GLF_color = float4(x_56, x_58, x_60, x_62);
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_65 = asfloat(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4de038f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.msl
@@ -0,0 +1,68 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 data = {};
+  float a = 0.0f;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_35 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  data.arr[x_33] = x_35;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_40 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  data.arr[x_38] = x_40;
+  int const x_43 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_47 = data.arr[(1 ^ (x_43 & 2))];
+  a = x_47;
+  float const x_48 = a;
+  float const x_50 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_48 == x_50)) {
+    float const x_56 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    float const x_58 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_60 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_62 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_4) = float4(x_56, x_58, x_60, x_62);
+  } else {
+    float const x_65 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2d8d7ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,139 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 84
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_arr_float_uint_2_0 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2_0 = OpTypePointer Function %_arr_float_uint_2_0
+         %26 = OpConstantNull %_arr_float_uint_2_0
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %72 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_2_0 Function %26
+          %a = OpVariable %_ptr_Function_float Function %29
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %34 = OpLoad %int %33
+         %36 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Function_float %data %34
+               OpStore %38 %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Function_float %data %41
+               OpStore %44 %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %46 = OpLoad %int %45
+         %48 = OpBitwiseAnd %int %46 %int_2
+         %49 = OpBitwiseXor %int %int_1 %48
+         %50 = OpAccessChain %_ptr_Function_float %data %49
+         %51 = OpLoad %float %50
+               OpStore %a %51
+         %52 = OpLoad %float %a
+         %53 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %54 = OpLoad %float %53
+         %55 = OpFOrdEqual %bool %52 %54
+               OpSelectionMerge %57 None
+               OpBranchConditional %55 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %67 = OpLoad %float %66
+         %68 = OpCompositeConstruct %v4float %61 %63 %65 %67
+               OpStore %x_GLF_color %68
+               OpBranch %57
+         %59 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %70 = OpLoad %float %69
+         %71 = OpCompositeConstruct %v4float %70 %70 %70 %70
+               OpStore %x_GLF_color %71
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %72
+%tint_symbol = OpFunctionParameter %main_out
+         %76 = OpLabel
+         %77 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %77
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %79 = OpLabel
+         %80 = OpFunctionCall %void %main_1
+         %82 = OpLoad %v4float %x_GLF_color
+         %83 = OpCompositeConstruct %main_out %82
+         %81 = OpFunctionCall %void %tint_symbol_2 %83
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e5869f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,57 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 2>;
+  var a : f32;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_35 : f32 = x_8.x_GLF_uniform_float_values[0];
+  data[x_33] = x_35;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_40 : f32 = x_8.x_GLF_uniform_float_values[1];
+  data[x_38] = x_40;
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_47 : f32 = data[(1 ^ (x_43 & 2))];
+  a = x_47;
+  let x_48 : f32 = a;
+  let x_50 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_48 == x_50)) {
+    let x_56 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_58 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_60 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_62 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_56, x_58, x_60, x_62);
+  } else {
+    let x_65 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
new file mode 100644
index 0000000..e5869f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
@@ -0,0 +1,57 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 2>;
+  var a : f32;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_35 : f32 = x_8.x_GLF_uniform_float_values[0];
+  data[x_33] = x_35;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_40 : f32 = x_8.x_GLF_uniform_float_values[1];
+  data[x_38] = x_40;
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_47 : f32 = data[(1 ^ (x_43 & 2))];
+  a = x_47;
+  let x_48 : f32 = a;
+  let x_50 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_48 == x_50)) {
+    let x_56 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_58 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_60 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_62 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_56, x_58, x_60, x_62);
+  } else {
+    let x_65 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..596a485
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,53 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float data[2] = (float[2])0;
+  float a = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_33 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_35 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  data[x_33] = x_35;
+  const int x_38 = asint(x_6[1].x);
+  const float x_40 = asfloat(x_8[1].x);
+  data[x_38] = x_40;
+  const int x_43 = asint(x_6[1].x);
+  const float x_47 = data[(1 ^ (x_43 & 2))];
+  a = x_47;
+  const float x_48 = a;
+  const float x_50 = asfloat(x_8[1].x);
+  if ((x_48 == x_50)) {
+    const float x_56 = asfloat(x_8[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_58 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_60 = asfloat(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_62 = asfloat(x_8[1].x);
+    x_GLF_color = float4(x_56, x_58, x_60, x_62);
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_65 = asfloat(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4de038f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.msl
@@ -0,0 +1,68 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 data = {};
+  float a = 0.0f;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_35 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  data.arr[x_33] = x_35;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_40 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  data.arr[x_38] = x_40;
+  int const x_43 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_47 = data.arr[(1 ^ (x_43 & 2))];
+  a = x_47;
+  float const x_48 = a;
+  float const x_50 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_48 == x_50)) {
+    float const x_56 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    float const x_58 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_60 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_62 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_4) = float4(x_56, x_58, x_60, x_62);
+  } else {
+    float const x_65 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2d8d7ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,139 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 84
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2_0 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_arr_float_uint_2_0 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2_0 = OpTypePointer Function %_arr_float_uint_2_0
+         %26 = OpConstantNull %_arr_float_uint_2_0
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %72 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_2_0 Function %26
+          %a = OpVariable %_ptr_Function_float Function %29
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %34 = OpLoad %int %33
+         %36 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Function_float %data %34
+               OpStore %38 %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Function_float %data %41
+               OpStore %44 %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %46 = OpLoad %int %45
+         %48 = OpBitwiseAnd %int %46 %int_2
+         %49 = OpBitwiseXor %int %int_1 %48
+         %50 = OpAccessChain %_ptr_Function_float %data %49
+         %51 = OpLoad %float %50
+               OpStore %a %51
+         %52 = OpLoad %float %a
+         %53 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %54 = OpLoad %float %53
+         %55 = OpFOrdEqual %bool %52 %54
+               OpSelectionMerge %57 None
+               OpBranchConditional %55 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %67 = OpLoad %float %66
+         %68 = OpCompositeConstruct %v4float %61 %63 %65 %67
+               OpStore %x_GLF_color %68
+               OpBranch %57
+         %59 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %70 = OpLoad %float %69
+         %71 = OpCompositeConstruct %v4float %70 %70 %70 %70
+               OpStore %x_GLF_color %71
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %72
+%tint_symbol = OpFunctionParameter %main_out
+         %76 = OpLabel
+         %77 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %77
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %79 = OpLabel
+         %80 = OpFunctionCall %void %main_1
+         %82 = OpLoad %v4float %x_GLF_color
+         %83 = OpCompositeConstruct %main_out %82
+         %81 = OpFunctionCall %void %tint_symbol_2 %83
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e5869f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,57 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 2>;
+  var a : f32;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_35 : f32 = x_8.x_GLF_uniform_float_values[0];
+  data[x_33] = x_35;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_40 : f32 = x_8.x_GLF_uniform_float_values[1];
+  data[x_38] = x_40;
+  let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_47 : f32 = data[(1 ^ (x_43 & 2))];
+  a = x_47;
+  let x_48 : f32 = a;
+  let x_50 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_48 == x_50)) {
+    let x_56 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_58 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_60 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_62 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_56, x_58, x_60, x_62);
+  } else {
+    let x_65 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_65, x_65, x_65, x_65);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm
new file mode 100644
index 0000000..bb91929
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm
@@ -0,0 +1,73 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+       %bool = OpTypeBool
+       %main = OpFunction %void None %13
+         %26 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+          %7 = OpLoad %int %27
+         %28 = OpConvertSToF %float %7
+         %29 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+          %8 = OpLoad %int %29
+         %30 = OpConvertSToF %float %8
+         %31 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+          %9 = OpLoad %int %31
+         %32 = OpConvertSToF %float %9
+         %33 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %10 = OpLoad %int %33
+         %34 = OpConvertSToF %float %10
+         %35 = OpCompositeConstruct %v4float %28 %30 %32 %34
+               OpStore %_GLF_color %35
+         %36 = OpLoad %v4float %_GLF_color
+         %37 = OpFNegate %v4float %36
+         %38 = OpCompositeExtract %float %37 0
+         %39 = OpIsNan %bool %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %11 = OpLoad %int %42
+         %43 = OpConvertSToF %float %11
+         %44 = OpCompositeConstruct %v4float %43 %43 %43 %43
+               OpStore %_GLF_color %44
+               OpBranch %40
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9971bf0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,35 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_7 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_8 = asint(x_5[1].x);
+  const int x_9 = asint(x_5[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_10 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_7), float(x_8), float(x_9), float(x_10));
+  if (isnan(-(x_GLF_color).x)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_11 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_43 = float(x_11);
+    x_GLF_color = float4(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..7211d61
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_7 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_8 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_9 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_10 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_7), float(x_8), float(x_9), float(x_10));
+  float4 const x_36 = *(tint_symbol_4);
+  if (isnan((-(x_36)).x)) {
+    int const x_11 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    float const x_43 = float(x_11);
+    *(tint_symbol_4) = float4(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2b47873
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,98 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 59
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %47 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %23 = OpLoad %int %22
+         %25 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %31 = OpConvertSToF %float %23
+         %32 = OpConvertSToF %float %26
+         %33 = OpConvertSToF %float %28
+         %34 = OpConvertSToF %float %30
+         %35 = OpCompositeConstruct %v4float %31 %32 %33 %34
+               OpStore %x_GLF_color %35
+         %36 = OpLoad %v4float %x_GLF_color
+         %39 = OpFNegate %v4float %36
+         %40 = OpCompositeExtract %float %39 0
+         %37 = OpIsNan %bool %40
+               OpSelectionMerge %41 None
+               OpBranchConditional %37 %42 %41
+         %42 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpConvertSToF %float %44
+         %46 = OpCompositeConstruct %v4float %45 %45 %45 %45
+               OpStore %x_GLF_color %46
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %47
+%tint_symbol = OpFunctionParameter %main_out
+         %51 = OpLabel
+         %52 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %52
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %main_1
+         %57 = OpLoad %v4float %x_GLF_color
+         %58 = OpCompositeConstruct %main_out %57
+         %56 = OpFunctionCall %void %tint_symbol_2 %58
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..9ee635e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,36 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  let x_7 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_8 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_9 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_10 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_7), f32(x_8), f32(x_9), f32(x_10));
+  let x_36 : vec4<f32> = x_GLF_color;
+  if (isNan((-(x_36)).x)) {
+    let x_11 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_43 : f32 = f32(x_11);
+    x_GLF_color = vec4<f32>(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl
new file mode 100644
index 0000000..9ee635e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl
@@ -0,0 +1,36 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  let x_7 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_8 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_9 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_10 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_7), f32(x_8), f32(x_9), f32(x_10));
+  let x_36 : vec4<f32> = x_GLF_color;
+  if (isNan((-(x_36)).x)) {
+    let x_11 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_43 : f32 = f32(x_11);
+    x_GLF_color = vec4<f32>(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9971bf0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_7 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_8 = asint(x_5[1].x);
+  const int x_9 = asint(x_5[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_10 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_7), float(x_8), float(x_9), float(x_10));
+  if (isnan(-(x_GLF_color).x)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_11 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_43 = float(x_11);
+    x_GLF_color = float4(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..7211d61
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_7 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_8 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_9 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_10 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_7), float(x_8), float(x_9), float(x_10));
+  float4 const x_36 = *(tint_symbol_4);
+  if (isnan((-(x_36)).x)) {
+    int const x_11 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    float const x_43 = float(x_11);
+    *(tint_symbol_4) = float4(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2b47873
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,98 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 59
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %47 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %23 = OpLoad %int %22
+         %25 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %31 = OpConvertSToF %float %23
+         %32 = OpConvertSToF %float %26
+         %33 = OpConvertSToF %float %28
+         %34 = OpConvertSToF %float %30
+         %35 = OpCompositeConstruct %v4float %31 %32 %33 %34
+               OpStore %x_GLF_color %35
+         %36 = OpLoad %v4float %x_GLF_color
+         %39 = OpFNegate %v4float %36
+         %40 = OpCompositeExtract %float %39 0
+         %37 = OpIsNan %bool %40
+               OpSelectionMerge %41 None
+               OpBranchConditional %37 %42 %41
+         %42 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpConvertSToF %float %44
+         %46 = OpCompositeConstruct %v4float %45 %45 %45 %45
+               OpStore %x_GLF_color %46
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %47
+%tint_symbol = OpFunctionParameter %main_out
+         %51 = OpLabel
+         %52 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %52
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %main_1
+         %57 = OpLoad %v4float %x_GLF_color
+         %58 = OpCompositeConstruct %main_out %57
+         %56 = OpFunctionCall %void %tint_symbol_2 %58
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..9ee635e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,36 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  let x_7 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_8 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_9 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_10 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_7), f32(x_8), f32(x_9), f32(x_10));
+  let x_36 : vec4<f32> = x_GLF_color;
+  if (isNan((-(x_36)).x)) {
+    let x_11 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_43 : f32 = f32(x_11);
+    x_GLF_color = vec4<f32>(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm
new file mode 100644
index 0000000..f80464d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm
@@ -0,0 +1,94 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+  %int_10000 = OpConstant %int 10000
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %11
+         %27 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %29 = OpLoad %float %28
+         %30 = OpExtInst %float %1 Ldexp %29 %int_10000
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %32 = OpLoad %float %31
+         %33 = OpFOrdEqual %bool %30 %32
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %36
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpConvertSToF %float %41
+         %43 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpConvertSToF %float %44
+         %46 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpCompositeConstruct %v4float %39 %42 %45 %48
+               OpStore %_GLF_color %49
+               OpBranch %34
+         %36 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpCompositeConstruct %v4float %52 %55 %58 %61
+               OpStore %_GLF_color %62
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..410562b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,46 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_29 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_32 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((ldexp(x_29, 10000) == x_32)) {
+    const int x_38 = asint(x_7[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_41 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_44 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_47 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_38), float(x_41), float(x_44), float(x_47));
+  } else {
+    const int x_51 = asint(x_7[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_60 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_51), float(x_54), float(x_57), float(x_60));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5eeaa35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_7, thread float4* const tint_symbol_4) {
+  float const x_29 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  float const x_32 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  if ((ldexp(x_29, 10000) == x_32)) {
+    int const x_38 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_41 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_44 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_47 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_38), float(x_41), float(x_44), float(x_47));
+  } else {
+    int const x_51 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_57 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_51), float(x_54), float(x_57), float(x_60));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_7 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6a92dec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+         %32 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+  %int_10000 = OpConstant %int 10000
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %28 = OpLoad %float %27
+         %29 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %30 = OpLoad %float %29
+         %31 = OpExtInst %float %32 Ldexp %28 %int_10000
+         %34 = OpFOrdEqual %bool %31 %30
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %42
+         %50 = OpConvertSToF %float %44
+         %51 = OpConvertSToF %float %46
+         %52 = OpConvertSToF %float %48
+         %53 = OpCompositeConstruct %v4float %49 %50 %51 %52
+               OpStore %x_GLF_color %53
+               OpBranch %36
+         %38 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %55
+         %63 = OpConvertSToF %float %57
+         %64 = OpConvertSToF %float %59
+         %65 = OpConvertSToF %float %61
+         %66 = OpCompositeConstruct %v4float %62 %63 %64 %65
+               OpStore %x_GLF_color %66
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e029395
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+fn main_1() {
+  let x_29 : f32 = x_5.x_GLF_uniform_float_values[0];
+  let x_32 : f32 = x_5.x_GLF_uniform_float_values[0];
+  if ((ldexp(x_29, 10000) == x_32)) {
+    let x_38 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_41 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_47 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_38), f32(x_41), f32(x_44), f32(x_47));
+  } else {
+    let x_51 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_57 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_51), f32(x_54), f32(x_57), f32(x_60));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
new file mode 100644
index 0000000..e029395
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+fn main_1() {
+  let x_29 : f32 = x_5.x_GLF_uniform_float_values[0];
+  let x_32 : f32 = x_5.x_GLF_uniform_float_values[0];
+  if ((ldexp(x_29, 10000) == x_32)) {
+    let x_38 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_41 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_47 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_38), f32(x_41), f32(x_44), f32(x_47));
+  } else {
+    let x_51 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_57 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_51), f32(x_54), f32(x_57), f32(x_60));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..410562b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,46 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_29 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_32 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((ldexp(x_29, 10000) == x_32)) {
+    const int x_38 = asint(x_7[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_41 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_44 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_47 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_38), float(x_41), float(x_44), float(x_47));
+  } else {
+    const int x_51 = asint(x_7[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_60 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_51), float(x_54), float(x_57), float(x_60));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5eeaa35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_7, thread float4* const tint_symbol_4) {
+  float const x_29 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  float const x_32 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  if ((ldexp(x_29, 10000) == x_32)) {
+    int const x_38 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_41 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_44 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_47 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_38), float(x_41), float(x_44), float(x_47));
+  } else {
+    int const x_51 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_57 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_51), float(x_54), float(x_57), float(x_60));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_7 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6a92dec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+         %32 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+  %int_10000 = OpConstant %int 10000
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %28 = OpLoad %float %27
+         %29 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %30 = OpLoad %float %29
+         %31 = OpExtInst %float %32 Ldexp %28 %int_10000
+         %34 = OpFOrdEqual %bool %31 %30
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %42
+         %50 = OpConvertSToF %float %44
+         %51 = OpConvertSToF %float %46
+         %52 = OpConvertSToF %float %48
+         %53 = OpCompositeConstruct %v4float %49 %50 %51 %52
+               OpStore %x_GLF_color %53
+               OpBranch %36
+         %38 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %55
+         %63 = OpConvertSToF %float %57
+         %64 = OpConvertSToF %float %59
+         %65 = OpConvertSToF %float %61
+         %66 = OpCompositeConstruct %v4float %62 %63 %64 %65
+               OpStore %x_GLF_color %66
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e029395
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+fn main_1() {
+  let x_29 : f32 = x_5.x_GLF_uniform_float_values[0];
+  let x_32 : f32 = x_5.x_GLF_uniform_float_values[0];
+  if ((ldexp(x_29, 10000) == x_32)) {
+    let x_38 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_41 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_47 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_38), f32(x_41), f32(x_44), f32(x_47));
+  } else {
+    let x_51 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_57 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_51), f32(x_54), f32(x_57), f32(x_60));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm
new file mode 100644
index 0000000..9f2839f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm
@@ -0,0 +1,146 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f1_f1_ "f1(f1;"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %c "c"
+               OpName %a_0 "a"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpTypeFunction %float %_ptr_Function_float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_8 = OpConstant %int 8
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %18
+         %41 = OpLabel
+        %a_0 = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_float Function
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %43 = OpLoad %float %42
+               OpStore %param %43
+         %44 = OpFunctionCall %float %f1_f1_ %param
+               OpStore %a_0 %44
+         %45 = OpLoad %float %a_0
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %47 = OpLoad %float %46
+         %48 = OpFOrdEqual %bool %45 %47
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpCompositeConstruct %v4float %54 %57 %60 %63
+               OpStore %_GLF_color %64
+               OpBranch %49
+         %51 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpCompositeConstruct %v4float %67 %67 %67 %67
+               OpStore %_GLF_color %68
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %f1_f1_ = OpFunction %float None %21
+          %a = OpFunctionParameter %_ptr_Function_float
+         %69 = OpLabel
+          %b = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_float Function
+               OpStore %b %int_8
+         %70 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %73 = OpLoad %float %72
+         %74 = OpFOrdGreaterThanEqual %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+         %77 = OpLoad %int %b
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %b %78
+         %79 = OpLoad %int %b
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %b %80
+               OpBranch %75
+         %75 = OpLabel
+         %81 = OpLoad %float %a
+         %82 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %83 = OpLoad %float %82
+         %84 = OpFOrdLessThan %bool %81 %83
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %88 = OpLoad %float %87
+               OpReturnValue %88
+         %85 = OpLabel
+         %89 = OpLoad %int %b
+         %90 = OpExtInst %int %1 SClamp %89 %int_0 %int_2
+         %91 = OpConvertSToF %float %90
+               OpStore %c %91
+         %92 = OpLoad %float %c
+               OpReturnValue %92
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..408d89c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,74 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_14 : register(b1, space0) {
+  uint4 x_14[2];
+};
+
+float f1_f1_(inout float a) {
+  int b = 0;
+  float c = 0.0f;
+  b = 8;
+  const float x_71 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_73 = asfloat(x_9[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_71 >= x_73)) {
+    b = (b + 1);
+    b = (b + 1);
+  }
+  const float x_81 = a;
+  const float x_83 = asfloat(x_9[1].x);
+  if ((x_81 < x_83)) {
+    const float x_88 = asfloat(x_9[1].x);
+    return x_88;
+  }
+  c = float(clamp(b, 0, 2));
+  return c;
+}
+
+void main_1() {
+  float a_1 = 0.0f;
+  float param = 0.0f;
+  const float x_43 = asfloat(x_9[1].x);
+  param = x_43;
+  const float x_44 = f1_f1_(param);
+  a_1 = x_44;
+  const float x_45 = a_1;
+  const float x_47 = asfloat(x_9[2].x);
+  if ((x_45 == x_47)) {
+    const int x_53 = asint(x_14[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_14[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_14[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_62 = asint(x_14[1].x);
+    x_GLF_color = float4(float(x_53), float(x_56), float(x_59), float(x_62));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_14[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_67 = float(x_66);
+    x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b727426
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.msl
@@ -0,0 +1,87 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float f1_f1_(constant buf0& x_9, thread float* const a, thread float4* const tint_symbol_5) {
+  int b = 0;
+  float c = 0.0f;
+  b = 8;
+  float const x_71 = (*(tint_symbol_5)).y;
+  float const x_73 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_71 >= x_73)) {
+    int const x_77 = b;
+    b = (x_77 + 1);
+    int const x_79 = b;
+    b = (x_79 + 1);
+  }
+  float const x_81 = *(a);
+  float const x_83 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_81 < x_83)) {
+    float const x_88 = x_9.x_GLF_uniform_float_values.arr[1].el;
+    return x_88;
+  }
+  int const x_89 = b;
+  c = float(clamp(x_89, 0, 2));
+  float const x_92 = c;
+  return x_92;
+}
+
+void main_1(constant buf0& x_9, constant buf1& x_14, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float a_1 = 0.0f;
+  float param = 0.0f;
+  float const x_43 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  param = x_43;
+  float const x_44 = f1_f1_(x_9, &(param), tint_symbol_6);
+  a_1 = x_44;
+  float const x_45 = a_1;
+  float const x_47 = x_9.x_GLF_uniform_float_values.arr[2].el;
+  if ((x_45 == x_47)) {
+    int const x_53 = x_14.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_14.x_GLF_uniform_int_values.arr[0].el;
+    int const x_59 = x_14.x_GLF_uniform_int_values.arr[0].el;
+    int const x_62 = x_14.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_7) = float4(float(x_53), float(x_56), float(x_59), float(x_62));
+  } else {
+    int const x_66 = x_14.x_GLF_uniform_int_values.arr[0].el;
+    float const x_67 = float(x_66);
+    *(tint_symbol_7) = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]], constant buf1& x_14 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_9, x_14, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3c4cb67
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,186 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 115
+; Schema: 0
+               OpCapability Shader
+         %64 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_14 "x_14"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f1_f1_ "f1_f1_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_1 "main_1"
+               OpName %a_1 "a_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_14 NonWritable
+               OpDecorate %x_14 DescriptorSet 0
+               OpDecorate %x_14 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_14 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %23 = OpTypeFunction %float %_ptr_Function_float
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+         %32 = OpConstantNull %float
+      %int_8 = OpConstant %int 8
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %67 = OpTypeFunction %void
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %102 = OpTypeFunction %void %main_out
+     %f1_f1_ = OpFunction %float None %23
+          %a = OpFunctionParameter %_ptr_Function_float
+         %27 = OpLabel
+          %b = OpVariable %_ptr_Function_int Function %30
+          %c = OpVariable %_ptr_Function_float Function %32
+               OpStore %b %int_8
+         %36 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %37 = OpLoad %float %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdGreaterThanEqual %bool %37 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %45
+         %46 = OpLabel
+         %47 = OpLoad %int %b
+         %49 = OpIAdd %int %47 %int_1
+               OpStore %b %49
+         %50 = OpLoad %int %b
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %b %51
+               OpBranch %45
+         %45 = OpLabel
+         %53 = OpLoad %float %a
+         %54 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %55 = OpLoad %float %54
+         %56 = OpFOrdLessThan %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %60 = OpLoad %float %59
+               OpReturnValue %60
+         %57 = OpLabel
+         %61 = OpLoad %int %b
+         %63 = OpExtInst %int %64 SClamp %61 %int_0 %int_2
+         %62 = OpConvertSToF %float %63
+               OpStore %c %62
+         %66 = OpLoad %float %c
+               OpReturnValue %66
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %67
+         %70 = OpLabel
+        %a_1 = OpVariable %_ptr_Function_float Function %32
+      %param = OpVariable %_ptr_Function_float Function %32
+         %73 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %74 = OpLoad %float %73
+               OpStore %param %74
+         %75 = OpFunctionCall %float %f1_f1_ %param
+               OpStore %a_1 %75
+         %77 = OpLoad %float %a_1
+         %78 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_2
+         %79 = OpLoad %float %78
+         %80 = OpFOrdEqual %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_0
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %86
+         %94 = OpConvertSToF %float %88
+         %95 = OpConvertSToF %float %90
+         %96 = OpConvertSToF %float %92
+         %97 = OpCompositeConstruct %v4float %93 %94 %95 %96
+               OpStore %x_GLF_color %97
+               OpBranch %81
+         %83 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_0
+         %99 = OpLoad %int %98
+        %100 = OpConvertSToF %float %99
+        %101 = OpCompositeConstruct %v4float %100 %100 %100 %100
+               OpStore %x_GLF_color %101
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %102
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %106 = OpLabel
+        %107 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %107
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %67
+        %109 = OpLabel
+        %110 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %110
+        %111 = OpFunctionCall %void %main_1
+        %113 = OpLoad %v4float %x_GLF_color
+        %114 = OpCompositeConstruct %main_out %113
+        %112 = OpFunctionCall %void %tint_symbol_3 %114
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1a497da
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,80 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_14 : buf1;
+
+fn f1_f1_(a : ptr<function, f32>) -> f32 {
+  var b : i32;
+  var c : f32;
+  b = 8;
+  let x_71 : f32 = gl_FragCoord.y;
+  let x_73 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((x_71 >= x_73)) {
+    let x_77 : i32 = b;
+    b = (x_77 + 1);
+    let x_79 : i32 = b;
+    b = (x_79 + 1);
+  }
+  let x_81 : f32 = *(a);
+  let x_83 : f32 = x_9.x_GLF_uniform_float_values[1];
+  if ((x_81 < x_83)) {
+    let x_88 : f32 = x_9.x_GLF_uniform_float_values[1];
+    return x_88;
+  }
+  let x_89 : i32 = b;
+  c = f32(clamp(x_89, 0, 2));
+  let x_92 : f32 = c;
+  return x_92;
+}
+
+fn main_1() {
+  var a_1 : f32;
+  var param : f32;
+  let x_43 : f32 = x_9.x_GLF_uniform_float_values[1];
+  param = x_43;
+  let x_44 : f32 = f1_f1_(&(param));
+  a_1 = x_44;
+  let x_45 : f32 = a_1;
+  let x_47 : f32 = x_9.x_GLF_uniform_float_values[2];
+  if ((x_45 == x_47)) {
+    let x_53 : i32 = x_14.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_14.x_GLF_uniform_int_values[0];
+    let x_59 : i32 = x_14.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_14.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_53), f32(x_56), f32(x_59), f32(x_62));
+  } else {
+    let x_66 : i32 = x_14.x_GLF_uniform_int_values[0];
+    let x_67 : f32 = f32(x_66);
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
new file mode 100644
index 0000000..1a497da
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
@@ -0,0 +1,80 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_14 : buf1;
+
+fn f1_f1_(a : ptr<function, f32>) -> f32 {
+  var b : i32;
+  var c : f32;
+  b = 8;
+  let x_71 : f32 = gl_FragCoord.y;
+  let x_73 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((x_71 >= x_73)) {
+    let x_77 : i32 = b;
+    b = (x_77 + 1);
+    let x_79 : i32 = b;
+    b = (x_79 + 1);
+  }
+  let x_81 : f32 = *(a);
+  let x_83 : f32 = x_9.x_GLF_uniform_float_values[1];
+  if ((x_81 < x_83)) {
+    let x_88 : f32 = x_9.x_GLF_uniform_float_values[1];
+    return x_88;
+  }
+  let x_89 : i32 = b;
+  c = f32(clamp(x_89, 0, 2));
+  let x_92 : f32 = c;
+  return x_92;
+}
+
+fn main_1() {
+  var a_1 : f32;
+  var param : f32;
+  let x_43 : f32 = x_9.x_GLF_uniform_float_values[1];
+  param = x_43;
+  let x_44 : f32 = f1_f1_(&(param));
+  a_1 = x_44;
+  let x_45 : f32 = a_1;
+  let x_47 : f32 = x_9.x_GLF_uniform_float_values[2];
+  if ((x_45 == x_47)) {
+    let x_53 : i32 = x_14.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_14.x_GLF_uniform_int_values[0];
+    let x_59 : i32 = x_14.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_14.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_53), f32(x_56), f32(x_59), f32(x_62));
+  } else {
+    let x_66 : i32 = x_14.x_GLF_uniform_int_values[0];
+    let x_67 : f32 = f32(x_66);
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..408d89c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,74 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_14 : register(b1, space0) {
+  uint4 x_14[2];
+};
+
+float f1_f1_(inout float a) {
+  int b = 0;
+  float c = 0.0f;
+  b = 8;
+  const float x_71 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_73 = asfloat(x_9[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_71 >= x_73)) {
+    b = (b + 1);
+    b = (b + 1);
+  }
+  const float x_81 = a;
+  const float x_83 = asfloat(x_9[1].x);
+  if ((x_81 < x_83)) {
+    const float x_88 = asfloat(x_9[1].x);
+    return x_88;
+  }
+  c = float(clamp(b, 0, 2));
+  return c;
+}
+
+void main_1() {
+  float a_1 = 0.0f;
+  float param = 0.0f;
+  const float x_43 = asfloat(x_9[1].x);
+  param = x_43;
+  const float x_44 = f1_f1_(param);
+  a_1 = x_44;
+  const float x_45 = a_1;
+  const float x_47 = asfloat(x_9[2].x);
+  if ((x_45 == x_47)) {
+    const int x_53 = asint(x_14[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_14[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_14[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_62 = asint(x_14[1].x);
+    x_GLF_color = float4(float(x_53), float(x_56), float(x_59), float(x_62));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_14[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_67 = float(x_66);
+    x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b727426
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.msl
@@ -0,0 +1,87 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float f1_f1_(constant buf0& x_9, thread float* const a, thread float4* const tint_symbol_5) {
+  int b = 0;
+  float c = 0.0f;
+  b = 8;
+  float const x_71 = (*(tint_symbol_5)).y;
+  float const x_73 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_71 >= x_73)) {
+    int const x_77 = b;
+    b = (x_77 + 1);
+    int const x_79 = b;
+    b = (x_79 + 1);
+  }
+  float const x_81 = *(a);
+  float const x_83 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_81 < x_83)) {
+    float const x_88 = x_9.x_GLF_uniform_float_values.arr[1].el;
+    return x_88;
+  }
+  int const x_89 = b;
+  c = float(clamp(x_89, 0, 2));
+  float const x_92 = c;
+  return x_92;
+}
+
+void main_1(constant buf0& x_9, constant buf1& x_14, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float a_1 = 0.0f;
+  float param = 0.0f;
+  float const x_43 = x_9.x_GLF_uniform_float_values.arr[1].el;
+  param = x_43;
+  float const x_44 = f1_f1_(x_9, &(param), tint_symbol_6);
+  a_1 = x_44;
+  float const x_45 = a_1;
+  float const x_47 = x_9.x_GLF_uniform_float_values.arr[2].el;
+  if ((x_45 == x_47)) {
+    int const x_53 = x_14.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_14.x_GLF_uniform_int_values.arr[0].el;
+    int const x_59 = x_14.x_GLF_uniform_int_values.arr[0].el;
+    int const x_62 = x_14.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_7) = float4(float(x_53), float(x_56), float(x_59), float(x_62));
+  } else {
+    int const x_66 = x_14.x_GLF_uniform_int_values.arr[0].el;
+    float const x_67 = float(x_66);
+    *(tint_symbol_7) = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]], constant buf1& x_14 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_9, x_14, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3c4cb67
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,186 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 115
+; Schema: 0
+               OpCapability Shader
+         %64 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_14 "x_14"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f1_f1_ "f1_f1_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_1 "main_1"
+               OpName %a_1 "a_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_14 NonWritable
+               OpDecorate %x_14 DescriptorSet 0
+               OpDecorate %x_14 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_14 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %23 = OpTypeFunction %float %_ptr_Function_float
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+         %32 = OpConstantNull %float
+      %int_8 = OpConstant %int 8
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %67 = OpTypeFunction %void
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %102 = OpTypeFunction %void %main_out
+     %f1_f1_ = OpFunction %float None %23
+          %a = OpFunctionParameter %_ptr_Function_float
+         %27 = OpLabel
+          %b = OpVariable %_ptr_Function_int Function %30
+          %c = OpVariable %_ptr_Function_float Function %32
+               OpStore %b %int_8
+         %36 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %37 = OpLoad %float %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdGreaterThanEqual %bool %37 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %45
+         %46 = OpLabel
+         %47 = OpLoad %int %b
+         %49 = OpIAdd %int %47 %int_1
+               OpStore %b %49
+         %50 = OpLoad %int %b
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %b %51
+               OpBranch %45
+         %45 = OpLabel
+         %53 = OpLoad %float %a
+         %54 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %55 = OpLoad %float %54
+         %56 = OpFOrdLessThan %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %60 = OpLoad %float %59
+               OpReturnValue %60
+         %57 = OpLabel
+         %61 = OpLoad %int %b
+         %63 = OpExtInst %int %64 SClamp %61 %int_0 %int_2
+         %62 = OpConvertSToF %float %63
+               OpStore %c %62
+         %66 = OpLoad %float %c
+               OpReturnValue %66
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %67
+         %70 = OpLabel
+        %a_1 = OpVariable %_ptr_Function_float Function %32
+      %param = OpVariable %_ptr_Function_float Function %32
+         %73 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %74 = OpLoad %float %73
+               OpStore %param %74
+         %75 = OpFunctionCall %float %f1_f1_ %param
+               OpStore %a_1 %75
+         %77 = OpLoad %float %a_1
+         %78 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_2
+         %79 = OpLoad %float %78
+         %80 = OpFOrdEqual %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_0
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %86
+         %94 = OpConvertSToF %float %88
+         %95 = OpConvertSToF %float %90
+         %96 = OpConvertSToF %float %92
+         %97 = OpCompositeConstruct %v4float %93 %94 %95 %96
+               OpStore %x_GLF_color %97
+               OpBranch %81
+         %83 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %x_14 %uint_0 %int_0
+         %99 = OpLoad %int %98
+        %100 = OpConvertSToF %float %99
+        %101 = OpCompositeConstruct %v4float %100 %100 %100 %100
+               OpStore %x_GLF_color %101
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %102
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %106 = OpLabel
+        %107 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %107
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %67
+        %109 = OpLabel
+        %110 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %110
+        %111 = OpFunctionCall %void %main_1
+        %113 = OpLoad %v4float %x_GLF_color
+        %114 = OpCompositeConstruct %main_out %113
+        %112 = OpFunctionCall %void %tint_symbol_3 %114
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1a497da
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,80 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_14 : buf1;
+
+fn f1_f1_(a : ptr<function, f32>) -> f32 {
+  var b : i32;
+  var c : f32;
+  b = 8;
+  let x_71 : f32 = gl_FragCoord.y;
+  let x_73 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((x_71 >= x_73)) {
+    let x_77 : i32 = b;
+    b = (x_77 + 1);
+    let x_79 : i32 = b;
+    b = (x_79 + 1);
+  }
+  let x_81 : f32 = *(a);
+  let x_83 : f32 = x_9.x_GLF_uniform_float_values[1];
+  if ((x_81 < x_83)) {
+    let x_88 : f32 = x_9.x_GLF_uniform_float_values[1];
+    return x_88;
+  }
+  let x_89 : i32 = b;
+  c = f32(clamp(x_89, 0, 2));
+  let x_92 : f32 = c;
+  return x_92;
+}
+
+fn main_1() {
+  var a_1 : f32;
+  var param : f32;
+  let x_43 : f32 = x_9.x_GLF_uniform_float_values[1];
+  param = x_43;
+  let x_44 : f32 = f1_f1_(&(param));
+  a_1 = x_44;
+  let x_45 : f32 = a_1;
+  let x_47 : f32 = x_9.x_GLF_uniform_float_values[2];
+  if ((x_45 == x_47)) {
+    let x_53 : i32 = x_14.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_14.x_GLF_uniform_int_values[0];
+    let x_59 : i32 = x_14.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_14.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_53), f32(x_56), f32(x_59), f32(x_62));
+  } else {
+    let x_66 : i32 = x_14.x_GLF_uniform_int_values[0];
+    let x_67 : f32 = f32(x_66);
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm
new file mode 100644
index 0000000..97c8528
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm
@@ -0,0 +1,114 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+    %v3float = OpTypeVector %float 3
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %14
+         %37 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_float Function
+         %38 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpFOrdGreaterThanEqual %bool %39 %41
+         %43 = OpSelect %int %42 %int_0 %int_2
+               OpStore %a %43
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %49 = OpLoad %float %48
+         %50 = OpCompositeConstruct %v3float %45 %47 %49
+         %51 = OpLoad %int %a
+         %52 = OpVectorExtractDynamic %float %50 %51
+               OpStore %b %52
+         %53 = OpLoad %float %b
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %55 = OpLoad %float %54
+         %56 = OpFOrdEqual %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %70
+         %72 = OpCompositeConstruct %v4float %62 %65 %68 %71
+               OpStore %_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1aa4c95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,57 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[2];
+};
+
+void main_1() {
+  int a = 0;
+  float b = 0.0f;
+  const float x_39 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  a = ((x_39 >= x_41) ? 0 : 2);
+  const float x_45 = asfloat(x_7[1].x);
+  const float x_47 = asfloat(x_7[2].x);
+  const float x_49 = asfloat(x_7[3].x);
+  b = float3(x_45, x_47, x_49)[a];
+  const float x_53 = b;
+  const float x_55 = asfloat(x_7[1].x);
+  if ((x_53 == x_55)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_61 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_64 = asint(x_10[1].x);
+    const int x_67 = asint(x_10[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_70 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_75 = float(x_74);
+    x_GLF_color = float4(x_75, x_75, x_75, x_75);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4dbabec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.msl
@@ -0,0 +1,67 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  float b = 0.0f;
+  float const x_39 = (*(tint_symbol_5)).y;
+  float const x_41 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  a = select(2, 0, (x_39 >= x_41));
+  float const x_45 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_47 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_49 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  int const x_51 = a;
+  b = float3(x_45, x_47, x_49)[x_51];
+  float const x_53 = b;
+  float const x_55 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_53 == x_55)) {
+    int const x_61 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_64 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_67 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_70 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+  } else {
+    int const x_74 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_75 = float(x_74);
+    *(tint_symbol_6) = float4(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_10, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f6de722
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,153 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 96
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %32 = OpConstantNull %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+    %v3float = OpTypeVector %float 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %83 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %29
+          %b = OpVariable %_ptr_Function_float Function %32
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %36 = OpLoad %float %35
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %43 = OpFOrdGreaterThanEqual %bool %36 %41
+         %42 = OpSelect %int %43 %int_0 %int_2
+               OpStore %a %42
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %49 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+         %53 = OpLoad %float %52
+         %54 = OpLoad %int %a
+         %56 = OpCompositeConstruct %v3float %48 %50 %53
+         %57 = OpVectorExtractDynamic %float %56 %54
+               OpStore %b %57
+         %58 = OpLoad %float %b
+         %59 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %60 = OpLoad %float %59
+         %61 = OpFOrdEqual %bool %58 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %67
+         %75 = OpConvertSToF %float %69
+         %76 = OpConvertSToF %float %71
+         %77 = OpConvertSToF %float %73
+         %78 = OpCompositeConstruct %v4float %74 %75 %76 %77
+               OpStore %x_GLF_color %78
+               OpBranch %62
+         %64 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpCompositeConstruct %v4float %81 %81 %81 %81
+               OpStore %x_GLF_color %82
+               OpBranch %62
+         %62 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %83
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %87 = OpLabel
+         %88 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %90 = OpLabel
+         %91 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %91
+         %92 = OpFunctionCall %void %main_1
+         %94 = OpLoad %v4float %x_GLF_color
+         %95 = OpCompositeConstruct %main_out %94
+         %93 = OpFunctionCall %void %tint_symbol_3 %95
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2e2a9f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn main_1() {
+  var a : i32;
+  var b : f32;
+  let x_39 : f32 = gl_FragCoord.y;
+  let x_41 : f32 = x_7.x_GLF_uniform_float_values[0];
+  a = select(2, 0, (x_39 >= x_41));
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_49 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_51 : i32 = a;
+  b = vec3<f32>(x_45, x_47, x_49)[x_51];
+  let x_53 : f32 = b;
+  let x_55 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((x_53 == x_55)) {
+    let x_61 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_64 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_67 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_70 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_61), f32(x_64), f32(x_67), f32(x_70));
+  } else {
+    let x_74 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_75 : f32 = f32(x_74);
+    x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
new file mode 100644
index 0000000..2e2a9f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn main_1() {
+  var a : i32;
+  var b : f32;
+  let x_39 : f32 = gl_FragCoord.y;
+  let x_41 : f32 = x_7.x_GLF_uniform_float_values[0];
+  a = select(2, 0, (x_39 >= x_41));
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_49 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_51 : i32 = a;
+  b = vec3<f32>(x_45, x_47, x_49)[x_51];
+  let x_53 : f32 = b;
+  let x_55 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((x_53 == x_55)) {
+    let x_61 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_64 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_67 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_70 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_61), f32(x_64), f32(x_67), f32(x_70));
+  } else {
+    let x_74 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_75 : f32 = f32(x_74);
+    x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1aa4c95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,57 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[2];
+};
+
+void main_1() {
+  int a = 0;
+  float b = 0.0f;
+  const float x_39 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  a = ((x_39 >= x_41) ? 0 : 2);
+  const float x_45 = asfloat(x_7[1].x);
+  const float x_47 = asfloat(x_7[2].x);
+  const float x_49 = asfloat(x_7[3].x);
+  b = float3(x_45, x_47, x_49)[a];
+  const float x_53 = b;
+  const float x_55 = asfloat(x_7[1].x);
+  if ((x_53 == x_55)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_61 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_64 = asint(x_10[1].x);
+    const int x_67 = asint(x_10[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_70 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_75 = float(x_74);
+    x_GLF_color = float4(x_75, x_75, x_75, x_75);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4dbabec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.msl
@@ -0,0 +1,67 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  float b = 0.0f;
+  float const x_39 = (*(tint_symbol_5)).y;
+  float const x_41 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  a = select(2, 0, (x_39 >= x_41));
+  float const x_45 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_47 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_49 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  int const x_51 = a;
+  b = float3(x_45, x_47, x_49)[x_51];
+  float const x_53 = b;
+  float const x_55 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_53 == x_55)) {
+    int const x_61 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_64 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_67 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_70 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+  } else {
+    int const x_74 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_75 = float(x_74);
+    *(tint_symbol_6) = float4(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_10, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f6de722
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,153 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 96
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %32 = OpConstantNull %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+    %v3float = OpTypeVector %float 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %83 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %29
+          %b = OpVariable %_ptr_Function_float Function %32
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %36 = OpLoad %float %35
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %43 = OpFOrdGreaterThanEqual %bool %36 %41
+         %42 = OpSelect %int %43 %int_0 %int_2
+               OpStore %a %42
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %49 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+         %53 = OpLoad %float %52
+         %54 = OpLoad %int %a
+         %56 = OpCompositeConstruct %v3float %48 %50 %53
+         %57 = OpVectorExtractDynamic %float %56 %54
+               OpStore %b %57
+         %58 = OpLoad %float %b
+         %59 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %60 = OpLoad %float %59
+         %61 = OpFOrdEqual %bool %58 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %67
+         %75 = OpConvertSToF %float %69
+         %76 = OpConvertSToF %float %71
+         %77 = OpConvertSToF %float %73
+         %78 = OpCompositeConstruct %v4float %74 %75 %76 %77
+               OpStore %x_GLF_color %78
+               OpBranch %62
+         %64 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpCompositeConstruct %v4float %81 %81 %81 %81
+               OpStore %x_GLF_color %82
+               OpBranch %62
+         %62 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %83
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %87 = OpLabel
+         %88 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %90 = OpLabel
+         %91 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %91
+         %92 = OpFunctionCall %void %main_1
+         %94 = OpLoad %v4float %x_GLF_color
+         %95 = OpCompositeConstruct %main_out %94
+         %93 = OpFunctionCall %void %tint_symbol_3 %95
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2e2a9f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn main_1() {
+  var a : i32;
+  var b : f32;
+  let x_39 : f32 = gl_FragCoord.y;
+  let x_41 : f32 = x_7.x_GLF_uniform_float_values[0];
+  a = select(2, 0, (x_39 >= x_41));
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_49 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_51 : i32 = a;
+  b = vec3<f32>(x_45, x_47, x_49)[x_51];
+  let x_53 : f32 = b;
+  let x_55 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((x_53 == x_55)) {
+    let x_61 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_64 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_67 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_70 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_61), f32(x_64), f32(x_67), f32(x_70));
+  } else {
+    let x_74 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_75 : f32 = f32(x_74);
+    x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm
new file mode 100644
index 0000000..8401a53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm
@@ -0,0 +1,101 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %main = OpFunction %void None %12
+         %30 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+         %31 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %32 = OpLoad %int %31
+               OpStore %i %32
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %int %i
+         %38 = OpSGreaterThanEqual %bool %37 %int_0
+               OpBranchConditional %38 %39 %34
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %41 = OpSMod %int %40 %int_2
+         %42 = OpIEqual %bool %41 %int_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpCompositeConstruct %v4float %float_1 %48 %51 %54
+               OpStore %_GLF_color %55
+               OpBranch %43
+         %45 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpCompositeConstruct %v4float %57 %57 %57 %57
+               OpStore %_GLF_color %58
+               OpBranch %43
+         %43 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpISub %int %59 %int_1
+               OpStore %i %60
+               OpBranch %35
+         %35 = OpLabel
+               OpBranch %33
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..32708a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+
+void main_1() {
+  int i = 0;
+  const int x_32 = asint(x_6[2].x);
+  i = x_32;
+  while (true) {
+    if ((i >= 0)) {
+    } else {
+      break;
+    }
+    if (((i % 2) == 0)) {
+      const uint scalar_offset = ((16u * uint(0))) / 4;
+      const int x_47 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const int x_50 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      const int x_53 = asint(x_6[1].x);
+      x_GLF_color = float4(1.0f, float(x_47), float(x_50), float(x_53));
+    } else {
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const float x_57 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      x_GLF_color = float4(x_57, x_57, x_57, x_57);
+    }
+    i = (i - 1);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..111c664
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.msl
@@ -0,0 +1,64 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_32;
+  while (true) {
+    int const x_37 = i;
+    if ((x_37 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_40 = i;
+    if (((x_40 % 2) == 0)) {
+      int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      *(tint_symbol_4) = float4(1.0f, float(x_47), float(x_50), float(x_53));
+    } else {
+      float const x_57 = x_8.x_GLF_uniform_float_values.arr[0].el;
+      *(tint_symbol_4) = float4(x_57, x_57, x_57, x_57);
+    }
+    int const x_59 = i;
+    i = (x_59 - 1);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6651b21
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %26
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %31 = OpLoad %int %30
+               OpStore %i %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %38 = OpSGreaterThanEqual %bool %36 %int_0
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %33
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpSMod %int %43 %int_2
+         %45 = OpIEqual %bool %44 %int_0
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %57 = OpConvertSToF %float %50
+         %58 = OpConvertSToF %float %52
+         %59 = OpConvertSToF %float %55
+         %60 = OpCompositeConstruct %v4float %float_1 %57 %58 %59
+               OpStore %x_GLF_color %60
+               OpBranch %46
+         %48 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpCompositeConstruct %v4float %63 %63 %63 %63
+               OpStore %x_GLF_color %64
+               OpBranch %46
+         %46 = OpLabel
+         %65 = OpLoad %int %i
+         %66 = OpISub %int %65 %int_1
+               OpStore %i %66
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7198d38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var i : i32;
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_32;
+  loop {
+    let x_37 : i32 = i;
+    if ((x_37 >= 0)) {
+    } else {
+      break;
+    }
+    let x_40 : i32 = i;
+    if (((x_40 % 2) == 0)) {
+      let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+      x_GLF_color = vec4<f32>(1.0, f32(x_47), f32(x_50), f32(x_53));
+    } else {
+      let x_57 : f32 = x_8.x_GLF_uniform_float_values[0];
+      x_GLF_color = vec4<f32>(x_57, x_57, x_57, x_57);
+    }
+    let x_59 : i32 = i;
+    i = (x_59 - 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
new file mode 100644
index 0000000..7198d38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var i : i32;
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_32;
+  loop {
+    let x_37 : i32 = i;
+    if ((x_37 >= 0)) {
+    } else {
+      break;
+    }
+    let x_40 : i32 = i;
+    if (((x_40 % 2) == 0)) {
+      let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+      x_GLF_color = vec4<f32>(1.0, f32(x_47), f32(x_50), f32(x_53));
+    } else {
+      let x_57 : f32 = x_8.x_GLF_uniform_float_values[0];
+      x_GLF_color = vec4<f32>(x_57, x_57, x_57, x_57);
+    }
+    let x_59 : i32 = i;
+    i = (x_59 - 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..32708a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+
+void main_1() {
+  int i = 0;
+  const int x_32 = asint(x_6[2].x);
+  i = x_32;
+  while (true) {
+    if ((i >= 0)) {
+    } else {
+      break;
+    }
+    if (((i % 2) == 0)) {
+      const uint scalar_offset = ((16u * uint(0))) / 4;
+      const int x_47 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const int x_50 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      const int x_53 = asint(x_6[1].x);
+      x_GLF_color = float4(1.0f, float(x_47), float(x_50), float(x_53));
+    } else {
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const float x_57 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      x_GLF_color = float4(x_57, x_57, x_57, x_57);
+    }
+    i = (i - 1);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..111c664
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.msl
@@ -0,0 +1,64 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_32;
+  while (true) {
+    int const x_37 = i;
+    if ((x_37 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_40 = i;
+    if (((x_40 % 2) == 0)) {
+      int const x_47 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      *(tint_symbol_4) = float4(1.0f, float(x_47), float(x_50), float(x_53));
+    } else {
+      float const x_57 = x_8.x_GLF_uniform_float_values.arr[0].el;
+      *(tint_symbol_4) = float4(x_57, x_57, x_57, x_57);
+    }
+    int const x_59 = i;
+    i = (x_59 - 1);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6651b21
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %26
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %31 = OpLoad %int %30
+               OpStore %i %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %38 = OpSGreaterThanEqual %bool %36 %int_0
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %33
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpSMod %int %43 %int_2
+         %45 = OpIEqual %bool %44 %int_0
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %57 = OpConvertSToF %float %50
+         %58 = OpConvertSToF %float %52
+         %59 = OpConvertSToF %float %55
+         %60 = OpCompositeConstruct %v4float %float_1 %57 %58 %59
+               OpStore %x_GLF_color %60
+               OpBranch %46
+         %48 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpCompositeConstruct %v4float %63 %63 %63 %63
+               OpStore %x_GLF_color %64
+               OpBranch %46
+         %46 = OpLabel
+         %65 = OpLoad %int %i
+         %66 = OpISub %int %65 %int_1
+               OpStore %i %66
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7198d38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var i : i32;
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_32;
+  loop {
+    let x_37 : i32 = i;
+    if ((x_37 >= 0)) {
+    } else {
+      break;
+    }
+    let x_40 : i32 = i;
+    if (((x_40 % 2) == 0)) {
+      let x_47 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+      x_GLF_color = vec4<f32>(1.0, f32(x_47), f32(x_50), f32(x_53));
+    } else {
+      let x_57 : f32 = x_8.x_GLF_uniform_float_values[0];
+      x_GLF_color = vec4<f32>(x_57, x_57, x_57, x_57);
+    }
+    let x_59 : i32 = i;
+    i = (x_59 - 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm
new file mode 100644
index 0000000..e4220be
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm
@@ -0,0 +1,152 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f1_f1_ "f1(f1;"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %v2 "v2"
+               OpName %a_0 "a"
+               OpName %param "param"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpTypeFunction %float %_ptr_Function_float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+    %v3float = OpTypeVector %float 3
+       %main = OpFunction %void None %17
+         %39 = OpLabel
+         %v2 = OpVariable %_ptr_Function_v4float Function
+        %a_0 = OpVariable %_ptr_Function_float Function
+         %40 = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_float Function
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpCompositeConstruct %v4float %43 %46 %49 %52
+               OpStore %_GLF_color %53
+         %54 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %57 = OpLoad %float %56
+         %58 = OpFOrdLessThan %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+         %62 = OpLoad %float %61
+         %63 = OpFOrdLessThan %bool %62 %float_1
+         %64 = OpLogicalNot %bool %63
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %72 = OpLoad %float %71
+         %73 = OpFOrdGreaterThan %bool %70 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %78 = OpLoad %float %77
+               OpStore %param %78
+         %79 = OpFunctionCall %float %f1_f1_ %param
+               OpStore %40 %79
+               OpBranch %74
+         %76 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %81 = OpLoad %float %80
+               OpStore %40 %81
+               OpBranch %74
+         %74 = OpLabel
+         %82 = OpLoad %float %40
+         %83 = OpFDiv %float %68 %82
+               OpStore %a_0 %83
+         %84 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpCompositeConstruct %v3float %85 %85 %85
+         %87 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %88 = OpLoad %float %87
+         %89 = OpCompositeConstruct %v3float %88 %88 %88
+         %90 = OpLoad %float %a_0
+         %91 = OpCompositeConstruct %v3float %90 %90 %90
+         %92 = OpExtInst %v3float %1 FMix %86 %89 %91
+         %93 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %94 = OpLoad %float %93
+         %95 = OpCompositeExtract %float %92 0
+         %96 = OpCompositeExtract %float %92 1
+         %97 = OpCompositeExtract %float %92 2
+         %98 = OpCompositeConstruct %v4float %95 %96 %97 %94
+               OpStore %_GLF_color %98
+               OpBranch %65
+         %65 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %f1_f1_ = OpFunction %float None %20
+          %a = OpFunctionParameter %_ptr_Function_float
+         %99 = OpLabel
+        %100 = OpLoad %float %a
+        %101 = OpDPdx %float %100
+               OpReturnValue %101
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b9e87ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,78 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[2];
+};
+
+float f1_f1_(inout float a) {
+  const float x_100 = a;
+  return ddx(x_100);
+}
+
+void main_1() {
+  float4 v2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float a_1 = 0.0f;
+  float x_40 = 0.0f;
+  float param = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_42 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  const int x_45 = asint(x_8[1].x);
+  const int x_48 = asint(x_8[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_51 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  const float x_55 = gl_FragCoord.x;
+  const float x_57 = asfloat(x_10[1].x);
+  if ((x_55 < x_57)) {
+    const float x_62 = v2.x;
+    if (!((x_62 < 1.0f))) {
+      const float x_68 = asfloat(x_10[1].x);
+      const float x_70 = asfloat(x_10[1].x);
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const float x_72 = asfloat(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      if ((x_70 > x_72)) {
+        const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+        const float x_78 = asfloat(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+        param = x_78;
+        const float x_79 = f1_f1_(param);
+        x_40 = x_79;
+      } else {
+        const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+        const float x_81 = asfloat(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+        x_40 = x_81;
+      }
+      a_1 = (x_68 / x_40);
+      const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+      const float x_85 = asfloat(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+      const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+      const float x_88 = asfloat(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+      const float x_90 = a_1;
+      const float3 x_92 = lerp(float3(x_85, x_85, x_85), float3(x_88, x_88, x_88), float3(x_90, x_90, x_90));
+      const float x_94 = asfloat(x_10[1].x);
+      x_GLF_color = float4(x_92.x, x_92.y, x_92.z, x_94);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a3e74a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.msl
@@ -0,0 +1,85 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float f1_f1_(thread float* const a) {
+  float const x_100 = *(a);
+  return dfdx(x_100);
+}
+
+void main_1(constant buf0& x_8, constant buf1& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4 v2 = 0.0f;
+  float a_1 = 0.0f;
+  float x_40 = 0.0f;
+  float param = 0.0f;
+  int const x_42 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_45 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_48 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_51 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_5) = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  float const x_55 = (*(tint_symbol_6)).x;
+  float const x_57 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_55 < x_57)) {
+    float const x_62 = v2.x;
+    if (!((x_62 < 1.0f))) {
+      float const x_68 = x_10.x_GLF_uniform_float_values.arr[1].el;
+      float const x_70 = x_10.x_GLF_uniform_float_values.arr[1].el;
+      float const x_72 = x_10.x_GLF_uniform_float_values.arr[0].el;
+      if ((x_70 > x_72)) {
+        float const x_78 = x_10.x_GLF_uniform_float_values.arr[0].el;
+        param = x_78;
+        float const x_79 = f1_f1_(&(param));
+        x_40 = x_79;
+      } else {
+        float const x_81 = x_10.x_GLF_uniform_float_values.arr[0].el;
+        x_40 = x_81;
+      }
+      float const x_82 = x_40;
+      a_1 = (x_68 / x_82);
+      float const x_85 = x_10.x_GLF_uniform_float_values.arr[0].el;
+      float const x_88 = x_10.x_GLF_uniform_float_values.arr[0].el;
+      float const x_90 = a_1;
+      float3 const x_92 = mix(float3(x_85, x_85, x_85), float3(x_88, x_88, x_88), float3(x_90, x_90, x_90));
+      float const x_94 = x_10.x_GLF_uniform_float_values.arr[1].el;
+      *(tint_symbol_5) = float4(x_92.x, x_92.y, x_92.z, x_94);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_10, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d38b160
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,191 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+         %99 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f1_f1_ "f1_f1_"
+               OpName %a "a"
+               OpName %main_1 "main_1"
+               OpName %v2 "v2"
+               OpName %a_1 "a_1"
+               OpName %x_40 "x_40"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpTypeFunction %float %_ptr_Function_float
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %37 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %109 = OpTypeFunction %void %main_out
+     %f1_f1_ = OpFunction %float None %22
+          %a = OpFunctionParameter %_ptr_Function_float
+         %26 = OpLabel
+         %28 = OpLoad %float %a
+         %29 = OpDPdx %float %28
+               OpReturnValue %29
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %30
+         %33 = OpLabel
+         %v2 = OpVariable %_ptr_Function_v4float Function %5
+        %a_1 = OpVariable %_ptr_Function_float Function %37
+       %x_40 = OpVariable %_ptr_Function_float Function %37
+      %param = OpVariable %_ptr_Function_float Function %37
+         %43 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %46 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %44
+         %53 = OpConvertSToF %float %47
+         %54 = OpConvertSToF %float %49
+         %55 = OpConvertSToF %float %51
+         %56 = OpCompositeConstruct %v4float %52 %53 %54 %55
+               OpStore %x_GLF_color %56
+         %58 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %59 = OpLoad %float %58
+         %61 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %62 = OpLoad %float %61
+         %63 = OpFOrdLessThan %bool %59 %62
+               OpSelectionMerge %65 None
+               OpBranchConditional %63 %66 %65
+         %66 = OpLabel
+         %67 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+         %68 = OpLoad %float %67
+         %71 = OpFOrdLessThan %bool %68 %float_1
+         %69 = OpLogicalNot %bool %71
+               OpSelectionMerge %72 None
+               OpBranchConditional %69 %73 %72
+         %73 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpFOrdGreaterThan %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %85 = OpLoad %float %84
+               OpStore %param %85
+         %86 = OpFunctionCall %float %f1_f1_ %param
+               OpStore %x_40 %86
+               OpBranch %81
+         %83 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %89 = OpLoad %float %88
+               OpStore %x_40 %89
+               OpBranch %81
+         %81 = OpLabel
+         %90 = OpLoad %float %x_40
+         %91 = OpFDiv %float %75 %90
+               OpStore %a_1 %91
+         %92 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %95 = OpLoad %float %94
+         %96 = OpLoad %float %a_1
+        %100 = OpCompositeConstruct %v3float %93 %93 %93
+        %101 = OpCompositeConstruct %v3float %95 %95 %95
+        %102 = OpCompositeConstruct %v3float %96 %96 %96
+         %97 = OpExtInst %v3float %99 FMix %100 %101 %102
+        %103 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+        %104 = OpLoad %float %103
+        %105 = OpCompositeExtract %float %97 0
+        %106 = OpCompositeExtract %float %97 1
+        %107 = OpCompositeExtract %float %97 2
+        %108 = OpCompositeConstruct %v4float %105 %106 %107 %104
+               OpStore %x_GLF_color %108
+               OpBranch %72
+         %72 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %109
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %113 = OpLabel
+        %114 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %114
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %30
+        %116 = OpLabel
+        %117 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %117
+        %118 = OpFunctionCall %void %main_1
+        %120 = OpLoad %v4float %x_GLF_color
+        %121 = OpCompositeConstruct %main_out %120
+        %119 = OpFunctionCall %void %tint_symbol_3 %121
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a6defc7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn f1_f1_(a : ptr<function, f32>) -> f32 {
+  let x_100 : f32 = *(a);
+  return dpdx(x_100);
+}
+
+fn main_1() {
+  var v2 : vec4<f32>;
+  var a_1 : f32;
+  var x_40 : f32;
+  var param : f32;
+  let x_42 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_45 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_48 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_51 : i32 = x_8.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+  let x_55 : f32 = gl_FragCoord.x;
+  let x_57 : f32 = x_10.x_GLF_uniform_float_values[1];
+  if ((x_55 < x_57)) {
+    let x_62 : f32 = v2.x;
+    if (!((x_62 < 1.0))) {
+      let x_68 : f32 = x_10.x_GLF_uniform_float_values[1];
+      let x_70 : f32 = x_10.x_GLF_uniform_float_values[1];
+      let x_72 : f32 = x_10.x_GLF_uniform_float_values[0];
+      if ((x_70 > x_72)) {
+        let x_78 : f32 = x_10.x_GLF_uniform_float_values[0];
+        param = x_78;
+        let x_79 : f32 = f1_f1_(&(param));
+        x_40 = x_79;
+      } else {
+        let x_81 : f32 = x_10.x_GLF_uniform_float_values[0];
+        x_40 = x_81;
+      }
+      let x_82 : f32 = x_40;
+      a_1 = (x_68 / x_82);
+      let x_85 : f32 = x_10.x_GLF_uniform_float_values[0];
+      let x_88 : f32 = x_10.x_GLF_uniform_float_values[0];
+      let x_90 : f32 = a_1;
+      let x_92 : vec3<f32> = mix(vec3<f32>(x_85, x_85, x_85), vec3<f32>(x_88, x_88, x_88), vec3<f32>(x_90, x_90, x_90));
+      let x_94 : f32 = x_10.x_GLF_uniform_float_values[1];
+      x_GLF_color = vec4<f32>(x_92.x, x_92.y, x_92.z, x_94);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
new file mode 100644
index 0000000..a6defc7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn f1_f1_(a : ptr<function, f32>) -> f32 {
+  let x_100 : f32 = *(a);
+  return dpdx(x_100);
+}
+
+fn main_1() {
+  var v2 : vec4<f32>;
+  var a_1 : f32;
+  var x_40 : f32;
+  var param : f32;
+  let x_42 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_45 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_48 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_51 : i32 = x_8.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+  let x_55 : f32 = gl_FragCoord.x;
+  let x_57 : f32 = x_10.x_GLF_uniform_float_values[1];
+  if ((x_55 < x_57)) {
+    let x_62 : f32 = v2.x;
+    if (!((x_62 < 1.0))) {
+      let x_68 : f32 = x_10.x_GLF_uniform_float_values[1];
+      let x_70 : f32 = x_10.x_GLF_uniform_float_values[1];
+      let x_72 : f32 = x_10.x_GLF_uniform_float_values[0];
+      if ((x_70 > x_72)) {
+        let x_78 : f32 = x_10.x_GLF_uniform_float_values[0];
+        param = x_78;
+        let x_79 : f32 = f1_f1_(&(param));
+        x_40 = x_79;
+      } else {
+        let x_81 : f32 = x_10.x_GLF_uniform_float_values[0];
+        x_40 = x_81;
+      }
+      let x_82 : f32 = x_40;
+      a_1 = (x_68 / x_82);
+      let x_85 : f32 = x_10.x_GLF_uniform_float_values[0];
+      let x_88 : f32 = x_10.x_GLF_uniform_float_values[0];
+      let x_90 : f32 = a_1;
+      let x_92 : vec3<f32> = mix(vec3<f32>(x_85, x_85, x_85), vec3<f32>(x_88, x_88, x_88), vec3<f32>(x_90, x_90, x_90));
+      let x_94 : f32 = x_10.x_GLF_uniform_float_values[1];
+      x_GLF_color = vec4<f32>(x_92.x, x_92.y, x_92.z, x_94);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b9e87ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,78 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[2];
+};
+
+float f1_f1_(inout float a) {
+  const float x_100 = a;
+  return ddx(x_100);
+}
+
+void main_1() {
+  float4 v2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float a_1 = 0.0f;
+  float x_40 = 0.0f;
+  float param = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_42 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  const int x_45 = asint(x_8[1].x);
+  const int x_48 = asint(x_8[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_51 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  const float x_55 = gl_FragCoord.x;
+  const float x_57 = asfloat(x_10[1].x);
+  if ((x_55 < x_57)) {
+    const float x_62 = v2.x;
+    if (!((x_62 < 1.0f))) {
+      const float x_68 = asfloat(x_10[1].x);
+      const float x_70 = asfloat(x_10[1].x);
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const float x_72 = asfloat(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      if ((x_70 > x_72)) {
+        const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+        const float x_78 = asfloat(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+        param = x_78;
+        const float x_79 = f1_f1_(param);
+        x_40 = x_79;
+      } else {
+        const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+        const float x_81 = asfloat(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+        x_40 = x_81;
+      }
+      a_1 = (x_68 / x_40);
+      const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+      const float x_85 = asfloat(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+      const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+      const float x_88 = asfloat(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+      const float x_90 = a_1;
+      const float3 x_92 = lerp(float3(x_85, x_85, x_85), float3(x_88, x_88, x_88), float3(x_90, x_90, x_90));
+      const float x_94 = asfloat(x_10[1].x);
+      x_GLF_color = float4(x_92.x, x_92.y, x_92.z, x_94);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a3e74a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.msl
@@ -0,0 +1,85 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float f1_f1_(thread float* const a) {
+  float const x_100 = *(a);
+  return dfdx(x_100);
+}
+
+void main_1(constant buf0& x_8, constant buf1& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4 v2 = 0.0f;
+  float a_1 = 0.0f;
+  float x_40 = 0.0f;
+  float param = 0.0f;
+  int const x_42 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_45 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_48 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_51 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_5) = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+  float const x_55 = (*(tint_symbol_6)).x;
+  float const x_57 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_55 < x_57)) {
+    float const x_62 = v2.x;
+    if (!((x_62 < 1.0f))) {
+      float const x_68 = x_10.x_GLF_uniform_float_values.arr[1].el;
+      float const x_70 = x_10.x_GLF_uniform_float_values.arr[1].el;
+      float const x_72 = x_10.x_GLF_uniform_float_values.arr[0].el;
+      if ((x_70 > x_72)) {
+        float const x_78 = x_10.x_GLF_uniform_float_values.arr[0].el;
+        param = x_78;
+        float const x_79 = f1_f1_(&(param));
+        x_40 = x_79;
+      } else {
+        float const x_81 = x_10.x_GLF_uniform_float_values.arr[0].el;
+        x_40 = x_81;
+      }
+      float const x_82 = x_40;
+      a_1 = (x_68 / x_82);
+      float const x_85 = x_10.x_GLF_uniform_float_values.arr[0].el;
+      float const x_88 = x_10.x_GLF_uniform_float_values.arr[0].el;
+      float const x_90 = a_1;
+      float3 const x_92 = mix(float3(x_85, x_85, x_85), float3(x_88, x_88, x_88), float3(x_90, x_90, x_90));
+      float const x_94 = x_10.x_GLF_uniform_float_values.arr[1].el;
+      *(tint_symbol_5) = float4(x_92.x, x_92.y, x_92.z, x_94);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_10, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d38b160
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,191 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+         %99 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f1_f1_ "f1_f1_"
+               OpName %a "a"
+               OpName %main_1 "main_1"
+               OpName %v2 "v2"
+               OpName %a_1 "a_1"
+               OpName %x_40 "x_40"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpTypeFunction %float %_ptr_Function_float
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %37 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %109 = OpTypeFunction %void %main_out
+     %f1_f1_ = OpFunction %float None %22
+          %a = OpFunctionParameter %_ptr_Function_float
+         %26 = OpLabel
+         %28 = OpLoad %float %a
+         %29 = OpDPdx %float %28
+               OpReturnValue %29
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %30
+         %33 = OpLabel
+         %v2 = OpVariable %_ptr_Function_v4float Function %5
+        %a_1 = OpVariable %_ptr_Function_float Function %37
+       %x_40 = OpVariable %_ptr_Function_float Function %37
+      %param = OpVariable %_ptr_Function_float Function %37
+         %43 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %46 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %44
+         %53 = OpConvertSToF %float %47
+         %54 = OpConvertSToF %float %49
+         %55 = OpConvertSToF %float %51
+         %56 = OpCompositeConstruct %v4float %52 %53 %54 %55
+               OpStore %x_GLF_color %56
+         %58 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %59 = OpLoad %float %58
+         %61 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %62 = OpLoad %float %61
+         %63 = OpFOrdLessThan %bool %59 %62
+               OpSelectionMerge %65 None
+               OpBranchConditional %63 %66 %65
+         %66 = OpLabel
+         %67 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+         %68 = OpLoad %float %67
+         %71 = OpFOrdLessThan %bool %68 %float_1
+         %69 = OpLogicalNot %bool %71
+               OpSelectionMerge %72 None
+               OpBranchConditional %69 %73 %72
+         %73 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpFOrdGreaterThan %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %85 = OpLoad %float %84
+               OpStore %param %85
+         %86 = OpFunctionCall %float %f1_f1_ %param
+               OpStore %x_40 %86
+               OpBranch %81
+         %83 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %89 = OpLoad %float %88
+               OpStore %x_40 %89
+               OpBranch %81
+         %81 = OpLabel
+         %90 = OpLoad %float %x_40
+         %91 = OpFDiv %float %75 %90
+               OpStore %a_1 %91
+         %92 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %95 = OpLoad %float %94
+         %96 = OpLoad %float %a_1
+        %100 = OpCompositeConstruct %v3float %93 %93 %93
+        %101 = OpCompositeConstruct %v3float %95 %95 %95
+        %102 = OpCompositeConstruct %v3float %96 %96 %96
+         %97 = OpExtInst %v3float %99 FMix %100 %101 %102
+        %103 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+        %104 = OpLoad %float %103
+        %105 = OpCompositeExtract %float %97 0
+        %106 = OpCompositeExtract %float %97 1
+        %107 = OpCompositeExtract %float %97 2
+        %108 = OpCompositeConstruct %v4float %105 %106 %107 %104
+               OpStore %x_GLF_color %108
+               OpBranch %72
+         %72 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %109
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %113 = OpLabel
+        %114 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %114
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %30
+        %116 = OpLabel
+        %117 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %117
+        %118 = OpFunctionCall %void %main_1
+        %120 = OpLoad %v4float %x_GLF_color
+        %121 = OpCompositeConstruct %main_out %120
+        %119 = OpFunctionCall %void %tint_symbol_3 %121
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a6defc7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+fn f1_f1_(a : ptr<function, f32>) -> f32 {
+  let x_100 : f32 = *(a);
+  return dpdx(x_100);
+}
+
+fn main_1() {
+  var v2 : vec4<f32>;
+  var a_1 : f32;
+  var x_40 : f32;
+  var param : f32;
+  let x_42 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_45 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_48 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_51 : i32 = x_8.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+  let x_55 : f32 = gl_FragCoord.x;
+  let x_57 : f32 = x_10.x_GLF_uniform_float_values[1];
+  if ((x_55 < x_57)) {
+    let x_62 : f32 = v2.x;
+    if (!((x_62 < 1.0))) {
+      let x_68 : f32 = x_10.x_GLF_uniform_float_values[1];
+      let x_70 : f32 = x_10.x_GLF_uniform_float_values[1];
+      let x_72 : f32 = x_10.x_GLF_uniform_float_values[0];
+      if ((x_70 > x_72)) {
+        let x_78 : f32 = x_10.x_GLF_uniform_float_values[0];
+        param = x_78;
+        let x_79 : f32 = f1_f1_(&(param));
+        x_40 = x_79;
+      } else {
+        let x_81 : f32 = x_10.x_GLF_uniform_float_values[0];
+        x_40 = x_81;
+      }
+      let x_82 : f32 = x_40;
+      a_1 = (x_68 / x_82);
+      let x_85 : f32 = x_10.x_GLF_uniform_float_values[0];
+      let x_88 : f32 = x_10.x_GLF_uniform_float_values[0];
+      let x_90 : f32 = a_1;
+      let x_92 : vec3<f32> = mix(vec3<f32>(x_85, x_85, x_85), vec3<f32>(x_88, x_88, x_88), vec3<f32>(x_90, x_90, x_90));
+      let x_94 : f32 = x_10.x_GLF_uniform_float_values[1];
+      x_GLF_color = vec4<f32>(x_92.x, x_92.y, x_92.z, x_94);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm
new file mode 100644
index 0000000..65fb798
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm
@@ -0,0 +1,176 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v1 "v1"
+               OpName %E "E"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_7 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+      %float = OpTypeFloat 32
+     %uint_7 = OpConstant %uint 7
+%_arr_float_uint_7 = OpTypeArray %float %uint_7
+       %buf1 = OpTypeStruct %_arr_float_uint_7
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %39 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+         %v1 = OpVariable %_ptr_Function_v4float Function
+          %E = OpVariable %_ptr_Function_float Function
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %43 = OpLoad %float %42
+         %44 = OpCompositeConstruct %v2float %41 %43
+         %45 = OpExtInst %uint %1 PackUnorm2x16 %44
+               OpStore %a %45
+         %46 = OpLoad %uint %a
+         %47 = OpExtInst %v4float %1 UnpackSnorm4x8 %46
+               OpStore %v1 %47
+               OpStore %E %float_0_00999999978
+         %48 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Function_float %v1 %49
+         %51 = OpLoad %float %50
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %55 = OpLoad %float %54
+         %56 = OpFDiv %float %53 %55
+         %57 = OpFSub %float %51 %56
+         %58 = OpExtInst %float %1 FAbs %57
+         %59 = OpLoad %float %E
+         %60 = OpFOrdLessThan %bool %58 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Function_float %v1 %64
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_4
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %70 = OpLoad %float %69
+         %71 = OpFDiv %float %68 %70
+         %72 = OpFSub %float %66 %71
+         %73 = OpExtInst %float %1 FAbs %72
+         %74 = OpLoad %float %E
+         %75 = OpFOrdLessThan %bool %73 %74
+               OpBranch %61
+         %61 = OpLabel
+         %76 = OpPhi %bool %60 %39 %75 %62
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Function_float %v1 %80
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_5
+         %84 = OpLoad %float %83
+         %85 = OpFNegate %float %84
+         %86 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %87 = OpLoad %float %86
+         %88 = OpFDiv %float %85 %87
+         %89 = OpFSub %float %82 %88
+         %90 = OpExtInst %float %1 FAbs %89
+         %91 = OpLoad %float %E
+         %92 = OpFOrdLessThan %bool %90 %91
+               OpBranch %77
+         %77 = OpLabel
+         %93 = OpPhi %bool %76 %61 %92 %78
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Function_float %v1 %97
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_6
+        %101 = OpLoad %float %100
+        %102 = OpFNegate %float %101
+        %103 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+        %104 = OpLoad %float %103
+        %105 = OpFDiv %float %102 %104
+        %106 = OpFSub %float %99 %105
+        %107 = OpExtInst %float %1 FAbs %106
+        %108 = OpLoad %float %E
+        %109 = OpFOrdLessThan %bool %107 %108
+               OpBranch %94
+         %94 = OpLabel
+        %110 = OpPhi %bool %93 %77 %109 %95
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %113
+        %112 = OpLabel
+        %114 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %115 = OpLoad %int %114
+        %116 = OpConvertSToF %float %115
+        %117 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %118 = OpLoad %int %117
+        %119 = OpConvertSToF %float %118
+        %120 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %121 = OpLoad %int %120
+        %122 = OpConvertSToF %float %121
+        %123 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %124 = OpLoad %int %123
+        %125 = OpConvertSToF %float %124
+        %126 = OpCompositeConstruct %v4float %116 %119 %122 %125
+               OpStore %_GLF_color %126
+               OpBranch %111
+        %113 = OpLabel
+        %127 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_5
+        %128 = OpLoad %float %127
+        %129 = OpCompositeConstruct %v4float %128 %128 %128 %128
+               OpStore %_GLF_color %129
+               OpBranch %111
+        %111 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c1507ae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,96 @@
+uint tint_pack2x16unorm(float2 param_0) {
+  uint2 i = uint2(round(clamp(param_0, 0.0, 1.0) * 65535.0));
+  return (i.x | i.y << 16);
+}
+
+float4 tint_unpack4x8snorm(uint param_0) {
+  int j = int(param_0);
+  int4 i = int4(j << 24, j << 16, j << 8, j) >> 24;
+  return clamp(float4(i) / 127.0, -1.0, 1.0);
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[7];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float E = 0.0f;
+  bool x_75 = false;
+  bool x_92 = false;
+  bool x_109 = false;
+  bool x_76_phi = false;
+  bool x_93_phi = false;
+  bool x_110_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_43 = asfloat(x_6[1].x);
+  a = tint_pack2x16unorm(float2(x_41, x_43));
+  v1 = tint_unpack4x8snorm(a);
+  E = 0.01f;
+  const int x_49 = asint(x_10[2].x);
+  const float x_51 = v1[x_49];
+  const float x_53 = asfloat(x_6[2].x);
+  const float x_55 = asfloat(x_6[3].x);
+  const bool x_60 = (abs((x_51 - (x_53 / x_55))) < E);
+  x_76_phi = x_60;
+  if (x_60) {
+    const int x_64 = asint(x_10[1].x);
+    const float x_66 = v1[x_64];
+    const float x_68 = asfloat(x_6[4].x);
+    const float x_70 = asfloat(x_6[3].x);
+    x_75 = (abs((x_66 - (x_68 / x_70))) < E);
+    x_76_phi = x_75;
+  }
+  const bool x_76 = x_76_phi;
+  x_93_phi = x_76;
+  if (x_76) {
+    const int x_80 = asint(x_10[3].x);
+    const float x_82 = v1[x_80];
+    const float x_84 = asfloat(x_6[5].x);
+    const float x_87 = asfloat(x_6[3].x);
+    x_92 = (abs((x_82 - (-(x_84) / x_87))) < E);
+    x_93_phi = x_92;
+  }
+  const bool x_93 = x_93_phi;
+  x_110_phi = x_93;
+  if (x_93) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_97 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_99 = v1[x_97];
+    const float x_101 = asfloat(x_6[6].x);
+    const float x_104 = asfloat(x_6[3].x);
+    x_109 = (abs((x_99 - (-(x_101) / x_104))) < E);
+    x_110_phi = x_109;
+  }
+  if (x_110_phi) {
+    const int x_115 = asint(x_10[1].x);
+    const int x_118 = asint(x_10[2].x);
+    const int x_121 = asint(x_10[2].x);
+    const int x_124 = asint(x_10[1].x);
+    x_GLF_color = float4(float(x_115), float(x_118), float(x_121), float(x_124));
+  } else {
+    const float x_128 = asfloat(x_6[5].x);
+    x_GLF_color = float4(x_128, x_128, x_128, x_128);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..77c6b6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.msl
@@ -0,0 +1,106 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[7];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 v1 = 0.0f;
+  float E = 0.0f;
+  bool x_75 = false;
+  bool x_92 = false;
+  bool x_109 = false;
+  bool x_76_phi = false;
+  bool x_93_phi = false;
+  bool x_110_phi = false;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = pack_float_to_unorm2x16(float2(x_41, x_43));
+  uint const x_46 = a;
+  v1 = unpack_snorm4x8_to_float(x_46);
+  E = 0.01f;
+  int const x_49 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  float const x_51 = v1[x_49];
+  float const x_53 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_55 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_59 = E;
+  bool const x_60 = (fabs((x_51 - (x_53 / x_55))) < x_59);
+  x_76_phi = x_60;
+  if (x_60) {
+    int const x_64 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_66 = v1[x_64];
+    float const x_68 = x_6.x_GLF_uniform_float_values.arr[4].el;
+    float const x_70 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_74 = E;
+    x_75 = (fabs((x_66 - (x_68 / x_70))) < x_74);
+    x_76_phi = x_75;
+  }
+  bool const x_76 = x_76_phi;
+  x_93_phi = x_76;
+  if (x_76) {
+    int const x_80 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_82 = v1[x_80];
+    float const x_84 = x_6.x_GLF_uniform_float_values.arr[5].el;
+    float const x_87 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_91 = E;
+    x_92 = (fabs((x_82 - (-(x_84) / x_87))) < x_91);
+    x_93_phi = x_92;
+  }
+  bool const x_93 = x_93_phi;
+  x_110_phi = x_93;
+  if (x_93) {
+    int const x_97 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_99 = v1[x_97];
+    float const x_101 = x_6.x_GLF_uniform_float_values.arr[6].el;
+    float const x_104 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_108 = E;
+    x_109 = (fabs((x_99 - (-(x_101) / x_104))) < x_108);
+    x_110_phi = x_109;
+  }
+  bool const x_110 = x_110_phi;
+  if (x_110) {
+    int const x_115 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_118 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_121 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_124 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_115), float(x_118), float(x_121), float(x_124));
+  } else {
+    float const x_128 = x_6.x_GLF_uniform_float_values.arr[5].el;
+    *(tint_symbol_4) = float4(x_128, x_128, x_128, x_128);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..470393d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,238 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 159
+; Schema: 0
+               OpCapability Shader
+         %50 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %E "E"
+               OpName %x_75 "x_75"
+               OpName %x_92 "x_92"
+               OpName %x_109 "x_109"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_110_phi "x_110_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_7 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_7 = OpConstant %uint 7
+%_arr_float_uint_7 = OpTypeArray %float %uint_7
+       %buf1 = OpTypeStruct %_arr_float_uint_7
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %35 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %v2float = OpTypeVector %float 2
+%float_0_00999999978 = OpConstant %float 0.00999999978
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+   %main_out = OpTypeStruct %v4float
+        %147 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %26
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+          %E = OpVariable %_ptr_Function_float Function %31
+       %x_75 = OpVariable %_ptr_Function_bool Function %35
+       %x_92 = OpVariable %_ptr_Function_bool Function %35
+      %x_109 = OpVariable %_ptr_Function_bool Function %35
+   %x_76_phi = OpVariable %_ptr_Function_bool Function %35
+   %x_93_phi = OpVariable %_ptr_Function_bool Function %35
+  %x_110_phi = OpVariable %_ptr_Function_bool Function %35
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %45 = OpLoad %float %44
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %52 = OpCompositeConstruct %v2float %45 %48
+         %49 = OpExtInst %uint %50 PackUnorm2x16 %52
+               OpStore %a %49
+         %53 = OpLoad %uint %a
+         %54 = OpExtInst %v4float %50 UnpackSnorm4x8 %53
+               OpStore %v1 %54
+               OpStore %E %float_0_00999999978
+         %58 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Function_float %v1 %59
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %66 = OpLoad %float %65
+         %67 = OpLoad %float %E
+         %69 = OpFDiv %float %63 %66
+         %70 = OpFSub %float %61 %69
+         %68 = OpExtInst %float %50 FAbs %70
+         %71 = OpFOrdLessThan %bool %68 %67
+               OpStore %x_76_phi %71
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_float %v1 %75
+         %77 = OpLoad %float %76
+         %79 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %82 = OpLoad %float %81
+         %83 = OpLoad %float %E
+         %85 = OpFDiv %float %80 %82
+         %86 = OpFSub %float %77 %85
+         %84 = OpExtInst %float %50 FAbs %86
+         %87 = OpFOrdLessThan %bool %84 %83
+               OpStore %x_75 %87
+         %88 = OpLoad %bool %x_75
+               OpStore %x_76_phi %88
+               OpBranch %72
+         %72 = OpLabel
+         %89 = OpLoad %bool %x_76_phi
+               OpStore %x_93_phi %89
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %93 = OpLoad %int %92
+         %94 = OpAccessChain %_ptr_Function_float %v1 %93
+         %95 = OpLoad %float %94
+         %97 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_5
+         %98 = OpLoad %float %97
+         %99 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %100 = OpLoad %float %99
+        %101 = OpLoad %float %E
+        %103 = OpFNegate %float %98
+        %104 = OpFDiv %float %103 %100
+        %105 = OpFSub %float %95 %104
+        %102 = OpExtInst %float %50 FAbs %105
+        %106 = OpFOrdLessThan %bool %102 %101
+               OpStore %x_92 %106
+        %107 = OpLoad %bool %x_92
+               OpStore %x_93_phi %107
+               OpBranch %90
+         %90 = OpLabel
+        %108 = OpLoad %bool %x_93_phi
+               OpStore %x_110_phi %108
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+        %111 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %112 = OpLoad %int %111
+        %113 = OpAccessChain %_ptr_Function_float %v1 %112
+        %114 = OpLoad %float %113
+        %116 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_6
+        %117 = OpLoad %float %116
+        %118 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %119 = OpLoad %float %118
+        %120 = OpLoad %float %E
+        %122 = OpFNegate %float %117
+        %123 = OpFDiv %float %122 %119
+        %124 = OpFSub %float %114 %123
+        %121 = OpExtInst %float %50 FAbs %124
+        %125 = OpFOrdLessThan %bool %121 %120
+               OpStore %x_109 %125
+        %126 = OpLoad %bool %x_109
+               OpStore %x_110_phi %126
+               OpBranch %109
+        %109 = OpLabel
+        %127 = OpLoad %bool %x_110_phi
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+        %131 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %132 = OpLoad %int %131
+        %133 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %134 = OpLoad %int %133
+        %135 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %136 = OpLoad %int %135
+        %137 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %138 = OpLoad %int %137
+        %139 = OpConvertSToF %float %132
+        %140 = OpConvertSToF %float %134
+        %141 = OpConvertSToF %float %136
+        %142 = OpConvertSToF %float %138
+        %143 = OpCompositeConstruct %v4float %139 %140 %141 %142
+               OpStore %x_GLF_color %143
+               OpBranch %128
+        %130 = OpLabel
+        %144 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_5
+        %145 = OpLoad %float %144
+        %146 = OpCompositeConstruct %v4float %145 %145 %145 %145
+               OpStore %x_GLF_color %146
+               OpBranch %128
+        %128 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %147
+%tint_symbol = OpFunctionParameter %main_out
+        %151 = OpLabel
+        %152 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %152
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %154 = OpLabel
+        %155 = OpFunctionCall %void %main_1
+        %157 = OpLoad %v4float %x_GLF_color
+        %158 = OpCompositeConstruct %main_out %157
+        %156 = OpFunctionCall %void %tint_symbol_2 %158
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..47774e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,98 @@
+type Arr = [[stride(16)]] array<f32, 7>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var E : f32;
+  var x_75 : bool;
+  var x_92 : bool;
+  var x_109 : bool;
+  var x_76_phi : bool;
+  var x_93_phi : bool;
+  var x_110_phi : bool;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = pack2x16unorm(vec2<f32>(x_41, x_43));
+  let x_46 : u32 = a;
+  v1 = unpack4x8snorm(x_46);
+  E = 0.01;
+  let x_49 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_51 : f32 = v1[x_49];
+  let x_53 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_55 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_59 : f32 = E;
+  let x_60 : bool = (abs((x_51 - (x_53 / x_55))) < x_59);
+  x_76_phi = x_60;
+  if (x_60) {
+    let x_64 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_66 : f32 = v1[x_64];
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[4];
+    let x_70 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_74 : f32 = E;
+    x_75 = (abs((x_66 - (x_68 / x_70))) < x_74);
+    x_76_phi = x_75;
+  }
+  let x_76 : bool = x_76_phi;
+  x_93_phi = x_76;
+  if (x_76) {
+    let x_80 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_82 : f32 = v1[x_80];
+    let x_84 : f32 = x_6.x_GLF_uniform_float_values[5];
+    let x_87 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_91 : f32 = E;
+    x_92 = (abs((x_82 - (-(x_84) / x_87))) < x_91);
+    x_93_phi = x_92;
+  }
+  let x_93 : bool = x_93_phi;
+  x_110_phi = x_93;
+  if (x_93) {
+    let x_97 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_99 : f32 = v1[x_97];
+    let x_101 : f32 = x_6.x_GLF_uniform_float_values[6];
+    let x_104 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_108 : f32 = E;
+    x_109 = (abs((x_99 - (-(x_101) / x_104))) < x_108);
+    x_110_phi = x_109;
+  }
+  let x_110 : bool = x_110_phi;
+  if (x_110) {
+    let x_115 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_118 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_121 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_124 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_115), f32(x_118), f32(x_121), f32(x_124));
+  } else {
+    let x_128 : f32 = x_6.x_GLF_uniform_float_values[5];
+    x_GLF_color = vec4<f32>(x_128, x_128, x_128, x_128);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
new file mode 100644
index 0000000..47774e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
@@ -0,0 +1,98 @@
+type Arr = [[stride(16)]] array<f32, 7>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var E : f32;
+  var x_75 : bool;
+  var x_92 : bool;
+  var x_109 : bool;
+  var x_76_phi : bool;
+  var x_93_phi : bool;
+  var x_110_phi : bool;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = pack2x16unorm(vec2<f32>(x_41, x_43));
+  let x_46 : u32 = a;
+  v1 = unpack4x8snorm(x_46);
+  E = 0.01;
+  let x_49 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_51 : f32 = v1[x_49];
+  let x_53 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_55 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_59 : f32 = E;
+  let x_60 : bool = (abs((x_51 - (x_53 / x_55))) < x_59);
+  x_76_phi = x_60;
+  if (x_60) {
+    let x_64 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_66 : f32 = v1[x_64];
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[4];
+    let x_70 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_74 : f32 = E;
+    x_75 = (abs((x_66 - (x_68 / x_70))) < x_74);
+    x_76_phi = x_75;
+  }
+  let x_76 : bool = x_76_phi;
+  x_93_phi = x_76;
+  if (x_76) {
+    let x_80 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_82 : f32 = v1[x_80];
+    let x_84 : f32 = x_6.x_GLF_uniform_float_values[5];
+    let x_87 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_91 : f32 = E;
+    x_92 = (abs((x_82 - (-(x_84) / x_87))) < x_91);
+    x_93_phi = x_92;
+  }
+  let x_93 : bool = x_93_phi;
+  x_110_phi = x_93;
+  if (x_93) {
+    let x_97 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_99 : f32 = v1[x_97];
+    let x_101 : f32 = x_6.x_GLF_uniform_float_values[6];
+    let x_104 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_108 : f32 = E;
+    x_109 = (abs((x_99 - (-(x_101) / x_104))) < x_108);
+    x_110_phi = x_109;
+  }
+  let x_110 : bool = x_110_phi;
+  if (x_110) {
+    let x_115 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_118 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_121 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_124 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_115), f32(x_118), f32(x_121), f32(x_124));
+  } else {
+    let x_128 : f32 = x_6.x_GLF_uniform_float_values[5];
+    x_GLF_color = vec4<f32>(x_128, x_128, x_128, x_128);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c1507ae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,96 @@
+uint tint_pack2x16unorm(float2 param_0) {
+  uint2 i = uint2(round(clamp(param_0, 0.0, 1.0) * 65535.0));
+  return (i.x | i.y << 16);
+}
+
+float4 tint_unpack4x8snorm(uint param_0) {
+  int j = int(param_0);
+  int4 i = int4(j << 24, j << 16, j << 8, j) >> 24;
+  return clamp(float4(i) / 127.0, -1.0, 1.0);
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[7];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float E = 0.0f;
+  bool x_75 = false;
+  bool x_92 = false;
+  bool x_109 = false;
+  bool x_76_phi = false;
+  bool x_93_phi = false;
+  bool x_110_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_43 = asfloat(x_6[1].x);
+  a = tint_pack2x16unorm(float2(x_41, x_43));
+  v1 = tint_unpack4x8snorm(a);
+  E = 0.01f;
+  const int x_49 = asint(x_10[2].x);
+  const float x_51 = v1[x_49];
+  const float x_53 = asfloat(x_6[2].x);
+  const float x_55 = asfloat(x_6[3].x);
+  const bool x_60 = (abs((x_51 - (x_53 / x_55))) < E);
+  x_76_phi = x_60;
+  if (x_60) {
+    const int x_64 = asint(x_10[1].x);
+    const float x_66 = v1[x_64];
+    const float x_68 = asfloat(x_6[4].x);
+    const float x_70 = asfloat(x_6[3].x);
+    x_75 = (abs((x_66 - (x_68 / x_70))) < E);
+    x_76_phi = x_75;
+  }
+  const bool x_76 = x_76_phi;
+  x_93_phi = x_76;
+  if (x_76) {
+    const int x_80 = asint(x_10[3].x);
+    const float x_82 = v1[x_80];
+    const float x_84 = asfloat(x_6[5].x);
+    const float x_87 = asfloat(x_6[3].x);
+    x_92 = (abs((x_82 - (-(x_84) / x_87))) < E);
+    x_93_phi = x_92;
+  }
+  const bool x_93 = x_93_phi;
+  x_110_phi = x_93;
+  if (x_93) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_97 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_99 = v1[x_97];
+    const float x_101 = asfloat(x_6[6].x);
+    const float x_104 = asfloat(x_6[3].x);
+    x_109 = (abs((x_99 - (-(x_101) / x_104))) < E);
+    x_110_phi = x_109;
+  }
+  if (x_110_phi) {
+    const int x_115 = asint(x_10[1].x);
+    const int x_118 = asint(x_10[2].x);
+    const int x_121 = asint(x_10[2].x);
+    const int x_124 = asint(x_10[1].x);
+    x_GLF_color = float4(float(x_115), float(x_118), float(x_121), float(x_124));
+  } else {
+    const float x_128 = asfloat(x_6[5].x);
+    x_GLF_color = float4(x_128, x_128, x_128, x_128);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..77c6b6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.msl
@@ -0,0 +1,106 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[7];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 v1 = 0.0f;
+  float E = 0.0f;
+  bool x_75 = false;
+  bool x_92 = false;
+  bool x_109 = false;
+  bool x_76_phi = false;
+  bool x_93_phi = false;
+  bool x_110_phi = false;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = pack_float_to_unorm2x16(float2(x_41, x_43));
+  uint const x_46 = a;
+  v1 = unpack_snorm4x8_to_float(x_46);
+  E = 0.01f;
+  int const x_49 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  float const x_51 = v1[x_49];
+  float const x_53 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_55 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_59 = E;
+  bool const x_60 = (fabs((x_51 - (x_53 / x_55))) < x_59);
+  x_76_phi = x_60;
+  if (x_60) {
+    int const x_64 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_66 = v1[x_64];
+    float const x_68 = x_6.x_GLF_uniform_float_values.arr[4].el;
+    float const x_70 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_74 = E;
+    x_75 = (fabs((x_66 - (x_68 / x_70))) < x_74);
+    x_76_phi = x_75;
+  }
+  bool const x_76 = x_76_phi;
+  x_93_phi = x_76;
+  if (x_76) {
+    int const x_80 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_82 = v1[x_80];
+    float const x_84 = x_6.x_GLF_uniform_float_values.arr[5].el;
+    float const x_87 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_91 = E;
+    x_92 = (fabs((x_82 - (-(x_84) / x_87))) < x_91);
+    x_93_phi = x_92;
+  }
+  bool const x_93 = x_93_phi;
+  x_110_phi = x_93;
+  if (x_93) {
+    int const x_97 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_99 = v1[x_97];
+    float const x_101 = x_6.x_GLF_uniform_float_values.arr[6].el;
+    float const x_104 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_108 = E;
+    x_109 = (fabs((x_99 - (-(x_101) / x_104))) < x_108);
+    x_110_phi = x_109;
+  }
+  bool const x_110 = x_110_phi;
+  if (x_110) {
+    int const x_115 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_118 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_121 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_124 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_115), float(x_118), float(x_121), float(x_124));
+  } else {
+    float const x_128 = x_6.x_GLF_uniform_float_values.arr[5].el;
+    *(tint_symbol_4) = float4(x_128, x_128, x_128, x_128);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..470393d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,238 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 159
+; Schema: 0
+               OpCapability Shader
+         %50 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %E "E"
+               OpName %x_75 "x_75"
+               OpName %x_92 "x_92"
+               OpName %x_109 "x_109"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_110_phi "x_110_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_7 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_7 = OpConstant %uint 7
+%_arr_float_uint_7 = OpTypeArray %float %uint_7
+       %buf1 = OpTypeStruct %_arr_float_uint_7
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %35 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %v2float = OpTypeVector %float 2
+%float_0_00999999978 = OpConstant %float 0.00999999978
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+   %main_out = OpTypeStruct %v4float
+        %147 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %26
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+          %E = OpVariable %_ptr_Function_float Function %31
+       %x_75 = OpVariable %_ptr_Function_bool Function %35
+       %x_92 = OpVariable %_ptr_Function_bool Function %35
+      %x_109 = OpVariable %_ptr_Function_bool Function %35
+   %x_76_phi = OpVariable %_ptr_Function_bool Function %35
+   %x_93_phi = OpVariable %_ptr_Function_bool Function %35
+  %x_110_phi = OpVariable %_ptr_Function_bool Function %35
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %45 = OpLoad %float %44
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %52 = OpCompositeConstruct %v2float %45 %48
+         %49 = OpExtInst %uint %50 PackUnorm2x16 %52
+               OpStore %a %49
+         %53 = OpLoad %uint %a
+         %54 = OpExtInst %v4float %50 UnpackSnorm4x8 %53
+               OpStore %v1 %54
+               OpStore %E %float_0_00999999978
+         %58 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Function_float %v1 %59
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %66 = OpLoad %float %65
+         %67 = OpLoad %float %E
+         %69 = OpFDiv %float %63 %66
+         %70 = OpFSub %float %61 %69
+         %68 = OpExtInst %float %50 FAbs %70
+         %71 = OpFOrdLessThan %bool %68 %67
+               OpStore %x_76_phi %71
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_float %v1 %75
+         %77 = OpLoad %float %76
+         %79 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %82 = OpLoad %float %81
+         %83 = OpLoad %float %E
+         %85 = OpFDiv %float %80 %82
+         %86 = OpFSub %float %77 %85
+         %84 = OpExtInst %float %50 FAbs %86
+         %87 = OpFOrdLessThan %bool %84 %83
+               OpStore %x_75 %87
+         %88 = OpLoad %bool %x_75
+               OpStore %x_76_phi %88
+               OpBranch %72
+         %72 = OpLabel
+         %89 = OpLoad %bool %x_76_phi
+               OpStore %x_93_phi %89
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %93 = OpLoad %int %92
+         %94 = OpAccessChain %_ptr_Function_float %v1 %93
+         %95 = OpLoad %float %94
+         %97 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_5
+         %98 = OpLoad %float %97
+         %99 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %100 = OpLoad %float %99
+        %101 = OpLoad %float %E
+        %103 = OpFNegate %float %98
+        %104 = OpFDiv %float %103 %100
+        %105 = OpFSub %float %95 %104
+        %102 = OpExtInst %float %50 FAbs %105
+        %106 = OpFOrdLessThan %bool %102 %101
+               OpStore %x_92 %106
+        %107 = OpLoad %bool %x_92
+               OpStore %x_93_phi %107
+               OpBranch %90
+         %90 = OpLabel
+        %108 = OpLoad %bool %x_93_phi
+               OpStore %x_110_phi %108
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+        %111 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %112 = OpLoad %int %111
+        %113 = OpAccessChain %_ptr_Function_float %v1 %112
+        %114 = OpLoad %float %113
+        %116 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_6
+        %117 = OpLoad %float %116
+        %118 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %119 = OpLoad %float %118
+        %120 = OpLoad %float %E
+        %122 = OpFNegate %float %117
+        %123 = OpFDiv %float %122 %119
+        %124 = OpFSub %float %114 %123
+        %121 = OpExtInst %float %50 FAbs %124
+        %125 = OpFOrdLessThan %bool %121 %120
+               OpStore %x_109 %125
+        %126 = OpLoad %bool %x_109
+               OpStore %x_110_phi %126
+               OpBranch %109
+        %109 = OpLabel
+        %127 = OpLoad %bool %x_110_phi
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+        %131 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %132 = OpLoad %int %131
+        %133 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %134 = OpLoad %int %133
+        %135 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %136 = OpLoad %int %135
+        %137 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %138 = OpLoad %int %137
+        %139 = OpConvertSToF %float %132
+        %140 = OpConvertSToF %float %134
+        %141 = OpConvertSToF %float %136
+        %142 = OpConvertSToF %float %138
+        %143 = OpCompositeConstruct %v4float %139 %140 %141 %142
+               OpStore %x_GLF_color %143
+               OpBranch %128
+        %130 = OpLabel
+        %144 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_5
+        %145 = OpLoad %float %144
+        %146 = OpCompositeConstruct %v4float %145 %145 %145 %145
+               OpStore %x_GLF_color %146
+               OpBranch %128
+        %128 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %147
+%tint_symbol = OpFunctionParameter %main_out
+        %151 = OpLabel
+        %152 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %152
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %154 = OpLabel
+        %155 = OpFunctionCall %void %main_1
+        %157 = OpLoad %v4float %x_GLF_color
+        %158 = OpCompositeConstruct %main_out %157
+        %156 = OpFunctionCall %void %tint_symbol_2 %158
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..47774e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,98 @@
+type Arr = [[stride(16)]] array<f32, 7>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var E : f32;
+  var x_75 : bool;
+  var x_92 : bool;
+  var x_109 : bool;
+  var x_76_phi : bool;
+  var x_93_phi : bool;
+  var x_110_phi : bool;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = pack2x16unorm(vec2<f32>(x_41, x_43));
+  let x_46 : u32 = a;
+  v1 = unpack4x8snorm(x_46);
+  E = 0.01;
+  let x_49 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_51 : f32 = v1[x_49];
+  let x_53 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_55 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_59 : f32 = E;
+  let x_60 : bool = (abs((x_51 - (x_53 / x_55))) < x_59);
+  x_76_phi = x_60;
+  if (x_60) {
+    let x_64 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_66 : f32 = v1[x_64];
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[4];
+    let x_70 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_74 : f32 = E;
+    x_75 = (abs((x_66 - (x_68 / x_70))) < x_74);
+    x_76_phi = x_75;
+  }
+  let x_76 : bool = x_76_phi;
+  x_93_phi = x_76;
+  if (x_76) {
+    let x_80 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_82 : f32 = v1[x_80];
+    let x_84 : f32 = x_6.x_GLF_uniform_float_values[5];
+    let x_87 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_91 : f32 = E;
+    x_92 = (abs((x_82 - (-(x_84) / x_87))) < x_91);
+    x_93_phi = x_92;
+  }
+  let x_93 : bool = x_93_phi;
+  x_110_phi = x_93;
+  if (x_93) {
+    let x_97 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_99 : f32 = v1[x_97];
+    let x_101 : f32 = x_6.x_GLF_uniform_float_values[6];
+    let x_104 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_108 : f32 = E;
+    x_109 = (abs((x_99 - (-(x_101) / x_104))) < x_108);
+    x_110_phi = x_109;
+  }
+  let x_110 : bool = x_110_phi;
+  if (x_110) {
+    let x_115 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_118 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_121 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_124 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_115), f32(x_118), f32(x_121), f32(x_124));
+  } else {
+    let x_128 : f32 = x_6.x_GLF_uniform_float_values[5];
+    x_GLF_color = vec4<f32>(x_128, x_128, x_128, x_128);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm
new file mode 100644
index 0000000..e2e61a0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm
@@ -0,0 +1,116 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+       %main = OpFunction %void None %13
+         %32 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+         %33 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+               OpStore %_GLF_color %36
+         %37 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThanEqual %bool %38 %40
+         %42 = OpSelect %int %41 %int_2 %int_1
+         %43 = OpShiftLeftLogical %int %int_1 %42
+               OpStore %i %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpINotEqual %bool %48 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpSLessThan %bool %54 %56
+               OpBranch %52
+         %52 = OpLabel
+         %58 = OpPhi %bool %51 %47 %57 %53
+               OpBranchConditional %58 %59 %45
+         %59 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %70
+         %72 = OpCompositeConstruct %v4float %62 %65 %68 %71
+               OpStore %_GLF_color %72
+               OpBranch %46
+         %46 = OpLabel
+         %73 = OpLoad %int %i
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %i %74
+               OpBranch %44
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0b64549
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,68 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+
+void main_1() {
+  int i = 0;
+  const int x_34 = asint(x_6[2].x);
+  const float x_35 = float(x_34);
+  x_GLF_color = float4(x_35, x_35, x_35, x_35);
+  const float x_38 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_9[scalar_offset / 4][scalar_offset % 4]);
+  i = (1 << asuint(((x_38 >= x_40) ? 2 : 1)));
+  while (true) {
+    bool x_57 = false;
+    bool x_58_phi = false;
+    const int x_48 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const bool x_51 = (x_48 != x_50);
+    x_58_phi = x_51;
+    if (x_51) {
+      const int x_54 = i;
+      const int x_56 = asint(x_6[1].x);
+      x_57 = (x_54 < x_56);
+      x_58_phi = x_57;
+    }
+    if (x_58_phi) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_61 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_64 = asint(x_6[2].x);
+    const int x_67 = asint(x_6[2].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_70 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+    {
+      i = (i + 1);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..752c12b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int const x_34 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_35 = float(x_34);
+  *(tint_symbol_5) = float4(x_35, x_35, x_35, x_35);
+  float const x_38 = (*(tint_symbol_6)).y;
+  float const x_40 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  i = (1 << as_type<uint>(select(1, 2, (x_38 >= x_40))));
+  while (true) {
+    bool x_57 = false;
+    bool x_58_phi = false;
+    int const x_48 = i;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    bool const x_51 = (x_48 != x_50);
+    x_58_phi = x_51;
+    if (x_51) {
+      int const x_54 = i;
+      int const x_56 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      x_57 = (x_54 < x_56);
+      x_58_phi = x_57;
+    }
+    bool const x_58 = x_58_phi;
+    if (x_58) {
+    } else {
+      break;
+    }
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_70 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+    {
+      int const x_73 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_9, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..42db932
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,170 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 101
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %x_57 "x_57"
+               OpName %x_58_phi "x_58_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %56 = OpConstantNull %bool
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %29
+       %x_57 = OpVariable %_ptr_Function_bool Function %56
+   %x_58_phi = OpVariable %_ptr_Function_bool Function %56
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+               OpStore %x_GLF_color %36
+         %38 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %39 = OpLoad %float %38
+         %42 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %47 = OpFOrdGreaterThanEqual %bool %39 %43
+         %46 = OpSelect %int %47 %int_2 %int_1
+         %45 = OpBitcast %uint %46
+         %49 = OpShiftLeftLogical %int %int_1 %45
+               OpStore %i %49
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpINotEqual %bool %58 %60
+               OpStore %x_58_phi %61
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpSLessThan %bool %64 %66
+               OpStore %x_57 %67
+         %68 = OpLoad %bool %x_57
+               OpStore %x_58_phi %68
+               OpBranch %62
+         %62 = OpLabel
+         %69 = OpLoad %bool %x_58_phi
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %51
+         %70 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %74
+         %82 = OpConvertSToF %float %76
+         %83 = OpConvertSToF %float %78
+         %84 = OpConvertSToF %float %80
+         %85 = OpCompositeConstruct %v4float %81 %82 %83 %84
+               OpStore %x_GLF_color %85
+               OpBranch %52
+         %52 = OpLabel
+         %86 = OpLoad %int %i
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %i %87
+               OpBranch %50
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %88
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %95 = OpLabel
+         %96 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %96
+         %97 = OpFunctionCall %void %main_1
+         %99 = OpLoad %v4float %x_GLF_color
+        %100 = OpCompositeConstruct %main_out %99
+         %98 = OpFunctionCall %void %tint_symbol_3 %100
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ad9faee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,73 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var i : i32;
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_35 : f32 = f32(x_34);
+  x_GLF_color = vec4<f32>(x_35, x_35, x_35, x_35);
+  let x_38 : f32 = gl_FragCoord.y;
+  let x_40 : f32 = x_9.x_GLF_uniform_float_values[0];
+  i = (1 << bitcast<u32>(select(1, 2, (x_38 >= x_40))));
+  loop {
+    var x_57 : bool;
+    var x_58_phi : bool;
+    let x_48 : i32 = i;
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_51 : bool = (x_48 != x_50);
+    x_58_phi = x_51;
+    if (x_51) {
+      let x_54 : i32 = i;
+      let x_56 : i32 = x_6.x_GLF_uniform_int_values[1];
+      x_57 = (x_54 < x_56);
+      x_58_phi = x_57;
+    }
+    let x_58 : bool = x_58_phi;
+    if (x_58) {
+    } else {
+      break;
+    }
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_61), f32(x_64), f32(x_67), f32(x_70));
+
+    continuing {
+      let x_73 : i32 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
new file mode 100644
index 0000000..ad9faee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
@@ -0,0 +1,73 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var i : i32;
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_35 : f32 = f32(x_34);
+  x_GLF_color = vec4<f32>(x_35, x_35, x_35, x_35);
+  let x_38 : f32 = gl_FragCoord.y;
+  let x_40 : f32 = x_9.x_GLF_uniform_float_values[0];
+  i = (1 << bitcast<u32>(select(1, 2, (x_38 >= x_40))));
+  loop {
+    var x_57 : bool;
+    var x_58_phi : bool;
+    let x_48 : i32 = i;
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_51 : bool = (x_48 != x_50);
+    x_58_phi = x_51;
+    if (x_51) {
+      let x_54 : i32 = i;
+      let x_56 : i32 = x_6.x_GLF_uniform_int_values[1];
+      x_57 = (x_54 < x_56);
+      x_58_phi = x_57;
+    }
+    let x_58 : bool = x_58_phi;
+    if (x_58) {
+    } else {
+      break;
+    }
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_61), f32(x_64), f32(x_67), f32(x_70));
+
+    continuing {
+      let x_73 : i32 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0b64549
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,68 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+
+void main_1() {
+  int i = 0;
+  const int x_34 = asint(x_6[2].x);
+  const float x_35 = float(x_34);
+  x_GLF_color = float4(x_35, x_35, x_35, x_35);
+  const float x_38 = gl_FragCoord.y;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_9[scalar_offset / 4][scalar_offset % 4]);
+  i = (1 << asuint(((x_38 >= x_40) ? 2 : 1)));
+  while (true) {
+    bool x_57 = false;
+    bool x_58_phi = false;
+    const int x_48 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const bool x_51 = (x_48 != x_50);
+    x_58_phi = x_51;
+    if (x_51) {
+      const int x_54 = i;
+      const int x_56 = asint(x_6[1].x);
+      x_57 = (x_54 < x_56);
+      x_58_phi = x_57;
+    }
+    if (x_58_phi) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_61 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_64 = asint(x_6[2].x);
+    const int x_67 = asint(x_6[2].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_70 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+    {
+      i = (i + 1);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..752c12b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int const x_34 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_35 = float(x_34);
+  *(tint_symbol_5) = float4(x_35, x_35, x_35, x_35);
+  float const x_38 = (*(tint_symbol_6)).y;
+  float const x_40 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  i = (1 << as_type<uint>(select(1, 2, (x_38 >= x_40))));
+  while (true) {
+    bool x_57 = false;
+    bool x_58_phi = false;
+    int const x_48 = i;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    bool const x_51 = (x_48 != x_50);
+    x_58_phi = x_51;
+    if (x_51) {
+      int const x_54 = i;
+      int const x_56 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      x_57 = (x_54 < x_56);
+      x_58_phi = x_57;
+    }
+    bool const x_58 = x_58_phi;
+    if (x_58) {
+    } else {
+      break;
+    }
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_70 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_61), float(x_64), float(x_67), float(x_70));
+    {
+      int const x_73 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_9, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..42db932
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,170 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 101
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %x_57 "x_57"
+               OpName %x_58_phi "x_58_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %56 = OpConstantNull %bool
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %29
+       %x_57 = OpVariable %_ptr_Function_bool Function %56
+   %x_58_phi = OpVariable %_ptr_Function_bool Function %56
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+               OpStore %x_GLF_color %36
+         %38 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %39 = OpLoad %float %38
+         %42 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %47 = OpFOrdGreaterThanEqual %bool %39 %43
+         %46 = OpSelect %int %47 %int_2 %int_1
+         %45 = OpBitcast %uint %46
+         %49 = OpShiftLeftLogical %int %int_1 %45
+               OpStore %i %49
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpINotEqual %bool %58 %60
+               OpStore %x_58_phi %61
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpSLessThan %bool %64 %66
+               OpStore %x_57 %67
+         %68 = OpLoad %bool %x_57
+               OpStore %x_58_phi %68
+               OpBranch %62
+         %62 = OpLabel
+         %69 = OpLoad %bool %x_58_phi
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %51
+         %70 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %74
+         %82 = OpConvertSToF %float %76
+         %83 = OpConvertSToF %float %78
+         %84 = OpConvertSToF %float %80
+         %85 = OpCompositeConstruct %v4float %81 %82 %83 %84
+               OpStore %x_GLF_color %85
+               OpBranch %52
+         %52 = OpLabel
+         %86 = OpLoad %int %i
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %i %87
+               OpBranch %50
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %88
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %95 = OpLabel
+         %96 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %96
+         %97 = OpFunctionCall %void %main_1
+         %99 = OpLoad %v4float %x_GLF_color
+        %100 = OpCompositeConstruct %main_out %99
+         %98 = OpFunctionCall %void %tint_symbol_3 %100
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ad9faee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,73 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var i : i32;
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_35 : f32 = f32(x_34);
+  x_GLF_color = vec4<f32>(x_35, x_35, x_35, x_35);
+  let x_38 : f32 = gl_FragCoord.y;
+  let x_40 : f32 = x_9.x_GLF_uniform_float_values[0];
+  i = (1 << bitcast<u32>(select(1, 2, (x_38 >= x_40))));
+  loop {
+    var x_57 : bool;
+    var x_58_phi : bool;
+    let x_48 : i32 = i;
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_51 : bool = (x_48 != x_50);
+    x_58_phi = x_51;
+    if (x_51) {
+      let x_54 : i32 = i;
+      let x_56 : i32 = x_6.x_GLF_uniform_int_values[1];
+      x_57 = (x_54 < x_56);
+      x_58_phi = x_57;
+    }
+    let x_58 : bool = x_58_phi;
+    if (x_58) {
+    } else {
+      break;
+    }
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_61), f32(x_64), f32(x_67), f32(x_70));
+
+    continuing {
+      let x_73 : i32 = i;
+      i = (x_73 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm
new file mode 100644
index 0000000..36e4d29
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm
@@ -0,0 +1,197 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %A "A"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %true = OpConstantTrue %bool
+     %v2bool = OpTypeVector %bool 2
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+         %40 = OpConstantComposite %v2bool %false %false
+     %uint_0 = OpConstant %uint 0
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %17
+         %44 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_int_uint_2 Function
+          %i = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function_int Function
+         %v1 = OpVariable %_ptr_Function_v2float Function
+         %v2 = OpVariable %_ptr_Function_v2float Function
+          %b = OpVariable %_ptr_Function_int Function
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Function_int %A %46
+               OpStore %49 %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Function_int %A %51
+               OpStore %54 %53
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %56 = OpLoad %int %55
+               OpStore %i %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %i
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %63 = OpLoad %int %62
+         %64 = OpSGreaterThan %bool %61 %63
+               OpBranchConditional %64 %65 %58
+         %65 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpISub %int %66 %int_1
+               OpStore %i %67
+               OpBranch %59
+         %59 = OpLabel
+               OpBranch %57
+         %58 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %69 = OpLoad %float %68
+         %70 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %71 = OpLoad %float %70
+         %72 = OpFOrdGreaterThanEqual %bool %69 %71
+         %73 = OpLoad %int %i
+         %74 = OpSelect %int %72 %int_1 %73
+         %75 = OpAccessChain %_ptr_Function_int %A %74
+         %76 = OpLoad %int %75
+               OpStore %a %76
+         %77 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpLoad %int %a
+         %81 = OpConvertSToF %float %80
+         %82 = OpCompositeConstruct %v2float %79 %81
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %87
+         %89 = OpCompositeConstruct %v2float %85 %88
+         %90 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %93 = OpLoad %float %92
+         %94 = OpFOrdLessThan %bool %91 %93
+         %95 = OpCompositeConstruct %v2bool %94 %true
+         %96 = OpSelect %v2float %95 %89 %82
+               OpStore %v1 %96
+         %97 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Function_float %v1 %98
+        %100 = OpLoad %float %99
+        %101 = OpCompositeConstruct %v2float %100 %100
+        %102 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Function_float %v1 %103
+        %105 = OpLoad %float %104
+        %106 = OpCompositeConstruct %v2float %105 %105
+        %107 = OpSelect %v2float %40 %106 %101
+               OpStore %v2 %107
+        %108 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %109
+        %111 = OpCompositeConstruct %v2float %110 %110
+        %112 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %113
+        %115 = OpCompositeConstruct %v2float %114 %114
+        %116 = OpLoad %v2float %v2
+        %117 = OpExtInst %v2float %1 FClamp %111 %115 %116
+        %118 = OpCompositeExtract %float %117 0
+        %119 = OpConvertFToS %int %118
+        %120 = OpAccessChain %_ptr_Function_int %A %119
+        %121 = OpLoad %int %120
+               OpStore %b %121
+        %122 = OpLoad %int %b
+        %123 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %124 = OpLoad %int %123
+        %125 = OpIEqual %bool %122 %124
+               OpSelectionMerge %126 None
+               OpBranchConditional %125 %127 %128
+        %127 = OpLabel
+        %129 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %130
+        %132 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %133 = OpLoad %int %132
+        %134 = OpConvertSToF %float %133
+        %135 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %136 = OpLoad %int %135
+        %137 = OpConvertSToF %float %136
+        %138 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %139 = OpLoad %int %138
+        %140 = OpConvertSToF %float %139
+        %141 = OpCompositeConstruct %v4float %131 %134 %137 %140
+               OpStore %_GLF_color %141
+               OpBranch %126
+        %128 = OpLabel
+        %142 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %143 = OpLoad %int %142
+        %144 = OpConvertSToF %float %143
+        %145 = OpCompositeConstruct %v4float %144 %144 %144 %144
+               OpStore %_GLF_color %145
+               OpBranch %126
+        %126 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ff9156f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,94 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int A[2] = (int[2])0;
+  int i = 0;
+  int a = 0;
+  float2 v1 = float2(0.0f, 0.0f);
+  float2 v2 = float2(0.0f, 0.0f);
+  int b = 0;
+  const int x_46 = asint(x_6[2].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_48 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  A[x_46] = x_48;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_51 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_53 = asint(x_6[1].x);
+  A[x_51] = x_53;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_56 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  i = x_56;
+  while (true) {
+    const int x_61 = i;
+    const int x_63 = asint(x_6[2].x);
+    if ((x_61 > x_63)) {
+    } else {
+      break;
+    }
+    i = (i - 1);
+  }
+  const float x_69 = asfloat(x_10[1].x);
+  const float x_71 = asfloat(x_10[1].x);
+  const int x_76 = A[((x_69 >= x_71) ? 1 : i)];
+  a = x_76;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_78 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_80 = a;
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_84 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const int x_87 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const float x_91 = asfloat(x_10[1].x);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const float x_93 = asfloat(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  v1 = (bool2((x_91 < x_93), true) ? float2(float(x_84), float(x_87)) : float2(float(x_78), float(x_80)));
+  const int x_98 = asint(x_6[2].x);
+  const float x_100 = v1[x_98];
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const int x_103 = asint(x_6[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  const float x_105 = v1[x_103];
+  v2 = (bool2(false, false) ? float2(x_105, x_105) : float2(x_100, x_100));
+  const int x_109 = asint(x_6[1].x);
+  const float x_110 = float(x_109);
+  const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+  const int x_113 = asint(x_6[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+  const float x_114 = float(x_113);
+  const int x_121 = A[int(clamp(float2(x_110, x_110), float2(x_114, x_114), v2).x)];
+  b = x_121;
+  const int x_122 = b;
+  const int x_124 = asint(x_6[1].x);
+  if ((x_122 == x_124)) {
+    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+    const int x_130 = asint(x_6[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+    const int x_133 = asint(x_6[2].x);
+    const int x_136 = asint(x_6[2].x);
+    const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+    const int x_139 = asint(x_6[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+    x_GLF_color = float4(float(x_130), float(x_133), float(x_136), float(x_139));
+  } else {
+    const int x_143 = asint(x_6[2].x);
+    const float x_144 = float(x_143);
+    x_GLF_color = float4(x_144, x_144, x_144, x_144);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..57d1bba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.msl
@@ -0,0 +1,106 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 A = {};
+  int i = 0;
+  int a = 0;
+  float2 v1 = 0.0f;
+  float2 v2 = 0.0f;
+  int b = 0;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  A.arr[x_46] = x_48;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  A.arr[x_51] = x_53;
+  int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i = x_56;
+  while (true) {
+    int const x_61 = i;
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_61 > x_63)) {
+    } else {
+      break;
+    }
+    int const x_66 = i;
+    i = (x_66 - 1);
+  }
+  float const x_69 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  float const x_71 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  int const x_73 = i;
+  int const x_76 = A.arr[select(x_73, 1, (x_69 >= x_71))];
+  a = x_76;
+  int const x_78 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_80 = a;
+  int const x_84 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_87 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_91 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  float const x_93 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  v1 = select(float2(float(x_78), float(x_80)), float2(float(x_84), float(x_87)), bool2((x_91 < x_93), true));
+  int const x_98 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_100 = v1[x_98];
+  int const x_103 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_105 = v1[x_103];
+  v2 = select(float2(x_100, x_100), float2(x_105, x_105), bool2(false, false));
+  int const x_109 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_110 = float(x_109);
+  int const x_113 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_114 = float(x_113);
+  float2 const x_116 = v2;
+  int const x_121 = A.arr[int(clamp(float2(x_110, x_110), float2(x_114, x_114), x_116).x)];
+  b = x_121;
+  int const x_122 = b;
+  int const x_124 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_122 == x_124)) {
+    int const x_130 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_133 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_136 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_139 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_130), float(x_133), float(x_136), float(x_139));
+  } else {
+    int const x_143 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_144 = float(x_143);
+    *(tint_symbol_4) = float4(x_144, x_144, x_144, x_144);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8b6f4d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,239 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 166
+; Schema: 0
+               OpCapability Shader
+        %124 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %A "A"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %27 = OpConstantNull %_arr_int_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %35 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %v2bool = OpTypeVector %bool 2
+       %true = OpConstantTrue %bool
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+        %112 = OpConstantComposite %v2bool %false %false
+   %main_out = OpTypeStruct %v4float
+        %154 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_int_uint_2 Function %27
+          %i = OpVariable %_ptr_Function_int Function %30
+          %a = OpVariable %_ptr_Function_int Function %30
+         %v1 = OpVariable %_ptr_Function_v2float Function %35
+         %v2 = OpVariable %_ptr_Function_v2float Function %35
+          %b = OpVariable %_ptr_Function_int Function %30
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %42 = OpLoad %int %41
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Function_int %A %42
+               OpStore %46 %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Function_int %A %48
+               OpStore %52 %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %54 = OpLoad %int %53
+               OpStore %i %54
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %61 = OpLoad %int %60
+         %62 = OpSGreaterThan %bool %59 %61
+               OpSelectionMerge %64 None
+               OpBranchConditional %62 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %56
+         %64 = OpLabel
+         %67 = OpLoad %int %i
+         %68 = OpISub %int %67 %int_1
+               OpStore %i %68
+               OpBranch %57
+         %57 = OpLabel
+               OpBranch %55
+         %56 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %73 = OpLoad %float %72
+         %74 = OpLoad %int %i
+         %76 = OpFOrdGreaterThanEqual %bool %71 %73
+         %75 = OpSelect %int %76 %int_1 %74
+         %77 = OpAccessChain %_ptr_Function_int %A %75
+         %78 = OpLoad %int %77
+               OpStore %a %78
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpLoad %int %a
+         %82 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %89 = OpLoad %float %88
+         %92 = OpFOrdLessThan %bool %87 %89
+         %94 = OpCompositeConstruct %v2bool %92 %true
+         %95 = OpConvertSToF %float %83
+         %96 = OpConvertSToF %float %85
+         %97 = OpCompositeConstruct %v2float %95 %96
+         %98 = OpConvertSToF %float %80
+         %99 = OpConvertSToF %float %81
+        %100 = OpCompositeConstruct %v2float %98 %99
+         %90 = OpSelect %v2float %94 %97 %100
+               OpStore %v1 %90
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %102 = OpLoad %int %101
+        %104 = OpAccessChain %_ptr_Function_float %v1 %102
+        %105 = OpLoad %float %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Function_float %v1 %107
+        %109 = OpLoad %float %108
+        %113 = OpCompositeConstruct %v2float %109 %109
+        %114 = OpCompositeConstruct %v2float %105 %105
+        %110 = OpSelect %v2float %112 %113 %114
+               OpStore %v2 %110
+        %115 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %119
+        %121 = OpLoad %v2float %v2
+        %125 = OpCompositeConstruct %v2float %117 %117
+        %126 = OpCompositeConstruct %v2float %120 %120
+        %123 = OpExtInst %v2float %124 NClamp %125 %126 %121
+        %127 = OpCompositeExtract %float %123 0
+        %122 = OpConvertFToS %int %127
+        %128 = OpAccessChain %_ptr_Function_int %A %122
+        %129 = OpLoad %int %128
+               OpStore %b %129
+        %130 = OpLoad %int %b
+        %131 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %132 = OpLoad %int %131
+        %133 = OpIEqual %bool %130 %132
+               OpSelectionMerge %134 None
+               OpBranchConditional %133 %135 %136
+        %135 = OpLabel
+        %137 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %138 = OpLoad %int %137
+        %139 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %140 = OpLoad %int %139
+        %141 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %142 = OpLoad %int %141
+        %143 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %144 = OpLoad %int %143
+        %145 = OpConvertSToF %float %138
+        %146 = OpConvertSToF %float %140
+        %147 = OpConvertSToF %float %142
+        %148 = OpConvertSToF %float %144
+        %149 = OpCompositeConstruct %v4float %145 %146 %147 %148
+               OpStore %x_GLF_color %149
+               OpBranch %134
+        %136 = OpLabel
+        %150 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %151 = OpLoad %int %150
+        %152 = OpConvertSToF %float %151
+        %153 = OpCompositeConstruct %v4float %152 %152 %152 %152
+               OpStore %x_GLF_color %153
+               OpBranch %134
+        %134 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %154
+%tint_symbol = OpFunctionParameter %main_out
+        %158 = OpLabel
+        %159 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %159
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %161 = OpLabel
+        %162 = OpFunctionCall %void %main_1
+        %164 = OpLoad %v4float %x_GLF_color
+        %165 = OpCompositeConstruct %main_out %164
+        %163 = OpFunctionCall %void %tint_symbol_2 %165
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..591926d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,95 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<i32, 2>;
+  var i : i32;
+  var a : i32;
+  var v1 : vec2<f32>;
+  var v2 : vec2<f32>;
+  var b : i32;
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+  A[x_46] = x_48;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+  A[x_51] = x_53;
+  let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = x_56;
+  loop {
+    let x_61 : i32 = i;
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_61 > x_63)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = i;
+    i = (x_66 - 1);
+  }
+  let x_69 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_71 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_73 : i32 = i;
+  let x_76 : i32 = A[select(x_73, 1, (x_69 >= x_71))];
+  a = x_76;
+  let x_78 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_80 : i32 = a;
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_87 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_91 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_93 : f32 = x_10.x_GLF_uniform_float_values[0];
+  v1 = select(vec2<f32>(f32(x_78), f32(x_80)), vec2<f32>(f32(x_84), f32(x_87)), vec2<bool>((x_91 < x_93), true));
+  let x_98 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_100 : f32 = v1[x_98];
+  let x_103 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_105 : f32 = v1[x_103];
+  v2 = select(vec2<f32>(x_100, x_100), vec2<f32>(x_105, x_105), vec2<bool>(false, false));
+  let x_109 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_110 : f32 = f32(x_109);
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_114 : f32 = f32(x_113);
+  let x_116 : vec2<f32> = v2;
+  let x_121 : i32 = A[i32(clamp(vec2<f32>(x_110, x_110), vec2<f32>(x_114, x_114), x_116).x)];
+  b = x_121;
+  let x_122 : i32 = b;
+  let x_124 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_122 == x_124)) {
+    let x_130 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_133 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_136 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_139 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_130), f32(x_133), f32(x_136), f32(x_139));
+  } else {
+    let x_143 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_144 : f32 = f32(x_143);
+    x_GLF_color = vec4<f32>(x_144, x_144, x_144, x_144);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
new file mode 100644
index 0000000..591926d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
@@ -0,0 +1,95 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<i32, 2>;
+  var i : i32;
+  var a : i32;
+  var v1 : vec2<f32>;
+  var v2 : vec2<f32>;
+  var b : i32;
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+  A[x_46] = x_48;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+  A[x_51] = x_53;
+  let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = x_56;
+  loop {
+    let x_61 : i32 = i;
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_61 > x_63)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = i;
+    i = (x_66 - 1);
+  }
+  let x_69 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_71 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_73 : i32 = i;
+  let x_76 : i32 = A[select(x_73, 1, (x_69 >= x_71))];
+  a = x_76;
+  let x_78 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_80 : i32 = a;
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_87 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_91 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_93 : f32 = x_10.x_GLF_uniform_float_values[0];
+  v1 = select(vec2<f32>(f32(x_78), f32(x_80)), vec2<f32>(f32(x_84), f32(x_87)), vec2<bool>((x_91 < x_93), true));
+  let x_98 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_100 : f32 = v1[x_98];
+  let x_103 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_105 : f32 = v1[x_103];
+  v2 = select(vec2<f32>(x_100, x_100), vec2<f32>(x_105, x_105), vec2<bool>(false, false));
+  let x_109 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_110 : f32 = f32(x_109);
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_114 : f32 = f32(x_113);
+  let x_116 : vec2<f32> = v2;
+  let x_121 : i32 = A[i32(clamp(vec2<f32>(x_110, x_110), vec2<f32>(x_114, x_114), x_116).x)];
+  b = x_121;
+  let x_122 : i32 = b;
+  let x_124 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_122 == x_124)) {
+    let x_130 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_133 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_136 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_139 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_130), f32(x_133), f32(x_136), f32(x_139));
+  } else {
+    let x_143 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_144 : f32 = f32(x_143);
+    x_GLF_color = vec4<f32>(x_144, x_144, x_144, x_144);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ff9156f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,94 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int A[2] = (int[2])0;
+  int i = 0;
+  int a = 0;
+  float2 v1 = float2(0.0f, 0.0f);
+  float2 v2 = float2(0.0f, 0.0f);
+  int b = 0;
+  const int x_46 = asint(x_6[2].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_48 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  A[x_46] = x_48;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_51 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const int x_53 = asint(x_6[1].x);
+  A[x_51] = x_53;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_56 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  i = x_56;
+  while (true) {
+    const int x_61 = i;
+    const int x_63 = asint(x_6[2].x);
+    if ((x_61 > x_63)) {
+    } else {
+      break;
+    }
+    i = (i - 1);
+  }
+  const float x_69 = asfloat(x_10[1].x);
+  const float x_71 = asfloat(x_10[1].x);
+  const int x_76 = A[((x_69 >= x_71) ? 1 : i)];
+  a = x_76;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_78 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_80 = a;
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_84 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const int x_87 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const float x_91 = asfloat(x_10[1].x);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const float x_93 = asfloat(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  v1 = (bool2((x_91 < x_93), true) ? float2(float(x_84), float(x_87)) : float2(float(x_78), float(x_80)));
+  const int x_98 = asint(x_6[2].x);
+  const float x_100 = v1[x_98];
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const int x_103 = asint(x_6[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  const float x_105 = v1[x_103];
+  v2 = (bool2(false, false) ? float2(x_105, x_105) : float2(x_100, x_100));
+  const int x_109 = asint(x_6[1].x);
+  const float x_110 = float(x_109);
+  const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+  const int x_113 = asint(x_6[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+  const float x_114 = float(x_113);
+  const int x_121 = A[int(clamp(float2(x_110, x_110), float2(x_114, x_114), v2).x)];
+  b = x_121;
+  const int x_122 = b;
+  const int x_124 = asint(x_6[1].x);
+  if ((x_122 == x_124)) {
+    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+    const int x_130 = asint(x_6[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+    const int x_133 = asint(x_6[2].x);
+    const int x_136 = asint(x_6[2].x);
+    const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+    const int x_139 = asint(x_6[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+    x_GLF_color = float4(float(x_130), float(x_133), float(x_136), float(x_139));
+  } else {
+    const int x_143 = asint(x_6[2].x);
+    const float x_144 = float(x_143);
+    x_GLF_color = float4(x_144, x_144, x_144, x_144);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..57d1bba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.msl
@@ -0,0 +1,106 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 A = {};
+  int i = 0;
+  int a = 0;
+  float2 v1 = 0.0f;
+  float2 v2 = 0.0f;
+  int b = 0;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  A.arr[x_46] = x_48;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  A.arr[x_51] = x_53;
+  int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i = x_56;
+  while (true) {
+    int const x_61 = i;
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_61 > x_63)) {
+    } else {
+      break;
+    }
+    int const x_66 = i;
+    i = (x_66 - 1);
+  }
+  float const x_69 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  float const x_71 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  int const x_73 = i;
+  int const x_76 = A.arr[select(x_73, 1, (x_69 >= x_71))];
+  a = x_76;
+  int const x_78 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_80 = a;
+  int const x_84 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_87 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_91 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  float const x_93 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  v1 = select(float2(float(x_78), float(x_80)), float2(float(x_84), float(x_87)), bool2((x_91 < x_93), true));
+  int const x_98 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_100 = v1[x_98];
+  int const x_103 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_105 = v1[x_103];
+  v2 = select(float2(x_100, x_100), float2(x_105, x_105), bool2(false, false));
+  int const x_109 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_110 = float(x_109);
+  int const x_113 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_114 = float(x_113);
+  float2 const x_116 = v2;
+  int const x_121 = A.arr[int(clamp(float2(x_110, x_110), float2(x_114, x_114), x_116).x)];
+  b = x_121;
+  int const x_122 = b;
+  int const x_124 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_122 == x_124)) {
+    int const x_130 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_133 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_136 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_139 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_130), float(x_133), float(x_136), float(x_139));
+  } else {
+    int const x_143 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_144 = float(x_143);
+    *(tint_symbol_4) = float4(x_144, x_144, x_144, x_144);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8b6f4d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,239 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 166
+; Schema: 0
+               OpCapability Shader
+        %124 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %A "A"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %27 = OpConstantNull %_arr_int_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %35 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %v2bool = OpTypeVector %bool 2
+       %true = OpConstantTrue %bool
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+        %112 = OpConstantComposite %v2bool %false %false
+   %main_out = OpTypeStruct %v4float
+        %154 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_int_uint_2 Function %27
+          %i = OpVariable %_ptr_Function_int Function %30
+          %a = OpVariable %_ptr_Function_int Function %30
+         %v1 = OpVariable %_ptr_Function_v2float Function %35
+         %v2 = OpVariable %_ptr_Function_v2float Function %35
+          %b = OpVariable %_ptr_Function_int Function %30
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %42 = OpLoad %int %41
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Function_int %A %42
+               OpStore %46 %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Function_int %A %48
+               OpStore %52 %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %54 = OpLoad %int %53
+               OpStore %i %54
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %61 = OpLoad %int %60
+         %62 = OpSGreaterThan %bool %59 %61
+               OpSelectionMerge %64 None
+               OpBranchConditional %62 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %56
+         %64 = OpLabel
+         %67 = OpLoad %int %i
+         %68 = OpISub %int %67 %int_1
+               OpStore %i %68
+               OpBranch %57
+         %57 = OpLabel
+               OpBranch %55
+         %56 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %73 = OpLoad %float %72
+         %74 = OpLoad %int %i
+         %76 = OpFOrdGreaterThanEqual %bool %71 %73
+         %75 = OpSelect %int %76 %int_1 %74
+         %77 = OpAccessChain %_ptr_Function_int %A %75
+         %78 = OpLoad %int %77
+               OpStore %a %78
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpLoad %int %a
+         %82 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %89 = OpLoad %float %88
+         %92 = OpFOrdLessThan %bool %87 %89
+         %94 = OpCompositeConstruct %v2bool %92 %true
+         %95 = OpConvertSToF %float %83
+         %96 = OpConvertSToF %float %85
+         %97 = OpCompositeConstruct %v2float %95 %96
+         %98 = OpConvertSToF %float %80
+         %99 = OpConvertSToF %float %81
+        %100 = OpCompositeConstruct %v2float %98 %99
+         %90 = OpSelect %v2float %94 %97 %100
+               OpStore %v1 %90
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %102 = OpLoad %int %101
+        %104 = OpAccessChain %_ptr_Function_float %v1 %102
+        %105 = OpLoad %float %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Function_float %v1 %107
+        %109 = OpLoad %float %108
+        %113 = OpCompositeConstruct %v2float %109 %109
+        %114 = OpCompositeConstruct %v2float %105 %105
+        %110 = OpSelect %v2float %112 %113 %114
+               OpStore %v2 %110
+        %115 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %119
+        %121 = OpLoad %v2float %v2
+        %125 = OpCompositeConstruct %v2float %117 %117
+        %126 = OpCompositeConstruct %v2float %120 %120
+        %123 = OpExtInst %v2float %124 NClamp %125 %126 %121
+        %127 = OpCompositeExtract %float %123 0
+        %122 = OpConvertFToS %int %127
+        %128 = OpAccessChain %_ptr_Function_int %A %122
+        %129 = OpLoad %int %128
+               OpStore %b %129
+        %130 = OpLoad %int %b
+        %131 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %132 = OpLoad %int %131
+        %133 = OpIEqual %bool %130 %132
+               OpSelectionMerge %134 None
+               OpBranchConditional %133 %135 %136
+        %135 = OpLabel
+        %137 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %138 = OpLoad %int %137
+        %139 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %140 = OpLoad %int %139
+        %141 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %142 = OpLoad %int %141
+        %143 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %144 = OpLoad %int %143
+        %145 = OpConvertSToF %float %138
+        %146 = OpConvertSToF %float %140
+        %147 = OpConvertSToF %float %142
+        %148 = OpConvertSToF %float %144
+        %149 = OpCompositeConstruct %v4float %145 %146 %147 %148
+               OpStore %x_GLF_color %149
+               OpBranch %134
+        %136 = OpLabel
+        %150 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %151 = OpLoad %int %150
+        %152 = OpConvertSToF %float %151
+        %153 = OpCompositeConstruct %v4float %152 %152 %152 %152
+               OpStore %x_GLF_color %153
+               OpBranch %134
+        %134 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %154
+%tint_symbol = OpFunctionParameter %main_out
+        %158 = OpLabel
+        %159 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %159
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %161 = OpLabel
+        %162 = OpFunctionCall %void %main_1
+        %164 = OpLoad %v4float %x_GLF_color
+        %165 = OpCompositeConstruct %main_out %164
+        %163 = OpFunctionCall %void %tint_symbol_2 %165
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..591926d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,95 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<i32, 2>;
+  var i : i32;
+  var a : i32;
+  var v1 : vec2<f32>;
+  var v2 : vec2<f32>;
+  var b : i32;
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+  A[x_46] = x_48;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+  A[x_51] = x_53;
+  let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = x_56;
+  loop {
+    let x_61 : i32 = i;
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_61 > x_63)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = i;
+    i = (x_66 - 1);
+  }
+  let x_69 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_71 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_73 : i32 = i;
+  let x_76 : i32 = A[select(x_73, 1, (x_69 >= x_71))];
+  a = x_76;
+  let x_78 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_80 : i32 = a;
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_87 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_91 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_93 : f32 = x_10.x_GLF_uniform_float_values[0];
+  v1 = select(vec2<f32>(f32(x_78), f32(x_80)), vec2<f32>(f32(x_84), f32(x_87)), vec2<bool>((x_91 < x_93), true));
+  let x_98 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_100 : f32 = v1[x_98];
+  let x_103 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_105 : f32 = v1[x_103];
+  v2 = select(vec2<f32>(x_100, x_100), vec2<f32>(x_105, x_105), vec2<bool>(false, false));
+  let x_109 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_110 : f32 = f32(x_109);
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_114 : f32 = f32(x_113);
+  let x_116 : vec2<f32> = v2;
+  let x_121 : i32 = A[i32(clamp(vec2<f32>(x_110, x_110), vec2<f32>(x_114, x_114), x_116).x)];
+  b = x_121;
+  let x_122 : i32 = b;
+  let x_124 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_122 == x_124)) {
+    let x_130 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_133 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_136 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_139 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_130), f32(x_133), f32(x_136), f32(x_139));
+  } else {
+    let x_143 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_144 : f32 = f32(x_143);
+    x_GLF_color = vec4<f32>(x_144, x_144, x_144, x_144);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm
new file mode 100644
index 0000000..bf2e7c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm
@@ -0,0 +1,170 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %E "E"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %20 = OpConstantComposite %v2float %float_1 %float_1
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %38 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+         %v1 = OpVariable %_ptr_Function_v4float Function
+          %E = OpVariable %_ptr_Function_float Function
+         %39 = OpExtInst %uint %1 PackHalf2x16 %20
+               OpStore %a %39
+         %40 = OpLoad %uint %a
+         %41 = OpExtInst %v4float %1 UnpackSnorm4x8 %40
+               OpStore %v1 %41
+               OpStore %E %float_0_00999999978
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Function_float %v1 %43
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %49 = OpLoad %float %48
+         %50 = OpFDiv %float %47 %49
+         %51 = OpFSub %float %45 %50
+         %52 = OpExtInst %float %1 FAbs %51
+         %53 = OpLoad %float %E
+         %54 = OpFOrdLessThan %bool %52 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Function_float %v1 %58
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_2
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %64 = OpLoad %float %63
+         %65 = OpFDiv %float %62 %64
+         %66 = OpFSub %float %60 %65
+         %67 = OpExtInst %float %1 FAbs %66
+         %68 = OpLoad %float %E
+         %69 = OpFOrdLessThan %bool %67 %68
+               OpBranch %55
+         %55 = OpLabel
+         %70 = OpPhi %bool %54 %38 %69 %56
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Function_float %v1 %74
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %78 = OpLoad %float %77
+         %79 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %80 = OpLoad %float %79
+         %81 = OpFDiv %float %78 %80
+         %82 = OpFSub %float %76 %81
+         %83 = OpExtInst %float %1 FAbs %82
+         %84 = OpLoad %float %E
+         %85 = OpFOrdLessThan %bool %83 %84
+               OpBranch %71
+         %71 = OpLabel
+         %86 = OpPhi %bool %70 %55 %85 %72
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Function_float %v1 %90
+         %92 = OpLoad %float %91
+         %93 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_2
+         %94 = OpLoad %float %93
+         %95 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %96 = OpLoad %float %95
+         %97 = OpFDiv %float %94 %96
+         %98 = OpFSub %float %92 %97
+         %99 = OpExtInst %float %1 FAbs %98
+        %100 = OpLoad %float %E
+        %101 = OpFOrdLessThan %bool %99 %100
+               OpBranch %87
+         %87 = OpLabel
+        %102 = OpPhi %bool %86 %71 %101 %88
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %110
+        %112 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %113
+        %115 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %108 %111 %114 %117
+               OpStore %_GLF_color %118
+               OpBranch %103
+        %105 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Function_float %v1 %120
+        %122 = OpLoad %float %121
+        %123 = OpCompositeConstruct %v4float %122 %122 %122 %122
+               OpStore %_GLF_color %123
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..4388213
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,98 @@
+uint tint_pack2x16float(float2 param_0) {
+  uint2 i = f32tof16(param_0);
+  return i.x | (i.y << 16);
+}
+
+float4 tint_unpack4x8snorm(uint param_0) {
+  int j = int(param_0);
+  int4 i = int4(j << 24, j << 16, j << 8, j) >> 24;
+  return clamp(float4(i) / 127.0, -1.0, 1.0);
+}
+
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[4];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float E = 0.0f;
+  bool x_69 = false;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_70_phi = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  a = tint_pack2x16float(float2(1.0f, 1.0f));
+  v1 = tint_unpack4x8snorm(a);
+  E = 0.01f;
+  const int x_43 = asint(x_8[1].x);
+  const float x_45 = v1[x_43];
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_10[scalar_offset / 4][scalar_offset % 4]);
+  const float x_49 = asfloat(x_10[1].x);
+  const bool x_54 = (abs((x_45 - (x_47 / x_49))) < E);
+  x_70_phi = x_54;
+  if (x_54) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_58 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_60 = v1[x_58];
+    const float x_62 = asfloat(x_10[2].x);
+    const float x_64 = asfloat(x_10[1].x);
+    x_69 = (abs((x_60 - (x_62 / x_64))) < E);
+    x_70_phi = x_69;
+  }
+  const bool x_70 = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    const int x_74 = asint(x_8[2].x);
+    const float x_76 = v1[x_74];
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_78 = asfloat(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_80 = asfloat(x_10[1].x);
+    x_85 = (abs((x_76 - (x_78 / x_80))) < E);
+    x_86_phi = x_85;
+  }
+  const bool x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    const int x_90 = asint(x_8[3].x);
+    const float x_92 = v1[x_90];
+    const float x_94 = asfloat(x_10[2].x);
+    const float x_96 = asfloat(x_10[1].x);
+    x_101 = (abs((x_92 - (x_94 / x_96))) < E);
+    x_102_phi = x_101;
+  }
+  if (x_102_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_107 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_110 = asint(x_8[1].x);
+    const int x_113 = asint(x_8[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_116 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    const int x_120 = asint(x_8[1].x);
+    const float x_122 = v1[x_120];
+    x_GLF_color = float4(x_122, x_122, x_122, x_122);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e8a5aea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 v1 = 0.0f;
+  float E = 0.0f;
+  bool x_69 = false;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_70_phi = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  a = as_type<uint>(half2(float2(1.0f, 1.0f)));
+  uint const x_40 = a;
+  v1 = unpack_snorm4x8_to_float(x_40);
+  E = 0.01f;
+  int const x_43 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  float const x_45 = v1[x_43];
+  float const x_47 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  float const x_49 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  float const x_53 = E;
+  bool const x_54 = (fabs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    int const x_58 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_60 = v1[x_58];
+    float const x_62 = x_10.x_GLF_uniform_float_values.arr[2].el;
+    float const x_64 = x_10.x_GLF_uniform_float_values.arr[1].el;
+    float const x_68 = E;
+    x_69 = (fabs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  bool const x_70 = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    int const x_74 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    float const x_76 = v1[x_74];
+    float const x_78 = x_10.x_GLF_uniform_float_values.arr[0].el;
+    float const x_80 = x_10.x_GLF_uniform_float_values.arr[1].el;
+    float const x_84 = E;
+    x_85 = (fabs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  bool const x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    int const x_90 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    float const x_92 = v1[x_90];
+    float const x_94 = x_10.x_GLF_uniform_float_values.arr[2].el;
+    float const x_96 = x_10.x_GLF_uniform_float_values.arr[1].el;
+    float const x_100 = E;
+    x_101 = (fabs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  bool const x_102 = x_102_phi;
+  if (x_102) {
+    int const x_107 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_110 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_113 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_116 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    int const x_120 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_122 = v1[x_120];
+    *(tint_symbol_4) = float4(x_122, x_122, x_122, x_122);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_8 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..635a181
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,232 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 153
+; Schema: 0
+               OpCapability Shader
+         %42 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %E "E"
+               OpName %x_69 "x_69"
+               OpName %x_85 "x_85"
+               OpName %x_101 "x_101"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %35 = OpConstantNull %bool
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %45 = OpConstantComposite %v2float %float_1 %float_1
+%float_0_00999999978 = OpConstant %float 0.00999999978
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %141 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %26
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+          %E = OpVariable %_ptr_Function_float Function %31
+       %x_69 = OpVariable %_ptr_Function_bool Function %35
+       %x_85 = OpVariable %_ptr_Function_bool Function %35
+      %x_101 = OpVariable %_ptr_Function_bool Function %35
+   %x_70_phi = OpVariable %_ptr_Function_bool Function %35
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %35
+  %x_102_phi = OpVariable %_ptr_Function_bool Function %35
+         %41 = OpExtInst %uint %42 PackHalf2x16 %45
+               OpStore %a %41
+         %46 = OpLoad %uint %a
+         %47 = OpExtInst %v4float %42 UnpackSnorm4x8 %46
+               OpStore %v1 %47
+               OpStore %E %float_0_00999999978
+         %52 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Function_float %v1 %53
+         %55 = OpLoad %float %54
+         %58 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpLoad %float %E
+         %64 = OpFDiv %float %59 %61
+         %65 = OpFSub %float %55 %64
+         %63 = OpExtInst %float %42 FAbs %65
+         %66 = OpFOrdLessThan %bool %63 %62
+               OpStore %x_70_phi %66
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Function_float %v1 %70
+         %72 = OpLoad %float %71
+         %74 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_2
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpLoad %float %E
+         %80 = OpFDiv %float %75 %77
+         %81 = OpFSub %float %72 %80
+         %79 = OpExtInst %float %42 FAbs %81
+         %82 = OpFOrdLessThan %bool %79 %78
+               OpStore %x_69 %82
+         %83 = OpLoad %bool %x_69
+               OpStore %x_70_phi %83
+               OpBranch %67
+         %67 = OpLabel
+         %84 = OpLoad %bool %x_70_phi
+               OpStore %x_86_phi %84
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Function_float %v1 %88
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %92 = OpLoad %float %91
+         %93 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %94 = OpLoad %float %93
+         %95 = OpLoad %float %E
+         %97 = OpFDiv %float %92 %94
+         %98 = OpFSub %float %90 %97
+         %96 = OpExtInst %float %42 FAbs %98
+         %99 = OpFOrdLessThan %bool %96 %95
+               OpStore %x_85 %99
+        %100 = OpLoad %bool %x_85
+               OpStore %x_86_phi %100
+               OpBranch %85
+         %85 = OpLabel
+        %101 = OpLoad %bool %x_86_phi
+               OpStore %x_102_phi %101
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Function_float %v1 %106
+        %108 = OpLoad %float %107
+        %109 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_2
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+        %112 = OpLoad %float %111
+        %113 = OpLoad %float %E
+        %115 = OpFDiv %float %110 %112
+        %116 = OpFSub %float %108 %115
+        %114 = OpExtInst %float %42 FAbs %116
+        %117 = OpFOrdLessThan %bool %114 %113
+               OpStore %x_101 %117
+        %118 = OpLoad %bool %x_101
+               OpStore %x_102_phi %118
+               OpBranch %102
+        %102 = OpLabel
+        %119 = OpLoad %bool %x_102_phi
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %124
+        %132 = OpConvertSToF %float %126
+        %133 = OpConvertSToF %float %128
+        %134 = OpConvertSToF %float %130
+        %135 = OpCompositeConstruct %v4float %131 %132 %133 %134
+               OpStore %x_GLF_color %135
+               OpBranch %120
+        %122 = OpLabel
+        %136 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Function_float %v1 %137
+        %139 = OpLoad %float %138
+        %140 = OpCompositeConstruct %v4float %139 %139 %139 %139
+               OpStore %x_GLF_color %140
+               OpBranch %120
+        %120 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %141
+%tint_symbol = OpFunctionParameter %main_out
+        %145 = OpLabel
+        %146 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %146
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %148 = OpLabel
+        %149 = OpFunctionCall %void %main_1
+        %151 = OpLoad %v4float %x_GLF_color
+        %152 = OpCompositeConstruct %main_out %151
+        %150 = OpFunctionCall %void %tint_symbol_2 %152
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c893e13
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,97 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var E : f32;
+  var x_69 : bool;
+  var x_85 : bool;
+  var x_101 : bool;
+  var x_70_phi : bool;
+  var x_86_phi : bool;
+  var x_102_phi : bool;
+  a = pack2x16float(vec2<f32>(1.0, 1.0));
+  let x_40 : u32 = a;
+  v1 = unpack4x8snorm(x_40);
+  E = 0.01;
+  let x_43 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_45 : f32 = v1[x_43];
+  let x_47 : f32 = x_10.x_GLF_uniform_float_values[0];
+  let x_49 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_53 : f32 = E;
+  let x_54 : bool = (abs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    let x_58 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_60 : f32 = v1[x_58];
+    let x_62 : f32 = x_10.x_GLF_uniform_float_values[2];
+    let x_64 : f32 = x_10.x_GLF_uniform_float_values[1];
+    let x_68 : f32 = E;
+    x_69 = (abs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_76 : f32 = v1[x_74];
+    let x_78 : f32 = x_10.x_GLF_uniform_float_values[0];
+    let x_80 : f32 = x_10.x_GLF_uniform_float_values[1];
+    let x_84 : f32 = E;
+    x_85 = (abs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_92 : f32 = v1[x_90];
+    let x_94 : f32 = x_10.x_GLF_uniform_float_values[2];
+    let x_96 : f32 = x_10.x_GLF_uniform_float_values[1];
+    let x_100 : f32 = E;
+    x_101 = (abs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  if (x_102) {
+    let x_107 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_110 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_113 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_116 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_122 : f32 = v1[x_120];
+    x_GLF_color = vec4<f32>(x_122, x_122, x_122, x_122);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
new file mode 100644
index 0000000..c893e13
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
@@ -0,0 +1,97 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var E : f32;
+  var x_69 : bool;
+  var x_85 : bool;
+  var x_101 : bool;
+  var x_70_phi : bool;
+  var x_86_phi : bool;
+  var x_102_phi : bool;
+  a = pack2x16float(vec2<f32>(1.0, 1.0));
+  let x_40 : u32 = a;
+  v1 = unpack4x8snorm(x_40);
+  E = 0.01;
+  let x_43 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_45 : f32 = v1[x_43];
+  let x_47 : f32 = x_10.x_GLF_uniform_float_values[0];
+  let x_49 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_53 : f32 = E;
+  let x_54 : bool = (abs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    let x_58 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_60 : f32 = v1[x_58];
+    let x_62 : f32 = x_10.x_GLF_uniform_float_values[2];
+    let x_64 : f32 = x_10.x_GLF_uniform_float_values[1];
+    let x_68 : f32 = E;
+    x_69 = (abs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_76 : f32 = v1[x_74];
+    let x_78 : f32 = x_10.x_GLF_uniform_float_values[0];
+    let x_80 : f32 = x_10.x_GLF_uniform_float_values[1];
+    let x_84 : f32 = E;
+    x_85 = (abs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_92 : f32 = v1[x_90];
+    let x_94 : f32 = x_10.x_GLF_uniform_float_values[2];
+    let x_96 : f32 = x_10.x_GLF_uniform_float_values[1];
+    let x_100 : f32 = E;
+    x_101 = (abs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  if (x_102) {
+    let x_107 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_110 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_113 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_116 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_122 : f32 = v1[x_120];
+    x_GLF_color = vec4<f32>(x_122, x_122, x_122, x_122);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4388213
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,98 @@
+uint tint_pack2x16float(float2 param_0) {
+  uint2 i = f32tof16(param_0);
+  return i.x | (i.y << 16);
+}
+
+float4 tint_unpack4x8snorm(uint param_0) {
+  int j = int(param_0);
+  int4 i = int4(j << 24, j << 16, j << 8, j) >> 24;
+  return clamp(float4(i) / 127.0, -1.0, 1.0);
+}
+
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[4];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float E = 0.0f;
+  bool x_69 = false;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_70_phi = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  a = tint_pack2x16float(float2(1.0f, 1.0f));
+  v1 = tint_unpack4x8snorm(a);
+  E = 0.01f;
+  const int x_43 = asint(x_8[1].x);
+  const float x_45 = v1[x_43];
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_10[scalar_offset / 4][scalar_offset % 4]);
+  const float x_49 = asfloat(x_10[1].x);
+  const bool x_54 = (abs((x_45 - (x_47 / x_49))) < E);
+  x_70_phi = x_54;
+  if (x_54) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_58 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_60 = v1[x_58];
+    const float x_62 = asfloat(x_10[2].x);
+    const float x_64 = asfloat(x_10[1].x);
+    x_69 = (abs((x_60 - (x_62 / x_64))) < E);
+    x_70_phi = x_69;
+  }
+  const bool x_70 = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    const int x_74 = asint(x_8[2].x);
+    const float x_76 = v1[x_74];
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_78 = asfloat(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_80 = asfloat(x_10[1].x);
+    x_85 = (abs((x_76 - (x_78 / x_80))) < E);
+    x_86_phi = x_85;
+  }
+  const bool x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    const int x_90 = asint(x_8[3].x);
+    const float x_92 = v1[x_90];
+    const float x_94 = asfloat(x_10[2].x);
+    const float x_96 = asfloat(x_10[1].x);
+    x_101 = (abs((x_92 - (x_94 / x_96))) < E);
+    x_102_phi = x_101;
+  }
+  if (x_102_phi) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_107 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_110 = asint(x_8[1].x);
+    const int x_113 = asint(x_8[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_116 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    const int x_120 = asint(x_8[1].x);
+    const float x_122 = v1[x_120];
+    x_GLF_color = float4(x_122, x_122, x_122, x_122);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e8a5aea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 v1 = 0.0f;
+  float E = 0.0f;
+  bool x_69 = false;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_70_phi = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  a = as_type<uint>(half2(float2(1.0f, 1.0f)));
+  uint const x_40 = a;
+  v1 = unpack_snorm4x8_to_float(x_40);
+  E = 0.01f;
+  int const x_43 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  float const x_45 = v1[x_43];
+  float const x_47 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  float const x_49 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  float const x_53 = E;
+  bool const x_54 = (fabs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    int const x_58 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_60 = v1[x_58];
+    float const x_62 = x_10.x_GLF_uniform_float_values.arr[2].el;
+    float const x_64 = x_10.x_GLF_uniform_float_values.arr[1].el;
+    float const x_68 = E;
+    x_69 = (fabs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  bool const x_70 = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    int const x_74 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    float const x_76 = v1[x_74];
+    float const x_78 = x_10.x_GLF_uniform_float_values.arr[0].el;
+    float const x_80 = x_10.x_GLF_uniform_float_values.arr[1].el;
+    float const x_84 = E;
+    x_85 = (fabs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  bool const x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    int const x_90 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    float const x_92 = v1[x_90];
+    float const x_94 = x_10.x_GLF_uniform_float_values.arr[2].el;
+    float const x_96 = x_10.x_GLF_uniform_float_values.arr[1].el;
+    float const x_100 = E;
+    x_101 = (fabs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  bool const x_102 = x_102_phi;
+  if (x_102) {
+    int const x_107 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_110 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_113 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_116 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    int const x_120 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_122 = v1[x_120];
+    *(tint_symbol_4) = float4(x_122, x_122, x_122, x_122);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_8 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..635a181
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,232 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 153
+; Schema: 0
+               OpCapability Shader
+         %42 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %E "E"
+               OpName %x_69 "x_69"
+               OpName %x_85 "x_85"
+               OpName %x_101 "x_101"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %26 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %35 = OpConstantNull %bool
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %45 = OpConstantComposite %v2float %float_1 %float_1
+%float_0_00999999978 = OpConstant %float 0.00999999978
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %141 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %26
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+          %E = OpVariable %_ptr_Function_float Function %31
+       %x_69 = OpVariable %_ptr_Function_bool Function %35
+       %x_85 = OpVariable %_ptr_Function_bool Function %35
+      %x_101 = OpVariable %_ptr_Function_bool Function %35
+   %x_70_phi = OpVariable %_ptr_Function_bool Function %35
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %35
+  %x_102_phi = OpVariable %_ptr_Function_bool Function %35
+         %41 = OpExtInst %uint %42 PackHalf2x16 %45
+               OpStore %a %41
+         %46 = OpLoad %uint %a
+         %47 = OpExtInst %v4float %42 UnpackSnorm4x8 %46
+               OpStore %v1 %47
+               OpStore %E %float_0_00999999978
+         %52 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Function_float %v1 %53
+         %55 = OpLoad %float %54
+         %58 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpLoad %float %E
+         %64 = OpFDiv %float %59 %61
+         %65 = OpFSub %float %55 %64
+         %63 = OpExtInst %float %42 FAbs %65
+         %66 = OpFOrdLessThan %bool %63 %62
+               OpStore %x_70_phi %66
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Function_float %v1 %70
+         %72 = OpLoad %float %71
+         %74 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_2
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpLoad %float %E
+         %80 = OpFDiv %float %75 %77
+         %81 = OpFSub %float %72 %80
+         %79 = OpExtInst %float %42 FAbs %81
+         %82 = OpFOrdLessThan %bool %79 %78
+               OpStore %x_69 %82
+         %83 = OpLoad %bool %x_69
+               OpStore %x_70_phi %83
+               OpBranch %67
+         %67 = OpLabel
+         %84 = OpLoad %bool %x_70_phi
+               OpStore %x_86_phi %84
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Function_float %v1 %88
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %92 = OpLoad %float %91
+         %93 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %94 = OpLoad %float %93
+         %95 = OpLoad %float %E
+         %97 = OpFDiv %float %92 %94
+         %98 = OpFSub %float %90 %97
+         %96 = OpExtInst %float %42 FAbs %98
+         %99 = OpFOrdLessThan %bool %96 %95
+               OpStore %x_85 %99
+        %100 = OpLoad %bool %x_85
+               OpStore %x_86_phi %100
+               OpBranch %85
+         %85 = OpLabel
+        %101 = OpLoad %bool %x_86_phi
+               OpStore %x_102_phi %101
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Function_float %v1 %106
+        %108 = OpLoad %float %107
+        %109 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_2
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+        %112 = OpLoad %float %111
+        %113 = OpLoad %float %E
+        %115 = OpFDiv %float %110 %112
+        %116 = OpFSub %float %108 %115
+        %114 = OpExtInst %float %42 FAbs %116
+        %117 = OpFOrdLessThan %bool %114 %113
+               OpStore %x_101 %117
+        %118 = OpLoad %bool %x_101
+               OpStore %x_102_phi %118
+               OpBranch %102
+        %102 = OpLabel
+        %119 = OpLoad %bool %x_102_phi
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %124
+        %132 = OpConvertSToF %float %126
+        %133 = OpConvertSToF %float %128
+        %134 = OpConvertSToF %float %130
+        %135 = OpCompositeConstruct %v4float %131 %132 %133 %134
+               OpStore %x_GLF_color %135
+               OpBranch %120
+        %122 = OpLabel
+        %136 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Function_float %v1 %137
+        %139 = OpLoad %float %138
+        %140 = OpCompositeConstruct %v4float %139 %139 %139 %139
+               OpStore %x_GLF_color %140
+               OpBranch %120
+        %120 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %141
+%tint_symbol = OpFunctionParameter %main_out
+        %145 = OpLabel
+        %146 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %146
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %148 = OpLabel
+        %149 = OpFunctionCall %void %main_1
+        %151 = OpLoad %v4float %x_GLF_color
+        %152 = OpCompositeConstruct %main_out %151
+        %150 = OpFunctionCall %void %tint_symbol_2 %152
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c893e13
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,97 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var E : f32;
+  var x_69 : bool;
+  var x_85 : bool;
+  var x_101 : bool;
+  var x_70_phi : bool;
+  var x_86_phi : bool;
+  var x_102_phi : bool;
+  a = pack2x16float(vec2<f32>(1.0, 1.0));
+  let x_40 : u32 = a;
+  v1 = unpack4x8snorm(x_40);
+  E = 0.01;
+  let x_43 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_45 : f32 = v1[x_43];
+  let x_47 : f32 = x_10.x_GLF_uniform_float_values[0];
+  let x_49 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_53 : f32 = E;
+  let x_54 : bool = (abs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    let x_58 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_60 : f32 = v1[x_58];
+    let x_62 : f32 = x_10.x_GLF_uniform_float_values[2];
+    let x_64 : f32 = x_10.x_GLF_uniform_float_values[1];
+    let x_68 : f32 = E;
+    x_69 = (abs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_76 : f32 = v1[x_74];
+    let x_78 : f32 = x_10.x_GLF_uniform_float_values[0];
+    let x_80 : f32 = x_10.x_GLF_uniform_float_values[1];
+    let x_84 : f32 = E;
+    x_85 = (abs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_92 : f32 = v1[x_90];
+    let x_94 : f32 = x_10.x_GLF_uniform_float_values[2];
+    let x_96 : f32 = x_10.x_GLF_uniform_float_values[1];
+    let x_100 : f32 = E;
+    x_101 = (abs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  if (x_102) {
+    let x_107 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_110 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_113 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_116 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_122 : f32 = v1[x_120];
+    x_GLF_color = vec4<f32>(x_122, x_122, x_122, x_122);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm
new file mode 100644
index 0000000..476c935
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm
@@ -0,0 +1,169 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v1 "v1"
+               OpName %E "E"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+      %float = OpTypeFloat 32
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %33 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+         %v1 = OpVariable %_ptr_Function_v4float Function
+          %E = OpVariable %_ptr_Function_float Function
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %35 = OpLoad %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+         %37 = OpExtInst %uint %1 PackSnorm4x8 %36
+               OpStore %a %37
+         %38 = OpLoad %uint %a
+         %39 = OpExtInst %v4float %1 UnpackUnorm4x8 %38
+               OpStore %v1 %39
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %41 = OpLoad %float %40
+               OpStore %E %41
+         %42 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Function_float %v1 %43
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %49 = OpLoad %float %48
+         %50 = OpFDiv %float %47 %49
+         %51 = OpFSub %float %45 %50
+         %52 = OpExtInst %float %1 FAbs %51
+         %53 = OpLoad %float %E
+         %54 = OpFOrdLessThan %bool %52 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Function_float %v1 %58
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %64 = OpLoad %float %63
+         %65 = OpFDiv %float %62 %64
+         %66 = OpFSub %float %60 %65
+         %67 = OpExtInst %float %1 FAbs %66
+         %68 = OpLoad %float %E
+         %69 = OpFOrdLessThan %bool %67 %68
+               OpBranch %55
+         %55 = OpLabel
+         %70 = OpPhi %bool %54 %33 %69 %56
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Function_float %v1 %74
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %78 = OpLoad %float %77
+         %79 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %80 = OpLoad %float %79
+         %81 = OpFDiv %float %78 %80
+         %82 = OpFSub %float %76 %81
+         %83 = OpExtInst %float %1 FAbs %82
+         %84 = OpLoad %float %E
+         %85 = OpFOrdLessThan %bool %83 %84
+               OpBranch %71
+         %71 = OpLabel
+         %86 = OpPhi %bool %70 %55 %85 %72
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Function_float %v1 %90
+         %92 = OpLoad %float %91
+         %93 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %94 = OpLoad %float %93
+         %95 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %96 = OpLoad %float %95
+         %97 = OpFDiv %float %94 %96
+         %98 = OpFSub %float %92 %97
+         %99 = OpExtInst %float %1 FAbs %98
+        %100 = OpLoad %float %E
+        %101 = OpFOrdLessThan %bool %99 %100
+               OpBranch %87
+         %87 = OpLabel
+        %102 = OpPhi %bool %86 %71 %101 %88
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %110
+        %112 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %113
+        %115 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %108 %111 %114 %117
+               OpStore %_GLF_color %118
+               OpBranch %103
+        %105 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %120 = OpLoad %int %119
+        %121 = OpConvertSToF %float %120
+        %122 = OpCompositeConstruct %v4float %121 %121 %121 %121
+               OpStore %_GLF_color %122
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3019c2b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,99 @@
+uint tint_pack4x8snorm(float4 param_0) {
+  int4 i = int4(round(clamp(param_0, -1.0, 1.0) * 127.0)) & 0xff;
+  return asuint(i.x | i.y << 8 | i.z << 16 | i.w << 24);
+}
+
+float4 tint_unpack4x8unorm(uint param_0) {
+  uint j = param_0;
+  uint4 i = uint4(j & 0xff, (j >> 8) & 0xff, (j >> 16) & 0xff, j >> 24);
+  return float4(i) / 255.0;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float E = 0.0f;
+  bool x_69 = false;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_70_phi = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  const float x_35 = asfloat(x_6[1].x);
+  a = tint_pack4x8snorm(float4(x_35, x_35, x_35, x_35));
+  v1 = tint_unpack4x8unorm(a);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  E = x_41;
+  const int x_43 = asint(x_10[1].x);
+  const float x_45 = v1[x_43];
+  const float x_47 = asfloat(x_6[2].x);
+  const float x_49 = asfloat(x_6[3].x);
+  const bool x_54 = (abs((x_45 - (x_47 / x_49))) < E);
+  x_70_phi = x_54;
+  if (x_54) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_58 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_60 = v1[x_58];
+    const float x_62 = asfloat(x_6[2].x);
+    const float x_64 = asfloat(x_6[3].x);
+    x_69 = (abs((x_60 - (x_62 / x_64))) < E);
+    x_70_phi = x_69;
+  }
+  const bool x_70 = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    const int x_74 = asint(x_10[3].x);
+    const float x_76 = v1[x_74];
+    const float x_78 = asfloat(x_6[2].x);
+    const float x_80 = asfloat(x_6[3].x);
+    x_85 = (abs((x_76 - (x_78 / x_80))) < E);
+    x_86_phi = x_85;
+  }
+  const bool x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    const int x_90 = asint(x_10[2].x);
+    const float x_92 = v1[x_90];
+    const float x_94 = asfloat(x_6[2].x);
+    const float x_96 = asfloat(x_6[3].x);
+    x_101 = (abs((x_92 - (x_94 / x_96))) < E);
+    x_102_phi = x_101;
+  }
+  if (x_102_phi) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_107 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_110 = asint(x_10[1].x);
+    const int x_113 = asint(x_10[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_116 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    const int x_120 = asint(x_10[1].x);
+    const float x_121 = float(x_120);
+    x_GLF_color = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f9c669b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 v1 = 0.0f;
+  float E = 0.0f;
+  bool x_69 = false;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_70_phi = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = pack_float_to_snorm4x8(float4(x_35, x_35, x_35, x_35));
+  uint const x_38 = a;
+  v1 = unpack_unorm4x8_to_float(x_38);
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  E = x_41;
+  int const x_43 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  float const x_45 = v1[x_43];
+  float const x_47 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_49 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_53 = E;
+  bool const x_54 = (fabs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    int const x_58 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_60 = v1[x_58];
+    float const x_62 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    float const x_64 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_68 = E;
+    x_69 = (fabs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  bool const x_70 = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    int const x_74 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_76 = v1[x_74];
+    float const x_78 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    float const x_80 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_84 = E;
+    x_85 = (fabs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  bool const x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    int const x_90 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_92 = v1[x_90];
+    float const x_94 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    float const x_96 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_100 = E;
+    x_101 = (fabs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  bool const x_102 = x_102_phi;
+  if (x_102) {
+    int const x_107 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_110 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_113 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_116 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    int const x_120 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_121 = float(x_120);
+    *(tint_symbol_4) = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..84dd174
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,231 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 152
+; Schema: 0
+               OpCapability Shader
+         %46 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %E "E"
+               OpName %x_69 "x_69"
+               OpName %x_85 "x_85"
+               OpName %x_101 "x_101"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %34 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %25
+         %v1 = OpVariable %_ptr_Function_v4float Function %16
+          %E = OpVariable %_ptr_Function_float Function %30
+       %x_69 = OpVariable %_ptr_Function_bool Function %34
+       %x_85 = OpVariable %_ptr_Function_bool Function %34
+      %x_101 = OpVariable %_ptr_Function_bool Function %34
+   %x_70_phi = OpVariable %_ptr_Function_bool Function %34
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %34
+  %x_102_phi = OpVariable %_ptr_Function_bool Function %34
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %44 = OpLoad %float %43
+         %47 = OpCompositeConstruct %v4float %44 %44 %44 %44
+         %45 = OpExtInst %uint %46 PackSnorm4x8 %47
+               OpStore %a %45
+         %48 = OpLoad %uint %a
+         %49 = OpExtInst %v4float %46 UnpackUnorm4x8 %48
+               OpStore %v1 %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %52 = OpLoad %float %51
+               OpStore %E %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_float %v1 %55
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %60 = OpLoad %float %59
+         %62 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %63 = OpLoad %float %62
+         %64 = OpLoad %float %E
+         %66 = OpFDiv %float %60 %63
+         %67 = OpFSub %float %57 %66
+         %65 = OpExtInst %float %46 FAbs %67
+         %68 = OpFOrdLessThan %bool %65 %64
+               OpStore %x_70_phi %68
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Function_float %v1 %72
+         %74 = OpLoad %float %73
+         %75 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %78 = OpLoad %float %77
+         %79 = OpLoad %float %E
+         %81 = OpFDiv %float %76 %78
+         %82 = OpFSub %float %74 %81
+         %80 = OpExtInst %float %46 FAbs %82
+         %83 = OpFOrdLessThan %bool %80 %79
+               OpStore %x_69 %83
+         %84 = OpLoad %bool %x_69
+               OpStore %x_70_phi %84
+               OpBranch %69
+         %69 = OpLabel
+         %85 = OpLoad %bool %x_70_phi
+               OpStore %x_86_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Function_float %v1 %89
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %95 = OpLoad %float %94
+         %96 = OpLoad %float %E
+         %98 = OpFDiv %float %93 %95
+         %99 = OpFSub %float %91 %98
+         %97 = OpExtInst %float %46 FAbs %99
+        %100 = OpFOrdLessThan %bool %97 %96
+               OpStore %x_85 %100
+        %101 = OpLoad %bool %x_85
+               OpStore %x_86_phi %101
+               OpBranch %86
+         %86 = OpLabel
+        %102 = OpLoad %bool %x_86_phi
+               OpStore %x_102_phi %102
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Function_float %v1 %106
+        %108 = OpLoad %float %107
+        %109 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %112 = OpLoad %float %111
+        %113 = OpLoad %float %E
+        %115 = OpFDiv %float %110 %112
+        %116 = OpFSub %float %108 %115
+        %114 = OpExtInst %float %46 FAbs %116
+        %117 = OpFOrdLessThan %bool %114 %113
+               OpStore %x_101 %117
+        %118 = OpLoad %bool %x_101
+               OpStore %x_102_phi %118
+               OpBranch %103
+        %103 = OpLabel
+        %119 = OpLoad %bool %x_102_phi
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %124
+        %132 = OpConvertSToF %float %126
+        %133 = OpConvertSToF %float %128
+        %134 = OpConvertSToF %float %130
+        %135 = OpCompositeConstruct %v4float %131 %132 %133 %134
+               OpStore %x_GLF_color %135
+               OpBranch %120
+        %122 = OpLabel
+        %136 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %137 = OpLoad %int %136
+        %138 = OpConvertSToF %float %137
+        %139 = OpCompositeConstruct %v4float %138 %138 %138 %138
+               OpStore %x_GLF_color %139
+               OpBranch %120
+        %120 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %140
+%tint_symbol = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %147 = OpLabel
+        %148 = OpFunctionCall %void %main_1
+        %150 = OpLoad %v4float %x_GLF_color
+        %151 = OpCompositeConstruct %main_out %150
+        %149 = OpFunctionCall %void %tint_symbol_2 %151
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ebc5637
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,99 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var E : f32;
+  var x_69 : bool;
+  var x_85 : bool;
+  var x_101 : bool;
+  var x_70_phi : bool;
+  var x_86_phi : bool;
+  var x_102_phi : bool;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = pack4x8snorm(vec4<f32>(x_35, x_35, x_35, x_35));
+  let x_38 : u32 = a;
+  v1 = unpack4x8unorm(x_38);
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  E = x_41;
+  let x_43 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_45 : f32 = v1[x_43];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_49 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_53 : f32 = E;
+  let x_54 : bool = (abs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    let x_58 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_60 : f32 = v1[x_58];
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_64 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_68 : f32 = E;
+    x_69 = (abs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_76 : f32 = v1[x_74];
+    let x_78 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_80 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_84 : f32 = E;
+    x_85 = (abs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_92 : f32 = v1[x_90];
+    let x_94 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_96 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_100 : f32 = E;
+    x_101 = (abs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  if (x_102) {
+    let x_107 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_110 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_113 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_116 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_121 : f32 = f32(x_120);
+    x_GLF_color = vec4<f32>(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
new file mode 100644
index 0000000..ebc5637
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
@@ -0,0 +1,99 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var E : f32;
+  var x_69 : bool;
+  var x_85 : bool;
+  var x_101 : bool;
+  var x_70_phi : bool;
+  var x_86_phi : bool;
+  var x_102_phi : bool;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = pack4x8snorm(vec4<f32>(x_35, x_35, x_35, x_35));
+  let x_38 : u32 = a;
+  v1 = unpack4x8unorm(x_38);
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  E = x_41;
+  let x_43 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_45 : f32 = v1[x_43];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_49 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_53 : f32 = E;
+  let x_54 : bool = (abs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    let x_58 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_60 : f32 = v1[x_58];
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_64 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_68 : f32 = E;
+    x_69 = (abs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_76 : f32 = v1[x_74];
+    let x_78 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_80 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_84 : f32 = E;
+    x_85 = (abs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_92 : f32 = v1[x_90];
+    let x_94 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_96 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_100 : f32 = E;
+    x_101 = (abs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  if (x_102) {
+    let x_107 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_110 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_113 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_116 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_121 : f32 = f32(x_120);
+    x_GLF_color = vec4<f32>(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3019c2b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,99 @@
+uint tint_pack4x8snorm(float4 param_0) {
+  int4 i = int4(round(clamp(param_0, -1.0, 1.0) * 127.0)) & 0xff;
+  return asuint(i.x | i.y << 8 | i.z << 16 | i.w << 24);
+}
+
+float4 tint_unpack4x8unorm(uint param_0) {
+  uint j = param_0;
+  uint4 i = uint4(j & 0xff, (j >> 8) & 0xff, (j >> 16) & 0xff, j >> 24);
+  return float4(i) / 255.0;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float E = 0.0f;
+  bool x_69 = false;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_70_phi = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  const float x_35 = asfloat(x_6[1].x);
+  a = tint_pack4x8snorm(float4(x_35, x_35, x_35, x_35));
+  v1 = tint_unpack4x8unorm(a);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  E = x_41;
+  const int x_43 = asint(x_10[1].x);
+  const float x_45 = v1[x_43];
+  const float x_47 = asfloat(x_6[2].x);
+  const float x_49 = asfloat(x_6[3].x);
+  const bool x_54 = (abs((x_45 - (x_47 / x_49))) < E);
+  x_70_phi = x_54;
+  if (x_54) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_58 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_60 = v1[x_58];
+    const float x_62 = asfloat(x_6[2].x);
+    const float x_64 = asfloat(x_6[3].x);
+    x_69 = (abs((x_60 - (x_62 / x_64))) < E);
+    x_70_phi = x_69;
+  }
+  const bool x_70 = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    const int x_74 = asint(x_10[3].x);
+    const float x_76 = v1[x_74];
+    const float x_78 = asfloat(x_6[2].x);
+    const float x_80 = asfloat(x_6[3].x);
+    x_85 = (abs((x_76 - (x_78 / x_80))) < E);
+    x_86_phi = x_85;
+  }
+  const bool x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    const int x_90 = asint(x_10[2].x);
+    const float x_92 = v1[x_90];
+    const float x_94 = asfloat(x_6[2].x);
+    const float x_96 = asfloat(x_6[3].x);
+    x_101 = (abs((x_92 - (x_94 / x_96))) < E);
+    x_102_phi = x_101;
+  }
+  if (x_102_phi) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_107 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_110 = asint(x_10[1].x);
+    const int x_113 = asint(x_10[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_116 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    const int x_120 = asint(x_10[1].x);
+    const float x_121 = float(x_120);
+    x_GLF_color = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f9c669b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 v1 = 0.0f;
+  float E = 0.0f;
+  bool x_69 = false;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_70_phi = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = pack_float_to_snorm4x8(float4(x_35, x_35, x_35, x_35));
+  uint const x_38 = a;
+  v1 = unpack_unorm4x8_to_float(x_38);
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  E = x_41;
+  int const x_43 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  float const x_45 = v1[x_43];
+  float const x_47 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_49 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_53 = E;
+  bool const x_54 = (fabs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    int const x_58 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_60 = v1[x_58];
+    float const x_62 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    float const x_64 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_68 = E;
+    x_69 = (fabs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  bool const x_70 = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    int const x_74 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_76 = v1[x_74];
+    float const x_78 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    float const x_80 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_84 = E;
+    x_85 = (fabs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  bool const x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    int const x_90 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_92 = v1[x_90];
+    float const x_94 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    float const x_96 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_100 = E;
+    x_101 = (fabs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  bool const x_102 = x_102_phi;
+  if (x_102) {
+    int const x_107 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_110 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_113 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_116 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    int const x_120 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_121 = float(x_120);
+    *(tint_symbol_4) = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..84dd174
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,231 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 152
+; Schema: 0
+               OpCapability Shader
+         %46 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %v1 "v1"
+               OpName %E "E"
+               OpName %x_69 "x_69"
+               OpName %x_85 "x_85"
+               OpName %x_101 "x_101"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %34 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %25
+         %v1 = OpVariable %_ptr_Function_v4float Function %16
+          %E = OpVariable %_ptr_Function_float Function %30
+       %x_69 = OpVariable %_ptr_Function_bool Function %34
+       %x_85 = OpVariable %_ptr_Function_bool Function %34
+      %x_101 = OpVariable %_ptr_Function_bool Function %34
+   %x_70_phi = OpVariable %_ptr_Function_bool Function %34
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %34
+  %x_102_phi = OpVariable %_ptr_Function_bool Function %34
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %44 = OpLoad %float %43
+         %47 = OpCompositeConstruct %v4float %44 %44 %44 %44
+         %45 = OpExtInst %uint %46 PackSnorm4x8 %47
+               OpStore %a %45
+         %48 = OpLoad %uint %a
+         %49 = OpExtInst %v4float %46 UnpackUnorm4x8 %48
+               OpStore %v1 %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %52 = OpLoad %float %51
+               OpStore %E %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_float %v1 %55
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %60 = OpLoad %float %59
+         %62 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %63 = OpLoad %float %62
+         %64 = OpLoad %float %E
+         %66 = OpFDiv %float %60 %63
+         %67 = OpFSub %float %57 %66
+         %65 = OpExtInst %float %46 FAbs %67
+         %68 = OpFOrdLessThan %bool %65 %64
+               OpStore %x_70_phi %68
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Function_float %v1 %72
+         %74 = OpLoad %float %73
+         %75 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %78 = OpLoad %float %77
+         %79 = OpLoad %float %E
+         %81 = OpFDiv %float %76 %78
+         %82 = OpFSub %float %74 %81
+         %80 = OpExtInst %float %46 FAbs %82
+         %83 = OpFOrdLessThan %bool %80 %79
+               OpStore %x_69 %83
+         %84 = OpLoad %bool %x_69
+               OpStore %x_70_phi %84
+               OpBranch %69
+         %69 = OpLabel
+         %85 = OpLoad %bool %x_70_phi
+               OpStore %x_86_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Function_float %v1 %89
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %95 = OpLoad %float %94
+         %96 = OpLoad %float %E
+         %98 = OpFDiv %float %93 %95
+         %99 = OpFSub %float %91 %98
+         %97 = OpExtInst %float %46 FAbs %99
+        %100 = OpFOrdLessThan %bool %97 %96
+               OpStore %x_85 %100
+        %101 = OpLoad %bool %x_85
+               OpStore %x_86_phi %101
+               OpBranch %86
+         %86 = OpLabel
+        %102 = OpLoad %bool %x_86_phi
+               OpStore %x_102_phi %102
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Function_float %v1 %106
+        %108 = OpLoad %float %107
+        %109 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+        %112 = OpLoad %float %111
+        %113 = OpLoad %float %E
+        %115 = OpFDiv %float %110 %112
+        %116 = OpFSub %float %108 %115
+        %114 = OpExtInst %float %46 FAbs %116
+        %117 = OpFOrdLessThan %bool %114 %113
+               OpStore %x_101 %117
+        %118 = OpLoad %bool %x_101
+               OpStore %x_102_phi %118
+               OpBranch %103
+        %103 = OpLabel
+        %119 = OpLoad %bool %x_102_phi
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %124
+        %132 = OpConvertSToF %float %126
+        %133 = OpConvertSToF %float %128
+        %134 = OpConvertSToF %float %130
+        %135 = OpCompositeConstruct %v4float %131 %132 %133 %134
+               OpStore %x_GLF_color %135
+               OpBranch %120
+        %122 = OpLabel
+        %136 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %137 = OpLoad %int %136
+        %138 = OpConvertSToF %float %137
+        %139 = OpCompositeConstruct %v4float %138 %138 %138 %138
+               OpStore %x_GLF_color %139
+               OpBranch %120
+        %120 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %140
+%tint_symbol = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %147 = OpLabel
+        %148 = OpFunctionCall %void %main_1
+        %150 = OpLoad %v4float %x_GLF_color
+        %151 = OpCompositeConstruct %main_out %150
+        %149 = OpFunctionCall %void %tint_symbol_2 %151
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ebc5637
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,99 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var v1 : vec4<f32>;
+  var E : f32;
+  var x_69 : bool;
+  var x_85 : bool;
+  var x_101 : bool;
+  var x_70_phi : bool;
+  var x_86_phi : bool;
+  var x_102_phi : bool;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = pack4x8snorm(vec4<f32>(x_35, x_35, x_35, x_35));
+  let x_38 : u32 = a;
+  v1 = unpack4x8unorm(x_38);
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[0];
+  E = x_41;
+  let x_43 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_45 : f32 = v1[x_43];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_49 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_53 : f32 = E;
+  let x_54 : bool = (abs((x_45 - (x_47 / x_49))) < x_53);
+  x_70_phi = x_54;
+  if (x_54) {
+    let x_58 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_60 : f32 = v1[x_58];
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_64 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_68 : f32 = E;
+    x_69 = (abs((x_60 - (x_62 / x_64))) < x_68);
+    x_70_phi = x_69;
+  }
+  let x_70 : bool = x_70_phi;
+  x_86_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_76 : f32 = v1[x_74];
+    let x_78 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_80 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_84 : f32 = E;
+    x_85 = (abs((x_76 - (x_78 / x_80))) < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_92 : f32 = v1[x_90];
+    let x_94 : f32 = x_6.x_GLF_uniform_float_values[2];
+    let x_96 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_100 : f32 = E;
+    x_101 = (abs((x_92 - (x_94 / x_96))) < x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  if (x_102) {
+    let x_107 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_110 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_113 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_116 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_121 : f32 = f32(x_120);
+    x_GLF_color = vec4<f32>(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm
new file mode 100644
index 0000000..6088f45
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm
@@ -0,0 +1,81 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %color "color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %12
+         %27 = OpLabel
+      %color = OpVariable %_ptr_Function_v4float Function
+         %28 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %29 = OpLoad %float %28
+         %30 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %31 = OpLoad %float %30
+         %32 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %33 = OpLoad %float %32
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %35 = OpLoad %float %34
+         %36 = OpCompositeConstruct %v4float %29 %31 %33 %35
+               OpStore %color %36
+         %37 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %38 = OpLoad %int %37
+         %39 = OpBitwiseOr %int %int_1 %38
+         %40 = OpBitwiseXor %int %39 %int_1
+               OpSelectionMerge %41 None
+               OpSwitch %40 %41 0 %42
+         %42 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %46 = OpLoad %float %45
+         %47 = OpAccessChain %_ptr_Function_float %color %44
+               OpStore %47 %46
+               OpBranch %41
+         %41 = OpLabel
+         %48 = OpLoad %v4float %color
+               OpStore %_GLF_color %48
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..35a88d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,52 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_29 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_31 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_33 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_35 = asfloat(x_6[1].x);
+  color = float4(x_29, x_31, x_33, x_35);
+  const int x_38 = asint(x_8[1].x);
+  switch(((1 | x_38) ^ 1)) {
+    case 0: {
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const int x_44 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      const float x_46 = asfloat(x_6[1].x);
+      set_float4(color, x_44, x_46);
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  x_GLF_color = color;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ec0f90f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.msl
@@ -0,0 +1,62 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float4 color = 0.0f;
+  float const x_29 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_31 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_33 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  color = float4(x_29, x_31, x_33, x_35);
+  int const x_38 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  switch(((1 | x_38) ^ 1)) {
+    case 0: {
+      int const x_44 = x_8.x_GLF_uniform_int_values.arr[0].el;
+      float const x_46 = x_6.x_GLF_uniform_float_values.arr[1].el;
+      color[x_44] = x_46;
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  float4 const x_48 = color;
+  *(tint_symbol_4) = x_48;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6302166
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,116 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+      %color = OpVariable %_ptr_Function_v4float Function %16
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %29 = OpLoad %float %28
+         %30 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %31 = OpLoad %float %30
+         %32 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %36 = OpLoad %float %35
+         %37 = OpCompositeConstruct %v4float %29 %31 %33 %36
+               OpStore %color %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %40 = OpLoad %int %39
+         %42 = OpBitwiseOr %int %int_1 %40
+         %43 = OpBitwiseXor %int %42 %int_1
+               OpSelectionMerge %41 None
+               OpSwitch %43 %44 0 %45
+         %45 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %49 = OpLoad %float %48
+         %51 = OpAccessChain %_ptr_Function_float %color %47
+               OpStore %51 %49
+               OpBranch %41
+         %44 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %52 = OpLoad %v4float %color
+               OpStore %x_GLF_color %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..22c3ac0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,52 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var color : vec4<f32>;
+  let x_29 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_31 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[1];
+  color = vec4<f32>(x_29, x_31, x_33, x_35);
+  let x_38 : i32 = x_8.x_GLF_uniform_int_values[1];
+  switch(((1 | x_38) ^ 1)) {
+    case 0: {
+      let x_44 : i32 = x_8.x_GLF_uniform_int_values[0];
+      let x_46 : f32 = x_6.x_GLF_uniform_float_values[1];
+      color[x_44] = x_46;
+    }
+    default: {
+    }
+  }
+  let x_48 : vec4<f32> = color;
+  x_GLF_color = x_48;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
new file mode 100644
index 0000000..22c3ac0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
@@ -0,0 +1,52 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var color : vec4<f32>;
+  let x_29 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_31 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[1];
+  color = vec4<f32>(x_29, x_31, x_33, x_35);
+  let x_38 : i32 = x_8.x_GLF_uniform_int_values[1];
+  switch(((1 | x_38) ^ 1)) {
+    case 0: {
+      let x_44 : i32 = x_8.x_GLF_uniform_int_values[0];
+      let x_46 : f32 = x_6.x_GLF_uniform_float_values[1];
+      color[x_44] = x_46;
+    }
+    default: {
+    }
+  }
+  let x_48 : vec4<f32> = color;
+  x_GLF_color = x_48;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..35a88d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,52 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_29 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_31 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_33 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_35 = asfloat(x_6[1].x);
+  color = float4(x_29, x_31, x_33, x_35);
+  const int x_38 = asint(x_8[1].x);
+  switch(((1 | x_38) ^ 1)) {
+    case 0: {
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const int x_44 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      const float x_46 = asfloat(x_6[1].x);
+      set_float4(color, x_44, x_46);
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  x_GLF_color = color;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ec0f90f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.msl
@@ -0,0 +1,62 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float4 color = 0.0f;
+  float const x_29 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_31 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_33 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  color = float4(x_29, x_31, x_33, x_35);
+  int const x_38 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  switch(((1 | x_38) ^ 1)) {
+    case 0: {
+      int const x_44 = x_8.x_GLF_uniform_int_values.arr[0].el;
+      float const x_46 = x_6.x_GLF_uniform_float_values.arr[1].el;
+      color[x_44] = x_46;
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  float4 const x_48 = color;
+  *(tint_symbol_4) = x_48;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6302166
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,116 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+      %color = OpVariable %_ptr_Function_v4float Function %16
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %29 = OpLoad %float %28
+         %30 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %31 = OpLoad %float %30
+         %32 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %36 = OpLoad %float %35
+         %37 = OpCompositeConstruct %v4float %29 %31 %33 %36
+               OpStore %color %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %40 = OpLoad %int %39
+         %42 = OpBitwiseOr %int %int_1 %40
+         %43 = OpBitwiseXor %int %42 %int_1
+               OpSelectionMerge %41 None
+               OpSwitch %43 %44 0 %45
+         %45 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %49 = OpLoad %float %48
+         %51 = OpAccessChain %_ptr_Function_float %color %47
+               OpStore %51 %49
+               OpBranch %41
+         %44 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %52 = OpLoad %v4float %color
+               OpStore %x_GLF_color %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..22c3ac0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,52 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var color : vec4<f32>;
+  let x_29 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_31 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[1];
+  color = vec4<f32>(x_29, x_31, x_33, x_35);
+  let x_38 : i32 = x_8.x_GLF_uniform_int_values[1];
+  switch(((1 | x_38) ^ 1)) {
+    case 0: {
+      let x_44 : i32 = x_8.x_GLF_uniform_int_values[0];
+      let x_46 : f32 = x_6.x_GLF_uniform_float_values[1];
+      color[x_44] = x_46;
+    }
+    default: {
+    }
+  }
+  let x_48 : vec4<f32> = color;
+  x_GLF_color = x_48;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm
new file mode 100644
index 0000000..ea4e58c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm
@@ -0,0 +1,142 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %16
+         %35 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_float Function
+          %c = OpVariable %_ptr_Function_float Function
+          %d = OpVariable %_ptr_Function_float Function
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %37 = OpLoad %float %36
+               OpStore %a %37
+         %38 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %39 = OpLoad %int %38
+               OpStore %i %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpSLessThan %bool %44 %46
+               OpBranchConditional %47 %48 %41
+         %48 = OpLabel
+         %49 = OpLoad %float %a
+               OpStore %b %49
+         %50 = OpLoad %float %b
+               OpStore %c %50
+         %51 = OpLoad %float %c
+         %52 = OpExtInst %float %1 Asin %51
+               OpStore %d %52
+         %53 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %54 = OpLoad %float %53
+               OpStore %c %54
+         %55 = OpLoad %float %d
+               OpStore %a %55
+               OpBranch %42
+         %42 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpIAdd %int %56 %int_1
+               OpStore %i %57
+               OpBranch %40
+         %41 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %59 = OpLoad %float %58
+         %60 = OpLoad %float %a
+         %61 = OpFOrdLessThan %bool %59 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpLoad %float %a
+         %65 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %66 = OpLoad %float %65
+         %67 = OpFOrdLessThan %bool %64 %66
+               OpBranch %62
+         %62 = OpLabel
+         %68 = OpPhi %bool %61 %41 %67 %63
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %76
+         %78 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %79
+         %81 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %82
+         %84 = OpCompositeConstruct %v4float %74 %77 %80 %83
+               OpStore %_GLF_color %84
+               OpBranch %69
+         %71 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpCompositeConstruct %v4float %87 %87 %87 %87
+               OpStore %_GLF_color %88
+               OpBranch %69
+         %69 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0df7ca0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,75 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  int i = 0;
+  float b = 0.0f;
+  float c = 0.0f;
+  float d = 0.0f;
+  bool x_67 = false;
+  bool x_68_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_37 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_37;
+  const int x_39 = asint(x_9[1].x);
+  i = x_39;
+  while (true) {
+    const int x_44 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_44 < x_46)) {
+    } else {
+      break;
+    }
+    b = a;
+    c = b;
+    d = asin(c);
+    const float x_54 = asfloat(x_6[1].x);
+    c = x_54;
+    a = d;
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_59 = asfloat(x_6[2].x);
+  const bool x_61 = (x_59 < a);
+  x_68_phi = x_61;
+  if (x_61) {
+    const float x_64 = a;
+    const float x_66 = asfloat(x_6[3].x);
+    x_67 = (x_64 < x_66);
+    x_68_phi = x_67;
+  }
+  if (x_68_phi) {
+    const int x_73 = asint(x_9[2].x);
+    const int x_76 = asint(x_9[1].x);
+    const int x_79 = asint(x_9[1].x);
+    const int x_82 = asint(x_9[2].x);
+    x_GLF_color = float4(float(x_73), float(x_76), float(x_79), float(x_82));
+  } else {
+    const int x_86 = asint(x_9[1].x);
+    const float x_87 = float(x_86);
+    x_GLF_color = float4(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ed3ad85
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.msl
@@ -0,0 +1,97 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  int i = 0;
+  float b = 0.0f;
+  float c = 0.0f;
+  float d = 0.0f;
+  bool x_67 = false;
+  bool x_68_phi = false;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  a = x_37;
+  int const x_39 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_39;
+  while (true) {
+    int const x_44 = i;
+    int const x_46 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_44 < x_46)) {
+    } else {
+      break;
+    }
+    float const x_49 = a;
+    b = x_49;
+    float const x_50 = b;
+    c = x_50;
+    float const x_51 = c;
+    d = asin(x_51);
+    float const x_54 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    c = x_54;
+    float const x_55 = d;
+    a = x_55;
+    {
+      int const x_56 = i;
+      i = (x_56 + 1);
+    }
+  }
+  float const x_59 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_60 = a;
+  bool const x_61 = (x_59 < x_60);
+  x_68_phi = x_61;
+  if (x_61) {
+    float const x_64 = a;
+    float const x_66 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    x_67 = (x_64 < x_66);
+    x_68_phi = x_67;
+  }
+  bool const x_68 = x_68_phi;
+  if (x_68) {
+    int const x_73 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    int const x_76 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_79 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_82 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_73), float(x_76), float(x_79), float(x_82));
+  } else {
+    int const x_86 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_87 = float(x_86);
+    *(tint_symbol_4) = float4(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9bb8ae6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,193 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 114
+; Schema: 0
+               OpCapability Shader
+         %62 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %x_67 "x_67"
+               OpName %x_68_phi "x_68_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %102 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %29
+          %b = OpVariable %_ptr_Function_float Function %26
+          %c = OpVariable %_ptr_Function_float Function %26
+          %d = OpVariable %_ptr_Function_float Function %26
+       %x_67 = OpVariable %_ptr_Function_bool Function %36
+   %x_68_phi = OpVariable %_ptr_Function_bool Function %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %42 = OpLoad %float %41
+               OpStore %a %42
+         %45 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %46 = OpLoad %int %45
+               OpStore %i %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpSLessThan %bool %51 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %48
+         %55 = OpLabel
+         %58 = OpLoad %float %a
+               OpStore %b %58
+         %59 = OpLoad %float %b
+               OpStore %c %59
+         %60 = OpLoad %float %c
+         %61 = OpExtInst %float %62 Asin %60
+               OpStore %d %61
+         %63 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %64 = OpLoad %float %63
+               OpStore %c %64
+         %65 = OpLoad %float %d
+               OpStore %a %65
+               OpBranch %49
+         %49 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %i %67
+               OpBranch %47
+         %48 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %70 = OpLoad %float %69
+         %71 = OpLoad %float %a
+         %72 = OpFOrdLessThan %bool %70 %71
+               OpStore %x_68_phi %72
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpLoad %float %a
+         %77 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %78 = OpLoad %float %77
+         %79 = OpFOrdLessThan %bool %75 %78
+               OpStore %x_67 %79
+         %80 = OpLoad %bool %x_67
+               OpStore %x_68_phi %80
+               OpBranch %73
+         %73 = OpLabel
+         %81 = OpLoad %bool %x_68_phi
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %86
+         %94 = OpConvertSToF %float %88
+         %95 = OpConvertSToF %float %90
+         %96 = OpConvertSToF %float %92
+         %97 = OpCompositeConstruct %v4float %93 %94 %95 %96
+               OpStore %x_GLF_color %97
+               OpBranch %82
+         %84 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %99 = OpLoad %int %98
+        %100 = OpConvertSToF %float %99
+        %101 = OpCompositeConstruct %v4float %100 %100 %100 %100
+               OpStore %x_GLF_color %101
+               OpBranch %82
+         %82 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %102
+%tint_symbol = OpFunctionParameter %main_out
+        %106 = OpLabel
+        %107 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %107
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %109 = OpLabel
+        %110 = OpFunctionCall %void %main_1
+        %112 = OpLoad %v4float %x_GLF_color
+        %113 = OpCompositeConstruct %main_out %112
+        %111 = OpFunctionCall %void %tint_symbol_2 %113
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d9201c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,90 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var i : i32;
+  var b : f32;
+  var c : f32;
+  var d : f32;
+  var x_67 : bool;
+  var x_68_phi : bool;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[0];
+  a = x_37;
+  let x_39 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_39;
+  loop {
+    let x_44 : i32 = i;
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_44 < x_46)) {
+    } else {
+      break;
+    }
+    let x_49 : f32 = a;
+    b = x_49;
+    let x_50 : f32 = b;
+    c = x_50;
+    let x_51 : f32 = c;
+    d = asin(x_51);
+    let x_54 : f32 = x_6.x_GLF_uniform_float_values[1];
+    c = x_54;
+    let x_55 : f32 = d;
+    a = x_55;
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 + 1);
+    }
+  }
+  let x_59 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_60 : f32 = a;
+  let x_61 : bool = (x_59 < x_60);
+  x_68_phi = x_61;
+  if (x_61) {
+    let x_64 : f32 = a;
+    let x_66 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_67 = (x_64 < x_66);
+    x_68_phi = x_67;
+  }
+  let x_68 : bool = x_68_phi;
+  if (x_68) {
+    let x_73 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_76 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_79 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_82 : i32 = x_9.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_73), f32(x_76), f32(x_79), f32(x_82));
+  } else {
+    let x_86 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_87 : f32 = f32(x_86);
+    x_GLF_color = vec4<f32>(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
new file mode 100644
index 0000000..d9201c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
@@ -0,0 +1,90 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var i : i32;
+  var b : f32;
+  var c : f32;
+  var d : f32;
+  var x_67 : bool;
+  var x_68_phi : bool;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[0];
+  a = x_37;
+  let x_39 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_39;
+  loop {
+    let x_44 : i32 = i;
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_44 < x_46)) {
+    } else {
+      break;
+    }
+    let x_49 : f32 = a;
+    b = x_49;
+    let x_50 : f32 = b;
+    c = x_50;
+    let x_51 : f32 = c;
+    d = asin(x_51);
+    let x_54 : f32 = x_6.x_GLF_uniform_float_values[1];
+    c = x_54;
+    let x_55 : f32 = d;
+    a = x_55;
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 + 1);
+    }
+  }
+  let x_59 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_60 : f32 = a;
+  let x_61 : bool = (x_59 < x_60);
+  x_68_phi = x_61;
+  if (x_61) {
+    let x_64 : f32 = a;
+    let x_66 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_67 = (x_64 < x_66);
+    x_68_phi = x_67;
+  }
+  let x_68 : bool = x_68_phi;
+  if (x_68) {
+    let x_73 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_76 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_79 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_82 : i32 = x_9.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_73), f32(x_76), f32(x_79), f32(x_82));
+  } else {
+    let x_86 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_87 : f32 = f32(x_86);
+    x_GLF_color = vec4<f32>(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0df7ca0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,75 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  int i = 0;
+  float b = 0.0f;
+  float c = 0.0f;
+  float d = 0.0f;
+  bool x_67 = false;
+  bool x_68_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_37 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_37;
+  const int x_39 = asint(x_9[1].x);
+  i = x_39;
+  while (true) {
+    const int x_44 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_44 < x_46)) {
+    } else {
+      break;
+    }
+    b = a;
+    c = b;
+    d = asin(c);
+    const float x_54 = asfloat(x_6[1].x);
+    c = x_54;
+    a = d;
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_59 = asfloat(x_6[2].x);
+  const bool x_61 = (x_59 < a);
+  x_68_phi = x_61;
+  if (x_61) {
+    const float x_64 = a;
+    const float x_66 = asfloat(x_6[3].x);
+    x_67 = (x_64 < x_66);
+    x_68_phi = x_67;
+  }
+  if (x_68_phi) {
+    const int x_73 = asint(x_9[2].x);
+    const int x_76 = asint(x_9[1].x);
+    const int x_79 = asint(x_9[1].x);
+    const int x_82 = asint(x_9[2].x);
+    x_GLF_color = float4(float(x_73), float(x_76), float(x_79), float(x_82));
+  } else {
+    const int x_86 = asint(x_9[1].x);
+    const float x_87 = float(x_86);
+    x_GLF_color = float4(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ed3ad85
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.msl
@@ -0,0 +1,97 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  int i = 0;
+  float b = 0.0f;
+  float c = 0.0f;
+  float d = 0.0f;
+  bool x_67 = false;
+  bool x_68_phi = false;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  a = x_37;
+  int const x_39 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_39;
+  while (true) {
+    int const x_44 = i;
+    int const x_46 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_44 < x_46)) {
+    } else {
+      break;
+    }
+    float const x_49 = a;
+    b = x_49;
+    float const x_50 = b;
+    c = x_50;
+    float const x_51 = c;
+    d = asin(x_51);
+    float const x_54 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    c = x_54;
+    float const x_55 = d;
+    a = x_55;
+    {
+      int const x_56 = i;
+      i = (x_56 + 1);
+    }
+  }
+  float const x_59 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_60 = a;
+  bool const x_61 = (x_59 < x_60);
+  x_68_phi = x_61;
+  if (x_61) {
+    float const x_64 = a;
+    float const x_66 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    x_67 = (x_64 < x_66);
+    x_68_phi = x_67;
+  }
+  bool const x_68 = x_68_phi;
+  if (x_68) {
+    int const x_73 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    int const x_76 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_79 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_82 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_73), float(x_76), float(x_79), float(x_82));
+  } else {
+    int const x_86 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_87 = float(x_86);
+    *(tint_symbol_4) = float4(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9bb8ae6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,193 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 114
+; Schema: 0
+               OpCapability Shader
+         %62 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %x_67 "x_67"
+               OpName %x_68_phi "x_68_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %102 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %29
+          %b = OpVariable %_ptr_Function_float Function %26
+          %c = OpVariable %_ptr_Function_float Function %26
+          %d = OpVariable %_ptr_Function_float Function %26
+       %x_67 = OpVariable %_ptr_Function_bool Function %36
+   %x_68_phi = OpVariable %_ptr_Function_bool Function %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %42 = OpLoad %float %41
+               OpStore %a %42
+         %45 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %46 = OpLoad %int %45
+               OpStore %i %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpSLessThan %bool %51 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %48
+         %55 = OpLabel
+         %58 = OpLoad %float %a
+               OpStore %b %58
+         %59 = OpLoad %float %b
+               OpStore %c %59
+         %60 = OpLoad %float %c
+         %61 = OpExtInst %float %62 Asin %60
+               OpStore %d %61
+         %63 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %64 = OpLoad %float %63
+               OpStore %c %64
+         %65 = OpLoad %float %d
+               OpStore %a %65
+               OpBranch %49
+         %49 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %i %67
+               OpBranch %47
+         %48 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %70 = OpLoad %float %69
+         %71 = OpLoad %float %a
+         %72 = OpFOrdLessThan %bool %70 %71
+               OpStore %x_68_phi %72
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpLoad %float %a
+         %77 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %78 = OpLoad %float %77
+         %79 = OpFOrdLessThan %bool %75 %78
+               OpStore %x_67 %79
+         %80 = OpLoad %bool %x_67
+               OpStore %x_68_phi %80
+               OpBranch %73
+         %73 = OpLabel
+         %81 = OpLoad %bool %x_68_phi
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %86
+         %94 = OpConvertSToF %float %88
+         %95 = OpConvertSToF %float %90
+         %96 = OpConvertSToF %float %92
+         %97 = OpCompositeConstruct %v4float %93 %94 %95 %96
+               OpStore %x_GLF_color %97
+               OpBranch %82
+         %84 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %99 = OpLoad %int %98
+        %100 = OpConvertSToF %float %99
+        %101 = OpCompositeConstruct %v4float %100 %100 %100 %100
+               OpStore %x_GLF_color %101
+               OpBranch %82
+         %82 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %102
+%tint_symbol = OpFunctionParameter %main_out
+        %106 = OpLabel
+        %107 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %107
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %109 = OpLabel
+        %110 = OpFunctionCall %void %main_1
+        %112 = OpLoad %v4float %x_GLF_color
+        %113 = OpCompositeConstruct %main_out %112
+        %111 = OpFunctionCall %void %tint_symbol_2 %113
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d9201c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,90 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var i : i32;
+  var b : f32;
+  var c : f32;
+  var d : f32;
+  var x_67 : bool;
+  var x_68_phi : bool;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[0];
+  a = x_37;
+  let x_39 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_39;
+  loop {
+    let x_44 : i32 = i;
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_44 < x_46)) {
+    } else {
+      break;
+    }
+    let x_49 : f32 = a;
+    b = x_49;
+    let x_50 : f32 = b;
+    c = x_50;
+    let x_51 : f32 = c;
+    d = asin(x_51);
+    let x_54 : f32 = x_6.x_GLF_uniform_float_values[1];
+    c = x_54;
+    let x_55 : f32 = d;
+    a = x_55;
+
+    continuing {
+      let x_56 : i32 = i;
+      i = (x_56 + 1);
+    }
+  }
+  let x_59 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_60 : f32 = a;
+  let x_61 : bool = (x_59 < x_60);
+  x_68_phi = x_61;
+  if (x_61) {
+    let x_64 : f32 = a;
+    let x_66 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_67 = (x_64 < x_66);
+    x_68_phi = x_67;
+  }
+  let x_68 : bool = x_68_phi;
+  if (x_68) {
+    let x_73 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_76 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_79 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_82 : i32 = x_9.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_73), f32(x_76), f32(x_79), f32(x_82));
+  } else {
+    let x_86 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_87 : f32 = f32(x_86);
+    x_GLF_color = vec4<f32>(x_87, x_87, x_87, x_87);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm
new file mode 100644
index 0000000..ca1e5df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm
@@ -0,0 +1,64 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %8
+         %21 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %23 = OpLoad %float %22
+         %24 = OpExtInst %float %1 InverseSqrt %23
+         %25 = OpFOrdLessThan %bool %24 %float_n1
+               OpSelectionMerge %26 None
+               OpBranchConditional %25 %27 %28
+         %27 = OpLabel
+         %29 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %30 = OpLoad %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %_GLF_color %31
+               OpBranch %26
+         %28 = OpLabel
+         %32 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %33 = OpLoad %float %32
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %39 = OpLoad %float %38
+         %40 = OpCompositeConstruct %v4float %33 %35 %37 %39
+               OpStore %_GLF_color %40
+               OpBranch %26
+         %26 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1f0d86f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,36 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_23 = asfloat(x_5[1].x);
+  if ((rsqrt(x_23) < -1.0f)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_30 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
+    x_GLF_color = float4(x_30, x_30, x_30, x_30);
+  } else {
+    const float x_33 = asfloat(x_5[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_35 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_37 = asfloat(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_39 = asfloat(x_5[1].x);
+    x_GLF_color = float4(x_33, x_35, x_37, x_39);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..066a9d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_23 = x_5.x_GLF_uniform_float_values.arr[1].el;
+  if ((rsqrt(x_23) < -1.0f)) {
+    float const x_30 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_30, x_30, x_30, x_30);
+  } else {
+    float const x_33 = x_5.x_GLF_uniform_float_values.arr[1].el;
+    float const x_35 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_37 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_39 = x_5.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_4) = float4(x_33, x_35, x_37, x_39);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..91daf4a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+         %25 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %23 = OpLoad %float %22
+         %24 = OpExtInst %float %25 InverseSqrt %23
+         %27 = OpFOrdLessThan %bool %24 %float_n1
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+         %33 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %34 = OpLoad %float %33
+         %35 = OpCompositeConstruct %v4float %34 %34 %34 %34
+               OpStore %x_GLF_color %35
+               OpBranch %29
+         %31 = OpLabel
+         %36 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %43 = OpLoad %float %42
+         %44 = OpCompositeConstruct %v4float %37 %39 %41 %43
+               OpStore %x_GLF_color %44
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..239caf2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,36 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_23 : f32 = x_5.x_GLF_uniform_float_values[1];
+  if ((inverseSqrt(x_23) < -1.0)) {
+    let x_30 : f32 = x_5.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_30, x_30, x_30, x_30);
+  } else {
+    let x_33 : f32 = x_5.x_GLF_uniform_float_values[1];
+    let x_35 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_37 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_39 : f32 = x_5.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_33, x_35, x_37, x_39);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
new file mode 100644
index 0000000..239caf2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
@@ -0,0 +1,36 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_23 : f32 = x_5.x_GLF_uniform_float_values[1];
+  if ((inverseSqrt(x_23) < -1.0)) {
+    let x_30 : f32 = x_5.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_30, x_30, x_30, x_30);
+  } else {
+    let x_33 : f32 = x_5.x_GLF_uniform_float_values[1];
+    let x_35 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_37 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_39 : f32 = x_5.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_33, x_35, x_37, x_39);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1f0d86f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,36 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_23 = asfloat(x_5[1].x);
+  if ((rsqrt(x_23) < -1.0f)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_30 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
+    x_GLF_color = float4(x_30, x_30, x_30, x_30);
+  } else {
+    const float x_33 = asfloat(x_5[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_35 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_37 = asfloat(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_39 = asfloat(x_5[1].x);
+    x_GLF_color = float4(x_33, x_35, x_37, x_39);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..066a9d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_23 = x_5.x_GLF_uniform_float_values.arr[1].el;
+  if ((rsqrt(x_23) < -1.0f)) {
+    float const x_30 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_30, x_30, x_30, x_30);
+  } else {
+    float const x_33 = x_5.x_GLF_uniform_float_values.arr[1].el;
+    float const x_35 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_37 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_39 = x_5.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_4) = float4(x_33, x_35, x_37, x_39);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..91daf4a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+         %25 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %23 = OpLoad %float %22
+         %24 = OpExtInst %float %25 InverseSqrt %23
+         %27 = OpFOrdLessThan %bool %24 %float_n1
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+         %33 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %34 = OpLoad %float %33
+         %35 = OpCompositeConstruct %v4float %34 %34 %34 %34
+               OpStore %x_GLF_color %35
+               OpBranch %29
+         %31 = OpLabel
+         %36 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %43 = OpLoad %float %42
+         %44 = OpCompositeConstruct %v4float %37 %39 %41 %43
+               OpStore %x_GLF_color %44
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..239caf2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,36 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_23 : f32 = x_5.x_GLF_uniform_float_values[1];
+  if ((inverseSqrt(x_23) < -1.0)) {
+    let x_30 : f32 = x_5.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_30, x_30, x_30, x_30);
+  } else {
+    let x_33 : f32 = x_5.x_GLF_uniform_float_values[1];
+    let x_35 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_37 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_39 : f32 = x_5.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_33, x_35, x_37, x_39);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm
new file mode 100644
index 0000000..bb7ac95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm
@@ -0,0 +1,77 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %9
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %25 = OpLoad %int %24
+         %26 = OpShiftLeftLogical %int %25 %int_5
+         %27 = OpShiftRightArithmetic %int %int_1 %26
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %28
+         %30 = OpShiftRightArithmetic %int %27 %29
+               OpStore %a %30
+         %31 = OpLoad %int %a
+         %32 = OpIEqual %bool %31 %int_1
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpConvertSToF %float %37
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %38 %41 %44 %47
+               OpStore %_GLF_color %48
+               OpBranch %33
+         %35 = OpLabel
+         %49 = OpLoad %int %a
+         %50 = OpConvertSToF %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %_GLF_color %51
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..04d7fae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,40 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_25 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = ((1 >> asuint((x_25 << asuint(5)))) >> asuint(x_29));
+  if ((a == 1)) {
+    const int x_37 = asint(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_40 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_46 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_37), float(x_40), float(x_43), float(x_46));
+  } else {
+    const float x_50 = float(a);
+    x_GLF_color = float4(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..0e0fb17
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = ((1 >> as_type<uint>((x_25 << as_type<uint>(5)))) >> as_type<uint>(x_29));
+  int const x_31 = a;
+  if ((x_31 == 1)) {
+    int const x_37 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_43 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_37), float(x_40), float(x_43), float(x_46));
+  } else {
+    int const x_49 = a;
+    float const x_50 = float(x_49);
+    *(tint_symbol_4) = float4(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..22f831d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,113 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %59 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %28 = OpLoad %int %27
+         %31 = OpBitcast %uint %int_5
+         %33 = OpShiftLeftLogical %int %26 %31
+         %30 = OpBitcast %uint %33
+         %34 = OpShiftRightArithmetic %int %int_1 %30
+         %35 = OpBitcast %uint %28
+         %36 = OpShiftRightArithmetic %int %34 %35
+               OpStore %a %36
+         %37 = OpLoad %int %a
+         %38 = OpIEqual %bool %37 %int_1
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %44
+         %52 = OpConvertSToF %float %46
+         %53 = OpConvertSToF %float %48
+         %54 = OpConvertSToF %float %50
+         %55 = OpCompositeConstruct %v4float %51 %52 %53 %54
+               OpStore %x_GLF_color %55
+               OpBranch %40
+         %42 = OpLabel
+         %56 = OpLoad %int %a
+         %57 = OpConvertSToF %float %56
+         %58 = OpCompositeConstruct %v4float %57 %57 %57 %57
+               OpStore %x_GLF_color %58
+               OpBranch %40
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %59
+%tint_symbol = OpFunctionParameter %main_out
+         %63 = OpLabel
+         %64 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %66 = OpLabel
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..32e102d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,41 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = ((1 >> bitcast<u32>((x_25 << bitcast<u32>(5)))) >> bitcast<u32>(x_29));
+  let x_31 : i32 = a;
+  if ((x_31 == 1)) {
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_37), f32(x_40), f32(x_43), f32(x_46));
+  } else {
+    let x_49 : i32 = a;
+    let x_50 : f32 = f32(x_49);
+    x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
new file mode 100644
index 0000000..32e102d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
@@ -0,0 +1,41 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = ((1 >> bitcast<u32>((x_25 << bitcast<u32>(5)))) >> bitcast<u32>(x_29));
+  let x_31 : i32 = a;
+  if ((x_31 == 1)) {
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_37), f32(x_40), f32(x_43), f32(x_46));
+  } else {
+    let x_49 : i32 = a;
+    let x_50 : f32 = f32(x_49);
+    x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..04d7fae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,40 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_25 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = ((1 >> asuint((x_25 << asuint(5)))) >> asuint(x_29));
+  if ((a == 1)) {
+    const int x_37 = asint(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_40 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_46 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_37), float(x_40), float(x_43), float(x_46));
+  } else {
+    const float x_50 = float(a);
+    x_GLF_color = float4(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..0e0fb17
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = ((1 >> as_type<uint>((x_25 << as_type<uint>(5)))) >> as_type<uint>(x_29));
+  int const x_31 = a;
+  if ((x_31 == 1)) {
+    int const x_37 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_43 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_37), float(x_40), float(x_43), float(x_46));
+  } else {
+    int const x_49 = a;
+    float const x_50 = float(x_49);
+    *(tint_symbol_4) = float4(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..22f831d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,113 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %59 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %28 = OpLoad %int %27
+         %31 = OpBitcast %uint %int_5
+         %33 = OpShiftLeftLogical %int %26 %31
+         %30 = OpBitcast %uint %33
+         %34 = OpShiftRightArithmetic %int %int_1 %30
+         %35 = OpBitcast %uint %28
+         %36 = OpShiftRightArithmetic %int %34 %35
+               OpStore %a %36
+         %37 = OpLoad %int %a
+         %38 = OpIEqual %bool %37 %int_1
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %44
+         %52 = OpConvertSToF %float %46
+         %53 = OpConvertSToF %float %48
+         %54 = OpConvertSToF %float %50
+         %55 = OpCompositeConstruct %v4float %51 %52 %53 %54
+               OpStore %x_GLF_color %55
+               OpBranch %40
+         %42 = OpLabel
+         %56 = OpLoad %int %a
+         %57 = OpConvertSToF %float %56
+         %58 = OpCompositeConstruct %v4float %57 %57 %57 %57
+               OpStore %x_GLF_color %58
+               OpBranch %40
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %59
+%tint_symbol = OpFunctionParameter %main_out
+         %63 = OpLabel
+         %64 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %66 = OpLabel
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..32e102d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,41 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = ((1 >> bitcast<u32>((x_25 << bitcast<u32>(5)))) >> bitcast<u32>(x_29));
+  let x_31 : i32 = a;
+  if ((x_31 == 1)) {
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_37), f32(x_40), f32(x_43), f32(x_46));
+  } else {
+    let x_49 : i32 = a;
+    let x_50 : f32 = f32(x_49);
+    x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm
new file mode 100644
index 0000000..409dec0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm
@@ -0,0 +1,92 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %v2float = OpTypeVector %float 2
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %12
+         %29 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpConvertSToF %float %31
+         %33 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpCompositeConstruct %v2float %32 %35
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpBitwiseOr %int %38 %int_1
+         %40 = OpVectorExtractDynamic %float %36 %39
+               OpStore %a %40
+         %41 = OpLoad %float %a
+         %42 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpFOrdEqual %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+         %48 = OpLoad %float %a
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpLoad %float %a
+         %56 = OpCompositeConstruct %v4float %48 %51 %54 %55
+               OpStore %_GLF_color %56
+               OpBranch %45
+         %47 = OpLabel
+         %57 = OpLoad %float %a
+         %58 = OpCompositeConstruct %v4float %57 %57 %57 %57
+               OpStore %_GLF_color %58
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f1391e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,46 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_31 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_34 = asint(x_6[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = float2(float(x_31), float(x_34))[(x_38 | 1)];
+  const float x_41 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_43 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_41 == x_43)) {
+    const float x_48 = a;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_53 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(x_48, float(x_50), float(x_53), a);
+  } else {
+    const float x_57 = a;
+    x_GLF_color = float4(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a588885
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_34 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = float2(float(x_31), float(x_34))[(x_38 | 1)];
+  float const x_41 = a;
+  float const x_43 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_41 == x_43)) {
+    float const x_48 = a;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_55 = a;
+    *(tint_symbol_4) = float4(x_48, float(x_50), float(x_53), x_55);
+  } else {
+    float const x_57 = a;
+    *(tint_symbol_4) = float4(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..065f841
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,126 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %v2float = OpTypeVector %float 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %63 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %26
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %36 = OpLoad %int %35
+         %38 = OpConvertSToF %float %31
+         %39 = OpConvertSToF %float %34
+         %40 = OpCompositeConstruct %v2float %38 %39
+         %41 = OpBitwiseOr %int %36 %int_1
+         %42 = OpVectorExtractDynamic %float %40 %41
+               OpStore %a %42
+         %43 = OpLoad %float %a
+         %45 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %46 = OpLoad %float %45
+         %47 = OpFOrdEqual %bool %43 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+         %52 = OpLoad %float %a
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpLoad %float %a
+         %58 = OpConvertSToF %float %54
+         %59 = OpConvertSToF %float %56
+         %60 = OpCompositeConstruct %v4float %52 %58 %59 %57
+               OpStore %x_GLF_color %60
+               OpBranch %49
+         %51 = OpLabel
+         %61 = OpLoad %float %a
+         %62 = OpCompositeConstruct %v4float %61 %61 %61 %61
+               OpStore %x_GLF_color %62
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %63
+%tint_symbol = OpFunctionParameter %main_out
+         %67 = OpLabel
+         %68 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %68
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1210250
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = vec2<f32>(f32(x_31), f32(x_34))[(x_38 | 1)];
+  let x_41 : f32 = a;
+  let x_43 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_41 == x_43)) {
+    let x_48 : f32 = a;
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_55 : f32 = a;
+    x_GLF_color = vec4<f32>(x_48, f32(x_50), f32(x_53), x_55);
+  } else {
+    let x_57 : f32 = a;
+    x_GLF_color = vec4<f32>(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
new file mode 100644
index 0000000..1210250
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = vec2<f32>(f32(x_31), f32(x_34))[(x_38 | 1)];
+  let x_41 : f32 = a;
+  let x_43 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_41 == x_43)) {
+    let x_48 : f32 = a;
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_55 : f32 = a;
+    x_GLF_color = vec4<f32>(x_48, f32(x_50), f32(x_53), x_55);
+  } else {
+    let x_57 : f32 = a;
+    x_GLF_color = vec4<f32>(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f1391e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,46 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_31 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_34 = asint(x_6[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = float2(float(x_31), float(x_34))[(x_38 | 1)];
+  const float x_41 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_43 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_41 == x_43)) {
+    const float x_48 = a;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_53 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(x_48, float(x_50), float(x_53), a);
+  } else {
+    const float x_57 = a;
+    x_GLF_color = float4(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a588885
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_34 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = float2(float(x_31), float(x_34))[(x_38 | 1)];
+  float const x_41 = a;
+  float const x_43 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_41 == x_43)) {
+    float const x_48 = a;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_53 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_55 = a;
+    *(tint_symbol_4) = float4(x_48, float(x_50), float(x_53), x_55);
+  } else {
+    float const x_57 = a;
+    *(tint_symbol_4) = float4(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..065f841
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,126 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %v2float = OpTypeVector %float 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %63 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %26
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %36 = OpLoad %int %35
+         %38 = OpConvertSToF %float %31
+         %39 = OpConvertSToF %float %34
+         %40 = OpCompositeConstruct %v2float %38 %39
+         %41 = OpBitwiseOr %int %36 %int_1
+         %42 = OpVectorExtractDynamic %float %40 %41
+               OpStore %a %42
+         %43 = OpLoad %float %a
+         %45 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %46 = OpLoad %float %45
+         %47 = OpFOrdEqual %bool %43 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+         %52 = OpLoad %float %a
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpLoad %float %a
+         %58 = OpConvertSToF %float %54
+         %59 = OpConvertSToF %float %56
+         %60 = OpCompositeConstruct %v4float %52 %58 %59 %57
+               OpStore %x_GLF_color %60
+               OpBranch %49
+         %51 = OpLabel
+         %61 = OpLoad %float %a
+         %62 = OpCompositeConstruct %v4float %61 %61 %61 %61
+               OpStore %x_GLF_color %62
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %63
+%tint_symbol = OpFunctionParameter %main_out
+         %67 = OpLabel
+         %68 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %68
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1210250
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = vec2<f32>(f32(x_31), f32(x_34))[(x_38 | 1)];
+  let x_41 : f32 = a;
+  let x_43 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_41 == x_43)) {
+    let x_48 : f32 = a;
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_55 : f32 = a;
+    x_GLF_color = vec4<f32>(x_48, f32(x_50), f32(x_53), x_55);
+  } else {
+    let x_57 : f32 = a;
+    x_GLF_color = vec4<f32>(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm
new file mode 100644
index 0000000..6ac9b0c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm
@@ -0,0 +1,407 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f_i1_ "f(i1;"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %ref "ref"
+               OpName %i_0 "i"
+               OpName %a_0 "a"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %i_1 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %f_i1_ RelaxedPrecision
+               OpDecorate %a RelaxedPrecision
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %_arr_int_uint_12 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %ref RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %34 RelaxedPrecision
+               OpDecorate %35 RelaxedPrecision
+               OpDecorate %36 RelaxedPrecision
+               OpDecorate %37 RelaxedPrecision
+               OpDecorate %38 RelaxedPrecision
+               OpDecorate %39 RelaxedPrecision
+               OpDecorate %40 RelaxedPrecision
+               OpDecorate %41 RelaxedPrecision
+               OpDecorate %42 RelaxedPrecision
+               OpDecorate %43 RelaxedPrecision
+               OpDecorate %44 RelaxedPrecision
+               OpDecorate %i_0 RelaxedPrecision
+               OpDecorate %45 RelaxedPrecision
+               OpDecorate %46 RelaxedPrecision
+               OpDecorate %47 RelaxedPrecision
+               OpDecorate %a_0 RelaxedPrecision
+               OpDecorate %48 RelaxedPrecision
+               OpDecorate %49 RelaxedPrecision
+               OpDecorate %50 RelaxedPrecision
+               OpDecorate %51 RelaxedPrecision
+               OpDecorate %52 RelaxedPrecision
+               OpDecorate %53 RelaxedPrecision
+               OpDecorate %54 RelaxedPrecision
+               OpDecorate %55 RelaxedPrecision
+               OpDecorate %56 RelaxedPrecision
+               OpDecorate %57 RelaxedPrecision
+               OpDecorate %58 RelaxedPrecision
+               OpDecorate %59 RelaxedPrecision
+               OpDecorate %60 RelaxedPrecision
+               OpDecorate %61 RelaxedPrecision
+               OpDecorate %62 RelaxedPrecision
+               OpDecorate %63 RelaxedPrecision
+               OpDecorate %64 RelaxedPrecision
+               OpDecorate %65 RelaxedPrecision
+               OpDecorate %66 RelaxedPrecision
+               OpDecorate %67 RelaxedPrecision
+               OpDecorate %68 RelaxedPrecision
+               OpDecorate %69 RelaxedPrecision
+               OpDecorate %70 RelaxedPrecision
+               OpDecorate %71 RelaxedPrecision
+               OpDecorate %72 RelaxedPrecision
+               OpDecorate %73 RelaxedPrecision
+               OpDecorate %74 RelaxedPrecision
+               OpDecorate %75 RelaxedPrecision
+               OpDecorate %76 RelaxedPrecision
+               OpDecorate %77 RelaxedPrecision
+               OpDecorate %78 RelaxedPrecision
+               OpDecorate %79 RelaxedPrecision
+               OpDecorate %80 RelaxedPrecision
+               OpDecorate %i_1 RelaxedPrecision
+               OpDecorate %81 RelaxedPrecision
+               OpDecorate %82 RelaxedPrecision
+               OpDecorate %83 RelaxedPrecision
+               OpDecorate %84 RelaxedPrecision
+               OpDecorate %85 RelaxedPrecision
+               OpDecorate %86 RelaxedPrecision
+               OpDecorate %87 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %88 RelaxedPrecision
+               OpDecorate %89 RelaxedPrecision
+               OpDecorate %90 RelaxedPrecision
+               OpDecorate %91 RelaxedPrecision
+               OpDecorate %92 RelaxedPrecision
+               OpDecorate %93 RelaxedPrecision
+               OpDecorate %94 RelaxedPrecision
+       %void = OpTypeVoid
+         %96 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %99 = OpTypeFunction %int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_12 = OpConstant %uint 12
+%_arr_int_uint_12 = OpTypeArray %int %uint_12
+       %buf0 = OpTypeStruct %_arr_int_uint_12
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_6 = OpConstant %int 6
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+     %int_11 = OpConstant %int 11
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %96
+        %123 = OpLabel
+        %ref = OpVariable %_ptr_Function__arr_int_uint_10 Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %a_0 = OpVariable %_ptr_Function__arr_int_uint_10 Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+        %124 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %25 = OpLoad %int %124
+        %125 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %26 = OpLoad %int %125
+        %126 = OpAccessChain %_ptr_Function_int %ref %25
+               OpStore %126 %26
+        %127 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+         %27 = OpLoad %int %127
+        %128 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %28 = OpLoad %int %128
+        %129 = OpAccessChain %_ptr_Function_int %ref %27
+               OpStore %129 %28
+        %130 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %29 = OpLoad %int %130
+        %131 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %30 = OpLoad %int %131
+        %132 = OpAccessChain %_ptr_Function_int %ref %29
+               OpStore %132 %30
+        %133 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %31 = OpLoad %int %133
+        %134 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %32 = OpLoad %int %134
+        %135 = OpAccessChain %_ptr_Function_int %ref %31
+               OpStore %135 %32
+        %136 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %33 = OpLoad %int %136
+        %137 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %34 = OpLoad %int %137
+        %138 = OpAccessChain %_ptr_Function_int %ref %33
+               OpStore %138 %34
+        %139 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %35 = OpLoad %int %139
+        %140 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %36 = OpLoad %int %140
+        %141 = OpAccessChain %_ptr_Function_int %ref %35
+               OpStore %141 %36
+        %142 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %37 = OpLoad %int %142
+        %143 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_7
+         %38 = OpLoad %int %143
+        %144 = OpAccessChain %_ptr_Function_int %ref %37
+               OpStore %144 %38
+        %145 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %39 = OpLoad %int %145
+        %146 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %40 = OpLoad %int %146
+        %147 = OpAccessChain %_ptr_Function_int %ref %39
+               OpStore %147 %40
+        %148 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+         %41 = OpLoad %int %148
+        %149 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+         %42 = OpLoad %int %149
+        %150 = OpAccessChain %_ptr_Function_int %ref %41
+               OpStore %150 %42
+        %151 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_10
+         %43 = OpLoad %int %151
+        %152 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_10
+         %44 = OpLoad %int %152
+        %153 = OpAccessChain %_ptr_Function_int %ref %43
+               OpStore %153 %44
+        %154 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %45 = OpLoad %int %154
+               OpStore %i_0 %45
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+         %46 = OpLoad %int %i_0
+        %159 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %47 = OpLoad %int %159
+        %160 = OpSLessThan %bool %46 %47
+               OpBranchConditional %160 %161 %156
+        %161 = OpLabel
+         %48 = OpLoad %int %i_0
+         %49 = OpLoad %int %i_0
+        %162 = OpAccessChain %_ptr_Function_int %a_0 %48
+               OpStore %162 %49
+         %50 = OpLoad %int %i_0
+        %163 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %51 = OpLoad %int %163
+        %164 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %52 = OpLoad %int %164
+         %53 = OpSDiv %int %51 %52
+        %165 = OpSLessThan %bool %50 %53
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %168
+        %167 = OpLabel
+         %54 = OpLoad %int %i_0
+         %55 = OpLoad %int %i_0
+        %169 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %56 = OpLoad %int %169
+         %57 = OpIAdd %int %55 %56
+        %170 = OpAccessChain %_ptr_Function_int %a_0 %54
+               OpStore %170 %57
+         %58 = OpLoad %int %i_0
+        %171 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %59 = OpLoad %int %171
+        %172 = OpSLessThan %bool %58 %59
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+               OpBranch %157
+        %173 = OpLabel
+         %60 = OpLoad %int %i_0
+         %61 = OpLoad %int %i_0
+        %175 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %62 = OpLoad %int %175
+         %63 = OpIAdd %int %61 %62
+        %176 = OpAccessChain %_ptr_Function_int %a_0 %60
+               OpStore %176 %63
+         %64 = OpLoad %int %i_0
+        %177 = OpAccessChain %_ptr_Function_int %a_0 %64
+         %65 = OpLoad %int %177
+               OpStore %param %65
+         %66 = OpFunctionCall %int %f_i1_ %param
+        %178 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %67 = OpLoad %int %178
+        %179 = OpSLessThan %bool %66 %67
+               OpSelectionMerge %180 None
+               OpBranchConditional %179 %181 %180
+        %181 = OpLabel
+         %68 = OpLoad %int %i_0
+        %182 = OpAccessChain %_ptr_Function_int %a_0 %68
+         %69 = OpLoad %int %182
+         %70 = OpISub %int %69 %int_1
+               OpStore %182 %70
+               OpBranch %180
+        %180 = OpLabel
+               OpBranch %166
+        %168 = OpLabel
+         %71 = OpLoad %int %i_0
+        %183 = OpAccessChain %_ptr_Function_int %a_0 %71
+         %72 = OpLoad %int %183
+               OpStore %param_0 %72
+         %73 = OpFunctionCall %int %f_i1_ %param_0
+        %184 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %74 = OpLoad %int %184
+        %185 = OpSLessThan %bool %73 %74
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %186
+        %187 = OpLabel
+         %75 = OpLoad %int %i_0
+        %188 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %76 = OpLoad %int %188
+        %189 = OpAccessChain %_ptr_Function_int %a_0 %75
+         %77 = OpLoad %int %189
+         %78 = OpIAdd %int %77 %76
+        %190 = OpAccessChain %_ptr_Function_int %a_0 %75
+               OpStore %190 %78
+               OpBranch %186
+        %186 = OpLabel
+               OpBranch %166
+        %166 = OpLabel
+               OpBranch %157
+        %157 = OpLabel
+         %79 = OpLoad %int %i_0
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %i_0 %80
+               OpBranch %155
+        %156 = OpLabel
+        %191 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %81 = OpLoad %int %191
+               OpStore %i_1 %81
+               OpBranch %192
+        %192 = OpLabel
+               OpLoopMerge %193 %194 None
+               OpBranch %195
+        %195 = OpLabel
+         %82 = OpLoad %int %i_1
+        %196 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %83 = OpLoad %int %196
+        %197 = OpSLessThan %bool %82 %83
+               OpBranchConditional %197 %198 %193
+        %198 = OpLabel
+         %84 = OpLoad %int %i_1
+        %199 = OpAccessChain %_ptr_Function_int %a_0 %84
+         %85 = OpLoad %int %199
+         %86 = OpLoad %int %i_1
+        %200 = OpAccessChain %_ptr_Function_int %ref %86
+         %87 = OpLoad %int %200
+        %201 = OpINotEqual %bool %85 %87
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %202
+        %203 = OpLabel
+        %204 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %88 = OpLoad %int %204
+        %205 = OpConvertSToF %float %88
+        %206 = OpCompositeConstruct %v4float %205 %205 %205 %205
+               OpStore %_GLF_color %206
+               OpReturn
+        %202 = OpLabel
+               OpBranch %194
+        %194 = OpLabel
+         %89 = OpLoad %int %i_1
+         %90 = OpIAdd %int %89 %int_1
+               OpStore %i_1 %90
+               OpBranch %192
+        %193 = OpLabel
+        %207 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+         %91 = OpLoad %int %207
+        %208 = OpConvertSToF %float %91
+        %209 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %92 = OpLoad %int %209
+        %210 = OpConvertSToF %float %92
+        %211 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %93 = OpLoad %int %211
+        %212 = OpConvertSToF %float %93
+        %213 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+         %94 = OpLoad %int %213
+        %214 = OpConvertSToF %float %94
+        %215 = OpCompositeConstruct %v4float %208 %210 %212 %214
+               OpStore %_GLF_color %215
+               OpReturn
+               OpFunctionEnd
+      %f_i1_ = OpFunction %int None %99
+          %a = OpFunctionParameter %_ptr_Function_int
+        %216 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+        %217 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %16 = OpLoad %int %217
+               OpStore %i %16
+               OpBranch %218
+        %218 = OpLabel
+               OpLoopMerge %219 %220 None
+               OpBranch %221
+        %221 = OpLabel
+         %17 = OpLoad %int %i
+        %222 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %18 = OpLoad %int %222
+        %223 = OpSLessThan %bool %17 %18
+               OpBranchConditional %223 %224 %219
+        %224 = OpLabel
+         %19 = OpLoad %int %i
+        %225 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %20 = OpLoad %int %225
+        %226 = OpSGreaterThan %bool %19 %20
+               OpSelectionMerge %227 None
+               OpBranchConditional %226 %228 %227
+        %228 = OpLabel
+         %21 = OpLoad %int %a
+               OpReturnValue %21
+        %227 = OpLabel
+               OpBranch %220
+        %220 = OpLabel
+         %22 = OpLoad %int %i
+         %23 = OpIAdd %int %22 %int_1
+               OpStore %i %23
+               OpBranch %218
+        %219 = OpLabel
+        %229 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %24 = OpLoad %int %229
+               OpReturnValue %24
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d5ea2b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,172 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[12];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int f_i1_(inout int a) {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_16 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  i = x_16;
+  while (true) {
+    const int x_17 = i;
+    const int x_18 = asint(x_8[6].x);
+    if ((x_17 < x_18)) {
+    } else {
+      break;
+    }
+    const int x_19 = i;
+    const int x_20 = asint(x_8[2].x);
+    if ((x_19 > x_20)) {
+      const int x_21 = a;
+      return x_21;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_24 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  return x_24;
+}
+
+void main_1() {
+  int ref[10] = (int[10])0;
+  int i_1 = 0;
+  int a_1[10] = (int[10])0;
+  int param = 0;
+  int param_1 = 0;
+  int i_2 = 0;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_25 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_26 = asint(x_8[1].x);
+  ref[x_25] = x_26;
+  const int x_27 = asint(x_8[11].x);
+  const int x_28 = asint(x_8[2].x);
+  ref[x_27] = x_28;
+  const int x_29 = asint(x_8[1].x);
+  const int x_30 = asint(x_8[3].x);
+  ref[x_29] = x_30;
+  const int x_31 = asint(x_8[2].x);
+  const int x_32 = asint(x_8[4].x);
+  ref[x_31] = x_32;
+  const int x_33 = asint(x_8[3].x);
+  const int x_34 = asint(x_8[5].x);
+  ref[x_33] = x_34;
+  const int x_35 = asint(x_8[4].x);
+  const int x_36 = asint(x_8[6].x);
+  ref[x_35] = x_36;
+  const int x_37 = asint(x_8[5].x);
+  const int x_38 = asint(x_8[7].x);
+  ref[x_37] = x_38;
+  const int x_39 = asint(x_8[8].x);
+  const int x_40 = asint(x_8[8].x);
+  ref[x_39] = x_40;
+  const int x_41 = asint(x_8[9].x);
+  const int x_42 = asint(x_8[9].x);
+  ref[x_41] = x_42;
+  const int x_43 = asint(x_8[10].x);
+  const int x_44 = asint(x_8[10].x);
+  ref[x_43] = x_44;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  i_1 = x_45;
+  while (true) {
+    const int x_46 = i_1;
+    const int x_47 = asint(x_8[6].x);
+    if ((x_46 < x_47)) {
+    } else {
+      break;
+    }
+    a_1[i_1] = i_1;
+    const int x_50 = i_1;
+    const int x_51 = asint(x_8[6].x);
+    const int x_52 = asint(x_8[1].x);
+    if ((x_50 < (x_51 / x_52))) {
+      const int x_54 = i_1;
+      const int x_55 = i_1;
+      const int x_56 = asint(x_8[1].x);
+      a_1[x_54] = (x_55 + x_56);
+      const int x_58 = i_1;
+      const int x_59 = asint(x_8[6].x);
+      if ((x_58 < x_59)) {
+        {
+          i_1 = (i_1 + 1);
+        }
+        continue;
+      }
+      const int x_60 = i_1;
+      const int x_61 = i_1;
+      const int x_62 = asint(x_8[8].x);
+      a_1[x_60] = (x_61 + x_62);
+      const int x_65 = a_1[i_1];
+      param = x_65;
+      const int x_66 = f_i1_(param);
+      const int x_67 = asint(x_8[8].x);
+      if ((x_66 < x_67)) {
+        const int x_182_save = i_1;
+        const int x_69 = a_1[x_182_save];
+        a_1[x_182_save] = (x_69 - 1);
+      }
+    } else {
+      const int x_72 = a_1[i_1];
+      param_1 = x_72;
+      const int x_73 = f_i1_(param_1);
+      const int x_74 = asint(x_8[8].x);
+      if ((x_73 < x_74)) {
+        const int x_75 = i_1;
+        const int x_76 = asint(x_8[4].x);
+        const int x_77 = a_1[x_75];
+        a_1[x_75] = (x_77 + x_76);
+      }
+    }
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_81 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  i_2 = x_81;
+  while (true) {
+    const int x_82 = i_2;
+    const int x_83 = asint(x_8[6].x);
+    if ((x_82 < x_83)) {
+    } else {
+      break;
+    }
+    const int x_85 = a_1[i_2];
+    const int x_87 = ref[i_2];
+    if ((x_85 != x_87)) {
+      const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+      const int x_88 = asint(x_8[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+      const float x_205 = float(x_88);
+      x_GLF_color = float4(x_205, x_205, x_205, x_205);
+      return;
+    }
+    {
+      i_2 = (i_2 + 1);
+    }
+  }
+  const int x_91 = asint(x_8[11].x);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const int x_92 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const int x_93 = asint(x_8[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  const int x_94 = asint(x_8[11].x);
+  x_GLF_color = float4(float(x_91), float(x_92), float(x_93), float(x_94));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6399b00
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.msl
@@ -0,0 +1,188 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[12];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int f_i1_(constant buf0& x_8, thread int* const a) {
+  int i = 0;
+  int const x_16 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i = x_16;
+  while (true) {
+    int const x_17 = i;
+    int const x_18 = x_8.x_GLF_uniform_int_values.arr[6].el;
+    if ((x_17 < x_18)) {
+    } else {
+      break;
+    }
+    int const x_19 = i;
+    int const x_20 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_19 > x_20)) {
+      int const x_21 = *(a);
+      return x_21;
+    }
+    {
+      int const x_22 = i;
+      i = (x_22 + 1);
+    }
+  }
+  int const x_24 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  return x_24;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_1 ref = {};
+  int i_1 = 0;
+  tint_array_wrapper_1 a_1 = {};
+  int param = 0;
+  int param_1 = 0;
+  int i_2 = 0;
+  int const x_25 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_26 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_25] = x_26;
+  int const x_27 = x_8.x_GLF_uniform_int_values.arr[11].el;
+  int const x_28 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_27] = x_28;
+  int const x_29 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_30 = x_8.x_GLF_uniform_int_values.arr[3].el;
+  ref.arr[x_29] = x_30;
+  int const x_31 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  int const x_32 = x_8.x_GLF_uniform_int_values.arr[4].el;
+  ref.arr[x_31] = x_32;
+  int const x_33 = x_8.x_GLF_uniform_int_values.arr[3].el;
+  int const x_34 = x_8.x_GLF_uniform_int_values.arr[5].el;
+  ref.arr[x_33] = x_34;
+  int const x_35 = x_8.x_GLF_uniform_int_values.arr[4].el;
+  int const x_36 = x_8.x_GLF_uniform_int_values.arr[6].el;
+  ref.arr[x_35] = x_36;
+  int const x_37 = x_8.x_GLF_uniform_int_values.arr[5].el;
+  int const x_38 = x_8.x_GLF_uniform_int_values.arr[7].el;
+  ref.arr[x_37] = x_38;
+  int const x_39 = x_8.x_GLF_uniform_int_values.arr[8].el;
+  int const x_40 = x_8.x_GLF_uniform_int_values.arr[8].el;
+  ref.arr[x_39] = x_40;
+  int const x_41 = x_8.x_GLF_uniform_int_values.arr[9].el;
+  int const x_42 = x_8.x_GLF_uniform_int_values.arr[9].el;
+  ref.arr[x_41] = x_42;
+  int const x_43 = x_8.x_GLF_uniform_int_values.arr[10].el;
+  int const x_44 = x_8.x_GLF_uniform_int_values.arr[10].el;
+  ref.arr[x_43] = x_44;
+  int const x_45 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i_1 = x_45;
+  while (true) {
+    int const x_46 = i_1;
+    int const x_47 = x_8.x_GLF_uniform_int_values.arr[6].el;
+    if ((x_46 < x_47)) {
+    } else {
+      break;
+    }
+    int const x_48 = i_1;
+    int const x_49 = i_1;
+    a_1.arr[x_48] = x_49;
+    int const x_50 = i_1;
+    int const x_51 = x_8.x_GLF_uniform_int_values.arr[6].el;
+    int const x_52 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_50 < (x_51 / x_52))) {
+      int const x_54 = i_1;
+      int const x_55 = i_1;
+      int const x_56 = x_8.x_GLF_uniform_int_values.arr[1].el;
+      a_1.arr[x_54] = (x_55 + x_56);
+      int const x_58 = i_1;
+      int const x_59 = x_8.x_GLF_uniform_int_values.arr[6].el;
+      if ((x_58 < x_59)) {
+        {
+          int const x_79 = i_1;
+          i_1 = (x_79 + 1);
+        }
+        continue;
+      }
+      int const x_60 = i_1;
+      int const x_61 = i_1;
+      int const x_62 = x_8.x_GLF_uniform_int_values.arr[8].el;
+      a_1.arr[x_60] = (x_61 + x_62);
+      int const x_64 = i_1;
+      int const x_65 = a_1.arr[x_64];
+      param = x_65;
+      int const x_66 = f_i1_(x_8, &(param));
+      int const x_67 = x_8.x_GLF_uniform_int_values.arr[8].el;
+      if ((x_66 < x_67)) {
+        int const x_68 = i_1;
+        int const x_182_save = x_68;
+        int const x_69 = a_1.arr[x_182_save];
+        a_1.arr[x_182_save] = (x_69 - 1);
+      }
+    } else {
+      int const x_71 = i_1;
+      int const x_72 = a_1.arr[x_71];
+      param_1 = x_72;
+      int const x_73 = f_i1_(x_8, &(param_1));
+      int const x_74 = x_8.x_GLF_uniform_int_values.arr[8].el;
+      if ((x_73 < x_74)) {
+        int const x_75 = i_1;
+        int const x_76 = x_8.x_GLF_uniform_int_values.arr[4].el;
+        int const x_77 = a_1.arr[x_75];
+        a_1.arr[x_75] = (x_77 + x_76);
+      }
+    }
+    {
+      int const x_79 = i_1;
+      i_1 = (x_79 + 1);
+    }
+  }
+  int const x_81 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i_2 = x_81;
+  while (true) {
+    int const x_82 = i_2;
+    int const x_83 = x_8.x_GLF_uniform_int_values.arr[6].el;
+    if ((x_82 < x_83)) {
+    } else {
+      break;
+    }
+    int const x_84 = i_2;
+    int const x_85 = a_1.arr[x_84];
+    int const x_86 = i_2;
+    int const x_87 = ref.arr[x_86];
+    if ((x_85 != x_87)) {
+      int const x_88 = x_8.x_GLF_uniform_int_values.arr[0].el;
+      float const x_205 = float(x_88);
+      *(tint_symbol_4) = float4(x_205, x_205, x_205, x_205);
+      return;
+    }
+    {
+      int const x_89 = i_2;
+      i_2 = (x_89 + 1);
+    }
+  }
+  int const x_91 = x_8.x_GLF_uniform_int_values.arr[11].el;
+  int const x_92 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_93 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_94 = x_8.x_GLF_uniform_int_values.arr[11].el;
+  *(tint_symbol_4) = float4(float(x_91), float(x_92), float(x_93), float(x_94));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b54ea8d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,371 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 257
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %f_i1_ "f_i1_"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %ref "ref"
+               OpName %i_1 "i_1"
+               OpName %a_1 "a_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %i_2 "i_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_12 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_12 = OpConstant %uint 12
+%_arr_int_uint_12 = OpTypeArray %int %uint_12
+       %buf0 = OpTypeStruct %_arr_int_uint_12
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpTypeFunction %int %_ptr_Function_int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_6 = OpConstant %int 6
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %54 = OpTypeFunction %void
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %62 = OpConstantNull %_arr_int_uint_10
+     %int_11 = OpConstant %int 11
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+   %main_out = OpTypeStruct %v4float
+        %245 = OpTypeFunction %void %main_out
+      %f_i1_ = OpFunction %int None %15
+          %a = OpFunctionParameter %_ptr_Function_int
+         %19 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %26 = OpLoad %int %25
+               OpStore %i %26
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpLoad %int %i
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+         %34 = OpLoad %int %33
+         %35 = OpSLessThan %bool %31 %34
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %28
+         %37 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %43 = OpLoad %int %42
+         %44 = OpSGreaterThan %bool %40 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+         %48 = OpLoad %int %a
+               OpReturnValue %48
+         %45 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %i %51
+               OpBranch %27
+         %28 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %53 = OpLoad %int %52
+               OpReturnValue %53
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %54
+         %57 = OpLabel
+        %ref = OpVariable %_ptr_Function__arr_int_uint_10 Function %62
+        %i_1 = OpVariable %_ptr_Function_int Function %21
+        %a_1 = OpVariable %_ptr_Function__arr_int_uint_10 Function %62
+      %param = OpVariable %_ptr_Function_int Function %21
+    %param_1 = OpVariable %_ptr_Function_int Function %21
+        %i_2 = OpVariable %_ptr_Function_int Function %21
+         %68 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Function_int %ref %69
+               OpStore %72 %71
+         %74 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_11
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Function_int %ref %75
+               OpStore %78 %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %82 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Function_int %ref %80
+               OpStore %84 %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %86 = OpLoad %int %85
+         %88 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Function_int %ref %86
+               OpStore %90 %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %92 = OpLoad %int %91
+         %94 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_5
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Function_int %ref %92
+               OpStore %96 %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Function_int %ref %98
+               OpStore %101 %100
+        %102 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_5
+        %103 = OpLoad %int %102
+        %105 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_7
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Function_int %ref %103
+               OpStore %107 %106
+        %109 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %112 = OpLoad %int %111
+        %113 = OpAccessChain %_ptr_Function_int %ref %110
+               OpStore %113 %112
+        %115 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_9
+        %116 = OpLoad %int %115
+        %117 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_9
+        %118 = OpLoad %int %117
+        %119 = OpAccessChain %_ptr_Function_int %ref %116
+               OpStore %119 %118
+        %121 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_10
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_10
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Function_int %ref %122
+               OpStore %125 %124
+        %126 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %127 = OpLoad %int %126
+               OpStore %i_1 %127
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %132 = OpLoad %int %i_1
+        %133 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %134 = OpLoad %int %133
+        %135 = OpSLessThan %bool %132 %134
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %138
+        %137 = OpLabel
+               OpBranch %136
+        %138 = OpLabel
+               OpBranch %129
+        %136 = OpLabel
+        %139 = OpLoad %int %i_1
+        %140 = OpLoad %int %i_1
+        %141 = OpAccessChain %_ptr_Function_int %a_1 %139
+               OpStore %141 %140
+        %142 = OpLoad %int %i_1
+        %143 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %144 = OpLoad %int %143
+        %145 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %146 = OpLoad %int %145
+        %147 = OpSDiv %int %144 %146
+        %148 = OpSLessThan %bool %142 %147
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %151
+        %150 = OpLabel
+        %152 = OpLoad %int %i_1
+        %153 = OpLoad %int %i_1
+        %154 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %155 = OpLoad %int %154
+        %156 = OpAccessChain %_ptr_Function_int %a_1 %152
+        %157 = OpIAdd %int %153 %155
+               OpStore %156 %157
+        %158 = OpLoad %int %i_1
+        %159 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %160 = OpLoad %int %159
+        %161 = OpSLessThan %bool %158 %160
+               OpSelectionMerge %162 None
+               OpBranchConditional %161 %163 %162
+        %163 = OpLabel
+               OpBranch %130
+        %162 = OpLabel
+        %164 = OpLoad %int %i_1
+        %165 = OpLoad %int %i_1
+        %166 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %167 = OpLoad %int %166
+        %168 = OpAccessChain %_ptr_Function_int %a_1 %164
+        %169 = OpIAdd %int %165 %167
+               OpStore %168 %169
+        %170 = OpLoad %int %i_1
+        %171 = OpAccessChain %_ptr_Function_int %a_1 %170
+        %172 = OpLoad %int %171
+               OpStore %param %172
+        %173 = OpFunctionCall %int %f_i1_ %param
+        %175 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %176 = OpLoad %int %175
+        %177 = OpSLessThan %bool %173 %176
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %178
+        %179 = OpLabel
+        %180 = OpLoad %int %i_1
+        %181 = OpAccessChain %_ptr_Function_int %a_1 %180
+        %182 = OpLoad %int %181
+        %183 = OpAccessChain %_ptr_Function_int %a_1 %180
+        %184 = OpISub %int %182 %int_1
+               OpStore %183 %184
+               OpBranch %178
+        %178 = OpLabel
+               OpBranch %149
+        %151 = OpLabel
+        %185 = OpLoad %int %i_1
+        %186 = OpAccessChain %_ptr_Function_int %a_1 %185
+        %187 = OpLoad %int %186
+               OpStore %param_1 %187
+        %188 = OpFunctionCall %int %f_i1_ %param_1
+        %190 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %191 = OpLoad %int %190
+        %192 = OpSLessThan %bool %188 %191
+               OpSelectionMerge %193 None
+               OpBranchConditional %192 %194 %193
+        %194 = OpLabel
+        %195 = OpLoad %int %i_1
+        %196 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+        %197 = OpLoad %int %196
+        %198 = OpAccessChain %_ptr_Function_int %a_1 %195
+        %199 = OpLoad %int %198
+        %200 = OpAccessChain %_ptr_Function_int %a_1 %195
+        %201 = OpIAdd %int %199 %197
+               OpStore %200 %201
+               OpBranch %193
+        %193 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+               OpBranch %130
+        %130 = OpLabel
+        %202 = OpLoad %int %i_1
+        %203 = OpIAdd %int %202 %int_1
+               OpStore %i_1 %203
+               OpBranch %128
+        %129 = OpLabel
+        %204 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %205 = OpLoad %int %204
+               OpStore %i_2 %205
+               OpBranch %206
+        %206 = OpLabel
+               OpLoopMerge %207 %208 None
+               OpBranch %209
+        %209 = OpLabel
+        %210 = OpLoad %int %i_2
+        %211 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %212 = OpLoad %int %211
+        %213 = OpSLessThan %bool %210 %212
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %207
+        %214 = OpLabel
+        %217 = OpLoad %int %i_2
+        %218 = OpAccessChain %_ptr_Function_int %a_1 %217
+        %219 = OpLoad %int %218
+        %220 = OpLoad %int %i_2
+        %221 = OpAccessChain %_ptr_Function_int %ref %220
+        %222 = OpLoad %int %221
+        %223 = OpINotEqual %bool %219 %222
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %224
+        %225 = OpLabel
+        %226 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %227 = OpLoad %int %226
+        %228 = OpConvertSToF %float %227
+        %229 = OpCompositeConstruct %v4float %228 %228 %228 %228
+               OpStore %x_GLF_color %229
+               OpReturn
+        %224 = OpLabel
+               OpBranch %208
+        %208 = OpLabel
+        %230 = OpLoad %int %i_2
+        %231 = OpIAdd %int %230 %int_1
+               OpStore %i_2 %231
+               OpBranch %206
+        %207 = OpLabel
+        %232 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_11
+        %233 = OpLoad %int %232
+        %234 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %235 = OpLoad %int %234
+        %236 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %237 = OpLoad %int %236
+        %238 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_11
+        %239 = OpLoad %int %238
+        %240 = OpConvertSToF %float %233
+        %241 = OpConvertSToF %float %235
+        %242 = OpConvertSToF %float %237
+        %243 = OpConvertSToF %float %239
+        %244 = OpCompositeConstruct %v4float %240 %241 %242 %243
+               OpStore %x_GLF_color %244
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %245
+%tint_symbol = OpFunctionParameter %main_out
+        %249 = OpLabel
+        %250 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %250
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %54
+        %252 = OpLabel
+        %253 = OpFunctionCall %void %main_1
+        %255 = OpLoad %v4float %x_GLF_color
+        %256 = OpCompositeConstruct %main_out %255
+        %254 = OpFunctionCall %void %tint_symbol_2 %256
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..37cab95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,177 @@
+type Arr = [[stride(16)]] array<i32, 12>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_i1_(a : ptr<function, i32>) -> i32 {
+  var i : i32;
+  let x_16 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i = x_16;
+  loop {
+    let x_17 : i32 = i;
+    let x_18 : i32 = x_8.x_GLF_uniform_int_values[6];
+    if ((x_17 < x_18)) {
+    } else {
+      break;
+    }
+    let x_19 : i32 = i;
+    let x_20 : i32 = x_8.x_GLF_uniform_int_values[2];
+    if ((x_19 > x_20)) {
+      let x_21 : i32 = *(a);
+      return x_21;
+    }
+
+    continuing {
+      let x_22 : i32 = i;
+      i = (x_22 + 1);
+    }
+  }
+  let x_24 : i32 = x_8.x_GLF_uniform_int_values[0];
+  return x_24;
+}
+
+fn main_1() {
+  var ref : array<i32, 10>;
+  var i_1 : i32;
+  var a_1 : array<i32, 10>;
+  var param : i32;
+  var param_1 : i32;
+  var i_2 : i32;
+  let x_25 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_26 : i32 = x_8.x_GLF_uniform_int_values[1];
+  ref[x_25] = x_26;
+  let x_27 : i32 = x_8.x_GLF_uniform_int_values[11];
+  let x_28 : i32 = x_8.x_GLF_uniform_int_values[2];
+  ref[x_27] = x_28;
+  let x_29 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_30 : i32 = x_8.x_GLF_uniform_int_values[3];
+  ref[x_29] = x_30;
+  let x_31 : i32 = x_8.x_GLF_uniform_int_values[2];
+  let x_32 : i32 = x_8.x_GLF_uniform_int_values[4];
+  ref[x_31] = x_32;
+  let x_33 : i32 = x_8.x_GLF_uniform_int_values[3];
+  let x_34 : i32 = x_8.x_GLF_uniform_int_values[5];
+  ref[x_33] = x_34;
+  let x_35 : i32 = x_8.x_GLF_uniform_int_values[4];
+  let x_36 : i32 = x_8.x_GLF_uniform_int_values[6];
+  ref[x_35] = x_36;
+  let x_37 : i32 = x_8.x_GLF_uniform_int_values[5];
+  let x_38 : i32 = x_8.x_GLF_uniform_int_values[7];
+  ref[x_37] = x_38;
+  let x_39 : i32 = x_8.x_GLF_uniform_int_values[8];
+  let x_40 : i32 = x_8.x_GLF_uniform_int_values[8];
+  ref[x_39] = x_40;
+  let x_41 : i32 = x_8.x_GLF_uniform_int_values[9];
+  let x_42 : i32 = x_8.x_GLF_uniform_int_values[9];
+  ref[x_41] = x_42;
+  let x_43 : i32 = x_8.x_GLF_uniform_int_values[10];
+  let x_44 : i32 = x_8.x_GLF_uniform_int_values[10];
+  ref[x_43] = x_44;
+  let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i_1 = x_45;
+  loop {
+    let x_46 : i32 = i_1;
+    let x_47 : i32 = x_8.x_GLF_uniform_int_values[6];
+    if ((x_46 < x_47)) {
+    } else {
+      break;
+    }
+    let x_48 : i32 = i_1;
+    let x_49 : i32 = i_1;
+    a_1[x_48] = x_49;
+    let x_50 : i32 = i_1;
+    let x_51 : i32 = x_8.x_GLF_uniform_int_values[6];
+    let x_52 : i32 = x_8.x_GLF_uniform_int_values[1];
+    if ((x_50 < (x_51 / x_52))) {
+      let x_54 : i32 = i_1;
+      let x_55 : i32 = i_1;
+      let x_56 : i32 = x_8.x_GLF_uniform_int_values[1];
+      a_1[x_54] = (x_55 + x_56);
+      let x_58 : i32 = i_1;
+      let x_59 : i32 = x_8.x_GLF_uniform_int_values[6];
+      if ((x_58 < x_59)) {
+        continue;
+      }
+      let x_60 : i32 = i_1;
+      let x_61 : i32 = i_1;
+      let x_62 : i32 = x_8.x_GLF_uniform_int_values[8];
+      a_1[x_60] = (x_61 + x_62);
+      let x_64 : i32 = i_1;
+      let x_65 : i32 = a_1[x_64];
+      param = x_65;
+      let x_66 : i32 = f_i1_(&(param));
+      let x_67 : i32 = x_8.x_GLF_uniform_int_values[8];
+      if ((x_66 < x_67)) {
+        let x_68 : i32 = i_1;
+        let x_182 : ptr<function, i32> = &(a_1[x_68]);
+        let x_69 : i32 = *(x_182);
+        *(x_182) = (x_69 - 1);
+      }
+    } else {
+      let x_71 : i32 = i_1;
+      let x_72 : i32 = a_1[x_71];
+      param_1 = x_72;
+      let x_73 : i32 = f_i1_(&(param_1));
+      let x_74 : i32 = x_8.x_GLF_uniform_int_values[8];
+      if ((x_73 < x_74)) {
+        let x_75 : i32 = i_1;
+        let x_76 : i32 = x_8.x_GLF_uniform_int_values[4];
+        let x_77 : i32 = a_1[x_75];
+        a_1[x_75] = (x_77 + x_76);
+      }
+    }
+
+    continuing {
+      let x_79 : i32 = i_1;
+      i_1 = (x_79 + 1);
+    }
+  }
+  let x_81 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i_2 = x_81;
+  loop {
+    let x_82 : i32 = i_2;
+    let x_83 : i32 = x_8.x_GLF_uniform_int_values[6];
+    if ((x_82 < x_83)) {
+    } else {
+      break;
+    }
+    let x_84 : i32 = i_2;
+    let x_85 : i32 = a_1[x_84];
+    let x_86 : i32 = i_2;
+    let x_87 : i32 = ref[x_86];
+    if ((x_85 != x_87)) {
+      let x_88 : i32 = x_8.x_GLF_uniform_int_values[0];
+      let x_205 : f32 = f32(x_88);
+      x_GLF_color = vec4<f32>(x_205, x_205, x_205, x_205);
+      return;
+    }
+
+    continuing {
+      let x_89 : i32 = i_2;
+      i_2 = (x_89 + 1);
+    }
+  }
+  let x_91 : i32 = x_8.x_GLF_uniform_int_values[11];
+  let x_92 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_93 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_94 : i32 = x_8.x_GLF_uniform_int_values[11];
+  x_GLF_color = vec4<f32>(f32(x_91), f32(x_92), f32(x_93), f32(x_94));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
new file mode 100644
index 0000000..37cab95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
@@ -0,0 +1,177 @@
+type Arr = [[stride(16)]] array<i32, 12>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_i1_(a : ptr<function, i32>) -> i32 {
+  var i : i32;
+  let x_16 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i = x_16;
+  loop {
+    let x_17 : i32 = i;
+    let x_18 : i32 = x_8.x_GLF_uniform_int_values[6];
+    if ((x_17 < x_18)) {
+    } else {
+      break;
+    }
+    let x_19 : i32 = i;
+    let x_20 : i32 = x_8.x_GLF_uniform_int_values[2];
+    if ((x_19 > x_20)) {
+      let x_21 : i32 = *(a);
+      return x_21;
+    }
+
+    continuing {
+      let x_22 : i32 = i;
+      i = (x_22 + 1);
+    }
+  }
+  let x_24 : i32 = x_8.x_GLF_uniform_int_values[0];
+  return x_24;
+}
+
+fn main_1() {
+  var ref : array<i32, 10>;
+  var i_1 : i32;
+  var a_1 : array<i32, 10>;
+  var param : i32;
+  var param_1 : i32;
+  var i_2 : i32;
+  let x_25 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_26 : i32 = x_8.x_GLF_uniform_int_values[1];
+  ref[x_25] = x_26;
+  let x_27 : i32 = x_8.x_GLF_uniform_int_values[11];
+  let x_28 : i32 = x_8.x_GLF_uniform_int_values[2];
+  ref[x_27] = x_28;
+  let x_29 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_30 : i32 = x_8.x_GLF_uniform_int_values[3];
+  ref[x_29] = x_30;
+  let x_31 : i32 = x_8.x_GLF_uniform_int_values[2];
+  let x_32 : i32 = x_8.x_GLF_uniform_int_values[4];
+  ref[x_31] = x_32;
+  let x_33 : i32 = x_8.x_GLF_uniform_int_values[3];
+  let x_34 : i32 = x_8.x_GLF_uniform_int_values[5];
+  ref[x_33] = x_34;
+  let x_35 : i32 = x_8.x_GLF_uniform_int_values[4];
+  let x_36 : i32 = x_8.x_GLF_uniform_int_values[6];
+  ref[x_35] = x_36;
+  let x_37 : i32 = x_8.x_GLF_uniform_int_values[5];
+  let x_38 : i32 = x_8.x_GLF_uniform_int_values[7];
+  ref[x_37] = x_38;
+  let x_39 : i32 = x_8.x_GLF_uniform_int_values[8];
+  let x_40 : i32 = x_8.x_GLF_uniform_int_values[8];
+  ref[x_39] = x_40;
+  let x_41 : i32 = x_8.x_GLF_uniform_int_values[9];
+  let x_42 : i32 = x_8.x_GLF_uniform_int_values[9];
+  ref[x_41] = x_42;
+  let x_43 : i32 = x_8.x_GLF_uniform_int_values[10];
+  let x_44 : i32 = x_8.x_GLF_uniform_int_values[10];
+  ref[x_43] = x_44;
+  let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i_1 = x_45;
+  loop {
+    let x_46 : i32 = i_1;
+    let x_47 : i32 = x_8.x_GLF_uniform_int_values[6];
+    if ((x_46 < x_47)) {
+    } else {
+      break;
+    }
+    let x_48 : i32 = i_1;
+    let x_49 : i32 = i_1;
+    a_1[x_48] = x_49;
+    let x_50 : i32 = i_1;
+    let x_51 : i32 = x_8.x_GLF_uniform_int_values[6];
+    let x_52 : i32 = x_8.x_GLF_uniform_int_values[1];
+    if ((x_50 < (x_51 / x_52))) {
+      let x_54 : i32 = i_1;
+      let x_55 : i32 = i_1;
+      let x_56 : i32 = x_8.x_GLF_uniform_int_values[1];
+      a_1[x_54] = (x_55 + x_56);
+      let x_58 : i32 = i_1;
+      let x_59 : i32 = x_8.x_GLF_uniform_int_values[6];
+      if ((x_58 < x_59)) {
+        continue;
+      }
+      let x_60 : i32 = i_1;
+      let x_61 : i32 = i_1;
+      let x_62 : i32 = x_8.x_GLF_uniform_int_values[8];
+      a_1[x_60] = (x_61 + x_62);
+      let x_64 : i32 = i_1;
+      let x_65 : i32 = a_1[x_64];
+      param = x_65;
+      let x_66 : i32 = f_i1_(&(param));
+      let x_67 : i32 = x_8.x_GLF_uniform_int_values[8];
+      if ((x_66 < x_67)) {
+        let x_68 : i32 = i_1;
+        let x_182 : ptr<function, i32> = &(a_1[x_68]);
+        let x_69 : i32 = *(x_182);
+        *(x_182) = (x_69 - 1);
+      }
+    } else {
+      let x_71 : i32 = i_1;
+      let x_72 : i32 = a_1[x_71];
+      param_1 = x_72;
+      let x_73 : i32 = f_i1_(&(param_1));
+      let x_74 : i32 = x_8.x_GLF_uniform_int_values[8];
+      if ((x_73 < x_74)) {
+        let x_75 : i32 = i_1;
+        let x_76 : i32 = x_8.x_GLF_uniform_int_values[4];
+        let x_77 : i32 = a_1[x_75];
+        a_1[x_75] = (x_77 + x_76);
+      }
+    }
+
+    continuing {
+      let x_79 : i32 = i_1;
+      i_1 = (x_79 + 1);
+    }
+  }
+  let x_81 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i_2 = x_81;
+  loop {
+    let x_82 : i32 = i_2;
+    let x_83 : i32 = x_8.x_GLF_uniform_int_values[6];
+    if ((x_82 < x_83)) {
+    } else {
+      break;
+    }
+    let x_84 : i32 = i_2;
+    let x_85 : i32 = a_1[x_84];
+    let x_86 : i32 = i_2;
+    let x_87 : i32 = ref[x_86];
+    if ((x_85 != x_87)) {
+      let x_88 : i32 = x_8.x_GLF_uniform_int_values[0];
+      let x_205 : f32 = f32(x_88);
+      x_GLF_color = vec4<f32>(x_205, x_205, x_205, x_205);
+      return;
+    }
+
+    continuing {
+      let x_89 : i32 = i_2;
+      i_2 = (x_89 + 1);
+    }
+  }
+  let x_91 : i32 = x_8.x_GLF_uniform_int_values[11];
+  let x_92 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_93 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_94 : i32 = x_8.x_GLF_uniform_int_values[11];
+  x_GLF_color = vec4<f32>(f32(x_91), f32(x_92), f32(x_93), f32(x_94));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d5ea2b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,172 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[12];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int f_i1_(inout int a) {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_16 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  i = x_16;
+  while (true) {
+    const int x_17 = i;
+    const int x_18 = asint(x_8[6].x);
+    if ((x_17 < x_18)) {
+    } else {
+      break;
+    }
+    const int x_19 = i;
+    const int x_20 = asint(x_8[2].x);
+    if ((x_19 > x_20)) {
+      const int x_21 = a;
+      return x_21;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_24 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  return x_24;
+}
+
+void main_1() {
+  int ref[10] = (int[10])0;
+  int i_1 = 0;
+  int a_1[10] = (int[10])0;
+  int param = 0;
+  int param_1 = 0;
+  int i_2 = 0;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_25 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_26 = asint(x_8[1].x);
+  ref[x_25] = x_26;
+  const int x_27 = asint(x_8[11].x);
+  const int x_28 = asint(x_8[2].x);
+  ref[x_27] = x_28;
+  const int x_29 = asint(x_8[1].x);
+  const int x_30 = asint(x_8[3].x);
+  ref[x_29] = x_30;
+  const int x_31 = asint(x_8[2].x);
+  const int x_32 = asint(x_8[4].x);
+  ref[x_31] = x_32;
+  const int x_33 = asint(x_8[3].x);
+  const int x_34 = asint(x_8[5].x);
+  ref[x_33] = x_34;
+  const int x_35 = asint(x_8[4].x);
+  const int x_36 = asint(x_8[6].x);
+  ref[x_35] = x_36;
+  const int x_37 = asint(x_8[5].x);
+  const int x_38 = asint(x_8[7].x);
+  ref[x_37] = x_38;
+  const int x_39 = asint(x_8[8].x);
+  const int x_40 = asint(x_8[8].x);
+  ref[x_39] = x_40;
+  const int x_41 = asint(x_8[9].x);
+  const int x_42 = asint(x_8[9].x);
+  ref[x_41] = x_42;
+  const int x_43 = asint(x_8[10].x);
+  const int x_44 = asint(x_8[10].x);
+  ref[x_43] = x_44;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  i_1 = x_45;
+  while (true) {
+    const int x_46 = i_1;
+    const int x_47 = asint(x_8[6].x);
+    if ((x_46 < x_47)) {
+    } else {
+      break;
+    }
+    a_1[i_1] = i_1;
+    const int x_50 = i_1;
+    const int x_51 = asint(x_8[6].x);
+    const int x_52 = asint(x_8[1].x);
+    if ((x_50 < (x_51 / x_52))) {
+      const int x_54 = i_1;
+      const int x_55 = i_1;
+      const int x_56 = asint(x_8[1].x);
+      a_1[x_54] = (x_55 + x_56);
+      const int x_58 = i_1;
+      const int x_59 = asint(x_8[6].x);
+      if ((x_58 < x_59)) {
+        {
+          i_1 = (i_1 + 1);
+        }
+        continue;
+      }
+      const int x_60 = i_1;
+      const int x_61 = i_1;
+      const int x_62 = asint(x_8[8].x);
+      a_1[x_60] = (x_61 + x_62);
+      const int x_65 = a_1[i_1];
+      param = x_65;
+      const int x_66 = f_i1_(param);
+      const int x_67 = asint(x_8[8].x);
+      if ((x_66 < x_67)) {
+        const int x_182_save = i_1;
+        const int x_69 = a_1[x_182_save];
+        a_1[x_182_save] = (x_69 - 1);
+      }
+    } else {
+      const int x_72 = a_1[i_1];
+      param_1 = x_72;
+      const int x_73 = f_i1_(param_1);
+      const int x_74 = asint(x_8[8].x);
+      if ((x_73 < x_74)) {
+        const int x_75 = i_1;
+        const int x_76 = asint(x_8[4].x);
+        const int x_77 = a_1[x_75];
+        a_1[x_75] = (x_77 + x_76);
+      }
+    }
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_81 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  i_2 = x_81;
+  while (true) {
+    const int x_82 = i_2;
+    const int x_83 = asint(x_8[6].x);
+    if ((x_82 < x_83)) {
+    } else {
+      break;
+    }
+    const int x_85 = a_1[i_2];
+    const int x_87 = ref[i_2];
+    if ((x_85 != x_87)) {
+      const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+      const int x_88 = asint(x_8[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+      const float x_205 = float(x_88);
+      x_GLF_color = float4(x_205, x_205, x_205, x_205);
+      return;
+    }
+    {
+      i_2 = (i_2 + 1);
+    }
+  }
+  const int x_91 = asint(x_8[11].x);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const int x_92 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const int x_93 = asint(x_8[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  const int x_94 = asint(x_8[11].x);
+  x_GLF_color = float4(float(x_91), float(x_92), float(x_93), float(x_94));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6399b00
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.msl
@@ -0,0 +1,188 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[12];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int f_i1_(constant buf0& x_8, thread int* const a) {
+  int i = 0;
+  int const x_16 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i = x_16;
+  while (true) {
+    int const x_17 = i;
+    int const x_18 = x_8.x_GLF_uniform_int_values.arr[6].el;
+    if ((x_17 < x_18)) {
+    } else {
+      break;
+    }
+    int const x_19 = i;
+    int const x_20 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_19 > x_20)) {
+      int const x_21 = *(a);
+      return x_21;
+    }
+    {
+      int const x_22 = i;
+      i = (x_22 + 1);
+    }
+  }
+  int const x_24 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  return x_24;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_1 ref = {};
+  int i_1 = 0;
+  tint_array_wrapper_1 a_1 = {};
+  int param = 0;
+  int param_1 = 0;
+  int i_2 = 0;
+  int const x_25 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_26 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_25] = x_26;
+  int const x_27 = x_8.x_GLF_uniform_int_values.arr[11].el;
+  int const x_28 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_27] = x_28;
+  int const x_29 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_30 = x_8.x_GLF_uniform_int_values.arr[3].el;
+  ref.arr[x_29] = x_30;
+  int const x_31 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  int const x_32 = x_8.x_GLF_uniform_int_values.arr[4].el;
+  ref.arr[x_31] = x_32;
+  int const x_33 = x_8.x_GLF_uniform_int_values.arr[3].el;
+  int const x_34 = x_8.x_GLF_uniform_int_values.arr[5].el;
+  ref.arr[x_33] = x_34;
+  int const x_35 = x_8.x_GLF_uniform_int_values.arr[4].el;
+  int const x_36 = x_8.x_GLF_uniform_int_values.arr[6].el;
+  ref.arr[x_35] = x_36;
+  int const x_37 = x_8.x_GLF_uniform_int_values.arr[5].el;
+  int const x_38 = x_8.x_GLF_uniform_int_values.arr[7].el;
+  ref.arr[x_37] = x_38;
+  int const x_39 = x_8.x_GLF_uniform_int_values.arr[8].el;
+  int const x_40 = x_8.x_GLF_uniform_int_values.arr[8].el;
+  ref.arr[x_39] = x_40;
+  int const x_41 = x_8.x_GLF_uniform_int_values.arr[9].el;
+  int const x_42 = x_8.x_GLF_uniform_int_values.arr[9].el;
+  ref.arr[x_41] = x_42;
+  int const x_43 = x_8.x_GLF_uniform_int_values.arr[10].el;
+  int const x_44 = x_8.x_GLF_uniform_int_values.arr[10].el;
+  ref.arr[x_43] = x_44;
+  int const x_45 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i_1 = x_45;
+  while (true) {
+    int const x_46 = i_1;
+    int const x_47 = x_8.x_GLF_uniform_int_values.arr[6].el;
+    if ((x_46 < x_47)) {
+    } else {
+      break;
+    }
+    int const x_48 = i_1;
+    int const x_49 = i_1;
+    a_1.arr[x_48] = x_49;
+    int const x_50 = i_1;
+    int const x_51 = x_8.x_GLF_uniform_int_values.arr[6].el;
+    int const x_52 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_50 < (x_51 / x_52))) {
+      int const x_54 = i_1;
+      int const x_55 = i_1;
+      int const x_56 = x_8.x_GLF_uniform_int_values.arr[1].el;
+      a_1.arr[x_54] = (x_55 + x_56);
+      int const x_58 = i_1;
+      int const x_59 = x_8.x_GLF_uniform_int_values.arr[6].el;
+      if ((x_58 < x_59)) {
+        {
+          int const x_79 = i_1;
+          i_1 = (x_79 + 1);
+        }
+        continue;
+      }
+      int const x_60 = i_1;
+      int const x_61 = i_1;
+      int const x_62 = x_8.x_GLF_uniform_int_values.arr[8].el;
+      a_1.arr[x_60] = (x_61 + x_62);
+      int const x_64 = i_1;
+      int const x_65 = a_1.arr[x_64];
+      param = x_65;
+      int const x_66 = f_i1_(x_8, &(param));
+      int const x_67 = x_8.x_GLF_uniform_int_values.arr[8].el;
+      if ((x_66 < x_67)) {
+        int const x_68 = i_1;
+        int const x_182_save = x_68;
+        int const x_69 = a_1.arr[x_182_save];
+        a_1.arr[x_182_save] = (x_69 - 1);
+      }
+    } else {
+      int const x_71 = i_1;
+      int const x_72 = a_1.arr[x_71];
+      param_1 = x_72;
+      int const x_73 = f_i1_(x_8, &(param_1));
+      int const x_74 = x_8.x_GLF_uniform_int_values.arr[8].el;
+      if ((x_73 < x_74)) {
+        int const x_75 = i_1;
+        int const x_76 = x_8.x_GLF_uniform_int_values.arr[4].el;
+        int const x_77 = a_1.arr[x_75];
+        a_1.arr[x_75] = (x_77 + x_76);
+      }
+    }
+    {
+      int const x_79 = i_1;
+      i_1 = (x_79 + 1);
+    }
+  }
+  int const x_81 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i_2 = x_81;
+  while (true) {
+    int const x_82 = i_2;
+    int const x_83 = x_8.x_GLF_uniform_int_values.arr[6].el;
+    if ((x_82 < x_83)) {
+    } else {
+      break;
+    }
+    int const x_84 = i_2;
+    int const x_85 = a_1.arr[x_84];
+    int const x_86 = i_2;
+    int const x_87 = ref.arr[x_86];
+    if ((x_85 != x_87)) {
+      int const x_88 = x_8.x_GLF_uniform_int_values.arr[0].el;
+      float const x_205 = float(x_88);
+      *(tint_symbol_4) = float4(x_205, x_205, x_205, x_205);
+      return;
+    }
+    {
+      int const x_89 = i_2;
+      i_2 = (x_89 + 1);
+    }
+  }
+  int const x_91 = x_8.x_GLF_uniform_int_values.arr[11].el;
+  int const x_92 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_93 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_94 = x_8.x_GLF_uniform_int_values.arr[11].el;
+  *(tint_symbol_4) = float4(float(x_91), float(x_92), float(x_93), float(x_94));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b54ea8d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,371 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 257
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %f_i1_ "f_i1_"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %ref "ref"
+               OpName %i_1 "i_1"
+               OpName %a_1 "a_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %i_2 "i_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_12 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_12 = OpConstant %uint 12
+%_arr_int_uint_12 = OpTypeArray %int %uint_12
+       %buf0 = OpTypeStruct %_arr_int_uint_12
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpTypeFunction %int %_ptr_Function_int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_6 = OpConstant %int 6
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %54 = OpTypeFunction %void
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %62 = OpConstantNull %_arr_int_uint_10
+     %int_11 = OpConstant %int 11
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+   %main_out = OpTypeStruct %v4float
+        %245 = OpTypeFunction %void %main_out
+      %f_i1_ = OpFunction %int None %15
+          %a = OpFunctionParameter %_ptr_Function_int
+         %19 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %26 = OpLoad %int %25
+               OpStore %i %26
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpLoad %int %i
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+         %34 = OpLoad %int %33
+         %35 = OpSLessThan %bool %31 %34
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %28
+         %37 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %43 = OpLoad %int %42
+         %44 = OpSGreaterThan %bool %40 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+         %48 = OpLoad %int %a
+               OpReturnValue %48
+         %45 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %i %51
+               OpBranch %27
+         %28 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %53 = OpLoad %int %52
+               OpReturnValue %53
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %54
+         %57 = OpLabel
+        %ref = OpVariable %_ptr_Function__arr_int_uint_10 Function %62
+        %i_1 = OpVariable %_ptr_Function_int Function %21
+        %a_1 = OpVariable %_ptr_Function__arr_int_uint_10 Function %62
+      %param = OpVariable %_ptr_Function_int Function %21
+    %param_1 = OpVariable %_ptr_Function_int Function %21
+        %i_2 = OpVariable %_ptr_Function_int Function %21
+         %68 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Function_int %ref %69
+               OpStore %72 %71
+         %74 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_11
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Function_int %ref %75
+               OpStore %78 %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %82 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Function_int %ref %80
+               OpStore %84 %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %86 = OpLoad %int %85
+         %88 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Function_int %ref %86
+               OpStore %90 %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %92 = OpLoad %int %91
+         %94 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_5
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Function_int %ref %92
+               OpStore %96 %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Function_int %ref %98
+               OpStore %101 %100
+        %102 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_5
+        %103 = OpLoad %int %102
+        %105 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_7
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Function_int %ref %103
+               OpStore %107 %106
+        %109 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %112 = OpLoad %int %111
+        %113 = OpAccessChain %_ptr_Function_int %ref %110
+               OpStore %113 %112
+        %115 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_9
+        %116 = OpLoad %int %115
+        %117 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_9
+        %118 = OpLoad %int %117
+        %119 = OpAccessChain %_ptr_Function_int %ref %116
+               OpStore %119 %118
+        %121 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_10
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_10
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Function_int %ref %122
+               OpStore %125 %124
+        %126 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %127 = OpLoad %int %126
+               OpStore %i_1 %127
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %132 = OpLoad %int %i_1
+        %133 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %134 = OpLoad %int %133
+        %135 = OpSLessThan %bool %132 %134
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %138
+        %137 = OpLabel
+               OpBranch %136
+        %138 = OpLabel
+               OpBranch %129
+        %136 = OpLabel
+        %139 = OpLoad %int %i_1
+        %140 = OpLoad %int %i_1
+        %141 = OpAccessChain %_ptr_Function_int %a_1 %139
+               OpStore %141 %140
+        %142 = OpLoad %int %i_1
+        %143 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %144 = OpLoad %int %143
+        %145 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %146 = OpLoad %int %145
+        %147 = OpSDiv %int %144 %146
+        %148 = OpSLessThan %bool %142 %147
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %151
+        %150 = OpLabel
+        %152 = OpLoad %int %i_1
+        %153 = OpLoad %int %i_1
+        %154 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %155 = OpLoad %int %154
+        %156 = OpAccessChain %_ptr_Function_int %a_1 %152
+        %157 = OpIAdd %int %153 %155
+               OpStore %156 %157
+        %158 = OpLoad %int %i_1
+        %159 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %160 = OpLoad %int %159
+        %161 = OpSLessThan %bool %158 %160
+               OpSelectionMerge %162 None
+               OpBranchConditional %161 %163 %162
+        %163 = OpLabel
+               OpBranch %130
+        %162 = OpLabel
+        %164 = OpLoad %int %i_1
+        %165 = OpLoad %int %i_1
+        %166 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %167 = OpLoad %int %166
+        %168 = OpAccessChain %_ptr_Function_int %a_1 %164
+        %169 = OpIAdd %int %165 %167
+               OpStore %168 %169
+        %170 = OpLoad %int %i_1
+        %171 = OpAccessChain %_ptr_Function_int %a_1 %170
+        %172 = OpLoad %int %171
+               OpStore %param %172
+        %173 = OpFunctionCall %int %f_i1_ %param
+        %175 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %176 = OpLoad %int %175
+        %177 = OpSLessThan %bool %173 %176
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %178
+        %179 = OpLabel
+        %180 = OpLoad %int %i_1
+        %181 = OpAccessChain %_ptr_Function_int %a_1 %180
+        %182 = OpLoad %int %181
+        %183 = OpAccessChain %_ptr_Function_int %a_1 %180
+        %184 = OpISub %int %182 %int_1
+               OpStore %183 %184
+               OpBranch %178
+        %178 = OpLabel
+               OpBranch %149
+        %151 = OpLabel
+        %185 = OpLoad %int %i_1
+        %186 = OpAccessChain %_ptr_Function_int %a_1 %185
+        %187 = OpLoad %int %186
+               OpStore %param_1 %187
+        %188 = OpFunctionCall %int %f_i1_ %param_1
+        %190 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_8
+        %191 = OpLoad %int %190
+        %192 = OpSLessThan %bool %188 %191
+               OpSelectionMerge %193 None
+               OpBranchConditional %192 %194 %193
+        %194 = OpLabel
+        %195 = OpLoad %int %i_1
+        %196 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+        %197 = OpLoad %int %196
+        %198 = OpAccessChain %_ptr_Function_int %a_1 %195
+        %199 = OpLoad %int %198
+        %200 = OpAccessChain %_ptr_Function_int %a_1 %195
+        %201 = OpIAdd %int %199 %197
+               OpStore %200 %201
+               OpBranch %193
+        %193 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+               OpBranch %130
+        %130 = OpLabel
+        %202 = OpLoad %int %i_1
+        %203 = OpIAdd %int %202 %int_1
+               OpStore %i_1 %203
+               OpBranch %128
+        %129 = OpLabel
+        %204 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %205 = OpLoad %int %204
+               OpStore %i_2 %205
+               OpBranch %206
+        %206 = OpLabel
+               OpLoopMerge %207 %208 None
+               OpBranch %209
+        %209 = OpLabel
+        %210 = OpLoad %int %i_2
+        %211 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_6
+        %212 = OpLoad %int %211
+        %213 = OpSLessThan %bool %210 %212
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %207
+        %214 = OpLabel
+        %217 = OpLoad %int %i_2
+        %218 = OpAccessChain %_ptr_Function_int %a_1 %217
+        %219 = OpLoad %int %218
+        %220 = OpLoad %int %i_2
+        %221 = OpAccessChain %_ptr_Function_int %ref %220
+        %222 = OpLoad %int %221
+        %223 = OpINotEqual %bool %219 %222
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %224
+        %225 = OpLabel
+        %226 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %227 = OpLoad %int %226
+        %228 = OpConvertSToF %float %227
+        %229 = OpCompositeConstruct %v4float %228 %228 %228 %228
+               OpStore %x_GLF_color %229
+               OpReturn
+        %224 = OpLabel
+               OpBranch %208
+        %208 = OpLabel
+        %230 = OpLoad %int %i_2
+        %231 = OpIAdd %int %230 %int_1
+               OpStore %i_2 %231
+               OpBranch %206
+        %207 = OpLabel
+        %232 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_11
+        %233 = OpLoad %int %232
+        %234 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %235 = OpLoad %int %234
+        %236 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %237 = OpLoad %int %236
+        %238 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_11
+        %239 = OpLoad %int %238
+        %240 = OpConvertSToF %float %233
+        %241 = OpConvertSToF %float %235
+        %242 = OpConvertSToF %float %237
+        %243 = OpConvertSToF %float %239
+        %244 = OpCompositeConstruct %v4float %240 %241 %242 %243
+               OpStore %x_GLF_color %244
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %245
+%tint_symbol = OpFunctionParameter %main_out
+        %249 = OpLabel
+        %250 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %250
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %54
+        %252 = OpLabel
+        %253 = OpFunctionCall %void %main_1
+        %255 = OpLoad %v4float %x_GLF_color
+        %256 = OpCompositeConstruct %main_out %255
+        %254 = OpFunctionCall %void %tint_symbol_2 %256
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..37cab95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,177 @@
+type Arr = [[stride(16)]] array<i32, 12>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_i1_(a : ptr<function, i32>) -> i32 {
+  var i : i32;
+  let x_16 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i = x_16;
+  loop {
+    let x_17 : i32 = i;
+    let x_18 : i32 = x_8.x_GLF_uniform_int_values[6];
+    if ((x_17 < x_18)) {
+    } else {
+      break;
+    }
+    let x_19 : i32 = i;
+    let x_20 : i32 = x_8.x_GLF_uniform_int_values[2];
+    if ((x_19 > x_20)) {
+      let x_21 : i32 = *(a);
+      return x_21;
+    }
+
+    continuing {
+      let x_22 : i32 = i;
+      i = (x_22 + 1);
+    }
+  }
+  let x_24 : i32 = x_8.x_GLF_uniform_int_values[0];
+  return x_24;
+}
+
+fn main_1() {
+  var ref : array<i32, 10>;
+  var i_1 : i32;
+  var a_1 : array<i32, 10>;
+  var param : i32;
+  var param_1 : i32;
+  var i_2 : i32;
+  let x_25 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_26 : i32 = x_8.x_GLF_uniform_int_values[1];
+  ref[x_25] = x_26;
+  let x_27 : i32 = x_8.x_GLF_uniform_int_values[11];
+  let x_28 : i32 = x_8.x_GLF_uniform_int_values[2];
+  ref[x_27] = x_28;
+  let x_29 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_30 : i32 = x_8.x_GLF_uniform_int_values[3];
+  ref[x_29] = x_30;
+  let x_31 : i32 = x_8.x_GLF_uniform_int_values[2];
+  let x_32 : i32 = x_8.x_GLF_uniform_int_values[4];
+  ref[x_31] = x_32;
+  let x_33 : i32 = x_8.x_GLF_uniform_int_values[3];
+  let x_34 : i32 = x_8.x_GLF_uniform_int_values[5];
+  ref[x_33] = x_34;
+  let x_35 : i32 = x_8.x_GLF_uniform_int_values[4];
+  let x_36 : i32 = x_8.x_GLF_uniform_int_values[6];
+  ref[x_35] = x_36;
+  let x_37 : i32 = x_8.x_GLF_uniform_int_values[5];
+  let x_38 : i32 = x_8.x_GLF_uniform_int_values[7];
+  ref[x_37] = x_38;
+  let x_39 : i32 = x_8.x_GLF_uniform_int_values[8];
+  let x_40 : i32 = x_8.x_GLF_uniform_int_values[8];
+  ref[x_39] = x_40;
+  let x_41 : i32 = x_8.x_GLF_uniform_int_values[9];
+  let x_42 : i32 = x_8.x_GLF_uniform_int_values[9];
+  ref[x_41] = x_42;
+  let x_43 : i32 = x_8.x_GLF_uniform_int_values[10];
+  let x_44 : i32 = x_8.x_GLF_uniform_int_values[10];
+  ref[x_43] = x_44;
+  let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i_1 = x_45;
+  loop {
+    let x_46 : i32 = i_1;
+    let x_47 : i32 = x_8.x_GLF_uniform_int_values[6];
+    if ((x_46 < x_47)) {
+    } else {
+      break;
+    }
+    let x_48 : i32 = i_1;
+    let x_49 : i32 = i_1;
+    a_1[x_48] = x_49;
+    let x_50 : i32 = i_1;
+    let x_51 : i32 = x_8.x_GLF_uniform_int_values[6];
+    let x_52 : i32 = x_8.x_GLF_uniform_int_values[1];
+    if ((x_50 < (x_51 / x_52))) {
+      let x_54 : i32 = i_1;
+      let x_55 : i32 = i_1;
+      let x_56 : i32 = x_8.x_GLF_uniform_int_values[1];
+      a_1[x_54] = (x_55 + x_56);
+      let x_58 : i32 = i_1;
+      let x_59 : i32 = x_8.x_GLF_uniform_int_values[6];
+      if ((x_58 < x_59)) {
+        continue;
+      }
+      let x_60 : i32 = i_1;
+      let x_61 : i32 = i_1;
+      let x_62 : i32 = x_8.x_GLF_uniform_int_values[8];
+      a_1[x_60] = (x_61 + x_62);
+      let x_64 : i32 = i_1;
+      let x_65 : i32 = a_1[x_64];
+      param = x_65;
+      let x_66 : i32 = f_i1_(&(param));
+      let x_67 : i32 = x_8.x_GLF_uniform_int_values[8];
+      if ((x_66 < x_67)) {
+        let x_68 : i32 = i_1;
+        let x_182 : ptr<function, i32> = &(a_1[x_68]);
+        let x_69 : i32 = *(x_182);
+        *(x_182) = (x_69 - 1);
+      }
+    } else {
+      let x_71 : i32 = i_1;
+      let x_72 : i32 = a_1[x_71];
+      param_1 = x_72;
+      let x_73 : i32 = f_i1_(&(param_1));
+      let x_74 : i32 = x_8.x_GLF_uniform_int_values[8];
+      if ((x_73 < x_74)) {
+        let x_75 : i32 = i_1;
+        let x_76 : i32 = x_8.x_GLF_uniform_int_values[4];
+        let x_77 : i32 = a_1[x_75];
+        a_1[x_75] = (x_77 + x_76);
+      }
+    }
+
+    continuing {
+      let x_79 : i32 = i_1;
+      i_1 = (x_79 + 1);
+    }
+  }
+  let x_81 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i_2 = x_81;
+  loop {
+    let x_82 : i32 = i_2;
+    let x_83 : i32 = x_8.x_GLF_uniform_int_values[6];
+    if ((x_82 < x_83)) {
+    } else {
+      break;
+    }
+    let x_84 : i32 = i_2;
+    let x_85 : i32 = a_1[x_84];
+    let x_86 : i32 = i_2;
+    let x_87 : i32 = ref[x_86];
+    if ((x_85 != x_87)) {
+      let x_88 : i32 = x_8.x_GLF_uniform_int_values[0];
+      let x_205 : f32 = f32(x_88);
+      x_GLF_color = vec4<f32>(x_205, x_205, x_205, x_205);
+      return;
+    }
+
+    continuing {
+      let x_89 : i32 = i_2;
+      i_2 = (x_89 + 1);
+    }
+  }
+  let x_91 : i32 = x_8.x_GLF_uniform_int_values[11];
+  let x_92 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_93 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_94 : i32 = x_8.x_GLF_uniform_int_values[11];
+  x_GLF_color = vec4<f32>(f32(x_91), f32(x_92), f32(x_93), f32(x_94));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm
new file mode 100644
index 0000000..7349452
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm
@@ -0,0 +1,93 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0x1_8p_128 = OpConstant %float 0x1.8p+128
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_float = OpTypePointer Output %float
+       %main = OpFunction %void None %16
+         %34 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %10 = OpLoad %int %35
+         %36 = OpConvertSToF %float %10
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %11 = OpLoad %int %37
+         %38 = OpConvertSToF %float %11
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %12 = OpLoad %int %39
+         %40 = OpConvertSToF %float %12
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %13 = OpLoad %int %41
+         %42 = OpConvertSToF %float %13
+         %43 = OpCompositeConstruct %v4float %36 %38 %40 %42
+               OpStore %_GLF_color %43
+         %44 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %45 = OpLoad %float %44
+         %46 = OpFMod %float %45 %float_0x1_8p_128
+               OpStore %a %46
+         %47 = OpLoad %float %a
+         %48 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %49 = OpLoad %float %48
+         %50 = OpFOrdNotEqual %bool %47 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %54 = OpLoad %float %53
+         %55 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_1
+               OpStore %55 %54
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..67f50ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  float a = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_10 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_11 = asint(x_5[1].x);
+  const int x_12 = asint(x_5[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_13 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_10), float(x_11), float(x_12), float(x_13));
+  const float x_45 = asfloat(x_8[1].x);
+  a = (x_45 % asfloat(0x7fc00000u));
+  const float x_47 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_49 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_47 != x_49)) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_54 = asfloat(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color.y = x_54;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.msl
new file mode 100755
index 0000000..c3188c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  int const x_10 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_11 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_12 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_13 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_10), float(x_11), float(x_12), float(x_13));
+  float const x_45 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  a = (x_45 % NAN);
+  float const x_47 = a;
+  float const x_49 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_47 != x_49)) {
+    float const x_54 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    (*(tint_symbol_4)).y = x_54;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\ubcg.0.metal:39:13: error: invalid operands to binary expression ('const float' and 'float')
+  a = (x_45 % NAN);
+       ~~~~ ^ ~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4c857a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,122 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0x1_8p_128 = OpConstant %float 0x1.8p+128
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %25
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %34 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpConvertSToF %float %30
+         %39 = OpConvertSToF %float %33
+         %40 = OpConvertSToF %float %35
+         %41 = OpConvertSToF %float %37
+         %42 = OpCompositeConstruct %v4float %38 %39 %40 %41
+               OpStore %x_GLF_color %42
+         %44 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %45 = OpLoad %float %44
+         %47 = OpFMod %float %45 %float_0x1_8p_128
+               OpStore %a %47
+         %48 = OpLoad %float %a
+         %49 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpFOrdNotEqual %bool %48 %50
+               OpSelectionMerge %53 None
+               OpBranchConditional %51 %54 %53
+         %54 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %56 = OpLoad %float %55
+         %59 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %59 %56
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b317f98
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,48 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_10 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_11 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_12 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_13 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_10), f32(x_11), f32(x_12), f32(x_13));
+  let x_45 : f32 = x_8.x_GLF_uniform_float_values[1];
+  a = (x_45 % 0x1.8p+128);
+  let x_47 : f32 = a;
+  let x_49 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_47 != x_49)) {
+    let x_54 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color.y = x_54;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
new file mode 100644
index 0000000..b317f98
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
@@ -0,0 +1,48 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_10 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_11 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_12 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_13 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_10), f32(x_11), f32(x_12), f32(x_13));
+  let x_45 : f32 = x_8.x_GLF_uniform_float_values[1];
+  a = (x_45 % 0x1.8p+128);
+  let x_47 : f32 = a;
+  let x_49 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_47 != x_49)) {
+    let x_54 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color.y = x_54;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d8c4e9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl:29:18 error: expected ')'
+  a = (x_45 % 0x1.8p+128);
+                 ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d8c4e9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.msl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl:29:18 error: expected ')'
+  a = (x_45 % 0x1.8p+128);
+                 ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d8c4e9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl:29:18 error: expected ')'
+  a = (x_45 % 0x1.8p+128);
+                 ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d8c4e9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl:29:18 error: expected ')'
+  a = (x_45 % 0x1.8p+128);
+                 ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm
new file mode 100644
index 0000000..4be551c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm
@@ -0,0 +1,93 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+%float_n0x1_8p_128 = OpConstant %float -0x1.8p+128
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_float = OpTypePointer Output %float
+       %main = OpFunction %void None %16
+         %34 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %10 = OpLoad %int %35
+         %36 = OpConvertSToF %float %10
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %11 = OpLoad %int %37
+         %38 = OpConvertSToF %float %11
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %12 = OpLoad %int %39
+         %40 = OpConvertSToF %float %12
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %13 = OpLoad %int %41
+         %42 = OpConvertSToF %float %13
+         %43 = OpCompositeConstruct %v4float %36 %38 %40 %42
+               OpStore %_GLF_color %43
+         %44 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %45 = OpLoad %float %44
+         %46 = OpFMod %float %float_n0x1_8p_128 %45
+               OpStore %a %46
+         %47 = OpLoad %float %a
+         %48 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %49 = OpLoad %float %48
+         %50 = OpFOrdNotEqual %bool %47 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %54 = OpLoad %float %53
+         %55 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_1
+               OpStore %55 %54
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..420ed9d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  float a = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_10 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_11 = asint(x_5[1].x);
+  const int x_12 = asint(x_5[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_13 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_10), float(x_11), float(x_12), float(x_13));
+  const float x_45 = asfloat(x_8[1].x);
+  a = (asfloat(0x7fc00000u) % x_45);
+  const float x_47 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_49 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_47 != x_49)) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_54 = asfloat(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color.y = x_54;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.msl
new file mode 100755
index 0000000..915b6d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.msl
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  int const x_10 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_11 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_12 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_13 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_10), float(x_11), float(x_12), float(x_13));
+  float const x_45 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  a = (NAN % x_45);
+  float const x_47 = a;
+  float const x_49 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_47 != x_49)) {
+    float const x_54 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    (*(tint_symbol_4)).y = x_54;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\uc6w.0.metal:39:12: error: invalid operands to binary expression ('float' and 'const float')
+  a = (NAN % x_45);
+       ~~~ ^ ~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e69f89a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,122 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_n0x1_8p_128 = OpConstant %float -0x1.8p+128
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %25
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %34 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpConvertSToF %float %30
+         %39 = OpConvertSToF %float %33
+         %40 = OpConvertSToF %float %35
+         %41 = OpConvertSToF %float %37
+         %42 = OpCompositeConstruct %v4float %38 %39 %40 %41
+               OpStore %x_GLF_color %42
+         %44 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %45 = OpLoad %float %44
+         %47 = OpFMod %float %float_n0x1_8p_128 %45
+               OpStore %a %47
+         %48 = OpLoad %float %a
+         %49 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpFOrdNotEqual %bool %48 %50
+               OpSelectionMerge %53 None
+               OpBranchConditional %51 %54 %53
+         %54 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %56 = OpLoad %float %55
+         %59 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %59 %56
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..bf323a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,48 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_10 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_11 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_12 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_13 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_10), f32(x_11), f32(x_12), f32(x_13));
+  let x_45 : f32 = x_8.x_GLF_uniform_float_values[1];
+  a = (-0x1.8p+128 % x_45);
+  let x_47 : f32 = a;
+  let x_49 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_47 != x_49)) {
+    let x_54 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color.y = x_54;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
new file mode 100644
index 0000000..bf323a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
@@ -0,0 +1,48 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_10 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_11 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_12 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_13 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_10), f32(x_11), f32(x_12), f32(x_13));
+  let x_45 : f32 = x_8.x_GLF_uniform_float_values[1];
+  a = (-0x1.8p+128 % x_45);
+  let x_47 : f32 = a;
+  let x_49 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_47 != x_49)) {
+    let x_54 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color.y = x_54;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4302ba9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl:29:12 error: expected ')'
+  a = (-0x1.8p+128 % x_45);
+           ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4302ba9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.msl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl:29:12 error: expected ')'
+  a = (-0x1.8p+128 % x_45);
+           ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4302ba9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl:29:12 error: expected ')'
+  a = (-0x1.8p+128 % x_45);
+           ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..4302ba9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl:29:12 error: expected ')'
+  a = (-0x1.8p+128 % x_45);
+           ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm
new file mode 100644
index 0000000..f4245f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm
@@ -0,0 +1,80 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 RelaxedPrecision
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %14
+         %29 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %31 = OpLoad %float %30
+         %32 = OpExtInst %float %1 Sqrt %31
+         %33 = OpFOrdLessThan %bool %32 %float_n1
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %36
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %10 = OpLoad %int %37
+         %38 = OpConvertSToF %float %10
+         %39 = OpCompositeConstruct %v4float %38 %38 %38 %38
+               OpStore %_GLF_color %39
+               OpBranch %34
+         %36 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %11 = OpLoad %int %40
+         %41 = OpConvertSToF %float %11
+         %42 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %12 = OpLoad %int %42
+         %43 = OpConvertSToF %float %12
+         %44 = OpCompositeConstruct %v4float %41 %43 %43 %41
+               OpStore %_GLF_color %44
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..633dded
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.hlsl
@@ -0,0 +1,39 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_31 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
+  if ((sqrt(x_31) < -1.0f)) {
+    const int x_10 = asint(x_7[1].x);
+    const float x_38 = float(x_10);
+    x_GLF_color = float4(x_38, x_38, x_38, x_38);
+  } else {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_11 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_41 = float(x_11);
+    const int x_12 = asint(x_7[1].x);
+    const float x_43 = float(x_12);
+    x_GLF_color = float4(x_41, x_43, x_43, x_41);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.msl
new file mode 100644
index 0000000..b7aac08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_7, thread float4* const tint_symbol_4) {
+  float const x_31 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  if ((sqrt(x_31) < -1.0f)) {
+    int const x_10 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_38 = float(x_10);
+    *(tint_symbol_4) = float4(x_38, x_38, x_38, x_38);
+  } else {
+    int const x_11 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_41 = float(x_11);
+    int const x_12 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_43 = float(x_12);
+    *(tint_symbol_4) = float4(x_41, x_43, x_43, x_41);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_7 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..c602080
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+         %29 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %26 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %27 = OpLoad %float %26
+         %28 = OpExtInst %float %29 Sqrt %27
+         %31 = OpFOrdLessThan %bool %28 %float_n1
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %35
+         %34 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpConvertSToF %float %39
+         %41 = OpCompositeConstruct %v4float %40 %40 %40 %40
+               OpStore %x_GLF_color %41
+               OpBranch %33
+         %35 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %44 %47 %47 %44
+               OpStore %x_GLF_color %48
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..0deb2a8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.spvasm.expected.wgsl
@@ -0,0 +1,46 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+fn main_1() {
+  let x_31 : f32 = x_5.x_GLF_uniform_float_values[0];
+  if ((sqrt(x_31) < -1.0)) {
+    let x_10 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_38 : f32 = f32(x_10);
+    x_GLF_color = vec4<f32>(x_38, x_38, x_38, x_38);
+  } else {
+    let x_11 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_41 : f32 = f32(x_11);
+    let x_12 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_43 : f32 = f32(x_12);
+    x_GLF_color = vec4<f32>(x_41, x_43, x_43, x_41);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
new file mode 100644
index 0000000..0deb2a8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
@@ -0,0 +1,46 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+fn main_1() {
+  let x_31 : f32 = x_5.x_GLF_uniform_float_values[0];
+  if ((sqrt(x_31) < -1.0)) {
+    let x_10 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_38 : f32 = f32(x_10);
+    x_GLF_color = vec4<f32>(x_38, x_38, x_38, x_38);
+  } else {
+    let x_11 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_41 : f32 = f32(x_11);
+    let x_12 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_43 : f32 = f32(x_12);
+    x_GLF_color = vec4<f32>(x_41, x_43, x_43, x_41);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..633dded
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.hlsl
@@ -0,0 +1,39 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_31 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
+  if ((sqrt(x_31) < -1.0f)) {
+    const int x_10 = asint(x_7[1].x);
+    const float x_38 = float(x_10);
+    x_GLF_color = float4(x_38, x_38, x_38, x_38);
+  } else {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_11 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_41 = float(x_11);
+    const int x_12 = asint(x_7[1].x);
+    const float x_43 = float(x_12);
+    x_GLF_color = float4(x_41, x_43, x_43, x_41);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.msl
new file mode 100644
index 0000000..b7aac08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_7, thread float4* const tint_symbol_4) {
+  float const x_31 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  if ((sqrt(x_31) < -1.0f)) {
+    int const x_10 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_38 = float(x_10);
+    *(tint_symbol_4) = float4(x_38, x_38, x_38, x_38);
+  } else {
+    int const x_11 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_41 = float(x_11);
+    int const x_12 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_43 = float(x_12);
+    *(tint_symbol_4) = float4(x_41, x_43, x_43, x_41);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_7 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..c602080
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+         %29 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %26 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %27 = OpLoad %float %26
+         %28 = OpExtInst %float %29 Sqrt %27
+         %31 = OpFOrdLessThan %bool %28 %float_n1
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %35
+         %34 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpConvertSToF %float %39
+         %41 = OpCompositeConstruct %v4float %40 %40 %40 %40
+               OpStore %x_GLF_color %41
+               OpBranch %33
+         %35 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %44 %47 %47 %44
+               OpStore %x_GLF_color %48
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..0deb2a8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl.expected.wgsl
@@ -0,0 +1,46 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+fn main_1() {
+  let x_31 : f32 = x_5.x_GLF_uniform_float_values[0];
+  if ((sqrt(x_31) < -1.0)) {
+    let x_10 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_38 : f32 = f32(x_10);
+    x_GLF_color = vec4<f32>(x_38, x_38, x_38, x_38);
+  } else {
+    let x_11 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_41 : f32 = f32(x_11);
+    let x_12 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_43 : f32 = f32(x_12);
+    x_GLF_color = vec4<f32>(x_41, x_43, x_43, x_41);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm
new file mode 100644
index 0000000..a7d1e76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm
@@ -0,0 +1,263 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_ "func(struct-S-i11;"
+               OpName %s "s"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %i_0 "i"
+               OpName %param "param"
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+         %21 = OpTypeFunction %void %_ptr_Function_S
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+     %uint_3 = OpConstant %uint 3
+%_arr_S_uint_3 = OpTypeArray %S %uint_3
+%_ptr_Function__arr_S_uint_3 = OpTypePointer Function %_arr_S_uint_3
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %18
+         %44 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+        %arr = OpVariable %_ptr_Function__arr_S_uint_3 Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_S Function
+          %j = OpVariable %_ptr_Function_int Function
+         %45 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %46 = OpLoad %int %45
+               OpStore %i %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpSLessThan %bool %51 %53
+               OpBranchConditional %54 %55 %48
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Function_int %arr %56 %int_0
+               OpStore %58 %57
+               OpBranch %49
+         %49 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %i %60
+               OpBranch %47
+         %48 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %62 = OpLoad %int %61
+               OpStore %i_0 %62
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpLoad %int %i_0
+         %68 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %67 %69
+               OpBranchConditional %70 %71 %64
+         %71 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %75 = OpLoad %float %74
+         %76 = OpFOrdGreaterThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+               OpBranch %64
+         %77 = OpLabel
+         %79 = OpLoad %int %i_0
+         %80 = OpAccessChain %_ptr_Function_int %arr %79 %int_0
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %83 = OpLoad %int %82
+         %84 = OpIEqual %bool %81 %83
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+         %88 = OpLoad %int %i_0
+         %89 = OpAccessChain %_ptr_Function_S %arr %88
+         %90 = OpLoad %S %89
+               OpStore %param %90
+         %91 = OpFunctionCall %void %func_struct_S_i11_ %param
+         %92 = OpLoad %S %param
+         %93 = OpAccessChain %_ptr_Function_S %arr %88
+               OpStore %93 %92
+               OpBranch %85
+         %87 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %95 = OpLoad %int %94
+               OpStore %j %95
+               OpBranch %96
+         %96 = OpLabel
+               OpLoopMerge %97 %98 None
+               OpBranch %99
+         %99 = OpLabel
+        %100 = OpLoad %int %j
+        %101 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %102 = OpLoad %int %101
+        %103 = OpSLessThan %bool %100 %102
+               OpBranchConditional %103 %104 %97
+        %104 = OpLabel
+        %105 = OpLoad %int %j
+        %106 = OpAccessChain %_ptr_Function_int %arr %105 %int_0
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_4
+        %109 = OpLoad %int %108
+        %110 = OpSGreaterThan %bool %107 %109
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %111
+        %112 = OpLabel
+               OpKill
+        %111 = OpLabel
+               OpBranch %98
+         %98 = OpLabel
+        %113 = OpLoad %int %j
+        %114 = OpIAdd %int %113 %int_1
+               OpStore %j %114
+               OpBranch %96
+         %97 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+        %115 = OpLoad %int %i_0
+        %116 = OpIAdd %int %115 %int_1
+               OpStore %i_0 %116
+               OpBranch %63
+         %64 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %118 = OpLoad %int %117
+        %119 = OpAccessChain %_ptr_Function_int %arr %118 %int_0
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %122 = OpLoad %int %121
+        %123 = OpIEqual %bool %120 %122
+               OpSelectionMerge %124 None
+               OpBranchConditional %123 %125 %124
+        %125 = OpLabel
+        %126 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %127 = OpLoad %int %126
+        %128 = OpAccessChain %_ptr_Function_int %arr %127 %int_0
+        %129 = OpLoad %int %128
+        %130 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %131 = OpLoad %int %130
+        %132 = OpIEqual %bool %129 %131
+               OpBranch %124
+        %124 = OpLabel
+        %133 = OpPhi %bool %123 %64 %132 %125
+               OpSelectionMerge %134 None
+               OpBranchConditional %133 %135 %134
+        %135 = OpLabel
+        %136 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Function_int %arr %137 %int_0
+        %139 = OpLoad %int %138
+        %140 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %141 = OpLoad %int %140
+        %142 = OpIEqual %bool %139 %141
+               OpBranch %134
+        %134 = OpLabel
+        %143 = OpPhi %bool %133 %124 %142 %135
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %148 = OpLoad %int %147
+        %149 = OpConvertSToF %float %148
+        %150 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %151 = OpLoad %int %150
+        %152 = OpConvertSToF %float %151
+        %153 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %154 = OpLoad %int %153
+        %155 = OpConvertSToF %float %154
+        %156 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %157 = OpLoad %int %156
+        %158 = OpConvertSToF %float %157
+        %159 = OpCompositeConstruct %v4float %149 %152 %155 %158
+               OpStore %_GLF_color %159
+               OpBranch %144
+        %146 = OpLabel
+        %160 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %161 = OpLoad %int %160
+        %162 = OpConvertSToF %float %161
+        %163 = OpCompositeConstruct %v4float %162 %162 %162 %162
+               OpStore %_GLF_color %163
+               OpBranch %144
+        %144 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_struct_S_i11_ = OpFunction %void None %21
+          %s = OpFunctionParameter %_ptr_Function_S
+        %164 = OpLabel
+        %165 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %166 = OpLoad %float %165
+        %167 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %168 = OpLoad %float %167
+        %169 = OpFOrdGreaterThan %bool %166 %168
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %170
+        %171 = OpLabel
+               OpReturn
+        %170 = OpLabel
+        %172 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %173 = OpLoad %int %172
+        %174 = OpAccessChain %_ptr_Function_int %s %int_0
+               OpStore %174 %173
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d405088
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,146 @@
+struct S {
+  int data;
+};
+
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_struct_S_i11_(inout S s) {
+  const float x_166 = asfloat(x_8[0].x);
+  const float x_168 = asfloat(x_8[0].y);
+  if ((x_166 > x_168)) {
+    return;
+  }
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_173 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+  s.data = x_173;
+  return;
+}
+
+void main_1() {
+  int i = 0;
+  S arr[3] = (S[3])0;
+  int i_1 = 0;
+  S param = (S)0;
+  int j = 0;
+  bool x_132 = false;
+  bool x_142 = false;
+  bool x_133_phi = false;
+  bool x_143_phi = false;
+  const int x_46 = asint(x_10[2].x);
+  i = x_46;
+  while (true) {
+    const int x_51 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_53 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    arr[i].data = i;
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_62 = asint(x_10[2].x);
+  i_1 = x_62;
+  while (true) {
+    const int x_67 = i_1;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_69 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    const float x_73 = asfloat(x_8[0].x);
+    const float x_75 = asfloat(x_8[0].y);
+    if ((x_73 > x_75)) {
+      break;
+    }
+    const int x_81 = arr[i_1].data;
+    const int x_83 = asint(x_10[3].x);
+    if ((x_81 == x_83)) {
+      const int x_88 = i_1;
+      const S x_90 = arr[x_88];
+      param = x_90;
+      func_struct_S_i11_(param);
+      arr[x_88] = param;
+    } else {
+      const int x_95 = asint(x_10[2].x);
+      j = x_95;
+      while (true) {
+        const int x_100 = j;
+        const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+        const int x_102 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+        if ((x_100 < x_102)) {
+        } else {
+          break;
+        }
+        const int x_107 = arr[j].data;
+        const int x_109 = asint(x_10[4].x);
+        if ((x_107 > x_109)) {
+          discard;
+        }
+        {
+          j = (j + 1);
+        }
+      }
+    }
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const int x_118 = asint(x_10[2].x);
+  const int x_120 = arr[x_118].data;
+  const int x_122 = asint(x_10[2].x);
+  const bool x_123 = (x_120 == x_122);
+  x_133_phi = x_123;
+  if (x_123) {
+    const int x_127 = asint(x_10[3].x);
+    const int x_129 = arr[x_127].data;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_131 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_132 = (x_129 == x_131);
+    x_133_phi = x_132;
+  }
+  const bool x_133 = x_133_phi;
+  x_143_phi = x_133;
+  if (x_133) {
+    const int x_137 = asint(x_10[1].x);
+    const int x_139 = arr[x_137].data;
+    const int x_141 = asint(x_10[1].x);
+    x_142 = (x_139 == x_141);
+    x_143_phi = x_142;
+  }
+  if (x_143_phi) {
+    const int x_148 = asint(x_10[3].x);
+    const int x_151 = asint(x_10[2].x);
+    const int x_154 = asint(x_10[2].x);
+    const int x_157 = asint(x_10[3].x);
+    x_GLF_color = float4(float(x_148), float(x_151), float(x_154), float(x_157));
+  } else {
+    const int x_161 = asint(x_10[2].x);
+    const float x_162 = float(x_161);
+    x_GLF_color = float4(x_162, x_162, x_162, x_162);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..df420d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.msl
@@ -0,0 +1,162 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int data;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 v1;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  S arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_struct_S_i11_(constant buf1& x_8, constant buf0& x_10, thread S* const s) {
+  float const x_166 = x_8.v1.x;
+  float const x_168 = x_8.v1.y;
+  if ((x_166 > x_168)) {
+    return;
+  }
+  int const x_173 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  (*(s)).data = x_173;
+  return;
+}
+
+void main_1(constant buf0& x_10, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 arr = {};
+  int i_1 = 0;
+  S param = {};
+  int j = 0;
+  bool x_132 = false;
+  bool x_142 = false;
+  bool x_133_phi = false;
+  bool x_143_phi = false;
+  int const x_46 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  i = x_46;
+  while (true) {
+    int const x_51 = i;
+    int const x_53 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    int const x_56 = i;
+    int const x_57 = i;
+    arr.arr[x_56].data = x_57;
+    {
+      int const x_59 = i;
+      i = (x_59 + 1);
+    }
+  }
+  int const x_62 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  i_1 = x_62;
+  while (true) {
+    int const x_67 = i_1;
+    int const x_69 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    float const x_73 = x_8.v1.x;
+    float const x_75 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    int const x_79 = i_1;
+    int const x_81 = arr.arr[x_79].data;
+    int const x_83 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_81 == x_83)) {
+      int const x_88 = i_1;
+      S const x_90 = arr.arr[x_88];
+      param = x_90;
+      func_struct_S_i11_(x_8, x_10, &(param));
+      S const x_92 = param;
+      arr.arr[x_88] = x_92;
+    } else {
+      int const x_95 = x_10.x_GLF_uniform_int_values.arr[2].el;
+      j = x_95;
+      while (true) {
+        int const x_100 = j;
+        int const x_102 = x_10.x_GLF_uniform_int_values.arr[0].el;
+        if ((x_100 < x_102)) {
+        } else {
+          break;
+        }
+        int const x_105 = j;
+        int const x_107 = arr.arr[x_105].data;
+        int const x_109 = x_10.x_GLF_uniform_int_values.arr[4].el;
+        if ((x_107 > x_109)) {
+          discard_fragment();
+        }
+        {
+          int const x_113 = j;
+          j = (x_113 + 1);
+        }
+      }
+    }
+    {
+      int const x_115 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  int const x_118 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  int const x_120 = arr.arr[x_118].data;
+  int const x_122 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  bool const x_123 = (x_120 == x_122);
+  x_133_phi = x_123;
+  if (x_123) {
+    int const x_127 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_129 = arr.arr[x_127].data;
+    int const x_131 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    x_132 = (x_129 == x_131);
+    x_133_phi = x_132;
+  }
+  bool const x_133 = x_133_phi;
+  x_143_phi = x_133;
+  if (x_133) {
+    int const x_137 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_139 = arr.arr[x_137].data;
+    int const x_141 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    x_142 = (x_139 == x_141);
+    x_143_phi = x_142;
+  }
+  bool const x_143 = x_143_phi;
+  if (x_143) {
+    int const x_148 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_151 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_154 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_157 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_148), float(x_151), float(x_154), float(x_157));
+  } else {
+    int const x_161 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_162 = float(x_161);
+    *(tint_symbol_4) = float4(x_162, x_162, x_162, x_162);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_10 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_10, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0e18564
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,333 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 208
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_ "func_struct_S_i11_"
+               OpName %s "s"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %i_1 "i_1"
+               OpName %param "param"
+               OpName %j "j"
+               OpName %x_132 "x_132"
+               OpName %x_142 "x_142"
+               OpName %x_133_phi "x_133_phi"
+               OpName %x_143_phi "x_143_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_S_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+         %19 = OpTypeFunction %void %_ptr_Function_S
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %44 = OpTypeFunction %void
+         %48 = OpConstantNull %int
+     %uint_3 = OpConstant %uint 3
+%_arr_S_uint_3 = OpTypeArray %S %uint_3
+%_ptr_Function__arr_S_uint_3 = OpTypePointer Function %_arr_S_uint_3
+         %53 = OpConstantNull %_arr_S_uint_3
+         %56 = OpConstantNull %S
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %60 = OpConstantNull %bool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %196 = OpTypeFunction %void %main_out
+%func_struct_S_i11_ = OpFunction %void None %19
+          %s = OpFunctionParameter %_ptr_Function_S
+         %25 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %29 = OpLoad %float %28
+         %31 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %29 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpReturn
+         %35 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %43 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %43 %40
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %44
+         %46 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %48
+        %arr = OpVariable %_ptr_Function__arr_S_uint_3 Function %53
+        %i_1 = OpVariable %_ptr_Function_int Function %48
+      %param = OpVariable %_ptr_Function_S Function %56
+          %j = OpVariable %_ptr_Function_int Function %48
+      %x_132 = OpVariable %_ptr_Function_bool Function %60
+      %x_142 = OpVariable %_ptr_Function_bool Function %60
+  %x_133_phi = OpVariable %_ptr_Function_bool Function %60
+  %x_143_phi = OpVariable %_ptr_Function_bool Function %60
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %66 = OpLoad %int %65
+               OpStore %i %66
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i
+         %72 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpSLessThan %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %68
+         %75 = OpLabel
+         %78 = OpLoad %int %i
+         %79 = OpLoad %int %i
+         %80 = OpAccessChain %_ptr_Function_int %arr %78 %uint_0
+               OpStore %80 %79
+               OpBranch %69
+         %69 = OpLabel
+         %81 = OpLoad %int %i
+         %83 = OpIAdd %int %81 %int_1
+               OpStore %i %83
+               OpBranch %67
+         %68 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %85 = OpLoad %int %84
+               OpStore %i_1 %85
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %90 = OpLoad %int %i_1
+         %91 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %92 = OpLoad %int %91
+         %93 = OpSLessThan %bool %90 %92
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %96
+         %95 = OpLabel
+               OpBranch %94
+         %96 = OpLabel
+               OpBranch %87
+         %94 = OpLabel
+         %97 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %98 = OpLoad %float %97
+         %99 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %100 = OpLoad %float %99
+        %101 = OpFOrdGreaterThan %bool %98 %100
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+               OpBranch %87
+        %102 = OpLabel
+        %104 = OpLoad %int %i_1
+        %105 = OpAccessChain %_ptr_Function_int %arr %104 %uint_0
+        %106 = OpLoad %int %105
+        %108 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %109 = OpLoad %int %108
+        %110 = OpIEqual %bool %106 %109
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %113
+        %112 = OpLabel
+        %114 = OpLoad %int %i_1
+        %115 = OpAccessChain %_ptr_Function_S %arr %114
+        %116 = OpLoad %S %115
+               OpStore %param %116
+        %117 = OpFunctionCall %void %func_struct_S_i11_ %param
+        %119 = OpLoad %S %param
+        %120 = OpAccessChain %_ptr_Function_S %arr %114
+               OpStore %120 %119
+               OpBranch %111
+        %113 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %122 = OpLoad %int %121
+               OpStore %j %122
+               OpBranch %123
+        %123 = OpLabel
+               OpLoopMerge %124 %125 None
+               OpBranch %126
+        %126 = OpLabel
+        %127 = OpLoad %int %j
+        %128 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %129 = OpLoad %int %128
+        %130 = OpSLessThan %bool %127 %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+               OpBranch %131
+        %133 = OpLabel
+               OpBranch %124
+        %131 = OpLabel
+        %134 = OpLoad %int %j
+        %135 = OpAccessChain %_ptr_Function_int %arr %134 %uint_0
+        %136 = OpLoad %int %135
+        %138 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_4
+        %139 = OpLoad %int %138
+        %140 = OpSGreaterThan %bool %136 %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+               OpKill
+        %141 = OpLabel
+               OpBranch %125
+        %125 = OpLabel
+        %143 = OpLoad %int %j
+        %144 = OpIAdd %int %143 %int_1
+               OpStore %j %144
+               OpBranch %123
+        %124 = OpLabel
+               OpBranch %111
+        %111 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+        %145 = OpLoad %int %i_1
+        %146 = OpIAdd %int %145 %int_1
+               OpStore %i_1 %146
+               OpBranch %86
+         %87 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %148 = OpLoad %int %147
+        %149 = OpAccessChain %_ptr_Function_int %arr %148 %uint_0
+        %150 = OpLoad %int %149
+        %151 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %152 = OpLoad %int %151
+        %153 = OpIEqual %bool %150 %152
+               OpStore %x_133_phi %153
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %154
+        %155 = OpLabel
+        %156 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %157 = OpLoad %int %156
+        %158 = OpAccessChain %_ptr_Function_int %arr %157 %uint_0
+        %159 = OpLoad %int %158
+        %160 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %161 = OpLoad %int %160
+        %162 = OpIEqual %bool %159 %161
+               OpStore %x_132 %162
+        %163 = OpLoad %bool %x_132
+               OpStore %x_133_phi %163
+               OpBranch %154
+        %154 = OpLabel
+        %164 = OpLoad %bool %x_133_phi
+               OpStore %x_143_phi %164
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %165
+        %166 = OpLabel
+        %167 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %168 = OpLoad %int %167
+        %169 = OpAccessChain %_ptr_Function_int %arr %168 %uint_0
+        %170 = OpLoad %int %169
+        %171 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %172 = OpLoad %int %171
+        %173 = OpIEqual %bool %170 %172
+               OpStore %x_142 %173
+        %174 = OpLoad %bool %x_142
+               OpStore %x_143_phi %174
+               OpBranch %165
+        %165 = OpLabel
+        %175 = OpLoad %bool %x_143_phi
+               OpSelectionMerge %176 None
+               OpBranchConditional %175 %177 %178
+        %177 = OpLabel
+        %179 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %180 = OpLoad %int %179
+        %181 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %182 = OpLoad %int %181
+        %183 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %184 = OpLoad %int %183
+        %185 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %186 = OpLoad %int %185
+        %187 = OpConvertSToF %float %180
+        %188 = OpConvertSToF %float %182
+        %189 = OpConvertSToF %float %184
+        %190 = OpConvertSToF %float %186
+        %191 = OpCompositeConstruct %v4float %187 %188 %189 %190
+               OpStore %x_GLF_color %191
+               OpBranch %176
+        %178 = OpLabel
+        %192 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %193 = OpLoad %int %192
+        %194 = OpConvertSToF %float %193
+        %195 = OpCompositeConstruct %v4float %194 %194 %194 %194
+               OpStore %x_GLF_color %195
+               OpBranch %176
+        %176 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %196
+%tint_symbol = OpFunctionParameter %main_out
+        %200 = OpLabel
+        %201 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %201
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %44
+        %203 = OpLabel
+        %204 = OpFunctionCall %void %main_1
+        %206 = OpLoad %v4float %x_GLF_color
+        %207 = OpCompositeConstruct %main_out %206
+        %205 = OpFunctionCall %void %tint_symbol_2 %207
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..dedf3c2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,160 @@
+struct S {
+  data : i32;
+};
+
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_(s : ptr<function, S>) {
+  let x_166 : f32 = x_8.v1.x;
+  let x_168 : f32 = x_8.v1.y;
+  if ((x_166 > x_168)) {
+    return;
+  }
+  let x_173 : i32 = x_10.x_GLF_uniform_int_values[0];
+  (*(s)).data = x_173;
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var arr : array<S, 3>;
+  var i_1 : i32;
+  var param : S;
+  var j : i32;
+  var x_132 : bool;
+  var x_142 : bool;
+  var x_133_phi : bool;
+  var x_143_phi : bool;
+  let x_46 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i = x_46;
+  loop {
+    let x_51 : i32 = i;
+    let x_53 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = i;
+    let x_57 : i32 = i;
+    arr[x_56].data = x_57;
+
+    continuing {
+      let x_59 : i32 = i;
+      i = (x_59 + 1);
+    }
+  }
+  let x_62 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i_1 = x_62;
+  loop {
+    let x_67 : i32 = i_1;
+    let x_69 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    let x_73 : f32 = x_8.v1.x;
+    let x_75 : f32 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    let x_79 : i32 = i_1;
+    let x_81 : i32 = arr[x_79].data;
+    let x_83 : i32 = x_10.x_GLF_uniform_int_values[3];
+    if ((x_81 == x_83)) {
+      let x_88 : i32 = i_1;
+      let x_90 : S = arr[x_88];
+      param = x_90;
+      func_struct_S_i11_(&(param));
+      let x_92 : S = param;
+      arr[x_88] = x_92;
+    } else {
+      let x_95 : i32 = x_10.x_GLF_uniform_int_values[2];
+      j = x_95;
+      loop {
+        let x_100 : i32 = j;
+        let x_102 : i32 = x_10.x_GLF_uniform_int_values[0];
+        if ((x_100 < x_102)) {
+        } else {
+          break;
+        }
+        let x_105 : i32 = j;
+        let x_107 : i32 = arr[x_105].data;
+        let x_109 : i32 = x_10.x_GLF_uniform_int_values[4];
+        if ((x_107 > x_109)) {
+          discard;
+        }
+
+        continuing {
+          let x_113 : i32 = j;
+          j = (x_113 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_115 : i32 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  let x_118 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_120 : i32 = arr[x_118].data;
+  let x_122 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_123 : bool = (x_120 == x_122);
+  x_133_phi = x_123;
+  if (x_123) {
+    let x_127 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_129 : i32 = arr[x_127].data;
+    let x_131 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_132 = (x_129 == x_131);
+    x_133_phi = x_132;
+  }
+  let x_133 : bool = x_133_phi;
+  x_143_phi = x_133;
+  if (x_133) {
+    let x_137 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_139 : i32 = arr[x_137].data;
+    let x_141 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_142 = (x_139 == x_141);
+    x_143_phi = x_142;
+  }
+  let x_143 : bool = x_143_phi;
+  if (x_143) {
+    let x_148 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_151 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_154 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_157 : i32 = x_10.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_148), f32(x_151), f32(x_154), f32(x_157));
+  } else {
+    let x_161 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_162 : f32 = f32(x_161);
+    x_GLF_color = vec4<f32>(x_162, x_162, x_162, x_162);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
new file mode 100644
index 0000000..dedf3c2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
@@ -0,0 +1,160 @@
+struct S {
+  data : i32;
+};
+
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_(s : ptr<function, S>) {
+  let x_166 : f32 = x_8.v1.x;
+  let x_168 : f32 = x_8.v1.y;
+  if ((x_166 > x_168)) {
+    return;
+  }
+  let x_173 : i32 = x_10.x_GLF_uniform_int_values[0];
+  (*(s)).data = x_173;
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var arr : array<S, 3>;
+  var i_1 : i32;
+  var param : S;
+  var j : i32;
+  var x_132 : bool;
+  var x_142 : bool;
+  var x_133_phi : bool;
+  var x_143_phi : bool;
+  let x_46 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i = x_46;
+  loop {
+    let x_51 : i32 = i;
+    let x_53 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = i;
+    let x_57 : i32 = i;
+    arr[x_56].data = x_57;
+
+    continuing {
+      let x_59 : i32 = i;
+      i = (x_59 + 1);
+    }
+  }
+  let x_62 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i_1 = x_62;
+  loop {
+    let x_67 : i32 = i_1;
+    let x_69 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    let x_73 : f32 = x_8.v1.x;
+    let x_75 : f32 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    let x_79 : i32 = i_1;
+    let x_81 : i32 = arr[x_79].data;
+    let x_83 : i32 = x_10.x_GLF_uniform_int_values[3];
+    if ((x_81 == x_83)) {
+      let x_88 : i32 = i_1;
+      let x_90 : S = arr[x_88];
+      param = x_90;
+      func_struct_S_i11_(&(param));
+      let x_92 : S = param;
+      arr[x_88] = x_92;
+    } else {
+      let x_95 : i32 = x_10.x_GLF_uniform_int_values[2];
+      j = x_95;
+      loop {
+        let x_100 : i32 = j;
+        let x_102 : i32 = x_10.x_GLF_uniform_int_values[0];
+        if ((x_100 < x_102)) {
+        } else {
+          break;
+        }
+        let x_105 : i32 = j;
+        let x_107 : i32 = arr[x_105].data;
+        let x_109 : i32 = x_10.x_GLF_uniform_int_values[4];
+        if ((x_107 > x_109)) {
+          discard;
+        }
+
+        continuing {
+          let x_113 : i32 = j;
+          j = (x_113 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_115 : i32 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  let x_118 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_120 : i32 = arr[x_118].data;
+  let x_122 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_123 : bool = (x_120 == x_122);
+  x_133_phi = x_123;
+  if (x_123) {
+    let x_127 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_129 : i32 = arr[x_127].data;
+    let x_131 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_132 = (x_129 == x_131);
+    x_133_phi = x_132;
+  }
+  let x_133 : bool = x_133_phi;
+  x_143_phi = x_133;
+  if (x_133) {
+    let x_137 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_139 : i32 = arr[x_137].data;
+    let x_141 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_142 = (x_139 == x_141);
+    x_143_phi = x_142;
+  }
+  let x_143 : bool = x_143_phi;
+  if (x_143) {
+    let x_148 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_151 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_154 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_157 : i32 = x_10.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_148), f32(x_151), f32(x_154), f32(x_157));
+  } else {
+    let x_161 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_162 : f32 = f32(x_161);
+    x_GLF_color = vec4<f32>(x_162, x_162, x_162, x_162);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d405088
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,146 @@
+struct S {
+  int data;
+};
+
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_struct_S_i11_(inout S s) {
+  const float x_166 = asfloat(x_8[0].x);
+  const float x_168 = asfloat(x_8[0].y);
+  if ((x_166 > x_168)) {
+    return;
+  }
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_173 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+  s.data = x_173;
+  return;
+}
+
+void main_1() {
+  int i = 0;
+  S arr[3] = (S[3])0;
+  int i_1 = 0;
+  S param = (S)0;
+  int j = 0;
+  bool x_132 = false;
+  bool x_142 = false;
+  bool x_133_phi = false;
+  bool x_143_phi = false;
+  const int x_46 = asint(x_10[2].x);
+  i = x_46;
+  while (true) {
+    const int x_51 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_53 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    arr[i].data = i;
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_62 = asint(x_10[2].x);
+  i_1 = x_62;
+  while (true) {
+    const int x_67 = i_1;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_69 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    const float x_73 = asfloat(x_8[0].x);
+    const float x_75 = asfloat(x_8[0].y);
+    if ((x_73 > x_75)) {
+      break;
+    }
+    const int x_81 = arr[i_1].data;
+    const int x_83 = asint(x_10[3].x);
+    if ((x_81 == x_83)) {
+      const int x_88 = i_1;
+      const S x_90 = arr[x_88];
+      param = x_90;
+      func_struct_S_i11_(param);
+      arr[x_88] = param;
+    } else {
+      const int x_95 = asint(x_10[2].x);
+      j = x_95;
+      while (true) {
+        const int x_100 = j;
+        const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+        const int x_102 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+        if ((x_100 < x_102)) {
+        } else {
+          break;
+        }
+        const int x_107 = arr[j].data;
+        const int x_109 = asint(x_10[4].x);
+        if ((x_107 > x_109)) {
+          discard;
+        }
+        {
+          j = (j + 1);
+        }
+      }
+    }
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const int x_118 = asint(x_10[2].x);
+  const int x_120 = arr[x_118].data;
+  const int x_122 = asint(x_10[2].x);
+  const bool x_123 = (x_120 == x_122);
+  x_133_phi = x_123;
+  if (x_123) {
+    const int x_127 = asint(x_10[3].x);
+    const int x_129 = arr[x_127].data;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_131 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_132 = (x_129 == x_131);
+    x_133_phi = x_132;
+  }
+  const bool x_133 = x_133_phi;
+  x_143_phi = x_133;
+  if (x_133) {
+    const int x_137 = asint(x_10[1].x);
+    const int x_139 = arr[x_137].data;
+    const int x_141 = asint(x_10[1].x);
+    x_142 = (x_139 == x_141);
+    x_143_phi = x_142;
+  }
+  if (x_143_phi) {
+    const int x_148 = asint(x_10[3].x);
+    const int x_151 = asint(x_10[2].x);
+    const int x_154 = asint(x_10[2].x);
+    const int x_157 = asint(x_10[3].x);
+    x_GLF_color = float4(float(x_148), float(x_151), float(x_154), float(x_157));
+  } else {
+    const int x_161 = asint(x_10[2].x);
+    const float x_162 = float(x_161);
+    x_GLF_color = float4(x_162, x_162, x_162, x_162);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..df420d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.msl
@@ -0,0 +1,162 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int data;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 v1;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  S arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_struct_S_i11_(constant buf1& x_8, constant buf0& x_10, thread S* const s) {
+  float const x_166 = x_8.v1.x;
+  float const x_168 = x_8.v1.y;
+  if ((x_166 > x_168)) {
+    return;
+  }
+  int const x_173 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  (*(s)).data = x_173;
+  return;
+}
+
+void main_1(constant buf0& x_10, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 arr = {};
+  int i_1 = 0;
+  S param = {};
+  int j = 0;
+  bool x_132 = false;
+  bool x_142 = false;
+  bool x_133_phi = false;
+  bool x_143_phi = false;
+  int const x_46 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  i = x_46;
+  while (true) {
+    int const x_51 = i;
+    int const x_53 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    int const x_56 = i;
+    int const x_57 = i;
+    arr.arr[x_56].data = x_57;
+    {
+      int const x_59 = i;
+      i = (x_59 + 1);
+    }
+  }
+  int const x_62 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  i_1 = x_62;
+  while (true) {
+    int const x_67 = i_1;
+    int const x_69 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    float const x_73 = x_8.v1.x;
+    float const x_75 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    int const x_79 = i_1;
+    int const x_81 = arr.arr[x_79].data;
+    int const x_83 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_81 == x_83)) {
+      int const x_88 = i_1;
+      S const x_90 = arr.arr[x_88];
+      param = x_90;
+      func_struct_S_i11_(x_8, x_10, &(param));
+      S const x_92 = param;
+      arr.arr[x_88] = x_92;
+    } else {
+      int const x_95 = x_10.x_GLF_uniform_int_values.arr[2].el;
+      j = x_95;
+      while (true) {
+        int const x_100 = j;
+        int const x_102 = x_10.x_GLF_uniform_int_values.arr[0].el;
+        if ((x_100 < x_102)) {
+        } else {
+          break;
+        }
+        int const x_105 = j;
+        int const x_107 = arr.arr[x_105].data;
+        int const x_109 = x_10.x_GLF_uniform_int_values.arr[4].el;
+        if ((x_107 > x_109)) {
+          discard_fragment();
+        }
+        {
+          int const x_113 = j;
+          j = (x_113 + 1);
+        }
+      }
+    }
+    {
+      int const x_115 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  int const x_118 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  int const x_120 = arr.arr[x_118].data;
+  int const x_122 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  bool const x_123 = (x_120 == x_122);
+  x_133_phi = x_123;
+  if (x_123) {
+    int const x_127 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_129 = arr.arr[x_127].data;
+    int const x_131 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    x_132 = (x_129 == x_131);
+    x_133_phi = x_132;
+  }
+  bool const x_133 = x_133_phi;
+  x_143_phi = x_133;
+  if (x_133) {
+    int const x_137 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_139 = arr.arr[x_137].data;
+    int const x_141 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    x_142 = (x_139 == x_141);
+    x_143_phi = x_142;
+  }
+  bool const x_143 = x_143_phi;
+  if (x_143) {
+    int const x_148 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_151 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_154 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_157 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_148), float(x_151), float(x_154), float(x_157));
+  } else {
+    int const x_161 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_162 = float(x_161);
+    *(tint_symbol_4) = float4(x_162, x_162, x_162, x_162);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_10 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_10, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0e18564
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,333 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 208
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_ "func_struct_S_i11_"
+               OpName %s "s"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %i_1 "i_1"
+               OpName %param "param"
+               OpName %j "j"
+               OpName %x_132 "x_132"
+               OpName %x_142 "x_142"
+               OpName %x_133_phi "x_133_phi"
+               OpName %x_143_phi "x_143_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_S_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+         %19 = OpTypeFunction %void %_ptr_Function_S
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %44 = OpTypeFunction %void
+         %48 = OpConstantNull %int
+     %uint_3 = OpConstant %uint 3
+%_arr_S_uint_3 = OpTypeArray %S %uint_3
+%_ptr_Function__arr_S_uint_3 = OpTypePointer Function %_arr_S_uint_3
+         %53 = OpConstantNull %_arr_S_uint_3
+         %56 = OpConstantNull %S
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %60 = OpConstantNull %bool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %196 = OpTypeFunction %void %main_out
+%func_struct_S_i11_ = OpFunction %void None %19
+          %s = OpFunctionParameter %_ptr_Function_S
+         %25 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %29 = OpLoad %float %28
+         %31 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %29 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpReturn
+         %35 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %43 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %43 %40
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %44
+         %46 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %48
+        %arr = OpVariable %_ptr_Function__arr_S_uint_3 Function %53
+        %i_1 = OpVariable %_ptr_Function_int Function %48
+      %param = OpVariable %_ptr_Function_S Function %56
+          %j = OpVariable %_ptr_Function_int Function %48
+      %x_132 = OpVariable %_ptr_Function_bool Function %60
+      %x_142 = OpVariable %_ptr_Function_bool Function %60
+  %x_133_phi = OpVariable %_ptr_Function_bool Function %60
+  %x_143_phi = OpVariable %_ptr_Function_bool Function %60
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %66 = OpLoad %int %65
+               OpStore %i %66
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i
+         %72 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpSLessThan %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %68
+         %75 = OpLabel
+         %78 = OpLoad %int %i
+         %79 = OpLoad %int %i
+         %80 = OpAccessChain %_ptr_Function_int %arr %78 %uint_0
+               OpStore %80 %79
+               OpBranch %69
+         %69 = OpLabel
+         %81 = OpLoad %int %i
+         %83 = OpIAdd %int %81 %int_1
+               OpStore %i %83
+               OpBranch %67
+         %68 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %85 = OpLoad %int %84
+               OpStore %i_1 %85
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %90 = OpLoad %int %i_1
+         %91 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %92 = OpLoad %int %91
+         %93 = OpSLessThan %bool %90 %92
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %96
+         %95 = OpLabel
+               OpBranch %94
+         %96 = OpLabel
+               OpBranch %87
+         %94 = OpLabel
+         %97 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %98 = OpLoad %float %97
+         %99 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %100 = OpLoad %float %99
+        %101 = OpFOrdGreaterThan %bool %98 %100
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+               OpBranch %87
+        %102 = OpLabel
+        %104 = OpLoad %int %i_1
+        %105 = OpAccessChain %_ptr_Function_int %arr %104 %uint_0
+        %106 = OpLoad %int %105
+        %108 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %109 = OpLoad %int %108
+        %110 = OpIEqual %bool %106 %109
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %113
+        %112 = OpLabel
+        %114 = OpLoad %int %i_1
+        %115 = OpAccessChain %_ptr_Function_S %arr %114
+        %116 = OpLoad %S %115
+               OpStore %param %116
+        %117 = OpFunctionCall %void %func_struct_S_i11_ %param
+        %119 = OpLoad %S %param
+        %120 = OpAccessChain %_ptr_Function_S %arr %114
+               OpStore %120 %119
+               OpBranch %111
+        %113 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %122 = OpLoad %int %121
+               OpStore %j %122
+               OpBranch %123
+        %123 = OpLabel
+               OpLoopMerge %124 %125 None
+               OpBranch %126
+        %126 = OpLabel
+        %127 = OpLoad %int %j
+        %128 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %129 = OpLoad %int %128
+        %130 = OpSLessThan %bool %127 %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+               OpBranch %131
+        %133 = OpLabel
+               OpBranch %124
+        %131 = OpLabel
+        %134 = OpLoad %int %j
+        %135 = OpAccessChain %_ptr_Function_int %arr %134 %uint_0
+        %136 = OpLoad %int %135
+        %138 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_4
+        %139 = OpLoad %int %138
+        %140 = OpSGreaterThan %bool %136 %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+               OpKill
+        %141 = OpLabel
+               OpBranch %125
+        %125 = OpLabel
+        %143 = OpLoad %int %j
+        %144 = OpIAdd %int %143 %int_1
+               OpStore %j %144
+               OpBranch %123
+        %124 = OpLabel
+               OpBranch %111
+        %111 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+        %145 = OpLoad %int %i_1
+        %146 = OpIAdd %int %145 %int_1
+               OpStore %i_1 %146
+               OpBranch %86
+         %87 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %148 = OpLoad %int %147
+        %149 = OpAccessChain %_ptr_Function_int %arr %148 %uint_0
+        %150 = OpLoad %int %149
+        %151 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %152 = OpLoad %int %151
+        %153 = OpIEqual %bool %150 %152
+               OpStore %x_133_phi %153
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %154
+        %155 = OpLabel
+        %156 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %157 = OpLoad %int %156
+        %158 = OpAccessChain %_ptr_Function_int %arr %157 %uint_0
+        %159 = OpLoad %int %158
+        %160 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %161 = OpLoad %int %160
+        %162 = OpIEqual %bool %159 %161
+               OpStore %x_132 %162
+        %163 = OpLoad %bool %x_132
+               OpStore %x_133_phi %163
+               OpBranch %154
+        %154 = OpLabel
+        %164 = OpLoad %bool %x_133_phi
+               OpStore %x_143_phi %164
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %165
+        %166 = OpLabel
+        %167 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %168 = OpLoad %int %167
+        %169 = OpAccessChain %_ptr_Function_int %arr %168 %uint_0
+        %170 = OpLoad %int %169
+        %171 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %172 = OpLoad %int %171
+        %173 = OpIEqual %bool %170 %172
+               OpStore %x_142 %173
+        %174 = OpLoad %bool %x_142
+               OpStore %x_143_phi %174
+               OpBranch %165
+        %165 = OpLabel
+        %175 = OpLoad %bool %x_143_phi
+               OpSelectionMerge %176 None
+               OpBranchConditional %175 %177 %178
+        %177 = OpLabel
+        %179 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %180 = OpLoad %int %179
+        %181 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %182 = OpLoad %int %181
+        %183 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %184 = OpLoad %int %183
+        %185 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %186 = OpLoad %int %185
+        %187 = OpConvertSToF %float %180
+        %188 = OpConvertSToF %float %182
+        %189 = OpConvertSToF %float %184
+        %190 = OpConvertSToF %float %186
+        %191 = OpCompositeConstruct %v4float %187 %188 %189 %190
+               OpStore %x_GLF_color %191
+               OpBranch %176
+        %178 = OpLabel
+        %192 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %193 = OpLoad %int %192
+        %194 = OpConvertSToF %float %193
+        %195 = OpCompositeConstruct %v4float %194 %194 %194 %194
+               OpStore %x_GLF_color %195
+               OpBranch %176
+        %176 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %196
+%tint_symbol = OpFunctionParameter %main_out
+        %200 = OpLabel
+        %201 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %201
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %44
+        %203 = OpLabel
+        %204 = OpFunctionCall %void %main_1
+        %206 = OpLoad %v4float %x_GLF_color
+        %207 = OpCompositeConstruct %main_out %206
+        %205 = OpFunctionCall %void %tint_symbol_2 %207
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..dedf3c2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,160 @@
+struct S {
+  data : i32;
+};
+
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_(s : ptr<function, S>) {
+  let x_166 : f32 = x_8.v1.x;
+  let x_168 : f32 = x_8.v1.y;
+  if ((x_166 > x_168)) {
+    return;
+  }
+  let x_173 : i32 = x_10.x_GLF_uniform_int_values[0];
+  (*(s)).data = x_173;
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var arr : array<S, 3>;
+  var i_1 : i32;
+  var param : S;
+  var j : i32;
+  var x_132 : bool;
+  var x_142 : bool;
+  var x_133_phi : bool;
+  var x_143_phi : bool;
+  let x_46 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i = x_46;
+  loop {
+    let x_51 : i32 = i;
+    let x_53 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = i;
+    let x_57 : i32 = i;
+    arr[x_56].data = x_57;
+
+    continuing {
+      let x_59 : i32 = i;
+      i = (x_59 + 1);
+    }
+  }
+  let x_62 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i_1 = x_62;
+  loop {
+    let x_67 : i32 = i_1;
+    let x_69 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    let x_73 : f32 = x_8.v1.x;
+    let x_75 : f32 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    let x_79 : i32 = i_1;
+    let x_81 : i32 = arr[x_79].data;
+    let x_83 : i32 = x_10.x_GLF_uniform_int_values[3];
+    if ((x_81 == x_83)) {
+      let x_88 : i32 = i_1;
+      let x_90 : S = arr[x_88];
+      param = x_90;
+      func_struct_S_i11_(&(param));
+      let x_92 : S = param;
+      arr[x_88] = x_92;
+    } else {
+      let x_95 : i32 = x_10.x_GLF_uniform_int_values[2];
+      j = x_95;
+      loop {
+        let x_100 : i32 = j;
+        let x_102 : i32 = x_10.x_GLF_uniform_int_values[0];
+        if ((x_100 < x_102)) {
+        } else {
+          break;
+        }
+        let x_105 : i32 = j;
+        let x_107 : i32 = arr[x_105].data;
+        let x_109 : i32 = x_10.x_GLF_uniform_int_values[4];
+        if ((x_107 > x_109)) {
+          discard;
+        }
+
+        continuing {
+          let x_113 : i32 = j;
+          j = (x_113 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_115 : i32 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  let x_118 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_120 : i32 = arr[x_118].data;
+  let x_122 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_123 : bool = (x_120 == x_122);
+  x_133_phi = x_123;
+  if (x_123) {
+    let x_127 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_129 : i32 = arr[x_127].data;
+    let x_131 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_132 = (x_129 == x_131);
+    x_133_phi = x_132;
+  }
+  let x_133 : bool = x_133_phi;
+  x_143_phi = x_133;
+  if (x_133) {
+    let x_137 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_139 : i32 = arr[x_137].data;
+    let x_141 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_142 = (x_139 == x_141);
+    x_143_phi = x_142;
+  }
+  let x_143 : bool = x_143_phi;
+  if (x_143) {
+    let x_148 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_151 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_154 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_157 : i32 = x_10.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_148), f32(x_151), f32(x_154), f32(x_157));
+  } else {
+    let x_161 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_162 : f32 = f32(x_161);
+    x_GLF_color = vec4<f32>(x_162, x_162, x_162, x_162);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm
new file mode 100644
index 0000000..a6196b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm
@@ -0,0 +1,103 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %main = OpFunction %void None %12
+         %27 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %28
+         %30 = OpConvertSToF %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %_GLF_color %31
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %33 = OpLoad %int %32
+               OpStore %i %33
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %38 %40
+               OpBranchConditional %41 %42 %35
+         %42 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %44 = OpLoad %float %43
+         %45 = OpLoad %int %i
+         %46 = OpConvertSToF %float %45
+         %47 = OpFOrdLessThanEqual %bool %44 %46
+         %48 = OpLogicalNot %bool %47
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %52 = OpLoad %float %51
+         %53 = OpLoad %int %i
+         %54 = OpConvertSToF %float %53
+         %55 = OpLoad %int %i
+         %56 = OpConvertSToF %float %55
+         %57 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpCompositeConstruct %v4float %52 %54 %56 %58
+         %60 = OpLoad %v4float %_GLF_color
+         %61 = OpFAdd %v4float %60 %59
+               OpStore %_GLF_color %61
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %i %63
+               OpBranch %34
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c4609c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,54 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b1, space0) {
+  uint4 x_5[2];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const float x_30 = float(x_29);
+  x_GLF_color = float4(x_30, x_30, x_30, x_30);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_33 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  i = x_33;
+  while (true) {
+    const int x_38 = i;
+    const int x_40 = asint(x_5[1].x);
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    const float x_44 = asfloat(x_8[1].x);
+    if (!((x_44 <= float(i)))) {
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const float x_52 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      const int x_53 = i;
+      const int x_55 = i;
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const float x_58 = asfloat(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      x_GLF_color = (x_GLF_color + float4(x_52, float(x_53), float(x_55), x_58));
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f3e2dd6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.msl
@@ -0,0 +1,70 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_5, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int const x_29 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  float const x_30 = float(x_29);
+  *(tint_symbol_4) = float4(x_30, x_30, x_30, x_30);
+  int const x_33 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  i = x_33;
+  while (true) {
+    int const x_38 = i;
+    int const x_40 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    float const x_44 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    int const x_45 = i;
+    if (!((x_44 <= float(x_45)))) {
+      float const x_52 = x_8.x_GLF_uniform_float_values.arr[0].el;
+      int const x_53 = i;
+      int const x_55 = i;
+      float const x_58 = x_8.x_GLF_uniform_float_values.arr[0].el;
+      float4 const x_60 = *(tint_symbol_4);
+      *(tint_symbol_4) = (x_60 + float4(x_52, float(x_53), float(x_55), x_58));
+    }
+    {
+      int const x_62 = i;
+      i = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_5 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4b3abcc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,142 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 82
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_5 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %70 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %25
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %31 = OpConvertSToF %float %30
+         %32 = OpCompositeConstruct %v4float %31 %31 %31 %31
+               OpStore %x_GLF_color %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %34 = OpLoad %int %33
+               OpStore %i %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpSLessThan %bool %39 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %36
+         %45 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpLoad %int %i
+         %53 = OpConvertSToF %float %51
+         %54 = OpFOrdLessThanEqual %bool %50 %53
+         %52 = OpLogicalNot %bool %54
+               OpSelectionMerge %55 None
+               OpBranchConditional %52 %56 %55
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpLoad %int %i
+         %60 = OpLoad %int %i
+         %61 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %62 = OpLoad %float %61
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpConvertSToF %float %59
+         %65 = OpConvertSToF %float %60
+         %66 = OpCompositeConstruct %v4float %58 %64 %65 %62
+         %67 = OpFAdd %v4float %63 %66
+               OpStore %x_GLF_color %67
+               OpBranch %55
+         %55 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %i %69
+               OpBranch %35
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %70
+%tint_symbol = OpFunctionParameter %main_out
+         %74 = OpLabel
+         %75 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %75
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %77 = OpLabel
+         %78 = OpFunctionCall %void %main_1
+         %80 = OpLoad %v4float %x_GLF_color
+         %81 = OpCompositeConstruct %main_out %80
+         %79 = OpFunctionCall %void %tint_symbol_2 %81
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5aa01a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var i : i32;
+  let x_29 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_30 : f32 = f32(x_29);
+  x_GLF_color = vec4<f32>(x_30, x_30, x_30, x_30);
+  let x_33 : i32 = x_5.x_GLF_uniform_int_values[0];
+  i = x_33;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_5.x_GLF_uniform_int_values[1];
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    let x_44 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_45 : i32 = i;
+    if (!((x_44 <= f32(x_45)))) {
+      let x_52 : f32 = x_8.x_GLF_uniform_float_values[0];
+      let x_53 : i32 = i;
+      let x_55 : i32 = i;
+      let x_58 : f32 = x_8.x_GLF_uniform_float_values[0];
+      let x_60 : vec4<f32> = x_GLF_color;
+      x_GLF_color = (x_60 + vec4<f32>(x_52, f32(x_53), f32(x_55), x_58));
+    }
+
+    continuing {
+      let x_62 : i32 = i;
+      i = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
new file mode 100644
index 0000000..5aa01a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var i : i32;
+  let x_29 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_30 : f32 = f32(x_29);
+  x_GLF_color = vec4<f32>(x_30, x_30, x_30, x_30);
+  let x_33 : i32 = x_5.x_GLF_uniform_int_values[0];
+  i = x_33;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_5.x_GLF_uniform_int_values[1];
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    let x_44 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_45 : i32 = i;
+    if (!((x_44 <= f32(x_45)))) {
+      let x_52 : f32 = x_8.x_GLF_uniform_float_values[0];
+      let x_53 : i32 = i;
+      let x_55 : i32 = i;
+      let x_58 : f32 = x_8.x_GLF_uniform_float_values[0];
+      let x_60 : vec4<f32> = x_GLF_color;
+      x_GLF_color = (x_60 + vec4<f32>(x_52, f32(x_53), f32(x_55), x_58));
+    }
+
+    continuing {
+      let x_62 : i32 = i;
+      i = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c4609c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,54 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b1, space0) {
+  uint4 x_5[2];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const float x_30 = float(x_29);
+  x_GLF_color = float4(x_30, x_30, x_30, x_30);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_33 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  i = x_33;
+  while (true) {
+    const int x_38 = i;
+    const int x_40 = asint(x_5[1].x);
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    const float x_44 = asfloat(x_8[1].x);
+    if (!((x_44 <= float(i)))) {
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const float x_52 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      const int x_53 = i;
+      const int x_55 = i;
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const float x_58 = asfloat(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      x_GLF_color = (x_GLF_color + float4(x_52, float(x_53), float(x_55), x_58));
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f3e2dd6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.msl
@@ -0,0 +1,70 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_5, constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int const x_29 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  float const x_30 = float(x_29);
+  *(tint_symbol_4) = float4(x_30, x_30, x_30, x_30);
+  int const x_33 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  i = x_33;
+  while (true) {
+    int const x_38 = i;
+    int const x_40 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    float const x_44 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    int const x_45 = i;
+    if (!((x_44 <= float(x_45)))) {
+      float const x_52 = x_8.x_GLF_uniform_float_values.arr[0].el;
+      int const x_53 = i;
+      int const x_55 = i;
+      float const x_58 = x_8.x_GLF_uniform_float_values.arr[0].el;
+      float4 const x_60 = *(tint_symbol_4);
+      *(tint_symbol_4) = (x_60 + float4(x_52, float(x_53), float(x_55), x_58));
+    }
+    {
+      int const x_62 = i;
+      i = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_5 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4b3abcc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,142 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 82
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_5 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+         %70 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %25
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %31 = OpConvertSToF %float %30
+         %32 = OpCompositeConstruct %v4float %31 %31 %31 %31
+               OpStore %x_GLF_color %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %34 = OpLoad %int %33
+               OpStore %i %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpSLessThan %bool %39 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %36
+         %45 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpLoad %int %i
+         %53 = OpConvertSToF %float %51
+         %54 = OpFOrdLessThanEqual %bool %50 %53
+         %52 = OpLogicalNot %bool %54
+               OpSelectionMerge %55 None
+               OpBranchConditional %52 %56 %55
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpLoad %int %i
+         %60 = OpLoad %int %i
+         %61 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %62 = OpLoad %float %61
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpConvertSToF %float %59
+         %65 = OpConvertSToF %float %60
+         %66 = OpCompositeConstruct %v4float %58 %64 %65 %62
+         %67 = OpFAdd %v4float %63 %66
+               OpStore %x_GLF_color %67
+               OpBranch %55
+         %55 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %i %69
+               OpBranch %35
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %70
+%tint_symbol = OpFunctionParameter %main_out
+         %74 = OpLabel
+         %75 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %75
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %77 = OpLabel
+         %78 = OpFunctionCall %void %main_1
+         %80 = OpLoad %v4float %x_GLF_color
+         %81 = OpCompositeConstruct %main_out %80
+         %79 = OpFunctionCall %void %tint_symbol_2 %81
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5aa01a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var i : i32;
+  let x_29 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_30 : f32 = f32(x_29);
+  x_GLF_color = vec4<f32>(x_30, x_30, x_30, x_30);
+  let x_33 : i32 = x_5.x_GLF_uniform_int_values[0];
+  i = x_33;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_5.x_GLF_uniform_int_values[1];
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    let x_44 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_45 : i32 = i;
+    if (!((x_44 <= f32(x_45)))) {
+      let x_52 : f32 = x_8.x_GLF_uniform_float_values[0];
+      let x_53 : i32 = i;
+      let x_55 : i32 = i;
+      let x_58 : f32 = x_8.x_GLF_uniform_float_values[0];
+      let x_60 : vec4<f32> = x_GLF_color;
+      x_GLF_color = (x_60 + vec4<f32>(x_52, f32(x_53), f32(x_55), x_58));
+    }
+
+    continuing {
+      let x_62 : i32 = i;
+      i = (x_62 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm
new file mode 100644
index 0000000..3d40235
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm
@@ -0,0 +1,84 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+  %int_63677 = OpConstant %int 63677
+      %v2int = OpTypeVector %int 2
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %9
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %27 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %28 = OpLoad %int %27
+               OpStore %a %28
+         %29 = OpLoad %int %a
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %31 = OpLoad %int %30
+         %32 = OpCompositeConstruct %v2int %31 %int_63677
+         %33 = OpCompositeConstruct %v2int %29 %29
+         %34 = OpSDiv %v2int %33 %32
+         %35 = OpCompositeExtract %int %34 1
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpIEqual %bool %35 %37
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %44 %47 %50 %53
+               OpStore %_GLF_color %54
+               OpBranch %39
+         %41 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpCompositeConstruct %v4float %57 %57 %57 %57
+               OpStore %_GLF_color %58
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..092451a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const int x_28 = asint(x_6[1].x);
+  a = x_28;
+  const int x_29 = a;
+  const int x_31 = asint(x_6[2].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_37 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if (((int2(x_29, x_29) / int2(x_31, 63677)).y == x_37)) {
+    const int x_43 = asint(x_6[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_52 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_43), float(x_46), float(x_49), float(x_52));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_57 = float(x_56);
+    x_GLF_color = float4(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d74fee4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_28;
+  int const x_29 = a;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((((int2(x_29, x_29) / int2(x_31, 63677))).y == x_37)) {
+    int const x_43 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_49 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_52 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_43), float(x_46), float(x_49), float(x_52));
+  } else {
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_57 = float(x_56);
+    *(tint_symbol_4) = float4(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b2ec6d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,116 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 74
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %v2int = OpTypeVector %int 2
+  %int_63677 = OpConstant %int 63677
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %62 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %26 = OpLoad %int %25
+               OpStore %a %26
+         %27 = OpLoad %int %a
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %33 = OpLoad %int %32
+         %35 = OpCompositeConstruct %v2int %27 %27
+         %37 = OpCompositeConstruct %v2int %30 %int_63677
+         %38 = OpSDiv %v2int %35 %37
+         %39 = OpCompositeExtract %int %38 1
+         %40 = OpIEqual %bool %39 %33
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %46
+         %54 = OpConvertSToF %float %48
+         %55 = OpConvertSToF %float %50
+         %56 = OpConvertSToF %float %52
+         %57 = OpCompositeConstruct %v4float %53 %54 %55 %56
+               OpStore %x_GLF_color %57
+               OpBranch %42
+         %44 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %60 %60 %60 %60
+               OpStore %x_GLF_color %61
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %62
+%tint_symbol = OpFunctionParameter %main_out
+         %66 = OpLabel
+         %67 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %67
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %69 = OpLabel
+         %70 = OpFunctionCall %void %main_1
+         %72 = OpLoad %v4float %x_GLF_color
+         %73 = OpCompositeConstruct %main_out %72
+         %71 = OpFunctionCall %void %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c5c24bf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_28;
+  let x_29 : i32 = a;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((((vec2<i32>(x_29, x_29) / vec2<i32>(x_31, 63677))).y == x_37)) {
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_43), f32(x_46), f32(x_49), f32(x_52));
+  } else {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_57 : f32 = f32(x_56);
+    x_GLF_color = vec4<f32>(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
new file mode 100644
index 0000000..c5c24bf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_28;
+  let x_29 : i32 = a;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((((vec2<i32>(x_29, x_29) / vec2<i32>(x_31, 63677))).y == x_37)) {
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_43), f32(x_46), f32(x_49), f32(x_52));
+  } else {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_57 : f32 = f32(x_56);
+    x_GLF_color = vec4<f32>(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..092451a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,43 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const int x_28 = asint(x_6[1].x);
+  a = x_28;
+  const int x_29 = a;
+  const int x_31 = asint(x_6[2].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_37 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if (((int2(x_29, x_29) / int2(x_31, 63677)).y == x_37)) {
+    const int x_43 = asint(x_6[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_52 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_43), float(x_46), float(x_49), float(x_52));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_57 = float(x_56);
+    x_GLF_color = float4(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d74fee4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_28;
+  int const x_29 = a;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((((int2(x_29, x_29) / int2(x_31, 63677))).y == x_37)) {
+    int const x_43 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_49 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_52 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_43), float(x_46), float(x_49), float(x_52));
+  } else {
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_57 = float(x_56);
+    *(tint_symbol_4) = float4(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b2ec6d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,116 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 74
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %v2int = OpTypeVector %int 2
+  %int_63677 = OpConstant %int 63677
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %62 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %26 = OpLoad %int %25
+               OpStore %a %26
+         %27 = OpLoad %int %a
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %33 = OpLoad %int %32
+         %35 = OpCompositeConstruct %v2int %27 %27
+         %37 = OpCompositeConstruct %v2int %30 %int_63677
+         %38 = OpSDiv %v2int %35 %37
+         %39 = OpCompositeExtract %int %38 1
+         %40 = OpIEqual %bool %39 %33
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %46
+         %54 = OpConvertSToF %float %48
+         %55 = OpConvertSToF %float %50
+         %56 = OpConvertSToF %float %52
+         %57 = OpCompositeConstruct %v4float %53 %54 %55 %56
+               OpStore %x_GLF_color %57
+               OpBranch %42
+         %44 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %60 %60 %60 %60
+               OpStore %x_GLF_color %61
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %62
+%tint_symbol = OpFunctionParameter %main_out
+         %66 = OpLabel
+         %67 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %67
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %69 = OpLabel
+         %70 = OpFunctionCall %void %main_1
+         %72 = OpLoad %v4float %x_GLF_color
+         %73 = OpCompositeConstruct %main_out %72
+         %71 = OpFunctionCall %void %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c5c24bf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_28;
+  let x_29 : i32 = a;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((((vec2<i32>(x_29, x_29) / vec2<i32>(x_31, 63677))).y == x_37)) {
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_43), f32(x_46), f32(x_49), f32(x_52));
+  } else {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_57 : f32 = f32(x_56);
+    x_GLF_color = vec4<f32>(x_57, x_57, x_57, x_57);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm
new file mode 100644
index 0000000..8579b3c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm
@@ -0,0 +1,108 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %11
+         %30 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %31 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpConvertFToS %int %32
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpSLessThan %bool %33 %35
+         %37 = OpSelect %int %36 %int_0 %int_n1
+               OpStore %a %37
+               OpStore %i %int_0
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpLoad %int %i
+         %43 = OpSLessThan %bool %42 %int_5
+               OpBranchConditional %43 %44 %39
+         %44 = OpLabel
+         %45 = OpLoad %int %a
+         %46 = OpSDiv %int %45 %int_2
+               OpStore %a %46
+               OpBranch %40
+         %40 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %i %48
+               OpBranch %38
+         %39 = OpLabel
+         %49 = OpLoad %int %a
+         %50 = OpIEqual %bool %49 %int_0
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %56 %59 %62 %65
+               OpStore %_GLF_color %66
+               OpBranch %51
+         %53 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpCompositeConstruct %v4float %69 %69 %69 %69
+               OpStore %_GLF_color %70
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..42545af
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,52 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const float x_32 = gl_FragCoord.x;
+  const int x_35 = asint(x_7[1].x);
+  a = ((int(x_32) < x_35) ? 0 : -1);
+  i = 0;
+  {
+    for(; (i < 5); i = (i + 1)) {
+      a = (a / 2);
+    }
+  }
+  if ((a == 0)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const int x_58 = asint(x_7[1].x);
+    const int x_61 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_64 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    const int x_68 = asint(x_7[1].x);
+    const float x_69 = float(x_68);
+    x_GLF_color = float4(x_69, x_69, x_69, x_69);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4b31f2b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  int i = 0;
+  float const x_32 = (*(tint_symbol_5)).x;
+  int const x_35 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  a = select(-1, 0, (int(x_32) < x_35));
+  i = 0;
+  while (true) {
+    int const x_42 = i;
+    if ((x_42 < 5)) {
+    } else {
+      break;
+    }
+    int const x_45 = a;
+    a = (x_45 / 2);
+    {
+      int const x_47 = i;
+      i = (x_47 + 1);
+    }
+  }
+  int const x_49 = a;
+  if ((x_49 == 0)) {
+    int const x_55 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_58 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    int const x_68 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_69 = float(x_68);
+    *(tint_symbol_6) = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3b7284c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,149 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+     %int_n1 = OpConstant %int -1
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %24
+          %i = OpVariable %_ptr_Function_int Function %24
+         %28 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %29 = OpLoad %float %28
+         %32 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %35 = OpConvertFToS %int %29
+         %36 = OpSLessThan %bool %35 %33
+         %34 = OpSelect %int %36 %int_0 %int_n1
+               OpStore %a %34
+               OpStore %i %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %46 = OpSLessThan %bool %44 %int_5
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+               OpBranch %47
+         %49 = OpLabel
+               OpBranch %41
+         %47 = OpLabel
+         %50 = OpLoad %int %a
+         %52 = OpSDiv %int %50 %int_2
+               OpStore %a %52
+               OpBranch %42
+         %42 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %i %54
+               OpBranch %40
+         %41 = OpLabel
+         %55 = OpLoad %int %a
+         %56 = OpIEqual %bool %55 %int_0
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %77
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %84 = OpLabel
+         %85 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %85
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_3 %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..15a377c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_32 : f32 = gl_FragCoord.x;
+  let x_35 : i32 = x_7.x_GLF_uniform_int_values[1];
+  a = select(-1, 0, (i32(x_32) < x_35));
+  i = 0;
+  loop {
+    let x_42 : i32 = i;
+    if ((x_42 < 5)) {
+    } else {
+      break;
+    }
+    let x_45 : i32 = a;
+    a = (x_45 / 2);
+
+    continuing {
+      let x_47 : i32 = i;
+      i = (x_47 + 1);
+    }
+  }
+  let x_49 : i32 = a;
+  if ((x_49 == 0)) {
+    let x_55 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_68 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
new file mode 100644
index 0000000..15a377c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_32 : f32 = gl_FragCoord.x;
+  let x_35 : i32 = x_7.x_GLF_uniform_int_values[1];
+  a = select(-1, 0, (i32(x_32) < x_35));
+  i = 0;
+  loop {
+    let x_42 : i32 = i;
+    if ((x_42 < 5)) {
+    } else {
+      break;
+    }
+    let x_45 : i32 = a;
+    a = (x_45 / 2);
+
+    continuing {
+      let x_47 : i32 = i;
+      i = (x_47 + 1);
+    }
+  }
+  let x_49 : i32 = a;
+  if ((x_49 == 0)) {
+    let x_55 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_68 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..42545af
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,52 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const float x_32 = gl_FragCoord.x;
+  const int x_35 = asint(x_7[1].x);
+  a = ((int(x_32) < x_35) ? 0 : -1);
+  i = 0;
+  {
+    for(; (i < 5); i = (i + 1)) {
+      a = (a / 2);
+    }
+  }
+  if ((a == 0)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const int x_58 = asint(x_7[1].x);
+    const int x_61 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_64 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    const int x_68 = asint(x_7[1].x);
+    const float x_69 = float(x_68);
+    x_GLF_color = float4(x_69, x_69, x_69, x_69);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4b31f2b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  int i = 0;
+  float const x_32 = (*(tint_symbol_5)).x;
+  int const x_35 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  a = select(-1, 0, (int(x_32) < x_35));
+  i = 0;
+  while (true) {
+    int const x_42 = i;
+    if ((x_42 < 5)) {
+    } else {
+      break;
+    }
+    int const x_45 = a;
+    a = (x_45 / 2);
+    {
+      int const x_47 = i;
+      i = (x_47 + 1);
+    }
+  }
+  int const x_49 = a;
+  if ((x_49 == 0)) {
+    int const x_55 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_58 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    int const x_68 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_69 = float(x_68);
+    *(tint_symbol_6) = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3b7284c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,149 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+     %int_n1 = OpConstant %int -1
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %24
+          %i = OpVariable %_ptr_Function_int Function %24
+         %28 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %29 = OpLoad %float %28
+         %32 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %35 = OpConvertFToS %int %29
+         %36 = OpSLessThan %bool %35 %33
+         %34 = OpSelect %int %36 %int_0 %int_n1
+               OpStore %a %34
+               OpStore %i %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %46 = OpSLessThan %bool %44 %int_5
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+               OpBranch %47
+         %49 = OpLabel
+               OpBranch %41
+         %47 = OpLabel
+         %50 = OpLoad %int %a
+         %52 = OpSDiv %int %50 %int_2
+               OpStore %a %52
+               OpBranch %42
+         %42 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %i %54
+               OpBranch %40
+         %41 = OpLabel
+         %55 = OpLoad %int %a
+         %56 = OpIEqual %bool %55 %int_0
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %61
+         %69 = OpConvertSToF %float %63
+         %70 = OpConvertSToF %float %65
+         %71 = OpConvertSToF %float %67
+         %72 = OpCompositeConstruct %v4float %68 %69 %70 %71
+               OpStore %x_GLF_color %72
+               OpBranch %57
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %77
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %84 = OpLabel
+         %85 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %85
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_3 %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..15a377c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_32 : f32 = gl_FragCoord.x;
+  let x_35 : i32 = x_7.x_GLF_uniform_int_values[1];
+  a = select(-1, 0, (i32(x_32) < x_35));
+  i = 0;
+  loop {
+    let x_42 : i32 = i;
+    if ((x_42 < 5)) {
+    } else {
+      break;
+    }
+    let x_45 : i32 = a;
+    a = (x_45 / 2);
+
+    continuing {
+      let x_47 : i32 = i;
+      i = (x_47 + 1);
+    }
+  }
+  let x_49 : i32 = a;
+  if ((x_49 == 0)) {
+    let x_55 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_68 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm
new file mode 100644
index 0000000..ea1f789
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm
@@ -0,0 +1,112 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %count "count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+ %int_n93448 = OpConstant %int -93448
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_2 = OpConstant %int 2
+       %main = OpFunction %void None %10
+         %25 = OpLabel
+      %count = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %count %27
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %36 = OpLoad %int %35
+         %37 = OpSLessThan %bool %34 %36
+               OpBranchConditional %37 %38 %31
+         %38 = OpLabel
+         %39 = OpLoad %int %count
+         %40 = OpSMod %int %39 %int_n93448
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpSGreaterThan %bool %40 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+         %46 = OpLoad %int %count
+         %47 = OpIAdd %int %46 %int_1
+               OpStore %count %47
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpIAdd %int %48 %int_1
+               OpStore %i %49
+               OpBranch %30
+         %31 = OpLabel
+         %50 = OpLoad %int %count
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpIEqual %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpCompositeConstruct %v4float %59 %62 %65 %68
+               OpStore %_GLF_color %69
+               OpBranch %54
+         %56 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpCompositeConstruct %v4float %72 %72 %72 %72
+               OpStore %_GLF_color %73
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..374a386
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int count = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[1].x);
+  count = x_27;
+  const int x_29 = asint(x_6[1].x);
+  i = x_29;
+  while (true) {
+    const int x_34 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_36 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    const int x_39 = count;
+    const int x_42 = asint(x_6[1].x);
+    if (((x_39 % -93448) > x_42)) {
+      count = (count + 1);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_50 = count;
+  const int x_52 = asint(x_6[1].x);
+  if ((x_50 == x_52)) {
+    const int x_58 = asint(x_6[2].x);
+    const int x_61 = asint(x_6[1].x);
+    const int x_64 = asint(x_6[1].x);
+    const int x_67 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_58), float(x_61), float(x_64), float(x_67));
+  } else {
+    const int x_71 = asint(x_6[1].x);
+    const float x_72 = float(x_71);
+    x_GLF_color = float4(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3ebe7f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int count = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  count = x_27;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_29;
+  while (true) {
+    int const x_34 = i;
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    int const x_39 = count;
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if (((x_39 % -93448) > x_42)) {
+      int const x_46 = count;
+      count = (x_46 + 1);
+    }
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  int const x_50 = count;
+  int const x_52 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_50 == x_52)) {
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_58), float(x_61), float(x_64), float(x_67));
+  } else {
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_72 = float(x_71);
+    *(tint_symbol_4) = float4(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8a84a5f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+ %int_n93448 = OpConstant %int -93448
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %count = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %count %27
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %31
+         %40 = OpLabel
+         %43 = OpLoad %int %count
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %47 = OpSMod %int %43 %int_n93448
+         %48 = OpSGreaterThan %bool %47 %45
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+         %51 = OpLoad %int %count
+         %52 = OpIAdd %int %51 %int_1
+               OpStore %count %52
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %i %54
+               OpBranch %30
+         %31 = OpLabel
+         %55 = OpLoad %int %count
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpIEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %59
+         %61 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c94e6de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var count : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[1];
+  count = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_29;
+  loop {
+    let x_34 : i32 = i;
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = count;
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if (((x_39 % -93448) > x_42)) {
+      let x_46 : i32 = count;
+      count = (x_46 + 1);
+    }
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : i32 = count;
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_50 == x_52)) {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_58), f32(x_61), f32(x_64), f32(x_67));
+  } else {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_72 : f32 = f32(x_71);
+    x_GLF_color = vec4<f32>(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
new file mode 100644
index 0000000..c94e6de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var count : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[1];
+  count = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_29;
+  loop {
+    let x_34 : i32 = i;
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = count;
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if (((x_39 % -93448) > x_42)) {
+      let x_46 : i32 = count;
+      count = (x_46 + 1);
+    }
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : i32 = count;
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_50 == x_52)) {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_58), f32(x_61), f32(x_64), f32(x_67));
+  } else {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_72 : f32 = f32(x_71);
+    x_GLF_color = vec4<f32>(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..374a386
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int count = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[1].x);
+  count = x_27;
+  const int x_29 = asint(x_6[1].x);
+  i = x_29;
+  while (true) {
+    const int x_34 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_36 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    const int x_39 = count;
+    const int x_42 = asint(x_6[1].x);
+    if (((x_39 % -93448) > x_42)) {
+      count = (count + 1);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_50 = count;
+  const int x_52 = asint(x_6[1].x);
+  if ((x_50 == x_52)) {
+    const int x_58 = asint(x_6[2].x);
+    const int x_61 = asint(x_6[1].x);
+    const int x_64 = asint(x_6[1].x);
+    const int x_67 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_58), float(x_61), float(x_64), float(x_67));
+  } else {
+    const int x_71 = asint(x_6[1].x);
+    const float x_72 = float(x_71);
+    x_GLF_color = float4(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3ebe7f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int count = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  count = x_27;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_29;
+  while (true) {
+    int const x_34 = i;
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    int const x_39 = count;
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if (((x_39 % -93448) > x_42)) {
+      int const x_46 = count;
+      count = (x_46 + 1);
+    }
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  int const x_50 = count;
+  int const x_52 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_50 == x_52)) {
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_58), float(x_61), float(x_64), float(x_67));
+  } else {
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_72 = float(x_71);
+    *(tint_symbol_4) = float4(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8a84a5f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+ %int_n93448 = OpConstant %int -93448
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %count = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %count %27
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %31
+         %40 = OpLabel
+         %43 = OpLoad %int %count
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %47 = OpSMod %int %43 %int_n93448
+         %48 = OpSGreaterThan %bool %47 %45
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+         %51 = OpLoad %int %count
+         %52 = OpIAdd %int %51 %int_1
+               OpStore %count %52
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpIAdd %int %53 %int_1
+               OpStore %i %54
+               OpBranch %30
+         %31 = OpLabel
+         %55 = OpLoad %int %count
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpIEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %59
+         %61 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c94e6de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var count : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[1];
+  count = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_29;
+  loop {
+    let x_34 : i32 = i;
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = count;
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if (((x_39 % -93448) > x_42)) {
+      let x_46 : i32 = count;
+      count = (x_46 + 1);
+    }
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : i32 = count;
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_50 == x_52)) {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_58), f32(x_61), f32(x_64), f32(x_67));
+  } else {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_72 : f32 = f32(x_71);
+    x_GLF_color = vec4<f32>(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm
new file mode 100644
index 0000000..7e17f3a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm
@@ -0,0 +1,173 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %v "v"
+               OpName %i "i"
+               OpName %k "k"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %j_0 "j"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+         %15 = OpTypeFunction %v3float
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_1 = OpConstant %float 1
+         %19 = OpConstantComposite %v2float %float_1 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_4 = OpConstant %float 4
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %33 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+     %uint_2 = OpConstant %uint 2
+%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
+%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+      %int_4 = OpConstant %int 4
+     %v3bool = OpTypeVector %bool 3
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %12
+         %44 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function
+       %data = OpVariable %_ptr_Function__arr_v3float_uint_2 Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+               OpStore %j %int_0
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %j
+         %50 = OpSLessThan %bool %49 %int_1
+               OpBranchConditional %50 %51 %46
+         %51 = OpLabel
+         %52 = OpLoad %int %j
+         %53 = OpFunctionCall %v3float %func_
+         %54 = OpAccessChain %_ptr_Function_v3float %data %52
+               OpStore %54 %53
+               OpBranch %47
+         %47 = OpLabel
+         %55 = OpLoad %int %j
+         %56 = OpIAdd %int %55 %int_1
+               OpStore %j %56
+               OpBranch %45
+         %46 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %j_0
+         %62 = OpSLessThan %bool %61 %int_1
+               OpBranchConditional %62 %63 %58
+         %63 = OpLabel
+         %64 = OpLoad %int %j_0
+         %65 = OpIMul %int %int_4 %64
+         %66 = OpIAdd %int %65 %int_1
+         %67 = OpFunctionCall %v3float %func_
+         %68 = OpAccessChain %_ptr_Function_v3float %data %66
+               OpStore %68 %67
+               OpBranch %59
+         %59 = OpLabel
+         %69 = OpLoad %int %j_0
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %j_0 %70
+               OpBranch %57
+         %58 = OpLabel
+         %71 = OpAccessChain %_ptr_Function_v3float %data %int_0
+         %72 = OpLoad %v3float %71
+         %73 = OpFOrdEqual %v3bool %72 %32
+         %74 = OpAll %bool %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_v3float %data %int_1
+         %78 = OpLoad %v3float %77
+         %79 = OpFOrdEqual %v3bool %78 %32
+         %80 = OpAll %bool %79
+               OpBranch %75
+         %75 = OpLabel
+         %81 = OpPhi %bool %74 %58 %80 %76
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+               OpStore %_GLF_color %42
+               OpBranch %82
+         %84 = OpLabel
+               OpStore %_GLF_color %43
+               OpBranch %82
+         %82 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %v3float None %15
+         %85 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function
+          %i = OpVariable %_ptr_Function_int Function
+          %k = OpVariable %_ptr_Function_int Function
+               OpStore %v %19
+               OpStore %i %int_0
+               OpStore %k %int_0
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %90 = OpLoad %int %k
+         %91 = OpSLessThan %bool %90 %int_2
+               OpBranchConditional %91 %92 %87
+         %92 = OpLabel
+         %93 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %94 = OpLoad %float %93
+         %95 = OpFAdd %float %94 %float_1
+         %96 = OpFOrdGreaterThan %bool %95 %float_4
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %97
+         %98 = OpLabel
+               OpBranch %87
+         %97 = OpLabel
+         %99 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %99 %float_1
+        %100 = OpLoad %int %i
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %i %101
+               OpBranch %88
+         %88 = OpLabel
+        %102 = OpLoad %int %k
+        %103 = OpIAdd %int %102 %int_1
+               OpStore %k %103
+               OpBranch %86
+         %87 = OpLabel
+        %104 = OpLoad %int %i
+        %105 = OpSLessThan %bool %104 %int_10
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %107 = OpLabel
+               OpReturnValue %32
+        %108 = OpLabel
+               OpReturnValue %33
+        %106 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..bbf845a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,78 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 func_() {
+  float2 v = float2(0.0f, 0.0f);
+  int i = 0;
+  int k = 0;
+  v = float2(1.0f, 1.0f);
+  i = 0;
+  k = 0;
+  {
+    for(; (k < 2); k = (k + 1)) {
+      const float x_94 = v.y;
+      if (((x_94 + 1.0f) > 4.0f)) {
+        break;
+      }
+      v.y = 1.0f;
+      i = (i + 1);
+    }
+  }
+  if ((i < 10)) {
+    return float3(1.0f, 0.0f, 0.0f);
+  } else {
+    return float3(0.0f, 0.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  int j = 0;
+  float3 data[2] = (float3[2])0;
+  int j_1 = 0;
+  bool x_80 = false;
+  bool x_81_phi = false;
+  j = 0;
+  {
+    for(; (j < 1); j = (j + 1)) {
+      const int x_52 = j;
+      const float3 x_53 = func_();
+      data[x_52] = x_53;
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 1); j_1 = (j_1 + 1)) {
+      const int x_64 = j_1;
+      const float3 x_67 = func_();
+      data[((4 * x_64) + 1)] = x_67;
+    }
+  }
+  const float3 x_72 = data[0];
+  const bool x_74 = all((x_72 == float3(1.0f, 0.0f, 0.0f)));
+  x_81_phi = x_74;
+  if (x_74) {
+    const float3 x_78 = data[1];
+    x_80 = all((x_78 == float3(1.0f, 0.0f, 0.0f)));
+    x_81_phi = x_80;
+  }
+  if (x_81_phi) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..06c1659
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float3 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 func_() {
+  float2 v = 0.0f;
+  int i = 0;
+  int k = 0;
+  v = float2(1.0f, 1.0f);
+  i = 0;
+  k = 0;
+  while (true) {
+    int const x_90 = k;
+    if ((x_90 < 2)) {
+    } else {
+      break;
+    }
+    float const x_94 = v.y;
+    if (((x_94 + 1.0f) > 4.0f)) {
+      break;
+    }
+    v.y = 1.0f;
+    int const x_100 = i;
+    i = (x_100 + 1);
+    {
+      int const x_102 = k;
+      k = (x_102 + 1);
+    }
+  }
+  int const x_104 = i;
+  if ((x_104 < 10)) {
+    return float3(1.0f, 0.0f, 0.0f);
+  } else {
+    return float3(0.0f, 0.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  int j = 0;
+  tint_array_wrapper data = {};
+  int j_1 = 0;
+  bool x_80 = false;
+  bool x_81_phi = false;
+  j = 0;
+  while (true) {
+    int const x_49 = j;
+    if ((x_49 < 1)) {
+    } else {
+      break;
+    }
+    int const x_52 = j;
+    float3 const x_53 = func_();
+    data.arr[x_52] = x_53;
+    {
+      int const x_55 = j;
+      j = (x_55 + 1);
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_61 = j_1;
+    if ((x_61 < 1)) {
+    } else {
+      break;
+    }
+    int const x_64 = j_1;
+    float3 const x_67 = func_();
+    data.arr[((4 * x_64) + 1)] = x_67;
+    {
+      int const x_69 = j_1;
+      j_1 = (x_69 + 1);
+    }
+  }
+  float3 const x_72 = data.arr[0];
+  bool const x_74 = all((x_72 == float3(1.0f, 0.0f, 0.0f)));
+  x_81_phi = x_74;
+  if (x_74) {
+    float3 const x_78 = data.arr[1];
+    x_80 = all((x_78 == float3(1.0f, 0.0f, 0.0f)));
+    x_81_phi = x_80;
+  }
+  bool const x_81 = x_81_phi;
+  if (x_81) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d944525
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,233 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 138
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %v "v"
+               OpName %i "i"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %j_1 "j_1"
+               OpName %x_80 "x_80"
+               OpName %x_81_phi "x_81_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v3float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v2float %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_4 = OpConstant %float 4
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+    %float_0 = OpConstant %float 0
+         %58 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %59 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %60 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %61 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
+%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
+         %70 = OpConstantNull %_arr_v3float_uint_2
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %74 = OpConstantNull %bool
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+      %int_4 = OpConstant %int 4
+     %v3bool = OpTypeVector %bool 3
+        %124 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %125 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %126 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v3float None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %15
+          %i = OpVariable %_ptr_Function_int Function %19
+          %k = OpVariable %_ptr_Function_int Function %19
+               OpStore %v %22
+               OpStore %i %int_0
+               OpStore %k %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %k
+         %30 = OpSLessThan %bool %28 %int_2
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+         %38 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFAdd %float %39 %float_1
+         %42 = OpFOrdGreaterThan %bool %40 %float_4
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %25
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %45 %float_1
+         %46 = OpLoad %int %i
+         %48 = OpIAdd %int %46 %int_1
+               OpStore %i %48
+               OpBranch %26
+         %26 = OpLabel
+         %49 = OpLoad %int %k
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %k %50
+               OpBranch %24
+         %25 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpSLessThan %bool %51 %int_10
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpReturnValue %58
+         %56 = OpLabel
+               OpReturnValue %59
+         %54 = OpLabel
+               OpReturnValue %60
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %61
+         %64 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %19
+       %data = OpVariable %_ptr_Function__arr_v3float_uint_2 Function %70
+        %j_1 = OpVariable %_ptr_Function_int Function %19
+       %x_80 = OpVariable %_ptr_Function_bool Function %74
+   %x_81_phi = OpVariable %_ptr_Function_bool Function %74
+               OpStore %j %int_0
+               OpBranch %76
+         %76 = OpLabel
+               OpLoopMerge %77 %78 None
+               OpBranch %79
+         %79 = OpLabel
+         %80 = OpLoad %int %j
+         %81 = OpSLessThan %bool %80 %int_1
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+               OpBranch %82
+         %84 = OpLabel
+               OpBranch %77
+         %82 = OpLabel
+         %85 = OpLoad %int %j
+         %86 = OpFunctionCall %v3float %func_
+         %88 = OpAccessChain %_ptr_Function_v3float %data %85
+               OpStore %88 %86
+               OpBranch %78
+         %78 = OpLabel
+         %89 = OpLoad %int %j
+         %90 = OpIAdd %int %89 %int_1
+               OpStore %j %90
+               OpBranch %76
+         %77 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %j_1
+         %96 = OpSLessThan %bool %95 %int_1
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %99
+         %98 = OpLabel
+               OpBranch %97
+         %99 = OpLabel
+               OpBranch %92
+         %97 = OpLabel
+        %100 = OpLoad %int %j_1
+        %101 = OpFunctionCall %v3float %func_
+        %103 = OpIMul %int %int_4 %100
+        %104 = OpIAdd %int %103 %int_1
+        %105 = OpAccessChain %_ptr_Function_v3float %data %104
+               OpStore %105 %101
+               OpBranch %93
+         %93 = OpLabel
+        %106 = OpLoad %int %j_1
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %j_1 %107
+               OpBranch %91
+         %92 = OpLabel
+        %108 = OpAccessChain %_ptr_Function_v3float %data %int_0
+        %109 = OpLoad %v3float %108
+        %111 = OpFOrdEqual %v3bool %109 %58
+        %110 = OpAll %bool %111
+               OpStore %x_81_phi %110
+               OpSelectionMerge %113 None
+               OpBranchConditional %110 %114 %113
+        %114 = OpLabel
+        %115 = OpAccessChain %_ptr_Function_v3float %data %int_1
+        %116 = OpLoad %v3float %115
+        %118 = OpFOrdEqual %v3bool %116 %58
+        %117 = OpAll %bool %118
+               OpStore %x_80 %117
+        %119 = OpLoad %bool %x_80
+               OpStore %x_81_phi %119
+               OpBranch %113
+        %113 = OpLabel
+        %120 = OpLoad %bool %x_81_phi
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpStore %x_GLF_color %124
+               OpBranch %121
+        %123 = OpLabel
+               OpStore %x_GLF_color %125
+               OpBranch %121
+        %121 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %126
+%tint_symbol = OpFunctionParameter %main_out
+        %130 = OpLabel
+        %131 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %131
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %61
+        %133 = OpLabel
+        %134 = OpFunctionCall %void %main_1
+        %136 = OpLoad %v4float %x_GLF_color
+        %137 = OpCompositeConstruct %main_out %136
+        %135 = OpFunctionCall %void %tint_symbol_2 %137
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a0443e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,102 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec3<f32> {
+  var v : vec2<f32>;
+  var i : i32;
+  var k : i32;
+  v = vec2<f32>(1.0, 1.0);
+  i = 0;
+  k = 0;
+  loop {
+    let x_90 : i32 = k;
+    if ((x_90 < 2)) {
+    } else {
+      break;
+    }
+    let x_94 : f32 = v.y;
+    if (((x_94 + 1.0) > 4.0)) {
+      break;
+    }
+    v.y = 1.0;
+    let x_100 : i32 = i;
+    i = (x_100 + 1);
+
+    continuing {
+      let x_102 : i32 = k;
+      k = (x_102 + 1);
+    }
+  }
+  let x_104 : i32 = i;
+  if ((x_104 < 10)) {
+    return vec3<f32>(1.0, 0.0, 0.0);
+  } else {
+    return vec3<f32>(0.0, 0.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var j : i32;
+  var data : array<vec3<f32>, 2>;
+  var j_1 : i32;
+  var x_80 : bool;
+  var x_81_phi : bool;
+  j = 0;
+  loop {
+    let x_49 : i32 = j;
+    if ((x_49 < 1)) {
+    } else {
+      break;
+    }
+    let x_52 : i32 = j;
+    let x_53 : vec3<f32> = func_();
+    data[x_52] = x_53;
+
+    continuing {
+      let x_55 : i32 = j;
+      j = (x_55 + 1);
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_61 : i32 = j_1;
+    if ((x_61 < 1)) {
+    } else {
+      break;
+    }
+    let x_64 : i32 = j_1;
+    let x_67 : vec3<f32> = func_();
+    data[((4 * x_64) + 1)] = x_67;
+
+    continuing {
+      let x_69 : i32 = j_1;
+      j_1 = (x_69 + 1);
+    }
+  }
+  let x_72 : vec3<f32> = data[0];
+  let x_74 : bool = all((x_72 == vec3<f32>(1.0, 0.0, 0.0)));
+  x_81_phi = x_74;
+  if (x_74) {
+    let x_78 : vec3<f32> = data[1];
+    x_80 = all((x_78 == vec3<f32>(1.0, 0.0, 0.0)));
+    x_81_phi = x_80;
+  }
+  let x_81 : bool = x_81_phi;
+  if (x_81) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
new file mode 100644
index 0000000..a0443e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
@@ -0,0 +1,102 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec3<f32> {
+  var v : vec2<f32>;
+  var i : i32;
+  var k : i32;
+  v = vec2<f32>(1.0, 1.0);
+  i = 0;
+  k = 0;
+  loop {
+    let x_90 : i32 = k;
+    if ((x_90 < 2)) {
+    } else {
+      break;
+    }
+    let x_94 : f32 = v.y;
+    if (((x_94 + 1.0) > 4.0)) {
+      break;
+    }
+    v.y = 1.0;
+    let x_100 : i32 = i;
+    i = (x_100 + 1);
+
+    continuing {
+      let x_102 : i32 = k;
+      k = (x_102 + 1);
+    }
+  }
+  let x_104 : i32 = i;
+  if ((x_104 < 10)) {
+    return vec3<f32>(1.0, 0.0, 0.0);
+  } else {
+    return vec3<f32>(0.0, 0.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var j : i32;
+  var data : array<vec3<f32>, 2>;
+  var j_1 : i32;
+  var x_80 : bool;
+  var x_81_phi : bool;
+  j = 0;
+  loop {
+    let x_49 : i32 = j;
+    if ((x_49 < 1)) {
+    } else {
+      break;
+    }
+    let x_52 : i32 = j;
+    let x_53 : vec3<f32> = func_();
+    data[x_52] = x_53;
+
+    continuing {
+      let x_55 : i32 = j;
+      j = (x_55 + 1);
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_61 : i32 = j_1;
+    if ((x_61 < 1)) {
+    } else {
+      break;
+    }
+    let x_64 : i32 = j_1;
+    let x_67 : vec3<f32> = func_();
+    data[((4 * x_64) + 1)] = x_67;
+
+    continuing {
+      let x_69 : i32 = j_1;
+      j_1 = (x_69 + 1);
+    }
+  }
+  let x_72 : vec3<f32> = data[0];
+  let x_74 : bool = all((x_72 == vec3<f32>(1.0, 0.0, 0.0)));
+  x_81_phi = x_74;
+  if (x_74) {
+    let x_78 : vec3<f32> = data[1];
+    x_80 = all((x_78 == vec3<f32>(1.0, 0.0, 0.0)));
+    x_81_phi = x_80;
+  }
+  let x_81 : bool = x_81_phi;
+  if (x_81) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..bbf845a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,78 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 func_() {
+  float2 v = float2(0.0f, 0.0f);
+  int i = 0;
+  int k = 0;
+  v = float2(1.0f, 1.0f);
+  i = 0;
+  k = 0;
+  {
+    for(; (k < 2); k = (k + 1)) {
+      const float x_94 = v.y;
+      if (((x_94 + 1.0f) > 4.0f)) {
+        break;
+      }
+      v.y = 1.0f;
+      i = (i + 1);
+    }
+  }
+  if ((i < 10)) {
+    return float3(1.0f, 0.0f, 0.0f);
+  } else {
+    return float3(0.0f, 0.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  int j = 0;
+  float3 data[2] = (float3[2])0;
+  int j_1 = 0;
+  bool x_80 = false;
+  bool x_81_phi = false;
+  j = 0;
+  {
+    for(; (j < 1); j = (j + 1)) {
+      const int x_52 = j;
+      const float3 x_53 = func_();
+      data[x_52] = x_53;
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 1); j_1 = (j_1 + 1)) {
+      const int x_64 = j_1;
+      const float3 x_67 = func_();
+      data[((4 * x_64) + 1)] = x_67;
+    }
+  }
+  const float3 x_72 = data[0];
+  const bool x_74 = all((x_72 == float3(1.0f, 0.0f, 0.0f)));
+  x_81_phi = x_74;
+  if (x_74) {
+    const float3 x_78 = data[1];
+    x_80 = all((x_78 == float3(1.0f, 0.0f, 0.0f)));
+    x_81_phi = x_80;
+  }
+  if (x_81_phi) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..06c1659
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float3 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 func_() {
+  float2 v = 0.0f;
+  int i = 0;
+  int k = 0;
+  v = float2(1.0f, 1.0f);
+  i = 0;
+  k = 0;
+  while (true) {
+    int const x_90 = k;
+    if ((x_90 < 2)) {
+    } else {
+      break;
+    }
+    float const x_94 = v.y;
+    if (((x_94 + 1.0f) > 4.0f)) {
+      break;
+    }
+    v.y = 1.0f;
+    int const x_100 = i;
+    i = (x_100 + 1);
+    {
+      int const x_102 = k;
+      k = (x_102 + 1);
+    }
+  }
+  int const x_104 = i;
+  if ((x_104 < 10)) {
+    return float3(1.0f, 0.0f, 0.0f);
+  } else {
+    return float3(0.0f, 0.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  int j = 0;
+  tint_array_wrapper data = {};
+  int j_1 = 0;
+  bool x_80 = false;
+  bool x_81_phi = false;
+  j = 0;
+  while (true) {
+    int const x_49 = j;
+    if ((x_49 < 1)) {
+    } else {
+      break;
+    }
+    int const x_52 = j;
+    float3 const x_53 = func_();
+    data.arr[x_52] = x_53;
+    {
+      int const x_55 = j;
+      j = (x_55 + 1);
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_61 = j_1;
+    if ((x_61 < 1)) {
+    } else {
+      break;
+    }
+    int const x_64 = j_1;
+    float3 const x_67 = func_();
+    data.arr[((4 * x_64) + 1)] = x_67;
+    {
+      int const x_69 = j_1;
+      j_1 = (x_69 + 1);
+    }
+  }
+  float3 const x_72 = data.arr[0];
+  bool const x_74 = all((x_72 == float3(1.0f, 0.0f, 0.0f)));
+  x_81_phi = x_74;
+  if (x_74) {
+    float3 const x_78 = data.arr[1];
+    x_80 = all((x_78 == float3(1.0f, 0.0f, 0.0f)));
+    x_81_phi = x_80;
+  }
+  bool const x_81 = x_81_phi;
+  if (x_81) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d944525
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,233 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 138
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %v "v"
+               OpName %i "i"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %j_1 "j_1"
+               OpName %x_80 "x_80"
+               OpName %x_81_phi "x_81_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v3float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v2float %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_4 = OpConstant %float 4
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+    %float_0 = OpConstant %float 0
+         %58 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %59 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %60 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %61 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
+%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
+         %70 = OpConstantNull %_arr_v3float_uint_2
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %74 = OpConstantNull %bool
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+      %int_4 = OpConstant %int 4
+     %v3bool = OpTypeVector %bool 3
+        %124 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %125 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %126 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v3float None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %15
+          %i = OpVariable %_ptr_Function_int Function %19
+          %k = OpVariable %_ptr_Function_int Function %19
+               OpStore %v %22
+               OpStore %i %int_0
+               OpStore %k %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %k
+         %30 = OpSLessThan %bool %28 %int_2
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+         %38 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFAdd %float %39 %float_1
+         %42 = OpFOrdGreaterThan %bool %40 %float_4
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %25
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %45 %float_1
+         %46 = OpLoad %int %i
+         %48 = OpIAdd %int %46 %int_1
+               OpStore %i %48
+               OpBranch %26
+         %26 = OpLabel
+         %49 = OpLoad %int %k
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %k %50
+               OpBranch %24
+         %25 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpSLessThan %bool %51 %int_10
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpReturnValue %58
+         %56 = OpLabel
+               OpReturnValue %59
+         %54 = OpLabel
+               OpReturnValue %60
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %61
+         %64 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %19
+       %data = OpVariable %_ptr_Function__arr_v3float_uint_2 Function %70
+        %j_1 = OpVariable %_ptr_Function_int Function %19
+       %x_80 = OpVariable %_ptr_Function_bool Function %74
+   %x_81_phi = OpVariable %_ptr_Function_bool Function %74
+               OpStore %j %int_0
+               OpBranch %76
+         %76 = OpLabel
+               OpLoopMerge %77 %78 None
+               OpBranch %79
+         %79 = OpLabel
+         %80 = OpLoad %int %j
+         %81 = OpSLessThan %bool %80 %int_1
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+               OpBranch %82
+         %84 = OpLabel
+               OpBranch %77
+         %82 = OpLabel
+         %85 = OpLoad %int %j
+         %86 = OpFunctionCall %v3float %func_
+         %88 = OpAccessChain %_ptr_Function_v3float %data %85
+               OpStore %88 %86
+               OpBranch %78
+         %78 = OpLabel
+         %89 = OpLoad %int %j
+         %90 = OpIAdd %int %89 %int_1
+               OpStore %j %90
+               OpBranch %76
+         %77 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %j_1
+         %96 = OpSLessThan %bool %95 %int_1
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %99
+         %98 = OpLabel
+               OpBranch %97
+         %99 = OpLabel
+               OpBranch %92
+         %97 = OpLabel
+        %100 = OpLoad %int %j_1
+        %101 = OpFunctionCall %v3float %func_
+        %103 = OpIMul %int %int_4 %100
+        %104 = OpIAdd %int %103 %int_1
+        %105 = OpAccessChain %_ptr_Function_v3float %data %104
+               OpStore %105 %101
+               OpBranch %93
+         %93 = OpLabel
+        %106 = OpLoad %int %j_1
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %j_1 %107
+               OpBranch %91
+         %92 = OpLabel
+        %108 = OpAccessChain %_ptr_Function_v3float %data %int_0
+        %109 = OpLoad %v3float %108
+        %111 = OpFOrdEqual %v3bool %109 %58
+        %110 = OpAll %bool %111
+               OpStore %x_81_phi %110
+               OpSelectionMerge %113 None
+               OpBranchConditional %110 %114 %113
+        %114 = OpLabel
+        %115 = OpAccessChain %_ptr_Function_v3float %data %int_1
+        %116 = OpLoad %v3float %115
+        %118 = OpFOrdEqual %v3bool %116 %58
+        %117 = OpAll %bool %118
+               OpStore %x_80 %117
+        %119 = OpLoad %bool %x_80
+               OpStore %x_81_phi %119
+               OpBranch %113
+        %113 = OpLabel
+        %120 = OpLoad %bool %x_81_phi
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpStore %x_GLF_color %124
+               OpBranch %121
+        %123 = OpLabel
+               OpStore %x_GLF_color %125
+               OpBranch %121
+        %121 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %126
+%tint_symbol = OpFunctionParameter %main_out
+        %130 = OpLabel
+        %131 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %131
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %61
+        %133 = OpLabel
+        %134 = OpFunctionCall %void %main_1
+        %136 = OpLoad %v4float %x_GLF_color
+        %137 = OpCompositeConstruct %main_out %136
+        %135 = OpFunctionCall %void %tint_symbol_2 %137
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a0443e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,102 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec3<f32> {
+  var v : vec2<f32>;
+  var i : i32;
+  var k : i32;
+  v = vec2<f32>(1.0, 1.0);
+  i = 0;
+  k = 0;
+  loop {
+    let x_90 : i32 = k;
+    if ((x_90 < 2)) {
+    } else {
+      break;
+    }
+    let x_94 : f32 = v.y;
+    if (((x_94 + 1.0) > 4.0)) {
+      break;
+    }
+    v.y = 1.0;
+    let x_100 : i32 = i;
+    i = (x_100 + 1);
+
+    continuing {
+      let x_102 : i32 = k;
+      k = (x_102 + 1);
+    }
+  }
+  let x_104 : i32 = i;
+  if ((x_104 < 10)) {
+    return vec3<f32>(1.0, 0.0, 0.0);
+  } else {
+    return vec3<f32>(0.0, 0.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var j : i32;
+  var data : array<vec3<f32>, 2>;
+  var j_1 : i32;
+  var x_80 : bool;
+  var x_81_phi : bool;
+  j = 0;
+  loop {
+    let x_49 : i32 = j;
+    if ((x_49 < 1)) {
+    } else {
+      break;
+    }
+    let x_52 : i32 = j;
+    let x_53 : vec3<f32> = func_();
+    data[x_52] = x_53;
+
+    continuing {
+      let x_55 : i32 = j;
+      j = (x_55 + 1);
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_61 : i32 = j_1;
+    if ((x_61 < 1)) {
+    } else {
+      break;
+    }
+    let x_64 : i32 = j_1;
+    let x_67 : vec3<f32> = func_();
+    data[((4 * x_64) + 1)] = x_67;
+
+    continuing {
+      let x_69 : i32 = j_1;
+      j_1 = (x_69 + 1);
+    }
+  }
+  let x_72 : vec3<f32> = data[0];
+  let x_74 : bool = all((x_72 == vec3<f32>(1.0, 0.0, 0.0)));
+  x_81_phi = x_74;
+  if (x_74) {
+    let x_78 : vec3<f32> = data[1];
+    x_80 = all((x_78 == vec3<f32>(1.0, 0.0, 0.0)));
+    x_81_phi = x_80;
+  }
+  let x_81 : bool = x_81_phi;
+  if (x_81) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm
new file mode 100644
index 0000000..da27419
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm
@@ -0,0 +1,96 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v1 "v1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+   %int_n256 = OpConstant %int -256
+%mat2v2float = OpTypeMatrix %v2float 2
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %12
+         %33 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %35 = OpLoad %float %34
+         %36 = OpCompositeConstruct %v2float %35 %35
+               OpStore %v1 %36
+         %37 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpExtInst %float %1 Ldexp %40 %int_n256
+         %42 = OpAccessChain %_ptr_Function_float %v1 %38
+               OpStore %42 %41
+         %43 = OpLoad %v2float %v1
+         %44 = OpCompositeConstruct %v2float %35 %float_0
+         %45 = OpCompositeConstruct %v2float %float_0 %35
+         %46 = OpCompositeConstruct %mat2v2float %44 %45
+         %47 = OpVectorTimesMatrix %v2float %43 %46
+         %48 = OpCompositeExtract %float %47 0
+         %49 = OpFOrdEqual %bool %48 %35
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+         %53 = OpConvertSToF %float %38
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpCompositeConstruct %v4float %53 %56 %56 %53
+               OpStore %_GLF_color %57
+               OpBranch %50
+         %52 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %60 %60 %60 %60
+               OpStore %_GLF_color %61
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..1ce3a68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v1 = float2(0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_35 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float2(x_35, x_35);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_40 = v1.y;
+  set_float2(v1, x_38, ldexp(x_40, -256));
+  if ((mul(float2x2(float2(x_35, 0.0f), float2(0.0f, x_35)), v1).x == x_35)) {
+    const float x_53 = float(x_38);
+    const int x_55 = asint(x_8[1].x);
+    const float x_56 = float(x_55);
+    x_GLF_color = float4(x_53, x_56, x_56, x_53);
+  } else {
+    const int x_59 = asint(x_8[1].x);
+    const float x_60 = float(x_59);
+    x_GLF_color = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.msl
new file mode 100644
index 0000000..4b271a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float2(x_35, x_35);
+  int const x_38 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_40 = v1.y;
+  v1[x_38] = ldexp(x_40, -256);
+  float2 const x_43 = v1;
+  if ((((x_43 * float2x2(float2(x_35, 0.0f), float2(0.0f, x_35)))).x == x_35)) {
+    float const x_53 = float(x_38);
+    int const x_55 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_56 = float(x_55);
+    *(tint_symbol_4) = float4(x_53, x_56, x_56, x_53);
+  } else {
+    int const x_59 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_60 = float(x_59);
+    *(tint_symbol_4) = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..779691c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.spvasm
@@ -0,0 +1,131 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+         %42 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+   %int_n256 = OpConstant %int -256
+%mat2v2float = OpTypeMatrix %v2float 2
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %26
+         %30 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %31 = OpLoad %float %30
+         %32 = OpCompositeConstruct %v2float %31 %31
+               OpStore %v1 %32
+         %34 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %38 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Function_float %v1 %35
+         %41 = OpExtInst %float %42 Ldexp %39 %int_n256
+               OpStore %40 %41
+         %44 = OpLoad %v2float %v1
+         %47 = OpCompositeConstruct %v2float %31 %float_0
+         %48 = OpCompositeConstruct %v2float %float_0 %31
+         %49 = OpCompositeConstruct %mat2v2float %47 %48
+         %50 = OpVectorTimesMatrix %v2float %44 %49
+         %51 = OpCompositeExtract %float %50 0
+         %52 = OpFOrdEqual %bool %51 %31
+               OpSelectionMerge %54 None
+               OpBranchConditional %52 %55 %56
+         %55 = OpLabel
+         %57 = OpConvertSToF %float %35
+         %59 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpCompositeConstruct %v4float %57 %61 %61 %57
+               OpStore %x_GLF_color %62
+               OpBranch %54
+         %56 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..83090a7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec2<f32>(x_35, x_35);
+  let x_38 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_40 : f32 = v1.y;
+  v1[x_38] = ldexp(x_40, -256);
+  let x_43 : vec2<f32> = v1;
+  if ((((x_43 * mat2x2<f32>(vec2<f32>(x_35, 0.0), vec2<f32>(0.0, x_35)))).x == x_35)) {
+    let x_53 : f32 = f32(x_38);
+    let x_55 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_56 : f32 = f32(x_55);
+    x_GLF_color = vec4<f32>(x_53, x_56, x_56, x_53);
+  } else {
+    let x_59 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_60 : f32 = f32(x_59);
+    x_GLF_color = vec4<f32>(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
new file mode 100644
index 0000000..83090a7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec2<f32>(x_35, x_35);
+  let x_38 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_40 : f32 = v1.y;
+  v1[x_38] = ldexp(x_40, -256);
+  let x_43 : vec2<f32> = v1;
+  if ((((x_43 * mat2x2<f32>(vec2<f32>(x_35, 0.0), vec2<f32>(0.0, x_35)))).x == x_35)) {
+    let x_53 : f32 = f32(x_38);
+    let x_55 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_56 : f32 = f32(x_55);
+    x_GLF_color = vec4<f32>(x_53, x_56, x_56, x_53);
+  } else {
+    let x_59 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_60 : f32 = f32(x_59);
+    x_GLF_color = vec4<f32>(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..1ce3a68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v1 = float2(0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_35 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float2(x_35, x_35);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_40 = v1.y;
+  set_float2(v1, x_38, ldexp(x_40, -256));
+  if ((mul(float2x2(float2(x_35, 0.0f), float2(0.0f, x_35)), v1).x == x_35)) {
+    const float x_53 = float(x_38);
+    const int x_55 = asint(x_8[1].x);
+    const float x_56 = float(x_55);
+    x_GLF_color = float4(x_53, x_56, x_56, x_53);
+  } else {
+    const int x_59 = asint(x_8[1].x);
+    const float x_60 = float(x_59);
+    x_GLF_color = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.msl
new file mode 100644
index 0000000..4b271a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float2(x_35, x_35);
+  int const x_38 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_40 = v1.y;
+  v1[x_38] = ldexp(x_40, -256);
+  float2 const x_43 = v1;
+  if ((((x_43 * float2x2(float2(x_35, 0.0f), float2(0.0f, x_35)))).x == x_35)) {
+    float const x_53 = float(x_38);
+    int const x_55 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_56 = float(x_55);
+    *(tint_symbol_4) = float4(x_53, x_56, x_56, x_53);
+  } else {
+    int const x_59 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_60 = float(x_59);
+    *(tint_symbol_4) = float4(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..779691c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.spvasm
@@ -0,0 +1,131 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+         %42 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+   %int_n256 = OpConstant %int -256
+%mat2v2float = OpTypeMatrix %v2float 2
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %26
+         %30 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %31 = OpLoad %float %30
+         %32 = OpCompositeConstruct %v2float %31 %31
+               OpStore %v1 %32
+         %34 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %38 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Function_float %v1 %35
+         %41 = OpExtInst %float %42 Ldexp %39 %int_n256
+               OpStore %40 %41
+         %44 = OpLoad %v2float %v1
+         %47 = OpCompositeConstruct %v2float %31 %float_0
+         %48 = OpCompositeConstruct %v2float %float_0 %31
+         %49 = OpCompositeConstruct %mat2v2float %47 %48
+         %50 = OpVectorTimesMatrix %v2float %44 %49
+         %51 = OpCompositeExtract %float %50 0
+         %52 = OpFOrdEqual %bool %51 %31
+               OpSelectionMerge %54 None
+               OpBranchConditional %52 %55 %56
+         %55 = OpLabel
+         %57 = OpConvertSToF %float %35
+         %59 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpCompositeConstruct %v4float %57 %61 %61 %57
+               OpStore %x_GLF_color %62
+               OpBranch %54
+         %56 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..83090a7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec2<f32>(x_35, x_35);
+  let x_38 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_40 : f32 = v1.y;
+  v1[x_38] = ldexp(x_40, -256);
+  let x_43 : vec2<f32> = v1;
+  if ((((x_43 * mat2x2<f32>(vec2<f32>(x_35, 0.0), vec2<f32>(0.0, x_35)))).x == x_35)) {
+    let x_53 : f32 = f32(x_38);
+    let x_55 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_56 : f32 = f32(x_55);
+    x_GLF_color = vec4<f32>(x_53, x_56, x_56, x_53);
+  } else {
+    let x_59 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_60 : f32 = f32(x_59);
+    x_GLF_color = vec4<f32>(x_60, x_60, x_60, x_60);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm
new file mode 100644
index 0000000..4e64705
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm
@@ -0,0 +1,90 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %idx "idx"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %indexable "indexable"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %11
+         %25 = OpLabel
+        %idx = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_2 Function
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %27 = OpLoad %int %26
+         %28 = OpShiftLeftLogical %int %int_1 %27
+               OpStore %idx %28
+         %29 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %30 = OpLoad %int %29
+         %31 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpCompositeConstruct %_arr_int_uint_2 %30 %32
+         %34 = OpLoad %int %idx
+               OpStore %indexable %33
+         %35 = OpAccessChain %_ptr_Function_int %indexable %34
+         %36 = OpLoad %int %35
+               OpStore %a %36
+         %37 = OpLoad %int %a
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpIEqual %bool %37 %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpCompositeConstruct %v4float %46 %49 %52 %55
+               OpStore %_GLF_color %56
+               OpBranch %41
+         %43 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpCompositeConstruct %v4float %59 %59 %59 %59
+               OpStore %_GLF_color %60
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3169db6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,55 @@
+struct tint_padded_array_element {
+  int el;
+};
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int idx = 0;
+  int a = 0;
+  tint_padded_array_element indexable[2] = (tint_padded_array_element[2])0;
+  const int x_27 = asint(x_6[1].x);
+  idx = (1 << asuint(x_27));
+  const int x_30 = asint(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_32 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_34 = idx;
+  const tint_padded_array_element tint_symbol_3[2] = {{x_30}, {x_32}};
+  indexable = tint_symbol_3;
+  const int x_36 = indexable[x_34].el;
+  a = x_36;
+  const int x_37 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_39 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_37 == x_39)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_48 = asint(x_6[1].x);
+    const int x_51 = asint(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    const int x_58 = asint(x_6[1].x);
+    const float x_59 = float(x_58);
+    x_GLF_color = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2ff0873
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, thread float4* const tint_symbol_5) {
+  int idx = 0;
+  int a = 0;
+  tint_array_wrapper indexable = {};
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  idx = (1 << as_type<uint>(x_27));
+  int const x_30 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_34 = idx;
+  tint_array_wrapper const tint_symbol_3 = {.arr={{.el=x_30}, {.el=x_32}}};
+  indexable = tint_symbol_3;
+  int const x_36 = indexable.arr[x_34].el;
+  a = x_36;
+  int const x_37 = a;
+  int const x_39 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_37 == x_39)) {
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_54 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_59 = float(x_58);
+    *(tint_symbol_5) = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..46246e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %idx "idx"
+               OpName %a "a"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %25 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+        %idx = OpVariable %_ptr_Function_int Function %21
+          %a = OpVariable %_ptr_Function_int Function %21
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_2 Function %25
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %30 = OpLoad %int %29
+         %31 = OpBitcast %uint %30
+         %32 = OpShiftLeftLogical %int %int_1 %31
+               OpStore %idx %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpLoad %int %idx
+         %39 = OpCompositeConstruct %_arr_int_uint_2 %34 %37
+               OpStore %indexable %39
+         %40 = OpAccessChain %_ptr_Function_int %indexable %38
+         %41 = OpLoad %int %40
+               OpStore %a %41
+         %42 = OpLoad %int %a
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpIEqual %bool %42 %44
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %49
+         %48 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %51
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %47
+         %49 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a39da82
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var idx : i32;
+  var a : i32;
+  var indexable : Arr;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[1];
+  idx = (1 << bitcast<u32>(x_27));
+  let x_30 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_34 : i32 = idx;
+  indexable = Arr(x_30, x_32);
+  let x_36 : i32 = indexable[x_34];
+  a = x_36;
+  let x_37 : i32 = a;
+  let x_39 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_37 == x_39)) {
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  } else {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_59 : f32 = f32(x_58);
+    x_GLF_color = vec4<f32>(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
new file mode 100644
index 0000000..a39da82
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var idx : i32;
+  var a : i32;
+  var indexable : Arr;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[1];
+  idx = (1 << bitcast<u32>(x_27));
+  let x_30 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_34 : i32 = idx;
+  indexable = Arr(x_30, x_32);
+  let x_36 : i32 = indexable[x_34];
+  a = x_36;
+  let x_37 : i32 = a;
+  let x_39 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_37 == x_39)) {
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  } else {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_59 : f32 = f32(x_58);
+    x_GLF_color = vec4<f32>(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3169db6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,55 @@
+struct tint_padded_array_element {
+  int el;
+};
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int idx = 0;
+  int a = 0;
+  tint_padded_array_element indexable[2] = (tint_padded_array_element[2])0;
+  const int x_27 = asint(x_6[1].x);
+  idx = (1 << asuint(x_27));
+  const int x_30 = asint(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_32 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_34 = idx;
+  const tint_padded_array_element tint_symbol_3[2] = {{x_30}, {x_32}};
+  indexable = tint_symbol_3;
+  const int x_36 = indexable[x_34].el;
+  a = x_36;
+  const int x_37 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_39 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_37 == x_39)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_48 = asint(x_6[1].x);
+    const int x_51 = asint(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    const int x_58 = asint(x_6[1].x);
+    const float x_59 = float(x_58);
+    x_GLF_color = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2ff0873
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, thread float4* const tint_symbol_5) {
+  int idx = 0;
+  int a = 0;
+  tint_array_wrapper indexable = {};
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  idx = (1 << as_type<uint>(x_27));
+  int const x_30 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_32 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_34 = idx;
+  tint_array_wrapper const tint_symbol_3 = {.arr={{.el=x_30}, {.el=x_32}}};
+  indexable = tint_symbol_3;
+  int const x_36 = indexable.arr[x_34].el;
+  a = x_36;
+  int const x_37 = a;
+  int const x_39 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_37 == x_39)) {
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_54 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_59 = float(x_58);
+    *(tint_symbol_5) = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..46246e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %idx "idx"
+               OpName %a "a"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %25 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+        %idx = OpVariable %_ptr_Function_int Function %21
+          %a = OpVariable %_ptr_Function_int Function %21
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_2 Function %25
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %30 = OpLoad %int %29
+         %31 = OpBitcast %uint %30
+         %32 = OpShiftLeftLogical %int %int_1 %31
+               OpStore %idx %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpLoad %int %idx
+         %39 = OpCompositeConstruct %_arr_int_uint_2 %34 %37
+               OpStore %indexable %39
+         %40 = OpAccessChain %_ptr_Function_int %indexable %38
+         %41 = OpLoad %int %40
+               OpStore %a %41
+         %42 = OpLoad %int %a
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpIEqual %bool %42 %44
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %49
+         %48 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %51
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %47
+         %49 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a39da82
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var idx : i32;
+  var a : i32;
+  var indexable : Arr;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[1];
+  idx = (1 << bitcast<u32>(x_27));
+  let x_30 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_32 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_34 : i32 = idx;
+  indexable = Arr(x_30, x_32);
+  let x_36 : i32 = indexable[x_34];
+  a = x_36;
+  let x_37 : i32 = a;
+  let x_39 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_37 == x_39)) {
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  } else {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_59 : f32 = f32(x_58);
+    x_GLF_color = vec4<f32>(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm
new file mode 100644
index 0000000..95ad9ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm
@@ -0,0 +1,72 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+       %main = OpFunction %void None %8
+         %22 = OpLabel
+         %23 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %24 = OpLoad %int %23
+         %25 = OpConvertSToF %float %24
+         %26 = OpCompositeConstruct %v4float %25 %25 %25 %25
+               OpStore %_GLF_color %26
+         %27 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %28 = OpLoad %int %27
+         %29 = OpShiftLeftLogical %int %28 %28
+         %30 = OpShiftRightArithmetic %int %29 %int_1
+               OpBranch %31
+         %31 = OpLabel
+         %32 = OpPhi %int %24 %22 %33 %34
+         %35 = OpSLessThan %bool %30 %int_10
+               OpLoopMerge %36 %34 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+         %33 = OpIAdd %int %32 %int_1
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %39 = OpLoad %int %38
+         %40 = OpIEqual %bool %33 %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+         %43 = OpConvertSToF %float %28
+         %44 = OpCompositeConstruct %v4float %43 %25 %25 %43
+               OpStore %_GLF_color %44
+               OpBranch %36
+         %41 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %31
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..9531ab8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.hlsl
@@ -0,0 +1,48 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[3];
+};
+
+void main_1() {
+  int x_32_phi = 0;
+  const int x_24 = asint(x_5[1].x);
+  const float x_25 = float(x_24);
+  x_GLF_color = float4(x_25, x_25, x_25, x_25);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_28 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_30 = ((x_28 << asuint(x_28)) >> asuint(1));
+  x_32_phi = x_24;
+  while (true) {
+    const int x_32 = x_32_phi;
+    if ((x_30 < 10)) {
+    } else {
+      break;
+    }
+    int x_33 = 0;
+    x_33 = (x_32 + 1);
+    const int x_39 = asint(x_5[2].x);
+    if ((x_33 == asint(x_39))) {
+      const float x_43 = float(x_28);
+      x_GLF_color = float4(x_43, x_25, x_25, x_43);
+      break;
+    }
+    {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.msl
new file mode 100644
index 0000000..6500f1c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int x_32_phi = 0;
+  int const x_24 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  float const x_25 = float(x_24);
+  *(tint_symbol_4) = float4(x_25, x_25, x_25, x_25);
+  int const x_28 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_30 = ((x_28 << as_type<uint>(x_28)) >> as_type<uint>(1));
+  x_32_phi = x_24;
+  while (true) {
+    int const x_32 = x_32_phi;
+    if ((x_30 < 10)) {
+    } else {
+      break;
+    }
+    int x_33 = 0;
+    x_33 = (x_32 + 1);
+    int const x_39 = x_5.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_33 == as_type<int>(x_39))) {
+      float const x_43 = float(x_28);
+      *(tint_symbol_4) = float4(x_43, x_25, x_25, x_43);
+      break;
+    }
+    {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..4dab00b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_32_phi "x_32_phi"
+               OpName %x_33 "x_33"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+   %x_32_phi = OpVariable %_ptr_Function_int Function %21
+       %x_33 = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %26 = OpLoad %int %25
+         %27 = OpConvertSToF %float %26
+         %28 = OpCompositeConstruct %v4float %27 %27 %27 %27
+               OpStore %x_GLF_color %28
+         %30 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpBitcast %uint %31
+         %33 = OpShiftLeftLogical %int %31 %32
+         %34 = OpBitcast %uint %int_1
+         %35 = OpShiftRightArithmetic %int %33 %34
+               OpStore %x_32_phi %26
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %x_32_phi
+         %42 = OpSLessThan %bool %35 %int_10
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %37
+         %44 = OpLabel
+         %48 = OpIAdd %int %40 %int_1
+               OpStore %x_33 %48
+         %50 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+         %51 = OpLoad %int %50
+         %52 = OpLoad %int %x_33
+         %53 = OpCopyObject %int %51
+         %54 = OpIEqual %bool %52 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpConvertSToF %float %31
+         %58 = OpCompositeConstruct %v4float %57 %27 %27 %57
+               OpStore %x_GLF_color %58
+               OpBranch %37
+         %55 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %59 = OpLoad %int %x_33
+               OpStore %x_32_phi %59
+               OpBranch %36
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..7ccdb81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.spvasm.expected.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_32_phi : i32;
+  let x_24 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_25 : f32 = f32(x_24);
+  x_GLF_color = vec4<f32>(x_25, x_25, x_25, x_25);
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_30 : i32 = ((x_28 << bitcast<u32>(x_28)) >> bitcast<u32>(1));
+  x_32_phi = x_24;
+  loop {
+    let x_32 : i32 = x_32_phi;
+    if ((x_30 < 10)) {
+    } else {
+      break;
+    }
+    var x_33 : i32;
+    x_33 = (x_32 + 1);
+    let x_39 : i32 = x_5.x_GLF_uniform_int_values[2];
+    if ((x_33 == bitcast<i32>(x_39))) {
+      let x_43 : f32 = f32(x_28);
+      x_GLF_color = vec4<f32>(x_43, x_25, x_25, x_43);
+      break;
+    }
+
+    continuing {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
new file mode 100644
index 0000000..7ccdb81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_32_phi : i32;
+  let x_24 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_25 : f32 = f32(x_24);
+  x_GLF_color = vec4<f32>(x_25, x_25, x_25, x_25);
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_30 : i32 = ((x_28 << bitcast<u32>(x_28)) >> bitcast<u32>(1));
+  x_32_phi = x_24;
+  loop {
+    let x_32 : i32 = x_32_phi;
+    if ((x_30 < 10)) {
+    } else {
+      break;
+    }
+    var x_33 : i32;
+    x_33 = (x_32 + 1);
+    let x_39 : i32 = x_5.x_GLF_uniform_int_values[2];
+    if ((x_33 == bitcast<i32>(x_39))) {
+      let x_43 : f32 = f32(x_28);
+      x_GLF_color = vec4<f32>(x_43, x_25, x_25, x_43);
+      break;
+    }
+
+    continuing {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..9531ab8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.hlsl
@@ -0,0 +1,48 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[3];
+};
+
+void main_1() {
+  int x_32_phi = 0;
+  const int x_24 = asint(x_5[1].x);
+  const float x_25 = float(x_24);
+  x_GLF_color = float4(x_25, x_25, x_25, x_25);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_28 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_30 = ((x_28 << asuint(x_28)) >> asuint(1));
+  x_32_phi = x_24;
+  while (true) {
+    const int x_32 = x_32_phi;
+    if ((x_30 < 10)) {
+    } else {
+      break;
+    }
+    int x_33 = 0;
+    x_33 = (x_32 + 1);
+    const int x_39 = asint(x_5[2].x);
+    if ((x_33 == asint(x_39))) {
+      const float x_43 = float(x_28);
+      x_GLF_color = float4(x_43, x_25, x_25, x_43);
+      break;
+    }
+    {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.msl
new file mode 100644
index 0000000..6500f1c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int x_32_phi = 0;
+  int const x_24 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  float const x_25 = float(x_24);
+  *(tint_symbol_4) = float4(x_25, x_25, x_25, x_25);
+  int const x_28 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_30 = ((x_28 << as_type<uint>(x_28)) >> as_type<uint>(1));
+  x_32_phi = x_24;
+  while (true) {
+    int const x_32 = x_32_phi;
+    if ((x_30 < 10)) {
+    } else {
+      break;
+    }
+    int x_33 = 0;
+    x_33 = (x_32 + 1);
+    int const x_39 = x_5.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_33 == as_type<int>(x_39))) {
+      float const x_43 = float(x_28);
+      *(tint_symbol_4) = float4(x_43, x_25, x_25, x_43);
+      break;
+    }
+    {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..4dab00b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_32_phi "x_32_phi"
+               OpName %x_33 "x_33"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+   %x_32_phi = OpVariable %_ptr_Function_int Function %21
+       %x_33 = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %26 = OpLoad %int %25
+         %27 = OpConvertSToF %float %26
+         %28 = OpCompositeConstruct %v4float %27 %27 %27 %27
+               OpStore %x_GLF_color %28
+         %30 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpBitcast %uint %31
+         %33 = OpShiftLeftLogical %int %31 %32
+         %34 = OpBitcast %uint %int_1
+         %35 = OpShiftRightArithmetic %int %33 %34
+               OpStore %x_32_phi %26
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %x_32_phi
+         %42 = OpSLessThan %bool %35 %int_10
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %37
+         %44 = OpLabel
+         %48 = OpIAdd %int %40 %int_1
+               OpStore %x_33 %48
+         %50 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+         %51 = OpLoad %int %50
+         %52 = OpLoad %int %x_33
+         %53 = OpCopyObject %int %51
+         %54 = OpIEqual %bool %52 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpConvertSToF %float %31
+         %58 = OpCompositeConstruct %v4float %57 %27 %27 %57
+               OpStore %x_GLF_color %58
+               OpBranch %37
+         %55 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %59 = OpLoad %int %x_33
+               OpStore %x_32_phi %59
+               OpBranch %36
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..7ccdb81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl.expected.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_32_phi : i32;
+  let x_24 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_25 : f32 = f32(x_24);
+  x_GLF_color = vec4<f32>(x_25, x_25, x_25, x_25);
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_30 : i32 = ((x_28 << bitcast<u32>(x_28)) >> bitcast<u32>(1));
+  x_32_phi = x_24;
+  loop {
+    let x_32 : i32 = x_32_phi;
+    if ((x_30 < 10)) {
+    } else {
+      break;
+    }
+    var x_33 : i32;
+    x_33 = (x_32 + 1);
+    let x_39 : i32 = x_5.x_GLF_uniform_int_values[2];
+    if ((x_33 == bitcast<i32>(x_39))) {
+      let x_43 : f32 = f32(x_28);
+      x_GLF_color = vec4<f32>(x_43, x_25, x_25, x_43);
+      break;
+    }
+
+    continuing {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm
new file mode 100644
index 0000000..8b37477
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm
@@ -0,0 +1,154 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %v "v"
+               OpName %i "i"
+               OpName %k "k"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %j_0 "j"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+         %15 = OpTypeFunction %v3float
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_1 = OpConstant %float 1
+         %19 = OpConstantComposite %v2float %float_1 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_4 = OpConstant %float 4
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %33 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+     %uint_2 = OpConstant %uint 2
+%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
+%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+      %int_4 = OpConstant %int 4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %12
+         %41 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function
+       %data = OpVariable %_ptr_Function__arr_v3float_uint_2 Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+               OpStore %j %int_0
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %j
+         %47 = OpSLessThan %bool %46 %int_1
+               OpBranchConditional %47 %48 %43
+         %48 = OpLabel
+         %49 = OpLoad %int %j
+         %50 = OpFunctionCall %v3float %func_
+         %51 = OpAccessChain %_ptr_Function_v3float %data %49
+               OpStore %51 %50
+               OpBranch %44
+         %44 = OpLabel
+         %52 = OpLoad %int %j
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %j %53
+               OpBranch %42
+         %43 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %j_0
+         %59 = OpSLessThan %bool %58 %int_1
+               OpBranchConditional %59 %60 %55
+         %60 = OpLabel
+         %61 = OpLoad %int %j_0
+         %62 = OpIMul %int %int_4 %61
+         %63 = OpIAdd %int %62 %int_1
+         %64 = OpFunctionCall %v3float %func_
+         %65 = OpAccessChain %_ptr_Function_v3float %data %63
+               OpStore %65 %64
+               OpBranch %56
+         %56 = OpLabel
+         %66 = OpLoad %int %j_0
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %j_0 %67
+               OpBranch %54
+         %55 = OpLabel
+         %68 = OpAccessChain %_ptr_Function_v3float %data %int_0
+         %69 = OpLoad %v3float %68
+         %70 = OpCompositeExtract %float %69 0
+         %71 = OpCompositeExtract %float %69 1
+         %72 = OpCompositeExtract %float %69 2
+         %73 = OpCompositeConstruct %v4float %70 %71 %72 %float_1
+               OpStore %_GLF_color %73
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %v3float None %15
+         %74 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function
+          %i = OpVariable %_ptr_Function_int Function
+          %k = OpVariable %_ptr_Function_int Function
+               OpStore %v %19
+               OpStore %i %int_0
+               OpStore %k %int_0
+               OpBranch %75
+         %75 = OpLabel
+               OpLoopMerge %76 %77 None
+               OpBranch %78
+         %78 = OpLabel
+         %79 = OpLoad %int %k
+         %80 = OpSLessThan %bool %79 %int_2
+               OpBranchConditional %80 %81 %76
+         %81 = OpLabel
+         %82 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %83 = OpLoad %float %82
+         %84 = OpFAdd %float %83 %float_1
+         %85 = OpFOrdGreaterThan %bool %84 %float_4
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+               OpBranch %76
+         %86 = OpLabel
+         %88 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %88 %float_1
+         %89 = OpLoad %int %i
+         %90 = OpIAdd %int %89 %int_1
+               OpStore %i %90
+               OpBranch %77
+         %77 = OpLabel
+         %91 = OpLoad %int %k
+         %92 = OpIAdd %int %91 %int_1
+               OpStore %k %92
+               OpBranch %75
+         %76 = OpLabel
+         %93 = OpLoad %int %i
+         %94 = OpSLessThan %bool %93 %int_10
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+               OpReturnValue %32
+         %97 = OpLabel
+               OpReturnValue %33
+         %95 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2cde1cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,65 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 func_() {
+  float2 v = float2(0.0f, 0.0f);
+  int i = 0;
+  int k = 0;
+  v = float2(1.0f, 1.0f);
+  i = 0;
+  k = 0;
+  {
+    for(; (k < 2); k = (k + 1)) {
+      const float x_83 = v.y;
+      if (((x_83 + 1.0f) > 4.0f)) {
+        break;
+      }
+      v.y = 1.0f;
+      i = (i + 1);
+    }
+  }
+  if ((i < 10)) {
+    return float3(1.0f, 0.0f, 0.0f);
+  } else {
+    return float3(0.0f, 0.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  int j = 0;
+  float3 data[2] = (float3[2])0;
+  int j_1 = 0;
+  j = 0;
+  {
+    for(; (j < 1); j = (j + 1)) {
+      const int x_49 = j;
+      const float3 x_50 = func_();
+      data[x_49] = x_50;
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 1); j_1 = (j_1 + 1)) {
+      const int x_61 = j_1;
+      const float3 x_64 = func_();
+      data[((4 * x_61) + 1)] = x_64;
+    }
+  }
+  const float3 x_69 = data[0];
+  x_GLF_color = float4(x_69.x, x_69.y, x_69.z, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..0932150
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.msl
@@ -0,0 +1,94 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float3 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 func_() {
+  float2 v = 0.0f;
+  int i = 0;
+  int k = 0;
+  v = float2(1.0f, 1.0f);
+  i = 0;
+  k = 0;
+  while (true) {
+    int const x_79 = k;
+    if ((x_79 < 2)) {
+    } else {
+      break;
+    }
+    float const x_83 = v.y;
+    if (((x_83 + 1.0f) > 4.0f)) {
+      break;
+    }
+    v.y = 1.0f;
+    int const x_89 = i;
+    i = (x_89 + 1);
+    {
+      int const x_91 = k;
+      k = (x_91 + 1);
+    }
+  }
+  int const x_93 = i;
+  if ((x_93 < 10)) {
+    return float3(1.0f, 0.0f, 0.0f);
+  } else {
+    return float3(0.0f, 0.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  int j = 0;
+  tint_array_wrapper data = {};
+  int j_1 = 0;
+  j = 0;
+  while (true) {
+    int const x_46 = j;
+    if ((x_46 < 1)) {
+    } else {
+      break;
+    }
+    int const x_49 = j;
+    float3 const x_50 = func_();
+    data.arr[x_49] = x_50;
+    {
+      int const x_52 = j;
+      j = (x_52 + 1);
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_58 = j_1;
+    if ((x_58 < 1)) {
+    } else {
+      break;
+    }
+    int const x_61 = j_1;
+    float3 const x_64 = func_();
+    data.arr[((4 * x_61) + 1)] = x_64;
+    {
+      int const x_66 = j_1;
+      j_1 = (x_66 + 1);
+    }
+  }
+  float3 const x_69 = data.arr[0];
+  *(tint_symbol_4) = float4(x_69.x, x_69.y, x_69.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..74c4d05
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,204 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %v "v"
+               OpName %i "i"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %j_1 "j_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v3float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v2float %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_4 = OpConstant %float 4
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+    %float_0 = OpConstant %float 0
+         %58 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %59 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %60 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %61 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
+%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
+         %70 = OpConstantNull %_arr_v3float_uint_2
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %110 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v3float None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %15
+          %i = OpVariable %_ptr_Function_int Function %19
+          %k = OpVariable %_ptr_Function_int Function %19
+               OpStore %v %22
+               OpStore %i %int_0
+               OpStore %k %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %k
+         %30 = OpSLessThan %bool %28 %int_2
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+         %38 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFAdd %float %39 %float_1
+         %42 = OpFOrdGreaterThan %bool %40 %float_4
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %25
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %45 %float_1
+         %46 = OpLoad %int %i
+         %48 = OpIAdd %int %46 %int_1
+               OpStore %i %48
+               OpBranch %26
+         %26 = OpLabel
+         %49 = OpLoad %int %k
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %k %50
+               OpBranch %24
+         %25 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpSLessThan %bool %51 %int_10
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpReturnValue %58
+         %56 = OpLabel
+               OpReturnValue %59
+         %54 = OpLabel
+               OpReturnValue %60
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %61
+         %64 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %19
+       %data = OpVariable %_ptr_Function__arr_v3float_uint_2 Function %70
+        %j_1 = OpVariable %_ptr_Function_int Function %19
+               OpStore %j %int_0
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %int %j
+         %77 = OpSLessThan %bool %76 %int_1
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %73
+         %78 = OpLabel
+         %81 = OpLoad %int %j
+         %82 = OpFunctionCall %v3float %func_
+         %84 = OpAccessChain %_ptr_Function_v3float %data %81
+               OpStore %84 %82
+               OpBranch %74
+         %74 = OpLabel
+         %85 = OpLoad %int %j
+         %86 = OpIAdd %int %85 %int_1
+               OpStore %j %86
+               OpBranch %72
+         %73 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpLoad %int %j_1
+         %92 = OpSLessThan %bool %91 %int_1
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpBranch %93
+         %95 = OpLabel
+               OpBranch %88
+         %93 = OpLabel
+         %96 = OpLoad %int %j_1
+         %97 = OpFunctionCall %v3float %func_
+         %99 = OpIMul %int %int_4 %96
+        %100 = OpIAdd %int %99 %int_1
+        %101 = OpAccessChain %_ptr_Function_v3float %data %100
+               OpStore %101 %97
+               OpBranch %89
+         %89 = OpLabel
+        %102 = OpLoad %int %j_1
+        %103 = OpIAdd %int %102 %int_1
+               OpStore %j_1 %103
+               OpBranch %87
+         %88 = OpLabel
+        %104 = OpAccessChain %_ptr_Function_v3float %data %int_0
+        %105 = OpLoad %v3float %104
+        %106 = OpCompositeExtract %float %105 0
+        %107 = OpCompositeExtract %float %105 1
+        %108 = OpCompositeExtract %float %105 2
+        %109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1
+               OpStore %x_GLF_color %109
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %110
+%tint_symbol = OpFunctionParameter %main_out
+        %114 = OpLabel
+        %115 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %115
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %61
+        %117 = OpLabel
+        %118 = OpFunctionCall %void %main_1
+        %120 = OpLoad %v4float %x_GLF_color
+        %121 = OpCompositeConstruct %main_out %120
+        %119 = OpFunctionCall %void %tint_symbol_2 %121
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..0a12739
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,88 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec3<f32> {
+  var v : vec2<f32>;
+  var i : i32;
+  var k : i32;
+  v = vec2<f32>(1.0, 1.0);
+  i = 0;
+  k = 0;
+  loop {
+    let x_79 : i32 = k;
+    if ((x_79 < 2)) {
+    } else {
+      break;
+    }
+    let x_83 : f32 = v.y;
+    if (((x_83 + 1.0) > 4.0)) {
+      break;
+    }
+    v.y = 1.0;
+    let x_89 : i32 = i;
+    i = (x_89 + 1);
+
+    continuing {
+      let x_91 : i32 = k;
+      k = (x_91 + 1);
+    }
+  }
+  let x_93 : i32 = i;
+  if ((x_93 < 10)) {
+    return vec3<f32>(1.0, 0.0, 0.0);
+  } else {
+    return vec3<f32>(0.0, 0.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var j : i32;
+  var data : array<vec3<f32>, 2>;
+  var j_1 : i32;
+  j = 0;
+  loop {
+    let x_46 : i32 = j;
+    if ((x_46 < 1)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = j;
+    let x_50 : vec3<f32> = func_();
+    data[x_49] = x_50;
+
+    continuing {
+      let x_52 : i32 = j;
+      j = (x_52 + 1);
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_58 : i32 = j_1;
+    if ((x_58 < 1)) {
+    } else {
+      break;
+    }
+    let x_61 : i32 = j_1;
+    let x_64 : vec3<f32> = func_();
+    data[((4 * x_61) + 1)] = x_64;
+
+    continuing {
+      let x_66 : i32 = j_1;
+      j_1 = (x_66 + 1);
+    }
+  }
+  let x_69 : vec3<f32> = data[0];
+  x_GLF_color = vec4<f32>(x_69.x, x_69.y, x_69.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
new file mode 100644
index 0000000..0a12739
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
@@ -0,0 +1,88 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec3<f32> {
+  var v : vec2<f32>;
+  var i : i32;
+  var k : i32;
+  v = vec2<f32>(1.0, 1.0);
+  i = 0;
+  k = 0;
+  loop {
+    let x_79 : i32 = k;
+    if ((x_79 < 2)) {
+    } else {
+      break;
+    }
+    let x_83 : f32 = v.y;
+    if (((x_83 + 1.0) > 4.0)) {
+      break;
+    }
+    v.y = 1.0;
+    let x_89 : i32 = i;
+    i = (x_89 + 1);
+
+    continuing {
+      let x_91 : i32 = k;
+      k = (x_91 + 1);
+    }
+  }
+  let x_93 : i32 = i;
+  if ((x_93 < 10)) {
+    return vec3<f32>(1.0, 0.0, 0.0);
+  } else {
+    return vec3<f32>(0.0, 0.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var j : i32;
+  var data : array<vec3<f32>, 2>;
+  var j_1 : i32;
+  j = 0;
+  loop {
+    let x_46 : i32 = j;
+    if ((x_46 < 1)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = j;
+    let x_50 : vec3<f32> = func_();
+    data[x_49] = x_50;
+
+    continuing {
+      let x_52 : i32 = j;
+      j = (x_52 + 1);
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_58 : i32 = j_1;
+    if ((x_58 < 1)) {
+    } else {
+      break;
+    }
+    let x_61 : i32 = j_1;
+    let x_64 : vec3<f32> = func_();
+    data[((4 * x_61) + 1)] = x_64;
+
+    continuing {
+      let x_66 : i32 = j_1;
+      j_1 = (x_66 + 1);
+    }
+  }
+  let x_69 : vec3<f32> = data[0];
+  x_GLF_color = vec4<f32>(x_69.x, x_69.y, x_69.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2cde1cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,65 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 func_() {
+  float2 v = float2(0.0f, 0.0f);
+  int i = 0;
+  int k = 0;
+  v = float2(1.0f, 1.0f);
+  i = 0;
+  k = 0;
+  {
+    for(; (k < 2); k = (k + 1)) {
+      const float x_83 = v.y;
+      if (((x_83 + 1.0f) > 4.0f)) {
+        break;
+      }
+      v.y = 1.0f;
+      i = (i + 1);
+    }
+  }
+  if ((i < 10)) {
+    return float3(1.0f, 0.0f, 0.0f);
+  } else {
+    return float3(0.0f, 0.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  int j = 0;
+  float3 data[2] = (float3[2])0;
+  int j_1 = 0;
+  j = 0;
+  {
+    for(; (j < 1); j = (j + 1)) {
+      const int x_49 = j;
+      const float3 x_50 = func_();
+      data[x_49] = x_50;
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 1); j_1 = (j_1 + 1)) {
+      const int x_61 = j_1;
+      const float3 x_64 = func_();
+      data[((4 * x_61) + 1)] = x_64;
+    }
+  }
+  const float3 x_69 = data[0];
+  x_GLF_color = float4(x_69.x, x_69.y, x_69.z, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..0932150
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.msl
@@ -0,0 +1,94 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float3 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 func_() {
+  float2 v = 0.0f;
+  int i = 0;
+  int k = 0;
+  v = float2(1.0f, 1.0f);
+  i = 0;
+  k = 0;
+  while (true) {
+    int const x_79 = k;
+    if ((x_79 < 2)) {
+    } else {
+      break;
+    }
+    float const x_83 = v.y;
+    if (((x_83 + 1.0f) > 4.0f)) {
+      break;
+    }
+    v.y = 1.0f;
+    int const x_89 = i;
+    i = (x_89 + 1);
+    {
+      int const x_91 = k;
+      k = (x_91 + 1);
+    }
+  }
+  int const x_93 = i;
+  if ((x_93 < 10)) {
+    return float3(1.0f, 0.0f, 0.0f);
+  } else {
+    return float3(0.0f, 0.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  int j = 0;
+  tint_array_wrapper data = {};
+  int j_1 = 0;
+  j = 0;
+  while (true) {
+    int const x_46 = j;
+    if ((x_46 < 1)) {
+    } else {
+      break;
+    }
+    int const x_49 = j;
+    float3 const x_50 = func_();
+    data.arr[x_49] = x_50;
+    {
+      int const x_52 = j;
+      j = (x_52 + 1);
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_58 = j_1;
+    if ((x_58 < 1)) {
+    } else {
+      break;
+    }
+    int const x_61 = j_1;
+    float3 const x_64 = func_();
+    data.arr[((4 * x_61) + 1)] = x_64;
+    {
+      int const x_66 = j_1;
+      j_1 = (x_66 + 1);
+    }
+  }
+  float3 const x_69 = data.arr[0];
+  *(tint_symbol_4) = float4(x_69.x, x_69.y, x_69.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..74c4d05
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,204 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 122
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %v "v"
+               OpName %i "i"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %j_1 "j_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v3float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v2float %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_4 = OpConstant %float 4
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+    %float_0 = OpConstant %float 0
+         %58 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %59 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %60 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %61 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2
+%_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2
+         %70 = OpConstantNull %_arr_v3float_uint_2
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %110 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v3float None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %15
+          %i = OpVariable %_ptr_Function_int Function %19
+          %k = OpVariable %_ptr_Function_int Function %19
+               OpStore %v %22
+               OpStore %i %int_0
+               OpStore %k %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %k
+         %30 = OpSLessThan %bool %28 %int_2
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+         %38 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFAdd %float %39 %float_1
+         %42 = OpFOrdGreaterThan %bool %40 %float_4
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %25
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %45 %float_1
+         %46 = OpLoad %int %i
+         %48 = OpIAdd %int %46 %int_1
+               OpStore %i %48
+               OpBranch %26
+         %26 = OpLabel
+         %49 = OpLoad %int %k
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %k %50
+               OpBranch %24
+         %25 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpSLessThan %bool %51 %int_10
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpReturnValue %58
+         %56 = OpLabel
+               OpReturnValue %59
+         %54 = OpLabel
+               OpReturnValue %60
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %61
+         %64 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %19
+       %data = OpVariable %_ptr_Function__arr_v3float_uint_2 Function %70
+        %j_1 = OpVariable %_ptr_Function_int Function %19
+               OpStore %j %int_0
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %int %j
+         %77 = OpSLessThan %bool %76 %int_1
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %73
+         %78 = OpLabel
+         %81 = OpLoad %int %j
+         %82 = OpFunctionCall %v3float %func_
+         %84 = OpAccessChain %_ptr_Function_v3float %data %81
+               OpStore %84 %82
+               OpBranch %74
+         %74 = OpLabel
+         %85 = OpLoad %int %j
+         %86 = OpIAdd %int %85 %int_1
+               OpStore %j %86
+               OpBranch %72
+         %73 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpLoad %int %j_1
+         %92 = OpSLessThan %bool %91 %int_1
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpBranch %93
+         %95 = OpLabel
+               OpBranch %88
+         %93 = OpLabel
+         %96 = OpLoad %int %j_1
+         %97 = OpFunctionCall %v3float %func_
+         %99 = OpIMul %int %int_4 %96
+        %100 = OpIAdd %int %99 %int_1
+        %101 = OpAccessChain %_ptr_Function_v3float %data %100
+               OpStore %101 %97
+               OpBranch %89
+         %89 = OpLabel
+        %102 = OpLoad %int %j_1
+        %103 = OpIAdd %int %102 %int_1
+               OpStore %j_1 %103
+               OpBranch %87
+         %88 = OpLabel
+        %104 = OpAccessChain %_ptr_Function_v3float %data %int_0
+        %105 = OpLoad %v3float %104
+        %106 = OpCompositeExtract %float %105 0
+        %107 = OpCompositeExtract %float %105 1
+        %108 = OpCompositeExtract %float %105 2
+        %109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1
+               OpStore %x_GLF_color %109
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %110
+%tint_symbol = OpFunctionParameter %main_out
+        %114 = OpLabel
+        %115 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %115
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %61
+        %117 = OpLabel
+        %118 = OpFunctionCall %void %main_1
+        %120 = OpLoad %v4float %x_GLF_color
+        %121 = OpCompositeConstruct %main_out %120
+        %119 = OpFunctionCall %void %tint_symbol_2 %121
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..0a12739
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,88 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec3<f32> {
+  var v : vec2<f32>;
+  var i : i32;
+  var k : i32;
+  v = vec2<f32>(1.0, 1.0);
+  i = 0;
+  k = 0;
+  loop {
+    let x_79 : i32 = k;
+    if ((x_79 < 2)) {
+    } else {
+      break;
+    }
+    let x_83 : f32 = v.y;
+    if (((x_83 + 1.0) > 4.0)) {
+      break;
+    }
+    v.y = 1.0;
+    let x_89 : i32 = i;
+    i = (x_89 + 1);
+
+    continuing {
+      let x_91 : i32 = k;
+      k = (x_91 + 1);
+    }
+  }
+  let x_93 : i32 = i;
+  if ((x_93 < 10)) {
+    return vec3<f32>(1.0, 0.0, 0.0);
+  } else {
+    return vec3<f32>(0.0, 0.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var j : i32;
+  var data : array<vec3<f32>, 2>;
+  var j_1 : i32;
+  j = 0;
+  loop {
+    let x_46 : i32 = j;
+    if ((x_46 < 1)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = j;
+    let x_50 : vec3<f32> = func_();
+    data[x_49] = x_50;
+
+    continuing {
+      let x_52 : i32 = j;
+      j = (x_52 + 1);
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_58 : i32 = j_1;
+    if ((x_58 < 1)) {
+    } else {
+      break;
+    }
+    let x_61 : i32 = j_1;
+    let x_64 : vec3<f32> = func_();
+    data[((4 * x_61) + 1)] = x_64;
+
+    continuing {
+      let x_66 : i32 = j_1;
+      j_1 = (x_66 + 1);
+    }
+  }
+  let x_69 : vec3<f32> = data[0];
+  x_GLF_color = vec4<f32>(x_69.x, x_69.y, x_69.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm
new file mode 100644
index 0000000..9b85a89
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm
@@ -0,0 +1,134 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %13
+         %32 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %34 = OpLoad %float %33
+               OpStore %f %34
+         %35 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %36 = OpLoad %int %35
+               OpStore %i %36
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpSLessThan %bool %41 %43
+               OpBranchConditional %44 %45 %38
+         %45 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %47 = OpLoad %float %46
+         %48 = OpFNegate %float %47
+         %49 = OpLoad %float %f
+         %50 = OpFMul %float %48 %49
+         %51 = OpExtInst %float %1 FAbs %50
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %53 = OpLoad %float %52
+         %54 = OpFAdd %float %51 %53
+               OpStore %f %54
+               OpBranch %39
+         %39 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpIAdd %int %55 %int_1
+               OpStore %i %56
+               OpBranch %37
+         %38 = OpLabel
+         %57 = OpLoad %float %f
+         %58 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %59 = OpLoad %float %58
+         %60 = OpFOrdGreaterThan %bool %57 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+         %63 = OpLoad %float %f
+         %64 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %65 = OpLoad %float %64
+         %66 = OpFOrdLessThan %bool %63 %65
+               OpBranch %61
+         %61 = OpLabel
+         %67 = OpPhi %bool %60 %38 %66 %62
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpCompositeConstruct %v4float %73 %76 %79 %82
+               OpStore %_GLF_color %83
+               OpBranch %68
+         %70 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %85
+         %87 = OpCompositeConstruct %v4float %86 %86 %86 %86
+               OpStore %_GLF_color %87
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..98286fb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int i = 0;
+  bool x_66 = false;
+  bool x_67_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  f = x_34;
+  const int x_36 = asint(x_9[1].x);
+  i = x_36;
+  while (true) {
+    const int x_41 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    const float x_47 = asfloat(x_6[3].x);
+    const float x_49 = f;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_53 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    f = (abs((-(x_47) * x_49)) + x_53);
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_57 = f;
+  const float x_59 = asfloat(x_6[1].x);
+  const bool x_60 = (x_57 > x_59);
+  x_67_phi = x_60;
+  if (x_60) {
+    const float x_63 = f;
+    const float x_65 = asfloat(x_6[2].x);
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  if (x_67_phi) {
+    const int x_72 = asint(x_9[2].x);
+    const int x_75 = asint(x_9[1].x);
+    const int x_78 = asint(x_9[1].x);
+    const int x_81 = asint(x_9[2].x);
+    x_GLF_color = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    const int x_85 = asint(x_9[1].x);
+    const float x_86 = float(x_85);
+    x_GLF_color = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d81e3ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.msl
@@ -0,0 +1,88 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  int i = 0;
+  bool x_66 = false;
+  bool x_67_phi = false;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  f = x_34;
+  int const x_36 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_36;
+  while (true) {
+    int const x_41 = i;
+    int const x_43 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    float const x_47 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_49 = f;
+    float const x_53 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    f = (fabs((-(x_47) * x_49)) + x_53);
+    {
+      int const x_55 = i;
+      i = (x_55 + 1);
+    }
+  }
+  float const x_57 = f;
+  float const x_59 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  bool const x_60 = (x_57 > x_59);
+  x_67_phi = x_60;
+  if (x_60) {
+    float const x_63 = f;
+    float const x_65 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  bool const x_67 = x_67_phi;
+  if (x_67) {
+    int const x_72 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    int const x_75 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_86 = float(x_85);
+    *(tint_symbol_4) = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e9a94b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,185 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 113
+; Schema: 0
+               OpCapability Shader
+         %62 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %x_66 "x_66"
+               OpName %x_67_phi "x_67_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %101 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %29
+       %x_66 = OpVariable %_ptr_Function_bool Function %33
+   %x_67_phi = OpVariable %_ptr_Function_bool Function %33
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+               OpStore %f %39
+         %42 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %43 = OpLoad %int %42
+               OpStore %i %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpSLessThan %bool %48 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %45
+         %52 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %57 = OpLoad %float %56
+         %58 = OpLoad %float %f
+         %59 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %60 = OpLoad %float %59
+         %63 = OpFNegate %float %57
+         %64 = OpFMul %float %63 %58
+         %61 = OpExtInst %float %62 FAbs %64
+         %65 = OpFAdd %float %61 %60
+               OpStore %f %65
+               OpBranch %46
+         %46 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %i %67
+               OpBranch %44
+         %45 = OpLabel
+         %68 = OpLoad %float %f
+         %69 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %70 = OpLoad %float %69
+         %71 = OpFOrdGreaterThan %bool %68 %70
+               OpStore %x_67_phi %71
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+         %74 = OpLoad %float %f
+         %76 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %77 = OpLoad %float %76
+         %78 = OpFOrdLessThan %bool %74 %77
+               OpStore %x_66 %78
+         %79 = OpLoad %bool %x_66
+               OpStore %x_67_phi %79
+               OpBranch %72
+         %72 = OpLabel
+         %80 = OpLoad %bool %x_67_phi
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %85
+         %93 = OpConvertSToF %float %87
+         %94 = OpConvertSToF %float %89
+         %95 = OpConvertSToF %float %91
+         %96 = OpCompositeConstruct %v4float %92 %93 %94 %95
+               OpStore %x_GLF_color %96
+               OpBranch %81
+         %83 = OpLabel
+         %97 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpConvertSToF %float %98
+        %100 = OpCompositeConstruct %v4float %99 %99 %99 %99
+               OpStore %x_GLF_color %100
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %101
+%tint_symbol = OpFunctionParameter %main_out
+        %105 = OpLabel
+        %106 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %106
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %108 = OpLabel
+        %109 = OpFunctionCall %void %main_1
+        %111 = OpLoad %v4float %x_GLF_color
+        %112 = OpCompositeConstruct %main_out %111
+        %110 = OpFunctionCall %void %tint_symbol_2 %112
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..098a4c9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,81 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var x_66 : bool;
+  var x_67_phi : bool;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f = x_34;
+  let x_36 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_36;
+  loop {
+    let x_41 : i32 = i;
+    let x_43 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    let x_47 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_49 : f32 = f;
+    let x_53 : f32 = x_6.x_GLF_uniform_float_values[0];
+    f = (abs((-(x_47) * x_49)) + x_53);
+
+    continuing {
+      let x_55 : i32 = i;
+      i = (x_55 + 1);
+    }
+  }
+  let x_57 : f32 = f;
+  let x_59 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_60 : bool = (x_57 > x_59);
+  x_67_phi = x_60;
+  if (x_60) {
+    let x_63 : f32 = f;
+    let x_65 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  let x_67 : bool = x_67_phi;
+  if (x_67) {
+    let x_72 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_75 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_9.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+  } else {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_85);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
new file mode 100644
index 0000000..098a4c9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
@@ -0,0 +1,81 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var x_66 : bool;
+  var x_67_phi : bool;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f = x_34;
+  let x_36 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_36;
+  loop {
+    let x_41 : i32 = i;
+    let x_43 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    let x_47 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_49 : f32 = f;
+    let x_53 : f32 = x_6.x_GLF_uniform_float_values[0];
+    f = (abs((-(x_47) * x_49)) + x_53);
+
+    continuing {
+      let x_55 : i32 = i;
+      i = (x_55 + 1);
+    }
+  }
+  let x_57 : f32 = f;
+  let x_59 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_60 : bool = (x_57 > x_59);
+  x_67_phi = x_60;
+  if (x_60) {
+    let x_63 : f32 = f;
+    let x_65 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  let x_67 : bool = x_67_phi;
+  if (x_67) {
+    let x_72 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_75 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_9.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+  } else {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_85);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..98286fb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int i = 0;
+  bool x_66 = false;
+  bool x_67_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  f = x_34;
+  const int x_36 = asint(x_9[1].x);
+  i = x_36;
+  while (true) {
+    const int x_41 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    const float x_47 = asfloat(x_6[3].x);
+    const float x_49 = f;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_53 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    f = (abs((-(x_47) * x_49)) + x_53);
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_57 = f;
+  const float x_59 = asfloat(x_6[1].x);
+  const bool x_60 = (x_57 > x_59);
+  x_67_phi = x_60;
+  if (x_60) {
+    const float x_63 = f;
+    const float x_65 = asfloat(x_6[2].x);
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  if (x_67_phi) {
+    const int x_72 = asint(x_9[2].x);
+    const int x_75 = asint(x_9[1].x);
+    const int x_78 = asint(x_9[1].x);
+    const int x_81 = asint(x_9[2].x);
+    x_GLF_color = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    const int x_85 = asint(x_9[1].x);
+    const float x_86 = float(x_85);
+    x_GLF_color = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d81e3ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.msl
@@ -0,0 +1,88 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  int i = 0;
+  bool x_66 = false;
+  bool x_67_phi = false;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  f = x_34;
+  int const x_36 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_36;
+  while (true) {
+    int const x_41 = i;
+    int const x_43 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    float const x_47 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_49 = f;
+    float const x_53 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    f = (fabs((-(x_47) * x_49)) + x_53);
+    {
+      int const x_55 = i;
+      i = (x_55 + 1);
+    }
+  }
+  float const x_57 = f;
+  float const x_59 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  bool const x_60 = (x_57 > x_59);
+  x_67_phi = x_60;
+  if (x_60) {
+    float const x_63 = f;
+    float const x_65 = x_6.x_GLF_uniform_float_values.arr[2].el;
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  bool const x_67 = x_67_phi;
+  if (x_67) {
+    int const x_72 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    int const x_75 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_86 = float(x_85);
+    *(tint_symbol_4) = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e9a94b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,185 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 113
+; Schema: 0
+               OpCapability Shader
+         %62 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %x_66 "x_66"
+               OpName %x_67_phi "x_67_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %33 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %101 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %29
+       %x_66 = OpVariable %_ptr_Function_bool Function %33
+   %x_67_phi = OpVariable %_ptr_Function_bool Function %33
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+               OpStore %f %39
+         %42 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %43 = OpLoad %int %42
+               OpStore %i %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpSLessThan %bool %48 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %45
+         %52 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %57 = OpLoad %float %56
+         %58 = OpLoad %float %f
+         %59 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %60 = OpLoad %float %59
+         %63 = OpFNegate %float %57
+         %64 = OpFMul %float %63 %58
+         %61 = OpExtInst %float %62 FAbs %64
+         %65 = OpFAdd %float %61 %60
+               OpStore %f %65
+               OpBranch %46
+         %46 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %i %67
+               OpBranch %44
+         %45 = OpLabel
+         %68 = OpLoad %float %f
+         %69 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %70 = OpLoad %float %69
+         %71 = OpFOrdGreaterThan %bool %68 %70
+               OpStore %x_67_phi %71
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+         %74 = OpLoad %float %f
+         %76 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %77 = OpLoad %float %76
+         %78 = OpFOrdLessThan %bool %74 %77
+               OpStore %x_66 %78
+         %79 = OpLoad %bool %x_66
+               OpStore %x_67_phi %79
+               OpBranch %72
+         %72 = OpLabel
+         %80 = OpLoad %bool %x_67_phi
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %85
+         %93 = OpConvertSToF %float %87
+         %94 = OpConvertSToF %float %89
+         %95 = OpConvertSToF %float %91
+         %96 = OpCompositeConstruct %v4float %92 %93 %94 %95
+               OpStore %x_GLF_color %96
+               OpBranch %81
+         %83 = OpLabel
+         %97 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpConvertSToF %float %98
+        %100 = OpCompositeConstruct %v4float %99 %99 %99 %99
+               OpStore %x_GLF_color %100
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %101
+%tint_symbol = OpFunctionParameter %main_out
+        %105 = OpLabel
+        %106 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %106
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %108 = OpLabel
+        %109 = OpFunctionCall %void %main_1
+        %111 = OpLoad %v4float %x_GLF_color
+        %112 = OpCompositeConstruct %main_out %111
+        %110 = OpFunctionCall %void %tint_symbol_2 %112
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..098a4c9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,81 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var x_66 : bool;
+  var x_67_phi : bool;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f = x_34;
+  let x_36 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_36;
+  loop {
+    let x_41 : i32 = i;
+    let x_43 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    let x_47 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_49 : f32 = f;
+    let x_53 : f32 = x_6.x_GLF_uniform_float_values[0];
+    f = (abs((-(x_47) * x_49)) + x_53);
+
+    continuing {
+      let x_55 : i32 = i;
+      i = (x_55 + 1);
+    }
+  }
+  let x_57 : f32 = f;
+  let x_59 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_60 : bool = (x_57 > x_59);
+  x_67_phi = x_60;
+  if (x_60) {
+    let x_63 : f32 = f;
+    let x_65 : f32 = x_6.x_GLF_uniform_float_values[2];
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  let x_67 : bool = x_67_phi;
+  if (x_67) {
+    let x_72 : i32 = x_9.x_GLF_uniform_int_values[2];
+    let x_75 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_9.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+  } else {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_85);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm
new file mode 100644
index 0000000..152dc38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm
@@ -0,0 +1,95 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%int_n4194304 = OpConstant %int -4194304
+      %float = OpTypeFloat 32
+    %float_0 = OpConstant %float 0
+     %int_n1 = OpConstant %int -1
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %27 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+         %32 = OpLoad %int %i
+         %33 = OpSLessThan %bool %32 %int_5
+               OpBranchConditional %33 %34 %29
+         %34 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %36 = OpLoad %int %35
+         %37 = OpIEqual %bool %36 %int_0
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+         %40 = OpBitcast %float %int_n4194304
+         %41 = OpExtInst %float %1 Floor %40
+         %42 = OpFOrdGreaterThan %bool %41 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %a %int_n1
+               OpBranch %29
+         %43 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %45 = OpLoad %int %a
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %a %46
+               OpBranch %30
+         %30 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %i %48
+               OpBranch %28
+         %29 = OpLabel
+         %49 = OpLoad %int %a
+         %50 = OpIEqual %bool %49 %int_5
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %51
+         %53 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..fc76837
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  {
+    for(; (i < 5); i = (i + 1)) {
+      const int x_36 = asint(x_7[0].x);
+      if ((x_36 == 0)) {
+        if ((floor(asfloat(-4194304)) > 0.0f)) {
+          a = -1;
+          break;
+        }
+      }
+      a = (a + 1);
+    }
+  }
+  if ((a == 5)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a1922a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_32 = i;
+    if ((x_32 < 5)) {
+    } else {
+      break;
+    }
+    int const x_36 = x_7.one;
+    if ((x_36 == 0)) {
+      if ((floor(as_type<float>(-4194304)) > 0.0f)) {
+        a = -1;
+        break;
+      }
+    }
+    int const x_45 = a;
+    a = (x_45 + 1);
+    {
+      int const x_47 = i;
+      i = (x_47 + 1);
+    }
+  }
+  int const x_49 = a;
+  if ((x_49 == 5)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e5c6e56
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,135 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 74
+; Schema: 0
+               OpCapability Shader
+         %41 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%int_n4194304 = OpConstant %int -4194304
+    %float_0 = OpConstant %float 0
+     %int_n1 = OpConstant %int -1
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %60 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %61 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %62 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %i
+         %27 = OpSLessThan %bool %25 %int_5
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpBranch %29
+         %31 = OpLabel
+               OpBranch %22
+         %29 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %36 = OpLoad %int %35
+         %37 = OpIEqual %bool %36 %int_0
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+         %42 = OpBitcast %float %int_n4194304
+         %40 = OpExtInst %float %41 Floor %42
+         %45 = OpFOrdGreaterThan %bool %40 %float_0
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpStore %a %int_n1
+               OpBranch %22
+         %46 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %49 = OpLoad %int %a
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %a %51
+               OpBranch %23
+         %23 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %21
+         %22 = OpLabel
+         %54 = OpLoad %int %a
+         %55 = OpIEqual %bool %54 %int_5
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpStore %x_GLF_color %60
+               OpBranch %56
+         %58 = OpLabel
+               OpStore %x_GLF_color %61
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %62
+%tint_symbol = OpFunctionParameter %main_out
+         %66 = OpLabel
+         %67 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %67
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %69 = OpLabel
+         %70 = OpFunctionCall %void %main_1
+         %72 = OpLoad %v4float %x_GLF_color
+         %73 = OpCompositeConstruct %main_out %72
+         %71 = OpFunctionCall %void %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8de51a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,54 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_32 : i32 = i;
+    if ((x_32 < 5)) {
+    } else {
+      break;
+    }
+    let x_36 : i32 = x_7.one;
+    if ((x_36 == 0)) {
+      if ((floor(bitcast<f32>(-4194304)) > 0.0)) {
+        a = -1;
+        break;
+      }
+    }
+    let x_45 : i32 = a;
+    a = (x_45 + 1);
+
+    continuing {
+      let x_47 : i32 = i;
+      i = (x_47 + 1);
+    }
+  }
+  let x_49 : i32 = a;
+  if ((x_49 == 5)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
new file mode 100644
index 0000000..8de51a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
@@ -0,0 +1,54 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_32 : i32 = i;
+    if ((x_32 < 5)) {
+    } else {
+      break;
+    }
+    let x_36 : i32 = x_7.one;
+    if ((x_36 == 0)) {
+      if ((floor(bitcast<f32>(-4194304)) > 0.0)) {
+        a = -1;
+        break;
+      }
+    }
+    let x_45 : i32 = a;
+    a = (x_45 + 1);
+
+    continuing {
+      let x_47 : i32 = i;
+      i = (x_47 + 1);
+    }
+  }
+  let x_49 : i32 = a;
+  if ((x_49 == 5)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..fc76837
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,43 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  {
+    for(; (i < 5); i = (i + 1)) {
+      const int x_36 = asint(x_7[0].x);
+      if ((x_36 == 0)) {
+        if ((floor(asfloat(-4194304)) > 0.0f)) {
+          a = -1;
+          break;
+        }
+      }
+      a = (a + 1);
+    }
+  }
+  if ((a == 5)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a1922a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_32 = i;
+    if ((x_32 < 5)) {
+    } else {
+      break;
+    }
+    int const x_36 = x_7.one;
+    if ((x_36 == 0)) {
+      if ((floor(as_type<float>(-4194304)) > 0.0f)) {
+        a = -1;
+        break;
+      }
+    }
+    int const x_45 = a;
+    a = (x_45 + 1);
+    {
+      int const x_47 = i;
+      i = (x_47 + 1);
+    }
+  }
+  int const x_49 = a;
+  if ((x_49 == 5)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e5c6e56
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,135 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 74
+; Schema: 0
+               OpCapability Shader
+         %41 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%int_n4194304 = OpConstant %int -4194304
+    %float_0 = OpConstant %float 0
+     %int_n1 = OpConstant %int -1
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %60 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %61 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %62 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %i
+         %27 = OpSLessThan %bool %25 %int_5
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpBranch %29
+         %31 = OpLabel
+               OpBranch %22
+         %29 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %36 = OpLoad %int %35
+         %37 = OpIEqual %bool %36 %int_0
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+         %42 = OpBitcast %float %int_n4194304
+         %40 = OpExtInst %float %41 Floor %42
+         %45 = OpFOrdGreaterThan %bool %40 %float_0
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpStore %a %int_n1
+               OpBranch %22
+         %46 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %49 = OpLoad %int %a
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %a %51
+               OpBranch %23
+         %23 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %21
+         %22 = OpLabel
+         %54 = OpLoad %int %a
+         %55 = OpIEqual %bool %54 %int_5
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpStore %x_GLF_color %60
+               OpBranch %56
+         %58 = OpLabel
+               OpStore %x_GLF_color %61
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %62
+%tint_symbol = OpFunctionParameter %main_out
+         %66 = OpLabel
+         %67 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %67
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %69 = OpLabel
+         %70 = OpFunctionCall %void %main_1
+         %72 = OpLoad %v4float %x_GLF_color
+         %73 = OpCompositeConstruct %main_out %72
+         %71 = OpFunctionCall %void %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8de51a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,54 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_32 : i32 = i;
+    if ((x_32 < 5)) {
+    } else {
+      break;
+    }
+    let x_36 : i32 = x_7.one;
+    if ((x_36 == 0)) {
+      if ((floor(bitcast<f32>(-4194304)) > 0.0)) {
+        a = -1;
+        break;
+      }
+    }
+    let x_45 : i32 = a;
+    a = (x_45 + 1);
+
+    continuing {
+      let x_47 : i32 = i;
+      i = (x_47 + 1);
+    }
+  }
+  let x_49 : i32 = a;
+  if ((x_49 == 5)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm
new file mode 100644
index 0000000..22dc573
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm
@@ -0,0 +1,137 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %int_100 = OpConstant %int 100
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_global_loop_count %int_0
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %36 = OpLoad %float %35
+               OpStore %f %36
+         %37 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %45 = OpLoad %int %44
+         %46 = OpSLessThan %bool %43 %45
+               OpBranchConditional %46 %47 %40
+         %47 = OpLabel
+         %48 = OpLoad %float %f
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpFOrdGreaterThan %bool %48 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpStore %f %float_1
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %55 = OpLoad %float %54
+         %56 = OpLoad %float %f
+         %57 = OpExtInst %float %1 FClamp %55 %float_1 %56
+         %58 = OpFSub %float %float_1 %57
+         %59 = OpLoad %int %i
+         %60 = OpConvertSToF %float %59
+         %61 = OpFAdd %float %58 %60
+               OpStore %f %61
+               OpBranch %41
+         %41 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %i %63
+               OpBranch %39
+         %40 = OpLabel
+         %64 = OpLoad %float %f
+         %65 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpFOrdEqual %bool %64 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpCompositeConstruct %v4float %73 %76 %79 %82
+               OpStore %_GLF_color %83
+               OpBranch %68
+         %70 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %85
+         %87 = OpCompositeConstruct %v4float %86 %86 %86 %86
+               OpStore %_GLF_color %87
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..58eeb4f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,67 @@
+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[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int i = 0;
+  x_GLF_global_loop_count = 0;
+  const float x_36 = asfloat(x_7[1].x);
+  f = x_36;
+  const int x_38 = asint(x_10[1].x);
+  i = x_38;
+  while (true) {
+    const int x_43 = i;
+    const int x_45 = asint(x_10[2].x);
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    const float x_48 = f;
+    const float x_50 = asfloat(x_7[1].x);
+    if ((x_48 > x_50)) {
+    }
+    f = 1.0f;
+    const float x_55 = asfloat(x_7[2].x);
+    f = ((1.0f - clamp(x_55, 1.0f, f)) + float(i));
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_64 = f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_66 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_64 == x_66)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_72 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_75 = asint(x_10[1].x);
+    const int x_78 = asint(x_10[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_81 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    const int x_85 = asint(x_10[1].x);
+    const float x_86 = float(x_85);
+    x_GLF_color = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..df997cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.msl
@@ -0,0 +1,84 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_10, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  float f = 0.0f;
+  int i = 0;
+  *(tint_symbol_4) = 0;
+  float const x_36 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  f = x_36;
+  int const x_38 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  i = x_38;
+  while (true) {
+    int const x_43 = i;
+    int const x_45 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    float const x_48 = f;
+    float const x_50 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    if ((x_48 > x_50)) {
+    }
+    f = 1.0f;
+    float const x_55 = x_7.x_GLF_uniform_float_values.arr[2].el;
+    float const x_56 = f;
+    int const x_59 = i;
+    f = ((1.0f - clamp(x_55, 1.0f, x_56)) + float(x_59));
+    {
+      int const x_62 = i;
+      i = (x_62 + 1);
+    }
+  }
+  float const x_64 = f;
+  float const x_66 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_64 == x_66)) {
+    int const x_72 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_75 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    int const x_85 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_86 = float(x_85);
+    *(tint_symbol_5) = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_10, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8f44a3e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,177 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+         %65 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %19 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %19
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %19
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %95 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %28
+          %i = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+         %35 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %36 = OpLoad %float %35
+               OpStore %f %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %39 = OpLoad %int %38
+               OpStore %i %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %47 = OpLoad %int %46
+         %48 = OpSLessThan %bool %44 %47
+               OpSelectionMerge %50 None
+               OpBranchConditional %48 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %41
+         %50 = OpLabel
+         %53 = OpLoad %float %f
+         %54 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %55 = OpLoad %float %54
+         %56 = OpFOrdGreaterThan %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+               OpStore %f %float_1
+         %60 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %61 = OpLoad %float %60
+         %62 = OpLoad %float %f
+         %63 = OpLoad %int %i
+         %64 = OpExtInst %float %65 NClamp %61 %float_1 %62
+         %66 = OpFSub %float %float_1 %64
+         %67 = OpConvertSToF %float %63
+         %68 = OpFAdd %float %66 %67
+               OpStore %f %68
+               OpBranch %42
+         %42 = OpLabel
+         %69 = OpLoad %int %i
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %i %70
+               OpBranch %40
+         %41 = OpLabel
+         %71 = OpLoad %float %f
+         %72 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %73 = OpLoad %float %72
+         %74 = OpFOrdEqual %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %79
+         %87 = OpConvertSToF %float %81
+         %88 = OpConvertSToF %float %83
+         %89 = OpConvertSToF %float %85
+         %90 = OpCompositeConstruct %v4float %86 %87 %88 %89
+               OpStore %x_GLF_color %90
+               OpBranch %75
+         %77 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpCompositeConstruct %v4float %93 %93 %93 %93
+               OpStore %x_GLF_color %94
+               OpBranch %75
+         %75 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %95
+%tint_symbol = OpFunctionParameter %main_out
+         %99 = OpLabel
+        %100 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %100
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %102 = OpLabel
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_2 %106
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f074ac2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  x_GLF_global_loop_count = 0;
+  let x_36 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = x_36;
+  let x_38 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_10.x_GLF_uniform_int_values[2];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_48 : f32 = f;
+    let x_50 : f32 = x_7.x_GLF_uniform_float_values[1];
+    if ((x_48 > x_50)) {
+    }
+    f = 1.0;
+    let x_55 : f32 = x_7.x_GLF_uniform_float_values[2];
+    let x_56 : f32 = f;
+    let x_59 : i32 = i;
+    f = ((1.0 - clamp(x_55, 1.0, x_56)) + f32(x_59));
+
+    continuing {
+      let x_62 : i32 = i;
+      i = (x_62 + 1);
+    }
+  }
+  let x_64 : f32 = f;
+  let x_66 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_64 == x_66)) {
+    let x_72 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_75 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+  } else {
+    let x_85 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_85);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
new file mode 100644
index 0000000..f074ac2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  x_GLF_global_loop_count = 0;
+  let x_36 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = x_36;
+  let x_38 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_10.x_GLF_uniform_int_values[2];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_48 : f32 = f;
+    let x_50 : f32 = x_7.x_GLF_uniform_float_values[1];
+    if ((x_48 > x_50)) {
+    }
+    f = 1.0;
+    let x_55 : f32 = x_7.x_GLF_uniform_float_values[2];
+    let x_56 : f32 = f;
+    let x_59 : i32 = i;
+    f = ((1.0 - clamp(x_55, 1.0, x_56)) + f32(x_59));
+
+    continuing {
+      let x_62 : i32 = i;
+      i = (x_62 + 1);
+    }
+  }
+  let x_64 : f32 = f;
+  let x_66 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_64 == x_66)) {
+    let x_72 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_75 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+  } else {
+    let x_85 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_85);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..58eeb4f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,67 @@
+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[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int i = 0;
+  x_GLF_global_loop_count = 0;
+  const float x_36 = asfloat(x_7[1].x);
+  f = x_36;
+  const int x_38 = asint(x_10[1].x);
+  i = x_38;
+  while (true) {
+    const int x_43 = i;
+    const int x_45 = asint(x_10[2].x);
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    const float x_48 = f;
+    const float x_50 = asfloat(x_7[1].x);
+    if ((x_48 > x_50)) {
+    }
+    f = 1.0f;
+    const float x_55 = asfloat(x_7[2].x);
+    f = ((1.0f - clamp(x_55, 1.0f, f)) + float(i));
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_64 = f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_66 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_64 == x_66)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_72 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_75 = asint(x_10[1].x);
+    const int x_78 = asint(x_10[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_81 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    const int x_85 = asint(x_10[1].x);
+    const float x_86 = float(x_85);
+    x_GLF_color = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..df997cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.msl
@@ -0,0 +1,84 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_10, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  float f = 0.0f;
+  int i = 0;
+  *(tint_symbol_4) = 0;
+  float const x_36 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  f = x_36;
+  int const x_38 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  i = x_38;
+  while (true) {
+    int const x_43 = i;
+    int const x_45 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    float const x_48 = f;
+    float const x_50 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    if ((x_48 > x_50)) {
+    }
+    f = 1.0f;
+    float const x_55 = x_7.x_GLF_uniform_float_values.arr[2].el;
+    float const x_56 = f;
+    int const x_59 = i;
+    f = ((1.0f - clamp(x_55, 1.0f, x_56)) + float(x_59));
+    {
+      int const x_62 = i;
+      i = (x_62 + 1);
+    }
+  }
+  float const x_64 = f;
+  float const x_66 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_64 == x_66)) {
+    int const x_72 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_75 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    int const x_85 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_86 = float(x_85);
+    *(tint_symbol_5) = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_10, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8f44a3e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,177 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+         %65 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %19 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %19
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %19
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %95 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %28
+          %i = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+         %35 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %36 = OpLoad %float %35
+               OpStore %f %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %39 = OpLoad %int %38
+               OpStore %i %39
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %44 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %47 = OpLoad %int %46
+         %48 = OpSLessThan %bool %44 %47
+               OpSelectionMerge %50 None
+               OpBranchConditional %48 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %41
+         %50 = OpLabel
+         %53 = OpLoad %float %f
+         %54 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %55 = OpLoad %float %54
+         %56 = OpFOrdGreaterThan %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+               OpStore %f %float_1
+         %60 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %61 = OpLoad %float %60
+         %62 = OpLoad %float %f
+         %63 = OpLoad %int %i
+         %64 = OpExtInst %float %65 NClamp %61 %float_1 %62
+         %66 = OpFSub %float %float_1 %64
+         %67 = OpConvertSToF %float %63
+         %68 = OpFAdd %float %66 %67
+               OpStore %f %68
+               OpBranch %42
+         %42 = OpLabel
+         %69 = OpLoad %int %i
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %i %70
+               OpBranch %40
+         %41 = OpLabel
+         %71 = OpLoad %float %f
+         %72 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %73 = OpLoad %float %72
+         %74 = OpFOrdEqual %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %79
+         %87 = OpConvertSToF %float %81
+         %88 = OpConvertSToF %float %83
+         %89 = OpConvertSToF %float %85
+         %90 = OpCompositeConstruct %v4float %86 %87 %88 %89
+               OpStore %x_GLF_color %90
+               OpBranch %75
+         %77 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpCompositeConstruct %v4float %93 %93 %93 %93
+               OpStore %x_GLF_color %94
+               OpBranch %75
+         %75 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %95
+%tint_symbol = OpFunctionParameter %main_out
+         %99 = OpLabel
+        %100 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %100
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %102 = OpLabel
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_2 %106
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f074ac2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,78 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  x_GLF_global_loop_count = 0;
+  let x_36 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = x_36;
+  let x_38 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_10.x_GLF_uniform_int_values[2];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_48 : f32 = f;
+    let x_50 : f32 = x_7.x_GLF_uniform_float_values[1];
+    if ((x_48 > x_50)) {
+    }
+    f = 1.0;
+    let x_55 : f32 = x_7.x_GLF_uniform_float_values[2];
+    let x_56 : f32 = f;
+    let x_59 : i32 = i;
+    f = ((1.0 - clamp(x_55, 1.0, x_56)) + f32(x_59));
+
+    continuing {
+      let x_62 : i32 = i;
+      i = (x_62 + 1);
+    }
+  }
+  let x_64 : f32 = f;
+  let x_66 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_64 == x_66)) {
+    let x_72 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_75 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+  } else {
+    let x_85 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_85);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm
new file mode 100644
index 0000000..525f7ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm
@@ -0,0 +1,152 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %arr "arr"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %index "index"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_6 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3
+     %uint_6 = OpConstant %uint 6
+%_arr_int_uint_6 = OpTypeArray %int %uint_6
+       %buf0 = OpTypeStruct %_arr_int_uint_6
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_4 = OpConstant %int 4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %31 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_int_uint_3 Function
+      %index = OpVariable %_ptr_Function_int Function
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %33 = OpLoad %int %32
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %35 = OpLoad %int %34
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %37 = OpLoad %int %36
+         %38 = OpCompositeConstruct %_arr_int_uint_3 %33 %35 %37
+               OpStore %arr %38
+               OpStore %index %int_1
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+               OpSelectionMerge %43 None
+               OpBranchConditional %true %44 %43
+         %44 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpIEqual %bool %46 %int_1
+         %48 = OpLoad %int %index
+         %49 = OpSLessThanEqual %bool %48 %int_1
+         %50 = OpLogicalAnd %bool %47 %49
+         %51 = OpLogicalNot %bool %50
+               OpBranch %43
+         %43 = OpLabel
+         %52 = OpPhi %bool %true %42 %51 %44
+         %53 = OpLogicalNot %bool %52
+               OpBranchConditional %53 %54 %40
+         %54 = OpLabel
+         %55 = OpLoad %int %index
+         %56 = OpAccessChain %_ptr_Function_int %arr %55
+         %57 = OpLoad %int %56
+         %58 = OpIAdd %int %57 %int_1
+               OpStore %56 %58
+         %59 = OpLoad %int %index
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %index %60
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Function_int %arr %62
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %66 = OpLoad %int %65
+         %67 = OpIEqual %bool %64 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Function_int %arr %71
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %75 = OpLoad %int %74
+         %76 = OpIEqual %bool %73 %75
+               OpBranch %68
+         %68 = OpLabel
+         %77 = OpPhi %bool %67 %40 %76 %69
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Function_int %arr %81
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %85 = OpLoad %int %84
+         %86 = OpIEqual %bool %83 %85
+               OpBranch %78
+         %78 = OpLabel
+         %87 = OpPhi %bool %77 %68 %86 %79
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpConvertSToF %float %98
+        %100 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %101 = OpLoad %int %100
+        %102 = OpConvertSToF %float %101
+        %103 = OpCompositeConstruct %v4float %93 %96 %99 %102
+               OpStore %_GLF_color %103
+               OpBranch %88
+         %90 = OpLabel
+        %104 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %105 = OpLoad %int %104
+        %106 = OpConvertSToF %float %105
+        %107 = OpCompositeConstruct %v4float %106 %106 %106 %106
+               OpStore %_GLF_color %107
+               OpBranch %88
+         %88 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b3077db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,92 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[6];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int arr[3] = (int[3])0;
+  int index = 0;
+  bool x_76 = false;
+  bool x_86 = false;
+  bool x_77_phi = false;
+  bool x_87_phi = false;
+  const int x_33 = asint(x_6[3].x);
+  const int x_35 = asint(x_6[5].x);
+  const int x_37 = asint(x_6[2].x);
+  const int tint_symbol_3[3] = {x_33, x_35, x_37};
+  arr = tint_symbol_3;
+  index = 1;
+  while (true) {
+    bool x_51 = false;
+    bool x_52_phi = false;
+    x_52_phi = true;
+    if (true) {
+      const uint scalar_offset = ((16u * uint(0))) / 4;
+      const int x_46 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+      bool tint_tmp = (x_46 == 1);
+      if (tint_tmp) {
+        tint_tmp = (index <= 1);
+      }
+      x_51 = !((tint_tmp));
+      x_52_phi = x_51;
+    }
+    if (!(x_52_phi)) {
+    } else {
+      break;
+    }
+    const int x_56_save = index;
+    const int x_57 = arr[x_56_save];
+    arr[x_56_save] = (x_57 + 1);
+    index = (index + 1);
+  }
+  const int x_62 = asint(x_6[1].x);
+  const int x_64 = arr[x_62];
+  const int x_66 = asint(x_6[3].x);
+  const bool x_67 = (x_64 == x_66);
+  x_77_phi = x_67;
+  if (x_67) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_71 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_73 = arr[x_71];
+    const int x_75 = asint(x_6[4].x);
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  const bool x_77 = x_77_phi;
+  x_87_phi = x_77;
+  if (x_77) {
+    const int x_81 = asint(x_6[3].x);
+    const int x_83 = arr[x_81];
+    const int x_85 = asint(x_6[2].x);
+    x_86 = (x_83 == x_85);
+    x_87_phi = x_86;
+  }
+  if (x_87_phi) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_92 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_95 = asint(x_6[1].x);
+    const int x_98 = asint(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_101 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_92), float(x_95), float(x_98), float(x_101));
+  } else {
+    const int x_105 = asint(x_6[1].x);
+    const float x_106 = float(x_105);
+    x_GLF_color = float4(x_106, x_106, x_106, x_106);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..028ec7e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[6];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_1 arr = {};
+  int index = 0;
+  bool x_76 = false;
+  bool x_86 = false;
+  bool x_77_phi = false;
+  bool x_87_phi = false;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_33, x_35, x_37}};
+  arr = tint_symbol_3;
+  index = 1;
+  while (true) {
+    bool x_51 = false;
+    bool x_52_phi = false;
+    x_52_phi = true;
+    if (true) {
+      int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_48 = index;
+      x_51 = !(((x_46 == 1) && (x_48 <= 1)));
+      x_52_phi = x_51;
+    }
+    bool const x_52 = x_52_phi;
+    if (!(x_52)) {
+    } else {
+      break;
+    }
+    int const x_55 = index;
+    int const x_56_save = x_55;
+    int const x_57 = arr.arr[x_56_save];
+    arr.arr[x_56_save] = (x_57 + 1);
+    int const x_59 = index;
+    index = (x_59 + 1);
+  }
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_64 = arr.arr[x_62];
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  bool const x_67 = (x_64 == x_66);
+  x_77_phi = x_67;
+  if (x_67) {
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_73 = arr.arr[x_71];
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  bool const x_77 = x_77_phi;
+  x_87_phi = x_77;
+  if (x_77) {
+    int const x_81 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_83 = arr.arr[x_81];
+    int const x_85 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    x_86 = (x_83 == x_85);
+    x_87_phi = x_86;
+  }
+  bool const x_87 = x_87_phi;
+  if (x_87) {
+    int const x_92 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_95 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_98 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_101 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_92), float(x_95), float(x_98), float(x_101));
+  } else {
+    int const x_105 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_106 = float(x_105);
+    *(tint_symbol_5) = float4(x_106, x_106, x_106, x_106);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..35f7480
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,224 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 141
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %index "index"
+               OpName %x_76 "x_76"
+               OpName %x_86 "x_86"
+               OpName %x_77_phi "x_77_phi"
+               OpName %x_87_phi "x_87_phi"
+               OpName %x_51 "x_51"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_6 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_6 = OpConstant %uint 6
+%_arr_int_uint_6 = OpTypeArray %int %uint_6
+       %buf0 = OpTypeStruct %_arr_int_uint_6
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3
+         %23 = OpConstantNull %_arr_int_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %129 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_int_uint_3 Function %23
+      %index = OpVariable %_ptr_Function_int Function %26
+       %x_76 = OpVariable %_ptr_Function_bool Function %30
+       %x_86 = OpVariable %_ptr_Function_bool Function %30
+   %x_77_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_87_phi = OpVariable %_ptr_Function_bool Function %30
+       %x_51 = OpVariable %_ptr_Function_bool Function %30
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %30
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %38 = OpLoad %int %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %41 = OpLoad %int %40
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %44 = OpLoad %int %43
+         %45 = OpCompositeConstruct %_arr_int_uint_3 %38 %41 %44
+               OpStore %arr %45
+               OpStore %index %int_1
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+               OpStore %x_52_phi %true
+               OpSelectionMerge %54 None
+               OpBranchConditional %true %55 %54
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpLoad %int %index
+         %61 = OpIEqual %bool %58 %int_1
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpSLessThanEqual %bool %59 %int_1
+               OpBranch %62
+         %62 = OpLabel
+         %65 = OpPhi %bool %61 %55 %64 %63
+         %60 = OpLogicalNot %bool %65
+               OpStore %x_51 %60
+         %66 = OpLoad %bool %x_51
+               OpStore %x_52_phi %66
+               OpBranch %54
+         %54 = OpLabel
+         %67 = OpLoad %bool %x_52_phi
+         %68 = OpLogicalNot %bool %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+               OpBranch %69
+         %71 = OpLabel
+               OpBranch %48
+         %69 = OpLabel
+         %72 = OpLoad %int %index
+         %73 = OpAccessChain %_ptr_Function_int %arr %72
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Function_int %arr %72
+         %76 = OpIAdd %int %74 %int_1
+               OpStore %75 %76
+         %77 = OpLoad %int %index
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %index %78
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Function_int %arr %80
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %84 = OpLoad %int %83
+         %85 = OpIEqual %bool %82 %84
+               OpStore %x_77_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Function_int %arr %89
+         %91 = OpLoad %int %90
+         %93 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %94 = OpLoad %int %93
+         %95 = OpIEqual %bool %91 %94
+               OpStore %x_76 %95
+         %96 = OpLoad %bool %x_76
+               OpStore %x_77_phi %96
+               OpBranch %86
+         %86 = OpLabel
+         %97 = OpLoad %bool %x_77_phi
+               OpStore %x_87_phi %97
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Function_int %arr %101
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %105 = OpLoad %int %104
+        %106 = OpIEqual %bool %103 %105
+               OpStore %x_86 %106
+        %107 = OpLoad %bool %x_86
+               OpStore %x_87_phi %107
+               OpBranch %98
+         %98 = OpLabel
+        %108 = OpLoad %bool %x_87_phi
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %111
+        %110 = OpLabel
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %115 = OpLoad %int %114
+        %116 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %117 = OpLoad %int %116
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %113
+        %121 = OpConvertSToF %float %115
+        %122 = OpConvertSToF %float %117
+        %123 = OpConvertSToF %float %119
+        %124 = OpCompositeConstruct %v4float %120 %121 %122 %123
+               OpStore %x_GLF_color %124
+               OpBranch %109
+        %111 = OpLabel
+        %125 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %126
+        %128 = OpCompositeConstruct %v4float %127 %127 %127 %127
+               OpStore %x_GLF_color %128
+               OpBranch %109
+        %109 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %129
+%tint_symbol = OpFunctionParameter %main_out
+        %133 = OpLabel
+        %134 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %134
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %136 = OpLabel
+        %137 = OpFunctionCall %void %main_1
+        %139 = OpLoad %v4float %x_GLF_color
+        %140 = OpCompositeConstruct %main_out %139
+        %138 = OpFunctionCall %void %tint_symbol_2 %140
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3e3cb21
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,91 @@
+type Arr = [[stride(16)]] array<i32, 6>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<i32, 3>;
+  var index : i32;
+  var x_76 : bool;
+  var x_86 : bool;
+  var x_77_phi : bool;
+  var x_87_phi : bool;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[2];
+  arr = array<i32, 3>(x_33, x_35, x_37);
+  index = 1;
+  loop {
+    var x_51 : bool;
+    var x_52_phi : bool;
+    x_52_phi = true;
+    if (true) {
+      let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_48 : i32 = index;
+      x_51 = !(((x_46 == 1) && (x_48 <= 1)));
+      x_52_phi = x_51;
+    }
+    let x_52 : bool = x_52_phi;
+    if (!(x_52)) {
+    } else {
+      break;
+    }
+    let x_55 : i32 = index;
+    let x_56 : ptr<function, i32> = &(arr[x_55]);
+    let x_57 : i32 = *(x_56);
+    *(x_56) = (x_57 + 1);
+    let x_59 : i32 = index;
+    index = (x_59 + 1);
+  }
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_64 : i32 = arr[x_62];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_67 : bool = (x_64 == x_66);
+  x_77_phi = x_67;
+  if (x_67) {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_73 : i32 = arr[x_71];
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[4];
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  let x_77 : bool = x_77_phi;
+  x_87_phi = x_77;
+  if (x_77) {
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_83 : i32 = arr[x_81];
+    let x_85 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_86 = (x_83 == x_85);
+    x_87_phi = x_86;
+  }
+  let x_87 : bool = x_87_phi;
+  if (x_87) {
+    let x_92 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_95 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_98 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_101 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_92), f32(x_95), f32(x_98), f32(x_101));
+  } else {
+    let x_105 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_106 : f32 = f32(x_105);
+    x_GLF_color = vec4<f32>(x_106, x_106, x_106, x_106);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
new file mode 100644
index 0000000..3e3cb21
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
@@ -0,0 +1,91 @@
+type Arr = [[stride(16)]] array<i32, 6>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<i32, 3>;
+  var index : i32;
+  var x_76 : bool;
+  var x_86 : bool;
+  var x_77_phi : bool;
+  var x_87_phi : bool;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[2];
+  arr = array<i32, 3>(x_33, x_35, x_37);
+  index = 1;
+  loop {
+    var x_51 : bool;
+    var x_52_phi : bool;
+    x_52_phi = true;
+    if (true) {
+      let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_48 : i32 = index;
+      x_51 = !(((x_46 == 1) && (x_48 <= 1)));
+      x_52_phi = x_51;
+    }
+    let x_52 : bool = x_52_phi;
+    if (!(x_52)) {
+    } else {
+      break;
+    }
+    let x_55 : i32 = index;
+    let x_56 : ptr<function, i32> = &(arr[x_55]);
+    let x_57 : i32 = *(x_56);
+    *(x_56) = (x_57 + 1);
+    let x_59 : i32 = index;
+    index = (x_59 + 1);
+  }
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_64 : i32 = arr[x_62];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_67 : bool = (x_64 == x_66);
+  x_77_phi = x_67;
+  if (x_67) {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_73 : i32 = arr[x_71];
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[4];
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  let x_77 : bool = x_77_phi;
+  x_87_phi = x_77;
+  if (x_77) {
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_83 : i32 = arr[x_81];
+    let x_85 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_86 = (x_83 == x_85);
+    x_87_phi = x_86;
+  }
+  let x_87 : bool = x_87_phi;
+  if (x_87) {
+    let x_92 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_95 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_98 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_101 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_92), f32(x_95), f32(x_98), f32(x_101));
+  } else {
+    let x_105 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_106 : f32 = f32(x_105);
+    x_GLF_color = vec4<f32>(x_106, x_106, x_106, x_106);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b3077db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,92 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[6];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int arr[3] = (int[3])0;
+  int index = 0;
+  bool x_76 = false;
+  bool x_86 = false;
+  bool x_77_phi = false;
+  bool x_87_phi = false;
+  const int x_33 = asint(x_6[3].x);
+  const int x_35 = asint(x_6[5].x);
+  const int x_37 = asint(x_6[2].x);
+  const int tint_symbol_3[3] = {x_33, x_35, x_37};
+  arr = tint_symbol_3;
+  index = 1;
+  while (true) {
+    bool x_51 = false;
+    bool x_52_phi = false;
+    x_52_phi = true;
+    if (true) {
+      const uint scalar_offset = ((16u * uint(0))) / 4;
+      const int x_46 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+      bool tint_tmp = (x_46 == 1);
+      if (tint_tmp) {
+        tint_tmp = (index <= 1);
+      }
+      x_51 = !((tint_tmp));
+      x_52_phi = x_51;
+    }
+    if (!(x_52_phi)) {
+    } else {
+      break;
+    }
+    const int x_56_save = index;
+    const int x_57 = arr[x_56_save];
+    arr[x_56_save] = (x_57 + 1);
+    index = (index + 1);
+  }
+  const int x_62 = asint(x_6[1].x);
+  const int x_64 = arr[x_62];
+  const int x_66 = asint(x_6[3].x);
+  const bool x_67 = (x_64 == x_66);
+  x_77_phi = x_67;
+  if (x_67) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_71 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_73 = arr[x_71];
+    const int x_75 = asint(x_6[4].x);
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  const bool x_77 = x_77_phi;
+  x_87_phi = x_77;
+  if (x_77) {
+    const int x_81 = asint(x_6[3].x);
+    const int x_83 = arr[x_81];
+    const int x_85 = asint(x_6[2].x);
+    x_86 = (x_83 == x_85);
+    x_87_phi = x_86;
+  }
+  if (x_87_phi) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_92 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_95 = asint(x_6[1].x);
+    const int x_98 = asint(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_101 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_92), float(x_95), float(x_98), float(x_101));
+  } else {
+    const int x_105 = asint(x_6[1].x);
+    const float x_106 = float(x_105);
+    x_GLF_color = float4(x_106, x_106, x_106, x_106);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..028ec7e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[6];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_1 arr = {};
+  int index = 0;
+  bool x_76 = false;
+  bool x_86 = false;
+  bool x_77_phi = false;
+  bool x_87_phi = false;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_33, x_35, x_37}};
+  arr = tint_symbol_3;
+  index = 1;
+  while (true) {
+    bool x_51 = false;
+    bool x_52_phi = false;
+    x_52_phi = true;
+    if (true) {
+      int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_48 = index;
+      x_51 = !(((x_46 == 1) && (x_48 <= 1)));
+      x_52_phi = x_51;
+    }
+    bool const x_52 = x_52_phi;
+    if (!(x_52)) {
+    } else {
+      break;
+    }
+    int const x_55 = index;
+    int const x_56_save = x_55;
+    int const x_57 = arr.arr[x_56_save];
+    arr.arr[x_56_save] = (x_57 + 1);
+    int const x_59 = index;
+    index = (x_59 + 1);
+  }
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_64 = arr.arr[x_62];
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  bool const x_67 = (x_64 == x_66);
+  x_77_phi = x_67;
+  if (x_67) {
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_73 = arr.arr[x_71];
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  bool const x_77 = x_77_phi;
+  x_87_phi = x_77;
+  if (x_77) {
+    int const x_81 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_83 = arr.arr[x_81];
+    int const x_85 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    x_86 = (x_83 == x_85);
+    x_87_phi = x_86;
+  }
+  bool const x_87 = x_87_phi;
+  if (x_87) {
+    int const x_92 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_95 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_98 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_101 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_92), float(x_95), float(x_98), float(x_101));
+  } else {
+    int const x_105 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_106 = float(x_105);
+    *(tint_symbol_5) = float4(x_106, x_106, x_106, x_106);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..35f7480
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,224 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 141
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %index "index"
+               OpName %x_76 "x_76"
+               OpName %x_86 "x_86"
+               OpName %x_77_phi "x_77_phi"
+               OpName %x_87_phi "x_87_phi"
+               OpName %x_51 "x_51"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_6 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_6 = OpConstant %uint 6
+%_arr_int_uint_6 = OpTypeArray %int %uint_6
+       %buf0 = OpTypeStruct %_arr_int_uint_6
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+%_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3
+         %23 = OpConstantNull %_arr_int_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %129 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_int_uint_3 Function %23
+      %index = OpVariable %_ptr_Function_int Function %26
+       %x_76 = OpVariable %_ptr_Function_bool Function %30
+       %x_86 = OpVariable %_ptr_Function_bool Function %30
+   %x_77_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_87_phi = OpVariable %_ptr_Function_bool Function %30
+       %x_51 = OpVariable %_ptr_Function_bool Function %30
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %30
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %38 = OpLoad %int %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %41 = OpLoad %int %40
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %44 = OpLoad %int %43
+         %45 = OpCompositeConstruct %_arr_int_uint_3 %38 %41 %44
+               OpStore %arr %45
+               OpStore %index %int_1
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+               OpStore %x_52_phi %true
+               OpSelectionMerge %54 None
+               OpBranchConditional %true %55 %54
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpLoad %int %index
+         %61 = OpIEqual %bool %58 %int_1
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpSLessThanEqual %bool %59 %int_1
+               OpBranch %62
+         %62 = OpLabel
+         %65 = OpPhi %bool %61 %55 %64 %63
+         %60 = OpLogicalNot %bool %65
+               OpStore %x_51 %60
+         %66 = OpLoad %bool %x_51
+               OpStore %x_52_phi %66
+               OpBranch %54
+         %54 = OpLabel
+         %67 = OpLoad %bool %x_52_phi
+         %68 = OpLogicalNot %bool %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+               OpBranch %69
+         %71 = OpLabel
+               OpBranch %48
+         %69 = OpLabel
+         %72 = OpLoad %int %index
+         %73 = OpAccessChain %_ptr_Function_int %arr %72
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Function_int %arr %72
+         %76 = OpIAdd %int %74 %int_1
+               OpStore %75 %76
+         %77 = OpLoad %int %index
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %index %78
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Function_int %arr %80
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %84 = OpLoad %int %83
+         %85 = OpIEqual %bool %82 %84
+               OpStore %x_77_phi %85
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Function_int %arr %89
+         %91 = OpLoad %int %90
+         %93 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %94 = OpLoad %int %93
+         %95 = OpIEqual %bool %91 %94
+               OpStore %x_76 %95
+         %96 = OpLoad %bool %x_76
+               OpStore %x_77_phi %96
+               OpBranch %86
+         %86 = OpLabel
+         %97 = OpLoad %bool %x_77_phi
+               OpStore %x_87_phi %97
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Function_int %arr %101
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %105 = OpLoad %int %104
+        %106 = OpIEqual %bool %103 %105
+               OpStore %x_86 %106
+        %107 = OpLoad %bool %x_86
+               OpStore %x_87_phi %107
+               OpBranch %98
+         %98 = OpLabel
+        %108 = OpLoad %bool %x_87_phi
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %111
+        %110 = OpLabel
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %115 = OpLoad %int %114
+        %116 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %117 = OpLoad %int %116
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %113
+        %121 = OpConvertSToF %float %115
+        %122 = OpConvertSToF %float %117
+        %123 = OpConvertSToF %float %119
+        %124 = OpCompositeConstruct %v4float %120 %121 %122 %123
+               OpStore %x_GLF_color %124
+               OpBranch %109
+        %111 = OpLabel
+        %125 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %126
+        %128 = OpCompositeConstruct %v4float %127 %127 %127 %127
+               OpStore %x_GLF_color %128
+               OpBranch %109
+        %109 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %129
+%tint_symbol = OpFunctionParameter %main_out
+        %133 = OpLabel
+        %134 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %134
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %136 = OpLabel
+        %137 = OpFunctionCall %void %main_1
+        %139 = OpLoad %v4float %x_GLF_color
+        %140 = OpCompositeConstruct %main_out %139
+        %138 = OpFunctionCall %void %tint_symbol_2 %140
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3e3cb21
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,91 @@
+type Arr = [[stride(16)]] array<i32, 6>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<i32, 3>;
+  var index : i32;
+  var x_76 : bool;
+  var x_86 : bool;
+  var x_77_phi : bool;
+  var x_87_phi : bool;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[2];
+  arr = array<i32, 3>(x_33, x_35, x_37);
+  index = 1;
+  loop {
+    var x_51 : bool;
+    var x_52_phi : bool;
+    x_52_phi = true;
+    if (true) {
+      let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_48 : i32 = index;
+      x_51 = !(((x_46 == 1) && (x_48 <= 1)));
+      x_52_phi = x_51;
+    }
+    let x_52 : bool = x_52_phi;
+    if (!(x_52)) {
+    } else {
+      break;
+    }
+    let x_55 : i32 = index;
+    let x_56 : ptr<function, i32> = &(arr[x_55]);
+    let x_57 : i32 = *(x_56);
+    *(x_56) = (x_57 + 1);
+    let x_59 : i32 = index;
+    index = (x_59 + 1);
+  }
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_64 : i32 = arr[x_62];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_67 : bool = (x_64 == x_66);
+  x_77_phi = x_67;
+  if (x_67) {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_73 : i32 = arr[x_71];
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[4];
+    x_76 = (x_73 == x_75);
+    x_77_phi = x_76;
+  }
+  let x_77 : bool = x_77_phi;
+  x_87_phi = x_77;
+  if (x_77) {
+    let x_81 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_83 : i32 = arr[x_81];
+    let x_85 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_86 = (x_83 == x_85);
+    x_87_phi = x_86;
+  }
+  let x_87 : bool = x_87_phi;
+  if (x_87) {
+    let x_92 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_95 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_98 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_101 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_92), f32(x_95), f32(x_98), f32(x_101));
+  } else {
+    let x_105 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_106 : f32 = f32(x_105);
+    x_GLF_color = vec4<f32>(x_106, x_106, x_106, x_106);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm
new file mode 100644
index 0000000..ecdf15a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm
@@ -0,0 +1,145 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %c "c"
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %15
+         %33 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+          %b = OpVariable %_ptr_Function_float Function
+          %c = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %35 = OpLoad %float %34
+               OpStore %a %35
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %37 = OpLoad %float %36
+               OpStore %b %37
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %39 = OpLoad %float %38
+               OpStore %c %39
+         %40 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %41 = OpLoad %int %40
+               OpStore %i %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %i
+         %47 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpSLessThan %bool %46 %48
+               OpBranchConditional %49 %50 %43
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %53 = OpLoad %int %52
+         %54 = OpIEqual %bool %51 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpLoad %float %a
+         %58 = OpDPdx %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %60 = OpLoad %float %59
+         %61 = OpFAdd %float %58 %60
+               OpStore %b %61
+               OpBranch %55
+         %55 = OpLabel
+         %62 = OpLoad %float %a
+         %63 = OpDPdx %float %62
+               OpStore %c %63
+         %64 = OpLoad %float %c
+         %65 = OpLoad %float %b
+         %66 = OpFDiv %float %64 %65
+               OpStore %a %66
+               OpBranch %44
+         %44 = OpLabel
+         %67 = OpLoad %int %i
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %i %68
+               OpBranch %42
+         %43 = OpLabel
+         %69 = OpLoad %float %a
+         %70 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %71 = OpLoad %float %70
+         %72 = OpFOrdEqual %bool %69 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %83
+         %85 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpCompositeConstruct %v4float %78 %81 %84 %87
+               OpStore %_GLF_color %88
+               OpBranch %73
+         %75 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %90
+         %92 = OpCompositeConstruct %v4float %91 %91 %91 %91
+               OpStore %_GLF_color %92
+               OpBranch %73
+         %73 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9c06087
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  float c = 0.0f;
+  int i = 0;
+  const float x_35 = asfloat(x_6[1].x);
+  a = x_35;
+  const float x_37 = asfloat(x_6[1].x);
+  b = x_37;
+  const float x_39 = asfloat(x_6[1].x);
+  c = x_39;
+  const int x_41 = asint(x_11[1].x);
+  i = x_41;
+  while (true) {
+    const int x_46 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_11[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    const int x_51 = i;
+    const int x_53 = asint(x_11[2].x);
+    if ((x_51 == x_53)) {
+      const float x_57 = a;
+      const float x_60 = asfloat(x_6[1].x);
+      b = (ddx(x_57) + x_60);
+    }
+    c = ddx(a);
+    a = (c / b);
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_69 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_71 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_69 == x_71)) {
+    const int x_77 = asint(x_11[2].x);
+    const int x_80 = asint(x_11[1].x);
+    const int x_83 = asint(x_11[1].x);
+    const int x_86 = asint(x_11[2].x);
+    x_GLF_color = float4(float(x_77), float(x_80), float(x_83), float(x_86));
+  } else {
+    const int x_90 = asint(x_11[1].x);
+    const float x_91 = float(x_90);
+    x_GLF_color = float4(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..70485b3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_11, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float b = 0.0f;
+  float c = 0.0f;
+  int i = 0;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = x_35;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  b = x_37;
+  float const x_39 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  c = x_39;
+  int const x_41 = x_11.x_GLF_uniform_int_values.arr[1].el;
+  i = x_41;
+  while (true) {
+    int const x_46 = i;
+    int const x_48 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    int const x_51 = i;
+    int const x_53 = x_11.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_51 == x_53)) {
+      float const x_57 = a;
+      float const x_60 = x_6.x_GLF_uniform_float_values.arr[1].el;
+      b = (dfdx(x_57) + x_60);
+    }
+    float const x_62 = a;
+    c = dfdx(x_62);
+    float const x_64 = c;
+    float const x_65 = b;
+    a = (x_64 / x_65);
+    {
+      int const x_67 = i;
+      i = (x_67 + 1);
+    }
+  }
+  float const x_69 = a;
+  float const x_71 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_69 == x_71)) {
+    int const x_77 = x_11.x_GLF_uniform_int_values.arr[2].el;
+    int const x_80 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_83 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_86 = x_11.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_77), float(x_80), float(x_83), float(x_86));
+  } else {
+    int const x_90 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    float const x_91 = float(x_90);
+    *(tint_symbol_4) = float4(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_11, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4ba110f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,185 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %100 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %26
+          %b = OpVariable %_ptr_Function_float Function %26
+          %c = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %31
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %36 = OpLoad %float %35
+               OpStore %a %36
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %38 = OpLoad %float %37
+               OpStore %b %38
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %40 = OpLoad %float %39
+               OpStore %c %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %43 = OpLoad %int %42
+               OpStore %i %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %48 %51
+               OpSelectionMerge %54 None
+               OpBranchConditional %52 %55 %56
+         %55 = OpLabel
+               OpBranch %54
+         %56 = OpLabel
+               OpBranch %45
+         %54 = OpLabel
+         %57 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpIEqual %bool %57 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpLoad %float %a
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %66 = OpLoad %float %65
+         %67 = OpDPdx %float %64
+         %68 = OpFAdd %float %67 %66
+               OpStore %b %68
+               OpBranch %62
+         %62 = OpLabel
+         %69 = OpLoad %float %a
+         %70 = OpDPdx %float %69
+               OpStore %c %70
+         %71 = OpLoad %float %c
+         %72 = OpLoad %float %b
+         %73 = OpFDiv %float %71 %72
+               OpStore %a %73
+               OpBranch %46
+         %46 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %i %75
+               OpBranch %44
+         %45 = OpLabel
+         %76 = OpLoad %float %a
+         %77 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %78 = OpLoad %float %77
+         %79 = OpFOrdEqual %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %84
+         %92 = OpConvertSToF %float %86
+         %93 = OpConvertSToF %float %88
+         %94 = OpConvertSToF %float %90
+         %95 = OpCompositeConstruct %v4float %91 %92 %93 %94
+               OpStore %x_GLF_color %95
+               OpBranch %80
+         %82 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpConvertSToF %float %97
+         %99 = OpCompositeConstruct %v4float %98 %98 %98 %98
+               OpStore %x_GLF_color %99
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %100
+%tint_symbol = OpFunctionParameter %main_out
+        %104 = OpLabel
+        %105 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %105
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %107 = OpLabel
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_2 %111
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..52eb93c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var c : f32;
+  var i : i32;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = x_35;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[1];
+  b = x_37;
+  let x_39 : f32 = x_6.x_GLF_uniform_float_values[1];
+  c = x_39;
+  let x_41 : i32 = x_11.x_GLF_uniform_int_values[1];
+  i = x_41;
+  loop {
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_11.x_GLF_uniform_int_values[0];
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    let x_51 : i32 = i;
+    let x_53 : i32 = x_11.x_GLF_uniform_int_values[2];
+    if ((x_51 == x_53)) {
+      let x_57 : f32 = a;
+      let x_60 : f32 = x_6.x_GLF_uniform_float_values[1];
+      b = (dpdx(x_57) + x_60);
+    }
+    let x_62 : f32 = a;
+    c = dpdx(x_62);
+    let x_64 : f32 = c;
+    let x_65 : f32 = b;
+    a = (x_64 / x_65);
+
+    continuing {
+      let x_67 : i32 = i;
+      i = (x_67 + 1);
+    }
+  }
+  let x_69 : f32 = a;
+  let x_71 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_69 == x_71)) {
+    let x_77 : i32 = x_11.x_GLF_uniform_int_values[2];
+    let x_80 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_83 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_86 : i32 = x_11.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_77), f32(x_80), f32(x_83), f32(x_86));
+  } else {
+    let x_90 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_91 : f32 = f32(x_90);
+    x_GLF_color = vec4<f32>(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
new file mode 100644
index 0000000..52eb93c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var c : f32;
+  var i : i32;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = x_35;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[1];
+  b = x_37;
+  let x_39 : f32 = x_6.x_GLF_uniform_float_values[1];
+  c = x_39;
+  let x_41 : i32 = x_11.x_GLF_uniform_int_values[1];
+  i = x_41;
+  loop {
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_11.x_GLF_uniform_int_values[0];
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    let x_51 : i32 = i;
+    let x_53 : i32 = x_11.x_GLF_uniform_int_values[2];
+    if ((x_51 == x_53)) {
+      let x_57 : f32 = a;
+      let x_60 : f32 = x_6.x_GLF_uniform_float_values[1];
+      b = (dpdx(x_57) + x_60);
+    }
+    let x_62 : f32 = a;
+    c = dpdx(x_62);
+    let x_64 : f32 = c;
+    let x_65 : f32 = b;
+    a = (x_64 / x_65);
+
+    continuing {
+      let x_67 : i32 = i;
+      i = (x_67 + 1);
+    }
+  }
+  let x_69 : f32 = a;
+  let x_71 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_69 == x_71)) {
+    let x_77 : i32 = x_11.x_GLF_uniform_int_values[2];
+    let x_80 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_83 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_86 : i32 = x_11.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_77), f32(x_80), f32(x_83), f32(x_86));
+  } else {
+    let x_90 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_91 : f32 = f32(x_90);
+    x_GLF_color = vec4<f32>(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9c06087
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  float c = 0.0f;
+  int i = 0;
+  const float x_35 = asfloat(x_6[1].x);
+  a = x_35;
+  const float x_37 = asfloat(x_6[1].x);
+  b = x_37;
+  const float x_39 = asfloat(x_6[1].x);
+  c = x_39;
+  const int x_41 = asint(x_11[1].x);
+  i = x_41;
+  while (true) {
+    const int x_46 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_11[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    const int x_51 = i;
+    const int x_53 = asint(x_11[2].x);
+    if ((x_51 == x_53)) {
+      const float x_57 = a;
+      const float x_60 = asfloat(x_6[1].x);
+      b = (ddx(x_57) + x_60);
+    }
+    c = ddx(a);
+    a = (c / b);
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_69 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_71 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_69 == x_71)) {
+    const int x_77 = asint(x_11[2].x);
+    const int x_80 = asint(x_11[1].x);
+    const int x_83 = asint(x_11[1].x);
+    const int x_86 = asint(x_11[2].x);
+    x_GLF_color = float4(float(x_77), float(x_80), float(x_83), float(x_86));
+  } else {
+    const int x_90 = asint(x_11[1].x);
+    const float x_91 = float(x_90);
+    x_GLF_color = float4(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..70485b3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_11, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float b = 0.0f;
+  float c = 0.0f;
+  int i = 0;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = x_35;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  b = x_37;
+  float const x_39 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  c = x_39;
+  int const x_41 = x_11.x_GLF_uniform_int_values.arr[1].el;
+  i = x_41;
+  while (true) {
+    int const x_46 = i;
+    int const x_48 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    int const x_51 = i;
+    int const x_53 = x_11.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_51 == x_53)) {
+      float const x_57 = a;
+      float const x_60 = x_6.x_GLF_uniform_float_values.arr[1].el;
+      b = (dfdx(x_57) + x_60);
+    }
+    float const x_62 = a;
+    c = dfdx(x_62);
+    float const x_64 = c;
+    float const x_65 = b;
+    a = (x_64 / x_65);
+    {
+      int const x_67 = i;
+      i = (x_67 + 1);
+    }
+  }
+  float const x_69 = a;
+  float const x_71 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_69 == x_71)) {
+    int const x_77 = x_11.x_GLF_uniform_int_values.arr[2].el;
+    int const x_80 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_83 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_86 = x_11.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_77), float(x_80), float(x_83), float(x_86));
+  } else {
+    int const x_90 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    float const x_91 = float(x_90);
+    *(tint_symbol_4) = float4(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_11, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4ba110f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,185 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %100 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %26
+          %b = OpVariable %_ptr_Function_float Function %26
+          %c = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %31
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %36 = OpLoad %float %35
+               OpStore %a %36
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %38 = OpLoad %float %37
+               OpStore %b %38
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %40 = OpLoad %float %39
+               OpStore %c %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %43 = OpLoad %int %42
+               OpStore %i %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %48 %51
+               OpSelectionMerge %54 None
+               OpBranchConditional %52 %55 %56
+         %55 = OpLabel
+               OpBranch %54
+         %56 = OpLabel
+               OpBranch %45
+         %54 = OpLabel
+         %57 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpIEqual %bool %57 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpLoad %float %a
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %66 = OpLoad %float %65
+         %67 = OpDPdx %float %64
+         %68 = OpFAdd %float %67 %66
+               OpStore %b %68
+               OpBranch %62
+         %62 = OpLabel
+         %69 = OpLoad %float %a
+         %70 = OpDPdx %float %69
+               OpStore %c %70
+         %71 = OpLoad %float %c
+         %72 = OpLoad %float %b
+         %73 = OpFDiv %float %71 %72
+               OpStore %a %73
+               OpBranch %46
+         %46 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %i %75
+               OpBranch %44
+         %45 = OpLabel
+         %76 = OpLoad %float %a
+         %77 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %78 = OpLoad %float %77
+         %79 = OpFOrdEqual %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %84
+         %92 = OpConvertSToF %float %86
+         %93 = OpConvertSToF %float %88
+         %94 = OpConvertSToF %float %90
+         %95 = OpCompositeConstruct %v4float %91 %92 %93 %94
+               OpStore %x_GLF_color %95
+               OpBranch %80
+         %82 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpConvertSToF %float %97
+         %99 = OpCompositeConstruct %v4float %98 %98 %98 %98
+               OpStore %x_GLF_color %99
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %100
+%tint_symbol = OpFunctionParameter %main_out
+        %104 = OpLabel
+        %105 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %105
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %107 = OpLabel
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_2 %111
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..52eb93c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var c : f32;
+  var i : i32;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = x_35;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[1];
+  b = x_37;
+  let x_39 : f32 = x_6.x_GLF_uniform_float_values[1];
+  c = x_39;
+  let x_41 : i32 = x_11.x_GLF_uniform_int_values[1];
+  i = x_41;
+  loop {
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_11.x_GLF_uniform_int_values[0];
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    let x_51 : i32 = i;
+    let x_53 : i32 = x_11.x_GLF_uniform_int_values[2];
+    if ((x_51 == x_53)) {
+      let x_57 : f32 = a;
+      let x_60 : f32 = x_6.x_GLF_uniform_float_values[1];
+      b = (dpdx(x_57) + x_60);
+    }
+    let x_62 : f32 = a;
+    c = dpdx(x_62);
+    let x_64 : f32 = c;
+    let x_65 : f32 = b;
+    a = (x_64 / x_65);
+
+    continuing {
+      let x_67 : i32 = i;
+      i = (x_67 + 1);
+    }
+  }
+  let x_69 : f32 = a;
+  let x_71 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_69 == x_71)) {
+    let x_77 : i32 = x_11.x_GLF_uniform_int_values[2];
+    let x_80 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_83 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_86 : i32 = x_11.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_77), f32(x_80), f32(x_83), f32(x_86));
+  } else {
+    let x_90 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_91 : f32 = f32(x_90);
+    x_GLF_color = vec4<f32>(x_91, x_91, x_91, x_91);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm
new file mode 100644
index 0000000..fcb25ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm
@@ -0,0 +1,192 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %m23 "m23"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+%mat2v3float = OpTypeMatrix %v3float 2
+%_ptr_Function_mat2v3float = OpTypePointer Function %mat2v3float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+       %true = OpConstantTrue %bool
+     %uint_0 = OpConstant %uint 0
+     %v3bool = OpTypeVector %bool 3
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %44 = OpLabel
+        %m23 = OpVariable %_ptr_Function_mat2v3float Function
+          %i = OpVariable %_ptr_Function_int Function
+         %45 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %46 = OpLoad %float %45
+         %47 = OpCompositeConstruct %v3float %46 %float_0 %float_0
+         %48 = OpCompositeConstruct %v3float %float_0 %46 %float_0
+         %49 = OpCompositeConstruct %mat2v3float %47 %48
+               OpStore %m23 %49
+               OpStore %i %int_1
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %56 = OpLoad %int %55
+         %57 = OpSLessThan %bool %54 %56
+               OpBranchConditional %57 %58 %51
+         %58 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Function_float %m23 %60 %62
+         %66 = OpLoad %float %65
+         %67 = OpFAdd %float %66 %64
+         %68 = OpAccessChain %_ptr_Function_float %m23 %60 %62
+               OpStore %68 %67
+         %69 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %72 = OpLoad %float %71
+         %73 = OpFOrdLessThan %bool %70 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+               OpBranch %74
+         %74 = OpLabel
+               OpSelectionMerge %76 None
+               OpBranchConditional %true %77 %76
+         %77 = OpLabel
+         %78 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %79 = OpLoad %float %78
+         %80 = OpFOrdLessThan %bool %79 %float_0
+               OpBranch %76
+         %76 = OpLabel
+         %81 = OpPhi %bool %true %74 %80 %77
+         %82 = OpLogicalNot %bool %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+               OpBranch %51
+         %83 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+         %85 = OpLoad %int %i
+         %86 = OpIAdd %int %85 %int_1
+               OpStore %i %86
+               OpBranch %50
+         %51 = OpLabel
+         %87 = OpLoad %mat2v3float %m23
+         %88 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %89
+         %91 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpConvertSToF %float %98
+        %100 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %101 = OpLoad %int %100
+        %102 = OpConvertSToF %float %101
+        %103 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %104 = OpLoad %int %103
+        %105 = OpConvertSToF %float %104
+        %106 = OpCompositeConstruct %v3float %90 %93 %96
+        %107 = OpCompositeConstruct %v3float %99 %102 %105
+        %108 = OpCompositeConstruct %mat2v3float %106 %107
+        %109 = OpCompositeExtract %v3float %87 0
+        %110 = OpCompositeExtract %v3float %108 0
+        %111 = OpFOrdEqual %v3bool %109 %110
+        %112 = OpAll %bool %111
+        %113 = OpCompositeExtract %v3float %87 1
+        %114 = OpCompositeExtract %v3float %108 1
+        %115 = OpFOrdEqual %v3bool %113 %114
+        %116 = OpAll %bool %115
+        %117 = OpLogicalAnd %bool %112 %116
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %120
+        %119 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %122 = OpLoad %int %121
+        %123 = OpConvertSToF %float %122
+        %124 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %125 = OpLoad %int %124
+        %126 = OpConvertSToF %float %125
+        %127 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpConvertSToF %float %128
+        %130 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %131 = OpLoad %int %130
+        %132 = OpConvertSToF %float %131
+        %133 = OpCompositeConstruct %v4float %123 %126 %129 %132
+               OpStore %_GLF_color %133
+               OpBranch %118
+        %120 = OpLabel
+        %134 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %135 = OpLoad %int %134
+        %136 = OpConvertSToF %float %135
+        %137 = OpCompositeConstruct %v4float %136 %136 %136 %136
+               OpStore %_GLF_color %137
+               OpBranch %118
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a507a03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,100 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_10 : register(b0, 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() {
+  float2x3 m23 = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  const float x_46 = asfloat(x_7[1].x);
+  m23 = float2x3(float3(x_46, 0.0f, 0.0f), float3(0.0f, x_46, 0.0f));
+  i = 1;
+  while (true) {
+    bool x_80 = false;
+    bool x_81_phi = false;
+    const int x_54 = i;
+    const int x_56 = asint(x_10[3].x);
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+    const int x_62 = asint(x_10[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_66 = m23[x_60][x_62];
+    set_float3(m23[x_60], x_62, (x_66 + x_64));
+    const float x_70 = gl_FragCoord.y;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_72 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_70 < x_72)) {
+    }
+    x_81_phi = true;
+    if (true) {
+      const float x_79 = gl_FragCoord.x;
+      x_80 = (x_79 < 0.0f);
+      x_81_phi = x_80;
+    }
+    if (!(x_81_phi)) {
+      break;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const float2x3 x_87 = m23;
+  const int x_89 = asint(x_10[1].x);
+  const int x_92 = asint(x_10[1].x);
+  const int x_95 = asint(x_10[1].x);
+  const int x_98 = asint(x_10[1].x);
+  const int x_101 = asint(x_10[1].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_104 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float2x3 x_108 = float2x3(float3(float(x_89), float(x_92), float(x_95)), float3(float(x_98), float(x_101), float(x_104)));
+  bool tint_tmp = all((x_87[0u] == x_108[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_87[1u] == x_108[1u]));
+  }
+  if ((tint_tmp)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_122 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const int x_125 = asint(x_10[1].x);
+    const int x_128 = asint(x_10[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_131 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_122), float(x_125), float(x_128), float(x_131));
+  } else {
+    const int x_135 = asint(x_10[1].x);
+    const float x_136 = float(x_135);
+    x_GLF_color = float4(x_136, x_136, x_136, x_136);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6b34014
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2x3 m23 = float2x3(0.0f);
+  int i = 0;
+  float const x_46 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  m23 = float2x3(float3(x_46, 0.0f, 0.0f), float3(0.0f, x_46, 0.0f));
+  i = 1;
+  while (true) {
+    bool x_80 = false;
+    bool x_81_phi = false;
+    int const x_54 = i;
+    int const x_56 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    int const x_60 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_62 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_64 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_66 = m23[x_60][x_62];
+    m23[x_60][x_62] = (x_66 + x_64);
+    float const x_70 = (*(tint_symbol_5)).y;
+    float const x_72 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_70 < x_72)) {
+    }
+    x_81_phi = true;
+    if (true) {
+      float const x_79 = (*(tint_symbol_5)).x;
+      x_80 = (x_79 < 0.0f);
+      x_81_phi = x_80;
+    }
+    bool const x_81 = x_81_phi;
+    if (!(x_81)) {
+      break;
+    }
+    {
+      int const x_85 = i;
+      i = (x_85 + 1);
+    }
+  }
+  float2x3 const x_87 = m23;
+  int const x_89 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_92 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_95 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_98 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_101 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_104 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  float2x3 const x_108 = float2x3(float3(float(x_89), float(x_92), float(x_95)), float3(float(x_98), float(x_101), float(x_104)));
+  if ((all((x_87[0u] == x_108[0u])) && all((x_87[1u] == x_108[1u])))) {
+    int const x_122 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_125 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_128 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_131 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_122), float(x_125), float(x_128), float(x_131));
+  } else {
+    int const x_135 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_136 = float(x_135);
+    *(tint_symbol_6) = float4(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_10, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..c421db8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,249 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 164
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %m23 "m23"
+               OpName %i "i"
+               OpName %x_80 "x_80"
+               OpName %x_81_phi "x_81_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat2v3float = OpTypeMatrix %v3float 2
+%_ptr_Function_mat2v3float = OpTypePointer Function %mat2v3float
+         %31 = OpConstantNull %mat2v3float
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %51 = OpConstantNull %bool
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+       %true = OpConstantTrue %bool
+     %v3bool = OpTypeVector %bool 3
+   %main_out = OpTypeStruct %v4float
+        %151 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+        %m23 = OpVariable %_ptr_Function_mat2v3float Function %31
+          %i = OpVariable %_ptr_Function_int Function %34
+       %x_80 = OpVariable %_ptr_Function_bool Function %51
+   %x_81_phi = OpVariable %_ptr_Function_bool Function %51
+         %38 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %39 = OpLoad %float %38
+         %41 = OpCompositeConstruct %v3float %39 %float_0 %float_0
+         %42 = OpCompositeConstruct %v3float %float_0 %39 %float_0
+         %43 = OpCompositeConstruct %mat2v3float %41 %42
+               OpStore %m23 %43
+               OpStore %i %int_1
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %53 = OpLoad %int %i
+         %56 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %57 = OpLoad %int %56
+         %58 = OpSLessThan %bool %53 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpBranch %59
+         %61 = OpLabel
+               OpBranch %45
+         %59 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %66 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Function_float %m23 %64 %67
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Function_float %m23 %64 %67
+         %74 = OpFAdd %float %72 %69
+               OpStore %73 %74
+         %77 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %80 = OpLoad %float %79
+         %81 = OpFOrdLessThan %bool %78 %80
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+               OpStore %x_81_phi %true
+               OpSelectionMerge %85 None
+               OpBranchConditional %true %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpFOrdLessThan %bool %88 %float_0
+               OpStore %x_80 %89
+         %90 = OpLoad %bool %x_80
+               OpStore %x_81_phi %90
+               OpBranch %85
+         %85 = OpLabel
+         %91 = OpLoad %bool %x_81_phi
+         %92 = OpLogicalNot %bool %91
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+               OpBranch %45
+         %93 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %95 = OpLoad %int %i
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %i %96
+               OpBranch %44
+         %45 = OpLabel
+         %97 = OpLoad %mat2v3float %m23
+         %98 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %99
+        %111 = OpConvertSToF %float %101
+        %112 = OpConvertSToF %float %103
+        %113 = OpCompositeConstruct %v3float %110 %111 %112
+        %114 = OpConvertSToF %float %105
+        %115 = OpConvertSToF %float %107
+        %116 = OpConvertSToF %float %109
+        %117 = OpCompositeConstruct %v3float %114 %115 %116
+        %118 = OpCompositeConstruct %mat2v3float %113 %117
+        %120 = OpCompositeExtract %v3float %97 0
+        %121 = OpCompositeExtract %v3float %118 0
+        %122 = OpFOrdEqual %v3bool %120 %121
+        %119 = OpAll %bool %122
+               OpSelectionMerge %124 None
+               OpBranchConditional %119 %125 %124
+        %125 = OpLabel
+        %127 = OpCompositeExtract %v3float %97 1
+        %128 = OpCompositeExtract %v3float %118 1
+        %129 = OpFOrdEqual %v3bool %127 %128
+        %126 = OpAll %bool %129
+               OpBranch %124
+        %124 = OpLabel
+        %130 = OpPhi %bool %119 %45 %126 %125
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+        %134 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %135 = OpLoad %int %134
+        %136 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %139 = OpLoad %int %138
+        %140 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %141 = OpLoad %int %140
+        %142 = OpConvertSToF %float %135
+        %143 = OpConvertSToF %float %137
+        %144 = OpConvertSToF %float %139
+        %145 = OpConvertSToF %float %141
+        %146 = OpCompositeConstruct %v4float %142 %143 %144 %145
+               OpStore %x_GLF_color %146
+               OpBranch %131
+        %133 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %148 = OpLoad %int %147
+        %149 = OpConvertSToF %float %148
+        %150 = OpCompositeConstruct %v4float %149 %149 %149 %149
+               OpStore %x_GLF_color %150
+               OpBranch %131
+        %131 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %151
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %155 = OpLabel
+        %156 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %156
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %158 = OpLabel
+        %159 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %159
+        %160 = OpFunctionCall %void %main_1
+        %162 = OpLoad %v4float %x_GLF_color
+        %163 = OpCompositeConstruct %main_out %162
+        %161 = OpFunctionCall %void %tint_symbol_3 %163
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b9b8a36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,95 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m23 : mat2x3<f32>;
+  var i : i32;
+  let x_46 : f32 = x_7.x_GLF_uniform_float_values[1];
+  m23 = mat2x3<f32>(vec3<f32>(x_46, 0.0, 0.0), vec3<f32>(0.0, x_46, 0.0));
+  i = 1;
+  loop {
+    var x_80 : bool;
+    var x_81_phi : bool;
+    let x_54 : i32 = i;
+    let x_56 : i32 = x_10.x_GLF_uniform_int_values[3];
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_64 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_66 : f32 = m23[x_60][x_62];
+    m23[x_60][x_62] = (x_66 + x_64);
+    let x_70 : f32 = gl_FragCoord.y;
+    let x_72 : f32 = x_7.x_GLF_uniform_float_values[0];
+    if ((x_70 < x_72)) {
+    }
+    x_81_phi = true;
+    if (true) {
+      let x_79 : f32 = gl_FragCoord.x;
+      x_80 = (x_79 < 0.0);
+      x_81_phi = x_80;
+    }
+    let x_81 : bool = x_81_phi;
+    if (!(x_81)) {
+      break;
+    }
+
+    continuing {
+      let x_85 : i32 = i;
+      i = (x_85 + 1);
+    }
+  }
+  let x_87 : mat2x3<f32> = m23;
+  let x_89 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_92 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_95 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_98 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_101 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_104 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_108 : mat2x3<f32> = mat2x3<f32>(vec3<f32>(f32(x_89), f32(x_92), f32(x_95)), vec3<f32>(f32(x_98), f32(x_101), f32(x_104)));
+  if ((all((x_87[0u] == x_108[0u])) && all((x_87[1u] == x_108[1u])))) {
+    let x_122 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_125 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_128 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_131 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_122), f32(x_125), f32(x_128), f32(x_131));
+  } else {
+    let x_135 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_136 : f32 = f32(x_135);
+    x_GLF_color = vec4<f32>(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
new file mode 100644
index 0000000..b9b8a36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
@@ -0,0 +1,95 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m23 : mat2x3<f32>;
+  var i : i32;
+  let x_46 : f32 = x_7.x_GLF_uniform_float_values[1];
+  m23 = mat2x3<f32>(vec3<f32>(x_46, 0.0, 0.0), vec3<f32>(0.0, x_46, 0.0));
+  i = 1;
+  loop {
+    var x_80 : bool;
+    var x_81_phi : bool;
+    let x_54 : i32 = i;
+    let x_56 : i32 = x_10.x_GLF_uniform_int_values[3];
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_64 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_66 : f32 = m23[x_60][x_62];
+    m23[x_60][x_62] = (x_66 + x_64);
+    let x_70 : f32 = gl_FragCoord.y;
+    let x_72 : f32 = x_7.x_GLF_uniform_float_values[0];
+    if ((x_70 < x_72)) {
+    }
+    x_81_phi = true;
+    if (true) {
+      let x_79 : f32 = gl_FragCoord.x;
+      x_80 = (x_79 < 0.0);
+      x_81_phi = x_80;
+    }
+    let x_81 : bool = x_81_phi;
+    if (!(x_81)) {
+      break;
+    }
+
+    continuing {
+      let x_85 : i32 = i;
+      i = (x_85 + 1);
+    }
+  }
+  let x_87 : mat2x3<f32> = m23;
+  let x_89 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_92 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_95 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_98 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_101 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_104 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_108 : mat2x3<f32> = mat2x3<f32>(vec3<f32>(f32(x_89), f32(x_92), f32(x_95)), vec3<f32>(f32(x_98), f32(x_101), f32(x_104)));
+  if ((all((x_87[0u] == x_108[0u])) && all((x_87[1u] == x_108[1u])))) {
+    let x_122 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_125 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_128 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_131 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_122), f32(x_125), f32(x_128), f32(x_131));
+  } else {
+    let x_135 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_136 : f32 = f32(x_135);
+    x_GLF_color = vec4<f32>(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a507a03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,100 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_10 : register(b0, 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() {
+  float2x3 m23 = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  const float x_46 = asfloat(x_7[1].x);
+  m23 = float2x3(float3(x_46, 0.0f, 0.0f), float3(0.0f, x_46, 0.0f));
+  i = 1;
+  while (true) {
+    bool x_80 = false;
+    bool x_81_phi = false;
+    const int x_54 = i;
+    const int x_56 = asint(x_10[3].x);
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+    const int x_62 = asint(x_10[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_66 = m23[x_60][x_62];
+    set_float3(m23[x_60], x_62, (x_66 + x_64));
+    const float x_70 = gl_FragCoord.y;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_72 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_70 < x_72)) {
+    }
+    x_81_phi = true;
+    if (true) {
+      const float x_79 = gl_FragCoord.x;
+      x_80 = (x_79 < 0.0f);
+      x_81_phi = x_80;
+    }
+    if (!(x_81_phi)) {
+      break;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const float2x3 x_87 = m23;
+  const int x_89 = asint(x_10[1].x);
+  const int x_92 = asint(x_10[1].x);
+  const int x_95 = asint(x_10[1].x);
+  const int x_98 = asint(x_10[1].x);
+  const int x_101 = asint(x_10[1].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_104 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float2x3 x_108 = float2x3(float3(float(x_89), float(x_92), float(x_95)), float3(float(x_98), float(x_101), float(x_104)));
+  bool tint_tmp = all((x_87[0u] == x_108[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_87[1u] == x_108[1u]));
+  }
+  if ((tint_tmp)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_122 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const int x_125 = asint(x_10[1].x);
+    const int x_128 = asint(x_10[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_131 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_122), float(x_125), float(x_128), float(x_131));
+  } else {
+    const int x_135 = asint(x_10[1].x);
+    const float x_136 = float(x_135);
+    x_GLF_color = float4(x_136, x_136, x_136, x_136);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6b34014
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2x3 m23 = float2x3(0.0f);
+  int i = 0;
+  float const x_46 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  m23 = float2x3(float3(x_46, 0.0f, 0.0f), float3(0.0f, x_46, 0.0f));
+  i = 1;
+  while (true) {
+    bool x_80 = false;
+    bool x_81_phi = false;
+    int const x_54 = i;
+    int const x_56 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    int const x_60 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_62 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_64 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_66 = m23[x_60][x_62];
+    m23[x_60][x_62] = (x_66 + x_64);
+    float const x_70 = (*(tint_symbol_5)).y;
+    float const x_72 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_70 < x_72)) {
+    }
+    x_81_phi = true;
+    if (true) {
+      float const x_79 = (*(tint_symbol_5)).x;
+      x_80 = (x_79 < 0.0f);
+      x_81_phi = x_80;
+    }
+    bool const x_81 = x_81_phi;
+    if (!(x_81)) {
+      break;
+    }
+    {
+      int const x_85 = i;
+      i = (x_85 + 1);
+    }
+  }
+  float2x3 const x_87 = m23;
+  int const x_89 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_92 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_95 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_98 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_101 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  int const x_104 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  float2x3 const x_108 = float2x3(float3(float(x_89), float(x_92), float(x_95)), float3(float(x_98), float(x_101), float(x_104)));
+  if ((all((x_87[0u] == x_108[0u])) && all((x_87[1u] == x_108[1u])))) {
+    int const x_122 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_125 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_128 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_131 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_122), float(x_125), float(x_128), float(x_131));
+  } else {
+    int const x_135 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_136 = float(x_135);
+    *(tint_symbol_6) = float4(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_10, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..c421db8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,249 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 164
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %m23 "m23"
+               OpName %i "i"
+               OpName %x_80 "x_80"
+               OpName %x_81_phi "x_81_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat2v3float = OpTypeMatrix %v3float 2
+%_ptr_Function_mat2v3float = OpTypePointer Function %mat2v3float
+         %31 = OpConstantNull %mat2v3float
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %51 = OpConstantNull %bool
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+       %true = OpConstantTrue %bool
+     %v3bool = OpTypeVector %bool 3
+   %main_out = OpTypeStruct %v4float
+        %151 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+        %m23 = OpVariable %_ptr_Function_mat2v3float Function %31
+          %i = OpVariable %_ptr_Function_int Function %34
+       %x_80 = OpVariable %_ptr_Function_bool Function %51
+   %x_81_phi = OpVariable %_ptr_Function_bool Function %51
+         %38 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %39 = OpLoad %float %38
+         %41 = OpCompositeConstruct %v3float %39 %float_0 %float_0
+         %42 = OpCompositeConstruct %v3float %float_0 %39 %float_0
+         %43 = OpCompositeConstruct %mat2v3float %41 %42
+               OpStore %m23 %43
+               OpStore %i %int_1
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %53 = OpLoad %int %i
+         %56 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %57 = OpLoad %int %56
+         %58 = OpSLessThan %bool %53 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpBranch %59
+         %61 = OpLabel
+               OpBranch %45
+         %59 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %66 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Function_float %m23 %64 %67
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Function_float %m23 %64 %67
+         %74 = OpFAdd %float %72 %69
+               OpStore %73 %74
+         %77 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %80 = OpLoad %float %79
+         %81 = OpFOrdLessThan %bool %78 %80
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+               OpStore %x_81_phi %true
+               OpSelectionMerge %85 None
+               OpBranchConditional %true %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpFOrdLessThan %bool %88 %float_0
+               OpStore %x_80 %89
+         %90 = OpLoad %bool %x_80
+               OpStore %x_81_phi %90
+               OpBranch %85
+         %85 = OpLabel
+         %91 = OpLoad %bool %x_81_phi
+         %92 = OpLogicalNot %bool %91
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+               OpBranch %45
+         %93 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %95 = OpLoad %int %i
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %i %96
+               OpBranch %44
+         %45 = OpLabel
+         %97 = OpLoad %mat2v3float %m23
+         %98 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %99
+        %111 = OpConvertSToF %float %101
+        %112 = OpConvertSToF %float %103
+        %113 = OpCompositeConstruct %v3float %110 %111 %112
+        %114 = OpConvertSToF %float %105
+        %115 = OpConvertSToF %float %107
+        %116 = OpConvertSToF %float %109
+        %117 = OpCompositeConstruct %v3float %114 %115 %116
+        %118 = OpCompositeConstruct %mat2v3float %113 %117
+        %120 = OpCompositeExtract %v3float %97 0
+        %121 = OpCompositeExtract %v3float %118 0
+        %122 = OpFOrdEqual %v3bool %120 %121
+        %119 = OpAll %bool %122
+               OpSelectionMerge %124 None
+               OpBranchConditional %119 %125 %124
+        %125 = OpLabel
+        %127 = OpCompositeExtract %v3float %97 1
+        %128 = OpCompositeExtract %v3float %118 1
+        %129 = OpFOrdEqual %v3bool %127 %128
+        %126 = OpAll %bool %129
+               OpBranch %124
+        %124 = OpLabel
+        %130 = OpPhi %bool %119 %45 %126 %125
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+        %134 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %135 = OpLoad %int %134
+        %136 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %139 = OpLoad %int %138
+        %140 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %141 = OpLoad %int %140
+        %142 = OpConvertSToF %float %135
+        %143 = OpConvertSToF %float %137
+        %144 = OpConvertSToF %float %139
+        %145 = OpConvertSToF %float %141
+        %146 = OpCompositeConstruct %v4float %142 %143 %144 %145
+               OpStore %x_GLF_color %146
+               OpBranch %131
+        %133 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %148 = OpLoad %int %147
+        %149 = OpConvertSToF %float %148
+        %150 = OpCompositeConstruct %v4float %149 %149 %149 %149
+               OpStore %x_GLF_color %150
+               OpBranch %131
+        %131 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %151
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %155 = OpLabel
+        %156 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %156
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %158 = OpLabel
+        %159 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %159
+        %160 = OpFunctionCall %void %main_1
+        %162 = OpLoad %v4float %x_GLF_color
+        %163 = OpCompositeConstruct %main_out %162
+        %161 = OpFunctionCall %void %tint_symbol_3 %163
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b9b8a36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,95 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m23 : mat2x3<f32>;
+  var i : i32;
+  let x_46 : f32 = x_7.x_GLF_uniform_float_values[1];
+  m23 = mat2x3<f32>(vec3<f32>(x_46, 0.0, 0.0), vec3<f32>(0.0, x_46, 0.0));
+  i = 1;
+  loop {
+    var x_80 : bool;
+    var x_81_phi : bool;
+    let x_54 : i32 = i;
+    let x_56 : i32 = x_10.x_GLF_uniform_int_values[3];
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_64 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_66 : f32 = m23[x_60][x_62];
+    m23[x_60][x_62] = (x_66 + x_64);
+    let x_70 : f32 = gl_FragCoord.y;
+    let x_72 : f32 = x_7.x_GLF_uniform_float_values[0];
+    if ((x_70 < x_72)) {
+    }
+    x_81_phi = true;
+    if (true) {
+      let x_79 : f32 = gl_FragCoord.x;
+      x_80 = (x_79 < 0.0);
+      x_81_phi = x_80;
+    }
+    let x_81 : bool = x_81_phi;
+    if (!(x_81)) {
+      break;
+    }
+
+    continuing {
+      let x_85 : i32 = i;
+      i = (x_85 + 1);
+    }
+  }
+  let x_87 : mat2x3<f32> = m23;
+  let x_89 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_92 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_95 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_98 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_101 : i32 = x_10.x_GLF_uniform_int_values[1];
+  let x_104 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_108 : mat2x3<f32> = mat2x3<f32>(vec3<f32>(f32(x_89), f32(x_92), f32(x_95)), vec3<f32>(f32(x_98), f32(x_101), f32(x_104)));
+  if ((all((x_87[0u] == x_108[0u])) && all((x_87[1u] == x_108[1u])))) {
+    let x_122 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_125 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_128 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_131 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_122), f32(x_125), f32(x_128), f32(x_131));
+  } else {
+    let x_135 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_136 : f32 = f32(x_135);
+    x_GLF_color = vec4<f32>(x_136, x_136, x_136, x_136);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm
new file mode 100644
index 0000000..5022161
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm
@@ -0,0 +1,113 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %25 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %27 = OpLoad %int %26
+               OpStore %a %27
+               OpStore %i %int_0
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+         %32 = OpLoad %int %i
+         %33 = OpSLessThan %bool %32 %int_3
+               OpBranchConditional %33 %34 %29
+         %34 = OpLabel
+         %35 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpIEqual %bool %35 %37
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+         %42 = OpLoad %int %a
+         %43 = OpIAdd %int %42 %int_1
+               OpStore %a %43
+               OpBranch %39
+         %41 = OpLabel
+         %44 = OpLoad %int %a
+         %45 = OpLoad %int %i
+         %46 = OpSDiv %int %44 %45
+               OpStore %a %46
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %i %48
+               OpBranch %28
+         %29 = OpLabel
+         %49 = OpLoad %int %a
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %51 = OpLoad %int %50
+         %52 = OpIEqual %bool %49 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpCompositeConstruct %v4float %58 %61 %64 %67
+               OpStore %_GLF_color %68
+               OpBranch %53
+         %55 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %70
+         %72 = OpCompositeConstruct %v4float %71 %71 %71 %71
+               OpStore %_GLF_color %72
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..000228a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,53 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[3].x);
+  a = x_27;
+  i = 0;
+  {
+    for(; (i < 3); i = (i + 1)) {
+      const int x_35 = i;
+      const int x_37 = asint(x_6[1].x);
+      if ((x_35 == x_37)) {
+        a = (a + 1);
+      } else {
+        a = (a / i);
+      }
+    }
+  }
+  const int x_49 = a;
+  const int x_51 = asint(x_6[2].x);
+  if ((x_49 == x_51)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const int x_60 = asint(x_6[1].x);
+    const int x_63 = asint(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_57), float(x_60), float(x_63), float(x_66));
+  } else {
+    const int x_70 = asint(x_6[1].x);
+    const float x_71 = float(x_70);
+    x_GLF_color = float4(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..20ea637
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  a = x_27;
+  i = 0;
+  while (true) {
+    int const x_32 = i;
+    if ((x_32 < 3)) {
+    } else {
+      break;
+    }
+    int const x_35 = i;
+    int const x_37 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_35 == x_37)) {
+      int const x_42 = a;
+      a = (x_42 + 1);
+    } else {
+      int const x_44 = a;
+      int const x_45 = i;
+      a = (x_44 / x_45);
+    }
+    {
+      int const x_47 = i;
+      i = (x_47 + 1);
+    }
+  }
+  int const x_49 = a;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_49 == x_51)) {
+    int const x_57 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_66 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_57), float(x_60), float(x_63), float(x_66));
+  } else {
+    int const x_70 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_71 = float(x_70);
+    *(tint_symbol_4) = float4(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2c80162
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,151 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 91
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %79 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %27 = OpLoad %int %26
+               OpStore %a %27
+               OpStore %i %int_0
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %34 = OpSLessThan %bool %33 %int_3
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+               OpBranch %36
+         %38 = OpLabel
+               OpBranch %30
+         %36 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpIEqual %bool %39 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+         %47 = OpLoad %int %a
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %a %48
+               OpBranch %44
+         %46 = OpLabel
+         %49 = OpLoad %int %a
+         %50 = OpLoad %int %i
+         %51 = OpSDiv %int %49 %50
+               OpStore %a %51
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %29
+         %30 = OpLabel
+         %54 = OpLoad %int %a
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %57 = OpLoad %int %56
+         %58 = OpIEqual %bool %54 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %63
+         %71 = OpConvertSToF %float %65
+         %72 = OpConvertSToF %float %67
+         %73 = OpConvertSToF %float %69
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+               OpStore %x_GLF_color %74
+               OpBranch %59
+         %61 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %76
+         %78 = OpCompositeConstruct %v4float %77 %77 %77 %77
+               OpStore %x_GLF_color %78
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %79
+%tint_symbol = OpFunctionParameter %main_out
+         %83 = OpLabel
+         %84 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %84
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %86 = OpLabel
+         %87 = OpFunctionCall %void %main_1
+         %89 = OpLoad %v4float %x_GLF_color
+         %90 = OpCompositeConstruct %main_out %89
+         %88 = OpFunctionCall %void %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5615de9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[3];
+  a = x_27;
+  i = 0;
+  loop {
+    let x_32 : i32 = i;
+    if ((x_32 < 3)) {
+    } else {
+      break;
+    }
+    let x_35 : i32 = i;
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_35 == x_37)) {
+      let x_42 : i32 = a;
+      a = (x_42 + 1);
+    } else {
+      let x_44 : i32 = a;
+      let x_45 : i32 = i;
+      a = (x_44 / x_45);
+    }
+
+    continuing {
+      let x_47 : i32 = i;
+      i = (x_47 + 1);
+    }
+  }
+  let x_49 : i32 = a;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[2];
+  if ((x_49 == x_51)) {
+    let x_57 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_57), f32(x_60), f32(x_63), f32(x_66));
+  } else {
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_71 : f32 = f32(x_70);
+    x_GLF_color = vec4<f32>(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
new file mode 100644
index 0000000..5615de9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[3];
+  a = x_27;
+  i = 0;
+  loop {
+    let x_32 : i32 = i;
+    if ((x_32 < 3)) {
+    } else {
+      break;
+    }
+    let x_35 : i32 = i;
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_35 == x_37)) {
+      let x_42 : i32 = a;
+      a = (x_42 + 1);
+    } else {
+      let x_44 : i32 = a;
+      let x_45 : i32 = i;
+      a = (x_44 / x_45);
+    }
+
+    continuing {
+      let x_47 : i32 = i;
+      i = (x_47 + 1);
+    }
+  }
+  let x_49 : i32 = a;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[2];
+  if ((x_49 == x_51)) {
+    let x_57 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_57), f32(x_60), f32(x_63), f32(x_66));
+  } else {
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_71 : f32 = f32(x_70);
+    x_GLF_color = vec4<f32>(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..000228a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,53 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[3].x);
+  a = x_27;
+  i = 0;
+  {
+    for(; (i < 3); i = (i + 1)) {
+      const int x_35 = i;
+      const int x_37 = asint(x_6[1].x);
+      if ((x_35 == x_37)) {
+        a = (a + 1);
+      } else {
+        a = (a / i);
+      }
+    }
+  }
+  const int x_49 = a;
+  const int x_51 = asint(x_6[2].x);
+  if ((x_49 == x_51)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const int x_60 = asint(x_6[1].x);
+    const int x_63 = asint(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_57), float(x_60), float(x_63), float(x_66));
+  } else {
+    const int x_70 = asint(x_6[1].x);
+    const float x_71 = float(x_70);
+    x_GLF_color = float4(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..20ea637
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  a = x_27;
+  i = 0;
+  while (true) {
+    int const x_32 = i;
+    if ((x_32 < 3)) {
+    } else {
+      break;
+    }
+    int const x_35 = i;
+    int const x_37 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_35 == x_37)) {
+      int const x_42 = a;
+      a = (x_42 + 1);
+    } else {
+      int const x_44 = a;
+      int const x_45 = i;
+      a = (x_44 / x_45);
+    }
+    {
+      int const x_47 = i;
+      i = (x_47 + 1);
+    }
+  }
+  int const x_49 = a;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_49 == x_51)) {
+    int const x_57 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_66 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_57), float(x_60), float(x_63), float(x_66));
+  } else {
+    int const x_70 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_71 = float(x_70);
+    *(tint_symbol_4) = float4(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2c80162
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,151 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 91
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %79 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %27 = OpLoad %int %26
+               OpStore %a %27
+               OpStore %i %int_0
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %34 = OpSLessThan %bool %33 %int_3
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+               OpBranch %36
+         %38 = OpLabel
+               OpBranch %30
+         %36 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpIEqual %bool %39 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+         %47 = OpLoad %int %a
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %a %48
+               OpBranch %44
+         %46 = OpLabel
+         %49 = OpLoad %int %a
+         %50 = OpLoad %int %i
+         %51 = OpSDiv %int %49 %50
+               OpStore %a %51
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %29
+         %30 = OpLabel
+         %54 = OpLoad %int %a
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %57 = OpLoad %int %56
+         %58 = OpIEqual %bool %54 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %63
+         %71 = OpConvertSToF %float %65
+         %72 = OpConvertSToF %float %67
+         %73 = OpConvertSToF %float %69
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+               OpStore %x_GLF_color %74
+               OpBranch %59
+         %61 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %76
+         %78 = OpCompositeConstruct %v4float %77 %77 %77 %77
+               OpStore %x_GLF_color %78
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %79
+%tint_symbol = OpFunctionParameter %main_out
+         %83 = OpLabel
+         %84 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %84
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %86 = OpLabel
+         %87 = OpFunctionCall %void %main_1
+         %89 = OpLoad %v4float %x_GLF_color
+         %90 = OpCompositeConstruct %main_out %89
+         %88 = OpFunctionCall %void %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5615de9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[3];
+  a = x_27;
+  i = 0;
+  loop {
+    let x_32 : i32 = i;
+    if ((x_32 < 3)) {
+    } else {
+      break;
+    }
+    let x_35 : i32 = i;
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_35 == x_37)) {
+      let x_42 : i32 = a;
+      a = (x_42 + 1);
+    } else {
+      let x_44 : i32 = a;
+      let x_45 : i32 = i;
+      a = (x_44 / x_45);
+    }
+
+    continuing {
+      let x_47 : i32 = i;
+      i = (x_47 + 1);
+    }
+  }
+  let x_49 : i32 = a;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[2];
+  if ((x_49 == x_51)) {
+    let x_57 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_57), f32(x_60), f32(x_63), f32(x_66));
+  } else {
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_71 : f32 = f32(x_70);
+    x_GLF_color = vec4<f32>(x_71, x_71, x_71, x_71);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm
new file mode 100644
index 0000000..848d96c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm
@@ -0,0 +1,93 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %9
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %25 = OpLoad %int %24
+               OpStore %a %25
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %a
+         %31 = OpSGreaterThanEqual %bool %30 %int_0
+               OpBranchConditional %31 %32 %27
+         %32 = OpLabel
+         %33 = OpLoad %int %a
+         %34 = OpSDiv %int %33 %int_2
+         %35 = OpISub %int %34 %int_1
+               OpStore %a %35
+               OpBranch %28
+         %28 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %36 = OpLoad %int %a
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpSNegate %int %38
+         %40 = OpIEqual %bool %36 %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpCompositeConstruct %v4float %46 %49 %52 %55
+               OpStore %_GLF_color %56
+               OpBranch %41
+         %43 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpCompositeConstruct %v4float %59 %59 %59 %59
+               OpStore %_GLF_color %60
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b595c46
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,48 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const int x_25 = asint(x_6[2].x);
+  a = x_25;
+  while (true) {
+    if ((a >= 0)) {
+    } else {
+      break;
+    }
+    a = ((a / 2) - 1);
+  }
+  const int x_36 = a;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_36 == -(x_38))) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_48 = asint(x_6[1].x);
+    const int x_51 = asint(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    const int x_58 = asint(x_6[1].x);
+    const float x_59 = float(x_58);
+    x_GLF_color = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1332988
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_25;
+  while (true) {
+    int const x_30 = a;
+    if ((x_30 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_33 = a;
+    a = ((x_33 / 2) - 1);
+  }
+  int const x_36 = a;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_36 == -(x_38))) {
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_54 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_59 = float(x_58);
+    *(tint_symbol_4) = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..af6b9c9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,131 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %26 = OpLoad %int %25
+               OpStore %a %26
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpLoad %int %a
+         %33 = OpSGreaterThanEqual %bool %31 %int_0
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %28
+         %35 = OpLabel
+         %38 = OpLoad %int %a
+         %39 = OpSDiv %int %38 %int_2
+         %41 = OpISub %int %39 %int_1
+               OpStore %a %41
+               OpBranch %29
+         %29 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+         %42 = OpLoad %int %a
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpSNegate %int %44
+         %46 = OpIEqual %bool %42 %45
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %51
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %47
+         %49 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5a6c993
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,50 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_25;
+  loop {
+    let x_30 : i32 = a;
+    if ((x_30 >= 0)) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = a;
+    a = ((x_33 / 2) - 1);
+  }
+  let x_36 : i32 = a;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_36 == -(x_38))) {
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  } else {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_59 : f32 = f32(x_58);
+    x_GLF_color = vec4<f32>(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
new file mode 100644
index 0000000..5a6c993
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
@@ -0,0 +1,50 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_25;
+  loop {
+    let x_30 : i32 = a;
+    if ((x_30 >= 0)) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = a;
+    a = ((x_33 / 2) - 1);
+  }
+  let x_36 : i32 = a;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_36 == -(x_38))) {
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  } else {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_59 : f32 = f32(x_58);
+    x_GLF_color = vec4<f32>(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b595c46
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,48 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const int x_25 = asint(x_6[2].x);
+  a = x_25;
+  while (true) {
+    if ((a >= 0)) {
+    } else {
+      break;
+    }
+    a = ((a / 2) - 1);
+  }
+  const int x_36 = a;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_36 == -(x_38))) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_48 = asint(x_6[1].x);
+    const int x_51 = asint(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    const int x_58 = asint(x_6[1].x);
+    const float x_59 = float(x_58);
+    x_GLF_color = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1332988
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_25;
+  while (true) {
+    int const x_30 = a;
+    if ((x_30 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_33 = a;
+    a = ((x_33 / 2) - 1);
+  }
+  int const x_36 = a;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_36 == -(x_38))) {
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_54 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  } else {
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_59 = float(x_58);
+    *(tint_symbol_4) = float4(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..af6b9c9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,131 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %26 = OpLoad %int %25
+               OpStore %a %26
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpLoad %int %a
+         %33 = OpSGreaterThanEqual %bool %31 %int_0
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %28
+         %35 = OpLabel
+         %38 = OpLoad %int %a
+         %39 = OpSDiv %int %38 %int_2
+         %41 = OpISub %int %39 %int_1
+               OpStore %a %41
+               OpBranch %29
+         %29 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+         %42 = OpLoad %int %a
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpSNegate %int %44
+         %46 = OpIEqual %bool %42 %45
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %51
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %47
+         %49 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %65 %65 %65 %65
+               OpStore %x_GLF_color %66
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5a6c993
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,50 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_25;
+  loop {
+    let x_30 : i32 = a;
+    if ((x_30 >= 0)) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = a;
+    a = ((x_33 / 2) - 1);
+  }
+  let x_36 : i32 = a;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_36 == -(x_38))) {
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  } else {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_59 : f32 = f32(x_58);
+    x_GLF_color = vec4<f32>(x_59, x_59, x_59, x_59);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm
new file mode 100644
index 0000000..5fdf9d6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm
@@ -0,0 +1,81 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %9
+         %24 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %26 = OpLoad %int %25
+               OpStore %a %26
+         %27 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpConvertSToF %float %28
+         %30 = OpCompositeConstruct %v4float %29 %29 %29 %29
+               OpStore %_GLF_color %30
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %36 = OpLoad %int %35
+         %37 = OpLoad %int %a
+         %38 = OpIEqual %bool %36 %37
+         %39 = OpLogicalNotEqual %bool %38 %true
+               OpBranchConditional %39 %40 %32
+         %40 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpCompositeConstruct %v4float %43 %46 %49 %52
+               OpStore %_GLF_color %53
+               OpBranch %32
+         %33 = OpLabel
+               OpBranch %31
+         %32 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..31c1ef2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_26 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_26;
+  const int x_28 = asint(x_6[1].x);
+  const float x_29 = float(x_28);
+  x_GLF_color = float4(x_29, x_29, x_29, x_29);
+  while (true) {
+    const int x_36 = asint(x_6[2].x);
+    if (((x_36 == a) != true)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_42 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_45 = asint(x_6[1].x);
+    const int x_48 = asint(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_51 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ca01da7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.msl
@@ -0,0 +1,52 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_26;
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_29 = float(x_28);
+  *(tint_symbol_4) = float4(x_29, x_29, x_29, x_29);
+  while (true) {
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_37 = a;
+    if (((x_36 == x_37) != true)) {
+    } else {
+      break;
+    }
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f4f6126
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,119 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %26 = OpLoad %int %25
+               OpStore %a %26
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %29 = OpLoad %int %28
+         %30 = OpConvertSToF %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %x_GLF_color %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %38 = OpLoad %int %37
+         %39 = OpLoad %int %a
+         %40 = OpIEqual %bool %38 %39
+         %43 = OpLogicalNotEqual %bool %40 %true
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %33
+         %44 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %48
+         %56 = OpConvertSToF %float %50
+         %57 = OpConvertSToF %float %52
+         %58 = OpConvertSToF %float %54
+         %59 = OpCompositeConstruct %v4float %55 %56 %57 %58
+               OpStore %x_GLF_color %59
+               OpBranch %33
+         %34 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a11c846
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,45 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_26;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_29 : f32 = f32(x_28);
+  x_GLF_color = vec4<f32>(x_29, x_29, x_29, x_29);
+  loop {
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_37 : i32 = a;
+    if (((x_36 == x_37) != true)) {
+    } else {
+      break;
+    }
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
new file mode 100644
index 0000000..a11c846
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
@@ -0,0 +1,45 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_26;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_29 : f32 = f32(x_28);
+  x_GLF_color = vec4<f32>(x_29, x_29, x_29, x_29);
+  loop {
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_37 : i32 = a;
+    if (((x_36 == x_37) != true)) {
+    } else {
+      break;
+    }
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..31c1ef2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_26 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = x_26;
+  const int x_28 = asint(x_6[1].x);
+  const float x_29 = float(x_28);
+  x_GLF_color = float4(x_29, x_29, x_29, x_29);
+  while (true) {
+    const int x_36 = asint(x_6[2].x);
+    if (((x_36 == a) != true)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_42 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_45 = asint(x_6[1].x);
+    const int x_48 = asint(x_6[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_51 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ca01da7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.msl
@@ -0,0 +1,52 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = x_26;
+  int const x_28 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_29 = float(x_28);
+  *(tint_symbol_4) = float4(x_29, x_29, x_29, x_29);
+  while (true) {
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_37 = a;
+    if (((x_36 == x_37) != true)) {
+    } else {
+      break;
+    }
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_51 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_42), float(x_45), float(x_48), float(x_51));
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f4f6126
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,119 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %26 = OpLoad %int %25
+               OpStore %a %26
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %29 = OpLoad %int %28
+         %30 = OpConvertSToF %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %x_GLF_color %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %38 = OpLoad %int %37
+         %39 = OpLoad %int %a
+         %40 = OpIEqual %bool %38 %39
+         %43 = OpLogicalNotEqual %bool %40 %true
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %33
+         %44 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %48
+         %56 = OpConvertSToF %float %50
+         %57 = OpConvertSToF %float %52
+         %58 = OpConvertSToF %float %54
+         %59 = OpCompositeConstruct %v4float %55 %56 %57 %58
+               OpStore %x_GLF_color %59
+               OpBranch %33
+         %34 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a11c846
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,45 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = x_26;
+  let x_28 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_29 : f32 = f32(x_28);
+  x_GLF_color = vec4<f32>(x_29, x_29, x_29, x_29);
+  loop {
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_37 : i32 = a;
+    if (((x_36 == x_37) != true)) {
+    } else {
+      break;
+    }
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_51 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_42), f32(x_45), f32(x_48), f32(x_51));
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm
new file mode 100644
index 0000000..97d3744
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm
@@ -0,0 +1,117 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+    %int_100 = OpConstant %int 100
+       %main = OpFunction %void None %9
+         %25 = OpLabel
+               OpStore %_GLF_global_loop_count %int_0
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %27 = OpLoad %int %26
+               OpSelectionMerge %28 None
+               OpSwitch %27 %28 0 %29 1 %30
+         %29 = OpLabel
+               OpSelectionMerge %31 None
+               OpBranchConditional %true %32 %31
+         %32 = OpLabel
+         %33 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+               OpStore %_GLF_color %36
+               OpReturn
+         %31 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpSelectionMerge %37 None
+               OpBranchConditional %true %38 %37
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpCompositeConstruct %v4float %41 %44 %47 %50
+               OpStore %_GLF_color %51
+               OpSelectionMerge %52 None
+               OpBranchConditional %false %53 %52
+         %53 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpCompositeConstruct %v4float %56 %56 %56 %56
+               OpStore %_GLF_color %57
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpLoad %int %_GLF_global_loop_count
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %_GLF_global_loop_count %63
+               OpSelectionMerge %64 None
+               OpBranchConditional %false %65 %64
+         %65 = OpLabel
+               OpReturn
+         %64 = OpLabel
+               OpSelectionMerge %66 None
+               OpBranchConditional %true %67 %66
+         %67 = OpLabel
+               OpReturn
+         %66 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+         %68 = OpLoad %int %_GLF_global_loop_count
+         %69 = OpSLessThan %bool %68 %int_100
+               OpBranchConditional %69 %58 %59
+         %59 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f8db992
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,73 @@
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  x_GLF_global_loop_count = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_27 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  switch(x_27) {
+    case 0: {
+      if (true) {
+        const int x_34 = asint(x_6[1].x);
+        const float x_35 = float(x_34);
+        x_GLF_color = float4(x_35, x_35, x_35, x_35);
+        return;
+      }
+      /* fallthrough */
+    }
+    case 1: {
+      if (true) {
+        const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+        const int x_40 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+        const int x_43 = asint(x_6[1].x);
+        const int x_46 = asint(x_6[1].x);
+        const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+        const int x_49 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        x_GLF_color = float4(float(x_40), float(x_43), float(x_46), float(x_49));
+        if (false) {
+          const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+          const int x_55 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+          const float x_56 = float(x_55);
+          x_GLF_color = float4(x_56, x_56, x_56, x_56);
+          while (true) {
+            x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+            if (false) {
+              return;
+            }
+            if (true) {
+              return;
+            }
+            {
+              if ((x_GLF_global_loop_count < 100)) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..886f813
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.msl
@@ -0,0 +1,81 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  *(tint_symbol_4) = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  switch(x_27) {
+    case 0: {
+      if (true) {
+        int const x_34 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        float const x_35 = float(x_34);
+        *(tint_symbol_5) = float4(x_35, x_35, x_35, x_35);
+        return;
+      }
+      /* fallthrough */
+    }
+    case 1: {
+      if (true) {
+        int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+        int const x_43 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        int const x_46 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        int const x_49 = x_6.x_GLF_uniform_int_values.arr[0].el;
+        *(tint_symbol_5) = float4(float(x_40), float(x_43), float(x_46), float(x_49));
+        if (false) {
+          int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+          float const x_56 = float(x_55);
+          *(tint_symbol_5) = float4(x_56, x_56, x_56, x_56);
+          while (true) {
+            int const x_62 = *(tint_symbol_4);
+            *(tint_symbol_4) = (x_62 + 1);
+            if (false) {
+              return;
+            }
+            if (true) {
+              return;
+            }
+            {
+              int const x_68 = *(tint_symbol_4);
+              if ((x_68 < 100)) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..39748f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,164 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+    %int_100 = OpConstant %int 100
+   %main_out = OpTypeStruct %v4float
+         %78 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+               OpStore %x_GLF_global_loop_count %int_0
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %26 = OpLoad %int %25
+               OpSelectionMerge %27 None
+               OpSwitch %26 %28 0 %29 1 %30
+         %29 = OpLabel
+               OpSelectionMerge %33 None
+               OpBranchConditional %true %34 %33
+         %34 = OpLabel
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpConvertSToF %float %37
+         %39 = OpCompositeConstruct %v4float %38 %38 %38 %38
+               OpStore %x_GLF_color %39
+               OpReturn
+         %33 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpSelectionMerge %40 None
+               OpBranchConditional %true %41 %40
+         %41 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %43
+         %51 = OpConvertSToF %float %45
+         %52 = OpConvertSToF %float %47
+         %53 = OpConvertSToF %float %49
+         %54 = OpCompositeConstruct %v4float %50 %51 %52 %53
+               OpStore %x_GLF_color %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %false %57 %56
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %60 %60 %60 %60
+               OpStore %x_GLF_color %61
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %66 = OpLoad %int %x_GLF_global_loop_count
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %x_GLF_global_loop_count %67
+               OpSelectionMerge %68 None
+               OpBranchConditional %false %69 %68
+         %69 = OpLabel
+               OpReturn
+         %68 = OpLabel
+               OpSelectionMerge %70 None
+               OpBranchConditional %true %71 %70
+         %71 = OpLabel
+               OpReturn
+         %70 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+         %72 = OpLoad %int %x_GLF_global_loop_count
+         %74 = OpSLessThan %bool %72 %int_100
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %63
+         %75 = OpLabel
+               OpBranch %62
+         %63 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %78
+%tint_symbol = OpFunctionParameter %main_out
+         %82 = OpLabel
+         %83 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %83
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %85 = OpLabel
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_2 %89
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 64[%64] is not post dominated by the back-edge block 75[%75]
+  %75 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7b901c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,74 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[0];
+  switch(x_27) {
+    case 0: {
+      if (true) {
+        let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_35 : f32 = f32(x_34);
+        x_GLF_color = vec4<f32>(x_35, x_35, x_35, x_35);
+        return;
+      }
+      fallthrough;
+    }
+    case 1: {
+      if (true) {
+        let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+        let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+        x_GLF_color = vec4<f32>(f32(x_40), f32(x_43), f32(x_46), f32(x_49));
+        if (false) {
+          let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+          let x_56 : f32 = f32(x_55);
+          x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+          loop {
+            let x_62 : i32 = x_GLF_global_loop_count;
+            x_GLF_global_loop_count = (x_62 + 1);
+            if (false) {
+              return;
+            }
+            if (true) {
+              return;
+            }
+
+            continuing {
+              let x_68 : i32 = x_GLF_global_loop_count;
+              if ((x_68 < 100)) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+      }
+    }
+    default: {
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
new file mode 100644
index 0000000..7b901c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
@@ -0,0 +1,74 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[0];
+  switch(x_27) {
+    case 0: {
+      if (true) {
+        let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_35 : f32 = f32(x_34);
+        x_GLF_color = vec4<f32>(x_35, x_35, x_35, x_35);
+        return;
+      }
+      fallthrough;
+    }
+    case 1: {
+      if (true) {
+        let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+        let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+        x_GLF_color = vec4<f32>(f32(x_40), f32(x_43), f32(x_46), f32(x_49));
+        if (false) {
+          let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+          let x_56 : f32 = f32(x_55);
+          x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+          loop {
+            let x_62 : i32 = x_GLF_global_loop_count;
+            x_GLF_global_loop_count = (x_62 + 1);
+            if (false) {
+              return;
+            }
+            if (true) {
+              return;
+            }
+
+            continuing {
+              let x_68 : i32 = x_GLF_global_loop_count;
+              if ((x_68 < 100)) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+      }
+    }
+    default: {
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f8db992
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,73 @@
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  x_GLF_global_loop_count = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_27 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  switch(x_27) {
+    case 0: {
+      if (true) {
+        const int x_34 = asint(x_6[1].x);
+        const float x_35 = float(x_34);
+        x_GLF_color = float4(x_35, x_35, x_35, x_35);
+        return;
+      }
+      /* fallthrough */
+    }
+    case 1: {
+      if (true) {
+        const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+        const int x_40 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+        const int x_43 = asint(x_6[1].x);
+        const int x_46 = asint(x_6[1].x);
+        const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+        const int x_49 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        x_GLF_color = float4(float(x_40), float(x_43), float(x_46), float(x_49));
+        if (false) {
+          const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+          const int x_55 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+          const float x_56 = float(x_55);
+          x_GLF_color = float4(x_56, x_56, x_56, x_56);
+          while (true) {
+            x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+            if (false) {
+              return;
+            }
+            if (true) {
+              return;
+            }
+            {
+              if ((x_GLF_global_loop_count < 100)) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..886f813
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.msl
@@ -0,0 +1,81 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  *(tint_symbol_4) = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  switch(x_27) {
+    case 0: {
+      if (true) {
+        int const x_34 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        float const x_35 = float(x_34);
+        *(tint_symbol_5) = float4(x_35, x_35, x_35, x_35);
+        return;
+      }
+      /* fallthrough */
+    }
+    case 1: {
+      if (true) {
+        int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+        int const x_43 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        int const x_46 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        int const x_49 = x_6.x_GLF_uniform_int_values.arr[0].el;
+        *(tint_symbol_5) = float4(float(x_40), float(x_43), float(x_46), float(x_49));
+        if (false) {
+          int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+          float const x_56 = float(x_55);
+          *(tint_symbol_5) = float4(x_56, x_56, x_56, x_56);
+          while (true) {
+            int const x_62 = *(tint_symbol_4);
+            *(tint_symbol_4) = (x_62 + 1);
+            if (false) {
+              return;
+            }
+            if (true) {
+              return;
+            }
+            {
+              int const x_68 = *(tint_symbol_4);
+              if ((x_68 < 100)) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..39748f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,164 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+    %int_100 = OpConstant %int 100
+   %main_out = OpTypeStruct %v4float
+         %78 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+               OpStore %x_GLF_global_loop_count %int_0
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %26 = OpLoad %int %25
+               OpSelectionMerge %27 None
+               OpSwitch %26 %28 0 %29 1 %30
+         %29 = OpLabel
+               OpSelectionMerge %33 None
+               OpBranchConditional %true %34 %33
+         %34 = OpLabel
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpConvertSToF %float %37
+         %39 = OpCompositeConstruct %v4float %38 %38 %38 %38
+               OpStore %x_GLF_color %39
+               OpReturn
+         %33 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpSelectionMerge %40 None
+               OpBranchConditional %true %41 %40
+         %41 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %43
+         %51 = OpConvertSToF %float %45
+         %52 = OpConvertSToF %float %47
+         %53 = OpConvertSToF %float %49
+         %54 = OpCompositeConstruct %v4float %50 %51 %52 %53
+               OpStore %x_GLF_color %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %false %57 %56
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %60 %60 %60 %60
+               OpStore %x_GLF_color %61
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %66 = OpLoad %int %x_GLF_global_loop_count
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %x_GLF_global_loop_count %67
+               OpSelectionMerge %68 None
+               OpBranchConditional %false %69 %68
+         %69 = OpLabel
+               OpReturn
+         %68 = OpLabel
+               OpSelectionMerge %70 None
+               OpBranchConditional %true %71 %70
+         %71 = OpLabel
+               OpReturn
+         %70 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+         %72 = OpLoad %int %x_GLF_global_loop_count
+         %74 = OpSLessThan %bool %72 %int_100
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %63
+         %75 = OpLabel
+               OpBranch %62
+         %63 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %78
+%tint_symbol = OpFunctionParameter %main_out
+         %82 = OpLabel
+         %83 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %83
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %85 = OpLabel
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_2 %89
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 64[%64] is not post dominated by the back-edge block 75[%75]
+  %75 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7b901c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,74 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  x_GLF_global_loop_count = 0;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[0];
+  switch(x_27) {
+    case 0: {
+      if (true) {
+        let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_35 : f32 = f32(x_34);
+        x_GLF_color = vec4<f32>(x_35, x_35, x_35, x_35);
+        return;
+      }
+      fallthrough;
+    }
+    case 1: {
+      if (true) {
+        let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+        let x_43 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+        x_GLF_color = vec4<f32>(f32(x_40), f32(x_43), f32(x_46), f32(x_49));
+        if (false) {
+          let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+          let x_56 : f32 = f32(x_55);
+          x_GLF_color = vec4<f32>(x_56, x_56, x_56, x_56);
+          loop {
+            let x_62 : i32 = x_GLF_global_loop_count;
+            x_GLF_global_loop_count = (x_62 + 1);
+            if (false) {
+              return;
+            }
+            if (true) {
+              return;
+            }
+
+            continuing {
+              let x_68 : i32 = x_GLF_global_loop_count;
+              if ((x_68 < 100)) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+      }
+    }
+    default: {
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm
new file mode 100644
index 0000000..eb76d7e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm
@@ -0,0 +1,159 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %arr "arr"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+%_ptr_Function__arr_float_uint_5 = OpTypePointer Function %_arr_float_uint_5
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+    %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_2 = OpConstant %float 2
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_float_uint_5 Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %46 = OpLoad %float %45
+         %47 = OpCompositeConstruct %_arr_float_uint_5 %38 %40 %42 %44 %46
+               OpStore %arr %47
+         %48 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %49 = OpLoad %int %48
+               OpStore %i %49
+               OpStore %j %int_0
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpSLessThan %bool %54 %56
+               OpBranchConditional %57 %58 %51
+         %58 = OpLabel
+         %59 = OpLoad %int %j
+         %60 = OpSLessThan %bool %59 %int_n1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpBranch %51
+         %61 = OpLabel
+         %63 = OpLoad %int %j
+         %64 = OpAccessChain %_ptr_Function_float %arr %63
+         %65 = OpLoad %float %64
+         %66 = OpFAdd %float %65 %float_1
+         %67 = OpAccessChain %_ptr_Function_float %arr %63
+               OpStore %67 %66
+               OpBranch %52
+         %52 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %i %69
+         %70 = OpLoad %int %j
+         %71 = OpIAdd %int %70 %int_1
+               OpStore %j %71
+               OpBranch %50
+         %51 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpCompositeConstruct %v4float %73 %75 %77 %79
+               OpStore %_GLF_color %80
+         %81 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %82 = OpLoad %int %81
+               OpStore %i %82
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+         %87 = OpLoad %int %i
+         %88 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %89 = OpLoad %int %88
+         %90 = OpSLessThan %bool %87 %89
+               OpBranchConditional %90 %91 %84
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpAccessChain %_ptr_Function_float %arr %92
+         %94 = OpLoad %float %93
+         %95 = OpFUnordNotEqual %bool %94 %float_2
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %99 = OpLoad %float %98
+        %100 = OpCompositeConstruct %v4float %99 %99 %99 %99
+               OpStore %_GLF_color %100
+               OpBranch %96
+         %96 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+        %101 = OpLoad %int %i
+        %102 = OpIAdd %int %101 %int_1
+               OpStore %i %102
+               OpBranch %83
+         %84 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..073d5f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,88 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float arr[5] = (float[5])0;
+  int i = 0;
+  int j = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_38 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_46 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const float tint_symbol_4[5] = {x_38, x_40, x_42, x_44, x_46};
+  arr = tint_symbol_4;
+  const int x_49 = asint(x_9[1].x);
+  i = x_49;
+  j = 0;
+  while (true) {
+    const int x_54 = i;
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_9[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    if ((j < -1)) {
+      break;
+    }
+    const int x_63 = j;
+    const float x_65 = arr[x_63];
+    arr[x_63] = (x_65 + 1.0f);
+    {
+      i = (i + 1);
+      j = (j + 1);
+    }
+  }
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const float x_73 = asfloat(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  const float x_75 = asfloat(x_6[1].x);
+  const float x_77 = asfloat(x_6[1].x);
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const float x_79 = asfloat(x_6[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  x_GLF_color = float4(x_73, x_75, x_77, x_79);
+  const int x_82 = asint(x_9[1].x);
+  i = x_82;
+  while (true) {
+    const int x_87 = i;
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const int x_89 = asint(x_9[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    if ((x_87 < x_89)) {
+    } else {
+      break;
+    }
+    const float x_94 = arr[i];
+    if (!((x_94 == 2.0f))) {
+      const float x_99 = asfloat(x_6[1].x);
+      x_GLF_color = float4(x_99, x_99, x_99, x_99);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ec7cae1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.msl
@@ -0,0 +1,104 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[5];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 arr = {};
+  int i = 0;
+  int j = 0;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_46 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_38, x_40, x_42, x_44, x_46}};
+  arr = tint_symbol_3;
+  int const x_49 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_49;
+  j = 0;
+  while (true) {
+    int const x_54 = i;
+    int const x_56 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    int const x_59 = j;
+    if ((x_59 < -1)) {
+      break;
+    }
+    int const x_63 = j;
+    float const x_65 = arr.arr[x_63];
+    arr.arr[x_63] = (x_65 + 1.0f);
+    {
+      int const x_68 = i;
+      i = (x_68 + 1);
+      int const x_70 = j;
+      j = (x_70 + 1);
+    }
+  }
+  float const x_73 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_75 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_77 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_79 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  *(tint_symbol_5) = float4(x_73, x_75, x_77, x_79);
+  int const x_82 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_82;
+  while (true) {
+    int const x_87 = i;
+    int const x_89 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_87 < x_89)) {
+    } else {
+      break;
+    }
+    int const x_92 = i;
+    float const x_94 = arr.arr[x_92];
+    if (!((x_94 == 2.0f))) {
+      float const x_99 = x_6.x_GLF_uniform_float_values.arr[1].el;
+      *(tint_symbol_5) = float4(x_99, x_99, x_99, x_99);
+    }
+    {
+      int const x_101 = i;
+      i = (x_101 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..193f5f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,206 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 125
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+%_ptr_Function__arr_float_uint_5 = OpTypePointer Function %_arr_float_uint_5
+         %27 = OpConstantNull %_arr_float_uint_5
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+   %main_out = OpTypeStruct %v4float
+        %113 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_float_uint_5 Function %27
+          %i = OpVariable %_ptr_Function_int Function %30
+          %j = OpVariable %_ptr_Function_int Function %30
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpCompositeConstruct %_arr_float_uint_5 %36 %38 %40 %42 %44
+               OpStore %arr %45
+         %48 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %49 = OpLoad %int %48
+               OpStore %i %49
+               OpStore %j %int_0
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpSLessThan %bool %54 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %61
+         %60 = OpLabel
+               OpBranch %59
+         %61 = OpLabel
+               OpBranch %51
+         %59 = OpLabel
+         %62 = OpLoad %int %j
+         %64 = OpSLessThan %bool %62 %int_n1
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpBranch %51
+         %65 = OpLabel
+         %67 = OpLoad %int %j
+         %69 = OpAccessChain %_ptr_Function_float %arr %67
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Function_float %arr %67
+         %73 = OpFAdd %float %70 %float_1
+               OpStore %71 %73
+               OpBranch %52
+         %52 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %i %75
+         %76 = OpLoad %int %j
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %j %77
+               OpBranch %50
+         %51 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %83 = OpLoad %float %82
+         %84 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpCompositeConstruct %v4float %79 %81 %83 %85
+               OpStore %x_GLF_color %86
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %88 = OpLoad %int %87
+               OpStore %i %88
+               OpBranch %89
+         %89 = OpLabel
+               OpLoopMerge %90 %91 None
+               OpBranch %92
+         %92 = OpLabel
+         %93 = OpLoad %int %i
+         %94 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpSLessThan %bool %93 %95
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %99
+         %98 = OpLabel
+               OpBranch %97
+         %99 = OpLabel
+               OpBranch %90
+         %97 = OpLabel
+        %100 = OpLoad %int %i
+        %101 = OpAccessChain %_ptr_Function_float %arr %100
+        %102 = OpLoad %float %101
+        %105 = OpFOrdEqual %bool %102 %float_2
+        %103 = OpLogicalNot %bool %105
+               OpSelectionMerge %106 None
+               OpBranchConditional %103 %107 %106
+        %107 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %109 = OpLoad %float %108
+        %110 = OpCompositeConstruct %v4float %109 %109 %109 %109
+               OpStore %x_GLF_color %110
+               OpBranch %106
+        %106 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+        %111 = OpLoad %int %i
+        %112 = OpIAdd %int %111 %int_1
+               OpStore %i %112
+               OpBranch %89
+         %90 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %113
+%tint_symbol = OpFunctionParameter %main_out
+        %117 = OpLabel
+        %118 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %118
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %120 = OpLabel
+        %121 = OpFunctionCall %void %main_1
+        %123 = OpLoad %v4float %x_GLF_color
+        %124 = OpCompositeConstruct %main_out %123
+        %122 = OpFunctionCall %void %tint_symbol_2 %124
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..9bd8ed5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,94 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<f32, 5>;
+  var i : i32;
+  var j : i32;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_46 : f32 = x_6.x_GLF_uniform_float_values[0];
+  arr = array<f32, 5>(x_38, x_40, x_42, x_44, x_46);
+  let x_49 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_49;
+  j = 0;
+  loop {
+    let x_54 : i32 = i;
+    let x_56 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = j;
+    if ((x_59 < -1)) {
+      break;
+    }
+    let x_63 : i32 = j;
+    let x_65 : f32 = arr[x_63];
+    arr[x_63] = (x_65 + 1.0);
+
+    continuing {
+      let x_68 : i32 = i;
+      i = (x_68 + 1);
+      let x_70 : i32 = j;
+      j = (x_70 + 1);
+    }
+  }
+  let x_73 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_75 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_77 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_79 : f32 = x_6.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_73, x_75, x_77, x_79);
+  let x_82 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_82;
+  loop {
+    let x_87 : i32 = i;
+    let x_89 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_87 < x_89)) {
+    } else {
+      break;
+    }
+    let x_92 : i32 = i;
+    let x_94 : f32 = arr[x_92];
+    if (!((x_94 == 2.0))) {
+      let x_99 : f32 = x_6.x_GLF_uniform_float_values[1];
+      x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+    }
+
+    continuing {
+      let x_101 : i32 = i;
+      i = (x_101 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
new file mode 100644
index 0000000..9bd8ed5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
@@ -0,0 +1,94 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<f32, 5>;
+  var i : i32;
+  var j : i32;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_46 : f32 = x_6.x_GLF_uniform_float_values[0];
+  arr = array<f32, 5>(x_38, x_40, x_42, x_44, x_46);
+  let x_49 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_49;
+  j = 0;
+  loop {
+    let x_54 : i32 = i;
+    let x_56 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = j;
+    if ((x_59 < -1)) {
+      break;
+    }
+    let x_63 : i32 = j;
+    let x_65 : f32 = arr[x_63];
+    arr[x_63] = (x_65 + 1.0);
+
+    continuing {
+      let x_68 : i32 = i;
+      i = (x_68 + 1);
+      let x_70 : i32 = j;
+      j = (x_70 + 1);
+    }
+  }
+  let x_73 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_75 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_77 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_79 : f32 = x_6.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_73, x_75, x_77, x_79);
+  let x_82 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_82;
+  loop {
+    let x_87 : i32 = i;
+    let x_89 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_87 < x_89)) {
+    } else {
+      break;
+    }
+    let x_92 : i32 = i;
+    let x_94 : f32 = arr[x_92];
+    if (!((x_94 == 2.0))) {
+      let x_99 : f32 = x_6.x_GLF_uniform_float_values[1];
+      x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+    }
+
+    continuing {
+      let x_101 : i32 = i;
+      i = (x_101 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..073d5f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,88 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float arr[5] = (float[5])0;
+  int i = 0;
+  int j = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_38 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_46 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const float tint_symbol_4[5] = {x_38, x_40, x_42, x_44, x_46};
+  arr = tint_symbol_4;
+  const int x_49 = asint(x_9[1].x);
+  i = x_49;
+  j = 0;
+  while (true) {
+    const int x_54 = i;
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_9[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    if ((j < -1)) {
+      break;
+    }
+    const int x_63 = j;
+    const float x_65 = arr[x_63];
+    arr[x_63] = (x_65 + 1.0f);
+    {
+      i = (i + 1);
+      j = (j + 1);
+    }
+  }
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const float x_73 = asfloat(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  const float x_75 = asfloat(x_6[1].x);
+  const float x_77 = asfloat(x_6[1].x);
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const float x_79 = asfloat(x_6[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  x_GLF_color = float4(x_73, x_75, x_77, x_79);
+  const int x_82 = asint(x_9[1].x);
+  i = x_82;
+  while (true) {
+    const int x_87 = i;
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const int x_89 = asint(x_9[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    if ((x_87 < x_89)) {
+    } else {
+      break;
+    }
+    const float x_94 = arr[i];
+    if (!((x_94 == 2.0f))) {
+      const float x_99 = asfloat(x_6[1].x);
+      x_GLF_color = float4(x_99, x_99, x_99, x_99);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ec7cae1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.msl
@@ -0,0 +1,104 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[5];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5) {
+  tint_array_wrapper_2 arr = {};
+  int i = 0;
+  int j = 0;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_46 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_38, x_40, x_42, x_44, x_46}};
+  arr = tint_symbol_3;
+  int const x_49 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_49;
+  j = 0;
+  while (true) {
+    int const x_54 = i;
+    int const x_56 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    int const x_59 = j;
+    if ((x_59 < -1)) {
+      break;
+    }
+    int const x_63 = j;
+    float const x_65 = arr.arr[x_63];
+    arr.arr[x_63] = (x_65 + 1.0f);
+    {
+      int const x_68 = i;
+      i = (x_68 + 1);
+      int const x_70 = j;
+      j = (x_70 + 1);
+    }
+  }
+  float const x_73 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_75 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_77 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_79 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  *(tint_symbol_5) = float4(x_73, x_75, x_77, x_79);
+  int const x_82 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_82;
+  while (true) {
+    int const x_87 = i;
+    int const x_89 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_87 < x_89)) {
+    } else {
+      break;
+    }
+    int const x_92 = i;
+    float const x_94 = arr.arr[x_92];
+    if (!((x_94 == 2.0f))) {
+      float const x_99 = x_6.x_GLF_uniform_float_values.arr[1].el;
+      *(tint_symbol_5) = float4(x_99, x_99, x_99, x_99);
+    }
+    {
+      int const x_101 = i;
+      i = (x_101 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..193f5f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,206 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 125
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %arr "arr"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+%_ptr_Function__arr_float_uint_5 = OpTypePointer Function %_arr_float_uint_5
+         %27 = OpConstantNull %_arr_float_uint_5
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+   %main_out = OpTypeStruct %v4float
+        %113 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+        %arr = OpVariable %_ptr_Function__arr_float_uint_5 Function %27
+          %i = OpVariable %_ptr_Function_int Function %30
+          %j = OpVariable %_ptr_Function_int Function %30
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpCompositeConstruct %_arr_float_uint_5 %36 %38 %40 %42 %44
+               OpStore %arr %45
+         %48 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %49 = OpLoad %int %48
+               OpStore %i %49
+               OpStore %j %int_0
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpSLessThan %bool %54 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %61
+         %60 = OpLabel
+               OpBranch %59
+         %61 = OpLabel
+               OpBranch %51
+         %59 = OpLabel
+         %62 = OpLoad %int %j
+         %64 = OpSLessThan %bool %62 %int_n1
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpBranch %51
+         %65 = OpLabel
+         %67 = OpLoad %int %j
+         %69 = OpAccessChain %_ptr_Function_float %arr %67
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Function_float %arr %67
+         %73 = OpFAdd %float %70 %float_1
+               OpStore %71 %73
+               OpBranch %52
+         %52 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %i %75
+         %76 = OpLoad %int %j
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %j %77
+               OpBranch %50
+         %51 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %83 = OpLoad %float %82
+         %84 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpCompositeConstruct %v4float %79 %81 %83 %85
+               OpStore %x_GLF_color %86
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %88 = OpLoad %int %87
+               OpStore %i %88
+               OpBranch %89
+         %89 = OpLabel
+               OpLoopMerge %90 %91 None
+               OpBranch %92
+         %92 = OpLabel
+         %93 = OpLoad %int %i
+         %94 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpSLessThan %bool %93 %95
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %99
+         %98 = OpLabel
+               OpBranch %97
+         %99 = OpLabel
+               OpBranch %90
+         %97 = OpLabel
+        %100 = OpLoad %int %i
+        %101 = OpAccessChain %_ptr_Function_float %arr %100
+        %102 = OpLoad %float %101
+        %105 = OpFOrdEqual %bool %102 %float_2
+        %103 = OpLogicalNot %bool %105
+               OpSelectionMerge %106 None
+               OpBranchConditional %103 %107 %106
+        %107 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+        %109 = OpLoad %float %108
+        %110 = OpCompositeConstruct %v4float %109 %109 %109 %109
+               OpStore %x_GLF_color %110
+               OpBranch %106
+        %106 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+        %111 = OpLoad %int %i
+        %112 = OpIAdd %int %111 %int_1
+               OpStore %i %112
+               OpBranch %89
+         %90 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %113
+%tint_symbol = OpFunctionParameter %main_out
+        %117 = OpLabel
+        %118 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %118
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %120 = OpLabel
+        %121 = OpFunctionCall %void %main_1
+        %123 = OpLoad %v4float %x_GLF_color
+        %124 = OpCompositeConstruct %main_out %123
+        %122 = OpFunctionCall %void %tint_symbol_2 %124
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..9bd8ed5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,94 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var arr : array<f32, 5>;
+  var i : i32;
+  var j : i32;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_46 : f32 = x_6.x_GLF_uniform_float_values[0];
+  arr = array<f32, 5>(x_38, x_40, x_42, x_44, x_46);
+  let x_49 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_49;
+  j = 0;
+  loop {
+    let x_54 : i32 = i;
+    let x_56 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_54 < x_56)) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = j;
+    if ((x_59 < -1)) {
+      break;
+    }
+    let x_63 : i32 = j;
+    let x_65 : f32 = arr[x_63];
+    arr[x_63] = (x_65 + 1.0);
+
+    continuing {
+      let x_68 : i32 = i;
+      i = (x_68 + 1);
+      let x_70 : i32 = j;
+      j = (x_70 + 1);
+    }
+  }
+  let x_73 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_75 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_77 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_79 : f32 = x_6.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_73, x_75, x_77, x_79);
+  let x_82 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_82;
+  loop {
+    let x_87 : i32 = i;
+    let x_89 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_87 < x_89)) {
+    } else {
+      break;
+    }
+    let x_92 : i32 = i;
+    let x_94 : f32 = arr[x_92];
+    if (!((x_94 == 2.0))) {
+      let x_99 : f32 = x_6.x_GLF_uniform_float_values[1];
+      x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+    }
+
+    continuing {
+      let x_101 : i32 = i;
+      i = (x_101 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm
new file mode 100644
index 0000000..d31c1e4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm
@@ -0,0 +1,223 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %data "data"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %i_0 "i"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_6 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_6 = OpConstant %uint 6
+%_arr_int_uint_6 = OpTypeArray %int %uint_6
+       %buf1 = OpTypeStruct %_arr_int_uint_6
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+%_ptr_Function__arr_int_uint_5 = OpTypePointer Function %_arr_int_uint_5
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+%_ptr_Function_int = OpTypePointer Function %int
+       %bool = OpTypeBool
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %main = OpFunction %void None %17
+         %43 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_int_uint_5 Function
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %51
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpCompositeConstruct %v4float %46 %49 %52 %55
+               OpStore %_GLF_color %56
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpCompositeConstruct %_arr_int_uint_5 %58 %60 %62 %64 %66
+               OpStore %data %67
+         %68 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %69 = OpLoad %int %68
+               OpStore %a %69
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %a
+         %75 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpSLessThan %bool %74 %76
+               OpBranchConditional %77 %78 %71
+         %78 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %80 = OpLoad %int %79
+               OpStore %i %80
+               OpBranch %81
+         %81 = OpLabel
+               OpLoopMerge %82 %83 None
+               OpBranch %84
+         %84 = OpLabel
+         %85 = OpLoad %int %i
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpSLessThan %bool %85 %87
+               OpBranchConditional %88 %89 %82
+         %89 = OpLabel
+         %90 = OpLoad %int %i
+               OpStore %j %90
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %j
+         %96 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpSLessThan %bool %95 %97
+               OpBranchConditional %98 %99 %92
+         %99 = OpLabel
+        %100 = OpLoad %int %i
+        %101 = OpAccessChain %_ptr_Function_int %data %100
+        %102 = OpLoad %int %101
+        %103 = OpLoad %int %j
+        %104 = OpAccessChain %_ptr_Function_int %data %103
+        %105 = OpLoad %int %104
+        %106 = OpSLessThan %bool %102 %105
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %110
+        %112 = OpCompositeConstruct %v4float %111 %111 %111 %111
+               OpStore %_GLF_color %112
+               OpBranch %107
+        %107 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+        %113 = OpLoad %int %j
+        %114 = OpIAdd %int %113 %int_1
+               OpStore %j %114
+               OpBranch %91
+         %92 = OpLabel
+               OpBranch %83
+         %83 = OpLabel
+        %115 = OpLoad %int %i
+        %116 = OpIAdd %int %115 %int_1
+               OpStore %i %116
+               OpBranch %81
+         %82 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+        %117 = OpLoad %int %a
+        %118 = OpIAdd %int %117 %int_1
+               OpStore %a %118
+               OpBranch %70
+         %71 = OpLabel
+               OpBranch %119
+        %119 = OpLabel
+               OpLoopMerge %120 %121 None
+               OpBranch %122
+        %122 = OpLabel
+        %123 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+        %126 = OpLoad %float %125
+        %127 = OpFOrdLessThan %bool %124 %126
+               OpBranchConditional %127 %128 %120
+        %128 = OpLabel
+        %129 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+        %130 = OpLoad %int %129
+               OpStore %i_0 %130
+               OpBranch %131
+        %131 = OpLabel
+               OpLoopMerge %132 %133 None
+               OpBranch %134
+        %134 = OpLabel
+        %135 = OpLoad %int %i_0
+        %136 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %137 = OpLoad %int %136
+        %138 = OpSLessThan %bool %135 %137
+               OpBranchConditional %138 %139 %132
+        %139 = OpLabel
+        %140 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+        %141 = OpLoad %int %140
+        %142 = OpConvertSToF %float %141
+        %143 = OpCompositeConstruct %v4float %142 %142 %142 %142
+               OpStore %_GLF_color %143
+               OpBranch %133
+        %133 = OpLabel
+        %144 = OpLoad %int %i_0
+        %145 = OpIAdd %int %144 %int_1
+               OpStore %i_0 %145
+               OpBranch %131
+        %132 = OpLabel
+               OpBranch %121
+        %121 = OpLabel
+               OpBranch %119
+        %120 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e91ca1c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,123 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[6];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[1];
+};
+
+void main_1() {
+  int data[5] = (int[5])0;
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_48 = asint(x_6[5].x);
+  const int x_51 = asint(x_6[5].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_54 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  const int x_58 = asint(x_6[1].x);
+  const int x_60 = asint(x_6[2].x);
+  const int x_62 = asint(x_6[3].x);
+  const int x_64 = asint(x_6[4].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_66 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int tint_symbol_6[5] = {x_58, x_60, x_62, x_64, x_66};
+  data = tint_symbol_6;
+  const int x_69 = asint(x_6[5].x);
+  a = x_69;
+  while (true) {
+    const int x_74 = a;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_76 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    if ((x_74 < x_76)) {
+    } else {
+      break;
+    }
+    const int x_80 = asint(x_6[5].x);
+    i = x_80;
+    while (true) {
+      const int x_85 = i;
+      const int x_87 = asint(x_6[1].x);
+      if ((x_85 < x_87)) {
+      } else {
+        break;
+      }
+      j = i;
+      while (true) {
+        const int x_95 = j;
+        const int x_97 = asint(x_6[1].x);
+        if ((x_95 < x_97)) {
+        } else {
+          break;
+        }
+        const int x_102 = data[i];
+        const int x_105 = data[j];
+        if ((x_102 < x_105)) {
+          const int x_110 = asint(x_6[5].x);
+          const float x_111 = float(x_110);
+          x_GLF_color = float4(x_111, x_111, x_111, x_111);
+        }
+        {
+          j = (j + 1);
+        }
+      }
+      {
+        i = (i + 1);
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  while (true) {
+    const float x_124 = gl_FragCoord.x;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_126 = asfloat(x_12[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    if ((x_124 < x_126)) {
+    } else {
+      break;
+    }
+    const int x_130 = asint(x_6[5].x);
+    i_1 = x_130;
+    while (true) {
+      const int x_135 = i_1;
+      const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+      const int x_137 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+      if ((x_135 < x_137)) {
+      } else {
+        break;
+      }
+      const int x_141 = asint(x_6[5].x);
+      const float x_142 = float(x_141);
+      x_GLF_color = float4(x_142, x_142, x_142, x_142);
+      {
+        i_1 = (i_1 + 1);
+      }
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e35af4f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.msl
@@ -0,0 +1,140 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[6];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[5];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_12, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper_2 data = {};
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_54 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_6) = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_60 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_64 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_4 = {.arr={x_58, x_60, x_62, x_64, x_66}};
+  data = tint_symbol_4;
+  int const x_69 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  a = x_69;
+  while (true) {
+    int const x_74 = a;
+    int const x_76 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_74 < x_76)) {
+    } else {
+      break;
+    }
+    int const x_80 = x_6.x_GLF_uniform_int_values.arr[5].el;
+    i = x_80;
+    while (true) {
+      int const x_85 = i;
+      int const x_87 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      if ((x_85 < x_87)) {
+      } else {
+        break;
+      }
+      int const x_90 = i;
+      j = x_90;
+      while (true) {
+        int const x_95 = j;
+        int const x_97 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        if ((x_95 < x_97)) {
+        } else {
+          break;
+        }
+        int const x_100 = i;
+        int const x_102 = data.arr[x_100];
+        int const x_103 = j;
+        int const x_105 = data.arr[x_103];
+        if ((x_102 < x_105)) {
+          int const x_110 = x_6.x_GLF_uniform_int_values.arr[5].el;
+          float const x_111 = float(x_110);
+          *(tint_symbol_6) = float4(x_111, x_111, x_111, x_111);
+        }
+        {
+          int const x_113 = j;
+          j = (x_113 + 1);
+        }
+      }
+      {
+        int const x_115 = i;
+        i = (x_115 + 1);
+      }
+    }
+    {
+      int const x_117 = a;
+      a = (x_117 + 1);
+    }
+  }
+  while (true) {
+    float const x_124 = (*(tint_symbol_7)).x;
+    float const x_126 = x_12.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_124 < x_126)) {
+    } else {
+      break;
+    }
+    int const x_130 = x_6.x_GLF_uniform_int_values.arr[5].el;
+    i_1 = x_130;
+    while (true) {
+      int const x_135 = i_1;
+      int const x_137 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_135 < x_137)) {
+      } else {
+        break;
+      }
+      int const x_141 = x_6.x_GLF_uniform_int_values.arr[5].el;
+      float const x_142 = float(x_141);
+      *(tint_symbol_6) = float4(x_142, x_142, x_142, x_142);
+      {
+        int const x_144 = i_1;
+        i_1 = (x_144 + 1);
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_6 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, x_12, &(tint_symbol_9), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8577b92
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,287 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 174
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_12 "x_12"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_6 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_6 = OpConstant %uint 6
+%_arr_int_uint_6 = OpTypeArray %int %uint_6
+       %buf1 = OpTypeStruct %_arr_int_uint_6
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+%_ptr_Function__arr_int_uint_5 = OpTypePointer Function %_arr_int_uint_5
+         %31 = OpConstantNull %_arr_int_uint_5
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+        %161 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_int_uint_5 Function %31
+          %a = OpVariable %_ptr_Function_int Function %34
+          %i = OpVariable %_ptr_Function_int Function %34
+          %j = OpVariable %_ptr_Function_int Function %34
+        %i_1 = OpVariable %_ptr_Function_int Function %34
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %42 = OpLoad %int %41
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %42
+         %51 = OpConvertSToF %float %45
+         %52 = OpConvertSToF %float %47
+         %53 = OpConvertSToF %float %49
+         %54 = OpCompositeConstruct %v4float %50 %51 %52 %53
+               OpStore %x_GLF_color %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %63 = OpLoad %int %62
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpCompositeConstruct %_arr_int_uint_5 %57 %60 %63 %66 %68
+               OpStore %data %69
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %71 = OpLoad %int %70
+               OpStore %a %71
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %int %a
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpSLessThan %bool %76 %78
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %73
+         %81 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %85 = OpLoad %int %84
+               OpStore %i %85
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %90 = OpLoad %int %i
+         %91 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpSLessThan %bool %90 %92
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %96
+         %95 = OpLabel
+               OpBranch %94
+         %96 = OpLabel
+               OpBranch %87
+         %94 = OpLabel
+         %97 = OpLoad %int %i
+               OpStore %j %97
+               OpBranch %98
+         %98 = OpLabel
+               OpLoopMerge %99 %100 None
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpLoad %int %j
+        %103 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %104 = OpLoad %int %103
+        %105 = OpSLessThan %bool %102 %104
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %107 = OpLabel
+               OpBranch %106
+        %108 = OpLabel
+               OpBranch %99
+        %106 = OpLabel
+        %109 = OpLoad %int %i
+        %110 = OpAccessChain %_ptr_Function_int %data %109
+        %111 = OpLoad %int %110
+        %112 = OpLoad %int %j
+        %113 = OpAccessChain %_ptr_Function_int %data %112
+        %114 = OpLoad %int %113
+        %115 = OpSLessThan %bool %111 %114
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %119
+        %121 = OpCompositeConstruct %v4float %120 %120 %120 %120
+               OpStore %x_GLF_color %121
+               OpBranch %116
+        %116 = OpLabel
+               OpBranch %100
+        %100 = OpLabel
+        %122 = OpLoad %int %j
+        %123 = OpIAdd %int %122 %int_1
+               OpStore %j %123
+               OpBranch %98
+         %99 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+        %124 = OpLoad %int %i
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %i %125
+               OpBranch %86
+         %87 = OpLabel
+               OpBranch %74
+         %74 = OpLabel
+        %126 = OpLoad %int %a
+        %127 = OpIAdd %int %126 %int_1
+               OpStore %a %127
+               OpBranch %72
+         %73 = OpLabel
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %133 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %134 = OpLoad %float %133
+        %136 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+        %137 = OpLoad %float %136
+        %138 = OpFOrdLessThan %bool %134 %137
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %129
+        %139 = OpLabel
+        %142 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %143 = OpLoad %int %142
+               OpStore %i_1 %143
+               OpBranch %144
+        %144 = OpLabel
+               OpLoopMerge %145 %146 None
+               OpBranch %147
+        %147 = OpLabel
+        %148 = OpLoad %int %i_1
+        %149 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %150 = OpLoad %int %149
+        %151 = OpSLessThan %bool %148 %150
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %154
+        %153 = OpLabel
+               OpBranch %152
+        %154 = OpLabel
+               OpBranch %145
+        %152 = OpLabel
+        %155 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %156 = OpLoad %int %155
+        %157 = OpConvertSToF %float %156
+        %158 = OpCompositeConstruct %v4float %157 %157 %157 %157
+               OpStore %x_GLF_color %158
+               OpBranch %146
+        %146 = OpLabel
+        %159 = OpLoad %int %i_1
+        %160 = OpIAdd %int %159 %int_1
+               OpStore %i_1 %160
+               OpBranch %144
+        %145 = OpLabel
+               OpBranch %130
+        %130 = OpLabel
+               OpBranch %128
+        %129 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %161
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %165 = OpLabel
+        %166 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %166
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %168 = OpLabel
+        %169 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %169
+        %170 = OpFunctionCall %void %main_1
+        %172 = OpLoad %v4float %x_GLF_color
+        %173 = OpCompositeConstruct %main_out %172
+        %171 = OpFunctionCall %void %tint_symbol_3 %173
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b603ec3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,133 @@
+type Arr = [[stride(16)]] array<i32, 6>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+fn main_1() {
+  var data : array<i32, 5>;
+  var a : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_60 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_64 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[0];
+  data = array<i32, 5>(x_58, x_60, x_62, x_64, x_66);
+  let x_69 : i32 = x_6.x_GLF_uniform_int_values[5];
+  a = x_69;
+  loop {
+    let x_74 : i32 = a;
+    let x_76 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_74 < x_76)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[5];
+    i = x_80;
+    loop {
+      let x_85 : i32 = i;
+      let x_87 : i32 = x_6.x_GLF_uniform_int_values[1];
+      if ((x_85 < x_87)) {
+      } else {
+        break;
+      }
+      let x_90 : i32 = i;
+      j = x_90;
+      loop {
+        let x_95 : i32 = j;
+        let x_97 : i32 = x_6.x_GLF_uniform_int_values[1];
+        if ((x_95 < x_97)) {
+        } else {
+          break;
+        }
+        let x_100 : i32 = i;
+        let x_102 : i32 = data[x_100];
+        let x_103 : i32 = j;
+        let x_105 : i32 = data[x_103];
+        if ((x_102 < x_105)) {
+          let x_110 : i32 = x_6.x_GLF_uniform_int_values[5];
+          let x_111 : f32 = f32(x_110);
+          x_GLF_color = vec4<f32>(x_111, x_111, x_111, x_111);
+        }
+
+        continuing {
+          let x_113 : i32 = j;
+          j = (x_113 + 1);
+        }
+      }
+
+      continuing {
+        let x_115 : i32 = i;
+        i = (x_115 + 1);
+      }
+    }
+
+    continuing {
+      let x_117 : i32 = a;
+      a = (x_117 + 1);
+    }
+  }
+  loop {
+    let x_124 : f32 = gl_FragCoord.x;
+    let x_126 : f32 = x_12.x_GLF_uniform_float_values[0];
+    if ((x_124 < x_126)) {
+    } else {
+      break;
+    }
+    let x_130 : i32 = x_6.x_GLF_uniform_int_values[5];
+    i_1 = x_130;
+    loop {
+      let x_135 : i32 = i_1;
+      let x_137 : i32 = x_6.x_GLF_uniform_int_values[0];
+      if ((x_135 < x_137)) {
+      } else {
+        break;
+      }
+      let x_141 : i32 = x_6.x_GLF_uniform_int_values[5];
+      let x_142 : f32 = f32(x_141);
+      x_GLF_color = vec4<f32>(x_142, x_142, x_142, x_142);
+
+      continuing {
+        let x_144 : i32 = i_1;
+        i_1 = (x_144 + 1);
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
new file mode 100644
index 0000000..b603ec3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
@@ -0,0 +1,133 @@
+type Arr = [[stride(16)]] array<i32, 6>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+fn main_1() {
+  var data : array<i32, 5>;
+  var a : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_60 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_64 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[0];
+  data = array<i32, 5>(x_58, x_60, x_62, x_64, x_66);
+  let x_69 : i32 = x_6.x_GLF_uniform_int_values[5];
+  a = x_69;
+  loop {
+    let x_74 : i32 = a;
+    let x_76 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_74 < x_76)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[5];
+    i = x_80;
+    loop {
+      let x_85 : i32 = i;
+      let x_87 : i32 = x_6.x_GLF_uniform_int_values[1];
+      if ((x_85 < x_87)) {
+      } else {
+        break;
+      }
+      let x_90 : i32 = i;
+      j = x_90;
+      loop {
+        let x_95 : i32 = j;
+        let x_97 : i32 = x_6.x_GLF_uniform_int_values[1];
+        if ((x_95 < x_97)) {
+        } else {
+          break;
+        }
+        let x_100 : i32 = i;
+        let x_102 : i32 = data[x_100];
+        let x_103 : i32 = j;
+        let x_105 : i32 = data[x_103];
+        if ((x_102 < x_105)) {
+          let x_110 : i32 = x_6.x_GLF_uniform_int_values[5];
+          let x_111 : f32 = f32(x_110);
+          x_GLF_color = vec4<f32>(x_111, x_111, x_111, x_111);
+        }
+
+        continuing {
+          let x_113 : i32 = j;
+          j = (x_113 + 1);
+        }
+      }
+
+      continuing {
+        let x_115 : i32 = i;
+        i = (x_115 + 1);
+      }
+    }
+
+    continuing {
+      let x_117 : i32 = a;
+      a = (x_117 + 1);
+    }
+  }
+  loop {
+    let x_124 : f32 = gl_FragCoord.x;
+    let x_126 : f32 = x_12.x_GLF_uniform_float_values[0];
+    if ((x_124 < x_126)) {
+    } else {
+      break;
+    }
+    let x_130 : i32 = x_6.x_GLF_uniform_int_values[5];
+    i_1 = x_130;
+    loop {
+      let x_135 : i32 = i_1;
+      let x_137 : i32 = x_6.x_GLF_uniform_int_values[0];
+      if ((x_135 < x_137)) {
+      } else {
+        break;
+      }
+      let x_141 : i32 = x_6.x_GLF_uniform_int_values[5];
+      let x_142 : f32 = f32(x_141);
+      x_GLF_color = vec4<f32>(x_142, x_142, x_142, x_142);
+
+      continuing {
+        let x_144 : i32 = i_1;
+        i_1 = (x_144 + 1);
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e91ca1c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,123 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[6];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[1];
+};
+
+void main_1() {
+  int data[5] = (int[5])0;
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_48 = asint(x_6[5].x);
+  const int x_51 = asint(x_6[5].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_54 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  const int x_58 = asint(x_6[1].x);
+  const int x_60 = asint(x_6[2].x);
+  const int x_62 = asint(x_6[3].x);
+  const int x_64 = asint(x_6[4].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_66 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int tint_symbol_6[5] = {x_58, x_60, x_62, x_64, x_66};
+  data = tint_symbol_6;
+  const int x_69 = asint(x_6[5].x);
+  a = x_69;
+  while (true) {
+    const int x_74 = a;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_76 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    if ((x_74 < x_76)) {
+    } else {
+      break;
+    }
+    const int x_80 = asint(x_6[5].x);
+    i = x_80;
+    while (true) {
+      const int x_85 = i;
+      const int x_87 = asint(x_6[1].x);
+      if ((x_85 < x_87)) {
+      } else {
+        break;
+      }
+      j = i;
+      while (true) {
+        const int x_95 = j;
+        const int x_97 = asint(x_6[1].x);
+        if ((x_95 < x_97)) {
+        } else {
+          break;
+        }
+        const int x_102 = data[i];
+        const int x_105 = data[j];
+        if ((x_102 < x_105)) {
+          const int x_110 = asint(x_6[5].x);
+          const float x_111 = float(x_110);
+          x_GLF_color = float4(x_111, x_111, x_111, x_111);
+        }
+        {
+          j = (j + 1);
+        }
+      }
+      {
+        i = (i + 1);
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  while (true) {
+    const float x_124 = gl_FragCoord.x;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_126 = asfloat(x_12[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    if ((x_124 < x_126)) {
+    } else {
+      break;
+    }
+    const int x_130 = asint(x_6[5].x);
+    i_1 = x_130;
+    while (true) {
+      const int x_135 = i_1;
+      const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+      const int x_137 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+      if ((x_135 < x_137)) {
+      } else {
+        break;
+      }
+      const int x_141 = asint(x_6[5].x);
+      const float x_142 = float(x_141);
+      x_GLF_color = float4(x_142, x_142, x_142, x_142);
+      {
+        i_1 = (i_1 + 1);
+      }
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e35af4f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.msl
@@ -0,0 +1,140 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[6];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  int arr[5];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_12, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper_2 data = {};
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_54 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_6) = float4(float(x_45), float(x_48), float(x_51), float(x_54));
+  int const x_58 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_60 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_64 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  tint_array_wrapper_2 const tint_symbol_4 = {.arr={x_58, x_60, x_62, x_64, x_66}};
+  data = tint_symbol_4;
+  int const x_69 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  a = x_69;
+  while (true) {
+    int const x_74 = a;
+    int const x_76 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_74 < x_76)) {
+    } else {
+      break;
+    }
+    int const x_80 = x_6.x_GLF_uniform_int_values.arr[5].el;
+    i = x_80;
+    while (true) {
+      int const x_85 = i;
+      int const x_87 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      if ((x_85 < x_87)) {
+      } else {
+        break;
+      }
+      int const x_90 = i;
+      j = x_90;
+      while (true) {
+        int const x_95 = j;
+        int const x_97 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        if ((x_95 < x_97)) {
+        } else {
+          break;
+        }
+        int const x_100 = i;
+        int const x_102 = data.arr[x_100];
+        int const x_103 = j;
+        int const x_105 = data.arr[x_103];
+        if ((x_102 < x_105)) {
+          int const x_110 = x_6.x_GLF_uniform_int_values.arr[5].el;
+          float const x_111 = float(x_110);
+          *(tint_symbol_6) = float4(x_111, x_111, x_111, x_111);
+        }
+        {
+          int const x_113 = j;
+          j = (x_113 + 1);
+        }
+      }
+      {
+        int const x_115 = i;
+        i = (x_115 + 1);
+      }
+    }
+    {
+      int const x_117 = a;
+      a = (x_117 + 1);
+    }
+  }
+  while (true) {
+    float const x_124 = (*(tint_symbol_7)).x;
+    float const x_126 = x_12.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_124 < x_126)) {
+    } else {
+      break;
+    }
+    int const x_130 = x_6.x_GLF_uniform_int_values.arr[5].el;
+    i_1 = x_130;
+    while (true) {
+      int const x_135 = i_1;
+      int const x_137 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_135 < x_137)) {
+      } else {
+        break;
+      }
+      int const x_141 = x_6.x_GLF_uniform_int_values.arr[5].el;
+      float const x_142 = float(x_141);
+      *(tint_symbol_6) = float4(x_142, x_142, x_142, x_142);
+      {
+        int const x_144 = i_1;
+        i_1 = (x_144 + 1);
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_6 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, x_12, &(tint_symbol_9), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8577b92
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,287 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 174
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_12 "x_12"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_6 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_6 = OpConstant %uint 6
+%_arr_int_uint_6 = OpTypeArray %int %uint_6
+       %buf1 = OpTypeStruct %_arr_int_uint_6
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+%_ptr_Function__arr_int_uint_5 = OpTypePointer Function %_arr_int_uint_5
+         %31 = OpConstantNull %_arr_int_uint_5
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+        %161 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_int_uint_5 Function %31
+          %a = OpVariable %_ptr_Function_int Function %34
+          %i = OpVariable %_ptr_Function_int Function %34
+          %j = OpVariable %_ptr_Function_int Function %34
+        %i_1 = OpVariable %_ptr_Function_int Function %34
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %42 = OpLoad %int %41
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %42
+         %51 = OpConvertSToF %float %45
+         %52 = OpConvertSToF %float %47
+         %53 = OpConvertSToF %float %49
+         %54 = OpCompositeConstruct %v4float %50 %51 %52 %53
+               OpStore %x_GLF_color %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %63 = OpLoad %int %62
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpCompositeConstruct %_arr_int_uint_5 %57 %60 %63 %66 %68
+               OpStore %data %69
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %71 = OpLoad %int %70
+               OpStore %a %71
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %int %a
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpSLessThan %bool %76 %78
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %73
+         %81 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %85 = OpLoad %int %84
+               OpStore %i %85
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %90 = OpLoad %int %i
+         %91 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpSLessThan %bool %90 %92
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %96
+         %95 = OpLabel
+               OpBranch %94
+         %96 = OpLabel
+               OpBranch %87
+         %94 = OpLabel
+         %97 = OpLoad %int %i
+               OpStore %j %97
+               OpBranch %98
+         %98 = OpLabel
+               OpLoopMerge %99 %100 None
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpLoad %int %j
+        %103 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %104 = OpLoad %int %103
+        %105 = OpSLessThan %bool %102 %104
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %107 = OpLabel
+               OpBranch %106
+        %108 = OpLabel
+               OpBranch %99
+        %106 = OpLabel
+        %109 = OpLoad %int %i
+        %110 = OpAccessChain %_ptr_Function_int %data %109
+        %111 = OpLoad %int %110
+        %112 = OpLoad %int %j
+        %113 = OpAccessChain %_ptr_Function_int %data %112
+        %114 = OpLoad %int %113
+        %115 = OpSLessThan %bool %111 %114
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %119 = OpLoad %int %118
+        %120 = OpConvertSToF %float %119
+        %121 = OpCompositeConstruct %v4float %120 %120 %120 %120
+               OpStore %x_GLF_color %121
+               OpBranch %116
+        %116 = OpLabel
+               OpBranch %100
+        %100 = OpLabel
+        %122 = OpLoad %int %j
+        %123 = OpIAdd %int %122 %int_1
+               OpStore %j %123
+               OpBranch %98
+         %99 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+        %124 = OpLoad %int %i
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %i %125
+               OpBranch %86
+         %87 = OpLabel
+               OpBranch %74
+         %74 = OpLabel
+        %126 = OpLoad %int %a
+        %127 = OpIAdd %int %126 %int_1
+               OpStore %a %127
+               OpBranch %72
+         %73 = OpLabel
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %133 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %134 = OpLoad %float %133
+        %136 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+        %137 = OpLoad %float %136
+        %138 = OpFOrdLessThan %bool %134 %137
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %129
+        %139 = OpLabel
+        %142 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %143 = OpLoad %int %142
+               OpStore %i_1 %143
+               OpBranch %144
+        %144 = OpLabel
+               OpLoopMerge %145 %146 None
+               OpBranch %147
+        %147 = OpLabel
+        %148 = OpLoad %int %i_1
+        %149 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %150 = OpLoad %int %149
+        %151 = OpSLessThan %bool %148 %150
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %154
+        %153 = OpLabel
+               OpBranch %152
+        %154 = OpLabel
+               OpBranch %145
+        %152 = OpLabel
+        %155 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %156 = OpLoad %int %155
+        %157 = OpConvertSToF %float %156
+        %158 = OpCompositeConstruct %v4float %157 %157 %157 %157
+               OpStore %x_GLF_color %158
+               OpBranch %146
+        %146 = OpLabel
+        %159 = OpLoad %int %i_1
+        %160 = OpIAdd %int %159 %int_1
+               OpStore %i_1 %160
+               OpBranch %144
+        %145 = OpLabel
+               OpBranch %130
+        %130 = OpLabel
+               OpBranch %128
+        %129 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %161
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %165 = OpLabel
+        %166 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %166
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %168 = OpLabel
+        %169 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %169
+        %170 = OpFunctionCall %void %main_1
+        %172 = OpLoad %v4float %x_GLF_color
+        %173 = OpCompositeConstruct %main_out %172
+        %171 = OpFunctionCall %void %tint_symbol_3 %173
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b603ec3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,133 @@
+type Arr = [[stride(16)]] array<i32, 6>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+fn main_1() {
+  var data : array<i32, 5>;
+  var a : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_54 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_45), f32(x_48), f32(x_51), f32(x_54));
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_60 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_64 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[0];
+  data = array<i32, 5>(x_58, x_60, x_62, x_64, x_66);
+  let x_69 : i32 = x_6.x_GLF_uniform_int_values[5];
+  a = x_69;
+  loop {
+    let x_74 : i32 = a;
+    let x_76 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_74 < x_76)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[5];
+    i = x_80;
+    loop {
+      let x_85 : i32 = i;
+      let x_87 : i32 = x_6.x_GLF_uniform_int_values[1];
+      if ((x_85 < x_87)) {
+      } else {
+        break;
+      }
+      let x_90 : i32 = i;
+      j = x_90;
+      loop {
+        let x_95 : i32 = j;
+        let x_97 : i32 = x_6.x_GLF_uniform_int_values[1];
+        if ((x_95 < x_97)) {
+        } else {
+          break;
+        }
+        let x_100 : i32 = i;
+        let x_102 : i32 = data[x_100];
+        let x_103 : i32 = j;
+        let x_105 : i32 = data[x_103];
+        if ((x_102 < x_105)) {
+          let x_110 : i32 = x_6.x_GLF_uniform_int_values[5];
+          let x_111 : f32 = f32(x_110);
+          x_GLF_color = vec4<f32>(x_111, x_111, x_111, x_111);
+        }
+
+        continuing {
+          let x_113 : i32 = j;
+          j = (x_113 + 1);
+        }
+      }
+
+      continuing {
+        let x_115 : i32 = i;
+        i = (x_115 + 1);
+      }
+    }
+
+    continuing {
+      let x_117 : i32 = a;
+      a = (x_117 + 1);
+    }
+  }
+  loop {
+    let x_124 : f32 = gl_FragCoord.x;
+    let x_126 : f32 = x_12.x_GLF_uniform_float_values[0];
+    if ((x_124 < x_126)) {
+    } else {
+      break;
+    }
+    let x_130 : i32 = x_6.x_GLF_uniform_int_values[5];
+    i_1 = x_130;
+    loop {
+      let x_135 : i32 = i_1;
+      let x_137 : i32 = x_6.x_GLF_uniform_int_values[0];
+      if ((x_135 < x_137)) {
+      } else {
+        break;
+      }
+      let x_141 : i32 = x_6.x_GLF_uniform_int_values[5];
+      let x_142 : f32 = f32(x_141);
+      x_GLF_color = vec4<f32>(x_142, x_142, x_142, x_142);
+
+      continuing {
+        let x_144 : i32 = i_1;
+        i_1 = (x_144 + 1);
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm
new file mode 100644
index 0000000..1632f14
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm
@@ -0,0 +1,182 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_v1
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %uv "uv"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %v1 "v1"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_v1 "_GLF_v1"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %_GLF_v1 Location 0
+               OpDecorate %20 RelaxedPrecision
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+     %uint_0 = OpConstant %uint 0
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+%_ptr_Function_int = OpTypePointer Function %int
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+    %_GLF_v1 = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %22
+         %48 = OpLabel
+         %uv = OpVariable %_ptr_Function_v2float Function
+         %v1 = OpVariable %_ptr_Function_v4float Function
+          %a = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+         %49 = OpLoad %v4float %gl_FragCoord
+         %50 = OpVectorShuffle %v2float %49 %49 0 1
+               OpStore %uv %50
+         %51 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %52 = OpLoad %float %51
+         %53 = OpCompositeConstruct %v4float %52 %52 %52 %52
+               OpStore %v1 %53
+         %54 = OpAccessChain %_ptr_Function_float %uv %uint_1
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpFOrdGreaterThanEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+               OpStore %63 %62
+         %64 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+               OpStore %66 %65
+         %67 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Function_float %v1 %uint_2
+               OpStore %69 %68
+         %70 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Function_float %v1 %uint_3
+               OpStore %72 %71
+               OpBranch %59
+         %59 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %74 = OpLoad %float %73
+               OpStore %a %74
+         %75 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %15 = OpLoad %int %75
+               OpStore %i %15
+               OpBranch %76
+         %76 = OpLabel
+               OpLoopMerge %77 %78 None
+               OpBranch %79
+         %79 = OpLabel
+         %16 = OpLoad %int %i
+         %80 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %17 = OpLoad %int %80
+         %81 = OpSLessThan %bool %16 %17
+               OpBranchConditional %81 %82 %77
+         %82 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %86 = OpLoad %float %85
+         %87 = OpFOrdLessThan %bool %84 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpKill
+         %88 = OpLabel
+         %90 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %93 = OpLoad %float %92
+         %94 = OpFAdd %float %91 %93
+         %95 = OpAccessChain %_ptr_Function_float %v1 %uint_2
+         %96 = OpLoad %float %95
+         %97 = OpFAdd %float %94 %96
+         %98 = OpAccessChain %_ptr_Function_float %v1 %uint_3
+         %99 = OpLoad %float %98
+        %100 = OpFAdd %float %97 %99
+        %101 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+        %102 = OpLoad %float %101
+        %103 = OpExtInst %float %1 Pow %100 %102
+               OpStore %a %103
+               OpBranch %78
+         %78 = OpLabel
+         %18 = OpLoad %int %i
+         %19 = OpIAdd %int %18 %int_1
+               OpStore %i %19
+               OpBranch %76
+         %77 = OpLabel
+        %104 = OpLoad %float %a
+        %105 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %106 = OpLoad %float %105
+        %107 = OpFOrdEqual %bool %104 %106
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %110
+        %109 = OpLabel
+        %111 = OpLoad %v4float %v1
+               OpStore %_GLF_v1 %111
+               OpBranch %108
+        %110 = OpLabel
+        %112 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %20 = OpLoad %int %112
+        %113 = OpConvertSToF %float %20
+        %114 = OpCompositeConstruct %v4float %113 %113 %113 %113
+               OpStore %_GLF_v1 %114
+               OpBranch %108
+        %108 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..790ef73
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,92 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[4];
+};
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[2];
+};
+static float4 x_GLF_v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 uv = float2(0.0f, 0.0f);
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float a = 0.0f;
+  int i = 0;
+  const float4 x_49 = gl_FragCoord;
+  uv = float2(x_49.x, x_49.y);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_52 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float4(x_52, x_52, x_52, x_52);
+  const float x_55 = uv.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_57 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_55 >= x_57)) {
+    const float x_62 = asfloat(x_8[2].x);
+    v1.x = x_62;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_65 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    v1.y = x_65;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    v1.z = x_68;
+    const float x_71 = asfloat(x_8[2].x);
+    v1.w = x_71;
+  }
+  const float x_74 = asfloat(x_8[2].x);
+  a = x_74;
+  const int x_15 = asint(x_12[1].x);
+  i = x_15;
+  while (true) {
+    const int x_16 = i;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_17 = asint(x_12[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    if ((x_16 < x_17)) {
+    } else {
+      break;
+    }
+    const float x_84 = asfloat(x_8[2].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_86 = asfloat(x_8[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    if ((x_84 < x_86)) {
+      discard;
+    }
+    const float x_91 = v1.x;
+    const float x_93 = v1.y;
+    const float x_96 = v1.z;
+    const float x_99 = v1.w;
+    const float x_102 = asfloat(x_8[3].x);
+    a = pow((((x_91 + x_93) + x_96) + x_99), x_102);
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_104 = a;
+  const float x_106 = asfloat(x_8[1].x);
+  if ((x_104 == x_106)) {
+    x_GLF_v1 = v1;
+  } else {
+    const int x_20 = asint(x_12[1].x);
+    const float x_113 = float(x_20);
+    x_GLF_v1 = float4(x_113, x_113, x_113, x_113);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_v1_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_v1_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_v1};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_v1_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..efced0c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_v1_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_v1_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_8, constant buf0& x_12, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 uv = 0.0f;
+  float4 v1 = 0.0f;
+  float a = 0.0f;
+  int i = 0;
+  float4 const x_49 = *(tint_symbol_5);
+  uv = float2(x_49.x, x_49.y);
+  float const x_52 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float4(x_52, x_52, x_52, x_52);
+  float const x_55 = uv.y;
+  float const x_57 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_55 >= x_57)) {
+    float const x_62 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    v1.x = x_62;
+    float const x_65 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    v1.y = x_65;
+    float const x_68 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    v1.z = x_68;
+    float const x_71 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    v1.w = x_71;
+  }
+  float const x_74 = x_8.x_GLF_uniform_float_values.arr[2].el;
+  a = x_74;
+  int const x_15 = x_12.x_GLF_uniform_int_values.arr[1].el;
+  i = x_15;
+  while (true) {
+    int const x_16 = i;
+    int const x_17 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_16 < x_17)) {
+    } else {
+      break;
+    }
+    float const x_84 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    float const x_86 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_84 < x_86)) {
+      discard_fragment();
+    }
+    float const x_91 = v1.x;
+    float const x_93 = v1.y;
+    float const x_96 = v1.z;
+    float const x_99 = v1.w;
+    float const x_102 = x_8.x_GLF_uniform_float_values.arr[3].el;
+    a = pow((((x_91 + x_93) + x_96) + x_99), x_102);
+    {
+      int const x_18 = i;
+      i = (x_18 + 1);
+    }
+  }
+  float const x_104 = a;
+  float const x_106 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_104 == x_106)) {
+    float4 const x_111 = v1;
+    *(tint_symbol_6) = x_111;
+  } else {
+    int const x_20 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    float const x_113 = float(x_20);
+    *(tint_symbol_6) = float4(x_113, x_113, x_113, x_113);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_12, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_v1_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_v1_1=tint_symbol_3.x_GLF_v1_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..fd1fbff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,221 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 139
+; Schema: 0
+               OpCapability Shader
+        %108 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %x_GLF_v1 "x_GLF_v1"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %uv "uv"
+               OpName %v1 "v1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_v1_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+   %x_GLF_v1 = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %30 = OpConstantNull %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %35 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %38 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+     %uint_3 = OpConstant %uint 3
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %126 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+         %uv = OpVariable %_ptr_Function_v2float Function %30
+         %v1 = OpVariable %_ptr_Function_v4float Function %5
+          %a = OpVariable %_ptr_Function_float Function %35
+          %i = OpVariable %_ptr_Function_int Function %38
+         %39 = OpLoad %v4float %gl_FragCoord
+         %40 = OpCompositeExtract %float %39 0
+         %41 = OpCompositeExtract %float %39 1
+         %42 = OpCompositeConstruct %v2float %40 %41
+               OpStore %uv %42
+         %46 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %v4float %47 %47 %47 %47
+               OpStore %v1 %48
+         %50 = OpAccessChain %_ptr_Function_float %uv %uint_1
+         %51 = OpLoad %float %50
+         %52 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdGreaterThanEqual %bool %51 %53
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+               OpStore %61 %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+               OpStore %64 %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Function_float %v1 %uint_2
+               OpStore %67 %66
+         %68 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Function_float %v1 %uint_3
+               OpStore %71 %69
+               OpBranch %56
+         %56 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %73 = OpLoad %float %72
+               OpStore %a %73
+         %76 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %77 = OpLoad %int %76
+               OpStore %i %77
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %82 = OpLoad %int %i
+         %83 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpSLessThan %bool %82 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+               OpBranch %86
+         %88 = OpLabel
+               OpBranch %79
+         %86 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %92 = OpLoad %float %91
+         %93 = OpFOrdLessThan %bool %90 %92
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+               OpKill
+         %94 = OpLabel
+         %96 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+         %97 = OpLoad %float %96
+         %98 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Function_float %v1 %uint_2
+        %101 = OpLoad %float %100
+        %102 = OpAccessChain %_ptr_Function_float %v1 %uint_3
+        %103 = OpLoad %float %102
+        %105 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_3
+        %106 = OpLoad %float %105
+        %109 = OpFAdd %float %97 %99
+        %110 = OpFAdd %float %109 %101
+        %111 = OpFAdd %float %110 %103
+        %107 = OpExtInst %float %108 Pow %111 %106
+               OpStore %a %107
+               OpBranch %80
+         %80 = OpLabel
+        %112 = OpLoad %int %i
+        %113 = OpIAdd %int %112 %int_1
+               OpStore %i %113
+               OpBranch %78
+         %79 = OpLabel
+        %114 = OpLoad %float %a
+        %115 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %116 = OpLoad %float %115
+        %117 = OpFOrdEqual %bool %114 %116
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %120
+        %119 = OpLabel
+        %121 = OpLoad %v4float %v1
+               OpStore %x_GLF_v1 %121
+               OpBranch %118
+        %120 = OpLabel
+        %122 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %123 = OpLoad %int %122
+        %124 = OpConvertSToF %float %123
+        %125 = OpCompositeConstruct %v4float %124 %124 %124 %124
+               OpStore %x_GLF_v1 %125
+               OpBranch %118
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %126
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %130 = OpLabel
+        %131 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %131
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %133 = OpLabel
+        %134 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %134
+        %135 = OpFunctionCall %void %main_1
+        %137 = OpLoad %v4float %x_GLF_v1
+        %138 = OpCompositeConstruct %main_out %137
+        %136 = OpFunctionCall %void %tint_symbol_3 %138
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c2a6296
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,95 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+var<private> x_GLF_v1 : vec4<f32>;
+
+fn main_1() {
+  var uv : vec2<f32>;
+  var v1 : vec4<f32>;
+  var a : f32;
+  var i : i32;
+  let x_49 : vec4<f32> = gl_FragCoord;
+  uv = vec2<f32>(x_49.x, x_49.y);
+  let x_52 : f32 = x_8.x_GLF_uniform_float_values[0];
+  v1 = vec4<f32>(x_52, x_52, x_52, x_52);
+  let x_55 : f32 = uv.y;
+  let x_57 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_55 >= x_57)) {
+    let x_62 : f32 = x_8.x_GLF_uniform_float_values[2];
+    v1.x = x_62;
+    let x_65 : f32 = x_8.x_GLF_uniform_float_values[0];
+    v1.y = x_65;
+    let x_68 : f32 = x_8.x_GLF_uniform_float_values[0];
+    v1.z = x_68;
+    let x_71 : f32 = x_8.x_GLF_uniform_float_values[2];
+    v1.w = x_71;
+  }
+  let x_74 : f32 = x_8.x_GLF_uniform_float_values[2];
+  a = x_74;
+  let x_15 : i32 = x_12.x_GLF_uniform_int_values[1];
+  i = x_15;
+  loop {
+    let x_16 : i32 = i;
+    let x_17 : i32 = x_12.x_GLF_uniform_int_values[0];
+    if ((x_16 < x_17)) {
+    } else {
+      break;
+    }
+    let x_84 : f32 = x_8.x_GLF_uniform_float_values[2];
+    let x_86 : f32 = x_8.x_GLF_uniform_float_values[0];
+    if ((x_84 < x_86)) {
+      discard;
+    }
+    let x_91 : f32 = v1.x;
+    let x_93 : f32 = v1.y;
+    let x_96 : f32 = v1.z;
+    let x_99 : f32 = v1.w;
+    let x_102 : f32 = x_8.x_GLF_uniform_float_values[3];
+    a = pow((((x_91 + x_93) + x_96) + x_99), x_102);
+
+    continuing {
+      let x_18 : i32 = i;
+      i = (x_18 + 1);
+    }
+  }
+  let x_104 : f32 = a;
+  let x_106 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_104 == x_106)) {
+    let x_111 : vec4<f32> = v1;
+    x_GLF_v1 = x_111;
+  } else {
+    let x_20 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_113 : f32 = f32(x_20);
+    x_GLF_v1 = vec4<f32>(x_113, x_113, x_113, x_113);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_v1_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_v1);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
new file mode 100644
index 0000000..c2a6296
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
@@ -0,0 +1,95 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+var<private> x_GLF_v1 : vec4<f32>;
+
+fn main_1() {
+  var uv : vec2<f32>;
+  var v1 : vec4<f32>;
+  var a : f32;
+  var i : i32;
+  let x_49 : vec4<f32> = gl_FragCoord;
+  uv = vec2<f32>(x_49.x, x_49.y);
+  let x_52 : f32 = x_8.x_GLF_uniform_float_values[0];
+  v1 = vec4<f32>(x_52, x_52, x_52, x_52);
+  let x_55 : f32 = uv.y;
+  let x_57 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_55 >= x_57)) {
+    let x_62 : f32 = x_8.x_GLF_uniform_float_values[2];
+    v1.x = x_62;
+    let x_65 : f32 = x_8.x_GLF_uniform_float_values[0];
+    v1.y = x_65;
+    let x_68 : f32 = x_8.x_GLF_uniform_float_values[0];
+    v1.z = x_68;
+    let x_71 : f32 = x_8.x_GLF_uniform_float_values[2];
+    v1.w = x_71;
+  }
+  let x_74 : f32 = x_8.x_GLF_uniform_float_values[2];
+  a = x_74;
+  let x_15 : i32 = x_12.x_GLF_uniform_int_values[1];
+  i = x_15;
+  loop {
+    let x_16 : i32 = i;
+    let x_17 : i32 = x_12.x_GLF_uniform_int_values[0];
+    if ((x_16 < x_17)) {
+    } else {
+      break;
+    }
+    let x_84 : f32 = x_8.x_GLF_uniform_float_values[2];
+    let x_86 : f32 = x_8.x_GLF_uniform_float_values[0];
+    if ((x_84 < x_86)) {
+      discard;
+    }
+    let x_91 : f32 = v1.x;
+    let x_93 : f32 = v1.y;
+    let x_96 : f32 = v1.z;
+    let x_99 : f32 = v1.w;
+    let x_102 : f32 = x_8.x_GLF_uniform_float_values[3];
+    a = pow((((x_91 + x_93) + x_96) + x_99), x_102);
+
+    continuing {
+      let x_18 : i32 = i;
+      i = (x_18 + 1);
+    }
+  }
+  let x_104 : f32 = a;
+  let x_106 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_104 == x_106)) {
+    let x_111 : vec4<f32> = v1;
+    x_GLF_v1 = x_111;
+  } else {
+    let x_20 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_113 : f32 = f32(x_20);
+    x_GLF_v1 = vec4<f32>(x_113, x_113, x_113, x_113);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_v1_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_v1);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..790ef73
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,92 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[4];
+};
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[2];
+};
+static float4 x_GLF_v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 uv = float2(0.0f, 0.0f);
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float a = 0.0f;
+  int i = 0;
+  const float4 x_49 = gl_FragCoord;
+  uv = float2(x_49.x, x_49.y);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_52 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float4(x_52, x_52, x_52, x_52);
+  const float x_55 = uv.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_57 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_55 >= x_57)) {
+    const float x_62 = asfloat(x_8[2].x);
+    v1.x = x_62;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_65 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    v1.y = x_65;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    v1.z = x_68;
+    const float x_71 = asfloat(x_8[2].x);
+    v1.w = x_71;
+  }
+  const float x_74 = asfloat(x_8[2].x);
+  a = x_74;
+  const int x_15 = asint(x_12[1].x);
+  i = x_15;
+  while (true) {
+    const int x_16 = i;
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_17 = asint(x_12[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    if ((x_16 < x_17)) {
+    } else {
+      break;
+    }
+    const float x_84 = asfloat(x_8[2].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_86 = asfloat(x_8[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    if ((x_84 < x_86)) {
+      discard;
+    }
+    const float x_91 = v1.x;
+    const float x_93 = v1.y;
+    const float x_96 = v1.z;
+    const float x_99 = v1.w;
+    const float x_102 = asfloat(x_8[3].x);
+    a = pow((((x_91 + x_93) + x_96) + x_99), x_102);
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_104 = a;
+  const float x_106 = asfloat(x_8[1].x);
+  if ((x_104 == x_106)) {
+    x_GLF_v1 = v1;
+  } else {
+    const int x_20 = asint(x_12[1].x);
+    const float x_113 = float(x_20);
+    x_GLF_v1 = float4(x_113, x_113, x_113, x_113);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_v1_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_v1_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_v1};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_v1_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..efced0c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_v1_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_v1_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_8, constant buf0& x_12, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 uv = 0.0f;
+  float4 v1 = 0.0f;
+  float a = 0.0f;
+  int i = 0;
+  float4 const x_49 = *(tint_symbol_5);
+  uv = float2(x_49.x, x_49.y);
+  float const x_52 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float4(x_52, x_52, x_52, x_52);
+  float const x_55 = uv.y;
+  float const x_57 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_55 >= x_57)) {
+    float const x_62 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    v1.x = x_62;
+    float const x_65 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    v1.y = x_65;
+    float const x_68 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    v1.z = x_68;
+    float const x_71 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    v1.w = x_71;
+  }
+  float const x_74 = x_8.x_GLF_uniform_float_values.arr[2].el;
+  a = x_74;
+  int const x_15 = x_12.x_GLF_uniform_int_values.arr[1].el;
+  i = x_15;
+  while (true) {
+    int const x_16 = i;
+    int const x_17 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_16 < x_17)) {
+    } else {
+      break;
+    }
+    float const x_84 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    float const x_86 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_84 < x_86)) {
+      discard_fragment();
+    }
+    float const x_91 = v1.x;
+    float const x_93 = v1.y;
+    float const x_96 = v1.z;
+    float const x_99 = v1.w;
+    float const x_102 = x_8.x_GLF_uniform_float_values.arr[3].el;
+    a = pow((((x_91 + x_93) + x_96) + x_99), x_102);
+    {
+      int const x_18 = i;
+      i = (x_18 + 1);
+    }
+  }
+  float const x_104 = a;
+  float const x_106 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  if ((x_104 == x_106)) {
+    float4 const x_111 = v1;
+    *(tint_symbol_6) = x_111;
+  } else {
+    int const x_20 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    float const x_113 = float(x_20);
+    *(tint_symbol_6) = float4(x_113, x_113, x_113, x_113);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_12, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_v1_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_v1_1=tint_symbol_3.x_GLF_v1_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..fd1fbff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,221 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 139
+; Schema: 0
+               OpCapability Shader
+        %108 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %x_GLF_v1 "x_GLF_v1"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %uv "uv"
+               OpName %v1 "v1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_v1_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+   %x_GLF_v1 = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %30 = OpConstantNull %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_float = OpTypePointer Function %float
+         %35 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %38 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+     %uint_3 = OpConstant %uint 3
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %126 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+         %uv = OpVariable %_ptr_Function_v2float Function %30
+         %v1 = OpVariable %_ptr_Function_v4float Function %5
+          %a = OpVariable %_ptr_Function_float Function %35
+          %i = OpVariable %_ptr_Function_int Function %38
+         %39 = OpLoad %v4float %gl_FragCoord
+         %40 = OpCompositeExtract %float %39 0
+         %41 = OpCompositeExtract %float %39 1
+         %42 = OpCompositeConstruct %v2float %40 %41
+               OpStore %uv %42
+         %46 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %v4float %47 %47 %47 %47
+               OpStore %v1 %48
+         %50 = OpAccessChain %_ptr_Function_float %uv %uint_1
+         %51 = OpLoad %float %50
+         %52 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdGreaterThanEqual %bool %51 %53
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+               OpStore %61 %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+               OpStore %64 %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Function_float %v1 %uint_2
+               OpStore %67 %66
+         %68 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Function_float %v1 %uint_3
+               OpStore %71 %69
+               OpBranch %56
+         %56 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %73 = OpLoad %float %72
+               OpStore %a %73
+         %76 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %77 = OpLoad %int %76
+               OpStore %i %77
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %82 = OpLoad %int %i
+         %83 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpSLessThan %bool %82 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+               OpBranch %86
+         %88 = OpLabel
+               OpBranch %79
+         %86 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %92 = OpLoad %float %91
+         %93 = OpFOrdLessThan %bool %90 %92
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+               OpKill
+         %94 = OpLabel
+         %96 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+         %97 = OpLoad %float %96
+         %98 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Function_float %v1 %uint_2
+        %101 = OpLoad %float %100
+        %102 = OpAccessChain %_ptr_Function_float %v1 %uint_3
+        %103 = OpLoad %float %102
+        %105 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_3
+        %106 = OpLoad %float %105
+        %109 = OpFAdd %float %97 %99
+        %110 = OpFAdd %float %109 %101
+        %111 = OpFAdd %float %110 %103
+        %107 = OpExtInst %float %108 Pow %111 %106
+               OpStore %a %107
+               OpBranch %80
+         %80 = OpLabel
+        %112 = OpLoad %int %i
+        %113 = OpIAdd %int %112 %int_1
+               OpStore %i %113
+               OpBranch %78
+         %79 = OpLabel
+        %114 = OpLoad %float %a
+        %115 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %116 = OpLoad %float %115
+        %117 = OpFOrdEqual %bool %114 %116
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %120
+        %119 = OpLabel
+        %121 = OpLoad %v4float %v1
+               OpStore %x_GLF_v1 %121
+               OpBranch %118
+        %120 = OpLabel
+        %122 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+        %123 = OpLoad %int %122
+        %124 = OpConvertSToF %float %123
+        %125 = OpCompositeConstruct %v4float %124 %124 %124 %124
+               OpStore %x_GLF_v1 %125
+               OpBranch %118
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %126
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %130 = OpLabel
+        %131 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %131
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %133 = OpLabel
+        %134 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %134
+        %135 = OpFunctionCall %void %main_1
+        %137 = OpLoad %v4float %x_GLF_v1
+        %138 = OpCompositeConstruct %main_out %137
+        %136 = OpFunctionCall %void %tint_symbol_3 %138
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c2a6296
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,95 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+var<private> x_GLF_v1 : vec4<f32>;
+
+fn main_1() {
+  var uv : vec2<f32>;
+  var v1 : vec4<f32>;
+  var a : f32;
+  var i : i32;
+  let x_49 : vec4<f32> = gl_FragCoord;
+  uv = vec2<f32>(x_49.x, x_49.y);
+  let x_52 : f32 = x_8.x_GLF_uniform_float_values[0];
+  v1 = vec4<f32>(x_52, x_52, x_52, x_52);
+  let x_55 : f32 = uv.y;
+  let x_57 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_55 >= x_57)) {
+    let x_62 : f32 = x_8.x_GLF_uniform_float_values[2];
+    v1.x = x_62;
+    let x_65 : f32 = x_8.x_GLF_uniform_float_values[0];
+    v1.y = x_65;
+    let x_68 : f32 = x_8.x_GLF_uniform_float_values[0];
+    v1.z = x_68;
+    let x_71 : f32 = x_8.x_GLF_uniform_float_values[2];
+    v1.w = x_71;
+  }
+  let x_74 : f32 = x_8.x_GLF_uniform_float_values[2];
+  a = x_74;
+  let x_15 : i32 = x_12.x_GLF_uniform_int_values[1];
+  i = x_15;
+  loop {
+    let x_16 : i32 = i;
+    let x_17 : i32 = x_12.x_GLF_uniform_int_values[0];
+    if ((x_16 < x_17)) {
+    } else {
+      break;
+    }
+    let x_84 : f32 = x_8.x_GLF_uniform_float_values[2];
+    let x_86 : f32 = x_8.x_GLF_uniform_float_values[0];
+    if ((x_84 < x_86)) {
+      discard;
+    }
+    let x_91 : f32 = v1.x;
+    let x_93 : f32 = v1.y;
+    let x_96 : f32 = v1.z;
+    let x_99 : f32 = v1.w;
+    let x_102 : f32 = x_8.x_GLF_uniform_float_values[3];
+    a = pow((((x_91 + x_93) + x_96) + x_99), x_102);
+
+    continuing {
+      let x_18 : i32 = i;
+      i = (x_18 + 1);
+    }
+  }
+  let x_104 : f32 = a;
+  let x_106 : f32 = x_8.x_GLF_uniform_float_values[1];
+  if ((x_104 == x_106)) {
+    let x_111 : vec4<f32> = v1;
+    x_GLF_v1 = x_111;
+  } else {
+    let x_20 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_113 : f32 = f32(x_20);
+    x_GLF_v1 = vec4<f32>(x_113, x_113, x_113, x_113);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_v1_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_v1);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm
new file mode 100644
index 0000000..25ac71d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm
@@ -0,0 +1,92 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %27 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %28 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %35 = OpLoad %float %34
+         %36 = OpConvertFToS %int %35
+         %37 = OpSLessThan %bool %33 %36
+               OpBranchConditional %37 %38 %30
+         %38 = OpLabel
+         %39 = OpLoad %int %a
+         %40 = OpSGreaterThan %bool %39 %int_0
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpBranch %30
+         %41 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %44 = OpLoad %float %43
+         %45 = OpConvertFToS %int %44
+         %46 = OpIMul %int %45 %int_2
+         %47 = OpSDiv %int %46 %int_2
+               OpStore %a %47
+               OpBranch %31
+         %31 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpIAdd %int %48 %int_1
+               OpStore %i %49
+               OpBranch %29
+         %30 = OpLabel
+         %50 = OpLoad %int %a
+         %51 = OpIEqual %bool %50 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %52
+         %54 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..13e0966
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    const int x_33 = i;
+    const float x_35 = asfloat(x_7[0].y);
+    if ((x_33 < int(x_35))) {
+    } else {
+      break;
+    }
+    if ((a > 0)) {
+      break;
+    }
+    const float x_44 = asfloat(x_7[0].y);
+    a = ((int(x_44) * 2) / 2);
+    {
+      i = (i + 1);
+    }
+  }
+  if ((a == 1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..813f700
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,53 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_33 = i;
+    float const x_35 = x_7.injectionSwitch.y;
+    if ((x_33 < int(x_35))) {
+    } else {
+      break;
+    }
+    int const x_39 = a;
+    if ((x_39 > 0)) {
+      break;
+    }
+    float const x_44 = x_7.injectionSwitch.y;
+    a = ((int(x_44) * 2) / 2);
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  int const x_50 = a;
+  if ((x_50 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..abd2c6b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,130 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 73
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %59 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %60 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %61 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %19
+          %i = OpVariable %_ptr_Function_int Function %19
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %22
+         %22 = OpLabel
+               OpLoopMerge %23 %24 None
+               OpBranch %25
+         %25 = OpLabel
+         %26 = OpLoad %int %i
+         %31 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpConvertFToS %int %32
+         %34 = OpSLessThan %bool %26 %33
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+               OpBranch %36
+         %38 = OpLabel
+               OpBranch %23
+         %36 = OpLabel
+         %39 = OpLoad %int %a
+         %40 = OpSGreaterThan %bool %39 %int_0
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpBranch %23
+         %41 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %44 = OpLoad %float %43
+         %45 = OpConvertFToS %int %44
+         %47 = OpIMul %int %45 %int_2
+         %48 = OpSDiv %int %47 %int_2
+               OpStore %a %48
+               OpBranch %24
+         %24 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %i %51
+               OpBranch %22
+         %23 = OpLabel
+         %52 = OpLoad %int %a
+         %53 = OpIEqual %bool %52 %int_1
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpStore %x_GLF_color %59
+               OpBranch %54
+         %56 = OpLabel
+               OpStore %x_GLF_color %60
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %61
+%tint_symbol = OpFunctionParameter %main_out
+         %65 = OpLabel
+         %66 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %66
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %68 = OpLabel
+         %69 = OpFunctionCall %void %main_1
+         %71 = OpLoad %v4float %x_GLF_color
+         %72 = OpCompositeConstruct %main_out %71
+         %70 = OpFunctionCall %void %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..238c476
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,52 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : f32 = x_7.injectionSwitch.y;
+    if ((x_33 < i32(x_35))) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = a;
+    if ((x_39 > 0)) {
+      break;
+    }
+    let x_44 : f32 = x_7.injectionSwitch.y;
+    a = ((i32(x_44) * 2) / 2);
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : i32 = a;
+  if ((x_50 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
new file mode 100644
index 0000000..238c476
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
@@ -0,0 +1,52 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : f32 = x_7.injectionSwitch.y;
+    if ((x_33 < i32(x_35))) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = a;
+    if ((x_39 > 0)) {
+      break;
+    }
+    let x_44 : f32 = x_7.injectionSwitch.y;
+    a = ((i32(x_44) * 2) / 2);
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : i32 = a;
+  if ((x_50 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..13e0966
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    const int x_33 = i;
+    const float x_35 = asfloat(x_7[0].y);
+    if ((x_33 < int(x_35))) {
+    } else {
+      break;
+    }
+    if ((a > 0)) {
+      break;
+    }
+    const float x_44 = asfloat(x_7[0].y);
+    a = ((int(x_44) * 2) / 2);
+    {
+      i = (i + 1);
+    }
+  }
+  if ((a == 1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..813f700
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,53 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_33 = i;
+    float const x_35 = x_7.injectionSwitch.y;
+    if ((x_33 < int(x_35))) {
+    } else {
+      break;
+    }
+    int const x_39 = a;
+    if ((x_39 > 0)) {
+      break;
+    }
+    float const x_44 = x_7.injectionSwitch.y;
+    a = ((int(x_44) * 2) / 2);
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  int const x_50 = a;
+  if ((x_50 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..abd2c6b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,130 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 73
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %59 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %60 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %61 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %19
+          %i = OpVariable %_ptr_Function_int Function %19
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %22
+         %22 = OpLabel
+               OpLoopMerge %23 %24 None
+               OpBranch %25
+         %25 = OpLabel
+         %26 = OpLoad %int %i
+         %31 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpConvertFToS %int %32
+         %34 = OpSLessThan %bool %26 %33
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+               OpBranch %36
+         %38 = OpLabel
+               OpBranch %23
+         %36 = OpLabel
+         %39 = OpLoad %int %a
+         %40 = OpSGreaterThan %bool %39 %int_0
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpBranch %23
+         %41 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %44 = OpLoad %float %43
+         %45 = OpConvertFToS %int %44
+         %47 = OpIMul %int %45 %int_2
+         %48 = OpSDiv %int %47 %int_2
+               OpStore %a %48
+               OpBranch %24
+         %24 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %i %51
+               OpBranch %22
+         %23 = OpLabel
+         %52 = OpLoad %int %a
+         %53 = OpIEqual %bool %52 %int_1
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpStore %x_GLF_color %59
+               OpBranch %54
+         %56 = OpLabel
+               OpStore %x_GLF_color %60
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %61
+%tint_symbol = OpFunctionParameter %main_out
+         %65 = OpLabel
+         %66 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %66
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %68 = OpLabel
+         %69 = OpFunctionCall %void %main_1
+         %71 = OpLoad %v4float %x_GLF_color
+         %72 = OpCompositeConstruct %main_out %71
+         %70 = OpFunctionCall %void %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..238c476
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,52 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : f32 = x_7.injectionSwitch.y;
+    if ((x_33 < i32(x_35))) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = a;
+    if ((x_39 > 0)) {
+      break;
+    }
+    let x_44 : f32 = x_7.injectionSwitch.y;
+    a = ((i32(x_44) * 2) / 2);
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : i32 = a;
+  if ((x_50 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm
new file mode 100644
index 0000000..363a862
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm
@@ -0,0 +1,140 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %i "i"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+     %uint_0 = OpConstant %uint 0
+       %main = OpFunction %void None %10
+         %29 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpConvertSToF %float %31
+         %33 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpConvertSToF %float %37
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpCompositeConstruct %v4float %32 %35 %38 %41
+               OpStore %_GLF_color %42
+         %43 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %44 = OpLoad %float %43
+         %45 = OpFOrdLessThan %bool %44 %float_0
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %_GLF_color %51
+               OpBranch %46
+         %46 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+               OpStore %i %53
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpSLessThan %bool %58 %60
+               OpBranchConditional %61 %62 %55
+         %62 = OpLabel
+         %63 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %64 = OpLoad %float %63
+         %65 = OpFOrdGreaterThan %bool %64 %float_0
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %66
+         %67 = OpLabel
+         %68 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %69 = OpLoad %float %68
+         %70 = OpFOrdLessThan %bool %69 %float_0
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %_GLF_color %76
+               OpBranch %55
+         %71 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+         %77 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %78 = OpLoad %float %77
+         %79 = OpFOrdGreaterThan %bool %78 %float_0
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %80
+         %81 = OpLabel
+         %82 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %83 = OpLoad %float %82
+         %84 = OpFOrdLessThan %bool %83 %float_0
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpCompositeConstruct %v4float %89 %89 %89 %89
+               OpStore %_GLF_color %90
+               OpBranch %85
+         %85 = OpLabel
+               OpBranch %80
+         %80 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+         %91 = OpLoad %int %i
+         %92 = OpIAdd %int %91 %int_1
+               OpStore %i %92
+               OpBranch %54
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f6e2d87
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,74 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_31 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_34 = asint(x_6[1].x);
+  const int x_37 = asint(x_6[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_31), float(x_34), float(x_37), float(x_40));
+  const float x_44 = gl_FragCoord.y;
+  if ((x_44 < 0.0f)) {
+    const int x_49 = asint(x_6[1].x);
+    const float x_50 = float(x_49);
+    x_GLF_color = float4(x_50, x_50, x_50, x_50);
+  }
+  const int x_53 = asint(x_6[1].x);
+  i = x_53;
+  while (true) {
+    const int x_58 = i;
+    const int x_60 = asint(x_6[2].x);
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    const float x_64 = gl_FragCoord.x;
+    if ((x_64 > 0.0f)) {
+      const float x_69 = gl_FragCoord.y;
+      if ((x_69 < 0.0f)) {
+        const int x_74 = asint(x_6[1].x);
+        const float x_75 = float(x_74);
+        x_GLF_color = float4(x_75, x_75, x_75, x_75);
+        break;
+      }
+    }
+    const float x_78 = gl_FragCoord.x;
+    if ((x_78 > 0.0f)) {
+      const float x_83 = gl_FragCoord.y;
+      if ((x_83 < 0.0f)) {
+        const int x_88 = asint(x_6[1].x);
+        const float x_89 = float(x_88);
+        x_GLF_color = float4(x_89, x_89, x_89, x_89);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5d2d058
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_34 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_5) = float4(float(x_31), float(x_34), float(x_37), float(x_40));
+  float const x_44 = (*(tint_symbol_6)).y;
+  if ((x_44 < 0.0f)) {
+    int const x_49 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_50 = float(x_49);
+    *(tint_symbol_5) = float4(x_50, x_50, x_50, x_50);
+  }
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_53;
+  while (true) {
+    int const x_58 = i;
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    float const x_64 = (*(tint_symbol_6)).x;
+    if ((x_64 > 0.0f)) {
+      float const x_69 = (*(tint_symbol_6)).y;
+      if ((x_69 < 0.0f)) {
+        int const x_74 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        float const x_75 = float(x_74);
+        *(tint_symbol_5) = float4(x_75, x_75, x_75, x_75);
+        break;
+      }
+    }
+    float const x_78 = (*(tint_symbol_6)).x;
+    if ((x_78 > 0.0f)) {
+      float const x_83 = (*(tint_symbol_6)).y;
+      if ((x_83 < 0.0f)) {
+        int const x_88 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        float const x_89 = float(x_88);
+        *(tint_symbol_5) = float4(x_89, x_89, x_89, x_89);
+      }
+    }
+    {
+      int const x_91 = i;
+      i = (x_91 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d46c0ee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,181 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %99 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %24
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %29 = OpLoad %int %28
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %32 = OpLoad %int %31
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %36 = OpLoad %int %35
+         %37 = OpConvertSToF %float %29
+         %38 = OpConvertSToF %float %32
+         %39 = OpConvertSToF %float %34
+         %40 = OpConvertSToF %float %36
+         %41 = OpCompositeConstruct %v4float %37 %38 %39 %40
+               OpStore %x_GLF_color %41
+         %44 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %45 = OpLoad %float %44
+         %47 = OpFOrdLessThan %bool %45 %float_0
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %49
+         %50 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %x_GLF_color %54
+               OpBranch %49
+         %49 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %56 = OpLoad %int %55
+               OpStore %i %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %i
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpSLessThan %bool %61 %64
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %58
+         %66 = OpLabel
+         %69 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %70 = OpLoad %float %69
+         %71 = OpFOrdGreaterThan %bool %70 %float_0
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+         %74 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %75 = OpLoad %float %74
+         %76 = OpFOrdLessThan %bool %75 %float_0
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpCompositeConstruct %v4float %81 %81 %81 %81
+               OpStore %x_GLF_color %82
+               OpBranch %58
+         %77 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+         %83 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpFOrdGreaterThan %bool %84 %float_0
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpFOrdLessThan %bool %89 %float_0
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpCompositeConstruct %v4float %95 %95 %95 %95
+               OpStore %x_GLF_color %96
+               OpBranch %91
+         %91 = OpLabel
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %97 = OpLoad %int %i
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %i %98
+               OpBranch %57
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %99
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %103 = OpLabel
+        %104 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %104
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %106 = OpLabel
+        %107 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %107
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_3 %111
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1eebdd9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,74 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_31), f32(x_34), f32(x_37), f32(x_40));
+  let x_44 : f32 = gl_FragCoord.y;
+  if ((x_44 < 0.0)) {
+    let x_49 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_50 : f32 = f32(x_49);
+    x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+  }
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_53;
+  loop {
+    let x_58 : i32 = i;
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    let x_64 : f32 = gl_FragCoord.x;
+    if ((x_64 > 0.0)) {
+      let x_69 : f32 = gl_FragCoord.y;
+      if ((x_69 < 0.0)) {
+        let x_74 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_75 : f32 = f32(x_74);
+        x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+        break;
+      }
+    }
+    let x_78 : f32 = gl_FragCoord.x;
+    if ((x_78 > 0.0)) {
+      let x_83 : f32 = gl_FragCoord.y;
+      if ((x_83 < 0.0)) {
+        let x_88 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_89 : f32 = f32(x_88);
+        x_GLF_color = vec4<f32>(x_89, x_89, x_89, x_89);
+      }
+    }
+
+    continuing {
+      let x_91 : i32 = i;
+      i = (x_91 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
new file mode 100644
index 0000000..1eebdd9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
@@ -0,0 +1,74 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_31), f32(x_34), f32(x_37), f32(x_40));
+  let x_44 : f32 = gl_FragCoord.y;
+  if ((x_44 < 0.0)) {
+    let x_49 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_50 : f32 = f32(x_49);
+    x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+  }
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_53;
+  loop {
+    let x_58 : i32 = i;
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    let x_64 : f32 = gl_FragCoord.x;
+    if ((x_64 > 0.0)) {
+      let x_69 : f32 = gl_FragCoord.y;
+      if ((x_69 < 0.0)) {
+        let x_74 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_75 : f32 = f32(x_74);
+        x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+        break;
+      }
+    }
+    let x_78 : f32 = gl_FragCoord.x;
+    if ((x_78 > 0.0)) {
+      let x_83 : f32 = gl_FragCoord.y;
+      if ((x_83 < 0.0)) {
+        let x_88 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_89 : f32 = f32(x_88);
+        x_GLF_color = vec4<f32>(x_89, x_89, x_89, x_89);
+      }
+    }
+
+    continuing {
+      let x_91 : i32 = i;
+      i = (x_91 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f6e2d87
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,74 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_31 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const int x_34 = asint(x_6[1].x);
+  const int x_37 = asint(x_6[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_40 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_31), float(x_34), float(x_37), float(x_40));
+  const float x_44 = gl_FragCoord.y;
+  if ((x_44 < 0.0f)) {
+    const int x_49 = asint(x_6[1].x);
+    const float x_50 = float(x_49);
+    x_GLF_color = float4(x_50, x_50, x_50, x_50);
+  }
+  const int x_53 = asint(x_6[1].x);
+  i = x_53;
+  while (true) {
+    const int x_58 = i;
+    const int x_60 = asint(x_6[2].x);
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    const float x_64 = gl_FragCoord.x;
+    if ((x_64 > 0.0f)) {
+      const float x_69 = gl_FragCoord.y;
+      if ((x_69 < 0.0f)) {
+        const int x_74 = asint(x_6[1].x);
+        const float x_75 = float(x_74);
+        x_GLF_color = float4(x_75, x_75, x_75, x_75);
+        break;
+      }
+    }
+    const float x_78 = gl_FragCoord.x;
+    if ((x_78 > 0.0f)) {
+      const float x_83 = gl_FragCoord.y;
+      if ((x_83 < 0.0f)) {
+        const int x_88 = asint(x_6[1].x);
+        const float x_89 = float(x_88);
+        x_GLF_color = float4(x_89, x_89, x_89, x_89);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5d2d058
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_34 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_5) = float4(float(x_31), float(x_34), float(x_37), float(x_40));
+  float const x_44 = (*(tint_symbol_6)).y;
+  if ((x_44 < 0.0f)) {
+    int const x_49 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_50 = float(x_49);
+    *(tint_symbol_5) = float4(x_50, x_50, x_50, x_50);
+  }
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_53;
+  while (true) {
+    int const x_58 = i;
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    float const x_64 = (*(tint_symbol_6)).x;
+    if ((x_64 > 0.0f)) {
+      float const x_69 = (*(tint_symbol_6)).y;
+      if ((x_69 < 0.0f)) {
+        int const x_74 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        float const x_75 = float(x_74);
+        *(tint_symbol_5) = float4(x_75, x_75, x_75, x_75);
+        break;
+      }
+    }
+    float const x_78 = (*(tint_symbol_6)).x;
+    if ((x_78 > 0.0f)) {
+      float const x_83 = (*(tint_symbol_6)).y;
+      if ((x_83 < 0.0f)) {
+        int const x_88 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        float const x_89 = float(x_88);
+        *(tint_symbol_5) = float4(x_89, x_89, x_89, x_89);
+      }
+    }
+    {
+      int const x_91 = i;
+      i = (x_91 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d46c0ee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,181 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %99 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %24
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %29 = OpLoad %int %28
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %32 = OpLoad %int %31
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %36 = OpLoad %int %35
+         %37 = OpConvertSToF %float %29
+         %38 = OpConvertSToF %float %32
+         %39 = OpConvertSToF %float %34
+         %40 = OpConvertSToF %float %36
+         %41 = OpCompositeConstruct %v4float %37 %38 %39 %40
+               OpStore %x_GLF_color %41
+         %44 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %45 = OpLoad %float %44
+         %47 = OpFOrdLessThan %bool %45 %float_0
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %49
+         %50 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %x_GLF_color %54
+               OpBranch %49
+         %49 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %56 = OpLoad %int %55
+               OpStore %i %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %i
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpSLessThan %bool %61 %64
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %58
+         %66 = OpLabel
+         %69 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %70 = OpLoad %float %69
+         %71 = OpFOrdGreaterThan %bool %70 %float_0
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+         %74 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %75 = OpLoad %float %74
+         %76 = OpFOrdLessThan %bool %75 %float_0
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpCompositeConstruct %v4float %81 %81 %81 %81
+               OpStore %x_GLF_color %82
+               OpBranch %58
+         %77 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+         %83 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpFOrdGreaterThan %bool %84 %float_0
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpFOrdLessThan %bool %89 %float_0
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+         %93 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpCompositeConstruct %v4float %95 %95 %95 %95
+               OpStore %x_GLF_color %96
+               OpBranch %91
+         %91 = OpLabel
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %97 = OpLoad %int %i
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %i %98
+               OpBranch %57
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %99
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %103 = OpLabel
+        %104 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %104
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %106 = OpLabel
+        %107 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %107
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_3 %111
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1eebdd9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,74 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_34 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_31), f32(x_34), f32(x_37), f32(x_40));
+  let x_44 : f32 = gl_FragCoord.y;
+  if ((x_44 < 0.0)) {
+    let x_49 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_50 : f32 = f32(x_49);
+    x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+  }
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_53;
+  loop {
+    let x_58 : i32 = i;
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_58 < x_60)) {
+    } else {
+      break;
+    }
+    let x_64 : f32 = gl_FragCoord.x;
+    if ((x_64 > 0.0)) {
+      let x_69 : f32 = gl_FragCoord.y;
+      if ((x_69 < 0.0)) {
+        let x_74 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_75 : f32 = f32(x_74);
+        x_GLF_color = vec4<f32>(x_75, x_75, x_75, x_75);
+        break;
+      }
+    }
+    let x_78 : f32 = gl_FragCoord.x;
+    if ((x_78 > 0.0)) {
+      let x_83 : f32 = gl_FragCoord.y;
+      if ((x_83 < 0.0)) {
+        let x_88 : i32 = x_6.x_GLF_uniform_int_values[1];
+        let x_89 : f32 = f32(x_88);
+        x_GLF_color = vec4<f32>(x_89, x_89, x_89, x_89);
+      }
+    }
+
+    continuing {
+      let x_91 : i32 = i;
+      i = (x_91 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm
new file mode 100644
index 0000000..4d16e49
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm
@@ -0,0 +1,175 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func_i1_ "func(i1;"
+               OpName %x "x"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %indexable "indexable"
+               OpName %a_0 "a"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpTypeFunction %int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+%_ptr_Function__arr_int_uint_4 = OpTypePointer Function %_arr_int_uint_4
+       %true = OpConstantTrue %bool
+      %int_4 = OpConstant %int 4
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %16
+         %37 = OpLabel
+        %a_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %39 = OpLoad %int %38
+               OpStore %param %39
+         %40 = OpFunctionCall %int %func_i1_ %param
+               OpStore %a_0 %40
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %42 = OpLoad %int %41
+               OpStore %param_0 %42
+         %43 = OpFunctionCall %int %func_i1_ %param_0
+         %44 = OpLoad %int %a_0
+         %45 = OpIAdd %int %44 %43
+               OpStore %a_0 %45
+         %46 = OpLoad %int %a_0
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpIEqual %bool %46 %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpCompositeConstruct %v4float %55 %58 %61 %64
+               OpStore %_GLF_color %65
+               OpBranch %50
+         %52 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpCompositeConstruct %v4float %68 %68 %68 %68
+               OpStore %_GLF_color %69
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_i1_ = OpFunction %int None %19
+          %x = OpFunctionParameter %_ptr_Function_int
+         %70 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_4 Function
+         %71 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %72 = OpLoad %int %71
+               OpStore %a %72
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %74 = OpLoad %int %73
+               OpStore %i %74
+               OpBranch %75
+         %75 = OpLabel
+               OpLoopMerge %76 %77 None
+               OpBranch %78
+         %78 = OpLabel
+         %79 = OpLoad %int %i
+         %80 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpSLessThan %bool %79 %81
+               OpBranchConditional %82 %83 %76
+         %83 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %91 = OpLoad %int %90
+         %92 = OpCompositeConstruct %_arr_int_uint_4 %85 %87 %89 %91
+         %93 = OpLoad %int %a
+               OpStore %indexable %92
+         %94 = OpAccessChain %_ptr_Function_int %indexable %93
+         %95 = OpLoad %int %94
+         %96 = OpLoad %int %x
+         %97 = OpSGreaterThan %bool %95 %96
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %100
+         %99 = OpLabel
+               OpSelectionMerge %101 None
+               OpBranchConditional %true %102 %103
+        %102 = OpLabel
+        %104 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %105 = OpLoad %int %104
+               OpReturnValue %105
+        %103 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %107 = OpLoad %int %106
+               OpStore %a %107
+               OpBranch %101
+        %101 = OpLabel
+               OpBranch %98
+        %100 = OpLabel
+               OpSelectionMerge %108 None
+               OpBranchConditional %true %109 %108
+        %109 = OpLabel
+        %110 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+        %111 = OpLoad %int %110
+               OpReturnValue %111
+        %108 = OpLabel
+               OpBranch %98
+         %98 = OpLabel
+               OpBranch %77
+         %77 = OpLabel
+        %112 = OpLoad %int %i
+        %113 = OpIAdd %int %112 %int_1
+               OpStore %i %113
+               OpBranch %75
+         %76 = OpLabel
+        %114 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %115 = OpLoad %int %114
+               OpReturnValue %115
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..cf463e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,99 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_i1_(inout int x) {
+  int a = 0;
+  int i = 0;
+  int indexable[4] = (int[4])0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_72 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  a = x_72;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_74 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  i = x_74;
+  while (true) {
+    const int x_79 = i;
+    const int x_81 = asint(x_8[1].x);
+    if ((x_79 < x_81)) {
+    } else {
+      break;
+    }
+    const int x_85 = asint(x_8[3].x);
+    const int x_87 = asint(x_8[3].x);
+    const int x_89 = asint(x_8[3].x);
+    const int x_91 = asint(x_8[3].x);
+    const int x_93 = a;
+    const int tint_symbol_3[4] = {x_85, x_87, x_89, x_91};
+    indexable = tint_symbol_3;
+    const int x_95 = indexable[x_93];
+    const int x_96 = x;
+    if ((x_95 > x_96)) {
+      if (true) {
+        const int x_105 = asint(x_8[3].x);
+        return x_105;
+      } else {
+        const int x_107 = asint(x_8[3].x);
+        a = x_107;
+      }
+    } else {
+      if (true) {
+        const int x_111 = asint(x_8[4].x);
+        return x_111;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_115 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  return x_115;
+}
+
+void main_1() {
+  int a_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_39 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  param = x_39;
+  const int x_40 = func_i1_(param);
+  a_1 = x_40;
+  const int x_42 = asint(x_8[3].x);
+  param_1 = x_42;
+  const int x_43 = func_i1_(param_1);
+  a_1 = (a_1 + x_43);
+  const int x_46 = a_1;
+  const int x_48 = asint(x_8[2].x);
+  if ((x_46 == x_48)) {
+    const int x_54 = asint(x_8[3].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_8[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_63 = asint(x_8[3].x);
+    x_GLF_color = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_67 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_68 = float(x_67);
+    x_GLF_color = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f72fd0a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[4];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_i1_(constant buf0& x_8, thread int* const x) {
+  int a = 0;
+  int i = 0;
+  tint_array_wrapper_1 indexable = {};
+  int const x_72 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  a = x_72;
+  int const x_74 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i = x_74;
+  while (true) {
+    int const x_79 = i;
+    int const x_81 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_79 < x_81)) {
+    } else {
+      break;
+    }
+    int const x_85 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_87 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_89 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_91 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_93 = a;
+    tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_85, x_87, x_89, x_91}};
+    indexable = tint_symbol_3;
+    int const x_95 = indexable.arr[x_93];
+    int const x_96 = *(x);
+    if ((x_95 > x_96)) {
+      if (true) {
+        int const x_105 = x_8.x_GLF_uniform_int_values.arr[3].el;
+        return x_105;
+      } else {
+        int const x_107 = x_8.x_GLF_uniform_int_values.arr[3].el;
+        a = x_107;
+      }
+    } else {
+      if (true) {
+        int const x_111 = x_8.x_GLF_uniform_int_values.arr[4].el;
+        return x_111;
+      }
+    }
+    {
+      int const x_112 = i;
+      i = (x_112 + 1);
+    }
+  }
+  int const x_115 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  return x_115;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5) {
+  int a_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int const x_39 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  param = x_39;
+  int const x_40 = func_i1_(x_8, &(param));
+  a_1 = x_40;
+  int const x_42 = x_8.x_GLF_uniform_int_values.arr[3].el;
+  param_1 = x_42;
+  int const x_43 = func_i1_(x_8, &(param_1));
+  int const x_44 = a_1;
+  a_1 = (x_44 + x_43);
+  int const x_46 = a_1;
+  int const x_48 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_46 == x_48)) {
+    int const x_54 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_57 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_63 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_5) = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    int const x_67 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_68 = float(x_67);
+    *(tint_symbol_5) = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_8, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..847dc61
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,215 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 138
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %indexable "indexable"
+               OpName %main_1 "main_1"
+               OpName %a_1 "a_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpTypeFunction %int %_ptr_Function_int
+         %21 = OpConstantNull %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+%_ptr_Function__arr_int_uint_4 = OpTypePointer Function %_arr_int_uint_4
+         %27 = OpConstantNull %_arr_int_uint_4
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+       %true = OpConstantTrue %bool
+      %int_4 = OpConstant %int 4
+       %void = OpTypeVoid
+         %84 = OpTypeFunction %void
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %126 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %int None %15
+          %x = OpFunctionParameter %_ptr_Function_int
+         %19 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_4 Function %27
+         %31 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %32 = OpLoad %int %31
+               OpStore %a %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %34 = OpLoad %int %33
+               OpStore %i %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpSLessThan %bool %39 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %36
+         %45 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %56 = OpLoad %int %55
+         %57 = OpLoad %int %a
+         %58 = OpCompositeConstruct %_arr_int_uint_4 %50 %52 %54 %56
+               OpStore %indexable %58
+         %59 = OpAccessChain %_ptr_Function_int %indexable %57
+         %60 = OpLoad %int %59
+         %62 = OpLoad %int %x
+         %63 = OpSGreaterThan %bool %60 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpSelectionMerge %68 None
+               OpBranchConditional %true %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %72 = OpLoad %int %71
+               OpReturnValue %72
+         %70 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %74 = OpLoad %int %73
+               OpStore %a %74
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpSelectionMerge %75 None
+               OpBranchConditional %true %76 %75
+         %76 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %79 = OpLoad %int %78
+               OpReturnValue %79
+         %75 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %80 = OpLoad %int %i
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %i %81
+               OpBranch %35
+         %36 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %83 = OpLoad %int %82
+               OpReturnValue %83
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %84
+         %87 = OpLabel
+        %a_1 = OpVariable %_ptr_Function_int Function %21
+      %param = OpVariable %_ptr_Function_int Function %21
+    %param_1 = OpVariable %_ptr_Function_int Function %21
+         %91 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %92 = OpLoad %int %91
+               OpStore %param %92
+         %93 = OpFunctionCall %int %func_i1_ %param
+               OpStore %a_1 %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %96 = OpLoad %int %95
+               OpStore %param_1 %96
+         %97 = OpFunctionCall %int %func_i1_ %param_1
+         %99 = OpLoad %int %a_1
+        %100 = OpIAdd %int %99 %97
+               OpStore %a_1 %100
+        %101 = OpLoad %int %a_1
+        %103 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %104 = OpLoad %int %103
+        %105 = OpIEqual %bool %101 %104
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %107 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %112 = OpLoad %int %111
+        %113 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %110
+        %118 = OpConvertSToF %float %112
+        %119 = OpConvertSToF %float %114
+        %120 = OpConvertSToF %float %116
+        %121 = OpCompositeConstruct %v4float %117 %118 %119 %120
+               OpStore %x_GLF_color %121
+               OpBranch %106
+        %108 = OpLabel
+        %122 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %123 = OpLoad %int %122
+        %124 = OpConvertSToF %float %123
+        %125 = OpCompositeConstruct %v4float %124 %124 %124 %124
+               OpStore %x_GLF_color %125
+               OpBranch %106
+        %106 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %126
+%tint_symbol = OpFunctionParameter %main_out
+        %130 = OpLabel
+        %131 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %131
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %84
+        %133 = OpLabel
+        %134 = OpFunctionCall %void %main_1
+        %136 = OpLoad %v4float %x_GLF_color
+        %137 = OpCompositeConstruct %main_out %136
+        %135 = OpFunctionCall %void %tint_symbol_2 %137
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..9e7764a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,97 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) -> i32 {
+  var a : i32;
+  var i : i32;
+  var indexable : array<i32, 4>;
+  let x_72 : i32 = x_8.x_GLF_uniform_int_values[0];
+  a = x_72;
+  let x_74 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i = x_74;
+  loop {
+    let x_79 : i32 = i;
+    let x_81 : i32 = x_8.x_GLF_uniform_int_values[1];
+    if ((x_79 < x_81)) {
+    } else {
+      break;
+    }
+    let x_85 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_87 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_89 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_91 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_93 : i32 = a;
+    indexable = array<i32, 4>(x_85, x_87, x_89, x_91);
+    let x_95 : i32 = indexable[x_93];
+    let x_96 : i32 = *(x);
+    if ((x_95 > x_96)) {
+      if (true) {
+        let x_105 : i32 = x_8.x_GLF_uniform_int_values[3];
+        return x_105;
+      } else {
+        let x_107 : i32 = x_8.x_GLF_uniform_int_values[3];
+        a = x_107;
+      }
+    } else {
+      if (true) {
+        let x_111 : i32 = x_8.x_GLF_uniform_int_values[4];
+        return x_111;
+      }
+    }
+
+    continuing {
+      let x_112 : i32 = i;
+      i = (x_112 + 1);
+    }
+  }
+  let x_115 : i32 = x_8.x_GLF_uniform_int_values[0];
+  return x_115;
+}
+
+fn main_1() {
+  var a_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  let x_39 : i32 = x_8.x_GLF_uniform_int_values[0];
+  param = x_39;
+  let x_40 : i32 = func_i1_(&(param));
+  a_1 = x_40;
+  let x_42 : i32 = x_8.x_GLF_uniform_int_values[3];
+  param_1 = x_42;
+  let x_43 : i32 = func_i1_(&(param_1));
+  let x_44 : i32 = a_1;
+  a_1 = (x_44 + x_43);
+  let x_46 : i32 = a_1;
+  let x_48 : i32 = x_8.x_GLF_uniform_int_values[2];
+  if ((x_46 == x_48)) {
+    let x_54 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_57 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_8.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_54), f32(x_57), f32(x_60), f32(x_63));
+  } else {
+    let x_67 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_68 : f32 = f32(x_67);
+    x_GLF_color = vec4<f32>(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
new file mode 100644
index 0000000..9e7764a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
@@ -0,0 +1,97 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) -> i32 {
+  var a : i32;
+  var i : i32;
+  var indexable : array<i32, 4>;
+  let x_72 : i32 = x_8.x_GLF_uniform_int_values[0];
+  a = x_72;
+  let x_74 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i = x_74;
+  loop {
+    let x_79 : i32 = i;
+    let x_81 : i32 = x_8.x_GLF_uniform_int_values[1];
+    if ((x_79 < x_81)) {
+    } else {
+      break;
+    }
+    let x_85 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_87 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_89 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_91 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_93 : i32 = a;
+    indexable = array<i32, 4>(x_85, x_87, x_89, x_91);
+    let x_95 : i32 = indexable[x_93];
+    let x_96 : i32 = *(x);
+    if ((x_95 > x_96)) {
+      if (true) {
+        let x_105 : i32 = x_8.x_GLF_uniform_int_values[3];
+        return x_105;
+      } else {
+        let x_107 : i32 = x_8.x_GLF_uniform_int_values[3];
+        a = x_107;
+      }
+    } else {
+      if (true) {
+        let x_111 : i32 = x_8.x_GLF_uniform_int_values[4];
+        return x_111;
+      }
+    }
+
+    continuing {
+      let x_112 : i32 = i;
+      i = (x_112 + 1);
+    }
+  }
+  let x_115 : i32 = x_8.x_GLF_uniform_int_values[0];
+  return x_115;
+}
+
+fn main_1() {
+  var a_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  let x_39 : i32 = x_8.x_GLF_uniform_int_values[0];
+  param = x_39;
+  let x_40 : i32 = func_i1_(&(param));
+  a_1 = x_40;
+  let x_42 : i32 = x_8.x_GLF_uniform_int_values[3];
+  param_1 = x_42;
+  let x_43 : i32 = func_i1_(&(param_1));
+  let x_44 : i32 = a_1;
+  a_1 = (x_44 + x_43);
+  let x_46 : i32 = a_1;
+  let x_48 : i32 = x_8.x_GLF_uniform_int_values[2];
+  if ((x_46 == x_48)) {
+    let x_54 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_57 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_8.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_54), f32(x_57), f32(x_60), f32(x_63));
+  } else {
+    let x_67 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_68 : f32 = f32(x_67);
+    x_GLF_color = vec4<f32>(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..cf463e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,99 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_i1_(inout int x) {
+  int a = 0;
+  int i = 0;
+  int indexable[4] = (int[4])0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_72 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  a = x_72;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_74 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  i = x_74;
+  while (true) {
+    const int x_79 = i;
+    const int x_81 = asint(x_8[1].x);
+    if ((x_79 < x_81)) {
+    } else {
+      break;
+    }
+    const int x_85 = asint(x_8[3].x);
+    const int x_87 = asint(x_8[3].x);
+    const int x_89 = asint(x_8[3].x);
+    const int x_91 = asint(x_8[3].x);
+    const int x_93 = a;
+    const int tint_symbol_3[4] = {x_85, x_87, x_89, x_91};
+    indexable = tint_symbol_3;
+    const int x_95 = indexable[x_93];
+    const int x_96 = x;
+    if ((x_95 > x_96)) {
+      if (true) {
+        const int x_105 = asint(x_8[3].x);
+        return x_105;
+      } else {
+        const int x_107 = asint(x_8[3].x);
+        a = x_107;
+      }
+    } else {
+      if (true) {
+        const int x_111 = asint(x_8[4].x);
+        return x_111;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_115 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  return x_115;
+}
+
+void main_1() {
+  int a_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_39 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  param = x_39;
+  const int x_40 = func_i1_(param);
+  a_1 = x_40;
+  const int x_42 = asint(x_8[3].x);
+  param_1 = x_42;
+  const int x_43 = func_i1_(param_1);
+  a_1 = (a_1 + x_43);
+  const int x_46 = a_1;
+  const int x_48 = asint(x_8[2].x);
+  if ((x_46 == x_48)) {
+    const int x_54 = asint(x_8[3].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_8[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_63 = asint(x_8[3].x);
+    x_GLF_color = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_67 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_68 = float(x_67);
+    x_GLF_color = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f72fd0a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[4];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_i1_(constant buf0& x_8, thread int* const x) {
+  int a = 0;
+  int i = 0;
+  tint_array_wrapper_1 indexable = {};
+  int const x_72 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  a = x_72;
+  int const x_74 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i = x_74;
+  while (true) {
+    int const x_79 = i;
+    int const x_81 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_79 < x_81)) {
+    } else {
+      break;
+    }
+    int const x_85 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_87 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_89 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_91 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_93 = a;
+    tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_85, x_87, x_89, x_91}};
+    indexable = tint_symbol_3;
+    int const x_95 = indexable.arr[x_93];
+    int const x_96 = *(x);
+    if ((x_95 > x_96)) {
+      if (true) {
+        int const x_105 = x_8.x_GLF_uniform_int_values.arr[3].el;
+        return x_105;
+      } else {
+        int const x_107 = x_8.x_GLF_uniform_int_values.arr[3].el;
+        a = x_107;
+      }
+    } else {
+      if (true) {
+        int const x_111 = x_8.x_GLF_uniform_int_values.arr[4].el;
+        return x_111;
+      }
+    }
+    {
+      int const x_112 = i;
+      i = (x_112 + 1);
+    }
+  }
+  int const x_115 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  return x_115;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5) {
+  int a_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int const x_39 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  param = x_39;
+  int const x_40 = func_i1_(x_8, &(param));
+  a_1 = x_40;
+  int const x_42 = x_8.x_GLF_uniform_int_values.arr[3].el;
+  param_1 = x_42;
+  int const x_43 = func_i1_(x_8, &(param_1));
+  int const x_44 = a_1;
+  a_1 = (x_44 + x_43);
+  int const x_46 = a_1;
+  int const x_48 = x_8.x_GLF_uniform_int_values.arr[2].el;
+  if ((x_46 == x_48)) {
+    int const x_54 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    int const x_57 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_63 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_5) = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    int const x_67 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_68 = float(x_67);
+    *(tint_symbol_5) = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_8, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..847dc61
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,215 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 138
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %indexable "indexable"
+               OpName %main_1 "main_1"
+               OpName %a_1 "a_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpTypeFunction %int %_ptr_Function_int
+         %21 = OpConstantNull %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+%_ptr_Function__arr_int_uint_4 = OpTypePointer Function %_arr_int_uint_4
+         %27 = OpConstantNull %_arr_int_uint_4
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+       %true = OpConstantTrue %bool
+      %int_4 = OpConstant %int 4
+       %void = OpTypeVoid
+         %84 = OpTypeFunction %void
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %126 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %int None %15
+          %x = OpFunctionParameter %_ptr_Function_int
+         %19 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_4 Function %27
+         %31 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %32 = OpLoad %int %31
+               OpStore %a %32
+         %33 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %34 = OpLoad %int %33
+               OpStore %i %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpSLessThan %bool %39 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %36
+         %45 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %56 = OpLoad %int %55
+         %57 = OpLoad %int %a
+         %58 = OpCompositeConstruct %_arr_int_uint_4 %50 %52 %54 %56
+               OpStore %indexable %58
+         %59 = OpAccessChain %_ptr_Function_int %indexable %57
+         %60 = OpLoad %int %59
+         %62 = OpLoad %int %x
+         %63 = OpSGreaterThan %bool %60 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpSelectionMerge %68 None
+               OpBranchConditional %true %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %72 = OpLoad %int %71
+               OpReturnValue %72
+         %70 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %74 = OpLoad %int %73
+               OpStore %a %74
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpSelectionMerge %75 None
+               OpBranchConditional %true %76 %75
+         %76 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_4
+         %79 = OpLoad %int %78
+               OpReturnValue %79
+         %75 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %80 = OpLoad %int %i
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %i %81
+               OpBranch %35
+         %36 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %83 = OpLoad %int %82
+               OpReturnValue %83
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %84
+         %87 = OpLabel
+        %a_1 = OpVariable %_ptr_Function_int Function %21
+      %param = OpVariable %_ptr_Function_int Function %21
+    %param_1 = OpVariable %_ptr_Function_int Function %21
+         %91 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %92 = OpLoad %int %91
+               OpStore %param %92
+         %93 = OpFunctionCall %int %func_i1_ %param
+               OpStore %a_1 %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %96 = OpLoad %int %95
+               OpStore %param_1 %96
+         %97 = OpFunctionCall %int %func_i1_ %param_1
+         %99 = OpLoad %int %a_1
+        %100 = OpIAdd %int %99 %97
+               OpStore %a_1 %100
+        %101 = OpLoad %int %a_1
+        %103 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+        %104 = OpLoad %int %103
+        %105 = OpIEqual %bool %101 %104
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %107 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %112 = OpLoad %int %111
+        %113 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %110
+        %118 = OpConvertSToF %float %112
+        %119 = OpConvertSToF %float %114
+        %120 = OpConvertSToF %float %116
+        %121 = OpCompositeConstruct %v4float %117 %118 %119 %120
+               OpStore %x_GLF_color %121
+               OpBranch %106
+        %108 = OpLabel
+        %122 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %123 = OpLoad %int %122
+        %124 = OpConvertSToF %float %123
+        %125 = OpCompositeConstruct %v4float %124 %124 %124 %124
+               OpStore %x_GLF_color %125
+               OpBranch %106
+        %106 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %126
+%tint_symbol = OpFunctionParameter %main_out
+        %130 = OpLabel
+        %131 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %131
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %84
+        %133 = OpLabel
+        %134 = OpFunctionCall %void %main_1
+        %136 = OpLoad %v4float %x_GLF_color
+        %137 = OpCompositeConstruct %main_out %136
+        %135 = OpFunctionCall %void %tint_symbol_2 %137
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..9e7764a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,97 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) -> i32 {
+  var a : i32;
+  var i : i32;
+  var indexable : array<i32, 4>;
+  let x_72 : i32 = x_8.x_GLF_uniform_int_values[0];
+  a = x_72;
+  let x_74 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i = x_74;
+  loop {
+    let x_79 : i32 = i;
+    let x_81 : i32 = x_8.x_GLF_uniform_int_values[1];
+    if ((x_79 < x_81)) {
+    } else {
+      break;
+    }
+    let x_85 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_87 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_89 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_91 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_93 : i32 = a;
+    indexable = array<i32, 4>(x_85, x_87, x_89, x_91);
+    let x_95 : i32 = indexable[x_93];
+    let x_96 : i32 = *(x);
+    if ((x_95 > x_96)) {
+      if (true) {
+        let x_105 : i32 = x_8.x_GLF_uniform_int_values[3];
+        return x_105;
+      } else {
+        let x_107 : i32 = x_8.x_GLF_uniform_int_values[3];
+        a = x_107;
+      }
+    } else {
+      if (true) {
+        let x_111 : i32 = x_8.x_GLF_uniform_int_values[4];
+        return x_111;
+      }
+    }
+
+    continuing {
+      let x_112 : i32 = i;
+      i = (x_112 + 1);
+    }
+  }
+  let x_115 : i32 = x_8.x_GLF_uniform_int_values[0];
+  return x_115;
+}
+
+fn main_1() {
+  var a_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  let x_39 : i32 = x_8.x_GLF_uniform_int_values[0];
+  param = x_39;
+  let x_40 : i32 = func_i1_(&(param));
+  a_1 = x_40;
+  let x_42 : i32 = x_8.x_GLF_uniform_int_values[3];
+  param_1 = x_42;
+  let x_43 : i32 = func_i1_(&(param_1));
+  let x_44 : i32 = a_1;
+  a_1 = (x_44 + x_43);
+  let x_46 : i32 = a_1;
+  let x_48 : i32 = x_8.x_GLF_uniform_int_values[2];
+  if ((x_46 == x_48)) {
+    let x_54 : i32 = x_8.x_GLF_uniform_int_values[3];
+    let x_57 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_8.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_54), f32(x_57), f32(x_60), f32(x_63));
+  } else {
+    let x_67 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_68 : f32 = f32(x_67);
+    x_GLF_color = vec4<f32>(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm
new file mode 100644
index 0000000..284fbe3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm
@@ -0,0 +1,97 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %m "m"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %9
+         %27 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %28
+         %30 = OpConvertSToF %float %29
+         %31 = OpCompositeConstruct %v2float %30 %float_0
+         %32 = OpCompositeConstruct %v2float %float_0 %30
+         %33 = OpCompositeConstruct %mat2v2float %31 %32
+         %34 = OpTranspose %mat2v2float %33
+         %35 = OpTranspose %mat2v2float %34
+               OpStore %m %35
+         %36 = OpLoad %mat2v2float %m
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpCompositeConstruct %v2float %39 %float_0
+         %41 = OpCompositeConstruct %v2float %float_0 %39
+         %42 = OpCompositeConstruct %mat2v2float %40 %41
+         %43 = OpCompositeExtract %v2float %36 0
+         %44 = OpCompositeExtract %v2float %42 0
+         %45 = OpFOrdEqual %v2bool %43 %44
+         %46 = OpAll %bool %45
+         %47 = OpCompositeExtract %v2float %36 1
+         %48 = OpCompositeExtract %v2float %42 1
+         %49 = OpFOrdEqual %v2bool %47 %48
+         %50 = OpAll %bool %49
+         %51 = OpLogicalAnd %bool %46 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %57 %60 %63 %66
+               OpStore %_GLF_color %67
+               OpBranch %52
+         %54 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpCompositeConstruct %v4float %70 %70 %70 %70
+               OpStore %_GLF_color %71
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..7362602
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_30 = float(x_29);
+  m = transpose(transpose(float2x2(float2(x_30, 0.0f), float2(0.0f, x_30))));
+  const float2x2 x_36 = m;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_39 = float(x_38);
+  const float2x2 x_42 = float2x2(float2(x_39, 0.0f), float2(0.0f, x_39));
+  bool tint_tmp = all((x_36[0u] == x_42[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_36[1u] == x_42[1u]));
+  }
+  if ((tint_tmp)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_59 = asint(x_6[1].x);
+    const int x_62 = asint(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  } else {
+    const int x_69 = asint(x_6[1].x);
+    const float x_70 = float(x_69);
+    x_GLF_color = float4(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4cfd1b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.msl
@@ -0,0 +1,51 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2x2 m = float2x2(0.0f);
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_30 = float(x_29);
+  m = transpose(transpose(float2x2(float2(x_30, 0.0f), float2(0.0f, x_30))));
+  float2x2 const x_36 = m;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_39 = float(x_38);
+  float2x2 const x_42 = float2x2(float2(x_39, 0.0f), float2(0.0f, x_39));
+  if ((all((x_36[0u] == x_42[0u])) && all((x_36[1u] == x_42[1u])))) {
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_59 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  } else {
+    int const x_69 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_70 = float(x_69);
+    *(tint_symbol_4) = float4(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b279bcf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,135 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %23 = OpConstantNull %mat2v2float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %78 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function %23
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %28 = OpLoad %int %27
+         %29 = OpConvertSToF %float %28
+         %33 = OpCompositeConstruct %v2float %29 %float_0
+         %34 = OpCompositeConstruct %v2float %float_0 %29
+         %35 = OpCompositeConstruct %mat2v2float %33 %34
+         %31 = OpTranspose %mat2v2float %35
+         %30 = OpTranspose %mat2v2float %31
+               OpStore %m %30
+         %36 = OpLoad %mat2v2float %m
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpCompositeConstruct %v2float %39 %float_0
+         %41 = OpCompositeConstruct %v2float %float_0 %39
+         %42 = OpCompositeConstruct %mat2v2float %40 %41
+         %45 = OpCompositeExtract %v2float %36 0
+         %46 = OpCompositeExtract %v2float %42 0
+         %47 = OpFOrdEqual %v2bool %45 %46
+         %43 = OpAll %bool %47
+               OpSelectionMerge %49 None
+               OpBranchConditional %43 %50 %49
+         %50 = OpLabel
+         %53 = OpCompositeExtract %v2float %36 1
+         %54 = OpCompositeExtract %v2float %42 1
+         %55 = OpFOrdEqual %v2bool %53 %54
+         %51 = OpAll %bool %55
+               OpBranch %49
+         %49 = OpLabel
+         %56 = OpPhi %bool %43 %18 %51 %50
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %61
+         %70 = OpConvertSToF %float %64
+         %71 = OpConvertSToF %float %66
+         %72 = OpConvertSToF %float %68
+         %73 = OpCompositeConstruct %v4float %69 %70 %71 %72
+               OpStore %x_GLF_color %73
+               OpBranch %57
+         %59 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpCompositeConstruct %v4float %76 %76 %76 %76
+               OpStore %x_GLF_color %77
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %78
+%tint_symbol = OpFunctionParameter %main_out
+         %82 = OpLabel
+         %83 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %83
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %85 = OpLabel
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_2 %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..510e118
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,44 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_30 : f32 = f32(x_29);
+  m = transpose(transpose(mat2x2<f32>(vec2<f32>(x_30, 0.0), vec2<f32>(0.0, x_30))));
+  let x_36 : mat2x2<f32> = m;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_39 : f32 = f32(x_38);
+  let x_42 : mat2x2<f32> = mat2x2<f32>(vec2<f32>(x_39, 0.0), vec2<f32>(0.0, x_39));
+  if ((all((x_36[0u] == x_42[0u])) && all((x_36[1u] == x_42[1u])))) {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65));
+  } else {
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_70 : f32 = f32(x_69);
+    x_GLF_color = vec4<f32>(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
new file mode 100644
index 0000000..510e118
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
@@ -0,0 +1,44 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_30 : f32 = f32(x_29);
+  m = transpose(transpose(mat2x2<f32>(vec2<f32>(x_30, 0.0), vec2<f32>(0.0, x_30))));
+  let x_36 : mat2x2<f32> = m;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_39 : f32 = f32(x_38);
+  let x_42 : mat2x2<f32> = mat2x2<f32>(vec2<f32>(x_39, 0.0), vec2<f32>(0.0, x_39));
+  if ((all((x_36[0u] == x_42[0u])) && all((x_36[1u] == x_42[1u])))) {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65));
+  } else {
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_70 : f32 = f32(x_69);
+    x_GLF_color = vec4<f32>(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7362602
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const float x_30 = float(x_29);
+  m = transpose(transpose(float2x2(float2(x_30, 0.0f), float2(0.0f, x_30))));
+  const float2x2 x_36 = m;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_38 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_39 = float(x_38);
+  const float2x2 x_42 = float2x2(float2(x_39, 0.0f), float2(0.0f, x_39));
+  bool tint_tmp = all((x_36[0u] == x_42[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_36[1u] == x_42[1u]));
+  }
+  if ((tint_tmp)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_59 = asint(x_6[1].x);
+    const int x_62 = asint(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  } else {
+    const int x_69 = asint(x_6[1].x);
+    const float x_70 = float(x_69);
+    x_GLF_color = float4(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4cfd1b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.msl
@@ -0,0 +1,51 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2x2 m = float2x2(0.0f);
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_30 = float(x_29);
+  m = transpose(transpose(float2x2(float2(x_30, 0.0f), float2(0.0f, x_30))));
+  float2x2 const x_36 = m;
+  int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  float const x_39 = float(x_38);
+  float2x2 const x_42 = float2x2(float2(x_39, 0.0f), float2(0.0f, x_39));
+  if ((all((x_36[0u] == x_42[0u])) && all((x_36[1u] == x_42[1u])))) {
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_59 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  } else {
+    int const x_69 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_70 = float(x_69);
+    *(tint_symbol_4) = float4(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b279bcf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,135 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 90
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %23 = OpConstantNull %mat2v2float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %78 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function %23
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %28 = OpLoad %int %27
+         %29 = OpConvertSToF %float %28
+         %33 = OpCompositeConstruct %v2float %29 %float_0
+         %34 = OpCompositeConstruct %v2float %float_0 %29
+         %35 = OpCompositeConstruct %mat2v2float %33 %34
+         %31 = OpTranspose %mat2v2float %35
+         %30 = OpTranspose %mat2v2float %31
+               OpStore %m %30
+         %36 = OpLoad %mat2v2float %m
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpCompositeConstruct %v2float %39 %float_0
+         %41 = OpCompositeConstruct %v2float %float_0 %39
+         %42 = OpCompositeConstruct %mat2v2float %40 %41
+         %45 = OpCompositeExtract %v2float %36 0
+         %46 = OpCompositeExtract %v2float %42 0
+         %47 = OpFOrdEqual %v2bool %45 %46
+         %43 = OpAll %bool %47
+               OpSelectionMerge %49 None
+               OpBranchConditional %43 %50 %49
+         %50 = OpLabel
+         %53 = OpCompositeExtract %v2float %36 1
+         %54 = OpCompositeExtract %v2float %42 1
+         %55 = OpFOrdEqual %v2bool %53 %54
+         %51 = OpAll %bool %55
+               OpBranch %49
+         %49 = OpLabel
+         %56 = OpPhi %bool %43 %18 %51 %50
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %61
+         %70 = OpConvertSToF %float %64
+         %71 = OpConvertSToF %float %66
+         %72 = OpConvertSToF %float %68
+         %73 = OpCompositeConstruct %v4float %69 %70 %71 %72
+               OpStore %x_GLF_color %73
+               OpBranch %57
+         %59 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpCompositeConstruct %v4float %76 %76 %76 %76
+               OpStore %x_GLF_color %77
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %78
+%tint_symbol = OpFunctionParameter %main_out
+         %82 = OpLabel
+         %83 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %83
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %85 = OpLabel
+         %86 = OpFunctionCall %void %main_1
+         %88 = OpLoad %v4float %x_GLF_color
+         %89 = OpCompositeConstruct %main_out %88
+         %87 = OpFunctionCall %void %tint_symbol_2 %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..510e118
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,44 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_30 : f32 = f32(x_29);
+  m = transpose(transpose(mat2x2<f32>(vec2<f32>(x_30, 0.0), vec2<f32>(0.0, x_30))));
+  let x_36 : mat2x2<f32> = m;
+  let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_39 : f32 = f32(x_38);
+  let x_42 : mat2x2<f32> = mat2x2<f32>(vec2<f32>(x_39, 0.0), vec2<f32>(0.0, x_39));
+  if ((all((x_36[0u] == x_42[0u])) && all((x_36[1u] == x_42[1u])))) {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65));
+  } else {
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_70 : f32 = f32(x_69);
+    x_GLF_color = vec4<f32>(x_70, x_70, x_70, x_70);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm
new file mode 100644
index 0000000..2ebee33
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm
@@ -0,0 +1,98 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %m0 "m0"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %m1 "m1"
+               OpName %v "v"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_n0_540302277 = OpConstant %float -0.540302277
+%float_0_540302277 = OpConstant %float 0.540302277
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %11
+         %33 = OpLabel
+         %m0 = OpVariable %_ptr_Function_mat2v2float Function
+         %m1 = OpVariable %_ptr_Function_mat2v2float Function
+          %v = OpVariable %_ptr_Function_v2float Function
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %37 = OpLoad %float %36
+         %38 = OpCompositeConstruct %v2float %35 %float_n0_540302277
+         %39 = OpCompositeConstruct %v2float %float_0_540302277 %37
+         %40 = OpCompositeConstruct %mat2v2float %38 %39
+               OpStore %m0 %40
+         %41 = OpLoad %mat2v2float %m0
+         %42 = OpLoad %mat2v2float %m0
+         %43 = OpMatrixTimesMatrix %mat2v2float %41 %42
+               OpStore %m1 %43
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpCompositeConstruct %v2float %45 %45
+         %47 = OpLoad %mat2v2float %m1
+         %48 = OpVectorTimesMatrix %v2float %46 %47
+               OpStore %v %48
+         %49 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %52 = OpLoad %float %51
+         %53 = OpFOrdLessThan %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpCompositeConstruct %v4float %58 %60 %62 %64
+               OpStore %_GLF_color %65
+               OpBranch %54
+         %56 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %67 = OpLoad %float %66
+         %68 = OpCompositeConstruct %v4float %67 %67 %67 %67
+               OpStore %_GLF_color %68
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..da225ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m0 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 m1 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2 v = float2(0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_35 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_37 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  m0 = float2x2(float2(x_35, -0.540302277f), float2(0.540302277f, x_37));
+  m1 = mul(m0, m0);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  v = mul(m1, float2(x_45, x_45));
+  const float x_50 = v.x;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_52 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  if ((x_50 < x_52)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_58 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_60 = asfloat(x_6[1].x);
+    const float x_62 = asfloat(x_6[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(x_58, x_60, x_62, x_64);
+  } else {
+    const float x_67 = asfloat(x_6[1].x);
+    x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ee86a7c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.msl
@@ -0,0 +1,56 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2x2 m0 = float2x2(0.0f);
+  float2x2 m1 = float2x2(0.0f);
+  float2 v = 0.0f;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  m0 = float2x2(float2(x_35, -0.540302277f), float2(0.540302277f, x_37));
+  float2x2 const x_41 = m0;
+  float2x2 const x_42 = m0;
+  m1 = (x_41 * x_42);
+  float const x_45 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float2x2 const x_47 = m1;
+  v = (float2(x_45, x_45) * x_47);
+  float const x_50 = v.x;
+  float const x_52 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_50 < x_52)) {
+    float const x_58 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_60 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_62 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_64 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_58, x_60, x_62, x_64);
+  } else {
+    float const x_67 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_4) = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a34f056
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,129 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 83
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m0 "m0"
+               OpName %m1 "m1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %22 = OpConstantNull %mat2v2float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_n0_540302277 = OpConstant %float -0.540302277
+%float_0_540302277 = OpConstant %float 0.540302277
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %71 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %m0 = OpVariable %_ptr_Function_mat2v2float Function %22
+         %m1 = OpVariable %_ptr_Function_mat2v2float Function %22
+          %v = OpVariable %_ptr_Function_v2float Function %26
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %32 = OpLoad %float %31
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %34 = OpLoad %float %33
+         %36 = OpCompositeConstruct %v2float %32 %float_n0_540302277
+         %38 = OpCompositeConstruct %v2float %float_0_540302277 %34
+         %39 = OpCompositeConstruct %mat2v2float %36 %38
+               OpStore %m0 %39
+         %40 = OpLoad %mat2v2float %m0
+         %41 = OpLoad %mat2v2float %m0
+         %42 = OpMatrixTimesMatrix %mat2v2float %40 %41
+               OpStore %m1 %42
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpLoad %mat2v2float %m1
+         %46 = OpCompositeConstruct %v2float %44 %44
+         %47 = OpVectorTimesMatrix %v2float %46 %45
+               OpStore %v %47
+         %49 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %52 = OpLoad %float %51
+         %53 = OpFOrdLessThan %bool %50 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %53 %56 %57
+         %56 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %61 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpCompositeConstruct %v4float %59 %62 %64 %66
+               OpStore %x_GLF_color %67
+               OpBranch %55
+         %57 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %69 = OpLoad %float %68
+         %70 = OpCompositeConstruct %v4float %69 %69 %69 %69
+               OpStore %x_GLF_color %70
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %71
+%tint_symbol = OpFunctionParameter %main_out
+         %75 = OpLabel
+         %76 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %76
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %78 = OpLabel
+         %79 = OpFunctionCall %void %main_1
+         %81 = OpLoad %v4float %x_GLF_color
+         %82 = OpCompositeConstruct %main_out %81
+         %80 = OpFunctionCall %void %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..eff2ddf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m0 : mat2x2<f32>;
+  var m1 : mat2x2<f32>;
+  var v : vec2<f32>;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m0 = mat2x2<f32>(vec2<f32>(x_35, -0.540302277), vec2<f32>(0.540302277, x_37));
+  let x_41 : mat2x2<f32> = m0;
+  let x_42 : mat2x2<f32> = m0;
+  m1 = (x_41 * x_42);
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_47 : mat2x2<f32> = m1;
+  v = (vec2<f32>(x_45, x_45) * x_47);
+  let x_50 : f32 = v.x;
+  let x_52 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_50 < x_52)) {
+    let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_60 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_64 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_58, x_60, x_62, x_64);
+  } else {
+    let x_67 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
new file mode 100644
index 0000000..eff2ddf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m0 : mat2x2<f32>;
+  var m1 : mat2x2<f32>;
+  var v : vec2<f32>;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m0 = mat2x2<f32>(vec2<f32>(x_35, -0.540302277), vec2<f32>(0.540302277, x_37));
+  let x_41 : mat2x2<f32> = m0;
+  let x_42 : mat2x2<f32> = m0;
+  m1 = (x_41 * x_42);
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_47 : mat2x2<f32> = m1;
+  v = (vec2<f32>(x_45, x_45) * x_47);
+  let x_50 : f32 = v.x;
+  let x_52 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_50 < x_52)) {
+    let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_60 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_64 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_58, x_60, x_62, x_64);
+  } else {
+    let x_67 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..da225ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m0 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 m1 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2 v = float2(0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_35 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_37 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  m0 = float2x2(float2(x_35, -0.540302277f), float2(0.540302277f, x_37));
+  m1 = mul(m0, m0);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  v = mul(m1, float2(x_45, x_45));
+  const float x_50 = v.x;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_52 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  if ((x_50 < x_52)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_58 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_60 = asfloat(x_6[1].x);
+    const float x_62 = asfloat(x_6[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(x_58, x_60, x_62, x_64);
+  } else {
+    const float x_67 = asfloat(x_6[1].x);
+    x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ee86a7c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.msl
@@ -0,0 +1,56 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2x2 m0 = float2x2(0.0f);
+  float2x2 m1 = float2x2(0.0f);
+  float2 v = 0.0f;
+  float const x_35 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  m0 = float2x2(float2(x_35, -0.540302277f), float2(0.540302277f, x_37));
+  float2x2 const x_41 = m0;
+  float2x2 const x_42 = m0;
+  m1 = (x_41 * x_42);
+  float const x_45 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float2x2 const x_47 = m1;
+  v = (float2(x_45, x_45) * x_47);
+  float const x_50 = v.x;
+  float const x_52 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_50 < x_52)) {
+    float const x_58 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_60 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_62 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_64 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_58, x_60, x_62, x_64);
+  } else {
+    float const x_67 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    *(tint_symbol_4) = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..a34f056
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,129 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 83
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m0 "m0"
+               OpName %m1 "m1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %22 = OpConstantNull %mat2v2float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_n0_540302277 = OpConstant %float -0.540302277
+%float_0_540302277 = OpConstant %float 0.540302277
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %71 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %m0 = OpVariable %_ptr_Function_mat2v2float Function %22
+         %m1 = OpVariable %_ptr_Function_mat2v2float Function %22
+          %v = OpVariable %_ptr_Function_v2float Function %26
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %32 = OpLoad %float %31
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %34 = OpLoad %float %33
+         %36 = OpCompositeConstruct %v2float %32 %float_n0_540302277
+         %38 = OpCompositeConstruct %v2float %float_0_540302277 %34
+         %39 = OpCompositeConstruct %mat2v2float %36 %38
+               OpStore %m0 %39
+         %40 = OpLoad %mat2v2float %m0
+         %41 = OpLoad %mat2v2float %m0
+         %42 = OpMatrixTimesMatrix %mat2v2float %40 %41
+               OpStore %m1 %42
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpLoad %mat2v2float %m1
+         %46 = OpCompositeConstruct %v2float %44 %44
+         %47 = OpVectorTimesMatrix %v2float %46 %45
+               OpStore %v %47
+         %49 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %52 = OpLoad %float %51
+         %53 = OpFOrdLessThan %bool %50 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %53 %56 %57
+         %56 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %61 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpCompositeConstruct %v4float %59 %62 %64 %66
+               OpStore %x_GLF_color %67
+               OpBranch %55
+         %57 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %69 = OpLoad %float %68
+         %70 = OpCompositeConstruct %v4float %69 %69 %69 %69
+               OpStore %x_GLF_color %70
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %71
+%tint_symbol = OpFunctionParameter %main_out
+         %75 = OpLabel
+         %76 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %76
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %78 = OpLabel
+         %79 = OpFunctionCall %void %main_1
+         %81 = OpLoad %v4float %x_GLF_color
+         %82 = OpCompositeConstruct %main_out %81
+         %80 = OpFunctionCall %void %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..eff2ddf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m0 : mat2x2<f32>;
+  var m1 : mat2x2<f32>;
+  var v : vec2<f32>;
+  let x_35 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m0 = mat2x2<f32>(vec2<f32>(x_35, -0.540302277), vec2<f32>(0.540302277, x_37));
+  let x_41 : mat2x2<f32> = m0;
+  let x_42 : mat2x2<f32> = m0;
+  m1 = (x_41 * x_42);
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_47 : mat2x2<f32> = m1;
+  v = (vec2<f32>(x_45, x_45) * x_47);
+  let x_50 : f32 = v.x;
+  let x_52 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_50 < x_52)) {
+    let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_60 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_64 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_58, x_60, x_62, x_64);
+  } else {
+    let x_67 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm
new file mode 100644
index 0000000..a933536
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm
@@ -0,0 +1,56 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %20 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %23 = OpLoad %int %22
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %25 = OpLoad %int %24
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %27 = OpLoad %int %26
+         %28 = OpExtInst %int %1 SClamp %25 %27 %int_1
+         %29 = OpExtInst %int %1 SMax %23 %28
+         %30 = OpIEqual %bool %29 %int_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %_GLF_color %20
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..60ded1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_23 = asint(x_5[0].x);
+  const int x_25 = asint(x_5[0].x);
+  const int x_27 = asint(x_5[0].x);
+  if ((max(x_23, clamp(x_25, x_27, 1)) == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..dba1366
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_23 = x_5.one;
+  int const x_25 = x_5.one;
+  int const x_27 = x_5.one;
+  if ((max(x_23, clamp(x_25, x_27, 1)) == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..329e139
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,89 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+         %26 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %21 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %22 = OpLoad %int %21
+         %23 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %24 = OpLoad %int %23
+         %27 = OpExtInst %int %26 SClamp %22 %24 %int_1
+         %25 = OpExtInst %int %26 SMax %20 %27
+         %29 = OpIEqual %bool %25 %int_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %x_GLF_color %37
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ae45234
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,31 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_23 : i32 = x_5.one;
+  let x_25 : i32 = x_5.one;
+  let x_27 : i32 = x_5.one;
+  if ((max(x_23, clamp(x_25, x_27, 1)) == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
new file mode 100644
index 0000000..ae45234
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
@@ -0,0 +1,31 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_23 : i32 = x_5.one;
+  let x_25 : i32 = x_5.one;
+  let x_27 : i32 = x_5.one;
+  if ((max(x_23, clamp(x_25, x_27, 1)) == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..60ded1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_23 = asint(x_5[0].x);
+  const int x_25 = asint(x_5[0].x);
+  const int x_27 = asint(x_5[0].x);
+  if ((max(x_23, clamp(x_25, x_27, 1)) == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..dba1366
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_23 = x_5.one;
+  int const x_25 = x_5.one;
+  int const x_27 = x_5.one;
+  if ((max(x_23, clamp(x_25, x_27, 1)) == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..329e139
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,89 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+         %26 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %21 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %22 = OpLoad %int %21
+         %23 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %24 = OpLoad %int %23
+         %27 = OpExtInst %int %26 SClamp %22 %24 %int_1
+         %25 = OpExtInst %int %26 SMax %20 %27
+         %29 = OpIEqual %bool %25 %int_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %x_GLF_color %37
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ae45234
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,31 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_23 : i32 = x_5.one;
+  let x_25 : i32 = x_5.one;
+  let x_27 : i32 = x_5.one;
+  if ((max(x_23, clamp(x_25, x_27, 1)) == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm
new file mode 100644
index 0000000..da3347f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm
@@ -0,0 +1,80 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %10
+         %28 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %29 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpConvertFToS %int %30
+         %32 = OpExtInst %int %1 SMin %int_1 %31
+         %33 = OpExtInst %int %1 SMax %int_1 %32
+               OpStore %a %33
+         %34 = OpLoad %int %a
+         %35 = OpSLessThan %bool %34 %int_2
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %float_1 %41 %44 %47
+               OpStore %_GLF_color %48
+               OpBranch %36
+         %38 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpCompositeConstruct %v4float %51 %51 %51 %51
+               OpStore %_GLF_color %52
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3ad7117
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+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);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+
+void main_1() {
+  int a = 0;
+  const float x_30 = gl_FragCoord.x;
+  a = max(1, min(1, int(x_30)));
+  if ((a < 2)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_40 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_46 = asint(x_7[1].x);
+    x_GLF_color = float4(1.0f, float(x_40), float(x_43), float(x_46));
+  } else {
+    const int x_50 = asint(x_7[1].x);
+    const float x_51 = float(x_50);
+    x_GLF_color = float4(x_51, x_51, x_51, x_51);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f106f7a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  float const x_30 = (*(tint_symbol_5)).x;
+  a = max(1, min(1, int(x_30)));
+  int const x_34 = a;
+  if ((x_34 < 2)) {
+    int const x_40 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_43 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_46 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_6) = float4(1.0f, float(x_40), float(x_43), float(x_46));
+  } else {
+    int const x_50 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_51 = float(x_50);
+    *(tint_symbol_6) = float4(x_51, x_51, x_51, x_51);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..63a17ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+         %30 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %24
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %28 = OpLoad %float %27
+         %33 = OpConvertFToS %int %28
+         %32 = OpExtInst %int %30 SMin %int_1 %33
+         %29 = OpExtInst %int %30 SMax %int_1 %32
+               OpStore %a %29
+         %34 = OpLoad %int %a
+         %36 = OpSLessThan %bool %34 %int_2
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %48 = OpLoad %int %47
+         %50 = OpConvertSToF %float %44
+         %51 = OpConvertSToF %float %46
+         %52 = OpConvertSToF %float %48
+         %53 = OpCompositeConstruct %v4float %float_1 %50 %51 %52
+               OpStore %x_GLF_color %53
+               OpBranch %38
+         %40 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpCompositeConstruct %v4float %56 %56 %56 %56
+               OpStore %x_GLF_color %57
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %58
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %65 = OpLabel
+         %66 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %66
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_3 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..24c7553
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn main_1() {
+  var a : i32;
+  let x_30 : f32 = gl_FragCoord.x;
+  a = max(1, min(1, i32(x_30)));
+  let x_34 : i32 = a;
+  if ((x_34 < 2)) {
+    let x_40 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_43 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_46 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(1.0, f32(x_40), f32(x_43), f32(x_46));
+  } else {
+    let x_50 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_51 : f32 = f32(x_50);
+    x_GLF_color = vec4<f32>(x_51, x_51, x_51, x_51);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
new file mode 100644
index 0000000..24c7553
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn main_1() {
+  var a : i32;
+  let x_30 : f32 = gl_FragCoord.x;
+  a = max(1, min(1, i32(x_30)));
+  let x_34 : i32 = a;
+  if ((x_34 < 2)) {
+    let x_40 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_43 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_46 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(1.0, f32(x_40), f32(x_43), f32(x_46));
+  } else {
+    let x_50 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_51 : f32 = f32(x_50);
+    x_GLF_color = vec4<f32>(x_51, x_51, x_51, x_51);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3ad7117
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,43 @@
+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);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+
+void main_1() {
+  int a = 0;
+  const float x_30 = gl_FragCoord.x;
+  a = max(1, min(1, int(x_30)));
+  if ((a < 2)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_40 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_46 = asint(x_7[1].x);
+    x_GLF_color = float4(1.0f, float(x_40), float(x_43), float(x_46));
+  } else {
+    const int x_50 = asint(x_7[1].x);
+    const float x_51 = float(x_50);
+    x_GLF_color = float4(x_51, x_51, x_51, x_51);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f106f7a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  float const x_30 = (*(tint_symbol_5)).x;
+  a = max(1, min(1, int(x_30)));
+  int const x_34 = a;
+  if ((x_34 < 2)) {
+    int const x_40 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_43 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_46 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_6) = float4(1.0f, float(x_40), float(x_43), float(x_46));
+  } else {
+    int const x_50 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_51 = float(x_50);
+    *(tint_symbol_6) = float4(x_51, x_51, x_51, x_51);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..63a17ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+         %30 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %24
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %28 = OpLoad %float %27
+         %33 = OpConvertFToS %int %28
+         %32 = OpExtInst %int %30 SMin %int_1 %33
+         %29 = OpExtInst %int %30 SMax %int_1 %32
+               OpStore %a %29
+         %34 = OpLoad %int %a
+         %36 = OpSLessThan %bool %34 %int_2
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %48 = OpLoad %int %47
+         %50 = OpConvertSToF %float %44
+         %51 = OpConvertSToF %float %46
+         %52 = OpConvertSToF %float %48
+         %53 = OpCompositeConstruct %v4float %float_1 %50 %51 %52
+               OpStore %x_GLF_color %53
+               OpBranch %38
+         %40 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpCompositeConstruct %v4float %56 %56 %56 %56
+               OpStore %x_GLF_color %57
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %58
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %65 = OpLabel
+         %66 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %66
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_3 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..24c7553
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn main_1() {
+  var a : i32;
+  let x_30 : f32 = gl_FragCoord.x;
+  a = max(1, min(1, i32(x_30)));
+  let x_34 : i32 = a;
+  if ((x_34 < 2)) {
+    let x_40 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_43 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_46 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(1.0, f32(x_40), f32(x_43), f32(x_46));
+  } else {
+    let x_50 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_51 : f32 = f32(x_50);
+    x_GLF_color = vec4<f32>(x_51, x_51, x_51, x_51);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm
new file mode 100644
index 0000000..5006192
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm
@@ -0,0 +1,196 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "a"
+               OpMemberName %S 1 "b"
+               OpMemberName %S 2 "c"
+               OpName %func_struct_S_i1_i1_i11_i1_ "func(struct-S-i1-i1-i11;i1;"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %arr "arr"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+          %S = OpTypeStruct %int %int %int
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpTypeFunction %int %_ptr_Function_S %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_7 = OpConstant %int 7
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_S_uint_2 = OpTypeArray %S %uint_2
+%_ptr_Function__arr_S_uint_2 = OpTypePointer Function %_arr_S_uint_2
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+     %int_12 = OpConstant %int 12
+    %float_1 = OpConstant %float 1
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %14
+         %42 = OpLabel
+         %43 = OpVariable %_ptr_Function_int Function
+         %44 = OpVariable %_ptr_Function_bool Function %false
+        %arr = OpVariable %_ptr_Function__arr_S_uint_2 Function
+      %param = OpVariable %_ptr_Function_S Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Function_int %arr %50 %int_0
+               OpStore %51 %int_2
+         %52 = OpAccessChain %_ptr_Function_int %arr %int_1 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpSLessThan %bool %53 %int_1
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpStore %_GLF_color %35
+               OpStore %44 %true
+               OpBranch %46
+         %57 = OpLabel
+         %58 = OpIAdd %int %int_2 %50
+         %59 = OpAccessChain %_ptr_Function_S %arr %int_1
+         %60 = OpLoad %S %59
+               OpStore %param %60
+               OpStore %param_0 %58
+         %61 = OpLoad %int %param_0
+         %62 = OpAccessChain %_ptr_Function_int %param %int_0
+         %63 = OpLoad %S %param
+         %64 = OpCompositeInsert %S %61 %63 0
+               OpStore %param %64
+         %65 = OpLoad %S %param
+         %66 = OpCompositeExtract %int %65 0
+         %67 = OpIEqual %bool %66 %int_2
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpLoad %S %param
+         %71 = OpCompositeInsert %S %int_9 %70 0
+               OpStore %param %71
+               OpBranch %68
+         %68 = OpLabel
+         %72 = OpLoad %int %param_0
+         %73 = OpIAdd %int %72 %int_1
+         %74 = OpAccessChain %_ptr_Function_int %param %int_1
+         %75 = OpLoad %S %param
+         %76 = OpCompositeInsert %S %73 %75 1
+               OpStore %param %76
+         %77 = OpLoad %int %param_0
+         %78 = OpIAdd %int %77 %int_2
+         %79 = OpAccessChain %_ptr_Function_int %param %int_2
+         %80 = OpLoad %S %param
+         %81 = OpCompositeInsert %S %78 %80 2
+               OpStore %param %81
+         %82 = OpLoad %S %param
+         %83 = OpCompositeExtract %int %82 1
+         %84 = OpIEqual %bool %83 %int_2
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpLoad %S %param
+         %88 = OpCompositeInsert %S %int_7 %87 1
+               OpStore %param %88
+               OpBranch %85
+         %85 = OpLabel
+         %89 = OpLoad %S %param
+         %90 = OpCompositeExtract %int %89 0
+         %91 = OpLoad %S %param
+         %92 = OpCompositeExtract %int %91 1
+         %93 = OpIAdd %int %90 %92
+         %94 = OpLoad %S %param
+         %95 = OpCompositeExtract %int %94 2
+         %96 = OpIAdd %int %93 %95
+               OpStore %43 %96
+         %97 = OpLoad %int %43
+         %98 = OpIEqual %bool %97 %int_12
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+               OpStore %_GLF_color %38
+               OpBranch %99
+        %101 = OpLabel
+               OpStore %_GLF_color %35
+               OpBranch %99
+         %99 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+               OpStore %44 %true
+               OpBranch %46
+         %47 = OpLabel
+               OpBranch %45
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_struct_S_i1_i1_i11_i1_ = OpFunction %int None %18
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+        %102 = OpLabel
+        %103 = OpLoad %int %x
+        %104 = OpAccessChain %_ptr_Function_int %s %int_0
+               OpStore %104 %103
+        %105 = OpLoad %int %104
+        %106 = OpIEqual %bool %105 %int_2
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+               OpStore %104 %int_9
+               OpBranch %107
+        %107 = OpLabel
+        %109 = OpLoad %int %x
+        %110 = OpIAdd %int %109 %int_1
+        %111 = OpAccessChain %_ptr_Function_int %s %int_1
+               OpStore %111 %110
+        %112 = OpLoad %int %x
+        %113 = OpIAdd %int %112 %int_2
+        %114 = OpAccessChain %_ptr_Function_int %s %int_2
+               OpStore %114 %113
+        %115 = OpLoad %int %111
+        %116 = OpIEqual %bool %115 %int_2
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %117
+        %118 = OpLabel
+               OpStore %111 %int_7
+               OpBranch %117
+        %117 = OpLabel
+        %119 = OpLoad %int %104
+        %120 = OpLoad %int %111
+        %121 = OpIAdd %int %119 %120
+        %122 = OpLoad %int %114
+        %123 = OpIAdd %int %121 %122
+               OpReturnValue %123
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9efb42d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,99 @@
+struct S {
+  int a;
+  int b;
+  int c;
+};
+
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_43 = 0;
+  bool x_44 = false;
+  S arr[2] = (S[2])0;
+  S param = (S)0;
+  int param_1 = 0;
+  while (true) {
+    int x_50 = 0;
+    x_50 = asint(x_10[0].x);
+    arr[x_50].a = 2;
+    const int x_53 = arr[1].a;
+    if ((x_53 < 1)) {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      x_44 = true;
+      break;
+    } else {
+      const S x_60 = arr[1];
+      param = x_60;
+      param_1 = (2 + asint(x_50));
+      const int x_61 = param_1;
+      S x_64_1 = param;
+      x_64_1.a = x_61;
+      param = x_64_1;
+      if ((param.a == 2)) {
+        S x_71_1 = param;
+        x_71_1.a = 9;
+        param = x_71_1;
+      }
+      const int x_72 = param_1;
+      S x_76_1 = param;
+      x_76_1.b = (x_72 + 1);
+      param = x_76_1;
+      const int x_77 = param_1;
+      S x_81_1 = param;
+      x_81_1.c = (x_77 + 2);
+      param = x_81_1;
+      if ((param.b == 2)) {
+        S x_88_1 = param;
+        x_88_1.b = 7;
+        param = x_88_1;
+      }
+      x_43 = ((param.a + param.b) + param.c);
+      if ((x_43 == 12)) {
+        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_44 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+int func_struct_S_i1_i1_i11_i1_(inout S s, inout int x) {
+  const int x_103 = x;
+  s.a = x_103;
+  const int x_105 = s.a;
+  if ((x_105 == 2)) {
+    s.a = 9;
+  }
+  const int x_109 = x;
+  s.b = (x_109 + 1);
+  const int x_112 = x;
+  s.c = (x_112 + 2);
+  const int x_115 = s.b;
+  if ((x_115 == 2)) {
+    s.b = 7;
+  }
+  const int x_119 = s.a;
+  const int x_120 = s.b;
+  const int x_122 = s.c;
+  return ((x_119 + x_120) + x_122);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..91c59ac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.msl
@@ -0,0 +1,120 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int a;
+  int b;
+  int c;
+};
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper {
+  S arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_4) {
+  int x_43 = 0;
+  bool x_44 = false;
+  tint_array_wrapper arr = {};
+  S param = {};
+  int param_1 = 0;
+  while (true) {
+    int x_50 = 0;
+    x_50 = x_10.one;
+    arr.arr[x_50].a = 2;
+    int const x_53 = arr.arr[1].a;
+    if ((x_53 < 1)) {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      x_44 = true;
+      break;
+    } else {
+      S const x_60 = arr.arr[1];
+      param = x_60;
+      param_1 = (2 + as_type<int>(x_50));
+      int const x_61 = param_1;
+      S const x_63 = param;
+      S x_64_1 = x_63;
+      x_64_1.a = x_61;
+      S const x_64 = x_64_1;
+      param = x_64;
+      S const x_65 = param;
+      if ((x_65.a == 2)) {
+        S const x_70 = param;
+        S x_71_1 = x_70;
+        x_71_1.a = 9;
+        S const x_71 = x_71_1;
+        param = x_71;
+      }
+      int const x_72 = param_1;
+      S const x_75 = param;
+      S x_76_1 = x_75;
+      x_76_1.b = (x_72 + 1);
+      S const x_76 = x_76_1;
+      param = x_76;
+      int const x_77 = param_1;
+      S const x_80 = param;
+      S x_81_1 = x_80;
+      x_81_1.c = (x_77 + 2);
+      S const x_81 = x_81_1;
+      param = x_81;
+      S const x_82 = param;
+      if ((x_82.b == 2)) {
+        S const x_87 = param;
+        S x_88_1 = x_87;
+        x_88_1.b = 7;
+        S const x_88 = x_88_1;
+        param = x_88;
+      }
+      S const x_89 = param;
+      S const x_91 = param;
+      S const x_94 = param;
+      x_43 = ((x_89.a + x_91.b) + x_94.c);
+      int const x_97 = x_43;
+      if ((x_97 == 12)) {
+        *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      } else {
+        *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      }
+    }
+    x_44 = true;
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+int func_struct_S_i1_i1_i11_i1_(thread S* const s, thread int* const x) {
+  int const x_103 = *(x);
+  (*(s)).a = x_103;
+  int const x_105 = (*(s)).a;
+  if ((x_105 == 2)) {
+    (*(s)).a = 9;
+  }
+  int const x_109 = *(x);
+  (*(s)).b = (x_109 + 1);
+  int const x_112 = *(x);
+  (*(s)).c = (x_112 + 2);
+  int const x_115 = (*(s)).b;
+  if ((x_115 == 2)) {
+    (*(s)).b = 7;
+  }
+  int const x_119 = (*(s)).a;
+  int const x_120 = (*(s)).b;
+  int const x_122 = (*(s)).c;
+  return ((x_119 + x_120) + x_122);
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..16fa1d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,274 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 174
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_43 "x_43"
+               OpName %x_44 "x_44"
+               OpName %S "S"
+               OpMemberName %S 0 "a"
+               OpMemberName %S 1 "b"
+               OpMemberName %S 2 "c"
+               OpName %arr "arr"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %x_50 "x_50"
+               OpName %x_64_1 "x_64_1"
+               OpName %x_71_1 "x_71_1"
+               OpName %x_76_1 "x_76_1"
+               OpName %x_81_1 "x_81_1"
+               OpName %x_88_1 "x_88_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_struct_S_i1_i1_i11_i1_ "func_struct_S_i1_i1_i11_i1_"
+               OpName %s "s"
+               OpName %x "x"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 4
+               OpMemberDecorate %S 2 Offset 8
+               OpDecorate %_arr_S_uint_2 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %23 = OpConstantNull %bool
+          %S = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_S_uint_2 = OpTypeArray %S %uint_2
+%_ptr_Function__arr_S_uint_2 = OpTypePointer Function %_arr_S_uint_2
+         %30 = OpConstantNull %_arr_S_uint_2
+%_ptr_Function_S = OpTypePointer Function %S
+         %33 = OpConstantNull %S
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %true = OpConstantTrue %bool
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+      %int_7 = OpConstant %int 7
+     %int_12 = OpConstant %int 12
+    %float_1 = OpConstant %float 1
+        %115 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %116 = OpTypeFunction %void %main_out
+        %128 = OpTypeFunction %int %_ptr_Function_S %_ptr_Function_int
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_43 = OpVariable %_ptr_Function_int Function %18
+       %x_44 = OpVariable %_ptr_Function_bool Function %23
+        %arr = OpVariable %_ptr_Function__arr_S_uint_2 Function %30
+      %param = OpVariable %_ptr_Function_S Function %33
+    %param_1 = OpVariable %_ptr_Function_int Function %18
+       %x_50 = OpVariable %_ptr_Function_int Function %18
+     %x_64_1 = OpVariable %_ptr_Function_S Function %33
+     %x_71_1 = OpVariable %_ptr_Function_S Function %33
+     %x_76_1 = OpVariable %_ptr_Function_S Function %33
+     %x_81_1 = OpVariable %_ptr_Function_S Function %33
+     %x_88_1 = OpVariable %_ptr_Function_S Function %33
+               OpStore %x_44 %false
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %43 = OpLoad %int %42
+               OpStore %x_50 %43
+         %44 = OpLoad %int %x_50
+         %45 = OpAccessChain %_ptr_Function_int %arr %44 %uint_0
+               OpStore %45 %int_2
+         %48 = OpAccessChain %_ptr_Function_int %arr %int_1 %uint_0
+         %49 = OpLoad %int %48
+         %50 = OpSLessThan %bool %49 %int_1
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpStore %x_44 %true
+               OpBranch %36
+         %53 = OpLabel
+         %57 = OpAccessChain %_ptr_Function_S %arr %int_1
+         %58 = OpLoad %S %57
+               OpStore %param %58
+         %60 = OpLoad %int %x_50
+         %59 = OpCopyObject %int %60
+         %61 = OpIAdd %int %int_2 %59
+               OpStore %param_1 %61
+         %62 = OpLoad %int %param_1
+         %63 = OpLoad %S %param
+               OpStore %x_64_1 %63
+         %65 = OpAccessChain %_ptr_Function_int %x_64_1 %uint_0
+               OpStore %65 %62
+         %66 = OpLoad %S %x_64_1
+               OpStore %param %66
+         %67 = OpLoad %S %param
+         %68 = OpCompositeExtract %int %67 0
+         %69 = OpIEqual %bool %68 %int_2
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %S %param
+               OpStore %x_71_1 %72
+         %74 = OpAccessChain %_ptr_Function_int %x_71_1 %uint_0
+               OpStore %74 %int_9
+         %76 = OpLoad %S %x_71_1
+               OpStore %param %76
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %int %param_1
+         %78 = OpLoad %S %param
+               OpStore %x_76_1 %78
+         %81 = OpAccessChain %_ptr_Function_int %x_76_1 %uint_1
+         %82 = OpIAdd %int %77 %int_1
+               OpStore %81 %82
+         %83 = OpLoad %S %x_76_1
+               OpStore %param %83
+         %84 = OpLoad %int %param_1
+         %85 = OpLoad %S %param
+               OpStore %x_81_1 %85
+         %87 = OpAccessChain %_ptr_Function_int %x_81_1 %uint_2
+         %88 = OpIAdd %int %84 %int_2
+               OpStore %87 %88
+         %89 = OpLoad %S %x_81_1
+               OpStore %param %89
+         %90 = OpLoad %S %param
+         %91 = OpCompositeExtract %int %90 1
+         %92 = OpIEqual %bool %91 %int_2
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+         %95 = OpLoad %S %param
+               OpStore %x_88_1 %95
+         %97 = OpAccessChain %_ptr_Function_int %x_88_1 %uint_1
+               OpStore %97 %int_7
+         %99 = OpLoad %S %x_88_1
+               OpStore %param %99
+               OpBranch %93
+         %93 = OpLabel
+        %100 = OpLoad %S %param
+        %101 = OpLoad %S %param
+        %102 = OpLoad %S %param
+        %103 = OpCompositeExtract %int %100 0
+        %104 = OpCompositeExtract %int %101 1
+        %105 = OpIAdd %int %103 %104
+        %106 = OpCompositeExtract %int %102 2
+        %107 = OpIAdd %int %105 %106
+               OpStore %x_43 %107
+        %108 = OpLoad %int %x_43
+        %110 = OpIEqual %bool %108 %int_12
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %113
+        %112 = OpLabel
+               OpStore %x_GLF_color %115
+               OpBranch %111
+        %113 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %111
+        %111 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+               OpStore %x_44 %true
+               OpBranch %36
+         %37 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %116
+%tint_symbol = OpFunctionParameter %main_out
+        %120 = OpLabel
+        %121 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %121
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %123 = OpLabel
+        %124 = OpFunctionCall %void %main_1
+        %126 = OpLoad %v4float %x_GLF_color
+        %127 = OpCompositeConstruct %main_out %126
+        %125 = OpFunctionCall %void %tint_symbol_2 %127
+               OpReturn
+               OpFunctionEnd
+%func_struct_S_i1_i1_i11_i1_ = OpFunction %int None %128
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+        %132 = OpLabel
+        %134 = OpLoad %int %x
+        %136 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %136 %134
+        %138 = OpAccessChain %_ptr_Function_int %s %uint_0
+        %139 = OpLoad %int %138
+        %140 = OpIEqual %bool %139 %int_2
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+        %144 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %144 %int_9
+               OpBranch %141
+        %141 = OpLabel
+        %146 = OpLoad %int %x
+        %148 = OpAccessChain %_ptr_Function_int %s %uint_1
+        %149 = OpIAdd %int %146 %int_1
+               OpStore %148 %149
+        %151 = OpLoad %int %x
+        %153 = OpAccessChain %_ptr_Function_int %s %uint_2
+        %154 = OpIAdd %int %151 %int_2
+               OpStore %153 %154
+        %156 = OpAccessChain %_ptr_Function_int %s %uint_1
+        %157 = OpLoad %int %156
+        %158 = OpIEqual %bool %157 %int_2
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %159
+        %160 = OpLabel
+        %162 = OpAccessChain %_ptr_Function_int %s %uint_1
+               OpStore %162 %int_7
+               OpBranch %159
+        %159 = OpLabel
+        %164 = OpAccessChain %_ptr_Function_int %s %uint_0
+        %165 = OpLoad %int %164
+        %167 = OpAccessChain %_ptr_Function_int %s %uint_1
+        %168 = OpLoad %int %167
+        %170 = OpAccessChain %_ptr_Function_int %s %uint_2
+        %171 = OpLoad %int %170
+        %172 = OpIAdd %int %165 %168
+        %173 = OpIAdd %int %172 %171
+               OpReturnValue %173
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d664615
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,122 @@
+struct S {
+  a : i32;
+  b : i32;
+  c : i32;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_43 : i32;
+  var x_44 : bool = false;
+  var arr : array<S, 2>;
+  var param : S;
+  var param_1 : i32;
+  loop {
+    var x_50 : i32;
+    x_50 = x_10.one;
+    arr[x_50].a = 2;
+    let x_53 : i32 = arr[1].a;
+    if ((x_53 < 1)) {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      x_44 = true;
+      break;
+    } else {
+      let x_60 : S = arr[1];
+      param = x_60;
+      param_1 = (2 + bitcast<i32>(x_50));
+      let x_61 : i32 = param_1;
+      let x_62 : ptr<function, i32> = &(param.a);
+      let x_63 : S = param;
+      var x_64_1 : S = x_63;
+      x_64_1.a = x_61;
+      let x_64 : S = x_64_1;
+      param = x_64;
+      let x_65 : S = param;
+      if ((x_65.a == 2)) {
+        let x_70 : S = param;
+        var x_71_1 : S = x_70;
+        x_71_1.a = 9;
+        let x_71 : S = x_71_1;
+        param = x_71;
+      }
+      let x_72 : i32 = param_1;
+      let x_74 : ptr<function, i32> = &(param.b);
+      let x_75 : S = param;
+      var x_76_1 : S = x_75;
+      x_76_1.b = (x_72 + 1);
+      let x_76 : S = x_76_1;
+      param = x_76;
+      let x_77 : i32 = param_1;
+      let x_79 : ptr<function, i32> = &(param.c);
+      let x_80 : S = param;
+      var x_81_1 : S = x_80;
+      x_81_1.c = (x_77 + 2);
+      let x_81 : S = x_81_1;
+      param = x_81;
+      let x_82 : S = param;
+      if ((x_82.b == 2)) {
+        let x_87 : S = param;
+        var x_88_1 : S = x_87;
+        x_88_1.b = 7;
+        let x_88 : S = x_88_1;
+        param = x_88;
+      }
+      let x_89 : S = param;
+      let x_91 : S = param;
+      let x_94 : S = param;
+      x_43 = ((x_89.a + x_91.b) + x_94.c);
+      let x_97 : i32 = x_43;
+      if ((x_97 == 12)) {
+        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      } else {
+        x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      }
+    }
+    x_44 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_struct_S_i1_i1_i11_i1_(s : ptr<function, S>, x : ptr<function, i32>) -> i32 {
+  let x_103 : i32 = *(x);
+  let x_104 : ptr<function, i32> = &((*(s)).a);
+  *(x_104) = x_103;
+  let x_105 : i32 = *(x_104);
+  if ((x_105 == 2)) {
+    *(x_104) = 9;
+  }
+  let x_109 : i32 = *(x);
+  let x_111 : ptr<function, i32> = &((*(s)).b);
+  *(x_111) = (x_109 + 1);
+  let x_112 : i32 = *(x);
+  let x_114 : ptr<function, i32> = &((*(s)).c);
+  *(x_114) = (x_112 + 2);
+  let x_115 : i32 = *(x_111);
+  if ((x_115 == 2)) {
+    *(x_111) = 7;
+  }
+  let x_119 : i32 = *(x_104);
+  let x_120 : i32 = *(x_111);
+  let x_122 : i32 = *(x_114);
+  return ((x_119 + x_120) + x_122);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
new file mode 100644
index 0000000..d664615
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
@@ -0,0 +1,122 @@
+struct S {
+  a : i32;
+  b : i32;
+  c : i32;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_43 : i32;
+  var x_44 : bool = false;
+  var arr : array<S, 2>;
+  var param : S;
+  var param_1 : i32;
+  loop {
+    var x_50 : i32;
+    x_50 = x_10.one;
+    arr[x_50].a = 2;
+    let x_53 : i32 = arr[1].a;
+    if ((x_53 < 1)) {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      x_44 = true;
+      break;
+    } else {
+      let x_60 : S = arr[1];
+      param = x_60;
+      param_1 = (2 + bitcast<i32>(x_50));
+      let x_61 : i32 = param_1;
+      let x_62 : ptr<function, i32> = &(param.a);
+      let x_63 : S = param;
+      var x_64_1 : S = x_63;
+      x_64_1.a = x_61;
+      let x_64 : S = x_64_1;
+      param = x_64;
+      let x_65 : S = param;
+      if ((x_65.a == 2)) {
+        let x_70 : S = param;
+        var x_71_1 : S = x_70;
+        x_71_1.a = 9;
+        let x_71 : S = x_71_1;
+        param = x_71;
+      }
+      let x_72 : i32 = param_1;
+      let x_74 : ptr<function, i32> = &(param.b);
+      let x_75 : S = param;
+      var x_76_1 : S = x_75;
+      x_76_1.b = (x_72 + 1);
+      let x_76 : S = x_76_1;
+      param = x_76;
+      let x_77 : i32 = param_1;
+      let x_79 : ptr<function, i32> = &(param.c);
+      let x_80 : S = param;
+      var x_81_1 : S = x_80;
+      x_81_1.c = (x_77 + 2);
+      let x_81 : S = x_81_1;
+      param = x_81;
+      let x_82 : S = param;
+      if ((x_82.b == 2)) {
+        let x_87 : S = param;
+        var x_88_1 : S = x_87;
+        x_88_1.b = 7;
+        let x_88 : S = x_88_1;
+        param = x_88;
+      }
+      let x_89 : S = param;
+      let x_91 : S = param;
+      let x_94 : S = param;
+      x_43 = ((x_89.a + x_91.b) + x_94.c);
+      let x_97 : i32 = x_43;
+      if ((x_97 == 12)) {
+        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      } else {
+        x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      }
+    }
+    x_44 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_struct_S_i1_i1_i11_i1_(s : ptr<function, S>, x : ptr<function, i32>) -> i32 {
+  let x_103 : i32 = *(x);
+  let x_104 : ptr<function, i32> = &((*(s)).a);
+  *(x_104) = x_103;
+  let x_105 : i32 = *(x_104);
+  if ((x_105 == 2)) {
+    *(x_104) = 9;
+  }
+  let x_109 : i32 = *(x);
+  let x_111 : ptr<function, i32> = &((*(s)).b);
+  *(x_111) = (x_109 + 1);
+  let x_112 : i32 = *(x);
+  let x_114 : ptr<function, i32> = &((*(s)).c);
+  *(x_114) = (x_112 + 2);
+  let x_115 : i32 = *(x_111);
+  if ((x_115 == 2)) {
+    *(x_111) = 7;
+  }
+  let x_119 : i32 = *(x_104);
+  let x_120 : i32 = *(x_111);
+  let x_122 : i32 = *(x_114);
+  return ((x_119 + x_120) + x_122);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9efb42d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,99 @@
+struct S {
+  int a;
+  int b;
+  int c;
+};
+
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_43 = 0;
+  bool x_44 = false;
+  S arr[2] = (S[2])0;
+  S param = (S)0;
+  int param_1 = 0;
+  while (true) {
+    int x_50 = 0;
+    x_50 = asint(x_10[0].x);
+    arr[x_50].a = 2;
+    const int x_53 = arr[1].a;
+    if ((x_53 < 1)) {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      x_44 = true;
+      break;
+    } else {
+      const S x_60 = arr[1];
+      param = x_60;
+      param_1 = (2 + asint(x_50));
+      const int x_61 = param_1;
+      S x_64_1 = param;
+      x_64_1.a = x_61;
+      param = x_64_1;
+      if ((param.a == 2)) {
+        S x_71_1 = param;
+        x_71_1.a = 9;
+        param = x_71_1;
+      }
+      const int x_72 = param_1;
+      S x_76_1 = param;
+      x_76_1.b = (x_72 + 1);
+      param = x_76_1;
+      const int x_77 = param_1;
+      S x_81_1 = param;
+      x_81_1.c = (x_77 + 2);
+      param = x_81_1;
+      if ((param.b == 2)) {
+        S x_88_1 = param;
+        x_88_1.b = 7;
+        param = x_88_1;
+      }
+      x_43 = ((param.a + param.b) + param.c);
+      if ((x_43 == 12)) {
+        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_44 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+int func_struct_S_i1_i1_i11_i1_(inout S s, inout int x) {
+  const int x_103 = x;
+  s.a = x_103;
+  const int x_105 = s.a;
+  if ((x_105 == 2)) {
+    s.a = 9;
+  }
+  const int x_109 = x;
+  s.b = (x_109 + 1);
+  const int x_112 = x;
+  s.c = (x_112 + 2);
+  const int x_115 = s.b;
+  if ((x_115 == 2)) {
+    s.b = 7;
+  }
+  const int x_119 = s.a;
+  const int x_120 = s.b;
+  const int x_122 = s.c;
+  return ((x_119 + x_120) + x_122);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..91c59ac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.msl
@@ -0,0 +1,120 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int a;
+  int b;
+  int c;
+};
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper {
+  S arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_4) {
+  int x_43 = 0;
+  bool x_44 = false;
+  tint_array_wrapper arr = {};
+  S param = {};
+  int param_1 = 0;
+  while (true) {
+    int x_50 = 0;
+    x_50 = x_10.one;
+    arr.arr[x_50].a = 2;
+    int const x_53 = arr.arr[1].a;
+    if ((x_53 < 1)) {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      x_44 = true;
+      break;
+    } else {
+      S const x_60 = arr.arr[1];
+      param = x_60;
+      param_1 = (2 + as_type<int>(x_50));
+      int const x_61 = param_1;
+      S const x_63 = param;
+      S x_64_1 = x_63;
+      x_64_1.a = x_61;
+      S const x_64 = x_64_1;
+      param = x_64;
+      S const x_65 = param;
+      if ((x_65.a == 2)) {
+        S const x_70 = param;
+        S x_71_1 = x_70;
+        x_71_1.a = 9;
+        S const x_71 = x_71_1;
+        param = x_71;
+      }
+      int const x_72 = param_1;
+      S const x_75 = param;
+      S x_76_1 = x_75;
+      x_76_1.b = (x_72 + 1);
+      S const x_76 = x_76_1;
+      param = x_76;
+      int const x_77 = param_1;
+      S const x_80 = param;
+      S x_81_1 = x_80;
+      x_81_1.c = (x_77 + 2);
+      S const x_81 = x_81_1;
+      param = x_81;
+      S const x_82 = param;
+      if ((x_82.b == 2)) {
+        S const x_87 = param;
+        S x_88_1 = x_87;
+        x_88_1.b = 7;
+        S const x_88 = x_88_1;
+        param = x_88;
+      }
+      S const x_89 = param;
+      S const x_91 = param;
+      S const x_94 = param;
+      x_43 = ((x_89.a + x_91.b) + x_94.c);
+      int const x_97 = x_43;
+      if ((x_97 == 12)) {
+        *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      } else {
+        *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      }
+    }
+    x_44 = true;
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+int func_struct_S_i1_i1_i11_i1_(thread S* const s, thread int* const x) {
+  int const x_103 = *(x);
+  (*(s)).a = x_103;
+  int const x_105 = (*(s)).a;
+  if ((x_105 == 2)) {
+    (*(s)).a = 9;
+  }
+  int const x_109 = *(x);
+  (*(s)).b = (x_109 + 1);
+  int const x_112 = *(x);
+  (*(s)).c = (x_112 + 2);
+  int const x_115 = (*(s)).b;
+  if ((x_115 == 2)) {
+    (*(s)).b = 7;
+  }
+  int const x_119 = (*(s)).a;
+  int const x_120 = (*(s)).b;
+  int const x_122 = (*(s)).c;
+  return ((x_119 + x_120) + x_122);
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..16fa1d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,274 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 174
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_43 "x_43"
+               OpName %x_44 "x_44"
+               OpName %S "S"
+               OpMemberName %S 0 "a"
+               OpMemberName %S 1 "b"
+               OpMemberName %S 2 "c"
+               OpName %arr "arr"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %x_50 "x_50"
+               OpName %x_64_1 "x_64_1"
+               OpName %x_71_1 "x_71_1"
+               OpName %x_76_1 "x_76_1"
+               OpName %x_81_1 "x_81_1"
+               OpName %x_88_1 "x_88_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_struct_S_i1_i1_i11_i1_ "func_struct_S_i1_i1_i11_i1_"
+               OpName %s "s"
+               OpName %x "x"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 4
+               OpMemberDecorate %S 2 Offset 8
+               OpDecorate %_arr_S_uint_2 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %23 = OpConstantNull %bool
+          %S = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_S_uint_2 = OpTypeArray %S %uint_2
+%_ptr_Function__arr_S_uint_2 = OpTypePointer Function %_arr_S_uint_2
+         %30 = OpConstantNull %_arr_S_uint_2
+%_ptr_Function_S = OpTypePointer Function %S
+         %33 = OpConstantNull %S
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %true = OpConstantTrue %bool
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+      %int_7 = OpConstant %int 7
+     %int_12 = OpConstant %int 12
+    %float_1 = OpConstant %float 1
+        %115 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %116 = OpTypeFunction %void %main_out
+        %128 = OpTypeFunction %int %_ptr_Function_S %_ptr_Function_int
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_43 = OpVariable %_ptr_Function_int Function %18
+       %x_44 = OpVariable %_ptr_Function_bool Function %23
+        %arr = OpVariable %_ptr_Function__arr_S_uint_2 Function %30
+      %param = OpVariable %_ptr_Function_S Function %33
+    %param_1 = OpVariable %_ptr_Function_int Function %18
+       %x_50 = OpVariable %_ptr_Function_int Function %18
+     %x_64_1 = OpVariable %_ptr_Function_S Function %33
+     %x_71_1 = OpVariable %_ptr_Function_S Function %33
+     %x_76_1 = OpVariable %_ptr_Function_S Function %33
+     %x_81_1 = OpVariable %_ptr_Function_S Function %33
+     %x_88_1 = OpVariable %_ptr_Function_S Function %33
+               OpStore %x_44 %false
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %43 = OpLoad %int %42
+               OpStore %x_50 %43
+         %44 = OpLoad %int %x_50
+         %45 = OpAccessChain %_ptr_Function_int %arr %44 %uint_0
+               OpStore %45 %int_2
+         %48 = OpAccessChain %_ptr_Function_int %arr %int_1 %uint_0
+         %49 = OpLoad %int %48
+         %50 = OpSLessThan %bool %49 %int_1
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpStore %x_44 %true
+               OpBranch %36
+         %53 = OpLabel
+         %57 = OpAccessChain %_ptr_Function_S %arr %int_1
+         %58 = OpLoad %S %57
+               OpStore %param %58
+         %60 = OpLoad %int %x_50
+         %59 = OpCopyObject %int %60
+         %61 = OpIAdd %int %int_2 %59
+               OpStore %param_1 %61
+         %62 = OpLoad %int %param_1
+         %63 = OpLoad %S %param
+               OpStore %x_64_1 %63
+         %65 = OpAccessChain %_ptr_Function_int %x_64_1 %uint_0
+               OpStore %65 %62
+         %66 = OpLoad %S %x_64_1
+               OpStore %param %66
+         %67 = OpLoad %S %param
+         %68 = OpCompositeExtract %int %67 0
+         %69 = OpIEqual %bool %68 %int_2
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %S %param
+               OpStore %x_71_1 %72
+         %74 = OpAccessChain %_ptr_Function_int %x_71_1 %uint_0
+               OpStore %74 %int_9
+         %76 = OpLoad %S %x_71_1
+               OpStore %param %76
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %int %param_1
+         %78 = OpLoad %S %param
+               OpStore %x_76_1 %78
+         %81 = OpAccessChain %_ptr_Function_int %x_76_1 %uint_1
+         %82 = OpIAdd %int %77 %int_1
+               OpStore %81 %82
+         %83 = OpLoad %S %x_76_1
+               OpStore %param %83
+         %84 = OpLoad %int %param_1
+         %85 = OpLoad %S %param
+               OpStore %x_81_1 %85
+         %87 = OpAccessChain %_ptr_Function_int %x_81_1 %uint_2
+         %88 = OpIAdd %int %84 %int_2
+               OpStore %87 %88
+         %89 = OpLoad %S %x_81_1
+               OpStore %param %89
+         %90 = OpLoad %S %param
+         %91 = OpCompositeExtract %int %90 1
+         %92 = OpIEqual %bool %91 %int_2
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+         %95 = OpLoad %S %param
+               OpStore %x_88_1 %95
+         %97 = OpAccessChain %_ptr_Function_int %x_88_1 %uint_1
+               OpStore %97 %int_7
+         %99 = OpLoad %S %x_88_1
+               OpStore %param %99
+               OpBranch %93
+         %93 = OpLabel
+        %100 = OpLoad %S %param
+        %101 = OpLoad %S %param
+        %102 = OpLoad %S %param
+        %103 = OpCompositeExtract %int %100 0
+        %104 = OpCompositeExtract %int %101 1
+        %105 = OpIAdd %int %103 %104
+        %106 = OpCompositeExtract %int %102 2
+        %107 = OpIAdd %int %105 %106
+               OpStore %x_43 %107
+        %108 = OpLoad %int %x_43
+        %110 = OpIEqual %bool %108 %int_12
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %113
+        %112 = OpLabel
+               OpStore %x_GLF_color %115
+               OpBranch %111
+        %113 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %111
+        %111 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+               OpStore %x_44 %true
+               OpBranch %36
+         %37 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %116
+%tint_symbol = OpFunctionParameter %main_out
+        %120 = OpLabel
+        %121 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %121
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %123 = OpLabel
+        %124 = OpFunctionCall %void %main_1
+        %126 = OpLoad %v4float %x_GLF_color
+        %127 = OpCompositeConstruct %main_out %126
+        %125 = OpFunctionCall %void %tint_symbol_2 %127
+               OpReturn
+               OpFunctionEnd
+%func_struct_S_i1_i1_i11_i1_ = OpFunction %int None %128
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+        %132 = OpLabel
+        %134 = OpLoad %int %x
+        %136 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %136 %134
+        %138 = OpAccessChain %_ptr_Function_int %s %uint_0
+        %139 = OpLoad %int %138
+        %140 = OpIEqual %bool %139 %int_2
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+        %144 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %144 %int_9
+               OpBranch %141
+        %141 = OpLabel
+        %146 = OpLoad %int %x
+        %148 = OpAccessChain %_ptr_Function_int %s %uint_1
+        %149 = OpIAdd %int %146 %int_1
+               OpStore %148 %149
+        %151 = OpLoad %int %x
+        %153 = OpAccessChain %_ptr_Function_int %s %uint_2
+        %154 = OpIAdd %int %151 %int_2
+               OpStore %153 %154
+        %156 = OpAccessChain %_ptr_Function_int %s %uint_1
+        %157 = OpLoad %int %156
+        %158 = OpIEqual %bool %157 %int_2
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %159
+        %160 = OpLabel
+        %162 = OpAccessChain %_ptr_Function_int %s %uint_1
+               OpStore %162 %int_7
+               OpBranch %159
+        %159 = OpLabel
+        %164 = OpAccessChain %_ptr_Function_int %s %uint_0
+        %165 = OpLoad %int %164
+        %167 = OpAccessChain %_ptr_Function_int %s %uint_1
+        %168 = OpLoad %int %167
+        %170 = OpAccessChain %_ptr_Function_int %s %uint_2
+        %171 = OpLoad %int %170
+        %172 = OpIAdd %int %165 %168
+        %173 = OpIAdd %int %172 %171
+               OpReturnValue %173
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d664615
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,122 @@
+struct S {
+  a : i32;
+  b : i32;
+  c : i32;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_43 : i32;
+  var x_44 : bool = false;
+  var arr : array<S, 2>;
+  var param : S;
+  var param_1 : i32;
+  loop {
+    var x_50 : i32;
+    x_50 = x_10.one;
+    arr[x_50].a = 2;
+    let x_53 : i32 = arr[1].a;
+    if ((x_53 < 1)) {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      x_44 = true;
+      break;
+    } else {
+      let x_60 : S = arr[1];
+      param = x_60;
+      param_1 = (2 + bitcast<i32>(x_50));
+      let x_61 : i32 = param_1;
+      let x_62 : ptr<function, i32> = &(param.a);
+      let x_63 : S = param;
+      var x_64_1 : S = x_63;
+      x_64_1.a = x_61;
+      let x_64 : S = x_64_1;
+      param = x_64;
+      let x_65 : S = param;
+      if ((x_65.a == 2)) {
+        let x_70 : S = param;
+        var x_71_1 : S = x_70;
+        x_71_1.a = 9;
+        let x_71 : S = x_71_1;
+        param = x_71;
+      }
+      let x_72 : i32 = param_1;
+      let x_74 : ptr<function, i32> = &(param.b);
+      let x_75 : S = param;
+      var x_76_1 : S = x_75;
+      x_76_1.b = (x_72 + 1);
+      let x_76 : S = x_76_1;
+      param = x_76;
+      let x_77 : i32 = param_1;
+      let x_79 : ptr<function, i32> = &(param.c);
+      let x_80 : S = param;
+      var x_81_1 : S = x_80;
+      x_81_1.c = (x_77 + 2);
+      let x_81 : S = x_81_1;
+      param = x_81;
+      let x_82 : S = param;
+      if ((x_82.b == 2)) {
+        let x_87 : S = param;
+        var x_88_1 : S = x_87;
+        x_88_1.b = 7;
+        let x_88 : S = x_88_1;
+        param = x_88;
+      }
+      let x_89 : S = param;
+      let x_91 : S = param;
+      let x_94 : S = param;
+      x_43 = ((x_89.a + x_91.b) + x_94.c);
+      let x_97 : i32 = x_43;
+      if ((x_97 == 12)) {
+        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      } else {
+        x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      }
+    }
+    x_44 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_struct_S_i1_i1_i11_i1_(s : ptr<function, S>, x : ptr<function, i32>) -> i32 {
+  let x_103 : i32 = *(x);
+  let x_104 : ptr<function, i32> = &((*(s)).a);
+  *(x_104) = x_103;
+  let x_105 : i32 = *(x_104);
+  if ((x_105 == 2)) {
+    *(x_104) = 9;
+  }
+  let x_109 : i32 = *(x);
+  let x_111 : ptr<function, i32> = &((*(s)).b);
+  *(x_111) = (x_109 + 1);
+  let x_112 : i32 = *(x);
+  let x_114 : ptr<function, i32> = &((*(s)).c);
+  *(x_114) = (x_112 + 2);
+  let x_115 : i32 = *(x_111);
+  if ((x_115 == 2)) {
+    *(x_111) = 7;
+  }
+  let x_119 : i32 = *(x_104);
+  let x_120 : i32 = *(x_111);
+  let x_122 : i32 = *(x_114);
+  return ((x_119 + x_120) + x_122);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm
new file mode 100644
index 0000000..e02ce233
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm
@@ -0,0 +1,83 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_vf2_ "func(vf2;"
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %_ ""
+               OpName %f "f"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %float %_ptr_Function_v2float
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_5 = OpConstant %float 5
+         %27 = OpConstantComposite %v2float %float_1 %float_1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %32 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %11
+         %33 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_v2float Function
+               OpStore %param %27
+         %34 = OpFunctionCall %float %func_vf2_ %param
+               OpStore %f %34
+         %35 = OpLoad %float %f
+         %36 = OpFOrdEqual %bool %35 %float_5
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpStore %_GLF_color %31
+               OpBranch %37
+         %39 = OpLabel
+               OpStore %_GLF_color %32
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+  %func_vf2_ = OpFunction %float None %15
+          %v = OpFunctionParameter %_ptr_Function_v2float
+         %40 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Function_float %v %uint_0
+               OpStore %43 %42
+         %44 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %45 = OpLoad %float %44
+         %46 = OpFOrdLessThan %bool %45 %float_1
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+               OpReturnValue %float_1
+         %47 = OpLabel
+               OpReturnValue %float_5
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..52a5683
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,42 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_vf2_(inout float2 v) {
+  const float x_42 = asfloat(x_7[0].x);
+  v.x = x_42;
+  const float x_45 = v.y;
+  if ((x_45 < 1.0f)) {
+    return 1.0f;
+  }
+  return 5.0f;
+}
+
+void main_1() {
+  float f = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  param = float2(1.0f, 1.0f);
+  const float x_34 = func_vf2_(param);
+  f = x_34;
+  if ((f == 5.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..84a3cf6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_vf2_(constant buf0& x_7, thread float2* const v) {
+  float const x_42 = x_7.two;
+  (*(v)).x = x_42;
+  float const x_45 = (*(v)).y;
+  if ((x_45 < 1.0f)) {
+    return 1.0f;
+  }
+  return 5.0f;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float2 param = 0.0f;
+  param = float2(1.0f, 1.0f);
+  float const x_34 = func_vf2_(x_7, &(param));
+  f = x_34;
+  float const x_35 = f;
+  if ((x_35 == 5.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0216afc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_vf2_ "func_vf2_"
+               OpName %v "v"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %11 = OpTypeFunction %float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_5 = OpConstant %float 5
+       %void = OpTypeVoid
+         %35 = OpTypeFunction %void
+         %40 = OpConstantNull %float
+         %42 = OpConstantNull %v2float
+         %43 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %53 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %54 = OpTypeFunction %void %main_out
+  %func_vf2_ = OpFunction %float None %11
+          %v = OpFunctionParameter %_ptr_Function_v2float
+         %16 = OpLabel
+         %20 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %21 = OpLoad %float %20
+         %24 = OpAccessChain %_ptr_Function_float %v %uint_0
+               OpStore %24 %21
+         %27 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %28 = OpLoad %float %27
+         %30 = OpFOrdLessThan %bool %28 %float_1
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+               OpReturnValue %float_1
+         %32 = OpLabel
+               OpReturnValue %float_5
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %35
+         %38 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %40
+      %param = OpVariable %_ptr_Function_v2float Function %42
+               OpStore %param %43
+         %44 = OpFunctionCall %float %func_vf2_ %param
+               OpStore %f %44
+         %46 = OpLoad %float %f
+         %47 = OpFOrdEqual %bool %46 %float_5
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+               OpStore %x_GLF_color %52
+               OpBranch %48
+         %50 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %48
+         %48 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %54
+%tint_symbol = OpFunctionParameter %main_out
+         %58 = OpLabel
+         %59 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %59
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %35
+         %61 = OpLabel
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_2 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f09a1ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  two : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_vf2_(v : ptr<function, vec2<f32>>) -> f32 {
+  let x_42 : f32 = x_7.two;
+  (*(v)).x = x_42;
+  let x_45 : f32 = (*(v)).y;
+  if ((x_45 < 1.0)) {
+    return 1.0;
+  }
+  return 5.0;
+}
+
+fn main_1() {
+  var f : f32;
+  var param : vec2<f32>;
+  param = vec2<f32>(1.0, 1.0);
+  let x_34 : f32 = func_vf2_(&(param));
+  f = x_34;
+  let x_35 : f32 = f;
+  if ((x_35 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
new file mode 100644
index 0000000..f09a1ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  two : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_vf2_(v : ptr<function, vec2<f32>>) -> f32 {
+  let x_42 : f32 = x_7.two;
+  (*(v)).x = x_42;
+  let x_45 : f32 = (*(v)).y;
+  if ((x_45 < 1.0)) {
+    return 1.0;
+  }
+  return 5.0;
+}
+
+fn main_1() {
+  var f : f32;
+  var param : vec2<f32>;
+  param = vec2<f32>(1.0, 1.0);
+  let x_34 : f32 = func_vf2_(&(param));
+  f = x_34;
+  let x_35 : f32 = f;
+  if ((x_35 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..52a5683
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,42 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_vf2_(inout float2 v) {
+  const float x_42 = asfloat(x_7[0].x);
+  v.x = x_42;
+  const float x_45 = v.y;
+  if ((x_45 < 1.0f)) {
+    return 1.0f;
+  }
+  return 5.0f;
+}
+
+void main_1() {
+  float f = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  param = float2(1.0f, 1.0f);
+  const float x_34 = func_vf2_(param);
+  f = x_34;
+  if ((f == 5.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..84a3cf6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_vf2_(constant buf0& x_7, thread float2* const v) {
+  float const x_42 = x_7.two;
+  (*(v)).x = x_42;
+  float const x_45 = (*(v)).y;
+  if ((x_45 < 1.0f)) {
+    return 1.0f;
+  }
+  return 5.0f;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float2 param = 0.0f;
+  param = float2(1.0f, 1.0f);
+  float const x_34 = func_vf2_(x_7, &(param));
+  f = x_34;
+  float const x_35 = f;
+  if ((x_35 == 5.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0216afc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_vf2_ "func_vf2_"
+               OpName %v "v"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %11 = OpTypeFunction %float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_5 = OpConstant %float 5
+       %void = OpTypeVoid
+         %35 = OpTypeFunction %void
+         %40 = OpConstantNull %float
+         %42 = OpConstantNull %v2float
+         %43 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %53 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %54 = OpTypeFunction %void %main_out
+  %func_vf2_ = OpFunction %float None %11
+          %v = OpFunctionParameter %_ptr_Function_v2float
+         %16 = OpLabel
+         %20 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %21 = OpLoad %float %20
+         %24 = OpAccessChain %_ptr_Function_float %v %uint_0
+               OpStore %24 %21
+         %27 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %28 = OpLoad %float %27
+         %30 = OpFOrdLessThan %bool %28 %float_1
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+               OpReturnValue %float_1
+         %32 = OpLabel
+               OpReturnValue %float_5
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %35
+         %38 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %40
+      %param = OpVariable %_ptr_Function_v2float Function %42
+               OpStore %param %43
+         %44 = OpFunctionCall %float %func_vf2_ %param
+               OpStore %f %44
+         %46 = OpLoad %float %f
+         %47 = OpFOrdEqual %bool %46 %float_5
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+               OpStore %x_GLF_color %52
+               OpBranch %48
+         %50 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %48
+         %48 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %54
+%tint_symbol = OpFunctionParameter %main_out
+         %58 = OpLabel
+         %59 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %59
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %35
+         %61 = OpLabel
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_2 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f09a1ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  two : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_vf2_(v : ptr<function, vec2<f32>>) -> f32 {
+  let x_42 : f32 = x_7.two;
+  (*(v)).x = x_42;
+  let x_45 : f32 = (*(v)).y;
+  if ((x_45 < 1.0)) {
+    return 1.0;
+  }
+  return 5.0;
+}
+
+fn main_1() {
+  var f : f32;
+  var param : vec2<f32>;
+  param = vec2<f32>(1.0, 1.0);
+  let x_34 : f32 = func_vf2_(&(param));
+  f = x_34;
+  let x_35 : f32 = f;
+  if ((x_35 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm
new file mode 100644
index 0000000..6b79715
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm
@@ -0,0 +1,88 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %b "b"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %11 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_2 = OpConstant %float 2
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+      %false = OpConstantFalse %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %25 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %26 = OpLabel
+         %27 = OpFunctionCall %float %func_
+         %28 = OpFOrdEqual %bool %27 %float_1
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %31
+         %30 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %float None %11
+         %32 = OpLabel
+          %b = OpVariable %_ptr_Function_float Function
+               OpStore %b %float_2
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpPhi %float %float_2 %32 %float_1 %35
+               OpLoopMerge %36 %35 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %39 = OpLoad %float %38
+         %40 = OpFOrdEqual %bool %39 %float_0
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpBranch %36
+         %41 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %44 = OpLoad %float %43
+         %45 = OpFOrdEqual %bool %44 %float_0
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpReturnValue %float_1
+         %46 = OpLabel
+               OpStore %b %float_1
+               OpBranch %35
+         %35 = OpLabel
+               OpBranchConditional %false %33 %36
+         %36 = OpLabel
+         %48 = OpPhi %float %34 %42 %float_1 %35
+               OpReturnValue %48
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..be4003a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,59 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  float b = 0.0f;
+  float x_34 = 0.0f;
+  float x_34_phi = 0.0f;
+  float x_48_phi = 0.0f;
+  b = 2.0f;
+  x_34_phi = 2.0f;
+  while (true) {
+    x_34 = x_34_phi;
+    const float x_39 = asfloat(x_7[0].x);
+    if ((x_39 == 0.0f)) {
+      x_48_phi = x_34;
+      break;
+    }
+    const float x_44 = asfloat(x_7[0].x);
+    if ((x_44 == 0.0f)) {
+      return 1.0f;
+    }
+    b = 1.0f;
+    {
+      x_34_phi = 1.0f;
+      x_48_phi = 1.0f;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return x_48_phi;
+}
+
+void main_1() {
+  const float x_27 = func_();
+  if ((x_27 == 1.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8114c84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(constant buf0& x_7) {
+  float b = 0.0f;
+  float x_34 = 0.0f;
+  float x_34_phi = 0.0f;
+  float x_48_phi = 0.0f;
+  b = 2.0f;
+  x_34_phi = 2.0f;
+  while (true) {
+    x_34 = x_34_phi;
+    float const x_39 = x_7.three;
+    if ((x_39 == 0.0f)) {
+      x_48_phi = x_34;
+      break;
+    }
+    float const x_44 = x_7.three;
+    if ((x_44 == 0.0f)) {
+      return 1.0f;
+    }
+    b = 1.0f;
+    {
+      x_34_phi = 1.0f;
+      x_48_phi = 1.0f;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_48 = x_48_phi;
+  return x_48;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float const x_27 = func_(x_7);
+  if ((x_27 == 1.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..22d860b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,144 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %b "b"
+               OpName %x_34 "x_34"
+               OpName %x_34_phi "x_34_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+         %11 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpConstantNull %float
+    %float_2 = OpConstant %float 2
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+      %false = OpConstantFalse %bool
+       %void = OpTypeVoid
+         %48 = OpTypeFunction %void
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %58 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %59 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %11
+         %13 = OpLabel
+          %b = OpVariable %_ptr_Function_float Function %16
+       %x_34 = OpVariable %_ptr_Function_float Function %16
+   %x_34_phi = OpVariable %_ptr_Function_float Function %16
+   %x_48_phi = OpVariable %_ptr_Function_float Function %16
+               OpStore %b %float_2
+               OpStore %x_34_phi %float_2
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %float %x_34_phi
+               OpStore %x_34 %25
+         %29 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpFOrdEqual %bool %30 %float_0
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %34
+         %35 = OpLabel
+         %36 = OpLoad %float %x_34
+               OpStore %x_48_phi %36
+               OpBranch %22
+         %34 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdEqual %bool %38 %float_0
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+               OpReturnValue %float_1
+         %40 = OpLabel
+               OpStore %b %float_1
+               OpBranch %23
+         %23 = OpLabel
+               OpStore %x_34_phi %float_1
+               OpStore %x_48_phi %float_1
+               OpSelectionMerge %44 None
+               OpBranchConditional %false %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %22
+         %44 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+         %47 = OpLoad %float %x_48_phi
+               OpReturnValue %47
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %48
+         %51 = OpLabel
+         %52 = OpFunctionCall %float %func_
+         %53 = OpFOrdEqual %bool %52 %float_1
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %54
+         %56 = OpLabel
+               OpStore %x_GLF_color %58
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %59
+%tint_symbol = OpFunctionParameter %main_out
+         %63 = OpLabel
+         %64 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %48
+         %66 = OpLabel
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 23[%23] is not post dominated by the back-edge block 44[%44]
+  %44 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6a9c3b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,62 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var b : f32;
+  var x_34 : f32;
+  var x_34_phi : f32;
+  var x_48_phi : f32;
+  b = 2.0;
+  x_34_phi = 2.0;
+  loop {
+    x_34 = x_34_phi;
+    let x_39 : f32 = x_7.three;
+    if ((x_39 == 0.0)) {
+      x_48_phi = x_34;
+      break;
+    }
+    let x_44 : f32 = x_7.three;
+    if ((x_44 == 0.0)) {
+      return 1.0;
+    }
+    b = 1.0;
+
+    continuing {
+      x_34_phi = 1.0;
+      x_48_phi = 1.0;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_48 : f32 = x_48_phi;
+  return x_48;
+}
+
+fn main_1() {
+  let x_27 : f32 = func_();
+  if ((x_27 == 1.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
new file mode 100644
index 0000000..6a9c3b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
@@ -0,0 +1,62 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var b : f32;
+  var x_34 : f32;
+  var x_34_phi : f32;
+  var x_48_phi : f32;
+  b = 2.0;
+  x_34_phi = 2.0;
+  loop {
+    x_34 = x_34_phi;
+    let x_39 : f32 = x_7.three;
+    if ((x_39 == 0.0)) {
+      x_48_phi = x_34;
+      break;
+    }
+    let x_44 : f32 = x_7.three;
+    if ((x_44 == 0.0)) {
+      return 1.0;
+    }
+    b = 1.0;
+
+    continuing {
+      x_34_phi = 1.0;
+      x_48_phi = 1.0;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_48 : f32 = x_48_phi;
+  return x_48;
+}
+
+fn main_1() {
+  let x_27 : f32 = func_();
+  if ((x_27 == 1.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..be4003a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,59 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  float b = 0.0f;
+  float x_34 = 0.0f;
+  float x_34_phi = 0.0f;
+  float x_48_phi = 0.0f;
+  b = 2.0f;
+  x_34_phi = 2.0f;
+  while (true) {
+    x_34 = x_34_phi;
+    const float x_39 = asfloat(x_7[0].x);
+    if ((x_39 == 0.0f)) {
+      x_48_phi = x_34;
+      break;
+    }
+    const float x_44 = asfloat(x_7[0].x);
+    if ((x_44 == 0.0f)) {
+      return 1.0f;
+    }
+    b = 1.0f;
+    {
+      x_34_phi = 1.0f;
+      x_48_phi = 1.0f;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return x_48_phi;
+}
+
+void main_1() {
+  const float x_27 = func_();
+  if ((x_27 == 1.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8114c84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(constant buf0& x_7) {
+  float b = 0.0f;
+  float x_34 = 0.0f;
+  float x_34_phi = 0.0f;
+  float x_48_phi = 0.0f;
+  b = 2.0f;
+  x_34_phi = 2.0f;
+  while (true) {
+    x_34 = x_34_phi;
+    float const x_39 = x_7.three;
+    if ((x_39 == 0.0f)) {
+      x_48_phi = x_34;
+      break;
+    }
+    float const x_44 = x_7.three;
+    if ((x_44 == 0.0f)) {
+      return 1.0f;
+    }
+    b = 1.0f;
+    {
+      x_34_phi = 1.0f;
+      x_48_phi = 1.0f;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_48 = x_48_phi;
+  return x_48;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float const x_27 = func_(x_7);
+  if ((x_27 == 1.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..22d860b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,144 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %b "b"
+               OpName %x_34 "x_34"
+               OpName %x_34_phi "x_34_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+         %11 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpConstantNull %float
+    %float_2 = OpConstant %float 2
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+      %false = OpConstantFalse %bool
+       %void = OpTypeVoid
+         %48 = OpTypeFunction %void
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %58 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %59 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %11
+         %13 = OpLabel
+          %b = OpVariable %_ptr_Function_float Function %16
+       %x_34 = OpVariable %_ptr_Function_float Function %16
+   %x_34_phi = OpVariable %_ptr_Function_float Function %16
+   %x_48_phi = OpVariable %_ptr_Function_float Function %16
+               OpStore %b %float_2
+               OpStore %x_34_phi %float_2
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %float %x_34_phi
+               OpStore %x_34 %25
+         %29 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpFOrdEqual %bool %30 %float_0
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %34
+         %35 = OpLabel
+         %36 = OpLoad %float %x_34
+               OpStore %x_48_phi %36
+               OpBranch %22
+         %34 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdEqual %bool %38 %float_0
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+               OpReturnValue %float_1
+         %40 = OpLabel
+               OpStore %b %float_1
+               OpBranch %23
+         %23 = OpLabel
+               OpStore %x_34_phi %float_1
+               OpStore %x_48_phi %float_1
+               OpSelectionMerge %44 None
+               OpBranchConditional %false %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %22
+         %44 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+         %47 = OpLoad %float %x_48_phi
+               OpReturnValue %47
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %48
+         %51 = OpLabel
+         %52 = OpFunctionCall %float %func_
+         %53 = OpFOrdEqual %bool %52 %float_1
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %54
+         %56 = OpLabel
+               OpStore %x_GLF_color %58
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %59
+%tint_symbol = OpFunctionParameter %main_out
+         %63 = OpLabel
+         %64 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %48
+         %66 = OpLabel
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 23[%23] is not post dominated by the back-edge block 44[%44]
+  %44 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6a9c3b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,62 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var b : f32;
+  var x_34 : f32;
+  var x_34_phi : f32;
+  var x_48_phi : f32;
+  b = 2.0;
+  x_34_phi = 2.0;
+  loop {
+    x_34 = x_34_phi;
+    let x_39 : f32 = x_7.three;
+    if ((x_39 == 0.0)) {
+      x_48_phi = x_34;
+      break;
+    }
+    let x_44 : f32 = x_7.three;
+    if ((x_44 == 0.0)) {
+      return 1.0;
+    }
+    b = 1.0;
+
+    continuing {
+      x_34_phi = 1.0;
+      x_48_phi = 1.0;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_48 : f32 = x_48_phi;
+  return x_48;
+}
+
+fn main_1() {
+  let x_27 : f32 = func_();
+  if ((x_27 == 1.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm
new file mode 100644
index 0000000..2682f3c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm
@@ -0,0 +1,95 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+        %int = OpTypeInt 32 1
+     %int_n1 = OpConstant %int -1
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %13
+         %34 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %35 = OpBitcast %float %int_n1
+         %36 = OpExtInst %float %1 FMin %35 %float_1
+               OpStore %f %36
+         %37 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThan %bool %38 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpCompositeConstruct %v4float %47 %50 %53 %56
+               OpStore %_GLF_color %57
+               OpBranch %42
+         %44 = OpLabel
+         %58 = OpLoad %float %f
+         %59 = OpCompositeConstruct %v4float %58 %58 %58 %58
+               OpStore %_GLF_color %59
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3c49b30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,48 @@
+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 float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  f = min(asfloat(-1), 1.0f);
+  const float x_38 = gl_FragCoord.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_38 > x_40)) {
+    const int x_46 = asint(x_9[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_55 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    const float x_58 = f;
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bae0285
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float f = 0.0f;
+  f = fmin(as_type<float>(-1), 1.0f);
+  float const x_38 = (*(tint_symbol_5)).x;
+  float const x_40 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_38 > x_40)) {
+    int const x_46 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_49 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_52 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_55 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_6) = float4(float(x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    float const x_58 = f;
+    *(tint_symbol_6) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b9c090d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,133 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+         %31 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+     %int_n1 = OpConstant %int -1
+    %float_1 = OpConstant %float 1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %29
+         %32 = OpBitcast %float %int_n1
+         %30 = OpExtInst %float %31 NMin %32 %float_1
+               OpStore %f %30
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %41 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdGreaterThan %bool %38 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %51
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %45
+         %47 = OpLabel
+         %63 = OpLoad %float %f
+         %64 = OpCompositeConstruct %v4float %63 %63 %63 %63
+               OpStore %x_GLF_color %64
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..089465d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var f : f32;
+  f = min(bitcast<f32>(-1), 1.0);
+  let x_38 : f32 = gl_FragCoord.x;
+  let x_40 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_38 > x_40)) {
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_49 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_46), f32(x_49), f32(x_52), f32(x_55));
+  } else {
+    let x_58 : f32 = f;
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
new file mode 100644
index 0000000..089465d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var f : f32;
+  f = min(bitcast<f32>(-1), 1.0);
+  let x_38 : f32 = gl_FragCoord.x;
+  let x_40 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_38 > x_40)) {
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_49 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_46), f32(x_49), f32(x_52), f32(x_55));
+  } else {
+    let x_58 : f32 = f;
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3c49b30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,48 @@
+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 float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  f = min(asfloat(-1), 1.0f);
+  const float x_38 = gl_FragCoord.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_38 > x_40)) {
+    const int x_46 = asint(x_9[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_55 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    const float x_58 = f;
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..bae0285
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float f = 0.0f;
+  f = fmin(as_type<float>(-1), 1.0f);
+  float const x_38 = (*(tint_symbol_5)).x;
+  float const x_40 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_38 > x_40)) {
+    int const x_46 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_49 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_52 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_55 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_6) = float4(float(x_46), float(x_49), float(x_52), float(x_55));
+  } else {
+    float const x_58 = f;
+    *(tint_symbol_6) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b9c090d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,133 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+         %31 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+     %int_n1 = OpConstant %int -1
+    %float_1 = OpConstant %float 1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %29
+         %32 = OpBitcast %float %int_n1
+         %30 = OpExtInst %float %31 NMin %32 %float_1
+               OpStore %f %30
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %41 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdGreaterThan %bool %38 %42
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %51
+         %59 = OpConvertSToF %float %53
+         %60 = OpConvertSToF %float %55
+         %61 = OpConvertSToF %float %57
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %x_GLF_color %62
+               OpBranch %45
+         %47 = OpLabel
+         %63 = OpLoad %float %f
+         %64 = OpCompositeConstruct %v4float %63 %63 %63 %63
+               OpStore %x_GLF_color %64
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..089465d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,51 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var f : f32;
+  f = min(bitcast<f32>(-1), 1.0);
+  let x_38 : f32 = gl_FragCoord.x;
+  let x_40 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_38 > x_40)) {
+    let x_46 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_49 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_46), f32(x_49), f32(x_52), f32(x_55));
+  } else {
+    let x_58 : f32 = f;
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm
new file mode 100644
index 0000000..c4ae300
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm
@@ -0,0 +1,47 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+%float_0_00390625 = OpConstant %float 0.00390625
+        %int = OpTypeInt 32 1
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+       %main = OpFunction %void None %6
+         %18 = OpLabel
+         %19 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %20 = OpLoad %float %19
+         %21 = OpFMul %float %20 %float_0_00390625
+         %22 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %23 = OpLoad %float %22
+         %24 = OpConvertFToS %int %23
+         %25 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %26 = OpLoad %float %25
+         %27 = OpConvertFToS %int %26
+         %28 = OpBitwiseXor %int %24 %27
+         %29 = OpConvertSToF %float %28
+         %30 = OpFMul %float %29 %float_0_00390625
+         %31 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFMul %float %32 %float_0_00390625
+         %34 = OpCompositeConstruct %v4float %21 %30 %33 %float_1
+               OpStore %_GLF_color %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..5f95172
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_20 = gl_FragCoord.x;
+  const float x_23 = gl_FragCoord.x;
+  const float x_26 = gl_FragCoord.y;
+  const float x_32 = gl_FragCoord.y;
+  x_GLF_color = float4((x_20 * 0.00390625f), (float((int(x_23) ^ int(x_26))) * 0.00390625f), (x_32 * 0.00390625f), 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6aa5c6a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.msl
@@ -0,0 +1,29 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_20 = (*(tint_symbol_5)).x;
+  float const x_23 = (*(tint_symbol_5)).x;
+  float const x_26 = (*(tint_symbol_5)).y;
+  float const x_32 = (*(tint_symbol_5)).y;
+  *(tint_symbol_6) = float4((x_20 * 0.00390625f), (float((int(x_23) ^ int(x_26))) * 0.00390625f), (x_32 * 0.00390625f), 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0a0f186
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,81 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 51
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+%float_0_00390625 = OpConstant %float 0.00390625
+        %int = OpTypeInt 32 1
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %19 = OpLoad %float %18
+         %20 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %21 = OpLoad %float %20
+         %23 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %24 = OpLoad %float %23
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %26 = OpLoad %float %25
+         %28 = OpFMul %float %19 %float_0_00390625
+         %30 = OpConvertFToS %int %21
+         %32 = OpConvertFToS %int %24
+         %33 = OpBitwiseXor %int %30 %32
+         %29 = OpConvertSToF %float %33
+         %34 = OpFMul %float %29 %float_0_00390625
+         %35 = OpFMul %float %26 %float_0_00390625
+         %37 = OpCompositeConstruct %v4float %28 %34 %35 %float_1
+               OpStore %x_GLF_color %37
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %38
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %45 = OpLabel
+         %46 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %46
+         %47 = OpFunctionCall %void %main_1
+         %49 = OpLoad %v4float %x_GLF_color
+         %50 = OpCompositeConstruct %main_out %49
+         %48 = OpFunctionCall %void %tint_symbol_3 %50
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6c6f442
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  let x_20 : f32 = gl_FragCoord.x;
+  let x_23 : f32 = gl_FragCoord.x;
+  let x_26 : f32 = gl_FragCoord.y;
+  let x_32 : f32 = gl_FragCoord.y;
+  x_GLF_color = vec4<f32>((x_20 * 0.00390625), (f32((i32(x_23) ^ i32(x_26))) * 0.00390625), (x_32 * 0.00390625), 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
new file mode 100644
index 0000000..6c6f442
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  let x_20 : f32 = gl_FragCoord.x;
+  let x_23 : f32 = gl_FragCoord.x;
+  let x_26 : f32 = gl_FragCoord.y;
+  let x_32 : f32 = gl_FragCoord.y;
+  x_GLF_color = vec4<f32>((x_20 * 0.00390625), (f32((i32(x_23) ^ i32(x_26))) * 0.00390625), (x_32 * 0.00390625), 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..5f95172
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_20 = gl_FragCoord.x;
+  const float x_23 = gl_FragCoord.x;
+  const float x_26 = gl_FragCoord.y;
+  const float x_32 = gl_FragCoord.y;
+  x_GLF_color = float4((x_20 * 0.00390625f), (float((int(x_23) ^ int(x_26))) * 0.00390625f), (x_32 * 0.00390625f), 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6aa5c6a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.msl
@@ -0,0 +1,29 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_20 = (*(tint_symbol_5)).x;
+  float const x_23 = (*(tint_symbol_5)).x;
+  float const x_26 = (*(tint_symbol_5)).y;
+  float const x_32 = (*(tint_symbol_5)).y;
+  *(tint_symbol_6) = float4((x_20 * 0.00390625f), (float((int(x_23) ^ int(x_26))) * 0.00390625f), (x_32 * 0.00390625f), 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0a0f186
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,81 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 51
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+%float_0_00390625 = OpConstant %float 0.00390625
+        %int = OpTypeInt 32 1
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %19 = OpLoad %float %18
+         %20 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %21 = OpLoad %float %20
+         %23 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %24 = OpLoad %float %23
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %26 = OpLoad %float %25
+         %28 = OpFMul %float %19 %float_0_00390625
+         %30 = OpConvertFToS %int %21
+         %32 = OpConvertFToS %int %24
+         %33 = OpBitwiseXor %int %30 %32
+         %29 = OpConvertSToF %float %33
+         %34 = OpFMul %float %29 %float_0_00390625
+         %35 = OpFMul %float %26 %float_0_00390625
+         %37 = OpCompositeConstruct %v4float %28 %34 %35 %float_1
+               OpStore %x_GLF_color %37
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %38
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %45 = OpLabel
+         %46 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %46
+         %47 = OpFunctionCall %void %main_1
+         %49 = OpLoad %v4float %x_GLF_color
+         %50 = OpCompositeConstruct %main_out %49
+         %48 = OpFunctionCall %void %tint_symbol_3 %50
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6c6f442
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  let x_20 : f32 = gl_FragCoord.x;
+  let x_23 : f32 = gl_FragCoord.x;
+  let x_26 : f32 = gl_FragCoord.y;
+  let x_32 : f32 = gl_FragCoord.y;
+  x_GLF_color = vec4<f32>((x_20 * 0.00390625), (f32((i32(x_23) ^ i32(x_26))) * 0.00390625), (x_32 * 0.00390625), 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm
new file mode 100644
index 0000000..47315d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm
@@ -0,0 +1,111 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %v "v"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %15 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %21 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+       %buf1 = OpTypeStruct %uint
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+     %uint_2 = OpConstant %uint 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf0 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %13
+         %36 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+               OpStore %v %21
+         %37 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %38 = OpLoad %float %37
+         %39 = OpFOrdLessThan %bool %38 %float_0
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %42 = OpFunctionCall %float %func_
+         %43 = OpCompositeConstruct %v4float %42 %42 %42 %42
+               OpStore %v %43
+               OpBranch %40
+         %40 = OpLabel
+         %44 = OpLoad %v4float %v
+         %45 = OpExtInst %uint %1 PackUnorm4x8 %44
+         %46 = OpIEqual %bool %45 %uint_1
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+               OpReturn
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_uint %_ %int_0
+         %50 = OpLoad %uint %49
+         %51 = OpShiftLeftLogical %uint %uint_1 %50
+         %52 = OpIEqual %bool %51 %uint_2
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpStore %_GLF_color %33
+               OpBranch %53
+         %55 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpCompositeConstruct %v4float %58 %58 %58 %58
+               OpStore %_GLF_color %59
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %float None %15
+         %60 = OpLabel
+               OpSelectionMerge %61 None
+               OpSwitch %int_1 %61 0 %62
+         %62 = OpLabel
+               OpReturnValue %float_1
+         %61 = OpLabel
+         %63 = OpUndef %float
+               OpReturnValue %63
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..94cc273
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,68 @@
+uint tint_pack4x8unorm(float4 param_0) {
+  uint4 i = uint4(round(clamp(param_0, 0.0, 1.0) * 255.0));
+  return (i.x | i.y << 8 | i.z << 16 | i.w << 24);
+}
+
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+
+float func_() {
+  switch(1) {
+    case 0: {
+      return 1.0f;
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  v = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  const float x_38 = gl_FragCoord.y;
+  if ((x_38 < 0.0f)) {
+    const float x_42 = func_();
+    v = float4(x_42, x_42, x_42, x_42);
+  }
+  if ((tint_pack4x8unorm(v) == 1u)) {
+    return;
+  }
+  const uint x_50 = x_8[0].x;
+  if (((1u << x_50) == 2u)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+    const float x_58 = float(x_57);
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..421d745
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ uint one;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_() {
+  switch(1) {
+    case 0: {
+      return 1.0f;
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return 0.0f;
+}
+
+void main_1(constant buf1& x_8, constant buf0& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4 v = 0.0f;
+  v = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  float const x_38 = (*(tint_symbol_5)).y;
+  if ((x_38 < 0.0f)) {
+    float const x_42 = func_();
+    v = float4(x_42, x_42, x_42, x_42);
+  }
+  float4 const x_44 = v;
+  if ((pack_float_to_unorm4x8(x_44) == 1u)) {
+    return;
+  }
+  uint const x_50 = x_8.one;
+  if (((1u << x_50) == 2u)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    int const x_57 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_58 = float(x_57);
+    *(tint_symbol_6) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_10, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8cf95c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 82
+; Schema: 0
+               OpCapability Shader
+         %48 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+       %buf1 = OpTypeStruct %uint
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf0 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %21 = OpTypeFunction %float
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %36 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Private_float = OpTypePointer Private %float
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+     %uint_2 = OpConstant %uint 2
+         %62 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %69 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %21
+         %23 = OpLabel
+               OpSelectionMerge %24 None
+               OpSwitch %int_1 %26 0 %27
+         %27 = OpLabel
+               OpReturnValue %float_1
+         %26 = OpLabel
+               OpBranch %24
+         %24 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %30
+         %33 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %v %36
+         %38 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdLessThan %bool %39 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %42
+         %43 = OpLabel
+         %44 = OpFunctionCall %float %func_
+         %45 = OpCompositeConstruct %v4float %44 %44 %44 %44
+               OpStore %v %45
+               OpBranch %42
+         %42 = OpLabel
+         %46 = OpLoad %v4float %v
+         %47 = OpExtInst %uint %48 PackUnorm4x8 %46
+         %49 = OpIEqual %bool %47 %uint_1
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpReturn
+         %50 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_uint %x_8 %uint_0
+         %55 = OpLoad %uint %54
+         %56 = OpShiftLeftLogical %uint %uint_1 %55
+         %58 = OpIEqual %bool %56 %uint_2
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpStore %x_GLF_color %62
+               OpBranch %59
+         %61 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpCompositeConstruct %v4float %67 %67 %67 %67
+               OpStore %x_GLF_color %68
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %69
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %73 = OpLabel
+         %74 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %30
+         %76 = OpLabel
+         %77 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %77
+         %78 = OpFunctionCall %void %main_1
+         %80 = OpLoad %v4float %x_GLF_color
+         %81 = OpCompositeConstruct %main_out %80
+         %79 = OpFunctionCall %void %tint_symbol_3 %81
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3db210a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,65 @@
+[[block]]
+struct buf1 {
+  one : u32;
+};
+
+type Arr = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn func_() -> f32 {
+  switch(1) {
+    case 0: {
+      return 1.0;
+    }
+    default: {
+    }
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var v : vec4<f32>;
+  v = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  let x_38 : f32 = gl_FragCoord.y;
+  if ((x_38 < 0.0)) {
+    let x_42 : f32 = func_();
+    v = vec4<f32>(x_42, x_42, x_42, x_42);
+  }
+  let x_44 : vec4<f32> = v;
+  if ((pack4x8unorm(x_44) == 1u)) {
+    return;
+  }
+  let x_50 : u32 = x_8.one;
+  if (((1u << x_50) == 2u)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    let x_57 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
new file mode 100644
index 0000000..3db210a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
@@ -0,0 +1,65 @@
+[[block]]
+struct buf1 {
+  one : u32;
+};
+
+type Arr = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn func_() -> f32 {
+  switch(1) {
+    case 0: {
+      return 1.0;
+    }
+    default: {
+    }
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var v : vec4<f32>;
+  v = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  let x_38 : f32 = gl_FragCoord.y;
+  if ((x_38 < 0.0)) {
+    let x_42 : f32 = func_();
+    v = vec4<f32>(x_42, x_42, x_42, x_42);
+  }
+  let x_44 : vec4<f32> = v;
+  if ((pack4x8unorm(x_44) == 1u)) {
+    return;
+  }
+  let x_50 : u32 = x_8.one;
+  if (((1u << x_50) == 2u)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    let x_57 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..94cc273
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,68 @@
+uint tint_pack4x8unorm(float4 param_0) {
+  uint4 i = uint4(round(clamp(param_0, 0.0, 1.0) * 255.0));
+  return (i.x | i.y << 8 | i.z << 16 | i.w << 24);
+}
+
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+
+float func_() {
+  switch(1) {
+    case 0: {
+      return 1.0f;
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  v = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  const float x_38 = gl_FragCoord.y;
+  if ((x_38 < 0.0f)) {
+    const float x_42 = func_();
+    v = float4(x_42, x_42, x_42, x_42);
+  }
+  if ((tint_pack4x8unorm(v) == 1u)) {
+    return;
+  }
+  const uint x_50 = x_8[0].x;
+  if (((1u << x_50) == 2u)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+    const float x_58 = float(x_57);
+    x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..421d745
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ uint one;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_() {
+  switch(1) {
+    case 0: {
+      return 1.0f;
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return 0.0f;
+}
+
+void main_1(constant buf1& x_8, constant buf0& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4 v = 0.0f;
+  v = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  float const x_38 = (*(tint_symbol_5)).y;
+  if ((x_38 < 0.0f)) {
+    float const x_42 = func_();
+    v = float4(x_42, x_42, x_42, x_42);
+  }
+  float4 const x_44 = v;
+  if ((pack_float_to_unorm4x8(x_44) == 1u)) {
+    return;
+  }
+  uint const x_50 = x_8.one;
+  if (((1u << x_50) == 2u)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    int const x_57 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_58 = float(x_57);
+    *(tint_symbol_6) = float4(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_10, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8cf95c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 82
+; Schema: 0
+               OpCapability Shader
+         %48 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+       %buf1 = OpTypeStruct %uint
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf0 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %21 = OpTypeFunction %float
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %36 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Private_float = OpTypePointer Private %float
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+     %uint_2 = OpConstant %uint 2
+         %62 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %69 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %21
+         %23 = OpLabel
+               OpSelectionMerge %24 None
+               OpSwitch %int_1 %26 0 %27
+         %27 = OpLabel
+               OpReturnValue %float_1
+         %26 = OpLabel
+               OpBranch %24
+         %24 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %30
+         %33 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %v %36
+         %38 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdLessThan %bool %39 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %42
+         %43 = OpLabel
+         %44 = OpFunctionCall %float %func_
+         %45 = OpCompositeConstruct %v4float %44 %44 %44 %44
+               OpStore %v %45
+               OpBranch %42
+         %42 = OpLabel
+         %46 = OpLoad %v4float %v
+         %47 = OpExtInst %uint %48 PackUnorm4x8 %46
+         %49 = OpIEqual %bool %47 %uint_1
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpReturn
+         %50 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_uint %x_8 %uint_0
+         %55 = OpLoad %uint %54
+         %56 = OpShiftLeftLogical %uint %uint_1 %55
+         %58 = OpIEqual %bool %56 %uint_2
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpStore %x_GLF_color %62
+               OpBranch %59
+         %61 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpCompositeConstruct %v4float %67 %67 %67 %67
+               OpStore %x_GLF_color %68
+               OpBranch %59
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %69
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %73 = OpLabel
+         %74 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %30
+         %76 = OpLabel
+         %77 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %77
+         %78 = OpFunctionCall %void %main_1
+         %80 = OpLoad %v4float %x_GLF_color
+         %81 = OpCompositeConstruct %main_out %80
+         %79 = OpFunctionCall %void %tint_symbol_3 %81
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3db210a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,65 @@
+[[block]]
+struct buf1 {
+  one : u32;
+};
+
+type Arr = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn func_() -> f32 {
+  switch(1) {
+    case 0: {
+      return 1.0;
+    }
+    default: {
+    }
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var v : vec4<f32>;
+  v = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  let x_38 : f32 = gl_FragCoord.y;
+  if ((x_38 < 0.0)) {
+    let x_42 : f32 = func_();
+    v = vec4<f32>(x_42, x_42, x_42, x_42);
+  }
+  let x_44 : vec4<f32> = v;
+  if ((pack4x8unorm(x_44) == 1u)) {
+    return;
+  }
+  let x_50 : u32 = x_8.one;
+  if (((1u << x_50) == 2u)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    let x_57 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_58 : f32 = f32(x_57);
+    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm
new file mode 100644
index 0000000..1499e61
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm
@@ -0,0 +1,70 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %main = OpFunction %void None %9
+         %25 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+         %26 = OpBitcast %float %uint_1
+         %27 = OpFMod %float %26 %float_1
+               OpStore %a %27
+         %28 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %29 = OpLoad %float %28
+         %30 = OpCompositeConstruct %v4float %29 %29 %29 %29
+               OpStore %_GLF_color %30
+         %31 = OpLoad %float %a
+         %32 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %33 = OpLoad %float %32
+         %34 = OpFOrdLessThan %bool %31 %33
+               OpSelectionMerge %35 None
+               OpBranchConditional %34 %36 %35
+         %36 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpCompositeConstruct %v4float %38 %40 %42 %44
+               OpStore %_GLF_color %45
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..307332d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+
+void main_1() {
+  float a = 0.0f;
+  a = (asfloat(1u) % 1.0f);
+  const float x_29 = asfloat(x_6[1].x);
+  x_GLF_color = float4(x_29, x_29, x_29, x_29);
+  const float x_31 = a;
+  const float x_33 = asfloat(x_6[2].x);
+  if ((x_31 < x_33)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_38 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const float x_40 = asfloat(x_6[1].x);
+    const float x_42 = asfloat(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_44 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(x_38, x_40, x_42, x_44);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.msl
new file mode 100755
index 0000000..6652116
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.msl
@@ -0,0 +1,52 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  a = (as_type<float>(1u) % 1.0f);
+  float const x_29 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_4) = float4(x_29, x_29, x_29, x_29);
+  float const x_31 = a;
+  float const x_33 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  if ((x_31 < x_33)) {
+    float const x_38 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_40 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_42 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_38, x_40, x_42, x_44);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\uf8c.0.metal:23:27: error: invalid operands to binary expression ('float' and 'float')
+  a = (as_type<float>(1u) % 1.0f);
+       ~~~~~~~~~~~~~~~~~~ ^ ~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5169c11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,103 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+         %21 = OpBitcast %float %uint_1
+         %24 = OpFMod %float %21 %float_1
+               OpStore %a %24
+         %29 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %30 = OpLoad %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %x_GLF_color %31
+         %32 = OpLoad %float %a
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %35 = OpLoad %float %34
+         %36 = OpFOrdLessThan %bool %32 %35
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %38
+         %39 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %44 = OpLoad %float %43
+         %45 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %46 = OpLoad %float %45
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %48 = OpLoad %float %47
+         %49 = OpCompositeConstruct %v4float %42 %44 %46 %48
+               OpStore %x_GLF_color %49
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8f1d936
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,38 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var a : f32;
+  a = (bitcast<f32>(1u) % 1.0);
+  let x_29 : f32 = x_6.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_29, x_29, x_29, x_29);
+  let x_31 : f32 = a;
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[2];
+  if ((x_31 < x_33)) {
+    let x_38 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_40 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_42 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_38, x_40, x_42, x_44);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
new file mode 100644
index 0000000..8f1d936
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
@@ -0,0 +1,38 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var a : f32;
+  a = (bitcast<f32>(1u) % 1.0);
+  let x_29 : f32 = x_6.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_29, x_29, x_29, x_29);
+  let x_31 : f32 = a;
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[2];
+  if ((x_31 < x_33)) {
+    let x_38 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_40 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_42 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_38, x_40, x_42, x_44);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..307332d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+
+void main_1() {
+  float a = 0.0f;
+  a = (asfloat(1u) % 1.0f);
+  const float x_29 = asfloat(x_6[1].x);
+  x_GLF_color = float4(x_29, x_29, x_29, x_29);
+  const float x_31 = a;
+  const float x_33 = asfloat(x_6[2].x);
+  if ((x_31 < x_33)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_38 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const float x_40 = asfloat(x_6[1].x);
+    const float x_42 = asfloat(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_44 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(x_38, x_40, x_42, x_44);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.msl
new file mode 100755
index 0000000..da17ed9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.msl
@@ -0,0 +1,52 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  a = (as_type<float>(1u) % 1.0f);
+  float const x_29 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_4) = float4(x_29, x_29, x_29, x_29);
+  float const x_31 = a;
+  float const x_33 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  if ((x_31 < x_33)) {
+    float const x_38 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_40 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_42 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_38, x_40, x_42, x_44);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\ue28.0.metal:23:27: error: invalid operands to binary expression ('float' and 'float')
+  a = (as_type<float>(1u) % 1.0f);
+       ~~~~~~~~~~~~~~~~~~ ^ ~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5169c11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,103 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+         %21 = OpBitcast %float %uint_1
+         %24 = OpFMod %float %21 %float_1
+               OpStore %a %24
+         %29 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %30 = OpLoad %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %x_GLF_color %31
+         %32 = OpLoad %float %a
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %35 = OpLoad %float %34
+         %36 = OpFOrdLessThan %bool %32 %35
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %38
+         %39 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %44 = OpLoad %float %43
+         %45 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %46 = OpLoad %float %45
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %48 = OpLoad %float %47
+         %49 = OpCompositeConstruct %v4float %42 %44 %46 %48
+               OpStore %x_GLF_color %49
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8f1d936
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,38 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var a : f32;
+  a = (bitcast<f32>(1u) % 1.0);
+  let x_29 : f32 = x_6.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_29, x_29, x_29, x_29);
+  let x_31 : f32 = a;
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[2];
+  if ((x_31 < x_33)) {
+    let x_38 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_40 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_42 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_38, x_40, x_42, x_44);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm
new file mode 100644
index 0000000..7ea2f77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm
@@ -0,0 +1,127 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_uint_values"
+               OpName %__1 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 2
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf2 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+          %_ = OpVariable %_ptr_Uniform_buf2 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf1 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__1 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %17
+         %39 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+          %b = OpVariable %_ptr_Function_int Function
+               OpStore %a %uint_0
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %41 = OpLoad %int %40
+               OpStore %b %41
+         %42 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpFOrdLessThan %bool %43 %45
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_uint %__1 %int_0 %int_0
+         %50 = OpLoad %uint %49
+         %51 = OpLoad %uint %a
+         %52 = OpUMod %uint %50 %51
+         %53 = OpBitcast %int %52
+               OpStore %b %53
+               OpBranch %47
+         %47 = OpLabel
+         %54 = OpLoad %int %b
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpIEqual %bool %54 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpCompositeConstruct %v4float %63 %66 %69 %72
+               OpStore %_GLF_color %73
+               OpBranch %58
+         %60 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpCompositeConstruct %v4float %76 %76 %76 %76
+               OpStore %_GLF_color %77
+               OpBranch %58
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..df48733
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,63 @@
+cbuffer cbuffer_x_8 : register(b2, space0) {
+  uint4 x_8[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+cbuffer cbuffer_x_12 : register(b1, space0) {
+  uint4 x_12[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  int b = 0;
+  a = 0u;
+  const int x_41 = asint(x_8[1].x);
+  b = x_41;
+  const float x_43 = gl_FragCoord.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_10[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_43 < x_45)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const uint x_50 = x_12[scalar_offset_1 / 4][scalar_offset_1 % 4];
+    b = asint((x_50 % a));
+  }
+  const int x_54 = b;
+  const int x_56 = asint(x_8[1].x);
+  if ((x_54 == x_56)) {
+    const int x_62 = asint(x_8[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_68 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_71 = asint(x_8[1].x);
+    x_GLF_color = float4(float(x_62), float(x_65), float(x_68), float(x_71));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_75 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_76 = float(x_75);
+    x_GLF_color = float4(x_76, x_76, x_76, x_76);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2639d33
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_uint_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf2& x_8, constant buf0& x_10, constant buf1& x_12, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  uint a = 0u;
+  int b = 0;
+  a = 0u;
+  int const x_41 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  b = x_41;
+  float const x_43 = (*(tint_symbol_5)).x;
+  float const x_45 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_43 < x_45)) {
+    uint const x_50 = x_12.x_GLF_uniform_uint_values.arr[0].el;
+    uint const x_51 = a;
+    b = as_type<int>((x_50 % x_51));
+  }
+  int const x_54 = b;
+  int const x_56 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_54 == x_56)) {
+    int const x_62 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_68 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_71 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_6) = float4(float(x_62), float(x_65), float(x_68), float(x_71));
+  } else {
+    int const x_75 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_76 = float(x_75);
+    *(tint_symbol_6) = float4(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf2& x_8 [[buffer(2)]], constant buf0& x_10 [[buffer(0)]], constant buf1& x_12 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_10, x_12, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7ecd623
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,166 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 96
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_uint_values"
+               OpName %x_12 "x_12"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf2 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_8 = OpVariable %_ptr_Uniform_buf2 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf1 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_12 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %33 = OpConstantNull %uint
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+   %main_out = OpTypeStruct %v4float
+         %83 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %33
+          %b = OpVariable %_ptr_Function_int Function %36
+               OpStore %a %uint_0
+         %40 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %41 = OpLoad %int %40
+               OpStore %b %41
+         %43 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %44 = OpLoad %float %43
+         %47 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %48 = OpLoad %float %47
+         %49 = OpFOrdLessThan %bool %44 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %49 %52 %51
+         %52 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_uint %x_12 %uint_0 %int_0
+         %55 = OpLoad %uint %54
+         %56 = OpLoad %uint %a
+         %58 = OpUMod %uint %55 %56
+         %57 = OpBitcast %int %58
+               OpStore %b %57
+               OpBranch %51
+         %51 = OpLabel
+         %59 = OpLoad %int %b
+         %60 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpIEqual %bool %59 %61
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %67
+         %75 = OpConvertSToF %float %69
+         %76 = OpConvertSToF %float %71
+         %77 = OpConvertSToF %float %73
+         %78 = OpCompositeConstruct %v4float %74 %75 %76 %77
+               OpStore %x_GLF_color %78
+               OpBranch %63
+         %65 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpCompositeConstruct %v4float %81 %81 %81 %81
+               OpStore %x_GLF_color %82
+               OpBranch %63
+         %63 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %83
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %87 = OpLabel
+         %88 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+         %90 = OpLabel
+         %91 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %91
+         %92 = OpFunctionCall %void %main_1
+         %94 = OpLoad %v4float %x_GLF_color
+         %95 = OpCompositeConstruct %main_out %94
+         %93 = OpFunctionCall %void %tint_symbol_3 %95
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5204e88
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_uint_values : Arr_2;
+};
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_12 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var b : i32;
+  a = 0u;
+  let x_41 : i32 = x_8.x_GLF_uniform_int_values[1];
+  b = x_41;
+  let x_43 : f32 = gl_FragCoord.x;
+  let x_45 : f32 = x_10.x_GLF_uniform_float_values[0];
+  if ((x_43 < x_45)) {
+    let x_50 : u32 = x_12.x_GLF_uniform_uint_values[0];
+    let x_51 : u32 = a;
+    b = bitcast<i32>((x_50 % x_51));
+  }
+  let x_54 : i32 = b;
+  let x_56 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_54 == x_56)) {
+    let x_62 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_68 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_71 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_62), f32(x_65), f32(x_68), f32(x_71));
+  } else {
+    let x_75 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_76 : f32 = f32(x_75);
+    x_GLF_color = vec4<f32>(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
new file mode 100644
index 0000000..5204e88
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_uint_values : Arr_2;
+};
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_12 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var b : i32;
+  a = 0u;
+  let x_41 : i32 = x_8.x_GLF_uniform_int_values[1];
+  b = x_41;
+  let x_43 : f32 = gl_FragCoord.x;
+  let x_45 : f32 = x_10.x_GLF_uniform_float_values[0];
+  if ((x_43 < x_45)) {
+    let x_50 : u32 = x_12.x_GLF_uniform_uint_values[0];
+    let x_51 : u32 = a;
+    b = bitcast<i32>((x_50 % x_51));
+  }
+  let x_54 : i32 = b;
+  let x_56 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_54 == x_56)) {
+    let x_62 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_68 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_71 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_62), f32(x_65), f32(x_68), f32(x_71));
+  } else {
+    let x_75 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_76 : f32 = f32(x_75);
+    x_GLF_color = vec4<f32>(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..df48733
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,63 @@
+cbuffer cbuffer_x_8 : register(b2, space0) {
+  uint4 x_8[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+cbuffer cbuffer_x_12 : register(b1, space0) {
+  uint4 x_12[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  int b = 0;
+  a = 0u;
+  const int x_41 = asint(x_8[1].x);
+  b = x_41;
+  const float x_43 = gl_FragCoord.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_10[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_43 < x_45)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const uint x_50 = x_12[scalar_offset_1 / 4][scalar_offset_1 % 4];
+    b = asint((x_50 % a));
+  }
+  const int x_54 = b;
+  const int x_56 = asint(x_8[1].x);
+  if ((x_54 == x_56)) {
+    const int x_62 = asint(x_8[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_68 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_71 = asint(x_8[1].x);
+    x_GLF_color = float4(float(x_62), float(x_65), float(x_68), float(x_71));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_75 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_76 = float(x_75);
+    x_GLF_color = float4(x_76, x_76, x_76, x_76);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2639d33
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_uint_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf2& x_8, constant buf0& x_10, constant buf1& x_12, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  uint a = 0u;
+  int b = 0;
+  a = 0u;
+  int const x_41 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  b = x_41;
+  float const x_43 = (*(tint_symbol_5)).x;
+  float const x_45 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_43 < x_45)) {
+    uint const x_50 = x_12.x_GLF_uniform_uint_values.arr[0].el;
+    uint const x_51 = a;
+    b = as_type<int>((x_50 % x_51));
+  }
+  int const x_54 = b;
+  int const x_56 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_54 == x_56)) {
+    int const x_62 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_68 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_71 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_6) = float4(float(x_62), float(x_65), float(x_68), float(x_71));
+  } else {
+    int const x_75 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_76 = float(x_75);
+    *(tint_symbol_6) = float4(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf2& x_8 [[buffer(2)]], constant buf0& x_10 [[buffer(0)]], constant buf1& x_12 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, x_10, x_12, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7ecd623
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,166 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 96
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_uint_values"
+               OpName %x_12 "x_12"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf2 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_8 = OpVariable %_ptr_Uniform_buf2 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf1 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_12 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %33 = OpConstantNull %uint
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+   %main_out = OpTypeStruct %v4float
+         %83 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %33
+          %b = OpVariable %_ptr_Function_int Function %36
+               OpStore %a %uint_0
+         %40 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %41 = OpLoad %int %40
+               OpStore %b %41
+         %43 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %44 = OpLoad %float %43
+         %47 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %48 = OpLoad %float %47
+         %49 = OpFOrdLessThan %bool %44 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %49 %52 %51
+         %52 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_uint %x_12 %uint_0 %int_0
+         %55 = OpLoad %uint %54
+         %56 = OpLoad %uint %a
+         %58 = OpUMod %uint %55 %56
+         %57 = OpBitcast %int %58
+               OpStore %b %57
+               OpBranch %51
+         %51 = OpLabel
+         %59 = OpLoad %int %b
+         %60 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpIEqual %bool %59 %61
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %67
+         %75 = OpConvertSToF %float %69
+         %76 = OpConvertSToF %float %71
+         %77 = OpConvertSToF %float %73
+         %78 = OpCompositeConstruct %v4float %74 %75 %76 %77
+               OpStore %x_GLF_color %78
+               OpBranch %63
+         %65 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpCompositeConstruct %v4float %81 %81 %81 %81
+               OpStore %x_GLF_color %82
+               OpBranch %63
+         %63 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %83
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %87 = OpLabel
+         %88 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+         %90 = OpLabel
+         %91 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %91
+         %92 = OpFunctionCall %void %main_1
+         %94 = OpLoad %v4float %x_GLF_color
+         %95 = OpCompositeConstruct %main_out %94
+         %93 = OpFunctionCall %void %tint_symbol_3 %95
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5204e88
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_uint_values : Arr_2;
+};
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_12 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var b : i32;
+  a = 0u;
+  let x_41 : i32 = x_8.x_GLF_uniform_int_values[1];
+  b = x_41;
+  let x_43 : f32 = gl_FragCoord.x;
+  let x_45 : f32 = x_10.x_GLF_uniform_float_values[0];
+  if ((x_43 < x_45)) {
+    let x_50 : u32 = x_12.x_GLF_uniform_uint_values[0];
+    let x_51 : u32 = a;
+    b = bitcast<i32>((x_50 % x_51));
+  }
+  let x_54 : i32 = b;
+  let x_56 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_54 == x_56)) {
+    let x_62 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_68 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_71 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_62), f32(x_65), f32(x_68), f32(x_71));
+  } else {
+    let x_75 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_76 : f32 = f32(x_75);
+    x_GLF_color = vec4<f32>(x_76, x_76, x_76, x_76);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm
new file mode 100644
index 0000000..e63a57e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm
@@ -0,0 +1,940 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %m23 "m23"
+               OpName %m24 "m24"
+               OpName %m32 "m32"
+               OpName %m33 "m33"
+               OpName %m34 "m34"
+               OpName %m42 "m42"
+               OpName %m43 "m43"
+               OpName %m44 "m44"
+               OpName %i "i"
+               OpName %i_0 "i"
+               OpName %i_1 "i"
+               OpName %i_2 "i"
+               OpName %i_3 "i"
+               OpName %i_4 "i"
+               OpName %i_5 "i"
+               OpName %i_6 "i"
+               OpName %i_7 "i"
+               OpName %i_8 "i"
+               OpName %i_9 "i"
+               OpName %i_10 "i"
+               OpName %i_11 "i"
+               OpName %i_12 "i"
+               OpName %i_13 "i"
+               OpName %i_14 "i"
+               OpName %i_15 "i"
+               OpName %i_16 "i"
+               OpName %i_17 "i"
+               OpName %i_18 "i"
+               OpName %i_19 "i"
+               OpName %i_20 "i"
+               OpName %i_21 "i"
+               OpName %i_22 "i"
+               OpName %i_23 "i"
+               OpName %i_24 "i"
+               OpName %i_25 "i"
+               OpName %i_26 "i"
+               OpName %i_27 "i"
+               OpName %i_28 "i"
+               OpName %i_29 "i"
+               OpName %i_30 "i"
+               OpName %i_31 "i"
+               OpName %i_32 "i"
+               OpName %i_33 "i"
+               OpName %i_34 "i"
+               OpName %i_35 "i"
+               OpName %i_36 "i"
+               OpName %sum "sum"
+               OpName %r "r"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %54 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+%mat2v3float = OpTypeMatrix %v3float 2
+%_ptr_Function_mat2v3float = OpTypePointer Function %mat2v3float
+    %float_0 = OpConstant %float 0
+         %63 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %64 = OpConstantComposite %mat2v3float %63 %63
+    %v4float = OpTypeVector %float 4
+%mat2v4float = OpTypeMatrix %v4float 2
+%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
+         %68 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %69 = OpConstantComposite %mat2v4float %68 %68
+    %v2float = OpTypeVector %float 2
+%mat3v2float = OpTypeMatrix %v2float 3
+%_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float
+         %73 = OpConstantComposite %v2float %float_0 %float_0
+         %74 = OpConstantComposite %mat3v2float %73 %73 %73
+%mat3v3float = OpTypeMatrix %v3float 3
+%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
+         %77 = OpConstantComposite %mat3v3float %63 %63 %63
+%mat3v4float = OpTypeMatrix %v4float 3
+%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
+         %80 = OpConstantComposite %mat3v4float %68 %68 %68
+%mat4v2float = OpTypeMatrix %v2float 4
+%_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float
+         %83 = OpConstantComposite %mat4v2float %73 %73 %73 %73
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %86 = OpConstantComposite %mat4v3float %63 %63 %63 %63
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %89 = OpConstantComposite %mat4v4float %68 %68 %68 %68
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %int_98 = OpConstant %int 98
+    %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %int_100 = OpConstant %int 100
+    %float_8 = OpConstant %float 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %99 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %54
+        %100 = OpLabel
+        %m23 = OpVariable %_ptr_Function_mat2v3float Function
+        %m24 = OpVariable %_ptr_Function_mat2v4float Function
+        %m32 = OpVariable %_ptr_Function_mat3v2float Function
+        %m33 = OpVariable %_ptr_Function_mat3v3float Function
+        %m34 = OpVariable %_ptr_Function_mat3v4float Function
+        %m42 = OpVariable %_ptr_Function_mat4v2float Function
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function
+        %m44 = OpVariable %_ptr_Function_mat4v4float Function
+          %i = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %i_3 = OpVariable %_ptr_Function_int Function
+        %i_4 = OpVariable %_ptr_Function_int Function
+        %i_5 = OpVariable %_ptr_Function_int Function
+        %i_6 = OpVariable %_ptr_Function_int Function
+        %i_7 = OpVariable %_ptr_Function_int Function
+        %i_8 = OpVariable %_ptr_Function_int Function
+        %i_9 = OpVariable %_ptr_Function_int Function
+       %i_10 = OpVariable %_ptr_Function_int Function
+       %i_11 = OpVariable %_ptr_Function_int Function
+       %i_12 = OpVariable %_ptr_Function_int Function
+       %i_13 = OpVariable %_ptr_Function_int Function
+       %i_14 = OpVariable %_ptr_Function_int Function
+       %i_15 = OpVariable %_ptr_Function_int Function
+       %i_16 = OpVariable %_ptr_Function_int Function
+       %i_17 = OpVariable %_ptr_Function_int Function
+       %i_18 = OpVariable %_ptr_Function_int Function
+       %i_19 = OpVariable %_ptr_Function_int Function
+       %i_20 = OpVariable %_ptr_Function_int Function
+       %i_21 = OpVariable %_ptr_Function_int Function
+       %i_22 = OpVariable %_ptr_Function_int Function
+       %i_23 = OpVariable %_ptr_Function_int Function
+       %i_24 = OpVariable %_ptr_Function_int Function
+       %i_25 = OpVariable %_ptr_Function_int Function
+       %i_26 = OpVariable %_ptr_Function_int Function
+       %i_27 = OpVariable %_ptr_Function_int Function
+       %i_28 = OpVariable %_ptr_Function_int Function
+       %i_29 = OpVariable %_ptr_Function_int Function
+       %i_30 = OpVariable %_ptr_Function_int Function
+       %i_31 = OpVariable %_ptr_Function_int Function
+       %i_32 = OpVariable %_ptr_Function_int Function
+       %i_33 = OpVariable %_ptr_Function_int Function
+       %i_34 = OpVariable %_ptr_Function_int Function
+       %i_35 = OpVariable %_ptr_Function_int Function
+       %i_36 = OpVariable %_ptr_Function_int Function
+        %sum = OpVariable %_ptr_Function_float Function
+          %r = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_global_loop_count %int_0
+               OpStore %m23 %64
+               OpStore %m24 %69
+               OpStore %m32 %74
+               OpStore %m33 %77
+               OpStore %m34 %80
+               OpStore %m42 %83
+               OpStore %m43 %86
+               OpStore %m44 %89
+               OpStore %i %int_0
+               OpBranch %101
+        %101 = OpLabel
+               OpLoopMerge %102 %103 None
+               OpBranch %104
+        %104 = OpLabel
+        %105 = OpLoad %int %i
+        %106 = OpSLessThan %bool %105 %int_1
+               OpBranchConditional %106 %107 %102
+        %107 = OpLabel
+               OpStore %i_0 %int_0
+               OpBranch %108
+        %108 = OpLabel
+               OpLoopMerge %109 %110 None
+               OpBranch %111
+        %111 = OpLabel
+        %112 = OpLoad %int %i_0
+        %113 = OpSLessThan %bool %112 %int_1
+               OpBranchConditional %113 %114 %109
+        %114 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %115
+        %115 = OpLabel
+               OpLoopMerge %116 %117 None
+               OpBranch %118
+        %118 = OpLabel
+        %119 = OpLoad %int %i_1
+        %120 = OpSLessThan %bool %119 %int_1
+               OpBranchConditional %120 %121 %116
+        %121 = OpLabel
+               OpStore %i_2 %int_0
+               OpBranch %122
+        %122 = OpLabel
+               OpLoopMerge %123 %124 None
+               OpBranch %125
+        %125 = OpLabel
+        %126 = OpLoad %int %i_2
+        %127 = OpSLessThan %bool %126 %int_1
+               OpBranchConditional %127 %128 %123
+        %128 = OpLabel
+               OpStore %i_3 %int_0
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %i_3
+        %134 = OpSLessThan %bool %133 %int_1
+               OpBranchConditional %134 %135 %130
+        %135 = OpLabel
+               OpStore %i_4 %int_0
+               OpBranch %136
+        %136 = OpLabel
+               OpLoopMerge %137 %138 None
+               OpBranch %139
+        %139 = OpLabel
+        %140 = OpLoad %int %i_4
+        %141 = OpSLessThan %bool %140 %int_1
+               OpBranchConditional %141 %142 %137
+        %142 = OpLabel
+               OpStore %i_5 %int_0
+               OpBranch %143
+        %143 = OpLabel
+               OpLoopMerge %144 %145 None
+               OpBranch %146
+        %146 = OpLabel
+        %147 = OpLoad %int %i_5
+        %148 = OpSLessThan %bool %147 %int_1
+               OpBranchConditional %148 %149 %144
+        %149 = OpLabel
+               OpStore %i_6 %int_0
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %154 = OpLoad %int %i_6
+        %155 = OpSLessThan %bool %154 %int_1
+               OpBranchConditional %155 %156 %151
+        %156 = OpLabel
+               OpStore %i_7 %int_0
+               OpBranch %157
+        %157 = OpLabel
+               OpLoopMerge %158 %159 None
+               OpBranch %160
+        %160 = OpLabel
+        %161 = OpLoad %int %i_7
+        %162 = OpSLessThan %bool %161 %int_1
+               OpBranchConditional %162 %163 %158
+        %163 = OpLabel
+               OpStore %i_8 %int_0
+               OpBranch %164
+        %164 = OpLabel
+               OpLoopMerge %165 %166 None
+               OpBranch %167
+        %167 = OpLabel
+        %168 = OpLoad %int %i_8
+        %169 = OpSLessThan %bool %168 %int_1
+               OpBranchConditional %169 %170 %165
+        %170 = OpLabel
+               OpStore %i_9 %int_0
+               OpBranch %171
+        %171 = OpLabel
+               OpLoopMerge %172 %173 None
+               OpBranch %174
+        %174 = OpLabel
+        %175 = OpLoad %int %i_9
+        %176 = OpSLessThan %bool %175 %int_1
+               OpBranchConditional %176 %177 %172
+        %177 = OpLabel
+               OpStore %i_10 %int_0
+               OpBranch %178
+        %178 = OpLabel
+               OpLoopMerge %179 %180 None
+               OpBranch %181
+        %181 = OpLabel
+        %182 = OpLoad %int %i_10
+        %183 = OpSLessThan %bool %182 %int_1
+               OpBranchConditional %183 %184 %179
+        %184 = OpLabel
+               OpStore %i_11 %int_0
+               OpBranch %185
+        %185 = OpLabel
+               OpLoopMerge %186 %187 None
+               OpBranch %188
+        %188 = OpLabel
+        %189 = OpLoad %int %i_11
+        %190 = OpSLessThan %bool %189 %int_1
+               OpBranchConditional %190 %191 %186
+        %191 = OpLabel
+               OpStore %i_12 %int_0
+               OpBranch %192
+        %192 = OpLabel
+               OpLoopMerge %193 %194 None
+               OpBranch %195
+        %195 = OpLabel
+        %196 = OpLoad %int %i_12
+        %197 = OpSLessThan %bool %196 %int_1
+               OpBranchConditional %197 %198 %193
+        %198 = OpLabel
+               OpStore %i_13 %int_0
+               OpBranch %199
+        %199 = OpLabel
+               OpLoopMerge %200 %201 None
+               OpBranch %202
+        %202 = OpLabel
+        %203 = OpLoad %int %i_13
+        %204 = OpSLessThan %bool %203 %int_1
+               OpBranchConditional %204 %205 %200
+        %205 = OpLabel
+               OpStore %i_14 %int_0
+               OpBranch %206
+        %206 = OpLabel
+               OpLoopMerge %207 %208 None
+               OpBranch %209
+        %209 = OpLabel
+        %210 = OpLoad %int %i_14
+        %211 = OpSLessThan %bool %210 %int_1
+               OpBranchConditional %211 %212 %207
+        %212 = OpLabel
+               OpStore %i_15 %int_0
+               OpBranch %213
+        %213 = OpLabel
+               OpLoopMerge %214 %215 None
+               OpBranch %216
+        %216 = OpLabel
+        %217 = OpLoad %int %i_15
+        %218 = OpSLessThan %bool %217 %int_1
+               OpBranchConditional %218 %219 %214
+        %219 = OpLabel
+               OpStore %i_16 %int_0
+               OpBranch %220
+        %220 = OpLabel
+               OpLoopMerge %221 %222 None
+               OpBranch %223
+        %223 = OpLabel
+        %224 = OpLoad %int %i_16
+        %225 = OpSLessThan %bool %224 %int_1
+               OpBranchConditional %225 %226 %221
+        %226 = OpLabel
+               OpStore %i_17 %int_0
+               OpBranch %227
+        %227 = OpLabel
+               OpLoopMerge %228 %229 None
+               OpBranch %230
+        %230 = OpLabel
+        %231 = OpLoad %int %i_17
+        %232 = OpSLessThan %bool %231 %int_1
+               OpBranchConditional %232 %233 %228
+        %233 = OpLabel
+               OpStore %i_18 %int_0
+               OpBranch %234
+        %234 = OpLabel
+               OpLoopMerge %235 %236 None
+               OpBranch %237
+        %237 = OpLabel
+        %238 = OpLoad %int %i_18
+        %239 = OpSLessThan %bool %238 %int_1
+               OpBranchConditional %239 %240 %235
+        %240 = OpLabel
+               OpStore %i_19 %int_0
+               OpBranch %241
+        %241 = OpLabel
+               OpLoopMerge %242 %243 None
+               OpBranch %244
+        %244 = OpLabel
+        %245 = OpLoad %int %i_19
+        %246 = OpSLessThan %bool %245 %int_1
+               OpBranchConditional %246 %247 %242
+        %247 = OpLabel
+               OpStore %i_20 %int_0
+               OpBranch %248
+        %248 = OpLabel
+               OpLoopMerge %249 %250 None
+               OpBranch %251
+        %251 = OpLabel
+        %252 = OpLoad %int %i_20
+        %253 = OpSLessThan %bool %252 %int_1
+               OpBranchConditional %253 %254 %249
+        %254 = OpLabel
+               OpStore %i_21 %int_0
+               OpBranch %255
+        %255 = OpLabel
+               OpLoopMerge %256 %257 None
+               OpBranch %258
+        %258 = OpLabel
+        %259 = OpLoad %int %i_21
+        %260 = OpSLessThan %bool %259 %int_1
+               OpBranchConditional %260 %261 %256
+        %261 = OpLabel
+               OpStore %i_22 %int_0
+               OpBranch %262
+        %262 = OpLabel
+               OpLoopMerge %263 %264 None
+               OpBranch %265
+        %265 = OpLabel
+        %266 = OpLoad %int %i_22
+        %267 = OpSLessThan %bool %266 %int_1
+               OpBranchConditional %267 %268 %263
+        %268 = OpLabel
+               OpStore %i_23 %int_0
+               OpBranch %269
+        %269 = OpLabel
+               OpLoopMerge %270 %271 None
+               OpBranch %272
+        %272 = OpLabel
+        %273 = OpLoad %int %i_23
+        %274 = OpSLessThan %bool %273 %int_1
+               OpBranchConditional %274 %275 %270
+        %275 = OpLabel
+               OpStore %i_24 %int_0
+               OpBranch %276
+        %276 = OpLabel
+               OpLoopMerge %277 %278 None
+               OpBranch %279
+        %279 = OpLabel
+        %280 = OpLoad %int %i_24
+        %281 = OpSLessThan %bool %280 %int_1
+               OpBranchConditional %281 %282 %277
+        %282 = OpLabel
+               OpStore %i_25 %int_0
+               OpBranch %283
+        %283 = OpLabel
+               OpLoopMerge %284 %285 None
+               OpBranch %286
+        %286 = OpLabel
+        %287 = OpLoad %int %i_25
+        %288 = OpSLessThan %bool %287 %int_1
+               OpBranchConditional %288 %289 %284
+        %289 = OpLabel
+               OpStore %i_26 %int_0
+               OpBranch %290
+        %290 = OpLabel
+               OpLoopMerge %291 %292 None
+               OpBranch %293
+        %293 = OpLabel
+        %294 = OpLoad %int %i_26
+        %295 = OpSLessThan %bool %294 %int_1
+               OpBranchConditional %295 %296 %291
+        %296 = OpLabel
+               OpStore %i_27 %int_0
+               OpBranch %297
+        %297 = OpLabel
+               OpLoopMerge %298 %299 None
+               OpBranch %300
+        %300 = OpLabel
+        %301 = OpLoad %int %i_27
+        %302 = OpSLessThan %bool %301 %int_1
+               OpBranchConditional %302 %303 %298
+        %303 = OpLabel
+               OpStore %i_28 %int_0
+               OpBranch %304
+        %304 = OpLabel
+               OpLoopMerge %305 %306 None
+               OpBranch %307
+        %307 = OpLabel
+        %308 = OpLoad %int %i_28
+        %309 = OpSLessThan %bool %308 %int_1
+               OpBranchConditional %309 %310 %305
+        %310 = OpLabel
+               OpStore %i_29 %int_0
+               OpBranch %311
+        %311 = OpLabel
+               OpLoopMerge %312 %313 None
+               OpBranch %314
+        %314 = OpLabel
+        %315 = OpLoad %int %i_29
+        %316 = OpSLessThan %bool %315 %int_1
+               OpBranchConditional %316 %317 %312
+        %317 = OpLabel
+               OpStore %i_30 %int_0
+               OpBranch %318
+        %318 = OpLabel
+               OpLoopMerge %319 %320 None
+               OpBranch %321
+        %321 = OpLabel
+        %322 = OpLoad %int %i_30
+        %323 = OpSLessThan %bool %322 %int_1
+               OpBranchConditional %323 %324 %319
+        %324 = OpLabel
+               OpStore %i_31 %int_0
+               OpBranch %325
+        %325 = OpLabel
+               OpLoopMerge %326 %327 None
+               OpBranch %328
+        %328 = OpLabel
+        %329 = OpLoad %int %i_31
+        %330 = OpSLessThan %bool %329 %int_1
+               OpBranchConditional %330 %331 %326
+        %331 = OpLabel
+               OpStore %i_32 %int_0
+               OpBranch %332
+        %332 = OpLabel
+               OpLoopMerge %333 %334 None
+               OpBranch %335
+        %335 = OpLabel
+        %336 = OpLoad %int %i_32
+        %337 = OpSLessThan %bool %336 %int_1
+               OpBranchConditional %337 %338 %333
+        %338 = OpLabel
+               OpStore %i_33 %int_0
+               OpBranch %339
+        %339 = OpLabel
+               OpLoopMerge %340 %341 None
+               OpBranch %342
+        %342 = OpLabel
+        %343 = OpLoad %int %i_33
+        %344 = OpSLessThan %bool %343 %int_1
+               OpBranchConditional %344 %345 %340
+        %345 = OpLabel
+               OpStore %i_34 %int_0
+               OpBranch %346
+        %346 = OpLabel
+               OpLoopMerge %347 %348 None
+               OpBranch %349
+        %349 = OpLabel
+        %350 = OpLoad %int %i_34
+        %351 = OpSLessThan %bool %350 %int_1
+               OpBranchConditional %351 %352 %347
+        %352 = OpLabel
+               OpStore %i_35 %int_0
+               OpBranch %353
+        %353 = OpLabel
+               OpLoopMerge %354 %355 None
+               OpBranch %356
+        %356 = OpLabel
+        %357 = OpLoad %int %i_35
+        %358 = OpSLessThan %bool %357 %int_1
+               OpBranchConditional %358 %359 %354
+        %359 = OpLabel
+               OpStore %i_36 %int_0
+               OpBranch %360
+        %360 = OpLabel
+               OpLoopMerge %361 %362 None
+               OpBranch %363
+        %363 = OpLabel
+        %364 = OpLoad %int %i_36
+        %365 = OpSLessThan %bool %364 %int_1
+               OpBranchConditional %365 %366 %361
+        %366 = OpLabel
+               OpBranch %367
+        %367 = OpLabel
+               OpLoopMerge %368 %369 None
+               OpBranch %370
+        %370 = OpLabel
+        %371 = OpLoad %int %_GLF_global_loop_count
+        %372 = OpIAdd %int %371 %int_1
+               OpStore %_GLF_global_loop_count %372
+               OpBranch %369
+        %369 = OpLabel
+        %373 = OpLoad %int %_GLF_global_loop_count
+        %374 = OpSLessThan %bool %373 %int_98
+               OpBranchConditional %374 %367 %368
+        %368 = OpLabel
+        %375 = OpLoad %int %i_36
+        %376 = OpLoad %int %i_36
+        %377 = OpAccessChain %_ptr_Function_float %m23 %375 %376
+               OpStore %377 %float_1
+        %378 = OpLoad %int %i_36
+        %379 = OpLoad %int %i_36
+        %380 = OpAccessChain %_ptr_Function_float %m24 %378 %379
+               OpStore %380 %float_1
+        %381 = OpLoad %int %i_36
+        %382 = OpLoad %int %i_36
+        %383 = OpAccessChain %_ptr_Function_float %m32 %381 %382
+               OpStore %383 %float_1
+        %384 = OpLoad %int %i_36
+        %385 = OpLoad %int %i_36
+        %386 = OpAccessChain %_ptr_Function_float %m33 %384 %385
+               OpStore %386 %float_1
+        %387 = OpLoad %int %i_36
+        %388 = OpLoad %int %i_36
+        %389 = OpAccessChain %_ptr_Function_float %m34 %387 %388
+               OpStore %389 %float_1
+        %390 = OpLoad %int %i_36
+        %391 = OpLoad %int %i_36
+        %392 = OpAccessChain %_ptr_Function_float %m42 %390 %391
+               OpStore %392 %float_1
+        %393 = OpLoad %int %i_36
+        %394 = OpLoad %int %i_36
+        %395 = OpAccessChain %_ptr_Function_float %m43 %393 %394
+               OpStore %395 %float_1
+        %396 = OpLoad %int %i_36
+        %397 = OpLoad %int %i_36
+        %398 = OpAccessChain %_ptr_Function_float %m44 %396 %397
+               OpStore %398 %float_1
+               OpBranch %362
+        %362 = OpLabel
+        %399 = OpLoad %int %i_36
+        %400 = OpIAdd %int %399 %int_1
+               OpStore %i_36 %400
+               OpBranch %360
+        %361 = OpLabel
+               OpBranch %355
+        %355 = OpLabel
+        %401 = OpLoad %int %i_35
+        %402 = OpIAdd %int %401 %int_1
+               OpStore %i_35 %402
+               OpBranch %353
+        %354 = OpLabel
+               OpBranch %348
+        %348 = OpLabel
+        %403 = OpLoad %int %i_34
+        %404 = OpIAdd %int %403 %int_1
+               OpStore %i_34 %404
+               OpBranch %346
+        %347 = OpLabel
+               OpBranch %341
+        %341 = OpLabel
+        %405 = OpLoad %int %i_33
+        %406 = OpIAdd %int %405 %int_1
+               OpStore %i_33 %406
+               OpBranch %339
+        %340 = OpLabel
+               OpBranch %334
+        %334 = OpLabel
+        %407 = OpLoad %int %i_32
+        %408 = OpIAdd %int %407 %int_1
+               OpStore %i_32 %408
+               OpBranch %332
+        %333 = OpLabel
+               OpBranch %327
+        %327 = OpLabel
+        %409 = OpLoad %int %i_31
+        %410 = OpIAdd %int %409 %int_1
+               OpStore %i_31 %410
+               OpBranch %325
+        %326 = OpLabel
+               OpBranch %320
+        %320 = OpLabel
+        %411 = OpLoad %int %i_30
+        %412 = OpIAdd %int %411 %int_1
+               OpStore %i_30 %412
+               OpBranch %318
+        %319 = OpLabel
+               OpBranch %313
+        %313 = OpLabel
+        %413 = OpLoad %int %i_29
+        %414 = OpIAdd %int %413 %int_1
+               OpStore %i_29 %414
+               OpBranch %311
+        %312 = OpLabel
+               OpBranch %306
+        %306 = OpLabel
+        %415 = OpLoad %int %i_28
+        %416 = OpIAdd %int %415 %int_1
+               OpStore %i_28 %416
+               OpBranch %304
+        %305 = OpLabel
+               OpBranch %299
+        %299 = OpLabel
+        %417 = OpLoad %int %i_27
+        %418 = OpIAdd %int %417 %int_1
+               OpStore %i_27 %418
+               OpBranch %297
+        %298 = OpLabel
+               OpBranch %292
+        %292 = OpLabel
+        %419 = OpLoad %int %i_26
+        %420 = OpIAdd %int %419 %int_1
+               OpStore %i_26 %420
+               OpBranch %290
+        %291 = OpLabel
+               OpBranch %285
+        %285 = OpLabel
+        %421 = OpLoad %int %i_25
+        %422 = OpIAdd %int %421 %int_1
+               OpStore %i_25 %422
+               OpBranch %283
+        %284 = OpLabel
+               OpBranch %278
+        %278 = OpLabel
+        %423 = OpLoad %int %i_24
+        %424 = OpIAdd %int %423 %int_1
+               OpStore %i_24 %424
+               OpBranch %276
+        %277 = OpLabel
+               OpBranch %271
+        %271 = OpLabel
+        %425 = OpLoad %int %i_23
+        %426 = OpIAdd %int %425 %int_1
+               OpStore %i_23 %426
+               OpBranch %269
+        %270 = OpLabel
+               OpBranch %264
+        %264 = OpLabel
+        %427 = OpLoad %int %i_22
+        %428 = OpIAdd %int %427 %int_1
+               OpStore %i_22 %428
+               OpBranch %262
+        %263 = OpLabel
+               OpBranch %257
+        %257 = OpLabel
+        %429 = OpLoad %int %i_21
+        %430 = OpIAdd %int %429 %int_1
+               OpStore %i_21 %430
+               OpBranch %255
+        %256 = OpLabel
+               OpBranch %250
+        %250 = OpLabel
+        %431 = OpLoad %int %i_20
+        %432 = OpIAdd %int %431 %int_1
+               OpStore %i_20 %432
+               OpBranch %248
+        %249 = OpLabel
+               OpBranch %243
+        %243 = OpLabel
+        %433 = OpLoad %int %i_19
+        %434 = OpIAdd %int %433 %int_1
+               OpStore %i_19 %434
+               OpBranch %241
+        %242 = OpLabel
+               OpBranch %236
+        %236 = OpLabel
+        %435 = OpLoad %int %i_18
+        %436 = OpIAdd %int %435 %int_1
+               OpStore %i_18 %436
+               OpBranch %234
+        %235 = OpLabel
+               OpBranch %229
+        %229 = OpLabel
+        %437 = OpLoad %int %i_17
+        %438 = OpIAdd %int %437 %int_1
+               OpStore %i_17 %438
+               OpBranch %227
+        %228 = OpLabel
+               OpBranch %222
+        %222 = OpLabel
+        %439 = OpLoad %int %i_16
+        %440 = OpIAdd %int %439 %int_1
+               OpStore %i_16 %440
+               OpBranch %220
+        %221 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %441 = OpLoad %int %i_15
+        %442 = OpIAdd %int %441 %int_1
+               OpStore %i_15 %442
+               OpBranch %213
+        %214 = OpLabel
+               OpBranch %208
+        %208 = OpLabel
+        %443 = OpLoad %int %i_14
+        %444 = OpIAdd %int %443 %int_1
+               OpStore %i_14 %444
+               OpBranch %206
+        %207 = OpLabel
+               OpBranch %201
+        %201 = OpLabel
+        %445 = OpLoad %int %i_13
+        %446 = OpIAdd %int %445 %int_1
+               OpStore %i_13 %446
+               OpBranch %199
+        %200 = OpLabel
+               OpBranch %194
+        %194 = OpLabel
+        %447 = OpLoad %int %i_12
+        %448 = OpIAdd %int %447 %int_1
+               OpStore %i_12 %448
+               OpBranch %192
+        %193 = OpLabel
+               OpBranch %187
+        %187 = OpLabel
+        %449 = OpLoad %int %i_11
+        %450 = OpIAdd %int %449 %int_1
+               OpStore %i_11 %450
+               OpBranch %185
+        %186 = OpLabel
+               OpBranch %180
+        %180 = OpLabel
+        %451 = OpLoad %int %i_10
+        %452 = OpIAdd %int %451 %int_1
+               OpStore %i_10 %452
+               OpBranch %178
+        %179 = OpLabel
+               OpBranch %173
+        %173 = OpLabel
+        %453 = OpLoad %int %i_9
+        %454 = OpIAdd %int %453 %int_1
+               OpStore %i_9 %454
+               OpBranch %171
+        %172 = OpLabel
+               OpBranch %166
+        %166 = OpLabel
+        %455 = OpLoad %int %i_8
+        %456 = OpIAdd %int %455 %int_1
+               OpStore %i_8 %456
+               OpBranch %164
+        %165 = OpLabel
+               OpBranch %159
+        %159 = OpLabel
+        %457 = OpLoad %int %i_7
+        %458 = OpIAdd %int %457 %int_1
+               OpStore %i_7 %458
+               OpBranch %157
+        %158 = OpLabel
+               OpBranch %152
+        %152 = OpLabel
+        %459 = OpLoad %int %i_6
+        %460 = OpIAdd %int %459 %int_1
+               OpStore %i_6 %460
+               OpBranch %150
+        %151 = OpLabel
+               OpBranch %145
+        %145 = OpLabel
+        %461 = OpLoad %int %i_5
+        %462 = OpIAdd %int %461 %int_1
+               OpStore %i_5 %462
+               OpBranch %143
+        %144 = OpLabel
+               OpBranch %138
+        %138 = OpLabel
+        %463 = OpLoad %int %i_4
+        %464 = OpIAdd %int %463 %int_1
+               OpStore %i_4 %464
+               OpBranch %136
+        %137 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+        %465 = OpLoad %int %i_3
+        %466 = OpIAdd %int %465 %int_1
+               OpStore %i_3 %466
+               OpBranch %129
+        %130 = OpLabel
+               OpBranch %124
+        %124 = OpLabel
+        %467 = OpLoad %int %i_2
+        %468 = OpIAdd %int %467 %int_1
+               OpStore %i_2 %468
+               OpBranch %122
+        %123 = OpLabel
+               OpBranch %117
+        %117 = OpLabel
+        %469 = OpLoad %int %i_1
+        %470 = OpIAdd %int %469 %int_1
+               OpStore %i_1 %470
+               OpBranch %115
+        %116 = OpLabel
+               OpBranch %110
+        %110 = OpLabel
+        %471 = OpLoad %int %i_0
+        %472 = OpIAdd %int %471 %int_1
+               OpStore %i_0 %472
+               OpBranch %108
+        %109 = OpLabel
+               OpBranch %103
+        %103 = OpLabel
+        %473 = OpLoad %int %i
+        %474 = OpIAdd %int %473 %int_1
+               OpStore %i %474
+               OpBranch %101
+        %102 = OpLabel
+               OpStore %sum %float_0
+               OpStore %r %int_0
+               OpBranch %475
+        %475 = OpLabel
+               OpLoopMerge %476 %477 None
+               OpBranch %478
+        %478 = OpLabel
+        %479 = OpLoad %int %_GLF_global_loop_count
+        %480 = OpSLessThan %bool %479 %int_100
+               OpBranchConditional %480 %481 %476
+        %481 = OpLabel
+        %482 = OpLoad %int %_GLF_global_loop_count
+        %483 = OpIAdd %int %482 %int_1
+               OpStore %_GLF_global_loop_count %483
+        %484 = OpLoad %int %r
+        %485 = OpAccessChain %_ptr_Function_float %m23 %int_0 %484
+        %486 = OpLoad %float %485
+        %487 = OpLoad %float %sum
+        %488 = OpFAdd %float %487 %486
+               OpStore %sum %488
+        %489 = OpLoad %int %r
+        %490 = OpAccessChain %_ptr_Function_float %m24 %int_0 %489
+        %491 = OpLoad %float %490
+        %492 = OpLoad %float %sum
+        %493 = OpFAdd %float %492 %491
+               OpStore %sum %493
+        %494 = OpLoad %int %r
+        %495 = OpAccessChain %_ptr_Function_float %m32 %int_0 %494
+        %496 = OpLoad %float %495
+        %497 = OpLoad %float %sum
+        %498 = OpFAdd %float %497 %496
+               OpStore %sum %498
+        %499 = OpLoad %int %r
+        %500 = OpAccessChain %_ptr_Function_float %m33 %int_0 %499
+        %501 = OpLoad %float %500
+        %502 = OpLoad %float %sum
+        %503 = OpFAdd %float %502 %501
+               OpStore %sum %503
+        %504 = OpLoad %int %r
+        %505 = OpAccessChain %_ptr_Function_float %m34 %int_0 %504
+        %506 = OpLoad %float %505
+        %507 = OpLoad %float %sum
+        %508 = OpFAdd %float %507 %506
+               OpStore %sum %508
+        %509 = OpLoad %int %r
+        %510 = OpAccessChain %_ptr_Function_float %m42 %int_0 %509
+        %511 = OpLoad %float %510
+        %512 = OpLoad %float %sum
+        %513 = OpFAdd %float %512 %511
+               OpStore %sum %513
+        %514 = OpLoad %int %r
+        %515 = OpAccessChain %_ptr_Function_float %m43 %int_0 %514
+        %516 = OpLoad %float %515
+        %517 = OpLoad %float %sum
+        %518 = OpFAdd %float %517 %516
+               OpStore %sum %518
+        %519 = OpLoad %int %r
+        %520 = OpAccessChain %_ptr_Function_float %m44 %int_0 %519
+        %521 = OpLoad %float %520
+        %522 = OpLoad %float %sum
+        %523 = OpFAdd %float %522 %521
+               OpStore %sum %523
+               OpBranch %477
+        %477 = OpLabel
+        %524 = OpLoad %int %r
+        %525 = OpIAdd %int %524 %int_1
+               OpStore %r %525
+               OpBranch %475
+        %476 = OpLabel
+        %526 = OpLoad %float %sum
+        %527 = OpFOrdEqual %bool %526 %float_8
+               OpSelectionMerge %528 None
+               OpBranchConditional %527 %529 %530
+        %529 = OpLabel
+               OpStore %_GLF_color %99
+               OpBranch %528
+        %530 = OpLabel
+               OpStore %_GLF_color %68
+               OpBranch %528
+        %528 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..362d952
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,324 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+static int x_GLF_global_loop_count = 0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x3 m23 = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float2x4 m24 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x2 m32 = float3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x3 m33 = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x4 m34 = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4x2 m42 = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4x3 m43 = float4x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4x4 m44 = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int i_3 = 0;
+  int i_4 = 0;
+  int i_5 = 0;
+  int i_6 = 0;
+  int i_7 = 0;
+  int i_8 = 0;
+  int i_9 = 0;
+  int i_10 = 0;
+  int i_11 = 0;
+  int i_12 = 0;
+  int i_13 = 0;
+  int i_14 = 0;
+  int i_15 = 0;
+  int i_16 = 0;
+  int i_17 = 0;
+  int i_18 = 0;
+  int i_19 = 0;
+  int i_20 = 0;
+  int i_21 = 0;
+  int i_22 = 0;
+  int i_23 = 0;
+  int i_24 = 0;
+  int i_25 = 0;
+  int i_26 = 0;
+  int i_27 = 0;
+  int i_28 = 0;
+  int i_29 = 0;
+  int i_30 = 0;
+  int i_31 = 0;
+  int i_32 = 0;
+  int i_33 = 0;
+  int i_34 = 0;
+  int i_35 = 0;
+  int i_36 = 0;
+  int i_37 = 0;
+  float sum = 0.0f;
+  int r = 0;
+  x_GLF_global_loop_count = 0;
+  m23 = float2x3(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));
+  i = 0;
+  {
+    for(; (i < 1); i = (i + 1)) {
+      i_1 = 0;
+      {
+        for(; (i_1 < 1); i_1 = (i_1 + 1)) {
+          i_2 = 0;
+          {
+            for(; (i_2 < 1); i_2 = (i_2 + 1)) {
+              i_3 = 0;
+              {
+                for(; (i_3 < 1); i_3 = (i_3 + 1)) {
+                  i_4 = 0;
+                  {
+                    for(; (i_4 < 1); i_4 = (i_4 + 1)) {
+                      i_5 = 0;
+                      {
+                        for(; (i_5 < 1); i_5 = (i_5 + 1)) {
+                          i_6 = 0;
+                          {
+                            for(; (i_6 < 1); i_6 = (i_6 + 1)) {
+                              i_7 = 0;
+                              {
+                                for(; (i_7 < 1); i_7 = (i_7 + 1)) {
+                                  i_8 = 0;
+                                  {
+                                    for(; (i_8 < 1); i_8 = (i_8 + 1)) {
+                                      i_9 = 0;
+                                      {
+                                        for(; (i_9 < 1); i_9 = (i_9 + 1)) {
+                                          i_10 = 0;
+                                          {
+                                            for(; (i_10 < 1); i_10 = (i_10 + 1)) {
+                                              i_11 = 0;
+                                              {
+                                                for(; (i_11 < 1); i_11 = (i_11 + 1)) {
+                                                  i_12 = 0;
+                                                  {
+                                                    for(; (i_12 < 1); i_12 = (i_12 + 1)) {
+                                                      i_13 = 0;
+                                                      {
+                                                        for(; (i_13 < 1); i_13 = (i_13 + 1)) {
+                                                          i_14 = 0;
+                                                          {
+                                                            for(; (i_14 < 1); i_14 = (i_14 + 1)) {
+                                                              i_15 = 0;
+                                                              {
+                                                                for(; (i_15 < 1); i_15 = (i_15 + 1)) {
+                                                                  i_16 = 0;
+                                                                  {
+                                                                    for(; (i_16 < 1); i_16 = (i_16 + 1)) {
+                                                                      i_17 = 0;
+                                                                      {
+                                                                        for(; (i_17 < 1); i_17 = (i_17 + 1)) {
+                                                                          i_18 = 0;
+                                                                          {
+                                                                            for(; (i_18 < 1); i_18 = (i_18 + 1)) {
+                                                                              i_19 = 0;
+                                                                              {
+                                                                                for(; (i_19 < 1); i_19 = (i_19 + 1)) {
+                                                                                  i_20 = 0;
+                                                                                  {
+                                                                                    for(; (i_20 < 1); i_20 = (i_20 + 1)) {
+                                                                                      i_21 = 0;
+                                                                                      {
+                                                                                        for(; (i_21 < 1); i_21 = (i_21 + 1)) {
+                                                                                          i_22 = 0;
+                                                                                          {
+                                                                                            for(; (i_22 < 1); i_22 = (i_22 + 1)) {
+                                                                                              i_23 = 0;
+                                                                                              {
+                                                                                                for(; (i_23 < 1); i_23 = (i_23 + 1)) {
+                                                                                                  i_24 = 0;
+                                                                                                  {
+                                                                                                    for(; (i_24 < 1); i_24 = (i_24 + 1)) {
+                                                                                                      i_25 = 0;
+                                                                                                      {
+                                                                                                        for(; (i_25 < 1); i_25 = (i_25 + 1)) {
+                                                                                                          i_26 = 0;
+                                                                                                          {
+                                                                                                            for(; (i_26 < 1); i_26 = (i_26 + 1)) {
+                                                                                                              i_27 = 0;
+                                                                                                              {
+                                                                                                                for(; (i_27 < 1); i_27 = (i_27 + 1)) {
+                                                                                                                  i_28 = 0;
+                                                                                                                  {
+                                                                                                                    for(; (i_28 < 1); i_28 = (i_28 + 1)) {
+                                                                                                                      i_29 = 0;
+                                                                                                                      {
+                                                                                                                        for(; (i_29 < 1); i_29 = (i_29 + 1)) {
+                                                                                                                          i_30 = 0;
+                                                                                                                          {
+                                                                                                                            for(; (i_30 < 1); i_30 = (i_30 + 1)) {
+                                                                                                                              i_31 = 0;
+                                                                                                                              {
+                                                                                                                                for(; (i_31 < 1); i_31 = (i_31 + 1)) {
+                                                                                                                                  i_32 = 0;
+                                                                                                                                  {
+                                                                                                                                    for(; (i_32 < 1); i_32 = (i_32 + 1)) {
+                                                                                                                                      i_33 = 0;
+                                                                                                                                      {
+                                                                                                                                        for(; (i_33 < 1); i_33 = (i_33 + 1)) {
+                                                                                                                                          i_34 = 0;
+                                                                                                                                          {
+                                                                                                                                            for(; (i_34 < 1); i_34 = (i_34 + 1)) {
+                                                                                                                                              i_35 = 0;
+                                                                                                                                              {
+                                                                                                                                                for(; (i_35 < 1); i_35 = (i_35 + 1)) {
+                                                                                                                                                  i_36 = 0;
+                                                                                                                                                  {
+                                                                                                                                                    for(; (i_36 < 1); i_36 = (i_36 + 1)) {
+                                                                                                                                                      i_37 = 0;
+                                                                                                                                                      {
+                                                                                                                                                        for(; (i_37 < 1); i_37 = (i_37 + 1)) {
+                                                                                                                                                          while (true) {
+                                                                                                                                                            x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+                                                                                                                                                            {
+                                                                                                                                                              if ((x_GLF_global_loop_count < 98)) {
+                                                                                                                                                              } else {
+                                                                                                                                                                break;
+                                                                                                                                                              }
+                                                                                                                                                            }
+                                                                                                                                                          }
+                                                                                                                                                          set_float3(m23[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float4(m24[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float2(m32[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float3(m33[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float4(m34[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float2(m42[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float3(m43[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float4(m44[i_37], i_37, 1.0f);
+                                                                                                                                                        }
+                                                                                                                                                      }
+                                                                                                                                                    }
+                                                                                                                                                  }
+                                                                                                                                                }
+                                                                                                                                              }
+                                                                                                                                            }
+                                                                                                                                          }
+                                                                                                                                        }
+                                                                                                                                      }
+                                                                                                                                    }
+                                                                                                                                  }
+                                                                                                                                }
+                                                                                                                              }
+                                                                                                                            }
+                                                                                                                          }
+                                                                                                                        }
+                                                                                                                      }
+                                                                                                                    }
+                                                                                                                  }
+                                                                                                                }
+                                                                                                              }
+                                                                                                            }
+                                                                                                          }
+                                                                                                        }
+                                                                                                      }
+                                                                                                    }
+                                                                                                  }
+                                                                                                }
+                                                                                              }
+                                                                                            }
+                                                                                          }
+                                                                                        }
+                                                                                      }
+                                                                                    }
+                                                                                  }
+                                                                                }
+                                                                              }
+                                                                            }
+                                                                          }
+                                                                        }
+                                                                      }
+                                                                    }
+                                                                  }
+                                                                }
+                                                              }
+                                                            }
+                                                          }
+                                                        }
+                                                      }
+                                                    }
+                                                  }
+                                                }
+                                              }
+                                            }
+                                          }
+                                        }
+                                      }
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  sum = 0.0f;
+  r = 0;
+  {
+    for(; (x_GLF_global_loop_count < 100); r = (r + 1)) {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      const float x_486 = m23[0][r];
+      sum = (sum + x_486);
+      const float x_491 = m24[0][r];
+      sum = (sum + x_491);
+      const float x_496 = m32[0][r];
+      sum = (sum + x_496);
+      const float x_501 = m33[0][r];
+      sum = (sum + x_501);
+      const float x_506 = m34[0][r];
+      sum = (sum + x_506);
+      const float x_511 = m42[0][r];
+      sum = (sum + x_511);
+      const float x_516 = m43[0][r];
+      sum = (sum + x_516);
+      const float x_521 = m44[0][r];
+      sum = (sum + x_521);
+    }
+  }
+  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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..0ab9beb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.msl
@@ -0,0 +1,624 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  float2x3 m23 = float2x3(0.0f);
+  float2x4 m24 = float2x4(0.0f);
+  float3x2 m32 = float3x2(0.0f);
+  float3x3 m33 = float3x3(0.0f);
+  float3x4 m34 = float3x4(0.0f);
+  float4x2 m42 = float4x2(0.0f);
+  float4x3 m43 = float4x3(0.0f);
+  float4x4 m44 = float4x4(0.0f);
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int i_3 = 0;
+  int i_4 = 0;
+  int i_5 = 0;
+  int i_6 = 0;
+  int i_7 = 0;
+  int i_8 = 0;
+  int i_9 = 0;
+  int i_10 = 0;
+  int i_11 = 0;
+  int i_12 = 0;
+  int i_13 = 0;
+  int i_14 = 0;
+  int i_15 = 0;
+  int i_16 = 0;
+  int i_17 = 0;
+  int i_18 = 0;
+  int i_19 = 0;
+  int i_20 = 0;
+  int i_21 = 0;
+  int i_22 = 0;
+  int i_23 = 0;
+  int i_24 = 0;
+  int i_25 = 0;
+  int i_26 = 0;
+  int i_27 = 0;
+  int i_28 = 0;
+  int i_29 = 0;
+  int i_30 = 0;
+  int i_31 = 0;
+  int i_32 = 0;
+  int i_33 = 0;
+  int i_34 = 0;
+  int i_35 = 0;
+  int i_36 = 0;
+  int i_37 = 0;
+  float sum = 0.0f;
+  int r = 0;
+  *(tint_symbol_4) = 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));
+  i = 0;
+  while (true) {
+    int const x_105 = i;
+    if ((x_105 < 1)) {
+    } else {
+      break;
+    }
+    i_1 = 0;
+    while (true) {
+      int const x_112 = i_1;
+      if ((x_112 < 1)) {
+      } else {
+        break;
+      }
+      i_2 = 0;
+      while (true) {
+        int const x_119 = i_2;
+        if ((x_119 < 1)) {
+        } else {
+          break;
+        }
+        i_3 = 0;
+        while (true) {
+          int const x_126 = i_3;
+          if ((x_126 < 1)) {
+          } else {
+            break;
+          }
+          i_4 = 0;
+          while (true) {
+            int const x_133 = i_4;
+            if ((x_133 < 1)) {
+            } else {
+              break;
+            }
+            i_5 = 0;
+            while (true) {
+              int const x_140 = i_5;
+              if ((x_140 < 1)) {
+              } else {
+                break;
+              }
+              i_6 = 0;
+              while (true) {
+                int const x_147 = i_6;
+                if ((x_147 < 1)) {
+                } else {
+                  break;
+                }
+                i_7 = 0;
+                while (true) {
+                  int const x_154 = i_7;
+                  if ((x_154 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i_8 = 0;
+                  while (true) {
+                    int const x_161 = i_8;
+                    if ((x_161 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i_9 = 0;
+                    while (true) {
+                      int const x_168 = i_9;
+                      if ((x_168 < 1)) {
+                      } else {
+                        break;
+                      }
+                      i_10 = 0;
+                      while (true) {
+                        int const x_175 = i_10;
+                        if ((x_175 < 1)) {
+                        } else {
+                          break;
+                        }
+                        i_11 = 0;
+                        while (true) {
+                          int const x_182 = i_11;
+                          if ((x_182 < 1)) {
+                          } else {
+                            break;
+                          }
+                          i_12 = 0;
+                          while (true) {
+                            int const x_189 = i_12;
+                            if ((x_189 < 1)) {
+                            } else {
+                              break;
+                            }
+                            i_13 = 0;
+                            while (true) {
+                              int const x_196 = i_13;
+                              if ((x_196 < 1)) {
+                              } else {
+                                break;
+                              }
+                              i_14 = 0;
+                              while (true) {
+                                int const x_203 = i_14;
+                                if ((x_203 < 1)) {
+                                } else {
+                                  break;
+                                }
+                                i_15 = 0;
+                                while (true) {
+                                  int const x_210 = i_15;
+                                  if ((x_210 < 1)) {
+                                  } else {
+                                    break;
+                                  }
+                                  i_16 = 0;
+                                  while (true) {
+                                    int const x_217 = i_16;
+                                    if ((x_217 < 1)) {
+                                    } else {
+                                      break;
+                                    }
+                                    i_17 = 0;
+                                    while (true) {
+                                      int const x_224 = i_17;
+                                      if ((x_224 < 1)) {
+                                      } else {
+                                        break;
+                                      }
+                                      i_18 = 0;
+                                      while (true) {
+                                        int const x_231 = i_18;
+                                        if ((x_231 < 1)) {
+                                        } else {
+                                          break;
+                                        }
+                                        i_19 = 0;
+                                        while (true) {
+                                          int const x_238 = i_19;
+                                          if ((x_238 < 1)) {
+                                          } else {
+                                            break;
+                                          }
+                                          i_20 = 0;
+                                          while (true) {
+                                            int const x_245 = i_20;
+                                            if ((x_245 < 1)) {
+                                            } else {
+                                              break;
+                                            }
+                                            i_21 = 0;
+                                            while (true) {
+                                              int const x_252 = i_21;
+                                              if ((x_252 < 1)) {
+                                              } else {
+                                                break;
+                                              }
+                                              i_22 = 0;
+                                              while (true) {
+                                                int const x_259 = i_22;
+                                                if ((x_259 < 1)) {
+                                                } else {
+                                                  break;
+                                                }
+                                                i_23 = 0;
+                                                while (true) {
+                                                  int const x_266 = i_23;
+                                                  if ((x_266 < 1)) {
+                                                  } else {
+                                                    break;
+                                                  }
+                                                  i_24 = 0;
+                                                  while (true) {
+                                                    int const x_273 = i_24;
+                                                    if ((x_273 < 1)) {
+                                                    } else {
+                                                      break;
+                                                    }
+                                                    i_25 = 0;
+                                                    while (true) {
+                                                      int const x_280 = i_25;
+                                                      if ((x_280 < 1)) {
+                                                      } else {
+                                                        break;
+                                                      }
+                                                      i_26 = 0;
+                                                      while (true) {
+                                                        int const x_287 = i_26;
+                                                        if ((x_287 < 1)) {
+                                                        } else {
+                                                          break;
+                                                        }
+                                                        i_27 = 0;
+                                                        while (true) {
+                                                          int const x_294 = i_27;
+                                                          if ((x_294 < 1)) {
+                                                          } else {
+                                                            break;
+                                                          }
+                                                          i_28 = 0;
+                                                          while (true) {
+                                                            int const x_301 = i_28;
+                                                            if ((x_301 < 1)) {
+                                                            } else {
+                                                              break;
+                                                            }
+                                                            i_29 = 0;
+                                                            while (true) {
+                                                              int const x_308 = i_29;
+                                                              if ((x_308 < 1)) {
+                                                              } else {
+                                                                break;
+                                                              }
+                                                              i_30 = 0;
+                                                              while (true) {
+                                                                int const x_315 = i_30;
+                                                                if ((x_315 < 1)) {
+                                                                } else {
+                                                                  break;
+                                                                }
+                                                                i_31 = 0;
+                                                                while (true) {
+                                                                  int const x_322 = i_31;
+                                                                  if ((x_322 < 1)) {
+                                                                  } else {
+                                                                    break;
+                                                                  }
+                                                                  i_32 = 0;
+                                                                  while (true) {
+                                                                    int const x_329 = i_32;
+                                                                    if ((x_329 < 1)) {
+                                                                    } else {
+                                                                      break;
+                                                                    }
+                                                                    i_33 = 0;
+                                                                    while (true) {
+                                                                      int const x_336 = i_33;
+                                                                      if ((x_336 < 1)) {
+                                                                      } else {
+                                                                        break;
+                                                                      }
+                                                                      i_34 = 0;
+                                                                      while (true) {
+                                                                        int const x_343 = i_34;
+                                                                        if ((x_343 < 1)) {
+                                                                        } else {
+                                                                          break;
+                                                                        }
+                                                                        i_35 = 0;
+                                                                        while (true) {
+                                                                          int const x_350 = i_35;
+                                                                          if ((x_350 < 1)) {
+                                                                          } else {
+                                                                            break;
+                                                                          }
+                                                                          i_36 = 0;
+                                                                          while (true) {
+                                                                            int const x_357 = i_36;
+                                                                            if ((x_357 < 1)) {
+                                                                            } else {
+                                                                              break;
+                                                                            }
+                                                                            i_37 = 0;
+                                                                            while (true) {
+                                                                              int const x_364 = i_37;
+                                                                              if ((x_364 < 1)) {
+                                                                              } else {
+                                                                                break;
+                                                                              }
+                                                                              while (true) {
+                                                                                int const x_371 = *(tint_symbol_4);
+                                                                                *(tint_symbol_4) = (x_371 + 1);
+                                                                                {
+                                                                                  int const x_373 = *(tint_symbol_4);
+                                                                                  if ((x_373 < 98)) {
+                                                                                  } else {
+                                                                                    break;
+                                                                                  }
+                                                                                }
+                                                                              }
+                                                                              int const x_375 = i_37;
+                                                                              int const x_376 = i_37;
+                                                                              m23[x_375][x_376] = 1.0f;
+                                                                              int const x_378 = i_37;
+                                                                              int const x_379 = i_37;
+                                                                              m24[x_378][x_379] = 1.0f;
+                                                                              int const x_381 = i_37;
+                                                                              int const x_382 = i_37;
+                                                                              m32[x_381][x_382] = 1.0f;
+                                                                              int const x_384 = i_37;
+                                                                              int const x_385 = i_37;
+                                                                              m33[x_384][x_385] = 1.0f;
+                                                                              int const x_387 = i_37;
+                                                                              int const x_388 = i_37;
+                                                                              m34[x_387][x_388] = 1.0f;
+                                                                              int const x_390 = i_37;
+                                                                              int const x_391 = i_37;
+                                                                              m42[x_390][x_391] = 1.0f;
+                                                                              int const x_393 = i_37;
+                                                                              int const x_394 = i_37;
+                                                                              m43[x_393][x_394] = 1.0f;
+                                                                              int const x_396 = i_37;
+                                                                              int const x_397 = i_37;
+                                                                              m44[x_396][x_397] = 1.0f;
+                                                                              {
+                                                                                int const x_399 = i_37;
+                                                                                i_37 = (x_399 + 1);
+                                                                              }
+                                                                            }
+                                                                            {
+                                                                              int const x_401 = i_36;
+                                                                              i_36 = (x_401 + 1);
+                                                                            }
+                                                                          }
+                                                                          {
+                                                                            int const x_403 = i_35;
+                                                                            i_35 = (x_403 + 1);
+                                                                          }
+                                                                        }
+                                                                        {
+                                                                          int const x_405 = i_34;
+                                                                          i_34 = (x_405 + 1);
+                                                                        }
+                                                                      }
+                                                                      {
+                                                                        int const x_407 = i_33;
+                                                                        i_33 = (x_407 + 1);
+                                                                      }
+                                                                    }
+                                                                    {
+                                                                      int const x_409 = i_32;
+                                                                      i_32 = (x_409 + 1);
+                                                                    }
+                                                                  }
+                                                                  {
+                                                                    int const x_411 = i_31;
+                                                                    i_31 = (x_411 + 1);
+                                                                  }
+                                                                }
+                                                                {
+                                                                  int const x_413 = i_30;
+                                                                  i_30 = (x_413 + 1);
+                                                                }
+                                                              }
+                                                              {
+                                                                int const x_415 = i_29;
+                                                                i_29 = (x_415 + 1);
+                                                              }
+                                                            }
+                                                            {
+                                                              int const x_417 = i_28;
+                                                              i_28 = (x_417 + 1);
+                                                            }
+                                                          }
+                                                          {
+                                                            int const x_419 = i_27;
+                                                            i_27 = (x_419 + 1);
+                                                          }
+                                                        }
+                                                        {
+                                                          int const x_421 = i_26;
+                                                          i_26 = (x_421 + 1);
+                                                        }
+                                                      }
+                                                      {
+                                                        int const x_423 = i_25;
+                                                        i_25 = (x_423 + 1);
+                                                      }
+                                                    }
+                                                    {
+                                                      int const x_425 = i_24;
+                                                      i_24 = (x_425 + 1);
+                                                    }
+                                                  }
+                                                  {
+                                                    int const x_427 = i_23;
+                                                    i_23 = (x_427 + 1);
+                                                  }
+                                                }
+                                                {
+                                                  int const x_429 = i_22;
+                                                  i_22 = (x_429 + 1);
+                                                }
+                                              }
+                                              {
+                                                int const x_431 = i_21;
+                                                i_21 = (x_431 + 1);
+                                              }
+                                            }
+                                            {
+                                              int const x_433 = i_20;
+                                              i_20 = (x_433 + 1);
+                                            }
+                                          }
+                                          {
+                                            int const x_435 = i_19;
+                                            i_19 = (x_435 + 1);
+                                          }
+                                        }
+                                        {
+                                          int const x_437 = i_18;
+                                          i_18 = (x_437 + 1);
+                                        }
+                                      }
+                                      {
+                                        int const x_439 = i_17;
+                                        i_17 = (x_439 + 1);
+                                      }
+                                    }
+                                    {
+                                      int const x_441 = i_16;
+                                      i_16 = (x_441 + 1);
+                                    }
+                                  }
+                                  {
+                                    int const x_443 = i_15;
+                                    i_15 = (x_443 + 1);
+                                  }
+                                }
+                                {
+                                  int const x_445 = i_14;
+                                  i_14 = (x_445 + 1);
+                                }
+                              }
+                              {
+                                int const x_447 = i_13;
+                                i_13 = (x_447 + 1);
+                              }
+                            }
+                            {
+                              int const x_449 = i_12;
+                              i_12 = (x_449 + 1);
+                            }
+                          }
+                          {
+                            int const x_451 = i_11;
+                            i_11 = (x_451 + 1);
+                          }
+                        }
+                        {
+                          int const x_453 = i_10;
+                          i_10 = (x_453 + 1);
+                        }
+                      }
+                      {
+                        int const x_455 = i_9;
+                        i_9 = (x_455 + 1);
+                      }
+                    }
+                    {
+                      int const x_457 = i_8;
+                      i_8 = (x_457 + 1);
+                    }
+                  }
+                  {
+                    int const x_459 = i_7;
+                    i_7 = (x_459 + 1);
+                  }
+                }
+                {
+                  int const x_461 = i_6;
+                  i_6 = (x_461 + 1);
+                }
+              }
+              {
+                int const x_463 = i_5;
+                i_5 = (x_463 + 1);
+              }
+            }
+            {
+              int const x_465 = i_4;
+              i_4 = (x_465 + 1);
+            }
+          }
+          {
+            int const x_467 = i_3;
+            i_3 = (x_467 + 1);
+          }
+        }
+        {
+          int const x_469 = i_2;
+          i_2 = (x_469 + 1);
+        }
+      }
+      {
+        int const x_471 = i_1;
+        i_1 = (x_471 + 1);
+      }
+    }
+    {
+      int const x_473 = i;
+      i = (x_473 + 1);
+    }
+  }
+  sum = 0.0f;
+  r = 0;
+  while (true) {
+    int const x_479 = *(tint_symbol_4);
+    if ((x_479 < 100)) {
+    } else {
+      break;
+    }
+    int const x_482 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_482 + 1);
+    int const x_484 = r;
+    float const x_486 = m23[0][x_484];
+    float const x_487 = sum;
+    sum = (x_487 + x_486);
+    int const x_489 = r;
+    float const x_491 = m24[0][x_489];
+    float const x_492 = sum;
+    sum = (x_492 + x_491);
+    int const x_494 = r;
+    float const x_496 = m32[0][x_494];
+    float const x_497 = sum;
+    sum = (x_497 + x_496);
+    int const x_499 = r;
+    float const x_501 = m33[0][x_499];
+    float const x_502 = sum;
+    sum = (x_502 + x_501);
+    int const x_504 = r;
+    float const x_506 = m34[0][x_504];
+    float const x_507 = sum;
+    sum = (x_507 + x_506);
+    int const x_509 = r;
+    float const x_511 = m42[0][x_509];
+    float const x_512 = sum;
+    sum = (x_512 + x_511);
+    int const x_514 = r;
+    float const x_516 = m43[0][x_514];
+    float const x_517 = sum;
+    sum = (x_517 + x_516);
+    int const x_519 = r;
+    float const x_521 = m44[0][x_519];
+    float const x_522 = sum;
+    sum = (x_522 + x_521);
+    {
+      int const x_524 = r;
+      r = (x_524 + 1);
+    }
+  }
+  float const x_526 = sum;
+  if ((x_526 == 8.0f)) {
+    *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..eb04454
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,1187 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 636
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m23 "m23"
+               OpName %m24 "m24"
+               OpName %m32 "m32"
+               OpName %m33 "m33"
+               OpName %m34 "m34"
+               OpName %m42 "m42"
+               OpName %m43 "m43"
+               OpName %m44 "m44"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %i_3 "i_3"
+               OpName %i_4 "i_4"
+               OpName %i_5 "i_5"
+               OpName %i_6 "i_6"
+               OpName %i_7 "i_7"
+               OpName %i_8 "i_8"
+               OpName %i_9 "i_9"
+               OpName %i_10 "i_10"
+               OpName %i_11 "i_11"
+               OpName %i_12 "i_12"
+               OpName %i_13 "i_13"
+               OpName %i_14 "i_14"
+               OpName %i_15 "i_15"
+               OpName %i_16 "i_16"
+               OpName %i_17 "i_17"
+               OpName %i_18 "i_18"
+               OpName %i_19 "i_19"
+               OpName %i_20 "i_20"
+               OpName %i_21 "i_21"
+               OpName %i_22 "i_22"
+               OpName %i_23 "i_23"
+               OpName %i_24 "i_24"
+               OpName %i_25 "i_25"
+               OpName %i_26 "i_26"
+               OpName %i_27 "i_27"
+               OpName %i_28 "i_28"
+               OpName %i_29 "i_29"
+               OpName %i_30 "i_30"
+               OpName %i_31 "i_31"
+               OpName %i_32 "i_32"
+               OpName %i_33 "i_33"
+               OpName %i_34 "i_34"
+               OpName %i_35 "i_35"
+               OpName %i_36 "i_36"
+               OpName %i_37 "i_37"
+               OpName %sum "sum"
+               OpName %r "r"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat2v3float = OpTypeMatrix %v3float 2
+%_ptr_Function_mat2v3float = OpTypePointer Function %mat2v3float
+         %20 = OpConstantNull %mat2v3float
+%mat2v4float = OpTypeMatrix %v4float 2
+%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
+         %24 = OpConstantNull %mat2v4float
+    %v2float = OpTypeVector %float 2
+%mat3v2float = OpTypeMatrix %v2float 3
+%_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float
+         %29 = OpConstantNull %mat3v2float
+%mat3v3float = OpTypeMatrix %v3float 3
+%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
+         %33 = OpConstantNull %mat3v3float
+%mat3v4float = OpTypeMatrix %v4float 3
+%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
+         %37 = OpConstantNull %mat3v4float
+%mat4v2float = OpTypeMatrix %v2float 4
+%_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float
+         %41 = OpConstantNull %mat4v2float
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %45 = OpConstantNull %mat4v3float
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %49 = OpConstantNull %mat4v4float
+%_ptr_Function_int = OpTypePointer Function %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %91 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+         %95 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %96 = OpConstantComposite %mat2v3float %95 %95
+         %97 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %98 = OpConstantComposite %mat2v4float %97 %97
+         %99 = OpConstantComposite %v2float %float_0 %float_0
+        %100 = OpConstantComposite %mat3v2float %99 %99 %99
+        %101 = OpConstantComposite %mat3v3float %95 %95 %95
+        %102 = OpConstantComposite %mat3v4float %97 %97 %97
+        %103 = OpConstantComposite %mat4v2float %99 %99 %99 %99
+        %104 = OpConstantComposite %mat4v3float %95 %95 %95 %95
+        %105 = OpConstantComposite %mat4v4float %97 %97 %97 %97
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %int_98 = OpConstant %int 98
+    %float_1 = OpConstant %float 1
+    %int_100 = OpConstant %int 100
+    %float_8 = OpConstant %float 8
+        %623 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %624 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+        %m23 = OpVariable %_ptr_Function_mat2v3float Function %20
+        %m24 = OpVariable %_ptr_Function_mat2v4float Function %24
+        %m32 = OpVariable %_ptr_Function_mat3v2float Function %29
+        %m33 = OpVariable %_ptr_Function_mat3v3float Function %33
+        %m34 = OpVariable %_ptr_Function_mat3v4float Function %37
+        %m42 = OpVariable %_ptr_Function_mat4v2float Function %41
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function %45
+        %m44 = OpVariable %_ptr_Function_mat4v4float Function %49
+          %i = OpVariable %_ptr_Function_int Function %4
+        %i_1 = OpVariable %_ptr_Function_int Function %4
+        %i_2 = OpVariable %_ptr_Function_int Function %4
+        %i_3 = OpVariable %_ptr_Function_int Function %4
+        %i_4 = OpVariable %_ptr_Function_int Function %4
+        %i_5 = OpVariable %_ptr_Function_int Function %4
+        %i_6 = OpVariable %_ptr_Function_int Function %4
+        %i_7 = OpVariable %_ptr_Function_int Function %4
+        %i_8 = OpVariable %_ptr_Function_int Function %4
+        %i_9 = OpVariable %_ptr_Function_int Function %4
+       %i_10 = OpVariable %_ptr_Function_int Function %4
+       %i_11 = OpVariable %_ptr_Function_int Function %4
+       %i_12 = OpVariable %_ptr_Function_int Function %4
+       %i_13 = OpVariable %_ptr_Function_int Function %4
+       %i_14 = OpVariable %_ptr_Function_int Function %4
+       %i_15 = OpVariable %_ptr_Function_int Function %4
+       %i_16 = OpVariable %_ptr_Function_int Function %4
+       %i_17 = OpVariable %_ptr_Function_int Function %4
+       %i_18 = OpVariable %_ptr_Function_int Function %4
+       %i_19 = OpVariable %_ptr_Function_int Function %4
+       %i_20 = OpVariable %_ptr_Function_int Function %4
+       %i_21 = OpVariable %_ptr_Function_int Function %4
+       %i_22 = OpVariable %_ptr_Function_int Function %4
+       %i_23 = OpVariable %_ptr_Function_int Function %4
+       %i_24 = OpVariable %_ptr_Function_int Function %4
+       %i_25 = OpVariable %_ptr_Function_int Function %4
+       %i_26 = OpVariable %_ptr_Function_int Function %4
+       %i_27 = OpVariable %_ptr_Function_int Function %4
+       %i_28 = OpVariable %_ptr_Function_int Function %4
+       %i_29 = OpVariable %_ptr_Function_int Function %4
+       %i_30 = OpVariable %_ptr_Function_int Function %4
+       %i_31 = OpVariable %_ptr_Function_int Function %4
+       %i_32 = OpVariable %_ptr_Function_int Function %4
+       %i_33 = OpVariable %_ptr_Function_int Function %4
+       %i_34 = OpVariable %_ptr_Function_int Function %4
+       %i_35 = OpVariable %_ptr_Function_int Function %4
+       %i_36 = OpVariable %_ptr_Function_int Function %4
+       %i_37 = OpVariable %_ptr_Function_int Function %4
+        %sum = OpVariable %_ptr_Function_float Function %91
+          %r = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+               OpStore %m23 %96
+               OpStore %m24 %98
+               OpStore %m32 %100
+               OpStore %m33 %101
+               OpStore %m34 %102
+               OpStore %m42 %103
+               OpStore %m43 %104
+               OpStore %m44 %105
+               OpStore %i %int_0
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %i
+        %112 = OpSLessThan %bool %110 %int_1
+               OpSelectionMerge %114 None
+               OpBranchConditional %112 %115 %116
+        %115 = OpLabel
+               OpBranch %114
+        %116 = OpLabel
+               OpBranch %107
+        %114 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpLoad %int %i_1
+        %122 = OpSLessThan %bool %121 %int_1
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %125
+        %124 = OpLabel
+               OpBranch %123
+        %125 = OpLabel
+               OpBranch %118
+        %123 = OpLabel
+               OpStore %i_2 %int_0
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %130 = OpLoad %int %i_2
+        %131 = OpSLessThan %bool %130 %int_1
+               OpSelectionMerge %132 None
+               OpBranchConditional %131 %133 %134
+        %133 = OpLabel
+               OpBranch %132
+        %134 = OpLabel
+               OpBranch %127
+        %132 = OpLabel
+               OpStore %i_3 %int_0
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %139 = OpLoad %int %i_3
+        %140 = OpSLessThan %bool %139 %int_1
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %143
+        %142 = OpLabel
+               OpBranch %141
+        %143 = OpLabel
+               OpBranch %136
+        %141 = OpLabel
+               OpStore %i_4 %int_0
+               OpBranch %144
+        %144 = OpLabel
+               OpLoopMerge %145 %146 None
+               OpBranch %147
+        %147 = OpLabel
+        %148 = OpLoad %int %i_4
+        %149 = OpSLessThan %bool %148 %int_1
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %152
+        %151 = OpLabel
+               OpBranch %150
+        %152 = OpLabel
+               OpBranch %145
+        %150 = OpLabel
+               OpStore %i_5 %int_0
+               OpBranch %153
+        %153 = OpLabel
+               OpLoopMerge %154 %155 None
+               OpBranch %156
+        %156 = OpLabel
+        %157 = OpLoad %int %i_5
+        %158 = OpSLessThan %bool %157 %int_1
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %161
+        %160 = OpLabel
+               OpBranch %159
+        %161 = OpLabel
+               OpBranch %154
+        %159 = OpLabel
+               OpStore %i_6 %int_0
+               OpBranch %162
+        %162 = OpLabel
+               OpLoopMerge %163 %164 None
+               OpBranch %165
+        %165 = OpLabel
+        %166 = OpLoad %int %i_6
+        %167 = OpSLessThan %bool %166 %int_1
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %163
+        %168 = OpLabel
+               OpStore %i_7 %int_0
+               OpBranch %171
+        %171 = OpLabel
+               OpLoopMerge %172 %173 None
+               OpBranch %174
+        %174 = OpLabel
+        %175 = OpLoad %int %i_7
+        %176 = OpSLessThan %bool %175 %int_1
+               OpSelectionMerge %177 None
+               OpBranchConditional %176 %178 %179
+        %178 = OpLabel
+               OpBranch %177
+        %179 = OpLabel
+               OpBranch %172
+        %177 = OpLabel
+               OpStore %i_8 %int_0
+               OpBranch %180
+        %180 = OpLabel
+               OpLoopMerge %181 %182 None
+               OpBranch %183
+        %183 = OpLabel
+        %184 = OpLoad %int %i_8
+        %185 = OpSLessThan %bool %184 %int_1
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+               OpBranch %181
+        %186 = OpLabel
+               OpStore %i_9 %int_0
+               OpBranch %189
+        %189 = OpLabel
+               OpLoopMerge %190 %191 None
+               OpBranch %192
+        %192 = OpLabel
+        %193 = OpLoad %int %i_9
+        %194 = OpSLessThan %bool %193 %int_1
+               OpSelectionMerge %195 None
+               OpBranchConditional %194 %196 %197
+        %196 = OpLabel
+               OpBranch %195
+        %197 = OpLabel
+               OpBranch %190
+        %195 = OpLabel
+               OpStore %i_10 %int_0
+               OpBranch %198
+        %198 = OpLabel
+               OpLoopMerge %199 %200 None
+               OpBranch %201
+        %201 = OpLabel
+        %202 = OpLoad %int %i_10
+        %203 = OpSLessThan %bool %202 %int_1
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %205 = OpLabel
+               OpBranch %204
+        %206 = OpLabel
+               OpBranch %199
+        %204 = OpLabel
+               OpStore %i_11 %int_0
+               OpBranch %207
+        %207 = OpLabel
+               OpLoopMerge %208 %209 None
+               OpBranch %210
+        %210 = OpLabel
+        %211 = OpLoad %int %i_11
+        %212 = OpSLessThan %bool %211 %int_1
+               OpSelectionMerge %213 None
+               OpBranchConditional %212 %214 %215
+        %214 = OpLabel
+               OpBranch %213
+        %215 = OpLabel
+               OpBranch %208
+        %213 = OpLabel
+               OpStore %i_12 %int_0
+               OpBranch %216
+        %216 = OpLabel
+               OpLoopMerge %217 %218 None
+               OpBranch %219
+        %219 = OpLabel
+        %220 = OpLoad %int %i_12
+        %221 = OpSLessThan %bool %220 %int_1
+               OpSelectionMerge %222 None
+               OpBranchConditional %221 %223 %224
+        %223 = OpLabel
+               OpBranch %222
+        %224 = OpLabel
+               OpBranch %217
+        %222 = OpLabel
+               OpStore %i_13 %int_0
+               OpBranch %225
+        %225 = OpLabel
+               OpLoopMerge %226 %227 None
+               OpBranch %228
+        %228 = OpLabel
+        %229 = OpLoad %int %i_13
+        %230 = OpSLessThan %bool %229 %int_1
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %233
+        %232 = OpLabel
+               OpBranch %231
+        %233 = OpLabel
+               OpBranch %226
+        %231 = OpLabel
+               OpStore %i_14 %int_0
+               OpBranch %234
+        %234 = OpLabel
+               OpLoopMerge %235 %236 None
+               OpBranch %237
+        %237 = OpLabel
+        %238 = OpLoad %int %i_14
+        %239 = OpSLessThan %bool %238 %int_1
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %242
+        %241 = OpLabel
+               OpBranch %240
+        %242 = OpLabel
+               OpBranch %235
+        %240 = OpLabel
+               OpStore %i_15 %int_0
+               OpBranch %243
+        %243 = OpLabel
+               OpLoopMerge %244 %245 None
+               OpBranch %246
+        %246 = OpLabel
+        %247 = OpLoad %int %i_15
+        %248 = OpSLessThan %bool %247 %int_1
+               OpSelectionMerge %249 None
+               OpBranchConditional %248 %250 %251
+        %250 = OpLabel
+               OpBranch %249
+        %251 = OpLabel
+               OpBranch %244
+        %249 = OpLabel
+               OpStore %i_16 %int_0
+               OpBranch %252
+        %252 = OpLabel
+               OpLoopMerge %253 %254 None
+               OpBranch %255
+        %255 = OpLabel
+        %256 = OpLoad %int %i_16
+        %257 = OpSLessThan %bool %256 %int_1
+               OpSelectionMerge %258 None
+               OpBranchConditional %257 %259 %260
+        %259 = OpLabel
+               OpBranch %258
+        %260 = OpLabel
+               OpBranch %253
+        %258 = OpLabel
+               OpStore %i_17 %int_0
+               OpBranch %261
+        %261 = OpLabel
+               OpLoopMerge %262 %263 None
+               OpBranch %264
+        %264 = OpLabel
+        %265 = OpLoad %int %i_17
+        %266 = OpSLessThan %bool %265 %int_1
+               OpSelectionMerge %267 None
+               OpBranchConditional %266 %268 %269
+        %268 = OpLabel
+               OpBranch %267
+        %269 = OpLabel
+               OpBranch %262
+        %267 = OpLabel
+               OpStore %i_18 %int_0
+               OpBranch %270
+        %270 = OpLabel
+               OpLoopMerge %271 %272 None
+               OpBranch %273
+        %273 = OpLabel
+        %274 = OpLoad %int %i_18
+        %275 = OpSLessThan %bool %274 %int_1
+               OpSelectionMerge %276 None
+               OpBranchConditional %275 %277 %278
+        %277 = OpLabel
+               OpBranch %276
+        %278 = OpLabel
+               OpBranch %271
+        %276 = OpLabel
+               OpStore %i_19 %int_0
+               OpBranch %279
+        %279 = OpLabel
+               OpLoopMerge %280 %281 None
+               OpBranch %282
+        %282 = OpLabel
+        %283 = OpLoad %int %i_19
+        %284 = OpSLessThan %bool %283 %int_1
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %287
+        %286 = OpLabel
+               OpBranch %285
+        %287 = OpLabel
+               OpBranch %280
+        %285 = OpLabel
+               OpStore %i_20 %int_0
+               OpBranch %288
+        %288 = OpLabel
+               OpLoopMerge %289 %290 None
+               OpBranch %291
+        %291 = OpLabel
+        %292 = OpLoad %int %i_20
+        %293 = OpSLessThan %bool %292 %int_1
+               OpSelectionMerge %294 None
+               OpBranchConditional %293 %295 %296
+        %295 = OpLabel
+               OpBranch %294
+        %296 = OpLabel
+               OpBranch %289
+        %294 = OpLabel
+               OpStore %i_21 %int_0
+               OpBranch %297
+        %297 = OpLabel
+               OpLoopMerge %298 %299 None
+               OpBranch %300
+        %300 = OpLabel
+        %301 = OpLoad %int %i_21
+        %302 = OpSLessThan %bool %301 %int_1
+               OpSelectionMerge %303 None
+               OpBranchConditional %302 %304 %305
+        %304 = OpLabel
+               OpBranch %303
+        %305 = OpLabel
+               OpBranch %298
+        %303 = OpLabel
+               OpStore %i_22 %int_0
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+        %310 = OpLoad %int %i_22
+        %311 = OpSLessThan %bool %310 %int_1
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %314
+        %313 = OpLabel
+               OpBranch %312
+        %314 = OpLabel
+               OpBranch %307
+        %312 = OpLabel
+               OpStore %i_23 %int_0
+               OpBranch %315
+        %315 = OpLabel
+               OpLoopMerge %316 %317 None
+               OpBranch %318
+        %318 = OpLabel
+        %319 = OpLoad %int %i_23
+        %320 = OpSLessThan %bool %319 %int_1
+               OpSelectionMerge %321 None
+               OpBranchConditional %320 %322 %323
+        %322 = OpLabel
+               OpBranch %321
+        %323 = OpLabel
+               OpBranch %316
+        %321 = OpLabel
+               OpStore %i_24 %int_0
+               OpBranch %324
+        %324 = OpLabel
+               OpLoopMerge %325 %326 None
+               OpBranch %327
+        %327 = OpLabel
+        %328 = OpLoad %int %i_24
+        %329 = OpSLessThan %bool %328 %int_1
+               OpSelectionMerge %330 None
+               OpBranchConditional %329 %331 %332
+        %331 = OpLabel
+               OpBranch %330
+        %332 = OpLabel
+               OpBranch %325
+        %330 = OpLabel
+               OpStore %i_25 %int_0
+               OpBranch %333
+        %333 = OpLabel
+               OpLoopMerge %334 %335 None
+               OpBranch %336
+        %336 = OpLabel
+        %337 = OpLoad %int %i_25
+        %338 = OpSLessThan %bool %337 %int_1
+               OpSelectionMerge %339 None
+               OpBranchConditional %338 %340 %341
+        %340 = OpLabel
+               OpBranch %339
+        %341 = OpLabel
+               OpBranch %334
+        %339 = OpLabel
+               OpStore %i_26 %int_0
+               OpBranch %342
+        %342 = OpLabel
+               OpLoopMerge %343 %344 None
+               OpBranch %345
+        %345 = OpLabel
+        %346 = OpLoad %int %i_26
+        %347 = OpSLessThan %bool %346 %int_1
+               OpSelectionMerge %348 None
+               OpBranchConditional %347 %349 %350
+        %349 = OpLabel
+               OpBranch %348
+        %350 = OpLabel
+               OpBranch %343
+        %348 = OpLabel
+               OpStore %i_27 %int_0
+               OpBranch %351
+        %351 = OpLabel
+               OpLoopMerge %352 %353 None
+               OpBranch %354
+        %354 = OpLabel
+        %355 = OpLoad %int %i_27
+        %356 = OpSLessThan %bool %355 %int_1
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %359
+        %358 = OpLabel
+               OpBranch %357
+        %359 = OpLabel
+               OpBranch %352
+        %357 = OpLabel
+               OpStore %i_28 %int_0
+               OpBranch %360
+        %360 = OpLabel
+               OpLoopMerge %361 %362 None
+               OpBranch %363
+        %363 = OpLabel
+        %364 = OpLoad %int %i_28
+        %365 = OpSLessThan %bool %364 %int_1
+               OpSelectionMerge %366 None
+               OpBranchConditional %365 %367 %368
+        %367 = OpLabel
+               OpBranch %366
+        %368 = OpLabel
+               OpBranch %361
+        %366 = OpLabel
+               OpStore %i_29 %int_0
+               OpBranch %369
+        %369 = OpLabel
+               OpLoopMerge %370 %371 None
+               OpBranch %372
+        %372 = OpLabel
+        %373 = OpLoad %int %i_29
+        %374 = OpSLessThan %bool %373 %int_1
+               OpSelectionMerge %375 None
+               OpBranchConditional %374 %376 %377
+        %376 = OpLabel
+               OpBranch %375
+        %377 = OpLabel
+               OpBranch %370
+        %375 = OpLabel
+               OpStore %i_30 %int_0
+               OpBranch %378
+        %378 = OpLabel
+               OpLoopMerge %379 %380 None
+               OpBranch %381
+        %381 = OpLabel
+        %382 = OpLoad %int %i_30
+        %383 = OpSLessThan %bool %382 %int_1
+               OpSelectionMerge %384 None
+               OpBranchConditional %383 %385 %386
+        %385 = OpLabel
+               OpBranch %384
+        %386 = OpLabel
+               OpBranch %379
+        %384 = OpLabel
+               OpStore %i_31 %int_0
+               OpBranch %387
+        %387 = OpLabel
+               OpLoopMerge %388 %389 None
+               OpBranch %390
+        %390 = OpLabel
+        %391 = OpLoad %int %i_31
+        %392 = OpSLessThan %bool %391 %int_1
+               OpSelectionMerge %393 None
+               OpBranchConditional %392 %394 %395
+        %394 = OpLabel
+               OpBranch %393
+        %395 = OpLabel
+               OpBranch %388
+        %393 = OpLabel
+               OpStore %i_32 %int_0
+               OpBranch %396
+        %396 = OpLabel
+               OpLoopMerge %397 %398 None
+               OpBranch %399
+        %399 = OpLabel
+        %400 = OpLoad %int %i_32
+        %401 = OpSLessThan %bool %400 %int_1
+               OpSelectionMerge %402 None
+               OpBranchConditional %401 %403 %404
+        %403 = OpLabel
+               OpBranch %402
+        %404 = OpLabel
+               OpBranch %397
+        %402 = OpLabel
+               OpStore %i_33 %int_0
+               OpBranch %405
+        %405 = OpLabel
+               OpLoopMerge %406 %407 None
+               OpBranch %408
+        %408 = OpLabel
+        %409 = OpLoad %int %i_33
+        %410 = OpSLessThan %bool %409 %int_1
+               OpSelectionMerge %411 None
+               OpBranchConditional %410 %412 %413
+        %412 = OpLabel
+               OpBranch %411
+        %413 = OpLabel
+               OpBranch %406
+        %411 = OpLabel
+               OpStore %i_34 %int_0
+               OpBranch %414
+        %414 = OpLabel
+               OpLoopMerge %415 %416 None
+               OpBranch %417
+        %417 = OpLabel
+        %418 = OpLoad %int %i_34
+        %419 = OpSLessThan %bool %418 %int_1
+               OpSelectionMerge %420 None
+               OpBranchConditional %419 %421 %422
+        %421 = OpLabel
+               OpBranch %420
+        %422 = OpLabel
+               OpBranch %415
+        %420 = OpLabel
+               OpStore %i_35 %int_0
+               OpBranch %423
+        %423 = OpLabel
+               OpLoopMerge %424 %425 None
+               OpBranch %426
+        %426 = OpLabel
+        %427 = OpLoad %int %i_35
+        %428 = OpSLessThan %bool %427 %int_1
+               OpSelectionMerge %429 None
+               OpBranchConditional %428 %430 %431
+        %430 = OpLabel
+               OpBranch %429
+        %431 = OpLabel
+               OpBranch %424
+        %429 = OpLabel
+               OpStore %i_36 %int_0
+               OpBranch %432
+        %432 = OpLabel
+               OpLoopMerge %433 %434 None
+               OpBranch %435
+        %435 = OpLabel
+        %436 = OpLoad %int %i_36
+        %437 = OpSLessThan %bool %436 %int_1
+               OpSelectionMerge %438 None
+               OpBranchConditional %437 %439 %440
+        %439 = OpLabel
+               OpBranch %438
+        %440 = OpLabel
+               OpBranch %433
+        %438 = OpLabel
+               OpStore %i_37 %int_0
+               OpBranch %441
+        %441 = OpLabel
+               OpLoopMerge %442 %443 None
+               OpBranch %444
+        %444 = OpLabel
+        %445 = OpLoad %int %i_37
+        %446 = OpSLessThan %bool %445 %int_1
+               OpSelectionMerge %447 None
+               OpBranchConditional %446 %448 %449
+        %448 = OpLabel
+               OpBranch %447
+        %449 = OpLabel
+               OpBranch %442
+        %447 = OpLabel
+               OpBranch %450
+        %450 = OpLabel
+               OpLoopMerge %451 %452 None
+               OpBranch %453
+        %453 = OpLabel
+        %454 = OpLoad %int %x_GLF_global_loop_count
+        %455 = OpIAdd %int %454 %int_1
+               OpStore %x_GLF_global_loop_count %455
+               OpBranch %452
+        %452 = OpLabel
+        %456 = OpLoad %int %x_GLF_global_loop_count
+        %458 = OpSLessThan %bool %456 %int_98
+               OpSelectionMerge %459 None
+               OpBranchConditional %458 %460 %461
+        %460 = OpLabel
+               OpBranch %459
+        %461 = OpLabel
+               OpBranch %451
+        %459 = OpLabel
+               OpBranch %450
+        %451 = OpLabel
+        %462 = OpLoad %int %i_37
+        %463 = OpLoad %int %i_37
+        %464 = OpAccessChain %_ptr_Function_float %m23 %462 %463
+               OpStore %464 %float_1
+        %466 = OpLoad %int %i_37
+        %467 = OpLoad %int %i_37
+        %468 = OpAccessChain %_ptr_Function_float %m24 %466 %467
+               OpStore %468 %float_1
+        %469 = OpLoad %int %i_37
+        %470 = OpLoad %int %i_37
+        %471 = OpAccessChain %_ptr_Function_float %m32 %469 %470
+               OpStore %471 %float_1
+        %472 = OpLoad %int %i_37
+        %473 = OpLoad %int %i_37
+        %474 = OpAccessChain %_ptr_Function_float %m33 %472 %473
+               OpStore %474 %float_1
+        %475 = OpLoad %int %i_37
+        %476 = OpLoad %int %i_37
+        %477 = OpAccessChain %_ptr_Function_float %m34 %475 %476
+               OpStore %477 %float_1
+        %478 = OpLoad %int %i_37
+        %479 = OpLoad %int %i_37
+        %480 = OpAccessChain %_ptr_Function_float %m42 %478 %479
+               OpStore %480 %float_1
+        %481 = OpLoad %int %i_37
+        %482 = OpLoad %int %i_37
+        %483 = OpAccessChain %_ptr_Function_float %m43 %481 %482
+               OpStore %483 %float_1
+        %484 = OpLoad %int %i_37
+        %485 = OpLoad %int %i_37
+        %486 = OpAccessChain %_ptr_Function_float %m44 %484 %485
+               OpStore %486 %float_1
+               OpBranch %443
+        %443 = OpLabel
+        %487 = OpLoad %int %i_37
+        %488 = OpIAdd %int %487 %int_1
+               OpStore %i_37 %488
+               OpBranch %441
+        %442 = OpLabel
+               OpBranch %434
+        %434 = OpLabel
+        %489 = OpLoad %int %i_36
+        %490 = OpIAdd %int %489 %int_1
+               OpStore %i_36 %490
+               OpBranch %432
+        %433 = OpLabel
+               OpBranch %425
+        %425 = OpLabel
+        %491 = OpLoad %int %i_35
+        %492 = OpIAdd %int %491 %int_1
+               OpStore %i_35 %492
+               OpBranch %423
+        %424 = OpLabel
+               OpBranch %416
+        %416 = OpLabel
+        %493 = OpLoad %int %i_34
+        %494 = OpIAdd %int %493 %int_1
+               OpStore %i_34 %494
+               OpBranch %414
+        %415 = OpLabel
+               OpBranch %407
+        %407 = OpLabel
+        %495 = OpLoad %int %i_33
+        %496 = OpIAdd %int %495 %int_1
+               OpStore %i_33 %496
+               OpBranch %405
+        %406 = OpLabel
+               OpBranch %398
+        %398 = OpLabel
+        %497 = OpLoad %int %i_32
+        %498 = OpIAdd %int %497 %int_1
+               OpStore %i_32 %498
+               OpBranch %396
+        %397 = OpLabel
+               OpBranch %389
+        %389 = OpLabel
+        %499 = OpLoad %int %i_31
+        %500 = OpIAdd %int %499 %int_1
+               OpStore %i_31 %500
+               OpBranch %387
+        %388 = OpLabel
+               OpBranch %380
+        %380 = OpLabel
+        %501 = OpLoad %int %i_30
+        %502 = OpIAdd %int %501 %int_1
+               OpStore %i_30 %502
+               OpBranch %378
+        %379 = OpLabel
+               OpBranch %371
+        %371 = OpLabel
+        %503 = OpLoad %int %i_29
+        %504 = OpIAdd %int %503 %int_1
+               OpStore %i_29 %504
+               OpBranch %369
+        %370 = OpLabel
+               OpBranch %362
+        %362 = OpLabel
+        %505 = OpLoad %int %i_28
+        %506 = OpIAdd %int %505 %int_1
+               OpStore %i_28 %506
+               OpBranch %360
+        %361 = OpLabel
+               OpBranch %353
+        %353 = OpLabel
+        %507 = OpLoad %int %i_27
+        %508 = OpIAdd %int %507 %int_1
+               OpStore %i_27 %508
+               OpBranch %351
+        %352 = OpLabel
+               OpBranch %344
+        %344 = OpLabel
+        %509 = OpLoad %int %i_26
+        %510 = OpIAdd %int %509 %int_1
+               OpStore %i_26 %510
+               OpBranch %342
+        %343 = OpLabel
+               OpBranch %335
+        %335 = OpLabel
+        %511 = OpLoad %int %i_25
+        %512 = OpIAdd %int %511 %int_1
+               OpStore %i_25 %512
+               OpBranch %333
+        %334 = OpLabel
+               OpBranch %326
+        %326 = OpLabel
+        %513 = OpLoad %int %i_24
+        %514 = OpIAdd %int %513 %int_1
+               OpStore %i_24 %514
+               OpBranch %324
+        %325 = OpLabel
+               OpBranch %317
+        %317 = OpLabel
+        %515 = OpLoad %int %i_23
+        %516 = OpIAdd %int %515 %int_1
+               OpStore %i_23 %516
+               OpBranch %315
+        %316 = OpLabel
+               OpBranch %308
+        %308 = OpLabel
+        %517 = OpLoad %int %i_22
+        %518 = OpIAdd %int %517 %int_1
+               OpStore %i_22 %518
+               OpBranch %306
+        %307 = OpLabel
+               OpBranch %299
+        %299 = OpLabel
+        %519 = OpLoad %int %i_21
+        %520 = OpIAdd %int %519 %int_1
+               OpStore %i_21 %520
+               OpBranch %297
+        %298 = OpLabel
+               OpBranch %290
+        %290 = OpLabel
+        %521 = OpLoad %int %i_20
+        %522 = OpIAdd %int %521 %int_1
+               OpStore %i_20 %522
+               OpBranch %288
+        %289 = OpLabel
+               OpBranch %281
+        %281 = OpLabel
+        %523 = OpLoad %int %i_19
+        %524 = OpIAdd %int %523 %int_1
+               OpStore %i_19 %524
+               OpBranch %279
+        %280 = OpLabel
+               OpBranch %272
+        %272 = OpLabel
+        %525 = OpLoad %int %i_18
+        %526 = OpIAdd %int %525 %int_1
+               OpStore %i_18 %526
+               OpBranch %270
+        %271 = OpLabel
+               OpBranch %263
+        %263 = OpLabel
+        %527 = OpLoad %int %i_17
+        %528 = OpIAdd %int %527 %int_1
+               OpStore %i_17 %528
+               OpBranch %261
+        %262 = OpLabel
+               OpBranch %254
+        %254 = OpLabel
+        %529 = OpLoad %int %i_16
+        %530 = OpIAdd %int %529 %int_1
+               OpStore %i_16 %530
+               OpBranch %252
+        %253 = OpLabel
+               OpBranch %245
+        %245 = OpLabel
+        %531 = OpLoad %int %i_15
+        %532 = OpIAdd %int %531 %int_1
+               OpStore %i_15 %532
+               OpBranch %243
+        %244 = OpLabel
+               OpBranch %236
+        %236 = OpLabel
+        %533 = OpLoad %int %i_14
+        %534 = OpIAdd %int %533 %int_1
+               OpStore %i_14 %534
+               OpBranch %234
+        %235 = OpLabel
+               OpBranch %227
+        %227 = OpLabel
+        %535 = OpLoad %int %i_13
+        %536 = OpIAdd %int %535 %int_1
+               OpStore %i_13 %536
+               OpBranch %225
+        %226 = OpLabel
+               OpBranch %218
+        %218 = OpLabel
+        %537 = OpLoad %int %i_12
+        %538 = OpIAdd %int %537 %int_1
+               OpStore %i_12 %538
+               OpBranch %216
+        %217 = OpLabel
+               OpBranch %209
+        %209 = OpLabel
+        %539 = OpLoad %int %i_11
+        %540 = OpIAdd %int %539 %int_1
+               OpStore %i_11 %540
+               OpBranch %207
+        %208 = OpLabel
+               OpBranch %200
+        %200 = OpLabel
+        %541 = OpLoad %int %i_10
+        %542 = OpIAdd %int %541 %int_1
+               OpStore %i_10 %542
+               OpBranch %198
+        %199 = OpLabel
+               OpBranch %191
+        %191 = OpLabel
+        %543 = OpLoad %int %i_9
+        %544 = OpIAdd %int %543 %int_1
+               OpStore %i_9 %544
+               OpBranch %189
+        %190 = OpLabel
+               OpBranch %182
+        %182 = OpLabel
+        %545 = OpLoad %int %i_8
+        %546 = OpIAdd %int %545 %int_1
+               OpStore %i_8 %546
+               OpBranch %180
+        %181 = OpLabel
+               OpBranch %173
+        %173 = OpLabel
+        %547 = OpLoad %int %i_7
+        %548 = OpIAdd %int %547 %int_1
+               OpStore %i_7 %548
+               OpBranch %171
+        %172 = OpLabel
+               OpBranch %164
+        %164 = OpLabel
+        %549 = OpLoad %int %i_6
+        %550 = OpIAdd %int %549 %int_1
+               OpStore %i_6 %550
+               OpBranch %162
+        %163 = OpLabel
+               OpBranch %155
+        %155 = OpLabel
+        %551 = OpLoad %int %i_5
+        %552 = OpIAdd %int %551 %int_1
+               OpStore %i_5 %552
+               OpBranch %153
+        %154 = OpLabel
+               OpBranch %146
+        %146 = OpLabel
+        %553 = OpLoad %int %i_4
+        %554 = OpIAdd %int %553 %int_1
+               OpStore %i_4 %554
+               OpBranch %144
+        %145 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %555 = OpLoad %int %i_3
+        %556 = OpIAdd %int %555 %int_1
+               OpStore %i_3 %556
+               OpBranch %135
+        %136 = OpLabel
+               OpBranch %128
+        %128 = OpLabel
+        %557 = OpLoad %int %i_2
+        %558 = OpIAdd %int %557 %int_1
+               OpStore %i_2 %558
+               OpBranch %126
+        %127 = OpLabel
+               OpBranch %119
+        %119 = OpLabel
+        %559 = OpLoad %int %i_1
+        %560 = OpIAdd %int %559 %int_1
+               OpStore %i_1 %560
+               OpBranch %117
+        %118 = OpLabel
+               OpBranch %108
+        %108 = OpLabel
+        %561 = OpLoad %int %i
+        %562 = OpIAdd %int %561 %int_1
+               OpStore %i %562
+               OpBranch %106
+        %107 = OpLabel
+               OpStore %sum %float_0
+               OpStore %r %int_0
+               OpBranch %563
+        %563 = OpLabel
+               OpLoopMerge %564 %565 None
+               OpBranch %566
+        %566 = OpLabel
+        %567 = OpLoad %int %x_GLF_global_loop_count
+        %569 = OpSLessThan %bool %567 %int_100
+               OpSelectionMerge %570 None
+               OpBranchConditional %569 %571 %572
+        %571 = OpLabel
+               OpBranch %570
+        %572 = OpLabel
+               OpBranch %564
+        %570 = OpLabel
+        %573 = OpLoad %int %x_GLF_global_loop_count
+        %574 = OpIAdd %int %573 %int_1
+               OpStore %x_GLF_global_loop_count %574
+        %575 = OpLoad %int %r
+        %576 = OpAccessChain %_ptr_Function_float %m23 %int_0 %575
+        %577 = OpLoad %float %576
+        %578 = OpLoad %float %sum
+        %579 = OpFAdd %float %578 %577
+               OpStore %sum %579
+        %580 = OpLoad %int %r
+        %581 = OpAccessChain %_ptr_Function_float %m24 %int_0 %580
+        %582 = OpLoad %float %581
+        %583 = OpLoad %float %sum
+        %584 = OpFAdd %float %583 %582
+               OpStore %sum %584
+        %585 = OpLoad %int %r
+        %586 = OpAccessChain %_ptr_Function_float %m32 %int_0 %585
+        %587 = OpLoad %float %586
+        %588 = OpLoad %float %sum
+        %589 = OpFAdd %float %588 %587
+               OpStore %sum %589
+        %590 = OpLoad %int %r
+        %591 = OpAccessChain %_ptr_Function_float %m33 %int_0 %590
+        %592 = OpLoad %float %591
+        %593 = OpLoad %float %sum
+        %594 = OpFAdd %float %593 %592
+               OpStore %sum %594
+        %595 = OpLoad %int %r
+        %596 = OpAccessChain %_ptr_Function_float %m34 %int_0 %595
+        %597 = OpLoad %float %596
+        %598 = OpLoad %float %sum
+        %599 = OpFAdd %float %598 %597
+               OpStore %sum %599
+        %600 = OpLoad %int %r
+        %601 = OpAccessChain %_ptr_Function_float %m42 %int_0 %600
+        %602 = OpLoad %float %601
+        %603 = OpLoad %float %sum
+        %604 = OpFAdd %float %603 %602
+               OpStore %sum %604
+        %605 = OpLoad %int %r
+        %606 = OpAccessChain %_ptr_Function_float %m43 %int_0 %605
+        %607 = OpLoad %float %606
+        %608 = OpLoad %float %sum
+        %609 = OpFAdd %float %608 %607
+               OpStore %sum %609
+        %610 = OpLoad %int %r
+        %611 = OpAccessChain %_ptr_Function_float %m44 %int_0 %610
+        %612 = OpLoad %float %611
+        %613 = OpLoad %float %sum
+        %614 = OpFAdd %float %613 %612
+               OpStore %sum %614
+               OpBranch %565
+        %565 = OpLabel
+        %615 = OpLoad %int %r
+        %616 = OpIAdd %int %615 %int_1
+               OpStore %r %616
+               OpBranch %563
+        %564 = OpLabel
+        %617 = OpLoad %float %sum
+        %619 = OpFOrdEqual %bool %617 %float_8
+               OpSelectionMerge %620 None
+               OpBranchConditional %619 %621 %622
+        %621 = OpLabel
+               OpStore %x_GLF_color %623
+               OpBranch %620
+        %622 = OpLabel
+               OpStore %x_GLF_color %97
+               OpBranch %620
+        %620 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %624
+%tint_symbol = OpFunctionParameter %main_out
+        %628 = OpLabel
+        %629 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %629
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %631 = OpLabel
+        %632 = OpFunctionCall %void %main_1
+        %634 = OpLoad %v4float %x_GLF_color
+        %635 = OpCompositeConstruct %main_out %634
+        %633 = OpFunctionCall %void %tint_symbol_2 %635
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 452[%452] is not post dominated by the back-edge block 459[%459]
+  %459 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6dbe667
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,659 @@
+var<private> x_GLF_global_loop_count : i32;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m23 : mat2x3<f32>;
+  var m24 : mat2x4<f32>;
+  var m32 : mat3x2<f32>;
+  var m33 : mat3x3<f32>;
+  var m34 : mat3x4<f32>;
+  var m42 : mat4x2<f32>;
+  var m43 : mat4x3<f32>;
+  var m44 : mat4x4<f32>;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  var i_4 : i32;
+  var i_5 : i32;
+  var i_6 : i32;
+  var i_7 : i32;
+  var i_8 : i32;
+  var i_9 : i32;
+  var i_10 : i32;
+  var i_11 : i32;
+  var i_12 : i32;
+  var i_13 : i32;
+  var i_14 : i32;
+  var i_15 : i32;
+  var i_16 : i32;
+  var i_17 : i32;
+  var i_18 : i32;
+  var i_19 : i32;
+  var i_20 : i32;
+  var i_21 : i32;
+  var i_22 : i32;
+  var i_23 : i32;
+  var i_24 : i32;
+  var i_25 : i32;
+  var i_26 : i32;
+  var i_27 : i32;
+  var i_28 : i32;
+  var i_29 : i32;
+  var i_30 : i32;
+  var i_31 : i32;
+  var i_32 : i32;
+  var i_33 : i32;
+  var i_34 : i32;
+  var i_35 : i32;
+  var i_36 : i32;
+  var i_37 : i32;
+  var sum : f32;
+  var r : i32;
+  x_GLF_global_loop_count = 0;
+  m23 = mat2x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+  m24 = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  m32 = mat3x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  m33 = mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+  m34 = mat3x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  m42 = mat4x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  m43 = mat4x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+  m44 = mat4x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  i = 0;
+  loop {
+    let x_105 : i32 = i;
+    if ((x_105 < 1)) {
+    } else {
+      break;
+    }
+    i_1 = 0;
+    loop {
+      let x_112 : i32 = i_1;
+      if ((x_112 < 1)) {
+      } else {
+        break;
+      }
+      i_2 = 0;
+      loop {
+        let x_119 : i32 = i_2;
+        if ((x_119 < 1)) {
+        } else {
+          break;
+        }
+        i_3 = 0;
+        loop {
+          let x_126 : i32 = i_3;
+          if ((x_126 < 1)) {
+          } else {
+            break;
+          }
+          i_4 = 0;
+          loop {
+            let x_133 : i32 = i_4;
+            if ((x_133 < 1)) {
+            } else {
+              break;
+            }
+            i_5 = 0;
+            loop {
+              let x_140 : i32 = i_5;
+              if ((x_140 < 1)) {
+              } else {
+                break;
+              }
+              i_6 = 0;
+              loop {
+                let x_147 : i32 = i_6;
+                if ((x_147 < 1)) {
+                } else {
+                  break;
+                }
+                i_7 = 0;
+                loop {
+                  let x_154 : i32 = i_7;
+                  if ((x_154 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i_8 = 0;
+                  loop {
+                    let x_161 : i32 = i_8;
+                    if ((x_161 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i_9 = 0;
+                    loop {
+                      let x_168 : i32 = i_9;
+                      if ((x_168 < 1)) {
+                      } else {
+                        break;
+                      }
+                      i_10 = 0;
+                      loop {
+                        let x_175 : i32 = i_10;
+                        if ((x_175 < 1)) {
+                        } else {
+                          break;
+                        }
+                        i_11 = 0;
+                        loop {
+                          let x_182 : i32 = i_11;
+                          if ((x_182 < 1)) {
+                          } else {
+                            break;
+                          }
+                          i_12 = 0;
+                          loop {
+                            let x_189 : i32 = i_12;
+                            if ((x_189 < 1)) {
+                            } else {
+                              break;
+                            }
+                            i_13 = 0;
+                            loop {
+                              let x_196 : i32 = i_13;
+                              if ((x_196 < 1)) {
+                              } else {
+                                break;
+                              }
+                              i_14 = 0;
+                              loop {
+                                let x_203 : i32 = i_14;
+                                if ((x_203 < 1)) {
+                                } else {
+                                  break;
+                                }
+                                i_15 = 0;
+                                loop {
+                                  let x_210 : i32 = i_15;
+                                  if ((x_210 < 1)) {
+                                  } else {
+                                    break;
+                                  }
+                                  i_16 = 0;
+                                  loop {
+                                    let x_217 : i32 = i_16;
+                                    if ((x_217 < 1)) {
+                                    } else {
+                                      break;
+                                    }
+                                    i_17 = 0;
+                                    loop {
+                                      let x_224 : i32 = i_17;
+                                      if ((x_224 < 1)) {
+                                      } else {
+                                        break;
+                                      }
+                                      i_18 = 0;
+                                      loop {
+                                        let x_231 : i32 = i_18;
+                                        if ((x_231 < 1)) {
+                                        } else {
+                                          break;
+                                        }
+                                        i_19 = 0;
+                                        loop {
+                                          let x_238 : i32 = i_19;
+                                          if ((x_238 < 1)) {
+                                          } else {
+                                            break;
+                                          }
+                                          i_20 = 0;
+                                          loop {
+                                            let x_245 : i32 = i_20;
+                                            if ((x_245 < 1)) {
+                                            } else {
+                                              break;
+                                            }
+                                            i_21 = 0;
+                                            loop {
+                                              let x_252 : i32 = i_21;
+                                              if ((x_252 < 1)) {
+                                              } else {
+                                                break;
+                                              }
+                                              i_22 = 0;
+                                              loop {
+                                                let x_259 : i32 = i_22;
+                                                if ((x_259 < 1)) {
+                                                } else {
+                                                  break;
+                                                }
+                                                i_23 = 0;
+                                                loop {
+                                                  let x_266 : i32 = i_23;
+                                                  if ((x_266 < 1)) {
+                                                  } else {
+                                                    break;
+                                                  }
+                                                  i_24 = 0;
+                                                  loop {
+                                                    let x_273 : i32 = i_24;
+                                                    if ((x_273 < 1)) {
+                                                    } else {
+                                                      break;
+                                                    }
+                                                    i_25 = 0;
+                                                    loop {
+                                                      let x_280 : i32 = i_25;
+                                                      if ((x_280 < 1)) {
+                                                      } else {
+                                                        break;
+                                                      }
+                                                      i_26 = 0;
+                                                      loop {
+                                                        let x_287 : i32 = i_26;
+                                                        if ((x_287 < 1)) {
+                                                        } else {
+                                                          break;
+                                                        }
+                                                        i_27 = 0;
+                                                        loop {
+                                                          let x_294 : i32 = i_27;
+                                                          if ((x_294 < 1)) {
+                                                          } else {
+                                                            break;
+                                                          }
+                                                          i_28 = 0;
+                                                          loop {
+                                                            let x_301 : i32 = i_28;
+                                                            if ((x_301 < 1)) {
+                                                            } else {
+                                                              break;
+                                                            }
+                                                            i_29 = 0;
+                                                            loop {
+                                                              let x_308 : i32 = i_29;
+                                                              if ((x_308 < 1)) {
+                                                              } else {
+                                                                break;
+                                                              }
+                                                              i_30 = 0;
+                                                              loop {
+                                                                let x_315 : i32 = i_30;
+                                                                if ((x_315 < 1)) {
+                                                                } else {
+                                                                  break;
+                                                                }
+                                                                i_31 = 0;
+                                                                loop {
+                                                                  let x_322 : i32 = i_31;
+                                                                  if ((x_322 < 1)) {
+                                                                  } else {
+                                                                    break;
+                                                                  }
+                                                                  i_32 = 0;
+                                                                  loop {
+                                                                    let x_329 : i32 = i_32;
+                                                                    if ((x_329 < 1)) {
+                                                                    } else {
+                                                                      break;
+                                                                    }
+                                                                    i_33 = 0;
+                                                                    loop {
+                                                                      let x_336 : i32 = i_33;
+                                                                      if ((x_336 < 1)) {
+                                                                      } else {
+                                                                        break;
+                                                                      }
+                                                                      i_34 = 0;
+                                                                      loop {
+                                                                        let x_343 : i32 = i_34;
+                                                                        if ((x_343 < 1)) {
+                                                                        } else {
+                                                                          break;
+                                                                        }
+                                                                        i_35 = 0;
+                                                                        loop {
+                                                                          let x_350 : i32 = i_35;
+                                                                          if ((x_350 < 1)) {
+                                                                          } else {
+                                                                            break;
+                                                                          }
+                                                                          i_36 = 0;
+                                                                          loop {
+                                                                            let x_357 : i32 = i_36;
+                                                                            if ((x_357 < 1)) {
+                                                                            } else {
+                                                                              break;
+                                                                            }
+                                                                            i_37 = 0;
+                                                                            loop {
+                                                                              let x_364 : i32 = i_37;
+                                                                              if ((x_364 < 1)) {
+                                                                              } else {
+                                                                                break;
+                                                                              }
+                                                                              loop {
+                                                                                let x_371 : i32 = x_GLF_global_loop_count;
+                                                                                x_GLF_global_loop_count = (x_371 + 1);
+
+                                                                                continuing {
+                                                                                  let x_373 : i32 = x_GLF_global_loop_count;
+                                                                                  if ((x_373 < 98)) {
+                                                                                  } else {
+                                                                                    break;
+                                                                                  }
+                                                                                }
+                                                                              }
+                                                                              let x_375 : i32 = i_37;
+                                                                              let x_376 : i32 = i_37;
+                                                                              m23[x_375][x_376] = 1.0;
+                                                                              let x_378 : i32 = i_37;
+                                                                              let x_379 : i32 = i_37;
+                                                                              m24[x_378][x_379] = 1.0;
+                                                                              let x_381 : i32 = i_37;
+                                                                              let x_382 : i32 = i_37;
+                                                                              m32[x_381][x_382] = 1.0;
+                                                                              let x_384 : i32 = i_37;
+                                                                              let x_385 : i32 = i_37;
+                                                                              m33[x_384][x_385] = 1.0;
+                                                                              let x_387 : i32 = i_37;
+                                                                              let x_388 : i32 = i_37;
+                                                                              m34[x_387][x_388] = 1.0;
+                                                                              let x_390 : i32 = i_37;
+                                                                              let x_391 : i32 = i_37;
+                                                                              m42[x_390][x_391] = 1.0;
+                                                                              let x_393 : i32 = i_37;
+                                                                              let x_394 : i32 = i_37;
+                                                                              m43[x_393][x_394] = 1.0;
+                                                                              let x_396 : i32 = i_37;
+                                                                              let x_397 : i32 = i_37;
+                                                                              m44[x_396][x_397] = 1.0;
+
+                                                                              continuing {
+                                                                                let x_399 : i32 = i_37;
+                                                                                i_37 = (x_399 + 1);
+                                                                              }
+                                                                            }
+
+                                                                            continuing {
+                                                                              let x_401 : i32 = i_36;
+                                                                              i_36 = (x_401 + 1);
+                                                                            }
+                                                                          }
+
+                                                                          continuing {
+                                                                            let x_403 : i32 = i_35;
+                                                                            i_35 = (x_403 + 1);
+                                                                          }
+                                                                        }
+
+                                                                        continuing {
+                                                                          let x_405 : i32 = i_34;
+                                                                          i_34 = (x_405 + 1);
+                                                                        }
+                                                                      }
+
+                                                                      continuing {
+                                                                        let x_407 : i32 = i_33;
+                                                                        i_33 = (x_407 + 1);
+                                                                      }
+                                                                    }
+
+                                                                    continuing {
+                                                                      let x_409 : i32 = i_32;
+                                                                      i_32 = (x_409 + 1);
+                                                                    }
+                                                                  }
+
+                                                                  continuing {
+                                                                    let x_411 : i32 = i_31;
+                                                                    i_31 = (x_411 + 1);
+                                                                  }
+                                                                }
+
+                                                                continuing {
+                                                                  let x_413 : i32 = i_30;
+                                                                  i_30 = (x_413 + 1);
+                                                                }
+                                                              }
+
+                                                              continuing {
+                                                                let x_415 : i32 = i_29;
+                                                                i_29 = (x_415 + 1);
+                                                              }
+                                                            }
+
+                                                            continuing {
+                                                              let x_417 : i32 = i_28;
+                                                              i_28 = (x_417 + 1);
+                                                            }
+                                                          }
+
+                                                          continuing {
+                                                            let x_419 : i32 = i_27;
+                                                            i_27 = (x_419 + 1);
+                                                          }
+                                                        }
+
+                                                        continuing {
+                                                          let x_421 : i32 = i_26;
+                                                          i_26 = (x_421 + 1);
+                                                        }
+                                                      }
+
+                                                      continuing {
+                                                        let x_423 : i32 = i_25;
+                                                        i_25 = (x_423 + 1);
+                                                      }
+                                                    }
+
+                                                    continuing {
+                                                      let x_425 : i32 = i_24;
+                                                      i_24 = (x_425 + 1);
+                                                    }
+                                                  }
+
+                                                  continuing {
+                                                    let x_427 : i32 = i_23;
+                                                    i_23 = (x_427 + 1);
+                                                  }
+                                                }
+
+                                                continuing {
+                                                  let x_429 : i32 = i_22;
+                                                  i_22 = (x_429 + 1);
+                                                }
+                                              }
+
+                                              continuing {
+                                                let x_431 : i32 = i_21;
+                                                i_21 = (x_431 + 1);
+                                              }
+                                            }
+
+                                            continuing {
+                                              let x_433 : i32 = i_20;
+                                              i_20 = (x_433 + 1);
+                                            }
+                                          }
+
+                                          continuing {
+                                            let x_435 : i32 = i_19;
+                                            i_19 = (x_435 + 1);
+                                          }
+                                        }
+
+                                        continuing {
+                                          let x_437 : i32 = i_18;
+                                          i_18 = (x_437 + 1);
+                                        }
+                                      }
+
+                                      continuing {
+                                        let x_439 : i32 = i_17;
+                                        i_17 = (x_439 + 1);
+                                      }
+                                    }
+
+                                    continuing {
+                                      let x_441 : i32 = i_16;
+                                      i_16 = (x_441 + 1);
+                                    }
+                                  }
+
+                                  continuing {
+                                    let x_443 : i32 = i_15;
+                                    i_15 = (x_443 + 1);
+                                  }
+                                }
+
+                                continuing {
+                                  let x_445 : i32 = i_14;
+                                  i_14 = (x_445 + 1);
+                                }
+                              }
+
+                              continuing {
+                                let x_447 : i32 = i_13;
+                                i_13 = (x_447 + 1);
+                              }
+                            }
+
+                            continuing {
+                              let x_449 : i32 = i_12;
+                              i_12 = (x_449 + 1);
+                            }
+                          }
+
+                          continuing {
+                            let x_451 : i32 = i_11;
+                            i_11 = (x_451 + 1);
+                          }
+                        }
+
+                        continuing {
+                          let x_453 : i32 = i_10;
+                          i_10 = (x_453 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_455 : i32 = i_9;
+                        i_9 = (x_455 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_457 : i32 = i_8;
+                      i_8 = (x_457 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_459 : i32 = i_7;
+                    i_7 = (x_459 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_461 : i32 = i_6;
+                  i_6 = (x_461 + 1);
+                }
+              }
+
+              continuing {
+                let x_463 : i32 = i_5;
+                i_5 = (x_463 + 1);
+              }
+            }
+
+            continuing {
+              let x_465 : i32 = i_4;
+              i_4 = (x_465 + 1);
+            }
+          }
+
+          continuing {
+            let x_467 : i32 = i_3;
+            i_3 = (x_467 + 1);
+          }
+        }
+
+        continuing {
+          let x_469 : i32 = i_2;
+          i_2 = (x_469 + 1);
+        }
+      }
+
+      continuing {
+        let x_471 : i32 = i_1;
+        i_1 = (x_471 + 1);
+      }
+    }
+
+    continuing {
+      let x_473 : i32 = i;
+      i = (x_473 + 1);
+    }
+  }
+  sum = 0.0;
+  r = 0;
+  loop {
+    let x_479 : i32 = x_GLF_global_loop_count;
+    if ((x_479 < 100)) {
+    } else {
+      break;
+    }
+    let x_482 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_482 + 1);
+    let x_484 : i32 = r;
+    let x_486 : f32 = m23[0][x_484];
+    let x_487 : f32 = sum;
+    sum = (x_487 + x_486);
+    let x_489 : i32 = r;
+    let x_491 : f32 = m24[0][x_489];
+    let x_492 : f32 = sum;
+    sum = (x_492 + x_491);
+    let x_494 : i32 = r;
+    let x_496 : f32 = m32[0][x_494];
+    let x_497 : f32 = sum;
+    sum = (x_497 + x_496);
+    let x_499 : i32 = r;
+    let x_501 : f32 = m33[0][x_499];
+    let x_502 : f32 = sum;
+    sum = (x_502 + x_501);
+    let x_504 : i32 = r;
+    let x_506 : f32 = m34[0][x_504];
+    let x_507 : f32 = sum;
+    sum = (x_507 + x_506);
+    let x_509 : i32 = r;
+    let x_511 : f32 = m42[0][x_509];
+    let x_512 : f32 = sum;
+    sum = (x_512 + x_511);
+    let x_514 : i32 = r;
+    let x_516 : f32 = m43[0][x_514];
+    let x_517 : f32 = sum;
+    sum = (x_517 + x_516);
+    let x_519 : i32 = r;
+    let x_521 : f32 = m44[0][x_519];
+    let x_522 : f32 = sum;
+    sum = (x_522 + x_521);
+
+    continuing {
+      let x_524 : i32 = r;
+      r = (x_524 + 1);
+    }
+  }
+  let x_526 : f32 = sum;
+  if ((x_526 == 8.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
new file mode 100644
index 0000000..6dbe667
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
@@ -0,0 +1,659 @@
+var<private> x_GLF_global_loop_count : i32;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m23 : mat2x3<f32>;
+  var m24 : mat2x4<f32>;
+  var m32 : mat3x2<f32>;
+  var m33 : mat3x3<f32>;
+  var m34 : mat3x4<f32>;
+  var m42 : mat4x2<f32>;
+  var m43 : mat4x3<f32>;
+  var m44 : mat4x4<f32>;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  var i_4 : i32;
+  var i_5 : i32;
+  var i_6 : i32;
+  var i_7 : i32;
+  var i_8 : i32;
+  var i_9 : i32;
+  var i_10 : i32;
+  var i_11 : i32;
+  var i_12 : i32;
+  var i_13 : i32;
+  var i_14 : i32;
+  var i_15 : i32;
+  var i_16 : i32;
+  var i_17 : i32;
+  var i_18 : i32;
+  var i_19 : i32;
+  var i_20 : i32;
+  var i_21 : i32;
+  var i_22 : i32;
+  var i_23 : i32;
+  var i_24 : i32;
+  var i_25 : i32;
+  var i_26 : i32;
+  var i_27 : i32;
+  var i_28 : i32;
+  var i_29 : i32;
+  var i_30 : i32;
+  var i_31 : i32;
+  var i_32 : i32;
+  var i_33 : i32;
+  var i_34 : i32;
+  var i_35 : i32;
+  var i_36 : i32;
+  var i_37 : i32;
+  var sum : f32;
+  var r : i32;
+  x_GLF_global_loop_count = 0;
+  m23 = mat2x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+  m24 = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  m32 = mat3x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  m33 = mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+  m34 = mat3x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  m42 = mat4x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  m43 = mat4x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+  m44 = mat4x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  i = 0;
+  loop {
+    let x_105 : i32 = i;
+    if ((x_105 < 1)) {
+    } else {
+      break;
+    }
+    i_1 = 0;
+    loop {
+      let x_112 : i32 = i_1;
+      if ((x_112 < 1)) {
+      } else {
+        break;
+      }
+      i_2 = 0;
+      loop {
+        let x_119 : i32 = i_2;
+        if ((x_119 < 1)) {
+        } else {
+          break;
+        }
+        i_3 = 0;
+        loop {
+          let x_126 : i32 = i_3;
+          if ((x_126 < 1)) {
+          } else {
+            break;
+          }
+          i_4 = 0;
+          loop {
+            let x_133 : i32 = i_4;
+            if ((x_133 < 1)) {
+            } else {
+              break;
+            }
+            i_5 = 0;
+            loop {
+              let x_140 : i32 = i_5;
+              if ((x_140 < 1)) {
+              } else {
+                break;
+              }
+              i_6 = 0;
+              loop {
+                let x_147 : i32 = i_6;
+                if ((x_147 < 1)) {
+                } else {
+                  break;
+                }
+                i_7 = 0;
+                loop {
+                  let x_154 : i32 = i_7;
+                  if ((x_154 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i_8 = 0;
+                  loop {
+                    let x_161 : i32 = i_8;
+                    if ((x_161 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i_9 = 0;
+                    loop {
+                      let x_168 : i32 = i_9;
+                      if ((x_168 < 1)) {
+                      } else {
+                        break;
+                      }
+                      i_10 = 0;
+                      loop {
+                        let x_175 : i32 = i_10;
+                        if ((x_175 < 1)) {
+                        } else {
+                          break;
+                        }
+                        i_11 = 0;
+                        loop {
+                          let x_182 : i32 = i_11;
+                          if ((x_182 < 1)) {
+                          } else {
+                            break;
+                          }
+                          i_12 = 0;
+                          loop {
+                            let x_189 : i32 = i_12;
+                            if ((x_189 < 1)) {
+                            } else {
+                              break;
+                            }
+                            i_13 = 0;
+                            loop {
+                              let x_196 : i32 = i_13;
+                              if ((x_196 < 1)) {
+                              } else {
+                                break;
+                              }
+                              i_14 = 0;
+                              loop {
+                                let x_203 : i32 = i_14;
+                                if ((x_203 < 1)) {
+                                } else {
+                                  break;
+                                }
+                                i_15 = 0;
+                                loop {
+                                  let x_210 : i32 = i_15;
+                                  if ((x_210 < 1)) {
+                                  } else {
+                                    break;
+                                  }
+                                  i_16 = 0;
+                                  loop {
+                                    let x_217 : i32 = i_16;
+                                    if ((x_217 < 1)) {
+                                    } else {
+                                      break;
+                                    }
+                                    i_17 = 0;
+                                    loop {
+                                      let x_224 : i32 = i_17;
+                                      if ((x_224 < 1)) {
+                                      } else {
+                                        break;
+                                      }
+                                      i_18 = 0;
+                                      loop {
+                                        let x_231 : i32 = i_18;
+                                        if ((x_231 < 1)) {
+                                        } else {
+                                          break;
+                                        }
+                                        i_19 = 0;
+                                        loop {
+                                          let x_238 : i32 = i_19;
+                                          if ((x_238 < 1)) {
+                                          } else {
+                                            break;
+                                          }
+                                          i_20 = 0;
+                                          loop {
+                                            let x_245 : i32 = i_20;
+                                            if ((x_245 < 1)) {
+                                            } else {
+                                              break;
+                                            }
+                                            i_21 = 0;
+                                            loop {
+                                              let x_252 : i32 = i_21;
+                                              if ((x_252 < 1)) {
+                                              } else {
+                                                break;
+                                              }
+                                              i_22 = 0;
+                                              loop {
+                                                let x_259 : i32 = i_22;
+                                                if ((x_259 < 1)) {
+                                                } else {
+                                                  break;
+                                                }
+                                                i_23 = 0;
+                                                loop {
+                                                  let x_266 : i32 = i_23;
+                                                  if ((x_266 < 1)) {
+                                                  } else {
+                                                    break;
+                                                  }
+                                                  i_24 = 0;
+                                                  loop {
+                                                    let x_273 : i32 = i_24;
+                                                    if ((x_273 < 1)) {
+                                                    } else {
+                                                      break;
+                                                    }
+                                                    i_25 = 0;
+                                                    loop {
+                                                      let x_280 : i32 = i_25;
+                                                      if ((x_280 < 1)) {
+                                                      } else {
+                                                        break;
+                                                      }
+                                                      i_26 = 0;
+                                                      loop {
+                                                        let x_287 : i32 = i_26;
+                                                        if ((x_287 < 1)) {
+                                                        } else {
+                                                          break;
+                                                        }
+                                                        i_27 = 0;
+                                                        loop {
+                                                          let x_294 : i32 = i_27;
+                                                          if ((x_294 < 1)) {
+                                                          } else {
+                                                            break;
+                                                          }
+                                                          i_28 = 0;
+                                                          loop {
+                                                            let x_301 : i32 = i_28;
+                                                            if ((x_301 < 1)) {
+                                                            } else {
+                                                              break;
+                                                            }
+                                                            i_29 = 0;
+                                                            loop {
+                                                              let x_308 : i32 = i_29;
+                                                              if ((x_308 < 1)) {
+                                                              } else {
+                                                                break;
+                                                              }
+                                                              i_30 = 0;
+                                                              loop {
+                                                                let x_315 : i32 = i_30;
+                                                                if ((x_315 < 1)) {
+                                                                } else {
+                                                                  break;
+                                                                }
+                                                                i_31 = 0;
+                                                                loop {
+                                                                  let x_322 : i32 = i_31;
+                                                                  if ((x_322 < 1)) {
+                                                                  } else {
+                                                                    break;
+                                                                  }
+                                                                  i_32 = 0;
+                                                                  loop {
+                                                                    let x_329 : i32 = i_32;
+                                                                    if ((x_329 < 1)) {
+                                                                    } else {
+                                                                      break;
+                                                                    }
+                                                                    i_33 = 0;
+                                                                    loop {
+                                                                      let x_336 : i32 = i_33;
+                                                                      if ((x_336 < 1)) {
+                                                                      } else {
+                                                                        break;
+                                                                      }
+                                                                      i_34 = 0;
+                                                                      loop {
+                                                                        let x_343 : i32 = i_34;
+                                                                        if ((x_343 < 1)) {
+                                                                        } else {
+                                                                          break;
+                                                                        }
+                                                                        i_35 = 0;
+                                                                        loop {
+                                                                          let x_350 : i32 = i_35;
+                                                                          if ((x_350 < 1)) {
+                                                                          } else {
+                                                                            break;
+                                                                          }
+                                                                          i_36 = 0;
+                                                                          loop {
+                                                                            let x_357 : i32 = i_36;
+                                                                            if ((x_357 < 1)) {
+                                                                            } else {
+                                                                              break;
+                                                                            }
+                                                                            i_37 = 0;
+                                                                            loop {
+                                                                              let x_364 : i32 = i_37;
+                                                                              if ((x_364 < 1)) {
+                                                                              } else {
+                                                                                break;
+                                                                              }
+                                                                              loop {
+                                                                                let x_371 : i32 = x_GLF_global_loop_count;
+                                                                                x_GLF_global_loop_count = (x_371 + 1);
+
+                                                                                continuing {
+                                                                                  let x_373 : i32 = x_GLF_global_loop_count;
+                                                                                  if ((x_373 < 98)) {
+                                                                                  } else {
+                                                                                    break;
+                                                                                  }
+                                                                                }
+                                                                              }
+                                                                              let x_375 : i32 = i_37;
+                                                                              let x_376 : i32 = i_37;
+                                                                              m23[x_375][x_376] = 1.0;
+                                                                              let x_378 : i32 = i_37;
+                                                                              let x_379 : i32 = i_37;
+                                                                              m24[x_378][x_379] = 1.0;
+                                                                              let x_381 : i32 = i_37;
+                                                                              let x_382 : i32 = i_37;
+                                                                              m32[x_381][x_382] = 1.0;
+                                                                              let x_384 : i32 = i_37;
+                                                                              let x_385 : i32 = i_37;
+                                                                              m33[x_384][x_385] = 1.0;
+                                                                              let x_387 : i32 = i_37;
+                                                                              let x_388 : i32 = i_37;
+                                                                              m34[x_387][x_388] = 1.0;
+                                                                              let x_390 : i32 = i_37;
+                                                                              let x_391 : i32 = i_37;
+                                                                              m42[x_390][x_391] = 1.0;
+                                                                              let x_393 : i32 = i_37;
+                                                                              let x_394 : i32 = i_37;
+                                                                              m43[x_393][x_394] = 1.0;
+                                                                              let x_396 : i32 = i_37;
+                                                                              let x_397 : i32 = i_37;
+                                                                              m44[x_396][x_397] = 1.0;
+
+                                                                              continuing {
+                                                                                let x_399 : i32 = i_37;
+                                                                                i_37 = (x_399 + 1);
+                                                                              }
+                                                                            }
+
+                                                                            continuing {
+                                                                              let x_401 : i32 = i_36;
+                                                                              i_36 = (x_401 + 1);
+                                                                            }
+                                                                          }
+
+                                                                          continuing {
+                                                                            let x_403 : i32 = i_35;
+                                                                            i_35 = (x_403 + 1);
+                                                                          }
+                                                                        }
+
+                                                                        continuing {
+                                                                          let x_405 : i32 = i_34;
+                                                                          i_34 = (x_405 + 1);
+                                                                        }
+                                                                      }
+
+                                                                      continuing {
+                                                                        let x_407 : i32 = i_33;
+                                                                        i_33 = (x_407 + 1);
+                                                                      }
+                                                                    }
+
+                                                                    continuing {
+                                                                      let x_409 : i32 = i_32;
+                                                                      i_32 = (x_409 + 1);
+                                                                    }
+                                                                  }
+
+                                                                  continuing {
+                                                                    let x_411 : i32 = i_31;
+                                                                    i_31 = (x_411 + 1);
+                                                                  }
+                                                                }
+
+                                                                continuing {
+                                                                  let x_413 : i32 = i_30;
+                                                                  i_30 = (x_413 + 1);
+                                                                }
+                                                              }
+
+                                                              continuing {
+                                                                let x_415 : i32 = i_29;
+                                                                i_29 = (x_415 + 1);
+                                                              }
+                                                            }
+
+                                                            continuing {
+                                                              let x_417 : i32 = i_28;
+                                                              i_28 = (x_417 + 1);
+                                                            }
+                                                          }
+
+                                                          continuing {
+                                                            let x_419 : i32 = i_27;
+                                                            i_27 = (x_419 + 1);
+                                                          }
+                                                        }
+
+                                                        continuing {
+                                                          let x_421 : i32 = i_26;
+                                                          i_26 = (x_421 + 1);
+                                                        }
+                                                      }
+
+                                                      continuing {
+                                                        let x_423 : i32 = i_25;
+                                                        i_25 = (x_423 + 1);
+                                                      }
+                                                    }
+
+                                                    continuing {
+                                                      let x_425 : i32 = i_24;
+                                                      i_24 = (x_425 + 1);
+                                                    }
+                                                  }
+
+                                                  continuing {
+                                                    let x_427 : i32 = i_23;
+                                                    i_23 = (x_427 + 1);
+                                                  }
+                                                }
+
+                                                continuing {
+                                                  let x_429 : i32 = i_22;
+                                                  i_22 = (x_429 + 1);
+                                                }
+                                              }
+
+                                              continuing {
+                                                let x_431 : i32 = i_21;
+                                                i_21 = (x_431 + 1);
+                                              }
+                                            }
+
+                                            continuing {
+                                              let x_433 : i32 = i_20;
+                                              i_20 = (x_433 + 1);
+                                            }
+                                          }
+
+                                          continuing {
+                                            let x_435 : i32 = i_19;
+                                            i_19 = (x_435 + 1);
+                                          }
+                                        }
+
+                                        continuing {
+                                          let x_437 : i32 = i_18;
+                                          i_18 = (x_437 + 1);
+                                        }
+                                      }
+
+                                      continuing {
+                                        let x_439 : i32 = i_17;
+                                        i_17 = (x_439 + 1);
+                                      }
+                                    }
+
+                                    continuing {
+                                      let x_441 : i32 = i_16;
+                                      i_16 = (x_441 + 1);
+                                    }
+                                  }
+
+                                  continuing {
+                                    let x_443 : i32 = i_15;
+                                    i_15 = (x_443 + 1);
+                                  }
+                                }
+
+                                continuing {
+                                  let x_445 : i32 = i_14;
+                                  i_14 = (x_445 + 1);
+                                }
+                              }
+
+                              continuing {
+                                let x_447 : i32 = i_13;
+                                i_13 = (x_447 + 1);
+                              }
+                            }
+
+                            continuing {
+                              let x_449 : i32 = i_12;
+                              i_12 = (x_449 + 1);
+                            }
+                          }
+
+                          continuing {
+                            let x_451 : i32 = i_11;
+                            i_11 = (x_451 + 1);
+                          }
+                        }
+
+                        continuing {
+                          let x_453 : i32 = i_10;
+                          i_10 = (x_453 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_455 : i32 = i_9;
+                        i_9 = (x_455 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_457 : i32 = i_8;
+                      i_8 = (x_457 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_459 : i32 = i_7;
+                    i_7 = (x_459 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_461 : i32 = i_6;
+                  i_6 = (x_461 + 1);
+                }
+              }
+
+              continuing {
+                let x_463 : i32 = i_5;
+                i_5 = (x_463 + 1);
+              }
+            }
+
+            continuing {
+              let x_465 : i32 = i_4;
+              i_4 = (x_465 + 1);
+            }
+          }
+
+          continuing {
+            let x_467 : i32 = i_3;
+            i_3 = (x_467 + 1);
+          }
+        }
+
+        continuing {
+          let x_469 : i32 = i_2;
+          i_2 = (x_469 + 1);
+        }
+      }
+
+      continuing {
+        let x_471 : i32 = i_1;
+        i_1 = (x_471 + 1);
+      }
+    }
+
+    continuing {
+      let x_473 : i32 = i;
+      i = (x_473 + 1);
+    }
+  }
+  sum = 0.0;
+  r = 0;
+  loop {
+    let x_479 : i32 = x_GLF_global_loop_count;
+    if ((x_479 < 100)) {
+    } else {
+      break;
+    }
+    let x_482 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_482 + 1);
+    let x_484 : i32 = r;
+    let x_486 : f32 = m23[0][x_484];
+    let x_487 : f32 = sum;
+    sum = (x_487 + x_486);
+    let x_489 : i32 = r;
+    let x_491 : f32 = m24[0][x_489];
+    let x_492 : f32 = sum;
+    sum = (x_492 + x_491);
+    let x_494 : i32 = r;
+    let x_496 : f32 = m32[0][x_494];
+    let x_497 : f32 = sum;
+    sum = (x_497 + x_496);
+    let x_499 : i32 = r;
+    let x_501 : f32 = m33[0][x_499];
+    let x_502 : f32 = sum;
+    sum = (x_502 + x_501);
+    let x_504 : i32 = r;
+    let x_506 : f32 = m34[0][x_504];
+    let x_507 : f32 = sum;
+    sum = (x_507 + x_506);
+    let x_509 : i32 = r;
+    let x_511 : f32 = m42[0][x_509];
+    let x_512 : f32 = sum;
+    sum = (x_512 + x_511);
+    let x_514 : i32 = r;
+    let x_516 : f32 = m43[0][x_514];
+    let x_517 : f32 = sum;
+    sum = (x_517 + x_516);
+    let x_519 : i32 = r;
+    let x_521 : f32 = m44[0][x_519];
+    let x_522 : f32 = sum;
+    sum = (x_522 + x_521);
+
+    continuing {
+      let x_524 : i32 = r;
+      r = (x_524 + 1);
+    }
+  }
+  let x_526 : f32 = sum;
+  if ((x_526 == 8.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..362d952
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,324 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+static int x_GLF_global_loop_count = 0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x3 m23 = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float2x4 m24 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x2 m32 = float3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x3 m33 = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float3x4 m34 = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4x2 m42 = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4x3 m43 = float4x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float4x4 m44 = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int i_3 = 0;
+  int i_4 = 0;
+  int i_5 = 0;
+  int i_6 = 0;
+  int i_7 = 0;
+  int i_8 = 0;
+  int i_9 = 0;
+  int i_10 = 0;
+  int i_11 = 0;
+  int i_12 = 0;
+  int i_13 = 0;
+  int i_14 = 0;
+  int i_15 = 0;
+  int i_16 = 0;
+  int i_17 = 0;
+  int i_18 = 0;
+  int i_19 = 0;
+  int i_20 = 0;
+  int i_21 = 0;
+  int i_22 = 0;
+  int i_23 = 0;
+  int i_24 = 0;
+  int i_25 = 0;
+  int i_26 = 0;
+  int i_27 = 0;
+  int i_28 = 0;
+  int i_29 = 0;
+  int i_30 = 0;
+  int i_31 = 0;
+  int i_32 = 0;
+  int i_33 = 0;
+  int i_34 = 0;
+  int i_35 = 0;
+  int i_36 = 0;
+  int i_37 = 0;
+  float sum = 0.0f;
+  int r = 0;
+  x_GLF_global_loop_count = 0;
+  m23 = float2x3(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));
+  i = 0;
+  {
+    for(; (i < 1); i = (i + 1)) {
+      i_1 = 0;
+      {
+        for(; (i_1 < 1); i_1 = (i_1 + 1)) {
+          i_2 = 0;
+          {
+            for(; (i_2 < 1); i_2 = (i_2 + 1)) {
+              i_3 = 0;
+              {
+                for(; (i_3 < 1); i_3 = (i_3 + 1)) {
+                  i_4 = 0;
+                  {
+                    for(; (i_4 < 1); i_4 = (i_4 + 1)) {
+                      i_5 = 0;
+                      {
+                        for(; (i_5 < 1); i_5 = (i_5 + 1)) {
+                          i_6 = 0;
+                          {
+                            for(; (i_6 < 1); i_6 = (i_6 + 1)) {
+                              i_7 = 0;
+                              {
+                                for(; (i_7 < 1); i_7 = (i_7 + 1)) {
+                                  i_8 = 0;
+                                  {
+                                    for(; (i_8 < 1); i_8 = (i_8 + 1)) {
+                                      i_9 = 0;
+                                      {
+                                        for(; (i_9 < 1); i_9 = (i_9 + 1)) {
+                                          i_10 = 0;
+                                          {
+                                            for(; (i_10 < 1); i_10 = (i_10 + 1)) {
+                                              i_11 = 0;
+                                              {
+                                                for(; (i_11 < 1); i_11 = (i_11 + 1)) {
+                                                  i_12 = 0;
+                                                  {
+                                                    for(; (i_12 < 1); i_12 = (i_12 + 1)) {
+                                                      i_13 = 0;
+                                                      {
+                                                        for(; (i_13 < 1); i_13 = (i_13 + 1)) {
+                                                          i_14 = 0;
+                                                          {
+                                                            for(; (i_14 < 1); i_14 = (i_14 + 1)) {
+                                                              i_15 = 0;
+                                                              {
+                                                                for(; (i_15 < 1); i_15 = (i_15 + 1)) {
+                                                                  i_16 = 0;
+                                                                  {
+                                                                    for(; (i_16 < 1); i_16 = (i_16 + 1)) {
+                                                                      i_17 = 0;
+                                                                      {
+                                                                        for(; (i_17 < 1); i_17 = (i_17 + 1)) {
+                                                                          i_18 = 0;
+                                                                          {
+                                                                            for(; (i_18 < 1); i_18 = (i_18 + 1)) {
+                                                                              i_19 = 0;
+                                                                              {
+                                                                                for(; (i_19 < 1); i_19 = (i_19 + 1)) {
+                                                                                  i_20 = 0;
+                                                                                  {
+                                                                                    for(; (i_20 < 1); i_20 = (i_20 + 1)) {
+                                                                                      i_21 = 0;
+                                                                                      {
+                                                                                        for(; (i_21 < 1); i_21 = (i_21 + 1)) {
+                                                                                          i_22 = 0;
+                                                                                          {
+                                                                                            for(; (i_22 < 1); i_22 = (i_22 + 1)) {
+                                                                                              i_23 = 0;
+                                                                                              {
+                                                                                                for(; (i_23 < 1); i_23 = (i_23 + 1)) {
+                                                                                                  i_24 = 0;
+                                                                                                  {
+                                                                                                    for(; (i_24 < 1); i_24 = (i_24 + 1)) {
+                                                                                                      i_25 = 0;
+                                                                                                      {
+                                                                                                        for(; (i_25 < 1); i_25 = (i_25 + 1)) {
+                                                                                                          i_26 = 0;
+                                                                                                          {
+                                                                                                            for(; (i_26 < 1); i_26 = (i_26 + 1)) {
+                                                                                                              i_27 = 0;
+                                                                                                              {
+                                                                                                                for(; (i_27 < 1); i_27 = (i_27 + 1)) {
+                                                                                                                  i_28 = 0;
+                                                                                                                  {
+                                                                                                                    for(; (i_28 < 1); i_28 = (i_28 + 1)) {
+                                                                                                                      i_29 = 0;
+                                                                                                                      {
+                                                                                                                        for(; (i_29 < 1); i_29 = (i_29 + 1)) {
+                                                                                                                          i_30 = 0;
+                                                                                                                          {
+                                                                                                                            for(; (i_30 < 1); i_30 = (i_30 + 1)) {
+                                                                                                                              i_31 = 0;
+                                                                                                                              {
+                                                                                                                                for(; (i_31 < 1); i_31 = (i_31 + 1)) {
+                                                                                                                                  i_32 = 0;
+                                                                                                                                  {
+                                                                                                                                    for(; (i_32 < 1); i_32 = (i_32 + 1)) {
+                                                                                                                                      i_33 = 0;
+                                                                                                                                      {
+                                                                                                                                        for(; (i_33 < 1); i_33 = (i_33 + 1)) {
+                                                                                                                                          i_34 = 0;
+                                                                                                                                          {
+                                                                                                                                            for(; (i_34 < 1); i_34 = (i_34 + 1)) {
+                                                                                                                                              i_35 = 0;
+                                                                                                                                              {
+                                                                                                                                                for(; (i_35 < 1); i_35 = (i_35 + 1)) {
+                                                                                                                                                  i_36 = 0;
+                                                                                                                                                  {
+                                                                                                                                                    for(; (i_36 < 1); i_36 = (i_36 + 1)) {
+                                                                                                                                                      i_37 = 0;
+                                                                                                                                                      {
+                                                                                                                                                        for(; (i_37 < 1); i_37 = (i_37 + 1)) {
+                                                                                                                                                          while (true) {
+                                                                                                                                                            x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+                                                                                                                                                            {
+                                                                                                                                                              if ((x_GLF_global_loop_count < 98)) {
+                                                                                                                                                              } else {
+                                                                                                                                                                break;
+                                                                                                                                                              }
+                                                                                                                                                            }
+                                                                                                                                                          }
+                                                                                                                                                          set_float3(m23[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float4(m24[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float2(m32[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float3(m33[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float4(m34[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float2(m42[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float3(m43[i_37], i_37, 1.0f);
+                                                                                                                                                          set_float4(m44[i_37], i_37, 1.0f);
+                                                                                                                                                        }
+                                                                                                                                                      }
+                                                                                                                                                    }
+                                                                                                                                                  }
+                                                                                                                                                }
+                                                                                                                                              }
+                                                                                                                                            }
+                                                                                                                                          }
+                                                                                                                                        }
+                                                                                                                                      }
+                                                                                                                                    }
+                                                                                                                                  }
+                                                                                                                                }
+                                                                                                                              }
+                                                                                                                            }
+                                                                                                                          }
+                                                                                                                        }
+                                                                                                                      }
+                                                                                                                    }
+                                                                                                                  }
+                                                                                                                }
+                                                                                                              }
+                                                                                                            }
+                                                                                                          }
+                                                                                                        }
+                                                                                                      }
+                                                                                                    }
+                                                                                                  }
+                                                                                                }
+                                                                                              }
+                                                                                            }
+                                                                                          }
+                                                                                        }
+                                                                                      }
+                                                                                    }
+                                                                                  }
+                                                                                }
+                                                                              }
+                                                                            }
+                                                                          }
+                                                                        }
+                                                                      }
+                                                                    }
+                                                                  }
+                                                                }
+                                                              }
+                                                            }
+                                                          }
+                                                        }
+                                                      }
+                                                    }
+                                                  }
+                                                }
+                                              }
+                                            }
+                                          }
+                                        }
+                                      }
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  sum = 0.0f;
+  r = 0;
+  {
+    for(; (x_GLF_global_loop_count < 100); r = (r + 1)) {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      const float x_486 = m23[0][r];
+      sum = (sum + x_486);
+      const float x_491 = m24[0][r];
+      sum = (sum + x_491);
+      const float x_496 = m32[0][r];
+      sum = (sum + x_496);
+      const float x_501 = m33[0][r];
+      sum = (sum + x_501);
+      const float x_506 = m34[0][r];
+      sum = (sum + x_506);
+      const float x_511 = m42[0][r];
+      sum = (sum + x_511);
+      const float x_516 = m43[0][r];
+      sum = (sum + x_516);
+      const float x_521 = m44[0][r];
+      sum = (sum + x_521);
+    }
+  }
+  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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..0ab9beb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.msl
@@ -0,0 +1,624 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  float2x3 m23 = float2x3(0.0f);
+  float2x4 m24 = float2x4(0.0f);
+  float3x2 m32 = float3x2(0.0f);
+  float3x3 m33 = float3x3(0.0f);
+  float3x4 m34 = float3x4(0.0f);
+  float4x2 m42 = float4x2(0.0f);
+  float4x3 m43 = float4x3(0.0f);
+  float4x4 m44 = float4x4(0.0f);
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int i_3 = 0;
+  int i_4 = 0;
+  int i_5 = 0;
+  int i_6 = 0;
+  int i_7 = 0;
+  int i_8 = 0;
+  int i_9 = 0;
+  int i_10 = 0;
+  int i_11 = 0;
+  int i_12 = 0;
+  int i_13 = 0;
+  int i_14 = 0;
+  int i_15 = 0;
+  int i_16 = 0;
+  int i_17 = 0;
+  int i_18 = 0;
+  int i_19 = 0;
+  int i_20 = 0;
+  int i_21 = 0;
+  int i_22 = 0;
+  int i_23 = 0;
+  int i_24 = 0;
+  int i_25 = 0;
+  int i_26 = 0;
+  int i_27 = 0;
+  int i_28 = 0;
+  int i_29 = 0;
+  int i_30 = 0;
+  int i_31 = 0;
+  int i_32 = 0;
+  int i_33 = 0;
+  int i_34 = 0;
+  int i_35 = 0;
+  int i_36 = 0;
+  int i_37 = 0;
+  float sum = 0.0f;
+  int r = 0;
+  *(tint_symbol_4) = 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));
+  i = 0;
+  while (true) {
+    int const x_105 = i;
+    if ((x_105 < 1)) {
+    } else {
+      break;
+    }
+    i_1 = 0;
+    while (true) {
+      int const x_112 = i_1;
+      if ((x_112 < 1)) {
+      } else {
+        break;
+      }
+      i_2 = 0;
+      while (true) {
+        int const x_119 = i_2;
+        if ((x_119 < 1)) {
+        } else {
+          break;
+        }
+        i_3 = 0;
+        while (true) {
+          int const x_126 = i_3;
+          if ((x_126 < 1)) {
+          } else {
+            break;
+          }
+          i_4 = 0;
+          while (true) {
+            int const x_133 = i_4;
+            if ((x_133 < 1)) {
+            } else {
+              break;
+            }
+            i_5 = 0;
+            while (true) {
+              int const x_140 = i_5;
+              if ((x_140 < 1)) {
+              } else {
+                break;
+              }
+              i_6 = 0;
+              while (true) {
+                int const x_147 = i_6;
+                if ((x_147 < 1)) {
+                } else {
+                  break;
+                }
+                i_7 = 0;
+                while (true) {
+                  int const x_154 = i_7;
+                  if ((x_154 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i_8 = 0;
+                  while (true) {
+                    int const x_161 = i_8;
+                    if ((x_161 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i_9 = 0;
+                    while (true) {
+                      int const x_168 = i_9;
+                      if ((x_168 < 1)) {
+                      } else {
+                        break;
+                      }
+                      i_10 = 0;
+                      while (true) {
+                        int const x_175 = i_10;
+                        if ((x_175 < 1)) {
+                        } else {
+                          break;
+                        }
+                        i_11 = 0;
+                        while (true) {
+                          int const x_182 = i_11;
+                          if ((x_182 < 1)) {
+                          } else {
+                            break;
+                          }
+                          i_12 = 0;
+                          while (true) {
+                            int const x_189 = i_12;
+                            if ((x_189 < 1)) {
+                            } else {
+                              break;
+                            }
+                            i_13 = 0;
+                            while (true) {
+                              int const x_196 = i_13;
+                              if ((x_196 < 1)) {
+                              } else {
+                                break;
+                              }
+                              i_14 = 0;
+                              while (true) {
+                                int const x_203 = i_14;
+                                if ((x_203 < 1)) {
+                                } else {
+                                  break;
+                                }
+                                i_15 = 0;
+                                while (true) {
+                                  int const x_210 = i_15;
+                                  if ((x_210 < 1)) {
+                                  } else {
+                                    break;
+                                  }
+                                  i_16 = 0;
+                                  while (true) {
+                                    int const x_217 = i_16;
+                                    if ((x_217 < 1)) {
+                                    } else {
+                                      break;
+                                    }
+                                    i_17 = 0;
+                                    while (true) {
+                                      int const x_224 = i_17;
+                                      if ((x_224 < 1)) {
+                                      } else {
+                                        break;
+                                      }
+                                      i_18 = 0;
+                                      while (true) {
+                                        int const x_231 = i_18;
+                                        if ((x_231 < 1)) {
+                                        } else {
+                                          break;
+                                        }
+                                        i_19 = 0;
+                                        while (true) {
+                                          int const x_238 = i_19;
+                                          if ((x_238 < 1)) {
+                                          } else {
+                                            break;
+                                          }
+                                          i_20 = 0;
+                                          while (true) {
+                                            int const x_245 = i_20;
+                                            if ((x_245 < 1)) {
+                                            } else {
+                                              break;
+                                            }
+                                            i_21 = 0;
+                                            while (true) {
+                                              int const x_252 = i_21;
+                                              if ((x_252 < 1)) {
+                                              } else {
+                                                break;
+                                              }
+                                              i_22 = 0;
+                                              while (true) {
+                                                int const x_259 = i_22;
+                                                if ((x_259 < 1)) {
+                                                } else {
+                                                  break;
+                                                }
+                                                i_23 = 0;
+                                                while (true) {
+                                                  int const x_266 = i_23;
+                                                  if ((x_266 < 1)) {
+                                                  } else {
+                                                    break;
+                                                  }
+                                                  i_24 = 0;
+                                                  while (true) {
+                                                    int const x_273 = i_24;
+                                                    if ((x_273 < 1)) {
+                                                    } else {
+                                                      break;
+                                                    }
+                                                    i_25 = 0;
+                                                    while (true) {
+                                                      int const x_280 = i_25;
+                                                      if ((x_280 < 1)) {
+                                                      } else {
+                                                        break;
+                                                      }
+                                                      i_26 = 0;
+                                                      while (true) {
+                                                        int const x_287 = i_26;
+                                                        if ((x_287 < 1)) {
+                                                        } else {
+                                                          break;
+                                                        }
+                                                        i_27 = 0;
+                                                        while (true) {
+                                                          int const x_294 = i_27;
+                                                          if ((x_294 < 1)) {
+                                                          } else {
+                                                            break;
+                                                          }
+                                                          i_28 = 0;
+                                                          while (true) {
+                                                            int const x_301 = i_28;
+                                                            if ((x_301 < 1)) {
+                                                            } else {
+                                                              break;
+                                                            }
+                                                            i_29 = 0;
+                                                            while (true) {
+                                                              int const x_308 = i_29;
+                                                              if ((x_308 < 1)) {
+                                                              } else {
+                                                                break;
+                                                              }
+                                                              i_30 = 0;
+                                                              while (true) {
+                                                                int const x_315 = i_30;
+                                                                if ((x_315 < 1)) {
+                                                                } else {
+                                                                  break;
+                                                                }
+                                                                i_31 = 0;
+                                                                while (true) {
+                                                                  int const x_322 = i_31;
+                                                                  if ((x_322 < 1)) {
+                                                                  } else {
+                                                                    break;
+                                                                  }
+                                                                  i_32 = 0;
+                                                                  while (true) {
+                                                                    int const x_329 = i_32;
+                                                                    if ((x_329 < 1)) {
+                                                                    } else {
+                                                                      break;
+                                                                    }
+                                                                    i_33 = 0;
+                                                                    while (true) {
+                                                                      int const x_336 = i_33;
+                                                                      if ((x_336 < 1)) {
+                                                                      } else {
+                                                                        break;
+                                                                      }
+                                                                      i_34 = 0;
+                                                                      while (true) {
+                                                                        int const x_343 = i_34;
+                                                                        if ((x_343 < 1)) {
+                                                                        } else {
+                                                                          break;
+                                                                        }
+                                                                        i_35 = 0;
+                                                                        while (true) {
+                                                                          int const x_350 = i_35;
+                                                                          if ((x_350 < 1)) {
+                                                                          } else {
+                                                                            break;
+                                                                          }
+                                                                          i_36 = 0;
+                                                                          while (true) {
+                                                                            int const x_357 = i_36;
+                                                                            if ((x_357 < 1)) {
+                                                                            } else {
+                                                                              break;
+                                                                            }
+                                                                            i_37 = 0;
+                                                                            while (true) {
+                                                                              int const x_364 = i_37;
+                                                                              if ((x_364 < 1)) {
+                                                                              } else {
+                                                                                break;
+                                                                              }
+                                                                              while (true) {
+                                                                                int const x_371 = *(tint_symbol_4);
+                                                                                *(tint_symbol_4) = (x_371 + 1);
+                                                                                {
+                                                                                  int const x_373 = *(tint_symbol_4);
+                                                                                  if ((x_373 < 98)) {
+                                                                                  } else {
+                                                                                    break;
+                                                                                  }
+                                                                                }
+                                                                              }
+                                                                              int const x_375 = i_37;
+                                                                              int const x_376 = i_37;
+                                                                              m23[x_375][x_376] = 1.0f;
+                                                                              int const x_378 = i_37;
+                                                                              int const x_379 = i_37;
+                                                                              m24[x_378][x_379] = 1.0f;
+                                                                              int const x_381 = i_37;
+                                                                              int const x_382 = i_37;
+                                                                              m32[x_381][x_382] = 1.0f;
+                                                                              int const x_384 = i_37;
+                                                                              int const x_385 = i_37;
+                                                                              m33[x_384][x_385] = 1.0f;
+                                                                              int const x_387 = i_37;
+                                                                              int const x_388 = i_37;
+                                                                              m34[x_387][x_388] = 1.0f;
+                                                                              int const x_390 = i_37;
+                                                                              int const x_391 = i_37;
+                                                                              m42[x_390][x_391] = 1.0f;
+                                                                              int const x_393 = i_37;
+                                                                              int const x_394 = i_37;
+                                                                              m43[x_393][x_394] = 1.0f;
+                                                                              int const x_396 = i_37;
+                                                                              int const x_397 = i_37;
+                                                                              m44[x_396][x_397] = 1.0f;
+                                                                              {
+                                                                                int const x_399 = i_37;
+                                                                                i_37 = (x_399 + 1);
+                                                                              }
+                                                                            }
+                                                                            {
+                                                                              int const x_401 = i_36;
+                                                                              i_36 = (x_401 + 1);
+                                                                            }
+                                                                          }
+                                                                          {
+                                                                            int const x_403 = i_35;
+                                                                            i_35 = (x_403 + 1);
+                                                                          }
+                                                                        }
+                                                                        {
+                                                                          int const x_405 = i_34;
+                                                                          i_34 = (x_405 + 1);
+                                                                        }
+                                                                      }
+                                                                      {
+                                                                        int const x_407 = i_33;
+                                                                        i_33 = (x_407 + 1);
+                                                                      }
+                                                                    }
+                                                                    {
+                                                                      int const x_409 = i_32;
+                                                                      i_32 = (x_409 + 1);
+                                                                    }
+                                                                  }
+                                                                  {
+                                                                    int const x_411 = i_31;
+                                                                    i_31 = (x_411 + 1);
+                                                                  }
+                                                                }
+                                                                {
+                                                                  int const x_413 = i_30;
+                                                                  i_30 = (x_413 + 1);
+                                                                }
+                                                              }
+                                                              {
+                                                                int const x_415 = i_29;
+                                                                i_29 = (x_415 + 1);
+                                                              }
+                                                            }
+                                                            {
+                                                              int const x_417 = i_28;
+                                                              i_28 = (x_417 + 1);
+                                                            }
+                                                          }
+                                                          {
+                                                            int const x_419 = i_27;
+                                                            i_27 = (x_419 + 1);
+                                                          }
+                                                        }
+                                                        {
+                                                          int const x_421 = i_26;
+                                                          i_26 = (x_421 + 1);
+                                                        }
+                                                      }
+                                                      {
+                                                        int const x_423 = i_25;
+                                                        i_25 = (x_423 + 1);
+                                                      }
+                                                    }
+                                                    {
+                                                      int const x_425 = i_24;
+                                                      i_24 = (x_425 + 1);
+                                                    }
+                                                  }
+                                                  {
+                                                    int const x_427 = i_23;
+                                                    i_23 = (x_427 + 1);
+                                                  }
+                                                }
+                                                {
+                                                  int const x_429 = i_22;
+                                                  i_22 = (x_429 + 1);
+                                                }
+                                              }
+                                              {
+                                                int const x_431 = i_21;
+                                                i_21 = (x_431 + 1);
+                                              }
+                                            }
+                                            {
+                                              int const x_433 = i_20;
+                                              i_20 = (x_433 + 1);
+                                            }
+                                          }
+                                          {
+                                            int const x_435 = i_19;
+                                            i_19 = (x_435 + 1);
+                                          }
+                                        }
+                                        {
+                                          int const x_437 = i_18;
+                                          i_18 = (x_437 + 1);
+                                        }
+                                      }
+                                      {
+                                        int const x_439 = i_17;
+                                        i_17 = (x_439 + 1);
+                                      }
+                                    }
+                                    {
+                                      int const x_441 = i_16;
+                                      i_16 = (x_441 + 1);
+                                    }
+                                  }
+                                  {
+                                    int const x_443 = i_15;
+                                    i_15 = (x_443 + 1);
+                                  }
+                                }
+                                {
+                                  int const x_445 = i_14;
+                                  i_14 = (x_445 + 1);
+                                }
+                              }
+                              {
+                                int const x_447 = i_13;
+                                i_13 = (x_447 + 1);
+                              }
+                            }
+                            {
+                              int const x_449 = i_12;
+                              i_12 = (x_449 + 1);
+                            }
+                          }
+                          {
+                            int const x_451 = i_11;
+                            i_11 = (x_451 + 1);
+                          }
+                        }
+                        {
+                          int const x_453 = i_10;
+                          i_10 = (x_453 + 1);
+                        }
+                      }
+                      {
+                        int const x_455 = i_9;
+                        i_9 = (x_455 + 1);
+                      }
+                    }
+                    {
+                      int const x_457 = i_8;
+                      i_8 = (x_457 + 1);
+                    }
+                  }
+                  {
+                    int const x_459 = i_7;
+                    i_7 = (x_459 + 1);
+                  }
+                }
+                {
+                  int const x_461 = i_6;
+                  i_6 = (x_461 + 1);
+                }
+              }
+              {
+                int const x_463 = i_5;
+                i_5 = (x_463 + 1);
+              }
+            }
+            {
+              int const x_465 = i_4;
+              i_4 = (x_465 + 1);
+            }
+          }
+          {
+            int const x_467 = i_3;
+            i_3 = (x_467 + 1);
+          }
+        }
+        {
+          int const x_469 = i_2;
+          i_2 = (x_469 + 1);
+        }
+      }
+      {
+        int const x_471 = i_1;
+        i_1 = (x_471 + 1);
+      }
+    }
+    {
+      int const x_473 = i;
+      i = (x_473 + 1);
+    }
+  }
+  sum = 0.0f;
+  r = 0;
+  while (true) {
+    int const x_479 = *(tint_symbol_4);
+    if ((x_479 < 100)) {
+    } else {
+      break;
+    }
+    int const x_482 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_482 + 1);
+    int const x_484 = r;
+    float const x_486 = m23[0][x_484];
+    float const x_487 = sum;
+    sum = (x_487 + x_486);
+    int const x_489 = r;
+    float const x_491 = m24[0][x_489];
+    float const x_492 = sum;
+    sum = (x_492 + x_491);
+    int const x_494 = r;
+    float const x_496 = m32[0][x_494];
+    float const x_497 = sum;
+    sum = (x_497 + x_496);
+    int const x_499 = r;
+    float const x_501 = m33[0][x_499];
+    float const x_502 = sum;
+    sum = (x_502 + x_501);
+    int const x_504 = r;
+    float const x_506 = m34[0][x_504];
+    float const x_507 = sum;
+    sum = (x_507 + x_506);
+    int const x_509 = r;
+    float const x_511 = m42[0][x_509];
+    float const x_512 = sum;
+    sum = (x_512 + x_511);
+    int const x_514 = r;
+    float const x_516 = m43[0][x_514];
+    float const x_517 = sum;
+    sum = (x_517 + x_516);
+    int const x_519 = r;
+    float const x_521 = m44[0][x_519];
+    float const x_522 = sum;
+    sum = (x_522 + x_521);
+    {
+      int const x_524 = r;
+      r = (x_524 + 1);
+    }
+  }
+  float const x_526 = sum;
+  if ((x_526 == 8.0f)) {
+    *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..eb04454
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,1187 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 636
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m23 "m23"
+               OpName %m24 "m24"
+               OpName %m32 "m32"
+               OpName %m33 "m33"
+               OpName %m34 "m34"
+               OpName %m42 "m42"
+               OpName %m43 "m43"
+               OpName %m44 "m44"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %i_3 "i_3"
+               OpName %i_4 "i_4"
+               OpName %i_5 "i_5"
+               OpName %i_6 "i_6"
+               OpName %i_7 "i_7"
+               OpName %i_8 "i_8"
+               OpName %i_9 "i_9"
+               OpName %i_10 "i_10"
+               OpName %i_11 "i_11"
+               OpName %i_12 "i_12"
+               OpName %i_13 "i_13"
+               OpName %i_14 "i_14"
+               OpName %i_15 "i_15"
+               OpName %i_16 "i_16"
+               OpName %i_17 "i_17"
+               OpName %i_18 "i_18"
+               OpName %i_19 "i_19"
+               OpName %i_20 "i_20"
+               OpName %i_21 "i_21"
+               OpName %i_22 "i_22"
+               OpName %i_23 "i_23"
+               OpName %i_24 "i_24"
+               OpName %i_25 "i_25"
+               OpName %i_26 "i_26"
+               OpName %i_27 "i_27"
+               OpName %i_28 "i_28"
+               OpName %i_29 "i_29"
+               OpName %i_30 "i_30"
+               OpName %i_31 "i_31"
+               OpName %i_32 "i_32"
+               OpName %i_33 "i_33"
+               OpName %i_34 "i_34"
+               OpName %i_35 "i_35"
+               OpName %i_36 "i_36"
+               OpName %i_37 "i_37"
+               OpName %sum "sum"
+               OpName %r "r"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat2v3float = OpTypeMatrix %v3float 2
+%_ptr_Function_mat2v3float = OpTypePointer Function %mat2v3float
+         %20 = OpConstantNull %mat2v3float
+%mat2v4float = OpTypeMatrix %v4float 2
+%_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float
+         %24 = OpConstantNull %mat2v4float
+    %v2float = OpTypeVector %float 2
+%mat3v2float = OpTypeMatrix %v2float 3
+%_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float
+         %29 = OpConstantNull %mat3v2float
+%mat3v3float = OpTypeMatrix %v3float 3
+%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
+         %33 = OpConstantNull %mat3v3float
+%mat3v4float = OpTypeMatrix %v4float 3
+%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
+         %37 = OpConstantNull %mat3v4float
+%mat4v2float = OpTypeMatrix %v2float 4
+%_ptr_Function_mat4v2float = OpTypePointer Function %mat4v2float
+         %41 = OpConstantNull %mat4v2float
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %45 = OpConstantNull %mat4v3float
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %49 = OpConstantNull %mat4v4float
+%_ptr_Function_int = OpTypePointer Function %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %91 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+         %95 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %96 = OpConstantComposite %mat2v3float %95 %95
+         %97 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %98 = OpConstantComposite %mat2v4float %97 %97
+         %99 = OpConstantComposite %v2float %float_0 %float_0
+        %100 = OpConstantComposite %mat3v2float %99 %99 %99
+        %101 = OpConstantComposite %mat3v3float %95 %95 %95
+        %102 = OpConstantComposite %mat3v4float %97 %97 %97
+        %103 = OpConstantComposite %mat4v2float %99 %99 %99 %99
+        %104 = OpConstantComposite %mat4v3float %95 %95 %95 %95
+        %105 = OpConstantComposite %mat4v4float %97 %97 %97 %97
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %int_98 = OpConstant %int 98
+    %float_1 = OpConstant %float 1
+    %int_100 = OpConstant %int 100
+    %float_8 = OpConstant %float 8
+        %623 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %624 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+        %m23 = OpVariable %_ptr_Function_mat2v3float Function %20
+        %m24 = OpVariable %_ptr_Function_mat2v4float Function %24
+        %m32 = OpVariable %_ptr_Function_mat3v2float Function %29
+        %m33 = OpVariable %_ptr_Function_mat3v3float Function %33
+        %m34 = OpVariable %_ptr_Function_mat3v4float Function %37
+        %m42 = OpVariable %_ptr_Function_mat4v2float Function %41
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function %45
+        %m44 = OpVariable %_ptr_Function_mat4v4float Function %49
+          %i = OpVariable %_ptr_Function_int Function %4
+        %i_1 = OpVariable %_ptr_Function_int Function %4
+        %i_2 = OpVariable %_ptr_Function_int Function %4
+        %i_3 = OpVariable %_ptr_Function_int Function %4
+        %i_4 = OpVariable %_ptr_Function_int Function %4
+        %i_5 = OpVariable %_ptr_Function_int Function %4
+        %i_6 = OpVariable %_ptr_Function_int Function %4
+        %i_7 = OpVariable %_ptr_Function_int Function %4
+        %i_8 = OpVariable %_ptr_Function_int Function %4
+        %i_9 = OpVariable %_ptr_Function_int Function %4
+       %i_10 = OpVariable %_ptr_Function_int Function %4
+       %i_11 = OpVariable %_ptr_Function_int Function %4
+       %i_12 = OpVariable %_ptr_Function_int Function %4
+       %i_13 = OpVariable %_ptr_Function_int Function %4
+       %i_14 = OpVariable %_ptr_Function_int Function %4
+       %i_15 = OpVariable %_ptr_Function_int Function %4
+       %i_16 = OpVariable %_ptr_Function_int Function %4
+       %i_17 = OpVariable %_ptr_Function_int Function %4
+       %i_18 = OpVariable %_ptr_Function_int Function %4
+       %i_19 = OpVariable %_ptr_Function_int Function %4
+       %i_20 = OpVariable %_ptr_Function_int Function %4
+       %i_21 = OpVariable %_ptr_Function_int Function %4
+       %i_22 = OpVariable %_ptr_Function_int Function %4
+       %i_23 = OpVariable %_ptr_Function_int Function %4
+       %i_24 = OpVariable %_ptr_Function_int Function %4
+       %i_25 = OpVariable %_ptr_Function_int Function %4
+       %i_26 = OpVariable %_ptr_Function_int Function %4
+       %i_27 = OpVariable %_ptr_Function_int Function %4
+       %i_28 = OpVariable %_ptr_Function_int Function %4
+       %i_29 = OpVariable %_ptr_Function_int Function %4
+       %i_30 = OpVariable %_ptr_Function_int Function %4
+       %i_31 = OpVariable %_ptr_Function_int Function %4
+       %i_32 = OpVariable %_ptr_Function_int Function %4
+       %i_33 = OpVariable %_ptr_Function_int Function %4
+       %i_34 = OpVariable %_ptr_Function_int Function %4
+       %i_35 = OpVariable %_ptr_Function_int Function %4
+       %i_36 = OpVariable %_ptr_Function_int Function %4
+       %i_37 = OpVariable %_ptr_Function_int Function %4
+        %sum = OpVariable %_ptr_Function_float Function %91
+          %r = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+               OpStore %m23 %96
+               OpStore %m24 %98
+               OpStore %m32 %100
+               OpStore %m33 %101
+               OpStore %m34 %102
+               OpStore %m42 %103
+               OpStore %m43 %104
+               OpStore %m44 %105
+               OpStore %i %int_0
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %i
+        %112 = OpSLessThan %bool %110 %int_1
+               OpSelectionMerge %114 None
+               OpBranchConditional %112 %115 %116
+        %115 = OpLabel
+               OpBranch %114
+        %116 = OpLabel
+               OpBranch %107
+        %114 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpLoad %int %i_1
+        %122 = OpSLessThan %bool %121 %int_1
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %125
+        %124 = OpLabel
+               OpBranch %123
+        %125 = OpLabel
+               OpBranch %118
+        %123 = OpLabel
+               OpStore %i_2 %int_0
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %130 = OpLoad %int %i_2
+        %131 = OpSLessThan %bool %130 %int_1
+               OpSelectionMerge %132 None
+               OpBranchConditional %131 %133 %134
+        %133 = OpLabel
+               OpBranch %132
+        %134 = OpLabel
+               OpBranch %127
+        %132 = OpLabel
+               OpStore %i_3 %int_0
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %139 = OpLoad %int %i_3
+        %140 = OpSLessThan %bool %139 %int_1
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %143
+        %142 = OpLabel
+               OpBranch %141
+        %143 = OpLabel
+               OpBranch %136
+        %141 = OpLabel
+               OpStore %i_4 %int_0
+               OpBranch %144
+        %144 = OpLabel
+               OpLoopMerge %145 %146 None
+               OpBranch %147
+        %147 = OpLabel
+        %148 = OpLoad %int %i_4
+        %149 = OpSLessThan %bool %148 %int_1
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %152
+        %151 = OpLabel
+               OpBranch %150
+        %152 = OpLabel
+               OpBranch %145
+        %150 = OpLabel
+               OpStore %i_5 %int_0
+               OpBranch %153
+        %153 = OpLabel
+               OpLoopMerge %154 %155 None
+               OpBranch %156
+        %156 = OpLabel
+        %157 = OpLoad %int %i_5
+        %158 = OpSLessThan %bool %157 %int_1
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %161
+        %160 = OpLabel
+               OpBranch %159
+        %161 = OpLabel
+               OpBranch %154
+        %159 = OpLabel
+               OpStore %i_6 %int_0
+               OpBranch %162
+        %162 = OpLabel
+               OpLoopMerge %163 %164 None
+               OpBranch %165
+        %165 = OpLabel
+        %166 = OpLoad %int %i_6
+        %167 = OpSLessThan %bool %166 %int_1
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %163
+        %168 = OpLabel
+               OpStore %i_7 %int_0
+               OpBranch %171
+        %171 = OpLabel
+               OpLoopMerge %172 %173 None
+               OpBranch %174
+        %174 = OpLabel
+        %175 = OpLoad %int %i_7
+        %176 = OpSLessThan %bool %175 %int_1
+               OpSelectionMerge %177 None
+               OpBranchConditional %176 %178 %179
+        %178 = OpLabel
+               OpBranch %177
+        %179 = OpLabel
+               OpBranch %172
+        %177 = OpLabel
+               OpStore %i_8 %int_0
+               OpBranch %180
+        %180 = OpLabel
+               OpLoopMerge %181 %182 None
+               OpBranch %183
+        %183 = OpLabel
+        %184 = OpLoad %int %i_8
+        %185 = OpSLessThan %bool %184 %int_1
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+               OpBranch %181
+        %186 = OpLabel
+               OpStore %i_9 %int_0
+               OpBranch %189
+        %189 = OpLabel
+               OpLoopMerge %190 %191 None
+               OpBranch %192
+        %192 = OpLabel
+        %193 = OpLoad %int %i_9
+        %194 = OpSLessThan %bool %193 %int_1
+               OpSelectionMerge %195 None
+               OpBranchConditional %194 %196 %197
+        %196 = OpLabel
+               OpBranch %195
+        %197 = OpLabel
+               OpBranch %190
+        %195 = OpLabel
+               OpStore %i_10 %int_0
+               OpBranch %198
+        %198 = OpLabel
+               OpLoopMerge %199 %200 None
+               OpBranch %201
+        %201 = OpLabel
+        %202 = OpLoad %int %i_10
+        %203 = OpSLessThan %bool %202 %int_1
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %205 = OpLabel
+               OpBranch %204
+        %206 = OpLabel
+               OpBranch %199
+        %204 = OpLabel
+               OpStore %i_11 %int_0
+               OpBranch %207
+        %207 = OpLabel
+               OpLoopMerge %208 %209 None
+               OpBranch %210
+        %210 = OpLabel
+        %211 = OpLoad %int %i_11
+        %212 = OpSLessThan %bool %211 %int_1
+               OpSelectionMerge %213 None
+               OpBranchConditional %212 %214 %215
+        %214 = OpLabel
+               OpBranch %213
+        %215 = OpLabel
+               OpBranch %208
+        %213 = OpLabel
+               OpStore %i_12 %int_0
+               OpBranch %216
+        %216 = OpLabel
+               OpLoopMerge %217 %218 None
+               OpBranch %219
+        %219 = OpLabel
+        %220 = OpLoad %int %i_12
+        %221 = OpSLessThan %bool %220 %int_1
+               OpSelectionMerge %222 None
+               OpBranchConditional %221 %223 %224
+        %223 = OpLabel
+               OpBranch %222
+        %224 = OpLabel
+               OpBranch %217
+        %222 = OpLabel
+               OpStore %i_13 %int_0
+               OpBranch %225
+        %225 = OpLabel
+               OpLoopMerge %226 %227 None
+               OpBranch %228
+        %228 = OpLabel
+        %229 = OpLoad %int %i_13
+        %230 = OpSLessThan %bool %229 %int_1
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %233
+        %232 = OpLabel
+               OpBranch %231
+        %233 = OpLabel
+               OpBranch %226
+        %231 = OpLabel
+               OpStore %i_14 %int_0
+               OpBranch %234
+        %234 = OpLabel
+               OpLoopMerge %235 %236 None
+               OpBranch %237
+        %237 = OpLabel
+        %238 = OpLoad %int %i_14
+        %239 = OpSLessThan %bool %238 %int_1
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %242
+        %241 = OpLabel
+               OpBranch %240
+        %242 = OpLabel
+               OpBranch %235
+        %240 = OpLabel
+               OpStore %i_15 %int_0
+               OpBranch %243
+        %243 = OpLabel
+               OpLoopMerge %244 %245 None
+               OpBranch %246
+        %246 = OpLabel
+        %247 = OpLoad %int %i_15
+        %248 = OpSLessThan %bool %247 %int_1
+               OpSelectionMerge %249 None
+               OpBranchConditional %248 %250 %251
+        %250 = OpLabel
+               OpBranch %249
+        %251 = OpLabel
+               OpBranch %244
+        %249 = OpLabel
+               OpStore %i_16 %int_0
+               OpBranch %252
+        %252 = OpLabel
+               OpLoopMerge %253 %254 None
+               OpBranch %255
+        %255 = OpLabel
+        %256 = OpLoad %int %i_16
+        %257 = OpSLessThan %bool %256 %int_1
+               OpSelectionMerge %258 None
+               OpBranchConditional %257 %259 %260
+        %259 = OpLabel
+               OpBranch %258
+        %260 = OpLabel
+               OpBranch %253
+        %258 = OpLabel
+               OpStore %i_17 %int_0
+               OpBranch %261
+        %261 = OpLabel
+               OpLoopMerge %262 %263 None
+               OpBranch %264
+        %264 = OpLabel
+        %265 = OpLoad %int %i_17
+        %266 = OpSLessThan %bool %265 %int_1
+               OpSelectionMerge %267 None
+               OpBranchConditional %266 %268 %269
+        %268 = OpLabel
+               OpBranch %267
+        %269 = OpLabel
+               OpBranch %262
+        %267 = OpLabel
+               OpStore %i_18 %int_0
+               OpBranch %270
+        %270 = OpLabel
+               OpLoopMerge %271 %272 None
+               OpBranch %273
+        %273 = OpLabel
+        %274 = OpLoad %int %i_18
+        %275 = OpSLessThan %bool %274 %int_1
+               OpSelectionMerge %276 None
+               OpBranchConditional %275 %277 %278
+        %277 = OpLabel
+               OpBranch %276
+        %278 = OpLabel
+               OpBranch %271
+        %276 = OpLabel
+               OpStore %i_19 %int_0
+               OpBranch %279
+        %279 = OpLabel
+               OpLoopMerge %280 %281 None
+               OpBranch %282
+        %282 = OpLabel
+        %283 = OpLoad %int %i_19
+        %284 = OpSLessThan %bool %283 %int_1
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %287
+        %286 = OpLabel
+               OpBranch %285
+        %287 = OpLabel
+               OpBranch %280
+        %285 = OpLabel
+               OpStore %i_20 %int_0
+               OpBranch %288
+        %288 = OpLabel
+               OpLoopMerge %289 %290 None
+               OpBranch %291
+        %291 = OpLabel
+        %292 = OpLoad %int %i_20
+        %293 = OpSLessThan %bool %292 %int_1
+               OpSelectionMerge %294 None
+               OpBranchConditional %293 %295 %296
+        %295 = OpLabel
+               OpBranch %294
+        %296 = OpLabel
+               OpBranch %289
+        %294 = OpLabel
+               OpStore %i_21 %int_0
+               OpBranch %297
+        %297 = OpLabel
+               OpLoopMerge %298 %299 None
+               OpBranch %300
+        %300 = OpLabel
+        %301 = OpLoad %int %i_21
+        %302 = OpSLessThan %bool %301 %int_1
+               OpSelectionMerge %303 None
+               OpBranchConditional %302 %304 %305
+        %304 = OpLabel
+               OpBranch %303
+        %305 = OpLabel
+               OpBranch %298
+        %303 = OpLabel
+               OpStore %i_22 %int_0
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+        %310 = OpLoad %int %i_22
+        %311 = OpSLessThan %bool %310 %int_1
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %314
+        %313 = OpLabel
+               OpBranch %312
+        %314 = OpLabel
+               OpBranch %307
+        %312 = OpLabel
+               OpStore %i_23 %int_0
+               OpBranch %315
+        %315 = OpLabel
+               OpLoopMerge %316 %317 None
+               OpBranch %318
+        %318 = OpLabel
+        %319 = OpLoad %int %i_23
+        %320 = OpSLessThan %bool %319 %int_1
+               OpSelectionMerge %321 None
+               OpBranchConditional %320 %322 %323
+        %322 = OpLabel
+               OpBranch %321
+        %323 = OpLabel
+               OpBranch %316
+        %321 = OpLabel
+               OpStore %i_24 %int_0
+               OpBranch %324
+        %324 = OpLabel
+               OpLoopMerge %325 %326 None
+               OpBranch %327
+        %327 = OpLabel
+        %328 = OpLoad %int %i_24
+        %329 = OpSLessThan %bool %328 %int_1
+               OpSelectionMerge %330 None
+               OpBranchConditional %329 %331 %332
+        %331 = OpLabel
+               OpBranch %330
+        %332 = OpLabel
+               OpBranch %325
+        %330 = OpLabel
+               OpStore %i_25 %int_0
+               OpBranch %333
+        %333 = OpLabel
+               OpLoopMerge %334 %335 None
+               OpBranch %336
+        %336 = OpLabel
+        %337 = OpLoad %int %i_25
+        %338 = OpSLessThan %bool %337 %int_1
+               OpSelectionMerge %339 None
+               OpBranchConditional %338 %340 %341
+        %340 = OpLabel
+               OpBranch %339
+        %341 = OpLabel
+               OpBranch %334
+        %339 = OpLabel
+               OpStore %i_26 %int_0
+               OpBranch %342
+        %342 = OpLabel
+               OpLoopMerge %343 %344 None
+               OpBranch %345
+        %345 = OpLabel
+        %346 = OpLoad %int %i_26
+        %347 = OpSLessThan %bool %346 %int_1
+               OpSelectionMerge %348 None
+               OpBranchConditional %347 %349 %350
+        %349 = OpLabel
+               OpBranch %348
+        %350 = OpLabel
+               OpBranch %343
+        %348 = OpLabel
+               OpStore %i_27 %int_0
+               OpBranch %351
+        %351 = OpLabel
+               OpLoopMerge %352 %353 None
+               OpBranch %354
+        %354 = OpLabel
+        %355 = OpLoad %int %i_27
+        %356 = OpSLessThan %bool %355 %int_1
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %359
+        %358 = OpLabel
+               OpBranch %357
+        %359 = OpLabel
+               OpBranch %352
+        %357 = OpLabel
+               OpStore %i_28 %int_0
+               OpBranch %360
+        %360 = OpLabel
+               OpLoopMerge %361 %362 None
+               OpBranch %363
+        %363 = OpLabel
+        %364 = OpLoad %int %i_28
+        %365 = OpSLessThan %bool %364 %int_1
+               OpSelectionMerge %366 None
+               OpBranchConditional %365 %367 %368
+        %367 = OpLabel
+               OpBranch %366
+        %368 = OpLabel
+               OpBranch %361
+        %366 = OpLabel
+               OpStore %i_29 %int_0
+               OpBranch %369
+        %369 = OpLabel
+               OpLoopMerge %370 %371 None
+               OpBranch %372
+        %372 = OpLabel
+        %373 = OpLoad %int %i_29
+        %374 = OpSLessThan %bool %373 %int_1
+               OpSelectionMerge %375 None
+               OpBranchConditional %374 %376 %377
+        %376 = OpLabel
+               OpBranch %375
+        %377 = OpLabel
+               OpBranch %370
+        %375 = OpLabel
+               OpStore %i_30 %int_0
+               OpBranch %378
+        %378 = OpLabel
+               OpLoopMerge %379 %380 None
+               OpBranch %381
+        %381 = OpLabel
+        %382 = OpLoad %int %i_30
+        %383 = OpSLessThan %bool %382 %int_1
+               OpSelectionMerge %384 None
+               OpBranchConditional %383 %385 %386
+        %385 = OpLabel
+               OpBranch %384
+        %386 = OpLabel
+               OpBranch %379
+        %384 = OpLabel
+               OpStore %i_31 %int_0
+               OpBranch %387
+        %387 = OpLabel
+               OpLoopMerge %388 %389 None
+               OpBranch %390
+        %390 = OpLabel
+        %391 = OpLoad %int %i_31
+        %392 = OpSLessThan %bool %391 %int_1
+               OpSelectionMerge %393 None
+               OpBranchConditional %392 %394 %395
+        %394 = OpLabel
+               OpBranch %393
+        %395 = OpLabel
+               OpBranch %388
+        %393 = OpLabel
+               OpStore %i_32 %int_0
+               OpBranch %396
+        %396 = OpLabel
+               OpLoopMerge %397 %398 None
+               OpBranch %399
+        %399 = OpLabel
+        %400 = OpLoad %int %i_32
+        %401 = OpSLessThan %bool %400 %int_1
+               OpSelectionMerge %402 None
+               OpBranchConditional %401 %403 %404
+        %403 = OpLabel
+               OpBranch %402
+        %404 = OpLabel
+               OpBranch %397
+        %402 = OpLabel
+               OpStore %i_33 %int_0
+               OpBranch %405
+        %405 = OpLabel
+               OpLoopMerge %406 %407 None
+               OpBranch %408
+        %408 = OpLabel
+        %409 = OpLoad %int %i_33
+        %410 = OpSLessThan %bool %409 %int_1
+               OpSelectionMerge %411 None
+               OpBranchConditional %410 %412 %413
+        %412 = OpLabel
+               OpBranch %411
+        %413 = OpLabel
+               OpBranch %406
+        %411 = OpLabel
+               OpStore %i_34 %int_0
+               OpBranch %414
+        %414 = OpLabel
+               OpLoopMerge %415 %416 None
+               OpBranch %417
+        %417 = OpLabel
+        %418 = OpLoad %int %i_34
+        %419 = OpSLessThan %bool %418 %int_1
+               OpSelectionMerge %420 None
+               OpBranchConditional %419 %421 %422
+        %421 = OpLabel
+               OpBranch %420
+        %422 = OpLabel
+               OpBranch %415
+        %420 = OpLabel
+               OpStore %i_35 %int_0
+               OpBranch %423
+        %423 = OpLabel
+               OpLoopMerge %424 %425 None
+               OpBranch %426
+        %426 = OpLabel
+        %427 = OpLoad %int %i_35
+        %428 = OpSLessThan %bool %427 %int_1
+               OpSelectionMerge %429 None
+               OpBranchConditional %428 %430 %431
+        %430 = OpLabel
+               OpBranch %429
+        %431 = OpLabel
+               OpBranch %424
+        %429 = OpLabel
+               OpStore %i_36 %int_0
+               OpBranch %432
+        %432 = OpLabel
+               OpLoopMerge %433 %434 None
+               OpBranch %435
+        %435 = OpLabel
+        %436 = OpLoad %int %i_36
+        %437 = OpSLessThan %bool %436 %int_1
+               OpSelectionMerge %438 None
+               OpBranchConditional %437 %439 %440
+        %439 = OpLabel
+               OpBranch %438
+        %440 = OpLabel
+               OpBranch %433
+        %438 = OpLabel
+               OpStore %i_37 %int_0
+               OpBranch %441
+        %441 = OpLabel
+               OpLoopMerge %442 %443 None
+               OpBranch %444
+        %444 = OpLabel
+        %445 = OpLoad %int %i_37
+        %446 = OpSLessThan %bool %445 %int_1
+               OpSelectionMerge %447 None
+               OpBranchConditional %446 %448 %449
+        %448 = OpLabel
+               OpBranch %447
+        %449 = OpLabel
+               OpBranch %442
+        %447 = OpLabel
+               OpBranch %450
+        %450 = OpLabel
+               OpLoopMerge %451 %452 None
+               OpBranch %453
+        %453 = OpLabel
+        %454 = OpLoad %int %x_GLF_global_loop_count
+        %455 = OpIAdd %int %454 %int_1
+               OpStore %x_GLF_global_loop_count %455
+               OpBranch %452
+        %452 = OpLabel
+        %456 = OpLoad %int %x_GLF_global_loop_count
+        %458 = OpSLessThan %bool %456 %int_98
+               OpSelectionMerge %459 None
+               OpBranchConditional %458 %460 %461
+        %460 = OpLabel
+               OpBranch %459
+        %461 = OpLabel
+               OpBranch %451
+        %459 = OpLabel
+               OpBranch %450
+        %451 = OpLabel
+        %462 = OpLoad %int %i_37
+        %463 = OpLoad %int %i_37
+        %464 = OpAccessChain %_ptr_Function_float %m23 %462 %463
+               OpStore %464 %float_1
+        %466 = OpLoad %int %i_37
+        %467 = OpLoad %int %i_37
+        %468 = OpAccessChain %_ptr_Function_float %m24 %466 %467
+               OpStore %468 %float_1
+        %469 = OpLoad %int %i_37
+        %470 = OpLoad %int %i_37
+        %471 = OpAccessChain %_ptr_Function_float %m32 %469 %470
+               OpStore %471 %float_1
+        %472 = OpLoad %int %i_37
+        %473 = OpLoad %int %i_37
+        %474 = OpAccessChain %_ptr_Function_float %m33 %472 %473
+               OpStore %474 %float_1
+        %475 = OpLoad %int %i_37
+        %476 = OpLoad %int %i_37
+        %477 = OpAccessChain %_ptr_Function_float %m34 %475 %476
+               OpStore %477 %float_1
+        %478 = OpLoad %int %i_37
+        %479 = OpLoad %int %i_37
+        %480 = OpAccessChain %_ptr_Function_float %m42 %478 %479
+               OpStore %480 %float_1
+        %481 = OpLoad %int %i_37
+        %482 = OpLoad %int %i_37
+        %483 = OpAccessChain %_ptr_Function_float %m43 %481 %482
+               OpStore %483 %float_1
+        %484 = OpLoad %int %i_37
+        %485 = OpLoad %int %i_37
+        %486 = OpAccessChain %_ptr_Function_float %m44 %484 %485
+               OpStore %486 %float_1
+               OpBranch %443
+        %443 = OpLabel
+        %487 = OpLoad %int %i_37
+        %488 = OpIAdd %int %487 %int_1
+               OpStore %i_37 %488
+               OpBranch %441
+        %442 = OpLabel
+               OpBranch %434
+        %434 = OpLabel
+        %489 = OpLoad %int %i_36
+        %490 = OpIAdd %int %489 %int_1
+               OpStore %i_36 %490
+               OpBranch %432
+        %433 = OpLabel
+               OpBranch %425
+        %425 = OpLabel
+        %491 = OpLoad %int %i_35
+        %492 = OpIAdd %int %491 %int_1
+               OpStore %i_35 %492
+               OpBranch %423
+        %424 = OpLabel
+               OpBranch %416
+        %416 = OpLabel
+        %493 = OpLoad %int %i_34
+        %494 = OpIAdd %int %493 %int_1
+               OpStore %i_34 %494
+               OpBranch %414
+        %415 = OpLabel
+               OpBranch %407
+        %407 = OpLabel
+        %495 = OpLoad %int %i_33
+        %496 = OpIAdd %int %495 %int_1
+               OpStore %i_33 %496
+               OpBranch %405
+        %406 = OpLabel
+               OpBranch %398
+        %398 = OpLabel
+        %497 = OpLoad %int %i_32
+        %498 = OpIAdd %int %497 %int_1
+               OpStore %i_32 %498
+               OpBranch %396
+        %397 = OpLabel
+               OpBranch %389
+        %389 = OpLabel
+        %499 = OpLoad %int %i_31
+        %500 = OpIAdd %int %499 %int_1
+               OpStore %i_31 %500
+               OpBranch %387
+        %388 = OpLabel
+               OpBranch %380
+        %380 = OpLabel
+        %501 = OpLoad %int %i_30
+        %502 = OpIAdd %int %501 %int_1
+               OpStore %i_30 %502
+               OpBranch %378
+        %379 = OpLabel
+               OpBranch %371
+        %371 = OpLabel
+        %503 = OpLoad %int %i_29
+        %504 = OpIAdd %int %503 %int_1
+               OpStore %i_29 %504
+               OpBranch %369
+        %370 = OpLabel
+               OpBranch %362
+        %362 = OpLabel
+        %505 = OpLoad %int %i_28
+        %506 = OpIAdd %int %505 %int_1
+               OpStore %i_28 %506
+               OpBranch %360
+        %361 = OpLabel
+               OpBranch %353
+        %353 = OpLabel
+        %507 = OpLoad %int %i_27
+        %508 = OpIAdd %int %507 %int_1
+               OpStore %i_27 %508
+               OpBranch %351
+        %352 = OpLabel
+               OpBranch %344
+        %344 = OpLabel
+        %509 = OpLoad %int %i_26
+        %510 = OpIAdd %int %509 %int_1
+               OpStore %i_26 %510
+               OpBranch %342
+        %343 = OpLabel
+               OpBranch %335
+        %335 = OpLabel
+        %511 = OpLoad %int %i_25
+        %512 = OpIAdd %int %511 %int_1
+               OpStore %i_25 %512
+               OpBranch %333
+        %334 = OpLabel
+               OpBranch %326
+        %326 = OpLabel
+        %513 = OpLoad %int %i_24
+        %514 = OpIAdd %int %513 %int_1
+               OpStore %i_24 %514
+               OpBranch %324
+        %325 = OpLabel
+               OpBranch %317
+        %317 = OpLabel
+        %515 = OpLoad %int %i_23
+        %516 = OpIAdd %int %515 %int_1
+               OpStore %i_23 %516
+               OpBranch %315
+        %316 = OpLabel
+               OpBranch %308
+        %308 = OpLabel
+        %517 = OpLoad %int %i_22
+        %518 = OpIAdd %int %517 %int_1
+               OpStore %i_22 %518
+               OpBranch %306
+        %307 = OpLabel
+               OpBranch %299
+        %299 = OpLabel
+        %519 = OpLoad %int %i_21
+        %520 = OpIAdd %int %519 %int_1
+               OpStore %i_21 %520
+               OpBranch %297
+        %298 = OpLabel
+               OpBranch %290
+        %290 = OpLabel
+        %521 = OpLoad %int %i_20
+        %522 = OpIAdd %int %521 %int_1
+               OpStore %i_20 %522
+               OpBranch %288
+        %289 = OpLabel
+               OpBranch %281
+        %281 = OpLabel
+        %523 = OpLoad %int %i_19
+        %524 = OpIAdd %int %523 %int_1
+               OpStore %i_19 %524
+               OpBranch %279
+        %280 = OpLabel
+               OpBranch %272
+        %272 = OpLabel
+        %525 = OpLoad %int %i_18
+        %526 = OpIAdd %int %525 %int_1
+               OpStore %i_18 %526
+               OpBranch %270
+        %271 = OpLabel
+               OpBranch %263
+        %263 = OpLabel
+        %527 = OpLoad %int %i_17
+        %528 = OpIAdd %int %527 %int_1
+               OpStore %i_17 %528
+               OpBranch %261
+        %262 = OpLabel
+               OpBranch %254
+        %254 = OpLabel
+        %529 = OpLoad %int %i_16
+        %530 = OpIAdd %int %529 %int_1
+               OpStore %i_16 %530
+               OpBranch %252
+        %253 = OpLabel
+               OpBranch %245
+        %245 = OpLabel
+        %531 = OpLoad %int %i_15
+        %532 = OpIAdd %int %531 %int_1
+               OpStore %i_15 %532
+               OpBranch %243
+        %244 = OpLabel
+               OpBranch %236
+        %236 = OpLabel
+        %533 = OpLoad %int %i_14
+        %534 = OpIAdd %int %533 %int_1
+               OpStore %i_14 %534
+               OpBranch %234
+        %235 = OpLabel
+               OpBranch %227
+        %227 = OpLabel
+        %535 = OpLoad %int %i_13
+        %536 = OpIAdd %int %535 %int_1
+               OpStore %i_13 %536
+               OpBranch %225
+        %226 = OpLabel
+               OpBranch %218
+        %218 = OpLabel
+        %537 = OpLoad %int %i_12
+        %538 = OpIAdd %int %537 %int_1
+               OpStore %i_12 %538
+               OpBranch %216
+        %217 = OpLabel
+               OpBranch %209
+        %209 = OpLabel
+        %539 = OpLoad %int %i_11
+        %540 = OpIAdd %int %539 %int_1
+               OpStore %i_11 %540
+               OpBranch %207
+        %208 = OpLabel
+               OpBranch %200
+        %200 = OpLabel
+        %541 = OpLoad %int %i_10
+        %542 = OpIAdd %int %541 %int_1
+               OpStore %i_10 %542
+               OpBranch %198
+        %199 = OpLabel
+               OpBranch %191
+        %191 = OpLabel
+        %543 = OpLoad %int %i_9
+        %544 = OpIAdd %int %543 %int_1
+               OpStore %i_9 %544
+               OpBranch %189
+        %190 = OpLabel
+               OpBranch %182
+        %182 = OpLabel
+        %545 = OpLoad %int %i_8
+        %546 = OpIAdd %int %545 %int_1
+               OpStore %i_8 %546
+               OpBranch %180
+        %181 = OpLabel
+               OpBranch %173
+        %173 = OpLabel
+        %547 = OpLoad %int %i_7
+        %548 = OpIAdd %int %547 %int_1
+               OpStore %i_7 %548
+               OpBranch %171
+        %172 = OpLabel
+               OpBranch %164
+        %164 = OpLabel
+        %549 = OpLoad %int %i_6
+        %550 = OpIAdd %int %549 %int_1
+               OpStore %i_6 %550
+               OpBranch %162
+        %163 = OpLabel
+               OpBranch %155
+        %155 = OpLabel
+        %551 = OpLoad %int %i_5
+        %552 = OpIAdd %int %551 %int_1
+               OpStore %i_5 %552
+               OpBranch %153
+        %154 = OpLabel
+               OpBranch %146
+        %146 = OpLabel
+        %553 = OpLoad %int %i_4
+        %554 = OpIAdd %int %553 %int_1
+               OpStore %i_4 %554
+               OpBranch %144
+        %145 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %555 = OpLoad %int %i_3
+        %556 = OpIAdd %int %555 %int_1
+               OpStore %i_3 %556
+               OpBranch %135
+        %136 = OpLabel
+               OpBranch %128
+        %128 = OpLabel
+        %557 = OpLoad %int %i_2
+        %558 = OpIAdd %int %557 %int_1
+               OpStore %i_2 %558
+               OpBranch %126
+        %127 = OpLabel
+               OpBranch %119
+        %119 = OpLabel
+        %559 = OpLoad %int %i_1
+        %560 = OpIAdd %int %559 %int_1
+               OpStore %i_1 %560
+               OpBranch %117
+        %118 = OpLabel
+               OpBranch %108
+        %108 = OpLabel
+        %561 = OpLoad %int %i
+        %562 = OpIAdd %int %561 %int_1
+               OpStore %i %562
+               OpBranch %106
+        %107 = OpLabel
+               OpStore %sum %float_0
+               OpStore %r %int_0
+               OpBranch %563
+        %563 = OpLabel
+               OpLoopMerge %564 %565 None
+               OpBranch %566
+        %566 = OpLabel
+        %567 = OpLoad %int %x_GLF_global_loop_count
+        %569 = OpSLessThan %bool %567 %int_100
+               OpSelectionMerge %570 None
+               OpBranchConditional %569 %571 %572
+        %571 = OpLabel
+               OpBranch %570
+        %572 = OpLabel
+               OpBranch %564
+        %570 = OpLabel
+        %573 = OpLoad %int %x_GLF_global_loop_count
+        %574 = OpIAdd %int %573 %int_1
+               OpStore %x_GLF_global_loop_count %574
+        %575 = OpLoad %int %r
+        %576 = OpAccessChain %_ptr_Function_float %m23 %int_0 %575
+        %577 = OpLoad %float %576
+        %578 = OpLoad %float %sum
+        %579 = OpFAdd %float %578 %577
+               OpStore %sum %579
+        %580 = OpLoad %int %r
+        %581 = OpAccessChain %_ptr_Function_float %m24 %int_0 %580
+        %582 = OpLoad %float %581
+        %583 = OpLoad %float %sum
+        %584 = OpFAdd %float %583 %582
+               OpStore %sum %584
+        %585 = OpLoad %int %r
+        %586 = OpAccessChain %_ptr_Function_float %m32 %int_0 %585
+        %587 = OpLoad %float %586
+        %588 = OpLoad %float %sum
+        %589 = OpFAdd %float %588 %587
+               OpStore %sum %589
+        %590 = OpLoad %int %r
+        %591 = OpAccessChain %_ptr_Function_float %m33 %int_0 %590
+        %592 = OpLoad %float %591
+        %593 = OpLoad %float %sum
+        %594 = OpFAdd %float %593 %592
+               OpStore %sum %594
+        %595 = OpLoad %int %r
+        %596 = OpAccessChain %_ptr_Function_float %m34 %int_0 %595
+        %597 = OpLoad %float %596
+        %598 = OpLoad %float %sum
+        %599 = OpFAdd %float %598 %597
+               OpStore %sum %599
+        %600 = OpLoad %int %r
+        %601 = OpAccessChain %_ptr_Function_float %m42 %int_0 %600
+        %602 = OpLoad %float %601
+        %603 = OpLoad %float %sum
+        %604 = OpFAdd %float %603 %602
+               OpStore %sum %604
+        %605 = OpLoad %int %r
+        %606 = OpAccessChain %_ptr_Function_float %m43 %int_0 %605
+        %607 = OpLoad %float %606
+        %608 = OpLoad %float %sum
+        %609 = OpFAdd %float %608 %607
+               OpStore %sum %609
+        %610 = OpLoad %int %r
+        %611 = OpAccessChain %_ptr_Function_float %m44 %int_0 %610
+        %612 = OpLoad %float %611
+        %613 = OpLoad %float %sum
+        %614 = OpFAdd %float %613 %612
+               OpStore %sum %614
+               OpBranch %565
+        %565 = OpLabel
+        %615 = OpLoad %int %r
+        %616 = OpIAdd %int %615 %int_1
+               OpStore %r %616
+               OpBranch %563
+        %564 = OpLabel
+        %617 = OpLoad %float %sum
+        %619 = OpFOrdEqual %bool %617 %float_8
+               OpSelectionMerge %620 None
+               OpBranchConditional %619 %621 %622
+        %621 = OpLabel
+               OpStore %x_GLF_color %623
+               OpBranch %620
+        %622 = OpLabel
+               OpStore %x_GLF_color %97
+               OpBranch %620
+        %620 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %624
+%tint_symbol = OpFunctionParameter %main_out
+        %628 = OpLabel
+        %629 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %629
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %631 = OpLabel
+        %632 = OpFunctionCall %void %main_1
+        %634 = OpLoad %v4float %x_GLF_color
+        %635 = OpCompositeConstruct %main_out %634
+        %633 = OpFunctionCall %void %tint_symbol_2 %635
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 452[%452] is not post dominated by the back-edge block 459[%459]
+  %459 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6dbe667
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,659 @@
+var<private> x_GLF_global_loop_count : i32;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m23 : mat2x3<f32>;
+  var m24 : mat2x4<f32>;
+  var m32 : mat3x2<f32>;
+  var m33 : mat3x3<f32>;
+  var m34 : mat3x4<f32>;
+  var m42 : mat4x2<f32>;
+  var m43 : mat4x3<f32>;
+  var m44 : mat4x4<f32>;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  var i_4 : i32;
+  var i_5 : i32;
+  var i_6 : i32;
+  var i_7 : i32;
+  var i_8 : i32;
+  var i_9 : i32;
+  var i_10 : i32;
+  var i_11 : i32;
+  var i_12 : i32;
+  var i_13 : i32;
+  var i_14 : i32;
+  var i_15 : i32;
+  var i_16 : i32;
+  var i_17 : i32;
+  var i_18 : i32;
+  var i_19 : i32;
+  var i_20 : i32;
+  var i_21 : i32;
+  var i_22 : i32;
+  var i_23 : i32;
+  var i_24 : i32;
+  var i_25 : i32;
+  var i_26 : i32;
+  var i_27 : i32;
+  var i_28 : i32;
+  var i_29 : i32;
+  var i_30 : i32;
+  var i_31 : i32;
+  var i_32 : i32;
+  var i_33 : i32;
+  var i_34 : i32;
+  var i_35 : i32;
+  var i_36 : i32;
+  var i_37 : i32;
+  var sum : f32;
+  var r : i32;
+  x_GLF_global_loop_count = 0;
+  m23 = mat2x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+  m24 = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  m32 = mat3x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  m33 = mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+  m34 = mat3x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  m42 = mat4x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  m43 = mat4x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+  m44 = mat4x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  i = 0;
+  loop {
+    let x_105 : i32 = i;
+    if ((x_105 < 1)) {
+    } else {
+      break;
+    }
+    i_1 = 0;
+    loop {
+      let x_112 : i32 = i_1;
+      if ((x_112 < 1)) {
+      } else {
+        break;
+      }
+      i_2 = 0;
+      loop {
+        let x_119 : i32 = i_2;
+        if ((x_119 < 1)) {
+        } else {
+          break;
+        }
+        i_3 = 0;
+        loop {
+          let x_126 : i32 = i_3;
+          if ((x_126 < 1)) {
+          } else {
+            break;
+          }
+          i_4 = 0;
+          loop {
+            let x_133 : i32 = i_4;
+            if ((x_133 < 1)) {
+            } else {
+              break;
+            }
+            i_5 = 0;
+            loop {
+              let x_140 : i32 = i_5;
+              if ((x_140 < 1)) {
+              } else {
+                break;
+              }
+              i_6 = 0;
+              loop {
+                let x_147 : i32 = i_6;
+                if ((x_147 < 1)) {
+                } else {
+                  break;
+                }
+                i_7 = 0;
+                loop {
+                  let x_154 : i32 = i_7;
+                  if ((x_154 < 1)) {
+                  } else {
+                    break;
+                  }
+                  i_8 = 0;
+                  loop {
+                    let x_161 : i32 = i_8;
+                    if ((x_161 < 1)) {
+                    } else {
+                      break;
+                    }
+                    i_9 = 0;
+                    loop {
+                      let x_168 : i32 = i_9;
+                      if ((x_168 < 1)) {
+                      } else {
+                        break;
+                      }
+                      i_10 = 0;
+                      loop {
+                        let x_175 : i32 = i_10;
+                        if ((x_175 < 1)) {
+                        } else {
+                          break;
+                        }
+                        i_11 = 0;
+                        loop {
+                          let x_182 : i32 = i_11;
+                          if ((x_182 < 1)) {
+                          } else {
+                            break;
+                          }
+                          i_12 = 0;
+                          loop {
+                            let x_189 : i32 = i_12;
+                            if ((x_189 < 1)) {
+                            } else {
+                              break;
+                            }
+                            i_13 = 0;
+                            loop {
+                              let x_196 : i32 = i_13;
+                              if ((x_196 < 1)) {
+                              } else {
+                                break;
+                              }
+                              i_14 = 0;
+                              loop {
+                                let x_203 : i32 = i_14;
+                                if ((x_203 < 1)) {
+                                } else {
+                                  break;
+                                }
+                                i_15 = 0;
+                                loop {
+                                  let x_210 : i32 = i_15;
+                                  if ((x_210 < 1)) {
+                                  } else {
+                                    break;
+                                  }
+                                  i_16 = 0;
+                                  loop {
+                                    let x_217 : i32 = i_16;
+                                    if ((x_217 < 1)) {
+                                    } else {
+                                      break;
+                                    }
+                                    i_17 = 0;
+                                    loop {
+                                      let x_224 : i32 = i_17;
+                                      if ((x_224 < 1)) {
+                                      } else {
+                                        break;
+                                      }
+                                      i_18 = 0;
+                                      loop {
+                                        let x_231 : i32 = i_18;
+                                        if ((x_231 < 1)) {
+                                        } else {
+                                          break;
+                                        }
+                                        i_19 = 0;
+                                        loop {
+                                          let x_238 : i32 = i_19;
+                                          if ((x_238 < 1)) {
+                                          } else {
+                                            break;
+                                          }
+                                          i_20 = 0;
+                                          loop {
+                                            let x_245 : i32 = i_20;
+                                            if ((x_245 < 1)) {
+                                            } else {
+                                              break;
+                                            }
+                                            i_21 = 0;
+                                            loop {
+                                              let x_252 : i32 = i_21;
+                                              if ((x_252 < 1)) {
+                                              } else {
+                                                break;
+                                              }
+                                              i_22 = 0;
+                                              loop {
+                                                let x_259 : i32 = i_22;
+                                                if ((x_259 < 1)) {
+                                                } else {
+                                                  break;
+                                                }
+                                                i_23 = 0;
+                                                loop {
+                                                  let x_266 : i32 = i_23;
+                                                  if ((x_266 < 1)) {
+                                                  } else {
+                                                    break;
+                                                  }
+                                                  i_24 = 0;
+                                                  loop {
+                                                    let x_273 : i32 = i_24;
+                                                    if ((x_273 < 1)) {
+                                                    } else {
+                                                      break;
+                                                    }
+                                                    i_25 = 0;
+                                                    loop {
+                                                      let x_280 : i32 = i_25;
+                                                      if ((x_280 < 1)) {
+                                                      } else {
+                                                        break;
+                                                      }
+                                                      i_26 = 0;
+                                                      loop {
+                                                        let x_287 : i32 = i_26;
+                                                        if ((x_287 < 1)) {
+                                                        } else {
+                                                          break;
+                                                        }
+                                                        i_27 = 0;
+                                                        loop {
+                                                          let x_294 : i32 = i_27;
+                                                          if ((x_294 < 1)) {
+                                                          } else {
+                                                            break;
+                                                          }
+                                                          i_28 = 0;
+                                                          loop {
+                                                            let x_301 : i32 = i_28;
+                                                            if ((x_301 < 1)) {
+                                                            } else {
+                                                              break;
+                                                            }
+                                                            i_29 = 0;
+                                                            loop {
+                                                              let x_308 : i32 = i_29;
+                                                              if ((x_308 < 1)) {
+                                                              } else {
+                                                                break;
+                                                              }
+                                                              i_30 = 0;
+                                                              loop {
+                                                                let x_315 : i32 = i_30;
+                                                                if ((x_315 < 1)) {
+                                                                } else {
+                                                                  break;
+                                                                }
+                                                                i_31 = 0;
+                                                                loop {
+                                                                  let x_322 : i32 = i_31;
+                                                                  if ((x_322 < 1)) {
+                                                                  } else {
+                                                                    break;
+                                                                  }
+                                                                  i_32 = 0;
+                                                                  loop {
+                                                                    let x_329 : i32 = i_32;
+                                                                    if ((x_329 < 1)) {
+                                                                    } else {
+                                                                      break;
+                                                                    }
+                                                                    i_33 = 0;
+                                                                    loop {
+                                                                      let x_336 : i32 = i_33;
+                                                                      if ((x_336 < 1)) {
+                                                                      } else {
+                                                                        break;
+                                                                      }
+                                                                      i_34 = 0;
+                                                                      loop {
+                                                                        let x_343 : i32 = i_34;
+                                                                        if ((x_343 < 1)) {
+                                                                        } else {
+                                                                          break;
+                                                                        }
+                                                                        i_35 = 0;
+                                                                        loop {
+                                                                          let x_350 : i32 = i_35;
+                                                                          if ((x_350 < 1)) {
+                                                                          } else {
+                                                                            break;
+                                                                          }
+                                                                          i_36 = 0;
+                                                                          loop {
+                                                                            let x_357 : i32 = i_36;
+                                                                            if ((x_357 < 1)) {
+                                                                            } else {
+                                                                              break;
+                                                                            }
+                                                                            i_37 = 0;
+                                                                            loop {
+                                                                              let x_364 : i32 = i_37;
+                                                                              if ((x_364 < 1)) {
+                                                                              } else {
+                                                                                break;
+                                                                              }
+                                                                              loop {
+                                                                                let x_371 : i32 = x_GLF_global_loop_count;
+                                                                                x_GLF_global_loop_count = (x_371 + 1);
+
+                                                                                continuing {
+                                                                                  let x_373 : i32 = x_GLF_global_loop_count;
+                                                                                  if ((x_373 < 98)) {
+                                                                                  } else {
+                                                                                    break;
+                                                                                  }
+                                                                                }
+                                                                              }
+                                                                              let x_375 : i32 = i_37;
+                                                                              let x_376 : i32 = i_37;
+                                                                              m23[x_375][x_376] = 1.0;
+                                                                              let x_378 : i32 = i_37;
+                                                                              let x_379 : i32 = i_37;
+                                                                              m24[x_378][x_379] = 1.0;
+                                                                              let x_381 : i32 = i_37;
+                                                                              let x_382 : i32 = i_37;
+                                                                              m32[x_381][x_382] = 1.0;
+                                                                              let x_384 : i32 = i_37;
+                                                                              let x_385 : i32 = i_37;
+                                                                              m33[x_384][x_385] = 1.0;
+                                                                              let x_387 : i32 = i_37;
+                                                                              let x_388 : i32 = i_37;
+                                                                              m34[x_387][x_388] = 1.0;
+                                                                              let x_390 : i32 = i_37;
+                                                                              let x_391 : i32 = i_37;
+                                                                              m42[x_390][x_391] = 1.0;
+                                                                              let x_393 : i32 = i_37;
+                                                                              let x_394 : i32 = i_37;
+                                                                              m43[x_393][x_394] = 1.0;
+                                                                              let x_396 : i32 = i_37;
+                                                                              let x_397 : i32 = i_37;
+                                                                              m44[x_396][x_397] = 1.0;
+
+                                                                              continuing {
+                                                                                let x_399 : i32 = i_37;
+                                                                                i_37 = (x_399 + 1);
+                                                                              }
+                                                                            }
+
+                                                                            continuing {
+                                                                              let x_401 : i32 = i_36;
+                                                                              i_36 = (x_401 + 1);
+                                                                            }
+                                                                          }
+
+                                                                          continuing {
+                                                                            let x_403 : i32 = i_35;
+                                                                            i_35 = (x_403 + 1);
+                                                                          }
+                                                                        }
+
+                                                                        continuing {
+                                                                          let x_405 : i32 = i_34;
+                                                                          i_34 = (x_405 + 1);
+                                                                        }
+                                                                      }
+
+                                                                      continuing {
+                                                                        let x_407 : i32 = i_33;
+                                                                        i_33 = (x_407 + 1);
+                                                                      }
+                                                                    }
+
+                                                                    continuing {
+                                                                      let x_409 : i32 = i_32;
+                                                                      i_32 = (x_409 + 1);
+                                                                    }
+                                                                  }
+
+                                                                  continuing {
+                                                                    let x_411 : i32 = i_31;
+                                                                    i_31 = (x_411 + 1);
+                                                                  }
+                                                                }
+
+                                                                continuing {
+                                                                  let x_413 : i32 = i_30;
+                                                                  i_30 = (x_413 + 1);
+                                                                }
+                                                              }
+
+                                                              continuing {
+                                                                let x_415 : i32 = i_29;
+                                                                i_29 = (x_415 + 1);
+                                                              }
+                                                            }
+
+                                                            continuing {
+                                                              let x_417 : i32 = i_28;
+                                                              i_28 = (x_417 + 1);
+                                                            }
+                                                          }
+
+                                                          continuing {
+                                                            let x_419 : i32 = i_27;
+                                                            i_27 = (x_419 + 1);
+                                                          }
+                                                        }
+
+                                                        continuing {
+                                                          let x_421 : i32 = i_26;
+                                                          i_26 = (x_421 + 1);
+                                                        }
+                                                      }
+
+                                                      continuing {
+                                                        let x_423 : i32 = i_25;
+                                                        i_25 = (x_423 + 1);
+                                                      }
+                                                    }
+
+                                                    continuing {
+                                                      let x_425 : i32 = i_24;
+                                                      i_24 = (x_425 + 1);
+                                                    }
+                                                  }
+
+                                                  continuing {
+                                                    let x_427 : i32 = i_23;
+                                                    i_23 = (x_427 + 1);
+                                                  }
+                                                }
+
+                                                continuing {
+                                                  let x_429 : i32 = i_22;
+                                                  i_22 = (x_429 + 1);
+                                                }
+                                              }
+
+                                              continuing {
+                                                let x_431 : i32 = i_21;
+                                                i_21 = (x_431 + 1);
+                                              }
+                                            }
+
+                                            continuing {
+                                              let x_433 : i32 = i_20;
+                                              i_20 = (x_433 + 1);
+                                            }
+                                          }
+
+                                          continuing {
+                                            let x_435 : i32 = i_19;
+                                            i_19 = (x_435 + 1);
+                                          }
+                                        }
+
+                                        continuing {
+                                          let x_437 : i32 = i_18;
+                                          i_18 = (x_437 + 1);
+                                        }
+                                      }
+
+                                      continuing {
+                                        let x_439 : i32 = i_17;
+                                        i_17 = (x_439 + 1);
+                                      }
+                                    }
+
+                                    continuing {
+                                      let x_441 : i32 = i_16;
+                                      i_16 = (x_441 + 1);
+                                    }
+                                  }
+
+                                  continuing {
+                                    let x_443 : i32 = i_15;
+                                    i_15 = (x_443 + 1);
+                                  }
+                                }
+
+                                continuing {
+                                  let x_445 : i32 = i_14;
+                                  i_14 = (x_445 + 1);
+                                }
+                              }
+
+                              continuing {
+                                let x_447 : i32 = i_13;
+                                i_13 = (x_447 + 1);
+                              }
+                            }
+
+                            continuing {
+                              let x_449 : i32 = i_12;
+                              i_12 = (x_449 + 1);
+                            }
+                          }
+
+                          continuing {
+                            let x_451 : i32 = i_11;
+                            i_11 = (x_451 + 1);
+                          }
+                        }
+
+                        continuing {
+                          let x_453 : i32 = i_10;
+                          i_10 = (x_453 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_455 : i32 = i_9;
+                        i_9 = (x_455 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_457 : i32 = i_8;
+                      i_8 = (x_457 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_459 : i32 = i_7;
+                    i_7 = (x_459 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_461 : i32 = i_6;
+                  i_6 = (x_461 + 1);
+                }
+              }
+
+              continuing {
+                let x_463 : i32 = i_5;
+                i_5 = (x_463 + 1);
+              }
+            }
+
+            continuing {
+              let x_465 : i32 = i_4;
+              i_4 = (x_465 + 1);
+            }
+          }
+
+          continuing {
+            let x_467 : i32 = i_3;
+            i_3 = (x_467 + 1);
+          }
+        }
+
+        continuing {
+          let x_469 : i32 = i_2;
+          i_2 = (x_469 + 1);
+        }
+      }
+
+      continuing {
+        let x_471 : i32 = i_1;
+        i_1 = (x_471 + 1);
+      }
+    }
+
+    continuing {
+      let x_473 : i32 = i;
+      i = (x_473 + 1);
+    }
+  }
+  sum = 0.0;
+  r = 0;
+  loop {
+    let x_479 : i32 = x_GLF_global_loop_count;
+    if ((x_479 < 100)) {
+    } else {
+      break;
+    }
+    let x_482 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_482 + 1);
+    let x_484 : i32 = r;
+    let x_486 : f32 = m23[0][x_484];
+    let x_487 : f32 = sum;
+    sum = (x_487 + x_486);
+    let x_489 : i32 = r;
+    let x_491 : f32 = m24[0][x_489];
+    let x_492 : f32 = sum;
+    sum = (x_492 + x_491);
+    let x_494 : i32 = r;
+    let x_496 : f32 = m32[0][x_494];
+    let x_497 : f32 = sum;
+    sum = (x_497 + x_496);
+    let x_499 : i32 = r;
+    let x_501 : f32 = m33[0][x_499];
+    let x_502 : f32 = sum;
+    sum = (x_502 + x_501);
+    let x_504 : i32 = r;
+    let x_506 : f32 = m34[0][x_504];
+    let x_507 : f32 = sum;
+    sum = (x_507 + x_506);
+    let x_509 : i32 = r;
+    let x_511 : f32 = m42[0][x_509];
+    let x_512 : f32 = sum;
+    sum = (x_512 + x_511);
+    let x_514 : i32 = r;
+    let x_516 : f32 = m43[0][x_514];
+    let x_517 : f32 = sum;
+    sum = (x_517 + x_516);
+    let x_519 : i32 = r;
+    let x_521 : f32 = m44[0][x_519];
+    let x_522 : f32 = sum;
+    sum = (x_522 + x_521);
+
+    continuing {
+      let x_524 : i32 = r;
+      r = (x_524 + 1);
+    }
+  }
+  let x_526 : f32 = sum;
+  if ((x_526 == 8.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm
new file mode 100644
index 0000000..948060c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm
@@ -0,0 +1,246 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func0_i1_ "func0(i1;"
+               OpName %x "x"
+               OpName %func1_ "func1("
+               OpName %m "m"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "one"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %i "i"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__1 ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 2
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat4v2float = OpTypeMatrix %v2float 4
+%_ptr_Private_mat4v2float = OpTypePointer Private %mat4v2float
+          %m = OpVariable %_ptr_Private_mat4v2float Private
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v2float %float_0 %float_0
+         %30 = OpConstantComposite %mat4v2float %29 %29 %29 %29
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+          %_ = OpVariable %_ptr_Uniform_buf2 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Private_float = OpTypePointer Private %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__1 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_1 = OpConstant %float 1
+     %v2bool = OpTypeVector %bool 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %20
+         %51 = OpLabel
+               OpStore %m %30
+         %52 = OpFunctionCall %void %func1_
+         %53 = OpFunctionCall %void %func1_
+         %54 = OpLoad %mat4v2float %m
+         %55 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v2float %57 %60
+         %80 = OpCompositeConstruct %v2float %63 %66
+         %81 = OpCompositeConstruct %v2float %69 %72
+         %82 = OpCompositeConstruct %v2float %75 %78
+         %83 = OpCompositeConstruct %mat4v2float %79 %80 %81 %82
+         %84 = OpCompositeExtract %v2float %54 0
+         %85 = OpCompositeExtract %v2float %83 0
+         %86 = OpFOrdEqual %v2bool %84 %85
+         %87 = OpAll %bool %86
+         %88 = OpCompositeExtract %v2float %54 1
+         %89 = OpCompositeExtract %v2float %83 1
+         %90 = OpFOrdEqual %v2bool %88 %89
+         %91 = OpAll %bool %90
+         %92 = OpLogicalAnd %bool %87 %91
+         %93 = OpCompositeExtract %v2float %54 2
+         %94 = OpCompositeExtract %v2float %83 2
+         %95 = OpFOrdEqual %v2bool %93 %94
+         %96 = OpAll %bool %95
+         %97 = OpLogicalAnd %bool %92 %96
+         %98 = OpCompositeExtract %v2float %54 3
+         %99 = OpCompositeExtract %v2float %83 3
+        %100 = OpFOrdEqual %v2bool %98 %99
+        %101 = OpAll %bool %100
+        %102 = OpLogicalAnd %bool %97 %101
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_3
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %110
+        %112 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %113
+        %115 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_3
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %108 %111 %114 %117
+               OpStore %_GLF_color %118
+               OpBranch %103
+        %105 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+        %120 = OpLoad %int %119
+        %121 = OpConvertSToF %float %120
+        %122 = OpCompositeConstruct %v4float %121 %121 %121 %121
+               OpStore %_GLF_color %122
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
+  %func0_i1_ = OpFunction %void None %23
+          %x = OpFunctionParameter %_ptr_Function_int
+        %123 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+        %124 = OpLoad %int %x
+        %125 = OpSLessThan %bool %124 %int_1
+        %126 = OpLogicalNot %bool %125
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %127
+        %128 = OpLabel
+        %129 = OpLoad %int %x
+        %130 = OpSGreaterThan %bool %129 %int_1
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+        %133 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+        %134 = OpLoad %float %133
+        %135 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+        %136 = OpLoad %float %135
+        %137 = OpFOrdGreaterThan %bool %134 %136
+               OpBranch %131
+        %131 = OpLabel
+        %138 = OpPhi %bool %130 %128 %137 %132
+               OpBranch %127
+        %127 = OpLabel
+        %139 = OpPhi %bool %125 %123 %138 %131
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %140
+        %141 = OpLabel
+               OpReturn
+        %140 = OpLabel
+        %142 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+        %143 = OpLoad %float %142
+        %144 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+        %145 = OpLoad %float %144
+        %146 = OpFOrdEqual %bool %143 %145
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+               OpStore %i %int_0
+               OpBranch %149
+        %149 = OpLabel
+        %150 = OpLoad %int %i
+        %151 = OpSLessThan %bool %150 %int_2
+               OpLoopMerge %152 %153 None
+               OpBranchConditional %151 %153 %152
+        %153 = OpLabel
+        %154 = OpLoad %int %x
+        %155 = OpExtInst %int %1 SClamp %154 %int_0 %int_3
+        %156 = OpLoad %int %i
+        %157 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+        %158 = OpLoad %float %157
+        %159 = OpAccessChain %_ptr_Private_float %m %155 %156
+        %160 = OpLoad %float %159
+        %161 = OpFAdd %float %160 %158
+        %162 = OpAccessChain %_ptr_Private_float %m %155 %156
+               OpStore %162 %161
+        %163 = OpLoad %int %i
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %i %164
+               OpBranch %149
+        %152 = OpLabel
+               OpBranch %147
+        %147 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %func1_ = OpFunction %void None %20
+        %165 = OpLabel
+      %param = OpVariable %_ptr_Function_int Function
+        %166 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %167 = OpLoad %float %166
+        %168 = OpFOrdLessThan %bool %167 %float_0
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %169
+        %170 = OpLabel
+               OpReturn
+        %169 = OpLabel
+               OpStore %param %int_1
+        %171 = OpFunctionCall %void %func0_i1_ %param
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2327dda
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,146 @@
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+static float4x2 m = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b2, space0) {
+  uint4 x_10[1];
+};
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[1];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_16 : register(b1, space0) {
+  uint4 x_16[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func0_i1_(inout int x) {
+  int i = 0;
+  bool x_137 = false;
+  bool x_138 = false;
+  bool x_138_phi = false;
+  bool x_139_phi = false;
+  const int x_124 = x;
+  const bool x_125 = (x_124 < 1);
+  x_139_phi = x_125;
+  if (!(x_125)) {
+    const int x_129 = x;
+    const bool x_130 = (x_129 > 1);
+    x_138_phi = x_130;
+    if (x_130) {
+      const float x_134 = asfloat(x_10[0].x);
+      const uint scalar_offset = ((16u * uint(0))) / 4;
+      const float x_136 = asfloat(x_12[scalar_offset / 4][scalar_offset % 4]);
+      x_137 = (x_134 > x_136);
+      x_138_phi = x_137;
+    }
+    x_138 = x_138_phi;
+    x_139_phi = x_138;
+  }
+  if (x_139_phi) {
+    return;
+  }
+  const float x_143 = asfloat(x_10[0].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_145 = asfloat(x_12[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_143 == x_145)) {
+    i = 0;
+    while (true) {
+      if ((i < 2)) {
+      } else {
+        break;
+      }
+      {
+        const int x_154 = x;
+        const int x_155 = clamp(x_154, 0, 3);
+        const int x_156 = i;
+        const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+        const float x_158 = asfloat(x_12[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        const float x_160 = m[x_155][x_156];
+        set_float2(m[x_155], x_156, (x_160 + x_158));
+        i = (i + 1);
+      }
+    }
+  }
+  return;
+}
+
+void func1_() {
+  int param = 0;
+  const float x_167 = gl_FragCoord.y;
+  if ((x_167 < 0.0f)) {
+    return;
+  }
+  param = 1;
+  func0_i1_(param);
+  return;
+}
+
+void main_1() {
+  m = float4x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  func1_();
+  func1_();
+  const float4x2 x_54 = m;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_56 = asint(x_16[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_59 = asint(x_16[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const int x_62 = asint(x_16[1].x);
+  const int x_65 = asint(x_16[1].x);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const int x_68 = asint(x_16[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const int x_71 = asint(x_16[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const int x_74 = asint(x_16[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+  const int x_77 = asint(x_16[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+  const float4x2 x_83 = float4x2(float2(float(x_56), float(x_59)), float2(float(x_62), float(x_65)), float2(float(x_68), float(x_71)), float2(float(x_74), float(x_77)));
+  bool tint_tmp_2 = all((x_54[0u] == x_83[0u]));
+  if (tint_tmp_2) {
+    tint_tmp_2 = all((x_54[1u] == x_83[1u]));
+  }
+  bool tint_tmp_1 = (tint_tmp_2);
+  if (tint_tmp_1) {
+    tint_tmp_1 = all((x_54[2u] == x_83[2u]));
+  }
+  bool tint_tmp = (tint_tmp_1);
+  if (tint_tmp) {
+    tint_tmp = all((x_54[3u] == x_83[3u]));
+  }
+  if ((tint_tmp)) {
+    const int x_107 = asint(x_16[3].x);
+    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+    const int x_110 = asint(x_16[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+    const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+    const int x_113 = asint(x_16[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+    const int x_116 = asint(x_16[3].x);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    const uint scalar_offset_11 = ((16u * uint(0))) / 4;
+    const int x_120 = asint(x_16[scalar_offset_11 / 4][scalar_offset_11 % 4]);
+    const float x_121 = float(x_120);
+    x_GLF_color = float4(x_121, x_121, x_121, x_121);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5cd7a35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.msl
@@ -0,0 +1,134 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf2 {
+  /* 0x0000 */ float one;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func0_i1_(constant buf2& x_10, constant buf0& x_12, thread int* const x, thread float4x2* const tint_symbol_5) {
+  int i = 0;
+  bool x_137 = false;
+  bool x_138 = false;
+  bool x_138_phi = false;
+  bool x_139_phi = false;
+  int const x_124 = *(x);
+  bool const x_125 = (x_124 < 1);
+  x_139_phi = x_125;
+  if (!(x_125)) {
+    int const x_129 = *(x);
+    bool const x_130 = (x_129 > 1);
+    x_138_phi = x_130;
+    if (x_130) {
+      float const x_134 = x_10.one;
+      float const x_136 = x_12.x_GLF_uniform_float_values.arr[0].el;
+      x_137 = (x_134 > x_136);
+      x_138_phi = x_137;
+    }
+    x_138 = x_138_phi;
+    x_139_phi = x_138;
+  }
+  bool const x_139 = x_139_phi;
+  if (x_139) {
+    return;
+  }
+  float const x_143 = x_10.one;
+  float const x_145 = x_12.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_143 == x_145)) {
+    i = 0;
+    while (true) {
+      int const x_150 = i;
+      if ((x_150 < 2)) {
+      } else {
+        break;
+      }
+      {
+        int const x_154 = *(x);
+        int const x_155 = clamp(x_154, 0, 3);
+        int const x_156 = i;
+        float const x_158 = x_12.x_GLF_uniform_float_values.arr[0].el;
+        float const x_160 = (*(tint_symbol_5))[x_155][x_156];
+        (*(tint_symbol_5))[x_155][x_156] = (x_160 + x_158);
+        int const x_163 = i;
+        i = (x_163 + 1);
+      }
+    }
+  }
+  return;
+}
+
+void func1_(constant buf2& x_10, constant buf0& x_12, thread float4* const tint_symbol_6, thread float4x2* const tint_symbol_7) {
+  int param = 0;
+  float const x_167 = (*(tint_symbol_6)).y;
+  if ((x_167 < 0.0f)) {
+    return;
+  }
+  param = 1;
+  func0_i1_(x_10, x_12, &(param), tint_symbol_7);
+  return;
+}
+
+void main_1(constant buf2& x_10, constant buf0& x_12, constant buf1& x_16, thread float4x2* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  *(tint_symbol_8) = float4x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  func1_(x_10, x_12, tint_symbol_9, tint_symbol_8);
+  func1_(x_10, x_12, tint_symbol_9, tint_symbol_8);
+  float4x2 const x_54 = *(tint_symbol_8);
+  int const x_56 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_59 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_62 = x_16.x_GLF_uniform_int_values.arr[1].el;
+  int const x_65 = x_16.x_GLF_uniform_int_values.arr[1].el;
+  int const x_68 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_71 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_74 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_77 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  float4x2 const x_83 = float4x2(float2(float(x_56), float(x_59)), float2(float(x_62), float(x_65)), float2(float(x_68), float(x_71)), float2(float(x_74), float(x_77)));
+  if ((((all((x_54[0u] == x_83[0u])) && all((x_54[1u] == x_83[1u]))) && all((x_54[2u] == x_83[2u]))) && all((x_54[3u] == x_83[3u])))) {
+    int const x_107 = x_16.x_GLF_uniform_int_values.arr[3].el;
+    int const x_110 = x_16.x_GLF_uniform_int_values.arr[0].el;
+    int const x_113 = x_16.x_GLF_uniform_int_values.arr[0].el;
+    int const x_116 = x_16.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_10) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    int const x_120 = x_16.x_GLF_uniform_int_values.arr[0].el;
+    float const x_121 = float(x_120);
+    *(tint_symbol_10) = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf2& x_10 [[buffer(2)]], constant buf0& x_12 [[buffer(0)]], constant buf1& x_16 [[buffer(1)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4x2 tint_symbol_12 = float4x2(0.0f);
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_10, x_12, x_16, &(tint_symbol_12), &(tint_symbol_11), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b4e8fcf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,329 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 214
+; Schema: 0
+               OpCapability Shader
+         %92 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %m "m"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "one"
+               OpName %x_10 "x_10"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_12 "x_12"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_16 "x_16"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func0_i1_ "func0_i1_"
+               OpName %x "x"
+               OpName %i "i"
+               OpName %x_137 "x_137"
+               OpName %x_138 "x_138"
+               OpName %x_138_phi "x_138_phi"
+               OpName %x_139_phi "x_139_phi"
+               OpName %func1_ "func1_"
+               OpName %param "param"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_16 NonWritable
+               OpDecorate %x_16 DescriptorSet 0
+               OpDecorate %x_16 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat4v2float = OpTypeMatrix %v2float 4
+%_ptr_Private_mat4v2float = OpTypePointer Private %mat4v2float
+          %6 = OpConstantNull %mat4v2float
+          %m = OpVariable %_ptr_Private_mat4v2float Private %6
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_10 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %19 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %19
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_16 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %19
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %19
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpTypeFunction %void %_ptr_Function_int
+         %38 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Private_float = OpTypePointer Private %float
+        %104 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+        %118 = OpConstantComposite %v2float %float_0 %float_0
+        %119 = OpConstantComposite %mat4v2float %118 %118 %118 %118
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %v2bool = OpTypeVector %bool 2
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+   %main_out = OpTypeStruct %v4float
+        %201 = OpTypeFunction %void %main_out
+  %func0_i1_ = OpFunction %void None %31
+          %x = OpFunctionParameter %_ptr_Function_int
+         %36 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %38
+      %x_137 = OpVariable %_ptr_Function_bool Function %42
+      %x_138 = OpVariable %_ptr_Function_bool Function %42
+  %x_138_phi = OpVariable %_ptr_Function_bool Function %42
+  %x_139_phi = OpVariable %_ptr_Function_bool Function %42
+         %47 = OpLoad %int %x
+         %49 = OpSLessThan %bool %47 %int_1
+               OpStore %x_139_phi %49
+         %50 = OpLogicalNot %bool %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %54 = OpLoad %int %x
+         %55 = OpSGreaterThan %bool %54 %int_1
+               OpStore %x_138_phi %55
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0
+         %61 = OpLoad %float %60
+         %63 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpFOrdGreaterThan %bool %61 %64
+               OpStore %x_137 %65
+         %66 = OpLoad %bool %x_137
+               OpStore %x_138_phi %66
+               OpBranch %56
+         %56 = OpLabel
+         %67 = OpLoad %bool %x_138_phi
+               OpStore %x_138 %67
+         %68 = OpLoad %bool %x_138
+               OpStore %x_139_phi %68
+               OpBranch %51
+         %51 = OpLabel
+         %69 = OpLoad %bool %x_139_phi
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+               OpReturn
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpFOrdEqual %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+               OpStore %i %int_0
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %83 = OpLoad %int %i
+         %85 = OpSLessThan %bool %83 %int_2
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+               OpBranch %86
+         %88 = OpLabel
+               OpBranch %80
+         %86 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+         %90 = OpLoad %int %x
+         %91 = OpExtInst %int %92 SClamp %90 %int_0 %int_3
+         %94 = OpLoad %int %i
+         %95 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+         %96 = OpLoad %float %95
+         %98 = OpAccessChain %_ptr_Private_float %m %91 %94
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Private_float %m %91 %94
+        %101 = OpFAdd %float %99 %96
+               OpStore %100 %101
+        %102 = OpLoad %int %i
+        %103 = OpIAdd %int %102 %int_1
+               OpStore %i %103
+               OpBranch %79
+         %80 = OpLabel
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %func1_ = OpFunction %void None %104
+        %106 = OpLabel
+      %param = OpVariable %_ptr_Function_int Function %38
+        %108 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %109 = OpLoad %float %108
+        %111 = OpFOrdLessThan %bool %109 %float_0
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %112
+        %113 = OpLabel
+               OpReturn
+        %112 = OpLabel
+               OpStore %param %int_1
+        %114 = OpFunctionCall %void %func0_i1_ %param
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %104
+        %117 = OpLabel
+               OpStore %m %119
+        %120 = OpFunctionCall %void %func1_
+        %121 = OpFunctionCall %void %func1_
+        %122 = OpLoad %mat4v2float %m
+        %124 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %125 = OpLoad %int %124
+        %126 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %127 = OpLoad %int %126
+        %128 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_1
+        %129 = OpLoad %int %128
+        %130 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_1
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %133 = OpLoad %int %132
+        %134 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %135 = OpLoad %int %134
+        %136 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %139 = OpLoad %int %138
+        %140 = OpConvertSToF %float %125
+        %141 = OpConvertSToF %float %127
+        %142 = OpCompositeConstruct %v2float %140 %141
+        %143 = OpConvertSToF %float %129
+        %144 = OpConvertSToF %float %131
+        %145 = OpCompositeConstruct %v2float %143 %144
+        %146 = OpConvertSToF %float %133
+        %147 = OpConvertSToF %float %135
+        %148 = OpCompositeConstruct %v2float %146 %147
+        %149 = OpConvertSToF %float %137
+        %150 = OpConvertSToF %float %139
+        %151 = OpCompositeConstruct %v2float %149 %150
+        %152 = OpCompositeConstruct %mat4v2float %142 %145 %148 %151
+        %154 = OpCompositeExtract %v2float %122 0
+        %155 = OpCompositeExtract %v2float %152 0
+        %156 = OpFOrdEqual %v2bool %154 %155
+        %153 = OpAll %bool %156
+               OpSelectionMerge %158 None
+               OpBranchConditional %153 %159 %158
+        %159 = OpLabel
+        %161 = OpCompositeExtract %v2float %122 1
+        %162 = OpCompositeExtract %v2float %152 1
+        %163 = OpFOrdEqual %v2bool %161 %162
+        %160 = OpAll %bool %163
+               OpBranch %158
+        %158 = OpLabel
+        %164 = OpPhi %bool %153 %117 %160 %159
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %165
+        %166 = OpLabel
+        %169 = OpCompositeExtract %v2float %122 2
+        %170 = OpCompositeExtract %v2float %152 2
+        %171 = OpFOrdEqual %v2bool %169 %170
+        %167 = OpAll %bool %171
+               OpBranch %165
+        %165 = OpLabel
+        %172 = OpPhi %bool %164 %158 %167 %166
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+        %177 = OpCompositeExtract %v2float %122 3
+        %178 = OpCompositeExtract %v2float %152 3
+        %179 = OpFOrdEqual %v2bool %177 %178
+        %175 = OpAll %bool %179
+               OpBranch %173
+        %173 = OpLabel
+        %180 = OpPhi %bool %172 %165 %175 %174
+               OpSelectionMerge %181 None
+               OpBranchConditional %180 %182 %183
+        %182 = OpLabel
+        %184 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_3
+        %185 = OpLoad %int %184
+        %186 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %187 = OpLoad %int %186
+        %188 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %189 = OpLoad %int %188
+        %190 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_3
+        %191 = OpLoad %int %190
+        %192 = OpConvertSToF %float %185
+        %193 = OpConvertSToF %float %187
+        %194 = OpConvertSToF %float %189
+        %195 = OpConvertSToF %float %191
+        %196 = OpCompositeConstruct %v4float %192 %193 %194 %195
+               OpStore %x_GLF_color %196
+               OpBranch %181
+        %183 = OpLabel
+        %197 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %198 = OpLoad %int %197
+        %199 = OpConvertSToF %float %198
+        %200 = OpCompositeConstruct %v4float %199 %199 %199 %199
+               OpStore %x_GLF_color %200
+               OpBranch %181
+        %181 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %201
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %205 = OpLabel
+        %206 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %206
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %104
+        %208 = OpLabel
+        %209 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %209
+        %210 = OpFunctionCall %void %main_1
+        %212 = OpLoad %v4float %x_GLF_color
+        %213 = OpCompositeConstruct %main_out %212
+        %211 = OpFunctionCall %void %tint_symbol_3 %213
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7e9de86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,133 @@
+[[block]]
+struct buf2 {
+  one : f32;
+};
+
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> m : mat4x2<f32>;
+
+[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func0_i1_(x : ptr<function, i32>) {
+  var i : i32;
+  var x_137 : bool;
+  var x_138 : bool;
+  var x_138_phi : bool;
+  var x_139_phi : bool;
+  let x_124 : i32 = *(x);
+  let x_125 : bool = (x_124 < 1);
+  x_139_phi = x_125;
+  if (!(x_125)) {
+    let x_129 : i32 = *(x);
+    let x_130 : bool = (x_129 > 1);
+    x_138_phi = x_130;
+    if (x_130) {
+      let x_134 : f32 = x_10.one;
+      let x_136 : f32 = x_12.x_GLF_uniform_float_values[0];
+      x_137 = (x_134 > x_136);
+      x_138_phi = x_137;
+    }
+    x_138 = x_138_phi;
+    x_139_phi = x_138;
+  }
+  let x_139 : bool = x_139_phi;
+  if (x_139) {
+    return;
+  }
+  let x_143 : f32 = x_10.one;
+  let x_145 : f32 = x_12.x_GLF_uniform_float_values[0];
+  if ((x_143 == x_145)) {
+    i = 0;
+    loop {
+      let x_150 : i32 = i;
+      if ((x_150 < 2)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_154 : i32 = *(x);
+        let x_155 : i32 = clamp(x_154, 0, 3);
+        let x_156 : i32 = i;
+        let x_158 : f32 = x_12.x_GLF_uniform_float_values[0];
+        let x_160 : f32 = m[x_155][x_156];
+        m[x_155][x_156] = (x_160 + x_158);
+        let x_163 : i32 = i;
+        i = (x_163 + 1);
+      }
+    }
+  }
+  return;
+}
+
+fn func1_() {
+  var param : i32;
+  let x_167 : f32 = gl_FragCoord.y;
+  if ((x_167 < 0.0)) {
+    return;
+  }
+  param = 1;
+  func0_i1_(&(param));
+  return;
+}
+
+fn main_1() {
+  m = mat4x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  func1_();
+  func1_();
+  let x_54 : mat4x2<f32> = m;
+  let x_56 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_59 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_62 : i32 = x_16.x_GLF_uniform_int_values[1];
+  let x_65 : i32 = x_16.x_GLF_uniform_int_values[1];
+  let x_68 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_71 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_74 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_83 : mat4x2<f32> = mat4x2<f32>(vec2<f32>(f32(x_56), f32(x_59)), vec2<f32>(f32(x_62), f32(x_65)), vec2<f32>(f32(x_68), f32(x_71)), vec2<f32>(f32(x_74), f32(x_77)));
+  if ((((all((x_54[0u] == x_83[0u])) && all((x_54[1u] == x_83[1u]))) && all((x_54[2u] == x_83[2u]))) && all((x_54[3u] == x_83[3u])))) {
+    let x_107 : i32 = x_16.x_GLF_uniform_int_values[3];
+    let x_110 : i32 = x_16.x_GLF_uniform_int_values[0];
+    let x_113 : i32 = x_16.x_GLF_uniform_int_values[0];
+    let x_116 : i32 = x_16.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_16.x_GLF_uniform_int_values[0];
+    let x_121 : f32 = f32(x_120);
+    x_GLF_color = vec4<f32>(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
new file mode 100644
index 0000000..7e9de86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
@@ -0,0 +1,133 @@
+[[block]]
+struct buf2 {
+  one : f32;
+};
+
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> m : mat4x2<f32>;
+
+[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func0_i1_(x : ptr<function, i32>) {
+  var i : i32;
+  var x_137 : bool;
+  var x_138 : bool;
+  var x_138_phi : bool;
+  var x_139_phi : bool;
+  let x_124 : i32 = *(x);
+  let x_125 : bool = (x_124 < 1);
+  x_139_phi = x_125;
+  if (!(x_125)) {
+    let x_129 : i32 = *(x);
+    let x_130 : bool = (x_129 > 1);
+    x_138_phi = x_130;
+    if (x_130) {
+      let x_134 : f32 = x_10.one;
+      let x_136 : f32 = x_12.x_GLF_uniform_float_values[0];
+      x_137 = (x_134 > x_136);
+      x_138_phi = x_137;
+    }
+    x_138 = x_138_phi;
+    x_139_phi = x_138;
+  }
+  let x_139 : bool = x_139_phi;
+  if (x_139) {
+    return;
+  }
+  let x_143 : f32 = x_10.one;
+  let x_145 : f32 = x_12.x_GLF_uniform_float_values[0];
+  if ((x_143 == x_145)) {
+    i = 0;
+    loop {
+      let x_150 : i32 = i;
+      if ((x_150 < 2)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_154 : i32 = *(x);
+        let x_155 : i32 = clamp(x_154, 0, 3);
+        let x_156 : i32 = i;
+        let x_158 : f32 = x_12.x_GLF_uniform_float_values[0];
+        let x_160 : f32 = m[x_155][x_156];
+        m[x_155][x_156] = (x_160 + x_158);
+        let x_163 : i32 = i;
+        i = (x_163 + 1);
+      }
+    }
+  }
+  return;
+}
+
+fn func1_() {
+  var param : i32;
+  let x_167 : f32 = gl_FragCoord.y;
+  if ((x_167 < 0.0)) {
+    return;
+  }
+  param = 1;
+  func0_i1_(&(param));
+  return;
+}
+
+fn main_1() {
+  m = mat4x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  func1_();
+  func1_();
+  let x_54 : mat4x2<f32> = m;
+  let x_56 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_59 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_62 : i32 = x_16.x_GLF_uniform_int_values[1];
+  let x_65 : i32 = x_16.x_GLF_uniform_int_values[1];
+  let x_68 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_71 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_74 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_83 : mat4x2<f32> = mat4x2<f32>(vec2<f32>(f32(x_56), f32(x_59)), vec2<f32>(f32(x_62), f32(x_65)), vec2<f32>(f32(x_68), f32(x_71)), vec2<f32>(f32(x_74), f32(x_77)));
+  if ((((all((x_54[0u] == x_83[0u])) && all((x_54[1u] == x_83[1u]))) && all((x_54[2u] == x_83[2u]))) && all((x_54[3u] == x_83[3u])))) {
+    let x_107 : i32 = x_16.x_GLF_uniform_int_values[3];
+    let x_110 : i32 = x_16.x_GLF_uniform_int_values[0];
+    let x_113 : i32 = x_16.x_GLF_uniform_int_values[0];
+    let x_116 : i32 = x_16.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_16.x_GLF_uniform_int_values[0];
+    let x_121 : f32 = f32(x_120);
+    x_GLF_color = vec4<f32>(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2327dda
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,146 @@
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+static float4x2 m = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b2, space0) {
+  uint4 x_10[1];
+};
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[1];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_16 : register(b1, space0) {
+  uint4 x_16[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func0_i1_(inout int x) {
+  int i = 0;
+  bool x_137 = false;
+  bool x_138 = false;
+  bool x_138_phi = false;
+  bool x_139_phi = false;
+  const int x_124 = x;
+  const bool x_125 = (x_124 < 1);
+  x_139_phi = x_125;
+  if (!(x_125)) {
+    const int x_129 = x;
+    const bool x_130 = (x_129 > 1);
+    x_138_phi = x_130;
+    if (x_130) {
+      const float x_134 = asfloat(x_10[0].x);
+      const uint scalar_offset = ((16u * uint(0))) / 4;
+      const float x_136 = asfloat(x_12[scalar_offset / 4][scalar_offset % 4]);
+      x_137 = (x_134 > x_136);
+      x_138_phi = x_137;
+    }
+    x_138 = x_138_phi;
+    x_139_phi = x_138;
+  }
+  if (x_139_phi) {
+    return;
+  }
+  const float x_143 = asfloat(x_10[0].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_145 = asfloat(x_12[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_143 == x_145)) {
+    i = 0;
+    while (true) {
+      if ((i < 2)) {
+      } else {
+        break;
+      }
+      {
+        const int x_154 = x;
+        const int x_155 = clamp(x_154, 0, 3);
+        const int x_156 = i;
+        const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+        const float x_158 = asfloat(x_12[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        const float x_160 = m[x_155][x_156];
+        set_float2(m[x_155], x_156, (x_160 + x_158));
+        i = (i + 1);
+      }
+    }
+  }
+  return;
+}
+
+void func1_() {
+  int param = 0;
+  const float x_167 = gl_FragCoord.y;
+  if ((x_167 < 0.0f)) {
+    return;
+  }
+  param = 1;
+  func0_i1_(param);
+  return;
+}
+
+void main_1() {
+  m = float4x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  func1_();
+  func1_();
+  const float4x2 x_54 = m;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_56 = asint(x_16[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_59 = asint(x_16[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const int x_62 = asint(x_16[1].x);
+  const int x_65 = asint(x_16[1].x);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const int x_68 = asint(x_16[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const int x_71 = asint(x_16[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+  const int x_74 = asint(x_16[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+  const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+  const int x_77 = asint(x_16[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+  const float4x2 x_83 = float4x2(float2(float(x_56), float(x_59)), float2(float(x_62), float(x_65)), float2(float(x_68), float(x_71)), float2(float(x_74), float(x_77)));
+  bool tint_tmp_2 = all((x_54[0u] == x_83[0u]));
+  if (tint_tmp_2) {
+    tint_tmp_2 = all((x_54[1u] == x_83[1u]));
+  }
+  bool tint_tmp_1 = (tint_tmp_2);
+  if (tint_tmp_1) {
+    tint_tmp_1 = all((x_54[2u] == x_83[2u]));
+  }
+  bool tint_tmp = (tint_tmp_1);
+  if (tint_tmp) {
+    tint_tmp = all((x_54[3u] == x_83[3u]));
+  }
+  if ((tint_tmp)) {
+    const int x_107 = asint(x_16[3].x);
+    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+    const int x_110 = asint(x_16[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+    const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+    const int x_113 = asint(x_16[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+    const int x_116 = asint(x_16[3].x);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    const uint scalar_offset_11 = ((16u * uint(0))) / 4;
+    const int x_120 = asint(x_16[scalar_offset_11 / 4][scalar_offset_11 % 4]);
+    const float x_121 = float(x_120);
+    x_GLF_color = float4(x_121, x_121, x_121, x_121);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5cd7a35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.msl
@@ -0,0 +1,134 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf2 {
+  /* 0x0000 */ float one;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func0_i1_(constant buf2& x_10, constant buf0& x_12, thread int* const x, thread float4x2* const tint_symbol_5) {
+  int i = 0;
+  bool x_137 = false;
+  bool x_138 = false;
+  bool x_138_phi = false;
+  bool x_139_phi = false;
+  int const x_124 = *(x);
+  bool const x_125 = (x_124 < 1);
+  x_139_phi = x_125;
+  if (!(x_125)) {
+    int const x_129 = *(x);
+    bool const x_130 = (x_129 > 1);
+    x_138_phi = x_130;
+    if (x_130) {
+      float const x_134 = x_10.one;
+      float const x_136 = x_12.x_GLF_uniform_float_values.arr[0].el;
+      x_137 = (x_134 > x_136);
+      x_138_phi = x_137;
+    }
+    x_138 = x_138_phi;
+    x_139_phi = x_138;
+  }
+  bool const x_139 = x_139_phi;
+  if (x_139) {
+    return;
+  }
+  float const x_143 = x_10.one;
+  float const x_145 = x_12.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_143 == x_145)) {
+    i = 0;
+    while (true) {
+      int const x_150 = i;
+      if ((x_150 < 2)) {
+      } else {
+        break;
+      }
+      {
+        int const x_154 = *(x);
+        int const x_155 = clamp(x_154, 0, 3);
+        int const x_156 = i;
+        float const x_158 = x_12.x_GLF_uniform_float_values.arr[0].el;
+        float const x_160 = (*(tint_symbol_5))[x_155][x_156];
+        (*(tint_symbol_5))[x_155][x_156] = (x_160 + x_158);
+        int const x_163 = i;
+        i = (x_163 + 1);
+      }
+    }
+  }
+  return;
+}
+
+void func1_(constant buf2& x_10, constant buf0& x_12, thread float4* const tint_symbol_6, thread float4x2* const tint_symbol_7) {
+  int param = 0;
+  float const x_167 = (*(tint_symbol_6)).y;
+  if ((x_167 < 0.0f)) {
+    return;
+  }
+  param = 1;
+  func0_i1_(x_10, x_12, &(param), tint_symbol_7);
+  return;
+}
+
+void main_1(constant buf2& x_10, constant buf0& x_12, constant buf1& x_16, thread float4x2* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  *(tint_symbol_8) = float4x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  func1_(x_10, x_12, tint_symbol_9, tint_symbol_8);
+  func1_(x_10, x_12, tint_symbol_9, tint_symbol_8);
+  float4x2 const x_54 = *(tint_symbol_8);
+  int const x_56 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_59 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_62 = x_16.x_GLF_uniform_int_values.arr[1].el;
+  int const x_65 = x_16.x_GLF_uniform_int_values.arr[1].el;
+  int const x_68 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_71 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_74 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  int const x_77 = x_16.x_GLF_uniform_int_values.arr[0].el;
+  float4x2 const x_83 = float4x2(float2(float(x_56), float(x_59)), float2(float(x_62), float(x_65)), float2(float(x_68), float(x_71)), float2(float(x_74), float(x_77)));
+  if ((((all((x_54[0u] == x_83[0u])) && all((x_54[1u] == x_83[1u]))) && all((x_54[2u] == x_83[2u]))) && all((x_54[3u] == x_83[3u])))) {
+    int const x_107 = x_16.x_GLF_uniform_int_values.arr[3].el;
+    int const x_110 = x_16.x_GLF_uniform_int_values.arr[0].el;
+    int const x_113 = x_16.x_GLF_uniform_int_values.arr[0].el;
+    int const x_116 = x_16.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_10) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    int const x_120 = x_16.x_GLF_uniform_int_values.arr[0].el;
+    float const x_121 = float(x_120);
+    *(tint_symbol_10) = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf2& x_10 [[buffer(2)]], constant buf0& x_12 [[buffer(0)]], constant buf1& x_16 [[buffer(1)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4x2 tint_symbol_12 = float4x2(0.0f);
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_10, x_12, x_16, &(tint_symbol_12), &(tint_symbol_11), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b4e8fcf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,329 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 214
+; Schema: 0
+               OpCapability Shader
+         %92 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %m "m"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "one"
+               OpName %x_10 "x_10"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_12 "x_12"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_16 "x_16"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func0_i1_ "func0_i1_"
+               OpName %x "x"
+               OpName %i "i"
+               OpName %x_137 "x_137"
+               OpName %x_138 "x_138"
+               OpName %x_138_phi "x_138_phi"
+               OpName %x_139_phi "x_139_phi"
+               OpName %func1_ "func1_"
+               OpName %param "param"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_16 NonWritable
+               OpDecorate %x_16 DescriptorSet 0
+               OpDecorate %x_16 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat4v2float = OpTypeMatrix %v2float 4
+%_ptr_Private_mat4v2float = OpTypePointer Private %mat4v2float
+          %6 = OpConstantNull %mat4v2float
+          %m = OpVariable %_ptr_Private_mat4v2float Private %6
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_10 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %19 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %19
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_16 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %19
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %19
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpTypeFunction %void %_ptr_Function_int
+         %38 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Private_float = OpTypePointer Private %float
+        %104 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+        %118 = OpConstantComposite %v2float %float_0 %float_0
+        %119 = OpConstantComposite %mat4v2float %118 %118 %118 %118
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %v2bool = OpTypeVector %bool 2
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+   %main_out = OpTypeStruct %v4float
+        %201 = OpTypeFunction %void %main_out
+  %func0_i1_ = OpFunction %void None %31
+          %x = OpFunctionParameter %_ptr_Function_int
+         %36 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %38
+      %x_137 = OpVariable %_ptr_Function_bool Function %42
+      %x_138 = OpVariable %_ptr_Function_bool Function %42
+  %x_138_phi = OpVariable %_ptr_Function_bool Function %42
+  %x_139_phi = OpVariable %_ptr_Function_bool Function %42
+         %47 = OpLoad %int %x
+         %49 = OpSLessThan %bool %47 %int_1
+               OpStore %x_139_phi %49
+         %50 = OpLogicalNot %bool %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %54 = OpLoad %int %x
+         %55 = OpSGreaterThan %bool %54 %int_1
+               OpStore %x_138_phi %55
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0
+         %61 = OpLoad %float %60
+         %63 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpFOrdGreaterThan %bool %61 %64
+               OpStore %x_137 %65
+         %66 = OpLoad %bool %x_137
+               OpStore %x_138_phi %66
+               OpBranch %56
+         %56 = OpLabel
+         %67 = OpLoad %bool %x_138_phi
+               OpStore %x_138 %67
+         %68 = OpLoad %bool %x_138
+               OpStore %x_139_phi %68
+               OpBranch %51
+         %51 = OpLabel
+         %69 = OpLoad %bool %x_139_phi
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+               OpReturn
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpFOrdEqual %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+               OpStore %i %int_0
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %83 = OpLoad %int %i
+         %85 = OpSLessThan %bool %83 %int_2
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+               OpBranch %86
+         %88 = OpLabel
+               OpBranch %80
+         %86 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+         %90 = OpLoad %int %x
+         %91 = OpExtInst %int %92 SClamp %90 %int_0 %int_3
+         %94 = OpLoad %int %i
+         %95 = OpAccessChain %_ptr_Uniform_float %x_12 %uint_0 %int_0
+         %96 = OpLoad %float %95
+         %98 = OpAccessChain %_ptr_Private_float %m %91 %94
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Private_float %m %91 %94
+        %101 = OpFAdd %float %99 %96
+               OpStore %100 %101
+        %102 = OpLoad %int %i
+        %103 = OpIAdd %int %102 %int_1
+               OpStore %i %103
+               OpBranch %79
+         %80 = OpLabel
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %func1_ = OpFunction %void None %104
+        %106 = OpLabel
+      %param = OpVariable %_ptr_Function_int Function %38
+        %108 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %109 = OpLoad %float %108
+        %111 = OpFOrdLessThan %bool %109 %float_0
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %112
+        %113 = OpLabel
+               OpReturn
+        %112 = OpLabel
+               OpStore %param %int_1
+        %114 = OpFunctionCall %void %func0_i1_ %param
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %104
+        %117 = OpLabel
+               OpStore %m %119
+        %120 = OpFunctionCall %void %func1_
+        %121 = OpFunctionCall %void %func1_
+        %122 = OpLoad %mat4v2float %m
+        %124 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %125 = OpLoad %int %124
+        %126 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %127 = OpLoad %int %126
+        %128 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_1
+        %129 = OpLoad %int %128
+        %130 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_1
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %133 = OpLoad %int %132
+        %134 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %135 = OpLoad %int %134
+        %136 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %139 = OpLoad %int %138
+        %140 = OpConvertSToF %float %125
+        %141 = OpConvertSToF %float %127
+        %142 = OpCompositeConstruct %v2float %140 %141
+        %143 = OpConvertSToF %float %129
+        %144 = OpConvertSToF %float %131
+        %145 = OpCompositeConstruct %v2float %143 %144
+        %146 = OpConvertSToF %float %133
+        %147 = OpConvertSToF %float %135
+        %148 = OpCompositeConstruct %v2float %146 %147
+        %149 = OpConvertSToF %float %137
+        %150 = OpConvertSToF %float %139
+        %151 = OpCompositeConstruct %v2float %149 %150
+        %152 = OpCompositeConstruct %mat4v2float %142 %145 %148 %151
+        %154 = OpCompositeExtract %v2float %122 0
+        %155 = OpCompositeExtract %v2float %152 0
+        %156 = OpFOrdEqual %v2bool %154 %155
+        %153 = OpAll %bool %156
+               OpSelectionMerge %158 None
+               OpBranchConditional %153 %159 %158
+        %159 = OpLabel
+        %161 = OpCompositeExtract %v2float %122 1
+        %162 = OpCompositeExtract %v2float %152 1
+        %163 = OpFOrdEqual %v2bool %161 %162
+        %160 = OpAll %bool %163
+               OpBranch %158
+        %158 = OpLabel
+        %164 = OpPhi %bool %153 %117 %160 %159
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %165
+        %166 = OpLabel
+        %169 = OpCompositeExtract %v2float %122 2
+        %170 = OpCompositeExtract %v2float %152 2
+        %171 = OpFOrdEqual %v2bool %169 %170
+        %167 = OpAll %bool %171
+               OpBranch %165
+        %165 = OpLabel
+        %172 = OpPhi %bool %164 %158 %167 %166
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+        %177 = OpCompositeExtract %v2float %122 3
+        %178 = OpCompositeExtract %v2float %152 3
+        %179 = OpFOrdEqual %v2bool %177 %178
+        %175 = OpAll %bool %179
+               OpBranch %173
+        %173 = OpLabel
+        %180 = OpPhi %bool %172 %165 %175 %174
+               OpSelectionMerge %181 None
+               OpBranchConditional %180 %182 %183
+        %182 = OpLabel
+        %184 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_3
+        %185 = OpLoad %int %184
+        %186 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %187 = OpLoad %int %186
+        %188 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %189 = OpLoad %int %188
+        %190 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_3
+        %191 = OpLoad %int %190
+        %192 = OpConvertSToF %float %185
+        %193 = OpConvertSToF %float %187
+        %194 = OpConvertSToF %float %189
+        %195 = OpConvertSToF %float %191
+        %196 = OpCompositeConstruct %v4float %192 %193 %194 %195
+               OpStore %x_GLF_color %196
+               OpBranch %181
+        %183 = OpLabel
+        %197 = OpAccessChain %_ptr_Uniform_int %x_16 %uint_0 %int_0
+        %198 = OpLoad %int %197
+        %199 = OpConvertSToF %float %198
+        %200 = OpCompositeConstruct %v4float %199 %199 %199 %199
+               OpStore %x_GLF_color %200
+               OpBranch %181
+        %181 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %201
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %205 = OpLabel
+        %206 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %206
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %104
+        %208 = OpLabel
+        %209 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %209
+        %210 = OpFunctionCall %void %main_1
+        %212 = OpLoad %v4float %x_GLF_color
+        %213 = OpCompositeConstruct %main_out %212
+        %211 = OpFunctionCall %void %tint_symbol_3 %213
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7e9de86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,133 @@
+[[block]]
+struct buf2 {
+  one : f32;
+};
+
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> m : mat4x2<f32>;
+
+[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func0_i1_(x : ptr<function, i32>) {
+  var i : i32;
+  var x_137 : bool;
+  var x_138 : bool;
+  var x_138_phi : bool;
+  var x_139_phi : bool;
+  let x_124 : i32 = *(x);
+  let x_125 : bool = (x_124 < 1);
+  x_139_phi = x_125;
+  if (!(x_125)) {
+    let x_129 : i32 = *(x);
+    let x_130 : bool = (x_129 > 1);
+    x_138_phi = x_130;
+    if (x_130) {
+      let x_134 : f32 = x_10.one;
+      let x_136 : f32 = x_12.x_GLF_uniform_float_values[0];
+      x_137 = (x_134 > x_136);
+      x_138_phi = x_137;
+    }
+    x_138 = x_138_phi;
+    x_139_phi = x_138;
+  }
+  let x_139 : bool = x_139_phi;
+  if (x_139) {
+    return;
+  }
+  let x_143 : f32 = x_10.one;
+  let x_145 : f32 = x_12.x_GLF_uniform_float_values[0];
+  if ((x_143 == x_145)) {
+    i = 0;
+    loop {
+      let x_150 : i32 = i;
+      if ((x_150 < 2)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_154 : i32 = *(x);
+        let x_155 : i32 = clamp(x_154, 0, 3);
+        let x_156 : i32 = i;
+        let x_158 : f32 = x_12.x_GLF_uniform_float_values[0];
+        let x_160 : f32 = m[x_155][x_156];
+        m[x_155][x_156] = (x_160 + x_158);
+        let x_163 : i32 = i;
+        i = (x_163 + 1);
+      }
+    }
+  }
+  return;
+}
+
+fn func1_() {
+  var param : i32;
+  let x_167 : f32 = gl_FragCoord.y;
+  if ((x_167 < 0.0)) {
+    return;
+  }
+  param = 1;
+  func0_i1_(&(param));
+  return;
+}
+
+fn main_1() {
+  m = mat4x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  func1_();
+  func1_();
+  let x_54 : mat4x2<f32> = m;
+  let x_56 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_59 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_62 : i32 = x_16.x_GLF_uniform_int_values[1];
+  let x_65 : i32 = x_16.x_GLF_uniform_int_values[1];
+  let x_68 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_71 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_74 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = x_16.x_GLF_uniform_int_values[0];
+  let x_83 : mat4x2<f32> = mat4x2<f32>(vec2<f32>(f32(x_56), f32(x_59)), vec2<f32>(f32(x_62), f32(x_65)), vec2<f32>(f32(x_68), f32(x_71)), vec2<f32>(f32(x_74), f32(x_77)));
+  if ((((all((x_54[0u] == x_83[0u])) && all((x_54[1u] == x_83[1u]))) && all((x_54[2u] == x_83[2u]))) && all((x_54[3u] == x_83[3u])))) {
+    let x_107 : i32 = x_16.x_GLF_uniform_int_values[3];
+    let x_110 : i32 = x_16.x_GLF_uniform_int_values[0];
+    let x_113 : i32 = x_16.x_GLF_uniform_int_values[0];
+    let x_116 : i32 = x_16.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_16.x_GLF_uniform_int_values[0];
+    let x_121 : f32 = f32(x_120);
+    x_GLF_color = vec4<f32>(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm
new file mode 100644
index 0000000..ac20aee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm
@@ -0,0 +1,183 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %v0 "v0"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v1 "v1"
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %c "c"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_3 = OpConstant %float 3
+    %float_1 = OpConstant %float 1
+         %36 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %15
+         %39 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v4float Function
+         %v1 = OpVariable %_ptr_Function_v4float Function
+          %a = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %41 = OpLoad %float %40
+         %42 = OpCompositeConstruct %v4float %41 %41 %41 %41
+               OpStore %v0 %42
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpCompositeConstruct %v4float %44 %44 %44 %44
+               OpStore %v1 %45
+         %46 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %47 = OpLoad %int %46
+               OpStore %a %47
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpLoad %int %a
+         %53 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpSLessThan %bool %52 %54
+               OpBranchConditional %55 %56 %49
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %58 = OpLoad %int %57
+               OpStore %c %58
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %c
+         %64 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %65 = OpLoad %int %64
+         %66 = OpSLessThan %bool %63 %65
+               OpBranchConditional %66 %67 %60
+         %67 = OpLabel
+         %68 = OpLoad %int %c
+         %69 = OpExtInst %int %1 SClamp %68 %int_0 %int_3
+         %70 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Function_float %v0 %69
+         %73 = OpLoad %float %72
+         %74 = OpFSub %float %73 %71
+         %75 = OpAccessChain %_ptr_Function_float %v0 %69
+               OpStore %75 %74
+         %76 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %79 = OpLoad %int %78
+         %80 = OpIEqual %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+         %83 = OpLoad %int %a
+         %84 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %89 = OpLoad %float %88
+         %90 = OpCompositeConstruct %v4float %85 %87 %89 %float_3
+         %91 = OpLoad %v4float %v0
+         %92 = OpExtInst %v4float %1 SmoothStep %90 %36 %91
+         %93 = OpLoad %int %a
+         %94 = OpVectorExtractDynamic %float %92 %93
+         %95 = OpAccessChain %_ptr_Function_float %v1 %83
+               OpStore %95 %94
+               OpBranch %81
+         %81 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+         %96 = OpLoad %int %c
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %c %97
+               OpBranch %59
+         %60 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+         %98 = OpLoad %int %a
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %a %99
+               OpBranch %48
+         %49 = OpLabel
+        %100 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+        %101 = OpLoad %float %100
+        %102 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %103 = OpLoad %float %102
+        %104 = OpFOrdEqual %bool %101 %103
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %109
+        %111 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %112 = OpLoad %int %111
+        %113 = OpConvertSToF %float %112
+        %114 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %115 = OpLoad %int %114
+        %116 = OpConvertSToF %float %115
+        %117 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %118 = OpLoad %int %117
+        %119 = OpConvertSToF %float %118
+        %120 = OpCompositeConstruct %v4float %110 %113 %116 %119
+               OpStore %_GLF_color %120
+               OpBranch %105
+        %107 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %122 = OpLoad %int %121
+        %123 = OpConvertSToF %float %122
+        %124 = OpCompositeConstruct %v4float %123 %123 %123 %123
+               OpStore %_GLF_color %124
+               OpBranch %105
+        %105 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..5ae6c98
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,92 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+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() {
+  float4 v0 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int a = 0;
+  int c = 0;
+  const float x_41 = asfloat(x_6[1].x);
+  v0 = float4(x_41, x_41, x_41, x_41);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float4(x_44, x_44, x_44, x_44);
+  const int x_47 = asint(x_10[1].x);
+  a = x_47;
+  while (true) {
+    const int x_52 = a;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_52 < x_54)) {
+    } else {
+      break;
+    }
+    const int x_58 = asint(x_10[3].x);
+    c = x_58;
+    while (true) {
+      const int x_63 = c;
+      const int x_65 = asint(x_10[2].x);
+      if ((x_63 < x_65)) {
+      } else {
+        break;
+      }
+      const int x_69 = clamp(c, 0, 3);
+      const float x_71 = asfloat(x_6[1].x);
+      const float x_73 = v0[x_69];
+      set_float4(v0, x_69, (x_73 - x_71));
+      const int x_77 = asint(x_10[1].x);
+      const int x_79 = asint(x_10[3].x);
+      if ((x_77 == x_79)) {
+        const int x_83 = a;
+        const float x_85 = asfloat(x_6[1].x);
+        const float x_87 = asfloat(x_6[1].x);
+        const float x_89 = asfloat(x_6[1].x);
+        set_float4(v1, x_83, smoothstep(float4(x_85, x_87, x_89, 3.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), v0)[a]);
+      }
+      {
+        c = (c + 1);
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const float x_101 = v1.x;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_103 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_101 == x_103)) {
+    const int x_109 = asint(x_10[1].x);
+    const int x_112 = asint(x_10[3].x);
+    const int x_115 = asint(x_10[3].x);
+    const int x_118 = asint(x_10[1].x);
+    x_GLF_color = float4(float(x_109), float(x_112), float(x_115), float(x_118));
+  } else {
+    const int x_122 = asint(x_10[3].x);
+    const float x_123 = float(x_122);
+    x_GLF_color = float4(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ecc0d68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  float4 v0 = 0.0f;
+  float4 v1 = 0.0f;
+  int a = 0;
+  int c = 0;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  v0 = float4(x_41, x_41, x_41, x_41);
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float4(x_44, x_44, x_44, x_44);
+  int const x_47 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  a = x_47;
+  while (true) {
+    int const x_52 = a;
+    int const x_54 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_52 < x_54)) {
+    } else {
+      break;
+    }
+    int const x_58 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    c = x_58;
+    while (true) {
+      int const x_63 = c;
+      int const x_65 = x_10.x_GLF_uniform_int_values.arr[2].el;
+      if ((x_63 < x_65)) {
+      } else {
+        break;
+      }
+      int const x_68 = c;
+      int const x_69 = clamp(x_68, 0, 3);
+      float const x_71 = x_6.x_GLF_uniform_float_values.arr[1].el;
+      float const x_73 = v0[x_69];
+      v0[x_69] = (x_73 - x_71);
+      int const x_77 = x_10.x_GLF_uniform_int_values.arr[1].el;
+      int const x_79 = x_10.x_GLF_uniform_int_values.arr[3].el;
+      if ((x_77 == x_79)) {
+        int const x_83 = a;
+        float const x_85 = x_6.x_GLF_uniform_float_values.arr[1].el;
+        float const x_87 = x_6.x_GLF_uniform_float_values.arr[1].el;
+        float const x_89 = x_6.x_GLF_uniform_float_values.arr[1].el;
+        float4 const x_91 = v0;
+        int const x_93 = a;
+        v1[x_83] = smoothstep(float4(x_85, x_87, x_89, 3.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), x_91)[x_93];
+      }
+      {
+        int const x_96 = c;
+        c = (x_96 + 1);
+      }
+    }
+    {
+      int const x_98 = a;
+      a = (x_98 + 1);
+    }
+  }
+  float const x_101 = v1.x;
+  float const x_103 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_101 == x_103)) {
+    int const x_109 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_112 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_115 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_118 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_109), float(x_112), float(x_115), float(x_118));
+  } else {
+    int const x_122 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_123 = float(x_122);
+    *(tint_symbol_4) = float4(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..59b8fdd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,227 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 145
+; Schema: 0
+               OpCapability Shader
+         %73 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %a "a"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_3 = OpConstant %float 3
+    %float_1 = OpConstant %float 1
+        %102 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %133 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v4float Function %17
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+          %a = OpVariable %_ptr_Function_int Function %29
+          %c = OpVariable %_ptr_Function_int Function %29
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %35 = OpLoad %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+               OpStore %v0 %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpCompositeConstruct %v4float %39 %39 %39 %39
+               OpStore %v1 %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %43 = OpLoad %int %42
+               OpStore %a %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %a
+         %49 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpSLessThan %bool %48 %50
+               OpSelectionMerge %53 None
+               OpBranchConditional %51 %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %45
+         %53 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %58 = OpLoad %int %57
+               OpStore %c %58
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %c
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpSLessThan %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %60
+         %68 = OpLabel
+         %71 = OpLoad %int %c
+         %72 = OpExtInst %int %73 SClamp %71 %int_0 %int_3
+         %74 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %75 = OpLoad %float %74
+         %77 = OpAccessChain %_ptr_Function_float %v0 %72
+         %78 = OpLoad %float %77
+         %79 = OpAccessChain %_ptr_Function_float %v0 %72
+         %80 = OpFSub %float %78 %75
+               OpStore %79 %80
+         %81 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %84 = OpLoad %int %83
+         %85 = OpIEqual %bool %82 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpLoad %int %a
+         %89 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %92 = OpLoad %float %91
+         %93 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %94 = OpLoad %float %93
+         %95 = OpLoad %v4float %v0
+         %96 = OpLoad %int %a
+         %97 = OpAccessChain %_ptr_Function_float %v1 %88
+        %100 = OpCompositeConstruct %v4float %90 %92 %94 %float_3
+         %98 = OpExtInst %v4float %73 SmoothStep %100 %102 %95
+        %103 = OpVectorExtractDynamic %float %98 %96
+               OpStore %97 %103
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+        %104 = OpLoad %int %c
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %c %105
+               OpBranch %59
+         %60 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+        %106 = OpLoad %int %a
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %a %107
+               OpBranch %44
+         %45 = OpLabel
+        %108 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+        %109 = OpLoad %float %108
+        %110 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %111 = OpLoad %float %110
+        %112 = OpFOrdEqual %bool %109 %111
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %115
+        %114 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %117 = OpLoad %int %116
+        %118 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %119 = OpLoad %int %118
+        %120 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %123 = OpLoad %int %122
+        %124 = OpConvertSToF %float %117
+        %125 = OpConvertSToF %float %119
+        %126 = OpConvertSToF %float %121
+        %127 = OpConvertSToF %float %123
+        %128 = OpCompositeConstruct %v4float %124 %125 %126 %127
+               OpStore %x_GLF_color %128
+               OpBranch %113
+        %115 = OpLabel
+        %129 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %130
+        %132 = OpCompositeConstruct %v4float %131 %131 %131 %131
+               OpStore %x_GLF_color %132
+               OpBranch %113
+        %113 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %133
+%tint_symbol = OpFunctionParameter %main_out
+        %137 = OpLabel
+        %138 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %138
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %140 = OpLabel
+        %141 = OpFunctionCall %void %main_1
+        %143 = OpLoad %v4float %x_GLF_color
+        %144 = OpCompositeConstruct %main_out %143
+        %142 = OpFunctionCall %void %tint_symbol_2 %144
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e3aa195
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,101 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v0 : vec4<f32>;
+  var v1 : vec4<f32>;
+  var a : i32;
+  var c : i32;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[1];
+  v0 = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec4<f32>(x_44, x_44, x_44, x_44);
+  let x_47 : i32 = x_10.x_GLF_uniform_int_values[1];
+  a = x_47;
+  loop {
+    let x_52 : i32 = a;
+    let x_54 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_52 < x_54)) {
+    } else {
+      break;
+    }
+    let x_58 : i32 = x_10.x_GLF_uniform_int_values[3];
+    c = x_58;
+    loop {
+      let x_63 : i32 = c;
+      let x_65 : i32 = x_10.x_GLF_uniform_int_values[2];
+      if ((x_63 < x_65)) {
+      } else {
+        break;
+      }
+      let x_68 : i32 = c;
+      let x_69 : i32 = clamp(x_68, 0, 3);
+      let x_71 : f32 = x_6.x_GLF_uniform_float_values[1];
+      let x_73 : f32 = v0[x_69];
+      v0[x_69] = (x_73 - x_71);
+      let x_77 : i32 = x_10.x_GLF_uniform_int_values[1];
+      let x_79 : i32 = x_10.x_GLF_uniform_int_values[3];
+      if ((x_77 == x_79)) {
+        let x_83 : i32 = a;
+        let x_85 : f32 = x_6.x_GLF_uniform_float_values[1];
+        let x_87 : f32 = x_6.x_GLF_uniform_float_values[1];
+        let x_89 : f32 = x_6.x_GLF_uniform_float_values[1];
+        let x_91 : vec4<f32> = v0;
+        let x_93 : i32 = a;
+        v1[x_83] = smoothStep(vec4<f32>(x_85, x_87, x_89, 3.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), x_91)[x_93];
+      }
+
+      continuing {
+        let x_96 : i32 = c;
+        c = (x_96 + 1);
+      }
+    }
+
+    continuing {
+      let x_98 : i32 = a;
+      a = (x_98 + 1);
+    }
+  }
+  let x_101 : f32 = v1.x;
+  let x_103 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_101 == x_103)) {
+    let x_109 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_112 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_115 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_118 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_109), f32(x_112), f32(x_115), f32(x_118));
+  } else {
+    let x_122 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_123 : f32 = f32(x_122);
+    x_GLF_color = vec4<f32>(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
new file mode 100644
index 0000000..e3aa195
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
@@ -0,0 +1,101 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v0 : vec4<f32>;
+  var v1 : vec4<f32>;
+  var a : i32;
+  var c : i32;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[1];
+  v0 = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec4<f32>(x_44, x_44, x_44, x_44);
+  let x_47 : i32 = x_10.x_GLF_uniform_int_values[1];
+  a = x_47;
+  loop {
+    let x_52 : i32 = a;
+    let x_54 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_52 < x_54)) {
+    } else {
+      break;
+    }
+    let x_58 : i32 = x_10.x_GLF_uniform_int_values[3];
+    c = x_58;
+    loop {
+      let x_63 : i32 = c;
+      let x_65 : i32 = x_10.x_GLF_uniform_int_values[2];
+      if ((x_63 < x_65)) {
+      } else {
+        break;
+      }
+      let x_68 : i32 = c;
+      let x_69 : i32 = clamp(x_68, 0, 3);
+      let x_71 : f32 = x_6.x_GLF_uniform_float_values[1];
+      let x_73 : f32 = v0[x_69];
+      v0[x_69] = (x_73 - x_71);
+      let x_77 : i32 = x_10.x_GLF_uniform_int_values[1];
+      let x_79 : i32 = x_10.x_GLF_uniform_int_values[3];
+      if ((x_77 == x_79)) {
+        let x_83 : i32 = a;
+        let x_85 : f32 = x_6.x_GLF_uniform_float_values[1];
+        let x_87 : f32 = x_6.x_GLF_uniform_float_values[1];
+        let x_89 : f32 = x_6.x_GLF_uniform_float_values[1];
+        let x_91 : vec4<f32> = v0;
+        let x_93 : i32 = a;
+        v1[x_83] = smoothStep(vec4<f32>(x_85, x_87, x_89, 3.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), x_91)[x_93];
+      }
+
+      continuing {
+        let x_96 : i32 = c;
+        c = (x_96 + 1);
+      }
+    }
+
+    continuing {
+      let x_98 : i32 = a;
+      a = (x_98 + 1);
+    }
+  }
+  let x_101 : f32 = v1.x;
+  let x_103 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_101 == x_103)) {
+    let x_109 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_112 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_115 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_118 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_109), f32(x_112), f32(x_115), f32(x_118));
+  } else {
+    let x_122 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_123 : f32 = f32(x_122);
+    x_GLF_color = vec4<f32>(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..5ae6c98
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,92 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+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() {
+  float4 v0 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int a = 0;
+  int c = 0;
+  const float x_41 = asfloat(x_6[1].x);
+  v0 = float4(x_41, x_41, x_41, x_41);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float4(x_44, x_44, x_44, x_44);
+  const int x_47 = asint(x_10[1].x);
+  a = x_47;
+  while (true) {
+    const int x_52 = a;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_54 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_52 < x_54)) {
+    } else {
+      break;
+    }
+    const int x_58 = asint(x_10[3].x);
+    c = x_58;
+    while (true) {
+      const int x_63 = c;
+      const int x_65 = asint(x_10[2].x);
+      if ((x_63 < x_65)) {
+      } else {
+        break;
+      }
+      const int x_69 = clamp(c, 0, 3);
+      const float x_71 = asfloat(x_6[1].x);
+      const float x_73 = v0[x_69];
+      set_float4(v0, x_69, (x_73 - x_71));
+      const int x_77 = asint(x_10[1].x);
+      const int x_79 = asint(x_10[3].x);
+      if ((x_77 == x_79)) {
+        const int x_83 = a;
+        const float x_85 = asfloat(x_6[1].x);
+        const float x_87 = asfloat(x_6[1].x);
+        const float x_89 = asfloat(x_6[1].x);
+        set_float4(v1, x_83, smoothstep(float4(x_85, x_87, x_89, 3.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), v0)[a]);
+      }
+      {
+        c = (c + 1);
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const float x_101 = v1.x;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_103 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_101 == x_103)) {
+    const int x_109 = asint(x_10[1].x);
+    const int x_112 = asint(x_10[3].x);
+    const int x_115 = asint(x_10[3].x);
+    const int x_118 = asint(x_10[1].x);
+    x_GLF_color = float4(float(x_109), float(x_112), float(x_115), float(x_118));
+  } else {
+    const int x_122 = asint(x_10[3].x);
+    const float x_123 = float(x_122);
+    x_GLF_color = float4(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ecc0d68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  float4 v0 = 0.0f;
+  float4 v1 = 0.0f;
+  int a = 0;
+  int c = 0;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  v0 = float4(x_41, x_41, x_41, x_41);
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float4(x_44, x_44, x_44, x_44);
+  int const x_47 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  a = x_47;
+  while (true) {
+    int const x_52 = a;
+    int const x_54 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_52 < x_54)) {
+    } else {
+      break;
+    }
+    int const x_58 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    c = x_58;
+    while (true) {
+      int const x_63 = c;
+      int const x_65 = x_10.x_GLF_uniform_int_values.arr[2].el;
+      if ((x_63 < x_65)) {
+      } else {
+        break;
+      }
+      int const x_68 = c;
+      int const x_69 = clamp(x_68, 0, 3);
+      float const x_71 = x_6.x_GLF_uniform_float_values.arr[1].el;
+      float const x_73 = v0[x_69];
+      v0[x_69] = (x_73 - x_71);
+      int const x_77 = x_10.x_GLF_uniform_int_values.arr[1].el;
+      int const x_79 = x_10.x_GLF_uniform_int_values.arr[3].el;
+      if ((x_77 == x_79)) {
+        int const x_83 = a;
+        float const x_85 = x_6.x_GLF_uniform_float_values.arr[1].el;
+        float const x_87 = x_6.x_GLF_uniform_float_values.arr[1].el;
+        float const x_89 = x_6.x_GLF_uniform_float_values.arr[1].el;
+        float4 const x_91 = v0;
+        int const x_93 = a;
+        v1[x_83] = smoothstep(float4(x_85, x_87, x_89, 3.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), x_91)[x_93];
+      }
+      {
+        int const x_96 = c;
+        c = (x_96 + 1);
+      }
+    }
+    {
+      int const x_98 = a;
+      a = (x_98 + 1);
+    }
+  }
+  float const x_101 = v1.x;
+  float const x_103 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_101 == x_103)) {
+    int const x_109 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_112 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_115 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_118 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_109), float(x_112), float(x_115), float(x_118));
+  } else {
+    int const x_122 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_123 = float(x_122);
+    *(tint_symbol_4) = float4(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..59b8fdd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,227 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 145
+; Schema: 0
+               OpCapability Shader
+         %73 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v0 "v0"
+               OpName %v1 "v1"
+               OpName %a "a"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_3 = OpConstant %float 3
+    %float_1 = OpConstant %float 1
+        %102 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %133 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %v0 = OpVariable %_ptr_Function_v4float Function %17
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+          %a = OpVariable %_ptr_Function_int Function %29
+          %c = OpVariable %_ptr_Function_int Function %29
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %35 = OpLoad %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+               OpStore %v0 %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpCompositeConstruct %v4float %39 %39 %39 %39
+               OpStore %v1 %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %43 = OpLoad %int %42
+               OpStore %a %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %a
+         %49 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpSLessThan %bool %48 %50
+               OpSelectionMerge %53 None
+               OpBranchConditional %51 %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %45
+         %53 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %58 = OpLoad %int %57
+               OpStore %c %58
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %c
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpSLessThan %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %60
+         %68 = OpLabel
+         %71 = OpLoad %int %c
+         %72 = OpExtInst %int %73 SClamp %71 %int_0 %int_3
+         %74 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %75 = OpLoad %float %74
+         %77 = OpAccessChain %_ptr_Function_float %v0 %72
+         %78 = OpLoad %float %77
+         %79 = OpAccessChain %_ptr_Function_float %v0 %72
+         %80 = OpFSub %float %78 %75
+               OpStore %79 %80
+         %81 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+         %84 = OpLoad %int %83
+         %85 = OpIEqual %bool %82 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpLoad %int %a
+         %89 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %92 = OpLoad %float %91
+         %93 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %94 = OpLoad %float %93
+         %95 = OpLoad %v4float %v0
+         %96 = OpLoad %int %a
+         %97 = OpAccessChain %_ptr_Function_float %v1 %88
+        %100 = OpCompositeConstruct %v4float %90 %92 %94 %float_3
+         %98 = OpExtInst %v4float %73 SmoothStep %100 %102 %95
+        %103 = OpVectorExtractDynamic %float %98 %96
+               OpStore %97 %103
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+        %104 = OpLoad %int %c
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %c %105
+               OpBranch %59
+         %60 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+        %106 = OpLoad %int %a
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %a %107
+               OpBranch %44
+         %45 = OpLabel
+        %108 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+        %109 = OpLoad %float %108
+        %110 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %111 = OpLoad %float %110
+        %112 = OpFOrdEqual %bool %109 %111
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %115
+        %114 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %117 = OpLoad %int %116
+        %118 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %119 = OpLoad %int %118
+        %120 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %123 = OpLoad %int %122
+        %124 = OpConvertSToF %float %117
+        %125 = OpConvertSToF %float %119
+        %126 = OpConvertSToF %float %121
+        %127 = OpConvertSToF %float %123
+        %128 = OpCompositeConstruct %v4float %124 %125 %126 %127
+               OpStore %x_GLF_color %128
+               OpBranch %113
+        %115 = OpLabel
+        %129 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %130
+        %132 = OpCompositeConstruct %v4float %131 %131 %131 %131
+               OpStore %x_GLF_color %132
+               OpBranch %113
+        %113 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %133
+%tint_symbol = OpFunctionParameter %main_out
+        %137 = OpLabel
+        %138 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %138
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %140 = OpLabel
+        %141 = OpFunctionCall %void %main_1
+        %143 = OpLoad %v4float %x_GLF_color
+        %144 = OpCompositeConstruct %main_out %143
+        %142 = OpFunctionCall %void %tint_symbol_2 %144
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e3aa195
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,101 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v0 : vec4<f32>;
+  var v1 : vec4<f32>;
+  var a : i32;
+  var c : i32;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[1];
+  v0 = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec4<f32>(x_44, x_44, x_44, x_44);
+  let x_47 : i32 = x_10.x_GLF_uniform_int_values[1];
+  a = x_47;
+  loop {
+    let x_52 : i32 = a;
+    let x_54 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_52 < x_54)) {
+    } else {
+      break;
+    }
+    let x_58 : i32 = x_10.x_GLF_uniform_int_values[3];
+    c = x_58;
+    loop {
+      let x_63 : i32 = c;
+      let x_65 : i32 = x_10.x_GLF_uniform_int_values[2];
+      if ((x_63 < x_65)) {
+      } else {
+        break;
+      }
+      let x_68 : i32 = c;
+      let x_69 : i32 = clamp(x_68, 0, 3);
+      let x_71 : f32 = x_6.x_GLF_uniform_float_values[1];
+      let x_73 : f32 = v0[x_69];
+      v0[x_69] = (x_73 - x_71);
+      let x_77 : i32 = x_10.x_GLF_uniform_int_values[1];
+      let x_79 : i32 = x_10.x_GLF_uniform_int_values[3];
+      if ((x_77 == x_79)) {
+        let x_83 : i32 = a;
+        let x_85 : f32 = x_6.x_GLF_uniform_float_values[1];
+        let x_87 : f32 = x_6.x_GLF_uniform_float_values[1];
+        let x_89 : f32 = x_6.x_GLF_uniform_float_values[1];
+        let x_91 : vec4<f32> = v0;
+        let x_93 : i32 = a;
+        v1[x_83] = smoothStep(vec4<f32>(x_85, x_87, x_89, 3.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), x_91)[x_93];
+      }
+
+      continuing {
+        let x_96 : i32 = c;
+        c = (x_96 + 1);
+      }
+    }
+
+    continuing {
+      let x_98 : i32 = a;
+      a = (x_98 + 1);
+    }
+  }
+  let x_101 : f32 = v1.x;
+  let x_103 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_101 == x_103)) {
+    let x_109 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_112 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_115 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_118 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_109), f32(x_112), f32(x_115), f32(x_118));
+  } else {
+    let x_122 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_123 : f32 = f32(x_122);
+    x_GLF_color = vec4<f32>(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm
new file mode 100644
index 0000000..99a2d49
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm
@@ -0,0 +1,496 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_global_loop_count "_GLF_global_loop_count"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %i_0 "i"
+               OpName %i_1 "i"
+               OpName %i_2 "i"
+               OpName %i_3 "i"
+               OpName %i_4 "i"
+               OpName %i_5 "i"
+               OpName %i_6 "i"
+               OpName %i_7 "i"
+               OpName %i_8 "i"
+               OpName %i_9 "i"
+               OpName %i_10 "i"
+               OpName %i_11 "i"
+               OpName %i_12 "i"
+               OpName %i_13 "i"
+               OpName %sum "sum"
+               OpName %r "r"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+%_GLF_global_loop_count = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+    %int_100 = OpConstant %int 100
+      %int_3 = OpConstant %int 3
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %30
+         %51 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %i_3 = OpVariable %_ptr_Function_int Function
+        %i_4 = OpVariable %_ptr_Function_int Function
+        %i_5 = OpVariable %_ptr_Function_int Function
+        %i_6 = OpVariable %_ptr_Function_int Function
+        %i_7 = OpVariable %_ptr_Function_int Function
+        %i_8 = OpVariable %_ptr_Function_int Function
+        %i_9 = OpVariable %_ptr_Function_int Function
+       %i_10 = OpVariable %_ptr_Function_int Function
+       %i_11 = OpVariable %_ptr_Function_int Function
+       %i_12 = OpVariable %_ptr_Function_int Function
+       %i_13 = OpVariable %_ptr_Function_int Function
+        %sum = OpVariable %_ptr_Function_float Function
+          %r = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_global_loop_count %int_0
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %53 = OpLoad %float %52
+               OpStore %f %53
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %55 = OpLoad %int %54
+               OpStore %i %55
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpLoad %int %i
+         %61 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpSLessThan %bool %60 %62
+               OpBranchConditional %63 %64 %57
+         %64 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %66 = OpLoad %int %65
+               OpStore %i_0 %66
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i_0
+         %72 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpSLessThan %bool %71 %73
+               OpBranchConditional %74 %75 %68
+         %75 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %77 = OpLoad %int %76
+               OpStore %i_1 %77
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %82 = OpLoad %int %i_1
+         %83 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %84 = OpLoad %int %83
+         %85 = OpSLessThan %bool %82 %84
+               OpBranchConditional %85 %86 %79
+         %86 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %88 = OpLoad %int %87
+               OpStore %i_2 %88
+               OpBranch %89
+         %89 = OpLabel
+               OpLoopMerge %90 %91 None
+               OpBranch %92
+         %92 = OpLabel
+         %93 = OpLoad %int %i_2
+         %94 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %95 = OpLoad %int %94
+         %96 = OpSLessThan %bool %93 %95
+               OpBranchConditional %96 %97 %90
+         %97 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %99 = OpLoad %int %98
+               OpStore %i_3 %99
+               OpBranch %100
+        %100 = OpLabel
+               OpLoopMerge %101 %102 None
+               OpBranch %103
+        %103 = OpLabel
+        %104 = OpLoad %int %i_3
+        %105 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %106 = OpLoad %int %105
+        %107 = OpSLessThan %bool %104 %106
+               OpBranchConditional %107 %108 %101
+        %108 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %110 = OpLoad %int %109
+               OpStore %i_4 %110
+               OpBranch %111
+        %111 = OpLabel
+               OpLoopMerge %112 %113 None
+               OpBranch %114
+        %114 = OpLabel
+        %115 = OpLoad %int %i_4
+        %116 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %117 = OpLoad %int %116
+        %118 = OpSLessThan %bool %115 %117
+               OpBranchConditional %118 %119 %112
+        %119 = OpLabel
+        %120 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %121 = OpLoad %int %120
+               OpStore %i_5 %121
+               OpBranch %122
+        %122 = OpLabel
+               OpLoopMerge %123 %124 None
+               OpBranch %125
+        %125 = OpLabel
+        %126 = OpLoad %int %i_5
+        %127 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %128 = OpLoad %int %127
+        %129 = OpSLessThan %bool %126 %128
+               OpBranchConditional %129 %130 %123
+        %130 = OpLabel
+        %131 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %132 = OpLoad %int %131
+               OpStore %i_6 %132
+               OpBranch %133
+        %133 = OpLabel
+               OpLoopMerge %134 %135 None
+               OpBranch %136
+        %136 = OpLabel
+        %137 = OpLoad %int %i_6
+        %138 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %139 = OpLoad %int %138
+        %140 = OpSLessThan %bool %137 %139
+               OpBranchConditional %140 %141 %134
+        %141 = OpLabel
+        %142 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %143 = OpLoad %int %142
+               OpStore %i_7 %143
+               OpBranch %144
+        %144 = OpLabel
+               OpLoopMerge %145 %146 None
+               OpBranch %147
+        %147 = OpLabel
+        %148 = OpLoad %int %i_7
+        %149 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %150 = OpLoad %int %149
+        %151 = OpSLessThan %bool %148 %150
+               OpBranchConditional %151 %152 %145
+        %152 = OpLabel
+        %153 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %154 = OpLoad %int %153
+               OpStore %i_8 %154
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+        %159 = OpLoad %int %i_8
+        %160 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %161 = OpLoad %int %160
+        %162 = OpSLessThan %bool %159 %161
+               OpBranchConditional %162 %163 %156
+        %163 = OpLabel
+        %164 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %165 = OpLoad %int %164
+               OpStore %i_9 %165
+               OpBranch %166
+        %166 = OpLabel
+               OpLoopMerge %167 %168 None
+               OpBranch %169
+        %169 = OpLabel
+        %170 = OpLoad %int %i_9
+        %171 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %172 = OpLoad %int %171
+        %173 = OpSLessThan %bool %170 %172
+               OpBranchConditional %173 %174 %167
+        %174 = OpLabel
+        %175 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %176 = OpLoad %int %175
+               OpStore %i_10 %176
+               OpBranch %177
+        %177 = OpLabel
+               OpLoopMerge %178 %179 None
+               OpBranch %180
+        %180 = OpLabel
+        %181 = OpLoad %int %i_10
+        %182 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %183 = OpLoad %int %182
+        %184 = OpSLessThan %bool %181 %183
+               OpBranchConditional %184 %185 %178
+        %185 = OpLabel
+        %186 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %187 = OpLoad %int %186
+               OpStore %i_11 %187
+               OpBranch %188
+        %188 = OpLabel
+               OpLoopMerge %189 %190 None
+               OpBranch %191
+        %191 = OpLabel
+        %192 = OpLoad %int %i_11
+        %193 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %194 = OpLoad %int %193
+        %195 = OpSLessThan %bool %192 %194
+               OpBranchConditional %195 %196 %189
+        %196 = OpLabel
+        %197 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %198 = OpLoad %int %197
+               OpStore %i_12 %198
+               OpBranch %199
+        %199 = OpLabel
+               OpLoopMerge %200 %201 None
+               OpBranch %202
+        %202 = OpLabel
+        %203 = OpLoad %int %i_12
+        %204 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %205 = OpLoad %int %204
+        %206 = OpSLessThan %bool %203 %205
+               OpBranchConditional %206 %207 %200
+        %207 = OpLabel
+        %208 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %209 = OpLoad %int %208
+               OpStore %i_13 %209
+               OpBranch %210
+        %210 = OpLabel
+               OpLoopMerge %211 %212 None
+               OpBranch %213
+        %213 = OpLabel
+        %214 = OpLoad %int %i_13
+        %215 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %216 = OpLoad %int %215
+        %217 = OpSLessThan %bool %214 %216
+               OpBranchConditional %217 %218 %211
+        %218 = OpLabel
+               OpBranch %219
+        %219 = OpLabel
+               OpLoopMerge %220 %221 None
+               OpBranch %222
+        %222 = OpLabel
+        %223 = OpLoad %int %_GLF_global_loop_count
+        %224 = OpIAdd %int %223 %int_1
+               OpStore %_GLF_global_loop_count %224
+               OpBranch %221
+        %221 = OpLabel
+        %225 = OpLoad %int %_GLF_global_loop_count
+        %226 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %227 = OpLoad %int %226
+        %228 = OpISub %int %int_100 %227
+        %229 = OpSLessThan %bool %225 %228
+               OpBranchConditional %229 %219 %220
+        %220 = OpLabel
+        %230 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %231 = OpLoad %float %230
+        %232 = OpLoad %float %f
+        %233 = OpFAdd %float %232 %231
+               OpStore %f %233
+               OpBranch %212
+        %212 = OpLabel
+        %234 = OpLoad %int %i_13
+        %235 = OpIAdd %int %234 %int_1
+               OpStore %i_13 %235
+               OpBranch %210
+        %211 = OpLabel
+               OpBranch %201
+        %201 = OpLabel
+        %236 = OpLoad %int %i_12
+        %237 = OpIAdd %int %236 %int_1
+               OpStore %i_12 %237
+               OpBranch %199
+        %200 = OpLabel
+               OpBranch %190
+        %190 = OpLabel
+        %238 = OpLoad %int %i_11
+        %239 = OpIAdd %int %238 %int_1
+               OpStore %i_11 %239
+               OpBranch %188
+        %189 = OpLabel
+               OpBranch %179
+        %179 = OpLabel
+        %240 = OpLoad %int %i_10
+        %241 = OpIAdd %int %240 %int_1
+               OpStore %i_10 %241
+               OpBranch %177
+        %178 = OpLabel
+               OpBranch %168
+        %168 = OpLabel
+        %242 = OpLoad %int %i_9
+        %243 = OpIAdd %int %242 %int_1
+               OpStore %i_9 %243
+               OpBranch %166
+        %167 = OpLabel
+               OpBranch %157
+        %157 = OpLabel
+        %244 = OpLoad %int %i_8
+        %245 = OpIAdd %int %244 %int_1
+               OpStore %i_8 %245
+               OpBranch %155
+        %156 = OpLabel
+               OpBranch %146
+        %146 = OpLabel
+        %246 = OpLoad %int %i_7
+        %247 = OpIAdd %int %246 %int_1
+               OpStore %i_7 %247
+               OpBranch %144
+        %145 = OpLabel
+               OpBranch %135
+        %135 = OpLabel
+        %248 = OpLoad %int %i_6
+        %249 = OpIAdd %int %248 %int_1
+               OpStore %i_6 %249
+               OpBranch %133
+        %134 = OpLabel
+               OpBranch %124
+        %124 = OpLabel
+        %250 = OpLoad %int %i_5
+        %251 = OpIAdd %int %250 %int_1
+               OpStore %i_5 %251
+               OpBranch %122
+        %123 = OpLabel
+               OpBranch %113
+        %113 = OpLabel
+        %252 = OpLoad %int %i_4
+        %253 = OpIAdd %int %252 %int_1
+               OpStore %i_4 %253
+               OpBranch %111
+        %112 = OpLabel
+               OpBranch %102
+        %102 = OpLabel
+        %254 = OpLoad %int %i_3
+        %255 = OpIAdd %int %254 %int_1
+               OpStore %i_3 %255
+               OpBranch %100
+        %101 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+        %256 = OpLoad %int %i_2
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %i_2 %257
+               OpBranch %89
+         %90 = OpLabel
+               OpBranch %80
+         %80 = OpLabel
+        %258 = OpLoad %int %i_1
+        %259 = OpIAdd %int %258 %int_1
+               OpStore %i_1 %259
+               OpBranch %78
+         %79 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+        %260 = OpLoad %int %i_0
+        %261 = OpIAdd %int %260 %int_1
+               OpStore %i_0 %261
+               OpBranch %67
+         %68 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+        %262 = OpLoad %int %i
+        %263 = OpIAdd %int %262 %int_1
+               OpStore %i %263
+               OpBranch %56
+         %57 = OpLabel
+        %264 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %265 = OpLoad %float %264
+               OpStore %sum %265
+        %266 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %267 = OpLoad %int %266
+               OpStore %r %267
+               OpBranch %268
+        %268 = OpLabel
+               OpLoopMerge %269 %270 None
+               OpBranch %271
+        %271 = OpLabel
+        %272 = OpLoad %int %_GLF_global_loop_count
+        %273 = OpSLessThan %bool %272 %int_100
+               OpBranchConditional %273 %274 %269
+        %274 = OpLabel
+        %275 = OpLoad %int %_GLF_global_loop_count
+        %276 = OpIAdd %int %275 %int_1
+               OpStore %_GLF_global_loop_count %276
+        %277 = OpLoad %float %f
+        %278 = OpLoad %float %sum
+        %279 = OpFAdd %float %278 %277
+               OpStore %sum %279
+               OpBranch %270
+        %270 = OpLabel
+        %280 = OpLoad %int %r
+        %281 = OpIAdd %int %280 %int_1
+               OpStore %r %281
+               OpBranch %268
+        %269 = OpLabel
+        %282 = OpLoad %float %sum
+        %283 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+        %284 = OpLoad %float %283
+        %285 = OpFOrdEqual %bool %282 %284
+               OpSelectionMerge %286 None
+               OpBranchConditional %285 %287 %288
+        %287 = OpLabel
+        %289 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %290 = OpLoad %int %289
+        %291 = OpConvertSToF %float %290
+        %292 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %293 = OpLoad %int %292
+        %294 = OpConvertSToF %float %293
+        %295 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %296 = OpLoad %int %295
+        %297 = OpConvertSToF %float %296
+        %298 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %299 = OpLoad %int %298
+        %300 = OpConvertSToF %float %299
+        %301 = OpCompositeConstruct %v4float %291 %294 %297 %300
+               OpStore %_GLF_color %301
+               OpBranch %286
+        %288 = OpLabel
+        %302 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %303 = OpLoad %int %302
+        %304 = OpConvertSToF %float %303
+        %305 = OpCompositeConstruct %v4float %304 %304 %304 %304
+               OpStore %_GLF_color %305
+               OpBranch %286
+        %286 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..fb22331
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,294 @@
+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;
+  while (true) {
+    const int x_60 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 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;
+    while (true) {
+      const int x_71 = i_1;
+      const uint scalar_offset_1 = ((16u * uint(0))) / 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;
+      while (true) {
+        const int x_82 = i_2;
+        const uint scalar_offset_2 = ((16u * uint(0))) / 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;
+        while (true) {
+          const int x_93 = i_3;
+          const uint scalar_offset_3 = ((16u * uint(0))) / 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;
+          while (true) {
+            const int x_104 = i_4;
+            const uint scalar_offset_4 = ((16u * uint(0))) / 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;
+            while (true) {
+              const int x_115 = i_5;
+              const uint scalar_offset_5 = ((16u * uint(0))) / 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;
+              while (true) {
+                const int x_126 = i_6;
+                const uint scalar_offset_6 = ((16u * uint(0))) / 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;
+                while (true) {
+                  const int x_137 = i_7;
+                  const uint scalar_offset_7 = ((16u * uint(0))) / 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;
+                  while (true) {
+                    const int x_148 = i_8;
+                    const uint scalar_offset_8 = ((16u * uint(0))) / 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;
+                    while (true) {
+                      const int x_159 = i_9;
+                      const uint scalar_offset_9 = ((16u * uint(0))) / 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;
+                      while (true) {
+                        const int x_170 = i_10;
+                        const uint scalar_offset_10 = ((16u * uint(0))) / 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;
+                        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;
+                          while (true) {
+                            const int x_192 = i_12;
+                            const uint scalar_offset_11 = ((16u * uint(0))) / 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;
+                            while (true) {
+                              const int x_203 = i_13;
+                              const uint scalar_offset_12 = ((16u * uint(0))) / 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;
+                              while (true) {
+                                const int x_214 = i_14;
+                                const int x_216 = asint(x_10[2].x);
+                                if ((x_214 < x_216)) {
+                                } else {
+                                  break;
+                                }
+                                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 * uint(0))) / 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;
+  {
+    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 * uint(0))) / 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 * uint(0))) / 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;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a589c96
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.msl
@@ -0,0 +1,322 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_10, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  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;
+  *(tint_symbol_4) = 0;
+  float const x_53 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  f = x_53;
+  int const x_55 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  i = x_55;
+  while (true) {
+    int const x_60 = i;
+    int const x_62 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    int const x_66 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    i_1 = x_66;
+    while (true) {
+      int const x_71 = i_1;
+      int const x_73 = x_10.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_71 < x_73)) {
+      } else {
+        break;
+      }
+      int const x_77 = x_10.x_GLF_uniform_int_values.arr[1].el;
+      i_2 = x_77;
+      while (true) {
+        int const x_82 = i_2;
+        int const x_84 = x_10.x_GLF_uniform_int_values.arr[0].el;
+        if ((x_82 < x_84)) {
+        } else {
+          break;
+        }
+        int const x_88 = x_10.x_GLF_uniform_int_values.arr[1].el;
+        i_3 = x_88;
+        while (true) {
+          int const x_93 = i_3;
+          int const x_95 = x_10.x_GLF_uniform_int_values.arr[0].el;
+          if ((x_93 < x_95)) {
+          } else {
+            break;
+          }
+          int const x_99 = x_10.x_GLF_uniform_int_values.arr[1].el;
+          i_4 = x_99;
+          while (true) {
+            int const x_104 = i_4;
+            int const x_106 = x_10.x_GLF_uniform_int_values.arr[0].el;
+            if ((x_104 < x_106)) {
+            } else {
+              break;
+            }
+            int const x_110 = x_10.x_GLF_uniform_int_values.arr[1].el;
+            i_5 = x_110;
+            while (true) {
+              int const x_115 = i_5;
+              int const x_117 = x_10.x_GLF_uniform_int_values.arr[0].el;
+              if ((x_115 < x_117)) {
+              } else {
+                break;
+              }
+              int const x_121 = x_10.x_GLF_uniform_int_values.arr[1].el;
+              i_6 = x_121;
+              while (true) {
+                int const x_126 = i_6;
+                int const x_128 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                if ((x_126 < x_128)) {
+                } else {
+                  break;
+                }
+                int const x_132 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                i_7 = x_132;
+                while (true) {
+                  int const x_137 = i_7;
+                  int const x_139 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                  if ((x_137 < x_139)) {
+                  } else {
+                    break;
+                  }
+                  int const x_143 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                  i_8 = x_143;
+                  while (true) {
+                    int const x_148 = i_8;
+                    int const x_150 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                    if ((x_148 < x_150)) {
+                    } else {
+                      break;
+                    }
+                    int const x_154 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                    i_9 = x_154;
+                    while (true) {
+                      int const x_159 = i_9;
+                      int const x_161 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                      if ((x_159 < x_161)) {
+                      } else {
+                        break;
+                      }
+                      int const x_165 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                      i_10 = x_165;
+                      while (true) {
+                        int const x_170 = i_10;
+                        int const x_172 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                        if ((x_170 < x_172)) {
+                        } else {
+                          break;
+                        }
+                        int const x_176 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                        i_11 = x_176;
+                        while (true) {
+                          int const x_181 = i_11;
+                          int const x_183 = x_10.x_GLF_uniform_int_values.arr[2].el;
+                          if ((x_181 < x_183)) {
+                          } else {
+                            break;
+                          }
+                          int const x_187 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                          i_12 = x_187;
+                          while (true) {
+                            int const x_192 = i_12;
+                            int const x_194 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                            if ((x_192 < x_194)) {
+                            } else {
+                              break;
+                            }
+                            int const x_198 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                            i_13 = x_198;
+                            while (true) {
+                              int const x_203 = i_13;
+                              int const x_205 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                              if ((x_203 < x_205)) {
+                              } else {
+                                break;
+                              }
+                              int const x_209 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                              i_14 = x_209;
+                              while (true) {
+                                int const x_214 = i_14;
+                                int const x_216 = x_10.x_GLF_uniform_int_values.arr[2].el;
+                                if ((x_214 < x_216)) {
+                                } else {
+                                  break;
+                                }
+                                while (true) {
+                                  int const x_223 = *(tint_symbol_4);
+                                  *(tint_symbol_4) = (x_223 + 1);
+                                  {
+                                    int const x_225 = *(tint_symbol_4);
+                                    int const x_227 = x_10.x_GLF_uniform_int_values.arr[3].el;
+                                    if ((x_225 < (100 - x_227))) {
+                                    } else {
+                                      break;
+                                    }
+                                  }
+                                }
+                                float const x_231 = x_7.x_GLF_uniform_float_values.arr[0].el;
+                                float const x_232 = f;
+                                f = (x_232 + x_231);
+                                {
+                                  int const x_234 = i_14;
+                                  i_14 = (x_234 + 1);
+                                }
+                              }
+                              {
+                                int const x_236 = i_13;
+                                i_13 = (x_236 + 1);
+                              }
+                            }
+                            {
+                              int const x_238 = i_12;
+                              i_12 = (x_238 + 1);
+                            }
+                          }
+                          {
+                            int const x_240 = i_11;
+                            i_11 = (x_240 + 1);
+                          }
+                        }
+                        {
+                          int const x_242 = i_10;
+                          i_10 = (x_242 + 1);
+                        }
+                      }
+                      {
+                        int const x_244 = i_9;
+                        i_9 = (x_244 + 1);
+                      }
+                    }
+                    {
+                      int const x_246 = i_8;
+                      i_8 = (x_246 + 1);
+                    }
+                  }
+                  {
+                    int const x_248 = i_7;
+                    i_7 = (x_248 + 1);
+                  }
+                }
+                {
+                  int const x_250 = i_6;
+                  i_6 = (x_250 + 1);
+                }
+              }
+              {
+                int const x_252 = i_5;
+                i_5 = (x_252 + 1);
+              }
+            }
+            {
+              int const x_254 = i_4;
+              i_4 = (x_254 + 1);
+            }
+          }
+          {
+            int const x_256 = i_3;
+            i_3 = (x_256 + 1);
+          }
+        }
+        {
+          int const x_258 = i_2;
+          i_2 = (x_258 + 1);
+        }
+      }
+      {
+        int const x_260 = i_1;
+        i_1 = (x_260 + 1);
+      }
+    }
+    {
+      int const x_262 = i;
+      i = (x_262 + 1);
+    }
+  }
+  float const x_265 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  sum = x_265;
+  int const x_267 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  r = x_267;
+  while (true) {
+    int const x_272 = *(tint_symbol_4);
+    if ((x_272 < 100)) {
+    } else {
+      break;
+    }
+    int const x_275 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_275 + 1);
+    float const x_277 = f;
+    float const x_278 = sum;
+    sum = (x_278 + x_277);
+    {
+      int const x_280 = r;
+      r = (x_280 + 1);
+    }
+  }
+  float const x_282 = sum;
+  float const x_284 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  if ((x_282 == x_284)) {
+    int const x_290 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_293 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_296 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_299 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_290), float(x_293), float(x_296), float(x_299));
+  } else {
+    int const x_303 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_304 = float(x_303);
+    *(tint_symbol_5) = float4(x_304, x_304, x_304, x_304);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_10, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8003194
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,623 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 358
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %i_3 "i_3"
+               OpName %i_4 "i_4"
+               OpName %i_5 "i_5"
+               OpName %i_6 "i_6"
+               OpName %i_7 "i_7"
+               OpName %i_8 "i_8"
+               OpName %i_9 "i_9"
+               OpName %i_10 "i_10"
+               OpName %i_11 "i_11"
+               OpName %i_12 "i_12"
+               OpName %i_13 "i_13"
+               OpName %i_14 "i_14"
+               OpName %sum "sum"
+               OpName %r "r"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %20 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %20
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %20
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %int_100 = OpConstant %int 100
+   %main_out = OpTypeStruct %v4float
+        %346 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %29
+          %i = OpVariable %_ptr_Function_int Function %4
+        %i_1 = OpVariable %_ptr_Function_int Function %4
+        %i_2 = OpVariable %_ptr_Function_int Function %4
+        %i_3 = OpVariable %_ptr_Function_int Function %4
+        %i_4 = OpVariable %_ptr_Function_int Function %4
+        %i_5 = OpVariable %_ptr_Function_int Function %4
+        %i_6 = OpVariable %_ptr_Function_int Function %4
+        %i_7 = OpVariable %_ptr_Function_int Function %4
+        %i_8 = OpVariable %_ptr_Function_int Function %4
+        %i_9 = OpVariable %_ptr_Function_int Function %4
+       %i_10 = OpVariable %_ptr_Function_int Function %4
+       %i_11 = OpVariable %_ptr_Function_int Function %4
+       %i_12 = OpVariable %_ptr_Function_int Function %4
+       %i_13 = OpVariable %_ptr_Function_int Function %4
+       %i_14 = OpVariable %_ptr_Function_int Function %4
+        %sum = OpVariable %_ptr_Function_float Function %29
+          %r = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+         %52 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %53 = OpLoad %float %52
+               OpStore %f %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %56 = OpLoad %int %55
+               OpStore %i %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %i
+         %62 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpSLessThan %bool %61 %63
+               OpSelectionMerge %66 None
+               OpBranchConditional %64 %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %58
+         %66 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %70 = OpLoad %int %69
+               OpStore %i_1 %70
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %i_1
+         %76 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpSLessThan %bool %75 %77
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %72
+         %79 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %83 = OpLoad %int %82
+               OpStore %i_2 %83
+               OpBranch %84
+         %84 = OpLabel
+               OpLoopMerge %85 %86 None
+               OpBranch %87
+         %87 = OpLabel
+         %88 = OpLoad %int %i_2
+         %89 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %90 = OpLoad %int %89
+         %91 = OpSLessThan %bool %88 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %94
+         %93 = OpLabel
+               OpBranch %92
+         %94 = OpLabel
+               OpBranch %85
+         %92 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %96 = OpLoad %int %95
+               OpStore %i_3 %96
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %101 = OpLoad %int %i_3
+        %102 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %103 = OpLoad %int %102
+        %104 = OpSLessThan %bool %101 %103
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+               OpBranch %105
+        %107 = OpLabel
+               OpBranch %98
+        %105 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %109 = OpLoad %int %108
+               OpStore %i_4 %109
+               OpBranch %110
+        %110 = OpLabel
+               OpLoopMerge %111 %112 None
+               OpBranch %113
+        %113 = OpLabel
+        %114 = OpLoad %int %i_4
+        %115 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %116 = OpLoad %int %115
+        %117 = OpSLessThan %bool %114 %116
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %120
+        %119 = OpLabel
+               OpBranch %118
+        %120 = OpLabel
+               OpBranch %111
+        %118 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %122 = OpLoad %int %121
+               OpStore %i_5 %122
+               OpBranch %123
+        %123 = OpLabel
+               OpLoopMerge %124 %125 None
+               OpBranch %126
+        %126 = OpLabel
+        %127 = OpLoad %int %i_5
+        %128 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %129 = OpLoad %int %128
+        %130 = OpSLessThan %bool %127 %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+               OpBranch %131
+        %133 = OpLabel
+               OpBranch %124
+        %131 = OpLabel
+        %134 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %135 = OpLoad %int %134
+               OpStore %i_6 %135
+               OpBranch %136
+        %136 = OpLabel
+               OpLoopMerge %137 %138 None
+               OpBranch %139
+        %139 = OpLabel
+        %140 = OpLoad %int %i_6
+        %141 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %142 = OpLoad %int %141
+        %143 = OpSLessThan %bool %140 %142
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %137
+        %144 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %148 = OpLoad %int %147
+               OpStore %i_7 %148
+               OpBranch %149
+        %149 = OpLabel
+               OpLoopMerge %150 %151 None
+               OpBranch %152
+        %152 = OpLabel
+        %153 = OpLoad %int %i_7
+        %154 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %155 = OpLoad %int %154
+        %156 = OpSLessThan %bool %153 %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %150
+        %157 = OpLabel
+        %160 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %161 = OpLoad %int %160
+               OpStore %i_8 %161
+               OpBranch %162
+        %162 = OpLabel
+               OpLoopMerge %163 %164 None
+               OpBranch %165
+        %165 = OpLabel
+        %166 = OpLoad %int %i_8
+        %167 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %168 = OpLoad %int %167
+        %169 = OpSLessThan %bool %166 %168
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %172
+        %171 = OpLabel
+               OpBranch %170
+        %172 = OpLabel
+               OpBranch %163
+        %170 = OpLabel
+        %173 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %174 = OpLoad %int %173
+               OpStore %i_9 %174
+               OpBranch %175
+        %175 = OpLabel
+               OpLoopMerge %176 %177 None
+               OpBranch %178
+        %178 = OpLabel
+        %179 = OpLoad %int %i_9
+        %180 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %181 = OpLoad %int %180
+        %182 = OpSLessThan %bool %179 %181
+               OpSelectionMerge %183 None
+               OpBranchConditional %182 %184 %185
+        %184 = OpLabel
+               OpBranch %183
+        %185 = OpLabel
+               OpBranch %176
+        %183 = OpLabel
+        %186 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %187 = OpLoad %int %186
+               OpStore %i_10 %187
+               OpBranch %188
+        %188 = OpLabel
+               OpLoopMerge %189 %190 None
+               OpBranch %191
+        %191 = OpLabel
+        %192 = OpLoad %int %i_10
+        %193 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %194 = OpLoad %int %193
+        %195 = OpSLessThan %bool %192 %194
+               OpSelectionMerge %196 None
+               OpBranchConditional %195 %197 %198
+        %197 = OpLabel
+               OpBranch %196
+        %198 = OpLabel
+               OpBranch %189
+        %196 = OpLabel
+        %199 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %200 = OpLoad %int %199
+               OpStore %i_11 %200
+               OpBranch %201
+        %201 = OpLabel
+               OpLoopMerge %202 %203 None
+               OpBranch %204
+        %204 = OpLabel
+        %205 = OpLoad %int %i_11
+        %207 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %208 = OpLoad %int %207
+        %209 = OpSLessThan %bool %205 %208
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %212
+        %211 = OpLabel
+               OpBranch %210
+        %212 = OpLabel
+               OpBranch %202
+        %210 = OpLabel
+        %213 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %214 = OpLoad %int %213
+               OpStore %i_12 %214
+               OpBranch %215
+        %215 = OpLabel
+               OpLoopMerge %216 %217 None
+               OpBranch %218
+        %218 = OpLabel
+        %219 = OpLoad %int %i_12
+        %220 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %221 = OpLoad %int %220
+        %222 = OpSLessThan %bool %219 %221
+               OpSelectionMerge %223 None
+               OpBranchConditional %222 %224 %225
+        %224 = OpLabel
+               OpBranch %223
+        %225 = OpLabel
+               OpBranch %216
+        %223 = OpLabel
+        %226 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %227 = OpLoad %int %226
+               OpStore %i_13 %227
+               OpBranch %228
+        %228 = OpLabel
+               OpLoopMerge %229 %230 None
+               OpBranch %231
+        %231 = OpLabel
+        %232 = OpLoad %int %i_13
+        %233 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %234 = OpLoad %int %233
+        %235 = OpSLessThan %bool %232 %234
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %238
+        %237 = OpLabel
+               OpBranch %236
+        %238 = OpLabel
+               OpBranch %229
+        %236 = OpLabel
+        %239 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %240 = OpLoad %int %239
+               OpStore %i_14 %240
+               OpBranch %241
+        %241 = OpLabel
+               OpLoopMerge %242 %243 None
+               OpBranch %244
+        %244 = OpLabel
+        %245 = OpLoad %int %i_14
+        %246 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %247 = OpLoad %int %246
+        %248 = OpSLessThan %bool %245 %247
+               OpSelectionMerge %249 None
+               OpBranchConditional %248 %250 %251
+        %250 = OpLabel
+               OpBranch %249
+        %251 = OpLabel
+               OpBranch %242
+        %249 = OpLabel
+               OpBranch %252
+        %252 = OpLabel
+               OpLoopMerge %253 %254 None
+               OpBranch %255
+        %255 = OpLabel
+        %256 = OpLoad %int %x_GLF_global_loop_count
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %x_GLF_global_loop_count %257
+               OpBranch %254
+        %254 = OpLabel
+        %258 = OpLoad %int %x_GLF_global_loop_count
+        %260 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %261 = OpLoad %int %260
+        %263 = OpISub %int %int_100 %261
+        %264 = OpSLessThan %bool %258 %263
+               OpSelectionMerge %265 None
+               OpBranchConditional %264 %266 %267
+        %266 = OpLabel
+               OpBranch %265
+        %267 = OpLabel
+               OpBranch %253
+        %265 = OpLabel
+               OpBranch %252
+        %253 = OpLabel
+        %268 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+        %269 = OpLoad %float %268
+        %270 = OpLoad %float %f
+        %271 = OpFAdd %float %270 %269
+               OpStore %f %271
+               OpBranch %243
+        %243 = OpLabel
+        %272 = OpLoad %int %i_14
+        %273 = OpIAdd %int %272 %int_1
+               OpStore %i_14 %273
+               OpBranch %241
+        %242 = OpLabel
+               OpBranch %230
+        %230 = OpLabel
+        %274 = OpLoad %int %i_13
+        %275 = OpIAdd %int %274 %int_1
+               OpStore %i_13 %275
+               OpBranch %228
+        %229 = OpLabel
+               OpBranch %217
+        %217 = OpLabel
+        %276 = OpLoad %int %i_12
+        %277 = OpIAdd %int %276 %int_1
+               OpStore %i_12 %277
+               OpBranch %215
+        %216 = OpLabel
+               OpBranch %203
+        %203 = OpLabel
+        %278 = OpLoad %int %i_11
+        %279 = OpIAdd %int %278 %int_1
+               OpStore %i_11 %279
+               OpBranch %201
+        %202 = OpLabel
+               OpBranch %190
+        %190 = OpLabel
+        %280 = OpLoad %int %i_10
+        %281 = OpIAdd %int %280 %int_1
+               OpStore %i_10 %281
+               OpBranch %188
+        %189 = OpLabel
+               OpBranch %177
+        %177 = OpLabel
+        %282 = OpLoad %int %i_9
+        %283 = OpIAdd %int %282 %int_1
+               OpStore %i_9 %283
+               OpBranch %175
+        %176 = OpLabel
+               OpBranch %164
+        %164 = OpLabel
+        %284 = OpLoad %int %i_8
+        %285 = OpIAdd %int %284 %int_1
+               OpStore %i_8 %285
+               OpBranch %162
+        %163 = OpLabel
+               OpBranch %151
+        %151 = OpLabel
+        %286 = OpLoad %int %i_7
+        %287 = OpIAdd %int %286 %int_1
+               OpStore %i_7 %287
+               OpBranch %149
+        %150 = OpLabel
+               OpBranch %138
+        %138 = OpLabel
+        %288 = OpLoad %int %i_6
+        %289 = OpIAdd %int %288 %int_1
+               OpStore %i_6 %289
+               OpBranch %136
+        %137 = OpLabel
+               OpBranch %125
+        %125 = OpLabel
+        %290 = OpLoad %int %i_5
+        %291 = OpIAdd %int %290 %int_1
+               OpStore %i_5 %291
+               OpBranch %123
+        %124 = OpLabel
+               OpBranch %112
+        %112 = OpLabel
+        %292 = OpLoad %int %i_4
+        %293 = OpIAdd %int %292 %int_1
+               OpStore %i_4 %293
+               OpBranch %110
+        %111 = OpLabel
+               OpBranch %99
+         %99 = OpLabel
+        %294 = OpLoad %int %i_3
+        %295 = OpIAdd %int %294 %int_1
+               OpStore %i_3 %295
+               OpBranch %97
+         %98 = OpLabel
+               OpBranch %86
+         %86 = OpLabel
+        %296 = OpLoad %int %i_2
+        %297 = OpIAdd %int %296 %int_1
+               OpStore %i_2 %297
+               OpBranch %84
+         %85 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+        %298 = OpLoad %int %i_1
+        %299 = OpIAdd %int %298 %int_1
+               OpStore %i_1 %299
+               OpBranch %71
+         %72 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+        %300 = OpLoad %int %i
+        %301 = OpIAdd %int %300 %int_1
+               OpStore %i %301
+               OpBranch %57
+         %58 = OpLabel
+        %302 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %303 = OpLoad %float %302
+               OpStore %sum %303
+        %304 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %305 = OpLoad %int %304
+               OpStore %r %305
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+        %310 = OpLoad %int %x_GLF_global_loop_count
+        %311 = OpSLessThan %bool %310 %int_100
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %314
+        %313 = OpLabel
+               OpBranch %312
+        %314 = OpLabel
+               OpBranch %307
+        %312 = OpLabel
+        %315 = OpLoad %int %x_GLF_global_loop_count
+        %316 = OpIAdd %int %315 %int_1
+               OpStore %x_GLF_global_loop_count %316
+        %317 = OpLoad %float %f
+        %318 = OpLoad %float %sum
+        %319 = OpFAdd %float %318 %317
+               OpStore %sum %319
+               OpBranch %308
+        %308 = OpLabel
+        %320 = OpLoad %int %r
+        %321 = OpIAdd %int %320 %int_1
+               OpStore %r %321
+               OpBranch %306
+        %307 = OpLabel
+        %322 = OpLoad %float %sum
+        %323 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+        %324 = OpLoad %float %323
+        %325 = OpFOrdEqual %bool %322 %324
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %328
+        %327 = OpLabel
+        %329 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %330 = OpLoad %int %329
+        %331 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %332 = OpLoad %int %331
+        %333 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %334 = OpLoad %int %333
+        %335 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %336 = OpLoad %int %335
+        %337 = OpConvertSToF %float %330
+        %338 = OpConvertSToF %float %332
+        %339 = OpConvertSToF %float %334
+        %340 = OpConvertSToF %float %336
+        %341 = OpCompositeConstruct %v4float %337 %338 %339 %340
+               OpStore %x_GLF_color %341
+               OpBranch %326
+        %328 = OpLabel
+        %342 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %343 = OpLoad %int %342
+        %344 = OpConvertSToF %float %343
+        %345 = OpCompositeConstruct %v4float %344 %344 %344 %344
+               OpStore %x_GLF_color %345
+               OpBranch %326
+        %326 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %346
+%tint_symbol = OpFunctionParameter %main_out
+        %350 = OpLabel
+        %351 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %351
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %353 = OpLabel
+        %354 = OpFunctionCall %void %main_1
+        %356 = OpLoad %v4float %x_GLF_color
+        %357 = OpCompositeConstruct %main_out %356
+        %355 = OpFunctionCall %void %tint_symbol_2 %357
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 254[%254] is not post dominated by the back-edge block 265[%265]
+  %265 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ed88017
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,332 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  var i_4 : i32;
+  var i_5 : i32;
+  var i_6 : i32;
+  var i_7 : i32;
+  var i_8 : i32;
+  var i_9 : i32;
+  var i_10 : i32;
+  var i_11 : i32;
+  var i_12 : i32;
+  var i_13 : i32;
+  var i_14 : i32;
+  var sum : f32;
+  var r : i32;
+  x_GLF_global_loop_count = 0;
+  let x_53 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = x_53;
+  let x_55 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_55;
+  loop {
+    let x_60 : i32 = i;
+    let x_62 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = x_10.x_GLF_uniform_int_values[1];
+    i_1 = x_66;
+    loop {
+      let x_71 : i32 = i_1;
+      let x_73 : i32 = x_10.x_GLF_uniform_int_values[0];
+      if ((x_71 < x_73)) {
+      } else {
+        break;
+      }
+      let x_77 : i32 = x_10.x_GLF_uniform_int_values[1];
+      i_2 = x_77;
+      loop {
+        let x_82 : i32 = i_2;
+        let x_84 : i32 = x_10.x_GLF_uniform_int_values[0];
+        if ((x_82 < x_84)) {
+        } else {
+          break;
+        }
+        let x_88 : i32 = x_10.x_GLF_uniform_int_values[1];
+        i_3 = x_88;
+        loop {
+          let x_93 : i32 = i_3;
+          let x_95 : i32 = x_10.x_GLF_uniform_int_values[0];
+          if ((x_93 < x_95)) {
+          } else {
+            break;
+          }
+          let x_99 : i32 = x_10.x_GLF_uniform_int_values[1];
+          i_4 = x_99;
+          loop {
+            let x_104 : i32 = i_4;
+            let x_106 : i32 = x_10.x_GLF_uniform_int_values[0];
+            if ((x_104 < x_106)) {
+            } else {
+              break;
+            }
+            let x_110 : i32 = x_10.x_GLF_uniform_int_values[1];
+            i_5 = x_110;
+            loop {
+              let x_115 : i32 = i_5;
+              let x_117 : i32 = x_10.x_GLF_uniform_int_values[0];
+              if ((x_115 < x_117)) {
+              } else {
+                break;
+              }
+              let x_121 : i32 = x_10.x_GLF_uniform_int_values[1];
+              i_6 = x_121;
+              loop {
+                let x_126 : i32 = i_6;
+                let x_128 : i32 = x_10.x_GLF_uniform_int_values[0];
+                if ((x_126 < x_128)) {
+                } else {
+                  break;
+                }
+                let x_132 : i32 = x_10.x_GLF_uniform_int_values[1];
+                i_7 = x_132;
+                loop {
+                  let x_137 : i32 = i_7;
+                  let x_139 : i32 = x_10.x_GLF_uniform_int_values[0];
+                  if ((x_137 < x_139)) {
+                  } else {
+                    break;
+                  }
+                  let x_143 : i32 = x_10.x_GLF_uniform_int_values[1];
+                  i_8 = x_143;
+                  loop {
+                    let x_148 : i32 = i_8;
+                    let x_150 : i32 = x_10.x_GLF_uniform_int_values[0];
+                    if ((x_148 < x_150)) {
+                    } else {
+                      break;
+                    }
+                    let x_154 : i32 = x_10.x_GLF_uniform_int_values[1];
+                    i_9 = x_154;
+                    loop {
+                      let x_159 : i32 = i_9;
+                      let x_161 : i32 = x_10.x_GLF_uniform_int_values[0];
+                      if ((x_159 < x_161)) {
+                      } else {
+                        break;
+                      }
+                      let x_165 : i32 = x_10.x_GLF_uniform_int_values[1];
+                      i_10 = x_165;
+                      loop {
+                        let x_170 : i32 = i_10;
+                        let x_172 : i32 = x_10.x_GLF_uniform_int_values[0];
+                        if ((x_170 < x_172)) {
+                        } else {
+                          break;
+                        }
+                        let x_176 : i32 = x_10.x_GLF_uniform_int_values[1];
+                        i_11 = x_176;
+                        loop {
+                          let x_181 : i32 = i_11;
+                          let x_183 : i32 = x_10.x_GLF_uniform_int_values[2];
+                          if ((x_181 < x_183)) {
+                          } else {
+                            break;
+                          }
+                          let x_187 : i32 = x_10.x_GLF_uniform_int_values[1];
+                          i_12 = x_187;
+                          loop {
+                            let x_192 : i32 = i_12;
+                            let x_194 : i32 = x_10.x_GLF_uniform_int_values[0];
+                            if ((x_192 < x_194)) {
+                            } else {
+                              break;
+                            }
+                            let x_198 : i32 = x_10.x_GLF_uniform_int_values[1];
+                            i_13 = x_198;
+                            loop {
+                              let x_203 : i32 = i_13;
+                              let x_205 : i32 = x_10.x_GLF_uniform_int_values[0];
+                              if ((x_203 < x_205)) {
+                              } else {
+                                break;
+                              }
+                              let x_209 : i32 = x_10.x_GLF_uniform_int_values[1];
+                              i_14 = x_209;
+                              loop {
+                                let x_214 : i32 = i_14;
+                                let x_216 : i32 = x_10.x_GLF_uniform_int_values[2];
+                                if ((x_214 < x_216)) {
+                                } else {
+                                  break;
+                                }
+                                loop {
+                                  let x_223 : i32 = x_GLF_global_loop_count;
+                                  x_GLF_global_loop_count = (x_223 + 1);
+
+                                  continuing {
+                                    let x_225 : i32 = x_GLF_global_loop_count;
+                                    let x_227 : i32 = x_10.x_GLF_uniform_int_values[3];
+                                    if ((x_225 < (100 - x_227))) {
+                                    } else {
+                                      break;
+                                    }
+                                  }
+                                }
+                                let x_231 : f32 = x_7.x_GLF_uniform_float_values[0];
+                                let x_232 : f32 = f;
+                                f = (x_232 + x_231);
+
+                                continuing {
+                                  let x_234 : i32 = i_14;
+                                  i_14 = (x_234 + 1);
+                                }
+                              }
+
+                              continuing {
+                                let x_236 : i32 = i_13;
+                                i_13 = (x_236 + 1);
+                              }
+                            }
+
+                            continuing {
+                              let x_238 : i32 = i_12;
+                              i_12 = (x_238 + 1);
+                            }
+                          }
+
+                          continuing {
+                            let x_240 : i32 = i_11;
+                            i_11 = (x_240 + 1);
+                          }
+                        }
+
+                        continuing {
+                          let x_242 : i32 = i_10;
+                          i_10 = (x_242 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_244 : i32 = i_9;
+                        i_9 = (x_244 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_246 : i32 = i_8;
+                      i_8 = (x_246 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_248 : i32 = i_7;
+                    i_7 = (x_248 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_250 : i32 = i_6;
+                  i_6 = (x_250 + 1);
+                }
+              }
+
+              continuing {
+                let x_252 : i32 = i_5;
+                i_5 = (x_252 + 1);
+              }
+            }
+
+            continuing {
+              let x_254 : i32 = i_4;
+              i_4 = (x_254 + 1);
+            }
+          }
+
+          continuing {
+            let x_256 : i32 = i_3;
+            i_3 = (x_256 + 1);
+          }
+        }
+
+        continuing {
+          let x_258 : i32 = i_2;
+          i_2 = (x_258 + 1);
+        }
+      }
+
+      continuing {
+        let x_260 : i32 = i_1;
+        i_1 = (x_260 + 1);
+      }
+    }
+
+    continuing {
+      let x_262 : i32 = i;
+      i = (x_262 + 1);
+    }
+  }
+  let x_265 : f32 = x_7.x_GLF_uniform_float_values[1];
+  sum = x_265;
+  let x_267 : i32 = x_10.x_GLF_uniform_int_values[1];
+  r = x_267;
+  loop {
+    let x_272 : i32 = x_GLF_global_loop_count;
+    if ((x_272 < 100)) {
+    } else {
+      break;
+    }
+    let x_275 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_275 + 1);
+    let x_277 : f32 = f;
+    let x_278 : f32 = sum;
+    sum = (x_278 + x_277);
+
+    continuing {
+      let x_280 : i32 = r;
+      r = (x_280 + 1);
+    }
+  }
+  let x_282 : f32 = sum;
+  let x_284 : f32 = x_7.x_GLF_uniform_float_values[2];
+  if ((x_282 == x_284)) {
+    let x_290 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_293 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_296 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_299 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_290), f32(x_293), f32(x_296), f32(x_299));
+  } else {
+    let x_303 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_304 : f32 = f32(x_303);
+    x_GLF_color = vec4<f32>(x_304, x_304, x_304, x_304);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
new file mode 100644
index 0000000..ed88017
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
@@ -0,0 +1,332 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  var i_4 : i32;
+  var i_5 : i32;
+  var i_6 : i32;
+  var i_7 : i32;
+  var i_8 : i32;
+  var i_9 : i32;
+  var i_10 : i32;
+  var i_11 : i32;
+  var i_12 : i32;
+  var i_13 : i32;
+  var i_14 : i32;
+  var sum : f32;
+  var r : i32;
+  x_GLF_global_loop_count = 0;
+  let x_53 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = x_53;
+  let x_55 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_55;
+  loop {
+    let x_60 : i32 = i;
+    let x_62 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = x_10.x_GLF_uniform_int_values[1];
+    i_1 = x_66;
+    loop {
+      let x_71 : i32 = i_1;
+      let x_73 : i32 = x_10.x_GLF_uniform_int_values[0];
+      if ((x_71 < x_73)) {
+      } else {
+        break;
+      }
+      let x_77 : i32 = x_10.x_GLF_uniform_int_values[1];
+      i_2 = x_77;
+      loop {
+        let x_82 : i32 = i_2;
+        let x_84 : i32 = x_10.x_GLF_uniform_int_values[0];
+        if ((x_82 < x_84)) {
+        } else {
+          break;
+        }
+        let x_88 : i32 = x_10.x_GLF_uniform_int_values[1];
+        i_3 = x_88;
+        loop {
+          let x_93 : i32 = i_3;
+          let x_95 : i32 = x_10.x_GLF_uniform_int_values[0];
+          if ((x_93 < x_95)) {
+          } else {
+            break;
+          }
+          let x_99 : i32 = x_10.x_GLF_uniform_int_values[1];
+          i_4 = x_99;
+          loop {
+            let x_104 : i32 = i_4;
+            let x_106 : i32 = x_10.x_GLF_uniform_int_values[0];
+            if ((x_104 < x_106)) {
+            } else {
+              break;
+            }
+            let x_110 : i32 = x_10.x_GLF_uniform_int_values[1];
+            i_5 = x_110;
+            loop {
+              let x_115 : i32 = i_5;
+              let x_117 : i32 = x_10.x_GLF_uniform_int_values[0];
+              if ((x_115 < x_117)) {
+              } else {
+                break;
+              }
+              let x_121 : i32 = x_10.x_GLF_uniform_int_values[1];
+              i_6 = x_121;
+              loop {
+                let x_126 : i32 = i_6;
+                let x_128 : i32 = x_10.x_GLF_uniform_int_values[0];
+                if ((x_126 < x_128)) {
+                } else {
+                  break;
+                }
+                let x_132 : i32 = x_10.x_GLF_uniform_int_values[1];
+                i_7 = x_132;
+                loop {
+                  let x_137 : i32 = i_7;
+                  let x_139 : i32 = x_10.x_GLF_uniform_int_values[0];
+                  if ((x_137 < x_139)) {
+                  } else {
+                    break;
+                  }
+                  let x_143 : i32 = x_10.x_GLF_uniform_int_values[1];
+                  i_8 = x_143;
+                  loop {
+                    let x_148 : i32 = i_8;
+                    let x_150 : i32 = x_10.x_GLF_uniform_int_values[0];
+                    if ((x_148 < x_150)) {
+                    } else {
+                      break;
+                    }
+                    let x_154 : i32 = x_10.x_GLF_uniform_int_values[1];
+                    i_9 = x_154;
+                    loop {
+                      let x_159 : i32 = i_9;
+                      let x_161 : i32 = x_10.x_GLF_uniform_int_values[0];
+                      if ((x_159 < x_161)) {
+                      } else {
+                        break;
+                      }
+                      let x_165 : i32 = x_10.x_GLF_uniform_int_values[1];
+                      i_10 = x_165;
+                      loop {
+                        let x_170 : i32 = i_10;
+                        let x_172 : i32 = x_10.x_GLF_uniform_int_values[0];
+                        if ((x_170 < x_172)) {
+                        } else {
+                          break;
+                        }
+                        let x_176 : i32 = x_10.x_GLF_uniform_int_values[1];
+                        i_11 = x_176;
+                        loop {
+                          let x_181 : i32 = i_11;
+                          let x_183 : i32 = x_10.x_GLF_uniform_int_values[2];
+                          if ((x_181 < x_183)) {
+                          } else {
+                            break;
+                          }
+                          let x_187 : i32 = x_10.x_GLF_uniform_int_values[1];
+                          i_12 = x_187;
+                          loop {
+                            let x_192 : i32 = i_12;
+                            let x_194 : i32 = x_10.x_GLF_uniform_int_values[0];
+                            if ((x_192 < x_194)) {
+                            } else {
+                              break;
+                            }
+                            let x_198 : i32 = x_10.x_GLF_uniform_int_values[1];
+                            i_13 = x_198;
+                            loop {
+                              let x_203 : i32 = i_13;
+                              let x_205 : i32 = x_10.x_GLF_uniform_int_values[0];
+                              if ((x_203 < x_205)) {
+                              } else {
+                                break;
+                              }
+                              let x_209 : i32 = x_10.x_GLF_uniform_int_values[1];
+                              i_14 = x_209;
+                              loop {
+                                let x_214 : i32 = i_14;
+                                let x_216 : i32 = x_10.x_GLF_uniform_int_values[2];
+                                if ((x_214 < x_216)) {
+                                } else {
+                                  break;
+                                }
+                                loop {
+                                  let x_223 : i32 = x_GLF_global_loop_count;
+                                  x_GLF_global_loop_count = (x_223 + 1);
+
+                                  continuing {
+                                    let x_225 : i32 = x_GLF_global_loop_count;
+                                    let x_227 : i32 = x_10.x_GLF_uniform_int_values[3];
+                                    if ((x_225 < (100 - x_227))) {
+                                    } else {
+                                      break;
+                                    }
+                                  }
+                                }
+                                let x_231 : f32 = x_7.x_GLF_uniform_float_values[0];
+                                let x_232 : f32 = f;
+                                f = (x_232 + x_231);
+
+                                continuing {
+                                  let x_234 : i32 = i_14;
+                                  i_14 = (x_234 + 1);
+                                }
+                              }
+
+                              continuing {
+                                let x_236 : i32 = i_13;
+                                i_13 = (x_236 + 1);
+                              }
+                            }
+
+                            continuing {
+                              let x_238 : i32 = i_12;
+                              i_12 = (x_238 + 1);
+                            }
+                          }
+
+                          continuing {
+                            let x_240 : i32 = i_11;
+                            i_11 = (x_240 + 1);
+                          }
+                        }
+
+                        continuing {
+                          let x_242 : i32 = i_10;
+                          i_10 = (x_242 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_244 : i32 = i_9;
+                        i_9 = (x_244 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_246 : i32 = i_8;
+                      i_8 = (x_246 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_248 : i32 = i_7;
+                    i_7 = (x_248 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_250 : i32 = i_6;
+                  i_6 = (x_250 + 1);
+                }
+              }
+
+              continuing {
+                let x_252 : i32 = i_5;
+                i_5 = (x_252 + 1);
+              }
+            }
+
+            continuing {
+              let x_254 : i32 = i_4;
+              i_4 = (x_254 + 1);
+            }
+          }
+
+          continuing {
+            let x_256 : i32 = i_3;
+            i_3 = (x_256 + 1);
+          }
+        }
+
+        continuing {
+          let x_258 : i32 = i_2;
+          i_2 = (x_258 + 1);
+        }
+      }
+
+      continuing {
+        let x_260 : i32 = i_1;
+        i_1 = (x_260 + 1);
+      }
+    }
+
+    continuing {
+      let x_262 : i32 = i;
+      i = (x_262 + 1);
+    }
+  }
+  let x_265 : f32 = x_7.x_GLF_uniform_float_values[1];
+  sum = x_265;
+  let x_267 : i32 = x_10.x_GLF_uniform_int_values[1];
+  r = x_267;
+  loop {
+    let x_272 : i32 = x_GLF_global_loop_count;
+    if ((x_272 < 100)) {
+    } else {
+      break;
+    }
+    let x_275 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_275 + 1);
+    let x_277 : f32 = f;
+    let x_278 : f32 = sum;
+    sum = (x_278 + x_277);
+
+    continuing {
+      let x_280 : i32 = r;
+      r = (x_280 + 1);
+    }
+  }
+  let x_282 : f32 = sum;
+  let x_284 : f32 = x_7.x_GLF_uniform_float_values[2];
+  if ((x_282 == x_284)) {
+    let x_290 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_293 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_296 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_299 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_290), f32(x_293), f32(x_296), f32(x_299));
+  } else {
+    let x_303 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_304 : f32 = f32(x_303);
+    x_GLF_color = vec4<f32>(x_304, x_304, x_304, x_304);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..fb22331
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,294 @@
+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;
+  while (true) {
+    const int x_60 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 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;
+    while (true) {
+      const int x_71 = i_1;
+      const uint scalar_offset_1 = ((16u * uint(0))) / 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;
+      while (true) {
+        const int x_82 = i_2;
+        const uint scalar_offset_2 = ((16u * uint(0))) / 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;
+        while (true) {
+          const int x_93 = i_3;
+          const uint scalar_offset_3 = ((16u * uint(0))) / 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;
+          while (true) {
+            const int x_104 = i_4;
+            const uint scalar_offset_4 = ((16u * uint(0))) / 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;
+            while (true) {
+              const int x_115 = i_5;
+              const uint scalar_offset_5 = ((16u * uint(0))) / 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;
+              while (true) {
+                const int x_126 = i_6;
+                const uint scalar_offset_6 = ((16u * uint(0))) / 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;
+                while (true) {
+                  const int x_137 = i_7;
+                  const uint scalar_offset_7 = ((16u * uint(0))) / 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;
+                  while (true) {
+                    const int x_148 = i_8;
+                    const uint scalar_offset_8 = ((16u * uint(0))) / 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;
+                    while (true) {
+                      const int x_159 = i_9;
+                      const uint scalar_offset_9 = ((16u * uint(0))) / 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;
+                      while (true) {
+                        const int x_170 = i_10;
+                        const uint scalar_offset_10 = ((16u * uint(0))) / 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;
+                        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;
+                          while (true) {
+                            const int x_192 = i_12;
+                            const uint scalar_offset_11 = ((16u * uint(0))) / 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;
+                            while (true) {
+                              const int x_203 = i_13;
+                              const uint scalar_offset_12 = ((16u * uint(0))) / 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;
+                              while (true) {
+                                const int x_214 = i_14;
+                                const int x_216 = asint(x_10[2].x);
+                                if ((x_214 < x_216)) {
+                                } else {
+                                  break;
+                                }
+                                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 * uint(0))) / 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;
+  {
+    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 * uint(0))) / 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 * uint(0))) / 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;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a589c96
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.msl
@@ -0,0 +1,322 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_10, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  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;
+  *(tint_symbol_4) = 0;
+  float const x_53 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  f = x_53;
+  int const x_55 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  i = x_55;
+  while (true) {
+    int const x_60 = i;
+    int const x_62 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    int const x_66 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    i_1 = x_66;
+    while (true) {
+      int const x_71 = i_1;
+      int const x_73 = x_10.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_71 < x_73)) {
+      } else {
+        break;
+      }
+      int const x_77 = x_10.x_GLF_uniform_int_values.arr[1].el;
+      i_2 = x_77;
+      while (true) {
+        int const x_82 = i_2;
+        int const x_84 = x_10.x_GLF_uniform_int_values.arr[0].el;
+        if ((x_82 < x_84)) {
+        } else {
+          break;
+        }
+        int const x_88 = x_10.x_GLF_uniform_int_values.arr[1].el;
+        i_3 = x_88;
+        while (true) {
+          int const x_93 = i_3;
+          int const x_95 = x_10.x_GLF_uniform_int_values.arr[0].el;
+          if ((x_93 < x_95)) {
+          } else {
+            break;
+          }
+          int const x_99 = x_10.x_GLF_uniform_int_values.arr[1].el;
+          i_4 = x_99;
+          while (true) {
+            int const x_104 = i_4;
+            int const x_106 = x_10.x_GLF_uniform_int_values.arr[0].el;
+            if ((x_104 < x_106)) {
+            } else {
+              break;
+            }
+            int const x_110 = x_10.x_GLF_uniform_int_values.arr[1].el;
+            i_5 = x_110;
+            while (true) {
+              int const x_115 = i_5;
+              int const x_117 = x_10.x_GLF_uniform_int_values.arr[0].el;
+              if ((x_115 < x_117)) {
+              } else {
+                break;
+              }
+              int const x_121 = x_10.x_GLF_uniform_int_values.arr[1].el;
+              i_6 = x_121;
+              while (true) {
+                int const x_126 = i_6;
+                int const x_128 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                if ((x_126 < x_128)) {
+                } else {
+                  break;
+                }
+                int const x_132 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                i_7 = x_132;
+                while (true) {
+                  int const x_137 = i_7;
+                  int const x_139 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                  if ((x_137 < x_139)) {
+                  } else {
+                    break;
+                  }
+                  int const x_143 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                  i_8 = x_143;
+                  while (true) {
+                    int const x_148 = i_8;
+                    int const x_150 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                    if ((x_148 < x_150)) {
+                    } else {
+                      break;
+                    }
+                    int const x_154 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                    i_9 = x_154;
+                    while (true) {
+                      int const x_159 = i_9;
+                      int const x_161 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                      if ((x_159 < x_161)) {
+                      } else {
+                        break;
+                      }
+                      int const x_165 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                      i_10 = x_165;
+                      while (true) {
+                        int const x_170 = i_10;
+                        int const x_172 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                        if ((x_170 < x_172)) {
+                        } else {
+                          break;
+                        }
+                        int const x_176 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                        i_11 = x_176;
+                        while (true) {
+                          int const x_181 = i_11;
+                          int const x_183 = x_10.x_GLF_uniform_int_values.arr[2].el;
+                          if ((x_181 < x_183)) {
+                          } else {
+                            break;
+                          }
+                          int const x_187 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                          i_12 = x_187;
+                          while (true) {
+                            int const x_192 = i_12;
+                            int const x_194 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                            if ((x_192 < x_194)) {
+                            } else {
+                              break;
+                            }
+                            int const x_198 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                            i_13 = x_198;
+                            while (true) {
+                              int const x_203 = i_13;
+                              int const x_205 = x_10.x_GLF_uniform_int_values.arr[0].el;
+                              if ((x_203 < x_205)) {
+                              } else {
+                                break;
+                              }
+                              int const x_209 = x_10.x_GLF_uniform_int_values.arr[1].el;
+                              i_14 = x_209;
+                              while (true) {
+                                int const x_214 = i_14;
+                                int const x_216 = x_10.x_GLF_uniform_int_values.arr[2].el;
+                                if ((x_214 < x_216)) {
+                                } else {
+                                  break;
+                                }
+                                while (true) {
+                                  int const x_223 = *(tint_symbol_4);
+                                  *(tint_symbol_4) = (x_223 + 1);
+                                  {
+                                    int const x_225 = *(tint_symbol_4);
+                                    int const x_227 = x_10.x_GLF_uniform_int_values.arr[3].el;
+                                    if ((x_225 < (100 - x_227))) {
+                                    } else {
+                                      break;
+                                    }
+                                  }
+                                }
+                                float const x_231 = x_7.x_GLF_uniform_float_values.arr[0].el;
+                                float const x_232 = f;
+                                f = (x_232 + x_231);
+                                {
+                                  int const x_234 = i_14;
+                                  i_14 = (x_234 + 1);
+                                }
+                              }
+                              {
+                                int const x_236 = i_13;
+                                i_13 = (x_236 + 1);
+                              }
+                            }
+                            {
+                              int const x_238 = i_12;
+                              i_12 = (x_238 + 1);
+                            }
+                          }
+                          {
+                            int const x_240 = i_11;
+                            i_11 = (x_240 + 1);
+                          }
+                        }
+                        {
+                          int const x_242 = i_10;
+                          i_10 = (x_242 + 1);
+                        }
+                      }
+                      {
+                        int const x_244 = i_9;
+                        i_9 = (x_244 + 1);
+                      }
+                    }
+                    {
+                      int const x_246 = i_8;
+                      i_8 = (x_246 + 1);
+                    }
+                  }
+                  {
+                    int const x_248 = i_7;
+                    i_7 = (x_248 + 1);
+                  }
+                }
+                {
+                  int const x_250 = i_6;
+                  i_6 = (x_250 + 1);
+                }
+              }
+              {
+                int const x_252 = i_5;
+                i_5 = (x_252 + 1);
+              }
+            }
+            {
+              int const x_254 = i_4;
+              i_4 = (x_254 + 1);
+            }
+          }
+          {
+            int const x_256 = i_3;
+            i_3 = (x_256 + 1);
+          }
+        }
+        {
+          int const x_258 = i_2;
+          i_2 = (x_258 + 1);
+        }
+      }
+      {
+        int const x_260 = i_1;
+        i_1 = (x_260 + 1);
+      }
+    }
+    {
+      int const x_262 = i;
+      i = (x_262 + 1);
+    }
+  }
+  float const x_265 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  sum = x_265;
+  int const x_267 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  r = x_267;
+  while (true) {
+    int const x_272 = *(tint_symbol_4);
+    if ((x_272 < 100)) {
+    } else {
+      break;
+    }
+    int const x_275 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_275 + 1);
+    float const x_277 = f;
+    float const x_278 = sum;
+    sum = (x_278 + x_277);
+    {
+      int const x_280 = r;
+      r = (x_280 + 1);
+    }
+  }
+  float const x_282 = sum;
+  float const x_284 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  if ((x_282 == x_284)) {
+    int const x_290 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_293 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_296 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_299 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_290), float(x_293), float(x_296), float(x_299));
+  } else {
+    int const x_303 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_304 = float(x_303);
+    *(tint_symbol_5) = float4(x_304, x_304, x_304, x_304);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_10, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8003194
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,623 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 358
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_global_loop_count "x_GLF_global_loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %i_3 "i_3"
+               OpName %i_4 "i_4"
+               OpName %i_5 "i_5"
+               OpName %i_6 "i_6"
+               OpName %i_7 "i_7"
+               OpName %i_8 "i_8"
+               OpName %i_9 "i_9"
+               OpName %i_10 "i_10"
+               OpName %i_11 "i_11"
+               OpName %i_12 "i_12"
+               OpName %i_13 "i_13"
+               OpName %i_14 "i_14"
+               OpName %sum "sum"
+               OpName %r "r"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+%x_GLF_global_loop_count = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf0 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %20 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %20
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %20
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+    %int_100 = OpConstant %int 100
+   %main_out = OpTypeStruct %v4float
+        %346 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %29
+          %i = OpVariable %_ptr_Function_int Function %4
+        %i_1 = OpVariable %_ptr_Function_int Function %4
+        %i_2 = OpVariable %_ptr_Function_int Function %4
+        %i_3 = OpVariable %_ptr_Function_int Function %4
+        %i_4 = OpVariable %_ptr_Function_int Function %4
+        %i_5 = OpVariable %_ptr_Function_int Function %4
+        %i_6 = OpVariable %_ptr_Function_int Function %4
+        %i_7 = OpVariable %_ptr_Function_int Function %4
+        %i_8 = OpVariable %_ptr_Function_int Function %4
+        %i_9 = OpVariable %_ptr_Function_int Function %4
+       %i_10 = OpVariable %_ptr_Function_int Function %4
+       %i_11 = OpVariable %_ptr_Function_int Function %4
+       %i_12 = OpVariable %_ptr_Function_int Function %4
+       %i_13 = OpVariable %_ptr_Function_int Function %4
+       %i_14 = OpVariable %_ptr_Function_int Function %4
+        %sum = OpVariable %_ptr_Function_float Function %29
+          %r = OpVariable %_ptr_Function_int Function %4
+               OpStore %x_GLF_global_loop_count %int_0
+         %52 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %53 = OpLoad %float %52
+               OpStore %f %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %56 = OpLoad %int %55
+               OpStore %i %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %i
+         %62 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpSLessThan %bool %61 %63
+               OpSelectionMerge %66 None
+               OpBranchConditional %64 %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %58
+         %66 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %70 = OpLoad %int %69
+               OpStore %i_1 %70
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %i_1
+         %76 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpSLessThan %bool %75 %77
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %72
+         %79 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %83 = OpLoad %int %82
+               OpStore %i_2 %83
+               OpBranch %84
+         %84 = OpLabel
+               OpLoopMerge %85 %86 None
+               OpBranch %87
+         %87 = OpLabel
+         %88 = OpLoad %int %i_2
+         %89 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %90 = OpLoad %int %89
+         %91 = OpSLessThan %bool %88 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %94
+         %93 = OpLabel
+               OpBranch %92
+         %94 = OpLabel
+               OpBranch %85
+         %92 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %96 = OpLoad %int %95
+               OpStore %i_3 %96
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %101 = OpLoad %int %i_3
+        %102 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %103 = OpLoad %int %102
+        %104 = OpSLessThan %bool %101 %103
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+               OpBranch %105
+        %107 = OpLabel
+               OpBranch %98
+        %105 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %109 = OpLoad %int %108
+               OpStore %i_4 %109
+               OpBranch %110
+        %110 = OpLabel
+               OpLoopMerge %111 %112 None
+               OpBranch %113
+        %113 = OpLabel
+        %114 = OpLoad %int %i_4
+        %115 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %116 = OpLoad %int %115
+        %117 = OpSLessThan %bool %114 %116
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %120
+        %119 = OpLabel
+               OpBranch %118
+        %120 = OpLabel
+               OpBranch %111
+        %118 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %122 = OpLoad %int %121
+               OpStore %i_5 %122
+               OpBranch %123
+        %123 = OpLabel
+               OpLoopMerge %124 %125 None
+               OpBranch %126
+        %126 = OpLabel
+        %127 = OpLoad %int %i_5
+        %128 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %129 = OpLoad %int %128
+        %130 = OpSLessThan %bool %127 %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+               OpBranch %131
+        %133 = OpLabel
+               OpBranch %124
+        %131 = OpLabel
+        %134 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %135 = OpLoad %int %134
+               OpStore %i_6 %135
+               OpBranch %136
+        %136 = OpLabel
+               OpLoopMerge %137 %138 None
+               OpBranch %139
+        %139 = OpLabel
+        %140 = OpLoad %int %i_6
+        %141 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %142 = OpLoad %int %141
+        %143 = OpSLessThan %bool %140 %142
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %137
+        %144 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %148 = OpLoad %int %147
+               OpStore %i_7 %148
+               OpBranch %149
+        %149 = OpLabel
+               OpLoopMerge %150 %151 None
+               OpBranch %152
+        %152 = OpLabel
+        %153 = OpLoad %int %i_7
+        %154 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %155 = OpLoad %int %154
+        %156 = OpSLessThan %bool %153 %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %150
+        %157 = OpLabel
+        %160 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %161 = OpLoad %int %160
+               OpStore %i_8 %161
+               OpBranch %162
+        %162 = OpLabel
+               OpLoopMerge %163 %164 None
+               OpBranch %165
+        %165 = OpLabel
+        %166 = OpLoad %int %i_8
+        %167 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %168 = OpLoad %int %167
+        %169 = OpSLessThan %bool %166 %168
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %172
+        %171 = OpLabel
+               OpBranch %170
+        %172 = OpLabel
+               OpBranch %163
+        %170 = OpLabel
+        %173 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %174 = OpLoad %int %173
+               OpStore %i_9 %174
+               OpBranch %175
+        %175 = OpLabel
+               OpLoopMerge %176 %177 None
+               OpBranch %178
+        %178 = OpLabel
+        %179 = OpLoad %int %i_9
+        %180 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %181 = OpLoad %int %180
+        %182 = OpSLessThan %bool %179 %181
+               OpSelectionMerge %183 None
+               OpBranchConditional %182 %184 %185
+        %184 = OpLabel
+               OpBranch %183
+        %185 = OpLabel
+               OpBranch %176
+        %183 = OpLabel
+        %186 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %187 = OpLoad %int %186
+               OpStore %i_10 %187
+               OpBranch %188
+        %188 = OpLabel
+               OpLoopMerge %189 %190 None
+               OpBranch %191
+        %191 = OpLabel
+        %192 = OpLoad %int %i_10
+        %193 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %194 = OpLoad %int %193
+        %195 = OpSLessThan %bool %192 %194
+               OpSelectionMerge %196 None
+               OpBranchConditional %195 %197 %198
+        %197 = OpLabel
+               OpBranch %196
+        %198 = OpLabel
+               OpBranch %189
+        %196 = OpLabel
+        %199 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %200 = OpLoad %int %199
+               OpStore %i_11 %200
+               OpBranch %201
+        %201 = OpLabel
+               OpLoopMerge %202 %203 None
+               OpBranch %204
+        %204 = OpLabel
+        %205 = OpLoad %int %i_11
+        %207 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %208 = OpLoad %int %207
+        %209 = OpSLessThan %bool %205 %208
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %212
+        %211 = OpLabel
+               OpBranch %210
+        %212 = OpLabel
+               OpBranch %202
+        %210 = OpLabel
+        %213 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %214 = OpLoad %int %213
+               OpStore %i_12 %214
+               OpBranch %215
+        %215 = OpLabel
+               OpLoopMerge %216 %217 None
+               OpBranch %218
+        %218 = OpLabel
+        %219 = OpLoad %int %i_12
+        %220 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %221 = OpLoad %int %220
+        %222 = OpSLessThan %bool %219 %221
+               OpSelectionMerge %223 None
+               OpBranchConditional %222 %224 %225
+        %224 = OpLabel
+               OpBranch %223
+        %225 = OpLabel
+               OpBranch %216
+        %223 = OpLabel
+        %226 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %227 = OpLoad %int %226
+               OpStore %i_13 %227
+               OpBranch %228
+        %228 = OpLabel
+               OpLoopMerge %229 %230 None
+               OpBranch %231
+        %231 = OpLabel
+        %232 = OpLoad %int %i_13
+        %233 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %234 = OpLoad %int %233
+        %235 = OpSLessThan %bool %232 %234
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %238
+        %237 = OpLabel
+               OpBranch %236
+        %238 = OpLabel
+               OpBranch %229
+        %236 = OpLabel
+        %239 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %240 = OpLoad %int %239
+               OpStore %i_14 %240
+               OpBranch %241
+        %241 = OpLabel
+               OpLoopMerge %242 %243 None
+               OpBranch %244
+        %244 = OpLabel
+        %245 = OpLoad %int %i_14
+        %246 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %247 = OpLoad %int %246
+        %248 = OpSLessThan %bool %245 %247
+               OpSelectionMerge %249 None
+               OpBranchConditional %248 %250 %251
+        %250 = OpLabel
+               OpBranch %249
+        %251 = OpLabel
+               OpBranch %242
+        %249 = OpLabel
+               OpBranch %252
+        %252 = OpLabel
+               OpLoopMerge %253 %254 None
+               OpBranch %255
+        %255 = OpLabel
+        %256 = OpLoad %int %x_GLF_global_loop_count
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %x_GLF_global_loop_count %257
+               OpBranch %254
+        %254 = OpLabel
+        %258 = OpLoad %int %x_GLF_global_loop_count
+        %260 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %261 = OpLoad %int %260
+        %263 = OpISub %int %int_100 %261
+        %264 = OpSLessThan %bool %258 %263
+               OpSelectionMerge %265 None
+               OpBranchConditional %264 %266 %267
+        %266 = OpLabel
+               OpBranch %265
+        %267 = OpLabel
+               OpBranch %253
+        %265 = OpLabel
+               OpBranch %252
+        %253 = OpLabel
+        %268 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+        %269 = OpLoad %float %268
+        %270 = OpLoad %float %f
+        %271 = OpFAdd %float %270 %269
+               OpStore %f %271
+               OpBranch %243
+        %243 = OpLabel
+        %272 = OpLoad %int %i_14
+        %273 = OpIAdd %int %272 %int_1
+               OpStore %i_14 %273
+               OpBranch %241
+        %242 = OpLabel
+               OpBranch %230
+        %230 = OpLabel
+        %274 = OpLoad %int %i_13
+        %275 = OpIAdd %int %274 %int_1
+               OpStore %i_13 %275
+               OpBranch %228
+        %229 = OpLabel
+               OpBranch %217
+        %217 = OpLabel
+        %276 = OpLoad %int %i_12
+        %277 = OpIAdd %int %276 %int_1
+               OpStore %i_12 %277
+               OpBranch %215
+        %216 = OpLabel
+               OpBranch %203
+        %203 = OpLabel
+        %278 = OpLoad %int %i_11
+        %279 = OpIAdd %int %278 %int_1
+               OpStore %i_11 %279
+               OpBranch %201
+        %202 = OpLabel
+               OpBranch %190
+        %190 = OpLabel
+        %280 = OpLoad %int %i_10
+        %281 = OpIAdd %int %280 %int_1
+               OpStore %i_10 %281
+               OpBranch %188
+        %189 = OpLabel
+               OpBranch %177
+        %177 = OpLabel
+        %282 = OpLoad %int %i_9
+        %283 = OpIAdd %int %282 %int_1
+               OpStore %i_9 %283
+               OpBranch %175
+        %176 = OpLabel
+               OpBranch %164
+        %164 = OpLabel
+        %284 = OpLoad %int %i_8
+        %285 = OpIAdd %int %284 %int_1
+               OpStore %i_8 %285
+               OpBranch %162
+        %163 = OpLabel
+               OpBranch %151
+        %151 = OpLabel
+        %286 = OpLoad %int %i_7
+        %287 = OpIAdd %int %286 %int_1
+               OpStore %i_7 %287
+               OpBranch %149
+        %150 = OpLabel
+               OpBranch %138
+        %138 = OpLabel
+        %288 = OpLoad %int %i_6
+        %289 = OpIAdd %int %288 %int_1
+               OpStore %i_6 %289
+               OpBranch %136
+        %137 = OpLabel
+               OpBranch %125
+        %125 = OpLabel
+        %290 = OpLoad %int %i_5
+        %291 = OpIAdd %int %290 %int_1
+               OpStore %i_5 %291
+               OpBranch %123
+        %124 = OpLabel
+               OpBranch %112
+        %112 = OpLabel
+        %292 = OpLoad %int %i_4
+        %293 = OpIAdd %int %292 %int_1
+               OpStore %i_4 %293
+               OpBranch %110
+        %111 = OpLabel
+               OpBranch %99
+         %99 = OpLabel
+        %294 = OpLoad %int %i_3
+        %295 = OpIAdd %int %294 %int_1
+               OpStore %i_3 %295
+               OpBranch %97
+         %98 = OpLabel
+               OpBranch %86
+         %86 = OpLabel
+        %296 = OpLoad %int %i_2
+        %297 = OpIAdd %int %296 %int_1
+               OpStore %i_2 %297
+               OpBranch %84
+         %85 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+        %298 = OpLoad %int %i_1
+        %299 = OpIAdd %int %298 %int_1
+               OpStore %i_1 %299
+               OpBranch %71
+         %72 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+        %300 = OpLoad %int %i
+        %301 = OpIAdd %int %300 %int_1
+               OpStore %i %301
+               OpBranch %57
+         %58 = OpLabel
+        %302 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %303 = OpLoad %float %302
+               OpStore %sum %303
+        %304 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %305 = OpLoad %int %304
+               OpStore %r %305
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+        %310 = OpLoad %int %x_GLF_global_loop_count
+        %311 = OpSLessThan %bool %310 %int_100
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %314
+        %313 = OpLabel
+               OpBranch %312
+        %314 = OpLabel
+               OpBranch %307
+        %312 = OpLabel
+        %315 = OpLoad %int %x_GLF_global_loop_count
+        %316 = OpIAdd %int %315 %int_1
+               OpStore %x_GLF_global_loop_count %316
+        %317 = OpLoad %float %f
+        %318 = OpLoad %float %sum
+        %319 = OpFAdd %float %318 %317
+               OpStore %sum %319
+               OpBranch %308
+        %308 = OpLabel
+        %320 = OpLoad %int %r
+        %321 = OpIAdd %int %320 %int_1
+               OpStore %r %321
+               OpBranch %306
+        %307 = OpLabel
+        %322 = OpLoad %float %sum
+        %323 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+        %324 = OpLoad %float %323
+        %325 = OpFOrdEqual %bool %322 %324
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %328
+        %327 = OpLabel
+        %329 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %330 = OpLoad %int %329
+        %331 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %332 = OpLoad %int %331
+        %333 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %334 = OpLoad %int %333
+        %335 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %336 = OpLoad %int %335
+        %337 = OpConvertSToF %float %330
+        %338 = OpConvertSToF %float %332
+        %339 = OpConvertSToF %float %334
+        %340 = OpConvertSToF %float %336
+        %341 = OpCompositeConstruct %v4float %337 %338 %339 %340
+               OpStore %x_GLF_color %341
+               OpBranch %326
+        %328 = OpLabel
+        %342 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %343 = OpLoad %int %342
+        %344 = OpConvertSToF %float %343
+        %345 = OpCompositeConstruct %v4float %344 %344 %344 %344
+               OpStore %x_GLF_color %345
+               OpBranch %326
+        %326 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %346
+%tint_symbol = OpFunctionParameter %main_out
+        %350 = OpLabel
+        %351 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %351
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %353 = OpLabel
+        %354 = OpFunctionCall %void %main_1
+        %356 = OpLoad %v4float %x_GLF_color
+        %357 = OpCompositeConstruct %main_out %356
+        %355 = OpFunctionCall %void %tint_symbol_2 %357
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 254[%254] is not post dominated by the back-edge block 265[%265]
+  %265 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ed88017
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,332 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_global_loop_count : i32;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  var i_4 : i32;
+  var i_5 : i32;
+  var i_6 : i32;
+  var i_7 : i32;
+  var i_8 : i32;
+  var i_9 : i32;
+  var i_10 : i32;
+  var i_11 : i32;
+  var i_12 : i32;
+  var i_13 : i32;
+  var i_14 : i32;
+  var sum : f32;
+  var r : i32;
+  x_GLF_global_loop_count = 0;
+  let x_53 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = x_53;
+  let x_55 : i32 = x_10.x_GLF_uniform_int_values[1];
+  i = x_55;
+  loop {
+    let x_60 : i32 = i;
+    let x_62 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    let x_66 : i32 = x_10.x_GLF_uniform_int_values[1];
+    i_1 = x_66;
+    loop {
+      let x_71 : i32 = i_1;
+      let x_73 : i32 = x_10.x_GLF_uniform_int_values[0];
+      if ((x_71 < x_73)) {
+      } else {
+        break;
+      }
+      let x_77 : i32 = x_10.x_GLF_uniform_int_values[1];
+      i_2 = x_77;
+      loop {
+        let x_82 : i32 = i_2;
+        let x_84 : i32 = x_10.x_GLF_uniform_int_values[0];
+        if ((x_82 < x_84)) {
+        } else {
+          break;
+        }
+        let x_88 : i32 = x_10.x_GLF_uniform_int_values[1];
+        i_3 = x_88;
+        loop {
+          let x_93 : i32 = i_3;
+          let x_95 : i32 = x_10.x_GLF_uniform_int_values[0];
+          if ((x_93 < x_95)) {
+          } else {
+            break;
+          }
+          let x_99 : i32 = x_10.x_GLF_uniform_int_values[1];
+          i_4 = x_99;
+          loop {
+            let x_104 : i32 = i_4;
+            let x_106 : i32 = x_10.x_GLF_uniform_int_values[0];
+            if ((x_104 < x_106)) {
+            } else {
+              break;
+            }
+            let x_110 : i32 = x_10.x_GLF_uniform_int_values[1];
+            i_5 = x_110;
+            loop {
+              let x_115 : i32 = i_5;
+              let x_117 : i32 = x_10.x_GLF_uniform_int_values[0];
+              if ((x_115 < x_117)) {
+              } else {
+                break;
+              }
+              let x_121 : i32 = x_10.x_GLF_uniform_int_values[1];
+              i_6 = x_121;
+              loop {
+                let x_126 : i32 = i_6;
+                let x_128 : i32 = x_10.x_GLF_uniform_int_values[0];
+                if ((x_126 < x_128)) {
+                } else {
+                  break;
+                }
+                let x_132 : i32 = x_10.x_GLF_uniform_int_values[1];
+                i_7 = x_132;
+                loop {
+                  let x_137 : i32 = i_7;
+                  let x_139 : i32 = x_10.x_GLF_uniform_int_values[0];
+                  if ((x_137 < x_139)) {
+                  } else {
+                    break;
+                  }
+                  let x_143 : i32 = x_10.x_GLF_uniform_int_values[1];
+                  i_8 = x_143;
+                  loop {
+                    let x_148 : i32 = i_8;
+                    let x_150 : i32 = x_10.x_GLF_uniform_int_values[0];
+                    if ((x_148 < x_150)) {
+                    } else {
+                      break;
+                    }
+                    let x_154 : i32 = x_10.x_GLF_uniform_int_values[1];
+                    i_9 = x_154;
+                    loop {
+                      let x_159 : i32 = i_9;
+                      let x_161 : i32 = x_10.x_GLF_uniform_int_values[0];
+                      if ((x_159 < x_161)) {
+                      } else {
+                        break;
+                      }
+                      let x_165 : i32 = x_10.x_GLF_uniform_int_values[1];
+                      i_10 = x_165;
+                      loop {
+                        let x_170 : i32 = i_10;
+                        let x_172 : i32 = x_10.x_GLF_uniform_int_values[0];
+                        if ((x_170 < x_172)) {
+                        } else {
+                          break;
+                        }
+                        let x_176 : i32 = x_10.x_GLF_uniform_int_values[1];
+                        i_11 = x_176;
+                        loop {
+                          let x_181 : i32 = i_11;
+                          let x_183 : i32 = x_10.x_GLF_uniform_int_values[2];
+                          if ((x_181 < x_183)) {
+                          } else {
+                            break;
+                          }
+                          let x_187 : i32 = x_10.x_GLF_uniform_int_values[1];
+                          i_12 = x_187;
+                          loop {
+                            let x_192 : i32 = i_12;
+                            let x_194 : i32 = x_10.x_GLF_uniform_int_values[0];
+                            if ((x_192 < x_194)) {
+                            } else {
+                              break;
+                            }
+                            let x_198 : i32 = x_10.x_GLF_uniform_int_values[1];
+                            i_13 = x_198;
+                            loop {
+                              let x_203 : i32 = i_13;
+                              let x_205 : i32 = x_10.x_GLF_uniform_int_values[0];
+                              if ((x_203 < x_205)) {
+                              } else {
+                                break;
+                              }
+                              let x_209 : i32 = x_10.x_GLF_uniform_int_values[1];
+                              i_14 = x_209;
+                              loop {
+                                let x_214 : i32 = i_14;
+                                let x_216 : i32 = x_10.x_GLF_uniform_int_values[2];
+                                if ((x_214 < x_216)) {
+                                } else {
+                                  break;
+                                }
+                                loop {
+                                  let x_223 : i32 = x_GLF_global_loop_count;
+                                  x_GLF_global_loop_count = (x_223 + 1);
+
+                                  continuing {
+                                    let x_225 : i32 = x_GLF_global_loop_count;
+                                    let x_227 : i32 = x_10.x_GLF_uniform_int_values[3];
+                                    if ((x_225 < (100 - x_227))) {
+                                    } else {
+                                      break;
+                                    }
+                                  }
+                                }
+                                let x_231 : f32 = x_7.x_GLF_uniform_float_values[0];
+                                let x_232 : f32 = f;
+                                f = (x_232 + x_231);
+
+                                continuing {
+                                  let x_234 : i32 = i_14;
+                                  i_14 = (x_234 + 1);
+                                }
+                              }
+
+                              continuing {
+                                let x_236 : i32 = i_13;
+                                i_13 = (x_236 + 1);
+                              }
+                            }
+
+                            continuing {
+                              let x_238 : i32 = i_12;
+                              i_12 = (x_238 + 1);
+                            }
+                          }
+
+                          continuing {
+                            let x_240 : i32 = i_11;
+                            i_11 = (x_240 + 1);
+                          }
+                        }
+
+                        continuing {
+                          let x_242 : i32 = i_10;
+                          i_10 = (x_242 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_244 : i32 = i_9;
+                        i_9 = (x_244 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_246 : i32 = i_8;
+                      i_8 = (x_246 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_248 : i32 = i_7;
+                    i_7 = (x_248 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_250 : i32 = i_6;
+                  i_6 = (x_250 + 1);
+                }
+              }
+
+              continuing {
+                let x_252 : i32 = i_5;
+                i_5 = (x_252 + 1);
+              }
+            }
+
+            continuing {
+              let x_254 : i32 = i_4;
+              i_4 = (x_254 + 1);
+            }
+          }
+
+          continuing {
+            let x_256 : i32 = i_3;
+            i_3 = (x_256 + 1);
+          }
+        }
+
+        continuing {
+          let x_258 : i32 = i_2;
+          i_2 = (x_258 + 1);
+        }
+      }
+
+      continuing {
+        let x_260 : i32 = i_1;
+        i_1 = (x_260 + 1);
+      }
+    }
+
+    continuing {
+      let x_262 : i32 = i;
+      i = (x_262 + 1);
+    }
+  }
+  let x_265 : f32 = x_7.x_GLF_uniform_float_values[1];
+  sum = x_265;
+  let x_267 : i32 = x_10.x_GLF_uniform_int_values[1];
+  r = x_267;
+  loop {
+    let x_272 : i32 = x_GLF_global_loop_count;
+    if ((x_272 < 100)) {
+    } else {
+      break;
+    }
+    let x_275 : i32 = x_GLF_global_loop_count;
+    x_GLF_global_loop_count = (x_275 + 1);
+    let x_277 : f32 = f;
+    let x_278 : f32 = sum;
+    sum = (x_278 + x_277);
+
+    continuing {
+      let x_280 : i32 = r;
+      r = (x_280 + 1);
+    }
+  }
+  let x_282 : f32 = sum;
+  let x_284 : f32 = x_7.x_GLF_uniform_float_values[2];
+  if ((x_282 == x_284)) {
+    let x_290 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_293 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_296 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_299 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_290), f32(x_293), f32(x_296), f32(x_299));
+  } else {
+    let x_303 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_304 : f32 = f32(x_303);
+    x_GLF_color = vec4<f32>(x_304, x_304, x_304, x_304);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm
new file mode 100644
index 0000000..3ea2481
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm
@@ -0,0 +1,248 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %A "A"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %ref "ref"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %ok "ok"
+               OpName %i_0 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_19 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_17 = OpConstant %uint 17
+%_arr_int_uint_17 = OpTypeArray %int %uint_17
+%_ptr_Function__arr_int_uint_17 = OpTypePointer Function %_arr_int_uint_17
+    %uint_19 = OpConstant %uint 19
+%_arr_int_uint_19 = OpTypeArray %int %uint_19
+       %buf0 = OpTypeStruct %_arr_int_uint_19
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+     %int_11 = OpConstant %int 11
+     %int_12 = OpConstant %int 12
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+     %int_17 = OpConstant %int 17
+     %int_18 = OpConstant %int 18
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %50 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_int_uint_17 Function
+        %ref = OpVariable %_ptr_Function__arr_int_uint_17 Function
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %ok = OpVariable %_ptr_Function_bool Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %84 = OpLoad %int %83
+         %85 = OpCompositeConstruct %_arr_int_uint_17 %52 %54 %56 %58 %60 %62 %64 %66 %68 %70 %72 %74 %76 %78 %80 %82 %84
+               OpStore %A %85
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %91 = OpLoad %int %90
+         %92 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %93 = OpLoad %int %92
+         %94 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_7
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_10
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_12
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_13
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_14
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_15
+        %111 = OpLoad %int %110
+        %112 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_16
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_17
+        %115 = OpLoad %int %114
+        %116 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_18
+        %117 = OpLoad %int %116
+        %118 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %119 = OpLoad %int %118
+        %120 = OpCompositeConstruct %_arr_int_uint_17 %87 %89 %91 %93 %95 %97 %99 %101 %103 %105 %107 %109 %111 %113 %115 %117 %119
+               OpStore %ref %120
+        %121 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %122 = OpLoad %int %121
+               OpStore %a %122
+        %123 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %124 = OpLoad %int %123
+               OpStore %i %124
+               OpBranch %125
+        %125 = OpLabel
+               OpLoopMerge %126 %127 None
+               OpBranch %128
+        %128 = OpLabel
+        %129 = OpLoad %int %i
+        %130 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %131 = OpLoad %int %130
+        %132 = OpSLessThan %bool %129 %131
+               OpBranchConditional %132 %133 %126
+        %133 = OpLabel
+        %134 = OpLoad %int %i
+        %135 = OpLoad %int %a
+        %136 = OpISub %int %135 %int_1
+               OpStore %a %136
+        %137 = OpAccessChain %_ptr_Function_int %A %134
+               OpStore %137 %135
+        %138 = OpLoad %int %i
+        %139 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %140 = OpLoad %int %139
+        %141 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_18
+        %142 = OpLoad %int %141
+        %143 = OpExtInst %int %1 SClamp %138 %140 %142
+        %144 = OpLoad %int %i
+        %145 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %146 = OpLoad %int %145
+        %147 = OpIAdd %int %144 %146
+        %148 = OpAccessChain %_ptr_Function_int %A %143
+               OpStore %148 %147
+               OpBranch %127
+        %127 = OpLabel
+        %149 = OpLoad %int %i
+        %150 = OpIAdd %int %149 %int_1
+               OpStore %i %150
+               OpBranch %125
+        %126 = OpLabel
+               OpStore %ok %true
+        %151 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %152 = OpLoad %int %151
+               OpStore %i_0 %152
+               OpBranch %153
+        %153 = OpLabel
+               OpLoopMerge %154 %155 None
+               OpBranch %156
+        %156 = OpLabel
+        %157 = OpLoad %int %i_0
+        %158 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %159 = OpLoad %int %158
+        %160 = OpSLessThan %bool %157 %159
+               OpBranchConditional %160 %161 %154
+        %161 = OpLabel
+        %162 = OpLoad %int %i_0
+        %163 = OpAccessChain %_ptr_Function_int %A %162
+        %164 = OpLoad %int %163
+        %165 = OpLoad %int %i_0
+        %166 = OpAccessChain %_ptr_Function_int %ref %165
+        %167 = OpLoad %int %166
+        %168 = OpINotEqual %bool %164 %167
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %169
+        %170 = OpLabel
+               OpStore %ok %false
+               OpBranch %169
+        %169 = OpLabel
+               OpBranch %155
+        %155 = OpLabel
+        %171 = OpLoad %int %i_0
+        %172 = OpIAdd %int %171 %int_1
+               OpStore %i_0 %172
+               OpBranch %153
+        %154 = OpLabel
+        %173 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %174 = OpLoad %int %173
+        %175 = OpConvertSToF %float %174
+        %176 = OpCompositeConstruct %v4float %175 %175 %175 %175
+               OpStore %_GLF_color %176
+        %177 = OpLoad %bool %ok
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %178
+        %179 = OpLabel
+        %180 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %181 = OpLoad %int %180
+        %182 = OpConvertSToF %float %181
+        %183 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %184 = OpLoad %int %183
+        %185 = OpConvertSToF %float %184
+        %186 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %187 = OpLoad %int %186
+        %188 = OpConvertSToF %float %187
+        %189 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %190 = OpLoad %int %189
+        %191 = OpConvertSToF %float %190
+        %192 = OpCompositeConstruct %v4float %182 %185 %188 %191
+               OpStore %_GLF_color %192
+               OpBranch %178
+        %178 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9e560db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,120 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[19];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int A[17] = (int[17])0;
+  int ref[17] = (int[17])0;
+  int a = 0;
+  int i = 0;
+  bool ok = false;
+  int i_1 = 0;
+  const int x_52 = asint(x_6[2].x);
+  const int x_54 = asint(x_6[2].x);
+  const int x_56 = asint(x_6[2].x);
+  const int x_58 = asint(x_6[2].x);
+  const int x_60 = asint(x_6[2].x);
+  const int x_62 = asint(x_6[2].x);
+  const int x_64 = asint(x_6[2].x);
+  const int x_66 = asint(x_6[2].x);
+  const int x_68 = asint(x_6[2].x);
+  const int x_70 = asint(x_6[2].x);
+  const int x_72 = asint(x_6[2].x);
+  const int x_74 = asint(x_6[2].x);
+  const int x_76 = asint(x_6[2].x);
+  const int x_78 = asint(x_6[2].x);
+  const int x_80 = asint(x_6[2].x);
+  const int x_82 = asint(x_6[2].x);
+  const int x_84 = asint(x_6[2].x);
+  const int tint_symbol_3[17] = {x_52, x_54, x_56, x_58, x_60, x_62, x_64, x_66, x_68, x_70, x_72, x_74, x_76, x_78, x_80, x_82, x_84};
+  A = tint_symbol_3;
+  const int x_87 = asint(x_6[3].x);
+  const int x_89 = asint(x_6[4].x);
+  const int x_91 = asint(x_6[5].x);
+  const int x_93 = asint(x_6[6].x);
+  const int x_95 = asint(x_6[7].x);
+  const int x_97 = asint(x_6[8].x);
+  const int x_99 = asint(x_6[9].x);
+  const int x_101 = asint(x_6[10].x);
+  const int x_103 = asint(x_6[11].x);
+  const int x_105 = asint(x_6[12].x);
+  const int x_107 = asint(x_6[13].x);
+  const int x_109 = asint(x_6[14].x);
+  const int x_111 = asint(x_6[15].x);
+  const int x_113 = asint(x_6[16].x);
+  const int x_115 = asint(x_6[17].x);
+  const int x_117 = asint(x_6[18].x);
+  const int x_119 = asint(x_6[1].x);
+  const int tint_symbol_4[17] = {x_87, x_89, x_91, x_93, x_95, x_97, x_99, x_101, x_103, x_105, x_107, x_109, x_111, x_113, x_115, x_117, x_119};
+  ref = tint_symbol_4;
+  const int x_122 = asint(x_6[2].x);
+  a = x_122;
+  const int x_124 = asint(x_6[2].x);
+  i = x_124;
+  while (true) {
+    const int x_129 = i;
+    const int x_131 = asint(x_6[1].x);
+    if ((x_129 < x_131)) {
+    } else {
+      break;
+    }
+    const int x_134 = i;
+    const int x_135 = a;
+    a = (x_135 - 1);
+    A[x_134] = x_135;
+    const int x_138 = i;
+    const int x_140 = asint(x_6[2].x);
+    const int x_142 = asint(x_6[18].x);
+    const int x_144 = i;
+    const int x_146 = asint(x_6[3].x);
+    A[clamp(x_138, x_140, x_142)] = (x_144 + x_146);
+    {
+      i = (i + 1);
+    }
+  }
+  ok = true;
+  const int x_152 = asint(x_6[2].x);
+  i_1 = x_152;
+  while (true) {
+    const int x_157 = i_1;
+    const int x_159 = asint(x_6[1].x);
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    const int x_164 = A[i_1];
+    const int x_167 = ref[i_1];
+    if ((x_164 != x_167)) {
+      ok = false;
+    }
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const int x_174 = asint(x_6[2].x);
+  const float x_175 = float(x_174);
+  x_GLF_color = float4(x_175, x_175, x_175, x_175);
+  if (ok) {
+    const int x_181 = asint(x_6[3].x);
+    const int x_184 = asint(x_6[2].x);
+    const int x_187 = asint(x_6[2].x);
+    const int x_190 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_181), float(x_184), float(x_187), float(x_190));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5993503
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.msl
@@ -0,0 +1,138 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[19];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[17];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6) {
+  tint_array_wrapper_1 A = {};
+  tint_array_wrapper_1 ref = {};
+  int a = 0;
+  int i = 0;
+  bool ok = false;
+  int i_1 = 0;
+  int const x_52 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_54 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_56 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_58 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_60 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_68 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_70 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_72 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_74 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_76 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_78 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_80 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_82 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_84 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_52, x_54, x_56, x_58, x_60, x_62, x_64, x_66, x_68, x_70, x_72, x_74, x_76, x_78, x_80, x_82, x_84}};
+  A = tint_symbol_3;
+  int const x_87 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_89 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_91 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_93 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_95 = x_6.x_GLF_uniform_int_values.arr[7].el;
+  int const x_97 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_99 = x_6.x_GLF_uniform_int_values.arr[9].el;
+  int const x_101 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  int const x_103 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_105 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_107 = x_6.x_GLF_uniform_int_values.arr[13].el;
+  int const x_109 = x_6.x_GLF_uniform_int_values.arr[14].el;
+  int const x_111 = x_6.x_GLF_uniform_int_values.arr[15].el;
+  int const x_113 = x_6.x_GLF_uniform_int_values.arr[16].el;
+  int const x_115 = x_6.x_GLF_uniform_int_values.arr[17].el;
+  int const x_117 = x_6.x_GLF_uniform_int_values.arr[18].el;
+  int const x_119 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  tint_array_wrapper_1 const tint_symbol_4 = {.arr={x_87, x_89, x_91, x_93, x_95, x_97, x_99, x_101, x_103, x_105, x_107, x_109, x_111, x_113, x_115, x_117, x_119}};
+  ref = tint_symbol_4;
+  int const x_122 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_122;
+  int const x_124 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_124;
+  while (true) {
+    int const x_129 = i;
+    int const x_131 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_129 < x_131)) {
+    } else {
+      break;
+    }
+    int const x_134 = i;
+    int const x_135 = a;
+    a = (x_135 - 1);
+    A.arr[x_134] = x_135;
+    int const x_138 = i;
+    int const x_140 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_142 = x_6.x_GLF_uniform_int_values.arr[18].el;
+    int const x_144 = i;
+    int const x_146 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    A.arr[clamp(x_138, x_140, x_142)] = (x_144 + x_146);
+    {
+      int const x_149 = i;
+      i = (x_149 + 1);
+    }
+  }
+  ok = true;
+  int const x_152 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i_1 = x_152;
+  while (true) {
+    int const x_157 = i_1;
+    int const x_159 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    int const x_162 = i_1;
+    int const x_164 = A.arr[x_162];
+    int const x_165 = i_1;
+    int const x_167 = ref.arr[x_165];
+    if ((x_164 != x_167)) {
+      ok = false;
+    }
+    {
+      int const x_171 = i_1;
+      i_1 = (x_171 + 1);
+    }
+  }
+  int const x_174 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_175 = float(x_174);
+  *(tint_symbol_6) = float4(x_175, x_175, x_175, x_175);
+  bool const x_177 = ok;
+  if (x_177) {
+    int const x_181 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_184 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_187 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_190 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_6) = float4(float(x_181), float(x_184), float(x_187), float(x_190));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..794d877
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,294 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 215
+; Schema: 0
+               OpCapability Shader
+        %152 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %A "A"
+               OpName %ref "ref"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %ok "ok"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_19 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_17 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_19 = OpConstant %uint 19
+%_arr_int_uint_19 = OpTypeArray %int %uint_19
+       %buf0 = OpTypeStruct %_arr_int_uint_19
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %uint_17 = OpConstant %uint 17
+%_arr_int_uint_17 = OpTypeArray %int %uint_17
+%_ptr_Function__arr_int_uint_17 = OpTypePointer Function %_arr_int_uint_17
+         %23 = OpConstantNull %_arr_int_uint_17
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+     %int_11 = OpConstant %int 11
+     %int_12 = OpConstant %int 12
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+     %int_17 = OpConstant %int 17
+     %int_18 = OpConstant %int 18
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+        %203 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_int_uint_17 Function %23
+        %ref = OpVariable %_ptr_Function__arr_int_uint_17 Function %23
+          %a = OpVariable %_ptr_Function_int Function %27
+          %i = OpVariable %_ptr_Function_int Function %27
+         %ok = OpVariable %_ptr_Function_bool Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %27
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %70 = OpLoad %int %69
+         %71 = OpCompositeConstruct %_arr_int_uint_17 %38 %40 %42 %44 %46 %48 %50 %52 %54 %56 %58 %60 %62 %64 %66 %68 %70
+               OpStore %A %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %74 = OpLoad %int %73
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %77 = OpLoad %int %76
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %80 = OpLoad %int %79
+         %82 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+         %83 = OpLoad %int %82
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+         %86 = OpLoad %int %85
+         %88 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+         %89 = OpLoad %int %88
+         %91 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+         %92 = OpLoad %int %91
+         %94 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+         %95 = OpLoad %int %94
+         %97 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+         %98 = OpLoad %int %97
+        %100 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+        %101 = OpLoad %int %100
+        %103 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_13
+        %104 = OpLoad %int %103
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_14
+        %107 = OpLoad %int %106
+        %109 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_15
+        %110 = OpLoad %int %109
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_16
+        %113 = OpLoad %int %112
+        %115 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_17
+        %116 = OpLoad %int %115
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_18
+        %119 = OpLoad %int %118
+        %121 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %122 = OpLoad %int %121
+        %123 = OpCompositeConstruct %_arr_int_uint_17 %74 %77 %80 %83 %86 %89 %92 %95 %98 %101 %104 %107 %110 %113 %116 %119 %122
+               OpStore %ref %123
+        %124 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %125 = OpLoad %int %124
+               OpStore %a %125
+        %126 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %127 = OpLoad %int %126
+               OpStore %i %127
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %132 = OpLoad %int %i
+        %133 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %134 = OpLoad %int %133
+        %135 = OpSLessThan %bool %132 %134
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %138
+        %137 = OpLabel
+               OpBranch %136
+        %138 = OpLabel
+               OpBranch %129
+        %136 = OpLabel
+        %139 = OpLoad %int %i
+        %140 = OpLoad %int %a
+        %141 = OpISub %int %140 %int_1
+               OpStore %a %141
+        %142 = OpAccessChain %_ptr_Function_int %A %139
+               OpStore %142 %140
+        %143 = OpLoad %int %i
+        %144 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %145 = OpLoad %int %144
+        %146 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_18
+        %147 = OpLoad %int %146
+        %148 = OpLoad %int %i
+        %149 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %150 = OpLoad %int %149
+        %151 = OpExtInst %int %152 SClamp %143 %145 %147
+        %153 = OpAccessChain %_ptr_Function_int %A %151
+        %154 = OpIAdd %int %148 %150
+               OpStore %153 %154
+               OpBranch %130
+        %130 = OpLabel
+        %155 = OpLoad %int %i
+        %156 = OpIAdd %int %155 %int_1
+               OpStore %i %156
+               OpBranch %128
+        %129 = OpLabel
+               OpStore %ok %true
+        %158 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %159 = OpLoad %int %158
+               OpStore %i_1 %159
+               OpBranch %160
+        %160 = OpLabel
+               OpLoopMerge %161 %162 None
+               OpBranch %163
+        %163 = OpLabel
+        %164 = OpLoad %int %i_1
+        %165 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %164 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %161
+        %168 = OpLabel
+        %171 = OpLoad %int %i_1
+        %172 = OpAccessChain %_ptr_Function_int %A %171
+        %173 = OpLoad %int %172
+        %174 = OpLoad %int %i_1
+        %175 = OpAccessChain %_ptr_Function_int %ref %174
+        %176 = OpLoad %int %175
+        %177 = OpINotEqual %bool %173 %176
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %178
+        %179 = OpLabel
+               OpStore %ok %false
+               OpBranch %178
+        %178 = OpLabel
+               OpBranch %162
+        %162 = OpLabel
+        %181 = OpLoad %int %i_1
+        %182 = OpIAdd %int %181 %int_1
+               OpStore %i_1 %182
+               OpBranch %160
+        %161 = OpLabel
+        %183 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %184 = OpLoad %int %183
+        %185 = OpConvertSToF %float %184
+        %186 = OpCompositeConstruct %v4float %185 %185 %185 %185
+               OpStore %x_GLF_color %186
+        %187 = OpLoad %bool %ok
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %188
+        %189 = OpLabel
+        %190 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %191 = OpLoad %int %190
+        %192 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %193 = OpLoad %int %192
+        %194 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %195 = OpLoad %int %194
+        %196 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %197 = OpLoad %int %196
+        %198 = OpConvertSToF %float %191
+        %199 = OpConvertSToF %float %193
+        %200 = OpConvertSToF %float %195
+        %201 = OpConvertSToF %float %197
+        %202 = OpCompositeConstruct %v4float %198 %199 %200 %201
+               OpStore %x_GLF_color %202
+               OpBranch %188
+        %188 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %203
+%tint_symbol = OpFunctionParameter %main_out
+        %207 = OpLabel
+        %208 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %208
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %210 = OpLabel
+        %211 = OpFunctionCall %void %main_1
+        %213 = OpLoad %v4float %x_GLF_color
+        %214 = OpCompositeConstruct %main_out %213
+        %212 = OpFunctionCall %void %tint_symbol_2 %214
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..464bdec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,128 @@
+type Arr = [[stride(16)]] array<i32, 19>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<i32, 17>;
+  var ref : array<i32, 17>;
+  var a : i32;
+  var i : i32;
+  var ok : bool;
+  var i_1 : i32;
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_54 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_60 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_68 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_70 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_72 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_74 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_76 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_78 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_80 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_82 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[2];
+  A = array<i32, 17>(x_52, x_54, x_56, x_58, x_60, x_62, x_64, x_66, x_68, x_70, x_72, x_74, x_76, x_78, x_80, x_82, x_84);
+  let x_87 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_89 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_91 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_93 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_95 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_97 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_99 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_101 : i32 = x_6.x_GLF_uniform_int_values[10];
+  let x_103 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_105 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_107 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_109 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_111 : i32 = x_6.x_GLF_uniform_int_values[15];
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[16];
+  let x_115 : i32 = x_6.x_GLF_uniform_int_values[17];
+  let x_117 : i32 = x_6.x_GLF_uniform_int_values[18];
+  let x_119 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref = array<i32, 17>(x_87, x_89, x_91, x_93, x_95, x_97, x_99, x_101, x_103, x_105, x_107, x_109, x_111, x_113, x_115, x_117, x_119);
+  let x_122 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_122;
+  let x_124 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_124;
+  loop {
+    let x_129 : i32 = i;
+    let x_131 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_129 < x_131)) {
+    } else {
+      break;
+    }
+    let x_134 : i32 = i;
+    let x_135 : i32 = a;
+    a = (x_135 - 1);
+    A[x_134] = x_135;
+    let x_138 : i32 = i;
+    let x_140 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_142 : i32 = x_6.x_GLF_uniform_int_values[18];
+    let x_144 : i32 = i;
+    let x_146 : i32 = x_6.x_GLF_uniform_int_values[3];
+    A[clamp(x_138, x_140, x_142)] = (x_144 + x_146);
+
+    continuing {
+      let x_149 : i32 = i;
+      i = (x_149 + 1);
+    }
+  }
+  ok = true;
+  let x_152 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i_1 = x_152;
+  loop {
+    let x_157 : i32 = i_1;
+    let x_159 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    let x_162 : i32 = i_1;
+    let x_164 : i32 = A[x_162];
+    let x_165 : i32 = i_1;
+    let x_167 : i32 = ref[x_165];
+    if ((x_164 != x_167)) {
+      ok = false;
+    }
+
+    continuing {
+      let x_171 : i32 = i_1;
+      i_1 = (x_171 + 1);
+    }
+  }
+  let x_174 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_175 : f32 = f32(x_174);
+  x_GLF_color = vec4<f32>(x_175, x_175, x_175, x_175);
+  let x_177 : bool = ok;
+  if (x_177) {
+    let x_181 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_184 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_187 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_190 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_181), f32(x_184), f32(x_187), f32(x_190));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
new file mode 100644
index 0000000..464bdec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
@@ -0,0 +1,128 @@
+type Arr = [[stride(16)]] array<i32, 19>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<i32, 17>;
+  var ref : array<i32, 17>;
+  var a : i32;
+  var i : i32;
+  var ok : bool;
+  var i_1 : i32;
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_54 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_60 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_68 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_70 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_72 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_74 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_76 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_78 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_80 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_82 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[2];
+  A = array<i32, 17>(x_52, x_54, x_56, x_58, x_60, x_62, x_64, x_66, x_68, x_70, x_72, x_74, x_76, x_78, x_80, x_82, x_84);
+  let x_87 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_89 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_91 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_93 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_95 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_97 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_99 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_101 : i32 = x_6.x_GLF_uniform_int_values[10];
+  let x_103 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_105 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_107 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_109 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_111 : i32 = x_6.x_GLF_uniform_int_values[15];
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[16];
+  let x_115 : i32 = x_6.x_GLF_uniform_int_values[17];
+  let x_117 : i32 = x_6.x_GLF_uniform_int_values[18];
+  let x_119 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref = array<i32, 17>(x_87, x_89, x_91, x_93, x_95, x_97, x_99, x_101, x_103, x_105, x_107, x_109, x_111, x_113, x_115, x_117, x_119);
+  let x_122 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_122;
+  let x_124 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_124;
+  loop {
+    let x_129 : i32 = i;
+    let x_131 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_129 < x_131)) {
+    } else {
+      break;
+    }
+    let x_134 : i32 = i;
+    let x_135 : i32 = a;
+    a = (x_135 - 1);
+    A[x_134] = x_135;
+    let x_138 : i32 = i;
+    let x_140 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_142 : i32 = x_6.x_GLF_uniform_int_values[18];
+    let x_144 : i32 = i;
+    let x_146 : i32 = x_6.x_GLF_uniform_int_values[3];
+    A[clamp(x_138, x_140, x_142)] = (x_144 + x_146);
+
+    continuing {
+      let x_149 : i32 = i;
+      i = (x_149 + 1);
+    }
+  }
+  ok = true;
+  let x_152 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i_1 = x_152;
+  loop {
+    let x_157 : i32 = i_1;
+    let x_159 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    let x_162 : i32 = i_1;
+    let x_164 : i32 = A[x_162];
+    let x_165 : i32 = i_1;
+    let x_167 : i32 = ref[x_165];
+    if ((x_164 != x_167)) {
+      ok = false;
+    }
+
+    continuing {
+      let x_171 : i32 = i_1;
+      i_1 = (x_171 + 1);
+    }
+  }
+  let x_174 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_175 : f32 = f32(x_174);
+  x_GLF_color = vec4<f32>(x_175, x_175, x_175, x_175);
+  let x_177 : bool = ok;
+  if (x_177) {
+    let x_181 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_184 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_187 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_190 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_181), f32(x_184), f32(x_187), f32(x_190));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9e560db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,120 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[19];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int A[17] = (int[17])0;
+  int ref[17] = (int[17])0;
+  int a = 0;
+  int i = 0;
+  bool ok = false;
+  int i_1 = 0;
+  const int x_52 = asint(x_6[2].x);
+  const int x_54 = asint(x_6[2].x);
+  const int x_56 = asint(x_6[2].x);
+  const int x_58 = asint(x_6[2].x);
+  const int x_60 = asint(x_6[2].x);
+  const int x_62 = asint(x_6[2].x);
+  const int x_64 = asint(x_6[2].x);
+  const int x_66 = asint(x_6[2].x);
+  const int x_68 = asint(x_6[2].x);
+  const int x_70 = asint(x_6[2].x);
+  const int x_72 = asint(x_6[2].x);
+  const int x_74 = asint(x_6[2].x);
+  const int x_76 = asint(x_6[2].x);
+  const int x_78 = asint(x_6[2].x);
+  const int x_80 = asint(x_6[2].x);
+  const int x_82 = asint(x_6[2].x);
+  const int x_84 = asint(x_6[2].x);
+  const int tint_symbol_3[17] = {x_52, x_54, x_56, x_58, x_60, x_62, x_64, x_66, x_68, x_70, x_72, x_74, x_76, x_78, x_80, x_82, x_84};
+  A = tint_symbol_3;
+  const int x_87 = asint(x_6[3].x);
+  const int x_89 = asint(x_6[4].x);
+  const int x_91 = asint(x_6[5].x);
+  const int x_93 = asint(x_6[6].x);
+  const int x_95 = asint(x_6[7].x);
+  const int x_97 = asint(x_6[8].x);
+  const int x_99 = asint(x_6[9].x);
+  const int x_101 = asint(x_6[10].x);
+  const int x_103 = asint(x_6[11].x);
+  const int x_105 = asint(x_6[12].x);
+  const int x_107 = asint(x_6[13].x);
+  const int x_109 = asint(x_6[14].x);
+  const int x_111 = asint(x_6[15].x);
+  const int x_113 = asint(x_6[16].x);
+  const int x_115 = asint(x_6[17].x);
+  const int x_117 = asint(x_6[18].x);
+  const int x_119 = asint(x_6[1].x);
+  const int tint_symbol_4[17] = {x_87, x_89, x_91, x_93, x_95, x_97, x_99, x_101, x_103, x_105, x_107, x_109, x_111, x_113, x_115, x_117, x_119};
+  ref = tint_symbol_4;
+  const int x_122 = asint(x_6[2].x);
+  a = x_122;
+  const int x_124 = asint(x_6[2].x);
+  i = x_124;
+  while (true) {
+    const int x_129 = i;
+    const int x_131 = asint(x_6[1].x);
+    if ((x_129 < x_131)) {
+    } else {
+      break;
+    }
+    const int x_134 = i;
+    const int x_135 = a;
+    a = (x_135 - 1);
+    A[x_134] = x_135;
+    const int x_138 = i;
+    const int x_140 = asint(x_6[2].x);
+    const int x_142 = asint(x_6[18].x);
+    const int x_144 = i;
+    const int x_146 = asint(x_6[3].x);
+    A[clamp(x_138, x_140, x_142)] = (x_144 + x_146);
+    {
+      i = (i + 1);
+    }
+  }
+  ok = true;
+  const int x_152 = asint(x_6[2].x);
+  i_1 = x_152;
+  while (true) {
+    const int x_157 = i_1;
+    const int x_159 = asint(x_6[1].x);
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    const int x_164 = A[i_1];
+    const int x_167 = ref[i_1];
+    if ((x_164 != x_167)) {
+      ok = false;
+    }
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const int x_174 = asint(x_6[2].x);
+  const float x_175 = float(x_174);
+  x_GLF_color = float4(x_175, x_175, x_175, x_175);
+  if (ok) {
+    const int x_181 = asint(x_6[3].x);
+    const int x_184 = asint(x_6[2].x);
+    const int x_187 = asint(x_6[2].x);
+    const int x_190 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_181), float(x_184), float(x_187), float(x_190));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5993503
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.msl
@@ -0,0 +1,138 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[19];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[17];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6) {
+  tint_array_wrapper_1 A = {};
+  tint_array_wrapper_1 ref = {};
+  int a = 0;
+  int i = 0;
+  bool ok = false;
+  int i_1 = 0;
+  int const x_52 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_54 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_56 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_58 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_60 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_68 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_70 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_72 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_74 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_76 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_78 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_80 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_82 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_84 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  tint_array_wrapper_1 const tint_symbol_3 = {.arr={x_52, x_54, x_56, x_58, x_60, x_62, x_64, x_66, x_68, x_70, x_72, x_74, x_76, x_78, x_80, x_82, x_84}};
+  A = tint_symbol_3;
+  int const x_87 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_89 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_91 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_93 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_95 = x_6.x_GLF_uniform_int_values.arr[7].el;
+  int const x_97 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_99 = x_6.x_GLF_uniform_int_values.arr[9].el;
+  int const x_101 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  int const x_103 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_105 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_107 = x_6.x_GLF_uniform_int_values.arr[13].el;
+  int const x_109 = x_6.x_GLF_uniform_int_values.arr[14].el;
+  int const x_111 = x_6.x_GLF_uniform_int_values.arr[15].el;
+  int const x_113 = x_6.x_GLF_uniform_int_values.arr[16].el;
+  int const x_115 = x_6.x_GLF_uniform_int_values.arr[17].el;
+  int const x_117 = x_6.x_GLF_uniform_int_values.arr[18].el;
+  int const x_119 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  tint_array_wrapper_1 const tint_symbol_4 = {.arr={x_87, x_89, x_91, x_93, x_95, x_97, x_99, x_101, x_103, x_105, x_107, x_109, x_111, x_113, x_115, x_117, x_119}};
+  ref = tint_symbol_4;
+  int const x_122 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_122;
+  int const x_124 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_124;
+  while (true) {
+    int const x_129 = i;
+    int const x_131 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_129 < x_131)) {
+    } else {
+      break;
+    }
+    int const x_134 = i;
+    int const x_135 = a;
+    a = (x_135 - 1);
+    A.arr[x_134] = x_135;
+    int const x_138 = i;
+    int const x_140 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_142 = x_6.x_GLF_uniform_int_values.arr[18].el;
+    int const x_144 = i;
+    int const x_146 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    A.arr[clamp(x_138, x_140, x_142)] = (x_144 + x_146);
+    {
+      int const x_149 = i;
+      i = (x_149 + 1);
+    }
+  }
+  ok = true;
+  int const x_152 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i_1 = x_152;
+  while (true) {
+    int const x_157 = i_1;
+    int const x_159 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    int const x_162 = i_1;
+    int const x_164 = A.arr[x_162];
+    int const x_165 = i_1;
+    int const x_167 = ref.arr[x_165];
+    if ((x_164 != x_167)) {
+      ok = false;
+    }
+    {
+      int const x_171 = i_1;
+      i_1 = (x_171 + 1);
+    }
+  }
+  int const x_174 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_175 = float(x_174);
+  *(tint_symbol_6) = float4(x_175, x_175, x_175, x_175);
+  bool const x_177 = ok;
+  if (x_177) {
+    int const x_181 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_184 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_187 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_190 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_6) = float4(float(x_181), float(x_184), float(x_187), float(x_190));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..794d877
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,294 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 215
+; Schema: 0
+               OpCapability Shader
+        %152 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %A "A"
+               OpName %ref "ref"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %ok "ok"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_19 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_17 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_19 = OpConstant %uint 19
+%_arr_int_uint_19 = OpTypeArray %int %uint_19
+       %buf0 = OpTypeStruct %_arr_int_uint_19
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %uint_17 = OpConstant %uint 17
+%_arr_int_uint_17 = OpTypeArray %int %uint_17
+%_ptr_Function__arr_int_uint_17 = OpTypePointer Function %_arr_int_uint_17
+         %23 = OpConstantNull %_arr_int_uint_17
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+     %int_11 = OpConstant %int 11
+     %int_12 = OpConstant %int 12
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+     %int_17 = OpConstant %int 17
+     %int_18 = OpConstant %int 18
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+        %203 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_int_uint_17 Function %23
+        %ref = OpVariable %_ptr_Function__arr_int_uint_17 Function %23
+          %a = OpVariable %_ptr_Function_int Function %27
+          %i = OpVariable %_ptr_Function_int Function %27
+         %ok = OpVariable %_ptr_Function_bool Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %27
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %70 = OpLoad %int %69
+         %71 = OpCompositeConstruct %_arr_int_uint_17 %38 %40 %42 %44 %46 %48 %50 %52 %54 %56 %58 %60 %62 %64 %66 %68 %70
+               OpStore %A %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %74 = OpLoad %int %73
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %77 = OpLoad %int %76
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %80 = OpLoad %int %79
+         %82 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+         %83 = OpLoad %int %82
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+         %86 = OpLoad %int %85
+         %88 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+         %89 = OpLoad %int %88
+         %91 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+         %92 = OpLoad %int %91
+         %94 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+         %95 = OpLoad %int %94
+         %97 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+         %98 = OpLoad %int %97
+        %100 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+        %101 = OpLoad %int %100
+        %103 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_13
+        %104 = OpLoad %int %103
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_14
+        %107 = OpLoad %int %106
+        %109 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_15
+        %110 = OpLoad %int %109
+        %112 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_16
+        %113 = OpLoad %int %112
+        %115 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_17
+        %116 = OpLoad %int %115
+        %118 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_18
+        %119 = OpLoad %int %118
+        %121 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %122 = OpLoad %int %121
+        %123 = OpCompositeConstruct %_arr_int_uint_17 %74 %77 %80 %83 %86 %89 %92 %95 %98 %101 %104 %107 %110 %113 %116 %119 %122
+               OpStore %ref %123
+        %124 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %125 = OpLoad %int %124
+               OpStore %a %125
+        %126 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %127 = OpLoad %int %126
+               OpStore %i %127
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %132 = OpLoad %int %i
+        %133 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %134 = OpLoad %int %133
+        %135 = OpSLessThan %bool %132 %134
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %138
+        %137 = OpLabel
+               OpBranch %136
+        %138 = OpLabel
+               OpBranch %129
+        %136 = OpLabel
+        %139 = OpLoad %int %i
+        %140 = OpLoad %int %a
+        %141 = OpISub %int %140 %int_1
+               OpStore %a %141
+        %142 = OpAccessChain %_ptr_Function_int %A %139
+               OpStore %142 %140
+        %143 = OpLoad %int %i
+        %144 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %145 = OpLoad %int %144
+        %146 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_18
+        %147 = OpLoad %int %146
+        %148 = OpLoad %int %i
+        %149 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %150 = OpLoad %int %149
+        %151 = OpExtInst %int %152 SClamp %143 %145 %147
+        %153 = OpAccessChain %_ptr_Function_int %A %151
+        %154 = OpIAdd %int %148 %150
+               OpStore %153 %154
+               OpBranch %130
+        %130 = OpLabel
+        %155 = OpLoad %int %i
+        %156 = OpIAdd %int %155 %int_1
+               OpStore %i %156
+               OpBranch %128
+        %129 = OpLabel
+               OpStore %ok %true
+        %158 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %159 = OpLoad %int %158
+               OpStore %i_1 %159
+               OpBranch %160
+        %160 = OpLabel
+               OpLoopMerge %161 %162 None
+               OpBranch %163
+        %163 = OpLabel
+        %164 = OpLoad %int %i_1
+        %165 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %164 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %161
+        %168 = OpLabel
+        %171 = OpLoad %int %i_1
+        %172 = OpAccessChain %_ptr_Function_int %A %171
+        %173 = OpLoad %int %172
+        %174 = OpLoad %int %i_1
+        %175 = OpAccessChain %_ptr_Function_int %ref %174
+        %176 = OpLoad %int %175
+        %177 = OpINotEqual %bool %173 %176
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %178
+        %179 = OpLabel
+               OpStore %ok %false
+               OpBranch %178
+        %178 = OpLabel
+               OpBranch %162
+        %162 = OpLabel
+        %181 = OpLoad %int %i_1
+        %182 = OpIAdd %int %181 %int_1
+               OpStore %i_1 %182
+               OpBranch %160
+        %161 = OpLabel
+        %183 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %184 = OpLoad %int %183
+        %185 = OpConvertSToF %float %184
+        %186 = OpCompositeConstruct %v4float %185 %185 %185 %185
+               OpStore %x_GLF_color %186
+        %187 = OpLoad %bool %ok
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %188
+        %189 = OpLabel
+        %190 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %191 = OpLoad %int %190
+        %192 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %193 = OpLoad %int %192
+        %194 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %195 = OpLoad %int %194
+        %196 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %197 = OpLoad %int %196
+        %198 = OpConvertSToF %float %191
+        %199 = OpConvertSToF %float %193
+        %200 = OpConvertSToF %float %195
+        %201 = OpConvertSToF %float %197
+        %202 = OpCompositeConstruct %v4float %198 %199 %200 %201
+               OpStore %x_GLF_color %202
+               OpBranch %188
+        %188 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %203
+%tint_symbol = OpFunctionParameter %main_out
+        %207 = OpLabel
+        %208 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %208
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %210 = OpLabel
+        %211 = OpFunctionCall %void %main_1
+        %213 = OpLoad %v4float %x_GLF_color
+        %214 = OpCompositeConstruct %main_out %213
+        %212 = OpFunctionCall %void %tint_symbol_2 %214
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..464bdec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,128 @@
+type Arr = [[stride(16)]] array<i32, 19>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<i32, 17>;
+  var ref : array<i32, 17>;
+  var a : i32;
+  var i : i32;
+  var ok : bool;
+  var i_1 : i32;
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_54 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_60 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_68 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_70 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_72 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_74 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_76 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_78 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_80 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_82 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[2];
+  A = array<i32, 17>(x_52, x_54, x_56, x_58, x_60, x_62, x_64, x_66, x_68, x_70, x_72, x_74, x_76, x_78, x_80, x_82, x_84);
+  let x_87 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_89 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_91 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_93 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_95 : i32 = x_6.x_GLF_uniform_int_values[7];
+  let x_97 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_99 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_101 : i32 = x_6.x_GLF_uniform_int_values[10];
+  let x_103 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_105 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_107 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_109 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_111 : i32 = x_6.x_GLF_uniform_int_values[15];
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[16];
+  let x_115 : i32 = x_6.x_GLF_uniform_int_values[17];
+  let x_117 : i32 = x_6.x_GLF_uniform_int_values[18];
+  let x_119 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref = array<i32, 17>(x_87, x_89, x_91, x_93, x_95, x_97, x_99, x_101, x_103, x_105, x_107, x_109, x_111, x_113, x_115, x_117, x_119);
+  let x_122 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_122;
+  let x_124 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_124;
+  loop {
+    let x_129 : i32 = i;
+    let x_131 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_129 < x_131)) {
+    } else {
+      break;
+    }
+    let x_134 : i32 = i;
+    let x_135 : i32 = a;
+    a = (x_135 - 1);
+    A[x_134] = x_135;
+    let x_138 : i32 = i;
+    let x_140 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_142 : i32 = x_6.x_GLF_uniform_int_values[18];
+    let x_144 : i32 = i;
+    let x_146 : i32 = x_6.x_GLF_uniform_int_values[3];
+    A[clamp(x_138, x_140, x_142)] = (x_144 + x_146);
+
+    continuing {
+      let x_149 : i32 = i;
+      i = (x_149 + 1);
+    }
+  }
+  ok = true;
+  let x_152 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i_1 = x_152;
+  loop {
+    let x_157 : i32 = i_1;
+    let x_159 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    let x_162 : i32 = i_1;
+    let x_164 : i32 = A[x_162];
+    let x_165 : i32 = i_1;
+    let x_167 : i32 = ref[x_165];
+    if ((x_164 != x_167)) {
+      ok = false;
+    }
+
+    continuing {
+      let x_171 : i32 = i_1;
+      i_1 = (x_171 + 1);
+    }
+  }
+  let x_174 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_175 : f32 = f32(x_174);
+  x_GLF_color = vec4<f32>(x_175, x_175, x_175, x_175);
+  let x_177 : bool = ok;
+  if (x_177) {
+    let x_181 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_184 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_187 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_190 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_181), f32(x_184), f32(x_187), f32(x_190));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm
new file mode 100644
index 0000000..5d8225e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm
@@ -0,0 +1,136 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %v1 "v1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %a "a"
+               OpName %indexable "indexable"
+               OpName %indexable_0 "indexable"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+%_arr_v4float_uint_2 = OpTypeArray %v4float %uint_2
+    %float_1 = OpConstant %float 1
+         %34 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %37 = OpConstantComposite %_arr_v4float_uint_2 %34 %36
+      %int_2 = OpConstant %int 2
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function__arr_v4float_uint_2 = OpTypePointer Function %_arr_v4float_uint_2
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %16
+         %43 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v4float Function
+          %i = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_2 Function
+%indexable_0 = OpVariable %_ptr_Function__arr_v4float_uint_2 Function
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpCompositeConstruct %v4float %45 %45 %45 %45
+               OpStore %v1 %46
+         %47 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %48 = OpLoad %int %47
+               OpStore %i %48
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpSLessThan %bool %53 %55
+               OpBranchConditional %56 %57 %50
+         %57 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %62 = OpLoad %int %61
+         %63 = OpExtInst %int %1 SClamp %58 %60 %62
+               OpStore %indexable %37
+         %64 = OpAccessChain %_ptr_Function_float %indexable %63 %uint_0
+         %65 = OpLoad %float %64
+         %66 = OpConvertFToS %int %65
+               OpStore %a %66
+         %67 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %74 = OpLoad %float %73
+         %75 = OpCompositeConstruct %v4float %68 %70 %72 %74
+         %76 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %83 = OpLoad %float %82
+         %84 = OpCompositeConstruct %v4float %77 %79 %81 %83
+         %85 = OpCompositeConstruct %_arr_v4float_uint_2 %75 %84
+         %86 = OpLoad %int %a
+               OpStore %indexable_0 %85
+         %87 = OpAccessChain %_ptr_Function_v4float %indexable_0 %86
+         %88 = OpLoad %v4float %87
+               OpStore %v1 %88
+               OpBranch %51
+         %51 = OpLabel
+         %89 = OpLoad %int %i
+         %90 = OpIAdd %int %89 %int_1
+               OpStore %i %90
+               OpBranch %49
+         %50 = OpLabel
+         %91 = OpLoad %v4float %v1
+               OpStore %_GLF_color %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d7b62c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  int a = 0;
+  float4 indexable[2] = (float4[2])0;
+  float4 indexable_1[2] = (float4[2])0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float4(x_45, x_45, x_45, x_45);
+  const int x_48 = asint(x_9[1].x);
+  i = x_48;
+  while (true) {
+    const int x_53 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    const int x_58 = i;
+    const int x_60 = asint(x_9[1].x);
+    const int x_62 = asint(x_9[2].x);
+    const float4 tint_symbol_4[2] = {float4(1.0f, 1.0f, 1.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 0.0f)};
+    indexable = tint_symbol_4;
+    const float x_65 = indexable[clamp(x_58, x_60, x_62)].x;
+    a = int(x_65);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_70 = asfloat(x_6[1].x);
+    const float x_72 = asfloat(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_74 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_77 = asfloat(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_79 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_81 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const float x_83 = asfloat(x_6[1].x);
+    const int x_86 = a;
+    const float4 tint_symbol_5[2] = {float4(x_68, x_70, x_72, x_74), float4(x_77, x_79, x_81, x_83)};
+    indexable_1 = tint_symbol_5;
+    const float4 x_88 = indexable_1[x_86];
+    v1 = x_88;
+    {
+      i = (i + 1);
+    }
+  }
+  x_GLF_color = v1;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_6 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f8f8420
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.msl
@@ -0,0 +1,88 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float4 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_6) {
+  float4 v1 = 0.0f;
+  int i = 0;
+  int a = 0;
+  tint_array_wrapper_2 indexable = {};
+  tint_array_wrapper_2 indexable_1 = {};
+  float const x_45 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float4(x_45, x_45, x_45, x_45);
+  int const x_48 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_48;
+  while (true) {
+    int const x_53 = i;
+    int const x_55 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    int const x_58 = i;
+    int const x_60 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_62 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    tint_array_wrapper_2 const tint_symbol_3 = {.arr={float4(1.0f, 1.0f, 1.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 0.0f)}};
+    indexable = tint_symbol_3;
+    float const x_65 = indexable.arr[clamp(x_58, x_60, x_62)].x;
+    a = int(x_65);
+    float const x_68 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_70 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_72 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_74 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_77 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_79 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_81 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_83 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    int const x_86 = a;
+    tint_array_wrapper_2 const tint_symbol_4 = {.arr={float4(x_68, x_70, x_72, x_74), float4(x_77, x_79, x_81, x_83)}};
+    indexable_1 = tint_symbol_4;
+    float4 const x_88 = indexable_1.arr[x_86];
+    v1 = x_88;
+    {
+      int const x_89 = i;
+      i = (x_89 + 1);
+    }
+  }
+  float4 const x_91 = v1;
+  *(tint_symbol_6) = x_91;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6051176
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,177 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 111
+; Schema: 0
+               OpCapability Shader
+         %69 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v4float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+%_arr_v4float_uint_2 = OpTypeArray %v4float %uint_2
+%_ptr_Function__arr_v4float_uint_2 = OpTypePointer Function %_arr_v4float_uint_2
+         %33 = OpConstantNull %_arr_v4float_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+         %64 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %66 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %67 = OpConstantComposite %_arr_v4float_uint_2 %64 %66
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+         %99 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+          %i = OpVariable %_ptr_Function_int Function %28
+          %a = OpVariable %_ptr_Function_int Function %28
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_2 Function %33
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_2 Function %33
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpCompositeConstruct %v4float %39 %39 %39 %39
+               OpStore %v1 %40
+         %43 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %44 = OpLoad %int %43
+               OpStore %i %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %49 %51
+               OpSelectionMerge %54 None
+               OpBranchConditional %52 %55 %56
+         %55 = OpLabel
+               OpBranch %54
+         %56 = OpLabel
+               OpBranch %46
+         %54 = OpLabel
+         %57 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %59 = OpLoad %int %58
+         %61 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %62 = OpLoad %int %61
+               OpStore %indexable %67
+         %68 = OpExtInst %int %69 SClamp %57 %59 %62
+         %71 = OpAccessChain %_ptr_Function_float %indexable %68 %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpConvertFToS %int %72
+               OpStore %a %73
+         %74 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %83 = OpLoad %float %82
+         %84 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %89 = OpLoad %float %88
+         %90 = OpLoad %int %a
+         %91 = OpCompositeConstruct %v4float %75 %77 %79 %81
+         %92 = OpCompositeConstruct %v4float %83 %85 %87 %89
+         %93 = OpCompositeConstruct %_arr_v4float_uint_2 %91 %92
+               OpStore %indexable_1 %93
+         %94 = OpAccessChain %_ptr_Function_v4float %indexable_1 %90
+         %95 = OpLoad %v4float %94
+               OpStore %v1 %95
+               OpBranch %47
+         %47 = OpLabel
+         %96 = OpLoad %int %i
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %i %97
+               OpBranch %45
+         %46 = OpLabel
+         %98 = OpLoad %v4float %v1
+               OpStore %x_GLF_color %98
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %99
+%tint_symbol = OpFunctionParameter %main_out
+        %103 = OpLabel
+        %104 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %104
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %106 = OpLabel
+        %107 = OpFunctionCall %void %main_1
+        %109 = OpLoad %v4float %x_GLF_color
+        %110 = OpCompositeConstruct %main_out %109
+        %108 = OpFunctionCall %void %tint_symbol_2 %110
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..856399f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,76 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec4<f32>;
+  var i : i32;
+  var a : i32;
+  var indexable : array<vec4<f32>, 2>;
+  var indexable_1 : array<vec4<f32>, 2>;
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec4<f32>(x_45, x_45, x_45, x_45);
+  let x_48 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_48;
+  loop {
+    let x_53 : i32 = i;
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    let x_58 : i32 = i;
+    let x_60 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_9.x_GLF_uniform_int_values[2];
+    indexable = array<vec4<f32>, 2>(vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+    let x_65 : f32 = indexable[clamp(x_58, x_60, x_62)].x;
+    a = i32(x_65);
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_70 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_72 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_74 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_77 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_79 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_81 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_83 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_86 : i32 = a;
+    indexable_1 = array<vec4<f32>, 2>(vec4<f32>(x_68, x_70, x_72, x_74), vec4<f32>(x_77, x_79, x_81, x_83));
+    let x_88 : vec4<f32> = indexable_1[x_86];
+    v1 = x_88;
+
+    continuing {
+      let x_89 : i32 = i;
+      i = (x_89 + 1);
+    }
+  }
+  let x_91 : vec4<f32> = v1;
+  x_GLF_color = x_91;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
new file mode 100644
index 0000000..856399f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
@@ -0,0 +1,76 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec4<f32>;
+  var i : i32;
+  var a : i32;
+  var indexable : array<vec4<f32>, 2>;
+  var indexable_1 : array<vec4<f32>, 2>;
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec4<f32>(x_45, x_45, x_45, x_45);
+  let x_48 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_48;
+  loop {
+    let x_53 : i32 = i;
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    let x_58 : i32 = i;
+    let x_60 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_9.x_GLF_uniform_int_values[2];
+    indexable = array<vec4<f32>, 2>(vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+    let x_65 : f32 = indexable[clamp(x_58, x_60, x_62)].x;
+    a = i32(x_65);
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_70 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_72 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_74 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_77 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_79 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_81 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_83 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_86 : i32 = a;
+    indexable_1 = array<vec4<f32>, 2>(vec4<f32>(x_68, x_70, x_72, x_74), vec4<f32>(x_77, x_79, x_81, x_83));
+    let x_88 : vec4<f32> = indexable_1[x_86];
+    v1 = x_88;
+
+    continuing {
+      let x_89 : i32 = i;
+      i = (x_89 + 1);
+    }
+  }
+  let x_91 : vec4<f32> = v1;
+  x_GLF_color = x_91;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d7b62c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  int a = 0;
+  float4 indexable[2] = (float4[2])0;
+  float4 indexable_1[2] = (float4[2])0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  v1 = float4(x_45, x_45, x_45, x_45);
+  const int x_48 = asint(x_9[1].x);
+  i = x_48;
+  while (true) {
+    const int x_53 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    const int x_58 = i;
+    const int x_60 = asint(x_9[1].x);
+    const int x_62 = asint(x_9[2].x);
+    const float4 tint_symbol_4[2] = {float4(1.0f, 1.0f, 1.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 0.0f)};
+    indexable = tint_symbol_4;
+    const float x_65 = indexable[clamp(x_58, x_60, x_62)].x;
+    a = int(x_65);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_68 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_70 = asfloat(x_6[1].x);
+    const float x_72 = asfloat(x_6[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_74 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_77 = asfloat(x_6[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_79 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_81 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const float x_83 = asfloat(x_6[1].x);
+    const int x_86 = a;
+    const float4 tint_symbol_5[2] = {float4(x_68, x_70, x_72, x_74), float4(x_77, x_79, x_81, x_83)};
+    indexable_1 = tint_symbol_5;
+    const float4 x_88 = indexable_1[x_86];
+    v1 = x_88;
+    {
+      i = (i + 1);
+    }
+  }
+  x_GLF_color = v1;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_6 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f8f8420
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.msl
@@ -0,0 +1,88 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float4 arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_6) {
+  float4 v1 = 0.0f;
+  int i = 0;
+  int a = 0;
+  tint_array_wrapper_2 indexable = {};
+  tint_array_wrapper_2 indexable_1 = {};
+  float const x_45 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  v1 = float4(x_45, x_45, x_45, x_45);
+  int const x_48 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  i = x_48;
+  while (true) {
+    int const x_53 = i;
+    int const x_55 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    int const x_58 = i;
+    int const x_60 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_62 = x_9.x_GLF_uniform_int_values.arr[2].el;
+    tint_array_wrapper_2 const tint_symbol_3 = {.arr={float4(1.0f, 1.0f, 1.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 0.0f)}};
+    indexable = tint_symbol_3;
+    float const x_65 = indexable.arr[clamp(x_58, x_60, x_62)].x;
+    a = int(x_65);
+    float const x_68 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_70 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_72 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_74 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_77 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    float const x_79 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_81 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    float const x_83 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    int const x_86 = a;
+    tint_array_wrapper_2 const tint_symbol_4 = {.arr={float4(x_68, x_70, x_72, x_74), float4(x_77, x_79, x_81, x_83)}};
+    indexable_1 = tint_symbol_4;
+    float4 const x_88 = indexable_1.arr[x_86];
+    v1 = x_88;
+    {
+      int const x_89 = i;
+      i = (x_89 + 1);
+    }
+  }
+  float4 const x_91 = v1;
+  *(tint_symbol_6) = x_91;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6051176
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,177 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 111
+; Schema: 0
+               OpCapability Shader
+         %69 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v4float_uint_2 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+%_arr_v4float_uint_2 = OpTypeArray %v4float %uint_2
+%_ptr_Function__arr_v4float_uint_2 = OpTypePointer Function %_arr_v4float_uint_2
+         %33 = OpConstantNull %_arr_v4float_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+         %64 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %66 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %67 = OpConstantComposite %_arr_v4float_uint_2 %64 %66
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+         %99 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v4float Function %17
+          %i = OpVariable %_ptr_Function_int Function %28
+          %a = OpVariable %_ptr_Function_int Function %28
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_2 Function %33
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_2 Function %33
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpCompositeConstruct %v4float %39 %39 %39 %39
+               OpStore %v1 %40
+         %43 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %44 = OpLoad %int %43
+               OpStore %i %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %49 %51
+               OpSelectionMerge %54 None
+               OpBranchConditional %52 %55 %56
+         %55 = OpLabel
+               OpBranch %54
+         %56 = OpLabel
+               OpBranch %46
+         %54 = OpLabel
+         %57 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %59 = OpLoad %int %58
+         %61 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %62 = OpLoad %int %61
+               OpStore %indexable %67
+         %68 = OpExtInst %int %69 SClamp %57 %59 %62
+         %71 = OpAccessChain %_ptr_Function_float %indexable %68 %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpConvertFToS %int %72
+               OpStore %a %73
+         %74 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %83 = OpLoad %float %82
+         %84 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %89 = OpLoad %float %88
+         %90 = OpLoad %int %a
+         %91 = OpCompositeConstruct %v4float %75 %77 %79 %81
+         %92 = OpCompositeConstruct %v4float %83 %85 %87 %89
+         %93 = OpCompositeConstruct %_arr_v4float_uint_2 %91 %92
+               OpStore %indexable_1 %93
+         %94 = OpAccessChain %_ptr_Function_v4float %indexable_1 %90
+         %95 = OpLoad %v4float %94
+               OpStore %v1 %95
+               OpBranch %47
+         %47 = OpLabel
+         %96 = OpLoad %int %i
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %i %97
+               OpBranch %45
+         %46 = OpLabel
+         %98 = OpLoad %v4float %v1
+               OpStore %x_GLF_color %98
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %99
+%tint_symbol = OpFunctionParameter %main_out
+        %103 = OpLabel
+        %104 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %104
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %106 = OpLabel
+        %107 = OpFunctionCall %void %main_1
+        %109 = OpLoad %v4float %x_GLF_color
+        %110 = OpCompositeConstruct %main_out %109
+        %108 = OpFunctionCall %void %tint_symbol_2 %110
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..856399f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,76 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec4<f32>;
+  var i : i32;
+  var a : i32;
+  var indexable : array<vec4<f32>, 2>;
+  var indexable_1 : array<vec4<f32>, 2>;
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[0];
+  v1 = vec4<f32>(x_45, x_45, x_45, x_45);
+  let x_48 : i32 = x_9.x_GLF_uniform_int_values[1];
+  i = x_48;
+  loop {
+    let x_53 : i32 = i;
+    let x_55 : i32 = x_9.x_GLF_uniform_int_values[0];
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    let x_58 : i32 = i;
+    let x_60 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_9.x_GLF_uniform_int_values[2];
+    indexable = array<vec4<f32>, 2>(vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+    let x_65 : f32 = indexable[clamp(x_58, x_60, x_62)].x;
+    a = i32(x_65);
+    let x_68 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_70 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_72 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_74 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_77 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_79 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_81 : f32 = x_6.x_GLF_uniform_float_values[0];
+    let x_83 : f32 = x_6.x_GLF_uniform_float_values[1];
+    let x_86 : i32 = a;
+    indexable_1 = array<vec4<f32>, 2>(vec4<f32>(x_68, x_70, x_72, x_74), vec4<f32>(x_77, x_79, x_81, x_83));
+    let x_88 : vec4<f32> = indexable_1[x_86];
+    v1 = x_88;
+
+    continuing {
+      let x_89 : i32 = i;
+      i = (x_89 + 1);
+    }
+  }
+  let x_91 : vec4<f32> = v1;
+  x_GLF_color = x_91;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm
new file mode 100644
index 0000000..97aab23
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm
@@ -0,0 +1,135 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+%float_0_200000003 = OpConstant %float 0.200000003
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %12
+         %29 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+         %30 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %31 = OpLoad %float %30
+         %32 = OpCompositeConstruct %v4float %31 %31 %31 %31
+               OpStore %_GLF_color %32
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %34 = OpLoad %float %33
+               OpStore %a %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpFDiv %float %40 %float_0_200000003
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpFOrdLessThan %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+               OpReturn
+         %45 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %48 = OpLoad %float %47
+         %49 = OpFDiv %float %48 %float_0_200000003
+         %50 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpFOrdLessThan %bool %49 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpReturn
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %56 = OpLoad %float %55
+         %57 = OpFDiv %float %56 %float_0_200000003
+         %58 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpFOrdLessThan %bool %57 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpReturn
+         %61 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpFDiv %float %64 %float_0_200000003
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %67 = OpLoad %float %66
+         %68 = OpFOrdLessThan %bool %65 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+               OpReturn
+         %71 = OpLabel
+               OpStore %a %float_0
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %72 = OpLoad %float %a
+         %73 = OpFUnordNotEqual %bool %72 %float_0
+               OpBranchConditional %73 %35 %36
+         %36 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpCompositeConstruct %v4float %76 %79 %82 %85
+               OpStore %_GLF_color %86
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ecfd0d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,76 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  float a = 0.0f;
+  const float x_31 = asfloat(x_5[1].x);
+  x_GLF_color = float4(x_31, x_31, x_31, x_31);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
+  a = x_34;
+  while (true) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_40 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_43 = asfloat(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if (((x_40 / 0.200000003f) < x_43)) {
+      return;
+    }
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_48 = asfloat(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_51 = asfloat(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    if (((x_48 / 0.200000003f) < x_51)) {
+      return;
+    }
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_56 = asfloat(x_5[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const float x_59 = asfloat(x_5[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    if (((x_56 / 0.200000003f) < x_59)) {
+      return;
+    }
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_5[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const float x_67 = asfloat(x_5[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    if (((x_64 / 0.200000003f) < x_67)) {
+      return;
+    } else {
+      a = 0.0f;
+    }
+    {
+      if (!((a == 0.0f))) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_75 = asint(x_8[1].x);
+  const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+  const int x_78 = asint(x_8[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+  const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+  const int x_81 = asint(x_8[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+  const int x_84 = asint(x_8[1].x);
+  x_GLF_color = float4(float(x_75), float(x_78), float(x_81), float(x_84));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e8baf09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float const x_31 = x_5.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_4) = float4(x_31, x_31, x_31, x_31);
+  float const x_34 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  a = x_34;
+  while (true) {
+    float const x_40 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_43 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    if (((x_40 / 0.200000003f) < x_43)) {
+      return;
+    }
+    float const x_48 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_51 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    if (((x_48 / 0.200000003f) < x_51)) {
+      return;
+    }
+    float const x_56 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_59 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    if (((x_56 / 0.200000003f) < x_59)) {
+      return;
+    }
+    float const x_64 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_67 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    if (((x_64 / 0.200000003f) < x_67)) {
+      return;
+    } else {
+      a = 0.0f;
+    }
+    {
+      float const x_72 = a;
+      if (!((x_72 == 0.0f))) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_75 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_78 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_81 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_84 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  *(tint_symbol_4) = float4(float(x_75), float(x_78), float(x_81), float(x_84));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..caa85e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,182 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+%float_0_200000003 = OpConstant %float 0.200000003
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %95 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %25
+         %29 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %30 = OpLoad %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %x_GLF_color %31
+         %33 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %34 = OpLoad %float %33
+               OpStore %a %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %44 = OpFDiv %float %40 %float_0_200000003
+         %45 = OpFOrdLessThan %bool %44 %42
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %47
+         %48 = OpLabel
+               OpReturn
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %52 = OpLoad %float %51
+         %53 = OpFDiv %float %50 %float_0_200000003
+         %54 = OpFOrdLessThan %bool %53 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpReturn
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %60 = OpLoad %float %59
+         %61 = OpFDiv %float %58 %float_0_200000003
+         %62 = OpFOrdLessThan %bool %61 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+               OpReturn
+         %63 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpFDiv %float %66 %float_0_200000003
+         %70 = OpFOrdLessThan %bool %69 %68
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpReturn
+         %73 = OpLabel
+               OpStore %a %float_0
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %75 = OpLoad %float %a
+         %77 = OpFOrdEqual %bool %75 %float_0
+         %76 = OpLogicalNot %bool %77
+               OpSelectionMerge %78 None
+               OpBranchConditional %76 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %36
+         %78 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %83
+         %91 = OpConvertSToF %float %85
+         %92 = OpConvertSToF %float %87
+         %93 = OpConvertSToF %float %89
+         %94 = OpCompositeConstruct %v4float %90 %91 %92 %93
+               OpStore %x_GLF_color %94
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %95
+%tint_symbol = OpFunctionParameter %main_out
+         %99 = OpLabel
+        %100 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %100
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %102 = OpLabel
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_2 %106
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 37[%37] is not post dominated by the back-edge block 78[%78]
+  %78 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..84258b8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,76 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_31 : f32 = x_5.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_31, x_31, x_31, x_31);
+  let x_34 : f32 = x_5.x_GLF_uniform_float_values[0];
+  a = x_34;
+  loop {
+    let x_40 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_43 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_40 / 0.200000003) < x_43)) {
+      return;
+    }
+    let x_48 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_51 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_48 / 0.200000003) < x_51)) {
+      return;
+    }
+    let x_56 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_59 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_56 / 0.200000003) < x_59)) {
+      return;
+    }
+    let x_64 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_67 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_64 / 0.200000003) < x_67)) {
+      return;
+    } else {
+      a = 0.0;
+    }
+
+    continuing {
+      let x_72 : f32 = a;
+      if (!((x_72 == 0.0))) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_75 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_78 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_81 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_84 : i32 = x_8.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_75), f32(x_78), f32(x_81), f32(x_84));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
new file mode 100644
index 0000000..84258b8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
@@ -0,0 +1,76 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_31 : f32 = x_5.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_31, x_31, x_31, x_31);
+  let x_34 : f32 = x_5.x_GLF_uniform_float_values[0];
+  a = x_34;
+  loop {
+    let x_40 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_43 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_40 / 0.200000003) < x_43)) {
+      return;
+    }
+    let x_48 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_51 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_48 / 0.200000003) < x_51)) {
+      return;
+    }
+    let x_56 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_59 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_56 / 0.200000003) < x_59)) {
+      return;
+    }
+    let x_64 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_67 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_64 / 0.200000003) < x_67)) {
+      return;
+    } else {
+      a = 0.0;
+    }
+
+    continuing {
+      let x_72 : f32 = a;
+      if (!((x_72 == 0.0))) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_75 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_78 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_81 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_84 : i32 = x_8.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_75), f32(x_78), f32(x_81), f32(x_84));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ecfd0d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,76 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  float a = 0.0f;
+  const float x_31 = asfloat(x_5[1].x);
+  x_GLF_color = float4(x_31, x_31, x_31, x_31);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
+  a = x_34;
+  while (true) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_40 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_43 = asfloat(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if (((x_40 / 0.200000003f) < x_43)) {
+      return;
+    }
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const float x_48 = asfloat(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_51 = asfloat(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    if (((x_48 / 0.200000003f) < x_51)) {
+      return;
+    }
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_56 = asfloat(x_5[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const float x_59 = asfloat(x_5[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    if (((x_56 / 0.200000003f) < x_59)) {
+      return;
+    }
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const float x_64 = asfloat(x_5[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const float x_67 = asfloat(x_5[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    if (((x_64 / 0.200000003f) < x_67)) {
+      return;
+    } else {
+      a = 0.0f;
+    }
+    {
+      if (!((a == 0.0f))) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_75 = asint(x_8[1].x);
+  const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+  const int x_78 = asint(x_8[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+  const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+  const int x_81 = asint(x_8[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+  const int x_84 = asint(x_8[1].x);
+  x_GLF_color = float4(float(x_75), float(x_78), float(x_81), float(x_84));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e8baf09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float const x_31 = x_5.x_GLF_uniform_float_values.arr[1].el;
+  *(tint_symbol_4) = float4(x_31, x_31, x_31, x_31);
+  float const x_34 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  a = x_34;
+  while (true) {
+    float const x_40 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_43 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    if (((x_40 / 0.200000003f) < x_43)) {
+      return;
+    }
+    float const x_48 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_51 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    if (((x_48 / 0.200000003f) < x_51)) {
+      return;
+    }
+    float const x_56 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_59 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    if (((x_56 / 0.200000003f) < x_59)) {
+      return;
+    }
+    float const x_64 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    float const x_67 = x_5.x_GLF_uniform_float_values.arr[0].el;
+    if (((x_64 / 0.200000003f) < x_67)) {
+      return;
+    } else {
+      a = 0.0f;
+    }
+    {
+      float const x_72 = a;
+      if (!((x_72 == 0.0f))) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_75 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  int const x_78 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_81 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_84 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  *(tint_symbol_4) = float4(float(x_75), float(x_78), float(x_81), float(x_84));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..caa85e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,182 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 107
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+%float_0_200000003 = OpConstant %float 0.200000003
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %95 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %25
+         %29 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %30 = OpLoad %float %29
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %x_GLF_color %31
+         %33 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %34 = OpLoad %float %33
+               OpStore %a %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %44 = OpFDiv %float %40 %float_0_200000003
+         %45 = OpFOrdLessThan %bool %44 %42
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %47
+         %48 = OpLabel
+               OpReturn
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %52 = OpLoad %float %51
+         %53 = OpFDiv %float %50 %float_0_200000003
+         %54 = OpFOrdLessThan %bool %53 %52
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpReturn
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %60 = OpLoad %float %59
+         %61 = OpFDiv %float %58 %float_0_200000003
+         %62 = OpFOrdLessThan %bool %61 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+               OpReturn
+         %63 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpFDiv %float %66 %float_0_200000003
+         %70 = OpFOrdLessThan %bool %69 %68
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpReturn
+         %73 = OpLabel
+               OpStore %a %float_0
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %75 = OpLoad %float %a
+         %77 = OpFOrdEqual %bool %75 %float_0
+         %76 = OpLogicalNot %bool %77
+               OpSelectionMerge %78 None
+               OpBranchConditional %76 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %36
+         %78 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %83
+         %91 = OpConvertSToF %float %85
+         %92 = OpConvertSToF %float %87
+         %93 = OpConvertSToF %float %89
+         %94 = OpCompositeConstruct %v4float %90 %91 %92 %93
+               OpStore %x_GLF_color %94
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %95
+%tint_symbol = OpFunctionParameter %main_out
+         %99 = OpLabel
+        %100 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %100
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %102 = OpLabel
+        %103 = OpFunctionCall %void %main_1
+        %105 = OpLoad %v4float %x_GLF_color
+        %106 = OpCompositeConstruct %main_out %105
+        %104 = OpFunctionCall %void %tint_symbol_2 %106
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 37[%37] is not post dominated by the back-edge block 78[%78]
+  %78 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..84258b8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,76 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_31 : f32 = x_5.x_GLF_uniform_float_values[1];
+  x_GLF_color = vec4<f32>(x_31, x_31, x_31, x_31);
+  let x_34 : f32 = x_5.x_GLF_uniform_float_values[0];
+  a = x_34;
+  loop {
+    let x_40 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_43 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_40 / 0.200000003) < x_43)) {
+      return;
+    }
+    let x_48 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_51 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_48 / 0.200000003) < x_51)) {
+      return;
+    }
+    let x_56 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_59 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_56 / 0.200000003) < x_59)) {
+      return;
+    }
+    let x_64 : f32 = x_5.x_GLF_uniform_float_values[0];
+    let x_67 : f32 = x_5.x_GLF_uniform_float_values[0];
+    if (((x_64 / 0.200000003) < x_67)) {
+      return;
+    } else {
+      a = 0.0;
+    }
+
+    continuing {
+      let x_72 : f32 = a;
+      if (!((x_72 == 0.0))) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_75 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_78 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_81 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_84 : i32 = x_8.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_75), f32(x_78), f32(x_81), f32(x_84));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm
new file mode 100644
index 0000000..2047855
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm
@@ -0,0 +1,144 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %M1 "M1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %c "c"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf0 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %39 = OpLabel
+         %M1 = OpVariable %_ptr_Function_mat2v2float Function
+          %a = OpVariable %_ptr_Function_float Function
+          %c = OpVariable %_ptr_Function_int Function
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_4
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %v2float %41 %43
+         %49 = OpCompositeConstruct %v2float %45 %47
+         %50 = OpCompositeConstruct %mat2v2float %48 %49
+               OpStore %M1 %50
+         %51 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %52 = OpLoad %float %51
+               OpStore %a %52
+         %53 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %54 = OpLoad %int %53
+               OpStore %c %54
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %c
+         %60 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpSLessThan %bool %59 %61
+               OpBranchConditional %62 %63 %56
+         %63 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %65 = OpLoad %int %64
+         %66 = OpLoad %int %c
+         %67 = OpNot %int %66
+         %68 = OpExtInst %int %1 SClamp %67 %int_0 %int_1
+         %69 = OpAccessChain %_ptr_Function_float %M1 %65 %68
+         %70 = OpLoad %float %69
+         %71 = OpLoad %float %a
+         %72 = OpFAdd %float %71 %70
+               OpStore %a %72
+               OpBranch %57
+         %57 = OpLabel
+         %73 = OpLoad %int %c
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %c %74
+               OpBranch %55
+         %56 = OpLabel
+         %75 = OpLoad %float %a
+         %76 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %77 = OpLoad %float %76
+         %78 = OpFOrdEqual %bool %75 %77
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %83
+         %85 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %89
+         %91 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %92 = OpLoad %int %91
+         %93 = OpConvertSToF %float %92
+         %94 = OpCompositeConstruct %v4float %84 %87 %90 %93
+               OpStore %_GLF_color %94
+               OpBranch %79
+         %81 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %96 = OpLoad %int %95
+         %97 = OpConvertSToF %float %96
+         %98 = OpCompositeConstruct %v4float %97 %97 %97 %97
+               OpStore %_GLF_color %98
+               OpBranch %79
+         %79 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e028935
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,66 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 M1 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float a = 0.0f;
+  int c = 0;
+  const float x_41 = asfloat(x_6[1].x);
+  const float x_43 = asfloat(x_6[2].x);
+  const float x_45 = asfloat(x_6[3].x);
+  const float x_47 = asfloat(x_6[4].x);
+  M1 = float2x2(float2(x_41, x_43), float2(x_45, x_47));
+  const float x_52 = asfloat(x_6[1].x);
+  a = x_52;
+  const int x_54 = asint(x_10[1].x);
+  c = x_54;
+  while (true) {
+    const int x_59 = c;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_61 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_59 < x_61)) {
+    } else {
+      break;
+    }
+    const int x_65 = asint(x_10[2].x);
+    const float x_70 = M1[x_65][clamp(~(c), 0, 1)];
+    a = (a + x_70);
+    {
+      c = (c + 1);
+    }
+  }
+  const float x_75 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_77 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_75 == x_77)) {
+    const int x_83 = asint(x_10[2].x);
+    const int x_86 = asint(x_10[1].x);
+    const int x_89 = asint(x_10[1].x);
+    const int x_92 = asint(x_10[2].x);
+    x_GLF_color = float4(float(x_83), float(x_86), float(x_89), float(x_92));
+  } else {
+    const int x_96 = asint(x_10[2].x);
+    const float x_97 = float(x_96);
+    x_GLF_color = float4(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b6ec84f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.msl
@@ -0,0 +1,84 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  float2x2 M1 = float2x2(0.0f);
+  float a = 0.0f;
+  int c = 0;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_45 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_47 = x_6.x_GLF_uniform_float_values.arr[4].el;
+  M1 = float2x2(float2(x_41, x_43), float2(x_45, x_47));
+  float const x_52 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = x_52;
+  int const x_54 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  c = x_54;
+  while (true) {
+    int const x_59 = c;
+    int const x_61 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_59 < x_61)) {
+    } else {
+      break;
+    }
+    int const x_65 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_66 = c;
+    float const x_70 = M1[x_65][clamp(~(x_66), 0, 1)];
+    float const x_71 = a;
+    a = (x_71 + x_70);
+    {
+      int const x_73 = c;
+      c = (x_73 + 1);
+    }
+  }
+  float const x_75 = a;
+  float const x_77 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_75 == x_77)) {
+    int const x_83 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_86 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_89 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_92 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_83), float(x_86), float(x_89), float(x_92));
+  } else {
+    int const x_96 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_97 = float(x_96);
+    *(tint_symbol_4) = float4(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..40682e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,184 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 118
+; Schema: 0
+               OpCapability Shader
+         %74 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %M1 "M1"
+               OpName %a "a"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf0 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %28 = OpConstantNull %mat2v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+        %106 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %M1 = OpVariable %_ptr_Function_mat2v2float Function %28
+          %a = OpVariable %_ptr_Function_float Function %31
+          %c = OpVariable %_ptr_Function_int Function %34
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %39 = OpLoad %float %38
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %45 = OpLoad %float %44
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %48 = OpLoad %float %47
+         %49 = OpCompositeConstruct %v2float %39 %42
+         %50 = OpCompositeConstruct %v2float %45 %48
+         %51 = OpCompositeConstruct %mat2v2float %49 %50
+               OpStore %M1 %51
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+               OpStore %a %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %56 = OpLoad %int %55
+               OpStore %c %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %c
+         %63 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpSLessThan %bool %61 %64
+               OpSelectionMerge %67 None
+               OpBranchConditional %65 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %58
+         %67 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %71 = OpLoad %int %70
+         %72 = OpLoad %int %c
+         %75 = OpNot %int %72
+         %73 = OpExtInst %int %74 SClamp %75 %int_0 %int_1
+         %76 = OpAccessChain %_ptr_Function_float %M1 %71 %73
+         %77 = OpLoad %float %76
+         %78 = OpLoad %float %a
+         %79 = OpFAdd %float %78 %77
+               OpStore %a %79
+               OpBranch %59
+         %59 = OpLabel
+         %80 = OpLoad %int %c
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %c %81
+               OpBranch %57
+         %58 = OpLabel
+         %82 = OpLoad %float %a
+         %83 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %84 = OpLoad %float %83
+         %85 = OpFOrdEqual %bool %82 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %96 = OpLoad %int %95
+         %97 = OpConvertSToF %float %90
+         %98 = OpConvertSToF %float %92
+         %99 = OpConvertSToF %float %94
+        %100 = OpConvertSToF %float %96
+        %101 = OpCompositeConstruct %v4float %97 %98 %99 %100
+               OpStore %x_GLF_color %101
+               OpBranch %86
+         %88 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %103 = OpLoad %int %102
+        %104 = OpConvertSToF %float %103
+        %105 = OpCompositeConstruct %v4float %104 %104 %104 %104
+               OpStore %x_GLF_color %105
+               OpBranch %86
+         %86 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %106
+%tint_symbol = OpFunctionParameter %main_out
+        %110 = OpLabel
+        %111 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %111
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %113 = OpLabel
+        %114 = OpFunctionCall %void %main_1
+        %116 = OpLoad %v4float %x_GLF_color
+        %117 = OpCompositeConstruct %main_out %116
+        %115 = OpFunctionCall %void %tint_symbol_2 %117
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a1de151
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,77 @@
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var M1 : mat2x2<f32>;
+  var a : f32;
+  var c : i32;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[4];
+  M1 = mat2x2<f32>(vec2<f32>(x_41, x_43), vec2<f32>(x_45, x_47));
+  let x_52 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = x_52;
+  let x_54 : i32 = x_10.x_GLF_uniform_int_values[1];
+  c = x_54;
+  loop {
+    let x_59 : i32 = c;
+    let x_61 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_59 < x_61)) {
+    } else {
+      break;
+    }
+    let x_65 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_66 : i32 = c;
+    let x_70 : f32 = M1[x_65][clamp(~(x_66), 0, 1)];
+    let x_71 : f32 = a;
+    a = (x_71 + x_70);
+
+    continuing {
+      let x_73 : i32 = c;
+      c = (x_73 + 1);
+    }
+  }
+  let x_75 : f32 = a;
+  let x_77 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_75 == x_77)) {
+    let x_83 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_86 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_89 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_92 : i32 = x_10.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_83), f32(x_86), f32(x_89), f32(x_92));
+  } else {
+    let x_96 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_97 : f32 = f32(x_96);
+    x_GLF_color = vec4<f32>(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
new file mode 100644
index 0000000..a1de151
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
@@ -0,0 +1,77 @@
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var M1 : mat2x2<f32>;
+  var a : f32;
+  var c : i32;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[4];
+  M1 = mat2x2<f32>(vec2<f32>(x_41, x_43), vec2<f32>(x_45, x_47));
+  let x_52 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = x_52;
+  let x_54 : i32 = x_10.x_GLF_uniform_int_values[1];
+  c = x_54;
+  loop {
+    let x_59 : i32 = c;
+    let x_61 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_59 < x_61)) {
+    } else {
+      break;
+    }
+    let x_65 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_66 : i32 = c;
+    let x_70 : f32 = M1[x_65][clamp(~(x_66), 0, 1)];
+    let x_71 : f32 = a;
+    a = (x_71 + x_70);
+
+    continuing {
+      let x_73 : i32 = c;
+      c = (x_73 + 1);
+    }
+  }
+  let x_75 : f32 = a;
+  let x_77 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_75 == x_77)) {
+    let x_83 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_86 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_89 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_92 : i32 = x_10.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_83), f32(x_86), f32(x_89), f32(x_92));
+  } else {
+    let x_96 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_97 : f32 = f32(x_96);
+    x_GLF_color = vec4<f32>(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e028935
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,66 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 M1 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float a = 0.0f;
+  int c = 0;
+  const float x_41 = asfloat(x_6[1].x);
+  const float x_43 = asfloat(x_6[2].x);
+  const float x_45 = asfloat(x_6[3].x);
+  const float x_47 = asfloat(x_6[4].x);
+  M1 = float2x2(float2(x_41, x_43), float2(x_45, x_47));
+  const float x_52 = asfloat(x_6[1].x);
+  a = x_52;
+  const int x_54 = asint(x_10[1].x);
+  c = x_54;
+  while (true) {
+    const int x_59 = c;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_61 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_59 < x_61)) {
+    } else {
+      break;
+    }
+    const int x_65 = asint(x_10[2].x);
+    const float x_70 = M1[x_65][clamp(~(c), 0, 1)];
+    a = (a + x_70);
+    {
+      c = (c + 1);
+    }
+  }
+  const float x_75 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_77 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_75 == x_77)) {
+    const int x_83 = asint(x_10[2].x);
+    const int x_86 = asint(x_10[1].x);
+    const int x_89 = asint(x_10[1].x);
+    const int x_92 = asint(x_10[2].x);
+    x_GLF_color = float4(float(x_83), float(x_86), float(x_89), float(x_92));
+  } else {
+    const int x_96 = asint(x_10[2].x);
+    const float x_97 = float(x_96);
+    x_GLF_color = float4(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b6ec84f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.msl
@@ -0,0 +1,84 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  float2x2 M1 = float2x2(0.0f);
+  float a = 0.0f;
+  int c = 0;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_45 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_47 = x_6.x_GLF_uniform_float_values.arr[4].el;
+  M1 = float2x2(float2(x_41, x_43), float2(x_45, x_47));
+  float const x_52 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  a = x_52;
+  int const x_54 = x_10.x_GLF_uniform_int_values.arr[1].el;
+  c = x_54;
+  while (true) {
+    int const x_59 = c;
+    int const x_61 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_59 < x_61)) {
+    } else {
+      break;
+    }
+    int const x_65 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_66 = c;
+    float const x_70 = M1[x_65][clamp(~(x_66), 0, 1)];
+    float const x_71 = a;
+    a = (x_71 + x_70);
+    {
+      int const x_73 = c;
+      c = (x_73 + 1);
+    }
+  }
+  float const x_75 = a;
+  float const x_77 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_75 == x_77)) {
+    int const x_83 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_86 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_89 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_92 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_83), float(x_86), float(x_89), float(x_92));
+  } else {
+    int const x_96 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_97 = float(x_96);
+    *(tint_symbol_4) = float4(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..40682e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,184 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 118
+; Schema: 0
+               OpCapability Shader
+         %74 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %M1 "M1"
+               OpName %a "a"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf0 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %28 = OpConstantNull %mat2v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+        %106 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %M1 = OpVariable %_ptr_Function_mat2v2float Function %28
+          %a = OpVariable %_ptr_Function_float Function %31
+          %c = OpVariable %_ptr_Function_int Function %34
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %39 = OpLoad %float %38
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %45 = OpLoad %float %44
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %48 = OpLoad %float %47
+         %49 = OpCompositeConstruct %v2float %39 %42
+         %50 = OpCompositeConstruct %v2float %45 %48
+         %51 = OpCompositeConstruct %mat2v2float %49 %50
+               OpStore %M1 %51
+         %52 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %53 = OpLoad %float %52
+               OpStore %a %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %56 = OpLoad %int %55
+               OpStore %c %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %c
+         %63 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpSLessThan %bool %61 %64
+               OpSelectionMerge %67 None
+               OpBranchConditional %65 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %58
+         %67 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %71 = OpLoad %int %70
+         %72 = OpLoad %int %c
+         %75 = OpNot %int %72
+         %73 = OpExtInst %int %74 SClamp %75 %int_0 %int_1
+         %76 = OpAccessChain %_ptr_Function_float %M1 %71 %73
+         %77 = OpLoad %float %76
+         %78 = OpLoad %float %a
+         %79 = OpFAdd %float %78 %77
+               OpStore %a %79
+               OpBranch %59
+         %59 = OpLabel
+         %80 = OpLoad %int %c
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %c %81
+               OpBranch %57
+         %58 = OpLabel
+         %82 = OpLoad %float %a
+         %83 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %84 = OpLoad %float %83
+         %85 = OpFOrdEqual %bool %82 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %96 = OpLoad %int %95
+         %97 = OpConvertSToF %float %90
+         %98 = OpConvertSToF %float %92
+         %99 = OpConvertSToF %float %94
+        %100 = OpConvertSToF %float %96
+        %101 = OpCompositeConstruct %v4float %97 %98 %99 %100
+               OpStore %x_GLF_color %101
+               OpBranch %86
+         %88 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %103 = OpLoad %int %102
+        %104 = OpConvertSToF %float %103
+        %105 = OpCompositeConstruct %v4float %104 %104 %104 %104
+               OpStore %x_GLF_color %105
+               OpBranch %86
+         %86 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %106
+%tint_symbol = OpFunctionParameter %main_out
+        %110 = OpLabel
+        %111 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %111
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %113 = OpLabel
+        %114 = OpFunctionCall %void %main_1
+        %116 = OpLoad %v4float %x_GLF_color
+        %117 = OpCompositeConstruct %main_out %116
+        %115 = OpFunctionCall %void %tint_symbol_2 %117
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a1de151
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,77 @@
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var M1 : mat2x2<f32>;
+  var a : f32;
+  var c : i32;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_45 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[4];
+  M1 = mat2x2<f32>(vec2<f32>(x_41, x_43), vec2<f32>(x_45, x_47));
+  let x_52 : f32 = x_6.x_GLF_uniform_float_values[1];
+  a = x_52;
+  let x_54 : i32 = x_10.x_GLF_uniform_int_values[1];
+  c = x_54;
+  loop {
+    let x_59 : i32 = c;
+    let x_61 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_59 < x_61)) {
+    } else {
+      break;
+    }
+    let x_65 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_66 : i32 = c;
+    let x_70 : f32 = M1[x_65][clamp(~(x_66), 0, 1)];
+    let x_71 : f32 = a;
+    a = (x_71 + x_70);
+
+    continuing {
+      let x_73 : i32 = c;
+      c = (x_73 + 1);
+    }
+  }
+  let x_75 : f32 = a;
+  let x_77 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_75 == x_77)) {
+    let x_83 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_86 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_89 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_92 : i32 = x_10.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_83), f32(x_86), f32(x_89), f32(x_92));
+  } else {
+    let x_96 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_97 : f32 = f32(x_96);
+    x_GLF_color = vec4<f32>(x_97, x_97, x_97, x_97);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm
new file mode 100644
index 0000000..d791206
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm
@@ -0,0 +1,82 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_2 = OpConstant %float 2
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %26 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+          %a = OpVariable %_ptr_Function_int Function
+               OpStore %f %float_2
+         %27 = OpLoad %float %f
+         %28 = OpExtInst %float %1 FClamp %float_1 %float_1 %27
+         %29 = OpFSub %float %float_1 %28
+         %30 = OpConvertFToS %int %29
+               OpStore %a %30
+         %31 = OpLoad %int %a
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %33 = OpLoad %int %32
+         %34 = OpIEqual %bool %31 %33
+               OpSelectionMerge %35 None
+               OpBranchConditional %34 %36 %37
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpConvertSToF %float %39
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpCompositeConstruct %v4float %40 %43 %46 %49
+               OpStore %_GLF_color %50
+               OpBranch %35
+         %37 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %_GLF_color %54
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..6710a76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,41 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int a = 0;
+  f = 2.0f;
+  a = int((1.0f - clamp(1.0f, 1.0f, f)));
+  const int x_31 = a;
+  const int x_33 = asint(x_7[1].x);
+  if ((x_31 == x_33)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_39 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const int x_42 = asint(x_7[1].x);
+    const int x_45 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_39), float(x_42), float(x_45), float(x_48));
+  } else {
+    const int x_52 = asint(x_7[1].x);
+    const float x_53 = float(x_52);
+    x_GLF_color = float4(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..824e6dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  int a = 0;
+  f = 2.0f;
+  float const x_27 = f;
+  a = int((1.0f - clamp(1.0f, 1.0f, x_27)));
+  int const x_31 = a;
+  int const x_33 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_31 == x_33)) {
+    int const x_39 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_42 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_45 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_48 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_39), float(x_42), float(x_45), float(x_48));
+  } else {
+    int const x_52 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_53 = float(x_52);
+    *(tint_symbol_4) = float4(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3acf316
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 73
+; Schema: 0
+               OpCapability Shader
+         %30 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+    %float_2 = OpConstant %float 2
+    %float_1 = OpConstant %float 1
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %61 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %21
+          %a = OpVariable %_ptr_Function_int Function %24
+               OpStore %f %float_2
+         %26 = OpLoad %float %f
+         %29 = OpExtInst %float %30 NClamp %float_1 %float_1 %26
+         %31 = OpFSub %float %float_1 %29
+         %27 = OpConvertFToS %int %31
+               OpStore %a %27
+         %32 = OpLoad %int %a
+         %36 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpIEqual %bool %32 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %45
+         %53 = OpConvertSToF %float %47
+         %54 = OpConvertSToF %float %49
+         %55 = OpConvertSToF %float %51
+         %56 = OpCompositeConstruct %v4float %52 %53 %54 %55
+               OpStore %x_GLF_color %56
+               OpBranch %40
+         %42 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpCompositeConstruct %v4float %59 %59 %59 %59
+               OpStore %x_GLF_color %60
+               OpBranch %40
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %61
+%tint_symbol = OpFunctionParameter %main_out
+         %65 = OpLabel
+         %66 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %66
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %68 = OpLabel
+         %69 = OpFunctionCall %void %main_1
+         %71 = OpLoad %v4float %x_GLF_color
+         %72 = OpCompositeConstruct %main_out %71
+         %70 = OpFunctionCall %void %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..fd31b1f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,43 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var a : i32;
+  f = 2.0;
+  let x_27 : f32 = f;
+  a = i32((1.0 - clamp(1.0, 1.0, x_27)));
+  let x_31 : i32 = a;
+  let x_33 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_31 == x_33)) {
+    let x_39 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_45 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_39), f32(x_42), f32(x_45), f32(x_48));
+  } else {
+    let x_52 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_53 : f32 = f32(x_52);
+    x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
new file mode 100644
index 0000000..fd31b1f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
@@ -0,0 +1,43 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var a : i32;
+  f = 2.0;
+  let x_27 : f32 = f;
+  a = i32((1.0 - clamp(1.0, 1.0, x_27)));
+  let x_31 : i32 = a;
+  let x_33 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_31 == x_33)) {
+    let x_39 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_45 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_39), f32(x_42), f32(x_45), f32(x_48));
+  } else {
+    let x_52 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_53 : f32 = f32(x_52);
+    x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..6710a76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,41 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  int a = 0;
+  f = 2.0f;
+  a = int((1.0f - clamp(1.0f, 1.0f, f)));
+  const int x_31 = a;
+  const int x_33 = asint(x_7[1].x);
+  if ((x_31 == x_33)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_39 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const int x_42 = asint(x_7[1].x);
+    const int x_45 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_39), float(x_42), float(x_45), float(x_48));
+  } else {
+    const int x_52 = asint(x_7[1].x);
+    const float x_53 = float(x_52);
+    x_GLF_color = float4(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..824e6dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  int a = 0;
+  f = 2.0f;
+  float const x_27 = f;
+  a = int((1.0f - clamp(1.0f, 1.0f, x_27)));
+  int const x_31 = a;
+  int const x_33 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_31 == x_33)) {
+    int const x_39 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_42 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_45 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_48 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_39), float(x_42), float(x_45), float(x_48));
+  } else {
+    int const x_52 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_53 = float(x_52);
+    *(tint_symbol_4) = float4(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3acf316
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 73
+; Schema: 0
+               OpCapability Shader
+         %30 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+    %float_2 = OpConstant %float 2
+    %float_1 = OpConstant %float 1
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %61 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %21
+          %a = OpVariable %_ptr_Function_int Function %24
+               OpStore %f %float_2
+         %26 = OpLoad %float %f
+         %29 = OpExtInst %float %30 NClamp %float_1 %float_1 %26
+         %31 = OpFSub %float %float_1 %29
+         %27 = OpConvertFToS %int %31
+               OpStore %a %27
+         %32 = OpLoad %int %a
+         %36 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpIEqual %bool %32 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpConvertSToF %float %45
+         %53 = OpConvertSToF %float %47
+         %54 = OpConvertSToF %float %49
+         %55 = OpConvertSToF %float %51
+         %56 = OpCompositeConstruct %v4float %52 %53 %54 %55
+               OpStore %x_GLF_color %56
+               OpBranch %40
+         %42 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpCompositeConstruct %v4float %59 %59 %59 %59
+               OpStore %x_GLF_color %60
+               OpBranch %40
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %61
+%tint_symbol = OpFunctionParameter %main_out
+         %65 = OpLabel
+         %66 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %66
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %68 = OpLabel
+         %69 = OpFunctionCall %void %main_1
+         %71 = OpLoad %v4float %x_GLF_color
+         %72 = OpCompositeConstruct %main_out %71
+         %70 = OpFunctionCall %void %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..fd31b1f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,43 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var a : i32;
+  f = 2.0;
+  let x_27 : f32 = f;
+  a = i32((1.0 - clamp(1.0, 1.0, x_27)));
+  let x_31 : i32 = a;
+  let x_33 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_31 == x_33)) {
+    let x_39 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_45 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_39), f32(x_42), f32(x_45), f32(x_48));
+  } else {
+    let x_52 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_53 : f32 = f32(x_52);
+    x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm
new file mode 100644
index 0000000..58648bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm
@@ -0,0 +1,174 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %j "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %15
+         %34 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %36 = OpLoad %int %35
+               OpStore %a %36
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpSLessThan %bool %43 %45
+               OpBranchConditional %46 %47 %40
+         %47 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %49 = OpLoad %int %48
+               OpStore %j %49
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %54 = OpLoad %int %j
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpSLessThan %bool %54 %56
+               OpBranchConditional %57 %58 %51
+         %58 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %64 = OpLoad %int %63
+               OpStore %a %64
+         %65 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpFOrdLessThan %bool %66 %68
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+               OpKill
+         %70 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+         %72 = OpLoad %int %a
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpSLessThan %bool %72 %74
+               OpBranchConditional %75 %59 %60
+         %60 = OpLabel
+         %76 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpFOrdLessThan %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+               OpBranch %51
+         %81 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+               OpBranch %50
+         %51 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %85 = OpLoad %int %i
+         %86 = OpIAdd %int %85 %int_1
+               OpStore %i %86
+               OpBranch %39
+         %40 = OpLabel
+         %87 = OpLoad %int %a
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpIEqual %bool %87 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %93
+         %92 = OpLabel
+         %94 = OpLoad %int %a
+         %95 = OpConvertSToF %float %94
+         %96 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %97 = OpLoad %int %96
+         %98 = OpConvertSToF %float %97
+         %99 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %100
+        %102 = OpLoad %int %a
+        %103 = OpConvertSToF %float %102
+        %104 = OpCompositeConstruct %v4float %95 %98 %101 %103
+               OpStore %_GLF_color %104
+               OpBranch %91
+         %93 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %106 = OpLoad %int %105
+        %107 = OpConvertSToF %float %106
+        %108 = OpCompositeConstruct %v4float %107 %107 %107 %107
+               OpStore %_GLF_color %108
+               OpBranch %91
+         %91 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..400789e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,100 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  const int x_36 = asint(x_7[2].x);
+  a = x_36;
+  const int x_38 = asint(x_7[2].x);
+  i = x_38;
+  while (true) {
+    const int x_43 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    const int x_49 = asint(x_7[2].x);
+    j = x_49;
+    while (true) {
+      const int x_54 = j;
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const int x_56 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      while (true) {
+        const int x_64 = asint(x_7[1].x);
+        a = x_64;
+        const float x_66 = gl_FragCoord.y;
+        const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+        const float x_68 = asfloat(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        if ((x_66 < x_68)) {
+          discard;
+        }
+        {
+          const int x_72 = a;
+          const int x_74 = asint(x_7[1].x);
+          if ((x_72 < x_74)) {
+          } else {
+            break;
+          }
+        }
+      }
+      const float x_77 = gl_FragCoord.y;
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const float x_79 = asfloat(x_11[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      if ((x_77 < x_79)) {
+        break;
+      }
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_87 = a;
+  const int x_89 = asint(x_7[1].x);
+  if ((x_87 == x_89)) {
+    const int x_94 = a;
+    const int x_97 = asint(x_7[2].x);
+    const int x_100 = asint(x_7[2].x);
+    x_GLF_color = float4(float(x_94), float(x_97), float(x_100), float(a));
+  } else {
+    const int x_106 = asint(x_7[2].x);
+    const float x_107 = float(x_106);
+    x_GLF_color = float4(x_107, x_107, x_107, x_107);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e1218a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_11, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  int const x_36 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  a = x_36;
+  int const x_38 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  i = x_38;
+  while (true) {
+    int const x_43 = i;
+    int const x_45 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    int const x_49 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    j = x_49;
+    while (true) {
+      int const x_54 = j;
+      int const x_56 = x_7.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      while (true) {
+        int const x_64 = x_7.x_GLF_uniform_int_values.arr[1].el;
+        a = x_64;
+        float const x_66 = (*(tint_symbol_5)).y;
+        float const x_68 = x_11.x_GLF_uniform_float_values.arr[0].el;
+        if ((x_66 < x_68)) {
+          discard_fragment();
+        }
+        {
+          int const x_72 = a;
+          int const x_74 = x_7.x_GLF_uniform_int_values.arr[1].el;
+          if ((x_72 < x_74)) {
+          } else {
+            break;
+          }
+        }
+      }
+      float const x_77 = (*(tint_symbol_5)).y;
+      float const x_79 = x_11.x_GLF_uniform_float_values.arr[0].el;
+      if ((x_77 < x_79)) {
+        break;
+      }
+      {
+        int const x_83 = j;
+        j = (x_83 + 1);
+      }
+    }
+    {
+      int const x_85 = i;
+      i = (x_85 + 1);
+    }
+  }
+  int const x_87 = a;
+  int const x_89 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_87 == x_89)) {
+    int const x_94 = a;
+    int const x_97 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_100 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_102 = a;
+    *(tint_symbol_6) = float4(float(x_94), float(x_97), float(x_100), float(x_102));
+  } else {
+    int const x_106 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    float const x_107 = float(x_106);
+    *(tint_symbol_6) = float4(x_107, x_107, x_107, x_107);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_11, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..84ab7f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,234 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 134
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+        %121 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %29
+          %i = OpVariable %_ptr_Function_int Function %29
+          %j = OpVariable %_ptr_Function_int Function %29
+         %35 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %36 = OpLoad %int %35
+               OpStore %a %36
+         %37 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpSLessThan %bool %43 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %40
+         %49 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %53 = OpLoad %int %52
+               OpStore %j %53
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %j
+         %59 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpSLessThan %bool %58 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %55
+         %62 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %71 = OpLoad %int %70
+               OpStore %a %71
+         %73 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %74 = OpLoad %float %73
+         %76 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %77 = OpLoad %float %76
+         %78 = OpFOrdLessThan %bool %74 %77
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpKill
+         %79 = OpLabel
+               OpBranch %67
+         %67 = OpLabel
+         %81 = OpLoad %int %a
+         %82 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpSLessThan %bool %81 %83
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+               OpBranch %85
+         %87 = OpLabel
+               OpBranch %66
+         %85 = OpLabel
+               OpBranch %65
+         %66 = OpLabel
+         %88 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %91 = OpLoad %float %90
+         %92 = OpFOrdLessThan %bool %89 %91
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+               OpBranch %55
+         %93 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+         %95 = OpLoad %int %j
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %j %96
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %97 = OpLoad %int %i
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %i %98
+               OpBranch %39
+         %40 = OpLabel
+         %99 = OpLoad %int %a
+        %100 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+        %101 = OpLoad %int %100
+        %102 = OpIEqual %bool %99 %101
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpLoad %int %a
+        %107 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+        %110 = OpLoad %int %109
+        %111 = OpLoad %int %a
+        %112 = OpConvertSToF %float %106
+        %113 = OpConvertSToF %float %108
+        %114 = OpConvertSToF %float %110
+        %115 = OpConvertSToF %float %111
+        %116 = OpCompositeConstruct %v4float %112 %113 %114 %115
+               OpStore %x_GLF_color %116
+               OpBranch %103
+        %105 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+        %118 = OpLoad %int %117
+        %119 = OpConvertSToF %float %118
+        %120 = OpCompositeConstruct %v4float %119 %119 %119 %119
+               OpStore %x_GLF_color %120
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %121
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %125 = OpLabel
+        %126 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %126
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %128 = OpLabel
+        %129 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %129
+        %130 = OpFunctionCall %void %main_1
+        %132 = OpLoad %v4float %x_GLF_color
+        %133 = OpCompositeConstruct %main_out %132
+        %131 = OpFunctionCall %void %tint_symbol_3 %133
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 67[%67] is not post dominated by the back-edge block 85[%85]
+  %85 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..9373467
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,108 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var j : i32;
+  let x_36 : i32 = x_7.x_GLF_uniform_int_values[2];
+  a = x_36;
+  let x_38 : i32 = x_7.x_GLF_uniform_int_values[2];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_7.x_GLF_uniform_int_values[0];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+    j = x_49;
+    loop {
+      let x_54 : i32 = j;
+      let x_56 : i32 = x_7.x_GLF_uniform_int_values[0];
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      loop {
+        let x_64 : i32 = x_7.x_GLF_uniform_int_values[1];
+        a = x_64;
+        let x_66 : f32 = gl_FragCoord.y;
+        let x_68 : f32 = x_11.x_GLF_uniform_float_values[0];
+        if ((x_66 < x_68)) {
+          discard;
+        }
+
+        continuing {
+          let x_72 : i32 = a;
+          let x_74 : i32 = x_7.x_GLF_uniform_int_values[1];
+          if ((x_72 < x_74)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_77 : f32 = gl_FragCoord.y;
+      let x_79 : f32 = x_11.x_GLF_uniform_float_values[0];
+      if ((x_77 < x_79)) {
+        break;
+      }
+
+      continuing {
+        let x_83 : i32 = j;
+        j = (x_83 + 1);
+      }
+    }
+
+    continuing {
+      let x_85 : i32 = i;
+      i = (x_85 + 1);
+    }
+  }
+  let x_87 : i32 = a;
+  let x_89 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_87 == x_89)) {
+    let x_94 : i32 = a;
+    let x_97 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_100 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_102 : i32 = a;
+    x_GLF_color = vec4<f32>(f32(x_94), f32(x_97), f32(x_100), f32(x_102));
+  } else {
+    let x_106 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_107 : f32 = f32(x_106);
+    x_GLF_color = vec4<f32>(x_107, x_107, x_107, x_107);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
new file mode 100644
index 0000000..9373467
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
@@ -0,0 +1,108 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var j : i32;
+  let x_36 : i32 = x_7.x_GLF_uniform_int_values[2];
+  a = x_36;
+  let x_38 : i32 = x_7.x_GLF_uniform_int_values[2];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_7.x_GLF_uniform_int_values[0];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+    j = x_49;
+    loop {
+      let x_54 : i32 = j;
+      let x_56 : i32 = x_7.x_GLF_uniform_int_values[0];
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      loop {
+        let x_64 : i32 = x_7.x_GLF_uniform_int_values[1];
+        a = x_64;
+        let x_66 : f32 = gl_FragCoord.y;
+        let x_68 : f32 = x_11.x_GLF_uniform_float_values[0];
+        if ((x_66 < x_68)) {
+          discard;
+        }
+
+        continuing {
+          let x_72 : i32 = a;
+          let x_74 : i32 = x_7.x_GLF_uniform_int_values[1];
+          if ((x_72 < x_74)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_77 : f32 = gl_FragCoord.y;
+      let x_79 : f32 = x_11.x_GLF_uniform_float_values[0];
+      if ((x_77 < x_79)) {
+        break;
+      }
+
+      continuing {
+        let x_83 : i32 = j;
+        j = (x_83 + 1);
+      }
+    }
+
+    continuing {
+      let x_85 : i32 = i;
+      i = (x_85 + 1);
+    }
+  }
+  let x_87 : i32 = a;
+  let x_89 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_87 == x_89)) {
+    let x_94 : i32 = a;
+    let x_97 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_100 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_102 : i32 = a;
+    x_GLF_color = vec4<f32>(f32(x_94), f32(x_97), f32(x_100), f32(x_102));
+  } else {
+    let x_106 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_107 : f32 = f32(x_106);
+    x_GLF_color = vec4<f32>(x_107, x_107, x_107, x_107);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..400789e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,100 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  const int x_36 = asint(x_7[2].x);
+  a = x_36;
+  const int x_38 = asint(x_7[2].x);
+  i = x_38;
+  while (true) {
+    const int x_43 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    const int x_49 = asint(x_7[2].x);
+    j = x_49;
+    while (true) {
+      const int x_54 = j;
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const int x_56 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      while (true) {
+        const int x_64 = asint(x_7[1].x);
+        a = x_64;
+        const float x_66 = gl_FragCoord.y;
+        const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+        const float x_68 = asfloat(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        if ((x_66 < x_68)) {
+          discard;
+        }
+        {
+          const int x_72 = a;
+          const int x_74 = asint(x_7[1].x);
+          if ((x_72 < x_74)) {
+          } else {
+            break;
+          }
+        }
+      }
+      const float x_77 = gl_FragCoord.y;
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const float x_79 = asfloat(x_11[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      if ((x_77 < x_79)) {
+        break;
+      }
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_87 = a;
+  const int x_89 = asint(x_7[1].x);
+  if ((x_87 == x_89)) {
+    const int x_94 = a;
+    const int x_97 = asint(x_7[2].x);
+    const int x_100 = asint(x_7[2].x);
+    x_GLF_color = float4(float(x_94), float(x_97), float(x_100), float(a));
+  } else {
+    const int x_106 = asint(x_7[2].x);
+    const float x_107 = float(x_106);
+    x_GLF_color = float4(x_107, x_107, x_107, x_107);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e1218a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_11, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  int const x_36 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  a = x_36;
+  int const x_38 = x_7.x_GLF_uniform_int_values.arr[2].el;
+  i = x_38;
+  while (true) {
+    int const x_43 = i;
+    int const x_45 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    int const x_49 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    j = x_49;
+    while (true) {
+      int const x_54 = j;
+      int const x_56 = x_7.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      while (true) {
+        int const x_64 = x_7.x_GLF_uniform_int_values.arr[1].el;
+        a = x_64;
+        float const x_66 = (*(tint_symbol_5)).y;
+        float const x_68 = x_11.x_GLF_uniform_float_values.arr[0].el;
+        if ((x_66 < x_68)) {
+          discard_fragment();
+        }
+        {
+          int const x_72 = a;
+          int const x_74 = x_7.x_GLF_uniform_int_values.arr[1].el;
+          if ((x_72 < x_74)) {
+          } else {
+            break;
+          }
+        }
+      }
+      float const x_77 = (*(tint_symbol_5)).y;
+      float const x_79 = x_11.x_GLF_uniform_float_values.arr[0].el;
+      if ((x_77 < x_79)) {
+        break;
+      }
+      {
+        int const x_83 = j;
+        j = (x_83 + 1);
+      }
+    }
+    {
+      int const x_85 = i;
+      i = (x_85 + 1);
+    }
+  }
+  int const x_87 = a;
+  int const x_89 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_87 == x_89)) {
+    int const x_94 = a;
+    int const x_97 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_100 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    int const x_102 = a;
+    *(tint_symbol_6) = float4(float(x_94), float(x_97), float(x_100), float(x_102));
+  } else {
+    int const x_106 = x_7.x_GLF_uniform_int_values.arr[2].el;
+    float const x_107 = float(x_106);
+    *(tint_symbol_6) = float4(x_107, x_107, x_107, x_107);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_11, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..84ab7f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,234 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 134
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %main_out = OpTypeStruct %v4float
+        %121 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %29
+          %i = OpVariable %_ptr_Function_int Function %29
+          %j = OpVariable %_ptr_Function_int Function %29
+         %35 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %36 = OpLoad %int %35
+               OpStore %a %36
+         %37 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpSLessThan %bool %43 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %40
+         %49 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %53 = OpLoad %int %52
+               OpStore %j %53
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %j
+         %59 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpSLessThan %bool %58 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %55
+         %62 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %71 = OpLoad %int %70
+               OpStore %a %71
+         %73 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %74 = OpLoad %float %73
+         %76 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %77 = OpLoad %float %76
+         %78 = OpFOrdLessThan %bool %74 %77
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpKill
+         %79 = OpLabel
+               OpBranch %67
+         %67 = OpLabel
+         %81 = OpLoad %int %a
+         %82 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpSLessThan %bool %81 %83
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+               OpBranch %85
+         %87 = OpLabel
+               OpBranch %66
+         %85 = OpLabel
+               OpBranch %65
+         %66 = OpLabel
+         %88 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %91 = OpLoad %float %90
+         %92 = OpFOrdLessThan %bool %89 %91
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+               OpBranch %55
+         %93 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+         %95 = OpLoad %int %j
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %j %96
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %97 = OpLoad %int %i
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %i %98
+               OpBranch %39
+         %40 = OpLabel
+         %99 = OpLoad %int %a
+        %100 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+        %101 = OpLoad %int %100
+        %102 = OpIEqual %bool %99 %101
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpLoad %int %a
+        %107 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+        %110 = OpLoad %int %109
+        %111 = OpLoad %int %a
+        %112 = OpConvertSToF %float %106
+        %113 = OpConvertSToF %float %108
+        %114 = OpConvertSToF %float %110
+        %115 = OpConvertSToF %float %111
+        %116 = OpCompositeConstruct %v4float %112 %113 %114 %115
+               OpStore %x_GLF_color %116
+               OpBranch %103
+        %105 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+        %118 = OpLoad %int %117
+        %119 = OpConvertSToF %float %118
+        %120 = OpCompositeConstruct %v4float %119 %119 %119 %119
+               OpStore %x_GLF_color %120
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %121
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %125 = OpLabel
+        %126 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %126
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %128 = OpLabel
+        %129 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %129
+        %130 = OpFunctionCall %void %main_1
+        %132 = OpLoad %v4float %x_GLF_color
+        %133 = OpCompositeConstruct %main_out %132
+        %131 = OpFunctionCall %void %tint_symbol_3 %133
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 67[%67] is not post dominated by the back-edge block 85[%85]
+  %85 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..9373467
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,108 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var j : i32;
+  let x_36 : i32 = x_7.x_GLF_uniform_int_values[2];
+  a = x_36;
+  let x_38 : i32 = x_7.x_GLF_uniform_int_values[2];
+  i = x_38;
+  loop {
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_7.x_GLF_uniform_int_values[0];
+    if ((x_43 < x_45)) {
+    } else {
+      break;
+    }
+    let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+    j = x_49;
+    loop {
+      let x_54 : i32 = j;
+      let x_56 : i32 = x_7.x_GLF_uniform_int_values[0];
+      if ((x_54 < x_56)) {
+      } else {
+        break;
+      }
+      loop {
+        let x_64 : i32 = x_7.x_GLF_uniform_int_values[1];
+        a = x_64;
+        let x_66 : f32 = gl_FragCoord.y;
+        let x_68 : f32 = x_11.x_GLF_uniform_float_values[0];
+        if ((x_66 < x_68)) {
+          discard;
+        }
+
+        continuing {
+          let x_72 : i32 = a;
+          let x_74 : i32 = x_7.x_GLF_uniform_int_values[1];
+          if ((x_72 < x_74)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_77 : f32 = gl_FragCoord.y;
+      let x_79 : f32 = x_11.x_GLF_uniform_float_values[0];
+      if ((x_77 < x_79)) {
+        break;
+      }
+
+      continuing {
+        let x_83 : i32 = j;
+        j = (x_83 + 1);
+      }
+    }
+
+    continuing {
+      let x_85 : i32 = i;
+      i = (x_85 + 1);
+    }
+  }
+  let x_87 : i32 = a;
+  let x_89 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_87 == x_89)) {
+    let x_94 : i32 = a;
+    let x_97 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_100 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_102 : i32 = a;
+    x_GLF_color = vec4<f32>(f32(x_94), f32(x_97), f32(x_100), f32(x_102));
+  } else {
+    let x_106 : i32 = x_7.x_GLF_uniform_int_values[2];
+    let x_107 : f32 = f32(x_106);
+    x_GLF_color = vec4<f32>(x_107, x_107, x_107, x_107);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm
new file mode 100644
index 0000000..7e9bff0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm
@@ -0,0 +1,414 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %i_0 "i"
+               OpName %i_1 "i"
+               OpName %i_2 "i"
+               OpName %i_3 "i"
+               OpName %i_4 "i"
+               OpName %i_5 "i"
+               OpName %i_6 "i"
+               OpName %i_7 "i"
+               OpName %i_8 "i"
+               OpName %i_9 "i"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 RelaxedPrecision
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %i_0 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %i_1 RelaxedPrecision
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %i_2 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %34 RelaxedPrecision
+               OpDecorate %35 RelaxedPrecision
+               OpDecorate %i_3 RelaxedPrecision
+               OpDecorate %36 RelaxedPrecision
+               OpDecorate %37 RelaxedPrecision
+               OpDecorate %38 RelaxedPrecision
+               OpDecorate %i_4 RelaxedPrecision
+               OpDecorate %39 RelaxedPrecision
+               OpDecorate %40 RelaxedPrecision
+               OpDecorate %41 RelaxedPrecision
+               OpDecorate %i_5 RelaxedPrecision
+               OpDecorate %42 RelaxedPrecision
+               OpDecorate %43 RelaxedPrecision
+               OpDecorate %44 RelaxedPrecision
+               OpDecorate %i_6 RelaxedPrecision
+               OpDecorate %45 RelaxedPrecision
+               OpDecorate %46 RelaxedPrecision
+               OpDecorate %47 RelaxedPrecision
+               OpDecorate %i_7 RelaxedPrecision
+               OpDecorate %48 RelaxedPrecision
+               OpDecorate %49 RelaxedPrecision
+               OpDecorate %50 RelaxedPrecision
+               OpDecorate %i_8 RelaxedPrecision
+               OpDecorate %51 RelaxedPrecision
+               OpDecorate %52 RelaxedPrecision
+               OpDecorate %53 RelaxedPrecision
+               OpDecorate %i_9 RelaxedPrecision
+               OpDecorate %54 RelaxedPrecision
+               OpDecorate %55 RelaxedPrecision
+               OpDecorate %56 RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %57 RelaxedPrecision
+               OpDecorate %58 RelaxedPrecision
+               OpDecorate %59 RelaxedPrecision
+               OpDecorate %60 RelaxedPrecision
+               OpDecorate %61 RelaxedPrecision
+               OpDecorate %62 RelaxedPrecision
+               OpDecorate %63 RelaxedPrecision
+               OpDecorate %64 RelaxedPrecision
+               OpDecorate %65 RelaxedPrecision
+               OpDecorate %66 RelaxedPrecision
+               OpDecorate %67 RelaxedPrecision
+               OpDecorate %68 RelaxedPrecision
+               OpDecorate %69 RelaxedPrecision
+               OpDecorate %70 RelaxedPrecision
+               OpDecorate %71 RelaxedPrecision
+               OpDecorate %72 RelaxedPrecision
+               OpDecorate %73 RelaxedPrecision
+               OpDecorate %74 RelaxedPrecision
+               OpDecorate %75 RelaxedPrecision
+               OpDecorate %76 RelaxedPrecision
+               OpDecorate %77 RelaxedPrecision
+               OpDecorate %78 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %80 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %80
+        %102 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+          %b = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %i_3 = OpVariable %_ptr_Function_int Function
+        %i_4 = OpVariable %_ptr_Function_int Function
+        %i_5 = OpVariable %_ptr_Function_int Function
+        %i_6 = OpVariable %_ptr_Function_int Function
+        %i_7 = OpVariable %_ptr_Function_int Function
+        %i_8 = OpVariable %_ptr_Function_int Function
+        %i_9 = OpVariable %_ptr_Function_int Function
+        %103 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %104 = OpLoad %float %103
+               OpStore %a %104
+        %105 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %106 = OpLoad %float %105
+               OpStore %b %106
+        %107 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %24 = OpLoad %int %107
+               OpStore %i %24
+               OpBranch %108
+        %108 = OpLabel
+               OpLoopMerge %109 %110 None
+               OpBranch %111
+        %111 = OpLabel
+         %25 = OpLoad %int %i
+        %112 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %26 = OpLoad %int %112
+        %113 = OpSLessThan %bool %25 %26
+               OpBranchConditional %113 %114 %109
+        %114 = OpLabel
+        %115 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %27 = OpLoad %int %115
+               OpStore %i_0 %27
+               OpBranch %116
+        %116 = OpLabel
+               OpLoopMerge %117 %118 None
+               OpBranch %119
+        %119 = OpLabel
+         %28 = OpLoad %int %i_0
+        %120 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %29 = OpLoad %int %120
+        %121 = OpSLessThan %bool %28 %29
+               OpBranchConditional %121 %122 %117
+        %122 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %30 = OpLoad %int %123
+               OpStore %i_1 %30
+               OpBranch %124
+        %124 = OpLabel
+               OpLoopMerge %125 %126 None
+               OpBranch %127
+        %127 = OpLabel
+         %31 = OpLoad %int %i_1
+        %128 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %32 = OpLoad %int %128
+        %129 = OpSLessThan %bool %31 %32
+               OpBranchConditional %129 %130 %125
+        %130 = OpLabel
+        %131 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %33 = OpLoad %int %131
+               OpStore %i_2 %33
+               OpBranch %132
+        %132 = OpLabel
+               OpLoopMerge %133 %134 None
+               OpBranch %135
+        %135 = OpLabel
+         %34 = OpLoad %int %i_2
+        %136 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %35 = OpLoad %int %136
+        %137 = OpSLessThan %bool %34 %35
+               OpBranchConditional %137 %138 %133
+        %138 = OpLabel
+        %139 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %36 = OpLoad %int %139
+               OpStore %i_3 %36
+               OpBranch %140
+        %140 = OpLabel
+               OpLoopMerge %141 %142 None
+               OpBranch %143
+        %143 = OpLabel
+         %37 = OpLoad %int %i_3
+        %144 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %38 = OpLoad %int %144
+        %145 = OpSLessThan %bool %37 %38
+               OpBranchConditional %145 %146 %141
+        %146 = OpLabel
+        %147 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %39 = OpLoad %int %147
+               OpStore %i_4 %39
+               OpBranch %148
+        %148 = OpLabel
+               OpLoopMerge %149 %150 None
+               OpBranch %151
+        %151 = OpLabel
+         %40 = OpLoad %int %i_4
+        %152 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %41 = OpLoad %int %152
+        %153 = OpSLessThan %bool %40 %41
+               OpBranchConditional %153 %154 %149
+        %154 = OpLabel
+        %155 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %42 = OpLoad %int %155
+               OpStore %i_5 %42
+               OpBranch %156
+        %156 = OpLabel
+               OpLoopMerge %157 %158 None
+               OpBranch %159
+        %159 = OpLabel
+         %43 = OpLoad %int %i_5
+        %160 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %44 = OpLoad %int %160
+        %161 = OpSLessThan %bool %43 %44
+               OpBranchConditional %161 %162 %157
+        %162 = OpLabel
+        %163 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %45 = OpLoad %int %163
+               OpStore %i_6 %45
+               OpBranch %164
+        %164 = OpLabel
+               OpLoopMerge %165 %166 None
+               OpBranch %167
+        %167 = OpLabel
+         %46 = OpLoad %int %i_6
+        %168 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %47 = OpLoad %int %168
+        %169 = OpSLessThan %bool %46 %47
+               OpBranchConditional %169 %170 %165
+        %170 = OpLabel
+        %171 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %48 = OpLoad %int %171
+               OpStore %i_7 %48
+               OpBranch %172
+        %172 = OpLabel
+               OpLoopMerge %173 %174 None
+               OpBranch %175
+        %175 = OpLabel
+         %49 = OpLoad %int %i_7
+        %176 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %50 = OpLoad %int %176
+        %177 = OpSLessThan %bool %49 %50
+               OpBranchConditional %177 %178 %173
+        %178 = OpLabel
+        %179 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %51 = OpLoad %int %179
+               OpStore %i_8 %51
+               OpBranch %180
+        %180 = OpLabel
+               OpLoopMerge %181 %182 None
+               OpBranch %183
+        %183 = OpLabel
+         %52 = OpLoad %int %i_8
+        %184 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %53 = OpLoad %int %184
+        %185 = OpSLessThan %bool %52 %53
+               OpBranchConditional %185 %186 %181
+        %186 = OpLabel
+        %187 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %54 = OpLoad %int %187
+               OpStore %i_9 %54
+               OpBranch %188
+        %188 = OpLabel
+               OpLoopMerge %189 %190 None
+               OpBranch %191
+        %191 = OpLabel
+         %55 = OpLoad %int %i_9
+        %192 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %56 = OpLoad %int %192
+        %193 = OpSLessThan %bool %55 %56
+               OpBranchConditional %193 %194 %189
+        %194 = OpLabel
+        %195 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %196 = OpLoad %float %195
+               OpStore %a %196
+        %197 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %198 = OpLoad %float %197
+        %199 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %200 = OpLoad %float %199
+        %201 = OpFOrdGreaterThan %bool %198 %200
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %202
+        %203 = OpLabel
+               OpBranch %189
+        %202 = OpLabel
+               OpBranch %190
+        %190 = OpLabel
+         %57 = OpLoad %int %i_9
+         %58 = OpIAdd %int %57 %int_1
+               OpStore %i_9 %58
+               OpBranch %188
+        %189 = OpLabel
+               OpBranch %182
+        %182 = OpLabel
+         %59 = OpLoad %int %i_8
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %i_8 %60
+               OpBranch %180
+        %181 = OpLabel
+               OpBranch %174
+        %174 = OpLabel
+         %61 = OpLoad %int %i_7
+         %62 = OpIAdd %int %61 %int_1
+               OpStore %i_7 %62
+               OpBranch %172
+        %173 = OpLabel
+               OpBranch %166
+        %166 = OpLabel
+         %63 = OpLoad %int %i_6
+         %64 = OpIAdd %int %63 %int_1
+               OpStore %i_6 %64
+               OpBranch %164
+        %165 = OpLabel
+               OpBranch %158
+        %158 = OpLabel
+         %65 = OpLoad %int %i_5
+         %66 = OpIAdd %int %65 %int_1
+               OpStore %i_5 %66
+               OpBranch %156
+        %157 = OpLabel
+               OpBranch %150
+        %150 = OpLabel
+         %67 = OpLoad %int %i_4
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %i_4 %68
+               OpBranch %148
+        %149 = OpLabel
+               OpBranch %142
+        %142 = OpLabel
+         %69 = OpLoad %int %i_3
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %i_3 %70
+               OpBranch %140
+        %141 = OpLabel
+               OpBranch %134
+        %134 = OpLabel
+         %71 = OpLoad %int %i_2
+         %72 = OpIAdd %int %71 %int_1
+               OpStore %i_2 %72
+               OpBranch %132
+        %133 = OpLabel
+               OpBranch %126
+        %126 = OpLabel
+         %73 = OpLoad %int %i_1
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %i_1 %74
+               OpBranch %124
+        %125 = OpLabel
+               OpBranch %118
+        %118 = OpLabel
+         %75 = OpLoad %int %i_0
+         %76 = OpIAdd %int %75 %int_1
+               OpStore %i_0 %76
+               OpBranch %116
+        %117 = OpLabel
+        %204 = OpLoad %float %b
+        %205 = OpFAdd %float %204 %float_1
+               OpStore %b %205
+               OpBranch %110
+        %110 = OpLabel
+         %77 = OpLoad %int %i
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %i %78
+               OpBranch %108
+        %109 = OpLabel
+        %206 = OpLoad %float %b
+        %207 = OpLoad %float %a
+        %208 = OpLoad %float %a
+        %209 = OpLoad %float %b
+        %210 = OpCompositeConstruct %v4float %206 %207 %208 %209
+               OpStore %_GLF_color %210
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3345993
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,212 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[3];
+};
+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() {
+  float a = 0.0f;
+  float b = 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;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_104 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  a = x_104;
+  const float x_106 = asfloat(x_7[1].x);
+  b = x_106;
+  const int x_24 = asint(x_11[1].x);
+  i = x_24;
+  while (true) {
+    const int x_25 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_26 = asint(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_25 < x_26)) {
+    } else {
+      break;
+    }
+    const int x_27 = asint(x_11[1].x);
+    i_1 = x_27;
+    while (true) {
+      const int x_28 = i_1;
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_29 = asint(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      if ((x_28 < x_29)) {
+      } else {
+        break;
+      }
+      const int x_30 = asint(x_11[1].x);
+      i_2 = x_30;
+      while (true) {
+        const int x_31 = i_2;
+        const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+        const int x_32 = asint(x_11[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+        if ((x_31 < x_32)) {
+        } else {
+          break;
+        }
+        const int x_33 = asint(x_11[2].x);
+        i_3 = x_33;
+        while (true) {
+          const int x_34 = i_3;
+          const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+          const int x_35 = asint(x_11[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+          if ((x_34 < x_35)) {
+          } else {
+            break;
+          }
+          const int x_36 = asint(x_11[2].x);
+          i_4 = x_36;
+          while (true) {
+            const int x_37 = i_4;
+            const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+            const int x_38 = asint(x_11[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+            if ((x_37 < x_38)) {
+            } else {
+              break;
+            }
+            const int x_39 = asint(x_11[1].x);
+            i_5 = x_39;
+            while (true) {
+              const int x_40 = i_5;
+              const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+              const int x_41 = asint(x_11[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+              if ((x_40 < x_41)) {
+              } else {
+                break;
+              }
+              const int x_42 = asint(x_11[1].x);
+              i_6 = x_42;
+              while (true) {
+                const int x_43 = i_6;
+                const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+                const int x_44 = asint(x_11[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+                if ((x_43 < x_44)) {
+                } else {
+                  break;
+                }
+                const int x_45 = asint(x_11[1].x);
+                i_7 = x_45;
+                while (true) {
+                  const int x_46 = i_7;
+                  const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+                  const int x_47 = asint(x_11[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+                  if ((x_46 < x_47)) {
+                  } else {
+                    break;
+                  }
+                  const int x_48 = asint(x_11[1].x);
+                  i_8 = x_48;
+                  while (true) {
+                    const int x_49 = i_8;
+                    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+                    const int x_50 = asint(x_11[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+                    if ((x_49 < x_50)) {
+                    } else {
+                      break;
+                    }
+                    const int x_51 = asint(x_11[1].x);
+                    i_9 = x_51;
+                    while (true) {
+                      const int x_52 = i_9;
+                      const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+                      const int x_53 = asint(x_11[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+                      if ((x_52 < x_53)) {
+                      } else {
+                        break;
+                      }
+                      const int x_54 = asint(x_11[1].x);
+                      i_10 = x_54;
+                      while (true) {
+                        const int x_55 = i_10;
+                        const uint scalar_offset_11 = ((16u * uint(0))) / 4;
+                        const int x_56 = asint(x_11[scalar_offset_11 / 4][scalar_offset_11 % 4]);
+                        if ((x_55 < x_56)) {
+                        } else {
+                          break;
+                        }
+                        const float x_196 = asfloat(x_7[1].x);
+                        a = x_196;
+                        const float x_198 = gl_FragCoord.y;
+                        const float x_200 = asfloat(x_7[1].x);
+                        if ((x_198 > x_200)) {
+                          break;
+                        }
+                        {
+                          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);
+      }
+    }
+    b = (b + 1.0f);
+    {
+      i = (i + 1);
+    }
+  }
+  x_GLF_color = float4(b, a, a, b);
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8d410b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.msl
@@ -0,0 +1,229 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_11, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float a = 0.0f;
+  float b = 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;
+  float const x_104 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  a = x_104;
+  float const x_106 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  b = x_106;
+  int const x_24 = x_11.x_GLF_uniform_int_values.arr[1].el;
+  i = x_24;
+  while (true) {
+    int const x_25 = i;
+    int const x_26 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_25 < x_26)) {
+    } else {
+      break;
+    }
+    int const x_27 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    i_1 = x_27;
+    while (true) {
+      int const x_28 = i_1;
+      int const x_29 = x_11.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_28 < x_29)) {
+      } else {
+        break;
+      }
+      int const x_30 = x_11.x_GLF_uniform_int_values.arr[1].el;
+      i_2 = x_30;
+      while (true) {
+        int const x_31 = i_2;
+        int const x_32 = x_11.x_GLF_uniform_int_values.arr[0].el;
+        if ((x_31 < x_32)) {
+        } else {
+          break;
+        }
+        int const x_33 = x_11.x_GLF_uniform_int_values.arr[2].el;
+        i_3 = x_33;
+        while (true) {
+          int const x_34 = i_3;
+          int const x_35 = x_11.x_GLF_uniform_int_values.arr[0].el;
+          if ((x_34 < x_35)) {
+          } else {
+            break;
+          }
+          int const x_36 = x_11.x_GLF_uniform_int_values.arr[2].el;
+          i_4 = x_36;
+          while (true) {
+            int const x_37 = i_4;
+            int const x_38 = x_11.x_GLF_uniform_int_values.arr[0].el;
+            if ((x_37 < x_38)) {
+            } else {
+              break;
+            }
+            int const x_39 = x_11.x_GLF_uniform_int_values.arr[1].el;
+            i_5 = x_39;
+            while (true) {
+              int const x_40 = i_5;
+              int const x_41 = x_11.x_GLF_uniform_int_values.arr[0].el;
+              if ((x_40 < x_41)) {
+              } else {
+                break;
+              }
+              int const x_42 = x_11.x_GLF_uniform_int_values.arr[1].el;
+              i_6 = x_42;
+              while (true) {
+                int const x_43 = i_6;
+                int const x_44 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                if ((x_43 < x_44)) {
+                } else {
+                  break;
+                }
+                int const x_45 = x_11.x_GLF_uniform_int_values.arr[1].el;
+                i_7 = x_45;
+                while (true) {
+                  int const x_46 = i_7;
+                  int const x_47 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                  if ((x_46 < x_47)) {
+                  } else {
+                    break;
+                  }
+                  int const x_48 = x_11.x_GLF_uniform_int_values.arr[1].el;
+                  i_8 = x_48;
+                  while (true) {
+                    int const x_49 = i_8;
+                    int const x_50 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                    if ((x_49 < x_50)) {
+                    } else {
+                      break;
+                    }
+                    int const x_51 = x_11.x_GLF_uniform_int_values.arr[1].el;
+                    i_9 = x_51;
+                    while (true) {
+                      int const x_52 = i_9;
+                      int const x_53 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                      if ((x_52 < x_53)) {
+                      } else {
+                        break;
+                      }
+                      int const x_54 = x_11.x_GLF_uniform_int_values.arr[1].el;
+                      i_10 = x_54;
+                      while (true) {
+                        int const x_55 = i_10;
+                        int const x_56 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                        if ((x_55 < x_56)) {
+                        } else {
+                          break;
+                        }
+                        float const x_196 = x_7.x_GLF_uniform_float_values.arr[1].el;
+                        a = x_196;
+                        float const x_198 = (*(tint_symbol_5)).y;
+                        float const x_200 = x_7.x_GLF_uniform_float_values.arr[1].el;
+                        if ((x_198 > x_200)) {
+                          break;
+                        }
+                        {
+                          int const x_57 = i_10;
+                          i_10 = (x_57 + 1);
+                        }
+                      }
+                      {
+                        int const x_59 = i_9;
+                        i_9 = (x_59 + 1);
+                      }
+                    }
+                    {
+                      int const x_61 = i_8;
+                      i_8 = (x_61 + 1);
+                    }
+                  }
+                  {
+                    int const x_63 = i_7;
+                    i_7 = (x_63 + 1);
+                  }
+                }
+                {
+                  int const x_65 = i_6;
+                  i_6 = (x_65 + 1);
+                }
+              }
+              {
+                int const x_67 = i_5;
+                i_5 = (x_67 + 1);
+              }
+            }
+            {
+              int const x_69 = i_4;
+              i_4 = (x_69 + 1);
+            }
+          }
+          {
+            int const x_71 = i_3;
+            i_3 = (x_71 + 1);
+          }
+        }
+        {
+          int const x_73 = i_2;
+          i_2 = (x_73 + 1);
+        }
+      }
+      {
+        int const x_75 = i_1;
+        i_1 = (x_75 + 1);
+      }
+    }
+    float const x_204 = b;
+    b = (x_204 + 1.0f);
+    {
+      int const x_77 = i;
+      i = (x_77 + 1);
+    }
+  }
+  float const x_206 = b;
+  float const x_207 = a;
+  float const x_208 = a;
+  float const x_209 = b;
+  *(tint_symbol_6) = float4(x_206, x_207, x_208, x_209);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_11, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2125db7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,441 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 252
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %i_3 "i_3"
+               OpName %i_4 "i_4"
+               OpName %i_5 "i_5"
+               OpName %i_6 "i_6"
+               OpName %i_7 "i_7"
+               OpName %i_8 "i_8"
+               OpName %i_9 "i_9"
+               OpName %i_10 "i_10"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %239 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %29
+          %b = OpVariable %_ptr_Function_float Function %29
+          %i = OpVariable %_ptr_Function_int Function %33
+        %i_1 = OpVariable %_ptr_Function_int Function %33
+        %i_2 = OpVariable %_ptr_Function_int Function %33
+        %i_3 = OpVariable %_ptr_Function_int Function %33
+        %i_4 = OpVariable %_ptr_Function_int Function %33
+        %i_5 = OpVariable %_ptr_Function_int Function %33
+        %i_6 = OpVariable %_ptr_Function_int Function %33
+        %i_7 = OpVariable %_ptr_Function_int Function %33
+        %i_8 = OpVariable %_ptr_Function_int Function %33
+        %i_9 = OpVariable %_ptr_Function_int Function %33
+       %i_10 = OpVariable %_ptr_Function_int Function %33
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %48 = OpLoad %float %47
+               OpStore %a %48
+         %50 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %51 = OpLoad %float %50
+               OpStore %b %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %54 = OpLoad %int %53
+               OpStore %i %54
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpSLessThan %bool %59 %61
+               OpSelectionMerge %64 None
+               OpBranchConditional %62 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %56
+         %64 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %68 = OpLoad %int %67
+               OpStore %i_1 %68
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %i_1
+         %74 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpSLessThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %70
+         %77 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %81 = OpLoad %int %80
+               OpStore %i_2 %81
+               OpBranch %82
+         %82 = OpLabel
+               OpLoopMerge %83 %84 None
+               OpBranch %85
+         %85 = OpLabel
+         %86 = OpLoad %int %i_2
+         %87 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpSLessThan %bool %86 %88
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+               OpBranch %90
+         %92 = OpLabel
+               OpBranch %83
+         %90 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %95 = OpLoad %int %94
+               OpStore %i_3 %95
+               OpBranch %96
+         %96 = OpLabel
+               OpLoopMerge %97 %98 None
+               OpBranch %99
+         %99 = OpLabel
+        %100 = OpLoad %int %i_3
+        %101 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %102 = OpLoad %int %101
+        %103 = OpSLessThan %bool %100 %102
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+               OpBranch %97
+        %104 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+        %108 = OpLoad %int %107
+               OpStore %i_4 %108
+               OpBranch %109
+        %109 = OpLabel
+               OpLoopMerge %110 %111 None
+               OpBranch %112
+        %112 = OpLabel
+        %113 = OpLoad %int %i_4
+        %114 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %115 = OpLoad %int %114
+        %116 = OpSLessThan %bool %113 %115
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %119
+        %118 = OpLabel
+               OpBranch %117
+        %119 = OpLabel
+               OpBranch %110
+        %117 = OpLabel
+        %120 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %121 = OpLoad %int %120
+               OpStore %i_5 %121
+               OpBranch %122
+        %122 = OpLabel
+               OpLoopMerge %123 %124 None
+               OpBranch %125
+        %125 = OpLabel
+        %126 = OpLoad %int %i_5
+        %127 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %128 = OpLoad %int %127
+        %129 = OpSLessThan %bool %126 %128
+               OpSelectionMerge %130 None
+               OpBranchConditional %129 %131 %132
+        %131 = OpLabel
+               OpBranch %130
+        %132 = OpLabel
+               OpBranch %123
+        %130 = OpLabel
+        %133 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %134 = OpLoad %int %133
+               OpStore %i_6 %134
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %139 = OpLoad %int %i_6
+        %140 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %141 = OpLoad %int %140
+        %142 = OpSLessThan %bool %139 %141
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %145
+        %144 = OpLabel
+               OpBranch %143
+        %145 = OpLabel
+               OpBranch %136
+        %143 = OpLabel
+        %146 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %147 = OpLoad %int %146
+               OpStore %i_7 %147
+               OpBranch %148
+        %148 = OpLabel
+               OpLoopMerge %149 %150 None
+               OpBranch %151
+        %151 = OpLabel
+        %152 = OpLoad %int %i_7
+        %153 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %154 = OpLoad %int %153
+        %155 = OpSLessThan %bool %152 %154
+               OpSelectionMerge %156 None
+               OpBranchConditional %155 %157 %158
+        %157 = OpLabel
+               OpBranch %156
+        %158 = OpLabel
+               OpBranch %149
+        %156 = OpLabel
+        %159 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %160 = OpLoad %int %159
+               OpStore %i_8 %160
+               OpBranch %161
+        %161 = OpLabel
+               OpLoopMerge %162 %163 None
+               OpBranch %164
+        %164 = OpLabel
+        %165 = OpLoad %int %i_8
+        %166 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %167 = OpLoad %int %166
+        %168 = OpSLessThan %bool %165 %167
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %171
+        %170 = OpLabel
+               OpBranch %169
+        %171 = OpLabel
+               OpBranch %162
+        %169 = OpLabel
+        %172 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %173 = OpLoad %int %172
+               OpStore %i_9 %173
+               OpBranch %174
+        %174 = OpLabel
+               OpLoopMerge %175 %176 None
+               OpBranch %177
+        %177 = OpLabel
+        %178 = OpLoad %int %i_9
+        %179 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %180 = OpLoad %int %179
+        %181 = OpSLessThan %bool %178 %180
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %184
+        %183 = OpLabel
+               OpBranch %182
+        %184 = OpLabel
+               OpBranch %175
+        %182 = OpLabel
+        %185 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %186 = OpLoad %int %185
+               OpStore %i_10 %186
+               OpBranch %187
+        %187 = OpLabel
+               OpLoopMerge %188 %189 None
+               OpBranch %190
+        %190 = OpLabel
+        %191 = OpLoad %int %i_10
+        %192 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %193 = OpLoad %int %192
+        %194 = OpSLessThan %bool %191 %193
+               OpSelectionMerge %195 None
+               OpBranchConditional %194 %196 %197
+        %196 = OpLabel
+               OpBranch %195
+        %197 = OpLabel
+               OpBranch %188
+        %195 = OpLabel
+        %198 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %199 = OpLoad %float %198
+               OpStore %a %199
+        %202 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %203 = OpLoad %float %202
+        %204 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %205 = OpLoad %float %204
+        %206 = OpFOrdGreaterThan %bool %203 %205
+               OpSelectionMerge %207 None
+               OpBranchConditional %206 %208 %207
+        %208 = OpLabel
+               OpBranch %188
+        %207 = OpLabel
+               OpBranch %189
+        %189 = OpLabel
+        %209 = OpLoad %int %i_10
+        %210 = OpIAdd %int %209 %int_1
+               OpStore %i_10 %210
+               OpBranch %187
+        %188 = OpLabel
+               OpBranch %176
+        %176 = OpLabel
+        %211 = OpLoad %int %i_9
+        %212 = OpIAdd %int %211 %int_1
+               OpStore %i_9 %212
+               OpBranch %174
+        %175 = OpLabel
+               OpBranch %163
+        %163 = OpLabel
+        %213 = OpLoad %int %i_8
+        %214 = OpIAdd %int %213 %int_1
+               OpStore %i_8 %214
+               OpBranch %161
+        %162 = OpLabel
+               OpBranch %150
+        %150 = OpLabel
+        %215 = OpLoad %int %i_7
+        %216 = OpIAdd %int %215 %int_1
+               OpStore %i_7 %216
+               OpBranch %148
+        %149 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %217 = OpLoad %int %i_6
+        %218 = OpIAdd %int %217 %int_1
+               OpStore %i_6 %218
+               OpBranch %135
+        %136 = OpLabel
+               OpBranch %124
+        %124 = OpLabel
+        %219 = OpLoad %int %i_5
+        %220 = OpIAdd %int %219 %int_1
+               OpStore %i_5 %220
+               OpBranch %122
+        %123 = OpLabel
+               OpBranch %111
+        %111 = OpLabel
+        %221 = OpLoad %int %i_4
+        %222 = OpIAdd %int %221 %int_1
+               OpStore %i_4 %222
+               OpBranch %109
+        %110 = OpLabel
+               OpBranch %98
+         %98 = OpLabel
+        %223 = OpLoad %int %i_3
+        %224 = OpIAdd %int %223 %int_1
+               OpStore %i_3 %224
+               OpBranch %96
+         %97 = OpLabel
+               OpBranch %84
+         %84 = OpLabel
+        %225 = OpLoad %int %i_2
+        %226 = OpIAdd %int %225 %int_1
+               OpStore %i_2 %226
+               OpBranch %82
+         %83 = OpLabel
+               OpBranch %71
+         %71 = OpLabel
+        %227 = OpLoad %int %i_1
+        %228 = OpIAdd %int %227 %int_1
+               OpStore %i_1 %228
+               OpBranch %69
+         %70 = OpLabel
+        %229 = OpLoad %float %b
+        %231 = OpFAdd %float %229 %float_1
+               OpStore %b %231
+               OpBranch %57
+         %57 = OpLabel
+        %232 = OpLoad %int %i
+        %233 = OpIAdd %int %232 %int_1
+               OpStore %i %233
+               OpBranch %55
+         %56 = OpLabel
+        %234 = OpLoad %float %b
+        %235 = OpLoad %float %a
+        %236 = OpLoad %float %a
+        %237 = OpLoad %float %b
+        %238 = OpCompositeConstruct %v4float %234 %235 %236 %237
+               OpStore %x_GLF_color %238
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %239
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %243 = OpLabel
+        %244 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %244
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %246 = OpLabel
+        %247 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %247
+        %248 = OpFunctionCall %void %main_1
+        %250 = OpLoad %v4float %x_GLF_color
+        %251 = OpCompositeConstruct %main_out %250
+        %249 = OpFunctionCall %void %tint_symbol_3 %251
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6a32b2d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,233 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  var i_4 : i32;
+  var i_5 : i32;
+  var i_6 : i32;
+  var i_7 : i32;
+  var i_8 : i32;
+  var i_9 : i32;
+  var i_10 : i32;
+  let x_104 : f32 = x_7.x_GLF_uniform_float_values[0];
+  a = x_104;
+  let x_106 : f32 = x_7.x_GLF_uniform_float_values[1];
+  b = x_106;
+  let x_24 : i32 = x_11.x_GLF_uniform_int_values[1];
+  i = x_24;
+  loop {
+    let x_25 : i32 = i;
+    let x_26 : i32 = x_11.x_GLF_uniform_int_values[0];
+    if ((x_25 < x_26)) {
+    } else {
+      break;
+    }
+    let x_27 : i32 = x_11.x_GLF_uniform_int_values[1];
+    i_1 = x_27;
+    loop {
+      let x_28 : i32 = i_1;
+      let x_29 : i32 = x_11.x_GLF_uniform_int_values[0];
+      if ((x_28 < x_29)) {
+      } else {
+        break;
+      }
+      let x_30 : i32 = x_11.x_GLF_uniform_int_values[1];
+      i_2 = x_30;
+      loop {
+        let x_31 : i32 = i_2;
+        let x_32 : i32 = x_11.x_GLF_uniform_int_values[0];
+        if ((x_31 < x_32)) {
+        } else {
+          break;
+        }
+        let x_33 : i32 = x_11.x_GLF_uniform_int_values[2];
+        i_3 = x_33;
+        loop {
+          let x_34 : i32 = i_3;
+          let x_35 : i32 = x_11.x_GLF_uniform_int_values[0];
+          if ((x_34 < x_35)) {
+          } else {
+            break;
+          }
+          let x_36 : i32 = x_11.x_GLF_uniform_int_values[2];
+          i_4 = x_36;
+          loop {
+            let x_37 : i32 = i_4;
+            let x_38 : i32 = x_11.x_GLF_uniform_int_values[0];
+            if ((x_37 < x_38)) {
+            } else {
+              break;
+            }
+            let x_39 : i32 = x_11.x_GLF_uniform_int_values[1];
+            i_5 = x_39;
+            loop {
+              let x_40 : i32 = i_5;
+              let x_41 : i32 = x_11.x_GLF_uniform_int_values[0];
+              if ((x_40 < x_41)) {
+              } else {
+                break;
+              }
+              let x_42 : i32 = x_11.x_GLF_uniform_int_values[1];
+              i_6 = x_42;
+              loop {
+                let x_43 : i32 = i_6;
+                let x_44 : i32 = x_11.x_GLF_uniform_int_values[0];
+                if ((x_43 < x_44)) {
+                } else {
+                  break;
+                }
+                let x_45 : i32 = x_11.x_GLF_uniform_int_values[1];
+                i_7 = x_45;
+                loop {
+                  let x_46 : i32 = i_7;
+                  let x_47 : i32 = x_11.x_GLF_uniform_int_values[0];
+                  if ((x_46 < x_47)) {
+                  } else {
+                    break;
+                  }
+                  let x_48 : i32 = x_11.x_GLF_uniform_int_values[1];
+                  i_8 = x_48;
+                  loop {
+                    let x_49 : i32 = i_8;
+                    let x_50 : i32 = x_11.x_GLF_uniform_int_values[0];
+                    if ((x_49 < x_50)) {
+                    } else {
+                      break;
+                    }
+                    let x_51 : i32 = x_11.x_GLF_uniform_int_values[1];
+                    i_9 = x_51;
+                    loop {
+                      let x_52 : i32 = i_9;
+                      let x_53 : i32 = x_11.x_GLF_uniform_int_values[0];
+                      if ((x_52 < x_53)) {
+                      } else {
+                        break;
+                      }
+                      let x_54 : i32 = x_11.x_GLF_uniform_int_values[1];
+                      i_10 = x_54;
+                      loop {
+                        let x_55 : i32 = i_10;
+                        let x_56 : i32 = x_11.x_GLF_uniform_int_values[0];
+                        if ((x_55 < x_56)) {
+                        } else {
+                          break;
+                        }
+                        let x_196 : f32 = x_7.x_GLF_uniform_float_values[1];
+                        a = x_196;
+                        let x_198 : f32 = gl_FragCoord.y;
+                        let x_200 : f32 = x_7.x_GLF_uniform_float_values[1];
+                        if ((x_198 > x_200)) {
+                          break;
+                        }
+
+                        continuing {
+                          let x_57 : i32 = i_10;
+                          i_10 = (x_57 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_59 : i32 = i_9;
+                        i_9 = (x_59 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_61 : i32 = i_8;
+                      i_8 = (x_61 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_63 : i32 = i_7;
+                    i_7 = (x_63 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_65 : i32 = i_6;
+                  i_6 = (x_65 + 1);
+                }
+              }
+
+              continuing {
+                let x_67 : i32 = i_5;
+                i_5 = (x_67 + 1);
+              }
+            }
+
+            continuing {
+              let x_69 : i32 = i_4;
+              i_4 = (x_69 + 1);
+            }
+          }
+
+          continuing {
+            let x_71 : i32 = i_3;
+            i_3 = (x_71 + 1);
+          }
+        }
+
+        continuing {
+          let x_73 : i32 = i_2;
+          i_2 = (x_73 + 1);
+        }
+      }
+
+      continuing {
+        let x_75 : i32 = i_1;
+        i_1 = (x_75 + 1);
+      }
+    }
+    let x_204 : f32 = b;
+    b = (x_204 + 1.0);
+
+    continuing {
+      let x_77 : i32 = i;
+      i = (x_77 + 1);
+    }
+  }
+  let x_206 : f32 = b;
+  let x_207 : f32 = a;
+  let x_208 : f32 = a;
+  let x_209 : f32 = b;
+  x_GLF_color = vec4<f32>(x_206, x_207, x_208, x_209);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
new file mode 100644
index 0000000..6a32b2d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
@@ -0,0 +1,233 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  var i_4 : i32;
+  var i_5 : i32;
+  var i_6 : i32;
+  var i_7 : i32;
+  var i_8 : i32;
+  var i_9 : i32;
+  var i_10 : i32;
+  let x_104 : f32 = x_7.x_GLF_uniform_float_values[0];
+  a = x_104;
+  let x_106 : f32 = x_7.x_GLF_uniform_float_values[1];
+  b = x_106;
+  let x_24 : i32 = x_11.x_GLF_uniform_int_values[1];
+  i = x_24;
+  loop {
+    let x_25 : i32 = i;
+    let x_26 : i32 = x_11.x_GLF_uniform_int_values[0];
+    if ((x_25 < x_26)) {
+    } else {
+      break;
+    }
+    let x_27 : i32 = x_11.x_GLF_uniform_int_values[1];
+    i_1 = x_27;
+    loop {
+      let x_28 : i32 = i_1;
+      let x_29 : i32 = x_11.x_GLF_uniform_int_values[0];
+      if ((x_28 < x_29)) {
+      } else {
+        break;
+      }
+      let x_30 : i32 = x_11.x_GLF_uniform_int_values[1];
+      i_2 = x_30;
+      loop {
+        let x_31 : i32 = i_2;
+        let x_32 : i32 = x_11.x_GLF_uniform_int_values[0];
+        if ((x_31 < x_32)) {
+        } else {
+          break;
+        }
+        let x_33 : i32 = x_11.x_GLF_uniform_int_values[2];
+        i_3 = x_33;
+        loop {
+          let x_34 : i32 = i_3;
+          let x_35 : i32 = x_11.x_GLF_uniform_int_values[0];
+          if ((x_34 < x_35)) {
+          } else {
+            break;
+          }
+          let x_36 : i32 = x_11.x_GLF_uniform_int_values[2];
+          i_4 = x_36;
+          loop {
+            let x_37 : i32 = i_4;
+            let x_38 : i32 = x_11.x_GLF_uniform_int_values[0];
+            if ((x_37 < x_38)) {
+            } else {
+              break;
+            }
+            let x_39 : i32 = x_11.x_GLF_uniform_int_values[1];
+            i_5 = x_39;
+            loop {
+              let x_40 : i32 = i_5;
+              let x_41 : i32 = x_11.x_GLF_uniform_int_values[0];
+              if ((x_40 < x_41)) {
+              } else {
+                break;
+              }
+              let x_42 : i32 = x_11.x_GLF_uniform_int_values[1];
+              i_6 = x_42;
+              loop {
+                let x_43 : i32 = i_6;
+                let x_44 : i32 = x_11.x_GLF_uniform_int_values[0];
+                if ((x_43 < x_44)) {
+                } else {
+                  break;
+                }
+                let x_45 : i32 = x_11.x_GLF_uniform_int_values[1];
+                i_7 = x_45;
+                loop {
+                  let x_46 : i32 = i_7;
+                  let x_47 : i32 = x_11.x_GLF_uniform_int_values[0];
+                  if ((x_46 < x_47)) {
+                  } else {
+                    break;
+                  }
+                  let x_48 : i32 = x_11.x_GLF_uniform_int_values[1];
+                  i_8 = x_48;
+                  loop {
+                    let x_49 : i32 = i_8;
+                    let x_50 : i32 = x_11.x_GLF_uniform_int_values[0];
+                    if ((x_49 < x_50)) {
+                    } else {
+                      break;
+                    }
+                    let x_51 : i32 = x_11.x_GLF_uniform_int_values[1];
+                    i_9 = x_51;
+                    loop {
+                      let x_52 : i32 = i_9;
+                      let x_53 : i32 = x_11.x_GLF_uniform_int_values[0];
+                      if ((x_52 < x_53)) {
+                      } else {
+                        break;
+                      }
+                      let x_54 : i32 = x_11.x_GLF_uniform_int_values[1];
+                      i_10 = x_54;
+                      loop {
+                        let x_55 : i32 = i_10;
+                        let x_56 : i32 = x_11.x_GLF_uniform_int_values[0];
+                        if ((x_55 < x_56)) {
+                        } else {
+                          break;
+                        }
+                        let x_196 : f32 = x_7.x_GLF_uniform_float_values[1];
+                        a = x_196;
+                        let x_198 : f32 = gl_FragCoord.y;
+                        let x_200 : f32 = x_7.x_GLF_uniform_float_values[1];
+                        if ((x_198 > x_200)) {
+                          break;
+                        }
+
+                        continuing {
+                          let x_57 : i32 = i_10;
+                          i_10 = (x_57 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_59 : i32 = i_9;
+                        i_9 = (x_59 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_61 : i32 = i_8;
+                      i_8 = (x_61 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_63 : i32 = i_7;
+                    i_7 = (x_63 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_65 : i32 = i_6;
+                  i_6 = (x_65 + 1);
+                }
+              }
+
+              continuing {
+                let x_67 : i32 = i_5;
+                i_5 = (x_67 + 1);
+              }
+            }
+
+            continuing {
+              let x_69 : i32 = i_4;
+              i_4 = (x_69 + 1);
+            }
+          }
+
+          continuing {
+            let x_71 : i32 = i_3;
+            i_3 = (x_71 + 1);
+          }
+        }
+
+        continuing {
+          let x_73 : i32 = i_2;
+          i_2 = (x_73 + 1);
+        }
+      }
+
+      continuing {
+        let x_75 : i32 = i_1;
+        i_1 = (x_75 + 1);
+      }
+    }
+    let x_204 : f32 = b;
+    b = (x_204 + 1.0);
+
+    continuing {
+      let x_77 : i32 = i;
+      i = (x_77 + 1);
+    }
+  }
+  let x_206 : f32 = b;
+  let x_207 : f32 = a;
+  let x_208 : f32 = a;
+  let x_209 : f32 = b;
+  x_GLF_color = vec4<f32>(x_206, x_207, x_208, x_209);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3345993
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,212 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[3];
+};
+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() {
+  float a = 0.0f;
+  float b = 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;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_104 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  a = x_104;
+  const float x_106 = asfloat(x_7[1].x);
+  b = x_106;
+  const int x_24 = asint(x_11[1].x);
+  i = x_24;
+  while (true) {
+    const int x_25 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_26 = asint(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_25 < x_26)) {
+    } else {
+      break;
+    }
+    const int x_27 = asint(x_11[1].x);
+    i_1 = x_27;
+    while (true) {
+      const int x_28 = i_1;
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_29 = asint(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      if ((x_28 < x_29)) {
+      } else {
+        break;
+      }
+      const int x_30 = asint(x_11[1].x);
+      i_2 = x_30;
+      while (true) {
+        const int x_31 = i_2;
+        const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+        const int x_32 = asint(x_11[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+        if ((x_31 < x_32)) {
+        } else {
+          break;
+        }
+        const int x_33 = asint(x_11[2].x);
+        i_3 = x_33;
+        while (true) {
+          const int x_34 = i_3;
+          const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+          const int x_35 = asint(x_11[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+          if ((x_34 < x_35)) {
+          } else {
+            break;
+          }
+          const int x_36 = asint(x_11[2].x);
+          i_4 = x_36;
+          while (true) {
+            const int x_37 = i_4;
+            const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+            const int x_38 = asint(x_11[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+            if ((x_37 < x_38)) {
+            } else {
+              break;
+            }
+            const int x_39 = asint(x_11[1].x);
+            i_5 = x_39;
+            while (true) {
+              const int x_40 = i_5;
+              const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+              const int x_41 = asint(x_11[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+              if ((x_40 < x_41)) {
+              } else {
+                break;
+              }
+              const int x_42 = asint(x_11[1].x);
+              i_6 = x_42;
+              while (true) {
+                const int x_43 = i_6;
+                const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+                const int x_44 = asint(x_11[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+                if ((x_43 < x_44)) {
+                } else {
+                  break;
+                }
+                const int x_45 = asint(x_11[1].x);
+                i_7 = x_45;
+                while (true) {
+                  const int x_46 = i_7;
+                  const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+                  const int x_47 = asint(x_11[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+                  if ((x_46 < x_47)) {
+                  } else {
+                    break;
+                  }
+                  const int x_48 = asint(x_11[1].x);
+                  i_8 = x_48;
+                  while (true) {
+                    const int x_49 = i_8;
+                    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+                    const int x_50 = asint(x_11[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+                    if ((x_49 < x_50)) {
+                    } else {
+                      break;
+                    }
+                    const int x_51 = asint(x_11[1].x);
+                    i_9 = x_51;
+                    while (true) {
+                      const int x_52 = i_9;
+                      const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+                      const int x_53 = asint(x_11[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+                      if ((x_52 < x_53)) {
+                      } else {
+                        break;
+                      }
+                      const int x_54 = asint(x_11[1].x);
+                      i_10 = x_54;
+                      while (true) {
+                        const int x_55 = i_10;
+                        const uint scalar_offset_11 = ((16u * uint(0))) / 4;
+                        const int x_56 = asint(x_11[scalar_offset_11 / 4][scalar_offset_11 % 4]);
+                        if ((x_55 < x_56)) {
+                        } else {
+                          break;
+                        }
+                        const float x_196 = asfloat(x_7[1].x);
+                        a = x_196;
+                        const float x_198 = gl_FragCoord.y;
+                        const float x_200 = asfloat(x_7[1].x);
+                        if ((x_198 > x_200)) {
+                          break;
+                        }
+                        {
+                          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);
+      }
+    }
+    b = (b + 1.0f);
+    {
+      i = (i + 1);
+    }
+  }
+  x_GLF_color = float4(b, a, a, b);
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8d410b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.msl
@@ -0,0 +1,229 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_11, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float a = 0.0f;
+  float b = 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;
+  float const x_104 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  a = x_104;
+  float const x_106 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  b = x_106;
+  int const x_24 = x_11.x_GLF_uniform_int_values.arr[1].el;
+  i = x_24;
+  while (true) {
+    int const x_25 = i;
+    int const x_26 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_25 < x_26)) {
+    } else {
+      break;
+    }
+    int const x_27 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    i_1 = x_27;
+    while (true) {
+      int const x_28 = i_1;
+      int const x_29 = x_11.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_28 < x_29)) {
+      } else {
+        break;
+      }
+      int const x_30 = x_11.x_GLF_uniform_int_values.arr[1].el;
+      i_2 = x_30;
+      while (true) {
+        int const x_31 = i_2;
+        int const x_32 = x_11.x_GLF_uniform_int_values.arr[0].el;
+        if ((x_31 < x_32)) {
+        } else {
+          break;
+        }
+        int const x_33 = x_11.x_GLF_uniform_int_values.arr[2].el;
+        i_3 = x_33;
+        while (true) {
+          int const x_34 = i_3;
+          int const x_35 = x_11.x_GLF_uniform_int_values.arr[0].el;
+          if ((x_34 < x_35)) {
+          } else {
+            break;
+          }
+          int const x_36 = x_11.x_GLF_uniform_int_values.arr[2].el;
+          i_4 = x_36;
+          while (true) {
+            int const x_37 = i_4;
+            int const x_38 = x_11.x_GLF_uniform_int_values.arr[0].el;
+            if ((x_37 < x_38)) {
+            } else {
+              break;
+            }
+            int const x_39 = x_11.x_GLF_uniform_int_values.arr[1].el;
+            i_5 = x_39;
+            while (true) {
+              int const x_40 = i_5;
+              int const x_41 = x_11.x_GLF_uniform_int_values.arr[0].el;
+              if ((x_40 < x_41)) {
+              } else {
+                break;
+              }
+              int const x_42 = x_11.x_GLF_uniform_int_values.arr[1].el;
+              i_6 = x_42;
+              while (true) {
+                int const x_43 = i_6;
+                int const x_44 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                if ((x_43 < x_44)) {
+                } else {
+                  break;
+                }
+                int const x_45 = x_11.x_GLF_uniform_int_values.arr[1].el;
+                i_7 = x_45;
+                while (true) {
+                  int const x_46 = i_7;
+                  int const x_47 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                  if ((x_46 < x_47)) {
+                  } else {
+                    break;
+                  }
+                  int const x_48 = x_11.x_GLF_uniform_int_values.arr[1].el;
+                  i_8 = x_48;
+                  while (true) {
+                    int const x_49 = i_8;
+                    int const x_50 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                    if ((x_49 < x_50)) {
+                    } else {
+                      break;
+                    }
+                    int const x_51 = x_11.x_GLF_uniform_int_values.arr[1].el;
+                    i_9 = x_51;
+                    while (true) {
+                      int const x_52 = i_9;
+                      int const x_53 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                      if ((x_52 < x_53)) {
+                      } else {
+                        break;
+                      }
+                      int const x_54 = x_11.x_GLF_uniform_int_values.arr[1].el;
+                      i_10 = x_54;
+                      while (true) {
+                        int const x_55 = i_10;
+                        int const x_56 = x_11.x_GLF_uniform_int_values.arr[0].el;
+                        if ((x_55 < x_56)) {
+                        } else {
+                          break;
+                        }
+                        float const x_196 = x_7.x_GLF_uniform_float_values.arr[1].el;
+                        a = x_196;
+                        float const x_198 = (*(tint_symbol_5)).y;
+                        float const x_200 = x_7.x_GLF_uniform_float_values.arr[1].el;
+                        if ((x_198 > x_200)) {
+                          break;
+                        }
+                        {
+                          int const x_57 = i_10;
+                          i_10 = (x_57 + 1);
+                        }
+                      }
+                      {
+                        int const x_59 = i_9;
+                        i_9 = (x_59 + 1);
+                      }
+                    }
+                    {
+                      int const x_61 = i_8;
+                      i_8 = (x_61 + 1);
+                    }
+                  }
+                  {
+                    int const x_63 = i_7;
+                    i_7 = (x_63 + 1);
+                  }
+                }
+                {
+                  int const x_65 = i_6;
+                  i_6 = (x_65 + 1);
+                }
+              }
+              {
+                int const x_67 = i_5;
+                i_5 = (x_67 + 1);
+              }
+            }
+            {
+              int const x_69 = i_4;
+              i_4 = (x_69 + 1);
+            }
+          }
+          {
+            int const x_71 = i_3;
+            i_3 = (x_71 + 1);
+          }
+        }
+        {
+          int const x_73 = i_2;
+          i_2 = (x_73 + 1);
+        }
+      }
+      {
+        int const x_75 = i_1;
+        i_1 = (x_75 + 1);
+      }
+    }
+    float const x_204 = b;
+    b = (x_204 + 1.0f);
+    {
+      int const x_77 = i;
+      i = (x_77 + 1);
+    }
+  }
+  float const x_206 = b;
+  float const x_207 = a;
+  float const x_208 = a;
+  float const x_209 = b;
+  *(tint_symbol_6) = float4(x_206, x_207, x_208, x_209);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_11, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2125db7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,441 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 252
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %i_3 "i_3"
+               OpName %i_4 "i_4"
+               OpName %i_5 "i_5"
+               OpName %i_6 "i_6"
+               OpName %i_7 "i_7"
+               OpName %i_8 "i_8"
+               OpName %i_9 "i_9"
+               OpName %i_10 "i_10"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %239 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %29
+          %b = OpVariable %_ptr_Function_float Function %29
+          %i = OpVariable %_ptr_Function_int Function %33
+        %i_1 = OpVariable %_ptr_Function_int Function %33
+        %i_2 = OpVariable %_ptr_Function_int Function %33
+        %i_3 = OpVariable %_ptr_Function_int Function %33
+        %i_4 = OpVariable %_ptr_Function_int Function %33
+        %i_5 = OpVariable %_ptr_Function_int Function %33
+        %i_6 = OpVariable %_ptr_Function_int Function %33
+        %i_7 = OpVariable %_ptr_Function_int Function %33
+        %i_8 = OpVariable %_ptr_Function_int Function %33
+        %i_9 = OpVariable %_ptr_Function_int Function %33
+       %i_10 = OpVariable %_ptr_Function_int Function %33
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %48 = OpLoad %float %47
+               OpStore %a %48
+         %50 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %51 = OpLoad %float %50
+               OpStore %b %51
+         %53 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %54 = OpLoad %int %53
+               OpStore %i %54
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpSLessThan %bool %59 %61
+               OpSelectionMerge %64 None
+               OpBranchConditional %62 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %56
+         %64 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %68 = OpLoad %int %67
+               OpStore %i_1 %68
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %i_1
+         %74 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpSLessThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %70
+         %77 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %81 = OpLoad %int %80
+               OpStore %i_2 %81
+               OpBranch %82
+         %82 = OpLabel
+               OpLoopMerge %83 %84 None
+               OpBranch %85
+         %85 = OpLabel
+         %86 = OpLoad %int %i_2
+         %87 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpSLessThan %bool %86 %88
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+               OpBranch %90
+         %92 = OpLabel
+               OpBranch %83
+         %90 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+         %95 = OpLoad %int %94
+               OpStore %i_3 %95
+               OpBranch %96
+         %96 = OpLabel
+               OpLoopMerge %97 %98 None
+               OpBranch %99
+         %99 = OpLabel
+        %100 = OpLoad %int %i_3
+        %101 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %102 = OpLoad %int %101
+        %103 = OpSLessThan %bool %100 %102
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+               OpBranch %97
+        %104 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_2
+        %108 = OpLoad %int %107
+               OpStore %i_4 %108
+               OpBranch %109
+        %109 = OpLabel
+               OpLoopMerge %110 %111 None
+               OpBranch %112
+        %112 = OpLabel
+        %113 = OpLoad %int %i_4
+        %114 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %115 = OpLoad %int %114
+        %116 = OpSLessThan %bool %113 %115
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %119
+        %118 = OpLabel
+               OpBranch %117
+        %119 = OpLabel
+               OpBranch %110
+        %117 = OpLabel
+        %120 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %121 = OpLoad %int %120
+               OpStore %i_5 %121
+               OpBranch %122
+        %122 = OpLabel
+               OpLoopMerge %123 %124 None
+               OpBranch %125
+        %125 = OpLabel
+        %126 = OpLoad %int %i_5
+        %127 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %128 = OpLoad %int %127
+        %129 = OpSLessThan %bool %126 %128
+               OpSelectionMerge %130 None
+               OpBranchConditional %129 %131 %132
+        %131 = OpLabel
+               OpBranch %130
+        %132 = OpLabel
+               OpBranch %123
+        %130 = OpLabel
+        %133 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %134 = OpLoad %int %133
+               OpStore %i_6 %134
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %139 = OpLoad %int %i_6
+        %140 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %141 = OpLoad %int %140
+        %142 = OpSLessThan %bool %139 %141
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %145
+        %144 = OpLabel
+               OpBranch %143
+        %145 = OpLabel
+               OpBranch %136
+        %143 = OpLabel
+        %146 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %147 = OpLoad %int %146
+               OpStore %i_7 %147
+               OpBranch %148
+        %148 = OpLabel
+               OpLoopMerge %149 %150 None
+               OpBranch %151
+        %151 = OpLabel
+        %152 = OpLoad %int %i_7
+        %153 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %154 = OpLoad %int %153
+        %155 = OpSLessThan %bool %152 %154
+               OpSelectionMerge %156 None
+               OpBranchConditional %155 %157 %158
+        %157 = OpLabel
+               OpBranch %156
+        %158 = OpLabel
+               OpBranch %149
+        %156 = OpLabel
+        %159 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %160 = OpLoad %int %159
+               OpStore %i_8 %160
+               OpBranch %161
+        %161 = OpLabel
+               OpLoopMerge %162 %163 None
+               OpBranch %164
+        %164 = OpLabel
+        %165 = OpLoad %int %i_8
+        %166 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %167 = OpLoad %int %166
+        %168 = OpSLessThan %bool %165 %167
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %171
+        %170 = OpLabel
+               OpBranch %169
+        %171 = OpLabel
+               OpBranch %162
+        %169 = OpLabel
+        %172 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %173 = OpLoad %int %172
+               OpStore %i_9 %173
+               OpBranch %174
+        %174 = OpLabel
+               OpLoopMerge %175 %176 None
+               OpBranch %177
+        %177 = OpLabel
+        %178 = OpLoad %int %i_9
+        %179 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %180 = OpLoad %int %179
+        %181 = OpSLessThan %bool %178 %180
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %184
+        %183 = OpLabel
+               OpBranch %182
+        %184 = OpLabel
+               OpBranch %175
+        %182 = OpLabel
+        %185 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+        %186 = OpLoad %int %185
+               OpStore %i_10 %186
+               OpBranch %187
+        %187 = OpLabel
+               OpLoopMerge %188 %189 None
+               OpBranch %190
+        %190 = OpLabel
+        %191 = OpLoad %int %i_10
+        %192 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+        %193 = OpLoad %int %192
+        %194 = OpSLessThan %bool %191 %193
+               OpSelectionMerge %195 None
+               OpBranchConditional %194 %196 %197
+        %196 = OpLabel
+               OpBranch %195
+        %197 = OpLabel
+               OpBranch %188
+        %195 = OpLabel
+        %198 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %199 = OpLoad %float %198
+               OpStore %a %199
+        %202 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %203 = OpLoad %float %202
+        %204 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %205 = OpLoad %float %204
+        %206 = OpFOrdGreaterThan %bool %203 %205
+               OpSelectionMerge %207 None
+               OpBranchConditional %206 %208 %207
+        %208 = OpLabel
+               OpBranch %188
+        %207 = OpLabel
+               OpBranch %189
+        %189 = OpLabel
+        %209 = OpLoad %int %i_10
+        %210 = OpIAdd %int %209 %int_1
+               OpStore %i_10 %210
+               OpBranch %187
+        %188 = OpLabel
+               OpBranch %176
+        %176 = OpLabel
+        %211 = OpLoad %int %i_9
+        %212 = OpIAdd %int %211 %int_1
+               OpStore %i_9 %212
+               OpBranch %174
+        %175 = OpLabel
+               OpBranch %163
+        %163 = OpLabel
+        %213 = OpLoad %int %i_8
+        %214 = OpIAdd %int %213 %int_1
+               OpStore %i_8 %214
+               OpBranch %161
+        %162 = OpLabel
+               OpBranch %150
+        %150 = OpLabel
+        %215 = OpLoad %int %i_7
+        %216 = OpIAdd %int %215 %int_1
+               OpStore %i_7 %216
+               OpBranch %148
+        %149 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %217 = OpLoad %int %i_6
+        %218 = OpIAdd %int %217 %int_1
+               OpStore %i_6 %218
+               OpBranch %135
+        %136 = OpLabel
+               OpBranch %124
+        %124 = OpLabel
+        %219 = OpLoad %int %i_5
+        %220 = OpIAdd %int %219 %int_1
+               OpStore %i_5 %220
+               OpBranch %122
+        %123 = OpLabel
+               OpBranch %111
+        %111 = OpLabel
+        %221 = OpLoad %int %i_4
+        %222 = OpIAdd %int %221 %int_1
+               OpStore %i_4 %222
+               OpBranch %109
+        %110 = OpLabel
+               OpBranch %98
+         %98 = OpLabel
+        %223 = OpLoad %int %i_3
+        %224 = OpIAdd %int %223 %int_1
+               OpStore %i_3 %224
+               OpBranch %96
+         %97 = OpLabel
+               OpBranch %84
+         %84 = OpLabel
+        %225 = OpLoad %int %i_2
+        %226 = OpIAdd %int %225 %int_1
+               OpStore %i_2 %226
+               OpBranch %82
+         %83 = OpLabel
+               OpBranch %71
+         %71 = OpLabel
+        %227 = OpLoad %int %i_1
+        %228 = OpIAdd %int %227 %int_1
+               OpStore %i_1 %228
+               OpBranch %69
+         %70 = OpLabel
+        %229 = OpLoad %float %b
+        %231 = OpFAdd %float %229 %float_1
+               OpStore %b %231
+               OpBranch %57
+         %57 = OpLabel
+        %232 = OpLoad %int %i
+        %233 = OpIAdd %int %232 %int_1
+               OpStore %i %233
+               OpBranch %55
+         %56 = OpLabel
+        %234 = OpLoad %float %b
+        %235 = OpLoad %float %a
+        %236 = OpLoad %float %a
+        %237 = OpLoad %float %b
+        %238 = OpCompositeConstruct %v4float %234 %235 %236 %237
+               OpStore %x_GLF_color %238
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %239
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %243 = OpLabel
+        %244 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %244
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %246 = OpLabel
+        %247 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %247
+        %248 = OpFunctionCall %void %main_1
+        %250 = OpLoad %v4float %x_GLF_color
+        %251 = OpCompositeConstruct %main_out %250
+        %249 = OpFunctionCall %void %tint_symbol_3 %251
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6a32b2d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,233 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  var i_4 : i32;
+  var i_5 : i32;
+  var i_6 : i32;
+  var i_7 : i32;
+  var i_8 : i32;
+  var i_9 : i32;
+  var i_10 : i32;
+  let x_104 : f32 = x_7.x_GLF_uniform_float_values[0];
+  a = x_104;
+  let x_106 : f32 = x_7.x_GLF_uniform_float_values[1];
+  b = x_106;
+  let x_24 : i32 = x_11.x_GLF_uniform_int_values[1];
+  i = x_24;
+  loop {
+    let x_25 : i32 = i;
+    let x_26 : i32 = x_11.x_GLF_uniform_int_values[0];
+    if ((x_25 < x_26)) {
+    } else {
+      break;
+    }
+    let x_27 : i32 = x_11.x_GLF_uniform_int_values[1];
+    i_1 = x_27;
+    loop {
+      let x_28 : i32 = i_1;
+      let x_29 : i32 = x_11.x_GLF_uniform_int_values[0];
+      if ((x_28 < x_29)) {
+      } else {
+        break;
+      }
+      let x_30 : i32 = x_11.x_GLF_uniform_int_values[1];
+      i_2 = x_30;
+      loop {
+        let x_31 : i32 = i_2;
+        let x_32 : i32 = x_11.x_GLF_uniform_int_values[0];
+        if ((x_31 < x_32)) {
+        } else {
+          break;
+        }
+        let x_33 : i32 = x_11.x_GLF_uniform_int_values[2];
+        i_3 = x_33;
+        loop {
+          let x_34 : i32 = i_3;
+          let x_35 : i32 = x_11.x_GLF_uniform_int_values[0];
+          if ((x_34 < x_35)) {
+          } else {
+            break;
+          }
+          let x_36 : i32 = x_11.x_GLF_uniform_int_values[2];
+          i_4 = x_36;
+          loop {
+            let x_37 : i32 = i_4;
+            let x_38 : i32 = x_11.x_GLF_uniform_int_values[0];
+            if ((x_37 < x_38)) {
+            } else {
+              break;
+            }
+            let x_39 : i32 = x_11.x_GLF_uniform_int_values[1];
+            i_5 = x_39;
+            loop {
+              let x_40 : i32 = i_5;
+              let x_41 : i32 = x_11.x_GLF_uniform_int_values[0];
+              if ((x_40 < x_41)) {
+              } else {
+                break;
+              }
+              let x_42 : i32 = x_11.x_GLF_uniform_int_values[1];
+              i_6 = x_42;
+              loop {
+                let x_43 : i32 = i_6;
+                let x_44 : i32 = x_11.x_GLF_uniform_int_values[0];
+                if ((x_43 < x_44)) {
+                } else {
+                  break;
+                }
+                let x_45 : i32 = x_11.x_GLF_uniform_int_values[1];
+                i_7 = x_45;
+                loop {
+                  let x_46 : i32 = i_7;
+                  let x_47 : i32 = x_11.x_GLF_uniform_int_values[0];
+                  if ((x_46 < x_47)) {
+                  } else {
+                    break;
+                  }
+                  let x_48 : i32 = x_11.x_GLF_uniform_int_values[1];
+                  i_8 = x_48;
+                  loop {
+                    let x_49 : i32 = i_8;
+                    let x_50 : i32 = x_11.x_GLF_uniform_int_values[0];
+                    if ((x_49 < x_50)) {
+                    } else {
+                      break;
+                    }
+                    let x_51 : i32 = x_11.x_GLF_uniform_int_values[1];
+                    i_9 = x_51;
+                    loop {
+                      let x_52 : i32 = i_9;
+                      let x_53 : i32 = x_11.x_GLF_uniform_int_values[0];
+                      if ((x_52 < x_53)) {
+                      } else {
+                        break;
+                      }
+                      let x_54 : i32 = x_11.x_GLF_uniform_int_values[1];
+                      i_10 = x_54;
+                      loop {
+                        let x_55 : i32 = i_10;
+                        let x_56 : i32 = x_11.x_GLF_uniform_int_values[0];
+                        if ((x_55 < x_56)) {
+                        } else {
+                          break;
+                        }
+                        let x_196 : f32 = x_7.x_GLF_uniform_float_values[1];
+                        a = x_196;
+                        let x_198 : f32 = gl_FragCoord.y;
+                        let x_200 : f32 = x_7.x_GLF_uniform_float_values[1];
+                        if ((x_198 > x_200)) {
+                          break;
+                        }
+
+                        continuing {
+                          let x_57 : i32 = i_10;
+                          i_10 = (x_57 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_59 : i32 = i_9;
+                        i_9 = (x_59 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_61 : i32 = i_8;
+                      i_8 = (x_61 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_63 : i32 = i_7;
+                    i_7 = (x_63 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_65 : i32 = i_6;
+                  i_6 = (x_65 + 1);
+                }
+              }
+
+              continuing {
+                let x_67 : i32 = i_5;
+                i_5 = (x_67 + 1);
+              }
+            }
+
+            continuing {
+              let x_69 : i32 = i_4;
+              i_4 = (x_69 + 1);
+            }
+          }
+
+          continuing {
+            let x_71 : i32 = i_3;
+            i_3 = (x_71 + 1);
+          }
+        }
+
+        continuing {
+          let x_73 : i32 = i_2;
+          i_2 = (x_73 + 1);
+        }
+      }
+
+      continuing {
+        let x_75 : i32 = i_1;
+        i_1 = (x_75 + 1);
+      }
+    }
+    let x_204 : f32 = b;
+    b = (x_204 + 1.0);
+
+    continuing {
+      let x_77 : i32 = i;
+      i = (x_77 + 1);
+    }
+  }
+  let x_206 : f32 = b;
+  let x_207 : f32 = a;
+  let x_208 : f32 = a;
+  let x_209 : f32 = b;
+  x_GLF_color = vec4<f32>(x_206, x_207, x_208, x_209);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm
new file mode 100644
index 0000000..c972caf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm
@@ -0,0 +1,185 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %values "values"
+               OpName %ref "ref"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %20 = OpConstantComposite %v2float %float_1 %float_1
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+     %values = OpVariable %_ptr_Function_v4float Function
+        %ref = OpVariable %_ptr_Function_v4float Function
+         %37 = OpExtInst %uint %1 PackHalf2x16 %20
+               OpStore %a %37
+         %38 = OpLoad %uint %a
+         %39 = OpExtInst %v4float %1 UnpackUnorm4x8 %38
+               OpStore %values %39
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpFDiv %float %43 %45
+         %47 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %48 = OpLoad %float %47
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpFDiv %float %48 %50
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpFDiv %float %53 %55
+         %57 = OpCompositeConstruct %v4float %41 %46 %51 %56
+               OpStore %ref %57
+         %58 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Function_float %values %59
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Function_float %ref %63
+         %65 = OpLoad %float %64
+         %66 = OpFSub %float %61 %65
+         %67 = OpExtInst %float %1 FAbs %66
+         %68 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %69 = OpLoad %float %68
+         %70 = OpFOrdLessThan %bool %67 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Function_float %values %74
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Function_float %ref %78
+         %80 = OpLoad %float %79
+         %81 = OpFSub %float %76 %80
+         %82 = OpExtInst %float %1 FAbs %81
+         %83 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %84 = OpLoad %float %83
+         %85 = OpFOrdLessThan %bool %82 %84
+               OpBranch %71
+         %71 = OpLabel
+         %86 = OpPhi %bool %70 %36 %85 %72
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Function_float %values %90
+         %92 = OpLoad %float %91
+         %93 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Function_float %ref %94
+         %96 = OpLoad %float %95
+         %97 = OpFSub %float %92 %96
+         %98 = OpExtInst %float %1 FAbs %97
+         %99 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+        %100 = OpLoad %float %99
+        %101 = OpFOrdLessThan %bool %98 %100
+               OpBranch %87
+         %87 = OpLabel
+        %102 = OpPhi %bool %86 %71 %101 %88
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Function_float %values %106
+        %108 = OpLoad %float %107
+        %109 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Function_float %ref %110
+        %112 = OpLoad %float %111
+        %113 = OpFSub %float %108 %112
+        %114 = OpExtInst %float %1 FAbs %113
+        %115 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+        %116 = OpLoad %float %115
+        %117 = OpFOrdLessThan %bool %114 %116
+               OpBranch %103
+        %103 = OpLabel
+        %118 = OpPhi %bool %102 %87 %117 %104
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %121
+        %120 = OpLabel
+        %122 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %123 = OpLoad %int %122
+        %124 = OpConvertSToF %float %123
+        %125 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %126
+        %128 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %129 = OpLoad %int %128
+        %130 = OpConvertSToF %float %129
+        %131 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %132 = OpLoad %int %131
+        %133 = OpConvertSToF %float %132
+        %134 = OpCompositeConstruct %v4float %124 %127 %130 %133
+               OpStore %_GLF_color %134
+               OpBranch %119
+        %121 = OpLabel
+        %135 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %136 = OpLoad %int %135
+        %137 = OpConvertSToF %float %136
+        %138 = OpCompositeConstruct %v4float %137 %137 %137 %137
+               OpStore %_GLF_color %138
+               OpBranch %119
+        %119 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f87712b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,112 @@
+uint tint_pack2x16float(float2 param_0) {
+  uint2 i = f32tof16(param_0);
+  return i.x | (i.y << 16);
+}
+
+float4 tint_unpack4x8unorm(uint param_0) {
+  uint j = param_0;
+  uint4 i = uint4(j & 0xff, (j >> 8) & 0xff, (j >> 16) & 0xff, j >> 24);
+  return float4(i) / 255.0;
+}
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[4];
+};
+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() {
+  uint a = 0u;
+  float4 values = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 ref = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_117 = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  bool x_118_phi = false;
+  a = tint_pack2x16float(float2(1.0f, 1.0f));
+  values = tint_unpack4x8unorm(a);
+  const float x_41 = asfloat(x_8[3].x);
+  const float x_43 = asfloat(x_8[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  const float x_48 = asfloat(x_8[3].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_50 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_53 = asfloat(x_8[1].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_55 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  ref = float4(x_41, (x_43 / x_45), (x_48 / x_50), (x_53 / x_55));
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_59 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_61 = values[x_59];
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_63 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const float x_65 = ref[x_63];
+  const float x_69 = asfloat(x_8[2].x);
+  const bool x_70 = (abs((x_61 - x_65)) < x_69);
+  x_86_phi = x_70;
+  if (x_70) {
+    const int x_74 = asint(x_10[1].x);
+    const float x_76 = values[x_74];
+    const int x_78 = asint(x_10[1].x);
+    const float x_80 = ref[x_78];
+    const float x_84 = asfloat(x_8[2].x);
+    x_85 = (abs((x_76 - x_80)) < x_84);
+    x_86_phi = x_85;
+  }
+  const bool x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    const int x_90 = asint(x_10[3].x);
+    const float x_92 = values[x_90];
+    const int x_94 = asint(x_10[3].x);
+    const float x_96 = ref[x_94];
+    const float x_100 = asfloat(x_8[2].x);
+    x_101 = (abs((x_92 - x_96)) < x_100);
+    x_102_phi = x_101;
+  }
+  const bool x_102 = x_102_phi;
+  x_118_phi = x_102;
+  if (x_102) {
+    const int x_106 = asint(x_10[2].x);
+    const float x_108 = values[x_106];
+    const int x_110 = asint(x_10[2].x);
+    const float x_112 = ref[x_110];
+    const float x_116 = asfloat(x_8[2].x);
+    x_117 = (abs((x_108 - x_112)) < x_116);
+    x_118_phi = x_117;
+  }
+  if (x_118_phi) {
+    const int x_123 = asint(x_10[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_126 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_129 = asint(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const int x_132 = asint(x_10[1].x);
+    x_GLF_color = float4(float(x_123), float(x_126), float(x_129), float(x_132));
+  } else {
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_136 = asint(x_10[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const float x_137 = float(x_136);
+    x_GLF_color = float4(x_137, x_137, x_137, x_137);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8e6d935
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 values = 0.0f;
+  float4 ref = 0.0f;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_117 = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  bool x_118_phi = false;
+  a = as_type<uint>(half2(float2(1.0f, 1.0f)));
+  uint const x_38 = a;
+  values = unpack_unorm4x8_to_float(x_38);
+  float const x_41 = x_8.x_GLF_uniform_float_values.arr[3].el;
+  float const x_43 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  float const x_45 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  float const x_48 = x_8.x_GLF_uniform_float_values.arr[3].el;
+  float const x_50 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  float const x_53 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  float const x_55 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  ref = float4(x_41, (x_43 / x_45), (x_48 / x_50), (x_53 / x_55));
+  int const x_59 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  float const x_61 = values[x_59];
+  int const x_63 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  float const x_65 = ref[x_63];
+  float const x_69 = x_8.x_GLF_uniform_float_values.arr[2].el;
+  bool const x_70 = (fabs((x_61 - x_65)) < x_69);
+  x_86_phi = x_70;
+  if (x_70) {
+    int const x_74 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_76 = values[x_74];
+    int const x_78 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_80 = ref[x_78];
+    float const x_84 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    x_85 = (fabs((x_76 - x_80)) < x_84);
+    x_86_phi = x_85;
+  }
+  bool const x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    int const x_90 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_92 = values[x_90];
+    int const x_94 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_96 = ref[x_94];
+    float const x_100 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    x_101 = (fabs((x_92 - x_96)) < x_100);
+    x_102_phi = x_101;
+  }
+  bool const x_102 = x_102_phi;
+  x_118_phi = x_102;
+  if (x_102) {
+    int const x_106 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_108 = values[x_106];
+    int const x_110 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_112 = ref[x_110];
+    float const x_116 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    x_117 = (fabs((x_108 - x_112)) < x_116);
+    x_118_phi = x_117;
+  }
+  bool const x_118 = x_118_phi;
+  if (x_118) {
+    int const x_123 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_126 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_129 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_132 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_123), float(x_126), float(x_129), float(x_132));
+  } else {
+    int const x_136 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_137 = float(x_136);
+    *(tint_symbol_4) = float4(x_137, x_137, x_137, x_137);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..48890d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,246 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 167
+; Schema: 0
+               OpCapability Shader
+         %39 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %values "values"
+               OpName %ref "ref"
+               OpName %x_85 "x_85"
+               OpName %x_101 "x_101"
+               OpName %x_117 "x_117"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %x_118_phi "x_118_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %42 = OpConstantComposite %v2float %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %155 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %25
+     %values = OpVariable %_ptr_Function_v4float Function %16
+        %ref = OpVariable %_ptr_Function_v4float Function %16
+       %x_85 = OpVariable %_ptr_Function_bool Function %32
+      %x_101 = OpVariable %_ptr_Function_bool Function %32
+      %x_117 = OpVariable %_ptr_Function_bool Function %32
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %32
+  %x_102_phi = OpVariable %_ptr_Function_bool Function %32
+  %x_118_phi = OpVariable %_ptr_Function_bool Function %32
+         %38 = OpExtInst %uint %39 PackHalf2x16 %42
+               OpStore %a %38
+         %43 = OpLoad %uint %a
+         %44 = OpExtInst %v4float %39 UnpackUnorm4x8 %43
+               OpStore %values %44
+         %48 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_3
+         %49 = OpLoad %float %48
+         %51 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %52 = OpLoad %float %51
+         %54 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_3
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpFDiv %float %52 %55
+         %65 = OpFDiv %float %57 %59
+         %66 = OpFDiv %float %61 %63
+         %67 = OpCompositeConstruct %v4float %49 %64 %65 %66
+               OpStore %ref %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %72 = OpAccessChain %_ptr_Function_float %values %70
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_float %ref %75
+         %77 = OpLoad %float %76
+         %79 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %80 = OpLoad %float %79
+         %82 = OpFSub %float %73 %77
+         %81 = OpExtInst %float %39 FAbs %82
+         %83 = OpFOrdLessThan %bool %81 %80
+               OpStore %x_86_phi %83
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %84
+         %85 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Function_float %values %87
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %91 = OpLoad %int %90
+         %92 = OpAccessChain %_ptr_Function_float %ref %91
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %95 = OpLoad %float %94
+         %97 = OpFSub %float %89 %93
+         %96 = OpExtInst %float %39 FAbs %97
+         %98 = OpFOrdLessThan %bool %96 %95
+               OpStore %x_85 %98
+         %99 = OpLoad %bool %x_85
+               OpStore %x_86_phi %99
+               OpBranch %84
+         %84 = OpLabel
+        %100 = OpLoad %bool %x_86_phi
+               OpStore %x_102_phi %100
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %104 = OpLoad %int %103
+        %105 = OpAccessChain %_ptr_Function_float %values %104
+        %106 = OpLoad %float %105
+        %107 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Function_float %ref %108
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %112 = OpLoad %float %111
+        %114 = OpFSub %float %106 %110
+        %113 = OpExtInst %float %39 FAbs %114
+        %115 = OpFOrdLessThan %bool %113 %112
+               OpStore %x_101 %115
+        %116 = OpLoad %bool %x_101
+               OpStore %x_102_phi %116
+               OpBranch %101
+        %101 = OpLabel
+        %117 = OpLoad %bool %x_102_phi
+               OpStore %x_118_phi %117
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Function_float %values %121
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %125 = OpLoad %int %124
+        %126 = OpAccessChain %_ptr_Function_float %ref %125
+        %127 = OpLoad %float %126
+        %128 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %129 = OpLoad %float %128
+        %131 = OpFSub %float %123 %127
+        %130 = OpExtInst %float %39 FAbs %131
+        %132 = OpFOrdLessThan %bool %130 %129
+               OpStore %x_117 %132
+        %133 = OpLoad %bool %x_117
+               OpStore %x_118_phi %133
+               OpBranch %118
+        %118 = OpLabel
+        %134 = OpLoad %bool %x_118_phi
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+        %138 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %139 = OpLoad %int %138
+        %140 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %141 = OpLoad %int %140
+        %142 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %143 = OpLoad %int %142
+        %144 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %145 = OpLoad %int %144
+        %146 = OpConvertSToF %float %139
+        %147 = OpConvertSToF %float %141
+        %148 = OpConvertSToF %float %143
+        %149 = OpConvertSToF %float %145
+        %150 = OpCompositeConstruct %v4float %146 %147 %148 %149
+               OpStore %x_GLF_color %150
+               OpBranch %135
+        %137 = OpLabel
+        %151 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %152 = OpLoad %int %151
+        %153 = OpConvertSToF %float %152
+        %154 = OpCompositeConstruct %v4float %153 %153 %153 %153
+               OpStore %x_GLF_color %154
+               OpBranch %135
+        %135 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %155
+%tint_symbol = OpFunctionParameter %main_out
+        %159 = OpLabel
+        %160 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %160
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %162 = OpLabel
+        %163 = OpFunctionCall %void %main_1
+        %165 = OpLoad %v4float %x_GLF_color
+        %166 = OpCompositeConstruct %main_out %165
+        %164 = OpFunctionCall %void %tint_symbol_2 %166
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5220a98
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,104 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var values : vec4<f32>;
+  var ref : vec4<f32>;
+  var x_85 : bool;
+  var x_101 : bool;
+  var x_117 : bool;
+  var x_86_phi : bool;
+  var x_102_phi : bool;
+  var x_118_phi : bool;
+  a = pack2x16float(vec2<f32>(1.0, 1.0));
+  let x_38 : u32 = a;
+  values = unpack4x8unorm(x_38);
+  let x_41 : f32 = x_8.x_GLF_uniform_float_values[3];
+  let x_43 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_45 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_48 : f32 = x_8.x_GLF_uniform_float_values[3];
+  let x_50 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_53 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_55 : f32 = x_8.x_GLF_uniform_float_values[0];
+  ref = vec4<f32>(x_41, (x_43 / x_45), (x_48 / x_50), (x_53 / x_55));
+  let x_59 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_61 : f32 = values[x_59];
+  let x_63 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_65 : f32 = ref[x_63];
+  let x_69 : f32 = x_8.x_GLF_uniform_float_values[2];
+  let x_70 : bool = (abs((x_61 - x_65)) < x_69);
+  x_86_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_76 : f32 = values[x_74];
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_80 : f32 = ref[x_78];
+    let x_84 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_85 = (abs((x_76 - x_80)) < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_92 : f32 = values[x_90];
+    let x_94 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_96 : f32 = ref[x_94];
+    let x_100 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_101 = (abs((x_92 - x_96)) < x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  x_118_phi = x_102;
+  if (x_102) {
+    let x_106 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_108 : f32 = values[x_106];
+    let x_110 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_112 : f32 = ref[x_110];
+    let x_116 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_117 = (abs((x_108 - x_112)) < x_116);
+    x_118_phi = x_117;
+  }
+  let x_118 : bool = x_118_phi;
+  if (x_118) {
+    let x_123 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_126 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_129 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_132 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_123), f32(x_126), f32(x_129), f32(x_132));
+  } else {
+    let x_136 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_137 : f32 = f32(x_136);
+    x_GLF_color = vec4<f32>(x_137, x_137, x_137, x_137);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
new file mode 100644
index 0000000..5220a98
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
@@ -0,0 +1,104 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var values : vec4<f32>;
+  var ref : vec4<f32>;
+  var x_85 : bool;
+  var x_101 : bool;
+  var x_117 : bool;
+  var x_86_phi : bool;
+  var x_102_phi : bool;
+  var x_118_phi : bool;
+  a = pack2x16float(vec2<f32>(1.0, 1.0));
+  let x_38 : u32 = a;
+  values = unpack4x8unorm(x_38);
+  let x_41 : f32 = x_8.x_GLF_uniform_float_values[3];
+  let x_43 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_45 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_48 : f32 = x_8.x_GLF_uniform_float_values[3];
+  let x_50 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_53 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_55 : f32 = x_8.x_GLF_uniform_float_values[0];
+  ref = vec4<f32>(x_41, (x_43 / x_45), (x_48 / x_50), (x_53 / x_55));
+  let x_59 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_61 : f32 = values[x_59];
+  let x_63 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_65 : f32 = ref[x_63];
+  let x_69 : f32 = x_8.x_GLF_uniform_float_values[2];
+  let x_70 : bool = (abs((x_61 - x_65)) < x_69);
+  x_86_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_76 : f32 = values[x_74];
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_80 : f32 = ref[x_78];
+    let x_84 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_85 = (abs((x_76 - x_80)) < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_92 : f32 = values[x_90];
+    let x_94 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_96 : f32 = ref[x_94];
+    let x_100 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_101 = (abs((x_92 - x_96)) < x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  x_118_phi = x_102;
+  if (x_102) {
+    let x_106 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_108 : f32 = values[x_106];
+    let x_110 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_112 : f32 = ref[x_110];
+    let x_116 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_117 = (abs((x_108 - x_112)) < x_116);
+    x_118_phi = x_117;
+  }
+  let x_118 : bool = x_118_phi;
+  if (x_118) {
+    let x_123 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_126 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_129 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_132 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_123), f32(x_126), f32(x_129), f32(x_132));
+  } else {
+    let x_136 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_137 : f32 = f32(x_136);
+    x_GLF_color = vec4<f32>(x_137, x_137, x_137, x_137);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f87712b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,112 @@
+uint tint_pack2x16float(float2 param_0) {
+  uint2 i = f32tof16(param_0);
+  return i.x | (i.y << 16);
+}
+
+float4 tint_unpack4x8unorm(uint param_0) {
+  uint j = param_0;
+  uint4 i = uint4(j & 0xff, (j >> 8) & 0xff, (j >> 16) & 0xff, j >> 24);
+  return float4(i) / 255.0;
+}
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[4];
+};
+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() {
+  uint a = 0u;
+  float4 values = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 ref = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_117 = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  bool x_118_phi = false;
+  a = tint_pack2x16float(float2(1.0f, 1.0f));
+  values = tint_unpack4x8unorm(a);
+  const float x_41 = asfloat(x_8[3].x);
+  const float x_43 = asfloat(x_8[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  const float x_48 = asfloat(x_8[3].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_50 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_53 = asfloat(x_8[1].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_55 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  ref = float4(x_41, (x_43 / x_45), (x_48 / x_50), (x_53 / x_55));
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_59 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_61 = values[x_59];
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_63 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const float x_65 = ref[x_63];
+  const float x_69 = asfloat(x_8[2].x);
+  const bool x_70 = (abs((x_61 - x_65)) < x_69);
+  x_86_phi = x_70;
+  if (x_70) {
+    const int x_74 = asint(x_10[1].x);
+    const float x_76 = values[x_74];
+    const int x_78 = asint(x_10[1].x);
+    const float x_80 = ref[x_78];
+    const float x_84 = asfloat(x_8[2].x);
+    x_85 = (abs((x_76 - x_80)) < x_84);
+    x_86_phi = x_85;
+  }
+  const bool x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    const int x_90 = asint(x_10[3].x);
+    const float x_92 = values[x_90];
+    const int x_94 = asint(x_10[3].x);
+    const float x_96 = ref[x_94];
+    const float x_100 = asfloat(x_8[2].x);
+    x_101 = (abs((x_92 - x_96)) < x_100);
+    x_102_phi = x_101;
+  }
+  const bool x_102 = x_102_phi;
+  x_118_phi = x_102;
+  if (x_102) {
+    const int x_106 = asint(x_10[2].x);
+    const float x_108 = values[x_106];
+    const int x_110 = asint(x_10[2].x);
+    const float x_112 = ref[x_110];
+    const float x_116 = asfloat(x_8[2].x);
+    x_117 = (abs((x_108 - x_112)) < x_116);
+    x_118_phi = x_117;
+  }
+  if (x_118_phi) {
+    const int x_123 = asint(x_10[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_126 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_129 = asint(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const int x_132 = asint(x_10[1].x);
+    x_GLF_color = float4(float(x_123), float(x_126), float(x_129), float(x_132));
+  } else {
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_136 = asint(x_10[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const float x_137 = float(x_136);
+    x_GLF_color = float4(x_137, x_137, x_137, x_137);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8e6d935
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, constant buf1& x_10, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float4 values = 0.0f;
+  float4 ref = 0.0f;
+  bool x_85 = false;
+  bool x_101 = false;
+  bool x_117 = false;
+  bool x_86_phi = false;
+  bool x_102_phi = false;
+  bool x_118_phi = false;
+  a = as_type<uint>(half2(float2(1.0f, 1.0f)));
+  uint const x_38 = a;
+  values = unpack_unorm4x8_to_float(x_38);
+  float const x_41 = x_8.x_GLF_uniform_float_values.arr[3].el;
+  float const x_43 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  float const x_45 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  float const x_48 = x_8.x_GLF_uniform_float_values.arr[3].el;
+  float const x_50 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  float const x_53 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  float const x_55 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  ref = float4(x_41, (x_43 / x_45), (x_48 / x_50), (x_53 / x_55));
+  int const x_59 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  float const x_61 = values[x_59];
+  int const x_63 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  float const x_65 = ref[x_63];
+  float const x_69 = x_8.x_GLF_uniform_float_values.arr[2].el;
+  bool const x_70 = (fabs((x_61 - x_65)) < x_69);
+  x_86_phi = x_70;
+  if (x_70) {
+    int const x_74 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_76 = values[x_74];
+    int const x_78 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_80 = ref[x_78];
+    float const x_84 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    x_85 = (fabs((x_76 - x_80)) < x_84);
+    x_86_phi = x_85;
+  }
+  bool const x_86 = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    int const x_90 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_92 = values[x_90];
+    int const x_94 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    float const x_96 = ref[x_94];
+    float const x_100 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    x_101 = (fabs((x_92 - x_96)) < x_100);
+    x_102_phi = x_101;
+  }
+  bool const x_102 = x_102_phi;
+  x_118_phi = x_102;
+  if (x_102) {
+    int const x_106 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_108 = values[x_106];
+    int const x_110 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_112 = ref[x_110];
+    float const x_116 = x_8.x_GLF_uniform_float_values.arr[2].el;
+    x_117 = (fabs((x_108 - x_112)) < x_116);
+    x_118_phi = x_117;
+  }
+  bool const x_118 = x_118_phi;
+  if (x_118) {
+    int const x_123 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_126 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_129 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_132 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_123), float(x_126), float(x_129), float(x_132));
+  } else {
+    int const x_136 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_137 = float(x_136);
+    *(tint_symbol_4) = float4(x_137, x_137, x_137, x_137);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]], constant buf1& x_10 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..48890d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,246 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 167
+; Schema: 0
+               OpCapability Shader
+         %39 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %values "values"
+               OpName %ref "ref"
+               OpName %x_85 "x_85"
+               OpName %x_101 "x_101"
+               OpName %x_117 "x_117"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %x_118_phi "x_118_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf0 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %42 = OpConstantComposite %v2float %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %155 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %25
+     %values = OpVariable %_ptr_Function_v4float Function %16
+        %ref = OpVariable %_ptr_Function_v4float Function %16
+       %x_85 = OpVariable %_ptr_Function_bool Function %32
+      %x_101 = OpVariable %_ptr_Function_bool Function %32
+      %x_117 = OpVariable %_ptr_Function_bool Function %32
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %32
+  %x_102_phi = OpVariable %_ptr_Function_bool Function %32
+  %x_118_phi = OpVariable %_ptr_Function_bool Function %32
+         %38 = OpExtInst %uint %39 PackHalf2x16 %42
+               OpStore %a %38
+         %43 = OpLoad %uint %a
+         %44 = OpExtInst %v4float %39 UnpackUnorm4x8 %43
+               OpStore %values %44
+         %48 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_3
+         %49 = OpLoad %float %48
+         %51 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %52 = OpLoad %float %51
+         %54 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_3
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpFDiv %float %52 %55
+         %65 = OpFDiv %float %57 %59
+         %66 = OpFDiv %float %61 %63
+         %67 = OpCompositeConstruct %v4float %49 %64 %65 %66
+               OpStore %ref %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %72 = OpAccessChain %_ptr_Function_float %values %70
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_float %ref %75
+         %77 = OpLoad %float %76
+         %79 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %80 = OpLoad %float %79
+         %82 = OpFSub %float %73 %77
+         %81 = OpExtInst %float %39 FAbs %82
+         %83 = OpFOrdLessThan %bool %81 %80
+               OpStore %x_86_phi %83
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %84
+         %85 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Function_float %values %87
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %91 = OpLoad %int %90
+         %92 = OpAccessChain %_ptr_Function_float %ref %91
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+         %95 = OpLoad %float %94
+         %97 = OpFSub %float %89 %93
+         %96 = OpExtInst %float %39 FAbs %97
+         %98 = OpFOrdLessThan %bool %96 %95
+               OpStore %x_85 %98
+         %99 = OpLoad %bool %x_85
+               OpStore %x_86_phi %99
+               OpBranch %84
+         %84 = OpLabel
+        %100 = OpLoad %bool %x_86_phi
+               OpStore %x_102_phi %100
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %104 = OpLoad %int %103
+        %105 = OpAccessChain %_ptr_Function_float %values %104
+        %106 = OpLoad %float %105
+        %107 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Function_float %ref %108
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %112 = OpLoad %float %111
+        %114 = OpFSub %float %106 %110
+        %113 = OpExtInst %float %39 FAbs %114
+        %115 = OpFOrdLessThan %bool %113 %112
+               OpStore %x_101 %115
+        %116 = OpLoad %bool %x_101
+               OpStore %x_102_phi %116
+               OpBranch %101
+        %101 = OpLabel
+        %117 = OpLoad %bool %x_102_phi
+               OpStore %x_118_phi %117
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Function_float %values %121
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %125 = OpLoad %int %124
+        %126 = OpAccessChain %_ptr_Function_float %ref %125
+        %127 = OpLoad %float %126
+        %128 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %129 = OpLoad %float %128
+        %131 = OpFSub %float %123 %127
+        %130 = OpExtInst %float %39 FAbs %131
+        %132 = OpFOrdLessThan %bool %130 %129
+               OpStore %x_117 %132
+        %133 = OpLoad %bool %x_117
+               OpStore %x_118_phi %133
+               OpBranch %118
+        %118 = OpLabel
+        %134 = OpLoad %bool %x_118_phi
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+        %138 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %139 = OpLoad %int %138
+        %140 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %141 = OpLoad %int %140
+        %142 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %143 = OpLoad %int %142
+        %144 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %145 = OpLoad %int %144
+        %146 = OpConvertSToF %float %139
+        %147 = OpConvertSToF %float %141
+        %148 = OpConvertSToF %float %143
+        %149 = OpConvertSToF %float %145
+        %150 = OpCompositeConstruct %v4float %146 %147 %148 %149
+               OpStore %x_GLF_color %150
+               OpBranch %135
+        %137 = OpLabel
+        %151 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %152 = OpLoad %int %151
+        %153 = OpConvertSToF %float %152
+        %154 = OpCompositeConstruct %v4float %153 %153 %153 %153
+               OpStore %x_GLF_color %154
+               OpBranch %135
+        %135 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %155
+%tint_symbol = OpFunctionParameter %main_out
+        %159 = OpLabel
+        %160 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %160
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+        %162 = OpLabel
+        %163 = OpFunctionCall %void %main_1
+        %165 = OpLoad %v4float %x_GLF_color
+        %166 = OpCompositeConstruct %main_out %165
+        %164 = OpFunctionCall %void %tint_symbol_2 %166
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5220a98
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,104 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  var values : vec4<f32>;
+  var ref : vec4<f32>;
+  var x_85 : bool;
+  var x_101 : bool;
+  var x_117 : bool;
+  var x_86_phi : bool;
+  var x_102_phi : bool;
+  var x_118_phi : bool;
+  a = pack2x16float(vec2<f32>(1.0, 1.0));
+  let x_38 : u32 = a;
+  values = unpack4x8unorm(x_38);
+  let x_41 : f32 = x_8.x_GLF_uniform_float_values[3];
+  let x_43 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_45 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_48 : f32 = x_8.x_GLF_uniform_float_values[3];
+  let x_50 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_53 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_55 : f32 = x_8.x_GLF_uniform_float_values[0];
+  ref = vec4<f32>(x_41, (x_43 / x_45), (x_48 / x_50), (x_53 / x_55));
+  let x_59 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_61 : f32 = values[x_59];
+  let x_63 : i32 = x_10.x_GLF_uniform_int_values[0];
+  let x_65 : f32 = ref[x_63];
+  let x_69 : f32 = x_8.x_GLF_uniform_float_values[2];
+  let x_70 : bool = (abs((x_61 - x_65)) < x_69);
+  x_86_phi = x_70;
+  if (x_70) {
+    let x_74 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_76 : f32 = values[x_74];
+    let x_78 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_80 : f32 = ref[x_78];
+    let x_84 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_85 = (abs((x_76 - x_80)) < x_84);
+    x_86_phi = x_85;
+  }
+  let x_86 : bool = x_86_phi;
+  x_102_phi = x_86;
+  if (x_86) {
+    let x_90 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_92 : f32 = values[x_90];
+    let x_94 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_96 : f32 = ref[x_94];
+    let x_100 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_101 = (abs((x_92 - x_96)) < x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  x_118_phi = x_102;
+  if (x_102) {
+    let x_106 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_108 : f32 = values[x_106];
+    let x_110 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_112 : f32 = ref[x_110];
+    let x_116 : f32 = x_8.x_GLF_uniform_float_values[2];
+    x_117 = (abs((x_108 - x_112)) < x_116);
+    x_118_phi = x_117;
+  }
+  let x_118 : bool = x_118_phi;
+  if (x_118) {
+    let x_123 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_126 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_129 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_132 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_123), f32(x_126), f32(x_129), f32(x_132));
+  } else {
+    let x_136 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_137 : f32 = f32(x_136);
+    x_GLF_color = vec4<f32>(x_137, x_137, x_137, x_137);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm
new file mode 100644
index 0000000..f88da41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm
@@ -0,0 +1,73 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_i1_ "func(i1;"
+               OpName %x "x"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %13 = OpTypeFunction %int %_ptr_Function_int
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %10
+         %27 = OpLabel
+      %param = OpVariable %_ptr_Function_int Function
+               OpStore %param %int_n1
+         %28 = OpFunctionCall %int %func_i1_ %param
+         %29 = OpSLessThanEqual %bool %28 %int_0
+               OpSelectionMerge %30 None
+               OpBranchConditional %29 %31 %32
+         %31 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %30
+         %32 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %30
+         %30 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_i1_ = OpFunction %int None %13
+          %x = OpFunctionParameter %_ptr_Function_int
+         %33 = OpLabel
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %35 = OpLoad %int %34
+         %36 = OpIEqual %bool %35 %int_1
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+         %39 = OpLoad %int %x
+               OpReturnValue %39
+         %37 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %41 = OpLoad %int %40
+               OpReturnValue %41
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e0e1799
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,40 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_i1_(inout int x) {
+  const int x_35 = asint(x_7[0].x);
+  if ((x_35 == 1)) {
+    const int x_39 = x;
+    return x_39;
+  }
+  const int x_41 = asint(x_7[0].x);
+  return x_41;
+}
+
+void main_1() {
+  int param = 0;
+  param = -1;
+  const int x_28 = func_i1_(param);
+  if ((x_28 <= 0)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4c29280
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_i1_(constant buf0& x_7, thread int* const x) {
+  int const x_35 = x_7.one;
+  if ((x_35 == 1)) {
+    int const x_39 = *(x);
+    return x_39;
+  }
+  int const x_41 = x_7.one;
+  return x_41;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int param = 0;
+  param = -1;
+  int const x_28 = func_i1_(x_7, &(param));
+  if ((x_28 <= 0)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3722ee6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %void = OpTypeVoid
+         %31 = OpTypeFunction %void
+         %36 = OpConstantNull %int
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %47 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %48 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %int None %12
+          %x = OpFunctionParameter %_ptr_Function_int
+         %16 = OpLabel
+         %20 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %21 = OpLoad %int %20
+         %23 = OpIEqual %bool %21 %int_1
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %25
+         %26 = OpLabel
+         %28 = OpLoad %int %x
+               OpReturnValue %28
+         %25 = OpLabel
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %30 = OpLoad %int %29
+               OpReturnValue %30
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %31
+         %34 = OpLabel
+      %param = OpVariable %_ptr_Function_int Function %36
+               OpStore %param %int_n1
+         %38 = OpFunctionCall %int %func_i1_ %param
+         %41 = OpSLessThanEqual %bool %38 %int_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %31
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..06c350a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,41 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) -> i32 {
+  let x_35 : i32 = x_7.one;
+  if ((x_35 == 1)) {
+    let x_39 : i32 = *(x);
+    return x_39;
+  }
+  let x_41 : i32 = x_7.one;
+  return x_41;
+}
+
+fn main_1() {
+  var param : i32;
+  param = -1;
+  let x_28 : i32 = func_i1_(&(param));
+  if ((x_28 <= 0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
new file mode 100644
index 0000000..06c350a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
@@ -0,0 +1,41 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) -> i32 {
+  let x_35 : i32 = x_7.one;
+  if ((x_35 == 1)) {
+    let x_39 : i32 = *(x);
+    return x_39;
+  }
+  let x_41 : i32 = x_7.one;
+  return x_41;
+}
+
+fn main_1() {
+  var param : i32;
+  param = -1;
+  let x_28 : i32 = func_i1_(&(param));
+  if ((x_28 <= 0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e0e1799
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,40 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_i1_(inout int x) {
+  const int x_35 = asint(x_7[0].x);
+  if ((x_35 == 1)) {
+    const int x_39 = x;
+    return x_39;
+  }
+  const int x_41 = asint(x_7[0].x);
+  return x_41;
+}
+
+void main_1() {
+  int param = 0;
+  param = -1;
+  const int x_28 = func_i1_(param);
+  if ((x_28 <= 0)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4c29280
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_i1_(constant buf0& x_7, thread int* const x) {
+  int const x_35 = x_7.one;
+  if ((x_35 == 1)) {
+    int const x_39 = *(x);
+    return x_39;
+  }
+  int const x_41 = x_7.one;
+  return x_41;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int param = 0;
+  param = -1;
+  int const x_28 = func_i1_(x_7, &(param));
+  if ((x_28 <= 0)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3722ee6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,107 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %void = OpTypeVoid
+         %31 = OpTypeFunction %void
+         %36 = OpConstantNull %int
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %47 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %48 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %int None %12
+          %x = OpFunctionParameter %_ptr_Function_int
+         %16 = OpLabel
+         %20 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %21 = OpLoad %int %20
+         %23 = OpIEqual %bool %21 %int_1
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %25
+         %26 = OpLabel
+         %28 = OpLoad %int %x
+               OpReturnValue %28
+         %25 = OpLabel
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %30 = OpLoad %int %29
+               OpReturnValue %30
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %31
+         %34 = OpLabel
+      %param = OpVariable %_ptr_Function_int Function %36
+               OpStore %param %int_n1
+         %38 = OpFunctionCall %int %func_i1_ %param
+         %41 = OpSLessThanEqual %bool %38 %int_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %31
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..06c350a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,41 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) -> i32 {
+  let x_35 : i32 = x_7.one;
+  if ((x_35 == 1)) {
+    let x_39 : i32 = *(x);
+    return x_39;
+  }
+  let x_41 : i32 = x_7.one;
+  return x_41;
+}
+
+fn main_1() {
+  var param : i32;
+  param = -1;
+  let x_28 : i32 = func_i1_(&(param));
+  if ((x_28 <= 0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm
new file mode 100644
index 0000000..5d5bb2d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm
@@ -0,0 +1,54 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+     %int_10 = OpConstant %int 10
+      %int_2 = OpConstant %int 2
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %23 = OpLabel
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %25 = OpLoad %int %24
+         %26 = OpBitwiseAnd %int %int_2 %25
+         %27 = OpSDiv %int %int_10 %26
+         %28 = OpIEqual %bool %27 %int_5
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %31
+         %30 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..564a67a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_25 = asint(x_5[0].x);
+  if (((10 / (2 & x_25)) == 5)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.msl
new file mode 100644
index 0000000..eab11e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_25 = x_5.three;
+  if (((10 / (2 & x_25)) == 5)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..ed4d1eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.spvasm
@@ -0,0 +1,86 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 47
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %int_10 = OpConstant %int 10
+      %int_2 = OpConstant %int 2
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %35 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %23 = OpBitwiseAnd %int %int_2 %20
+         %24 = OpSDiv %int %int_10 %23
+         %26 = OpIEqual %bool %24 %int_5
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %30
+         %29 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %28
+         %30 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %28
+         %28 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %35
+%tint_symbol = OpFunctionParameter %main_out
+         %39 = OpLabel
+         %40 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %40
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %main_1
+         %45 = OpLoad %v4float %x_GLF_color
+         %46 = OpCompositeConstruct %main_out %45
+         %44 = OpFunctionCall %void %tint_symbol_2 %46
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..5354413
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  three : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : i32 = x_5.three;
+  if (((10 / (2 & x_25)) == 5)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
new file mode 100644
index 0000000..5354413
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  three : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : i32 = x_5.three;
+  if (((10 / (2 & x_25)) == 5)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..564a67a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const int x_25 = asint(x_5[0].x);
+  if (((10 / (2 & x_25)) == 5)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.msl
new file mode 100644
index 0000000..eab11e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_25 = x_5.three;
+  if (((10 / (2 & x_25)) == 5)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..ed4d1eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.spvasm
@@ -0,0 +1,86 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 47
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %int_10 = OpConstant %int 10
+      %int_2 = OpConstant %int 2
+      %int_5 = OpConstant %int 5
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %35 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %20 = OpLoad %int %19
+         %23 = OpBitwiseAnd %int %int_2 %20
+         %24 = OpSDiv %int %int_10 %23
+         %26 = OpIEqual %bool %24 %int_5
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %30
+         %29 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %28
+         %30 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %28
+         %28 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %35
+%tint_symbol = OpFunctionParameter %main_out
+         %39 = OpLabel
+         %40 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %40
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %main_1
+         %45 = OpLoad %v4float %x_GLF_color
+         %46 = OpCompositeConstruct %main_out %45
+         %44 = OpFunctionCall %void %tint_symbol_2 %46
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..5354413
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+[[block]]
+struct buf0 {
+  three : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : i32 = x_5.three;
+  if (((10 / (2 & x_25)) == 5)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm
new file mode 100644
index 0000000..1ead4f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm
@@ -0,0 +1,152 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_0 = OpConstant %uint 0
+    %float_0 = OpConstant %float 0
+       %main = OpFunction %void None %13
+         %35 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpConvertSToF %float %37
+         %39 = OpCompositeConstruct %v4float %38 %38 %38 %38
+               OpStore %_GLF_color %39
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %41 = OpLoad %int %40
+               OpStore %i %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %i
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %48 = OpLoad %int %47
+         %49 = OpSLessThan %bool %46 %48
+               OpBranchConditional %49 %50 %43
+         %50 = OpLabel
+         %51 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %54 = OpLoad %float %53
+         %55 = OpFOrdLessThan %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpFOrdLessThan %bool %59 %61
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+               OpReturn
+         %63 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %68 = OpLoad %float %67
+         %69 = OpFOrdGreaterThan %bool %66 %68
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+               OpReturn
+         %70 = OpLabel
+               OpKill
+         %56 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpFOrdGreaterThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %83
+         %85 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %89 = OpLoad %int %88
+         %90 = OpConvertSToF %float %89
+         %91 = OpCompositeConstruct %v4float %81 %84 %87 %90
+               OpStore %_GLF_color %91
+               OpBranch %43
+         %77 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %93 = OpLoad %float %92
+         %94 = OpFOrdLessThan %bool %93 %float_0
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+               OpKill
+         %95 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+         %97 = OpLoad %int %i
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %i %98
+               OpBranch %42
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a06717c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,83 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  int i = 0;
+  const int x_37 = asint(x_6[1].x);
+  const float x_38 = float(x_37);
+  x_GLF_color = float4(x_38, x_38, x_38, x_38);
+  const int x_41 = asint(x_6[1].x);
+  i = x_41;
+  while (true) {
+    const int x_46 = i;
+    const int x_48 = asint(x_6[2].x);
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    const float x_52 = gl_FragCoord.y;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_54 = asfloat(x_9[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_52 < x_54)) {
+      const float x_59 = gl_FragCoord.x;
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const float x_61 = asfloat(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_59 < x_61)) {
+        return;
+      }
+      const float x_66 = asfloat(x_9[1].x);
+      const float x_68 = asfloat(x_9[1].x);
+      if ((x_66 > x_68)) {
+        return;
+      }
+      discard;
+    }
+    const float x_73 = asfloat(x_9[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_75 = asfloat(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_73 > x_75)) {
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const int x_80 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      const int x_83 = asint(x_6[1].x);
+      const int x_86 = asint(x_6[1].x);
+      const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+      const int x_89 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+      x_GLF_color = float4(float(x_80), float(x_83), float(x_86), float(x_89));
+      break;
+    }
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_93 = asfloat(x_9[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    if ((x_93 < 0.0f)) {
+      discard;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..301e8f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_38 = float(x_37);
+  *(tint_symbol_5) = float4(x_38, x_38, x_38, x_38);
+  int const x_41 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_41;
+  while (true) {
+    int const x_46 = i;
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    float const x_52 = (*(tint_symbol_6)).y;
+    float const x_54 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_52 < x_54)) {
+      float const x_59 = (*(tint_symbol_6)).x;
+      float const x_61 = x_9.x_GLF_uniform_float_values.arr[0].el;
+      if ((x_59 < x_61)) {
+        return;
+      }
+      float const x_66 = x_9.x_GLF_uniform_float_values.arr[1].el;
+      float const x_68 = x_9.x_GLF_uniform_float_values.arr[1].el;
+      if ((x_66 > x_68)) {
+        return;
+      }
+      discard_fragment();
+    }
+    float const x_73 = x_9.x_GLF_uniform_float_values.arr[1].el;
+    float const x_75 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_73 > x_75)) {
+      int const x_80 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_83 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      int const x_86 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      int const x_89 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      *(tint_symbol_5) = float4(float(x_80), float(x_83), float(x_86), float(x_89));
+      break;
+    }
+    float const x_93 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_93 < 0.0f)) {
+      discard_fragment();
+    }
+    {
+      int const x_97 = i;
+      i = (x_97 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_9, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6e3a136
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,194 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 118
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+        %105 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %29
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+               OpStore %x_GLF_color %36
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %47 = OpSLessThan %bool %43 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %40
+         %49 = OpLabel
+         %54 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %55 = OpLoad %float %54
+         %58 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpFOrdLessThan %bool %55 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+         %63 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpFOrdLessThan %bool %64 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpReturn
+         %68 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %73 = OpLoad %float %72
+         %74 = OpFOrdGreaterThan %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+               OpReturn
+         %75 = OpLabel
+               OpKill
+         %61 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %78 = OpLoad %float %77
+         %79 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %80 = OpLoad %float %79
+         %81 = OpFOrdGreaterThan %bool %78 %80
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %85
+         %93 = OpConvertSToF %float %87
+         %94 = OpConvertSToF %float %89
+         %95 = OpConvertSToF %float %91
+         %96 = OpCompositeConstruct %v4float %92 %93 %94 %95
+               OpStore %x_GLF_color %96
+               OpBranch %40
+         %82 = OpLabel
+         %97 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %98 = OpLoad %float %97
+        %100 = OpFOrdLessThan %bool %98 %float_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpKill
+        %101 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+        %103 = OpLoad %int %i
+        %104 = OpIAdd %int %103 %int_1
+               OpStore %i %104
+               OpBranch %39
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %105
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %109 = OpLabel
+        %110 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %110
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %112 = OpLabel
+        %113 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %113
+        %114 = OpFunctionCall %void %main_1
+        %116 = OpLoad %v4float %x_GLF_color
+        %117 = OpCompositeConstruct %main_out %116
+        %115 = OpFunctionCall %void %tint_symbol_3 %117
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..70772f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,85 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var i : i32;
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_38 : f32 = f32(x_37);
+  x_GLF_color = vec4<f32>(x_38, x_38, x_38, x_38);
+  let x_41 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_41;
+  loop {
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    let x_52 : f32 = gl_FragCoord.y;
+    let x_54 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((x_52 < x_54)) {
+      let x_59 : f32 = gl_FragCoord.x;
+      let x_61 : f32 = x_9.x_GLF_uniform_float_values[0];
+      if ((x_59 < x_61)) {
+        return;
+      }
+      let x_66 : f32 = x_9.x_GLF_uniform_float_values[1];
+      let x_68 : f32 = x_9.x_GLF_uniform_float_values[1];
+      if ((x_66 > x_68)) {
+        return;
+      }
+      discard;
+    }
+    let x_73 : f32 = x_9.x_GLF_uniform_float_values[1];
+    let x_75 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((x_73 > x_75)) {
+      let x_80 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_83 : i32 = x_6.x_GLF_uniform_int_values[1];
+      let x_86 : i32 = x_6.x_GLF_uniform_int_values[1];
+      let x_89 : i32 = x_6.x_GLF_uniform_int_values[0];
+      x_GLF_color = vec4<f32>(f32(x_80), f32(x_83), f32(x_86), f32(x_89));
+      break;
+    }
+    let x_93 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((x_93 < 0.0)) {
+      discard;
+    }
+
+    continuing {
+      let x_97 : i32 = i;
+      i = (x_97 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
new file mode 100644
index 0000000..70772f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
@@ -0,0 +1,85 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var i : i32;
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_38 : f32 = f32(x_37);
+  x_GLF_color = vec4<f32>(x_38, x_38, x_38, x_38);
+  let x_41 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_41;
+  loop {
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    let x_52 : f32 = gl_FragCoord.y;
+    let x_54 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((x_52 < x_54)) {
+      let x_59 : f32 = gl_FragCoord.x;
+      let x_61 : f32 = x_9.x_GLF_uniform_float_values[0];
+      if ((x_59 < x_61)) {
+        return;
+      }
+      let x_66 : f32 = x_9.x_GLF_uniform_float_values[1];
+      let x_68 : f32 = x_9.x_GLF_uniform_float_values[1];
+      if ((x_66 > x_68)) {
+        return;
+      }
+      discard;
+    }
+    let x_73 : f32 = x_9.x_GLF_uniform_float_values[1];
+    let x_75 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((x_73 > x_75)) {
+      let x_80 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_83 : i32 = x_6.x_GLF_uniform_int_values[1];
+      let x_86 : i32 = x_6.x_GLF_uniform_int_values[1];
+      let x_89 : i32 = x_6.x_GLF_uniform_int_values[0];
+      x_GLF_color = vec4<f32>(f32(x_80), f32(x_83), f32(x_86), f32(x_89));
+      break;
+    }
+    let x_93 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((x_93 < 0.0)) {
+      discard;
+    }
+
+    continuing {
+      let x_97 : i32 = i;
+      i = (x_97 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a06717c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,83 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  int i = 0;
+  const int x_37 = asint(x_6[1].x);
+  const float x_38 = float(x_37);
+  x_GLF_color = float4(x_38, x_38, x_38, x_38);
+  const int x_41 = asint(x_6[1].x);
+  i = x_41;
+  while (true) {
+    const int x_46 = i;
+    const int x_48 = asint(x_6[2].x);
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    const float x_52 = gl_FragCoord.y;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_54 = asfloat(x_9[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_52 < x_54)) {
+      const float x_59 = gl_FragCoord.x;
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const float x_61 = asfloat(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_59 < x_61)) {
+        return;
+      }
+      const float x_66 = asfloat(x_9[1].x);
+      const float x_68 = asfloat(x_9[1].x);
+      if ((x_66 > x_68)) {
+        return;
+      }
+      discard;
+    }
+    const float x_73 = asfloat(x_9[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_75 = asfloat(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_73 > x_75)) {
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const int x_80 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      const int x_83 = asint(x_6[1].x);
+      const int x_86 = asint(x_6[1].x);
+      const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+      const int x_89 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+      x_GLF_color = float4(float(x_80), float(x_83), float(x_86), float(x_89));
+      break;
+    }
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_93 = asfloat(x_9[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    if ((x_93 < 0.0f)) {
+      discard;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..301e8f0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int const x_37 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_38 = float(x_37);
+  *(tint_symbol_5) = float4(x_38, x_38, x_38, x_38);
+  int const x_41 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_41;
+  while (true) {
+    int const x_46 = i;
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    float const x_52 = (*(tint_symbol_6)).y;
+    float const x_54 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_52 < x_54)) {
+      float const x_59 = (*(tint_symbol_6)).x;
+      float const x_61 = x_9.x_GLF_uniform_float_values.arr[0].el;
+      if ((x_59 < x_61)) {
+        return;
+      }
+      float const x_66 = x_9.x_GLF_uniform_float_values.arr[1].el;
+      float const x_68 = x_9.x_GLF_uniform_float_values.arr[1].el;
+      if ((x_66 > x_68)) {
+        return;
+      }
+      discard_fragment();
+    }
+    float const x_73 = x_9.x_GLF_uniform_float_values.arr[1].el;
+    float const x_75 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_73 > x_75)) {
+      int const x_80 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      int const x_83 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      int const x_86 = x_6.x_GLF_uniform_int_values.arr[1].el;
+      int const x_89 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      *(tint_symbol_5) = float4(float(x_80), float(x_83), float(x_86), float(x_89));
+      break;
+    }
+    float const x_93 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    if ((x_93 < 0.0f)) {
+      discard_fragment();
+    }
+    {
+      int const x_97 = i;
+      i = (x_97 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, x_9, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6e3a136
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,194 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 118
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+        %105 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %29
+         %33 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpCompositeConstruct %v4float %35 %35 %35 %35
+               OpStore %x_GLF_color %36
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %38 = OpLoad %int %37
+               OpStore %i %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %47 = OpSLessThan %bool %43 %46
+               OpSelectionMerge %49 None
+               OpBranchConditional %47 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %40
+         %49 = OpLabel
+         %54 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %55 = OpLoad %float %54
+         %58 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpFOrdLessThan %bool %55 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+         %63 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpFOrdLessThan %bool %64 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpReturn
+         %68 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %73 = OpLoad %float %72
+         %74 = OpFOrdGreaterThan %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+               OpReturn
+         %75 = OpLabel
+               OpKill
+         %61 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %78 = OpLoad %float %77
+         %79 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %80 = OpLoad %float %79
+         %81 = OpFOrdGreaterThan %bool %78 %80
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %85 = OpLoad %int %84
+         %86 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %85
+         %93 = OpConvertSToF %float %87
+         %94 = OpConvertSToF %float %89
+         %95 = OpConvertSToF %float %91
+         %96 = OpCompositeConstruct %v4float %92 %93 %94 %95
+               OpStore %x_GLF_color %96
+               OpBranch %40
+         %82 = OpLabel
+         %97 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %98 = OpLoad %float %97
+        %100 = OpFOrdLessThan %bool %98 %float_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpKill
+        %101 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+        %103 = OpLoad %int %i
+        %104 = OpIAdd %int %103 %int_1
+               OpStore %i %104
+               OpBranch %39
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %105
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %109 = OpLabel
+        %110 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %110
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %112 = OpLabel
+        %113 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %113
+        %114 = OpFunctionCall %void %main_1
+        %116 = OpLoad %v4float %x_GLF_color
+        %117 = OpCompositeConstruct %main_out %116
+        %115 = OpFunctionCall %void %tint_symbol_3 %117
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..70772f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,85 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var i : i32;
+  let x_37 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_38 : f32 = f32(x_37);
+  x_GLF_color = vec4<f32>(x_38, x_38, x_38, x_38);
+  let x_41 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_41;
+  loop {
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if ((x_46 < x_48)) {
+    } else {
+      break;
+    }
+    let x_52 : f32 = gl_FragCoord.y;
+    let x_54 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((x_52 < x_54)) {
+      let x_59 : f32 = gl_FragCoord.x;
+      let x_61 : f32 = x_9.x_GLF_uniform_float_values[0];
+      if ((x_59 < x_61)) {
+        return;
+      }
+      let x_66 : f32 = x_9.x_GLF_uniform_float_values[1];
+      let x_68 : f32 = x_9.x_GLF_uniform_float_values[1];
+      if ((x_66 > x_68)) {
+        return;
+      }
+      discard;
+    }
+    let x_73 : f32 = x_9.x_GLF_uniform_float_values[1];
+    let x_75 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((x_73 > x_75)) {
+      let x_80 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_83 : i32 = x_6.x_GLF_uniform_int_values[1];
+      let x_86 : i32 = x_6.x_GLF_uniform_int_values[1];
+      let x_89 : i32 = x_6.x_GLF_uniform_int_values[0];
+      x_GLF_color = vec4<f32>(f32(x_80), f32(x_83), f32(x_86), f32(x_89));
+      break;
+    }
+    let x_93 : f32 = x_9.x_GLF_uniform_float_values[0];
+    if ((x_93 < 0.0)) {
+      discard;
+    }
+
+    continuing {
+      let x_97 : i32 = i;
+      i = (x_97 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm
new file mode 100644
index 0000000..62bd197
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm
@@ -0,0 +1,127 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f0 "f0"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %f1 "f1"
+               OpName %f2 "f2"
+               OpName %f3 "f3"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "one"
+               OpName %__0 ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__1 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %float_4 = OpConstant %float 4
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__1 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %17
+         %34 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function
+         %f1 = OpVariable %_ptr_Function_float Function
+         %f2 = OpVariable %_ptr_Function_float Function
+         %f3 = OpVariable %_ptr_Function_float Function
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %36 = OpLoad %float %35
+               OpStore %f0 %36
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %38 = OpLoad %float %37
+         %39 = OpLoad %float %f0
+         %40 = OpExtInst %float %1 Pow %39 %float_4
+         %41 = OpFMul %float %38 %40
+               OpStore %f1 %41
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %43 = OpLoad %float %42
+         %44 = OpLoad %float %f0
+         %45 = OpExtInst %float %1 Pow %44 %float_4
+         %46 = OpFMul %float %43 %45
+               OpStore %f2 %46
+         %47 = OpLoad %float %f1
+         %48 = OpLoad %float %f2
+         %49 = OpFSub %float %47 %48
+         %50 = OpAccessChain %_ptr_Uniform_float %__0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpFSub %float %49 %51
+         %53 = OpLoad %float %f0
+         %54 = OpFAdd %float %52 %53
+         %55 = OpExtInst %float %1 Sqrt %54
+               OpStore %f3 %55
+         %56 = OpLoad %float %f3
+         %57 = OpConvertFToS %int %56
+         %58 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpIEqual %bool %57 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %66 %69 %72 %75
+               OpStore %_GLF_color %76
+               OpBranch %61
+         %63 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpCompositeConstruct %v4float %79 %79 %79 %79
+               OpStore %_GLF_color %80
+               OpBranch %61
+         %61 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f0bc792
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,59 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_11 : register(b2, space0) {
+  uint4 x_11[1];
+};
+cbuffer cbuffer_x_13 : register(b1, space0) {
+  uint4 x_13[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  float f2 = 0.0f;
+  float f3 = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  f0 = x_36;
+  const float x_38 = asfloat(x_6[1].x);
+  f1 = (x_38 * pow(f0, 4.0f));
+  const float x_43 = asfloat(x_6[1].x);
+  f2 = (x_43 * pow(f0, 4.0f));
+  const float x_47 = f1;
+  const float x_48 = f2;
+  const float x_51 = asfloat(x_11[0].x);
+  f3 = sqrt((((x_47 - x_48) - x_51) + f0));
+  const float x_56 = f3;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_59 = asint(x_13[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((int(x_56) == x_59)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_13[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_68 = asint(x_13[1].x);
+    const int x_71 = asint(x_13[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_13[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_65), float(x_68), float(x_71), float(x_74));
+  } else {
+    const int x_78 = asint(x_13[1].x);
+    const float x_79 = float(x_78);
+    x_GLF_color = float4(x_79, x_79, x_79, x_79);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5e53c89
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ float one;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf2& x_11, constant buf1& x_13, thread float4* const tint_symbol_4) {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  float f2 = 0.0f;
+  float f3 = 0.0f;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  f0 = x_36;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_39 = f0;
+  f1 = (x_38 * pow(x_39, 4.0f));
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_44 = f0;
+  f2 = (x_43 * pow(x_44, 4.0f));
+  float const x_47 = f1;
+  float const x_48 = f2;
+  float const x_51 = x_11.one;
+  float const x_53 = f0;
+  f3 = sqrt((((x_47 - x_48) - x_51) + x_53));
+  float const x_56 = f3;
+  int const x_59 = x_13.x_GLF_uniform_int_values.arr[0].el;
+  if ((int(x_56) == x_59)) {
+    int const x_65 = x_13.x_GLF_uniform_int_values.arr[0].el;
+    int const x_68 = x_13.x_GLF_uniform_int_values.arr[1].el;
+    int const x_71 = x_13.x_GLF_uniform_int_values.arr[1].el;
+    int const x_74 = x_13.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_65), float(x_68), float(x_71), float(x_74));
+  } else {
+    int const x_78 = x_13.x_GLF_uniform_int_values.arr[1].el;
+    float const x_79 = float(x_78);
+    *(tint_symbol_4) = float4(x_79, x_79, x_79, x_79);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf2& x_11 [[buffer(2)]], constant buf1& x_13 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_11, x_13, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4a7d285
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,163 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 98
+; Schema: 0
+               OpCapability Shader
+         %42 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "one"
+               OpName %x_11 "x_11"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f0 "f0"
+               OpName %f1 "f1"
+               OpName %f2 "f2"
+               OpName %f3 "f3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 2
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_11 = OpVariable %_ptr_Uniform_buf2 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_13 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %19 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %19
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %19
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %float_4 = OpConstant %float 4
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %86 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function %28
+         %f1 = OpVariable %_ptr_Function_float Function %28
+         %f2 = OpVariable %_ptr_Function_float Function %28
+         %f3 = OpVariable %_ptr_Function_float Function %28
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %36 = OpLoad %float %35
+               OpStore %f0 %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %39 = OpLoad %float %38
+         %40 = OpLoad %float %f0
+         %41 = OpExtInst %float %42 Pow %40 %float_4
+         %44 = OpFMul %float %39 %41
+               OpStore %f1 %44
+         %45 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %46 = OpLoad %float %45
+         %47 = OpLoad %float %f0
+         %48 = OpExtInst %float %42 Pow %47 %float_4
+         %49 = OpFMul %float %46 %48
+               OpStore %f2 %49
+         %50 = OpLoad %float %f1
+         %51 = OpLoad %float %f2
+         %52 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0
+         %53 = OpLoad %float %52
+         %54 = OpLoad %float %f0
+         %56 = OpFSub %float %50 %51
+         %57 = OpFSub %float %56 %53
+         %58 = OpFAdd %float %57 %54
+         %55 = OpExtInst %float %42 Sqrt %58
+               OpStore %f3 %55
+         %59 = OpLoad %float %f3
+         %61 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpConvertFToS %int %59
+         %64 = OpIEqual %bool %63 %62
+               OpSelectionMerge %66 None
+               OpBranchConditional %64 %67 %68
+         %67 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %70
+         %78 = OpConvertSToF %float %72
+         %79 = OpConvertSToF %float %74
+         %80 = OpConvertSToF %float %76
+         %81 = OpCompositeConstruct %v4float %77 %78 %79 %80
+               OpStore %x_GLF_color %81
+               OpBranch %66
+         %68 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %83
+         %85 = OpCompositeConstruct %v4float %84 %84 %84 %84
+               OpStore %x_GLF_color %85
+               OpBranch %66
+         %66 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %86
+%tint_symbol = OpFunctionParameter %main_out
+         %90 = OpLabel
+         %91 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %91
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %93 = OpLabel
+         %94 = OpFunctionCall %void %main_1
+         %96 = OpLoad %v4float %x_GLF_color
+         %97 = OpCompositeConstruct %main_out %96
+         %95 = OpFunctionCall %void %tint_symbol_2 %97
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..39bc587
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  one : f32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+
+[[group(0), binding(1)]] var<uniform> x_13 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f0 : f32;
+  var f1 : f32;
+  var f2 : f32;
+  var f3 : f32;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f0 = x_36;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_39 : f32 = f0;
+  f1 = (x_38 * pow(x_39, 4.0));
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_44 : f32 = f0;
+  f2 = (x_43 * pow(x_44, 4.0));
+  let x_47 : f32 = f1;
+  let x_48 : f32 = f2;
+  let x_51 : f32 = x_11.one;
+  let x_53 : f32 = f0;
+  f3 = sqrt((((x_47 - x_48) - x_51) + x_53));
+  let x_56 : f32 = f3;
+  let x_59 : i32 = x_13.x_GLF_uniform_int_values[0];
+  if ((i32(x_56) == x_59)) {
+    let x_65 : i32 = x_13.x_GLF_uniform_int_values[0];
+    let x_68 : i32 = x_13.x_GLF_uniform_int_values[1];
+    let x_71 : i32 = x_13.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = x_13.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_65), f32(x_68), f32(x_71), f32(x_74));
+  } else {
+    let x_78 : i32 = x_13.x_GLF_uniform_int_values[1];
+    let x_79 : f32 = f32(x_78);
+    x_GLF_color = vec4<f32>(x_79, x_79, x_79, x_79);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
new file mode 100644
index 0000000..39bc587
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  one : f32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+
+[[group(0), binding(1)]] var<uniform> x_13 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f0 : f32;
+  var f1 : f32;
+  var f2 : f32;
+  var f3 : f32;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f0 = x_36;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_39 : f32 = f0;
+  f1 = (x_38 * pow(x_39, 4.0));
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_44 : f32 = f0;
+  f2 = (x_43 * pow(x_44, 4.0));
+  let x_47 : f32 = f1;
+  let x_48 : f32 = f2;
+  let x_51 : f32 = x_11.one;
+  let x_53 : f32 = f0;
+  f3 = sqrt((((x_47 - x_48) - x_51) + x_53));
+  let x_56 : f32 = f3;
+  let x_59 : i32 = x_13.x_GLF_uniform_int_values[0];
+  if ((i32(x_56) == x_59)) {
+    let x_65 : i32 = x_13.x_GLF_uniform_int_values[0];
+    let x_68 : i32 = x_13.x_GLF_uniform_int_values[1];
+    let x_71 : i32 = x_13.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = x_13.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_65), f32(x_68), f32(x_71), f32(x_74));
+  } else {
+    let x_78 : i32 = x_13.x_GLF_uniform_int_values[1];
+    let x_79 : f32 = f32(x_78);
+    x_GLF_color = vec4<f32>(x_79, x_79, x_79, x_79);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f0bc792
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,59 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_11 : register(b2, space0) {
+  uint4 x_11[1];
+};
+cbuffer cbuffer_x_13 : register(b1, space0) {
+  uint4 x_13[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  float f2 = 0.0f;
+  float f3 = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_36 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  f0 = x_36;
+  const float x_38 = asfloat(x_6[1].x);
+  f1 = (x_38 * pow(f0, 4.0f));
+  const float x_43 = asfloat(x_6[1].x);
+  f2 = (x_43 * pow(f0, 4.0f));
+  const float x_47 = f1;
+  const float x_48 = f2;
+  const float x_51 = asfloat(x_11[0].x);
+  f3 = sqrt((((x_47 - x_48) - x_51) + f0));
+  const float x_56 = f3;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_59 = asint(x_13[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((int(x_56) == x_59)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_13[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_68 = asint(x_13[1].x);
+    const int x_71 = asint(x_13[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_13[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_65), float(x_68), float(x_71), float(x_74));
+  } else {
+    const int x_78 = asint(x_13[1].x);
+    const float x_79 = float(x_78);
+    x_GLF_color = float4(x_79, x_79, x_79, x_79);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5e53c89
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ float one;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf2& x_11, constant buf1& x_13, thread float4* const tint_symbol_4) {
+  float f0 = 0.0f;
+  float f1 = 0.0f;
+  float f2 = 0.0f;
+  float f3 = 0.0f;
+  float const x_36 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  f0 = x_36;
+  float const x_38 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_39 = f0;
+  f1 = (x_38 * pow(x_39, 4.0f));
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_44 = f0;
+  f2 = (x_43 * pow(x_44, 4.0f));
+  float const x_47 = f1;
+  float const x_48 = f2;
+  float const x_51 = x_11.one;
+  float const x_53 = f0;
+  f3 = sqrt((((x_47 - x_48) - x_51) + x_53));
+  float const x_56 = f3;
+  int const x_59 = x_13.x_GLF_uniform_int_values.arr[0].el;
+  if ((int(x_56) == x_59)) {
+    int const x_65 = x_13.x_GLF_uniform_int_values.arr[0].el;
+    int const x_68 = x_13.x_GLF_uniform_int_values.arr[1].el;
+    int const x_71 = x_13.x_GLF_uniform_int_values.arr[1].el;
+    int const x_74 = x_13.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_65), float(x_68), float(x_71), float(x_74));
+  } else {
+    int const x_78 = x_13.x_GLF_uniform_int_values.arr[1].el;
+    float const x_79 = float(x_78);
+    *(tint_symbol_4) = float4(x_79, x_79, x_79, x_79);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf2& x_11 [[buffer(2)]], constant buf1& x_13 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_11, x_13, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4a7d285
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,163 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 98
+; Schema: 0
+               OpCapability Shader
+         %42 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "one"
+               OpName %x_11 "x_11"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f0 "f0"
+               OpName %f1 "f1"
+               OpName %f2 "f2"
+               OpName %f3 "f3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 2
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_11 = OpVariable %_ptr_Uniform_buf2 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_13 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %19 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %19
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %19
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %float_4 = OpConstant %float 4
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %86 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+         %f0 = OpVariable %_ptr_Function_float Function %28
+         %f1 = OpVariable %_ptr_Function_float Function %28
+         %f2 = OpVariable %_ptr_Function_float Function %28
+         %f3 = OpVariable %_ptr_Function_float Function %28
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %36 = OpLoad %float %35
+               OpStore %f0 %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %39 = OpLoad %float %38
+         %40 = OpLoad %float %f0
+         %41 = OpExtInst %float %42 Pow %40 %float_4
+         %44 = OpFMul %float %39 %41
+               OpStore %f1 %44
+         %45 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %46 = OpLoad %float %45
+         %47 = OpLoad %float %f0
+         %48 = OpExtInst %float %42 Pow %47 %float_4
+         %49 = OpFMul %float %46 %48
+               OpStore %f2 %49
+         %50 = OpLoad %float %f1
+         %51 = OpLoad %float %f2
+         %52 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0
+         %53 = OpLoad %float %52
+         %54 = OpLoad %float %f0
+         %56 = OpFSub %float %50 %51
+         %57 = OpFSub %float %56 %53
+         %58 = OpFAdd %float %57 %54
+         %55 = OpExtInst %float %42 Sqrt %58
+               OpStore %f3 %55
+         %59 = OpLoad %float %f3
+         %61 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpConvertFToS %int %59
+         %64 = OpIEqual %bool %63 %62
+               OpSelectionMerge %66 None
+               OpBranchConditional %64 %67 %68
+         %67 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %70
+         %78 = OpConvertSToF %float %72
+         %79 = OpConvertSToF %float %74
+         %80 = OpConvertSToF %float %76
+         %81 = OpCompositeConstruct %v4float %77 %78 %79 %80
+               OpStore %x_GLF_color %81
+               OpBranch %66
+         %68 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_13 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %83
+         %85 = OpCompositeConstruct %v4float %84 %84 %84 %84
+               OpStore %x_GLF_color %85
+               OpBranch %66
+         %66 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %86
+%tint_symbol = OpFunctionParameter %main_out
+         %90 = OpLabel
+         %91 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %91
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %93 = OpLabel
+         %94 = OpFunctionCall %void %main_1
+         %96 = OpLoad %v4float %x_GLF_color
+         %97 = OpCompositeConstruct %main_out %96
+         %95 = OpFunctionCall %void %tint_symbol_2 %97
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..39bc587
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  one : f32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+
+[[group(0), binding(1)]] var<uniform> x_13 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f0 : f32;
+  var f1 : f32;
+  var f2 : f32;
+  var f3 : f32;
+  let x_36 : f32 = x_6.x_GLF_uniform_float_values[0];
+  f0 = x_36;
+  let x_38 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_39 : f32 = f0;
+  f1 = (x_38 * pow(x_39, 4.0));
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_44 : f32 = f0;
+  f2 = (x_43 * pow(x_44, 4.0));
+  let x_47 : f32 = f1;
+  let x_48 : f32 = f2;
+  let x_51 : f32 = x_11.one;
+  let x_53 : f32 = f0;
+  f3 = sqrt((((x_47 - x_48) - x_51) + x_53));
+  let x_56 : f32 = f3;
+  let x_59 : i32 = x_13.x_GLF_uniform_int_values[0];
+  if ((i32(x_56) == x_59)) {
+    let x_65 : i32 = x_13.x_GLF_uniform_int_values[0];
+    let x_68 : i32 = x_13.x_GLF_uniform_int_values[1];
+    let x_71 : i32 = x_13.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = x_13.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_65), f32(x_68), f32(x_71), f32(x_74));
+  } else {
+    let x_78 : i32 = x_13.x_GLF_uniform_int_values[1];
+    let x_79 : f32 = f32(x_78);
+    x_GLF_color = vec4<f32>(x_79, x_79, x_79, x_79);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm
new file mode 100644
index 0000000..00b0784
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm
@@ -0,0 +1,113 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %__0 ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__1 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+       %buf2 = OpTypeStruct %int
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__1 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %31 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %32 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %33 = OpLoad %float %32
+         %34 = OpFNegate %float %33
+         %35 = OpExtInst %float %1 Sinh %float_1
+         %36 = OpExtInst %float %1 Pow %34 %35
+               OpStore %f %36
+         %37 = OpLoad %float %f
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %39 = OpLoad %float %38
+         %40 = OpFOrdEqual %bool %37 %39
+         %41 = OpLogicalNot %bool %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %__0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpIEqual %bool %45 %47
+               OpBranch %42
+         %42 = OpLabel
+         %49 = OpPhi %bool %40 %31 %48 %43
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpConvertSToF %float %54
+         %56 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpCompositeConstruct %v4float %55 %58 %61 %64
+               OpStore %_GLF_color %65
+               OpBranch %50
+         %52 = OpLabel
+         %66 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpCompositeConstruct %v4float %68 %68 %68 %68
+               OpStore %_GLF_color %69
+               OpBranch %50
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..fd122cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,59 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b2, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  bool x_48 = false;
+  bool x_49_phi = false;
+  const float x_33 = asfloat(x_6[1].x);
+  f = pow(-(x_33), sinh(1.0f));
+  const float x_37 = f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_39 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const bool x_40 = (x_37 == x_39);
+  x_49_phi = x_40;
+  if (!(x_40)) {
+    const int x_45 = asint(x_8[0].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_48 = (x_45 == x_47);
+    x_49_phi = x_48;
+  }
+  if (x_49_phi) {
+    const int x_54 = asint(x_10[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_63 = asint(x_10[1].x);
+    x_GLF_color = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_67 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_68 = float(x_67);
+    x_GLF_color = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..53c1f7d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.msl
@@ -0,0 +1,72 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ int zero;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf2& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  bool x_48 = false;
+  bool x_49_phi = false;
+  float const x_33 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  f = pow(-(x_33), sinh(1.0f));
+  float const x_37 = f;
+  float const x_39 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_40 = (x_37 == x_39);
+  x_49_phi = x_40;
+  if (!(x_40)) {
+    int const x_45 = x_8.zero;
+    int const x_47 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    x_48 = (x_45 == x_47);
+    x_49_phi = x_48;
+  }
+  bool const x_49 = x_49_phi;
+  if (x_49) {
+    int const x_54 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_57 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_63 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    int const x_67 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_68 = float(x_67);
+    *(tint_symbol_4) = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf2& x_8 [[buffer(2)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8e68666
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,159 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+         %40 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %x_48 "x_48"
+               OpName %x_49_phi "x_49_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+       %buf2 = OpTypeStruct %int
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_8 = OpVariable %_ptr_Uniform_buf2 Uniform
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %19 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %19
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %19
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %28
+       %x_48 = OpVariable %_ptr_Function_bool Function %32
+   %x_49_phi = OpVariable %_ptr_Function_bool Function %32
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %38 = OpLoad %float %37
+         %41 = OpFNegate %float %38
+         %42 = OpExtInst %float %40 Sinh %float_1
+         %39 = OpExtInst %float %40 Pow %41 %42
+               OpStore %f %39
+         %44 = OpLoad %float %f
+         %46 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpFOrdEqual %bool %44 %47
+               OpStore %x_49_phi %48
+         %49 = OpLogicalNot %bool %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpIEqual %bool %54 %56
+               OpStore %x_48 %57
+         %58 = OpLoad %bool %x_48
+               OpStore %x_49_phi %58
+               OpBranch %50
+         %50 = OpLabel
+         %59 = OpLoad %bool %x_49_phi
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %60
+         %62 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %60
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b378e4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,68 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zero : i32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_48 : bool;
+  var x_49_phi : bool;
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[1];
+  f = pow(-(x_33), sinh(1.0));
+  let x_37 : f32 = f;
+  let x_39 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_40 : bool = (x_37 == x_39);
+  x_49_phi = x_40;
+  if (!(x_40)) {
+    let x_45 : i32 = x_8.zero;
+    let x_47 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_48 = (x_45 == x_47);
+    x_49_phi = x_48;
+  }
+  let x_49 : bool = x_49_phi;
+  if (x_49) {
+    let x_54 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_57 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_54), f32(x_57), f32(x_60), f32(x_63));
+  } else {
+    let x_67 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_68 : f32 = f32(x_67);
+    x_GLF_color = vec4<f32>(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
new file mode 100644
index 0000000..b378e4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
@@ -0,0 +1,68 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zero : i32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_48 : bool;
+  var x_49_phi : bool;
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[1];
+  f = pow(-(x_33), sinh(1.0));
+  let x_37 : f32 = f;
+  let x_39 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_40 : bool = (x_37 == x_39);
+  x_49_phi = x_40;
+  if (!(x_40)) {
+    let x_45 : i32 = x_8.zero;
+    let x_47 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_48 = (x_45 == x_47);
+    x_49_phi = x_48;
+  }
+  let x_49 : bool = x_49_phi;
+  if (x_49) {
+    let x_54 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_57 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_54), f32(x_57), f32(x_60), f32(x_63));
+  } else {
+    let x_67 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_68 : f32 = f32(x_67);
+    x_GLF_color = vec4<f32>(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..fd122cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,59 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b2, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  bool x_48 = false;
+  bool x_49_phi = false;
+  const float x_33 = asfloat(x_6[1].x);
+  f = pow(-(x_33), sinh(1.0f));
+  const float x_37 = f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_39 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const bool x_40 = (x_37 == x_39);
+  x_49_phi = x_40;
+  if (!(x_40)) {
+    const int x_45 = asint(x_8[0].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_48 = (x_45 == x_47);
+    x_49_phi = x_48;
+  }
+  if (x_49_phi) {
+    const int x_54 = asint(x_10[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_57 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_60 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_63 = asint(x_10[1].x);
+    x_GLF_color = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_67 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_68 = float(x_67);
+    x_GLF_color = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..53c1f7d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.msl
@@ -0,0 +1,72 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ int zero;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf2& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  bool x_48 = false;
+  bool x_49_phi = false;
+  float const x_33 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  f = pow(-(x_33), sinh(1.0f));
+  float const x_37 = f;
+  float const x_39 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_40 = (x_37 == x_39);
+  x_49_phi = x_40;
+  if (!(x_40)) {
+    int const x_45 = x_8.zero;
+    int const x_47 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    x_48 = (x_45 == x_47);
+    x_49_phi = x_48;
+  }
+  bool const x_49 = x_49_phi;
+  if (x_49) {
+    int const x_54 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_57 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_60 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_63 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_54), float(x_57), float(x_60), float(x_63));
+  } else {
+    int const x_67 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    float const x_68 = float(x_67);
+    *(tint_symbol_4) = float4(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf2& x_8 [[buffer(2)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8e68666
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,159 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+         %40 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %x_48 "x_48"
+               OpName %x_49_phi "x_49_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+       %buf2 = OpTypeStruct %int
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_8 = OpVariable %_ptr_Uniform_buf2 Uniform
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %19 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %19
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %19
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %28
+       %x_48 = OpVariable %_ptr_Function_bool Function %32
+   %x_49_phi = OpVariable %_ptr_Function_bool Function %32
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %38 = OpLoad %float %37
+         %41 = OpFNegate %float %38
+         %42 = OpExtInst %float %40 Sinh %float_1
+         %39 = OpExtInst %float %40 Pow %41 %42
+               OpStore %f %39
+         %44 = OpLoad %float %f
+         %46 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpFOrdEqual %bool %44 %47
+               OpStore %x_49_phi %48
+         %49 = OpLogicalNot %bool %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpIEqual %bool %54 %56
+               OpStore %x_48 %57
+         %58 = OpLoad %bool %x_48
+               OpStore %x_49_phi %58
+               OpBranch %50
+         %50 = OpLabel
+         %59 = OpLoad %bool %x_49_phi
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %60
+         %62 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %60
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b378e4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,68 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zero : i32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_48 : bool;
+  var x_49_phi : bool;
+  let x_33 : f32 = x_6.x_GLF_uniform_float_values[1];
+  f = pow(-(x_33), sinh(1.0));
+  let x_37 : f32 = f;
+  let x_39 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_40 : bool = (x_37 == x_39);
+  x_49_phi = x_40;
+  if (!(x_40)) {
+    let x_45 : i32 = x_8.zero;
+    let x_47 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_48 = (x_45 == x_47);
+    x_49_phi = x_48;
+  }
+  let x_49 : bool = x_49_phi;
+  if (x_49) {
+    let x_54 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_57 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_10.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_54), f32(x_57), f32(x_60), f32(x_63));
+  } else {
+    let x_67 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_68 : f32 = f32(x_67);
+    x_GLF_color = vec4<f32>(x_68, x_68, x_68, x_68);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm
new file mode 100644
index 0000000..2726c75
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm
@@ -0,0 +1,82 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+   %float_n1 = OpConstant %float -1
+%float_1_70000005 = OpConstant %float 1.70000005
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %11
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+          %b = OpVariable %_ptr_Function_float Function
+          %c = OpVariable %_ptr_Function_float Function
+               OpStore %a %float_n1
+               OpStore %b %float_1_70000005
+         %27 = OpLoad %float %a
+         %28 = OpLoad %float %b
+         %29 = OpExtInst %float %1 Pow %27 %28
+               OpStore %c %29
+         %30 = OpLoad %float %c
+         %31 = OpCompositeConstruct %v4float %30 %30 %30 %30
+               OpStore %_GLF_color %31
+         %32 = OpLoad %float %a
+         %33 = OpFOrdEqual %bool %32 %float_n1
+         %34 = OpLoad %float %b
+         %35 = OpFOrdEqual %bool %34 %float_1_70000005
+         %36 = OpLogicalAnd %bool %33 %35
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %43 = OpLoad %float %42
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %v4float %41 %43 %45 %47
+               OpStore %_GLF_color %48
+               OpBranch %37
+         %39 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %50 = OpLoad %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %_GLF_color %51
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..132221e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  float c = 0.0f;
+  a = -1.0f;
+  b = 1.700000048f;
+  c = pow(a, b);
+  const float x_30 = c;
+  x_GLF_color = float4(x_30, x_30, x_30, x_30);
+  bool tint_tmp = (a == -1.0f);
+  if (tint_tmp) {
+    tint_tmp = (b == 1.700000048f);
+  }
+  if ((tint_tmp)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_41 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+    const float x_43 = asfloat(x_8[1].x);
+    const float x_45 = asfloat(x_8[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_47 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(x_41, x_43, x_45, x_47);
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_50 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8000e84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float b = 0.0f;
+  float c = 0.0f;
+  a = -1.0f;
+  b = 1.700000048f;
+  float const x_27 = a;
+  float const x_28 = b;
+  c = pow(x_27, x_28);
+  float const x_30 = c;
+  *(tint_symbol_4) = float4(x_30, x_30, x_30, x_30);
+  float const x_32 = a;
+  float const x_34 = b;
+  if (((x_32 == -1.0f) && (x_34 == 1.700000048f))) {
+    float const x_41 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_43 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    float const x_45 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    float const x_47 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_41, x_43, x_45, x_47);
+  } else {
+    float const x_50 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..60826bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,121 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+   %float_n1 = OpConstant %float -1
+%float_1_70000005 = OpConstant %float 1.70000005
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %59 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+          %b = OpVariable %_ptr_Function_float Function %20
+          %c = OpVariable %_ptr_Function_float Function %20
+               OpStore %a %float_n1
+               OpStore %b %float_1_70000005
+         %25 = OpLoad %float %a
+         %26 = OpLoad %float %b
+         %27 = OpExtInst %float %28 Pow %25 %26
+               OpStore %c %27
+         %29 = OpLoad %float %c
+         %30 = OpCompositeConstruct %v4float %29 %29 %29 %29
+               OpStore %x_GLF_color %30
+         %31 = OpLoad %float %a
+         %32 = OpLoad %float %b
+         %33 = OpFOrdEqual %bool %31 %float_n1
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %37 = OpFOrdEqual %bool %32 %float_1_70000005
+               OpBranch %35
+         %35 = OpLabel
+         %38 = OpPhi %bool %33 %17 %37 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %49 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %52 = OpLoad %float %51
+         %53 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %54 = OpLoad %float %53
+         %55 = OpCompositeConstruct %v4float %47 %50 %52 %54
+               OpStore %x_GLF_color %55
+               OpBranch %39
+         %41 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpCompositeConstruct %v4float %57 %57 %57 %57
+               OpStore %x_GLF_color %58
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %59
+%tint_symbol = OpFunctionParameter %main_out
+         %63 = OpLabel
+         %64 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %66 = OpLabel
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..4be05e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,47 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var c : f32;
+  a = -1.0;
+  b = 1.700000048;
+  let x_27 : f32 = a;
+  let x_28 : f32 = b;
+  c = pow(x_27, x_28);
+  let x_30 : f32 = c;
+  x_GLF_color = vec4<f32>(x_30, x_30, x_30, x_30);
+  let x_32 : f32 = a;
+  let x_34 : f32 = b;
+  if (((x_32 == -1.0) && (x_34 == 1.700000048))) {
+    let x_41 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_43 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_45 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_47 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_41, x_43, x_45, x_47);
+  } else {
+    let x_50 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
new file mode 100644
index 0000000..4be05e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
@@ -0,0 +1,47 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var c : f32;
+  a = -1.0;
+  b = 1.700000048;
+  let x_27 : f32 = a;
+  let x_28 : f32 = b;
+  c = pow(x_27, x_28);
+  let x_30 : f32 = c;
+  x_GLF_color = vec4<f32>(x_30, x_30, x_30, x_30);
+  let x_32 : f32 = a;
+  let x_34 : f32 = b;
+  if (((x_32 == -1.0) && (x_34 == 1.700000048))) {
+    let x_41 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_43 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_45 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_47 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_41, x_43, x_45, x_47);
+  } else {
+    let x_50 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..132221e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[2];
+};
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  float c = 0.0f;
+  a = -1.0f;
+  b = 1.700000048f;
+  c = pow(a, b);
+  const float x_30 = c;
+  x_GLF_color = float4(x_30, x_30, x_30, x_30);
+  bool tint_tmp = (a == -1.0f);
+  if (tint_tmp) {
+    tint_tmp = (b == 1.700000048f);
+  }
+  if ((tint_tmp)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_41 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+    const float x_43 = asfloat(x_8[1].x);
+    const float x_45 = asfloat(x_8[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_47 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(x_41, x_43, x_45, x_47);
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_50 = asfloat(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8000e84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float b = 0.0f;
+  float c = 0.0f;
+  a = -1.0f;
+  b = 1.700000048f;
+  float const x_27 = a;
+  float const x_28 = b;
+  c = pow(x_27, x_28);
+  float const x_30 = c;
+  *(tint_symbol_4) = float4(x_30, x_30, x_30, x_30);
+  float const x_32 = a;
+  float const x_34 = b;
+  if (((x_32 == -1.0f) && (x_34 == 1.700000048f))) {
+    float const x_41 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    float const x_43 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    float const x_45 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    float const x_47 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_41, x_43, x_45, x_47);
+  } else {
+    float const x_50 = x_8.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..60826bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,121 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+   %float_n1 = OpConstant %float -1
+%float_1_70000005 = OpConstant %float 1.70000005
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %59 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+          %b = OpVariable %_ptr_Function_float Function %20
+          %c = OpVariable %_ptr_Function_float Function %20
+               OpStore %a %float_n1
+               OpStore %b %float_1_70000005
+         %25 = OpLoad %float %a
+         %26 = OpLoad %float %b
+         %27 = OpExtInst %float %28 Pow %25 %26
+               OpStore %c %27
+         %29 = OpLoad %float %c
+         %30 = OpCompositeConstruct %v4float %29 %29 %29 %29
+               OpStore %x_GLF_color %30
+         %31 = OpLoad %float %a
+         %32 = OpLoad %float %b
+         %33 = OpFOrdEqual %bool %31 %float_n1
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %37 = OpFOrdEqual %bool %32 %float_1_70000005
+               OpBranch %35
+         %35 = OpLabel
+         %38 = OpPhi %bool %33 %17 %37 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %47 = OpLoad %float %46
+         %49 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %52 = OpLoad %float %51
+         %53 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %54 = OpLoad %float %53
+         %55 = OpCompositeConstruct %v4float %47 %50 %52 %54
+               OpStore %x_GLF_color %55
+               OpBranch %39
+         %41 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %57 = OpLoad %float %56
+         %58 = OpCompositeConstruct %v4float %57 %57 %57 %57
+               OpStore %x_GLF_color %58
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %59
+%tint_symbol = OpFunctionParameter %main_out
+         %63 = OpLabel
+         %64 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %66 = OpLabel
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..4be05e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,47 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var c : f32;
+  a = -1.0;
+  b = 1.700000048;
+  let x_27 : f32 = a;
+  let x_28 : f32 = b;
+  c = pow(x_27, x_28);
+  let x_30 : f32 = c;
+  x_GLF_color = vec4<f32>(x_30, x_30, x_30, x_30);
+  let x_32 : f32 = a;
+  let x_34 : f32 = b;
+  if (((x_32 == -1.0) && (x_34 == 1.700000048))) {
+    let x_41 : f32 = x_8.x_GLF_uniform_float_values[0];
+    let x_43 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_45 : f32 = x_8.x_GLF_uniform_float_values[1];
+    let x_47 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_41, x_43, x_45, x_47);
+  } else {
+    let x_50 : f32 = x_8.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_50, x_50, x_50, x_50);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm
new file mode 100644
index 0000000..1638f7f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm
@@ -0,0 +1,76 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+  %int_n7563 = OpConstant %int -7563
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %9
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_n7563
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %25 = OpLoad %int %24
+         %26 = OpLoad %int %a
+         %27 = OpSDiv %int %25 %26
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %28
+         %30 = OpIEqual %bool %27 %29
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpConvertSToF %float %35
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpConvertSToF %float %41
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpConvertSToF %float %44
+         %46 = OpCompositeConstruct %v4float %36 %39 %42 %45
+               OpStore %_GLF_color %46
+               OpBranch %31
+         %33 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpCompositeConstruct %v4float %49 %49 %49 %49
+               OpStore %_GLF_color %50
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..89c814d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,42 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  a = -7563;
+  const int x_25 = asint(x_6[1].x);
+  const int x_26 = a;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if (((x_25 / x_26) == x_29)) {
+    const int x_35 = asint(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_41 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_44 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_49 = float(x_48);
+    x_GLF_color = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d98099c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  a = -7563;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_26 = a;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if (((x_25 / x_26) == x_29)) {
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_41 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_44 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_49 = float(x_48);
+    *(tint_symbol_4) = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b52f8c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,109 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+  %int_n7563 = OpConstant %int -7563
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_n7563
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+         %28 = OpLoad %int %a
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpSDiv %int %27 %28
+         %33 = OpIEqual %bool %32 %31
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %37
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %39
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpConvertSToF %float %45
+         %50 = OpCompositeConstruct %v4float %46 %47 %48 %49
+               OpStore %x_GLF_color %50
+               OpBranch %35
+         %37 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %x_GLF_color %54
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..39a800e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,41 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = -7563;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_26 : i32 = a;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if (((x_25 / x_26) == x_29)) {
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_41 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
+  } else {
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_49 : f32 = f32(x_48);
+    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
new file mode 100644
index 0000000..39a800e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
@@ -0,0 +1,41 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = -7563;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_26 : i32 = a;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if (((x_25 / x_26) == x_29)) {
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_41 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
+  } else {
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_49 : f32 = f32(x_48);
+    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..89c814d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,42 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  a = -7563;
+  const int x_25 = asint(x_6[1].x);
+  const int x_26 = a;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if (((x_25 / x_26) == x_29)) {
+    const int x_35 = asint(x_6[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_41 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_44 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_49 = float(x_48);
+    x_GLF_color = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d98099c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  a = -7563;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_26 = a;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if (((x_25 / x_26) == x_29)) {
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_41 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_44 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_49 = float(x_48);
+    *(tint_symbol_4) = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b52f8c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,109 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+  %int_n7563 = OpConstant %int -7563
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_n7563
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+         %28 = OpLoad %int %a
+         %30 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpSDiv %int %27 %28
+         %33 = OpIEqual %bool %32 %31
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %37
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %39
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpConvertSToF %float %45
+         %50 = OpCompositeConstruct %v4float %46 %47 %48 %49
+               OpStore %x_GLF_color %50
+               OpBranch %35
+         %37 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %x_GLF_color %54
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..39a800e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,41 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = -7563;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_26 : i32 = a;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if (((x_25 / x_26) == x_29)) {
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_41 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
+  } else {
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_49 : f32 = f32(x_48);
+    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm
new file mode 100644
index 0000000..77a1f11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm
@@ -0,0 +1,76 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+     %int_n1 = OpConstant %int -1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %9
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_n1
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %25 = OpLoad %int %24
+         %26 = OpLoad %int %a
+         %27 = OpSDiv %int %25 %26
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %29 = OpLoad %int %28
+         %30 = OpSLessThan %bool %27 %29
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpConvertSToF %float %35
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpConvertSToF %float %41
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpConvertSToF %float %44
+         %46 = OpCompositeConstruct %v4float %36 %39 %42 %45
+               OpStore %_GLF_color %46
+               OpBranch %31
+         %33 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %48
+         %50 = OpCompositeConstruct %v4float %49 %49 %49 %49
+               OpStore %_GLF_color %50
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..979542d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,41 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  a = -1;
+  const int x_25 = asint(x_6[1].x);
+  const int x_26 = a;
+  const int x_29 = asint(x_6[1].x);
+  if (((x_25 / x_26) < x_29)) {
+    const int x_35 = asint(x_6[1].x);
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_41 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_44 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_49 = float(x_48);
+    x_GLF_color = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..7130ddf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  a = -1;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_26 = a;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if (((x_25 / x_26) < x_29)) {
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_41 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_44 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_49 = float(x_48);
+    *(tint_symbol_4) = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..83487ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,109 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %int_n1 = OpConstant %int -1
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_n1
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+         %28 = OpLoad %int %a
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %30 = OpLoad %int %29
+         %31 = OpSDiv %int %27 %28
+         %32 = OpSLessThan %bool %31 %30
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %38 = OpLoad %int %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %38
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpConvertSToF %float %45
+         %50 = OpCompositeConstruct %v4float %46 %47 %48 %49
+               OpStore %x_GLF_color %50
+               OpBranch %34
+         %36 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %x_GLF_color %54
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6c4550f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,41 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = -1;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_26 : i32 = a;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if (((x_25 / x_26) < x_29)) {
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_41 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
+  } else {
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_49 : f32 = f32(x_48);
+    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
new file mode 100644
index 0000000..6c4550f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
@@ -0,0 +1,41 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = -1;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_26 : i32 = a;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if (((x_25 / x_26) < x_29)) {
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_41 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
+  } else {
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_49 : f32 = f32(x_48);
+    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..979542d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,41 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  a = -1;
+  const int x_25 = asint(x_6[1].x);
+  const int x_26 = a;
+  const int x_29 = asint(x_6[1].x);
+  if (((x_25 / x_26) < x_29)) {
+    const int x_35 = asint(x_6[1].x);
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_41 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_44 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_48 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_49 = float(x_48);
+    x_GLF_color = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..7130ddf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  a = -1;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_26 = a;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if (((x_25 / x_26) < x_29)) {
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_41 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_44 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_35), float(x_38), float(x_41), float(x_44));
+  } else {
+    int const x_48 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    float const x_49 = float(x_48);
+    *(tint_symbol_4) = float4(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..83487ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,109 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %int_n1 = OpConstant %int -1
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_n1
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+         %28 = OpLoad %int %a
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %30 = OpLoad %int %29
+         %31 = OpSDiv %int %27 %28
+         %32 = OpSLessThan %bool %31 %30
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %38 = OpLoad %int %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %38
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpConvertSToF %float %45
+         %50 = OpCompositeConstruct %v4float %46 %47 %48 %49
+               OpStore %x_GLF_color %50
+               OpBranch %34
+         %36 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %x_GLF_color %54
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6c4550f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,41 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = -1;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_26 : i32 = a;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if (((x_25 / x_26) < x_29)) {
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_41 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
+  } else {
+    let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_49 : f32 = f32(x_48);
+    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm
new file mode 100644
index 0000000..f2c8e23
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm
@@ -0,0 +1,86 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+         %30 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+       %main = OpFunction %void None %12
+         %32 = OpLabel
+          %9 = OpVariable %_ptr_Function__arr_int_uint_1 Function
+         %33 = OpLoad %_arr_int_uint_1 %9
+          %6 = OpCompositeExtract %int %33 0
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+               OpStore %_GLF_color %22
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+          %7 = OpLoad %int %38
+         %39 = OpAccessChain %_ptr_Function_int %9 %7
+          %8 = OpLoad %int %39
+         %40 = OpIEqual %bool %8 %6
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpBranch %35
+         %41 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+               OpBranch %34
+         %35 = OpLabel
+         %10 = OpPhi %int %int_1 %42 %int_2 %41
+         %43 = OpIEqual %bool %10 %int_1
+         %44 = OpIEqual %bool %10 %int_2
+         %45 = OpLogicalOr %bool %43 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %48 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %46
+         %47 = OpLabel
+               OpStore %_GLF_color %30
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..2c7bb9e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.hlsl
@@ -0,0 +1,46 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  int x_9[1] = (int[1])0;
+  int x_10_phi = 0;
+  const int x_6 = x_9[0u];
+  while (true) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    const int x_7 = asint(x_5[0].x);
+    const int x_8 = x_9[x_7];
+    if ((x_8 == x_6)) {
+      x_10_phi = 1;
+      break;
+    }
+    x_10_phi = 2;
+    break;
+  }
+  const int x_10 = x_10_phi;
+  bool tint_tmp = (x_10 == 1);
+  if (!tint_tmp) {
+    tint_tmp = (x_10 == 2);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.msl
new file mode 100644
index 0000000..fc24e78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct tint_array_wrapper {
+  int arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  tint_array_wrapper x_9 = {};
+  int x_10_phi = 0;
+  tint_array_wrapper const x_33 = x_9;
+  int const x_6 = x_33.arr[0u];
+  while (true) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int const x_7 = x_5.zero;
+    int const x_8 = x_9.arr[x_7];
+    if ((x_8 == x_6)) {
+      x_10_phi = 1;
+      break;
+    }
+    x_10_phi = 2;
+    break;
+  }
+  int const x_10 = x_10_phi;
+  if (((x_10 == 1) || (x_10 == 2))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..e24ad6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.spvasm
@@ -0,0 +1,124 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_9 "x_9"
+               OpName %x_10_phi "x_10_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+         %21 = OpConstantNull %_arr_int_uint_1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+        %x_9 = OpVariable %_ptr_Function__arr_int_uint_1 Function %21
+   %x_10_phi = OpVariable %_ptr_Function_int Function %24
+         %25 = OpLoad %_arr_int_uint_1 %x_9
+         %27 = OpCompositeExtract %int %25 0
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+               OpStore %x_GLF_color %33
+         %35 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %36 = OpLoad %int %35
+         %37 = OpAccessChain %_ptr_Function_int %x_9 %36
+         %38 = OpLoad %int %37
+         %39 = OpIEqual %bool %38 %27
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %41
+         %42 = OpLabel
+               OpStore %x_10_phi %int_1
+               OpBranch %29
+         %41 = OpLabel
+               OpStore %x_10_phi %int_2
+               OpBranch %29
+         %30 = OpLabel
+               OpBranch %28
+         %29 = OpLabel
+         %45 = OpLoad %int %x_10_phi
+         %46 = OpIEqual %bool %45 %int_1
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %47 %48
+         %48 = OpLabel
+         %49 = OpIEqual %bool %45 %int_2
+               OpBranch %47
+         %47 = OpLabel
+         %50 = OpPhi %bool %46 %29 %49 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %51
+         %53 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %56
+%tint_symbol = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %63 = OpLabel
+         %64 = OpFunctionCall %void %main_1
+         %66 = OpLoad %v4float %x_GLF_color
+         %67 = OpCompositeConstruct %main_out %66
+         %65 = OpFunctionCall %void %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..d5ebd09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.spvasm.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_9 : array<i32, 1>;
+  var x_10_phi : i32;
+  let x_33 : array<i32, 1> = x_9;
+  let x_6 : i32 = x_33[0u];
+  loop {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    let x_7 : i32 = x_5.zero;
+    let x_8 : i32 = x_9[x_7];
+    if ((x_8 == x_6)) {
+      x_10_phi = 1;
+      break;
+    }
+    x_10_phi = 2;
+    break;
+  }
+  let x_10 : i32 = x_10_phi;
+  if (((x_10 == 1) || (x_10 == 2))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
new file mode 100644
index 0000000..d5ebd09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_9 : array<i32, 1>;
+  var x_10_phi : i32;
+  let x_33 : array<i32, 1> = x_9;
+  let x_6 : i32 = x_33[0u];
+  loop {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    let x_7 : i32 = x_5.zero;
+    let x_8 : i32 = x_9[x_7];
+    if ((x_8 == x_6)) {
+      x_10_phi = 1;
+      break;
+    }
+    x_10_phi = 2;
+    break;
+  }
+  let x_10 : i32 = x_10_phi;
+  if (((x_10 == 1) || (x_10 == 2))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..2c7bb9e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.hlsl
@@ -0,0 +1,46 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  int x_9[1] = (int[1])0;
+  int x_10_phi = 0;
+  const int x_6 = x_9[0u];
+  while (true) {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    const int x_7 = asint(x_5[0].x);
+    const int x_8 = x_9[x_7];
+    if ((x_8 == x_6)) {
+      x_10_phi = 1;
+      break;
+    }
+    x_10_phi = 2;
+    break;
+  }
+  const int x_10 = x_10_phi;
+  bool tint_tmp = (x_10 == 1);
+  if (!tint_tmp) {
+    tint_tmp = (x_10 == 2);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.msl
new file mode 100644
index 0000000..fc24e78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct tint_array_wrapper {
+  int arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  tint_array_wrapper x_9 = {};
+  int x_10_phi = 0;
+  tint_array_wrapper const x_33 = x_9;
+  int const x_6 = x_33.arr[0u];
+  while (true) {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int const x_7 = x_5.zero;
+    int const x_8 = x_9.arr[x_7];
+    if ((x_8 == x_6)) {
+      x_10_phi = 1;
+      break;
+    }
+    x_10_phi = 2;
+    break;
+  }
+  int const x_10 = x_10_phi;
+  if (((x_10 == 1) || (x_10 == 2))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..e24ad6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.spvasm
@@ -0,0 +1,124 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_9 "x_9"
+               OpName %x_10_phi "x_10_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+         %21 = OpConstantNull %_arr_int_uint_1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+        %x_9 = OpVariable %_ptr_Function__arr_int_uint_1 Function %21
+   %x_10_phi = OpVariable %_ptr_Function_int Function %24
+         %25 = OpLoad %_arr_int_uint_1 %x_9
+         %27 = OpCompositeExtract %int %25 0
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+               OpStore %x_GLF_color %33
+         %35 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %36 = OpLoad %int %35
+         %37 = OpAccessChain %_ptr_Function_int %x_9 %36
+         %38 = OpLoad %int %37
+         %39 = OpIEqual %bool %38 %27
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %41
+         %42 = OpLabel
+               OpStore %x_10_phi %int_1
+               OpBranch %29
+         %41 = OpLabel
+               OpStore %x_10_phi %int_2
+               OpBranch %29
+         %30 = OpLabel
+               OpBranch %28
+         %29 = OpLabel
+         %45 = OpLoad %int %x_10_phi
+         %46 = OpIEqual %bool %45 %int_1
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %47 %48
+         %48 = OpLabel
+         %49 = OpIEqual %bool %45 %int_2
+               OpBranch %47
+         %47 = OpLabel
+         %50 = OpPhi %bool %46 %29 %49 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+               OpStore %x_GLF_color %55
+               OpBranch %51
+         %53 = OpLabel
+               OpStore %x_GLF_color %33
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %56
+%tint_symbol = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %63 = OpLabel
+         %64 = OpFunctionCall %void %main_1
+         %66 = OpLoad %v4float %x_GLF_color
+         %67 = OpCompositeConstruct %main_out %66
+         %65 = OpFunctionCall %void %tint_symbol_2 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..d5ebd09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_9 : array<i32, 1>;
+  var x_10_phi : i32;
+  let x_33 : array<i32, 1> = x_9;
+  let x_6 : i32 = x_33[0u];
+  loop {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    let x_7 : i32 = x_5.zero;
+    let x_8 : i32 = x_9[x_7];
+    if ((x_8 == x_6)) {
+      x_10_phi = 1;
+      break;
+    }
+    x_10_phi = 2;
+    break;
+  }
+  let x_10 : i32 = x_10_phi;
+  if (((x_10 == 1) || (x_10 == 2))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm
new file mode 100644
index 0000000..8767ee3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm
@@ -0,0 +1,120 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "x"
+               OpMemberName %S 1 "y"
+               OpName %func_struct_S_i1_i11_ "func(struct-S-i1-i11;"
+               OpName %arg "arg"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+          %S = OpTypeStruct %int %int
+%_ptr_Function_S = OpTypePointer Function %S
+         %16 = OpTypeFunction %void %_ptr_Function_S
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_5 = OpConstant %float 5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_S_uint_2 = OpTypeArray %S %uint_2
+%_ptr_Function__arr_S_uint_2 = OpTypePointer Function %_arr_S_uint_2
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %35 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %13
+         %37 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+          %b = OpVariable %_ptr_Function__arr_S_uint_2 Function
+      %param = OpVariable %_ptr_Function_S Function
+               OpStore %a %float_5
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Function_int %b %43 %int_0
+               OpStore %44 %int_1
+         %45 = OpAccessChain %_ptr_Function_int %b %int_1 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpIEqual %bool %46 %int_1
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %51 = OpLoad %int %50
+         %52 = OpIEqual %bool %51 %int_1
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpBranch %39
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Function_S %b %int_1
+         %56 = OpLoad %S %55
+               OpStore %param %56
+         %57 = OpFunctionCall %void %func_struct_S_i1_i11_ %param
+         %58 = OpLoad %S %param
+         %59 = OpAccessChain %_ptr_Function_S %b %int_1
+               OpStore %59 %58
+         %60 = OpAccessChain %_ptr_Function_int %b %int_1 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+               OpStore %a %62
+               OpBranch %48
+         %48 = OpLabel
+               OpStore %a %float_0
+               OpBranch %40
+         %40 = OpLabel
+               OpBranchConditional %false %38 %39
+         %39 = OpLabel
+         %63 = OpLoad %float %a
+         %64 = OpFOrdEqual %bool %63 %float_5
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+               OpStore %_GLF_color %35
+               OpBranch %65
+         %67 = OpLabel
+               OpStore %_GLF_color %36
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_struct_S_i1_i11_ = OpFunction %void None %16
+        %arg = OpFunctionParameter %_ptr_Function_S
+         %68 = OpLabel
+         %69 = OpAccessChain %_ptr_Function_int %arg %int_1
+               OpStore %69 %int_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0adcd37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,65 @@
+struct S {
+  int x;
+  int y;
+};
+
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_struct_S_i1_i11_(inout S arg) {
+  arg.y = 1;
+  return;
+}
+
+void main_1() {
+  float a = 0.0f;
+  S b[2] = (S[2])0;
+  S param = (S)0;
+  a = 5.0f;
+  while (true) {
+    const int x_43 = asint(x_10[0].x);
+    b[x_43].x = 1;
+    const int x_46 = b[1].x;
+    if ((x_46 == 1)) {
+      const int x_51 = asint(x_10[0].x);
+      if ((x_51 == 1)) {
+        break;
+      }
+      const S x_56 = b[1];
+      param = x_56;
+      func_struct_S_i1_i11_(param);
+      b[1] = param;
+      const int x_61 = b[1].y;
+      a = float(x_61);
+    }
+    a = 0.0f;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((a == 5.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a0d65d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.msl
@@ -0,0 +1,72 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int x;
+  int y;
+};
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper {
+  S arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_struct_S_i1_i11_(thread S* const arg) {
+  (*(arg)).y = 1;
+  return;
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  tint_array_wrapper b = {};
+  S param = {};
+  a = 5.0f;
+  while (true) {
+    int const x_43 = x_10.one;
+    b.arr[x_43].x = 1;
+    int const x_46 = b.arr[1].x;
+    if ((x_46 == 1)) {
+      int const x_51 = x_10.one;
+      if ((x_51 == 1)) {
+        break;
+      }
+      S const x_56 = b.arr[1];
+      param = x_56;
+      func_struct_S_i1_i11_(&(param));
+      S const x_58 = param;
+      b.arr[1] = x_58;
+      int const x_61 = b.arr[1].y;
+      a = float(x_61);
+    }
+    a = 0.0f;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_63 = a;
+  if ((x_63 == 5.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5969228
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,170 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 93
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "x"
+               OpMemberName %S 1 "y"
+               OpName %func_struct_S_i1_i11_ "func_struct_S_i1_i11_"
+               OpName %arg "arg"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 4
+               OpDecorate %_arr_S_uint_2 ArrayStride 8
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+          %S = OpTypeStruct %int %int
+%_ptr_Function_S = OpTypePointer Function %S
+         %12 = OpTypeFunction %void %_ptr_Function_S
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+         %25 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+     %uint_2 = OpConstant %uint 2
+%_arr_S_uint_2 = OpTypeArray %S %uint_2
+%_ptr_Function__arr_S_uint_2 = OpTypePointer Function %_arr_S_uint_2
+         %35 = OpConstantNull %_arr_S_uint_2
+         %37 = OpConstantNull %S
+    %float_5 = OpConstant %float 5
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+    %float_1 = OpConstant %float 1
+         %79 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %80 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %81 = OpTypeFunction %void %main_out
+%func_struct_S_i1_i11_ = OpFunction %void None %12
+        %arg = OpFunctionParameter %_ptr_Function_S
+         %18 = OpLabel
+         %23 = OpAccessChain %_ptr_Function_int %arg %uint_1
+               OpStore %23 %int_1
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %25
+         %27 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %30
+          %b = OpVariable %_ptr_Function__arr_S_uint_2 Function %35
+      %param = OpVariable %_ptr_Function_S Function %37
+               OpStore %a %float_5
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Function_int %b %46 %uint_0
+               OpStore %47 %int_1
+         %48 = OpAccessChain %_ptr_Function_int %b %int_1 %uint_0
+         %49 = OpLoad %int %48
+         %50 = OpIEqual %bool %49 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %52
+         %53 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %55 %int_1
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %40
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Function_S %b %int_1
+         %60 = OpLoad %S %59
+               OpStore %param %60
+         %61 = OpFunctionCall %void %func_struct_S_i1_i11_ %param
+         %63 = OpLoad %S %param
+         %64 = OpAccessChain %_ptr_Function_S %b %int_1
+               OpStore %64 %63
+         %65 = OpAccessChain %_ptr_Function_int %b %int_1 %uint_1
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+               OpStore %a %67
+               OpBranch %52
+         %52 = OpLabel
+               OpStore %a %float_0
+               OpBranch %41
+         %41 = OpLabel
+               OpSelectionMerge %70 None
+               OpBranchConditional %false %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %40
+         %70 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+         %73 = OpLoad %float %a
+         %74 = OpFOrdEqual %bool %73 %float_5
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpStore %x_GLF_color %79
+               OpBranch %75
+         %77 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %75
+         %75 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %81
+%tint_symbol = OpFunctionParameter %main_out
+         %85 = OpLabel
+         %86 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %86
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %25
+         %88 = OpLabel
+         %89 = OpFunctionCall %void %main_1
+         %91 = OpLoad %v4float %x_GLF_color
+         %92 = OpCompositeConstruct %main_out %91
+         %90 = OpFunctionCall %void %tint_symbol_2 %92
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 41[%41] is not post dominated by the back-edge block 70[%70]
+  %70 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..779fafc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,69 @@
+struct S {
+  x : i32;
+  y : i32;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i1_i11_(arg : ptr<function, S>) {
+  (*(arg)).y = 1;
+  return;
+}
+
+fn main_1() {
+  var a : f32;
+  var b : array<S, 2>;
+  var param : S;
+  a = 5.0;
+  loop {
+    let x_43 : i32 = x_10.one;
+    b[x_43].x = 1;
+    let x_46 : i32 = b[1].x;
+    if ((x_46 == 1)) {
+      let x_51 : i32 = x_10.one;
+      if ((x_51 == 1)) {
+        break;
+      }
+      let x_56 : S = b[1];
+      param = x_56;
+      func_struct_S_i1_i11_(&(param));
+      let x_58 : S = param;
+      b[1] = x_58;
+      let x_61 : i32 = b[1].y;
+      a = f32(x_61);
+    }
+    a = 0.0;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_63 : f32 = a;
+  if ((x_63 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
new file mode 100644
index 0000000..779fafc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
@@ -0,0 +1,69 @@
+struct S {
+  x : i32;
+  y : i32;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i1_i11_(arg : ptr<function, S>) {
+  (*(arg)).y = 1;
+  return;
+}
+
+fn main_1() {
+  var a : f32;
+  var b : array<S, 2>;
+  var param : S;
+  a = 5.0;
+  loop {
+    let x_43 : i32 = x_10.one;
+    b[x_43].x = 1;
+    let x_46 : i32 = b[1].x;
+    if ((x_46 == 1)) {
+      let x_51 : i32 = x_10.one;
+      if ((x_51 == 1)) {
+        break;
+      }
+      let x_56 : S = b[1];
+      param = x_56;
+      func_struct_S_i1_i11_(&(param));
+      let x_58 : S = param;
+      b[1] = x_58;
+      let x_61 : i32 = b[1].y;
+      a = f32(x_61);
+    }
+    a = 0.0;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_63 : f32 = a;
+  if ((x_63 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0adcd37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,65 @@
+struct S {
+  int x;
+  int y;
+};
+
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_struct_S_i1_i11_(inout S arg) {
+  arg.y = 1;
+  return;
+}
+
+void main_1() {
+  float a = 0.0f;
+  S b[2] = (S[2])0;
+  S param = (S)0;
+  a = 5.0f;
+  while (true) {
+    const int x_43 = asint(x_10[0].x);
+    b[x_43].x = 1;
+    const int x_46 = b[1].x;
+    if ((x_46 == 1)) {
+      const int x_51 = asint(x_10[0].x);
+      if ((x_51 == 1)) {
+        break;
+      }
+      const S x_56 = b[1];
+      param = x_56;
+      func_struct_S_i1_i11_(param);
+      b[1] = param;
+      const int x_61 = b[1].y;
+      a = float(x_61);
+    }
+    a = 0.0f;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  if ((a == 5.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a0d65d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.msl
@@ -0,0 +1,72 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int x;
+  int y;
+};
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper {
+  S arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_struct_S_i1_i11_(thread S* const arg) {
+  (*(arg)).y = 1;
+  return;
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  tint_array_wrapper b = {};
+  S param = {};
+  a = 5.0f;
+  while (true) {
+    int const x_43 = x_10.one;
+    b.arr[x_43].x = 1;
+    int const x_46 = b.arr[1].x;
+    if ((x_46 == 1)) {
+      int const x_51 = x_10.one;
+      if ((x_51 == 1)) {
+        break;
+      }
+      S const x_56 = b.arr[1];
+      param = x_56;
+      func_struct_S_i1_i11_(&(param));
+      S const x_58 = param;
+      b.arr[1] = x_58;
+      int const x_61 = b.arr[1].y;
+      a = float(x_61);
+    }
+    a = 0.0f;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_63 = a;
+  if ((x_63 == 5.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5969228
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,170 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 93
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "x"
+               OpMemberName %S 1 "y"
+               OpName %func_struct_S_i1_i11_ "func_struct_S_i1_i11_"
+               OpName %arg "arg"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 4
+               OpDecorate %_arr_S_uint_2 ArrayStride 8
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+          %S = OpTypeStruct %int %int
+%_ptr_Function_S = OpTypePointer Function %S
+         %12 = OpTypeFunction %void %_ptr_Function_S
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+         %25 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+     %uint_2 = OpConstant %uint 2
+%_arr_S_uint_2 = OpTypeArray %S %uint_2
+%_ptr_Function__arr_S_uint_2 = OpTypePointer Function %_arr_S_uint_2
+         %35 = OpConstantNull %_arr_S_uint_2
+         %37 = OpConstantNull %S
+    %float_5 = OpConstant %float 5
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+    %float_1 = OpConstant %float 1
+         %79 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %80 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %81 = OpTypeFunction %void %main_out
+%func_struct_S_i1_i11_ = OpFunction %void None %12
+        %arg = OpFunctionParameter %_ptr_Function_S
+         %18 = OpLabel
+         %23 = OpAccessChain %_ptr_Function_int %arg %uint_1
+               OpStore %23 %int_1
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %25
+         %27 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %30
+          %b = OpVariable %_ptr_Function__arr_S_uint_2 Function %35
+      %param = OpVariable %_ptr_Function_S Function %37
+               OpStore %a %float_5
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Function_int %b %46 %uint_0
+               OpStore %47 %int_1
+         %48 = OpAccessChain %_ptr_Function_int %b %int_1 %uint_0
+         %49 = OpLoad %int %48
+         %50 = OpIEqual %bool %49 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %52
+         %53 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %55 %int_1
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %40
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Function_S %b %int_1
+         %60 = OpLoad %S %59
+               OpStore %param %60
+         %61 = OpFunctionCall %void %func_struct_S_i1_i11_ %param
+         %63 = OpLoad %S %param
+         %64 = OpAccessChain %_ptr_Function_S %b %int_1
+               OpStore %64 %63
+         %65 = OpAccessChain %_ptr_Function_int %b %int_1 %uint_1
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+               OpStore %a %67
+               OpBranch %52
+         %52 = OpLabel
+               OpStore %a %float_0
+               OpBranch %41
+         %41 = OpLabel
+               OpSelectionMerge %70 None
+               OpBranchConditional %false %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %40
+         %70 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+         %73 = OpLoad %float %a
+         %74 = OpFOrdEqual %bool %73 %float_5
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpStore %x_GLF_color %79
+               OpBranch %75
+         %77 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %75
+         %75 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %81
+%tint_symbol = OpFunctionParameter %main_out
+         %85 = OpLabel
+         %86 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %86
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %25
+         %88 = OpLabel
+         %89 = OpFunctionCall %void %main_1
+         %91 = OpLoad %v4float %x_GLF_color
+         %92 = OpCompositeConstruct %main_out %91
+         %90 = OpFunctionCall %void %tint_symbol_2 %92
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 41[%41] is not post dominated by the back-edge block 70[%70]
+  %70 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..779fafc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,69 @@
+struct S {
+  x : i32;
+  y : i32;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i1_i11_(arg : ptr<function, S>) {
+  (*(arg)).y = 1;
+  return;
+}
+
+fn main_1() {
+  var a : f32;
+  var b : array<S, 2>;
+  var param : S;
+  a = 5.0;
+  loop {
+    let x_43 : i32 = x_10.one;
+    b[x_43].x = 1;
+    let x_46 : i32 = b[1].x;
+    if ((x_46 == 1)) {
+      let x_51 : i32 = x_10.one;
+      if ((x_51 == 1)) {
+        break;
+      }
+      let x_56 : S = b[1];
+      param = x_56;
+      func_struct_S_i1_i11_(&(param));
+      let x_58 : S = param;
+      b[1] = x_58;
+      let x_61 : i32 = b[1].y;
+      a = f32(x_61);
+    }
+    a = 0.0;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_63 : f32 = a;
+  if ((x_63 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm
new file mode 100644
index 0000000..61ce7ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm
@@ -0,0 +1,140 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_v1
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %j "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_v1 "_GLF_v1"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_v1 Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+    %_GLF_v1 = OpVariable %_ptr_Output_v4float Output
+      %int_2 = OpConstant %int 2
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %36 = OpLoad %int %35
+               OpStore %i %36
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpSLessThan %bool %41 %43
+               OpBranchConditional %44 %45 %38
+         %45 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %49 = OpLoad %float %48
+         %50 = OpFOrdGreaterThan %bool %47 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpKill
+         %51 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %54 = OpLoad %int %53
+               OpStore %j %54
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %j
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpSLessThan %bool %59 %61
+               OpBranchConditional %62 %63 %56
+         %63 = OpLabel
+         %64 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %67 = OpLoad %float %66
+         %68 = OpFOrdLessThan %bool %65 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+               OpKill
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpCompositeConstruct %v4float %73 %76 %79 %82
+               OpStore %_GLF_v1 %83
+               OpBranch %57
+         %57 = OpLabel
+         %84 = OpLoad %int %j
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %j %85
+               OpBranch %55
+         %56 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+         %86 = OpLoad %int %i
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %i %87
+               OpBranch %37
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..59e50ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,78 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int j = 0;
+  const int x_36 = asint(x_7[1].x);
+  i = x_36;
+  while (true) {
+    const int x_41 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_47 = asfloat(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_49 = asfloat(x_9[1].x);
+    if ((x_47 > x_49)) {
+      discard;
+    }
+    const int x_54 = asint(x_7[1].x);
+    j = x_54;
+    while (true) {
+      const int x_59 = j;
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_61 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      if ((x_59 < x_61)) {
+      } else {
+        break;
+      }
+      const float x_65 = gl_FragCoord.x;
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const float x_67 = asfloat(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      if ((x_65 < x_67)) {
+        discard;
+      }
+      const int x_72 = asint(x_7[2].x);
+      const int x_75 = asint(x_7[1].x);
+      const int x_78 = asint(x_7[1].x);
+      const int x_81 = asint(x_7[2].x);
+      x_GLF_v1 = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_v1_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_v1_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_v1};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_v1_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a59c60d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.msl
@@ -0,0 +1,89 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_v1_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_v1_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int j = 0;
+  int const x_36 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  i = x_36;
+  while (true) {
+    int const x_41 = i;
+    int const x_43 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    float const x_47 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    float const x_49 = x_9.x_GLF_uniform_float_values.arr[1].el;
+    if ((x_47 > x_49)) {
+      discard_fragment();
+    }
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    j = x_54;
+    while (true) {
+      int const x_59 = j;
+      int const x_61 = x_7.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_59 < x_61)) {
+      } else {
+        break;
+      }
+      float const x_65 = (*(tint_symbol_5)).x;
+      float const x_67 = x_9.x_GLF_uniform_float_values.arr[0].el;
+      if ((x_65 < x_67)) {
+        discard_fragment();
+      }
+      int const x_72 = x_7.x_GLF_uniform_int_values.arr[2].el;
+      int const x_75 = x_7.x_GLF_uniform_int_values.arr[1].el;
+      int const x_78 = x_7.x_GLF_uniform_int_values.arr[1].el;
+      int const x_81 = x_7.x_GLF_uniform_int_values.arr[2].el;
+      *(tint_symbol_6) = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+      {
+        int const x_84 = j;
+        j = (x_84 + 1);
+      }
+    }
+    {
+      int const x_86 = i;
+      i = (x_86 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_v1_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_v1_1=tint_symbol_3.x_GLF_v1_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7d4d31d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,187 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 109
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_v1 "x_GLF_v1"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_v1_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+   %x_GLF_v1 = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %96 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %29
+          %j = OpVariable %_ptr_Function_int Function %29
+         %34 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %35 = OpLoad %int %34
+               OpStore %i %35
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpSLessThan %bool %40 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %37
+         %46 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpFOrdGreaterThan %bool %51 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpKill
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %58 = OpLoad %int %57
+               OpStore %j %58
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %j
+         %64 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpSLessThan %bool %63 %65
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %60
+         %67 = OpLabel
+         %71 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %74 = OpLoad %float %73
+         %75 = OpFOrdLessThan %bool %72 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+               OpKill
+         %76 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %80
+         %88 = OpConvertSToF %float %82
+         %89 = OpConvertSToF %float %84
+         %90 = OpConvertSToF %float %86
+         %91 = OpCompositeConstruct %v4float %87 %88 %89 %90
+               OpStore %x_GLF_v1 %91
+               OpBranch %61
+         %61 = OpLabel
+         %92 = OpLoad %int %j
+         %93 = OpIAdd %int %92 %int_1
+               OpStore %j %93
+               OpBranch %59
+         %60 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %94 = OpLoad %int %i
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %i %95
+               OpBranch %36
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %96
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %100 = OpLabel
+        %101 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %101
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %103 = OpLabel
+        %104 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %104
+        %105 = OpFunctionCall %void %main_1
+        %107 = OpLoad %v4float %x_GLF_v1
+        %108 = OpCompositeConstruct %main_out %107
+        %106 = OpFunctionCall %void %tint_symbol_3 %108
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a5fd0d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_v1 : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var j : i32;
+  let x_36 : i32 = x_7.x_GLF_uniform_int_values[1];
+  i = x_36;
+  loop {
+    let x_41 : i32 = i;
+    let x_43 : i32 = x_7.x_GLF_uniform_int_values[0];
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    let x_47 : f32 = x_9.x_GLF_uniform_float_values[0];
+    let x_49 : f32 = x_9.x_GLF_uniform_float_values[1];
+    if ((x_47 > x_49)) {
+      discard;
+    }
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    j = x_54;
+    loop {
+      let x_59 : i32 = j;
+      let x_61 : i32 = x_7.x_GLF_uniform_int_values[0];
+      if ((x_59 < x_61)) {
+      } else {
+        break;
+      }
+      let x_65 : f32 = gl_FragCoord.x;
+      let x_67 : f32 = x_9.x_GLF_uniform_float_values[0];
+      if ((x_65 < x_67)) {
+        discard;
+      }
+      let x_72 : i32 = x_7.x_GLF_uniform_int_values[2];
+      let x_75 : i32 = x_7.x_GLF_uniform_int_values[1];
+      let x_78 : i32 = x_7.x_GLF_uniform_int_values[1];
+      let x_81 : i32 = x_7.x_GLF_uniform_int_values[2];
+      x_GLF_v1 = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+
+      continuing {
+        let x_84 : i32 = j;
+        j = (x_84 + 1);
+      }
+    }
+
+    continuing {
+      let x_86 : i32 = i;
+      i = (x_86 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_v1_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_v1);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
new file mode 100644
index 0000000..a5fd0d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_v1 : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var j : i32;
+  let x_36 : i32 = x_7.x_GLF_uniform_int_values[1];
+  i = x_36;
+  loop {
+    let x_41 : i32 = i;
+    let x_43 : i32 = x_7.x_GLF_uniform_int_values[0];
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    let x_47 : f32 = x_9.x_GLF_uniform_float_values[0];
+    let x_49 : f32 = x_9.x_GLF_uniform_float_values[1];
+    if ((x_47 > x_49)) {
+      discard;
+    }
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    j = x_54;
+    loop {
+      let x_59 : i32 = j;
+      let x_61 : i32 = x_7.x_GLF_uniform_int_values[0];
+      if ((x_59 < x_61)) {
+      } else {
+        break;
+      }
+      let x_65 : f32 = gl_FragCoord.x;
+      let x_67 : f32 = x_9.x_GLF_uniform_float_values[0];
+      if ((x_65 < x_67)) {
+        discard;
+      }
+      let x_72 : i32 = x_7.x_GLF_uniform_int_values[2];
+      let x_75 : i32 = x_7.x_GLF_uniform_int_values[1];
+      let x_78 : i32 = x_7.x_GLF_uniform_int_values[1];
+      let x_81 : i32 = x_7.x_GLF_uniform_int_values[2];
+      x_GLF_v1 = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+
+      continuing {
+        let x_84 : i32 = j;
+        j = (x_84 + 1);
+      }
+    }
+
+    continuing {
+      let x_86 : i32 = i;
+      i = (x_86 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_v1_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_v1);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..59e50ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,78 @@
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_v1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int j = 0;
+  const int x_36 = asint(x_7[1].x);
+  i = x_36;
+  while (true) {
+    const int x_41 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_47 = asfloat(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const float x_49 = asfloat(x_9[1].x);
+    if ((x_47 > x_49)) {
+      discard;
+    }
+    const int x_54 = asint(x_7[1].x);
+    j = x_54;
+    while (true) {
+      const int x_59 = j;
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_61 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      if ((x_59 < x_61)) {
+      } else {
+        break;
+      }
+      const float x_65 = gl_FragCoord.x;
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const float x_67 = asfloat(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      if ((x_65 < x_67)) {
+        discard;
+      }
+      const int x_72 = asint(x_7[2].x);
+      const int x_75 = asint(x_7[1].x);
+      const int x_78 = asint(x_7[1].x);
+      const int x_81 = asint(x_7[2].x);
+      x_GLF_v1 = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_v1_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_v1_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_v1};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_v1_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a59c60d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.msl
@@ -0,0 +1,89 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_v1_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_v1_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int j = 0;
+  int const x_36 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  i = x_36;
+  while (true) {
+    int const x_41 = i;
+    int const x_43 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    float const x_47 = x_9.x_GLF_uniform_float_values.arr[0].el;
+    float const x_49 = x_9.x_GLF_uniform_float_values.arr[1].el;
+    if ((x_47 > x_49)) {
+      discard_fragment();
+    }
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    j = x_54;
+    while (true) {
+      int const x_59 = j;
+      int const x_61 = x_7.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_59 < x_61)) {
+      } else {
+        break;
+      }
+      float const x_65 = (*(tint_symbol_5)).x;
+      float const x_67 = x_9.x_GLF_uniform_float_values.arr[0].el;
+      if ((x_65 < x_67)) {
+        discard_fragment();
+      }
+      int const x_72 = x_7.x_GLF_uniform_int_values.arr[2].el;
+      int const x_75 = x_7.x_GLF_uniform_int_values.arr[1].el;
+      int const x_78 = x_7.x_GLF_uniform_int_values.arr[1].el;
+      int const x_81 = x_7.x_GLF_uniform_int_values.arr[2].el;
+      *(tint_symbol_6) = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+      {
+        int const x_84 = j;
+        j = (x_84 + 1);
+      }
+    }
+    {
+      int const x_86 = i;
+      i = (x_86 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_v1_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_v1_1=tint_symbol_3.x_GLF_v1_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7d4d31d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,187 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 109
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_v1 "x_GLF_v1"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_v1_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf1 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+   %x_GLF_v1 = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %96 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %29
+          %j = OpVariable %_ptr_Function_int Function %29
+         %34 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %35 = OpLoad %int %34
+               OpStore %i %35
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpSLessThan %bool %40 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %37
+         %46 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpFOrdGreaterThan %bool %51 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpKill
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %58 = OpLoad %int %57
+               OpStore %j %58
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %j
+         %64 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpSLessThan %bool %63 %65
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %60
+         %67 = OpLabel
+         %71 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %74 = OpLoad %float %73
+         %75 = OpFOrdLessThan %bool %72 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+               OpKill
+         %76 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %80
+         %88 = OpConvertSToF %float %82
+         %89 = OpConvertSToF %float %84
+         %90 = OpConvertSToF %float %86
+         %91 = OpCompositeConstruct %v4float %87 %88 %89 %90
+               OpStore %x_GLF_v1 %91
+               OpBranch %61
+         %61 = OpLabel
+         %92 = OpLoad %int %j
+         %93 = OpIAdd %int %92 %int_1
+               OpStore %j %93
+               OpBranch %59
+         %60 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %94 = OpLoad %int %i
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %i %95
+               OpBranch %36
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %96
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %100 = OpLabel
+        %101 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %101
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+        %103 = OpLabel
+        %104 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %104
+        %105 = OpFunctionCall %void %main_1
+        %107 = OpLoad %v4float %x_GLF_v1
+        %108 = OpCompositeConstruct %main_out %107
+        %106 = OpFunctionCall %void %tint_symbol_3 %108
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a5fd0d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,84 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_v1 : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var j : i32;
+  let x_36 : i32 = x_7.x_GLF_uniform_int_values[1];
+  i = x_36;
+  loop {
+    let x_41 : i32 = i;
+    let x_43 : i32 = x_7.x_GLF_uniform_int_values[0];
+    if ((x_41 < x_43)) {
+    } else {
+      break;
+    }
+    let x_47 : f32 = x_9.x_GLF_uniform_float_values[0];
+    let x_49 : f32 = x_9.x_GLF_uniform_float_values[1];
+    if ((x_47 > x_49)) {
+      discard;
+    }
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    j = x_54;
+    loop {
+      let x_59 : i32 = j;
+      let x_61 : i32 = x_7.x_GLF_uniform_int_values[0];
+      if ((x_59 < x_61)) {
+      } else {
+        break;
+      }
+      let x_65 : f32 = gl_FragCoord.x;
+      let x_67 : f32 = x_9.x_GLF_uniform_float_values[0];
+      if ((x_65 < x_67)) {
+        discard;
+      }
+      let x_72 : i32 = x_7.x_GLF_uniform_int_values[2];
+      let x_75 : i32 = x_7.x_GLF_uniform_int_values[1];
+      let x_78 : i32 = x_7.x_GLF_uniform_int_values[1];
+      let x_81 : i32 = x_7.x_GLF_uniform_int_values[2];
+      x_GLF_v1 = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+
+      continuing {
+        let x_84 : i32 = j;
+        j = (x_84 + 1);
+      }
+    }
+
+    continuing {
+      let x_86 : i32 = i;
+      i = (x_86 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_v1_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_v1);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm
new file mode 100644
index 0000000..5fc3519
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm
@@ -0,0 +1,173 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %m "m"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %v2bool = OpTypeVector %bool 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %12
+         %34 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function
+          %f = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %36 = OpLoad %int %35
+         %37 = OpIEqual %bool %36 %int_1
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+         %40 = OpLoad %float %f
+         %41 = OpCompositeConstruct %v2float %40 %float_0
+         %42 = OpCompositeConstruct %v2float %float_0 %40
+         %43 = OpCompositeConstruct %mat2v2float %41 %42
+               OpStore %m %43
+               OpBranch %38
+         %38 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %45 = OpLoad %int %44
+               OpStore %i %45
+               OpBranch %46
+         %46 = OpLabel
+               OpLoopMerge %47 %48 None
+               OpBranch %49
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpSLessThan %bool %50 %52
+               OpBranchConditional %53 %54 %47
+         %54 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %56 = OpLoad %int %55
+               OpStore %j %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %j
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpSLessThan %bool %61 %63
+               OpBranchConditional %64 %65 %58
+         %65 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpLoad %int %j
+         %68 = OpLoad %int %i
+         %69 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpIMul %int %68 %70
+         %72 = OpLoad %int %j
+         %73 = OpIAdd %int %71 %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpAccessChain %_ptr_Function_float %m %66 %67
+               OpStore %75 %74
+               OpBranch %59
+         %59 = OpLabel
+         %76 = OpLoad %int %j
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %j %77
+               OpBranch %57
+         %58 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+         %78 = OpLoad %int %i
+         %79 = OpIAdd %int %78 %int_1
+               OpStore %i %79
+               OpBranch %46
+         %47 = OpLabel
+         %80 = OpLoad %mat2v2float %m
+         %81 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %82
+         %84 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %85
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpCompositeConstruct %v2float %83 %86
+         %94 = OpCompositeConstruct %v2float %89 %92
+         %95 = OpCompositeConstruct %mat2v2float %93 %94
+         %96 = OpCompositeExtract %v2float %80 0
+         %97 = OpCompositeExtract %v2float %95 0
+         %98 = OpFOrdEqual %v2bool %96 %97
+         %99 = OpAll %bool %98
+        %100 = OpCompositeExtract %v2float %80 1
+        %101 = OpCompositeExtract %v2float %95 1
+        %102 = OpFOrdEqual %v2bool %100 %101
+        %103 = OpAll %bool %102
+        %104 = OpLogicalAnd %bool %99 %103
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %109
+        %111 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %112 = OpLoad %int %111
+        %113 = OpConvertSToF %float %112
+        %114 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %115 = OpLoad %int %114
+        %116 = OpConvertSToF %float %115
+        %117 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %118 = OpLoad %int %117
+        %119 = OpConvertSToF %float %118
+        %120 = OpCompositeConstruct %v4float %110 %113 %116 %119
+               OpStore %_GLF_color %120
+               OpBranch %105
+        %107 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %122 = OpLoad %int %121
+        %123 = OpConvertSToF %float %122
+        %124 = OpCompositeConstruct %v4float %123 %123 %123 %123
+               OpStore %_GLF_color %124
+               OpBranch %105
+        %105 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..34889ee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,91 @@
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float f = 0.0f;
+  int i = 0;
+  int j = 0;
+  const int x_36 = asint(x_5[1].x);
+  if ((x_36 == 1)) {
+    const float x_40 = f;
+    m = float2x2(float2(x_40, 0.0f), float2(0.0f, x_40));
+  }
+  const int x_45 = asint(x_5[1].x);
+  i = x_45;
+  while (true) {
+    const int x_50 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    const int x_56 = asint(x_5[1].x);
+    j = x_56;
+    while (true) {
+      const int x_61 = j;
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const int x_63 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      const int x_66 = i;
+      const int x_67 = j;
+      const int x_68 = i;
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_70 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      set_float2(m[x_66], x_67, float(((x_68 * x_70) + j)));
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const float2x2 x_80 = m;
+  const int x_82 = asint(x_5[1].x);
+  const int x_85 = asint(x_5[2].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_88 = asint(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_91 = asint(x_5[3].x);
+  const float2x2 x_95 = float2x2(float2(float(x_82), float(x_85)), float2(float(x_88), float(x_91)));
+  bool tint_tmp = all((x_80[0u] == x_95[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_80[1u] == x_95[1u]));
+  }
+  if ((tint_tmp)) {
+    const int x_109 = asint(x_5[2].x);
+    const int x_112 = asint(x_5[1].x);
+    const int x_115 = asint(x_5[1].x);
+    const int x_118 = asint(x_5[2].x);
+    x_GLF_color = float4(float(x_109), float(x_112), float(x_115), float(x_118));
+  } else {
+    const int x_122 = asint(x_5[1].x);
+    const float x_123 = float(x_122);
+    x_GLF_color = float4(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d6a3fcf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.msl
@@ -0,0 +1,92 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float2x2 m = float2x2(0.0f);
+  float f = 0.0f;
+  int i = 0;
+  int j = 0;
+  int const x_36 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_36 == 1)) {
+    float const x_40 = f;
+    m = float2x2(float2(x_40, 0.0f), float2(0.0f, x_40));
+  }
+  int const x_45 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  i = x_45;
+  while (true) {
+    int const x_50 = i;
+    int const x_52 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    int const x_56 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    j = x_56;
+    while (true) {
+      int const x_61 = j;
+      int const x_63 = x_5.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      int const x_66 = i;
+      int const x_67 = j;
+      int const x_68 = i;
+      int const x_70 = x_5.x_GLF_uniform_int_values.arr[0].el;
+      int const x_72 = j;
+      m[x_66][x_67] = float(((x_68 * x_70) + x_72));
+      {
+        int const x_76 = j;
+        j = (x_76 + 1);
+      }
+    }
+    {
+      int const x_78 = i;
+      i = (x_78 + 1);
+    }
+  }
+  float2x2 const x_80 = m;
+  int const x_82 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_85 = x_5.x_GLF_uniform_int_values.arr[2].el;
+  int const x_88 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_91 = x_5.x_GLF_uniform_int_values.arr[3].el;
+  float2x2 const x_95 = float2x2(float2(float(x_82), float(x_85)), float2(float(x_88), float(x_91)));
+  if ((all((x_80[0u] == x_95[0u])) && all((x_80[1u] == x_95[1u])))) {
+    int const x_109 = x_5.x_GLF_uniform_int_values.arr[2].el;
+    int const x_112 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    int const x_115 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    int const x_118 = x_5.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_109), float(x_112), float(x_115), float(x_118));
+  } else {
+    int const x_122 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    float const x_123 = float(x_122);
+    *(tint_symbol_4) = float4(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2f12b21
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,223 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 149
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %23 = OpConstantNull %mat2v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %v2bool = OpTypeVector %bool 2
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+        %137 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function %23
+          %f = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %29
+          %j = OpVariable %_ptr_Function_int Function %29
+         %34 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpIEqual %bool %35 %int_1
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %38
+         %39 = OpLabel
+         %40 = OpLoad %float %f
+         %42 = OpCompositeConstruct %v2float %40 %float_0
+         %43 = OpCompositeConstruct %v2float %float_0 %40
+         %44 = OpCompositeConstruct %mat2v2float %42 %43
+               OpStore %m %44
+               OpBranch %38
+         %38 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %46 = OpLoad %int %45
+               OpStore %i %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpSLessThan %bool %51 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpBranch %56
+         %58 = OpLabel
+               OpBranch %48
+         %56 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %60 = OpLoad %int %59
+               OpStore %j %60
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpLoad %int %j
+         %66 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpSLessThan %bool %65 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+               OpBranch %69
+         %71 = OpLabel
+               OpBranch %62
+         %69 = OpLabel
+         %72 = OpLoad %int %i
+         %73 = OpLoad %int %j
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpLoad %int %j
+         %78 = OpAccessChain %_ptr_Function_float %m %72 %73
+         %80 = OpIMul %int %74 %76
+         %81 = OpIAdd %int %80 %77
+         %79 = OpConvertSToF %float %81
+               OpStore %78 %79
+               OpBranch %63
+         %63 = OpLabel
+         %82 = OpLoad %int %j
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %j %83
+               OpBranch %61
+         %62 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %i %85
+               OpBranch %47
+         %48 = OpLabel
+         %86 = OpLoad %mat2v2float %m
+         %87 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %90 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+         %91 = OpLoad %int %90
+         %92 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %95 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_3
+         %96 = OpLoad %int %95
+         %97 = OpConvertSToF %float %88
+         %98 = OpConvertSToF %float %91
+         %99 = OpCompositeConstruct %v2float %97 %98
+        %100 = OpConvertSToF %float %93
+        %101 = OpConvertSToF %float %96
+        %102 = OpCompositeConstruct %v2float %100 %101
+        %103 = OpCompositeConstruct %mat2v2float %99 %102
+        %105 = OpCompositeExtract %v2float %86 0
+        %106 = OpCompositeExtract %v2float %103 0
+        %107 = OpFOrdEqual %v2bool %105 %106
+        %104 = OpAll %bool %107
+               OpSelectionMerge %109 None
+               OpBranchConditional %104 %110 %109
+        %110 = OpLabel
+        %113 = OpCompositeExtract %v2float %86 1
+        %114 = OpCompositeExtract %v2float %103 1
+        %115 = OpFOrdEqual %v2bool %113 %114
+        %111 = OpAll %bool %115
+               OpBranch %109
+        %109 = OpLabel
+        %116 = OpPhi %bool %104 %48 %111 %110
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %119
+        %118 = OpLabel
+        %120 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+        %123 = OpLoad %int %122
+        %124 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+        %125 = OpLoad %int %124
+        %126 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+        %127 = OpLoad %int %126
+        %128 = OpConvertSToF %float %121
+        %129 = OpConvertSToF %float %123
+        %130 = OpConvertSToF %float %125
+        %131 = OpConvertSToF %float %127
+        %132 = OpCompositeConstruct %v4float %128 %129 %130 %131
+               OpStore %x_GLF_color %132
+               OpBranch %117
+        %119 = OpLabel
+        %133 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+        %134 = OpLoad %int %133
+        %135 = OpConvertSToF %float %134
+        %136 = OpCompositeConstruct %v4float %135 %135 %135 %135
+               OpStore %x_GLF_color %136
+               OpBranch %117
+        %117 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %137
+%tint_symbol = OpFunctionParameter %main_out
+        %141 = OpLabel
+        %142 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %142
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %144 = OpLabel
+        %145 = OpFunctionCall %void %main_1
+        %147 = OpLoad %v4float %x_GLF_color
+        %148 = OpCompositeConstruct %main_out %147
+        %146 = OpFunctionCall %void %tint_symbol_2 %148
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3ad4f9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,87 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  var f : f32;
+  var i : i32;
+  var j : i32;
+  let x_36 : i32 = x_5.x_GLF_uniform_int_values[1];
+  if ((x_36 == 1)) {
+    let x_40 : f32 = f;
+    m = mat2x2<f32>(vec2<f32>(x_40, 0.0), vec2<f32>(0.0, x_40));
+  }
+  let x_45 : i32 = x_5.x_GLF_uniform_int_values[1];
+  i = x_45;
+  loop {
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_5.x_GLF_uniform_int_values[0];
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = x_5.x_GLF_uniform_int_values[1];
+    j = x_56;
+    loop {
+      let x_61 : i32 = j;
+      let x_63 : i32 = x_5.x_GLF_uniform_int_values[0];
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      let x_66 : i32 = i;
+      let x_67 : i32 = j;
+      let x_68 : i32 = i;
+      let x_70 : i32 = x_5.x_GLF_uniform_int_values[0];
+      let x_72 : i32 = j;
+      m[x_66][x_67] = f32(((x_68 * x_70) + x_72));
+
+      continuing {
+        let x_76 : i32 = j;
+        j = (x_76 + 1);
+      }
+    }
+
+    continuing {
+      let x_78 : i32 = i;
+      i = (x_78 + 1);
+    }
+  }
+  let x_80 : mat2x2<f32> = m;
+  let x_82 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_85 : i32 = x_5.x_GLF_uniform_int_values[2];
+  let x_88 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_91 : i32 = x_5.x_GLF_uniform_int_values[3];
+  let x_95 : mat2x2<f32> = mat2x2<f32>(vec2<f32>(f32(x_82), f32(x_85)), vec2<f32>(f32(x_88), f32(x_91)));
+  if ((all((x_80[0u] == x_95[0u])) && all((x_80[1u] == x_95[1u])))) {
+    let x_109 : i32 = x_5.x_GLF_uniform_int_values[2];
+    let x_112 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_115 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_118 : i32 = x_5.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_109), f32(x_112), f32(x_115), f32(x_118));
+  } else {
+    let x_122 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_123 : f32 = f32(x_122);
+    x_GLF_color = vec4<f32>(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
new file mode 100644
index 0000000..3ad4f9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
@@ -0,0 +1,87 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  var f : f32;
+  var i : i32;
+  var j : i32;
+  let x_36 : i32 = x_5.x_GLF_uniform_int_values[1];
+  if ((x_36 == 1)) {
+    let x_40 : f32 = f;
+    m = mat2x2<f32>(vec2<f32>(x_40, 0.0), vec2<f32>(0.0, x_40));
+  }
+  let x_45 : i32 = x_5.x_GLF_uniform_int_values[1];
+  i = x_45;
+  loop {
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_5.x_GLF_uniform_int_values[0];
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = x_5.x_GLF_uniform_int_values[1];
+    j = x_56;
+    loop {
+      let x_61 : i32 = j;
+      let x_63 : i32 = x_5.x_GLF_uniform_int_values[0];
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      let x_66 : i32 = i;
+      let x_67 : i32 = j;
+      let x_68 : i32 = i;
+      let x_70 : i32 = x_5.x_GLF_uniform_int_values[0];
+      let x_72 : i32 = j;
+      m[x_66][x_67] = f32(((x_68 * x_70) + x_72));
+
+      continuing {
+        let x_76 : i32 = j;
+        j = (x_76 + 1);
+      }
+    }
+
+    continuing {
+      let x_78 : i32 = i;
+      i = (x_78 + 1);
+    }
+  }
+  let x_80 : mat2x2<f32> = m;
+  let x_82 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_85 : i32 = x_5.x_GLF_uniform_int_values[2];
+  let x_88 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_91 : i32 = x_5.x_GLF_uniform_int_values[3];
+  let x_95 : mat2x2<f32> = mat2x2<f32>(vec2<f32>(f32(x_82), f32(x_85)), vec2<f32>(f32(x_88), f32(x_91)));
+  if ((all((x_80[0u] == x_95[0u])) && all((x_80[1u] == x_95[1u])))) {
+    let x_109 : i32 = x_5.x_GLF_uniform_int_values[2];
+    let x_112 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_115 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_118 : i32 = x_5.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_109), f32(x_112), f32(x_115), f32(x_118));
+  } else {
+    let x_122 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_123 : f32 = f32(x_122);
+    x_GLF_color = vec4<f32>(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..34889ee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,91 @@
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float f = 0.0f;
+  int i = 0;
+  int j = 0;
+  const int x_36 = asint(x_5[1].x);
+  if ((x_36 == 1)) {
+    const float x_40 = f;
+    m = float2x2(float2(x_40, 0.0f), float2(0.0f, x_40));
+  }
+  const int x_45 = asint(x_5[1].x);
+  i = x_45;
+  while (true) {
+    const int x_50 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_52 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    const int x_56 = asint(x_5[1].x);
+    j = x_56;
+    while (true) {
+      const int x_61 = j;
+      const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+      const int x_63 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      const int x_66 = i;
+      const int x_67 = j;
+      const int x_68 = i;
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_70 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      set_float2(m[x_66], x_67, float(((x_68 * x_70) + j)));
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const float2x2 x_80 = m;
+  const int x_82 = asint(x_5[1].x);
+  const int x_85 = asint(x_5[2].x);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_88 = asint(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_91 = asint(x_5[3].x);
+  const float2x2 x_95 = float2x2(float2(float(x_82), float(x_85)), float2(float(x_88), float(x_91)));
+  bool tint_tmp = all((x_80[0u] == x_95[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_80[1u] == x_95[1u]));
+  }
+  if ((tint_tmp)) {
+    const int x_109 = asint(x_5[2].x);
+    const int x_112 = asint(x_5[1].x);
+    const int x_115 = asint(x_5[1].x);
+    const int x_118 = asint(x_5[2].x);
+    x_GLF_color = float4(float(x_109), float(x_112), float(x_115), float(x_118));
+  } else {
+    const int x_122 = asint(x_5[1].x);
+    const float x_123 = float(x_122);
+    x_GLF_color = float4(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d6a3fcf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.msl
@@ -0,0 +1,92 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float2x2 m = float2x2(0.0f);
+  float f = 0.0f;
+  int i = 0;
+  int j = 0;
+  int const x_36 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_36 == 1)) {
+    float const x_40 = f;
+    m = float2x2(float2(x_40, 0.0f), float2(0.0f, x_40));
+  }
+  int const x_45 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  i = x_45;
+  while (true) {
+    int const x_50 = i;
+    int const x_52 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    int const x_56 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    j = x_56;
+    while (true) {
+      int const x_61 = j;
+      int const x_63 = x_5.x_GLF_uniform_int_values.arr[0].el;
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      int const x_66 = i;
+      int const x_67 = j;
+      int const x_68 = i;
+      int const x_70 = x_5.x_GLF_uniform_int_values.arr[0].el;
+      int const x_72 = j;
+      m[x_66][x_67] = float(((x_68 * x_70) + x_72));
+      {
+        int const x_76 = j;
+        j = (x_76 + 1);
+      }
+    }
+    {
+      int const x_78 = i;
+      i = (x_78 + 1);
+    }
+  }
+  float2x2 const x_80 = m;
+  int const x_82 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_85 = x_5.x_GLF_uniform_int_values.arr[2].el;
+  int const x_88 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_91 = x_5.x_GLF_uniform_int_values.arr[3].el;
+  float2x2 const x_95 = float2x2(float2(float(x_82), float(x_85)), float2(float(x_88), float(x_91)));
+  if ((all((x_80[0u] == x_95[0u])) && all((x_80[1u] == x_95[1u])))) {
+    int const x_109 = x_5.x_GLF_uniform_int_values.arr[2].el;
+    int const x_112 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    int const x_115 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    int const x_118 = x_5.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_109), float(x_112), float(x_115), float(x_118));
+  } else {
+    int const x_122 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    float const x_123 = float(x_122);
+    *(tint_symbol_4) = float4(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2f12b21
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,223 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 149
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %23 = OpConstantNull %mat2v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %v2bool = OpTypeVector %bool 2
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+        %137 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function %23
+          %f = OpVariable %_ptr_Function_float Function %26
+          %i = OpVariable %_ptr_Function_int Function %29
+          %j = OpVariable %_ptr_Function_int Function %29
+         %34 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpIEqual %bool %35 %int_1
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %38
+         %39 = OpLabel
+         %40 = OpLoad %float %f
+         %42 = OpCompositeConstruct %v2float %40 %float_0
+         %43 = OpCompositeConstruct %v2float %float_0 %40
+         %44 = OpCompositeConstruct %mat2v2float %42 %43
+               OpStore %m %44
+               OpBranch %38
+         %38 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %46 = OpLoad %int %45
+               OpStore %i %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpSLessThan %bool %51 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpBranch %56
+         %58 = OpLabel
+               OpBranch %48
+         %56 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %60 = OpLoad %int %59
+               OpStore %j %60
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpLoad %int %j
+         %66 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %67 = OpLoad %int %66
+         %68 = OpSLessThan %bool %65 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+               OpBranch %69
+         %71 = OpLabel
+               OpBranch %62
+         %69 = OpLabel
+         %72 = OpLoad %int %i
+         %73 = OpLoad %int %j
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpLoad %int %j
+         %78 = OpAccessChain %_ptr_Function_float %m %72 %73
+         %80 = OpIMul %int %74 %76
+         %81 = OpIAdd %int %80 %77
+         %79 = OpConvertSToF %float %81
+               OpStore %78 %79
+               OpBranch %63
+         %63 = OpLabel
+         %82 = OpLoad %int %j
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %j %83
+               OpBranch %61
+         %62 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %i %85
+               OpBranch %47
+         %48 = OpLabel
+         %86 = OpLoad %mat2v2float %m
+         %87 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %90 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+         %91 = OpLoad %int %90
+         %92 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %95 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_3
+         %96 = OpLoad %int %95
+         %97 = OpConvertSToF %float %88
+         %98 = OpConvertSToF %float %91
+         %99 = OpCompositeConstruct %v2float %97 %98
+        %100 = OpConvertSToF %float %93
+        %101 = OpConvertSToF %float %96
+        %102 = OpCompositeConstruct %v2float %100 %101
+        %103 = OpCompositeConstruct %mat2v2float %99 %102
+        %105 = OpCompositeExtract %v2float %86 0
+        %106 = OpCompositeExtract %v2float %103 0
+        %107 = OpFOrdEqual %v2bool %105 %106
+        %104 = OpAll %bool %107
+               OpSelectionMerge %109 None
+               OpBranchConditional %104 %110 %109
+        %110 = OpLabel
+        %113 = OpCompositeExtract %v2float %86 1
+        %114 = OpCompositeExtract %v2float %103 1
+        %115 = OpFOrdEqual %v2bool %113 %114
+        %111 = OpAll %bool %115
+               OpBranch %109
+        %109 = OpLabel
+        %116 = OpPhi %bool %104 %48 %111 %110
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %119
+        %118 = OpLabel
+        %120 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+        %123 = OpLoad %int %122
+        %124 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+        %125 = OpLoad %int %124
+        %126 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+        %127 = OpLoad %int %126
+        %128 = OpConvertSToF %float %121
+        %129 = OpConvertSToF %float %123
+        %130 = OpConvertSToF %float %125
+        %131 = OpConvertSToF %float %127
+        %132 = OpCompositeConstruct %v4float %128 %129 %130 %131
+               OpStore %x_GLF_color %132
+               OpBranch %117
+        %119 = OpLabel
+        %133 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+        %134 = OpLoad %int %133
+        %135 = OpConvertSToF %float %134
+        %136 = OpCompositeConstruct %v4float %135 %135 %135 %135
+               OpStore %x_GLF_color %136
+               OpBranch %117
+        %117 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %137
+%tint_symbol = OpFunctionParameter %main_out
+        %141 = OpLabel
+        %142 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %142
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %144 = OpLabel
+        %145 = OpFunctionCall %void %main_1
+        %147 = OpLoad %v4float %x_GLF_color
+        %148 = OpCompositeConstruct %main_out %147
+        %146 = OpFunctionCall %void %tint_symbol_2 %148
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3ad4f9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,87 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  var f : f32;
+  var i : i32;
+  var j : i32;
+  let x_36 : i32 = x_5.x_GLF_uniform_int_values[1];
+  if ((x_36 == 1)) {
+    let x_40 : f32 = f;
+    m = mat2x2<f32>(vec2<f32>(x_40, 0.0), vec2<f32>(0.0, x_40));
+  }
+  let x_45 : i32 = x_5.x_GLF_uniform_int_values[1];
+  i = x_45;
+  loop {
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_5.x_GLF_uniform_int_values[0];
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = x_5.x_GLF_uniform_int_values[1];
+    j = x_56;
+    loop {
+      let x_61 : i32 = j;
+      let x_63 : i32 = x_5.x_GLF_uniform_int_values[0];
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      let x_66 : i32 = i;
+      let x_67 : i32 = j;
+      let x_68 : i32 = i;
+      let x_70 : i32 = x_5.x_GLF_uniform_int_values[0];
+      let x_72 : i32 = j;
+      m[x_66][x_67] = f32(((x_68 * x_70) + x_72));
+
+      continuing {
+        let x_76 : i32 = j;
+        j = (x_76 + 1);
+      }
+    }
+
+    continuing {
+      let x_78 : i32 = i;
+      i = (x_78 + 1);
+    }
+  }
+  let x_80 : mat2x2<f32> = m;
+  let x_82 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_85 : i32 = x_5.x_GLF_uniform_int_values[2];
+  let x_88 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_91 : i32 = x_5.x_GLF_uniform_int_values[3];
+  let x_95 : mat2x2<f32> = mat2x2<f32>(vec2<f32>(f32(x_82), f32(x_85)), vec2<f32>(f32(x_88), f32(x_91)));
+  if ((all((x_80[0u] == x_95[0u])) && all((x_80[1u] == x_95[1u])))) {
+    let x_109 : i32 = x_5.x_GLF_uniform_int_values[2];
+    let x_112 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_115 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_118 : i32 = x_5.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_109), f32(x_112), f32(x_115), f32(x_118));
+  } else {
+    let x_122 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_123 : f32 = f32(x_122);
+    x_GLF_color = vec4<f32>(x_123, x_123, x_123, x_123);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm
new file mode 100644
index 0000000..cb7eca1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm
@@ -0,0 +1,177 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_i1_ "func(struct-S-i11;i1;"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %a "a"
+               OpName %arr "arr"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %S 0 RelaxedPrecision
+               OpDecorate %func_struct_S_i11_i1_ RelaxedPrecision
+               OpDecorate %x RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %a RelaxedPrecision
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %35 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %39 = OpTypeFunction %int %_ptr_Function_S %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_S_uint_1 = OpTypeArray %S %uint_1
+%_ptr_Function__arr_S_uint_1 = OpTypePointer Function %_arr_S_uint_1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %58 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %35
+         %59 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+        %arr = OpVariable %_ptr_Function__arr_S_uint_1 Function
+          %i = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_S Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_S Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %22 = OpLoad %int %60
+         %61 = OpAccessChain %_ptr_Function_int %arr %int_0 %int_0
+               OpStore %61 %22
+               OpStore %i %int_0
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %23 = OpLoad %int %i
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %24 = OpLoad %int %66
+         %25 = OpIAdd %int %int_5 %24
+         %67 = OpSLessThan %bool %23 %25
+               OpBranchConditional %67 %68 %63
+         %68 = OpLabel
+         %26 = OpLoad %int %i
+         %27 = OpSMod %int %26 %int_2
+         %69 = OpINotEqual %bool %27 %int_0
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_S %arr %int_0
+         %74 = OpLoad %S %73
+               OpStore %param %74
+         %28 = OpLoad %int %i
+               OpStore %param_0 %28
+         %29 = OpFunctionCall %int %func_struct_S_i11_i1_ %param %param_0
+         %75 = OpLoad %S %param
+         %76 = OpAccessChain %_ptr_Function_S %arr %int_0
+               OpStore %76 %75
+               OpStore %a %29
+               OpBranch %70
+         %72 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_S %arr %int_0
+         %78 = OpLoad %S %77
+               OpStore %param_1 %78
+               OpStore %param_2 %int_1
+         %30 = OpFunctionCall %int %func_struct_S_i11_i1_ %param_1 %param_2
+         %79 = OpLoad %S %param_1
+         %80 = OpAccessChain %_ptr_Function_S %arr %int_0
+               OpStore %80 %79
+               OpStore %a %30
+               OpBranch %70
+         %70 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+         %31 = OpLoad %int %i
+         %32 = OpIAdd %int %31 %int_1
+               OpStore %i %32
+               OpBranch %62
+         %63 = OpLabel
+         %33 = OpLoad %int %a
+         %81 = OpIEqual %bool %33 %int_6
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+               OpStore %_GLF_color %57
+               OpBranch %82
+         %84 = OpLabel
+               OpStore %_GLF_color %58
+               OpBranch %82
+         %82 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_struct_S_i11_i1_ = OpFunction %int None %39
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+         %85 = OpLabel
+         %86 = OpAccessChain %_ptr_Function_int %s %int_0
+         %17 = OpLoad %int %86
+         %87 = OpIEqual %bool %17 %int_1
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+         %18 = OpLoad %int %x
+         %91 = OpAccessChain %_ptr_Function_int %s %int_0
+         %19 = OpLoad %int %91
+         %20 = OpIAdd %int %18 %19
+               OpReturnValue %20
+         %90 = OpLabel
+         %21 = OpLoad %int %x
+               OpReturnValue %21
+         %88 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c226607
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,81 @@
+struct S {
+  int data;
+};
+
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_struct_S_i11_i1_(inout S s, inout int x) {
+  const int x_17 = s.data;
+  if ((x_17 == 1)) {
+    const int x_18 = x;
+    const int x_19 = s.data;
+    return (x_18 + x_19);
+  } else {
+    const int x_21 = x;
+    return x_21;
+  }
+  return 0;
+}
+
+void main_1() {
+  int a = 0;
+  S arr[1] = (S[1])0;
+  int i = 0;
+  S param = (S)0;
+  int param_1 = 0;
+  S param_2 = (S)0;
+  int param_3 = 0;
+  a = 0;
+  const int x_22 = asint(x_11[0].x);
+  arr[0].data = x_22;
+  i = 0;
+  while (true) {
+    const int x_23 = i;
+    const int x_24 = asint(x_11[0].x);
+    if ((x_23 < (5 + x_24))) {
+    } else {
+      break;
+    }
+    if (((i % 2) != 0)) {
+      const S x_74 = arr[0];
+      param = x_74;
+      param_1 = i;
+      const int x_29 = func_struct_S_i11_i1_(param, param_1);
+      arr[0] = param;
+      a = x_29;
+    } else {
+      const S x_78 = arr[0];
+      param_2 = x_78;
+      param_3 = 1;
+      const int x_30 = func_struct_S_i11_i1_(param_2, param_3);
+      arr[0] = param_2;
+      a = x_30;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  if ((a == 6)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..fc21427
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.msl
@@ -0,0 +1,92 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int data;
+};
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper {
+  S arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_struct_S_i11_i1_(thread S* const s, thread int* const x) {
+  int const x_17 = (*(s)).data;
+  if ((x_17 == 1)) {
+    int const x_18 = *(x);
+    int const x_19 = (*(s)).data;
+    return (x_18 + x_19);
+  } else {
+    int const x_21 = *(x);
+    return x_21;
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_11, thread float4* const tint_symbol_4) {
+  int a = 0;
+  tint_array_wrapper arr = {};
+  int i = 0;
+  S param = {};
+  int param_1 = 0;
+  S param_2 = {};
+  int param_3 = 0;
+  a = 0;
+  int const x_22 = x_11.one;
+  arr.arr[0].data = x_22;
+  i = 0;
+  while (true) {
+    int const x_23 = i;
+    int const x_24 = x_11.one;
+    if ((x_23 < (5 + x_24))) {
+    } else {
+      break;
+    }
+    int const x_26 = i;
+    if (((x_26 % 2) != 0)) {
+      S const x_74 = arr.arr[0];
+      param = x_74;
+      int const x_28 = i;
+      param_1 = x_28;
+      int const x_29 = func_struct_S_i11_i1_(&(param), &(param_1));
+      S const x_75 = param;
+      arr.arr[0] = x_75;
+      a = x_29;
+    } else {
+      S const x_78 = arr.arr[0];
+      param_2 = x_78;
+      param_3 = 1;
+      int const x_30 = func_struct_S_i11_i1_(&(param_2), &(param_3));
+      S const x_79 = param_2;
+      arr.arr[0] = x_79;
+      a = x_30;
+    }
+    {
+      int const x_31 = i;
+      i = (x_31 + 1);
+    }
+  }
+  int const x_33 = a;
+  if ((x_33 == 6)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_11, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..79aef81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,196 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 120
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_i1_ "func_struct_S_i11_i1_"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %arr "arr"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_S_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %int %_ptr_Function_S %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %40 = OpTypeFunction %void
+         %45 = OpConstantNull %int
+     %uint_1 = OpConstant %uint 1
+%_arr_S_uint_1 = OpTypeArray %S %uint_1
+%_ptr_Function__arr_S_uint_1 = OpTypePointer Function %_arr_S_uint_1
+         %50 = OpConstantNull %_arr_S_uint_1
+         %53 = OpConstantNull %S
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %106 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %107 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+%func_struct_S_i11_i1_ = OpFunction %int None %12
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+         %19 = OpLabel
+         %23 = OpAccessChain %_ptr_Function_int %s %uint_0
+         %24 = OpLoad %int %23
+         %26 = OpIEqual %bool %24 %int_1
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %30
+         %29 = OpLabel
+         %32 = OpLoad %int %x
+         %34 = OpAccessChain %_ptr_Function_int %s %uint_0
+         %35 = OpLoad %int %34
+         %36 = OpIAdd %int %32 %35
+               OpReturnValue %36
+         %30 = OpLabel
+         %38 = OpLoad %int %x
+               OpReturnValue %38
+         %28 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %40
+         %43 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %45
+        %arr = OpVariable %_ptr_Function__arr_S_uint_1 Function %50
+          %i = OpVariable %_ptr_Function_int Function %45
+      %param = OpVariable %_ptr_Function_S Function %53
+    %param_1 = OpVariable %_ptr_Function_int Function %45
+    %param_2 = OpVariable %_ptr_Function_S Function %53
+    %param_3 = OpVariable %_ptr_Function_int Function %45
+               OpStore %a %int_0
+         %58 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Function_int %arr %int_0 %uint_0
+               OpStore %60 %59
+               OpStore %i %int_0
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpLoad %int %i
+         %66 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0
+         %67 = OpLoad %int %66
+         %69 = OpIAdd %int %int_5 %67
+         %70 = OpSLessThan %bool %65 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %62
+         %71 = OpLabel
+         %74 = OpLoad %int %i
+         %76 = OpSMod %int %74 %int_2
+         %77 = OpINotEqual %bool %76 %int_0
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpAccessChain %_ptr_Function_S %arr %int_0
+         %82 = OpLoad %S %81
+               OpStore %param %82
+         %83 = OpLoad %int %i
+               OpStore %param_1 %83
+         %84 = OpFunctionCall %int %func_struct_S_i11_i1_ %param %param_1
+         %87 = OpLoad %S %param
+         %88 = OpAccessChain %_ptr_Function_S %arr %int_0
+               OpStore %88 %87
+               OpStore %a %84
+               OpBranch %78
+         %80 = OpLabel
+         %89 = OpAccessChain %_ptr_Function_S %arr %int_0
+         %90 = OpLoad %S %89
+               OpStore %param_2 %90
+               OpStore %param_3 %int_1
+         %91 = OpFunctionCall %int %func_struct_S_i11_i1_ %param_2 %param_3
+         %94 = OpLoad %S %param_2
+         %95 = OpAccessChain %_ptr_Function_S %arr %int_0
+               OpStore %95 %94
+               OpStore %a %91
+               OpBranch %78
+         %78 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+         %96 = OpLoad %int %i
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %i %97
+               OpBranch %61
+         %62 = OpLabel
+         %98 = OpLoad %int %a
+        %100 = OpIEqual %bool %98 %int_6
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %103
+        %102 = OpLabel
+               OpStore %x_GLF_color %106
+               OpBranch %101
+        %103 = OpLabel
+               OpStore %x_GLF_color %107
+               OpBranch %101
+        %101 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %108
+%tint_symbol = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %40
+        %115 = OpLabel
+        %116 = OpFunctionCall %void %main_1
+        %118 = OpLoad %v4float %x_GLF_color
+        %119 = OpCompositeConstruct %main_out %118
+        %117 = OpFunctionCall %void %tint_symbol_2 %119
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3eef414
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,89 @@
+struct S {
+  data : i32;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_i1_(s : ptr<function, S>, x : ptr<function, i32>) -> i32 {
+  let x_17 : i32 = (*(s)).data;
+  if ((x_17 == 1)) {
+    let x_18 : i32 = *(x);
+    let x_19 : i32 = (*(s)).data;
+    return (x_18 + x_19);
+  } else {
+    let x_21 : i32 = *(x);
+    return x_21;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var a : i32;
+  var arr : array<S, 1>;
+  var i : i32;
+  var param : S;
+  var param_1 : i32;
+  var param_2 : S;
+  var param_3 : i32;
+  a = 0;
+  let x_22 : i32 = x_11.one;
+  arr[0].data = x_22;
+  i = 0;
+  loop {
+    let x_23 : i32 = i;
+    let x_24 : i32 = x_11.one;
+    if ((x_23 < (5 + x_24))) {
+    } else {
+      break;
+    }
+    let x_26 : i32 = i;
+    if (((x_26 % 2) != 0)) {
+      let x_74 : S = arr[0];
+      param = x_74;
+      let x_28 : i32 = i;
+      param_1 = x_28;
+      let x_29 : i32 = func_struct_S_i11_i1_(&(param), &(param_1));
+      let x_75 : S = param;
+      arr[0] = x_75;
+      a = x_29;
+    } else {
+      let x_78 : S = arr[0];
+      param_2 = x_78;
+      param_3 = 1;
+      let x_30 : i32 = func_struct_S_i11_i1_(&(param_2), &(param_3));
+      let x_79 : S = param_2;
+      arr[0] = x_79;
+      a = x_30;
+    }
+
+    continuing {
+      let x_31 : i32 = i;
+      i = (x_31 + 1);
+    }
+  }
+  let x_33 : i32 = a;
+  if ((x_33 == 6)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
new file mode 100644
index 0000000..3eef414
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
@@ -0,0 +1,89 @@
+struct S {
+  data : i32;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_i1_(s : ptr<function, S>, x : ptr<function, i32>) -> i32 {
+  let x_17 : i32 = (*(s)).data;
+  if ((x_17 == 1)) {
+    let x_18 : i32 = *(x);
+    let x_19 : i32 = (*(s)).data;
+    return (x_18 + x_19);
+  } else {
+    let x_21 : i32 = *(x);
+    return x_21;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var a : i32;
+  var arr : array<S, 1>;
+  var i : i32;
+  var param : S;
+  var param_1 : i32;
+  var param_2 : S;
+  var param_3 : i32;
+  a = 0;
+  let x_22 : i32 = x_11.one;
+  arr[0].data = x_22;
+  i = 0;
+  loop {
+    let x_23 : i32 = i;
+    let x_24 : i32 = x_11.one;
+    if ((x_23 < (5 + x_24))) {
+    } else {
+      break;
+    }
+    let x_26 : i32 = i;
+    if (((x_26 % 2) != 0)) {
+      let x_74 : S = arr[0];
+      param = x_74;
+      let x_28 : i32 = i;
+      param_1 = x_28;
+      let x_29 : i32 = func_struct_S_i11_i1_(&(param), &(param_1));
+      let x_75 : S = param;
+      arr[0] = x_75;
+      a = x_29;
+    } else {
+      let x_78 : S = arr[0];
+      param_2 = x_78;
+      param_3 = 1;
+      let x_30 : i32 = func_struct_S_i11_i1_(&(param_2), &(param_3));
+      let x_79 : S = param_2;
+      arr[0] = x_79;
+      a = x_30;
+    }
+
+    continuing {
+      let x_31 : i32 = i;
+      i = (x_31 + 1);
+    }
+  }
+  let x_33 : i32 = a;
+  if ((x_33 == 6)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c226607
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,81 @@
+struct S {
+  int data;
+};
+
+cbuffer cbuffer_x_11 : register(b0, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_struct_S_i11_i1_(inout S s, inout int x) {
+  const int x_17 = s.data;
+  if ((x_17 == 1)) {
+    const int x_18 = x;
+    const int x_19 = s.data;
+    return (x_18 + x_19);
+  } else {
+    const int x_21 = x;
+    return x_21;
+  }
+  return 0;
+}
+
+void main_1() {
+  int a = 0;
+  S arr[1] = (S[1])0;
+  int i = 0;
+  S param = (S)0;
+  int param_1 = 0;
+  S param_2 = (S)0;
+  int param_3 = 0;
+  a = 0;
+  const int x_22 = asint(x_11[0].x);
+  arr[0].data = x_22;
+  i = 0;
+  while (true) {
+    const int x_23 = i;
+    const int x_24 = asint(x_11[0].x);
+    if ((x_23 < (5 + x_24))) {
+    } else {
+      break;
+    }
+    if (((i % 2) != 0)) {
+      const S x_74 = arr[0];
+      param = x_74;
+      param_1 = i;
+      const int x_29 = func_struct_S_i11_i1_(param, param_1);
+      arr[0] = param;
+      a = x_29;
+    } else {
+      const S x_78 = arr[0];
+      param_2 = x_78;
+      param_3 = 1;
+      const int x_30 = func_struct_S_i11_i1_(param_2, param_3);
+      arr[0] = param_2;
+      a = x_30;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  if ((a == 6)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..fc21427
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.msl
@@ -0,0 +1,92 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int data;
+};
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct tint_array_wrapper {
+  S arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_struct_S_i11_i1_(thread S* const s, thread int* const x) {
+  int const x_17 = (*(s)).data;
+  if ((x_17 == 1)) {
+    int const x_18 = *(x);
+    int const x_19 = (*(s)).data;
+    return (x_18 + x_19);
+  } else {
+    int const x_21 = *(x);
+    return x_21;
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_11, thread float4* const tint_symbol_4) {
+  int a = 0;
+  tint_array_wrapper arr = {};
+  int i = 0;
+  S param = {};
+  int param_1 = 0;
+  S param_2 = {};
+  int param_3 = 0;
+  a = 0;
+  int const x_22 = x_11.one;
+  arr.arr[0].data = x_22;
+  i = 0;
+  while (true) {
+    int const x_23 = i;
+    int const x_24 = x_11.one;
+    if ((x_23 < (5 + x_24))) {
+    } else {
+      break;
+    }
+    int const x_26 = i;
+    if (((x_26 % 2) != 0)) {
+      S const x_74 = arr.arr[0];
+      param = x_74;
+      int const x_28 = i;
+      param_1 = x_28;
+      int const x_29 = func_struct_S_i11_i1_(&(param), &(param_1));
+      S const x_75 = param;
+      arr.arr[0] = x_75;
+      a = x_29;
+    } else {
+      S const x_78 = arr.arr[0];
+      param_2 = x_78;
+      param_3 = 1;
+      int const x_30 = func_struct_S_i11_i1_(&(param_2), &(param_3));
+      S const x_79 = param_2;
+      arr.arr[0] = x_79;
+      a = x_30;
+    }
+    {
+      int const x_31 = i;
+      i = (x_31 + 1);
+    }
+  }
+  int const x_33 = a;
+  if ((x_33 == 6)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_11 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_11, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..79aef81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,196 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 120
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_i1_ "func_struct_S_i11_i1_"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %arr "arr"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_S_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_11 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %int %_ptr_Function_S %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %40 = OpTypeFunction %void
+         %45 = OpConstantNull %int
+     %uint_1 = OpConstant %uint 1
+%_arr_S_uint_1 = OpTypeArray %S %uint_1
+%_ptr_Function__arr_S_uint_1 = OpTypePointer Function %_arr_S_uint_1
+         %50 = OpConstantNull %_arr_S_uint_1
+         %53 = OpConstantNull %S
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_5 = OpConstant %int 5
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %106 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %107 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+%func_struct_S_i11_i1_ = OpFunction %int None %12
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+         %19 = OpLabel
+         %23 = OpAccessChain %_ptr_Function_int %s %uint_0
+         %24 = OpLoad %int %23
+         %26 = OpIEqual %bool %24 %int_1
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %30
+         %29 = OpLabel
+         %32 = OpLoad %int %x
+         %34 = OpAccessChain %_ptr_Function_int %s %uint_0
+         %35 = OpLoad %int %34
+         %36 = OpIAdd %int %32 %35
+               OpReturnValue %36
+         %30 = OpLabel
+         %38 = OpLoad %int %x
+               OpReturnValue %38
+         %28 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %40
+         %43 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %45
+        %arr = OpVariable %_ptr_Function__arr_S_uint_1 Function %50
+          %i = OpVariable %_ptr_Function_int Function %45
+      %param = OpVariable %_ptr_Function_S Function %53
+    %param_1 = OpVariable %_ptr_Function_int Function %45
+    %param_2 = OpVariable %_ptr_Function_S Function %53
+    %param_3 = OpVariable %_ptr_Function_int Function %45
+               OpStore %a %int_0
+         %58 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Function_int %arr %int_0 %uint_0
+               OpStore %60 %59
+               OpStore %i %int_0
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpLoad %int %i
+         %66 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0
+         %67 = OpLoad %int %66
+         %69 = OpIAdd %int %int_5 %67
+         %70 = OpSLessThan %bool %65 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %62
+         %71 = OpLabel
+         %74 = OpLoad %int %i
+         %76 = OpSMod %int %74 %int_2
+         %77 = OpINotEqual %bool %76 %int_0
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpAccessChain %_ptr_Function_S %arr %int_0
+         %82 = OpLoad %S %81
+               OpStore %param %82
+         %83 = OpLoad %int %i
+               OpStore %param_1 %83
+         %84 = OpFunctionCall %int %func_struct_S_i11_i1_ %param %param_1
+         %87 = OpLoad %S %param
+         %88 = OpAccessChain %_ptr_Function_S %arr %int_0
+               OpStore %88 %87
+               OpStore %a %84
+               OpBranch %78
+         %80 = OpLabel
+         %89 = OpAccessChain %_ptr_Function_S %arr %int_0
+         %90 = OpLoad %S %89
+               OpStore %param_2 %90
+               OpStore %param_3 %int_1
+         %91 = OpFunctionCall %int %func_struct_S_i11_i1_ %param_2 %param_3
+         %94 = OpLoad %S %param_2
+         %95 = OpAccessChain %_ptr_Function_S %arr %int_0
+               OpStore %95 %94
+               OpStore %a %91
+               OpBranch %78
+         %78 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+         %96 = OpLoad %int %i
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %i %97
+               OpBranch %61
+         %62 = OpLabel
+         %98 = OpLoad %int %a
+        %100 = OpIEqual %bool %98 %int_6
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %103
+        %102 = OpLabel
+               OpStore %x_GLF_color %106
+               OpBranch %101
+        %103 = OpLabel
+               OpStore %x_GLF_color %107
+               OpBranch %101
+        %101 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %108
+%tint_symbol = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %40
+        %115 = OpLabel
+        %116 = OpFunctionCall %void %main_1
+        %118 = OpLoad %v4float %x_GLF_color
+        %119 = OpCompositeConstruct %main_out %118
+        %117 = OpFunctionCall %void %tint_symbol_2 %119
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3eef414
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,89 @@
+struct S {
+  data : i32;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_i1_(s : ptr<function, S>, x : ptr<function, i32>) -> i32 {
+  let x_17 : i32 = (*(s)).data;
+  if ((x_17 == 1)) {
+    let x_18 : i32 = *(x);
+    let x_19 : i32 = (*(s)).data;
+    return (x_18 + x_19);
+  } else {
+    let x_21 : i32 = *(x);
+    return x_21;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var a : i32;
+  var arr : array<S, 1>;
+  var i : i32;
+  var param : S;
+  var param_1 : i32;
+  var param_2 : S;
+  var param_3 : i32;
+  a = 0;
+  let x_22 : i32 = x_11.one;
+  arr[0].data = x_22;
+  i = 0;
+  loop {
+    let x_23 : i32 = i;
+    let x_24 : i32 = x_11.one;
+    if ((x_23 < (5 + x_24))) {
+    } else {
+      break;
+    }
+    let x_26 : i32 = i;
+    if (((x_26 % 2) != 0)) {
+      let x_74 : S = arr[0];
+      param = x_74;
+      let x_28 : i32 = i;
+      param_1 = x_28;
+      let x_29 : i32 = func_struct_S_i11_i1_(&(param), &(param_1));
+      let x_75 : S = param;
+      arr[0] = x_75;
+      a = x_29;
+    } else {
+      let x_78 : S = arr[0];
+      param_2 = x_78;
+      param_3 = 1;
+      let x_30 : i32 = func_struct_S_i11_i1_(&(param_2), &(param_3));
+      let x_79 : S = param_2;
+      arr[0] = x_79;
+      a = x_30;
+    }
+
+    continuing {
+      let x_31 : i32 = i;
+      i = (x_31 + 1);
+    }
+  }
+  let x_33 : i32 = a;
+  if ((x_33 == 6)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm
new file mode 100644
index 0000000..4d13774
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm
@@ -0,0 +1,81 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %main = OpFunction %void None %8
+         %20 = OpLabel
+         %21 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %22 = OpLoad %int %21
+         %23 = OpConvertSToF %float %22
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %25 = OpLoad %int %24
+         %26 = OpConvertSToF %float %25
+         %27 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpConvertSToF %float %28
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpConvertSToF %float %31
+         %33 = OpCompositeConstruct %v4float %23 %26 %29 %32
+               OpStore %_GLF_color %33
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpSGreaterThan %bool %35 %37
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %39
+         %40 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %47 %47 %47 %47
+               OpStore %_GLF_color %48
+               OpBranch %43
+         %43 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %52 = OpLoad %int %51
+         %53 = OpSGreaterThan %bool %50 %52
+               OpBranchConditional %53 %41 %42
+         %42 = OpLabel
+               OpReturn
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..55b3cc6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,50 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 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 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 int x_37 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_35 > x_37)) {
+    while (true) {
+      const uint scalar_offset_3 = ((16u * uint(0))) / 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 int x_52 = asint(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+        if ((x_50 > x_52)) {
+        } else {
+          break;
+        }
+      }
+    }
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1ade401
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_5, thread float4* const tint_symbol_4) {
+  int const x_22 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_25 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_28 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_31 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_22), float(x_25), float(x_28), float(x_31));
+  int const x_35 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_37 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_35 > x_37)) {
+    while (true) {
+      int const x_46 = x_5.x_GLF_uniform_int_values.arr[0].el;
+      float const x_47 = float(x_46);
+      *(tint_symbol_4) = float4(x_47, x_47, x_47, x_47);
+      {
+        int const x_50 = x_5.x_GLF_uniform_int_values.arr[1].el;
+        int const x_52 = x_5.x_GLF_uniform_int_values.arr[0].el;
+        if ((x_50 > x_52)) {
+        } else {
+          break;
+        }
+      }
+    }
+    return;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..fcf0562
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,125 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_5 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %23 = OpLoad %int %22
+         %25 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %31 = OpConvertSToF %float %23
+         %32 = OpConvertSToF %float %26
+         %33 = OpConvertSToF %float %28
+         %34 = OpConvertSToF %float %30
+         %35 = OpCompositeConstruct %v4float %31 %32 %33 %34
+               OpStore %x_GLF_color %35
+         %36 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpSGreaterThan %bool %37 %39
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %42
+         %43 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %46 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpSGreaterThan %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+               OpBranch %57
+         %59 = OpLabel
+               OpBranch %45
+         %57 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpReturn
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 46[%46] is not post dominated by the back-edge block 57[%57]
+  %57 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3471958
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf1;
+
+fn main_1() {
+  let x_22 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_25 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_22), f32(x_25), f32(x_28), f32(x_31));
+  let x_35 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_37 : i32 = x_5.x_GLF_uniform_int_values[0];
+  if ((x_35 > x_37)) {
+    loop {
+      let x_46 : i32 = x_5.x_GLF_uniform_int_values[0];
+      let x_47 : f32 = f32(x_46);
+      x_GLF_color = vec4<f32>(x_47, x_47, x_47, x_47);
+
+      continuing {
+        let x_50 : i32 = x_5.x_GLF_uniform_int_values[1];
+        let x_52 : i32 = x_5.x_GLF_uniform_int_values[0];
+        if ((x_50 > x_52)) {
+        } else {
+          break;
+        }
+      }
+    }
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
new file mode 100644
index 0000000..3471958
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf1;
+
+fn main_1() {
+  let x_22 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_25 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_22), f32(x_25), f32(x_28), f32(x_31));
+  let x_35 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_37 : i32 = x_5.x_GLF_uniform_int_values[0];
+  if ((x_35 > x_37)) {
+    loop {
+      let x_46 : i32 = x_5.x_GLF_uniform_int_values[0];
+      let x_47 : f32 = f32(x_46);
+      x_GLF_color = vec4<f32>(x_47, x_47, x_47, x_47);
+
+      continuing {
+        let x_50 : i32 = x_5.x_GLF_uniform_int_values[1];
+        let x_52 : i32 = x_5.x_GLF_uniform_int_values[0];
+        if ((x_50 > x_52)) {
+        } else {
+          break;
+        }
+      }
+    }
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..55b3cc6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,50 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 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 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 int x_37 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_35 > x_37)) {
+    while (true) {
+      const uint scalar_offset_3 = ((16u * uint(0))) / 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 int x_52 = asint(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+        if ((x_50 > x_52)) {
+        } else {
+          break;
+        }
+      }
+    }
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1ade401
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_5, thread float4* const tint_symbol_4) {
+  int const x_22 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_25 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_28 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_31 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_22), float(x_25), float(x_28), float(x_31));
+  int const x_35 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_37 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_35 > x_37)) {
+    while (true) {
+      int const x_46 = x_5.x_GLF_uniform_int_values.arr[0].el;
+      float const x_47 = float(x_46);
+      *(tint_symbol_4) = float4(x_47, x_47, x_47, x_47);
+      {
+        int const x_50 = x_5.x_GLF_uniform_int_values.arr[1].el;
+        int const x_52 = x_5.x_GLF_uniform_int_values.arr[0].el;
+        if ((x_50 > x_52)) {
+        } else {
+          break;
+        }
+      }
+    }
+    return;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..fcf0562
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,125 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_5 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %23 = OpLoad %int %22
+         %25 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %31 = OpConvertSToF %float %23
+         %32 = OpConvertSToF %float %26
+         %33 = OpConvertSToF %float %28
+         %34 = OpConvertSToF %float %30
+         %35 = OpCompositeConstruct %v4float %31 %32 %33 %34
+               OpStore %x_GLF_color %35
+         %36 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpSGreaterThan %bool %37 %39
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %42
+         %43 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %46 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpSGreaterThan %bool %53 %55
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+               OpBranch %57
+         %59 = OpLabel
+               OpBranch %45
+         %57 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpReturn
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 46[%46] is not post dominated by the back-edge block 57[%57]
+  %57 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3471958
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf1;
+
+fn main_1() {
+  let x_22 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_25 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_22), f32(x_25), f32(x_28), f32(x_31));
+  let x_35 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_37 : i32 = x_5.x_GLF_uniform_int_values[0];
+  if ((x_35 > x_37)) {
+    loop {
+      let x_46 : i32 = x_5.x_GLF_uniform_int_values[0];
+      let x_47 : f32 = f32(x_46);
+      x_GLF_color = vec4<f32>(x_47, x_47, x_47, x_47);
+
+      continuing {
+        let x_50 : i32 = x_5.x_GLF_uniform_int_values[1];
+        let x_52 : i32 = x_5.x_GLF_uniform_int_values[0];
+        if ((x_50 > x_52)) {
+        } else {
+          break;
+        }
+      }
+    }
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm
new file mode 100644
index 0000000..aa75762
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm
@@ -0,0 +1,124 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "injectionSwitch"
+               OpName %__1 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 2
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v3float = OpTypeVector %float 3
+         %37 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__1 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %main = OpFunction %void None %15
+         %40 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %21
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+               OpStore %i %42
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpSLessThan %bool %47 %49
+               OpBranchConditional %50 %51 %44
+         %51 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpINotEqual %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+               OpReturn
+         %56 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %43
+         %44 = OpLabel
+         %60 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpFOrdLessThan %bool %61 %63
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpReturn
+         %65 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_float %__1 %int_0 %uint_1
+         %68 = OpLoad %float %67
+         %69 = OpCompositeExtract %float %37 0
+         %70 = OpCompositeExtract %float %37 1
+         %71 = OpCompositeExtract %float %37 2
+         %72 = OpCompositeConstruct %v4float %69 %70 %71 %68
+               OpStore %_GLF_color %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..02dc25f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,63 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_11 : register(b2, space0) {
+  uint4 x_11[1];
+};
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const int x_42 = asint(x_7[1].x);
+  i = x_42;
+  while (true) {
+    const int x_47 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_47 < x_49)) {
+    } else {
+      break;
+    }
+    const int x_52 = i;
+    const int x_54 = asint(x_7[1].x);
+    if ((x_52 != x_54)) {
+      return;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_61 = gl_FragCoord.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_63 = asfloat(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_61 < x_63)) {
+    return;
+  }
+  const float x_68 = asfloat(x_11[0].y);
+  x_GLF_color = float4(float3(1.0f, 1.0f, 1.0f).x, float3(1.0f, 1.0f, 1.0f).y, float3(1.0f, 1.0f, 1.0f).z, x_68);
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4e920ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, constant buf2& x_11, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  int const x_42 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  i = x_42;
+  while (true) {
+    int const x_47 = i;
+    int const x_49 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_47 < x_49)) {
+    } else {
+      break;
+    }
+    int const x_52 = i;
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_52 != x_54)) {
+      return;
+    }
+    {
+      int const x_58 = i;
+      i = (x_58 + 1);
+    }
+  }
+  float const x_61 = (*(tint_symbol_6)).y;
+  float const x_63 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_61 < x_63)) {
+    return;
+  }
+  float const x_68 = x_11.injectionSwitch.y;
+  *(tint_symbol_5) = float4(float3(1.0f, 1.0f, 1.0f).x, float3(1.0f, 1.0f, 1.0f).y, float3(1.0f, 1.0f, 1.0f).z, x_68);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]], constant buf2& x_11 [[buffer(2)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_9, x_11, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f165252
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,168 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 93
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "injectionSwitch"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 2
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_11 = OpVariable %_ptr_Uniform_buf2 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v3float = OpTypeVector %float 3
+         %75 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %33
+               OpStore %x_GLF_color %36
+         %40 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %41 = OpLoad %int %40
+               OpStore %i %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %i
+         %48 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpSLessThan %bool %46 %49
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %43
+         %52 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpINotEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+               OpReturn
+         %59 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+         %61 = OpLoad %int %i
+         %62 = OpIAdd %int %61 %int_1
+               OpStore %i %62
+               OpBranch %42
+         %43 = OpLabel
+         %64 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %65 = OpLoad %float %64
+         %67 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpFOrdLessThan %bool %65 %68
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+               OpReturn
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_1
+         %73 = OpLoad %float %72
+         %76 = OpCompositeExtract %float %75 0
+         %77 = OpCompositeExtract %float %75 1
+         %78 = OpCompositeExtract %float %75 2
+         %79 = OpCompositeConstruct %v4float %76 %77 %78 %73
+               OpStore %x_GLF_color %79
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %80
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+         %87 = OpLabel
+         %88 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %88
+         %89 = OpFunctionCall %void %main_1
+         %91 = OpLoad %v4float %x_GLF_color
+         %92 = OpCompositeConstruct %main_out %91
+         %90 = OpFunctionCall %void %tint_symbol_3 %92
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..444e50a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,73 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[block]]
+struct buf2 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+  i = x_42;
+  loop {
+    let x_47 : i32 = i;
+    let x_49 : i32 = x_7.x_GLF_uniform_int_values[0];
+    if ((x_47 < x_49)) {
+    } else {
+      break;
+    }
+    let x_52 : i32 = i;
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    if ((x_52 != x_54)) {
+      return;
+    }
+
+    continuing {
+      let x_58 : i32 = i;
+      i = (x_58 + 1);
+    }
+  }
+  let x_61 : f32 = gl_FragCoord.y;
+  let x_63 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((x_61 < x_63)) {
+    return;
+  }
+  let x_68 : f32 = x_11.injectionSwitch.y;
+  x_GLF_color = vec4<f32>(vec3<f32>(1.0, 1.0, 1.0).x, vec3<f32>(1.0, 1.0, 1.0).y, vec3<f32>(1.0, 1.0, 1.0).z, x_68);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
new file mode 100644
index 0000000..444e50a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
@@ -0,0 +1,73 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[block]]
+struct buf2 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+  i = x_42;
+  loop {
+    let x_47 : i32 = i;
+    let x_49 : i32 = x_7.x_GLF_uniform_int_values[0];
+    if ((x_47 < x_49)) {
+    } else {
+      break;
+    }
+    let x_52 : i32 = i;
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    if ((x_52 != x_54)) {
+      return;
+    }
+
+    continuing {
+      let x_58 : i32 = i;
+      i = (x_58 + 1);
+    }
+  }
+  let x_61 : f32 = gl_FragCoord.y;
+  let x_63 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((x_61 < x_63)) {
+    return;
+  }
+  let x_68 : f32 = x_11.injectionSwitch.y;
+  x_GLF_color = vec4<f32>(vec3<f32>(1.0, 1.0, 1.0).x, vec3<f32>(1.0, 1.0, 1.0).y, vec3<f32>(1.0, 1.0, 1.0).z, x_68);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..02dc25f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,63 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_11 : register(b2, space0) {
+  uint4 x_11[1];
+};
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const int x_42 = asint(x_7[1].x);
+  i = x_42;
+  while (true) {
+    const int x_47 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_47 < x_49)) {
+    } else {
+      break;
+    }
+    const int x_52 = i;
+    const int x_54 = asint(x_7[1].x);
+    if ((x_52 != x_54)) {
+      return;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_61 = gl_FragCoord.y;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_63 = asfloat(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_61 < x_63)) {
+    return;
+  }
+  const float x_68 = asfloat(x_11[0].y);
+  x_GLF_color = float4(float3(1.0f, 1.0f, 1.0f).x, float3(1.0f, 1.0f, 1.0f).y, float3(1.0f, 1.0f, 1.0f).z, x_68);
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4e920ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, constant buf2& x_11, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  int const x_42 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  i = x_42;
+  while (true) {
+    int const x_47 = i;
+    int const x_49 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_47 < x_49)) {
+    } else {
+      break;
+    }
+    int const x_52 = i;
+    int const x_54 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_52 != x_54)) {
+      return;
+    }
+    {
+      int const x_58 = i;
+      i = (x_58 + 1);
+    }
+  }
+  float const x_61 = (*(tint_symbol_6)).y;
+  float const x_63 = x_9.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_61 < x_63)) {
+    return;
+  }
+  float const x_68 = x_11.injectionSwitch.y;
+  *(tint_symbol_5) = float4(float3(1.0f, 1.0f, 1.0f).x, float3(1.0f, 1.0f, 1.0f).y, float3(1.0f, 1.0f, 1.0f).z, x_68);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]], constant buf2& x_11 [[buffer(2)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_9, x_11, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f165252
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,168 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 93
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_9 "x_9"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "injectionSwitch"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 2
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_11 = OpVariable %_ptr_Uniform_buf2 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v3float = OpTypeVector %float 3
+         %75 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %33
+               OpStore %x_GLF_color %36
+         %40 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %41 = OpLoad %int %40
+               OpStore %i %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %i
+         %48 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpSLessThan %bool %46 %49
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %43
+         %52 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpINotEqual %bool %55 %57
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+               OpReturn
+         %59 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+         %61 = OpLoad %int %i
+         %62 = OpIAdd %int %61 %int_1
+               OpStore %i %62
+               OpBranch %42
+         %43 = OpLabel
+         %64 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %65 = OpLoad %float %64
+         %67 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpFOrdLessThan %bool %65 %68
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+               OpReturn
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_1
+         %73 = OpLoad %float %72
+         %76 = OpCompositeExtract %float %75 0
+         %77 = OpCompositeExtract %float %75 1
+         %78 = OpCompositeExtract %float %75 2
+         %79 = OpCompositeConstruct %v4float %76 %77 %78 %73
+               OpStore %x_GLF_color %79
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %80
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+         %87 = OpLabel
+         %88 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %88
+         %89 = OpFunctionCall %void %main_1
+         %91 = OpLoad %v4float %x_GLF_color
+         %92 = OpCompositeConstruct %main_out %91
+         %90 = OpFunctionCall %void %tint_symbol_3 %92
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..444e50a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,73 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[block]]
+struct buf2 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_42 : i32 = x_7.x_GLF_uniform_int_values[1];
+  i = x_42;
+  loop {
+    let x_47 : i32 = i;
+    let x_49 : i32 = x_7.x_GLF_uniform_int_values[0];
+    if ((x_47 < x_49)) {
+    } else {
+      break;
+    }
+    let x_52 : i32 = i;
+    let x_54 : i32 = x_7.x_GLF_uniform_int_values[1];
+    if ((x_52 != x_54)) {
+      return;
+    }
+
+    continuing {
+      let x_58 : i32 = i;
+      i = (x_58 + 1);
+    }
+  }
+  let x_61 : f32 = gl_FragCoord.y;
+  let x_63 : f32 = x_9.x_GLF_uniform_float_values[0];
+  if ((x_61 < x_63)) {
+    return;
+  }
+  let x_68 : f32 = x_11.injectionSwitch.y;
+  x_GLF_color = vec4<f32>(vec3<f32>(1.0, 1.0, 1.0).x, vec3<f32>(1.0, 1.0, 1.0).y, vec3<f32>(1.0, 1.0, 1.0).z, x_68);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm
new file mode 100644
index 0000000..b32d865
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm
@@ -0,0 +1,120 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %indexable "indexable"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+         %18 = OpTypeFunction %v2float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+     %uint_3 = OpConstant %uint 3
+%_arr_v2float_uint_3 = OpTypeArray %v2float %uint_3
+%_ptr_Function__arr_v2float_uint_3 = OpTypePointer Function %_arr_v2float_uint_3
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %15
+         %39 = OpLabel
+         %40 = OpFunctionCall %v2float %func_
+         %41 = OpCompositeExtract %float %40 1
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpFOrdEqual %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpConvertSToF %float %49
+         %51 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpConvertSToF %float %52
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpCompositeConstruct %v4float %50 %53 %56 %59
+               OpStore %_GLF_color %60
+               OpBranch %45
+         %47 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpCompositeConstruct %v4float %63 %63 %63 %63
+               OpStore %_GLF_color %64
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %v2float None %18
+         %65 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function
+          %a = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function__arr_v2float_uint_3 Function
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %67 = OpLoad %float %66
+         %68 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %68 %67
+               OpStore %a %int_2
+         %69 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %70 = OpLoad %float %69
+         %71 = OpCompositeConstruct %v2float %70 %70
+         %72 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %73 = OpLoad %float %72
+         %74 = OpCompositeConstruct %v2float %73 %73
+         %75 = OpLoad %v2float %v
+         %76 = OpCompositeConstruct %_arr_v2float_uint_3 %71 %74 %75
+         %77 = OpLoad %int %a
+               OpStore %indexable %76
+         %78 = OpAccessChain %_ptr_Function_v2float %indexable %77
+         %79 = OpLoad %v2float %78
+               OpReturnValue %79
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c33dd5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[2];
+};
+
+float2 func_() {
+  float2 v = float2(0.0f, 0.0f);
+  int a = 0;
+  float2 indexable[3] = (float2[3])0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_67 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  v.y = x_67;
+  a = 2;
+  const float x_70 = asfloat(x_7[1].x);
+  const float x_73 = asfloat(x_7[1].x);
+  const int x_77 = a;
+  const float2 tint_symbol_4[3] = {float2(x_70, x_70), float2(x_73, x_73), v};
+  indexable = tint_symbol_4;
+  const float2 x_79 = indexable[x_77];
+  return x_79;
+}
+
+void main_1() {
+  const float2 x_40 = func_();
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_43 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_40.y == x_43)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_52 = asint(x_11[1].x);
+    const int x_55 = asint(x_11[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_58 = asint(x_11[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_49), float(x_52), float(x_55), float(x_58));
+  } else {
+    const int x_62 = asint(x_11[1].x);
+    const float x_63 = float(x_62);
+    x_GLF_color = float4(x_63, x_63, x_63, x_63);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d54821f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float2 arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float2 func_(constant buf0& x_7) {
+  float2 v = 0.0f;
+  int a = 0;
+  tint_array_wrapper_2 indexable = {};
+  float const x_67 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  v.y = x_67;
+  a = 2;
+  float const x_70 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_73 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float2 const x_75 = v;
+  int const x_77 = a;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={float2(x_70, x_70), float2(x_73, x_73), x_75}};
+  indexable = tint_symbol_3;
+  float2 const x_79 = indexable.arr[x_77];
+  return x_79;
+}
+
+void main_1(constant buf0& x_7, constant buf1& x_11, thread float4* const tint_symbol_5) {
+  float2 const x_40 = func_(x_7);
+  float const x_43 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_40.y == x_43)) {
+    int const x_49 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    int const x_52 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_55 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_58 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_49), float(x_52), float(x_55), float(x_58));
+  } else {
+    int const x_62 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    float const x_63 = float(x_62);
+    *(tint_symbol_5) = float4(x_63, x_63, x_63, x_63);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, x_11, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b6b2b57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,157 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 98
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %v "v"
+               OpName %a "a"
+               OpName %indexable "indexable"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v2float_uint_3 ArrayStride 8
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+    %v2float = OpTypeVector %float 2
+         %19 = OpTypeFunction %v2float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %25 = OpConstantNull %v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_3 = OpConstant %uint 3
+%_arr_v2float_uint_3 = OpTypeArray %v2float %uint_3
+%_ptr_Function__arr_v2float_uint_3 = OpTypePointer Function %_arr_v2float_uint_3
+         %33 = OpConstantNull %_arr_v2float_uint_3
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %55 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %86 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v2float None %19
+         %22 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %25
+          %a = OpVariable %_ptr_Function_int Function %28
+  %indexable = OpVariable %_ptr_Function__arr_v2float_uint_3 Function %33
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %41 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %41 %38
+               OpStore %a %int_2
+         %44 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %47 = OpLoad %float %46
+         %48 = OpLoad %v2float %v
+         %49 = OpLoad %int %a
+         %50 = OpCompositeConstruct %v2float %45 %45
+         %51 = OpCompositeConstruct %v2float %47 %47
+         %52 = OpCompositeConstruct %_arr_v2float_uint_3 %50 %51 %48
+               OpStore %indexable %52
+         %53 = OpAccessChain %_ptr_Function_v2float %indexable %49
+         %54 = OpLoad %v2float %53
+               OpReturnValue %54
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %55
+         %58 = OpLabel
+         %59 = OpFunctionCall %v2float %func_
+         %60 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpCompositeExtract %float %59 1
+         %63 = OpFOrdEqual %bool %62 %61
+               OpSelectionMerge %65 None
+               OpBranchConditional %63 %66 %67
+         %66 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %70
+         %78 = OpConvertSToF %float %72
+         %79 = OpConvertSToF %float %74
+         %80 = OpConvertSToF %float %76
+         %81 = OpCompositeConstruct %v4float %77 %78 %79 %80
+               OpStore %x_GLF_color %81
+               OpBranch %65
+         %67 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %83
+         %85 = OpCompositeConstruct %v4float %84 %84 %84 %84
+               OpStore %x_GLF_color %85
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %86
+%tint_symbol = OpFunctionParameter %main_out
+         %90 = OpLabel
+         %91 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %91
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %55
+         %93 = OpLabel
+         %94 = OpFunctionCall %void %main_1
+         %96 = OpLoad %v4float %x_GLF_color
+         %97 = OpCompositeConstruct %main_out %96
+         %95 = OpFunctionCall %void %tint_symbol_2 %97
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6a66f39
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+fn func_() -> vec2<f32> {
+  var v : vec2<f32>;
+  var a : i32;
+  var indexable : array<vec2<f32>, 3>;
+  let x_67 : f32 = x_7.x_GLF_uniform_float_values[0];
+  v.y = x_67;
+  a = 2;
+  let x_70 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_73 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_75 : vec2<f32> = v;
+  let x_77 : i32 = a;
+  indexable = array<vec2<f32>, 3>(vec2<f32>(x_70, x_70), vec2<f32>(x_73, x_73), x_75);
+  let x_79 : vec2<f32> = indexable[x_77];
+  return x_79;
+}
+
+fn main_1() {
+  let x_40 : vec2<f32> = func_();
+  let x_43 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_40.y == x_43)) {
+    let x_49 : i32 = x_11.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_55 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_58 : i32 = x_11.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_49), f32(x_52), f32(x_55), f32(x_58));
+  } else {
+    let x_62 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_63 : f32 = f32(x_62);
+    x_GLF_color = vec4<f32>(x_63, x_63, x_63, x_63);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
new file mode 100644
index 0000000..6a66f39
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+fn func_() -> vec2<f32> {
+  var v : vec2<f32>;
+  var a : i32;
+  var indexable : array<vec2<f32>, 3>;
+  let x_67 : f32 = x_7.x_GLF_uniform_float_values[0];
+  v.y = x_67;
+  a = 2;
+  let x_70 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_73 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_75 : vec2<f32> = v;
+  let x_77 : i32 = a;
+  indexable = array<vec2<f32>, 3>(vec2<f32>(x_70, x_70), vec2<f32>(x_73, x_73), x_75);
+  let x_79 : vec2<f32> = indexable[x_77];
+  return x_79;
+}
+
+fn main_1() {
+  let x_40 : vec2<f32> = func_();
+  let x_43 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_40.y == x_43)) {
+    let x_49 : i32 = x_11.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_55 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_58 : i32 = x_11.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_49), f32(x_52), f32(x_55), f32(x_58));
+  } else {
+    let x_62 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_63 : f32 = f32(x_62);
+    x_GLF_color = vec4<f32>(x_63, x_63, x_63, x_63);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c33dd5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[2];
+};
+
+float2 func_() {
+  float2 v = float2(0.0f, 0.0f);
+  int a = 0;
+  float2 indexable[3] = (float2[3])0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_67 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  v.y = x_67;
+  a = 2;
+  const float x_70 = asfloat(x_7[1].x);
+  const float x_73 = asfloat(x_7[1].x);
+  const int x_77 = a;
+  const float2 tint_symbol_4[3] = {float2(x_70, x_70), float2(x_73, x_73), v};
+  indexable = tint_symbol_4;
+  const float2 x_79 = indexable[x_77];
+  return x_79;
+}
+
+void main_1() {
+  const float2 x_40 = func_();
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_43 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_40.y == x_43)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_49 = asint(x_11[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_52 = asint(x_11[1].x);
+    const int x_55 = asint(x_11[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_58 = asint(x_11[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_49), float(x_52), float(x_55), float(x_58));
+  } else {
+    const int x_62 = asint(x_11[1].x);
+    const float x_63 = float(x_62);
+    x_GLF_color = float4(x_63, x_63, x_63, x_63);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d54821f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float2 arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float2 func_(constant buf0& x_7) {
+  float2 v = 0.0f;
+  int a = 0;
+  tint_array_wrapper_2 indexable = {};
+  float const x_67 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  v.y = x_67;
+  a = 2;
+  float const x_70 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_73 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float2 const x_75 = v;
+  int const x_77 = a;
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={float2(x_70, x_70), float2(x_73, x_73), x_75}};
+  indexable = tint_symbol_3;
+  float2 const x_79 = indexable.arr[x_77];
+  return x_79;
+}
+
+void main_1(constant buf0& x_7, constant buf1& x_11, thread float4* const tint_symbol_5) {
+  float2 const x_40 = func_(x_7);
+  float const x_43 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_40.y == x_43)) {
+    int const x_49 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    int const x_52 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_55 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    int const x_58 = x_11.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_49), float(x_52), float(x_55), float(x_58));
+  } else {
+    int const x_62 = x_11.x_GLF_uniform_int_values.arr[1].el;
+    float const x_63 = float(x_62);
+    *(tint_symbol_5) = float4(x_63, x_63, x_63, x_63);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, x_11, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b6b2b57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,157 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 98
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_11 "x_11"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %v "v"
+               OpName %a "a"
+               OpName %indexable "indexable"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_v2float_uint_3 ArrayStride 8
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+    %v2float = OpTypeVector %float 2
+         %19 = OpTypeFunction %v2float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %25 = OpConstantNull %v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_3 = OpConstant %uint 3
+%_arr_v2float_uint_3 = OpTypeArray %v2float %uint_3
+%_ptr_Function__arr_v2float_uint_3 = OpTypePointer Function %_arr_v2float_uint_3
+         %33 = OpConstantNull %_arr_v2float_uint_3
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %55 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %86 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v2float None %19
+         %22 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %25
+          %a = OpVariable %_ptr_Function_int Function %28
+  %indexable = OpVariable %_ptr_Function__arr_v2float_uint_3 Function %33
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %41 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %41 %38
+               OpStore %a %int_2
+         %44 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %47 = OpLoad %float %46
+         %48 = OpLoad %v2float %v
+         %49 = OpLoad %int %a
+         %50 = OpCompositeConstruct %v2float %45 %45
+         %51 = OpCompositeConstruct %v2float %47 %47
+         %52 = OpCompositeConstruct %_arr_v2float_uint_3 %50 %51 %48
+               OpStore %indexable %52
+         %53 = OpAccessChain %_ptr_Function_v2float %indexable %49
+         %54 = OpLoad %v2float %53
+               OpReturnValue %54
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %55
+         %58 = OpLabel
+         %59 = OpFunctionCall %v2float %func_
+         %60 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpCompositeExtract %float %59 1
+         %63 = OpFOrdEqual %bool %62 %61
+               OpSelectionMerge %65 None
+               OpBranchConditional %63 %66 %67
+         %66 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %70
+         %78 = OpConvertSToF %float %72
+         %79 = OpConvertSToF %float %74
+         %80 = OpConvertSToF %float %76
+         %81 = OpCompositeConstruct %v4float %77 %78 %79 %80
+               OpStore %x_GLF_color %81
+               OpBranch %65
+         %67 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_int %x_11 %uint_0 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %83
+         %85 = OpCompositeConstruct %v4float %84 %84 %84 %84
+               OpStore %x_GLF_color %85
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %86
+%tint_symbol = OpFunctionParameter %main_out
+         %90 = OpLabel
+         %91 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %91
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %55
+         %93 = OpLabel
+         %94 = OpFunctionCall %void %main_1
+         %96 = OpLoad %v4float %x_GLF_color
+         %97 = OpCompositeConstruct %main_out %96
+         %95 = OpFunctionCall %void %tint_symbol_2 %97
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6a66f39
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+fn func_() -> vec2<f32> {
+  var v : vec2<f32>;
+  var a : i32;
+  var indexable : array<vec2<f32>, 3>;
+  let x_67 : f32 = x_7.x_GLF_uniform_float_values[0];
+  v.y = x_67;
+  a = 2;
+  let x_70 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_73 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_75 : vec2<f32> = v;
+  let x_77 : i32 = a;
+  indexable = array<vec2<f32>, 3>(vec2<f32>(x_70, x_70), vec2<f32>(x_73, x_73), x_75);
+  let x_79 : vec2<f32> = indexable[x_77];
+  return x_79;
+}
+
+fn main_1() {
+  let x_40 : vec2<f32> = func_();
+  let x_43 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_40.y == x_43)) {
+    let x_49 : i32 = x_11.x_GLF_uniform_int_values[0];
+    let x_52 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_55 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_58 : i32 = x_11.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_49), f32(x_52), f32(x_55), f32(x_58));
+  } else {
+    let x_62 : i32 = x_11.x_GLF_uniform_int_values[1];
+    let x_63 : f32 = f32(x_62);
+    x_GLF_color = vec4<f32>(x_63, x_63, x_63, x_63);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm
new file mode 100644
index 0000000..1437592
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm
@@ -0,0 +1,431 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %sums "sums"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %e "e"
+               OpName %f "f"
+               OpName %g "g"
+               OpName %h "h"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_7 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %a RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %b RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %c RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %d RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %34 RelaxedPrecision
+               OpDecorate %e RelaxedPrecision
+               OpDecorate %35 RelaxedPrecision
+               OpDecorate %36 RelaxedPrecision
+               OpDecorate %37 RelaxedPrecision
+               OpDecorate %f RelaxedPrecision
+               OpDecorate %38 RelaxedPrecision
+               OpDecorate %39 RelaxedPrecision
+               OpDecorate %40 RelaxedPrecision
+               OpDecorate %g RelaxedPrecision
+               OpDecorate %41 RelaxedPrecision
+               OpDecorate %42 RelaxedPrecision
+               OpDecorate %43 RelaxedPrecision
+               OpDecorate %h RelaxedPrecision
+               OpDecorate %44 RelaxedPrecision
+               OpDecorate %45 RelaxedPrecision
+               OpDecorate %46 RelaxedPrecision
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %47 RelaxedPrecision
+               OpDecorate %48 RelaxedPrecision
+               OpDecorate %49 RelaxedPrecision
+               OpDecorate %j RelaxedPrecision
+               OpDecorate %50 RelaxedPrecision
+               OpDecorate %51 RelaxedPrecision
+               OpDecorate %52 RelaxedPrecision
+               OpDecorate %53 RelaxedPrecision
+               OpDecorate %54 RelaxedPrecision
+               OpDecorate %55 RelaxedPrecision
+               OpDecorate %56 RelaxedPrecision
+               OpDecorate %57 RelaxedPrecision
+               OpDecorate %58 RelaxedPrecision
+               OpDecorate %59 RelaxedPrecision
+               OpDecorate %60 RelaxedPrecision
+               OpDecorate %61 RelaxedPrecision
+               OpDecorate %62 RelaxedPrecision
+               OpDecorate %63 RelaxedPrecision
+               OpDecorate %64 RelaxedPrecision
+               OpDecorate %65 RelaxedPrecision
+               OpDecorate %66 RelaxedPrecision
+               OpDecorate %67 RelaxedPrecision
+               OpDecorate %68 RelaxedPrecision
+               OpDecorate %69 RelaxedPrecision
+               OpDecorate %70 RelaxedPrecision
+               OpDecorate %71 RelaxedPrecision
+               OpDecorate %72 RelaxedPrecision
+               OpDecorate %73 RelaxedPrecision
+               OpDecorate %74 RelaxedPrecision
+               OpDecorate %75 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %76 RelaxedPrecision
+               OpDecorate %77 RelaxedPrecision
+               OpDecorate %78 RelaxedPrecision
+               OpDecorate %79 RelaxedPrecision
+               OpDecorate %80 RelaxedPrecision
+       %void = OpTypeVoid
+         %82 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+        %int = OpTypeInt 32 1
+     %uint_7 = OpConstant %uint 7
+%_arr_int_uint_7 = OpTypeArray %int %uint_7
+       %buf0 = OpTypeStruct %_arr_int_uint_7
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+%_ptr_Function_int = OpTypePointer Function %int
+       %bool = OpTypeBool
+      %int_5 = OpConstant %int 5
+      %int_3 = OpConstant %int 3
+      %int_6 = OpConstant %int 6
+      %int_4 = OpConstant %int 4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %82
+        %107 = OpLabel
+       %sums = OpVariable %_ptr_Function__arr_float_uint_2 Function
+          %a = OpVariable %_ptr_Function_int Function
+          %b = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+          %d = OpVariable %_ptr_Function_int Function
+          %e = OpVariable %_ptr_Function_int Function
+          %f = OpVariable %_ptr_Function_int Function
+          %g = OpVariable %_ptr_Function_int Function
+          %h = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %108 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %20 = OpLoad %int %108
+        %109 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Function_float %sums %20
+               OpStore %111 %110
+        %112 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %22 = OpLoad %int %112
+        %113 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+        %114 = OpLoad %float %113
+        %115 = OpAccessChain %_ptr_Function_float %sums %22
+               OpStore %115 %114
+        %116 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %23 = OpLoad %int %116
+               OpStore %a %23
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+         %24 = OpLoad %int %a
+        %121 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %25 = OpLoad %int %121
+        %122 = OpSLessThan %bool %24 %25
+               OpBranchConditional %122 %123 %118
+        %123 = OpLabel
+        %124 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %26 = OpLoad %int %124
+               OpStore %b %26
+               OpBranch %125
+        %125 = OpLabel
+               OpLoopMerge %126 %127 None
+               OpBranch %128
+        %128 = OpLabel
+         %27 = OpLoad %int %b
+        %129 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %28 = OpLoad %int %129
+        %130 = OpSLessThan %bool %27 %28
+               OpBranchConditional %130 %131 %126
+        %131 = OpLabel
+        %132 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %29 = OpLoad %int %132
+               OpStore %c %29
+               OpBranch %133
+        %133 = OpLabel
+               OpLoopMerge %134 %135 None
+               OpBranch %136
+        %136 = OpLabel
+         %30 = OpLoad %int %c
+        %137 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %31 = OpLoad %int %137
+        %138 = OpSLessThanEqual %bool %30 %31
+               OpBranchConditional %138 %139 %134
+        %139 = OpLabel
+        %140 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %32 = OpLoad %int %140
+               OpStore %d %32
+               OpBranch %141
+        %141 = OpLabel
+               OpLoopMerge %142 %143 None
+               OpBranch %144
+        %144 = OpLabel
+         %33 = OpLoad %int %d
+        %145 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %34 = OpLoad %int %145
+        %146 = OpSLessThan %bool %33 %34
+               OpBranchConditional %146 %147 %142
+        %147 = OpLabel
+        %148 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %35 = OpLoad %int %148
+               OpStore %e %35
+               OpBranch %149
+        %149 = OpLabel
+               OpLoopMerge %150 %151 None
+               OpBranch %152
+        %152 = OpLabel
+         %36 = OpLoad %int %e
+        %153 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %37 = OpLoad %int %153
+        %154 = OpSLessThanEqual %bool %36 %37
+               OpBranchConditional %154 %155 %150
+        %155 = OpLabel
+        %156 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %38 = OpLoad %int %156
+               OpStore %f %38
+               OpBranch %157
+        %157 = OpLabel
+               OpLoopMerge %158 %159 None
+               OpBranch %160
+        %160 = OpLabel
+         %39 = OpLoad %int %f
+        %161 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %40 = OpLoad %int %161
+        %162 = OpSLessThan %bool %39 %40
+               OpBranchConditional %162 %163 %158
+        %163 = OpLabel
+        %164 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %41 = OpLoad %int %164
+               OpStore %g %41
+               OpBranch %165
+        %165 = OpLabel
+               OpLoopMerge %166 %167 None
+               OpBranch %168
+        %168 = OpLabel
+         %42 = OpLoad %int %g
+        %169 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+         %43 = OpLoad %int %169
+        %170 = OpSLessThan %bool %42 %43
+               OpBranchConditional %170 %171 %166
+        %171 = OpLabel
+        %172 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %44 = OpLoad %int %172
+               OpStore %h %44
+               OpBranch %173
+        %173 = OpLabel
+               OpLoopMerge %174 %175 None
+               OpBranch %176
+        %176 = OpLabel
+         %45 = OpLoad %int %h
+        %177 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %46 = OpLoad %int %177
+        %178 = OpSLessThan %bool %45 %46
+               OpBranchConditional %178 %179 %174
+        %179 = OpLabel
+        %180 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %47 = OpLoad %int %180
+               OpStore %i %47
+               OpBranch %181
+        %181 = OpLabel
+               OpLoopMerge %182 %183 None
+               OpBranch %184
+        %184 = OpLabel
+         %48 = OpLoad %int %i
+        %185 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %49 = OpLoad %int %185
+        %186 = OpSLessThan %bool %48 %49
+               OpBranchConditional %186 %187 %182
+        %187 = OpLabel
+        %188 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %50 = OpLoad %int %188
+               OpStore %j %50
+               OpBranch %189
+        %189 = OpLabel
+               OpLoopMerge %190 %191 None
+               OpBranch %192
+        %192 = OpLabel
+         %51 = OpLoad %int %j
+        %193 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %52 = OpLoad %int %193
+        %194 = OpSGreaterThan %bool %51 %52
+               OpBranchConditional %194 %195 %190
+        %195 = OpLabel
+         %53 = OpLoad %int %a
+        %196 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_2
+        %197 = OpLoad %float %196
+        %198 = OpAccessChain %_ptr_Function_float %sums %53
+        %199 = OpLoad %float %198
+        %200 = OpFAdd %float %199 %197
+        %201 = OpAccessChain %_ptr_Function_float %sums %53
+               OpStore %201 %200
+               OpBranch %191
+        %191 = OpLabel
+         %54 = OpLoad %int %j
+         %55 = OpISub %int %54 %int_1
+               OpStore %j %55
+               OpBranch %189
+        %190 = OpLabel
+               OpBranch %183
+        %183 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpIAdd %int %56 %int_1
+               OpStore %i %57
+               OpBranch %181
+        %182 = OpLabel
+               OpBranch %175
+        %175 = OpLabel
+         %58 = OpLoad %int %h
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %h %59
+               OpBranch %173
+        %174 = OpLabel
+               OpBranch %167
+        %167 = OpLabel
+         %60 = OpLoad %int %g
+         %61 = OpIAdd %int %60 %int_1
+               OpStore %g %61
+               OpBranch %165
+        %166 = OpLabel
+               OpBranch %159
+        %159 = OpLabel
+         %62 = OpLoad %int %f
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %f %63
+               OpBranch %157
+        %158 = OpLabel
+               OpBranch %151
+        %151 = OpLabel
+         %64 = OpLoad %int %e
+         %65 = OpIAdd %int %64 %int_1
+               OpStore %e %65
+               OpBranch %149
+        %150 = OpLabel
+               OpBranch %143
+        %143 = OpLabel
+         %66 = OpLoad %int %d
+         %67 = OpIAdd %int %66 %int_1
+               OpStore %d %67
+               OpBranch %141
+        %142 = OpLabel
+               OpBranch %135
+        %135 = OpLabel
+         %68 = OpLoad %int %c
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %c %69
+               OpBranch %133
+        %134 = OpLabel
+               OpBranch %127
+        %127 = OpLabel
+         %70 = OpLoad %int %b
+         %71 = OpIAdd %int %70 %int_1
+               OpStore %b %71
+               OpBranch %125
+        %126 = OpLabel
+               OpBranch %119
+        %119 = OpLabel
+         %72 = OpLoad %int %a
+         %73 = OpIAdd %int %72 %int_1
+               OpStore %a %73
+               OpBranch %117
+        %118 = OpLabel
+        %202 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %74 = OpLoad %int %202
+        %203 = OpAccessChain %_ptr_Function_float %sums %74
+        %204 = OpLoad %float %203
+        %205 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+        %206 = OpLoad %float %205
+        %207 = OpFOrdEqual %bool %204 %206
+               OpSelectionMerge %208 None
+               OpBranchConditional %207 %209 %208
+        %209 = OpLabel
+        %210 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %75 = OpLoad %int %210
+        %211 = OpAccessChain %_ptr_Function_float %sums %75
+        %212 = OpLoad %float %211
+        %213 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+        %214 = OpLoad %float %213
+        %215 = OpFOrdEqual %bool %212 %214
+               OpBranch %208
+        %208 = OpLabel
+        %216 = OpPhi %bool %207 %118 %215 %209
+               OpSelectionMerge %217 None
+               OpBranchConditional %216 %218 %219
+        %218 = OpLabel
+        %220 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %76 = OpLoad %int %220
+        %221 = OpConvertSToF %float %76
+        %222 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %77 = OpLoad %int %222
+        %223 = OpConvertSToF %float %77
+        %224 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %78 = OpLoad %int %224
+        %225 = OpConvertSToF %float %78
+        %226 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %79 = OpLoad %int %226
+        %227 = OpConvertSToF %float %79
+        %228 = OpCompositeConstruct %v4float %221 %223 %225 %227
+               OpStore %_GLF_color %228
+               OpBranch %217
+        %219 = OpLabel
+        %229 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %80 = OpLoad %int %229
+        %230 = OpConvertSToF %float %80
+        %231 = OpCompositeConstruct %v4float %230 %230 %230 %230
+               OpStore %_GLF_color %231
+               OpBranch %217
+        %217 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..5d63b9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,208 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[7];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float sums[2] = (float[2])0;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int d = 0;
+  int e = 0;
+  int f = 0;
+  int g = 0;
+  int h = 0;
+  int i = 0;
+  int j = 0;
+  bool x_215 = false;
+  bool x_216_phi = false;
+  const int x_20 = asint(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_110 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  sums[x_20] = x_110;
+  const int x_22 = asint(x_6[2].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_114 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  sums[x_22] = x_114;
+  const int x_23 = asint(x_6[1].x);
+  a = x_23;
+  while (true) {
+    const int x_24 = a;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_25 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_24 < x_25)) {
+    } else {
+      break;
+    }
+    const int x_26 = asint(x_6[5].x);
+    b = x_26;
+    while (true) {
+      const int x_27 = b;
+      const int x_28 = asint(x_6[3].x);
+      if ((x_27 < x_28)) {
+      } else {
+        break;
+      }
+      const int x_29 = asint(x_6[6].x);
+      c = x_29;
+      while (true) {
+        const int x_30 = c;
+        const int x_31 = asint(x_6[4].x);
+        if ((x_30 <= x_31)) {
+        } else {
+          break;
+        }
+        const int x_32 = asint(x_6[1].x);
+        d = x_32;
+        while (true) {
+          const int x_33 = d;
+          const int x_34 = asint(x_6[6].x);
+          if ((x_33 < x_34)) {
+          } else {
+            break;
+          }
+          const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+          const int x_35 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+          e = x_35;
+          while (true) {
+            const int x_36 = e;
+            const int x_37 = asint(x_6[4].x);
+            if ((x_36 <= x_37)) {
+            } else {
+              break;
+            }
+            const int x_38 = asint(x_6[1].x);
+            f = x_38;
+            while (true) {
+              const int x_39 = f;
+              const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+              const int x_40 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+              if ((x_39 < x_40)) {
+              } else {
+                break;
+              }
+              const int x_41 = asint(x_6[1].x);
+              g = x_41;
+              while (true) {
+                const int x_42 = g;
+                const int x_43 = asint(x_6[6].x);
+                if ((x_42 < x_43)) {
+                } else {
+                  break;
+                }
+                const int x_44 = asint(x_6[1].x);
+                h = x_44;
+                while (true) {
+                  const int x_45 = h;
+                  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+                  const int x_46 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+                  if ((x_45 < x_46)) {
+                  } else {
+                    break;
+                  }
+                  const int x_47 = asint(x_6[1].x);
+                  i = x_47;
+                  while (true) {
+                    const int x_48 = i;
+                    const int x_49 = asint(x_6[4].x);
+                    if ((x_48 < x_49)) {
+                    } else {
+                      break;
+                    }
+                    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+                    const int x_50 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+                    j = x_50;
+                    while (true) {
+                      const int x_51 = j;
+                      const int x_52 = asint(x_6[1].x);
+                      if ((x_51 > x_52)) {
+                      } else {
+                        break;
+                      }
+                      const int x_53 = a;
+                      const float x_197 = asfloat(x_8[2].x);
+                      const float x_199 = sums[x_53];
+                      sums[x_53] = (x_199 + x_197);
+                      {
+                        j = (j - 1);
+                      }
+                    }
+                    {
+                      i = (i + 1);
+                    }
+                  }
+                  {
+                    h = (h + 1);
+                  }
+                }
+                {
+                  g = (g + 1);
+                }
+              }
+              {
+                f = (f + 1);
+              }
+            }
+            {
+              e = (e + 1);
+            }
+          }
+          {
+            d = (d + 1);
+          }
+        }
+        {
+          c = (c + 1);
+        }
+      }
+      {
+        b = (b + 1);
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const int x_74 = asint(x_6[1].x);
+  const float x_204 = sums[x_74];
+  const float x_206 = asfloat(x_8[1].x);
+  const bool x_207 = (x_204 == x_206);
+  x_216_phi = x_207;
+  if (x_207) {
+    const int x_75 = asint(x_6[2].x);
+    const float x_212 = sums[x_75];
+    const float x_214 = asfloat(x_8[1].x);
+    x_215 = (x_212 == x_214);
+    x_216_phi = x_215;
+  }
+  if (x_216_phi) {
+    const int x_76 = asint(x_6[2].x);
+    const int x_77 = asint(x_6[1].x);
+    const int x_78 = asint(x_6[1].x);
+    const int x_79 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_76), float(x_77), float(x_78), float(x_79));
+  } else {
+    const int x_80 = asint(x_6[1].x);
+    const float x_230 = float(x_80);
+    x_GLF_color = float4(x_230, x_230, x_230, x_230);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..14a2550
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.msl
@@ -0,0 +1,232 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[7];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 sums = {};
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int d = 0;
+  int e = 0;
+  int f = 0;
+  int g = 0;
+  int h = 0;
+  int i = 0;
+  int j = 0;
+  bool x_215 = false;
+  bool x_216_phi = false;
+  int const x_20 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_110 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  sums.arr[x_20] = x_110;
+  int const x_22 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_114 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  sums.arr[x_22] = x_114;
+  int const x_23 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_23;
+  while (true) {
+    int const x_24 = a;
+    int const x_25 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_24 < x_25)) {
+    } else {
+      break;
+    }
+    int const x_26 = x_6.x_GLF_uniform_int_values.arr[5].el;
+    b = x_26;
+    while (true) {
+      int const x_27 = b;
+      int const x_28 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      if ((x_27 < x_28)) {
+      } else {
+        break;
+      }
+      int const x_29 = x_6.x_GLF_uniform_int_values.arr[6].el;
+      c = x_29;
+      while (true) {
+        int const x_30 = c;
+        int const x_31 = x_6.x_GLF_uniform_int_values.arr[4].el;
+        if ((x_30 <= x_31)) {
+        } else {
+          break;
+        }
+        int const x_32 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        d = x_32;
+        while (true) {
+          int const x_33 = d;
+          int const x_34 = x_6.x_GLF_uniform_int_values.arr[6].el;
+          if ((x_33 < x_34)) {
+          } else {
+            break;
+          }
+          int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+          e = x_35;
+          while (true) {
+            int const x_36 = e;
+            int const x_37 = x_6.x_GLF_uniform_int_values.arr[4].el;
+            if ((x_36 <= x_37)) {
+            } else {
+              break;
+            }
+            int const x_38 = x_6.x_GLF_uniform_int_values.arr[1].el;
+            f = x_38;
+            while (true) {
+              int const x_39 = f;
+              int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+              if ((x_39 < x_40)) {
+              } else {
+                break;
+              }
+              int const x_41 = x_6.x_GLF_uniform_int_values.arr[1].el;
+              g = x_41;
+              while (true) {
+                int const x_42 = g;
+                int const x_43 = x_6.x_GLF_uniform_int_values.arr[6].el;
+                if ((x_42 < x_43)) {
+                } else {
+                  break;
+                }
+                int const x_44 = x_6.x_GLF_uniform_int_values.arr[1].el;
+                h = x_44;
+                while (true) {
+                  int const x_45 = h;
+                  int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+                  if ((x_45 < x_46)) {
+                  } else {
+                    break;
+                  }
+                  int const x_47 = x_6.x_GLF_uniform_int_values.arr[1].el;
+                  i = x_47;
+                  while (true) {
+                    int const x_48 = i;
+                    int const x_49 = x_6.x_GLF_uniform_int_values.arr[4].el;
+                    if ((x_48 < x_49)) {
+                    } else {
+                      break;
+                    }
+                    int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+                    j = x_50;
+                    while (true) {
+                      int const x_51 = j;
+                      int const x_52 = x_6.x_GLF_uniform_int_values.arr[1].el;
+                      if ((x_51 > x_52)) {
+                      } else {
+                        break;
+                      }
+                      int const x_53 = a;
+                      float const x_197 = x_8.x_GLF_uniform_float_values.arr[2].el;
+                      float const x_199 = sums.arr[x_53];
+                      sums.arr[x_53] = (x_199 + x_197);
+                      {
+                        int const x_54 = j;
+                        j = (x_54 - 1);
+                      }
+                    }
+                    {
+                      int const x_56 = i;
+                      i = (x_56 + 1);
+                    }
+                  }
+                  {
+                    int const x_58 = h;
+                    h = (x_58 + 1);
+                  }
+                }
+                {
+                  int const x_60 = g;
+                  g = (x_60 + 1);
+                }
+              }
+              {
+                int const x_62 = f;
+                f = (x_62 + 1);
+              }
+            }
+            {
+              int const x_64 = e;
+              e = (x_64 + 1);
+            }
+          }
+          {
+            int const x_66 = d;
+            d = (x_66 + 1);
+          }
+        }
+        {
+          int const x_68 = c;
+          c = (x_68 + 1);
+        }
+      }
+      {
+        int const x_70 = b;
+        b = (x_70 + 1);
+      }
+    }
+    {
+      int const x_72 = a;
+      a = (x_72 + 1);
+    }
+  }
+  int const x_74 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_204 = sums.arr[x_74];
+  float const x_206 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  bool const x_207 = (x_204 == x_206);
+  x_216_phi = x_207;
+  if (x_207) {
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_212 = sums.arr[x_75];
+    float const x_214 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    x_215 = (x_212 == x_214);
+    x_216_phi = x_215;
+  }
+  bool const x_216 = x_216_phi;
+  if (x_216) {
+    int const x_76 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_79 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_76), float(x_77), float(x_78), float(x_79));
+  } else {
+    int const x_80 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_230 = float(x_80);
+    *(tint_symbol_4) = float4(x_230, x_230, x_230, x_230);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..504fead
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,456 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 274
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %sums "sums"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %e "e"
+               OpName %f "f"
+               OpName %g "g"
+               OpName %h "h"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %x_215 "x_215"
+               OpName %x_216_phi "x_216_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_7 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_7 = OpConstant %uint 7
+%_arr_int_uint_7 = OpTypeArray %int %uint_7
+       %buf0 = OpTypeStruct %_arr_int_uint_7
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+         %28 = OpConstantNull %_arr_float_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %44 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+      %int_5 = OpConstant %int 5
+      %int_3 = OpConstant %int 3
+      %int_6 = OpConstant %int 6
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %262 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+       %sums = OpVariable %_ptr_Function__arr_float_uint_2 Function %28
+          %a = OpVariable %_ptr_Function_int Function %31
+          %b = OpVariable %_ptr_Function_int Function %31
+          %c = OpVariable %_ptr_Function_int Function %31
+          %d = OpVariable %_ptr_Function_int Function %31
+          %e = OpVariable %_ptr_Function_int Function %31
+          %f = OpVariable %_ptr_Function_int Function %31
+          %g = OpVariable %_ptr_Function_int Function %31
+          %h = OpVariable %_ptr_Function_int Function %31
+          %i = OpVariable %_ptr_Function_int Function %31
+          %j = OpVariable %_ptr_Function_int Function %31
+      %x_215 = OpVariable %_ptr_Function_bool Function %44
+  %x_216_phi = OpVariable %_ptr_Function_bool Function %44
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %54 = OpLoad %float %53
+         %56 = OpAccessChain %_ptr_Function_float %sums %50
+               OpStore %56 %54
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Function_float %sums %59
+               OpStore %62 %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+               OpStore %a %64
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpLoad %int %a
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpSLessThan %bool %69 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %66
+         %73 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %78 = OpLoad %int %77
+               OpStore %b %78
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %83 = OpLoad %int %b
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %86 = OpLoad %int %85
+         %87 = OpSLessThan %bool %83 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+               OpBranch %88
+         %90 = OpLabel
+               OpBranch %80
+         %88 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+         %93 = OpLoad %int %92
+               OpStore %c %93
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+         %98 = OpLoad %int %c
+        %100 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %101 = OpLoad %int %100
+        %102 = OpSLessThanEqual %bool %98 %101
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+               OpBranch %103
+        %105 = OpLabel
+               OpBranch %95
+        %103 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %107 = OpLoad %int %106
+               OpStore %d %107
+               OpBranch %108
+        %108 = OpLabel
+               OpLoopMerge %109 %110 None
+               OpBranch %111
+        %111 = OpLabel
+        %112 = OpLoad %int %d
+        %113 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %114 = OpLoad %int %113
+        %115 = OpSLessThan %bool %112 %114
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+               OpBranch %116
+        %118 = OpLabel
+               OpBranch %109
+        %116 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %120 = OpLoad %int %119
+               OpStore %e %120
+               OpBranch %121
+        %121 = OpLabel
+               OpLoopMerge %122 %123 None
+               OpBranch %124
+        %124 = OpLabel
+        %125 = OpLoad %int %e
+        %126 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %127 = OpLoad %int %126
+        %128 = OpSLessThanEqual %bool %125 %127
+               OpSelectionMerge %129 None
+               OpBranchConditional %128 %130 %131
+        %130 = OpLabel
+               OpBranch %129
+        %131 = OpLabel
+               OpBranch %122
+        %129 = OpLabel
+        %132 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %133 = OpLoad %int %132
+               OpStore %f %133
+               OpBranch %134
+        %134 = OpLabel
+               OpLoopMerge %135 %136 None
+               OpBranch %137
+        %137 = OpLabel
+        %138 = OpLoad %int %f
+        %139 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %140 = OpLoad %int %139
+        %141 = OpSLessThan %bool %138 %140
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %135
+        %142 = OpLabel
+        %145 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %146 = OpLoad %int %145
+               OpStore %g %146
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %g
+        %152 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %153 = OpLoad %int %152
+        %154 = OpSLessThan %bool %151 %153
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+               OpBranch %155
+        %157 = OpLabel
+               OpBranch %148
+        %155 = OpLabel
+        %158 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %159 = OpLoad %int %158
+               OpStore %h %159
+               OpBranch %160
+        %160 = OpLabel
+               OpLoopMerge %161 %162 None
+               OpBranch %163
+        %163 = OpLabel
+        %164 = OpLoad %int %h
+        %165 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %164 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %161
+        %168 = OpLabel
+        %171 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %172 = OpLoad %int %171
+               OpStore %i %172
+               OpBranch %173
+        %173 = OpLabel
+               OpLoopMerge %174 %175 None
+               OpBranch %176
+        %176 = OpLabel
+        %177 = OpLoad %int %i
+        %178 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %179 = OpLoad %int %178
+        %180 = OpSLessThan %bool %177 %179
+               OpSelectionMerge %181 None
+               OpBranchConditional %180 %182 %183
+        %182 = OpLabel
+               OpBranch %181
+        %183 = OpLabel
+               OpBranch %174
+        %181 = OpLabel
+        %184 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %185 = OpLoad %int %184
+               OpStore %j %185
+               OpBranch %186
+        %186 = OpLabel
+               OpLoopMerge %187 %188 None
+               OpBranch %189
+        %189 = OpLabel
+        %190 = OpLoad %int %j
+        %191 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %192 = OpLoad %int %191
+        %193 = OpSGreaterThan %bool %190 %192
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %196
+        %195 = OpLabel
+               OpBranch %194
+        %196 = OpLabel
+               OpBranch %187
+        %194 = OpLabel
+        %197 = OpLoad %int %a
+        %198 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %199 = OpLoad %float %198
+        %200 = OpAccessChain %_ptr_Function_float %sums %197
+        %201 = OpLoad %float %200
+        %202 = OpAccessChain %_ptr_Function_float %sums %197
+        %203 = OpFAdd %float %201 %199
+               OpStore %202 %203
+               OpBranch %188
+        %188 = OpLabel
+        %204 = OpLoad %int %j
+        %205 = OpISub %int %204 %int_1
+               OpStore %j %205
+               OpBranch %186
+        %187 = OpLabel
+               OpBranch %175
+        %175 = OpLabel
+        %206 = OpLoad %int %i
+        %207 = OpIAdd %int %206 %int_1
+               OpStore %i %207
+               OpBranch %173
+        %174 = OpLabel
+               OpBranch %162
+        %162 = OpLabel
+        %208 = OpLoad %int %h
+        %209 = OpIAdd %int %208 %int_1
+               OpStore %h %209
+               OpBranch %160
+        %161 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %210 = OpLoad %int %g
+        %211 = OpIAdd %int %210 %int_1
+               OpStore %g %211
+               OpBranch %147
+        %148 = OpLabel
+               OpBranch %136
+        %136 = OpLabel
+        %212 = OpLoad %int %f
+        %213 = OpIAdd %int %212 %int_1
+               OpStore %f %213
+               OpBranch %134
+        %135 = OpLabel
+               OpBranch %123
+        %123 = OpLabel
+        %214 = OpLoad %int %e
+        %215 = OpIAdd %int %214 %int_1
+               OpStore %e %215
+               OpBranch %121
+        %122 = OpLabel
+               OpBranch %110
+        %110 = OpLabel
+        %216 = OpLoad %int %d
+        %217 = OpIAdd %int %216 %int_1
+               OpStore %d %217
+               OpBranch %108
+        %109 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+        %218 = OpLoad %int %c
+        %219 = OpIAdd %int %218 %int_1
+               OpStore %c %219
+               OpBranch %94
+         %95 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+        %220 = OpLoad %int %b
+        %221 = OpIAdd %int %220 %int_1
+               OpStore %b %221
+               OpBranch %79
+         %80 = OpLabel
+               OpBranch %67
+         %67 = OpLabel
+        %222 = OpLoad %int %a
+        %223 = OpIAdd %int %222 %int_1
+               OpStore %a %223
+               OpBranch %65
+         %66 = OpLabel
+        %224 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %225 = OpLoad %int %224
+        %226 = OpAccessChain %_ptr_Function_float %sums %225
+        %227 = OpLoad %float %226
+        %228 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %229 = OpLoad %float %228
+        %230 = OpFOrdEqual %bool %227 %229
+               OpStore %x_216_phi %230
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %231
+        %232 = OpLabel
+        %233 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %234 = OpLoad %int %233
+        %235 = OpAccessChain %_ptr_Function_float %sums %234
+        %236 = OpLoad %float %235
+        %237 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %238 = OpLoad %float %237
+        %239 = OpFOrdEqual %bool %236 %238
+               OpStore %x_215 %239
+        %240 = OpLoad %bool %x_215
+               OpStore %x_216_phi %240
+               OpBranch %231
+        %231 = OpLabel
+        %241 = OpLoad %bool %x_216_phi
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %244
+        %243 = OpLabel
+        %245 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %246 = OpLoad %int %245
+        %247 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %248 = OpLoad %int %247
+        %249 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %250 = OpLoad %int %249
+        %251 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %252 = OpLoad %int %251
+        %253 = OpConvertSToF %float %246
+        %254 = OpConvertSToF %float %248
+        %255 = OpConvertSToF %float %250
+        %256 = OpConvertSToF %float %252
+        %257 = OpCompositeConstruct %v4float %253 %254 %255 %256
+               OpStore %x_GLF_color %257
+               OpBranch %242
+        %244 = OpLabel
+        %258 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %259 = OpLoad %int %258
+        %260 = OpConvertSToF %float %259
+        %261 = OpCompositeConstruct %v4float %260 %260 %260 %260
+               OpStore %x_GLF_color %261
+               OpBranch %242
+        %242 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %262
+%tint_symbol = OpFunctionParameter %main_out
+        %266 = OpLabel
+        %267 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %267
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %269 = OpLabel
+        %270 = OpFunctionCall %void %main_1
+        %272 = OpLoad %v4float %x_GLF_color
+        %273 = OpCompositeConstruct %main_out %272
+        %271 = OpFunctionCall %void %tint_symbol_2 %273
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3235625
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,231 @@
+type Arr = [[stride(16)]] array<i32, 7>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var sums : array<f32, 2>;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var d : i32;
+  var e : i32;
+  var f : i32;
+  var g : i32;
+  var h : i32;
+  var i : i32;
+  var j : i32;
+  var x_215 : bool;
+  var x_216_phi : bool;
+  let x_20 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_110 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_20] = x_110;
+  let x_22 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_114 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_22] = x_114;
+  let x_23 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_23;
+  loop {
+    let x_24 : i32 = a;
+    let x_25 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_24 < x_25)) {
+    } else {
+      break;
+    }
+    let x_26 : i32 = x_6.x_GLF_uniform_int_values[5];
+    b = x_26;
+    loop {
+      let x_27 : i32 = b;
+      let x_28 : i32 = x_6.x_GLF_uniform_int_values[3];
+      if ((x_27 < x_28)) {
+      } else {
+        break;
+      }
+      let x_29 : i32 = x_6.x_GLF_uniform_int_values[6];
+      c = x_29;
+      loop {
+        let x_30 : i32 = c;
+        let x_31 : i32 = x_6.x_GLF_uniform_int_values[4];
+        if ((x_30 <= x_31)) {
+        } else {
+          break;
+        }
+        let x_32 : i32 = x_6.x_GLF_uniform_int_values[1];
+        d = x_32;
+        loop {
+          let x_33 : i32 = d;
+          let x_34 : i32 = x_6.x_GLF_uniform_int_values[6];
+          if ((x_33 < x_34)) {
+          } else {
+            break;
+          }
+          let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+          e = x_35;
+          loop {
+            let x_36 : i32 = e;
+            let x_37 : i32 = x_6.x_GLF_uniform_int_values[4];
+            if ((x_36 <= x_37)) {
+            } else {
+              break;
+            }
+            let x_38 : i32 = x_6.x_GLF_uniform_int_values[1];
+            f = x_38;
+            loop {
+              let x_39 : i32 = f;
+              let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+              if ((x_39 < x_40)) {
+              } else {
+                break;
+              }
+              let x_41 : i32 = x_6.x_GLF_uniform_int_values[1];
+              g = x_41;
+              loop {
+                let x_42 : i32 = g;
+                let x_43 : i32 = x_6.x_GLF_uniform_int_values[6];
+                if ((x_42 < x_43)) {
+                } else {
+                  break;
+                }
+                let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+                h = x_44;
+                loop {
+                  let x_45 : i32 = h;
+                  let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+                  if ((x_45 < x_46)) {
+                  } else {
+                    break;
+                  }
+                  let x_47 : i32 = x_6.x_GLF_uniform_int_values[1];
+                  i = x_47;
+                  loop {
+                    let x_48 : i32 = i;
+                    let x_49 : i32 = x_6.x_GLF_uniform_int_values[4];
+                    if ((x_48 < x_49)) {
+                    } else {
+                      break;
+                    }
+                    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+                    j = x_50;
+                    loop {
+                      let x_51 : i32 = j;
+                      let x_52 : i32 = x_6.x_GLF_uniform_int_values[1];
+                      if ((x_51 > x_52)) {
+                      } else {
+                        break;
+                      }
+                      let x_53 : i32 = a;
+                      let x_197 : f32 = x_8.x_GLF_uniform_float_values[2];
+                      let x_199 : f32 = sums[x_53];
+                      sums[x_53] = (x_199 + x_197);
+
+                      continuing {
+                        let x_54 : i32 = j;
+                        j = (x_54 - 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_56 : i32 = i;
+                      i = (x_56 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_58 : i32 = h;
+                    h = (x_58 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_60 : i32 = g;
+                  g = (x_60 + 1);
+                }
+              }
+
+              continuing {
+                let x_62 : i32 = f;
+                f = (x_62 + 1);
+              }
+            }
+
+            continuing {
+              let x_64 : i32 = e;
+              e = (x_64 + 1);
+            }
+          }
+
+          continuing {
+            let x_66 : i32 = d;
+            d = (x_66 + 1);
+          }
+        }
+
+        continuing {
+          let x_68 : i32 = c;
+          c = (x_68 + 1);
+        }
+      }
+
+      continuing {
+        let x_70 : i32 = b;
+        b = (x_70 + 1);
+      }
+    }
+
+    continuing {
+      let x_72 : i32 = a;
+      a = (x_72 + 1);
+    }
+  }
+  let x_74 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_204 : f32 = sums[x_74];
+  let x_206 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_207 : bool = (x_204 == x_206);
+  x_216_phi = x_207;
+  if (x_207) {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_212 : f32 = sums[x_75];
+    let x_214 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_215 = (x_212 == x_214);
+    x_216_phi = x_215;
+  }
+  let x_216 : bool = x_216_phi;
+  if (x_216) {
+    let x_76 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_79 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_76), f32(x_77), f32(x_78), f32(x_79));
+  } else {
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_230 : f32 = f32(x_80);
+    x_GLF_color = vec4<f32>(x_230, x_230, x_230, x_230);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
new file mode 100644
index 0000000..3235625
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
@@ -0,0 +1,231 @@
+type Arr = [[stride(16)]] array<i32, 7>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var sums : array<f32, 2>;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var d : i32;
+  var e : i32;
+  var f : i32;
+  var g : i32;
+  var h : i32;
+  var i : i32;
+  var j : i32;
+  var x_215 : bool;
+  var x_216_phi : bool;
+  let x_20 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_110 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_20] = x_110;
+  let x_22 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_114 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_22] = x_114;
+  let x_23 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_23;
+  loop {
+    let x_24 : i32 = a;
+    let x_25 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_24 < x_25)) {
+    } else {
+      break;
+    }
+    let x_26 : i32 = x_6.x_GLF_uniform_int_values[5];
+    b = x_26;
+    loop {
+      let x_27 : i32 = b;
+      let x_28 : i32 = x_6.x_GLF_uniform_int_values[3];
+      if ((x_27 < x_28)) {
+      } else {
+        break;
+      }
+      let x_29 : i32 = x_6.x_GLF_uniform_int_values[6];
+      c = x_29;
+      loop {
+        let x_30 : i32 = c;
+        let x_31 : i32 = x_6.x_GLF_uniform_int_values[4];
+        if ((x_30 <= x_31)) {
+        } else {
+          break;
+        }
+        let x_32 : i32 = x_6.x_GLF_uniform_int_values[1];
+        d = x_32;
+        loop {
+          let x_33 : i32 = d;
+          let x_34 : i32 = x_6.x_GLF_uniform_int_values[6];
+          if ((x_33 < x_34)) {
+          } else {
+            break;
+          }
+          let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+          e = x_35;
+          loop {
+            let x_36 : i32 = e;
+            let x_37 : i32 = x_6.x_GLF_uniform_int_values[4];
+            if ((x_36 <= x_37)) {
+            } else {
+              break;
+            }
+            let x_38 : i32 = x_6.x_GLF_uniform_int_values[1];
+            f = x_38;
+            loop {
+              let x_39 : i32 = f;
+              let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+              if ((x_39 < x_40)) {
+              } else {
+                break;
+              }
+              let x_41 : i32 = x_6.x_GLF_uniform_int_values[1];
+              g = x_41;
+              loop {
+                let x_42 : i32 = g;
+                let x_43 : i32 = x_6.x_GLF_uniform_int_values[6];
+                if ((x_42 < x_43)) {
+                } else {
+                  break;
+                }
+                let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+                h = x_44;
+                loop {
+                  let x_45 : i32 = h;
+                  let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+                  if ((x_45 < x_46)) {
+                  } else {
+                    break;
+                  }
+                  let x_47 : i32 = x_6.x_GLF_uniform_int_values[1];
+                  i = x_47;
+                  loop {
+                    let x_48 : i32 = i;
+                    let x_49 : i32 = x_6.x_GLF_uniform_int_values[4];
+                    if ((x_48 < x_49)) {
+                    } else {
+                      break;
+                    }
+                    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+                    j = x_50;
+                    loop {
+                      let x_51 : i32 = j;
+                      let x_52 : i32 = x_6.x_GLF_uniform_int_values[1];
+                      if ((x_51 > x_52)) {
+                      } else {
+                        break;
+                      }
+                      let x_53 : i32 = a;
+                      let x_197 : f32 = x_8.x_GLF_uniform_float_values[2];
+                      let x_199 : f32 = sums[x_53];
+                      sums[x_53] = (x_199 + x_197);
+
+                      continuing {
+                        let x_54 : i32 = j;
+                        j = (x_54 - 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_56 : i32 = i;
+                      i = (x_56 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_58 : i32 = h;
+                    h = (x_58 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_60 : i32 = g;
+                  g = (x_60 + 1);
+                }
+              }
+
+              continuing {
+                let x_62 : i32 = f;
+                f = (x_62 + 1);
+              }
+            }
+
+            continuing {
+              let x_64 : i32 = e;
+              e = (x_64 + 1);
+            }
+          }
+
+          continuing {
+            let x_66 : i32 = d;
+            d = (x_66 + 1);
+          }
+        }
+
+        continuing {
+          let x_68 : i32 = c;
+          c = (x_68 + 1);
+        }
+      }
+
+      continuing {
+        let x_70 : i32 = b;
+        b = (x_70 + 1);
+      }
+    }
+
+    continuing {
+      let x_72 : i32 = a;
+      a = (x_72 + 1);
+    }
+  }
+  let x_74 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_204 : f32 = sums[x_74];
+  let x_206 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_207 : bool = (x_204 == x_206);
+  x_216_phi = x_207;
+  if (x_207) {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_212 : f32 = sums[x_75];
+    let x_214 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_215 = (x_212 == x_214);
+    x_216_phi = x_215;
+  }
+  let x_216 : bool = x_216_phi;
+  if (x_216) {
+    let x_76 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_79 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_76), f32(x_77), f32(x_78), f32(x_79));
+  } else {
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_230 : f32 = f32(x_80);
+    x_GLF_color = vec4<f32>(x_230, x_230, x_230, x_230);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..5d63b9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,208 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[7];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float sums[2] = (float[2])0;
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int d = 0;
+  int e = 0;
+  int f = 0;
+  int g = 0;
+  int h = 0;
+  int i = 0;
+  int j = 0;
+  bool x_215 = false;
+  bool x_216_phi = false;
+  const int x_20 = asint(x_6[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_110 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+  sums[x_20] = x_110;
+  const int x_22 = asint(x_6[2].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_114 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  sums[x_22] = x_114;
+  const int x_23 = asint(x_6[1].x);
+  a = x_23;
+  while (true) {
+    const int x_24 = a;
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_25 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_24 < x_25)) {
+    } else {
+      break;
+    }
+    const int x_26 = asint(x_6[5].x);
+    b = x_26;
+    while (true) {
+      const int x_27 = b;
+      const int x_28 = asint(x_6[3].x);
+      if ((x_27 < x_28)) {
+      } else {
+        break;
+      }
+      const int x_29 = asint(x_6[6].x);
+      c = x_29;
+      while (true) {
+        const int x_30 = c;
+        const int x_31 = asint(x_6[4].x);
+        if ((x_30 <= x_31)) {
+        } else {
+          break;
+        }
+        const int x_32 = asint(x_6[1].x);
+        d = x_32;
+        while (true) {
+          const int x_33 = d;
+          const int x_34 = asint(x_6[6].x);
+          if ((x_33 < x_34)) {
+          } else {
+            break;
+          }
+          const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+          const int x_35 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+          e = x_35;
+          while (true) {
+            const int x_36 = e;
+            const int x_37 = asint(x_6[4].x);
+            if ((x_36 <= x_37)) {
+            } else {
+              break;
+            }
+            const int x_38 = asint(x_6[1].x);
+            f = x_38;
+            while (true) {
+              const int x_39 = f;
+              const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+              const int x_40 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+              if ((x_39 < x_40)) {
+              } else {
+                break;
+              }
+              const int x_41 = asint(x_6[1].x);
+              g = x_41;
+              while (true) {
+                const int x_42 = g;
+                const int x_43 = asint(x_6[6].x);
+                if ((x_42 < x_43)) {
+                } else {
+                  break;
+                }
+                const int x_44 = asint(x_6[1].x);
+                h = x_44;
+                while (true) {
+                  const int x_45 = h;
+                  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+                  const int x_46 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+                  if ((x_45 < x_46)) {
+                  } else {
+                    break;
+                  }
+                  const int x_47 = asint(x_6[1].x);
+                  i = x_47;
+                  while (true) {
+                    const int x_48 = i;
+                    const int x_49 = asint(x_6[4].x);
+                    if ((x_48 < x_49)) {
+                    } else {
+                      break;
+                    }
+                    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+                    const int x_50 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+                    j = x_50;
+                    while (true) {
+                      const int x_51 = j;
+                      const int x_52 = asint(x_6[1].x);
+                      if ((x_51 > x_52)) {
+                      } else {
+                        break;
+                      }
+                      const int x_53 = a;
+                      const float x_197 = asfloat(x_8[2].x);
+                      const float x_199 = sums[x_53];
+                      sums[x_53] = (x_199 + x_197);
+                      {
+                        j = (j - 1);
+                      }
+                    }
+                    {
+                      i = (i + 1);
+                    }
+                  }
+                  {
+                    h = (h + 1);
+                  }
+                }
+                {
+                  g = (g + 1);
+                }
+              }
+              {
+                f = (f + 1);
+              }
+            }
+            {
+              e = (e + 1);
+            }
+          }
+          {
+            d = (d + 1);
+          }
+        }
+        {
+          c = (c + 1);
+        }
+      }
+      {
+        b = (b + 1);
+      }
+    }
+    {
+      a = (a + 1);
+    }
+  }
+  const int x_74 = asint(x_6[1].x);
+  const float x_204 = sums[x_74];
+  const float x_206 = asfloat(x_8[1].x);
+  const bool x_207 = (x_204 == x_206);
+  x_216_phi = x_207;
+  if (x_207) {
+    const int x_75 = asint(x_6[2].x);
+    const float x_212 = sums[x_75];
+    const float x_214 = asfloat(x_8[1].x);
+    x_215 = (x_212 == x_214);
+    x_216_phi = x_215;
+  }
+  if (x_216_phi) {
+    const int x_76 = asint(x_6[2].x);
+    const int x_77 = asint(x_6[1].x);
+    const int x_78 = asint(x_6[1].x);
+    const int x_79 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_76), float(x_77), float(x_78), float(x_79));
+  } else {
+    const int x_80 = asint(x_6[1].x);
+    const float x_230 = float(x_80);
+    x_GLF_color = float4(x_230, x_230, x_230, x_230);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..14a2550
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.msl
@@ -0,0 +1,232 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[7];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 sums = {};
+  int a = 0;
+  int b = 0;
+  int c = 0;
+  int d = 0;
+  int e = 0;
+  int f = 0;
+  int g = 0;
+  int h = 0;
+  int i = 0;
+  int j = 0;
+  bool x_215 = false;
+  bool x_216_phi = false;
+  int const x_20 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_110 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  sums.arr[x_20] = x_110;
+  int const x_22 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  float const x_114 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  sums.arr[x_22] = x_114;
+  int const x_23 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_23;
+  while (true) {
+    int const x_24 = a;
+    int const x_25 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_24 < x_25)) {
+    } else {
+      break;
+    }
+    int const x_26 = x_6.x_GLF_uniform_int_values.arr[5].el;
+    b = x_26;
+    while (true) {
+      int const x_27 = b;
+      int const x_28 = x_6.x_GLF_uniform_int_values.arr[3].el;
+      if ((x_27 < x_28)) {
+      } else {
+        break;
+      }
+      int const x_29 = x_6.x_GLF_uniform_int_values.arr[6].el;
+      c = x_29;
+      while (true) {
+        int const x_30 = c;
+        int const x_31 = x_6.x_GLF_uniform_int_values.arr[4].el;
+        if ((x_30 <= x_31)) {
+        } else {
+          break;
+        }
+        int const x_32 = x_6.x_GLF_uniform_int_values.arr[1].el;
+        d = x_32;
+        while (true) {
+          int const x_33 = d;
+          int const x_34 = x_6.x_GLF_uniform_int_values.arr[6].el;
+          if ((x_33 < x_34)) {
+          } else {
+            break;
+          }
+          int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+          e = x_35;
+          while (true) {
+            int const x_36 = e;
+            int const x_37 = x_6.x_GLF_uniform_int_values.arr[4].el;
+            if ((x_36 <= x_37)) {
+            } else {
+              break;
+            }
+            int const x_38 = x_6.x_GLF_uniform_int_values.arr[1].el;
+            f = x_38;
+            while (true) {
+              int const x_39 = f;
+              int const x_40 = x_6.x_GLF_uniform_int_values.arr[0].el;
+              if ((x_39 < x_40)) {
+              } else {
+                break;
+              }
+              int const x_41 = x_6.x_GLF_uniform_int_values.arr[1].el;
+              g = x_41;
+              while (true) {
+                int const x_42 = g;
+                int const x_43 = x_6.x_GLF_uniform_int_values.arr[6].el;
+                if ((x_42 < x_43)) {
+                } else {
+                  break;
+                }
+                int const x_44 = x_6.x_GLF_uniform_int_values.arr[1].el;
+                h = x_44;
+                while (true) {
+                  int const x_45 = h;
+                  int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+                  if ((x_45 < x_46)) {
+                  } else {
+                    break;
+                  }
+                  int const x_47 = x_6.x_GLF_uniform_int_values.arr[1].el;
+                  i = x_47;
+                  while (true) {
+                    int const x_48 = i;
+                    int const x_49 = x_6.x_GLF_uniform_int_values.arr[4].el;
+                    if ((x_48 < x_49)) {
+                    } else {
+                      break;
+                    }
+                    int const x_50 = x_6.x_GLF_uniform_int_values.arr[0].el;
+                    j = x_50;
+                    while (true) {
+                      int const x_51 = j;
+                      int const x_52 = x_6.x_GLF_uniform_int_values.arr[1].el;
+                      if ((x_51 > x_52)) {
+                      } else {
+                        break;
+                      }
+                      int const x_53 = a;
+                      float const x_197 = x_8.x_GLF_uniform_float_values.arr[2].el;
+                      float const x_199 = sums.arr[x_53];
+                      sums.arr[x_53] = (x_199 + x_197);
+                      {
+                        int const x_54 = j;
+                        j = (x_54 - 1);
+                      }
+                    }
+                    {
+                      int const x_56 = i;
+                      i = (x_56 + 1);
+                    }
+                  }
+                  {
+                    int const x_58 = h;
+                    h = (x_58 + 1);
+                  }
+                }
+                {
+                  int const x_60 = g;
+                  g = (x_60 + 1);
+                }
+              }
+              {
+                int const x_62 = f;
+                f = (x_62 + 1);
+              }
+            }
+            {
+              int const x_64 = e;
+              e = (x_64 + 1);
+            }
+          }
+          {
+            int const x_66 = d;
+            d = (x_66 + 1);
+          }
+        }
+        {
+          int const x_68 = c;
+          c = (x_68 + 1);
+        }
+      }
+      {
+        int const x_70 = b;
+        b = (x_70 + 1);
+      }
+    }
+    {
+      int const x_72 = a;
+      a = (x_72 + 1);
+    }
+  }
+  int const x_74 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_204 = sums.arr[x_74];
+  float const x_206 = x_8.x_GLF_uniform_float_values.arr[1].el;
+  bool const x_207 = (x_204 == x_206);
+  x_216_phi = x_207;
+  if (x_207) {
+    int const x_75 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_212 = sums.arr[x_75];
+    float const x_214 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    x_215 = (x_212 == x_214);
+    x_216_phi = x_215;
+  }
+  bool const x_216 = x_216_phi;
+  if (x_216) {
+    int const x_76 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_79 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_76), float(x_77), float(x_78), float(x_79));
+  } else {
+    int const x_80 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_230 = float(x_80);
+    *(tint_symbol_4) = float4(x_230, x_230, x_230, x_230);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..504fead
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,456 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 274
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %sums "sums"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %e "e"
+               OpName %f "f"
+               OpName %g "g"
+               OpName %h "h"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %x_215 "x_215"
+               OpName %x_216_phi "x_216_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_7 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_7 = OpConstant %uint 7
+%_arr_int_uint_7 = OpTypeArray %int %uint_7
+       %buf0 = OpTypeStruct %_arr_int_uint_7
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+         %28 = OpConstantNull %_arr_float_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %44 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+      %int_5 = OpConstant %int 5
+      %int_3 = OpConstant %int 3
+      %int_6 = OpConstant %int 6
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %262 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+       %sums = OpVariable %_ptr_Function__arr_float_uint_2 Function %28
+          %a = OpVariable %_ptr_Function_int Function %31
+          %b = OpVariable %_ptr_Function_int Function %31
+          %c = OpVariable %_ptr_Function_int Function %31
+          %d = OpVariable %_ptr_Function_int Function %31
+          %e = OpVariable %_ptr_Function_int Function %31
+          %f = OpVariable %_ptr_Function_int Function %31
+          %g = OpVariable %_ptr_Function_int Function %31
+          %h = OpVariable %_ptr_Function_int Function %31
+          %i = OpVariable %_ptr_Function_int Function %31
+          %j = OpVariable %_ptr_Function_int Function %31
+      %x_215 = OpVariable %_ptr_Function_bool Function %44
+  %x_216_phi = OpVariable %_ptr_Function_bool Function %44
+         %49 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %54 = OpLoad %float %53
+         %56 = OpAccessChain %_ptr_Function_float %sums %50
+               OpStore %56 %54
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Function_float %sums %59
+               OpStore %62 %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+               OpStore %a %64
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpLoad %int %a
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %71 = OpLoad %int %70
+         %72 = OpSLessThan %bool %69 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %66
+         %73 = OpLabel
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %78 = OpLoad %int %77
+               OpStore %b %78
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %83 = OpLoad %int %b
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %86 = OpLoad %int %85
+         %87 = OpSLessThan %bool %83 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+               OpBranch %88
+         %90 = OpLabel
+               OpBranch %80
+         %88 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+         %93 = OpLoad %int %92
+               OpStore %c %93
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+         %98 = OpLoad %int %c
+        %100 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %101 = OpLoad %int %100
+        %102 = OpSLessThanEqual %bool %98 %101
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+               OpBranch %103
+        %105 = OpLabel
+               OpBranch %95
+        %103 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %107 = OpLoad %int %106
+               OpStore %d %107
+               OpBranch %108
+        %108 = OpLabel
+               OpLoopMerge %109 %110 None
+               OpBranch %111
+        %111 = OpLabel
+        %112 = OpLoad %int %d
+        %113 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %114 = OpLoad %int %113
+        %115 = OpSLessThan %bool %112 %114
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+               OpBranch %116
+        %118 = OpLabel
+               OpBranch %109
+        %116 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %120 = OpLoad %int %119
+               OpStore %e %120
+               OpBranch %121
+        %121 = OpLabel
+               OpLoopMerge %122 %123 None
+               OpBranch %124
+        %124 = OpLabel
+        %125 = OpLoad %int %e
+        %126 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %127 = OpLoad %int %126
+        %128 = OpSLessThanEqual %bool %125 %127
+               OpSelectionMerge %129 None
+               OpBranchConditional %128 %130 %131
+        %130 = OpLabel
+               OpBranch %129
+        %131 = OpLabel
+               OpBranch %122
+        %129 = OpLabel
+        %132 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %133 = OpLoad %int %132
+               OpStore %f %133
+               OpBranch %134
+        %134 = OpLabel
+               OpLoopMerge %135 %136 None
+               OpBranch %137
+        %137 = OpLabel
+        %138 = OpLoad %int %f
+        %139 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %140 = OpLoad %int %139
+        %141 = OpSLessThan %bool %138 %140
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %135
+        %142 = OpLabel
+        %145 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %146 = OpLoad %int %145
+               OpStore %g %146
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %g
+        %152 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %153 = OpLoad %int %152
+        %154 = OpSLessThan %bool %151 %153
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+               OpBranch %155
+        %157 = OpLabel
+               OpBranch %148
+        %155 = OpLabel
+        %158 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %159 = OpLoad %int %158
+               OpStore %h %159
+               OpBranch %160
+        %160 = OpLabel
+               OpLoopMerge %161 %162 None
+               OpBranch %163
+        %163 = OpLabel
+        %164 = OpLoad %int %h
+        %165 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %164 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %161
+        %168 = OpLabel
+        %171 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %172 = OpLoad %int %171
+               OpStore %i %172
+               OpBranch %173
+        %173 = OpLabel
+               OpLoopMerge %174 %175 None
+               OpBranch %176
+        %176 = OpLabel
+        %177 = OpLoad %int %i
+        %178 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+        %179 = OpLoad %int %178
+        %180 = OpSLessThan %bool %177 %179
+               OpSelectionMerge %181 None
+               OpBranchConditional %180 %182 %183
+        %182 = OpLabel
+               OpBranch %181
+        %183 = OpLabel
+               OpBranch %174
+        %181 = OpLabel
+        %184 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %185 = OpLoad %int %184
+               OpStore %j %185
+               OpBranch %186
+        %186 = OpLabel
+               OpLoopMerge %187 %188 None
+               OpBranch %189
+        %189 = OpLabel
+        %190 = OpLoad %int %j
+        %191 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %192 = OpLoad %int %191
+        %193 = OpSGreaterThan %bool %190 %192
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %196
+        %195 = OpLabel
+               OpBranch %194
+        %196 = OpLabel
+               OpBranch %187
+        %194 = OpLabel
+        %197 = OpLoad %int %a
+        %198 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_2
+        %199 = OpLoad %float %198
+        %200 = OpAccessChain %_ptr_Function_float %sums %197
+        %201 = OpLoad %float %200
+        %202 = OpAccessChain %_ptr_Function_float %sums %197
+        %203 = OpFAdd %float %201 %199
+               OpStore %202 %203
+               OpBranch %188
+        %188 = OpLabel
+        %204 = OpLoad %int %j
+        %205 = OpISub %int %204 %int_1
+               OpStore %j %205
+               OpBranch %186
+        %187 = OpLabel
+               OpBranch %175
+        %175 = OpLabel
+        %206 = OpLoad %int %i
+        %207 = OpIAdd %int %206 %int_1
+               OpStore %i %207
+               OpBranch %173
+        %174 = OpLabel
+               OpBranch %162
+        %162 = OpLabel
+        %208 = OpLoad %int %h
+        %209 = OpIAdd %int %208 %int_1
+               OpStore %h %209
+               OpBranch %160
+        %161 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %210 = OpLoad %int %g
+        %211 = OpIAdd %int %210 %int_1
+               OpStore %g %211
+               OpBranch %147
+        %148 = OpLabel
+               OpBranch %136
+        %136 = OpLabel
+        %212 = OpLoad %int %f
+        %213 = OpIAdd %int %212 %int_1
+               OpStore %f %213
+               OpBranch %134
+        %135 = OpLabel
+               OpBranch %123
+        %123 = OpLabel
+        %214 = OpLoad %int %e
+        %215 = OpIAdd %int %214 %int_1
+               OpStore %e %215
+               OpBranch %121
+        %122 = OpLabel
+               OpBranch %110
+        %110 = OpLabel
+        %216 = OpLoad %int %d
+        %217 = OpIAdd %int %216 %int_1
+               OpStore %d %217
+               OpBranch %108
+        %109 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+        %218 = OpLoad %int %c
+        %219 = OpIAdd %int %218 %int_1
+               OpStore %c %219
+               OpBranch %94
+         %95 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+        %220 = OpLoad %int %b
+        %221 = OpIAdd %int %220 %int_1
+               OpStore %b %221
+               OpBranch %79
+         %80 = OpLabel
+               OpBranch %67
+         %67 = OpLabel
+        %222 = OpLoad %int %a
+        %223 = OpIAdd %int %222 %int_1
+               OpStore %a %223
+               OpBranch %65
+         %66 = OpLabel
+        %224 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %225 = OpLoad %int %224
+        %226 = OpAccessChain %_ptr_Function_float %sums %225
+        %227 = OpLoad %float %226
+        %228 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %229 = OpLoad %float %228
+        %230 = OpFOrdEqual %bool %227 %229
+               OpStore %x_216_phi %230
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %231
+        %232 = OpLabel
+        %233 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %234 = OpLoad %int %233
+        %235 = OpAccessChain %_ptr_Function_float %sums %234
+        %236 = OpLoad %float %235
+        %237 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+        %238 = OpLoad %float %237
+        %239 = OpFOrdEqual %bool %236 %238
+               OpStore %x_215 %239
+        %240 = OpLoad %bool %x_215
+               OpStore %x_216_phi %240
+               OpBranch %231
+        %231 = OpLabel
+        %241 = OpLoad %bool %x_216_phi
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %244
+        %243 = OpLabel
+        %245 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %246 = OpLoad %int %245
+        %247 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %248 = OpLoad %int %247
+        %249 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %250 = OpLoad %int %249
+        %251 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %252 = OpLoad %int %251
+        %253 = OpConvertSToF %float %246
+        %254 = OpConvertSToF %float %248
+        %255 = OpConvertSToF %float %250
+        %256 = OpConvertSToF %float %252
+        %257 = OpCompositeConstruct %v4float %253 %254 %255 %256
+               OpStore %x_GLF_color %257
+               OpBranch %242
+        %244 = OpLabel
+        %258 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %259 = OpLoad %int %258
+        %260 = OpConvertSToF %float %259
+        %261 = OpCompositeConstruct %v4float %260 %260 %260 %260
+               OpStore %x_GLF_color %261
+               OpBranch %242
+        %242 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %262
+%tint_symbol = OpFunctionParameter %main_out
+        %266 = OpLabel
+        %267 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %267
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %269 = OpLabel
+        %270 = OpFunctionCall %void %main_1
+        %272 = OpLoad %v4float %x_GLF_color
+        %273 = OpCompositeConstruct %main_out %272
+        %271 = OpFunctionCall %void %tint_symbol_2 %273
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3235625
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,231 @@
+type Arr = [[stride(16)]] array<i32, 7>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var sums : array<f32, 2>;
+  var a : i32;
+  var b : i32;
+  var c : i32;
+  var d : i32;
+  var e : i32;
+  var f : i32;
+  var g : i32;
+  var h : i32;
+  var i : i32;
+  var j : i32;
+  var x_215 : bool;
+  var x_216_phi : bool;
+  let x_20 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_110 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_20] = x_110;
+  let x_22 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_114 : f32 = x_8.x_GLF_uniform_float_values[0];
+  sums[x_22] = x_114;
+  let x_23 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_23;
+  loop {
+    let x_24 : i32 = a;
+    let x_25 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_24 < x_25)) {
+    } else {
+      break;
+    }
+    let x_26 : i32 = x_6.x_GLF_uniform_int_values[5];
+    b = x_26;
+    loop {
+      let x_27 : i32 = b;
+      let x_28 : i32 = x_6.x_GLF_uniform_int_values[3];
+      if ((x_27 < x_28)) {
+      } else {
+        break;
+      }
+      let x_29 : i32 = x_6.x_GLF_uniform_int_values[6];
+      c = x_29;
+      loop {
+        let x_30 : i32 = c;
+        let x_31 : i32 = x_6.x_GLF_uniform_int_values[4];
+        if ((x_30 <= x_31)) {
+        } else {
+          break;
+        }
+        let x_32 : i32 = x_6.x_GLF_uniform_int_values[1];
+        d = x_32;
+        loop {
+          let x_33 : i32 = d;
+          let x_34 : i32 = x_6.x_GLF_uniform_int_values[6];
+          if ((x_33 < x_34)) {
+          } else {
+            break;
+          }
+          let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+          e = x_35;
+          loop {
+            let x_36 : i32 = e;
+            let x_37 : i32 = x_6.x_GLF_uniform_int_values[4];
+            if ((x_36 <= x_37)) {
+            } else {
+              break;
+            }
+            let x_38 : i32 = x_6.x_GLF_uniform_int_values[1];
+            f = x_38;
+            loop {
+              let x_39 : i32 = f;
+              let x_40 : i32 = x_6.x_GLF_uniform_int_values[0];
+              if ((x_39 < x_40)) {
+              } else {
+                break;
+              }
+              let x_41 : i32 = x_6.x_GLF_uniform_int_values[1];
+              g = x_41;
+              loop {
+                let x_42 : i32 = g;
+                let x_43 : i32 = x_6.x_GLF_uniform_int_values[6];
+                if ((x_42 < x_43)) {
+                } else {
+                  break;
+                }
+                let x_44 : i32 = x_6.x_GLF_uniform_int_values[1];
+                h = x_44;
+                loop {
+                  let x_45 : i32 = h;
+                  let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+                  if ((x_45 < x_46)) {
+                  } else {
+                    break;
+                  }
+                  let x_47 : i32 = x_6.x_GLF_uniform_int_values[1];
+                  i = x_47;
+                  loop {
+                    let x_48 : i32 = i;
+                    let x_49 : i32 = x_6.x_GLF_uniform_int_values[4];
+                    if ((x_48 < x_49)) {
+                    } else {
+                      break;
+                    }
+                    let x_50 : i32 = x_6.x_GLF_uniform_int_values[0];
+                    j = x_50;
+                    loop {
+                      let x_51 : i32 = j;
+                      let x_52 : i32 = x_6.x_GLF_uniform_int_values[1];
+                      if ((x_51 > x_52)) {
+                      } else {
+                        break;
+                      }
+                      let x_53 : i32 = a;
+                      let x_197 : f32 = x_8.x_GLF_uniform_float_values[2];
+                      let x_199 : f32 = sums[x_53];
+                      sums[x_53] = (x_199 + x_197);
+
+                      continuing {
+                        let x_54 : i32 = j;
+                        j = (x_54 - 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_56 : i32 = i;
+                      i = (x_56 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_58 : i32 = h;
+                    h = (x_58 + 1);
+                  }
+                }
+
+                continuing {
+                  let x_60 : i32 = g;
+                  g = (x_60 + 1);
+                }
+              }
+
+              continuing {
+                let x_62 : i32 = f;
+                f = (x_62 + 1);
+              }
+            }
+
+            continuing {
+              let x_64 : i32 = e;
+              e = (x_64 + 1);
+            }
+          }
+
+          continuing {
+            let x_66 : i32 = d;
+            d = (x_66 + 1);
+          }
+        }
+
+        continuing {
+          let x_68 : i32 = c;
+          c = (x_68 + 1);
+        }
+      }
+
+      continuing {
+        let x_70 : i32 = b;
+        b = (x_70 + 1);
+      }
+    }
+
+    continuing {
+      let x_72 : i32 = a;
+      a = (x_72 + 1);
+    }
+  }
+  let x_74 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_204 : f32 = sums[x_74];
+  let x_206 : f32 = x_8.x_GLF_uniform_float_values[1];
+  let x_207 : bool = (x_204 == x_206);
+  x_216_phi = x_207;
+  if (x_207) {
+    let x_75 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_212 : f32 = sums[x_75];
+    let x_214 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_215 = (x_212 == x_214);
+    x_216_phi = x_215;
+  }
+  let x_216 : bool = x_216_phi;
+  if (x_216) {
+    let x_76 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_79 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_76), f32(x_77), f32(x_78), f32(x_79));
+  } else {
+    let x_80 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_230 : f32 = f32(x_80);
+    x_GLF_color = vec4<f32>(x_230, x_230, x_230, x_230);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm
new file mode 100644
index 0000000..26b914c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm
@@ -0,0 +1,283 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %i0 "i0"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %i1 "i1"
+               OpName %i2 "i2"
+               OpName %i3 "i3"
+               OpName %i4 "i4"
+               OpName %i5 "i5"
+               OpName %i6 "i6"
+               OpName %i7 "i7"
+               OpName %i8 "i8"
+               OpName %i9 "i9"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %18
+         %35 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %i0 = OpVariable %_ptr_Function_int Function
+         %i1 = OpVariable %_ptr_Function_int Function
+         %i2 = OpVariable %_ptr_Function_int Function
+         %i3 = OpVariable %_ptr_Function_int Function
+         %i4 = OpVariable %_ptr_Function_int Function
+         %i5 = OpVariable %_ptr_Function_int Function
+         %i6 = OpVariable %_ptr_Function_int Function
+         %i7 = OpVariable %_ptr_Function_int Function
+         %i8 = OpVariable %_ptr_Function_int Function
+         %i9 = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+               OpStore %i0 %int_0
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i0
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %42 = OpLoad %int %41
+         %43 = OpSLessThan %bool %40 %42
+               OpBranchConditional %43 %44 %37
+         %44 = OpLabel
+               OpStore %i1 %int_0
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i1
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %49 %51
+               OpBranchConditional %52 %53 %46
+         %53 = OpLabel
+               OpStore %i2 %int_0
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %i2
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %60 = OpLoad %int %59
+         %61 = OpSLessThan %bool %58 %60
+               OpBranchConditional %61 %62 %55
+         %62 = OpLabel
+               OpStore %i3 %int_0
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpLoad %int %i3
+         %68 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %69 = OpLoad %int %68
+         %70 = OpIAdd %int %69 %int_2
+         %71 = OpSLessThan %bool %67 %70
+               OpBranchConditional %71 %72 %64
+         %72 = OpLabel
+               OpStore %i4 %int_0
+               OpBranch %73
+         %73 = OpLabel
+               OpLoopMerge %74 %75 None
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpLoad %int %i4
+         %78 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %79 = OpLoad %int %78
+         %80 = OpSLessThan %bool %77 %79
+               OpBranchConditional %80 %81 %74
+         %81 = OpLabel
+               OpStore %i5 %int_0
+               OpBranch %82
+         %82 = OpLabel
+               OpLoopMerge %83 %84 None
+               OpBranch %85
+         %85 = OpLabel
+         %86 = OpLoad %int %i5
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %88 = OpLoad %int %87
+         %89 = OpSLessThan %bool %86 %88
+               OpBranchConditional %89 %90 %83
+         %90 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %96 = OpLoad %int %95
+         %97 = OpSGreaterThan %bool %96 %int_0
+               OpBranchConditional %97 %98 %92
+         %98 = OpLabel
+               OpStore %i6 %int_0
+               OpBranch %99
+         %99 = OpLabel
+               OpLoopMerge %100 %101 None
+               OpBranch %102
+        %102 = OpLabel
+        %103 = OpLoad %int %i6
+        %104 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+        %105 = OpLoad %int %104
+        %106 = OpSLessThan %bool %103 %105
+               OpBranchConditional %106 %107 %100
+        %107 = OpLabel
+               OpStore %i7 %int_0
+               OpBranch %108
+        %108 = OpLabel
+               OpLoopMerge %109 %110 None
+               OpBranch %111
+        %111 = OpLabel
+        %112 = OpLoad %int %i7
+        %113 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+        %114 = OpLoad %int %113
+        %115 = OpSLessThan %bool %112 %114
+               OpBranchConditional %115 %116 %109
+        %116 = OpLabel
+               OpStore %i8 %int_0
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpLoad %int %i8
+        %122 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+        %123 = OpLoad %int %122
+        %124 = OpSLessThan %bool %121 %123
+               OpBranchConditional %124 %125 %118
+        %125 = OpLabel
+               OpStore %i9 %int_0
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %130 = OpLoad %int %i9
+        %131 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+        %132 = OpLoad %int %131
+        %133 = OpSLessThan %bool %130 %132
+               OpBranchConditional %133 %134 %127
+        %134 = OpLabel
+        %135 = OpLoad %int %a
+        %136 = OpIAdd %int %135 %int_1
+               OpStore %a %136
+               OpBranch %128
+        %128 = OpLabel
+        %137 = OpLoad %int %i9
+        %138 = OpIAdd %int %137 %int_1
+               OpStore %i9 %138
+               OpBranch %126
+        %127 = OpLabel
+               OpBranch %119
+        %119 = OpLabel
+        %139 = OpLoad %int %i8
+        %140 = OpIAdd %int %139 %int_1
+               OpStore %i8 %140
+               OpBranch %117
+        %118 = OpLabel
+               OpBranch %110
+        %110 = OpLabel
+        %141 = OpLoad %int %i7
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %i7 %142
+               OpBranch %108
+        %109 = OpLabel
+               OpBranch %101
+        %101 = OpLabel
+        %143 = OpLoad %int %i6
+        %144 = OpIAdd %int %143 %int_1
+               OpStore %i6 %144
+               OpBranch %99
+        %100 = OpLabel
+               OpBranch %92
+         %93 = OpLabel
+               OpBranch %91
+         %92 = OpLabel
+               OpBranch %84
+         %84 = OpLabel
+        %145 = OpLoad %int %i5
+        %146 = OpIAdd %int %145 %int_1
+               OpStore %i5 %146
+               OpBranch %82
+         %83 = OpLabel
+               OpBranch %75
+         %75 = OpLabel
+        %147 = OpLoad %int %i4
+        %148 = OpIAdd %int %147 %int_1
+               OpStore %i4 %148
+               OpBranch %73
+         %74 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+        %149 = OpLoad %int %i3
+        %150 = OpIAdd %int %149 %int_1
+               OpStore %i3 %150
+               OpBranch %63
+         %64 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+        %151 = OpLoad %int %i2
+        %152 = OpIAdd %int %151 %int_1
+               OpStore %i2 %152
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+        %153 = OpLoad %int %i1
+        %154 = OpIAdd %int %153 %int_1
+               OpStore %i1 %154
+               OpBranch %45
+         %46 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+        %155 = OpLoad %int %i0
+        %156 = OpIAdd %int %155 %int_1
+               OpStore %i0 %156
+               OpBranch %36
+         %37 = OpLabel
+        %157 = OpLoad %int %a
+        %158 = OpIEqual %bool %157 %int_3
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %161
+        %160 = OpLabel
+               OpStore %_GLF_color %33
+               OpBranch %159
+        %161 = OpLabel
+               OpStore %_GLF_color %34
+               OpBranch %159
+        %159 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9982cde
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,168 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i0 = 0;
+  int i1 = 0;
+  int i2 = 0;
+  int i3 = 0;
+  int i4 = 0;
+  int i5 = 0;
+  int i6 = 0;
+  int i7 = 0;
+  int i8_1 = 0;
+  int i9 = 0;
+  a = 0;
+  i0 = 0;
+  while (true) {
+    const int x_40 = i0;
+    const int x_42 = asint(x_7[0].x);
+    if ((x_40 < x_42)) {
+    } else {
+      break;
+    }
+    i1 = 0;
+    while (true) {
+      const int x_49 = i1;
+      const int x_51 = asint(x_7[0].x);
+      if ((x_49 < x_51)) {
+      } else {
+        break;
+      }
+      i2 = 0;
+      while (true) {
+        const int x_58 = i2;
+        const int x_60 = asint(x_7[0].x);
+        if ((x_58 < x_60)) {
+        } else {
+          break;
+        }
+        i3 = 0;
+        while (true) {
+          const int x_67 = i3;
+          const int x_69 = asint(x_7[0].x);
+          if ((x_67 < (x_69 + 2))) {
+          } else {
+            break;
+          }
+          i4 = 0;
+          while (true) {
+            const int x_77 = i4;
+            const int x_79 = asint(x_7[0].x);
+            if ((x_77 < x_79)) {
+            } else {
+              break;
+            }
+            i5 = 0;
+            while (true) {
+              const int x_86 = i5;
+              const int x_88 = asint(x_7[0].x);
+              if ((x_86 < x_88)) {
+              } else {
+                break;
+              }
+              while (true) {
+                const int x_96 = asint(x_7[0].x);
+                if ((x_96 > 0)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                while (true) {
+                  const int x_103 = i6;
+                  const int x_105 = asint(x_7[0].x);
+                  if ((x_103 < x_105)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  while (true) {
+                    const int x_112 = i7;
+                    const int x_114 = asint(x_7[0].x);
+                    if ((x_112 < x_114)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    while (true) {
+                      const int x_121 = i8_1;
+                      const int x_123 = asint(x_7[0].x);
+                      if ((x_121 < x_123)) {
+                      } else {
+                        break;
+                      }
+                      i9 = 0;
+                      while (true) {
+                        const int x_130 = i9;
+                        const int x_132 = asint(x_7[0].x);
+                        if ((x_130 < x_132)) {
+                        } else {
+                          break;
+                        }
+                        a = (a + 1);
+                        {
+                          i9 = (i9 + 1);
+                        }
+                      }
+                      {
+                        i8_1 = (i8_1 + 1);
+                      }
+                    }
+                    {
+                      i7 = (i7 + 1);
+                    }
+                  }
+                  {
+                    i6 = (i6 + 1);
+                  }
+                }
+                break;
+              }
+              {
+                i5 = (i5 + 1);
+              }
+            }
+            {
+              i4 = (i4 + 1);
+            }
+          }
+          {
+            i3 = (i3 + 1);
+          }
+        }
+        {
+          i2 = (i2 + 1);
+        }
+      }
+      {
+        i1 = (i1 + 1);
+      }
+    }
+    {
+      i0 = (i0 + 1);
+    }
+  }
+  if ((a == 3)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..77cd3d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,183 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i0 = 0;
+  int i1 = 0;
+  int i2 = 0;
+  int i3 = 0;
+  int i4 = 0;
+  int i5 = 0;
+  int i6 = 0;
+  int i7 = 0;
+  int i8_1 = 0;
+  int i9 = 0;
+  a = 0;
+  i0 = 0;
+  while (true) {
+    int const x_40 = i0;
+    int const x_42 = x_7.one;
+    if ((x_40 < x_42)) {
+    } else {
+      break;
+    }
+    i1 = 0;
+    while (true) {
+      int const x_49 = i1;
+      int const x_51 = x_7.one;
+      if ((x_49 < x_51)) {
+      } else {
+        break;
+      }
+      i2 = 0;
+      while (true) {
+        int const x_58 = i2;
+        int const x_60 = x_7.one;
+        if ((x_58 < x_60)) {
+        } else {
+          break;
+        }
+        i3 = 0;
+        while (true) {
+          int const x_67 = i3;
+          int const x_69 = x_7.one;
+          if ((x_67 < (x_69 + 2))) {
+          } else {
+            break;
+          }
+          i4 = 0;
+          while (true) {
+            int const x_77 = i4;
+            int const x_79 = x_7.one;
+            if ((x_77 < x_79)) {
+            } else {
+              break;
+            }
+            i5 = 0;
+            while (true) {
+              int const x_86 = i5;
+              int const x_88 = x_7.one;
+              if ((x_86 < x_88)) {
+              } else {
+                break;
+              }
+              while (true) {
+                int const x_96 = x_7.one;
+                if ((x_96 > 0)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                while (true) {
+                  int const x_103 = i6;
+                  int const x_105 = x_7.one;
+                  if ((x_103 < x_105)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  while (true) {
+                    int const x_112 = i7;
+                    int const x_114 = x_7.one;
+                    if ((x_112 < x_114)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    while (true) {
+                      int const x_121 = i8_1;
+                      int const x_123 = x_7.one;
+                      if ((x_121 < x_123)) {
+                      } else {
+                        break;
+                      }
+                      i9 = 0;
+                      while (true) {
+                        int const x_130 = i9;
+                        int const x_132 = x_7.one;
+                        if ((x_130 < x_132)) {
+                        } else {
+                          break;
+                        }
+                        int const x_135 = a;
+                        a = (x_135 + 1);
+                        {
+                          int const x_137 = i9;
+                          i9 = (x_137 + 1);
+                        }
+                      }
+                      {
+                        int const x_139 = i8_1;
+                        i8_1 = (x_139 + 1);
+                      }
+                    }
+                    {
+                      int const x_141 = i7;
+                      i7 = (x_141 + 1);
+                    }
+                  }
+                  {
+                    int const x_143 = i6;
+                    i6 = (x_143 + 1);
+                  }
+                }
+                break;
+              }
+              {
+                int const x_145 = i5;
+                i5 = (x_145 + 1);
+              }
+            }
+            {
+              int const x_147 = i4;
+              i4 = (x_147 + 1);
+            }
+          }
+          {
+            int const x_149 = i3;
+            i3 = (x_149 + 1);
+          }
+        }
+        {
+          int const x_151 = i2;
+          i2 = (x_151 + 1);
+        }
+      }
+      {
+        int const x_153 = i1;
+        i1 = (x_153 + 1);
+      }
+    }
+    {
+      int const x_155 = i0;
+      i0 = (x_155 + 1);
+    }
+  }
+  int const x_157 = a;
+  if ((x_157 == 3)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..854519d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,372 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 201
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i0 "i0"
+               OpName %i1 "i1"
+               OpName %i2 "i2"
+               OpName %i3 "i3"
+               OpName %i4 "i4"
+               OpName %i5 "i5"
+               OpName %i6 "i6"
+               OpName %i7 "i7"
+               OpName %i8_1 "i8_1"
+               OpName %i9 "i9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %187 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %188 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %189 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+         %i0 = OpVariable %_ptr_Function_int Function %18
+         %i1 = OpVariable %_ptr_Function_int Function %18
+         %i2 = OpVariable %_ptr_Function_int Function %18
+         %i3 = OpVariable %_ptr_Function_int Function %18
+         %i4 = OpVariable %_ptr_Function_int Function %18
+         %i5 = OpVariable %_ptr_Function_int Function %18
+         %i6 = OpVariable %_ptr_Function_int Function %18
+         %i7 = OpVariable %_ptr_Function_int Function %18
+       %i8_1 = OpVariable %_ptr_Function_int Function %18
+         %i9 = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+               OpStore %i0 %int_0
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i0
+         %38 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %39 = OpLoad %int %38
+         %40 = OpSLessThan %bool %34 %39
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+               OpBranch %42
+         %44 = OpLabel
+               OpBranch %31
+         %42 = OpLabel
+               OpStore %i1 %int_0
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i1
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %49 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %46
+         %53 = OpLabel
+               OpStore %i2 %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpLoad %int %i2
+         %61 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %62 = OpLoad %int %61
+         %63 = OpSLessThan %bool %60 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %57
+         %64 = OpLabel
+               OpStore %i3 %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i3
+         %72 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %73 = OpLoad %int %72
+         %75 = OpIAdd %int %73 %int_2
+         %76 = OpSLessThan %bool %71 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %68
+         %77 = OpLabel
+               OpStore %i4 %int_0
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %i4
+         %85 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSLessThan %bool %84 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+               OpBranch %88
+         %90 = OpLabel
+               OpBranch %81
+         %88 = OpLabel
+               OpStore %i5 %int_0
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i5
+         %96 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %97 = OpLoad %int %96
+         %98 = OpSLessThan %bool %95 %97
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %92
+         %99 = OpLabel
+               OpBranch %102
+        %102 = OpLabel
+               OpLoopMerge %103 %104 None
+               OpBranch %105
+        %105 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %107 = OpLoad %int %106
+        %108 = OpSGreaterThan %bool %107 %int_0
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %111
+        %110 = OpLabel
+               OpBranch %109
+        %111 = OpLabel
+               OpBranch %103
+        %109 = OpLabel
+               OpStore %i6 %int_0
+               OpBranch %112
+        %112 = OpLabel
+               OpLoopMerge %113 %114 None
+               OpBranch %115
+        %115 = OpLabel
+        %116 = OpLoad %int %i6
+        %117 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %118 = OpLoad %int %117
+        %119 = OpSLessThan %bool %116 %118
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+               OpBranch %120
+        %122 = OpLabel
+               OpBranch %113
+        %120 = OpLabel
+               OpStore %i7 %int_0
+               OpBranch %123
+        %123 = OpLabel
+               OpLoopMerge %124 %125 None
+               OpBranch %126
+        %126 = OpLabel
+        %127 = OpLoad %int %i7
+        %128 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %129 = OpLoad %int %128
+        %130 = OpSLessThan %bool %127 %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+               OpBranch %131
+        %133 = OpLabel
+               OpBranch %124
+        %131 = OpLabel
+               OpStore %i8_1 %int_0
+               OpBranch %134
+        %134 = OpLabel
+               OpLoopMerge %135 %136 None
+               OpBranch %137
+        %137 = OpLabel
+        %138 = OpLoad %int %i8_1
+        %139 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %140 = OpLoad %int %139
+        %141 = OpSLessThan %bool %138 %140
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %135
+        %142 = OpLabel
+               OpStore %i9 %int_0
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %149 = OpLoad %int %i9
+        %150 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %151 = OpLoad %int %150
+        %152 = OpSLessThan %bool %149 %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %155
+        %154 = OpLabel
+               OpBranch %153
+        %155 = OpLabel
+               OpBranch %146
+        %153 = OpLabel
+        %156 = OpLoad %int %a
+        %158 = OpIAdd %int %156 %int_1
+               OpStore %a %158
+               OpBranch %147
+        %147 = OpLabel
+        %159 = OpLoad %int %i9
+        %160 = OpIAdd %int %159 %int_1
+               OpStore %i9 %160
+               OpBranch %145
+        %146 = OpLabel
+               OpBranch %136
+        %136 = OpLabel
+        %161 = OpLoad %int %i8_1
+        %162 = OpIAdd %int %161 %int_1
+               OpStore %i8_1 %162
+               OpBranch %134
+        %135 = OpLabel
+               OpBranch %125
+        %125 = OpLabel
+        %163 = OpLoad %int %i7
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %i7 %164
+               OpBranch %123
+        %124 = OpLabel
+               OpBranch %114
+        %114 = OpLabel
+        %165 = OpLoad %int %i6
+        %166 = OpIAdd %int %165 %int_1
+               OpStore %i6 %166
+               OpBranch %112
+        %113 = OpLabel
+               OpBranch %103
+        %104 = OpLabel
+               OpBranch %102
+        %103 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+        %167 = OpLoad %int %i5
+        %168 = OpIAdd %int %167 %int_1
+               OpStore %i5 %168
+               OpBranch %91
+         %92 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+        %169 = OpLoad %int %i4
+        %170 = OpIAdd %int %169 %int_1
+               OpStore %i4 %170
+               OpBranch %80
+         %81 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+        %171 = OpLoad %int %i3
+        %172 = OpIAdd %int %171 %int_1
+               OpStore %i3 %172
+               OpBranch %67
+         %68 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+        %173 = OpLoad %int %i2
+        %174 = OpIAdd %int %173 %int_1
+               OpStore %i2 %174
+               OpBranch %56
+         %57 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+        %175 = OpLoad %int %i1
+        %176 = OpIAdd %int %175 %int_1
+               OpStore %i1 %176
+               OpBranch %45
+         %46 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+        %177 = OpLoad %int %i0
+        %178 = OpIAdd %int %177 %int_1
+               OpStore %i0 %178
+               OpBranch %30
+         %31 = OpLabel
+        %179 = OpLoad %int %a
+        %181 = OpIEqual %bool %179 %int_3
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %184
+        %183 = OpLabel
+               OpStore %x_GLF_color %187
+               OpBranch %182
+        %184 = OpLabel
+               OpStore %x_GLF_color %188
+               OpBranch %182
+        %182 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %189
+%tint_symbol = OpFunctionParameter %main_out
+        %193 = OpLabel
+        %194 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %194
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %196 = OpLabel
+        %197 = OpFunctionCall %void %main_1
+        %199 = OpLoad %v4float %x_GLF_color
+        %200 = OpCompositeConstruct %main_out %199
+        %198 = OpFunctionCall %void %tint_symbol_2 %200
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..66f0852
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,191 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i0 : i32;
+  var i1 : i32;
+  var i2 : i32;
+  var i3 : i32;
+  var i4 : i32;
+  var i5 : i32;
+  var i6 : i32;
+  var i7 : i32;
+  var i8_1 : i32;
+  var i9 : i32;
+  a = 0;
+  i0 = 0;
+  loop {
+    let x_40 : i32 = i0;
+    let x_42 : i32 = x_7.one;
+    if ((x_40 < x_42)) {
+    } else {
+      break;
+    }
+    i1 = 0;
+    loop {
+      let x_49 : i32 = i1;
+      let x_51 : i32 = x_7.one;
+      if ((x_49 < x_51)) {
+      } else {
+        break;
+      }
+      i2 = 0;
+      loop {
+        let x_58 : i32 = i2;
+        let x_60 : i32 = x_7.one;
+        if ((x_58 < x_60)) {
+        } else {
+          break;
+        }
+        i3 = 0;
+        loop {
+          let x_67 : i32 = i3;
+          let x_69 : i32 = x_7.one;
+          if ((x_67 < (x_69 + 2))) {
+          } else {
+            break;
+          }
+          i4 = 0;
+          loop {
+            let x_77 : i32 = i4;
+            let x_79 : i32 = x_7.one;
+            if ((x_77 < x_79)) {
+            } else {
+              break;
+            }
+            i5 = 0;
+            loop {
+              let x_86 : i32 = i5;
+              let x_88 : i32 = x_7.one;
+              if ((x_86 < x_88)) {
+              } else {
+                break;
+              }
+              loop {
+                let x_96 : i32 = x_7.one;
+                if ((x_96 > 0)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                loop {
+                  let x_103 : i32 = i6;
+                  let x_105 : i32 = x_7.one;
+                  if ((x_103 < x_105)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  loop {
+                    let x_112 : i32 = i7;
+                    let x_114 : i32 = x_7.one;
+                    if ((x_112 < x_114)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    loop {
+                      let x_121 : i32 = i8_1;
+                      let x_123 : i32 = x_7.one;
+                      if ((x_121 < x_123)) {
+                      } else {
+                        break;
+                      }
+                      i9 = 0;
+                      loop {
+                        let x_130 : i32 = i9;
+                        let x_132 : i32 = x_7.one;
+                        if ((x_130 < x_132)) {
+                        } else {
+                          break;
+                        }
+                        let x_135 : i32 = a;
+                        a = (x_135 + 1);
+
+                        continuing {
+                          let x_137 : i32 = i9;
+                          i9 = (x_137 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_139 : i32 = i8_1;
+                        i8_1 = (x_139 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_141 : i32 = i7;
+                      i7 = (x_141 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_143 : i32 = i6;
+                    i6 = (x_143 + 1);
+                  }
+                }
+                break;
+              }
+
+              continuing {
+                let x_145 : i32 = i5;
+                i5 = (x_145 + 1);
+              }
+            }
+
+            continuing {
+              let x_147 : i32 = i4;
+              i4 = (x_147 + 1);
+            }
+          }
+
+          continuing {
+            let x_149 : i32 = i3;
+            i3 = (x_149 + 1);
+          }
+        }
+
+        continuing {
+          let x_151 : i32 = i2;
+          i2 = (x_151 + 1);
+        }
+      }
+
+      continuing {
+        let x_153 : i32 = i1;
+        i1 = (x_153 + 1);
+      }
+    }
+
+    continuing {
+      let x_155 : i32 = i0;
+      i0 = (x_155 + 1);
+    }
+  }
+  let x_157 : i32 = a;
+  if ((x_157 == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
new file mode 100644
index 0000000..66f0852
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
@@ -0,0 +1,191 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i0 : i32;
+  var i1 : i32;
+  var i2 : i32;
+  var i3 : i32;
+  var i4 : i32;
+  var i5 : i32;
+  var i6 : i32;
+  var i7 : i32;
+  var i8_1 : i32;
+  var i9 : i32;
+  a = 0;
+  i0 = 0;
+  loop {
+    let x_40 : i32 = i0;
+    let x_42 : i32 = x_7.one;
+    if ((x_40 < x_42)) {
+    } else {
+      break;
+    }
+    i1 = 0;
+    loop {
+      let x_49 : i32 = i1;
+      let x_51 : i32 = x_7.one;
+      if ((x_49 < x_51)) {
+      } else {
+        break;
+      }
+      i2 = 0;
+      loop {
+        let x_58 : i32 = i2;
+        let x_60 : i32 = x_7.one;
+        if ((x_58 < x_60)) {
+        } else {
+          break;
+        }
+        i3 = 0;
+        loop {
+          let x_67 : i32 = i3;
+          let x_69 : i32 = x_7.one;
+          if ((x_67 < (x_69 + 2))) {
+          } else {
+            break;
+          }
+          i4 = 0;
+          loop {
+            let x_77 : i32 = i4;
+            let x_79 : i32 = x_7.one;
+            if ((x_77 < x_79)) {
+            } else {
+              break;
+            }
+            i5 = 0;
+            loop {
+              let x_86 : i32 = i5;
+              let x_88 : i32 = x_7.one;
+              if ((x_86 < x_88)) {
+              } else {
+                break;
+              }
+              loop {
+                let x_96 : i32 = x_7.one;
+                if ((x_96 > 0)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                loop {
+                  let x_103 : i32 = i6;
+                  let x_105 : i32 = x_7.one;
+                  if ((x_103 < x_105)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  loop {
+                    let x_112 : i32 = i7;
+                    let x_114 : i32 = x_7.one;
+                    if ((x_112 < x_114)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    loop {
+                      let x_121 : i32 = i8_1;
+                      let x_123 : i32 = x_7.one;
+                      if ((x_121 < x_123)) {
+                      } else {
+                        break;
+                      }
+                      i9 = 0;
+                      loop {
+                        let x_130 : i32 = i9;
+                        let x_132 : i32 = x_7.one;
+                        if ((x_130 < x_132)) {
+                        } else {
+                          break;
+                        }
+                        let x_135 : i32 = a;
+                        a = (x_135 + 1);
+
+                        continuing {
+                          let x_137 : i32 = i9;
+                          i9 = (x_137 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_139 : i32 = i8_1;
+                        i8_1 = (x_139 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_141 : i32 = i7;
+                      i7 = (x_141 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_143 : i32 = i6;
+                    i6 = (x_143 + 1);
+                  }
+                }
+                break;
+              }
+
+              continuing {
+                let x_145 : i32 = i5;
+                i5 = (x_145 + 1);
+              }
+            }
+
+            continuing {
+              let x_147 : i32 = i4;
+              i4 = (x_147 + 1);
+            }
+          }
+
+          continuing {
+            let x_149 : i32 = i3;
+            i3 = (x_149 + 1);
+          }
+        }
+
+        continuing {
+          let x_151 : i32 = i2;
+          i2 = (x_151 + 1);
+        }
+      }
+
+      continuing {
+        let x_153 : i32 = i1;
+        i1 = (x_153 + 1);
+      }
+    }
+
+    continuing {
+      let x_155 : i32 = i0;
+      i0 = (x_155 + 1);
+    }
+  }
+  let x_157 : i32 = a;
+  if ((x_157 == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9982cde
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,168 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i0 = 0;
+  int i1 = 0;
+  int i2 = 0;
+  int i3 = 0;
+  int i4 = 0;
+  int i5 = 0;
+  int i6 = 0;
+  int i7 = 0;
+  int i8_1 = 0;
+  int i9 = 0;
+  a = 0;
+  i0 = 0;
+  while (true) {
+    const int x_40 = i0;
+    const int x_42 = asint(x_7[0].x);
+    if ((x_40 < x_42)) {
+    } else {
+      break;
+    }
+    i1 = 0;
+    while (true) {
+      const int x_49 = i1;
+      const int x_51 = asint(x_7[0].x);
+      if ((x_49 < x_51)) {
+      } else {
+        break;
+      }
+      i2 = 0;
+      while (true) {
+        const int x_58 = i2;
+        const int x_60 = asint(x_7[0].x);
+        if ((x_58 < x_60)) {
+        } else {
+          break;
+        }
+        i3 = 0;
+        while (true) {
+          const int x_67 = i3;
+          const int x_69 = asint(x_7[0].x);
+          if ((x_67 < (x_69 + 2))) {
+          } else {
+            break;
+          }
+          i4 = 0;
+          while (true) {
+            const int x_77 = i4;
+            const int x_79 = asint(x_7[0].x);
+            if ((x_77 < x_79)) {
+            } else {
+              break;
+            }
+            i5 = 0;
+            while (true) {
+              const int x_86 = i5;
+              const int x_88 = asint(x_7[0].x);
+              if ((x_86 < x_88)) {
+              } else {
+                break;
+              }
+              while (true) {
+                const int x_96 = asint(x_7[0].x);
+                if ((x_96 > 0)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                while (true) {
+                  const int x_103 = i6;
+                  const int x_105 = asint(x_7[0].x);
+                  if ((x_103 < x_105)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  while (true) {
+                    const int x_112 = i7;
+                    const int x_114 = asint(x_7[0].x);
+                    if ((x_112 < x_114)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    while (true) {
+                      const int x_121 = i8_1;
+                      const int x_123 = asint(x_7[0].x);
+                      if ((x_121 < x_123)) {
+                      } else {
+                        break;
+                      }
+                      i9 = 0;
+                      while (true) {
+                        const int x_130 = i9;
+                        const int x_132 = asint(x_7[0].x);
+                        if ((x_130 < x_132)) {
+                        } else {
+                          break;
+                        }
+                        a = (a + 1);
+                        {
+                          i9 = (i9 + 1);
+                        }
+                      }
+                      {
+                        i8_1 = (i8_1 + 1);
+                      }
+                    }
+                    {
+                      i7 = (i7 + 1);
+                    }
+                  }
+                  {
+                    i6 = (i6 + 1);
+                  }
+                }
+                break;
+              }
+              {
+                i5 = (i5 + 1);
+              }
+            }
+            {
+              i4 = (i4 + 1);
+            }
+          }
+          {
+            i3 = (i3 + 1);
+          }
+        }
+        {
+          i2 = (i2 + 1);
+        }
+      }
+      {
+        i1 = (i1 + 1);
+      }
+    }
+    {
+      i0 = (i0 + 1);
+    }
+  }
+  if ((a == 3)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..77cd3d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,183 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i0 = 0;
+  int i1 = 0;
+  int i2 = 0;
+  int i3 = 0;
+  int i4 = 0;
+  int i5 = 0;
+  int i6 = 0;
+  int i7 = 0;
+  int i8_1 = 0;
+  int i9 = 0;
+  a = 0;
+  i0 = 0;
+  while (true) {
+    int const x_40 = i0;
+    int const x_42 = x_7.one;
+    if ((x_40 < x_42)) {
+    } else {
+      break;
+    }
+    i1 = 0;
+    while (true) {
+      int const x_49 = i1;
+      int const x_51 = x_7.one;
+      if ((x_49 < x_51)) {
+      } else {
+        break;
+      }
+      i2 = 0;
+      while (true) {
+        int const x_58 = i2;
+        int const x_60 = x_7.one;
+        if ((x_58 < x_60)) {
+        } else {
+          break;
+        }
+        i3 = 0;
+        while (true) {
+          int const x_67 = i3;
+          int const x_69 = x_7.one;
+          if ((x_67 < (x_69 + 2))) {
+          } else {
+            break;
+          }
+          i4 = 0;
+          while (true) {
+            int const x_77 = i4;
+            int const x_79 = x_7.one;
+            if ((x_77 < x_79)) {
+            } else {
+              break;
+            }
+            i5 = 0;
+            while (true) {
+              int const x_86 = i5;
+              int const x_88 = x_7.one;
+              if ((x_86 < x_88)) {
+              } else {
+                break;
+              }
+              while (true) {
+                int const x_96 = x_7.one;
+                if ((x_96 > 0)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                while (true) {
+                  int const x_103 = i6;
+                  int const x_105 = x_7.one;
+                  if ((x_103 < x_105)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  while (true) {
+                    int const x_112 = i7;
+                    int const x_114 = x_7.one;
+                    if ((x_112 < x_114)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    while (true) {
+                      int const x_121 = i8_1;
+                      int const x_123 = x_7.one;
+                      if ((x_121 < x_123)) {
+                      } else {
+                        break;
+                      }
+                      i9 = 0;
+                      while (true) {
+                        int const x_130 = i9;
+                        int const x_132 = x_7.one;
+                        if ((x_130 < x_132)) {
+                        } else {
+                          break;
+                        }
+                        int const x_135 = a;
+                        a = (x_135 + 1);
+                        {
+                          int const x_137 = i9;
+                          i9 = (x_137 + 1);
+                        }
+                      }
+                      {
+                        int const x_139 = i8_1;
+                        i8_1 = (x_139 + 1);
+                      }
+                    }
+                    {
+                      int const x_141 = i7;
+                      i7 = (x_141 + 1);
+                    }
+                  }
+                  {
+                    int const x_143 = i6;
+                    i6 = (x_143 + 1);
+                  }
+                }
+                break;
+              }
+              {
+                int const x_145 = i5;
+                i5 = (x_145 + 1);
+              }
+            }
+            {
+              int const x_147 = i4;
+              i4 = (x_147 + 1);
+            }
+          }
+          {
+            int const x_149 = i3;
+            i3 = (x_149 + 1);
+          }
+        }
+        {
+          int const x_151 = i2;
+          i2 = (x_151 + 1);
+        }
+      }
+      {
+        int const x_153 = i1;
+        i1 = (x_153 + 1);
+      }
+    }
+    {
+      int const x_155 = i0;
+      i0 = (x_155 + 1);
+    }
+  }
+  int const x_157 = a;
+  if ((x_157 == 3)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..854519d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,372 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 201
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i0 "i0"
+               OpName %i1 "i1"
+               OpName %i2 "i2"
+               OpName %i3 "i3"
+               OpName %i4 "i4"
+               OpName %i5 "i5"
+               OpName %i6 "i6"
+               OpName %i7 "i7"
+               OpName %i8_1 "i8_1"
+               OpName %i9 "i9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %187 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %188 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %189 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+         %i0 = OpVariable %_ptr_Function_int Function %18
+         %i1 = OpVariable %_ptr_Function_int Function %18
+         %i2 = OpVariable %_ptr_Function_int Function %18
+         %i3 = OpVariable %_ptr_Function_int Function %18
+         %i4 = OpVariable %_ptr_Function_int Function %18
+         %i5 = OpVariable %_ptr_Function_int Function %18
+         %i6 = OpVariable %_ptr_Function_int Function %18
+         %i7 = OpVariable %_ptr_Function_int Function %18
+       %i8_1 = OpVariable %_ptr_Function_int Function %18
+         %i9 = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+               OpStore %i0 %int_0
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i0
+         %38 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %39 = OpLoad %int %38
+         %40 = OpSLessThan %bool %34 %39
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %44
+         %43 = OpLabel
+               OpBranch %42
+         %44 = OpLabel
+               OpBranch %31
+         %42 = OpLabel
+               OpStore %i1 %int_0
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %i1
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %51 = OpLoad %int %50
+         %52 = OpSLessThan %bool %49 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %46
+         %53 = OpLabel
+               OpStore %i2 %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpLoad %int %i2
+         %61 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %62 = OpLoad %int %61
+         %63 = OpSLessThan %bool %60 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %57
+         %64 = OpLabel
+               OpStore %i3 %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i3
+         %72 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %73 = OpLoad %int %72
+         %75 = OpIAdd %int %73 %int_2
+         %76 = OpSLessThan %bool %71 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %68
+         %77 = OpLabel
+               OpStore %i4 %int_0
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %i4
+         %85 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSLessThan %bool %84 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+               OpBranch %88
+         %90 = OpLabel
+               OpBranch %81
+         %88 = OpLabel
+               OpStore %i5 %int_0
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i5
+         %96 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %97 = OpLoad %int %96
+         %98 = OpSLessThan %bool %95 %97
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %92
+         %99 = OpLabel
+               OpBranch %102
+        %102 = OpLabel
+               OpLoopMerge %103 %104 None
+               OpBranch %105
+        %105 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %107 = OpLoad %int %106
+        %108 = OpSGreaterThan %bool %107 %int_0
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %111
+        %110 = OpLabel
+               OpBranch %109
+        %111 = OpLabel
+               OpBranch %103
+        %109 = OpLabel
+               OpStore %i6 %int_0
+               OpBranch %112
+        %112 = OpLabel
+               OpLoopMerge %113 %114 None
+               OpBranch %115
+        %115 = OpLabel
+        %116 = OpLoad %int %i6
+        %117 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %118 = OpLoad %int %117
+        %119 = OpSLessThan %bool %116 %118
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+               OpBranch %120
+        %122 = OpLabel
+               OpBranch %113
+        %120 = OpLabel
+               OpStore %i7 %int_0
+               OpBranch %123
+        %123 = OpLabel
+               OpLoopMerge %124 %125 None
+               OpBranch %126
+        %126 = OpLabel
+        %127 = OpLoad %int %i7
+        %128 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %129 = OpLoad %int %128
+        %130 = OpSLessThan %bool %127 %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+               OpBranch %131
+        %133 = OpLabel
+               OpBranch %124
+        %131 = OpLabel
+               OpStore %i8_1 %int_0
+               OpBranch %134
+        %134 = OpLabel
+               OpLoopMerge %135 %136 None
+               OpBranch %137
+        %137 = OpLabel
+        %138 = OpLoad %int %i8_1
+        %139 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %140 = OpLoad %int %139
+        %141 = OpSLessThan %bool %138 %140
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %135
+        %142 = OpLabel
+               OpStore %i9 %int_0
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %149 = OpLoad %int %i9
+        %150 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+        %151 = OpLoad %int %150
+        %152 = OpSLessThan %bool %149 %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %155
+        %154 = OpLabel
+               OpBranch %153
+        %155 = OpLabel
+               OpBranch %146
+        %153 = OpLabel
+        %156 = OpLoad %int %a
+        %158 = OpIAdd %int %156 %int_1
+               OpStore %a %158
+               OpBranch %147
+        %147 = OpLabel
+        %159 = OpLoad %int %i9
+        %160 = OpIAdd %int %159 %int_1
+               OpStore %i9 %160
+               OpBranch %145
+        %146 = OpLabel
+               OpBranch %136
+        %136 = OpLabel
+        %161 = OpLoad %int %i8_1
+        %162 = OpIAdd %int %161 %int_1
+               OpStore %i8_1 %162
+               OpBranch %134
+        %135 = OpLabel
+               OpBranch %125
+        %125 = OpLabel
+        %163 = OpLoad %int %i7
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %i7 %164
+               OpBranch %123
+        %124 = OpLabel
+               OpBranch %114
+        %114 = OpLabel
+        %165 = OpLoad %int %i6
+        %166 = OpIAdd %int %165 %int_1
+               OpStore %i6 %166
+               OpBranch %112
+        %113 = OpLabel
+               OpBranch %103
+        %104 = OpLabel
+               OpBranch %102
+        %103 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+        %167 = OpLoad %int %i5
+        %168 = OpIAdd %int %167 %int_1
+               OpStore %i5 %168
+               OpBranch %91
+         %92 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+        %169 = OpLoad %int %i4
+        %170 = OpIAdd %int %169 %int_1
+               OpStore %i4 %170
+               OpBranch %80
+         %81 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+        %171 = OpLoad %int %i3
+        %172 = OpIAdd %int %171 %int_1
+               OpStore %i3 %172
+               OpBranch %67
+         %68 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+        %173 = OpLoad %int %i2
+        %174 = OpIAdd %int %173 %int_1
+               OpStore %i2 %174
+               OpBranch %56
+         %57 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+        %175 = OpLoad %int %i1
+        %176 = OpIAdd %int %175 %int_1
+               OpStore %i1 %176
+               OpBranch %45
+         %46 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+        %177 = OpLoad %int %i0
+        %178 = OpIAdd %int %177 %int_1
+               OpStore %i0 %178
+               OpBranch %30
+         %31 = OpLabel
+        %179 = OpLoad %int %a
+        %181 = OpIEqual %bool %179 %int_3
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %184
+        %183 = OpLabel
+               OpStore %x_GLF_color %187
+               OpBranch %182
+        %184 = OpLabel
+               OpStore %x_GLF_color %188
+               OpBranch %182
+        %182 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %189
+%tint_symbol = OpFunctionParameter %main_out
+        %193 = OpLabel
+        %194 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %194
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %196 = OpLabel
+        %197 = OpFunctionCall %void %main_1
+        %199 = OpLoad %v4float %x_GLF_color
+        %200 = OpCompositeConstruct %main_out %199
+        %198 = OpFunctionCall %void %tint_symbol_2 %200
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..66f0852
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,191 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i0 : i32;
+  var i1 : i32;
+  var i2 : i32;
+  var i3 : i32;
+  var i4 : i32;
+  var i5 : i32;
+  var i6 : i32;
+  var i7 : i32;
+  var i8_1 : i32;
+  var i9 : i32;
+  a = 0;
+  i0 = 0;
+  loop {
+    let x_40 : i32 = i0;
+    let x_42 : i32 = x_7.one;
+    if ((x_40 < x_42)) {
+    } else {
+      break;
+    }
+    i1 = 0;
+    loop {
+      let x_49 : i32 = i1;
+      let x_51 : i32 = x_7.one;
+      if ((x_49 < x_51)) {
+      } else {
+        break;
+      }
+      i2 = 0;
+      loop {
+        let x_58 : i32 = i2;
+        let x_60 : i32 = x_7.one;
+        if ((x_58 < x_60)) {
+        } else {
+          break;
+        }
+        i3 = 0;
+        loop {
+          let x_67 : i32 = i3;
+          let x_69 : i32 = x_7.one;
+          if ((x_67 < (x_69 + 2))) {
+          } else {
+            break;
+          }
+          i4 = 0;
+          loop {
+            let x_77 : i32 = i4;
+            let x_79 : i32 = x_7.one;
+            if ((x_77 < x_79)) {
+            } else {
+              break;
+            }
+            i5 = 0;
+            loop {
+              let x_86 : i32 = i5;
+              let x_88 : i32 = x_7.one;
+              if ((x_86 < x_88)) {
+              } else {
+                break;
+              }
+              loop {
+                let x_96 : i32 = x_7.one;
+                if ((x_96 > 0)) {
+                } else {
+                  break;
+                }
+                i6 = 0;
+                loop {
+                  let x_103 : i32 = i6;
+                  let x_105 : i32 = x_7.one;
+                  if ((x_103 < x_105)) {
+                  } else {
+                    break;
+                  }
+                  i7 = 0;
+                  loop {
+                    let x_112 : i32 = i7;
+                    let x_114 : i32 = x_7.one;
+                    if ((x_112 < x_114)) {
+                    } else {
+                      break;
+                    }
+                    i8_1 = 0;
+                    loop {
+                      let x_121 : i32 = i8_1;
+                      let x_123 : i32 = x_7.one;
+                      if ((x_121 < x_123)) {
+                      } else {
+                        break;
+                      }
+                      i9 = 0;
+                      loop {
+                        let x_130 : i32 = i9;
+                        let x_132 : i32 = x_7.one;
+                        if ((x_130 < x_132)) {
+                        } else {
+                          break;
+                        }
+                        let x_135 : i32 = a;
+                        a = (x_135 + 1);
+
+                        continuing {
+                          let x_137 : i32 = i9;
+                          i9 = (x_137 + 1);
+                        }
+                      }
+
+                      continuing {
+                        let x_139 : i32 = i8_1;
+                        i8_1 = (x_139 + 1);
+                      }
+                    }
+
+                    continuing {
+                      let x_141 : i32 = i7;
+                      i7 = (x_141 + 1);
+                    }
+                  }
+
+                  continuing {
+                    let x_143 : i32 = i6;
+                    i6 = (x_143 + 1);
+                  }
+                }
+                break;
+              }
+
+              continuing {
+                let x_145 : i32 = i5;
+                i5 = (x_145 + 1);
+              }
+            }
+
+            continuing {
+              let x_147 : i32 = i4;
+              i4 = (x_147 + 1);
+            }
+          }
+
+          continuing {
+            let x_149 : i32 = i3;
+            i3 = (x_149 + 1);
+          }
+        }
+
+        continuing {
+          let x_151 : i32 = i2;
+          i2 = (x_151 + 1);
+        }
+      }
+
+      continuing {
+        let x_153 : i32 = i1;
+        i1 = (x_153 + 1);
+      }
+    }
+
+    continuing {
+      let x_155 : i32 = i0;
+      i0 = (x_155 + 1);
+    }
+  }
+  let x_157 : i32 = a;
+  if ((x_157 == 3)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm
new file mode 100644
index 0000000..5c74e57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm
@@ -0,0 +1,93 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf0 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+       %main = OpFunction %void None %10
+         %26 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+          %b = OpVariable %_ptr_Function_float Function
+         %27 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %28 = OpLoad %float %27
+         %29 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %30 = OpLoad %float %29
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %32 = OpLoad %float %31
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %34 = OpLoad %float %33
+         %35 = OpFOrdGreaterThan %bool %32 %34
+         %36 = OpSelect %float %35 %30 %28
+               OpStore %a %36
+         %37 = OpLoad %float %a
+         %38 = OpExtInst %float %1 Log %37
+         %39 = OpExtInst %float %1 Cos %38
+               OpStore %b %39
+         %40 = OpLoad %float %b
+         %41 = OpCompositeConstruct %v4float %40 %40 %40 %40
+               OpStore %_GLF_color %41
+         %42 = OpLoad %float %b
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpFOrdGreaterThan %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+         %48 = OpLoad %float %b
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpFOrdLessThan %bool %48 %50
+               OpBranch %46
+         %46 = OpLabel
+         %52 = OpPhi %bool %45 %26 %51 %47
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %56 = OpLoad %float %55
+         %57 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_4
+         %58 = OpLoad %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_4
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %62 = OpLoad %float %61
+         %63 = OpCompositeConstruct %v4float %56 %58 %60 %62
+               OpStore %_GLF_color %63
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..7fa9952
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,52 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  const float x_28 = asfloat(x_6[2].x);
+  const float x_30 = asfloat(x_6[3].x);
+  const float x_32 = asfloat(x_6[3].x);
+  const float x_34 = asfloat(x_6[2].x);
+  a = ((x_32 > x_34) ? x_30 : x_28);
+  b = cos(log(a));
+  const float x_40 = b;
+  x_GLF_color = float4(x_40, x_40, x_40, x_40);
+  const float x_42 = b;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const bool x_45 = (x_42 > x_44);
+  x_52_phi = x_45;
+  if (x_45) {
+    const float x_48 = b;
+    const float x_50 = asfloat(x_6[1].x);
+    x_51 = (x_48 < x_50);
+    x_52_phi = x_51;
+  }
+  if (x_52_phi) {
+    const float x_56 = asfloat(x_6[3].x);
+    const float x_58 = asfloat(x_6[4].x);
+    const float x_60 = asfloat(x_6[4].x);
+    const float x_62 = asfloat(x_6[3].x);
+    x_GLF_color = float4(x_56, x_58, x_60, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b2905ce
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float b = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  float const x_28 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_30 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_32 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  a = select(x_28, x_30, (x_32 > x_34));
+  float const x_37 = a;
+  b = cos(log(x_37));
+  float const x_40 = b;
+  *(tint_symbol_4) = float4(x_40, x_40, x_40, x_40);
+  float const x_42 = b;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_45 = (x_42 > x_44);
+  x_52_phi = x_45;
+  if (x_45) {
+    float const x_48 = b;
+    float const x_50 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    x_51 = (x_48 < x_50);
+    x_52_phi = x_51;
+  }
+  bool const x_52 = x_52_phi;
+  if (x_52) {
+    float const x_56 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_58 = x_6.x_GLF_uniform_float_values.arr[4].el;
+    float const x_60 = x_6.x_GLF_uniform_float_values.arr[4].el;
+    float const x_62 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    *(tint_symbol_4) = float4(x_56, x_58, x_60, x_62);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f34e73c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,137 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 86
+; Schema: 0
+               OpCapability Shader
+         %44 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_51 "x_51"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf0 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %25 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+          %b = OpVariable %_ptr_Function_float Function %20
+       %x_51 = OpVariable %_ptr_Function_bool Function %25
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %25
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %32 = OpLoad %float %31
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %39 = OpLoad %float %38
+         %41 = OpFOrdGreaterThan %bool %37 %39
+         %40 = OpSelect %float %41 %35 %32
+               OpStore %a %40
+         %42 = OpLoad %float %a
+         %45 = OpExtInst %float %44 Log %42
+         %43 = OpExtInst %float %44 Cos %45
+               OpStore %b %43
+         %46 = OpLoad %float %b
+         %47 = OpCompositeConstruct %v4float %46 %46 %46 %46
+               OpStore %x_GLF_color %47
+         %48 = OpLoad %float %b
+         %50 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpFOrdGreaterThan %bool %48 %51
+               OpStore %x_52_phi %52
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+         %55 = OpLoad %float %b
+         %57 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %58 = OpLoad %float %57
+         %59 = OpFOrdLessThan %bool %55 %58
+               OpStore %x_51 %59
+         %60 = OpLoad %bool %x_51
+               OpStore %x_52_phi %60
+               OpBranch %53
+         %53 = OpLabel
+         %61 = OpLoad %bool %x_52_phi
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %65 = OpLoad %float %64
+         %67 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %72 = OpLoad %float %71
+         %73 = OpCompositeConstruct %v4float %65 %68 %70 %72
+               OpStore %x_GLF_color %73
+               OpBranch %62
+         %62 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %74
+%tint_symbol = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %81 = OpLabel
+         %82 = OpFunctionCall %void %main_1
+         %84 = OpLoad %v4float %x_GLF_color
+         %85 = OpCompositeConstruct %main_out %84
+         %83 = OpFunctionCall %void %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b6b2e8d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var x_51 : bool;
+  var x_52_phi : bool;
+  let x_28 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_32 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[2];
+  a = select(x_28, x_30, (x_32 > x_34));
+  let x_37 : f32 = a;
+  b = cos(log(x_37));
+  let x_40 : f32 = b;
+  x_GLF_color = vec4<f32>(x_40, x_40, x_40, x_40);
+  let x_42 : f32 = b;
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_45 : bool = (x_42 > x_44);
+  x_52_phi = x_45;
+  if (x_45) {
+    let x_48 : f32 = b;
+    let x_50 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_51 = (x_48 < x_50);
+    x_52_phi = x_51;
+  }
+  let x_52 : bool = x_52_phi;
+  if (x_52) {
+    let x_56 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_58 : f32 = x_6.x_GLF_uniform_float_values[4];
+    let x_60 : f32 = x_6.x_GLF_uniform_float_values[4];
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_GLF_color = vec4<f32>(x_56, x_58, x_60, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
new file mode 100644
index 0000000..b6b2e8d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var x_51 : bool;
+  var x_52_phi : bool;
+  let x_28 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_32 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[2];
+  a = select(x_28, x_30, (x_32 > x_34));
+  let x_37 : f32 = a;
+  b = cos(log(x_37));
+  let x_40 : f32 = b;
+  x_GLF_color = vec4<f32>(x_40, x_40, x_40, x_40);
+  let x_42 : f32 = b;
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_45 : bool = (x_42 > x_44);
+  x_52_phi = x_45;
+  if (x_45) {
+    let x_48 : f32 = b;
+    let x_50 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_51 = (x_48 < x_50);
+    x_52_phi = x_51;
+  }
+  let x_52 : bool = x_52_phi;
+  if (x_52) {
+    let x_56 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_58 : f32 = x_6.x_GLF_uniform_float_values[4];
+    let x_60 : f32 = x_6.x_GLF_uniform_float_values[4];
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_GLF_color = vec4<f32>(x_56, x_58, x_60, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7fa9952
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,52 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  const float x_28 = asfloat(x_6[2].x);
+  const float x_30 = asfloat(x_6[3].x);
+  const float x_32 = asfloat(x_6[3].x);
+  const float x_34 = asfloat(x_6[2].x);
+  a = ((x_32 > x_34) ? x_30 : x_28);
+  b = cos(log(a));
+  const float x_40 = b;
+  x_GLF_color = float4(x_40, x_40, x_40, x_40);
+  const float x_42 = b;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const bool x_45 = (x_42 > x_44);
+  x_52_phi = x_45;
+  if (x_45) {
+    const float x_48 = b;
+    const float x_50 = asfloat(x_6[1].x);
+    x_51 = (x_48 < x_50);
+    x_52_phi = x_51;
+  }
+  if (x_52_phi) {
+    const float x_56 = asfloat(x_6[3].x);
+    const float x_58 = asfloat(x_6[4].x);
+    const float x_60 = asfloat(x_6[4].x);
+    const float x_62 = asfloat(x_6[3].x);
+    x_GLF_color = float4(x_56, x_58, x_60, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b2905ce
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float b = 0.0f;
+  bool x_51 = false;
+  bool x_52_phi = false;
+  float const x_28 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_30 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_32 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  a = select(x_28, x_30, (x_32 > x_34));
+  float const x_37 = a;
+  b = cos(log(x_37));
+  float const x_40 = b;
+  *(tint_symbol_4) = float4(x_40, x_40, x_40, x_40);
+  float const x_42 = b;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_45 = (x_42 > x_44);
+  x_52_phi = x_45;
+  if (x_45) {
+    float const x_48 = b;
+    float const x_50 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    x_51 = (x_48 < x_50);
+    x_52_phi = x_51;
+  }
+  bool const x_52 = x_52_phi;
+  if (x_52) {
+    float const x_56 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    float const x_58 = x_6.x_GLF_uniform_float_values.arr[4].el;
+    float const x_60 = x_6.x_GLF_uniform_float_values.arr[4].el;
+    float const x_62 = x_6.x_GLF_uniform_float_values.arr[3].el;
+    *(tint_symbol_4) = float4(x_56, x_58, x_60, x_62);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f34e73c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,137 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 86
+; Schema: 0
+               OpCapability Shader
+         %44 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_51 "x_51"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf0 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %25 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+          %b = OpVariable %_ptr_Function_float Function %20
+       %x_51 = OpVariable %_ptr_Function_bool Function %25
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %25
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %32 = OpLoad %float %31
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %39 = OpLoad %float %38
+         %41 = OpFOrdGreaterThan %bool %37 %39
+         %40 = OpSelect %float %41 %35 %32
+               OpStore %a %40
+         %42 = OpLoad %float %a
+         %45 = OpExtInst %float %44 Log %42
+         %43 = OpExtInst %float %44 Cos %45
+               OpStore %b %43
+         %46 = OpLoad %float %b
+         %47 = OpCompositeConstruct %v4float %46 %46 %46 %46
+               OpStore %x_GLF_color %47
+         %48 = OpLoad %float %b
+         %50 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %51 = OpLoad %float %50
+         %52 = OpFOrdGreaterThan %bool %48 %51
+               OpStore %x_52_phi %52
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+         %55 = OpLoad %float %b
+         %57 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %58 = OpLoad %float %57
+         %59 = OpFOrdLessThan %bool %55 %58
+               OpStore %x_51 %59
+         %60 = OpLoad %bool %x_51
+               OpStore %x_52_phi %60
+               OpBranch %53
+         %53 = OpLabel
+         %61 = OpLoad %bool %x_52_phi
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %65 = OpLoad %float %64
+         %67 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_4
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %72 = OpLoad %float %71
+         %73 = OpCompositeConstruct %v4float %65 %68 %70 %72
+               OpStore %x_GLF_color %73
+               OpBranch %62
+         %62 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %74
+%tint_symbol = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %81 = OpLabel
+         %82 = OpFunctionCall %void %main_1
+         %84 = OpLoad %v4float %x_GLF_color
+         %85 = OpCompositeConstruct %main_out %84
+         %83 = OpFunctionCall %void %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b6b2e8d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,56 @@
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  var x_51 : bool;
+  var x_52_phi : bool;
+  let x_28 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_32 : f32 = x_6.x_GLF_uniform_float_values[3];
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[2];
+  a = select(x_28, x_30, (x_32 > x_34));
+  let x_37 : f32 = a;
+  b = cos(log(x_37));
+  let x_40 : f32 = b;
+  x_GLF_color = vec4<f32>(x_40, x_40, x_40, x_40);
+  let x_42 : f32 = b;
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_45 : bool = (x_42 > x_44);
+  x_52_phi = x_45;
+  if (x_45) {
+    let x_48 : f32 = b;
+    let x_50 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_51 = (x_48 < x_50);
+    x_52_phi = x_51;
+  }
+  let x_52 : bool = x_52_phi;
+  if (x_52) {
+    let x_56 : f32 = x_6.x_GLF_uniform_float_values[3];
+    let x_58 : f32 = x_6.x_GLF_uniform_float_values[4];
+    let x_60 : f32 = x_6.x_GLF_uniform_float_values[4];
+    let x_62 : f32 = x_6.x_GLF_uniform_float_values[3];
+    x_GLF_color = vec4<f32>(x_56, x_58, x_60, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm
new file mode 100644
index 0000000..fc29c37
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm
@@ -0,0 +1,61 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %v "v"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %23 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %25 = OpLoad %int %24
+         %26 = OpConvertSToF %float %25
+         %27 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpConvertSToF %float %28
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %31 = OpLoad %int %30
+         %32 = OpConvertSToF %float %31
+         %33 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %34 = OpLoad %int %33
+         %35 = OpConvertSToF %float %34
+         %36 = OpCompositeConstruct %v4float %26 %29 %32 %35
+               OpStore %_GLF_color %36
+         %37 = OpLoad %v4float %_GLF_color
+               OpStore %v %37
+               OpStore %_GLF_color %22
+         %38 = OpLoad %v4float %v
+               OpStore %_GLF_color %38
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..84a4567
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,33 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_25 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_28 = asint(x_5[1].x);
+  const int x_31 = asint(x_5[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_34 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_25), float(x_28), float(x_31), float(x_34));
+  v = x_GLF_color;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_GLF_color = v;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b5f5cc9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  int const x_25 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_28 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_31 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_34 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_25), float(x_28), float(x_31), float(x_34));
+  float4 const x_37 = *(tint_symbol_4);
+  v = x_37;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 const x_38 = v;
+  *(tint_symbol_4) = x_38;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..47829d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,93 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %42 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %5
+         %24 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %25 = OpLoad %int %24
+         %27 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %30 = OpLoad %int %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpConvertSToF %float %25
+         %34 = OpConvertSToF %float %28
+         %35 = OpConvertSToF %float %30
+         %36 = OpConvertSToF %float %32
+         %37 = OpCompositeConstruct %v4float %33 %34 %35 %36
+               OpStore %x_GLF_color %37
+         %38 = OpLoad %v4float %x_GLF_color
+               OpStore %v %38
+               OpStore %x_GLF_color %40
+         %41 = OpLoad %v4float %v
+               OpStore %x_GLF_color %41
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %42
+%tint_symbol = OpFunctionParameter %main_out
+         %46 = OpLabel
+         %47 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %47
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %main_1
+         %52 = OpLoad %v4float %x_GLF_color
+         %53 = OpCompositeConstruct %main_out %52
+         %51 = OpFunctionCall %void %tint_symbol_2 %53
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..501fd60
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,36 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_25 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_34 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_25), f32(x_28), f32(x_31), f32(x_34));
+  let x_37 : vec4<f32> = x_GLF_color;
+  v = x_37;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_38 : vec4<f32> = v;
+  x_GLF_color = x_38;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
new file mode 100644
index 0000000..501fd60
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
@@ -0,0 +1,36 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_25 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_34 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_25), f32(x_28), f32(x_31), f32(x_34));
+  let x_37 : vec4<f32> = x_GLF_color;
+  v = x_37;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_38 : vec4<f32> = v;
+  x_GLF_color = x_38;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..84a4567
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,33 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_25 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_28 = asint(x_5[1].x);
+  const int x_31 = asint(x_5[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_34 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  x_GLF_color = float4(float(x_25), float(x_28), float(x_31), float(x_34));
+  v = x_GLF_color;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_GLF_color = v;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b5f5cc9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  int const x_25 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_28 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_31 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  int const x_34 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  *(tint_symbol_4) = float4(float(x_25), float(x_28), float(x_31), float(x_34));
+  float4 const x_37 = *(tint_symbol_4);
+  v = x_37;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 const x_38 = v;
+  *(tint_symbol_4) = x_38;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..47829d0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,93 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %42 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %5
+         %24 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %25 = OpLoad %int %24
+         %27 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %30 = OpLoad %int %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpConvertSToF %float %25
+         %34 = OpConvertSToF %float %28
+         %35 = OpConvertSToF %float %30
+         %36 = OpConvertSToF %float %32
+         %37 = OpCompositeConstruct %v4float %33 %34 %35 %36
+               OpStore %x_GLF_color %37
+         %38 = OpLoad %v4float %x_GLF_color
+               OpStore %v %38
+               OpStore %x_GLF_color %40
+         %41 = OpLoad %v4float %v
+               OpStore %x_GLF_color %41
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %42
+%tint_symbol = OpFunctionParameter %main_out
+         %46 = OpLabel
+         %47 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %47
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %main_1
+         %52 = OpLoad %v4float %x_GLF_color
+         %53 = OpCompositeConstruct %main_out %52
+         %51 = OpFunctionCall %void %tint_symbol_2 %53
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..501fd60
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,36 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_25 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_28 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[1];
+  let x_34 : i32 = x_5.x_GLF_uniform_int_values[0];
+  x_GLF_color = vec4<f32>(f32(x_25), f32(x_28), f32(x_31), f32(x_34));
+  let x_37 : vec4<f32> = x_GLF_color;
+  v = x_37;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_38 : vec4<f32> = v;
+  x_GLF_color = x_38;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm
new file mode 100644
index 0000000..b72cddb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm
@@ -0,0 +1,103 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %c "c"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %25 = OpLabel
+          %c = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %27 = OpLoad %int %26
+               OpStore %c %27
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %36 = OpLoad %int %35
+         %37 = OpSLessThan %bool %34 %36
+               OpBranchConditional %37 %38 %31
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %40 = OpNot %int %39
+               OpStore %c %40
+         %41 = OpLoad %int %c
+         %42 = OpExtInst %int %1 SClamp %41 %int_0 %int_3
+               OpStore %c %42
+               OpBranch %32
+         %32 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpIAdd %int %43 %int_1
+               OpStore %i %44
+               OpBranch %30
+         %31 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %47 %47 %47 %47
+               OpStore %_GLF_color %48
+         %49 = OpLoad %int %c
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpIEqual %bool %49 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %57 %60 %63 %66
+               OpStore %_GLF_color %67
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3011a24
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,54 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int c = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[2].x);
+  c = x_27;
+  const int x_29 = asint(x_6[2].x);
+  i = x_29;
+  while (true) {
+    const int x_34 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_36 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    c = ~(i);
+    c = clamp(c, 0, 3);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_46 = asint(x_6[1].x);
+  const float x_47 = float(x_46);
+  x_GLF_color = float4(x_47, x_47, x_47, x_47);
+  const int x_49 = c;
+  const int x_51 = asint(x_6[1].x);
+  if ((x_49 == x_51)) {
+    const int x_56 = asint(x_6[2].x);
+    const int x_59 = asint(x_6[1].x);
+    const int x_62 = asint(x_6[1].x);
+    const int x_65 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..99d436c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.msl
@@ -0,0 +1,66 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int c = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  c = x_27;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_29;
+  while (true) {
+    int const x_34 = i;
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    int const x_39 = i;
+    c = ~(x_39);
+    int const x_41 = c;
+    c = clamp(x_41, 0, 3);
+    {
+      int const x_43 = i;
+      i = (x_43 + 1);
+    }
+  }
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_47 = float(x_46);
+  *(tint_symbol_4) = float4(x_47, x_47, x_47, x_47);
+  int const x_49 = c;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_49 == x_51)) {
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_59 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a8d0f90
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,142 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 87
+; Schema: 0
+               OpCapability Shader
+         %47 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %75 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %c = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %27 = OpLoad %int %26
+               OpStore %c %27
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %31
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpNot %int %43
+               OpStore %c %44
+         %45 = OpLoad %int %c
+         %46 = OpExtInst %int %47 SClamp %45 %int_0 %int_3
+               OpStore %c %46
+               OpBranch %32
+         %32 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %i %51
+               OpBranch %30
+         %31 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpCompositeConstruct %v4float %54 %54 %54 %54
+               OpStore %x_GLF_color %55
+         %56 = OpLoad %int %c
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpIEqual %bool %56 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %63
+         %71 = OpConvertSToF %float %65
+         %72 = OpConvertSToF %float %67
+         %73 = OpConvertSToF %float %69
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+               OpStore %x_GLF_color %74
+               OpBranch %60
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %75
+%tint_symbol = OpFunctionParameter %main_out
+         %79 = OpLabel
+         %80 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %80
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %82 = OpLabel
+         %83 = OpFunctionCall %void %main_1
+         %85 = OpLoad %v4float %x_GLF_color
+         %86 = OpCompositeConstruct %main_out %85
+         %84 = OpFunctionCall %void %tint_symbol_2 %86
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..97a2a50
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[2];
+  c = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_29;
+  loop {
+    let x_34 : i32 = i;
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = i;
+    c = ~(x_39);
+    let x_41 : i32 = c;
+    c = clamp(x_41, 0, 3);
+
+    continuing {
+      let x_43 : i32 = i;
+      i = (x_43 + 1);
+    }
+  }
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_47 : f32 = f32(x_46);
+  x_GLF_color = vec4<f32>(x_47, x_47, x_47, x_47);
+  let x_49 : i32 = c;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_49 == x_51)) {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
new file mode 100644
index 0000000..97a2a50
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[2];
+  c = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_29;
+  loop {
+    let x_34 : i32 = i;
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = i;
+    c = ~(x_39);
+    let x_41 : i32 = c;
+    c = clamp(x_41, 0, 3);
+
+    continuing {
+      let x_43 : i32 = i;
+      i = (x_43 + 1);
+    }
+  }
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_47 : f32 = f32(x_46);
+  x_GLF_color = vec4<f32>(x_47, x_47, x_47, x_47);
+  let x_49 : i32 = c;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_49 == x_51)) {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3011a24
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,54 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int c = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[2].x);
+  c = x_27;
+  const int x_29 = asint(x_6[2].x);
+  i = x_29;
+  while (true) {
+    const int x_34 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_36 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    c = ~(i);
+    c = clamp(c, 0, 3);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_46 = asint(x_6[1].x);
+  const float x_47 = float(x_46);
+  x_GLF_color = float4(x_47, x_47, x_47, x_47);
+  const int x_49 = c;
+  const int x_51 = asint(x_6[1].x);
+  if ((x_49 == x_51)) {
+    const int x_56 = asint(x_6[2].x);
+    const int x_59 = asint(x_6[1].x);
+    const int x_62 = asint(x_6[1].x);
+    const int x_65 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..99d436c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.msl
@@ -0,0 +1,66 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int c = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  c = x_27;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  i = x_29;
+  while (true) {
+    int const x_34 = i;
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    int const x_39 = i;
+    c = ~(x_39);
+    int const x_41 = c;
+    c = clamp(x_41, 0, 3);
+    {
+      int const x_43 = i;
+      i = (x_43 + 1);
+    }
+  }
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_47 = float(x_46);
+  *(tint_symbol_4) = float4(x_47, x_47, x_47, x_47);
+  int const x_49 = c;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_49 == x_51)) {
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_59 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..a8d0f90
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,142 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 87
+; Schema: 0
+               OpCapability Shader
+         %47 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %75 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %c = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %27 = OpLoad %int %26
+               OpStore %c %27
+         %28 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %34 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %31
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpNot %int %43
+               OpStore %c %44
+         %45 = OpLoad %int %c
+         %46 = OpExtInst %int %47 SClamp %45 %int_0 %int_3
+               OpStore %c %46
+               OpBranch %32
+         %32 = OpLabel
+         %49 = OpLoad %int %i
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %i %51
+               OpBranch %30
+         %31 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpCompositeConstruct %v4float %54 %54 %54 %54
+               OpStore %x_GLF_color %55
+         %56 = OpLoad %int %c
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpIEqual %bool %56 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %63
+         %71 = OpConvertSToF %float %65
+         %72 = OpConvertSToF %float %67
+         %73 = OpConvertSToF %float %69
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+               OpStore %x_GLF_color %74
+               OpBranch %60
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %75
+%tint_symbol = OpFunctionParameter %main_out
+         %79 = OpLabel
+         %80 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %80
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %82 = OpLabel
+         %83 = OpFunctionCall %void %main_1
+         %85 = OpLoad %v4float %x_GLF_color
+         %86 = OpCompositeConstruct %main_out %85
+         %84 = OpFunctionCall %void %tint_symbol_2 %86
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..97a2a50
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,60 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[2];
+  c = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[2];
+  i = x_29;
+  loop {
+    let x_34 : i32 = i;
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = i;
+    c = ~(x_39);
+    let x_41 : i32 = c;
+    c = clamp(x_41, 0, 3);
+
+    continuing {
+      let x_43 : i32 = i;
+      i = (x_43 + 1);
+    }
+  }
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_47 : f32 = f32(x_46);
+  x_GLF_color = vec4<f32>(x_47, x_47, x_47, x_47);
+  let x_49 : i32 = c;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_49 == x_51)) {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm
new file mode 100644
index 0000000..b43e23f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm
@@ -0,0 +1,98 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %10
+         %27 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %29 = OpLoad %float %28
+         %30 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %31 = OpLoad %float %30
+         %32 = OpFOrdLessThan %bool %29 %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+         %36 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpConvertSToF %float %37
+         %39 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpConvertSToF %float %43
+         %45 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %38 %41 %44 %47
+               OpStore %_GLF_color %48
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpFOrdGreaterThan %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpCompositeConstruct %v4float %58 %58 %58 %58
+               OpStore %_GLF_color %59
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+         %35 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpCompositeConstruct %v4float %62 %62 %62 %62
+               OpStore %_GLF_color %63
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3739a71
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_5 : register(b1, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+
+void main_1() {
+  const float x_29 = asfloat(x_5[0].x);
+  const float x_31 = asfloat(x_5[0].y);
+  if ((x_29 < x_31)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_37 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const int x_40 = asint(x_7[1].x);
+    const int x_43 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_37), float(x_40), float(x_43), float(x_46));
+    const float x_50 = asfloat(x_5[0].x);
+    const float x_52 = asfloat(x_5[0].y);
+    if ((x_50 > x_52)) {
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_57 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      const float x_58 = float(x_57);
+      x_GLF_color = float4(x_58, x_58, x_58, x_58);
+    }
+    return;
+  } else {
+    const int x_61 = asint(x_7[1].x);
+    const float x_62 = float(x_61);
+    x_GLF_color = float4(x_62, x_62, x_62, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..762e4db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.msl
@@ -0,0 +1,56 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 v1;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_5, constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float const x_29 = x_5.v1.x;
+  float const x_31 = x_5.v1.y;
+  if ((x_29 < x_31)) {
+    int const x_37 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_40 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_43 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_46 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_37), float(x_40), float(x_43), float(x_46));
+    float const x_50 = x_5.v1.x;
+    float const x_52 = x_5.v1.y;
+    if ((x_50 > x_52)) {
+      int const x_57 = x_7.x_GLF_uniform_int_values.arr[0].el;
+      float const x_58 = float(x_57);
+      *(tint_symbol_4) = float4(x_58, x_58, x_58, x_58);
+    }
+    return;
+  } else {
+    int const x_61 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_62 = float(x_61);
+    *(tint_symbol_4) = float4(x_62, x_62, x_62, x_62);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_5 [[buffer(1)]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..77d773f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,130 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_5 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %66 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %25 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %29 = OpLoad %float %28
+         %30 = OpFOrdLessThan %bool %26 %29
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %38
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpConvertSToF %float %45
+         %50 = OpCompositeConstruct %v4float %46 %47 %48 %49
+               OpStore %x_GLF_color %50
+         %51 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %52 = OpLoad %float %51
+         %53 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %54 = OpLoad %float %53
+         %55 = OpFOrdGreaterThan %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %60 %60 %60 %60
+               OpStore %x_GLF_color %61
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+         %34 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpCompositeConstruct %v4float %64 %64 %64 %64
+               OpStore %x_GLF_color %65
+               OpBranch %32
+         %32 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %66
+%tint_symbol = OpFunctionParameter %main_out
+         %70 = OpLabel
+         %71 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %71
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %73 = OpLabel
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_2 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..61503b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,53 @@
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn main_1() {
+  let x_29 : f32 = x_5.v1.x;
+  let x_31 : f32 = x_5.v1.y;
+  if ((x_29 < x_31)) {
+    let x_37 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_40 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_43 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_46 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_37), f32(x_40), f32(x_43), f32(x_46));
+    let x_50 : f32 = x_5.v1.x;
+    let x_52 : f32 = x_5.v1.y;
+    if ((x_50 > x_52)) {
+      let x_57 : i32 = x_7.x_GLF_uniform_int_values[0];
+      let x_58 : f32 = f32(x_57);
+      x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+    }
+    return;
+  } else {
+    let x_61 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_62 : f32 = f32(x_61);
+    x_GLF_color = vec4<f32>(x_62, x_62, x_62, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
new file mode 100644
index 0000000..61503b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
@@ -0,0 +1,53 @@
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn main_1() {
+  let x_29 : f32 = x_5.v1.x;
+  let x_31 : f32 = x_5.v1.y;
+  if ((x_29 < x_31)) {
+    let x_37 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_40 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_43 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_46 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_37), f32(x_40), f32(x_43), f32(x_46));
+    let x_50 : f32 = x_5.v1.x;
+    let x_52 : f32 = x_5.v1.y;
+    if ((x_50 > x_52)) {
+      let x_57 : i32 = x_7.x_GLF_uniform_int_values[0];
+      let x_58 : f32 = f32(x_57);
+      x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+    }
+    return;
+  } else {
+    let x_61 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_62 : f32 = f32(x_61);
+    x_GLF_color = vec4<f32>(x_62, x_62, x_62, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3739a71
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,49 @@
+cbuffer cbuffer_x_5 : register(b1, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+
+void main_1() {
+  const float x_29 = asfloat(x_5[0].x);
+  const float x_31 = asfloat(x_5[0].y);
+  if ((x_29 < x_31)) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_37 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    const int x_40 = asint(x_7[1].x);
+    const int x_43 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_46 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    x_GLF_color = float4(float(x_37), float(x_40), float(x_43), float(x_46));
+    const float x_50 = asfloat(x_5[0].x);
+    const float x_52 = asfloat(x_5[0].y);
+    if ((x_50 > x_52)) {
+      const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+      const int x_57 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+      const float x_58 = float(x_57);
+      x_GLF_color = float4(x_58, x_58, x_58, x_58);
+    }
+    return;
+  } else {
+    const int x_61 = asint(x_7[1].x);
+    const float x_62 = float(x_61);
+    x_GLF_color = float4(x_62, x_62, x_62, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..762e4db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.msl
@@ -0,0 +1,56 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 v1;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_5, constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float const x_29 = x_5.v1.x;
+  float const x_31 = x_5.v1.y;
+  if ((x_29 < x_31)) {
+    int const x_37 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_40 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_43 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_46 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_37), float(x_40), float(x_43), float(x_46));
+    float const x_50 = x_5.v1.x;
+    float const x_52 = x_5.v1.y;
+    if ((x_50 > x_52)) {
+      int const x_57 = x_7.x_GLF_uniform_int_values.arr[0].el;
+      float const x_58 = float(x_57);
+      *(tint_symbol_4) = float4(x_58, x_58, x_58, x_58);
+    }
+    return;
+  } else {
+    int const x_61 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    float const x_62 = float(x_61);
+    *(tint_symbol_4) = float4(x_62, x_62, x_62, x_62);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_5 [[buffer(1)]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..77d773f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,130 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_5 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %66 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %25 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %29 = OpLoad %float %28
+         %30 = OpFOrdLessThan %bool %26 %29
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %38
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpConvertSToF %float %45
+         %50 = OpCompositeConstruct %v4float %46 %47 %48 %49
+               OpStore %x_GLF_color %50
+         %51 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %52 = OpLoad %float %51
+         %53 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %54 = OpLoad %float %53
+         %55 = OpFOrdGreaterThan %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %60 %60 %60 %60
+               OpStore %x_GLF_color %61
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+         %34 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpCompositeConstruct %v4float %64 %64 %64 %64
+               OpStore %x_GLF_color %65
+               OpBranch %32
+         %32 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %66
+%tint_symbol = OpFunctionParameter %main_out
+         %70 = OpLabel
+         %71 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %71
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %73 = OpLabel
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_2 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..61503b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,53 @@
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn main_1() {
+  let x_29 : f32 = x_5.v1.x;
+  let x_31 : f32 = x_5.v1.y;
+  if ((x_29 < x_31)) {
+    let x_37 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_40 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_43 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_46 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_37), f32(x_40), f32(x_43), f32(x_46));
+    let x_50 : f32 = x_5.v1.x;
+    let x_52 : f32 = x_5.v1.y;
+    if ((x_50 > x_52)) {
+      let x_57 : i32 = x_7.x_GLF_uniform_int_values[0];
+      let x_58 : f32 = f32(x_57);
+      x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+    }
+    return;
+  } else {
+    let x_61 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_62 : f32 = f32(x_61);
+    x_GLF_color = vec4<f32>(x_62, x_62, x_62, x_62);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm
new file mode 100644
index 0000000..9586039
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm
@@ -0,0 +1,60 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %12 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %bool = OpTypeBool
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %19 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %20 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+               OpStore %_GLF_color %12
+         %22 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %23 = OpLoad %float %22
+         %24 = OpFOrdLessThan %bool %23 %float_0
+               OpSelectionMerge %25 None
+               OpBranchConditional %24 %26 %25
+         %26 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %28 = OpLoad %float %27
+         %29 = OpFOrdLessThan %bool %28 %float_0
+               OpBranch %25
+         %25 = OpLabel
+         %30 = OpPhi %bool %24 %21 %29 %26
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpStore %_GLF_color %19
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %_GLF_color %20
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..4208963
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  bool x_29 = false;
+  bool x_30_phi = false;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_23 = asfloat(x_5[0].x);
+  const bool x_24 = (x_23 < 0.0f);
+  x_30_phi = x_24;
+  if (x_24) {
+    const float x_28 = asfloat(x_5[0].x);
+    x_29 = (x_28 < 0.0f);
+    x_30_phi = x_29;
+  }
+  if (x_30_phi) {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..747b267
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.msl
@@ -0,0 +1,42 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_29 = false;
+  bool x_30_phi = false;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float const x_23 = x_5.one;
+  bool const x_24 = (x_23 < 0.0f);
+  x_30_phi = x_24;
+  if (x_24) {
+    float const x_28 = x_5.one;
+    x_29 = (x_28 < 0.0f);
+    x_30_phi = x_29;
+  }
+  bool const x_30 = x_30_phi;
+  if (x_30) {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7708f0f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,101 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_29 "x_29"
+               OpName %x_30_phi "x_30_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %18 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %39 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %40 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %41 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_29 = OpVariable %_ptr_Function_bool Function %18
+   %x_30_phi = OpVariable %_ptr_Function_bool Function %18
+               OpStore %x_GLF_color %21
+         %25 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpFOrdLessThan %bool %26 %float_0
+               OpStore %x_30_phi %27
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %31 = OpLoad %float %30
+         %32 = OpFOrdLessThan %bool %31 %float_0
+               OpStore %x_29 %32
+         %33 = OpLoad %bool %x_29
+               OpStore %x_30_phi %33
+               OpBranch %28
+         %28 = OpLabel
+         %34 = OpLoad %bool %x_30_phi
+               OpSelectionMerge %35 None
+               OpBranchConditional %34 %36 %37
+         %36 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %35
+         %37 = OpLabel
+               OpStore %x_GLF_color %40
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %41
+%tint_symbol = OpFunctionParameter %main_out
+         %45 = OpLabel
+         %46 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %46
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_2 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..cc257f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_29 : bool;
+  var x_30_phi : bool;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_23 : f32 = x_5.one;
+  let x_24 : bool = (x_23 < 0.0);
+  x_30_phi = x_24;
+  if (x_24) {
+    let x_28 : f32 = x_5.one;
+    x_29 = (x_28 < 0.0);
+    x_30_phi = x_29;
+  }
+  let x_30 : bool = x_30_phi;
+  if (x_30) {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
new file mode 100644
index 0000000..cc257f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_29 : bool;
+  var x_30_phi : bool;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_23 : f32 = x_5.one;
+  let x_24 : bool = (x_23 < 0.0);
+  x_30_phi = x_24;
+  if (x_24) {
+    let x_28 : f32 = x_5.one;
+    x_29 = (x_28 < 0.0);
+    x_30_phi = x_29;
+  }
+  let x_30 : bool = x_30_phi;
+  if (x_30) {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4208963
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  bool x_29 = false;
+  bool x_30_phi = false;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_23 = asfloat(x_5[0].x);
+  const bool x_24 = (x_23 < 0.0f);
+  x_30_phi = x_24;
+  if (x_24) {
+    const float x_28 = asfloat(x_5[0].x);
+    x_29 = (x_28 < 0.0f);
+    x_30_phi = x_29;
+  }
+  if (x_30_phi) {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..747b267
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.msl
@@ -0,0 +1,42 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_29 = false;
+  bool x_30_phi = false;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float const x_23 = x_5.one;
+  bool const x_24 = (x_23 < 0.0f);
+  x_30_phi = x_24;
+  if (x_24) {
+    float const x_28 = x_5.one;
+    x_29 = (x_28 < 0.0f);
+    x_30_phi = x_29;
+  }
+  bool const x_30 = x_30_phi;
+  if (x_30) {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7708f0f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,101 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_29 "x_29"
+               OpName %x_30_phi "x_30_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %18 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %39 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %40 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %41 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_29 = OpVariable %_ptr_Function_bool Function %18
+   %x_30_phi = OpVariable %_ptr_Function_bool Function %18
+               OpStore %x_GLF_color %21
+         %25 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpFOrdLessThan %bool %26 %float_0
+               OpStore %x_30_phi %27
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0
+         %31 = OpLoad %float %30
+         %32 = OpFOrdLessThan %bool %31 %float_0
+               OpStore %x_29 %32
+         %33 = OpLoad %bool %x_29
+               OpStore %x_30_phi %33
+               OpBranch %28
+         %28 = OpLabel
+         %34 = OpLoad %bool %x_30_phi
+               OpSelectionMerge %35 None
+               OpBranchConditional %34 %36 %37
+         %36 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %35
+         %37 = OpLabel
+               OpStore %x_GLF_color %40
+               OpBranch %35
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %41
+%tint_symbol = OpFunctionParameter %main_out
+         %45 = OpLabel
+         %46 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %46
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_2 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..cc257f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_29 : bool;
+  var x_30_phi : bool;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_23 : f32 = x_5.one;
+  let x_24 : bool = (x_23 < 0.0);
+  x_30_phi = x_24;
+  if (x_24) {
+    let x_28 : f32 = x_5.one;
+    x_29 = (x_28 < 0.0);
+    x_30_phi = x_29;
+  }
+  let x_30 : bool = x_30_phi;
+  if (x_30) {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm
new file mode 100644
index 0000000..157569f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm
@@ -0,0 +1,126 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_6 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_6 = OpConstant %uint 6
+%_arr_int_uint_6 = OpTypeArray %int %uint_6
+       %buf0 = OpTypeStruct %_arr_int_uint_6
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %v4bool = OpTypeVector %bool 4
+      %int_5 = OpConstant %int 5
+     %uint_0 = OpConstant %uint 0
+         %26 = OpUndef %v4float
+       %main = OpFunction %void None %8
+         %27 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %28
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %31 = OpLoad %int %30
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpPhi %v4float %26 %27 %34 %35
+         %36 = OpPhi %int %29 %27 %37 %35
+         %38 = OpPhi %int %31 %27 %39 %35
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %41 = OpLoad %int %40
+         %42 = OpSLessThan %bool %38 %41
+               OpLoopMerge %43 %35 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpSelectionMerge %45 None
+               OpSwitch %uint_0 %46
+         %46 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %48 = OpLoad %int %47
+         %49 = OpSGreaterThan %bool %38 %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpBranch %45
+         %50 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpPhi %v4float %33 %50 %54 %55
+         %56 = OpPhi %int %29 %50 %57 %55
+         %58 = OpSLessThan %bool %56 %41
+               OpLoopMerge %59 %55 None
+               OpBranchConditional %58 %55 %59
+         %55 = OpLabel
+         %60 = OpIAdd %int %38 %56
+         %61 = OpConvertSToF %float %60
+         %54 = OpCompositeConstruct %v4float %61 %61 %61 %61
+         %57 = OpIAdd %int %56 %int_1
+               OpBranch %52
+         %59 = OpLabel
+               OpStore %_GLF_color %53
+               OpBranch %45
+         %45 = OpLabel
+         %34 = OpPhi %v4float %33 %51 %53 %59
+         %62 = OpPhi %int %int_2 %51 %31 %59
+         %37 = OpIAdd %int %36 %62
+               OpBranch %35
+         %35 = OpLabel
+         %39 = OpIAdd %int %38 %int_1
+               OpBranch %32
+         %43 = OpLabel
+         %63 = OpLoad %v4float %_GLF_color
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %66 %66 %66 %66
+         %68 = OpFOrdEqual %v4bool %63 %67
+         %69 = OpAll %bool %68
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %73 = OpLoad %int %72
+         %74 = OpIEqual %bool %36 %73
+               OpBranch %70
+         %70 = OpLabel
+         %75 = OpPhi %bool %69 %43 %74 %71
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+         %79 = OpConvertSToF %float %31
+         %80 = OpConvertSToF %float %29
+         %81 = OpCompositeConstruct %v4float %79 %80 %80 %79
+               OpStore %_GLF_color %81
+               OpBranch %76
+         %78 = OpLabel
+         %82 = OpConvertSToF %float %29
+         %83 = OpCompositeConstruct %v4float %82 %82 %82 %82
+               OpStore %_GLF_color %83
+               OpBranch %76
+         %76 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..1fcb766
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.hlsl
@@ -0,0 +1,109 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[6];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_36 = 0;
+  bool x_74 = false;
+  float4 x_33_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_36_phi = 0;
+  int x_38_phi = 0;
+  bool x_75_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_31 = asint(x_5[1].x);
+  x_33_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_36_phi = x_29;
+  x_38_phi = x_31;
+  while (true) {
+    float4 x_53 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_39 = 0;
+    float4 x_34_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_62_phi = 0;
+    const float4 x_33 = x_33_phi;
+    x_36 = x_36_phi;
+    const int x_38 = x_38_phi;
+    const int x_41 = asint(x_5[4].x);
+    if ((x_38 < x_41)) {
+    } else {
+      break;
+    }
+    float4 x_53_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_56_phi = 0;
+    switch(0u) {
+      default: {
+        const int x_48 = asint(x_5[3].x);
+        if ((x_38 > x_48)) {
+          x_34_phi = x_33;
+          x_62_phi = 2;
+          break;
+        }
+        x_53_phi = x_33;
+        x_56_phi = x_29;
+        while (true) {
+          float4 x_54 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+          int x_57 = 0;
+          x_53 = x_53_phi;
+          const int x_56 = x_56_phi;
+          if ((x_56 < x_41)) {
+          } else {
+            break;
+          }
+          {
+            const float x_61 = float((x_38 + x_56));
+            x_54 = float4(x_61, x_61, x_61, x_61);
+            x_57 = (x_56 + 1);
+            x_53_phi = x_54;
+            x_56_phi = x_57;
+          }
+        }
+        x_GLF_color = x_53;
+        x_34_phi = x_53;
+        x_62_phi = x_31;
+        break;
+      }
+    }
+    const float4 x_34 = x_34_phi;
+    const int x_62 = x_62_phi;
+    {
+      x_39 = (x_38 + 1);
+      x_33_phi = x_34;
+      x_36_phi = asint((x_36 + asint(x_62)));
+      x_38_phi = x_39;
+    }
+  }
+  const float4 x_63 = x_GLF_color;
+  const int x_65 = asint(x_5[2].x);
+  const float x_66 = float(x_65);
+  const bool x_69 = all((x_63 == float4(x_66, x_66, x_66, x_66)));
+  x_75_phi = x_69;
+  if (x_69) {
+    const int x_73 = asint(x_5[5].x);
+    x_74 = (x_36 == asint(x_73));
+    x_75_phi = x_74;
+  }
+  if (x_75_phi) {
+    const float x_79 = float(x_31);
+    const float x_80 = float(x_29);
+    x_GLF_color = float4(x_79, x_80, x_80, x_79);
+  } else {
+    const float x_82 = float(x_29);
+    x_GLF_color = float4(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.msl
new file mode 100644
index 0000000..c5bf9c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.msl
@@ -0,0 +1,119 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[6];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int x_36 = 0;
+  bool x_74 = false;
+  float4 x_33_phi = 0.0f;
+  int x_36_phi = 0;
+  int x_38_phi = 0;
+  bool x_75_phi = false;
+  int const x_29 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_31 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  x_33_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_36_phi = x_29;
+  x_38_phi = x_31;
+  while (true) {
+    float4 x_53 = 0.0f;
+    int x_39 = 0;
+    float4 x_34_phi = 0.0f;
+    int x_62_phi = 0;
+    float4 const x_33 = x_33_phi;
+    x_36 = x_36_phi;
+    int const x_38 = x_38_phi;
+    int const x_41 = x_5.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_38 < x_41)) {
+    } else {
+      break;
+    }
+    float4 x_53_phi = 0.0f;
+    int x_56_phi = 0;
+    switch(0u) {
+      default: {
+        int const x_48 = x_5.x_GLF_uniform_int_values.arr[3].el;
+        if ((x_38 > x_48)) {
+          x_34_phi = x_33;
+          x_62_phi = 2;
+          break;
+        }
+        x_53_phi = x_33;
+        x_56_phi = x_29;
+        while (true) {
+          float4 x_54 = 0.0f;
+          int x_57 = 0;
+          x_53 = x_53_phi;
+          int const x_56 = x_56_phi;
+          if ((x_56 < x_41)) {
+          } else {
+            break;
+          }
+          {
+            float const x_61 = float((x_38 + x_56));
+            x_54 = float4(x_61, x_61, x_61, x_61);
+            x_57 = (x_56 + 1);
+            x_53_phi = x_54;
+            x_56_phi = x_57;
+          }
+        }
+        *(tint_symbol_4) = x_53;
+        x_34_phi = x_53;
+        x_62_phi = x_31;
+        break;
+      }
+    }
+    float4 const x_34 = x_34_phi;
+    int const x_62 = x_62_phi;
+    {
+      x_39 = (x_38 + 1);
+      x_33_phi = x_34;
+      x_36_phi = as_type<int>((x_36 + as_type<int>(x_62)));
+      x_38_phi = x_39;
+    }
+  }
+  float4 const x_63 = *(tint_symbol_4);
+  int const x_65 = x_5.x_GLF_uniform_int_values.arr[2].el;
+  float const x_66 = float(x_65);
+  bool const x_69 = all((x_63 == float4(x_66, x_66, x_66, x_66)));
+  x_75_phi = x_69;
+  if (x_69) {
+    int const x_73 = x_5.x_GLF_uniform_int_values.arr[5].el;
+    x_74 = (x_36 == as_type<int>(x_73));
+    x_75_phi = x_74;
+  }
+  bool const x_75 = x_75_phi;
+  if (x_75) {
+    float const x_79 = float(x_31);
+    float const x_80 = float(x_29);
+    *(tint_symbol_4) = float4(x_79, x_80, x_80, x_79);
+  } else {
+    float const x_82 = float(x_29);
+    *(tint_symbol_4) = float4(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..5769859
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.spvasm
@@ -0,0 +1,240 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 136
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_74 "x_74"
+               OpName %x_33_phi "x_33_phi"
+               OpName %x_36_phi "x_36_phi"
+               OpName %x_38_phi "x_38_phi"
+               OpName %x_75_phi "x_75_phi"
+               OpName %x_53 "x_53"
+               OpName %x_39 "x_39"
+               OpName %x_34_phi "x_34_phi"
+               OpName %x_62_phi "x_62_phi"
+               OpName %x_53_phi "x_53_phi"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_54 "x_54"
+               OpName %x_57 "x_57"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_6 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_6 = OpConstant %uint 6
+%_arr_int_uint_6 = OpTypeArray %int %uint_6
+       %buf0 = OpTypeStruct %_arr_int_uint_6
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %25 = OpConstantNull %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+     %v4bool = OpTypeVector %bool 4
+      %int_5 = OpConstant %int 5
+   %main_out = OpTypeStruct %v4float
+        %124 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_int Function %21
+       %x_74 = OpVariable %_ptr_Function_bool Function %25
+   %x_33_phi = OpVariable %_ptr_Function_v4float Function %12
+   %x_36_phi = OpVariable %_ptr_Function_int Function %21
+   %x_38_phi = OpVariable %_ptr_Function_int Function %21
+   %x_75_phi = OpVariable %_ptr_Function_bool Function %25
+       %x_53 = OpVariable %_ptr_Function_v4float Function %12
+       %x_39 = OpVariable %_ptr_Function_int Function %21
+   %x_34_phi = OpVariable %_ptr_Function_v4float Function %12
+   %x_62_phi = OpVariable %_ptr_Function_int Function %21
+   %x_53_phi = OpVariable %_ptr_Function_v4float Function %12
+   %x_56_phi = OpVariable %_ptr_Function_int Function %21
+       %x_54 = OpVariable %_ptr_Function_v4float Function %12
+       %x_57 = OpVariable %_ptr_Function_int Function %21
+         %34 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %37 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %38 = OpLoad %int %37
+               OpStore %x_33_phi %40
+               OpStore %x_36_phi %35
+               OpStore %x_38_phi %38
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %49 = OpLoad %v4float %x_33_phi
+         %50 = OpLoad %int %x_36_phi
+               OpStore %x_36 %50
+         %51 = OpLoad %int %x_38_phi
+         %53 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_4
+         %54 = OpLoad %int %53
+         %55 = OpSLessThan %bool %51 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpBranch %56
+         %58 = OpLabel
+               OpBranch %42
+         %56 = OpLabel
+               OpSelectionMerge %61 None
+               OpSwitch %uint_0 %62
+         %62 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_3
+         %65 = OpLoad %int %64
+         %66 = OpSGreaterThan %bool %51 %65
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+               OpStore %x_34_phi %49
+               OpStore %x_62_phi %int_2
+               OpBranch %61
+         %67 = OpLabel
+               OpStore %x_53_phi %49
+               OpStore %x_56_phi %35
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %76 = OpLoad %v4float %x_53_phi
+               OpStore %x_53 %76
+         %77 = OpLoad %int %x_56_phi
+         %78 = OpSLessThan %bool %77 %54
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %71
+         %79 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+         %83 = OpIAdd %int %51 %77
+         %82 = OpConvertSToF %float %83
+         %84 = OpCompositeConstruct %v4float %82 %82 %82 %82
+               OpStore %x_54 %84
+         %85 = OpIAdd %int %77 %int_1
+               OpStore %x_57 %85
+         %86 = OpLoad %v4float %x_54
+               OpStore %x_53_phi %86
+         %87 = OpLoad %int %x_57
+               OpStore %x_56_phi %87
+               OpBranch %70
+         %71 = OpLabel
+         %88 = OpLoad %v4float %x_53
+               OpStore %x_GLF_color %88
+         %89 = OpLoad %v4float %x_53
+               OpStore %x_34_phi %89
+               OpStore %x_62_phi %38
+               OpBranch %61
+         %61 = OpLabel
+         %90 = OpLoad %v4float %x_34_phi
+         %91 = OpLoad %int %x_62_phi
+               OpBranch %43
+         %43 = OpLabel
+         %92 = OpIAdd %int %51 %int_1
+               OpStore %x_39 %92
+               OpStore %x_33_phi %90
+         %94 = OpLoad %int %x_36
+         %95 = OpCopyObject %int %91
+         %96 = OpIAdd %int %94 %95
+         %93 = OpCopyObject %int %96
+               OpStore %x_36_phi %93
+         %97 = OpLoad %int %x_39
+               OpStore %x_38_phi %97
+               OpBranch %41
+         %42 = OpLabel
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %100
+        %103 = OpCompositeConstruct %v4float %101 %101 %101 %101
+        %104 = OpFOrdEqual %v4bool %98 %103
+        %102 = OpAll %bool %104
+               OpStore %x_75_phi %102
+               OpSelectionMerge %106 None
+               OpBranchConditional %102 %107 %106
+        %107 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_5
+        %110 = OpLoad %int %109
+        %111 = OpLoad %int %x_36
+        %112 = OpCopyObject %int %110
+        %113 = OpIEqual %bool %111 %112
+               OpStore %x_74 %113
+        %114 = OpLoad %bool %x_74
+               OpStore %x_75_phi %114
+               OpBranch %106
+        %106 = OpLabel
+        %115 = OpLoad %bool %x_75_phi
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+        %119 = OpConvertSToF %float %38
+        %120 = OpConvertSToF %float %35
+        %121 = OpCompositeConstruct %v4float %119 %120 %120 %119
+               OpStore %x_GLF_color %121
+               OpBranch %116
+        %118 = OpLabel
+        %122 = OpConvertSToF %float %35
+        %123 = OpCompositeConstruct %v4float %122 %122 %122 %122
+               OpStore %x_GLF_color %123
+               OpBranch %116
+        %116 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %124
+%tint_symbol = OpFunctionParameter %main_out
+        %128 = OpLabel
+        %129 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %129
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %131 = OpLabel
+        %132 = OpFunctionCall %void %main_1
+        %134 = OpLoad %v4float %x_GLF_color
+        %135 = OpCompositeConstruct %main_out %134
+        %133 = OpFunctionCall %void %tint_symbol_2 %135
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..295609c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.spvasm.expected.wgsl
@@ -0,0 +1,113 @@
+type Arr = [[stride(16)]] array<i32, 6>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : i32;
+  var x_74 : bool;
+  var x_33_phi : vec4<f32>;
+  var x_36_phi : i32;
+  var x_38_phi : i32;
+  var x_75_phi : bool;
+  let x_29 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[1];
+  x_33_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  x_36_phi = x_29;
+  x_38_phi = x_31;
+  loop {
+    var x_53 : vec4<f32>;
+    var x_39 : i32;
+    var x_34_phi : vec4<f32>;
+    var x_62_phi : i32;
+    let x_33 : vec4<f32> = x_33_phi;
+    x_36 = x_36_phi;
+    let x_38 : i32 = x_38_phi;
+    let x_41 : i32 = x_5.x_GLF_uniform_int_values[4];
+    if ((x_38 < x_41)) {
+    } else {
+      break;
+    }
+    var x_53_phi : vec4<f32>;
+    var x_56_phi : i32;
+    switch(0u) {
+      default: {
+        let x_48 : i32 = x_5.x_GLF_uniform_int_values[3];
+        if ((x_38 > x_48)) {
+          x_34_phi = x_33;
+          x_62_phi = 2;
+          break;
+        }
+        x_53_phi = x_33;
+        x_56_phi = x_29;
+        loop {
+          var x_54 : vec4<f32>;
+          var x_57 : i32;
+          x_53 = x_53_phi;
+          let x_56 : i32 = x_56_phi;
+          if ((x_56 < x_41)) {
+          } else {
+            break;
+          }
+
+          continuing {
+            let x_61 : f32 = f32((x_38 + x_56));
+            x_54 = vec4<f32>(x_61, x_61, x_61, x_61);
+            x_57 = (x_56 + 1);
+            x_53_phi = x_54;
+            x_56_phi = x_57;
+          }
+        }
+        x_GLF_color = x_53;
+        x_34_phi = x_53;
+        x_62_phi = x_31;
+      }
+    }
+    let x_34 : vec4<f32> = x_34_phi;
+    let x_62 : i32 = x_62_phi;
+
+    continuing {
+      x_39 = (x_38 + 1);
+      x_33_phi = x_34;
+      x_36_phi = bitcast<i32>((x_36 + bitcast<i32>(x_62)));
+      x_38_phi = x_39;
+    }
+  }
+  let x_63 : vec4<f32> = x_GLF_color;
+  let x_65 : i32 = x_5.x_GLF_uniform_int_values[2];
+  let x_66 : f32 = f32(x_65);
+  let x_69 : bool = all((x_63 == vec4<f32>(x_66, x_66, x_66, x_66)));
+  x_75_phi = x_69;
+  if (x_69) {
+    let x_73 : i32 = x_5.x_GLF_uniform_int_values[5];
+    x_74 = (x_36 == bitcast<i32>(x_73));
+    x_75_phi = x_74;
+  }
+  let x_75 : bool = x_75_phi;
+  if (x_75) {
+    let x_79 : f32 = f32(x_31);
+    let x_80 : f32 = f32(x_29);
+    x_GLF_color = vec4<f32>(x_79, x_80, x_80, x_79);
+  } else {
+    let x_82 : f32 = f32(x_29);
+    x_GLF_color = vec4<f32>(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
new file mode 100644
index 0000000..295609c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
@@ -0,0 +1,113 @@
+type Arr = [[stride(16)]] array<i32, 6>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : i32;
+  var x_74 : bool;
+  var x_33_phi : vec4<f32>;
+  var x_36_phi : i32;
+  var x_38_phi : i32;
+  var x_75_phi : bool;
+  let x_29 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[1];
+  x_33_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  x_36_phi = x_29;
+  x_38_phi = x_31;
+  loop {
+    var x_53 : vec4<f32>;
+    var x_39 : i32;
+    var x_34_phi : vec4<f32>;
+    var x_62_phi : i32;
+    let x_33 : vec4<f32> = x_33_phi;
+    x_36 = x_36_phi;
+    let x_38 : i32 = x_38_phi;
+    let x_41 : i32 = x_5.x_GLF_uniform_int_values[4];
+    if ((x_38 < x_41)) {
+    } else {
+      break;
+    }
+    var x_53_phi : vec4<f32>;
+    var x_56_phi : i32;
+    switch(0u) {
+      default: {
+        let x_48 : i32 = x_5.x_GLF_uniform_int_values[3];
+        if ((x_38 > x_48)) {
+          x_34_phi = x_33;
+          x_62_phi = 2;
+          break;
+        }
+        x_53_phi = x_33;
+        x_56_phi = x_29;
+        loop {
+          var x_54 : vec4<f32>;
+          var x_57 : i32;
+          x_53 = x_53_phi;
+          let x_56 : i32 = x_56_phi;
+          if ((x_56 < x_41)) {
+          } else {
+            break;
+          }
+
+          continuing {
+            let x_61 : f32 = f32((x_38 + x_56));
+            x_54 = vec4<f32>(x_61, x_61, x_61, x_61);
+            x_57 = (x_56 + 1);
+            x_53_phi = x_54;
+            x_56_phi = x_57;
+          }
+        }
+        x_GLF_color = x_53;
+        x_34_phi = x_53;
+        x_62_phi = x_31;
+      }
+    }
+    let x_34 : vec4<f32> = x_34_phi;
+    let x_62 : i32 = x_62_phi;
+
+    continuing {
+      x_39 = (x_38 + 1);
+      x_33_phi = x_34;
+      x_36_phi = bitcast<i32>((x_36 + bitcast<i32>(x_62)));
+      x_38_phi = x_39;
+    }
+  }
+  let x_63 : vec4<f32> = x_GLF_color;
+  let x_65 : i32 = x_5.x_GLF_uniform_int_values[2];
+  let x_66 : f32 = f32(x_65);
+  let x_69 : bool = all((x_63 == vec4<f32>(x_66, x_66, x_66, x_66)));
+  x_75_phi = x_69;
+  if (x_69) {
+    let x_73 : i32 = x_5.x_GLF_uniform_int_values[5];
+    x_74 = (x_36 == bitcast<i32>(x_73));
+    x_75_phi = x_74;
+  }
+  let x_75 : bool = x_75_phi;
+  if (x_75) {
+    let x_79 : f32 = f32(x_31);
+    let x_80 : f32 = f32(x_29);
+    x_GLF_color = vec4<f32>(x_79, x_80, x_80, x_79);
+  } else {
+    let x_82 : f32 = f32(x_29);
+    x_GLF_color = vec4<f32>(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..1fcb766
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.hlsl
@@ -0,0 +1,109 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[6];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_36 = 0;
+  bool x_74 = false;
+  float4 x_33_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_36_phi = 0;
+  int x_38_phi = 0;
+  bool x_75_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  const int x_31 = asint(x_5[1].x);
+  x_33_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_36_phi = x_29;
+  x_38_phi = x_31;
+  while (true) {
+    float4 x_53 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_39 = 0;
+    float4 x_34_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_62_phi = 0;
+    const float4 x_33 = x_33_phi;
+    x_36 = x_36_phi;
+    const int x_38 = x_38_phi;
+    const int x_41 = asint(x_5[4].x);
+    if ((x_38 < x_41)) {
+    } else {
+      break;
+    }
+    float4 x_53_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_56_phi = 0;
+    switch(0u) {
+      default: {
+        const int x_48 = asint(x_5[3].x);
+        if ((x_38 > x_48)) {
+          x_34_phi = x_33;
+          x_62_phi = 2;
+          break;
+        }
+        x_53_phi = x_33;
+        x_56_phi = x_29;
+        while (true) {
+          float4 x_54 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+          int x_57 = 0;
+          x_53 = x_53_phi;
+          const int x_56 = x_56_phi;
+          if ((x_56 < x_41)) {
+          } else {
+            break;
+          }
+          {
+            const float x_61 = float((x_38 + x_56));
+            x_54 = float4(x_61, x_61, x_61, x_61);
+            x_57 = (x_56 + 1);
+            x_53_phi = x_54;
+            x_56_phi = x_57;
+          }
+        }
+        x_GLF_color = x_53;
+        x_34_phi = x_53;
+        x_62_phi = x_31;
+        break;
+      }
+    }
+    const float4 x_34 = x_34_phi;
+    const int x_62 = x_62_phi;
+    {
+      x_39 = (x_38 + 1);
+      x_33_phi = x_34;
+      x_36_phi = asint((x_36 + asint(x_62)));
+      x_38_phi = x_39;
+    }
+  }
+  const float4 x_63 = x_GLF_color;
+  const int x_65 = asint(x_5[2].x);
+  const float x_66 = float(x_65);
+  const bool x_69 = all((x_63 == float4(x_66, x_66, x_66, x_66)));
+  x_75_phi = x_69;
+  if (x_69) {
+    const int x_73 = asint(x_5[5].x);
+    x_74 = (x_36 == asint(x_73));
+    x_75_phi = x_74;
+  }
+  if (x_75_phi) {
+    const float x_79 = float(x_31);
+    const float x_80 = float(x_29);
+    x_GLF_color = float4(x_79, x_80, x_80, x_79);
+  } else {
+    const float x_82 = float(x_29);
+    x_GLF_color = float4(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.msl
new file mode 100644
index 0000000..c5bf9c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.msl
@@ -0,0 +1,119 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[6];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int x_36 = 0;
+  bool x_74 = false;
+  float4 x_33_phi = 0.0f;
+  int x_36_phi = 0;
+  int x_38_phi = 0;
+  bool x_75_phi = false;
+  int const x_29 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  int const x_31 = x_5.x_GLF_uniform_int_values.arr[1].el;
+  x_33_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_36_phi = x_29;
+  x_38_phi = x_31;
+  while (true) {
+    float4 x_53 = 0.0f;
+    int x_39 = 0;
+    float4 x_34_phi = 0.0f;
+    int x_62_phi = 0;
+    float4 const x_33 = x_33_phi;
+    x_36 = x_36_phi;
+    int const x_38 = x_38_phi;
+    int const x_41 = x_5.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_38 < x_41)) {
+    } else {
+      break;
+    }
+    float4 x_53_phi = 0.0f;
+    int x_56_phi = 0;
+    switch(0u) {
+      default: {
+        int const x_48 = x_5.x_GLF_uniform_int_values.arr[3].el;
+        if ((x_38 > x_48)) {
+          x_34_phi = x_33;
+          x_62_phi = 2;
+          break;
+        }
+        x_53_phi = x_33;
+        x_56_phi = x_29;
+        while (true) {
+          float4 x_54 = 0.0f;
+          int x_57 = 0;
+          x_53 = x_53_phi;
+          int const x_56 = x_56_phi;
+          if ((x_56 < x_41)) {
+          } else {
+            break;
+          }
+          {
+            float const x_61 = float((x_38 + x_56));
+            x_54 = float4(x_61, x_61, x_61, x_61);
+            x_57 = (x_56 + 1);
+            x_53_phi = x_54;
+            x_56_phi = x_57;
+          }
+        }
+        *(tint_symbol_4) = x_53;
+        x_34_phi = x_53;
+        x_62_phi = x_31;
+        break;
+      }
+    }
+    float4 const x_34 = x_34_phi;
+    int const x_62 = x_62_phi;
+    {
+      x_39 = (x_38 + 1);
+      x_33_phi = x_34;
+      x_36_phi = as_type<int>((x_36 + as_type<int>(x_62)));
+      x_38_phi = x_39;
+    }
+  }
+  float4 const x_63 = *(tint_symbol_4);
+  int const x_65 = x_5.x_GLF_uniform_int_values.arr[2].el;
+  float const x_66 = float(x_65);
+  bool const x_69 = all((x_63 == float4(x_66, x_66, x_66, x_66)));
+  x_75_phi = x_69;
+  if (x_69) {
+    int const x_73 = x_5.x_GLF_uniform_int_values.arr[5].el;
+    x_74 = (x_36 == as_type<int>(x_73));
+    x_75_phi = x_74;
+  }
+  bool const x_75 = x_75_phi;
+  if (x_75) {
+    float const x_79 = float(x_31);
+    float const x_80 = float(x_29);
+    *(tint_symbol_4) = float4(x_79, x_80, x_80, x_79);
+  } else {
+    float const x_82 = float(x_29);
+    *(tint_symbol_4) = float4(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..5769859
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.spvasm
@@ -0,0 +1,240 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 136
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_74 "x_74"
+               OpName %x_33_phi "x_33_phi"
+               OpName %x_36_phi "x_36_phi"
+               OpName %x_38_phi "x_38_phi"
+               OpName %x_75_phi "x_75_phi"
+               OpName %x_53 "x_53"
+               OpName %x_39 "x_39"
+               OpName %x_34_phi "x_34_phi"
+               OpName %x_62_phi "x_62_phi"
+               OpName %x_53_phi "x_53_phi"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_54 "x_54"
+               OpName %x_57 "x_57"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_6 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_6 = OpConstant %uint 6
+%_arr_int_uint_6 = OpTypeArray %int %uint_6
+       %buf0 = OpTypeStruct %_arr_int_uint_6
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %25 = OpConstantNull %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+     %v4bool = OpTypeVector %bool 4
+      %int_5 = OpConstant %int 5
+   %main_out = OpTypeStruct %v4float
+        %124 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_int Function %21
+       %x_74 = OpVariable %_ptr_Function_bool Function %25
+   %x_33_phi = OpVariable %_ptr_Function_v4float Function %12
+   %x_36_phi = OpVariable %_ptr_Function_int Function %21
+   %x_38_phi = OpVariable %_ptr_Function_int Function %21
+   %x_75_phi = OpVariable %_ptr_Function_bool Function %25
+       %x_53 = OpVariable %_ptr_Function_v4float Function %12
+       %x_39 = OpVariable %_ptr_Function_int Function %21
+   %x_34_phi = OpVariable %_ptr_Function_v4float Function %12
+   %x_62_phi = OpVariable %_ptr_Function_int Function %21
+   %x_53_phi = OpVariable %_ptr_Function_v4float Function %12
+   %x_56_phi = OpVariable %_ptr_Function_int Function %21
+       %x_54 = OpVariable %_ptr_Function_v4float Function %12
+       %x_57 = OpVariable %_ptr_Function_int Function %21
+         %34 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %37 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %38 = OpLoad %int %37
+               OpStore %x_33_phi %40
+               OpStore %x_36_phi %35
+               OpStore %x_38_phi %38
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %49 = OpLoad %v4float %x_33_phi
+         %50 = OpLoad %int %x_36_phi
+               OpStore %x_36 %50
+         %51 = OpLoad %int %x_38_phi
+         %53 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_4
+         %54 = OpLoad %int %53
+         %55 = OpSLessThan %bool %51 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpBranch %56
+         %58 = OpLabel
+               OpBranch %42
+         %56 = OpLabel
+               OpSelectionMerge %61 None
+               OpSwitch %uint_0 %62
+         %62 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_3
+         %65 = OpLoad %int %64
+         %66 = OpSGreaterThan %bool %51 %65
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+               OpStore %x_34_phi %49
+               OpStore %x_62_phi %int_2
+               OpBranch %61
+         %67 = OpLabel
+               OpStore %x_53_phi %49
+               OpStore %x_56_phi %35
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %76 = OpLoad %v4float %x_53_phi
+               OpStore %x_53 %76
+         %77 = OpLoad %int %x_56_phi
+         %78 = OpSLessThan %bool %77 %54
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %71
+         %79 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+         %83 = OpIAdd %int %51 %77
+         %82 = OpConvertSToF %float %83
+         %84 = OpCompositeConstruct %v4float %82 %82 %82 %82
+               OpStore %x_54 %84
+         %85 = OpIAdd %int %77 %int_1
+               OpStore %x_57 %85
+         %86 = OpLoad %v4float %x_54
+               OpStore %x_53_phi %86
+         %87 = OpLoad %int %x_57
+               OpStore %x_56_phi %87
+               OpBranch %70
+         %71 = OpLabel
+         %88 = OpLoad %v4float %x_53
+               OpStore %x_GLF_color %88
+         %89 = OpLoad %v4float %x_53
+               OpStore %x_34_phi %89
+               OpStore %x_62_phi %38
+               OpBranch %61
+         %61 = OpLabel
+         %90 = OpLoad %v4float %x_34_phi
+         %91 = OpLoad %int %x_62_phi
+               OpBranch %43
+         %43 = OpLabel
+         %92 = OpIAdd %int %51 %int_1
+               OpStore %x_39 %92
+               OpStore %x_33_phi %90
+         %94 = OpLoad %int %x_36
+         %95 = OpCopyObject %int %91
+         %96 = OpIAdd %int %94 %95
+         %93 = OpCopyObject %int %96
+               OpStore %x_36_phi %93
+         %97 = OpLoad %int %x_39
+               OpStore %x_38_phi %97
+               OpBranch %41
+         %42 = OpLabel
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_2
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %100
+        %103 = OpCompositeConstruct %v4float %101 %101 %101 %101
+        %104 = OpFOrdEqual %v4bool %98 %103
+        %102 = OpAll %bool %104
+               OpStore %x_75_phi %102
+               OpSelectionMerge %106 None
+               OpBranchConditional %102 %107 %106
+        %107 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_5
+        %110 = OpLoad %int %109
+        %111 = OpLoad %int %x_36
+        %112 = OpCopyObject %int %110
+        %113 = OpIEqual %bool %111 %112
+               OpStore %x_74 %113
+        %114 = OpLoad %bool %x_74
+               OpStore %x_75_phi %114
+               OpBranch %106
+        %106 = OpLabel
+        %115 = OpLoad %bool %x_75_phi
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+        %119 = OpConvertSToF %float %38
+        %120 = OpConvertSToF %float %35
+        %121 = OpCompositeConstruct %v4float %119 %120 %120 %119
+               OpStore %x_GLF_color %121
+               OpBranch %116
+        %118 = OpLabel
+        %122 = OpConvertSToF %float %35
+        %123 = OpCompositeConstruct %v4float %122 %122 %122 %122
+               OpStore %x_GLF_color %123
+               OpBranch %116
+        %116 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %124
+%tint_symbol = OpFunctionParameter %main_out
+        %128 = OpLabel
+        %129 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %129
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %131 = OpLabel
+        %132 = OpFunctionCall %void %main_1
+        %134 = OpLoad %v4float %x_GLF_color
+        %135 = OpCompositeConstruct %main_out %134
+        %133 = OpFunctionCall %void %tint_symbol_2 %135
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..295609c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl.expected.wgsl
@@ -0,0 +1,113 @@
+type Arr = [[stride(16)]] array<i32, 6>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : i32;
+  var x_74 : bool;
+  var x_33_phi : vec4<f32>;
+  var x_36_phi : i32;
+  var x_38_phi : i32;
+  var x_75_phi : bool;
+  let x_29 : i32 = x_5.x_GLF_uniform_int_values[0];
+  let x_31 : i32 = x_5.x_GLF_uniform_int_values[1];
+  x_33_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  x_36_phi = x_29;
+  x_38_phi = x_31;
+  loop {
+    var x_53 : vec4<f32>;
+    var x_39 : i32;
+    var x_34_phi : vec4<f32>;
+    var x_62_phi : i32;
+    let x_33 : vec4<f32> = x_33_phi;
+    x_36 = x_36_phi;
+    let x_38 : i32 = x_38_phi;
+    let x_41 : i32 = x_5.x_GLF_uniform_int_values[4];
+    if ((x_38 < x_41)) {
+    } else {
+      break;
+    }
+    var x_53_phi : vec4<f32>;
+    var x_56_phi : i32;
+    switch(0u) {
+      default: {
+        let x_48 : i32 = x_5.x_GLF_uniform_int_values[3];
+        if ((x_38 > x_48)) {
+          x_34_phi = x_33;
+          x_62_phi = 2;
+          break;
+        }
+        x_53_phi = x_33;
+        x_56_phi = x_29;
+        loop {
+          var x_54 : vec4<f32>;
+          var x_57 : i32;
+          x_53 = x_53_phi;
+          let x_56 : i32 = x_56_phi;
+          if ((x_56 < x_41)) {
+          } else {
+            break;
+          }
+
+          continuing {
+            let x_61 : f32 = f32((x_38 + x_56));
+            x_54 = vec4<f32>(x_61, x_61, x_61, x_61);
+            x_57 = (x_56 + 1);
+            x_53_phi = x_54;
+            x_56_phi = x_57;
+          }
+        }
+        x_GLF_color = x_53;
+        x_34_phi = x_53;
+        x_62_phi = x_31;
+      }
+    }
+    let x_34 : vec4<f32> = x_34_phi;
+    let x_62 : i32 = x_62_phi;
+
+    continuing {
+      x_39 = (x_38 + 1);
+      x_33_phi = x_34;
+      x_36_phi = bitcast<i32>((x_36 + bitcast<i32>(x_62)));
+      x_38_phi = x_39;
+    }
+  }
+  let x_63 : vec4<f32> = x_GLF_color;
+  let x_65 : i32 = x_5.x_GLF_uniform_int_values[2];
+  let x_66 : f32 = f32(x_65);
+  let x_69 : bool = all((x_63 == vec4<f32>(x_66, x_66, x_66, x_66)));
+  x_75_phi = x_69;
+  if (x_69) {
+    let x_73 : i32 = x_5.x_GLF_uniform_int_values[5];
+    x_74 = (x_36 == bitcast<i32>(x_73));
+    x_75_phi = x_74;
+  }
+  let x_75 : bool = x_75_phi;
+  if (x_75) {
+    let x_79 : f32 = f32(x_31);
+    let x_80 : f32 = f32(x_29);
+    x_GLF_color = vec4<f32>(x_79, x_80, x_80, x_79);
+  } else {
+    let x_82 : f32 = f32(x_29);
+    x_GLF_color = vec4<f32>(x_82, x_82, x_82, x_82);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm
new file mode 100644
index 0000000..38ac12b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm
@@ -0,0 +1,174 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+        %int = OpTypeInt 32 1
+     %int_40 = OpConstant %int 40
+       %bool = OpTypeBool
+%float_0_100000001 = OpConstant %float 0.100000001
+         %29 = OpConstantComposite %v3float %float_0_100000001 %float_0_100000001 %float_0_100000001
+     %int_60 = OpConstant %int 60
+%float_0_200000003 = OpConstant %float 0.200000003
+         %32 = OpConstantComposite %v3float %float_0_200000003 %float_0_200000003 %float_0_200000003
+   %float_80 = OpConstant %float 80
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_00999999978 = OpConstant %float 0.00999999978
+    %int_100 = OpConstant %int 100
+    %int_500 = OpConstant %int 500
+%float_0_540302277 = OpConstant %float 0.540302277
+%float_n0_99996084 = OpConstant %float -0.99996084
+         %44 = OpConstantComposite %v3float %float_0_540302277 %float_0_540302277 %float_n0_99996084
+%float_1_01999998 = OpConstant %float 1.01999998
+     %uint_2 = OpConstant %uint 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %10
+         %50 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function
+          %b = OpVariable %_ptr_Function_v3float Function
+               OpStore %a %15
+               OpStore %b %19
+         %51 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpConvertFToS %int %52
+         %54 = OpSLessThan %bool %53 %int_40
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpStore %b %29
+               OpBranch %55
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %59 = OpLoad %float %58
+         %60 = OpConvertFToS %int %59
+         %61 = OpSLessThan %bool %60 %int_60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+               OpStore %b %32
+               OpBranch %62
+         %64 = OpLabel
+         %65 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %66 = OpLoad %float %65
+         %67 = OpFOrdLessThan %bool %66 %float_80
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %74 = OpLoad %float %73
+         %75 = OpCompositeConstruct %v3float %74 %74 %74
+         %76 = OpCompositeConstruct %v3float %72 %72 %72
+         %77 = OpFAdd %v3float %76 %75
+         %78 = OpExtInst %v3float %1 Cos %77
+         %79 = OpCompositeConstruct %v3float %float_0_00999999978 %float_0_00999999978 %float_0_00999999978
+         %80 = OpFAdd %v3float %78 %79
+               OpStore %b %80
+               OpBranch %68
+         %70 = OpLabel
+         %81 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %82 = OpLoad %float %81
+         %83 = OpConvertFToS %int %82
+         %84 = OpSLessThan %bool %83 %int_100
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+         %88 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %89 = OpLoad %float %88
+         %90 = OpCompositeConstruct %v3float %89 %89 %89
+         %91 = OpExtInst %v3float %1 Cos %90
+               OpStore %b %91
+               OpBranch %85
+         %87 = OpLabel
+         %92 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %93 = OpLoad %float %92
+         %94 = OpConvertFToS %int %93
+         %95 = OpSLessThan %bool %94 %int_500
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+               OpStore %b %44
+               OpBranch %96
+         %96 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %98 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpFOrdLessThan %bool %99 %float_1_01999998
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Function_float %b %uint_1
+        %104 = OpLoad %float %103
+        %105 = OpFOrdLessThan %bool %104 %float_1_01999998
+               OpBranch %101
+        %101 = OpLabel
+        %106 = OpPhi %bool %100 %55 %105 %102
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+        %109 = OpAccessChain %_ptr_Function_float %b %uint_2
+        %110 = OpLoad %float %109
+        %111 = OpFOrdLessThan %bool %110 %float_1_01999998
+               OpBranch %107
+        %107 = OpLabel
+        %112 = OpPhi %bool %106 %101 %111 %108
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %115
+        %114 = OpLabel
+               OpStore %_GLF_color %48
+               OpBranch %113
+        %115 = OpLabel
+               OpStore %_GLF_color %49
+               OpBranch %113
+        %113 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2f55ee9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,83 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 a = float2(0.0f, 0.0f);
+  float3 b = float3(0.0f, 0.0f, 0.0f);
+  bool x_105 = false;
+  bool x_111 = false;
+  bool x_106_phi = false;
+  bool x_112_phi = false;
+  a = float2(1.0f, 1.0f);
+  b = float3(0.0f, 0.0f, 0.0f);
+  const float x_52 = gl_FragCoord.y;
+  if ((int(x_52) < 40)) {
+    b = float3(0.100000001f, 0.100000001f, 0.100000001f);
+  } else {
+    const float x_59 = gl_FragCoord.y;
+    if ((int(x_59) < 60)) {
+      b = float3(0.200000003f, 0.200000003f, 0.200000003f);
+    } else {
+      const float x_66 = gl_FragCoord.y;
+      if ((x_66 < 80.0f)) {
+        const float x_72 = a.x;
+        const float x_74 = asfloat(x_8[0].x);
+        b = (cos((float3(x_72, x_72, x_72) + float3(x_74, x_74, x_74))) + float3(0.01f, 0.01f, 0.01f));
+      } else {
+        const float x_82 = gl_FragCoord.y;
+        if ((int(x_82) < 100)) {
+          const float x_89 = asfloat(x_8[0].x);
+          b = cos(float3(x_89, x_89, x_89));
+        } else {
+          const float x_93 = gl_FragCoord.y;
+          if ((int(x_93) < 500)) {
+            b = float3(0.540302277f, 0.540302277f, -0.99996084f);
+          }
+        }
+      }
+    }
+  }
+  const float x_99 = b.x;
+  const bool x_100 = (x_99 < 1.019999981f);
+  x_106_phi = x_100;
+  if (x_100) {
+    const float x_104 = b.y;
+    x_105 = (x_104 < 1.019999981f);
+    x_106_phi = x_105;
+  }
+  const bool x_106 = x_106_phi;
+  x_112_phi = x_106;
+  if (x_106) {
+    const float x_110 = b.z;
+    x_111 = (x_110 < 1.019999981f);
+    x_112_phi = x_111;
+  }
+  if (x_112_phi) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a68c333
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 a = 0.0f;
+  float3 b = 0.0f;
+  bool x_105 = false;
+  bool x_111 = false;
+  bool x_106_phi = false;
+  bool x_112_phi = false;
+  a = float2(1.0f, 1.0f);
+  b = float3(0.0f, 0.0f, 0.0f);
+  float const x_52 = (*(tint_symbol_5)).y;
+  if ((int(x_52) < 40)) {
+    b = float3(0.100000001f, 0.100000001f, 0.100000001f);
+  } else {
+    float const x_59 = (*(tint_symbol_5)).y;
+    if ((int(x_59) < 60)) {
+      b = float3(0.200000003f, 0.200000003f, 0.200000003f);
+    } else {
+      float const x_66 = (*(tint_symbol_5)).y;
+      if ((x_66 < 80.0f)) {
+        float const x_72 = a.x;
+        float const x_74 = x_8.one;
+        b = (cos((float3(x_72, x_72, x_72) + float3(x_74, x_74, x_74))) + float3(0.01f, 0.01f, 0.01f));
+      } else {
+        float const x_82 = (*(tint_symbol_5)).y;
+        if ((int(x_82) < 100)) {
+          float const x_89 = x_8.one;
+          b = cos(float3(x_89, x_89, x_89));
+        } else {
+          float const x_93 = (*(tint_symbol_5)).y;
+          if ((int(x_93) < 500)) {
+            b = float3(0.540302277f, 0.540302277f, -0.99996084f);
+          }
+        }
+      }
+    }
+  }
+  float const x_99 = b.x;
+  bool const x_100 = (x_99 < 1.019999981f);
+  x_106_phi = x_100;
+  if (x_100) {
+    float const x_104 = b.y;
+    x_105 = (x_104 < 1.019999981f);
+    x_106_phi = x_105;
+  }
+  bool const x_106 = x_106_phi;
+  x_112_phi = x_106;
+  if (x_106) {
+    float const x_110 = b.z;
+    x_111 = (x_110 < 1.019999981f);
+    x_112_phi = x_111;
+  }
+  bool const x_112 = x_112_phi;
+  if (x_112) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f4d0f97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,229 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 142
+; Schema: 0
+               OpCapability Shader
+         %76 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_105 "x_105"
+               OpName %x_111 "x_111"
+               OpName %x_106_phi "x_106_phi"
+               OpName %x_112_phi "x_112_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %21 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %25 = OpConstantNull %v3float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %29 = OpConstantNull %bool
+    %float_1 = OpConstant %float 1
+         %34 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+        %int = OpTypeInt 32 1
+     %int_40 = OpConstant %int 40
+%float_0_100000001 = OpConstant %float 0.100000001
+         %50 = OpConstantComposite %v3float %float_0_100000001 %float_0_100000001 %float_0_100000001
+     %int_60 = OpConstant %int 60
+%float_0_200000003 = OpConstant %float 0.200000003
+         %60 = OpConstantComposite %v3float %float_0_200000003 %float_0_200000003 %float_0_200000003
+   %float_80 = OpConstant %float 80
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_00999999978 = OpConstant %float 0.00999999978
+         %81 = OpConstantComposite %v3float %float_0_00999999978 %float_0_00999999978 %float_0_00999999978
+    %int_100 = OpConstant %int 100
+    %int_500 = OpConstant %int 500
+%float_0_540302277 = OpConstant %float 0.540302277
+%float_n0_99996084 = OpConstant %float -0.99996084
+        %104 = OpConstantComposite %v3float %float_0_540302277 %float_0_540302277 %float_n0_99996084
+%float_1_01999998 = OpConstant %float 1.01999998
+     %uint_2 = OpConstant %uint 2
+        %127 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %128 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %129 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function %21
+          %b = OpVariable %_ptr_Function_v3float Function %25
+      %x_105 = OpVariable %_ptr_Function_bool Function %29
+      %x_111 = OpVariable %_ptr_Function_bool Function %29
+  %x_106_phi = OpVariable %_ptr_Function_bool Function %29
+  %x_112_phi = OpVariable %_ptr_Function_bool Function %29
+               OpStore %a %34
+               OpStore %b %36
+         %40 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpConvertFToS %int %41
+         %45 = OpSLessThan %bool %42 %int_40
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %b %50
+               OpBranch %46
+         %48 = OpLabel
+         %51 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpConvertFToS %int %52
+         %55 = OpSLessThan %bool %53 %int_60
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpStore %b %60
+               OpBranch %56
+         %58 = OpLabel
+         %61 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %62 = OpLoad %float %61
+         %64 = OpFOrdLessThan %bool %62 %float_80
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+         %74 = OpLoad %float %73
+         %77 = OpCompositeConstruct %v3float %71 %71 %71
+         %78 = OpCompositeConstruct %v3float %74 %74 %74
+         %79 = OpFAdd %v3float %77 %78
+         %75 = OpExtInst %v3float %76 Cos %79
+         %82 = OpFAdd %v3float %75 %81
+               OpStore %b %82
+               OpBranch %65
+         %67 = OpLabel
+         %83 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %84 = OpLoad %float %83
+         %85 = OpConvertFToS %int %84
+         %87 = OpSLessThan %bool %85 %int_100
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+         %92 = OpLoad %float %91
+         %94 = OpCompositeConstruct %v3float %92 %92 %92
+         %93 = OpExtInst %v3float %76 Cos %94
+               OpStore %b %93
+               OpBranch %88
+         %90 = OpLabel
+         %95 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpConvertFToS %int %96
+         %99 = OpSLessThan %bool %97 %int_500
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %100
+        %101 = OpLabel
+               OpStore %b %104
+               OpBranch %100
+        %100 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+        %105 = OpAccessChain %_ptr_Function_float %b %uint_0
+        %106 = OpLoad %float %105
+        %108 = OpFOrdLessThan %bool %106 %float_1_01999998
+               OpStore %x_106_phi %108
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+        %111 = OpAccessChain %_ptr_Function_float %b %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpFOrdLessThan %bool %112 %float_1_01999998
+               OpStore %x_105 %113
+        %114 = OpLoad %bool %x_105
+               OpStore %x_106_phi %114
+               OpBranch %109
+        %109 = OpLabel
+        %115 = OpLoad %bool %x_106_phi
+               OpStore %x_112_phi %115
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+        %119 = OpAccessChain %_ptr_Function_float %b %uint_2
+        %120 = OpLoad %float %119
+        %121 = OpFOrdLessThan %bool %120 %float_1_01999998
+               OpStore %x_111 %121
+        %122 = OpLoad %bool %x_111
+               OpStore %x_112_phi %122
+               OpBranch %116
+        %116 = OpLabel
+        %123 = OpLoad %bool %x_112_phi
+               OpSelectionMerge %124 None
+               OpBranchConditional %123 %125 %126
+        %125 = OpLabel
+               OpStore %x_GLF_color %127
+               OpBranch %124
+        %126 = OpLabel
+               OpStore %x_GLF_color %128
+               OpBranch %124
+        %124 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %129
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %133 = OpLabel
+        %134 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %134
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+        %136 = OpLabel
+        %137 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %137
+        %138 = OpFunctionCall %void %main_1
+        %140 = OpLoad %v4float %x_GLF_color
+        %141 = OpCompositeConstruct %main_out %140
+        %139 = OpFunctionCall %void %tint_symbol_3 %141
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..017a1d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,82 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec3<f32>;
+  var x_105 : bool;
+  var x_111 : bool;
+  var x_106_phi : bool;
+  var x_112_phi : bool;
+  a = vec2<f32>(1.0, 1.0);
+  b = vec3<f32>(0.0, 0.0, 0.0);
+  let x_52 : f32 = gl_FragCoord.y;
+  if ((i32(x_52) < 40)) {
+    b = vec3<f32>(0.100000001, 0.100000001, 0.100000001);
+  } else {
+    let x_59 : f32 = gl_FragCoord.y;
+    if ((i32(x_59) < 60)) {
+      b = vec3<f32>(0.200000003, 0.200000003, 0.200000003);
+    } else {
+      let x_66 : f32 = gl_FragCoord.y;
+      if ((x_66 < 80.0)) {
+        let x_72 : f32 = a.x;
+        let x_74 : f32 = x_8.one;
+        b = (cos((vec3<f32>(x_72, x_72, x_72) + vec3<f32>(x_74, x_74, x_74))) + vec3<f32>(0.01, 0.01, 0.01));
+      } else {
+        let x_82 : f32 = gl_FragCoord.y;
+        if ((i32(x_82) < 100)) {
+          let x_89 : f32 = x_8.one;
+          b = cos(vec3<f32>(x_89, x_89, x_89));
+        } else {
+          let x_93 : f32 = gl_FragCoord.y;
+          if ((i32(x_93) < 500)) {
+            b = vec3<f32>(0.540302277, 0.540302277, -0.99996084);
+          }
+        }
+      }
+    }
+  }
+  let x_99 : f32 = b.x;
+  let x_100 : bool = (x_99 < 1.019999981);
+  x_106_phi = x_100;
+  if (x_100) {
+    let x_104 : f32 = b.y;
+    x_105 = (x_104 < 1.019999981);
+    x_106_phi = x_105;
+  }
+  let x_106 : bool = x_106_phi;
+  x_112_phi = x_106;
+  if (x_106) {
+    let x_110 : f32 = b.z;
+    x_111 = (x_110 < 1.019999981);
+    x_112_phi = x_111;
+  }
+  let x_112 : bool = x_112_phi;
+  if (x_112) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
new file mode 100644
index 0000000..017a1d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
@@ -0,0 +1,82 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec3<f32>;
+  var x_105 : bool;
+  var x_111 : bool;
+  var x_106_phi : bool;
+  var x_112_phi : bool;
+  a = vec2<f32>(1.0, 1.0);
+  b = vec3<f32>(0.0, 0.0, 0.0);
+  let x_52 : f32 = gl_FragCoord.y;
+  if ((i32(x_52) < 40)) {
+    b = vec3<f32>(0.100000001, 0.100000001, 0.100000001);
+  } else {
+    let x_59 : f32 = gl_FragCoord.y;
+    if ((i32(x_59) < 60)) {
+      b = vec3<f32>(0.200000003, 0.200000003, 0.200000003);
+    } else {
+      let x_66 : f32 = gl_FragCoord.y;
+      if ((x_66 < 80.0)) {
+        let x_72 : f32 = a.x;
+        let x_74 : f32 = x_8.one;
+        b = (cos((vec3<f32>(x_72, x_72, x_72) + vec3<f32>(x_74, x_74, x_74))) + vec3<f32>(0.01, 0.01, 0.01));
+      } else {
+        let x_82 : f32 = gl_FragCoord.y;
+        if ((i32(x_82) < 100)) {
+          let x_89 : f32 = x_8.one;
+          b = cos(vec3<f32>(x_89, x_89, x_89));
+        } else {
+          let x_93 : f32 = gl_FragCoord.y;
+          if ((i32(x_93) < 500)) {
+            b = vec3<f32>(0.540302277, 0.540302277, -0.99996084);
+          }
+        }
+      }
+    }
+  }
+  let x_99 : f32 = b.x;
+  let x_100 : bool = (x_99 < 1.019999981);
+  x_106_phi = x_100;
+  if (x_100) {
+    let x_104 : f32 = b.y;
+    x_105 = (x_104 < 1.019999981);
+    x_106_phi = x_105;
+  }
+  let x_106 : bool = x_106_phi;
+  x_112_phi = x_106;
+  if (x_106) {
+    let x_110 : f32 = b.z;
+    x_111 = (x_110 < 1.019999981);
+    x_112_phi = x_111;
+  }
+  let x_112 : bool = x_112_phi;
+  if (x_112) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2f55ee9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,83 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 a = float2(0.0f, 0.0f);
+  float3 b = float3(0.0f, 0.0f, 0.0f);
+  bool x_105 = false;
+  bool x_111 = false;
+  bool x_106_phi = false;
+  bool x_112_phi = false;
+  a = float2(1.0f, 1.0f);
+  b = float3(0.0f, 0.0f, 0.0f);
+  const float x_52 = gl_FragCoord.y;
+  if ((int(x_52) < 40)) {
+    b = float3(0.100000001f, 0.100000001f, 0.100000001f);
+  } else {
+    const float x_59 = gl_FragCoord.y;
+    if ((int(x_59) < 60)) {
+      b = float3(0.200000003f, 0.200000003f, 0.200000003f);
+    } else {
+      const float x_66 = gl_FragCoord.y;
+      if ((x_66 < 80.0f)) {
+        const float x_72 = a.x;
+        const float x_74 = asfloat(x_8[0].x);
+        b = (cos((float3(x_72, x_72, x_72) + float3(x_74, x_74, x_74))) + float3(0.01f, 0.01f, 0.01f));
+      } else {
+        const float x_82 = gl_FragCoord.y;
+        if ((int(x_82) < 100)) {
+          const float x_89 = asfloat(x_8[0].x);
+          b = cos(float3(x_89, x_89, x_89));
+        } else {
+          const float x_93 = gl_FragCoord.y;
+          if ((int(x_93) < 500)) {
+            b = float3(0.540302277f, 0.540302277f, -0.99996084f);
+          }
+        }
+      }
+    }
+  }
+  const float x_99 = b.x;
+  const bool x_100 = (x_99 < 1.019999981f);
+  x_106_phi = x_100;
+  if (x_100) {
+    const float x_104 = b.y;
+    x_105 = (x_104 < 1.019999981f);
+    x_106_phi = x_105;
+  }
+  const bool x_106 = x_106_phi;
+  x_112_phi = x_106;
+  if (x_106) {
+    const float x_110 = b.z;
+    x_111 = (x_110 < 1.019999981f);
+    x_112_phi = x_111;
+  }
+  if (x_112_phi) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a68c333
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.msl
@@ -0,0 +1,83 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 a = 0.0f;
+  float3 b = 0.0f;
+  bool x_105 = false;
+  bool x_111 = false;
+  bool x_106_phi = false;
+  bool x_112_phi = false;
+  a = float2(1.0f, 1.0f);
+  b = float3(0.0f, 0.0f, 0.0f);
+  float const x_52 = (*(tint_symbol_5)).y;
+  if ((int(x_52) < 40)) {
+    b = float3(0.100000001f, 0.100000001f, 0.100000001f);
+  } else {
+    float const x_59 = (*(tint_symbol_5)).y;
+    if ((int(x_59) < 60)) {
+      b = float3(0.200000003f, 0.200000003f, 0.200000003f);
+    } else {
+      float const x_66 = (*(tint_symbol_5)).y;
+      if ((x_66 < 80.0f)) {
+        float const x_72 = a.x;
+        float const x_74 = x_8.one;
+        b = (cos((float3(x_72, x_72, x_72) + float3(x_74, x_74, x_74))) + float3(0.01f, 0.01f, 0.01f));
+      } else {
+        float const x_82 = (*(tint_symbol_5)).y;
+        if ((int(x_82) < 100)) {
+          float const x_89 = x_8.one;
+          b = cos(float3(x_89, x_89, x_89));
+        } else {
+          float const x_93 = (*(tint_symbol_5)).y;
+          if ((int(x_93) < 500)) {
+            b = float3(0.540302277f, 0.540302277f, -0.99996084f);
+          }
+        }
+      }
+    }
+  }
+  float const x_99 = b.x;
+  bool const x_100 = (x_99 < 1.019999981f);
+  x_106_phi = x_100;
+  if (x_100) {
+    float const x_104 = b.y;
+    x_105 = (x_104 < 1.019999981f);
+    x_106_phi = x_105;
+  }
+  bool const x_106 = x_106_phi;
+  x_112_phi = x_106;
+  if (x_106) {
+    float const x_110 = b.z;
+    x_111 = (x_110 < 1.019999981f);
+    x_112_phi = x_111;
+  }
+  bool const x_112 = x_112_phi;
+  if (x_112) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f4d0f97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,229 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 142
+; Schema: 0
+               OpCapability Shader
+         %76 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_105 "x_105"
+               OpName %x_111 "x_111"
+               OpName %x_106_phi "x_106_phi"
+               OpName %x_112_phi "x_112_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %21 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %25 = OpConstantNull %v3float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %29 = OpConstantNull %bool
+    %float_1 = OpConstant %float 1
+         %34 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+        %int = OpTypeInt 32 1
+     %int_40 = OpConstant %int 40
+%float_0_100000001 = OpConstant %float 0.100000001
+         %50 = OpConstantComposite %v3float %float_0_100000001 %float_0_100000001 %float_0_100000001
+     %int_60 = OpConstant %int 60
+%float_0_200000003 = OpConstant %float 0.200000003
+         %60 = OpConstantComposite %v3float %float_0_200000003 %float_0_200000003 %float_0_200000003
+   %float_80 = OpConstant %float 80
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_00999999978 = OpConstant %float 0.00999999978
+         %81 = OpConstantComposite %v3float %float_0_00999999978 %float_0_00999999978 %float_0_00999999978
+    %int_100 = OpConstant %int 100
+    %int_500 = OpConstant %int 500
+%float_0_540302277 = OpConstant %float 0.540302277
+%float_n0_99996084 = OpConstant %float -0.99996084
+        %104 = OpConstantComposite %v3float %float_0_540302277 %float_0_540302277 %float_n0_99996084
+%float_1_01999998 = OpConstant %float 1.01999998
+     %uint_2 = OpConstant %uint 2
+        %127 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %128 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %129 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function %21
+          %b = OpVariable %_ptr_Function_v3float Function %25
+      %x_105 = OpVariable %_ptr_Function_bool Function %29
+      %x_111 = OpVariable %_ptr_Function_bool Function %29
+  %x_106_phi = OpVariable %_ptr_Function_bool Function %29
+  %x_112_phi = OpVariable %_ptr_Function_bool Function %29
+               OpStore %a %34
+               OpStore %b %36
+         %40 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpConvertFToS %int %41
+         %45 = OpSLessThan %bool %42 %int_40
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %b %50
+               OpBranch %46
+         %48 = OpLabel
+         %51 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpConvertFToS %int %52
+         %55 = OpSLessThan %bool %53 %int_60
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpStore %b %60
+               OpBranch %56
+         %58 = OpLabel
+         %61 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %62 = OpLoad %float %61
+         %64 = OpFOrdLessThan %bool %62 %float_80
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+         %74 = OpLoad %float %73
+         %77 = OpCompositeConstruct %v3float %71 %71 %71
+         %78 = OpCompositeConstruct %v3float %74 %74 %74
+         %79 = OpFAdd %v3float %77 %78
+         %75 = OpExtInst %v3float %76 Cos %79
+         %82 = OpFAdd %v3float %75 %81
+               OpStore %b %82
+               OpBranch %65
+         %67 = OpLabel
+         %83 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %84 = OpLoad %float %83
+         %85 = OpConvertFToS %int %84
+         %87 = OpSLessThan %bool %85 %int_100
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+         %92 = OpLoad %float %91
+         %94 = OpCompositeConstruct %v3float %92 %92 %92
+         %93 = OpExtInst %v3float %76 Cos %94
+               OpStore %b %93
+               OpBranch %88
+         %90 = OpLabel
+         %95 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpConvertFToS %int %96
+         %99 = OpSLessThan %bool %97 %int_500
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %100
+        %101 = OpLabel
+               OpStore %b %104
+               OpBranch %100
+        %100 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+        %105 = OpAccessChain %_ptr_Function_float %b %uint_0
+        %106 = OpLoad %float %105
+        %108 = OpFOrdLessThan %bool %106 %float_1_01999998
+               OpStore %x_106_phi %108
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+        %111 = OpAccessChain %_ptr_Function_float %b %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpFOrdLessThan %bool %112 %float_1_01999998
+               OpStore %x_105 %113
+        %114 = OpLoad %bool %x_105
+               OpStore %x_106_phi %114
+               OpBranch %109
+        %109 = OpLabel
+        %115 = OpLoad %bool %x_106_phi
+               OpStore %x_112_phi %115
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+        %119 = OpAccessChain %_ptr_Function_float %b %uint_2
+        %120 = OpLoad %float %119
+        %121 = OpFOrdLessThan %bool %120 %float_1_01999998
+               OpStore %x_111 %121
+        %122 = OpLoad %bool %x_111
+               OpStore %x_112_phi %122
+               OpBranch %116
+        %116 = OpLabel
+        %123 = OpLoad %bool %x_112_phi
+               OpSelectionMerge %124 None
+               OpBranchConditional %123 %125 %126
+        %125 = OpLabel
+               OpStore %x_GLF_color %127
+               OpBranch %124
+        %126 = OpLabel
+               OpStore %x_GLF_color %128
+               OpBranch %124
+        %124 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %129
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %133 = OpLabel
+        %134 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %134
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+        %136 = OpLabel
+        %137 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %137
+        %138 = OpFunctionCall %void %main_1
+        %140 = OpLoad %v4float %x_GLF_color
+        %141 = OpCompositeConstruct %main_out %140
+        %139 = OpFunctionCall %void %tint_symbol_3 %141
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..017a1d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,82 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec3<f32>;
+  var x_105 : bool;
+  var x_111 : bool;
+  var x_106_phi : bool;
+  var x_112_phi : bool;
+  a = vec2<f32>(1.0, 1.0);
+  b = vec3<f32>(0.0, 0.0, 0.0);
+  let x_52 : f32 = gl_FragCoord.y;
+  if ((i32(x_52) < 40)) {
+    b = vec3<f32>(0.100000001, 0.100000001, 0.100000001);
+  } else {
+    let x_59 : f32 = gl_FragCoord.y;
+    if ((i32(x_59) < 60)) {
+      b = vec3<f32>(0.200000003, 0.200000003, 0.200000003);
+    } else {
+      let x_66 : f32 = gl_FragCoord.y;
+      if ((x_66 < 80.0)) {
+        let x_72 : f32 = a.x;
+        let x_74 : f32 = x_8.one;
+        b = (cos((vec3<f32>(x_72, x_72, x_72) + vec3<f32>(x_74, x_74, x_74))) + vec3<f32>(0.01, 0.01, 0.01));
+      } else {
+        let x_82 : f32 = gl_FragCoord.y;
+        if ((i32(x_82) < 100)) {
+          let x_89 : f32 = x_8.one;
+          b = cos(vec3<f32>(x_89, x_89, x_89));
+        } else {
+          let x_93 : f32 = gl_FragCoord.y;
+          if ((i32(x_93) < 500)) {
+            b = vec3<f32>(0.540302277, 0.540302277, -0.99996084);
+          }
+        }
+      }
+    }
+  }
+  let x_99 : f32 = b.x;
+  let x_100 : bool = (x_99 < 1.019999981);
+  x_106_phi = x_100;
+  if (x_100) {
+    let x_104 : f32 = b.y;
+    x_105 = (x_104 < 1.019999981);
+    x_106_phi = x_105;
+  }
+  let x_106 : bool = x_106_phi;
+  x_112_phi = x_106;
+  if (x_106) {
+    let x_110 : f32 = b.z;
+    x_111 = (x_110 < 1.019999981);
+    x_112_phi = x_111;
+  }
+  let x_112 : bool = x_112_phi;
+  if (x_112) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm
new file mode 100644
index 0000000..0315e97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm
@@ -0,0 +1,180 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "arr"
+               OpName %func_struct_S_i1_2_1_i1_ "func(struct-S-i1[2]1;i1;"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %s_0 "s"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %S 0 RelaxedPrecision
+               OpDecorate %func_struct_S_i1_2_1_i1_ RelaxedPrecision
+               OpDecorate %x RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %a RelaxedPrecision
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %j RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %34 RelaxedPrecision
+               OpDecorate %35 RelaxedPrecision
+               OpDecorate %36 RelaxedPrecision
+               OpDecorate %37 RelaxedPrecision
+               OpDecorate %38 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %40 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+          %S = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %47 = OpTypeFunction %int %_ptr_Function_S %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %int_30 = OpConstant %int 30
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %62 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %63 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %40
+         %64 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %s_0 = OpVariable %_ptr_Function_S Function
+      %param = OpVariable %_ptr_Function_S Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %22 = OpLoad %int %i
+         %69 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %23 = OpLoad %int %69
+         %24 = OpIAdd %int %int_2 %23
+         %70 = OpSLessThan %bool %22 %24
+               OpBranchConditional %70 %71 %66
+         %71 = OpLabel
+               OpStore %j %int_0
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %25 = OpLoad %int %j
+         %76 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %26 = OpLoad %int %76
+         %27 = OpIAdd %int %int_3 %26
+         %77 = OpSLessThan %bool %25 %27
+               OpBranchConditional %77 %78 %73
+         %78 = OpLabel
+         %28 = OpLoad %int %i
+         %29 = OpLoad %int %j
+         %30 = OpIAdd %int %28 %29
+         %79 = OpLoad %S %s_0
+               OpStore %param %79
+               OpStore %param_0 %30
+         %31 = OpFunctionCall %int %func_struct_S_i1_2_1_i1_ %param %param_0
+         %32 = OpLoad %int %a
+         %33 = OpIAdd %int %32 %31
+               OpStore %a %33
+               OpBranch %74
+         %74 = OpLabel
+         %34 = OpLoad %int %j
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %j %35
+               OpBranch %72
+         %73 = OpLabel
+               OpBranch %67
+         %67 = OpLabel
+         %36 = OpLoad %int %i
+         %37 = OpIAdd %int %36 %int_1
+               OpStore %i %37
+               OpBranch %65
+         %66 = OpLabel
+         %38 = OpLoad %int %a
+         %80 = OpIEqual %bool %38 %int_30
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpStore %_GLF_color %62
+               OpBranch %81
+         %83 = OpLabel
+               OpStore %_GLF_color %63
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_struct_S_i1_2_1_i1_ = OpFunction %int None %47
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+         %84 = OpLabel
+         %16 = OpLoad %int %x
+         %17 = OpIAdd %int %16 %int_1
+         %85 = OpAccessChain %_ptr_Function_int %s %int_0 %int_1
+               OpStore %85 %17
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %18 = OpLoad %int %86
+         %87 = OpAccessChain %_ptr_Function_int %s %int_0 %18
+         %19 = OpLoad %int %87
+         %20 = OpLoad %int %x
+         %88 = OpIEqual %bool %19 %20
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+               OpReturnValue %int_n1
+         %89 = OpLabel
+         %21 = OpLoad %int %x
+               OpReturnValue %21
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a739821
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,81 @@
+struct S {
+  int arr[2];
+};
+
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_struct_S_i1_2_1_i1_(inout S s, inout int x) {
+  const int x_16 = x;
+  s.arr[1] = (x_16 + 1);
+  const int x_18 = asint(x_9[0].x);
+  const int x_19 = s.arr[x_18];
+  const int x_20 = x;
+  if ((x_19 == x_20)) {
+    return -1;
+  }
+  const int x_21 = x;
+  return x_21;
+}
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  S s_1 = (S)0;
+  S param = (S)0;
+  int param_1 = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    const int x_22 = i;
+    const int x_23 = asint(x_9[0].x);
+    if ((x_22 < (2 + x_23))) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      const int x_25 = j;
+      const int x_26 = asint(x_9[0].x);
+      if ((x_25 < (3 + x_26))) {
+      } else {
+        break;
+      }
+      const int x_28 = i;
+      const int x_29 = j;
+      param = s_1;
+      param_1 = (x_28 + x_29);
+      const int x_31 = func_struct_S_i1_2_1_i1_(param, param_1);
+      a = (a + x_31);
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  if ((a == 30)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5852dfa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct S {
+  tint_array_wrapper arr;
+};
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_struct_S_i1_2_1_i1_(constant buf0& x_9, thread S* const s, thread int* const x) {
+  int const x_16 = *(x);
+  (*(s)).arr.arr[1] = (x_16 + 1);
+  int const x_18 = x_9.one;
+  int const x_19 = (*(s)).arr.arr[x_18];
+  int const x_20 = *(x);
+  if ((x_19 == x_20)) {
+    return -1;
+  }
+  int const x_21 = *(x);
+  return x_21;
+}
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  S s_1 = {};
+  S param = {};
+  int param_1 = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_22 = i;
+    int const x_23 = x_9.one;
+    if ((x_22 < (2 + x_23))) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      int const x_25 = j;
+      int const x_26 = x_9.one;
+      if ((x_25 < (3 + x_26))) {
+      } else {
+        break;
+      }
+      int const x_28 = i;
+      int const x_29 = j;
+      S const x_79 = s_1;
+      param = x_79;
+      param_1 = (x_28 + x_29);
+      int const x_31 = func_struct_S_i1_2_1_i1_(x_9, &(param), &(param_1));
+      int const x_32 = a;
+      a = (x_32 + x_31);
+      {
+        int const x_34 = j;
+        j = (x_34 + 1);
+      }
+    }
+    {
+      int const x_36 = i;
+      i = (x_36 + 1);
+    }
+  }
+  int const x_38 = a;
+  if ((x_38 == 30)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7b4e7d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,196 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 119
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "arr"
+               OpName %func_struct_S_i1_2_1_i1_ "func_struct_S_i1_2_1_i1_"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %s_1 "s_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+          %S = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %int %_ptr_Function_S %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+       %void = OpTypeVoid
+         %45 = OpTypeFunction %void
+         %50 = OpConstantNull %int
+         %54 = OpConstantNull %S
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %int_30 = OpConstant %int 30
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %105 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %106 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %107 = OpTypeFunction %void %main_out
+%func_struct_S_i1_2_1_i1_ = OpFunction %int None %12
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+         %22 = OpLabel
+         %24 = OpLoad %int %x
+         %28 = OpAccessChain %_ptr_Function_int %s %uint_0 %int_1
+         %29 = OpIAdd %int %24 %int_1
+               OpStore %28 %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %32 = OpLoad %int %31
+         %34 = OpAccessChain %_ptr_Function_int %s %uint_0 %32
+         %35 = OpLoad %int %34
+         %37 = OpLoad %int %x
+         %38 = OpIEqual %bool %35 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %40
+         %41 = OpLabel
+               OpReturnValue %int_n1
+         %40 = OpLabel
+         %44 = OpLoad %int %x
+               OpReturnValue %44
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %45
+         %48 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %50
+          %i = OpVariable %_ptr_Function_int Function %50
+          %j = OpVariable %_ptr_Function_int Function %50
+        %s_1 = OpVariable %_ptr_Function_S Function %54
+      %param = OpVariable %_ptr_Function_S Function %54
+    %param_1 = OpVariable %_ptr_Function_int Function %50
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %64 = OpLoad %int %63
+         %66 = OpIAdd %int %int_2 %64
+         %67 = OpSLessThan %bool %62 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %59
+         %68 = OpLabel
+               OpStore %j %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %j
+         %76 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %77 = OpLoad %int %76
+         %79 = OpIAdd %int %int_3 %77
+         %80 = OpSLessThan %bool %75 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %72
+         %81 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpLoad %int %j
+         %86 = OpLoad %S %s_1
+               OpStore %param %86
+         %87 = OpIAdd %int %84 %85
+               OpStore %param_1 %87
+         %88 = OpFunctionCall %int %func_struct_S_i1_2_1_i1_ %param %param_1
+         %91 = OpLoad %int %a
+         %92 = OpIAdd %int %91 %88
+               OpStore %a %92
+               OpBranch %73
+         %73 = OpLabel
+         %93 = OpLoad %int %j
+         %94 = OpIAdd %int %93 %int_1
+               OpStore %j %94
+               OpBranch %71
+         %72 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+         %95 = OpLoad %int %i
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %i %96
+               OpBranch %58
+         %59 = OpLabel
+         %97 = OpLoad %int %a
+         %99 = OpIEqual %bool %97 %int_30
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %102
+        %101 = OpLabel
+               OpStore %x_GLF_color %105
+               OpBranch %100
+        %102 = OpLabel
+               OpStore %x_GLF_color %106
+               OpBranch %100
+        %100 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %107
+%tint_symbol = OpFunctionParameter %main_out
+        %111 = OpLabel
+        %112 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %112
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %45
+        %114 = OpLabel
+        %115 = OpFunctionCall %void %main_1
+        %117 = OpLoad %v4float %x_GLF_color
+        %118 = OpCompositeConstruct %main_out %117
+        %116 = OpFunctionCall %void %tint_symbol_2 %118
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ddc01d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,89 @@
+struct S {
+  arr : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i1_2_1_i1_(s : ptr<function, S>, x : ptr<function, i32>) -> i32 {
+  let x_16 : i32 = *(x);
+  (*(s)).arr[1] = (x_16 + 1);
+  let x_18 : i32 = x_9.one;
+  let x_19 : i32 = (*(s)).arr[x_18];
+  let x_20 : i32 = *(x);
+  if ((x_19 == x_20)) {
+    return -1;
+  }
+  let x_21 : i32 = *(x);
+  return x_21;
+}
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var j : i32;
+  var s_1 : S;
+  var param : S;
+  var param_1 : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_22 : i32 = i;
+    let x_23 : i32 = x_9.one;
+    if ((x_22 < (2 + x_23))) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_25 : i32 = j;
+      let x_26 : i32 = x_9.one;
+      if ((x_25 < (3 + x_26))) {
+      } else {
+        break;
+      }
+      let x_28 : i32 = i;
+      let x_29 : i32 = j;
+      let x_79 : S = s_1;
+      param = x_79;
+      param_1 = (x_28 + x_29);
+      let x_31 : i32 = func_struct_S_i1_2_1_i1_(&(param), &(param_1));
+      let x_32 : i32 = a;
+      a = (x_32 + x_31);
+
+      continuing {
+        let x_34 : i32 = j;
+        j = (x_34 + 1);
+      }
+    }
+
+    continuing {
+      let x_36 : i32 = i;
+      i = (x_36 + 1);
+    }
+  }
+  let x_38 : i32 = a;
+  if ((x_38 == 30)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
new file mode 100644
index 0000000..ddc01d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
@@ -0,0 +1,89 @@
+struct S {
+  arr : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i1_2_1_i1_(s : ptr<function, S>, x : ptr<function, i32>) -> i32 {
+  let x_16 : i32 = *(x);
+  (*(s)).arr[1] = (x_16 + 1);
+  let x_18 : i32 = x_9.one;
+  let x_19 : i32 = (*(s)).arr[x_18];
+  let x_20 : i32 = *(x);
+  if ((x_19 == x_20)) {
+    return -1;
+  }
+  let x_21 : i32 = *(x);
+  return x_21;
+}
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var j : i32;
+  var s_1 : S;
+  var param : S;
+  var param_1 : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_22 : i32 = i;
+    let x_23 : i32 = x_9.one;
+    if ((x_22 < (2 + x_23))) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_25 : i32 = j;
+      let x_26 : i32 = x_9.one;
+      if ((x_25 < (3 + x_26))) {
+      } else {
+        break;
+      }
+      let x_28 : i32 = i;
+      let x_29 : i32 = j;
+      let x_79 : S = s_1;
+      param = x_79;
+      param_1 = (x_28 + x_29);
+      let x_31 : i32 = func_struct_S_i1_2_1_i1_(&(param), &(param_1));
+      let x_32 : i32 = a;
+      a = (x_32 + x_31);
+
+      continuing {
+        let x_34 : i32 = j;
+        j = (x_34 + 1);
+      }
+    }
+
+    continuing {
+      let x_36 : i32 = i;
+      i = (x_36 + 1);
+    }
+  }
+  let x_38 : i32 = a;
+  if ((x_38 == 30)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a739821
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,81 @@
+struct S {
+  int arr[2];
+};
+
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_struct_S_i1_2_1_i1_(inout S s, inout int x) {
+  const int x_16 = x;
+  s.arr[1] = (x_16 + 1);
+  const int x_18 = asint(x_9[0].x);
+  const int x_19 = s.arr[x_18];
+  const int x_20 = x;
+  if ((x_19 == x_20)) {
+    return -1;
+  }
+  const int x_21 = x;
+  return x_21;
+}
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  S s_1 = (S)0;
+  S param = (S)0;
+  int param_1 = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    const int x_22 = i;
+    const int x_23 = asint(x_9[0].x);
+    if ((x_22 < (2 + x_23))) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      const int x_25 = j;
+      const int x_26 = asint(x_9[0].x);
+      if ((x_25 < (3 + x_26))) {
+      } else {
+        break;
+      }
+      const int x_28 = i;
+      const int x_29 = j;
+      param = s_1;
+      param_1 = (x_28 + x_29);
+      const int x_31 = func_struct_S_i1_2_1_i1_(param, param_1);
+      a = (a + x_31);
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  if ((a == 30)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5852dfa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[2];
+};
+struct S {
+  tint_array_wrapper arr;
+};
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_struct_S_i1_2_1_i1_(constant buf0& x_9, thread S* const s, thread int* const x) {
+  int const x_16 = *(x);
+  (*(s)).arr.arr[1] = (x_16 + 1);
+  int const x_18 = x_9.one;
+  int const x_19 = (*(s)).arr.arr[x_18];
+  int const x_20 = *(x);
+  if ((x_19 == x_20)) {
+    return -1;
+  }
+  int const x_21 = *(x);
+  return x_21;
+}
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int j = 0;
+  S s_1 = {};
+  S param = {};
+  int param_1 = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_22 = i;
+    int const x_23 = x_9.one;
+    if ((x_22 < (2 + x_23))) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      int const x_25 = j;
+      int const x_26 = x_9.one;
+      if ((x_25 < (3 + x_26))) {
+      } else {
+        break;
+      }
+      int const x_28 = i;
+      int const x_29 = j;
+      S const x_79 = s_1;
+      param = x_79;
+      param_1 = (x_28 + x_29);
+      int const x_31 = func_struct_S_i1_2_1_i1_(x_9, &(param), &(param_1));
+      int const x_32 = a;
+      a = (x_32 + x_31);
+      {
+        int const x_34 = j;
+        j = (x_34 + 1);
+      }
+    }
+    {
+      int const x_36 = i;
+      i = (x_36 + 1);
+    }
+  }
+  int const x_38 = a;
+  if ((x_38 == 30)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7b4e7d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,196 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 119
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "arr"
+               OpName %func_struct_S_i1_2_1_i1_ "func_struct_S_i1_2_1_i1_"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %s_1 "s_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+          %S = OpTypeStruct %_arr_int_uint_2
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %int %_ptr_Function_S %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_n1 = OpConstant %int -1
+       %void = OpTypeVoid
+         %45 = OpTypeFunction %void
+         %50 = OpConstantNull %int
+         %54 = OpConstantNull %S
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %int_30 = OpConstant %int 30
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %105 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %106 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %107 = OpTypeFunction %void %main_out
+%func_struct_S_i1_2_1_i1_ = OpFunction %int None %12
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+         %22 = OpLabel
+         %24 = OpLoad %int %x
+         %28 = OpAccessChain %_ptr_Function_int %s %uint_0 %int_1
+         %29 = OpIAdd %int %24 %int_1
+               OpStore %28 %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %32 = OpLoad %int %31
+         %34 = OpAccessChain %_ptr_Function_int %s %uint_0 %32
+         %35 = OpLoad %int %34
+         %37 = OpLoad %int %x
+         %38 = OpIEqual %bool %35 %37
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %40
+         %41 = OpLabel
+               OpReturnValue %int_n1
+         %40 = OpLabel
+         %44 = OpLoad %int %x
+               OpReturnValue %44
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %45
+         %48 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %50
+          %i = OpVariable %_ptr_Function_int Function %50
+          %j = OpVariable %_ptr_Function_int Function %50
+        %s_1 = OpVariable %_ptr_Function_S Function %54
+      %param = OpVariable %_ptr_Function_S Function %54
+    %param_1 = OpVariable %_ptr_Function_int Function %50
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %64 = OpLoad %int %63
+         %66 = OpIAdd %int %int_2 %64
+         %67 = OpSLessThan %bool %62 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %59
+         %68 = OpLabel
+               OpStore %j %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %j
+         %76 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %77 = OpLoad %int %76
+         %79 = OpIAdd %int %int_3 %77
+         %80 = OpSLessThan %bool %75 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %72
+         %81 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpLoad %int %j
+         %86 = OpLoad %S %s_1
+               OpStore %param %86
+         %87 = OpIAdd %int %84 %85
+               OpStore %param_1 %87
+         %88 = OpFunctionCall %int %func_struct_S_i1_2_1_i1_ %param %param_1
+         %91 = OpLoad %int %a
+         %92 = OpIAdd %int %91 %88
+               OpStore %a %92
+               OpBranch %73
+         %73 = OpLabel
+         %93 = OpLoad %int %j
+         %94 = OpIAdd %int %93 %int_1
+               OpStore %j %94
+               OpBranch %71
+         %72 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+         %95 = OpLoad %int %i
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %i %96
+               OpBranch %58
+         %59 = OpLabel
+         %97 = OpLoad %int %a
+         %99 = OpIEqual %bool %97 %int_30
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %102
+        %101 = OpLabel
+               OpStore %x_GLF_color %105
+               OpBranch %100
+        %102 = OpLabel
+               OpStore %x_GLF_color %106
+               OpBranch %100
+        %100 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %107
+%tint_symbol = OpFunctionParameter %main_out
+        %111 = OpLabel
+        %112 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %112
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %45
+        %114 = OpLabel
+        %115 = OpFunctionCall %void %main_1
+        %117 = OpLoad %v4float %x_GLF_color
+        %118 = OpCompositeConstruct %main_out %117
+        %116 = OpFunctionCall %void %tint_symbol_2 %118
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ddc01d1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,89 @@
+struct S {
+  arr : array<i32, 2>;
+};
+
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i1_2_1_i1_(s : ptr<function, S>, x : ptr<function, i32>) -> i32 {
+  let x_16 : i32 = *(x);
+  (*(s)).arr[1] = (x_16 + 1);
+  let x_18 : i32 = x_9.one;
+  let x_19 : i32 = (*(s)).arr[x_18];
+  let x_20 : i32 = *(x);
+  if ((x_19 == x_20)) {
+    return -1;
+  }
+  let x_21 : i32 = *(x);
+  return x_21;
+}
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  var j : i32;
+  var s_1 : S;
+  var param : S;
+  var param_1 : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_22 : i32 = i;
+    let x_23 : i32 = x_9.one;
+    if ((x_22 < (2 + x_23))) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_25 : i32 = j;
+      let x_26 : i32 = x_9.one;
+      if ((x_25 < (3 + x_26))) {
+      } else {
+        break;
+      }
+      let x_28 : i32 = i;
+      let x_29 : i32 = j;
+      let x_79 : S = s_1;
+      param = x_79;
+      param_1 = (x_28 + x_29);
+      let x_31 : i32 = func_struct_S_i1_2_1_i1_(&(param), &(param_1));
+      let x_32 : i32 = a;
+      a = (x_32 + x_31);
+
+      continuing {
+        let x_34 : i32 = j;
+        j = (x_34 + 1);
+      }
+    }
+
+    continuing {
+      let x_36 : i32 = i;
+      i = (x_36 + 1);
+    }
+  }
+  let x_38 : i32 = a;
+  if ((x_38 == 30)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm
new file mode 100644
index 0000000..4e856bf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm
@@ -0,0 +1,106 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %v "v"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "zero"
+               OpName %__0 ""
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Output_float = OpTypePointer Output %float
+       %main = OpFunction %void None %11
+         %33 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %v = OpVariable %_ptr_Function_v4float Function
+               OpStore %_GLF_color %16
+               OpStore %i %int_0
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %38 %40
+               OpBranchConditional %41 %42 %35
+         %42 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %48 = OpLoad %int %47
+         %49 = OpIEqual %bool %48 %int_1
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+               OpBranchConditional %false %43 %44
+         %44 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %52 = OpLoad %int %i
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %i %53
+               OpBranch %34
+         %35 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %__0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpAccessChain %_ptr_Function_float %v %uint_1
+               OpStore %57 %56
+         %58 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_1
+               OpStore %60 %59
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3cc04e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,56 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+
+void main_1() {
+  int i = 0;
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    const int x_38 = i;
+    const int x_40 = asint(x_6[0].x);
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    while (true) {
+      const int x_48 = asint(x_6[0].x);
+      if ((x_48 == 1)) {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_55 = asint(x_9[0].x);
+  v.y = float(x_55);
+  const float x_59 = v.y;
+  x_GLF_color.y = x_59;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..5e8b3f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.msl
@@ -0,0 +1,60 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct buf1 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  int i = 0;
+  float4 v = 0.0f;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    int const x_38 = i;
+    int const x_40 = x_6.one;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    while (true) {
+      int const x_48 = x_6.one;
+      if ((x_48 == 1)) {
+        *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  int const x_55 = x_9.zero;
+  v.y = float(x_55);
+  float const x_59 = v.y;
+  (*(tint_symbol_4)).y = x_59;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..527ce2e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,157 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 82
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "zero"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %53 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %70 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %v = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %x_GLF_color %25
+               OpStore %i %int_0
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpLoad %int %i
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %36 = OpLoad %int %35
+         %37 = OpSLessThan %bool %31 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %28
+         %39 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %47 = OpLoad %int %46
+         %49 = OpIEqual %bool %47 %int_1
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpSelectionMerge %55 None
+               OpBranchConditional %false %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %43
+         %55 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %27
+         %28 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %61 = OpLoad %int %60
+         %64 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %65 = OpConvertSToF %float %61
+               OpStore %64 %65
+         %66 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %67 = OpLoad %float %66
+         %69 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %69 %67
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %70
+%tint_symbol = OpFunctionParameter %main_out
+         %74 = OpLabel
+         %75 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %75
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %77 = OpLabel
+         %78 = OpFunctionCall %void %main_1
+         %80 = OpLoad %v4float %x_GLF_color
+         %81 = OpCompositeConstruct %main_out %80
+         %79 = OpFunctionCall %void %tint_symbol_2 %81
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 44[%44] is not post dominated by the back-edge block 55[%55]
+  %55 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..19c0780
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,64 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[block]]
+struct buf1 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var i : i32;
+  var v : vec4<f32>;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_6.one;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    loop {
+      let x_48 : i32 = x_6.one;
+      if ((x_48 == 1)) {
+        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      }
+
+      continuing {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_55 : i32 = x_9.zero;
+  v.y = f32(x_55);
+  let x_59 : f32 = v.y;
+  x_GLF_color.y = x_59;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
new file mode 100644
index 0000000..19c0780
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
@@ -0,0 +1,64 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[block]]
+struct buf1 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var i : i32;
+  var v : vec4<f32>;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_6.one;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    loop {
+      let x_48 : i32 = x_6.one;
+      if ((x_48 == 1)) {
+        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      }
+
+      continuing {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_55 : i32 = x_9.zero;
+  v.y = f32(x_55);
+  let x_59 : f32 = v.y;
+  x_GLF_color.y = x_59;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3cc04e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,56 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+
+void main_1() {
+  int i = 0;
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    const int x_38 = i;
+    const int x_40 = asint(x_6[0].x);
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    while (true) {
+      const int x_48 = asint(x_6[0].x);
+      if ((x_48 == 1)) {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_55 = asint(x_9[0].x);
+  v.y = float(x_55);
+  const float x_59 = v.y;
+  x_GLF_color.y = x_59;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5e8b3f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.msl
@@ -0,0 +1,60 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct buf1 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  int i = 0;
+  float4 v = 0.0f;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    int const x_38 = i;
+    int const x_40 = x_6.one;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    while (true) {
+      int const x_48 = x_6.one;
+      if ((x_48 == 1)) {
+        *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      int const x_52 = i;
+      i = (x_52 + 1);
+    }
+  }
+  int const x_55 = x_9.zero;
+  v.y = float(x_55);
+  float const x_59 = v.y;
+  (*(tint_symbol_4)).y = x_59;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..527ce2e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,157 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 82
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "zero"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf1 = OpTypeStruct %int
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %53 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %70 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %v = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %x_GLF_color %25
+               OpStore %i %int_0
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpLoad %int %i
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %36 = OpLoad %int %35
+         %37 = OpSLessThan %bool %31 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %28
+         %39 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %47 = OpLoad %int %46
+         %49 = OpIEqual %bool %47 %int_1
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpSelectionMerge %55 None
+               OpBranchConditional %false %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %43
+         %55 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %27
+         %28 = OpLabel
+         %60 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %61 = OpLoad %int %60
+         %64 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %65 = OpConvertSToF %float %61
+               OpStore %64 %65
+         %66 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %67 = OpLoad %float %66
+         %69 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %69 %67
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %70
+%tint_symbol = OpFunctionParameter %main_out
+         %74 = OpLabel
+         %75 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %75
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %77 = OpLabel
+         %78 = OpFunctionCall %void %main_1
+         %80 = OpLoad %v4float %x_GLF_color
+         %81 = OpCompositeConstruct %main_out %80
+         %79 = OpFunctionCall %void %tint_symbol_2 %81
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 44[%44] is not post dominated by the back-edge block 55[%55]
+  %55 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..19c0780
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,64 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[block]]
+struct buf1 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+fn main_1() {
+  var i : i32;
+  var v : vec4<f32>;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_6.one;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    loop {
+      let x_48 : i32 = x_6.one;
+      if ((x_48 == 1)) {
+        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      }
+
+      continuing {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_52 : i32 = i;
+      i = (x_52 + 1);
+    }
+  }
+  let x_55 : i32 = x_9.zero;
+  v.y = f32(x_55);
+  let x_59 : f32 = v.y;
+  x_GLF_color.y = x_59;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm
new file mode 100644
index 0000000..2eb7b2e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm
@@ -0,0 +1,121 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "sequence"
+               OpName %_ ""
+               OpName %sum "sum"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0
+%_ptr_Function_int = OpTypePointer Function %int
+       %buf0 = OpTypeStruct %v4int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %int_10 = OpConstant %int 10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %10
+         %35 = OpLabel
+          %a = OpVariable %_ptr_Function_v4int Function
+          %i = OpVariable %_ptr_Function_int Function
+        %sum = OpVariable %_ptr_Function_int Function
+               OpStore %a %15
+               OpStore %i %int_0
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %uint_3
+         %42 = OpLoad %int %41
+         %43 = OpIAdd %int %42 %int_1
+         %44 = OpSLessThan %bool %40 %43
+               OpBranchConditional %44 %45 %37
+         %45 = OpLabel
+         %46 = OpLoad %int %i
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %uint_0
+         %48 = OpLoad %int %47
+         %49 = OpLoad %int %i
+         %50 = OpExtInst %int %1 SClamp %46 %48 %49
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %50
+         %52 = OpLoad %int %51
+         %53 = OpIEqual %bool %52 %int_1
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+         %57 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Function_int %a %57
+               OpStore %58 %int_5
+               OpBranch %54
+         %56 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpLoad %int %i
+         %61 = OpAccessChain %_ptr_Function_int %a %59
+               OpStore %61 %60
+               OpBranch %54
+         %54 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %i %63
+               OpBranch %36
+         %37 = OpLabel
+         %64 = OpAccessChain %_ptr_Function_int %a %uint_0
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Function_int %a %uint_1
+         %67 = OpLoad %int %66
+         %68 = OpIAdd %int %65 %67
+         %69 = OpAccessChain %_ptr_Function_int %a %uint_2
+         %70 = OpLoad %int %69
+         %71 = OpIAdd %int %68 %70
+         %72 = OpAccessChain %_ptr_Function_int %a %uint_3
+         %73 = OpLoad %int %72
+         %74 = OpIAdd %int %71 %73
+               OpStore %sum %74
+         %75 = OpLoad %int %sum
+         %76 = OpIEqual %bool %75 %int_10
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpStore %_GLF_color %33
+               OpBranch %77
+         %79 = OpLabel
+               OpStore %_GLF_color %34
+               OpBranch %77
+         %77 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2e58c08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,61 @@
+void set_int4(inout int4 vec, int idx, int val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int4 a = int4(0, 0, 0, 0);
+  int i = 0;
+  int sum = 0;
+  a = int4(0, 0, 0, 0);
+  i = 0;
+  while (true) {
+    const int x_40 = i;
+    const int x_42 = asint(x_7[0].w);
+    if ((x_40 < (x_42 + 1))) {
+    } else {
+      break;
+    }
+    const int x_46 = i;
+    const int x_48 = asint(x_7[0].x);
+    const uint scalar_offset = ((4u * uint(clamp(x_46, x_48, i)))) / 4;
+    const int x_52 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_52 == 1)) {
+      set_int4(a, i, 5);
+    } else {
+      set_int4(a, i, i);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_65 = a.x;
+  const int x_67 = a.y;
+  const int x_70 = a.z;
+  const int x_73 = a.w;
+  sum = (((x_65 + x_67) + x_70) + x_73);
+  if ((sum == 10)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..beae1dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_int4 sequence;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int4 a = 0;
+  int i = 0;
+  int sum = 0;
+  a = int4(0, 0, 0, 0);
+  i = 0;
+  while (true) {
+    int const x_40 = i;
+    int const x_42 = x_7.sequence.w;
+    if ((x_40 < (x_42 + 1))) {
+    } else {
+      break;
+    }
+    int const x_46 = i;
+    int const x_48 = x_7.sequence.x;
+    int const x_49 = i;
+    int const x_52 = x_7.sequence[clamp(x_46, x_48, x_49)];
+    if ((x_52 == 1)) {
+      int const x_57 = i;
+      a[x_57] = 5;
+    } else {
+      int const x_59 = i;
+      int const x_60 = i;
+      a[x_59] = x_60;
+    }
+    {
+      int const x_62 = i;
+      i = (x_62 + 1);
+    }
+  }
+  int const x_65 = a.x;
+  int const x_67 = a.y;
+  int const x_70 = a.z;
+  int const x_73 = a.w;
+  sum = (((x_65 + x_67) + x_70) + x_73);
+  int const x_75 = sum;
+  if ((x_75 == 10)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ff2c207
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,160 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 99
+; Schema: 0
+               OpCapability Shader
+         %49 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "sequence"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %sum "sum"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+       %buf0 = OpTypeStruct %v4int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %10 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %10
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %10
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %19 = OpConstantNull %v4int
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+         %25 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_3 = OpConstant %uint 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %int_10 = OpConstant %int 10
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %85 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %87 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+          %a = OpVariable %_ptr_Function_v4int Function %19
+          %i = OpVariable %_ptr_Function_int Function %22
+        %sum = OpVariable %_ptr_Function_int Function %22
+               OpStore %a %25
+               OpStore %i %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %i
+         %35 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %uint_3
+         %36 = OpLoad %int %35
+         %38 = OpIAdd %int %36 %int_1
+         %39 = OpSLessThan %bool %30 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %27
+         %41 = OpLabel
+         %44 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %uint_0
+         %46 = OpLoad %int %45
+         %47 = OpLoad %int %i
+         %48 = OpExtInst %int %49 SClamp %44 %46 %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %48
+         %51 = OpLoad %int %50
+         %52 = OpIEqual %bool %51 %int_1
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpAccessChain %_ptr_Function_int %a %56
+               OpStore %57 %int_5
+               OpBranch %53
+         %55 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpLoad %int %i
+         %61 = OpAccessChain %_ptr_Function_int %a %59
+               OpStore %61 %60
+               OpBranch %53
+         %53 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %i %63
+               OpBranch %26
+         %27 = OpLabel
+         %64 = OpAccessChain %_ptr_Function_int %a %uint_0
+         %65 = OpLoad %int %64
+         %67 = OpAccessChain %_ptr_Function_int %a %uint_1
+         %68 = OpLoad %int %67
+         %70 = OpAccessChain %_ptr_Function_int %a %uint_2
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Function_int %a %uint_3
+         %73 = OpLoad %int %72
+         %74 = OpIAdd %int %65 %68
+         %75 = OpIAdd %int %74 %71
+         %76 = OpIAdd %int %75 %73
+               OpStore %sum %76
+         %77 = OpLoad %int %sum
+         %79 = OpIEqual %bool %77 %int_10
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpStore %x_GLF_color %85
+               OpBranch %80
+         %82 = OpLabel
+               OpStore %x_GLF_color %86
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %87
+%tint_symbol = OpFunctionParameter %main_out
+         %91 = OpLabel
+         %92 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %92
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %94 = OpLabel
+         %95 = OpFunctionCall %void %main_1
+         %97 = OpLoad %v4float %x_GLF_color
+         %98 = OpCompositeConstruct %main_out %97
+         %96 = OpFunctionCall %void %tint_symbol_2 %98
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7e6bd6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,64 @@
+[[block]]
+struct buf0 {
+  sequence : vec4<i32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec4<i32>;
+  var i : i32;
+  var sum : i32;
+  a = vec4<i32>(0, 0, 0, 0);
+  i = 0;
+  loop {
+    let x_40 : i32 = i;
+    let x_42 : i32 = x_7.sequence.w;
+    if ((x_40 < (x_42 + 1))) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_7.sequence.x;
+    let x_49 : i32 = i;
+    let x_52 : i32 = x_7.sequence[clamp(x_46, x_48, x_49)];
+    if ((x_52 == 1)) {
+      let x_57 : i32 = i;
+      a[x_57] = 5;
+    } else {
+      let x_59 : i32 = i;
+      let x_60 : i32 = i;
+      a[x_59] = x_60;
+    }
+
+    continuing {
+      let x_62 : i32 = i;
+      i = (x_62 + 1);
+    }
+  }
+  let x_65 : i32 = a.x;
+  let x_67 : i32 = a.y;
+  let x_70 : i32 = a.z;
+  let x_73 : i32 = a.w;
+  sum = (((x_65 + x_67) + x_70) + x_73);
+  let x_75 : i32 = sum;
+  if ((x_75 == 10)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
new file mode 100644
index 0000000..7e6bd6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
@@ -0,0 +1,64 @@
+[[block]]
+struct buf0 {
+  sequence : vec4<i32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec4<i32>;
+  var i : i32;
+  var sum : i32;
+  a = vec4<i32>(0, 0, 0, 0);
+  i = 0;
+  loop {
+    let x_40 : i32 = i;
+    let x_42 : i32 = x_7.sequence.w;
+    if ((x_40 < (x_42 + 1))) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_7.sequence.x;
+    let x_49 : i32 = i;
+    let x_52 : i32 = x_7.sequence[clamp(x_46, x_48, x_49)];
+    if ((x_52 == 1)) {
+      let x_57 : i32 = i;
+      a[x_57] = 5;
+    } else {
+      let x_59 : i32 = i;
+      let x_60 : i32 = i;
+      a[x_59] = x_60;
+    }
+
+    continuing {
+      let x_62 : i32 = i;
+      i = (x_62 + 1);
+    }
+  }
+  let x_65 : i32 = a.x;
+  let x_67 : i32 = a.y;
+  let x_70 : i32 = a.z;
+  let x_73 : i32 = a.w;
+  sum = (((x_65 + x_67) + x_70) + x_73);
+  let x_75 : i32 = sum;
+  if ((x_75 == 10)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2e58c08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,61 @@
+void set_int4(inout int4 vec, int idx, int val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int4 a = int4(0, 0, 0, 0);
+  int i = 0;
+  int sum = 0;
+  a = int4(0, 0, 0, 0);
+  i = 0;
+  while (true) {
+    const int x_40 = i;
+    const int x_42 = asint(x_7[0].w);
+    if ((x_40 < (x_42 + 1))) {
+    } else {
+      break;
+    }
+    const int x_46 = i;
+    const int x_48 = asint(x_7[0].x);
+    const uint scalar_offset = ((4u * uint(clamp(x_46, x_48, i)))) / 4;
+    const int x_52 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_52 == 1)) {
+      set_int4(a, i, 5);
+    } else {
+      set_int4(a, i, i);
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_65 = a.x;
+  const int x_67 = a.y;
+  const int x_70 = a.z;
+  const int x_73 = a.w;
+  sum = (((x_65 + x_67) + x_70) + x_73);
+  if ((sum == 10)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..beae1dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_int4 sequence;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int4 a = 0;
+  int i = 0;
+  int sum = 0;
+  a = int4(0, 0, 0, 0);
+  i = 0;
+  while (true) {
+    int const x_40 = i;
+    int const x_42 = x_7.sequence.w;
+    if ((x_40 < (x_42 + 1))) {
+    } else {
+      break;
+    }
+    int const x_46 = i;
+    int const x_48 = x_7.sequence.x;
+    int const x_49 = i;
+    int const x_52 = x_7.sequence[clamp(x_46, x_48, x_49)];
+    if ((x_52 == 1)) {
+      int const x_57 = i;
+      a[x_57] = 5;
+    } else {
+      int const x_59 = i;
+      int const x_60 = i;
+      a[x_59] = x_60;
+    }
+    {
+      int const x_62 = i;
+      i = (x_62 + 1);
+    }
+  }
+  int const x_65 = a.x;
+  int const x_67 = a.y;
+  int const x_70 = a.z;
+  int const x_73 = a.w;
+  sum = (((x_65 + x_67) + x_70) + x_73);
+  int const x_75 = sum;
+  if ((x_75 == 10)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ff2c207
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,160 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 99
+; Schema: 0
+               OpCapability Shader
+         %49 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "sequence"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %sum "sum"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+       %buf0 = OpTypeStruct %v4int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %10 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %10
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %10
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %19 = OpConstantNull %v4int
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+         %25 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_3 = OpConstant %uint 3
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %int_10 = OpConstant %int 10
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %85 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %87 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+          %a = OpVariable %_ptr_Function_v4int Function %19
+          %i = OpVariable %_ptr_Function_int Function %22
+        %sum = OpVariable %_ptr_Function_int Function %22
+               OpStore %a %25
+               OpStore %i %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %i
+         %35 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %uint_3
+         %36 = OpLoad %int %35
+         %38 = OpIAdd %int %36 %int_1
+         %39 = OpSLessThan %bool %30 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %27
+         %41 = OpLabel
+         %44 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %uint_0
+         %46 = OpLoad %int %45
+         %47 = OpLoad %int %i
+         %48 = OpExtInst %int %49 SClamp %44 %46 %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %48
+         %51 = OpLoad %int %50
+         %52 = OpIEqual %bool %51 %int_1
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpAccessChain %_ptr_Function_int %a %56
+               OpStore %57 %int_5
+               OpBranch %53
+         %55 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpLoad %int %i
+         %61 = OpAccessChain %_ptr_Function_int %a %59
+               OpStore %61 %60
+               OpBranch %53
+         %53 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %i %63
+               OpBranch %26
+         %27 = OpLabel
+         %64 = OpAccessChain %_ptr_Function_int %a %uint_0
+         %65 = OpLoad %int %64
+         %67 = OpAccessChain %_ptr_Function_int %a %uint_1
+         %68 = OpLoad %int %67
+         %70 = OpAccessChain %_ptr_Function_int %a %uint_2
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Function_int %a %uint_3
+         %73 = OpLoad %int %72
+         %74 = OpIAdd %int %65 %68
+         %75 = OpIAdd %int %74 %71
+         %76 = OpIAdd %int %75 %73
+               OpStore %sum %76
+         %77 = OpLoad %int %sum
+         %79 = OpIEqual %bool %77 %int_10
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpStore %x_GLF_color %85
+               OpBranch %80
+         %82 = OpLabel
+               OpStore %x_GLF_color %86
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %87
+%tint_symbol = OpFunctionParameter %main_out
+         %91 = OpLabel
+         %92 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %92
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %94 = OpLabel
+         %95 = OpFunctionCall %void %main_1
+         %97 = OpLoad %v4float %x_GLF_color
+         %98 = OpCompositeConstruct %main_out %97
+         %96 = OpFunctionCall %void %tint_symbol_2 %98
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7e6bd6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,64 @@
+[[block]]
+struct buf0 {
+  sequence : vec4<i32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec4<i32>;
+  var i : i32;
+  var sum : i32;
+  a = vec4<i32>(0, 0, 0, 0);
+  i = 0;
+  loop {
+    let x_40 : i32 = i;
+    let x_42 : i32 = x_7.sequence.w;
+    if ((x_40 < (x_42 + 1))) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = i;
+    let x_48 : i32 = x_7.sequence.x;
+    let x_49 : i32 = i;
+    let x_52 : i32 = x_7.sequence[clamp(x_46, x_48, x_49)];
+    if ((x_52 == 1)) {
+      let x_57 : i32 = i;
+      a[x_57] = 5;
+    } else {
+      let x_59 : i32 = i;
+      let x_60 : i32 = i;
+      a[x_59] = x_60;
+    }
+
+    continuing {
+      let x_62 : i32 = i;
+      i = (x_62 + 1);
+    }
+  }
+  let x_65 : i32 = a.x;
+  let x_67 : i32 = a.y;
+  let x_70 : i32 = a.z;
+  let x_73 : i32 = a.w;
+  sum = (((x_65 + x_67) + x_70) + x_73);
+  let x_75 : i32 = sum;
+  if ((x_75 == 10)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm
new file mode 100644
index 0000000..b6ea806
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm
@@ -0,0 +1,75 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %9
+         %22 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+         %23 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %24 = OpLoad %int %23
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %26 = OpLoad %int %25
+         %27 = OpExtInst %int %1 SMax %26 %int_1
+         %28 = OpExtInst %int %1 SMax %24 %27
+               OpStore %a %28
+         %29 = OpLoad %int %a
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpIEqual %bool %29 %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+         %36 = OpLoad %int %a
+         %37 = OpConvertSToF %float %36
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpConvertSToF %float %39
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpLoad %int %a
+         %45 = OpConvertSToF %float %44
+         %46 = OpCompositeConstruct %v4float %37 %40 %43 %45
+               OpStore %_GLF_color %46
+               OpBranch %33
+         %35 = OpLabel
+         %47 = OpLoad %int %a
+         %48 = OpConvertSToF %float %47
+         %49 = OpCompositeConstruct %v4float %48 %48 %48 %48
+               OpStore %_GLF_color %49
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0503ece
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,40 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_24 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_26 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = max(x_24, max(x_26, 1));
+  const int x_29 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_31 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_29 == x_31)) {
+    const int x_36 = a;
+    const int x_39 = asint(x_6[1].x);
+    const int x_42 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_36), float(x_39), float(x_42), float(a));
+  } else {
+    const float x_48 = float(a);
+    x_GLF_color = float4(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..aedac0a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_24 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = max(x_24, max(x_26, 1));
+  int const x_29 = a;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_29 == x_31)) {
+    int const x_36 = a;
+    int const x_39 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_44 = a;
+    *(tint_symbol_4) = float4(float(x_36), float(x_39), float(x_42), float(x_44));
+  } else {
+    int const x_47 = a;
+    float const x_48 = float(x_47);
+    *(tint_symbol_4) = float4(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d91ccbe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,109 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+         %30 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %28 = OpLoad %int %27
+         %31 = OpExtInst %int %30 SMax %28 %int_1
+         %29 = OpExtInst %int %30 SMax %26 %31
+               OpStore %a %29
+         %33 = OpLoad %int %a
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpIEqual %bool %33 %35
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+         %41 = OpLoad %int %a
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpLoad %int %a
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpConvertSToF %float %45
+         %50 = OpConvertSToF %float %46
+         %51 = OpCompositeConstruct %v4float %47 %48 %49 %50
+               OpStore %x_GLF_color %51
+               OpBranch %38
+         %40 = OpLabel
+         %52 = OpLoad %int %a
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %x_GLF_color %54
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c54d32c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_24 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = max(x_24, max(x_26, 1));
+  let x_29 : i32 = a;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_29 == x_31)) {
+    let x_36 : i32 = a;
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_44 : i32 = a;
+    x_GLF_color = vec4<f32>(f32(x_36), f32(x_39), f32(x_42), f32(x_44));
+  } else {
+    let x_47 : i32 = a;
+    let x_48 : f32 = f32(x_47);
+    x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
new file mode 100644
index 0000000..c54d32c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_24 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = max(x_24, max(x_26, 1));
+  let x_29 : i32 = a;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_29 == x_31)) {
+    let x_36 : i32 = a;
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_44 : i32 = a;
+    x_GLF_color = vec4<f32>(f32(x_36), f32(x_39), f32(x_42), f32(x_44));
+  } else {
+    let x_47 : i32 = a;
+    let x_48 : f32 = f32(x_47);
+    x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0503ece
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,40 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_24 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_26 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = max(x_24, max(x_26, 1));
+  const int x_29 = a;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_31 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  if ((x_29 == x_31)) {
+    const int x_36 = a;
+    const int x_39 = asint(x_6[1].x);
+    const int x_42 = asint(x_6[1].x);
+    x_GLF_color = float4(float(x_36), float(x_39), float(x_42), float(a));
+  } else {
+    const float x_48 = float(a);
+    x_GLF_color = float4(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..aedac0a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int const x_24 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_26 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  a = max(x_24, max(x_26, 1));
+  int const x_29 = a;
+  int const x_31 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_29 == x_31)) {
+    int const x_36 = a;
+    int const x_39 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_44 = a;
+    *(tint_symbol_4) = float4(float(x_36), float(x_39), float(x_42), float(x_44));
+  } else {
+    int const x_47 = a;
+    float const x_48 = float(x_47);
+    *(tint_symbol_4) = float4(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d91ccbe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,109 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+         %30 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+         %25 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %28 = OpLoad %int %27
+         %31 = OpExtInst %int %30 SMax %28 %int_1
+         %29 = OpExtInst %int %30 SMax %26 %31
+               OpStore %a %29
+         %33 = OpLoad %int %a
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpIEqual %bool %33 %35
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+         %41 = OpLoad %int %a
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpLoad %int %a
+         %47 = OpConvertSToF %float %41
+         %48 = OpConvertSToF %float %43
+         %49 = OpConvertSToF %float %45
+         %50 = OpConvertSToF %float %46
+         %51 = OpCompositeConstruct %v4float %47 %48 %49 %50
+               OpStore %x_GLF_color %51
+               OpBranch %38
+         %40 = OpLabel
+         %52 = OpLoad %int %a
+         %53 = OpConvertSToF %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %x_GLF_color %54
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c54d32c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  let x_24 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_26 : i32 = x_6.x_GLF_uniform_int_values[0];
+  a = max(x_24, max(x_26, 1));
+  let x_29 : i32 = a;
+  let x_31 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_29 == x_31)) {
+    let x_36 : i32 = a;
+    let x_39 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_44 : i32 = a;
+    x_GLF_color = vec4<f32>(f32(x_36), f32(x_39), f32(x_42), f32(x_44));
+  } else {
+    let x_47 : i32 = a;
+    let x_48 : f32 = f32(x_47);
+    x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm
new file mode 100644
index 0000000..d27199d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm
@@ -0,0 +1,89 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %r "r"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+         %21 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4
+     %int_10 = OpConstant %int 10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %30 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %r = OpVariable %_ptr_Function_int Function
+               OpStore %i %int_0
+               OpStore %r %int_0
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %r
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %37 = OpLoad %int %36
+         %38 = OpIMul %int %37 %int_4
+         %39 = OpSLessThan %bool %35 %38
+               OpBranchConditional %39 %40 %32
+         %40 = OpLabel
+         %41 = OpLoad %int %r
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %43 = OpLoad %int %42
+         %44 = OpSDiv %int %41 %43
+         %45 = OpVectorExtractDynamic %int %21 %44
+         %46 = OpLoad %int %i
+         %47 = OpIAdd %int %46 %45
+               OpStore %i %47
+               OpBranch %33
+         %33 = OpLabel
+         %48 = OpLoad %int %r
+         %49 = OpIAdd %int %48 %int_2
+               OpStore %r %49
+               OpBranch %31
+         %32 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpIEqual %bool %50 %int_10
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %52
+         %54 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..db9236b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,45 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int r = 0;
+  i = 0;
+  r = 0;
+  while (true) {
+    const int x_35 = r;
+    const int x_37 = asint(x_7[0].x);
+    if ((x_35 < (x_37 * 4))) {
+    } else {
+      break;
+    }
+    const int x_41 = r;
+    const int x_43 = asint(x_7[0].x);
+    i = (i + int4(1, 2, 3, 4)[(x_41 / x_43)]);
+    {
+      r = (r + 2);
+    }
+  }
+  if ((i == 10)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b2f057c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.msl
@@ -0,0 +1,51 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int r = 0;
+  i = 0;
+  r = 0;
+  while (true) {
+    int const x_35 = r;
+    int const x_37 = x_7.two;
+    if ((x_35 < (x_37 * 4))) {
+    } else {
+      break;
+    }
+    int const x_41 = r;
+    int const x_43 = x_7.two;
+    int const x_46 = i;
+    i = (x_46 + int4(1, 2, 3, 4)[(x_41 / x_43)]);
+    {
+      int const x_48 = r;
+      r = (x_48 + 2);
+    }
+  }
+  int const x_50 = i;
+  if ((x_50 == 10)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e78b606
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 74
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %r "r"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+         %46 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4
+     %int_10 = OpConstant %int 10
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %60 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %61 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %62 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %18
+          %r = OpVariable %_ptr_Function_int Function %18
+               OpStore %i %int_0
+               OpStore %r %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %r
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpIMul %int %30 %int_4
+         %33 = OpSLessThan %bool %25 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %22
+         %35 = OpLabel
+         %38 = OpLoad %int %r
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %40 = OpLoad %int %39
+         %41 = OpLoad %int %i
+         %47 = OpSDiv %int %38 %40
+         %48 = OpVectorExtractDynamic %int %46 %47
+         %49 = OpIAdd %int %41 %48
+               OpStore %i %49
+               OpBranch %23
+         %23 = OpLabel
+         %50 = OpLoad %int %r
+         %51 = OpIAdd %int %50 %int_2
+               OpStore %r %51
+               OpBranch %21
+         %22 = OpLabel
+         %52 = OpLoad %int %i
+         %54 = OpIEqual %bool %52 %int_10
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpStore %x_GLF_color %60
+               OpBranch %55
+         %57 = OpLabel
+               OpStore %x_GLF_color %61
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %62
+%tint_symbol = OpFunctionParameter %main_out
+         %66 = OpLabel
+         %67 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %67
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %69 = OpLabel
+         %70 = OpFunctionCall %void %main_1
+         %72 = OpLoad %v4float %x_GLF_color
+         %73 = OpCompositeConstruct %main_out %72
+         %71 = OpFunctionCall %void %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a3a1f46
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,50 @@
+[[block]]
+struct buf0 {
+  two : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var r : i32;
+  i = 0;
+  r = 0;
+  loop {
+    let x_35 : i32 = r;
+    let x_37 : i32 = x_7.two;
+    if ((x_35 < (x_37 * 4))) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = r;
+    let x_43 : i32 = x_7.two;
+    let x_46 : i32 = i;
+    i = (x_46 + vec4<i32>(1, 2, 3, 4)[(x_41 / x_43)]);
+
+    continuing {
+      let x_48 : i32 = r;
+      r = (x_48 + 2);
+    }
+  }
+  let x_50 : i32 = i;
+  if ((x_50 == 10)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
new file mode 100644
index 0000000..a3a1f46
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
@@ -0,0 +1,50 @@
+[[block]]
+struct buf0 {
+  two : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var r : i32;
+  i = 0;
+  r = 0;
+  loop {
+    let x_35 : i32 = r;
+    let x_37 : i32 = x_7.two;
+    if ((x_35 < (x_37 * 4))) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = r;
+    let x_43 : i32 = x_7.two;
+    let x_46 : i32 = i;
+    i = (x_46 + vec4<i32>(1, 2, 3, 4)[(x_41 / x_43)]);
+
+    continuing {
+      let x_48 : i32 = r;
+      r = (x_48 + 2);
+    }
+  }
+  let x_50 : i32 = i;
+  if ((x_50 == 10)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..db9236b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,45 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int r = 0;
+  i = 0;
+  r = 0;
+  while (true) {
+    const int x_35 = r;
+    const int x_37 = asint(x_7[0].x);
+    if ((x_35 < (x_37 * 4))) {
+    } else {
+      break;
+    }
+    const int x_41 = r;
+    const int x_43 = asint(x_7[0].x);
+    i = (i + int4(1, 2, 3, 4)[(x_41 / x_43)]);
+    {
+      r = (r + 2);
+    }
+  }
+  if ((i == 10)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..b2f057c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.msl
@@ -0,0 +1,51 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int r = 0;
+  i = 0;
+  r = 0;
+  while (true) {
+    int const x_35 = r;
+    int const x_37 = x_7.two;
+    if ((x_35 < (x_37 * 4))) {
+    } else {
+      break;
+    }
+    int const x_41 = r;
+    int const x_43 = x_7.two;
+    int const x_46 = i;
+    i = (x_46 + int4(1, 2, 3, 4)[(x_41 / x_43)]);
+    {
+      int const x_48 = r;
+      r = (x_48 + 2);
+    }
+  }
+  int const x_50 = i;
+  if ((x_50 == 10)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e78b606
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 74
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %r "r"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+         %46 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4
+     %int_10 = OpConstant %int 10
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %60 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %61 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %62 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %18
+          %r = OpVariable %_ptr_Function_int Function %18
+               OpStore %i %int_0
+               OpStore %r %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %r
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpIMul %int %30 %int_4
+         %33 = OpSLessThan %bool %25 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %22
+         %35 = OpLabel
+         %38 = OpLoad %int %r
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %40 = OpLoad %int %39
+         %41 = OpLoad %int %i
+         %47 = OpSDiv %int %38 %40
+         %48 = OpVectorExtractDynamic %int %46 %47
+         %49 = OpIAdd %int %41 %48
+               OpStore %i %49
+               OpBranch %23
+         %23 = OpLabel
+         %50 = OpLoad %int %r
+         %51 = OpIAdd %int %50 %int_2
+               OpStore %r %51
+               OpBranch %21
+         %22 = OpLabel
+         %52 = OpLoad %int %i
+         %54 = OpIEqual %bool %52 %int_10
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpStore %x_GLF_color %60
+               OpBranch %55
+         %57 = OpLabel
+               OpStore %x_GLF_color %61
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %62
+%tint_symbol = OpFunctionParameter %main_out
+         %66 = OpLabel
+         %67 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %67
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %69 = OpLabel
+         %70 = OpFunctionCall %void %main_1
+         %72 = OpLoad %v4float %x_GLF_color
+         %73 = OpCompositeConstruct %main_out %72
+         %71 = OpFunctionCall %void %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a3a1f46
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,50 @@
+[[block]]
+struct buf0 {
+  two : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var r : i32;
+  i = 0;
+  r = 0;
+  loop {
+    let x_35 : i32 = r;
+    let x_37 : i32 = x_7.two;
+    if ((x_35 < (x_37 * 4))) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = r;
+    let x_43 : i32 = x_7.two;
+    let x_46 : i32 = i;
+    i = (x_46 + vec4<i32>(1, 2, 3, 4)[(x_41 / x_43)]);
+
+    continuing {
+      let x_48 : i32 = r;
+      r = (x_48 + 2);
+    }
+  }
+  let x_50 : i32 = i;
+  if ((x_50 == 10)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm
new file mode 100644
index 0000000..e0b14a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm
@@ -0,0 +1,58 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+       %buf0 = OpTypeStruct %uint
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %24 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %25 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+         %26 = OpAccessChain %_ptr_Uniform_uint %_ %int_0
+         %27 = OpLoad %uint %26
+         %28 = OpUDiv %uint %27 %uint_1
+               OpStore %a %28
+         %29 = OpLoad %uint %a
+         %30 = OpIEqual %bool %29 %uint_2
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ad4b4c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  const uint x_27 = x_6[0].x;
+  a = (x_27 / 1u);
+  if ((a == 2u)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..34251dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ uint two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  uint const x_27 = x_6.two;
+  a = (x_27 / 1u);
+  uint const x_29 = a;
+  if ((x_29 == 2u)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..68fb1d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,89 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+       %buf0 = OpTypeStruct %uint
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %18 = OpConstantNull %uint
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %36 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %18
+         %21 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %22 = OpLoad %uint %21
+         %24 = OpUDiv %uint %22 %uint_1
+               OpStore %a %24
+         %25 = OpLoad %uint %a
+         %27 = OpIEqual %bool %25 %uint_2
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %x_GLF_color %35
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %36
+%tint_symbol = OpFunctionParameter %main_out
+         %40 = OpLabel
+         %41 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %41
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %main_1
+         %46 = OpLoad %v4float %x_GLF_color
+         %47 = OpCompositeConstruct %main_out %46
+         %45 = OpFunctionCall %void %tint_symbol_2 %47
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..50c6355
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  two : u32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  let x_27 : u32 = x_6.two;
+  a = (x_27 / 1u);
+  let x_29 : u32 = a;
+  if ((x_29 == 2u)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
new file mode 100644
index 0000000..50c6355
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  two : u32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  let x_27 : u32 = x_6.two;
+  a = (x_27 / 1u);
+  let x_29 : u32 = a;
+  if ((x_29 == 2u)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ad4b4c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  uint a = 0u;
+  const uint x_27 = x_6[0].x;
+  a = (x_27 / 1u);
+  if ((a == 2u)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..34251dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ uint two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  uint const x_27 = x_6.two;
+  a = (x_27 / 1u);
+  uint const x_29 = a;
+  if ((x_29 == 2u)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..68fb1d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,89 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 48
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+       %buf0 = OpTypeStruct %uint
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %18 = OpConstantNull %uint
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %36 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %18
+         %21 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0
+         %22 = OpLoad %uint %21
+         %24 = OpUDiv %uint %22 %uint_1
+               OpStore %a %24
+         %25 = OpLoad %uint %a
+         %27 = OpIEqual %bool %25 %uint_2
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpStore %x_GLF_color %34
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %x_GLF_color %35
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %36
+%tint_symbol = OpFunctionParameter %main_out
+         %40 = OpLabel
+         %41 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %41
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %main_1
+         %46 = OpLoad %v4float %x_GLF_color
+         %47 = OpCompositeConstruct %main_out %46
+         %45 = OpFunctionCall %void %tint_symbol_2 %47
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..50c6355
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  two : u32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : u32;
+  let x_27 : u32 = x_6.two;
+  a = (x_27 / 1u);
+  let x_29 : u32 = a;
+  if ((x_29 == 2u)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm
new file mode 100644
index 0000000..00ef50c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm
@@ -0,0 +1,106 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %24 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %25 = OpLoad %int %24
+               OpStore %a %25
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %27 = OpLoad %int %26
+         %28 = OpSNegate %int %27
+               OpStore %i %28
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpBitwiseOr %int %33 %35
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpSLessThan %bool %36 %38
+               OpBranchConditional %39 %40 %30
+         %40 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %43 = OpLoad %int %42
+         %44 = OpIMul %int %41 %43
+               OpStore %a %44
+               OpBranch %31
+         %31 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpIAdd %int %45 %int_1
+               OpStore %i %46
+               OpBranch %29
+         %30 = OpLabel
+         %47 = OpLoad %int %a
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpSNegate %int %49
+         %51 = OpIEqual %bool %47 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %57 %60 %63 %66
+               OpStore %_GLF_color %67
+               OpBranch %52
+         %54 = OpLabel
+         %68 = OpLoad %int %a
+         %69 = OpConvertSToF %float %68
+         %70 = OpCompositeConstruct %v4float %69 %69 %69 %69
+               OpStore %_GLF_color %70
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..910242d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,62 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_25 = asint(x_6[1].x);
+  a = x_25;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_27 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  i = -(x_27);
+  while (true) {
+    const int x_33 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_35 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if (((x_33 | x_35) < x_38)) {
+    } else {
+      break;
+    }
+    const int x_41 = i;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    a = (x_41 * x_43);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_47 = a;
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_49 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  if ((x_47 == -(x_49))) {
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_59 = asint(x_6[1].x);
+    const int x_62 = asint(x_6[1].x);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    x_GLF_color = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  } else {
+    const float x_69 = float(a);
+    x_GLF_color = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1ec287c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.msl
@@ -0,0 +1,67 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_25;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i = -(x_27);
+  while (true) {
+    int const x_33 = i;
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if (((x_33 | x_35) < x_38)) {
+    } else {
+      break;
+    }
+    int const x_41 = i;
+    int const x_43 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    a = (x_41 * x_43);
+    {
+      int const x_45 = i;
+      i = (x_45 + 1);
+    }
+  }
+  int const x_47 = a;
+  int const x_49 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_47 == -(x_49))) {
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_59 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  } else {
+    int const x_68 = a;
+    float const x_69 = float(x_68);
+    *(tint_symbol_4) = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..fb9d73a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,144 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %31 = OpSNegate %int %30
+               OpStore %i %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpBitwiseOr %int %36 %38
+         %42 = OpSLessThan %bool %41 %40
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %33
+         %44 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpIMul %int %47 %49
+               OpStore %a %50
+               OpBranch %34
+         %34 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpIAdd %int %51 %int_1
+               OpStore %i %52
+               OpBranch %32
+         %33 = OpLabel
+         %53 = OpLoad %int %a
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpSNegate %int %55
+         %57 = OpIEqual %bool %53 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %62
+         %70 = OpConvertSToF %float %64
+         %71 = OpConvertSToF %float %66
+         %72 = OpConvertSToF %float %68
+         %73 = OpCompositeConstruct %v4float %69 %70 %71 %72
+               OpStore %x_GLF_color %73
+               OpBranch %58
+         %60 = OpLabel
+         %74 = OpLoad %int %a
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %58
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..0f3c2eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_25;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = -(x_27);
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if (((x_33 | x_35) < x_38)) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = i;
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[0];
+    a = (x_41 * x_43);
+
+    continuing {
+      let x_45 : i32 = i;
+      i = (x_45 + 1);
+    }
+  }
+  let x_47 : i32 = a;
+  let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_47 == -(x_49))) {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65));
+  } else {
+    let x_68 : i32 = a;
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
new file mode 100644
index 0000000..0f3c2eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_25;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = -(x_27);
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if (((x_33 | x_35) < x_38)) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = i;
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[0];
+    a = (x_41 * x_43);
+
+    continuing {
+      let x_45 : i32 = i;
+      i = (x_45 + 1);
+    }
+  }
+  let x_47 : i32 = a;
+  let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_47 == -(x_49))) {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65));
+  } else {
+    let x_68 : i32 = a;
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..910242d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,62 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_25 = asint(x_6[1].x);
+  a = x_25;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_27 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  i = -(x_27);
+  while (true) {
+    const int x_33 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_35 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_38 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if (((x_33 | x_35) < x_38)) {
+    } else {
+      break;
+    }
+    const int x_41 = i;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_43 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    a = (x_41 * x_43);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_47 = a;
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_49 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  if ((x_47 == -(x_49))) {
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_59 = asint(x_6[1].x);
+    const int x_62 = asint(x_6[1].x);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_65 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    x_GLF_color = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  } else {
+    const float x_69 = float(a);
+    x_GLF_color = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1ec287c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.msl
@@ -0,0 +1,67 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_25 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  a = x_25;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i = -(x_27);
+  while (true) {
+    int const x_33 = i;
+    int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if (((x_33 | x_35) < x_38)) {
+    } else {
+      break;
+    }
+    int const x_41 = i;
+    int const x_43 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    a = (x_41 * x_43);
+    {
+      int const x_45 = i;
+      i = (x_45 + 1);
+    }
+  }
+  int const x_47 = a;
+  int const x_49 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_47 == -(x_49))) {
+    int const x_56 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_59 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_62 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_56), float(x_59), float(x_62), float(x_65));
+  } else {
+    int const x_68 = a;
+    float const x_69 = float(x_68);
+    *(tint_symbol_4) = float4(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..fb9d73a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,144 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %30 = OpLoad %int %29
+         %31 = OpSNegate %int %30
+               OpStore %i %31
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpBitwiseOr %int %36 %38
+         %42 = OpSLessThan %bool %41 %40
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %33
+         %44 = OpLabel
+         %47 = OpLoad %int %i
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %49 = OpLoad %int %48
+         %50 = OpIMul %int %47 %49
+               OpStore %a %50
+               OpBranch %34
+         %34 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpIAdd %int %51 %int_1
+               OpStore %i %52
+               OpBranch %32
+         %33 = OpLabel
+         %53 = OpLoad %int %a
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpSNegate %int %55
+         %57 = OpIEqual %bool %53 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %62
+         %70 = OpConvertSToF %float %64
+         %71 = OpConvertSToF %float %66
+         %72 = OpConvertSToF %float %68
+         %73 = OpCompositeConstruct %v4float %69 %70 %71 %72
+               OpStore %x_GLF_color %73
+               OpBranch %58
+         %60 = OpLabel
+         %74 = OpLoad %int %a
+         %75 = OpConvertSToF %float %74
+         %76 = OpCompositeConstruct %v4float %75 %75 %75 %75
+               OpStore %x_GLF_color %76
+               OpBranch %58
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..0f3c2eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_25 : i32 = x_6.x_GLF_uniform_int_values[1];
+  a = x_25;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = -(x_27);
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_38 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if (((x_33 | x_35) < x_38)) {
+    } else {
+      break;
+    }
+    let x_41 : i32 = i;
+    let x_43 : i32 = x_6.x_GLF_uniform_int_values[0];
+    a = (x_41 * x_43);
+
+    continuing {
+      let x_45 : i32 = i;
+      i = (x_45 + 1);
+    }
+  }
+  let x_47 : i32 = a;
+  let x_49 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_47 == -(x_49))) {
+    let x_56 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_59 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_62 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_56), f32(x_59), f32(x_62), f32(x_65));
+  } else {
+    let x_68 : i32 = a;
+    let x_69 : f32 = f32(x_68);
+    x_GLF_color = vec4<f32>(x_69, x_69, x_69, x_69);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm
new file mode 100644
index 0000000..f283a14
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm
@@ -0,0 +1,56 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_3 = OpConstant %float 3
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %23 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %24 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %25 = OpLoad %float %24
+         %26 = OpExtInst %float %1 Ldexp %25 %int_0
+               OpStore %f %26
+         %27 = OpLoad %float %f
+         %28 = OpFOrdEqual %bool %27 %float_3
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %31
+         %30 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %29
+         %31 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f886474
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  const float x_25 = asfloat(x_6[0].x);
+  f = ldexp(x_25, 0);
+  if ((f == 3.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ab479dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float const x_25 = x_6.three;
+  f = ldexp(x_25, 0);
+  float const x_27 = f;
+  if ((x_27 == 3.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d6a625f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,91 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+         %24 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+    %float_3 = OpConstant %float 3
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+         %21 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %22 = OpLoad %float %21
+         %23 = OpExtInst %float %24 Ldexp %22 %int_0
+               OpStore %f %23
+         %27 = OpLoad %float %f
+         %29 = OpFOrdEqual %bool %27 %float_3
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %x_GLF_color %37
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b5a9b3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  let x_25 : f32 = x_6.three;
+  f = ldexp(x_25, 0);
+  let x_27 : f32 = f;
+  if ((x_27 == 3.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
new file mode 100644
index 0000000..b5a9b3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  let x_25 : f32 = x_6.three;
+  f = ldexp(x_25, 0);
+  let x_27 : f32 = f;
+  if ((x_27 == 3.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f886474
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  const float x_25 = asfloat(x_6[0].x);
+  f = ldexp(x_25, 0);
+  if ((f == 3.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ab479dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float const x_25 = x_6.three;
+  f = ldexp(x_25, 0);
+  float const x_27 = f;
+  if ((x_27 == 3.0f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d6a625f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,91 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+         %24 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+    %float_3 = OpConstant %float 3
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %17
+         %21 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %22 = OpLoad %float %21
+         %23 = OpExtInst %float %24 Ldexp %22 %int_0
+               OpStore %f %23
+         %27 = OpLoad %float %f
+         %29 = OpFOrdEqual %bool %27 %float_3
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %x_GLF_color %37
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b5a9b3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct buf0 {
+  three : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  let x_25 : f32 = x_6.three;
+  f = ldexp(x_25, 0);
+  let x_27 : f32 = f;
+  if ((x_27 == 3.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm
new file mode 100644
index 0000000..b02dd2e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm
@@ -0,0 +1,162 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %A "A"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+%_ptr_Function__arr_int_uint_4 = OpTypePointer Function %_arr_int_uint_4
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %30 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %main = OpFunction %void None %10
+         %31 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %A = OpVariable %_ptr_Function__arr_int_uint_4 Function
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %33 = OpLoad %int %32
+               OpStore %i %33
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %38 %40
+               OpBranchConditional %41 %42 %35
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpAccessChain %_ptr_Function_int %A %43
+               OpStore %46 %45
+         %47 = OpLoad %int %i
+         %48 = OpIMul %int %int_2 %47
+         %49 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %50 = OpLoad %int %49
+         %51 = OpIMul %int %int_2 %50
+         %52 = OpExtInst %int %1 SMax %48 %51
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Function_int %A %58
+               OpStore %59 %int_1
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %60 = OpLoad %int %i
+         %61 = OpIAdd %int %60 %int_1
+               OpStore %i %61
+               OpBranch %34
+         %35 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Function_int %A %63
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %67 = OpLoad %int %66
+         %68 = OpIEqual %bool %65 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Function_int %A %72
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %76 = OpLoad %int %75
+         %77 = OpIEqual %bool %74 %76
+               OpBranch %69
+         %69 = OpLabel
+         %78 = OpPhi %bool %68 %35 %77 %70
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Function_int %A %82
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpIEqual %bool %84 %86
+               OpBranch %79
+         %79 = OpLabel
+         %88 = OpPhi %bool %78 %69 %87 %80
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %92 = OpLoad %int %91
+         %93 = OpAccessChain %_ptr_Function_int %A %92
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %96 = OpLoad %int %95
+         %97 = OpIEqual %bool %94 %96
+               OpBranch %89
+         %89 = OpLabel
+         %98 = OpPhi %bool %88 %79 %97 %90
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %103 = OpLoad %int %102
+        %104 = OpConvertSToF %float %103
+        %105 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %106 = OpLoad %int %105
+        %107 = OpConvertSToF %float %106
+        %108 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %109
+        %111 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+        %112 = OpLoad %int %111
+        %113 = OpConvertSToF %float %112
+        %114 = OpCompositeConstruct %v4float %104 %107 %110 %113
+               OpStore %_GLF_color %114
+               OpBranch %99
+        %101 = OpLabel
+               OpStore %_GLF_color %30
+               OpBranch %99
+         %99 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b79d8c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,98 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int A[4] = (int[4])0;
+  bool x_77 = false;
+  bool x_87 = false;
+  bool x_97 = false;
+  bool x_78_phi = false;
+  bool x_88_phi = false;
+  bool x_98_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_33 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  i = x_33;
+  while (true) {
+    const int x_38 = i;
+    const int x_40 = asint(x_6[4].x);
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    const int x_43 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    A[x_43] = x_45;
+    const int x_47 = i;
+    const int x_50 = asint(x_6[3].x);
+    const int x_54 = asint(x_6[1].x);
+    if ((max((2 * x_47), (2 * x_50)) == x_54)) {
+      A[i] = 1;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_63 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_65 = A[x_63];
+  const int x_67 = asint(x_6[3].x);
+  const bool x_68 = (x_65 == x_67);
+  x_78_phi = x_68;
+  if (x_68) {
+    const int x_72 = asint(x_6[3].x);
+    const int x_74 = A[x_72];
+    const int x_76 = asint(x_6[3].x);
+    x_77 = (x_74 == x_76);
+    x_78_phi = x_77;
+  }
+  const bool x_78 = x_78_phi;
+  x_88_phi = x_78;
+  if (x_78) {
+    const int x_82 = asint(x_6[1].x);
+    const int x_84 = A[x_82];
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_86 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_87 = (x_84 == x_86);
+    x_88_phi = x_87;
+  }
+  const bool x_88 = x_88_phi;
+  x_98_phi = x_88;
+  if (x_88) {
+    const int x_92 = asint(x_6[2].x);
+    const int x_94 = A[x_92];
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_96 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_97 = (x_94 == x_96);
+    x_98_phi = x_97;
+  }
+  if (x_98_phi) {
+    const int x_103 = asint(x_6[3].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_106 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_109 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const int x_112 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_103), float(x_106), float(x_109), float(x_112));
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a850e67
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[4];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 A = {};
+  bool x_77 = false;
+  bool x_87 = false;
+  bool x_97 = false;
+  bool x_78_phi = false;
+  bool x_88_phi = false;
+  bool x_98_phi = false;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i = x_33;
+  while (true) {
+    int const x_38 = i;
+    int const x_40 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    int const x_43 = i;
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    A.arr[x_43] = x_45;
+    int const x_47 = i;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_54 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((max((2 * x_47), (2 * x_50)) == x_54)) {
+      int const x_58 = i;
+      A.arr[x_58] = 1;
+    }
+    {
+      int const x_60 = i;
+      i = (x_60 + 1);
+    }
+  }
+  int const x_63 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_65 = A.arr[x_63];
+  int const x_67 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  bool const x_68 = (x_65 == x_67);
+  x_78_phi = x_68;
+  if (x_68) {
+    int const x_72 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_74 = A.arr[x_72];
+    int const x_76 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    x_77 = (x_74 == x_76);
+    x_78_phi = x_77;
+  }
+  bool const x_78 = x_78_phi;
+  x_88_phi = x_78;
+  if (x_78) {
+    int const x_82 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_84 = A.arr[x_82];
+    int const x_86 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    x_87 = (x_84 == x_86);
+    x_88_phi = x_87;
+  }
+  bool const x_88 = x_88_phi;
+  x_98_phi = x_88;
+  if (x_88) {
+    int const x_92 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_94 = A.arr[x_92];
+    int const x_96 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    x_97 = (x_94 == x_96);
+    x_98_phi = x_97;
+  }
+  bool const x_98 = x_98_phi;
+  if (x_98) {
+    int const x_103 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_106 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_109 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_112 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_103), float(x_106), float(x_109), float(x_112));
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a003ea9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,229 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 146
+; Schema: 0
+               OpCapability Shader
+         %65 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %A "A"
+               OpName %x_77 "x_77"
+               OpName %x_87 "x_87"
+               OpName %x_97 "x_97"
+               OpName %x_78_phi "x_78_phi"
+               OpName %x_88_phi "x_88_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+%_ptr_Function__arr_int_uint_4 = OpTypePointer Function %_arr_int_uint_4
+         %26 = OpConstantNull %_arr_int_uint_4
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+        %133 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %134 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %A = OpVariable %_ptr_Function__arr_int_uint_4 Function %26
+       %x_77 = OpVariable %_ptr_Function_bool Function %30
+       %x_87 = OpVariable %_ptr_Function_bool Function %30
+       %x_97 = OpVariable %_ptr_Function_bool Function %30
+   %x_78_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_88_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_98_phi = OpVariable %_ptr_Function_bool Function %30
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %40 = OpLoad %int %39
+               OpStore %i %40
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %48 = OpLoad %int %47
+         %49 = OpSLessThan %bool %45 %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %42
+         %50 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_int %A %53
+               OpStore %56 %55
+         %57 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %60 = OpLoad %int %59
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %67 = OpIMul %int %int_2 %57
+         %68 = OpIMul %int %int_2 %60
+         %64 = OpExtInst %int %65 SMax %67 %68
+         %69 = OpIEqual %bool %64 %63
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %int %i
+         %73 = OpAccessChain %_ptr_Function_int %A %72
+               OpStore %73 %int_1
+               OpBranch %70
+         %70 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %i %75
+               OpBranch %41
+         %42 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Function_int %A %77
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %81 = OpLoad %int %80
+         %82 = OpIEqual %bool %79 %81
+               OpStore %x_78_phi %82
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Function_int %A %86
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %90 = OpLoad %int %89
+         %91 = OpIEqual %bool %88 %90
+               OpStore %x_77 %91
+         %92 = OpLoad %bool %x_77
+               OpStore %x_78_phi %92
+               OpBranch %83
+         %83 = OpLabel
+         %93 = OpLoad %bool %x_78_phi
+               OpStore %x_88_phi %93
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Function_int %A %97
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %101 = OpLoad %int %100
+        %102 = OpIEqual %bool %99 %101
+               OpStore %x_87 %102
+        %103 = OpLoad %bool %x_87
+               OpStore %x_88_phi %103
+               OpBranch %94
+         %94 = OpLabel
+        %104 = OpLoad %bool %x_88_phi
+               OpStore %x_98_phi %104
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %105
+        %106 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Function_int %A %108
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %112 = OpLoad %int %111
+        %113 = OpIEqual %bool %110 %112
+               OpStore %x_97 %113
+        %114 = OpLoad %bool %x_97
+               OpStore %x_98_phi %114
+               OpBranch %105
+        %105 = OpLabel
+        %115 = OpLoad %bool %x_98_phi
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %120
+        %128 = OpConvertSToF %float %122
+        %129 = OpConvertSToF %float %124
+        %130 = OpConvertSToF %float %126
+        %131 = OpCompositeConstruct %v4float %127 %128 %129 %130
+               OpStore %x_GLF_color %131
+               OpBranch %116
+        %118 = OpLabel
+               OpStore %x_GLF_color %133
+               OpBranch %116
+        %116 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %134
+%tint_symbol = OpFunctionParameter %main_out
+        %138 = OpLabel
+        %139 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %139
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %141 = OpLabel
+        %142 = OpFunctionCall %void %main_1
+        %144 = OpLoad %v4float %x_GLF_color
+        %145 = OpCompositeConstruct %main_out %144
+        %143 = OpFunctionCall %void %tint_symbol_2 %145
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f4af7a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,98 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var A : array<i32, 4>;
+  var x_77 : bool;
+  var x_87 : bool;
+  var x_97 : bool;
+  var x_78_phi : bool;
+  var x_88_phi : bool;
+  var x_98_phi : bool;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = x_33;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[4];
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    A[x_43] = x_45;
+    let x_47 : i32 = i;
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((max((2 * x_47), (2 * x_50)) == x_54)) {
+      let x_58 : i32 = i;
+      A[x_58] = 1;
+    }
+
+    continuing {
+      let x_60 : i32 = i;
+      i = (x_60 + 1);
+    }
+  }
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_65 : i32 = A[x_63];
+  let x_67 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_68 : bool = (x_65 == x_67);
+  x_78_phi = x_68;
+  if (x_68) {
+    let x_72 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_74 : i32 = A[x_72];
+    let x_76 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_77 = (x_74 == x_76);
+    x_78_phi = x_77;
+  }
+  let x_78 : bool = x_78_phi;
+  x_88_phi = x_78;
+  if (x_78) {
+    let x_82 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = A[x_82];
+    let x_86 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_87 = (x_84 == x_86);
+    x_88_phi = x_87;
+  }
+  let x_88 : bool = x_88_phi;
+  x_98_phi = x_88;
+  if (x_88) {
+    let x_92 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_94 : i32 = A[x_92];
+    let x_96 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_97 = (x_94 == x_96);
+    x_98_phi = x_97;
+  }
+  let x_98 : bool = x_98_phi;
+  if (x_98) {
+    let x_103 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_106 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_109 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_112 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_103), f32(x_106), f32(x_109), f32(x_112));
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
new file mode 100644
index 0000000..f4af7a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
@@ -0,0 +1,98 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var A : array<i32, 4>;
+  var x_77 : bool;
+  var x_87 : bool;
+  var x_97 : bool;
+  var x_78_phi : bool;
+  var x_88_phi : bool;
+  var x_98_phi : bool;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = x_33;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[4];
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    A[x_43] = x_45;
+    let x_47 : i32 = i;
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((max((2 * x_47), (2 * x_50)) == x_54)) {
+      let x_58 : i32 = i;
+      A[x_58] = 1;
+    }
+
+    continuing {
+      let x_60 : i32 = i;
+      i = (x_60 + 1);
+    }
+  }
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_65 : i32 = A[x_63];
+  let x_67 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_68 : bool = (x_65 == x_67);
+  x_78_phi = x_68;
+  if (x_68) {
+    let x_72 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_74 : i32 = A[x_72];
+    let x_76 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_77 = (x_74 == x_76);
+    x_78_phi = x_77;
+  }
+  let x_78 : bool = x_78_phi;
+  x_88_phi = x_78;
+  if (x_78) {
+    let x_82 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = A[x_82];
+    let x_86 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_87 = (x_84 == x_86);
+    x_88_phi = x_87;
+  }
+  let x_88 : bool = x_88_phi;
+  x_98_phi = x_88;
+  if (x_88) {
+    let x_92 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_94 : i32 = A[x_92];
+    let x_96 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_97 = (x_94 == x_96);
+    x_98_phi = x_97;
+  }
+  let x_98 : bool = x_98_phi;
+  if (x_98) {
+    let x_103 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_106 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_109 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_112 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_103), f32(x_106), f32(x_109), f32(x_112));
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b79d8c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,98 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int A[4] = (int[4])0;
+  bool x_77 = false;
+  bool x_87 = false;
+  bool x_97 = false;
+  bool x_78_phi = false;
+  bool x_88_phi = false;
+  bool x_98_phi = false;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_33 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  i = x_33;
+  while (true) {
+    const int x_38 = i;
+    const int x_40 = asint(x_6[4].x);
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    const int x_43 = i;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    A[x_43] = x_45;
+    const int x_47 = i;
+    const int x_50 = asint(x_6[3].x);
+    const int x_54 = asint(x_6[1].x);
+    if ((max((2 * x_47), (2 * x_50)) == x_54)) {
+      A[i] = 1;
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_63 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_65 = A[x_63];
+  const int x_67 = asint(x_6[3].x);
+  const bool x_68 = (x_65 == x_67);
+  x_78_phi = x_68;
+  if (x_68) {
+    const int x_72 = asint(x_6[3].x);
+    const int x_74 = A[x_72];
+    const int x_76 = asint(x_6[3].x);
+    x_77 = (x_74 == x_76);
+    x_78_phi = x_77;
+  }
+  const bool x_78 = x_78_phi;
+  x_88_phi = x_78;
+  if (x_78) {
+    const int x_82 = asint(x_6[1].x);
+    const int x_84 = A[x_82];
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_86 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_87 = (x_84 == x_86);
+    x_88_phi = x_87;
+  }
+  const bool x_88 = x_88_phi;
+  x_98_phi = x_88;
+  if (x_88) {
+    const int x_92 = asint(x_6[2].x);
+    const int x_94 = A[x_92];
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_96 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_97 = (x_94 == x_96);
+    x_98_phi = x_97;
+  }
+  if (x_98_phi) {
+    const int x_103 = asint(x_6[3].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_106 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_109 = asint(x_6[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const int x_112 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_103), float(x_106), float(x_109), float(x_112));
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a850e67
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[4];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 A = {};
+  bool x_77 = false;
+  bool x_87 = false;
+  bool x_97 = false;
+  bool x_78_phi = false;
+  bool x_88_phi = false;
+  bool x_98_phi = false;
+  int const x_33 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i = x_33;
+  while (true) {
+    int const x_38 = i;
+    int const x_40 = x_6.x_GLF_uniform_int_values.arr[4].el;
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    int const x_43 = i;
+    int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    A.arr[x_43] = x_45;
+    int const x_47 = i;
+    int const x_50 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_54 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    if ((max((2 * x_47), (2 * x_50)) == x_54)) {
+      int const x_58 = i;
+      A.arr[x_58] = 1;
+    }
+    {
+      int const x_60 = i;
+      i = (x_60 + 1);
+    }
+  }
+  int const x_63 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_65 = A.arr[x_63];
+  int const x_67 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  bool const x_68 = (x_65 == x_67);
+  x_78_phi = x_68;
+  if (x_68) {
+    int const x_72 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_74 = A.arr[x_72];
+    int const x_76 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    x_77 = (x_74 == x_76);
+    x_78_phi = x_77;
+  }
+  bool const x_78 = x_78_phi;
+  x_88_phi = x_78;
+  if (x_78) {
+    int const x_82 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_84 = A.arr[x_82];
+    int const x_86 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    x_87 = (x_84 == x_86);
+    x_88_phi = x_87;
+  }
+  bool const x_88 = x_88_phi;
+  x_98_phi = x_88;
+  if (x_88) {
+    int const x_92 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_94 = A.arr[x_92];
+    int const x_96 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    x_97 = (x_94 == x_96);
+    x_98_phi = x_97;
+  }
+  bool const x_98 = x_98_phi;
+  if (x_98) {
+    int const x_103 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_106 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_109 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_112 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_103), float(x_106), float(x_109), float(x_112));
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..a003ea9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,229 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 146
+; Schema: 0
+               OpCapability Shader
+         %65 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %A "A"
+               OpName %x_77 "x_77"
+               OpName %x_87 "x_87"
+               OpName %x_97 "x_97"
+               OpName %x_78_phi "x_78_phi"
+               OpName %x_88_phi "x_88_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+%_ptr_Function__arr_int_uint_4 = OpTypePointer Function %_arr_int_uint_4
+         %26 = OpConstantNull %_arr_int_uint_4
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+        %133 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %134 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %A = OpVariable %_ptr_Function__arr_int_uint_4 Function %26
+       %x_77 = OpVariable %_ptr_Function_bool Function %30
+       %x_87 = OpVariable %_ptr_Function_bool Function %30
+       %x_97 = OpVariable %_ptr_Function_bool Function %30
+   %x_78_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_88_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_98_phi = OpVariable %_ptr_Function_bool Function %30
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %40 = OpLoad %int %39
+               OpStore %i %40
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %47 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %48 = OpLoad %int %47
+         %49 = OpSLessThan %bool %45 %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %42
+         %50 = OpLabel
+         %53 = OpLoad %int %i
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_int %A %53
+               OpStore %56 %55
+         %57 = OpLoad %int %i
+         %59 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %60 = OpLoad %int %59
+         %62 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %63 = OpLoad %int %62
+         %67 = OpIMul %int %int_2 %57
+         %68 = OpIMul %int %int_2 %60
+         %64 = OpExtInst %int %65 SMax %67 %68
+         %69 = OpIEqual %bool %64 %63
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %int %i
+         %73 = OpAccessChain %_ptr_Function_int %A %72
+               OpStore %73 %int_1
+               OpBranch %70
+         %70 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %i %75
+               OpBranch %41
+         %42 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Function_int %A %77
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %81 = OpLoad %int %80
+         %82 = OpIEqual %bool %79 %81
+               OpStore %x_78_phi %82
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Function_int %A %86
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %90 = OpLoad %int %89
+         %91 = OpIEqual %bool %88 %90
+               OpStore %x_77 %91
+         %92 = OpLoad %bool %x_77
+               OpStore %x_78_phi %92
+               OpBranch %83
+         %83 = OpLabel
+         %93 = OpLoad %bool %x_78_phi
+               OpStore %x_88_phi %93
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Function_int %A %97
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %101 = OpLoad %int %100
+        %102 = OpIEqual %bool %99 %101
+               OpStore %x_87 %102
+        %103 = OpLoad %bool %x_87
+               OpStore %x_88_phi %103
+               OpBranch %94
+         %94 = OpLabel
+        %104 = OpLoad %bool %x_88_phi
+               OpStore %x_98_phi %104
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %105
+        %106 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Function_int %A %108
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %112 = OpLoad %int %111
+        %113 = OpIEqual %bool %110 %112
+               OpStore %x_97 %113
+        %114 = OpLoad %bool %x_97
+               OpStore %x_98_phi %114
+               OpBranch %105
+        %105 = OpLabel
+        %115 = OpLoad %bool %x_98_phi
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %120
+        %128 = OpConvertSToF %float %122
+        %129 = OpConvertSToF %float %124
+        %130 = OpConvertSToF %float %126
+        %131 = OpCompositeConstruct %v4float %127 %128 %129 %130
+               OpStore %x_GLF_color %131
+               OpBranch %116
+        %118 = OpLabel
+               OpStore %x_GLF_color %133
+               OpBranch %116
+        %116 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %134
+%tint_symbol = OpFunctionParameter %main_out
+        %138 = OpLabel
+        %139 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %139
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %141 = OpLabel
+        %142 = OpFunctionCall %void %main_1
+        %144 = OpLoad %v4float %x_GLF_color
+        %145 = OpCompositeConstruct %main_out %144
+        %143 = OpFunctionCall %void %tint_symbol_2 %145
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f4af7a1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,98 @@
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var A : array<i32, 4>;
+  var x_77 : bool;
+  var x_87 : bool;
+  var x_97 : bool;
+  var x_78_phi : bool;
+  var x_88_phi : bool;
+  var x_98_phi : bool;
+  let x_33 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i = x_33;
+  loop {
+    let x_38 : i32 = i;
+    let x_40 : i32 = x_6.x_GLF_uniform_int_values[4];
+    if ((x_38 < x_40)) {
+    } else {
+      break;
+    }
+    let x_43 : i32 = i;
+    let x_45 : i32 = x_6.x_GLF_uniform_int_values[0];
+    A[x_43] = x_45;
+    let x_47 : i32 = i;
+    let x_50 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_54 : i32 = x_6.x_GLF_uniform_int_values[1];
+    if ((max((2 * x_47), (2 * x_50)) == x_54)) {
+      let x_58 : i32 = i;
+      A[x_58] = 1;
+    }
+
+    continuing {
+      let x_60 : i32 = i;
+      i = (x_60 + 1);
+    }
+  }
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_65 : i32 = A[x_63];
+  let x_67 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_68 : bool = (x_65 == x_67);
+  x_78_phi = x_68;
+  if (x_68) {
+    let x_72 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_74 : i32 = A[x_72];
+    let x_76 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_77 = (x_74 == x_76);
+    x_78_phi = x_77;
+  }
+  let x_78 : bool = x_78_phi;
+  x_88_phi = x_78;
+  if (x_78) {
+    let x_82 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_84 : i32 = A[x_82];
+    let x_86 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_87 = (x_84 == x_86);
+    x_88_phi = x_87;
+  }
+  let x_88 : bool = x_88_phi;
+  x_98_phi = x_88;
+  if (x_88) {
+    let x_92 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_94 : i32 = A[x_92];
+    let x_96 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_97 = (x_94 == x_96);
+    x_98_phi = x_97;
+  }
+  let x_98 : bool = x_98_phi;
+  if (x_98) {
+    let x_103 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_106 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_109 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_112 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_103), f32(x_106), f32(x_109), f32(x_112));
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm
new file mode 100644
index 0000000..9e5dbf8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm
@@ -0,0 +1,83 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf1 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %12
+         %28 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+         %29 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %30 = OpLoad %float %29
+         %31 = OpFMod %float %30 %float_1
+               OpStore %a %31
+         %32 = OpLoad %float %a
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %34 = OpLoad %float %33
+         %35 = OpFOrdEqual %bool %32 %34
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpLoad %float %a
+         %43 = OpLoad %float %a
+         %44 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpConvertSToF %float %45
+         %47 = OpCompositeConstruct %v4float %41 %42 %43 %46
+               OpStore %_GLF_color %47
+               OpBranch %36
+         %38 = OpLabel
+         %48 = OpLoad %float %a
+         %49 = OpCompositeConstruct %v4float %48 %48 %48 %48
+               OpStore %_GLF_color %49
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2ae1a6e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+
+void main_1() {
+  float a = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_30 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = (x_30 % 1.0f);
+  const float x_32 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_32 == x_34)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_40 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_42 = a;
+    const float x_43 = a;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_40), x_42, x_43, float(x_45));
+  } else {
+    const float x_48 = a;
+    x_GLF_color = float4(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.msl
new file mode 100755
index 0000000..514ffa4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float const x_30 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  a = (x_30 % 1.0f);
+  float const x_32 = a;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_32 == x_34)) {
+    int const x_40 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_42 = a;
+    float const x_43 = a;
+    int const x_45 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_40), x_42, x_43, float(x_45));
+  } else {
+    float const x_48 = a;
+    *(tint_symbol_4) = float4(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\us0.0.metal:34:13: error: invalid operands to binary expression ('const float' and 'float')
+  a = (x_30 % 1.0f);
+       ~~~~ ^ ~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4f6ad22
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf1 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %54 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %26
+         %30 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %31 = OpLoad %float %30
+         %33 = OpFMod %float %31 %float_1
+               OpStore %a %33
+         %34 = OpLoad %float %a
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpFOrdEqual %bool %34 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpLoad %float %a
+         %46 = OpLoad %float %a
+         %47 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %44
+         %50 = OpConvertSToF %float %48
+         %51 = OpCompositeConstruct %v4float %49 %45 %46 %50
+               OpStore %x_GLF_color %51
+               OpBranch %39
+         %41 = OpLabel
+         %52 = OpLoad %float %a
+         %53 = OpCompositeConstruct %v4float %52 %52 %52 %52
+               OpStore %x_GLF_color %53
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %54
+%tint_symbol = OpFunctionParameter %main_out
+         %58 = OpLabel
+         %59 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %59
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %61 = OpLabel
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_2 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2690c8d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[0];
+  a = (x_30 % 1.0);
+  let x_32 : f32 = a;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_32 == x_34)) {
+    let x_40 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_42 : f32 = a;
+    let x_43 : f32 = a;
+    let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_40), x_42, x_43, f32(x_45));
+  } else {
+    let x_48 : f32 = a;
+    x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
new file mode 100644
index 0000000..2690c8d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[0];
+  a = (x_30 % 1.0);
+  let x_32 : f32 = a;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_32 == x_34)) {
+    let x_40 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_42 : f32 = a;
+    let x_43 : f32 = a;
+    let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_40), x_42, x_43, f32(x_45));
+  } else {
+    let x_48 : f32 = a;
+    x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2ae1a6e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+
+void main_1() {
+  float a = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_30 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  a = (x_30 % 1.0f);
+  const float x_32 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_34 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_32 == x_34)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_40 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const float x_42 = a;
+    const float x_43 = a;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_45 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_40), x_42, x_43, float(x_45));
+  } else {
+    const float x_48 = a;
+    x_GLF_color = float4(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.msl
new file mode 100755
index 0000000..7fbbeaa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.msl
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float a = 0.0f;
+  float const x_30 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  a = (x_30 % 1.0f);
+  float const x_32 = a;
+  float const x_34 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_32 == x_34)) {
+    int const x_40 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_42 = a;
+    float const x_43 = a;
+    int const x_45 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_40), x_42, x_43, float(x_45));
+  } else {
+    float const x_48 = a;
+    *(tint_symbol_4) = float4(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+T:\tmp\u8k0.0.metal:34:13: error: invalid operands to binary expression ('const float' and 'float')
+  a = (x_30 % 1.0f);
+       ~~~~ ^ ~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4f6ad22
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %11 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %11
+        %int = OpTypeInt 32 1
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+       %buf1 = OpTypeStruct %_arr_int_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %11
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %54 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %26
+         %30 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %31 = OpLoad %float %30
+         %33 = OpFMod %float %31 %float_1
+               OpStore %a %33
+         %34 = OpLoad %float %a
+         %35 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %36 = OpLoad %float %35
+         %37 = OpFOrdEqual %bool %34 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %44 = OpLoad %int %43
+         %45 = OpLoad %float %a
+         %46 = OpLoad %float %a
+         %47 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpConvertSToF %float %44
+         %50 = OpConvertSToF %float %48
+         %51 = OpCompositeConstruct %v4float %49 %45 %46 %50
+               OpStore %x_GLF_color %51
+               OpBranch %39
+         %41 = OpLabel
+         %52 = OpLoad %float %a
+         %53 = OpCompositeConstruct %v4float %52 %52 %52 %52
+               OpStore %x_GLF_color %53
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %54
+%tint_symbol = OpFunctionParameter %main_out
+         %58 = OpLabel
+         %59 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %59
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %61 = OpLabel
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_2 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2690c8d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var a : f32;
+  let x_30 : f32 = x_6.x_GLF_uniform_float_values[0];
+  a = (x_30 % 1.0);
+  let x_32 : f32 = a;
+  let x_34 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_32 == x_34)) {
+    let x_40 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_42 : f32 = a;
+    let x_43 : f32 = a;
+    let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_40), x_42, x_43, f32(x_45));
+  } else {
+    let x_48 : f32 = a;
+    x_GLF_color = vec4<f32>(x_48, x_48, x_48, x_48);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm
new file mode 100644
index 0000000..26c6b31
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm
@@ -0,0 +1,72 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %res "res"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%float_8_39999962 = OpConstant %float 8.39999962
+%float_n864_664978 = OpConstant %float -864.664978
+%float_945_419983 = OpConstant %float 945.419983
+    %float_1 = OpConstant %float 1
+         %17 = OpConstantComposite %v4float %float_8_39999962 %float_n864_664978 %float_945_419983 %float_1
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%mat4v4float = OpTypeMatrix %v4float 4
+    %float_0 = OpConstant %float 0
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %29 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+        %res = OpVariable %_ptr_Function_v4float Function
+               OpStore %v %17
+         %30 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %31 = OpLoad %float %30
+         %32 = OpCompositeConstruct %v4float %31 %float_0 %float_0 %float_0
+         %33 = OpCompositeConstruct %v4float %float_0 %31 %float_0 %float_0
+         %34 = OpCompositeConstruct %v4float %float_0 %float_0 %31 %float_0
+         %35 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %31
+         %36 = OpCompositeConstruct %mat4v4float %32 %33 %34 %35
+         %37 = OpLoad %v4float %v
+         %38 = OpMatrixTimesVector %v4float %36 %37
+               OpStore %res %38
+         %39 = OpLoad %v4float %v
+         %40 = OpLoad %v4float %res
+         %41 = OpExtInst %float %1 Distance %39 %40
+         %42 = OpFOrdLessThan %bool %41 %float_0_00999999978
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %43
+         %45 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..322962c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,32 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 res = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  v = float4(8.399999619f, -864.664978027f, 945.41998291f, 1.0f);
+  const float x_31 = asfloat(x_7[0].x);
+  res = mul(v, float4x4(float4(x_31, 0.0f, 0.0f, 0.0f), float4(0.0f, x_31, 0.0f, 0.0f), float4(0.0f, 0.0f, x_31, 0.0f), float4(0.0f, 0.0f, 0.0f, x_31)));
+  if ((distance(v, res) < 0.01f)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6c24b25
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float4 res = 0.0f;
+  v = float4(8.399999619f, -864.664978027f, 945.41998291f, 1.0f);
+  float const x_31 = x_7.one;
+  float4 const x_37 = v;
+  res = (float4x4(float4(x_31, 0.0f, 0.0f, 0.0f), float4(0.0f, x_31, 0.0f, 0.0f), float4(0.0f, 0.0f, x_31, 0.0f), float4(0.0f, 0.0f, 0.0f, x_31)) * x_37);
+  float4 const x_39 = v;
+  float4 const x_40 = res;
+  if ((distance(x_39, x_40) < 0.01f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4cc9182
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+         %40 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %res "res"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%float_8_39999962 = OpConstant %float 8.39999962
+%float_n864_664978 = OpConstant %float -864.664978
+%float_945_419983 = OpConstant %float 945.419983
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_8_39999962 %float_n864_664978 %float_945_419983 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%mat4v4float = OpTypeMatrix %v4float 4
+    %float_0 = OpConstant %float 0
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+         %47 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %48 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %8
+        %res = OpVariable %_ptr_Function_v4float Function %8
+               OpStore %v %22
+         %26 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %27 = OpLoad %float %26
+         %28 = OpLoad %v4float %v
+         %31 = OpCompositeConstruct %v4float %27 %float_0 %float_0 %float_0
+         %32 = OpCompositeConstruct %v4float %float_0 %27 %float_0 %float_0
+         %33 = OpCompositeConstruct %v4float %float_0 %float_0 %27 %float_0
+         %34 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %27
+         %35 = OpCompositeConstruct %mat4v4float %31 %32 %33 %34
+         %36 = OpMatrixTimesVector %v4float %35 %28
+               OpStore %res %36
+         %37 = OpLoad %v4float %v
+         %38 = OpLoad %v4float %res
+         %39 = OpExtInst %float %40 Distance %37 %38
+         %42 = OpFOrdLessThan %bool %39 %float_0_00999999978
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %44
+         %46 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %44
+         %44 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..acefefb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var res : vec4<f32>;
+  v = vec4<f32>(8.399999619, -864.664978027, 945.41998291, 1.0);
+  let x_31 : f32 = x_7.one;
+  let x_37 : vec4<f32> = v;
+  res = (mat4x4<f32>(vec4<f32>(x_31, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_31, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_31, 0.0), vec4<f32>(0.0, 0.0, 0.0, x_31)) * x_37);
+  let x_39 : vec4<f32> = v;
+  let x_40 : vec4<f32> = res;
+  if ((distance(x_39, x_40) < 0.01)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
new file mode 100644
index 0000000..acefefb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var res : vec4<f32>;
+  v = vec4<f32>(8.399999619, -864.664978027, 945.41998291, 1.0);
+  let x_31 : f32 = x_7.one;
+  let x_37 : vec4<f32> = v;
+  res = (mat4x4<f32>(vec4<f32>(x_31, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_31, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_31, 0.0), vec4<f32>(0.0, 0.0, 0.0, x_31)) * x_37);
+  let x_39 : vec4<f32> = v;
+  let x_40 : vec4<f32> = res;
+  if ((distance(x_39, x_40) < 0.01)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..322962c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,32 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 res = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  v = float4(8.399999619f, -864.664978027f, 945.41998291f, 1.0f);
+  const float x_31 = asfloat(x_7[0].x);
+  res = mul(v, float4x4(float4(x_31, 0.0f, 0.0f, 0.0f), float4(0.0f, x_31, 0.0f, 0.0f), float4(0.0f, 0.0f, x_31, 0.0f), float4(0.0f, 0.0f, 0.0f, x_31)));
+  if ((distance(v, res) < 0.01f)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6c24b25
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  float4 res = 0.0f;
+  v = float4(8.399999619f, -864.664978027f, 945.41998291f, 1.0f);
+  float const x_31 = x_7.one;
+  float4 const x_37 = v;
+  res = (float4x4(float4(x_31, 0.0f, 0.0f, 0.0f), float4(0.0f, x_31, 0.0f, 0.0f), float4(0.0f, 0.0f, x_31, 0.0f), float4(0.0f, 0.0f, 0.0f, x_31)) * x_37);
+  float4 const x_39 = v;
+  float4 const x_40 = res;
+  if ((distance(x_39, x_40) < 0.01f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4cc9182
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+         %40 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %res "res"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%float_8_39999962 = OpConstant %float 8.39999962
+%float_n864_664978 = OpConstant %float -864.664978
+%float_945_419983 = OpConstant %float 945.419983
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_8_39999962 %float_n864_664978 %float_945_419983 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%mat4v4float = OpTypeMatrix %v4float 4
+    %float_0 = OpConstant %float 0
+%float_0_00999999978 = OpConstant %float 0.00999999978
+       %bool = OpTypeBool
+         %47 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %48 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %8
+        %res = OpVariable %_ptr_Function_v4float Function %8
+               OpStore %v %22
+         %26 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %27 = OpLoad %float %26
+         %28 = OpLoad %v4float %v
+         %31 = OpCompositeConstruct %v4float %27 %float_0 %float_0 %float_0
+         %32 = OpCompositeConstruct %v4float %float_0 %27 %float_0 %float_0
+         %33 = OpCompositeConstruct %v4float %float_0 %float_0 %27 %float_0
+         %34 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %27
+         %35 = OpCompositeConstruct %mat4v4float %31 %32 %33 %34
+         %36 = OpMatrixTimesVector %v4float %35 %28
+               OpStore %res %36
+         %37 = OpLoad %v4float %v
+         %38 = OpLoad %v4float %res
+         %39 = OpExtInst %float %40 Distance %37 %38
+         %42 = OpFOrdLessThan %bool %39 %float_0_00999999978
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %44
+         %46 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %44
+         %44 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..acefefb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  var res : vec4<f32>;
+  v = vec4<f32>(8.399999619, -864.664978027, 945.41998291, 1.0);
+  let x_31 : f32 = x_7.one;
+  let x_37 : vec4<f32> = v;
+  res = (mat4x4<f32>(vec4<f32>(x_31, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_31, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_31, 0.0), vec4<f32>(0.0, 0.0, 0.0, x_31)) * x_37);
+  let x_39 : vec4<f32> = v;
+  let x_40 : vec4<f32> = res;
+  if ((distance(x_39, x_40) < 0.01)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm
new file mode 100644
index 0000000..cf65bd9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm
@@ -0,0 +1,68 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+   %float_n5 = OpConstant %float -5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %27 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %29 = OpLoad %int %28
+         %30 = OpSGreaterThan %bool %29 %int_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %31
+         %32 = OpLabel
+         %33 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpFOrdLessThan %bool %34 %float_n5
+         %36 = OpLogicalNot %bool %35
+               OpBranch %31
+         %31 = OpLabel
+         %37 = OpPhi %bool %30 %27 %36 %32
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %40
+         %39 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %38
+         %40 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..791abae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+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() {
+  bool x_36 = false;
+  bool x_37_phi = false;
+  const int x_29 = asint(x_6[0].x);
+  const bool x_30 = (x_29 > 1);
+  x_37_phi = x_30;
+  if (x_30) {
+    const float x_34 = gl_FragCoord.y;
+    x_36 = !((x_34 < -5.0f));
+    x_37_phi = x_36;
+  }
+  if (x_37_phi) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.msl
new file mode 100644
index 0000000..051b40e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  bool x_36 = false;
+  bool x_37_phi = false;
+  int const x_29 = x_6.three;
+  bool const x_30 = (x_29 > 1);
+  x_37_phi = x_30;
+  if (x_30) {
+    float const x_34 = (*(tint_symbol_5)).y;
+    x_36 = !((x_34 < -5.0f));
+    x_37_phi = x_36;
+  }
+  bool const x_37 = x_37_phi;
+  if (x_37) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..843780c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.spvasm
@@ -0,0 +1,113 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_37_phi "x_37_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %22 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n5 = OpConstant %float -5
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %47 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %48 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_bool Function %22
+   %x_37_phi = OpVariable %_ptr_Function_bool Function %22
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %28 = OpLoad %int %27
+         %30 = OpSGreaterThan %bool %28 %int_1
+               OpStore %x_37_phi %30
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %31
+         %32 = OpLabel
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %36 = OpLoad %float %35
+         %39 = OpFOrdLessThan %bool %36 %float_n5
+         %37 = OpLogicalNot %bool %39
+               OpStore %x_36 %37
+         %40 = OpLoad %bool %x_36
+               OpStore %x_37_phi %40
+               OpBranch %31
+         %31 = OpLabel
+         %41 = OpLoad %bool %x_37_phi
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %49
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %56 = OpLabel
+         %57 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %57
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_3 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..6bdc812
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+[[block]]
+struct buf0 {
+  three : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool;
+  var x_37_phi : bool;
+  let x_29 : i32 = x_6.three;
+  let x_30 : bool = (x_29 > 1);
+  x_37_phi = x_30;
+  if (x_30) {
+    let x_34 : f32 = gl_FragCoord.y;
+    x_36 = !((x_34 < -5.0));
+    x_37_phi = x_36;
+  }
+  let x_37 : bool = x_37_phi;
+  if (x_37) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
new file mode 100644
index 0000000..6bdc812
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
@@ -0,0 +1,42 @@
+[[block]]
+struct buf0 {
+  three : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool;
+  var x_37_phi : bool;
+  let x_29 : i32 = x_6.three;
+  let x_30 : bool = (x_29 > 1);
+  x_37_phi = x_30;
+  if (x_30) {
+    let x_34 : f32 = gl_FragCoord.y;
+    x_36 = !((x_34 < -5.0));
+    x_37_phi = x_36;
+  }
+  let x_37 : bool = x_37_phi;
+  if (x_37) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..791abae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.hlsl
@@ -0,0 +1,43 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+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() {
+  bool x_36 = false;
+  bool x_37_phi = false;
+  const int x_29 = asint(x_6[0].x);
+  const bool x_30 = (x_29 > 1);
+  x_37_phi = x_30;
+  if (x_30) {
+    const float x_34 = gl_FragCoord.y;
+    x_36 = !((x_34 < -5.0f));
+    x_37_phi = x_36;
+  }
+  if (x_37_phi) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.msl
new file mode 100644
index 0000000..051b40e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int three;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  bool x_36 = false;
+  bool x_37_phi = false;
+  int const x_29 = x_6.three;
+  bool const x_30 = (x_29 > 1);
+  x_37_phi = x_30;
+  if (x_30) {
+    float const x_34 = (*(tint_symbol_5)).y;
+    x_36 = !((x_34 < -5.0f));
+    x_37_phi = x_36;
+  }
+  bool const x_37 = x_37_phi;
+  if (x_37) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..843780c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.spvasm
@@ -0,0 +1,113 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "three"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_37_phi "x_37_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %22 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n5 = OpConstant %float -5
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %47 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %48 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_bool Function %22
+   %x_37_phi = OpVariable %_ptr_Function_bool Function %22
+         %27 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %28 = OpLoad %int %27
+         %30 = OpSGreaterThan %bool %28 %int_1
+               OpStore %x_37_phi %30
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %31
+         %32 = OpLabel
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %36 = OpLoad %float %35
+         %39 = OpFOrdLessThan %bool %36 %float_n5
+         %37 = OpLogicalNot %bool %39
+               OpStore %x_36 %37
+         %40 = OpLoad %bool %x_36
+               OpStore %x_37_phi %40
+               OpBranch %31
+         %31 = OpLabel
+         %41 = OpLoad %bool %x_37_phi
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %44
+         %43 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %42
+         %44 = OpLabel
+               OpStore %x_GLF_color %48
+               OpBranch %42
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %49
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %56 = OpLabel
+         %57 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %57
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_3 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..6bdc812
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+[[block]]
+struct buf0 {
+  three : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool;
+  var x_37_phi : bool;
+  let x_29 : i32 = x_6.three;
+  let x_30 : bool = (x_29 > 1);
+  x_37_phi = x_30;
+  if (x_30) {
+    let x_34 : f32 = gl_FragCoord.y;
+    x_36 = !((x_34 < -5.0));
+    x_37_phi = x_36;
+  }
+  let x_37 : bool = x_37_phi;
+  if (x_37) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm
new file mode 100644
index 0000000..25063bf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm
@@ -0,0 +1,68 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %8
+         %20 = OpLabel
+         %21 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %22 = OpLoad %int %21
+         %23 = OpShiftRightArithmetic %int %int_1 %22
+         %24 = OpSGreaterThan %bool %23 %int_0
+               OpSelectionMerge %25 None
+               OpBranchConditional %24 %26 %27
+         %26 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %29 = OpLoad %int %28
+         %30 = OpConvertSToF %float %29
+         %31 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %32 = OpLoad %int %31
+         %33 = OpConvertSToF %float %32
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpConvertSToF %float %35
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %38 = OpLoad %int %37
+         %39 = OpConvertSToF %float %38
+         %40 = OpCompositeConstruct %v4float %30 %33 %36 %39
+               OpStore %_GLF_color %40
+               OpBranch %25
+         %27 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %42 = OpLoad %int %41
+         %43 = OpConvertSToF %float %42
+         %44 = OpCompositeConstruct %v4float %43 %43 %43 %43
+               OpStore %_GLF_color %44
+               OpBranch %25
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..cc1c58a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,38 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_22 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  if (((1 >> asuint(x_22)) > 0)) {
+    const int x_29 = asint(x_5[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_32 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_35 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_38 = asint(x_5[1].x);
+    x_GLF_color = float4(float(x_29), float(x_32), float(x_35), float(x_38));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_42 = asint(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_43 = float(x_42);
+    x_GLF_color = float4(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1905aab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.msl
@@ -0,0 +1,44 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_22 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  if (((1 >> as_type<uint>(x_22)) > 0)) {
+    int const x_29 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    int const x_32 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    int const x_35 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    int const x_38 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_29), float(x_32), float(x_35), float(x_38));
+  } else {
+    int const x_42 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    float const x_43 = float(x_42);
+    *(tint_symbol_4) = float4(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..599a2ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,101 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %23 = OpLoad %int %22
+         %25 = OpBitcast %uint %23
+         %26 = OpShiftRightArithmetic %int %int_1 %25
+         %27 = OpSGreaterThan %bool %26 %int_0
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+         %32 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %34 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpConvertSToF %float %33
+         %41 = OpConvertSToF %float %35
+         %42 = OpConvertSToF %float %37
+         %43 = OpConvertSToF %float %39
+         %44 = OpCompositeConstruct %v4float %40 %41 %42 %43
+               OpStore %x_GLF_color %44
+               OpBranch %29
+         %31 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %47 %47 %47 %47
+               OpStore %x_GLF_color %48
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..24991ca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,37 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_22 : i32 = x_5.x_GLF_uniform_int_values[0];
+  if (((1 >> bitcast<u32>(x_22)) > 0)) {
+    let x_29 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_32 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_35 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_38 : i32 = x_5.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_29), f32(x_32), f32(x_35), f32(x_38));
+  } else {
+    let x_42 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_43 : f32 = f32(x_42);
+    x_GLF_color = vec4<f32>(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
new file mode 100644
index 0000000..24991ca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
@@ -0,0 +1,37 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_22 : i32 = x_5.x_GLF_uniform_int_values[0];
+  if (((1 >> bitcast<u32>(x_22)) > 0)) {
+    let x_29 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_32 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_35 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_38 : i32 = x_5.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_29), f32(x_32), f32(x_35), f32(x_38));
+  } else {
+    let x_42 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_43 : f32 = f32(x_42);
+    x_GLF_color = vec4<f32>(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..cc1c58a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,38 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_22 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
+  if (((1 >> asuint(x_22)) > 0)) {
+    const int x_29 = asint(x_5[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_32 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_35 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_38 = asint(x_5[1].x);
+    x_GLF_color = float4(float(x_29), float(x_32), float(x_35), float(x_38));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_42 = asint(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_43 = float(x_42);
+    x_GLF_color = float4(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1905aab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.msl
@@ -0,0 +1,44 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int const x_22 = x_5.x_GLF_uniform_int_values.arr[0].el;
+  if (((1 >> as_type<uint>(x_22)) > 0)) {
+    int const x_29 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    int const x_32 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    int const x_35 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    int const x_38 = x_5.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_29), float(x_32), float(x_35), float(x_38));
+  } else {
+    int const x_42 = x_5.x_GLF_uniform_int_values.arr[0].el;
+    float const x_43 = float(x_42);
+    *(tint_symbol_4) = float4(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..599a2ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,101 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %23 = OpLoad %int %22
+         %25 = OpBitcast %uint %23
+         %26 = OpShiftRightArithmetic %int %int_1 %25
+         %27 = OpSGreaterThan %bool %26 %int_0
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+         %32 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %33 = OpLoad %int %32
+         %34 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpConvertSToF %float %33
+         %41 = OpConvertSToF %float %35
+         %42 = OpConvertSToF %float %37
+         %43 = OpConvertSToF %float %39
+         %44 = OpCompositeConstruct %v4float %40 %41 %42 %43
+               OpStore %x_GLF_color %44
+               OpBranch %29
+         %31 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpConvertSToF %float %46
+         %48 = OpCompositeConstruct %v4float %47 %47 %47 %47
+               OpStore %x_GLF_color %48
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %x_GLF_color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..24991ca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,37 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_22 : i32 = x_5.x_GLF_uniform_int_values[0];
+  if (((1 >> bitcast<u32>(x_22)) > 0)) {
+    let x_29 : i32 = x_5.x_GLF_uniform_int_values[1];
+    let x_32 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_35 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_38 : i32 = x_5.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_29), f32(x_32), f32(x_35), f32(x_38));
+  } else {
+    let x_42 : i32 = x_5.x_GLF_uniform_int_values[0];
+    let x_43 : f32 = f32(x_42);
+    x_GLF_color = vec4<f32>(x_43, x_43, x_43, x_43);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm
new file mode 100644
index 0000000..3b55d3e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm
@@ -0,0 +1,63 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+  %float_709 = OpConstant %float 709
+    %float_1 = OpConstant %float 1
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %main = OpFunction %void None %8
+         %23 = OpLabel
+         %24 = OpExtInst %float %1 Cosh %float_709
+         %25 = OpExtInst %float %1 FSign %24
+         %26 = OpFOrdEqual %bool %25 %float_1
+         %27 = OpLogicalNot %bool %26
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+          %6 = OpLoad %int %30
+         %31 = OpIEqual %bool %6 %int_1
+               OpBranch %28
+         %28 = OpLabel
+         %32 = OpPhi %bool %26 %23 %31 %29
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..30526ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.hlsl
@@ -0,0 +1,36 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_31 = false;
+  bool x_32_phi = false;
+  const bool x_26 = (sign(cosh(709.0f)) == 1.0f);
+  x_32_phi = x_26;
+  if (!(x_26)) {
+    const int x_6 = asint(x_5[0].x);
+    x_31 = (x_6 == 1);
+    x_32_phi = x_31;
+  }
+  if (x_32_phi) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.msl
new file mode 100644
index 0000000..97f9005
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.msl
@@ -0,0 +1,40 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_31 = false;
+  bool x_32_phi = false;
+  bool const x_26 = (sign(cosh(709.0f)) == 1.0f);
+  x_32_phi = x_26;
+  if (!(x_26)) {
+    int const x_6 = x_5.one;
+    x_31 = (x_6 == 1);
+    x_32_phi = x_31;
+  }
+  bool const x_32 = x_32_phi;
+  if (x_32) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..abf3dc1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+         %22 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_31 "x_31"
+               OpName %x_32_phi "x_32_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+  %float_709 = OpConstant %float 709
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %43 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_31 = OpVariable %_ptr_Function_bool Function %19
+   %x_32_phi = OpVariable %_ptr_Function_bool Function %19
+         %23 = OpExtInst %float %22 Cosh %float_709
+         %21 = OpExtInst %float %22 FSign %23
+         %26 = OpFOrdEqual %bool %21 %float_1
+               OpStore %x_32_phi %26
+         %27 = OpLogicalNot %bool %26
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+         %33 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %34 = OpLoad %int %33
+         %36 = OpIEqual %bool %34 %int_1
+               OpStore %x_31 %36
+         %37 = OpLoad %bool %x_31
+               OpStore %x_32_phi %37
+               OpBranch %28
+         %28 = OpLabel
+         %38 = OpLoad %bool %x_32_phi
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %39
+         %41 = OpLabel
+               OpStore %x_GLF_color %44
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..b37e8cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.spvasm.expected.wgsl
@@ -0,0 +1,38 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_31 : bool;
+  var x_32_phi : bool;
+  let x_26 : bool = (sign(cosh(709.0)) == 1.0);
+  x_32_phi = x_26;
+  if (!(x_26)) {
+    let x_6 : i32 = x_5.one;
+    x_31 = (x_6 == 1);
+    x_32_phi = x_31;
+  }
+  let x_32 : bool = x_32_phi;
+  if (x_32) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
new file mode 100644
index 0000000..b37e8cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
@@ -0,0 +1,38 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_31 : bool;
+  var x_32_phi : bool;
+  let x_26 : bool = (sign(cosh(709.0)) == 1.0);
+  x_32_phi = x_26;
+  if (!(x_26)) {
+    let x_6 : i32 = x_5.one;
+    x_31 = (x_6 == 1);
+    x_32_phi = x_31;
+  }
+  let x_32 : bool = x_32_phi;
+  if (x_32) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..30526ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.hlsl
@@ -0,0 +1,36 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_31 = false;
+  bool x_32_phi = false;
+  const bool x_26 = (sign(cosh(709.0f)) == 1.0f);
+  x_32_phi = x_26;
+  if (!(x_26)) {
+    const int x_6 = asint(x_5[0].x);
+    x_31 = (x_6 == 1);
+    x_32_phi = x_31;
+  }
+  if (x_32_phi) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.msl
new file mode 100644
index 0000000..97f9005
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.msl
@@ -0,0 +1,40 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_31 = false;
+  bool x_32_phi = false;
+  bool const x_26 = (sign(cosh(709.0f)) == 1.0f);
+  x_32_phi = x_26;
+  if (!(x_26)) {
+    int const x_6 = x_5.one;
+    x_31 = (x_6 == 1);
+    x_32_phi = x_31;
+  }
+  bool const x_32 = x_32_phi;
+  if (x_32) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..abf3dc1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+         %22 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_31 "x_31"
+               OpName %x_32_phi "x_32_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+  %float_709 = OpConstant %float 709
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+         %43 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_31 = OpVariable %_ptr_Function_bool Function %19
+   %x_32_phi = OpVariable %_ptr_Function_bool Function %19
+         %23 = OpExtInst %float %22 Cosh %float_709
+         %21 = OpExtInst %float %22 FSign %23
+         %26 = OpFOrdEqual %bool %21 %float_1
+               OpStore %x_32_phi %26
+         %27 = OpLogicalNot %bool %26
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+         %33 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %34 = OpLoad %int %33
+         %36 = OpIEqual %bool %34 %int_1
+               OpStore %x_31 %36
+         %37 = OpLoad %bool %x_31
+               OpStore %x_32_phi %37
+               OpBranch %28
+         %28 = OpLabel
+         %38 = OpLoad %bool %x_32_phi
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpStore %x_GLF_color %43
+               OpBranch %39
+         %41 = OpLabel
+               OpStore %x_GLF_color %44
+               OpBranch %39
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..b37e8cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl.expected.wgsl
@@ -0,0 +1,38 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_31 : bool;
+  var x_32_phi : bool;
+  let x_26 : bool = (sign(cosh(709.0)) == 1.0);
+  x_32_phi = x_26;
+  if (!(x_26)) {
+    let x_6 : i32 = x_5.one;
+    x_31 = (x_6 == 1);
+    x_32_phi = x_31;
+  }
+  let x_32 : bool = x_32_phi;
+  if (x_32) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm
new file mode 100644
index 0000000..cd282a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm
@@ -0,0 +1,96 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+%float_n0x1_8p_128 = OpConstant %float -0x1.8p+128
+    %float_5 = OpConstant %float 5
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %29 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %30 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %31 = OpLoad %float %30
+               OpStore %f %31
+         %32 = OpLoad %float %f
+         %33 = OpFAdd %float %32 %float_n0x1_8p_128
+               OpStore %f %33
+         %34 = OpLoad %float %f
+         %35 = OpFDiv %float %float_5 %34
+         %36 = OpFOrdEqual %bool %35 %float_0
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+         %39 = OpLoad %float %f
+         %40 = OpFAdd %float %39 %float_1
+               OpStore %f %40
+               OpBranch %37
+         %37 = OpLabel
+         %41 = OpLoad %float %f
+         %42 = OpIsNan %bool %41
+         %43 = OpLogicalNot %bool %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+         %46 = OpLoad %float %f
+         %47 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %48 = OpLoad %float %47
+         %49 = OpFOrdNotEqual %bool %46 %48
+               OpBranch %44
+         %44 = OpLabel
+         %50 = OpPhi %bool %42 %37 %49 %45
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpStore %f %float_0
+               OpBranch %51
+         %51 = OpLabel
+         %53 = OpLoad %float %f
+         %54 = OpFOrdEqual %bool %53 %float_0
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %55
+         %57 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..25c78f5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,53 @@
+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 float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 0.0f;
+  bool x_49 = false;
+  bool x_50_phi = false;
+  const float x_31 = gl_FragCoord.x;
+  f = x_31;
+  f = (f + asfloat(0x7fc00000u));
+  if (((5.0f / f) == 0.0f)) {
+    f = (f + 1.0f);
+  }
+  const bool x_42 = isnan(f);
+  x_50_phi = x_42;
+  if (!(x_42)) {
+    const float x_46 = f;
+    const float x_48 = asfloat(x_7[0].x);
+    x_49 = (x_46 != x_48);
+    x_50_phi = x_49;
+  }
+  if (x_50_phi) {
+    f = 0.0f;
+  }
+  if ((f == 0.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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..b9e9449
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float f = 0.0f;
+  bool x_49 = false;
+  bool x_50_phi = false;
+  float const x_31 = (*(tint_symbol_5)).x;
+  f = x_31;
+  float const x_32 = f;
+  f = (x_32 + NAN);
+  float const x_34 = f;
+  if (((5.0f / x_34) == 0.0f)) {
+    float const x_39 = f;
+    f = (x_39 + 1.0f);
+  }
+  float const x_41 = f;
+  bool const x_42 = isnan(x_41);
+  x_50_phi = x_42;
+  if (!(x_42)) {
+    float const x_46 = f;
+    float const x_48 = x_7.zero;
+    x_49 = (x_46 != x_48);
+    x_50_phi = x_49;
+  }
+  bool const x_50 = x_50_phi;
+  if (x_50) {
+    f = 0.0f;
+  }
+  float const x_53 = f;
+  if ((x_53 == 0.0f)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d020f59
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %x_49 "x_49"
+               OpName %x_50_phi "x_50_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %24 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+%float_n0x1_8p_128 = OpConstant %float -0x1.8p+128
+    %float_5 = OpConstant %float 5
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+         %63 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %64 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %20
+       %x_49 = OpVariable %_ptr_Function_bool Function %24
+   %x_50_phi = OpVariable %_ptr_Function_bool Function %24
+         %29 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %30 = OpLoad %float %29
+               OpStore %f %30
+         %31 = OpLoad %float %f
+         %33 = OpFAdd %float %31 %float_n0x1_8p_128
+               OpStore %f %33
+         %34 = OpLoad %float %f
+         %36 = OpFDiv %float %float_5 %34
+         %38 = OpFOrdEqual %bool %36 %float_0
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %39
+         %40 = OpLabel
+         %41 = OpLoad %float %f
+         %43 = OpFAdd %float %41 %float_1
+               OpStore %f %43
+               OpBranch %39
+         %39 = OpLabel
+         %44 = OpLoad %float %f
+         %45 = OpIsNan %bool %44
+               OpStore %x_50_phi %45
+         %46 = OpLogicalNot %bool %45
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+         %49 = OpLoad %float %f
+         %51 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %52 = OpLoad %float %51
+         %53 = OpFOrdNotEqual %bool %49 %52
+               OpStore %x_49 %53
+         %54 = OpLoad %bool %x_49
+               OpStore %x_50_phi %54
+               OpBranch %47
+         %47 = OpLabel
+         %55 = OpLoad %bool %x_50_phi
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+               OpStore %f %float_0
+               OpBranch %56
+         %56 = OpLabel
+         %58 = OpLoad %float %f
+         %59 = OpFOrdEqual %bool %58 %float_0
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpStore %x_GLF_color %63
+               OpBranch %60
+         %62 = OpLabel
+               OpStore %x_GLF_color %64
+               OpBranch %60
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6638485
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_49 : bool;
+  var x_50_phi : bool;
+  let x_31 : f32 = gl_FragCoord.x;
+  f = x_31;
+  let x_32 : f32 = f;
+  f = (x_32 + -0x1.8p+128);
+  let x_34 : f32 = f;
+  if (((5.0 / x_34) == 0.0)) {
+    let x_39 : f32 = f;
+    f = (x_39 + 1.0);
+  }
+  let x_41 : f32 = f;
+  let x_42 : bool = isNan(x_41);
+  x_50_phi = x_42;
+  if (!(x_42)) {
+    let x_46 : f32 = f;
+    let x_48 : f32 = x_7.zero;
+    x_49 = (x_46 != x_48);
+    x_50_phi = x_49;
+  }
+  let x_50 : bool = x_50_phi;
+  if (x_50) {
+    f = 0.0;
+  }
+  let x_53 : f32 = f;
+  if ((x_53 == 0.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl
new file mode 100644
index 0000000..6638485
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var f : f32;
+  var x_49 : bool;
+  var x_50_phi : bool;
+  let x_31 : f32 = gl_FragCoord.x;
+  f = x_31;
+  let x_32 : f32 = f;
+  f = (x_32 + -0x1.8p+128);
+  let x_34 : f32 = f;
+  if (((5.0 / x_34) == 0.0)) {
+    let x_39 : f32 = f;
+    f = (x_39 + 1.0);
+  }
+  let x_41 : f32 = f;
+  let x_42 : bool = isNan(x_41);
+  x_50_phi = x_42;
+  if (!(x_42)) {
+    let x_46 : f32 = f;
+    let x_48 : f32 = x_7.zero;
+    x_49 = (x_46 != x_48);
+    x_50_phi = x_49;
+  }
+  let x_50 : bool = x_50_phi;
+  if (x_50) {
+    f = 0.0;
+  }
+  let x_53 : f32 = f;
+  if ((x_53 == 0.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..20e17e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl:19:19 error: expected ')'
+  f = (x_32 + -0x1.8p+128);
+                  ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..20e17e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.msl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl:19:19 error: expected ')'
+  f = (x_32 + -0x1.8p+128);
+                  ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..20e17e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl:19:19 error: expected ')'
+  f = (x_32 + -0x1.8p+128);
+                  ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..20e17e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl:19:19 error: expected ')'
+  f = (x_32 + -0x1.8p+128);
+                  ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm
new file mode 100644
index 0000000..a89702b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm
@@ -0,0 +1,158 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f1_vf2_ "f1(vf2;"
+               OpName %v1 "v1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %m1 "m1"
+               OpName %m2 "m2"
+               OpName %v1_0 "v1"
+               OpName %a "a"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %int = OpTypeInt 32 1
+         %23 = OpTypeFunction %int %_ptr_Function_v2float
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_int = OpTypePointer Function %int
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %18
+         %43 = OpLabel
+         %m1 = OpVariable %_ptr_Function_mat2v2float Function
+         %m2 = OpVariable %_ptr_Function_mat2v2float Function
+       %v1_0 = OpVariable %_ptr_Function_v2float Function
+          %a = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_v2float Function
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %45 = OpLoad %float %44
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %47 = OpLoad %float %46
+         %48 = OpFNegate %float %47
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %52 = OpLoad %float %51
+         %53 = OpExtInst %float %1 Sin %52
+         %54 = OpCompositeConstruct %v2float %45 %48
+         %55 = OpCompositeConstruct %v2float %50 %53
+         %56 = OpCompositeConstruct %mat2v2float %54 %55
+               OpStore %m1 %56
+         %57 = OpLoad %mat2v2float %m1
+         %58 = OpLoad %mat2v2float %m1
+         %59 = OpMatrixTimesMatrix %mat2v2float %57 %58
+               OpStore %m2 %59
+         %60 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpCompositeConstruct %v2float %61 %61
+         %63 = OpLoad %mat2v2float %m2
+         %64 = OpVectorTimesMatrix %v2float %62 %63
+               OpStore %v1_0 %64
+         %65 = OpLoad %v2float %v1_0
+               OpStore %param %65
+         %66 = OpFunctionCall %int %f1_vf2_ %param
+               OpStore %a %66
+         %67 = OpLoad %int %a
+         %68 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpIEqual %bool %67 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %81 = OpLoad %float %80
+         %82 = OpCompositeConstruct %v4float %75 %77 %79 %81
+               OpStore %_GLF_color %82
+               OpBranch %71
+         %73 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpCompositeConstruct %v4float %85 %85 %85 %85
+               OpStore %_GLF_color %86
+               OpBranch %71
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+    %f1_vf2_ = OpFunction %int None %23
+         %v1 = OpFunctionParameter %_ptr_Function_v2float
+         %87 = OpLabel
+         %88 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %91 = OpLoad %float %90
+         %92 = OpFOrdEqual %bool %89 %91
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+         %95 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %98 = OpLoad %float %97
+         %99 = OpFOrdEqual %bool %96 %98
+               OpBranch %93
+         %93 = OpLabel
+        %100 = OpPhi %bool %92 %87 %99 %94
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %104 = OpLoad %int %103
+               OpReturnValue %104
+        %101 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %106 = OpLoad %int %105
+               OpReturnValue %106
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..96a4bf3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,81 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int f1_vf2_(inout float2 v1) {
+  bool x_99 = false;
+  bool x_100_phi = false;
+  const float x_89 = v1.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_91 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const bool x_92 = (x_89 == x_91);
+  x_100_phi = x_92;
+  if (x_92) {
+    const float x_96 = v1.y;
+    const float x_98 = asfloat(x_7[1].x);
+    x_99 = (x_96 == x_98);
+    x_100_phi = x_99;
+  }
+  if (x_100_phi) {
+    const int x_104 = asint(x_9[1].x);
+    return x_104;
+  }
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_106 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  return x_106;
+}
+
+void main_1() {
+  float2x2 m1 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 m2 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2 v1_1 = float2(0.0f, 0.0f);
+  int a = 0;
+  float2 param = float2(0.0f, 0.0f);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_47 = asfloat(x_7[1].x);
+  const float x_50 = asfloat(x_7[1].x);
+  const float x_52 = asfloat(x_7[1].x);
+  m1 = float2x2(float2(x_45, -(x_47)), float2(x_50, sin(x_52)));
+  m2 = mul(m1, m1);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_61 = asfloat(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  v1_1 = mul(m2, float2(x_61, x_61));
+  param = v1_1;
+  const int x_66 = f1_vf2_(param);
+  a = x_66;
+  const int x_67 = a;
+  const int x_69 = asint(x_9[1].x);
+  if ((x_67 == x_69)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_75 = asfloat(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_77 = asfloat(x_7[1].x);
+    const float x_79 = asfloat(x_7[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_81 = asfloat(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(x_75, x_77, x_79, x_81);
+  } else {
+    const int x_84 = asint(x_9[1].x);
+    const float x_85 = float(x_84);
+    x_GLF_color = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..47967f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.msl
@@ -0,0 +1,97 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int f1_vf2_(constant buf0& x_7, constant buf1& x_9, thread float2* const v1) {
+  bool x_99 = false;
+  bool x_100_phi = false;
+  float const x_89 = (*(v1)).x;
+  float const x_91 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_92 = (x_89 == x_91);
+  x_100_phi = x_92;
+  if (x_92) {
+    float const x_96 = (*(v1)).y;
+    float const x_98 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    x_99 = (x_96 == x_98);
+    x_100_phi = x_99;
+  }
+  bool const x_100 = x_100_phi;
+  if (x_100) {
+    int const x_104 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    return x_104;
+  }
+  int const x_106 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  return x_106;
+}
+
+void main_1(constant buf0& x_7, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float2x2 m1 = float2x2(0.0f);
+  float2x2 m2 = float2x2(0.0f);
+  float2 v1_1 = 0.0f;
+  int a = 0;
+  float2 param = 0.0f;
+  float const x_45 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_47 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_50 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_52 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  m1 = float2x2(float2(x_45, -(x_47)), float2(x_50, sin(x_52)));
+  float2x2 const x_57 = m1;
+  float2x2 const x_58 = m1;
+  m2 = (x_57 * x_58);
+  float const x_61 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float2x2 const x_63 = m2;
+  v1_1 = (float2(x_61, x_61) * x_63);
+  float2 const x_65 = v1_1;
+  param = x_65;
+  int const x_66 = f1_vf2_(x_7, x_9, &(param));
+  a = x_66;
+  int const x_67 = a;
+  int const x_69 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_67 == x_69)) {
+    float const x_75 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_77 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    float const x_79 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    float const x_81 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_75, x_77, x_79, x_81);
+  } else {
+    int const x_84 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_85 = float(x_84);
+    *(tint_symbol_4) = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f217e59
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,202 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+         %85 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %f1_vf2_ "f1_vf2_"
+               OpName %v1 "v1"
+               OpName %x_99 "x_99"
+               OpName %x_100_phi "x_100_phi"
+               OpName %main_1 "main_1"
+               OpName %m1 "m1"
+               OpName %m2 "m2"
+               OpName %v1_1 "v1_1"
+               OpName %a "a"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %19 = OpTypeFunction %int %_ptr_Function_v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %28 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %void = OpTypeVoid
+         %59 = OpTypeFunction %void
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %66 = OpConstantNull %mat2v2float
+         %69 = OpConstantNull %v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %72 = OpConstantNull %int
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+    %f1_vf2_ = OpFunction %int None %19
+         %v1 = OpFunctionParameter %_ptr_Function_v2float
+         %24 = OpLabel
+       %x_99 = OpVariable %_ptr_Function_bool Function %28
+  %x_100_phi = OpVariable %_ptr_Function_bool Function %28
+         %33 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+         %34 = OpLoad %float %33
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdEqual %bool %34 %38
+               OpStore %x_100_phi %39
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %44 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %45 = OpLoad %float %44
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %49 = OpFOrdEqual %bool %45 %48
+               OpStore %x_99 %49
+         %50 = OpLoad %bool %x_99
+               OpStore %x_100_phi %50
+               OpBranch %40
+         %40 = OpLabel
+         %51 = OpLoad %bool %x_100_phi
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %56 = OpLoad %int %55
+               OpReturnValue %56
+         %52 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %58 = OpLoad %int %57
+               OpReturnValue %58
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %59
+         %62 = OpLabel
+         %m1 = OpVariable %_ptr_Function_mat2v2float Function %66
+         %m2 = OpVariable %_ptr_Function_mat2v2float Function %66
+       %v1_1 = OpVariable %_ptr_Function_v2float Function %69
+          %a = OpVariable %_ptr_Function_int Function %72
+      %param = OpVariable %_ptr_Function_v2float Function %69
+         %74 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %81 = OpLoad %float %80
+         %82 = OpFNegate %float %77
+         %83 = OpCompositeConstruct %v2float %75 %82
+         %84 = OpExtInst %float %85 Sin %81
+         %86 = OpCompositeConstruct %v2float %79 %84
+         %87 = OpCompositeConstruct %mat2v2float %83 %86
+               OpStore %m1 %87
+         %88 = OpLoad %mat2v2float %m1
+         %89 = OpLoad %mat2v2float %m1
+         %90 = OpMatrixTimesMatrix %mat2v2float %88 %89
+               OpStore %m2 %90
+         %91 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %92 = OpLoad %float %91
+         %93 = OpLoad %mat2v2float %m2
+         %94 = OpCompositeConstruct %v2float %92 %92
+         %95 = OpVectorTimesMatrix %v2float %94 %93
+               OpStore %v1_1 %95
+         %96 = OpLoad %v2float %v1_1
+               OpStore %param %96
+         %97 = OpFunctionCall %int %f1_vf2_ %param
+               OpStore %a %97
+         %99 = OpLoad %int %a
+        %100 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %101 = OpLoad %int %100
+        %102 = OpIEqual %bool %99 %101
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+        %107 = OpLoad %float %106
+        %108 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %109 = OpLoad %float %108
+        %110 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %111 = OpLoad %float %110
+        %112 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+        %113 = OpLoad %float %112
+        %114 = OpCompositeConstruct %v4float %107 %109 %111 %113
+               OpStore %x_GLF_color %114
+               OpBranch %103
+        %105 = OpLabel
+        %115 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %117 %117 %117 %117
+               OpStore %x_GLF_color %118
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %59
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c0a7f76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,89 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f1_vf2_(v1 : ptr<function, vec2<f32>>) -> i32 {
+  var x_99 : bool;
+  var x_100_phi : bool;
+  let x_89 : f32 = (*(v1)).x;
+  let x_91 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_92 : bool = (x_89 == x_91);
+  x_100_phi = x_92;
+  if (x_92) {
+    let x_96 : f32 = (*(v1)).y;
+    let x_98 : f32 = x_7.x_GLF_uniform_float_values[1];
+    x_99 = (x_96 == x_98);
+    x_100_phi = x_99;
+  }
+  let x_100 : bool = x_100_phi;
+  if (x_100) {
+    let x_104 : i32 = x_9.x_GLF_uniform_int_values[1];
+    return x_104;
+  }
+  let x_106 : i32 = x_9.x_GLF_uniform_int_values[0];
+  return x_106;
+}
+
+fn main_1() {
+  var m1 : mat2x2<f32>;
+  var m2 : mat2x2<f32>;
+  var v1_1 : vec2<f32>;
+  var a : i32;
+  var param : vec2<f32>;
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_50 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_52 : f32 = x_7.x_GLF_uniform_float_values[1];
+  m1 = mat2x2<f32>(vec2<f32>(x_45, -(x_47)), vec2<f32>(x_50, sin(x_52)));
+  let x_57 : mat2x2<f32> = m1;
+  let x_58 : mat2x2<f32> = m1;
+  m2 = (x_57 * x_58);
+  let x_61 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_63 : mat2x2<f32> = m2;
+  v1_1 = (vec2<f32>(x_61, x_61) * x_63);
+  let x_65 : vec2<f32> = v1_1;
+  param = x_65;
+  let x_66 : i32 = f1_vf2_(&(param));
+  a = x_66;
+  let x_67 : i32 = a;
+  let x_69 : i32 = x_9.x_GLF_uniform_int_values[1];
+  if ((x_67 == x_69)) {
+    let x_75 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_77 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_79 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_81 : f32 = x_7.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_75, x_77, x_79, x_81);
+  } else {
+    let x_84 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
new file mode 100644
index 0000000..c0a7f76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
@@ -0,0 +1,89 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f1_vf2_(v1 : ptr<function, vec2<f32>>) -> i32 {
+  var x_99 : bool;
+  var x_100_phi : bool;
+  let x_89 : f32 = (*(v1)).x;
+  let x_91 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_92 : bool = (x_89 == x_91);
+  x_100_phi = x_92;
+  if (x_92) {
+    let x_96 : f32 = (*(v1)).y;
+    let x_98 : f32 = x_7.x_GLF_uniform_float_values[1];
+    x_99 = (x_96 == x_98);
+    x_100_phi = x_99;
+  }
+  let x_100 : bool = x_100_phi;
+  if (x_100) {
+    let x_104 : i32 = x_9.x_GLF_uniform_int_values[1];
+    return x_104;
+  }
+  let x_106 : i32 = x_9.x_GLF_uniform_int_values[0];
+  return x_106;
+}
+
+fn main_1() {
+  var m1 : mat2x2<f32>;
+  var m2 : mat2x2<f32>;
+  var v1_1 : vec2<f32>;
+  var a : i32;
+  var param : vec2<f32>;
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_50 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_52 : f32 = x_7.x_GLF_uniform_float_values[1];
+  m1 = mat2x2<f32>(vec2<f32>(x_45, -(x_47)), vec2<f32>(x_50, sin(x_52)));
+  let x_57 : mat2x2<f32> = m1;
+  let x_58 : mat2x2<f32> = m1;
+  m2 = (x_57 * x_58);
+  let x_61 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_63 : mat2x2<f32> = m2;
+  v1_1 = (vec2<f32>(x_61, x_61) * x_63);
+  let x_65 : vec2<f32> = v1_1;
+  param = x_65;
+  let x_66 : i32 = f1_vf2_(&(param));
+  a = x_66;
+  let x_67 : i32 = a;
+  let x_69 : i32 = x_9.x_GLF_uniform_int_values[1];
+  if ((x_67 == x_69)) {
+    let x_75 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_77 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_79 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_81 : f32 = x_7.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_75, x_77, x_79, x_81);
+  } else {
+    let x_84 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..96a4bf3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,81 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int f1_vf2_(inout float2 v1) {
+  bool x_99 = false;
+  bool x_100_phi = false;
+  const float x_89 = v1.x;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_91 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const bool x_92 = (x_89 == x_91);
+  x_100_phi = x_92;
+  if (x_92) {
+    const float x_96 = v1.y;
+    const float x_98 = asfloat(x_7[1].x);
+    x_99 = (x_96 == x_98);
+    x_100_phi = x_99;
+  }
+  if (x_100_phi) {
+    const int x_104 = asint(x_9[1].x);
+    return x_104;
+  }
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_106 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  return x_106;
+}
+
+void main_1() {
+  float2x2 m1 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 m2 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2 v1_1 = float2(0.0f, 0.0f);
+  int a = 0;
+  float2 param = float2(0.0f, 0.0f);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_45 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_47 = asfloat(x_7[1].x);
+  const float x_50 = asfloat(x_7[1].x);
+  const float x_52 = asfloat(x_7[1].x);
+  m1 = float2x2(float2(x_45, -(x_47)), float2(x_50, sin(x_52)));
+  m2 = mul(m1, m1);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_61 = asfloat(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  v1_1 = mul(m2, float2(x_61, x_61));
+  param = v1_1;
+  const int x_66 = f1_vf2_(param);
+  a = x_66;
+  const int x_67 = a;
+  const int x_69 = asint(x_9[1].x);
+  if ((x_67 == x_69)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const float x_75 = asfloat(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const float x_77 = asfloat(x_7[1].x);
+    const float x_79 = asfloat(x_7[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_81 = asfloat(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(x_75, x_77, x_79, x_81);
+  } else {
+    const int x_84 = asint(x_9[1].x);
+    const float x_85 = float(x_84);
+    x_GLF_color = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..47967f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.msl
@@ -0,0 +1,97 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int f1_vf2_(constant buf0& x_7, constant buf1& x_9, thread float2* const v1) {
+  bool x_99 = false;
+  bool x_100_phi = false;
+  float const x_89 = (*(v1)).x;
+  float const x_91 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_92 = (x_89 == x_91);
+  x_100_phi = x_92;
+  if (x_92) {
+    float const x_96 = (*(v1)).y;
+    float const x_98 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    x_99 = (x_96 == x_98);
+    x_100_phi = x_99;
+  }
+  bool const x_100 = x_100_phi;
+  if (x_100) {
+    int const x_104 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    return x_104;
+  }
+  int const x_106 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  return x_106;
+}
+
+void main_1(constant buf0& x_7, constant buf1& x_9, thread float4* const tint_symbol_4) {
+  float2x2 m1 = float2x2(0.0f);
+  float2x2 m2 = float2x2(0.0f);
+  float2 v1_1 = 0.0f;
+  int a = 0;
+  float2 param = 0.0f;
+  float const x_45 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_47 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_50 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  float const x_52 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  m1 = float2x2(float2(x_45, -(x_47)), float2(x_50, sin(x_52)));
+  float2x2 const x_57 = m1;
+  float2x2 const x_58 = m1;
+  m2 = (x_57 * x_58);
+  float const x_61 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float2x2 const x_63 = m2;
+  v1_1 = (float2(x_61, x_61) * x_63);
+  float2 const x_65 = v1_1;
+  param = x_65;
+  int const x_66 = f1_vf2_(x_7, x_9, &(param));
+  a = x_66;
+  int const x_67 = a;
+  int const x_69 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_67 == x_69)) {
+    float const x_75 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    float const x_77 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    float const x_79 = x_7.x_GLF_uniform_float_values.arr[1].el;
+    float const x_81 = x_7.x_GLF_uniform_float_values.arr[0].el;
+    *(tint_symbol_4) = float4(x_75, x_77, x_79, x_81);
+  } else {
+    int const x_84 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_85 = float(x_84);
+    *(tint_symbol_4) = float4(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f217e59
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,202 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+         %85 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %f1_vf2_ "f1_vf2_"
+               OpName %v1 "v1"
+               OpName %x_99 "x_99"
+               OpName %x_100_phi "x_100_phi"
+               OpName %main_1 "main_1"
+               OpName %m1 "m1"
+               OpName %m2 "m2"
+               OpName %v1_1 "v1_1"
+               OpName %a "a"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf0 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %19 = OpTypeFunction %int %_ptr_Function_v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %28 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %void = OpTypeVoid
+         %59 = OpTypeFunction %void
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %66 = OpConstantNull %mat2v2float
+         %69 = OpConstantNull %v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %72 = OpConstantNull %int
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+    %f1_vf2_ = OpFunction %int None %19
+         %v1 = OpFunctionParameter %_ptr_Function_v2float
+         %24 = OpLabel
+       %x_99 = OpVariable %_ptr_Function_bool Function %28
+  %x_100_phi = OpVariable %_ptr_Function_bool Function %28
+         %33 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+         %34 = OpLoad %float %33
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdEqual %bool %34 %38
+               OpStore %x_100_phi %39
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %44 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %45 = OpLoad %float %44
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %48 = OpLoad %float %47
+         %49 = OpFOrdEqual %bool %45 %48
+               OpStore %x_99 %49
+         %50 = OpLoad %bool %x_99
+               OpStore %x_100_phi %50
+               OpBranch %40
+         %40 = OpLabel
+         %51 = OpLoad %bool %x_100_phi
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %56 = OpLoad %int %55
+               OpReturnValue %56
+         %52 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %58 = OpLoad %int %57
+               OpReturnValue %58
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %59
+         %62 = OpLabel
+         %m1 = OpVariable %_ptr_Function_mat2v2float Function %66
+         %m2 = OpVariable %_ptr_Function_mat2v2float Function %66
+       %v1_1 = OpVariable %_ptr_Function_v2float Function %69
+          %a = OpVariable %_ptr_Function_int Function %72
+      %param = OpVariable %_ptr_Function_v2float Function %69
+         %74 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %81 = OpLoad %float %80
+         %82 = OpFNegate %float %77
+         %83 = OpCompositeConstruct %v2float %75 %82
+         %84 = OpExtInst %float %85 Sin %81
+         %86 = OpCompositeConstruct %v2float %79 %84
+         %87 = OpCompositeConstruct %mat2v2float %83 %86
+               OpStore %m1 %87
+         %88 = OpLoad %mat2v2float %m1
+         %89 = OpLoad %mat2v2float %m1
+         %90 = OpMatrixTimesMatrix %mat2v2float %88 %89
+               OpStore %m2 %90
+         %91 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %92 = OpLoad %float %91
+         %93 = OpLoad %mat2v2float %m2
+         %94 = OpCompositeConstruct %v2float %92 %92
+         %95 = OpVectorTimesMatrix %v2float %94 %93
+               OpStore %v1_1 %95
+         %96 = OpLoad %v2float %v1_1
+               OpStore %param %96
+         %97 = OpFunctionCall %int %f1_vf2_ %param
+               OpStore %a %97
+         %99 = OpLoad %int %a
+        %100 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %101 = OpLoad %int %100
+        %102 = OpIEqual %bool %99 %101
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+        %107 = OpLoad %float %106
+        %108 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %109 = OpLoad %float %108
+        %110 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+        %111 = OpLoad %float %110
+        %112 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+        %113 = OpLoad %float %112
+        %114 = OpCompositeConstruct %v4float %107 %109 %111 %113
+               OpStore %x_GLF_color %114
+               OpBranch %103
+        %105 = OpLabel
+        %115 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %117 %117 %117 %117
+               OpStore %x_GLF_color %118
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %59
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c0a7f76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,89 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f1_vf2_(v1 : ptr<function, vec2<f32>>) -> i32 {
+  var x_99 : bool;
+  var x_100_phi : bool;
+  let x_89 : f32 = (*(v1)).x;
+  let x_91 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_92 : bool = (x_89 == x_91);
+  x_100_phi = x_92;
+  if (x_92) {
+    let x_96 : f32 = (*(v1)).y;
+    let x_98 : f32 = x_7.x_GLF_uniform_float_values[1];
+    x_99 = (x_96 == x_98);
+    x_100_phi = x_99;
+  }
+  let x_100 : bool = x_100_phi;
+  if (x_100) {
+    let x_104 : i32 = x_9.x_GLF_uniform_int_values[1];
+    return x_104;
+  }
+  let x_106 : i32 = x_9.x_GLF_uniform_int_values[0];
+  return x_106;
+}
+
+fn main_1() {
+  var m1 : mat2x2<f32>;
+  var m2 : mat2x2<f32>;
+  var v1_1 : vec2<f32>;
+  var a : i32;
+  var param : vec2<f32>;
+  let x_45 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_47 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_50 : f32 = x_7.x_GLF_uniform_float_values[1];
+  let x_52 : f32 = x_7.x_GLF_uniform_float_values[1];
+  m1 = mat2x2<f32>(vec2<f32>(x_45, -(x_47)), vec2<f32>(x_50, sin(x_52)));
+  let x_57 : mat2x2<f32> = m1;
+  let x_58 : mat2x2<f32> = m1;
+  m2 = (x_57 * x_58);
+  let x_61 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_63 : mat2x2<f32> = m2;
+  v1_1 = (vec2<f32>(x_61, x_61) * x_63);
+  let x_65 : vec2<f32> = v1_1;
+  param = x_65;
+  let x_66 : i32 = f1_vf2_(&(param));
+  a = x_66;
+  let x_67 : i32 = a;
+  let x_69 : i32 = x_9.x_GLF_uniform_int_values[1];
+  if ((x_67 == x_69)) {
+    let x_75 : f32 = x_7.x_GLF_uniform_float_values[0];
+    let x_77 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_79 : f32 = x_7.x_GLF_uniform_float_values[1];
+    let x_81 : f32 = x_7.x_GLF_uniform_float_values[0];
+    x_GLF_color = vec4<f32>(x_75, x_77, x_79, x_81);
+  } else {
+    let x_84 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_85 : f32 = f32(x_84);
+    x_GLF_color = vec4<f32>(x_85, x_85, x_85, x_85);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm
new file mode 100644
index 0000000..a0e6aa1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm
@@ -0,0 +1,116 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %g "g"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %g RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %a RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %g = OpVariable %_ptr_Private_int Private
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_1 = OpConstant %uint 1
+      %int_2 = OpConstant %int 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %18
+         %40 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+               OpStore %g %int_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+          %8 = OpLoad %int %g
+         %45 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %46 = OpLoad %float %45
+         %47 = OpFAdd %float %46 %float_2
+         %48 = OpConvertFToS %int %47
+         %49 = OpSLessThan %bool %8 %48
+               OpBranchConditional %49 %50 %42
+         %50 = OpLabel
+          %9 = OpLoad %int %g
+         %10 = OpIAdd %int %9 %int_1
+               OpStore %g %10
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+         %11 = OpLoad %int %g
+               OpStore %a %11
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+         %12 = OpLoad %int %g
+         %55 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %56 = OpLoad %float %55
+         %57 = OpConvertFToS %int %56
+         %58 = OpSLessThan %bool %12 %57
+               OpBranchConditional %58 %59 %52
+         %59 = OpLabel
+         %13 = OpLoad %int %g
+         %14 = OpIAdd %int %13 %int_1
+               OpStore %g %14
+               OpBranch %53
+         %53 = OpLabel
+               OpBranch %51
+         %52 = OpLabel
+         %15 = OpLoad %int %a
+               OpStore %a %15
+         %16 = OpLoad %int %a
+         %60 = OpIEqual %bool %16 %int_2
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpStore %_GLF_color %38
+               OpBranch %61
+         %63 = OpLabel
+               OpStore %_GLF_color %39
+               OpBranch %61
+         %61 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ca61b52
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,50 @@
+static int g = 0;
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  g = 0;
+  while (true) {
+    const int x_8 = g;
+    const float x_46 = asfloat(x_6[0].x);
+    if ((x_8 < int((x_46 + 2.0f)))) {
+    } else {
+      break;
+    }
+    g = (g + 1);
+  }
+  a = g;
+  while (true) {
+    const int x_12 = g;
+    const float x_56 = asfloat(x_6[0].y);
+    if ((x_12 < int(x_56))) {
+    } else {
+      break;
+    }
+    g = (g + 1);
+  }
+  a = a;
+  if ((a == 2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..0bb4833
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  int a = 0;
+  *(tint_symbol_4) = 0;
+  while (true) {
+    int const x_8 = *(tint_symbol_4);
+    float const x_46 = x_6.injectionSwitch.x;
+    if ((x_8 < int((x_46 + 2.0f)))) {
+    } else {
+      break;
+    }
+    int const x_9 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_9 + 1);
+  }
+  int const x_11 = *(tint_symbol_4);
+  a = x_11;
+  while (true) {
+    int const x_12 = *(tint_symbol_4);
+    float const x_56 = x_6.injectionSwitch.y;
+    if ((x_12 < int(x_56))) {
+    } else {
+      break;
+    }
+    int const x_13 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_13 + 1);
+  }
+  int const x_15 = a;
+  a = x_15;
+  int const x_16 = a;
+  if ((x_16 == 2)) {
+    *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e43ed3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 83
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %g "g"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+          %g = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %69 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %70 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %71 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %16
+         %19 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %4
+               OpStore %g %int_0
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %g
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %32 = OpLoad %float %31
+         %35 = OpFAdd %float %32 %float_2
+         %33 = OpConvertFToS %int %35
+         %36 = OpSLessThan %bool %27 %33
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpBranch %38
+         %40 = OpLabel
+               OpBranch %24
+         %38 = OpLabel
+         %41 = OpLoad %int %g
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %g %43
+               OpBranch %25
+         %25 = OpLabel
+               OpBranch %23
+         %24 = OpLabel
+         %44 = OpLoad %int %g
+               OpStore %a %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %g
+         %51 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpConvertFToS %int %52
+         %54 = OpSLessThan %bool %49 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %46
+         %55 = OpLabel
+         %58 = OpLoad %int %g
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %g %59
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %45
+         %46 = OpLabel
+         %60 = OpLoad %int %a
+               OpStore %a %60
+         %61 = OpLoad %int %a
+         %63 = OpIEqual %bool %61 %int_2
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpStore %x_GLF_color %69
+               OpBranch %64
+         %66 = OpLabel
+               OpStore %x_GLF_color %70
+               OpBranch %64
+         %64 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %71
+%tint_symbol = OpFunctionParameter %main_out
+         %75 = OpLabel
+         %76 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %76
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %16
+         %78 = OpLabel
+         %79 = OpFunctionCall %void %main_1
+         %81 = OpLoad %v4float %x_GLF_color
+         %82 = OpCompositeConstruct %main_out %81
+         %80 = OpFunctionCall %void %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8a01eaa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> g : i32;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  g = 0;
+  loop {
+    let x_8 : i32 = g;
+    let x_46 : f32 = x_6.injectionSwitch.x;
+    if ((x_8 < i32((x_46 + 2.0)))) {
+    } else {
+      break;
+    }
+    let x_9 : i32 = g;
+    g = (x_9 + 1);
+  }
+  let x_11 : i32 = g;
+  a = x_11;
+  loop {
+    let x_12 : i32 = g;
+    let x_56 : f32 = x_6.injectionSwitch.y;
+    if ((x_12 < i32(x_56))) {
+    } else {
+      break;
+    }
+    let x_13 : i32 = g;
+    g = (x_13 + 1);
+  }
+  let x_15 : i32 = a;
+  a = x_15;
+  let x_16 : i32 = a;
+  if ((x_16 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
new file mode 100644
index 0000000..8a01eaa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> g : i32;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  g = 0;
+  loop {
+    let x_8 : i32 = g;
+    let x_46 : f32 = x_6.injectionSwitch.x;
+    if ((x_8 < i32((x_46 + 2.0)))) {
+    } else {
+      break;
+    }
+    let x_9 : i32 = g;
+    g = (x_9 + 1);
+  }
+  let x_11 : i32 = g;
+  a = x_11;
+  loop {
+    let x_12 : i32 = g;
+    let x_56 : f32 = x_6.injectionSwitch.y;
+    if ((x_12 < i32(x_56))) {
+    } else {
+      break;
+    }
+    let x_13 : i32 = g;
+    g = (x_13 + 1);
+  }
+  let x_15 : i32 = a;
+  a = x_15;
+  let x_16 : i32 = a;
+  if ((x_16 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ca61b52
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,50 @@
+static int g = 0;
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  g = 0;
+  while (true) {
+    const int x_8 = g;
+    const float x_46 = asfloat(x_6[0].x);
+    if ((x_8 < int((x_46 + 2.0f)))) {
+    } else {
+      break;
+    }
+    g = (g + 1);
+  }
+  a = g;
+  while (true) {
+    const int x_12 = g;
+    const float x_56 = asfloat(x_6[0].y);
+    if ((x_12 < int(x_56))) {
+    } else {
+      break;
+    }
+    g = (g + 1);
+  }
+  a = a;
+  if ((a == 2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..0bb4833
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread int* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  int a = 0;
+  *(tint_symbol_4) = 0;
+  while (true) {
+    int const x_8 = *(tint_symbol_4);
+    float const x_46 = x_6.injectionSwitch.x;
+    if ((x_8 < int((x_46 + 2.0f)))) {
+    } else {
+      break;
+    }
+    int const x_9 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_9 + 1);
+  }
+  int const x_11 = *(tint_symbol_4);
+  a = x_11;
+  while (true) {
+    int const x_12 = *(tint_symbol_4);
+    float const x_56 = x_6.injectionSwitch.y;
+    if ((x_12 < int(x_56))) {
+    } else {
+      break;
+    }
+    int const x_13 = *(tint_symbol_4);
+    *(tint_symbol_4) = (x_13 + 1);
+  }
+  int const x_15 = a;
+  a = x_15;
+  int const x_16 = a;
+  if ((x_16 == 2)) {
+    *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread int tint_symbol_6 = 0;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_6, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e43ed3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 83
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %g "g"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %4 = OpConstantNull %int
+          %g = OpVariable %_ptr_Private_int Private %4
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %69 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %70 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %71 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %16
+         %19 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %4
+               OpStore %g %int_0
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %g
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %32 = OpLoad %float %31
+         %35 = OpFAdd %float %32 %float_2
+         %33 = OpConvertFToS %int %35
+         %36 = OpSLessThan %bool %27 %33
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpBranch %38
+         %40 = OpLabel
+               OpBranch %24
+         %38 = OpLabel
+         %41 = OpLoad %int %g
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %g %43
+               OpBranch %25
+         %25 = OpLabel
+               OpBranch %23
+         %24 = OpLabel
+         %44 = OpLoad %int %g
+               OpStore %a %44
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpLoad %int %g
+         %51 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpConvertFToS %int %52
+         %54 = OpSLessThan %bool %49 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %46
+         %55 = OpLabel
+         %58 = OpLoad %int %g
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %g %59
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %45
+         %46 = OpLabel
+         %60 = OpLoad %int %a
+               OpStore %a %60
+         %61 = OpLoad %int %a
+         %63 = OpIEqual %bool %61 %int_2
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %66
+         %65 = OpLabel
+               OpStore %x_GLF_color %69
+               OpBranch %64
+         %66 = OpLabel
+               OpStore %x_GLF_color %70
+               OpBranch %64
+         %64 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %71
+%tint_symbol = OpFunctionParameter %main_out
+         %75 = OpLabel
+         %76 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %76
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %16
+         %78 = OpLabel
+         %79 = OpFunctionCall %void %main_1
+         %81 = OpLoad %v4float %x_GLF_color
+         %82 = OpCompositeConstruct %main_out %81
+         %80 = OpFunctionCall %void %tint_symbol_2 %82
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8a01eaa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> g : i32;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  g = 0;
+  loop {
+    let x_8 : i32 = g;
+    let x_46 : f32 = x_6.injectionSwitch.x;
+    if ((x_8 < i32((x_46 + 2.0)))) {
+    } else {
+      break;
+    }
+    let x_9 : i32 = g;
+    g = (x_9 + 1);
+  }
+  let x_11 : i32 = g;
+  a = x_11;
+  loop {
+    let x_12 : i32 = g;
+    let x_56 : f32 = x_6.injectionSwitch.y;
+    if ((x_12 < i32(x_56))) {
+    } else {
+      break;
+    }
+    let x_13 : i32 = g;
+    g = (x_13 + 1);
+  }
+  let x_15 : i32 = a;
+  a = x_15;
+  let x_16 : i32 = a;
+  if ((x_16 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm
new file mode 100644
index 0000000..84447e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm
@@ -0,0 +1,129 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v1 "v1"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %v2 "v2"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %v3 "v3"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+  %int_n3000 = OpConstant %int -3000
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %14
+         %39 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function
+         %v2 = OpVariable %_ptr_Function_v2int Function
+         %v3 = OpVariable %_ptr_Function_v2float Function
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %43 = OpLoad %float %42
+         %44 = OpCompositeConstruct %v2float %41 %43
+         %45 = OpExtInst %v2float %1 Sinh %44
+               OpStore %v1 %45
+         %46 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpCompositeConstruct %v2int %47 %int_n3000
+               OpStore %v2 %48
+         %49 = OpLoad %v2float %v1
+         %50 = OpLoad %v2int %v2
+         %51 = OpExtInst %v2float %1 Ldexp %49 %50
+               OpStore %v3 %51
+         %52 = OpAccessChain %_ptr_Function_float %v3 %uint_1
+         %53 = OpLoad %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %_GLF_color %54
+         %55 = OpAccessChain %_ptr_Function_float %v3 %uint_0
+         %56 = OpLoad %float %55
+         %57 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpFOrdGreaterThan %bool %56 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpAccessChain %_ptr_Function_float %v3 %uint_0
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %65 = OpLoad %float %64
+         %66 = OpFOrdLessThan %bool %63 %65
+               OpBranch %60
+         %60 = OpLabel
+         %67 = OpPhi %bool %59 %39 %66 %61
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpCompositeConstruct %v4float %73 %76 %79 %82
+               OpStore %_GLF_color %83
+               OpBranch %68
+         %70 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %85
+         %87 = OpCompositeConstruct %v4float %86 %86 %86 %86
+               OpStore %_GLF_color %87
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0c6ec66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,63 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v1 = float2(0.0f, 0.0f);
+  int2 v2 = int2(0, 0);
+  float2 v3 = float2(0.0f, 0.0f);
+  bool x_66 = false;
+  bool x_67_phi = false;
+  const float x_41 = asfloat(x_6[2].x);
+  const float x_43 = asfloat(x_6[3].x);
+  v1 = sinh(float2(x_41, x_43));
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_9[scalar_offset / 4][scalar_offset % 4]);
+  v2 = int2(x_47, -3000);
+  v3 = ldexp(v1, v2);
+  const float x_53 = v3.y;
+  x_GLF_color = float4(x_53, x_53, x_53, x_53);
+  const float x_56 = v3.x;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_58 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const bool x_59 = (x_56 > x_58);
+  x_67_phi = x_59;
+  if (x_59) {
+    const float x_63 = v3.x;
+    const float x_65 = asfloat(x_6[1].x);
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  if (x_67_phi) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_72 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_75 = asint(x_9[1].x);
+    const int x_78 = asint(x_9[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_81 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    const int x_85 = asint(x_9[1].x);
+    const float x_86 = float(x_85);
+    x_GLF_color = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..0439234
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  int2 v2 = 0;
+  float2 v3 = 0.0f;
+  bool x_66 = false;
+  bool x_67_phi = false;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  v1 = sinh(float2(x_41, x_43));
+  int const x_47 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  v2 = int2(x_47, -3000);
+  float2 const x_49 = v1;
+  int2 const x_50 = v2;
+  v3 = ldexp(x_49, x_50);
+  float const x_53 = v3.y;
+  *(tint_symbol_4) = float4(x_53, x_53, x_53, x_53);
+  float const x_56 = v3.x;
+  float const x_58 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_59 = (x_56 > x_58);
+  x_67_phi = x_59;
+  if (x_59) {
+    float const x_63 = v3.x;
+    float const x_65 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  bool const x_67 = x_67_phi;
+  if (x_67) {
+    int const x_72 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_75 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_86 = float(x_85);
+    *(tint_symbol_4) = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7cba6b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,174 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 110
+; Schema: 0
+               OpCapability Shader
+         %47 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %v3 "v3"
+               OpName %x_66 "x_66"
+               OpName %x_67_phi "x_67_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %27 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %31 = OpConstantNull %v2int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+  %int_n3000 = OpConstant %int -3000
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %27
+         %v2 = OpVariable %_ptr_Function_v2int Function %31
+         %v3 = OpVariable %_ptr_Function_v2float Function %27
+       %x_66 = OpVariable %_ptr_Function_bool Function %36
+   %x_67_phi = OpVariable %_ptr_Function_bool Function %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %45 = OpLoad %float %44
+         %48 = OpCompositeConstruct %v2float %42 %45
+         %46 = OpExtInst %v2float %47 Sinh %48
+               OpStore %v1 %46
+         %51 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %54 = OpCompositeConstruct %v2int %52 %int_n3000
+               OpStore %v2 %54
+         %55 = OpLoad %v2float %v1
+         %56 = OpLoad %v2int %v2
+         %57 = OpExtInst %v2float %47 Ldexp %55 %56
+               OpStore %v3 %57
+         %60 = OpAccessChain %_ptr_Function_float %v3 %uint_1
+         %61 = OpLoad %float %60
+         %62 = OpCompositeConstruct %v4float %61 %61 %61 %61
+               OpStore %x_GLF_color %62
+         %63 = OpAccessChain %_ptr_Function_float %v3 %uint_0
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpFOrdGreaterThan %bool %64 %66
+               OpStore %x_67_phi %67
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %v3 %uint_0
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %74 = OpLoad %float %73
+         %75 = OpFOrdLessThan %bool %71 %74
+               OpStore %x_66 %75
+         %76 = OpLoad %bool %x_66
+               OpStore %x_67_phi %76
+               OpBranch %68
+         %68 = OpLabel
+         %77 = OpLoad %bool %x_67_phi
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %82
+         %90 = OpConvertSToF %float %84
+         %91 = OpConvertSToF %float %86
+         %92 = OpConvertSToF %float %88
+         %93 = OpCompositeConstruct %v4float %89 %90 %91 %92
+               OpStore %x_GLF_color %93
+               OpBranch %78
+         %80 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpCompositeConstruct %v4float %96 %96 %96 %96
+               OpStore %x_GLF_color %97
+               OpBranch %78
+         %78 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %98
+%tint_symbol = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %105 = OpLabel
+        %106 = OpFunctionCall %void %main_1
+        %108 = OpLoad %v4float %x_GLF_color
+        %109 = OpCompositeConstruct %main_out %108
+        %107 = OpFunctionCall %void %tint_symbol_2 %109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6c083f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var v2 : vec2<i32>;
+  var v3 : vec2<f32>;
+  var x_66 : bool;
+  var x_67_phi : bool;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[3];
+  v1 = sinh(vec2<f32>(x_41, x_43));
+  let x_47 : i32 = x_9.x_GLF_uniform_int_values[0];
+  v2 = vec2<i32>(x_47, -3000);
+  let x_49 : vec2<f32> = v1;
+  let x_50 : vec2<i32> = v2;
+  v3 = ldexp(x_49, x_50);
+  let x_53 : f32 = v3.y;
+  x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+  let x_56 : f32 = v3.x;
+  let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_59 : bool = (x_56 > x_58);
+  x_67_phi = x_59;
+  if (x_59) {
+    let x_63 : f32 = v3.x;
+    let x_65 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  let x_67 : bool = x_67_phi;
+  if (x_67) {
+    let x_72 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_75 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+  } else {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_85);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
new file mode 100644
index 0000000..6c083f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var v2 : vec2<i32>;
+  var v3 : vec2<f32>;
+  var x_66 : bool;
+  var x_67_phi : bool;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[3];
+  v1 = sinh(vec2<f32>(x_41, x_43));
+  let x_47 : i32 = x_9.x_GLF_uniform_int_values[0];
+  v2 = vec2<i32>(x_47, -3000);
+  let x_49 : vec2<f32> = v1;
+  let x_50 : vec2<i32> = v2;
+  v3 = ldexp(x_49, x_50);
+  let x_53 : f32 = v3.y;
+  x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+  let x_56 : f32 = v3.x;
+  let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_59 : bool = (x_56 > x_58);
+  x_67_phi = x_59;
+  if (x_59) {
+    let x_63 : f32 = v3.x;
+    let x_65 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  let x_67 : bool = x_67_phi;
+  if (x_67) {
+    let x_72 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_75 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+  } else {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_85);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0c6ec66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,63 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v1 = float2(0.0f, 0.0f);
+  int2 v2 = int2(0, 0);
+  float2 v3 = float2(0.0f, 0.0f);
+  bool x_66 = false;
+  bool x_67_phi = false;
+  const float x_41 = asfloat(x_6[2].x);
+  const float x_43 = asfloat(x_6[3].x);
+  v1 = sinh(float2(x_41, x_43));
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_9[scalar_offset / 4][scalar_offset % 4]);
+  v2 = int2(x_47, -3000);
+  v3 = ldexp(v1, v2);
+  const float x_53 = v3.y;
+  x_GLF_color = float4(x_53, x_53, x_53, x_53);
+  const float x_56 = v3.x;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_58 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const bool x_59 = (x_56 > x_58);
+  x_67_phi = x_59;
+  if (x_59) {
+    const float x_63 = v3.x;
+    const float x_65 = asfloat(x_6[1].x);
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  if (x_67_phi) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_72 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_75 = asint(x_9[1].x);
+    const int x_78 = asint(x_9[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_81 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    const int x_85 = asint(x_9[1].x);
+    const float x_86 = float(x_85);
+    x_GLF_color = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..0439234
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  int2 v2 = 0;
+  float2 v3 = 0.0f;
+  bool x_66 = false;
+  bool x_67_phi = false;
+  float const x_41 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_43 = x_6.x_GLF_uniform_float_values.arr[3].el;
+  v1 = sinh(float2(x_41, x_43));
+  int const x_47 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  v2 = int2(x_47, -3000);
+  float2 const x_49 = v1;
+  int2 const x_50 = v2;
+  v3 = ldexp(x_49, x_50);
+  float const x_53 = v3.y;
+  *(tint_symbol_4) = float4(x_53, x_53, x_53, x_53);
+  float const x_56 = v3.x;
+  float const x_58 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_59 = (x_56 > x_58);
+  x_67_phi = x_59;
+  if (x_59) {
+    float const x_63 = v3.x;
+    float const x_65 = x_6.x_GLF_uniform_float_values.arr[1].el;
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  bool const x_67 = x_67_phi;
+  if (x_67) {
+    int const x_72 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_75 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_78 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_81 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_72), float(x_75), float(x_78), float(x_81));
+  } else {
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_86 = float(x_85);
+    *(tint_symbol_4) = float4(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7cba6b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,174 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 110
+; Schema: 0
+               OpCapability Shader
+         %47 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %v3 "v3"
+               OpName %x_66 "x_66"
+               OpName %x_67_phi "x_67_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+       %buf1 = OpTypeStruct %_arr_float_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %27 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %31 = OpConstantNull %v2int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+  %int_n3000 = OpConstant %int -3000
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %27
+         %v2 = OpVariable %_ptr_Function_v2int Function %31
+         %v3 = OpVariable %_ptr_Function_v2float Function %27
+       %x_66 = OpVariable %_ptr_Function_bool Function %36
+   %x_67_phi = OpVariable %_ptr_Function_bool Function %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_3
+         %45 = OpLoad %float %44
+         %48 = OpCompositeConstruct %v2float %42 %45
+         %46 = OpExtInst %v2float %47 Sinh %48
+               OpStore %v1 %46
+         %51 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %54 = OpCompositeConstruct %v2int %52 %int_n3000
+               OpStore %v2 %54
+         %55 = OpLoad %v2float %v1
+         %56 = OpLoad %v2int %v2
+         %57 = OpExtInst %v2float %47 Ldexp %55 %56
+               OpStore %v3 %57
+         %60 = OpAccessChain %_ptr_Function_float %v3 %uint_1
+         %61 = OpLoad %float %60
+         %62 = OpCompositeConstruct %v4float %61 %61 %61 %61
+               OpStore %x_GLF_color %62
+         %63 = OpAccessChain %_ptr_Function_float %v3 %uint_0
+         %64 = OpLoad %float %63
+         %65 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpFOrdGreaterThan %bool %64 %66
+               OpStore %x_67_phi %67
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %v3 %uint_0
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %74 = OpLoad %float %73
+         %75 = OpFOrdLessThan %bool %71 %74
+               OpStore %x_66 %75
+         %76 = OpLoad %bool %x_66
+               OpStore %x_67_phi %76
+               OpBranch %68
+         %68 = OpLabel
+         %77 = OpLoad %bool %x_67_phi
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %82
+         %90 = OpConvertSToF %float %84
+         %91 = OpConvertSToF %float %86
+         %92 = OpConvertSToF %float %88
+         %93 = OpCompositeConstruct %v4float %89 %90 %91 %92
+               OpStore %x_GLF_color %93
+               OpBranch %78
+         %80 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpConvertSToF %float %95
+         %97 = OpCompositeConstruct %v4float %96 %96 %96 %96
+               OpStore %x_GLF_color %97
+               OpBranch %78
+         %78 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %98
+%tint_symbol = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %105 = OpLabel
+        %106 = OpFunctionCall %void %main_1
+        %108 = OpLoad %v4float %x_GLF_color
+        %109 = OpCompositeConstruct %main_out %108
+        %107 = OpFunctionCall %void %tint_symbol_2 %109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6c083f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,71 @@
+type Arr = [[stride(16)]] array<f32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var v2 : vec2<i32>;
+  var v3 : vec2<f32>;
+  var x_66 : bool;
+  var x_67_phi : bool;
+  let x_41 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_43 : f32 = x_6.x_GLF_uniform_float_values[3];
+  v1 = sinh(vec2<f32>(x_41, x_43));
+  let x_47 : i32 = x_9.x_GLF_uniform_int_values[0];
+  v2 = vec2<i32>(x_47, -3000);
+  let x_49 : vec2<f32> = v1;
+  let x_50 : vec2<i32> = v2;
+  v3 = ldexp(x_49, x_50);
+  let x_53 : f32 = v3.y;
+  x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+  let x_56 : f32 = v3.x;
+  let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_59 : bool = (x_56 > x_58);
+  x_67_phi = x_59;
+  if (x_59) {
+    let x_63 : f32 = v3.x;
+    let x_65 : f32 = x_6.x_GLF_uniform_float_values[1];
+    x_66 = (x_63 < x_65);
+    x_67_phi = x_66;
+  }
+  let x_67 : bool = x_67_phi;
+  if (x_67) {
+    let x_72 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_75 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_78 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_81 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_72), f32(x_75), f32(x_78), f32(x_81));
+  } else {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_86 : f32 = f32(x_85);
+    x_GLF_color = vec4<f32>(x_86, x_86, x_86, x_86);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm
new file mode 100644
index 0000000..5ef5478
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm
@@ -0,0 +1,92 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+         %12 = OpTypeFunction %v4float
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_float = OpTypePointer Output %float
+       %main = OpFunction %void None %9
+         %28 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %22
+               OpStore %i %int_0
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %35 = OpLoad %int %34
+         %36 = OpSLessThanEqual %bool %33 %35
+               OpBranchConditional %36 %37 %30
+         %37 = OpLabel
+         %38 = OpLoad %int %i
+               OpSelectionMerge %39 None
+               OpSwitch %38 %40 1 %41 0 %40
+         %40 = OpLabel
+         %42 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_1
+               OpStore %42 %float_0
+               OpBranch %39
+         %41 = OpLabel
+         %43 = OpFunctionCall %v4float %func_
+               OpStore %_GLF_color %43
+               OpBranch %40
+         %39 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %44 = OpLoad %int %i
+         %45 = OpIAdd %int %44 %int_1
+               OpStore %i %45
+               OpBranch %29
+         %30 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %v4float None %12
+         %46 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %48 = OpLoad %int %47
+         %49 = OpIEqual %bool %48 %int_1
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpReturnValue %21
+         %52 = OpLabel
+               OpReturnValue %22
+         %50 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..aea4365
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,60 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float4 func_() {
+  const int x_48 = asint(x_6[0].x);
+  if ((x_48 == 1)) {
+    return float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    return float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    const int x_33 = i;
+    const int x_35 = asint(x_6[0].x);
+    if ((x_33 <= x_35)) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 1: {
+        const float4 x_43 = func_();
+        x_GLF_color = x_43;
+        /* fallthrough */
+      }
+      default: {
+        /* fallthrough */
+      }
+      case 0: {
+        x_GLF_color.y = 0.0f;
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6614fe8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 func_(constant buf0& x_6) {
+  int const x_48 = x_6.one;
+  if ((x_48 == 1)) {
+    return float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    return float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    int const x_33 = i;
+    int const x_35 = x_6.one;
+    if ((x_33 <= x_35)) {
+    } else {
+      break;
+    }
+    int const x_38 = i;
+    switch(x_38) {
+      case 1: {
+        float4 const x_43 = func_(x_6);
+        *(tint_symbol_4) = x_43;
+        /* fallthrough */
+      }
+      default: {
+        /* fallthrough */
+      }
+      case 0: {
+        (*(tint_symbol_4)).y = 0.0f;
+        break;
+      }
+    }
+    {
+      int const x_44 = i;
+      i = (x_44 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..c8ef50f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,132 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v4float None %12
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %19 = OpLoad %int %18
+         %21 = OpIEqual %bool %19 %int_1
+               OpSelectionMerge %23 None
+               OpBranchConditional %21 %24 %25
+         %24 = OpLabel
+               OpReturnValue %28
+         %25 = OpLabel
+               OpReturnValue %29
+         %23 = OpLabel
+               OpReturnValue %29
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %30
+         %33 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %36
+               OpStore %x_GLF_color %29
+               OpStore %i %int_0
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpLoad %int %i
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %44 = OpLoad %int %43
+         %45 = OpSLessThanEqual %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %39
+         %46 = OpLabel
+         %49 = OpLoad %int %i
+               OpSelectionMerge %50 None
+               OpSwitch %49 %51 1 %52 0 %53
+         %52 = OpLabel
+         %54 = OpFunctionCall %v4float %func_
+               OpStore %x_GLF_color %54
+               OpBranch %51
+         %51 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+         %57 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %57 %float_0
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %38
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %30
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1f005a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,63 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec4<f32> {
+  let x_48 : i32 = x_6.one;
+  if ((x_48 == 1)) {
+    return vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    return vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return vec4<f32>(0.0, 0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.one;
+    if ((x_33 <= x_35)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    switch(x_38) {
+      case 1: {
+        let x_43 : vec4<f32> = func_();
+        x_GLF_color = x_43;
+        fallthrough;
+      }
+      default: {
+        fallthrough;
+      }
+      case 0: {
+        x_GLF_color.y = 0.0;
+      }
+    }
+
+    continuing {
+      let x_44 : i32 = i;
+      i = (x_44 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
new file mode 100644
index 0000000..1f005a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
@@ -0,0 +1,63 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec4<f32> {
+  let x_48 : i32 = x_6.one;
+  if ((x_48 == 1)) {
+    return vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    return vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return vec4<f32>(0.0, 0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.one;
+    if ((x_33 <= x_35)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    switch(x_38) {
+      case 1: {
+        let x_43 : vec4<f32> = func_();
+        x_GLF_color = x_43;
+        fallthrough;
+      }
+      default: {
+        fallthrough;
+      }
+      case 0: {
+        x_GLF_color.y = 0.0;
+      }
+    }
+
+    continuing {
+      let x_44 : i32 = i;
+      i = (x_44 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..aea4365
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,60 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float4 func_() {
+  const int x_48 = asint(x_6[0].x);
+  if ((x_48 == 1)) {
+    return float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    return float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    const int x_33 = i;
+    const int x_35 = asint(x_6[0].x);
+    if ((x_33 <= x_35)) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 1: {
+        const float4 x_43 = func_();
+        x_GLF_color = x_43;
+        /* fallthrough */
+      }
+      default: {
+        /* fallthrough */
+      }
+      case 0: {
+        x_GLF_color.y = 0.0f;
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6614fe8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 func_(constant buf0& x_6) {
+  int const x_48 = x_6.one;
+  if ((x_48 == 1)) {
+    return float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    return float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  while (true) {
+    int const x_33 = i;
+    int const x_35 = x_6.one;
+    if ((x_33 <= x_35)) {
+    } else {
+      break;
+    }
+    int const x_38 = i;
+    switch(x_38) {
+      case 1: {
+        float4 const x_43 = func_(x_6);
+        *(tint_symbol_4) = x_43;
+        /* fallthrough */
+      }
+      default: {
+        /* fallthrough */
+      }
+      case 0: {
+        (*(tint_symbol_4)).y = 0.0f;
+        break;
+      }
+    }
+    {
+      int const x_44 = i;
+      i = (x_44 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..c8ef50f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,132 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %29 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %60 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %v4float None %12
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %19 = OpLoad %int %18
+         %21 = OpIEqual %bool %19 %int_1
+               OpSelectionMerge %23 None
+               OpBranchConditional %21 %24 %25
+         %24 = OpLabel
+               OpReturnValue %28
+         %25 = OpLabel
+               OpReturnValue %29
+         %23 = OpLabel
+               OpReturnValue %29
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %30
+         %33 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %36
+               OpStore %x_GLF_color %29
+               OpStore %i %int_0
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpLoad %int %i
+         %43 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %44 = OpLoad %int %43
+         %45 = OpSLessThanEqual %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %39
+         %46 = OpLabel
+         %49 = OpLoad %int %i
+               OpSelectionMerge %50 None
+               OpSwitch %49 %51 1 %52 0 %53
+         %52 = OpLabel
+         %54 = OpFunctionCall %v4float %func_
+               OpStore %x_GLF_color %54
+               OpBranch %51
+         %51 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+         %57 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %57 %float_0
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %58 = OpLoad %int %i
+         %59 = OpIAdd %int %58 %int_1
+               OpStore %i %59
+               OpBranch %38
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %60
+%tint_symbol = OpFunctionParameter %main_out
+         %64 = OpLabel
+         %65 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %65
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %30
+         %67 = OpLabel
+         %68 = OpFunctionCall %void %main_1
+         %70 = OpLoad %v4float %x_GLF_color
+         %71 = OpCompositeConstruct %main_out %70
+         %69 = OpFunctionCall %void %tint_symbol_2 %71
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1f005a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,63 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> vec4<f32> {
+  let x_48 : i32 = x_6.one;
+  if ((x_48 == 1)) {
+    return vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    return vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return vec4<f32>(0.0, 0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  loop {
+    let x_33 : i32 = i;
+    let x_35 : i32 = x_6.one;
+    if ((x_33 <= x_35)) {
+    } else {
+      break;
+    }
+    let x_38 : i32 = i;
+    switch(x_38) {
+      case 1: {
+        let x_43 : vec4<f32> = func_();
+        x_GLF_color = x_43;
+        fallthrough;
+      }
+      default: {
+        fallthrough;
+      }
+      case 0: {
+        x_GLF_color.y = 0.0;
+      }
+    }
+
+    continuing {
+      let x_44 : i32 = i;
+      i = (x_44 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm
new file mode 100644
index 0000000..666b9b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm
@@ -0,0 +1,49 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_1 = OpConstant %float 1
+   %float_n1 = OpConstant %float -1
+         %13 = OpConstantComposite %v2float %float_1 %float_n1
+%float_0_400000006 = OpConstant %float 0.400000006
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function
+         %v2 = OpVariable %_ptr_Function_v2float Function
+               OpStore %v1 %13
+         %22 = OpLoad %v2float %v1
+         %23 = OpExtInst %v2float %1 Sinh %22
+         %24 = OpCompositeConstruct %v2float %float_0_400000006 %float_0_400000006
+         %25 = OpExtInst %v2float %1 Step %24 %23
+               OpStore %v2 %25
+         %26 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+         %27 = OpLoad %float %26
+         %28 = OpAccessChain %_ptr_Function_float %v2 %uint_1
+         %29 = OpLoad %float %28
+         %30 = OpAccessChain %_ptr_Function_float %v2 %uint_1
+         %31 = OpLoad %float %30
+         %32 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+         %33 = OpLoad %float %32
+         %34 = OpCompositeConstruct %v4float %27 %29 %31 %33
+               OpStore %_GLF_color %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..37bf795
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v1 = float2(0.0f, 0.0f);
+  float2 v2 = float2(0.0f, 0.0f);
+  v1 = float2(1.0f, -1.0f);
+  v2 = step(float2(0.400000006f, 0.400000006f), sinh(v1));
+  const float x_27 = v2.x;
+  const float x_29 = v2.y;
+  const float x_31 = v2.y;
+  const float x_33 = v2.x;
+  x_GLF_color = float4(x_27, x_29, x_31, x_33);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..57eb0c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.msl
@@ -0,0 +1,32 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  float2 v2 = 0.0f;
+  v1 = float2(1.0f, -1.0f);
+  float2 const x_22 = v1;
+  v2 = step(float2(0.400000006f, 0.400000006f), sinh(x_22));
+  float const x_27 = v2.x;
+  float const x_29 = v2.y;
+  float const x_31 = v2.y;
+  float const x_33 = v2.x;
+  *(tint_symbol_4) = float4(x_27, x_29, x_31, x_33);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5661e19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,81 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 51
+; Schema: 0
+               OpCapability Shader
+         %22 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+    %float_1 = OpConstant %float 1
+   %float_n1 = OpConstant %float -1
+         %19 = OpConstantComposite %v2float %float_1 %float_n1
+%float_0_400000006 = OpConstant %float 0.400000006
+         %24 = OpConstantComposite %v2float %float_0_400000006 %float_0_400000006
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+         %39 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %15
+         %v2 = OpVariable %_ptr_Function_v2float Function %15
+               OpStore %v1 %19
+         %20 = OpLoad %v2float %v1
+         %25 = OpExtInst %v2float %22 Sinh %20
+         %21 = OpExtInst %v2float %22 Step %24 %25
+               OpStore %v2 %21
+         %29 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %v2 %uint_1
+         %33 = OpLoad %float %32
+         %34 = OpAccessChain %_ptr_Function_float %v2 %uint_1
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+         %37 = OpLoad %float %36
+         %38 = OpCompositeConstruct %v4float %30 %33 %35 %37
+               OpStore %x_GLF_color %38
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %39
+%tint_symbol = OpFunctionParameter %main_out
+         %43 = OpLabel
+         %44 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %44
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %main_1
+         %49 = OpLoad %v4float %x_GLF_color
+         %50 = OpCompositeConstruct %main_out %49
+         %48 = OpFunctionCall %void %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a52a30a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,26 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var v2 : vec2<f32>;
+  v1 = vec2<f32>(1.0, -1.0);
+  let x_22 : vec2<f32> = v1;
+  v2 = step(vec2<f32>(0.400000006, 0.400000006), sinh(x_22));
+  let x_27 : f32 = v2.x;
+  let x_29 : f32 = v2.y;
+  let x_31 : f32 = v2.y;
+  let x_33 : f32 = v2.x;
+  x_GLF_color = vec4<f32>(x_27, x_29, x_31, x_33);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
new file mode 100644
index 0000000..a52a30a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
@@ -0,0 +1,26 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var v2 : vec2<f32>;
+  v1 = vec2<f32>(1.0, -1.0);
+  let x_22 : vec2<f32> = v1;
+  v2 = step(vec2<f32>(0.400000006, 0.400000006), sinh(x_22));
+  let x_27 : f32 = v2.x;
+  let x_29 : f32 = v2.y;
+  let x_31 : f32 = v2.y;
+  let x_33 : f32 = v2.x;
+  x_GLF_color = vec4<f32>(x_27, x_29, x_31, x_33);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..37bf795
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v1 = float2(0.0f, 0.0f);
+  float2 v2 = float2(0.0f, 0.0f);
+  v1 = float2(1.0f, -1.0f);
+  v2 = step(float2(0.400000006f, 0.400000006f), sinh(v1));
+  const float x_27 = v2.x;
+  const float x_29 = v2.y;
+  const float x_31 = v2.y;
+  const float x_33 = v2.x;
+  x_GLF_color = float4(x_27, x_29, x_31, x_33);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..57eb0c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.msl
@@ -0,0 +1,32 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  float2 v2 = 0.0f;
+  v1 = float2(1.0f, -1.0f);
+  float2 const x_22 = v1;
+  v2 = step(float2(0.400000006f, 0.400000006f), sinh(x_22));
+  float const x_27 = v2.x;
+  float const x_29 = v2.y;
+  float const x_31 = v2.y;
+  float const x_33 = v2.x;
+  *(tint_symbol_4) = float4(x_27, x_29, x_31, x_33);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5661e19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,81 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 51
+; Schema: 0
+               OpCapability Shader
+         %22 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %v2 "v2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+    %float_1 = OpConstant %float 1
+   %float_n1 = OpConstant %float -1
+         %19 = OpConstantComposite %v2float %float_1 %float_n1
+%float_0_400000006 = OpConstant %float 0.400000006
+         %24 = OpConstantComposite %v2float %float_0_400000006 %float_0_400000006
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+         %39 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %15
+         %v2 = OpVariable %_ptr_Function_v2float Function %15
+               OpStore %v1 %19
+         %20 = OpLoad %v2float %v1
+         %25 = OpExtInst %v2float %22 Sinh %20
+         %21 = OpExtInst %v2float %22 Step %24 %25
+               OpStore %v2 %21
+         %29 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %v2 %uint_1
+         %33 = OpLoad %float %32
+         %34 = OpAccessChain %_ptr_Function_float %v2 %uint_1
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Function_float %v2 %uint_0
+         %37 = OpLoad %float %36
+         %38 = OpCompositeConstruct %v4float %30 %33 %35 %37
+               OpStore %x_GLF_color %38
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %39
+%tint_symbol = OpFunctionParameter %main_out
+         %43 = OpLabel
+         %44 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %44
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %main_1
+         %49 = OpLoad %v4float %x_GLF_color
+         %50 = OpCompositeConstruct %main_out %49
+         %48 = OpFunctionCall %void %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a52a30a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var v2 : vec2<f32>;
+  v1 = vec2<f32>(1.0, -1.0);
+  let x_22 : vec2<f32> = v1;
+  v2 = step(vec2<f32>(0.400000006, 0.400000006), sinh(x_22));
+  let x_27 : f32 = v2.x;
+  let x_29 : f32 = v2.y;
+  let x_31 : f32 = v2.y;
+  let x_33 : f32 = v2.x;
+  x_GLF_color = vec4<f32>(x_27, x_29, x_31, x_33);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm
new file mode 100644
index 0000000..55ad477
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm
@@ -0,0 +1,173 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "numbers"
+               OpName %obj "obj"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zeroVec"
+               OpName %__0 ""
+               OpName %a "a"
+               OpName %buf3 "buf3"
+               OpMemberName %buf3 0 "oneVec"
+               OpName %__1 ""
+               OpName %b "b"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__2 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpMemberDecorate %buf3 0 Offset 0
+               OpDecorate %buf3 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 3
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__2 DescriptorSet 0
+               OpDecorate %__2 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+          %S = OpTypeStruct %_arr_float_uint_3
+%_ptr_Function_S = OpTypePointer Function %S
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf1 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %buf3 = OpTypeStruct %v2float
+%_ptr_Uniform_buf3 = OpTypePointer Uniform %buf3
+        %__1 = OpVariable %_ptr_Uniform_buf3 Uniform
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__2 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %19
+         %48 = OpLabel
+        %obj = OpVariable %_ptr_Function_S Function
+          %a = OpVariable %_ptr_Function_float Function
+         %49 = OpVariable %_ptr_Function_v2float Function
+          %b = OpVariable %_ptr_Function_float Function
+         %50 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_3
+         %51 = OpLoad %float %50
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %53 = OpLoad %float %52
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_4
+         %55 = OpLoad %float %54
+         %56 = OpCompositeConstruct %_arr_float_uint_3 %51 %53 %55
+         %57 = OpCompositeConstruct %S %56
+               OpStore %obj %57
+         %58 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %59 = OpLoad %float %58
+         %60 = OpConvertFToS %int %59
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Function_float %obj %int_0 %60
+               OpStore %63 %62
+         %64 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %67 = OpLoad %float %66
+         %68 = OpFOrdGreaterThan %bool %65 %67
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_v2float %__0 %int_0
+         %73 = OpLoad %v2float %72
+               OpStore %49 %73
+               OpBranch %69
+         %71 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_v2float %__1 %int_0
+         %75 = OpLoad %v2float %74
+               OpStore %49 %75
+               OpBranch %69
+         %69 = OpLabel
+         %76 = OpAccessChain %_ptr_Function_float %49 %uint_1
+         %77 = OpLoad %float %76
+               OpStore %a %77
+         %78 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpLoad %float %a
+         %81 = OpAccessChain %_ptr_Uniform_int %__2 %int_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Function_float %obj %int_0 %82
+         %84 = OpLoad %float %83
+         %85 = OpExtInst %float %1 FMix %79 %80 %84
+               OpStore %b %85
+         %86 = OpLoad %float %b
+         %87 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %88 = OpLoad %float %87
+         %89 = OpExtInst %float %1 Distance %86 %88
+         %90 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %91 = OpLoad %float %90
+         %92 = OpFOrdLessThan %bool %89 %91
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_int %__2 %int_0 %int_0
+         %97 = OpLoad %int %96
+         %98 = OpConvertSToF %float %97
+         %99 = OpAccessChain %_ptr_Uniform_int %__2 %int_0 %int_1
+        %100 = OpLoad %int %99
+        %101 = OpConvertSToF %float %100
+        %102 = OpAccessChain %_ptr_Uniform_int %__2 %int_0 %int_1
+        %103 = OpLoad %int %102
+        %104 = OpConvertSToF %float %103
+        %105 = OpAccessChain %_ptr_Uniform_int %__2 %int_0 %int_0
+        %106 = OpLoad %int %105
+        %107 = OpConvertSToF %float %106
+        %108 = OpCompositeConstruct %v4float %98 %101 %104 %107
+               OpStore %_GLF_color %108
+               OpBranch %93
+         %95 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %__2 %int_0 %int_1
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %110
+        %112 = OpCompositeConstruct %v4float %111 %111 %111 %111
+               OpStore %_GLF_color %112
+               OpBranch %93
+         %93 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c182316
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,84 @@
+struct S {
+  float numbers[3];
+};
+
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[5];
+};
+cbuffer cbuffer_x_9 : register(b2, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_12 : register(b3, space0) {
+  uint4 x_12[1];
+};
+cbuffer cbuffer_x_15 : register(b0, space0) {
+  uint4 x_15[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  S obj = (S)0;
+  float a = 0.0f;
+  float2 x_49 = float2(0.0f, 0.0f);
+  float b = 0.0f;
+  const float x_51 = asfloat(x_7[3].x);
+  const float x_53 = asfloat(x_7[2].x);
+  const float x_55 = asfloat(x_7[4].x);
+  const float tint_symbol_7[3] = {x_51, x_53, x_55};
+  const S tint_symbol_8 = {tint_symbol_7};
+  obj = tint_symbol_8;
+  const float x_59 = asfloat(x_9[0].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_62 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  obj.numbers[int(x_59)] = x_62;
+  const float x_65 = asfloat(x_9[0].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_67 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_65 > x_67)) {
+    const float2 x_73 = asfloat(x_9[0].xy);
+    x_49 = x_73;
+  } else {
+    const float2 x_75 = asfloat(x_12[0].xy);
+    x_49 = x_75;
+  }
+  const float x_77 = x_49.y;
+  a = x_77;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_79 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_80 = a;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_82 = asint(x_15[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_84 = obj.numbers[x_82];
+  b = lerp(x_79, x_80, x_84);
+  const float x_86 = b;
+  const float x_88 = asfloat(x_7[2].x);
+  const float x_91 = asfloat(x_7[1].x);
+  if ((distance(x_86, x_88) < x_91)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_97 = asint(x_15[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const int x_100 = asint(x_15[1].x);
+    const int x_103 = asint(x_15[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_106 = asint(x_15[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_97), float(x_100), float(x_103), float(x_106));
+  } else {
+    const int x_110 = asint(x_15[1].x);
+    const float x_111 = float(x_110);
+    x_GLF_color = float4(x_111, x_111, x_111, x_111);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_9 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.msl
new file mode 100755
index 0000000..649909a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.msl
@@ -0,0 +1,122 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[3];
+};
+struct S {
+  tint_array_wrapper numbers;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 zeroVec;
+};
+struct buf3 {
+  /* 0x0000 */ packed_float2 oneVec;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf2& x_9, constant buf3& x_12, constant buf0& x_15, thread float4* const tint_symbol_6) {
+  S obj = {};
+  float a = 0.0f;
+  float2 x_49 = 0.0f;
+  float b = 0.0f;
+  float const x_51 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  float const x_53 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_55 = x_7.x_GLF_uniform_float_values.arr[4].el;
+  tint_array_wrapper const tint_symbol_3 = {.arr={x_51, x_53, x_55}};
+  S const tint_symbol_4 = {.numbers=tint_symbol_3};
+  obj = tint_symbol_4;
+  float const x_59 = x_9.zeroVec.x;
+  float const x_62 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  obj.numbers.arr[int(x_59)] = x_62;
+  float const x_65 = x_9.zeroVec.x;
+  float const x_67 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_65 > x_67)) {
+    float2 const x_73 = x_9.zeroVec;
+    x_49 = x_73;
+  } else {
+    float2 const x_75 = x_12.oneVec;
+    x_49 = x_75;
+  }
+  float const x_77 = x_49.y;
+  a = x_77;
+  float const x_79 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_80 = a;
+  int const x_82 = x_15.x_GLF_uniform_int_values.arr[0].el;
+  float const x_84 = obj.numbers.arr[x_82];
+  b = mix(x_79, x_80, x_84);
+  float const x_86 = b;
+  float const x_88 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_91 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  if ((distance(x_86, x_88) < x_91)) {
+    int const x_97 = x_15.x_GLF_uniform_int_values.arr[0].el;
+    int const x_100 = x_15.x_GLF_uniform_int_values.arr[1].el;
+    int const x_103 = x_15.x_GLF_uniform_int_values.arr[1].el;
+    int const x_106 = x_15.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_97), float(x_100), float(x_103), float(x_106));
+  } else {
+    int const x_110 = x_15.x_GLF_uniform_int_values.arr[1].el;
+    float const x_111 = float(x_110);
+    *(tint_symbol_6) = float4(x_111, x_111, x_111, x_111);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf2& x_9 [[buffer(2)]], constant buf3& x_12 [[buffer(3)]], constant buf0& x_15 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_9, x_12, x_15, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+T:\tmp\udoo.0.metal:76:8: error: call to 'distance' is ambiguous
+  if ((distance(x_86, x_88) < x_91)) {
+       ^~~~~~~~
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:481:17: note: candidate function
+METAL_FUNC half distance(half2 x, half2 y)
+                ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:512:17: note: candidate function
+METAL_FUNC half distance(half3 x, half3 y)
+                ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:543:17: note: candidate function
+METAL_FUNC half distance(half4 x, half4 y)
+                ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:648:18: note: candidate function
+METAL_FUNC float distance(float2 x, float2 y)
+                 ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:691:18: note: candidate function
+METAL_FUNC float distance(float3 x, float3 y)
+                 ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:734:18: note: candidate function
+METAL_FUNC float distance(float4 x, float4 y)
+                 ^
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2af192c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,214 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+         %90 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zeroVec"
+               OpName %x_9 "x_9"
+               OpName %buf3 "buf3"
+               OpMemberName %buf3 0 "oneVec"
+               OpName %x_12 "x_12"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_15 "x_15"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %S "S"
+               OpMemberName %S 0 "numbers"
+               OpName %obj "obj"
+               OpName %a "a"
+               OpName %x_49 "x_49"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 2
+               OpDecorate %buf3 Block
+               OpMemberDecorate %buf3 0 Offset 0
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 3
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_15 NonWritable
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf1 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_9 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %buf3 = OpTypeStruct %v2float
+%_ptr_Uniform_buf3 = OpTypePointer Uniform %buf3
+       %x_12 = OpVariable %_ptr_Uniform_buf3 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_15 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %24 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %24
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %24
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+          %S = OpTypeStruct %_arr_float_uint_3
+%_ptr_Function_S = OpTypePointer Function %S
+         %36 = OpConstantNull %S
+%_ptr_Function_float = OpTypePointer Function %float
+         %39 = OpConstantNull %float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %42 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+        %obj = OpVariable %_ptr_Function_S Function %36
+          %a = OpVariable %_ptr_Function_float Function %39
+       %x_49 = OpVariable %_ptr_Function_v2float Function %42
+          %b = OpVariable %_ptr_Function_float Function %39
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+         %48 = OpLoad %float %47
+         %50 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %51 = OpLoad %float %50
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_4
+         %54 = OpLoad %float %53
+         %55 = OpCompositeConstruct %_arr_float_uint_3 %48 %51 %54
+         %56 = OpCompositeConstruct %S %55
+               OpStore %obj %56
+         %57 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %58 = OpLoad %float %57
+         %60 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpConvertFToS %int %58
+         %63 = OpAccessChain %_ptr_Function_float %obj %uint_0 %62
+               OpStore %63 %61
+         %64 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %67 = OpLoad %float %66
+         %68 = OpFOrdGreaterThan %bool %65 %67
+               OpSelectionMerge %70 None
+               OpBranchConditional %68 %71 %72
+         %71 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_v2float %x_9 %uint_0
+         %75 = OpLoad %v2float %74
+               OpStore %x_49 %75
+               OpBranch %70
+         %72 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_v2float %x_12 %uint_0
+         %77 = OpLoad %v2float %76
+               OpStore %x_49 %77
+               OpBranch %70
+         %70 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_float %x_49 %uint_1
+         %80 = OpLoad %float %79
+               OpStore %a %80
+         %81 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %82 = OpLoad %float %81
+         %83 = OpLoad %float %a
+         %85 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Function_float %obj %uint_0 %86
+         %88 = OpLoad %float %87
+         %89 = OpExtInst %float %90 FMix %82 %83 %88
+               OpStore %b %89
+         %91 = OpLoad %float %b
+         %92 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %93 = OpLoad %float %92
+         %95 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %96 = OpLoad %float %95
+         %97 = OpExtInst %float %90 Distance %91 %93
+         %98 = OpFOrdLessThan %bool %97 %96
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_0
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_1
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_1
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_0
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %103
+        %111 = OpConvertSToF %float %105
+        %112 = OpConvertSToF %float %107
+        %113 = OpConvertSToF %float %109
+        %114 = OpCompositeConstruct %v4float %110 %111 %112 %113
+               OpStore %x_GLF_color %114
+               OpBranch %99
+        %101 = OpLabel
+        %115 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %117 %117 %117 %117
+               OpStore %x_GLF_color %118
+               OpBranch %99
+         %99 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..57db954
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,93 @@
+struct S {
+  numbers : array<f32, 3>;
+};
+
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zeroVec : vec2<f32>;
+};
+
+[[block]]
+struct buf3 {
+  oneVec : vec2<f32>;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+
+[[group(0), binding(3)]] var<uniform> x_12 : buf3;
+
+[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var obj : S;
+  var a : f32;
+  var x_49 : vec2<f32>;
+  var b : f32;
+  let x_51 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_53 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_55 : f32 = x_7.x_GLF_uniform_float_values[4];
+  obj = S(array<f32, 3>(x_51, x_53, x_55));
+  let x_59 : f32 = x_9.zeroVec.x;
+  let x_62 : f32 = x_7.x_GLF_uniform_float_values[0];
+  obj.numbers[i32(x_59)] = x_62;
+  let x_65 : f32 = x_9.zeroVec.x;
+  let x_67 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_65 > x_67)) {
+    let x_73 : vec2<f32> = x_9.zeroVec;
+    x_49 = x_73;
+  } else {
+    let x_75 : vec2<f32> = x_12.oneVec;
+    x_49 = x_75;
+  }
+  let x_77 : f32 = x_49.y;
+  a = x_77;
+  let x_79 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_80 : f32 = a;
+  let x_82 : i32 = x_15.x_GLF_uniform_int_values[0];
+  let x_84 : f32 = obj.numbers[x_82];
+  b = mix(x_79, x_80, x_84);
+  let x_86 : f32 = b;
+  let x_88 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_91 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((distance(x_86, x_88) < x_91)) {
+    let x_97 : i32 = x_15.x_GLF_uniform_int_values[0];
+    let x_100 : i32 = x_15.x_GLF_uniform_int_values[1];
+    let x_103 : i32 = x_15.x_GLF_uniform_int_values[1];
+    let x_106 : i32 = x_15.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_97), f32(x_100), f32(x_103), f32(x_106));
+  } else {
+    let x_110 : i32 = x_15.x_GLF_uniform_int_values[1];
+    let x_111 : f32 = f32(x_110);
+    x_GLF_color = vec4<f32>(x_111, x_111, x_111, x_111);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
new file mode 100644
index 0000000..57db954
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
@@ -0,0 +1,93 @@
+struct S {
+  numbers : array<f32, 3>;
+};
+
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zeroVec : vec2<f32>;
+};
+
+[[block]]
+struct buf3 {
+  oneVec : vec2<f32>;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+
+[[group(0), binding(3)]] var<uniform> x_12 : buf3;
+
+[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var obj : S;
+  var a : f32;
+  var x_49 : vec2<f32>;
+  var b : f32;
+  let x_51 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_53 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_55 : f32 = x_7.x_GLF_uniform_float_values[4];
+  obj = S(array<f32, 3>(x_51, x_53, x_55));
+  let x_59 : f32 = x_9.zeroVec.x;
+  let x_62 : f32 = x_7.x_GLF_uniform_float_values[0];
+  obj.numbers[i32(x_59)] = x_62;
+  let x_65 : f32 = x_9.zeroVec.x;
+  let x_67 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_65 > x_67)) {
+    let x_73 : vec2<f32> = x_9.zeroVec;
+    x_49 = x_73;
+  } else {
+    let x_75 : vec2<f32> = x_12.oneVec;
+    x_49 = x_75;
+  }
+  let x_77 : f32 = x_49.y;
+  a = x_77;
+  let x_79 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_80 : f32 = a;
+  let x_82 : i32 = x_15.x_GLF_uniform_int_values[0];
+  let x_84 : f32 = obj.numbers[x_82];
+  b = mix(x_79, x_80, x_84);
+  let x_86 : f32 = b;
+  let x_88 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_91 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((distance(x_86, x_88) < x_91)) {
+    let x_97 : i32 = x_15.x_GLF_uniform_int_values[0];
+    let x_100 : i32 = x_15.x_GLF_uniform_int_values[1];
+    let x_103 : i32 = x_15.x_GLF_uniform_int_values[1];
+    let x_106 : i32 = x_15.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_97), f32(x_100), f32(x_103), f32(x_106));
+  } else {
+    let x_110 : i32 = x_15.x_GLF_uniform_int_values[1];
+    let x_111 : f32 = f32(x_110);
+    x_GLF_color = vec4<f32>(x_111, x_111, x_111, x_111);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c182316
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,84 @@
+struct S {
+  float numbers[3];
+};
+
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[5];
+};
+cbuffer cbuffer_x_9 : register(b2, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_12 : register(b3, space0) {
+  uint4 x_12[1];
+};
+cbuffer cbuffer_x_15 : register(b0, space0) {
+  uint4 x_15[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  S obj = (S)0;
+  float a = 0.0f;
+  float2 x_49 = float2(0.0f, 0.0f);
+  float b = 0.0f;
+  const float x_51 = asfloat(x_7[3].x);
+  const float x_53 = asfloat(x_7[2].x);
+  const float x_55 = asfloat(x_7[4].x);
+  const float tint_symbol_7[3] = {x_51, x_53, x_55};
+  const S tint_symbol_8 = {tint_symbol_7};
+  obj = tint_symbol_8;
+  const float x_59 = asfloat(x_9[0].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_62 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  obj.numbers[int(x_59)] = x_62;
+  const float x_65 = asfloat(x_9[0].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_67 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_65 > x_67)) {
+    const float2 x_73 = asfloat(x_9[0].xy);
+    x_49 = x_73;
+  } else {
+    const float2 x_75 = asfloat(x_12[0].xy);
+    x_49 = x_75;
+  }
+  const float x_77 = x_49.y;
+  a = x_77;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_79 = asfloat(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const float x_80 = a;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_82 = asint(x_15[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_84 = obj.numbers[x_82];
+  b = lerp(x_79, x_80, x_84);
+  const float x_86 = b;
+  const float x_88 = asfloat(x_7[2].x);
+  const float x_91 = asfloat(x_7[1].x);
+  if ((distance(x_86, x_88) < x_91)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_97 = asint(x_15[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const int x_100 = asint(x_15[1].x);
+    const int x_103 = asint(x_15[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_106 = asint(x_15[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_97), float(x_100), float(x_103), float(x_106));
+  } else {
+    const int x_110 = asint(x_15[1].x);
+    const float x_111 = float(x_110);
+    x_GLF_color = float4(x_111, x_111, x_111, x_111);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_9 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.msl
new file mode 100755
index 0000000..e8b297a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.msl
@@ -0,0 +1,122 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[3];
+};
+struct S {
+  tint_array_wrapper numbers;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 zeroVec;
+};
+struct buf3 {
+  /* 0x0000 */ packed_float2 oneVec;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf2& x_9, constant buf3& x_12, constant buf0& x_15, thread float4* const tint_symbol_6) {
+  S obj = {};
+  float a = 0.0f;
+  float2 x_49 = 0.0f;
+  float b = 0.0f;
+  float const x_51 = x_7.x_GLF_uniform_float_values.arr[3].el;
+  float const x_53 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_55 = x_7.x_GLF_uniform_float_values.arr[4].el;
+  tint_array_wrapper const tint_symbol_3 = {.arr={x_51, x_53, x_55}};
+  S const tint_symbol_4 = {.numbers=tint_symbol_3};
+  obj = tint_symbol_4;
+  float const x_59 = x_9.zeroVec.x;
+  float const x_62 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  obj.numbers.arr[int(x_59)] = x_62;
+  float const x_65 = x_9.zeroVec.x;
+  float const x_67 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_65 > x_67)) {
+    float2 const x_73 = x_9.zeroVec;
+    x_49 = x_73;
+  } else {
+    float2 const x_75 = x_12.oneVec;
+    x_49 = x_75;
+  }
+  float const x_77 = x_49.y;
+  a = x_77;
+  float const x_79 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  float const x_80 = a;
+  int const x_82 = x_15.x_GLF_uniform_int_values.arr[0].el;
+  float const x_84 = obj.numbers.arr[x_82];
+  b = mix(x_79, x_80, x_84);
+  float const x_86 = b;
+  float const x_88 = x_7.x_GLF_uniform_float_values.arr[2].el;
+  float const x_91 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  if ((distance(x_86, x_88) < x_91)) {
+    int const x_97 = x_15.x_GLF_uniform_int_values.arr[0].el;
+    int const x_100 = x_15.x_GLF_uniform_int_values.arr[1].el;
+    int const x_103 = x_15.x_GLF_uniform_int_values.arr[1].el;
+    int const x_106 = x_15.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_97), float(x_100), float(x_103), float(x_106));
+  } else {
+    int const x_110 = x_15.x_GLF_uniform_int_values.arr[1].el;
+    float const x_111 = float(x_110);
+    *(tint_symbol_6) = float4(x_111, x_111, x_111, x_111);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_7 [[buffer(1)]], constant buf2& x_9 [[buffer(2)]], constant buf3& x_12 [[buffer(3)]], constant buf0& x_15 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, x_9, x_12, x_15, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+T:\tmp\udr8.0.metal:76:8: error: call to 'distance' is ambiguous
+  if ((distance(x_86, x_88) < x_91)) {
+       ^~~~~~~~
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:481:17: note: candidate function
+METAL_FUNC half distance(half2 x, half2 y)
+                ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:512:17: note: candidate function
+METAL_FUNC half distance(half3 x, half3 y)
+                ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:543:17: note: candidate function
+METAL_FUNC half distance(half4 x, half4 y)
+                ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:648:18: note: candidate function
+METAL_FUNC float distance(float2 x, float2 y)
+                 ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:691:18: note: candidate function
+METAL_FUNC float distance(float3 x, float3 y)
+                 ^
+C:\Program Files\Metal Developer Tools\macos\lib\clang\31001.138\include\metal\metal_geometric:734:18: note: candidate function
+METAL_FUNC float distance(float4 x, float4 y)
+                 ^
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2af192c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,214 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 131
+; Schema: 0
+               OpCapability Shader
+         %90 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zeroVec"
+               OpName %x_9 "x_9"
+               OpName %buf3 "buf3"
+               OpMemberName %buf3 0 "oneVec"
+               OpName %x_12 "x_12"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_15 "x_15"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %S "S"
+               OpMemberName %S 0 "numbers"
+               OpName %obj "obj"
+               OpName %a "a"
+               OpName %x_49 "x_49"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_5 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 2
+               OpDecorate %buf3 Block
+               OpMemberDecorate %buf3 0 Offset 0
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 3
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_15 NonWritable
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_float_uint_5 = OpTypeArray %float %uint_5
+       %buf1 = OpTypeStruct %_arr_float_uint_5
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_9 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %buf3 = OpTypeStruct %v2float
+%_ptr_Uniform_buf3 = OpTypePointer Uniform %buf3
+       %x_12 = OpVariable %_ptr_Uniform_buf3 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_15 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %24 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %24
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %24
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+          %S = OpTypeStruct %_arr_float_uint_3
+%_ptr_Function_S = OpTypePointer Function %S
+         %36 = OpConstantNull %S
+%_ptr_Function_float = OpTypePointer Function %float
+         %39 = OpConstantNull %float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %42 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %119 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+        %obj = OpVariable %_ptr_Function_S Function %36
+          %a = OpVariable %_ptr_Function_float Function %39
+       %x_49 = OpVariable %_ptr_Function_v2float Function %42
+          %b = OpVariable %_ptr_Function_float Function %39
+         %47 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_3
+         %48 = OpLoad %float %47
+         %50 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %51 = OpLoad %float %50
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_4
+         %54 = OpLoad %float %53
+         %55 = OpCompositeConstruct %_arr_float_uint_3 %48 %51 %54
+         %56 = OpCompositeConstruct %S %55
+               OpStore %obj %56
+         %57 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %58 = OpLoad %float %57
+         %60 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpConvertFToS %int %58
+         %63 = OpAccessChain %_ptr_Function_float %obj %uint_0 %62
+               OpStore %63 %61
+         %64 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %67 = OpLoad %float %66
+         %68 = OpFOrdGreaterThan %bool %65 %67
+               OpSelectionMerge %70 None
+               OpBranchConditional %68 %71 %72
+         %71 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_v2float %x_9 %uint_0
+         %75 = OpLoad %v2float %74
+               OpStore %x_49 %75
+               OpBranch %70
+         %72 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_v2float %x_12 %uint_0
+         %77 = OpLoad %v2float %76
+               OpStore %x_49 %77
+               OpBranch %70
+         %70 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_float %x_49 %uint_1
+         %80 = OpLoad %float %79
+               OpStore %a %80
+         %81 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %82 = OpLoad %float %81
+         %83 = OpLoad %float %a
+         %85 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Function_float %obj %uint_0 %86
+         %88 = OpLoad %float %87
+         %89 = OpExtInst %float %90 FMix %82 %83 %88
+               OpStore %b %89
+         %91 = OpLoad %float %b
+         %92 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_2
+         %93 = OpLoad %float %92
+         %95 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %96 = OpLoad %float %95
+         %97 = OpExtInst %float %90 Distance %91 %93
+         %98 = OpFOrdLessThan %bool %97 %96
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_0
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_1
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_1
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_0
+        %109 = OpLoad %int %108
+        %110 = OpConvertSToF %float %103
+        %111 = OpConvertSToF %float %105
+        %112 = OpConvertSToF %float %107
+        %113 = OpConvertSToF %float %109
+        %114 = OpCompositeConstruct %v4float %110 %111 %112 %113
+               OpStore %x_GLF_color %114
+               OpBranch %99
+        %101 = OpLabel
+        %115 = OpAccessChain %_ptr_Uniform_int %x_15 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %117 %117 %117 %117
+               OpStore %x_GLF_color %118
+               OpBranch %99
+         %99 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %119
+%tint_symbol = OpFunctionParameter %main_out
+        %123 = OpLabel
+        %124 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %124
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+        %126 = OpLabel
+        %127 = OpFunctionCall %void %main_1
+        %129 = OpLoad %v4float %x_GLF_color
+        %130 = OpCompositeConstruct %main_out %129
+        %128 = OpFunctionCall %void %tint_symbol_2 %130
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..57db954
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,93 @@
+struct S {
+  numbers : array<f32, 3>;
+};
+
+type Arr = [[stride(16)]] array<f32, 5>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zeroVec : vec2<f32>;
+};
+
+[[block]]
+struct buf3 {
+  oneVec : vec2<f32>;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+
+[[group(0), binding(3)]] var<uniform> x_12 : buf3;
+
+[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var obj : S;
+  var a : f32;
+  var x_49 : vec2<f32>;
+  var b : f32;
+  let x_51 : f32 = x_7.x_GLF_uniform_float_values[3];
+  let x_53 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_55 : f32 = x_7.x_GLF_uniform_float_values[4];
+  obj = S(array<f32, 3>(x_51, x_53, x_55));
+  let x_59 : f32 = x_9.zeroVec.x;
+  let x_62 : f32 = x_7.x_GLF_uniform_float_values[0];
+  obj.numbers[i32(x_59)] = x_62;
+  let x_65 : f32 = x_9.zeroVec.x;
+  let x_67 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_65 > x_67)) {
+    let x_73 : vec2<f32> = x_9.zeroVec;
+    x_49 = x_73;
+  } else {
+    let x_75 : vec2<f32> = x_12.oneVec;
+    x_49 = x_75;
+  }
+  let x_77 : f32 = x_49.y;
+  a = x_77;
+  let x_79 : f32 = x_7.x_GLF_uniform_float_values[0];
+  let x_80 : f32 = a;
+  let x_82 : i32 = x_15.x_GLF_uniform_int_values[0];
+  let x_84 : f32 = obj.numbers[x_82];
+  b = mix(x_79, x_80, x_84);
+  let x_86 : f32 = b;
+  let x_88 : f32 = x_7.x_GLF_uniform_float_values[2];
+  let x_91 : f32 = x_7.x_GLF_uniform_float_values[1];
+  if ((distance(x_86, x_88) < x_91)) {
+    let x_97 : i32 = x_15.x_GLF_uniform_int_values[0];
+    let x_100 : i32 = x_15.x_GLF_uniform_int_values[1];
+    let x_103 : i32 = x_15.x_GLF_uniform_int_values[1];
+    let x_106 : i32 = x_15.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_97), f32(x_100), f32(x_103), f32(x_106));
+  } else {
+    let x_110 : i32 = x_15.x_GLF_uniform_int_values[1];
+    let x_111 : f32 = f32(x_110);
+    x_GLF_color = vec4<f32>(x_111, x_111, x_111, x_111);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm
new file mode 100644
index 0000000..37786d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm
@@ -0,0 +1,115 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "resolution"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__1 ""
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__1 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %39 = OpLoad %float %38
+         %40 = OpFMul %float %37 %39
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %44 = OpLoad %float %43
+         %45 = OpExtInst %float %1 Round %44
+         %46 = OpFMul %float %42 %45
+         %47 = OpFAdd %float %40 %46
+         %48 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %49 = OpLoad %float %48
+         %50 = OpFAdd %float %47 %49
+               OpStore %f %50
+         %51 = OpLoad %float %f
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdEqual %bool %51 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %62
+         %64 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpCompositeConstruct %v4float %60 %63 %66 %69
+               OpStore %_GLF_color %70
+               OpBranch %55
+         %57 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpCompositeConstruct %v4float %73 %73 %73 %73
+               OpStore %_GLF_color %74
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3d8d1c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,51 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_8 : register(b2, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  const float x_37 = asfloat(x_6[1].x);
+  const float x_39 = asfloat(x_8[0].x);
+  const float x_42 = asfloat(x_6[2].x);
+  const float x_44 = asfloat(x_8[0].x);
+  const float x_49 = asfloat(x_8[0].y);
+  f = (((x_37 * x_39) + (x_42 * round(x_44))) + x_49);
+  const float x_51 = f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_53 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_51 == x_53)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_62 = asint(x_10[1].x);
+    const int x_65 = asint(x_10[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_68 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_59), float(x_62), float(x_65), float(x_68));
+  } else {
+    const int x_72 = asint(x_10[1].x);
+    const float x_73 = float(x_72);
+    x_GLF_color = float4(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..16e16b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf2& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_39 = x_8.resolution.x;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_44 = x_8.resolution.x;
+  float const x_49 = x_8.resolution.y;
+  f = (((x_37 * x_39) + (x_42 * rint(x_44))) + x_49);
+  float const x_51 = f;
+  float const x_53 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_51 == x_53)) {
+    int const x_59 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_62 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_68 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_59), float(x_62), float(x_65), float(x_68));
+  } else {
+    int const x_72 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_73 = float(x_72);
+    *(tint_symbol_4) = float4(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf2& x_8 [[buffer(2)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..c5cc68e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 91
+; Schema: 0
+               OpCapability Shader
+         %48 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "resolution"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_8 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %79 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %24
+         %27 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %30
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %37 = OpLoad %float %36
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %45 = OpLoad %float %44
+         %46 = OpFMul %float %35 %37
+         %47 = OpExtInst %float %48 RoundEven %42
+         %49 = OpFMul %float %40 %47
+         %50 = OpFAdd %float %46 %49
+         %51 = OpFAdd %float %50 %45
+               OpStore %f %51
+         %52 = OpLoad %float %f
+         %54 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpFOrdEqual %bool %52 %55
+               OpSelectionMerge %58 None
+               OpBranchConditional %56 %59 %60
+         %59 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %63
+         %71 = OpConvertSToF %float %65
+         %72 = OpConvertSToF %float %67
+         %73 = OpConvertSToF %float %69
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+               OpStore %x_GLF_color %74
+               OpBranch %58
+         %60 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %76
+         %78 = OpCompositeConstruct %v4float %77 %77 %77 %77
+               OpStore %x_GLF_color %78
+               OpBranch %58
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %79
+%tint_symbol = OpFunctionParameter %main_out
+         %83 = OpLabel
+         %84 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %84
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %86 = OpLabel
+         %87 = OpFunctionCall %void %main_1
+         %89 = OpLoad %v4float %x_GLF_color
+         %90 = OpCompositeConstruct %main_out %89
+         %88 = OpFunctionCall %void %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..9b46e47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  resolution : vec2<f32>;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var f : f32;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_39 : f32 = x_8.resolution.x;
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_44 : f32 = x_8.resolution.x;
+  let x_49 : f32 = x_8.resolution.y;
+  f = (((x_37 * x_39) + (x_42 * round(x_44))) + x_49);
+  let x_51 : f32 = f;
+  let x_53 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_51 == x_53)) {
+    let x_59 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_68 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_59), f32(x_62), f32(x_65), f32(x_68));
+  } else {
+    let x_72 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_73 : f32 = f32(x_72);
+    x_GLF_color = vec4<f32>(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
new file mode 100644
index 0000000..9b46e47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  resolution : vec2<f32>;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var f : f32;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_39 : f32 = x_8.resolution.x;
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_44 : f32 = x_8.resolution.x;
+  let x_49 : f32 = x_8.resolution.y;
+  f = (((x_37 * x_39) + (x_42 * round(x_44))) + x_49);
+  let x_51 : f32 = f;
+  let x_53 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_51 == x_53)) {
+    let x_59 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_68 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_59), f32(x_62), f32(x_65), f32(x_68));
+  } else {
+    let x_72 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_73 : f32 = f32(x_72);
+    x_GLF_color = vec4<f32>(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3d8d1c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,51 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_8 : register(b2, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  const float x_37 = asfloat(x_6[1].x);
+  const float x_39 = asfloat(x_8[0].x);
+  const float x_42 = asfloat(x_6[2].x);
+  const float x_44 = asfloat(x_8[0].x);
+  const float x_49 = asfloat(x_8[0].y);
+  f = (((x_37 * x_39) + (x_42 * round(x_44))) + x_49);
+  const float x_51 = f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_53 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_51 == x_53)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_62 = asint(x_10[1].x);
+    const int x_65 = asint(x_10[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_68 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_59), float(x_62), float(x_65), float(x_68));
+  } else {
+    const int x_72 = asint(x_10[1].x);
+    const float x_73 = float(x_72);
+    x_GLF_color = float4(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..16e16b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf2& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  float const x_37 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float const x_39 = x_8.resolution.x;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  float const x_44 = x_8.resolution.x;
+  float const x_49 = x_8.resolution.y;
+  f = (((x_37 * x_39) + (x_42 * rint(x_44))) + x_49);
+  float const x_51 = f;
+  float const x_53 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_51 == x_53)) {
+    int const x_59 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_62 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_65 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_68 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_59), float(x_62), float(x_65), float(x_68));
+  } else {
+    int const x_72 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_73 = float(x_72);
+    *(tint_symbol_4) = float4(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf2& x_8 [[buffer(2)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..c5cc68e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 91
+; Schema: 0
+               OpCapability Shader
+         %48 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "resolution"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_8 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %79 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %24
+         %27 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %30
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %37 = OpLoad %float %36
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %42 = OpLoad %float %41
+         %44 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %45 = OpLoad %float %44
+         %46 = OpFMul %float %35 %37
+         %47 = OpExtInst %float %48 RoundEven %42
+         %49 = OpFMul %float %40 %47
+         %50 = OpFAdd %float %46 %49
+         %51 = OpFAdd %float %50 %45
+               OpStore %f %51
+         %52 = OpLoad %float %f
+         %54 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpFOrdEqual %bool %52 %55
+               OpSelectionMerge %58 None
+               OpBranchConditional %56 %59 %60
+         %59 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %63
+         %71 = OpConvertSToF %float %65
+         %72 = OpConvertSToF %float %67
+         %73 = OpConvertSToF %float %69
+         %74 = OpCompositeConstruct %v4float %70 %71 %72 %73
+               OpStore %x_GLF_color %74
+               OpBranch %58
+         %60 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %76 = OpLoad %int %75
+         %77 = OpConvertSToF %float %76
+         %78 = OpCompositeConstruct %v4float %77 %77 %77 %77
+               OpStore %x_GLF_color %78
+               OpBranch %58
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %79
+%tint_symbol = OpFunctionParameter %main_out
+         %83 = OpLabel
+         %84 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %84
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %86 = OpLabel
+         %87 = OpFunctionCall %void %main_1
+         %89 = OpLoad %v4float %x_GLF_color
+         %90 = OpCompositeConstruct %main_out %89
+         %88 = OpFunctionCall %void %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..9b46e47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,61 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  resolution : vec2<f32>;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var f : f32;
+  let x_37 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_39 : f32 = x_8.resolution.x;
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[2];
+  let x_44 : f32 = x_8.resolution.x;
+  let x_49 : f32 = x_8.resolution.y;
+  f = (((x_37 * x_39) + (x_42 * round(x_44))) + x_49);
+  let x_51 : f32 = f;
+  let x_53 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_51 == x_53)) {
+    let x_59 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_62 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_65 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_68 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_59), f32(x_62), f32(x_65), f32(x_68));
+  } else {
+    let x_72 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_73 : f32 = f32(x_72);
+    x_GLF_color = vec4<f32>(x_73, x_73, x_73, x_73);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm
new file mode 100644
index 0000000..c742a25
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm
@@ -0,0 +1,152 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %color "color"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %j "j"
+               OpName %k "k"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+         %20 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %15
+         %35 = OpLabel
+      %color = OpVariable %_ptr_Function_v4float Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+          %k = OpVariable %_ptr_Function_int Function
+               OpStore %color %20
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %37 = OpLoad %int %36
+               OpStore %i %37
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpLoad %int %i
+         %43 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpSLessThan %bool %42 %44
+               OpBranchConditional %45 %46 %39
+         %46 = OpLabel
+         %47 = OpLoad %int %i
+               OpSelectionMerge %48 None
+               OpSwitch %47 %48 1 %49 2 %50
+         %49 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %52 = OpLoad %int %51
+               OpStore %j %52
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %int %i
+         %58 = OpLoad %int %i
+         %59 = OpSGreaterThan %bool %57 %58
+               OpBranchConditional %59 %60 %54
+         %60 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %62 = OpLoad %int %61
+               OpStore %k %62
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpLoad %int %k
+         %68 = OpLoad %int %i
+         %69 = OpSLessThan %bool %67 %68
+               OpBranchConditional %69 %70 %64
+         %70 = OpLabel
+         %71 = OpLoad %int %k
+         %72 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Function_float %color %71
+               OpStore %74 %73
+               OpBranch %65
+         %65 = OpLabel
+         %75 = OpLoad %int %k
+         %76 = OpIAdd %int %75 %int_1
+               OpStore %k %76
+               OpBranch %63
+         %64 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %77 = OpLoad %int %j
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %j %78
+               OpBranch %53
+         %54 = OpLabel
+         %79 = OpLoad %int %i
+         %80 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Function_float %color %79
+               OpStore %82 %81
+               OpBranch %48
+         %50 = OpLabel
+         %83 = OpLoad %int %i
+         %84 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Function_float %color %83
+               OpStore %86 %85
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %87 = OpLoad %int %i
+         %88 = OpIAdd %int %87 %int_1
+               OpStore %i %88
+               OpBranch %38
+         %39 = OpLabel
+         %89 = OpLoad %v4float %color
+               OpStore %_GLF_color %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..8dae79c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,86 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  int j = 0;
+  int k = 0;
+  color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_37 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  i = x_37;
+  while (true) {
+    const int x_42 = i;
+    const int x_44 = asint(x_7[1].x);
+    if ((x_42 < x_44)) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 2: {
+        const int x_83 = i;
+        const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+        const float x_85 = asfloat(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+        set_float4(color, x_83, x_85);
+        break;
+      }
+      case 1: {
+        const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+        const int x_52 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        j = x_52;
+        {
+          for(; (i > i); j = (j + 1)) {
+            const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+            const int x_62 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+            k = x_62;
+            {
+              for(; (k < i); k = (k + 1)) {
+                const int x_71 = k;
+                const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+                const float x_73 = asfloat(x_11[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+                set_float4(color, x_71, x_73);
+              }
+            }
+          }
+        }
+        const int x_79 = i;
+        const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+        const float x_81 = asfloat(x_11[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+        set_float4(color, x_79, x_81);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  x_GLF_color = color;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..82cc6ae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_11, thread float4* const tint_symbol_4) {
+  float4 color = 0.0f;
+  int i = 0;
+  int j = 0;
+  int k = 0;
+  color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  int const x_37 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  i = x_37;
+  while (true) {
+    int const x_42 = i;
+    int const x_44 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_42 < x_44)) {
+    } else {
+      break;
+    }
+    int const x_47 = i;
+    switch(x_47) {
+      case 2: {
+        int const x_83 = i;
+        float const x_85 = x_11.x_GLF_uniform_float_values.arr[0].el;
+        color[x_83] = x_85;
+        break;
+      }
+      case 1: {
+        int const x_52 = x_7.x_GLF_uniform_int_values.arr[0].el;
+        j = x_52;
+        while (true) {
+          int const x_57 = i;
+          int const x_58 = i;
+          if ((x_57 > x_58)) {
+          } else {
+            break;
+          }
+          int const x_62 = x_7.x_GLF_uniform_int_values.arr[0].el;
+          k = x_62;
+          while (true) {
+            int const x_67 = k;
+            int const x_68 = i;
+            if ((x_67 < x_68)) {
+            } else {
+              break;
+            }
+            int const x_71 = k;
+            float const x_73 = x_11.x_GLF_uniform_float_values.arr[0].el;
+            color[x_71] = x_73;
+            {
+              int const x_75 = k;
+              k = (x_75 + 1);
+            }
+          }
+          {
+            int const x_77 = j;
+            j = (x_77 + 1);
+          }
+        }
+        int const x_79 = i;
+        float const x_81 = x_11.x_GLF_uniform_float_values.arr[0].el;
+        color[x_79] = x_81;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_87 = i;
+      i = (x_87 + 1);
+    }
+  }
+  float4 const x_89 = color;
+  *(tint_symbol_4) = x_89;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, x_11, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3cdb9a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,203 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 113
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %color "color"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %k "k"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %32 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+        %101 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+      %color = OpVariable %_ptr_Function_v4float Function %17
+          %i = OpVariable %_ptr_Function_int Function %28
+          %j = OpVariable %_ptr_Function_int Function %28
+          %k = OpVariable %_ptr_Function_int Function %28
+               OpStore %color %32
+         %36 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %37 = OpLoad %int %36
+               OpStore %i %37
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpLoad %int %i
+         %44 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpSLessThan %bool %42 %45
+               OpSelectionMerge %48 None
+               OpBranchConditional %46 %49 %50
+         %49 = OpLabel
+               OpBranch %48
+         %50 = OpLabel
+               OpBranch %39
+         %48 = OpLabel
+         %51 = OpLoad %int %i
+               OpSelectionMerge %52 None
+               OpSwitch %51 %53 2 %54 1 %55
+         %54 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %61 = OpAccessChain %_ptr_Function_float %color %56
+               OpStore %61 %59
+               OpBranch %52
+         %55 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %63 = OpLoad %int %62
+               OpStore %j %63
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpLoad %int %i
+         %70 = OpSGreaterThan %bool %68 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %65
+         %71 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %75 = OpLoad %int %74
+               OpStore %k %75
+               OpBranch %76
+         %76 = OpLabel
+               OpLoopMerge %77 %78 None
+               OpBranch %79
+         %79 = OpLabel
+         %80 = OpLoad %int %k
+         %81 = OpLoad %int %i
+         %82 = OpSLessThan %bool %80 %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %77
+         %83 = OpLabel
+         %86 = OpLoad %int %k
+         %87 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Function_float %color %86
+               OpStore %89 %88
+               OpBranch %78
+         %78 = OpLabel
+         %90 = OpLoad %int %k
+         %91 = OpIAdd %int %90 %int_1
+               OpStore %k %91
+               OpBranch %76
+         %77 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+         %92 = OpLoad %int %j
+         %93 = OpIAdd %int %92 %int_1
+               OpStore %j %93
+               OpBranch %64
+         %65 = OpLabel
+         %94 = OpLoad %int %i
+         %95 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %96 = OpLoad %float %95
+         %97 = OpAccessChain %_ptr_Function_float %color %94
+               OpStore %97 %96
+               OpBranch %52
+         %53 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %98 = OpLoad %int %i
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %i %99
+               OpBranch %38
+         %39 = OpLabel
+        %100 = OpLoad %v4float %color
+               OpStore %x_GLF_color %100
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %101
+%tint_symbol = OpFunctionParameter %main_out
+        %105 = OpLabel
+        %106 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %106
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %108 = OpLabel
+        %109 = OpFunctionCall %void %main_1
+        %111 = OpLoad %v4float %x_GLF_color
+        %112 = OpCompositeConstruct %main_out %111
+        %110 = OpFunctionCall %void %tint_symbol_2 %112
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..69896d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,104 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var color : vec4<f32>;
+  var i : i32;
+  var j : i32;
+  var k : i32;
+  color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  let x_37 : i32 = x_7.x_GLF_uniform_int_values[0];
+  i = x_37;
+  loop {
+    let x_42 : i32 = i;
+    let x_44 : i32 = x_7.x_GLF_uniform_int_values[1];
+    if ((x_42 < x_44)) {
+    } else {
+      break;
+    }
+    let x_47 : i32 = i;
+    switch(x_47) {
+      case 2: {
+        let x_83 : i32 = i;
+        let x_85 : f32 = x_11.x_GLF_uniform_float_values[0];
+        color[x_83] = x_85;
+      }
+      case 1: {
+        let x_52 : i32 = x_7.x_GLF_uniform_int_values[0];
+        j = x_52;
+        loop {
+          let x_57 : i32 = i;
+          let x_58 : i32 = i;
+          if ((x_57 > x_58)) {
+          } else {
+            break;
+          }
+          let x_62 : i32 = x_7.x_GLF_uniform_int_values[0];
+          k = x_62;
+          loop {
+            let x_67 : i32 = k;
+            let x_68 : i32 = i;
+            if ((x_67 < x_68)) {
+            } else {
+              break;
+            }
+            let x_71 : i32 = k;
+            let x_73 : f32 = x_11.x_GLF_uniform_float_values[0];
+            color[x_71] = x_73;
+
+            continuing {
+              let x_75 : i32 = k;
+              k = (x_75 + 1);
+            }
+          }
+
+          continuing {
+            let x_77 : i32 = j;
+            j = (x_77 + 1);
+          }
+        }
+        let x_79 : i32 = i;
+        let x_81 : f32 = x_11.x_GLF_uniform_float_values[0];
+        color[x_79] = x_81;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_87 : i32 = i;
+      i = (x_87 + 1);
+    }
+  }
+  let x_89 : vec4<f32> = color;
+  x_GLF_color = x_89;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
new file mode 100644
index 0000000..69896d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
@@ -0,0 +1,104 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var color : vec4<f32>;
+  var i : i32;
+  var j : i32;
+  var k : i32;
+  color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  let x_37 : i32 = x_7.x_GLF_uniform_int_values[0];
+  i = x_37;
+  loop {
+    let x_42 : i32 = i;
+    let x_44 : i32 = x_7.x_GLF_uniform_int_values[1];
+    if ((x_42 < x_44)) {
+    } else {
+      break;
+    }
+    let x_47 : i32 = i;
+    switch(x_47) {
+      case 2: {
+        let x_83 : i32 = i;
+        let x_85 : f32 = x_11.x_GLF_uniform_float_values[0];
+        color[x_83] = x_85;
+      }
+      case 1: {
+        let x_52 : i32 = x_7.x_GLF_uniform_int_values[0];
+        j = x_52;
+        loop {
+          let x_57 : i32 = i;
+          let x_58 : i32 = i;
+          if ((x_57 > x_58)) {
+          } else {
+            break;
+          }
+          let x_62 : i32 = x_7.x_GLF_uniform_int_values[0];
+          k = x_62;
+          loop {
+            let x_67 : i32 = k;
+            let x_68 : i32 = i;
+            if ((x_67 < x_68)) {
+            } else {
+              break;
+            }
+            let x_71 : i32 = k;
+            let x_73 : f32 = x_11.x_GLF_uniform_float_values[0];
+            color[x_71] = x_73;
+
+            continuing {
+              let x_75 : i32 = k;
+              k = (x_75 + 1);
+            }
+          }
+
+          continuing {
+            let x_77 : i32 = j;
+            j = (x_77 + 1);
+          }
+        }
+        let x_79 : i32 = i;
+        let x_81 : f32 = x_11.x_GLF_uniform_float_values[0];
+        color[x_79] = x_81;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_87 : i32 = i;
+      i = (x_87 + 1);
+    }
+  }
+  let x_89 : vec4<f32> = color;
+  x_GLF_color = x_89;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..8dae79c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,86 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  int j = 0;
+  int k = 0;
+  color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_37 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  i = x_37;
+  while (true) {
+    const int x_42 = i;
+    const int x_44 = asint(x_7[1].x);
+    if ((x_42 < x_44)) {
+    } else {
+      break;
+    }
+    switch(i) {
+      case 2: {
+        const int x_83 = i;
+        const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+        const float x_85 = asfloat(x_11[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+        set_float4(color, x_83, x_85);
+        break;
+      }
+      case 1: {
+        const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+        const int x_52 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        j = x_52;
+        {
+          for(; (i > i); j = (j + 1)) {
+            const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+            const int x_62 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+            k = x_62;
+            {
+              for(; (k < i); k = (k + 1)) {
+                const int x_71 = k;
+                const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+                const float x_73 = asfloat(x_11[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+                set_float4(color, x_71, x_73);
+              }
+            }
+          }
+        }
+        const int x_79 = i;
+        const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+        const float x_81 = asfloat(x_11[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+        set_float4(color, x_79, x_81);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  x_GLF_color = color;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..82cc6ae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, constant buf1& x_11, thread float4* const tint_symbol_4) {
+  float4 color = 0.0f;
+  int i = 0;
+  int j = 0;
+  int k = 0;
+  color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  int const x_37 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  i = x_37;
+  while (true) {
+    int const x_42 = i;
+    int const x_44 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_42 < x_44)) {
+    } else {
+      break;
+    }
+    int const x_47 = i;
+    switch(x_47) {
+      case 2: {
+        int const x_83 = i;
+        float const x_85 = x_11.x_GLF_uniform_float_values.arr[0].el;
+        color[x_83] = x_85;
+        break;
+      }
+      case 1: {
+        int const x_52 = x_7.x_GLF_uniform_int_values.arr[0].el;
+        j = x_52;
+        while (true) {
+          int const x_57 = i;
+          int const x_58 = i;
+          if ((x_57 > x_58)) {
+          } else {
+            break;
+          }
+          int const x_62 = x_7.x_GLF_uniform_int_values.arr[0].el;
+          k = x_62;
+          while (true) {
+            int const x_67 = k;
+            int const x_68 = i;
+            if ((x_67 < x_68)) {
+            } else {
+              break;
+            }
+            int const x_71 = k;
+            float const x_73 = x_11.x_GLF_uniform_float_values.arr[0].el;
+            color[x_71] = x_73;
+            {
+              int const x_75 = k;
+              k = (x_75 + 1);
+            }
+          }
+          {
+            int const x_77 = j;
+            j = (x_77 + 1);
+          }
+        }
+        int const x_79 = i;
+        float const x_81 = x_11.x_GLF_uniform_float_values.arr[0].el;
+        color[x_79] = x_81;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      int const x_87 = i;
+      i = (x_87 + 1);
+    }
+  }
+  float4 const x_89 = color;
+  *(tint_symbol_4) = x_89;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, x_11, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3cdb9a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,203 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 113
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %color "color"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %k "k"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %32 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+        %101 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+      %color = OpVariable %_ptr_Function_v4float Function %17
+          %i = OpVariable %_ptr_Function_int Function %28
+          %j = OpVariable %_ptr_Function_int Function %28
+          %k = OpVariable %_ptr_Function_int Function %28
+               OpStore %color %32
+         %36 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %37 = OpLoad %int %36
+               OpStore %i %37
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpLoad %int %i
+         %44 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpSLessThan %bool %42 %45
+               OpSelectionMerge %48 None
+               OpBranchConditional %46 %49 %50
+         %49 = OpLabel
+               OpBranch %48
+         %50 = OpLabel
+               OpBranch %39
+         %48 = OpLabel
+         %51 = OpLoad %int %i
+               OpSelectionMerge %52 None
+               OpSwitch %51 %53 2 %54 1 %55
+         %54 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %61 = OpAccessChain %_ptr_Function_float %color %56
+               OpStore %61 %59
+               OpBranch %52
+         %55 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %63 = OpLoad %int %62
+               OpStore %j %63
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpLoad %int %i
+         %70 = OpSGreaterThan %bool %68 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %65
+         %71 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %75 = OpLoad %int %74
+               OpStore %k %75
+               OpBranch %76
+         %76 = OpLabel
+               OpLoopMerge %77 %78 None
+               OpBranch %79
+         %79 = OpLabel
+         %80 = OpLoad %int %k
+         %81 = OpLoad %int %i
+         %82 = OpSLessThan %bool %80 %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %77
+         %83 = OpLabel
+         %86 = OpLoad %int %k
+         %87 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Function_float %color %86
+               OpStore %89 %88
+               OpBranch %78
+         %78 = OpLabel
+         %90 = OpLoad %int %k
+         %91 = OpIAdd %int %90 %int_1
+               OpStore %k %91
+               OpBranch %76
+         %77 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+         %92 = OpLoad %int %j
+         %93 = OpIAdd %int %92 %int_1
+               OpStore %j %93
+               OpBranch %64
+         %65 = OpLabel
+         %94 = OpLoad %int %i
+         %95 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %int_0
+         %96 = OpLoad %float %95
+         %97 = OpAccessChain %_ptr_Function_float %color %94
+               OpStore %97 %96
+               OpBranch %52
+         %53 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %98 = OpLoad %int %i
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %i %99
+               OpBranch %38
+         %39 = OpLabel
+        %100 = OpLoad %v4float %color
+               OpStore %x_GLF_color %100
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %101
+%tint_symbol = OpFunctionParameter %main_out
+        %105 = OpLabel
+        %106 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %106
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %108 = OpLabel
+        %109 = OpFunctionCall %void %main_1
+        %111 = OpLoad %v4float %x_GLF_color
+        %112 = OpCompositeConstruct %main_out %111
+        %110 = OpFunctionCall %void %tint_symbol_2 %112
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..69896d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,104 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var color : vec4<f32>;
+  var i : i32;
+  var j : i32;
+  var k : i32;
+  color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  let x_37 : i32 = x_7.x_GLF_uniform_int_values[0];
+  i = x_37;
+  loop {
+    let x_42 : i32 = i;
+    let x_44 : i32 = x_7.x_GLF_uniform_int_values[1];
+    if ((x_42 < x_44)) {
+    } else {
+      break;
+    }
+    let x_47 : i32 = i;
+    switch(x_47) {
+      case 2: {
+        let x_83 : i32 = i;
+        let x_85 : f32 = x_11.x_GLF_uniform_float_values[0];
+        color[x_83] = x_85;
+      }
+      case 1: {
+        let x_52 : i32 = x_7.x_GLF_uniform_int_values[0];
+        j = x_52;
+        loop {
+          let x_57 : i32 = i;
+          let x_58 : i32 = i;
+          if ((x_57 > x_58)) {
+          } else {
+            break;
+          }
+          let x_62 : i32 = x_7.x_GLF_uniform_int_values[0];
+          k = x_62;
+          loop {
+            let x_67 : i32 = k;
+            let x_68 : i32 = i;
+            if ((x_67 < x_68)) {
+            } else {
+              break;
+            }
+            let x_71 : i32 = k;
+            let x_73 : f32 = x_11.x_GLF_uniform_float_values[0];
+            color[x_71] = x_73;
+
+            continuing {
+              let x_75 : i32 = k;
+              k = (x_75 + 1);
+            }
+          }
+
+          continuing {
+            let x_77 : i32 = j;
+            j = (x_77 + 1);
+          }
+        }
+        let x_79 : i32 = i;
+        let x_81 : f32 = x_11.x_GLF_uniform_float_values[0];
+        color[x_79] = x_81;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      let x_87 : i32 = i;
+      i = (x_87 + 1);
+    }
+  }
+  let x_89 : vec4<f32> = color;
+  x_GLF_color = x_89;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm
new file mode 100644
index 0000000..9adfcd1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm
@@ -0,0 +1,157 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %__0 ""
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__1 ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 0
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+%_ptr_Function_int = OpTypePointer Function %int
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__1 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %19
+         %36 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpCompositeConstruct %v4float %38 %38 %38 %38
+               OpStore %_GLF_color %39
+         %40 = OpAccessChain %_ptr_Uniform_float %__0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpFOrdGreaterThan %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpCompositeConstruct %v4float %53 %53 %53 %53
+               OpStore %_GLF_color %54
+               OpBranch %50
+         %50 = OpLabel
+               OpBranchConditional %true %48 %49
+         %49 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+               OpBranchConditional %true %63 %60
+         %63 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %13 = OpLoad %int %64
+               OpStore %i %13
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %14 = OpLoad %int %i
+         %69 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %15 = OpLoad %int %69
+         %70 = OpSLessThan %bool %14 %15
+               OpBranchConditional %70 %71 %66
+         %71 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %79 = OpLoad %float %78
+         %80 = OpCompositeConstruct %v4float %73 %75 %77 %79
+               OpStore %_GLF_color %80
+               OpBranch %67
+         %67 = OpLabel
+         %16 = OpLoad %int %i
+         %17 = OpIAdd %int %16 %int_1
+               OpStore %i %17
+               OpBranch %65
+         %66 = OpLabel
+               OpBranch %60
+         %61 = OpLabel
+               OpBranch %59
+         %60 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_float %__0 %int_0
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %84 = OpLoad %float %83
+         %85 = OpFOrdGreaterThan %bool %82 %84
+               OpBranchConditional %85 %55 %56
+         %56 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.hlsl
new file mode 100755
index 0000000..1653b58
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,95 @@
+SKIP: FAILED
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b1, space0) {
+  uint4 x_5[2];
+};
+cbuffer cbuffer_x_7 : register(b2, space0) {
+  uint4 x_7[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+
+void main_1() {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 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 float x_43 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_41 > x_43)) {
+    while (true) {
+      const float x_53 = asfloat(x_5[1].x);
+      x_GLF_color = float4(x_53, x_53, x_53, x_53);
+      {
+        if (true) {
+        } else {
+          break;
+        }
+      }
+    }
+  } else {
+    while (true) {
+      while (true) {
+        if (true) {
+        } else {
+          break;
+        }
+        const int x_13 = asint(x_10[1].x);
+        i = x_13;
+        while (true) {
+          const int x_14 = i;
+          const uint scalar_offset_2 = ((16u * uint(0))) / 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 float x_75 = asfloat(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+          const uint scalar_offset_4 = ((16u * uint(0))) / 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);
+          {
+            i = (i + 1);
+          }
+        }
+        break;
+      }
+      {
+        const float x_82 = asfloat(x_7[0].x);
+        const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+        const float x_84 = asfloat(x_5[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+        if ((x_82 > x_84)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
+error: validation errors
+T:\tmp\uf58.0:82: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..126ce92
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,99 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ float zero;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_5, constant buf2& x_7, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  int i = 0;
+  float const x_38 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  *(tint_symbol_4) = float4(x_38, x_38, x_38, x_38);
+  float const x_41 = x_7.zero;
+  float const x_43 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_41 > x_43)) {
+    while (true) {
+      float const x_53 = x_5.x_GLF_uniform_float_values.arr[1].el;
+      *(tint_symbol_4) = float4(x_53, x_53, x_53, x_53);
+      {
+        if (true) {
+        } else {
+          break;
+        }
+      }
+    }
+  } else {
+    while (true) {
+      while (true) {
+        if (true) {
+        } else {
+          break;
+        }
+        int const x_13 = x_10.x_GLF_uniform_int_values.arr[1].el;
+        i = x_13;
+        while (true) {
+          int const x_14 = i;
+          int const x_15 = x_10.x_GLF_uniform_int_values.arr[0].el;
+          if ((x_14 < x_15)) {
+          } else {
+            break;
+          }
+          float const x_73 = x_5.x_GLF_uniform_float_values.arr[1].el;
+          float const x_75 = x_5.x_GLF_uniform_float_values.arr[0].el;
+          float const x_77 = x_5.x_GLF_uniform_float_values.arr[0].el;
+          float const x_79 = x_5.x_GLF_uniform_float_values.arr[1].el;
+          *(tint_symbol_4) = float4(x_73, x_75, x_77, x_79);
+          {
+            int const x_16 = i;
+            i = (x_16 + 1);
+          }
+        }
+        break;
+      }
+      {
+        float const x_82 = x_7.zero;
+        float const x_84 = x_5.x_GLF_uniform_float_values.arr[0].el;
+        if ((x_82 > x_84)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_5 [[buffer(1)]], constant buf2& x_7 [[buffer(2)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..cb7829c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,214 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_5 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_7 = OpVariable %_ptr_Uniform_buf2 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %100 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %28
+         %32 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %33 = OpLoad %float %32
+         %34 = OpCompositeConstruct %v4float %33 %33 %33 %33
+               OpStore %x_GLF_color %34
+         %35 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %36 = OpLoad %float %35
+         %37 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThan %bool %36 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %46 = OpLabel
+               OpSelectionMerge %53 None
+               OpBranchConditional %true %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %45
+         %53 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+               OpLoopMerge %61 %62 None
+               OpBranch %63
+         %63 = OpLabel
+               OpSelectionMerge %64 None
+               OpBranchConditional %true %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %61
+         %64 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %69 = OpLoad %int %68
+               OpStore %i %69
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpSLessThan %bool %74 %76
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %71
+         %78 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %86 = OpLoad %float %85
+         %87 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %88 = OpLoad %float %87
+         %89 = OpCompositeConstruct %v4float %82 %84 %86 %88
+               OpStore %x_GLF_color %89
+               OpBranch %72
+         %72 = OpLabel
+         %90 = OpLoad %int %i
+         %91 = OpIAdd %int %90 %int_1
+               OpStore %i %91
+               OpBranch %70
+         %71 = OpLabel
+               OpBranch %61
+         %62 = OpLabel
+               OpBranch %60
+         %61 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %95 = OpLoad %float %94
+         %96 = OpFOrdGreaterThan %bool %93 %95
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %99
+         %98 = OpLabel
+               OpBranch %97
+         %99 = OpLabel
+               OpBranch %57
+         %97 = OpLabel
+               OpBranch %56
+         %57 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %100
+%tint_symbol = OpFunctionParameter %main_out
+        %104 = OpLabel
+        %105 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %105
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %107 = OpLabel
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_2 %111
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 46[%46] is not post dominated by the back-edge block 53[%53]
+  %53 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..4b28ce8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,98 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zero : f32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_7 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var i : i32;
+  let x_38 : f32 = x_5.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_38, x_38, x_38, x_38);
+  let x_41 : f32 = x_7.zero;
+  let x_43 : f32 = x_5.x_GLF_uniform_float_values[0];
+  if ((x_41 > x_43)) {
+    loop {
+      let x_53 : f32 = x_5.x_GLF_uniform_float_values[1];
+      x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+
+      continuing {
+        if (true) {
+        } else {
+          break;
+        }
+      }
+    }
+  } else {
+    loop {
+      loop {
+        if (true) {
+        } else {
+          break;
+        }
+        let x_13 : i32 = x_10.x_GLF_uniform_int_values[1];
+        i = x_13;
+        loop {
+          let x_14 : i32 = i;
+          let x_15 : i32 = x_10.x_GLF_uniform_int_values[0];
+          if ((x_14 < x_15)) {
+          } else {
+            break;
+          }
+          let x_73 : f32 = x_5.x_GLF_uniform_float_values[1];
+          let x_75 : f32 = x_5.x_GLF_uniform_float_values[0];
+          let x_77 : f32 = x_5.x_GLF_uniform_float_values[0];
+          let x_79 : f32 = x_5.x_GLF_uniform_float_values[1];
+          x_GLF_color = vec4<f32>(x_73, x_75, x_77, x_79);
+
+          continuing {
+            let x_16 : i32 = i;
+            i = (x_16 + 1);
+          }
+        }
+        break;
+      }
+
+      continuing {
+        let x_82 : f32 = x_7.zero;
+        let x_84 : f32 = x_5.x_GLF_uniform_float_values[0];
+        if ((x_82 > x_84)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
new file mode 100644
index 0000000..4b28ce8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
@@ -0,0 +1,98 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zero : f32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_7 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var i : i32;
+  let x_38 : f32 = x_5.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_38, x_38, x_38, x_38);
+  let x_41 : f32 = x_7.zero;
+  let x_43 : f32 = x_5.x_GLF_uniform_float_values[0];
+  if ((x_41 > x_43)) {
+    loop {
+      let x_53 : f32 = x_5.x_GLF_uniform_float_values[1];
+      x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+
+      continuing {
+        if (true) {
+        } else {
+          break;
+        }
+      }
+    }
+  } else {
+    loop {
+      loop {
+        if (true) {
+        } else {
+          break;
+        }
+        let x_13 : i32 = x_10.x_GLF_uniform_int_values[1];
+        i = x_13;
+        loop {
+          let x_14 : i32 = i;
+          let x_15 : i32 = x_10.x_GLF_uniform_int_values[0];
+          if ((x_14 < x_15)) {
+          } else {
+            break;
+          }
+          let x_73 : f32 = x_5.x_GLF_uniform_float_values[1];
+          let x_75 : f32 = x_5.x_GLF_uniform_float_values[0];
+          let x_77 : f32 = x_5.x_GLF_uniform_float_values[0];
+          let x_79 : f32 = x_5.x_GLF_uniform_float_values[1];
+          x_GLF_color = vec4<f32>(x_73, x_75, x_77, x_79);
+
+          continuing {
+            let x_16 : i32 = i;
+            i = (x_16 + 1);
+          }
+        }
+        break;
+      }
+
+      continuing {
+        let x_82 : f32 = x_7.zero;
+        let x_84 : f32 = x_5.x_GLF_uniform_float_values[0];
+        if ((x_82 > x_84)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.hlsl
new file mode 100755
index 0000000..94afa1b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,95 @@
+SKIP: FAILED
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b1, space0) {
+  uint4 x_5[2];
+};
+cbuffer cbuffer_x_7 : register(b2, space0) {
+  uint4 x_7[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+
+void main_1() {
+  int i = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 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 float x_43 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_41 > x_43)) {
+    while (true) {
+      const float x_53 = asfloat(x_5[1].x);
+      x_GLF_color = float4(x_53, x_53, x_53, x_53);
+      {
+        if (true) {
+        } else {
+          break;
+        }
+      }
+    }
+  } else {
+    while (true) {
+      while (true) {
+        if (true) {
+        } else {
+          break;
+        }
+        const int x_13 = asint(x_10[1].x);
+        i = x_13;
+        while (true) {
+          const int x_14 = i;
+          const uint scalar_offset_2 = ((16u * uint(0))) / 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 float x_75 = asfloat(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+          const uint scalar_offset_4 = ((16u * uint(0))) / 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);
+          {
+            i = (i + 1);
+          }
+        }
+        break;
+      }
+      {
+        const float x_82 = asfloat(x_7[0].x);
+        const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+        const float x_84 = asfloat(x_5[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+        if ((x_82 > x_84)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
+error: validation errors
+T:\tmp\u4dc.0:82: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..126ce92
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,99 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf2 {
+  /* 0x0000 */ float zero;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_5, constant buf2& x_7, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  int i = 0;
+  float const x_38 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  *(tint_symbol_4) = float4(x_38, x_38, x_38, x_38);
+  float const x_41 = x_7.zero;
+  float const x_43 = x_5.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_41 > x_43)) {
+    while (true) {
+      float const x_53 = x_5.x_GLF_uniform_float_values.arr[1].el;
+      *(tint_symbol_4) = float4(x_53, x_53, x_53, x_53);
+      {
+        if (true) {
+        } else {
+          break;
+        }
+      }
+    }
+  } else {
+    while (true) {
+      while (true) {
+        if (true) {
+        } else {
+          break;
+        }
+        int const x_13 = x_10.x_GLF_uniform_int_values.arr[1].el;
+        i = x_13;
+        while (true) {
+          int const x_14 = i;
+          int const x_15 = x_10.x_GLF_uniform_int_values.arr[0].el;
+          if ((x_14 < x_15)) {
+          } else {
+            break;
+          }
+          float const x_73 = x_5.x_GLF_uniform_float_values.arr[1].el;
+          float const x_75 = x_5.x_GLF_uniform_float_values.arr[0].el;
+          float const x_77 = x_5.x_GLF_uniform_float_values.arr[0].el;
+          float const x_79 = x_5.x_GLF_uniform_float_values.arr[1].el;
+          *(tint_symbol_4) = float4(x_73, x_75, x_77, x_79);
+          {
+            int const x_16 = i;
+            i = (x_16 + 1);
+          }
+        }
+        break;
+      }
+      {
+        float const x_82 = x_7.zero;
+        float const x_84 = x_5.x_GLF_uniform_float_values.arr[0].el;
+        if ((x_82 > x_84)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_5 [[buffer(1)]], constant buf2& x_7 [[buffer(2)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, x_7, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..cb7829c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,214 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_5 "x_5"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "zero"
+               OpName %x_7 "x_7"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_5 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf2 = OpTypeStruct %float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_7 = OpVariable %_ptr_Uniform_buf2 Uniform
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+        %100 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %28
+         %32 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %33 = OpLoad %float %32
+         %34 = OpCompositeConstruct %v4float %33 %33 %33 %33
+               OpStore %x_GLF_color %34
+         %35 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %36 = OpLoad %float %35
+         %37 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThan %bool %36 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %50 = OpLoad %float %49
+         %51 = OpCompositeConstruct %v4float %50 %50 %50 %50
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %46 = OpLabel
+               OpSelectionMerge %53 None
+               OpBranchConditional %true %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %45
+         %53 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+               OpLoopMerge %61 %62 None
+               OpBranch %63
+         %63 = OpLabel
+               OpSelectionMerge %64 None
+               OpBranchConditional %true %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %61
+         %64 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %69 = OpLoad %int %68
+               OpStore %i %69
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpSLessThan %bool %74 %76
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %71
+         %78 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %86 = OpLoad %float %85
+         %87 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_1
+         %88 = OpLoad %float %87
+         %89 = OpCompositeConstruct %v4float %82 %84 %86 %88
+               OpStore %x_GLF_color %89
+               OpBranch %72
+         %72 = OpLabel
+         %90 = OpLoad %int %i
+         %91 = OpIAdd %int %90 %int_1
+               OpStore %i %91
+               OpBranch %70
+         %71 = OpLabel
+               OpBranch %61
+         %62 = OpLabel
+               OpBranch %60
+         %61 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %int_0
+         %95 = OpLoad %float %94
+         %96 = OpFOrdGreaterThan %bool %93 %95
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %99
+         %98 = OpLabel
+               OpBranch %97
+         %99 = OpLabel
+               OpBranch %57
+         %97 = OpLabel
+               OpBranch %56
+         %57 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %100
+%tint_symbol = OpFunctionParameter %main_out
+        %104 = OpLabel
+        %105 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %105
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %107 = OpLabel
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_2 %111
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 46[%46] is not post dominated by the back-edge block 53[%53]
+  %53 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..4b28ce8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,98 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf2 {
+  zero : f32;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_7 : buf2;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var i : i32;
+  let x_38 : f32 = x_5.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_38, x_38, x_38, x_38);
+  let x_41 : f32 = x_7.zero;
+  let x_43 : f32 = x_5.x_GLF_uniform_float_values[0];
+  if ((x_41 > x_43)) {
+    loop {
+      let x_53 : f32 = x_5.x_GLF_uniform_float_values[1];
+      x_GLF_color = vec4<f32>(x_53, x_53, x_53, x_53);
+
+      continuing {
+        if (true) {
+        } else {
+          break;
+        }
+      }
+    }
+  } else {
+    loop {
+      loop {
+        if (true) {
+        } else {
+          break;
+        }
+        let x_13 : i32 = x_10.x_GLF_uniform_int_values[1];
+        i = x_13;
+        loop {
+          let x_14 : i32 = i;
+          let x_15 : i32 = x_10.x_GLF_uniform_int_values[0];
+          if ((x_14 < x_15)) {
+          } else {
+            break;
+          }
+          let x_73 : f32 = x_5.x_GLF_uniform_float_values[1];
+          let x_75 : f32 = x_5.x_GLF_uniform_float_values[0];
+          let x_77 : f32 = x_5.x_GLF_uniform_float_values[0];
+          let x_79 : f32 = x_5.x_GLF_uniform_float_values[1];
+          x_GLF_color = vec4<f32>(x_73, x_75, x_77, x_79);
+
+          continuing {
+            let x_16 : i32 = i;
+            i = (x_16 + 1);
+          }
+        }
+        break;
+      }
+
+      continuing {
+        let x_82 : f32 = x_7.zero;
+        let x_84 : f32 = x_5.x_GLF_uniform_float_values[0];
+        if ((x_82 > x_84)) {
+        } else {
+          break;
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm
new file mode 100644
index 0000000..661ac09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm
@@ -0,0 +1,76 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %b "b"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_2 = OpConstant %float 2
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_1_89999998 = OpConstant %float 1.89999998
+       %bool = OpTypeBool
+%float_2_0999999 = OpConstant %float 2.0999999
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %30 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %10
+         %31 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+          %b = OpVariable %_ptr_Function_float Function
+         %32 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %33 = OpLoad %float %32
+         %34 = OpExtInst %float %1 Cos %33
+         %35 = OpDPdx %float %34
+               OpStore %a %35
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %37 = OpLoad %float %36
+         %38 = OpLoad %float %a
+         %39 = OpExtInst %float %1 FMix %float_2 %37 %38
+               OpStore %b %39
+         %40 = OpLoad %float %b
+         %41 = OpFOrdGreaterThanEqual %bool %40 %float_1_89999998
+         %42 = OpLoad %float %b
+         %43 = OpFOrdLessThanEqual %bool %42 %float_2_0999999
+         %44 = OpLogicalAnd %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %45
+         %47 = OpLabel
+               OpStore %_GLF_color %30
+               OpBranch %45
+         %45 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f5d4020
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  const float x_33 = gl_FragCoord.x;
+  a = ddx(cos(x_33));
+  const float x_37 = asfloat(x_8[0].x);
+  b = lerp(2.0f, x_37, a);
+  bool tint_tmp = (b >= 1.899999976f);
+  if (tint_tmp) {
+    tint_tmp = (b <= 2.099999905f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..31f4571
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float a = 0.0f;
+  float b = 0.0f;
+  float const x_33 = (*(tint_symbol_5)).x;
+  a = dfdx(cos(x_33));
+  float const x_37 = x_8.two;
+  float const x_38 = a;
+  b = mix(2.0f, x_37, x_38);
+  float const x_40 = b;
+  float const x_42 = b;
+  if (((x_40 >= 1.899999976f) && (x_42 <= 2.099999905f))) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7858785
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,116 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+         %29 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+%float_1_89999998 = OpConstant %float 1.89999998
+       %bool = OpTypeBool
+%float_2_0999999 = OpConstant %float 2.0999999
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %51 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %52 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+          %b = OpVariable %_ptr_Function_float Function %20
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpExtInst %float %29 Cos %26
+         %27 = OpDPdx %float %28
+               OpStore %a %27
+         %31 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpLoad %float %a
+         %34 = OpExtInst %float %29 FMix %float_2 %32 %33
+               OpStore %b %34
+         %36 = OpLoad %float %b
+         %37 = OpLoad %float %b
+         %39 = OpFOrdGreaterThanEqual %bool %36 %float_1_89999998
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %41
+         %42 = OpLabel
+         %44 = OpFOrdLessThanEqual %bool %37 %float_2_0999999
+               OpBranch %41
+         %41 = OpLabel
+         %45 = OpPhi %bool %39 %17 %44 %42
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %x_GLF_color %52
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %53
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %60 = OpLabel
+         %61 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %61
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_3 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7165a35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  two : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  let x_33 : f32 = gl_FragCoord.x;
+  a = dpdx(cos(x_33));
+  let x_37 : f32 = x_8.two;
+  let x_38 : f32 = a;
+  b = mix(2.0, x_37, x_38);
+  let x_40 : f32 = b;
+  let x_42 : f32 = b;
+  if (((x_40 >= 1.899999976) && (x_42 <= 2.099999905))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
new file mode 100644
index 0000000..7165a35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  two : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  let x_33 : f32 = gl_FragCoord.x;
+  a = dpdx(cos(x_33));
+  let x_37 : f32 = x_8.two;
+  let x_38 : f32 = a;
+  b = mix(2.0, x_37, x_38);
+  let x_40 : f32 = b;
+  let x_42 : f32 = b;
+  if (((x_40 >= 1.899999976) && (x_42 <= 2.099999905))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f5d4020
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,43 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float a = 0.0f;
+  float b = 0.0f;
+  const float x_33 = gl_FragCoord.x;
+  a = ddx(cos(x_33));
+  const float x_37 = asfloat(x_8[0].x);
+  b = lerp(2.0f, x_37, a);
+  bool tint_tmp = (b >= 1.899999976f);
+  if (tint_tmp) {
+    tint_tmp = (b <= 2.099999905f);
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..31f4571
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float a = 0.0f;
+  float b = 0.0f;
+  float const x_33 = (*(tint_symbol_5)).x;
+  a = dfdx(cos(x_33));
+  float const x_37 = x_8.two;
+  float const x_38 = a;
+  b = mix(2.0f, x_37, x_38);
+  float const x_40 = b;
+  float const x_42 = b;
+  if (((x_40 >= 1.899999976f) && (x_42 <= 2.099999905f))) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7858785
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,116 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+         %29 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %20 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+%float_1_89999998 = OpConstant %float 1.89999998
+       %bool = OpTypeBool
+%float_2_0999999 = OpConstant %float 2.0999999
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %51 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %52 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %20
+          %b = OpVariable %_ptr_Function_float Function %20
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpExtInst %float %29 Cos %26
+         %27 = OpDPdx %float %28
+               OpStore %a %27
+         %31 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpLoad %float %a
+         %34 = OpExtInst %float %29 FMix %float_2 %32 %33
+               OpStore %b %34
+         %36 = OpLoad %float %b
+         %37 = OpLoad %float %b
+         %39 = OpFOrdGreaterThanEqual %bool %36 %float_1_89999998
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %41
+         %42 = OpLabel
+         %44 = OpFOrdLessThanEqual %bool %37 %float_2_0999999
+               OpBranch %41
+         %41 = OpLabel
+         %45 = OpPhi %bool %39 %17 %44 %42
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %x_GLF_color %51
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %x_GLF_color %52
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %53
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %60 = OpLabel
+         %61 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %61
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_3 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7165a35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  two : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : f32;
+  var b : f32;
+  let x_33 : f32 = gl_FragCoord.x;
+  a = dpdx(cos(x_33));
+  let x_37 : f32 = x_8.two;
+  let x_38 : f32 = a;
+  b = mix(2.0, x_37, x_38);
+  let x_40 : f32 = b;
+  let x_42 : f32 = b;
+  if (((x_40 >= 1.899999976) && (x_42 <= 2.099999905))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm
new file mode 100644
index 0000000..14facbb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm
@@ -0,0 +1,274 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_ "func(struct-S-i11;"
+               OpName %s "s"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %i_0 "i"
+               OpName %param "param"
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+         %21 = OpTypeFunction %void %_ptr_Function_S
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+     %uint_3 = OpConstant %uint 3
+%_arr_S_uint_3 = OpTypeArray %S %uint_3
+%_ptr_Function__arr_S_uint_3 = OpTypePointer Function %_arr_S_uint_3
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %18
+         %44 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+        %arr = OpVariable %_ptr_Function__arr_S_uint_3 Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_S Function
+          %j = OpVariable %_ptr_Function_int Function
+         %45 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %46 = OpLoad %int %45
+               OpStore %i %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpSLessThan %bool %51 %53
+               OpBranchConditional %54 %55 %48
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Function_int %arr %56 %int_0
+               OpStore %58 %57
+               OpBranch %49
+         %49 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpIAdd %int %59 %int_1
+               OpStore %i %60
+               OpBranch %47
+         %48 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %62 = OpLoad %int %61
+               OpStore %i_0 %62
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpLoad %int %i_0
+         %68 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %67 %69
+               OpBranchConditional %70 %71 %64
+         %71 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %75 = OpLoad %float %74
+         %76 = OpFOrdGreaterThan %bool %73 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+               OpBranch %64
+         %77 = OpLabel
+         %79 = OpLoad %int %i_0
+         %80 = OpAccessChain %_ptr_Function_int %arr %79 %int_0
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpIEqual %bool %81 %83
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+         %88 = OpLoad %int %i_0
+         %89 = OpExtInst %int %1 SClamp %88 %int_0 %int_3
+         %90 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %91 = OpLoad %int %90
+         %92 = OpAccessChain %_ptr_Function_int %arr %89 %int_0
+               OpStore %92 %91
+         %93 = OpAccessChain %_ptr_Function_S %arr %int_2
+         %94 = OpLoad %S %93
+               OpStore %param %94
+         %95 = OpFunctionCall %void %func_struct_S_i11_ %param
+         %96 = OpLoad %S %param
+         %97 = OpAccessChain %_ptr_Function_S %arr %int_2
+               OpStore %97 %96
+               OpBranch %85
+         %87 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %99 = OpLoad %int %98
+               OpStore %j %99
+               OpBranch %100
+        %100 = OpLabel
+               OpLoopMerge %101 %102 None
+               OpBranch %103
+        %103 = OpLabel
+        %104 = OpLoad %int %j
+        %105 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %106 = OpLoad %int %105
+        %107 = OpSLessThan %bool %104 %106
+               OpBranchConditional %107 %108 %101
+        %108 = OpLabel
+        %109 = OpLoad %int %j
+        %110 = OpAccessChain %_ptr_Function_int %arr %109 %int_0
+        %111 = OpLoad %int %110
+        %112 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_4
+        %113 = OpLoad %int %112
+        %114 = OpSGreaterThan %bool %111 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+               OpKill
+        %115 = OpLabel
+               OpBranch %102
+        %102 = OpLabel
+        %117 = OpLoad %int %j
+        %118 = OpIAdd %int %117 %int_1
+               OpStore %j %118
+               OpBranch %100
+        %101 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+        %119 = OpLoad %int %i_0
+        %120 = OpIAdd %int %119 %int_1
+               OpStore %i_0 %120
+               OpBranch %63
+         %64 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Function_int %arr %122 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %126 = OpLoad %int %125
+        %127 = OpIEqual %bool %124 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+        %130 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Function_int %arr %131 %int_0
+        %133 = OpLoad %int %132
+        %134 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %135 = OpLoad %int %134
+        %136 = OpIEqual %bool %133 %135
+               OpBranch %128
+        %128 = OpLabel
+        %137 = OpPhi %bool %127 %64 %136 %129
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+        %140 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+        %141 = OpLoad %int %140
+        %142 = OpAccessChain %_ptr_Function_int %arr %141 %int_0
+        %143 = OpLoad %int %142
+        %144 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %145 = OpLoad %int %144
+        %146 = OpIEqual %bool %143 %145
+               OpBranch %138
+        %138 = OpLabel
+        %147 = OpPhi %bool %137 %128 %146 %139
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %150
+        %149 = OpLabel
+        %151 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %152 = OpLoad %int %151
+        %153 = OpConvertSToF %float %152
+        %154 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %155 = OpLoad %int %154
+        %156 = OpConvertSToF %float %155
+        %157 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %158 = OpLoad %int %157
+        %159 = OpConvertSToF %float %158
+        %160 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %161 = OpLoad %int %160
+        %162 = OpConvertSToF %float %161
+        %163 = OpCompositeConstruct %v4float %153 %156 %159 %162
+               OpStore %_GLF_color %163
+               OpBranch %148
+        %150 = OpLabel
+        %164 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+        %165 = OpLoad %int %164
+        %166 = OpConvertSToF %float %165
+        %167 = OpCompositeConstruct %v4float %166 %166 %166 %166
+               OpStore %_GLF_color %167
+               OpBranch %148
+        %148 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_struct_S_i11_ = OpFunction %void None %21
+          %s = OpFunctionParameter %_ptr_Function_S
+        %168 = OpLabel
+               OpBranch %169
+        %169 = OpLabel
+               OpLoopMerge %170 %171 None
+               OpBranch %172
+        %172 = OpLabel
+        %173 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %174 = OpLoad %float %173
+        %175 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %176 = OpLoad %float %175
+        %177 = OpFOrdGreaterThan %bool %174 %176
+               OpBranchConditional %177 %178 %170
+        %178 = OpLabel
+               OpReturn
+        %171 = OpLabel
+               OpBranch %169
+        %170 = OpLabel
+        %179 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %180 = OpLoad %int %179
+        %181 = OpAccessChain %_ptr_Function_int %s %int_0
+               OpStore %181 %180
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..afea7c2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,153 @@
+struct S {
+  int data;
+};
+
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_struct_S_i11_(inout S s) {
+  while (true) {
+    const float x_174 = asfloat(x_8[0].x);
+    const float x_176 = asfloat(x_8[0].y);
+    if ((x_174 > x_176)) {
+    } else {
+      break;
+    }
+    return;
+  }
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_180 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+  s.data = x_180;
+  return;
+}
+
+void main_1() {
+  int i = 0;
+  S arr[3] = (S[3])0;
+  int i_1 = 0;
+  S param = (S)0;
+  int j = 0;
+  bool x_136 = false;
+  bool x_146 = false;
+  bool x_137_phi = false;
+  bool x_147_phi = false;
+  const int x_46 = asint(x_10[2].x);
+  i = x_46;
+  while (true) {
+    const int x_51 = i;
+    const int x_53 = asint(x_10[1].x);
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    arr[i].data = i;
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_62 = asint(x_10[2].x);
+  i_1 = x_62;
+  while (true) {
+    const int x_67 = i_1;
+    const int x_69 = asint(x_10[1].x);
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    const float x_73 = asfloat(x_8[0].x);
+    const float x_75 = asfloat(x_8[0].y);
+    if ((x_73 > x_75)) {
+      break;
+    }
+    const int x_81 = arr[i_1].data;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_83 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_81 == x_83)) {
+      const int x_88 = i_1;
+      const int x_91 = asint(x_10[3].x);
+      arr[clamp(x_88, 0, 3)].data = x_91;
+      const S x_94 = arr[2];
+      param = x_94;
+      func_struct_S_i11_(param);
+      arr[2] = param;
+    } else {
+      const int x_99 = asint(x_10[2].x);
+      j = x_99;
+      while (true) {
+        const int x_104 = j;
+        const int x_106 = asint(x_10[1].x);
+        if ((x_104 < x_106)) {
+        } else {
+          break;
+        }
+        const int x_111 = arr[j].data;
+        const int x_113 = asint(x_10[4].x);
+        if ((x_111 > x_113)) {
+          discard;
+        }
+        {
+          j = (j + 1);
+        }
+      }
+    }
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const int x_122 = asint(x_10[2].x);
+  const int x_124 = arr[x_122].data;
+  const int x_126 = asint(x_10[2].x);
+  const bool x_127 = (x_124 == x_126);
+  x_137_phi = x_127;
+  if (x_127) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_131 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_133 = arr[x_131].data;
+    const int x_135 = asint(x_10[3].x);
+    x_136 = (x_133 == x_135);
+    x_137_phi = x_136;
+  }
+  const bool x_137 = x_137_phi;
+  x_147_phi = x_137;
+  if (x_137) {
+    const int x_141 = asint(x_10[3].x);
+    const int x_143 = arr[x_141].data;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_145 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_146 = (x_143 == x_145);
+    x_147_phi = x_146;
+  }
+  if (x_147_phi) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_152 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const int x_155 = asint(x_10[2].x);
+    const int x_158 = asint(x_10[2].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_161 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_152), float(x_155), float(x_158), float(x_161));
+  } else {
+    const int x_165 = asint(x_10[2].x);
+    const float x_166 = float(x_165);
+    x_GLF_color = float4(x_166, x_166, x_166, x_166);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e3b232e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.msl
@@ -0,0 +1,168 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int data;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 v1;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  S arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_struct_S_i11_(constant buf1& x_8, constant buf0& x_10, thread S* const s) {
+  while (true) {
+    float const x_174 = x_8.v1.x;
+    float const x_176 = x_8.v1.y;
+    if ((x_174 > x_176)) {
+    } else {
+      break;
+    }
+    return;
+  }
+  int const x_180 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  (*(s)).data = x_180;
+  return;
+}
+
+void main_1(constant buf0& x_10, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 arr = {};
+  int i_1 = 0;
+  S param = {};
+  int j = 0;
+  bool x_136 = false;
+  bool x_146 = false;
+  bool x_137_phi = false;
+  bool x_147_phi = false;
+  int const x_46 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  i = x_46;
+  while (true) {
+    int const x_51 = i;
+    int const x_53 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    int const x_56 = i;
+    int const x_57 = i;
+    arr.arr[x_56].data = x_57;
+    {
+      int const x_59 = i;
+      i = (x_59 + 1);
+    }
+  }
+  int const x_62 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  i_1 = x_62;
+  while (true) {
+    int const x_67 = i_1;
+    int const x_69 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    float const x_73 = x_8.v1.x;
+    float const x_75 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    int const x_79 = i_1;
+    int const x_81 = arr.arr[x_79].data;
+    int const x_83 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_81 == x_83)) {
+      int const x_88 = i_1;
+      int const x_91 = x_10.x_GLF_uniform_int_values.arr[3].el;
+      arr.arr[clamp(x_88, 0, 3)].data = x_91;
+      S const x_94 = arr.arr[2];
+      param = x_94;
+      func_struct_S_i11_(x_8, x_10, &(param));
+      S const x_96 = param;
+      arr.arr[2] = x_96;
+    } else {
+      int const x_99 = x_10.x_GLF_uniform_int_values.arr[2].el;
+      j = x_99;
+      while (true) {
+        int const x_104 = j;
+        int const x_106 = x_10.x_GLF_uniform_int_values.arr[1].el;
+        if ((x_104 < x_106)) {
+        } else {
+          break;
+        }
+        int const x_109 = j;
+        int const x_111 = arr.arr[x_109].data;
+        int const x_113 = x_10.x_GLF_uniform_int_values.arr[4].el;
+        if ((x_111 > x_113)) {
+          discard_fragment();
+        }
+        {
+          int const x_117 = j;
+          j = (x_117 + 1);
+        }
+      }
+    }
+    {
+      int const x_119 = i_1;
+      i_1 = (x_119 + 1);
+    }
+  }
+  int const x_122 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  int const x_124 = arr.arr[x_122].data;
+  int const x_126 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  bool const x_127 = (x_124 == x_126);
+  x_137_phi = x_127;
+  if (x_127) {
+    int const x_131 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_133 = arr.arr[x_131].data;
+    int const x_135 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    x_136 = (x_133 == x_135);
+    x_137_phi = x_136;
+  }
+  bool const x_137 = x_137_phi;
+  x_147_phi = x_137;
+  if (x_137) {
+    int const x_141 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_143 = arr.arr[x_141].data;
+    int const x_145 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    x_146 = (x_143 == x_145);
+    x_147_phi = x_146;
+  }
+  bool const x_147 = x_147_phi;
+  if (x_147) {
+    int const x_152 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_155 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_158 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_161 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_152), float(x_155), float(x_158), float(x_161));
+  } else {
+    int const x_165 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_166 = float(x_165);
+    *(tint_symbol_4) = float4(x_166, x_166, x_166, x_166);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_10 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_10, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f707389
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,350 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 218
+; Schema: 0
+               OpCapability Shader
+        %123 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_ "func_struct_S_i11_"
+               OpName %s "s"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %i_1 "i_1"
+               OpName %param "param"
+               OpName %j "j"
+               OpName %x_136 "x_136"
+               OpName %x_146 "x_146"
+               OpName %x_137_phi "x_137_phi"
+               OpName %x_147_phi "x_147_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_S_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+         %19 = OpTypeFunction %void %_ptr_Function_S
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %49 = OpTypeFunction %void
+         %53 = OpConstantNull %int
+     %uint_3 = OpConstant %uint 3
+%_arr_S_uint_3 = OpTypeArray %S %uint_3
+%_ptr_Function__arr_S_uint_3 = OpTypePointer Function %_arr_S_uint_3
+         %58 = OpConstantNull %_arr_S_uint_3
+         %61 = OpConstantNull %S
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %65 = OpConstantNull %bool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %206 = OpTypeFunction %void %main_out
+%func_struct_S_i11_ = OpFunction %void None %19
+          %s = OpFunctionParameter %_ptr_Function_S
+         %25 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %32 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFOrdGreaterThan %bool %33 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %27
+         %39 = OpLabel
+               OpReturn
+         %28 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %45 = OpLoad %int %44
+         %48 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %48 %45
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %49
+         %51 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %53
+        %arr = OpVariable %_ptr_Function__arr_S_uint_3 Function %58
+        %i_1 = OpVariable %_ptr_Function_int Function %53
+      %param = OpVariable %_ptr_Function_S Function %61
+          %j = OpVariable %_ptr_Function_int Function %53
+      %x_136 = OpVariable %_ptr_Function_bool Function %65
+      %x_146 = OpVariable %_ptr_Function_bool Function %65
+  %x_137_phi = OpVariable %_ptr_Function_bool Function %65
+  %x_147_phi = OpVariable %_ptr_Function_bool Function %65
+         %70 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %71 = OpLoad %int %70
+               OpStore %i %71
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %int %i
+         %78 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpSLessThan %bool %76 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %73
+         %81 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpLoad %int %i
+         %86 = OpAccessChain %_ptr_Function_int %arr %84 %uint_0
+               OpStore %86 %85
+               OpBranch %74
+         %74 = OpLabel
+         %87 = OpLoad %int %i
+         %88 = OpIAdd %int %87 %int_1
+               OpStore %i %88
+               OpBranch %72
+         %73 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %90 = OpLoad %int %89
+               OpStore %i_1 %90
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i_1
+         %96 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpSLessThan %bool %95 %97
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %92
+         %99 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %105 = OpLoad %float %104
+        %106 = OpFOrdGreaterThan %bool %103 %105
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+               OpBranch %92
+        %107 = OpLabel
+        %109 = OpLoad %int %i_1
+        %110 = OpAccessChain %_ptr_Function_int %arr %109 %uint_0
+        %111 = OpLoad %int %110
+        %112 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpIEqual %bool %111 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %117
+        %116 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %121 = OpLoad %int %120
+        %122 = OpExtInst %int %123 SClamp %118 %int_0 %int_3
+        %124 = OpAccessChain %_ptr_Function_int %arr %122 %uint_0
+               OpStore %124 %121
+        %125 = OpAccessChain %_ptr_Function_S %arr %int_2
+        %126 = OpLoad %S %125
+               OpStore %param %126
+        %127 = OpFunctionCall %void %func_struct_S_i11_ %param
+        %129 = OpLoad %S %param
+        %130 = OpAccessChain %_ptr_Function_S %arr %int_2
+               OpStore %130 %129
+               OpBranch %115
+        %117 = OpLabel
+        %131 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %132 = OpLoad %int %131
+               OpStore %j %132
+               OpBranch %133
+        %133 = OpLabel
+               OpLoopMerge %134 %135 None
+               OpBranch %136
+        %136 = OpLabel
+        %137 = OpLoad %int %j
+        %138 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %139 = OpLoad %int %138
+        %140 = OpSLessThan %bool %137 %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %143
+        %142 = OpLabel
+               OpBranch %141
+        %143 = OpLabel
+               OpBranch %134
+        %141 = OpLabel
+        %144 = OpLoad %int %j
+        %145 = OpAccessChain %_ptr_Function_int %arr %144 %uint_0
+        %146 = OpLoad %int %145
+        %148 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_4
+        %149 = OpLoad %int %148
+        %150 = OpSGreaterThan %bool %146 %149
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %151
+        %152 = OpLabel
+               OpKill
+        %151 = OpLabel
+               OpBranch %135
+        %135 = OpLabel
+        %153 = OpLoad %int %j
+        %154 = OpIAdd %int %153 %int_1
+               OpStore %j %154
+               OpBranch %133
+        %134 = OpLabel
+               OpBranch %115
+        %115 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+        %155 = OpLoad %int %i_1
+        %156 = OpIAdd %int %155 %int_1
+               OpStore %i_1 %156
+               OpBranch %91
+         %92 = OpLabel
+        %157 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %158 = OpLoad %int %157
+        %159 = OpAccessChain %_ptr_Function_int %arr %158 %uint_0
+        %160 = OpLoad %int %159
+        %161 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %162 = OpLoad %int %161
+        %163 = OpIEqual %bool %160 %162
+               OpStore %x_137_phi %163
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %164
+        %165 = OpLabel
+        %166 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %167 = OpLoad %int %166
+        %168 = OpAccessChain %_ptr_Function_int %arr %167 %uint_0
+        %169 = OpLoad %int %168
+        %170 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %171 = OpLoad %int %170
+        %172 = OpIEqual %bool %169 %171
+               OpStore %x_136 %172
+        %173 = OpLoad %bool %x_136
+               OpStore %x_137_phi %173
+               OpBranch %164
+        %164 = OpLabel
+        %174 = OpLoad %bool %x_137_phi
+               OpStore %x_147_phi %174
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %175
+        %176 = OpLabel
+        %177 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %178 = OpLoad %int %177
+        %179 = OpAccessChain %_ptr_Function_int %arr %178 %uint_0
+        %180 = OpLoad %int %179
+        %181 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %182 = OpLoad %int %181
+        %183 = OpIEqual %bool %180 %182
+               OpStore %x_146 %183
+        %184 = OpLoad %bool %x_146
+               OpStore %x_147_phi %184
+               OpBranch %175
+        %175 = OpLabel
+        %185 = OpLoad %bool %x_147_phi
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+        %189 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %190 = OpLoad %int %189
+        %191 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %192 = OpLoad %int %191
+        %193 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %194 = OpLoad %int %193
+        %195 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %196 = OpLoad %int %195
+        %197 = OpConvertSToF %float %190
+        %198 = OpConvertSToF %float %192
+        %199 = OpConvertSToF %float %194
+        %200 = OpConvertSToF %float %196
+        %201 = OpCompositeConstruct %v4float %197 %198 %199 %200
+               OpStore %x_GLF_color %201
+               OpBranch %186
+        %188 = OpLabel
+        %202 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %203 = OpLoad %int %202
+        %204 = OpConvertSToF %float %203
+        %205 = OpCompositeConstruct %v4float %204 %204 %204 %204
+               OpStore %x_GLF_color %205
+               OpBranch %186
+        %186 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %206
+%tint_symbol = OpFunctionParameter %main_out
+        %210 = OpLabel
+        %211 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %211
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %49
+        %213 = OpLabel
+        %214 = OpFunctionCall %void %main_1
+        %216 = OpLoad %v4float %x_GLF_color
+        %217 = OpCompositeConstruct %main_out %216
+        %215 = OpFunctionCall %void %tint_symbol_2 %217
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..68f76e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,166 @@
+struct S {
+  data : i32;
+};
+
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_(s : ptr<function, S>) {
+  loop {
+    let x_174 : f32 = x_8.v1.x;
+    let x_176 : f32 = x_8.v1.y;
+    if ((x_174 > x_176)) {
+    } else {
+      break;
+    }
+    return;
+  }
+  let x_180 : i32 = x_10.x_GLF_uniform_int_values[0];
+  (*(s)).data = x_180;
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var arr : array<S, 3>;
+  var i_1 : i32;
+  var param : S;
+  var j : i32;
+  var x_136 : bool;
+  var x_146 : bool;
+  var x_137_phi : bool;
+  var x_147_phi : bool;
+  let x_46 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i = x_46;
+  loop {
+    let x_51 : i32 = i;
+    let x_53 : i32 = x_10.x_GLF_uniform_int_values[1];
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = i;
+    let x_57 : i32 = i;
+    arr[x_56].data = x_57;
+
+    continuing {
+      let x_59 : i32 = i;
+      i = (x_59 + 1);
+    }
+  }
+  let x_62 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i_1 = x_62;
+  loop {
+    let x_67 : i32 = i_1;
+    let x_69 : i32 = x_10.x_GLF_uniform_int_values[1];
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    let x_73 : f32 = x_8.v1.x;
+    let x_75 : f32 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    let x_79 : i32 = i_1;
+    let x_81 : i32 = arr[x_79].data;
+    let x_83 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_81 == x_83)) {
+      let x_88 : i32 = i_1;
+      let x_91 : i32 = x_10.x_GLF_uniform_int_values[3];
+      arr[clamp(x_88, 0, 3)].data = x_91;
+      let x_94 : S = arr[2];
+      param = x_94;
+      func_struct_S_i11_(&(param));
+      let x_96 : S = param;
+      arr[2] = x_96;
+    } else {
+      let x_99 : i32 = x_10.x_GLF_uniform_int_values[2];
+      j = x_99;
+      loop {
+        let x_104 : i32 = j;
+        let x_106 : i32 = x_10.x_GLF_uniform_int_values[1];
+        if ((x_104 < x_106)) {
+        } else {
+          break;
+        }
+        let x_109 : i32 = j;
+        let x_111 : i32 = arr[x_109].data;
+        let x_113 : i32 = x_10.x_GLF_uniform_int_values[4];
+        if ((x_111 > x_113)) {
+          discard;
+        }
+
+        continuing {
+          let x_117 : i32 = j;
+          j = (x_117 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_119 : i32 = i_1;
+      i_1 = (x_119 + 1);
+    }
+  }
+  let x_122 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_124 : i32 = arr[x_122].data;
+  let x_126 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_127 : bool = (x_124 == x_126);
+  x_137_phi = x_127;
+  if (x_127) {
+    let x_131 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_133 : i32 = arr[x_131].data;
+    let x_135 : i32 = x_10.x_GLF_uniform_int_values[3];
+    x_136 = (x_133 == x_135);
+    x_137_phi = x_136;
+  }
+  let x_137 : bool = x_137_phi;
+  x_147_phi = x_137;
+  if (x_137) {
+    let x_141 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_143 : i32 = arr[x_141].data;
+    let x_145 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_146 = (x_143 == x_145);
+    x_147_phi = x_146;
+  }
+  let x_147 : bool = x_147_phi;
+  if (x_147) {
+    let x_152 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_155 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_158 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_161 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_152), f32(x_155), f32(x_158), f32(x_161));
+  } else {
+    let x_165 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_166 : f32 = f32(x_165);
+    x_GLF_color = vec4<f32>(x_166, x_166, x_166, x_166);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
new file mode 100644
index 0000000..68f76e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
@@ -0,0 +1,166 @@
+struct S {
+  data : i32;
+};
+
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_(s : ptr<function, S>) {
+  loop {
+    let x_174 : f32 = x_8.v1.x;
+    let x_176 : f32 = x_8.v1.y;
+    if ((x_174 > x_176)) {
+    } else {
+      break;
+    }
+    return;
+  }
+  let x_180 : i32 = x_10.x_GLF_uniform_int_values[0];
+  (*(s)).data = x_180;
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var arr : array<S, 3>;
+  var i_1 : i32;
+  var param : S;
+  var j : i32;
+  var x_136 : bool;
+  var x_146 : bool;
+  var x_137_phi : bool;
+  var x_147_phi : bool;
+  let x_46 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i = x_46;
+  loop {
+    let x_51 : i32 = i;
+    let x_53 : i32 = x_10.x_GLF_uniform_int_values[1];
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = i;
+    let x_57 : i32 = i;
+    arr[x_56].data = x_57;
+
+    continuing {
+      let x_59 : i32 = i;
+      i = (x_59 + 1);
+    }
+  }
+  let x_62 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i_1 = x_62;
+  loop {
+    let x_67 : i32 = i_1;
+    let x_69 : i32 = x_10.x_GLF_uniform_int_values[1];
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    let x_73 : f32 = x_8.v1.x;
+    let x_75 : f32 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    let x_79 : i32 = i_1;
+    let x_81 : i32 = arr[x_79].data;
+    let x_83 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_81 == x_83)) {
+      let x_88 : i32 = i_1;
+      let x_91 : i32 = x_10.x_GLF_uniform_int_values[3];
+      arr[clamp(x_88, 0, 3)].data = x_91;
+      let x_94 : S = arr[2];
+      param = x_94;
+      func_struct_S_i11_(&(param));
+      let x_96 : S = param;
+      arr[2] = x_96;
+    } else {
+      let x_99 : i32 = x_10.x_GLF_uniform_int_values[2];
+      j = x_99;
+      loop {
+        let x_104 : i32 = j;
+        let x_106 : i32 = x_10.x_GLF_uniform_int_values[1];
+        if ((x_104 < x_106)) {
+        } else {
+          break;
+        }
+        let x_109 : i32 = j;
+        let x_111 : i32 = arr[x_109].data;
+        let x_113 : i32 = x_10.x_GLF_uniform_int_values[4];
+        if ((x_111 > x_113)) {
+          discard;
+        }
+
+        continuing {
+          let x_117 : i32 = j;
+          j = (x_117 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_119 : i32 = i_1;
+      i_1 = (x_119 + 1);
+    }
+  }
+  let x_122 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_124 : i32 = arr[x_122].data;
+  let x_126 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_127 : bool = (x_124 == x_126);
+  x_137_phi = x_127;
+  if (x_127) {
+    let x_131 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_133 : i32 = arr[x_131].data;
+    let x_135 : i32 = x_10.x_GLF_uniform_int_values[3];
+    x_136 = (x_133 == x_135);
+    x_137_phi = x_136;
+  }
+  let x_137 : bool = x_137_phi;
+  x_147_phi = x_137;
+  if (x_137) {
+    let x_141 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_143 : i32 = arr[x_141].data;
+    let x_145 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_146 = (x_143 == x_145);
+    x_147_phi = x_146;
+  }
+  let x_147 : bool = x_147_phi;
+  if (x_147) {
+    let x_152 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_155 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_158 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_161 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_152), f32(x_155), f32(x_158), f32(x_161));
+  } else {
+    let x_165 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_166 : f32 = f32(x_165);
+    x_GLF_color = vec4<f32>(x_166, x_166, x_166, x_166);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..afea7c2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,153 @@
+struct S {
+  int data;
+};
+
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[5];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_struct_S_i11_(inout S s) {
+  while (true) {
+    const float x_174 = asfloat(x_8[0].x);
+    const float x_176 = asfloat(x_8[0].y);
+    if ((x_174 > x_176)) {
+    } else {
+      break;
+    }
+    return;
+  }
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_180 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+  s.data = x_180;
+  return;
+}
+
+void main_1() {
+  int i = 0;
+  S arr[3] = (S[3])0;
+  int i_1 = 0;
+  S param = (S)0;
+  int j = 0;
+  bool x_136 = false;
+  bool x_146 = false;
+  bool x_137_phi = false;
+  bool x_147_phi = false;
+  const int x_46 = asint(x_10[2].x);
+  i = x_46;
+  while (true) {
+    const int x_51 = i;
+    const int x_53 = asint(x_10[1].x);
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    arr[i].data = i;
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_62 = asint(x_10[2].x);
+  i_1 = x_62;
+  while (true) {
+    const int x_67 = i_1;
+    const int x_69 = asint(x_10[1].x);
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    const float x_73 = asfloat(x_8[0].x);
+    const float x_75 = asfloat(x_8[0].y);
+    if ((x_73 > x_75)) {
+      break;
+    }
+    const int x_81 = arr[i_1].data;
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_83 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    if ((x_81 == x_83)) {
+      const int x_88 = i_1;
+      const int x_91 = asint(x_10[3].x);
+      arr[clamp(x_88, 0, 3)].data = x_91;
+      const S x_94 = arr[2];
+      param = x_94;
+      func_struct_S_i11_(param);
+      arr[2] = param;
+    } else {
+      const int x_99 = asint(x_10[2].x);
+      j = x_99;
+      while (true) {
+        const int x_104 = j;
+        const int x_106 = asint(x_10[1].x);
+        if ((x_104 < x_106)) {
+        } else {
+          break;
+        }
+        const int x_111 = arr[j].data;
+        const int x_113 = asint(x_10[4].x);
+        if ((x_111 > x_113)) {
+          discard;
+        }
+        {
+          j = (j + 1);
+        }
+      }
+    }
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const int x_122 = asint(x_10[2].x);
+  const int x_124 = arr[x_122].data;
+  const int x_126 = asint(x_10[2].x);
+  const bool x_127 = (x_124 == x_126);
+  x_137_phi = x_127;
+  if (x_127) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_131 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_133 = arr[x_131].data;
+    const int x_135 = asint(x_10[3].x);
+    x_136 = (x_133 == x_135);
+    x_137_phi = x_136;
+  }
+  const bool x_137 = x_137_phi;
+  x_147_phi = x_137;
+  if (x_137) {
+    const int x_141 = asint(x_10[3].x);
+    const int x_143 = arr[x_141].data;
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_145 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_146 = (x_143 == x_145);
+    x_147_phi = x_146;
+  }
+  if (x_147_phi) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_152 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const int x_155 = asint(x_10[2].x);
+    const int x_158 = asint(x_10[2].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_161 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_152), float(x_155), float(x_158), float(x_161));
+  } else {
+    const int x_165 = asint(x_10[2].x);
+    const float x_166 = float(x_165);
+    x_GLF_color = float4(x_166, x_166, x_166, x_166);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e3b232e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.msl
@@ -0,0 +1,168 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int data;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 v1;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[5];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  S arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_struct_S_i11_(constant buf1& x_8, constant buf0& x_10, thread S* const s) {
+  while (true) {
+    float const x_174 = x_8.v1.x;
+    float const x_176 = x_8.v1.y;
+    if ((x_174 > x_176)) {
+    } else {
+      break;
+    }
+    return;
+  }
+  int const x_180 = x_10.x_GLF_uniform_int_values.arr[0].el;
+  (*(s)).data = x_180;
+  return;
+}
+
+void main_1(constant buf0& x_10, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 arr = {};
+  int i_1 = 0;
+  S param = {};
+  int j = 0;
+  bool x_136 = false;
+  bool x_146 = false;
+  bool x_137_phi = false;
+  bool x_147_phi = false;
+  int const x_46 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  i = x_46;
+  while (true) {
+    int const x_51 = i;
+    int const x_53 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    int const x_56 = i;
+    int const x_57 = i;
+    arr.arr[x_56].data = x_57;
+    {
+      int const x_59 = i;
+      i = (x_59 + 1);
+    }
+  }
+  int const x_62 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  i_1 = x_62;
+  while (true) {
+    int const x_67 = i_1;
+    int const x_69 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    float const x_73 = x_8.v1.x;
+    float const x_75 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    int const x_79 = i_1;
+    int const x_81 = arr.arr[x_79].data;
+    int const x_83 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_81 == x_83)) {
+      int const x_88 = i_1;
+      int const x_91 = x_10.x_GLF_uniform_int_values.arr[3].el;
+      arr.arr[clamp(x_88, 0, 3)].data = x_91;
+      S const x_94 = arr.arr[2];
+      param = x_94;
+      func_struct_S_i11_(x_8, x_10, &(param));
+      S const x_96 = param;
+      arr.arr[2] = x_96;
+    } else {
+      int const x_99 = x_10.x_GLF_uniform_int_values.arr[2].el;
+      j = x_99;
+      while (true) {
+        int const x_104 = j;
+        int const x_106 = x_10.x_GLF_uniform_int_values.arr[1].el;
+        if ((x_104 < x_106)) {
+        } else {
+          break;
+        }
+        int const x_109 = j;
+        int const x_111 = arr.arr[x_109].data;
+        int const x_113 = x_10.x_GLF_uniform_int_values.arr[4].el;
+        if ((x_111 > x_113)) {
+          discard_fragment();
+        }
+        {
+          int const x_117 = j;
+          j = (x_117 + 1);
+        }
+      }
+    }
+    {
+      int const x_119 = i_1;
+      i_1 = (x_119 + 1);
+    }
+  }
+  int const x_122 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  int const x_124 = arr.arr[x_122].data;
+  int const x_126 = x_10.x_GLF_uniform_int_values.arr[2].el;
+  bool const x_127 = (x_124 == x_126);
+  x_137_phi = x_127;
+  if (x_127) {
+    int const x_131 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_133 = arr.arr[x_131].data;
+    int const x_135 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    x_136 = (x_133 == x_135);
+    x_137_phi = x_136;
+  }
+  bool const x_137 = x_137_phi;
+  x_147_phi = x_137;
+  if (x_137) {
+    int const x_141 = x_10.x_GLF_uniform_int_values.arr[3].el;
+    int const x_143 = arr.arr[x_141].data;
+    int const x_145 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    x_146 = (x_143 == x_145);
+    x_147_phi = x_146;
+  }
+  bool const x_147 = x_147_phi;
+  if (x_147) {
+    int const x_152 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_155 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_158 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    int const x_161 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_152), float(x_155), float(x_158), float(x_161));
+  } else {
+    int const x_165 = x_10.x_GLF_uniform_int_values.arr[2].el;
+    float const x_166 = float(x_165);
+    *(tint_symbol_4) = float4(x_166, x_166, x_166, x_166);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_10 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_10, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f707389
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,350 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 218
+; Schema: 0
+               OpCapability Shader
+        %123 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %x_8 "x_8"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_ "func_struct_S_i11_"
+               OpName %s "s"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %i_1 "i_1"
+               OpName %param "param"
+               OpName %j "j"
+               OpName %x_136 "x_136"
+               OpName %x_146 "x_146"
+               OpName %x_137_phi "x_137_phi"
+               OpName %x_147_phi "x_147_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_5 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_S_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_5 = OpConstant %uint 5
+%_arr_int_uint_5 = OpTypeArray %int %uint_5
+       %buf0 = OpTypeStruct %_arr_int_uint_5
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+         %19 = OpTypeFunction %void %_ptr_Function_S
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %49 = OpTypeFunction %void
+         %53 = OpConstantNull %int
+     %uint_3 = OpConstant %uint 3
+%_arr_S_uint_3 = OpTypeArray %S %uint_3
+%_ptr_Function__arr_S_uint_3 = OpTypePointer Function %_arr_S_uint_3
+         %58 = OpConstantNull %_arr_S_uint_3
+         %61 = OpConstantNull %S
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %65 = OpConstantNull %bool
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+   %main_out = OpTypeStruct %v4float
+        %206 = OpTypeFunction %void %main_out
+%func_struct_S_i11_ = OpFunction %void None %19
+          %s = OpFunctionParameter %_ptr_Function_S
+         %25 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %32 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFOrdGreaterThan %bool %33 %36
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %27
+         %39 = OpLabel
+               OpReturn
+         %28 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %45 = OpLoad %int %44
+         %48 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %48 %45
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %49
+         %51 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %53
+        %arr = OpVariable %_ptr_Function__arr_S_uint_3 Function %58
+        %i_1 = OpVariable %_ptr_Function_int Function %53
+      %param = OpVariable %_ptr_Function_S Function %61
+          %j = OpVariable %_ptr_Function_int Function %53
+      %x_136 = OpVariable %_ptr_Function_bool Function %65
+      %x_146 = OpVariable %_ptr_Function_bool Function %65
+  %x_137_phi = OpVariable %_ptr_Function_bool Function %65
+  %x_147_phi = OpVariable %_ptr_Function_bool Function %65
+         %70 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %71 = OpLoad %int %70
+               OpStore %i %71
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %int %i
+         %78 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpSLessThan %bool %76 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %73
+         %81 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpLoad %int %i
+         %86 = OpAccessChain %_ptr_Function_int %arr %84 %uint_0
+               OpStore %86 %85
+               OpBranch %74
+         %74 = OpLabel
+         %87 = OpLoad %int %i
+         %88 = OpIAdd %int %87 %int_1
+               OpStore %i %88
+               OpBranch %72
+         %73 = OpLabel
+         %89 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+         %90 = OpLoad %int %89
+               OpStore %i_1 %90
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i_1
+         %96 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpSLessThan %bool %95 %97
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %92
+         %99 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %105 = OpLoad %float %104
+        %106 = OpFOrdGreaterThan %bool %103 %105
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+               OpBranch %92
+        %107 = OpLabel
+        %109 = OpLoad %int %i_1
+        %110 = OpAccessChain %_ptr_Function_int %arr %109 %uint_0
+        %111 = OpLoad %int %110
+        %112 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpIEqual %bool %111 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %117
+        %116 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %121 = OpLoad %int %120
+        %122 = OpExtInst %int %123 SClamp %118 %int_0 %int_3
+        %124 = OpAccessChain %_ptr_Function_int %arr %122 %uint_0
+               OpStore %124 %121
+        %125 = OpAccessChain %_ptr_Function_S %arr %int_2
+        %126 = OpLoad %S %125
+               OpStore %param %126
+        %127 = OpFunctionCall %void %func_struct_S_i11_ %param
+        %129 = OpLoad %S %param
+        %130 = OpAccessChain %_ptr_Function_S %arr %int_2
+               OpStore %130 %129
+               OpBranch %115
+        %117 = OpLabel
+        %131 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %132 = OpLoad %int %131
+               OpStore %j %132
+               OpBranch %133
+        %133 = OpLabel
+               OpLoopMerge %134 %135 None
+               OpBranch %136
+        %136 = OpLabel
+        %137 = OpLoad %int %j
+        %138 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+        %139 = OpLoad %int %138
+        %140 = OpSLessThan %bool %137 %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %143
+        %142 = OpLabel
+               OpBranch %141
+        %143 = OpLabel
+               OpBranch %134
+        %141 = OpLabel
+        %144 = OpLoad %int %j
+        %145 = OpAccessChain %_ptr_Function_int %arr %144 %uint_0
+        %146 = OpLoad %int %145
+        %148 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_4
+        %149 = OpLoad %int %148
+        %150 = OpSGreaterThan %bool %146 %149
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %151
+        %152 = OpLabel
+               OpKill
+        %151 = OpLabel
+               OpBranch %135
+        %135 = OpLabel
+        %153 = OpLoad %int %j
+        %154 = OpIAdd %int %153 %int_1
+               OpStore %j %154
+               OpBranch %133
+        %134 = OpLabel
+               OpBranch %115
+        %115 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+        %155 = OpLoad %int %i_1
+        %156 = OpIAdd %int %155 %int_1
+               OpStore %i_1 %156
+               OpBranch %91
+         %92 = OpLabel
+        %157 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %158 = OpLoad %int %157
+        %159 = OpAccessChain %_ptr_Function_int %arr %158 %uint_0
+        %160 = OpLoad %int %159
+        %161 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %162 = OpLoad %int %161
+        %163 = OpIEqual %bool %160 %162
+               OpStore %x_137_phi %163
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %164
+        %165 = OpLabel
+        %166 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %167 = OpLoad %int %166
+        %168 = OpAccessChain %_ptr_Function_int %arr %167 %uint_0
+        %169 = OpLoad %int %168
+        %170 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %171 = OpLoad %int %170
+        %172 = OpIEqual %bool %169 %171
+               OpStore %x_136 %172
+        %173 = OpLoad %bool %x_136
+               OpStore %x_137_phi %173
+               OpBranch %164
+        %164 = OpLabel
+        %174 = OpLoad %bool %x_137_phi
+               OpStore %x_147_phi %174
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %175
+        %176 = OpLabel
+        %177 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_3
+        %178 = OpLoad %int %177
+        %179 = OpAccessChain %_ptr_Function_int %arr %178 %uint_0
+        %180 = OpLoad %int %179
+        %181 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %182 = OpLoad %int %181
+        %183 = OpIEqual %bool %180 %182
+               OpStore %x_146 %183
+        %184 = OpLoad %bool %x_146
+               OpStore %x_147_phi %184
+               OpBranch %175
+        %175 = OpLabel
+        %185 = OpLoad %bool %x_147_phi
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+        %189 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %190 = OpLoad %int %189
+        %191 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %192 = OpLoad %int %191
+        %193 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %194 = OpLoad %int %193
+        %195 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+        %196 = OpLoad %int %195
+        %197 = OpConvertSToF %float %190
+        %198 = OpConvertSToF %float %192
+        %199 = OpConvertSToF %float %194
+        %200 = OpConvertSToF %float %196
+        %201 = OpCompositeConstruct %v4float %197 %198 %199 %200
+               OpStore %x_GLF_color %201
+               OpBranch %186
+        %188 = OpLabel
+        %202 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_2
+        %203 = OpLoad %int %202
+        %204 = OpConvertSToF %float %203
+        %205 = OpCompositeConstruct %v4float %204 %204 %204 %204
+               OpStore %x_GLF_color %205
+               OpBranch %186
+        %186 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %206
+%tint_symbol = OpFunctionParameter %main_out
+        %210 = OpLabel
+        %211 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %211
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %49
+        %213 = OpLabel
+        %214 = OpFunctionCall %void %main_1
+        %216 = OpLoad %v4float %x_GLF_color
+        %217 = OpCompositeConstruct %main_out %216
+        %215 = OpFunctionCall %void %tint_symbol_2 %217
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..68f76e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,166 @@
+struct S {
+  data : i32;
+};
+
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+type Arr = [[stride(16)]] array<i32, 5>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_(s : ptr<function, S>) {
+  loop {
+    let x_174 : f32 = x_8.v1.x;
+    let x_176 : f32 = x_8.v1.y;
+    if ((x_174 > x_176)) {
+    } else {
+      break;
+    }
+    return;
+  }
+  let x_180 : i32 = x_10.x_GLF_uniform_int_values[0];
+  (*(s)).data = x_180;
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var arr : array<S, 3>;
+  var i_1 : i32;
+  var param : S;
+  var j : i32;
+  var x_136 : bool;
+  var x_146 : bool;
+  var x_137_phi : bool;
+  var x_147_phi : bool;
+  let x_46 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i = x_46;
+  loop {
+    let x_51 : i32 = i;
+    let x_53 : i32 = x_10.x_GLF_uniform_int_values[1];
+    if ((x_51 < x_53)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = i;
+    let x_57 : i32 = i;
+    arr[x_56].data = x_57;
+
+    continuing {
+      let x_59 : i32 = i;
+      i = (x_59 + 1);
+    }
+  }
+  let x_62 : i32 = x_10.x_GLF_uniform_int_values[2];
+  i_1 = x_62;
+  loop {
+    let x_67 : i32 = i_1;
+    let x_69 : i32 = x_10.x_GLF_uniform_int_values[1];
+    if ((x_67 < x_69)) {
+    } else {
+      break;
+    }
+    let x_73 : f32 = x_8.v1.x;
+    let x_75 : f32 = x_8.v1.y;
+    if ((x_73 > x_75)) {
+      break;
+    }
+    let x_79 : i32 = i_1;
+    let x_81 : i32 = arr[x_79].data;
+    let x_83 : i32 = x_10.x_GLF_uniform_int_values[0];
+    if ((x_81 == x_83)) {
+      let x_88 : i32 = i_1;
+      let x_91 : i32 = x_10.x_GLF_uniform_int_values[3];
+      arr[clamp(x_88, 0, 3)].data = x_91;
+      let x_94 : S = arr[2];
+      param = x_94;
+      func_struct_S_i11_(&(param));
+      let x_96 : S = param;
+      arr[2] = x_96;
+    } else {
+      let x_99 : i32 = x_10.x_GLF_uniform_int_values[2];
+      j = x_99;
+      loop {
+        let x_104 : i32 = j;
+        let x_106 : i32 = x_10.x_GLF_uniform_int_values[1];
+        if ((x_104 < x_106)) {
+        } else {
+          break;
+        }
+        let x_109 : i32 = j;
+        let x_111 : i32 = arr[x_109].data;
+        let x_113 : i32 = x_10.x_GLF_uniform_int_values[4];
+        if ((x_111 > x_113)) {
+          discard;
+        }
+
+        continuing {
+          let x_117 : i32 = j;
+          j = (x_117 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_119 : i32 = i_1;
+      i_1 = (x_119 + 1);
+    }
+  }
+  let x_122 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_124 : i32 = arr[x_122].data;
+  let x_126 : i32 = x_10.x_GLF_uniform_int_values[2];
+  let x_127 : bool = (x_124 == x_126);
+  x_137_phi = x_127;
+  if (x_127) {
+    let x_131 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_133 : i32 = arr[x_131].data;
+    let x_135 : i32 = x_10.x_GLF_uniform_int_values[3];
+    x_136 = (x_133 == x_135);
+    x_137_phi = x_136;
+  }
+  let x_137 : bool = x_137_phi;
+  x_147_phi = x_137;
+  if (x_137) {
+    let x_141 : i32 = x_10.x_GLF_uniform_int_values[3];
+    let x_143 : i32 = arr[x_141].data;
+    let x_145 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_146 = (x_143 == x_145);
+    x_147_phi = x_146;
+  }
+  let x_147 : bool = x_147_phi;
+  if (x_147) {
+    let x_152 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_155 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_158 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_161 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_152), f32(x_155), f32(x_158), f32(x_161));
+  } else {
+    let x_165 : i32 = x_10.x_GLF_uniform_int_values[2];
+    let x_166 : f32 = f32(x_165);
+    x_GLF_color = vec4<f32>(x_166, x_166, x_166, x_166);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm
new file mode 100644
index 0000000..58bb735
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm
@@ -0,0 +1,64 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %m "m"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+         %13 = OpConstantComposite %v2float %float_1 %float_2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %16 = OpConstantComposite %v2float %float_3 %float_4
+         %17 = OpConstantComposite %mat2v2float %13 %16
+       %bool = OpTypeBool
+     %v2bool = OpTypeVector %bool 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %24 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %6
+         %25 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function
+               OpStore %m %17
+         %26 = OpLoad %mat2v2float %m
+         %27 = OpTranspose %mat2v2float %26
+         %28 = OpLoad %mat2v2float %m
+         %29 = OpTranspose %mat2v2float %28
+         %30 = OpMatrixTimesMatrix %mat2v2float %27 %29
+         %31 = OpLoad %mat2v2float %m
+         %32 = OpLoad %mat2v2float %m
+         %33 = OpMatrixTimesMatrix %mat2v2float %31 %32
+         %34 = OpTranspose %mat2v2float %33
+         %35 = OpCompositeExtract %v2float %30 0
+         %36 = OpCompositeExtract %v2float %34 0
+         %37 = OpFOrdEqual %v2bool %35 %36
+         %38 = OpAll %bool %37
+         %39 = OpCompositeExtract %v2float %30 1
+         %40 = OpCompositeExtract %v2float %34 1
+         %41 = OpFOrdEqual %v2bool %39 %40
+         %42 = OpAll %bool %41
+         %43 = OpLogicalAnd %bool %38 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %44
+         %46 = OpLabel
+               OpStore %_GLF_color %24
+               OpBranch %44
+         %44 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..256b8ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,32 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  m = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+  const float2x2 x_30 = mul(transpose(m), transpose(m));
+  const float2x2 x_34 = transpose(mul(m, m));
+  bool tint_tmp = all((x_30[0u] == x_34[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_30[1u] == x_34[1u]));
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..452c4cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2x2 m = float2x2(0.0f);
+  m = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+  float2x2 const x_26 = m;
+  float2x2 const x_28 = m;
+  float2x2 const x_30 = (transpose(x_26) * transpose(x_28));
+  float2x2 const x_31 = m;
+  float2x2 const x_32 = m;
+  float2x2 const x_34 = transpose((x_31 * x_32));
+  if ((all((x_30[0u] == x_34[0u])) && all((x_30[1u] == x_34[1u])))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b135837
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,103 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %16 = OpConstantNull %mat2v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+         %19 = OpConstantComposite %v2float %float_1 %float_2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %22 = OpConstantComposite %v2float %float_3 %float_4
+         %23 = OpConstantComposite %mat2v2float %19 %22
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %v2bool = OpTypeVector %bool 2
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %53 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function %16
+               OpStore %m %23
+         %24 = OpLoad %mat2v2float %m
+         %25 = OpLoad %mat2v2float %m
+         %26 = OpTranspose %mat2v2float %24
+         %27 = OpTranspose %mat2v2float %25
+         %28 = OpMatrixTimesMatrix %mat2v2float %26 %27
+         %29 = OpLoad %mat2v2float %m
+         %30 = OpLoad %mat2v2float %m
+         %32 = OpMatrixTimesMatrix %mat2v2float %29 %30
+         %31 = OpTranspose %mat2v2float %32
+         %37 = OpCompositeExtract %v2float %28 0
+         %38 = OpCompositeExtract %v2float %31 0
+         %39 = OpFOrdEqual %v2bool %37 %38
+         %33 = OpAll %bool %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %33 %42 %41
+         %42 = OpLabel
+         %45 = OpCompositeExtract %v2float %28 1
+         %46 = OpCompositeExtract %v2float %31 1
+         %47 = OpFOrdEqual %v2bool %45 %46
+         %43 = OpAll %bool %47
+               OpBranch %41
+         %41 = OpLabel
+         %48 = OpPhi %bool %33 %11 %43 %42
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %49
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..891a913
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  m = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
+  let x_26 : mat2x2<f32> = m;
+  let x_28 : mat2x2<f32> = m;
+  let x_30 : mat2x2<f32> = (transpose(x_26) * transpose(x_28));
+  let x_31 : mat2x2<f32> = m;
+  let x_32 : mat2x2<f32> = m;
+  let x_34 : mat2x2<f32> = transpose((x_31 * x_32));
+  if ((all((x_30[0u] == x_34[0u])) && all((x_30[1u] == x_34[1u])))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
new file mode 100644
index 0000000..891a913
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
@@ -0,0 +1,29 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  m = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
+  let x_26 : mat2x2<f32> = m;
+  let x_28 : mat2x2<f32> = m;
+  let x_30 : mat2x2<f32> = (transpose(x_26) * transpose(x_28));
+  let x_31 : mat2x2<f32> = m;
+  let x_32 : mat2x2<f32> = m;
+  let x_34 : mat2x2<f32> = transpose((x_31 * x_32));
+  if ((all((x_30[0u] == x_34[0u])) && all((x_30[1u] == x_34[1u])))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..256b8ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,32 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  m = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+  const float2x2 x_30 = mul(transpose(m), transpose(m));
+  const float2x2 x_34 = transpose(mul(m, m));
+  bool tint_tmp = all((x_30[0u] == x_34[0u]));
+  if (tint_tmp) {
+    tint_tmp = all((x_30[1u] == x_34[1u]));
+  }
+  if ((tint_tmp)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..452c4cf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2x2 m = float2x2(0.0f);
+  m = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+  float2x2 const x_26 = m;
+  float2x2 const x_28 = m;
+  float2x2 const x_30 = (transpose(x_26) * transpose(x_28));
+  float2x2 const x_31 = m;
+  float2x2 const x_32 = m;
+  float2x2 const x_34 = transpose((x_31 * x_32));
+  if ((all((x_30[0u] == x_34[0u])) && all((x_30[1u] == x_34[1u])))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b135837
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,103 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %16 = OpConstantNull %mat2v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+         %19 = OpConstantComposite %v2float %float_1 %float_2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %22 = OpConstantComposite %v2float %float_3 %float_4
+         %23 = OpConstantComposite %mat2v2float %19 %22
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %v2bool = OpTypeVector %bool 2
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %53 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %m = OpVariable %_ptr_Function_mat2v2float Function %16
+               OpStore %m %23
+         %24 = OpLoad %mat2v2float %m
+         %25 = OpLoad %mat2v2float %m
+         %26 = OpTranspose %mat2v2float %24
+         %27 = OpTranspose %mat2v2float %25
+         %28 = OpMatrixTimesMatrix %mat2v2float %26 %27
+         %29 = OpLoad %mat2v2float %m
+         %30 = OpLoad %mat2v2float %m
+         %32 = OpMatrixTimesMatrix %mat2v2float %29 %30
+         %31 = OpTranspose %mat2v2float %32
+         %37 = OpCompositeExtract %v2float %28 0
+         %38 = OpCompositeExtract %v2float %31 0
+         %39 = OpFOrdEqual %v2bool %37 %38
+         %33 = OpAll %bool %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %33 %42 %41
+         %42 = OpLabel
+         %45 = OpCompositeExtract %v2float %28 1
+         %46 = OpCompositeExtract %v2float %31 1
+         %47 = OpFOrdEqual %v2bool %45 %46
+         %43 = OpAll %bool %47
+               OpBranch %41
+         %41 = OpLabel
+         %48 = OpPhi %bool %33 %11 %43 %42
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpStore %x_GLF_color %53
+               OpBranch %49
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..891a913
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m : mat2x2<f32>;
+  m = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
+  let x_26 : mat2x2<f32> = m;
+  let x_28 : mat2x2<f32> = m;
+  let x_30 : mat2x2<f32> = (transpose(x_26) * transpose(x_28));
+  let x_31 : mat2x2<f32> = m;
+  let x_32 : mat2x2<f32> = m;
+  let x_34 : mat2x2<f32> = transpose((x_31 * x_32));
+  if ((all((x_30[0u] == x_34[0u])) && all((x_30[1u] == x_34[1u])))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm
new file mode 100644
index 0000000..88b241d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm
@@ -0,0 +1,101 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %f "f"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%float_0_100000001 = OpConstant %float 0.100000001
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %main = OpFunction %void None %13
+         %33 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %34 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %37 = OpLoad %float %36
+         %38 = OpFOrdLessThan %bool %35 %37
+         %39 = OpSelect %float %38 %float_0_100000001 %float_1
+         %40 = OpExtInst %float %1 Trunc %39
+         %41 = OpExtInst %float %1 Fract %40
+               OpStore %f %41
+         %42 = OpLoad %float %f
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpFOrdEqual %bool %42 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %59 = OpLoad %int %58
+         %60 = OpConvertSToF %float %59
+         %61 = OpCompositeConstruct %v4float %51 %54 %57 %60
+               OpStore %_GLF_color %61
+               OpBranch %46
+         %48 = OpLabel
+         %62 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpCompositeConstruct %v4float %64 %64 %64 %64
+               OpStore %_GLF_color %65
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1f17f3d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,51 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  const float x_35 = gl_FragCoord.y;
+  const float x_37 = asfloat(x_7[1].x);
+  f = frac(trunc(((x_35 < x_37) ? 0.100000001f : 1.0f)));
+  const float x_42 = f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_42 == x_44)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_53 = asint(x_9[1].x);
+    const int x_56 = asint(x_9[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_50), float(x_53), float(x_56), float(x_59));
+  } else {
+    const int x_63 = asint(x_9[1].x);
+    const float x_64 = float(x_63);
+    x_GLF_color = float4(x_64, x_64, x_64, x_64);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..268f0cc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float f = 0.0f;
+  float const x_35 = (*(tint_symbol_5)).y;
+  float const x_37 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  f = fract(trunc(select(1.0f, 0.100000001f, (x_35 < x_37))));
+  float const x_42 = f;
+  float const x_44 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_42 == x_44)) {
+    int const x_50 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_53 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_59 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_50), float(x_53), float(x_56), float(x_59));
+  } else {
+    int const x_63 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_64 = float(x_63);
+    *(tint_symbol_6) = float4(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..872fb57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 85
+; Schema: 0
+               OpCapability Shader
+         %39 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%float_0_100000001 = OpConstant %float 0.100000001
+    %float_1 = OpConstant %float 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %72 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %28
+         %31 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %32 = OpLoad %float %31
+         %36 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %37 = OpLoad %float %36
+         %42 = OpFOrdLessThan %bool %32 %37
+         %41 = OpSelect %float %42 %float_0_100000001 %float_1
+         %40 = OpExtInst %float %39 Trunc %41
+         %38 = OpExtInst %float %39 Fract %40
+               OpStore %f %38
+         %46 = OpLoad %float %f
+         %48 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %49 = OpLoad %float %48
+         %50 = OpFOrdEqual %bool %46 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %56
+         %64 = OpConvertSToF %float %58
+         %65 = OpConvertSToF %float %60
+         %66 = OpConvertSToF %float %62
+         %67 = OpCompositeConstruct %v4float %63 %64 %65 %66
+               OpStore %x_GLF_color %67
+               OpBranch %51
+         %53 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpCompositeConstruct %v4float %70 %70 %70 %70
+               OpStore %x_GLF_color %71
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %72
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %76 = OpLabel
+         %77 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %77
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %79 = OpLabel
+         %80 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %80
+         %81 = OpFunctionCall %void %main_1
+         %83 = OpLoad %v4float %x_GLF_color
+         %84 = OpCompositeConstruct %main_out %83
+         %82 = OpFunctionCall %void %tint_symbol_3 %84
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..bba3d95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var f : f32;
+  let x_35 : f32 = gl_FragCoord.y;
+  let x_37 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = fract(trunc(select(1.0, 0.100000001, (x_35 < x_37))));
+  let x_42 : f32 = f;
+  let x_44 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_50), f32(x_53), f32(x_56), f32(x_59));
+  } else {
+    let x_63 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_64 : f32 = f32(x_63);
+    x_GLF_color = vec4<f32>(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
new file mode 100644
index 0000000..bba3d95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var f : f32;
+  let x_35 : f32 = gl_FragCoord.y;
+  let x_37 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = fract(trunc(select(1.0, 0.100000001, (x_35 < x_37))));
+  let x_42 : f32 = f;
+  let x_44 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_50), f32(x_53), f32(x_56), f32(x_59));
+  } else {
+    let x_63 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_64 : f32 = f32(x_63);
+    x_GLF_color = vec4<f32>(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1f17f3d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,51 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b1, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  const float x_35 = gl_FragCoord.y;
+  const float x_37 = asfloat(x_7[1].x);
+  f = frac(trunc(((x_35 < x_37) ? 0.100000001f : 1.0f)));
+  const float x_42 = f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_44 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_42 == x_44)) {
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_50 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const int x_53 = asint(x_9[1].x);
+    const int x_56 = asint(x_9[1].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_59 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    x_GLF_color = float4(float(x_50), float(x_53), float(x_56), float(x_59));
+  } else {
+    const int x_63 = asint(x_9[1].x);
+    const float x_64 = float(x_63);
+    x_GLF_color = float4(x_64, x_64, x_64, x_64);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..268f0cc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_7, constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float f = 0.0f;
+  float const x_35 = (*(tint_symbol_5)).y;
+  float const x_37 = x_7.x_GLF_uniform_float_values.arr[1].el;
+  f = fract(trunc(select(1.0f, 0.100000001f, (x_35 < x_37))));
+  float const x_42 = f;
+  float const x_44 = x_7.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_42 == x_44)) {
+    int const x_50 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_53 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_59 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_50), float(x_53), float(x_56), float(x_59));
+  } else {
+    int const x_63 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_64 = float(x_63);
+    *(tint_symbol_6) = float4(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf1& x_7 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..872fb57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 85
+; Schema: 0
+               OpCapability Shader
+         %39 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_7 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%float_0_100000001 = OpConstant %float 0.100000001
+    %float_1 = OpConstant %float 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+   %main_out = OpTypeStruct %v4float
+         %72 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %28
+         %31 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %32 = OpLoad %float %31
+         %36 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_1
+         %37 = OpLoad %float %36
+         %42 = OpFOrdLessThan %bool %32 %37
+         %41 = OpSelect %float %42 %float_0_100000001 %float_1
+         %40 = OpExtInst %float %39 Trunc %41
+         %38 = OpExtInst %float %39 Fract %40
+               OpStore %f %38
+         %46 = OpLoad %float %f
+         %48 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %int_0
+         %49 = OpLoad %float %48
+         %50 = OpFOrdEqual %bool %46 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpConvertSToF %float %56
+         %64 = OpConvertSToF %float %58
+         %65 = OpConvertSToF %float %60
+         %66 = OpConvertSToF %float %62
+         %67 = OpCompositeConstruct %v4float %63 %64 %65 %66
+               OpStore %x_GLF_color %67
+               OpBranch %51
+         %53 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpCompositeConstruct %v4float %70 %70 %70 %70
+               OpStore %x_GLF_color %71
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %72
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %76 = OpLabel
+         %77 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %77
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %79 = OpLabel
+         %80 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %80
+         %81 = OpFunctionCall %void %main_1
+         %83 = OpLoad %v4float %x_GLF_color
+         %84 = OpCompositeConstruct %main_out %83
+         %82 = OpFunctionCall %void %tint_symbol_3 %84
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..bba3d95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,54 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+fn main_1() {
+  var f : f32;
+  let x_35 : f32 = gl_FragCoord.y;
+  let x_37 : f32 = x_7.x_GLF_uniform_float_values[1];
+  f = fract(trunc(select(1.0, 0.100000001, (x_35 < x_37))));
+  let x_42 : f32 = f;
+  let x_44 : f32 = x_7.x_GLF_uniform_float_values[0];
+  if ((x_42 == x_44)) {
+    let x_50 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_53 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_59 : i32 = x_9.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_50), f32(x_53), f32(x_56), f32(x_59));
+  } else {
+    let x_63 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_64 : f32 = f32(x_63);
+    x_GLF_color = vec4<f32>(x_64, x_64, x_64, x_64);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm
new file mode 100644
index 0000000..d72e66a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm
@@ -0,0 +1,56 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+         %11 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %16 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %main = OpFunction %void None %8
+         %23 = OpLabel
+         %24 = OpVariable %_ptr_Function_v4float Function
+               OpStore %_GLF_color %16
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %26 = OpLoad %int %25
+         %27 = OpIEqual %bool %26 %int_0
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+               OpReturn
+         %28 = OpLabel
+               OpStore %24 %14
+               OpStore %_GLF_color %14
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %v4float None %11
+         %30 = OpLabel
+               OpReturnValue %14
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..325bac8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  float4 x_24 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const int x_26 = asint(x_6[0].x);
+  if ((x_26 == 0)) {
+    return;
+  }
+  x_24 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+float4 func_() {
+  return float4(1.0f, 0.0f, 0.0f, 1.0f);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..cf5d8b8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float4 x_24 = 0.0f;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int const x_26 = x_6.one;
+  if ((x_26 == 0)) {
+    return;
+  }
+  x_24 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+float4 func_() {
+  return float4(1.0f, 0.0f, 0.0f, 1.0f);
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..92c0d33
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,90 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 47
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_24 "x_24"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_ "func_"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+         %44 = OpTypeFunction %v4float
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_24 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %x_GLF_color %19
+         %23 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %24 = OpLoad %int %23
+         %26 = OpIEqual %bool %24 %int_0
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %28
+         %29 = OpLabel
+               OpReturn
+         %28 = OpLabel
+               OpStore %x_24 %31
+               OpStore %x_GLF_color %31
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %v4float None %44
+         %46 = OpLabel
+               OpReturnValue %31
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a354d57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var x_24 : vec4<f32>;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_26 : i32 = x_6.one;
+  if ((x_26 == 0)) {
+    return;
+  }
+  x_24 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_() -> vec4<f32> {
+  return vec4<f32>(1.0, 0.0, 0.0, 1.0);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
new file mode 100644
index 0000000..a354d57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var x_24 : vec4<f32>;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_26 : i32 = x_6.one;
+  if ((x_26 == 0)) {
+    return;
+  }
+  x_24 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_() -> vec4<f32> {
+  return vec4<f32>(1.0, 0.0, 0.0, 1.0);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..325bac8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  float4 x_24 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const int x_26 = asint(x_6[0].x);
+  if ((x_26 == 0)) {
+    return;
+  }
+  x_24 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+float4 func_() {
+  return float4(1.0f, 0.0f, 0.0f, 1.0f);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..cf5d8b8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.msl
@@ -0,0 +1,37 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float4 x_24 = 0.0f;
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int const x_26 = x_6.one;
+  if ((x_26 == 0)) {
+    return;
+  }
+  x_24 = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+float4 func_() {
+  return float4(1.0f, 0.0f, 0.0f, 1.0f);
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..92c0d33
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,90 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 47
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_24 "x_24"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %func_ "func_"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %32 = OpTypeFunction %void %main_out
+         %44 = OpTypeFunction %v4float
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_24 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %x_GLF_color %19
+         %23 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %24 = OpLoad %int %23
+         %26 = OpIEqual %bool %24 %int_0
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %28
+         %29 = OpLabel
+               OpReturn
+         %28 = OpLabel
+               OpStore %x_24 %31
+               OpStore %x_GLF_color %31
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol = OpFunctionParameter %main_out
+         %36 = OpLabel
+         %37 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %37
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %x_GLF_color
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_2 %43
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %v4float None %44
+         %46 = OpLabel
+               OpReturnValue %31
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a354d57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,35 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var x_24 : vec4<f32>;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_26 : i32 = x_6.one;
+  if ((x_26 == 0)) {
+    return;
+  }
+  x_24 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn func_() -> vec4<f32> {
+  return vec4<f32>(1.0, 0.0, 0.0, 1.0);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm
new file mode 100644
index 0000000..763916f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm
@@ -0,0 +1,114 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %m24 "m24"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %__0 ""
+               OpName %a "a"
+               OpName %v2 "v2"
+               OpName %v3 "v3"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+     %uint_0 = OpConstant %uint 0
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%float_n0x1_8p_128 = OpConstant %float -0x1.8p+128
+         %32 = OpConstantComposite %v2float %float_n0x1_8p_128 %float_1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %bool = OpTypeBool
+         %36 = OpConstantComposite %v2float %float_0 %float_0
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %14
+         %38 = OpLabel
+        %m24 = OpVariable %_ptr_Function_mat2v2float Function
+          %a = OpVariable %_ptr_Function_float Function
+         %v2 = OpVariable %_ptr_Function_v2float Function
+         %v3 = OpVariable %_ptr_Function_v2float Function
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %44 = OpLoad %float %43
+         %45 = OpFMul %float %44 %float_1
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %v2float %40 %42
+         %49 = OpCompositeConstruct %v2float %45 %47
+         %50 = OpCompositeConstruct %mat2v2float %48 %49
+               OpStore %m24 %50
+         %51 = OpLoad %mat2v2float %m24
+         %52 = OpCompositeExtract %float %51 0 0
+               OpStore %a %52
+               OpStore %v2 %32
+         %53 = OpLoad %v2float %v2
+         %54 = OpLoad %float %a
+         %55 = OpCompositeConstruct %v2float %54 %float_1
+         %56 = OpExtInst %v2float %1 Reflect %53 %55
+               OpStore %v3 %56
+         %57 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpLoad %v2float %v3
+         %60 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpCompositeExtract %float %59 0
+         %63 = OpCompositeExtract %float %59 1
+         %64 = OpCompositeConstruct %v4float %58 %62 %63 %61
+               OpStore %_GLF_color %64
+         %65 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %68 = OpLoad %float %67
+         %69 = OpFOrdEqual %bool %66 %68
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+         %73 = OpLoad %v4float %_GLF_color
+         %74 = OpVectorShuffle %v4float %73 %36 0 4 5 3
+               OpStore %_GLF_color %74
+               OpBranch %70
+         %72 = OpLabel
+               OpStore %_GLF_color %37
+               OpBranch %70
+         %70 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a4a3ad2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,55 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2x2 m24 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float a = 0.0f;
+  float2 v2 = float2(0.0f, 0.0f);
+  float2 v3 = float2(0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_42 = asfloat(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  const float x_44 = asfloat(x_8[0].x);
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const float x_47 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  m24 = float2x2(float2(x_40, x_42), float2((x_44 * 1.0f), x_47));
+  a = m24[0u].x;
+  v2 = float2(asfloat(0x7fc00000u), 1.0f);
+  v3 = reflect(v2, float2(a, 1.0f));
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const float x_58 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float2 x_59 = v3;
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_61 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  x_GLF_color = float4(x_58, x_59.x, x_59.y, x_61);
+  const float x_66 = asfloat(x_8[0].y);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const float x_68 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  if ((x_66 == x_68)) {
+    const float4 x_73 = x_GLF_color;
+    x_GLF_color = float4(x_73.x, float2(0.0f, 0.0f).x, float2(0.0f, 0.0f).y, x_73.w);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..570e97a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.msl
@@ -0,0 +1,62 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 v1;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float2x2 m24 = float2x2(0.0f);
+  float a = 0.0f;
+  float2 v2 = 0.0f;
+  float2 v3 = 0.0f;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_44 = x_8.v1.x;
+  float const x_47 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  m24 = float2x2(float2(x_40, x_42), float2((x_44 * 1.0f), x_47));
+  float2x2 const x_51 = m24;
+  a = x_51[0u].x;
+  v2 = float2(NAN, 1.0f);
+  float2 const x_53 = v2;
+  float const x_54 = a;
+  v3 = reflect(x_53, float2(x_54, 1.0f));
+  float const x_58 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float2 const x_59 = v3;
+  float const x_61 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  *(tint_symbol_4) = float4(x_58, x_59.x, x_59.y, x_61);
+  float const x_66 = x_8.v1.y;
+  float const x_68 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_66 == x_68)) {
+    float4 const x_73 = *(tint_symbol_4);
+    *(tint_symbol_4) = float4(x_73.x, float2(0.0f, 0.0f).x, float2(0.0f, 0.0f).y, x_73.w);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a0d5039
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,155 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 98
+; Schema: 0
+               OpCapability Shader
+         %58 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "v1"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m24 "m24"
+               OpName %a "a"
+               OpName %v2 "v2"
+               OpName %v3 "v3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %25 = OpConstantNull %mat2v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %31 = OpConstantNull %v2float
+     %uint_0 = OpConstant %uint 0
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+%float_n0x1_8p_128 = OpConstant %float -0x1.8p+128
+         %54 = OpConstantComposite %v2float %float_n0x1_8p_128 %float_1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %80 = OpConstantComposite %v2float %float_0 %float_0
+         %85 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %86 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+        %m24 = OpVariable %_ptr_Function_mat2v2float Function %25
+          %a = OpVariable %_ptr_Function_float Function %28
+         %v2 = OpVariable %_ptr_Function_v2float Function %31
+         %v3 = OpVariable %_ptr_Function_v2float Function %31
+         %37 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %38 = OpLoad %float %37
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %44 = OpLoad %float %43
+         %45 = OpCompositeConstruct %v2float %38 %40
+         %47 = OpFMul %float %42 %float_1
+         %48 = OpCompositeConstruct %v2float %47 %44
+         %49 = OpCompositeConstruct %mat2v2float %45 %48
+               OpStore %m24 %49
+         %50 = OpLoad %mat2v2float %m24
+         %51 = OpCompositeExtract %v2float %50 0
+         %52 = OpCompositeExtract %float %51 0
+               OpStore %a %52
+               OpStore %v2 %54
+         %55 = OpLoad %v2float %v2
+         %56 = OpLoad %float %a
+         %59 = OpCompositeConstruct %v2float %56 %float_1
+         %57 = OpExtInst %v2float %58 Reflect %55 %59
+               OpStore %v3 %57
+         %60 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpLoad %v2float %v3
+         %63 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %64 = OpLoad %float %63
+         %65 = OpCompositeExtract %float %62 0
+         %66 = OpCompositeExtract %float %62 1
+         %67 = OpCompositeConstruct %v4float %61 %65 %66 %64
+               OpStore %x_GLF_color %67
+         %68 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %69 = OpLoad %float %68
+         %70 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %71 = OpLoad %float %70
+         %72 = OpFOrdEqual %bool %69 %71
+               OpSelectionMerge %74 None
+               OpBranchConditional %72 %75 %76
+         %75 = OpLabel
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeExtract %float %77 0
+         %81 = OpCompositeExtract %float %80 0
+         %82 = OpCompositeExtract %float %80 1
+         %83 = OpCompositeExtract %float %77 3
+         %84 = OpCompositeConstruct %v4float %78 %81 %82 %83
+               OpStore %x_GLF_color %84
+               OpBranch %74
+         %76 = OpLabel
+               OpStore %x_GLF_color %85
+               OpBranch %74
+         %74 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %86
+%tint_symbol = OpFunctionParameter %main_out
+         %90 = OpLabel
+         %91 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %91
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %93 = OpLabel
+         %94 = OpFunctionCall %void %main_1
+         %96 = OpLoad %v4float %x_GLF_color
+         %97 = OpCompositeConstruct %main_out %96
+         %95 = OpFunctionCall %void %tint_symbol_2 %97
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1e71e594
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m24 : mat2x2<f32>;
+  var a : f32;
+  var v2 : vec2<f32>;
+  var v3 : vec2<f32>;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_44 : f32 = x_8.v1.x;
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m24 = mat2x2<f32>(vec2<f32>(x_40, x_42), vec2<f32>((x_44 * 1.0), x_47));
+  let x_51 : mat2x2<f32> = m24;
+  a = x_51[0u].x;
+  v2 = vec2<f32>(-0x1.8p+128, 1.0);
+  let x_53 : vec2<f32> = v2;
+  let x_54 : f32 = a;
+  v3 = reflect(x_53, vec2<f32>(x_54, 1.0));
+  let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_59 : vec2<f32> = v3;
+  let x_61 : f32 = x_6.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_58, x_59.x, x_59.y, x_61);
+  let x_66 : f32 = x_8.v1.y;
+  let x_68 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_66 == x_68)) {
+    let x_73 : vec4<f32> = x_GLF_color;
+    x_GLF_color = vec4<f32>(x_73.x, vec2<f32>(0.0, 0.0).x, vec2<f32>(0.0, 0.0).y, x_73.w);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
new file mode 100644
index 0000000..1e71e594
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+[[block]]
+struct buf1 {
+  v1 : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m24 : mat2x2<f32>;
+  var a : f32;
+  var v2 : vec2<f32>;
+  var v3 : vec2<f32>;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_44 : f32 = x_8.v1.x;
+  let x_47 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m24 = mat2x2<f32>(vec2<f32>(x_40, x_42), vec2<f32>((x_44 * 1.0), x_47));
+  let x_51 : mat2x2<f32> = m24;
+  a = x_51[0u].x;
+  v2 = vec2<f32>(-0x1.8p+128, 1.0);
+  let x_53 : vec2<f32> = v2;
+  let x_54 : f32 = a;
+  v3 = reflect(x_53, vec2<f32>(x_54, 1.0));
+  let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_59 : vec2<f32> = v3;
+  let x_61 : f32 = x_6.x_GLF_uniform_float_values[0];
+  x_GLF_color = vec4<f32>(x_58, x_59.x, x_59.y, x_61);
+  let x_66 : f32 = x_8.v1.y;
+  let x_68 : f32 = x_6.x_GLF_uniform_float_values[0];
+  if ((x_66 == x_68)) {
+    let x_73 : vec4<f32> = x_GLF_color;
+    x_GLF_color = vec4<f32>(x_73.x, vec2<f32>(0.0, 0.0).x, vec2<f32>(0.0, 0.0).y, x_73.w);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..5dab884
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl:31:22 error: expected ')' for type constructor
+  v2 = vec2<f32>(-0x1.8p+128, 1.0);
+                     ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..5dab884
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.msl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl:31:22 error: expected ')' for type constructor
+  v2 = vec2<f32>(-0x1.8p+128, 1.0);
+                     ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5dab884
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl:31:22 error: expected ')' for type constructor
+  v2 = vec2<f32>(-0x1.8p+128, 1.0);
+                     ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5dab884
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,6 @@
+SKIP: FAILED
+
+graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl:31:22 error: expected ')' for type constructor
+  v2 = vec2<f32>(-0x1.8p+128, 1.0);
+                     ^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm
new file mode 100644
index 0000000..71b28a0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm
@@ -0,0 +1,171 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_i1_ "func(struct-S-i11;i1;"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %index "index"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_S %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %int_10 = OpConstant %int 10
+    %uint_10 = OpConstant %uint 10
+%_arr_S_uint_10 = OpTypeArray %S %uint_10
+%_ptr_Function__arr_S_uint_10 = OpTypePointer Function %_arr_S_uint_10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %19
+         %38 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+        %arr = OpVariable %_ptr_Function__arr_S_uint_10 Function
+      %index = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_S Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_S Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+               OpStore %i %int_0
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpSLessThan %bool %43 %int_10
+               OpBranchConditional %44 %45 %40
+         %45 = OpLabel
+         %46 = OpLoad %int %i
+         %47 = OpAccessChain %_ptr_Function_int %arr %46 %int_0
+               OpStore %47 %int_0
+               OpBranch %41
+         %41 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpIAdd %int %48 %int_1
+               OpStore %i %49
+               OpBranch %39
+         %40 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpIEqual %bool %51 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+         %58 = OpLoad %int %index
+         %59 = OpAccessChain %_ptr_Function_S %arr %58
+         %60 = OpLoad %S %59
+               OpStore %param %60
+         %61 = OpLoad %int %index
+               OpStore %param_0 %61
+         %62 = OpFunctionCall %void %func_struct_S_i11_i1_ %param %param_0
+         %63 = OpLoad %S %param
+         %64 = OpAccessChain %_ptr_Function_S %arr %58
+               OpStore %64 %63
+               OpBranch %55
+         %57 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Function_S %arr %66
+         %68 = OpLoad %S %67
+               OpStore %param_1 %68
+         %69 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %70 = OpLoad %int %69
+               OpStore %param_2 %70
+         %71 = OpFunctionCall %void %func_struct_S_i11_i1_ %param_1 %param_2
+         %72 = OpLoad %S %param_1
+         %73 = OpAccessChain %_ptr_Function_S %arr %66
+               OpStore %73 %72
+               OpBranch %55
+         %55 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Function_int %arr %75 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpIEqual %bool %77 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %85 = OpLoad %int %84
+         %86 = OpConvertSToF %float %85
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpConvertSToF %float %88
+         %90 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %91 = OpLoad %int %90
+         %92 = OpConvertSToF %float %91
+         %93 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %94 = OpLoad %int %93
+         %95 = OpConvertSToF %float %94
+         %96 = OpCompositeConstruct %v4float %86 %89 %92 %95
+               OpStore %_GLF_color %96
+               OpBranch %81
+         %83 = OpLabel
+         %97 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %98 = OpLoad %int %97
+         %99 = OpConvertSToF %float %98
+        %100 = OpCompositeConstruct %v4float %99 %99 %99 %99
+               OpStore %_GLF_color %100
+               OpBranch %81
+         %81 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_struct_S_i11_i1_ = OpFunction %void None %23
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+        %101 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %103 = OpLoad %int %102
+        %104 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %105 = OpLoad %int %104
+        %106 = OpIEqual %bool %103 %105
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+               OpReturn
+        %107 = OpLabel
+        %109 = OpLoad %int %x
+        %110 = OpAccessChain %_ptr_Function_int %s %int_0
+               OpStore %110 %109
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ac091bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,89 @@
+struct S {
+  int data;
+};
+
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_struct_S_i11_i1_(inout S s, inout int x) {
+  const int x_103 = asint(x_9[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_105 = asint(x_9[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_103 == x_105)) {
+    return;
+  }
+  const int x_109 = x;
+  s.data = x_109;
+  return;
+}
+
+void main_1() {
+  int i = 0;
+  S arr[10] = (S[10])0;
+  int index = 0;
+  S param = (S)0;
+  int param_1 = 0;
+  S param_2 = (S)0;
+  int param_3 = 0;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      arr[i].data = 0;
+    }
+  }
+  const int x_51 = asint(x_9[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_53 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_51 == x_53)) {
+    const int x_58 = index;
+    const S x_60 = arr[x_58];
+    param = x_60;
+    param_1 = index;
+    func_struct_S_i11_i1_(param, param_1);
+    arr[x_58] = param;
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const S x_68 = arr[x_66];
+    param_2 = x_68;
+    const int x_70 = asint(x_9[1].x);
+    param_3 = x_70;
+    func_struct_S_i11_i1_(param_2, param_3);
+    arr[x_66] = param_2;
+  }
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_75 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_77 = arr[x_75].data;
+  const int x_79 = asint(x_9[1].x);
+  if ((x_77 == x_79)) {
+    const int x_85 = asint(x_9[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_88 = asint(x_9[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_91 = asint(x_9[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_94 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_85), float(x_88), float(x_91), float(x_94));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_98 = asint(x_9[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_99 = float(x_98);
+    x_GLF_color = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..34d029d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int data;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  S arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_struct_S_i11_i1_(constant buf0& x_9, thread S* const s, thread int* const x) {
+  int const x_103 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  int const x_105 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_103 == x_105)) {
+    return;
+  }
+  int const x_109 = *(x);
+  (*(s)).data = x_109;
+  return;
+}
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 arr = {};
+  int index = 0;
+  S param = {};
+  int param_1 = 0;
+  S param_2 = {};
+  int param_3 = 0;
+  i = 0;
+  while (true) {
+    int const x_43 = i;
+    if ((x_43 < 10)) {
+    } else {
+      break;
+    }
+    int const x_46 = i;
+    arr.arr[x_46].data = 0;
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  int const x_51 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  int const x_53 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_51 == x_53)) {
+    int const x_58 = index;
+    S const x_60 = arr.arr[x_58];
+    param = x_60;
+    int const x_61 = index;
+    param_1 = x_61;
+    func_struct_S_i11_i1_(x_9, &(param), &(param_1));
+    S const x_63 = param;
+    arr.arr[x_58] = x_63;
+  } else {
+    int const x_66 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    S const x_68 = arr.arr[x_66];
+    param_2 = x_68;
+    int const x_70 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    param_3 = x_70;
+    func_struct_S_i11_i1_(x_9, &(param_2), &(param_3));
+    S const x_72 = param_2;
+    arr.arr[x_66] = x_72;
+  }
+  int const x_75 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  int const x_77 = arr.arr[x_75].data;
+  int const x_79 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_77 == x_79)) {
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_88 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_91 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_94 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_85), float(x_88), float(x_91), float(x_94));
+  } else {
+    int const x_98 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    float const x_99 = float(x_98);
+    *(tint_symbol_4) = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..85eaf66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,213 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 137
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_i1_ "func_struct_S_i11_i1_"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %index "index"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_S_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpTypeFunction %void %_ptr_Function_S %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+         %40 = OpTypeFunction %void
+         %44 = OpConstantNull %int
+    %uint_10 = OpConstant %uint 10
+%_arr_S_uint_10 = OpTypeArray %S %uint_10
+%_ptr_Function__arr_S_uint_10 = OpTypePointer Function %_arr_S_uint_10
+         %49 = OpConstantNull %_arr_S_uint_10
+         %52 = OpConstantNull %S
+     %int_10 = OpConstant %int 10
+   %main_out = OpTypeStruct %v4float
+        %125 = OpTypeFunction %void %main_out
+%func_struct_S_i11_i1_ = OpFunction %void None %15
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+         %23 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %30 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpIEqual %bool %28 %31
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %34
+         %35 = OpLabel
+               OpReturn
+         %34 = OpLabel
+         %37 = OpLoad %int %x
+         %39 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %39 %37
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %40
+         %42 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %44
+        %arr = OpVariable %_ptr_Function__arr_S_uint_10 Function %49
+      %index = OpVariable %_ptr_Function_int Function %44
+      %param = OpVariable %_ptr_Function_S Function %52
+    %param_1 = OpVariable %_ptr_Function_int Function %44
+    %param_2 = OpVariable %_ptr_Function_S Function %52
+    %param_3 = OpVariable %_ptr_Function_int Function %44
+               OpStore %i %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpLoad %int %i
+         %62 = OpSLessThan %bool %60 %int_10
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %57
+         %63 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpAccessChain %_ptr_Function_int %arr %66 %uint_0
+               OpStore %67 %int_0
+               OpBranch %58
+         %58 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %i %69
+               OpBranch %56
+         %57 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpIEqual %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpLoad %int %index
+         %79 = OpAccessChain %_ptr_Function_S %arr %78
+         %80 = OpLoad %S %79
+               OpStore %param %80
+         %81 = OpLoad %int %index
+               OpStore %param_1 %81
+         %82 = OpFunctionCall %void %func_struct_S_i11_i1_ %param %param_1
+         %85 = OpLoad %S %param
+         %86 = OpAccessChain %_ptr_Function_S %arr %78
+               OpStore %86 %85
+               OpBranch %75
+         %77 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Function_S %arr %88
+         %90 = OpLoad %S %89
+               OpStore %param_2 %90
+         %91 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %92 = OpLoad %int %91
+               OpStore %param_3 %92
+         %93 = OpFunctionCall %void %func_struct_S_i11_i1_ %param_2 %param_3
+         %96 = OpLoad %S %param_2
+         %97 = OpAccessChain %_ptr_Function_S %arr %88
+               OpStore %97 %96
+               OpBranch %75
+         %75 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Function_int %arr %99 %uint_0
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %103 = OpLoad %int %102
+        %104 = OpIEqual %bool %101 %103
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %111 = OpLoad %int %110
+        %112 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %115 = OpLoad %int %114
+        %116 = OpConvertSToF %float %109
+        %117 = OpConvertSToF %float %111
+        %118 = OpConvertSToF %float %113
+        %119 = OpConvertSToF %float %115
+        %120 = OpCompositeConstruct %v4float %116 %117 %118 %119
+               OpStore %x_GLF_color %120
+               OpBranch %105
+        %107 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %122 = OpLoad %int %121
+        %123 = OpConvertSToF %float %122
+        %124 = OpCompositeConstruct %v4float %123 %123 %123 %123
+               OpStore %x_GLF_color %124
+               OpBranch %105
+        %105 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %125
+%tint_symbol = OpFunctionParameter %main_out
+        %129 = OpLabel
+        %130 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %130
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %40
+        %132 = OpLabel
+        %133 = OpFunctionCall %void %main_1
+        %135 = OpLoad %v4float %x_GLF_color
+        %136 = OpCompositeConstruct %main_out %135
+        %134 = OpFunctionCall %void %tint_symbol_2 %136
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b1a8e78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,97 @@
+struct S {
+  data : i32;
+};
+
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_i1_(s : ptr<function, S>, x : ptr<function, i32>) {
+  let x_103 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_105 : i32 = x_9.x_GLF_uniform_int_values[0];
+  if ((x_103 == x_105)) {
+    return;
+  }
+  let x_109 : i32 = *(x);
+  (*(s)).data = x_109;
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var arr : array<S, 10>;
+  var index : i32;
+  var param : S;
+  var param_1 : i32;
+  var param_2 : S;
+  var param_3 : i32;
+  i = 0;
+  loop {
+    let x_43 : i32 = i;
+    if ((x_43 < 10)) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = i;
+    arr[x_46].data = 0;
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_51 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_53 : i32 = x_9.x_GLF_uniform_int_values[0];
+  if ((x_51 == x_53)) {
+    let x_58 : i32 = index;
+    let x_60 : S = arr[x_58];
+    param = x_60;
+    let x_61 : i32 = index;
+    param_1 = x_61;
+    func_struct_S_i11_i1_(&(param), &(param_1));
+    let x_63 : S = param;
+    arr[x_58] = x_63;
+  } else {
+    let x_66 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_68 : S = arr[x_66];
+    param_2 = x_68;
+    let x_70 : i32 = x_9.x_GLF_uniform_int_values[1];
+    param_3 = x_70;
+    func_struct_S_i11_i1_(&(param_2), &(param_3));
+    let x_72 : S = param_2;
+    arr[x_66] = x_72;
+  }
+  let x_75 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = arr[x_75].data;
+  let x_79 : i32 = x_9.x_GLF_uniform_int_values[1];
+  if ((x_77 == x_79)) {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_88 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_91 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_94 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_85), f32(x_88), f32(x_91), f32(x_94));
+  } else {
+    let x_98 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_99 : f32 = f32(x_98);
+    x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
new file mode 100644
index 0000000..b1a8e78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
@@ -0,0 +1,97 @@
+struct S {
+  data : i32;
+};
+
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_i1_(s : ptr<function, S>, x : ptr<function, i32>) {
+  let x_103 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_105 : i32 = x_9.x_GLF_uniform_int_values[0];
+  if ((x_103 == x_105)) {
+    return;
+  }
+  let x_109 : i32 = *(x);
+  (*(s)).data = x_109;
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var arr : array<S, 10>;
+  var index : i32;
+  var param : S;
+  var param_1 : i32;
+  var param_2 : S;
+  var param_3 : i32;
+  i = 0;
+  loop {
+    let x_43 : i32 = i;
+    if ((x_43 < 10)) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = i;
+    arr[x_46].data = 0;
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_51 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_53 : i32 = x_9.x_GLF_uniform_int_values[0];
+  if ((x_51 == x_53)) {
+    let x_58 : i32 = index;
+    let x_60 : S = arr[x_58];
+    param = x_60;
+    let x_61 : i32 = index;
+    param_1 = x_61;
+    func_struct_S_i11_i1_(&(param), &(param_1));
+    let x_63 : S = param;
+    arr[x_58] = x_63;
+  } else {
+    let x_66 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_68 : S = arr[x_66];
+    param_2 = x_68;
+    let x_70 : i32 = x_9.x_GLF_uniform_int_values[1];
+    param_3 = x_70;
+    func_struct_S_i11_i1_(&(param_2), &(param_3));
+    let x_72 : S = param_2;
+    arr[x_66] = x_72;
+  }
+  let x_75 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = arr[x_75].data;
+  let x_79 : i32 = x_9.x_GLF_uniform_int_values[1];
+  if ((x_77 == x_79)) {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_88 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_91 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_94 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_85), f32(x_88), f32(x_91), f32(x_94));
+  } else {
+    let x_98 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_99 : f32 = f32(x_98);
+    x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ac091bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,89 @@
+struct S {
+  int data;
+};
+
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_struct_S_i11_i1_(inout S s, inout int x) {
+  const int x_103 = asint(x_9[1].x);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_105 = asint(x_9[scalar_offset / 4][scalar_offset % 4]);
+  if ((x_103 == x_105)) {
+    return;
+  }
+  const int x_109 = x;
+  s.data = x_109;
+  return;
+}
+
+void main_1() {
+  int i = 0;
+  S arr[10] = (S[10])0;
+  int index = 0;
+  S param = (S)0;
+  int param_1 = 0;
+  S param_2 = (S)0;
+  int param_3 = 0;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      arr[i].data = 0;
+    }
+  }
+  const int x_51 = asint(x_9[1].x);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_53 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_51 == x_53)) {
+    const int x_58 = index;
+    const S x_60 = arr[x_58];
+    param = x_60;
+    param_1 = index;
+    func_struct_S_i11_i1_(param, param_1);
+    arr[x_58] = param;
+  } else {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_9[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const S x_68 = arr[x_66];
+    param_2 = x_68;
+    const int x_70 = asint(x_9[1].x);
+    param_3 = x_70;
+    func_struct_S_i11_i1_(param_2, param_3);
+    arr[x_66] = param_2;
+  }
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_75 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const int x_77 = arr[x_75].data;
+  const int x_79 = asint(x_9[1].x);
+  if ((x_77 == x_79)) {
+    const int x_85 = asint(x_9[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_88 = asint(x_9[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_91 = asint(x_9[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    const int x_94 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_85), float(x_88), float(x_91), float(x_94));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_98 = asint(x_9[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_99 = float(x_98);
+    x_GLF_color = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..34d029d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int data;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  S arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_struct_S_i11_i1_(constant buf0& x_9, thread S* const s, thread int* const x) {
+  int const x_103 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  int const x_105 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_103 == x_105)) {
+    return;
+  }
+  int const x_109 = *(x);
+  (*(s)).data = x_109;
+  return;
+}
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 arr = {};
+  int index = 0;
+  S param = {};
+  int param_1 = 0;
+  S param_2 = {};
+  int param_3 = 0;
+  i = 0;
+  while (true) {
+    int const x_43 = i;
+    if ((x_43 < 10)) {
+    } else {
+      break;
+    }
+    int const x_46 = i;
+    arr.arr[x_46].data = 0;
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  int const x_51 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  int const x_53 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_51 == x_53)) {
+    int const x_58 = index;
+    S const x_60 = arr.arr[x_58];
+    param = x_60;
+    int const x_61 = index;
+    param_1 = x_61;
+    func_struct_S_i11_i1_(x_9, &(param), &(param_1));
+    S const x_63 = param;
+    arr.arr[x_58] = x_63;
+  } else {
+    int const x_66 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    S const x_68 = arr.arr[x_66];
+    param_2 = x_68;
+    int const x_70 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    param_3 = x_70;
+    func_struct_S_i11_i1_(x_9, &(param_2), &(param_3));
+    S const x_72 = param_2;
+    arr.arr[x_66] = x_72;
+  }
+  int const x_75 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  int const x_77 = arr.arr[x_75].data;
+  int const x_79 = x_9.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_77 == x_79)) {
+    int const x_85 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_88 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_91 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_94 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_85), float(x_88), float(x_91), float(x_94));
+  } else {
+    int const x_98 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    float const x_99 = float(x_98);
+    *(tint_symbol_4) = float4(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..85eaf66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,213 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 137
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %S "S"
+               OpMemberName %S 0 "data"
+               OpName %func_struct_S_i11_i1_ "func_struct_S_i11_i1_"
+               OpName %s "s"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %arr "arr"
+               OpName %index "index"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_S_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+          %S = OpTypeStruct %int
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpTypeFunction %void %_ptr_Function_S %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+         %40 = OpTypeFunction %void
+         %44 = OpConstantNull %int
+    %uint_10 = OpConstant %uint 10
+%_arr_S_uint_10 = OpTypeArray %S %uint_10
+%_ptr_Function__arr_S_uint_10 = OpTypePointer Function %_arr_S_uint_10
+         %49 = OpConstantNull %_arr_S_uint_10
+         %52 = OpConstantNull %S
+     %int_10 = OpConstant %int 10
+   %main_out = OpTypeStruct %v4float
+        %125 = OpTypeFunction %void %main_out
+%func_struct_S_i11_i1_ = OpFunction %void None %15
+          %s = OpFunctionParameter %_ptr_Function_S
+          %x = OpFunctionParameter %_ptr_Function_int
+         %23 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %30 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %31 = OpLoad %int %30
+         %32 = OpIEqual %bool %28 %31
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %34
+         %35 = OpLabel
+               OpReturn
+         %34 = OpLabel
+         %37 = OpLoad %int %x
+         %39 = OpAccessChain %_ptr_Function_int %s %uint_0
+               OpStore %39 %37
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %40
+         %42 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %44
+        %arr = OpVariable %_ptr_Function__arr_S_uint_10 Function %49
+      %index = OpVariable %_ptr_Function_int Function %44
+      %param = OpVariable %_ptr_Function_S Function %52
+    %param_1 = OpVariable %_ptr_Function_int Function %44
+    %param_2 = OpVariable %_ptr_Function_S Function %52
+    %param_3 = OpVariable %_ptr_Function_int Function %44
+               OpStore %i %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpLoad %int %i
+         %62 = OpSLessThan %bool %60 %int_10
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %57
+         %63 = OpLabel
+         %66 = OpLoad %int %i
+         %67 = OpAccessChain %_ptr_Function_int %arr %66 %uint_0
+               OpStore %67 %int_0
+               OpBranch %58
+         %58 = OpLabel
+         %68 = OpLoad %int %i
+         %69 = OpIAdd %int %68 %int_1
+               OpStore %i %69
+               OpBranch %56
+         %57 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpIEqual %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpLoad %int %index
+         %79 = OpAccessChain %_ptr_Function_S %arr %78
+         %80 = OpLoad %S %79
+               OpStore %param %80
+         %81 = OpLoad %int %index
+               OpStore %param_1 %81
+         %82 = OpFunctionCall %void %func_struct_S_i11_i1_ %param %param_1
+         %85 = OpLoad %S %param
+         %86 = OpAccessChain %_ptr_Function_S %arr %78
+               OpStore %86 %85
+               OpBranch %75
+         %77 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Function_S %arr %88
+         %90 = OpLoad %S %89
+               OpStore %param_2 %90
+         %91 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+         %92 = OpLoad %int %91
+               OpStore %param_3 %92
+         %93 = OpFunctionCall %void %func_struct_S_i11_i1_ %param_2 %param_3
+         %96 = OpLoad %S %param_2
+         %97 = OpAccessChain %_ptr_Function_S %arr %88
+               OpStore %97 %96
+               OpBranch %75
+         %75 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Function_int %arr %99 %uint_0
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %103 = OpLoad %int %102
+        %104 = OpIEqual %bool %101 %103
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %111 = OpLoad %int %110
+        %112 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %115 = OpLoad %int %114
+        %116 = OpConvertSToF %float %109
+        %117 = OpConvertSToF %float %111
+        %118 = OpConvertSToF %float %113
+        %119 = OpConvertSToF %float %115
+        %120 = OpCompositeConstruct %v4float %116 %117 %118 %119
+               OpStore %x_GLF_color %120
+               OpBranch %105
+        %107 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %122 = OpLoad %int %121
+        %123 = OpConvertSToF %float %122
+        %124 = OpCompositeConstruct %v4float %123 %123 %123 %123
+               OpStore %x_GLF_color %124
+               OpBranch %105
+        %105 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %125
+%tint_symbol = OpFunctionParameter %main_out
+        %129 = OpLabel
+        %130 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %130
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %40
+        %132 = OpLabel
+        %133 = OpFunctionCall %void %main_1
+        %135 = OpLoad %v4float %x_GLF_color
+        %136 = OpCompositeConstruct %main_out %135
+        %134 = OpFunctionCall %void %tint_symbol_2 %136
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b1a8e78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,97 @@
+struct S {
+  data : i32;
+};
+
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_struct_S_i11_i1_(s : ptr<function, S>, x : ptr<function, i32>) {
+  let x_103 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_105 : i32 = x_9.x_GLF_uniform_int_values[0];
+  if ((x_103 == x_105)) {
+    return;
+  }
+  let x_109 : i32 = *(x);
+  (*(s)).data = x_109;
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var arr : array<S, 10>;
+  var index : i32;
+  var param : S;
+  var param_1 : i32;
+  var param_2 : S;
+  var param_3 : i32;
+  i = 0;
+  loop {
+    let x_43 : i32 = i;
+    if ((x_43 < 10)) {
+    } else {
+      break;
+    }
+    let x_46 : i32 = i;
+    arr[x_46].data = 0;
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_51 : i32 = x_9.x_GLF_uniform_int_values[1];
+  let x_53 : i32 = x_9.x_GLF_uniform_int_values[0];
+  if ((x_51 == x_53)) {
+    let x_58 : i32 = index;
+    let x_60 : S = arr[x_58];
+    param = x_60;
+    let x_61 : i32 = index;
+    param_1 = x_61;
+    func_struct_S_i11_i1_(&(param), &(param_1));
+    let x_63 : S = param;
+    arr[x_58] = x_63;
+  } else {
+    let x_66 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_68 : S = arr[x_66];
+    param_2 = x_68;
+    let x_70 : i32 = x_9.x_GLF_uniform_int_values[1];
+    param_3 = x_70;
+    func_struct_S_i11_i1_(&(param_2), &(param_3));
+    let x_72 : S = param_2;
+    arr[x_66] = x_72;
+  }
+  let x_75 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_77 : i32 = arr[x_75].data;
+  let x_79 : i32 = x_9.x_GLF_uniform_int_values[1];
+  if ((x_77 == x_79)) {
+    let x_85 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_88 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_91 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_94 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_85), f32(x_88), f32(x_91), f32(x_94));
+  } else {
+    let x_98 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_99 : f32 = f32(x_98);
+    x_GLF_color = vec4<f32>(x_99, x_99, x_99, x_99);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm
new file mode 100644
index 0000000..0c0c766
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm
@@ -0,0 +1,126 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %v "v"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_uint_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "_GLF_uniform_float_values"
+               OpName %__1 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 2
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf0 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+ %uint_92382 = OpConstant %uint 92382
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf2 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__1 = OpVariable %_ptr_Uniform_buf2 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %15
+         %37 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function
+         %38 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 %int_0
+         %39 = OpLoad %uint %38
+         %40 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 %int_0
+         %41 = OpLoad %uint %40
+         %42 = OpSelect %uint %true %uint_92382 %41
+         %43 = OpUDiv %uint %39 %42
+         %44 = OpExtInst %v4float %1 UnpackUnorm4x8 %43
+               OpStore %v %44
+         %45 = OpLoad %v4float %v
+         %46 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpAccessChain %_ptr_Uniform_float %__1 %int_0 %int_1
+         %56 = OpLoad %float %55
+         %57 = OpAccessChain %_ptr_Uniform_float %__1 %int_0 %int_2
+         %58 = OpLoad %float %57
+         %59 = OpFDiv %float %56 %58
+         %60 = OpCompositeConstruct %v4float %48 %51 %54 %59
+         %61 = OpExtInst %float %1 Distance %45 %60
+         %62 = OpAccessChain %_ptr_Uniform_float %__1 %int_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpFOrdLessThan %bool %61 %63
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %72
+         %74 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %75
+         %77 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpConvertSToF %float %78
+         %80 = OpCompositeConstruct %v4float %70 %73 %76 %79
+               OpStore %_GLF_color %80
+               OpBranch %65
+         %67 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %82
+         %84 = OpCompositeConstruct %v4float %83 %83 %83 %83
+               OpStore %_GLF_color %84
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3a0af57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,65 @@
+float4 tint_unpack4x8unorm(uint param_0) {
+  uint j = param_0;
+  uint4 i = uint4(j & 0xff, (j >> 8) & 0xff, (j >> 16) & 0xff, j >> 24);
+  return float4(i) / 255.0;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+cbuffer cbuffer_x_10 : register(b2, space0) {
+  uint4 x_10[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint x_39 = x_6[scalar_offset / 4][scalar_offset % 4];
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint x_41 = x_6[scalar_offset_1 / 4][scalar_offset_1 % 4];
+  v = tint_unpack4x8unorm((x_39 / (true ? 92382u : x_41)));
+  const float4 x_45 = v;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_50 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_53 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const float x_56 = asfloat(x_10[1].x);
+  const float x_58 = asfloat(x_10[2].x);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const float x_63 = asfloat(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  if ((distance(x_45, float4(float(x_47), float(x_50), float(x_53), (x_56 / x_58))) < x_63)) {
+    const int x_69 = asint(x_8[1].x);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_72 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_75 = asint(x_8[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const int x_78 = asint(x_8[1].x);
+    x_GLF_color = float4(float(x_69), float(x_72), float(x_75), float(x_78));
+  } else {
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const int x_82 = asint(x_8[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    const float x_83 = float(x_82);
+    x_GLF_color = float4(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..1f2929c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_uint_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[3];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, constant buf2& x_10, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  uint const x_39 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  uint const x_41 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  v = unpack_unorm4x8_to_float((x_39 / select(x_41, 92382u, true)));
+  float4 const x_45 = v;
+  int const x_47 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_50 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_53 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_56 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  float const x_58 = x_10.x_GLF_uniform_float_values.arr[2].el;
+  float const x_63 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  if ((distance(x_45, float4(float(x_47), float(x_50), float(x_53), (x_56 / x_58))) < x_63)) {
+    int const x_69 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_72 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_75 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_78 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_69), float(x_72), float(x_75), float(x_78));
+  } else {
+    int const x_82 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_83 = float(x_82);
+    *(tint_symbol_4) = float4(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]], constant buf2& x_10 [[buffer(2)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0727549
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,161 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 101
+; Schema: 0
+               OpCapability Shader
+         %39 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_uint_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 2
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf0 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf2 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_10 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %22 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %22
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %22
+       %void = OpTypeVoid
+         %25 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+ %uint_92382 = OpConstant %uint 92382
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %89 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %25
+         %28 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %22
+         %34 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %35 = OpLoad %uint %34
+         %36 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %37 = OpLoad %uint %36
+         %40 = OpSelect %uint %true %uint_92382 %37
+         %44 = OpUDiv %uint %35 %40
+         %38 = OpExtInst %v4float %39 UnpackUnorm4x8 %44
+               OpStore %v %38
+         %45 = OpLoad %v4float %v
+         %47 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %55 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_2
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %63 = OpConvertSToF %float %48
+         %64 = OpConvertSToF %float %50
+         %65 = OpConvertSToF %float %52
+         %66 = OpFDiv %float %56 %59
+         %67 = OpCompositeConstruct %v4float %63 %64 %65 %66
+         %62 = OpExtInst %float %39 Distance %45 %67
+         %68 = OpFOrdLessThan %bool %62 %61
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %73
+         %81 = OpConvertSToF %float %75
+         %82 = OpConvertSToF %float %77
+         %83 = OpConvertSToF %float %79
+         %84 = OpCompositeConstruct %v4float %80 %81 %82 %83
+               OpStore %x_GLF_color %84
+               OpBranch %69
+         %71 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpCompositeConstruct %v4float %87 %87 %87 %87
+               OpStore %x_GLF_color %88
+               OpBranch %69
+         %69 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %89
+%tint_symbol = OpFunctionParameter %main_out
+         %93 = OpLabel
+         %94 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %94
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %25
+         %96 = OpLabel
+         %97 = OpFunctionCall %void %main_1
+         %99 = OpLoad %v4float %x_GLF_color
+        %100 = OpCompositeConstruct %main_out %99
+         %98 = OpFunctionCall %void %tint_symbol_2 %100
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b44947b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_uint_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_float_values : Arr_2;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_39 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  let x_41 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  v = unpack4x8unorm((x_39 / select(x_41, 92382u, true)));
+  let x_45 : vec4<f32> = v;
+  let x_47 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_50 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_53 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_56 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_58 : f32 = x_10.x_GLF_uniform_float_values[2];
+  let x_63 : f32 = x_10.x_GLF_uniform_float_values[0];
+  if ((distance(x_45, vec4<f32>(f32(x_47), f32(x_50), f32(x_53), (x_56 / x_58))) < x_63)) {
+    let x_69 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_72 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_75 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_78 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_69), f32(x_72), f32(x_75), f32(x_78));
+  } else {
+    let x_82 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_83 : f32 = f32(x_82);
+    x_GLF_color = vec4<f32>(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
new file mode 100644
index 0000000..b44947b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_uint_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_float_values : Arr_2;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_39 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  let x_41 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  v = unpack4x8unorm((x_39 / select(x_41, 92382u, true)));
+  let x_45 : vec4<f32> = v;
+  let x_47 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_50 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_53 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_56 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_58 : f32 = x_10.x_GLF_uniform_float_values[2];
+  let x_63 : f32 = x_10.x_GLF_uniform_float_values[0];
+  if ((distance(x_45, vec4<f32>(f32(x_47), f32(x_50), f32(x_53), (x_56 / x_58))) < x_63)) {
+    let x_69 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_72 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_75 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_78 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_69), f32(x_72), f32(x_75), f32(x_78));
+  } else {
+    let x_82 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_83 : f32 = f32(x_82);
+    x_GLF_color = vec4<f32>(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3a0af57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,65 @@
+float4 tint_unpack4x8unorm(uint param_0) {
+  uint j = param_0;
+  uint4 i = uint4(j & 0xff, (j >> 8) & 0xff, (j >> 16) & 0xff, j >> 24);
+  return float4(i) / 255.0;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[2];
+};
+cbuffer cbuffer_x_10 : register(b2, space0) {
+  uint4 x_10[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint x_39 = x_6[scalar_offset / 4][scalar_offset % 4];
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint x_41 = x_6[scalar_offset_1 / 4][scalar_offset_1 % 4];
+  v = tint_unpack4x8unorm((x_39 / (true ? 92382u : x_41)));
+  const float4 x_45 = v;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_47 = asint(x_8[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_50 = asint(x_8[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_53 = asint(x_8[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const float x_56 = asfloat(x_10[1].x);
+  const float x_58 = asfloat(x_10[2].x);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const float x_63 = asfloat(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  if ((distance(x_45, float4(float(x_47), float(x_50), float(x_53), (x_56 / x_58))) < x_63)) {
+    const int x_69 = asint(x_8[1].x);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_72 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_75 = asint(x_8[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const int x_78 = asint(x_8[1].x);
+    x_GLF_color = float4(float(x_69), float(x_72), float(x_75), float(x_78));
+  } else {
+    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const int x_82 = asint(x_8[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+    const float x_83 = float(x_82);
+    x_GLF_color = float4(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..1f2929c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_uint_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[3];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, constant buf2& x_10, thread float4* const tint_symbol_4) {
+  float4 v = 0.0f;
+  uint const x_39 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  uint const x_41 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  v = unpack_unorm4x8_to_float((x_39 / select(x_41, 92382u, true)));
+  float4 const x_45 = v;
+  int const x_47 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_50 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_53 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_56 = x_10.x_GLF_uniform_float_values.arr[1].el;
+  float const x_58 = x_10.x_GLF_uniform_float_values.arr[2].el;
+  float const x_63 = x_10.x_GLF_uniform_float_values.arr[0].el;
+  if ((distance(x_45, float4(float(x_47), float(x_50), float(x_53), (x_56 / x_58))) < x_63)) {
+    int const x_69 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_72 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_75 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_78 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_69), float(x_72), float(x_75), float(x_78));
+  } else {
+    int const x_82 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_83 = float(x_82);
+    *(tint_symbol_4) = float4(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]], constant buf2& x_10 [[buffer(2)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0727549
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,161 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 101
+; Schema: 0
+               OpCapability Shader
+         %39 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_uint_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 2
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf0 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf1 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf2 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_10 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %22 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %22
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %22
+       %void = OpTypeVoid
+         %25 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+ %uint_92382 = OpConstant %uint 92382
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %89 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %25
+         %28 = OpLabel
+          %v = OpVariable %_ptr_Function_v4float Function %22
+         %34 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %35 = OpLoad %uint %34
+         %36 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %37 = OpLoad %uint %36
+         %40 = OpSelect %uint %true %uint_92382 %37
+         %44 = OpUDiv %uint %35 %40
+         %38 = OpExtInst %v4float %39 UnpackUnorm4x8 %44
+               OpStore %v %38
+         %45 = OpLoad %v4float %v
+         %47 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %50 = OpLoad %int %49
+         %51 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %52 = OpLoad %int %51
+         %55 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_1
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_2
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %63 = OpConvertSToF %float %48
+         %64 = OpConvertSToF %float %50
+         %65 = OpConvertSToF %float %52
+         %66 = OpFDiv %float %56 %59
+         %67 = OpCompositeConstruct %v4float %63 %64 %65 %66
+         %62 = OpExtInst %float %39 Distance %45 %67
+         %68 = OpFOrdLessThan %bool %62 %61
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %73
+         %81 = OpConvertSToF %float %75
+         %82 = OpConvertSToF %float %77
+         %83 = OpConvertSToF %float %79
+         %84 = OpCompositeConstruct %v4float %80 %81 %82 %83
+               OpStore %x_GLF_color %84
+               OpBranch %69
+         %71 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %86
+         %88 = OpCompositeConstruct %v4float %87 %87 %87 %87
+               OpStore %x_GLF_color %88
+               OpBranch %69
+         %69 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %89
+%tint_symbol = OpFunctionParameter %main_out
+         %93 = OpLabel
+         %94 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %94
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %25
+         %96 = OpLabel
+         %97 = OpFunctionCall %void %main_1
+         %99 = OpLoad %v4float %x_GLF_color
+        %100 = OpCompositeConstruct %main_out %99
+         %98 = OpFunctionCall %void %tint_symbol_2 %100
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b44947b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_uint_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_float_values : Arr_2;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec4<f32>;
+  let x_39 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  let x_41 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  v = unpack4x8unorm((x_39 / select(x_41, 92382u, true)));
+  let x_45 : vec4<f32> = v;
+  let x_47 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_50 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_53 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_56 : f32 = x_10.x_GLF_uniform_float_values[1];
+  let x_58 : f32 = x_10.x_GLF_uniform_float_values[2];
+  let x_63 : f32 = x_10.x_GLF_uniform_float_values[0];
+  if ((distance(x_45, vec4<f32>(f32(x_47), f32(x_50), f32(x_53), (x_56 / x_58))) < x_63)) {
+    let x_69 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_72 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_75 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_78 : i32 = x_8.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_69), f32(x_72), f32(x_75), f32(x_78));
+  } else {
+    let x_82 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_83 : f32 = f32(x_82);
+    x_GLF_color = vec4<f32>(x_83, x_83, x_83, x_83);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm
new file mode 100644
index 0000000..6b6223d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm
@@ -0,0 +1,185 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %m43 "m43"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %sums "sums"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+      %int_2 = OpConstant %int 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %41 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %main = OpFunction %void None %15
+         %42 = OpLabel
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function
+       %sums = OpVariable %_ptr_Function__arr_float_uint_3 Function
+          %i = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function_int Function
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %44 = OpLoad %float %43
+         %45 = OpCompositeConstruct %v3float %44 %float_0 %float_0
+         %46 = OpCompositeConstruct %v3float %float_0 %44 %float_0
+         %47 = OpCompositeConstruct %v3float %float_0 %float_0 %44
+         %48 = OpCompositeConstruct %v3float %float_0 %float_0 %float_0
+         %49 = OpCompositeConstruct %mat4v3float %45 %46 %47 %41
+               OpStore %m43 %49
+         %50 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Function_float %m43 %51 %53
+               OpStore %56 %55
+         %57 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %58 = OpLoad %float %57
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %62 = OpLoad %float %61
+         %63 = OpCompositeConstruct %_arr_float_uint_3 %58 %60 %62
+               OpStore %sums %63
+         %64 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %65 = OpLoad %int %64
+               OpStore %i %65
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpPhi %int %65 %42 %68 %69
+               OpLoopMerge %70 %69 None
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %73 = OpLoad %int %72
+         %74 = OpSLessThan %bool %67 %73
+               OpBranchConditional %74 %75 %70
+         %75 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Function_float %m43 %67 %79
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Function_float %sums %77
+         %83 = OpLoad %float %82
+         %84 = OpFAdd %float %83 %81
+         %85 = OpAccessChain %_ptr_Function_float %sums %77
+               OpStore %85 %84
+               OpBranch %69
+         %69 = OpLabel
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %i %68
+               OpBranch %66
+         %70 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpIEqual %bool %87 %int_1
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+               OpStore %a %int_4
+         %91 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %92 = OpLoad %int %91
+         %93 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Function_float %m43 %int_4 %94
+         %96 = OpLoad %float %95
+         %97 = OpAccessChain %_ptr_Function_float %sums %92
+         %98 = OpLoad %float %97
+         %99 = OpFAdd %float %98 %96
+        %100 = OpAccessChain %_ptr_Function_float %sums %92
+               OpStore %100 %99
+               OpBranch %89
+         %89 = OpLabel
+        %101 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpAccessChain %_ptr_Function_float %sums %102
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Function_float %sums %106
+        %108 = OpLoad %float %107
+        %109 = OpFAdd %float %104 %108
+        %110 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+        %111 = OpLoad %float %110
+        %112 = OpFOrdEqual %bool %109 %111
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %115
+        %114 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %117 = OpLoad %int %116
+        %118 = OpConvertSToF %float %117
+        %119 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %120 = OpLoad %int %119
+        %121 = OpConvertSToF %float %120
+        %122 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %123 = OpLoad %int %122
+        %124 = OpConvertSToF %float %123
+        %125 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %126
+        %128 = OpCompositeConstruct %v4float %118 %121 %124 %127
+               OpStore %_GLF_color %128
+               OpBranch %113
+        %115 = OpLabel
+        %129 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %130
+        %132 = OpCompositeConstruct %v4float %131 %131 %131 %131
+               OpStore %_GLF_color %132
+               OpBranch %113
+        %113 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..75c82ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,109 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+struct tint_padded_array_element {
+  float el;
+};
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+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;
+  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 int x_51 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 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 float x_55 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  set_float3(m43[x_51], x_53, x_55);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 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 float x_60 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const float x_62 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const tint_padded_array_element tint_symbol_4[3] = {{x_58}, {x_60}, {x_62}};
+  sums = tint_symbol_4;
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const int x_65 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  i = x_65;
+  x_67_phi = x_65;
+  while (true) {
+    const int x_67 = x_67_phi;
+    const int x_73 = asint(x_8[3].x);
+    if ((x_67 < x_73)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_7 = ((16u * uint(0))) / 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 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;
+    sums[x_77].el = (x_83 + x_81);
+    {
+      const int x_68 = (x_67 + 1);
+      i = x_68;
+      x_67_phi = x_68;
+    }
+  }
+  const int x_87 = asint(x_8[1].x);
+  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 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;
+    sums[x_92].el = (x_98 + x_96);
+  }
+  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 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 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 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 {
+    const int x_130 = asint(x_8[1].x);
+    const float x_131 = float(x_130);
+    x_GLF_color = float4(x_131, x_131, x_131, x_131);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3fc4376
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_5) {
+  float4x3 m43 = float4x3(0.0f);
+  tint_array_wrapper sums = {};
+  int i = 0;
+  int a = 0;
+  int x_67_phi = 0;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float3 const 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));
+  int const x_51 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_53 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_55 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  m43[x_51][x_53] = x_55;
+  float const x_58 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_60 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_62 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper const tint_symbol_3 = {.arr={{.el=x_58}, {.el=x_60}, {.el=x_62}}};
+  sums = tint_symbol_3;
+  int const x_65 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i = x_65;
+  x_67_phi = x_65;
+  while (true) {
+    int const x_67 = x_67_phi;
+    int const x_73 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_67 < x_73)) {
+    } else {
+      break;
+    }
+    int const x_77 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_79 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_81 = m43[x_67][x_79];
+    float const x_83 = sums.arr[x_77].el;
+    sums.arr[x_77].el = (x_83 + x_81);
+    {
+      int const x_68 = (x_67 + 1);
+      i = x_68;
+      x_67_phi = x_68;
+    }
+  }
+  int const x_87 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_87 == 1)) {
+    a = 4;
+    int const x_92 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_94 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_96 = m43[4][x_94];
+    float const x_98 = sums.arr[x_92].el;
+    sums.arr[x_92].el = (x_98 + x_96);
+  }
+  int const x_102 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  float const x_104 = sums.arr[x_102].el;
+  int const x_106 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_108 = sums.arr[x_106].el;
+  float const x_111 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  if (((x_104 + x_108) == x_111)) {
+    int const x_117 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_120 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_123 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_126 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_117), float(x_120), float(x_123), float(x_126));
+  } else {
+    int const x_130 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_131 = float(x_130);
+    *(tint_symbol_5) = float4(x_131, x_131, x_131, x_131);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..c63ce32
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,228 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 152
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m43 "m43"
+               OpName %sums "sums"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %x_67_phi "x_67_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %28 = OpConstantNull %mat4v3float
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+         %31 = OpConstantNull %_arr_float_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+         %43 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function %28
+       %sums = OpVariable %_ptr_Function__arr_float_uint_3 Function %31
+          %i = OpVariable %_ptr_Function_int Function %34
+          %a = OpVariable %_ptr_Function_int Function %34
+   %x_67_phi = OpVariable %_ptr_Function_int Function %34
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %41 = OpLoad %float %40
+         %44 = OpCompositeConstruct %v3float %41 %float_0 %float_0
+         %45 = OpCompositeConstruct %v3float %float_0 %41 %float_0
+         %46 = OpCompositeConstruct %v3float %float_0 %float_0 %41
+         %47 = OpCompositeConstruct %mat4v3float %44 %45 %46 %43
+               OpStore %m43 %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %57 = OpAccessChain %_ptr_Function_float %m43 %51 %53
+               OpStore %57 %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpCompositeConstruct %_arr_float_uint_3 %59 %61 %63
+               OpStore %sums %64
+         %65 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %66 = OpLoad %int %65
+               OpStore %i %66
+               OpStore %x_67_phi %66
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %x_67_phi
+         %73 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %74 = OpLoad %int %73
+         %75 = OpSLessThan %bool %71 %74
+               OpSelectionMerge %77 None
+               OpBranchConditional %75 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %68
+         %77 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Function_float %m43 %71 %83
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Function_float %sums %81
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Function_float %sums %81
+         %89 = OpFAdd %float %87 %85
+               OpStore %88 %89
+               OpBranch %69
+         %69 = OpLabel
+         %90 = OpIAdd %int %71 %int_1
+               OpStore %i %90
+               OpStore %x_67_phi %90
+               OpBranch %67
+         %68 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpIEqual %bool %92 %int_1
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+               OpStore %a %int_4
+         %98 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Function_float %m43 %int_4 %101
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Function_float %sums %99
+        %105 = OpLoad %float %104
+        %106 = OpAccessChain %_ptr_Function_float %sums %99
+        %107 = OpFAdd %float %105 %103
+               OpStore %106 %107
+               OpBranch %94
+         %94 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Function_float %sums %109
+        %111 = OpLoad %float %110
+        %112 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Function_float %sums %113
+        %115 = OpLoad %float %114
+        %116 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+        %117 = OpLoad %float %116
+        %118 = OpFAdd %float %111 %115
+        %119 = OpFOrdEqual %bool %118 %117
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %124
+        %132 = OpConvertSToF %float %126
+        %133 = OpConvertSToF %float %128
+        %134 = OpConvertSToF %float %130
+        %135 = OpCompositeConstruct %v4float %131 %132 %133 %134
+               OpStore %x_GLF_color %135
+               OpBranch %120
+        %122 = OpLabel
+        %136 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %137 = OpLoad %int %136
+        %138 = OpConvertSToF %float %137
+        %139 = OpCompositeConstruct %v4float %138 %138 %138 %138
+               OpStore %x_GLF_color %139
+               OpBranch %120
+        %120 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %140
+%tint_symbol = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %147 = OpLabel
+        %148 = OpFunctionCall %void %main_1
+        %150 = OpLoad %v4float %x_GLF_color
+        %151 = OpCompositeConstruct %main_out %150
+        %149 = OpFunctionCall %void %tint_symbol_2 %151
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7c1756e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,97 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m43 : mat4x3<f32>;
+  var sums : Arr;
+  var i : i32;
+  var a : i32;
+  var x_67_phi : i32;
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_48 : vec3<f32> = vec3<f32>(0.0, 0.0, 0.0);
+  m43 = mat4x3<f32>(vec3<f32>(x_44, 0.0, 0.0), vec3<f32>(0.0, x_44, 0.0), vec3<f32>(0.0, 0.0, x_44), vec3<f32>(0.0, 0.0, 0.0));
+  let x_51 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_53 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_55 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m43[x_51][x_53] = x_55;
+  let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_60 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_62 : f32 = x_6.x_GLF_uniform_float_values[0];
+  sums = Arr(x_58, x_60, x_62);
+  let x_65 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i = x_65;
+  x_67_phi = x_65;
+  loop {
+    let x_67 : i32 = x_67_phi;
+    let x_73 : i32 = x_8.x_GLF_uniform_int_values[3];
+    if ((x_67 < x_73)) {
+    } else {
+      break;
+    }
+    let x_77 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_79 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_81 : f32 = m43[x_67][x_79];
+    let x_83 : f32 = sums[x_77];
+    sums[x_77] = (x_83 + x_81);
+
+    continuing {
+      let x_68 : i32 = (x_67 + 1);
+      i = x_68;
+      x_67_phi = x_68;
+    }
+  }
+  let x_87 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_87 == 1)) {
+    a = 4;
+    let x_92 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_96 : f32 = m43[4][x_94];
+    let x_98 : f32 = sums[x_92];
+    sums[x_92] = (x_98 + x_96);
+  }
+  let x_102 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_104 : f32 = sums[x_102];
+  let x_106 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_108 : f32 = sums[x_106];
+  let x_111 : f32 = x_6.x_GLF_uniform_float_values[2];
+  if (((x_104 + x_108) == x_111)) {
+    let x_117 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_120 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_123 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_126 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_117), f32(x_120), f32(x_123), f32(x_126));
+  } else {
+    let x_130 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_131 : f32 = f32(x_130);
+    x_GLF_color = vec4<f32>(x_131, x_131, x_131, x_131);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
new file mode 100644
index 0000000..7c1756e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
@@ -0,0 +1,97 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m43 : mat4x3<f32>;
+  var sums : Arr;
+  var i : i32;
+  var a : i32;
+  var x_67_phi : i32;
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_48 : vec3<f32> = vec3<f32>(0.0, 0.0, 0.0);
+  m43 = mat4x3<f32>(vec3<f32>(x_44, 0.0, 0.0), vec3<f32>(0.0, x_44, 0.0), vec3<f32>(0.0, 0.0, x_44), vec3<f32>(0.0, 0.0, 0.0));
+  let x_51 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_53 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_55 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m43[x_51][x_53] = x_55;
+  let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_60 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_62 : f32 = x_6.x_GLF_uniform_float_values[0];
+  sums = Arr(x_58, x_60, x_62);
+  let x_65 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i = x_65;
+  x_67_phi = x_65;
+  loop {
+    let x_67 : i32 = x_67_phi;
+    let x_73 : i32 = x_8.x_GLF_uniform_int_values[3];
+    if ((x_67 < x_73)) {
+    } else {
+      break;
+    }
+    let x_77 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_79 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_81 : f32 = m43[x_67][x_79];
+    let x_83 : f32 = sums[x_77];
+    sums[x_77] = (x_83 + x_81);
+
+    continuing {
+      let x_68 : i32 = (x_67 + 1);
+      i = x_68;
+      x_67_phi = x_68;
+    }
+  }
+  let x_87 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_87 == 1)) {
+    a = 4;
+    let x_92 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_96 : f32 = m43[4][x_94];
+    let x_98 : f32 = sums[x_92];
+    sums[x_92] = (x_98 + x_96);
+  }
+  let x_102 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_104 : f32 = sums[x_102];
+  let x_106 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_108 : f32 = sums[x_106];
+  let x_111 : f32 = x_6.x_GLF_uniform_float_values[2];
+  if (((x_104 + x_108) == x_111)) {
+    let x_117 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_120 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_123 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_126 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_117), f32(x_120), f32(x_123), f32(x_126));
+  } else {
+    let x_130 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_131 : f32 = f32(x_130);
+    x_GLF_color = vec4<f32>(x_131, x_131, x_131, x_131);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..75c82ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,109 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+struct tint_padded_array_element {
+  float el;
+};
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+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;
+  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 int x_51 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 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 float x_55 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  set_float3(m43[x_51], x_53, x_55);
+  const uint scalar_offset_3 = ((16u * uint(0))) / 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 float x_60 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const float x_62 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const tint_padded_array_element tint_symbol_4[3] = {{x_58}, {x_60}, {x_62}};
+  sums = tint_symbol_4;
+  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const int x_65 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+  i = x_65;
+  x_67_phi = x_65;
+  while (true) {
+    const int x_67 = x_67_phi;
+    const int x_73 = asint(x_8[3].x);
+    if ((x_67 < x_73)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_7 = ((16u * uint(0))) / 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 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;
+    sums[x_77].el = (x_83 + x_81);
+    {
+      const int x_68 = (x_67 + 1);
+      i = x_68;
+      x_67_phi = x_68;
+    }
+  }
+  const int x_87 = asint(x_8[1].x);
+  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 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;
+    sums[x_92].el = (x_98 + x_96);
+  }
+  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 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 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 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 {
+    const int x_130 = asint(x_8[1].x);
+    const float x_131 = float(x_130);
+    x_GLF_color = float4(x_131, x_131, x_131, x_131);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3fc4376
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_5) {
+  float4x3 m43 = float4x3(0.0f);
+  tint_array_wrapper sums = {};
+  int i = 0;
+  int a = 0;
+  int x_67_phi = 0;
+  float const x_44 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  float3 const 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));
+  int const x_51 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  int const x_53 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_55 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  m43[x_51][x_53] = x_55;
+  float const x_58 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_60 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  float const x_62 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  tint_array_wrapper const tint_symbol_3 = {.arr={{.el=x_58}, {.el=x_60}, {.el=x_62}}};
+  sums = tint_symbol_3;
+  int const x_65 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  i = x_65;
+  x_67_phi = x_65;
+  while (true) {
+    int const x_67 = x_67_phi;
+    int const x_73 = x_8.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_67 < x_73)) {
+    } else {
+      break;
+    }
+    int const x_77 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_79 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_81 = m43[x_67][x_79];
+    float const x_83 = sums.arr[x_77].el;
+    sums.arr[x_77].el = (x_83 + x_81);
+    {
+      int const x_68 = (x_67 + 1);
+      i = x_68;
+      x_67_phi = x_68;
+    }
+  }
+  int const x_87 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_87 == 1)) {
+    a = 4;
+    int const x_92 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    int const x_94 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    float const x_96 = m43[4][x_94];
+    float const x_98 = sums.arr[x_92].el;
+    sums.arr[x_92].el = (x_98 + x_96);
+  }
+  int const x_102 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  float const x_104 = sums.arr[x_102].el;
+  int const x_106 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  float const x_108 = sums.arr[x_106].el;
+  float const x_111 = x_6.x_GLF_uniform_float_values.arr[2].el;
+  if (((x_104 + x_108) == x_111)) {
+    int const x_117 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    int const x_120 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_123 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    int const x_126 = x_8.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_5) = float4(float(x_117), float(x_120), float(x_123), float(x_126));
+  } else {
+    int const x_130 = x_8.x_GLF_uniform_int_values.arr[1].el;
+    float const x_131 = float(x_130);
+    *(tint_symbol_5) = float4(x_131, x_131, x_131, x_131);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..c63ce32
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,228 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 152
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m43 "m43"
+               OpName %sums "sums"
+               OpName %i "i"
+               OpName %a "a"
+               OpName %x_67_phi "x_67_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %28 = OpConstantNull %mat4v3float
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+         %31 = OpConstantNull %_arr_float_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+         %43 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function %28
+       %sums = OpVariable %_ptr_Function__arr_float_uint_3 Function %31
+          %i = OpVariable %_ptr_Function_int Function %34
+          %a = OpVariable %_ptr_Function_int Function %34
+   %x_67_phi = OpVariable %_ptr_Function_int Function %34
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %41 = OpLoad %float %40
+         %44 = OpCompositeConstruct %v3float %41 %float_0 %float_0
+         %45 = OpCompositeConstruct %v3float %float_0 %41 %float_0
+         %46 = OpCompositeConstruct %v3float %float_0 %float_0 %41
+         %47 = OpCompositeConstruct %mat4v3float %44 %45 %46 %43
+               OpStore %m43 %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %55 = OpLoad %float %54
+         %57 = OpAccessChain %_ptr_Function_float %m43 %51 %53
+               OpStore %57 %55
+         %58 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %61 = OpLoad %float %60
+         %62 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %63 = OpLoad %float %62
+         %64 = OpCompositeConstruct %_arr_float_uint_3 %59 %61 %63
+               OpStore %sums %64
+         %65 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %66 = OpLoad %int %65
+               OpStore %i %66
+               OpStore %x_67_phi %66
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %x_67_phi
+         %73 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_3
+         %74 = OpLoad %int %73
+         %75 = OpSLessThan %bool %71 %74
+               OpSelectionMerge %77 None
+               OpBranchConditional %75 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %68
+         %77 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Function_float %m43 %71 %83
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Function_float %sums %81
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Function_float %sums %81
+         %89 = OpFAdd %float %87 %85
+               OpStore %88 %89
+               OpBranch %69
+         %69 = OpLabel
+         %90 = OpIAdd %int %71 %int_1
+               OpStore %i %90
+               OpStore %x_67_phi %90
+               OpBranch %67
+         %68 = OpLabel
+         %91 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpIEqual %bool %92 %int_1
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+               OpStore %a %int_4
+         %98 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Function_float %m43 %int_4 %101
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Function_float %sums %99
+        %105 = OpLoad %float %104
+        %106 = OpAccessChain %_ptr_Function_float %sums %99
+        %107 = OpFAdd %float %105 %103
+               OpStore %106 %107
+               OpBranch %94
+         %94 = OpLabel
+        %108 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Function_float %sums %109
+        %111 = OpLoad %float %110
+        %112 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Function_float %sums %113
+        %115 = OpLoad %float %114
+        %116 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+        %117 = OpLoad %float %116
+        %118 = OpFAdd %float %111 %115
+        %119 = OpFOrdEqual %bool %118 %117
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+        %130 = OpLoad %int %129
+        %131 = OpConvertSToF %float %124
+        %132 = OpConvertSToF %float %126
+        %133 = OpConvertSToF %float %128
+        %134 = OpConvertSToF %float %130
+        %135 = OpCompositeConstruct %v4float %131 %132 %133 %134
+               OpStore %x_GLF_color %135
+               OpBranch %120
+        %122 = OpLabel
+        %136 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+        %137 = OpLoad %int %136
+        %138 = OpConvertSToF %float %137
+        %139 = OpCompositeConstruct %v4float %138 %138 %138 %138
+               OpStore %x_GLF_color %139
+               OpBranch %120
+        %120 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %140
+%tint_symbol = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %147 = OpLabel
+        %148 = OpFunctionCall %void %main_1
+        %150 = OpLoad %v4float %x_GLF_color
+        %151 = OpCompositeConstruct %main_out %150
+        %149 = OpFunctionCall %void %tint_symbol_2 %151
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7c1756e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,97 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m43 : mat4x3<f32>;
+  var sums : Arr;
+  var i : i32;
+  var a : i32;
+  var x_67_phi : i32;
+  let x_44 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_48 : vec3<f32> = vec3<f32>(0.0, 0.0, 0.0);
+  m43 = mat4x3<f32>(vec3<f32>(x_44, 0.0, 0.0), vec3<f32>(0.0, x_44, 0.0), vec3<f32>(0.0, 0.0, x_44), vec3<f32>(0.0, 0.0, 0.0));
+  let x_51 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_53 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_55 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m43[x_51][x_53] = x_55;
+  let x_58 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_60 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_62 : f32 = x_6.x_GLF_uniform_float_values[0];
+  sums = Arr(x_58, x_60, x_62);
+  let x_65 : i32 = x_8.x_GLF_uniform_int_values[0];
+  i = x_65;
+  x_67_phi = x_65;
+  loop {
+    let x_67 : i32 = x_67_phi;
+    let x_73 : i32 = x_8.x_GLF_uniform_int_values[3];
+    if ((x_67 < x_73)) {
+    } else {
+      break;
+    }
+    let x_77 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_79 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_81 : f32 = m43[x_67][x_79];
+    let x_83 : f32 = sums[x_77];
+    sums[x_77] = (x_83 + x_81);
+
+    continuing {
+      let x_68 : i32 = (x_67 + 1);
+      i = x_68;
+      x_67_phi = x_68;
+    }
+  }
+  let x_87 : i32 = x_8.x_GLF_uniform_int_values[1];
+  if ((x_87 == 1)) {
+    a = 4;
+    let x_92 : i32 = x_8.x_GLF_uniform_int_values[2];
+    let x_94 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_96 : f32 = m43[4][x_94];
+    let x_98 : f32 = sums[x_92];
+    sums[x_92] = (x_98 + x_96);
+  }
+  let x_102 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_104 : f32 = sums[x_102];
+  let x_106 : i32 = x_8.x_GLF_uniform_int_values[0];
+  let x_108 : f32 = sums[x_106];
+  let x_111 : f32 = x_6.x_GLF_uniform_float_values[2];
+  if (((x_104 + x_108) == x_111)) {
+    let x_117 : i32 = x_8.x_GLF_uniform_int_values[0];
+    let x_120 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_123 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_126 : i32 = x_8.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_117), f32(x_120), f32(x_123), f32(x_126));
+  } else {
+    let x_130 : i32 = x_8.x_GLF_uniform_int_values[1];
+    let x_131 : f32 = f32(x_130);
+    x_GLF_color = vec4<f32>(x_131, x_131, x_131, x_131);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm
new file mode 100644
index 0000000..a44e425
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm
@@ -0,0 +1,218 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %m0 "m0"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %c "c"
+               OpName %m1 "m1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %38 = OpLabel
+         %m0 = OpVariable %_ptr_Function_mat4v4float Function
+          %c = OpVariable %_ptr_Function_int Function
+         %m1 = OpVariable %_ptr_Function_mat4v4float Function
+         %39 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %40 = OpLoad %int %39
+         %41 = OpConvertSToF %float %40
+         %42 = OpCompositeConstruct %v4float %41 %float_0 %float_0 %float_0
+         %43 = OpCompositeConstruct %v4float %float_0 %41 %float_0 %float_0
+         %44 = OpCompositeConstruct %v4float %float_0 %float_0 %41 %float_0
+         %45 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %41
+         %46 = OpCompositeConstruct %mat4v4float %42 %43 %44 %45
+               OpStore %m0 %46
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %48 = OpLoad %int %47
+               OpStore %c %48
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %c
+         %54 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpSLessThan %bool %53 %55
+               OpBranchConditional %56 %57 %50
+         %57 = OpLabel
+         %58 = OpLoad %mat4v4float %m0
+               OpStore %m1 %58
+         %59 = OpLoad %int %c
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %61 = OpLoad %int %60
+         %62 = OpSMod %int %59 %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %66 = OpLoad %float %65
+         %67 = OpAccessChain %_ptr_Function_float %m1 %62 %64
+               OpStore %67 %66
+         %68 = OpLoad %int %c
+         %69 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %70 = OpLoad %int %69
+         %71 = OpSMod %int %68 %70
+         %72 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Function_float %m0 %71 %73
+               OpStore %76 %75
+               OpBranch %51
+         %51 = OpLabel
+         %77 = OpLoad %int %c
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %c %78
+               OpBranch %49
+         %50 = OpLabel
+         %79 = OpLoad %mat4v4float %m0
+         %80 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpConvertSToF %float %81
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %84 = OpLoad %int %83
+         %85 = OpConvertSToF %float %84
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %87
+         %89 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpConvertSToF %float %90
+         %92 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %93 = OpLoad %int %92
+         %94 = OpConvertSToF %float %93
+         %95 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %96 = OpLoad %int %95
+         %97 = OpConvertSToF %float %96
+         %98 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %99 = OpLoad %int %98
+        %100 = OpConvertSToF %float %99
+        %101 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpConvertSToF %float %102
+        %104 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %105 = OpLoad %int %104
+        %106 = OpConvertSToF %float %105
+        %107 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %108 = OpLoad %int %107
+        %109 = OpConvertSToF %float %108
+        %110 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %111 = OpLoad %int %110
+        %112 = OpConvertSToF %float %111
+        %113 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %114 = OpLoad %int %113
+        %115 = OpConvertSToF %float %114
+        %116 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %117 = OpLoad %int %116
+        %118 = OpConvertSToF %float %117
+        %119 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %120 = OpLoad %int %119
+        %121 = OpConvertSToF %float %120
+        %122 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %123 = OpLoad %int %122
+        %124 = OpConvertSToF %float %123
+        %125 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %126
+        %128 = OpCompositeConstruct %v4float %82 %85 %88 %91
+        %129 = OpCompositeConstruct %v4float %94 %97 %100 %103
+        %130 = OpCompositeConstruct %v4float %106 %109 %112 %115
+        %131 = OpCompositeConstruct %v4float %118 %121 %124 %127
+        %132 = OpCompositeConstruct %mat4v4float %128 %129 %130 %131
+        %133 = OpCompositeExtract %v4float %79 0
+        %134 = OpCompositeExtract %v4float %132 0
+        %135 = OpFOrdEqual %v4bool %133 %134
+        %136 = OpAll %bool %135
+        %137 = OpCompositeExtract %v4float %79 1
+        %138 = OpCompositeExtract %v4float %132 1
+        %139 = OpFOrdEqual %v4bool %137 %138
+        %140 = OpAll %bool %139
+        %141 = OpLogicalAnd %bool %136 %140
+        %142 = OpCompositeExtract %v4float %79 2
+        %143 = OpCompositeExtract %v4float %132 2
+        %144 = OpFOrdEqual %v4bool %142 %143
+        %145 = OpAll %bool %144
+        %146 = OpLogicalAnd %bool %141 %145
+        %147 = OpCompositeExtract %v4float %79 3
+        %148 = OpCompositeExtract %v4float %132 3
+        %149 = OpFOrdEqual %v4bool %147 %148
+        %150 = OpAll %bool %149
+        %151 = OpLogicalAnd %bool %146 %150
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %154
+        %153 = OpLabel
+        %155 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %156 = OpLoad %int %155
+        %157 = OpConvertSToF %float %156
+        %158 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %159 = OpLoad %int %158
+        %160 = OpConvertSToF %float %159
+        %161 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %162 = OpLoad %int %161
+        %163 = OpConvertSToF %float %162
+        %164 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %165 = OpLoad %int %164
+        %166 = OpConvertSToF %float %165
+        %167 = OpCompositeConstruct %v4float %157 %160 %163 %166
+               OpStore %_GLF_color %167
+               OpBranch %152
+        %154 = OpLabel
+        %168 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %169 = OpLoad %int %168
+        %170 = OpConvertSToF %float %169
+        %171 = OpCompositeConstruct %v4float %170 %170 %170 %170
+               OpStore %_GLF_color %171
+               OpBranch %152
+        %152 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..258443f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,103 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4x4 m0 = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int c = 0;
+  float4x4 m1 = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  const int x_40 = asint(x_6[1].x);
+  const float x_41 = float(x_40);
+  m0 = float4x4(float4(x_41, 0.0f, 0.0f, 0.0f), float4(0.0f, x_41, 0.0f, 0.0f), float4(0.0f, 0.0f, x_41, 0.0f), float4(0.0f, 0.0f, 0.0f, x_41));
+  const int x_48 = asint(x_6[2].x);
+  c = x_48;
+  while (true) {
+    const int x_53 = c;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    m1 = m0;
+    const int x_59 = c;
+    const int x_61 = asint(x_6[3].x);
+    const int x_64 = asint(x_6[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_66 = asfloat(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    set_float4(m1[(x_59 % x_61)], x_64, x_66);
+    const int x_68 = c;
+    const int x_70 = asint(x_6[3].x);
+    const int x_73 = asint(x_6[2].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_75 = asfloat(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    set_float4(m0[(x_68 % x_70)], x_73, x_75);
+    {
+      c = (c + 1);
+    }
+  }
+  const float4x4 x_79 = m0;
+  const int x_81 = asint(x_6[1].x);
+  const int x_84 = asint(x_6[2].x);
+  const int x_87 = asint(x_6[1].x);
+  const int x_90 = asint(x_6[1].x);
+  const int x_93 = asint(x_6[1].x);
+  const int x_96 = asint(x_6[2].x);
+  const int x_99 = asint(x_6[1].x);
+  const int x_102 = asint(x_6[1].x);
+  const int x_105 = asint(x_6[1].x);
+  const int x_108 = asint(x_6[2].x);
+  const int x_111 = asint(x_6[1].x);
+  const int x_114 = asint(x_6[1].x);
+  const int x_117 = asint(x_6[1].x);
+  const int x_120 = asint(x_6[2].x);
+  const int x_123 = asint(x_6[1].x);
+  const int x_126 = asint(x_6[1].x);
+  const float4x4 x_132 = float4x4(float4(float(x_81), float(x_84), float(x_87), float(x_90)), float4(float(x_93), float(x_96), float(x_99), float(x_102)), float4(float(x_105), float(x_108), float(x_111), float(x_114)), float4(float(x_117), float(x_120), float(x_123), float(x_126)));
+  bool tint_tmp_2 = all((x_79[0u] == x_132[0u]));
+  if (tint_tmp_2) {
+    tint_tmp_2 = all((x_79[1u] == x_132[1u]));
+  }
+  bool tint_tmp_1 = (tint_tmp_2);
+  if (tint_tmp_1) {
+    tint_tmp_1 = all((x_79[2u] == x_132[2u]));
+  }
+  bool tint_tmp = (tint_tmp_1);
+  if (tint_tmp) {
+    tint_tmp = all((x_79[3u] == x_132[3u]));
+  }
+  if ((tint_tmp)) {
+    const int x_156 = asint(x_6[2].x);
+    const int x_159 = asint(x_6[1].x);
+    const int x_162 = asint(x_6[1].x);
+    const int x_165 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_156), float(x_159), float(x_162), float(x_165));
+  } else {
+    const int x_169 = asint(x_6[1].x);
+    const float x_170 = float(x_169);
+    x_GLF_color = float4(x_170, x_170, x_170, x_170);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2e9eaea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,103 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float4x4 m0 = float4x4(0.0f);
+  int c = 0;
+  float4x4 m1 = float4x4(0.0f);
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_41 = float(x_40);
+  m0 = float4x4(float4(x_41, 0.0f, 0.0f, 0.0f), float4(0.0f, x_41, 0.0f, 0.0f), float4(0.0f, 0.0f, x_41, 0.0f), float4(0.0f, 0.0f, 0.0f, x_41));
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  c = x_48;
+  while (true) {
+    int const x_53 = c;
+    int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    float4x4 const x_58 = m0;
+    m1 = x_58;
+    int const x_59 = c;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_66 = x_10.x_GLF_uniform_float_values.arr[0].el;
+    m1[(x_59 % x_61)][x_64] = x_66;
+    int const x_68 = c;
+    int const x_70 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_73 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_75 = x_10.x_GLF_uniform_float_values.arr[0].el;
+    m0[(x_68 % x_70)][x_73] = x_75;
+    {
+      int const x_77 = c;
+      c = (x_77 + 1);
+    }
+  }
+  float4x4 const x_79 = m0;
+  int const x_81 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_84 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_87 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_90 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_93 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_96 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_99 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_102 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_105 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_108 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_111 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_114 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_117 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_120 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_123 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_126 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float4x4 const x_132 = float4x4(float4(float(x_81), float(x_84), float(x_87), float(x_90)), float4(float(x_93), float(x_96), float(x_99), float(x_102)), float4(float(x_105), float(x_108), float(x_111), float(x_114)), float4(float(x_117), float(x_120), float(x_123), float(x_126)));
+  if ((((all((x_79[0u] == x_132[0u])) && all((x_79[1u] == x_132[1u]))) && all((x_79[2u] == x_132[2u]))) && all((x_79[3u] == x_132[3u])))) {
+    int const x_156 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_159 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_162 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_165 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_156), float(x_159), float(x_162), float(x_165));
+  } else {
+    int const x_169 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_170 = float(x_169);
+    *(tint_symbol_4) = float4(x_170, x_170, x_170, x_170);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1bf7a3d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,274 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 198
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m0 "m0"
+               OpName %c "c"
+               OpName %m1 "m1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %27 = OpConstantNull %mat4v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+     %v4bool = OpTypeVector %bool 4
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+   %main_out = OpTypeStruct %v4float
+        %186 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %m0 = OpVariable %_ptr_Function_mat4v4float Function %27
+          %c = OpVariable %_ptr_Function_int Function %30
+         %m1 = OpVariable %_ptr_Function_mat4v4float Function %27
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %36 = OpLoad %int %35
+         %37 = OpConvertSToF %float %36
+         %39 = OpCompositeConstruct %v4float %37 %float_0 %float_0 %float_0
+         %40 = OpCompositeConstruct %v4float %float_0 %37 %float_0 %float_0
+         %41 = OpCompositeConstruct %v4float %float_0 %float_0 %37 %float_0
+         %42 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %37
+         %43 = OpCompositeConstruct %mat4v4float %39 %40 %41 %42
+               OpStore %m0 %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+               OpStore %c %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %c
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpSLessThan %bool %51 %54
+               OpSelectionMerge %57 None
+               OpBranchConditional %55 %58 %59
+         %58 = OpLabel
+               OpBranch %57
+         %59 = OpLabel
+               OpBranch %48
+         %57 = OpLabel
+         %60 = OpLoad %mat4v4float %m0
+               OpStore %m1 %60
+         %61 = OpLoad %int %c
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %68 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %69 = OpLoad %float %68
+         %70 = OpSMod %int %61 %64
+         %72 = OpAccessChain %_ptr_Function_float %m1 %70 %66
+               OpStore %72 %69
+         %73 = OpLoad %int %c
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpSMod %int %73 %75
+         %81 = OpAccessChain %_ptr_Function_float %m0 %80 %77
+               OpStore %81 %79
+               OpBranch %49
+         %49 = OpLabel
+         %82 = OpLoad %int %c
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %c %83
+               OpBranch %47
+         %48 = OpLabel
+         %84 = OpLoad %mat4v4float %m0
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %104 = OpLoad %int %103
+        %105 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %112 = OpLoad %int %111
+        %113 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %86
+        %118 = OpConvertSToF %float %88
+        %119 = OpConvertSToF %float %90
+        %120 = OpConvertSToF %float %92
+        %121 = OpCompositeConstruct %v4float %117 %118 %119 %120
+        %122 = OpConvertSToF %float %94
+        %123 = OpConvertSToF %float %96
+        %124 = OpConvertSToF %float %98
+        %125 = OpConvertSToF %float %100
+        %126 = OpCompositeConstruct %v4float %122 %123 %124 %125
+        %127 = OpConvertSToF %float %102
+        %128 = OpConvertSToF %float %104
+        %129 = OpConvertSToF %float %106
+        %130 = OpConvertSToF %float %108
+        %131 = OpCompositeConstruct %v4float %127 %128 %129 %130
+        %132 = OpConvertSToF %float %110
+        %133 = OpConvertSToF %float %112
+        %134 = OpConvertSToF %float %114
+        %135 = OpConvertSToF %float %116
+        %136 = OpCompositeConstruct %v4float %132 %133 %134 %135
+        %137 = OpCompositeConstruct %mat4v4float %121 %126 %131 %136
+        %139 = OpCompositeExtract %v4float %84 0
+        %140 = OpCompositeExtract %v4float %137 0
+        %141 = OpFOrdEqual %v4bool %139 %140
+        %138 = OpAll %bool %141
+               OpSelectionMerge %143 None
+               OpBranchConditional %138 %144 %143
+        %144 = OpLabel
+        %146 = OpCompositeExtract %v4float %84 1
+        %147 = OpCompositeExtract %v4float %137 1
+        %148 = OpFOrdEqual %v4bool %146 %147
+        %145 = OpAll %bool %148
+               OpBranch %143
+        %143 = OpLabel
+        %149 = OpPhi %bool %138 %48 %145 %144
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %154 = OpCompositeExtract %v4float %84 2
+        %155 = OpCompositeExtract %v4float %137 2
+        %156 = OpFOrdEqual %v4bool %154 %155
+        %152 = OpAll %bool %156
+               OpBranch %150
+        %150 = OpLabel
+        %157 = OpPhi %bool %149 %143 %152 %151
+               OpSelectionMerge %158 None
+               OpBranchConditional %157 %159 %158
+        %159 = OpLabel
+        %162 = OpCompositeExtract %v4float %84 3
+        %163 = OpCompositeExtract %v4float %137 3
+        %164 = OpFOrdEqual %v4bool %162 %163
+        %160 = OpAll %bool %164
+               OpBranch %158
+        %158 = OpLabel
+        %165 = OpPhi %bool %157 %150 %160 %159
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %168
+        %167 = OpLabel
+        %169 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %170 = OpLoad %int %169
+        %171 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %172 = OpLoad %int %171
+        %173 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %174 = OpLoad %int %173
+        %175 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %176 = OpLoad %int %175
+        %177 = OpConvertSToF %float %170
+        %178 = OpConvertSToF %float %172
+        %179 = OpConvertSToF %float %174
+        %180 = OpConvertSToF %float %176
+        %181 = OpCompositeConstruct %v4float %177 %178 %179 %180
+               OpStore %x_GLF_color %181
+               OpBranch %166
+        %168 = OpLabel
+        %182 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %183 = OpLoad %int %182
+        %184 = OpConvertSToF %float %183
+        %185 = OpCompositeConstruct %v4float %184 %184 %184 %184
+               OpStore %x_GLF_color %185
+               OpBranch %166
+        %166 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %186
+%tint_symbol = OpFunctionParameter %main_out
+        %190 = OpLabel
+        %191 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %191
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %193 = OpLabel
+        %194 = OpFunctionCall %void %main_1
+        %196 = OpLoad %v4float %x_GLF_color
+        %197 = OpCompositeConstruct %main_out %196
+        %195 = OpFunctionCall %void %tint_symbol_2 %197
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..cd04198
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,96 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m0 : mat4x4<f32>;
+  var c : i32;
+  var m1 : mat4x4<f32>;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_41 : f32 = f32(x_40);
+  m0 = mat4x4<f32>(vec4<f32>(x_41, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_41, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_41, 0.0), vec4<f32>(0.0, 0.0, 0.0, x_41));
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+  c = x_48;
+  loop {
+    let x_53 : i32 = c;
+    let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    let x_58 : mat4x4<f32> = m0;
+    m1 = x_58;
+    let x_59 : i32 = c;
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_66 : f32 = x_10.x_GLF_uniform_float_values[0];
+    m1[(x_59 % x_61)][x_64] = x_66;
+    let x_68 : i32 = c;
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_73 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_75 : f32 = x_10.x_GLF_uniform_float_values[0];
+    m0[(x_68 % x_70)][x_73] = x_75;
+
+    continuing {
+      let x_77 : i32 = c;
+      c = (x_77 + 1);
+    }
+  }
+  let x_79 : mat4x4<f32> = m0;
+  let x_81 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_87 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_90 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_93 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_96 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_99 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_102 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_105 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_108 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_111 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_114 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_117 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_120 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_123 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_126 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_132 : mat4x4<f32> = mat4x4<f32>(vec4<f32>(f32(x_81), f32(x_84), f32(x_87), f32(x_90)), vec4<f32>(f32(x_93), f32(x_96), f32(x_99), f32(x_102)), vec4<f32>(f32(x_105), f32(x_108), f32(x_111), f32(x_114)), vec4<f32>(f32(x_117), f32(x_120), f32(x_123), f32(x_126)));
+  if ((((all((x_79[0u] == x_132[0u])) && all((x_79[1u] == x_132[1u]))) && all((x_79[2u] == x_132[2u]))) && all((x_79[3u] == x_132[3u])))) {
+    let x_156 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_159 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_162 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_165 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_156), f32(x_159), f32(x_162), f32(x_165));
+  } else {
+    let x_169 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_170 : f32 = f32(x_169);
+    x_GLF_color = vec4<f32>(x_170, x_170, x_170, x_170);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
new file mode 100644
index 0000000..cd04198
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
@@ -0,0 +1,96 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m0 : mat4x4<f32>;
+  var c : i32;
+  var m1 : mat4x4<f32>;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_41 : f32 = f32(x_40);
+  m0 = mat4x4<f32>(vec4<f32>(x_41, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_41, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_41, 0.0), vec4<f32>(0.0, 0.0, 0.0, x_41));
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+  c = x_48;
+  loop {
+    let x_53 : i32 = c;
+    let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    let x_58 : mat4x4<f32> = m0;
+    m1 = x_58;
+    let x_59 : i32 = c;
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_66 : f32 = x_10.x_GLF_uniform_float_values[0];
+    m1[(x_59 % x_61)][x_64] = x_66;
+    let x_68 : i32 = c;
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_73 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_75 : f32 = x_10.x_GLF_uniform_float_values[0];
+    m0[(x_68 % x_70)][x_73] = x_75;
+
+    continuing {
+      let x_77 : i32 = c;
+      c = (x_77 + 1);
+    }
+  }
+  let x_79 : mat4x4<f32> = m0;
+  let x_81 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_87 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_90 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_93 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_96 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_99 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_102 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_105 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_108 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_111 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_114 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_117 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_120 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_123 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_126 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_132 : mat4x4<f32> = mat4x4<f32>(vec4<f32>(f32(x_81), f32(x_84), f32(x_87), f32(x_90)), vec4<f32>(f32(x_93), f32(x_96), f32(x_99), f32(x_102)), vec4<f32>(f32(x_105), f32(x_108), f32(x_111), f32(x_114)), vec4<f32>(f32(x_117), f32(x_120), f32(x_123), f32(x_126)));
+  if ((((all((x_79[0u] == x_132[0u])) && all((x_79[1u] == x_132[1u]))) && all((x_79[2u] == x_132[2u]))) && all((x_79[3u] == x_132[3u])))) {
+    let x_156 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_159 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_162 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_165 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_156), f32(x_159), f32(x_162), f32(x_165));
+  } else {
+    let x_169 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_170 : f32 = f32(x_169);
+    x_GLF_color = vec4<f32>(x_170, x_170, x_170, x_170);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..258443f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,103 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[4];
+};
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4x4 m0 = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int c = 0;
+  float4x4 m1 = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  const int x_40 = asint(x_6[1].x);
+  const float x_41 = float(x_40);
+  m0 = float4x4(float4(x_41, 0.0f, 0.0f, 0.0f), float4(0.0f, x_41, 0.0f, 0.0f), float4(0.0f, 0.0f, x_41, 0.0f), float4(0.0f, 0.0f, 0.0f, x_41));
+  const int x_48 = asint(x_6[2].x);
+  c = x_48;
+  while (true) {
+    const int x_53 = c;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    m1 = m0;
+    const int x_59 = c;
+    const int x_61 = asint(x_6[3].x);
+    const int x_64 = asint(x_6[2].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const float x_66 = asfloat(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    set_float4(m1[(x_59 % x_61)], x_64, x_66);
+    const int x_68 = c;
+    const int x_70 = asint(x_6[3].x);
+    const int x_73 = asint(x_6[2].x);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const float x_75 = asfloat(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    set_float4(m0[(x_68 % x_70)], x_73, x_75);
+    {
+      c = (c + 1);
+    }
+  }
+  const float4x4 x_79 = m0;
+  const int x_81 = asint(x_6[1].x);
+  const int x_84 = asint(x_6[2].x);
+  const int x_87 = asint(x_6[1].x);
+  const int x_90 = asint(x_6[1].x);
+  const int x_93 = asint(x_6[1].x);
+  const int x_96 = asint(x_6[2].x);
+  const int x_99 = asint(x_6[1].x);
+  const int x_102 = asint(x_6[1].x);
+  const int x_105 = asint(x_6[1].x);
+  const int x_108 = asint(x_6[2].x);
+  const int x_111 = asint(x_6[1].x);
+  const int x_114 = asint(x_6[1].x);
+  const int x_117 = asint(x_6[1].x);
+  const int x_120 = asint(x_6[2].x);
+  const int x_123 = asint(x_6[1].x);
+  const int x_126 = asint(x_6[1].x);
+  const float4x4 x_132 = float4x4(float4(float(x_81), float(x_84), float(x_87), float(x_90)), float4(float(x_93), float(x_96), float(x_99), float(x_102)), float4(float(x_105), float(x_108), float(x_111), float(x_114)), float4(float(x_117), float(x_120), float(x_123), float(x_126)));
+  bool tint_tmp_2 = all((x_79[0u] == x_132[0u]));
+  if (tint_tmp_2) {
+    tint_tmp_2 = all((x_79[1u] == x_132[1u]));
+  }
+  bool tint_tmp_1 = (tint_tmp_2);
+  if (tint_tmp_1) {
+    tint_tmp_1 = all((x_79[2u] == x_132[2u]));
+  }
+  bool tint_tmp = (tint_tmp_1);
+  if (tint_tmp) {
+    tint_tmp = all((x_79[3u] == x_132[3u]));
+  }
+  if ((tint_tmp)) {
+    const int x_156 = asint(x_6[2].x);
+    const int x_159 = asint(x_6[1].x);
+    const int x_162 = asint(x_6[1].x);
+    const int x_165 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_156), float(x_159), float(x_162), float(x_165));
+  } else {
+    const int x_169 = asint(x_6[1].x);
+    const float x_170 = float(x_169);
+    x_GLF_color = float4(x_170, x_170, x_170, x_170);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2e9eaea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,103 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float4x4 m0 = float4x4(0.0f);
+  int c = 0;
+  float4x4 m1 = float4x4(0.0f);
+  int const x_40 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_41 = float(x_40);
+  m0 = float4x4(float4(x_41, 0.0f, 0.0f, 0.0f), float4(0.0f, x_41, 0.0f, 0.0f), float4(0.0f, 0.0f, x_41, 0.0f), float4(0.0f, 0.0f, 0.0f, x_41));
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  c = x_48;
+  while (true) {
+    int const x_53 = c;
+    int const x_55 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    float4x4 const x_58 = m0;
+    m1 = x_58;
+    int const x_59 = c;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_66 = x_10.x_GLF_uniform_float_values.arr[0].el;
+    m1[(x_59 % x_61)][x_64] = x_66;
+    int const x_68 = c;
+    int const x_70 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_73 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_75 = x_10.x_GLF_uniform_float_values.arr[0].el;
+    m0[(x_68 % x_70)][x_73] = x_75;
+    {
+      int const x_77 = c;
+      c = (x_77 + 1);
+    }
+  }
+  float4x4 const x_79 = m0;
+  int const x_81 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_84 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_87 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_90 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_93 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_96 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_99 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_102 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_105 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_108 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_111 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_114 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_117 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_120 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_123 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_126 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float4x4 const x_132 = float4x4(float4(float(x_81), float(x_84), float(x_87), float(x_90)), float4(float(x_93), float(x_96), float(x_99), float(x_102)), float4(float(x_105), float(x_108), float(x_111), float(x_114)), float4(float(x_117), float(x_120), float(x_123), float(x_126)));
+  if ((((all((x_79[0u] == x_132[0u])) && all((x_79[1u] == x_132[1u]))) && all((x_79[2u] == x_132[2u]))) && all((x_79[3u] == x_132[3u])))) {
+    int const x_156 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_159 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_162 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_165 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_156), float(x_159), float(x_162), float(x_165));
+  } else {
+    int const x_169 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_170 = float(x_169);
+    *(tint_symbol_4) = float4(x_170, x_170, x_170, x_170);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1bf7a3d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,274 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 198
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_float_values"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m0 "m0"
+               OpName %c "c"
+               OpName %m1 "m1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf1 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf0 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %27 = OpConstantNull %mat4v4float
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+     %v4bool = OpTypeVector %bool 4
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+   %main_out = OpTypeStruct %v4float
+        %186 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %m0 = OpVariable %_ptr_Function_mat4v4float Function %27
+          %c = OpVariable %_ptr_Function_int Function %30
+         %m1 = OpVariable %_ptr_Function_mat4v4float Function %27
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %36 = OpLoad %int %35
+         %37 = OpConvertSToF %float %36
+         %39 = OpCompositeConstruct %v4float %37 %float_0 %float_0 %float_0
+         %40 = OpCompositeConstruct %v4float %float_0 %37 %float_0 %float_0
+         %41 = OpCompositeConstruct %v4float %float_0 %float_0 %37 %float_0
+         %42 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %37
+         %43 = OpCompositeConstruct %mat4v4float %39 %40 %41 %42
+               OpStore %m0 %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+               OpStore %c %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %c
+         %53 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %54 = OpLoad %int %53
+         %55 = OpSLessThan %bool %51 %54
+               OpSelectionMerge %57 None
+               OpBranchConditional %55 %58 %59
+         %58 = OpLabel
+               OpBranch %57
+         %59 = OpLabel
+               OpBranch %48
+         %57 = OpLabel
+         %60 = OpLoad %mat4v4float %m0
+               OpStore %m1 %60
+         %61 = OpLoad %int %c
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %68 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %69 = OpLoad %float %68
+         %70 = OpSMod %int %61 %64
+         %72 = OpAccessChain %_ptr_Function_float %m1 %70 %66
+               OpStore %72 %69
+         %73 = OpLoad %int %c
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %75 = OpLoad %int %74
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %int_0
+         %79 = OpLoad %float %78
+         %80 = OpSMod %int %73 %75
+         %81 = OpAccessChain %_ptr_Function_float %m0 %80 %77
+               OpStore %81 %79
+               OpBranch %49
+         %49 = OpLabel
+         %82 = OpLoad %int %c
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %c %83
+               OpBranch %47
+         %48 = OpLabel
+         %84 = OpLoad %mat4v4float %m0
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %92 = OpLoad %int %91
+         %93 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %98 = OpLoad %int %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %102 = OpLoad %int %101
+        %103 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %104 = OpLoad %int %103
+        %105 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %106 = OpLoad %int %105
+        %107 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %112 = OpLoad %int %111
+        %113 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %86
+        %118 = OpConvertSToF %float %88
+        %119 = OpConvertSToF %float %90
+        %120 = OpConvertSToF %float %92
+        %121 = OpCompositeConstruct %v4float %117 %118 %119 %120
+        %122 = OpConvertSToF %float %94
+        %123 = OpConvertSToF %float %96
+        %124 = OpConvertSToF %float %98
+        %125 = OpConvertSToF %float %100
+        %126 = OpCompositeConstruct %v4float %122 %123 %124 %125
+        %127 = OpConvertSToF %float %102
+        %128 = OpConvertSToF %float %104
+        %129 = OpConvertSToF %float %106
+        %130 = OpConvertSToF %float %108
+        %131 = OpCompositeConstruct %v4float %127 %128 %129 %130
+        %132 = OpConvertSToF %float %110
+        %133 = OpConvertSToF %float %112
+        %134 = OpConvertSToF %float %114
+        %135 = OpConvertSToF %float %116
+        %136 = OpCompositeConstruct %v4float %132 %133 %134 %135
+        %137 = OpCompositeConstruct %mat4v4float %121 %126 %131 %136
+        %139 = OpCompositeExtract %v4float %84 0
+        %140 = OpCompositeExtract %v4float %137 0
+        %141 = OpFOrdEqual %v4bool %139 %140
+        %138 = OpAll %bool %141
+               OpSelectionMerge %143 None
+               OpBranchConditional %138 %144 %143
+        %144 = OpLabel
+        %146 = OpCompositeExtract %v4float %84 1
+        %147 = OpCompositeExtract %v4float %137 1
+        %148 = OpFOrdEqual %v4bool %146 %147
+        %145 = OpAll %bool %148
+               OpBranch %143
+        %143 = OpLabel
+        %149 = OpPhi %bool %138 %48 %145 %144
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %154 = OpCompositeExtract %v4float %84 2
+        %155 = OpCompositeExtract %v4float %137 2
+        %156 = OpFOrdEqual %v4bool %154 %155
+        %152 = OpAll %bool %156
+               OpBranch %150
+        %150 = OpLabel
+        %157 = OpPhi %bool %149 %143 %152 %151
+               OpSelectionMerge %158 None
+               OpBranchConditional %157 %159 %158
+        %159 = OpLabel
+        %162 = OpCompositeExtract %v4float %84 3
+        %163 = OpCompositeExtract %v4float %137 3
+        %164 = OpFOrdEqual %v4bool %162 %163
+        %160 = OpAll %bool %164
+               OpBranch %158
+        %158 = OpLabel
+        %165 = OpPhi %bool %157 %150 %160 %159
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %168
+        %167 = OpLabel
+        %169 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %170 = OpLoad %int %169
+        %171 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %172 = OpLoad %int %171
+        %173 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %174 = OpLoad %int %173
+        %175 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %176 = OpLoad %int %175
+        %177 = OpConvertSToF %float %170
+        %178 = OpConvertSToF %float %172
+        %179 = OpConvertSToF %float %174
+        %180 = OpConvertSToF %float %176
+        %181 = OpCompositeConstruct %v4float %177 %178 %179 %180
+               OpStore %x_GLF_color %181
+               OpBranch %166
+        %168 = OpLabel
+        %182 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %183 = OpLoad %int %182
+        %184 = OpConvertSToF %float %183
+        %185 = OpCompositeConstruct %v4float %184 %184 %184 %184
+               OpStore %x_GLF_color %185
+               OpBranch %166
+        %166 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %186
+%tint_symbol = OpFunctionParameter %main_out
+        %190 = OpLabel
+        %191 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %191
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %193 = OpLabel
+        %194 = OpFunctionCall %void %main_1
+        %196 = OpLoad %v4float %x_GLF_color
+        %197 = OpCompositeConstruct %main_out %196
+        %195 = OpFunctionCall %void %tint_symbol_2 %197
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..cd04198
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,96 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m0 : mat4x4<f32>;
+  var c : i32;
+  var m1 : mat4x4<f32>;
+  let x_40 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_41 : f32 = f32(x_40);
+  m0 = mat4x4<f32>(vec4<f32>(x_41, 0.0, 0.0, 0.0), vec4<f32>(0.0, x_41, 0.0, 0.0), vec4<f32>(0.0, 0.0, x_41, 0.0), vec4<f32>(0.0, 0.0, 0.0, x_41));
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[2];
+  c = x_48;
+  loop {
+    let x_53 : i32 = c;
+    let x_55 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_53 < x_55)) {
+    } else {
+      break;
+    }
+    let x_58 : mat4x4<f32> = m0;
+    m1 = x_58;
+    let x_59 : i32 = c;
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_66 : f32 = x_10.x_GLF_uniform_float_values[0];
+    m1[(x_59 % x_61)][x_64] = x_66;
+    let x_68 : i32 = c;
+    let x_70 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_73 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_75 : f32 = x_10.x_GLF_uniform_float_values[0];
+    m0[(x_68 % x_70)][x_73] = x_75;
+
+    continuing {
+      let x_77 : i32 = c;
+      c = (x_77 + 1);
+    }
+  }
+  let x_79 : mat4x4<f32> = m0;
+  let x_81 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_84 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_87 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_90 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_93 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_96 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_99 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_102 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_105 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_108 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_111 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_114 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_117 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_120 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_123 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_126 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_132 : mat4x4<f32> = mat4x4<f32>(vec4<f32>(f32(x_81), f32(x_84), f32(x_87), f32(x_90)), vec4<f32>(f32(x_93), f32(x_96), f32(x_99), f32(x_102)), vec4<f32>(f32(x_105), f32(x_108), f32(x_111), f32(x_114)), vec4<f32>(f32(x_117), f32(x_120), f32(x_123), f32(x_126)));
+  if ((((all((x_79[0u] == x_132[0u])) && all((x_79[1u] == x_132[1u]))) && all((x_79[2u] == x_132[2u]))) && all((x_79[3u] == x_132[3u])))) {
+    let x_156 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_159 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_162 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_165 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_156), f32(x_159), f32(x_162), f32(x_165));
+  } else {
+    let x_169 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_170 : f32 = f32(x_169);
+    x_GLF_color = vec4<f32>(x_170, x_170, x_170, x_170);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm
new file mode 100644
index 0000000..5591664
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm
@@ -0,0 +1,67 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %8
+         %24 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+         %25 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %26 = OpLoad %int %25
+               OpSelectionMerge %27 None
+               OpSwitch %26 %28 2 %29 3 %29 4 %30
+         %28 = OpLabel
+               OpStore %a %int_2
+               OpBranch %27
+         %29 = OpLabel
+               OpStore %a %int_1
+               OpBranch %30
+         %30 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+         %31 = OpLoad %int %a
+         %32 = OpIEqual %bool %31 %int_2
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..60bd733
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  a = 0;
+  const int x_26 = asint(x_6[0].x);
+  switch(x_26) {
+    case 2:
+    case 3: {
+      a = 1;
+      /* fallthrough */
+    }
+    case 4: {
+      break;
+    }
+    default: {
+      a = 2;
+      break;
+    }
+  }
+  if ((a == 2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4c04e10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  a = 0;
+  int const x_26 = x_6.one;
+  switch(x_26) {
+    case 2:
+    case 3: {
+      a = 1;
+      /* fallthrough */
+    }
+    case 4: {
+      break;
+    }
+    default: {
+      a = 2;
+      break;
+    }
+  }
+  int const x_31 = a;
+  if ((x_31 == 2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b35e4cc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,101 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %39 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %41 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+         %23 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %24 = OpLoad %int %23
+               OpSelectionMerge %25 None
+               OpSwitch %24 %26 2 %27 3 %27 4 %28
+         %27 = OpLabel
+               OpStore %a %int_1
+               OpBranch %28
+         %28 = OpLabel
+               OpBranch %25
+         %26 = OpLabel
+               OpStore %a %int_2
+               OpBranch %25
+         %25 = OpLabel
+         %31 = OpLoad %int %a
+         %32 = OpIEqual %bool %31 %int_2
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %34
+         %36 = OpLabel
+               OpStore %x_GLF_color %40
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %41
+%tint_symbol = OpFunctionParameter %main_out
+         %45 = OpLabel
+         %46 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %46
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_2 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..7ac234c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,43 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = 0;
+  let x_26 : i32 = x_6.one;
+  switch(x_26) {
+    case 2, 3: {
+      a = 1;
+      fallthrough;
+    }
+    case 4: {
+    }
+    default: {
+      a = 2;
+    }
+  }
+  let x_31 : i32 = a;
+  if ((x_31 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
new file mode 100644
index 0000000..7ac234c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
@@ -0,0 +1,43 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = 0;
+  let x_26 : i32 = x_6.one;
+  switch(x_26) {
+    case 2, 3: {
+      a = 1;
+      fallthrough;
+    }
+    case 4: {
+    }
+    default: {
+      a = 2;
+    }
+  }
+  let x_31 : i32 = a;
+  if ((x_31 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..60bd733
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  a = 0;
+  const int x_26 = asint(x_6[0].x);
+  switch(x_26) {
+    case 2:
+    case 3: {
+      a = 1;
+      /* fallthrough */
+    }
+    case 4: {
+      break;
+    }
+    default: {
+      a = 2;
+      break;
+    }
+  }
+  if ((a == 2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4c04e10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  a = 0;
+  int const x_26 = x_6.one;
+  switch(x_26) {
+    case 2:
+    case 3: {
+      a = 1;
+      /* fallthrough */
+    }
+    case 4: {
+      break;
+    }
+    default: {
+      a = 2;
+      break;
+    }
+  }
+  int const x_31 = a;
+  if ((x_31 == 2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b35e4cc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,101 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %39 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %41 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+         %23 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %24 = OpLoad %int %23
+               OpSelectionMerge %25 None
+               OpSwitch %24 %26 2 %27 3 %27 4 %28
+         %27 = OpLabel
+               OpStore %a %int_1
+               OpBranch %28
+         %28 = OpLabel
+               OpBranch %25
+         %26 = OpLabel
+               OpStore %a %int_2
+               OpBranch %25
+         %25 = OpLabel
+         %31 = OpLoad %int %a
+         %32 = OpIEqual %bool %31 %int_2
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %34
+         %36 = OpLabel
+               OpStore %x_GLF_color %40
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %41
+%tint_symbol = OpFunctionParameter %main_out
+         %45 = OpLabel
+         %46 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %46
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_2 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..7ac234c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,43 @@
+[[block]]
+struct buf0 {
+  one : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  a = 0;
+  let x_26 : i32 = x_6.one;
+  switch(x_26) {
+    case 2, 3: {
+      a = 1;
+      fallthrough;
+    }
+    case 4: {
+    }
+    default: {
+      a = 2;
+    }
+  }
+  let x_31 : i32 = a;
+  if ((x_31 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm
new file mode 100644
index 0000000..0528283
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm
@@ -0,0 +1,115 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %A "A"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %11
+         %28 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+          %A = OpVariable %_ptr_Function__arr_int_uint_2 Function
+          %a = OpVariable %_ptr_Function_int Function
+         %29 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %30 = OpLoad %int %29
+               OpStore %i %30
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpSLessThan %bool %35 %37
+               OpBranchConditional %38 %39 %32
+         %39 = OpLabel
+         %40 = OpLoad %int %i
+         %41 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Function_int %A %40
+               OpStore %42 %41
+               OpBranch %33
+         %33 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpIAdd %int %43 %int_1
+               OpStore %i %44
+               OpBranch %31
+         %32 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Function_int %A %46
+         %48 = OpLoad %int %47
+         %49 = OpNot %int %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Function_int %A %51
+         %53 = OpLoad %int %52
+         %54 = OpNot %int %53
+         %55 = OpExtInst %int %1 SMin %49 %54
+               OpStore %a %55
+         %56 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpCompositeConstruct %v4float %58 %58 %58 %58
+               OpStore %_GLF_color %59
+         %60 = OpLoad %int %a
+         %61 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %62 = OpLoad %int %61
+         %63 = OpSNegate %int %62
+         %64 = OpIEqual %bool %60 %63
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %68 = OpLoad %int %67
+         %69 = OpConvertSToF %float %68
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %69 %72 %75 %78
+               OpStore %_GLF_color %79
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b0be04f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int A[2] = (int[2])0;
+  int a = 0;
+  const int x_30 = asint(x_6[1].x);
+  i = x_30;
+  while (true) {
+    const int x_35 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_37 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    A[i] = i;
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_46 = asint(x_6[1].x);
+  const int x_48 = A[x_46];
+  const int x_51 = asint(x_6[2].x);
+  const int x_53 = A[x_51];
+  a = min(~(x_48), ~(x_53));
+  const int x_57 = asint(x_6[1].x);
+  const float x_58 = float(x_57);
+  x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  const int x_60 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_62 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_60 == -(x_62))) {
+    const int x_68 = asint(x_6[2].x);
+    const int x_71 = asint(x_6[1].x);
+    const int x_74 = asint(x_6[1].x);
+    const int x_77 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_68), float(x_71), float(x_74), float(x_77));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4aaf44e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.msl
@@ -0,0 +1,72 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 A = {};
+  int a = 0;
+  int const x_30 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_30;
+  while (true) {
+    int const x_35 = i;
+    int const x_37 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    int const x_40 = i;
+    int const x_41 = i;
+    A.arr[x_40] = x_41;
+    {
+      int const x_43 = i;
+      i = (x_43 + 1);
+    }
+  }
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_48 = A.arr[x_46];
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_53 = A.arr[x_51];
+  a = min(~(x_48), ~(x_53));
+  int const x_57 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_58 = float(x_57);
+  *(tint_symbol_4) = float4(x_58, x_58, x_58, x_58);
+  int const x_60 = a;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_60 == -(x_62))) {
+    int const x_68 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_74 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_68), float(x_71), float(x_74), float(x_77));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..35b828d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,156 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 100
+; Schema: 0
+               OpCapability Shader
+         %61 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %A "A"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %26 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %A = OpVariable %_ptr_Function__arr_int_uint_2 Function %26
+          %a = OpVariable %_ptr_Function_int Function %21
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %32 = OpLoad %int %31
+               OpStore %i %32
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %37 %40
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %34
+         %43 = OpLabel
+         %46 = OpLoad %int %i
+         %47 = OpLoad %int %i
+         %48 = OpAccessChain %_ptr_Function_int %A %46
+               OpStore %48 %47
+               OpBranch %35
+         %35 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %i %50
+               OpBranch %33
+         %34 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Function_int %A %52
+         %54 = OpLoad %int %53
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %57 = OpLoad %int %56
+         %58 = OpAccessChain %_ptr_Function_int %A %57
+         %59 = OpLoad %int %58
+         %62 = OpNot %int %54
+         %63 = OpNot %int %59
+         %60 = OpExtInst %int %61 SMin %62 %63
+               OpStore %a %60
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %66 %66 %66 %66
+               OpStore %x_GLF_color %67
+         %68 = OpLoad %int %a
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpSNegate %int %70
+         %72 = OpIEqual %bool %68 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %76
+         %84 = OpConvertSToF %float %78
+         %85 = OpConvertSToF %float %80
+         %86 = OpConvertSToF %float %82
+         %87 = OpCompositeConstruct %v4float %83 %84 %85 %86
+               OpStore %x_GLF_color %87
+               OpBranch %73
+         %73 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %88
+%tint_symbol = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %95 = OpLabel
+         %96 = OpFunctionCall %void %main_1
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpCompositeConstruct %main_out %98
+         %97 = OpFunctionCall %void %tint_symbol_2 %99
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c17f0bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var A : array<i32, 2>;
+  var a : i32;
+  let x_30 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_30;
+  loop {
+    let x_35 : i32 = i;
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    let x_40 : i32 = i;
+    let x_41 : i32 = i;
+    A[x_40] = x_41;
+
+    continuing {
+      let x_43 : i32 = i;
+      i = (x_43 + 1);
+    }
+  }
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_48 : i32 = A[x_46];
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_53 : i32 = A[x_51];
+  a = min(~(x_48), ~(x_53));
+  let x_57 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_58 : f32 = f32(x_57);
+  x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  let x_60 : i32 = a;
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_60 == -(x_62))) {
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_68), f32(x_71), f32(x_74), f32(x_77));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
new file mode 100644
index 0000000..c17f0bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var A : array<i32, 2>;
+  var a : i32;
+  let x_30 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_30;
+  loop {
+    let x_35 : i32 = i;
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    let x_40 : i32 = i;
+    let x_41 : i32 = i;
+    A[x_40] = x_41;
+
+    continuing {
+      let x_43 : i32 = i;
+      i = (x_43 + 1);
+    }
+  }
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_48 : i32 = A[x_46];
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_53 : i32 = A[x_51];
+  a = min(~(x_48), ~(x_53));
+  let x_57 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_58 : f32 = f32(x_57);
+  x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  let x_60 : i32 = a;
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_60 == -(x_62))) {
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_68), f32(x_71), f32(x_74), f32(x_77));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b0be04f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int A[2] = (int[2])0;
+  int a = 0;
+  const int x_30 = asint(x_6[1].x);
+  i = x_30;
+  while (true) {
+    const int x_35 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_37 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    A[i] = i;
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_46 = asint(x_6[1].x);
+  const int x_48 = A[x_46];
+  const int x_51 = asint(x_6[2].x);
+  const int x_53 = A[x_51];
+  a = min(~(x_48), ~(x_53));
+  const int x_57 = asint(x_6[1].x);
+  const float x_58 = float(x_57);
+  x_GLF_color = float4(x_58, x_58, x_58, x_58);
+  const int x_60 = a;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_62 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_60 == -(x_62))) {
+    const int x_68 = asint(x_6[2].x);
+    const int x_71 = asint(x_6[1].x);
+    const int x_74 = asint(x_6[1].x);
+    const int x_77 = asint(x_6[2].x);
+    x_GLF_color = float4(float(x_68), float(x_71), float(x_74), float(x_77));
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4aaf44e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.msl
@@ -0,0 +1,72 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper_1 A = {};
+  int a = 0;
+  int const x_30 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  i = x_30;
+  while (true) {
+    int const x_35 = i;
+    int const x_37 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    int const x_40 = i;
+    int const x_41 = i;
+    A.arr[x_40] = x_41;
+    {
+      int const x_43 = i;
+      i = (x_43 + 1);
+    }
+  }
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_48 = A.arr[x_46];
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_53 = A.arr[x_51];
+  a = min(~(x_48), ~(x_53));
+  int const x_57 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  float const x_58 = float(x_57);
+  *(tint_symbol_4) = float4(x_58, x_58, x_58, x_58);
+  int const x_60 = a;
+  int const x_62 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_60 == -(x_62))) {
+    int const x_68 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_74 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_77 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    *(tint_symbol_4) = float4(float(x_68), float(x_71), float(x_74), float(x_77));
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..35b828d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,156 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 100
+; Schema: 0
+               OpCapability Shader
+         %61 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %A "A"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %26 = OpConstantNull %_arr_int_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %21
+          %A = OpVariable %_ptr_Function__arr_int_uint_2 Function %26
+          %a = OpVariable %_ptr_Function_int Function %21
+         %31 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %32 = OpLoad %int %31
+               OpStore %i %32
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpSLessThan %bool %37 %40
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %34
+         %43 = OpLabel
+         %46 = OpLoad %int %i
+         %47 = OpLoad %int %i
+         %48 = OpAccessChain %_ptr_Function_int %A %46
+               OpStore %48 %47
+               OpBranch %35
+         %35 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %i %50
+               OpBranch %33
+         %34 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Function_int %A %52
+         %54 = OpLoad %int %53
+         %56 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %57 = OpLoad %int %56
+         %58 = OpAccessChain %_ptr_Function_int %A %57
+         %59 = OpLoad %int %58
+         %62 = OpNot %int %54
+         %63 = OpNot %int %59
+         %60 = OpExtInst %int %61 SMin %62 %63
+               OpStore %a %60
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %66 %66 %66 %66
+               OpStore %x_GLF_color %67
+         %68 = OpLoad %int %a
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpSNegate %int %70
+         %72 = OpIEqual %bool %68 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %76 = OpLoad %int %75
+         %77 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %78 = OpLoad %int %77
+         %79 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %76
+         %84 = OpConvertSToF %float %78
+         %85 = OpConvertSToF %float %80
+         %86 = OpConvertSToF %float %82
+         %87 = OpCompositeConstruct %v4float %83 %84 %85 %86
+               OpStore %x_GLF_color %87
+               OpBranch %73
+         %73 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %88
+%tint_symbol = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %95 = OpLabel
+         %96 = OpFunctionCall %void %main_1
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpCompositeConstruct %main_out %98
+         %97 = OpFunctionCall %void %tint_symbol_2 %99
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c17f0bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var A : array<i32, 2>;
+  var a : i32;
+  let x_30 : i32 = x_6.x_GLF_uniform_int_values[1];
+  i = x_30;
+  loop {
+    let x_35 : i32 = i;
+    let x_37 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_35 < x_37)) {
+    } else {
+      break;
+    }
+    let x_40 : i32 = i;
+    let x_41 : i32 = i;
+    A[x_40] = x_41;
+
+    continuing {
+      let x_43 : i32 = i;
+      i = (x_43 + 1);
+    }
+  }
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_48 : i32 = A[x_46];
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_53 : i32 = A[x_51];
+  a = min(~(x_48), ~(x_53));
+  let x_57 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_58 : f32 = f32(x_57);
+  x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
+  let x_60 : i32 = a;
+  let x_62 : i32 = x_6.x_GLF_uniform_int_values[0];
+  if ((x_60 == -(x_62))) {
+    let x_68 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_74 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_77 : i32 = x_6.x_GLF_uniform_int_values[2];
+    x_GLF_color = vec4<f32>(f32(x_68), f32(x_71), f32(x_74), f32(x_77));
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm
new file mode 100644
index 0000000..5730c8b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm
@@ -0,0 +1,112 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %25 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+         %26 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %29 = OpLoad %int %28
+               OpStore %i %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %36 = OpLoad %int %35
+         %37 = OpSLessThan %bool %34 %36
+               OpBranchConditional %37 %38 %31
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %40 = OpSMod %int %int_1 %39
+         %41 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %42 = OpLoad %int %41
+         %43 = OpIEqual %bool %40 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpBranch %32
+         %44 = OpLabel
+         %46 = OpLoad %int %a
+         %47 = OpIAdd %int %46 %int_1
+               OpStore %a %47
+               OpBranch %32
+         %32 = OpLabel
+         %48 = OpLoad %int %i
+         %49 = OpIAdd %int %48 %int_1
+               OpStore %i %49
+               OpBranch %30
+         %31 = OpLabel
+         %50 = OpLoad %int %a
+         %51 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %52 = OpLoad %int %51
+         %53 = OpIEqual %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %56
+         %55 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %67 = OpLoad %int %66
+         %68 = OpConvertSToF %float %67
+         %69 = OpCompositeConstruct %v4float %59 %62 %65 %68
+               OpStore %_GLF_color %69
+               OpBranch %54
+         %56 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %71 = OpLoad %int %70
+         %72 = OpConvertSToF %float %71
+         %73 = OpCompositeConstruct %v4float %72 %72 %72 %72
+               OpStore %_GLF_color %73
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ad949e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,62 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[2].x);
+  a = x_27;
+  const int x_29 = asint(x_6[3].x);
+  i = x_29;
+  while (true) {
+    const int x_34 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_36 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    const int x_39 = i;
+    const int x_42 = asint(x_6[2].x);
+    if (((1 % x_39) == x_42)) {
+      {
+        i = (i + 1);
+      }
+      continue;
+    }
+    a = (a + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_50 = a;
+  const int x_52 = asint(x_6[1].x);
+  if ((x_50 == x_52)) {
+    const int x_58 = asint(x_6[3].x);
+    const int x_61 = asint(x_6[2].x);
+    const int x_64 = asint(x_6[2].x);
+    const int x_67 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_58), float(x_61), float(x_64), float(x_67));
+  } else {
+    const int x_71 = asint(x_6[2].x);
+    const float x_72 = float(x_71);
+    x_GLF_color = float4(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bd9b04a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_27;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  i = x_29;
+  while (true) {
+    int const x_34 = i;
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    int const x_39 = i;
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if (((1 % x_39) == x_42)) {
+      {
+        int const x_48 = i;
+        i = (x_48 + 1);
+      }
+      continue;
+    }
+    int const x_46 = a;
+    a = (x_46 + 1);
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  int const x_50 = a;
+  int const x_52 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_50 == x_52)) {
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_58), float(x_61), float(x_64), float(x_67));
+  } else {
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_72 = float(x_71);
+    *(tint_symbol_4) = float4(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..815ee58
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %30 = OpLoad %int %29
+               OpStore %i %30
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpSLessThan %bool %35 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %32
+         %41 = OpLabel
+         %44 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %48 = OpSMod %int %int_1 %44
+         %49 = OpIEqual %bool %48 %46
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpBranch %33
+         %50 = OpLabel
+         %52 = OpLoad %int %a
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %a %53
+               OpBranch %33
+         %33 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %i %55
+               OpBranch %31
+         %32 = OpLabel
+         %56 = OpLoad %int %a
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpIEqual %bool %56 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %60
+         %62 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %60
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d11bb08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,64 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = x_29;
+  loop {
+    let x_34 : i32 = i;
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = i;
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if (((1 % x_39) == x_42)) {
+      continue;
+    }
+    let x_46 : i32 = a;
+    a = (x_46 + 1);
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : i32 = a;
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_50 == x_52)) {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_58), f32(x_61), f32(x_64), f32(x_67));
+  } else {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_72 : f32 = f32(x_71);
+    x_GLF_color = vec4<f32>(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
new file mode 100644
index 0000000..d11bb08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
@@ -0,0 +1,64 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = x_29;
+  loop {
+    let x_34 : i32 = i;
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = i;
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if (((1 % x_39) == x_42)) {
+      continue;
+    }
+    let x_46 : i32 = a;
+    a = (x_46 + 1);
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : i32 = a;
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_50 == x_52)) {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_58), f32(x_61), f32(x_64), f32(x_67));
+  } else {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_72 : f32 = f32(x_71);
+    x_GLF_color = vec4<f32>(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ad949e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,62 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  const int x_27 = asint(x_6[2].x);
+  a = x_27;
+  const int x_29 = asint(x_6[3].x);
+  i = x_29;
+  while (true) {
+    const int x_34 = i;
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const int x_36 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    const int x_39 = i;
+    const int x_42 = asint(x_6[2].x);
+    if (((1 % x_39) == x_42)) {
+      {
+        i = (i + 1);
+      }
+      continue;
+    }
+    a = (a + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_50 = a;
+  const int x_52 = asint(x_6[1].x);
+  if ((x_50 == x_52)) {
+    const int x_58 = asint(x_6[3].x);
+    const int x_61 = asint(x_6[2].x);
+    const int x_64 = asint(x_6[2].x);
+    const int x_67 = asint(x_6[3].x);
+    x_GLF_color = float4(float(x_58), float(x_61), float(x_64), float(x_67));
+  } else {
+    const int x_71 = asint(x_6[2].x);
+    const float x_72 = float(x_71);
+    x_GLF_color = float4(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..bd9b04a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  int const x_27 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  a = x_27;
+  int const x_29 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  i = x_29;
+  while (true) {
+    int const x_34 = i;
+    int const x_36 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    int const x_39 = i;
+    int const x_42 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    if (((1 % x_39) == x_42)) {
+      {
+        int const x_48 = i;
+        i = (x_48 + 1);
+      }
+      continue;
+    }
+    int const x_46 = a;
+    a = (x_46 + 1);
+    {
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  int const x_50 = a;
+  int const x_52 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_50 == x_52)) {
+    int const x_58 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    int const x_61 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_64 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    int const x_67 = x_6.x_GLF_uniform_int_values.arr[3].el;
+    *(tint_symbol_4) = float4(float(x_58), float(x_61), float(x_64), float(x_67));
+  } else {
+    int const x_71 = x_6.x_GLF_uniform_int_values.arr[2].el;
+    float const x_72 = float(x_71);
+    *(tint_symbol_4) = float4(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..815ee58
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 92
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_2 = OpConstant %int 2
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %80 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %27 = OpLoad %int %26
+               OpStore %a %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %30 = OpLoad %int %29
+               OpStore %i %30
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %38 = OpLoad %int %37
+         %39 = OpSLessThan %bool %35 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %32
+         %41 = OpLabel
+         %44 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %46 = OpLoad %int %45
+         %48 = OpSMod %int %int_1 %44
+         %49 = OpIEqual %bool %48 %46
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpBranch %33
+         %50 = OpLabel
+         %52 = OpLoad %int %a
+         %53 = OpIAdd %int %52 %int_1
+               OpStore %a %53
+               OpBranch %33
+         %33 = OpLabel
+         %54 = OpLoad %int %i
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %i %55
+               OpBranch %31
+         %32 = OpLabel
+         %56 = OpLoad %int %a
+         %57 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpIEqual %bool %56 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %70 = OpLoad %int %69
+         %71 = OpConvertSToF %float %64
+         %72 = OpConvertSToF %float %66
+         %73 = OpConvertSToF %float %68
+         %74 = OpConvertSToF %float %70
+         %75 = OpCompositeConstruct %v4float %71 %72 %73 %74
+               OpStore %x_GLF_color %75
+               OpBranch %60
+         %62 = OpLabel
+         %76 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpCompositeConstruct %v4float %78 %78 %78 %78
+               OpStore %x_GLF_color %79
+               OpBranch %60
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %80
+%tint_symbol = OpFunctionParameter %main_out
+         %84 = OpLabel
+         %85 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %85
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %87 = OpLabel
+         %88 = OpFunctionCall %void %main_1
+         %90 = OpLoad %v4float %x_GLF_color
+         %91 = OpCompositeConstruct %main_out %90
+         %89 = OpFunctionCall %void %tint_symbol_2 %91
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d11bb08
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,64 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  let x_27 : i32 = x_6.x_GLF_uniform_int_values[2];
+  a = x_27;
+  let x_29 : i32 = x_6.x_GLF_uniform_int_values[3];
+  i = x_29;
+  loop {
+    let x_34 : i32 = i;
+    let x_36 : i32 = x_6.x_GLF_uniform_int_values[0];
+    if ((x_34 < x_36)) {
+    } else {
+      break;
+    }
+    let x_39 : i32 = i;
+    let x_42 : i32 = x_6.x_GLF_uniform_int_values[2];
+    if (((1 % x_39) == x_42)) {
+      continue;
+    }
+    let x_46 : i32 = a;
+    a = (x_46 + 1);
+
+    continuing {
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : i32 = a;
+  let x_52 : i32 = x_6.x_GLF_uniform_int_values[1];
+  if ((x_50 == x_52)) {
+    let x_58 : i32 = x_6.x_GLF_uniform_int_values[3];
+    let x_61 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_64 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_67 : i32 = x_6.x_GLF_uniform_int_values[3];
+    x_GLF_color = vec4<f32>(f32(x_58), f32(x_61), f32(x_64), f32(x_67));
+  } else {
+    let x_71 : i32 = x_6.x_GLF_uniform_int_values[2];
+    let x_72 : f32 = f32(x_71);
+    x_GLF_color = vec4<f32>(x_72, x_72, x_72, x_72);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm
new file mode 100644
index 0000000..c0e7096
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm
@@ -0,0 +1,77 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %int_n2 = OpConstant %int -2
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %main = OpFunction %void None %9
+         %25 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %i
+         %31 = OpSLessThan %bool %30 %int_2
+               OpBranchConditional %31 %32 %27
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %34 = OpBitwiseOr %int %33 %int_n2
+         %35 = OpISub %int %34 %int_1
+               OpStore %a %35
+               OpBranch %28
+         %28 = OpLabel
+         %36 = OpLoad %int %i
+         %37 = OpIAdd %int %36 %int_1
+               OpStore %i %37
+               OpBranch %26
+         %27 = OpLabel
+         %38 = OpLoad %int %a
+         %39 = OpIEqual %bool %38 %int_n2
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %42
+         %41 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %40
+         %42 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %40
+         %40 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..cf1aef6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,36 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  {
+    for(; (i < 2); i = (i + 1)) {
+      a = ((i | -2) - 1);
+    }
+  }
+  if ((a == -2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f06e3b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_30 = i;
+    if ((x_30 < 2)) {
+    } else {
+      break;
+    }
+    int const x_33 = i;
+    a = ((x_33 | -2) - 1);
+    {
+      int const x_36 = i;
+      i = (x_36 + 1);
+    }
+  }
+  int const x_38 = a;
+  if ((x_38 == -2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..04cf099
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 60
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %int_n2 = OpConstant %int -2
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %46 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %48 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %i
+         %27 = OpSLessThan %bool %25 %int_2
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpBranch %29
+         %31 = OpLabel
+               OpBranch %22
+         %29 = OpLabel
+         %32 = OpLoad %int %i
+         %34 = OpBitwiseOr %int %32 %int_n2
+         %36 = OpISub %int %34 %int_1
+               OpStore %a %36
+               OpBranch %23
+         %23 = OpLabel
+         %37 = OpLoad %int %i
+         %38 = OpIAdd %int %37 %int_1
+               OpStore %i %38
+               OpBranch %21
+         %22 = OpLabel
+         %39 = OpLoad %int %a
+         %40 = OpIEqual %bool %39 %int_n2
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+               OpStore %x_GLF_color %46
+               OpBranch %41
+         %43 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %48
+%tint_symbol = OpFunctionParameter %main_out
+         %52 = OpLabel
+         %53 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %53
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %main_1
+         %58 = OpLoad %v4float %x_GLF_color
+         %59 = OpCompositeConstruct %main_out %58
+         %57 = OpFunctionCall %void %tint_symbol_2 %59
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5aa3bbe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,47 @@
+[[block]]
+struct buf0 {
+  two : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_30 : i32 = i;
+    if ((x_30 < 2)) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = i;
+    a = ((x_33 | -2) - 1);
+
+    continuing {
+      let x_36 : i32 = i;
+      i = (x_36 + 1);
+    }
+  }
+  let x_38 : i32 = a;
+  if ((x_38 == -2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
new file mode 100644
index 0000000..5aa3bbe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
@@ -0,0 +1,47 @@
+[[block]]
+struct buf0 {
+  two : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_30 : i32 = i;
+    if ((x_30 < 2)) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = i;
+    a = ((x_33 | -2) - 1);
+
+    continuing {
+      let x_36 : i32 = i;
+      i = (x_36 + 1);
+    }
+  }
+  let x_38 : i32 = a;
+  if ((x_38 == -2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..cf1aef6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,36 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+
+void main_1() {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  {
+    for(; (i < 2); i = (i + 1)) {
+      a = ((i | -2) - 1);
+    }
+  }
+  if ((a == -2)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f06e3b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int two;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int a = 0;
+  int i = 0;
+  a = 0;
+  i = 0;
+  while (true) {
+    int const x_30 = i;
+    if ((x_30 < 2)) {
+    } else {
+      break;
+    }
+    int const x_33 = i;
+    a = ((x_33 | -2) - 1);
+    {
+      int const x_36 = i;
+      i = (x_36 + 1);
+    }
+  }
+  int const x_38 = a;
+  if ((x_38 == -2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..04cf099
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 60
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "two"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %int_n2 = OpConstant %int -2
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %46 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %48 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %18
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %a %int_0
+               OpStore %i %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %int %i
+         %27 = OpSLessThan %bool %25 %int_2
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpBranch %29
+         %31 = OpLabel
+               OpBranch %22
+         %29 = OpLabel
+         %32 = OpLoad %int %i
+         %34 = OpBitwiseOr %int %32 %int_n2
+         %36 = OpISub %int %34 %int_1
+               OpStore %a %36
+               OpBranch %23
+         %23 = OpLabel
+         %37 = OpLoad %int %i
+         %38 = OpIAdd %int %37 %int_1
+               OpStore %i %38
+               OpBranch %21
+         %22 = OpLabel
+         %39 = OpLoad %int %a
+         %40 = OpIEqual %bool %39 %int_n2
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+               OpStore %x_GLF_color %46
+               OpBranch %41
+         %43 = OpLabel
+               OpStore %x_GLF_color %47
+               OpBranch %41
+         %41 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %48
+%tint_symbol = OpFunctionParameter %main_out
+         %52 = OpLabel
+         %53 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %53
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %main_1
+         %58 = OpLoad %v4float %x_GLF_color
+         %59 = OpCompositeConstruct %main_out %58
+         %57 = OpFunctionCall %void %tint_symbol_2 %59
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5aa3bbe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,47 @@
+[[block]]
+struct buf0 {
+  two : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn main_1() {
+  var a : i32;
+  var i : i32;
+  a = 0;
+  i = 0;
+  loop {
+    let x_30 : i32 = i;
+    if ((x_30 < 2)) {
+    } else {
+      break;
+    }
+    let x_33 : i32 = i;
+    a = ((x_33 | -2) - 1);
+
+    continuing {
+      let x_36 : i32 = i;
+      i = (x_36 + 1);
+    }
+  }
+  let x_38 : i32 = a;
+  if ((x_38 == -2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm
new file mode 100644
index 0000000..924fb9e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm
@@ -0,0 +1,117 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %sum "sum"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+  %int_65536 = OpConstant %int 65536
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %11
+         %27 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function
+        %sum = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %a %int_65536
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %29 = OpLoad %int %28
+               OpStore %sum %29
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %31 = OpLoad %int %30
+         %32 = OpIEqual %bool %int_1 %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+         %35 = OpLoad %int %a
+         %36 = OpISub %int %35 %int_1
+               OpStore %a %36
+               OpBranch %33
+         %33 = OpLabel
+               OpStore %i %int_0
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %i
+         %42 = OpLoad %int %a
+         %43 = OpSLessThan %bool %41 %42
+               OpBranchConditional %43 %44 %38
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpLoad %int %sum
+         %47 = OpIAdd %int %46 %45
+               OpStore %sum %47
+               OpBranch %39
+         %39 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %49 = OpLoad %int %48
+         %50 = OpLoad %int %i
+         %51 = OpIAdd %int %50 %49
+               OpStore %i %51
+               OpBranch %37
+         %38 = OpLabel
+         %52 = OpLoad %int %sum
+         %53 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %52 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpCompositeConstruct %v4float %61 %64 %67 %70
+               OpStore %_GLF_color %71
+               OpBranch %56
+         %58 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpCompositeConstruct %v4float %74 %74 %74 %74
+               OpStore %_GLF_color %75
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..08b57e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,61 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int sum = 0;
+  int i = 0;
+  a = 65536;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  sum = x_29;
+  const int x_31 = asint(x_7[1].x);
+  if ((1 == x_31)) {
+    a = (a - 1);
+  }
+  i = 0;
+  while (true) {
+    if ((i < a)) {
+    } else {
+      break;
+    }
+    sum = (sum + i);
+    {
+      const int x_49 = asint(x_7[2].x);
+      i = (i + x_49);
+    }
+  }
+  const int x_52 = sum;
+  const int x_54 = asint(x_7[3].x);
+  if ((x_52 == x_54)) {
+    const int x_60 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_63 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_69 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_60), float(x_63), float(x_66), float(x_69));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_73 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_74 = float(x_73);
+    x_GLF_color = float4(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..aca4892
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.msl
@@ -0,0 +1,73 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int sum = 0;
+  int i = 0;
+  a = 65536;
+  int const x_29 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  sum = x_29;
+  int const x_31 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((1 == x_31)) {
+    int const x_35 = a;
+    a = (x_35 - 1);
+  }
+  i = 0;
+  while (true) {
+    int const x_41 = i;
+    int const x_42 = a;
+    if ((x_41 < x_42)) {
+    } else {
+      break;
+    }
+    int const x_45 = i;
+    int const x_46 = sum;
+    sum = (x_46 + x_45);
+    {
+      int const x_49 = x_7.x_GLF_uniform_int_values.arr[2].el;
+      int const x_50 = i;
+      i = (x_50 + x_49);
+    }
+  }
+  int const x_52 = sum;
+  int const x_54 = x_7.x_GLF_uniform_int_values.arr[3].el;
+  if ((x_52 == x_54)) {
+    int const x_60 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_63 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_66 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_69 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_60), float(x_63), float(x_66), float(x_69));
+  } else {
+    int const x_73 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_74 = float(x_73);
+    *(tint_symbol_4) = float4(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0d08156
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,155 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 94
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %sum "sum"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+  %int_65536 = OpConstant %int 65536
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+         %82 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+        %sum = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_65536
+         %28 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %29 = OpLoad %int %28
+               OpStore %sum %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %32 = OpLoad %int %31
+         %33 = OpIEqual %bool %int_1 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %37 = OpLoad %int %a
+         %38 = OpISub %int %37 %int_1
+               OpStore %a %38
+               OpBranch %35
+         %35 = OpLabel
+               OpStore %i %int_0
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpLoad %int %a
+         %45 = OpSLessThan %bool %43 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %40
+         %46 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpLoad %int %sum
+         %51 = OpIAdd %int %50 %49
+               OpStore %sum %51
+               OpBranch %41
+         %41 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %54 = OpLoad %int %53
+         %55 = OpLoad %int %i
+         %56 = OpIAdd %int %55 %54
+               OpStore %i %56
+               OpBranch %39
+         %40 = OpLabel
+         %57 = OpLoad %int %sum
+         %59 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_3
+         %60 = OpLoad %int %59
+         %61 = OpIEqual %bool %57 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %66
+         %74 = OpConvertSToF %float %68
+         %75 = OpConvertSToF %float %70
+         %76 = OpConvertSToF %float %72
+         %77 = OpCompositeConstruct %v4float %73 %74 %75 %76
+               OpStore %x_GLF_color %77
+               OpBranch %62
+         %64 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %79
+         %81 = OpCompositeConstruct %v4float %80 %80 %80 %80
+               OpStore %x_GLF_color %81
+               OpBranch %62
+         %62 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %82
+%tint_symbol = OpFunctionParameter %main_out
+         %86 = OpLabel
+         %87 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %87
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %89 = OpLabel
+         %90 = OpFunctionCall %void %main_1
+         %92 = OpLoad %v4float %x_GLF_color
+         %93 = OpCompositeConstruct %main_out %92
+         %91 = OpFunctionCall %void %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c8d8ccc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,67 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var sum : i32;
+  var i : i32;
+  a = 65536;
+  let x_29 : i32 = x_7.x_GLF_uniform_int_values[0];
+  sum = x_29;
+  let x_31 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((1 == x_31)) {
+    let x_35 : i32 = a;
+    a = (x_35 - 1);
+  }
+  i = 0;
+  loop {
+    let x_41 : i32 = i;
+    let x_42 : i32 = a;
+    if ((x_41 < x_42)) {
+    } else {
+      break;
+    }
+    let x_45 : i32 = i;
+    let x_46 : i32 = sum;
+    sum = (x_46 + x_45);
+
+    continuing {
+      let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+      let x_50 : i32 = i;
+      i = (x_50 + x_49);
+    }
+  }
+  let x_52 : i32 = sum;
+  let x_54 : i32 = x_7.x_GLF_uniform_int_values[3];
+  if ((x_52 == x_54)) {
+    let x_60 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_66 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_69 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_60), f32(x_63), f32(x_66), f32(x_69));
+  } else {
+    let x_73 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_74 : f32 = f32(x_73);
+    x_GLF_color = vec4<f32>(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
new file mode 100644
index 0000000..c8d8ccc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
@@ -0,0 +1,67 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var sum : i32;
+  var i : i32;
+  a = 65536;
+  let x_29 : i32 = x_7.x_GLF_uniform_int_values[0];
+  sum = x_29;
+  let x_31 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((1 == x_31)) {
+    let x_35 : i32 = a;
+    a = (x_35 - 1);
+  }
+  i = 0;
+  loop {
+    let x_41 : i32 = i;
+    let x_42 : i32 = a;
+    if ((x_41 < x_42)) {
+    } else {
+      break;
+    }
+    let x_45 : i32 = i;
+    let x_46 : i32 = sum;
+    sum = (x_46 + x_45);
+
+    continuing {
+      let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+      let x_50 : i32 = i;
+      i = (x_50 + x_49);
+    }
+  }
+  let x_52 : i32 = sum;
+  let x_54 : i32 = x_7.x_GLF_uniform_int_values[3];
+  if ((x_52 == x_54)) {
+    let x_60 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_66 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_69 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_60), f32(x_63), f32(x_66), f32(x_69));
+  } else {
+    let x_73 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_74 : f32 = f32(x_73);
+    x_GLF_color = vec4<f32>(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..08b57e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,61 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int a = 0;
+  int sum = 0;
+  int i = 0;
+  a = 65536;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_29 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  sum = x_29;
+  const int x_31 = asint(x_7[1].x);
+  if ((1 == x_31)) {
+    a = (a - 1);
+  }
+  i = 0;
+  while (true) {
+    if ((i < a)) {
+    } else {
+      break;
+    }
+    sum = (sum + i);
+    {
+      const int x_49 = asint(x_7[2].x);
+      i = (i + x_49);
+    }
+  }
+  const int x_52 = sum;
+  const int x_54 = asint(x_7[3].x);
+  if ((x_52 == x_54)) {
+    const int x_60 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_63 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_66 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_69 = asint(x_7[1].x);
+    x_GLF_color = float4(float(x_60), float(x_63), float(x_66), float(x_69));
+  } else {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_73 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const float x_74 = float(x_73);
+    x_GLF_color = float4(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..aca4892
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.msl
@@ -0,0 +1,73 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int a = 0;
+  int sum = 0;
+  int i = 0;
+  a = 65536;
+  int const x_29 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  sum = x_29;
+  int const x_31 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((1 == x_31)) {
+    int const x_35 = a;
+    a = (x_35 - 1);
+  }
+  i = 0;
+  while (true) {
+    int const x_41 = i;
+    int const x_42 = a;
+    if ((x_41 < x_42)) {
+    } else {
+      break;
+    }
+    int const x_45 = i;
+    int const x_46 = sum;
+    sum = (x_46 + x_45);
+    {
+      int const x_49 = x_7.x_GLF_uniform_int_values.arr[2].el;
+      int const x_50 = i;
+      i = (x_50 + x_49);
+    }
+  }
+  int const x_52 = sum;
+  int const x_54 = x_7.x_GLF_uniform_int_values.arr[3].el;
+  if ((x_52 == x_54)) {
+    int const x_60 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_63 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_66 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_69 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_60), float(x_63), float(x_66), float(x_69));
+  } else {
+    int const x_73 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_74 = float(x_73);
+    *(tint_symbol_4) = float4(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0d08156
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,155 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 94
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %sum "sum"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %21 = OpConstantNull %int
+  %int_65536 = OpConstant %int 65536
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+         %82 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %a = OpVariable %_ptr_Function_int Function %21
+        %sum = OpVariable %_ptr_Function_int Function %21
+          %i = OpVariable %_ptr_Function_int Function %21
+               OpStore %a %int_65536
+         %28 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %29 = OpLoad %int %28
+               OpStore %sum %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %32 = OpLoad %int %31
+         %33 = OpIEqual %bool %int_1 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %37 = OpLoad %int %a
+         %38 = OpISub %int %37 %int_1
+               OpStore %a %38
+               OpBranch %35
+         %35 = OpLabel
+               OpStore %i %int_0
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %i
+         %44 = OpLoad %int %a
+         %45 = OpSLessThan %bool %43 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %40
+         %46 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpLoad %int %sum
+         %51 = OpIAdd %int %50 %49
+               OpStore %sum %51
+               OpBranch %41
+         %41 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_2
+         %54 = OpLoad %int %53
+         %55 = OpLoad %int %i
+         %56 = OpIAdd %int %55 %54
+               OpStore %i %56
+               OpBranch %39
+         %40 = OpLabel
+         %57 = OpLoad %int %sum
+         %59 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_3
+         %60 = OpLoad %int %59
+         %61 = OpIEqual %bool %57 %60
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+         %65 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %72 = OpLoad %int %71
+         %73 = OpConvertSToF %float %66
+         %74 = OpConvertSToF %float %68
+         %75 = OpConvertSToF %float %70
+         %76 = OpConvertSToF %float %72
+         %77 = OpCompositeConstruct %v4float %73 %74 %75 %76
+               OpStore %x_GLF_color %77
+               OpBranch %62
+         %64 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %79 = OpLoad %int %78
+         %80 = OpConvertSToF %float %79
+         %81 = OpCompositeConstruct %v4float %80 %80 %80 %80
+               OpStore %x_GLF_color %81
+               OpBranch %62
+         %62 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %82
+%tint_symbol = OpFunctionParameter %main_out
+         %86 = OpLabel
+         %87 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %87
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %89 = OpLabel
+         %90 = OpFunctionCall %void %main_1
+         %92 = OpLoad %v4float %x_GLF_color
+         %93 = OpCompositeConstruct %main_out %92
+         %91 = OpFunctionCall %void %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c8d8ccc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,67 @@
+type Arr = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : i32;
+  var sum : i32;
+  var i : i32;
+  a = 65536;
+  let x_29 : i32 = x_7.x_GLF_uniform_int_values[0];
+  sum = x_29;
+  let x_31 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((1 == x_31)) {
+    let x_35 : i32 = a;
+    a = (x_35 - 1);
+  }
+  i = 0;
+  loop {
+    let x_41 : i32 = i;
+    let x_42 : i32 = a;
+    if ((x_41 < x_42)) {
+    } else {
+      break;
+    }
+    let x_45 : i32 = i;
+    let x_46 : i32 = sum;
+    sum = (x_46 + x_45);
+
+    continuing {
+      let x_49 : i32 = x_7.x_GLF_uniform_int_values[2];
+      let x_50 : i32 = i;
+      i = (x_50 + x_49);
+    }
+  }
+  let x_52 : i32 = sum;
+  let x_54 : i32 = x_7.x_GLF_uniform_int_values[3];
+  if ((x_52 == x_54)) {
+    let x_60 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_63 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_66 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_69 : i32 = x_7.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_60), f32(x_63), f32(x_66), f32(x_69));
+  } else {
+    let x_73 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_74 : f32 = f32(x_73);
+    x_GLF_color = vec4<f32>(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm
new file mode 100644
index 0000000..6ad3bbd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm
@@ -0,0 +1,104 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f "f"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "_GLF_uniform_uint_values"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__1 ""
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 2
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+   %uint_100 = OpConstant %uint 100
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf2 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+          %_ = OpVariable %_ptr_Uniform_buf2 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__1 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %15
+         %34 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+         %35 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 %int_0
+         %36 = OpLoad %uint %35
+         %37 = OpExtInst %uint %1 UMax %uint_100 %36
+         %38 = OpBitcast %float %37
+               OpStore %f %38
+         %39 = OpLoad %float %f
+         %40 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %41 = OpLoad %float %40
+         %42 = OpFOrdEqual %bool %39 %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %47 = OpLoad %int %46
+         %48 = OpConvertSToF %float %47
+         %49 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpConvertSToF %float %53
+         %55 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %56 = OpLoad %int %55
+         %57 = OpConvertSToF %float %56
+         %58 = OpCompositeConstruct %v4float %48 %51 %54 %57
+               OpStore %_GLF_color %58
+               OpBranch %43
+         %45 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpCompositeConstruct %v4float %61 %61 %61 %61
+               OpStore %_GLF_color %62
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d3a37e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,48 @@
+cbuffer cbuffer_x_6 : register(b2, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint x_36 = x_6[scalar_offset / 4][scalar_offset % 4];
+  f = asfloat(max(100u, x_36));
+  const float x_39 = f;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_39 == x_41)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_50 = asint(x_10[1].x);
+    const int x_53 = asint(x_10[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    const int x_60 = asint(x_10[1].x);
+    const float x_61 = float(x_60);
+    x_GLF_color = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..89ab95d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.msl
@@ -0,0 +1,68 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_uint_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf2& x_6, constant buf1& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  uint const x_36 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  f = as_type<float>(max(100u, x_36));
+  float const x_39 = f;
+  float const x_41 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_39 == x_41)) {
+    int const x_47 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_50 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_53 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    int const x_60 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_61 = float(x_60);
+    *(tint_symbol_4) = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf2& x_6 [[buffer(2)]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1b834bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 80
+; Schema: 0
+               OpCapability Shader
+         %38 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_uint_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 2
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf2 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_6 = OpVariable %_ptr_Uniform_buf2 Uniform
+      %float = OpTypeFloat 32
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+   %uint_100 = OpConstant %uint 100
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %24
+         %27 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %30
+         %34 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %35 = OpLoad %uint %34
+         %37 = OpExtInst %uint %38 UMax %uint_100 %35
+         %36 = OpBitcast %float %37
+               OpStore %f %36
+         %40 = OpLoad %float %f
+         %42 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpFOrdEqual %bool %40 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %53 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %51
+         %60 = OpConvertSToF %float %54
+         %61 = OpConvertSToF %float %56
+         %62 = OpConvertSToF %float %58
+         %63 = OpCompositeConstruct %v4float %59 %60 %61 %62
+               OpStore %x_GLF_color %63
+               OpBranch %46
+         %48 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %66 %66 %66 %66
+               OpStore %x_GLF_color %67
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %68
+%tint_symbol = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %75 = OpLabel
+         %76 = OpFunctionCall %void %main_1
+         %78 = OpLoad %v4float %x_GLF_color
+         %79 = OpCompositeConstruct %main_out %78
+         %77 = OpFunctionCall %void %tint_symbol_2 %79
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..0bf1020
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_uint_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_2;
+};
+
+[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var f : f32;
+  let x_36 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  f = bitcast<f32>(max(100u, x_36));
+  let x_39 : f32 = f;
+  let x_41 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_39 == x_41)) {
+    let x_47 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_53 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_47), f32(x_50), f32(x_53), f32(x_56));
+  } else {
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_61 : f32 = f32(x_60);
+    x_GLF_color = vec4<f32>(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
new file mode 100644
index 0000000..0bf1020
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_uint_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_2;
+};
+
+[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var f : f32;
+  let x_36 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  f = bitcast<f32>(max(100u, x_36));
+  let x_39 : f32 = f;
+  let x_41 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_39 == x_41)) {
+    let x_47 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_53 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_47), f32(x_50), f32(x_53), f32(x_56));
+  } else {
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_61 : f32 = f32(x_60);
+    x_GLF_color = vec4<f32>(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d3a37e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,48 @@
+cbuffer cbuffer_x_6 : register(b2, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_8 : register(b1, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[2];
+};
+
+void main_1() {
+  float f = 0.0f;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint x_36 = x_6[scalar_offset / 4][scalar_offset % 4];
+  f = asfloat(max(100u, x_36));
+  const float x_39 = f;
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_41 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_39 == x_41)) {
+    const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+    const int x_47 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    const int x_50 = asint(x_10[1].x);
+    const int x_53 = asint(x_10[1].x);
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    x_GLF_color = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    const int x_60 = asint(x_10[1].x);
+    const float x_61 = float(x_60);
+    x_GLF_color = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..89ab95d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.msl
@@ -0,0 +1,68 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[1];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_uint_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf2& x_6, constant buf1& x_8, constant buf0& x_10, thread float4* const tint_symbol_4) {
+  float f = 0.0f;
+  uint const x_36 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  f = as_type<float>(max(100u, x_36));
+  float const x_39 = f;
+  float const x_41 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  if ((x_39 == x_41)) {
+    int const x_47 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    int const x_50 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_53 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    int const x_56 = x_10.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_47), float(x_50), float(x_53), float(x_56));
+  } else {
+    int const x_60 = x_10.x_GLF_uniform_int_values.arr[1].el;
+    float const x_61 = float(x_60);
+    *(tint_symbol_4) = float4(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf2& x_6 [[buffer(2)]], constant buf1& x_8 [[buffer(1)]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_10, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1b834bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 80
+; Schema: 0
+               OpCapability Shader
+         %38 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_uint_values"
+               OpName %x_6 "x_6"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_10 "x_10"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_uint_uint_1 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 2
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+       %buf2 = OpTypeStruct %_arr_uint_uint_1
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_6 = OpVariable %_ptr_Uniform_buf2 Uniform
+      %float = OpTypeFloat 32
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf1 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %15 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %15
+        %int = OpTypeInt 32 1
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %15
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %30 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+   %uint_100 = OpConstant %uint 100
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %24
+         %27 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %30
+         %34 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %35 = OpLoad %uint %34
+         %37 = OpExtInst %uint %38 UMax %uint_100 %35
+         %36 = OpBitcast %float %37
+               OpStore %f %36
+         %40 = OpLoad %float %f
+         %42 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %43 = OpLoad %float %42
+         %44 = OpFOrdEqual %bool %40 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %51 = OpLoad %int %50
+         %53 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_0
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %51
+         %60 = OpConvertSToF %float %54
+         %61 = OpConvertSToF %float %56
+         %62 = OpConvertSToF %float %58
+         %63 = OpCompositeConstruct %v4float %59 %60 %61 %62
+               OpStore %x_GLF_color %63
+               OpBranch %46
+         %48 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0 %int_1
+         %65 = OpLoad %int %64
+         %66 = OpConvertSToF %float %65
+         %67 = OpCompositeConstruct %v4float %66 %66 %66 %66
+               OpStore %x_GLF_color %67
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %68
+%tint_symbol = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %75 = OpLabel
+         %76 = OpFunctionCall %void %main_1
+         %78 = OpLoad %v4float %x_GLF_color
+         %79 = OpCompositeConstruct %main_out %78
+         %77 = OpFunctionCall %void %tint_symbol_2 %79
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..0bf1020
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,59 @@
+type Arr = [[stride(16)]] array<u32, 1>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_uint_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_2;
+};
+
+[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+fn main_1() {
+  var f : f32;
+  let x_36 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  f = bitcast<f32>(max(100u, x_36));
+  let x_39 : f32 = f;
+  let x_41 : f32 = x_8.x_GLF_uniform_float_values[0];
+  if ((x_39 == x_41)) {
+    let x_47 : i32 = x_10.x_GLF_uniform_int_values[0];
+    let x_50 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_53 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_56 : i32 = x_10.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_47), f32(x_50), f32(x_53), f32(x_56));
+  } else {
+    let x_60 : i32 = x_10.x_GLF_uniform_int_values[1];
+    let x_61 : f32 = f32(x_60);
+    x_GLF_color = vec4<f32>(x_61, x_61, x_61, x_61);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm
new file mode 100644
index 0000000..45abf52
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm
@@ -0,0 +1,305 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %ref "ref"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %data "data"
+               OpName %i_0 "i"
+               OpName %i_1 "i"
+               OpName %i_2 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_16 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_15 = OpConstant %uint 15
+%_arr_int_uint_15 = OpTypeArray %int %uint_15
+%_ptr_Function__arr_int_uint_15 = OpTypePointer Function %_arr_int_uint_15
+    %uint_16 = OpConstant %uint 16
+%_arr_int_uint_16 = OpTypeArray %int %uint_16
+       %buf0 = OpTypeStruct %_arr_int_uint_16
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+     %int_11 = OpConstant %int 11
+      %int_6 = OpConstant %int 6
+     %int_12 = OpConstant %int 12
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_15 = OpConstant %int 15
+       %bool = OpTypeBool
+      %int_7 = OpConstant %int 7
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %44 = OpLabel
+        %ref = OpVariable %_ptr_Function__arr_int_uint_15 Function
+          %i = OpVariable %_ptr_Function_int Function
+       %data = OpVariable %_ptr_Function__arr_int_uint_15 Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+        %i_2 = OpVariable %_ptr_Function_int Function
+         %45 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %48 = OpLoad %int %47
+         %49 = OpAccessChain %_ptr_Function_int %ref %46
+               OpStore %49 %48
+         %50 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Function_int %ref %51
+               OpStore %54 %53
+         %55 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %56 = OpLoad %int %55
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+         %58 = OpLoad %int %57
+         %59 = OpAccessChain %_ptr_Function_int %ref %56
+               OpStore %59 %58
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_3
+         %63 = OpLoad %int %62
+         %64 = OpAccessChain %_ptr_Function_int %ref %61
+               OpStore %64 %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_4
+         %68 = OpLoad %int %67
+         %69 = OpAccessChain %_ptr_Function_int %ref %66
+               OpStore %69 %68
+         %70 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpSNegate %int %73
+         %75 = OpAccessChain %_ptr_Function_int %ref %71
+               OpStore %75 %74
+         %76 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_8
+         %77 = OpLoad %int %76
+         %78 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpSNegate %int %79
+         %81 = OpAccessChain %_ptr_Function_int %ref %77
+               OpStore %81 %80
+         %82 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_9
+         %83 = OpLoad %int %82
+         %84 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %85 = OpLoad %int %84
+         %86 = OpSNegate %int %85
+         %87 = OpAccessChain %_ptr_Function_int %ref %83
+               OpStore %87 %86
+         %88 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_10
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %91 = OpLoad %int %90
+         %92 = OpSNegate %int %91
+         %93 = OpAccessChain %_ptr_Function_int %ref %89
+               OpStore %93 %92
+         %94 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_11
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %97 = OpLoad %int %96
+         %98 = OpSNegate %int %97
+         %99 = OpAccessChain %_ptr_Function_int %ref %95
+               OpStore %99 %98
+        %100 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %103 = OpLoad %int %102
+        %104 = OpSNegate %int %103
+        %105 = OpAccessChain %_ptr_Function_int %ref %101
+               OpStore %105 %104
+        %106 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_12
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpSNegate %int %109
+        %111 = OpAccessChain %_ptr_Function_int %ref %107
+               OpStore %111 %110
+        %112 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_13
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %115 = OpLoad %int %114
+        %116 = OpSNegate %int %115
+        %117 = OpAccessChain %_ptr_Function_int %ref %113
+               OpStore %117 %116
+        %118 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_14
+        %119 = OpLoad %int %118
+        %120 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %121 = OpLoad %int %120
+        %122 = OpSNegate %int %121
+        %123 = OpAccessChain %_ptr_Function_int %ref %119
+               OpStore %123 %122
+        %124 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_15
+        %125 = OpLoad %int %124
+        %126 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_2
+        %127 = OpLoad %int %126
+        %128 = OpSNegate %int %127
+        %129 = OpAccessChain %_ptr_Function_int %ref %125
+               OpStore %129 %128
+               OpStore %i %int_0
+               OpBranch %130
+        %130 = OpLabel
+               OpLoopMerge %131 %132 None
+               OpBranch %133
+        %133 = OpLabel
+        %134 = OpLoad %int %i
+        %135 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+        %136 = OpLoad %int %135
+        %137 = OpSLessThan %bool %134 %136
+               OpBranchConditional %137 %138 %131
+        %138 = OpLabel
+        %139 = OpLoad %int %i
+        %140 = OpLoad %int %i
+        %141 = OpNot %int %140
+        %142 = OpLoad %int %i
+        %143 = OpNot %int %142
+        %144 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %145 = OpLoad %int %144
+        %146 = OpExtInst %int %1 SClamp %141 %143 %145
+        %147 = OpNot %int %146
+        %148 = OpAccessChain %_ptr_Function_int %data %139
+               OpStore %148 %147
+               OpBranch %132
+        %132 = OpLabel
+        %149 = OpLoad %int %i
+        %150 = OpIAdd %int %149 %int_1
+               OpStore %i %150
+               OpBranch %130
+        %131 = OpLabel
+        %151 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_5
+        %152 = OpLoad %int %151
+               OpStore %i_0 %152
+               OpBranch %153
+        %153 = OpLabel
+               OpLoopMerge %154 %155 None
+               OpBranch %156
+        %156 = OpLabel
+        %157 = OpLoad %int %i_0
+        %158 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+        %159 = OpLoad %int %158
+        %160 = OpSLessThan %bool %157 %159
+               OpBranchConditional %160 %161 %154
+        %161 = OpLabel
+        %162 = OpLoad %int %i_0
+        %163 = OpLoad %int %i_0
+        %164 = OpNot %int %163
+        %165 = OpExtInst %int %1 SClamp %164 %int_0 %int_1
+        %166 = OpNot %int %165
+        %167 = OpAccessChain %_ptr_Function_int %data %162
+               OpStore %167 %166
+               OpBranch %155
+        %155 = OpLabel
+        %168 = OpLoad %int %i_0
+        %169 = OpIAdd %int %168 %int_1
+               OpStore %i_0 %169
+               OpBranch %153
+        %154 = OpLabel
+        %170 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_6
+        %171 = OpLoad %int %170
+               OpStore %i_1 %171
+               OpBranch %172
+        %172 = OpLabel
+               OpLoopMerge %173 %174 None
+               OpBranch %175
+        %175 = OpLabel
+        %176 = OpLoad %int %i_1
+        %177 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_7
+        %178 = OpLoad %int %177
+        %179 = OpSLessThan %bool %176 %178
+               OpBranchConditional %179 %180 %173
+        %180 = OpLabel
+        %181 = OpLoad %int %i_1
+        %182 = OpLoad %int %i_1
+        %183 = OpExtInst %int %1 SClamp %182 %int_0 %int_1
+        %184 = OpNot %int %183
+        %185 = OpAccessChain %_ptr_Function_int %data %181
+               OpStore %185 %184
+               OpBranch %174
+        %174 = OpLabel
+        %186 = OpLoad %int %i_1
+        %187 = OpIAdd %int %186 %int_1
+               OpStore %i_1 %187
+               OpBranch %172
+        %173 = OpLabel
+        %188 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %189 = OpLoad %int %188
+               OpStore %i_2 %189
+               OpBranch %190
+        %190 = OpLabel
+               OpLoopMerge %191 %192 None
+               OpBranch %193
+        %193 = OpLabel
+        %194 = OpLoad %int %i_2
+        %195 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_7
+        %196 = OpLoad %int %195
+        %197 = OpSLessThan %bool %194 %196
+               OpBranchConditional %197 %198 %191
+        %198 = OpLabel
+        %199 = OpLoad %int %i_2
+        %200 = OpAccessChain %_ptr_Function_int %data %199
+        %201 = OpLoad %int %200
+        %202 = OpLoad %int %i_2
+        %203 = OpAccessChain %_ptr_Function_int %ref %202
+        %204 = OpLoad %int %203
+        %205 = OpINotEqual %bool %201 %204
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %206
+        %207 = OpLabel
+        %208 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %209 = OpLoad %int %208
+        %210 = OpConvertSToF %float %209
+        %211 = OpCompositeConstruct %v4float %210 %210 %210 %210
+               OpStore %_GLF_color %211
+               OpReturn
+        %206 = OpLabel
+               OpBranch %192
+        %192 = OpLabel
+        %212 = OpLoad %int %i_2
+        %213 = OpIAdd %int %212 %int_1
+               OpStore %i_2 %213
+               OpBranch %190
+        %191 = OpLabel
+        %214 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %215 = OpLoad %int %214
+        %216 = OpConvertSToF %float %215
+        %217 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %218 = OpLoad %int %217
+        %219 = OpConvertSToF %float %218
+        %220 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+        %221 = OpLoad %int %220
+        %222 = OpConvertSToF %float %221
+        %223 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+        %224 = OpLoad %int %223
+        %225 = OpConvertSToF %float %224
+        %226 = OpCompositeConstruct %v4float %216 %219 %222 %225
+               OpStore %_GLF_color %226
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..8b5cb07
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,150 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[16];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int ref[15] = (int[15])0;
+  int i = 0;
+  int data[15] = (int[15])0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int i_3 = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_46 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_48 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  ref[x_46] = x_48;
+  const int x_51 = asint(x_6[1].x);
+  const int x_53 = asint(x_6[1].x);
+  ref[x_51] = x_53;
+  const int x_56 = asint(x_6[2].x);
+  const int x_58 = asint(x_6[2].x);
+  ref[x_56] = x_58;
+  const int x_61 = asint(x_6[3].x);
+  const int x_63 = asint(x_6[3].x);
+  ref[x_61] = x_63;
+  const int x_66 = asint(x_6[4].x);
+  const int x_68 = asint(x_6[4].x);
+  ref[x_66] = x_68;
+  const int x_71 = asint(x_6[5].x);
+  const int x_73 = asint(x_6[1].x);
+  ref[x_71] = -(x_73);
+  const int x_77 = asint(x_6[8].x);
+  const int x_79 = asint(x_6[1].x);
+  ref[x_77] = -(x_79);
+  const int x_83 = asint(x_6[9].x);
+  const int x_85 = asint(x_6[1].x);
+  ref[x_83] = -(x_85);
+  const int x_89 = asint(x_6[10].x);
+  const int x_91 = asint(x_6[1].x);
+  ref[x_89] = -(x_91);
+  const int x_95 = asint(x_6[11].x);
+  const int x_97 = asint(x_6[1].x);
+  ref[x_95] = -(x_97);
+  const int x_101 = asint(x_6[6].x);
+  const int x_103 = asint(x_6[2].x);
+  ref[x_101] = -(x_103);
+  const int x_107 = asint(x_6[12].x);
+  const int x_109 = asint(x_6[2].x);
+  ref[x_107] = -(x_109);
+  const int x_113 = asint(x_6[13].x);
+  const int x_115 = asint(x_6[2].x);
+  ref[x_113] = -(x_115);
+  const int x_119 = asint(x_6[14].x);
+  const int x_121 = asint(x_6[2].x);
+  ref[x_119] = -(x_121);
+  const int x_125 = asint(x_6[15].x);
+  const int x_127 = asint(x_6[2].x);
+  ref[x_125] = -(x_127);
+  i = 0;
+  while (true) {
+    const int x_134 = i;
+    const int x_136 = asint(x_6[5].x);
+    if ((x_134 < x_136)) {
+    } else {
+      break;
+    }
+    const int x_139 = i;
+    const int x_140 = i;
+    const int x_142 = i;
+    const int x_145 = asint(x_6[1].x);
+    data[x_139] = ~(clamp(~(x_140), ~(x_142), x_145));
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_152 = asint(x_6[5].x);
+  i_1 = x_152;
+  while (true) {
+    const int x_157 = i_1;
+    const int x_159 = asint(x_6[6].x);
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    data[i_1] = ~(clamp(~(i_1), 0, 1));
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const int x_171 = asint(x_6[6].x);
+  i_2 = x_171;
+  while (true) {
+    const int x_176 = i_2;
+    const int x_178 = asint(x_6[7].x);
+    if ((x_176 < x_178)) {
+    } else {
+      break;
+    }
+    data[i_2] = ~(clamp(i_2, 0, 1));
+    {
+      i_2 = (i_2 + 1);
+    }
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_189 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  i_3 = x_189;
+  while (true) {
+    const int x_194 = i_3;
+    const int x_196 = asint(x_6[7].x);
+    if ((x_194 < x_196)) {
+    } else {
+      break;
+    }
+    const int x_201 = data[i_3];
+    const int x_204 = ref[i_3];
+    if ((x_201 != x_204)) {
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const int x_209 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      const float x_210 = float(x_209);
+      x_GLF_color = float4(x_210, x_210, x_210, x_210);
+      return;
+    }
+    {
+      i_3 = (i_3 + 1);
+    }
+  }
+  const int x_215 = asint(x_6[1].x);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_218 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const int x_221 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const int x_224 = asint(x_6[1].x);
+  x_GLF_color = float4(float(x_215), float(x_218), float(x_221), float(x_224));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..cceaae5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,167 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[16];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[15];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_1 ref = {};
+  int i = 0;
+  tint_array_wrapper_1 data = {};
+  int i_1 = 0;
+  int i_2 = 0;
+  int i_3 = 0;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  ref.arr[x_46] = x_48;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_51] = x_53;
+  int const x_56 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_58 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_56] = x_58;
+  int const x_61 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_63 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  ref.arr[x_61] = x_63;
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_68 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  ref.arr[x_66] = x_68;
+  int const x_71 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_73 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_71] = -(x_73);
+  int const x_77 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_79 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_77] = -(x_79);
+  int const x_83 = x_6.x_GLF_uniform_int_values.arr[9].el;
+  int const x_85 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_83] = -(x_85);
+  int const x_89 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  int const x_91 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_89] = -(x_91);
+  int const x_95 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_97 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_95] = -(x_97);
+  int const x_101 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_103 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_101] = -(x_103);
+  int const x_107 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_109 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_107] = -(x_109);
+  int const x_113 = x_6.x_GLF_uniform_int_values.arr[13].el;
+  int const x_115 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_113] = -(x_115);
+  int const x_119 = x_6.x_GLF_uniform_int_values.arr[14].el;
+  int const x_121 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_119] = -(x_121);
+  int const x_125 = x_6.x_GLF_uniform_int_values.arr[15].el;
+  int const x_127 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_125] = -(x_127);
+  i = 0;
+  while (true) {
+    int const x_134 = i;
+    int const x_136 = x_6.x_GLF_uniform_int_values.arr[5].el;
+    if ((x_134 < x_136)) {
+    } else {
+      break;
+    }
+    int const x_139 = i;
+    int const x_140 = i;
+    int const x_142 = i;
+    int const x_145 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    data.arr[x_139] = ~(clamp(~(x_140), ~(x_142), x_145));
+    {
+      int const x_149 = i;
+      i = (x_149 + 1);
+    }
+  }
+  int const x_152 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  i_1 = x_152;
+  while (true) {
+    int const x_157 = i_1;
+    int const x_159 = x_6.x_GLF_uniform_int_values.arr[6].el;
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    int const x_162 = i_1;
+    int const x_163 = i_1;
+    data.arr[x_162] = ~(clamp(~(x_163), 0, 1));
+    {
+      int const x_168 = i_1;
+      i_1 = (x_168 + 1);
+    }
+  }
+  int const x_171 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  i_2 = x_171;
+  while (true) {
+    int const x_176 = i_2;
+    int const x_178 = x_6.x_GLF_uniform_int_values.arr[7].el;
+    if ((x_176 < x_178)) {
+    } else {
+      break;
+    }
+    int const x_181 = i_2;
+    int const x_182 = i_2;
+    data.arr[x_181] = ~(clamp(x_182, 0, 1));
+    {
+      int const x_186 = i_2;
+      i_2 = (x_186 + 1);
+    }
+  }
+  int const x_189 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i_3 = x_189;
+  while (true) {
+    int const x_194 = i_3;
+    int const x_196 = x_6.x_GLF_uniform_int_values.arr[7].el;
+    if ((x_194 < x_196)) {
+    } else {
+      break;
+    }
+    int const x_199 = i_3;
+    int const x_201 = data.arr[x_199];
+    int const x_202 = i_3;
+    int const x_204 = ref.arr[x_202];
+    if ((x_201 != x_204)) {
+      int const x_209 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      float const x_210 = float(x_209);
+      *(tint_symbol_4) = float4(x_210, x_210, x_210, x_210);
+      return;
+    }
+    {
+      int const x_212 = i_3;
+      i_3 = (x_212 + 1);
+    }
+  }
+  int const x_215 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_218 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_221 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_224 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  *(tint_symbol_4) = float4(float(x_215), float(x_218), float(x_221), float(x_224));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0879b72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,361 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 253
+; Schema: 0
+               OpCapability Shader
+        %153 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %ref "ref"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %i_3 "i_3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_16 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_15 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_int_uint_16 = OpTypeArray %int %uint_16
+       %buf0 = OpTypeStruct %_arr_int_uint_16
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %uint_15 = OpConstant %uint 15
+%_arr_int_uint_15 = OpTypeArray %int %uint_15
+%_ptr_Function__arr_int_uint_15 = OpTypePointer Function %_arr_int_uint_15
+         %23 = OpConstantNull %_arr_int_uint_15
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+     %int_11 = OpConstant %int 11
+      %int_6 = OpConstant %int 6
+     %int_12 = OpConstant %int 12
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_15 = OpConstant %int 15
+       %bool = OpTypeBool
+      %int_7 = OpConstant %int 7
+   %main_out = OpTypeStruct %v4float
+        %241 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+        %ref = OpVariable %_ptr_Function__arr_int_uint_15 Function %23
+          %i = OpVariable %_ptr_Function_int Function %26
+       %data = OpVariable %_ptr_Function__arr_int_uint_15 Function %23
+        %i_1 = OpVariable %_ptr_Function_int Function %26
+        %i_2 = OpVariable %_ptr_Function_int Function %26
+        %i_3 = OpVariable %_ptr_Function_int Function %26
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Function_int %ref %35
+               OpStore %38 %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Function_int %ref %41
+               OpStore %44 %43
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Function_int %ref %47
+               OpStore %50 %49
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_int %ref %53
+               OpStore %56 %55
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Function_int %ref %59
+               OpStore %62 %61
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Function_int %ref %65
+         %69 = OpSNegate %int %67
+               OpStore %68 %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Function_int %ref %72
+         %76 = OpSNegate %int %74
+               OpStore %75 %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Function_int %ref %79
+         %83 = OpSNegate %int %81
+               OpStore %82 %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Function_int %ref %86
+         %90 = OpSNegate %int %88
+               OpStore %89 %90
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+         %93 = OpLoad %int %92
+         %94 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Function_int %ref %93
+         %97 = OpSNegate %int %95
+               OpStore %96 %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %102 = OpLoad %int %101
+        %103 = OpAccessChain %_ptr_Function_int %ref %100
+        %104 = OpSNegate %int %102
+               OpStore %103 %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Function_int %ref %107
+        %111 = OpSNegate %int %109
+               OpStore %110 %111
+        %113 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_13
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %116 = OpLoad %int %115
+        %117 = OpAccessChain %_ptr_Function_int %ref %114
+        %118 = OpSNegate %int %116
+               OpStore %117 %118
+        %120 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_14
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %123 = OpLoad %int %122
+        %124 = OpAccessChain %_ptr_Function_int %ref %121
+        %125 = OpSNegate %int %123
+               OpStore %124 %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_15
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %130 = OpLoad %int %129
+        %131 = OpAccessChain %_ptr_Function_int %ref %128
+        %132 = OpSNegate %int %130
+               OpStore %131 %132
+               OpStore %i %int_0
+               OpBranch %133
+        %133 = OpLabel
+               OpLoopMerge %134 %135 None
+               OpBranch %136
+        %136 = OpLabel
+        %137 = OpLoad %int %i
+        %138 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %139 = OpLoad %int %138
+        %140 = OpSLessThan %bool %137 %139
+               OpSelectionMerge %142 None
+               OpBranchConditional %140 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %134
+        %142 = OpLabel
+        %145 = OpLoad %int %i
+        %146 = OpLoad %int %i
+        %147 = OpLoad %int %i
+        %148 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %149 = OpLoad %int %148
+        %150 = OpAccessChain %_ptr_Function_int %data %145
+        %154 = OpNot %int %146
+        %155 = OpNot %int %147
+        %152 = OpExtInst %int %153 SClamp %154 %155 %149
+        %151 = OpNot %int %152
+               OpStore %150 %151
+               OpBranch %135
+        %135 = OpLabel
+        %156 = OpLoad %int %i
+        %157 = OpIAdd %int %156 %int_1
+               OpStore %i %157
+               OpBranch %133
+        %134 = OpLabel
+        %158 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %159 = OpLoad %int %158
+               OpStore %i_1 %159
+               OpBranch %160
+        %160 = OpLabel
+               OpLoopMerge %161 %162 None
+               OpBranch %163
+        %163 = OpLabel
+        %164 = OpLoad %int %i_1
+        %165 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %164 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %161
+        %168 = OpLabel
+        %171 = OpLoad %int %i_1
+        %172 = OpLoad %int %i_1
+        %173 = OpAccessChain %_ptr_Function_int %data %171
+        %176 = OpNot %int %172
+        %175 = OpExtInst %int %153 SClamp %176 %int_0 %int_1
+        %174 = OpNot %int %175
+               OpStore %173 %174
+               OpBranch %162
+        %162 = OpLabel
+        %177 = OpLoad %int %i_1
+        %178 = OpIAdd %int %177 %int_1
+               OpStore %i_1 %178
+               OpBranch %160
+        %161 = OpLabel
+        %179 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %180 = OpLoad %int %179
+               OpStore %i_2 %180
+               OpBranch %181
+        %181 = OpLabel
+               OpLoopMerge %182 %183 None
+               OpBranch %184
+        %184 = OpLabel
+        %185 = OpLoad %int %i_2
+        %187 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+        %188 = OpLoad %int %187
+        %189 = OpSLessThan %bool %185 %188
+               OpSelectionMerge %190 None
+               OpBranchConditional %189 %191 %192
+        %191 = OpLabel
+               OpBranch %190
+        %192 = OpLabel
+               OpBranch %182
+        %190 = OpLabel
+        %193 = OpLoad %int %i_2
+        %194 = OpLoad %int %i_2
+        %195 = OpAccessChain %_ptr_Function_int %data %193
+        %197 = OpExtInst %int %153 SClamp %194 %int_0 %int_1
+        %196 = OpNot %int %197
+               OpStore %195 %196
+               OpBranch %183
+        %183 = OpLabel
+        %198 = OpLoad %int %i_2
+        %199 = OpIAdd %int %198 %int_1
+               OpStore %i_2 %199
+               OpBranch %181
+        %182 = OpLabel
+        %200 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %201 = OpLoad %int %200
+               OpStore %i_3 %201
+               OpBranch %202
+        %202 = OpLabel
+               OpLoopMerge %203 %204 None
+               OpBranch %205
+        %205 = OpLabel
+        %206 = OpLoad %int %i_3
+        %207 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+        %208 = OpLoad %int %207
+        %209 = OpSLessThan %bool %206 %208
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %212
+        %211 = OpLabel
+               OpBranch %210
+        %212 = OpLabel
+               OpBranch %203
+        %210 = OpLabel
+        %213 = OpLoad %int %i_3
+        %214 = OpAccessChain %_ptr_Function_int %data %213
+        %215 = OpLoad %int %214
+        %216 = OpLoad %int %i_3
+        %217 = OpAccessChain %_ptr_Function_int %ref %216
+        %218 = OpLoad %int %217
+        %219 = OpINotEqual %bool %215 %218
+               OpSelectionMerge %220 None
+               OpBranchConditional %219 %221 %220
+        %221 = OpLabel
+        %222 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %223 = OpLoad %int %222
+        %224 = OpConvertSToF %float %223
+        %225 = OpCompositeConstruct %v4float %224 %224 %224 %224
+               OpStore %x_GLF_color %225
+               OpReturn
+        %220 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+        %226 = OpLoad %int %i_3
+        %227 = OpIAdd %int %226 %int_1
+               OpStore %i_3 %227
+               OpBranch %202
+        %203 = OpLabel
+        %228 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %229 = OpLoad %int %228
+        %230 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %231 = OpLoad %int %230
+        %232 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %233 = OpLoad %int %232
+        %234 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %235 = OpLoad %int %234
+        %236 = OpConvertSToF %float %229
+        %237 = OpConvertSToF %float %231
+        %238 = OpConvertSToF %float %233
+        %239 = OpConvertSToF %float %235
+        %240 = OpCompositeConstruct %v4float %236 %237 %238 %239
+               OpStore %x_GLF_color %240
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %241
+%tint_symbol = OpFunctionParameter %main_out
+        %245 = OpLabel
+        %246 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %246
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %248 = OpLabel
+        %249 = OpFunctionCall %void %main_1
+        %251 = OpLoad %v4float %x_GLF_color
+        %252 = OpCompositeConstruct %main_out %251
+        %250 = OpFunctionCall %void %tint_symbol_2 %252
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2dc09e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,161 @@
+type Arr = [[stride(16)]] array<i32, 16>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var ref : array<i32, 15>;
+  var i : i32;
+  var data : array<i32, 15>;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+  ref[x_46] = x_48;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_51] = x_53;
+  let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_56] = x_58;
+  let x_61 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[3];
+  ref[x_61] = x_63;
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_68 : i32 = x_6.x_GLF_uniform_int_values[4];
+  ref[x_66] = x_68;
+  let x_71 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_71] = -(x_73);
+  let x_77 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_79 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_77] = -(x_79);
+  let x_83 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_85 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_83] = -(x_85);
+  let x_89 : i32 = x_6.x_GLF_uniform_int_values[10];
+  let x_91 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_89] = -(x_91);
+  let x_95 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_97 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_95] = -(x_97);
+  let x_101 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_103 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_101] = -(x_103);
+  let x_107 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_109 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_107] = -(x_109);
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_115 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_113] = -(x_115);
+  let x_119 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_121 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_119] = -(x_121);
+  let x_125 : i32 = x_6.x_GLF_uniform_int_values[15];
+  let x_127 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_125] = -(x_127);
+  i = 0;
+  loop {
+    let x_134 : i32 = i;
+    let x_136 : i32 = x_6.x_GLF_uniform_int_values[5];
+    if ((x_134 < x_136)) {
+    } else {
+      break;
+    }
+    let x_139 : i32 = i;
+    let x_140 : i32 = i;
+    let x_142 : i32 = i;
+    let x_145 : i32 = x_6.x_GLF_uniform_int_values[1];
+    data[x_139] = ~(clamp(~(x_140), ~(x_142), x_145));
+
+    continuing {
+      let x_149 : i32 = i;
+      i = (x_149 + 1);
+    }
+  }
+  let x_152 : i32 = x_6.x_GLF_uniform_int_values[5];
+  i_1 = x_152;
+  loop {
+    let x_157 : i32 = i_1;
+    let x_159 : i32 = x_6.x_GLF_uniform_int_values[6];
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    let x_162 : i32 = i_1;
+    let x_163 : i32 = i_1;
+    data[x_162] = ~(clamp(~(x_163), 0, 1));
+
+    continuing {
+      let x_168 : i32 = i_1;
+      i_1 = (x_168 + 1);
+    }
+  }
+  let x_171 : i32 = x_6.x_GLF_uniform_int_values[6];
+  i_2 = x_171;
+  loop {
+    let x_176 : i32 = i_2;
+    let x_178 : i32 = x_6.x_GLF_uniform_int_values[7];
+    if ((x_176 < x_178)) {
+    } else {
+      break;
+    }
+    let x_181 : i32 = i_2;
+    let x_182 : i32 = i_2;
+    data[x_181] = ~(clamp(x_182, 0, 1));
+
+    continuing {
+      let x_186 : i32 = i_2;
+      i_2 = (x_186 + 1);
+    }
+  }
+  let x_189 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i_3 = x_189;
+  loop {
+    let x_194 : i32 = i_3;
+    let x_196 : i32 = x_6.x_GLF_uniform_int_values[7];
+    if ((x_194 < x_196)) {
+    } else {
+      break;
+    }
+    let x_199 : i32 = i_3;
+    let x_201 : i32 = data[x_199];
+    let x_202 : i32 = i_3;
+    let x_204 : i32 = ref[x_202];
+    if ((x_201 != x_204)) {
+      let x_209 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_210 : f32 = f32(x_209);
+      x_GLF_color = vec4<f32>(x_210, x_210, x_210, x_210);
+      return;
+    }
+
+    continuing {
+      let x_212 : i32 = i_3;
+      i_3 = (x_212 + 1);
+    }
+  }
+  let x_215 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_218 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_221 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_224 : i32 = x_6.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_215), f32(x_218), f32(x_221), f32(x_224));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
new file mode 100644
index 0000000..2dc09e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
@@ -0,0 +1,161 @@
+type Arr = [[stride(16)]] array<i32, 16>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var ref : array<i32, 15>;
+  var i : i32;
+  var data : array<i32, 15>;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+  ref[x_46] = x_48;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_51] = x_53;
+  let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_56] = x_58;
+  let x_61 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[3];
+  ref[x_61] = x_63;
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_68 : i32 = x_6.x_GLF_uniform_int_values[4];
+  ref[x_66] = x_68;
+  let x_71 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_71] = -(x_73);
+  let x_77 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_79 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_77] = -(x_79);
+  let x_83 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_85 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_83] = -(x_85);
+  let x_89 : i32 = x_6.x_GLF_uniform_int_values[10];
+  let x_91 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_89] = -(x_91);
+  let x_95 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_97 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_95] = -(x_97);
+  let x_101 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_103 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_101] = -(x_103);
+  let x_107 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_109 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_107] = -(x_109);
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_115 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_113] = -(x_115);
+  let x_119 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_121 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_119] = -(x_121);
+  let x_125 : i32 = x_6.x_GLF_uniform_int_values[15];
+  let x_127 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_125] = -(x_127);
+  i = 0;
+  loop {
+    let x_134 : i32 = i;
+    let x_136 : i32 = x_6.x_GLF_uniform_int_values[5];
+    if ((x_134 < x_136)) {
+    } else {
+      break;
+    }
+    let x_139 : i32 = i;
+    let x_140 : i32 = i;
+    let x_142 : i32 = i;
+    let x_145 : i32 = x_6.x_GLF_uniform_int_values[1];
+    data[x_139] = ~(clamp(~(x_140), ~(x_142), x_145));
+
+    continuing {
+      let x_149 : i32 = i;
+      i = (x_149 + 1);
+    }
+  }
+  let x_152 : i32 = x_6.x_GLF_uniform_int_values[5];
+  i_1 = x_152;
+  loop {
+    let x_157 : i32 = i_1;
+    let x_159 : i32 = x_6.x_GLF_uniform_int_values[6];
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    let x_162 : i32 = i_1;
+    let x_163 : i32 = i_1;
+    data[x_162] = ~(clamp(~(x_163), 0, 1));
+
+    continuing {
+      let x_168 : i32 = i_1;
+      i_1 = (x_168 + 1);
+    }
+  }
+  let x_171 : i32 = x_6.x_GLF_uniform_int_values[6];
+  i_2 = x_171;
+  loop {
+    let x_176 : i32 = i_2;
+    let x_178 : i32 = x_6.x_GLF_uniform_int_values[7];
+    if ((x_176 < x_178)) {
+    } else {
+      break;
+    }
+    let x_181 : i32 = i_2;
+    let x_182 : i32 = i_2;
+    data[x_181] = ~(clamp(x_182, 0, 1));
+
+    continuing {
+      let x_186 : i32 = i_2;
+      i_2 = (x_186 + 1);
+    }
+  }
+  let x_189 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i_3 = x_189;
+  loop {
+    let x_194 : i32 = i_3;
+    let x_196 : i32 = x_6.x_GLF_uniform_int_values[7];
+    if ((x_194 < x_196)) {
+    } else {
+      break;
+    }
+    let x_199 : i32 = i_3;
+    let x_201 : i32 = data[x_199];
+    let x_202 : i32 = i_3;
+    let x_204 : i32 = ref[x_202];
+    if ((x_201 != x_204)) {
+      let x_209 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_210 : f32 = f32(x_209);
+      x_GLF_color = vec4<f32>(x_210, x_210, x_210, x_210);
+      return;
+    }
+
+    continuing {
+      let x_212 : i32 = i_3;
+      i_3 = (x_212 + 1);
+    }
+  }
+  let x_215 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_218 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_221 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_224 : i32 = x_6.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_215), f32(x_218), f32(x_221), f32(x_224));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..8b5cb07
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,150 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[16];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int ref[15] = (int[15])0;
+  int i = 0;
+  int data[15] = (int[15])0;
+  int i_1 = 0;
+  int i_2 = 0;
+  int i_3 = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_46 = asint(x_6[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_48 = asint(x_6[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  ref[x_46] = x_48;
+  const int x_51 = asint(x_6[1].x);
+  const int x_53 = asint(x_6[1].x);
+  ref[x_51] = x_53;
+  const int x_56 = asint(x_6[2].x);
+  const int x_58 = asint(x_6[2].x);
+  ref[x_56] = x_58;
+  const int x_61 = asint(x_6[3].x);
+  const int x_63 = asint(x_6[3].x);
+  ref[x_61] = x_63;
+  const int x_66 = asint(x_6[4].x);
+  const int x_68 = asint(x_6[4].x);
+  ref[x_66] = x_68;
+  const int x_71 = asint(x_6[5].x);
+  const int x_73 = asint(x_6[1].x);
+  ref[x_71] = -(x_73);
+  const int x_77 = asint(x_6[8].x);
+  const int x_79 = asint(x_6[1].x);
+  ref[x_77] = -(x_79);
+  const int x_83 = asint(x_6[9].x);
+  const int x_85 = asint(x_6[1].x);
+  ref[x_83] = -(x_85);
+  const int x_89 = asint(x_6[10].x);
+  const int x_91 = asint(x_6[1].x);
+  ref[x_89] = -(x_91);
+  const int x_95 = asint(x_6[11].x);
+  const int x_97 = asint(x_6[1].x);
+  ref[x_95] = -(x_97);
+  const int x_101 = asint(x_6[6].x);
+  const int x_103 = asint(x_6[2].x);
+  ref[x_101] = -(x_103);
+  const int x_107 = asint(x_6[12].x);
+  const int x_109 = asint(x_6[2].x);
+  ref[x_107] = -(x_109);
+  const int x_113 = asint(x_6[13].x);
+  const int x_115 = asint(x_6[2].x);
+  ref[x_113] = -(x_115);
+  const int x_119 = asint(x_6[14].x);
+  const int x_121 = asint(x_6[2].x);
+  ref[x_119] = -(x_121);
+  const int x_125 = asint(x_6[15].x);
+  const int x_127 = asint(x_6[2].x);
+  ref[x_125] = -(x_127);
+  i = 0;
+  while (true) {
+    const int x_134 = i;
+    const int x_136 = asint(x_6[5].x);
+    if ((x_134 < x_136)) {
+    } else {
+      break;
+    }
+    const int x_139 = i;
+    const int x_140 = i;
+    const int x_142 = i;
+    const int x_145 = asint(x_6[1].x);
+    data[x_139] = ~(clamp(~(x_140), ~(x_142), x_145));
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_152 = asint(x_6[5].x);
+  i_1 = x_152;
+  while (true) {
+    const int x_157 = i_1;
+    const int x_159 = asint(x_6[6].x);
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    data[i_1] = ~(clamp(~(i_1), 0, 1));
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  const int x_171 = asint(x_6[6].x);
+  i_2 = x_171;
+  while (true) {
+    const int x_176 = i_2;
+    const int x_178 = asint(x_6[7].x);
+    if ((x_176 < x_178)) {
+    } else {
+      break;
+    }
+    data[i_2] = ~(clamp(i_2, 0, 1));
+    {
+      i_2 = (i_2 + 1);
+    }
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_189 = asint(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  i_3 = x_189;
+  while (true) {
+    const int x_194 = i_3;
+    const int x_196 = asint(x_6[7].x);
+    if ((x_194 < x_196)) {
+    } else {
+      break;
+    }
+    const int x_201 = data[i_3];
+    const int x_204 = ref[i_3];
+    if ((x_201 != x_204)) {
+      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const int x_209 = asint(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+      const float x_210 = float(x_209);
+      x_GLF_color = float4(x_210, x_210, x_210, x_210);
+      return;
+    }
+    {
+      i_3 = (i_3 + 1);
+    }
+  }
+  const int x_215 = asint(x_6[1].x);
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const int x_218 = asint(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const int x_221 = asint(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+  const int x_224 = asint(x_6[1].x);
+  x_GLF_color = float4(float(x_215), float(x_218), float(x_221), float(x_224));
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..cceaae5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,167 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[16];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  int arr[15];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_1 ref = {};
+  int i = 0;
+  tint_array_wrapper_1 data = {};
+  int i_1 = 0;
+  int i_2 = 0;
+  int i_3 = 0;
+  int const x_46 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_48 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  ref.arr[x_46] = x_48;
+  int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_53 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_51] = x_53;
+  int const x_56 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  int const x_58 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_56] = x_58;
+  int const x_61 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  int const x_63 = x_6.x_GLF_uniform_int_values.arr[3].el;
+  ref.arr[x_61] = x_63;
+  int const x_66 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  int const x_68 = x_6.x_GLF_uniform_int_values.arr[4].el;
+  ref.arr[x_66] = x_68;
+  int const x_71 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  int const x_73 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_71] = -(x_73);
+  int const x_77 = x_6.x_GLF_uniform_int_values.arr[8].el;
+  int const x_79 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_77] = -(x_79);
+  int const x_83 = x_6.x_GLF_uniform_int_values.arr[9].el;
+  int const x_85 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_83] = -(x_85);
+  int const x_89 = x_6.x_GLF_uniform_int_values.arr[10].el;
+  int const x_91 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_89] = -(x_91);
+  int const x_95 = x_6.x_GLF_uniform_int_values.arr[11].el;
+  int const x_97 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  ref.arr[x_95] = -(x_97);
+  int const x_101 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  int const x_103 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_101] = -(x_103);
+  int const x_107 = x_6.x_GLF_uniform_int_values.arr[12].el;
+  int const x_109 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_107] = -(x_109);
+  int const x_113 = x_6.x_GLF_uniform_int_values.arr[13].el;
+  int const x_115 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_113] = -(x_115);
+  int const x_119 = x_6.x_GLF_uniform_int_values.arr[14].el;
+  int const x_121 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_119] = -(x_121);
+  int const x_125 = x_6.x_GLF_uniform_int_values.arr[15].el;
+  int const x_127 = x_6.x_GLF_uniform_int_values.arr[2].el;
+  ref.arr[x_125] = -(x_127);
+  i = 0;
+  while (true) {
+    int const x_134 = i;
+    int const x_136 = x_6.x_GLF_uniform_int_values.arr[5].el;
+    if ((x_134 < x_136)) {
+    } else {
+      break;
+    }
+    int const x_139 = i;
+    int const x_140 = i;
+    int const x_142 = i;
+    int const x_145 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    data.arr[x_139] = ~(clamp(~(x_140), ~(x_142), x_145));
+    {
+      int const x_149 = i;
+      i = (x_149 + 1);
+    }
+  }
+  int const x_152 = x_6.x_GLF_uniform_int_values.arr[5].el;
+  i_1 = x_152;
+  while (true) {
+    int const x_157 = i_1;
+    int const x_159 = x_6.x_GLF_uniform_int_values.arr[6].el;
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    int const x_162 = i_1;
+    int const x_163 = i_1;
+    data.arr[x_162] = ~(clamp(~(x_163), 0, 1));
+    {
+      int const x_168 = i_1;
+      i_1 = (x_168 + 1);
+    }
+  }
+  int const x_171 = x_6.x_GLF_uniform_int_values.arr[6].el;
+  i_2 = x_171;
+  while (true) {
+    int const x_176 = i_2;
+    int const x_178 = x_6.x_GLF_uniform_int_values.arr[7].el;
+    if ((x_176 < x_178)) {
+    } else {
+      break;
+    }
+    int const x_181 = i_2;
+    int const x_182 = i_2;
+    data.arr[x_181] = ~(clamp(x_182, 0, 1));
+    {
+      int const x_186 = i_2;
+      i_2 = (x_186 + 1);
+    }
+  }
+  int const x_189 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  i_3 = x_189;
+  while (true) {
+    int const x_194 = i_3;
+    int const x_196 = x_6.x_GLF_uniform_int_values.arr[7].el;
+    if ((x_194 < x_196)) {
+    } else {
+      break;
+    }
+    int const x_199 = i_3;
+    int const x_201 = data.arr[x_199];
+    int const x_202 = i_3;
+    int const x_204 = ref.arr[x_202];
+    if ((x_201 != x_204)) {
+      int const x_209 = x_6.x_GLF_uniform_int_values.arr[0].el;
+      float const x_210 = float(x_209);
+      *(tint_symbol_4) = float4(x_210, x_210, x_210, x_210);
+      return;
+    }
+    {
+      int const x_212 = i_3;
+      i_3 = (x_212 + 1);
+    }
+  }
+  int const x_215 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  int const x_218 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_221 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  int const x_224 = x_6.x_GLF_uniform_int_values.arr[1].el;
+  *(tint_symbol_4) = float4(float(x_215), float(x_218), float(x_221), float(x_224));
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0879b72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,361 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 253
+; Schema: 0
+               OpCapability Shader
+        %153 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %ref "ref"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %i_3 "i_3"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_16 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_15 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_int_uint_16 = OpTypeArray %int %uint_16
+       %buf0 = OpTypeStruct %_arr_int_uint_16
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %uint_15 = OpConstant %uint 15
+%_arr_int_uint_15 = OpTypeArray %int %uint_15
+%_ptr_Function__arr_int_uint_15 = OpTypePointer Function %_arr_int_uint_15
+         %23 = OpConstantNull %_arr_int_uint_15
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_8 = OpConstant %int 8
+      %int_9 = OpConstant %int 9
+     %int_10 = OpConstant %int 10
+     %int_11 = OpConstant %int 11
+      %int_6 = OpConstant %int 6
+     %int_12 = OpConstant %int 12
+     %int_13 = OpConstant %int 13
+     %int_14 = OpConstant %int 14
+     %int_15 = OpConstant %int 15
+       %bool = OpTypeBool
+      %int_7 = OpConstant %int 7
+   %main_out = OpTypeStruct %v4float
+        %241 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+        %ref = OpVariable %_ptr_Function__arr_int_uint_15 Function %23
+          %i = OpVariable %_ptr_Function_int Function %26
+       %data = OpVariable %_ptr_Function__arr_int_uint_15 Function %23
+        %i_1 = OpVariable %_ptr_Function_int Function %26
+        %i_2 = OpVariable %_ptr_Function_int Function %26
+        %i_3 = OpVariable %_ptr_Function_int Function %26
+         %34 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %37 = OpLoad %int %36
+         %38 = OpAccessChain %_ptr_Function_int %ref %35
+               OpStore %38 %37
+         %40 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Function_int %ref %41
+               OpStore %44 %43
+         %46 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %47 = OpLoad %int %46
+         %48 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Function_int %ref %47
+               OpStore %50 %49
+         %52 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %53 = OpLoad %int %52
+         %54 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_3
+         %55 = OpLoad %int %54
+         %56 = OpAccessChain %_ptr_Function_int %ref %53
+               OpStore %56 %55
+         %58 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %59 = OpLoad %int %58
+         %60 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_4
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Function_int %ref %59
+               OpStore %62 %61
+         %64 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+         %65 = OpLoad %int %64
+         %66 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %67 = OpLoad %int %66
+         %68 = OpAccessChain %_ptr_Function_int %ref %65
+         %69 = OpSNegate %int %67
+               OpStore %68 %69
+         %71 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_8
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %74 = OpLoad %int %73
+         %75 = OpAccessChain %_ptr_Function_int %ref %72
+         %76 = OpSNegate %int %74
+               OpStore %75 %76
+         %78 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_9
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %81 = OpLoad %int %80
+         %82 = OpAccessChain %_ptr_Function_int %ref %79
+         %83 = OpSNegate %int %81
+               OpStore %82 %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_10
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %88 = OpLoad %int %87
+         %89 = OpAccessChain %_ptr_Function_int %ref %86
+         %90 = OpSNegate %int %88
+               OpStore %89 %90
+         %92 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_11
+         %93 = OpLoad %int %92
+         %94 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %95 = OpLoad %int %94
+         %96 = OpAccessChain %_ptr_Function_int %ref %93
+         %97 = OpSNegate %int %95
+               OpStore %96 %97
+         %99 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %100 = OpLoad %int %99
+        %101 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %102 = OpLoad %int %101
+        %103 = OpAccessChain %_ptr_Function_int %ref %100
+        %104 = OpSNegate %int %102
+               OpStore %103 %104
+        %106 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_12
+        %107 = OpLoad %int %106
+        %108 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Function_int %ref %107
+        %111 = OpSNegate %int %109
+               OpStore %110 %111
+        %113 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_13
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %116 = OpLoad %int %115
+        %117 = OpAccessChain %_ptr_Function_int %ref %114
+        %118 = OpSNegate %int %116
+               OpStore %117 %118
+        %120 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_14
+        %121 = OpLoad %int %120
+        %122 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %123 = OpLoad %int %122
+        %124 = OpAccessChain %_ptr_Function_int %ref %121
+        %125 = OpSNegate %int %123
+               OpStore %124 %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_15
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_2
+        %130 = OpLoad %int %129
+        %131 = OpAccessChain %_ptr_Function_int %ref %128
+        %132 = OpSNegate %int %130
+               OpStore %131 %132
+               OpStore %i %int_0
+               OpBranch %133
+        %133 = OpLabel
+               OpLoopMerge %134 %135 None
+               OpBranch %136
+        %136 = OpLabel
+        %137 = OpLoad %int %i
+        %138 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %139 = OpLoad %int %138
+        %140 = OpSLessThan %bool %137 %139
+               OpSelectionMerge %142 None
+               OpBranchConditional %140 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %134
+        %142 = OpLabel
+        %145 = OpLoad %int %i
+        %146 = OpLoad %int %i
+        %147 = OpLoad %int %i
+        %148 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %149 = OpLoad %int %148
+        %150 = OpAccessChain %_ptr_Function_int %data %145
+        %154 = OpNot %int %146
+        %155 = OpNot %int %147
+        %152 = OpExtInst %int %153 SClamp %154 %155 %149
+        %151 = OpNot %int %152
+               OpStore %150 %151
+               OpBranch %135
+        %135 = OpLabel
+        %156 = OpLoad %int %i
+        %157 = OpIAdd %int %156 %int_1
+               OpStore %i %157
+               OpBranch %133
+        %134 = OpLabel
+        %158 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_5
+        %159 = OpLoad %int %158
+               OpStore %i_1 %159
+               OpBranch %160
+        %160 = OpLabel
+               OpLoopMerge %161 %162 None
+               OpBranch %163
+        %163 = OpLabel
+        %164 = OpLoad %int %i_1
+        %165 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %164 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %161
+        %168 = OpLabel
+        %171 = OpLoad %int %i_1
+        %172 = OpLoad %int %i_1
+        %173 = OpAccessChain %_ptr_Function_int %data %171
+        %176 = OpNot %int %172
+        %175 = OpExtInst %int %153 SClamp %176 %int_0 %int_1
+        %174 = OpNot %int %175
+               OpStore %173 %174
+               OpBranch %162
+        %162 = OpLabel
+        %177 = OpLoad %int %i_1
+        %178 = OpIAdd %int %177 %int_1
+               OpStore %i_1 %178
+               OpBranch %160
+        %161 = OpLabel
+        %179 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_6
+        %180 = OpLoad %int %179
+               OpStore %i_2 %180
+               OpBranch %181
+        %181 = OpLabel
+               OpLoopMerge %182 %183 None
+               OpBranch %184
+        %184 = OpLabel
+        %185 = OpLoad %int %i_2
+        %187 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+        %188 = OpLoad %int %187
+        %189 = OpSLessThan %bool %185 %188
+               OpSelectionMerge %190 None
+               OpBranchConditional %189 %191 %192
+        %191 = OpLabel
+               OpBranch %190
+        %192 = OpLabel
+               OpBranch %182
+        %190 = OpLabel
+        %193 = OpLoad %int %i_2
+        %194 = OpLoad %int %i_2
+        %195 = OpAccessChain %_ptr_Function_int %data %193
+        %197 = OpExtInst %int %153 SClamp %194 %int_0 %int_1
+        %196 = OpNot %int %197
+               OpStore %195 %196
+               OpBranch %183
+        %183 = OpLabel
+        %198 = OpLoad %int %i_2
+        %199 = OpIAdd %int %198 %int_1
+               OpStore %i_2 %199
+               OpBranch %181
+        %182 = OpLabel
+        %200 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %201 = OpLoad %int %200
+               OpStore %i_3 %201
+               OpBranch %202
+        %202 = OpLabel
+               OpLoopMerge %203 %204 None
+               OpBranch %205
+        %205 = OpLabel
+        %206 = OpLoad %int %i_3
+        %207 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_7
+        %208 = OpLoad %int %207
+        %209 = OpSLessThan %bool %206 %208
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %212
+        %211 = OpLabel
+               OpBranch %210
+        %212 = OpLabel
+               OpBranch %203
+        %210 = OpLabel
+        %213 = OpLoad %int %i_3
+        %214 = OpAccessChain %_ptr_Function_int %data %213
+        %215 = OpLoad %int %214
+        %216 = OpLoad %int %i_3
+        %217 = OpAccessChain %_ptr_Function_int %ref %216
+        %218 = OpLoad %int %217
+        %219 = OpINotEqual %bool %215 %218
+               OpSelectionMerge %220 None
+               OpBranchConditional %219 %221 %220
+        %221 = OpLabel
+        %222 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %223 = OpLoad %int %222
+        %224 = OpConvertSToF %float %223
+        %225 = OpCompositeConstruct %v4float %224 %224 %224 %224
+               OpStore %x_GLF_color %225
+               OpReturn
+        %220 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+        %226 = OpLoad %int %i_3
+        %227 = OpIAdd %int %226 %int_1
+               OpStore %i_3 %227
+               OpBranch %202
+        %203 = OpLabel
+        %228 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %229 = OpLoad %int %228
+        %230 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %231 = OpLoad %int %230
+        %232 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+        %233 = OpLoad %int %232
+        %234 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+        %235 = OpLoad %int %234
+        %236 = OpConvertSToF %float %229
+        %237 = OpConvertSToF %float %231
+        %238 = OpConvertSToF %float %233
+        %239 = OpConvertSToF %float %235
+        %240 = OpCompositeConstruct %v4float %236 %237 %238 %239
+               OpStore %x_GLF_color %240
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %241
+%tint_symbol = OpFunctionParameter %main_out
+        %245 = OpLabel
+        %246 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %246
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %248 = OpLabel
+        %249 = OpFunctionCall %void %main_1
+        %251 = OpLoad %v4float %x_GLF_color
+        %252 = OpCompositeConstruct %main_out %251
+        %250 = OpFunctionCall %void %tint_symbol_2 %252
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2dc09e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,161 @@
+type Arr = [[stride(16)]] array<i32, 16>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var ref : array<i32, 15>;
+  var i : i32;
+  var data : array<i32, 15>;
+  var i_1 : i32;
+  var i_2 : i32;
+  var i_3 : i32;
+  let x_46 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_48 : i32 = x_6.x_GLF_uniform_int_values[0];
+  ref[x_46] = x_48;
+  let x_51 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_53 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_51] = x_53;
+  let x_56 : i32 = x_6.x_GLF_uniform_int_values[2];
+  let x_58 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_56] = x_58;
+  let x_61 : i32 = x_6.x_GLF_uniform_int_values[3];
+  let x_63 : i32 = x_6.x_GLF_uniform_int_values[3];
+  ref[x_61] = x_63;
+  let x_66 : i32 = x_6.x_GLF_uniform_int_values[4];
+  let x_68 : i32 = x_6.x_GLF_uniform_int_values[4];
+  ref[x_66] = x_68;
+  let x_71 : i32 = x_6.x_GLF_uniform_int_values[5];
+  let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_71] = -(x_73);
+  let x_77 : i32 = x_6.x_GLF_uniform_int_values[8];
+  let x_79 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_77] = -(x_79);
+  let x_83 : i32 = x_6.x_GLF_uniform_int_values[9];
+  let x_85 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_83] = -(x_85);
+  let x_89 : i32 = x_6.x_GLF_uniform_int_values[10];
+  let x_91 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_89] = -(x_91);
+  let x_95 : i32 = x_6.x_GLF_uniform_int_values[11];
+  let x_97 : i32 = x_6.x_GLF_uniform_int_values[1];
+  ref[x_95] = -(x_97);
+  let x_101 : i32 = x_6.x_GLF_uniform_int_values[6];
+  let x_103 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_101] = -(x_103);
+  let x_107 : i32 = x_6.x_GLF_uniform_int_values[12];
+  let x_109 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_107] = -(x_109);
+  let x_113 : i32 = x_6.x_GLF_uniform_int_values[13];
+  let x_115 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_113] = -(x_115);
+  let x_119 : i32 = x_6.x_GLF_uniform_int_values[14];
+  let x_121 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_119] = -(x_121);
+  let x_125 : i32 = x_6.x_GLF_uniform_int_values[15];
+  let x_127 : i32 = x_6.x_GLF_uniform_int_values[2];
+  ref[x_125] = -(x_127);
+  i = 0;
+  loop {
+    let x_134 : i32 = i;
+    let x_136 : i32 = x_6.x_GLF_uniform_int_values[5];
+    if ((x_134 < x_136)) {
+    } else {
+      break;
+    }
+    let x_139 : i32 = i;
+    let x_140 : i32 = i;
+    let x_142 : i32 = i;
+    let x_145 : i32 = x_6.x_GLF_uniform_int_values[1];
+    data[x_139] = ~(clamp(~(x_140), ~(x_142), x_145));
+
+    continuing {
+      let x_149 : i32 = i;
+      i = (x_149 + 1);
+    }
+  }
+  let x_152 : i32 = x_6.x_GLF_uniform_int_values[5];
+  i_1 = x_152;
+  loop {
+    let x_157 : i32 = i_1;
+    let x_159 : i32 = x_6.x_GLF_uniform_int_values[6];
+    if ((x_157 < x_159)) {
+    } else {
+      break;
+    }
+    let x_162 : i32 = i_1;
+    let x_163 : i32 = i_1;
+    data[x_162] = ~(clamp(~(x_163), 0, 1));
+
+    continuing {
+      let x_168 : i32 = i_1;
+      i_1 = (x_168 + 1);
+    }
+  }
+  let x_171 : i32 = x_6.x_GLF_uniform_int_values[6];
+  i_2 = x_171;
+  loop {
+    let x_176 : i32 = i_2;
+    let x_178 : i32 = x_6.x_GLF_uniform_int_values[7];
+    if ((x_176 < x_178)) {
+    } else {
+      break;
+    }
+    let x_181 : i32 = i_2;
+    let x_182 : i32 = i_2;
+    data[x_181] = ~(clamp(x_182, 0, 1));
+
+    continuing {
+      let x_186 : i32 = i_2;
+      i_2 = (x_186 + 1);
+    }
+  }
+  let x_189 : i32 = x_6.x_GLF_uniform_int_values[0];
+  i_3 = x_189;
+  loop {
+    let x_194 : i32 = i_3;
+    let x_196 : i32 = x_6.x_GLF_uniform_int_values[7];
+    if ((x_194 < x_196)) {
+    } else {
+      break;
+    }
+    let x_199 : i32 = i_3;
+    let x_201 : i32 = data[x_199];
+    let x_202 : i32 = i_3;
+    let x_204 : i32 = ref[x_202];
+    if ((x_201 != x_204)) {
+      let x_209 : i32 = x_6.x_GLF_uniform_int_values[0];
+      let x_210 : f32 = f32(x_209);
+      x_GLF_color = vec4<f32>(x_210, x_210, x_210, x_210);
+      return;
+    }
+
+    continuing {
+      let x_212 : i32 = i_3;
+      i_3 = (x_212 + 1);
+    }
+  }
+  let x_215 : i32 = x_6.x_GLF_uniform_int_values[1];
+  let x_218 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_221 : i32 = x_6.x_GLF_uniform_int_values[0];
+  let x_224 : i32 = x_6.x_GLF_uniform_int_values[1];
+  x_GLF_color = vec4<f32>(f32(x_215), f32(x_218), f32(x_221), f32(x_224));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm
new file mode 100644
index 0000000..91ff6bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm
@@ -0,0 +1,86 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %N "N"
+               OpName %I "I"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "quarter"
+               OpName %_ ""
+               OpName %Nref "Nref"
+               OpName %v "v"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %19 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+%float_87_5899963 = OpConstant %float 87.5899963
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_92_5100021 = OpConstant %float 92.5100021
+%float_17_0499992 = OpConstant %float 17.0499992
+%float_n6_0999999 = OpConstant %float -6.0999999
+%float_4329_37061 = OpConstant %float 4329.37061
+%float_2_70000005 = OpConstant %float 2.70000005
+         %30 = OpConstantComposite %v4float %float_17_0499992 %float_n6_0999999 %float_4329_37061 %float_2_70000005
+   %float_n1 = OpConstant %float -1
+   %float_n2 = OpConstant %float -2
+   %float_n3 = OpConstant %float -3
+   %float_n4 = OpConstant %float -4
+         %35 = OpConstantComposite %v4float %float_n1 %float_n2 %float_n3 %float_n4
+       %bool = OpTypeBool
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %40 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %41 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %11
+         %42 = OpLabel
+          %N = OpVariable %_ptr_Function_v4float Function
+          %I = OpVariable %_ptr_Function_v4float Function
+       %Nref = OpVariable %_ptr_Function_v4float Function
+          %v = OpVariable %_ptr_Function_v4float Function
+               OpStore %N %19
+         %43 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %44 = OpLoad %float %43
+         %45 = OpCompositeConstruct %v4float %float_4 %float_87_5899963 %44 %float_92_5100021
+               OpStore %I %45
+               OpStore %Nref %30
+         %46 = OpLoad %v4float %N
+         %47 = OpLoad %v4float %I
+         %48 = OpLoad %v4float %Nref
+         %49 = OpExtInst %v4float %1 FaceForward %46 %47 %48
+               OpStore %v %49
+         %50 = OpLoad %v4float %v
+         %51 = OpFOrdEqual %v4bool %50 %35
+         %52 = OpAll %bool %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpStore %_GLF_color %40
+               OpBranch %53
+         %55 = OpLabel
+               OpStore %_GLF_color %41
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..11fb504
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,36 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 N = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 I = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 Nref = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  N = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  const float x_44 = asfloat(x_7[0].x);
+  I = float4(4.0f, 87.589996338f, x_44, 92.510002136f);
+  Nref = float4(17.049999237f, -6.099999905f, 4329.370605469f, 2.700000048f);
+  v = faceforward(N, I, Nref);
+  if (all((v == float4(-1.0f, -2.0f, -3.0f, -4.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..0c883ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float quarter;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float4 N = 0.0f;
+  float4 I = 0.0f;
+  float4 Nref = 0.0f;
+  float4 v = 0.0f;
+  N = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  float const x_44 = x_7.quarter;
+  I = float4(4.0f, 87.589996338f, x_44, 92.510002136f);
+  Nref = float4(17.049999237f, -6.099999905f, 4329.370605469f, 2.700000048f);
+  float4 const x_46 = N;
+  float4 const x_47 = I;
+  float4 const x_48 = Nref;
+  v = faceforward(x_46, x_47, x_48);
+  float4 const x_50 = v;
+  if (all((x_50 == float4(-1.0f, -2.0f, -3.0f, -4.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..bba0bd0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,118 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+         %42 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "quarter"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %N "N"
+               OpName %I "I"
+               OpName %Nref "Nref"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %24 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_87_5899963 = OpConstant %float 87.5899963
+%float_92_5100021 = OpConstant %float 92.5100021
+%float_17_0499992 = OpConstant %float 17.0499992
+%float_n6_0999999 = OpConstant %float -6.0999999
+%float_4329_37061 = OpConstant %float 4329.37061
+%float_2_70000005 = OpConstant %float 2.70000005
+         %37 = OpConstantComposite %v4float %float_17_0499992 %float_n6_0999999 %float_4329_37061 %float_2_70000005
+       %bool = OpTypeBool
+   %float_n1 = OpConstant %float -1
+   %float_n2 = OpConstant %float -2
+   %float_n3 = OpConstant %float -3
+   %float_n4 = OpConstant %float -4
+         %50 = OpConstantComposite %v4float %float_n1 %float_n2 %float_n3 %float_n4
+     %v4bool = OpTypeVector %bool 4
+    %float_0 = OpConstant %float 0
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %58 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %59 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %N = OpVariable %_ptr_Function_v4float Function %8
+          %I = OpVariable %_ptr_Function_v4float Function %8
+       %Nref = OpVariable %_ptr_Function_v4float Function %8
+          %v = OpVariable %_ptr_Function_v4float Function %8
+               OpStore %N %24
+         %28 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %29 = OpLoad %float %28
+         %32 = OpCompositeConstruct %v4float %float_4 %float_87_5899963 %29 %float_92_5100021
+               OpStore %I %32
+               OpStore %Nref %37
+         %38 = OpLoad %v4float %N
+         %39 = OpLoad %v4float %I
+         %40 = OpLoad %v4float %Nref
+         %41 = OpExtInst %v4float %42 FaceForward %38 %39 %40
+               OpStore %v %41
+         %43 = OpLoad %v4float %v
+         %51 = OpFOrdEqual %v4bool %43 %50
+         %44 = OpAll %bool %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %44 %54 %55
+         %54 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %53
+         %55 = OpLabel
+               OpStore %x_GLF_color %58
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %59
+%tint_symbol = OpFunctionParameter %main_out
+         %63 = OpLabel
+         %64 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %66 = OpLabel
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..40281ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,41 @@
+[[block]]
+struct buf0 {
+  quarter : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var N : vec4<f32>;
+  var I : vec4<f32>;
+  var Nref : vec4<f32>;
+  var v : vec4<f32>;
+  N = vec4<f32>(1.0, 2.0, 3.0, 4.0);
+  let x_44 : f32 = x_7.quarter;
+  I = vec4<f32>(4.0, 87.589996338, x_44, 92.510002136);
+  Nref = vec4<f32>(17.049999237, -6.099999905, 4329.370605469, 2.700000048);
+  let x_46 : vec4<f32> = N;
+  let x_47 : vec4<f32> = I;
+  let x_48 : vec4<f32> = Nref;
+  v = faceForward(x_46, x_47, x_48);
+  let x_50 : vec4<f32> = v;
+  if (all((x_50 == vec4<f32>(-1.0, -2.0, -3.0, -4.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
new file mode 100644
index 0000000..40281ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
@@ -0,0 +1,41 @@
+[[block]]
+struct buf0 {
+  quarter : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var N : vec4<f32>;
+  var I : vec4<f32>;
+  var Nref : vec4<f32>;
+  var v : vec4<f32>;
+  N = vec4<f32>(1.0, 2.0, 3.0, 4.0);
+  let x_44 : f32 = x_7.quarter;
+  I = vec4<f32>(4.0, 87.589996338, x_44, 92.510002136);
+  Nref = vec4<f32>(17.049999237, -6.099999905, 4329.370605469, 2.700000048);
+  let x_46 : vec4<f32> = N;
+  let x_47 : vec4<f32> = I;
+  let x_48 : vec4<f32> = Nref;
+  v = faceForward(x_46, x_47, x_48);
+  let x_50 : vec4<f32> = v;
+  if (all((x_50 == vec4<f32>(-1.0, -2.0, -3.0, -4.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..11fb504
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,36 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 N = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 I = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 Nref = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 v = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  N = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  const float x_44 = asfloat(x_7[0].x);
+  I = float4(4.0f, 87.589996338f, x_44, 92.510002136f);
+  Nref = float4(17.049999237f, -6.099999905f, 4329.370605469f, 2.700000048f);
+  v = faceforward(N, I, Nref);
+  if (all((v == float4(-1.0f, -2.0f, -3.0f, -4.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..0c883ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.msl
@@ -0,0 +1,43 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float quarter;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  float4 N = 0.0f;
+  float4 I = 0.0f;
+  float4 Nref = 0.0f;
+  float4 v = 0.0f;
+  N = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  float const x_44 = x_7.quarter;
+  I = float4(4.0f, 87.589996338f, x_44, 92.510002136f);
+  Nref = float4(17.049999237f, -6.099999905f, 4329.370605469f, 2.700000048f);
+  float4 const x_46 = N;
+  float4 const x_47 = I;
+  float4 const x_48 = Nref;
+  v = faceforward(x_46, x_47, x_48);
+  float4 const x_50 = v;
+  if (all((x_50 == float4(-1.0f, -2.0f, -3.0f, -4.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..bba0bd0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,118 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+         %42 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "quarter"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %N "N"
+               OpName %I "I"
+               OpName %Nref "Nref"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %24 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_87_5899963 = OpConstant %float 87.5899963
+%float_92_5100021 = OpConstant %float 92.5100021
+%float_17_0499992 = OpConstant %float 17.0499992
+%float_n6_0999999 = OpConstant %float -6.0999999
+%float_4329_37061 = OpConstant %float 4329.37061
+%float_2_70000005 = OpConstant %float 2.70000005
+         %37 = OpConstantComposite %v4float %float_17_0499992 %float_n6_0999999 %float_4329_37061 %float_2_70000005
+       %bool = OpTypeBool
+   %float_n1 = OpConstant %float -1
+   %float_n2 = OpConstant %float -2
+   %float_n3 = OpConstant %float -3
+   %float_n4 = OpConstant %float -4
+         %50 = OpConstantComposite %v4float %float_n1 %float_n2 %float_n3 %float_n4
+     %v4bool = OpTypeVector %bool 4
+    %float_0 = OpConstant %float 0
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %58 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %59 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %N = OpVariable %_ptr_Function_v4float Function %8
+          %I = OpVariable %_ptr_Function_v4float Function %8
+       %Nref = OpVariable %_ptr_Function_v4float Function %8
+          %v = OpVariable %_ptr_Function_v4float Function %8
+               OpStore %N %24
+         %28 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %29 = OpLoad %float %28
+         %32 = OpCompositeConstruct %v4float %float_4 %float_87_5899963 %29 %float_92_5100021
+               OpStore %I %32
+               OpStore %Nref %37
+         %38 = OpLoad %v4float %N
+         %39 = OpLoad %v4float %I
+         %40 = OpLoad %v4float %Nref
+         %41 = OpExtInst %v4float %42 FaceForward %38 %39 %40
+               OpStore %v %41
+         %43 = OpLoad %v4float %v
+         %51 = OpFOrdEqual %v4bool %43 %50
+         %44 = OpAll %bool %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %44 %54 %55
+         %54 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %53
+         %55 = OpLabel
+               OpStore %x_GLF_color %58
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %59
+%tint_symbol = OpFunctionParameter %main_out
+         %63 = OpLabel
+         %64 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %66 = OpLabel
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..40281ef
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,41 @@
+[[block]]
+struct buf0 {
+  quarter : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var N : vec4<f32>;
+  var I : vec4<f32>;
+  var Nref : vec4<f32>;
+  var v : vec4<f32>;
+  N = vec4<f32>(1.0, 2.0, 3.0, 4.0);
+  let x_44 : f32 = x_7.quarter;
+  I = vec4<f32>(4.0, 87.589996338, x_44, 92.510002136);
+  Nref = vec4<f32>(17.049999237, -6.099999905, 4329.370605469, 2.700000048);
+  let x_46 : vec4<f32> = N;
+  let x_47 : vec4<f32> = I;
+  let x_48 : vec4<f32> = Nref;
+  v = faceForward(x_46, x_47, x_48);
+  let x_50 : vec4<f32> = v;
+  if (all((x_50 == vec4<f32>(-1.0, -2.0, -3.0, -4.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm
new file mode 100644
index 0000000..d1e03b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm
@@ -0,0 +1,86 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v2float %float_1 %float_1
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %27 = OpConstantComposite %v2float %float_2 %float_3
+    %float_4 = OpConstant %float 4
+         %29 = OpConstantComposite %v2float %float_3 %float_4
+     %v2bool = OpTypeVector %bool 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %9
+         %36 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function
+          %b = OpVariable %_ptr_Function_v2float Function
+               OpStore %a %14
+         %37 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %38 = OpLoad %int %37
+         %39 = OpIEqual %bool %38 %int_1
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %42 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %43 = OpLoad %float %42
+         %44 = OpFAdd %float %43 %float_1
+         %45 = OpAccessChain %_ptr_Function_float %a %uint_0
+               OpStore %45 %44
+               OpBranch %40
+         %40 = OpLabel
+         %46 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %v2float %47 %47
+         %49 = OpFAdd %v2float %48 %27
+               OpStore %b %49
+         %50 = OpLoad %v2float %b
+         %51 = OpFOrdEqual %v2bool %50 %29
+         %52 = OpAll %bool %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpStore %_GLF_color %34
+               OpBranch %53
+         %55 = OpLabel
+               OpStore %_GLF_color %35
+               OpBranch %53
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d6dd5f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,37 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 a = float2(0.0f, 0.0f);
+  float2 b = float2(0.0f, 0.0f);
+  a = float2(1.0f, 1.0f);
+  const int x_38 = asint(x_6[0].x);
+  if ((x_38 == 1)) {
+    const float x_43 = a.x;
+    a.x = (x_43 + 1.0f);
+  }
+  const float x_47 = a.y;
+  b = (float2(x_47, x_47) + float2(2.0f, 3.0f));
+  if (all((b == float2(3.0f, 4.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..9bf6ea8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 a = 0.0f;
+  float2 b = 0.0f;
+  a = float2(1.0f, 1.0f);
+  int const x_38 = x_6.zero;
+  if ((x_38 == 1)) {
+    float const x_43 = a.x;
+    a.x = (x_43 + 1.0f);
+  }
+  float const x_47 = a.y;
+  b = (float2(x_47, x_47) + float2(2.0f, 3.0f));
+  float2 const x_50 = b;
+  if (all((x_50 == float2(3.0f, 4.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a8b0d8c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 70
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %19 = OpConstantNull %v2float
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v2float %float_1 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %44 = OpConstantComposite %v2float %float_2 %float_3
+    %float_4 = OpConstant %float 4
+         %49 = OpConstantComposite %v2float %float_3 %float_4
+     %v2bool = OpTypeVector %bool 2
+    %float_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %57 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function %19
+          %b = OpVariable %_ptr_Function_v2float Function %19
+               OpStore %a %22
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %27 = OpLoad %int %26
+         %29 = OpIEqual %bool %27 %int_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %31
+         %32 = OpLabel
+         %34 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %37 = OpFAdd %float %35 %float_1
+               OpStore %36 %37
+               OpBranch %31
+         %31 = OpLabel
+         %39 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpCompositeConstruct %v2float %40 %40
+         %45 = OpFAdd %v2float %41 %44
+               OpStore %b %45
+         %46 = OpLoad %v2float %b
+         %50 = OpFOrdEqual %v2bool %46 %49
+         %47 = OpAll %bool %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %47 %53 %54
+         %53 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %52
+         %54 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %58
+%tint_symbol = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %65 = OpLabel
+         %66 = OpFunctionCall %void %main_1
+         %68 = OpLoad %v4float %x_GLF_color
+         %69 = OpCompositeConstruct %main_out %68
+         %67 = OpFunctionCall %void %tint_symbol_2 %69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ef1ccfe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,39 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec2<f32>;
+  a = vec2<f32>(1.0, 1.0);
+  let x_38 : i32 = x_6.zero;
+  if ((x_38 == 1)) {
+    let x_43 : f32 = a.x;
+    a.x = (x_43 + 1.0);
+  }
+  let x_47 : f32 = a.y;
+  b = (vec2<f32>(x_47, x_47) + vec2<f32>(2.0, 3.0));
+  let x_50 : vec2<f32> = b;
+  if (all((x_50 == vec2<f32>(3.0, 4.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
new file mode 100644
index 0000000..ef1ccfe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
@@ -0,0 +1,39 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec2<f32>;
+  a = vec2<f32>(1.0, 1.0);
+  let x_38 : i32 = x_6.zero;
+  if ((x_38 == 1)) {
+    let x_43 : f32 = a.x;
+    a.x = (x_43 + 1.0);
+  }
+  let x_47 : f32 = a.y;
+  b = (vec2<f32>(x_47, x_47) + vec2<f32>(2.0, 3.0));
+  let x_50 : vec2<f32> = b;
+  if (all((x_50 == vec2<f32>(3.0, 4.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d6dd5f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,37 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 a = float2(0.0f, 0.0f);
+  float2 b = float2(0.0f, 0.0f);
+  a = float2(1.0f, 1.0f);
+  const int x_38 = asint(x_6[0].x);
+  if ((x_38 == 1)) {
+    const float x_43 = a.x;
+    a.x = (x_43 + 1.0f);
+  }
+  const float x_47 = a.y;
+  b = (float2(x_47, x_47) + float2(2.0f, 3.0f));
+  if (all((b == float2(3.0f, 4.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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..9bf6ea8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float2 a = 0.0f;
+  float2 b = 0.0f;
+  a = float2(1.0f, 1.0f);
+  int const x_38 = x_6.zero;
+  if ((x_38 == 1)) {
+    float const x_43 = a.x;
+    a.x = (x_43 + 1.0f);
+  }
+  float const x_47 = a.y;
+  b = (float2(x_47, x_47) + float2(2.0f, 3.0f));
+  float2 const x_50 = b;
+  if (all((x_50 == float2(3.0f, 4.0f)))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..a8b0d8c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 70
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %19 = OpConstantNull %v2float
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v2float %float_1 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %44 = OpConstantComposite %v2float %float_2 %float_3
+    %float_4 = OpConstant %float 4
+         %49 = OpConstantComposite %v2float %float_3 %float_4
+     %v2bool = OpTypeVector %bool 2
+    %float_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %57 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function %19
+          %b = OpVariable %_ptr_Function_v2float Function %19
+               OpStore %a %22
+         %26 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0
+         %27 = OpLoad %int %26
+         %29 = OpIEqual %bool %27 %int_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %31
+         %32 = OpLabel
+         %34 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %35 = OpLoad %float %34
+         %36 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %37 = OpFAdd %float %35 %float_1
+               OpStore %36 %37
+               OpBranch %31
+         %31 = OpLabel
+         %39 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpCompositeConstruct %v2float %40 %40
+         %45 = OpFAdd %v2float %41 %44
+               OpStore %b %45
+         %46 = OpLoad %v2float %b
+         %50 = OpFOrdEqual %v2bool %46 %49
+         %47 = OpAll %bool %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %47 %53 %54
+         %53 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %52
+         %54 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %58
+%tint_symbol = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %65 = OpLabel
+         %66 = OpFunctionCall %void %main_1
+         %68 = OpLoad %v4float %x_GLF_color
+         %69 = OpCompositeConstruct %main_out %68
+         %67 = OpFunctionCall %void %tint_symbol_2 %69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ef1ccfe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,39 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec2<f32>;
+  a = vec2<f32>(1.0, 1.0);
+  let x_38 : i32 = x_6.zero;
+  if ((x_38 == 1)) {
+    let x_43 : f32 = a.x;
+    a.x = (x_43 + 1.0);
+  }
+  let x_47 : f32 = a.y;
+  b = (vec2<f32>(x_47, x_47) + vec2<f32>(2.0, 3.0));
+  let x_50 : vec2<f32> = b;
+  if (all((x_50 == vec2<f32>(3.0, 4.0)))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm
new file mode 100644
index 0000000..746f3a7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm
@@ -0,0 +1,56 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_1 = OpConstant %float 1
+         %12 = OpConstantComposite %v2float %float_1 %float_1
+  %float_0_5 = OpConstant %float 0.5
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %7
+         %23 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function
+          %b = OpVariable %_ptr_Function_v2float Function
+               OpStore %a %12
+         %24 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %25 = OpLoad %float %24
+         %26 = OpFAdd %float %25 %float_0_5
+         %27 = OpAccessChain %_ptr_Function_float %a %uint_0
+               OpStore %27 %26
+         %28 = OpLoad %v2float %a
+         %29 = OpExtInst %v2float %1 Fract %28
+               OpStore %b %29
+         %30 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %31 = OpLoad %float %30
+         %32 = OpFOrdEqual %bool %31 %float_0_5
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b0f9a87
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 a = float2(0.0f, 0.0f);
+  float2 b = float2(0.0f, 0.0f);
+  a = float2(1.0f, 1.0f);
+  const float x_25 = a.x;
+  a.x = (x_25 + 0.5f);
+  b = frac(a);
+  const float x_31 = b.x;
+  if ((x_31 == 0.5f)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f64ba57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 a = 0.0f;
+  float2 b = 0.0f;
+  a = float2(1.0f, 1.0f);
+  float const x_25 = a.x;
+  a.x = (x_25 + 0.5f);
+  float2 const x_28 = a;
+  b = fract(x_28);
+  float const x_31 = b.x;
+  if ((x_31 == 0.5f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..0722d66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,88 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+         %29 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+    %float_1 = OpConstant %float 1
+         %18 = OpConstantComposite %v2float %float_1 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %40 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function %15
+          %b = OpVariable %_ptr_Function_v2float Function %15
+               OpStore %a %18
+         %22 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %23 = OpLoad %float %22
+         %24 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpFAdd %float %23 %float_0_5
+               OpStore %24 %26
+         %27 = OpLoad %v2float %a
+         %28 = OpExtInst %v2float %29 Fract %27
+               OpStore %b %28
+         %30 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %31 = OpLoad %float %30
+         %32 = OpFOrdEqual %bool %31 %float_0_5
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %34
+         %36 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %40
+%tint_symbol = OpFunctionParameter %main_out
+         %44 = OpLabel
+         %45 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %45
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %v4float %x_GLF_color
+         %51 = OpCompositeConstruct %main_out %50
+         %49 = OpFunctionCall %void %tint_symbol_2 %51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5be7339
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec2<f32>;
+  a = vec2<f32>(1.0, 1.0);
+  let x_25 : f32 = a.x;
+  a.x = (x_25 + 0.5);
+  let x_28 : vec2<f32> = a;
+  b = fract(x_28);
+  let x_31 : f32 = b.x;
+  if ((x_31 == 0.5)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
new file mode 100644
index 0000000..5be7339
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
@@ -0,0 +1,29 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec2<f32>;
+  a = vec2<f32>(1.0, 1.0);
+  let x_25 : f32 = a.x;
+  a.x = (x_25 + 0.5);
+  let x_28 : vec2<f32> = a;
+  b = fract(x_28);
+  let x_31 : f32 = b.x;
+  if ((x_31 == 0.5)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b0f9a87
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 a = float2(0.0f, 0.0f);
+  float2 b = float2(0.0f, 0.0f);
+  a = float2(1.0f, 1.0f);
+  const float x_25 = a.x;
+  a.x = (x_25 + 0.5f);
+  b = frac(a);
+  const float x_31 = b.x;
+  if ((x_31 == 0.5f)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f64ba57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 a = 0.0f;
+  float2 b = 0.0f;
+  a = float2(1.0f, 1.0f);
+  float const x_25 = a.x;
+  a.x = (x_25 + 0.5f);
+  float2 const x_28 = a;
+  b = fract(x_28);
+  float const x_31 = b.x;
+  if ((x_31 == 0.5f)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..0722d66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,88 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+         %29 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+    %float_1 = OpConstant %float 1
+         %18 = OpConstantComposite %v2float %float_1 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %40 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %a = OpVariable %_ptr_Function_v2float Function %15
+          %b = OpVariable %_ptr_Function_v2float Function %15
+               OpStore %a %18
+         %22 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %23 = OpLoad %float %22
+         %24 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpFAdd %float %23 %float_0_5
+               OpStore %24 %26
+         %27 = OpLoad %v2float %a
+         %28 = OpExtInst %v2float %29 Fract %27
+               OpStore %b %28
+         %30 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %31 = OpLoad %float %30
+         %32 = OpFOrdEqual %bool %31 %float_0_5
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %34
+         %36 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %40
+%tint_symbol = OpFunctionParameter %main_out
+         %44 = OpLabel
+         %45 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %45
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %v4float %x_GLF_color
+         %51 = OpCompositeConstruct %main_out %50
+         %49 = OpFunctionCall %void %tint_symbol_2 %51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5be7339
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var a : vec2<f32>;
+  var b : vec2<f32>;
+  a = vec2<f32>(1.0, 1.0);
+  let x_25 : f32 = a.x;
+  a.x = (x_25 + 0.5);
+  let x_28 : vec2<f32> = a;
+  b = fract(x_28);
+  let x_31 : f32 = b.x;
+  if ((x_31 == 0.5)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm
new file mode 100644
index 0000000..b4a995a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm
@@ -0,0 +1,51 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_1 = OpConstant %float 1
+  %float_100 = OpConstant %float 100
+         %12 = OpConstantComposite %v2float %float_1 %float_100
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %6
+         %23 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function
+         %24 = OpExtInst %v2float %1 Cosh %12
+         %25 = OpExtInst %v2float %1 Log2 %24
+               OpStore %v %25
+         %26 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %27 = OpLoad %float %26
+         %28 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %29 = OpLoad %float %28
+         %30 = OpFOrdLessThan %bool %27 %29
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpStore %_GLF_color %21
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c513660
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v = float2(0.0f, 0.0f);
+  v = log2(cosh(float2(1.0f, 100.0f)));
+  const float x_27 = v.x;
+  const float x_29 = v.y;
+  if ((x_27 < x_29)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d1585b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 v = 0.0f;
+  v = log2(cosh(float2(1.0f, 100.0f)));
+  float const x_27 = v.x;
+  float const x_29 = v.y;
+  if ((x_27 < x_29)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..77d6182
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+         %17 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+    %float_1 = OpConstant %float 1
+  %float_100 = OpConstant %float 100
+         %21 = OpConstantComposite %v2float %float_1 %float_100
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %15
+         %18 = OpExtInst %v2float %17 Cosh %21
+         %16 = OpExtInst %v2float %17 Log2 %18
+               OpStore %v %16
+         %25 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %29 = OpLoad %float %28
+         %30 = OpFOrdLessThan %bool %26 %29
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %32
+         %34 = OpLabel
+               OpStore %x_GLF_color %37
+               OpBranch %32
+         %32 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2cecb75
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,25 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  v = log2(cosh(vec2<f32>(1.0, 100.0)));
+  let x_27 : f32 = v.x;
+  let x_29 : f32 = v.y;
+  if ((x_27 < x_29)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
new file mode 100644
index 0000000..2cecb75
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
@@ -0,0 +1,25 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  v = log2(cosh(vec2<f32>(1.0, 100.0)));
+  let x_27 : f32 = v.x;
+  let x_29 : f32 = v.y;
+  if ((x_27 < x_29)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c513660
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v = float2(0.0f, 0.0f);
+  v = log2(cosh(float2(1.0f, 100.0f)));
+  const float x_27 = v.x;
+  const float x_29 = v.y;
+  if ((x_27 < x_29)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d1585b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 v = 0.0f;
+  v = log2(cosh(float2(1.0f, 100.0f)));
+  float const x_27 = v.x;
+  float const x_29 = v.y;
+  if ((x_27 < x_29)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..77d6182
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+         %17 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+    %float_1 = OpConstant %float 1
+  %float_100 = OpConstant %float 100
+         %21 = OpConstantComposite %v2float %float_1 %float_100
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %15
+         %18 = OpExtInst %v2float %17 Cosh %21
+         %16 = OpExtInst %v2float %17 Log2 %18
+               OpStore %v %16
+         %25 = OpAccessChain %_ptr_Function_float %v %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %29 = OpLoad %float %28
+         %30 = OpFOrdLessThan %bool %26 %29
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpStore %x_GLF_color %36
+               OpBranch %32
+         %34 = OpLabel
+               OpStore %x_GLF_color %37
+               OpBranch %32
+         %32 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2cecb75
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  v = log2(cosh(vec2<f32>(1.0, 100.0)));
+  let x_27 : f32 = v.x;
+  let x_29 : f32 = v.y;
+  if ((x_27 < x_29)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm
new file mode 100644
index 0000000..96a060d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm
@@ -0,0 +1,91 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_i1_ "func(i1;"
+               OpName %x "x"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %param "param"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %14 = OpTypeFunction %void %_ptr_Function_int
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_8 = OpConstant %int 8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %11
+         %29 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %26
+               OpStore %i %int_0
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpPhi %int %int_0 %29 %32 %33
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %35 = OpLoad %int %34
+         %36 = OpIAdd %int %int_10 %35
+         %37 = OpSLessThan %bool %31 %36
+               OpLoopMerge %38 %33 None
+               OpBranchConditional %37 %33 %38
+         %33 = OpLabel
+               OpStore %param %31
+         %39 = OpFunctionCall %void %func_i1_ %param
+         %32 = OpIAdd %int %31 %int_1
+               OpStore %i %32
+               OpBranch %30
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_i1_ = OpFunction %void None %14
+          %x = OpFunctionParameter %_ptr_Function_int
+         %40 = OpLabel
+         %41 = OpLoad %int %x
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %43 = OpLoad %int %42
+         %44 = OpSLessThan %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+               OpKill
+         %45 = OpLabel
+         %47 = OpLoad %int %x
+         %48 = OpSGreaterThan %bool %47 %int_8
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpStore %_GLF_color %25
+               OpBranch %49
+         %51 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %49
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e223102
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_i1_(inout int x) {
+  const int x_41 = x;
+  const int x_43 = asint(x_7[0].x);
+  if ((x_41 < x_43)) {
+    discard;
+  }
+  const int x_47 = x;
+  if ((x_47 > 8)) {
+    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);
+  }
+  return;
+}
+
+void main_1() {
+  int i = 0;
+  int param = 0;
+  int x_31_phi = 0;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  x_31_phi = 0;
+  while (true) {
+    const int x_31 = x_31_phi;
+    const int x_35 = asint(x_7[0].x);
+    if ((x_31 < (10 + x_35))) {
+    } else {
+      break;
+    }
+    {
+      param = x_31;
+      func_i1_(param);
+      const int x_32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2843739
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_i1_(constant buf0& x_7, thread int* const x, thread float4* const tint_symbol_4) {
+  int const x_41 = *(x);
+  int const x_43 = x_7.zero;
+  if ((x_41 < x_43)) {
+    discard_fragment();
+  }
+  int const x_47 = *(x);
+  if ((x_47 > 8)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  int i = 0;
+  int param = 0;
+  int x_31_phi = 0;
+  *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  x_31_phi = 0;
+  while (true) {
+    int const x_31 = x_31_phi;
+    int const x_35 = x_7.zero;
+    if ((x_31 < (10 + x_35))) {
+    } else {
+      break;
+    }
+    {
+      param = x_31;
+      func_i1_(x_7, &(param), tint_symbol_5);
+      int const x_32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..faecfdf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,138 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 77
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %x_31_phi "x_31_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %void %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %40 = OpTypeFunction %void
+         %44 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %void None %12
+          %x = OpFunctionParameter %_ptr_Function_int
+         %17 = OpLabel
+         %19 = OpLoad %int %x
+         %23 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %24 = OpLoad %int %23
+         %25 = OpSLessThan %bool %19 %24
+               OpSelectionMerge %27 None
+               OpBranchConditional %25 %28 %27
+         %28 = OpLabel
+               OpKill
+         %27 = OpLabel
+         %30 = OpLoad %int %x
+         %32 = OpSGreaterThan %bool %30 %int_8
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %40
+         %42 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %44
+      %param = OpVariable %_ptr_Function_int Function %44
+   %x_31_phi = OpVariable %_ptr_Function_int Function %44
+               OpStore %x_GLF_color %39
+               OpStore %i %int_0
+               OpStore %x_31_phi %int_0
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpLoad %int %x_31_phi
+         %53 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %54 = OpLoad %int %53
+         %56 = OpIAdd %int %int_10 %54
+         %57 = OpSLessThan %bool %52 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %49
+         %58 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+               OpStore %param %52
+         %61 = OpFunctionCall %void %func_i1_ %param
+         %64 = OpIAdd %int %52 %int_1
+               OpStore %i %64
+               OpStore %x_31_phi %64
+               OpBranch %48
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %65
+%tint_symbol = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %40
+         %72 = OpLabel
+         %73 = OpFunctionCall %void %main_1
+         %75 = OpLoad %v4float %x_GLF_color
+         %76 = OpCompositeConstruct %main_out %75
+         %74 = OpFunctionCall %void %tint_symbol_2 %76
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f53a636
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,60 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) {
+  let x_41 : i32 = *(x);
+  let x_43 : i32 = x_7.zero;
+  if ((x_41 < x_43)) {
+    discard;
+  }
+  let x_47 : i32 = *(x);
+  if ((x_47 > 8)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var param : i32;
+  var x_31_phi : i32;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  x_31_phi = 0;
+  loop {
+    let x_31 : i32 = x_31_phi;
+    let x_35 : i32 = x_7.zero;
+    if ((x_31 < (10 + x_35))) {
+    } else {
+      break;
+    }
+
+    continuing {
+      param = x_31;
+      func_i1_(&(param));
+      let x_32 : i32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl
new file mode 100644
index 0000000..f53a636
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl
@@ -0,0 +1,60 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) {
+  let x_41 : i32 = *(x);
+  let x_43 : i32 = x_7.zero;
+  if ((x_41 < x_43)) {
+    discard;
+  }
+  let x_47 : i32 = *(x);
+  if ((x_47 > 8)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var param : i32;
+  var x_31_phi : i32;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  x_31_phi = 0;
+  loop {
+    let x_31 : i32 = x_31_phi;
+    let x_35 : i32 = x_7.zero;
+    if ((x_31 < (10 + x_35))) {
+    } else {
+      break;
+    }
+
+    continuing {
+      param = x_31;
+      func_i1_(&(param));
+      let x_32 : i32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e223102
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void func_i1_(inout int x) {
+  const int x_41 = x;
+  const int x_43 = asint(x_7[0].x);
+  if ((x_41 < x_43)) {
+    discard;
+  }
+  const int x_47 = x;
+  if ((x_47 > 8)) {
+    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);
+  }
+  return;
+}
+
+void main_1() {
+  int i = 0;
+  int param = 0;
+  int x_31_phi = 0;
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  x_31_phi = 0;
+  while (true) {
+    const int x_31 = x_31_phi;
+    const int x_35 = asint(x_7[0].x);
+    if ((x_31 < (10 + x_35))) {
+    } else {
+      break;
+    }
+    {
+      param = x_31;
+      func_i1_(param);
+      const int x_32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2843739
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void func_i1_(constant buf0& x_7, thread int* const x, thread float4* const tint_symbol_4) {
+  int const x_41 = *(x);
+  int const x_43 = x_7.zero;
+  if ((x_41 < x_43)) {
+    discard_fragment();
+  }
+  int const x_47 = *(x);
+  if ((x_47 > 8)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  int i = 0;
+  int param = 0;
+  int x_31_phi = 0;
+  *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  i = 0;
+  x_31_phi = 0;
+  while (true) {
+    int const x_31 = x_31_phi;
+    int const x_35 = x_7.zero;
+    if ((x_31 < (10 + x_35))) {
+    } else {
+      break;
+    }
+    {
+      param = x_31;
+      func_i1_(x_7, &(param), tint_symbol_5);
+      int const x_32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..faecfdf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,138 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 77
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_i1_ "func_i1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %x_31_phi "x_31_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %12 = OpTypeFunction %void %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %40 = OpTypeFunction %void
+         %44 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+   %func_i1_ = OpFunction %void None %12
+          %x = OpFunctionParameter %_ptr_Function_int
+         %17 = OpLabel
+         %19 = OpLoad %int %x
+         %23 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %24 = OpLoad %int %23
+         %25 = OpSLessThan %bool %19 %24
+               OpSelectionMerge %27 None
+               OpBranchConditional %25 %28 %27
+         %28 = OpLabel
+               OpKill
+         %27 = OpLabel
+         %30 = OpLoad %int %x
+         %32 = OpSGreaterThan %bool %30 %int_8
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %40
+         %42 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %44
+      %param = OpVariable %_ptr_Function_int Function %44
+   %x_31_phi = OpVariable %_ptr_Function_int Function %44
+               OpStore %x_GLF_color %39
+               OpStore %i %int_0
+               OpStore %x_31_phi %int_0
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpLoad %int %x_31_phi
+         %53 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0
+         %54 = OpLoad %int %53
+         %56 = OpIAdd %int %int_10 %54
+         %57 = OpSLessThan %bool %52 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %49
+         %58 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+               OpStore %param %52
+         %61 = OpFunctionCall %void %func_i1_ %param
+         %64 = OpIAdd %int %52 %int_1
+               OpStore %i %64
+               OpStore %x_31_phi %64
+               OpBranch %48
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %65
+%tint_symbol = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %40
+         %72 = OpLabel
+         %73 = OpFunctionCall %void %main_1
+         %75 = OpLoad %v4float %x_GLF_color
+         %76 = OpCompositeConstruct %main_out %75
+         %74 = OpFunctionCall %void %tint_symbol_2 %76
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f53a636
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-for-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,60 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_i1_(x : ptr<function, i32>) {
+  let x_41 : i32 = *(x);
+  let x_43 : i32 = x_7.zero;
+  if ((x_41 < x_43)) {
+    discard;
+  }
+  let x_47 : i32 = *(x);
+  if ((x_47 > 8)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+fn main_1() {
+  var i : i32;
+  var param : i32;
+  var x_31_phi : i32;
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  i = 0;
+  x_31_phi = 0;
+  loop {
+    let x_31 : i32 = x_31_phi;
+    let x_35 : i32 = x_7.zero;
+    if ((x_31 < (10 + x_35))) {
+    } else {
+      break;
+    }
+
+    continuing {
+      param = x_31;
+      func_i1_(&(param));
+      let x_32 : i32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm
new file mode 100644
index 0000000..fa125c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm
@@ -0,0 +1,123 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_f1_ "func(f1;"
+               OpName %x "x"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "five"
+               OpName %_ ""
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpTypeFunction %float %_ptr_Function_float
+    %float_5 = OpConstant %float 5
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+  %float_0_5 = OpConstant %float 0.5
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %35 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %13
+         %37 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_float Function
+               OpStore %f %float_0
+               OpStore %i %int_0
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %int %i
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %41 = OpLoad %int %40
+         %42 = OpSLessThan %bool %39 %41
+               OpLoopMerge %43 %44 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpConvertSToF %float %45
+               OpStore %param %46
+         %47 = OpFunctionCall %float %func_f1_ %param
+               OpStore %f %47
+         %48 = OpLoad %int %i
+         %49 = OpIAdd %int %48 %int_1
+               OpStore %i %49
+               OpBranch %38
+         %43 = OpLabel
+         %50 = OpLoad %float %f
+         %51 = OpFOrdEqual %bool %50 %float_5
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpStore %_GLF_color %35
+               OpBranch %52
+         %54 = OpLabel
+               OpStore %_GLF_color %36
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+   %func_f1_ = OpFunction %float None %16
+          %x = OpFunctionParameter %_ptr_Function_float
+         %55 = OpLabel
+         %56 = OpLoad %float %x
+         %57 = OpFOrdGreaterThan %bool %56 %float_5
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %61 = OpLoad %float %60
+         %62 = OpFOrdLessThan %bool %61 %float_0_5
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpKill
+         %65 = OpLabel
+         %66 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %67 = OpLoad %float %66
+         %68 = OpFOrdLessThan %bool %67 %float_0_5
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+               OpKill
+         %69 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+         %71 = OpLoad %float %x
+         %72 = OpFAdd %float %71 %float_1
+               OpReturnValue %72
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..279a0dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,69 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_f1_(inout float x) {
+  const float x_56 = x;
+  if ((x_56 > 5.0f)) {
+    const float x_61 = gl_FragCoord.x;
+    if ((x_61 < 0.5f)) {
+      discard;
+    } else {
+      const float x_67 = gl_FragCoord.y;
+      if ((x_67 < 0.5f)) {
+        discard;
+      }
+    }
+  }
+  const float x_71 = x;
+  return (x_71 + 1.0f);
+}
+
+void main_1() {
+  float f = 0.0f;
+  int i = 0;
+  float param = 0.0f;
+  f = 0.0f;
+  i = 0;
+  while (true) {
+    const int x_39 = i;
+    const int x_41 = asint(x_10[0].x);
+    if ((x_39 < x_41)) {
+    } else {
+      break;
+    }
+    {
+      param = float(i);
+      const float x_47 = func_f1_(param);
+      f = x_47;
+      i = (i + 1);
+    }
+  }
+  if ((f == 5.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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..df17a9a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int five;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_f1_(thread float* const x, thread float4* const tint_symbol_5) {
+  float const x_56 = *(x);
+  if ((x_56 > 5.0f)) {
+    float const x_61 = (*(tint_symbol_5)).x;
+    if ((x_61 < 0.5f)) {
+      discard_fragment();
+    } else {
+      float const x_67 = (*(tint_symbol_5)).y;
+      if ((x_67 < 0.5f)) {
+        discard_fragment();
+      }
+    }
+  }
+  float const x_71 = *(x);
+  return (x_71 + 1.0f);
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float f = 0.0f;
+  int i = 0;
+  float param = 0.0f;
+  f = 0.0f;
+  i = 0;
+  while (true) {
+    int const x_39 = i;
+    int const x_41 = x_10.five;
+    if ((x_39 < x_41)) {
+    } else {
+      break;
+    }
+    {
+      int const x_45 = i;
+      param = float(x_45);
+      float const x_47 = func_f1_(&(param), tint_symbol_6);
+      f = x_47;
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  float const x_50 = f;
+  if ((x_50 == 5.0f)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_10, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b497a16
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,169 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 98
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "five"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_f1_ "func_f1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %float %_ptr_Function_float
+    %float_5 = OpConstant %float 5
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_0_5 = OpConstant %float 0.5
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+         %47 = OpTypeFunction %void
+         %52 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %55 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+         %83 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %84 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %85 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %float None %15
+          %x = OpFunctionParameter %_ptr_Function_float
+         %19 = OpLabel
+         %21 = OpLoad %float %x
+         %23 = OpFOrdGreaterThan %bool %21 %float_5
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %25
+         %26 = OpLabel
+         %30 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %31 = OpLoad %float %30
+         %33 = OpFOrdLessThan %bool %31 %float_0_5
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %36
+         %35 = OpLabel
+               OpKill
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdLessThan %bool %39 %float_0_5
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpKill
+         %41 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %25
+         %25 = OpLabel
+         %44 = OpLoad %float %x
+         %46 = OpFAdd %float %44 %float_1
+               OpReturnValue %46
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %47
+         %50 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %52
+          %i = OpVariable %_ptr_Function_int Function %55
+      %param = OpVariable %_ptr_Function_float Function %52
+               OpStore %f %float_0
+               OpStore %i %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %66 = OpLoad %int %65
+         %67 = OpSLessThan %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %60
+         %68 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+         %71 = OpLoad %int %i
+         %72 = OpConvertSToF %float %71
+               OpStore %param %72
+         %73 = OpFunctionCall %float %func_f1_ %param
+               OpStore %f %73
+         %75 = OpLoad %int %i
+         %77 = OpIAdd %int %75 %int_1
+               OpStore %i %77
+               OpBranch %59
+         %60 = OpLabel
+         %78 = OpLoad %float %f
+         %79 = OpFOrdEqual %bool %78 %float_5
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpStore %x_GLF_color %83
+               OpBranch %80
+         %82 = OpLabel
+               OpStore %x_GLF_color %84
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %85
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %89 = OpLabel
+         %90 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %47
+         %92 = OpLabel
+         %93 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %93
+         %94 = OpFunctionCall %void %main_1
+         %96 = OpLoad %v4float %x_GLF_color
+         %97 = OpCompositeConstruct %main_out %96
+         %95 = OpFunctionCall %void %tint_symbol_3 %97
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d25c0e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,71 @@
+[[block]]
+struct buf0 {
+  five : i32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_f1_(x : ptr<function, f32>) -> f32 {
+  let x_56 : f32 = *(x);
+  if ((x_56 > 5.0)) {
+    let x_61 : f32 = gl_FragCoord.x;
+    if ((x_61 < 0.5)) {
+      discard;
+    } else {
+      let x_67 : f32 = gl_FragCoord.y;
+      if ((x_67 < 0.5)) {
+        discard;
+      }
+    }
+  }
+  let x_71 : f32 = *(x);
+  return (x_71 + 1.0);
+}
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var param : f32;
+  f = 0.0;
+  i = 0;
+  loop {
+    let x_39 : i32 = i;
+    let x_41 : i32 = x_10.five;
+    if ((x_39 < x_41)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_45 : i32 = i;
+      param = f32(x_45);
+      let x_47 : f32 = func_f1_(&(param));
+      f = x_47;
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : f32 = f;
+  if ((x_50 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl
new file mode 100644
index 0000000..d25c0e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl
@@ -0,0 +1,71 @@
+[[block]]
+struct buf0 {
+  five : i32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_f1_(x : ptr<function, f32>) -> f32 {
+  let x_56 : f32 = *(x);
+  if ((x_56 > 5.0)) {
+    let x_61 : f32 = gl_FragCoord.x;
+    if ((x_61 < 0.5)) {
+      discard;
+    } else {
+      let x_67 : f32 = gl_FragCoord.y;
+      if ((x_67 < 0.5)) {
+        discard;
+      }
+    }
+  }
+  let x_71 : f32 = *(x);
+  return (x_71 + 1.0);
+}
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var param : f32;
+  f = 0.0;
+  i = 0;
+  loop {
+    let x_39 : i32 = i;
+    let x_41 : i32 = x_10.five;
+    if ((x_39 < x_41)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_45 : i32 = i;
+      param = f32(x_45);
+      let x_47 : f32 = func_f1_(&(param));
+      f = x_47;
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : f32 = f;
+  if ((x_50 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..279a0dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,69 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_f1_(inout float x) {
+  const float x_56 = x;
+  if ((x_56 > 5.0f)) {
+    const float x_61 = gl_FragCoord.x;
+    if ((x_61 < 0.5f)) {
+      discard;
+    } else {
+      const float x_67 = gl_FragCoord.y;
+      if ((x_67 < 0.5f)) {
+        discard;
+      }
+    }
+  }
+  const float x_71 = x;
+  return (x_71 + 1.0f);
+}
+
+void main_1() {
+  float f = 0.0f;
+  int i = 0;
+  float param = 0.0f;
+  f = 0.0f;
+  i = 0;
+  while (true) {
+    const int x_39 = i;
+    const int x_41 = asint(x_10[0].x);
+    if ((x_39 < x_41)) {
+    } else {
+      break;
+    }
+    {
+      param = float(i);
+      const float x_47 = func_f1_(param);
+      f = x_47;
+      i = (i + 1);
+    }
+  }
+  if ((f == 5.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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..df17a9a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int five;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_f1_(thread float* const x, thread float4* const tint_symbol_5) {
+  float const x_56 = *(x);
+  if ((x_56 > 5.0f)) {
+    float const x_61 = (*(tint_symbol_5)).x;
+    if ((x_61 < 0.5f)) {
+      discard_fragment();
+    } else {
+      float const x_67 = (*(tint_symbol_5)).y;
+      if ((x_67 < 0.5f)) {
+        discard_fragment();
+      }
+    }
+  }
+  float const x_71 = *(x);
+  return (x_71 + 1.0f);
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float f = 0.0f;
+  int i = 0;
+  float param = 0.0f;
+  f = 0.0f;
+  i = 0;
+  while (true) {
+    int const x_39 = i;
+    int const x_41 = x_10.five;
+    if ((x_39 < x_41)) {
+    } else {
+      break;
+    }
+    {
+      int const x_45 = i;
+      param = float(x_45);
+      float const x_47 = func_f1_(&(param), tint_symbol_6);
+      f = x_47;
+      int const x_48 = i;
+      i = (x_48 + 1);
+    }
+  }
+  float const x_50 = f;
+  if ((x_50 == 5.0f)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_10, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b497a16
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,169 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 98
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "five"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_f1_ "func_f1_"
+               OpName %x "x"
+               OpName %main_1 "main_1"
+               OpName %f "f"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %float %_ptr_Function_float
+    %float_5 = OpConstant %float 5
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_0_5 = OpConstant %float 0.5
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+         %47 = OpTypeFunction %void
+         %52 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %55 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+         %83 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %84 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %85 = OpTypeFunction %void %main_out
+   %func_f1_ = OpFunction %float None %15
+          %x = OpFunctionParameter %_ptr_Function_float
+         %19 = OpLabel
+         %21 = OpLoad %float %x
+         %23 = OpFOrdGreaterThan %bool %21 %float_5
+               OpSelectionMerge %25 None
+               OpBranchConditional %23 %26 %25
+         %26 = OpLabel
+         %30 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %31 = OpLoad %float %30
+         %33 = OpFOrdLessThan %bool %31 %float_0_5
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %36
+         %35 = OpLabel
+               OpKill
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdLessThan %bool %39 %float_0_5
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpKill
+         %41 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %25
+         %25 = OpLabel
+         %44 = OpLoad %float %x
+         %46 = OpFAdd %float %44 %float_1
+               OpReturnValue %46
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %47
+         %50 = OpLabel
+          %f = OpVariable %_ptr_Function_float Function %52
+          %i = OpVariable %_ptr_Function_int Function %55
+      %param = OpVariable %_ptr_Function_float Function %52
+               OpStore %f %float_0
+               OpStore %i %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Uniform_int %x_10 %uint_0
+         %66 = OpLoad %int %65
+         %67 = OpSLessThan %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %60
+         %68 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+         %71 = OpLoad %int %i
+         %72 = OpConvertSToF %float %71
+               OpStore %param %72
+         %73 = OpFunctionCall %float %func_f1_ %param
+               OpStore %f %73
+         %75 = OpLoad %int %i
+         %77 = OpIAdd %int %75 %int_1
+               OpStore %i %77
+               OpBranch %59
+         %60 = OpLabel
+         %78 = OpLoad %float %f
+         %79 = OpFOrdEqual %bool %78 %float_5
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpStore %x_GLF_color %83
+               OpBranch %80
+         %82 = OpLabel
+               OpStore %x_GLF_color %84
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %85
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %89 = OpLabel
+         %90 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %90
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %47
+         %92 = OpLabel
+         %93 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %93
+         %94 = OpFunctionCall %void %main_1
+         %96 = OpLoad %v4float %x_GLF_color
+         %97 = OpCompositeConstruct %main_out %96
+         %95 = OpFunctionCall %void %tint_symbol_3 %97
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d25c0e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-wrap-op-kill-two-branches/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,71 @@
+[[block]]
+struct buf0 {
+  five : i32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_f1_(x : ptr<function, f32>) -> f32 {
+  let x_56 : f32 = *(x);
+  if ((x_56 > 5.0)) {
+    let x_61 : f32 = gl_FragCoord.x;
+    if ((x_61 < 0.5)) {
+      discard;
+    } else {
+      let x_67 : f32 = gl_FragCoord.y;
+      if ((x_67 < 0.5)) {
+        discard;
+      }
+    }
+  }
+  let x_71 : f32 = *(x);
+  return (x_71 + 1.0);
+}
+
+fn main_1() {
+  var f : f32;
+  var i : i32;
+  var param : f32;
+  f = 0.0;
+  i = 0;
+  loop {
+    let x_39 : i32 = i;
+    let x_41 : i32 = x_10.five;
+    if ((x_39 < x_41)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_45 : i32 = i;
+      param = f32(x_45);
+      let x_47 : f32 = func_f1_(&(param));
+      f = x_47;
+      let x_48 : i32 = i;
+      i = (x_48 + 1);
+    }
+  }
+  let x_50 : f32 = f;
+  if ((x_50 == 5.0)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm
new file mode 100644
index 0000000..97dd177
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm
@@ -0,0 +1,112 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %m32 "m32"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %sums "sums"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat3v2float = OpTypeMatrix %v2float 3
+%_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+      %int_3 = OpConstant %int 3
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+      %int_2 = OpConstant %int 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %37 = OpConstantComposite %v2float %float_0 %float_0
+       %main = OpFunction %void None %13
+         %38 = OpLabel
+        %m32 = OpVariable %_ptr_Function_mat3v2float Function
+       %sums = OpVariable %_ptr_Function__arr_float_uint_3 Function
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpCompositeConstruct %v2float %40 %float_0
+         %42 = OpCompositeConstruct %v2float %float_0 %40
+         %43 = OpCompositeConstruct %mat3v2float %41 %42 %37
+               OpStore %m32 %43
+         %44 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %45 = OpLoad %int %44
+         %46 = OpIEqual %bool %45 %int_1
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Function_float %m32 %int_3 %45
+               OpStore %49 %40
+               OpBranch %47
+         %47 = OpLabel
+         %50 = OpCompositeConstruct %_arr_float_uint_3 %40 %40 %40
+               OpStore %sums %50
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpPhi %int %45 %47 %53 %54
+         %55 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %56 = OpLoad %int %55
+         %57 = OpSLessThan %bool %52 %56
+               OpLoopMerge %58 %54 None
+               OpBranchConditional %57 %54 %58
+         %54 = OpLabel
+         %59 = OpAccessChain %_ptr_Function_float %m32 %52 %45
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Function_float %sums %56
+         %62 = OpLoad %float %61
+         %63 = OpFAdd %float %62 %60
+               OpStore %61 %63
+         %53 = OpIAdd %int %52 %int_1
+               OpBranch %51
+         %58 = OpLabel
+         %64 = OpAccessChain %_ptr_Function_float %sums %45
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %67 = OpLoad %float %66
+         %68 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Function_float %sums %69
+         %71 = OpLoad %float %70
+         %72 = OpCompositeConstruct %v4float %65 %67 %67 %71
+               OpStore %_GLF_color %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.hlsl
new file mode 100755
index 0000000..db312d4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.hlsl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float3x2 m32 = float3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float sums[3] = (float[3])0;
+  int x_52_phi = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  m32 = float3x2(float2(x_40, 0.0f), float2(0.0f, x_40), float2(0.0f, 0.0f));
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_45 == 1)) {
+    set_float2(m32[3], x_45, x_40);
+  }
+  const float tint_symbol_4[3] = {x_40, x_40, x_40};
+  sums = tint_symbol_4;
+  x_52_phi = x_45;
+  while (true) {
+    int x_53 = 0;
+    const int x_52 = x_52_phi;
+    const int x_56 = asint(x_8[2].x);
+    if ((x_52 < x_56)) {
+    } else {
+      break;
+    }
+    {
+      const float x_60 = m32[x_52][x_45];
+      const int x_61_save = x_56;
+      const float x_62 = sums[x_61_save];
+      sums[x_61_save] = (x_62 + x_60);
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  const float x_65 = sums[x_45];
+  const float x_67 = asfloat(x_6[1].x);
+  const int x_69 = asint(x_8[1].x);
+  const float x_71 = sums[x_69];
+  x_GLF_color = float4(x_65, x_67, x_67, x_71);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
+T:\tmp\u93g.0:23:20: error: matrix row index '3' is out of bounds
+    set_float2(m32[3], x_45, x_40);
+                   ^
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.msl
new file mode 100644
index 0000000..852c328
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_5) {
+  float3x2 m32 = float3x2(0.0f);
+  tint_array_wrapper_2 sums = {};
+  int x_52_phi = 0;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  m32 = float3x2(float2(x_40, 0.0f), float2(0.0f, x_40), float2(0.0f, 0.0f));
+  int const x_45 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_45 == 1)) {
+    m32[3][x_45] = x_40;
+  }
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_40, x_40, x_40}};
+  sums = tint_symbol_3;
+  x_52_phi = x_45;
+  while (true) {
+    int x_53 = 0;
+    int const x_52 = x_52_phi;
+    int const x_56 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_52 < x_56)) {
+    } else {
+      break;
+    }
+    {
+      float const x_60 = m32[x_52][x_45];
+      int const x_61_save = x_56;
+      float const x_62 = sums.arr[x_61_save];
+      sums.arr[x_61_save] = (x_62 + x_60);
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  float const x_65 = sums.arr[x_45];
+  float const x_67 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  int const x_69 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  float const x_71 = sums.arr[x_69];
+  *(tint_symbol_5) = float4(x_65, x_67, x_67, x_71);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..47ebb6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.spvasm
@@ -0,0 +1,168 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 100
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m32 "m32"
+               OpName %sums "sums"
+               OpName %x_52_phi "x_52_phi"
+               OpName %x_53 "x_53"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat3v2float = OpTypeMatrix %v2float 3
+%_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float
+         %28 = OpConstantNull %mat3v2float
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+         %32 = OpConstantNull %_arr_float_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+         %44 = OpConstantComposite %v2float %float_0 %float_0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+        %m32 = OpVariable %_ptr_Function_mat3v2float Function %28
+       %sums = OpVariable %_ptr_Function__arr_float_uint_3 Function %32
+   %x_52_phi = OpVariable %_ptr_Function_int Function %35
+       %x_53 = OpVariable %_ptr_Function_int Function %35
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %40 = OpLoad %float %39
+         %42 = OpCompositeConstruct %v2float %40 %float_0
+         %43 = OpCompositeConstruct %v2float %float_0 %40
+         %45 = OpCompositeConstruct %mat3v2float %42 %43 %44
+               OpStore %m32 %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %50 = OpIEqual %bool %48 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %52
+         %53 = OpLabel
+         %56 = OpAccessChain %_ptr_Function_float %m32 %int_3 %48
+               OpStore %56 %40
+               OpBranch %52
+         %52 = OpLabel
+         %57 = OpCompositeConstruct %_arr_float_uint_3 %40 %40 %40
+               OpStore %sums %57
+               OpStore %x_52_phi %48
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %63 = OpLoad %int %x_52_phi
+         %65 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpSLessThan %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %59
+         %68 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+         %71 = OpAccessChain %_ptr_Function_float %m32 %63 %48
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Function_float %sums %66
+         %74 = OpLoad %float %73
+         %75 = OpAccessChain %_ptr_Function_float %sums %66
+         %76 = OpFAdd %float %74 %72
+               OpStore %75 %76
+         %77 = OpIAdd %int %63 %int_1
+               OpStore %x_53 %77
+         %78 = OpLoad %int %x_53
+               OpStore %x_52_phi %78
+               OpBranch %58
+         %59 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_float %sums %48
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Function_float %sums %84
+         %86 = OpLoad %float %85
+         %87 = OpCompositeConstruct %v4float %80 %82 %82 %86
+               OpStore %x_GLF_color %87
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %88
+%tint_symbol = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %95 = OpLabel
+         %96 = OpFunctionCall %void %main_1
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpCompositeConstruct %main_out %98
+         %97 = OpFunctionCall %void %tint_symbol_2 %99
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..712a69e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.wgsl
@@ -0,0 +1,68 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m32 : mat3x2<f32>;
+  var sums : array<f32, 3>;
+  var x_52_phi : i32;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m32 = mat3x2<f32>(vec2<f32>(x_40, 0.0), vec2<f32>(0.0, x_40), vec2<f32>(0.0, 0.0));
+  let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_45 == 1)) {
+    m32[3][x_45] = x_40;
+  }
+  sums = array<f32, 3>(x_40, x_40, x_40);
+  x_52_phi = x_45;
+  loop {
+    var x_53 : i32;
+    let x_52 : i32 = x_52_phi;
+    let x_56 : i32 = x_8.x_GLF_uniform_int_values[2];
+    if ((x_52 < x_56)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_60 : f32 = m32[x_52][x_45];
+      let x_61 : ptr<function, f32> = &(sums[x_56]);
+      let x_62 : f32 = *(x_61);
+      *(x_61) = (x_62 + x_60);
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  let x_65 : f32 = sums[x_45];
+  let x_67 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_69 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_71 : f32 = sums[x_69];
+  x_GLF_color = vec4<f32>(x_65, x_67, x_67, x_71);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
new file mode 100644
index 0000000..712a69e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
@@ -0,0 +1,68 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m32 : mat3x2<f32>;
+  var sums : array<f32, 3>;
+  var x_52_phi : i32;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m32 = mat3x2<f32>(vec2<f32>(x_40, 0.0), vec2<f32>(0.0, x_40), vec2<f32>(0.0, 0.0));
+  let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_45 == 1)) {
+    m32[3][x_45] = x_40;
+  }
+  sums = array<f32, 3>(x_40, x_40, x_40);
+  x_52_phi = x_45;
+  loop {
+    var x_53 : i32;
+    let x_52 : i32 = x_52_phi;
+    let x_56 : i32 = x_8.x_GLF_uniform_int_values[2];
+    if ((x_52 < x_56)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_60 : f32 = m32[x_52][x_45];
+      let x_61 : ptr<function, f32> = &(sums[x_56]);
+      let x_62 : f32 = *(x_61);
+      *(x_61) = (x_62 + x_60);
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  let x_65 : f32 = sums[x_45];
+  let x_67 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_69 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_71 : f32 = sums[x_69];
+  x_GLF_color = vec4<f32>(x_65, x_67, x_67, x_71);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.hlsl
new file mode 100755
index 0000000..3ba9bc4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.hlsl
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[3];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float3x2 m32 = float3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  float sums[3] = (float[3])0;
+  int x_52_phi = 0;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_6[scalar_offset / 4][scalar_offset % 4]);
+  m32 = float3x2(float2(x_40, 0.0f), float2(0.0f, x_40), float2(0.0f, 0.0f));
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  if ((x_45 == 1)) {
+    set_float2(m32[3], x_45, x_40);
+  }
+  const float tint_symbol_4[3] = {x_40, x_40, x_40};
+  sums = tint_symbol_4;
+  x_52_phi = x_45;
+  while (true) {
+    int x_53 = 0;
+    const int x_52 = x_52_phi;
+    const int x_56 = asint(x_8[2].x);
+    if ((x_52 < x_56)) {
+    } else {
+      break;
+    }
+    {
+      const float x_60 = m32[x_52][x_45];
+      const int x_61_save = x_56;
+      const float x_62 = sums[x_61_save];
+      sums[x_61_save] = (x_62 + x_60);
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  const float x_65 = sums[x_45];
+  const float x_67 = asfloat(x_6[1].x);
+  const int x_69 = asint(x_8[1].x);
+  const float x_71 = sums[x_69];
+  x_GLF_color = float4(x_65, x_67, x_67, x_71);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
+T:\tmp\uffo.0:23:20: error: matrix row index '3' is out of bounds
+    set_float2(m32[3], x_45, x_40);
+                   ^
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.msl
new file mode 100644
index 0000000..852c328
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[3];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_8, thread float4* const tint_symbol_5) {
+  float3x2 m32 = float3x2(0.0f);
+  tint_array_wrapper_2 sums = {};
+  int x_52_phi = 0;
+  float const x_40 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  m32 = float3x2(float2(x_40, 0.0f), float2(0.0f, x_40), float2(0.0f, 0.0f));
+  int const x_45 = x_8.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_45 == 1)) {
+    m32[3][x_45] = x_40;
+  }
+  tint_array_wrapper_2 const tint_symbol_3 = {.arr={x_40, x_40, x_40}};
+  sums = tint_symbol_3;
+  x_52_phi = x_45;
+  while (true) {
+    int x_53 = 0;
+    int const x_52 = x_52_phi;
+    int const x_56 = x_8.x_GLF_uniform_int_values.arr[2].el;
+    if ((x_52 < x_56)) {
+    } else {
+      break;
+    }
+    {
+      float const x_60 = m32[x_52][x_45];
+      int const x_61_save = x_56;
+      float const x_62 = sums.arr[x_61_save];
+      sums.arr[x_61_save] = (x_62 + x_60);
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  float const x_65 = sums.arr[x_45];
+  float const x_67 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  int const x_69 = x_8.x_GLF_uniform_int_values.arr[1].el;
+  float const x_71 = sums.arr[x_69];
+  *(tint_symbol_5) = float4(x_65, x_67, x_67, x_71);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..47ebb6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.spvasm
@@ -0,0 +1,168 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 100
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m32 "m32"
+               OpName %sums "sums"
+               OpName %x_52_phi "x_52_phi"
+               OpName %x_53 "x_53"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_3 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_3 = OpConstant %uint 3
+%_arr_int_uint_3 = OpTypeArray %int %uint_3
+       %buf0 = OpTypeStruct %_arr_int_uint_3
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat3v2float = OpTypeMatrix %v2float 3
+%_ptr_Function_mat3v2float = OpTypePointer Function %mat3v2float
+         %28 = OpConstantNull %mat3v2float
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+%_ptr_Function__arr_float_uint_3 = OpTypePointer Function %_arr_float_uint_3
+         %32 = OpConstantNull %_arr_float_uint_3
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+         %44 = OpConstantComposite %v2float %float_0 %float_0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %88 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+        %m32 = OpVariable %_ptr_Function_mat3v2float Function %28
+       %sums = OpVariable %_ptr_Function__arr_float_uint_3 Function %32
+   %x_52_phi = OpVariable %_ptr_Function_int Function %35
+       %x_53 = OpVariable %_ptr_Function_int Function %35
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %40 = OpLoad %float %39
+         %42 = OpCompositeConstruct %v2float %40 %float_0
+         %43 = OpCompositeConstruct %v2float %float_0 %40
+         %45 = OpCompositeConstruct %mat3v2float %42 %43 %44
+               OpStore %m32 %45
+         %47 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_0
+         %48 = OpLoad %int %47
+         %50 = OpIEqual %bool %48 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %52
+         %53 = OpLabel
+         %56 = OpAccessChain %_ptr_Function_float %m32 %int_3 %48
+               OpStore %56 %40
+               OpBranch %52
+         %52 = OpLabel
+         %57 = OpCompositeConstruct %_arr_float_uint_3 %40 %40 %40
+               OpStore %sums %57
+               OpStore %x_52_phi %48
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %63 = OpLoad %int %x_52_phi
+         %65 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_2
+         %66 = OpLoad %int %65
+         %67 = OpSLessThan %bool %63 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %59
+         %68 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+         %71 = OpAccessChain %_ptr_Function_float %m32 %63 %48
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Function_float %sums %66
+         %74 = OpLoad %float %73
+         %75 = OpAccessChain %_ptr_Function_float %sums %66
+         %76 = OpFAdd %float %74 %72
+               OpStore %75 %76
+         %77 = OpIAdd %int %63 %int_1
+               OpStore %x_53 %77
+         %78 = OpLoad %int %x_53
+               OpStore %x_52_phi %78
+               OpBranch %58
+         %59 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_float %sums %48
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_8 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Function_float %sums %84
+         %86 = OpLoad %float %85
+         %87 = OpCompositeConstruct %v4float %80 %82 %82 %86
+               OpStore %x_GLF_color %87
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %88
+%tint_symbol = OpFunctionParameter %main_out
+         %92 = OpLabel
+         %93 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %93
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %95 = OpLabel
+         %96 = OpFunctionCall %void %main_1
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpCompositeConstruct %main_out %98
+         %97 = OpFunctionCall %void %tint_symbol_2 %99
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..712a69e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.wgsl
@@ -0,0 +1,68 @@
+type Arr = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 3>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m32 : mat3x2<f32>;
+  var sums : array<f32, 3>;
+  var x_52_phi : i32;
+  let x_40 : f32 = x_6.x_GLF_uniform_float_values[0];
+  m32 = mat3x2<f32>(vec2<f32>(x_40, 0.0), vec2<f32>(0.0, x_40), vec2<f32>(0.0, 0.0));
+  let x_45 : i32 = x_8.x_GLF_uniform_int_values[0];
+  if ((x_45 == 1)) {
+    m32[3][x_45] = x_40;
+  }
+  sums = array<f32, 3>(x_40, x_40, x_40);
+  x_52_phi = x_45;
+  loop {
+    var x_53 : i32;
+    let x_52 : i32 = x_52_phi;
+    let x_56 : i32 = x_8.x_GLF_uniform_int_values[2];
+    if ((x_52 < x_56)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_60 : f32 = m32[x_52][x_45];
+      let x_61 : ptr<function, f32> = &(sums[x_56]);
+      let x_62 : f32 = *(x_61);
+      *(x_61) = (x_62 + x_60);
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  let x_65 : f32 = sums[x_45];
+  let x_67 : f32 = x_6.x_GLF_uniform_float_values[1];
+  let x_69 : i32 = x_8.x_GLF_uniform_int_values[1];
+  let x_71 : f32 = sums[x_69];
+  x_GLF_color = vec4<f32>(x_65, x_67, x_67, x_71);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm
new file mode 100644
index 0000000..a176ba5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm
@@ -0,0 +1,113 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v1 "v1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %int = OpTypeInt 32 1
+     %int_n1 = OpConstant %int -1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %v2int = OpTypeVector %int 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %12
+         %33 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %35 = OpLoad %int %34
+         %36 = OpCompositeConstruct %v2int %int_n1 %35
+         %37 = OpBitcast %v2float %36
+         %38 = OpExtInst %v2float %1 Cos %37
+         %39 = OpExtInst %v2float %1 Cos %38
+               OpStore %v1 %39
+         %40 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+         %41 = OpLoad %float %40
+         %42 = OpCompositeConstruct %v4float %41 %41 %41 %41
+               OpStore %_GLF_color %42
+         %43 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %44 = OpLoad %float %43
+         %45 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %46 = OpLoad %float %45
+         %47 = OpFOrdGreaterThan %bool %44 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %50 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %51 = OpLoad %float %50
+         %52 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_1
+         %53 = OpLoad %float %52
+         %54 = OpFOrdLessThan %bool %51 %53
+               OpBranch %48
+         %48 = OpLabel
+         %55 = OpPhi %bool %47 %33 %54 %49
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %60 = OpLoad %int %59
+         %61 = OpConvertSToF %float %60
+         %62 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %63 = OpLoad %int %62
+         %64 = OpConvertSToF %float %63
+         %65 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %66
+         %68 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpConvertSToF %float %69
+         %71 = OpCompositeConstruct %v4float %61 %64 %67 %70
+               OpStore %_GLF_color %71
+               OpBranch %56
+         %58 = OpLabel
+         %72 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpConvertSToF %float %73
+         %75 = OpCompositeConstruct %v4float %74 %74 %74 %74
+               OpStore %_GLF_color %75
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..bb3eeaf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,68 @@
+SKIP: FAILED
+
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var x_54 : bool;
+  var x_55_phi : bool;
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v1 = cos(cos(bitcast<vec2<f32>>(vec2<i32>(-1, x_35))));
+  let x_41 : f32 = v1.x;
+  x_GLF_color = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : f32 = v1.y;
+  let x_46 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_47 : bool = (x_44 > x_46);
+  x_55_phi = x_47;
+  if (x_47) {
+    let x_51 : f32 = v1.y;
+    let x_53 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_54 = (x_51 < x_53);
+    x_55_phi = x_54;
+  }
+  let x_55 : bool = x_55_phi;
+  if (x_55) {
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_60), f32(x_63), f32(x_66), f32(x_69));
+  } else {
+    let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_74 : f32 = f32(x_73);
+    x_GLF_color = vec4<f32>(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+Failed to generate: error: Unable to do bitcast to type __vec_2__f32
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4ef589f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  bool x_54 = false;
+  bool x_55_phi = false;
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  v1 = cos(cos(as_type<float2>(int2(-1, x_35))));
+  float const x_41 = v1.x;
+  *(tint_symbol_4) = float4(x_41, x_41, x_41, x_41);
+  float const x_44 = v1.y;
+  float const x_46 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_47 = (x_44 > x_46);
+  x_55_phi = x_47;
+  if (x_47) {
+    float const x_51 = v1.y;
+    float const x_53 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    x_54 = (x_51 < x_53);
+    x_55_phi = x_54;
+  }
+  bool const x_55 = x_55_phi;
+  if (x_55) {
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_66 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_69 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_60), float(x_63), float(x_66), float(x_69));
+  } else {
+    int const x_73 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_74 = float(x_73);
+    *(tint_symbol_4) = float4(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..43172e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,157 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 97
+; Schema: 0
+               OpCapability Shader
+         %38 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %x_54 "x_54"
+               OpName %x_55_phi "x_55_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %v2int = OpTypeVector %int 2
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %85 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %26
+       %x_54 = OpVariable %_ptr_Function_bool Function %30
+   %x_55_phi = OpVariable %_ptr_Function_bool Function %30
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %36 = OpLoad %int %35
+         %43 = OpCompositeConstruct %v2int %int_n1 %36
+         %40 = OpBitcast %v2float %43
+         %39 = OpExtInst %v2float %38 Cos %40
+         %37 = OpExtInst %v2float %38 Cos %39
+               OpStore %v1 %37
+         %45 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+         %46 = OpLoad %float %45
+         %47 = OpCompositeConstruct %v4float %46 %46 %46 %46
+               OpStore %x_GLF_color %47
+         %49 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdGreaterThan %bool %50 %53
+               OpStore %x_55_phi %54
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %58 = OpLoad %float %57
+         %60 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpFOrdLessThan %bool %58 %61
+               OpStore %x_54 %62
+         %63 = OpLoad %bool %x_54
+               OpStore %x_55_phi %63
+               OpBranch %55
+         %55 = OpLabel
+         %64 = OpLoad %bool %x_55_phi
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %69
+         %77 = OpConvertSToF %float %71
+         %78 = OpConvertSToF %float %73
+         %79 = OpConvertSToF %float %75
+         %80 = OpCompositeConstruct %v4float %76 %77 %78 %79
+               OpStore %x_GLF_color %80
+               OpBranch %65
+         %67 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %82
+         %84 = OpCompositeConstruct %v4float %83 %83 %83 %83
+               OpStore %x_GLF_color %84
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %85
+%tint_symbol = OpFunctionParameter %main_out
+         %89 = OpLabel
+         %90 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %90
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %92 = OpLabel
+         %93 = OpFunctionCall %void %main_1
+         %95 = OpLoad %v4float %x_GLF_color
+         %96 = OpCompositeConstruct %main_out %95
+         %94 = OpFunctionCall %void %tint_symbol_2 %96
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..5e5c216
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var x_54 : bool;
+  var x_55_phi : bool;
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v1 = cos(cos(bitcast<vec2<f32>>(vec2<i32>(-1, x_35))));
+  let x_41 : f32 = v1.x;
+  x_GLF_color = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : f32 = v1.y;
+  let x_46 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_47 : bool = (x_44 > x_46);
+  x_55_phi = x_47;
+  if (x_47) {
+    let x_51 : f32 = v1.y;
+    let x_53 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_54 = (x_51 < x_53);
+    x_55_phi = x_54;
+  }
+  let x_55 : bool = x_55_phi;
+  if (x_55) {
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_60), f32(x_63), f32(x_66), f32(x_69));
+  } else {
+    let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_74 : f32 = f32(x_73);
+    x_GLF_color = vec4<f32>(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
new file mode 100644
index 0000000..5e5c216
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var x_54 : bool;
+  var x_55_phi : bool;
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v1 = cos(cos(bitcast<vec2<f32>>(vec2<i32>(-1, x_35))));
+  let x_41 : f32 = v1.x;
+  x_GLF_color = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : f32 = v1.y;
+  let x_46 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_47 : bool = (x_44 > x_46);
+  x_55_phi = x_47;
+  if (x_47) {
+    let x_51 : f32 = v1.y;
+    let x_53 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_54 = (x_51 < x_53);
+    x_55_phi = x_54;
+  }
+  let x_55 : bool = x_55_phi;
+  if (x_55) {
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_60), f32(x_63), f32(x_66), f32(x_69));
+  } else {
+    let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_74 : f32 = f32(x_73);
+    x_GLF_color = vec4<f32>(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..bb3eeaf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,68 @@
+SKIP: FAILED
+
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var x_54 : bool;
+  var x_55_phi : bool;
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v1 = cos(cos(bitcast<vec2<f32>>(vec2<i32>(-1, x_35))));
+  let x_41 : f32 = v1.x;
+  x_GLF_color = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : f32 = v1.y;
+  let x_46 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_47 : bool = (x_44 > x_46);
+  x_55_phi = x_47;
+  if (x_47) {
+    let x_51 : f32 = v1.y;
+    let x_53 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_54 = (x_51 < x_53);
+    x_55_phi = x_54;
+  }
+  let x_55 : bool = x_55_phi;
+  if (x_55) {
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_60), f32(x_63), f32(x_66), f32(x_69));
+  } else {
+    let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_74 : f32 = f32(x_73);
+    x_GLF_color = vec4<f32>(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+Failed to generate: error: Unable to do bitcast to type __vec_2__f32
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4ef589f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, constant buf1& x_8, thread float4* const tint_symbol_4) {
+  float2 v1 = 0.0f;
+  bool x_54 = false;
+  bool x_55_phi = false;
+  int const x_35 = x_6.x_GLF_uniform_int_values.arr[0].el;
+  v1 = cos(cos(as_type<float2>(int2(-1, x_35))));
+  float const x_41 = v1.x;
+  *(tint_symbol_4) = float4(x_41, x_41, x_41, x_41);
+  float const x_44 = v1.y;
+  float const x_46 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_47 = (x_44 > x_46);
+  x_55_phi = x_47;
+  if (x_47) {
+    float const x_51 = v1.y;
+    float const x_53 = x_8.x_GLF_uniform_float_values.arr[1].el;
+    x_54 = (x_51 < x_53);
+    x_55_phi = x_54;
+  }
+  bool const x_55 = x_55_phi;
+  if (x_55) {
+    int const x_60 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    int const x_63 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_66 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    int const x_69 = x_6.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_60), float(x_63), float(x_66), float(x_69));
+  } else {
+    int const x_73 = x_6.x_GLF_uniform_int_values.arr[1].el;
+    float const x_74 = float(x_73);
+    *(tint_symbol_4) = float4(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]], constant buf1& x_8 [[buffer(1)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..43172e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,157 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 97
+; Schema: 0
+               OpCapability Shader
+         %38 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %v1 "v1"
+               OpName %x_54 "x_54"
+               OpName %x_55_phi "x_55_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 1
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+       %buf1 = OpTypeStruct %_arr_float_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_8 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %v2int = OpTypeVector %int 2
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %85 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %19
+         %22 = OpLabel
+         %v1 = OpVariable %_ptr_Function_v2float Function %26
+       %x_54 = OpVariable %_ptr_Function_bool Function %30
+   %x_55_phi = OpVariable %_ptr_Function_bool Function %30
+         %35 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %36 = OpLoad %int %35
+         %43 = OpCompositeConstruct %v2int %int_n1 %36
+         %40 = OpBitcast %v2float %43
+         %39 = OpExtInst %v2float %38 Cos %40
+         %37 = OpExtInst %v2float %38 Cos %39
+               OpStore %v1 %37
+         %45 = OpAccessChain %_ptr_Function_float %v1 %uint_0
+         %46 = OpLoad %float %45
+         %47 = OpCompositeConstruct %v4float %46 %46 %46 %46
+               OpStore %x_GLF_color %47
+         %49 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdGreaterThan %bool %50 %53
+               OpStore %x_55_phi %54
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Function_float %v1 %uint_1
+         %58 = OpLoad %float %57
+         %60 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_1
+         %61 = OpLoad %float %60
+         %62 = OpFOrdLessThan %bool %58 %61
+               OpStore %x_54 %62
+         %63 = OpLoad %bool %x_54
+               OpStore %x_55_phi %63
+               OpBranch %55
+         %55 = OpLabel
+         %64 = OpLoad %bool %x_55_phi
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %71 = OpLoad %int %70
+         %72 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %73 = OpLoad %int %72
+         %74 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_0
+         %75 = OpLoad %int %74
+         %76 = OpConvertSToF %float %69
+         %77 = OpConvertSToF %float %71
+         %78 = OpConvertSToF %float %73
+         %79 = OpConvertSToF %float %75
+         %80 = OpCompositeConstruct %v4float %76 %77 %78 %79
+               OpStore %x_GLF_color %80
+               OpBranch %65
+         %67 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_int %x_6 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpConvertSToF %float %82
+         %84 = OpCompositeConstruct %v4float %83 %83 %83 %83
+               OpStore %x_GLF_color %84
+               OpBranch %65
+         %65 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %85
+%tint_symbol = OpFunctionParameter %main_out
+         %89 = OpLabel
+         %90 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %90
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %19
+         %92 = OpLabel
+         %93 = OpFunctionCall %void %main_1
+         %95 = OpLoad %v4float %x_GLF_color
+         %96 = OpCompositeConstruct %main_out %95
+         %94 = OpFunctionCall %void %tint_symbol_2 %96
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..5e5c216
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,63 @@
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+
+fn main_1() {
+  var v1 : vec2<f32>;
+  var x_54 : bool;
+  var x_55_phi : bool;
+  let x_35 : i32 = x_6.x_GLF_uniform_int_values[0];
+  v1 = cos(cos(bitcast<vec2<f32>>(vec2<i32>(-1, x_35))));
+  let x_41 : f32 = v1.x;
+  x_GLF_color = vec4<f32>(x_41, x_41, x_41, x_41);
+  let x_44 : f32 = v1.y;
+  let x_46 : f32 = x_8.x_GLF_uniform_float_values[0];
+  let x_47 : bool = (x_44 > x_46);
+  x_55_phi = x_47;
+  if (x_47) {
+    let x_51 : f32 = v1.y;
+    let x_53 : f32 = x_8.x_GLF_uniform_float_values[1];
+    x_54 = (x_51 < x_53);
+    x_55_phi = x_54;
+  }
+  let x_55 : bool = x_55_phi;
+  if (x_55) {
+    let x_60 : i32 = x_6.x_GLF_uniform_int_values[0];
+    let x_63 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_66 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_69 : i32 = x_6.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_60), f32(x_63), f32(x_66), f32(x_69));
+  } else {
+    let x_73 : i32 = x_6.x_GLF_uniform_int_values[1];
+    let x_74 : f32 = f32(x_73);
+    x_GLF_color = vec4<f32>(x_74, x_74, x_74, x_74);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm
new file mode 100644
index 0000000..29dcd71
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm
@@ -0,0 +1,114 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %a "a"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_uint_values"
+               OpName %_ ""
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "_GLF_uniform_float_values"
+               OpName %__0 ""
+               OpName %b "b"
+               OpName %c "c"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__1 ""
+               OpDecorate %_arr_uint_uint_2 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 0
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+     %uint_2 = OpConstant %uint 2
+%_arr_uint_uint_2 = OpTypeArray %uint %uint_2
+       %buf1 = OpTypeStruct %_arr_uint_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf2 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__1 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %17
+         %36 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function
+          %b = OpVariable %_ptr_Function_float Function
+          %c = OpVariable %_ptr_Function_uint Function
+         %37 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 %int_0
+         %38 = OpLoad %uint %37
+         %39 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %int_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToU %uint %40
+         %42 = OpShiftRightLogical %uint %38 %41
+               OpStore %a %42
+         %43 = OpLoad %uint %a
+         %44 = OpBitcast %float %43
+               OpStore %b %44
+         %45 = OpLoad %float %b
+         %46 = OpBitcast %uint %45
+               OpStore %c %46
+         %47 = OpLoad %uint %c
+         %48 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 %int_0
+         %49 = OpLoad %uint %48
+         %50 = OpIEqual %bool %47 %49
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %55 = OpLoad %int %54
+         %56 = OpConvertSToF %float %55
+         %57 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpConvertSToF %float %58
+         %60 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+         %61 = OpLoad %int %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %56 %59 %62 %65
+               OpStore %_GLF_color %66
+               OpBranch %51
+         %53 = OpLabel
+         %67 = OpLoad %float %b
+         %68 = OpCompositeConstruct %v4float %67 %67 %67 %67
+               OpStore %_GLF_color %68
+               OpBranch %51
+         %51 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a94b9b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,53 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b2, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[2];
+};
+
+void main_1() {
+  uint a = 0u;
+  float b = 0.0f;
+  uint c = 0u;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint x_38 = x_6[scalar_offset / 4][scalar_offset % 4];
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = (x_38 >> uint(x_40));
+  b = asfloat(a);
+  c = asuint(b);
+  const uint x_47 = c;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const uint x_49 = x_6[scalar_offset_2 / 4][scalar_offset_2 % 4];
+  if ((x_47 == x_49)) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_12[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_58 = asint(x_12[1].x);
+    const int x_61 = asint(x_12[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_64 = asint(x_12[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    const float x_67 = b;
+    x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d120e27
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_uint_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf2& x_8, constant buf0& x_12, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float b = 0.0f;
+  uint c = 0u;
+  uint const x_38 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  float const x_40 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  a = (x_38 >> uint(x_40));
+  uint const x_43 = a;
+  b = as_type<float>(x_43);
+  float const x_45 = b;
+  c = as_type<uint>(x_45);
+  uint const x_47 = c;
+  uint const x_49 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  if ((x_47 == x_49)) {
+    int const x_55 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    int const x_58 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    float const x_67 = b;
+    *(tint_symbol_4) = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf2& x_8 [[buffer(2)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_12, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8b2693b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 86
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_uint_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_uint_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_uint_uint_2 = OpTypeArray %uint %uint_2
+       %buf1 = OpTypeStruct %_arr_uint_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf2 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_8 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %30 = OpConstantNull %uint
+%_ptr_Function_float = OpTypePointer Function %float
+         %33 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %24
+         %27 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %30
+          %b = OpVariable %_ptr_Function_float Function %33
+          %c = OpVariable %_ptr_Function_uint Function %30
+         %38 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %39 = OpLoad %uint %38
+         %41 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpConvertFToU %uint %42
+         %44 = OpShiftRightLogical %uint %39 %43
+               OpStore %a %44
+         %45 = OpLoad %uint %a
+         %46 = OpBitcast %float %45
+               OpStore %b %46
+         %47 = OpLoad %float %b
+         %48 = OpBitcast %uint %47
+               OpStore %c %48
+         %49 = OpLoad %uint %c
+         %50 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %51 = OpLoad %uint %50
+         %52 = OpIEqual %bool %49 %51
+               OpSelectionMerge %54 None
+               OpBranchConditional %52 %55 %56
+         %55 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %61 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %59
+         %68 = OpConvertSToF %float %62
+         %69 = OpConvertSToF %float %64
+         %70 = OpConvertSToF %float %66
+         %71 = OpCompositeConstruct %v4float %67 %68 %69 %70
+               OpStore %x_GLF_color %71
+               OpBranch %54
+         %56 = OpLabel
+         %72 = OpLoad %float %b
+         %73 = OpCompositeConstruct %v4float %72 %72 %72 %72
+               OpStore %x_GLF_color %73
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %74
+%tint_symbol = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %81 = OpLabel
+         %82 = OpFunctionCall %void %main_1
+         %84 = OpLoad %v4float %x_GLF_color
+         %85 = OpCompositeConstruct %main_out %84
+         %83 = OpFunctionCall %void %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..79c6767
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<u32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_uint_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_2;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+fn main_1() {
+  var a : u32;
+  var b : f32;
+  var c : u32;
+  let x_38 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  let x_40 : f32 = x_8.x_GLF_uniform_float_values[0];
+  a = (x_38 >> u32(x_40));
+  let x_43 : u32 = a;
+  b = bitcast<f32>(x_43);
+  let x_45 : f32 = b;
+  c = bitcast<u32>(x_45);
+  let x_47 : u32 = c;
+  let x_49 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  if ((x_47 == x_49)) {
+    let x_55 : i32 = x_12.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_12.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_67 : f32 = b;
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
new file mode 100644
index 0000000..79c6767
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<u32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_uint_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_2;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+fn main_1() {
+  var a : u32;
+  var b : f32;
+  var c : u32;
+  let x_38 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  let x_40 : f32 = x_8.x_GLF_uniform_float_values[0];
+  a = (x_38 >> u32(x_40));
+  let x_43 : u32 = a;
+  b = bitcast<f32>(x_43);
+  let x_45 : f32 = b;
+  c = bitcast<u32>(x_45);
+  let x_47 : u32 = c;
+  let x_49 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  if ((x_47 == x_49)) {
+    let x_55 : i32 = x_12.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_12.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_67 : f32 = b;
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a94b9b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,53 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[2];
+};
+cbuffer cbuffer_x_8 : register(b2, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_12 : register(b0, space0) {
+  uint4 x_12[2];
+};
+
+void main_1() {
+  uint a = 0u;
+  float b = 0.0f;
+  uint c = 0u;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint x_38 = x_6[scalar_offset / 4][scalar_offset % 4];
+  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const float x_40 = asfloat(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  a = (x_38 >> uint(x_40));
+  b = asfloat(a);
+  c = asuint(b);
+  const uint x_47 = c;
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const uint x_49 = x_6[scalar_offset_2 / 4][scalar_offset_2 % 4];
+  if ((x_47 == x_49)) {
+    const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+    const int x_55 = asint(x_12[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    const int x_58 = asint(x_12[1].x);
+    const int x_61 = asint(x_12[1].x);
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_64 = asint(x_12[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    x_GLF_color = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    const float x_67 = b;
+    x_GLF_color = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d120e27
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ uint el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_uint_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[1];
+};
+struct buf2 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_2 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_2[12];
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ tint_padded_array_element_2 arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_2 x_GLF_uniform_int_values;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf2& x_8, constant buf0& x_12, thread float4* const tint_symbol_4) {
+  uint a = 0u;
+  float b = 0.0f;
+  uint c = 0u;
+  uint const x_38 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  float const x_40 = x_8.x_GLF_uniform_float_values.arr[0].el;
+  a = (x_38 >> uint(x_40));
+  uint const x_43 = a;
+  b = as_type<float>(x_43);
+  float const x_45 = b;
+  c = as_type<uint>(x_45);
+  uint const x_47 = c;
+  uint const x_49 = x_6.x_GLF_uniform_uint_values.arr[0].el;
+  if ((x_47 == x_49)) {
+    int const x_55 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    int const x_58 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_12.x_GLF_uniform_int_values.arr[1].el;
+    int const x_64 = x_12.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_4) = float4(float(x_55), float(x_58), float(x_61), float(x_64));
+  } else {
+    float const x_67 = b;
+    *(tint_symbol_4) = float4(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf2& x_8 [[buffer(2)]], constant buf0& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_8, x_12, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8b2693b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,150 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 86
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_uint_values"
+               OpName %x_6 "x_6"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "x_GLF_uniform_float_values"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_12 "x_12"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_uint_uint_2 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_12 NonWritable
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_uint_uint_2 = OpTypeArray %uint %uint_2
+       %buf1 = OpTypeStruct %_arr_uint_uint_2
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+      %float = OpTypeFloat 32
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+       %buf2 = OpTypeStruct %_arr_float_uint_1
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %x_8 = OpVariable %_ptr_Uniform_buf2 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %16
+        %int = OpTypeInt 32 1
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_12 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %30 = OpConstantNull %uint
+%_ptr_Function_float = OpTypePointer Function %float
+         %33 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %24
+         %27 = OpLabel
+          %a = OpVariable %_ptr_Function_uint Function %30
+          %b = OpVariable %_ptr_Function_float Function %33
+          %c = OpVariable %_ptr_Function_uint Function %30
+         %38 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %39 = OpLoad %uint %38
+         %41 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0
+         %42 = OpLoad %float %41
+         %43 = OpConvertFToU %uint %42
+         %44 = OpShiftRightLogical %uint %39 %43
+               OpStore %a %44
+         %45 = OpLoad %uint %a
+         %46 = OpBitcast %float %45
+               OpStore %b %46
+         %47 = OpLoad %float %b
+         %48 = OpBitcast %uint %47
+               OpStore %c %48
+         %49 = OpLoad %uint %c
+         %50 = OpAccessChain %_ptr_Uniform_uint %x_6 %uint_0 %int_0
+         %51 = OpLoad %uint %50
+         %52 = OpIEqual %bool %49 %51
+               OpSelectionMerge %54 None
+               OpBranchConditional %52 %55 %56
+         %55 = OpLabel
+         %58 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+         %59 = OpLoad %int %58
+         %61 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_1
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Uniform_int %x_12 %uint_0 %int_0
+         %66 = OpLoad %int %65
+         %67 = OpConvertSToF %float %59
+         %68 = OpConvertSToF %float %62
+         %69 = OpConvertSToF %float %64
+         %70 = OpConvertSToF %float %66
+         %71 = OpCompositeConstruct %v4float %67 %68 %69 %70
+               OpStore %x_GLF_color %71
+               OpBranch %54
+         %56 = OpLabel
+         %72 = OpLoad %float %b
+         %73 = OpCompositeConstruct %v4float %72 %72 %72 %72
+               OpStore %x_GLF_color %73
+               OpBranch %54
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %74
+%tint_symbol = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %81 = OpLabel
+         %82 = OpFunctionCall %void %main_1
+         %84 = OpLoad %v4float %x_GLF_color
+         %85 = OpCompositeConstruct %main_out %84
+         %83 = OpFunctionCall %void %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..79c6767
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,65 @@
+type Arr = [[stride(16)]] array<u32, 2>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_uint_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<f32, 1>;
+
+[[block]]
+struct buf2 {
+  x_GLF_uniform_float_values : Arr_1;
+};
+
+type Arr_2 = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_2;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+
+fn main_1() {
+  var a : u32;
+  var b : f32;
+  var c : u32;
+  let x_38 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  let x_40 : f32 = x_8.x_GLF_uniform_float_values[0];
+  a = (x_38 >> u32(x_40));
+  let x_43 : u32 = a;
+  b = bitcast<f32>(x_43);
+  let x_45 : f32 = b;
+  c = bitcast<u32>(x_45);
+  let x_47 : u32 = c;
+  let x_49 : u32 = x_6.x_GLF_uniform_uint_values[0];
+  if ((x_47 == x_49)) {
+    let x_55 : i32 = x_12.x_GLF_uniform_int_values[0];
+    let x_58 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_12.x_GLF_uniform_int_values[1];
+    let x_64 : i32 = x_12.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_55), f32(x_58), f32(x_61), f32(x_64));
+  } else {
+    let x_67 : f32 = b;
+    x_GLF_color = vec4<f32>(x_67, x_67, x_67, x_67);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm
new file mode 100644
index 0000000..3fb84ce
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm
@@ -0,0 +1,187 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %A "A"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "_GLF_uniform_float_values"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %__0 ""
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+%int_n2147483648 = OpConstant %int -2147483648
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %14
+         %37 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_float_uint_2 Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Function_float %A %int_0
+               OpStore %40 %39
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+         %42 = OpLoad %float %41
+         %43 = OpAccessChain %_ptr_Function_float %A %int_1
+               OpStore %43 %42
+         %44 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %45 = OpLoad %int %44
+               OpStore %i %45
+               OpBranch %46
+         %46 = OpLabel
+               OpLoopMerge %47 %48 None
+               OpBranch %49
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_3
+         %52 = OpLoad %int %51
+         %53 = OpSLessThan %bool %50 %52
+               OpBranchConditional %53 %54 %47
+         %54 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %56 = OpLoad %int %55
+               OpStore %j %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %j
+         %62 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_2
+         %63 = OpLoad %int %62
+         %64 = OpSLessThan %bool %61 %63
+               OpBranchConditional %64 %65 %58
+         %65 = OpLabel
+         %66 = OpLoad %int %j
+               OpSelectionMerge %67 None
+               OpSwitch %66 %67 0 %68 1 %69
+         %68 = OpLabel
+         %70 = OpLoad %int %i
+         %71 = OpSLessThan %bool %int_n2147483648 %70
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpBranch %59
+         %72 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_2
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Function_float %A %74
+               OpStore %77 %76
+               OpBranch %67
+         %69 = OpLabel
+         %78 = OpLoad %int %i
+         %79 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Function_float %A %78
+               OpStore %81 %80
+               OpBranch %67
+         %67 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %82 = OpLoad %int %j
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %j %83
+               OpBranch %57
+         %58 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %i %85
+               OpBranch %46
+         %47 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Function_float %A %87
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+         %91 = OpLoad %float %90
+         %92 = OpFOrdEqual %bool %89 %91
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+         %96 = OpLoad %int %95
+         %97 = OpAccessChain %_ptr_Function_float %A %96
+         %98 = OpLoad %float %97
+         %99 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %100 = OpLoad %float %99
+        %101 = OpFOrdEqual %bool %98 %100
+               OpBranch %93
+         %93 = OpLabel
+        %102 = OpPhi %bool %92 %47 %101 %94
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %107 = OpLoad %int %106
+        %108 = OpConvertSToF %float %107
+        %109 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %110
+        %112 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_0
+        %113 = OpLoad %int %112
+        %114 = OpConvertSToF %float %113
+        %115 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpConvertSToF %float %116
+        %118 = OpCompositeConstruct %v4float %108 %111 %114 %117
+               OpStore %_GLF_color %118
+               OpBranch %103
+        %105 = OpLabel
+        %119 = OpAccessChain %_ptr_Uniform_int %__0 %int_0 %int_1
+        %120 = OpLoad %int %119
+        %121 = OpConvertSToF %float %120
+        %122 = OpCompositeConstruct %v4float %121 %121 %121 %121
+               OpStore %_GLF_color %122
+               OpBranch %103
+        %103 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d2685c7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,114 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float A[2] = (float[2])0;
+  int i = 0;
+  int j = 0;
+  bool x_101 = false;
+  bool x_102_phi = false;
+  const float x_39 = asfloat(x_6[1].x);
+  A[0] = x_39;
+  const float x_42 = asfloat(x_6[1].x);
+  A[1] = x_42;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_9[scalar_offset / 4][scalar_offset % 4]);
+  i = x_45;
+  while (true) {
+    const int x_50 = i;
+    const int x_52 = asint(x_9[3].x);
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    j = x_56;
+    while (true) {
+      const int x_61 = j;
+      const int x_63 = asint(x_9[2].x);
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      switch(j) {
+        case 1: {
+          const int x_78 = i;
+          const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+          const float x_80 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+          A[x_78] = x_80;
+          break;
+        }
+        case 0: {
+          if ((-2147483648 < i)) {
+            {
+              j = (j + 1);
+            }
+            continue;
+          }
+          const int x_74 = i;
+          const float x_76 = asfloat(x_6[2].x);
+          A[x_74] = x_76;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_87 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_89 = A[x_87];
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_91 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const bool x_92 = (x_89 == x_91);
+  x_102_phi = x_92;
+  if (x_92) {
+    const int x_96 = asint(x_9[1].x);
+    const float x_98 = A[x_96];
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_100 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_101 = (x_98 == x_100);
+    x_102_phi = x_101;
+  }
+  if (x_102_phi) {
+    const int x_107 = asint(x_9[1].x);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_110 = asint(x_9[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_113 = asint(x_9[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const int x_116 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    const int x_120 = asint(x_9[1].x);
+    const float x_121 = float(x_120);
+    x_GLF_color = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a7a8dbb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.msl
@@ -0,0 +1,132 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 A = {};
+  int i = 0;
+  int j = 0;
+  bool x_101 = false;
+  bool x_102_phi = false;
+  float const x_39 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  A.arr[0] = x_39;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  A.arr[1] = x_42;
+  int const x_45 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  i = x_45;
+  while (true) {
+    int const x_50 = i;
+    int const x_52 = x_9.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    int const x_56 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    j = x_56;
+    while (true) {
+      int const x_61 = j;
+      int const x_63 = x_9.x_GLF_uniform_int_values.arr[2].el;
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      int const x_66 = j;
+      switch(x_66) {
+        case 1: {
+          int const x_78 = i;
+          float const x_80 = x_6.x_GLF_uniform_float_values.arr[0].el;
+          A.arr[x_78] = x_80;
+          break;
+        }
+        case 0: {
+          int const x_70 = i;
+          if ((-2147483648 < x_70)) {
+            {
+              int const x_82 = j;
+              j = (x_82 + 1);
+            }
+            continue;
+          }
+          int const x_74 = i;
+          float const x_76 = x_6.x_GLF_uniform_float_values.arr[2].el;
+          A.arr[x_74] = x_76;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+      {
+        int const x_82 = j;
+        j = (x_82 + 1);
+      }
+    }
+    {
+      int const x_84 = i;
+      i = (x_84 + 1);
+    }
+  }
+  int const x_87 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  float const x_89 = A.arr[x_87];
+  float const x_91 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_92 = (x_89 == x_91);
+  x_102_phi = x_92;
+  if (x_92) {
+    int const x_96 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_98 = A.arr[x_96];
+    float const x_100 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    x_101 = (x_98 == x_100);
+    x_102_phi = x_101;
+  }
+  bool const x_102 = x_102_phi;
+  if (x_102) {
+    int const x_107 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_110 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_113 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_116 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    int const x_120 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_121 = float(x_120);
+    *(tint_symbol_4) = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9acf823
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,245 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 150
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %A "A"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %x_101 "x_101"
+               OpName %x_102_phi "x_102_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+         %28 = OpConstantNull %_arr_float_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+%int_n2147483648 = OpConstant %int -2147483648
+   %main_out = OpTypeStruct %v4float
+        %138 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_float_uint_2 Function %28
+          %i = OpVariable %_ptr_Function_int Function %31
+          %j = OpVariable %_ptr_Function_int Function %31
+      %x_101 = OpVariable %_ptr_Function_bool Function %36
+  %x_102_phi = OpVariable %_ptr_Function_bool Function %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %42 = OpLoad %float %41
+         %45 = OpAccessChain %_ptr_Function_float %A %int_0
+               OpStore %45 %42
+         %46 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Function_float %A %int_1
+               OpStore %48 %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %51 = OpLoad %int %50
+               OpStore %i %51
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_3
+         %59 = OpLoad %int %58
+         %60 = OpSLessThan %bool %56 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %53
+         %61 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %65 = OpLoad %int %64
+               OpStore %j %65
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %70 = OpLoad %int %j
+         %72 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %73 = OpLoad %int %72
+         %74 = OpSLessThan %bool %70 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %67
+         %75 = OpLabel
+         %78 = OpLoad %int %j
+               OpSelectionMerge %79 None
+               OpSwitch %78 %80 1 %81 0 %82
+         %81 = OpLabel
+         %83 = OpLoad %int %i
+         %84 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Function_float %A %83
+               OpStore %86 %85
+               OpBranch %79
+         %82 = OpLabel
+         %87 = OpLoad %int %i
+         %89 = OpSLessThan %bool %int_n2147483648 %87
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+               OpBranch %68
+         %90 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %94 = OpLoad %float %93
+         %95 = OpAccessChain %_ptr_Function_float %A %92
+               OpStore %95 %94
+               OpBranch %79
+         %80 = OpLabel
+               OpBranch %79
+         %79 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+         %96 = OpLoad %int %j
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %j %97
+               OpBranch %66
+         %67 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %98 = OpLoad %int %i
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %i %99
+               OpBranch %52
+         %53 = OpLabel
+        %100 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Function_float %A %101
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %105 = OpLoad %float %104
+        %106 = OpFOrdEqual %bool %103 %105
+               OpStore %x_102_phi %106
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Function_float %A %110
+        %112 = OpLoad %float %111
+        %113 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %114 = OpLoad %float %113
+        %115 = OpFOrdEqual %bool %112 %114
+               OpStore %x_101 %115
+        %116 = OpLoad %bool %x_101
+               OpStore %x_102_phi %116
+               OpBranch %107
+        %107 = OpLabel
+        %117 = OpLoad %bool %x_102_phi
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %120
+        %119 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %126 = OpLoad %int %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpConvertSToF %float %122
+        %130 = OpConvertSToF %float %124
+        %131 = OpConvertSToF %float %126
+        %132 = OpConvertSToF %float %128
+        %133 = OpCompositeConstruct %v4float %129 %130 %131 %132
+               OpStore %x_GLF_color %133
+               OpBranch %118
+        %120 = OpLabel
+        %134 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %135 = OpLoad %int %134
+        %136 = OpConvertSToF %float %135
+        %137 = OpCompositeConstruct %v4float %136 %136 %136 %136
+               OpStore %x_GLF_color %137
+               OpBranch %118
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %138
+%tint_symbol = OpFunctionParameter %main_out
+        %142 = OpLabel
+        %143 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %143
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %145 = OpLabel
+        %146 = OpFunctionCall %void %main_1
+        %148 = OpLoad %v4float %x_GLF_color
+        %149 = OpCompositeConstruct %main_out %148
+        %147 = OpFunctionCall %void %tint_symbol_2 %149
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e999646
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,116 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<f32, 2>;
+  var i : i32;
+  var j : i32;
+  var x_101 : bool;
+  var x_102_phi : bool;
+  let x_39 : f32 = x_6.x_GLF_uniform_float_values[1];
+  A[0] = x_39;
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[1];
+  A[1] = x_42;
+  let x_45 : i32 = x_9.x_GLF_uniform_int_values[0];
+  i = x_45;
+  loop {
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[3];
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = x_9.x_GLF_uniform_int_values[0];
+    j = x_56;
+    loop {
+      let x_61 : i32 = j;
+      let x_63 : i32 = x_9.x_GLF_uniform_int_values[2];
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      let x_66 : i32 = j;
+      switch(x_66) {
+        case 1: {
+          let x_78 : i32 = i;
+          let x_80 : f32 = x_6.x_GLF_uniform_float_values[0];
+          A[x_78] = x_80;
+        }
+        case 0: {
+          let x_70 : i32 = i;
+          if ((-2147483648 < x_70)) {
+            continue;
+          }
+          let x_74 : i32 = i;
+          let x_76 : f32 = x_6.x_GLF_uniform_float_values[2];
+          A[x_74] = x_76;
+        }
+        default: {
+        }
+      }
+
+      continuing {
+        let x_82 : i32 = j;
+        j = (x_82 + 1);
+      }
+    }
+
+    continuing {
+      let x_84 : i32 = i;
+      i = (x_84 + 1);
+    }
+  }
+  let x_87 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_89 : f32 = A[x_87];
+  let x_91 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_92 : bool = (x_89 == x_91);
+  x_102_phi = x_92;
+  if (x_92) {
+    let x_96 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_98 : f32 = A[x_96];
+    let x_100 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_101 = (x_98 == x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  if (x_102) {
+    let x_107 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_110 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_113 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_116 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_121 : f32 = f32(x_120);
+    x_GLF_color = vec4<f32>(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
new file mode 100644
index 0000000..e999646
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
@@ -0,0 +1,116 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<f32, 2>;
+  var i : i32;
+  var j : i32;
+  var x_101 : bool;
+  var x_102_phi : bool;
+  let x_39 : f32 = x_6.x_GLF_uniform_float_values[1];
+  A[0] = x_39;
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[1];
+  A[1] = x_42;
+  let x_45 : i32 = x_9.x_GLF_uniform_int_values[0];
+  i = x_45;
+  loop {
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[3];
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = x_9.x_GLF_uniform_int_values[0];
+    j = x_56;
+    loop {
+      let x_61 : i32 = j;
+      let x_63 : i32 = x_9.x_GLF_uniform_int_values[2];
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      let x_66 : i32 = j;
+      switch(x_66) {
+        case 1: {
+          let x_78 : i32 = i;
+          let x_80 : f32 = x_6.x_GLF_uniform_float_values[0];
+          A[x_78] = x_80;
+        }
+        case 0: {
+          let x_70 : i32 = i;
+          if ((-2147483648 < x_70)) {
+            continue;
+          }
+          let x_74 : i32 = i;
+          let x_76 : f32 = x_6.x_GLF_uniform_float_values[2];
+          A[x_74] = x_76;
+        }
+        default: {
+        }
+      }
+
+      continuing {
+        let x_82 : i32 = j;
+        j = (x_82 + 1);
+      }
+    }
+
+    continuing {
+      let x_84 : i32 = i;
+      i = (x_84 + 1);
+    }
+  }
+  let x_87 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_89 : f32 = A[x_87];
+  let x_91 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_92 : bool = (x_89 == x_91);
+  x_102_phi = x_92;
+  if (x_92) {
+    let x_96 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_98 : f32 = A[x_96];
+    let x_100 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_101 = (x_98 == x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  if (x_102) {
+    let x_107 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_110 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_113 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_116 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_121 : f32 = f32(x_120);
+    x_GLF_color = vec4<f32>(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d2685c7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,114 @@
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[3];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float A[2] = (float[2])0;
+  int i = 0;
+  int j = 0;
+  bool x_101 = false;
+  bool x_102_phi = false;
+  const float x_39 = asfloat(x_6[1].x);
+  A[0] = x_39;
+  const float x_42 = asfloat(x_6[1].x);
+  A[1] = x_42;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_45 = asint(x_9[scalar_offset / 4][scalar_offset % 4]);
+  i = x_45;
+  while (true) {
+    const int x_50 = i;
+    const int x_52 = asint(x_9[3].x);
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_56 = asint(x_9[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    j = x_56;
+    while (true) {
+      const int x_61 = j;
+      const int x_63 = asint(x_9[2].x);
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      switch(j) {
+        case 1: {
+          const int x_78 = i;
+          const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+          const float x_80 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+          A[x_78] = x_80;
+          break;
+        }
+        case 0: {
+          if ((-2147483648 < i)) {
+            {
+              j = (j + 1);
+            }
+            continue;
+          }
+          const int x_74 = i;
+          const float x_76 = asfloat(x_6[2].x);
+          A[x_74] = x_76;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+      {
+        j = (j + 1);
+      }
+    }
+    {
+      i = (i + 1);
+    }
+  }
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_87 = asint(x_9[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  const float x_89 = A[x_87];
+  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const float x_91 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  const bool x_92 = (x_89 == x_91);
+  x_102_phi = x_92;
+  if (x_92) {
+    const int x_96 = asint(x_9[1].x);
+    const float x_98 = A[x_96];
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const float x_100 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_101 = (x_98 == x_100);
+    x_102_phi = x_101;
+  }
+  if (x_102_phi) {
+    const int x_107 = asint(x_9[1].x);
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_110 = asint(x_9[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const int x_113 = asint(x_9[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+    const int x_116 = asint(x_9[1].x);
+    x_GLF_color = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    const int x_120 = asint(x_9[1].x);
+    const float x_121 = float(x_120);
+    x_GLF_color = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a7a8dbb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.msl
@@ -0,0 +1,132 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_padded_array_element {
+  /* 0x0000 */ float el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[3];
+};
+struct buf1 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_float_values;
+};
+struct tint_padded_array_element_1 {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad_1[12];
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ tint_padded_array_element_1 arr[4];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper_1 x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_2 {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf1& x_6, constant buf0& x_9, thread float4* const tint_symbol_4) {
+  tint_array_wrapper_2 A = {};
+  int i = 0;
+  int j = 0;
+  bool x_101 = false;
+  bool x_102_phi = false;
+  float const x_39 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  A.arr[0] = x_39;
+  float const x_42 = x_6.x_GLF_uniform_float_values.arr[1].el;
+  A.arr[1] = x_42;
+  int const x_45 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  i = x_45;
+  while (true) {
+    int const x_50 = i;
+    int const x_52 = x_9.x_GLF_uniform_int_values.arr[3].el;
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    int const x_56 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    j = x_56;
+    while (true) {
+      int const x_61 = j;
+      int const x_63 = x_9.x_GLF_uniform_int_values.arr[2].el;
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      int const x_66 = j;
+      switch(x_66) {
+        case 1: {
+          int const x_78 = i;
+          float const x_80 = x_6.x_GLF_uniform_float_values.arr[0].el;
+          A.arr[x_78] = x_80;
+          break;
+        }
+        case 0: {
+          int const x_70 = i;
+          if ((-2147483648 < x_70)) {
+            {
+              int const x_82 = j;
+              j = (x_82 + 1);
+            }
+            continue;
+          }
+          int const x_74 = i;
+          float const x_76 = x_6.x_GLF_uniform_float_values.arr[2].el;
+          A.arr[x_74] = x_76;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+      {
+        int const x_82 = j;
+        j = (x_82 + 1);
+      }
+    }
+    {
+      int const x_84 = i;
+      i = (x_84 + 1);
+    }
+  }
+  int const x_87 = x_9.x_GLF_uniform_int_values.arr[0].el;
+  float const x_89 = A.arr[x_87];
+  float const x_91 = x_6.x_GLF_uniform_float_values.arr[0].el;
+  bool const x_92 = (x_89 == x_91);
+  x_102_phi = x_92;
+  if (x_92) {
+    int const x_96 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_98 = A.arr[x_96];
+    float const x_100 = x_6.x_GLF_uniform_float_values.arr[0].el;
+    x_101 = (x_98 == x_100);
+    x_102_phi = x_101;
+  }
+  bool const x_102 = x_102_phi;
+  if (x_102) {
+    int const x_107 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    int const x_110 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_113 = x_9.x_GLF_uniform_int_values.arr[0].el;
+    int const x_116 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    *(tint_symbol_4) = float4(float(x_107), float(x_110), float(x_113), float(x_116));
+  } else {
+    int const x_120 = x_9.x_GLF_uniform_int_values.arr[1].el;
+    float const x_121 = float(x_120);
+    *(tint_symbol_4) = float4(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf1& x_6 [[buffer(1)]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9acf823
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,245 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 150
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "x_GLF_uniform_float_values"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %A "A"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %x_101 "x_101"
+               OpName %x_102_phi "x_102_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %_arr_float_uint_3 ArrayStride 16
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_4 ArrayStride 16
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
+       %buf1 = OpTypeStruct %_arr_float_uint_3
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+     %uint_4 = OpConstant %uint 4
+%_arr_int_uint_4 = OpTypeArray %int %uint_4
+       %buf0 = OpTypeStruct %_arr_int_uint_4
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+         %28 = OpConstantNull %_arr_float_uint_2
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+%int_n2147483648 = OpConstant %int -2147483648
+   %main_out = OpTypeStruct %v4float
+        %138 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_float_uint_2 Function %28
+          %i = OpVariable %_ptr_Function_int Function %31
+          %j = OpVariable %_ptr_Function_int Function %31
+      %x_101 = OpVariable %_ptr_Function_bool Function %36
+  %x_102_phi = OpVariable %_ptr_Function_bool Function %36
+         %41 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %42 = OpLoad %float %41
+         %45 = OpAccessChain %_ptr_Function_float %A %int_0
+               OpStore %45 %42
+         %46 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_1
+         %47 = OpLoad %float %46
+         %48 = OpAccessChain %_ptr_Function_float %A %int_1
+               OpStore %48 %47
+         %50 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %51 = OpLoad %int %50
+               OpStore %i %51
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_3
+         %59 = OpLoad %int %58
+         %60 = OpSLessThan %bool %56 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %53
+         %61 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+         %65 = OpLoad %int %64
+               OpStore %j %65
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %70 = OpLoad %int %j
+         %72 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_2
+         %73 = OpLoad %int %72
+         %74 = OpSLessThan %bool %70 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %67
+         %75 = OpLabel
+         %78 = OpLoad %int %j
+               OpSelectionMerge %79 None
+               OpSwitch %78 %80 1 %81 0 %82
+         %81 = OpLabel
+         %83 = OpLoad %int %i
+         %84 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Function_float %A %83
+               OpStore %86 %85
+               OpBranch %79
+         %82 = OpLabel
+         %87 = OpLoad %int %i
+         %89 = OpSLessThan %bool %int_n2147483648 %87
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+               OpBranch %68
+         %90 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_2
+         %94 = OpLoad %float %93
+         %95 = OpAccessChain %_ptr_Function_float %A %92
+               OpStore %95 %94
+               OpBranch %79
+         %80 = OpLabel
+               OpBranch %79
+         %79 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+         %96 = OpLoad %int %j
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %j %97
+               OpBranch %66
+         %67 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %98 = OpLoad %int %i
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %i %99
+               OpBranch %52
+         %53 = OpLabel
+        %100 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_Function_float %A %101
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %105 = OpLoad %float %104
+        %106 = OpFOrdEqual %bool %103 %105
+               OpStore %x_102_phi %106
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+        %109 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Function_float %A %110
+        %112 = OpLoad %float %111
+        %113 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %int_0
+        %114 = OpLoad %float %113
+        %115 = OpFOrdEqual %bool %112 %114
+               OpStore %x_101 %115
+        %116 = OpLoad %bool %x_101
+               OpStore %x_102_phi %116
+               OpBranch %107
+        %107 = OpLabel
+        %117 = OpLoad %bool %x_102_phi
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %120
+        %119 = OpLabel
+        %121 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %124 = OpLoad %int %123
+        %125 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_0
+        %126 = OpLoad %int %125
+        %127 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %128 = OpLoad %int %127
+        %129 = OpConvertSToF %float %122
+        %130 = OpConvertSToF %float %124
+        %131 = OpConvertSToF %float %126
+        %132 = OpConvertSToF %float %128
+        %133 = OpCompositeConstruct %v4float %129 %130 %131 %132
+               OpStore %x_GLF_color %133
+               OpBranch %118
+        %120 = OpLabel
+        %134 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0 %int_1
+        %135 = OpLoad %int %134
+        %136 = OpConvertSToF %float %135
+        %137 = OpCompositeConstruct %v4float %136 %136 %136 %136
+               OpStore %x_GLF_color %137
+               OpBranch %118
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %138
+%tint_symbol = OpFunctionParameter %main_out
+        %142 = OpLabel
+        %143 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %143
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+        %145 = OpLabel
+        %146 = OpFunctionCall %void %main_1
+        %148 = OpLoad %v4float %x_GLF_color
+        %149 = OpCompositeConstruct %main_out %148
+        %147 = OpFunctionCall %void %tint_symbol_2 %149
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e999646
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,116 @@
+type Arr = [[stride(16)]] array<f32, 3>;
+
+[[block]]
+struct buf1 {
+  x_GLF_uniform_float_values : Arr;
+};
+
+type Arr_1 = [[stride(16)]] array<i32, 4>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr_1;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<f32, 2>;
+  var i : i32;
+  var j : i32;
+  var x_101 : bool;
+  var x_102_phi : bool;
+  let x_39 : f32 = x_6.x_GLF_uniform_float_values[1];
+  A[0] = x_39;
+  let x_42 : f32 = x_6.x_GLF_uniform_float_values[1];
+  A[1] = x_42;
+  let x_45 : i32 = x_9.x_GLF_uniform_int_values[0];
+  i = x_45;
+  loop {
+    let x_50 : i32 = i;
+    let x_52 : i32 = x_9.x_GLF_uniform_int_values[3];
+    if ((x_50 < x_52)) {
+    } else {
+      break;
+    }
+    let x_56 : i32 = x_9.x_GLF_uniform_int_values[0];
+    j = x_56;
+    loop {
+      let x_61 : i32 = j;
+      let x_63 : i32 = x_9.x_GLF_uniform_int_values[2];
+      if ((x_61 < x_63)) {
+      } else {
+        break;
+      }
+      let x_66 : i32 = j;
+      switch(x_66) {
+        case 1: {
+          let x_78 : i32 = i;
+          let x_80 : f32 = x_6.x_GLF_uniform_float_values[0];
+          A[x_78] = x_80;
+        }
+        case 0: {
+          let x_70 : i32 = i;
+          if ((-2147483648 < x_70)) {
+            continue;
+          }
+          let x_74 : i32 = i;
+          let x_76 : f32 = x_6.x_GLF_uniform_float_values[2];
+          A[x_74] = x_76;
+        }
+        default: {
+        }
+      }
+
+      continuing {
+        let x_82 : i32 = j;
+        j = (x_82 + 1);
+      }
+    }
+
+    continuing {
+      let x_84 : i32 = i;
+      i = (x_84 + 1);
+    }
+  }
+  let x_87 : i32 = x_9.x_GLF_uniform_int_values[0];
+  let x_89 : f32 = A[x_87];
+  let x_91 : f32 = x_6.x_GLF_uniform_float_values[0];
+  let x_92 : bool = (x_89 == x_91);
+  x_102_phi = x_92;
+  if (x_92) {
+    let x_96 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_98 : f32 = A[x_96];
+    let x_100 : f32 = x_6.x_GLF_uniform_float_values[0];
+    x_101 = (x_98 == x_100);
+    x_102_phi = x_101;
+  }
+  let x_102 : bool = x_102_phi;
+  if (x_102) {
+    let x_107 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_110 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_113 : i32 = x_9.x_GLF_uniform_int_values[0];
+    let x_116 : i32 = x_9.x_GLF_uniform_int_values[1];
+    x_GLF_color = vec4<f32>(f32(x_107), f32(x_110), f32(x_113), f32(x_116));
+  } else {
+    let x_120 : i32 = x_9.x_GLF_uniform_int_values[1];
+    let x_121 : f32 = f32(x_120);
+    x_GLF_color = vec4<f32>(x_121, x_121, x_121, x_121);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm
new file mode 100644
index 0000000..3b3dec7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm
@@ -0,0 +1,124 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "a"
+               OpMemberName %S 1 "b"
+               OpMemberName %S 2 "c"
+               OpName %A "A"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "_GLF_uniform_int_values"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+          %S = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_S_uint_2 = OpTypeArray %S %uint_2
+%_ptr_Function__arr_S_uint_2 = OpTypePointer Function %_arr_S_uint_2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_S = OpTypePointer Function %S
+%_ptr_Function_int = OpTypePointer Function %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %10
+         %27 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_S_uint_2 Function
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %29 = OpLoad %int %28
+         %30 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %31 = OpLoad %int %30
+         %32 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %33 = OpLoad %int %32
+         %34 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %35 = OpLoad %int %34
+         %36 = OpCompositeConstruct %S %31 %33 %35
+         %37 = OpAccessChain %_ptr_Function_S %A %29
+               OpStore %37 %36
+         %38 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %39 = OpLoad %int %38
+         %40 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %41 = OpLoad %int %40
+         %42 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %45 = OpLoad %int %44
+         %46 = OpCompositeConstruct %S %41 %43 %45
+         %47 = OpAccessChain %_ptr_Function_S %A %39
+               OpStore %47 %46
+         %48 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Function_int %A %49 %int_1
+         %51 = OpLoad %int %50
+         %52 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %53 = OpLoad %int %52
+         %54 = OpIEqual %bool %51 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %58 = OpLoad %int %57
+         %59 = OpExtInst %int %1 SClamp %58 %int_1 %int_2
+         %60 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %61 = OpLoad %int %60
+         %62 = OpAccessChain %_ptr_Function_int %A %59 %int_1
+               OpStore %62 %61
+               OpBranch %55
+         %55 = OpLabel
+         %63 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpAccessChain %_ptr_Function_int %A %64 %int_1
+         %66 = OpLoad %int %65
+         %67 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %68 = OpLoad %int %67
+         %69 = OpIEqual %bool %66 %68
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpConvertSToF %float %74
+         %76 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %77 = OpLoad %int %76
+         %78 = OpConvertSToF %float %77
+         %79 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_1
+         %80 = OpLoad %int %79
+         %81 = OpConvertSToF %float %80
+         %82 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %83 = OpLoad %int %82
+         %84 = OpConvertSToF %float %83
+         %85 = OpCompositeConstruct %v4float %75 %78 %81 %84
+               OpStore %_GLF_color %85
+               OpBranch %70
+         %72 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_int %_ %int_0 %int_0
+         %87 = OpLoad %int %86
+         %88 = OpConvertSToF %float %87
+         %89 = OpCompositeConstruct %v4float %88 %88 %88 %88
+               OpStore %_GLF_color %89
+               OpBranch %70
+         %70 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9591e38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,70 @@
+struct S {
+  int a;
+  int b;
+  int c;
+};
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  S A[2] = (S[2])0;
+  const int x_29 = asint(x_7[1].x);
+  const int x_31 = asint(x_7[1].x);
+  const int x_33 = asint(x_7[1].x);
+  const int x_35 = asint(x_7[1].x);
+  const S tint_symbol_3 = {x_31, x_33, x_35};
+  A[x_29] = tint_symbol_3;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_39 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const int x_41 = asint(x_7[1].x);
+  const int x_43 = asint(x_7[1].x);
+  const int x_45 = asint(x_7[1].x);
+  const S tint_symbol_4 = {x_41, x_43, x_45};
+  A[x_39] = tint_symbol_4;
+  const int x_49 = asint(x_7[1].x);
+  const int x_51 = A[x_49].b;
+  const int x_53 = asint(x_7[1].x);
+  if ((x_51 == x_53)) {
+    const int x_58 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_61 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    A[clamp(x_58, 1, 2)].b = x_61;
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_64 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_66 = A[x_64].b;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_68 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  if ((x_66 == x_68)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const int x_77 = asint(x_7[1].x);
+    const int x_80 = asint(x_7[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_83 = asint(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_74), float(x_77), float(x_80), float(x_83));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_87 = asint(x_7[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_88 = float(x_87);
+    x_GLF_color = float4(x_88, x_88, x_88, x_88);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..69de413
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int a;
+  int b;
+  int c;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  S arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_6) {
+  tint_array_wrapper_1 A = {};
+  int const x_29 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_31 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_33 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_35 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  S const tint_symbol_3 = {.a=x_31, .b=x_33, .c=x_35};
+  A.arr[x_29] = tint_symbol_3;
+  int const x_39 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_41 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_43 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_45 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  S const tint_symbol_4 = {.a=x_41, .b=x_43, .c=x_45};
+  A.arr[x_39] = tint_symbol_4;
+  int const x_49 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_51 = A.arr[x_49].b;
+  int const x_53 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_51 == x_53)) {
+    int const x_58 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    A.arr[clamp(x_58, 1, 2)].b = x_61;
+  }
+  int const x_64 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_66 = A.arr[x_64].b;
+  int const x_68 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_66 == x_68)) {
+    int const x_74 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_77 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_80 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_83 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_74), float(x_77), float(x_80), float(x_83));
+  } else {
+    int const x_87 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_88 = float(x_87);
+    *(tint_symbol_6) = float4(x_88, x_88, x_88, x_88);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d53643b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,163 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 108
+; Schema: 0
+               OpCapability Shader
+         %66 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %S "S"
+               OpMemberName %S 0 "a"
+               OpMemberName %S 1 "b"
+               OpMemberName %S 2 "c"
+               OpName %A "A"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 4
+               OpMemberDecorate %S 2 Offset 8
+               OpDecorate %_arr_S_uint_2 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+          %S = OpTypeStruct %int %int %int
+%_arr_S_uint_2 = OpTypeArray %S %uint_2
+%_ptr_Function__arr_S_uint_2 = OpTypePointer Function %_arr_S_uint_2
+         %23 = OpConstantNull %_arr_S_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_S = OpTypePointer Function %S
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %96 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_S_uint_2 Function %23
+         %27 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %30 = OpLoad %int %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %32 = OpLoad %int %31
+         %33 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %36 = OpAccessChain %_ptr_Function_S %A %28
+         %37 = OpCompositeConstruct %S %30 %32 %34
+               OpStore %36 %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Function_S %A %40
+         %48 = OpCompositeConstruct %S %42 %44 %46
+               OpStore %47 %48
+         %49 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %53 = OpAccessChain %_ptr_Function_int %A %50 %uint_1
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpIEqual %bool %54 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpExtInst %int %66 SClamp %62 %int_1 %int_2
+         %68 = OpAccessChain %_ptr_Function_int %A %65 %uint_1
+               OpStore %68 %64
+               OpBranch %59
+         %59 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Function_int %A %70 %uint_1
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpIEqual %bool %72 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %80
+         %88 = OpConvertSToF %float %82
+         %89 = OpConvertSToF %float %84
+         %90 = OpConvertSToF %float %86
+         %91 = OpCompositeConstruct %v4float %87 %88 %89 %90
+               OpStore %x_GLF_color %91
+               OpBranch %76
+         %78 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %94 = OpConvertSToF %float %93
+         %95 = OpCompositeConstruct %v4float %94 %94 %94 %94
+               OpStore %x_GLF_color %95
+               OpBranch %76
+         %76 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %96
+%tint_symbol = OpFunctionParameter %main_out
+        %100 = OpLabel
+        %101 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %101
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %103 = OpLabel
+        %104 = OpFunctionCall %void %main_1
+        %106 = OpLoad %v4float %x_GLF_color
+        %107 = OpCompositeConstruct %main_out %106
+        %105 = OpFunctionCall %void %tint_symbol_2 %107
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..af4102c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,64 @@
+struct S {
+  a : i32;
+  b : i32;
+  c : i32;
+};
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<S, 2>;
+  let x_29 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_31 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_33 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_35 : i32 = x_7.x_GLF_uniform_int_values[1];
+  A[x_29] = S(x_31, x_33, x_35);
+  let x_39 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_41 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_43 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_45 : i32 = x_7.x_GLF_uniform_int_values[1];
+  A[x_39] = S(x_41, x_43, x_45);
+  let x_49 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_51 : i32 = A[x_49].b;
+  let x_53 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_51 == x_53)) {
+    let x_58 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_7.x_GLF_uniform_int_values[0];
+    A[clamp(x_58, 1, 2)].b = x_61;
+  }
+  let x_64 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_66 : i32 = A[x_64].b;
+  let x_68 : i32 = x_7.x_GLF_uniform_int_values[0];
+  if ((x_66 == x_68)) {
+    let x_74 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_77 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_80 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_83 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_74), f32(x_77), f32(x_80), f32(x_83));
+  } else {
+    let x_87 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_88 : f32 = f32(x_87);
+    x_GLF_color = vec4<f32>(x_88, x_88, x_88, x_88);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
new file mode 100644
index 0000000..af4102c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
@@ -0,0 +1,64 @@
+struct S {
+  a : i32;
+  b : i32;
+  c : i32;
+};
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<S, 2>;
+  let x_29 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_31 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_33 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_35 : i32 = x_7.x_GLF_uniform_int_values[1];
+  A[x_29] = S(x_31, x_33, x_35);
+  let x_39 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_41 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_43 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_45 : i32 = x_7.x_GLF_uniform_int_values[1];
+  A[x_39] = S(x_41, x_43, x_45);
+  let x_49 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_51 : i32 = A[x_49].b;
+  let x_53 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_51 == x_53)) {
+    let x_58 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_7.x_GLF_uniform_int_values[0];
+    A[clamp(x_58, 1, 2)].b = x_61;
+  }
+  let x_64 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_66 : i32 = A[x_64].b;
+  let x_68 : i32 = x_7.x_GLF_uniform_int_values[0];
+  if ((x_66 == x_68)) {
+    let x_74 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_77 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_80 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_83 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_74), f32(x_77), f32(x_80), f32(x_83));
+  } else {
+    let x_87 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_88 : f32 = f32(x_87);
+    x_GLF_color = vec4<f32>(x_88, x_88, x_88, x_88);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9591e38
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,70 @@
+struct S {
+  int a;
+  int b;
+  int c;
+};
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[2];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  S A[2] = (S[2])0;
+  const int x_29 = asint(x_7[1].x);
+  const int x_31 = asint(x_7[1].x);
+  const int x_33 = asint(x_7[1].x);
+  const int x_35 = asint(x_7[1].x);
+  const S tint_symbol_3 = {x_31, x_33, x_35};
+  A[x_29] = tint_symbol_3;
+  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const int x_39 = asint(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const int x_41 = asint(x_7[1].x);
+  const int x_43 = asint(x_7[1].x);
+  const int x_45 = asint(x_7[1].x);
+  const S tint_symbol_4 = {x_41, x_43, x_45};
+  A[x_39] = tint_symbol_4;
+  const int x_49 = asint(x_7[1].x);
+  const int x_51 = A[x_49].b;
+  const int x_53 = asint(x_7[1].x);
+  if ((x_51 == x_53)) {
+    const int x_58 = asint(x_7[1].x);
+    const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+    const int x_61 = asint(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+    A[clamp(x_58, 1, 2)].b = x_61;
+  }
+  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const int x_64 = asint(x_7[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+  const int x_66 = A[x_64].b;
+  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const int x_68 = asint(x_7[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+  if ((x_66 == x_68)) {
+    const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+    const int x_74 = asint(x_7[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+    const int x_77 = asint(x_7[1].x);
+    const int x_80 = asint(x_7[1].x);
+    const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+    const int x_83 = asint(x_7[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+    x_GLF_color = float4(float(x_74), float(x_77), float(x_80), float(x_83));
+  } else {
+    const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+    const int x_87 = asint(x_7[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+    const float x_88 = float(x_87);
+    x_GLF_color = float4(x_88, x_88, x_88, x_88);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_5 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..69de413
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int a;
+  int b;
+  int c;
+};
+struct tint_padded_array_element {
+  /* 0x0000 */ int el;
+  /* 0x0004 */ int8_t tint_pad[12];
+};
+struct tint_array_wrapper {
+  /* 0x0000 */ tint_padded_array_element arr[2];
+};
+struct buf0 {
+  /* 0x0000 */ tint_array_wrapper x_GLF_uniform_int_values;
+};
+struct tint_array_wrapper_1 {
+  S arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_6) {
+  tint_array_wrapper_1 A = {};
+  int const x_29 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_31 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_33 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_35 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  S const tint_symbol_3 = {.a=x_31, .b=x_33, .c=x_35};
+  A.arr[x_29] = tint_symbol_3;
+  int const x_39 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_41 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_43 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_45 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  S const tint_symbol_4 = {.a=x_41, .b=x_43, .c=x_45};
+  A.arr[x_39] = tint_symbol_4;
+  int const x_49 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  int const x_51 = A.arr[x_49].b;
+  int const x_53 = x_7.x_GLF_uniform_int_values.arr[1].el;
+  if ((x_51 == x_53)) {
+    int const x_58 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_61 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    A.arr[clamp(x_58, 1, 2)].b = x_61;
+  }
+  int const x_64 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  int const x_66 = A.arr[x_64].b;
+  int const x_68 = x_7.x_GLF_uniform_int_values.arr[0].el;
+  if ((x_66 == x_68)) {
+    int const x_74 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    int const x_77 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_80 = x_7.x_GLF_uniform_int_values.arr[1].el;
+    int const x_83 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    *(tint_symbol_6) = float4(float(x_74), float(x_77), float(x_80), float(x_83));
+  } else {
+    int const x_87 = x_7.x_GLF_uniform_int_values.arr[0].el;
+    float const x_88 = float(x_87);
+    *(tint_symbol_6) = float4(x_88, x_88, x_88, x_88);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_7, &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d53643b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,163 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 108
+; Schema: 0
+               OpCapability Shader
+         %66 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "x_GLF_uniform_int_values"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %S "S"
+               OpMemberName %S 0 "a"
+               OpMemberName %S 1 "b"
+               OpMemberName %S 2 "c"
+               OpName %A "A"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %_arr_int_uint_2 ArrayStride 16
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 4
+               OpMemberDecorate %S 2 Offset 8
+               OpDecorate %_arr_S_uint_2 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+       %buf0 = OpTypeStruct %_arr_int_uint_2
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+          %S = OpTypeStruct %int %int %int
+%_arr_S_uint_2 = OpTypeArray %S %uint_2
+%_ptr_Function__arr_S_uint_2 = OpTypePointer Function %_arr_S_uint_2
+         %23 = OpConstantNull %_arr_S_uint_2
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+%_ptr_Function_S = OpTypePointer Function %S
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %bool = OpTypeBool
+      %int_2 = OpConstant %int 2
+   %main_out = OpTypeStruct %v4float
+         %96 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_S_uint_2 Function %23
+         %27 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %30 = OpLoad %int %29
+         %31 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %32 = OpLoad %int %31
+         %33 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %34 = OpLoad %int %33
+         %36 = OpAccessChain %_ptr_Function_S %A %28
+         %37 = OpCompositeConstruct %S %30 %32 %34
+               OpStore %36 %37
+         %39 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %40 = OpLoad %int %39
+         %41 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %42 = OpLoad %int %41
+         %43 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %44 = OpLoad %int %43
+         %45 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Function_S %A %40
+         %48 = OpCompositeConstruct %S %42 %44 %46
+               OpStore %47 %48
+         %49 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %50 = OpLoad %int %49
+         %53 = OpAccessChain %_ptr_Function_int %A %50 %uint_1
+         %54 = OpLoad %int %53
+         %55 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %56 = OpLoad %int %55
+         %57 = OpIEqual %bool %54 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %62 = OpLoad %int %61
+         %63 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %64 = OpLoad %int %63
+         %65 = OpExtInst %int %66 SClamp %62 %int_1 %int_2
+         %68 = OpAccessChain %_ptr_Function_int %A %65 %uint_1
+               OpStore %68 %64
+               OpBranch %59
+         %59 = OpLabel
+         %69 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %70 = OpLoad %int %69
+         %71 = OpAccessChain %_ptr_Function_int %A %70 %uint_1
+         %72 = OpLoad %int %71
+         %73 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %74 = OpLoad %int %73
+         %75 = OpIEqual %bool %72 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+         %79 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %80 = OpLoad %int %79
+         %81 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_1
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %86 = OpLoad %int %85
+         %87 = OpConvertSToF %float %80
+         %88 = OpConvertSToF %float %82
+         %89 = OpConvertSToF %float %84
+         %90 = OpConvertSToF %float %86
+         %91 = OpCompositeConstruct %v4float %87 %88 %89 %90
+               OpStore %x_GLF_color %91
+               OpBranch %76
+         %78 = OpLabel
+         %92 = OpAccessChain %_ptr_Uniform_int %x_7 %uint_0 %int_0
+         %93 = OpLoad %int %92
+         %94 = OpConvertSToF %float %93
+         %95 = OpCompositeConstruct %v4float %94 %94 %94 %94
+               OpStore %x_GLF_color %95
+               OpBranch %76
+         %76 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %96
+%tint_symbol = OpFunctionParameter %main_out
+        %100 = OpLabel
+        %101 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %101
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %103 = OpLabel
+        %104 = OpFunctionCall %void %main_1
+        %106 = OpLoad %v4float %x_GLF_color
+        %107 = OpCompositeConstruct %main_out %106
+        %105 = OpFunctionCall %void %tint_symbol_2 %107
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..af4102c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,64 @@
+struct S {
+  a : i32;
+  b : i32;
+  c : i32;
+};
+
+type Arr = [[stride(16)]] array<i32, 2>;
+
+[[block]]
+struct buf0 {
+  x_GLF_uniform_int_values : Arr;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var A : array<S, 2>;
+  let x_29 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_31 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_33 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_35 : i32 = x_7.x_GLF_uniform_int_values[1];
+  A[x_29] = S(x_31, x_33, x_35);
+  let x_39 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_41 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_43 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_45 : i32 = x_7.x_GLF_uniform_int_values[1];
+  A[x_39] = S(x_41, x_43, x_45);
+  let x_49 : i32 = x_7.x_GLF_uniform_int_values[1];
+  let x_51 : i32 = A[x_49].b;
+  let x_53 : i32 = x_7.x_GLF_uniform_int_values[1];
+  if ((x_51 == x_53)) {
+    let x_58 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_61 : i32 = x_7.x_GLF_uniform_int_values[0];
+    A[clamp(x_58, 1, 2)].b = x_61;
+  }
+  let x_64 : i32 = x_7.x_GLF_uniform_int_values[0];
+  let x_66 : i32 = A[x_64].b;
+  let x_68 : i32 = x_7.x_GLF_uniform_int_values[0];
+  if ((x_66 == x_68)) {
+    let x_74 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_77 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_80 : i32 = x_7.x_GLF_uniform_int_values[1];
+    let x_83 : i32 = x_7.x_GLF_uniform_int_values[0];
+    x_GLF_color = vec4<f32>(f32(x_74), f32(x_77), f32(x_80), f32(x_83));
+  } else {
+    let x_87 : i32 = x_7.x_GLF_uniform_int_values[0];
+    let x_88 : f32 = f32(x_87);
+    x_GLF_color = vec4<f32>(x_88, x_88, x_88, x_88);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm
new file mode 100644
index 0000000..2c268fb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm
@@ -0,0 +1,174 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %v "v"
+               OpName %floats "floats"
+               OpName %one "one"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %alwaysFalse "alwaysFalse"
+               OpName %_GLF_color "_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v2float %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Function_int = OpTypePointer Function %int
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+     %uint_0 = OpConstant %uint 0
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %37 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+         %41 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %main = OpFunction %void None %13
+         %43 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function
+     %floats = OpVariable %_ptr_Function__arr_float_uint_9 Function
+        %one = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+%alwaysFalse = OpVariable %_ptr_Function_bool Function
+               OpStore %v %18
+         %44 = OpAccessChain %_ptr_Function_float %floats %int_1
+               OpStore %44 %float_0
+         %45 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %46 = OpLoad %float %45
+         %47 = OpConvertFToS %int %46
+               OpStore %one %47
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+               OpStore %i %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpLoad %int %one
+         %58 = OpSLessThan %bool %56 %57
+               OpBranchConditional %58 %59 %53
+         %59 = OpLabel
+         %60 = OpLoad %int %i
+         %61 = OpIEqual %bool %60 %int_0
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %65 = OpLoad %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %67 = OpLoad %float %66
+         %68 = OpFOrdGreaterThan %bool %65 %67
+               OpStore %alwaysFalse %68
+         %69 = OpLoad %bool %alwaysFalse
+         %70 = OpLogicalNot %bool %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpLoad %int %one
+         %74 = OpAccessChain %_ptr_Function_float %floats %73
+               OpStore %74 %float_1
+               OpStore %_GLF_color %37
+               OpBranch %71
+         %71 = OpLabel
+         %75 = OpLoad %int %one
+         %76 = OpAccessChain %_ptr_Function_float %v %75
+               OpStore %76 %float_1
+         %77 = OpLoad %bool %alwaysFalse
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+               OpKill
+         %78 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %81 = OpLoad %float %80
+         %82 = OpFOrdLessThan %bool %81 %float_0
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+               OpStore %_GLF_color %38
+               OpBranch %83
+         %83 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %85 = OpLoad %int %i
+         %86 = OpIAdd %int %85 %int_1
+               OpStore %i %86
+               OpBranch %52
+         %53 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+         %87 = OpLoad %int %one
+         %88 = OpSLessThan %bool %87 %int_0
+               OpBranchConditional %88 %48 %49
+         %49 = OpLabel
+         %89 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %90 = OpLoad %float %89
+         %91 = OpFOrdGreaterThanEqual %bool %90 %float_0
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %94
+         %93 = OpLabel
+         %95 = OpAccessChain %_ptr_Function_float %v %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpFOrdEqual %bool %96 %float_1
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpAccessChain %_ptr_Function_float %floats %int_1
+        %101 = OpLoad %float %100
+        %102 = OpFOrdEqual %bool %101 %float_1
+               OpBranch %98
+         %98 = OpLabel
+        %103 = OpPhi %bool %97 %93 %102 %99
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+               OpStore %_GLF_color %41
+               OpBranch %104
+        %104 = OpLabel
+               OpBranch %92
+         %94 = OpLabel
+               OpStore %_GLF_color %42
+               OpBranch %92
+         %92 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..6f9a2b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,89 @@
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v = float2(0.0f, 0.0f);
+  float floats[9] = (float[9])0;
+  int one = 0;
+  int i = 0;
+  bool alwaysFalse = false;
+  v = float2(0.0f, 0.0f);
+  floats[1] = 0.0f;
+  const float x_46 = asfloat(x_9[0].y);
+  one = int(x_46);
+  while (true) {
+    i = 0;
+    {
+      for(; (i < one); i = (i + 1)) {
+        if ((i == 0)) {
+          const float x_65 = asfloat(x_9[0].x);
+          const float x_67 = asfloat(x_9[0].y);
+          alwaysFalse = (x_65 > x_67);
+          if (!(alwaysFalse)) {
+            floats[one] = 1.0f;
+            x_GLF_color = float4(1.0f, 1.0f, 0.0f, 1.0f);
+          }
+          set_float2(v, one, 1.0f);
+          if (alwaysFalse) {
+            discard;
+          }
+          const float x_81 = asfloat(x_9[0].y);
+          if ((x_81 < 0.0f)) {
+            x_GLF_color = float4(0.0f, 1.0f, 0.0f, 1.0f);
+          }
+        }
+      }
+    }
+    {
+      if ((one < 0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  bool x_102 = false;
+  bool x_103_phi = false;
+  const float x_90 = gl_FragCoord.y;
+  if ((x_90 >= 0.0f)) {
+    const float x_96 = v.y;
+    const bool x_97 = (x_96 == 1.0f);
+    x_103_phi = x_97;
+    if (x_97) {
+      const float x_101 = floats[1];
+      x_102 = (x_101 == 1.0f);
+      x_103_phi = x_102;
+    }
+    if (x_103_phi) {
+      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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..bea4a4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 v = 0.0f;
+  tint_array_wrapper floats = {};
+  int one = 0;
+  int i = 0;
+  bool alwaysFalse = false;
+  v = float2(0.0f, 0.0f);
+  floats.arr[1] = 0.0f;
+  float const x_46 = x_9.injectionSwitch.y;
+  one = int(x_46);
+  while (true) {
+    i = 0;
+    while (true) {
+      int const x_56 = i;
+      int const x_57 = one;
+      if ((x_56 < x_57)) {
+      } else {
+        break;
+      }
+      int const x_60 = i;
+      if ((x_60 == 0)) {
+        float const x_65 = x_9.injectionSwitch.x;
+        float const x_67 = x_9.injectionSwitch.y;
+        alwaysFalse = (x_65 > x_67);
+        bool const x_69 = alwaysFalse;
+        if (!(x_69)) {
+          int const x_73 = one;
+          floats.arr[x_73] = 1.0f;
+          *(tint_symbol_5) = float4(1.0f, 1.0f, 0.0f, 1.0f);
+        }
+        int const x_75 = one;
+        v[x_75] = 1.0f;
+        bool const x_77 = alwaysFalse;
+        if (x_77) {
+          discard_fragment();
+        }
+        float const x_81 = x_9.injectionSwitch.y;
+        if ((x_81 < 0.0f)) {
+          *(tint_symbol_5) = float4(0.0f, 1.0f, 0.0f, 1.0f);
+        }
+      }
+      {
+        int const x_85 = i;
+        i = (x_85 + 1);
+      }
+    }
+    {
+      int const x_87 = one;
+      if ((x_87 < 0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  bool x_102 = false;
+  bool x_103_phi = false;
+  float const x_90 = (*(tint_symbol_6)).y;
+  if ((x_90 >= 0.0f)) {
+    float const x_96 = v.y;
+    bool const x_97 = (x_96 == 1.0f);
+    x_103_phi = x_97;
+    if (x_97) {
+      float const x_101 = floats.arr[1];
+      x_102 = (x_101 == 1.0f);
+      x_103_phi = x_102;
+    }
+    bool const x_103 = x_103_phi;
+    if (x_103) {
+      *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  } else {
+    *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f3b9a3a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,239 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 134
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %floats "floats"
+               OpName %one "one"
+               OpName %i "i"
+               OpName %alwaysFalse "alwaysFalse"
+               OpName %x_102 "x_102"
+               OpName %x_103_phi "x_103_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %21 = OpConstantNull %v2float
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %27 = OpConstantNull %_arr_float_uint_9
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v2float %float_0 %float_0
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+         %79 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %90 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+%_ptr_Private_float = OpTypePointer Private %float
+        %119 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %120 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %121 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %21
+     %floats = OpVariable %_ptr_Function__arr_float_uint_9 Function %27
+        %one = OpVariable %_ptr_Function_int Function %31
+          %i = OpVariable %_ptr_Function_int Function %31
+%alwaysFalse = OpVariable %_ptr_Function_bool Function %36
+      %x_102 = OpVariable %_ptr_Function_bool Function %36
+  %x_103_phi = OpVariable %_ptr_Function_bool Function %36
+               OpStore %v %38
+         %41 = OpAccessChain %_ptr_Function_float %floats %int_1
+               OpStore %41 %float_0
+         %45 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %46 = OpLoad %float %45
+         %47 = OpConvertFToS %int %46
+               OpStore %one %47
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+               OpStore %i %int_0
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %int %i
+         %58 = OpLoad %int %one
+         %59 = OpSLessThan %bool %57 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %54
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %64 = OpIEqual %bool %63 %int_0
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %70 = OpLoad %float %69
+         %71 = OpFOrdGreaterThan %bool %68 %70
+               OpStore %alwaysFalse %71
+         %72 = OpLoad %bool %alwaysFalse
+         %73 = OpLogicalNot %bool %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+         %76 = OpLoad %int %one
+         %77 = OpAccessChain %_ptr_Function_float %floats %76
+               OpStore %77 %float_1
+               OpStore %x_GLF_color %79
+               OpBranch %74
+         %74 = OpLabel
+         %80 = OpLoad %int %one
+         %81 = OpAccessChain %_ptr_Function_float %v %80
+               OpStore %81 %float_1
+         %82 = OpLoad %bool %alwaysFalse
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+               OpKill
+         %83 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFOrdLessThan %bool %86 %float_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpStore %x_GLF_color %90
+               OpBranch %88
+         %88 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %91 = OpLoad %int %i
+         %92 = OpIAdd %int %91 %int_1
+               OpStore %i %92
+               OpBranch %53
+         %54 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+         %93 = OpLoad %int %one
+         %94 = OpSLessThan %bool %93 %int_0
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+               OpBranch %95
+         %97 = OpLabel
+               OpBranch %49
+         %95 = OpLabel
+               OpBranch %48
+         %49 = OpLabel
+        %101 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %102 = OpLoad %float %101
+        %103 = OpFOrdGreaterThanEqual %bool %102 %float_0
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+        %107 = OpAccessChain %_ptr_Function_float %v %uint_1
+        %108 = OpLoad %float %107
+        %109 = OpFOrdEqual %bool %108 %float_1
+               OpStore %x_103_phi %109
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpAccessChain %_ptr_Function_float %floats %int_1
+        %113 = OpLoad %float %112
+        %114 = OpFOrdEqual %bool %113 %float_1
+               OpStore %x_102 %114
+        %115 = OpLoad %bool %x_102
+               OpStore %x_103_phi %115
+               OpBranch %110
+        %110 = OpLabel
+        %116 = OpLoad %bool %x_103_phi
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %117
+        %118 = OpLabel
+               OpStore %x_GLF_color %119
+               OpBranch %117
+        %117 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+               OpStore %x_GLF_color %120
+               OpBranch %104
+        %104 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %121
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %125 = OpLabel
+        %126 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %126
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %128 = OpLabel
+        %129 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %129
+        %130 = OpFunctionCall %void %main_1
+        %132 = OpLoad %v4float %x_GLF_color
+        %133 = OpCompositeConstruct %main_out %132
+        %131 = OpFunctionCall %void %tint_symbol_3 %133
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 50[%50] is not post dominated by the back-edge block 95[%95]
+  %95 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6d6d467
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,100 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  var floats : array<f32, 9>;
+  var one : i32;
+  var i : i32;
+  var alwaysFalse : bool;
+  v = vec2<f32>(0.0, 0.0);
+  floats[1] = 0.0;
+  let x_46 : f32 = x_9.injectionSwitch.y;
+  one = i32(x_46);
+  loop {
+    i = 0;
+    loop {
+      let x_56 : i32 = i;
+      let x_57 : i32 = one;
+      if ((x_56 < x_57)) {
+      } else {
+        break;
+      }
+      let x_60 : i32 = i;
+      if ((x_60 == 0)) {
+        let x_65 : f32 = x_9.injectionSwitch.x;
+        let x_67 : f32 = x_9.injectionSwitch.y;
+        alwaysFalse = (x_65 > x_67);
+        let x_69 : bool = alwaysFalse;
+        if (!(x_69)) {
+          let x_73 : i32 = one;
+          floats[x_73] = 1.0;
+          x_GLF_color = vec4<f32>(1.0, 1.0, 0.0, 1.0);
+        }
+        let x_75 : i32 = one;
+        v[x_75] = 1.0;
+        let x_77 : bool = alwaysFalse;
+        if (x_77) {
+          discard;
+        }
+        let x_81 : f32 = x_9.injectionSwitch.y;
+        if ((x_81 < 0.0)) {
+          x_GLF_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
+        }
+      }
+
+      continuing {
+        let x_85 : i32 = i;
+        i = (x_85 + 1);
+      }
+    }
+
+    continuing {
+      let x_87 : i32 = one;
+      if ((x_87 < 0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  var x_102 : bool;
+  var x_103_phi : bool;
+  let x_90 : f32 = gl_FragCoord.y;
+  if ((x_90 >= 0.0)) {
+    let x_96 : f32 = v.y;
+    let x_97 : bool = (x_96 == 1.0);
+    x_103_phi = x_97;
+    if (x_97) {
+      let x_101 : f32 = floats[1];
+      x_102 = (x_101 == 1.0);
+      x_103_phi = x_102;
+    }
+    let x_103 : bool = x_103_phi;
+    if (x_103) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
new file mode 100644
index 0000000..6d6d467
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
@@ -0,0 +1,100 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  var floats : array<f32, 9>;
+  var one : i32;
+  var i : i32;
+  var alwaysFalse : bool;
+  v = vec2<f32>(0.0, 0.0);
+  floats[1] = 0.0;
+  let x_46 : f32 = x_9.injectionSwitch.y;
+  one = i32(x_46);
+  loop {
+    i = 0;
+    loop {
+      let x_56 : i32 = i;
+      let x_57 : i32 = one;
+      if ((x_56 < x_57)) {
+      } else {
+        break;
+      }
+      let x_60 : i32 = i;
+      if ((x_60 == 0)) {
+        let x_65 : f32 = x_9.injectionSwitch.x;
+        let x_67 : f32 = x_9.injectionSwitch.y;
+        alwaysFalse = (x_65 > x_67);
+        let x_69 : bool = alwaysFalse;
+        if (!(x_69)) {
+          let x_73 : i32 = one;
+          floats[x_73] = 1.0;
+          x_GLF_color = vec4<f32>(1.0, 1.0, 0.0, 1.0);
+        }
+        let x_75 : i32 = one;
+        v[x_75] = 1.0;
+        let x_77 : bool = alwaysFalse;
+        if (x_77) {
+          discard;
+        }
+        let x_81 : f32 = x_9.injectionSwitch.y;
+        if ((x_81 < 0.0)) {
+          x_GLF_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
+        }
+      }
+
+      continuing {
+        let x_85 : i32 = i;
+        i = (x_85 + 1);
+      }
+    }
+
+    continuing {
+      let x_87 : i32 = one;
+      if ((x_87 < 0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  var x_102 : bool;
+  var x_103_phi : bool;
+  let x_90 : f32 = gl_FragCoord.y;
+  if ((x_90 >= 0.0)) {
+    let x_96 : f32 = v.y;
+    let x_97 : bool = (x_96 == 1.0);
+    x_103_phi = x_97;
+    if (x_97) {
+      let x_101 : f32 = floats[1];
+      x_102 = (x_101 == 1.0);
+      x_103_phi = x_102;
+    }
+    let x_103 : bool = x_103_phi;
+    if (x_103) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..6f9a2b7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,89 @@
+void set_float2(inout float2 vec, int idx, float val) {
+  vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
+}
+
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 v = float2(0.0f, 0.0f);
+  float floats[9] = (float[9])0;
+  int one = 0;
+  int i = 0;
+  bool alwaysFalse = false;
+  v = float2(0.0f, 0.0f);
+  floats[1] = 0.0f;
+  const float x_46 = asfloat(x_9[0].y);
+  one = int(x_46);
+  while (true) {
+    i = 0;
+    {
+      for(; (i < one); i = (i + 1)) {
+        if ((i == 0)) {
+          const float x_65 = asfloat(x_9[0].x);
+          const float x_67 = asfloat(x_9[0].y);
+          alwaysFalse = (x_65 > x_67);
+          if (!(alwaysFalse)) {
+            floats[one] = 1.0f;
+            x_GLF_color = float4(1.0f, 1.0f, 0.0f, 1.0f);
+          }
+          set_float2(v, one, 1.0f);
+          if (alwaysFalse) {
+            discard;
+          }
+          const float x_81 = asfloat(x_9[0].y);
+          if ((x_81 < 0.0f)) {
+            x_GLF_color = float4(0.0f, 1.0f, 0.0f, 1.0f);
+          }
+        }
+      }
+    }
+    {
+      if ((one < 0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  bool x_102 = false;
+  bool x_103_phi = false;
+  const float x_90 = gl_FragCoord.y;
+  if ((x_90 >= 0.0f)) {
+    const float x_96 = v.y;
+    const bool x_97 = (x_96 == 1.0f);
+    x_103_phi = x_97;
+    if (x_97) {
+      const float x_101 = floats[1];
+      x_102 = (x_101 == 1.0f);
+      x_103_phi = x_102;
+    }
+    if (x_103_phi) {
+      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);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..bea4a4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 v = 0.0f;
+  tint_array_wrapper floats = {};
+  int one = 0;
+  int i = 0;
+  bool alwaysFalse = false;
+  v = float2(0.0f, 0.0f);
+  floats.arr[1] = 0.0f;
+  float const x_46 = x_9.injectionSwitch.y;
+  one = int(x_46);
+  while (true) {
+    i = 0;
+    while (true) {
+      int const x_56 = i;
+      int const x_57 = one;
+      if ((x_56 < x_57)) {
+      } else {
+        break;
+      }
+      int const x_60 = i;
+      if ((x_60 == 0)) {
+        float const x_65 = x_9.injectionSwitch.x;
+        float const x_67 = x_9.injectionSwitch.y;
+        alwaysFalse = (x_65 > x_67);
+        bool const x_69 = alwaysFalse;
+        if (!(x_69)) {
+          int const x_73 = one;
+          floats.arr[x_73] = 1.0f;
+          *(tint_symbol_5) = float4(1.0f, 1.0f, 0.0f, 1.0f);
+        }
+        int const x_75 = one;
+        v[x_75] = 1.0f;
+        bool const x_77 = alwaysFalse;
+        if (x_77) {
+          discard_fragment();
+        }
+        float const x_81 = x_9.injectionSwitch.y;
+        if ((x_81 < 0.0f)) {
+          *(tint_symbol_5) = float4(0.0f, 1.0f, 0.0f, 1.0f);
+        }
+      }
+      {
+        int const x_85 = i;
+        i = (x_85 + 1);
+      }
+    }
+    {
+      int const x_87 = one;
+      if ((x_87 < 0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  bool x_102 = false;
+  bool x_103_phi = false;
+  float const x_90 = (*(tint_symbol_6)).y;
+  if ((x_90 >= 0.0f)) {
+    float const x_96 = v.y;
+    bool const x_97 = (x_96 == 1.0f);
+    x_103_phi = x_97;
+    if (x_97) {
+      float const x_101 = floats.arr[1];
+      x_102 = (x_101 == 1.0f);
+      x_103_phi = x_102;
+    }
+    bool const x_103 = x_103_phi;
+    if (x_103) {
+      *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  } else {
+    *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f3b9a3a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,239 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 134
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %v "v"
+               OpName %floats "floats"
+               OpName %one "one"
+               OpName %i "i"
+               OpName %alwaysFalse "alwaysFalse"
+               OpName %x_102 "x_102"
+               OpName %x_103_phi "x_103_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %21 = OpConstantNull %v2float
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %27 = OpConstantNull %_arr_float_uint_9
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %36 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v2float %float_0 %float_0
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+         %79 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %90 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+%_ptr_Private_float = OpTypePointer Private %float
+        %119 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %120 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %121 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %v = OpVariable %_ptr_Function_v2float Function %21
+     %floats = OpVariable %_ptr_Function__arr_float_uint_9 Function %27
+        %one = OpVariable %_ptr_Function_int Function %31
+          %i = OpVariable %_ptr_Function_int Function %31
+%alwaysFalse = OpVariable %_ptr_Function_bool Function %36
+      %x_102 = OpVariable %_ptr_Function_bool Function %36
+  %x_103_phi = OpVariable %_ptr_Function_bool Function %36
+               OpStore %v %38
+         %41 = OpAccessChain %_ptr_Function_float %floats %int_1
+               OpStore %41 %float_0
+         %45 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %46 = OpLoad %float %45
+         %47 = OpConvertFToS %int %46
+               OpStore %one %47
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+               OpStore %i %int_0
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %int %i
+         %58 = OpLoad %int %one
+         %59 = OpSLessThan %bool %57 %58
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %54
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %64 = OpIEqual %bool %63 %int_0
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+         %67 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %70 = OpLoad %float %69
+         %71 = OpFOrdGreaterThan %bool %68 %70
+               OpStore %alwaysFalse %71
+         %72 = OpLoad %bool %alwaysFalse
+         %73 = OpLogicalNot %bool %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+         %76 = OpLoad %int %one
+         %77 = OpAccessChain %_ptr_Function_float %floats %76
+               OpStore %77 %float_1
+               OpStore %x_GLF_color %79
+               OpBranch %74
+         %74 = OpLabel
+         %80 = OpLoad %int %one
+         %81 = OpAccessChain %_ptr_Function_float %v %80
+               OpStore %81 %float_1
+         %82 = OpLoad %bool %alwaysFalse
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+               OpKill
+         %83 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFOrdLessThan %bool %86 %float_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpStore %x_GLF_color %90
+               OpBranch %88
+         %88 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %91 = OpLoad %int %i
+         %92 = OpIAdd %int %91 %int_1
+               OpStore %i %92
+               OpBranch %53
+         %54 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+         %93 = OpLoad %int %one
+         %94 = OpSLessThan %bool %93 %int_0
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+               OpBranch %95
+         %97 = OpLabel
+               OpBranch %49
+         %95 = OpLabel
+               OpBranch %48
+         %49 = OpLabel
+        %101 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %102 = OpLoad %float %101
+        %103 = OpFOrdGreaterThanEqual %bool %102 %float_0
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+        %107 = OpAccessChain %_ptr_Function_float %v %uint_1
+        %108 = OpLoad %float %107
+        %109 = OpFOrdEqual %bool %108 %float_1
+               OpStore %x_103_phi %109
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpAccessChain %_ptr_Function_float %floats %int_1
+        %113 = OpLoad %float %112
+        %114 = OpFOrdEqual %bool %113 %float_1
+               OpStore %x_102 %114
+        %115 = OpLoad %bool %x_102
+               OpStore %x_103_phi %115
+               OpBranch %110
+        %110 = OpLabel
+        %116 = OpLoad %bool %x_103_phi
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %117
+        %118 = OpLabel
+               OpStore %x_GLF_color %119
+               OpBranch %117
+        %117 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+               OpStore %x_GLF_color %120
+               OpBranch %104
+        %104 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %121
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %125 = OpLabel
+        %126 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %126
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %128 = OpLabel
+        %129 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %129
+        %130 = OpFunctionCall %void %main_1
+        %132 = OpLoad %v4float %x_GLF_color
+        %133 = OpCompositeConstruct %main_out %132
+        %131 = OpFunctionCall %void %tint_symbol_3 %133
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 50[%50] is not post dominated by the back-edge block 95[%95]
+  %95 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6d6d467
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,100 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var v : vec2<f32>;
+  var floats : array<f32, 9>;
+  var one : i32;
+  var i : i32;
+  var alwaysFalse : bool;
+  v = vec2<f32>(0.0, 0.0);
+  floats[1] = 0.0;
+  let x_46 : f32 = x_9.injectionSwitch.y;
+  one = i32(x_46);
+  loop {
+    i = 0;
+    loop {
+      let x_56 : i32 = i;
+      let x_57 : i32 = one;
+      if ((x_56 < x_57)) {
+      } else {
+        break;
+      }
+      let x_60 : i32 = i;
+      if ((x_60 == 0)) {
+        let x_65 : f32 = x_9.injectionSwitch.x;
+        let x_67 : f32 = x_9.injectionSwitch.y;
+        alwaysFalse = (x_65 > x_67);
+        let x_69 : bool = alwaysFalse;
+        if (!(x_69)) {
+          let x_73 : i32 = one;
+          floats[x_73] = 1.0;
+          x_GLF_color = vec4<f32>(1.0, 1.0, 0.0, 1.0);
+        }
+        let x_75 : i32 = one;
+        v[x_75] = 1.0;
+        let x_77 : bool = alwaysFalse;
+        if (x_77) {
+          discard;
+        }
+        let x_81 : f32 = x_9.injectionSwitch.y;
+        if ((x_81 < 0.0)) {
+          x_GLF_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
+        }
+      }
+
+      continuing {
+        let x_85 : i32 = i;
+        i = (x_85 + 1);
+      }
+    }
+
+    continuing {
+      let x_87 : i32 = one;
+      if ((x_87 < 0)) {
+      } else {
+        break;
+      }
+    }
+  }
+  var x_102 : bool;
+  var x_103_phi : bool;
+  let x_90 : f32 = gl_FragCoord.y;
+  if ((x_90 >= 0.0)) {
+    let x_96 : f32 = v.y;
+    let x_97 : bool = (x_96 == 1.0);
+    x_103_phi = x_97;
+    if (x_97) {
+      let x_101 : f32 = floats[1];
+      x_102 = (x_101 == 1.0);
+      x_103_phi = x_102;
+    }
+    let x_103 : bool = x_103_phi;
+    if (x_103) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm
new file mode 100644
index 0000000..a59ed0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm
@@ -0,0 +1,196 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %theSSBO "theSSBO"
+               OpMemberName %theSSBO 0 "out_data"
+               OpName %_ ""
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %__0 ""
+               OpName %i "i"
+               OpName %GLF_live3s "GLF_live3s"
+               OpName %i_0 "i"
+               OpName %z "z"
+               OpMemberDecorate %theSSBO 0 Offset 0
+               OpDecorate %theSSBO BufferBlock
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+    %theSSBO = OpTypeStruct %int
+%_ptr_Uniform_theSSBO = OpTypePointer Uniform %theSSBO
+          %_ = OpVariable %_ptr_Uniform_theSSBO Uniform
+      %int_0 = OpConstant %int 0
+     %int_42 = OpConstant %int 42
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+       %main = OpFunction %void None %12
+         %34 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+ %GLF_live3s = OpVariable %_ptr_Function_float Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+          %z = OpVariable %_ptr_Function_int Function
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+               OpStore %35 %int_42
+         %36 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdGreaterThan %bool %37 %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %41
+         %41 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %44 = OpLoad %float %43
+         %45 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %46 = OpLoad %float %45
+         %47 = OpFOrdGreaterThan %bool %44 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %48
+         %48 = OpLabel
+         %50 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %51 = OpLoad %float %50
+         %52 = OpConvertFToS %int %51
+               OpStore %i %52
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %int %i
+         %58 = OpSGreaterThan %bool %57 %int_0
+               OpBranchConditional %58 %59 %54
+         %59 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %55
+         %55 = OpLabel
+         %60 = OpLoad %int %i
+         %61 = OpISub %int %60 %int_1
+               OpStore %i %61
+               OpBranch %53
+         %54 = OpLabel
+               OpStore %GLF_live3s %float_0
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+               OpStore %i_0 %int_1
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %70 = OpLoad %int %i_0
+         %71 = OpSLessThan %bool %70 %int_2
+               OpBranchConditional %71 %72 %67
+         %72 = OpLabel
+         %73 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %74 = OpLoad %float %73
+         %75 = OpFOrdGreaterThan %bool %74 %float_1
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %76
+         %76 = OpLabel
+         %78 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %81 = OpLoad %float %80
+         %82 = OpFOrdGreaterThan %bool %79 %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %83
+         %83 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpConvertFToS %int %86
+               OpStore %z %87
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %z
+         %93 = OpSGreaterThan %bool %92 %int_0
+               OpBranchConditional %93 %94 %89
+         %94 = OpLabel
+         %95 = OpLoad %float %GLF_live3s
+         %96 = OpFAdd %float %95 %float_1
+               OpStore %GLF_live3s %96
+               OpBranch %90
+         %90 = OpLabel
+         %97 = OpLoad %int %z
+         %98 = OpISub %int %97 %int_1
+               OpStore %z %98
+               OpBranch %88
+         %89 = OpLabel
+         %99 = OpLoad %int %i_0
+        %100 = OpSGreaterThanEqual %bool %99 %int_1
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+        %104 = OpLoad %float %103
+        %105 = OpFOrdGreaterThan %bool %104 %float_1
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %106
+        %106 = OpLabel
+               OpBranch %101
+        %101 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+        %108 = OpLoad %int %i_0
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %i_0 %109
+               OpBranch %66
+         %67 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+        %110 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+        %111 = OpLoad %float %110
+        %112 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+        %113 = OpLoad %float %112
+        %114 = OpFOrdGreaterThan %bool %111 %113
+               OpBranchConditional %114 %62 %63
+         %63 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a18cdf6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,74 @@
+RWByteAddressBuffer x_4 : register(u0, space0);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  int i = 0;
+  float GLF_live3s = 0.0f;
+  int i_1 = 0;
+  int z = 0;
+  x_4.Store(0u, asuint(42));
+  const float x_37 = asfloat(x_6[0].x);
+  const float x_39 = asfloat(x_6[0].y);
+  if ((x_37 > x_39)) {
+    GroupMemoryBarrierWithGroupSync();
+  }
+  const float x_44 = asfloat(x_6[0].x);
+  const float x_46 = asfloat(x_6[0].y);
+  if ((x_44 > x_46)) {
+    GroupMemoryBarrierWithGroupSync();
+  }
+  const float x_51 = asfloat(x_6[0].y);
+  i = int(x_51);
+  {
+    for(; (i > 0); i = (i - 1)) {
+      GroupMemoryBarrierWithGroupSync();
+    }
+  }
+  GLF_live3s = 0.0f;
+  while (true) {
+    i_1 = 1;
+    {
+      for(; (i_1 < 2); i_1 = (i_1 + 1)) {
+        const float x_74 = asfloat(x_6[0].x);
+        if ((x_74 > 1.0f)) {
+          GroupMemoryBarrierWithGroupSync();
+        }
+        const float x_79 = asfloat(x_6[0].x);
+        const float x_81 = asfloat(x_6[0].y);
+        if ((x_79 > x_81)) {
+          GroupMemoryBarrierWithGroupSync();
+        }
+        const float x_86 = asfloat(x_6[0].y);
+        z = int(x_86);
+        {
+          for(; (z > 0); z = (z - 1)) {
+            GLF_live3s = (GLF_live3s + 1.0f);
+          }
+        }
+        if ((i_1 >= 1)) {
+          const float x_104 = asfloat(x_6[0].x);
+          if ((x_104 > 1.0f)) {
+            GroupMemoryBarrierWithGroupSync();
+          }
+        }
+      }
+    }
+    {
+      const float x_111 = asfloat(x_6[0].x);
+      const float x_113 = asfloat(x_6[0].y);
+      if ((x_111 > x_113)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3fa3858
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct theSSBO {
+  /* 0x0000 */ int out_data;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+
+void main_1(constant buf1& x_6, device theSSBO& x_4) {
+  int i = 0;
+  float GLF_live3s = 0.0f;
+  int i_1 = 0;
+  int z = 0;
+  x_4.out_data = 42;
+  float const x_37 = x_6.injectionSwitch.x;
+  float const x_39 = x_6.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+  }
+  float const x_44 = x_6.injectionSwitch.x;
+  float const x_46 = x_6.injectionSwitch.y;
+  if ((x_44 > x_46)) {
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+  }
+  float const x_51 = x_6.injectionSwitch.y;
+  i = int(x_51);
+  while (true) {
+    int const x_57 = i;
+    if ((x_57 > 0)) {
+    } else {
+      break;
+    }
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+    {
+      int const x_60 = i;
+      i = (x_60 - 1);
+    }
+  }
+  GLF_live3s = 0.0f;
+  while (true) {
+    i_1 = 1;
+    while (true) {
+      int const x_70 = i_1;
+      if ((x_70 < 2)) {
+      } else {
+        break;
+      }
+      float const x_74 = x_6.injectionSwitch.x;
+      if ((x_74 > 1.0f)) {
+        threadgroup_barrier(mem_flags::mem_threadgroup);
+      }
+      float const x_79 = x_6.injectionSwitch.x;
+      float const x_81 = x_6.injectionSwitch.y;
+      if ((x_79 > x_81)) {
+        threadgroup_barrier(mem_flags::mem_threadgroup);
+      }
+      float const x_86 = x_6.injectionSwitch.y;
+      z = int(x_86);
+      while (true) {
+        int const x_92 = z;
+        if ((x_92 > 0)) {
+        } else {
+          break;
+        }
+        float const x_95 = GLF_live3s;
+        GLF_live3s = (x_95 + 1.0f);
+        {
+          int const x_97 = z;
+          z = (x_97 - 1);
+        }
+      }
+      int const x_99 = i_1;
+      if ((x_99 >= 1)) {
+        float const x_104 = x_6.injectionSwitch.x;
+        if ((x_104 > 1.0f)) {
+          threadgroup_barrier(mem_flags::mem_threadgroup);
+        }
+      }
+      {
+        int const x_108 = i_1;
+        i_1 = (x_108 + 1);
+      }
+    }
+    {
+      float const x_111 = x_6.injectionSwitch.x;
+      float const x_113 = x_6.injectionSwitch.y;
+      if ((x_111 > x_113)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+kernel void tint_symbol(constant buf1& x_6 [[buffer(1)]], device theSSBO& x_4 [[buffer(0)]]) {
+  main_1(x_6, x_4);
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..62ce971
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,235 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 134
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %theSSBO "theSSBO"
+               OpMemberName %theSSBO 0 "out_data"
+               OpName %x_4 "x_4"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %GLF_live3s "GLF_live3s"
+               OpName %i_1 "i_1"
+               OpName %z "z"
+               OpName %main "main"
+               OpDecorate %theSSBO Block
+               OpMemberDecorate %theSSBO 0 Offset 0
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+        %int = OpTypeInt 32 1
+    %theSSBO = OpTypeStruct %int
+%_ptr_StorageBuffer_theSSBO = OpTypePointer StorageBuffer %theSSBO
+        %x_4 = OpVariable %_ptr_StorageBuffer_theSSBO StorageBuffer
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %16 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %19 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+     %int_42 = OpConstant %int 42
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+     %main_1 = OpFunction %void None %10
+         %13 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %16
+ %GLF_live3s = OpVariable %_ptr_Function_float Function %19
+        %i_1 = OpVariable %_ptr_Function_int Function %16
+          %z = OpVariable %_ptr_Function_int Function %16
+         %25 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %25 %int_42
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %29 = OpLoad %float %28
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %29 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %35
+         %35 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %43 = OpLoad %float %42
+         %44 = OpFOrdGreaterThan %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %45
+         %45 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %49 = OpLoad %float %48
+         %50 = OpConvertFToS %int %49
+               OpStore %i %50
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+         %55 = OpLoad %int %i
+         %57 = OpSGreaterThan %bool %55 %int_0
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %52
+         %58 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %53
+         %53 = OpLabel
+         %62 = OpLoad %int %i
+         %64 = OpISub %int %62 %int_1
+               OpStore %i %64
+               OpBranch %51
+         %52 = OpLabel
+               OpStore %GLF_live3s %float_0
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+               OpStore %i_1 %int_1
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %i_1
+         %76 = OpSLessThan %bool %74 %int_2
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %71
+         %77 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %81 = OpLoad %float %80
+         %83 = OpFOrdGreaterThan %bool %81 %float_1
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %84
+         %85 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %84
+         %84 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %90 = OpLoad %float %89
+         %91 = OpFOrdGreaterThan %bool %88 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %92
+         %93 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %92
+         %92 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpConvertFToS %int %96
+               OpStore %z %97
+               OpBranch %98
+         %98 = OpLabel
+               OpLoopMerge %99 %100 None
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpLoad %int %z
+        %103 = OpSGreaterThan %bool %102 %int_0
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+               OpBranch %99
+        %104 = OpLabel
+        %107 = OpLoad %float %GLF_live3s
+        %108 = OpFAdd %float %107 %float_1
+               OpStore %GLF_live3s %108
+               OpBranch %100
+        %100 = OpLabel
+        %109 = OpLoad %int %z
+        %110 = OpISub %int %109 %int_1
+               OpStore %z %110
+               OpBranch %98
+         %99 = OpLabel
+        %111 = OpLoad %int %i_1
+        %112 = OpSGreaterThanEqual %bool %111 %int_1
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+        %115 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %116 = OpLoad %float %115
+        %117 = OpFOrdGreaterThan %bool %116 %float_1
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %118
+        %118 = OpLabel
+               OpBranch %113
+        %113 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+        %121 = OpLoad %int %i_1
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %i_1 %122
+               OpBranch %70
+         %71 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %126 = OpLoad %float %125
+        %127 = OpFOrdGreaterThan %bool %124 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+               OpBranch %128
+        %130 = OpLabel
+               OpBranch %67
+        %128 = OpLabel
+               OpBranch %66
+         %67 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %10
+        %132 = OpLabel
+        %133 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 68[%68] is not post dominated by the back-edge block 128[%128]
+  %128 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..899baac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,109 @@
+[[block]]
+struct theSSBO {
+  out_data : i32;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+fn main_1() {
+  var i : i32;
+  var GLF_live3s : f32;
+  var i_1 : i32;
+  var z : i32;
+  x_4.out_data = 42;
+  let x_37 : f32 = x_6.injectionSwitch.x;
+  let x_39 : f32 = x_6.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    workgroupBarrier();
+  }
+  let x_44 : f32 = x_6.injectionSwitch.x;
+  let x_46 : f32 = x_6.injectionSwitch.y;
+  if ((x_44 > x_46)) {
+    workgroupBarrier();
+  }
+  let x_51 : f32 = x_6.injectionSwitch.y;
+  i = i32(x_51);
+  loop {
+    let x_57 : i32 = i;
+    if ((x_57 > 0)) {
+    } else {
+      break;
+    }
+    workgroupBarrier();
+
+    continuing {
+      let x_60 : i32 = i;
+      i = (x_60 - 1);
+    }
+  }
+  GLF_live3s = 0.0;
+  loop {
+    i_1 = 1;
+    loop {
+      let x_70 : i32 = i_1;
+      if ((x_70 < 2)) {
+      } else {
+        break;
+      }
+      let x_74 : f32 = x_6.injectionSwitch.x;
+      if ((x_74 > 1.0)) {
+        workgroupBarrier();
+      }
+      let x_79 : f32 = x_6.injectionSwitch.x;
+      let x_81 : f32 = x_6.injectionSwitch.y;
+      if ((x_79 > x_81)) {
+        workgroupBarrier();
+      }
+      let x_86 : f32 = x_6.injectionSwitch.y;
+      z = i32(x_86);
+      loop {
+        let x_92 : i32 = z;
+        if ((x_92 > 0)) {
+        } else {
+          break;
+        }
+        let x_95 : f32 = GLF_live3s;
+        GLF_live3s = (x_95 + 1.0);
+
+        continuing {
+          let x_97 : i32 = z;
+          z = (x_97 - 1);
+        }
+      }
+      let x_99 : i32 = i_1;
+      if ((x_99 >= 1)) {
+        let x_104 : f32 = x_6.injectionSwitch.x;
+        if ((x_104 > 1.0)) {
+          workgroupBarrier();
+        }
+      }
+
+      continuing {
+        let x_108 : i32 = i_1;
+        i_1 = (x_108 + 1);
+      }
+    }
+
+    continuing {
+      let x_111 : f32 = x_6.injectionSwitch.x;
+      let x_113 : f32 = x_6.injectionSwitch.y;
+      if ((x_111 > x_113)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
new file mode 100644
index 0000000..899baac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
@@ -0,0 +1,109 @@
+[[block]]
+struct theSSBO {
+  out_data : i32;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+fn main_1() {
+  var i : i32;
+  var GLF_live3s : f32;
+  var i_1 : i32;
+  var z : i32;
+  x_4.out_data = 42;
+  let x_37 : f32 = x_6.injectionSwitch.x;
+  let x_39 : f32 = x_6.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    workgroupBarrier();
+  }
+  let x_44 : f32 = x_6.injectionSwitch.x;
+  let x_46 : f32 = x_6.injectionSwitch.y;
+  if ((x_44 > x_46)) {
+    workgroupBarrier();
+  }
+  let x_51 : f32 = x_6.injectionSwitch.y;
+  i = i32(x_51);
+  loop {
+    let x_57 : i32 = i;
+    if ((x_57 > 0)) {
+    } else {
+      break;
+    }
+    workgroupBarrier();
+
+    continuing {
+      let x_60 : i32 = i;
+      i = (x_60 - 1);
+    }
+  }
+  GLF_live3s = 0.0;
+  loop {
+    i_1 = 1;
+    loop {
+      let x_70 : i32 = i_1;
+      if ((x_70 < 2)) {
+      } else {
+        break;
+      }
+      let x_74 : f32 = x_6.injectionSwitch.x;
+      if ((x_74 > 1.0)) {
+        workgroupBarrier();
+      }
+      let x_79 : f32 = x_6.injectionSwitch.x;
+      let x_81 : f32 = x_6.injectionSwitch.y;
+      if ((x_79 > x_81)) {
+        workgroupBarrier();
+      }
+      let x_86 : f32 = x_6.injectionSwitch.y;
+      z = i32(x_86);
+      loop {
+        let x_92 : i32 = z;
+        if ((x_92 > 0)) {
+        } else {
+          break;
+        }
+        let x_95 : f32 = GLF_live3s;
+        GLF_live3s = (x_95 + 1.0);
+
+        continuing {
+          let x_97 : i32 = z;
+          z = (x_97 - 1);
+        }
+      }
+      let x_99 : i32 = i_1;
+      if ((x_99 >= 1)) {
+        let x_104 : f32 = x_6.injectionSwitch.x;
+        if ((x_104 > 1.0)) {
+          workgroupBarrier();
+        }
+      }
+
+      continuing {
+        let x_108 : i32 = i_1;
+        i_1 = (x_108 + 1);
+      }
+    }
+
+    continuing {
+      let x_111 : f32 = x_6.injectionSwitch.x;
+      let x_113 : f32 = x_6.injectionSwitch.y;
+      if ((x_111 > x_113)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a18cdf6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,74 @@
+RWByteAddressBuffer x_4 : register(u0, space0);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  int i = 0;
+  float GLF_live3s = 0.0f;
+  int i_1 = 0;
+  int z = 0;
+  x_4.Store(0u, asuint(42));
+  const float x_37 = asfloat(x_6[0].x);
+  const float x_39 = asfloat(x_6[0].y);
+  if ((x_37 > x_39)) {
+    GroupMemoryBarrierWithGroupSync();
+  }
+  const float x_44 = asfloat(x_6[0].x);
+  const float x_46 = asfloat(x_6[0].y);
+  if ((x_44 > x_46)) {
+    GroupMemoryBarrierWithGroupSync();
+  }
+  const float x_51 = asfloat(x_6[0].y);
+  i = int(x_51);
+  {
+    for(; (i > 0); i = (i - 1)) {
+      GroupMemoryBarrierWithGroupSync();
+    }
+  }
+  GLF_live3s = 0.0f;
+  while (true) {
+    i_1 = 1;
+    {
+      for(; (i_1 < 2); i_1 = (i_1 + 1)) {
+        const float x_74 = asfloat(x_6[0].x);
+        if ((x_74 > 1.0f)) {
+          GroupMemoryBarrierWithGroupSync();
+        }
+        const float x_79 = asfloat(x_6[0].x);
+        const float x_81 = asfloat(x_6[0].y);
+        if ((x_79 > x_81)) {
+          GroupMemoryBarrierWithGroupSync();
+        }
+        const float x_86 = asfloat(x_6[0].y);
+        z = int(x_86);
+        {
+          for(; (z > 0); z = (z - 1)) {
+            GLF_live3s = (GLF_live3s + 1.0f);
+          }
+        }
+        if ((i_1 >= 1)) {
+          const float x_104 = asfloat(x_6[0].x);
+          if ((x_104 > 1.0f)) {
+            GroupMemoryBarrierWithGroupSync();
+          }
+        }
+      }
+    }
+    {
+      const float x_111 = asfloat(x_6[0].x);
+      const float x_113 = asfloat(x_6[0].y);
+      if ((x_111 > x_113)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3fa3858
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,102 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct theSSBO {
+  /* 0x0000 */ int out_data;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+
+void main_1(constant buf1& x_6, device theSSBO& x_4) {
+  int i = 0;
+  float GLF_live3s = 0.0f;
+  int i_1 = 0;
+  int z = 0;
+  x_4.out_data = 42;
+  float const x_37 = x_6.injectionSwitch.x;
+  float const x_39 = x_6.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+  }
+  float const x_44 = x_6.injectionSwitch.x;
+  float const x_46 = x_6.injectionSwitch.y;
+  if ((x_44 > x_46)) {
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+  }
+  float const x_51 = x_6.injectionSwitch.y;
+  i = int(x_51);
+  while (true) {
+    int const x_57 = i;
+    if ((x_57 > 0)) {
+    } else {
+      break;
+    }
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+    {
+      int const x_60 = i;
+      i = (x_60 - 1);
+    }
+  }
+  GLF_live3s = 0.0f;
+  while (true) {
+    i_1 = 1;
+    while (true) {
+      int const x_70 = i_1;
+      if ((x_70 < 2)) {
+      } else {
+        break;
+      }
+      float const x_74 = x_6.injectionSwitch.x;
+      if ((x_74 > 1.0f)) {
+        threadgroup_barrier(mem_flags::mem_threadgroup);
+      }
+      float const x_79 = x_6.injectionSwitch.x;
+      float const x_81 = x_6.injectionSwitch.y;
+      if ((x_79 > x_81)) {
+        threadgroup_barrier(mem_flags::mem_threadgroup);
+      }
+      float const x_86 = x_6.injectionSwitch.y;
+      z = int(x_86);
+      while (true) {
+        int const x_92 = z;
+        if ((x_92 > 0)) {
+        } else {
+          break;
+        }
+        float const x_95 = GLF_live3s;
+        GLF_live3s = (x_95 + 1.0f);
+        {
+          int const x_97 = z;
+          z = (x_97 - 1);
+        }
+      }
+      int const x_99 = i_1;
+      if ((x_99 >= 1)) {
+        float const x_104 = x_6.injectionSwitch.x;
+        if ((x_104 > 1.0f)) {
+          threadgroup_barrier(mem_flags::mem_threadgroup);
+        }
+      }
+      {
+        int const x_108 = i_1;
+        i_1 = (x_108 + 1);
+      }
+    }
+    {
+      float const x_111 = x_6.injectionSwitch.x;
+      float const x_113 = x_6.injectionSwitch.y;
+      if ((x_111 > x_113)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+kernel void tint_symbol(constant buf1& x_6 [[buffer(1)]], device theSSBO& x_4 [[buffer(0)]]) {
+  main_1(x_6, x_4);
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..62ce971
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,235 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 134
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %theSSBO "theSSBO"
+               OpMemberName %theSSBO 0 "out_data"
+               OpName %x_4 "x_4"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %GLF_live3s "GLF_live3s"
+               OpName %i_1 "i_1"
+               OpName %z "z"
+               OpName %main "main"
+               OpDecorate %theSSBO Block
+               OpMemberDecorate %theSSBO 0 Offset 0
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+        %int = OpTypeInt 32 1
+    %theSSBO = OpTypeStruct %int
+%_ptr_StorageBuffer_theSSBO = OpTypePointer StorageBuffer %theSSBO
+        %x_4 = OpVariable %_ptr_StorageBuffer_theSSBO StorageBuffer
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %16 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %19 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+     %int_42 = OpConstant %int 42
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+     %main_1 = OpFunction %void None %10
+         %13 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %16
+ %GLF_live3s = OpVariable %_ptr_Function_float Function %19
+        %i_1 = OpVariable %_ptr_Function_int Function %16
+          %z = OpVariable %_ptr_Function_int Function %16
+         %25 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %25 %int_42
+         %28 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %29 = OpLoad %float %28
+         %31 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %29 %32
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %35
+         %35 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %41 = OpLoad %float %40
+         %42 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %43 = OpLoad %float %42
+         %44 = OpFOrdGreaterThan %bool %41 %43
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %45
+         %45 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %49 = OpLoad %float %48
+         %50 = OpConvertFToS %int %49
+               OpStore %i %50
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+         %55 = OpLoad %int %i
+         %57 = OpSGreaterThan %bool %55 %int_0
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %52
+         %58 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %53
+         %53 = OpLabel
+         %62 = OpLoad %int %i
+         %64 = OpISub %int %62 %int_1
+               OpStore %i %64
+               OpBranch %51
+         %52 = OpLabel
+               OpStore %GLF_live3s %float_0
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+               OpStore %i_1 %int_1
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpLoad %int %i_1
+         %76 = OpSLessThan %bool %74 %int_2
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %71
+         %77 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %81 = OpLoad %float %80
+         %83 = OpFOrdGreaterThan %bool %81 %float_1
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %84
+         %85 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %84
+         %84 = OpLabel
+         %87 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %90 = OpLoad %float %89
+         %91 = OpFOrdGreaterThan %bool %88 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %92
+         %93 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %92
+         %92 = OpLabel
+         %95 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpConvertFToS %int %96
+               OpStore %z %97
+               OpBranch %98
+         %98 = OpLabel
+               OpLoopMerge %99 %100 None
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpLoad %int %z
+        %103 = OpSGreaterThan %bool %102 %int_0
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+               OpBranch %99
+        %104 = OpLabel
+        %107 = OpLoad %float %GLF_live3s
+        %108 = OpFAdd %float %107 %float_1
+               OpStore %GLF_live3s %108
+               OpBranch %100
+        %100 = OpLabel
+        %109 = OpLoad %int %z
+        %110 = OpISub %int %109 %int_1
+               OpStore %z %110
+               OpBranch %98
+         %99 = OpLabel
+        %111 = OpLoad %int %i_1
+        %112 = OpSGreaterThanEqual %bool %111 %int_1
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+        %115 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %116 = OpLoad %float %115
+        %117 = OpFOrdGreaterThan %bool %116 %float_1
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %118
+        %118 = OpLabel
+               OpBranch %113
+        %113 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+        %121 = OpLoad %int %i_1
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %i_1 %122
+               OpBranch %70
+         %71 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %126 = OpLoad %float %125
+        %127 = OpFOrdGreaterThan %bool %124 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+               OpBranch %128
+        %130 = OpLabel
+               OpBranch %67
+        %128 = OpLabel
+               OpBranch %66
+         %67 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %10
+        %132 = OpLabel
+        %133 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 68[%68] is not post dominated by the back-edge block 128[%128]
+  %128 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..899baac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,109 @@
+[[block]]
+struct theSSBO {
+  out_data : i32;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+fn main_1() {
+  var i : i32;
+  var GLF_live3s : f32;
+  var i_1 : i32;
+  var z : i32;
+  x_4.out_data = 42;
+  let x_37 : f32 = x_6.injectionSwitch.x;
+  let x_39 : f32 = x_6.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    workgroupBarrier();
+  }
+  let x_44 : f32 = x_6.injectionSwitch.x;
+  let x_46 : f32 = x_6.injectionSwitch.y;
+  if ((x_44 > x_46)) {
+    workgroupBarrier();
+  }
+  let x_51 : f32 = x_6.injectionSwitch.y;
+  i = i32(x_51);
+  loop {
+    let x_57 : i32 = i;
+    if ((x_57 > 0)) {
+    } else {
+      break;
+    }
+    workgroupBarrier();
+
+    continuing {
+      let x_60 : i32 = i;
+      i = (x_60 - 1);
+    }
+  }
+  GLF_live3s = 0.0;
+  loop {
+    i_1 = 1;
+    loop {
+      let x_70 : i32 = i_1;
+      if ((x_70 < 2)) {
+      } else {
+        break;
+      }
+      let x_74 : f32 = x_6.injectionSwitch.x;
+      if ((x_74 > 1.0)) {
+        workgroupBarrier();
+      }
+      let x_79 : f32 = x_6.injectionSwitch.x;
+      let x_81 : f32 = x_6.injectionSwitch.y;
+      if ((x_79 > x_81)) {
+        workgroupBarrier();
+      }
+      let x_86 : f32 = x_6.injectionSwitch.y;
+      z = i32(x_86);
+      loop {
+        let x_92 : i32 = z;
+        if ((x_92 > 0)) {
+        } else {
+          break;
+        }
+        let x_95 : f32 = GLF_live3s;
+        GLF_live3s = (x_95 + 1.0);
+
+        continuing {
+          let x_97 : i32 = z;
+          z = (x_97 - 1);
+        }
+      }
+      let x_99 : i32 = i_1;
+      if ((x_99 >= 1)) {
+        let x_104 : f32 = x_6.injectionSwitch.x;
+        if ((x_104 > 1.0)) {
+          workgroupBarrier();
+        }
+      }
+
+      continuing {
+        let x_108 : i32 = i_1;
+        i_1 = (x_108 + 1);
+      }
+    }
+
+    continuing {
+      let x_111 : f32 = x_6.injectionSwitch.x;
+      let x_113 : f32 = x_6.injectionSwitch.y;
+      if ((x_111 > x_113)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm
new file mode 100644
index 0000000..7aefe46
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm
@@ -0,0 +1,103 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %20 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %false = OpConstantFalse %bool
+       %main = OpFunction %void None %7
+         %25 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpPhi %bool %false %26 %31 %32
+               OpLoopMerge %33 %32 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFOrdGreaterThan %bool %36 %float_0
+               OpLoopMerge %38 %39 None
+               OpBranchConditional %37 %40 %38
+         %40 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %46 = OpLoad %float %45
+         %47 = OpFOrdGreaterThan %bool %46 %float_0
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %51
+         %52 = OpUndef %v4float
+               OpBranch %42
+         %48 = OpLabel
+         %53 = OpCompositeConstruct %v4float %46 %46 %46 %46
+         %54 = OpFAdd %v4float %20 %53
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+         %55 = OpPhi %v4float %52 %49 %54 %48
+               OpStore %_GLF_color %55
+               OpBranch %38
+         %39 = OpLabel
+               OpBranch %34
+         %38 = OpLabel
+         %31 = OpPhi %bool %30 %34 %true %42
+               OpSelectionMerge %56 None
+               OpBranchConditional %31 %33 %32
+         %56 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+               OpBranch %29
+         %33 = OpLabel
+               OpSelectionMerge %57 None
+               OpBranchConditional %31 %27 %57
+         %57 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+         %51 = OpFunction %void None %7
+         %58 = OpLabel
+               OpKill
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..43d7f1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,77 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void x_51() {
+  discard;
+}
+
+void main_1() {
+  while (true) {
+    bool x_31 = false;
+    bool x_30_phi = false;
+    x_30_phi = false;
+    while (true) {
+      bool x_31_phi = false;
+      const bool x_30 = x_30_phi;
+      while (true) {
+        float4 x_52 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        float4 x_54 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        float4 x_55_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        const float x_36 = asfloat(x_5[0].y);
+        x_31_phi = x_30;
+        if ((x_36 > 0.0f)) {
+        } else {
+          break;
+        }
+        while (true) {
+          const float x_46 = asfloat(x_5[0].x);
+          if ((x_46 > 0.0f)) {
+            x_51();
+            x_52 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+            x_55_phi = x_52;
+            break;
+          }
+          x_54 = (float4(1.0f, 0.0f, 0.0f, 1.0f) + float4(x_46, x_46, x_46, x_46));
+          x_55_phi = x_54;
+          break;
+        }
+        x_GLF_color = x_55_phi;
+        x_31_phi = true;
+        break;
+      }
+      x_31 = x_31_phi;
+      if (x_31) {
+        break;
+      } else {
+        {
+          x_30_phi = x_31;
+        }
+        continue;
+      }
+      {
+        x_30_phi = x_31;
+      }
+    }
+    if (x_31) {
+      break;
+    }
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..41639eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,81 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void x_51() {
+  discard_fragment();
+}
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  while (true) {
+    bool x_31 = false;
+    bool x_30_phi = false;
+    x_30_phi = false;
+    while (true) {
+      bool x_31_phi = false;
+      bool const x_30 = x_30_phi;
+      while (true) {
+        float4 x_52 = 0.0f;
+        float4 x_54 = 0.0f;
+        float4 x_55_phi = 0.0f;
+        float const x_36 = x_5.injectionSwitch.y;
+        x_31_phi = x_30;
+        if ((x_36 > 0.0f)) {
+        } else {
+          break;
+        }
+        while (true) {
+          float const x_46 = x_5.injectionSwitch.x;
+          if ((x_46 > 0.0f)) {
+            x_51();
+            x_52 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+            x_55_phi = x_52;
+            break;
+          }
+          x_54 = (float4(1.0f, 0.0f, 0.0f, 1.0f) + float4(x_46, x_46, x_46, x_46));
+          x_55_phi = x_54;
+          break;
+        }
+        float4 const x_55 = x_55_phi;
+        *(tint_symbol_4) = x_55;
+        x_31_phi = true;
+        break;
+      }
+      x_31 = x_31_phi;
+      if (x_31) {
+        break;
+      } else {
+        {
+          x_30_phi = x_31;
+        }
+        continue;
+      }
+      {
+        x_30_phi = x_31;
+      }
+    }
+    if (x_31) {
+      break;
+    }
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6e67011
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,179 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 93
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %x_51 "x_51"
+               OpName %main_1 "main_1"
+               OpName %x_31 "x_31"
+               OpName %x_30_phi "x_30_phi"
+               OpName %x_31_phi "x_31_phi"
+               OpName %x_52 "x_52"
+               OpName %x_54 "x_54"
+               OpName %x_55_phi "x_55_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %25 = OpConstantNull %bool
+      %false = OpConstantFalse %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+         %63 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %66 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %81 = OpTypeFunction %void %main_out
+       %x_51 = OpFunction %void None %12
+         %15 = OpLabel
+               OpKill
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %12
+         %17 = OpLabel
+       %x_31 = OpVariable %_ptr_Function_bool Function %25
+   %x_30_phi = OpVariable %_ptr_Function_bool Function %25
+   %x_31_phi = OpVariable %_ptr_Function_bool Function %25
+       %x_52 = OpVariable %_ptr_Function_v4float Function %9
+       %x_54 = OpVariable %_ptr_Function_v4float Function %9
+   %x_55_phi = OpVariable %_ptr_Function_v4float Function %9
+               OpBranch %18
+         %18 = OpLabel
+               OpLoopMerge %19 %20 None
+               OpBranch %21
+         %21 = OpLabel
+               OpStore %x_30_phi %false
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+         %33 = OpLoad %bool %x_30_phi
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %47 = OpLoad %float %46
+               OpStore %x_31_phi %33
+         %49 = OpFOrdGreaterThan %bool %47 %float_0
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %35
+         %50 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %58 = OpLoad %float %57
+         %59 = OpFOrdGreaterThan %bool %58 %float_0
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpFunctionCall %void %x_51
+               OpStore %x_52 %63
+         %64 = OpLoad %v4float %x_52
+               OpStore %x_55_phi %64
+               OpBranch %54
+         %60 = OpLabel
+         %67 = OpCompositeConstruct %v4float %58 %58 %58 %58
+         %68 = OpFAdd %v4float %66 %67
+               OpStore %x_54 %68
+         %69 = OpLoad %v4float %x_54
+               OpStore %x_55_phi %69
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+         %70 = OpLoad %v4float %x_55_phi
+               OpStore %x_GLF_color %70
+               OpStore %x_31_phi %true
+               OpBranch %35
+         %36 = OpLabel
+               OpBranch %34
+         %35 = OpLabel
+         %72 = OpLoad %bool %x_31_phi
+               OpStore %x_31 %72
+         %73 = OpLoad %bool %x_31
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %29
+         %76 = OpLabel
+               OpBranch %30
+         %74 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+         %77 = OpLoad %bool %x_31
+               OpStore %x_30_phi %77
+               OpBranch %28
+         %29 = OpLabel
+         %78 = OpLoad %bool %x_31
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpBranch %19
+         %79 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpBranch %18
+         %19 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %81
+%tint_symbol = OpFunctionParameter %main_out
+         %85 = OpLabel
+         %86 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %86
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %88 = OpLabel
+         %89 = OpFunctionCall %void %main_1
+         %91 = OpLoad %v4float %x_GLF_color
+         %92 = OpCompositeConstruct %main_out %91
+         %90 = OpFunctionCall %void %tint_symbol_2 %92
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..96cc10e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,77 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn x_51() {
+  discard;
+}
+
+fn main_1() {
+  loop {
+    var x_31 : bool;
+    var x_30_phi : bool;
+    x_30_phi = false;
+    loop {
+      var x_31_phi : bool;
+      let x_30 : bool = x_30_phi;
+      loop {
+        var x_52 : vec4<f32>;
+        var x_54 : vec4<f32>;
+        var x_55_phi : vec4<f32>;
+        let x_36 : f32 = x_5.injectionSwitch.y;
+        x_31_phi = x_30;
+        if ((x_36 > 0.0)) {
+        } else {
+          break;
+        }
+        loop {
+          let x_46 : f32 = x_5.injectionSwitch.x;
+          if ((x_46 > 0.0)) {
+            x_51();
+            x_52 = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+            x_55_phi = x_52;
+            break;
+          }
+          x_54 = (vec4<f32>(1.0, 0.0, 0.0, 1.0) + vec4<f32>(x_46, x_46, x_46, x_46));
+          x_55_phi = x_54;
+          break;
+        }
+        let x_55 : vec4<f32> = x_55_phi;
+        x_GLF_color = x_55;
+        x_31_phi = true;
+        break;
+      }
+      x_31 = x_31_phi;
+      if (x_31) {
+        break;
+      } else {
+        continue;
+      }
+
+      continuing {
+        x_30_phi = x_31;
+      }
+    }
+    if (x_31) {
+      break;
+    }
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
new file mode 100644
index 0000000..96cc10e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
@@ -0,0 +1,77 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn x_51() {
+  discard;
+}
+
+fn main_1() {
+  loop {
+    var x_31 : bool;
+    var x_30_phi : bool;
+    x_30_phi = false;
+    loop {
+      var x_31_phi : bool;
+      let x_30 : bool = x_30_phi;
+      loop {
+        var x_52 : vec4<f32>;
+        var x_54 : vec4<f32>;
+        var x_55_phi : vec4<f32>;
+        let x_36 : f32 = x_5.injectionSwitch.y;
+        x_31_phi = x_30;
+        if ((x_36 > 0.0)) {
+        } else {
+          break;
+        }
+        loop {
+          let x_46 : f32 = x_5.injectionSwitch.x;
+          if ((x_46 > 0.0)) {
+            x_51();
+            x_52 = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+            x_55_phi = x_52;
+            break;
+          }
+          x_54 = (vec4<f32>(1.0, 0.0, 0.0, 1.0) + vec4<f32>(x_46, x_46, x_46, x_46));
+          x_55_phi = x_54;
+          break;
+        }
+        let x_55 : vec4<f32> = x_55_phi;
+        x_GLF_color = x_55;
+        x_31_phi = true;
+        break;
+      }
+      x_31 = x_31_phi;
+      if (x_31) {
+        break;
+      } else {
+        continue;
+      }
+
+      continuing {
+        x_30_phi = x_31;
+      }
+    }
+    if (x_31) {
+      break;
+    }
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..43d7f1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,77 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void x_51() {
+  discard;
+}
+
+void main_1() {
+  while (true) {
+    bool x_31 = false;
+    bool x_30_phi = false;
+    x_30_phi = false;
+    while (true) {
+      bool x_31_phi = false;
+      const bool x_30 = x_30_phi;
+      while (true) {
+        float4 x_52 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        float4 x_54 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        float4 x_55_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        const float x_36 = asfloat(x_5[0].y);
+        x_31_phi = x_30;
+        if ((x_36 > 0.0f)) {
+        } else {
+          break;
+        }
+        while (true) {
+          const float x_46 = asfloat(x_5[0].x);
+          if ((x_46 > 0.0f)) {
+            x_51();
+            x_52 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+            x_55_phi = x_52;
+            break;
+          }
+          x_54 = (float4(1.0f, 0.0f, 0.0f, 1.0f) + float4(x_46, x_46, x_46, x_46));
+          x_55_phi = x_54;
+          break;
+        }
+        x_GLF_color = x_55_phi;
+        x_31_phi = true;
+        break;
+      }
+      x_31 = x_31_phi;
+      if (x_31) {
+        break;
+      } else {
+        {
+          x_30_phi = x_31;
+        }
+        continue;
+      }
+      {
+        x_30_phi = x_31;
+      }
+    }
+    if (x_31) {
+      break;
+    }
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..41639eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,81 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void x_51() {
+  discard_fragment();
+}
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  while (true) {
+    bool x_31 = false;
+    bool x_30_phi = false;
+    x_30_phi = false;
+    while (true) {
+      bool x_31_phi = false;
+      bool const x_30 = x_30_phi;
+      while (true) {
+        float4 x_52 = 0.0f;
+        float4 x_54 = 0.0f;
+        float4 x_55_phi = 0.0f;
+        float const x_36 = x_5.injectionSwitch.y;
+        x_31_phi = x_30;
+        if ((x_36 > 0.0f)) {
+        } else {
+          break;
+        }
+        while (true) {
+          float const x_46 = x_5.injectionSwitch.x;
+          if ((x_46 > 0.0f)) {
+            x_51();
+            x_52 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+            x_55_phi = x_52;
+            break;
+          }
+          x_54 = (float4(1.0f, 0.0f, 0.0f, 1.0f) + float4(x_46, x_46, x_46, x_46));
+          x_55_phi = x_54;
+          break;
+        }
+        float4 const x_55 = x_55_phi;
+        *(tint_symbol_4) = x_55;
+        x_31_phi = true;
+        break;
+      }
+      x_31 = x_31_phi;
+      if (x_31) {
+        break;
+      } else {
+        {
+          x_30_phi = x_31;
+        }
+        continue;
+      }
+      {
+        x_30_phi = x_31;
+      }
+    }
+    if (x_31) {
+      break;
+    }
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6e67011
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,179 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 93
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %x_51 "x_51"
+               OpName %main_1 "main_1"
+               OpName %x_31 "x_31"
+               OpName %x_30_phi "x_30_phi"
+               OpName %x_31_phi "x_31_phi"
+               OpName %x_52 "x_52"
+               OpName %x_54 "x_54"
+               OpName %x_55_phi "x_55_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %25 = OpConstantNull %bool
+      %false = OpConstantFalse %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+         %63 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+    %float_1 = OpConstant %float 1
+         %66 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %81 = OpTypeFunction %void %main_out
+       %x_51 = OpFunction %void None %12
+         %15 = OpLabel
+               OpKill
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %12
+         %17 = OpLabel
+       %x_31 = OpVariable %_ptr_Function_bool Function %25
+   %x_30_phi = OpVariable %_ptr_Function_bool Function %25
+   %x_31_phi = OpVariable %_ptr_Function_bool Function %25
+       %x_52 = OpVariable %_ptr_Function_v4float Function %9
+       %x_54 = OpVariable %_ptr_Function_v4float Function %9
+   %x_55_phi = OpVariable %_ptr_Function_v4float Function %9
+               OpBranch %18
+         %18 = OpLabel
+               OpLoopMerge %19 %20 None
+               OpBranch %21
+         %21 = OpLabel
+               OpStore %x_30_phi %false
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+         %33 = OpLoad %bool %x_30_phi
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %47 = OpLoad %float %46
+               OpStore %x_31_phi %33
+         %49 = OpFOrdGreaterThan %bool %47 %float_0
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+               OpBranch %50
+         %52 = OpLabel
+               OpBranch %35
+         %50 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %58 = OpLoad %float %57
+         %59 = OpFOrdGreaterThan %bool %58 %float_0
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpFunctionCall %void %x_51
+               OpStore %x_52 %63
+         %64 = OpLoad %v4float %x_52
+               OpStore %x_55_phi %64
+               OpBranch %54
+         %60 = OpLabel
+         %67 = OpCompositeConstruct %v4float %58 %58 %58 %58
+         %68 = OpFAdd %v4float %66 %67
+               OpStore %x_54 %68
+         %69 = OpLoad %v4float %x_54
+               OpStore %x_55_phi %69
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+         %70 = OpLoad %v4float %x_55_phi
+               OpStore %x_GLF_color %70
+               OpStore %x_31_phi %true
+               OpBranch %35
+         %36 = OpLabel
+               OpBranch %34
+         %35 = OpLabel
+         %72 = OpLoad %bool %x_31_phi
+               OpStore %x_31 %72
+         %73 = OpLoad %bool %x_31
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %29
+         %76 = OpLabel
+               OpBranch %30
+         %74 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+         %77 = OpLoad %bool %x_31
+               OpStore %x_30_phi %77
+               OpBranch %28
+         %29 = OpLabel
+         %78 = OpLoad %bool %x_31
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpBranch %19
+         %79 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpBranch %18
+         %19 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %81
+%tint_symbol = OpFunctionParameter %main_out
+         %85 = OpLabel
+         %86 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %86
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %88 = OpLabel
+         %89 = OpFunctionCall %void %main_1
+         %91 = OpLoad %v4float %x_GLF_color
+         %92 = OpCompositeConstruct %main_out %91
+         %90 = OpFunctionCall %void %tint_symbol_2 %92
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..96cc10e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,77 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn x_51() {
+  discard;
+}
+
+fn main_1() {
+  loop {
+    var x_31 : bool;
+    var x_30_phi : bool;
+    x_30_phi = false;
+    loop {
+      var x_31_phi : bool;
+      let x_30 : bool = x_30_phi;
+      loop {
+        var x_52 : vec4<f32>;
+        var x_54 : vec4<f32>;
+        var x_55_phi : vec4<f32>;
+        let x_36 : f32 = x_5.injectionSwitch.y;
+        x_31_phi = x_30;
+        if ((x_36 > 0.0)) {
+        } else {
+          break;
+        }
+        loop {
+          let x_46 : f32 = x_5.injectionSwitch.x;
+          if ((x_46 > 0.0)) {
+            x_51();
+            x_52 = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+            x_55_phi = x_52;
+            break;
+          }
+          x_54 = (vec4<f32>(1.0, 0.0, 0.0, 1.0) + vec4<f32>(x_46, x_46, x_46, x_46));
+          x_55_phi = x_54;
+          break;
+        }
+        let x_55 : vec4<f32> = x_55_phi;
+        x_GLF_color = x_55;
+        x_31_phi = true;
+        break;
+      }
+      x_31 = x_31_phi;
+      if (x_31) {
+        break;
+      } else {
+        continue;
+      }
+
+      continuing {
+        x_30_phi = x_31;
+      }
+    }
+    if (x_31) {
+      break;
+    }
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm
new file mode 100644
index 0000000..0891e97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm
@@ -0,0 +1,84 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %false = OpConstantFalse %bool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %26 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %8
+         %28 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %37 = OpLoad %float %36
+         %38 = OpFOrdLessThan %bool %37 %float_0
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %39
+         %40 = OpLabel
+         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %42 = OpLoad %float %41
+         %43 = OpFOrdGreaterThan %bool %float_1 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %34
+         %45 = OpLabel
+               OpKill
+         %44 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpBranchConditional %false %32 %33
+         %39 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+         %46 = OpPhi %bool %true %39 %false %34
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %30 %47
+         %47 = OpLabel
+               OpBranch %30
+         %31 = OpLabel
+               OpBranch %29
+         %30 = OpLabel
+               OpStore %_GLF_color %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..4dda860
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,71 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  while (true) {
+    bool x_46_phi = false;
+    while (true) {
+      const float x_37 = gl_FragCoord.x;
+      if ((x_37 < 0.0f)) {
+        const float x_42 = asfloat(x_6[0].y);
+        if ((1.0f > x_42)) {
+          discard;
+        } else {
+          {
+            x_46_phi = false;
+            if (false) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+        {
+          x_46_phi = false;
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      x_46_phi = true;
+      break;
+      {
+        x_46_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_46_phi) {
+      break;
+    }
+    break;
+  }
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..28d4e20
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  while (true) {
+    bool x_46_phi = false;
+    while (true) {
+      float const x_37 = (*(tint_symbol_5)).x;
+      if ((x_37 < 0.0f)) {
+        float const x_42 = x_6.injectionSwitch.y;
+        if ((1.0f > x_42)) {
+          discard_fragment();
+        } else {
+          {
+            x_46_phi = false;
+            if (false) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+        {
+          x_46_phi = false;
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      x_46_phi = true;
+      break;
+      {
+        x_46_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    bool const x_46 = x_46_phi;
+    if (x_46) {
+      break;
+    }
+    break;
+  }
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..67f484d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,141 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_46_phi "x_46_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %26 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+   %x_46_phi = OpVariable %_ptr_Function_bool Function %26
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %34 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %35 = OpLoad %float %34
+         %37 = OpFOrdLessThan %bool %35 %float_0
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %43 = OpLoad %float %42
+         %45 = OpFOrdGreaterThan %bool %float_1 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpKill
+         %48 = OpLabel
+               OpBranch %29
+         %46 = OpLabel
+               OpBranch %29
+         %38 = OpLabel
+               OpStore %x_46_phi %true
+               OpBranch %28
+         %29 = OpLabel
+               OpStore %x_46_phi %false
+               OpSelectionMerge %51 None
+               OpBranchConditional %false %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %28
+         %51 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+         %54 = OpLoad %bool %x_46_phi
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpBranch %20
+         %55 = OpLabel
+               OpBranch %20
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpStore %x_GLF_color %57
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %58
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %65 = OpLabel
+         %66 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %66
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_3 %70
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 29[%29] is not post dominated by the back-edge block 51[%51]
+  %51 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2da08c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  loop {
+    var x_46_phi : bool;
+    loop {
+      let x_37 : f32 = gl_FragCoord.x;
+      if ((x_37 < 0.0)) {
+        let x_42 : f32 = x_6.injectionSwitch.y;
+        if ((1.0 > x_42)) {
+          discard;
+        } else {
+          continue;
+        }
+        continue;
+      }
+      x_46_phi = true;
+      break;
+
+      continuing {
+        x_46_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    let x_46 : bool = x_46_phi;
+    if (x_46) {
+      break;
+    }
+    break;
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
new file mode 100644
index 0000000..2da08c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  loop {
+    var x_46_phi : bool;
+    loop {
+      let x_37 : f32 = gl_FragCoord.x;
+      if ((x_37 < 0.0)) {
+        let x_42 : f32 = x_6.injectionSwitch.y;
+        if ((1.0 > x_42)) {
+          discard;
+        } else {
+          continue;
+        }
+        continue;
+      }
+      x_46_phi = true;
+      break;
+
+      continuing {
+        x_46_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    let x_46 : bool = x_46_phi;
+    if (x_46) {
+      break;
+    }
+    break;
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4dda860
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,71 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  while (true) {
+    bool x_46_phi = false;
+    while (true) {
+      const float x_37 = gl_FragCoord.x;
+      if ((x_37 < 0.0f)) {
+        const float x_42 = asfloat(x_6[0].y);
+        if ((1.0f > x_42)) {
+          discard;
+        } else {
+          {
+            x_46_phi = false;
+            if (false) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+        {
+          x_46_phi = false;
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      x_46_phi = true;
+      break;
+      {
+        x_46_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_46_phi) {
+      break;
+    }
+    break;
+  }
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..28d4e20
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  while (true) {
+    bool x_46_phi = false;
+    while (true) {
+      float const x_37 = (*(tint_symbol_5)).x;
+      if ((x_37 < 0.0f)) {
+        float const x_42 = x_6.injectionSwitch.y;
+        if ((1.0f > x_42)) {
+          discard_fragment();
+        } else {
+          {
+            x_46_phi = false;
+            if (false) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+        {
+          x_46_phi = false;
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      x_46_phi = true;
+      break;
+      {
+        x_46_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    bool const x_46 = x_46_phi;
+    if (x_46) {
+      break;
+    }
+    break;
+  }
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..67f484d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,141 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_46_phi "x_46_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %26 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+   %x_46_phi = OpVariable %_ptr_Function_bool Function %26
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %34 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %35 = OpLoad %float %34
+         %37 = OpFOrdLessThan %bool %35 %float_0
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %43 = OpLoad %float %42
+         %45 = OpFOrdGreaterThan %bool %float_1 %43
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpKill
+         %48 = OpLabel
+               OpBranch %29
+         %46 = OpLabel
+               OpBranch %29
+         %38 = OpLabel
+               OpStore %x_46_phi %true
+               OpBranch %28
+         %29 = OpLabel
+               OpStore %x_46_phi %false
+               OpSelectionMerge %51 None
+               OpBranchConditional %false %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %28
+         %51 = OpLabel
+               OpBranch %27
+         %28 = OpLabel
+         %54 = OpLoad %bool %x_46_phi
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpBranch %20
+         %55 = OpLabel
+               OpBranch %20
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpStore %x_GLF_color %57
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %58
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %65 = OpLabel
+         %66 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %66
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_3 %70
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 29[%29] is not post dominated by the back-edge block 51[%51]
+  %51 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2da08c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  loop {
+    var x_46_phi : bool;
+    loop {
+      let x_37 : f32 = gl_FragCoord.x;
+      if ((x_37 < 0.0)) {
+        let x_42 : f32 = x_6.injectionSwitch.y;
+        if ((1.0 > x_42)) {
+          discard;
+        } else {
+          continue;
+        }
+        continue;
+      }
+      x_46_phi = true;
+      break;
+
+      continuing {
+        x_46_phi = false;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    let x_46 : bool = x_46_phi;
+    if (x_46) {
+      break;
+    }
+    break;
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm
new file mode 100644
index 0000000..cb630a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm
@@ -0,0 +1,92 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %data "data"
+               OpName %i "i"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_200000003 = OpConstant %float 0.200000003
+%float_0_300000012 = OpConstant %float 0.300000012
+%float_0_400000006 = OpConstant %float 0.400000006
+  %float_0_5 = OpConstant %float 0.5
+%float_0_600000024 = OpConstant %float 0.600000024
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_800000012 = OpConstant %float 0.800000012
+%float_0_899999976 = OpConstant %float 0.899999976
+    %float_1 = OpConstant %float 1
+         %28 = OpConstantComposite %_arr_float_uint_10 %float_0_100000001 %float_0_200000003 %float_0_300000012 %float_0_400000006 %float_0_5 %float_0_600000024 %float_0_699999988 %float_0_800000012 %float_0_899999976 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %12
+         %42 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %data %28
+               OpStore %i %int_0
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+          %7 = OpLoad %int %i
+         %47 = OpSLessThan %bool %7 %int_10
+               OpBranchConditional %47 %48 %44
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpFOrdLessThan %bool %50 %float_0
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpKill
+         %52 = OpLabel
+          %8 = OpLoad %int %i
+         %54 = OpAccessChain %_ptr_Function_float %data %8
+         %55 = OpLoad %float %54
+         %56 = OpAccessChain %_ptr_Function_float %data %int_0
+               OpStore %56 %55
+               OpBranch %45
+         %45 = OpLabel
+          %9 = OpLoad %int %i
+         %10 = OpIAdd %int %9 %int_1
+               OpStore %i %10
+               OpBranch %43
+         %44 = OpLabel
+         %57 = OpAccessChain %_ptr_Function_float %data %int_0
+         %58 = OpLoad %float %57
+         %59 = OpCompositeConstruct %v4float %58 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %59
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..669e1a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,42 @@
+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() {
+  float data[10] = (float[10])0;
+  int i = 0;
+  const float tint_symbol_4[10] = {0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f, 0.5f, 0.600000024f, 0.699999988f, 0.800000012f, 0.899999976f, 1.0f};
+  data = tint_symbol_4;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      const float x_50 = gl_FragCoord.x;
+      if ((x_50 < 0.0f)) {
+        discard;
+      }
+      const float x_55 = data[i];
+      data[0] = x_55;
+    }
+  }
+  const float x_58 = data[0];
+  x_GLF_color = float4(x_58, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..08b8b28
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,52 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper data = {};
+  int i = 0;
+  tint_array_wrapper const tint_symbol_4 = {.arr={0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f, 0.5f, 0.600000024f, 0.699999988f, 0.800000012f, 0.899999976f, 1.0f}};
+  data = tint_symbol_4;
+  i = 0;
+  while (true) {
+    int const x_7 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    float const x_50 = (*(tint_symbol_6)).x;
+    if ((x_50 < 0.0f)) {
+      discard_fragment();
+    }
+    int const x_8 = i;
+    float const x_55 = data.arr[x_8];
+    data.arr[0] = x_55;
+    {
+      int const x_9 = i;
+      i = (x_9 + 1);
+    }
+  }
+  float const x_58 = data.arr[0];
+  *(tint_symbol_7) = float4(x_58, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ca3016a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,129 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 80
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %20 = OpConstantNull %_arr_float_uint_10
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_200000003 = OpConstant %float 0.200000003
+%float_0_300000012 = OpConstant %float 0.300000012
+%float_0_400000006 = OpConstant %float 0.400000006
+  %float_0_5 = OpConstant %float 0.5
+%float_0_600000024 = OpConstant %float 0.600000024
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_800000012 = OpConstant %float 0.800000012
+%float_0_899999976 = OpConstant %float 0.899999976
+    %float_1 = OpConstant %float 1
+         %35 = OpConstantComposite %_arr_float_uint_10 %float_0_100000001 %float_0_200000003 %float_0_300000012 %float_0_400000006 %float_0_5 %float_0_600000024 %float_0_699999988 %float_0_800000012 %float_0_899999976 %float_1
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %20
+          %i = OpVariable %_ptr_Function_int Function %24
+               OpStore %data %35
+               OpStore %i %int_0
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %i
+         %43 = OpSLessThan %bool %41 %int_10
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %38
+         %45 = OpLabel
+         %50 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %51 = OpLoad %float %50
+         %53 = OpFOrdLessThan %bool %51 %float_0
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpKill
+         %54 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Function_float %data %56
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Function_float %data %int_0
+               OpStore %60 %59
+               OpBranch %39
+         %39 = OpLabel
+         %61 = OpLoad %int %i
+         %63 = OpIAdd %int %61 %int_1
+               OpStore %i %63
+               OpBranch %37
+         %38 = OpLabel
+         %64 = OpAccessChain %_ptr_Function_float %data %int_0
+         %65 = OpLoad %float %64
+         %66 = OpCompositeConstruct %v4float %65 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %66
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %67
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %74 = OpLabel
+         %75 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %75
+         %76 = OpFunctionCall %void %main_1
+         %78 = OpLoad %v4float %x_GLF_color
+         %79 = OpCompositeConstruct %main_out %78
+         %77 = OpFunctionCall %void %tint_symbol_3 %79
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6981641
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,44 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 10>;
+  var i : i32;
+  data = array<f32, 10>(0.100000001, 0.200000003, 0.300000012, 0.400000006, 0.5, 0.600000024, 0.699999988, 0.800000012, 0.899999976, 1.0);
+  i = 0;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    let x_50 : f32 = gl_FragCoord.x;
+    if ((x_50 < 0.0)) {
+      discard;
+    }
+    let x_8 : i32 = i;
+    let x_55 : f32 = data[x_8];
+    data[0] = x_55;
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 + 1);
+    }
+  }
+  let x_58 : f32 = data[0];
+  x_GLF_color = vec4<f32>(x_58, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
new file mode 100644
index 0000000..6981641
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
@@ -0,0 +1,44 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 10>;
+  var i : i32;
+  data = array<f32, 10>(0.100000001, 0.200000003, 0.300000012, 0.400000006, 0.5, 0.600000024, 0.699999988, 0.800000012, 0.899999976, 1.0);
+  i = 0;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    let x_50 : f32 = gl_FragCoord.x;
+    if ((x_50 < 0.0)) {
+      discard;
+    }
+    let x_8 : i32 = i;
+    let x_55 : f32 = data[x_8];
+    data[0] = x_55;
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 + 1);
+    }
+  }
+  let x_58 : f32 = data[0];
+  x_GLF_color = vec4<f32>(x_58, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..669e1a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,42 @@
+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() {
+  float data[10] = (float[10])0;
+  int i = 0;
+  const float tint_symbol_4[10] = {0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f, 0.5f, 0.600000024f, 0.699999988f, 0.800000012f, 0.899999976f, 1.0f};
+  data = tint_symbol_4;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      const float x_50 = gl_FragCoord.x;
+      if ((x_50 < 0.0f)) {
+        discard;
+      }
+      const float x_55 = data[i];
+      data[0] = x_55;
+    }
+  }
+  const float x_58 = data[0];
+  x_GLF_color = float4(x_58, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..08b8b28
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,52 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper data = {};
+  int i = 0;
+  tint_array_wrapper const tint_symbol_4 = {.arr={0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f, 0.5f, 0.600000024f, 0.699999988f, 0.800000012f, 0.899999976f, 1.0f}};
+  data = tint_symbol_4;
+  i = 0;
+  while (true) {
+    int const x_7 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    float const x_50 = (*(tint_symbol_6)).x;
+    if ((x_50 < 0.0f)) {
+      discard_fragment();
+    }
+    int const x_8 = i;
+    float const x_55 = data.arr[x_8];
+    data.arr[0] = x_55;
+    {
+      int const x_9 = i;
+      i = (x_9 + 1);
+    }
+  }
+  float const x_58 = data.arr[0];
+  *(tint_symbol_7) = float4(x_58, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ca3016a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,129 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 80
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %20 = OpConstantNull %_arr_float_uint_10
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_200000003 = OpConstant %float 0.200000003
+%float_0_300000012 = OpConstant %float 0.300000012
+%float_0_400000006 = OpConstant %float 0.400000006
+  %float_0_5 = OpConstant %float 0.5
+%float_0_600000024 = OpConstant %float 0.600000024
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_800000012 = OpConstant %float 0.800000012
+%float_0_899999976 = OpConstant %float 0.899999976
+    %float_1 = OpConstant %float 1
+         %35 = OpConstantComposite %_arr_float_uint_10 %float_0_100000001 %float_0_200000003 %float_0_300000012 %float_0_400000006 %float_0_5 %float_0_600000024 %float_0_699999988 %float_0_800000012 %float_0_899999976 %float_1
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %20
+          %i = OpVariable %_ptr_Function_int Function %24
+               OpStore %data %35
+               OpStore %i %int_0
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpLoad %int %i
+         %43 = OpSLessThan %bool %41 %int_10
+               OpSelectionMerge %45 None
+               OpBranchConditional %43 %46 %47
+         %46 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+               OpBranch %38
+         %45 = OpLabel
+         %50 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %51 = OpLoad %float %50
+         %53 = OpFOrdLessThan %bool %51 %float_0
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpKill
+         %54 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpAccessChain %_ptr_Function_float %data %56
+         %59 = OpLoad %float %58
+         %60 = OpAccessChain %_ptr_Function_float %data %int_0
+               OpStore %60 %59
+               OpBranch %39
+         %39 = OpLabel
+         %61 = OpLoad %int %i
+         %63 = OpIAdd %int %61 %int_1
+               OpStore %i %63
+               OpBranch %37
+         %38 = OpLabel
+         %64 = OpAccessChain %_ptr_Function_float %data %int_0
+         %65 = OpLoad %float %64
+         %66 = OpCompositeConstruct %v4float %65 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %66
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %67
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %74 = OpLabel
+         %75 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %75
+         %76 = OpFunctionCall %void %main_1
+         %78 = OpLoad %v4float %x_GLF_color
+         %79 = OpCompositeConstruct %main_out %78
+         %77 = OpFunctionCall %void %tint_symbol_3 %79
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6981641
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,44 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 10>;
+  var i : i32;
+  data = array<f32, 10>(0.100000001, 0.200000003, 0.300000012, 0.400000006, 0.5, 0.600000024, 0.699999988, 0.800000012, 0.899999976, 1.0);
+  i = 0;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    let x_50 : f32 = gl_FragCoord.x;
+    if ((x_50 < 0.0)) {
+      discard;
+    }
+    let x_8 : i32 = i;
+    let x_55 : f32 = data[x_8];
+    data[0] = x_55;
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 + 1);
+    }
+  }
+  let x_58 : f32 = data[0];
+  x_GLF_color = vec4<f32>(x_58, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm
new file mode 100644
index 0000000..3159420
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm
@@ -0,0 +1,77 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f_ "f("
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %float_1 = OpConstant %float 1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %26 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %9
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %f_
+               OpStore %_GLF_color %26
+               OpReturn
+               OpFunctionEnd
+         %f_ = OpFunction %void None %9
+         %29 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %35 = OpLoad %float %34
+         %36 = OpFOrdGreaterThan %bool %float_1 %35
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %40 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %32
+         %43 = OpLabel
+               OpBranch %32
+         %42 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+               OpBranchConditional %false %30 %31
+         %37 = OpLabel
+               OpKill
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..bc52353
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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 f_() {
+  while (true) {
+    const float x_35 = asfloat(x_7[0].y);
+    if ((1.0f > x_35)) {
+      const float x_40 = gl_FragCoord.y;
+      if ((x_40 < 0.0f)) {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      } else {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    discard;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  f_();
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d61e94e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.msl
@@ -0,0 +1,70 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void f_(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  while (true) {
+    float const x_35 = x_7.injectionSwitch.y;
+    if ((1.0f > x_35)) {
+      float const x_40 = (*(tint_symbol_5)).y;
+      if ((x_40 < 0.0f)) {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      } else {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    discard_fragment();
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  f_(x_7, tint_symbol_6);
+  *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..79cac68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,125 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f_ "f_"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+         %49 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+         %f_ = OpFunction %void None %15
+         %18 = OpLabel
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %28 = OpLoad %float %27
+         %30 = OpFOrdGreaterThan %bool %float_1 %28
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %36 = OpLoad %float %35
+         %38 = OpFOrdLessThan %bool %36 %float_0
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpBranch %21
+         %41 = OpLabel
+               OpBranch %21
+         %39 = OpLabel
+               OpBranch %21
+         %32 = OpLabel
+               OpKill
+         %21 = OpLabel
+               OpSelectionMerge %43 None
+               OpBranchConditional %false %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %20
+         %43 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %15
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %f_
+               OpStore %x_GLF_color %49
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %50
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %57 = OpLabel
+         %58 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %58
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %v4float %x_GLF_color
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_3 %62
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 21[%21] is not post dominated by the back-edge block 43[%43]
+  %43 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..bf03fdc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,52 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_() {
+  loop {
+    let x_35 : f32 = x_7.injectionSwitch.y;
+    if ((1.0 > x_35)) {
+      let x_40 : f32 = gl_FragCoord.y;
+      if ((x_40 < 0.0)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    discard;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  f_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
new file mode 100644
index 0000000..bf03fdc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
@@ -0,0 +1,52 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_() {
+  loop {
+    let x_35 : f32 = x_7.injectionSwitch.y;
+    if ((1.0 > x_35)) {
+      let x_40 : f32 = gl_FragCoord.y;
+      if ((x_40 < 0.0)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    discard;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  f_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..bc52353
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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 f_() {
+  while (true) {
+    const float x_35 = asfloat(x_7[0].y);
+    if ((1.0f > x_35)) {
+      const float x_40 = gl_FragCoord.y;
+      if ((x_40 < 0.0f)) {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      } else {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    discard;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  f_();
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d61e94e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.msl
@@ -0,0 +1,70 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void f_(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  while (true) {
+    float const x_35 = x_7.injectionSwitch.y;
+    if ((1.0f > x_35)) {
+      float const x_40 = (*(tint_symbol_5)).y;
+      if ((x_40 < 0.0f)) {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      } else {
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+        continue;
+      }
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    discard_fragment();
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  f_(x_7, tint_symbol_6);
+  *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..79cac68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,125 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f_ "f_"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+         %49 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+         %f_ = OpFunction %void None %15
+         %18 = OpLabel
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %28 = OpLoad %float %27
+         %30 = OpFOrdGreaterThan %bool %float_1 %28
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %32
+         %33 = OpLabel
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %36 = OpLoad %float %35
+         %38 = OpFOrdLessThan %bool %36 %float_0
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpBranch %21
+         %41 = OpLabel
+               OpBranch %21
+         %39 = OpLabel
+               OpBranch %21
+         %32 = OpLabel
+               OpKill
+         %21 = OpLabel
+               OpSelectionMerge %43 None
+               OpBranchConditional %false %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %20
+         %43 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %15
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %f_
+               OpStore %x_GLF_color %49
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %50
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %57 = OpLabel
+         %58 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %58
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %v4float %x_GLF_color
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_3 %62
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 21[%21] is not post dominated by the back-edge block 43[%43]
+  %43 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..bf03fdc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,52 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_() {
+  loop {
+    let x_35 : f32 = x_7.injectionSwitch.y;
+    if ((1.0 > x_35)) {
+      let x_40 : f32 = gl_FragCoord.y;
+      if ((x_40 < 0.0)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    discard;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  f_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm
new file mode 100644
index 0000000..3c03959
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm
@@ -0,0 +1,82 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+     %uint_0 = OpConstant %uint 0
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %6
+         %25 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpPhi %int %int_0 %26 %31 %32
+         %33 = OpSLessThan %bool %30 %int_10
+               OpLoopMerge %34 %32 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+         %36 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %37 = OpLoad %float %36
+         %38 = OpFOrdLessThan %bool %37 %float_0
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %39
+         %40 = OpLabel
+         %41 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdLessThan %bool %42 %float_0
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %32
+         %45 = OpLabel
+               OpBranch %34
+         %44 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %31 = OpIAdd %int %30 %int_1
+               OpBranch %29
+         %39 = OpLabel
+         %46 = OpFunctionCall %void %47
+               OpBranch %34
+         %34 = OpLabel
+         %48 = OpPhi %bool %false %29 %false %45 %true %39
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %27 %49
+         %49 = OpLabel
+               OpStore %_GLF_color %22
+               OpBranch %27
+         %28 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+         %47 = OpFunction %void None %6
+         %50 = OpLabel
+               OpKill
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a01424a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,74 @@
+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 x_47() {
+  discard;
+}
+
+void main_1() {
+  while (true) {
+    int x_30_phi = 0;
+    bool x_48_phi = false;
+    x_30_phi = 0;
+    while (true) {
+      int x_31 = 0;
+      const int x_30 = x_30_phi;
+      x_48_phi = false;
+      if ((x_30 < 10)) {
+      } else {
+        break;
+      }
+      const float x_37 = gl_FragCoord.y;
+      if ((x_37 < 0.0f)) {
+        const float x_42 = gl_FragCoord.x;
+        if ((x_42 < 0.0f)) {
+          x_48_phi = false;
+          break;
+        } else {
+          {
+            x_31 = (x_30 + 1);
+            x_30_phi = x_31;
+          }
+          continue;
+        }
+        {
+          x_31 = (x_30 + 1);
+          x_30_phi = x_31;
+        }
+        continue;
+      }
+      x_47();
+      x_48_phi = true;
+      break;
+      {
+        x_31 = (x_30 + 1);
+        x_30_phi = x_31;
+      }
+    }
+    if (x_48_phi) {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..9e3108a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void x_47() {
+  discard_fragment();
+}
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  while (true) {
+    int x_30_phi = 0;
+    bool x_48_phi = false;
+    x_30_phi = 0;
+    while (true) {
+      int x_31 = 0;
+      int const x_30 = x_30_phi;
+      x_48_phi = false;
+      if ((x_30 < 10)) {
+      } else {
+        break;
+      }
+      float const x_37 = (*(tint_symbol_5)).y;
+      if ((x_37 < 0.0f)) {
+        float const x_42 = (*(tint_symbol_5)).x;
+        if ((x_42 < 0.0f)) {
+          x_48_phi = false;
+          break;
+        } else {
+          {
+            x_31 = (x_30 + 1);
+            x_30_phi = x_31;
+          }
+          continue;
+        }
+        {
+          x_31 = (x_30 + 1);
+          x_30_phi = x_31;
+        }
+        continue;
+      }
+      x_47();
+      x_48_phi = true;
+      break;
+      {
+        x_31 = (x_30 + 1);
+        x_30_phi = x_31;
+      }
+    }
+    bool const x_48 = x_48_phi;
+    if (x_48) {
+      break;
+    }
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..fb9fd81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 81
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %x_47 "x_47"
+               OpName %main_1 "main_1"
+               OpName %x_30_phi "x_30_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %x_31 "x_31"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %28 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+      %false = OpConstantFalse %bool
+     %int_10 = OpConstant %int 10
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+     %uint_0 = OpConstant %uint 0
+       %true = OpConstantTrue %bool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %67 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+       %x_47 = OpFunction %void None %11
+         %14 = OpLabel
+               OpKill
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %11
+         %16 = OpLabel
+   %x_30_phi = OpVariable %_ptr_Function_int Function %24
+   %x_48_phi = OpVariable %_ptr_Function_bool Function %28
+       %x_31 = OpVariable %_ptr_Function_int Function %24
+               OpBranch %17
+         %17 = OpLabel
+               OpLoopMerge %18 %19 None
+               OpBranch %20
+         %20 = OpLabel
+               OpStore %x_30_phi %int_0
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %35 = OpLoad %int %x_30_phi
+               OpStore %x_48_phi %false
+         %38 = OpSLessThan %bool %35 %int_10
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %31
+         %39 = OpLabel
+         %45 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %46 = OpLoad %float %45
+         %48 = OpFOrdLessThan %bool %46 %float_0
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+         %52 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdLessThan %bool %53 %float_0
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpStore %x_48_phi %false
+               OpBranch %31
+         %57 = OpLabel
+               OpBranch %32
+         %55 = OpLabel
+               OpBranch %32
+         %49 = OpLabel
+         %58 = OpFunctionCall %void %x_47
+               OpStore %x_48_phi %true
+               OpBranch %31
+         %32 = OpLabel
+         %61 = OpIAdd %int %35 %int_1
+               OpStore %x_31 %61
+         %62 = OpLoad %int %x_31
+               OpStore %x_30_phi %62
+               OpBranch %30
+         %31 = OpLabel
+         %63 = OpLoad %bool %x_48_phi
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %18
+         %64 = OpLabel
+               OpStore %x_GLF_color %67
+               OpBranch %18
+         %19 = OpLabel
+               OpBranch %17
+         %18 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %68
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %75 = OpLabel
+         %76 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %76
+         %77 = OpFunctionCall %void %main_1
+         %79 = OpLoad %v4float %x_GLF_color
+         %80 = OpCompositeConstruct %main_out %79
+         %78 = OpFunctionCall %void %tint_symbol_3 %80
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..83948ce
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,62 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn x_47() {
+  discard;
+}
+
+fn main_1() {
+  loop {
+    var x_30_phi : i32;
+    var x_48_phi : bool;
+    x_30_phi = 0;
+    loop {
+      var x_31 : i32;
+      let x_30 : i32 = x_30_phi;
+      x_48_phi = false;
+      if ((x_30 < 10)) {
+      } else {
+        break;
+      }
+      let x_37 : f32 = gl_FragCoord.y;
+      if ((x_37 < 0.0)) {
+        let x_42 : f32 = gl_FragCoord.x;
+        if ((x_42 < 0.0)) {
+          x_48_phi = false;
+          break;
+        } else {
+          continue;
+        }
+        continue;
+      }
+      x_47();
+      x_48_phi = true;
+      break;
+
+      continuing {
+        x_31 = (x_30 + 1);
+        x_30_phi = x_31;
+      }
+    }
+    let x_48 : bool = x_48_phi;
+    if (x_48) {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
new file mode 100644
index 0000000..83948ce
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
@@ -0,0 +1,62 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn x_47() {
+  discard;
+}
+
+fn main_1() {
+  loop {
+    var x_30_phi : i32;
+    var x_48_phi : bool;
+    x_30_phi = 0;
+    loop {
+      var x_31 : i32;
+      let x_30 : i32 = x_30_phi;
+      x_48_phi = false;
+      if ((x_30 < 10)) {
+      } else {
+        break;
+      }
+      let x_37 : f32 = gl_FragCoord.y;
+      if ((x_37 < 0.0)) {
+        let x_42 : f32 = gl_FragCoord.x;
+        if ((x_42 < 0.0)) {
+          x_48_phi = false;
+          break;
+        } else {
+          continue;
+        }
+        continue;
+      }
+      x_47();
+      x_48_phi = true;
+      break;
+
+      continuing {
+        x_31 = (x_30 + 1);
+        x_30_phi = x_31;
+      }
+    }
+    let x_48 : bool = x_48_phi;
+    if (x_48) {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a01424a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,74 @@
+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 x_47() {
+  discard;
+}
+
+void main_1() {
+  while (true) {
+    int x_30_phi = 0;
+    bool x_48_phi = false;
+    x_30_phi = 0;
+    while (true) {
+      int x_31 = 0;
+      const int x_30 = x_30_phi;
+      x_48_phi = false;
+      if ((x_30 < 10)) {
+      } else {
+        break;
+      }
+      const float x_37 = gl_FragCoord.y;
+      if ((x_37 < 0.0f)) {
+        const float x_42 = gl_FragCoord.x;
+        if ((x_42 < 0.0f)) {
+          x_48_phi = false;
+          break;
+        } else {
+          {
+            x_31 = (x_30 + 1);
+            x_30_phi = x_31;
+          }
+          continue;
+        }
+        {
+          x_31 = (x_30 + 1);
+          x_30_phi = x_31;
+        }
+        continue;
+      }
+      x_47();
+      x_48_phi = true;
+      break;
+      {
+        x_31 = (x_30 + 1);
+        x_30_phi = x_31;
+      }
+    }
+    if (x_48_phi) {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..9e3108a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,74 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void x_47() {
+  discard_fragment();
+}
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  while (true) {
+    int x_30_phi = 0;
+    bool x_48_phi = false;
+    x_30_phi = 0;
+    while (true) {
+      int x_31 = 0;
+      int const x_30 = x_30_phi;
+      x_48_phi = false;
+      if ((x_30 < 10)) {
+      } else {
+        break;
+      }
+      float const x_37 = (*(tint_symbol_5)).y;
+      if ((x_37 < 0.0f)) {
+        float const x_42 = (*(tint_symbol_5)).x;
+        if ((x_42 < 0.0f)) {
+          x_48_phi = false;
+          break;
+        } else {
+          {
+            x_31 = (x_30 + 1);
+            x_30_phi = x_31;
+          }
+          continue;
+        }
+        {
+          x_31 = (x_30 + 1);
+          x_30_phi = x_31;
+        }
+        continue;
+      }
+      x_47();
+      x_48_phi = true;
+      break;
+      {
+        x_31 = (x_30 + 1);
+        x_30_phi = x_31;
+      }
+    }
+    bool const x_48 = x_48_phi;
+    if (x_48) {
+      break;
+    }
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..fb9fd81
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 81
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %x_47 "x_47"
+               OpName %main_1 "main_1"
+               OpName %x_30_phi "x_30_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %x_31 "x_31"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %28 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+      %false = OpConstantFalse %bool
+     %int_10 = OpConstant %int 10
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+     %uint_0 = OpConstant %uint 0
+       %true = OpConstantTrue %bool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %67 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+       %x_47 = OpFunction %void None %11
+         %14 = OpLabel
+               OpKill
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %11
+         %16 = OpLabel
+   %x_30_phi = OpVariable %_ptr_Function_int Function %24
+   %x_48_phi = OpVariable %_ptr_Function_bool Function %28
+       %x_31 = OpVariable %_ptr_Function_int Function %24
+               OpBranch %17
+         %17 = OpLabel
+               OpLoopMerge %18 %19 None
+               OpBranch %20
+         %20 = OpLabel
+               OpStore %x_30_phi %int_0
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %35 = OpLoad %int %x_30_phi
+               OpStore %x_48_phi %false
+         %38 = OpSLessThan %bool %35 %int_10
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %31
+         %39 = OpLabel
+         %45 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %46 = OpLoad %float %45
+         %48 = OpFOrdLessThan %bool %46 %float_0
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+         %52 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdLessThan %bool %53 %float_0
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpStore %x_48_phi %false
+               OpBranch %31
+         %57 = OpLabel
+               OpBranch %32
+         %55 = OpLabel
+               OpBranch %32
+         %49 = OpLabel
+         %58 = OpFunctionCall %void %x_47
+               OpStore %x_48_phi %true
+               OpBranch %31
+         %32 = OpLabel
+         %61 = OpIAdd %int %35 %int_1
+               OpStore %x_31 %61
+         %62 = OpLoad %int %x_31
+               OpStore %x_30_phi %62
+               OpBranch %30
+         %31 = OpLabel
+         %63 = OpLoad %bool %x_48_phi
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %18
+         %64 = OpLabel
+               OpStore %x_GLF_color %67
+               OpBranch %18
+         %19 = OpLabel
+               OpBranch %17
+         %18 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %68
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %75 = OpLabel
+         %76 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %76
+         %77 = OpFunctionCall %void %main_1
+         %79 = OpLoad %v4float %x_GLF_color
+         %80 = OpCompositeConstruct %main_out %79
+         %78 = OpFunctionCall %void %tint_symbol_3 %80
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..83948ce
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,62 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn x_47() {
+  discard;
+}
+
+fn main_1() {
+  loop {
+    var x_30_phi : i32;
+    var x_48_phi : bool;
+    x_30_phi = 0;
+    loop {
+      var x_31 : i32;
+      let x_30 : i32 = x_30_phi;
+      x_48_phi = false;
+      if ((x_30 < 10)) {
+      } else {
+        break;
+      }
+      let x_37 : f32 = gl_FragCoord.y;
+      if ((x_37 < 0.0)) {
+        let x_42 : f32 = gl_FragCoord.x;
+        if ((x_42 < 0.0)) {
+          x_48_phi = false;
+          break;
+        } else {
+          continue;
+        }
+        continue;
+      }
+      x_47();
+      x_48_phi = true;
+      break;
+
+      continuing {
+        x_31 = (x_30 + 1);
+        x_30_phi = x_31;
+      }
+    }
+    let x_48 : bool = x_48_phi;
+    if (x_48) {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm
new file mode 100644
index 0000000..6911dee
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm
@@ -0,0 +1,91 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %ll "ll"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %ll RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+        %int = OpTypeInt 32 1
+   %int_2000 = OpConstant %int 2000
+       %bool = OpTypeBool
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %10
+         %28 = OpLabel
+         %ll = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %16
+         %29 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpConvertFToS %int %30
+         %32 = OpSLessThan %bool %31 %int_2000
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %ll %int_0
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %41 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpKill
+         %43 = OpLabel
+          %6 = OpLoad %int %ll
+         %45 = OpSGreaterThanEqual %bool %6 %int_5
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpBranch %37
+         %46 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+          %7 = OpLoad %int %ll
+          %8 = OpIAdd %int %7 %int_1
+               OpStore %ll %8
+               OpBranch %36
+         %37 = OpLabel
+         %48 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %49 = OpLoad %float %48
+         %50 = OpConvertFToS %int %49
+         %51 = OpSGreaterThanEqual %bool %50 %int_2000
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpKill
+         %52 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..7a88372
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,48 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int ll = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_30 = gl_FragCoord.x;
+  if ((int(x_30) < 2000)) {
+  } else {
+    ll = 0;
+    while (true) {
+      const float x_41 = gl_FragCoord.x;
+      if ((x_41 < 0.0f)) {
+        discard;
+      }
+      if ((ll >= 5)) {
+        break;
+      }
+      {
+        ll = (ll + 1);
+      }
+    }
+    const float x_49 = gl_FragCoord.x;
+    if ((int(x_49) >= 2000)) {
+      discard;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f11683a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int ll = 0;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_30 = (*(tint_symbol_6)).x;
+  if ((int(x_30) < 2000)) {
+  } else {
+    ll = 0;
+    while (true) {
+      float const x_41 = (*(tint_symbol_6)).x;
+      if ((x_41 < 0.0f)) {
+        discard_fragment();
+      }
+      int const x_6 = ll;
+      if ((x_6 >= 5)) {
+        break;
+      }
+      {
+        int const x_7 = ll;
+        ll = (x_7 + 1);
+      }
+    }
+    float const x_49 = (*(tint_symbol_6)).x;
+    if ((int(x_49) >= 2000)) {
+      discard_fragment();
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1a87cf4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,122 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %ll "ll"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %int_2000 = OpConstant %int 2000
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %ll = OpVariable %_ptr_Function_int Function %18
+               OpStore %x_GLF_color %21
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpConvertFToS %int %26
+         %29 = OpSLessThan %bool %27 %int_2000
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %ll %int_0
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %40 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpKill
+         %42 = OpLabel
+         %44 = OpLoad %int %ll
+         %46 = OpSGreaterThanEqual %bool %44 %int_5
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+               OpBranch %36
+         %47 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %49 = OpLoad %int %ll
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %ll %51
+               OpBranch %35
+         %36 = OpLabel
+         %52 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %53 = OpLoad %float %52
+         %54 = OpConvertFToS %int %53
+         %55 = OpSGreaterThanEqual %bool %54 %int_2000
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+               OpKill
+         %56 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %58
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %65 = OpLabel
+         %66 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %66
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_3 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..926c273
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,45 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var ll : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_30 : f32 = gl_FragCoord.x;
+  if ((i32(x_30) < 2000)) {
+  } else {
+    ll = 0;
+    loop {
+      let x_41 : f32 = gl_FragCoord.x;
+      if ((x_41 < 0.0)) {
+        discard;
+      }
+      let x_6 : i32 = ll;
+      if ((x_6 >= 5)) {
+        break;
+      }
+
+      continuing {
+        let x_7 : i32 = ll;
+        ll = (x_7 + 1);
+      }
+    }
+    let x_49 : f32 = gl_FragCoord.x;
+    if ((i32(x_49) >= 2000)) {
+      discard;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
new file mode 100644
index 0000000..926c273
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
@@ -0,0 +1,45 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var ll : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_30 : f32 = gl_FragCoord.x;
+  if ((i32(x_30) < 2000)) {
+  } else {
+    ll = 0;
+    loop {
+      let x_41 : f32 = gl_FragCoord.x;
+      if ((x_41 < 0.0)) {
+        discard;
+      }
+      let x_6 : i32 = ll;
+      if ((x_6 >= 5)) {
+        break;
+      }
+
+      continuing {
+        let x_7 : i32 = ll;
+        ll = (x_7 + 1);
+      }
+    }
+    let x_49 : f32 = gl_FragCoord.x;
+    if ((i32(x_49) >= 2000)) {
+      discard;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..7a88372
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,48 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int ll = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_30 = gl_FragCoord.x;
+  if ((int(x_30) < 2000)) {
+  } else {
+    ll = 0;
+    while (true) {
+      const float x_41 = gl_FragCoord.x;
+      if ((x_41 < 0.0f)) {
+        discard;
+      }
+      if ((ll >= 5)) {
+        break;
+      }
+      {
+        ll = (ll + 1);
+      }
+    }
+    const float x_49 = gl_FragCoord.x;
+    if ((int(x_49) >= 2000)) {
+      discard;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f11683a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int ll = 0;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_30 = (*(tint_symbol_6)).x;
+  if ((int(x_30) < 2000)) {
+  } else {
+    ll = 0;
+    while (true) {
+      float const x_41 = (*(tint_symbol_6)).x;
+      if ((x_41 < 0.0f)) {
+        discard_fragment();
+      }
+      int const x_6 = ll;
+      if ((x_6 >= 5)) {
+        break;
+      }
+      {
+        int const x_7 = ll;
+        ll = (x_7 + 1);
+      }
+    }
+    float const x_49 = (*(tint_symbol_6)).x;
+    if ((int(x_49) >= 2000)) {
+      discard_fragment();
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1a87cf4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,122 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %ll "ll"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %int_2000 = OpConstant %int 2000
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %ll = OpVariable %_ptr_Function_int Function %18
+               OpStore %x_GLF_color %21
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpConvertFToS %int %26
+         %29 = OpSLessThan %bool %27 %int_2000
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpStore %ll %int_0
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %40 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpKill
+         %42 = OpLabel
+         %44 = OpLoad %int %ll
+         %46 = OpSGreaterThanEqual %bool %44 %int_5
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+               OpBranch %36
+         %47 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %49 = OpLoad %int %ll
+         %51 = OpIAdd %int %49 %int_1
+               OpStore %ll %51
+               OpBranch %35
+         %36 = OpLabel
+         %52 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %53 = OpLoad %float %52
+         %54 = OpConvertFToS %int %53
+         %55 = OpSGreaterThanEqual %bool %54 %int_2000
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+               OpKill
+         %56 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %58
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %65 = OpLabel
+         %66 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %66
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %v4float %x_GLF_color
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_3 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..926c273
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,45 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var ll : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_30 : f32 = gl_FragCoord.x;
+  if ((i32(x_30) < 2000)) {
+  } else {
+    ll = 0;
+    loop {
+      let x_41 : f32 = gl_FragCoord.x;
+      if ((x_41 < 0.0)) {
+        discard;
+      }
+      let x_6 : i32 = ll;
+      if ((x_6 >= 5)) {
+        break;
+      }
+
+      continuing {
+        let x_7 : i32 = ll;
+        ll = (x_7 + 1);
+      }
+    }
+    let x_49 : f32 = gl_FragCoord.x;
+    if ((i32(x_49) >= 2000)) {
+      discard;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm
new file mode 100644
index 0000000..9931dae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm
@@ -0,0 +1,113 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f_ "f("
+               OpName %iteration "iteration"
+               OpName %k "k"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %iteration RelaxedPrecision
+               OpDecorate %k RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+         %21 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %30 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+      %false = OpConstantFalse %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %18
+         %34 = OpLabel
+         %35 = OpFunctionCall %v3float %f_
+         %36 = OpCompositeExtract %float %35 0
+         %37 = OpCompositeExtract %float %35 1
+         %38 = OpCompositeExtract %float %35 2
+         %39 = OpCompositeConstruct %v4float %36 %37 %38 %float_1
+               OpStore %_GLF_color %39
+               OpReturn
+               OpFunctionEnd
+         %f_ = OpFunction %v3float None %21
+         %40 = OpLabel
+  %iteration = OpVariable %_ptr_Function_int Function
+          %k = OpVariable %_ptr_Function_int Function
+               OpStore %iteration %int_0
+               OpStore %k %int_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+          %7 = OpLoad %int %k
+         %45 = OpSLessThan %bool %7 %int_100
+               OpBranchConditional %45 %46 %42
+         %46 = OpLabel
+          %8 = OpLoad %int %iteration
+          %9 = OpIAdd %int %8 %int_1
+               OpStore %iteration %9
+               OpBranch %43
+         %43 = OpLabel
+         %10 = OpLoad %int %k
+         %11 = OpIAdd %int %10 %int_1
+               OpStore %k %11
+               OpBranch %41
+         %42 = OpLabel
+         %12 = OpLoad %int %iteration
+         %47 = OpSLessThan %bool %12 %int_100
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+         %13 = OpLoad %int %iteration
+         %14 = OpISub %int %13 %int_1
+         %51 = OpConvertSToF %float %14
+         %15 = OpLoad %int %iteration
+         %16 = OpISub %int %15 %int_1
+         %52 = OpConvertSToF %float %16
+         %53 = OpCompositeConstruct %v3float %float_1 %51 %52
+               OpReturnValue %53
+         %50 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+               OpReturnValue %30
+         %60 = OpLabel
+               OpBranch %58
+         %59 = OpLabel
+               OpUnreachable
+         %56 = OpLabel
+               OpBranch %54
+         %55 = OpLabel
+               OpUnreachable
+         %48 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f128d4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,45 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 f_() {
+  int iteration = 0;
+  int k = 0;
+  iteration = 0;
+  k = 0;
+  {
+    for(; (k < 100); k = (k + 1)) {
+      iteration = (iteration + 1);
+    }
+  }
+  if ((iteration < 100)) {
+    return float3(1.0f, float((iteration - 1)), float((iteration - 1)));
+  } else {
+    while (true) {
+      while (true) {
+        return float3(1.0f, 0.0f, 0.0f);
+      }
+      return float3(0.0f, 0.0f, 0.0f);
+    }
+    return float3(0.0f, 0.0f, 0.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  const float3 x_35 = f_();
+  x_GLF_color = float4(x_35.x, x_35.y, x_35.z, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..428b891
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 f_() {
+  int iteration = 0;
+  int k = 0;
+  iteration = 0;
+  k = 0;
+  while (true) {
+    int const x_7 = k;
+    if ((x_7 < 100)) {
+    } else {
+      break;
+    }
+    int const x_8 = iteration;
+    iteration = (x_8 + 1);
+    {
+      int const x_10 = k;
+      k = (x_10 + 1);
+    }
+  }
+  int const x_12 = iteration;
+  if ((x_12 < 100)) {
+    int const x_13 = iteration;
+    int const x_15 = iteration;
+    return float3(1.0f, float((x_13 - 1)), float((x_15 - 1)));
+  } else {
+    while (true) {
+      while (true) {
+        return float3(1.0f, 0.0f, 0.0f);
+      }
+      return float3(0.0f, 0.0f, 0.0f);
+    }
+    return float3(0.0f, 0.0f, 0.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float3 const x_35 = f_();
+  *(tint_symbol_4) = float4(x_35.x, x_35.y, x_35.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2c77aec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,137 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %f_ "f_"
+               OpName %iteration "iteration"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %57 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %58 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+         %f_ = OpFunction %v3float None %8
+         %11 = OpLabel
+  %iteration = OpVariable %_ptr_Function_int Function %15
+          %k = OpVariable %_ptr_Function_int Function %15
+               OpStore %iteration %int_0
+               OpStore %k %int_0
+               OpBranch %18
+         %18 = OpLabel
+               OpLoopMerge %19 %20 None
+               OpBranch %21
+         %21 = OpLabel
+         %22 = OpLoad %int %k
+         %24 = OpSLessThan %bool %22 %int_100
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %28
+         %27 = OpLabel
+               OpBranch %26
+         %28 = OpLabel
+               OpBranch %19
+         %26 = OpLabel
+         %29 = OpLoad %int %iteration
+         %31 = OpIAdd %int %29 %int_1
+               OpStore %iteration %31
+               OpBranch %20
+         %20 = OpLabel
+         %32 = OpLoad %int %k
+         %33 = OpIAdd %int %32 %int_1
+               OpStore %k %33
+               OpBranch %18
+         %19 = OpLabel
+         %34 = OpLoad %int %iteration
+         %35 = OpSLessThan %bool %34 %int_100
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+         %39 = OpLoad %int %iteration
+         %40 = OpLoad %int %iteration
+         %43 = OpISub %int %39 %int_1
+         %42 = OpConvertSToF %float %43
+         %45 = OpISub %int %40 %int_1
+         %44 = OpConvertSToF %float %45
+         %46 = OpCompositeConstruct %v3float %float_1 %42 %44
+               OpReturnValue %46
+         %38 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+               OpReturnValue %56
+         %53 = OpLabel
+               OpBranch %51
+         %52 = OpLabel
+               OpReturnValue %57
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+               OpReturnValue %57
+         %36 = OpLabel
+               OpReturnValue %57
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %58
+         %61 = OpLabel
+         %62 = OpFunctionCall %v3float %f_
+         %63 = OpCompositeExtract %float %62 0
+         %64 = OpCompositeExtract %float %62 1
+         %65 = OpCompositeExtract %float %62 2
+         %66 = OpCompositeConstruct %v4float %63 %64 %65 %float_1
+               OpStore %x_GLF_color %66
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %58
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c2fa551
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,54 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_() -> vec3<f32> {
+  var iteration : i32;
+  var k : i32;
+  iteration = 0;
+  k = 0;
+  loop {
+    let x_7 : i32 = k;
+    if ((x_7 < 100)) {
+    } else {
+      break;
+    }
+    let x_8 : i32 = iteration;
+    iteration = (x_8 + 1);
+
+    continuing {
+      let x_10 : i32 = k;
+      k = (x_10 + 1);
+    }
+  }
+  let x_12 : i32 = iteration;
+  if ((x_12 < 100)) {
+    let x_13 : i32 = iteration;
+    let x_15 : i32 = iteration;
+    return vec3<f32>(1.0, f32((x_13 - 1)), f32((x_15 - 1)));
+  } else {
+    loop {
+      loop {
+        return vec3<f32>(1.0, 0.0, 0.0);
+      }
+      return vec3<f32>(0.0, 0.0, 0.0);
+    }
+    return vec3<f32>(0.0, 0.0, 0.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  let x_35 : vec3<f32> = f_();
+  x_GLF_color = vec4<f32>(x_35.x, x_35.y, x_35.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
new file mode 100644
index 0000000..c2fa551
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
@@ -0,0 +1,54 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_() -> vec3<f32> {
+  var iteration : i32;
+  var k : i32;
+  iteration = 0;
+  k = 0;
+  loop {
+    let x_7 : i32 = k;
+    if ((x_7 < 100)) {
+    } else {
+      break;
+    }
+    let x_8 : i32 = iteration;
+    iteration = (x_8 + 1);
+
+    continuing {
+      let x_10 : i32 = k;
+      k = (x_10 + 1);
+    }
+  }
+  let x_12 : i32 = iteration;
+  if ((x_12 < 100)) {
+    let x_13 : i32 = iteration;
+    let x_15 : i32 = iteration;
+    return vec3<f32>(1.0, f32((x_13 - 1)), f32((x_15 - 1)));
+  } else {
+    loop {
+      loop {
+        return vec3<f32>(1.0, 0.0, 0.0);
+      }
+      return vec3<f32>(0.0, 0.0, 0.0);
+    }
+    return vec3<f32>(0.0, 0.0, 0.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  let x_35 : vec3<f32> = f_();
+  x_GLF_color = vec4<f32>(x_35.x, x_35.y, x_35.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f128d4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,45 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 f_() {
+  int iteration = 0;
+  int k = 0;
+  iteration = 0;
+  k = 0;
+  {
+    for(; (k < 100); k = (k + 1)) {
+      iteration = (iteration + 1);
+    }
+  }
+  if ((iteration < 100)) {
+    return float3(1.0f, float((iteration - 1)), float((iteration - 1)));
+  } else {
+    while (true) {
+      while (true) {
+        return float3(1.0f, 0.0f, 0.0f);
+      }
+      return float3(0.0f, 0.0f, 0.0f);
+    }
+    return float3(0.0f, 0.0f, 0.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  const float3 x_35 = f_();
+  x_GLF_color = float4(x_35.x, x_35.y, x_35.z, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..428b891
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,59 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 f_() {
+  int iteration = 0;
+  int k = 0;
+  iteration = 0;
+  k = 0;
+  while (true) {
+    int const x_7 = k;
+    if ((x_7 < 100)) {
+    } else {
+      break;
+    }
+    int const x_8 = iteration;
+    iteration = (x_8 + 1);
+    {
+      int const x_10 = k;
+      k = (x_10 + 1);
+    }
+  }
+  int const x_12 = iteration;
+  if ((x_12 < 100)) {
+    int const x_13 = iteration;
+    int const x_15 = iteration;
+    return float3(1.0f, float((x_13 - 1)), float((x_15 - 1)));
+  } else {
+    while (true) {
+      while (true) {
+        return float3(1.0f, 0.0f, 0.0f);
+      }
+      return float3(0.0f, 0.0f, 0.0f);
+    }
+    return float3(0.0f, 0.0f, 0.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float3 const x_35 = f_();
+  *(tint_symbol_4) = float4(x_35.x, x_35.y, x_35.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2c77aec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,137 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %f_ "f_"
+               OpName %iteration "iteration"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %57 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %58 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+         %f_ = OpFunction %v3float None %8
+         %11 = OpLabel
+  %iteration = OpVariable %_ptr_Function_int Function %15
+          %k = OpVariable %_ptr_Function_int Function %15
+               OpStore %iteration %int_0
+               OpStore %k %int_0
+               OpBranch %18
+         %18 = OpLabel
+               OpLoopMerge %19 %20 None
+               OpBranch %21
+         %21 = OpLabel
+         %22 = OpLoad %int %k
+         %24 = OpSLessThan %bool %22 %int_100
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %28
+         %27 = OpLabel
+               OpBranch %26
+         %28 = OpLabel
+               OpBranch %19
+         %26 = OpLabel
+         %29 = OpLoad %int %iteration
+         %31 = OpIAdd %int %29 %int_1
+               OpStore %iteration %31
+               OpBranch %20
+         %20 = OpLabel
+         %32 = OpLoad %int %k
+         %33 = OpIAdd %int %32 %int_1
+               OpStore %k %33
+               OpBranch %18
+         %19 = OpLabel
+         %34 = OpLoad %int %iteration
+         %35 = OpSLessThan %bool %34 %int_100
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+         %39 = OpLoad %int %iteration
+         %40 = OpLoad %int %iteration
+         %43 = OpISub %int %39 %int_1
+         %42 = OpConvertSToF %float %43
+         %45 = OpISub %int %40 %int_1
+         %44 = OpConvertSToF %float %45
+         %46 = OpCompositeConstruct %v3float %float_1 %42 %44
+               OpReturnValue %46
+         %38 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+               OpLoopMerge %52 %53 None
+               OpBranch %54
+         %54 = OpLabel
+               OpReturnValue %56
+         %53 = OpLabel
+               OpBranch %51
+         %52 = OpLabel
+               OpReturnValue %57
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+               OpReturnValue %57
+         %36 = OpLabel
+               OpReturnValue %57
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %58
+         %61 = OpLabel
+         %62 = OpFunctionCall %v3float %f_
+         %63 = OpCompositeExtract %float %62 0
+         %64 = OpCompositeExtract %float %62 1
+         %65 = OpCompositeExtract %float %62 2
+         %66 = OpCompositeConstruct %v4float %63 %64 %65 %float_1
+               OpStore %x_GLF_color %66
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %58
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c2fa551
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,54 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_() -> vec3<f32> {
+  var iteration : i32;
+  var k : i32;
+  iteration = 0;
+  k = 0;
+  loop {
+    let x_7 : i32 = k;
+    if ((x_7 < 100)) {
+    } else {
+      break;
+    }
+    let x_8 : i32 = iteration;
+    iteration = (x_8 + 1);
+
+    continuing {
+      let x_10 : i32 = k;
+      k = (x_10 + 1);
+    }
+  }
+  let x_12 : i32 = iteration;
+  if ((x_12 < 100)) {
+    let x_13 : i32 = iteration;
+    let x_15 : i32 = iteration;
+    return vec3<f32>(1.0, f32((x_13 - 1)), f32((x_15 - 1)));
+  } else {
+    loop {
+      loop {
+        return vec3<f32>(1.0, 0.0, 0.0);
+      }
+      return vec3<f32>(0.0, 0.0, 0.0);
+    }
+    return vec3<f32>(0.0, 0.0, 0.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  let x_35 : vec3<f32> = f_();
+  x_GLF_color = vec4<f32>(x_35.x, x_35.y, x_35.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm
new file mode 100644
index 0000000..1ead4df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm
@@ -0,0 +1,110 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %loop_count "loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %11 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %int_100 = OpConstant %int 100
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %main = OpFunction %void None %9
+         %30 = OpLabel
+         %31 = OpFunctionCall %int %func_
+         %32 = OpIEqual %bool %31 %int_1
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %33
+         %35 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %int None %11
+         %36 = OpLabel
+ %loop_count = OpVariable %_ptr_Function_int Function
+               OpStore %loop_count %int_0
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpPhi %int %int_0 %36 %39 %40
+               OpLoopMerge %41 %40 None
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpIAdd %int %38 %int_1
+               OpStore %loop_count %43
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpPhi %int %43 %42 %39 %46
+               OpLoopMerge %47 %46 None
+               OpBranch %48
+         %48 = OpLabel
+         %39 = OpIAdd %int %45 %int_1
+               OpStore %loop_count %39
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpFOrdLessThan %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpReturnValue %int_1
+         %54 = OpLabel
+         %56 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %57 = OpLoad %float %56
+         %58 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %59 = OpLoad %float %58
+         %60 = OpFOrdLessThan %bool %57 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpBranch %47
+         %61 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %63 = OpSLessThan %bool %39 %int_100
+               OpBranchConditional %63 %44 %47
+         %47 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %64 = OpSLessThan %bool %39 %int_100
+               OpBranchConditional %64 %37 %41
+         %41 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..db404f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  int loop_count = 0;
+  int x_38_phi = 0;
+  loop_count = 0;
+  x_38_phi = 0;
+  while (true) {
+    int x_39 = 0;
+    int x_45_phi = 0;
+    const int x_43 = (x_38_phi + 1);
+    loop_count = x_43;
+    x_45_phi = x_43;
+    while (true) {
+      x_39 = (x_45_phi + 1);
+      loop_count = x_39;
+      const float x_50 = asfloat(x_7[0].x);
+      const float x_52 = asfloat(x_7[0].y);
+      if ((x_50 < x_52)) {
+        return 1;
+      }
+      const float x_57 = asfloat(x_7[0].x);
+      const float x_59 = asfloat(x_7[0].y);
+      if ((x_57 < x_59)) {
+        break;
+      }
+      {
+        x_45_phi = x_39;
+        if ((x_39 < 100)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      x_38_phi = x_39;
+      if ((x_39 < 100)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return 0;
+}
+
+void main_1() {
+  const int x_31 = func_();
+  if ((x_31 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a19b54d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.msl
@@ -0,0 +1,76 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_(constant buf0& x_7) {
+  int loop_count = 0;
+  int x_38_phi = 0;
+  loop_count = 0;
+  x_38_phi = 0;
+  while (true) {
+    int x_39 = 0;
+    int x_45_phi = 0;
+    int const x_38 = x_38_phi;
+    int const x_43 = (x_38 + 1);
+    loop_count = x_43;
+    x_45_phi = x_43;
+    while (true) {
+      int const x_45 = x_45_phi;
+      x_39 = (x_45 + 1);
+      loop_count = x_39;
+      float const x_50 = x_7.injectionSwitch.x;
+      float const x_52 = x_7.injectionSwitch.y;
+      if ((x_50 < x_52)) {
+        return 1;
+      }
+      float const x_57 = x_7.injectionSwitch.x;
+      float const x_59 = x_7.injectionSwitch.y;
+      if ((x_57 < x_59)) {
+        break;
+      }
+      {
+        x_45_phi = x_39;
+        if ((x_39 < 100)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      x_38_phi = x_39;
+      if ((x_39 < 100)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int const x_31 = func_(x_7);
+  if ((x_31 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3892134
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,177 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 94
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %loop_count "loop_count"
+               OpName %x_38_phi "x_38_phi"
+               OpName %x_39 "x_39"
+               OpName %x_45_phi "x_45_phi"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+        %int = OpTypeInt 32 1
+         %12 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %int_100 = OpConstant %int 100
+       %void = OpTypeVoid
+         %69 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %80 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %81 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %82 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %12
+         %15 = OpLabel
+ %loop_count = OpVariable %_ptr_Function_int Function %18
+   %x_38_phi = OpVariable %_ptr_Function_int Function %18
+       %x_39 = OpVariable %_ptr_Function_int Function %18
+   %x_45_phi = OpVariable %_ptr_Function_int Function %18
+               OpStore %loop_count %int_0
+               OpStore %x_38_phi %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %27 = OpLoad %int %x_38_phi
+         %29 = OpIAdd %int %27 %int_1
+               OpStore %loop_count %29
+               OpStore %x_45_phi %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %x_45_phi
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %x_39 %35
+         %36 = OpLoad %int %x_39
+               OpStore %loop_count %36
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %41 = OpLoad %float %40
+         %43 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %44 = OpLoad %float %43
+         %45 = OpFOrdLessThan %bool %41 %44
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %47
+         %48 = OpLabel
+               OpReturnValue %int_1
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpFOrdLessThan %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpBranch %31
+         %54 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %56 = OpLoad %int %x_39
+               OpStore %x_45_phi %56
+         %57 = OpLoad %int %x_39
+         %59 = OpSLessThan %bool %57 %int_100
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %31
+         %60 = OpLabel
+               OpBranch %30
+         %31 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+         %63 = OpLoad %int %x_39
+               OpStore %x_38_phi %63
+         %64 = OpLoad %int %x_39
+         %65 = OpSLessThan %bool %64 %int_100
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %22
+         %66 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %69
+         %72 = OpLabel
+         %73 = OpFunctionCall %int %func_
+         %74 = OpIEqual %bool %73 %int_1
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %75
+         %77 = OpLabel
+               OpStore %x_GLF_color %81
+               OpBranch %75
+         %75 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %82
+%tint_symbol = OpFunctionParameter %main_out
+         %86 = OpLabel
+         %87 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %87
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %69
+         %89 = OpLabel
+         %90 = OpFunctionCall %void %main_1
+         %92 = OpLoad %v4float %x_GLF_color
+         %93 = OpCompositeConstruct %main_out %92
+         %91 = OpFunctionCall %void %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 23[%23] is not post dominated by the back-edge block 66[%66]
+  %66 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..43fb691
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,76 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var loop_count : i32;
+  var x_38_phi : i32;
+  loop_count = 0;
+  x_38_phi = 0;
+  loop {
+    var x_39 : i32;
+    var x_45_phi : i32;
+    let x_38 : i32 = x_38_phi;
+    let x_43 : i32 = (x_38 + 1);
+    loop_count = x_43;
+    x_45_phi = x_43;
+    loop {
+      let x_45 : i32 = x_45_phi;
+      x_39 = (x_45 + 1);
+      loop_count = x_39;
+      let x_50 : f32 = x_7.injectionSwitch.x;
+      let x_52 : f32 = x_7.injectionSwitch.y;
+      if ((x_50 < x_52)) {
+        return 1;
+      }
+      let x_57 : f32 = x_7.injectionSwitch.x;
+      let x_59 : f32 = x_7.injectionSwitch.y;
+      if ((x_57 < x_59)) {
+        break;
+      }
+
+      continuing {
+        x_45_phi = x_39;
+        if ((x_39 < 100)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      x_38_phi = x_39;
+      if ((x_39 < 100)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return 0;
+}
+
+fn main_1() {
+  let x_31 : i32 = func_();
+  if ((x_31 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
new file mode 100644
index 0000000..43fb691
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
@@ -0,0 +1,76 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var loop_count : i32;
+  var x_38_phi : i32;
+  loop_count = 0;
+  x_38_phi = 0;
+  loop {
+    var x_39 : i32;
+    var x_45_phi : i32;
+    let x_38 : i32 = x_38_phi;
+    let x_43 : i32 = (x_38 + 1);
+    loop_count = x_43;
+    x_45_phi = x_43;
+    loop {
+      let x_45 : i32 = x_45_phi;
+      x_39 = (x_45 + 1);
+      loop_count = x_39;
+      let x_50 : f32 = x_7.injectionSwitch.x;
+      let x_52 : f32 = x_7.injectionSwitch.y;
+      if ((x_50 < x_52)) {
+        return 1;
+      }
+      let x_57 : f32 = x_7.injectionSwitch.x;
+      let x_59 : f32 = x_7.injectionSwitch.y;
+      if ((x_57 < x_59)) {
+        break;
+      }
+
+      continuing {
+        x_45_phi = x_39;
+        if ((x_39 < 100)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      x_38_phi = x_39;
+      if ((x_39 < 100)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return 0;
+}
+
+fn main_1() {
+  let x_31 : i32 = func_();
+  if ((x_31 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..db404f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  int loop_count = 0;
+  int x_38_phi = 0;
+  loop_count = 0;
+  x_38_phi = 0;
+  while (true) {
+    int x_39 = 0;
+    int x_45_phi = 0;
+    const int x_43 = (x_38_phi + 1);
+    loop_count = x_43;
+    x_45_phi = x_43;
+    while (true) {
+      x_39 = (x_45_phi + 1);
+      loop_count = x_39;
+      const float x_50 = asfloat(x_7[0].x);
+      const float x_52 = asfloat(x_7[0].y);
+      if ((x_50 < x_52)) {
+        return 1;
+      }
+      const float x_57 = asfloat(x_7[0].x);
+      const float x_59 = asfloat(x_7[0].y);
+      if ((x_57 < x_59)) {
+        break;
+      }
+      {
+        x_45_phi = x_39;
+        if ((x_39 < 100)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      x_38_phi = x_39;
+      if ((x_39 < 100)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return 0;
+}
+
+void main_1() {
+  const int x_31 = func_();
+  if ((x_31 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a19b54d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.msl
@@ -0,0 +1,76 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_(constant buf0& x_7) {
+  int loop_count = 0;
+  int x_38_phi = 0;
+  loop_count = 0;
+  x_38_phi = 0;
+  while (true) {
+    int x_39 = 0;
+    int x_45_phi = 0;
+    int const x_38 = x_38_phi;
+    int const x_43 = (x_38 + 1);
+    loop_count = x_43;
+    x_45_phi = x_43;
+    while (true) {
+      int const x_45 = x_45_phi;
+      x_39 = (x_45 + 1);
+      loop_count = x_39;
+      float const x_50 = x_7.injectionSwitch.x;
+      float const x_52 = x_7.injectionSwitch.y;
+      if ((x_50 < x_52)) {
+        return 1;
+      }
+      float const x_57 = x_7.injectionSwitch.x;
+      float const x_59 = x_7.injectionSwitch.y;
+      if ((x_57 < x_59)) {
+        break;
+      }
+      {
+        x_45_phi = x_39;
+        if ((x_39 < 100)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      x_38_phi = x_39;
+      if ((x_39 < 100)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int const x_31 = func_(x_7);
+  if ((x_31 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3892134
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,177 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 94
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %loop_count "loop_count"
+               OpName %x_38_phi "x_38_phi"
+               OpName %x_39 "x_39"
+               OpName %x_45_phi "x_45_phi"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+        %int = OpTypeInt 32 1
+         %12 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %int_100 = OpConstant %int 100
+       %void = OpTypeVoid
+         %69 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %80 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %81 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %82 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %12
+         %15 = OpLabel
+ %loop_count = OpVariable %_ptr_Function_int Function %18
+   %x_38_phi = OpVariable %_ptr_Function_int Function %18
+       %x_39 = OpVariable %_ptr_Function_int Function %18
+   %x_45_phi = OpVariable %_ptr_Function_int Function %18
+               OpStore %loop_count %int_0
+               OpStore %x_38_phi %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %27 = OpLoad %int %x_38_phi
+         %29 = OpIAdd %int %27 %int_1
+               OpStore %loop_count %29
+               OpStore %x_45_phi %29
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %x_45_phi
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %x_39 %35
+         %36 = OpLoad %int %x_39
+               OpStore %loop_count %36
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %41 = OpLoad %float %40
+         %43 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %44 = OpLoad %float %43
+         %45 = OpFOrdLessThan %bool %41 %44
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %47
+         %48 = OpLabel
+               OpReturnValue %int_1
+         %47 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %52 = OpLoad %float %51
+         %53 = OpFOrdLessThan %bool %50 %52
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpBranch %31
+         %54 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %56 = OpLoad %int %x_39
+               OpStore %x_45_phi %56
+         %57 = OpLoad %int %x_39
+         %59 = OpSLessThan %bool %57 %int_100
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %31
+         %60 = OpLabel
+               OpBranch %30
+         %31 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+         %63 = OpLoad %int %x_39
+               OpStore %x_38_phi %63
+         %64 = OpLoad %int %x_39
+         %65 = OpSLessThan %bool %64 %int_100
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %22
+         %66 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %69
+         %72 = OpLabel
+         %73 = OpFunctionCall %int %func_
+         %74 = OpIEqual %bool %73 %int_1
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpStore %x_GLF_color %80
+               OpBranch %75
+         %77 = OpLabel
+               OpStore %x_GLF_color %81
+               OpBranch %75
+         %75 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %82
+%tint_symbol = OpFunctionParameter %main_out
+         %86 = OpLabel
+         %87 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %87
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %69
+         %89 = OpLabel
+         %90 = OpFunctionCall %void %main_1
+         %92 = OpLoad %v4float %x_GLF_color
+         %93 = OpCompositeConstruct %main_out %92
+         %91 = OpFunctionCall %void %tint_symbol_2 %93
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 23[%23] is not post dominated by the back-edge block 66[%66]
+  %66 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..43fb691
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,76 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var loop_count : i32;
+  var x_38_phi : i32;
+  loop_count = 0;
+  x_38_phi = 0;
+  loop {
+    var x_39 : i32;
+    var x_45_phi : i32;
+    let x_38 : i32 = x_38_phi;
+    let x_43 : i32 = (x_38 + 1);
+    loop_count = x_43;
+    x_45_phi = x_43;
+    loop {
+      let x_45 : i32 = x_45_phi;
+      x_39 = (x_45 + 1);
+      loop_count = x_39;
+      let x_50 : f32 = x_7.injectionSwitch.x;
+      let x_52 : f32 = x_7.injectionSwitch.y;
+      if ((x_50 < x_52)) {
+        return 1;
+      }
+      let x_57 : f32 = x_7.injectionSwitch.x;
+      let x_59 : f32 = x_7.injectionSwitch.y;
+      if ((x_57 < x_59)) {
+        break;
+      }
+
+      continuing {
+        x_45_phi = x_39;
+        if ((x_39 < 100)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      x_38_phi = x_39;
+      if ((x_39 < 100)) {
+      } else {
+        break;
+      }
+    }
+  }
+  return 0;
+}
+
+fn main_1() {
+  let x_31 : i32 = func_();
+  if ((x_31 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm
new file mode 100644
index 0000000..ad3300e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm
@@ -0,0 +1,58 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %12 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+       %main = OpFunction %void None %6
+         %19 = OpLabel
+               OpStore %_GLF_color %12
+               OpSelectionMerge %20 None
+               OpBranchConditional %true %21 %20
+         %21 = OpLabel
+         %22 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %23 = OpLoad %float %22
+         %24 = OpFOrdLessThan %bool %23 %float_0
+               OpSelectionMerge %25 None
+               OpBranchConditional %24 %26 %25
+         %26 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+               OpStore %_GLF_color %12
+               OpBranch %29
+         %29 = OpLabel
+         %31 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpFOrdLessThan %bool %32 %float_0
+               OpBranchConditional %33 %27 %28
+         %28 = OpLabel
+               OpBranch %25
+         %25 = OpLabel
+               OpBranch %20
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d23c22a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,41 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  if (true) {
+    const float x_23 = gl_FragCoord.x;
+    if ((x_23 < 0.0f)) {
+      while (true) {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        {
+          const float x_32 = gl_FragCoord.x;
+          if ((x_32 < 0.0f)) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..84c6e5e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.msl
@@ -0,0 +1,40 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  if (true) {
+    float const x_23 = (*(tint_symbol_6)).x;
+    if ((x_23 < 0.0f)) {
+      while (true) {
+        *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        {
+          float const x_32 = (*(tint_symbol_6)).x;
+          if ((x_32 < 0.0f)) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1de795f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %17 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %40 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+               OpStore %x_GLF_color %17
+               OpSelectionMerge %20 None
+               OpBranchConditional %true %21 %20
+         %21 = OpLabel
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpFOrdLessThan %bool %26 %float_0
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+               OpStore %x_GLF_color %17
+               OpBranch %32
+         %32 = OpLabel
+         %34 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %35 = OpLoad %float %34
+         %36 = OpFOrdLessThan %bool %35 %float_0
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %31
+         %37 = OpLabel
+               OpBranch %30
+         %31 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+               OpBranch %20
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %40
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %44 = OpLabel
+         %45 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %47 = OpLabel
+         %48 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %48
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_3 %52
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 32[%32] is not post dominated by the back-edge block 37[%37]
+  %37 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2c077a3f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,36 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  if (true) {
+    let x_23 : f32 = gl_FragCoord.x;
+    if ((x_23 < 0.0)) {
+      loop {
+        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+
+        continuing {
+          let x_32 : f32 = gl_FragCoord.x;
+          if ((x_32 < 0.0)) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
new file mode 100644
index 0000000..2c077a3f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
@@ -0,0 +1,36 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  if (true) {
+    let x_23 : f32 = gl_FragCoord.x;
+    if ((x_23 < 0.0)) {
+      loop {
+        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+
+        continuing {
+          let x_32 : f32 = gl_FragCoord.x;
+          if ((x_32 < 0.0)) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d23c22a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,41 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  if (true) {
+    const float x_23 = gl_FragCoord.x;
+    if ((x_23 < 0.0f)) {
+      while (true) {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        {
+          const float x_32 = gl_FragCoord.x;
+          if ((x_32 < 0.0f)) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..84c6e5e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.msl
@@ -0,0 +1,40 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  if (true) {
+    float const x_23 = (*(tint_symbol_6)).x;
+    if ((x_23 < 0.0f)) {
+      while (true) {
+        *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        {
+          float const x_32 = (*(tint_symbol_6)).x;
+          if ((x_32 < 0.0f)) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1de795f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,104 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %17 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %40 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+               OpStore %x_GLF_color %17
+               OpSelectionMerge %20 None
+               OpBranchConditional %true %21 %20
+         %21 = OpLabel
+         %25 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %26 = OpLoad %float %25
+         %27 = OpFOrdLessThan %bool %26 %float_0
+               OpSelectionMerge %28 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+               OpStore %x_GLF_color %17
+               OpBranch %32
+         %32 = OpLabel
+         %34 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %35 = OpLoad %float %34
+         %36 = OpFOrdLessThan %bool %35 %float_0
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %31
+         %37 = OpLabel
+               OpBranch %30
+         %31 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+               OpBranch %20
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %40
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %44 = OpLabel
+         %45 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %47 = OpLabel
+         %48 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %48
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_3 %52
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 32[%32] is not post dominated by the back-edge block 37[%37]
+  %37 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2c077a3f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,36 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  if (true) {
+    let x_23 : f32 = gl_FragCoord.x;
+    if ((x_23 < 0.0)) {
+      loop {
+        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+
+        continuing {
+          let x_32 : f32 = gl_FragCoord.x;
+          if ((x_32 < 0.0)) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm
new file mode 100644
index 0000000..bd48a95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm
@@ -0,0 +1,78 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %theSSBO "theSSBO"
+               OpMemberName %theSSBO 0 "out_data"
+               OpName %_ ""
+               OpMemberDecorate %theSSBO 0 Offset 0
+               OpDecorate %theSSBO BufferBlock
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+        %int = OpTypeInt 32 1
+    %theSSBO = OpTypeStruct %int
+%_ptr_Uniform_theSSBO = OpTypePointer Uniform %theSSBO
+          %_ = OpVariable %_ptr_Uniform_theSSBO Uniform
+      %int_0 = OpConstant %int 0
+     %int_42 = OpConstant %int 42
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_1 = OpConstant %int 1
+%mat2v2float = OpTypeMatrix %v2float 2
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v2float %float_1 %float_0
+         %23 = OpConstantComposite %v2float %float_0 %float_1
+         %24 = OpConstantComposite %mat2v2float %22 %23
+         %25 = OpConstantComposite %v2float %float_1 %float_1
+         %26 = OpUndef %mat2v2float
+       %main = OpFunction %void None %6
+         %27 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+               OpStore %28 %int_42
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpPhi %mat2v2float %26 %27 %24 %31
+         %32 = OpPhi %int %int_1 %27 %33 %31
+         %34 = OpSGreaterThan %bool %32 %int_0
+               OpLoopMerge %35 %31 None
+               OpBranchConditional %34 %31 %35
+         %31 = OpLabel
+         %33 = OpISub %int %32 %int_1
+               OpBranch %29
+         %35 = OpLabel
+         %36 = OpCompositeExtract %v2float %30 0
+         %37 = OpFSub %v2float %36 %22
+         %38 = OpCompositeExtract %v2float %30 1
+         %39 = OpFSub %v2float %38 %23
+         %40 = OpCompositeConstruct %mat2v2float %37 %39
+         %41 = OpVectorTimesMatrix %v2float %25 %40
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpCompositeExtract %float %41 0
+         %47 = OpFOrdLessThan %bool %float_1 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+               OpBranch %43
+         %48 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %43
+         %44 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..7909f45
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.hlsl
@@ -0,0 +1,39 @@
+RWByteAddressBuffer x_4 : register(u0, space0);
+
+void main_1() {
+  float2x2 x_30 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 x_30_phi = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_32_phi = 0;
+  x_4.Store(0u, asuint(42));
+  x_30_phi = float2x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  x_32_phi = 1;
+  while (true) {
+    int x_33 = 0;
+    x_30 = x_30_phi;
+    const int x_32 = x_32_phi;
+    if ((x_32 > 0)) {
+    } else {
+      break;
+    }
+    {
+      x_33 = (x_32 - 1);
+      x_30_phi = float2x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f));
+      x_32_phi = x_33;
+    }
+  }
+  const float2 x_41 = mul(float2x2((x_30[0u] - float2(1.0f, 0.0f)), (x_30[1u] - float2(0.0f, 1.0f))), float2(1.0f, 1.0f));
+  while (true) {
+    if ((1.0f < x_41.x)) {
+      break;
+    }
+    GroupMemoryBarrierWithGroupSync();
+    break;
+  }
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.msl
new file mode 100644
index 0000000..d4c94f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.msl
@@ -0,0 +1,44 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct theSSBO {
+  /* 0x0000 */ int out_data;
+};
+
+void main_1(device theSSBO& x_4) {
+  float2x2 x_30 = float2x2(0.0f);
+  float2x2 x_30_phi = float2x2(0.0f);
+  int x_32_phi = 0;
+  x_4.out_data = 42;
+  x_30_phi = float2x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  x_32_phi = 1;
+  while (true) {
+    int x_33 = 0;
+    x_30 = x_30_phi;
+    int const x_32 = x_32_phi;
+    if ((x_32 > 0)) {
+    } else {
+      break;
+    }
+    {
+      x_33 = (x_32 - 1);
+      x_30_phi = float2x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f));
+      x_32_phi = x_33;
+    }
+  }
+  float2 const x_41 = (float2(1.0f, 1.0f) * float2x2((x_30[0u] - float2(1.0f, 0.0f)), (x_30[1u] - float2(0.0f, 1.0f))));
+  while (true) {
+    if ((1.0f < x_41.x)) {
+      break;
+    }
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+    break;
+  }
+  return;
+}
+
+kernel void tint_symbol(device theSSBO& x_4 [[buffer(0)]]) {
+  main_1(x_4);
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..a2f71c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.spvasm
@@ -0,0 +1,121 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %theSSBO "theSSBO"
+               OpMemberName %theSSBO 0 "out_data"
+               OpName %x_4 "x_4"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %x_30_phi "x_30_phi"
+               OpName %x_32_phi "x_32_phi"
+               OpName %x_33 "x_33"
+               OpName %main "main"
+               OpDecorate %theSSBO Block
+               OpMemberDecorate %theSSBO 0 Offset 0
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 0
+        %int = OpTypeInt 32 1
+    %theSSBO = OpTypeStruct %int
+%_ptr_StorageBuffer_theSSBO = OpTypePointer StorageBuffer %theSSBO
+        %x_4 = OpVariable %_ptr_StorageBuffer_theSSBO StorageBuffer
+       %void = OpTypeVoid
+          %5 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %14 = OpConstantNull %mat2v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+     %int_42 = OpConstant %int 42
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v2float %float_0 %float_0
+         %26 = OpConstantComposite %mat2v2float %25 %25
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %43 = OpConstantComposite %v2float %float_1 %float_0
+         %44 = OpConstantComposite %v2float %float_0 %float_1
+         %45 = OpConstantComposite %mat2v2float %43 %44
+         %47 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+     %main_1 = OpFunction %void None %5
+          %8 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_mat2v2float Function %14
+   %x_30_phi = OpVariable %_ptr_Function_mat2v2float Function %14
+   %x_32_phi = OpVariable %_ptr_Function_int Function %18
+       %x_33 = OpVariable %_ptr_Function_int Function %18
+         %22 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %22 %int_42
+               OpStore %x_30_phi %26
+               OpStore %x_32_phi %int_1
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+         %33 = OpLoad %mat2v2float %x_30_phi
+               OpStore %x_30 %33
+         %34 = OpLoad %int %x_32_phi
+         %36 = OpSGreaterThan %bool %34 %int_0
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpBranch %38
+         %40 = OpLabel
+               OpBranch %29
+         %38 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+         %41 = OpISub %int %34 %int_1
+               OpStore %x_33 %41
+               OpStore %x_30_phi %45
+         %46 = OpLoad %int %x_33
+               OpStore %x_32_phi %46
+               OpBranch %28
+         %29 = OpLabel
+         %49 = OpAccessChain %_ptr_Function_v2float %x_30 %uint_0
+         %50 = OpLoad %v2float %49
+         %51 = OpFSub %v2float %50 %43
+         %53 = OpAccessChain %_ptr_Function_v2float %x_30 %uint_1
+         %54 = OpLoad %v2float %53
+         %55 = OpFSub %v2float %54 %44
+         %56 = OpCompositeConstruct %mat2v2float %51 %55
+         %57 = OpVectorTimesMatrix %v2float %47 %56
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpCompositeExtract %float %57 0
+         %63 = OpFOrdLessThan %bool %float_1 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %59
+         %64 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %59
+         %60 = OpLabel
+               OpBranch %58
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %5
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..7eaea5b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct theSSBO {
+  out_data : i32;
+};
+
+[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+
+fn main_1() {
+  var x_30 : mat2x2<f32>;
+  var x_30_phi : mat2x2<f32>;
+  var x_32_phi : i32;
+  x_4.out_data = 42;
+  x_30_phi = mat2x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  x_32_phi = 1;
+  loop {
+    var x_33 : i32;
+    x_30 = x_30_phi;
+    let x_32 : i32 = x_32_phi;
+    if ((x_32 > 0)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_33 = (x_32 - 1);
+      x_30_phi = mat2x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0));
+      x_32_phi = x_33;
+    }
+  }
+  let x_41 : vec2<f32> = (vec2<f32>(1.0, 1.0) * mat2x2<f32>((x_30[0u] - vec2<f32>(1.0, 0.0)), (x_30[1u] - vec2<f32>(0.0, 1.0))));
+  loop {
+    if ((1.0 < x_41.x)) {
+      break;
+    }
+    workgroupBarrier();
+    break;
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
new file mode 100644
index 0000000..7eaea5b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct theSSBO {
+  out_data : i32;
+};
+
+[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+
+fn main_1() {
+  var x_30 : mat2x2<f32>;
+  var x_30_phi : mat2x2<f32>;
+  var x_32_phi : i32;
+  x_4.out_data = 42;
+  x_30_phi = mat2x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  x_32_phi = 1;
+  loop {
+    var x_33 : i32;
+    x_30 = x_30_phi;
+    let x_32 : i32 = x_32_phi;
+    if ((x_32 > 0)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_33 = (x_32 - 1);
+      x_30_phi = mat2x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0));
+      x_32_phi = x_33;
+    }
+  }
+  let x_41 : vec2<f32> = (vec2<f32>(1.0, 1.0) * mat2x2<f32>((x_30[0u] - vec2<f32>(1.0, 0.0)), (x_30[1u] - vec2<f32>(0.0, 1.0))));
+  loop {
+    if ((1.0 < x_41.x)) {
+      break;
+    }
+    workgroupBarrier();
+    break;
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..7909f45
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.hlsl
@@ -0,0 +1,39 @@
+RWByteAddressBuffer x_4 : register(u0, space0);
+
+void main_1() {
+  float2x2 x_30 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 x_30_phi = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_32_phi = 0;
+  x_4.Store(0u, asuint(42));
+  x_30_phi = float2x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  x_32_phi = 1;
+  while (true) {
+    int x_33 = 0;
+    x_30 = x_30_phi;
+    const int x_32 = x_32_phi;
+    if ((x_32 > 0)) {
+    } else {
+      break;
+    }
+    {
+      x_33 = (x_32 - 1);
+      x_30_phi = float2x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f));
+      x_32_phi = x_33;
+    }
+  }
+  const float2 x_41 = mul(float2x2((x_30[0u] - float2(1.0f, 0.0f)), (x_30[1u] - float2(0.0f, 1.0f))), float2(1.0f, 1.0f));
+  while (true) {
+    if ((1.0f < x_41.x)) {
+      break;
+    }
+    GroupMemoryBarrierWithGroupSync();
+    break;
+  }
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.msl
new file mode 100644
index 0000000..d4c94f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.msl
@@ -0,0 +1,44 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct theSSBO {
+  /* 0x0000 */ int out_data;
+};
+
+void main_1(device theSSBO& x_4) {
+  float2x2 x_30 = float2x2(0.0f);
+  float2x2 x_30_phi = float2x2(0.0f);
+  int x_32_phi = 0;
+  x_4.out_data = 42;
+  x_30_phi = float2x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  x_32_phi = 1;
+  while (true) {
+    int x_33 = 0;
+    x_30 = x_30_phi;
+    int const x_32 = x_32_phi;
+    if ((x_32 > 0)) {
+    } else {
+      break;
+    }
+    {
+      x_33 = (x_32 - 1);
+      x_30_phi = float2x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f));
+      x_32_phi = x_33;
+    }
+  }
+  float2 const x_41 = (float2(1.0f, 1.0f) * float2x2((x_30[0u] - float2(1.0f, 0.0f)), (x_30[1u] - float2(0.0f, 1.0f))));
+  while (true) {
+    if ((1.0f < x_41.x)) {
+      break;
+    }
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+    break;
+  }
+  return;
+}
+
+kernel void tint_symbol(device theSSBO& x_4 [[buffer(0)]]) {
+  main_1(x_4);
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..a2f71c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.spvasm
@@ -0,0 +1,121 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %theSSBO "theSSBO"
+               OpMemberName %theSSBO 0 "out_data"
+               OpName %x_4 "x_4"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %x_30_phi "x_30_phi"
+               OpName %x_32_phi "x_32_phi"
+               OpName %x_33 "x_33"
+               OpName %main "main"
+               OpDecorate %theSSBO Block
+               OpMemberDecorate %theSSBO 0 Offset 0
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 0
+        %int = OpTypeInt 32 1
+    %theSSBO = OpTypeStruct %int
+%_ptr_StorageBuffer_theSSBO = OpTypePointer StorageBuffer %theSSBO
+        %x_4 = OpVariable %_ptr_StorageBuffer_theSSBO StorageBuffer
+       %void = OpTypeVoid
+          %5 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %14 = OpConstantNull %mat2v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+     %int_42 = OpConstant %int 42
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v2float %float_0 %float_0
+         %26 = OpConstantComposite %mat2v2float %25 %25
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %43 = OpConstantComposite %v2float %float_1 %float_0
+         %44 = OpConstantComposite %v2float %float_0 %float_1
+         %45 = OpConstantComposite %mat2v2float %43 %44
+         %47 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+     %main_1 = OpFunction %void None %5
+          %8 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_mat2v2float Function %14
+   %x_30_phi = OpVariable %_ptr_Function_mat2v2float Function %14
+   %x_32_phi = OpVariable %_ptr_Function_int Function %18
+       %x_33 = OpVariable %_ptr_Function_int Function %18
+         %22 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %22 %int_42
+               OpStore %x_30_phi %26
+               OpStore %x_32_phi %int_1
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+         %33 = OpLoad %mat2v2float %x_30_phi
+               OpStore %x_30 %33
+         %34 = OpLoad %int %x_32_phi
+         %36 = OpSGreaterThan %bool %34 %int_0
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpBranch %38
+         %40 = OpLabel
+               OpBranch %29
+         %38 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+         %41 = OpISub %int %34 %int_1
+               OpStore %x_33 %41
+               OpStore %x_30_phi %45
+         %46 = OpLoad %int %x_33
+               OpStore %x_32_phi %46
+               OpBranch %28
+         %29 = OpLabel
+         %49 = OpAccessChain %_ptr_Function_v2float %x_30 %uint_0
+         %50 = OpLoad %v2float %49
+         %51 = OpFSub %v2float %50 %43
+         %53 = OpAccessChain %_ptr_Function_v2float %x_30 %uint_1
+         %54 = OpLoad %v2float %53
+         %55 = OpFSub %v2float %54 %44
+         %56 = OpCompositeConstruct %mat2v2float %51 %55
+         %57 = OpVectorTimesMatrix %v2float %47 %56
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpCompositeExtract %float %57 0
+         %63 = OpFOrdLessThan %bool %float_1 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %59
+         %64 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %59
+         %60 = OpLabel
+               OpBranch %58
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %5
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..7eaea5b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct theSSBO {
+  out_data : i32;
+};
+
+[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+
+fn main_1() {
+  var x_30 : mat2x2<f32>;
+  var x_30_phi : mat2x2<f32>;
+  var x_32_phi : i32;
+  x_4.out_data = 42;
+  x_30_phi = mat2x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  x_32_phi = 1;
+  loop {
+    var x_33 : i32;
+    x_30 = x_30_phi;
+    let x_32 : i32 = x_32_phi;
+    if ((x_32 > 0)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_33 = (x_32 - 1);
+      x_30_phi = mat2x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0));
+      x_32_phi = x_33;
+    }
+  }
+  let x_41 : vec2<f32> = (vec2<f32>(1.0, 1.0) * mat2x2<f32>((x_30[0u] - vec2<f32>(1.0, 0.0)), (x_30[1u] - vec2<f32>(0.0, 1.0))));
+  loop {
+    if ((1.0 < x_41.x)) {
+      break;
+    }
+    workgroupBarrier();
+    break;
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm
new file mode 100644
index 0000000..5bc78c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm
@@ -0,0 +1,139 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %loop_count "loop_count"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+    %int_100 = OpConstant %int 100
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %28 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %9
+         %31 = OpLabel
+ %loop_count = OpVariable %_ptr_Function_int Function
+               OpStore %loop_count %int_0
+         %32 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %33 = OpLoad %float %32
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %35 = OpLoad %float %34
+         %36 = OpFOrdGreaterThan %bool %33 %35
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+               OpReturn
+         %37 = OpLabel
+         %39 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %40 %float_0
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpLoad %int %loop_count
+         %44 = OpSLessThan %bool %43 %int_100
+               OpLoopMerge %45 %46 None
+               OpBranchConditional %44 %47 %45
+         %47 = OpLabel
+               OpSelectionMerge %48 None
+               OpBranchConditional %36 %49 %48
+         %49 = OpLabel
+               OpBranch %45
+         %48 = OpLabel
+               OpSelectionMerge %50 None
+               OpBranchConditional %36 %51 %52
+         %51 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %50
+         %52 = OpLabel
+               OpSelectionMerge %53 None
+               OpBranchConditional %41 %54 %53
+         %54 = OpLabel
+               OpReturn
+         %53 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+               OpSelectionMerge %55 None
+               OpBranchConditional %36 %56 %57
+         %56 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %55
+         %57 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %55
+         %55 = OpLabel
+               OpSelectionMerge %58 None
+               OpBranchConditional %36 %59 %58
+         %59 = OpLabel
+               OpReturn
+         %58 = OpLabel
+               OpSelectionMerge %60 None
+               OpBranchConditional %41 %61 %60
+         %61 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %loop_count
+         %64 = OpSLessThan %bool %63 %int_100
+               OpLoopMerge %65 %66 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+         %67 = OpLoad %int %loop_count
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %loop_count %68
+               OpBranch %62
+         %65 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %69 = OpLoad %int %loop_count
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %loop_count %70
+               OpBranch %42
+         %45 = OpLabel
+         %71 = OpLoad %int %loop_count
+         %72 = OpSGreaterThanEqual %bool %71 %int_100
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+               OpStore %_GLF_color %29
+               OpBranch %73
+         %75 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %73
+         %73 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..6da0503
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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() {
+  int loop_count = 0;
+  loop_count = 0;
+  const float x_33 = asfloat(x_7[0].x);
+  const float x_35 = asfloat(x_7[0].y);
+  const bool x_36 = (x_33 > x_35);
+  if (x_36) {
+    return;
+  }
+  const float x_40 = gl_FragCoord.x;
+  const bool x_41 = (x_40 < 0.0f);
+  {
+    for(; (loop_count < 100); loop_count = (loop_count + 1)) {
+      if (x_36) {
+        break;
+      }
+      if (x_36) {
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      } else {
+        if (x_41) {
+          return;
+        }
+      }
+      if (x_36) {
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      } else {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      }
+      if (x_36) {
+        return;
+      }
+      if (x_41) {
+        {
+          for(; (loop_count < 100); loop_count = (loop_count + 1)) {
+          }
+        }
+      }
+    }
+  }
+  if ((loop_count >= 100)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..763a5d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.msl
@@ -0,0 +1,85 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int loop_count = 0;
+  loop_count = 0;
+  float const x_33 = x_7.injectionSwitch.x;
+  float const x_35 = x_7.injectionSwitch.y;
+  bool const x_36 = (x_33 > x_35);
+  if (x_36) {
+    return;
+  }
+  float const x_40 = (*(tint_symbol_5)).x;
+  bool const x_41 = (x_40 < 0.0f);
+  while (true) {
+    int const x_43 = loop_count;
+    if ((x_43 < 100)) {
+    } else {
+      break;
+    }
+    if (x_36) {
+      break;
+    }
+    if (x_36) {
+      *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    } else {
+      if (x_41) {
+        return;
+      }
+    }
+    if (x_36) {
+      *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    } else {
+      *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+    if (x_36) {
+      return;
+    }
+    if (x_41) {
+      while (true) {
+        int const x_63 = loop_count;
+        if ((x_63 < 100)) {
+        } else {
+          break;
+        }
+        {
+          int const x_67 = loop_count;
+          loop_count = (x_67 + 1);
+        }
+      }
+    }
+    {
+      int const x_69 = loop_count;
+      loop_count = (x_69 + 1);
+    }
+  }
+  int const x_71 = loop_count;
+  if ((x_71 >= 100)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ddaaf92
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,191 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 100
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %loop_count "loop_count"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+    %int_100 = OpConstant %int 100
+    %float_1 = OpConstant %float 1
+         %57 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %63 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %87 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+ %loop_count = OpVariable %_ptr_Function_int Function %22
+               OpStore %loop_count %int_0
+         %27 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %28 = OpLoad %float %27
+         %30 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %31 = OpLoad %float %30
+         %32 = OpFOrdGreaterThan %bool %28 %31
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %34
+         %35 = OpLabel
+               OpReturn
+         %34 = OpLabel
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %40 = OpFOrdLessThan %bool %38 %float_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %loop_count
+         %47 = OpSLessThan %bool %45 %int_100
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+               OpBranch %48
+         %50 = OpLabel
+               OpBranch %42
+         %48 = OpLabel
+               OpSelectionMerge %51 None
+               OpBranchConditional %32 %52 %51
+         %52 = OpLabel
+               OpBranch %42
+         %51 = OpLabel
+               OpSelectionMerge %53 None
+               OpBranchConditional %32 %54 %55
+         %54 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %53
+         %55 = OpLabel
+               OpSelectionMerge %58 None
+               OpBranchConditional %40 %59 %58
+         %59 = OpLabel
+               OpReturn
+         %58 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+               OpSelectionMerge %60 None
+               OpBranchConditional %32 %61 %62
+         %61 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %60
+         %62 = OpLabel
+               OpStore %x_GLF_color %63
+               OpBranch %60
+         %60 = OpLabel
+               OpSelectionMerge %64 None
+               OpBranchConditional %32 %65 %64
+         %65 = OpLabel
+               OpReturn
+         %64 = OpLabel
+               OpSelectionMerge %66 None
+               OpBranchConditional %40 %67 %66
+         %67 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpLoad %int %loop_count
+         %73 = OpSLessThan %bool %72 %int_100
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %69
+         %74 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %int %loop_count
+         %79 = OpIAdd %int %77 %int_1
+               OpStore %loop_count %79
+               OpBranch %68
+         %69 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+         %80 = OpLoad %int %loop_count
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %loop_count %81
+               OpBranch %41
+         %42 = OpLabel
+         %82 = OpLoad %int %loop_count
+         %83 = OpSGreaterThanEqual %bool %82 %int_100
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpStore %x_GLF_color %63
+               OpBranch %84
+         %86 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %84
+         %84 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %87
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %91 = OpLabel
+         %92 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %92
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %94 = OpLabel
+         %95 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %95
+         %96 = OpFunctionCall %void %main_1
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpCompositeConstruct %main_out %98
+         %97 = OpFunctionCall %void %tint_symbol_3 %99
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..08be511
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,86 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var loop_count : i32;
+  loop_count = 0;
+  let x_33 : f32 = x_7.injectionSwitch.x;
+  let x_35 : f32 = x_7.injectionSwitch.y;
+  let x_36 : bool = (x_33 > x_35);
+  if (x_36) {
+    return;
+  }
+  let x_40 : f32 = gl_FragCoord.x;
+  let x_41 : bool = (x_40 < 0.0);
+  loop {
+    let x_43 : i32 = loop_count;
+    if ((x_43 < 100)) {
+    } else {
+      break;
+    }
+    if (x_36) {
+      break;
+    }
+    if (x_36) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    } else {
+      if (x_41) {
+        return;
+      }
+    }
+    if (x_36) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    } else {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+    if (x_36) {
+      return;
+    }
+    if (x_41) {
+      loop {
+        let x_63 : i32 = loop_count;
+        if ((x_63 < 100)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_67 : i32 = loop_count;
+          loop_count = (x_67 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_69 : i32 = loop_count;
+      loop_count = (x_69 + 1);
+    }
+  }
+  let x_71 : i32 = loop_count;
+  if ((x_71 >= 100)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
new file mode 100644
index 0000000..08be511
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
@@ -0,0 +1,86 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var loop_count : i32;
+  loop_count = 0;
+  let x_33 : f32 = x_7.injectionSwitch.x;
+  let x_35 : f32 = x_7.injectionSwitch.y;
+  let x_36 : bool = (x_33 > x_35);
+  if (x_36) {
+    return;
+  }
+  let x_40 : f32 = gl_FragCoord.x;
+  let x_41 : bool = (x_40 < 0.0);
+  loop {
+    let x_43 : i32 = loop_count;
+    if ((x_43 < 100)) {
+    } else {
+      break;
+    }
+    if (x_36) {
+      break;
+    }
+    if (x_36) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    } else {
+      if (x_41) {
+        return;
+      }
+    }
+    if (x_36) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    } else {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+    if (x_36) {
+      return;
+    }
+    if (x_41) {
+      loop {
+        let x_63 : i32 = loop_count;
+        if ((x_63 < 100)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_67 : i32 = loop_count;
+          loop_count = (x_67 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_69 : i32 = loop_count;
+      loop_count = (x_69 + 1);
+    }
+  }
+  let x_71 : i32 = loop_count;
+  if ((x_71 >= 100)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..6da0503
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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() {
+  int loop_count = 0;
+  loop_count = 0;
+  const float x_33 = asfloat(x_7[0].x);
+  const float x_35 = asfloat(x_7[0].y);
+  const bool x_36 = (x_33 > x_35);
+  if (x_36) {
+    return;
+  }
+  const float x_40 = gl_FragCoord.x;
+  const bool x_41 = (x_40 < 0.0f);
+  {
+    for(; (loop_count < 100); loop_count = (loop_count + 1)) {
+      if (x_36) {
+        break;
+      }
+      if (x_36) {
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      } else {
+        if (x_41) {
+          return;
+        }
+      }
+      if (x_36) {
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      } else {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      }
+      if (x_36) {
+        return;
+      }
+      if (x_41) {
+        {
+          for(; (loop_count < 100); loop_count = (loop_count + 1)) {
+          }
+        }
+      }
+    }
+  }
+  if ((loop_count >= 100)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..763a5d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.msl
@@ -0,0 +1,85 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int loop_count = 0;
+  loop_count = 0;
+  float const x_33 = x_7.injectionSwitch.x;
+  float const x_35 = x_7.injectionSwitch.y;
+  bool const x_36 = (x_33 > x_35);
+  if (x_36) {
+    return;
+  }
+  float const x_40 = (*(tint_symbol_5)).x;
+  bool const x_41 = (x_40 < 0.0f);
+  while (true) {
+    int const x_43 = loop_count;
+    if ((x_43 < 100)) {
+    } else {
+      break;
+    }
+    if (x_36) {
+      break;
+    }
+    if (x_36) {
+      *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    } else {
+      if (x_41) {
+        return;
+      }
+    }
+    if (x_36) {
+      *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    } else {
+      *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+    if (x_36) {
+      return;
+    }
+    if (x_41) {
+      while (true) {
+        int const x_63 = loop_count;
+        if ((x_63 < 100)) {
+        } else {
+          break;
+        }
+        {
+          int const x_67 = loop_count;
+          loop_count = (x_67 + 1);
+        }
+      }
+    }
+    {
+      int const x_69 = loop_count;
+      loop_count = (x_69 + 1);
+    }
+  }
+  int const x_71 = loop_count;
+  if ((x_71 >= 100)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ddaaf92
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,191 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 100
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %loop_count "loop_count"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+    %int_100 = OpConstant %int 100
+    %float_1 = OpConstant %float 1
+         %57 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %63 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %87 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+ %loop_count = OpVariable %_ptr_Function_int Function %22
+               OpStore %loop_count %int_0
+         %27 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %28 = OpLoad %float %27
+         %30 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %31 = OpLoad %float %30
+         %32 = OpFOrdGreaterThan %bool %28 %31
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %34
+         %35 = OpLabel
+               OpReturn
+         %34 = OpLabel
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %40 = OpFOrdLessThan %bool %38 %float_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %loop_count
+         %47 = OpSLessThan %bool %45 %int_100
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+               OpBranch %48
+         %50 = OpLabel
+               OpBranch %42
+         %48 = OpLabel
+               OpSelectionMerge %51 None
+               OpBranchConditional %32 %52 %51
+         %52 = OpLabel
+               OpBranch %42
+         %51 = OpLabel
+               OpSelectionMerge %53 None
+               OpBranchConditional %32 %54 %55
+         %54 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %53
+         %55 = OpLabel
+               OpSelectionMerge %58 None
+               OpBranchConditional %40 %59 %58
+         %59 = OpLabel
+               OpReturn
+         %58 = OpLabel
+               OpBranch %53
+         %53 = OpLabel
+               OpSelectionMerge %60 None
+               OpBranchConditional %32 %61 %62
+         %61 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %60
+         %62 = OpLabel
+               OpStore %x_GLF_color %63
+               OpBranch %60
+         %60 = OpLabel
+               OpSelectionMerge %64 None
+               OpBranchConditional %32 %65 %64
+         %65 = OpLabel
+               OpReturn
+         %64 = OpLabel
+               OpSelectionMerge %66 None
+               OpBranchConditional %40 %67 %66
+         %67 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpLoad %int %loop_count
+         %73 = OpSLessThan %bool %72 %int_100
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %69
+         %74 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+         %77 = OpLoad %int %loop_count
+         %79 = OpIAdd %int %77 %int_1
+               OpStore %loop_count %79
+               OpBranch %68
+         %69 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+         %80 = OpLoad %int %loop_count
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %loop_count %81
+               OpBranch %41
+         %42 = OpLabel
+         %82 = OpLoad %int %loop_count
+         %83 = OpSGreaterThanEqual %bool %82 %int_100
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpStore %x_GLF_color %63
+               OpBranch %84
+         %86 = OpLabel
+               OpStore %x_GLF_color %57
+               OpBranch %84
+         %84 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %87
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %91 = OpLabel
+         %92 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %92
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %94 = OpLabel
+         %95 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %95
+         %96 = OpFunctionCall %void %main_1
+         %98 = OpLoad %v4float %x_GLF_color
+         %99 = OpCompositeConstruct %main_out %98
+         %97 = OpFunctionCall %void %tint_symbol_3 %99
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..08be511
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,86 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var loop_count : i32;
+  loop_count = 0;
+  let x_33 : f32 = x_7.injectionSwitch.x;
+  let x_35 : f32 = x_7.injectionSwitch.y;
+  let x_36 : bool = (x_33 > x_35);
+  if (x_36) {
+    return;
+  }
+  let x_40 : f32 = gl_FragCoord.x;
+  let x_41 : bool = (x_40 < 0.0);
+  loop {
+    let x_43 : i32 = loop_count;
+    if ((x_43 < 100)) {
+    } else {
+      break;
+    }
+    if (x_36) {
+      break;
+    }
+    if (x_36) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    } else {
+      if (x_41) {
+        return;
+      }
+    }
+    if (x_36) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    } else {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+    if (x_36) {
+      return;
+    }
+    if (x_41) {
+      loop {
+        let x_63 : i32 = loop_count;
+        if ((x_63 < 100)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_67 : i32 = loop_count;
+          loop_count = (x_67 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_69 : i32 = loop_count;
+      loop_count = (x_69 + 1);
+    }
+  }
+  let x_71 : i32 = loop_count;
+  if ((x_71 >= 100)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm
new file mode 100644
index 0000000..d28f656
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm
@@ -0,0 +1,62 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %drawShape_vf2_ "drawShape(vf2;"
+               OpName %pos "pos"
+               OpName %c3 "c3"
+               OpName %param "param"
+               OpName %color "color"
+               OpDecorate %color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v3float = OpTypeVector %float 3
+         %14 = OpTypeFunction %v3float %_ptr_Function_v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+         %21 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+         %22 = OpConstantComposite %v2float %float_1 %float_1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+      %color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %27 = OpUndef %bool
+       %main = OpFunction %void None %9
+         %28 = OpLabel
+      %param = OpVariable %_ptr_Function_v2float Function
+               OpStore %param %22
+         %29 = OpFunctionCall %v3float %drawShape_vf2_ %param
+               OpStore %color %26
+               OpReturn
+               OpFunctionEnd
+%drawShape_vf2_ = OpFunction %v3float None %14
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+         %30 = OpLabel
+         %c3 = OpVariable %_ptr_Function_bool Function
+         %31 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFOrdLessThan %bool %32 %float_1
+               OpStore %c3 %33
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpPhi %bool %33 %30 %27 %36
+               OpLoopMerge %37 %36 None
+               OpBranchConditional %35 %38 %37
+         %38 = OpLabel
+               OpReturnValue %21
+         %36 = OpLabel
+               OpBranch %34
+         %37 = OpLabel
+               OpReturnValue %21
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..658f19b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+
+var<private> color : vec4<f32>;
+
+fn drawShape_vf2_(pos : ptr<function, vec2<f32>>) -> vec3<f32> {
+  var c3 : bool;
+  var x_35_phi : bool;
+  let x_32 : f32 = (*(pos)).y;
+  let x_33 : bool = (x_32 < 1.0);
+  c3 = x_33;
+  x_35_phi = x_33;
+  loop {
+    let x_35 : bool = x_35_phi;
+    if (x_35) {
+    } else {
+      break;
+    }
+    return vec3<f32>(1.0, 1.0, 1.0);
+
+    continuing {
+      x_35_phi = false;
+    }
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var param : vec2<f32>;
+  param = vec2<f32>(1.0, 1.0);
+  let x_29 : vec3<f32> = drawShape_vf2_(&(param));
+  color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color);
+}
+
+Failed to generate: error: for-loop condition must be bool, got bool
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..876f990
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.msl
@@ -0,0 +1,47 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_1;
+};
+struct tint_symbol_1 {
+  float4 color_1 [[color(0)]];
+};
+
+float3 drawShape_vf2_(thread float2* const pos) {
+  bool c3 = false;
+  bool x_35_phi = false;
+  float const x_32 = (*(pos)).y;
+  bool const x_33 = (x_32 < 1.0f);
+  c3 = x_33;
+  x_35_phi = x_33;
+  while (true) {
+    bool const x_35 = x_35_phi;
+    if (x_35) {
+    } else {
+      break;
+    }
+    return float3(1.0f, 1.0f, 1.0f);
+    {
+      x_35_phi = false;
+    }
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 param = 0.0f;
+  param = float2(1.0f, 1.0f);
+  float3 const x_29 = drawShape_vf2_(&(param));
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.color_1=tint_symbol_2.color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..945adf2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,105 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %color "color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %drawShape_vf2_ "drawShape_vf2_"
+               OpName %pos "pos"
+               OpName %c3 "c3"
+               OpName %x_35_phi "x_35_phi"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+      %color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+          %8 = OpTypeFunction %v3float %_ptr_Function_v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %18 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+         %36 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %false = OpConstantFalse %bool
+       %void = OpTypeVoid
+         %38 = OpTypeFunction %void
+         %43 = OpConstantNull %v2float
+         %44 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+%drawShape_vf2_ = OpFunction %v3float None %8
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+         %14 = OpLabel
+         %c3 = OpVariable %_ptr_Function_bool Function %18
+   %x_35_phi = OpVariable %_ptr_Function_bool Function %18
+         %24 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %25 = OpLoad %float %24
+         %27 = OpFOrdLessThan %bool %25 %float_1
+               OpStore %c3 %27
+               OpStore %x_35_phi %27
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+         %32 = OpLoad %bool %x_35_phi
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpBranch %33
+         %35 = OpLabel
+               OpBranch %29
+         %33 = OpLabel
+               OpReturnValue %36
+         %30 = OpLabel
+               OpStore %x_35_phi %false
+               OpBranch %28
+         %29 = OpLabel
+               OpReturnValue %36
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %38
+         %41 = OpLabel
+      %param = OpVariable %_ptr_Function_v2float Function %43
+               OpStore %param %44
+         %45 = OpFunctionCall %v3float %drawShape_vf2_ %param
+               OpStore %color %48
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %38
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3817d55
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+var<private> color : vec4<f32>;
+
+fn drawShape_vf2_(pos : ptr<function, vec2<f32>>) -> vec3<f32> {
+  var c3 : bool;
+  var x_35_phi : bool;
+  let x_32 : f32 = (*(pos)).y;
+  let x_33 : bool = (x_32 < 1.0);
+  c3 = x_33;
+  x_35_phi = x_33;
+  loop {
+    let x_35 : bool = x_35_phi;
+    if (x_35) {
+    } else {
+      break;
+    }
+    return vec3<f32>(1.0, 1.0, 1.0);
+
+    continuing {
+      x_35_phi = false;
+    }
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var param : vec2<f32>;
+  param = vec2<f32>(1.0, 1.0);
+  let x_29 : vec3<f32> = drawShape_vf2_(&(param));
+  color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
new file mode 100644
index 0000000..3817d55
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
@@ -0,0 +1,42 @@
+var<private> color : vec4<f32>;
+
+fn drawShape_vf2_(pos : ptr<function, vec2<f32>>) -> vec3<f32> {
+  var c3 : bool;
+  var x_35_phi : bool;
+  let x_32 : f32 = (*(pos)).y;
+  let x_33 : bool = (x_32 < 1.0);
+  c3 = x_33;
+  x_35_phi = x_33;
+  loop {
+    let x_35 : bool = x_35_phi;
+    if (x_35) {
+    } else {
+      break;
+    }
+    return vec3<f32>(1.0, 1.0, 1.0);
+
+    continuing {
+      x_35_phi = false;
+    }
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var param : vec2<f32>;
+  param = vec2<f32>(1.0, 1.0);
+  let x_29 : vec3<f32> = drawShape_vf2_(&(param));
+  color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..028dc34
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,50 @@
+SKIP: FAILED
+
+
+var<private> color : vec4<f32>;
+
+fn drawShape_vf2_(pos : ptr<function, vec2<f32>>) -> vec3<f32> {
+  var c3 : bool;
+  var x_35_phi : bool;
+  let x_32 : f32 = (*(pos)).y;
+  let x_33 : bool = (x_32 < 1.0);
+  c3 = x_33;
+  x_35_phi = x_33;
+  loop {
+    let x_35 : bool = x_35_phi;
+    if (x_35) {
+    } else {
+      break;
+    }
+    return vec3<f32>(1.0, 1.0, 1.0);
+
+    continuing {
+      x_35_phi = false;
+    }
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var param : vec2<f32>;
+  param = vec2<f32>(1.0, 1.0);
+  let x_29 : vec3<f32> = drawShape_vf2_(&(param));
+  color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color);
+}
+
+Failed to generate: graphicsfuzz/for-condition-always-false/0-opt.wgsl:11:23 error: for-loop condition must be bool, got bool
+    let x_35 : bool = x_35_phi;
+                      ^^^^^^^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..876f990
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.msl
@@ -0,0 +1,47 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_1;
+};
+struct tint_symbol_1 {
+  float4 color_1 [[color(0)]];
+};
+
+float3 drawShape_vf2_(thread float2* const pos) {
+  bool c3 = false;
+  bool x_35_phi = false;
+  float const x_32 = (*(pos)).y;
+  bool const x_33 = (x_32 < 1.0f);
+  c3 = x_33;
+  x_35_phi = x_33;
+  while (true) {
+    bool const x_35 = x_35_phi;
+    if (x_35) {
+    } else {
+      break;
+    }
+    return float3(1.0f, 1.0f, 1.0f);
+    {
+      x_35_phi = false;
+    }
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float2 param = 0.0f;
+  param = float2(1.0f, 1.0f);
+  float3 const x_29 = drawShape_vf2_(&(param));
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.color_1=tint_symbol_2.color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..945adf2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,105 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 61
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %color "color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %drawShape_vf2_ "drawShape_vf2_"
+               OpName %pos "pos"
+               OpName %c3 "c3"
+               OpName %x_35_phi "x_35_phi"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+      %color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+          %8 = OpTypeFunction %v3float %_ptr_Function_v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %18 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+         %36 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %false = OpConstantFalse %bool
+       %void = OpTypeVoid
+         %38 = OpTypeFunction %void
+         %43 = OpConstantNull %v2float
+         %44 = OpConstantComposite %v2float %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %49 = OpTypeFunction %void %main_out
+%drawShape_vf2_ = OpFunction %v3float None %8
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+         %14 = OpLabel
+         %c3 = OpVariable %_ptr_Function_bool Function %18
+   %x_35_phi = OpVariable %_ptr_Function_bool Function %18
+         %24 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %25 = OpLoad %float %24
+         %27 = OpFOrdLessThan %bool %25 %float_1
+               OpStore %c3 %27
+               OpStore %x_35_phi %27
+               OpBranch %28
+         %28 = OpLabel
+               OpLoopMerge %29 %30 None
+               OpBranch %31
+         %31 = OpLabel
+         %32 = OpLoad %bool %x_35_phi
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %35
+         %34 = OpLabel
+               OpBranch %33
+         %35 = OpLabel
+               OpBranch %29
+         %33 = OpLabel
+               OpReturnValue %36
+         %30 = OpLabel
+               OpStore %x_35_phi %false
+               OpBranch %28
+         %29 = OpLabel
+               OpReturnValue %36
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %38
+         %41 = OpLabel
+      %param = OpVariable %_ptr_Function_v2float Function %43
+               OpStore %param %44
+         %45 = OpFunctionCall %v3float %drawShape_vf2_ %param
+               OpStore %color %48
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %49
+%tint_symbol = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %38
+         %56 = OpLabel
+         %57 = OpFunctionCall %void %main_1
+         %59 = OpLoad %v4float %color
+         %60 = OpCompositeConstruct %main_out %59
+         %58 = OpFunctionCall %void %tint_symbol_2 %60
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3817d55
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+var<private> color : vec4<f32>;
+
+fn drawShape_vf2_(pos : ptr<function, vec2<f32>>) -> vec3<f32> {
+  var c3 : bool;
+  var x_35_phi : bool;
+  let x_32 : f32 = (*(pos)).y;
+  let x_33 : bool = (x_32 < 1.0);
+  c3 = x_33;
+  x_35_phi = x_33;
+  loop {
+    let x_35 : bool = x_35_phi;
+    if (x_35) {
+    } else {
+      break;
+    }
+    return vec3<f32>(1.0, 1.0, 1.0);
+
+    continuing {
+      x_35_phi = false;
+    }
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var param : vec2<f32>;
+  param = vec2<f32>(1.0, 1.0);
+  let x_29 : vec3<f32> = drawShape_vf2_(&(param));
+  color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm
new file mode 100644
index 0000000..f11e6d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm
@@ -0,0 +1,50 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %mand_ "mand("
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+          %9 = OpTypeFunction %v3float
+    %float_1 = OpConstant %float 1
+         %11 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %6
+         %16 = OpLabel
+         %17 = OpFunctionCall %v3float %mand_
+               OpBranch %18
+         %18 = OpLabel
+               OpLoopMerge %19 %20 None
+               OpBranch %21
+         %21 = OpLabel
+               OpStore %_GLF_color %15
+               OpReturn
+         %20 = OpLabel
+               OpBranch %18
+         %19 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
+      %mand_ = OpFunction %v3float None %9
+         %22 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+               OpReturnValue %11
+         %25 = OpLabel
+               OpBranch %23
+         %24 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..71965c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 mand_() {
+  while (true) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  const float3 x_17 = mand_();
+  while (true) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.msl
new file mode 100644
index 0000000..5b8b718
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 mand_() {
+  while (true) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float3 const x_17 = mand_();
+  while (true) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    return;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..3e35963
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.spvasm
@@ -0,0 +1,81 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %mand_ "mand_"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+    %float_1 = OpConstant %float 1
+         %17 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %30 = OpTypeFunction %void %main_out
+      %mand_ = OpFunction %v3float None %8
+         %11 = OpLabel
+               OpBranch %12
+         %12 = OpLabel
+               OpLoopMerge %13 %14 None
+               OpBranch %15
+         %15 = OpLabel
+               OpReturnValue %17
+         %14 = OpLabel
+               OpBranch %12
+         %13 = OpLabel
+               OpReturnValue %19
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %24 = OpFunctionCall %v3float %mand_
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+               OpStore %x_GLF_color %29
+               OpReturn
+         %27 = OpLabel
+               OpBranch %25
+         %26 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %30
+%tint_symbol = OpFunctionParameter %main_out
+         %34 = OpLabel
+         %35 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %35
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %main_1
+         %40 = OpLoad %v4float %x_GLF_color
+         %41 = OpCompositeConstruct %main_out %40
+         %39 = OpFunctionCall %void %tint_symbol_2 %41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..1478c3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn mand_() -> vec3<f32> {
+  loop {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  let x_17 : vec3<f32> = mand_();
+  loop {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
new file mode 100644
index 0000000..1478c3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
@@ -0,0 +1,28 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn mand_() -> vec3<f32> {
+  loop {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  let x_17 : vec3<f32> = mand_();
+  loop {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..71965c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 mand_() {
+  while (true) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  const float3 x_17 = mand_();
+  while (true) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.msl
new file mode 100644
index 0000000..5b8b718
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 mand_() {
+  while (true) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float3 const x_17 = mand_();
+  while (true) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    return;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..3e35963
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.spvasm
@@ -0,0 +1,81 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %mand_ "mand_"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+    %float_1 = OpConstant %float 1
+         %17 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %30 = OpTypeFunction %void %main_out
+      %mand_ = OpFunction %v3float None %8
+         %11 = OpLabel
+               OpBranch %12
+         %12 = OpLabel
+               OpLoopMerge %13 %14 None
+               OpBranch %15
+         %15 = OpLabel
+               OpReturnValue %17
+         %14 = OpLabel
+               OpBranch %12
+         %13 = OpLabel
+               OpReturnValue %19
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %24 = OpFunctionCall %v3float %mand_
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+               OpStore %x_GLF_color %29
+               OpReturn
+         %27 = OpLabel
+               OpBranch %25
+         %26 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %30
+%tint_symbol = OpFunctionParameter %main_out
+         %34 = OpLabel
+         %35 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %35
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %main_1
+         %40 = OpLoad %v4float %x_GLF_color
+         %41 = OpCompositeConstruct %main_out %40
+         %39 = OpFunctionCall %void %tint_symbol_2 %41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..1478c3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn mand_() -> vec3<f32> {
+  loop {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  let x_17 : vec3<f32> = mand_();
+  loop {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm
new file mode 100644
index 0000000..59f0b30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm
@@ -0,0 +1,78 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_0 = OpConstant %uint 0
+%float_226_695999 = OpConstant %float 226.695999
+         %28 = OpConstantComposite %v4float %float_226_695999 %float_1 %float_1 %float_1
+       %main = OpFunction %void None %10
+         %29 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %16
+               OpStore %i %int_1
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+          %6 = OpLoad %int %i
+         %34 = OpSLessThan %bool %6 %int_2
+               OpBranchConditional %34 %35 %31
+         %35 = OpLabel
+         %36 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %37 = OpLoad %float %36
+         %38 = OpFOrdLessThan %bool %37 %float_0
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %39
+         %40 = OpLabel
+         %41 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdLessThan %bool %42 %float_0
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpStore %_GLF_color %28
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %32
+         %39 = OpLabel
+               OpReturn
+         %32 = OpLabel
+          %7 = OpLoad %int %i
+          %8 = OpIAdd %int %7 %int_1
+               OpStore %i %8
+               OpBranch %30
+         %31 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2d3183d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,41 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 1;
+  {
+    for(; (i < 2); i = (i + 1)) {
+      const float x_37 = gl_FragCoord.y;
+      if ((x_37 < 0.0f)) {
+        const float x_42 = gl_FragCoord.x;
+        if ((x_42 < 0.0f)) {
+          x_GLF_color = float4(226.695999146f, 1.0f, 1.0f, 1.0f);
+        }
+        continue;
+      }
+      return;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d32227c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.msl
@@ -0,0 +1,51 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 1;
+  while (true) {
+    int const x_6 = i;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    float const x_37 = (*(tint_symbol_6)).y;
+    if ((x_37 < 0.0f)) {
+      float const x_42 = (*(tint_symbol_6)).x;
+      if ((x_42 < 0.0f)) {
+        *(tint_symbol_5) = float4(226.695999146f, 1.0f, 1.0f, 1.0f);
+      }
+      {
+        int const x_7 = i;
+        i = (x_7 + 1);
+      }
+      continue;
+    }
+    return;
+    {
+      int const x_7 = i;
+      i = (x_7 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..42a7dcd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+%float_226_695999 = OpConstant %float 226.695999
+         %49 = OpConstantComposite %v4float %float_226_695999 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %x_GLF_color %21
+               OpStore %i %int_1
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %i
+         %29 = OpSLessThan %bool %27 %int_2
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %24
+         %31 = OpLabel
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %38 = OpLoad %float %37
+         %39 = OpFOrdLessThan %bool %38 %float_0
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %43 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %44 = OpLoad %float %43
+         %45 = OpFOrdLessThan %bool %44 %float_0
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpStore %x_GLF_color %49
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %25
+         %40 = OpLabel
+               OpReturn
+         %25 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %i %51
+               OpBranch %23
+         %24 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %52
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %59 = OpLabel
+         %60 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %60
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_3 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..869d8a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,43 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 1;
+  loop {
+    let x_6 : i32 = i;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    let x_37 : f32 = gl_FragCoord.y;
+    if ((x_37 < 0.0)) {
+      let x_42 : f32 = gl_FragCoord.x;
+      if ((x_42 < 0.0)) {
+        x_GLF_color = vec4<f32>(226.695999146, 1.0, 1.0, 1.0);
+      }
+      continue;
+    }
+    return;
+
+    continuing {
+      let x_7 : i32 = i;
+      i = (x_7 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
new file mode 100644
index 0000000..869d8a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
@@ -0,0 +1,43 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 1;
+  loop {
+    let x_6 : i32 = i;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    let x_37 : f32 = gl_FragCoord.y;
+    if ((x_37 < 0.0)) {
+      let x_42 : f32 = gl_FragCoord.x;
+      if ((x_42 < 0.0)) {
+        x_GLF_color = vec4<f32>(226.695999146, 1.0, 1.0, 1.0);
+      }
+      continue;
+    }
+    return;
+
+    continuing {
+      let x_7 : i32 = i;
+      i = (x_7 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2d3183d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,41 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 1;
+  {
+    for(; (i < 2); i = (i + 1)) {
+      const float x_37 = gl_FragCoord.y;
+      if ((x_37 < 0.0f)) {
+        const float x_42 = gl_FragCoord.x;
+        if ((x_42 < 0.0f)) {
+          x_GLF_color = float4(226.695999146f, 1.0f, 1.0f, 1.0f);
+        }
+        continue;
+      }
+      return;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d32227c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.msl
@@ -0,0 +1,51 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 1;
+  while (true) {
+    int const x_6 = i;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    float const x_37 = (*(tint_symbol_6)).y;
+    if ((x_37 < 0.0f)) {
+      float const x_42 = (*(tint_symbol_6)).x;
+      if ((x_42 < 0.0f)) {
+        *(tint_symbol_5) = float4(226.695999146f, 1.0f, 1.0f, 1.0f);
+      }
+      {
+        int const x_7 = i;
+        i = (x_7 + 1);
+      }
+      continue;
+    }
+    return;
+    {
+      int const x_7 = i;
+      i = (x_7 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..42a7dcd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,114 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+%float_226_695999 = OpConstant %float 226.695999
+         %49 = OpConstantComposite %v4float %float_226_695999 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %18
+               OpStore %x_GLF_color %21
+               OpStore %i %int_1
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %i
+         %29 = OpSLessThan %bool %27 %int_2
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %24
+         %31 = OpLabel
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %38 = OpLoad %float %37
+         %39 = OpFOrdLessThan %bool %38 %float_0
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %43 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %44 = OpLoad %float %43
+         %45 = OpFOrdLessThan %bool %44 %float_0
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpStore %x_GLF_color %49
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %25
+         %40 = OpLabel
+               OpReturn
+         %25 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpIAdd %int %50 %int_1
+               OpStore %i %51
+               OpBranch %23
+         %24 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %52
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %59 = OpLabel
+         %60 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %60
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_3 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..869d8a9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,43 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 1;
+  loop {
+    let x_6 : i32 = i;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    let x_37 : f32 = gl_FragCoord.y;
+    if ((x_37 < 0.0)) {
+      let x_42 : f32 = gl_FragCoord.x;
+      if ((x_42 < 0.0)) {
+        x_GLF_color = vec4<f32>(226.695999146, 1.0, 1.0, 1.0);
+      }
+      continue;
+    }
+    return;
+
+    continuing {
+      let x_7 : i32 = i;
+      i = (x_7 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm
new file mode 100644
index 0000000..6435034
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm
@@ -0,0 +1,206 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %alwaysZero_vf2_ "alwaysZero(vf2;"
+               OpName %coord "coord"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %b "b"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %zero "zero"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpName %temp "temp"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %int = OpTypeInt 32 1
+         %20 = OpTypeFunction %int %_ptr_Function_v2float
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+   %float_50 = OpConstant %float 50
+       %bool = OpTypeBool
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %37 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Output_float = OpTypePointer Output %float
+     %uint_2 = OpConstant %uint 2
+      %false = OpConstantFalse %bool
+       %main = OpFunction %void None %15
+         %42 = OpLabel
+         %43 = OpVariable %_ptr_Function_float Function
+         %44 = OpVariable %_ptr_Function_float Function
+         %45 = OpVariable %_ptr_Function_float Function
+         %46 = OpVariable %_ptr_Function_int Function
+       %zero = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_v2float Function
+       %temp = OpVariable %_ptr_Function_v2float Function
+         %47 = OpLoad %v4float %gl_FragCoord
+         %48 = OpVectorShuffle %v2float %47 %47 0 1
+               OpStore %param %48
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpAccessChain %_ptr_Function_float %param %uint_1
+         %54 = OpLoad %float %53
+         %55 = OpFOrdLessThan %bool %54 %float_50
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %60 = OpLoad %float %59
+               OpStore %44 %60
+               OpBranch %56
+         %58 = OpLabel
+               OpStore %44 %float_0
+               OpBranch %56
+         %56 = OpLabel
+         %61 = OpLoad %float %44
+               OpStore %43 %61
+         %62 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %63 = OpLoad %float %62
+         %64 = OpFOrdLessThan %bool %63 %float_50
+         %65 = OpSelect %float %64 %float_1 %float_0
+               OpStore %45 %65
+         %66 = OpFSub %float %61 %65
+         %67 = OpFOrdLessThan %bool %66 %float_1
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpStore %46 %int_0
+               OpBranch %50
+         %68 = OpLabel
+               OpStore %46 %int_1
+               OpBranch %50
+         %51 = OpLabel
+               OpBranchConditional %false %49 %50
+         %50 = OpLabel
+         %70 = OpLoad %int %46
+               OpStore %zero %70
+         %71 = OpIEqual %bool %70 %int_1
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpReturn
+         %72 = OpLabel
+               OpStore %_GLF_color %37
+         %74 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %77 = OpLoad %float %76
+         %78 = OpFOrdGreaterThanEqual %bool %75 %77
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+         %81 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %82 = OpLoad %float %81
+         %83 = OpFOrdGreaterThanEqual %bool %82 %float_0
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %84
+         %85 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_0
+               OpStore %88 %87
+               OpBranch %84
+         %84 = OpLabel
+               OpBranch %79
+         %79 = OpLabel
+         %89 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %90 = OpLoad %float %89
+         %91 = OpFOrdGreaterThanEqual %bool %90 %float_0
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %92
+         %93 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %95 = OpLoad %float %94
+         %96 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_1
+               OpStore %96 %95
+               OpBranch %92
+         %92 = OpLabel
+         %97 = OpLoad %v4float %gl_FragCoord
+         %98 = OpVectorShuffle %v2float %97 %97 0 1
+         %99 = OpCompositeExtract %float %98 0
+        %100 = OpCompositeExtract %float %98 1
+        %101 = OpCompositeConstruct %v2float %99 %100
+               OpStore %temp %101
+        %102 = OpCompositeExtract %float %101 1
+        %103 = OpFOrdGreaterThanEqual %bool %102 %float_0
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %107 = OpLoad %float %106
+        %108 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_2
+               OpStore %108 %107
+               OpBranch %104
+        %104 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%alwaysZero_vf2_ = OpFunction %int None %20
+      %coord = OpFunctionParameter %_ptr_Function_v2float
+        %109 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function
+        %110 = OpVariable %_ptr_Function_float Function
+          %b = OpVariable %_ptr_Function_float Function
+        %111 = OpAccessChain %_ptr_Function_float %coord %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpFOrdLessThan %bool %112 %float_50
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %115 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %118 = OpLoad %float %117
+               OpStore %110 %118
+               OpBranch %114
+        %116 = OpLabel
+               OpStore %110 %float_0
+               OpBranch %114
+        %114 = OpLabel
+        %119 = OpLoad %float %110
+               OpStore %a %119
+        %120 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %121 = OpLoad %float %120
+        %122 = OpFOrdLessThan %bool %121 %float_50
+        %123 = OpSelect %float %122 %float_1 %float_0
+               OpStore %b %123
+        %124 = OpFSub %float %119 %123
+        %125 = OpFOrdLessThan %bool %124 %float_1
+               OpSelectionMerge %126 None
+               OpBranchConditional %125 %127 %126
+        %127 = OpLabel
+               OpReturnValue %int_0
+        %126 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3bb430f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,113 @@
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+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() {
+  float x_43 = 0.0f;
+  float x_44 = 0.0f;
+  float x_45 = 0.0f;
+  int x_46 = 0;
+  int zero = 0;
+  float2 param = float2(0.0f, 0.0f);
+  float2 temp = float2(0.0f, 0.0f);
+  const float4 x_47 = gl_FragCoord;
+  param = float2(x_47.x, x_47.y);
+  while (true) {
+    const float x_54 = param.y;
+    if ((x_54 < 50.0f)) {
+      const float x_60 = asfloat(x_9[0].y);
+      x_44 = x_60;
+    } else {
+      x_44 = 0.0f;
+    }
+    const float x_61 = x_44;
+    x_43 = x_61;
+    const float x_63 = gl_FragCoord.y;
+    const float x_65 = ((x_63 < 50.0f) ? 1.0f : 0.0f);
+    x_45 = x_65;
+    if (((x_61 - x_65) < 1.0f)) {
+      x_46 = 0;
+      break;
+    }
+    x_46 = 1;
+    break;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_70 = x_46;
+  zero = x_70;
+  if ((x_70 == 1)) {
+    return;
+  }
+  x_GLF_color = float4(0.0f, 1.0f, 1.0f, 1.0f);
+  const float x_75 = gl_FragCoord.x;
+  const float x_77 = asfloat(x_9[0].x);
+  if ((x_75 >= x_77)) {
+    const float x_82 = gl_FragCoord.y;
+    if ((x_82 >= 0.0f)) {
+      const float x_87 = asfloat(x_9[0].y);
+      x_GLF_color.x = x_87;
+    }
+  }
+  const float x_90 = gl_FragCoord.y;
+  if ((x_90 >= 0.0f)) {
+    const float x_95 = asfloat(x_9[0].x);
+    x_GLF_color.y = x_95;
+  }
+  const float4 x_97 = gl_FragCoord;
+  const float2 x_98 = float2(x_97.x, x_97.y);
+  const float2 x_101 = float2(x_98.x, x_98.y);
+  temp = x_101;
+  if ((x_101.y >= 0.0f)) {
+    const float x_107 = asfloat(x_9[0].x);
+    x_GLF_color.z = x_107;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int alwaysZero_vf2_(inout float2 coord) {
+  float a = 0.0f;
+  float x_110 = 0.0f;
+  float b = 0.0f;
+  const float x_112 = coord.y;
+  if ((x_112 < 50.0f)) {
+    const float x_118 = asfloat(x_9[0].y);
+    x_110 = x_118;
+  } else {
+    x_110 = 0.0f;
+  }
+  const float x_119 = x_110;
+  a = x_119;
+  const float x_121 = gl_FragCoord.y;
+  const float x_123 = ((x_121 < 50.0f) ? 1.0f : 0.0f);
+  b = x_123;
+  if (((x_119 - x_123) < 1.0f)) {
+    return 0;
+  }
+  return 1;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..01561c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float x_43 = 0.0f;
+  float x_44 = 0.0f;
+  float x_45 = 0.0f;
+  int x_46 = 0;
+  int zero = 0;
+  float2 param = 0.0f;
+  float2 temp = 0.0f;
+  float4 const x_47 = *(tint_symbol_5);
+  param = float2(x_47.x, x_47.y);
+  while (true) {
+    float const x_54 = param.y;
+    if ((x_54 < 50.0f)) {
+      float const x_60 = x_9.injectionSwitch.y;
+      x_44 = x_60;
+    } else {
+      x_44 = 0.0f;
+    }
+    float const x_61 = x_44;
+    x_43 = x_61;
+    float const x_63 = (*(tint_symbol_5)).y;
+    float const x_65 = select(0.0f, 1.0f, (x_63 < 50.0f));
+    x_45 = x_65;
+    if (((x_61 - x_65) < 1.0f)) {
+      x_46 = 0;
+      break;
+    }
+    x_46 = 1;
+    break;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_70 = x_46;
+  zero = x_70;
+  if ((x_70 == 1)) {
+    return;
+  }
+  *(tint_symbol_6) = float4(0.0f, 1.0f, 1.0f, 1.0f);
+  float const x_75 = (*(tint_symbol_5)).x;
+  float const x_77 = x_9.injectionSwitch.x;
+  if ((x_75 >= x_77)) {
+    float const x_82 = (*(tint_symbol_5)).y;
+    if ((x_82 >= 0.0f)) {
+      float const x_87 = x_9.injectionSwitch.y;
+      (*(tint_symbol_6)).x = x_87;
+    }
+  }
+  float const x_90 = (*(tint_symbol_5)).y;
+  if ((x_90 >= 0.0f)) {
+    float const x_95 = x_9.injectionSwitch.x;
+    (*(tint_symbol_6)).y = x_95;
+  }
+  float4 const x_97 = *(tint_symbol_5);
+  float2 const x_98 = float2(x_97.x, x_97.y);
+  float2 const x_101 = float2(x_98.x, x_98.y);
+  temp = x_101;
+  if ((x_101.y >= 0.0f)) {
+    float const x_107 = x_9.injectionSwitch.x;
+    (*(tint_symbol_6)).z = x_107;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+int alwaysZero_vf2_(constant buf0& x_9, thread float2* const coord, thread float4* const tint_symbol_9) {
+  float a = 0.0f;
+  float x_110 = 0.0f;
+  float b = 0.0f;
+  float const x_112 = (*(coord)).y;
+  if ((x_112 < 50.0f)) {
+    float const x_118 = x_9.injectionSwitch.y;
+    x_110 = x_118;
+  } else {
+    x_110 = 0.0f;
+  }
+  float const x_119 = x_110;
+  a = x_119;
+  float const x_121 = (*(tint_symbol_9)).y;
+  float const x_123 = select(0.0f, 1.0f, (x_121 < 50.0f));
+  b = x_123;
+  if (((x_119 - x_123) < 1.0f)) {
+    return 0;
+  }
+  return 1;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..7cdda6c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,259 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 154
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_43 "x_43"
+               OpName %x_44 "x_44"
+               OpName %x_45 "x_45"
+               OpName %x_46 "x_46"
+               OpName %zero "zero"
+               OpName %param "param"
+               OpName %temp "temp"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %alwaysZero_vf2_ "alwaysZero_vf2_"
+               OpName %coord "coord"
+               OpName %a "a"
+               OpName %x_110 "x_110"
+               OpName %b "b"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %31 = OpConstantNull %v2float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+   %float_50 = OpConstant %float 50
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+         %77 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+        %116 = OpTypeFunction %void %main_out
+        %129 = OpTypeFunction %int %_ptr_Function_v2float
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_43 = OpVariable %_ptr_Function_float Function %21
+       %x_44 = OpVariable %_ptr_Function_float Function %21
+       %x_45 = OpVariable %_ptr_Function_float Function %21
+       %x_46 = OpVariable %_ptr_Function_int Function %27
+       %zero = OpVariable %_ptr_Function_int Function %27
+      %param = OpVariable %_ptr_Function_v2float Function %31
+       %temp = OpVariable %_ptr_Function_v2float Function %31
+         %33 = OpLoad %v4float %gl_FragCoord
+         %34 = OpCompositeExtract %float %33 0
+         %35 = OpCompositeExtract %float %33 1
+         %36 = OpCompositeConstruct %v2float %34 %35
+               OpStore %param %36
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %43 = OpAccessChain %_ptr_Function_float %param %uint_1
+         %44 = OpLoad %float %43
+         %46 = OpFOrdLessThan %bool %44 %float_50
+               OpSelectionMerge %48 None
+               OpBranchConditional %46 %49 %50
+         %49 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %54 = OpLoad %float %53
+               OpStore %x_44 %54
+               OpBranch %48
+         %50 = OpLabel
+               OpStore %x_44 %float_0
+               OpBranch %48
+         %48 = OpLabel
+         %56 = OpLoad %float %x_44
+               OpStore %x_43 %56
+         %58 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %59 = OpLoad %float %58
+         %61 = OpFOrdLessThan %bool %59 %float_50
+         %60 = OpSelect %float %61 %float_1 %float_0
+               OpStore %x_45 %60
+         %63 = OpFSub %float %56 %60
+         %64 = OpFOrdLessThan %bool %63 %float_1
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpStore %x_46 %int_0
+               OpBranch %38
+         %65 = OpLabel
+               OpStore %x_46 %int_1
+               OpBranch %38
+         %39 = OpLabel
+               OpSelectionMerge %70 None
+               OpBranchConditional %false %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %38
+         %70 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+         %73 = OpLoad %int %x_46
+               OpStore %zero %73
+         %74 = OpIEqual %bool %73 %int_1
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+               OpReturn
+         %75 = OpLabel
+               OpStore %x_GLF_color %77
+         %78 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %81 = OpLoad %float %80
+         %82 = OpFOrdGreaterThanEqual %bool %79 %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFOrdGreaterThanEqual %bool %86 %float_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+               OpStore %92 %91
+               OpBranch %88
+         %88 = OpLabel
+               OpBranch %83
+         %83 = OpLabel
+         %93 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %94 = OpLoad %float %93
+         %95 = OpFOrdGreaterThanEqual %bool %94 %float_0
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %100 %99
+               OpBranch %96
+         %96 = OpLabel
+        %101 = OpLoad %v4float %gl_FragCoord
+        %102 = OpCompositeExtract %float %101 0
+        %103 = OpCompositeExtract %float %101 1
+        %104 = OpCompositeConstruct %v2float %102 %103
+        %105 = OpCompositeExtract %float %104 0
+        %106 = OpCompositeExtract %float %104 1
+        %107 = OpCompositeConstruct %v2float %105 %106
+               OpStore %temp %107
+        %108 = OpCompositeExtract %float %107 1
+        %109 = OpFOrdGreaterThanEqual %bool %108 %float_0
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+        %113 = OpLoad %float %112
+        %115 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_2
+               OpStore %115 %113
+               OpBranch %110
+        %110 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %116
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %120 = OpLabel
+        %121 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %121
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %123 = OpLabel
+        %124 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %124
+        %125 = OpFunctionCall %void %main_1
+        %127 = OpLoad %v4float %x_GLF_color
+        %128 = OpCompositeConstruct %main_out %127
+        %126 = OpFunctionCall %void %tint_symbol_3 %128
+               OpReturn
+               OpFunctionEnd
+%alwaysZero_vf2_ = OpFunction %int None %129
+      %coord = OpFunctionParameter %_ptr_Function_v2float
+        %132 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %21
+      %x_110 = OpVariable %_ptr_Function_float Function %21
+          %b = OpVariable %_ptr_Function_float Function %21
+        %137 = OpAccessChain %_ptr_Function_float %coord %uint_1
+        %138 = OpLoad %float %137
+        %139 = OpFOrdLessThan %bool %138 %float_50
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %142
+        %141 = OpLabel
+        %143 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+        %144 = OpLoad %float %143
+               OpStore %x_110 %144
+               OpBranch %140
+        %142 = OpLabel
+               OpStore %x_110 %float_0
+               OpBranch %140
+        %140 = OpLabel
+        %145 = OpLoad %float %x_110
+               OpStore %a %145
+        %146 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %147 = OpLoad %float %146
+        %149 = OpFOrdLessThan %bool %147 %float_50
+        %148 = OpSelect %float %149 %float_1 %float_0
+               OpStore %b %148
+        %150 = OpFSub %float %145 %148
+        %151 = OpFOrdLessThan %bool %150 %float_1
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %152
+        %153 = OpLabel
+               OpReturnValue %int_0
+        %152 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f94238d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,112 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_43 : f32;
+  var x_44 : f32;
+  var x_45 : f32;
+  var x_46 : i32;
+  var zero : i32;
+  var param : vec2<f32>;
+  var temp : vec2<f32>;
+  let x_47 : vec4<f32> = gl_FragCoord;
+  param = vec2<f32>(x_47.x, x_47.y);
+  loop {
+    let x_54 : f32 = param.y;
+    if ((x_54 < 50.0)) {
+      let x_60 : f32 = x_9.injectionSwitch.y;
+      x_44 = x_60;
+    } else {
+      x_44 = 0.0;
+    }
+    let x_61 : f32 = x_44;
+    x_43 = x_61;
+    let x_63 : f32 = gl_FragCoord.y;
+    let x_65 : f32 = select(0.0, 1.0, (x_63 < 50.0));
+    x_45 = x_65;
+    if (((x_61 - x_65) < 1.0)) {
+      x_46 = 0;
+      break;
+    }
+    x_46 = 1;
+    break;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_70 : i32 = x_46;
+  zero = x_70;
+  if ((x_70 == 1)) {
+    return;
+  }
+  x_GLF_color = vec4<f32>(0.0, 1.0, 1.0, 1.0);
+  let x_75 : f32 = gl_FragCoord.x;
+  let x_77 : f32 = x_9.injectionSwitch.x;
+  if ((x_75 >= x_77)) {
+    let x_82 : f32 = gl_FragCoord.y;
+    if ((x_82 >= 0.0)) {
+      let x_87 : f32 = x_9.injectionSwitch.y;
+      x_GLF_color.x = x_87;
+    }
+  }
+  let x_90 : f32 = gl_FragCoord.y;
+  if ((x_90 >= 0.0)) {
+    let x_95 : f32 = x_9.injectionSwitch.x;
+    x_GLF_color.y = x_95;
+  }
+  let x_97 : vec4<f32> = gl_FragCoord;
+  let x_98 : vec2<f32> = vec2<f32>(x_97.x, x_97.y);
+  let x_101 : vec2<f32> = vec2<f32>(x_98.x, x_98.y);
+  temp = x_101;
+  if ((x_101.y >= 0.0)) {
+    let x_107 : f32 = x_9.injectionSwitch.x;
+    x_GLF_color.z = x_107;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn alwaysZero_vf2_(coord : ptr<function, vec2<f32>>) -> i32 {
+  var a : f32;
+  var x_110 : f32;
+  var b : f32;
+  let x_112 : f32 = (*(coord)).y;
+  if ((x_112 < 50.0)) {
+    let x_118 : f32 = x_9.injectionSwitch.y;
+    x_110 = x_118;
+  } else {
+    x_110 = 0.0;
+  }
+  let x_119 : f32 = x_110;
+  a = x_119;
+  let x_121 : f32 = gl_FragCoord.y;
+  let x_123 : f32 = select(0.0, 1.0, (x_121 < 50.0));
+  b = x_123;
+  if (((x_119 - x_123) < 1.0)) {
+    return 0;
+  }
+  return 1;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
new file mode 100644
index 0000000..f94238d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
@@ -0,0 +1,112 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_43 : f32;
+  var x_44 : f32;
+  var x_45 : f32;
+  var x_46 : i32;
+  var zero : i32;
+  var param : vec2<f32>;
+  var temp : vec2<f32>;
+  let x_47 : vec4<f32> = gl_FragCoord;
+  param = vec2<f32>(x_47.x, x_47.y);
+  loop {
+    let x_54 : f32 = param.y;
+    if ((x_54 < 50.0)) {
+      let x_60 : f32 = x_9.injectionSwitch.y;
+      x_44 = x_60;
+    } else {
+      x_44 = 0.0;
+    }
+    let x_61 : f32 = x_44;
+    x_43 = x_61;
+    let x_63 : f32 = gl_FragCoord.y;
+    let x_65 : f32 = select(0.0, 1.0, (x_63 < 50.0));
+    x_45 = x_65;
+    if (((x_61 - x_65) < 1.0)) {
+      x_46 = 0;
+      break;
+    }
+    x_46 = 1;
+    break;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_70 : i32 = x_46;
+  zero = x_70;
+  if ((x_70 == 1)) {
+    return;
+  }
+  x_GLF_color = vec4<f32>(0.0, 1.0, 1.0, 1.0);
+  let x_75 : f32 = gl_FragCoord.x;
+  let x_77 : f32 = x_9.injectionSwitch.x;
+  if ((x_75 >= x_77)) {
+    let x_82 : f32 = gl_FragCoord.y;
+    if ((x_82 >= 0.0)) {
+      let x_87 : f32 = x_9.injectionSwitch.y;
+      x_GLF_color.x = x_87;
+    }
+  }
+  let x_90 : f32 = gl_FragCoord.y;
+  if ((x_90 >= 0.0)) {
+    let x_95 : f32 = x_9.injectionSwitch.x;
+    x_GLF_color.y = x_95;
+  }
+  let x_97 : vec4<f32> = gl_FragCoord;
+  let x_98 : vec2<f32> = vec2<f32>(x_97.x, x_97.y);
+  let x_101 : vec2<f32> = vec2<f32>(x_98.x, x_98.y);
+  temp = x_101;
+  if ((x_101.y >= 0.0)) {
+    let x_107 : f32 = x_9.injectionSwitch.x;
+    x_GLF_color.z = x_107;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn alwaysZero_vf2_(coord : ptr<function, vec2<f32>>) -> i32 {
+  var a : f32;
+  var x_110 : f32;
+  var b : f32;
+  let x_112 : f32 = (*(coord)).y;
+  if ((x_112 < 50.0)) {
+    let x_118 : f32 = x_9.injectionSwitch.y;
+    x_110 = x_118;
+  } else {
+    x_110 = 0.0;
+  }
+  let x_119 : f32 = x_110;
+  a = x_119;
+  let x_121 : f32 = gl_FragCoord.y;
+  let x_123 : f32 = select(0.0, 1.0, (x_121 < 50.0));
+  b = x_123;
+  if (((x_119 - x_123) < 1.0)) {
+    return 0;
+  }
+  return 1;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3bb430f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,113 @@
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+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() {
+  float x_43 = 0.0f;
+  float x_44 = 0.0f;
+  float x_45 = 0.0f;
+  int x_46 = 0;
+  int zero = 0;
+  float2 param = float2(0.0f, 0.0f);
+  float2 temp = float2(0.0f, 0.0f);
+  const float4 x_47 = gl_FragCoord;
+  param = float2(x_47.x, x_47.y);
+  while (true) {
+    const float x_54 = param.y;
+    if ((x_54 < 50.0f)) {
+      const float x_60 = asfloat(x_9[0].y);
+      x_44 = x_60;
+    } else {
+      x_44 = 0.0f;
+    }
+    const float x_61 = x_44;
+    x_43 = x_61;
+    const float x_63 = gl_FragCoord.y;
+    const float x_65 = ((x_63 < 50.0f) ? 1.0f : 0.0f);
+    x_45 = x_65;
+    if (((x_61 - x_65) < 1.0f)) {
+      x_46 = 0;
+      break;
+    }
+    x_46 = 1;
+    break;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_70 = x_46;
+  zero = x_70;
+  if ((x_70 == 1)) {
+    return;
+  }
+  x_GLF_color = float4(0.0f, 1.0f, 1.0f, 1.0f);
+  const float x_75 = gl_FragCoord.x;
+  const float x_77 = asfloat(x_9[0].x);
+  if ((x_75 >= x_77)) {
+    const float x_82 = gl_FragCoord.y;
+    if ((x_82 >= 0.0f)) {
+      const float x_87 = asfloat(x_9[0].y);
+      x_GLF_color.x = x_87;
+    }
+  }
+  const float x_90 = gl_FragCoord.y;
+  if ((x_90 >= 0.0f)) {
+    const float x_95 = asfloat(x_9[0].x);
+    x_GLF_color.y = x_95;
+  }
+  const float4 x_97 = gl_FragCoord;
+  const float2 x_98 = float2(x_97.x, x_97.y);
+  const float2 x_101 = float2(x_98.x, x_98.y);
+  temp = x_101;
+  if ((x_101.y >= 0.0f)) {
+    const float x_107 = asfloat(x_9[0].x);
+    x_GLF_color.z = x_107;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+int alwaysZero_vf2_(inout float2 coord) {
+  float a = 0.0f;
+  float x_110 = 0.0f;
+  float b = 0.0f;
+  const float x_112 = coord.y;
+  if ((x_112 < 50.0f)) {
+    const float x_118 = asfloat(x_9[0].y);
+    x_110 = x_118;
+  } else {
+    x_110 = 0.0f;
+  }
+  const float x_119 = x_110;
+  a = x_119;
+  const float x_121 = gl_FragCoord.y;
+  const float x_123 = ((x_121 < 50.0f) ? 1.0f : 0.0f);
+  b = x_123;
+  if (((x_119 - x_123) < 1.0f)) {
+    return 0;
+  }
+  return 1;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..01561c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float x_43 = 0.0f;
+  float x_44 = 0.0f;
+  float x_45 = 0.0f;
+  int x_46 = 0;
+  int zero = 0;
+  float2 param = 0.0f;
+  float2 temp = 0.0f;
+  float4 const x_47 = *(tint_symbol_5);
+  param = float2(x_47.x, x_47.y);
+  while (true) {
+    float const x_54 = param.y;
+    if ((x_54 < 50.0f)) {
+      float const x_60 = x_9.injectionSwitch.y;
+      x_44 = x_60;
+    } else {
+      x_44 = 0.0f;
+    }
+    float const x_61 = x_44;
+    x_43 = x_61;
+    float const x_63 = (*(tint_symbol_5)).y;
+    float const x_65 = select(0.0f, 1.0f, (x_63 < 50.0f));
+    x_45 = x_65;
+    if (((x_61 - x_65) < 1.0f)) {
+      x_46 = 0;
+      break;
+    }
+    x_46 = 1;
+    break;
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_70 = x_46;
+  zero = x_70;
+  if ((x_70 == 1)) {
+    return;
+  }
+  *(tint_symbol_6) = float4(0.0f, 1.0f, 1.0f, 1.0f);
+  float const x_75 = (*(tint_symbol_5)).x;
+  float const x_77 = x_9.injectionSwitch.x;
+  if ((x_75 >= x_77)) {
+    float const x_82 = (*(tint_symbol_5)).y;
+    if ((x_82 >= 0.0f)) {
+      float const x_87 = x_9.injectionSwitch.y;
+      (*(tint_symbol_6)).x = x_87;
+    }
+  }
+  float const x_90 = (*(tint_symbol_5)).y;
+  if ((x_90 >= 0.0f)) {
+    float const x_95 = x_9.injectionSwitch.x;
+    (*(tint_symbol_6)).y = x_95;
+  }
+  float4 const x_97 = *(tint_symbol_5);
+  float2 const x_98 = float2(x_97.x, x_97.y);
+  float2 const x_101 = float2(x_98.x, x_98.y);
+  temp = x_101;
+  if ((x_101.y >= 0.0f)) {
+    float const x_107 = x_9.injectionSwitch.x;
+    (*(tint_symbol_6)).z = x_107;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+int alwaysZero_vf2_(constant buf0& x_9, thread float2* const coord, thread float4* const tint_symbol_9) {
+  float a = 0.0f;
+  float x_110 = 0.0f;
+  float b = 0.0f;
+  float const x_112 = (*(coord)).y;
+  if ((x_112 < 50.0f)) {
+    float const x_118 = x_9.injectionSwitch.y;
+    x_110 = x_118;
+  } else {
+    x_110 = 0.0f;
+  }
+  float const x_119 = x_110;
+  a = x_119;
+  float const x_121 = (*(tint_symbol_9)).y;
+  float const x_123 = select(0.0f, 1.0f, (x_121 < 50.0f));
+  b = x_123;
+  if (((x_119 - x_123) < 1.0f)) {
+    return 0;
+  }
+  return 1;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..7cdda6c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,259 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 154
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_43 "x_43"
+               OpName %x_44 "x_44"
+               OpName %x_45 "x_45"
+               OpName %x_46 "x_46"
+               OpName %zero "zero"
+               OpName %param "param"
+               OpName %temp "temp"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %alwaysZero_vf2_ "alwaysZero_vf2_"
+               OpName %coord "coord"
+               OpName %a "a"
+               OpName %x_110 "x_110"
+               OpName %b "b"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %31 = OpConstantNull %v2float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+   %float_50 = OpConstant %float 50
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+         %77 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+        %116 = OpTypeFunction %void %main_out
+        %129 = OpTypeFunction %int %_ptr_Function_v2float
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_43 = OpVariable %_ptr_Function_float Function %21
+       %x_44 = OpVariable %_ptr_Function_float Function %21
+       %x_45 = OpVariable %_ptr_Function_float Function %21
+       %x_46 = OpVariable %_ptr_Function_int Function %27
+       %zero = OpVariable %_ptr_Function_int Function %27
+      %param = OpVariable %_ptr_Function_v2float Function %31
+       %temp = OpVariable %_ptr_Function_v2float Function %31
+         %33 = OpLoad %v4float %gl_FragCoord
+         %34 = OpCompositeExtract %float %33 0
+         %35 = OpCompositeExtract %float %33 1
+         %36 = OpCompositeConstruct %v2float %34 %35
+               OpStore %param %36
+               OpBranch %37
+         %37 = OpLabel
+               OpLoopMerge %38 %39 None
+               OpBranch %40
+         %40 = OpLabel
+         %43 = OpAccessChain %_ptr_Function_float %param %uint_1
+         %44 = OpLoad %float %43
+         %46 = OpFOrdLessThan %bool %44 %float_50
+               OpSelectionMerge %48 None
+               OpBranchConditional %46 %49 %50
+         %49 = OpLabel
+         %53 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %54 = OpLoad %float %53
+               OpStore %x_44 %54
+               OpBranch %48
+         %50 = OpLabel
+               OpStore %x_44 %float_0
+               OpBranch %48
+         %48 = OpLabel
+         %56 = OpLoad %float %x_44
+               OpStore %x_43 %56
+         %58 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %59 = OpLoad %float %58
+         %61 = OpFOrdLessThan %bool %59 %float_50
+         %60 = OpSelect %float %61 %float_1 %float_0
+               OpStore %x_45 %60
+         %63 = OpFSub %float %56 %60
+         %64 = OpFOrdLessThan %bool %63 %float_1
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpStore %x_46 %int_0
+               OpBranch %38
+         %65 = OpLabel
+               OpStore %x_46 %int_1
+               OpBranch %38
+         %39 = OpLabel
+               OpSelectionMerge %70 None
+               OpBranchConditional %false %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %38
+         %70 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+         %73 = OpLoad %int %x_46
+               OpStore %zero %73
+         %74 = OpIEqual %bool %73 %int_1
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+               OpReturn
+         %75 = OpLabel
+               OpStore %x_GLF_color %77
+         %78 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %81 = OpLoad %float %80
+         %82 = OpFOrdGreaterThanEqual %bool %79 %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFOrdGreaterThanEqual %bool %86 %float_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+               OpStore %92 %91
+               OpBranch %88
+         %88 = OpLabel
+               OpBranch %83
+         %83 = OpLabel
+         %93 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %94 = OpLoad %float %93
+         %95 = OpFOrdGreaterThanEqual %bool %94 %float_0
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+         %98 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_1
+               OpStore %100 %99
+               OpBranch %96
+         %96 = OpLabel
+        %101 = OpLoad %v4float %gl_FragCoord
+        %102 = OpCompositeExtract %float %101 0
+        %103 = OpCompositeExtract %float %101 1
+        %104 = OpCompositeConstruct %v2float %102 %103
+        %105 = OpCompositeExtract %float %104 0
+        %106 = OpCompositeExtract %float %104 1
+        %107 = OpCompositeConstruct %v2float %105 %106
+               OpStore %temp %107
+        %108 = OpCompositeExtract %float %107 1
+        %109 = OpFOrdGreaterThanEqual %bool %108 %float_0
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+        %113 = OpLoad %float %112
+        %115 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_2
+               OpStore %115 %113
+               OpBranch %110
+        %110 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %116
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %120 = OpLabel
+        %121 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %121
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %123 = OpLabel
+        %124 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %124
+        %125 = OpFunctionCall %void %main_1
+        %127 = OpLoad %v4float %x_GLF_color
+        %128 = OpCompositeConstruct %main_out %127
+        %126 = OpFunctionCall %void %tint_symbol_3 %128
+               OpReturn
+               OpFunctionEnd
+%alwaysZero_vf2_ = OpFunction %int None %129
+      %coord = OpFunctionParameter %_ptr_Function_v2float
+        %132 = OpLabel
+          %a = OpVariable %_ptr_Function_float Function %21
+      %x_110 = OpVariable %_ptr_Function_float Function %21
+          %b = OpVariable %_ptr_Function_float Function %21
+        %137 = OpAccessChain %_ptr_Function_float %coord %uint_1
+        %138 = OpLoad %float %137
+        %139 = OpFOrdLessThan %bool %138 %float_50
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %142
+        %141 = OpLabel
+        %143 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+        %144 = OpLoad %float %143
+               OpStore %x_110 %144
+               OpBranch %140
+        %142 = OpLabel
+               OpStore %x_110 %float_0
+               OpBranch %140
+        %140 = OpLabel
+        %145 = OpLoad %float %x_110
+               OpStore %a %145
+        %146 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %147 = OpLoad %float %146
+        %149 = OpFOrdLessThan %bool %147 %float_50
+        %148 = OpSelect %float %149 %float_1 %float_0
+               OpStore %b %148
+        %150 = OpFSub %float %145 %148
+        %151 = OpFOrdLessThan %bool %150 %float_1
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %152
+        %153 = OpLabel
+               OpReturnValue %int_0
+        %152 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f94238d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,112 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_43 : f32;
+  var x_44 : f32;
+  var x_45 : f32;
+  var x_46 : i32;
+  var zero : i32;
+  var param : vec2<f32>;
+  var temp : vec2<f32>;
+  let x_47 : vec4<f32> = gl_FragCoord;
+  param = vec2<f32>(x_47.x, x_47.y);
+  loop {
+    let x_54 : f32 = param.y;
+    if ((x_54 < 50.0)) {
+      let x_60 : f32 = x_9.injectionSwitch.y;
+      x_44 = x_60;
+    } else {
+      x_44 = 0.0;
+    }
+    let x_61 : f32 = x_44;
+    x_43 = x_61;
+    let x_63 : f32 = gl_FragCoord.y;
+    let x_65 : f32 = select(0.0, 1.0, (x_63 < 50.0));
+    x_45 = x_65;
+    if (((x_61 - x_65) < 1.0)) {
+      x_46 = 0;
+      break;
+    }
+    x_46 = 1;
+    break;
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_70 : i32 = x_46;
+  zero = x_70;
+  if ((x_70 == 1)) {
+    return;
+  }
+  x_GLF_color = vec4<f32>(0.0, 1.0, 1.0, 1.0);
+  let x_75 : f32 = gl_FragCoord.x;
+  let x_77 : f32 = x_9.injectionSwitch.x;
+  if ((x_75 >= x_77)) {
+    let x_82 : f32 = gl_FragCoord.y;
+    if ((x_82 >= 0.0)) {
+      let x_87 : f32 = x_9.injectionSwitch.y;
+      x_GLF_color.x = x_87;
+    }
+  }
+  let x_90 : f32 = gl_FragCoord.y;
+  if ((x_90 >= 0.0)) {
+    let x_95 : f32 = x_9.injectionSwitch.x;
+    x_GLF_color.y = x_95;
+  }
+  let x_97 : vec4<f32> = gl_FragCoord;
+  let x_98 : vec2<f32> = vec2<f32>(x_97.x, x_97.y);
+  let x_101 : vec2<f32> = vec2<f32>(x_98.x, x_98.y);
+  temp = x_101;
+  if ((x_101.y >= 0.0)) {
+    let x_107 : f32 = x_9.injectionSwitch.x;
+    x_GLF_color.z = x_107;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn alwaysZero_vf2_(coord : ptr<function, vec2<f32>>) -> i32 {
+  var a : f32;
+  var x_110 : f32;
+  var b : f32;
+  let x_112 : f32 = (*(coord)).y;
+  if ((x_112 < 50.0)) {
+    let x_118 : f32 = x_9.injectionSwitch.y;
+    x_110 = x_118;
+  } else {
+    x_110 = 0.0;
+  }
+  let x_119 : f32 = x_110;
+  a = x_119;
+  let x_121 : f32 = gl_FragCoord.y;
+  let x_123 : f32 = select(0.0, 1.0, (x_121 < 50.0));
+  b = x_123;
+  if (((x_119 - x_123) < 1.0)) {
+    return 0;
+  }
+  return 1;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm
new file mode 100644
index 0000000..496c8d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm
@@ -0,0 +1,108 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %fx_ "fx("
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %x2 "x2"
+               OpName %B "B"
+               OpName %k0 "k0"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %14 = OpTypeFunction %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %30 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_2 = OpConstant %float 2
+       %main = OpFunction %void None %12
+         %33 = OpLabel
+         %x2 = OpVariable %_ptr_Function_float Function
+          %B = OpVariable %_ptr_Function_float Function
+         %k0 = OpVariable %_ptr_Function_float Function
+               OpStore %x2 %float_1
+               OpStore %B %float_1
+         %34 = OpFunctionCall %float %fx_
+         %35 = OpCompositeConstruct %v4float %34 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %35
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %float %x2
+         %41 = OpFOrdGreaterThan %bool %40 %float_2
+               OpBranchConditional %41 %42 %37
+         %42 = OpLabel
+         %43 = OpFunctionCall %float %fx_
+         %44 = OpFunctionCall %float %fx_
+         %45 = OpFSub %float %43 %44
+               OpStore %k0 %45
+         %46 = OpLoad %float %k0
+               OpStore %B %46
+         %47 = OpLoad %float %B
+               OpStore %x2 %47
+               OpBranch %38
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+        %fx_ = OpFunction %float None %14
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %50 = OpLoad %float %49
+         %51 = OpFOrdGreaterThanEqual %bool %50 %float_0
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %55 = OpLoad %float %54
+               OpReturnValue %55
+         %52 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+               OpBranchConditional %true %60 %57
+         %60 = OpLabel
+               OpStore %_GLF_color %30
+               OpBranch %58
+         %58 = OpLabel
+               OpBranch %56
+         %57 = OpLabel
+         %61 = OpUndef %float
+               OpReturnValue %61
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.hlsl
new file mode 100755
index 0000000..4b3e3a8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,70 @@
+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 float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float fx_() {
+  const float x_50 = gl_FragCoord.y;
+  if ((x_50 >= 0.0f)) {
+    const float x_55 = asfloat(x_7[0].y);
+    return x_55;
+  }
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  float x2 = 0.0f;
+  float B = 0.0f;
+  float k0 = 0.0f;
+  x2 = 1.0f;
+  B = 1.0f;
+  const float x_34 = fx_();
+  x_GLF_color = float4(x_34, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    if ((x2 > 2.0f)) {
+    } else {
+      break;
+    }
+    const float x_43 = fx_();
+    const float x_44 = fx_();
+    k0 = (x_43 - x_44);
+    B = k0;
+    x2 = B;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+error: validation errors
+T:\tmp\u9kk.0:55: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..53d236b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.msl
@@ -0,0 +1,64 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float fx_(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_50 = (*(tint_symbol_5)).y;
+  if ((x_50 >= 0.0f)) {
+    float const x_55 = x_7.injectionSwitch.y;
+    return x_55;
+  }
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return 0.0f;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float x2 = 0.0f;
+  float B = 0.0f;
+  float k0 = 0.0f;
+  x2 = 1.0f;
+  B = 1.0f;
+  float const x_34 = fx_(x_7, tint_symbol_7, tint_symbol_8);
+  *(tint_symbol_8) = float4(x_34, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    float const x_40 = x2;
+    if ((x_40 > 2.0f)) {
+    } else {
+      break;
+    }
+    float const x_43 = fx_(x_7, tint_symbol_7, tint_symbol_8);
+    float const x_44 = fx_(x_7, tint_symbol_7, tint_symbol_8);
+    k0 = (x_43 - x_44);
+    float const x_46 = k0;
+    B = x_46;
+    float const x_47 = B;
+    x2 = x_47;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3606a34
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,152 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 81
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %fx_ "fx_"
+               OpName %main_1 "main_1"
+               OpName %x2 "x2"
+               OpName %B "B"
+               OpName %k0 "k0"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %15 = OpTypeFunction %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %41 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %void = OpTypeVoid
+         %42 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %48 = OpConstantNull %float
+    %float_2 = OpConstant %float 2
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+        %fx_ = OpFunction %float None %15
+         %17 = OpLabel
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %22 = OpLoad %float %21
+         %24 = OpFOrdGreaterThanEqual %bool %22 %float_0
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %31 = OpLoad %float %30
+               OpReturnValue %31
+         %26 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+               OpSelectionMerge %37 None
+               OpBranchConditional %true %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %33
+         %37 = OpLabel
+               OpStore %x_GLF_color %41
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %42
+         %45 = OpLabel
+         %x2 = OpVariable %_ptr_Function_float Function %48
+          %B = OpVariable %_ptr_Function_float Function %48
+         %k0 = OpVariable %_ptr_Function_float Function %48
+               OpStore %x2 %float_1
+               OpStore %B %float_1
+         %51 = OpFunctionCall %float %fx_
+         %52 = OpCompositeConstruct %v4float %51 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %52
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %float %x2
+         %59 = OpFOrdGreaterThan %bool %57 %float_2
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %54
+         %60 = OpLabel
+         %63 = OpFunctionCall %float %fx_
+         %64 = OpFunctionCall %float %fx_
+         %65 = OpFSub %float %63 %64
+               OpStore %k0 %65
+         %66 = OpLoad %float %k0
+               OpStore %B %66
+         %67 = OpLoad %float %B
+               OpStore %x2 %67
+               OpBranch %55
+         %55 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %68
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %42
+         %75 = OpLabel
+         %76 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %76
+         %77 = OpFunctionCall %void %main_1
+         %79 = OpLoad %v4float %x_GLF_color
+         %80 = OpCompositeConstruct %main_out %79
+         %78 = OpFunctionCall %void %tint_symbol_3 %80
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ad60ab7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,63 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn fx_() -> f32 {
+  let x_50 : f32 = gl_FragCoord.y;
+  if ((x_50 >= 0.0)) {
+    let x_55 : f32 = x_7.injectionSwitch.y;
+    return x_55;
+  }
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var x2 : f32;
+  var B : f32;
+  var k0 : f32;
+  x2 = 1.0;
+  B = 1.0;
+  let x_34 : f32 = fx_();
+  x_GLF_color = vec4<f32>(x_34, 0.0, 0.0, 1.0);
+  loop {
+    let x_40 : f32 = x2;
+    if ((x_40 > 2.0)) {
+    } else {
+      break;
+    }
+    let x_43 : f32 = fx_();
+    let x_44 : f32 = fx_();
+    k0 = (x_43 - x_44);
+    let x_46 : f32 = k0;
+    B = x_46;
+    let x_47 : f32 = B;
+    x2 = x_47;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
new file mode 100644
index 0000000..ad60ab7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
@@ -0,0 +1,63 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn fx_() -> f32 {
+  let x_50 : f32 = gl_FragCoord.y;
+  if ((x_50 >= 0.0)) {
+    let x_55 : f32 = x_7.injectionSwitch.y;
+    return x_55;
+  }
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var x2 : f32;
+  var B : f32;
+  var k0 : f32;
+  x2 = 1.0;
+  B = 1.0;
+  let x_34 : f32 = fx_();
+  x_GLF_color = vec4<f32>(x_34, 0.0, 0.0, 1.0);
+  loop {
+    let x_40 : f32 = x2;
+    if ((x_40 > 2.0)) {
+    } else {
+      break;
+    }
+    let x_43 : f32 = fx_();
+    let x_44 : f32 = fx_();
+    k0 = (x_43 - x_44);
+    let x_46 : f32 = k0;
+    B = x_46;
+    let x_47 : f32 = B;
+    x2 = x_47;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.hlsl
new file mode 100755
index 0000000..e4b7943
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,70 @@
+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 float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float fx_() {
+  const float x_50 = gl_FragCoord.y;
+  if ((x_50 >= 0.0f)) {
+    const float x_55 = asfloat(x_7[0].y);
+    return x_55;
+  }
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  float x2 = 0.0f;
+  float B = 0.0f;
+  float k0 = 0.0f;
+  x2 = 1.0f;
+  B = 1.0f;
+  const float x_34 = fx_();
+  x_GLF_color = float4(x_34, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    if ((x2 > 2.0f)) {
+    } else {
+      break;
+    }
+    const float x_43 = fx_();
+    const float x_44 = fx_();
+    k0 = (x_43 - x_44);
+    B = k0;
+    x2 = B;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+error: validation errors
+T:\tmp\udf0.0:55: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..53d236b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.msl
@@ -0,0 +1,64 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float fx_(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_50 = (*(tint_symbol_5)).y;
+  if ((x_50 >= 0.0f)) {
+    float const x_55 = x_7.injectionSwitch.y;
+    return x_55;
+  }
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return 0.0f;
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float x2 = 0.0f;
+  float B = 0.0f;
+  float k0 = 0.0f;
+  x2 = 1.0f;
+  B = 1.0f;
+  float const x_34 = fx_(x_7, tint_symbol_7, tint_symbol_8);
+  *(tint_symbol_8) = float4(x_34, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    float const x_40 = x2;
+    if ((x_40 > 2.0f)) {
+    } else {
+      break;
+    }
+    float const x_43 = fx_(x_7, tint_symbol_7, tint_symbol_8);
+    float const x_44 = fx_(x_7, tint_symbol_7, tint_symbol_8);
+    k0 = (x_43 - x_44);
+    float const x_46 = k0;
+    B = x_46;
+    float const x_47 = B;
+    x2 = x_47;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3606a34
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,152 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 81
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %fx_ "fx_"
+               OpName %main_1 "main_1"
+               OpName %x2 "x2"
+               OpName %B "B"
+               OpName %k0 "k0"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %15 = OpTypeFunction %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %41 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %void = OpTypeVoid
+         %42 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %48 = OpConstantNull %float
+    %float_2 = OpConstant %float 2
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+        %fx_ = OpFunction %float None %15
+         %17 = OpLabel
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %22 = OpLoad %float %21
+         %24 = OpFOrdGreaterThanEqual %bool %22 %float_0
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+         %30 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %31 = OpLoad %float %30
+               OpReturnValue %31
+         %26 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+               OpSelectionMerge %37 None
+               OpBranchConditional %true %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %33
+         %37 = OpLabel
+               OpStore %x_GLF_color %41
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %42
+         %45 = OpLabel
+         %x2 = OpVariable %_ptr_Function_float Function %48
+          %B = OpVariable %_ptr_Function_float Function %48
+         %k0 = OpVariable %_ptr_Function_float Function %48
+               OpStore %x2 %float_1
+               OpStore %B %float_1
+         %51 = OpFunctionCall %float %fx_
+         %52 = OpCompositeConstruct %v4float %51 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %52
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %float %x2
+         %59 = OpFOrdGreaterThan %bool %57 %float_2
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %54
+         %60 = OpLabel
+         %63 = OpFunctionCall %float %fx_
+         %64 = OpFunctionCall %float %fx_
+         %65 = OpFSub %float %63 %64
+               OpStore %k0 %65
+         %66 = OpLoad %float %k0
+               OpStore %B %66
+         %67 = OpLoad %float %B
+               OpStore %x2 %67
+               OpBranch %55
+         %55 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %68
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %42
+         %75 = OpLabel
+         %76 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %76
+         %77 = OpFunctionCall %void %main_1
+         %79 = OpLoad %v4float %x_GLF_color
+         %80 = OpCompositeConstruct %main_out %79
+         %78 = OpFunctionCall %void %tint_symbol_3 %80
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ad60ab7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,63 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn fx_() -> f32 {
+  let x_50 : f32 = gl_FragCoord.y;
+  if ((x_50 >= 0.0)) {
+    let x_55 : f32 = x_7.injectionSwitch.y;
+    return x_55;
+  }
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var x2 : f32;
+  var B : f32;
+  var k0 : f32;
+  x2 = 1.0;
+  B = 1.0;
+  let x_34 : f32 = fx_();
+  x_GLF_color = vec4<f32>(x_34, 0.0, 0.0, 1.0);
+  loop {
+    let x_40 : f32 = x2;
+    if ((x_40 > 2.0)) {
+    } else {
+      break;
+    }
+    let x_43 : f32 = fx_();
+    let x_44 : f32 = fx_();
+    k0 = (x_43 - x_44);
+    let x_46 : f32 = k0;
+    B = x_46;
+    let x_47 : f32 = B;
+    x2 = x_47;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm
new file mode 100644
index 0000000..263c389
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm
@@ -0,0 +1,257 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %yieldsZero_ "yieldsZero("
+               OpName %globalNumbers "globalNumbers"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %acc "acc"
+               OpName %i_0 "i"
+               OpName %localNumbers "localNumbers"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %yieldsZero_ RelaxedPrecision
+               OpDecorate %globalNumbers RelaxedPrecision
+               OpDecorate %i RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %acc RelaxedPrecision
+               OpDecorate %i_0 RelaxedPrecision
+               OpDecorate %localNumbers RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %34 RelaxedPrecision
+       %void = OpTypeVoid
+         %36 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %39 = OpTypeFunction %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %59 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %60 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %65 = OpUndef %int
+         %66 = OpUndef %bool
+       %main = OpFunction %void None %36
+         %67 = OpLabel
+         %68 = OpVariable %_ptr_Function_bool Function %false
+         %29 = OpVariable %_ptr_Function_int Function
+         %30 = OpVariable %_ptr_Function_int Function
+         %31 = OpVariable %_ptr_Function_int Function
+%globalNumbers = OpVariable %_ptr_Function__arr_int_uint_10 Function
+         %17 = OpVariable %_ptr_Function_int Function
+        %acc = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+%localNumbers = OpVariable %_ptr_Function__arr_int_uint_2 Function
+      %param = OpVariable %_ptr_Function_int Function
+               OpStore %acc %int_0
+               OpStore %i_0 %int_0
+               OpBranch %69
+         %69 = OpLabel
+         %24 = OpPhi %int %int_0 %67 %15 %70
+         %23 = OpPhi %int %int_0 %67 %16 %70
+               OpLoopMerge %71 %70 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpSLessThan %bool %23 %int_4
+               OpBranchConditional %73 %74 %71
+         %74 = OpLabel
+               OpStore %68 %false
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpPhi %bool %false %74 %66 %77
+               OpLoopMerge %78 %77 None
+               OpBranch %79
+         %79 = OpLabel
+               OpStore %30 %int_0
+               OpBranch %80
+         %80 = OpLabel
+         %81 = OpPhi %bool %76 %79 %66 %82
+         %32 = OpPhi %int %int_0 %79 %65 %82
+               OpLoopMerge %83 %82 None
+               OpBranch %84
+         %84 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %86 = OpLoad %float %85
+         %87 = OpConvertFToS %int %86
+         %88 = OpSLessThan %bool %32 %87
+               OpBranchConditional %88 %89 %83
+         %89 = OpLabel
+               OpStore %68 %true
+               OpStore %29 %32
+               OpBranch %83
+         %82 = OpLabel
+               OpBranch %80
+         %83 = OpLabel
+         %33 = OpPhi %int %65 %84 %32 %89
+         %90 = OpPhi %bool %81 %84 %true %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %78 %91
+         %91 = OpLabel
+         %92 = OpUndef %int
+               OpStore %68 %true
+               OpStore %29 %92
+               OpBranch %78
+         %77 = OpLabel
+               OpBranch %75
+         %78 = OpLabel
+         %34 = OpPhi %int %33 %83 %92 %91
+               OpStore %31 %34
+         %93 = OpLoad %int %31
+         %21 = OpLoad %_arr_int_uint_2 %localNumbers
+         %22 = OpCompositeInsert %_arr_int_uint_2 %93 %21 1
+               OpStore %localNumbers %22
+         %94 = OpAccessChain %_ptr_Function_int %globalNumbers %int_0
+               OpStore %94 %int_0
+         %95 = OpAccessChain %_ptr_Function_int %localNumbers %int_1
+         %13 = OpCompositeExtract %int %22 1
+               OpStore %param %13
+               OpStore %17 %int_0
+               OpBranch %96
+         %96 = OpLabel
+         %25 = OpPhi %int %int_0 %78 %19 %97
+               OpLoopMerge %98 %97 None
+               OpBranch %99
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %25 %13
+               OpBranchConditional %100 %101 %98
+        %101 = OpLabel
+        %102 = OpAccessChain %_ptr_Function_int %globalNumbers %13
+         %18 = OpLoad %int %102
+        %103 = OpSLessThanEqual %bool %18 %int_1
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+               OpStore %102 %int_1
+               OpBranch %104
+        %104 = OpLabel
+               OpBranch %97
+         %97 = OpLabel
+         %19 = OpIAdd %int %25 %int_1
+               OpStore %17 %19
+               OpBranch %96
+         %98 = OpLabel
+        %106 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+        %107 = OpLoad %float %106
+        %108 = OpConvertFToS %int %107
+        %109 = OpISub %int %108 %int_1
+        %110 = OpAccessChain %_ptr_Function_int %globalNumbers %109
+         %14 = OpLoad %int %110
+         %15 = OpIAdd %int %24 %14
+               OpStore %acc %15
+               OpBranch %70
+         %70 = OpLabel
+         %16 = OpIAdd %int %23 %int_1
+               OpStore %i_0 %16
+               OpBranch %69
+         %71 = OpLabel
+        %111 = OpIEqual %bool %24 %int_4
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %114
+        %113 = OpLabel
+               OpStore %_GLF_color %59
+               OpBranch %112
+        %114 = OpLabel
+               OpStore %_GLF_color %60
+               OpBranch %112
+        %112 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%yieldsZero_ = OpFunction %int None %39
+        %115 = OpLabel
+        %116 = OpVariable %_ptr_Function_bool Function %false
+         %20 = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpPhi %bool %false %115 %66 %119
+               OpLoopMerge %120 %119 None
+               OpBranch %121
+        %121 = OpLabel
+               OpStore %i %int_0
+               OpBranch %122
+        %122 = OpLabel
+        %123 = OpPhi %bool %118 %121 %66 %124
+         %28 = OpPhi %int %int_0 %121 %65 %124
+               OpLoopMerge %125 %124 None
+               OpBranch %126
+        %126 = OpLabel
+        %127 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+        %128 = OpLoad %float %127
+        %129 = OpConvertFToS %int %128
+        %130 = OpSLessThan %bool %28 %129
+               OpBranchConditional %130 %131 %125
+        %131 = OpLabel
+               OpStore %116 %true
+               OpStore %20 %28
+               OpBranch %125
+        %124 = OpLabel
+               OpBranch %122
+        %125 = OpLabel
+         %26 = OpPhi %int %65 %126 %28 %131
+        %132 = OpPhi %bool %123 %126 %true %131
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %120 %133
+        %133 = OpLabel
+        %134 = OpUndef %int
+               OpStore %116 %true
+               OpStore %20 %134
+               OpBranch %120
+        %119 = OpLabel
+               OpBranch %117
+        %120 = OpLabel
+         %27 = OpPhi %int %26 %125 %134 %133
+               OpReturnValue %27
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..adb4b13
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,201 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_68 = false;
+  int x_29 = 0;
+  int x_30 = 0;
+  int x_31 = 0;
+  int globalNumbers[10] = (int[10])0;
+  int x_17 = 0;
+  int acc = 0;
+  int i_1 = 0;
+  int localNumbers[2] = (int[2])0;
+  int param = 0;
+  int x_24 = 0;
+  int x_24_phi = 0;
+  int x_23_phi = 0;
+  acc = 0;
+  i_1 = 0;
+  x_24_phi = 0;
+  x_23_phi = 0;
+  while (true) {
+    int x_33 = 0;
+    int x_92 = 0;
+    bool x_76_phi = false;
+    int x_34_phi = 0;
+    int x_25_phi = 0;
+    x_24 = x_24_phi;
+    const int x_23 = x_23_phi;
+    if ((x_23 < 4)) {
+    } else {
+      break;
+    }
+    x_68 = false;
+    x_76_phi = false;
+    while (true) {
+      bool x_81 = false;
+      int x_32 = 0;
+      bool x_81_phi = false;
+      int x_32_phi = 0;
+      int x_33_phi = 0;
+      bool x_90_phi = false;
+      const bool x_76 = x_76_phi;
+      x_30 = 0;
+      x_81_phi = x_76;
+      x_32_phi = 0;
+      while (true) {
+        x_81 = x_81_phi;
+        x_32 = x_32_phi;
+        const float x_86 = asfloat(x_8[0].x);
+        x_33_phi = 0;
+        x_90_phi = x_81;
+        if ((x_32 < int(x_86))) {
+        } else {
+          break;
+        }
+        x_68 = true;
+        x_29 = x_32;
+        x_33_phi = x_32;
+        x_90_phi = true;
+        break;
+        {
+          x_81_phi = false;
+          x_32_phi = 0;
+        }
+      }
+      x_33 = x_33_phi;
+      const bool x_90 = x_90_phi;
+      x_34_phi = x_33;
+      if (x_90) {
+        break;
+      }
+      x_92 = 0;
+      x_68 = true;
+      x_29 = x_92;
+      x_34_phi = x_92;
+      break;
+      {
+        x_76_phi = false;
+      }
+    }
+    x_31 = x_34_phi;
+    const int x_93 = x_31;
+    int x_22_1[2] = localNumbers;
+    x_22_1[1u] = x_93;
+    const int x_22[2] = x_22_1;
+    localNumbers = x_22;
+    globalNumbers[0] = 0;
+    const int x_13 = x_22[1u];
+    param = x_13;
+    x_17 = 0;
+    x_25_phi = 0;
+    while (true) {
+      const int x_25 = x_25_phi;
+      if ((x_25 <= x_13)) {
+      } else {
+        break;
+      }
+      const int x_102_save = x_13;
+      const int x_18 = globalNumbers[x_102_save];
+      if ((x_18 <= 1)) {
+        globalNumbers[x_102_save] = 1;
+      }
+      {
+        const int x_19 = (x_25 + 1);
+        x_17 = x_19;
+        x_25_phi = x_19;
+      }
+    }
+    const float x_107 = asfloat(x_8[0].x);
+    const int x_14 = globalNumbers[(int(x_107) - 1)];
+    const int x_15 = asint((x_24 + asint(x_14)));
+    acc = x_15;
+    {
+      const int x_16 = (x_23 + 1);
+      i_1 = x_16;
+      x_24_phi = x_15;
+      x_23_phi = x_16;
+    }
+  }
+  if ((x_24 == asint(4))) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+int yieldsZero_() {
+  bool x_116 = false;
+  int x_20 = 0;
+  int i = 0;
+  int x_26 = 0;
+  int x_134 = 0;
+  bool x_118_phi = false;
+  int x_27_phi = 0;
+  x_118_phi = false;
+  while (true) {
+    bool x_123 = false;
+    int x_28 = 0;
+    bool x_123_phi = false;
+    int x_28_phi = 0;
+    int x_26_phi = 0;
+    bool x_132_phi = false;
+    const bool x_118 = x_118_phi;
+    i = 0;
+    x_123_phi = x_118;
+    x_28_phi = 0;
+    while (true) {
+      x_123 = x_123_phi;
+      x_28 = x_28_phi;
+      const float x_128 = asfloat(x_8[0].x);
+      x_26_phi = 0;
+      x_132_phi = x_123;
+      if ((x_28 < int(x_128))) {
+      } else {
+        break;
+      }
+      x_116 = true;
+      x_20 = x_28;
+      x_26_phi = x_28;
+      x_132_phi = true;
+      break;
+      {
+        x_123_phi = false;
+        x_28_phi = 0;
+      }
+    }
+    x_26 = x_26_phi;
+    const bool x_132 = x_132_phi;
+    x_27_phi = x_26;
+    if (x_132) {
+      break;
+    }
+    x_134 = 0;
+    x_116 = true;
+    x_20 = x_134;
+    x_27_phi = x_134;
+    break;
+    {
+      x_118_phi = false;
+    }
+  }
+  return x_27_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..7d54d73
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,213 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  bool x_68 = false;
+  int x_29 = 0;
+  int x_30 = 0;
+  int x_31 = 0;
+  tint_array_wrapper globalNumbers = {};
+  int x_17 = 0;
+  int acc = 0;
+  int i_1 = 0;
+  tint_array_wrapper_1 localNumbers = {};
+  int param = 0;
+  int x_24 = 0;
+  int x_24_phi = 0;
+  int x_23_phi = 0;
+  acc = 0;
+  i_1 = 0;
+  x_24_phi = 0;
+  x_23_phi = 0;
+  while (true) {
+    int x_33 = 0;
+    int x_92 = 0;
+    bool x_76_phi = false;
+    int x_34_phi = 0;
+    int x_25_phi = 0;
+    x_24 = x_24_phi;
+    int const x_23 = x_23_phi;
+    if ((x_23 < 4)) {
+    } else {
+      break;
+    }
+    x_68 = false;
+    x_76_phi = false;
+    while (true) {
+      bool x_81 = false;
+      int x_32 = 0;
+      bool x_81_phi = false;
+      int x_32_phi = 0;
+      int x_33_phi = 0;
+      bool x_90_phi = false;
+      bool const x_76 = x_76_phi;
+      x_30 = 0;
+      x_81_phi = x_76;
+      x_32_phi = 0;
+      while (true) {
+        x_81 = x_81_phi;
+        x_32 = x_32_phi;
+        float const x_86 = x_8.one;
+        x_33_phi = 0;
+        x_90_phi = x_81;
+        if ((x_32 < int(x_86))) {
+        } else {
+          break;
+        }
+        x_68 = true;
+        x_29 = x_32;
+        x_33_phi = x_32;
+        x_90_phi = true;
+        break;
+        {
+          x_81_phi = false;
+          x_32_phi = 0;
+        }
+      }
+      x_33 = x_33_phi;
+      bool const x_90 = x_90_phi;
+      x_34_phi = x_33;
+      if (x_90) {
+        break;
+      }
+      x_92 = 0;
+      x_68 = true;
+      x_29 = x_92;
+      x_34_phi = x_92;
+      break;
+      {
+        x_76_phi = false;
+      }
+    }
+    int const x_34 = x_34_phi;
+    x_31 = x_34;
+    int const x_93 = x_31;
+    tint_array_wrapper_1 const x_21 = localNumbers;
+    tint_array_wrapper_1 x_22_1 = x_21;
+    x_22_1.arr[1u] = x_93;
+    tint_array_wrapper_1 const x_22 = x_22_1;
+    localNumbers = x_22;
+    globalNumbers.arr[0] = 0;
+    int const x_13 = x_22.arr[1u];
+    param = x_13;
+    x_17 = 0;
+    x_25_phi = 0;
+    while (true) {
+      int const x_25 = x_25_phi;
+      if ((x_25 <= x_13)) {
+      } else {
+        break;
+      }
+      int const x_102_save = x_13;
+      int const x_18 = globalNumbers.arr[x_102_save];
+      if ((x_18 <= 1)) {
+        globalNumbers.arr[x_102_save] = 1;
+      }
+      {
+        int const x_19 = (x_25 + 1);
+        x_17 = x_19;
+        x_25_phi = x_19;
+      }
+    }
+    float const x_107 = x_8.one;
+    int const x_14 = globalNumbers.arr[(int(x_107) - 1)];
+    int const x_15 = as_type<int>((x_24 + as_type<int>(x_14)));
+    acc = x_15;
+    {
+      int const x_16 = (x_23 + 1);
+      i_1 = x_16;
+      x_24_phi = x_15;
+      x_23_phi = x_16;
+    }
+  }
+  if ((x_24 == as_type<int>(4))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+int yieldsZero_(constant buf0& x_8) {
+  bool x_116 = false;
+  int x_20 = 0;
+  int i = 0;
+  int x_26 = 0;
+  int x_134 = 0;
+  bool x_118_phi = false;
+  int x_27_phi = 0;
+  x_118_phi = false;
+  while (true) {
+    bool x_123 = false;
+    int x_28 = 0;
+    bool x_123_phi = false;
+    int x_28_phi = 0;
+    int x_26_phi = 0;
+    bool x_132_phi = false;
+    bool const x_118 = x_118_phi;
+    i = 0;
+    x_123_phi = x_118;
+    x_28_phi = 0;
+    while (true) {
+      x_123 = x_123_phi;
+      x_28 = x_28_phi;
+      float const x_128 = x_8.one;
+      x_26_phi = 0;
+      x_132_phi = x_123;
+      if ((x_28 < int(x_128))) {
+      } else {
+        break;
+      }
+      x_116 = true;
+      x_20 = x_28;
+      x_26_phi = x_28;
+      x_132_phi = true;
+      break;
+      {
+        x_123_phi = false;
+        x_28_phi = 0;
+      }
+    }
+    x_26 = x_26_phi;
+    bool const x_132 = x_132_phi;
+    x_27_phi = x_26;
+    if (x_132) {
+      break;
+    }
+    x_134 = 0;
+    x_116 = true;
+    x_20 = x_134;
+    x_27_phi = x_134;
+    break;
+    {
+      x_118_phi = false;
+    }
+  }
+  int const x_27 = x_27_phi;
+  return x_27;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..02fd4f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,406 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 204
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_68 "x_68"
+               OpName %x_29 "x_29"
+               OpName %x_30 "x_30"
+               OpName %x_31 "x_31"
+               OpName %globalNumbers "globalNumbers"
+               OpName %x_17 "x_17"
+               OpName %acc "acc"
+               OpName %i_1 "i_1"
+               OpName %localNumbers "localNumbers"
+               OpName %param "param"
+               OpName %x_24 "x_24"
+               OpName %x_24_phi "x_24_phi"
+               OpName %x_23_phi "x_23_phi"
+               OpName %x_33 "x_33"
+               OpName %x_92 "x_92"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_34_phi "x_34_phi"
+               OpName %x_25_phi "x_25_phi"
+               OpName %x_81 "x_81"
+               OpName %x_32 "x_32"
+               OpName %x_81_phi "x_81_phi"
+               OpName %x_32_phi "x_32_phi"
+               OpName %x_33_phi "x_33_phi"
+               OpName %x_90_phi "x_90_phi"
+               OpName %x_22_1 "x_22_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %yieldsZero_ "yieldsZero_"
+               OpName %x_116 "x_116"
+               OpName %x_20 "x_20"
+               OpName %i "i"
+               OpName %x_26 "x_26"
+               OpName %x_134 "x_134"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_27_phi "x_27_phi"
+               OpName %x_123 "x_123"
+               OpName %x_28 "x_28"
+               OpName %x_123_phi "x_123_phi"
+               OpName %x_28_phi "x_28_phi"
+               OpName %x_26_phi "x_26_phi"
+               OpName %x_132_phi "x_132_phi"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %31 = OpConstantNull %_arr_int_uint_10
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %39 = OpConstantNull %_arr_int_uint_2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %144 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %145 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %146 = OpTypeFunction %void %main_out
+        %158 = OpTypeFunction %int
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_68 = OpVariable %_ptr_Function_bool Function %19
+       %x_29 = OpVariable %_ptr_Function_int Function %23
+       %x_30 = OpVariable %_ptr_Function_int Function %23
+       %x_31 = OpVariable %_ptr_Function_int Function %23
+%globalNumbers = OpVariable %_ptr_Function__arr_int_uint_10 Function %31
+       %x_17 = OpVariable %_ptr_Function_int Function %23
+        %acc = OpVariable %_ptr_Function_int Function %23
+        %i_1 = OpVariable %_ptr_Function_int Function %23
+%localNumbers = OpVariable %_ptr_Function__arr_int_uint_2 Function %39
+      %param = OpVariable %_ptr_Function_int Function %23
+       %x_24 = OpVariable %_ptr_Function_int Function %23
+   %x_24_phi = OpVariable %_ptr_Function_int Function %23
+   %x_23_phi = OpVariable %_ptr_Function_int Function %23
+       %x_33 = OpVariable %_ptr_Function_int Function %23
+       %x_92 = OpVariable %_ptr_Function_int Function %23
+   %x_76_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_34_phi = OpVariable %_ptr_Function_int Function %23
+   %x_25_phi = OpVariable %_ptr_Function_int Function %23
+       %x_81 = OpVariable %_ptr_Function_bool Function %19
+       %x_32 = OpVariable %_ptr_Function_int Function %23
+   %x_81_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_32_phi = OpVariable %_ptr_Function_int Function %23
+   %x_33_phi = OpVariable %_ptr_Function_int Function %23
+   %x_90_phi = OpVariable %_ptr_Function_bool Function %19
+     %x_22_1 = OpVariable %_ptr_Function__arr_int_uint_2 Function %39
+               OpStore %x_68 %false
+               OpStore %acc %int_0
+               OpStore %i_1 %int_0
+               OpStore %x_24_phi %int_0
+               OpStore %x_23_phi %int_0
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %54 = OpLoad %int %x_24_phi
+               OpStore %x_24 %54
+         %55 = OpLoad %int %x_23_phi
+         %57 = OpSLessThan %bool %55 %int_4
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %46
+         %58 = OpLabel
+               OpStore %x_68 %false
+               OpStore %x_76_phi %false
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %71 = OpLoad %bool %x_76_phi
+               OpStore %x_30 %int_0
+               OpStore %x_81_phi %71
+               OpStore %x_32_phi %int_0
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %bool %x_81_phi
+               OpStore %x_81 %76
+         %77 = OpLoad %int %x_32_phi
+               OpStore %x_32 %77
+         %80 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+         %81 = OpLoad %float %80
+               OpStore %x_33_phi %int_0
+         %82 = OpLoad %bool %x_81
+               OpStore %x_90_phi %82
+         %83 = OpLoad %int %x_32
+         %84 = OpConvertFToS %int %81
+         %85 = OpSLessThan %bool %83 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+               OpBranch %86
+         %88 = OpLabel
+               OpBranch %73
+         %86 = OpLabel
+               OpStore %x_68 %true
+         %90 = OpLoad %int %x_32
+               OpStore %x_29 %90
+         %91 = OpLoad %int %x_32
+               OpStore %x_33_phi %91
+               OpStore %x_90_phi %true
+               OpBranch %73
+         %74 = OpLabel
+               OpStore %x_81_phi %false
+               OpStore %x_32_phi %int_0
+               OpBranch %72
+         %73 = OpLabel
+         %92 = OpLoad %int %x_33_phi
+               OpStore %x_33 %92
+         %93 = OpLoad %bool %x_90_phi
+         %94 = OpLoad %int %x_33
+               OpStore %x_34_phi %94
+               OpSelectionMerge %95 None
+               OpBranchConditional %93 %96 %95
+         %96 = OpLabel
+               OpBranch %62
+         %95 = OpLabel
+               OpStore %x_92 %int_0
+               OpStore %x_68 %true
+         %97 = OpLoad %int %x_92
+               OpStore %x_29 %97
+         %98 = OpLoad %int %x_92
+               OpStore %x_34_phi %98
+               OpBranch %62
+         %63 = OpLabel
+               OpStore %x_76_phi %false
+               OpBranch %61
+         %62 = OpLabel
+         %99 = OpLoad %int %x_34_phi
+               OpStore %x_31 %99
+        %100 = OpLoad %int %x_31
+        %101 = OpLoad %_arr_int_uint_2 %localNumbers
+               OpStore %x_22_1 %101
+        %104 = OpAccessChain %_ptr_Function_int %x_22_1 %uint_1
+               OpStore %104 %100
+        %105 = OpLoad %_arr_int_uint_2 %x_22_1
+               OpStore %localNumbers %105
+        %106 = OpAccessChain %_ptr_Function_int %globalNumbers %int_0
+               OpStore %106 %int_0
+        %107 = OpCompositeExtract %int %105 1
+               OpStore %param %107
+               OpStore %x_17 %int_0
+               OpStore %x_25_phi %int_0
+               OpBranch %108
+        %108 = OpLabel
+               OpLoopMerge %109 %110 None
+               OpBranch %111
+        %111 = OpLabel
+        %112 = OpLoad %int %x_25_phi
+        %113 = OpSLessThanEqual %bool %112 %107
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %115 = OpLabel
+               OpBranch %114
+        %116 = OpLabel
+               OpBranch %109
+        %114 = OpLabel
+        %117 = OpAccessChain %_ptr_Function_int %globalNumbers %107
+        %118 = OpLoad %int %117
+        %120 = OpSLessThanEqual %bool %118 %int_1
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %121
+        %122 = OpLabel
+        %123 = OpAccessChain %_ptr_Function_int %globalNumbers %107
+               OpStore %123 %int_1
+               OpBranch %121
+        %121 = OpLabel
+               OpBranch %110
+        %110 = OpLabel
+        %124 = OpIAdd %int %112 %int_1
+               OpStore %x_17 %124
+               OpStore %x_25_phi %124
+               OpBranch %108
+        %109 = OpLabel
+        %125 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+        %126 = OpLoad %float %125
+        %127 = OpConvertFToS %int %126
+        %128 = OpISub %int %127 %int_1
+        %129 = OpAccessChain %_ptr_Function_int %globalNumbers %128
+        %130 = OpLoad %int %129
+        %132 = OpLoad %int %x_24
+        %133 = OpCopyObject %int %130
+        %134 = OpIAdd %int %132 %133
+        %131 = OpCopyObject %int %134
+               OpStore %acc %131
+               OpBranch %47
+         %47 = OpLabel
+        %135 = OpIAdd %int %55 %int_1
+               OpStore %i_1 %135
+               OpStore %x_24_phi %131
+               OpStore %x_23_phi %135
+               OpBranch %45
+         %46 = OpLabel
+        %136 = OpLoad %int %x_24
+        %137 = OpCopyObject %int %int_4
+        %138 = OpIEqual %bool %136 %137
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpStore %x_GLF_color %144
+               OpBranch %139
+        %141 = OpLabel
+               OpStore %x_GLF_color %145
+               OpBranch %139
+        %139 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %146
+%tint_symbol = OpFunctionParameter %main_out
+        %150 = OpLabel
+        %151 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %151
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+        %153 = OpLabel
+        %154 = OpFunctionCall %void %main_1
+        %156 = OpLoad %v4float %x_GLF_color
+        %157 = OpCompositeConstruct %main_out %156
+        %155 = OpFunctionCall %void %tint_symbol_2 %157
+               OpReturn
+               OpFunctionEnd
+%yieldsZero_ = OpFunction %int None %158
+        %160 = OpLabel
+      %x_116 = OpVariable %_ptr_Function_bool Function %19
+       %x_20 = OpVariable %_ptr_Function_int Function %23
+          %i = OpVariable %_ptr_Function_int Function %23
+       %x_26 = OpVariable %_ptr_Function_int Function %23
+      %x_134 = OpVariable %_ptr_Function_int Function %23
+  %x_118_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_27_phi = OpVariable %_ptr_Function_int Function %23
+      %x_123 = OpVariable %_ptr_Function_bool Function %19
+       %x_28 = OpVariable %_ptr_Function_int Function %23
+  %x_123_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_28_phi = OpVariable %_ptr_Function_int Function %23
+   %x_26_phi = OpVariable %_ptr_Function_int Function %23
+  %x_132_phi = OpVariable %_ptr_Function_bool Function %19
+               OpStore %x_116 %false
+               OpStore %x_118_phi %false
+               OpBranch %168
+        %168 = OpLabel
+               OpLoopMerge %169 %170 None
+               OpBranch %171
+        %171 = OpLabel
+        %178 = OpLoad %bool %x_118_phi
+               OpStore %i %int_0
+               OpStore %x_123_phi %178
+               OpStore %x_28_phi %int_0
+               OpBranch %179
+        %179 = OpLabel
+               OpLoopMerge %180 %181 None
+               OpBranch %182
+        %182 = OpLabel
+        %183 = OpLoad %bool %x_123_phi
+               OpStore %x_123 %183
+        %184 = OpLoad %int %x_28_phi
+               OpStore %x_28 %184
+        %185 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+        %186 = OpLoad %float %185
+               OpStore %x_26_phi %int_0
+        %187 = OpLoad %bool %x_123
+               OpStore %x_132_phi %187
+        %188 = OpLoad %int %x_28
+        %189 = OpConvertFToS %int %186
+        %190 = OpSLessThan %bool %188 %189
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %193
+        %192 = OpLabel
+               OpBranch %191
+        %193 = OpLabel
+               OpBranch %180
+        %191 = OpLabel
+               OpStore %x_116 %true
+        %194 = OpLoad %int %x_28
+               OpStore %x_20 %194
+        %195 = OpLoad %int %x_28
+               OpStore %x_26_phi %195
+               OpStore %x_132_phi %true
+               OpBranch %180
+        %181 = OpLabel
+               OpStore %x_123_phi %false
+               OpStore %x_28_phi %int_0
+               OpBranch %179
+        %180 = OpLabel
+        %196 = OpLoad %int %x_26_phi
+               OpStore %x_26 %196
+        %197 = OpLoad %bool %x_132_phi
+        %198 = OpLoad %int %x_26
+               OpStore %x_27_phi %198
+               OpSelectionMerge %199 None
+               OpBranchConditional %197 %200 %199
+        %200 = OpLabel
+               OpBranch %169
+        %199 = OpLabel
+               OpStore %x_134 %int_0
+               OpStore %x_116 %true
+        %201 = OpLoad %int %x_134
+               OpStore %x_20 %201
+        %202 = OpLoad %int %x_134
+               OpStore %x_27_phi %202
+               OpBranch %169
+        %170 = OpLabel
+               OpStore %x_118_phi %false
+               OpBranch %168
+        %169 = OpLabel
+        %203 = OpLoad %int %x_27_phi
+               OpReturnValue %203
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..68df8e3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,212 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_68 : bool = false;
+  var x_29 : i32;
+  var x_30 : i32;
+  var x_31 : i32;
+  var globalNumbers : array<i32, 10>;
+  var x_17 : i32;
+  var acc : i32;
+  var i_1 : i32;
+  var localNumbers : array<i32, 2>;
+  var param : i32;
+  var x_24 : i32;
+  var x_24_phi : i32;
+  var x_23_phi : i32;
+  acc = 0;
+  i_1 = 0;
+  x_24_phi = 0;
+  x_23_phi = 0;
+  loop {
+    var x_33 : i32;
+    var x_92 : i32;
+    var x_76_phi : bool;
+    var x_34_phi : i32;
+    var x_25_phi : i32;
+    x_24 = x_24_phi;
+    let x_23 : i32 = x_23_phi;
+    if ((x_23 < 4)) {
+    } else {
+      break;
+    }
+    x_68 = false;
+    x_76_phi = false;
+    loop {
+      var x_81 : bool;
+      var x_32 : i32;
+      var x_81_phi : bool;
+      var x_32_phi : i32;
+      var x_33_phi : i32;
+      var x_90_phi : bool;
+      let x_76 : bool = x_76_phi;
+      x_30 = 0;
+      x_81_phi = x_76;
+      x_32_phi = 0;
+      loop {
+        x_81 = x_81_phi;
+        x_32 = x_32_phi;
+        let x_86 : f32 = x_8.one;
+        x_33_phi = 0;
+        x_90_phi = x_81;
+        if ((x_32 < i32(x_86))) {
+        } else {
+          break;
+        }
+        x_68 = true;
+        x_29 = x_32;
+        x_33_phi = x_32;
+        x_90_phi = true;
+        break;
+
+        continuing {
+          x_81_phi = false;
+          x_32_phi = 0;
+        }
+      }
+      x_33 = x_33_phi;
+      let x_90 : bool = x_90_phi;
+      x_34_phi = x_33;
+      if (x_90) {
+        break;
+      }
+      x_92 = 0;
+      x_68 = true;
+      x_29 = x_92;
+      x_34_phi = x_92;
+      break;
+
+      continuing {
+        x_76_phi = false;
+      }
+    }
+    let x_34 : i32 = x_34_phi;
+    x_31 = x_34;
+    let x_93 : i32 = x_31;
+    let x_21 : array<i32, 2> = localNumbers;
+    var x_22_1 : array<i32, 2> = x_21;
+    x_22_1[1u] = x_93;
+    let x_22 : array<i32, 2> = x_22_1;
+    localNumbers = x_22;
+    globalNumbers[0] = 0;
+    let x_95 : ptr<function, i32> = &(localNumbers[1]);
+    let x_13 : i32 = x_22[1u];
+    param = x_13;
+    x_17 = 0;
+    x_25_phi = 0;
+    loop {
+      let x_25 : i32 = x_25_phi;
+      if ((x_25 <= x_13)) {
+      } else {
+        break;
+      }
+      let x_102 : ptr<function, i32> = &(globalNumbers[x_13]);
+      let x_18 : i32 = *(x_102);
+      if ((x_18 <= 1)) {
+        *(x_102) = 1;
+      }
+
+      continuing {
+        let x_19 : i32 = (x_25 + 1);
+        x_17 = x_19;
+        x_25_phi = x_19;
+      }
+    }
+    let x_107 : f32 = x_8.one;
+    let x_14 : i32 = globalNumbers[(i32(x_107) - 1)];
+    let x_15 : i32 = bitcast<i32>((x_24 + bitcast<i32>(x_14)));
+    acc = x_15;
+
+    continuing {
+      let x_16 : i32 = (x_23 + 1);
+      i_1 = x_16;
+      x_24_phi = x_15;
+      x_23_phi = x_16;
+    }
+  }
+  if ((x_24 == bitcast<i32>(4))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn yieldsZero_() -> i32 {
+  var x_116 : bool = false;
+  var x_20 : i32;
+  var i : i32;
+  var x_26 : i32;
+  var x_134 : i32;
+  var x_118_phi : bool;
+  var x_27_phi : i32;
+  x_118_phi = false;
+  loop {
+    var x_123 : bool;
+    var x_28 : i32;
+    var x_123_phi : bool;
+    var x_28_phi : i32;
+    var x_26_phi : i32;
+    var x_132_phi : bool;
+    let x_118 : bool = x_118_phi;
+    i = 0;
+    x_123_phi = x_118;
+    x_28_phi = 0;
+    loop {
+      x_123 = x_123_phi;
+      x_28 = x_28_phi;
+      let x_128 : f32 = x_8.one;
+      x_26_phi = 0;
+      x_132_phi = x_123;
+      if ((x_28 < i32(x_128))) {
+      } else {
+        break;
+      }
+      x_116 = true;
+      x_20 = x_28;
+      x_26_phi = x_28;
+      x_132_phi = true;
+      break;
+
+      continuing {
+        x_123_phi = false;
+        x_28_phi = 0;
+      }
+    }
+    x_26 = x_26_phi;
+    let x_132 : bool = x_132_phi;
+    x_27_phi = x_26;
+    if (x_132) {
+      break;
+    }
+    x_134 = 0;
+    x_116 = true;
+    x_20 = x_134;
+    x_27_phi = x_134;
+    break;
+
+    continuing {
+      x_118_phi = false;
+    }
+  }
+  let x_27 : i32 = x_27_phi;
+  return x_27;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
new file mode 100644
index 0000000..68df8e3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
@@ -0,0 +1,212 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_68 : bool = false;
+  var x_29 : i32;
+  var x_30 : i32;
+  var x_31 : i32;
+  var globalNumbers : array<i32, 10>;
+  var x_17 : i32;
+  var acc : i32;
+  var i_1 : i32;
+  var localNumbers : array<i32, 2>;
+  var param : i32;
+  var x_24 : i32;
+  var x_24_phi : i32;
+  var x_23_phi : i32;
+  acc = 0;
+  i_1 = 0;
+  x_24_phi = 0;
+  x_23_phi = 0;
+  loop {
+    var x_33 : i32;
+    var x_92 : i32;
+    var x_76_phi : bool;
+    var x_34_phi : i32;
+    var x_25_phi : i32;
+    x_24 = x_24_phi;
+    let x_23 : i32 = x_23_phi;
+    if ((x_23 < 4)) {
+    } else {
+      break;
+    }
+    x_68 = false;
+    x_76_phi = false;
+    loop {
+      var x_81 : bool;
+      var x_32 : i32;
+      var x_81_phi : bool;
+      var x_32_phi : i32;
+      var x_33_phi : i32;
+      var x_90_phi : bool;
+      let x_76 : bool = x_76_phi;
+      x_30 = 0;
+      x_81_phi = x_76;
+      x_32_phi = 0;
+      loop {
+        x_81 = x_81_phi;
+        x_32 = x_32_phi;
+        let x_86 : f32 = x_8.one;
+        x_33_phi = 0;
+        x_90_phi = x_81;
+        if ((x_32 < i32(x_86))) {
+        } else {
+          break;
+        }
+        x_68 = true;
+        x_29 = x_32;
+        x_33_phi = x_32;
+        x_90_phi = true;
+        break;
+
+        continuing {
+          x_81_phi = false;
+          x_32_phi = 0;
+        }
+      }
+      x_33 = x_33_phi;
+      let x_90 : bool = x_90_phi;
+      x_34_phi = x_33;
+      if (x_90) {
+        break;
+      }
+      x_92 = 0;
+      x_68 = true;
+      x_29 = x_92;
+      x_34_phi = x_92;
+      break;
+
+      continuing {
+        x_76_phi = false;
+      }
+    }
+    let x_34 : i32 = x_34_phi;
+    x_31 = x_34;
+    let x_93 : i32 = x_31;
+    let x_21 : array<i32, 2> = localNumbers;
+    var x_22_1 : array<i32, 2> = x_21;
+    x_22_1[1u] = x_93;
+    let x_22 : array<i32, 2> = x_22_1;
+    localNumbers = x_22;
+    globalNumbers[0] = 0;
+    let x_95 : ptr<function, i32> = &(localNumbers[1]);
+    let x_13 : i32 = x_22[1u];
+    param = x_13;
+    x_17 = 0;
+    x_25_phi = 0;
+    loop {
+      let x_25 : i32 = x_25_phi;
+      if ((x_25 <= x_13)) {
+      } else {
+        break;
+      }
+      let x_102 : ptr<function, i32> = &(globalNumbers[x_13]);
+      let x_18 : i32 = *(x_102);
+      if ((x_18 <= 1)) {
+        *(x_102) = 1;
+      }
+
+      continuing {
+        let x_19 : i32 = (x_25 + 1);
+        x_17 = x_19;
+        x_25_phi = x_19;
+      }
+    }
+    let x_107 : f32 = x_8.one;
+    let x_14 : i32 = globalNumbers[(i32(x_107) - 1)];
+    let x_15 : i32 = bitcast<i32>((x_24 + bitcast<i32>(x_14)));
+    acc = x_15;
+
+    continuing {
+      let x_16 : i32 = (x_23 + 1);
+      i_1 = x_16;
+      x_24_phi = x_15;
+      x_23_phi = x_16;
+    }
+  }
+  if ((x_24 == bitcast<i32>(4))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn yieldsZero_() -> i32 {
+  var x_116 : bool = false;
+  var x_20 : i32;
+  var i : i32;
+  var x_26 : i32;
+  var x_134 : i32;
+  var x_118_phi : bool;
+  var x_27_phi : i32;
+  x_118_phi = false;
+  loop {
+    var x_123 : bool;
+    var x_28 : i32;
+    var x_123_phi : bool;
+    var x_28_phi : i32;
+    var x_26_phi : i32;
+    var x_132_phi : bool;
+    let x_118 : bool = x_118_phi;
+    i = 0;
+    x_123_phi = x_118;
+    x_28_phi = 0;
+    loop {
+      x_123 = x_123_phi;
+      x_28 = x_28_phi;
+      let x_128 : f32 = x_8.one;
+      x_26_phi = 0;
+      x_132_phi = x_123;
+      if ((x_28 < i32(x_128))) {
+      } else {
+        break;
+      }
+      x_116 = true;
+      x_20 = x_28;
+      x_26_phi = x_28;
+      x_132_phi = true;
+      break;
+
+      continuing {
+        x_123_phi = false;
+        x_28_phi = 0;
+      }
+    }
+    x_26 = x_26_phi;
+    let x_132 : bool = x_132_phi;
+    x_27_phi = x_26;
+    if (x_132) {
+      break;
+    }
+    x_134 = 0;
+    x_116 = true;
+    x_20 = x_134;
+    x_27_phi = x_134;
+    break;
+
+    continuing {
+      x_118_phi = false;
+    }
+  }
+  let x_27 : i32 = x_27_phi;
+  return x_27;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..adb4b13
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,201 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_68 = false;
+  int x_29 = 0;
+  int x_30 = 0;
+  int x_31 = 0;
+  int globalNumbers[10] = (int[10])0;
+  int x_17 = 0;
+  int acc = 0;
+  int i_1 = 0;
+  int localNumbers[2] = (int[2])0;
+  int param = 0;
+  int x_24 = 0;
+  int x_24_phi = 0;
+  int x_23_phi = 0;
+  acc = 0;
+  i_1 = 0;
+  x_24_phi = 0;
+  x_23_phi = 0;
+  while (true) {
+    int x_33 = 0;
+    int x_92 = 0;
+    bool x_76_phi = false;
+    int x_34_phi = 0;
+    int x_25_phi = 0;
+    x_24 = x_24_phi;
+    const int x_23 = x_23_phi;
+    if ((x_23 < 4)) {
+    } else {
+      break;
+    }
+    x_68 = false;
+    x_76_phi = false;
+    while (true) {
+      bool x_81 = false;
+      int x_32 = 0;
+      bool x_81_phi = false;
+      int x_32_phi = 0;
+      int x_33_phi = 0;
+      bool x_90_phi = false;
+      const bool x_76 = x_76_phi;
+      x_30 = 0;
+      x_81_phi = x_76;
+      x_32_phi = 0;
+      while (true) {
+        x_81 = x_81_phi;
+        x_32 = x_32_phi;
+        const float x_86 = asfloat(x_8[0].x);
+        x_33_phi = 0;
+        x_90_phi = x_81;
+        if ((x_32 < int(x_86))) {
+        } else {
+          break;
+        }
+        x_68 = true;
+        x_29 = x_32;
+        x_33_phi = x_32;
+        x_90_phi = true;
+        break;
+        {
+          x_81_phi = false;
+          x_32_phi = 0;
+        }
+      }
+      x_33 = x_33_phi;
+      const bool x_90 = x_90_phi;
+      x_34_phi = x_33;
+      if (x_90) {
+        break;
+      }
+      x_92 = 0;
+      x_68 = true;
+      x_29 = x_92;
+      x_34_phi = x_92;
+      break;
+      {
+        x_76_phi = false;
+      }
+    }
+    x_31 = x_34_phi;
+    const int x_93 = x_31;
+    int x_22_1[2] = localNumbers;
+    x_22_1[1u] = x_93;
+    const int x_22[2] = x_22_1;
+    localNumbers = x_22;
+    globalNumbers[0] = 0;
+    const int x_13 = x_22[1u];
+    param = x_13;
+    x_17 = 0;
+    x_25_phi = 0;
+    while (true) {
+      const int x_25 = x_25_phi;
+      if ((x_25 <= x_13)) {
+      } else {
+        break;
+      }
+      const int x_102_save = x_13;
+      const int x_18 = globalNumbers[x_102_save];
+      if ((x_18 <= 1)) {
+        globalNumbers[x_102_save] = 1;
+      }
+      {
+        const int x_19 = (x_25 + 1);
+        x_17 = x_19;
+        x_25_phi = x_19;
+      }
+    }
+    const float x_107 = asfloat(x_8[0].x);
+    const int x_14 = globalNumbers[(int(x_107) - 1)];
+    const int x_15 = asint((x_24 + asint(x_14)));
+    acc = x_15;
+    {
+      const int x_16 = (x_23 + 1);
+      i_1 = x_16;
+      x_24_phi = x_15;
+      x_23_phi = x_16;
+    }
+  }
+  if ((x_24 == asint(4))) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+int yieldsZero_() {
+  bool x_116 = false;
+  int x_20 = 0;
+  int i = 0;
+  int x_26 = 0;
+  int x_134 = 0;
+  bool x_118_phi = false;
+  int x_27_phi = 0;
+  x_118_phi = false;
+  while (true) {
+    bool x_123 = false;
+    int x_28 = 0;
+    bool x_123_phi = false;
+    int x_28_phi = 0;
+    int x_26_phi = 0;
+    bool x_132_phi = false;
+    const bool x_118 = x_118_phi;
+    i = 0;
+    x_123_phi = x_118;
+    x_28_phi = 0;
+    while (true) {
+      x_123 = x_123_phi;
+      x_28 = x_28_phi;
+      const float x_128 = asfloat(x_8[0].x);
+      x_26_phi = 0;
+      x_132_phi = x_123;
+      if ((x_28 < int(x_128))) {
+      } else {
+        break;
+      }
+      x_116 = true;
+      x_20 = x_28;
+      x_26_phi = x_28;
+      x_132_phi = true;
+      break;
+      {
+        x_123_phi = false;
+        x_28_phi = 0;
+      }
+    }
+    x_26 = x_26_phi;
+    const bool x_132 = x_132_phi;
+    x_27_phi = x_26;
+    if (x_132) {
+      break;
+    }
+    x_134 = 0;
+    x_116 = true;
+    x_20 = x_134;
+    x_27_phi = x_134;
+    break;
+    {
+      x_118_phi = false;
+    }
+  }
+  return x_27_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..7d54d73
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,213 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct tint_array_wrapper_1 {
+  int arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  bool x_68 = false;
+  int x_29 = 0;
+  int x_30 = 0;
+  int x_31 = 0;
+  tint_array_wrapper globalNumbers = {};
+  int x_17 = 0;
+  int acc = 0;
+  int i_1 = 0;
+  tint_array_wrapper_1 localNumbers = {};
+  int param = 0;
+  int x_24 = 0;
+  int x_24_phi = 0;
+  int x_23_phi = 0;
+  acc = 0;
+  i_1 = 0;
+  x_24_phi = 0;
+  x_23_phi = 0;
+  while (true) {
+    int x_33 = 0;
+    int x_92 = 0;
+    bool x_76_phi = false;
+    int x_34_phi = 0;
+    int x_25_phi = 0;
+    x_24 = x_24_phi;
+    int const x_23 = x_23_phi;
+    if ((x_23 < 4)) {
+    } else {
+      break;
+    }
+    x_68 = false;
+    x_76_phi = false;
+    while (true) {
+      bool x_81 = false;
+      int x_32 = 0;
+      bool x_81_phi = false;
+      int x_32_phi = 0;
+      int x_33_phi = 0;
+      bool x_90_phi = false;
+      bool const x_76 = x_76_phi;
+      x_30 = 0;
+      x_81_phi = x_76;
+      x_32_phi = 0;
+      while (true) {
+        x_81 = x_81_phi;
+        x_32 = x_32_phi;
+        float const x_86 = x_8.one;
+        x_33_phi = 0;
+        x_90_phi = x_81;
+        if ((x_32 < int(x_86))) {
+        } else {
+          break;
+        }
+        x_68 = true;
+        x_29 = x_32;
+        x_33_phi = x_32;
+        x_90_phi = true;
+        break;
+        {
+          x_81_phi = false;
+          x_32_phi = 0;
+        }
+      }
+      x_33 = x_33_phi;
+      bool const x_90 = x_90_phi;
+      x_34_phi = x_33;
+      if (x_90) {
+        break;
+      }
+      x_92 = 0;
+      x_68 = true;
+      x_29 = x_92;
+      x_34_phi = x_92;
+      break;
+      {
+        x_76_phi = false;
+      }
+    }
+    int const x_34 = x_34_phi;
+    x_31 = x_34;
+    int const x_93 = x_31;
+    tint_array_wrapper_1 const x_21 = localNumbers;
+    tint_array_wrapper_1 x_22_1 = x_21;
+    x_22_1.arr[1u] = x_93;
+    tint_array_wrapper_1 const x_22 = x_22_1;
+    localNumbers = x_22;
+    globalNumbers.arr[0] = 0;
+    int const x_13 = x_22.arr[1u];
+    param = x_13;
+    x_17 = 0;
+    x_25_phi = 0;
+    while (true) {
+      int const x_25 = x_25_phi;
+      if ((x_25 <= x_13)) {
+      } else {
+        break;
+      }
+      int const x_102_save = x_13;
+      int const x_18 = globalNumbers.arr[x_102_save];
+      if ((x_18 <= 1)) {
+        globalNumbers.arr[x_102_save] = 1;
+      }
+      {
+        int const x_19 = (x_25 + 1);
+        x_17 = x_19;
+        x_25_phi = x_19;
+      }
+    }
+    float const x_107 = x_8.one;
+    int const x_14 = globalNumbers.arr[(int(x_107) - 1)];
+    int const x_15 = as_type<int>((x_24 + as_type<int>(x_14)));
+    acc = x_15;
+    {
+      int const x_16 = (x_23 + 1);
+      i_1 = x_16;
+      x_24_phi = x_15;
+      x_23_phi = x_16;
+    }
+  }
+  if ((x_24 == as_type<int>(4))) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+int yieldsZero_(constant buf0& x_8) {
+  bool x_116 = false;
+  int x_20 = 0;
+  int i = 0;
+  int x_26 = 0;
+  int x_134 = 0;
+  bool x_118_phi = false;
+  int x_27_phi = 0;
+  x_118_phi = false;
+  while (true) {
+    bool x_123 = false;
+    int x_28 = 0;
+    bool x_123_phi = false;
+    int x_28_phi = 0;
+    int x_26_phi = 0;
+    bool x_132_phi = false;
+    bool const x_118 = x_118_phi;
+    i = 0;
+    x_123_phi = x_118;
+    x_28_phi = 0;
+    while (true) {
+      x_123 = x_123_phi;
+      x_28 = x_28_phi;
+      float const x_128 = x_8.one;
+      x_26_phi = 0;
+      x_132_phi = x_123;
+      if ((x_28 < int(x_128))) {
+      } else {
+        break;
+      }
+      x_116 = true;
+      x_20 = x_28;
+      x_26_phi = x_28;
+      x_132_phi = true;
+      break;
+      {
+        x_123_phi = false;
+        x_28_phi = 0;
+      }
+    }
+    x_26 = x_26_phi;
+    bool const x_132 = x_132_phi;
+    x_27_phi = x_26;
+    if (x_132) {
+      break;
+    }
+    x_134 = 0;
+    x_116 = true;
+    x_20 = x_134;
+    x_27_phi = x_134;
+    break;
+    {
+      x_118_phi = false;
+    }
+  }
+  int const x_27 = x_27_phi;
+  return x_27;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..02fd4f3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,406 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 204
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_68 "x_68"
+               OpName %x_29 "x_29"
+               OpName %x_30 "x_30"
+               OpName %x_31 "x_31"
+               OpName %globalNumbers "globalNumbers"
+               OpName %x_17 "x_17"
+               OpName %acc "acc"
+               OpName %i_1 "i_1"
+               OpName %localNumbers "localNumbers"
+               OpName %param "param"
+               OpName %x_24 "x_24"
+               OpName %x_24_phi "x_24_phi"
+               OpName %x_23_phi "x_23_phi"
+               OpName %x_33 "x_33"
+               OpName %x_92 "x_92"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_34_phi "x_34_phi"
+               OpName %x_25_phi "x_25_phi"
+               OpName %x_81 "x_81"
+               OpName %x_32 "x_32"
+               OpName %x_81_phi "x_81_phi"
+               OpName %x_32_phi "x_32_phi"
+               OpName %x_33_phi "x_33_phi"
+               OpName %x_90_phi "x_90_phi"
+               OpName %x_22_1 "x_22_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %yieldsZero_ "yieldsZero_"
+               OpName %x_116 "x_116"
+               OpName %x_20 "x_20"
+               OpName %i "i"
+               OpName %x_26 "x_26"
+               OpName %x_134 "x_134"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_27_phi "x_27_phi"
+               OpName %x_123 "x_123"
+               OpName %x_28 "x_28"
+               OpName %x_123_phi "x_123_phi"
+               OpName %x_28_phi "x_28_phi"
+               OpName %x_26_phi "x_26_phi"
+               OpName %x_132_phi "x_132_phi"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %_arr_int_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %19 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %31 = OpConstantNull %_arr_int_uint_10
+     %uint_2 = OpConstant %uint 2
+%_arr_int_uint_2 = OpTypeArray %int %uint_2
+%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2
+         %39 = OpConstantNull %_arr_int_uint_2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %144 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %145 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %146 = OpTypeFunction %void %main_out
+        %158 = OpTypeFunction %int
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_68 = OpVariable %_ptr_Function_bool Function %19
+       %x_29 = OpVariable %_ptr_Function_int Function %23
+       %x_30 = OpVariable %_ptr_Function_int Function %23
+       %x_31 = OpVariable %_ptr_Function_int Function %23
+%globalNumbers = OpVariable %_ptr_Function__arr_int_uint_10 Function %31
+       %x_17 = OpVariable %_ptr_Function_int Function %23
+        %acc = OpVariable %_ptr_Function_int Function %23
+        %i_1 = OpVariable %_ptr_Function_int Function %23
+%localNumbers = OpVariable %_ptr_Function__arr_int_uint_2 Function %39
+      %param = OpVariable %_ptr_Function_int Function %23
+       %x_24 = OpVariable %_ptr_Function_int Function %23
+   %x_24_phi = OpVariable %_ptr_Function_int Function %23
+   %x_23_phi = OpVariable %_ptr_Function_int Function %23
+       %x_33 = OpVariable %_ptr_Function_int Function %23
+       %x_92 = OpVariable %_ptr_Function_int Function %23
+   %x_76_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_34_phi = OpVariable %_ptr_Function_int Function %23
+   %x_25_phi = OpVariable %_ptr_Function_int Function %23
+       %x_81 = OpVariable %_ptr_Function_bool Function %19
+       %x_32 = OpVariable %_ptr_Function_int Function %23
+   %x_81_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_32_phi = OpVariable %_ptr_Function_int Function %23
+   %x_33_phi = OpVariable %_ptr_Function_int Function %23
+   %x_90_phi = OpVariable %_ptr_Function_bool Function %19
+     %x_22_1 = OpVariable %_ptr_Function__arr_int_uint_2 Function %39
+               OpStore %x_68 %false
+               OpStore %acc %int_0
+               OpStore %i_1 %int_0
+               OpStore %x_24_phi %int_0
+               OpStore %x_23_phi %int_0
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+         %54 = OpLoad %int %x_24_phi
+               OpStore %x_24 %54
+         %55 = OpLoad %int %x_23_phi
+         %57 = OpSLessThan %bool %55 %int_4
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %46
+         %58 = OpLabel
+               OpStore %x_68 %false
+               OpStore %x_76_phi %false
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %71 = OpLoad %bool %x_76_phi
+               OpStore %x_30 %int_0
+               OpStore %x_81_phi %71
+               OpStore %x_32_phi %int_0
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %bool %x_81_phi
+               OpStore %x_81 %76
+         %77 = OpLoad %int %x_32_phi
+               OpStore %x_32 %77
+         %80 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+         %81 = OpLoad %float %80
+               OpStore %x_33_phi %int_0
+         %82 = OpLoad %bool %x_81
+               OpStore %x_90_phi %82
+         %83 = OpLoad %int %x_32
+         %84 = OpConvertFToS %int %81
+         %85 = OpSLessThan %bool %83 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+               OpBranch %86
+         %88 = OpLabel
+               OpBranch %73
+         %86 = OpLabel
+               OpStore %x_68 %true
+         %90 = OpLoad %int %x_32
+               OpStore %x_29 %90
+         %91 = OpLoad %int %x_32
+               OpStore %x_33_phi %91
+               OpStore %x_90_phi %true
+               OpBranch %73
+         %74 = OpLabel
+               OpStore %x_81_phi %false
+               OpStore %x_32_phi %int_0
+               OpBranch %72
+         %73 = OpLabel
+         %92 = OpLoad %int %x_33_phi
+               OpStore %x_33 %92
+         %93 = OpLoad %bool %x_90_phi
+         %94 = OpLoad %int %x_33
+               OpStore %x_34_phi %94
+               OpSelectionMerge %95 None
+               OpBranchConditional %93 %96 %95
+         %96 = OpLabel
+               OpBranch %62
+         %95 = OpLabel
+               OpStore %x_92 %int_0
+               OpStore %x_68 %true
+         %97 = OpLoad %int %x_92
+               OpStore %x_29 %97
+         %98 = OpLoad %int %x_92
+               OpStore %x_34_phi %98
+               OpBranch %62
+         %63 = OpLabel
+               OpStore %x_76_phi %false
+               OpBranch %61
+         %62 = OpLabel
+         %99 = OpLoad %int %x_34_phi
+               OpStore %x_31 %99
+        %100 = OpLoad %int %x_31
+        %101 = OpLoad %_arr_int_uint_2 %localNumbers
+               OpStore %x_22_1 %101
+        %104 = OpAccessChain %_ptr_Function_int %x_22_1 %uint_1
+               OpStore %104 %100
+        %105 = OpLoad %_arr_int_uint_2 %x_22_1
+               OpStore %localNumbers %105
+        %106 = OpAccessChain %_ptr_Function_int %globalNumbers %int_0
+               OpStore %106 %int_0
+        %107 = OpCompositeExtract %int %105 1
+               OpStore %param %107
+               OpStore %x_17 %int_0
+               OpStore %x_25_phi %int_0
+               OpBranch %108
+        %108 = OpLabel
+               OpLoopMerge %109 %110 None
+               OpBranch %111
+        %111 = OpLabel
+        %112 = OpLoad %int %x_25_phi
+        %113 = OpSLessThanEqual %bool %112 %107
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %115 = OpLabel
+               OpBranch %114
+        %116 = OpLabel
+               OpBranch %109
+        %114 = OpLabel
+        %117 = OpAccessChain %_ptr_Function_int %globalNumbers %107
+        %118 = OpLoad %int %117
+        %120 = OpSLessThanEqual %bool %118 %int_1
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %121
+        %122 = OpLabel
+        %123 = OpAccessChain %_ptr_Function_int %globalNumbers %107
+               OpStore %123 %int_1
+               OpBranch %121
+        %121 = OpLabel
+               OpBranch %110
+        %110 = OpLabel
+        %124 = OpIAdd %int %112 %int_1
+               OpStore %x_17 %124
+               OpStore %x_25_phi %124
+               OpBranch %108
+        %109 = OpLabel
+        %125 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+        %126 = OpLoad %float %125
+        %127 = OpConvertFToS %int %126
+        %128 = OpISub %int %127 %int_1
+        %129 = OpAccessChain %_ptr_Function_int %globalNumbers %128
+        %130 = OpLoad %int %129
+        %132 = OpLoad %int %x_24
+        %133 = OpCopyObject %int %130
+        %134 = OpIAdd %int %132 %133
+        %131 = OpCopyObject %int %134
+               OpStore %acc %131
+               OpBranch %47
+         %47 = OpLabel
+        %135 = OpIAdd %int %55 %int_1
+               OpStore %i_1 %135
+               OpStore %x_24_phi %131
+               OpStore %x_23_phi %135
+               OpBranch %45
+         %46 = OpLabel
+        %136 = OpLoad %int %x_24
+        %137 = OpCopyObject %int %int_4
+        %138 = OpIEqual %bool %136 %137
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpStore %x_GLF_color %144
+               OpBranch %139
+        %141 = OpLabel
+               OpStore %x_GLF_color %145
+               OpBranch %139
+        %139 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %146
+%tint_symbol = OpFunctionParameter %main_out
+        %150 = OpLabel
+        %151 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %151
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+        %153 = OpLabel
+        %154 = OpFunctionCall %void %main_1
+        %156 = OpLoad %v4float %x_GLF_color
+        %157 = OpCompositeConstruct %main_out %156
+        %155 = OpFunctionCall %void %tint_symbol_2 %157
+               OpReturn
+               OpFunctionEnd
+%yieldsZero_ = OpFunction %int None %158
+        %160 = OpLabel
+      %x_116 = OpVariable %_ptr_Function_bool Function %19
+       %x_20 = OpVariable %_ptr_Function_int Function %23
+          %i = OpVariable %_ptr_Function_int Function %23
+       %x_26 = OpVariable %_ptr_Function_int Function %23
+      %x_134 = OpVariable %_ptr_Function_int Function %23
+  %x_118_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_27_phi = OpVariable %_ptr_Function_int Function %23
+      %x_123 = OpVariable %_ptr_Function_bool Function %19
+       %x_28 = OpVariable %_ptr_Function_int Function %23
+  %x_123_phi = OpVariable %_ptr_Function_bool Function %19
+   %x_28_phi = OpVariable %_ptr_Function_int Function %23
+   %x_26_phi = OpVariable %_ptr_Function_int Function %23
+  %x_132_phi = OpVariable %_ptr_Function_bool Function %19
+               OpStore %x_116 %false
+               OpStore %x_118_phi %false
+               OpBranch %168
+        %168 = OpLabel
+               OpLoopMerge %169 %170 None
+               OpBranch %171
+        %171 = OpLabel
+        %178 = OpLoad %bool %x_118_phi
+               OpStore %i %int_0
+               OpStore %x_123_phi %178
+               OpStore %x_28_phi %int_0
+               OpBranch %179
+        %179 = OpLabel
+               OpLoopMerge %180 %181 None
+               OpBranch %182
+        %182 = OpLabel
+        %183 = OpLoad %bool %x_123_phi
+               OpStore %x_123 %183
+        %184 = OpLoad %int %x_28_phi
+               OpStore %x_28 %184
+        %185 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0
+        %186 = OpLoad %float %185
+               OpStore %x_26_phi %int_0
+        %187 = OpLoad %bool %x_123
+               OpStore %x_132_phi %187
+        %188 = OpLoad %int %x_28
+        %189 = OpConvertFToS %int %186
+        %190 = OpSLessThan %bool %188 %189
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %193
+        %192 = OpLabel
+               OpBranch %191
+        %193 = OpLabel
+               OpBranch %180
+        %191 = OpLabel
+               OpStore %x_116 %true
+        %194 = OpLoad %int %x_28
+               OpStore %x_20 %194
+        %195 = OpLoad %int %x_28
+               OpStore %x_26_phi %195
+               OpStore %x_132_phi %true
+               OpBranch %180
+        %181 = OpLabel
+               OpStore %x_123_phi %false
+               OpStore %x_28_phi %int_0
+               OpBranch %179
+        %180 = OpLabel
+        %196 = OpLoad %int %x_26_phi
+               OpStore %x_26 %196
+        %197 = OpLoad %bool %x_132_phi
+        %198 = OpLoad %int %x_26
+               OpStore %x_27_phi %198
+               OpSelectionMerge %199 None
+               OpBranchConditional %197 %200 %199
+        %200 = OpLabel
+               OpBranch %169
+        %199 = OpLabel
+               OpStore %x_134 %int_0
+               OpStore %x_116 %true
+        %201 = OpLoad %int %x_134
+               OpStore %x_20 %201
+        %202 = OpLoad %int %x_134
+               OpStore %x_27_phi %202
+               OpBranch %169
+        %170 = OpLabel
+               OpStore %x_118_phi %false
+               OpBranch %168
+        %169 = OpLabel
+        %203 = OpLoad %int %x_27_phi
+               OpReturnValue %203
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..68df8e3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,212 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_68 : bool = false;
+  var x_29 : i32;
+  var x_30 : i32;
+  var x_31 : i32;
+  var globalNumbers : array<i32, 10>;
+  var x_17 : i32;
+  var acc : i32;
+  var i_1 : i32;
+  var localNumbers : array<i32, 2>;
+  var param : i32;
+  var x_24 : i32;
+  var x_24_phi : i32;
+  var x_23_phi : i32;
+  acc = 0;
+  i_1 = 0;
+  x_24_phi = 0;
+  x_23_phi = 0;
+  loop {
+    var x_33 : i32;
+    var x_92 : i32;
+    var x_76_phi : bool;
+    var x_34_phi : i32;
+    var x_25_phi : i32;
+    x_24 = x_24_phi;
+    let x_23 : i32 = x_23_phi;
+    if ((x_23 < 4)) {
+    } else {
+      break;
+    }
+    x_68 = false;
+    x_76_phi = false;
+    loop {
+      var x_81 : bool;
+      var x_32 : i32;
+      var x_81_phi : bool;
+      var x_32_phi : i32;
+      var x_33_phi : i32;
+      var x_90_phi : bool;
+      let x_76 : bool = x_76_phi;
+      x_30 = 0;
+      x_81_phi = x_76;
+      x_32_phi = 0;
+      loop {
+        x_81 = x_81_phi;
+        x_32 = x_32_phi;
+        let x_86 : f32 = x_8.one;
+        x_33_phi = 0;
+        x_90_phi = x_81;
+        if ((x_32 < i32(x_86))) {
+        } else {
+          break;
+        }
+        x_68 = true;
+        x_29 = x_32;
+        x_33_phi = x_32;
+        x_90_phi = true;
+        break;
+
+        continuing {
+          x_81_phi = false;
+          x_32_phi = 0;
+        }
+      }
+      x_33 = x_33_phi;
+      let x_90 : bool = x_90_phi;
+      x_34_phi = x_33;
+      if (x_90) {
+        break;
+      }
+      x_92 = 0;
+      x_68 = true;
+      x_29 = x_92;
+      x_34_phi = x_92;
+      break;
+
+      continuing {
+        x_76_phi = false;
+      }
+    }
+    let x_34 : i32 = x_34_phi;
+    x_31 = x_34;
+    let x_93 : i32 = x_31;
+    let x_21 : array<i32, 2> = localNumbers;
+    var x_22_1 : array<i32, 2> = x_21;
+    x_22_1[1u] = x_93;
+    let x_22 : array<i32, 2> = x_22_1;
+    localNumbers = x_22;
+    globalNumbers[0] = 0;
+    let x_95 : ptr<function, i32> = &(localNumbers[1]);
+    let x_13 : i32 = x_22[1u];
+    param = x_13;
+    x_17 = 0;
+    x_25_phi = 0;
+    loop {
+      let x_25 : i32 = x_25_phi;
+      if ((x_25 <= x_13)) {
+      } else {
+        break;
+      }
+      let x_102 : ptr<function, i32> = &(globalNumbers[x_13]);
+      let x_18 : i32 = *(x_102);
+      if ((x_18 <= 1)) {
+        *(x_102) = 1;
+      }
+
+      continuing {
+        let x_19 : i32 = (x_25 + 1);
+        x_17 = x_19;
+        x_25_phi = x_19;
+      }
+    }
+    let x_107 : f32 = x_8.one;
+    let x_14 : i32 = globalNumbers[(i32(x_107) - 1)];
+    let x_15 : i32 = bitcast<i32>((x_24 + bitcast<i32>(x_14)));
+    acc = x_15;
+
+    continuing {
+      let x_16 : i32 = (x_23 + 1);
+      i_1 = x_16;
+      x_24_phi = x_15;
+      x_23_phi = x_16;
+    }
+  }
+  if ((x_24 == bitcast<i32>(4))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn yieldsZero_() -> i32 {
+  var x_116 : bool = false;
+  var x_20 : i32;
+  var i : i32;
+  var x_26 : i32;
+  var x_134 : i32;
+  var x_118_phi : bool;
+  var x_27_phi : i32;
+  x_118_phi = false;
+  loop {
+    var x_123 : bool;
+    var x_28 : i32;
+    var x_123_phi : bool;
+    var x_28_phi : i32;
+    var x_26_phi : i32;
+    var x_132_phi : bool;
+    let x_118 : bool = x_118_phi;
+    i = 0;
+    x_123_phi = x_118;
+    x_28_phi = 0;
+    loop {
+      x_123 = x_123_phi;
+      x_28 = x_28_phi;
+      let x_128 : f32 = x_8.one;
+      x_26_phi = 0;
+      x_132_phi = x_123;
+      if ((x_28 < i32(x_128))) {
+      } else {
+        break;
+      }
+      x_116 = true;
+      x_20 = x_28;
+      x_26_phi = x_28;
+      x_132_phi = true;
+      break;
+
+      continuing {
+        x_123_phi = false;
+        x_28_phi = 0;
+      }
+    }
+    x_26 = x_26_phi;
+    let x_132 : bool = x_132_phi;
+    x_27_phi = x_26;
+    if (x_132) {
+      break;
+    }
+    x_134 = 0;
+    x_116 = true;
+    x_20 = x_134;
+    x_27_phi = x_134;
+    break;
+
+    continuing {
+      x_118_phi = false;
+    }
+  }
+  let x_27 : i32 = x_27_phi;
+  return x_27;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm
new file mode 100644
index 0000000..28e20bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm
@@ -0,0 +1,74 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %data "data"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %bool = OpTypeBool
+         %28 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %29 = OpUndef %float
+       %main = OpFunction %void None %8
+         %30 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_2 Function
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpAccessChain %_ptr_Function_float %data %int_0
+               OpStore %33 %32
+         %34 = OpAccessChain %_ptr_Function_float %data %int_1
+               OpStore %34 %32
+               OpStore %_GLF_color %26
+         %35 = OpLoad %float %34
+         %36 = OpFOrdGreaterThan %bool %35 %float_1
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+         %39 = OpConvertFToS %int %32
+               OpSelectionMerge %40 None
+               OpSwitch %39 %40 0 %41 1 %42
+         %40 = OpLabel
+               OpBranch %37
+         %41 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+         %43 = OpPhi %float %29 %38 %float_1 %41
+         %44 = OpAccessChain %_ptr_Function_float %data %39
+               OpStore %44 %43
+               OpStore %_GLF_color %28
+               OpBranch %40
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..583cd97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.hlsl
@@ -0,0 +1,48 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float data[2] = (float[2])0;
+  float x_32 = 0.0f;
+  x_32 = asfloat(x_6[0].x);
+  data[0] = x_32;
+  data[1] = x_32;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_35 = data[1];
+  if ((x_35 > 1.0f)) {
+    float x_43_phi = 0.0f;
+    const int x_39 = int(x_32);
+    x_43_phi = 0.0f;
+    switch(x_39) {
+      case 0: {
+        x_43_phi = 1.0f;
+        /* fallthrough */
+      }
+      case 1: {
+        data[x_39] = x_43_phi;
+        x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.msl
new file mode 100644
index 0000000..b4c618f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  tint_array_wrapper data = {};
+  float x_32 = 0.0f;
+  x_32 = x_6.injectionSwitch.x;
+  data.arr[0] = x_32;
+  data.arr[1] = x_32;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_35 = data.arr[1];
+  if ((x_35 > 1.0f)) {
+    float x_43_phi = 0.0f;
+    int const x_39 = int(x_32);
+    x_43_phi = 0.0f;
+    switch(x_39) {
+      case 0: {
+        x_43_phi = 1.0f;
+        /* fallthrough */
+      }
+      case 1: {
+        float const x_43 = x_43_phi;
+        data.arr[x_39] = x_43;
+        *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..a5e407d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.spvasm
@@ -0,0 +1,120 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %x_32 "x_32"
+               OpName %x_43_phi "x_43_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+         %21 = OpConstantNull %_arr_float_uint_2
+%_ptr_Function_float = OpTypePointer Function %float
+         %24 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %bool = OpTypeBool
+         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_2 Function %21
+       %x_32 = OpVariable %_ptr_Function_float Function %24
+   %x_43_phi = OpVariable %_ptr_Function_float Function %24
+         %27 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %28 = OpLoad %float %27
+               OpStore %x_32 %28
+         %31 = OpAccessChain %_ptr_Function_float %data %int_0
+         %32 = OpLoad %float %x_32
+               OpStore %31 %32
+         %34 = OpAccessChain %_ptr_Function_float %data %int_1
+         %35 = OpLoad %float %x_32
+               OpStore %34 %35
+               OpStore %x_GLF_color %38
+         %39 = OpAccessChain %_ptr_Function_float %data %int_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThan %bool %40 %float_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+         %47 = OpLoad %float %x_32
+         %46 = OpConvertFToS %int %47
+               OpStore %x_43_phi %float_0
+               OpSelectionMerge %48 None
+               OpSwitch %46 %49 0 %50 1 %51
+         %50 = OpLabel
+               OpStore %x_43_phi %float_1
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpLoad %float %x_43_phi
+         %53 = OpAccessChain %_ptr_Function_float %data %46
+               OpStore %53 %52
+               OpStore %x_GLF_color %54
+               OpBranch %48
+         %49 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..71828f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 2>;
+  var x_32 : f32;
+  x_32 = x_6.injectionSwitch.x;
+  data[0] = x_32;
+  let x_34 : ptr<function, f32> = &(data[1]);
+  *(x_34) = x_32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_35 : f32 = *(x_34);
+  if ((x_35 > 1.0)) {
+    var x_43_phi : f32;
+    let x_39 : i32 = i32(x_32);
+    x_43_phi = 0.0;
+    switch(x_39) {
+      case 0: {
+        x_43_phi = 1.0;
+        fallthrough;
+      }
+      case 1: {
+        let x_43 : f32 = x_43_phi;
+        data[x_39] = x_43;
+        x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      }
+      default: {
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
new file mode 100644
index 0000000..71828f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
@@ -0,0 +1,49 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 2>;
+  var x_32 : f32;
+  x_32 = x_6.injectionSwitch.x;
+  data[0] = x_32;
+  let x_34 : ptr<function, f32> = &(data[1]);
+  *(x_34) = x_32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_35 : f32 = *(x_34);
+  if ((x_35 > 1.0)) {
+    var x_43_phi : f32;
+    let x_39 : i32 = i32(x_32);
+    x_43_phi = 0.0;
+    switch(x_39) {
+      case 0: {
+        x_43_phi = 1.0;
+        fallthrough;
+      }
+      case 1: {
+        let x_43 : f32 = x_43_phi;
+        data[x_39] = x_43;
+        x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      }
+      default: {
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..583cd97
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.hlsl
@@ -0,0 +1,48 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float data[2] = (float[2])0;
+  float x_32 = 0.0f;
+  x_32 = asfloat(x_6[0].x);
+  data[0] = x_32;
+  data[1] = x_32;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_35 = data[1];
+  if ((x_35 > 1.0f)) {
+    float x_43_phi = 0.0f;
+    const int x_39 = int(x_32);
+    x_43_phi = 0.0f;
+    switch(x_39) {
+      case 0: {
+        x_43_phi = 1.0f;
+        /* fallthrough */
+      }
+      case 1: {
+        data[x_39] = x_43_phi;
+        x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.msl
new file mode 100644
index 0000000..b4c618f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[2];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  tint_array_wrapper data = {};
+  float x_32 = 0.0f;
+  x_32 = x_6.injectionSwitch.x;
+  data.arr[0] = x_32;
+  data.arr[1] = x_32;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_35 = data.arr[1];
+  if ((x_35 > 1.0f)) {
+    float x_43_phi = 0.0f;
+    int const x_39 = int(x_32);
+    x_43_phi = 0.0f;
+    switch(x_39) {
+      case 0: {
+        x_43_phi = 1.0f;
+        /* fallthrough */
+      }
+      case 1: {
+        float const x_43 = x_43_phi;
+        data.arr[x_39] = x_43;
+        *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..a5e407d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.spvasm
@@ -0,0 +1,120 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %x_32 "x_32"
+               OpName %x_43_phi "x_43_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_2 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Function__arr_float_uint_2 = OpTypePointer Function %_arr_float_uint_2
+         %21 = OpConstantNull %_arr_float_uint_2
+%_ptr_Function_float = OpTypePointer Function %float
+         %24 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %bool = OpTypeBool
+         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_2 Function %21
+       %x_32 = OpVariable %_ptr_Function_float Function %24
+   %x_43_phi = OpVariable %_ptr_Function_float Function %24
+         %27 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %28 = OpLoad %float %27
+               OpStore %x_32 %28
+         %31 = OpAccessChain %_ptr_Function_float %data %int_0
+         %32 = OpLoad %float %x_32
+               OpStore %31 %32
+         %34 = OpAccessChain %_ptr_Function_float %data %int_1
+         %35 = OpLoad %float %x_32
+               OpStore %34 %35
+               OpStore %x_GLF_color %38
+         %39 = OpAccessChain %_ptr_Function_float %data %int_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThan %bool %40 %float_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+         %47 = OpLoad %float %x_32
+         %46 = OpConvertFToS %int %47
+               OpStore %x_43_phi %float_0
+               OpSelectionMerge %48 None
+               OpSwitch %46 %49 0 %50 1 %51
+         %50 = OpLabel
+               OpStore %x_43_phi %float_1
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpLoad %float %x_43_phi
+         %53 = OpAccessChain %_ptr_Function_float %data %46
+               OpStore %53 %52
+               OpStore %x_GLF_color %54
+               OpBranch %48
+         %49 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..71828f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 2>;
+  var x_32 : f32;
+  x_32 = x_6.injectionSwitch.x;
+  data[0] = x_32;
+  let x_34 : ptr<function, f32> = &(data[1]);
+  *(x_34) = x_32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_35 : f32 = *(x_34);
+  if ((x_35 > 1.0)) {
+    var x_43_phi : f32;
+    let x_39 : i32 = i32(x_32);
+    x_43_phi = 0.0;
+    switch(x_39) {
+      case 0: {
+        x_43_phi = 1.0;
+        fallthrough;
+      }
+      case 1: {
+        let x_43 : f32 = x_43_phi;
+        data[x_39] = x_43;
+        x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      }
+      default: {
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm
new file mode 100644
index 0000000..e901276
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm
@@ -0,0 +1,275 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+   %float_n1 = OpConstant %float -1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+      %int_4 = OpConstant %int 4
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+         %36 = OpUndef %int
+       %main = OpFunction %void None %8
+         %37 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %40 %float_n1
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpPhi %bool %false %38 %46 %47
+         %48 = OpPhi %int %int_0 %38 %49 %47
+         %50 = OpPhi %int %36 %38 %51 %47
+         %52 = OpPhi %int %int_0 %38 %53 %47
+         %54 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %55 = OpLoad %float %54
+         %56 = OpFOrdGreaterThan %bool %55 %float_n1
+         %57 = OpSelect %int %56 %int_10 %int_100
+         %58 = OpSLessThan %bool %52 %57
+               OpLoopMerge %59 %47 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpPhi %int %48 %60 %63 %64
+         %65 = OpPhi %int %50 %60 %66 %64
+         %67 = OpPhi %int %int_0 %60 %68 %64
+         %69 = OpSLessThan %bool %67 %int_2
+               OpLoopMerge %70 %64 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %77 = OpLoad %float %76
+         %78 = OpFOrdLessThan %bool %77 %float_n1
+         %79 = OpFOrdLessThan %bool %40 %float_0
+         %80 = OpLogicalNot %bool %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+               OpSelectionMerge %83 None
+               OpBranchConditional %78 %84 %83
+         %84 = OpLabel
+               OpBranch %73
+         %83 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+         %86 = OpPhi %int %int_1 %83 %87 %88
+         %89 = OpSLessThan %bool %86 %int_3
+               OpLoopMerge %90 %88 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+               OpSelectionMerge %92 None
+               OpBranchConditional %78 %93 %92
+         %93 = OpLabel
+               OpBranch %88
+         %92 = OpLabel
+         %94 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+               OpBranch %90
+         %95 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+         %87 = OpIAdd %int %86 %int_1
+               OpBranch %85
+         %90 = OpLabel
+         %97 = OpPhi %int %65 %85 %int_1 %96
+         %98 = OpPhi %bool %false %85 %true %96
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %73 %99
+         %99 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+               OpBranch %73
+         %74 = OpLabel
+               OpBranch %72
+         %73 = OpLabel
+         %66 = OpPhi %int %int_0 %84 %97 %90 %int_0 %81
+         %63 = OpIAdd %int %62 %66
+               OpSelectionMerge %100 None
+               OpBranchConditional %41 %101 %100
+        %101 = OpLabel
+               OpBranch %102
+        %102 = OpLabel
+               OpLoopMerge %103 %104 None
+               OpBranchConditional %41 %104 %103
+        %104 = OpLabel
+        %105 = OpConvertSToF %float %52
+        %106 = OpCompositeConstruct %v4float %105 %105 %105 %105
+               OpStore %_GLF_color %106
+               OpBranch %102
+        %103 = OpLabel
+               OpBranch %70
+        %100 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+         %68 = OpIAdd %int %67 %int_1
+               OpBranch %61
+         %70 = OpLabel
+         %51 = OpPhi %int %65 %61 %66 %103
+         %49 = OpPhi %int %62 %61 %63 %103
+         %46 = OpPhi %bool %45 %61 %true %103
+               OpSelectionMerge %107 None
+               OpBranchConditional %46 %59 %107
+        %107 = OpLabel
+        %108 = OpLogicalNot %bool %41
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+               OpBranch %59
+        %109 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+         %53 = OpIAdd %int %52 %int_1
+               OpBranch %44
+         %59 = OpLabel
+        %111 = OpPhi %int %48 %44 %49 %70 %49 %110
+        %112 = OpPhi %bool %45 %44 %46 %70 %46 %110
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %42 %113
+        %113 = OpLabel
+               OpBranch %114
+        %114 = OpLabel
+        %115 = OpPhi %int %111 %113 %116 %117
+        %118 = OpPhi %int %36 %113 %119 %117
+        %120 = OpPhi %int %int_0 %113 %121 %117
+        %122 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %123 = OpLoad %float %122
+        %124 = OpFAdd %float %123 %float_1
+        %125 = OpConvertFToS %int %124
+        %126 = OpSLessThan %bool %120 %125
+               OpLoopMerge %127 %117 None
+               OpBranchConditional %126 %128 %127
+        %128 = OpLabel
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %134 = OpLoad %float %133
+        %135 = OpFOrdLessThan %bool %134 %float_n1
+        %136 = OpFOrdLessThan %bool %40 %float_0
+        %137 = OpLogicalNot %bool %136
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+               OpSelectionMerge %140 None
+               OpBranchConditional %135 %141 %140
+        %141 = OpLabel
+               OpBranch %130
+        %140 = OpLabel
+               OpBranch %142
+        %142 = OpLabel
+        %143 = OpPhi %int %int_1 %140 %144 %145
+        %146 = OpSLessThan %bool %143 %int_3
+               OpLoopMerge %147 %145 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+               OpSelectionMerge %149 None
+               OpBranchConditional %135 %150 %149
+        %150 = OpLabel
+               OpBranch %145
+        %149 = OpLabel
+        %151 = OpSGreaterThan %bool %143 %int_0
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %152
+        %153 = OpLabel
+               OpBranch %147
+        %152 = OpLabel
+               OpBranch %145
+        %145 = OpLabel
+        %144 = OpIAdd %int %143 %int_1
+               OpBranch %142
+        %147 = OpLabel
+        %154 = OpPhi %int %118 %142 %int_1 %153
+        %155 = OpPhi %bool %false %142 %true %153
+               OpSelectionMerge %156 None
+               OpBranchConditional %155 %130 %156
+        %156 = OpLabel
+               OpBranch %138
+        %138 = OpLabel
+               OpBranch %130
+        %131 = OpLabel
+               OpBranch %129
+        %130 = OpLabel
+        %119 = OpPhi %int %int_0 %141 %154 %147 %int_0 %138
+        %116 = OpIAdd %int %115 %119
+        %157 = OpLogicalNot %bool %41
+        %158 = OpSelect %bool %157 %false %41
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %159
+        %160 = OpLabel
+               OpBranch %127
+        %159 = OpLabel
+               OpBranch %117
+        %117 = OpLabel
+        %121 = OpIAdd %int %120 %int_1
+               OpBranch %114
+        %127 = OpLabel
+        %161 = OpPhi %int %115 %114 %116 %160
+        %162 = OpIEqual %bool %161 %int_4
+               OpSelectionMerge %163 None
+               OpBranchConditional %162 %164 %165
+        %165 = OpLabel
+               OpStore %_GLF_color %33
+               OpBranch %163
+        %164 = OpLabel
+               OpStore %_GLF_color %32
+               OpBranch %163
+        %163 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %38
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..f57ad42
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.hlsl
@@ -0,0 +1,276 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  while (true) {
+    bool x_45 = false;
+    int x_48 = 0;
+    int x_49 = 0;
+    bool x_46 = false;
+    int x_115 = 0;
+    int x_116 = 0;
+    bool x_45_phi = false;
+    int x_48_phi = 0;
+    int x_50_phi = 0;
+    int x_52_phi = 0;
+    int x_111_phi = 0;
+    bool x_112_phi = false;
+    int x_115_phi = 0;
+    int x_118_phi = 0;
+    int x_120_phi = 0;
+    int x_161_phi = 0;
+    const float x_40 = asfloat(x_6[0].x);
+    const bool x_41 = (x_40 < -1.0f);
+    x_45_phi = false;
+    x_48_phi = 0;
+    x_50_phi = 0;
+    x_52_phi = 0;
+    while (true) {
+      int x_62 = 0;
+      int x_65 = 0;
+      int x_66 = 0;
+      int x_63 = 0;
+      int x_53 = 0;
+      int x_62_phi = 0;
+      int x_65_phi = 0;
+      int x_67_phi = 0;
+      int x_51_phi = 0;
+      int x_49_phi = 0;
+      bool x_46_phi = false;
+      x_45 = x_45_phi;
+      x_48 = x_48_phi;
+      const int x_50 = x_50_phi;
+      const int x_52 = x_52_phi;
+      const float x_55 = gl_FragCoord.y;
+      x_111_phi = x_48;
+      x_112_phi = x_45;
+      if ((x_52 < ((x_55 > -1.0f) ? 10 : 100))) {
+      } else {
+        break;
+      }
+      x_62_phi = x_48;
+      x_65_phi = x_50;
+      x_67_phi = 0;
+      while (true) {
+        int x_97 = 0;
+        int x_68 = 0;
+        int x_66_phi = 0;
+        x_62 = x_62_phi;
+        x_65 = x_65_phi;
+        const int x_67 = x_67_phi;
+        x_51_phi = x_65;
+        x_49_phi = x_62;
+        x_46_phi = x_45;
+        if ((x_67 < 2)) {
+        } else {
+          break;
+        }
+        while (true) {
+          bool x_78 = false;
+          int x_86_phi = 0;
+          int x_97_phi = 0;
+          bool x_98_phi = false;
+          const float x_77 = gl_FragCoord.x;
+          x_78 = (x_77 < -1.0f);
+          if (!((x_40 < 0.0f))) {
+            if (x_78) {
+              x_66_phi = 0;
+              break;
+            }
+            x_86_phi = 1;
+            while (true) {
+              int x_87 = 0;
+              const int x_86 = x_86_phi;
+              x_97_phi = x_65;
+              x_98_phi = false;
+              if ((x_86 < 3)) {
+              } else {
+                break;
+              }
+              if (x_78) {
+                {
+                  x_87 = (x_86 + 1);
+                  x_86_phi = x_87;
+                }
+                continue;
+              }
+              if ((x_86 > 0)) {
+                x_97_phi = 1;
+                x_98_phi = true;
+                break;
+              }
+              {
+                x_87 = (x_86 + 1);
+                x_86_phi = x_87;
+              }
+            }
+            x_97 = x_97_phi;
+            const bool x_98 = x_98_phi;
+            x_66_phi = x_97;
+            if (x_98) {
+              break;
+            }
+          }
+          x_66_phi = 0;
+          break;
+        }
+        x_66 = x_66_phi;
+        x_63 = asint((x_62 + x_66));
+        if (x_41) {
+          while (true) {
+            if (x_41) {
+            } else {
+              break;
+            }
+            {
+              const float x_105 = float(x_52);
+              x_GLF_color = float4(x_105, x_105, x_105, x_105);
+            }
+          }
+          x_51_phi = x_66;
+          x_49_phi = x_63;
+          x_46_phi = true;
+          break;
+        }
+        {
+          x_68 = (x_67 + 1);
+          x_62_phi = x_63;
+          x_65_phi = x_66;
+          x_67_phi = x_68;
+        }
+      }
+      const int x_51 = x_51_phi;
+      x_49 = x_49_phi;
+      x_46 = x_46_phi;
+      x_111_phi = x_49;
+      x_112_phi = x_46;
+      if (x_46) {
+        break;
+      }
+      if (!(x_41)) {
+        x_111_phi = x_49;
+        x_112_phi = x_46;
+        break;
+      }
+      {
+        x_53 = (x_52 + 1);
+        x_45_phi = x_46;
+        x_48_phi = x_49;
+        x_50_phi = x_51;
+        x_52_phi = x_53;
+      }
+    }
+    const int x_111 = x_111_phi;
+    if (x_112_phi) {
+      break;
+    }
+    x_115_phi = x_111;
+    x_118_phi = 0;
+    x_120_phi = 0;
+    while (true) {
+      int x_154 = 0;
+      int x_121 = 0;
+      int x_119_phi = 0;
+      x_115 = x_115_phi;
+      const int x_118 = x_118_phi;
+      const int x_120 = x_120_phi;
+      const float x_123 = asfloat(x_6[0].y);
+      x_161_phi = x_115;
+      if ((x_120 < int((x_123 + 1.0f)))) {
+      } else {
+        break;
+      }
+      while (true) {
+        bool x_135 = false;
+        int x_143_phi = 0;
+        int x_154_phi = 0;
+        bool x_155_phi = false;
+        const float x_134 = gl_FragCoord.x;
+        x_135 = (x_134 < -1.0f);
+        if (!((x_40 < 0.0f))) {
+          if (x_135) {
+            x_119_phi = 0;
+            break;
+          }
+          x_143_phi = 1;
+          while (true) {
+            int x_144 = 0;
+            const int x_143 = x_143_phi;
+            x_154_phi = x_118;
+            x_155_phi = false;
+            if ((x_143 < 3)) {
+            } else {
+              break;
+            }
+            if (x_135) {
+              {
+                x_144 = (x_143 + 1);
+                x_143_phi = x_144;
+              }
+              continue;
+            }
+            if ((x_143 > 0)) {
+              x_154_phi = 1;
+              x_155_phi = true;
+              break;
+            }
+            {
+              x_144 = (x_143 + 1);
+              x_143_phi = x_144;
+            }
+          }
+          x_154 = x_154_phi;
+          const bool x_155 = x_155_phi;
+          x_119_phi = x_154;
+          if (x_155) {
+            break;
+          }
+        }
+        x_119_phi = 0;
+        break;
+      }
+      int x_119 = 0;
+      x_119 = x_119_phi;
+      x_116 = asint((x_115 + x_119));
+      if ((!(x_41) ? false : x_41)) {
+        x_161_phi = x_116;
+        break;
+      }
+      {
+        x_121 = (x_120 + 1);
+        x_115_phi = x_116;
+        x_118_phi = x_119;
+        x_120_phi = x_121;
+      }
+    }
+    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);
+    }
+    break;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.msl
new file mode 100644
index 0000000..f21f0fa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.msl
@@ -0,0 +1,277 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  while (true) {
+    bool x_45 = false;
+    int x_48 = 0;
+    int x_49 = 0;
+    bool x_46 = false;
+    int x_115 = 0;
+    int x_116 = 0;
+    bool x_45_phi = false;
+    int x_48_phi = 0;
+    int x_50_phi = 0;
+    int x_52_phi = 0;
+    int x_111_phi = 0;
+    bool x_112_phi = false;
+    int x_115_phi = 0;
+    int x_118_phi = 0;
+    int x_120_phi = 0;
+    int x_161_phi = 0;
+    float const x_40 = x_6.injectionSwitch.x;
+    bool const x_41 = (x_40 < -1.0f);
+    x_45_phi = false;
+    x_48_phi = 0;
+    x_50_phi = 0;
+    x_52_phi = 0;
+    while (true) {
+      int x_62 = 0;
+      int x_65 = 0;
+      int x_66 = 0;
+      int x_63 = 0;
+      int x_53 = 0;
+      int x_62_phi = 0;
+      int x_65_phi = 0;
+      int x_67_phi = 0;
+      int x_51_phi = 0;
+      int x_49_phi = 0;
+      bool x_46_phi = false;
+      x_45 = x_45_phi;
+      x_48 = x_48_phi;
+      int const x_50 = x_50_phi;
+      int const x_52 = x_52_phi;
+      float const x_55 = (*(tint_symbol_5)).y;
+      x_111_phi = x_48;
+      x_112_phi = x_45;
+      if ((x_52 < select(100, 10, (x_55 > -1.0f)))) {
+      } else {
+        break;
+      }
+      x_62_phi = x_48;
+      x_65_phi = x_50;
+      x_67_phi = 0;
+      while (true) {
+        int x_97 = 0;
+        int x_68 = 0;
+        int x_66_phi = 0;
+        x_62 = x_62_phi;
+        x_65 = x_65_phi;
+        int const x_67 = x_67_phi;
+        x_51_phi = x_65;
+        x_49_phi = x_62;
+        x_46_phi = x_45;
+        if ((x_67 < 2)) {
+        } else {
+          break;
+        }
+        while (true) {
+          bool x_78 = false;
+          int x_86_phi = 0;
+          int x_97_phi = 0;
+          bool x_98_phi = false;
+          float const x_77 = (*(tint_symbol_5)).x;
+          x_78 = (x_77 < -1.0f);
+          if (!((x_40 < 0.0f))) {
+            if (x_78) {
+              x_66_phi = 0;
+              break;
+            }
+            x_86_phi = 1;
+            while (true) {
+              int x_87 = 0;
+              int const x_86 = x_86_phi;
+              x_97_phi = x_65;
+              x_98_phi = false;
+              if ((x_86 < 3)) {
+              } else {
+                break;
+              }
+              if (x_78) {
+                {
+                  x_87 = (x_86 + 1);
+                  x_86_phi = x_87;
+                }
+                continue;
+              }
+              if ((x_86 > 0)) {
+                x_97_phi = 1;
+                x_98_phi = true;
+                break;
+              }
+              {
+                x_87 = (x_86 + 1);
+                x_86_phi = x_87;
+              }
+            }
+            x_97 = x_97_phi;
+            bool const x_98 = x_98_phi;
+            x_66_phi = x_97;
+            if (x_98) {
+              break;
+            }
+          }
+          x_66_phi = 0;
+          break;
+        }
+        x_66 = x_66_phi;
+        x_63 = as_type<int>((x_62 + x_66));
+        if (x_41) {
+          while (true) {
+            if (x_41) {
+            } else {
+              break;
+            }
+            {
+              float const x_105 = float(x_52);
+              *(tint_symbol_6) = float4(x_105, x_105, x_105, x_105);
+            }
+          }
+          x_51_phi = x_66;
+          x_49_phi = x_63;
+          x_46_phi = true;
+          break;
+        }
+        {
+          x_68 = (x_67 + 1);
+          x_62_phi = x_63;
+          x_65_phi = x_66;
+          x_67_phi = x_68;
+        }
+      }
+      int const x_51 = x_51_phi;
+      x_49 = x_49_phi;
+      x_46 = x_46_phi;
+      x_111_phi = x_49;
+      x_112_phi = x_46;
+      if (x_46) {
+        break;
+      }
+      if (!(x_41)) {
+        x_111_phi = x_49;
+        x_112_phi = x_46;
+        break;
+      }
+      {
+        x_53 = (x_52 + 1);
+        x_45_phi = x_46;
+        x_48_phi = x_49;
+        x_50_phi = x_51;
+        x_52_phi = x_53;
+      }
+    }
+    int const x_111 = x_111_phi;
+    bool const x_112 = x_112_phi;
+    if (x_112) {
+      break;
+    }
+    x_115_phi = x_111;
+    x_118_phi = 0;
+    x_120_phi = 0;
+    while (true) {
+      int x_154 = 0;
+      int x_121 = 0;
+      int x_119_phi = 0;
+      x_115 = x_115_phi;
+      int const x_118 = x_118_phi;
+      int const x_120 = x_120_phi;
+      float const x_123 = x_6.injectionSwitch.y;
+      x_161_phi = x_115;
+      if ((x_120 < int((x_123 + 1.0f)))) {
+      } else {
+        break;
+      }
+      while (true) {
+        bool x_135 = false;
+        int x_143_phi = 0;
+        int x_154_phi = 0;
+        bool x_155_phi = false;
+        float const x_134 = (*(tint_symbol_5)).x;
+        x_135 = (x_134 < -1.0f);
+        if (!((x_40 < 0.0f))) {
+          if (x_135) {
+            x_119_phi = 0;
+            break;
+          }
+          x_143_phi = 1;
+          while (true) {
+            int x_144 = 0;
+            int const x_143 = x_143_phi;
+            x_154_phi = x_118;
+            x_155_phi = false;
+            if ((x_143 < 3)) {
+            } else {
+              break;
+            }
+            if (x_135) {
+              {
+                x_144 = (x_143 + 1);
+                x_143_phi = x_144;
+              }
+              continue;
+            }
+            if ((x_143 > 0)) {
+              x_154_phi = 1;
+              x_155_phi = true;
+              break;
+            }
+            {
+              x_144 = (x_143 + 1);
+              x_143_phi = x_144;
+            }
+          }
+          x_154 = x_154_phi;
+          bool const x_155 = x_155_phi;
+          x_119_phi = x_154;
+          if (x_155) {
+            break;
+          }
+        }
+        x_119_phi = 0;
+        break;
+      }
+      int x_119 = 0;
+      x_119 = x_119_phi;
+      x_116 = as_type<int>((x_115 + x_119));
+      if (select(x_41, false, !(x_41))) {
+        x_161_phi = x_116;
+        break;
+      }
+      {
+        x_121 = (x_120 + 1);
+        x_115_phi = x_116;
+        x_118_phi = x_119;
+        x_120_phi = x_121;
+      }
+    }
+    int const x_161 = x_161_phi;
+    if ((x_161 == 4)) {
+      *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    } else {
+      *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    }
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..5bea6cc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.spvasm
@@ -0,0 +1,566 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 292
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_45 "x_45"
+               OpName %x_48 "x_48"
+               OpName %x_49 "x_49"
+               OpName %x_46 "x_46"
+               OpName %x_115 "x_115"
+               OpName %x_116 "x_116"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %x_50_phi "x_50_phi"
+               OpName %x_52_phi "x_52_phi"
+               OpName %x_111_phi "x_111_phi"
+               OpName %x_112_phi "x_112_phi"
+               OpName %x_115_phi "x_115_phi"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_120_phi "x_120_phi"
+               OpName %x_161_phi "x_161_phi"
+               OpName %x_62 "x_62"
+               OpName %x_65 "x_65"
+               OpName %x_66 "x_66"
+               OpName %x_63 "x_63"
+               OpName %x_53 "x_53"
+               OpName %x_62_phi "x_62_phi"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_67_phi "x_67_phi"
+               OpName %x_51_phi "x_51_phi"
+               OpName %x_49_phi "x_49_phi"
+               OpName %x_46_phi "x_46_phi"
+               OpName %x_97 "x_97"
+               OpName %x_68 "x_68"
+               OpName %x_66_phi "x_66_phi"
+               OpName %x_78 "x_78"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_97_phi "x_97_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_87 "x_87"
+               OpName %x_154 "x_154"
+               OpName %x_121 "x_121"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_135 "x_135"
+               OpName %x_143_phi "x_143_phi"
+               OpName %x_154_phi "x_154_phi"
+               OpName %x_155_phi "x_155_phi"
+               OpName %x_144 "x_144"
+               OpName %x_119 "x_119"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %26 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_2 = OpConstant %int 2
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+      %int_4 = OpConstant %int 4
+        %277 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %278 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %279 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_45 = OpVariable %_ptr_Function_bool Function %26
+       %x_48 = OpVariable %_ptr_Function_int Function %30
+       %x_49 = OpVariable %_ptr_Function_int Function %30
+       %x_46 = OpVariable %_ptr_Function_bool Function %26
+      %x_115 = OpVariable %_ptr_Function_int Function %30
+      %x_116 = OpVariable %_ptr_Function_int Function %30
+   %x_45_phi = OpVariable %_ptr_Function_bool Function %26
+   %x_48_phi = OpVariable %_ptr_Function_int Function %30
+   %x_50_phi = OpVariable %_ptr_Function_int Function %30
+   %x_52_phi = OpVariable %_ptr_Function_int Function %30
+  %x_111_phi = OpVariable %_ptr_Function_int Function %30
+  %x_112_phi = OpVariable %_ptr_Function_bool Function %26
+  %x_115_phi = OpVariable %_ptr_Function_int Function %30
+  %x_118_phi = OpVariable %_ptr_Function_int Function %30
+  %x_120_phi = OpVariable %_ptr_Function_int Function %30
+  %x_161_phi = OpVariable %_ptr_Function_int Function %30
+       %x_62 = OpVariable %_ptr_Function_int Function %30
+       %x_65 = OpVariable %_ptr_Function_int Function %30
+       %x_66 = OpVariable %_ptr_Function_int Function %30
+       %x_63 = OpVariable %_ptr_Function_int Function %30
+       %x_53 = OpVariable %_ptr_Function_int Function %30
+   %x_62_phi = OpVariable %_ptr_Function_int Function %30
+   %x_65_phi = OpVariable %_ptr_Function_int Function %30
+   %x_67_phi = OpVariable %_ptr_Function_int Function %30
+   %x_51_phi = OpVariable %_ptr_Function_int Function %30
+   %x_49_phi = OpVariable %_ptr_Function_int Function %30
+   %x_46_phi = OpVariable %_ptr_Function_bool Function %26
+       %x_97 = OpVariable %_ptr_Function_int Function %30
+       %x_68 = OpVariable %_ptr_Function_int Function %30
+   %x_66_phi = OpVariable %_ptr_Function_int Function %30
+       %x_78 = OpVariable %_ptr_Function_bool Function %26
+   %x_86_phi = OpVariable %_ptr_Function_int Function %30
+   %x_97_phi = OpVariable %_ptr_Function_int Function %30
+   %x_98_phi = OpVariable %_ptr_Function_bool Function %26
+       %x_87 = OpVariable %_ptr_Function_int Function %30
+      %x_154 = OpVariable %_ptr_Function_int Function %30
+      %x_121 = OpVariable %_ptr_Function_int Function %30
+  %x_119_phi = OpVariable %_ptr_Function_int Function %30
+      %x_135 = OpVariable %_ptr_Function_bool Function %26
+  %x_143_phi = OpVariable %_ptr_Function_int Function %30
+  %x_154_phi = OpVariable %_ptr_Function_int Function %30
+  %x_155_phi = OpVariable %_ptr_Function_bool Function %26
+      %x_144 = OpVariable %_ptr_Function_int Function %30
+      %x_119 = OpVariable %_ptr_Function_int Function %30
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %49 = OpLoad %float %48
+         %51 = OpFOrdLessThan %bool %49 %float_n1
+               OpStore %x_45_phi %false
+               OpStore %x_48_phi %int_0
+               OpStore %x_50_phi %int_0
+               OpStore %x_52_phi %int_0
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %69 = OpLoad %bool %x_45_phi
+               OpStore %x_45 %69
+         %70 = OpLoad %int %x_48_phi
+               OpStore %x_48 %70
+         %71 = OpLoad %int %x_50_phi
+         %72 = OpLoad %int %x_52_phi
+         %75 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %76 = OpLoad %float %75
+         %77 = OpLoad %int %x_48
+               OpStore %x_111_phi %77
+         %78 = OpLoad %bool %x_45
+               OpStore %x_112_phi %78
+         %80 = OpFOrdGreaterThan %bool %76 %float_n1
+         %79 = OpSelect %int %80 %int_10 %int_100
+         %83 = OpSLessThan %bool %72 %79
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %55
+         %84 = OpLabel
+         %87 = OpLoad %int %x_48
+               OpStore %x_62_phi %87
+               OpStore %x_65_phi %71
+               OpStore %x_67_phi %int_0
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %95 = OpLoad %int %x_62_phi
+               OpStore %x_62 %95
+         %96 = OpLoad %int %x_65_phi
+               OpStore %x_65 %96
+         %97 = OpLoad %int %x_67_phi
+         %98 = OpLoad %int %x_65
+               OpStore %x_51_phi %98
+         %99 = OpLoad %int %x_62
+               OpStore %x_49_phi %99
+        %100 = OpLoad %bool %x_45
+               OpStore %x_46_phi %100
+        %102 = OpSLessThan %bool %97 %int_2
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+               OpBranch %103
+        %105 = OpLabel
+               OpBranch %89
+        %103 = OpLabel
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %114 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %115 = OpLoad %float %114
+        %116 = OpFOrdLessThan %bool %115 %float_n1
+               OpStore %x_78 %116
+        %119 = OpFOrdLessThan %bool %49 %float_0
+        %117 = OpLogicalNot %bool %119
+               OpSelectionMerge %120 None
+               OpBranchConditional %117 %121 %120
+        %121 = OpLabel
+        %122 = OpLoad %bool %x_78
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %123
+        %124 = OpLabel
+               OpStore %x_66_phi %int_0
+               OpBranch %107
+        %123 = OpLabel
+               OpStore %x_86_phi %int_1
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %131 = OpLoad %int %x_86_phi
+        %132 = OpLoad %int %x_65
+               OpStore %x_97_phi %132
+               OpStore %x_98_phi %false
+        %134 = OpSLessThan %bool %131 %int_3
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %127
+        %135 = OpLabel
+        %138 = OpLoad %bool %x_78
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+               OpBranch %128
+        %139 = OpLabel
+        %141 = OpSGreaterThan %bool %131 %int_0
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %142
+        %143 = OpLabel
+               OpStore %x_97_phi %int_1
+               OpStore %x_98_phi %true
+               OpBranch %127
+        %142 = OpLabel
+               OpBranch %128
+        %128 = OpLabel
+        %145 = OpIAdd %int %131 %int_1
+               OpStore %x_87 %145
+        %146 = OpLoad %int %x_87
+               OpStore %x_86_phi %146
+               OpBranch %126
+        %127 = OpLabel
+        %147 = OpLoad %int %x_97_phi
+               OpStore %x_97 %147
+        %148 = OpLoad %bool %x_98_phi
+        %149 = OpLoad %int %x_97
+               OpStore %x_66_phi %149
+               OpSelectionMerge %150 None
+               OpBranchConditional %148 %151 %150
+        %151 = OpLabel
+               OpBranch %107
+        %150 = OpLabel
+               OpBranch %120
+        %120 = OpLabel
+               OpStore %x_66_phi %int_0
+               OpBranch %107
+        %108 = OpLabel
+               OpBranch %106
+        %107 = OpLabel
+        %152 = OpLoad %int %x_66_phi
+               OpStore %x_66 %152
+        %154 = OpLoad %int %x_62
+        %155 = OpLoad %int %x_66
+        %156 = OpIAdd %int %154 %155
+        %153 = OpCopyObject %int %156
+               OpStore %x_63 %153
+               OpSelectionMerge %157 None
+               OpBranchConditional %51 %158 %157
+        %158 = OpLabel
+               OpBranch %159
+        %159 = OpLabel
+               OpLoopMerge %160 %161 None
+               OpBranch %162
+        %162 = OpLabel
+               OpSelectionMerge %163 None
+               OpBranchConditional %51 %164 %165
+        %164 = OpLabel
+               OpBranch %163
+        %165 = OpLabel
+               OpBranch %160
+        %163 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+        %166 = OpConvertSToF %float %72
+        %167 = OpCompositeConstruct %v4float %166 %166 %166 %166
+               OpStore %x_GLF_color %167
+               OpBranch %159
+        %160 = OpLabel
+        %168 = OpLoad %int %x_66
+               OpStore %x_51_phi %168
+        %169 = OpLoad %int %x_63
+               OpStore %x_49_phi %169
+               OpStore %x_46_phi %true
+               OpBranch %89
+        %157 = OpLabel
+               OpBranch %90
+         %90 = OpLabel
+        %170 = OpIAdd %int %97 %int_1
+               OpStore %x_68 %170
+        %171 = OpLoad %int %x_63
+               OpStore %x_62_phi %171
+        %172 = OpLoad %int %x_66
+               OpStore %x_65_phi %172
+        %173 = OpLoad %int %x_68
+               OpStore %x_67_phi %173
+               OpBranch %88
+         %89 = OpLabel
+        %174 = OpLoad %int %x_51_phi
+        %175 = OpLoad %int %x_49_phi
+               OpStore %x_49 %175
+        %176 = OpLoad %bool %x_46_phi
+               OpStore %x_46 %176
+        %177 = OpLoad %int %x_49
+               OpStore %x_111_phi %177
+        %178 = OpLoad %bool %x_46
+               OpStore %x_112_phi %178
+        %179 = OpLoad %bool %x_46
+               OpSelectionMerge %180 None
+               OpBranchConditional %179 %181 %180
+        %181 = OpLabel
+               OpBranch %55
+        %180 = OpLabel
+        %182 = OpLogicalNot %bool %51
+               OpSelectionMerge %183 None
+               OpBranchConditional %182 %184 %183
+        %184 = OpLabel
+        %185 = OpLoad %int %x_49
+               OpStore %x_111_phi %185
+        %186 = OpLoad %bool %x_46
+               OpStore %x_112_phi %186
+               OpBranch %55
+        %183 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+        %187 = OpIAdd %int %72 %int_1
+               OpStore %x_53 %187
+        %188 = OpLoad %bool %x_46
+               OpStore %x_45_phi %188
+        %189 = OpLoad %int %x_49
+               OpStore %x_48_phi %189
+               OpStore %x_50_phi %174
+        %190 = OpLoad %int %x_53
+               OpStore %x_52_phi %190
+               OpBranch %54
+         %55 = OpLabel
+        %191 = OpLoad %int %x_111_phi
+        %192 = OpLoad %bool %x_112_phi
+               OpSelectionMerge %193 None
+               OpBranchConditional %192 %194 %193
+        %194 = OpLabel
+               OpBranch %20
+        %193 = OpLabel
+               OpStore %x_115_phi %191
+               OpStore %x_118_phi %int_0
+               OpStore %x_120_phi %int_0
+               OpBranch %195
+        %195 = OpLabel
+               OpLoopMerge %196 %197 None
+               OpBranch %198
+        %198 = OpLabel
+        %202 = OpLoad %int %x_115_phi
+               OpStore %x_115 %202
+        %203 = OpLoad %int %x_118_phi
+        %204 = OpLoad %int %x_120_phi
+        %205 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %206 = OpLoad %float %205
+        %207 = OpLoad %int %x_115
+               OpStore %x_161_phi %207
+        %210 = OpFAdd %float %206 %float_1
+        %208 = OpConvertFToS %int %210
+        %211 = OpSLessThan %bool %204 %208
+               OpSelectionMerge %212 None
+               OpBranchConditional %211 %213 %214
+        %213 = OpLabel
+               OpBranch %212
+        %214 = OpLabel
+               OpBranch %196
+        %212 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+               OpLoopMerge %216 %217 None
+               OpBranch %218
+        %218 = OpLabel
+        %223 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %224 = OpLoad %float %223
+        %225 = OpFOrdLessThan %bool %224 %float_n1
+               OpStore %x_135 %225
+        %227 = OpFOrdLessThan %bool %49 %float_0
+        %226 = OpLogicalNot %bool %227
+               OpSelectionMerge %228 None
+               OpBranchConditional %226 %229 %228
+        %229 = OpLabel
+        %230 = OpLoad %bool %x_135
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %231
+        %232 = OpLabel
+               OpStore %x_119_phi %int_0
+               OpBranch %216
+        %231 = OpLabel
+               OpStore %x_143_phi %int_1
+               OpBranch %233
+        %233 = OpLabel
+               OpLoopMerge %234 %235 None
+               OpBranch %236
+        %236 = OpLabel
+        %238 = OpLoad %int %x_143_phi
+               OpStore %x_154_phi %203
+               OpStore %x_155_phi %false
+        %239 = OpSLessThan %bool %238 %int_3
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %242
+        %241 = OpLabel
+               OpBranch %240
+        %242 = OpLabel
+               OpBranch %234
+        %240 = OpLabel
+        %243 = OpLoad %bool %x_135
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+               OpBranch %235
+        %244 = OpLabel
+        %246 = OpSGreaterThan %bool %238 %int_0
+               OpSelectionMerge %247 None
+               OpBranchConditional %246 %248 %247
+        %248 = OpLabel
+               OpStore %x_154_phi %int_1
+               OpStore %x_155_phi %true
+               OpBranch %234
+        %247 = OpLabel
+               OpBranch %235
+        %235 = OpLabel
+        %249 = OpIAdd %int %238 %int_1
+               OpStore %x_144 %249
+        %250 = OpLoad %int %x_144
+               OpStore %x_143_phi %250
+               OpBranch %233
+        %234 = OpLabel
+        %251 = OpLoad %int %x_154_phi
+               OpStore %x_154 %251
+        %252 = OpLoad %bool %x_155_phi
+        %253 = OpLoad %int %x_154
+               OpStore %x_119_phi %253
+               OpSelectionMerge %254 None
+               OpBranchConditional %252 %255 %254
+        %255 = OpLabel
+               OpBranch %216
+        %254 = OpLabel
+               OpBranch %228
+        %228 = OpLabel
+               OpStore %x_119_phi %int_0
+               OpBranch %216
+        %217 = OpLabel
+               OpBranch %215
+        %216 = OpLabel
+        %257 = OpLoad %int %x_119_phi
+               OpStore %x_119 %257
+        %259 = OpLoad %int %x_115
+        %260 = OpLoad %int %x_119
+        %261 = OpIAdd %int %259 %260
+        %258 = OpCopyObject %int %261
+               OpStore %x_116 %258
+        %263 = OpLogicalNot %bool %51
+        %262 = OpSelect %bool %263 %false %51
+               OpSelectionMerge %264 None
+               OpBranchConditional %262 %265 %264
+        %265 = OpLabel
+        %266 = OpLoad %int %x_116
+               OpStore %x_161_phi %266
+               OpBranch %196
+        %264 = OpLabel
+               OpBranch %197
+        %197 = OpLabel
+        %267 = OpIAdd %int %204 %int_1
+               OpStore %x_121 %267
+        %268 = OpLoad %int %x_116
+               OpStore %x_115_phi %268
+        %269 = OpLoad %int %x_119
+               OpStore %x_118_phi %269
+        %270 = OpLoad %int %x_121
+               OpStore %x_120_phi %270
+               OpBranch %195
+        %196 = OpLabel
+        %271 = OpLoad %int %x_161_phi
+        %273 = OpIEqual %bool %271 %int_4
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %276
+        %275 = OpLabel
+               OpStore %x_GLF_color %277
+               OpBranch %274
+        %276 = OpLabel
+               OpStore %x_GLF_color %278
+               OpBranch %274
+        %274 = OpLabel
+               OpBranch %20
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %279
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %283 = OpLabel
+        %284 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %284
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %286 = OpLabel
+        %287 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %287
+        %288 = OpFunctionCall %void %main_1
+        %290 = OpLoad %v4float %x_GLF_color
+        %291 = OpCompositeConstruct %main_out %290
+        %289 = OpFunctionCall %void %tint_symbol_3 %291
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..7b1d980
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.wgsl
@@ -0,0 +1,274 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  loop {
+    var x_45 : bool;
+    var x_48 : i32;
+    var x_49 : i32;
+    var x_46 : bool;
+    var x_115 : i32;
+    var x_116 : i32;
+    var x_45_phi : bool;
+    var x_48_phi : i32;
+    var x_50_phi : i32;
+    var x_52_phi : i32;
+    var x_111_phi : i32;
+    var x_112_phi : bool;
+    var x_115_phi : i32;
+    var x_118_phi : i32;
+    var x_120_phi : i32;
+    var x_161_phi : i32;
+    let x_40 : f32 = x_6.injectionSwitch.x;
+    let x_41 : bool = (x_40 < -1.0);
+    x_45_phi = false;
+    x_48_phi = 0;
+    x_50_phi = 0;
+    x_52_phi = 0;
+    loop {
+      var x_62 : i32;
+      var x_65 : i32;
+      var x_66 : i32;
+      var x_63 : i32;
+      var x_53 : i32;
+      var x_62_phi : i32;
+      var x_65_phi : i32;
+      var x_67_phi : i32;
+      var x_51_phi : i32;
+      var x_49_phi : i32;
+      var x_46_phi : bool;
+      x_45 = x_45_phi;
+      x_48 = x_48_phi;
+      let x_50 : i32 = x_50_phi;
+      let x_52 : i32 = x_52_phi;
+      let x_55 : f32 = gl_FragCoord.y;
+      x_111_phi = x_48;
+      x_112_phi = x_45;
+      if ((x_52 < select(100, 10, (x_55 > -1.0)))) {
+      } else {
+        break;
+      }
+      x_62_phi = x_48;
+      x_65_phi = x_50;
+      x_67_phi = 0;
+      loop {
+        var x_97 : i32;
+        var x_68 : i32;
+        var x_66_phi : i32;
+        x_62 = x_62_phi;
+        x_65 = x_65_phi;
+        let x_67 : i32 = x_67_phi;
+        x_51_phi = x_65;
+        x_49_phi = x_62;
+        x_46_phi = x_45;
+        if ((x_67 < 2)) {
+        } else {
+          break;
+        }
+        loop {
+          var x_78 : bool;
+          var x_86_phi : i32;
+          var x_97_phi : i32;
+          var x_98_phi : bool;
+          let x_77 : f32 = gl_FragCoord.x;
+          x_78 = (x_77 < -1.0);
+          if (!((x_40 < 0.0))) {
+            if (x_78) {
+              x_66_phi = 0;
+              break;
+            }
+            x_86_phi = 1;
+            loop {
+              var x_87 : i32;
+              let x_86 : i32 = x_86_phi;
+              x_97_phi = x_65;
+              x_98_phi = false;
+              if ((x_86 < 3)) {
+              } else {
+                break;
+              }
+              if (x_78) {
+                continue;
+              }
+              if ((x_86 > 0)) {
+                x_97_phi = 1;
+                x_98_phi = true;
+                break;
+              }
+
+              continuing {
+                x_87 = (x_86 + 1);
+                x_86_phi = x_87;
+              }
+            }
+            x_97 = x_97_phi;
+            let x_98 : bool = x_98_phi;
+            x_66_phi = x_97;
+            if (x_98) {
+              break;
+            }
+          }
+          x_66_phi = 0;
+          break;
+        }
+        x_66 = x_66_phi;
+        x_63 = bitcast<i32>((x_62 + x_66));
+        if (x_41) {
+          loop {
+            if (x_41) {
+            } else {
+              break;
+            }
+
+            continuing {
+              let x_105 : f32 = f32(x_52);
+              x_GLF_color = vec4<f32>(x_105, x_105, x_105, x_105);
+            }
+          }
+          x_51_phi = x_66;
+          x_49_phi = x_63;
+          x_46_phi = true;
+          break;
+        }
+
+        continuing {
+          x_68 = (x_67 + 1);
+          x_62_phi = x_63;
+          x_65_phi = x_66;
+          x_67_phi = x_68;
+        }
+      }
+      let x_51 : i32 = x_51_phi;
+      x_49 = x_49_phi;
+      x_46 = x_46_phi;
+      x_111_phi = x_49;
+      x_112_phi = x_46;
+      if (x_46) {
+        break;
+      }
+      if (!(x_41)) {
+        x_111_phi = x_49;
+        x_112_phi = x_46;
+        break;
+      }
+
+      continuing {
+        x_53 = (x_52 + 1);
+        x_45_phi = x_46;
+        x_48_phi = x_49;
+        x_50_phi = x_51;
+        x_52_phi = x_53;
+      }
+    }
+    let x_111 : i32 = x_111_phi;
+    let x_112 : bool = x_112_phi;
+    if (x_112) {
+      break;
+    }
+    x_115_phi = x_111;
+    x_118_phi = 0;
+    x_120_phi = 0;
+    loop {
+      var x_154 : i32;
+      var x_121 : i32;
+      var x_119_phi : i32;
+      x_115 = x_115_phi;
+      let x_118 : i32 = x_118_phi;
+      let x_120 : i32 = x_120_phi;
+      let x_123 : f32 = x_6.injectionSwitch.y;
+      x_161_phi = x_115;
+      if ((x_120 < i32((x_123 + 1.0)))) {
+      } else {
+        break;
+      }
+      loop {
+        var x_135 : bool;
+        var x_143_phi : i32;
+        var x_154_phi : i32;
+        var x_155_phi : bool;
+        let x_134 : f32 = gl_FragCoord.x;
+        x_135 = (x_134 < -1.0);
+        if (!((x_40 < 0.0))) {
+          if (x_135) {
+            x_119_phi = 0;
+            break;
+          }
+          x_143_phi = 1;
+          loop {
+            var x_144 : i32;
+            let x_143 : i32 = x_143_phi;
+            x_154_phi = x_118;
+            x_155_phi = false;
+            if ((x_143 < 3)) {
+            } else {
+              break;
+            }
+            if (x_135) {
+              continue;
+            }
+            if ((x_143 > 0)) {
+              x_154_phi = 1;
+              x_155_phi = true;
+              break;
+            }
+
+            continuing {
+              x_144 = (x_143 + 1);
+              x_143_phi = x_144;
+            }
+          }
+          x_154 = x_154_phi;
+          let x_155 : bool = x_155_phi;
+          x_119_phi = x_154;
+          if (x_155) {
+            break;
+          }
+        }
+        x_119_phi = 0;
+        break;
+      }
+      var x_119 : i32;
+      x_119 = x_119_phi;
+      x_116 = bitcast<i32>((x_115 + x_119));
+      if (select(x_41, false, !(x_41))) {
+        x_161_phi = x_116;
+        break;
+      }
+
+      continuing {
+        x_121 = (x_120 + 1);
+        x_115_phi = x_116;
+        x_118_phi = x_119;
+        x_120_phi = x_121;
+      }
+    }
+    let x_161 : i32 = x_161_phi;
+    if ((x_161 == 4)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    } else {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    }
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
new file mode 100644
index 0000000..7b1d980
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
@@ -0,0 +1,274 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  loop {
+    var x_45 : bool;
+    var x_48 : i32;
+    var x_49 : i32;
+    var x_46 : bool;
+    var x_115 : i32;
+    var x_116 : i32;
+    var x_45_phi : bool;
+    var x_48_phi : i32;
+    var x_50_phi : i32;
+    var x_52_phi : i32;
+    var x_111_phi : i32;
+    var x_112_phi : bool;
+    var x_115_phi : i32;
+    var x_118_phi : i32;
+    var x_120_phi : i32;
+    var x_161_phi : i32;
+    let x_40 : f32 = x_6.injectionSwitch.x;
+    let x_41 : bool = (x_40 < -1.0);
+    x_45_phi = false;
+    x_48_phi = 0;
+    x_50_phi = 0;
+    x_52_phi = 0;
+    loop {
+      var x_62 : i32;
+      var x_65 : i32;
+      var x_66 : i32;
+      var x_63 : i32;
+      var x_53 : i32;
+      var x_62_phi : i32;
+      var x_65_phi : i32;
+      var x_67_phi : i32;
+      var x_51_phi : i32;
+      var x_49_phi : i32;
+      var x_46_phi : bool;
+      x_45 = x_45_phi;
+      x_48 = x_48_phi;
+      let x_50 : i32 = x_50_phi;
+      let x_52 : i32 = x_52_phi;
+      let x_55 : f32 = gl_FragCoord.y;
+      x_111_phi = x_48;
+      x_112_phi = x_45;
+      if ((x_52 < select(100, 10, (x_55 > -1.0)))) {
+      } else {
+        break;
+      }
+      x_62_phi = x_48;
+      x_65_phi = x_50;
+      x_67_phi = 0;
+      loop {
+        var x_97 : i32;
+        var x_68 : i32;
+        var x_66_phi : i32;
+        x_62 = x_62_phi;
+        x_65 = x_65_phi;
+        let x_67 : i32 = x_67_phi;
+        x_51_phi = x_65;
+        x_49_phi = x_62;
+        x_46_phi = x_45;
+        if ((x_67 < 2)) {
+        } else {
+          break;
+        }
+        loop {
+          var x_78 : bool;
+          var x_86_phi : i32;
+          var x_97_phi : i32;
+          var x_98_phi : bool;
+          let x_77 : f32 = gl_FragCoord.x;
+          x_78 = (x_77 < -1.0);
+          if (!((x_40 < 0.0))) {
+            if (x_78) {
+              x_66_phi = 0;
+              break;
+            }
+            x_86_phi = 1;
+            loop {
+              var x_87 : i32;
+              let x_86 : i32 = x_86_phi;
+              x_97_phi = x_65;
+              x_98_phi = false;
+              if ((x_86 < 3)) {
+              } else {
+                break;
+              }
+              if (x_78) {
+                continue;
+              }
+              if ((x_86 > 0)) {
+                x_97_phi = 1;
+                x_98_phi = true;
+                break;
+              }
+
+              continuing {
+                x_87 = (x_86 + 1);
+                x_86_phi = x_87;
+              }
+            }
+            x_97 = x_97_phi;
+            let x_98 : bool = x_98_phi;
+            x_66_phi = x_97;
+            if (x_98) {
+              break;
+            }
+          }
+          x_66_phi = 0;
+          break;
+        }
+        x_66 = x_66_phi;
+        x_63 = bitcast<i32>((x_62 + x_66));
+        if (x_41) {
+          loop {
+            if (x_41) {
+            } else {
+              break;
+            }
+
+            continuing {
+              let x_105 : f32 = f32(x_52);
+              x_GLF_color = vec4<f32>(x_105, x_105, x_105, x_105);
+            }
+          }
+          x_51_phi = x_66;
+          x_49_phi = x_63;
+          x_46_phi = true;
+          break;
+        }
+
+        continuing {
+          x_68 = (x_67 + 1);
+          x_62_phi = x_63;
+          x_65_phi = x_66;
+          x_67_phi = x_68;
+        }
+      }
+      let x_51 : i32 = x_51_phi;
+      x_49 = x_49_phi;
+      x_46 = x_46_phi;
+      x_111_phi = x_49;
+      x_112_phi = x_46;
+      if (x_46) {
+        break;
+      }
+      if (!(x_41)) {
+        x_111_phi = x_49;
+        x_112_phi = x_46;
+        break;
+      }
+
+      continuing {
+        x_53 = (x_52 + 1);
+        x_45_phi = x_46;
+        x_48_phi = x_49;
+        x_50_phi = x_51;
+        x_52_phi = x_53;
+      }
+    }
+    let x_111 : i32 = x_111_phi;
+    let x_112 : bool = x_112_phi;
+    if (x_112) {
+      break;
+    }
+    x_115_phi = x_111;
+    x_118_phi = 0;
+    x_120_phi = 0;
+    loop {
+      var x_154 : i32;
+      var x_121 : i32;
+      var x_119_phi : i32;
+      x_115 = x_115_phi;
+      let x_118 : i32 = x_118_phi;
+      let x_120 : i32 = x_120_phi;
+      let x_123 : f32 = x_6.injectionSwitch.y;
+      x_161_phi = x_115;
+      if ((x_120 < i32((x_123 + 1.0)))) {
+      } else {
+        break;
+      }
+      loop {
+        var x_135 : bool;
+        var x_143_phi : i32;
+        var x_154_phi : i32;
+        var x_155_phi : bool;
+        let x_134 : f32 = gl_FragCoord.x;
+        x_135 = (x_134 < -1.0);
+        if (!((x_40 < 0.0))) {
+          if (x_135) {
+            x_119_phi = 0;
+            break;
+          }
+          x_143_phi = 1;
+          loop {
+            var x_144 : i32;
+            let x_143 : i32 = x_143_phi;
+            x_154_phi = x_118;
+            x_155_phi = false;
+            if ((x_143 < 3)) {
+            } else {
+              break;
+            }
+            if (x_135) {
+              continue;
+            }
+            if ((x_143 > 0)) {
+              x_154_phi = 1;
+              x_155_phi = true;
+              break;
+            }
+
+            continuing {
+              x_144 = (x_143 + 1);
+              x_143_phi = x_144;
+            }
+          }
+          x_154 = x_154_phi;
+          let x_155 : bool = x_155_phi;
+          x_119_phi = x_154;
+          if (x_155) {
+            break;
+          }
+        }
+        x_119_phi = 0;
+        break;
+      }
+      var x_119 : i32;
+      x_119 = x_119_phi;
+      x_116 = bitcast<i32>((x_115 + x_119));
+      if (select(x_41, false, !(x_41))) {
+        x_161_phi = x_116;
+        break;
+      }
+
+      continuing {
+        x_121 = (x_120 + 1);
+        x_115_phi = x_116;
+        x_118_phi = x_119;
+        x_120_phi = x_121;
+      }
+    }
+    let x_161 : i32 = x_161_phi;
+    if ((x_161 == 4)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    } else {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    }
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..f57ad42
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.hlsl
@@ -0,0 +1,276 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  while (true) {
+    bool x_45 = false;
+    int x_48 = 0;
+    int x_49 = 0;
+    bool x_46 = false;
+    int x_115 = 0;
+    int x_116 = 0;
+    bool x_45_phi = false;
+    int x_48_phi = 0;
+    int x_50_phi = 0;
+    int x_52_phi = 0;
+    int x_111_phi = 0;
+    bool x_112_phi = false;
+    int x_115_phi = 0;
+    int x_118_phi = 0;
+    int x_120_phi = 0;
+    int x_161_phi = 0;
+    const float x_40 = asfloat(x_6[0].x);
+    const bool x_41 = (x_40 < -1.0f);
+    x_45_phi = false;
+    x_48_phi = 0;
+    x_50_phi = 0;
+    x_52_phi = 0;
+    while (true) {
+      int x_62 = 0;
+      int x_65 = 0;
+      int x_66 = 0;
+      int x_63 = 0;
+      int x_53 = 0;
+      int x_62_phi = 0;
+      int x_65_phi = 0;
+      int x_67_phi = 0;
+      int x_51_phi = 0;
+      int x_49_phi = 0;
+      bool x_46_phi = false;
+      x_45 = x_45_phi;
+      x_48 = x_48_phi;
+      const int x_50 = x_50_phi;
+      const int x_52 = x_52_phi;
+      const float x_55 = gl_FragCoord.y;
+      x_111_phi = x_48;
+      x_112_phi = x_45;
+      if ((x_52 < ((x_55 > -1.0f) ? 10 : 100))) {
+      } else {
+        break;
+      }
+      x_62_phi = x_48;
+      x_65_phi = x_50;
+      x_67_phi = 0;
+      while (true) {
+        int x_97 = 0;
+        int x_68 = 0;
+        int x_66_phi = 0;
+        x_62 = x_62_phi;
+        x_65 = x_65_phi;
+        const int x_67 = x_67_phi;
+        x_51_phi = x_65;
+        x_49_phi = x_62;
+        x_46_phi = x_45;
+        if ((x_67 < 2)) {
+        } else {
+          break;
+        }
+        while (true) {
+          bool x_78 = false;
+          int x_86_phi = 0;
+          int x_97_phi = 0;
+          bool x_98_phi = false;
+          const float x_77 = gl_FragCoord.x;
+          x_78 = (x_77 < -1.0f);
+          if (!((x_40 < 0.0f))) {
+            if (x_78) {
+              x_66_phi = 0;
+              break;
+            }
+            x_86_phi = 1;
+            while (true) {
+              int x_87 = 0;
+              const int x_86 = x_86_phi;
+              x_97_phi = x_65;
+              x_98_phi = false;
+              if ((x_86 < 3)) {
+              } else {
+                break;
+              }
+              if (x_78) {
+                {
+                  x_87 = (x_86 + 1);
+                  x_86_phi = x_87;
+                }
+                continue;
+              }
+              if ((x_86 > 0)) {
+                x_97_phi = 1;
+                x_98_phi = true;
+                break;
+              }
+              {
+                x_87 = (x_86 + 1);
+                x_86_phi = x_87;
+              }
+            }
+            x_97 = x_97_phi;
+            const bool x_98 = x_98_phi;
+            x_66_phi = x_97;
+            if (x_98) {
+              break;
+            }
+          }
+          x_66_phi = 0;
+          break;
+        }
+        x_66 = x_66_phi;
+        x_63 = asint((x_62 + x_66));
+        if (x_41) {
+          while (true) {
+            if (x_41) {
+            } else {
+              break;
+            }
+            {
+              const float x_105 = float(x_52);
+              x_GLF_color = float4(x_105, x_105, x_105, x_105);
+            }
+          }
+          x_51_phi = x_66;
+          x_49_phi = x_63;
+          x_46_phi = true;
+          break;
+        }
+        {
+          x_68 = (x_67 + 1);
+          x_62_phi = x_63;
+          x_65_phi = x_66;
+          x_67_phi = x_68;
+        }
+      }
+      const int x_51 = x_51_phi;
+      x_49 = x_49_phi;
+      x_46 = x_46_phi;
+      x_111_phi = x_49;
+      x_112_phi = x_46;
+      if (x_46) {
+        break;
+      }
+      if (!(x_41)) {
+        x_111_phi = x_49;
+        x_112_phi = x_46;
+        break;
+      }
+      {
+        x_53 = (x_52 + 1);
+        x_45_phi = x_46;
+        x_48_phi = x_49;
+        x_50_phi = x_51;
+        x_52_phi = x_53;
+      }
+    }
+    const int x_111 = x_111_phi;
+    if (x_112_phi) {
+      break;
+    }
+    x_115_phi = x_111;
+    x_118_phi = 0;
+    x_120_phi = 0;
+    while (true) {
+      int x_154 = 0;
+      int x_121 = 0;
+      int x_119_phi = 0;
+      x_115 = x_115_phi;
+      const int x_118 = x_118_phi;
+      const int x_120 = x_120_phi;
+      const float x_123 = asfloat(x_6[0].y);
+      x_161_phi = x_115;
+      if ((x_120 < int((x_123 + 1.0f)))) {
+      } else {
+        break;
+      }
+      while (true) {
+        bool x_135 = false;
+        int x_143_phi = 0;
+        int x_154_phi = 0;
+        bool x_155_phi = false;
+        const float x_134 = gl_FragCoord.x;
+        x_135 = (x_134 < -1.0f);
+        if (!((x_40 < 0.0f))) {
+          if (x_135) {
+            x_119_phi = 0;
+            break;
+          }
+          x_143_phi = 1;
+          while (true) {
+            int x_144 = 0;
+            const int x_143 = x_143_phi;
+            x_154_phi = x_118;
+            x_155_phi = false;
+            if ((x_143 < 3)) {
+            } else {
+              break;
+            }
+            if (x_135) {
+              {
+                x_144 = (x_143 + 1);
+                x_143_phi = x_144;
+              }
+              continue;
+            }
+            if ((x_143 > 0)) {
+              x_154_phi = 1;
+              x_155_phi = true;
+              break;
+            }
+            {
+              x_144 = (x_143 + 1);
+              x_143_phi = x_144;
+            }
+          }
+          x_154 = x_154_phi;
+          const bool x_155 = x_155_phi;
+          x_119_phi = x_154;
+          if (x_155) {
+            break;
+          }
+        }
+        x_119_phi = 0;
+        break;
+      }
+      int x_119 = 0;
+      x_119 = x_119_phi;
+      x_116 = asint((x_115 + x_119));
+      if ((!(x_41) ? false : x_41)) {
+        x_161_phi = x_116;
+        break;
+      }
+      {
+        x_121 = (x_120 + 1);
+        x_115_phi = x_116;
+        x_118_phi = x_119;
+        x_120_phi = x_121;
+      }
+    }
+    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);
+    }
+    break;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.msl
new file mode 100644
index 0000000..f21f0fa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.msl
@@ -0,0 +1,277 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  while (true) {
+    bool x_45 = false;
+    int x_48 = 0;
+    int x_49 = 0;
+    bool x_46 = false;
+    int x_115 = 0;
+    int x_116 = 0;
+    bool x_45_phi = false;
+    int x_48_phi = 0;
+    int x_50_phi = 0;
+    int x_52_phi = 0;
+    int x_111_phi = 0;
+    bool x_112_phi = false;
+    int x_115_phi = 0;
+    int x_118_phi = 0;
+    int x_120_phi = 0;
+    int x_161_phi = 0;
+    float const x_40 = x_6.injectionSwitch.x;
+    bool const x_41 = (x_40 < -1.0f);
+    x_45_phi = false;
+    x_48_phi = 0;
+    x_50_phi = 0;
+    x_52_phi = 0;
+    while (true) {
+      int x_62 = 0;
+      int x_65 = 0;
+      int x_66 = 0;
+      int x_63 = 0;
+      int x_53 = 0;
+      int x_62_phi = 0;
+      int x_65_phi = 0;
+      int x_67_phi = 0;
+      int x_51_phi = 0;
+      int x_49_phi = 0;
+      bool x_46_phi = false;
+      x_45 = x_45_phi;
+      x_48 = x_48_phi;
+      int const x_50 = x_50_phi;
+      int const x_52 = x_52_phi;
+      float const x_55 = (*(tint_symbol_5)).y;
+      x_111_phi = x_48;
+      x_112_phi = x_45;
+      if ((x_52 < select(100, 10, (x_55 > -1.0f)))) {
+      } else {
+        break;
+      }
+      x_62_phi = x_48;
+      x_65_phi = x_50;
+      x_67_phi = 0;
+      while (true) {
+        int x_97 = 0;
+        int x_68 = 0;
+        int x_66_phi = 0;
+        x_62 = x_62_phi;
+        x_65 = x_65_phi;
+        int const x_67 = x_67_phi;
+        x_51_phi = x_65;
+        x_49_phi = x_62;
+        x_46_phi = x_45;
+        if ((x_67 < 2)) {
+        } else {
+          break;
+        }
+        while (true) {
+          bool x_78 = false;
+          int x_86_phi = 0;
+          int x_97_phi = 0;
+          bool x_98_phi = false;
+          float const x_77 = (*(tint_symbol_5)).x;
+          x_78 = (x_77 < -1.0f);
+          if (!((x_40 < 0.0f))) {
+            if (x_78) {
+              x_66_phi = 0;
+              break;
+            }
+            x_86_phi = 1;
+            while (true) {
+              int x_87 = 0;
+              int const x_86 = x_86_phi;
+              x_97_phi = x_65;
+              x_98_phi = false;
+              if ((x_86 < 3)) {
+              } else {
+                break;
+              }
+              if (x_78) {
+                {
+                  x_87 = (x_86 + 1);
+                  x_86_phi = x_87;
+                }
+                continue;
+              }
+              if ((x_86 > 0)) {
+                x_97_phi = 1;
+                x_98_phi = true;
+                break;
+              }
+              {
+                x_87 = (x_86 + 1);
+                x_86_phi = x_87;
+              }
+            }
+            x_97 = x_97_phi;
+            bool const x_98 = x_98_phi;
+            x_66_phi = x_97;
+            if (x_98) {
+              break;
+            }
+          }
+          x_66_phi = 0;
+          break;
+        }
+        x_66 = x_66_phi;
+        x_63 = as_type<int>((x_62 + x_66));
+        if (x_41) {
+          while (true) {
+            if (x_41) {
+            } else {
+              break;
+            }
+            {
+              float const x_105 = float(x_52);
+              *(tint_symbol_6) = float4(x_105, x_105, x_105, x_105);
+            }
+          }
+          x_51_phi = x_66;
+          x_49_phi = x_63;
+          x_46_phi = true;
+          break;
+        }
+        {
+          x_68 = (x_67 + 1);
+          x_62_phi = x_63;
+          x_65_phi = x_66;
+          x_67_phi = x_68;
+        }
+      }
+      int const x_51 = x_51_phi;
+      x_49 = x_49_phi;
+      x_46 = x_46_phi;
+      x_111_phi = x_49;
+      x_112_phi = x_46;
+      if (x_46) {
+        break;
+      }
+      if (!(x_41)) {
+        x_111_phi = x_49;
+        x_112_phi = x_46;
+        break;
+      }
+      {
+        x_53 = (x_52 + 1);
+        x_45_phi = x_46;
+        x_48_phi = x_49;
+        x_50_phi = x_51;
+        x_52_phi = x_53;
+      }
+    }
+    int const x_111 = x_111_phi;
+    bool const x_112 = x_112_phi;
+    if (x_112) {
+      break;
+    }
+    x_115_phi = x_111;
+    x_118_phi = 0;
+    x_120_phi = 0;
+    while (true) {
+      int x_154 = 0;
+      int x_121 = 0;
+      int x_119_phi = 0;
+      x_115 = x_115_phi;
+      int const x_118 = x_118_phi;
+      int const x_120 = x_120_phi;
+      float const x_123 = x_6.injectionSwitch.y;
+      x_161_phi = x_115;
+      if ((x_120 < int((x_123 + 1.0f)))) {
+      } else {
+        break;
+      }
+      while (true) {
+        bool x_135 = false;
+        int x_143_phi = 0;
+        int x_154_phi = 0;
+        bool x_155_phi = false;
+        float const x_134 = (*(tint_symbol_5)).x;
+        x_135 = (x_134 < -1.0f);
+        if (!((x_40 < 0.0f))) {
+          if (x_135) {
+            x_119_phi = 0;
+            break;
+          }
+          x_143_phi = 1;
+          while (true) {
+            int x_144 = 0;
+            int const x_143 = x_143_phi;
+            x_154_phi = x_118;
+            x_155_phi = false;
+            if ((x_143 < 3)) {
+            } else {
+              break;
+            }
+            if (x_135) {
+              {
+                x_144 = (x_143 + 1);
+                x_143_phi = x_144;
+              }
+              continue;
+            }
+            if ((x_143 > 0)) {
+              x_154_phi = 1;
+              x_155_phi = true;
+              break;
+            }
+            {
+              x_144 = (x_143 + 1);
+              x_143_phi = x_144;
+            }
+          }
+          x_154 = x_154_phi;
+          bool const x_155 = x_155_phi;
+          x_119_phi = x_154;
+          if (x_155) {
+            break;
+          }
+        }
+        x_119_phi = 0;
+        break;
+      }
+      int x_119 = 0;
+      x_119 = x_119_phi;
+      x_116 = as_type<int>((x_115 + x_119));
+      if (select(x_41, false, !(x_41))) {
+        x_161_phi = x_116;
+        break;
+      }
+      {
+        x_121 = (x_120 + 1);
+        x_115_phi = x_116;
+        x_118_phi = x_119;
+        x_120_phi = x_121;
+      }
+    }
+    int const x_161 = x_161_phi;
+    if ((x_161 == 4)) {
+      *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    } else {
+      *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    }
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..5bea6cc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.spvasm
@@ -0,0 +1,566 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 292
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_45 "x_45"
+               OpName %x_48 "x_48"
+               OpName %x_49 "x_49"
+               OpName %x_46 "x_46"
+               OpName %x_115 "x_115"
+               OpName %x_116 "x_116"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %x_50_phi "x_50_phi"
+               OpName %x_52_phi "x_52_phi"
+               OpName %x_111_phi "x_111_phi"
+               OpName %x_112_phi "x_112_phi"
+               OpName %x_115_phi "x_115_phi"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_120_phi "x_120_phi"
+               OpName %x_161_phi "x_161_phi"
+               OpName %x_62 "x_62"
+               OpName %x_65 "x_65"
+               OpName %x_66 "x_66"
+               OpName %x_63 "x_63"
+               OpName %x_53 "x_53"
+               OpName %x_62_phi "x_62_phi"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_67_phi "x_67_phi"
+               OpName %x_51_phi "x_51_phi"
+               OpName %x_49_phi "x_49_phi"
+               OpName %x_46_phi "x_46_phi"
+               OpName %x_97 "x_97"
+               OpName %x_68 "x_68"
+               OpName %x_66_phi "x_66_phi"
+               OpName %x_78 "x_78"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_97_phi "x_97_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_87 "x_87"
+               OpName %x_154 "x_154"
+               OpName %x_121 "x_121"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_135 "x_135"
+               OpName %x_143_phi "x_143_phi"
+               OpName %x_154_phi "x_154_phi"
+               OpName %x_155_phi "x_155_phi"
+               OpName %x_144 "x_144"
+               OpName %x_119 "x_119"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %26 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_2 = OpConstant %int 2
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+      %int_3 = OpConstant %int 3
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+      %int_4 = OpConstant %int 4
+        %277 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %278 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %279 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_45 = OpVariable %_ptr_Function_bool Function %26
+       %x_48 = OpVariable %_ptr_Function_int Function %30
+       %x_49 = OpVariable %_ptr_Function_int Function %30
+       %x_46 = OpVariable %_ptr_Function_bool Function %26
+      %x_115 = OpVariable %_ptr_Function_int Function %30
+      %x_116 = OpVariable %_ptr_Function_int Function %30
+   %x_45_phi = OpVariable %_ptr_Function_bool Function %26
+   %x_48_phi = OpVariable %_ptr_Function_int Function %30
+   %x_50_phi = OpVariable %_ptr_Function_int Function %30
+   %x_52_phi = OpVariable %_ptr_Function_int Function %30
+  %x_111_phi = OpVariable %_ptr_Function_int Function %30
+  %x_112_phi = OpVariable %_ptr_Function_bool Function %26
+  %x_115_phi = OpVariable %_ptr_Function_int Function %30
+  %x_118_phi = OpVariable %_ptr_Function_int Function %30
+  %x_120_phi = OpVariable %_ptr_Function_int Function %30
+  %x_161_phi = OpVariable %_ptr_Function_int Function %30
+       %x_62 = OpVariable %_ptr_Function_int Function %30
+       %x_65 = OpVariable %_ptr_Function_int Function %30
+       %x_66 = OpVariable %_ptr_Function_int Function %30
+       %x_63 = OpVariable %_ptr_Function_int Function %30
+       %x_53 = OpVariable %_ptr_Function_int Function %30
+   %x_62_phi = OpVariable %_ptr_Function_int Function %30
+   %x_65_phi = OpVariable %_ptr_Function_int Function %30
+   %x_67_phi = OpVariable %_ptr_Function_int Function %30
+   %x_51_phi = OpVariable %_ptr_Function_int Function %30
+   %x_49_phi = OpVariable %_ptr_Function_int Function %30
+   %x_46_phi = OpVariable %_ptr_Function_bool Function %26
+       %x_97 = OpVariable %_ptr_Function_int Function %30
+       %x_68 = OpVariable %_ptr_Function_int Function %30
+   %x_66_phi = OpVariable %_ptr_Function_int Function %30
+       %x_78 = OpVariable %_ptr_Function_bool Function %26
+   %x_86_phi = OpVariable %_ptr_Function_int Function %30
+   %x_97_phi = OpVariable %_ptr_Function_int Function %30
+   %x_98_phi = OpVariable %_ptr_Function_bool Function %26
+       %x_87 = OpVariable %_ptr_Function_int Function %30
+      %x_154 = OpVariable %_ptr_Function_int Function %30
+      %x_121 = OpVariable %_ptr_Function_int Function %30
+  %x_119_phi = OpVariable %_ptr_Function_int Function %30
+      %x_135 = OpVariable %_ptr_Function_bool Function %26
+  %x_143_phi = OpVariable %_ptr_Function_int Function %30
+  %x_154_phi = OpVariable %_ptr_Function_int Function %30
+  %x_155_phi = OpVariable %_ptr_Function_bool Function %26
+      %x_144 = OpVariable %_ptr_Function_int Function %30
+      %x_119 = OpVariable %_ptr_Function_int Function %30
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %49 = OpLoad %float %48
+         %51 = OpFOrdLessThan %bool %49 %float_n1
+               OpStore %x_45_phi %false
+               OpStore %x_48_phi %int_0
+               OpStore %x_50_phi %int_0
+               OpStore %x_52_phi %int_0
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %69 = OpLoad %bool %x_45_phi
+               OpStore %x_45 %69
+         %70 = OpLoad %int %x_48_phi
+               OpStore %x_48 %70
+         %71 = OpLoad %int %x_50_phi
+         %72 = OpLoad %int %x_52_phi
+         %75 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %76 = OpLoad %float %75
+         %77 = OpLoad %int %x_48
+               OpStore %x_111_phi %77
+         %78 = OpLoad %bool %x_45
+               OpStore %x_112_phi %78
+         %80 = OpFOrdGreaterThan %bool %76 %float_n1
+         %79 = OpSelect %int %80 %int_10 %int_100
+         %83 = OpSLessThan %bool %72 %79
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %55
+         %84 = OpLabel
+         %87 = OpLoad %int %x_48
+               OpStore %x_62_phi %87
+               OpStore %x_65_phi %71
+               OpStore %x_67_phi %int_0
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %95 = OpLoad %int %x_62_phi
+               OpStore %x_62 %95
+         %96 = OpLoad %int %x_65_phi
+               OpStore %x_65 %96
+         %97 = OpLoad %int %x_67_phi
+         %98 = OpLoad %int %x_65
+               OpStore %x_51_phi %98
+         %99 = OpLoad %int %x_62
+               OpStore %x_49_phi %99
+        %100 = OpLoad %bool %x_45
+               OpStore %x_46_phi %100
+        %102 = OpSLessThan %bool %97 %int_2
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+               OpBranch %103
+        %105 = OpLabel
+               OpBranch %89
+        %103 = OpLabel
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %114 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %115 = OpLoad %float %114
+        %116 = OpFOrdLessThan %bool %115 %float_n1
+               OpStore %x_78 %116
+        %119 = OpFOrdLessThan %bool %49 %float_0
+        %117 = OpLogicalNot %bool %119
+               OpSelectionMerge %120 None
+               OpBranchConditional %117 %121 %120
+        %121 = OpLabel
+        %122 = OpLoad %bool %x_78
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %123
+        %124 = OpLabel
+               OpStore %x_66_phi %int_0
+               OpBranch %107
+        %123 = OpLabel
+               OpStore %x_86_phi %int_1
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %131 = OpLoad %int %x_86_phi
+        %132 = OpLoad %int %x_65
+               OpStore %x_97_phi %132
+               OpStore %x_98_phi %false
+        %134 = OpSLessThan %bool %131 %int_3
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %127
+        %135 = OpLabel
+        %138 = OpLoad %bool %x_78
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+               OpBranch %128
+        %139 = OpLabel
+        %141 = OpSGreaterThan %bool %131 %int_0
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %142
+        %143 = OpLabel
+               OpStore %x_97_phi %int_1
+               OpStore %x_98_phi %true
+               OpBranch %127
+        %142 = OpLabel
+               OpBranch %128
+        %128 = OpLabel
+        %145 = OpIAdd %int %131 %int_1
+               OpStore %x_87 %145
+        %146 = OpLoad %int %x_87
+               OpStore %x_86_phi %146
+               OpBranch %126
+        %127 = OpLabel
+        %147 = OpLoad %int %x_97_phi
+               OpStore %x_97 %147
+        %148 = OpLoad %bool %x_98_phi
+        %149 = OpLoad %int %x_97
+               OpStore %x_66_phi %149
+               OpSelectionMerge %150 None
+               OpBranchConditional %148 %151 %150
+        %151 = OpLabel
+               OpBranch %107
+        %150 = OpLabel
+               OpBranch %120
+        %120 = OpLabel
+               OpStore %x_66_phi %int_0
+               OpBranch %107
+        %108 = OpLabel
+               OpBranch %106
+        %107 = OpLabel
+        %152 = OpLoad %int %x_66_phi
+               OpStore %x_66 %152
+        %154 = OpLoad %int %x_62
+        %155 = OpLoad %int %x_66
+        %156 = OpIAdd %int %154 %155
+        %153 = OpCopyObject %int %156
+               OpStore %x_63 %153
+               OpSelectionMerge %157 None
+               OpBranchConditional %51 %158 %157
+        %158 = OpLabel
+               OpBranch %159
+        %159 = OpLabel
+               OpLoopMerge %160 %161 None
+               OpBranch %162
+        %162 = OpLabel
+               OpSelectionMerge %163 None
+               OpBranchConditional %51 %164 %165
+        %164 = OpLabel
+               OpBranch %163
+        %165 = OpLabel
+               OpBranch %160
+        %163 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+        %166 = OpConvertSToF %float %72
+        %167 = OpCompositeConstruct %v4float %166 %166 %166 %166
+               OpStore %x_GLF_color %167
+               OpBranch %159
+        %160 = OpLabel
+        %168 = OpLoad %int %x_66
+               OpStore %x_51_phi %168
+        %169 = OpLoad %int %x_63
+               OpStore %x_49_phi %169
+               OpStore %x_46_phi %true
+               OpBranch %89
+        %157 = OpLabel
+               OpBranch %90
+         %90 = OpLabel
+        %170 = OpIAdd %int %97 %int_1
+               OpStore %x_68 %170
+        %171 = OpLoad %int %x_63
+               OpStore %x_62_phi %171
+        %172 = OpLoad %int %x_66
+               OpStore %x_65_phi %172
+        %173 = OpLoad %int %x_68
+               OpStore %x_67_phi %173
+               OpBranch %88
+         %89 = OpLabel
+        %174 = OpLoad %int %x_51_phi
+        %175 = OpLoad %int %x_49_phi
+               OpStore %x_49 %175
+        %176 = OpLoad %bool %x_46_phi
+               OpStore %x_46 %176
+        %177 = OpLoad %int %x_49
+               OpStore %x_111_phi %177
+        %178 = OpLoad %bool %x_46
+               OpStore %x_112_phi %178
+        %179 = OpLoad %bool %x_46
+               OpSelectionMerge %180 None
+               OpBranchConditional %179 %181 %180
+        %181 = OpLabel
+               OpBranch %55
+        %180 = OpLabel
+        %182 = OpLogicalNot %bool %51
+               OpSelectionMerge %183 None
+               OpBranchConditional %182 %184 %183
+        %184 = OpLabel
+        %185 = OpLoad %int %x_49
+               OpStore %x_111_phi %185
+        %186 = OpLoad %bool %x_46
+               OpStore %x_112_phi %186
+               OpBranch %55
+        %183 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+        %187 = OpIAdd %int %72 %int_1
+               OpStore %x_53 %187
+        %188 = OpLoad %bool %x_46
+               OpStore %x_45_phi %188
+        %189 = OpLoad %int %x_49
+               OpStore %x_48_phi %189
+               OpStore %x_50_phi %174
+        %190 = OpLoad %int %x_53
+               OpStore %x_52_phi %190
+               OpBranch %54
+         %55 = OpLabel
+        %191 = OpLoad %int %x_111_phi
+        %192 = OpLoad %bool %x_112_phi
+               OpSelectionMerge %193 None
+               OpBranchConditional %192 %194 %193
+        %194 = OpLabel
+               OpBranch %20
+        %193 = OpLabel
+               OpStore %x_115_phi %191
+               OpStore %x_118_phi %int_0
+               OpStore %x_120_phi %int_0
+               OpBranch %195
+        %195 = OpLabel
+               OpLoopMerge %196 %197 None
+               OpBranch %198
+        %198 = OpLabel
+        %202 = OpLoad %int %x_115_phi
+               OpStore %x_115 %202
+        %203 = OpLoad %int %x_118_phi
+        %204 = OpLoad %int %x_120_phi
+        %205 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %206 = OpLoad %float %205
+        %207 = OpLoad %int %x_115
+               OpStore %x_161_phi %207
+        %210 = OpFAdd %float %206 %float_1
+        %208 = OpConvertFToS %int %210
+        %211 = OpSLessThan %bool %204 %208
+               OpSelectionMerge %212 None
+               OpBranchConditional %211 %213 %214
+        %213 = OpLabel
+               OpBranch %212
+        %214 = OpLabel
+               OpBranch %196
+        %212 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+               OpLoopMerge %216 %217 None
+               OpBranch %218
+        %218 = OpLabel
+        %223 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %224 = OpLoad %float %223
+        %225 = OpFOrdLessThan %bool %224 %float_n1
+               OpStore %x_135 %225
+        %227 = OpFOrdLessThan %bool %49 %float_0
+        %226 = OpLogicalNot %bool %227
+               OpSelectionMerge %228 None
+               OpBranchConditional %226 %229 %228
+        %229 = OpLabel
+        %230 = OpLoad %bool %x_135
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %231
+        %232 = OpLabel
+               OpStore %x_119_phi %int_0
+               OpBranch %216
+        %231 = OpLabel
+               OpStore %x_143_phi %int_1
+               OpBranch %233
+        %233 = OpLabel
+               OpLoopMerge %234 %235 None
+               OpBranch %236
+        %236 = OpLabel
+        %238 = OpLoad %int %x_143_phi
+               OpStore %x_154_phi %203
+               OpStore %x_155_phi %false
+        %239 = OpSLessThan %bool %238 %int_3
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %242
+        %241 = OpLabel
+               OpBranch %240
+        %242 = OpLabel
+               OpBranch %234
+        %240 = OpLabel
+        %243 = OpLoad %bool %x_135
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+               OpBranch %235
+        %244 = OpLabel
+        %246 = OpSGreaterThan %bool %238 %int_0
+               OpSelectionMerge %247 None
+               OpBranchConditional %246 %248 %247
+        %248 = OpLabel
+               OpStore %x_154_phi %int_1
+               OpStore %x_155_phi %true
+               OpBranch %234
+        %247 = OpLabel
+               OpBranch %235
+        %235 = OpLabel
+        %249 = OpIAdd %int %238 %int_1
+               OpStore %x_144 %249
+        %250 = OpLoad %int %x_144
+               OpStore %x_143_phi %250
+               OpBranch %233
+        %234 = OpLabel
+        %251 = OpLoad %int %x_154_phi
+               OpStore %x_154 %251
+        %252 = OpLoad %bool %x_155_phi
+        %253 = OpLoad %int %x_154
+               OpStore %x_119_phi %253
+               OpSelectionMerge %254 None
+               OpBranchConditional %252 %255 %254
+        %255 = OpLabel
+               OpBranch %216
+        %254 = OpLabel
+               OpBranch %228
+        %228 = OpLabel
+               OpStore %x_119_phi %int_0
+               OpBranch %216
+        %217 = OpLabel
+               OpBranch %215
+        %216 = OpLabel
+        %257 = OpLoad %int %x_119_phi
+               OpStore %x_119 %257
+        %259 = OpLoad %int %x_115
+        %260 = OpLoad %int %x_119
+        %261 = OpIAdd %int %259 %260
+        %258 = OpCopyObject %int %261
+               OpStore %x_116 %258
+        %263 = OpLogicalNot %bool %51
+        %262 = OpSelect %bool %263 %false %51
+               OpSelectionMerge %264 None
+               OpBranchConditional %262 %265 %264
+        %265 = OpLabel
+        %266 = OpLoad %int %x_116
+               OpStore %x_161_phi %266
+               OpBranch %196
+        %264 = OpLabel
+               OpBranch %197
+        %197 = OpLabel
+        %267 = OpIAdd %int %204 %int_1
+               OpStore %x_121 %267
+        %268 = OpLoad %int %x_116
+               OpStore %x_115_phi %268
+        %269 = OpLoad %int %x_119
+               OpStore %x_118_phi %269
+        %270 = OpLoad %int %x_121
+               OpStore %x_120_phi %270
+               OpBranch %195
+        %196 = OpLabel
+        %271 = OpLoad %int %x_161_phi
+        %273 = OpIEqual %bool %271 %int_4
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %276
+        %275 = OpLabel
+               OpStore %x_GLF_color %277
+               OpBranch %274
+        %276 = OpLabel
+               OpStore %x_GLF_color %278
+               OpBranch %274
+        %274 = OpLabel
+               OpBranch %20
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %279
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %283 = OpLabel
+        %284 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %284
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %286 = OpLabel
+        %287 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %287
+        %288 = OpFunctionCall %void %main_1
+        %290 = OpLoad %v4float %x_GLF_color
+        %291 = OpCompositeConstruct %main_out %290
+        %289 = OpFunctionCall %void %tint_symbol_3 %291
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..7b1d980
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.wgsl
@@ -0,0 +1,274 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  loop {
+    var x_45 : bool;
+    var x_48 : i32;
+    var x_49 : i32;
+    var x_46 : bool;
+    var x_115 : i32;
+    var x_116 : i32;
+    var x_45_phi : bool;
+    var x_48_phi : i32;
+    var x_50_phi : i32;
+    var x_52_phi : i32;
+    var x_111_phi : i32;
+    var x_112_phi : bool;
+    var x_115_phi : i32;
+    var x_118_phi : i32;
+    var x_120_phi : i32;
+    var x_161_phi : i32;
+    let x_40 : f32 = x_6.injectionSwitch.x;
+    let x_41 : bool = (x_40 < -1.0);
+    x_45_phi = false;
+    x_48_phi = 0;
+    x_50_phi = 0;
+    x_52_phi = 0;
+    loop {
+      var x_62 : i32;
+      var x_65 : i32;
+      var x_66 : i32;
+      var x_63 : i32;
+      var x_53 : i32;
+      var x_62_phi : i32;
+      var x_65_phi : i32;
+      var x_67_phi : i32;
+      var x_51_phi : i32;
+      var x_49_phi : i32;
+      var x_46_phi : bool;
+      x_45 = x_45_phi;
+      x_48 = x_48_phi;
+      let x_50 : i32 = x_50_phi;
+      let x_52 : i32 = x_52_phi;
+      let x_55 : f32 = gl_FragCoord.y;
+      x_111_phi = x_48;
+      x_112_phi = x_45;
+      if ((x_52 < select(100, 10, (x_55 > -1.0)))) {
+      } else {
+        break;
+      }
+      x_62_phi = x_48;
+      x_65_phi = x_50;
+      x_67_phi = 0;
+      loop {
+        var x_97 : i32;
+        var x_68 : i32;
+        var x_66_phi : i32;
+        x_62 = x_62_phi;
+        x_65 = x_65_phi;
+        let x_67 : i32 = x_67_phi;
+        x_51_phi = x_65;
+        x_49_phi = x_62;
+        x_46_phi = x_45;
+        if ((x_67 < 2)) {
+        } else {
+          break;
+        }
+        loop {
+          var x_78 : bool;
+          var x_86_phi : i32;
+          var x_97_phi : i32;
+          var x_98_phi : bool;
+          let x_77 : f32 = gl_FragCoord.x;
+          x_78 = (x_77 < -1.0);
+          if (!((x_40 < 0.0))) {
+            if (x_78) {
+              x_66_phi = 0;
+              break;
+            }
+            x_86_phi = 1;
+            loop {
+              var x_87 : i32;
+              let x_86 : i32 = x_86_phi;
+              x_97_phi = x_65;
+              x_98_phi = false;
+              if ((x_86 < 3)) {
+              } else {
+                break;
+              }
+              if (x_78) {
+                continue;
+              }
+              if ((x_86 > 0)) {
+                x_97_phi = 1;
+                x_98_phi = true;
+                break;
+              }
+
+              continuing {
+                x_87 = (x_86 + 1);
+                x_86_phi = x_87;
+              }
+            }
+            x_97 = x_97_phi;
+            let x_98 : bool = x_98_phi;
+            x_66_phi = x_97;
+            if (x_98) {
+              break;
+            }
+          }
+          x_66_phi = 0;
+          break;
+        }
+        x_66 = x_66_phi;
+        x_63 = bitcast<i32>((x_62 + x_66));
+        if (x_41) {
+          loop {
+            if (x_41) {
+            } else {
+              break;
+            }
+
+            continuing {
+              let x_105 : f32 = f32(x_52);
+              x_GLF_color = vec4<f32>(x_105, x_105, x_105, x_105);
+            }
+          }
+          x_51_phi = x_66;
+          x_49_phi = x_63;
+          x_46_phi = true;
+          break;
+        }
+
+        continuing {
+          x_68 = (x_67 + 1);
+          x_62_phi = x_63;
+          x_65_phi = x_66;
+          x_67_phi = x_68;
+        }
+      }
+      let x_51 : i32 = x_51_phi;
+      x_49 = x_49_phi;
+      x_46 = x_46_phi;
+      x_111_phi = x_49;
+      x_112_phi = x_46;
+      if (x_46) {
+        break;
+      }
+      if (!(x_41)) {
+        x_111_phi = x_49;
+        x_112_phi = x_46;
+        break;
+      }
+
+      continuing {
+        x_53 = (x_52 + 1);
+        x_45_phi = x_46;
+        x_48_phi = x_49;
+        x_50_phi = x_51;
+        x_52_phi = x_53;
+      }
+    }
+    let x_111 : i32 = x_111_phi;
+    let x_112 : bool = x_112_phi;
+    if (x_112) {
+      break;
+    }
+    x_115_phi = x_111;
+    x_118_phi = 0;
+    x_120_phi = 0;
+    loop {
+      var x_154 : i32;
+      var x_121 : i32;
+      var x_119_phi : i32;
+      x_115 = x_115_phi;
+      let x_118 : i32 = x_118_phi;
+      let x_120 : i32 = x_120_phi;
+      let x_123 : f32 = x_6.injectionSwitch.y;
+      x_161_phi = x_115;
+      if ((x_120 < i32((x_123 + 1.0)))) {
+      } else {
+        break;
+      }
+      loop {
+        var x_135 : bool;
+        var x_143_phi : i32;
+        var x_154_phi : i32;
+        var x_155_phi : bool;
+        let x_134 : f32 = gl_FragCoord.x;
+        x_135 = (x_134 < -1.0);
+        if (!((x_40 < 0.0))) {
+          if (x_135) {
+            x_119_phi = 0;
+            break;
+          }
+          x_143_phi = 1;
+          loop {
+            var x_144 : i32;
+            let x_143 : i32 = x_143_phi;
+            x_154_phi = x_118;
+            x_155_phi = false;
+            if ((x_143 < 3)) {
+            } else {
+              break;
+            }
+            if (x_135) {
+              continue;
+            }
+            if ((x_143 > 0)) {
+              x_154_phi = 1;
+              x_155_phi = true;
+              break;
+            }
+
+            continuing {
+              x_144 = (x_143 + 1);
+              x_143_phi = x_144;
+            }
+          }
+          x_154 = x_154_phi;
+          let x_155 : bool = x_155_phi;
+          x_119_phi = x_154;
+          if (x_155) {
+            break;
+          }
+        }
+        x_119_phi = 0;
+        break;
+      }
+      var x_119 : i32;
+      x_119 = x_119_phi;
+      x_116 = bitcast<i32>((x_115 + x_119));
+      if (select(x_41, false, !(x_41))) {
+        x_161_phi = x_116;
+        break;
+      }
+
+      continuing {
+        x_121 = (x_120 + 1);
+        x_115_phi = x_116;
+        x_118_phi = x_119;
+        x_120_phi = x_121;
+      }
+    }
+    let x_161 : i32 = x_161_phi;
+    if ((x_161 == 4)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    } else {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    }
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm
new file mode 100644
index 0000000..de646e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm
@@ -0,0 +1,106 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %makeFrame_ "makeFrame("
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %13 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+         %30 = OpUndef %float
+         %31 = OpUndef %bool
+         %32 = OpUndef %int
+       %main = OpFunction %void None %11
+         %33 = OpLabel
+         %34 = OpFunctionCall %float %makeFrame_
+               OpStore %_GLF_color %27
+               OpReturn
+               OpFunctionEnd
+ %makeFrame_ = OpFunction %float None %13
+         %35 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpPhi %bool %false %39 %42 %43
+          %8 = OpPhi %int %int_0 %39 %7 %43
+         %44 = OpPhi %float %30 %39 %45 %43
+         %46 = OpSLessThan %bool %8 %int_1
+               OpLoopMerge %47 %43 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+         %50 = OpPhi %float %44 %48 %30 %51
+          %9 = OpPhi %int %8 %48 %32 %51
+         %52 = OpPhi %bool %41 %48 %31 %51
+         %53 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %54 = OpLoad %float %53
+         %55 = OpConvertFToS %int %54
+         %56 = OpSLessThan %bool %int_1 %55
+               OpLoopMerge %57 %51 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %57
+         %51 = OpLabel
+               OpBranch %49
+         %57 = OpLabel
+         %45 = OpPhi %float %50 %49 %float_1 %58
+         %42 = OpPhi %bool %52 %49 %true %58
+               OpSelectionMerge %59 None
+               OpBranchConditional %42 %47 %59
+         %59 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+          %7 = OpIAdd %int %9 %int_1
+               OpBranch %40
+         %47 = OpLabel
+         %60 = OpPhi %float %44 %40 %45 %57
+         %61 = OpPhi %bool %41 %40 %42 %57
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %37 %62
+         %62 = OpLabel
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+         %63 = OpPhi %float %60 %47 %float_1 %62
+               OpReturnValue %63
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..569cc6a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.hlsl
@@ -0,0 +1,108 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float makeFrame_() {
+  float x_60 = 0.0f;
+  float x_63_phi = 0.0f;
+  while (true) {
+    bool x_41 = false;
+    float x_44 = 0.0f;
+    float x_45 = 0.0f;
+    bool x_42 = false;
+    bool x_41_phi = false;
+    int x_8_phi = 0;
+    float x_44_phi = 0.0f;
+    float x_60_phi = 0.0f;
+    bool x_61_phi = false;
+    x_41_phi = false;
+    x_8_phi = 0;
+    x_44_phi = 0.0f;
+    while (true) {
+      float x_50 = 0.0f;
+      int x_9 = 0;
+      bool x_52 = false;
+      int x_7 = 0;
+      float x_50_phi = 0.0f;
+      int x_9_phi = 0;
+      bool x_52_phi = false;
+      float x_45_phi = 0.0f;
+      bool x_42_phi = false;
+      x_41 = x_41_phi;
+      const int x_8 = x_8_phi;
+      x_44 = x_44_phi;
+      x_60_phi = x_44;
+      x_61_phi = x_41;
+      if ((x_8 < 1)) {
+      } else {
+        break;
+      }
+      x_50_phi = x_44;
+      x_9_phi = x_8;
+      x_52_phi = x_41;
+      while (true) {
+        x_50 = x_50_phi;
+        x_9 = x_9_phi;
+        x_52 = x_52_phi;
+        const float x_54 = asfloat(x_6[0].y);
+        x_45_phi = x_50;
+        x_42_phi = x_52;
+        if ((1 < int(x_54))) {
+        } else {
+          break;
+        }
+        x_45_phi = 1.0f;
+        x_42_phi = true;
+        break;
+        {
+          x_50_phi = 0.0f;
+          x_9_phi = 0;
+          x_52_phi = false;
+        }
+      }
+      x_45 = x_45_phi;
+      x_42 = x_42_phi;
+      x_60_phi = x_45;
+      x_61_phi = x_42;
+      if (x_42) {
+        break;
+      }
+      {
+        x_7 = asint((x_9 + asint(1)));
+        x_41_phi = x_42;
+        x_8_phi = x_7;
+        x_44_phi = x_45;
+      }
+    }
+    x_60 = x_60_phi;
+    const bool x_61 = x_61_phi;
+    x_63_phi = x_60;
+    if (x_61) {
+      break;
+    }
+    x_63_phi = 1.0f;
+    break;
+  }
+  return x_63_phi;
+}
+
+void main_1() {
+  const float x_34 = makeFrame_();
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.msl
new file mode 100644
index 0000000..c1f7672
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float makeFrame_(constant buf0& x_6) {
+  float x_60 = 0.0f;
+  float x_63_phi = 0.0f;
+  while (true) {
+    bool x_41 = false;
+    float x_44 = 0.0f;
+    float x_45 = 0.0f;
+    bool x_42 = false;
+    bool x_41_phi = false;
+    int x_8_phi = 0;
+    float x_44_phi = 0.0f;
+    float x_60_phi = 0.0f;
+    bool x_61_phi = false;
+    x_41_phi = false;
+    x_8_phi = 0;
+    x_44_phi = 0.0f;
+    while (true) {
+      float x_50 = 0.0f;
+      int x_9 = 0;
+      bool x_52 = false;
+      int x_7 = 0;
+      float x_50_phi = 0.0f;
+      int x_9_phi = 0;
+      bool x_52_phi = false;
+      float x_45_phi = 0.0f;
+      bool x_42_phi = false;
+      x_41 = x_41_phi;
+      int const x_8 = x_8_phi;
+      x_44 = x_44_phi;
+      x_60_phi = x_44;
+      x_61_phi = x_41;
+      if ((x_8 < 1)) {
+      } else {
+        break;
+      }
+      x_50_phi = x_44;
+      x_9_phi = x_8;
+      x_52_phi = x_41;
+      while (true) {
+        x_50 = x_50_phi;
+        x_9 = x_9_phi;
+        x_52 = x_52_phi;
+        float const x_54 = x_6.injectionSwitch.y;
+        x_45_phi = x_50;
+        x_42_phi = x_52;
+        if ((1 < int(x_54))) {
+        } else {
+          break;
+        }
+        x_45_phi = 1.0f;
+        x_42_phi = true;
+        break;
+        {
+          x_50_phi = 0.0f;
+          x_9_phi = 0;
+          x_52_phi = false;
+        }
+      }
+      x_45 = x_45_phi;
+      x_42 = x_42_phi;
+      x_60_phi = x_45;
+      x_61_phi = x_42;
+      if (x_42) {
+        break;
+      }
+      {
+        x_7 = as_type<int>((x_9 + as_type<int>(1)));
+        x_41_phi = x_42;
+        x_8_phi = x_7;
+        x_44_phi = x_45;
+      }
+    }
+    x_60 = x_60_phi;
+    bool const x_61 = x_61_phi;
+    x_63_phi = x_60;
+    if (x_61) {
+      break;
+    }
+    x_63_phi = 1.0f;
+    break;
+  }
+  float const x_63 = x_63_phi;
+  return x_63;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float const x_34 = makeFrame_(x_6);
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..ecb0861
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.spvasm
@@ -0,0 +1,243 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 126
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeFrame_ "makeFrame_"
+               OpName %x_60 "x_60"
+               OpName %x_63_phi "x_63_phi"
+               OpName %x_41 "x_41"
+               OpName %x_44 "x_44"
+               OpName %x_45 "x_45"
+               OpName %x_42 "x_42"
+               OpName %x_41_phi "x_41_phi"
+               OpName %x_8_phi "x_8_phi"
+               OpName %x_44_phi "x_44_phi"
+               OpName %x_60_phi "x_60_phi"
+               OpName %x_61_phi "x_61_phi"
+               OpName %x_50 "x_50"
+               OpName %x_9 "x_9"
+               OpName %x_52 "x_52"
+               OpName %x_7 "x_7"
+               OpName %x_50_phi "x_50_phi"
+               OpName %x_9_phi "x_9_phi"
+               OpName %x_52_phi "x_52_phi"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %26 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+       %void = OpTypeVoid
+        %108 = OpTypeFunction %void
+        %113 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %114 = OpTypeFunction %void %main_out
+ %makeFrame_ = OpFunction %float None %12
+         %14 = OpLabel
+       %x_60 = OpVariable %_ptr_Function_float Function %17
+   %x_63_phi = OpVariable %_ptr_Function_float Function %17
+       %x_41 = OpVariable %_ptr_Function_bool Function %26
+       %x_44 = OpVariable %_ptr_Function_float Function %17
+       %x_45 = OpVariable %_ptr_Function_float Function %17
+       %x_42 = OpVariable %_ptr_Function_bool Function %26
+   %x_41_phi = OpVariable %_ptr_Function_bool Function %26
+    %x_8_phi = OpVariable %_ptr_Function_int Function %34
+   %x_44_phi = OpVariable %_ptr_Function_float Function %17
+   %x_60_phi = OpVariable %_ptr_Function_float Function %17
+   %x_61_phi = OpVariable %_ptr_Function_bool Function %26
+       %x_50 = OpVariable %_ptr_Function_float Function %17
+        %x_9 = OpVariable %_ptr_Function_int Function %34
+       %x_52 = OpVariable %_ptr_Function_bool Function %26
+        %x_7 = OpVariable %_ptr_Function_int Function %34
+   %x_50_phi = OpVariable %_ptr_Function_float Function %17
+    %x_9_phi = OpVariable %_ptr_Function_int Function %34
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %26
+   %x_45_phi = OpVariable %_ptr_Function_float Function %17
+   %x_42_phi = OpVariable %_ptr_Function_bool Function %26
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+               OpStore %x_41_phi %false
+               OpStore %x_8_phi %int_0
+               OpStore %x_44_phi %float_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %54 = OpLoad %bool %x_41_phi
+               OpStore %x_41 %54
+         %55 = OpLoad %int %x_8_phi
+         %56 = OpLoad %float %x_44_phi
+               OpStore %x_44 %56
+         %57 = OpLoad %float %x_44
+               OpStore %x_60_phi %57
+         %58 = OpLoad %bool %x_41
+               OpStore %x_61_phi %58
+         %60 = OpSLessThan %bool %55 %int_1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %42
+         %61 = OpLabel
+         %64 = OpLoad %float %x_44
+               OpStore %x_50_phi %64
+               OpStore %x_9_phi %55
+         %65 = OpLoad %bool %x_41
+               OpStore %x_52_phi %65
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %70 = OpLoad %float %x_50_phi
+               OpStore %x_50 %70
+         %71 = OpLoad %int %x_9_phi
+               OpStore %x_9 %71
+         %72 = OpLoad %bool %x_52_phi
+               OpStore %x_52 %72
+         %77 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpLoad %float %x_50
+               OpStore %x_45_phi %79
+         %80 = OpLoad %bool %x_52
+               OpStore %x_42_phi %80
+         %81 = OpConvertFToS %int %78
+         %82 = OpSLessThan %bool %int_1 %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %67
+         %83 = OpLabel
+               OpStore %x_45_phi %float_1
+               OpStore %x_42_phi %true
+               OpBranch %67
+         %68 = OpLabel
+               OpStore %x_50_phi %float_0
+               OpStore %x_9_phi %int_0
+               OpStore %x_52_phi %false
+               OpBranch %66
+         %67 = OpLabel
+         %88 = OpLoad %float %x_45_phi
+               OpStore %x_45 %88
+         %89 = OpLoad %bool %x_42_phi
+               OpStore %x_42 %89
+         %90 = OpLoad %float %x_45
+               OpStore %x_60_phi %90
+         %91 = OpLoad %bool %x_42
+               OpStore %x_61_phi %91
+         %92 = OpLoad %bool %x_42
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+               OpBranch %42
+         %93 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+         %96 = OpLoad %int %x_9
+         %97 = OpCopyObject %int %int_1
+         %98 = OpIAdd %int %96 %97
+         %95 = OpCopyObject %int %98
+               OpStore %x_7 %95
+         %99 = OpLoad %bool %x_42
+               OpStore %x_41_phi %99
+        %100 = OpLoad %int %x_7
+               OpStore %x_8_phi %100
+        %101 = OpLoad %float %x_45
+               OpStore %x_44_phi %101
+               OpBranch %41
+         %42 = OpLabel
+        %102 = OpLoad %float %x_60_phi
+               OpStore %x_60 %102
+        %103 = OpLoad %bool %x_61_phi
+        %104 = OpLoad %float %x_60
+               OpStore %x_63_phi %104
+               OpSelectionMerge %105 None
+               OpBranchConditional %103 %106 %105
+        %106 = OpLabel
+               OpBranch %20
+        %105 = OpLabel
+               OpStore %x_63_phi %float_1
+               OpBranch %20
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+        %107 = OpLoad %float %x_63_phi
+               OpReturnValue %107
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %108
+        %111 = OpLabel
+        %112 = OpFunctionCall %float %makeFrame_
+               OpStore %x_GLF_color %113
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %114
+%tint_symbol = OpFunctionParameter %main_out
+        %118 = OpLabel
+        %119 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %119
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %108
+        %121 = OpLabel
+        %122 = OpFunctionCall %void %main_1
+        %124 = OpLoad %v4float %x_GLF_color
+        %125 = OpCompositeConstruct %main_out %124
+        %123 = OpFunctionCall %void %tint_symbol_2 %125
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..d594596
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.spvasm.expected.wgsl
@@ -0,0 +1,112 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeFrame_() -> f32 {
+  var x_60 : f32;
+  var x_63_phi : f32;
+  loop {
+    var x_41 : bool;
+    var x_44 : f32;
+    var x_45 : f32;
+    var x_42 : bool;
+    var x_41_phi : bool;
+    var x_8_phi : i32;
+    var x_44_phi : f32;
+    var x_60_phi : f32;
+    var x_61_phi : bool;
+    x_41_phi = false;
+    x_8_phi = 0;
+    x_44_phi = 0.0;
+    loop {
+      var x_50 : f32;
+      var x_9 : i32;
+      var x_52 : bool;
+      var x_7 : i32;
+      var x_50_phi : f32;
+      var x_9_phi : i32;
+      var x_52_phi : bool;
+      var x_45_phi : f32;
+      var x_42_phi : bool;
+      x_41 = x_41_phi;
+      let x_8 : i32 = x_8_phi;
+      x_44 = x_44_phi;
+      x_60_phi = x_44;
+      x_61_phi = x_41;
+      if ((x_8 < 1)) {
+      } else {
+        break;
+      }
+      x_50_phi = x_44;
+      x_9_phi = x_8;
+      x_52_phi = x_41;
+      loop {
+        x_50 = x_50_phi;
+        x_9 = x_9_phi;
+        x_52 = x_52_phi;
+        let x_54 : f32 = x_6.injectionSwitch.y;
+        x_45_phi = x_50;
+        x_42_phi = x_52;
+        if ((1 < i32(x_54))) {
+        } else {
+          break;
+        }
+        x_45_phi = 1.0;
+        x_42_phi = true;
+        break;
+
+        continuing {
+          x_50_phi = 0.0;
+          x_9_phi = 0;
+          x_52_phi = false;
+        }
+      }
+      x_45 = x_45_phi;
+      x_42 = x_42_phi;
+      x_60_phi = x_45;
+      x_61_phi = x_42;
+      if (x_42) {
+        break;
+      }
+
+      continuing {
+        x_7 = bitcast<i32>((x_9 + bitcast<i32>(1)));
+        x_41_phi = x_42;
+        x_8_phi = x_7;
+        x_44_phi = x_45;
+      }
+    }
+    x_60 = x_60_phi;
+    let x_61 : bool = x_61_phi;
+    x_63_phi = x_60;
+    if (x_61) {
+      break;
+    }
+    x_63_phi = 1.0;
+    break;
+  }
+  let x_63 : f32 = x_63_phi;
+  return x_63;
+}
+
+fn main_1() {
+  let x_34 : f32 = makeFrame_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
new file mode 100644
index 0000000..d594596
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
@@ -0,0 +1,112 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeFrame_() -> f32 {
+  var x_60 : f32;
+  var x_63_phi : f32;
+  loop {
+    var x_41 : bool;
+    var x_44 : f32;
+    var x_45 : f32;
+    var x_42 : bool;
+    var x_41_phi : bool;
+    var x_8_phi : i32;
+    var x_44_phi : f32;
+    var x_60_phi : f32;
+    var x_61_phi : bool;
+    x_41_phi = false;
+    x_8_phi = 0;
+    x_44_phi = 0.0;
+    loop {
+      var x_50 : f32;
+      var x_9 : i32;
+      var x_52 : bool;
+      var x_7 : i32;
+      var x_50_phi : f32;
+      var x_9_phi : i32;
+      var x_52_phi : bool;
+      var x_45_phi : f32;
+      var x_42_phi : bool;
+      x_41 = x_41_phi;
+      let x_8 : i32 = x_8_phi;
+      x_44 = x_44_phi;
+      x_60_phi = x_44;
+      x_61_phi = x_41;
+      if ((x_8 < 1)) {
+      } else {
+        break;
+      }
+      x_50_phi = x_44;
+      x_9_phi = x_8;
+      x_52_phi = x_41;
+      loop {
+        x_50 = x_50_phi;
+        x_9 = x_9_phi;
+        x_52 = x_52_phi;
+        let x_54 : f32 = x_6.injectionSwitch.y;
+        x_45_phi = x_50;
+        x_42_phi = x_52;
+        if ((1 < i32(x_54))) {
+        } else {
+          break;
+        }
+        x_45_phi = 1.0;
+        x_42_phi = true;
+        break;
+
+        continuing {
+          x_50_phi = 0.0;
+          x_9_phi = 0;
+          x_52_phi = false;
+        }
+      }
+      x_45 = x_45_phi;
+      x_42 = x_42_phi;
+      x_60_phi = x_45;
+      x_61_phi = x_42;
+      if (x_42) {
+        break;
+      }
+
+      continuing {
+        x_7 = bitcast<i32>((x_9 + bitcast<i32>(1)));
+        x_41_phi = x_42;
+        x_8_phi = x_7;
+        x_44_phi = x_45;
+      }
+    }
+    x_60 = x_60_phi;
+    let x_61 : bool = x_61_phi;
+    x_63_phi = x_60;
+    if (x_61) {
+      break;
+    }
+    x_63_phi = 1.0;
+    break;
+  }
+  let x_63 : f32 = x_63_phi;
+  return x_63;
+}
+
+fn main_1() {
+  let x_34 : f32 = makeFrame_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..569cc6a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.hlsl
@@ -0,0 +1,108 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float makeFrame_() {
+  float x_60 = 0.0f;
+  float x_63_phi = 0.0f;
+  while (true) {
+    bool x_41 = false;
+    float x_44 = 0.0f;
+    float x_45 = 0.0f;
+    bool x_42 = false;
+    bool x_41_phi = false;
+    int x_8_phi = 0;
+    float x_44_phi = 0.0f;
+    float x_60_phi = 0.0f;
+    bool x_61_phi = false;
+    x_41_phi = false;
+    x_8_phi = 0;
+    x_44_phi = 0.0f;
+    while (true) {
+      float x_50 = 0.0f;
+      int x_9 = 0;
+      bool x_52 = false;
+      int x_7 = 0;
+      float x_50_phi = 0.0f;
+      int x_9_phi = 0;
+      bool x_52_phi = false;
+      float x_45_phi = 0.0f;
+      bool x_42_phi = false;
+      x_41 = x_41_phi;
+      const int x_8 = x_8_phi;
+      x_44 = x_44_phi;
+      x_60_phi = x_44;
+      x_61_phi = x_41;
+      if ((x_8 < 1)) {
+      } else {
+        break;
+      }
+      x_50_phi = x_44;
+      x_9_phi = x_8;
+      x_52_phi = x_41;
+      while (true) {
+        x_50 = x_50_phi;
+        x_9 = x_9_phi;
+        x_52 = x_52_phi;
+        const float x_54 = asfloat(x_6[0].y);
+        x_45_phi = x_50;
+        x_42_phi = x_52;
+        if ((1 < int(x_54))) {
+        } else {
+          break;
+        }
+        x_45_phi = 1.0f;
+        x_42_phi = true;
+        break;
+        {
+          x_50_phi = 0.0f;
+          x_9_phi = 0;
+          x_52_phi = false;
+        }
+      }
+      x_45 = x_45_phi;
+      x_42 = x_42_phi;
+      x_60_phi = x_45;
+      x_61_phi = x_42;
+      if (x_42) {
+        break;
+      }
+      {
+        x_7 = asint((x_9 + asint(1)));
+        x_41_phi = x_42;
+        x_8_phi = x_7;
+        x_44_phi = x_45;
+      }
+    }
+    x_60 = x_60_phi;
+    const bool x_61 = x_61_phi;
+    x_63_phi = x_60;
+    if (x_61) {
+      break;
+    }
+    x_63_phi = 1.0f;
+    break;
+  }
+  return x_63_phi;
+}
+
+void main_1() {
+  const float x_34 = makeFrame_();
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.msl
new file mode 100644
index 0000000..c1f7672
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float makeFrame_(constant buf0& x_6) {
+  float x_60 = 0.0f;
+  float x_63_phi = 0.0f;
+  while (true) {
+    bool x_41 = false;
+    float x_44 = 0.0f;
+    float x_45 = 0.0f;
+    bool x_42 = false;
+    bool x_41_phi = false;
+    int x_8_phi = 0;
+    float x_44_phi = 0.0f;
+    float x_60_phi = 0.0f;
+    bool x_61_phi = false;
+    x_41_phi = false;
+    x_8_phi = 0;
+    x_44_phi = 0.0f;
+    while (true) {
+      float x_50 = 0.0f;
+      int x_9 = 0;
+      bool x_52 = false;
+      int x_7 = 0;
+      float x_50_phi = 0.0f;
+      int x_9_phi = 0;
+      bool x_52_phi = false;
+      float x_45_phi = 0.0f;
+      bool x_42_phi = false;
+      x_41 = x_41_phi;
+      int const x_8 = x_8_phi;
+      x_44 = x_44_phi;
+      x_60_phi = x_44;
+      x_61_phi = x_41;
+      if ((x_8 < 1)) {
+      } else {
+        break;
+      }
+      x_50_phi = x_44;
+      x_9_phi = x_8;
+      x_52_phi = x_41;
+      while (true) {
+        x_50 = x_50_phi;
+        x_9 = x_9_phi;
+        x_52 = x_52_phi;
+        float const x_54 = x_6.injectionSwitch.y;
+        x_45_phi = x_50;
+        x_42_phi = x_52;
+        if ((1 < int(x_54))) {
+        } else {
+          break;
+        }
+        x_45_phi = 1.0f;
+        x_42_phi = true;
+        break;
+        {
+          x_50_phi = 0.0f;
+          x_9_phi = 0;
+          x_52_phi = false;
+        }
+      }
+      x_45 = x_45_phi;
+      x_42 = x_42_phi;
+      x_60_phi = x_45;
+      x_61_phi = x_42;
+      if (x_42) {
+        break;
+      }
+      {
+        x_7 = as_type<int>((x_9 + as_type<int>(1)));
+        x_41_phi = x_42;
+        x_8_phi = x_7;
+        x_44_phi = x_45;
+      }
+    }
+    x_60 = x_60_phi;
+    bool const x_61 = x_61_phi;
+    x_63_phi = x_60;
+    if (x_61) {
+      break;
+    }
+    x_63_phi = 1.0f;
+    break;
+  }
+  float const x_63 = x_63_phi;
+  return x_63;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float const x_34 = makeFrame_(x_6);
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..ecb0861
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.spvasm
@@ -0,0 +1,243 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 126
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeFrame_ "makeFrame_"
+               OpName %x_60 "x_60"
+               OpName %x_63_phi "x_63_phi"
+               OpName %x_41 "x_41"
+               OpName %x_44 "x_44"
+               OpName %x_45 "x_45"
+               OpName %x_42 "x_42"
+               OpName %x_41_phi "x_41_phi"
+               OpName %x_8_phi "x_8_phi"
+               OpName %x_44_phi "x_44_phi"
+               OpName %x_60_phi "x_60_phi"
+               OpName %x_61_phi "x_61_phi"
+               OpName %x_50 "x_50"
+               OpName %x_9 "x_9"
+               OpName %x_52 "x_52"
+               OpName %x_7 "x_7"
+               OpName %x_50_phi "x_50_phi"
+               OpName %x_9_phi "x_9_phi"
+               OpName %x_52_phi "x_52_phi"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+         %12 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %26 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+       %void = OpTypeVoid
+        %108 = OpTypeFunction %void
+        %113 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %114 = OpTypeFunction %void %main_out
+ %makeFrame_ = OpFunction %float None %12
+         %14 = OpLabel
+       %x_60 = OpVariable %_ptr_Function_float Function %17
+   %x_63_phi = OpVariable %_ptr_Function_float Function %17
+       %x_41 = OpVariable %_ptr_Function_bool Function %26
+       %x_44 = OpVariable %_ptr_Function_float Function %17
+       %x_45 = OpVariable %_ptr_Function_float Function %17
+       %x_42 = OpVariable %_ptr_Function_bool Function %26
+   %x_41_phi = OpVariable %_ptr_Function_bool Function %26
+    %x_8_phi = OpVariable %_ptr_Function_int Function %34
+   %x_44_phi = OpVariable %_ptr_Function_float Function %17
+   %x_60_phi = OpVariable %_ptr_Function_float Function %17
+   %x_61_phi = OpVariable %_ptr_Function_bool Function %26
+       %x_50 = OpVariable %_ptr_Function_float Function %17
+        %x_9 = OpVariable %_ptr_Function_int Function %34
+       %x_52 = OpVariable %_ptr_Function_bool Function %26
+        %x_7 = OpVariable %_ptr_Function_int Function %34
+   %x_50_phi = OpVariable %_ptr_Function_float Function %17
+    %x_9_phi = OpVariable %_ptr_Function_int Function %34
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %26
+   %x_45_phi = OpVariable %_ptr_Function_float Function %17
+   %x_42_phi = OpVariable %_ptr_Function_bool Function %26
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+               OpStore %x_41_phi %false
+               OpStore %x_8_phi %int_0
+               OpStore %x_44_phi %float_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %54 = OpLoad %bool %x_41_phi
+               OpStore %x_41 %54
+         %55 = OpLoad %int %x_8_phi
+         %56 = OpLoad %float %x_44_phi
+               OpStore %x_44 %56
+         %57 = OpLoad %float %x_44
+               OpStore %x_60_phi %57
+         %58 = OpLoad %bool %x_41
+               OpStore %x_61_phi %58
+         %60 = OpSLessThan %bool %55 %int_1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %42
+         %61 = OpLabel
+         %64 = OpLoad %float %x_44
+               OpStore %x_50_phi %64
+               OpStore %x_9_phi %55
+         %65 = OpLoad %bool %x_41
+               OpStore %x_52_phi %65
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %70 = OpLoad %float %x_50_phi
+               OpStore %x_50 %70
+         %71 = OpLoad %int %x_9_phi
+               OpStore %x_9 %71
+         %72 = OpLoad %bool %x_52_phi
+               OpStore %x_52 %72
+         %77 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpLoad %float %x_50
+               OpStore %x_45_phi %79
+         %80 = OpLoad %bool %x_52
+               OpStore %x_42_phi %80
+         %81 = OpConvertFToS %int %78
+         %82 = OpSLessThan %bool %int_1 %81
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %67
+         %83 = OpLabel
+               OpStore %x_45_phi %float_1
+               OpStore %x_42_phi %true
+               OpBranch %67
+         %68 = OpLabel
+               OpStore %x_50_phi %float_0
+               OpStore %x_9_phi %int_0
+               OpStore %x_52_phi %false
+               OpBranch %66
+         %67 = OpLabel
+         %88 = OpLoad %float %x_45_phi
+               OpStore %x_45 %88
+         %89 = OpLoad %bool %x_42_phi
+               OpStore %x_42 %89
+         %90 = OpLoad %float %x_45
+               OpStore %x_60_phi %90
+         %91 = OpLoad %bool %x_42
+               OpStore %x_61_phi %91
+         %92 = OpLoad %bool %x_42
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+               OpBranch %42
+         %93 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+         %96 = OpLoad %int %x_9
+         %97 = OpCopyObject %int %int_1
+         %98 = OpIAdd %int %96 %97
+         %95 = OpCopyObject %int %98
+               OpStore %x_7 %95
+         %99 = OpLoad %bool %x_42
+               OpStore %x_41_phi %99
+        %100 = OpLoad %int %x_7
+               OpStore %x_8_phi %100
+        %101 = OpLoad %float %x_45
+               OpStore %x_44_phi %101
+               OpBranch %41
+         %42 = OpLabel
+        %102 = OpLoad %float %x_60_phi
+               OpStore %x_60 %102
+        %103 = OpLoad %bool %x_61_phi
+        %104 = OpLoad %float %x_60
+               OpStore %x_63_phi %104
+               OpSelectionMerge %105 None
+               OpBranchConditional %103 %106 %105
+        %106 = OpLabel
+               OpBranch %20
+        %105 = OpLabel
+               OpStore %x_63_phi %float_1
+               OpBranch %20
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+        %107 = OpLoad %float %x_63_phi
+               OpReturnValue %107
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %108
+        %111 = OpLabel
+        %112 = OpFunctionCall %float %makeFrame_
+               OpStore %x_GLF_color %113
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %114
+%tint_symbol = OpFunctionParameter %main_out
+        %118 = OpLabel
+        %119 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %119
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %108
+        %121 = OpLabel
+        %122 = OpFunctionCall %void %main_1
+        %124 = OpLoad %v4float %x_GLF_color
+        %125 = OpCompositeConstruct %main_out %124
+        %123 = OpFunctionCall %void %tint_symbol_2 %125
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..d594596
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl.expected.wgsl
@@ -0,0 +1,112 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeFrame_() -> f32 {
+  var x_60 : f32;
+  var x_63_phi : f32;
+  loop {
+    var x_41 : bool;
+    var x_44 : f32;
+    var x_45 : f32;
+    var x_42 : bool;
+    var x_41_phi : bool;
+    var x_8_phi : i32;
+    var x_44_phi : f32;
+    var x_60_phi : f32;
+    var x_61_phi : bool;
+    x_41_phi = false;
+    x_8_phi = 0;
+    x_44_phi = 0.0;
+    loop {
+      var x_50 : f32;
+      var x_9 : i32;
+      var x_52 : bool;
+      var x_7 : i32;
+      var x_50_phi : f32;
+      var x_9_phi : i32;
+      var x_52_phi : bool;
+      var x_45_phi : f32;
+      var x_42_phi : bool;
+      x_41 = x_41_phi;
+      let x_8 : i32 = x_8_phi;
+      x_44 = x_44_phi;
+      x_60_phi = x_44;
+      x_61_phi = x_41;
+      if ((x_8 < 1)) {
+      } else {
+        break;
+      }
+      x_50_phi = x_44;
+      x_9_phi = x_8;
+      x_52_phi = x_41;
+      loop {
+        x_50 = x_50_phi;
+        x_9 = x_9_phi;
+        x_52 = x_52_phi;
+        let x_54 : f32 = x_6.injectionSwitch.y;
+        x_45_phi = x_50;
+        x_42_phi = x_52;
+        if ((1 < i32(x_54))) {
+        } else {
+          break;
+        }
+        x_45_phi = 1.0;
+        x_42_phi = true;
+        break;
+
+        continuing {
+          x_50_phi = 0.0;
+          x_9_phi = 0;
+          x_52_phi = false;
+        }
+      }
+      x_45 = x_45_phi;
+      x_42 = x_42_phi;
+      x_60_phi = x_45;
+      x_61_phi = x_42;
+      if (x_42) {
+        break;
+      }
+
+      continuing {
+        x_7 = bitcast<i32>((x_9 + bitcast<i32>(1)));
+        x_41_phi = x_42;
+        x_8_phi = x_7;
+        x_44_phi = x_45;
+      }
+    }
+    x_60 = x_60_phi;
+    let x_61 : bool = x_61_phi;
+    x_63_phi = x_60;
+    if (x_61) {
+      break;
+    }
+    x_63_phi = 1.0;
+    break;
+  }
+  let x_63 : f32 = x_63_phi;
+  return x_63;
+}
+
+fn main_1() {
+  let x_34 : f32 = makeFrame_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm
new file mode 100644
index 0000000..9ec352e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm
@@ -0,0 +1,96 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "f1"
+               OpMemberName %S 1 "f2"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %S 0 RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %6 RelaxedPrecision
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+          %S = OpTypeStruct %int %mat2v2float
+%_ptr_Function_S = OpTypePointer Function %S
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+         %25 = OpConstantComposite %v2float %float_1 %float_2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %28 = OpConstantComposite %v2float %float_3 %float_4
+         %29 = OpConstantComposite %mat2v2float %25 %28
+  %float_0_5 = OpConstant %float 0.5
+ %float_n0_5 = OpConstant %float -0.5
+         %32 = OpConstantComposite %v2float %float_0_5 %float_n0_5
+         %33 = OpConstantComposite %v2float %float_n0_5 %float_0_5
+         %34 = OpConstantComposite %mat2v2float %32 %33
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_0 = OpConstant %int 0
+%_ptr_Function_int = OpTypePointer Function %int
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %main = OpFunction %void None %8
+         %40 = OpLabel
+         %41 = OpVariable %_ptr_Function_mat2v2float Function
+          %6 = OpVariable %_ptr_Function_int Function
+         %42 = OpVariable %_ptr_Function_mat2v2float Function
+         %43 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %44 = OpLoad %float %43
+         %45 = OpFOrdLessThan %bool %44 %float_0
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %42 %29
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %42 %34
+               OpBranch %46
+         %46 = OpLabel
+         %49 = OpPhi %mat2v2float %29 %47 %34 %48
+         %50 = OpTranspose %mat2v2float %49
+         %51 = OpCompositeConstruct %S %int_1 %50
+         %52 = OpCompositeExtract %int %51 0
+               OpStore %6 %52
+         %53 = OpCompositeExtract %mat2v2float %51 1
+               OpStore %41 %53
+         %54 = OpConvertSToF %float %52
+         %55 = OpAccessChain %_ptr_Function_float %41 %int_0 %uint_0
+         %56 = OpLoad %mat2v2float %41
+         %57 = OpCompositeExtract %float %56 0 0
+         %58 = OpAccessChain %_ptr_Function_float %41 %int_1 %uint_0
+         %59 = OpLoad %mat2v2float %41
+         %60 = OpCompositeExtract %float %59 1 0
+         %61 = OpFAdd %float %57 %60
+         %62 = OpAccessChain %_ptr_Function_float %41 %int_0 %uint_1
+         %63 = OpLoad %mat2v2float %41
+         %64 = OpCompositeExtract %float %63 0 1
+         %65 = OpAccessChain %_ptr_Function_float %41 %int_1 %uint_1
+         %66 = OpLoad %mat2v2float %41
+         %67 = OpCompositeExtract %float %66 1 1
+         %68 = OpFAdd %float %64 %67
+         %69 = OpConvertSToF %float %52
+         %70 = OpCompositeConstruct %v4float %54 %61 %68 %69
+               OpStore %_GLF_color %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c0d5468
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,50 @@
+struct S {
+  int f1;
+  float2x2 f2;
+};
+
+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() {
+  float2x2 x_41 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_6 = 0;
+  float2x2 x_42 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 x_49_phi = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_44 = gl_FragCoord.x;
+  if ((x_44 < 0.0f)) {
+    x_42 = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+    x_49_phi = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+  } else {
+    x_42 = float2x2(float2(0.5f, -0.5f), float2(-0.5f, 0.5f));
+    x_49_phi = float2x2(float2(0.5f, -0.5f), float2(-0.5f, 0.5f));
+  }
+  const S x_51 = {1, transpose(x_49_phi)};
+  const int x_52 = x_51.f1;
+  x_6 = x_52;
+  x_41 = x_51.f2;
+  const float2x2 x_56 = x_41;
+  const float2x2 x_59 = x_41;
+  const float2x2 x_63 = x_41;
+  x_GLF_color = float4(float(x_52), (x_56[0u].x + x_59[1u].x), (x_63[0u].y + x_41[1u].y), float(x_52));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..256e64b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int f1;
+  float2x2 f2;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2x2 x_41 = float2x2(0.0f);
+  int x_6 = 0;
+  float2x2 x_42 = float2x2(0.0f);
+  float2x2 x_49_phi = float2x2(0.0f);
+  float const x_44 = (*(tint_symbol_5)).x;
+  if ((x_44 < 0.0f)) {
+    x_42 = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+    x_49_phi = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+  } else {
+    x_42 = float2x2(float2(0.5f, -0.5f), float2(-0.5f, 0.5f));
+    x_49_phi = float2x2(float2(0.5f, -0.5f), float2(-0.5f, 0.5f));
+  }
+  float2x2 const x_49 = x_49_phi;
+  S const x_51 = {.f1=1, .f2=transpose(x_49)};
+  int const x_52 = x_51.f1;
+  x_6 = x_52;
+  x_41 = x_51.f2;
+  float2x2 const x_56 = x_41;
+  float2x2 const x_59 = x_41;
+  float2x2 const x_63 = x_41;
+  float2x2 const x_66 = x_41;
+  *(tint_symbol_6) = float4(float(x_52), (x_56[0u].x + x_59[1u].x), (x_63[0u].y + x_66[1u].y), float(x_52));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5706393
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,138 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 87
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_41 "x_41"
+               OpName %x_6 "x_6"
+               OpName %x_42 "x_42"
+               OpName %x_49_phi "x_49_phi"
+               OpName %S "S"
+               OpMemberName %S 0 "f1"
+               OpMemberName %S 1 "f2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 8
+               OpMemberDecorate %S 1 ColMajor
+               OpMemberDecorate %S 1 MatrixStride 8
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %19 = OpConstantNull %mat2v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+         %39 = OpConstantComposite %v2float %float_1 %float_2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %42 = OpConstantComposite %v2float %float_3 %float_4
+         %43 = OpConstantComposite %mat2v2float %39 %42
+  %float_0_5 = OpConstant %float 0.5
+ %float_n0_5 = OpConstant %float -0.5
+         %46 = OpConstantComposite %v2float %float_0_5 %float_n0_5
+         %47 = OpConstantComposite %v2float %float_n0_5 %float_0_5
+         %48 = OpConstantComposite %mat2v2float %46 %47
+          %S = OpTypeStruct %int %mat2v2float
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_41 = OpVariable %_ptr_Function_mat2v2float Function %19
+        %x_6 = OpVariable %_ptr_Function_int Function %23
+       %x_42 = OpVariable %_ptr_Function_mat2v2float Function %19
+   %x_49_phi = OpVariable %_ptr_Function_mat2v2float Function %19
+         %29 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpFOrdLessThan %bool %30 %float_0
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpStore %x_42 %43
+               OpStore %x_49_phi %43
+               OpBranch %34
+         %36 = OpLabel
+               OpStore %x_42 %48
+               OpStore %x_49_phi %48
+               OpBranch %34
+         %34 = OpLabel
+         %49 = OpLoad %mat2v2float %x_49_phi
+         %52 = OpTranspose %mat2v2float %49
+         %53 = OpCompositeConstruct %S %int_1 %52
+         %54 = OpCompositeExtract %int %53 0
+               OpStore %x_6 %54
+         %55 = OpCompositeExtract %mat2v2float %53 1
+               OpStore %x_41 %55
+         %56 = OpLoad %mat2v2float %x_41
+         %57 = OpLoad %mat2v2float %x_41
+         %58 = OpLoad %mat2v2float %x_41
+         %59 = OpLoad %mat2v2float %x_41
+         %60 = OpConvertSToF %float %54
+         %61 = OpCompositeExtract %v2float %56 0
+         %62 = OpCompositeExtract %float %61 0
+         %64 = OpCompositeExtract %v2float %57 1
+         %65 = OpCompositeExtract %float %64 0
+         %66 = OpFAdd %float %62 %65
+         %67 = OpCompositeExtract %v2float %58 0
+         %68 = OpCompositeExtract %float %67 1
+         %69 = OpCompositeExtract %v2float %59 1
+         %70 = OpCompositeExtract %float %69 1
+         %71 = OpFAdd %float %68 %70
+         %72 = OpConvertSToF %float %54
+         %73 = OpCompositeConstruct %v4float %60 %66 %71 %72
+               OpStore %x_GLF_color %73
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %74
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %81 = OpLabel
+         %82 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %82
+         %83 = OpFunctionCall %void %main_1
+         %85 = OpLoad %v4float %x_GLF_color
+         %86 = OpCompositeConstruct %main_out %85
+         %84 = OpFunctionCall %void %tint_symbol_3 %86
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..4df9f94
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,50 @@
+struct S {
+  f1 : i32;
+  f2 : mat2x2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_41 : mat2x2<f32>;
+  var x_6 : i32;
+  var x_42 : mat2x2<f32>;
+  var x_49_phi : mat2x2<f32>;
+  let x_44 : f32 = gl_FragCoord.x;
+  if ((x_44 < 0.0)) {
+    x_42 = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
+    x_49_phi = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
+  } else {
+    x_42 = mat2x2<f32>(vec2<f32>(0.5, -0.5), vec2<f32>(-0.5, 0.5));
+    x_49_phi = mat2x2<f32>(vec2<f32>(0.5, -0.5), vec2<f32>(-0.5, 0.5));
+  }
+  let x_49 : mat2x2<f32> = x_49_phi;
+  let x_51 : S = S(1, transpose(x_49));
+  let x_52 : i32 = x_51.f1;
+  x_6 = x_52;
+  x_41 = x_51.f2;
+  let x_55 : ptr<function, f32> = &(x_41[0].x);
+  let x_56 : mat2x2<f32> = x_41;
+  let x_58 : ptr<function, f32> = &(x_41[1].x);
+  let x_59 : mat2x2<f32> = x_41;
+  let x_62 : ptr<function, f32> = &(x_41[0].y);
+  let x_63 : mat2x2<f32> = x_41;
+  let x_65 : ptr<function, f32> = &(x_41[1].y);
+  let x_66 : mat2x2<f32> = x_41;
+  x_GLF_color = vec4<f32>(f32(x_52), (x_56[0u].x + x_59[1u].x), (x_63[0u].y + x_66[1u].y), f32(x_52));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
new file mode 100644
index 0000000..4df9f94
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
@@ -0,0 +1,50 @@
+struct S {
+  f1 : i32;
+  f2 : mat2x2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_41 : mat2x2<f32>;
+  var x_6 : i32;
+  var x_42 : mat2x2<f32>;
+  var x_49_phi : mat2x2<f32>;
+  let x_44 : f32 = gl_FragCoord.x;
+  if ((x_44 < 0.0)) {
+    x_42 = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
+    x_49_phi = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
+  } else {
+    x_42 = mat2x2<f32>(vec2<f32>(0.5, -0.5), vec2<f32>(-0.5, 0.5));
+    x_49_phi = mat2x2<f32>(vec2<f32>(0.5, -0.5), vec2<f32>(-0.5, 0.5));
+  }
+  let x_49 : mat2x2<f32> = x_49_phi;
+  let x_51 : S = S(1, transpose(x_49));
+  let x_52 : i32 = x_51.f1;
+  x_6 = x_52;
+  x_41 = x_51.f2;
+  let x_55 : ptr<function, f32> = &(x_41[0].x);
+  let x_56 : mat2x2<f32> = x_41;
+  let x_58 : ptr<function, f32> = &(x_41[1].x);
+  let x_59 : mat2x2<f32> = x_41;
+  let x_62 : ptr<function, f32> = &(x_41[0].y);
+  let x_63 : mat2x2<f32> = x_41;
+  let x_65 : ptr<function, f32> = &(x_41[1].y);
+  let x_66 : mat2x2<f32> = x_41;
+  x_GLF_color = vec4<f32>(f32(x_52), (x_56[0u].x + x_59[1u].x), (x_63[0u].y + x_66[1u].y), f32(x_52));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c0d5468
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,50 @@
+struct S {
+  int f1;
+  float2x2 f2;
+};
+
+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() {
+  float2x2 x_41 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_6 = 0;
+  float2x2 x_42 = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 x_49_phi = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_44 = gl_FragCoord.x;
+  if ((x_44 < 0.0f)) {
+    x_42 = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+    x_49_phi = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+  } else {
+    x_42 = float2x2(float2(0.5f, -0.5f), float2(-0.5f, 0.5f));
+    x_49_phi = float2x2(float2(0.5f, -0.5f), float2(-0.5f, 0.5f));
+  }
+  const S x_51 = {1, transpose(x_49_phi)};
+  const int x_52 = x_51.f1;
+  x_6 = x_52;
+  x_41 = x_51.f2;
+  const float2x2 x_56 = x_41;
+  const float2x2 x_59 = x_41;
+  const float2x2 x_63 = x_41;
+  x_GLF_color = float4(float(x_52), (x_56[0u].x + x_59[1u].x), (x_63[0u].y + x_41[1u].y), float(x_52));
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..256e64b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.msl
@@ -0,0 +1,50 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int f1;
+  float2x2 f2;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2x2 x_41 = float2x2(0.0f);
+  int x_6 = 0;
+  float2x2 x_42 = float2x2(0.0f);
+  float2x2 x_49_phi = float2x2(0.0f);
+  float const x_44 = (*(tint_symbol_5)).x;
+  if ((x_44 < 0.0f)) {
+    x_42 = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+    x_49_phi = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
+  } else {
+    x_42 = float2x2(float2(0.5f, -0.5f), float2(-0.5f, 0.5f));
+    x_49_phi = float2x2(float2(0.5f, -0.5f), float2(-0.5f, 0.5f));
+  }
+  float2x2 const x_49 = x_49_phi;
+  S const x_51 = {.f1=1, .f2=transpose(x_49)};
+  int const x_52 = x_51.f1;
+  x_6 = x_52;
+  x_41 = x_51.f2;
+  float2x2 const x_56 = x_41;
+  float2x2 const x_59 = x_41;
+  float2x2 const x_63 = x_41;
+  float2x2 const x_66 = x_41;
+  *(tint_symbol_6) = float4(float(x_52), (x_56[0u].x + x_59[1u].x), (x_63[0u].y + x_66[1u].y), float(x_52));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5706393
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,138 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 87
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_41 "x_41"
+               OpName %x_6 "x_6"
+               OpName %x_42 "x_42"
+               OpName %x_49_phi "x_49_phi"
+               OpName %S "S"
+               OpMemberName %S 0 "f1"
+               OpMemberName %S 1 "f2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 8
+               OpMemberDecorate %S 1 ColMajor
+               OpMemberDecorate %S 1 MatrixStride 8
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %19 = OpConstantNull %mat2v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+         %39 = OpConstantComposite %v2float %float_1 %float_2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %42 = OpConstantComposite %v2float %float_3 %float_4
+         %43 = OpConstantComposite %mat2v2float %39 %42
+  %float_0_5 = OpConstant %float 0.5
+ %float_n0_5 = OpConstant %float -0.5
+         %46 = OpConstantComposite %v2float %float_0_5 %float_n0_5
+         %47 = OpConstantComposite %v2float %float_n0_5 %float_0_5
+         %48 = OpConstantComposite %mat2v2float %46 %47
+          %S = OpTypeStruct %int %mat2v2float
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_41 = OpVariable %_ptr_Function_mat2v2float Function %19
+        %x_6 = OpVariable %_ptr_Function_int Function %23
+       %x_42 = OpVariable %_ptr_Function_mat2v2float Function %19
+   %x_49_phi = OpVariable %_ptr_Function_mat2v2float Function %19
+         %29 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpFOrdLessThan %bool %30 %float_0
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpStore %x_42 %43
+               OpStore %x_49_phi %43
+               OpBranch %34
+         %36 = OpLabel
+               OpStore %x_42 %48
+               OpStore %x_49_phi %48
+               OpBranch %34
+         %34 = OpLabel
+         %49 = OpLoad %mat2v2float %x_49_phi
+         %52 = OpTranspose %mat2v2float %49
+         %53 = OpCompositeConstruct %S %int_1 %52
+         %54 = OpCompositeExtract %int %53 0
+               OpStore %x_6 %54
+         %55 = OpCompositeExtract %mat2v2float %53 1
+               OpStore %x_41 %55
+         %56 = OpLoad %mat2v2float %x_41
+         %57 = OpLoad %mat2v2float %x_41
+         %58 = OpLoad %mat2v2float %x_41
+         %59 = OpLoad %mat2v2float %x_41
+         %60 = OpConvertSToF %float %54
+         %61 = OpCompositeExtract %v2float %56 0
+         %62 = OpCompositeExtract %float %61 0
+         %64 = OpCompositeExtract %v2float %57 1
+         %65 = OpCompositeExtract %float %64 0
+         %66 = OpFAdd %float %62 %65
+         %67 = OpCompositeExtract %v2float %58 0
+         %68 = OpCompositeExtract %float %67 1
+         %69 = OpCompositeExtract %v2float %59 1
+         %70 = OpCompositeExtract %float %69 1
+         %71 = OpFAdd %float %68 %70
+         %72 = OpConvertSToF %float %54
+         %73 = OpCompositeConstruct %v4float %60 %66 %71 %72
+               OpStore %x_GLF_color %73
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %74
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %81 = OpLabel
+         %82 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %82
+         %83 = OpFunctionCall %void %main_1
+         %85 = OpLoad %v4float %x_GLF_color
+         %86 = OpCompositeConstruct %main_out %85
+         %84 = OpFunctionCall %void %tint_symbol_3 %86
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..4df9f94
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,50 @@
+struct S {
+  f1 : i32;
+  f2 : mat2x2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_41 : mat2x2<f32>;
+  var x_6 : i32;
+  var x_42 : mat2x2<f32>;
+  var x_49_phi : mat2x2<f32>;
+  let x_44 : f32 = gl_FragCoord.x;
+  if ((x_44 < 0.0)) {
+    x_42 = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
+    x_49_phi = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
+  } else {
+    x_42 = mat2x2<f32>(vec2<f32>(0.5, -0.5), vec2<f32>(-0.5, 0.5));
+    x_49_phi = mat2x2<f32>(vec2<f32>(0.5, -0.5), vec2<f32>(-0.5, 0.5));
+  }
+  let x_49 : mat2x2<f32> = x_49_phi;
+  let x_51 : S = S(1, transpose(x_49));
+  let x_52 : i32 = x_51.f1;
+  x_6 = x_52;
+  x_41 = x_51.f2;
+  let x_55 : ptr<function, f32> = &(x_41[0].x);
+  let x_56 : mat2x2<f32> = x_41;
+  let x_58 : ptr<function, f32> = &(x_41[1].x);
+  let x_59 : mat2x2<f32> = x_41;
+  let x_62 : ptr<function, f32> = &(x_41[0].y);
+  let x_63 : mat2x2<f32> = x_41;
+  let x_65 : ptr<function, f32> = &(x_41[1].y);
+  let x_66 : mat2x2<f32> = x_41;
+  x_GLF_color = vec4<f32>(f32(x_52), (x_56[0u].x + x_59[1u].x), (x_63[0u].y + x_66[1u].y), f32(x_52));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm
new file mode 100644
index 0000000..d758ac5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm
@@ -0,0 +1,168 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %k "k"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %GLF_dead0j "GLF_dead0j"
+               OpName %donor_replacementGLF_dead0stack "donor_replacementGLF_dead0stack"
+               OpName %donor_replacementGLF_dead0top "donor_replacementGLF_dead0top"
+               OpName %matrix_b "matrix_b"
+               OpName %b "b"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %k RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %GLF_dead0j RelaxedPrecision
+               OpDecorate %donor_replacementGLF_dead0stack RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %donor_replacementGLF_dead0top RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %b RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %float_0 = OpConstant %float 0
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %int_9 = OpConstant %int 9
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %27
+         %53 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+ %GLF_dead0j = OpVariable %_ptr_Function_int Function
+%donor_replacementGLF_dead0stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+%donor_replacementGLF_dead0top = OpVariable %_ptr_Function_int Function
+         %54 = OpVariable %_ptr_Function_int Function
+   %matrix_b = OpVariable %_ptr_Function_v4float Function
+          %b = OpVariable %_ptr_Function_int Function
+               OpStore %k %int_0
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %12 = OpLoad %int %k
+         %59 = OpSLessThan %bool %12 %int_4
+               OpBranchConditional %59 %60 %56
+         %60 = OpLabel
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %62 = OpLoad %float %61
+         %63 = OpFOrdGreaterThan %bool %float_0 %62
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpStore %GLF_dead0j %int_1
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_int %donor_replacementGLF_dead0stack %int_0
+         %13 = OpLoad %int %70
+         %71 = OpSLessThanEqual %bool %int_1 %13
+               OpBranchConditional %71 %72 %67
+         %72 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %66
+         %67 = OpLabel
+         %14 = OpLoad %int %donor_replacementGLF_dead0top
+         %73 = OpSGreaterThanEqual %bool %14 %int_0
+         %15 = OpLoad %int %donor_replacementGLF_dead0top
+         %74 = OpSLessThan %bool %15 %int_9
+         %75 = OpLogicalAnd %bool %73 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+         %16 = OpLoad %int %donor_replacementGLF_dead0top
+         %17 = OpIAdd %int %16 %int_1
+               OpStore %donor_replacementGLF_dead0top %17
+               OpStore %54 %17
+               OpBranch %76
+         %78 = OpLabel
+               OpStore %54 %int_0
+               OpBranch %76
+         %76 = OpLabel
+         %18 = OpLoad %int %54
+         %79 = OpAccessChain %_ptr_Function_int %donor_replacementGLF_dead0stack %18
+               OpStore %79 %int_1
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %matrix_b %47
+               OpStore %b %int_3
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %19 = OpLoad %int %b
+         %84 = OpSGreaterThanEqual %bool %19 %int_0
+               OpBranchConditional %84 %85 %81
+         %85 = OpLabel
+         %20 = OpLoad %int %b
+         %21 = OpLoad %int %b
+         %86 = OpAccessChain %_ptr_Function_float %matrix_b %21
+         %87 = OpLoad %float %86
+         %88 = OpFSub %float %87 %float_1
+         %89 = OpAccessChain %_ptr_Function_float %matrix_b %20
+               OpStore %89 %88
+               OpBranch %82
+         %82 = OpLabel
+         %22 = OpLoad %int %b
+         %23 = OpISub %int %22 %int_1
+               OpStore %b %23
+               OpBranch %80
+         %81 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %24 = OpLoad %int %k
+         %25 = OpIAdd %int %24 %int_1
+               OpStore %k %25
+               OpBranch %55
+         %56 = OpLabel
+               OpStore %_GLF_color %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f1268b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,71 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int k = 0;
+  int GLF_dead0j = 0;
+  int donor_replacementGLF_dead0stack[10] = (int[10])0;
+  int donor_replacementGLF_dead0top = 0;
+  int x_54 = 0;
+  float4 matrix_b = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int b = 0;
+  k = 0;
+  {
+    for(; (k < 4); k = (k + 1)) {
+      const float x_62 = asfloat(x_6[0].y);
+      if ((0.0f > x_62)) {
+        GLF_dead0j = 1;
+        while (true) {
+          const int x_13 = donor_replacementGLF_dead0stack[0];
+          if ((1 <= x_13)) {
+          } else {
+            break;
+          }
+        }
+        bool tint_tmp = (donor_replacementGLF_dead0top >= 0);
+        if (tint_tmp) {
+          tint_tmp = (donor_replacementGLF_dead0top < 9);
+        }
+        if ((tint_tmp)) {
+          const int x_17 = (donor_replacementGLF_dead0top + 1);
+          donor_replacementGLF_dead0top = x_17;
+          x_54 = x_17;
+        } else {
+          x_54 = 0;
+        }
+        donor_replacementGLF_dead0stack[x_54] = 1;
+      }
+      matrix_b = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      b = 3;
+      {
+        for(; (b >= 0); b = (b - 1)) {
+          const int x_20 = b;
+          const float x_87 = matrix_b[b];
+          set_float4(matrix_b, x_20, (x_87 - 1.0f));
+        }
+      }
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..837b916
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,88 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int k = 0;
+  int GLF_dead0j = 0;
+  tint_array_wrapper donor_replacementGLF_dead0stack = {};
+  int donor_replacementGLF_dead0top = 0;
+  int x_54 = 0;
+  float4 matrix_b = 0.0f;
+  int b = 0;
+  k = 0;
+  while (true) {
+    int const x_12 = k;
+    if ((x_12 < 4)) {
+    } else {
+      break;
+    }
+    float const x_62 = x_6.injectionSwitch.y;
+    if ((0.0f > x_62)) {
+      GLF_dead0j = 1;
+      while (true) {
+        int const x_13 = donor_replacementGLF_dead0stack.arr[0];
+        if ((1 <= x_13)) {
+        } else {
+          break;
+        }
+      }
+      int const x_14 = donor_replacementGLF_dead0top;
+      int const x_15 = donor_replacementGLF_dead0top;
+      if (((x_14 >= 0) && (x_15 < 9))) {
+        int const x_16 = donor_replacementGLF_dead0top;
+        int const x_17 = (x_16 + 1);
+        donor_replacementGLF_dead0top = x_17;
+        x_54 = x_17;
+      } else {
+        x_54 = 0;
+      }
+      int const x_18 = x_54;
+      donor_replacementGLF_dead0stack.arr[x_18] = 1;
+    }
+    matrix_b = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    b = 3;
+    while (true) {
+      int const x_19 = b;
+      if ((x_19 >= 0)) {
+      } else {
+        break;
+      }
+      int const x_20 = b;
+      int const x_21 = b;
+      float const x_87 = matrix_b[x_21];
+      matrix_b[x_20] = (x_87 - 1.0f);
+      {
+        int const x_22 = b;
+        b = (x_22 - 1);
+      }
+    }
+    {
+      int const x_24 = k;
+      k = (x_24 + 1);
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..de2d980
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,205 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 115
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %k "k"
+               OpName %GLF_dead0j "GLF_dead0j"
+               OpName %donor_replacementGLF_dead0stack "donor_replacementGLF_dead0stack"
+               OpName %donor_replacementGLF_dead0top "donor_replacementGLF_dead0top"
+               OpName %x_54 "x_54"
+               OpName %matrix_b "matrix_b"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %26 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+         %79 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+        %102 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %103 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %19
+ %GLF_dead0j = OpVariable %_ptr_Function_int Function %19
+%donor_replacementGLF_dead0stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+%donor_replacementGLF_dead0top = OpVariable %_ptr_Function_int Function %19
+       %x_54 = OpVariable %_ptr_Function_int Function %19
+   %matrix_b = OpVariable %_ptr_Function_v4float Function %9
+          %b = OpVariable %_ptr_Function_int Function %19
+               OpStore %k %int_0
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %int %k
+         %39 = OpSLessThan %bool %37 %int_4
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %34
+         %41 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %48 = OpLoad %float %47
+         %50 = OpFOrdGreaterThan %bool %float_0 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpStore %GLF_dead0j %int_1
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Function_int %donor_replacementGLF_dead0stack %int_0
+         %59 = OpLoad %int %58
+         %60 = OpSLessThanEqual %bool %int_1 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %55
+         %61 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %54
+         %55 = OpLabel
+         %64 = OpLoad %int %donor_replacementGLF_dead0top
+         %65 = OpLoad %int %donor_replacementGLF_dead0top
+         %66 = OpSGreaterThanEqual %bool %64 %int_0
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+         %70 = OpSLessThan %bool %65 %int_9
+               OpBranch %67
+         %67 = OpLabel
+         %71 = OpPhi %bool %66 %55 %70 %68
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %74
+         %73 = OpLabel
+         %75 = OpLoad %int %donor_replacementGLF_dead0top
+         %76 = OpIAdd %int %75 %int_1
+               OpStore %donor_replacementGLF_dead0top %76
+               OpStore %x_54 %76
+               OpBranch %72
+         %74 = OpLabel
+               OpStore %x_54 %int_0
+               OpBranch %72
+         %72 = OpLabel
+         %77 = OpLoad %int %x_54
+         %78 = OpAccessChain %_ptr_Function_int %donor_replacementGLF_dead0stack %77
+               OpStore %78 %int_1
+               OpBranch %51
+         %51 = OpLabel
+               OpStore %matrix_b %79
+               OpStore %b %int_3
+               OpBranch %81
+         %81 = OpLabel
+               OpLoopMerge %82 %83 None
+               OpBranch %84
+         %84 = OpLabel
+         %85 = OpLoad %int %b
+         %86 = OpSGreaterThanEqual %bool %85 %int_0
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %82
+         %87 = OpLabel
+         %90 = OpLoad %int %b
+         %91 = OpLoad %int %b
+         %93 = OpAccessChain %_ptr_Function_float %matrix_b %91
+         %94 = OpLoad %float %93
+         %95 = OpAccessChain %_ptr_Function_float %matrix_b %90
+         %97 = OpFSub %float %94 %float_1
+               OpStore %95 %97
+               OpBranch %83
+         %83 = OpLabel
+         %98 = OpLoad %int %b
+         %99 = OpISub %int %98 %int_1
+               OpStore %b %99
+               OpBranch %81
+         %82 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+        %100 = OpLoad %int %k
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %k %101
+               OpBranch %33
+         %34 = OpLabel
+               OpStore %x_GLF_color %102
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %103
+%tint_symbol = OpFunctionParameter %main_out
+        %107 = OpLabel
+        %108 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %108
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %110 = OpLabel
+        %111 = OpFunctionCall %void %main_1
+        %113 = OpLoad %v4float %x_GLF_color
+        %114 = OpCompositeConstruct %main_out %113
+        %112 = OpFunctionCall %void %tint_symbol_2 %114
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..26a8a10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,85 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var k : i32;
+  var GLF_dead0j : i32;
+  var donor_replacementGLF_dead0stack : array<i32, 10>;
+  var donor_replacementGLF_dead0top : i32;
+  var x_54 : i32;
+  var matrix_b : vec4<f32>;
+  var b : i32;
+  k = 0;
+  loop {
+    let x_12 : i32 = k;
+    if ((x_12 < 4)) {
+    } else {
+      break;
+    }
+    let x_62 : f32 = x_6.injectionSwitch.y;
+    if ((0.0 > x_62)) {
+      GLF_dead0j = 1;
+      loop {
+        let x_13 : i32 = donor_replacementGLF_dead0stack[0];
+        if ((1 <= x_13)) {
+        } else {
+          break;
+        }
+      }
+      let x_14 : i32 = donor_replacementGLF_dead0top;
+      let x_15 : i32 = donor_replacementGLF_dead0top;
+      if (((x_14 >= 0) && (x_15 < 9))) {
+        let x_16 : i32 = donor_replacementGLF_dead0top;
+        let x_17 : i32 = (x_16 + 1);
+        donor_replacementGLF_dead0top = x_17;
+        x_54 = x_17;
+      } else {
+        x_54 = 0;
+      }
+      let x_18 : i32 = x_54;
+      donor_replacementGLF_dead0stack[x_18] = 1;
+    }
+    matrix_b = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    b = 3;
+    loop {
+      let x_19 : i32 = b;
+      if ((x_19 >= 0)) {
+      } else {
+        break;
+      }
+      let x_20 : i32 = b;
+      let x_21 : i32 = b;
+      let x_87 : f32 = matrix_b[x_21];
+      matrix_b[x_20] = (x_87 - 1.0);
+
+      continuing {
+        let x_22 : i32 = b;
+        b = (x_22 - 1);
+      }
+    }
+
+    continuing {
+      let x_24 : i32 = k;
+      k = (x_24 + 1);
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
new file mode 100644
index 0000000..26a8a10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
@@ -0,0 +1,85 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var k : i32;
+  var GLF_dead0j : i32;
+  var donor_replacementGLF_dead0stack : array<i32, 10>;
+  var donor_replacementGLF_dead0top : i32;
+  var x_54 : i32;
+  var matrix_b : vec4<f32>;
+  var b : i32;
+  k = 0;
+  loop {
+    let x_12 : i32 = k;
+    if ((x_12 < 4)) {
+    } else {
+      break;
+    }
+    let x_62 : f32 = x_6.injectionSwitch.y;
+    if ((0.0 > x_62)) {
+      GLF_dead0j = 1;
+      loop {
+        let x_13 : i32 = donor_replacementGLF_dead0stack[0];
+        if ((1 <= x_13)) {
+        } else {
+          break;
+        }
+      }
+      let x_14 : i32 = donor_replacementGLF_dead0top;
+      let x_15 : i32 = donor_replacementGLF_dead0top;
+      if (((x_14 >= 0) && (x_15 < 9))) {
+        let x_16 : i32 = donor_replacementGLF_dead0top;
+        let x_17 : i32 = (x_16 + 1);
+        donor_replacementGLF_dead0top = x_17;
+        x_54 = x_17;
+      } else {
+        x_54 = 0;
+      }
+      let x_18 : i32 = x_54;
+      donor_replacementGLF_dead0stack[x_18] = 1;
+    }
+    matrix_b = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    b = 3;
+    loop {
+      let x_19 : i32 = b;
+      if ((x_19 >= 0)) {
+      } else {
+        break;
+      }
+      let x_20 : i32 = b;
+      let x_21 : i32 = b;
+      let x_87 : f32 = matrix_b[x_21];
+      matrix_b[x_20] = (x_87 - 1.0);
+
+      continuing {
+        let x_22 : i32 = b;
+        b = (x_22 - 1);
+      }
+    }
+
+    continuing {
+      let x_24 : i32 = k;
+      k = (x_24 + 1);
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f1268b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,71 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int k = 0;
+  int GLF_dead0j = 0;
+  int donor_replacementGLF_dead0stack[10] = (int[10])0;
+  int donor_replacementGLF_dead0top = 0;
+  int x_54 = 0;
+  float4 matrix_b = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int b = 0;
+  k = 0;
+  {
+    for(; (k < 4); k = (k + 1)) {
+      const float x_62 = asfloat(x_6[0].y);
+      if ((0.0f > x_62)) {
+        GLF_dead0j = 1;
+        while (true) {
+          const int x_13 = donor_replacementGLF_dead0stack[0];
+          if ((1 <= x_13)) {
+          } else {
+            break;
+          }
+        }
+        bool tint_tmp = (donor_replacementGLF_dead0top >= 0);
+        if (tint_tmp) {
+          tint_tmp = (donor_replacementGLF_dead0top < 9);
+        }
+        if ((tint_tmp)) {
+          const int x_17 = (donor_replacementGLF_dead0top + 1);
+          donor_replacementGLF_dead0top = x_17;
+          x_54 = x_17;
+        } else {
+          x_54 = 0;
+        }
+        donor_replacementGLF_dead0stack[x_54] = 1;
+      }
+      matrix_b = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      b = 3;
+      {
+        for(; (b >= 0); b = (b - 1)) {
+          const int x_20 = b;
+          const float x_87 = matrix_b[b];
+          set_float4(matrix_b, x_20, (x_87 - 1.0f));
+        }
+      }
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..837b916
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,88 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int k = 0;
+  int GLF_dead0j = 0;
+  tint_array_wrapper donor_replacementGLF_dead0stack = {};
+  int donor_replacementGLF_dead0top = 0;
+  int x_54 = 0;
+  float4 matrix_b = 0.0f;
+  int b = 0;
+  k = 0;
+  while (true) {
+    int const x_12 = k;
+    if ((x_12 < 4)) {
+    } else {
+      break;
+    }
+    float const x_62 = x_6.injectionSwitch.y;
+    if ((0.0f > x_62)) {
+      GLF_dead0j = 1;
+      while (true) {
+        int const x_13 = donor_replacementGLF_dead0stack.arr[0];
+        if ((1 <= x_13)) {
+        } else {
+          break;
+        }
+      }
+      int const x_14 = donor_replacementGLF_dead0top;
+      int const x_15 = donor_replacementGLF_dead0top;
+      if (((x_14 >= 0) && (x_15 < 9))) {
+        int const x_16 = donor_replacementGLF_dead0top;
+        int const x_17 = (x_16 + 1);
+        donor_replacementGLF_dead0top = x_17;
+        x_54 = x_17;
+      } else {
+        x_54 = 0;
+      }
+      int const x_18 = x_54;
+      donor_replacementGLF_dead0stack.arr[x_18] = 1;
+    }
+    matrix_b = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    b = 3;
+    while (true) {
+      int const x_19 = b;
+      if ((x_19 >= 0)) {
+      } else {
+        break;
+      }
+      int const x_20 = b;
+      int const x_21 = b;
+      float const x_87 = matrix_b[x_21];
+      matrix_b[x_20] = (x_87 - 1.0f);
+      {
+        int const x_22 = b;
+        b = (x_22 - 1);
+      }
+    }
+    {
+      int const x_24 = k;
+      k = (x_24 + 1);
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..de2d980
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,205 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 115
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %k "k"
+               OpName %GLF_dead0j "GLF_dead0j"
+               OpName %donor_replacementGLF_dead0stack "donor_replacementGLF_dead0stack"
+               OpName %donor_replacementGLF_dead0top "donor_replacementGLF_dead0top"
+               OpName %x_54 "x_54"
+               OpName %matrix_b "matrix_b"
+               OpName %b "b"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %26 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+         %79 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+        %102 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %103 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %19
+ %GLF_dead0j = OpVariable %_ptr_Function_int Function %19
+%donor_replacementGLF_dead0stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %26
+%donor_replacementGLF_dead0top = OpVariable %_ptr_Function_int Function %19
+       %x_54 = OpVariable %_ptr_Function_int Function %19
+   %matrix_b = OpVariable %_ptr_Function_v4float Function %9
+          %b = OpVariable %_ptr_Function_int Function %19
+               OpStore %k %int_0
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %int %k
+         %39 = OpSLessThan %bool %37 %int_4
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %34
+         %41 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %48 = OpLoad %float %47
+         %50 = OpFOrdGreaterThan %bool %float_0 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpStore %GLF_dead0j %int_1
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpAccessChain %_ptr_Function_int %donor_replacementGLF_dead0stack %int_0
+         %59 = OpLoad %int %58
+         %60 = OpSLessThanEqual %bool %int_1 %59
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %55
+         %61 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %54
+         %55 = OpLabel
+         %64 = OpLoad %int %donor_replacementGLF_dead0top
+         %65 = OpLoad %int %donor_replacementGLF_dead0top
+         %66 = OpSGreaterThanEqual %bool %64 %int_0
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+         %70 = OpSLessThan %bool %65 %int_9
+               OpBranch %67
+         %67 = OpLabel
+         %71 = OpPhi %bool %66 %55 %70 %68
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %74
+         %73 = OpLabel
+         %75 = OpLoad %int %donor_replacementGLF_dead0top
+         %76 = OpIAdd %int %75 %int_1
+               OpStore %donor_replacementGLF_dead0top %76
+               OpStore %x_54 %76
+               OpBranch %72
+         %74 = OpLabel
+               OpStore %x_54 %int_0
+               OpBranch %72
+         %72 = OpLabel
+         %77 = OpLoad %int %x_54
+         %78 = OpAccessChain %_ptr_Function_int %donor_replacementGLF_dead0stack %77
+               OpStore %78 %int_1
+               OpBranch %51
+         %51 = OpLabel
+               OpStore %matrix_b %79
+               OpStore %b %int_3
+               OpBranch %81
+         %81 = OpLabel
+               OpLoopMerge %82 %83 None
+               OpBranch %84
+         %84 = OpLabel
+         %85 = OpLoad %int %b
+         %86 = OpSGreaterThanEqual %bool %85 %int_0
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %82
+         %87 = OpLabel
+         %90 = OpLoad %int %b
+         %91 = OpLoad %int %b
+         %93 = OpAccessChain %_ptr_Function_float %matrix_b %91
+         %94 = OpLoad %float %93
+         %95 = OpAccessChain %_ptr_Function_float %matrix_b %90
+         %97 = OpFSub %float %94 %float_1
+               OpStore %95 %97
+               OpBranch %83
+         %83 = OpLabel
+         %98 = OpLoad %int %b
+         %99 = OpISub %int %98 %int_1
+               OpStore %b %99
+               OpBranch %81
+         %82 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+        %100 = OpLoad %int %k
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %k %101
+               OpBranch %33
+         %34 = OpLabel
+               OpStore %x_GLF_color %102
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %103
+%tint_symbol = OpFunctionParameter %main_out
+        %107 = OpLabel
+        %108 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %108
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %110 = OpLabel
+        %111 = OpFunctionCall %void %main_1
+        %113 = OpLoad %v4float %x_GLF_color
+        %114 = OpCompositeConstruct %main_out %113
+        %112 = OpFunctionCall %void %tint_symbol_2 %114
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..26a8a10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,85 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var k : i32;
+  var GLF_dead0j : i32;
+  var donor_replacementGLF_dead0stack : array<i32, 10>;
+  var donor_replacementGLF_dead0top : i32;
+  var x_54 : i32;
+  var matrix_b : vec4<f32>;
+  var b : i32;
+  k = 0;
+  loop {
+    let x_12 : i32 = k;
+    if ((x_12 < 4)) {
+    } else {
+      break;
+    }
+    let x_62 : f32 = x_6.injectionSwitch.y;
+    if ((0.0 > x_62)) {
+      GLF_dead0j = 1;
+      loop {
+        let x_13 : i32 = donor_replacementGLF_dead0stack[0];
+        if ((1 <= x_13)) {
+        } else {
+          break;
+        }
+      }
+      let x_14 : i32 = donor_replacementGLF_dead0top;
+      let x_15 : i32 = donor_replacementGLF_dead0top;
+      if (((x_14 >= 0) && (x_15 < 9))) {
+        let x_16 : i32 = donor_replacementGLF_dead0top;
+        let x_17 : i32 = (x_16 + 1);
+        donor_replacementGLF_dead0top = x_17;
+        x_54 = x_17;
+      } else {
+        x_54 = 0;
+      }
+      let x_18 : i32 = x_54;
+      donor_replacementGLF_dead0stack[x_18] = 1;
+    }
+    matrix_b = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    b = 3;
+    loop {
+      let x_19 : i32 = b;
+      if ((x_19 >= 0)) {
+      } else {
+        break;
+      }
+      let x_20 : i32 = b;
+      let x_21 : i32 = b;
+      let x_87 : f32 = matrix_b[x_21];
+      matrix_b[x_20] = (x_87 - 1.0);
+
+      continuing {
+        let x_22 : i32 = b;
+        b = (x_22 - 1);
+      }
+    }
+
+    continuing {
+      let x_24 : i32 = k;
+      k = (x_24 + 1);
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm
new file mode 100644
index 0000000..90e4996
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm
@@ -0,0 +1,101 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpName %a "a"
+               OpDecorate %j RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Output_float = OpTypePointer Output %float
+%_ptr_Function_float = OpTypePointer Function %float
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function_float Function
+               OpStore %j %int_0
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+          %6 = OpLoad %int %j
+         %39 = OpSLessThan %bool %6 %int_2
+               OpBranchConditional %39 %40 %36
+         %40 = OpLabel
+          %7 = OpLoad %int %j
+         %41 = OpSLessThan %bool %7 %int_1
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpStore %_GLF_color %26
+               OpBranch %42
+         %42 = OpLabel
+          %8 = OpLoad %int %j
+         %44 = OpINotEqual %bool %8 %int_3
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+          %9 = OpLoad %int %j
+         %47 = OpINotEqual %bool %9 %int_4
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %10 = OpLoad %int %j
+         %50 = OpIEqual %bool %10 %int_5
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %53
+         %52 = OpLabel
+         %54 = OpExtInst %float %1 Ldexp %float_1 %int_2
+         %55 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_0
+               OpStore %55 %54
+               OpBranch %51
+         %53 = OpLabel
+         %56 = OpExtInst %float %1 Ldexp %float_1 %int_2
+               OpStore %a %56
+               OpStore %_GLF_color %26
+               OpBranch %51
+         %51 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %11 = OpLoad %int %j
+         %12 = OpIAdd %int %11 %int_1
+               OpStore %j %12
+               OpBranch %35
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9862ea7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,39 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int j = 0;
+  float a = 0.0f;
+  j = 0;
+  {
+    for(; (j < 2); j = (j + 1)) {
+      if ((j < 1)) {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      }
+      if ((j != 3)) {
+        if ((j != 4)) {
+          if ((j == 5)) {
+            x_GLF_color.x = ldexp(1.0f, 2);
+          } else {
+            a = ldexp(1.0f, 2);
+            x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..447bbeb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.msl
@@ -0,0 +1,53 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int j = 0;
+  float a = 0.0f;
+  j = 0;
+  while (true) {
+    int const x_6 = j;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    int const x_7 = j;
+    if ((x_7 < 1)) {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+    int const x_8 = j;
+    if ((x_8 != 3)) {
+      int const x_9 = j;
+      if ((x_9 != 4)) {
+        int const x_10 = j;
+        if ((x_10 == 5)) {
+          (*(tint_symbol_4)).x = ldexp(1.0f, 2);
+        } else {
+          a = ldexp(1.0f, 2);
+          *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        }
+      }
+    }
+    {
+      int const x_11 = j;
+      j = (x_11 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2978632
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,131 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 76
+; Schema: 0
+               OpCapability Shader
+         %60 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %64 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %15
+          %a = OpVariable %_ptr_Function_float Function %18
+               OpStore %j %int_0
+               OpBranch %20
+         %20 = OpLabel
+               OpLoopMerge %21 %22 None
+               OpBranch %23
+         %23 = OpLabel
+         %24 = OpLoad %int %j
+         %26 = OpSLessThan %bool %24 %int_2
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %30
+         %29 = OpLabel
+               OpBranch %28
+         %30 = OpLabel
+               OpBranch %21
+         %28 = OpLabel
+         %31 = OpLoad %int %j
+         %33 = OpSLessThan %bool %31 %int_1
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %34
+         %34 = OpLabel
+         %39 = OpLoad %int %j
+         %41 = OpINotEqual %bool %39 %int_3
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %44 = OpLoad %int %j
+         %46 = OpINotEqual %bool %44 %int_4
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+         %49 = OpLoad %int %j
+         %51 = OpIEqual %bool %49 %int_5
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+         %58 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %59 = OpExtInst %float %60 Ldexp %float_1 %int_2
+               OpStore %58 %59
+               OpBranch %52
+         %54 = OpLabel
+         %61 = OpExtInst %float %60 Ldexp %float_1 %int_2
+               OpStore %a %61
+               OpStore %x_GLF_color %38
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %22
+         %22 = OpLabel
+         %62 = OpLoad %int %j
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %j %63
+               OpBranch %20
+         %21 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %64
+%tint_symbol = OpFunctionParameter %main_out
+         %68 = OpLabel
+         %69 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %69
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %71 = OpLabel
+         %72 = OpFunctionCall %void %main_1
+         %74 = OpLoad %v4float %x_GLF_color
+         %75 = OpCompositeConstruct %main_out %74
+         %73 = OpFunctionCall %void %tint_symbol_2 %75
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b8234b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,48 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var j : i32;
+  var a : f32;
+  j = 0;
+  loop {
+    let x_6 : i32 = j;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    let x_7 : i32 = j;
+    if ((x_7 < 1)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+    let x_8 : i32 = j;
+    if ((x_8 != 3)) {
+      let x_9 : i32 = j;
+      if ((x_9 != 4)) {
+        let x_10 : i32 = j;
+        if ((x_10 == 5)) {
+          x_GLF_color.x = ldexp(1.0, 2);
+        } else {
+          a = ldexp(1.0, 2);
+          x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        }
+      }
+    }
+
+    continuing {
+      let x_11 : i32 = j;
+      j = (x_11 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
new file mode 100644
index 0000000..b8234b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
@@ -0,0 +1,48 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var j : i32;
+  var a : f32;
+  j = 0;
+  loop {
+    let x_6 : i32 = j;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    let x_7 : i32 = j;
+    if ((x_7 < 1)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+    let x_8 : i32 = j;
+    if ((x_8 != 3)) {
+      let x_9 : i32 = j;
+      if ((x_9 != 4)) {
+        let x_10 : i32 = j;
+        if ((x_10 == 5)) {
+          x_GLF_color.x = ldexp(1.0, 2);
+        } else {
+          a = ldexp(1.0, 2);
+          x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        }
+      }
+    }
+
+    continuing {
+      let x_11 : i32 = j;
+      j = (x_11 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9862ea7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,39 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int j = 0;
+  float a = 0.0f;
+  j = 0;
+  {
+    for(; (j < 2); j = (j + 1)) {
+      if ((j < 1)) {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      }
+      if ((j != 3)) {
+        if ((j != 4)) {
+          if ((j == 5)) {
+            x_GLF_color.x = ldexp(1.0f, 2);
+          } else {
+            a = ldexp(1.0f, 2);
+            x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..447bbeb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.msl
@@ -0,0 +1,53 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int j = 0;
+  float a = 0.0f;
+  j = 0;
+  while (true) {
+    int const x_6 = j;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    int const x_7 = j;
+    if ((x_7 < 1)) {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+    int const x_8 = j;
+    if ((x_8 != 3)) {
+      int const x_9 = j;
+      if ((x_9 != 4)) {
+        int const x_10 = j;
+        if ((x_10 == 5)) {
+          (*(tint_symbol_4)).x = ldexp(1.0f, 2);
+        } else {
+          a = ldexp(1.0f, 2);
+          *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        }
+      }
+    }
+    {
+      int const x_11 = j;
+      j = (x_11 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2978632
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,131 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 76
+; Schema: 0
+               OpCapability Shader
+         %60 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %a "a"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %main_out = OpTypeStruct %v4float
+         %64 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %15
+          %a = OpVariable %_ptr_Function_float Function %18
+               OpStore %j %int_0
+               OpBranch %20
+         %20 = OpLabel
+               OpLoopMerge %21 %22 None
+               OpBranch %23
+         %23 = OpLabel
+         %24 = OpLoad %int %j
+         %26 = OpSLessThan %bool %24 %int_2
+               OpSelectionMerge %28 None
+               OpBranchConditional %26 %29 %30
+         %29 = OpLabel
+               OpBranch %28
+         %30 = OpLabel
+               OpBranch %21
+         %28 = OpLabel
+         %31 = OpLoad %int %j
+         %33 = OpSLessThan %bool %31 %int_1
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+               OpStore %x_GLF_color %38
+               OpBranch %34
+         %34 = OpLabel
+         %39 = OpLoad %int %j
+         %41 = OpINotEqual %bool %39 %int_3
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %44 = OpLoad %int %j
+         %46 = OpINotEqual %bool %44 %int_4
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %47
+         %48 = OpLabel
+         %49 = OpLoad %int %j
+         %51 = OpIEqual %bool %49 %int_5
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+         %58 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %59 = OpExtInst %float %60 Ldexp %float_1 %int_2
+               OpStore %58 %59
+               OpBranch %52
+         %54 = OpLabel
+         %61 = OpExtInst %float %60 Ldexp %float_1 %int_2
+               OpStore %a %61
+               OpStore %x_GLF_color %38
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %22
+         %22 = OpLabel
+         %62 = OpLoad %int %j
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %j %63
+               OpBranch %20
+         %21 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %64
+%tint_symbol = OpFunctionParameter %main_out
+         %68 = OpLabel
+         %69 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %69
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %71 = OpLabel
+         %72 = OpFunctionCall %void %main_1
+         %74 = OpLoad %v4float %x_GLF_color
+         %75 = OpCompositeConstruct %main_out %74
+         %73 = OpFunctionCall %void %tint_symbol_2 %75
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b8234b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,48 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var j : i32;
+  var a : f32;
+  j = 0;
+  loop {
+    let x_6 : i32 = j;
+    if ((x_6 < 2)) {
+    } else {
+      break;
+    }
+    let x_7 : i32 = j;
+    if ((x_7 < 1)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+    let x_8 : i32 = j;
+    if ((x_8 != 3)) {
+      let x_9 : i32 = j;
+      if ((x_9 != 4)) {
+        let x_10 : i32 = j;
+        if ((x_10 == 5)) {
+          x_GLF_color.x = ldexp(1.0, 2);
+        } else {
+          a = ldexp(1.0, 2);
+          x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+        }
+      }
+    }
+
+    continuing {
+      let x_11 : i32 = j;
+      j = (x_11 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm
new file mode 100644
index 0000000..d37a387
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm
@@ -0,0 +1,181 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %BinarySearchObject "BinarySearchObject"
+               OpMemberName %BinarySearchObject 0 "prime_numbers"
+               OpName %binarySearch_struct_BinarySearchObject_i1_10_1_ "binarySearch(struct-BinarySearchObject-i1[10]1;"
+               OpName %obj "obj"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %m "m"
+               OpName %i "i"
+               OpName %obj_0 "obj"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %BinarySearchObject 0 RelaxedPrecision
+               OpDecorate %binarySearch_struct_BinarySearchObject_i1_10_1_ RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %m RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %28 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%BinarySearchObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Function_BinarySearchObject = OpTypePointer Function %BinarySearchObject
+         %34 = OpTypeFunction %int %_ptr_Function_BinarySearchObject
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+    %float_0 = OpConstant %float 0
+     %uint_1 = OpConstant %uint 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %28
+         %56 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+      %obj_0 = OpVariable %_ptr_Function_BinarySearchObject Function
+      %param = OpVariable %_ptr_Function_BinarySearchObject Function
+               OpStore %i %int_0
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %16 = OpLoad %int %i
+         %61 = OpSLessThan %bool %16 %int_10
+               OpBranchConditional %61 %62 %58
+         %62 = OpLabel
+         %17 = OpLoad %int %i
+         %63 = OpINotEqual %bool %17 %int_3
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+         %18 = OpLoad %int %i
+         %66 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %67 = OpLoad %float %66
+         %19 = OpConvertFToS %int %67
+         %20 = OpISub %int %18 %19
+         %68 = OpIEqual %bool %20 %int_4
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %21 = OpLoad %int %i
+         %72 = OpAccessChain %_ptr_Function_int %obj_0 %int_0 %21
+               OpStore %72 %int_11
+               OpBranch %69
+         %71 = OpLabel
+         %22 = OpLoad %int %i
+         %73 = OpIEqual %bool %22 %int_6
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+         %23 = OpLoad %int %i
+         %76 = OpAccessChain %_ptr_Function_int %obj_0 %int_0 %23
+               OpStore %76 %int_17
+               OpBranch %74
+         %74 = OpLabel
+               OpBranch %59
+         %69 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+               OpBranch %79
+         %79 = OpLabel
+         %81 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %82 = OpLoad %float %81
+         %83 = OpFOrdGreaterThan %bool %float_0 %82
+               OpBranchConditional %83 %77 %78
+         %78 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %24 = OpLoad %int %i
+         %25 = OpIAdd %int %24 %int_1
+               OpStore %i %25
+               OpBranch %57
+         %58 = OpLabel
+         %84 = OpLoad %BinarySearchObject %obj_0
+               OpStore %param %84
+         %26 = OpFunctionCall %int %binarySearch_struct_BinarySearchObject_i1_10_1_ %param
+               OpStore %_GLF_color %55
+               OpReturn
+               OpFunctionEnd
+%binarySearch_struct_BinarySearchObject_i1_10_1_ = OpFunction %int None %34
+        %obj = OpFunctionParameter %_ptr_Function_BinarySearchObject
+         %85 = OpLabel
+          %m = OpVariable %_ptr_Function_int Function
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %90 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %91 = OpLoad %float %90
+         %92 = OpFOrdGreaterThan %bool %91 %float_1
+               OpBranchConditional %92 %93 %87
+         %93 = OpLabel
+         %94 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %95 = OpLoad %float %94
+         %13 = OpConvertFToS %int %95
+               OpStore %m %13
+         %14 = OpLoad %int %m
+         %96 = OpAccessChain %_ptr_Function_int %obj %int_0 %14
+         %15 = OpLoad %int %96
+         %97 = OpIEqual %bool %15 %int_1
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+               OpReturnValue %int_1
+         %98 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpBranch %86
+         %87 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..4ca646f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.hlsl
@@ -0,0 +1,76 @@
+struct BinarySearchObject {
+  int prime_numbers[10];
+};
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int binarySearch_struct_BinarySearchObject_i1_10_1_(inout BinarySearchObject obj) {
+  int m = 0;
+  while (true) {
+    const float x_91 = asfloat(x_8[0].x);
+    if ((x_91 > 1.0f)) {
+    } else {
+      break;
+    }
+    const float x_95 = asfloat(x_8[0].x);
+    m = int(x_95);
+    const int x_15 = obj.prime_numbers[m];
+    if ((x_15 == 1)) {
+      return 1;
+    }
+  }
+  return 1;
+}
+
+void main_1() {
+  int i = 0;
+  BinarySearchObject obj_1 = (BinarySearchObject)0;
+  BinarySearchObject param = (BinarySearchObject)0;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      if ((i != 3)) {
+        const int x_18 = i;
+        const float x_67 = asfloat(x_8[0].x);
+        if (((x_18 - int(x_67)) == 4)) {
+          obj_1.prime_numbers[i] = 11;
+        } else {
+          if ((i == 6)) {
+            obj_1.prime_numbers[i] = 17;
+          }
+          continue;
+        }
+      }
+      while (true) {
+        {
+          const float x_82 = asfloat(x_8[0].y);
+          if ((0.0f > x_82)) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  param = obj_1;
+  const int x_26 = binarySearch_struct_BinarySearchObject_i1_10_1_(param);
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.msl
new file mode 100644
index 0000000..dee463b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.msl
@@ -0,0 +1,98 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct BinarySearchObject {
+  tint_array_wrapper prime_numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int binarySearch_struct_BinarySearchObject_i1_10_1_(constant buf0& x_8, thread BinarySearchObject* const obj) {
+  int m = 0;
+  while (true) {
+    float const x_91 = x_8.injectionSwitch.x;
+    if ((x_91 > 1.0f)) {
+    } else {
+      break;
+    }
+    float const x_95 = x_8.injectionSwitch.x;
+    m = int(x_95);
+    int const x_14 = m;
+    int const x_15 = (*(obj)).prime_numbers.arr[x_14];
+    if ((x_15 == 1)) {
+      return 1;
+    }
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  BinarySearchObject obj_1 = {};
+  BinarySearchObject param = {};
+  i = 0;
+  while (true) {
+    int const x_16 = i;
+    if ((x_16 < 10)) {
+    } else {
+      break;
+    }
+    int const x_17 = i;
+    if ((x_17 != 3)) {
+      int const x_18 = i;
+      float const x_67 = x_8.injectionSwitch.x;
+      if (((x_18 - int(x_67)) == 4)) {
+        int const x_21 = i;
+        obj_1.prime_numbers.arr[x_21] = 11;
+      } else {
+        int const x_22 = i;
+        if ((x_22 == 6)) {
+          int const x_23 = i;
+          obj_1.prime_numbers.arr[x_23] = 17;
+        }
+        {
+          int const x_24 = i;
+          i = (x_24 + 1);
+        }
+        continue;
+      }
+    }
+    while (true) {
+      {
+        float const x_82 = x_8.injectionSwitch.y;
+        if ((0.0f > x_82)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      int const x_24 = i;
+      i = (x_24 + 1);
+    }
+  }
+  BinarySearchObject const x_84 = obj_1;
+  param = x_84;
+  int const x_26 = binarySearch_struct_BinarySearchObject_i1_10_1_(x_8, &(param));
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..763929e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.spvasm
@@ -0,0 +1,220 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 125
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %BinarySearchObject "BinarySearchObject"
+               OpMemberName %BinarySearchObject 0 "prime_numbers"
+               OpName %binarySearch_struct_BinarySearchObject_i1_10_1_ "binarySearch_struct_BinarySearchObject_i1_10_1_"
+               OpName %obj "obj"
+               OpName %m "m"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %obj_1 "obj_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %BinarySearchObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%BinarySearchObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Function_BinarySearchObject = OpTypePointer Function %BinarySearchObject
+         %12 = OpTypeFunction %int %_ptr_Function_BinarySearchObject
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %50 = OpTypeFunction %void
+         %56 = OpConstantNull %BinarySearchObject
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+        %112 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %113 = OpTypeFunction %void %main_out
+%binarySearch_struct_BinarySearchObject_i1_10_1_ = OpFunction %int None %12
+        %obj = OpFunctionParameter %_ptr_Function_BinarySearchObject
+         %21 = OpLabel
+          %m = OpVariable %_ptr_Function_int Function %24
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %32 = OpLoad %float %31
+         %34 = OpFOrdGreaterThan %bool %32 %float_1
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+               OpBranch %36
+         %38 = OpLabel
+               OpBranch %26
+         %36 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+               OpStore %m %41
+         %42 = OpLoad %int %m
+         %44 = OpAccessChain %_ptr_Function_int %obj %uint_0 %42
+         %45 = OpLoad %int %44
+         %47 = OpIEqual %bool %45 %int_1
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+               OpReturnValue %int_1
+         %48 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpBranch %25
+         %26 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %50
+         %53 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %24
+      %obj_1 = OpVariable %_ptr_Function_BinarySearchObject Function %56
+      %param = OpVariable %_ptr_Function_BinarySearchObject Function %56
+               OpStore %i %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpSLessThan %bool %63 %int_10
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %60
+         %66 = OpLabel
+         %69 = OpLoad %int %i
+         %71 = OpINotEqual %bool %69 %int_3
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %76 = OpLoad %float %75
+         %77 = OpConvertFToS %int %76
+         %78 = OpISub %int %74 %77
+         %80 = OpIEqual %bool %78 %int_4
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpAccessChain %_ptr_Function_int %obj_1 %uint_0 %84
+               OpStore %85 %int_11
+               OpBranch %81
+         %83 = OpLabel
+         %87 = OpLoad %int %i
+         %89 = OpIEqual %bool %87 %int_6
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpAccessChain %_ptr_Function_int %obj_1 %uint_0 %92
+               OpStore %93 %int_17
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %61
+         %81 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+               OpBranch %95
+         %95 = OpLabel
+               OpLoopMerge %96 %97 None
+               OpBranch %98
+         %98 = OpLabel
+               OpBranch %97
+         %97 = OpLabel
+        %100 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %101 = OpLoad %float %100
+        %103 = OpFOrdGreaterThan %bool %float_0 %101
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+               OpBranch %96
+        %104 = OpLabel
+               OpBranch %95
+         %96 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+               OpBranch %59
+         %60 = OpLabel
+        %109 = OpLoad %BinarySearchObject %obj_1
+               OpStore %param %109
+        %110 = OpFunctionCall %int %binarySearch_struct_BinarySearchObject_i1_10_1_ %param
+               OpStore %x_GLF_color %112
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %113
+%tint_symbol = OpFunctionParameter %main_out
+        %117 = OpLabel
+        %118 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %118
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %50
+        %120 = OpLabel
+        %121 = OpFunctionCall %void %main_1
+        %123 = OpLoad %v4float %x_GLF_color
+        %124 = OpCompositeConstruct %main_out %123
+        %122 = OpFunctionCall %void %tint_symbol_2 %124
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 97[%97] is not post dominated by the back-edge block 104[%104]
+  %104 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..9d9f80c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.wgsl
@@ -0,0 +1,92 @@
+struct BinarySearchObject {
+  prime_numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn binarySearch_struct_BinarySearchObject_i1_10_1_(obj : ptr<function, BinarySearchObject>) -> i32 {
+  var m : i32;
+  loop {
+    let x_91 : f32 = x_8.injectionSwitch.x;
+    if ((x_91 > 1.0)) {
+    } else {
+      break;
+    }
+    let x_95 : f32 = x_8.injectionSwitch.x;
+    m = i32(x_95);
+    let x_14 : i32 = m;
+    let x_15 : i32 = (*(obj)).prime_numbers[x_14];
+    if ((x_15 == 1)) {
+      return 1;
+    }
+  }
+  return 1;
+}
+
+fn main_1() {
+  var i : i32;
+  var obj_1 : BinarySearchObject;
+  var param : BinarySearchObject;
+  i = 0;
+  loop {
+    let x_16 : i32 = i;
+    if ((x_16 < 10)) {
+    } else {
+      break;
+    }
+    let x_17 : i32 = i;
+    if ((x_17 != 3)) {
+      let x_18 : i32 = i;
+      let x_67 : f32 = x_8.injectionSwitch.x;
+      if (((x_18 - i32(x_67)) == 4)) {
+        let x_21 : i32 = i;
+        obj_1.prime_numbers[x_21] = 11;
+      } else {
+        let x_22 : i32 = i;
+        if ((x_22 == 6)) {
+          let x_23 : i32 = i;
+          obj_1.prime_numbers[x_23] = 17;
+        }
+        continue;
+      }
+    }
+    loop {
+
+      continuing {
+        let x_82 : f32 = x_8.injectionSwitch.y;
+        if ((0.0 > x_82)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_24 : i32 = i;
+      i = (x_24 + 1);
+    }
+  }
+  let x_84 : BinarySearchObject = obj_1;
+  param = x_84;
+  let x_26 : i32 = binarySearch_struct_BinarySearchObject_i1_10_1_(&(param));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
new file mode 100644
index 0000000..9d9f80c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
@@ -0,0 +1,92 @@
+struct BinarySearchObject {
+  prime_numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn binarySearch_struct_BinarySearchObject_i1_10_1_(obj : ptr<function, BinarySearchObject>) -> i32 {
+  var m : i32;
+  loop {
+    let x_91 : f32 = x_8.injectionSwitch.x;
+    if ((x_91 > 1.0)) {
+    } else {
+      break;
+    }
+    let x_95 : f32 = x_8.injectionSwitch.x;
+    m = i32(x_95);
+    let x_14 : i32 = m;
+    let x_15 : i32 = (*(obj)).prime_numbers[x_14];
+    if ((x_15 == 1)) {
+      return 1;
+    }
+  }
+  return 1;
+}
+
+fn main_1() {
+  var i : i32;
+  var obj_1 : BinarySearchObject;
+  var param : BinarySearchObject;
+  i = 0;
+  loop {
+    let x_16 : i32 = i;
+    if ((x_16 < 10)) {
+    } else {
+      break;
+    }
+    let x_17 : i32 = i;
+    if ((x_17 != 3)) {
+      let x_18 : i32 = i;
+      let x_67 : f32 = x_8.injectionSwitch.x;
+      if (((x_18 - i32(x_67)) == 4)) {
+        let x_21 : i32 = i;
+        obj_1.prime_numbers[x_21] = 11;
+      } else {
+        let x_22 : i32 = i;
+        if ((x_22 == 6)) {
+          let x_23 : i32 = i;
+          obj_1.prime_numbers[x_23] = 17;
+        }
+        continue;
+      }
+    }
+    loop {
+
+      continuing {
+        let x_82 : f32 = x_8.injectionSwitch.y;
+        if ((0.0 > x_82)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_24 : i32 = i;
+      i = (x_24 + 1);
+    }
+  }
+  let x_84 : BinarySearchObject = obj_1;
+  param = x_84;
+  let x_26 : i32 = binarySearch_struct_BinarySearchObject_i1_10_1_(&(param));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..4ca646f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.hlsl
@@ -0,0 +1,76 @@
+struct BinarySearchObject {
+  int prime_numbers[10];
+};
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int binarySearch_struct_BinarySearchObject_i1_10_1_(inout BinarySearchObject obj) {
+  int m = 0;
+  while (true) {
+    const float x_91 = asfloat(x_8[0].x);
+    if ((x_91 > 1.0f)) {
+    } else {
+      break;
+    }
+    const float x_95 = asfloat(x_8[0].x);
+    m = int(x_95);
+    const int x_15 = obj.prime_numbers[m];
+    if ((x_15 == 1)) {
+      return 1;
+    }
+  }
+  return 1;
+}
+
+void main_1() {
+  int i = 0;
+  BinarySearchObject obj_1 = (BinarySearchObject)0;
+  BinarySearchObject param = (BinarySearchObject)0;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      if ((i != 3)) {
+        const int x_18 = i;
+        const float x_67 = asfloat(x_8[0].x);
+        if (((x_18 - int(x_67)) == 4)) {
+          obj_1.prime_numbers[i] = 11;
+        } else {
+          if ((i == 6)) {
+            obj_1.prime_numbers[i] = 17;
+          }
+          continue;
+        }
+      }
+      while (true) {
+        {
+          const float x_82 = asfloat(x_8[0].y);
+          if ((0.0f > x_82)) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  param = obj_1;
+  const int x_26 = binarySearch_struct_BinarySearchObject_i1_10_1_(param);
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.msl
new file mode 100644
index 0000000..dee463b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.msl
@@ -0,0 +1,98 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct BinarySearchObject {
+  tint_array_wrapper prime_numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int binarySearch_struct_BinarySearchObject_i1_10_1_(constant buf0& x_8, thread BinarySearchObject* const obj) {
+  int m = 0;
+  while (true) {
+    float const x_91 = x_8.injectionSwitch.x;
+    if ((x_91 > 1.0f)) {
+    } else {
+      break;
+    }
+    float const x_95 = x_8.injectionSwitch.x;
+    m = int(x_95);
+    int const x_14 = m;
+    int const x_15 = (*(obj)).prime_numbers.arr[x_14];
+    if ((x_15 == 1)) {
+      return 1;
+    }
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int i = 0;
+  BinarySearchObject obj_1 = {};
+  BinarySearchObject param = {};
+  i = 0;
+  while (true) {
+    int const x_16 = i;
+    if ((x_16 < 10)) {
+    } else {
+      break;
+    }
+    int const x_17 = i;
+    if ((x_17 != 3)) {
+      int const x_18 = i;
+      float const x_67 = x_8.injectionSwitch.x;
+      if (((x_18 - int(x_67)) == 4)) {
+        int const x_21 = i;
+        obj_1.prime_numbers.arr[x_21] = 11;
+      } else {
+        int const x_22 = i;
+        if ((x_22 == 6)) {
+          int const x_23 = i;
+          obj_1.prime_numbers.arr[x_23] = 17;
+        }
+        {
+          int const x_24 = i;
+          i = (x_24 + 1);
+        }
+        continue;
+      }
+    }
+    while (true) {
+      {
+        float const x_82 = x_8.injectionSwitch.y;
+        if ((0.0f > x_82)) {
+        } else {
+          break;
+        }
+      }
+    }
+    {
+      int const x_24 = i;
+      i = (x_24 + 1);
+    }
+  }
+  BinarySearchObject const x_84 = obj_1;
+  param = x_84;
+  int const x_26 = binarySearch_struct_BinarySearchObject_i1_10_1_(x_8, &(param));
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..763929e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.spvasm
@@ -0,0 +1,220 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 125
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %BinarySearchObject "BinarySearchObject"
+               OpMemberName %BinarySearchObject 0 "prime_numbers"
+               OpName %binarySearch_struct_BinarySearchObject_i1_10_1_ "binarySearch_struct_BinarySearchObject_i1_10_1_"
+               OpName %obj "obj"
+               OpName %m "m"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %obj_1 "obj_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %BinarySearchObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%BinarySearchObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Function_BinarySearchObject = OpTypePointer Function %BinarySearchObject
+         %12 = OpTypeFunction %int %_ptr_Function_BinarySearchObject
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %50 = OpTypeFunction %void
+         %56 = OpConstantNull %BinarySearchObject
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+        %112 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %113 = OpTypeFunction %void %main_out
+%binarySearch_struct_BinarySearchObject_i1_10_1_ = OpFunction %int None %12
+        %obj = OpFunctionParameter %_ptr_Function_BinarySearchObject
+         %21 = OpLabel
+          %m = OpVariable %_ptr_Function_int Function %24
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %32 = OpLoad %float %31
+         %34 = OpFOrdGreaterThan %bool %32 %float_1
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+               OpBranch %36
+         %38 = OpLabel
+               OpBranch %26
+         %36 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+               OpStore %m %41
+         %42 = OpLoad %int %m
+         %44 = OpAccessChain %_ptr_Function_int %obj %uint_0 %42
+         %45 = OpLoad %int %44
+         %47 = OpIEqual %bool %45 %int_1
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+               OpReturnValue %int_1
+         %48 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpBranch %25
+         %26 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %50
+         %53 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %24
+      %obj_1 = OpVariable %_ptr_Function_BinarySearchObject Function %56
+      %param = OpVariable %_ptr_Function_BinarySearchObject Function %56
+               OpStore %i %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpSLessThan %bool %63 %int_10
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %60
+         %66 = OpLabel
+         %69 = OpLoad %int %i
+         %71 = OpINotEqual %bool %69 %int_3
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+         %74 = OpLoad %int %i
+         %75 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %76 = OpLoad %float %75
+         %77 = OpConvertFToS %int %76
+         %78 = OpISub %int %74 %77
+         %80 = OpIEqual %bool %78 %int_4
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpLoad %int %i
+         %85 = OpAccessChain %_ptr_Function_int %obj_1 %uint_0 %84
+               OpStore %85 %int_11
+               OpBranch %81
+         %83 = OpLabel
+         %87 = OpLoad %int %i
+         %89 = OpIEqual %bool %87 %int_6
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpAccessChain %_ptr_Function_int %obj_1 %uint_0 %92
+               OpStore %93 %int_17
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %61
+         %81 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+               OpBranch %95
+         %95 = OpLabel
+               OpLoopMerge %96 %97 None
+               OpBranch %98
+         %98 = OpLabel
+               OpBranch %97
+         %97 = OpLabel
+        %100 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %101 = OpLoad %float %100
+        %103 = OpFOrdGreaterThan %bool %float_0 %101
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+               OpBranch %96
+        %104 = OpLabel
+               OpBranch %95
+         %96 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+               OpBranch %59
+         %60 = OpLabel
+        %109 = OpLoad %BinarySearchObject %obj_1
+               OpStore %param %109
+        %110 = OpFunctionCall %int %binarySearch_struct_BinarySearchObject_i1_10_1_ %param
+               OpStore %x_GLF_color %112
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %113
+%tint_symbol = OpFunctionParameter %main_out
+        %117 = OpLabel
+        %118 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %118
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %50
+        %120 = OpLabel
+        %121 = OpFunctionCall %void %main_1
+        %123 = OpLoad %v4float %x_GLF_color
+        %124 = OpCompositeConstruct %main_out %123
+        %122 = OpFunctionCall %void %tint_symbol_2 %124
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 97[%97] is not post dominated by the back-edge block 104[%104]
+  %104 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..9d9f80c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.wgsl
@@ -0,0 +1,92 @@
+struct BinarySearchObject {
+  prime_numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn binarySearch_struct_BinarySearchObject_i1_10_1_(obj : ptr<function, BinarySearchObject>) -> i32 {
+  var m : i32;
+  loop {
+    let x_91 : f32 = x_8.injectionSwitch.x;
+    if ((x_91 > 1.0)) {
+    } else {
+      break;
+    }
+    let x_95 : f32 = x_8.injectionSwitch.x;
+    m = i32(x_95);
+    let x_14 : i32 = m;
+    let x_15 : i32 = (*(obj)).prime_numbers[x_14];
+    if ((x_15 == 1)) {
+      return 1;
+    }
+  }
+  return 1;
+}
+
+fn main_1() {
+  var i : i32;
+  var obj_1 : BinarySearchObject;
+  var param : BinarySearchObject;
+  i = 0;
+  loop {
+    let x_16 : i32 = i;
+    if ((x_16 < 10)) {
+    } else {
+      break;
+    }
+    let x_17 : i32 = i;
+    if ((x_17 != 3)) {
+      let x_18 : i32 = i;
+      let x_67 : f32 = x_8.injectionSwitch.x;
+      if (((x_18 - i32(x_67)) == 4)) {
+        let x_21 : i32 = i;
+        obj_1.prime_numbers[x_21] = 11;
+      } else {
+        let x_22 : i32 = i;
+        if ((x_22 == 6)) {
+          let x_23 : i32 = i;
+          obj_1.prime_numbers[x_23] = 17;
+        }
+        continue;
+      }
+    }
+    loop {
+
+      continuing {
+        let x_82 : f32 = x_8.injectionSwitch.y;
+        if ((0.0 > x_82)) {
+        } else {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      let x_24 : i32 = i;
+      i = (x_24 + 1);
+    }
+  }
+  let x_84 : BinarySearchObject = obj_1;
+  param = x_84;
+  let x_26 : i32 = binarySearch_struct_BinarySearchObject_i1_10_1_(&(param));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm
new file mode 100644
index 0000000..8fc1abc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm
@@ -0,0 +1,72 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f_mf22_ "f(mf22;"
+               OpName %m "m"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+    %v3float = OpTypeVector %float 3
+         %15 = OpTypeFunction %v3float %_ptr_Function_mat2v2float
+    %float_1 = OpConstant %float 1
+         %17 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %20 = OpConstantComposite %v2float %float_0 %float_0
+         %21 = OpConstantComposite %mat2v2float %20 %20
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+         %27 = OpConstantComposite %v2float %float_1 %float_0
+         %28 = OpConstantComposite %v2float %float_0 %float_1
+         %29 = OpConstantComposite %mat2v2float %27 %28
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %9
+         %32 = OpLabel
+      %param = OpVariable %_ptr_Function_mat2v2float Function
+         %33 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %34 = OpLoad %float %33
+         %35 = OpFOrdGreaterThanEqual %bool %34 %float_0
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %38 = OpPhi %mat2v2float %21 %32 %29 %37
+         %39 = OpMatrixTimesMatrix %mat2v2float %38 %38
+               OpStore %param %39
+         %40 = OpFunctionCall %v3float %f_mf22_ %param
+               OpStore %_GLF_color %31
+               OpReturn
+               OpFunctionEnd
+    %f_mf22_ = OpFunction %v3float None %15
+          %m = OpFunctionParameter %_ptr_Function_mat2v2float
+         %41 = OpLabel
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+               OpReturnValue %17
+         %44 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..91e6f7c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+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);
+
+float3 f_mf22_(inout float2x2 m) {
+  while (true) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  float2x2 param = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 x_38_phi = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_34 = gl_FragCoord.x;
+  x_38_phi = float2x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  if ((x_34 >= 0.0f)) {
+    x_38_phi = float2x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f));
+  }
+  const float2x2 x_38 = x_38_phi;
+  param = mul(x_38, x_38);
+  const float3 x_40 = f_mf22_(param);
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.msl
new file mode 100644
index 0000000..6ff0d16
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.msl
@@ -0,0 +1,42 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 f_mf22_(thread float2x2* const m) {
+  while (true) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2x2 param = float2x2(0.0f);
+  float2x2 x_38_phi = float2x2(0.0f);
+  float const x_34 = (*(tint_symbol_5)).x;
+  x_38_phi = float2x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  if ((x_34 >= 0.0f)) {
+    x_38_phi = float2x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f));
+  }
+  float2x2 const x_38 = x_38_phi;
+  param = (x_38 * x_38);
+  float3 const x_40 = f_mf22_(&(param));
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..6623b07
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.spvasm
@@ -0,0 +1,112 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f_mf22_ "f_mf22_"
+               OpName %m "m"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %x_38_phi "x_38_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %11 = OpTypeFunction %v3float %_ptr_Function_mat2v2float
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+         %32 = OpConstantNull %mat2v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+         %39 = OpConstantComposite %v2float %float_0 %float_0
+         %40 = OpConstantComposite %mat2v2float %39 %39
+       %bool = OpTypeBool
+         %45 = OpConstantComposite %v2float %float_1 %float_0
+         %46 = OpConstantComposite %v2float %float_0 %float_1
+         %47 = OpConstantComposite %mat2v2float %45 %46
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+    %f_mf22_ = OpFunction %v3float None %11
+          %m = OpFunctionParameter %_ptr_Function_mat2v2float
+         %18 = OpLabel
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+               OpReturnValue %24
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpReturnValue %26
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+      %param = OpVariable %_ptr_Function_mat2v2float Function %32
+   %x_38_phi = OpVariable %_ptr_Function_mat2v2float Function %32
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+               OpStore %x_38_phi %40
+         %41 = OpFOrdGreaterThanEqual %bool %38 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+               OpStore %x_38_phi %47
+               OpBranch %43
+         %43 = OpLabel
+         %48 = OpLoad %mat2v2float %x_38_phi
+         %49 = OpMatrixTimesMatrix %mat2v2float %48 %48
+               OpStore %param %49
+         %50 = OpFunctionCall %v3float %f_mf22_ %param
+               OpStore %x_GLF_color %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %53
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+         %60 = OpLabel
+         %61 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %61
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_3 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..ee6e11e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.spvasm.expected.wgsl
@@ -0,0 +1,37 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_mf22_(m : ptr<function, mat2x2<f32>>) -> vec3<f32> {
+  loop {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var param : mat2x2<f32>;
+  var x_38_phi : mat2x2<f32>;
+  let x_34 : f32 = gl_FragCoord.x;
+  x_38_phi = mat2x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  if ((x_34 >= 0.0)) {
+    x_38_phi = mat2x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0));
+  }
+  let x_38 : mat2x2<f32> = x_38_phi;
+  param = (x_38 * x_38);
+  let x_40 : vec3<f32> = f_mf22_(&(param));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
new file mode 100644
index 0000000..ee6e11e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
@@ -0,0 +1,37 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_mf22_(m : ptr<function, mat2x2<f32>>) -> vec3<f32> {
+  loop {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var param : mat2x2<f32>;
+  var x_38_phi : mat2x2<f32>;
+  let x_34 : f32 = gl_FragCoord.x;
+  x_38_phi = mat2x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  if ((x_34 >= 0.0)) {
+    x_38_phi = mat2x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0));
+  }
+  let x_38 : mat2x2<f32> = x_38_phi;
+  param = (x_38 * x_38);
+  let x_40 : vec3<f32> = f_mf22_(&(param));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..91e6f7c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.hlsl
@@ -0,0 +1,43 @@
+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);
+
+float3 f_mf22_(inout float2x2 m) {
+  while (true) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  float2x2 param = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  float2x2 x_38_phi = float2x2(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_34 = gl_FragCoord.x;
+  x_38_phi = float2x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  if ((x_34 >= 0.0f)) {
+    x_38_phi = float2x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f));
+  }
+  const float2x2 x_38 = x_38_phi;
+  param = mul(x_38, x_38);
+  const float3 x_40 = f_mf22_(param);
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.msl
new file mode 100644
index 0000000..6ff0d16
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.msl
@@ -0,0 +1,42 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 f_mf22_(thread float2x2* const m) {
+  while (true) {
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2x2 param = float2x2(0.0f);
+  float2x2 x_38_phi = float2x2(0.0f);
+  float const x_34 = (*(tint_symbol_5)).x;
+  x_38_phi = float2x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
+  if ((x_34 >= 0.0f)) {
+    x_38_phi = float2x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f));
+  }
+  float2x2 const x_38 = x_38_phi;
+  param = (x_38 * x_38);
+  float3 const x_40 = f_mf22_(&(param));
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..6623b07
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.spvasm
@@ -0,0 +1,112 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 66
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %f_mf22_ "f_mf22_"
+               OpName %m "m"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %x_38_phi "x_38_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+    %v2float = OpTypeVector %float 2
+%mat2v2float = OpTypeMatrix %v2float 2
+%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
+         %11 = OpTypeFunction %v3float %_ptr_Function_mat2v2float
+    %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+         %32 = OpConstantNull %mat2v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+         %39 = OpConstantComposite %v2float %float_0 %float_0
+         %40 = OpConstantComposite %mat2v2float %39 %39
+       %bool = OpTypeBool
+         %45 = OpConstantComposite %v2float %float_1 %float_0
+         %46 = OpConstantComposite %v2float %float_0 %float_1
+         %47 = OpConstantComposite %mat2v2float %45 %46
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+    %f_mf22_ = OpFunction %v3float None %11
+          %m = OpFunctionParameter %_ptr_Function_mat2v2float
+         %18 = OpLabel
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+               OpReturnValue %24
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpReturnValue %26
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+      %param = OpVariable %_ptr_Function_mat2v2float Function %32
+   %x_38_phi = OpVariable %_ptr_Function_mat2v2float Function %32
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+               OpStore %x_38_phi %40
+         %41 = OpFOrdGreaterThanEqual %bool %38 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+               OpStore %x_38_phi %47
+               OpBranch %43
+         %43 = OpLabel
+         %48 = OpLoad %mat2v2float %x_38_phi
+         %49 = OpMatrixTimesMatrix %mat2v2float %48 %48
+               OpStore %param %49
+         %50 = OpFunctionCall %v3float %f_mf22_ %param
+               OpStore %x_GLF_color %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %53
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+         %60 = OpLabel
+         %61 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %61
+         %62 = OpFunctionCall %void %main_1
+         %64 = OpLoad %v4float %x_GLF_color
+         %65 = OpCompositeConstruct %main_out %64
+         %63 = OpFunctionCall %void %tint_symbol_3 %65
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..ee6e11e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl.expected.wgsl
@@ -0,0 +1,37 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_mf22_(m : ptr<function, mat2x2<f32>>) -> vec3<f32> {
+  loop {
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var param : mat2x2<f32>;
+  var x_38_phi : mat2x2<f32>;
+  let x_34 : f32 = gl_FragCoord.x;
+  x_38_phi = mat2x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
+  if ((x_34 >= 0.0)) {
+    x_38_phi = mat2x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0));
+  }
+  let x_38 : mat2x2<f32> = x_38_phi;
+  param = (x_38 * x_38);
+  let x_40 : vec3<f32> = f_mf22_(&(param));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm
new file mode 100644
index 0000000..7b3e22d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm
@@ -0,0 +1,87 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %temp "temp"
+               OpName %gv "gv"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gv RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+       %bool = OpTypeBool
+%_ptr_Function_int = OpTypePointer Function %int
+    %v4float = OpTypeVector %float 4
+    %float_1 = OpConstant %float 1
+         %28 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %gv = OpVariable %_ptr_Private_v4float Private
+%float_8_60000038 = OpConstant %float 8.60000038
+     %uint_1 = OpConstant %uint 1
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %14
+         %37 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %39 = OpLoad %float %38
+         %40 = OpFOrdGreaterThan %bool %39 %float_2
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+          %8 = OpLoad %v4float %gv
+          %9 = OpExtInst %v4float %1 FMix %28 %28 %8
+         %10 = OpCompositeConstruct %v4float %float_8_60000038 %float_8_60000038 %float_8_60000038 %float_8_60000038
+         %11 = OpExtInst %v4float %1 FMax %9 %10
+         %12 = OpCompositeExtract %float %11 1
+         %43 = OpConvertFToS %int %12
+               OpStore %temp %43
+         %44 = OpLoad %int %temp
+         %45 = OpSLessThan %bool %44 %int_150
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpKill
+         %46 = OpLabel
+         %48 = OpLoad %int %temp
+         %49 = OpSLessThan %bool %48 %int_180
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpKill
+         %50 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpStore %_GLF_color %36
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0628a80
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,35 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 gv = 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() {
+  int temp = 0;
+  const float x_39 = asfloat(x_5[0].x);
+  if ((x_39 > 2.0f)) {
+    temp = int(max(lerp(float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), gv), float4(8.600000381f, 8.600000381f, 8.600000381f, 8.600000381f)).y);
+    if ((temp < 150)) {
+      discard;
+    }
+    if ((temp < 180)) {
+      discard;
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..388fcc6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  int temp = 0;
+  float const x_39 = x_5.injectionSwitch.x;
+  if ((x_39 > 2.0f)) {
+    float4 const x_8 = *(tint_symbol_4);
+    temp = int(fmax(mix(float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), x_8), float4(8.600000381f, 8.600000381f, 8.600000381f, 8.600000381f)).y);
+    int const x_44 = temp;
+    if ((x_44 < 150)) {
+      discard_fragment();
+    }
+    int const x_48 = temp;
+    if ((x_48 < 180)) {
+      discard_fragment();
+    }
+  }
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_5, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ad29d54
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+         %34 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %gv "gv"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %temp "temp"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+         %gv = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %37 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%float_8_60000038 = OpConstant %float 8.60000038
+         %39 = OpConstantComposite %v4float %float_8_60000038 %float_8_60000038 %float_8_60000038 %float_8_60000038
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+    %float_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %20
+         %24 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %25 = OpLoad %float %24
+         %27 = OpFOrdGreaterThan %bool %25 %float_2
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %29
+         %30 = OpLabel
+         %31 = OpLoad %v4float %gv
+         %35 = OpExtInst %v4float %34 FMix %37 %37 %31
+         %33 = OpExtInst %v4float %34 NMax %35 %39
+         %40 = OpCompositeExtract %float %33 1
+         %32 = OpConvertFToS %int %40
+               OpStore %temp %32
+         %41 = OpLoad %int %temp
+         %43 = OpSLessThan %bool %41 %int_150
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpKill
+         %44 = OpLabel
+         %46 = OpLoad %int %temp
+         %48 = OpSLessThan %bool %46 %int_180
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+               OpKill
+         %49 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+               OpStore %x_GLF_color %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f4bf9c7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> gv : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : i32;
+  let x_39 : f32 = x_5.injectionSwitch.x;
+  if ((x_39 > 2.0)) {
+    let x_8 : vec4<f32> = gv;
+    temp = i32(max(mix(vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), x_8), vec4<f32>(8.600000381, 8.600000381, 8.600000381, 8.600000381)).y);
+    let x_44 : i32 = temp;
+    if ((x_44 < 150)) {
+      discard;
+    }
+    let x_48 : i32 = temp;
+    if ((x_48 < 180)) {
+      discard;
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
new file mode 100644
index 0000000..f4bf9c7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> gv : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : i32;
+  let x_39 : f32 = x_5.injectionSwitch.x;
+  if ((x_39 > 2.0)) {
+    let x_8 : vec4<f32> = gv;
+    temp = i32(max(mix(vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), x_8), vec4<f32>(8.600000381, 8.600000381, 8.600000381, 8.600000381)).y);
+    let x_44 : i32 = temp;
+    if ((x_44 < 150)) {
+      discard;
+    }
+    let x_48 : i32 = temp;
+    if ((x_48 < 180)) {
+      discard;
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0628a80
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 gv = 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() {
+  int temp = 0;
+  const float x_39 = asfloat(x_5[0].x);
+  if ((x_39 > 2.0f)) {
+    temp = int(max(lerp(float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), gv), float4(8.600000381f, 8.600000381f, 8.600000381f, 8.600000381f)).y);
+    if ((temp < 150)) {
+      discard;
+    }
+    if ((temp < 180)) {
+      discard;
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..388fcc6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4, thread float4* const tint_symbol_5) {
+  int temp = 0;
+  float const x_39 = x_5.injectionSwitch.x;
+  if ((x_39 > 2.0f)) {
+    float4 const x_8 = *(tint_symbol_4);
+    temp = int(fmax(mix(float4(1.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), x_8), float4(8.600000381f, 8.600000381f, 8.600000381f, 8.600000381f)).y);
+    int const x_44 = temp;
+    if ((x_44 < 150)) {
+      discard_fragment();
+    }
+    int const x_48 = temp;
+    if ((x_48 < 180)) {
+      discard_fragment();
+    }
+  }
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float4 tint_symbol_7 = 0.0f;
+  main_1(x_5, &(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ad29d54
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+         %34 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %gv "gv"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %temp "temp"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+         %gv = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %37 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%float_8_60000038 = OpConstant %float 8.60000038
+         %39 = OpConstantComposite %v4float %float_8_60000038 %float_8_60000038 %float_8_60000038 %float_8_60000038
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+    %float_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %20
+         %24 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %25 = OpLoad %float %24
+         %27 = OpFOrdGreaterThan %bool %25 %float_2
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %29
+         %30 = OpLabel
+         %31 = OpLoad %v4float %gv
+         %35 = OpExtInst %v4float %34 FMix %37 %37 %31
+         %33 = OpExtInst %v4float %34 NMax %35 %39
+         %40 = OpCompositeExtract %float %33 1
+         %32 = OpConvertFToS %int %40
+               OpStore %temp %32
+         %41 = OpLoad %int %temp
+         %43 = OpSLessThan %bool %41 %int_150
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpKill
+         %44 = OpLabel
+         %46 = OpLoad %int %temp
+         %48 = OpSLessThan %bool %46 %int_180
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+               OpKill
+         %49 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+               OpStore %x_GLF_color %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f4bf9c7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,40 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> gv : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : i32;
+  let x_39 : f32 = x_5.injectionSwitch.x;
+  if ((x_39 > 2.0)) {
+    let x_8 : vec4<f32> = gv;
+    temp = i32(max(mix(vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), x_8), vec4<f32>(8.600000381, 8.600000381, 8.600000381, 8.600000381)).y);
+    let x_44 : i32 = temp;
+    if ((x_44 < 150)) {
+      discard;
+    }
+    let x_48 : i32 = temp;
+    if ((x_48 < 180)) {
+      discard;
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm
new file mode 100644
index 0000000..7c1f536
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm
@@ -0,0 +1,44 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %GLF_live6mand_ "GLF_live6mand("
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+          %9 = OpTypeFunction %v3float
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+ %uint_38730 = OpConstant %uint 38730
+ %uint_63193 = OpConstant %uint 63193
+ %uint_63173 = OpConstant %uint 63173
+         %15 = OpConstantComposite %v3uint %uint_38730 %uint_63193 %uint_63173
+  %float_463 = OpConstant %float 463
+    %float_4 = OpConstant %float 4
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v3float %float_463 %float_4 %float_0
+    %float_2 = OpConstant %float 2
+         %21 = OpConstantComposite %v3float %float_2 %float_2 %float_2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %6
+         %26 = OpLabel
+         %27 = OpFunctionCall %v3float %GLF_live6mand_
+               OpStore %_GLF_color %25
+               OpReturn
+               OpFunctionEnd
+%GLF_live6mand_ = OpFunction %v3float None %9
+         %28 = OpLabel
+         %29 = OpBitcast %v3float %15
+         %30 = OpExtInst %v3float %1 FMix %29 %19 %21
+               OpReturnValue %30
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..90b1ba3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn GLF_live6mand_() -> vec3<f32> {
+  return mix(bitcast<vec3<f32>>(vec3<u32>(38730u, 63193u, 63173u)), vec3<f32>(463.0, 4.0, 0.0), vec3<f32>(2.0, 2.0, 2.0));
+}
+
+fn main_1() {
+  let x_27 : vec3<f32> = GLF_live6mand_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+Failed to generate: error: Unable to do bitcast to type __vec_3__f32
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..46dbf20
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.msl
@@ -0,0 +1,28 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 GLF_live6mand_() {
+  return mix(as_type<float3>(uint3(38730u, 63193u, 63173u)), float3(463.0f, 4.0f, 0.0f), float3(2.0f, 2.0f, 2.0f));
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float3 const x_27 = GLF_live6mand_();
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..02d804c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,75 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+         %13 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %GLF_live6mand_ "GLF_live6mand_"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+ %uint_38730 = OpConstant %uint 38730
+ %uint_63193 = OpConstant %uint 63193
+ %uint_63173 = OpConstant %uint 63173
+         %20 = OpConstantComposite %v3uint %uint_38730 %uint_63193 %uint_63173
+  %float_463 = OpConstant %float 463
+    %float_4 = OpConstant %float 4
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v3float %float_463 %float_4 %float_0
+    %float_2 = OpConstant %float 2
+         %26 = OpConstantComposite %v3float %float_2 %float_2 %float_2
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %34 = OpTypeFunction %void %main_out
+%GLF_live6mand_ = OpFunction %v3float None %8
+         %11 = OpLabel
+         %14 = OpBitcast %v3float %20
+         %12 = OpExtInst %v3float %13 FMix %14 %24 %26
+               OpReturnValue %12
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+         %31 = OpFunctionCall %v3float %GLF_live6mand_
+               OpStore %x_GLF_color %33
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol = OpFunctionParameter %main_out
+         %38 = OpLabel
+         %39 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %39
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..99c613e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn GLF_live6mand_() -> vec3<f32> {
+  return mix(bitcast<vec3<f32>>(vec3<u32>(38730u, 63193u, 63173u)), vec3<f32>(463.0, 4.0, 0.0), vec3<f32>(2.0, 2.0, 2.0));
+}
+
+fn main_1() {
+  let x_27 : vec3<f32> = GLF_live6mand_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
new file mode 100644
index 0000000..99c613e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
@@ -0,0 +1,22 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn GLF_live6mand_() -> vec3<f32> {
+  return mix(bitcast<vec3<f32>>(vec3<u32>(38730u, 63193u, 63173u)), vec3<f32>(463.0, 4.0, 0.0), vec3<f32>(2.0, 2.0, 2.0));
+}
+
+fn main_1() {
+  let x_27 : vec3<f32> = GLF_live6mand_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..90b1ba3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn GLF_live6mand_() -> vec3<f32> {
+  return mix(bitcast<vec3<f32>>(vec3<u32>(38730u, 63193u, 63173u)), vec3<f32>(463.0, 4.0, 0.0), vec3<f32>(2.0, 2.0, 2.0));
+}
+
+fn main_1() {
+  let x_27 : vec3<f32> = GLF_live6mand_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+Failed to generate: error: Unable to do bitcast to type __vec_3__f32
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..46dbf20
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.msl
@@ -0,0 +1,28 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 GLF_live6mand_() {
+  return mix(as_type<float3>(uint3(38730u, 63193u, 63173u)), float3(463.0f, 4.0f, 0.0f), float3(2.0f, 2.0f, 2.0f));
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float3 const x_27 = GLF_live6mand_();
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..02d804c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,75 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+         %13 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %GLF_live6mand_ "GLF_live6mand_"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+ %uint_38730 = OpConstant %uint 38730
+ %uint_63193 = OpConstant %uint 63193
+ %uint_63173 = OpConstant %uint 63173
+         %20 = OpConstantComposite %v3uint %uint_38730 %uint_63193 %uint_63173
+  %float_463 = OpConstant %float 463
+    %float_4 = OpConstant %float 4
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v3float %float_463 %float_4 %float_0
+    %float_2 = OpConstant %float 2
+         %26 = OpConstantComposite %v3float %float_2 %float_2 %float_2
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %34 = OpTypeFunction %void %main_out
+%GLF_live6mand_ = OpFunction %v3float None %8
+         %11 = OpLabel
+         %14 = OpBitcast %v3float %20
+         %12 = OpExtInst %v3float %13 FMix %14 %24 %26
+               OpReturnValue %12
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+         %31 = OpFunctionCall %v3float %GLF_live6mand_
+               OpStore %x_GLF_color %33
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol = OpFunctionParameter %main_out
+         %38 = OpLabel
+         %39 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %39
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %main_1
+         %44 = OpLoad %v4float %x_GLF_color
+         %45 = OpCompositeConstruct %main_out %44
+         %43 = OpFunctionCall %void %tint_symbol_2 %45
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..99c613e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn GLF_live6mand_() -> vec3<f32> {
+  return mix(bitcast<vec3<f32>>(vec3<u32>(38730u, 63193u, 63173u)), vec3<f32>(463.0, 4.0, 0.0), vec3<f32>(2.0, 2.0, 2.0));
+}
+
+fn main_1() {
+  let x_27 : vec3<f32> = GLF_live6mand_();
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm
new file mode 100644
index 0000000..0ec3da2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm
@@ -0,0 +1,122 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %m44 "m44"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%mat4v4float = OpTypeMatrix %v4float 4
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %21 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+    %float_5 = OpConstant %float 5
+    %float_6 = OpConstant %float 6
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+         %26 = OpConstantComposite %v4float %float_5 %float_6 %float_7 %float_8
+    %float_9 = OpConstant %float 9
+   %float_10 = OpConstant %float 10
+   %float_11 = OpConstant %float 11
+   %float_12 = OpConstant %float 12
+         %31 = OpConstantComposite %v4float %float_9 %float_10 %float_11 %float_12
+   %float_13 = OpConstant %float 13
+   %float_14 = OpConstant %float 14
+   %float_15 = OpConstant %float 15
+   %float_16 = OpConstant %float 16
+         %36 = OpConstantComposite %v4float %float_13 %float_14 %float_15 %float_16
+         %37 = OpConstantComposite %mat4v4float %21 %26 %31 %36
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+         %50 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_2 = OpConstant %int 2
+     %uint_2 = OpConstant %uint 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+       %main = OpFunction %void None %13
+         %56 = OpLabel
+        %m44 = OpVariable %_ptr_Function_mat4v4float Function
+               OpStore %m44 %37
+               OpBranch %57
+         %57 = OpLabel
+         %10 = OpPhi %int %int_0 %56 %9 %58
+         %59 = OpSLessThan %bool %10 %int_4
+               OpLoopMerge %60 %58 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %63 = OpLoad %float %62
+         %64 = OpFOrdLessThan %bool %63 %float_0
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+               OpBranch %60
+         %65 = OpLabel
+               OpBranch %67
+         %67 = OpLabel
+         %11 = OpPhi %int %int_0 %65 %8 %68
+         %69 = OpSLessThan %bool %11 %int_4
+               OpLoopMerge %70 %68 None
+               OpBranchConditional %69 %68 %70
+         %68 = OpLabel
+         %71 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Function_float %m44 %10 %11
+         %74 = OpLoad %float %73
+         %75 = OpFAdd %float %74 %72
+               OpStore %73 %75
+          %8 = OpIAdd %int %11 %int_1
+               OpBranch %67
+         %70 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+          %9 = OpIAdd %int %10 %int_1
+               OpBranch %57
+         %60 = OpLabel
+         %76 = OpAccessChain %_ptr_Function_float %m44 %int_1 %uint_1
+         %77 = OpLoad %float %76
+         %78 = OpFSub %float %77 %float_6
+         %79 = OpCompositeInsert %v4float %78 %50 0
+         %80 = OpAccessChain %_ptr_Function_float %m44 %int_2 %uint_2
+         %81 = OpLoad %float %80
+         %82 = OpFSub %float %81 %float_11
+         %83 = OpCompositeInsert %v4float %82 %79 3
+               OpStore %_GLF_color %83
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..69942c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.hlsl
@@ -0,0 +1,79 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+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 float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4x4 m44 = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int x_10_phi = 0;
+  m44 = float4x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f), float4(13.0f, 14.0f, 15.0f, 16.0f));
+  x_10_phi = 0;
+  while (true) {
+    int x_9 = 0;
+    int x_11_phi = 0;
+    const int x_10 = x_10_phi;
+    if ((x_10 < 4)) {
+    } else {
+      break;
+    }
+    const float x_63 = gl_FragCoord.y;
+    if ((x_63 < 0.0f)) {
+      break;
+    }
+    x_11_phi = 0;
+    while (true) {
+      int x_8 = 0;
+      const int x_11 = x_11_phi;
+      if ((x_11 < 4)) {
+      } else {
+        break;
+      }
+      {
+        const float x_72 = asfloat(x_7[0].x);
+        const int x_73_save = x_10;
+        const int x_73_save_1 = x_11;
+        const float x_74 = m44[x_73_save][x_73_save_1];
+        set_float4(m44[x_73_save], x_73_save_1, (x_74 + x_72));
+        x_8 = (x_11 + 1);
+        x_11_phi = x_8;
+      }
+    }
+    {
+      x_9 = (x_10 + 1);
+      x_10_phi = x_9;
+    }
+  }
+  const float x_77 = m44[1].y;
+  float4 x_79_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_79_1.x = (x_77 - 6.0f);
+  const float4 x_79 = x_79_1;
+  const float x_81 = m44[2].z;
+  float4 x_83_1 = x_79;
+  x_83_1.w = (x_81 - 11.0f);
+  x_GLF_color = x_83_1;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.msl
new file mode 100644
index 0000000..998e2de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4x4 m44 = float4x4(0.0f);
+  int x_10_phi = 0;
+  m44 = float4x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f), float4(13.0f, 14.0f, 15.0f, 16.0f));
+  x_10_phi = 0;
+  while (true) {
+    int x_9 = 0;
+    int x_11_phi = 0;
+    int const x_10 = x_10_phi;
+    if ((x_10 < 4)) {
+    } else {
+      break;
+    }
+    float const x_63 = (*(tint_symbol_5)).y;
+    if ((x_63 < 0.0f)) {
+      break;
+    }
+    x_11_phi = 0;
+    while (true) {
+      int x_8 = 0;
+      int const x_11 = x_11_phi;
+      if ((x_11 < 4)) {
+      } else {
+        break;
+      }
+      {
+        float const x_72 = x_7.one;
+        int const x_73_save = x_10;
+        int const x_73_save_1 = x_11;
+        float const x_74 = m44[x_73_save][x_73_save_1];
+        m44[x_73_save][x_73_save_1] = (x_74 + x_72);
+        x_8 = (x_11 + 1);
+        x_11_phi = x_8;
+      }
+    }
+    {
+      x_9 = (x_10 + 1);
+      x_10_phi = x_9;
+    }
+  }
+  float const x_77 = m44[1].y;
+  float4 x_79_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_79_1.x = (x_77 - 6.0f);
+  float4 const x_79 = x_79_1;
+  float const x_81 = m44[2].z;
+  float4 x_83_1 = x_79;
+  x_83_1.w = (x_81 - 11.0f);
+  float4 const x_83 = x_83_1;
+  *(tint_symbol_6) = x_83;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..312327e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.spvasm
@@ -0,0 +1,202 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 124
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %m44 "m44"
+               OpName %x_10_phi "x_10_phi"
+               OpName %x_9 "x_9"
+               OpName %x_11_phi "x_11_phi"
+               OpName %x_8 "x_8"
+               OpName %x_79_1 "x_79_1"
+               OpName %x_83_1 "x_83_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %21 = OpConstantNull %mat4v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %30 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+    %float_5 = OpConstant %float 5
+    %float_6 = OpConstant %float 6
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+         %35 = OpConstantComposite %v4float %float_5 %float_6 %float_7 %float_8
+    %float_9 = OpConstant %float 9
+   %float_10 = OpConstant %float 10
+   %float_11 = OpConstant %float 11
+   %float_12 = OpConstant %float 12
+         %40 = OpConstantComposite %v4float %float_9 %float_10 %float_11 %float_12
+   %float_13 = OpConstant %float 13
+   %float_14 = OpConstant %float 14
+   %float_15 = OpConstant %float 15
+   %float_16 = OpConstant %float 16
+         %45 = OpConstantComposite %v4float %float_13 %float_14 %float_15 %float_16
+         %46 = OpConstantComposite %mat4v4float %30 %35 %40 %45
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+         %96 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %int_2 = OpConstant %int 2
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+   %main_out = OpTypeStruct %v4float
+        %111 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+        %m44 = OpVariable %_ptr_Function_mat4v4float Function %21
+   %x_10_phi = OpVariable %_ptr_Function_int Function %25
+        %x_9 = OpVariable %_ptr_Function_int Function %25
+   %x_11_phi = OpVariable %_ptr_Function_int Function %25
+        %x_8 = OpVariable %_ptr_Function_int Function %25
+     %x_79_1 = OpVariable %_ptr_Function_v4float Function %5
+     %x_83_1 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %m44 %46
+               OpStore %x_10_phi %int_0
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+         %54 = OpLoad %int %x_10_phi
+         %56 = OpSLessThan %bool %54 %int_4
+               OpSelectionMerge %58 None
+               OpBranchConditional %56 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %49
+         %58 = OpLabel
+         %64 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %65 = OpLoad %float %64
+         %67 = OpFOrdLessThan %bool %65 %float_0
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpBranch %49
+         %68 = OpLabel
+               OpStore %x_11_phi %int_0
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %75 = OpLoad %int %x_11_phi
+         %76 = OpSLessThan %bool %75 %int_4
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %71
+         %77 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %83 = OpLoad %float %82
+         %85 = OpAccessChain %_ptr_Function_float %m44 %54 %75
+         %86 = OpLoad %float %85
+         %87 = OpAccessChain %_ptr_Function_float %m44 %54 %75
+         %88 = OpFAdd %float %86 %83
+               OpStore %87 %88
+         %90 = OpIAdd %int %75 %int_1
+               OpStore %x_8 %90
+         %91 = OpLoad %int %x_8
+               OpStore %x_11_phi %91
+               OpBranch %70
+         %71 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+         %92 = OpIAdd %int %54 %int_1
+               OpStore %x_9 %92
+         %93 = OpLoad %int %x_9
+               OpStore %x_10_phi %93
+               OpBranch %48
+         %49 = OpLabel
+         %94 = OpAccessChain %_ptr_Function_float %m44 %int_1 %uint_1
+         %95 = OpLoad %float %94
+               OpStore %x_79_1 %96
+         %99 = OpAccessChain %_ptr_Function_float %x_79_1 %uint_0
+        %100 = OpFSub %float %95 %float_6
+               OpStore %99 %100
+        %101 = OpLoad %v4float %x_79_1
+        %104 = OpAccessChain %_ptr_Function_float %m44 %int_2 %uint_2
+        %105 = OpLoad %float %104
+               OpStore %x_83_1 %101
+        %108 = OpAccessChain %_ptr_Function_float %x_83_1 %uint_3
+        %109 = OpFSub %float %105 %float_11
+               OpStore %108 %109
+        %110 = OpLoad %v4float %x_83_1
+               OpStore %x_GLF_color %110
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %111
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %115 = OpLabel
+        %116 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %116
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+        %118 = OpLabel
+        %119 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %119
+        %120 = OpFunctionCall %void %main_1
+        %122 = OpLoad %v4float %x_GLF_color
+        %123 = OpCompositeConstruct %main_out %122
+        %121 = OpFunctionCall %void %tint_symbol_3 %123
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..8f6639e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.wgsl
@@ -0,0 +1,75 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m44 : mat4x4<f32>;
+  var x_10_phi : i32;
+  m44 = mat4x4<f32>(vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>(5.0, 6.0, 7.0, 8.0), vec4<f32>(9.0, 10.0, 11.0, 12.0), vec4<f32>(13.0, 14.0, 15.0, 16.0));
+  x_10_phi = 0;
+  loop {
+    var x_9 : i32;
+    var x_11_phi : i32;
+    let x_10 : i32 = x_10_phi;
+    if ((x_10 < 4)) {
+    } else {
+      break;
+    }
+    let x_63 : f32 = gl_FragCoord.y;
+    if ((x_63 < 0.0)) {
+      break;
+    }
+    x_11_phi = 0;
+    loop {
+      var x_8 : i32;
+      let x_11 : i32 = x_11_phi;
+      if ((x_11 < 4)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_72 : f32 = x_7.one;
+        let x_73 : ptr<function, f32> = &(m44[x_10][x_11]);
+        let x_74 : f32 = *(x_73);
+        *(x_73) = (x_74 + x_72);
+        x_8 = (x_11 + 1);
+        x_11_phi = x_8;
+      }
+    }
+
+    continuing {
+      x_9 = (x_10 + 1);
+      x_10_phi = x_9;
+    }
+  }
+  let x_77 : f32 = m44[1].y;
+  var x_79_1 : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  x_79_1.x = (x_77 - 6.0);
+  let x_79 : vec4<f32> = x_79_1;
+  let x_81 : f32 = m44[2].z;
+  var x_83_1 : vec4<f32> = x_79;
+  x_83_1.w = (x_81 - 11.0);
+  let x_83 : vec4<f32> = x_83_1;
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
new file mode 100644
index 0000000..8f6639e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
@@ -0,0 +1,75 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m44 : mat4x4<f32>;
+  var x_10_phi : i32;
+  m44 = mat4x4<f32>(vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>(5.0, 6.0, 7.0, 8.0), vec4<f32>(9.0, 10.0, 11.0, 12.0), vec4<f32>(13.0, 14.0, 15.0, 16.0));
+  x_10_phi = 0;
+  loop {
+    var x_9 : i32;
+    var x_11_phi : i32;
+    let x_10 : i32 = x_10_phi;
+    if ((x_10 < 4)) {
+    } else {
+      break;
+    }
+    let x_63 : f32 = gl_FragCoord.y;
+    if ((x_63 < 0.0)) {
+      break;
+    }
+    x_11_phi = 0;
+    loop {
+      var x_8 : i32;
+      let x_11 : i32 = x_11_phi;
+      if ((x_11 < 4)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_72 : f32 = x_7.one;
+        let x_73 : ptr<function, f32> = &(m44[x_10][x_11]);
+        let x_74 : f32 = *(x_73);
+        *(x_73) = (x_74 + x_72);
+        x_8 = (x_11 + 1);
+        x_11_phi = x_8;
+      }
+    }
+
+    continuing {
+      x_9 = (x_10 + 1);
+      x_10_phi = x_9;
+    }
+  }
+  let x_77 : f32 = m44[1].y;
+  var x_79_1 : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  x_79_1.x = (x_77 - 6.0);
+  let x_79 : vec4<f32> = x_79_1;
+  let x_81 : f32 = m44[2].z;
+  var x_83_1 : vec4<f32> = x_79;
+  x_83_1.w = (x_81 - 11.0);
+  let x_83 : vec4<f32> = x_83_1;
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..69942c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.hlsl
@@ -0,0 +1,79 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+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 float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4x4 m44 = float4x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+  int x_10_phi = 0;
+  m44 = float4x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f), float4(13.0f, 14.0f, 15.0f, 16.0f));
+  x_10_phi = 0;
+  while (true) {
+    int x_9 = 0;
+    int x_11_phi = 0;
+    const int x_10 = x_10_phi;
+    if ((x_10 < 4)) {
+    } else {
+      break;
+    }
+    const float x_63 = gl_FragCoord.y;
+    if ((x_63 < 0.0f)) {
+      break;
+    }
+    x_11_phi = 0;
+    while (true) {
+      int x_8 = 0;
+      const int x_11 = x_11_phi;
+      if ((x_11 < 4)) {
+      } else {
+        break;
+      }
+      {
+        const float x_72 = asfloat(x_7[0].x);
+        const int x_73_save = x_10;
+        const int x_73_save_1 = x_11;
+        const float x_74 = m44[x_73_save][x_73_save_1];
+        set_float4(m44[x_73_save], x_73_save_1, (x_74 + x_72));
+        x_8 = (x_11 + 1);
+        x_11_phi = x_8;
+      }
+    }
+    {
+      x_9 = (x_10 + 1);
+      x_10_phi = x_9;
+    }
+  }
+  const float x_77 = m44[1].y;
+  float4 x_79_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_79_1.x = (x_77 - 6.0f);
+  const float4 x_79 = x_79_1;
+  const float x_81 = m44[2].z;
+  float4 x_83_1 = x_79;
+  x_83_1.w = (x_81 - 11.0f);
+  x_GLF_color = x_83_1;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.msl
new file mode 100644
index 0000000..998e2de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.msl
@@ -0,0 +1,75 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float one;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4x4 m44 = float4x4(0.0f);
+  int x_10_phi = 0;
+  m44 = float4x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f), float4(13.0f, 14.0f, 15.0f, 16.0f));
+  x_10_phi = 0;
+  while (true) {
+    int x_9 = 0;
+    int x_11_phi = 0;
+    int const x_10 = x_10_phi;
+    if ((x_10 < 4)) {
+    } else {
+      break;
+    }
+    float const x_63 = (*(tint_symbol_5)).y;
+    if ((x_63 < 0.0f)) {
+      break;
+    }
+    x_11_phi = 0;
+    while (true) {
+      int x_8 = 0;
+      int const x_11 = x_11_phi;
+      if ((x_11 < 4)) {
+      } else {
+        break;
+      }
+      {
+        float const x_72 = x_7.one;
+        int const x_73_save = x_10;
+        int const x_73_save_1 = x_11;
+        float const x_74 = m44[x_73_save][x_73_save_1];
+        m44[x_73_save][x_73_save_1] = (x_74 + x_72);
+        x_8 = (x_11 + 1);
+        x_11_phi = x_8;
+      }
+    }
+    {
+      x_9 = (x_10 + 1);
+      x_10_phi = x_9;
+    }
+  }
+  float const x_77 = m44[1].y;
+  float4 x_79_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x_79_1.x = (x_77 - 6.0f);
+  float4 const x_79 = x_79_1;
+  float const x_81 = m44[2].z;
+  float4 x_83_1 = x_79;
+  x_83_1.w = (x_81 - 11.0f);
+  float4 const x_83 = x_83_1;
+  *(tint_symbol_6) = x_83;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..312327e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.spvasm
@@ -0,0 +1,202 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 124
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "one"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %m44 "m44"
+               OpName %x_10_phi "x_10_phi"
+               OpName %x_9 "x_9"
+               OpName %x_11_phi "x_11_phi"
+               OpName %x_8 "x_8"
+               OpName %x_79_1 "x_79_1"
+               OpName %x_83_1 "x_83_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+%mat4v4float = OpTypeMatrix %v4float 4
+%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
+         %21 = OpConstantNull %mat4v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %30 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+    %float_5 = OpConstant %float 5
+    %float_6 = OpConstant %float 6
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+         %35 = OpConstantComposite %v4float %float_5 %float_6 %float_7 %float_8
+    %float_9 = OpConstant %float 9
+   %float_10 = OpConstant %float 10
+   %float_11 = OpConstant %float 11
+   %float_12 = OpConstant %float 12
+         %40 = OpConstantComposite %v4float %float_9 %float_10 %float_11 %float_12
+   %float_13 = OpConstant %float 13
+   %float_14 = OpConstant %float 14
+   %float_15 = OpConstant %float 15
+   %float_16 = OpConstant %float 16
+         %45 = OpConstantComposite %v4float %float_13 %float_14 %float_15 %float_16
+         %46 = OpConstantComposite %mat4v4float %30 %35 %40 %45
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+         %96 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %int_2 = OpConstant %int 2
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+   %main_out = OpTypeStruct %v4float
+        %111 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+        %m44 = OpVariable %_ptr_Function_mat4v4float Function %21
+   %x_10_phi = OpVariable %_ptr_Function_int Function %25
+        %x_9 = OpVariable %_ptr_Function_int Function %25
+   %x_11_phi = OpVariable %_ptr_Function_int Function %25
+        %x_8 = OpVariable %_ptr_Function_int Function %25
+     %x_79_1 = OpVariable %_ptr_Function_v4float Function %5
+     %x_83_1 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %m44 %46
+               OpStore %x_10_phi %int_0
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+         %54 = OpLoad %int %x_10_phi
+         %56 = OpSLessThan %bool %54 %int_4
+               OpSelectionMerge %58 None
+               OpBranchConditional %56 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %49
+         %58 = OpLabel
+         %64 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %65 = OpLoad %float %64
+         %67 = OpFOrdLessThan %bool %65 %float_0
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpBranch %49
+         %68 = OpLabel
+               OpStore %x_11_phi %int_0
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %75 = OpLoad %int %x_11_phi
+         %76 = OpSLessThan %bool %75 %int_4
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+               OpBranch %77
+         %79 = OpLabel
+               OpBranch %71
+         %77 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+         %82 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0
+         %83 = OpLoad %float %82
+         %85 = OpAccessChain %_ptr_Function_float %m44 %54 %75
+         %86 = OpLoad %float %85
+         %87 = OpAccessChain %_ptr_Function_float %m44 %54 %75
+         %88 = OpFAdd %float %86 %83
+               OpStore %87 %88
+         %90 = OpIAdd %int %75 %int_1
+               OpStore %x_8 %90
+         %91 = OpLoad %int %x_8
+               OpStore %x_11_phi %91
+               OpBranch %70
+         %71 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+         %92 = OpIAdd %int %54 %int_1
+               OpStore %x_9 %92
+         %93 = OpLoad %int %x_9
+               OpStore %x_10_phi %93
+               OpBranch %48
+         %49 = OpLabel
+         %94 = OpAccessChain %_ptr_Function_float %m44 %int_1 %uint_1
+         %95 = OpLoad %float %94
+               OpStore %x_79_1 %96
+         %99 = OpAccessChain %_ptr_Function_float %x_79_1 %uint_0
+        %100 = OpFSub %float %95 %float_6
+               OpStore %99 %100
+        %101 = OpLoad %v4float %x_79_1
+        %104 = OpAccessChain %_ptr_Function_float %m44 %int_2 %uint_2
+        %105 = OpLoad %float %104
+               OpStore %x_83_1 %101
+        %108 = OpAccessChain %_ptr_Function_float %x_83_1 %uint_3
+        %109 = OpFSub %float %105 %float_11
+               OpStore %108 %109
+        %110 = OpLoad %v4float %x_83_1
+               OpStore %x_GLF_color %110
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %111
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %115 = OpLabel
+        %116 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %116
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+        %118 = OpLabel
+        %119 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %119
+        %120 = OpFunctionCall %void %main_1
+        %122 = OpLoad %v4float %x_GLF_color
+        %123 = OpCompositeConstruct %main_out %122
+        %121 = OpFunctionCall %void %tint_symbol_3 %123
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..8f6639e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.wgsl
@@ -0,0 +1,75 @@
+[[block]]
+struct buf0 {
+  one : f32;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m44 : mat4x4<f32>;
+  var x_10_phi : i32;
+  m44 = mat4x4<f32>(vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>(5.0, 6.0, 7.0, 8.0), vec4<f32>(9.0, 10.0, 11.0, 12.0), vec4<f32>(13.0, 14.0, 15.0, 16.0));
+  x_10_phi = 0;
+  loop {
+    var x_9 : i32;
+    var x_11_phi : i32;
+    let x_10 : i32 = x_10_phi;
+    if ((x_10 < 4)) {
+    } else {
+      break;
+    }
+    let x_63 : f32 = gl_FragCoord.y;
+    if ((x_63 < 0.0)) {
+      break;
+    }
+    x_11_phi = 0;
+    loop {
+      var x_8 : i32;
+      let x_11 : i32 = x_11_phi;
+      if ((x_11 < 4)) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_72 : f32 = x_7.one;
+        let x_73 : ptr<function, f32> = &(m44[x_10][x_11]);
+        let x_74 : f32 = *(x_73);
+        *(x_73) = (x_74 + x_72);
+        x_8 = (x_11 + 1);
+        x_11_phi = x_8;
+      }
+    }
+
+    continuing {
+      x_9 = (x_10 + 1);
+      x_10_phi = x_9;
+    }
+  }
+  let x_77 : f32 = m44[1].y;
+  var x_79_1 : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  x_79_1.x = (x_77 - 6.0);
+  let x_79 : vec4<f32> = x_79_1;
+  let x_81 : f32 = m44[2].z;
+  var x_83_1 : vec4<f32> = x_79;
+  x_83_1.w = (x_81 - 11.0);
+  let x_83 : vec4<f32> = x_83_1;
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm
new file mode 100644
index 0000000..f854eb0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm
@@ -0,0 +1,86 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %nb_mod_f1_ "nb_mod(f1;"
+               OpName %limit "limit"
+               OpName %_injected_loop_counter "_injected_loop_counter"
+               OpName %_injected_loop_counter_0 "_injected_loop_counter"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_injected_loop_counter RelaxedPrecision
+               OpDecorate %_injected_loop_counter_0 RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %14 = OpTypeFunction %float %_ptr_Function_float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %30 = OpUndef %int
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %11
+         %32 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function
+         %33 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %34 = OpLoad %float %33
+               OpStore %param %34
+         %35 = OpFunctionCall %float %nb_mod_f1_ %param
+               OpStore %_GLF_color %29
+               OpReturn
+               OpFunctionEnd
+ %nb_mod_f1_ = OpFunction %float None %14
+      %limit = OpFunctionParameter %_ptr_Function_float
+         %36 = OpLabel
+%_injected_loop_counter = OpVariable %_ptr_Function_int Function
+%_injected_loop_counter_0 = OpVariable %_ptr_Function_int Function
+         %37 = OpLoad %float %limit
+         %38 = OpFOrdGreaterThanEqual %bool %float_1 %37
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %39
+         %40 = OpLabel
+               OpReturnValue %float_1
+         %39 = OpLabel
+               OpStore %_injected_loop_counter %int_0
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpSLessThan %bool %int_0 %int_2
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+               OpStore %_injected_loop_counter_0 %int_0
+               OpBranch %46
+         %46 = OpLabel
+         %47 = OpSLessThan %bool %int_0 %int_1
+               OpLoopMerge %44 %48 None
+               OpBranch %49
+         %49 = OpLabel
+               OpReturnValue %float_1
+         %48 = OpLabel
+               OpBranch %46
+         %44 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..861538a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,49 @@
+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);
+
+float nb_mod_f1_(inout float limit) {
+  int x_injected_loop_counter = 0;
+  int x_injected_loop_counter_1 = 0;
+  const float x_37 = limit;
+  if ((1.0f >= x_37)) {
+    return 1.0f;
+  }
+  x_injected_loop_counter = 0;
+  while (true) {
+    const bool x_42 = (0 < 2);
+    x_injected_loop_counter_1 = 0;
+    while (true) {
+      const bool x_47 = (0 < 1);
+      return 1.0f;
+    }
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  float param = 0.0f;
+  const float x_34 = gl_FragCoord.x;
+  param = x_34;
+  const float x_35 = nb_mod_f1_(param);
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2455128
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float nb_mod_f1_(thread float* const limit) {
+  int x_injected_loop_counter = 0;
+  int x_injected_loop_counter_1 = 0;
+  float const x_37 = *(limit);
+  if ((1.0f >= x_37)) {
+    return 1.0f;
+  }
+  x_injected_loop_counter = 0;
+  while (true) {
+    bool const x_42 = (0 < 2);
+    x_injected_loop_counter_1 = 0;
+    while (true) {
+      bool const x_47 = (0 < 1);
+      return 1.0f;
+    }
+  }
+  return 0.0f;
+}
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float param = 0.0f;
+  float const x_34 = (*(tint_symbol_5)).x;
+  param = x_34;
+  float const x_35 = nb_mod_f1_(&(param));
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..eca9c85
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,120 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %nb_mod_f1_ "nb_mod_f1_"
+               OpName %limit "limit"
+               OpName %x_injected_loop_counter "x_injected_loop_counter"
+               OpName %x_injected_loop_counter_1 "x_injected_loop_counter_1"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %11 = OpTypeFunction %float %_ptr_Function_float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+       %void = OpTypeVoid
+         %42 = OpTypeFunction %void
+         %47 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+ %nb_mod_f1_ = OpFunction %float None %11
+      %limit = OpFunctionParameter %_ptr_Function_float
+         %15 = OpLabel
+%x_injected_loop_counter = OpVariable %_ptr_Function_int Function %19
+%x_injected_loop_counter_1 = OpVariable %_ptr_Function_int Function %19
+         %22 = OpLoad %float %limit
+         %24 = OpFOrdGreaterThanEqual %bool %float_1 %22
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+               OpReturnValue %float_1
+         %26 = OpLabel
+               OpStore %x_injected_loop_counter %int_0
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %34 = OpSLessThan %bool %int_0 %int_2
+               OpStore %x_injected_loop_counter_1 %int_0
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %40 = OpSLessThan %bool %int_0 %int_1
+               OpReturnValue %float_1
+         %37 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+               OpBranch %29
+         %30 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %42
+         %45 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function %47
+         %51 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %52 = OpLoad %float %51
+               OpStore %param %52
+         %53 = OpFunctionCall %float %nb_mod_f1_ %param
+               OpStore %x_GLF_color %55
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %56
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %42
+         %63 = OpLabel
+         %64 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %64
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_3 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f37535c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,43 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn nb_mod_f1_(limit : ptr<function, f32>) -> f32 {
+  var x_injected_loop_counter : i32;
+  var x_injected_loop_counter_1 : i32;
+  let x_37 : f32 = *(limit);
+  if ((1.0 >= x_37)) {
+    return 1.0;
+  }
+  x_injected_loop_counter = 0;
+  loop {
+    let x_42 : bool = (0 < 2);
+    x_injected_loop_counter_1 = 0;
+    loop {
+      let x_47 : bool = (0 < 1);
+      return 1.0;
+    }
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var param : f32;
+  let x_34 : f32 = gl_FragCoord.x;
+  param = x_34;
+  let x_35 : f32 = nb_mod_f1_(&(param));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
new file mode 100644
index 0000000..f37535c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
@@ -0,0 +1,43 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn nb_mod_f1_(limit : ptr<function, f32>) -> f32 {
+  var x_injected_loop_counter : i32;
+  var x_injected_loop_counter_1 : i32;
+  let x_37 : f32 = *(limit);
+  if ((1.0 >= x_37)) {
+    return 1.0;
+  }
+  x_injected_loop_counter = 0;
+  loop {
+    let x_42 : bool = (0 < 2);
+    x_injected_loop_counter_1 = 0;
+    loop {
+      let x_47 : bool = (0 < 1);
+      return 1.0;
+    }
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var param : f32;
+  let x_34 : f32 = gl_FragCoord.x;
+  param = x_34;
+  let x_35 : f32 = nb_mod_f1_(&(param));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..861538a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,49 @@
+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);
+
+float nb_mod_f1_(inout float limit) {
+  int x_injected_loop_counter = 0;
+  int x_injected_loop_counter_1 = 0;
+  const float x_37 = limit;
+  if ((1.0f >= x_37)) {
+    return 1.0f;
+  }
+  x_injected_loop_counter = 0;
+  while (true) {
+    const bool x_42 = (0 < 2);
+    x_injected_loop_counter_1 = 0;
+    while (true) {
+      const bool x_47 = (0 < 1);
+      return 1.0f;
+    }
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  float param = 0.0f;
+  const float x_34 = gl_FragCoord.x;
+  param = x_34;
+  const float x_35 = nb_mod_f1_(param);
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2455128
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float nb_mod_f1_(thread float* const limit) {
+  int x_injected_loop_counter = 0;
+  int x_injected_loop_counter_1 = 0;
+  float const x_37 = *(limit);
+  if ((1.0f >= x_37)) {
+    return 1.0f;
+  }
+  x_injected_loop_counter = 0;
+  while (true) {
+    bool const x_42 = (0 < 2);
+    x_injected_loop_counter_1 = 0;
+    while (true) {
+      bool const x_47 = (0 < 1);
+      return 1.0f;
+    }
+  }
+  return 0.0f;
+}
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float param = 0.0f;
+  float const x_34 = (*(tint_symbol_5)).x;
+  param = x_34;
+  float const x_35 = nb_mod_f1_(&(param));
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..eca9c85
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,120 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %nb_mod_f1_ "nb_mod_f1_"
+               OpName %limit "limit"
+               OpName %x_injected_loop_counter "x_injected_loop_counter"
+               OpName %x_injected_loop_counter_1 "x_injected_loop_counter_1"
+               OpName %main_1 "main_1"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_float = OpTypePointer Function %float
+         %11 = OpTypeFunction %float %_ptr_Function_float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+       %void = OpTypeVoid
+         %42 = OpTypeFunction %void
+         %47 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+ %nb_mod_f1_ = OpFunction %float None %11
+      %limit = OpFunctionParameter %_ptr_Function_float
+         %15 = OpLabel
+%x_injected_loop_counter = OpVariable %_ptr_Function_int Function %19
+%x_injected_loop_counter_1 = OpVariable %_ptr_Function_int Function %19
+         %22 = OpLoad %float %limit
+         %24 = OpFOrdGreaterThanEqual %bool %float_1 %22
+               OpSelectionMerge %26 None
+               OpBranchConditional %24 %27 %26
+         %27 = OpLabel
+               OpReturnValue %float_1
+         %26 = OpLabel
+               OpStore %x_injected_loop_counter %int_0
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %34 = OpSLessThan %bool %int_0 %int_2
+               OpStore %x_injected_loop_counter_1 %int_0
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %40 = OpSLessThan %bool %int_0 %int_1
+               OpReturnValue %float_1
+         %37 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+               OpBranch %29
+         %30 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %42
+         %45 = OpLabel
+      %param = OpVariable %_ptr_Function_float Function %47
+         %51 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %52 = OpLoad %float %51
+               OpStore %param %52
+         %53 = OpFunctionCall %float %nb_mod_f1_ %param
+               OpStore %x_GLF_color %55
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %56
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %42
+         %63 = OpLabel
+         %64 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %64
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_3 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f37535c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,43 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn nb_mod_f1_(limit : ptr<function, f32>) -> f32 {
+  var x_injected_loop_counter : i32;
+  var x_injected_loop_counter_1 : i32;
+  let x_37 : f32 = *(limit);
+  if ((1.0 >= x_37)) {
+    return 1.0;
+  }
+  x_injected_loop_counter = 0;
+  loop {
+    let x_42 : bool = (0 < 2);
+    x_injected_loop_counter_1 = 0;
+    loop {
+      let x_47 : bool = (0 < 1);
+      return 1.0;
+    }
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var param : f32;
+  let x_34 : f32 = gl_FragCoord.x;
+  param = x_34;
+  let x_35 : f32 = nb_mod_f1_(&(param));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm
new file mode 100644
index 0000000..f77dde3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm
@@ -0,0 +1,83 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %17 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+         %23 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %11
+         %31 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %17
+               OpStore %i %int_0
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+          %7 = OpLoad %int %i
+         %36 = OpSLessThan %bool %7 %int_10
+               OpBranchConditional %36 %37 %33
+         %37 = OpLabel
+               OpStore %_GLF_color %23
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdGreaterThan %bool %float_1 %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpStore %_GLF_color %17
+               OpSelectionMerge %43 None
+               OpBranchConditional %true %44 %43
+         %44 = OpLabel
+               OpReturn
+         %43 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+          %8 = OpLoad %int %i
+          %9 = OpIAdd %int %8 %int_1
+               OpStore %i %9
+               OpBranch %32
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..d41e23b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      const float x_39 = asfloat(x_6[0].y);
+      if ((1.0f > x_39)) {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        if (true) {
+          return;
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..54dd6b3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,47 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_7 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    float const x_39 = x_6.injectionSwitch.y;
+    if ((1.0f > x_39)) {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      if (true) {
+        return;
+      }
+    }
+    {
+      int const x_8 = i;
+      i = (x_8 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e38a6fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+         %35 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %51 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %19
+               OpStore %x_GLF_color %22
+               OpStore %i %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %i
+         %30 = OpSLessThan %bool %28 %int_10
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+               OpStore %x_GLF_color %35
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdGreaterThan %bool %float_1 %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %x_GLF_color %22
+               OpSelectionMerge %46 None
+               OpBranchConditional %true %47 %46
+         %47 = OpLabel
+               OpReturn
+         %46 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpIAdd %int %48 %int_1
+               OpStore %i %50
+               OpBranch %24
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %51
+%tint_symbol = OpFunctionParameter %main_out
+         %55 = OpLabel
+         %56 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %56
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %58 = OpLabel
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %v4float %x_GLF_color
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_2 %62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ac61d8e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    let x_39 : f32 = x_6.injectionSwitch.y;
+    if ((1.0 > x_39)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      if (true) {
+        return;
+      }
+    }
+
+    continuing {
+      let x_8 : i32 = i;
+      i = (x_8 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
new file mode 100644
index 0000000..ac61d8e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    let x_39 : f32 = x_6.injectionSwitch.y;
+    if ((1.0 > x_39)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      if (true) {
+        return;
+      }
+    }
+
+    continuing {
+      let x_8 : i32 = i;
+      i = (x_8 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..d41e23b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      const float x_39 = asfloat(x_6[0].y);
+      if ((1.0f > x_39)) {
+        x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+        if (true) {
+          return;
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..54dd6b3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,47 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_7 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    float const x_39 = x_6.injectionSwitch.y;
+    if ((1.0f > x_39)) {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      if (true) {
+        return;
+      }
+    }
+    {
+      int const x_8 = i;
+      i = (x_8 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e38a6fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,117 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+         %35 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %51 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %19
+               OpStore %x_GLF_color %22
+               OpStore %i %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %28 = OpLoad %int %i
+         %30 = OpSLessThan %bool %28 %int_10
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpBranch %32
+         %34 = OpLabel
+               OpBranch %25
+         %32 = OpLabel
+               OpStore %x_GLF_color %35
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdGreaterThan %bool %float_1 %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %x_GLF_color %22
+               OpSelectionMerge %46 None
+               OpBranchConditional %true %47 %46
+         %47 = OpLabel
+               OpReturn
+         %46 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %26
+         %26 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpIAdd %int %48 %int_1
+               OpStore %i %50
+               OpBranch %24
+         %25 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %51
+%tint_symbol = OpFunctionParameter %main_out
+         %55 = OpLabel
+         %56 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %56
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %58 = OpLabel
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %v4float %x_GLF_color
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_2 %62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ac61d8e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  loop {
+    let x_7 : i32 = i;
+    if ((x_7 < 10)) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    let x_39 : f32 = x_6.injectionSwitch.y;
+    if ((1.0 > x_39)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      if (true) {
+        return;
+      }
+    }
+
+    continuing {
+      let x_8 : i32 = i;
+      i = (x_8 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm
new file mode 100644
index 0000000..c76e153
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm
@@ -0,0 +1,189 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %GLF_dead5cols "GLF_dead5cols"
+               OpName %GLF_dead5rows "GLF_dead5rows"
+               OpName %GLF_dead5c "GLF_dead5c"
+               OpName %GLF_dead5r "GLF_dead5r"
+               OpName %msb10 "msb10"
+               OpName %donor_replacementGLF_dead5sums "donor_replacementGLF_dead5sums"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+     %uint_1 = OpConstant %uint 1
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+      %int_9 = OpConstant %int 9
+    %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+    %int_200 = OpConstant %int 200
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %39 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %14
+         %40 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+%GLF_dead5cols = OpVariable %_ptr_Function_int Function
+%GLF_dead5rows = OpVariable %_ptr_Function_int Function
+ %GLF_dead5c = OpVariable %_ptr_Function_int Function
+ %GLF_dead5r = OpVariable %_ptr_Function_int Function
+      %msb10 = OpVariable %_ptr_Function_int Function
+%donor_replacementGLF_dead5sums = OpVariable %_ptr_Function__arr_float_uint_9 Function
+               OpStore %i %int_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpLoad %int %i
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %47 = OpLoad %float %46
+         %48 = OpConvertFToS %int %47
+         %49 = OpSGreaterThanEqual %bool %45 %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpBranch %42
+         %50 = OpLabel
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %53 = OpLoad %float %52
+         %54 = OpFOrdGreaterThan %bool %float_0 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+               OpStore %GLF_dead5cols %int_2
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %GLF_dead5cols
+         %62 = OpSLessThanEqual %bool %61 %int_4
+               OpBranchConditional %62 %63 %58
+         %63 = OpLabel
+               OpStore %GLF_dead5rows %int_2
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %GLF_dead5rows
+         %69 = OpSLessThanEqual %bool %68 %int_4
+               OpBranchConditional %69 %70 %65
+         %70 = OpLabel
+               OpStore %GLF_dead5c %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %GLF_dead5c
+         %76 = OpLoad %int %GLF_dead5cols
+         %77 = OpSLessThan %bool %75 %76
+               OpBranchConditional %77 %78 %72
+         %78 = OpLabel
+               OpStore %GLF_dead5r %int_0
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %83 = OpLoad %int %GLF_dead5r
+         %84 = OpLoad %int %GLF_dead5rows
+         %85 = OpSLessThan %bool %83 %84
+               OpBranchConditional %85 %86 %80
+         %86 = OpLabel
+         %87 = OpLoad %int %msb10
+               OpSelectionMerge %88 None
+               OpSwitch %87 %88 1 %89 8 %89
+         %89 = OpLabel
+         %90 = OpLoad %int %msb10
+         %91 = OpSGreaterThanEqual %bool %90 %int_0
+         %92 = OpLoad %int %msb10
+         %93 = OpSLessThan %bool %92 %int_9
+         %94 = OpLogicalAnd %bool %91 %93
+         %95 = OpLoad %int %msb10
+         %96 = OpSelect %int %94 %95 %int_0
+         %97 = OpAccessChain %_ptr_Function_float %donor_replacementGLF_dead5sums %96
+         %98 = OpLoad %float %97
+         %99 = OpFAdd %float %98 %float_1
+        %100 = OpAccessChain %_ptr_Function_float %donor_replacementGLF_dead5sums %96
+               OpStore %100 %99
+               OpBranch %88
+         %88 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+        %101 = OpLoad %int %GLF_dead5r
+        %102 = OpIAdd %int %101 %int_1
+               OpStore %GLF_dead5r %102
+               OpBranch %79
+         %80 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+        %103 = OpLoad %int %GLF_dead5c
+        %104 = OpIAdd %int %103 %int_1
+               OpStore %GLF_dead5c %104
+               OpBranch %71
+         %72 = OpLabel
+        %105 = OpLoad %int %msb10
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %msb10 %106
+               OpBranch %66
+         %66 = OpLabel
+        %107 = OpLoad %int %GLF_dead5rows
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %GLF_dead5rows %108
+               OpBranch %64
+         %65 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+        %109 = OpLoad %int %GLF_dead5cols
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %GLF_dead5cols %110
+               OpBranch %57
+         %58 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+        %111 = OpLoad %int %i
+        %112 = OpIAdd %int %111 %int_1
+               OpStore %i %112
+               OpBranch %43
+         %43 = OpLabel
+        %113 = OpLoad %int %i
+        %114 = OpSLessThan %bool %113 %int_200
+               OpBranchConditional %114 %41 %42
+         %42 = OpLabel
+               OpStore %_GLF_color %39
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..938e563
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.hlsl
@@ -0,0 +1,85 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int GLF_dead5cols = 0;
+  int GLF_dead5rows = 0;
+  int GLF_dead5c = 0;
+  int GLF_dead5r = 0;
+  int msb10 = 0;
+  float donor_replacementGLF_dead5sums[9] = (float[9])0;
+  i = 0;
+  while (true) {
+    const int x_45 = i;
+    const float x_47 = asfloat(x_6[0].x);
+    if ((x_45 >= int(x_47))) {
+      break;
+    }
+    const float x_53 = asfloat(x_6[0].y);
+    if ((0.0f > x_53)) {
+      GLF_dead5cols = 2;
+      {
+        for(; (GLF_dead5cols <= 4); GLF_dead5cols = (GLF_dead5cols + 1)) {
+          GLF_dead5rows = 2;
+          {
+            for(; (GLF_dead5rows <= 4); GLF_dead5rows = (GLF_dead5rows + 1)) {
+              GLF_dead5c = 0;
+              {
+                for(; (GLF_dead5c < GLF_dead5cols); GLF_dead5c = (GLF_dead5c + 1)) {
+                  GLF_dead5r = 0;
+                  {
+                    for(; (GLF_dead5r < GLF_dead5rows); GLF_dead5r = (GLF_dead5r + 1)) {
+                      switch(msb10) {
+                        case 1:
+                        case 8: {
+                          bool tint_tmp = (msb10 >= 0);
+                          if (tint_tmp) {
+                            tint_tmp = (msb10 < 9);
+                          }
+                          const int x_96 = ((tint_tmp) ? msb10 : 0);
+                          const float x_98 = donor_replacementGLF_dead5sums[x_96];
+                          donor_replacementGLF_dead5sums[x_96] = (x_98 + 1.0f);
+                          break;
+                        }
+                        default: {
+                          break;
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+              msb10 = (msb10 + 1);
+            }
+          }
+        }
+      }
+    }
+    i = (i + 1);
+    {
+      if ((i < 200)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.msl
new file mode 100644
index 0000000..d1d24c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.msl
@@ -0,0 +1,124 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int GLF_dead5cols = 0;
+  int GLF_dead5rows = 0;
+  int GLF_dead5c = 0;
+  int GLF_dead5r = 0;
+  int msb10 = 0;
+  tint_array_wrapper donor_replacementGLF_dead5sums = {};
+  i = 0;
+  while (true) {
+    int const x_45 = i;
+    float const x_47 = x_6.injectionSwitch.x;
+    if ((x_45 >= int(x_47))) {
+      break;
+    }
+    float const x_53 = x_6.injectionSwitch.y;
+    if ((0.0f > x_53)) {
+      GLF_dead5cols = 2;
+      while (true) {
+        int const x_61 = GLF_dead5cols;
+        if ((x_61 <= 4)) {
+        } else {
+          break;
+        }
+        GLF_dead5rows = 2;
+        while (true) {
+          int const x_68 = GLF_dead5rows;
+          if ((x_68 <= 4)) {
+          } else {
+            break;
+          }
+          GLF_dead5c = 0;
+          while (true) {
+            int const x_75 = GLF_dead5c;
+            int const x_76 = GLF_dead5cols;
+            if ((x_75 < x_76)) {
+            } else {
+              break;
+            }
+            GLF_dead5r = 0;
+            while (true) {
+              int const x_83 = GLF_dead5r;
+              int const x_84 = GLF_dead5rows;
+              if ((x_83 < x_84)) {
+              } else {
+                break;
+              }
+              int const x_87 = msb10;
+              switch(x_87) {
+                case 1:
+                case 8: {
+                  int const x_90 = msb10;
+                  int const x_92 = msb10;
+                  int const x_95 = msb10;
+                  int const x_96 = select(0, x_95, ((x_90 >= 0) && (x_92 < 9)));
+                  float const x_98 = donor_replacementGLF_dead5sums.arr[x_96];
+                  donor_replacementGLF_dead5sums.arr[x_96] = (x_98 + 1.0f);
+                  break;
+                }
+                default: {
+                  break;
+                }
+              }
+              {
+                int const x_101 = GLF_dead5r;
+                GLF_dead5r = (x_101 + 1);
+              }
+            }
+            {
+              int const x_103 = GLF_dead5c;
+              GLF_dead5c = (x_103 + 1);
+            }
+          }
+          int const x_105 = msb10;
+          msb10 = (x_105 + 1);
+          {
+            int const x_107 = GLF_dead5rows;
+            GLF_dead5rows = (x_107 + 1);
+          }
+        }
+        {
+          int const x_109 = GLF_dead5cols;
+          GLF_dead5cols = (x_109 + 1);
+        }
+      }
+    }
+    int const x_111 = i;
+    i = (x_111 + 1);
+    {
+      int const x_113 = i;
+      if ((x_113 < 200)) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..cb7cc44
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.spvasm
@@ -0,0 +1,262 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 145
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %GLF_dead5cols "GLF_dead5cols"
+               OpName %GLF_dead5rows "GLF_dead5rows"
+               OpName %GLF_dead5c "GLF_dead5c"
+               OpName %GLF_dead5r "GLF_dead5r"
+               OpName %msb10 "msb10"
+               OpName %donor_replacementGLF_dead5sums "donor_replacementGLF_dead5sums"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %30 = OpConstantNull %_arr_float_uint_9
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_9 = OpConstant %int 9
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %int_200 = OpConstant %int 200
+        %132 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %133 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %19
+%GLF_dead5cols = OpVariable %_ptr_Function_int Function %19
+%GLF_dead5rows = OpVariable %_ptr_Function_int Function %19
+ %GLF_dead5c = OpVariable %_ptr_Function_int Function %19
+ %GLF_dead5r = OpVariable %_ptr_Function_int Function %19
+      %msb10 = OpVariable %_ptr_Function_int Function %19
+%donor_replacementGLF_dead5sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %30
+               OpStore %i %int_0
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+         %42 = OpSGreaterThanEqual %bool %36 %41
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+               OpBranch %33
+         %44 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %48 = OpLoad %float %47
+         %50 = OpFOrdGreaterThan %bool %float_0 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpStore %GLF_dead5cols %int_2
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %GLF_dead5cols
+         %60 = OpSLessThanEqual %bool %58 %int_4
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %55
+         %61 = OpLabel
+               OpStore %GLF_dead5rows %int_2
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %GLF_dead5rows
+         %69 = OpSLessThanEqual %bool %68 %int_4
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %65
+         %70 = OpLabel
+               OpStore %GLF_dead5c %int_0
+               OpBranch %73
+         %73 = OpLabel
+               OpLoopMerge %74 %75 None
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpLoad %int %GLF_dead5c
+         %78 = OpLoad %int %GLF_dead5cols
+         %79 = OpSLessThan %bool %77 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpBranch %80
+         %82 = OpLabel
+               OpBranch %74
+         %80 = OpLabel
+               OpStore %GLF_dead5r %int_0
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+         %87 = OpLoad %int %GLF_dead5r
+         %88 = OpLoad %int %GLF_dead5rows
+         %89 = OpSLessThan %bool %87 %88
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+               OpBranch %90
+         %92 = OpLabel
+               OpBranch %84
+         %90 = OpLabel
+         %93 = OpLoad %int %msb10
+               OpSelectionMerge %94 None
+               OpSwitch %93 %95 1 %96 8 %96
+         %96 = OpLabel
+         %97 = OpLoad %int %msb10
+         %98 = OpLoad %int %msb10
+         %99 = OpLoad %int %msb10
+        %101 = OpSGreaterThanEqual %bool %97 %int_0
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %105 = OpSLessThan %bool %98 %int_9
+               OpBranch %102
+        %102 = OpLabel
+        %106 = OpPhi %bool %101 %96 %105 %103
+        %100 = OpSelect %int %106 %99 %int_0
+        %108 = OpAccessChain %_ptr_Function_float %donor_replacementGLF_dead5sums %100
+        %109 = OpLoad %float %108
+        %110 = OpAccessChain %_ptr_Function_float %donor_replacementGLF_dead5sums %100
+        %112 = OpFAdd %float %109 %float_1
+               OpStore %110 %112
+               OpBranch %94
+         %95 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+        %113 = OpLoad %int %GLF_dead5r
+        %115 = OpIAdd %int %113 %int_1
+               OpStore %GLF_dead5r %115
+               OpBranch %83
+         %84 = OpLabel
+               OpBranch %75
+         %75 = OpLabel
+        %116 = OpLoad %int %GLF_dead5c
+        %117 = OpIAdd %int %116 %int_1
+               OpStore %GLF_dead5c %117
+               OpBranch %73
+         %74 = OpLabel
+        %118 = OpLoad %int %msb10
+        %119 = OpIAdd %int %118 %int_1
+               OpStore %msb10 %119
+               OpBranch %66
+         %66 = OpLabel
+        %120 = OpLoad %int %GLF_dead5rows
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %GLF_dead5rows %121
+               OpBranch %64
+         %65 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+        %122 = OpLoad %int %GLF_dead5cols
+        %123 = OpIAdd %int %122 %int_1
+               OpStore %GLF_dead5cols %123
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+        %124 = OpLoad %int %i
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %i %125
+               OpBranch %34
+         %34 = OpLabel
+        %126 = OpLoad %int %i
+        %128 = OpSLessThan %bool %126 %int_200
+               OpSelectionMerge %129 None
+               OpBranchConditional %128 %130 %131
+        %130 = OpLabel
+               OpBranch %129
+        %131 = OpLabel
+               OpBranch %33
+        %129 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+               OpStore %x_GLF_color %132
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %133
+%tint_symbol = OpFunctionParameter %main_out
+        %137 = OpLabel
+        %138 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %138
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %140 = OpLabel
+        %141 = OpFunctionCall %void %main_1
+        %143 = OpLoad %v4float %x_GLF_color
+        %144 = OpCompositeConstruct %main_out %143
+        %142 = OpFunctionCall %void %tint_symbol_2 %144
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 34[%34] is not post dominated by the back-edge block 129[%129]
+  %129 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..31f3f0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.spvasm.expected.wgsl
@@ -0,0 +1,121 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var GLF_dead5cols : i32;
+  var GLF_dead5rows : i32;
+  var GLF_dead5c : i32;
+  var GLF_dead5r : i32;
+  var msb10 : i32;
+  var donor_replacementGLF_dead5sums : array<f32, 9>;
+  i = 0;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : f32 = x_6.injectionSwitch.x;
+    if ((x_45 >= i32(x_47))) {
+      break;
+    }
+    let x_53 : f32 = x_6.injectionSwitch.y;
+    if ((0.0 > x_53)) {
+      GLF_dead5cols = 2;
+      loop {
+        let x_61 : i32 = GLF_dead5cols;
+        if ((x_61 <= 4)) {
+        } else {
+          break;
+        }
+        GLF_dead5rows = 2;
+        loop {
+          let x_68 : i32 = GLF_dead5rows;
+          if ((x_68 <= 4)) {
+          } else {
+            break;
+          }
+          GLF_dead5c = 0;
+          loop {
+            let x_75 : i32 = GLF_dead5c;
+            let x_76 : i32 = GLF_dead5cols;
+            if ((x_75 < x_76)) {
+            } else {
+              break;
+            }
+            GLF_dead5r = 0;
+            loop {
+              let x_83 : i32 = GLF_dead5r;
+              let x_84 : i32 = GLF_dead5rows;
+              if ((x_83 < x_84)) {
+              } else {
+                break;
+              }
+              let x_87 : i32 = msb10;
+              switch(x_87) {
+                case 1, 8: {
+                  let x_90 : i32 = msb10;
+                  let x_92 : i32 = msb10;
+                  let x_95 : i32 = msb10;
+                  let x_96 : i32 = select(0, x_95, ((x_90 >= 0) && (x_92 < 9)));
+                  let x_98 : f32 = donor_replacementGLF_dead5sums[x_96];
+                  donor_replacementGLF_dead5sums[x_96] = (x_98 + 1.0);
+                }
+                default: {
+                }
+              }
+
+              continuing {
+                let x_101 : i32 = GLF_dead5r;
+                GLF_dead5r = (x_101 + 1);
+              }
+            }
+
+            continuing {
+              let x_103 : i32 = GLF_dead5c;
+              GLF_dead5c = (x_103 + 1);
+            }
+          }
+          let x_105 : i32 = msb10;
+          msb10 = (x_105 + 1);
+
+          continuing {
+            let x_107 : i32 = GLF_dead5rows;
+            GLF_dead5rows = (x_107 + 1);
+          }
+        }
+
+        continuing {
+          let x_109 : i32 = GLF_dead5cols;
+          GLF_dead5cols = (x_109 + 1);
+        }
+      }
+    }
+    let x_111 : i32 = i;
+    i = (x_111 + 1);
+
+    continuing {
+      let x_113 : i32 = i;
+      if ((x_113 < 200)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
new file mode 100644
index 0000000..31f3f0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
@@ -0,0 +1,121 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var GLF_dead5cols : i32;
+  var GLF_dead5rows : i32;
+  var GLF_dead5c : i32;
+  var GLF_dead5r : i32;
+  var msb10 : i32;
+  var donor_replacementGLF_dead5sums : array<f32, 9>;
+  i = 0;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : f32 = x_6.injectionSwitch.x;
+    if ((x_45 >= i32(x_47))) {
+      break;
+    }
+    let x_53 : f32 = x_6.injectionSwitch.y;
+    if ((0.0 > x_53)) {
+      GLF_dead5cols = 2;
+      loop {
+        let x_61 : i32 = GLF_dead5cols;
+        if ((x_61 <= 4)) {
+        } else {
+          break;
+        }
+        GLF_dead5rows = 2;
+        loop {
+          let x_68 : i32 = GLF_dead5rows;
+          if ((x_68 <= 4)) {
+          } else {
+            break;
+          }
+          GLF_dead5c = 0;
+          loop {
+            let x_75 : i32 = GLF_dead5c;
+            let x_76 : i32 = GLF_dead5cols;
+            if ((x_75 < x_76)) {
+            } else {
+              break;
+            }
+            GLF_dead5r = 0;
+            loop {
+              let x_83 : i32 = GLF_dead5r;
+              let x_84 : i32 = GLF_dead5rows;
+              if ((x_83 < x_84)) {
+              } else {
+                break;
+              }
+              let x_87 : i32 = msb10;
+              switch(x_87) {
+                case 1, 8: {
+                  let x_90 : i32 = msb10;
+                  let x_92 : i32 = msb10;
+                  let x_95 : i32 = msb10;
+                  let x_96 : i32 = select(0, x_95, ((x_90 >= 0) && (x_92 < 9)));
+                  let x_98 : f32 = donor_replacementGLF_dead5sums[x_96];
+                  donor_replacementGLF_dead5sums[x_96] = (x_98 + 1.0);
+                }
+                default: {
+                }
+              }
+
+              continuing {
+                let x_101 : i32 = GLF_dead5r;
+                GLF_dead5r = (x_101 + 1);
+              }
+            }
+
+            continuing {
+              let x_103 : i32 = GLF_dead5c;
+              GLF_dead5c = (x_103 + 1);
+            }
+          }
+          let x_105 : i32 = msb10;
+          msb10 = (x_105 + 1);
+
+          continuing {
+            let x_107 : i32 = GLF_dead5rows;
+            GLF_dead5rows = (x_107 + 1);
+          }
+        }
+
+        continuing {
+          let x_109 : i32 = GLF_dead5cols;
+          GLF_dead5cols = (x_109 + 1);
+        }
+      }
+    }
+    let x_111 : i32 = i;
+    i = (x_111 + 1);
+
+    continuing {
+      let x_113 : i32 = i;
+      if ((x_113 < 200)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..938e563
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.hlsl
@@ -0,0 +1,85 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int GLF_dead5cols = 0;
+  int GLF_dead5rows = 0;
+  int GLF_dead5c = 0;
+  int GLF_dead5r = 0;
+  int msb10 = 0;
+  float donor_replacementGLF_dead5sums[9] = (float[9])0;
+  i = 0;
+  while (true) {
+    const int x_45 = i;
+    const float x_47 = asfloat(x_6[0].x);
+    if ((x_45 >= int(x_47))) {
+      break;
+    }
+    const float x_53 = asfloat(x_6[0].y);
+    if ((0.0f > x_53)) {
+      GLF_dead5cols = 2;
+      {
+        for(; (GLF_dead5cols <= 4); GLF_dead5cols = (GLF_dead5cols + 1)) {
+          GLF_dead5rows = 2;
+          {
+            for(; (GLF_dead5rows <= 4); GLF_dead5rows = (GLF_dead5rows + 1)) {
+              GLF_dead5c = 0;
+              {
+                for(; (GLF_dead5c < GLF_dead5cols); GLF_dead5c = (GLF_dead5c + 1)) {
+                  GLF_dead5r = 0;
+                  {
+                    for(; (GLF_dead5r < GLF_dead5rows); GLF_dead5r = (GLF_dead5r + 1)) {
+                      switch(msb10) {
+                        case 1:
+                        case 8: {
+                          bool tint_tmp = (msb10 >= 0);
+                          if (tint_tmp) {
+                            tint_tmp = (msb10 < 9);
+                          }
+                          const int x_96 = ((tint_tmp) ? msb10 : 0);
+                          const float x_98 = donor_replacementGLF_dead5sums[x_96];
+                          donor_replacementGLF_dead5sums[x_96] = (x_98 + 1.0f);
+                          break;
+                        }
+                        default: {
+                          break;
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+              msb10 = (msb10 + 1);
+            }
+          }
+        }
+      }
+    }
+    i = (i + 1);
+    {
+      if ((i < 200)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.msl
new file mode 100644
index 0000000..d1d24c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.msl
@@ -0,0 +1,124 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int GLF_dead5cols = 0;
+  int GLF_dead5rows = 0;
+  int GLF_dead5c = 0;
+  int GLF_dead5r = 0;
+  int msb10 = 0;
+  tint_array_wrapper donor_replacementGLF_dead5sums = {};
+  i = 0;
+  while (true) {
+    int const x_45 = i;
+    float const x_47 = x_6.injectionSwitch.x;
+    if ((x_45 >= int(x_47))) {
+      break;
+    }
+    float const x_53 = x_6.injectionSwitch.y;
+    if ((0.0f > x_53)) {
+      GLF_dead5cols = 2;
+      while (true) {
+        int const x_61 = GLF_dead5cols;
+        if ((x_61 <= 4)) {
+        } else {
+          break;
+        }
+        GLF_dead5rows = 2;
+        while (true) {
+          int const x_68 = GLF_dead5rows;
+          if ((x_68 <= 4)) {
+          } else {
+            break;
+          }
+          GLF_dead5c = 0;
+          while (true) {
+            int const x_75 = GLF_dead5c;
+            int const x_76 = GLF_dead5cols;
+            if ((x_75 < x_76)) {
+            } else {
+              break;
+            }
+            GLF_dead5r = 0;
+            while (true) {
+              int const x_83 = GLF_dead5r;
+              int const x_84 = GLF_dead5rows;
+              if ((x_83 < x_84)) {
+              } else {
+                break;
+              }
+              int const x_87 = msb10;
+              switch(x_87) {
+                case 1:
+                case 8: {
+                  int const x_90 = msb10;
+                  int const x_92 = msb10;
+                  int const x_95 = msb10;
+                  int const x_96 = select(0, x_95, ((x_90 >= 0) && (x_92 < 9)));
+                  float const x_98 = donor_replacementGLF_dead5sums.arr[x_96];
+                  donor_replacementGLF_dead5sums.arr[x_96] = (x_98 + 1.0f);
+                  break;
+                }
+                default: {
+                  break;
+                }
+              }
+              {
+                int const x_101 = GLF_dead5r;
+                GLF_dead5r = (x_101 + 1);
+              }
+            }
+            {
+              int const x_103 = GLF_dead5c;
+              GLF_dead5c = (x_103 + 1);
+            }
+          }
+          int const x_105 = msb10;
+          msb10 = (x_105 + 1);
+          {
+            int const x_107 = GLF_dead5rows;
+            GLF_dead5rows = (x_107 + 1);
+          }
+        }
+        {
+          int const x_109 = GLF_dead5cols;
+          GLF_dead5cols = (x_109 + 1);
+        }
+      }
+    }
+    int const x_111 = i;
+    i = (x_111 + 1);
+    {
+      int const x_113 = i;
+      if ((x_113 < 200)) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..cb7cc44
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.spvasm
@@ -0,0 +1,262 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 145
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %GLF_dead5cols "GLF_dead5cols"
+               OpName %GLF_dead5rows "GLF_dead5rows"
+               OpName %GLF_dead5c "GLF_dead5c"
+               OpName %GLF_dead5r "GLF_dead5r"
+               OpName %msb10 "msb10"
+               OpName %donor_replacementGLF_dead5sums "donor_replacementGLF_dead5sums"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %30 = OpConstantNull %_arr_float_uint_9
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+      %int_9 = OpConstant %int 9
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %int_200 = OpConstant %int 200
+        %132 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %133 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %19
+%GLF_dead5cols = OpVariable %_ptr_Function_int Function %19
+%GLF_dead5rows = OpVariable %_ptr_Function_int Function %19
+ %GLF_dead5c = OpVariable %_ptr_Function_int Function %19
+ %GLF_dead5r = OpVariable %_ptr_Function_int Function %19
+      %msb10 = OpVariable %_ptr_Function_int Function %19
+%donor_replacementGLF_dead5sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %30
+               OpStore %i %int_0
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+         %42 = OpSGreaterThanEqual %bool %36 %41
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+               OpBranch %33
+         %44 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %48 = OpLoad %float %47
+         %50 = OpFOrdGreaterThan %bool %float_0 %48
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+               OpStore %GLF_dead5cols %int_2
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %GLF_dead5cols
+         %60 = OpSLessThanEqual %bool %58 %int_4
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %55
+         %61 = OpLabel
+               OpStore %GLF_dead5rows %int_2
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %GLF_dead5rows
+         %69 = OpSLessThanEqual %bool %68 %int_4
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %65
+         %70 = OpLabel
+               OpStore %GLF_dead5c %int_0
+               OpBranch %73
+         %73 = OpLabel
+               OpLoopMerge %74 %75 None
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpLoad %int %GLF_dead5c
+         %78 = OpLoad %int %GLF_dead5cols
+         %79 = OpSLessThan %bool %77 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpBranch %80
+         %82 = OpLabel
+               OpBranch %74
+         %80 = OpLabel
+               OpStore %GLF_dead5r %int_0
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+         %87 = OpLoad %int %GLF_dead5r
+         %88 = OpLoad %int %GLF_dead5rows
+         %89 = OpSLessThan %bool %87 %88
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+               OpBranch %90
+         %92 = OpLabel
+               OpBranch %84
+         %90 = OpLabel
+         %93 = OpLoad %int %msb10
+               OpSelectionMerge %94 None
+               OpSwitch %93 %95 1 %96 8 %96
+         %96 = OpLabel
+         %97 = OpLoad %int %msb10
+         %98 = OpLoad %int %msb10
+         %99 = OpLoad %int %msb10
+        %101 = OpSGreaterThanEqual %bool %97 %int_0
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %105 = OpSLessThan %bool %98 %int_9
+               OpBranch %102
+        %102 = OpLabel
+        %106 = OpPhi %bool %101 %96 %105 %103
+        %100 = OpSelect %int %106 %99 %int_0
+        %108 = OpAccessChain %_ptr_Function_float %donor_replacementGLF_dead5sums %100
+        %109 = OpLoad %float %108
+        %110 = OpAccessChain %_ptr_Function_float %donor_replacementGLF_dead5sums %100
+        %112 = OpFAdd %float %109 %float_1
+               OpStore %110 %112
+               OpBranch %94
+         %95 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+        %113 = OpLoad %int %GLF_dead5r
+        %115 = OpIAdd %int %113 %int_1
+               OpStore %GLF_dead5r %115
+               OpBranch %83
+         %84 = OpLabel
+               OpBranch %75
+         %75 = OpLabel
+        %116 = OpLoad %int %GLF_dead5c
+        %117 = OpIAdd %int %116 %int_1
+               OpStore %GLF_dead5c %117
+               OpBranch %73
+         %74 = OpLabel
+        %118 = OpLoad %int %msb10
+        %119 = OpIAdd %int %118 %int_1
+               OpStore %msb10 %119
+               OpBranch %66
+         %66 = OpLabel
+        %120 = OpLoad %int %GLF_dead5rows
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %GLF_dead5rows %121
+               OpBranch %64
+         %65 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+        %122 = OpLoad %int %GLF_dead5cols
+        %123 = OpIAdd %int %122 %int_1
+               OpStore %GLF_dead5cols %123
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+        %124 = OpLoad %int %i
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %i %125
+               OpBranch %34
+         %34 = OpLabel
+        %126 = OpLoad %int %i
+        %128 = OpSLessThan %bool %126 %int_200
+               OpSelectionMerge %129 None
+               OpBranchConditional %128 %130 %131
+        %130 = OpLabel
+               OpBranch %129
+        %131 = OpLabel
+               OpBranch %33
+        %129 = OpLabel
+               OpBranch %32
+         %33 = OpLabel
+               OpStore %x_GLF_color %132
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %133
+%tint_symbol = OpFunctionParameter %main_out
+        %137 = OpLabel
+        %138 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %138
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %140 = OpLabel
+        %141 = OpFunctionCall %void %main_1
+        %143 = OpLoad %v4float %x_GLF_color
+        %144 = OpCompositeConstruct %main_out %143
+        %142 = OpFunctionCall %void %tint_symbol_2 %144
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 34[%34] is not post dominated by the back-edge block 129[%129]
+  %129 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..31f3f0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl.expected.wgsl
@@ -0,0 +1,121 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var GLF_dead5cols : i32;
+  var GLF_dead5rows : i32;
+  var GLF_dead5c : i32;
+  var GLF_dead5r : i32;
+  var msb10 : i32;
+  var donor_replacementGLF_dead5sums : array<f32, 9>;
+  i = 0;
+  loop {
+    let x_45 : i32 = i;
+    let x_47 : f32 = x_6.injectionSwitch.x;
+    if ((x_45 >= i32(x_47))) {
+      break;
+    }
+    let x_53 : f32 = x_6.injectionSwitch.y;
+    if ((0.0 > x_53)) {
+      GLF_dead5cols = 2;
+      loop {
+        let x_61 : i32 = GLF_dead5cols;
+        if ((x_61 <= 4)) {
+        } else {
+          break;
+        }
+        GLF_dead5rows = 2;
+        loop {
+          let x_68 : i32 = GLF_dead5rows;
+          if ((x_68 <= 4)) {
+          } else {
+            break;
+          }
+          GLF_dead5c = 0;
+          loop {
+            let x_75 : i32 = GLF_dead5c;
+            let x_76 : i32 = GLF_dead5cols;
+            if ((x_75 < x_76)) {
+            } else {
+              break;
+            }
+            GLF_dead5r = 0;
+            loop {
+              let x_83 : i32 = GLF_dead5r;
+              let x_84 : i32 = GLF_dead5rows;
+              if ((x_83 < x_84)) {
+              } else {
+                break;
+              }
+              let x_87 : i32 = msb10;
+              switch(x_87) {
+                case 1, 8: {
+                  let x_90 : i32 = msb10;
+                  let x_92 : i32 = msb10;
+                  let x_95 : i32 = msb10;
+                  let x_96 : i32 = select(0, x_95, ((x_90 >= 0) && (x_92 < 9)));
+                  let x_98 : f32 = donor_replacementGLF_dead5sums[x_96];
+                  donor_replacementGLF_dead5sums[x_96] = (x_98 + 1.0);
+                }
+                default: {
+                }
+              }
+
+              continuing {
+                let x_101 : i32 = GLF_dead5r;
+                GLF_dead5r = (x_101 + 1);
+              }
+            }
+
+            continuing {
+              let x_103 : i32 = GLF_dead5c;
+              GLF_dead5c = (x_103 + 1);
+            }
+          }
+          let x_105 : i32 = msb10;
+          msb10 = (x_105 + 1);
+
+          continuing {
+            let x_107 : i32 = GLF_dead5rows;
+            GLF_dead5rows = (x_107 + 1);
+          }
+        }
+
+        continuing {
+          let x_109 : i32 = GLF_dead5cols;
+          GLF_dead5cols = (x_109 + 1);
+        }
+      }
+    }
+    let x_111 : i32 = i;
+    i = (x_111 + 1);
+
+    continuing {
+      let x_113 : i32 = i;
+      if ((x_113 < 200)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm
new file mode 100644
index 0000000..7a18a05
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm
@@ -0,0 +1,72 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+       %bool = OpTypeBool
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %8
+         %28 = OpLabel
+               OpStore %_GLF_color %14
+         %29 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpConvertFToS %int %30
+               OpSelectionMerge %32 None
+               OpSwitch %31 %32 0 %33 42 %34
+         %33 = OpLabel
+               OpSelectionMerge %35 None
+               OpSwitch %int_1 %35 1 %36
+         %36 = OpLabel
+         %37 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThanEqual %bool %38 %float_0
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+               OpStore %_GLF_color %27
+               OpBranch %35
+         %40 = OpLabel
+               OpKill
+         %35 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c45a7a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,55 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  const float x_30 = asfloat(x_6[0].x);
+  switch(int(x_30)) {
+    case 0: {
+      switch(1) {
+        case 1: {
+          const float x_38 = gl_FragCoord.y;
+          if ((x_38 >= 0.0f)) {
+            x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+            break;
+          }
+          discard;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+      /* fallthrough */
+    }
+    case 42: {
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4f27a35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  float const x_30 = x_6.injectionSwitch.x;
+  switch(int(x_30)) {
+    case 0: {
+      switch(1) {
+        case 1: {
+          float const x_38 = (*(tint_symbol_6)).y;
+          if ((x_38 >= 0.0f)) {
+            *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+            break;
+          }
+          discard_fragment();
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+      /* fallthrough */
+    }
+    case 42: {
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6a58a17
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 59
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+       %bool = OpTypeBool
+         %45 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %46 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+               OpStore %x_GLF_color %21
+         %25 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpConvertFToS %int %26
+               OpSelectionMerge %27 None
+               OpSwitch %28 %30 0 %31 42 %32
+         %31 = OpLabel
+               OpSelectionMerge %33 None
+               OpSwitch %int_1 %35 1 %36
+         %36 = OpLabel
+         %39 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThanEqual %bool %40 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+               OpStore %x_GLF_color %45
+               OpBranch %33
+         %43 = OpLabel
+               OpKill
+         %35 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+               OpBranch %27
+         %30 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %46
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %50 = OpLabel
+         %51 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %51
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %53 = OpLabel
+         %54 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %54
+         %55 = OpFunctionCall %void %main_1
+         %57 = OpLoad %v4float %x_GLF_color
+         %58 = OpCompositeConstruct %main_out %57
+         %56 = OpFunctionCall %void %tint_symbol_3 %58
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..44294d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  let x_30 : f32 = x_6.injectionSwitch.x;
+  switch(i32(x_30)) {
+    case 0: {
+      switch(1) {
+        case 1: {
+          let x_38 : f32 = gl_FragCoord.y;
+          if ((x_38 >= 0.0)) {
+            x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+            break;
+          }
+          discard;
+        }
+        default: {
+        }
+      }
+      fallthrough;
+    }
+    case 42: {
+    }
+    default: {
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
new file mode 100644
index 0000000..44294d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
@@ -0,0 +1,49 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  let x_30 : f32 = x_6.injectionSwitch.x;
+  switch(i32(x_30)) {
+    case 0: {
+      switch(1) {
+        case 1: {
+          let x_38 : f32 = gl_FragCoord.y;
+          if ((x_38 >= 0.0)) {
+            x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+            break;
+          }
+          discard;
+        }
+        default: {
+        }
+      }
+      fallthrough;
+    }
+    case 42: {
+    }
+    default: {
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c45a7a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,55 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  const float x_30 = asfloat(x_6[0].x);
+  switch(int(x_30)) {
+    case 0: {
+      switch(1) {
+        case 1: {
+          const float x_38 = gl_FragCoord.y;
+          if ((x_38 >= 0.0f)) {
+            x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+            break;
+          }
+          discard;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+      /* fallthrough */
+    }
+    case 42: {
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4f27a35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  float const x_30 = x_6.injectionSwitch.x;
+  switch(int(x_30)) {
+    case 0: {
+      switch(1) {
+        case 1: {
+          float const x_38 = (*(tint_symbol_6)).y;
+          if ((x_38 >= 0.0f)) {
+            *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+            break;
+          }
+          discard_fragment();
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+      /* fallthrough */
+    }
+    case 42: {
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6a58a17
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 59
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+       %bool = OpTypeBool
+         %45 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %46 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+               OpStore %x_GLF_color %21
+         %25 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %26 = OpLoad %float %25
+         %28 = OpConvertFToS %int %26
+               OpSelectionMerge %27 None
+               OpSwitch %28 %30 0 %31 42 %32
+         %31 = OpLabel
+               OpSelectionMerge %33 None
+               OpSwitch %int_1 %35 1 %36
+         %36 = OpLabel
+         %39 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdGreaterThanEqual %bool %40 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+               OpStore %x_GLF_color %45
+               OpBranch %33
+         %43 = OpLabel
+               OpKill
+         %35 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+               OpBranch %27
+         %30 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %46
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %50 = OpLabel
+         %51 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %51
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %53 = OpLabel
+         %54 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %54
+         %55 = OpFunctionCall %void %main_1
+         %57 = OpLoad %v4float %x_GLF_color
+         %58 = OpCompositeConstruct %main_out %57
+         %56 = OpFunctionCall %void %tint_symbol_3 %58
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..44294d2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  let x_30 : f32 = x_6.injectionSwitch.x;
+  switch(i32(x_30)) {
+    case 0: {
+      switch(1) {
+        case 1: {
+          let x_38 : f32 = gl_FragCoord.y;
+          if ((x_38 >= 0.0)) {
+            x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+            break;
+          }
+          discard;
+        }
+        default: {
+        }
+      }
+      fallthrough;
+    }
+    case 42: {
+    }
+    default: {
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm
new file mode 100644
index 0000000..4864c87
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm
@@ -0,0 +1,87 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+       %main = OpFunction %void None %13
+         %34 = OpLabel
+         %10 = OpVariable %_ptr_Function__arr_int_uint_1 Function
+          %9 = OpVariable %_ptr_Function__arr_int_uint_1 Function
+         %35 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+          %6 = OpLoad %int %35
+         %36 = OpAccessChain %_ptr_Function_int %9 %int_0
+               OpStore %36 %6
+         %37 = OpLoad %_arr_int_uint_1 %9
+               OpStore %10 %37
+         %38 = OpAccessChain %_ptr_Function_int %9 %int_0
+          %7 = OpLoad %int %38
+               OpSelectionMerge %39 None
+               OpSwitch %uint_0 %40
+         %40 = OpLabel
+               OpStore %_GLF_color %23
+         %41 = OpAccessChain %_ptr_Function_int %10 %int_0
+          %8 = OpLoad %int %41
+         %42 = OpIEqual %bool %8 %7
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %39
+         %43 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+         %11 = OpPhi %int %int_1 %44 %int_2 %43
+         %45 = OpIEqual %bool %11 %int_1
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpStore %_GLF_color %31
+               OpBranch %46
+         %48 = OpLabel
+               OpStore %_GLF_color %23
+               OpBranch %46
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..b530d09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  int x_10[1] = (int[1])0;
+  int x_9[1] = (int[1])0;
+  int x_7 = 0;
+  int x_11_phi = 0;
+  const int x_6 = asint(x_5[0].x);
+  x_9[0] = x_6;
+  x_10 = x_9;
+  x_7 = x_9[0];
+  switch(0u) {
+    default: {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      const int x_8 = x_10[0];
+      if ((x_8 == asint(x_7))) {
+        x_11_phi = 1;
+        break;
+      }
+      x_11_phi = 2;
+      break;
+    }
+  }
+  if ((x_11_phi == 1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..7e85bb9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct tint_array_wrapper {
+  int arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  tint_array_wrapper x_10 = {};
+  tint_array_wrapper x_9 = {};
+  int x_7 = 0;
+  int x_11_phi = 0;
+  int const x_6 = x_5.zero;
+  x_9.arr[0] = x_6;
+  tint_array_wrapper const x_37 = x_9;
+  x_10 = x_37;
+  x_7 = x_9.arr[0];
+  switch(0u) {
+    default: {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      int const x_8 = x_10.arr[0];
+      if ((x_8 == as_type<int>(x_7))) {
+        x_11_phi = 1;
+        break;
+      }
+      x_11_phi = 2;
+      break;
+    }
+  }
+  int const x_11 = x_11_phi;
+  if ((x_11 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..06b6414
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_10 "x_10"
+               OpName %x_9 "x_9"
+               OpName %x_7 "x_7"
+               OpName %x_11_phi "x_11_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+         %21 = OpConstantNull %_arr_int_uint_1
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_10 = OpVariable %_ptr_Function__arr_int_uint_1 Function %21
+        %x_9 = OpVariable %_ptr_Function__arr_int_uint_1 Function %21
+        %x_7 = OpVariable %_ptr_Function_int Function %25
+   %x_11_phi = OpVariable %_ptr_Function_int Function %25
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_Function_int %x_9 %int_0
+               OpStore %32 %30
+         %33 = OpLoad %_arr_int_uint_1 %x_9
+               OpStore %x_10 %33
+         %34 = OpAccessChain %_ptr_Function_int %x_9 %int_0
+         %35 = OpLoad %int %34
+               OpStore %x_7 %35
+               OpSelectionMerge %36 None
+               OpSwitch %uint_0 %37
+         %37 = OpLabel
+               OpStore %x_GLF_color %39
+         %40 = OpAccessChain %_ptr_Function_int %x_10 %int_0
+         %41 = OpLoad %int %40
+         %43 = OpLoad %int %x_7
+         %42 = OpCopyObject %int %43
+         %44 = OpIEqual %bool %41 %42
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %46
+         %47 = OpLabel
+               OpStore %x_11_phi %int_1
+               OpBranch %36
+         %46 = OpLabel
+               OpStore %x_11_phi %int_2
+               OpBranch %36
+         %36 = OpLabel
+         %50 = OpLoad %int %x_11_phi
+         %51 = OpIEqual %bool %50 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %52
+         %54 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %57
+%tint_symbol = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %64 = OpLabel
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_2 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..62409af
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_10 : array<i32, 1>;
+  var x_9 : array<i32, 1>;
+  var x_7 : i32;
+  var x_11_phi : i32;
+  let x_6 : i32 = x_5.zero;
+  x_9[0] = x_6;
+  let x_37 : array<i32, 1> = x_9;
+  x_10 = x_37;
+  x_7 = x_9[0];
+  switch(0u) {
+    default: {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      let x_8 : i32 = x_10[0];
+      if ((x_8 == bitcast<i32>(x_7))) {
+        x_11_phi = 1;
+        break;
+      }
+      x_11_phi = 2;
+    }
+  }
+  let x_11 : i32 = x_11_phi;
+  if ((x_11 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
new file mode 100644
index 0000000..62409af
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
@@ -0,0 +1,49 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_10 : array<i32, 1>;
+  var x_9 : array<i32, 1>;
+  var x_7 : i32;
+  var x_11_phi : i32;
+  let x_6 : i32 = x_5.zero;
+  x_9[0] = x_6;
+  let x_37 : array<i32, 1> = x_9;
+  x_10 = x_37;
+  x_7 = x_9[0];
+  switch(0u) {
+    default: {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      let x_8 : i32 = x_10[0];
+      if ((x_8 == bitcast<i32>(x_7))) {
+        x_11_phi = 1;
+        break;
+      }
+      x_11_phi = 2;
+    }
+  }
+  let x_11 : i32 = x_11_phi;
+  if ((x_11 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..b530d09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  int x_10[1] = (int[1])0;
+  int x_9[1] = (int[1])0;
+  int x_7 = 0;
+  int x_11_phi = 0;
+  const int x_6 = asint(x_5[0].x);
+  x_9[0] = x_6;
+  x_10 = x_9;
+  x_7 = x_9[0];
+  switch(0u) {
+    default: {
+      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      const int x_8 = x_10[0];
+      if ((x_8 == asint(x_7))) {
+        x_11_phi = 1;
+        break;
+      }
+      x_11_phi = 2;
+      break;
+    }
+  }
+  if ((x_11_phi == 1)) {
+    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);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..7e85bb9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.msl
@@ -0,0 +1,55 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int zero;
+};
+struct tint_array_wrapper {
+  int arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  tint_array_wrapper x_10 = {};
+  tint_array_wrapper x_9 = {};
+  int x_7 = 0;
+  int x_11_phi = 0;
+  int const x_6 = x_5.zero;
+  x_9.arr[0] = x_6;
+  tint_array_wrapper const x_37 = x_9;
+  x_10 = x_37;
+  x_7 = x_9.arr[0];
+  switch(0u) {
+    default: {
+      *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      int const x_8 = x_10.arr[0];
+      if ((x_8 == as_type<int>(x_7))) {
+        x_11_phi = 1;
+        break;
+      }
+      x_11_phi = 2;
+      break;
+    }
+  }
+  int const x_11 = x_11_phi;
+  if ((x_11 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..06b6414
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_10 "x_10"
+               OpName %x_9 "x_9"
+               OpName %x_7 "x_7"
+               OpName %x_11_phi "x_11_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+         %21 = OpConstantNull %_arr_int_uint_1
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+         %39 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+    %float_1 = OpConstant %float 1
+         %56 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_10 = OpVariable %_ptr_Function__arr_int_uint_1 Function %21
+        %x_9 = OpVariable %_ptr_Function__arr_int_uint_1 Function %21
+        %x_7 = OpVariable %_ptr_Function_int Function %25
+   %x_11_phi = OpVariable %_ptr_Function_int Function %25
+         %29 = OpAccessChain %_ptr_Uniform_int %x_5 %uint_0
+         %30 = OpLoad %int %29
+         %32 = OpAccessChain %_ptr_Function_int %x_9 %int_0
+               OpStore %32 %30
+         %33 = OpLoad %_arr_int_uint_1 %x_9
+               OpStore %x_10 %33
+         %34 = OpAccessChain %_ptr_Function_int %x_9 %int_0
+         %35 = OpLoad %int %34
+               OpStore %x_7 %35
+               OpSelectionMerge %36 None
+               OpSwitch %uint_0 %37
+         %37 = OpLabel
+               OpStore %x_GLF_color %39
+         %40 = OpAccessChain %_ptr_Function_int %x_10 %int_0
+         %41 = OpLoad %int %40
+         %43 = OpLoad %int %x_7
+         %42 = OpCopyObject %int %43
+         %44 = OpIEqual %bool %41 %42
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %46
+         %47 = OpLabel
+               OpStore %x_11_phi %int_1
+               OpBranch %36
+         %46 = OpLabel
+               OpStore %x_11_phi %int_2
+               OpBranch %36
+         %36 = OpLabel
+         %50 = OpLoad %int %x_11_phi
+         %51 = OpIEqual %bool %50 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpStore %x_GLF_color %56
+               OpBranch %52
+         %54 = OpLabel
+               OpStore %x_GLF_color %39
+               OpBranch %52
+         %52 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %57
+%tint_symbol = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %64 = OpLabel
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_2 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..62409af
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+[[block]]
+struct buf0 {
+  zero : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var x_10 : array<i32, 1>;
+  var x_9 : array<i32, 1>;
+  var x_7 : i32;
+  var x_11_phi : i32;
+  let x_6 : i32 = x_5.zero;
+  x_9[0] = x_6;
+  let x_37 : array<i32, 1> = x_9;
+  x_10 = x_37;
+  x_7 = x_9[0];
+  switch(0u) {
+    default: {
+      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+      let x_8 : i32 = x_10[0];
+      if ((x_8 == bitcast<i32>(x_7))) {
+        x_11_phi = 1;
+        break;
+      }
+      x_11_phi = 2;
+    }
+  }
+  let x_11 : i32 = x_11_phi;
+  if ((x_11 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm
new file mode 100644
index 0000000..ef091fe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm
@@ -0,0 +1,87 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %25 = OpUndef %float
+         %26 = OpUndef %v4float
+       %main = OpFunction %void None %8
+         %27 = OpLabel
+         %28 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %29 = OpLoad %float %28
+         %30 = OpFOrdGreaterThan %bool %29 %float_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %31
+         %32 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %41 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpSelectionMerge %45 None
+               OpBranchConditional %30 %46 %38
+         %46 = OpLabel
+               OpBranch %37
+         %45 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+               OpBranch %36
+         %43 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %47 = OpPhi %float %float_1 %46 %25 %43
+               OpBranch %34
+         %35 = OpLabel
+               OpBranch %33
+         %34 = OpLabel
+         %48 = OpCompositeInsert %v4float %47 %26 1
+               OpStore %_GLF_color %48
+               OpBranch %31
+         %31 = OpLabel
+               OpStore %_GLF_color %24
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..abeefe6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,57 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_30 = false;
+  float x_47 = 0.0f;
+  const float x_29 = asfloat(x_6[0].x);
+  x_30 = (x_29 > 1.0f);
+  if (x_30) {
+    while (true) {
+      float x_47_phi = 0.0f;
+      while (true) {
+        const float x_41 = gl_FragCoord.x;
+        if ((x_41 < 0.0f)) {
+          if (x_30) {
+            x_47_phi = 1.0f;
+            break;
+          } else {
+            continue;
+          }
+          continue;
+        }
+        x_47_phi = 0.0f;
+        break;
+      }
+      x_47 = x_47_phi;
+      break;
+    }
+    float4 x_48_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_48_1.y = x_47;
+    x_GLF_color = x_48_1;
+  }
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..cd6a109
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  bool x_30 = false;
+  float x_47 = 0.0f;
+  float const x_29 = x_6.injectionSwitch.x;
+  x_30 = (x_29 > 1.0f);
+  if (x_30) {
+    while (true) {
+      float x_47_phi = 0.0f;
+      while (true) {
+        float const x_41 = (*(tint_symbol_5)).x;
+        if ((x_41 < 0.0f)) {
+          if (x_30) {
+            x_47_phi = 1.0f;
+            break;
+          } else {
+            continue;
+          }
+          continue;
+        }
+        x_47_phi = 0.0f;
+        break;
+      }
+      x_47 = x_47_phi;
+      break;
+    }
+    float4 x_48_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_48_1.y = x_47;
+    float4 const x_48 = x_48_1;
+    *(tint_symbol_6) = x_48;
+  }
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..cbe84e4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %x_47 "x_47"
+               OpName %x_47_phi "x_47_phi"
+               OpName %x_48_1 "x_48_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %22 = OpConstantNull %bool
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+         %57 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_1 = OpConstant %uint 1
+         %64 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_bool Function %22
+       %x_47 = OpVariable %_ptr_Function_float Function %25
+   %x_47_phi = OpVariable %_ptr_Function_float Function %25
+     %x_48_1 = OpVariable %_ptr_Function_v4float Function %5
+         %29 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpFOrdGreaterThan %bool %30 %float_1
+               OpStore %x_30 %32
+         %33 = OpLoad %bool %x_30
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %47 = OpLoad %float %46
+         %49 = OpFOrdLessThan %bool %47 %float_0
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+         %52 = OpLoad %bool %x_30
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpStore %x_47_phi %float_1
+               OpBranch %42
+         %55 = OpLabel
+               OpBranch %43
+         %53 = OpLabel
+               OpBranch %43
+         %50 = OpLabel
+               OpStore %x_47_phi %float_0
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+         %56 = OpLoad %float %x_47_phi
+               OpStore %x_47 %56
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+               OpStore %x_48_1 %57
+         %61 = OpAccessChain %_ptr_Function_float %x_48_1 %uint_1
+         %62 = OpLoad %float %x_47
+               OpStore %61 %62
+         %63 = OpLoad %v4float %x_48_1
+               OpStore %x_GLF_color %63
+               OpBranch %34
+         %34 = OpLabel
+               OpStore %x_GLF_color %64
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..fd8fb0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,56 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_30 : bool;
+  var x_47 : f32;
+  let x_29 : f32 = x_6.injectionSwitch.x;
+  x_30 = (x_29 > 1.0);
+  if (x_30) {
+    loop {
+      var x_47_phi : f32;
+      loop {
+        let x_41 : f32 = gl_FragCoord.x;
+        if ((x_41 < 0.0)) {
+          if (x_30) {
+            x_47_phi = 1.0;
+            break;
+          } else {
+            continue;
+          }
+          continue;
+        }
+        x_47_phi = 0.0;
+        break;
+      }
+      x_47 = x_47_phi;
+      break;
+    }
+    var x_48_1 : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    x_48_1.y = x_47;
+    let x_48 : vec4<f32> = x_48_1;
+    x_GLF_color = x_48;
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
new file mode 100644
index 0000000..fd8fb0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
@@ -0,0 +1,56 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_30 : bool;
+  var x_47 : f32;
+  let x_29 : f32 = x_6.injectionSwitch.x;
+  x_30 = (x_29 > 1.0);
+  if (x_30) {
+    loop {
+      var x_47_phi : f32;
+      loop {
+        let x_41 : f32 = gl_FragCoord.x;
+        if ((x_41 < 0.0)) {
+          if (x_30) {
+            x_47_phi = 1.0;
+            break;
+          } else {
+            continue;
+          }
+          continue;
+        }
+        x_47_phi = 0.0;
+        break;
+      }
+      x_47 = x_47_phi;
+      break;
+    }
+    var x_48_1 : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    x_48_1.y = x_47;
+    let x_48 : vec4<f32> = x_48_1;
+    x_GLF_color = x_48;
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..abeefe6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,57 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_30 = false;
+  float x_47 = 0.0f;
+  const float x_29 = asfloat(x_6[0].x);
+  x_30 = (x_29 > 1.0f);
+  if (x_30) {
+    while (true) {
+      float x_47_phi = 0.0f;
+      while (true) {
+        const float x_41 = gl_FragCoord.x;
+        if ((x_41 < 0.0f)) {
+          if (x_30) {
+            x_47_phi = 1.0f;
+            break;
+          } else {
+            continue;
+          }
+          continue;
+        }
+        x_47_phi = 0.0f;
+        break;
+      }
+      x_47 = x_47_phi;
+      break;
+    }
+    float4 x_48_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_48_1.y = x_47;
+    x_GLF_color = x_48_1;
+  }
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..cd6a109
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,57 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  bool x_30 = false;
+  float x_47 = 0.0f;
+  float const x_29 = x_6.injectionSwitch.x;
+  x_30 = (x_29 > 1.0f);
+  if (x_30) {
+    while (true) {
+      float x_47_phi = 0.0f;
+      while (true) {
+        float const x_41 = (*(tint_symbol_5)).x;
+        if ((x_41 < 0.0f)) {
+          if (x_30) {
+            x_47_phi = 1.0f;
+            break;
+          } else {
+            continue;
+          }
+          continue;
+        }
+        x_47_phi = 0.0f;
+        break;
+      }
+      x_47 = x_47_phi;
+      break;
+    }
+    float4 x_48_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_48_1.y = x_47;
+    float4 const x_48 = x_48_1;
+    *(tint_symbol_6) = x_48;
+  }
+  *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..cbe84e4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,147 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %x_47 "x_47"
+               OpName %x_47_phi "x_47_phi"
+               OpName %x_48_1 "x_48_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %22 = OpConstantNull %bool
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+         %57 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+     %uint_1 = OpConstant %uint 1
+         %64 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_bool Function %22
+       %x_47 = OpVariable %_ptr_Function_float Function %25
+   %x_47_phi = OpVariable %_ptr_Function_float Function %25
+     %x_48_1 = OpVariable %_ptr_Function_v4float Function %5
+         %29 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpFOrdGreaterThan %bool %30 %float_1
+               OpStore %x_30 %32
+         %33 = OpLoad %bool %x_30
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %47 = OpLoad %float %46
+         %49 = OpFOrdLessThan %bool %47 %float_0
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+         %52 = OpLoad %bool %x_30
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpStore %x_47_phi %float_1
+               OpBranch %42
+         %55 = OpLabel
+               OpBranch %43
+         %53 = OpLabel
+               OpBranch %43
+         %50 = OpLabel
+               OpStore %x_47_phi %float_0
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+         %56 = OpLoad %float %x_47_phi
+               OpStore %x_47 %56
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+               OpStore %x_48_1 %57
+         %61 = OpAccessChain %_ptr_Function_float %x_48_1 %uint_1
+         %62 = OpLoad %float %x_47
+               OpStore %61 %62
+         %63 = OpLoad %v4float %x_48_1
+               OpStore %x_GLF_color %63
+               OpBranch %34
+         %34 = OpLabel
+               OpStore %x_GLF_color %64
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..fd8fb0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,56 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_30 : bool;
+  var x_47 : f32;
+  let x_29 : f32 = x_6.injectionSwitch.x;
+  x_30 = (x_29 > 1.0);
+  if (x_30) {
+    loop {
+      var x_47_phi : f32;
+      loop {
+        let x_41 : f32 = gl_FragCoord.x;
+        if ((x_41 < 0.0)) {
+          if (x_30) {
+            x_47_phi = 1.0;
+            break;
+          } else {
+            continue;
+          }
+          continue;
+        }
+        x_47_phi = 0.0;
+        break;
+      }
+      x_47 = x_47_phi;
+      break;
+    }
+    var x_48_1 : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    x_48_1.y = x_47;
+    let x_48 : vec4<f32> = x_48_1;
+    x_GLF_color = x_48;
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm
new file mode 100644
index 0000000..6f810d5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm
@@ -0,0 +1,95 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %f_ "f("
+               OpName %i "i"
+               OpName %c "c"
+               OpName %i_0 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %i_0 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %18 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+         %28 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %16
+         %34 = OpLabel
+          %c = OpVariable %_ptr_Function_v4float Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+               OpStore %c %28
+               OpStore %i_0 %int_0
+               OpBranch %35
+         %35 = OpLabel
+         %12 = OpLoad %int %i_0
+         %36 = OpSLessThan %bool %12 %int_1
+               OpLoopMerge %37 %38 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %float %f_
+         %40 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %40 %39
+         %13 = OpLoad %int %i_0
+         %14 = OpIAdd %int %13 %int_1
+               OpStore %i_0 %14
+               OpBranch %35
+         %37 = OpLabel
+         %41 = OpLoad %v4float %c
+               OpStore %_GLF_color %41
+               OpReturn
+               OpFunctionEnd
+         %f_ = OpFunction %float None %18
+         %42 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %i %int_1
+               OpBranch %43
+         %43 = OpLabel
+          %8 = OpLoad %int %i
+         %44 = OpSLessThan %bool %8 %int_10
+               OpLoopMerge %45 %46 None
+               OpBranchConditional %44 %47 %45
+         %47 = OpLabel
+          %9 = OpLoad %int %i
+         %48 = OpConvertSToF %float %9
+         %49 = OpFOrdGreaterThanEqual %bool %48 %float_1
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %46
+         %51 = OpLabel
+               OpReturnValue %float_1
+         %50 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %10 = OpLoad %int %i
+         %11 = OpIAdd %int %10 %int_1
+               OpStore %i %11
+               OpBranch %43
+         %45 = OpLabel
+               OpReturnValue %float_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..6ebe635
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,50 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float f_() {
+  int i = 0;
+  i = 1;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      if ((float(i) >= 1.0f)) {
+        return 1.0f;
+      } else {
+        continue;
+      }
+    }
+  }
+  return 1.0f;
+}
+
+void main_1() {
+  float4 c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i_1 = 0;
+  c = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i_1 = 0;
+  while (true) {
+    if ((i_1 < 1)) {
+    } else {
+      break;
+    }
+    {
+      const float x_39 = f_();
+      c.x = x_39;
+      i_1 = (i_1 + 1);
+    }
+  }
+  x_GLF_color = c;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..110e1af
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.msl
@@ -0,0 +1,68 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float f_() {
+  int i = 0;
+  i = 1;
+  while (true) {
+    int const x_8 = i;
+    if ((x_8 < 10)) {
+    } else {
+      break;
+    }
+    int const x_9 = i;
+    if ((float(x_9) >= 1.0f)) {
+      return 1.0f;
+    } else {
+      {
+        int const x_10 = i;
+        i = (x_10 + 1);
+      }
+      continue;
+    }
+    {
+      int const x_10 = i;
+      i = (x_10 + 1);
+    }
+  }
+  return 1.0f;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4 c = 0.0f;
+  int i_1 = 0;
+  c = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i_1 = 0;
+  while (true) {
+    int const x_12 = i_1;
+    if ((x_12 < 1)) {
+    } else {
+      break;
+    }
+    {
+      float const x_39 = f_();
+      c.x = x_39;
+      int const x_13 = i_1;
+      i_1 = (x_13 + 1);
+    }
+  }
+  float4 const x_41 = c;
+  *(tint_symbol_4) = x_41;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b4f0236
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,135 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %f_ "f_"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+          %8 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %14 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+         %36 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+         %63 = OpTypeFunction %void %main_out
+         %f_ = OpFunction %float None %8
+         %10 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %14
+               OpStore %i %int_1
+               OpBranch %16
+         %16 = OpLabel
+               OpLoopMerge %17 %18 None
+               OpBranch %19
+         %19 = OpLabel
+         %20 = OpLoad %int %i
+         %22 = OpSLessThan %bool %20 %int_10
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %26
+         %25 = OpLabel
+               OpBranch %24
+         %26 = OpLabel
+               OpBranch %17
+         %24 = OpLabel
+         %27 = OpLoad %int %i
+         %28 = OpConvertSToF %float %27
+         %30 = OpFOrdGreaterThanEqual %bool %28 %float_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpReturnValue %float_1
+         %33 = OpLabel
+               OpBranch %18
+         %31 = OpLabel
+               OpBranch %18
+         %18 = OpLabel
+         %34 = OpLoad %int %i
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %i %35
+               OpBranch %16
+         %17 = OpLabel
+               OpReturnValue %float_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %36
+         %39 = OpLabel
+          %c = OpVariable %_ptr_Function_v4float Function %5
+        %i_1 = OpVariable %_ptr_Function_int Function %14
+               OpStore %c %44
+               OpStore %i_1 %int_0
+               OpBranch %46
+         %46 = OpLabel
+               OpLoopMerge %47 %48 None
+               OpBranch %49
+         %49 = OpLabel
+         %50 = OpLoad %int %i_1
+         %51 = OpSLessThan %bool %50 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %47
+         %52 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+         %55 = OpFunctionCall %float %f_
+         %59 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %59 %55
+         %60 = OpLoad %int %i_1
+         %61 = OpIAdd %int %60 %int_1
+               OpStore %i_1 %61
+               OpBranch %46
+         %47 = OpLabel
+         %62 = OpLoad %v4float %c
+               OpStore %x_GLF_color %62
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %63
+%tint_symbol = OpFunctionParameter %main_out
+         %67 = OpLabel
+         %68 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %68
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %36
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8e2cc4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,60 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_() -> f32 {
+  var i : i32;
+  i = 1;
+  loop {
+    let x_8 : i32 = i;
+    if ((x_8 < 10)) {
+    } else {
+      break;
+    }
+    let x_9 : i32 = i;
+    if ((f32(x_9) >= 1.0)) {
+      return 1.0;
+    } else {
+      continue;
+    }
+
+    continuing {
+      let x_10 : i32 = i;
+      i = (x_10 + 1);
+    }
+  }
+  return 1.0;
+}
+
+fn main_1() {
+  var c : vec4<f32>;
+  var i_1 : i32;
+  c = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i_1 = 0;
+  loop {
+    let x_12 : i32 = i_1;
+    if ((x_12 < 1)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_39 : f32 = f_();
+      c.x = x_39;
+      let x_13 : i32 = i_1;
+      i_1 = (x_13 + 1);
+    }
+  }
+  let x_41 : vec4<f32> = c;
+  x_GLF_color = x_41;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
new file mode 100644
index 0000000..8e2cc4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
@@ -0,0 +1,60 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_() -> f32 {
+  var i : i32;
+  i = 1;
+  loop {
+    let x_8 : i32 = i;
+    if ((x_8 < 10)) {
+    } else {
+      break;
+    }
+    let x_9 : i32 = i;
+    if ((f32(x_9) >= 1.0)) {
+      return 1.0;
+    } else {
+      continue;
+    }
+
+    continuing {
+      let x_10 : i32 = i;
+      i = (x_10 + 1);
+    }
+  }
+  return 1.0;
+}
+
+fn main_1() {
+  var c : vec4<f32>;
+  var i_1 : i32;
+  c = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i_1 = 0;
+  loop {
+    let x_12 : i32 = i_1;
+    if ((x_12 < 1)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_39 : f32 = f_();
+      c.x = x_39;
+      let x_13 : i32 = i_1;
+      i_1 = (x_13 + 1);
+    }
+  }
+  let x_41 : vec4<f32> = c;
+  x_GLF_color = x_41;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..6ebe635
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,50 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float f_() {
+  int i = 0;
+  i = 1;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      if ((float(i) >= 1.0f)) {
+        return 1.0f;
+      } else {
+        continue;
+      }
+    }
+  }
+  return 1.0f;
+}
+
+void main_1() {
+  float4 c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i_1 = 0;
+  c = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i_1 = 0;
+  while (true) {
+    if ((i_1 < 1)) {
+    } else {
+      break;
+    }
+    {
+      const float x_39 = f_();
+      c.x = x_39;
+      i_1 = (i_1 + 1);
+    }
+  }
+  x_GLF_color = c;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..110e1af
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.msl
@@ -0,0 +1,68 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float f_() {
+  int i = 0;
+  i = 1;
+  while (true) {
+    int const x_8 = i;
+    if ((x_8 < 10)) {
+    } else {
+      break;
+    }
+    int const x_9 = i;
+    if ((float(x_9) >= 1.0f)) {
+      return 1.0f;
+    } else {
+      {
+        int const x_10 = i;
+        i = (x_10 + 1);
+      }
+      continue;
+    }
+    {
+      int const x_10 = i;
+      i = (x_10 + 1);
+    }
+  }
+  return 1.0f;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4 c = 0.0f;
+  int i_1 = 0;
+  c = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i_1 = 0;
+  while (true) {
+    int const x_12 = i_1;
+    if ((x_12 < 1)) {
+    } else {
+      break;
+    }
+    {
+      float const x_39 = f_();
+      c.x = x_39;
+      int const x_13 = i_1;
+      i_1 = (x_13 + 1);
+    }
+  }
+  float4 const x_41 = c;
+  *(tint_symbol_4) = x_41;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b4f0236
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,135 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %f_ "f_"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+          %8 = OpTypeFunction %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %14 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+       %void = OpTypeVoid
+         %36 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+   %main_out = OpTypeStruct %v4float
+         %63 = OpTypeFunction %void %main_out
+         %f_ = OpFunction %float None %8
+         %10 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %14
+               OpStore %i %int_1
+               OpBranch %16
+         %16 = OpLabel
+               OpLoopMerge %17 %18 None
+               OpBranch %19
+         %19 = OpLabel
+         %20 = OpLoad %int %i
+         %22 = OpSLessThan %bool %20 %int_10
+               OpSelectionMerge %24 None
+               OpBranchConditional %22 %25 %26
+         %25 = OpLabel
+               OpBranch %24
+         %26 = OpLabel
+               OpBranch %17
+         %24 = OpLabel
+         %27 = OpLoad %int %i
+         %28 = OpConvertSToF %float %27
+         %30 = OpFOrdGreaterThanEqual %bool %28 %float_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %33
+         %32 = OpLabel
+               OpReturnValue %float_1
+         %33 = OpLabel
+               OpBranch %18
+         %31 = OpLabel
+               OpBranch %18
+         %18 = OpLabel
+         %34 = OpLoad %int %i
+         %35 = OpIAdd %int %34 %int_1
+               OpStore %i %35
+               OpBranch %16
+         %17 = OpLabel
+               OpReturnValue %float_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %36
+         %39 = OpLabel
+          %c = OpVariable %_ptr_Function_v4float Function %5
+        %i_1 = OpVariable %_ptr_Function_int Function %14
+               OpStore %c %44
+               OpStore %i_1 %int_0
+               OpBranch %46
+         %46 = OpLabel
+               OpLoopMerge %47 %48 None
+               OpBranch %49
+         %49 = OpLabel
+         %50 = OpLoad %int %i_1
+         %51 = OpSLessThan %bool %50 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %47
+         %52 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+         %55 = OpFunctionCall %float %f_
+         %59 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %59 %55
+         %60 = OpLoad %int %i_1
+         %61 = OpIAdd %int %60 %int_1
+               OpStore %i_1 %61
+               OpBranch %46
+         %47 = OpLabel
+         %62 = OpLoad %v4float %c
+               OpStore %x_GLF_color %62
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %63
+%tint_symbol = OpFunctionParameter %main_out
+         %67 = OpLabel
+         %68 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %68
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %36
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8e2cc4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,60 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn f_() -> f32 {
+  var i : i32;
+  i = 1;
+  loop {
+    let x_8 : i32 = i;
+    if ((x_8 < 10)) {
+    } else {
+      break;
+    }
+    let x_9 : i32 = i;
+    if ((f32(x_9) >= 1.0)) {
+      return 1.0;
+    } else {
+      continue;
+    }
+
+    continuing {
+      let x_10 : i32 = i;
+      i = (x_10 + 1);
+    }
+  }
+  return 1.0;
+}
+
+fn main_1() {
+  var c : vec4<f32>;
+  var i_1 : i32;
+  c = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i_1 = 0;
+  loop {
+    let x_12 : i32 = i_1;
+    if ((x_12 < 1)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_39 : f32 = f_();
+      c.x = x_39;
+      let x_13 : i32 = i_1;
+      i_1 = (x_13 + 1);
+    }
+  }
+  let x_41 : vec4<f32> = c;
+  x_GLF_color = x_41;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm
new file mode 100644
index 0000000..adc2dd2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm
@@ -0,0 +1,130 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %GLF_live4drawShape_ "GLF_live4drawShape("
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+         %13 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %19 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+         %29 = OpUndef %v3float
+         %30 = OpUndef %int
+         %31 = OpUndef %bool
+         %32 = OpUndef %v3float
+         %33 = OpUndef %int
+         %34 = OpUndef %bool
+       %main = OpFunction %void None %10
+         %35 = OpLabel
+         %36 = OpVariable %_ptr_Function_bool Function %false
+         %37 = OpVariable %_ptr_Function_v3float Function
+          %6 = OpVariable %_ptr_Function_int Function
+         %38 = OpVariable %_ptr_Function_v3float Function
+               OpStore %_GLF_color %24
+               OpStore %36 %false
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpPhi %bool %false %35 %31 %41
+               OpLoopMerge %42 %41 None
+               OpBranch %43
+         %43 = OpLabel
+               OpStore %6 %int_0
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpPhi %bool %40 %43 %31 %46
+          %7 = OpPhi %int %int_0 %43 %30 %46
+               OpLoopMerge %47 %46 None
+               OpBranch %48
+         %48 = OpLabel
+         %49 = OpSLessThan %bool %7 %int_0
+               OpBranchConditional %49 %50 %47
+         %50 = OpLabel
+               OpStore %36 %true
+               OpStore %37 %19
+               OpBranch %47
+         %46 = OpLabel
+               OpBranch %44
+         %47 = OpLabel
+         %51 = OpPhi %v3float %29 %48 %19 %50
+         %52 = OpPhi %bool %45 %48 %true %50
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %42 %53
+         %53 = OpLabel
+         %54 = OpUndef %v3float
+               OpStore %36 %true
+               OpBranch %42
+         %41 = OpLabel
+               OpBranch %39
+         %42 = OpLabel
+         %55 = OpPhi %v3float %51 %47 %54 %53
+               OpStore %38 %55
+               OpReturn
+               OpFunctionEnd
+%GLF_live4drawShape_ = OpFunction %v3float None %13
+         %56 = OpLabel
+         %57 = OpVariable %_ptr_Function_bool Function %false
+         %58 = OpVariable %_ptr_Function_v3float Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpPhi %bool %false %56 %34 %61
+               OpLoopMerge %62 %61 None
+               OpBranch %63
+         %63 = OpLabel
+               OpStore %i %int_0
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpPhi %bool %60 %63 %34 %66
+          %8 = OpPhi %int %int_0 %63 %33 %66
+               OpLoopMerge %67 %66 None
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpSLessThan %bool %8 %int_0
+               OpBranchConditional %69 %70 %67
+         %70 = OpLabel
+               OpStore %57 %true
+               OpStore %58 %19
+               OpBranch %67
+         %66 = OpLabel
+               OpBranch %64
+         %67 = OpLabel
+         %71 = OpPhi %v3float %32 %68 %19 %70
+         %72 = OpPhi %bool %65 %68 %true %70
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %62 %73
+         %73 = OpLabel
+         %74 = OpUndef %v3float
+               OpStore %57 %true
+               OpBranch %62
+         %61 = OpLabel
+               OpBranch %59
+         %62 = OpLabel
+         %75 = OpPhi %v3float %71 %67 %74 %73
+               OpReturnValue %75
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..3c94412
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.hlsl
@@ -0,0 +1,129 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_36 = false;
+  float3 x_37 = float3(0.0f, 0.0f, 0.0f);
+  int x_6 = 0;
+  float3 x_38 = float3(0.0f, 0.0f, 0.0f);
+  float3 x_51 = float3(0.0f, 0.0f, 0.0f);
+  float3 x_54 = float3(0.0f, 0.0f, 0.0f);
+  bool x_40_phi = false;
+  float3 x_55_phi = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_36 = false;
+  x_40_phi = false;
+  while (true) {
+    bool x_45 = false;
+    bool x_45_phi = false;
+    int x_7_phi = 0;
+    float3 x_51_phi = float3(0.0f, 0.0f, 0.0f);
+    bool x_52_phi = false;
+    const bool x_40 = x_40_phi;
+    x_6 = 0;
+    x_45_phi = x_40;
+    x_7_phi = 0;
+    while (true) {
+      x_45 = x_45_phi;
+      const int x_7 = x_7_phi;
+      x_51_phi = float3(0.0f, 0.0f, 0.0f);
+      x_52_phi = x_45;
+      if ((x_7 < 0)) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = float3(1.0f, 1.0f, 1.0f);
+      x_51_phi = float3(1.0f, 1.0f, 1.0f);
+      x_52_phi = true;
+      break;
+      {
+        x_45_phi = false;
+        x_7_phi = 0;
+      }
+    }
+    x_51 = x_51_phi;
+    const bool x_52 = x_52_phi;
+    x_55_phi = x_51;
+    if (x_52) {
+      break;
+    }
+    x_54 = float3(0.0f, 0.0f, 0.0f);
+    x_36 = true;
+    x_55_phi = x_54;
+    break;
+    {
+      x_40_phi = false;
+    }
+  }
+  x_38 = x_55_phi;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
+
+float3 GLF_live4drawShape_() {
+  bool x_57 = false;
+  float3 x_58 = float3(0.0f, 0.0f, 0.0f);
+  int i = 0;
+  float3 x_71 = float3(0.0f, 0.0f, 0.0f);
+  float3 x_74 = float3(0.0f, 0.0f, 0.0f);
+  bool x_60_phi = false;
+  float3 x_75_phi = float3(0.0f, 0.0f, 0.0f);
+  x_60_phi = false;
+  while (true) {
+    bool x_65 = false;
+    bool x_65_phi = false;
+    int x_8_phi = 0;
+    float3 x_71_phi = float3(0.0f, 0.0f, 0.0f);
+    bool x_72_phi = false;
+    const bool x_60 = x_60_phi;
+    i = 0;
+    x_65_phi = x_60;
+    x_8_phi = 0;
+    while (true) {
+      x_65 = x_65_phi;
+      const int x_8 = x_8_phi;
+      x_71_phi = float3(0.0f, 0.0f, 0.0f);
+      x_72_phi = x_65;
+      if ((x_8 < 0)) {
+      } else {
+        break;
+      }
+      x_57 = true;
+      x_58 = float3(1.0f, 1.0f, 1.0f);
+      x_71_phi = float3(1.0f, 1.0f, 1.0f);
+      x_72_phi = true;
+      break;
+      {
+        x_65_phi = false;
+        x_8_phi = 0;
+      }
+    }
+    x_71 = x_71_phi;
+    const bool x_72 = x_72_phi;
+    x_75_phi = x_71;
+    if (x_72) {
+      break;
+    }
+    x_74 = float3(0.0f, 0.0f, 0.0f);
+    x_57 = true;
+    x_75_phi = x_74;
+    break;
+    {
+      x_60_phi = false;
+    }
+  }
+  return x_75_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.msl
new file mode 100644
index 0000000..75d8b9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.msl
@@ -0,0 +1,134 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool x_36 = false;
+  float3 x_37 = 0.0f;
+  int x_6 = 0;
+  float3 x_38 = 0.0f;
+  float3 x_51 = 0.0f;
+  float3 x_54 = 0.0f;
+  bool x_40_phi = false;
+  float3 x_55_phi = 0.0f;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_36 = false;
+  x_40_phi = false;
+  while (true) {
+    bool x_45 = false;
+    bool x_45_phi = false;
+    int x_7_phi = 0;
+    float3 x_51_phi = 0.0f;
+    bool x_52_phi = false;
+    bool const x_40 = x_40_phi;
+    x_6 = 0;
+    x_45_phi = x_40;
+    x_7_phi = 0;
+    while (true) {
+      x_45 = x_45_phi;
+      int const x_7 = x_7_phi;
+      x_51_phi = float3(0.0f, 0.0f, 0.0f);
+      x_52_phi = x_45;
+      if ((x_7 < 0)) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = float3(1.0f, 1.0f, 1.0f);
+      x_51_phi = float3(1.0f, 1.0f, 1.0f);
+      x_52_phi = true;
+      break;
+      {
+        x_45_phi = false;
+        x_7_phi = 0;
+      }
+    }
+    x_51 = x_51_phi;
+    bool const x_52 = x_52_phi;
+    x_55_phi = x_51;
+    if (x_52) {
+      break;
+    }
+    x_54 = float3(0.0f, 0.0f, 0.0f);
+    x_36 = true;
+    x_55_phi = x_54;
+    break;
+    {
+      x_40_phi = false;
+    }
+  }
+  float3 const x_55 = x_55_phi;
+  x_38 = x_55;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+float3 GLF_live4drawShape_() {
+  bool x_57 = false;
+  float3 x_58 = 0.0f;
+  int i = 0;
+  float3 x_71 = 0.0f;
+  float3 x_74 = 0.0f;
+  bool x_60_phi = false;
+  float3 x_75_phi = 0.0f;
+  x_60_phi = false;
+  while (true) {
+    bool x_65 = false;
+    bool x_65_phi = false;
+    int x_8_phi = 0;
+    float3 x_71_phi = 0.0f;
+    bool x_72_phi = false;
+    bool const x_60 = x_60_phi;
+    i = 0;
+    x_65_phi = x_60;
+    x_8_phi = 0;
+    while (true) {
+      x_65 = x_65_phi;
+      int const x_8 = x_8_phi;
+      x_71_phi = float3(0.0f, 0.0f, 0.0f);
+      x_72_phi = x_65;
+      if ((x_8 < 0)) {
+      } else {
+        break;
+      }
+      x_57 = true;
+      x_58 = float3(1.0f, 1.0f, 1.0f);
+      x_71_phi = float3(1.0f, 1.0f, 1.0f);
+      x_72_phi = true;
+      break;
+      {
+        x_65_phi = false;
+        x_8_phi = 0;
+      }
+    }
+    x_71 = x_71_phi;
+    bool const x_72 = x_72_phi;
+    x_75_phi = x_71;
+    if (x_72) {
+      break;
+    }
+    x_74 = float3(0.0f, 0.0f, 0.0f);
+    x_57 = true;
+    x_75_phi = x_74;
+    break;
+    {
+      x_60_phi = false;
+    }
+  }
+  float3 const x_75 = x_75_phi;
+  return x_75;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..9396999
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.spvasm
@@ -0,0 +1,245 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 115
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_37 "x_37"
+               OpName %x_6 "x_6"
+               OpName %x_38 "x_38"
+               OpName %x_51 "x_51"
+               OpName %x_54 "x_54"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_55_phi "x_55_phi"
+               OpName %x_45 "x_45"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_7_phi "x_7_phi"
+               OpName %x_51_phi "x_51_phi"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %GLF_live4drawShape_ "GLF_live4drawShape_"
+               OpName %x_57 "x_57"
+               OpName %x_58 "x_58"
+               OpName %i "i"
+               OpName %x_71 "x_71"
+               OpName %x_74 "x_74"
+               OpName %x_60_phi "x_60_phi"
+               OpName %x_75_phi "x_75_phi"
+               OpName %x_65 "x_65"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_8_phi "x_8_phi"
+               OpName %x_71_phi "x_71_phi"
+               OpName %x_72_phi "x_72_phi"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %16 = OpConstantNull %bool
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %20 = OpConstantNull %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+         %50 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %true = OpConstantTrue %bool
+         %57 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+         %77 = OpTypeFunction %v3float
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_bool Function %16
+       %x_37 = OpVariable %_ptr_Function_v3float Function %20
+        %x_6 = OpVariable %_ptr_Function_int Function %24
+       %x_38 = OpVariable %_ptr_Function_v3float Function %20
+       %x_51 = OpVariable %_ptr_Function_v3float Function %20
+       %x_54 = OpVariable %_ptr_Function_v3float Function %20
+   %x_40_phi = OpVariable %_ptr_Function_bool Function %16
+   %x_55_phi = OpVariable %_ptr_Function_v3float Function %20
+       %x_45 = OpVariable %_ptr_Function_bool Function %16
+   %x_45_phi = OpVariable %_ptr_Function_bool Function %16
+    %x_7_phi = OpVariable %_ptr_Function_int Function %24
+   %x_51_phi = OpVariable %_ptr_Function_v3float Function %20
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %16
+               OpStore %x_36 %false
+               OpStore %x_GLF_color %32
+               OpStore %x_36 %false
+               OpStore %x_40_phi %false
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %42 = OpLoad %bool %x_40_phi
+               OpStore %x_6 %int_0
+               OpStore %x_45_phi %42
+               OpStore %x_7_phi %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %bool %x_45_phi
+               OpStore %x_45 %48
+         %49 = OpLoad %int %x_7_phi
+               OpStore %x_51_phi %50
+         %51 = OpLoad %bool %x_45
+               OpStore %x_52_phi %51
+         %52 = OpSLessThan %bool %49 %int_0
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %45
+         %53 = OpLabel
+               OpStore %x_36 %true
+               OpStore %x_37 %57
+               OpStore %x_51_phi %57
+               OpStore %x_52_phi %true
+               OpBranch %45
+         %46 = OpLabel
+               OpStore %x_45_phi %false
+               OpStore %x_7_phi %int_0
+               OpBranch %44
+         %45 = OpLabel
+         %58 = OpLoad %v3float %x_51_phi
+               OpStore %x_51 %58
+         %59 = OpLoad %bool %x_52_phi
+         %60 = OpLoad %v3float %x_51
+               OpStore %x_55_phi %60
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %61
+         %62 = OpLabel
+               OpBranch %34
+         %61 = OpLabel
+               OpStore %x_54 %50
+               OpStore %x_36 %true
+         %63 = OpLoad %v3float %x_54
+               OpStore %x_55_phi %63
+               OpBranch %34
+         %35 = OpLabel
+               OpStore %x_40_phi %false
+               OpBranch %33
+         %34 = OpLabel
+         %64 = OpLoad %v3float %x_55_phi
+               OpStore %x_38 %64
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %65
+%tint_symbol = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %72 = OpLabel
+         %73 = OpFunctionCall %void %main_1
+         %75 = OpLoad %v4float %x_GLF_color
+         %76 = OpCompositeConstruct %main_out %75
+         %74 = OpFunctionCall %void %tint_symbol_2 %76
+               OpReturn
+               OpFunctionEnd
+%GLF_live4drawShape_ = OpFunction %v3float None %77
+         %79 = OpLabel
+       %x_57 = OpVariable %_ptr_Function_bool Function %16
+       %x_58 = OpVariable %_ptr_Function_v3float Function %20
+          %i = OpVariable %_ptr_Function_int Function %24
+       %x_71 = OpVariable %_ptr_Function_v3float Function %20
+       %x_74 = OpVariable %_ptr_Function_v3float Function %20
+   %x_60_phi = OpVariable %_ptr_Function_bool Function %16
+   %x_75_phi = OpVariable %_ptr_Function_v3float Function %20
+       %x_65 = OpVariable %_ptr_Function_bool Function %16
+   %x_65_phi = OpVariable %_ptr_Function_bool Function %16
+    %x_8_phi = OpVariable %_ptr_Function_int Function %24
+   %x_71_phi = OpVariable %_ptr_Function_v3float Function %20
+   %x_72_phi = OpVariable %_ptr_Function_bool Function %16
+               OpStore %x_57 %false
+               OpStore %x_60_phi %false
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %96 = OpLoad %bool %x_60_phi
+               OpStore %i %int_0
+               OpStore %x_65_phi %96
+               OpStore %x_8_phi %int_0
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %101 = OpLoad %bool %x_65_phi
+               OpStore %x_65 %101
+        %102 = OpLoad %int %x_8_phi
+               OpStore %x_71_phi %50
+        %103 = OpLoad %bool %x_65
+               OpStore %x_72_phi %103
+        %104 = OpSLessThan %bool %102 %int_0
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+               OpBranch %105
+        %107 = OpLabel
+               OpBranch %98
+        %105 = OpLabel
+               OpStore %x_57 %true
+               OpStore %x_58 %57
+               OpStore %x_71_phi %57
+               OpStore %x_72_phi %true
+               OpBranch %98
+         %99 = OpLabel
+               OpStore %x_65_phi %false
+               OpStore %x_8_phi %int_0
+               OpBranch %97
+         %98 = OpLabel
+        %108 = OpLoad %v3float %x_71_phi
+               OpStore %x_71 %108
+        %109 = OpLoad %bool %x_72_phi
+        %110 = OpLoad %v3float %x_71
+               OpStore %x_75_phi %110
+               OpSelectionMerge %111 None
+               OpBranchConditional %109 %112 %111
+        %112 = OpLabel
+               OpBranch %88
+        %111 = OpLabel
+               OpStore %x_74 %50
+               OpStore %x_57 %true
+        %113 = OpLoad %v3float %x_74
+               OpStore %x_75_phi %113
+               OpBranch %88
+         %89 = OpLabel
+               OpStore %x_60_phi %false
+               OpBranch %87
+         %88 = OpLabel
+        %114 = OpLoad %v3float %x_75_phi
+               OpReturnValue %114
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..def4326
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.spvasm.expected.wgsl
@@ -0,0 +1,132 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool = false;
+  var x_37 : vec3<f32>;
+  var x_6 : i32;
+  var x_38 : vec3<f32>;
+  var x_51 : vec3<f32>;
+  var x_54 : vec3<f32>;
+  var x_40_phi : bool;
+  var x_55_phi : vec3<f32>;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_36 = false;
+  x_40_phi = false;
+  loop {
+    var x_45 : bool;
+    var x_45_phi : bool;
+    var x_7_phi : i32;
+    var x_51_phi : vec3<f32>;
+    var x_52_phi : bool;
+    let x_40 : bool = x_40_phi;
+    x_6 = 0;
+    x_45_phi = x_40;
+    x_7_phi = 0;
+    loop {
+      x_45 = x_45_phi;
+      let x_7 : i32 = x_7_phi;
+      x_51_phi = vec3<f32>(0.0, 0.0, 0.0);
+      x_52_phi = x_45;
+      if ((x_7 < 0)) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = vec3<f32>(1.0, 1.0, 1.0);
+      x_51_phi = vec3<f32>(1.0, 1.0, 1.0);
+      x_52_phi = true;
+      break;
+
+      continuing {
+        x_45_phi = false;
+        x_7_phi = 0;
+      }
+    }
+    x_51 = x_51_phi;
+    let x_52 : bool = x_52_phi;
+    x_55_phi = x_51;
+    if (x_52) {
+      break;
+    }
+    x_54 = vec3<f32>(0.0, 0.0, 0.0);
+    x_36 = true;
+    x_55_phi = x_54;
+    break;
+
+    continuing {
+      x_40_phi = false;
+    }
+  }
+  let x_55 : vec3<f32> = x_55_phi;
+  x_38 = x_55;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn GLF_live4drawShape_() -> vec3<f32> {
+  var x_57 : bool = false;
+  var x_58 : vec3<f32>;
+  var i : i32;
+  var x_71 : vec3<f32>;
+  var x_74 : vec3<f32>;
+  var x_60_phi : bool;
+  var x_75_phi : vec3<f32>;
+  x_60_phi = false;
+  loop {
+    var x_65 : bool;
+    var x_65_phi : bool;
+    var x_8_phi : i32;
+    var x_71_phi : vec3<f32>;
+    var x_72_phi : bool;
+    let x_60 : bool = x_60_phi;
+    i = 0;
+    x_65_phi = x_60;
+    x_8_phi = 0;
+    loop {
+      x_65 = x_65_phi;
+      let x_8 : i32 = x_8_phi;
+      x_71_phi = vec3<f32>(0.0, 0.0, 0.0);
+      x_72_phi = x_65;
+      if ((x_8 < 0)) {
+      } else {
+        break;
+      }
+      x_57 = true;
+      x_58 = vec3<f32>(1.0, 1.0, 1.0);
+      x_71_phi = vec3<f32>(1.0, 1.0, 1.0);
+      x_72_phi = true;
+      break;
+
+      continuing {
+        x_65_phi = false;
+        x_8_phi = 0;
+      }
+    }
+    x_71 = x_71_phi;
+    let x_72 : bool = x_72_phi;
+    x_75_phi = x_71;
+    if (x_72) {
+      break;
+    }
+    x_74 = vec3<f32>(0.0, 0.0, 0.0);
+    x_57 = true;
+    x_75_phi = x_74;
+    break;
+
+    continuing {
+      x_60_phi = false;
+    }
+  }
+  let x_75 : vec3<f32> = x_75_phi;
+  return x_75;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
new file mode 100644
index 0000000..def4326
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
@@ -0,0 +1,132 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool = false;
+  var x_37 : vec3<f32>;
+  var x_6 : i32;
+  var x_38 : vec3<f32>;
+  var x_51 : vec3<f32>;
+  var x_54 : vec3<f32>;
+  var x_40_phi : bool;
+  var x_55_phi : vec3<f32>;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_36 = false;
+  x_40_phi = false;
+  loop {
+    var x_45 : bool;
+    var x_45_phi : bool;
+    var x_7_phi : i32;
+    var x_51_phi : vec3<f32>;
+    var x_52_phi : bool;
+    let x_40 : bool = x_40_phi;
+    x_6 = 0;
+    x_45_phi = x_40;
+    x_7_phi = 0;
+    loop {
+      x_45 = x_45_phi;
+      let x_7 : i32 = x_7_phi;
+      x_51_phi = vec3<f32>(0.0, 0.0, 0.0);
+      x_52_phi = x_45;
+      if ((x_7 < 0)) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = vec3<f32>(1.0, 1.0, 1.0);
+      x_51_phi = vec3<f32>(1.0, 1.0, 1.0);
+      x_52_phi = true;
+      break;
+
+      continuing {
+        x_45_phi = false;
+        x_7_phi = 0;
+      }
+    }
+    x_51 = x_51_phi;
+    let x_52 : bool = x_52_phi;
+    x_55_phi = x_51;
+    if (x_52) {
+      break;
+    }
+    x_54 = vec3<f32>(0.0, 0.0, 0.0);
+    x_36 = true;
+    x_55_phi = x_54;
+    break;
+
+    continuing {
+      x_40_phi = false;
+    }
+  }
+  let x_55 : vec3<f32> = x_55_phi;
+  x_38 = x_55;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn GLF_live4drawShape_() -> vec3<f32> {
+  var x_57 : bool = false;
+  var x_58 : vec3<f32>;
+  var i : i32;
+  var x_71 : vec3<f32>;
+  var x_74 : vec3<f32>;
+  var x_60_phi : bool;
+  var x_75_phi : vec3<f32>;
+  x_60_phi = false;
+  loop {
+    var x_65 : bool;
+    var x_65_phi : bool;
+    var x_8_phi : i32;
+    var x_71_phi : vec3<f32>;
+    var x_72_phi : bool;
+    let x_60 : bool = x_60_phi;
+    i = 0;
+    x_65_phi = x_60;
+    x_8_phi = 0;
+    loop {
+      x_65 = x_65_phi;
+      let x_8 : i32 = x_8_phi;
+      x_71_phi = vec3<f32>(0.0, 0.0, 0.0);
+      x_72_phi = x_65;
+      if ((x_8 < 0)) {
+      } else {
+        break;
+      }
+      x_57 = true;
+      x_58 = vec3<f32>(1.0, 1.0, 1.0);
+      x_71_phi = vec3<f32>(1.0, 1.0, 1.0);
+      x_72_phi = true;
+      break;
+
+      continuing {
+        x_65_phi = false;
+        x_8_phi = 0;
+      }
+    }
+    x_71 = x_71_phi;
+    let x_72 : bool = x_72_phi;
+    x_75_phi = x_71;
+    if (x_72) {
+      break;
+    }
+    x_74 = vec3<f32>(0.0, 0.0, 0.0);
+    x_57 = true;
+    x_75_phi = x_74;
+    break;
+
+    continuing {
+      x_60_phi = false;
+    }
+  }
+  let x_75 : vec3<f32> = x_75_phi;
+  return x_75;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..3c94412
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.hlsl
@@ -0,0 +1,129 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_36 = false;
+  float3 x_37 = float3(0.0f, 0.0f, 0.0f);
+  int x_6 = 0;
+  float3 x_38 = float3(0.0f, 0.0f, 0.0f);
+  float3 x_51 = float3(0.0f, 0.0f, 0.0f);
+  float3 x_54 = float3(0.0f, 0.0f, 0.0f);
+  bool x_40_phi = false;
+  float3 x_55_phi = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_36 = false;
+  x_40_phi = false;
+  while (true) {
+    bool x_45 = false;
+    bool x_45_phi = false;
+    int x_7_phi = 0;
+    float3 x_51_phi = float3(0.0f, 0.0f, 0.0f);
+    bool x_52_phi = false;
+    const bool x_40 = x_40_phi;
+    x_6 = 0;
+    x_45_phi = x_40;
+    x_7_phi = 0;
+    while (true) {
+      x_45 = x_45_phi;
+      const int x_7 = x_7_phi;
+      x_51_phi = float3(0.0f, 0.0f, 0.0f);
+      x_52_phi = x_45;
+      if ((x_7 < 0)) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = float3(1.0f, 1.0f, 1.0f);
+      x_51_phi = float3(1.0f, 1.0f, 1.0f);
+      x_52_phi = true;
+      break;
+      {
+        x_45_phi = false;
+        x_7_phi = 0;
+      }
+    }
+    x_51 = x_51_phi;
+    const bool x_52 = x_52_phi;
+    x_55_phi = x_51;
+    if (x_52) {
+      break;
+    }
+    x_54 = float3(0.0f, 0.0f, 0.0f);
+    x_36 = true;
+    x_55_phi = x_54;
+    break;
+    {
+      x_40_phi = false;
+    }
+  }
+  x_38 = x_55_phi;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
+
+float3 GLF_live4drawShape_() {
+  bool x_57 = false;
+  float3 x_58 = float3(0.0f, 0.0f, 0.0f);
+  int i = 0;
+  float3 x_71 = float3(0.0f, 0.0f, 0.0f);
+  float3 x_74 = float3(0.0f, 0.0f, 0.0f);
+  bool x_60_phi = false;
+  float3 x_75_phi = float3(0.0f, 0.0f, 0.0f);
+  x_60_phi = false;
+  while (true) {
+    bool x_65 = false;
+    bool x_65_phi = false;
+    int x_8_phi = 0;
+    float3 x_71_phi = float3(0.0f, 0.0f, 0.0f);
+    bool x_72_phi = false;
+    const bool x_60 = x_60_phi;
+    i = 0;
+    x_65_phi = x_60;
+    x_8_phi = 0;
+    while (true) {
+      x_65 = x_65_phi;
+      const int x_8 = x_8_phi;
+      x_71_phi = float3(0.0f, 0.0f, 0.0f);
+      x_72_phi = x_65;
+      if ((x_8 < 0)) {
+      } else {
+        break;
+      }
+      x_57 = true;
+      x_58 = float3(1.0f, 1.0f, 1.0f);
+      x_71_phi = float3(1.0f, 1.0f, 1.0f);
+      x_72_phi = true;
+      break;
+      {
+        x_65_phi = false;
+        x_8_phi = 0;
+      }
+    }
+    x_71 = x_71_phi;
+    const bool x_72 = x_72_phi;
+    x_75_phi = x_71;
+    if (x_72) {
+      break;
+    }
+    x_74 = float3(0.0f, 0.0f, 0.0f);
+    x_57 = true;
+    x_75_phi = x_74;
+    break;
+    {
+      x_60_phi = false;
+    }
+  }
+  return x_75_phi;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.msl
new file mode 100644
index 0000000..75d8b9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.msl
@@ -0,0 +1,134 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool x_36 = false;
+  float3 x_37 = 0.0f;
+  int x_6 = 0;
+  float3 x_38 = 0.0f;
+  float3 x_51 = 0.0f;
+  float3 x_54 = 0.0f;
+  bool x_40_phi = false;
+  float3 x_55_phi = 0.0f;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_36 = false;
+  x_40_phi = false;
+  while (true) {
+    bool x_45 = false;
+    bool x_45_phi = false;
+    int x_7_phi = 0;
+    float3 x_51_phi = 0.0f;
+    bool x_52_phi = false;
+    bool const x_40 = x_40_phi;
+    x_6 = 0;
+    x_45_phi = x_40;
+    x_7_phi = 0;
+    while (true) {
+      x_45 = x_45_phi;
+      int const x_7 = x_7_phi;
+      x_51_phi = float3(0.0f, 0.0f, 0.0f);
+      x_52_phi = x_45;
+      if ((x_7 < 0)) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = float3(1.0f, 1.0f, 1.0f);
+      x_51_phi = float3(1.0f, 1.0f, 1.0f);
+      x_52_phi = true;
+      break;
+      {
+        x_45_phi = false;
+        x_7_phi = 0;
+      }
+    }
+    x_51 = x_51_phi;
+    bool const x_52 = x_52_phi;
+    x_55_phi = x_51;
+    if (x_52) {
+      break;
+    }
+    x_54 = float3(0.0f, 0.0f, 0.0f);
+    x_36 = true;
+    x_55_phi = x_54;
+    break;
+    {
+      x_40_phi = false;
+    }
+  }
+  float3 const x_55 = x_55_phi;
+  x_38 = x_55;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
+float3 GLF_live4drawShape_() {
+  bool x_57 = false;
+  float3 x_58 = 0.0f;
+  int i = 0;
+  float3 x_71 = 0.0f;
+  float3 x_74 = 0.0f;
+  bool x_60_phi = false;
+  float3 x_75_phi = 0.0f;
+  x_60_phi = false;
+  while (true) {
+    bool x_65 = false;
+    bool x_65_phi = false;
+    int x_8_phi = 0;
+    float3 x_71_phi = 0.0f;
+    bool x_72_phi = false;
+    bool const x_60 = x_60_phi;
+    i = 0;
+    x_65_phi = x_60;
+    x_8_phi = 0;
+    while (true) {
+      x_65 = x_65_phi;
+      int const x_8 = x_8_phi;
+      x_71_phi = float3(0.0f, 0.0f, 0.0f);
+      x_72_phi = x_65;
+      if ((x_8 < 0)) {
+      } else {
+        break;
+      }
+      x_57 = true;
+      x_58 = float3(1.0f, 1.0f, 1.0f);
+      x_71_phi = float3(1.0f, 1.0f, 1.0f);
+      x_72_phi = true;
+      break;
+      {
+        x_65_phi = false;
+        x_8_phi = 0;
+      }
+    }
+    x_71 = x_71_phi;
+    bool const x_72 = x_72_phi;
+    x_75_phi = x_71;
+    if (x_72) {
+      break;
+    }
+    x_74 = float3(0.0f, 0.0f, 0.0f);
+    x_57 = true;
+    x_75_phi = x_74;
+    break;
+    {
+      x_60_phi = false;
+    }
+  }
+  float3 const x_75 = x_75_phi;
+  return x_75;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..9396999
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.spvasm
@@ -0,0 +1,245 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 115
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_37 "x_37"
+               OpName %x_6 "x_6"
+               OpName %x_38 "x_38"
+               OpName %x_51 "x_51"
+               OpName %x_54 "x_54"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_55_phi "x_55_phi"
+               OpName %x_45 "x_45"
+               OpName %x_45_phi "x_45_phi"
+               OpName %x_7_phi "x_7_phi"
+               OpName %x_51_phi "x_51_phi"
+               OpName %x_52_phi "x_52_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpName %GLF_live4drawShape_ "GLF_live4drawShape_"
+               OpName %x_57 "x_57"
+               OpName %x_58 "x_58"
+               OpName %i "i"
+               OpName %x_71 "x_71"
+               OpName %x_74 "x_74"
+               OpName %x_60_phi "x_60_phi"
+               OpName %x_75_phi "x_75_phi"
+               OpName %x_65 "x_65"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_8_phi "x_8_phi"
+               OpName %x_71_phi "x_71_phi"
+               OpName %x_72_phi "x_72_phi"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %16 = OpConstantNull %bool
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %20 = OpConstantNull %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+         %50 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %true = OpConstantTrue %bool
+         %57 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+         %77 = OpTypeFunction %v3float
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_bool Function %16
+       %x_37 = OpVariable %_ptr_Function_v3float Function %20
+        %x_6 = OpVariable %_ptr_Function_int Function %24
+       %x_38 = OpVariable %_ptr_Function_v3float Function %20
+       %x_51 = OpVariable %_ptr_Function_v3float Function %20
+       %x_54 = OpVariable %_ptr_Function_v3float Function %20
+   %x_40_phi = OpVariable %_ptr_Function_bool Function %16
+   %x_55_phi = OpVariable %_ptr_Function_v3float Function %20
+       %x_45 = OpVariable %_ptr_Function_bool Function %16
+   %x_45_phi = OpVariable %_ptr_Function_bool Function %16
+    %x_7_phi = OpVariable %_ptr_Function_int Function %24
+   %x_51_phi = OpVariable %_ptr_Function_v3float Function %20
+   %x_52_phi = OpVariable %_ptr_Function_bool Function %16
+               OpStore %x_36 %false
+               OpStore %x_GLF_color %32
+               OpStore %x_36 %false
+               OpStore %x_40_phi %false
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %42 = OpLoad %bool %x_40_phi
+               OpStore %x_6 %int_0
+               OpStore %x_45_phi %42
+               OpStore %x_7_phi %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %bool %x_45_phi
+               OpStore %x_45 %48
+         %49 = OpLoad %int %x_7_phi
+               OpStore %x_51_phi %50
+         %51 = OpLoad %bool %x_45
+               OpStore %x_52_phi %51
+         %52 = OpSLessThan %bool %49 %int_0
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %45
+         %53 = OpLabel
+               OpStore %x_36 %true
+               OpStore %x_37 %57
+               OpStore %x_51_phi %57
+               OpStore %x_52_phi %true
+               OpBranch %45
+         %46 = OpLabel
+               OpStore %x_45_phi %false
+               OpStore %x_7_phi %int_0
+               OpBranch %44
+         %45 = OpLabel
+         %58 = OpLoad %v3float %x_51_phi
+               OpStore %x_51 %58
+         %59 = OpLoad %bool %x_52_phi
+         %60 = OpLoad %v3float %x_51
+               OpStore %x_55_phi %60
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %61
+         %62 = OpLabel
+               OpBranch %34
+         %61 = OpLabel
+               OpStore %x_54 %50
+               OpStore %x_36 %true
+         %63 = OpLoad %v3float %x_54
+               OpStore %x_55_phi %63
+               OpBranch %34
+         %35 = OpLabel
+               OpStore %x_40_phi %false
+               OpBranch %33
+         %34 = OpLabel
+         %64 = OpLoad %v3float %x_55_phi
+               OpStore %x_38 %64
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %65
+%tint_symbol = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %72 = OpLabel
+         %73 = OpFunctionCall %void %main_1
+         %75 = OpLoad %v4float %x_GLF_color
+         %76 = OpCompositeConstruct %main_out %75
+         %74 = OpFunctionCall %void %tint_symbol_2 %76
+               OpReturn
+               OpFunctionEnd
+%GLF_live4drawShape_ = OpFunction %v3float None %77
+         %79 = OpLabel
+       %x_57 = OpVariable %_ptr_Function_bool Function %16
+       %x_58 = OpVariable %_ptr_Function_v3float Function %20
+          %i = OpVariable %_ptr_Function_int Function %24
+       %x_71 = OpVariable %_ptr_Function_v3float Function %20
+       %x_74 = OpVariable %_ptr_Function_v3float Function %20
+   %x_60_phi = OpVariable %_ptr_Function_bool Function %16
+   %x_75_phi = OpVariable %_ptr_Function_v3float Function %20
+       %x_65 = OpVariable %_ptr_Function_bool Function %16
+   %x_65_phi = OpVariable %_ptr_Function_bool Function %16
+    %x_8_phi = OpVariable %_ptr_Function_int Function %24
+   %x_71_phi = OpVariable %_ptr_Function_v3float Function %20
+   %x_72_phi = OpVariable %_ptr_Function_bool Function %16
+               OpStore %x_57 %false
+               OpStore %x_60_phi %false
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %96 = OpLoad %bool %x_60_phi
+               OpStore %i %int_0
+               OpStore %x_65_phi %96
+               OpStore %x_8_phi %int_0
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %101 = OpLoad %bool %x_65_phi
+               OpStore %x_65 %101
+        %102 = OpLoad %int %x_8_phi
+               OpStore %x_71_phi %50
+        %103 = OpLoad %bool %x_65
+               OpStore %x_72_phi %103
+        %104 = OpSLessThan %bool %102 %int_0
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+               OpBranch %105
+        %107 = OpLabel
+               OpBranch %98
+        %105 = OpLabel
+               OpStore %x_57 %true
+               OpStore %x_58 %57
+               OpStore %x_71_phi %57
+               OpStore %x_72_phi %true
+               OpBranch %98
+         %99 = OpLabel
+               OpStore %x_65_phi %false
+               OpStore %x_8_phi %int_0
+               OpBranch %97
+         %98 = OpLabel
+        %108 = OpLoad %v3float %x_71_phi
+               OpStore %x_71 %108
+        %109 = OpLoad %bool %x_72_phi
+        %110 = OpLoad %v3float %x_71
+               OpStore %x_75_phi %110
+               OpSelectionMerge %111 None
+               OpBranchConditional %109 %112 %111
+        %112 = OpLabel
+               OpBranch %88
+        %111 = OpLabel
+               OpStore %x_74 %50
+               OpStore %x_57 %true
+        %113 = OpLoad %v3float %x_74
+               OpStore %x_75_phi %113
+               OpBranch %88
+         %89 = OpLabel
+               OpStore %x_60_phi %false
+               OpBranch %87
+         %88 = OpLabel
+        %114 = OpLoad %v3float %x_75_phi
+               OpReturnValue %114
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..def4326
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl.expected.wgsl
@@ -0,0 +1,132 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool = false;
+  var x_37 : vec3<f32>;
+  var x_6 : i32;
+  var x_38 : vec3<f32>;
+  var x_51 : vec3<f32>;
+  var x_54 : vec3<f32>;
+  var x_40_phi : bool;
+  var x_55_phi : vec3<f32>;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_36 = false;
+  x_40_phi = false;
+  loop {
+    var x_45 : bool;
+    var x_45_phi : bool;
+    var x_7_phi : i32;
+    var x_51_phi : vec3<f32>;
+    var x_52_phi : bool;
+    let x_40 : bool = x_40_phi;
+    x_6 = 0;
+    x_45_phi = x_40;
+    x_7_phi = 0;
+    loop {
+      x_45 = x_45_phi;
+      let x_7 : i32 = x_7_phi;
+      x_51_phi = vec3<f32>(0.0, 0.0, 0.0);
+      x_52_phi = x_45;
+      if ((x_7 < 0)) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = vec3<f32>(1.0, 1.0, 1.0);
+      x_51_phi = vec3<f32>(1.0, 1.0, 1.0);
+      x_52_phi = true;
+      break;
+
+      continuing {
+        x_45_phi = false;
+        x_7_phi = 0;
+      }
+    }
+    x_51 = x_51_phi;
+    let x_52 : bool = x_52_phi;
+    x_55_phi = x_51;
+    if (x_52) {
+      break;
+    }
+    x_54 = vec3<f32>(0.0, 0.0, 0.0);
+    x_36 = true;
+    x_55_phi = x_54;
+    break;
+
+    continuing {
+      x_40_phi = false;
+    }
+  }
+  let x_55 : vec3<f32> = x_55_phi;
+  x_38 = x_55;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn GLF_live4drawShape_() -> vec3<f32> {
+  var x_57 : bool = false;
+  var x_58 : vec3<f32>;
+  var i : i32;
+  var x_71 : vec3<f32>;
+  var x_74 : vec3<f32>;
+  var x_60_phi : bool;
+  var x_75_phi : vec3<f32>;
+  x_60_phi = false;
+  loop {
+    var x_65 : bool;
+    var x_65_phi : bool;
+    var x_8_phi : i32;
+    var x_71_phi : vec3<f32>;
+    var x_72_phi : bool;
+    let x_60 : bool = x_60_phi;
+    i = 0;
+    x_65_phi = x_60;
+    x_8_phi = 0;
+    loop {
+      x_65 = x_65_phi;
+      let x_8 : i32 = x_8_phi;
+      x_71_phi = vec3<f32>(0.0, 0.0, 0.0);
+      x_72_phi = x_65;
+      if ((x_8 < 0)) {
+      } else {
+        break;
+      }
+      x_57 = true;
+      x_58 = vec3<f32>(1.0, 1.0, 1.0);
+      x_71_phi = vec3<f32>(1.0, 1.0, 1.0);
+      x_72_phi = true;
+      break;
+
+      continuing {
+        x_65_phi = false;
+        x_8_phi = 0;
+      }
+    }
+    x_71 = x_71_phi;
+    let x_72 : bool = x_72_phi;
+    x_75_phi = x_71;
+    if (x_72) {
+      break;
+    }
+    x_74 = vec3<f32>(0.0, 0.0, 0.0);
+    x_57 = true;
+    x_75_phi = x_74;
+    break;
+
+    continuing {
+      x_60_phi = false;
+    }
+  }
+  let x_75 : vec3<f32> = x_75_phi;
+  return x_75;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm
new file mode 100644
index 0000000..f81fa10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm
@@ -0,0 +1,124 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %color "color"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %7 RelaxedPrecision
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_1 = OpConstant %float 1
+         %26 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %false = OpConstantFalse %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %30 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %32 = OpUndef %v3float
+         %33 = OpUndef %bool
+         %34 = OpUndef %int
+       %main = OpFunction %void None %9
+         %35 = OpLabel
+         %36 = OpVariable %_ptr_Function_bool Function %false
+         %37 = OpVariable %_ptr_Function_bool Function
+          %7 = OpVariable %_ptr_Function_int Function
+         %38 = OpVariable %_ptr_Function_bool Function
+      %color = OpVariable %_ptr_Function_v3float Function
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpPhi %bool %33 %35 %40 %41
+         %42 = OpPhi %v3float %32 %35 %43 %41
+               OpLoopMerge %44 %41 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %47 = OpLoad %float %46
+         %48 = OpFOrdLessThan %bool %47 %float_0
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+               OpStore %color %26
+               OpBranch %49
+         %49 = OpLabel
+         %43 = OpPhi %v3float %42 %45 %26 %50
+               OpBranch %41
+         %41 = OpLabel
+               OpBranchConditional %false %39 %44
+         %44 = OpLabel
+         %51 = OpCompositeExtract %float %43 0
+         %52 = OpCompositeExtract %float %43 1
+         %53 = OpCompositeExtract %float %43 2
+         %54 = OpCompositeConstruct %v4float %51 %52 %53 %float_1
+               OpStore %36 %false
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpPhi %bool %40 %44 %33 %57
+         %58 = OpPhi %bool %false %44 %33 %57
+               OpLoopMerge %59 %57 None
+               OpBranch %60
+         %60 = OpLabel
+               OpStore %7 %int_0
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpPhi %bool %56 %60 %33 %63
+         %64 = OpPhi %bool %false %60 %33 %63
+         %65 = OpPhi %int %int_0 %60 %34 %63
+               OpLoopMerge %66 %63 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpSLessThan %bool %int_0 %int_1
+               OpBranchConditional %true %69 %66
+         %69 = OpLabel
+               OpStore %36 %true
+               OpStore %37 %true
+               OpBranch %66
+         %63 = OpLabel
+               OpBranch %61
+         %66 = OpLabel
+         %70 = OpPhi %bool %62 %67 %true %69
+         %71 = OpPhi %bool %false %67 %true %69
+               OpSelectionMerge %72 None
+               OpBranchConditional %true %59 %72
+         %72 = OpLabel
+               OpStore %36 %true
+               OpBranch %59
+         %57 = OpLabel
+               OpBranch %55
+         %59 = OpLabel
+               OpStore %38 %true
+         %73 = OpSelect %float %true %float_1 %float_0
+         %74 = OpCompositeConstruct %v4float %73 %73 %73 %73
+         %75 = OpFAdd %v4float %54 %74
+               OpStore %_GLF_color %75
+               OpStore %_GLF_color %30
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.hlsl
new file mode 100755
index 0000000..b1d646d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,113 @@
+SKIP: FAILED
+
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_36 = false;
+  bool x_37 = false;
+  int x_7 = 0;
+  bool x_38 = false;
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  bool x_40 = false;
+  float3 x_43 = float3(0.0f, 0.0f, 0.0f);
+  bool x_40_phi = false;
+  float3 x_42_phi = float3(0.0f, 0.0f, 0.0f);
+  bool x_56_phi = false;
+  bool x_58_phi = false;
+  x_40_phi = false;
+  x_42_phi = float3(0.0f, 0.0f, 0.0f);
+  while (true) {
+    float3 x_43_phi = float3(0.0f, 0.0f, 0.0f);
+    x_40 = x_40_phi;
+    const float3 x_42 = x_42_phi;
+    const float x_47 = asfloat(x_5[0].y);
+    x_43_phi = x_42;
+    if ((x_47 < 0.0f)) {
+      color = float3(1.0f, 1.0f, 1.0f);
+      x_43_phi = float3(1.0f, 1.0f, 1.0f);
+    }
+    x_43 = x_43_phi;
+    {
+      x_40_phi = x_40;
+      x_42_phi = x_43;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_36 = false;
+  x_56_phi = x_40;
+  x_58_phi = false;
+  while (true) {
+    bool x_62 = false;
+    bool x_62_phi = false;
+    bool x_64_phi = false;
+    int x_65_phi = 0;
+    bool x_70_phi = false;
+    bool x_71_phi = false;
+    const bool x_56 = x_56_phi;
+    const bool x_58 = x_58_phi;
+    x_7 = 0;
+    x_62_phi = x_56;
+    x_64_phi = false;
+    x_65_phi = 0;
+    while (true) {
+      x_62 = x_62_phi;
+      const bool x_64 = x_64_phi;
+      const int x_65 = x_65_phi;
+      const bool x_68 = (0 < 1);
+      x_70_phi = x_62;
+      x_71_phi = false;
+      if (true) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = true;
+      x_70_phi = true;
+      x_71_phi = true;
+      break;
+      {
+        x_62_phi = false;
+        x_64_phi = false;
+        x_65_phi = 0;
+      }
+    }
+    const bool x_70 = x_70_phi;
+    const bool x_71 = x_71_phi;
+    if (true) {
+      break;
+    }
+    x_36 = true;
+    break;
+    {
+      x_56_phi = false;
+      x_58_phi = false;
+    }
+  }
+  x_38 = true;
+  const float x_73 = (true ? 1.0f : 0.0f);
+  x_GLF_color = (float4(x_43.x, x_43.y, x_43.z, 1.0f) + float4(x_73, x_73, x_73, x_73));
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+Internal compiler error: access violation. Attempted to read from address 0x0000000000000048
+
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..9946472
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_36 = false;
+  bool x_37 = false;
+  int x_7 = 0;
+  bool x_38 = false;
+  float3 color = 0.0f;
+  bool x_40 = false;
+  float3 x_43 = 0.0f;
+  bool x_40_phi = false;
+  float3 x_42_phi = 0.0f;
+  bool x_56_phi = false;
+  bool x_58_phi = false;
+  x_40_phi = false;
+  x_42_phi = float3(0.0f, 0.0f, 0.0f);
+  while (true) {
+    float3 x_43_phi = 0.0f;
+    x_40 = x_40_phi;
+    float3 const x_42 = x_42_phi;
+    float const x_47 = x_5.injectionSwitch.y;
+    x_43_phi = x_42;
+    if ((x_47 < 0.0f)) {
+      color = float3(1.0f, 1.0f, 1.0f);
+      x_43_phi = float3(1.0f, 1.0f, 1.0f);
+    }
+    x_43 = x_43_phi;
+    {
+      x_40_phi = x_40;
+      x_42_phi = x_43;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_36 = false;
+  x_56_phi = x_40;
+  x_58_phi = false;
+  while (true) {
+    bool x_62 = false;
+    bool x_62_phi = false;
+    bool x_64_phi = false;
+    int x_65_phi = 0;
+    bool x_70_phi = false;
+    bool x_71_phi = false;
+    bool const x_56 = x_56_phi;
+    bool const x_58 = x_58_phi;
+    x_7 = 0;
+    x_62_phi = x_56;
+    x_64_phi = false;
+    x_65_phi = 0;
+    while (true) {
+      x_62 = x_62_phi;
+      bool const x_64 = x_64_phi;
+      int const x_65 = x_65_phi;
+      bool const x_68 = (0 < 1);
+      x_70_phi = x_62;
+      x_71_phi = false;
+      if (true) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = true;
+      x_70_phi = true;
+      x_71_phi = true;
+      break;
+      {
+        x_62_phi = false;
+        x_64_phi = false;
+        x_65_phi = 0;
+      }
+    }
+    bool const x_70 = x_70_phi;
+    bool const x_71 = x_71_phi;
+    if (true) {
+      break;
+    }
+    x_36 = true;
+    break;
+    {
+      x_56_phi = false;
+      x_58_phi = false;
+    }
+  }
+  x_38 = true;
+  float const x_73 = select(0.0f, 1.0f, true);
+  *(tint_symbol_4) = (float4(x_43.x, x_43.y, x_43.z, 1.0f) + float4(x_73, x_73, x_73, x_73));
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..093acdc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,238 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 120
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_37 "x_37"
+               OpName %x_7 "x_7"
+               OpName %x_38 "x_38"
+               OpName %color "color"
+               OpName %x_40 "x_40"
+               OpName %x_43 "x_43"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_43_phi "x_43_phi"
+               OpName %x_62 "x_62"
+               OpName %x_62_phi "x_62_phi"
+               OpName %x_64_phi "x_64_phi"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_71_phi "x_71_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %20 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %30 = OpConstantNull %v3float
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %56 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_2 = OpConstant %uint 2
+        %107 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_bool Function %20
+       %x_37 = OpVariable %_ptr_Function_bool Function %20
+        %x_7 = OpVariable %_ptr_Function_int Function %25
+       %x_38 = OpVariable %_ptr_Function_bool Function %20
+      %color = OpVariable %_ptr_Function_v3float Function %30
+       %x_40 = OpVariable %_ptr_Function_bool Function %20
+       %x_43 = OpVariable %_ptr_Function_v3float Function %30
+   %x_40_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_42_phi = OpVariable %_ptr_Function_v3float Function %30
+   %x_56_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_58_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_43_phi = OpVariable %_ptr_Function_v3float Function %30
+       %x_62 = OpVariable %_ptr_Function_bool Function %20
+   %x_62_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_64_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_65_phi = OpVariable %_ptr_Function_int Function %25
+   %x_70_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_71_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_36 %false
+               OpStore %x_40_phi %false
+               OpStore %x_42_phi %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %44 = OpLoad %bool %x_40_phi
+               OpStore %x_40 %44
+         %45 = OpLoad %v3float %x_42_phi
+         %50 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %51 = OpLoad %float %50
+               OpStore %x_43_phi %45
+         %52 = OpFOrdLessThan %bool %51 %float_0
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpStore %color %56
+               OpStore %x_43_phi %56
+               OpBranch %53
+         %53 = OpLabel
+         %57 = OpLoad %v3float %x_43_phi
+               OpStore %x_43 %57
+               OpBranch %41
+         %41 = OpLabel
+         %58 = OpLoad %bool %x_40
+               OpStore %x_40_phi %58
+         %59 = OpLoad %v3float %x_43
+               OpStore %x_42_phi %59
+               OpSelectionMerge %60 None
+               OpBranchConditional %false %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %40
+         %60 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+               OpStore %x_36 %false
+         %63 = OpLoad %bool %x_40
+               OpStore %x_56_phi %63
+               OpStore %x_58_phi %false
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %74 = OpLoad %bool %x_56_phi
+         %75 = OpLoad %bool %x_58_phi
+               OpStore %x_7 %int_0
+               OpStore %x_62_phi %74
+               OpStore %x_64_phi %false
+               OpStore %x_65_phi %int_0
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+         %81 = OpLoad %bool %x_62_phi
+               OpStore %x_62 %81
+         %82 = OpLoad %bool %x_64_phi
+         %83 = OpLoad %int %x_65_phi
+         %85 = OpSLessThan %bool %int_0 %int_1
+         %86 = OpLoad %bool %x_62
+               OpStore %x_70_phi %86
+               OpStore %x_71_phi %false
+               OpSelectionMerge %88 None
+               OpBranchConditional %true %89 %90
+         %89 = OpLabel
+               OpBranch %88
+         %90 = OpLabel
+               OpBranch %78
+         %88 = OpLabel
+               OpStore %x_36 %true
+               OpStore %x_37 %true
+               OpStore %x_70_phi %true
+               OpStore %x_71_phi %true
+               OpBranch %78
+         %79 = OpLabel
+               OpStore %x_62_phi %false
+               OpStore %x_64_phi %false
+               OpStore %x_65_phi %int_0
+               OpBranch %77
+         %78 = OpLabel
+         %91 = OpLoad %bool %x_70_phi
+         %92 = OpLoad %bool %x_71_phi
+               OpSelectionMerge %93 None
+               OpBranchConditional %true %94 %93
+         %94 = OpLabel
+               OpBranch %65
+         %93 = OpLabel
+               OpStore %x_36 %true
+               OpBranch %65
+         %66 = OpLabel
+               OpStore %x_56_phi %false
+               OpStore %x_58_phi %false
+               OpBranch %64
+         %65 = OpLabel
+               OpStore %x_38 %true
+         %95 = OpSelect %float %true %float_1 %float_0
+         %97 = OpAccessChain %_ptr_Function_float %x_43 %uint_0
+         %98 = OpLoad %float %97
+         %99 = OpAccessChain %_ptr_Function_float %x_43 %uint_1
+        %100 = OpLoad %float %99
+        %102 = OpAccessChain %_ptr_Function_float %x_43 %uint_2
+        %103 = OpLoad %float %102
+        %104 = OpCompositeConstruct %v4float %98 %100 %103 %float_1
+        %105 = OpCompositeConstruct %v4float %95 %95 %95 %95
+        %106 = OpFAdd %v4float %104 %105
+               OpStore %x_GLF_color %106
+               OpStore %x_GLF_color %107
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %108
+%tint_symbol = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %115 = OpLabel
+        %116 = OpFunctionCall %void %main_1
+        %118 = OpLoad %v4float %x_GLF_color
+        %119 = OpCompositeConstruct %main_out %118
+        %117 = OpFunctionCall %void %tint_symbol_2 %119
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 41[%41] is not post dominated by the back-edge block 60[%60]
+  %60 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b1bfcca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,113 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool = false;
+  var x_37 : bool;
+  var x_7 : i32;
+  var x_38 : bool;
+  var color : vec3<f32>;
+  var x_40 : bool;
+  var x_43 : vec3<f32>;
+  var x_40_phi : bool;
+  var x_42_phi : vec3<f32>;
+  var x_56_phi : bool;
+  var x_58_phi : bool;
+  x_40_phi = false;
+  x_42_phi = vec3<f32>(0.0, 0.0, 0.0);
+  loop {
+    var x_43_phi : vec3<f32>;
+    x_40 = x_40_phi;
+    let x_42 : vec3<f32> = x_42_phi;
+    let x_47 : f32 = x_5.injectionSwitch.y;
+    x_43_phi = x_42;
+    if ((x_47 < 0.0)) {
+      color = vec3<f32>(1.0, 1.0, 1.0);
+      x_43_phi = vec3<f32>(1.0, 1.0, 1.0);
+    }
+    x_43 = x_43_phi;
+
+    continuing {
+      x_40_phi = x_40;
+      x_42_phi = x_43;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_36 = false;
+  x_56_phi = x_40;
+  x_58_phi = false;
+  loop {
+    var x_62 : bool;
+    var x_62_phi : bool;
+    var x_64_phi : bool;
+    var x_65_phi : i32;
+    var x_70_phi : bool;
+    var x_71_phi : bool;
+    let x_56 : bool = x_56_phi;
+    let x_58 : bool = x_58_phi;
+    x_7 = 0;
+    x_62_phi = x_56;
+    x_64_phi = false;
+    x_65_phi = 0;
+    loop {
+      x_62 = x_62_phi;
+      let x_64 : bool = x_64_phi;
+      let x_65 : i32 = x_65_phi;
+      let x_68 : bool = (0 < 1);
+      x_70_phi = x_62;
+      x_71_phi = false;
+      if (true) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = true;
+      x_70_phi = true;
+      x_71_phi = true;
+      break;
+
+      continuing {
+        x_62_phi = false;
+        x_64_phi = false;
+        x_65_phi = 0;
+      }
+    }
+    let x_70 : bool = x_70_phi;
+    let x_71 : bool = x_71_phi;
+    if (true) {
+      break;
+    }
+    x_36 = true;
+    break;
+
+    continuing {
+      x_56_phi = false;
+      x_58_phi = false;
+    }
+  }
+  x_38 = true;
+  let x_73 : f32 = select(0.0, 1.0, true);
+  x_GLF_color = (vec4<f32>(x_43.x, x_43.y, x_43.z, 1.0) + vec4<f32>(x_73, x_73, x_73, x_73));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
new file mode 100644
index 0000000..b1bfcca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
@@ -0,0 +1,113 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool = false;
+  var x_37 : bool;
+  var x_7 : i32;
+  var x_38 : bool;
+  var color : vec3<f32>;
+  var x_40 : bool;
+  var x_43 : vec3<f32>;
+  var x_40_phi : bool;
+  var x_42_phi : vec3<f32>;
+  var x_56_phi : bool;
+  var x_58_phi : bool;
+  x_40_phi = false;
+  x_42_phi = vec3<f32>(0.0, 0.0, 0.0);
+  loop {
+    var x_43_phi : vec3<f32>;
+    x_40 = x_40_phi;
+    let x_42 : vec3<f32> = x_42_phi;
+    let x_47 : f32 = x_5.injectionSwitch.y;
+    x_43_phi = x_42;
+    if ((x_47 < 0.0)) {
+      color = vec3<f32>(1.0, 1.0, 1.0);
+      x_43_phi = vec3<f32>(1.0, 1.0, 1.0);
+    }
+    x_43 = x_43_phi;
+
+    continuing {
+      x_40_phi = x_40;
+      x_42_phi = x_43;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_36 = false;
+  x_56_phi = x_40;
+  x_58_phi = false;
+  loop {
+    var x_62 : bool;
+    var x_62_phi : bool;
+    var x_64_phi : bool;
+    var x_65_phi : i32;
+    var x_70_phi : bool;
+    var x_71_phi : bool;
+    let x_56 : bool = x_56_phi;
+    let x_58 : bool = x_58_phi;
+    x_7 = 0;
+    x_62_phi = x_56;
+    x_64_phi = false;
+    x_65_phi = 0;
+    loop {
+      x_62 = x_62_phi;
+      let x_64 : bool = x_64_phi;
+      let x_65 : i32 = x_65_phi;
+      let x_68 : bool = (0 < 1);
+      x_70_phi = x_62;
+      x_71_phi = false;
+      if (true) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = true;
+      x_70_phi = true;
+      x_71_phi = true;
+      break;
+
+      continuing {
+        x_62_phi = false;
+        x_64_phi = false;
+        x_65_phi = 0;
+      }
+    }
+    let x_70 : bool = x_70_phi;
+    let x_71 : bool = x_71_phi;
+    if (true) {
+      break;
+    }
+    x_36 = true;
+    break;
+
+    continuing {
+      x_56_phi = false;
+      x_58_phi = false;
+    }
+  }
+  x_38 = true;
+  let x_73 : f32 = select(0.0, 1.0, true);
+  x_GLF_color = (vec4<f32>(x_43.x, x_43.y, x_43.z, 1.0) + vec4<f32>(x_73, x_73, x_73, x_73));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.hlsl
new file mode 100755
index 0000000..b1d646d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,113 @@
+SKIP: FAILED
+
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_36 = false;
+  bool x_37 = false;
+  int x_7 = 0;
+  bool x_38 = false;
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  bool x_40 = false;
+  float3 x_43 = float3(0.0f, 0.0f, 0.0f);
+  bool x_40_phi = false;
+  float3 x_42_phi = float3(0.0f, 0.0f, 0.0f);
+  bool x_56_phi = false;
+  bool x_58_phi = false;
+  x_40_phi = false;
+  x_42_phi = float3(0.0f, 0.0f, 0.0f);
+  while (true) {
+    float3 x_43_phi = float3(0.0f, 0.0f, 0.0f);
+    x_40 = x_40_phi;
+    const float3 x_42 = x_42_phi;
+    const float x_47 = asfloat(x_5[0].y);
+    x_43_phi = x_42;
+    if ((x_47 < 0.0f)) {
+      color = float3(1.0f, 1.0f, 1.0f);
+      x_43_phi = float3(1.0f, 1.0f, 1.0f);
+    }
+    x_43 = x_43_phi;
+    {
+      x_40_phi = x_40;
+      x_42_phi = x_43;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_36 = false;
+  x_56_phi = x_40;
+  x_58_phi = false;
+  while (true) {
+    bool x_62 = false;
+    bool x_62_phi = false;
+    bool x_64_phi = false;
+    int x_65_phi = 0;
+    bool x_70_phi = false;
+    bool x_71_phi = false;
+    const bool x_56 = x_56_phi;
+    const bool x_58 = x_58_phi;
+    x_7 = 0;
+    x_62_phi = x_56;
+    x_64_phi = false;
+    x_65_phi = 0;
+    while (true) {
+      x_62 = x_62_phi;
+      const bool x_64 = x_64_phi;
+      const int x_65 = x_65_phi;
+      const bool x_68 = (0 < 1);
+      x_70_phi = x_62;
+      x_71_phi = false;
+      if (true) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = true;
+      x_70_phi = true;
+      x_71_phi = true;
+      break;
+      {
+        x_62_phi = false;
+        x_64_phi = false;
+        x_65_phi = 0;
+      }
+    }
+    const bool x_70 = x_70_phi;
+    const bool x_71 = x_71_phi;
+    if (true) {
+      break;
+    }
+    x_36 = true;
+    break;
+    {
+      x_56_phi = false;
+      x_58_phi = false;
+    }
+  }
+  x_38 = true;
+  const float x_73 = (true ? 1.0f : 0.0f);
+  x_GLF_color = (float4(x_43.x, x_43.y, x_43.z, 1.0f) + float4(x_73, x_73, x_73, x_73));
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+Internal compiler error: access violation. Attempted to read from address 0x0000000000000048
+
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..9946472
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  bool x_36 = false;
+  bool x_37 = false;
+  int x_7 = 0;
+  bool x_38 = false;
+  float3 color = 0.0f;
+  bool x_40 = false;
+  float3 x_43 = 0.0f;
+  bool x_40_phi = false;
+  float3 x_42_phi = 0.0f;
+  bool x_56_phi = false;
+  bool x_58_phi = false;
+  x_40_phi = false;
+  x_42_phi = float3(0.0f, 0.0f, 0.0f);
+  while (true) {
+    float3 x_43_phi = 0.0f;
+    x_40 = x_40_phi;
+    float3 const x_42 = x_42_phi;
+    float const x_47 = x_5.injectionSwitch.y;
+    x_43_phi = x_42;
+    if ((x_47 < 0.0f)) {
+      color = float3(1.0f, 1.0f, 1.0f);
+      x_43_phi = float3(1.0f, 1.0f, 1.0f);
+    }
+    x_43 = x_43_phi;
+    {
+      x_40_phi = x_40;
+      x_42_phi = x_43;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_36 = false;
+  x_56_phi = x_40;
+  x_58_phi = false;
+  while (true) {
+    bool x_62 = false;
+    bool x_62_phi = false;
+    bool x_64_phi = false;
+    int x_65_phi = 0;
+    bool x_70_phi = false;
+    bool x_71_phi = false;
+    bool const x_56 = x_56_phi;
+    bool const x_58 = x_58_phi;
+    x_7 = 0;
+    x_62_phi = x_56;
+    x_64_phi = false;
+    x_65_phi = 0;
+    while (true) {
+      x_62 = x_62_phi;
+      bool const x_64 = x_64_phi;
+      int const x_65 = x_65_phi;
+      bool const x_68 = (0 < 1);
+      x_70_phi = x_62;
+      x_71_phi = false;
+      if (true) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = true;
+      x_70_phi = true;
+      x_71_phi = true;
+      break;
+      {
+        x_62_phi = false;
+        x_64_phi = false;
+        x_65_phi = 0;
+      }
+    }
+    bool const x_70 = x_70_phi;
+    bool const x_71 = x_71_phi;
+    if (true) {
+      break;
+    }
+    x_36 = true;
+    break;
+    {
+      x_56_phi = false;
+      x_58_phi = false;
+    }
+  }
+  x_38 = true;
+  float const x_73 = select(0.0f, 1.0f, true);
+  *(tint_symbol_4) = (float4(x_43.x, x_43.y, x_43.z, 1.0f) + float4(x_73, x_73, x_73, x_73));
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..093acdc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,238 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 120
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_36 "x_36"
+               OpName %x_37 "x_37"
+               OpName %x_7 "x_7"
+               OpName %x_38 "x_38"
+               OpName %color "color"
+               OpName %x_40 "x_40"
+               OpName %x_43 "x_43"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_43_phi "x_43_phi"
+               OpName %x_62 "x_62"
+               OpName %x_62_phi "x_62_phi"
+               OpName %x_64_phi "x_64_phi"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_71_phi "x_71_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %20 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpConstantNull %int
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %30 = OpConstantNull %v3float
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+         %56 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_2 = OpConstant %uint 2
+        %107 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_36 = OpVariable %_ptr_Function_bool Function %20
+       %x_37 = OpVariable %_ptr_Function_bool Function %20
+        %x_7 = OpVariable %_ptr_Function_int Function %25
+       %x_38 = OpVariable %_ptr_Function_bool Function %20
+      %color = OpVariable %_ptr_Function_v3float Function %30
+       %x_40 = OpVariable %_ptr_Function_bool Function %20
+       %x_43 = OpVariable %_ptr_Function_v3float Function %30
+   %x_40_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_42_phi = OpVariable %_ptr_Function_v3float Function %30
+   %x_56_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_58_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_43_phi = OpVariable %_ptr_Function_v3float Function %30
+       %x_62 = OpVariable %_ptr_Function_bool Function %20
+   %x_62_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_64_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_65_phi = OpVariable %_ptr_Function_int Function %25
+   %x_70_phi = OpVariable %_ptr_Function_bool Function %20
+   %x_71_phi = OpVariable %_ptr_Function_bool Function %20
+               OpStore %x_36 %false
+               OpStore %x_40_phi %false
+               OpStore %x_42_phi %38
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+         %44 = OpLoad %bool %x_40_phi
+               OpStore %x_40 %44
+         %45 = OpLoad %v3float %x_42_phi
+         %50 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %51 = OpLoad %float %50
+               OpStore %x_43_phi %45
+         %52 = OpFOrdLessThan %bool %51 %float_0
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpStore %color %56
+               OpStore %x_43_phi %56
+               OpBranch %53
+         %53 = OpLabel
+         %57 = OpLoad %v3float %x_43_phi
+               OpStore %x_43 %57
+               OpBranch %41
+         %41 = OpLabel
+         %58 = OpLoad %bool %x_40
+               OpStore %x_40_phi %58
+         %59 = OpLoad %v3float %x_43
+               OpStore %x_42_phi %59
+               OpSelectionMerge %60 None
+               OpBranchConditional %false %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %40
+         %60 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+               OpStore %x_36 %false
+         %63 = OpLoad %bool %x_40
+               OpStore %x_56_phi %63
+               OpStore %x_58_phi %false
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %74 = OpLoad %bool %x_56_phi
+         %75 = OpLoad %bool %x_58_phi
+               OpStore %x_7 %int_0
+               OpStore %x_62_phi %74
+               OpStore %x_64_phi %false
+               OpStore %x_65_phi %int_0
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+         %81 = OpLoad %bool %x_62_phi
+               OpStore %x_62 %81
+         %82 = OpLoad %bool %x_64_phi
+         %83 = OpLoad %int %x_65_phi
+         %85 = OpSLessThan %bool %int_0 %int_1
+         %86 = OpLoad %bool %x_62
+               OpStore %x_70_phi %86
+               OpStore %x_71_phi %false
+               OpSelectionMerge %88 None
+               OpBranchConditional %true %89 %90
+         %89 = OpLabel
+               OpBranch %88
+         %90 = OpLabel
+               OpBranch %78
+         %88 = OpLabel
+               OpStore %x_36 %true
+               OpStore %x_37 %true
+               OpStore %x_70_phi %true
+               OpStore %x_71_phi %true
+               OpBranch %78
+         %79 = OpLabel
+               OpStore %x_62_phi %false
+               OpStore %x_64_phi %false
+               OpStore %x_65_phi %int_0
+               OpBranch %77
+         %78 = OpLabel
+         %91 = OpLoad %bool %x_70_phi
+         %92 = OpLoad %bool %x_71_phi
+               OpSelectionMerge %93 None
+               OpBranchConditional %true %94 %93
+         %94 = OpLabel
+               OpBranch %65
+         %93 = OpLabel
+               OpStore %x_36 %true
+               OpBranch %65
+         %66 = OpLabel
+               OpStore %x_56_phi %false
+               OpStore %x_58_phi %false
+               OpBranch %64
+         %65 = OpLabel
+               OpStore %x_38 %true
+         %95 = OpSelect %float %true %float_1 %float_0
+         %97 = OpAccessChain %_ptr_Function_float %x_43 %uint_0
+         %98 = OpLoad %float %97
+         %99 = OpAccessChain %_ptr_Function_float %x_43 %uint_1
+        %100 = OpLoad %float %99
+        %102 = OpAccessChain %_ptr_Function_float %x_43 %uint_2
+        %103 = OpLoad %float %102
+        %104 = OpCompositeConstruct %v4float %98 %100 %103 %float_1
+        %105 = OpCompositeConstruct %v4float %95 %95 %95 %95
+        %106 = OpFAdd %v4float %104 %105
+               OpStore %x_GLF_color %106
+               OpStore %x_GLF_color %107
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %108
+%tint_symbol = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %115 = OpLabel
+        %116 = OpFunctionCall %void %main_1
+        %118 = OpLoad %v4float %x_GLF_color
+        %119 = OpCompositeConstruct %main_out %118
+        %117 = OpFunctionCall %void %tint_symbol_2 %119
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 41[%41] is not post dominated by the back-edge block 60[%60]
+  %60 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b1bfcca
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,113 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_36 : bool = false;
+  var x_37 : bool;
+  var x_7 : i32;
+  var x_38 : bool;
+  var color : vec3<f32>;
+  var x_40 : bool;
+  var x_43 : vec3<f32>;
+  var x_40_phi : bool;
+  var x_42_phi : vec3<f32>;
+  var x_56_phi : bool;
+  var x_58_phi : bool;
+  x_40_phi = false;
+  x_42_phi = vec3<f32>(0.0, 0.0, 0.0);
+  loop {
+    var x_43_phi : vec3<f32>;
+    x_40 = x_40_phi;
+    let x_42 : vec3<f32> = x_42_phi;
+    let x_47 : f32 = x_5.injectionSwitch.y;
+    x_43_phi = x_42;
+    if ((x_47 < 0.0)) {
+      color = vec3<f32>(1.0, 1.0, 1.0);
+      x_43_phi = vec3<f32>(1.0, 1.0, 1.0);
+    }
+    x_43 = x_43_phi;
+
+    continuing {
+      x_40_phi = x_40;
+      x_42_phi = x_43;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_36 = false;
+  x_56_phi = x_40;
+  x_58_phi = false;
+  loop {
+    var x_62 : bool;
+    var x_62_phi : bool;
+    var x_64_phi : bool;
+    var x_65_phi : i32;
+    var x_70_phi : bool;
+    var x_71_phi : bool;
+    let x_56 : bool = x_56_phi;
+    let x_58 : bool = x_58_phi;
+    x_7 = 0;
+    x_62_phi = x_56;
+    x_64_phi = false;
+    x_65_phi = 0;
+    loop {
+      x_62 = x_62_phi;
+      let x_64 : bool = x_64_phi;
+      let x_65 : i32 = x_65_phi;
+      let x_68 : bool = (0 < 1);
+      x_70_phi = x_62;
+      x_71_phi = false;
+      if (true) {
+      } else {
+        break;
+      }
+      x_36 = true;
+      x_37 = true;
+      x_70_phi = true;
+      x_71_phi = true;
+      break;
+
+      continuing {
+        x_62_phi = false;
+        x_64_phi = false;
+        x_65_phi = 0;
+      }
+    }
+    let x_70 : bool = x_70_phi;
+    let x_71 : bool = x_71_phi;
+    if (true) {
+      break;
+    }
+    x_36 = true;
+    break;
+
+    continuing {
+      x_56_phi = false;
+      x_58_phi = false;
+    }
+  }
+  x_38 = true;
+  let x_73 : f32 = select(0.0, 1.0, true);
+  x_GLF_color = (vec4<f32>(x_43.x, x_43.y, x_43.z, 1.0) + vec4<f32>(x_73, x_73, x_73, x_73));
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm
new file mode 100644
index 0000000..f1e613f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm
@@ -0,0 +1,119 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_0 = OpConstant %int 0
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %8
+         %29 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpExtInst %float %1 FClamp %32 %float_0 %float_1
+         %34 = OpConvertFToS %int %33
+               OpStore %_GLF_color %18
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %38 = OpPhi %bool %false %30 %39 %40
+         %41 = OpPhi %v4float %18 %30 %42 %40
+               OpLoopMerge %43 %40 None
+               OpBranch %44
+         %44 = OpLabel
+         %42 = OpPhi %v4float %41 %37 %45 %46
+         %47 = OpPhi %int %int_0 %37 %48 %46
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %50 = OpLoad %float %49
+         %51 = OpConvertFToS %int %50
+         %52 = OpIAdd %int %34 %51
+         %53 = OpSLessThan %bool %47 %52
+               OpLoopMerge %54 %46 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+         %56 = OpSLessThan %bool %34 %int_0
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+               OpBranch %54
+         %59 = OpLabel
+         %60 = OpIEqual %bool %34 %int_1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+         %64 = OpConvertSToF %float %34
+         %65 = OpCompositeConstruct %v2float %64 %64
+         %66 = OpVectorShuffle %v4float %42 %65 4 1 2 5
+               OpBranch %61
+         %63 = OpLabel
+         %67 = OpIAdd %int %34 %int_1
+         %68 = OpConvertSToF %float %67
+         %69 = OpCompositeConstruct %v2float %68 %68
+         %70 = OpVectorShuffle %v4float %42 %69 4 1 2 5
+               OpBranch %61
+         %61 = OpLabel
+         %45 = OpPhi %v4float %66 %62 %70 %63
+               OpBranch %57
+         %57 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %48 = OpIAdd %int %47 %int_1
+               OpBranch %44
+         %54 = OpLabel
+         %39 = OpPhi %bool %38 %44 %true %58
+               OpSelectionMerge %71 None
+               OpBranchConditional %39 %43 %71
+         %71 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %72 = OpSLessThan %bool %34 %int_0
+               OpBranchConditional %72 %37 %43
+         %43 = OpLabel
+               OpSelectionMerge %73 None
+               OpBranchConditional %39 %35 %73
+         %73 = OpLabel
+               OpStore %_GLF_color %42
+               OpBranch %35
+         %36 = OpLabel
+               OpBranch %30
+         %35 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..a6f8c4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.hlsl
@@ -0,0 +1,101 @@
+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);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  while (true) {
+    float4 x_42 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    bool x_39 = false;
+    bool x_38_phi = false;
+    float4 x_41_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    const float x_32 = gl_FragCoord.x;
+    const int x_34 = int(clamp(x_32, 0.0f, 1.0f));
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_38_phi = false;
+    x_41_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    while (true) {
+      float4 x_42_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      int x_47_phi = 0;
+      bool x_39_phi = false;
+      const bool x_38 = x_38_phi;
+      x_42_phi = x_41_phi;
+      x_47_phi = 0;
+      while (true) {
+        float4 x_45 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        int x_48 = 0;
+        x_42 = x_42_phi;
+        const int x_47 = x_47_phi;
+        const float x_50 = asfloat(x_6[0].y);
+        x_39_phi = x_38;
+        if ((x_47 < (x_34 + int(x_50)))) {
+        } else {
+          break;
+        }
+        float4 x_66 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        float4 x_70 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        float4 x_45_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        if ((x_34 < 0)) {
+          x_39_phi = true;
+          break;
+        } else {
+          if ((x_34 == 1)) {
+            const float x_64 = float(x_34);
+            const float2 x_65 = float2(x_64, x_64);
+            x_66 = float4(x_65.x, x_42.y, x_42.z, x_65.y);
+            x_45_phi = x_66;
+          } else {
+            const float x_68 = float((x_34 + 1));
+            const float2 x_69 = float2(x_68, x_68);
+            x_70 = float4(x_69.x, x_42.y, x_42.z, x_69.y);
+            x_45_phi = x_70;
+          }
+          x_45 = x_45_phi;
+        }
+        {
+          x_48 = (x_47 + 1);
+          x_42_phi = x_45;
+          x_47_phi = x_48;
+        }
+      }
+      x_39 = x_39_phi;
+      if (x_39) {
+        break;
+      }
+      {
+        x_38_phi = x_39;
+        x_41_phi = x_42;
+        if ((x_34 < 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_39) {
+      break;
+    }
+    x_GLF_color = x_42;
+    break;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.msl
new file mode 100644
index 0000000..9694480
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  while (true) {
+    float4 x_42 = 0.0f;
+    bool x_39 = false;
+    bool x_38_phi = false;
+    float4 x_41_phi = 0.0f;
+    float const x_32 = (*(tint_symbol_5)).x;
+    int const x_34 = int(clamp(x_32, 0.0f, 1.0f));
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_38_phi = false;
+    x_41_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    while (true) {
+      float4 x_42_phi = 0.0f;
+      int x_47_phi = 0;
+      bool x_39_phi = false;
+      bool const x_38 = x_38_phi;
+      float4 const x_41 = x_41_phi;
+      x_42_phi = x_41;
+      x_47_phi = 0;
+      while (true) {
+        float4 x_45 = 0.0f;
+        int x_48 = 0;
+        x_42 = x_42_phi;
+        int const x_47 = x_47_phi;
+        float const x_50 = x_6.injectionSwitch.y;
+        x_39_phi = x_38;
+        if ((x_47 < (x_34 + int(x_50)))) {
+        } else {
+          break;
+        }
+        float4 x_66 = 0.0f;
+        float4 x_70 = 0.0f;
+        float4 x_45_phi = 0.0f;
+        if ((x_34 < 0)) {
+          x_39_phi = true;
+          break;
+        } else {
+          if ((x_34 == 1)) {
+            float const x_64 = float(x_34);
+            float2 const x_65 = float2(x_64, x_64);
+            x_66 = float4(x_65.x, x_42.y, x_42.z, x_65.y);
+            x_45_phi = x_66;
+          } else {
+            float const x_68 = float((x_34 + 1));
+            float2 const x_69 = float2(x_68, x_68);
+            x_70 = float4(x_69.x, x_42.y, x_42.z, x_69.y);
+            x_45_phi = x_70;
+          }
+          x_45 = x_45_phi;
+        }
+        {
+          x_48 = (x_47 + 1);
+          x_42_phi = x_45;
+          x_47_phi = x_48;
+        }
+      }
+      x_39 = x_39_phi;
+      if (x_39) {
+        break;
+      }
+      {
+        x_38_phi = x_39;
+        x_41_phi = x_42;
+        if ((x_34 < 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_39) {
+      break;
+    }
+    *(tint_symbol_6) = x_42;
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..ef40c26
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.spvasm
@@ -0,0 +1,252 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 141
+; Schema: 0
+               OpCapability Shader
+         %39 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_42 "x_42"
+               OpName %x_39 "x_39"
+               OpName %x_38_phi "x_38_phi"
+               OpName %x_41_phi "x_41_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %x_47_phi "x_47_phi"
+               OpName %x_39_phi "x_39_phi"
+               OpName %x_45 "x_45"
+               OpName %x_48 "x_48"
+               OpName %x_66 "x_66"
+               OpName %x_70 "x_70"
+               OpName %x_45_phi "x_45_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %28 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+        %int = OpTypeInt 32 1
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %51 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+        %128 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_42 = OpVariable %_ptr_Function_v4float Function %5
+       %x_39 = OpVariable %_ptr_Function_bool Function %28
+   %x_38_phi = OpVariable %_ptr_Function_bool Function %28
+   %x_41_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_42_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_47_phi = OpVariable %_ptr_Function_int Function %51
+   %x_39_phi = OpVariable %_ptr_Function_bool Function %28
+       %x_45 = OpVariable %_ptr_Function_v4float Function %5
+       %x_48 = OpVariable %_ptr_Function_int Function %51
+       %x_66 = OpVariable %_ptr_Function_v4float Function %5
+       %x_70 = OpVariable %_ptr_Function_v4float Function %5
+   %x_45_phi = OpVariable %_ptr_Function_v4float Function %5
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %34 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %35 = OpLoad %float %34
+         %38 = OpExtInst %float %39 NClamp %35 %float_0 %float_1
+         %36 = OpConvertFToS %int %38
+               OpStore %x_GLF_color %42
+               OpStore %x_38_phi %false
+               OpStore %x_41_phi %42
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %53 = OpLoad %bool %x_38_phi
+         %54 = OpLoad %v4float %x_41_phi
+               OpStore %x_42_phi %54
+               OpStore %x_47_phi %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %62 = OpLoad %v4float %x_42_phi
+               OpStore %x_42 %62
+         %63 = OpLoad %int %x_47_phi
+         %66 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %67 = OpLoad %float %66
+               OpStore %x_39_phi %53
+         %68 = OpConvertFToS %int %67
+         %69 = OpIAdd %int %36 %68
+         %70 = OpSLessThan %bool %63 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %57
+         %71 = OpLabel
+         %77 = OpSLessThan %bool %36 %int_0
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpStore %x_39_phi %true
+               OpBranch %57
+         %80 = OpLabel
+         %83 = OpIEqual %bool %36 %int_1
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+         %87 = OpConvertSToF %float %36
+         %88 = OpCompositeConstruct %v2float %87 %87
+         %89 = OpCompositeExtract %float %88 0
+         %91 = OpAccessChain %_ptr_Function_float %x_42 %uint_1
+         %92 = OpLoad %float %91
+         %94 = OpAccessChain %_ptr_Function_float %x_42 %uint_2
+         %95 = OpLoad %float %94
+         %96 = OpCompositeExtract %float %88 1
+         %97 = OpCompositeConstruct %v4float %89 %92 %95 %96
+               OpStore %x_66 %97
+         %98 = OpLoad %v4float %x_66
+               OpStore %x_45_phi %98
+               OpBranch %84
+         %86 = OpLabel
+        %100 = OpIAdd %int %36 %int_1
+         %99 = OpConvertSToF %float %100
+        %101 = OpCompositeConstruct %v2float %99 %99
+        %102 = OpCompositeExtract %float %101 0
+        %103 = OpAccessChain %_ptr_Function_float %x_42 %uint_1
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Function_float %x_42 %uint_2
+        %106 = OpLoad %float %105
+        %107 = OpCompositeExtract %float %101 1
+        %108 = OpCompositeConstruct %v4float %102 %104 %106 %107
+               OpStore %x_70 %108
+        %109 = OpLoad %v4float %x_70
+               OpStore %x_45_phi %109
+               OpBranch %84
+         %84 = OpLabel
+        %110 = OpLoad %v4float %x_45_phi
+               OpStore %x_45 %110
+               OpBranch %78
+         %78 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+        %111 = OpIAdd %int %63 %int_1
+               OpStore %x_48 %111
+        %112 = OpLoad %v4float %x_45
+               OpStore %x_42_phi %112
+        %113 = OpLoad %int %x_48
+               OpStore %x_47_phi %113
+               OpBranch %56
+         %57 = OpLabel
+        %114 = OpLoad %bool %x_39_phi
+               OpStore %x_39 %114
+        %115 = OpLoad %bool %x_39
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+               OpBranch %45
+        %116 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+        %118 = OpLoad %bool %x_39
+               OpStore %x_38_phi %118
+        %119 = OpLoad %v4float %x_42
+               OpStore %x_41_phi %119
+        %120 = OpSLessThan %bool %36 %int_0
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpBranch %121
+        %123 = OpLabel
+               OpBranch %45
+        %121 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+        %124 = OpLoad %bool %x_39
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+               OpBranch %20
+        %125 = OpLabel
+        %127 = OpLoad %v4float %x_42
+               OpStore %x_GLF_color %127
+               OpBranch %20
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %128
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %132 = OpLabel
+        %133 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %133
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %135 = OpLabel
+        %136 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %136
+        %137 = OpFunctionCall %void %main_1
+        %139 = OpLoad %v4float %x_GLF_color
+        %140 = OpCompositeConstruct %main_out %139
+        %138 = OpFunctionCall %void %tint_symbol_3 %140
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 46[%46] is not post dominated by the back-edge block 121[%121]
+  %121 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..ee729d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.spvasm.expected.wgsl
@@ -0,0 +1,102 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  loop {
+    var x_42 : vec4<f32>;
+    var x_39 : bool;
+    var x_38_phi : bool;
+    var x_41_phi : vec4<f32>;
+    let x_32 : f32 = gl_FragCoord.x;
+    let x_34 : i32 = i32(clamp(x_32, 0.0, 1.0));
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    x_38_phi = false;
+    x_41_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    loop {
+      var x_42_phi : vec4<f32>;
+      var x_47_phi : i32;
+      var x_39_phi : bool;
+      let x_38 : bool = x_38_phi;
+      let x_41 : vec4<f32> = x_41_phi;
+      x_42_phi = x_41;
+      x_47_phi = 0;
+      loop {
+        var x_45 : vec4<f32>;
+        var x_48 : i32;
+        x_42 = x_42_phi;
+        let x_47 : i32 = x_47_phi;
+        let x_50 : f32 = x_6.injectionSwitch.y;
+        x_39_phi = x_38;
+        if ((x_47 < (x_34 + i32(x_50)))) {
+        } else {
+          break;
+        }
+        var x_66 : vec4<f32>;
+        var x_70 : vec4<f32>;
+        var x_45_phi : vec4<f32>;
+        if ((x_34 < 0)) {
+          x_39_phi = true;
+          break;
+        } else {
+          if ((x_34 == 1)) {
+            let x_64 : f32 = f32(x_34);
+            let x_65 : vec2<f32> = vec2<f32>(x_64, x_64);
+            x_66 = vec4<f32>(x_65.x, x_42.y, x_42.z, x_65.y);
+            x_45_phi = x_66;
+          } else {
+            let x_68 : f32 = f32((x_34 + 1));
+            let x_69 : vec2<f32> = vec2<f32>(x_68, x_68);
+            x_70 = vec4<f32>(x_69.x, x_42.y, x_42.z, x_69.y);
+            x_45_phi = x_70;
+          }
+          x_45 = x_45_phi;
+        }
+
+        continuing {
+          x_48 = (x_47 + 1);
+          x_42_phi = x_45;
+          x_47_phi = x_48;
+        }
+      }
+      x_39 = x_39_phi;
+      if (x_39) {
+        break;
+      }
+
+      continuing {
+        x_38_phi = x_39;
+        x_41_phi = x_42;
+        if ((x_34 < 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_39) {
+      break;
+    }
+    x_GLF_color = x_42;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
new file mode 100644
index 0000000..ee729d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
@@ -0,0 +1,102 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  loop {
+    var x_42 : vec4<f32>;
+    var x_39 : bool;
+    var x_38_phi : bool;
+    var x_41_phi : vec4<f32>;
+    let x_32 : f32 = gl_FragCoord.x;
+    let x_34 : i32 = i32(clamp(x_32, 0.0, 1.0));
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    x_38_phi = false;
+    x_41_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    loop {
+      var x_42_phi : vec4<f32>;
+      var x_47_phi : i32;
+      var x_39_phi : bool;
+      let x_38 : bool = x_38_phi;
+      let x_41 : vec4<f32> = x_41_phi;
+      x_42_phi = x_41;
+      x_47_phi = 0;
+      loop {
+        var x_45 : vec4<f32>;
+        var x_48 : i32;
+        x_42 = x_42_phi;
+        let x_47 : i32 = x_47_phi;
+        let x_50 : f32 = x_6.injectionSwitch.y;
+        x_39_phi = x_38;
+        if ((x_47 < (x_34 + i32(x_50)))) {
+        } else {
+          break;
+        }
+        var x_66 : vec4<f32>;
+        var x_70 : vec4<f32>;
+        var x_45_phi : vec4<f32>;
+        if ((x_34 < 0)) {
+          x_39_phi = true;
+          break;
+        } else {
+          if ((x_34 == 1)) {
+            let x_64 : f32 = f32(x_34);
+            let x_65 : vec2<f32> = vec2<f32>(x_64, x_64);
+            x_66 = vec4<f32>(x_65.x, x_42.y, x_42.z, x_65.y);
+            x_45_phi = x_66;
+          } else {
+            let x_68 : f32 = f32((x_34 + 1));
+            let x_69 : vec2<f32> = vec2<f32>(x_68, x_68);
+            x_70 = vec4<f32>(x_69.x, x_42.y, x_42.z, x_69.y);
+            x_45_phi = x_70;
+          }
+          x_45 = x_45_phi;
+        }
+
+        continuing {
+          x_48 = (x_47 + 1);
+          x_42_phi = x_45;
+          x_47_phi = x_48;
+        }
+      }
+      x_39 = x_39_phi;
+      if (x_39) {
+        break;
+      }
+
+      continuing {
+        x_38_phi = x_39;
+        x_41_phi = x_42;
+        if ((x_34 < 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_39) {
+      break;
+    }
+    x_GLF_color = x_42;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..a6f8c4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.hlsl
@@ -0,0 +1,101 @@
+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);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  while (true) {
+    float4 x_42 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    bool x_39 = false;
+    bool x_38_phi = false;
+    float4 x_41_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    const float x_32 = gl_FragCoord.x;
+    const int x_34 = int(clamp(x_32, 0.0f, 1.0f));
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_38_phi = false;
+    x_41_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    while (true) {
+      float4 x_42_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      int x_47_phi = 0;
+      bool x_39_phi = false;
+      const bool x_38 = x_38_phi;
+      x_42_phi = x_41_phi;
+      x_47_phi = 0;
+      while (true) {
+        float4 x_45 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        int x_48 = 0;
+        x_42 = x_42_phi;
+        const int x_47 = x_47_phi;
+        const float x_50 = asfloat(x_6[0].y);
+        x_39_phi = x_38;
+        if ((x_47 < (x_34 + int(x_50)))) {
+        } else {
+          break;
+        }
+        float4 x_66 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        float4 x_70 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        float4 x_45_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        if ((x_34 < 0)) {
+          x_39_phi = true;
+          break;
+        } else {
+          if ((x_34 == 1)) {
+            const float x_64 = float(x_34);
+            const float2 x_65 = float2(x_64, x_64);
+            x_66 = float4(x_65.x, x_42.y, x_42.z, x_65.y);
+            x_45_phi = x_66;
+          } else {
+            const float x_68 = float((x_34 + 1));
+            const float2 x_69 = float2(x_68, x_68);
+            x_70 = float4(x_69.x, x_42.y, x_42.z, x_69.y);
+            x_45_phi = x_70;
+          }
+          x_45 = x_45_phi;
+        }
+        {
+          x_48 = (x_47 + 1);
+          x_42_phi = x_45;
+          x_47_phi = x_48;
+        }
+      }
+      x_39 = x_39_phi;
+      if (x_39) {
+        break;
+      }
+      {
+        x_38_phi = x_39;
+        x_41_phi = x_42;
+        if ((x_34 < 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_39) {
+      break;
+    }
+    x_GLF_color = x_42;
+    break;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.msl
new file mode 100644
index 0000000..9694480
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  while (true) {
+    float4 x_42 = 0.0f;
+    bool x_39 = false;
+    bool x_38_phi = false;
+    float4 x_41_phi = 0.0f;
+    float const x_32 = (*(tint_symbol_5)).x;
+    int const x_34 = int(clamp(x_32, 0.0f, 1.0f));
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_38_phi = false;
+    x_41_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    while (true) {
+      float4 x_42_phi = 0.0f;
+      int x_47_phi = 0;
+      bool x_39_phi = false;
+      bool const x_38 = x_38_phi;
+      float4 const x_41 = x_41_phi;
+      x_42_phi = x_41;
+      x_47_phi = 0;
+      while (true) {
+        float4 x_45 = 0.0f;
+        int x_48 = 0;
+        x_42 = x_42_phi;
+        int const x_47 = x_47_phi;
+        float const x_50 = x_6.injectionSwitch.y;
+        x_39_phi = x_38;
+        if ((x_47 < (x_34 + int(x_50)))) {
+        } else {
+          break;
+        }
+        float4 x_66 = 0.0f;
+        float4 x_70 = 0.0f;
+        float4 x_45_phi = 0.0f;
+        if ((x_34 < 0)) {
+          x_39_phi = true;
+          break;
+        } else {
+          if ((x_34 == 1)) {
+            float const x_64 = float(x_34);
+            float2 const x_65 = float2(x_64, x_64);
+            x_66 = float4(x_65.x, x_42.y, x_42.z, x_65.y);
+            x_45_phi = x_66;
+          } else {
+            float const x_68 = float((x_34 + 1));
+            float2 const x_69 = float2(x_68, x_68);
+            x_70 = float4(x_69.x, x_42.y, x_42.z, x_69.y);
+            x_45_phi = x_70;
+          }
+          x_45 = x_45_phi;
+        }
+        {
+          x_48 = (x_47 + 1);
+          x_42_phi = x_45;
+          x_47_phi = x_48;
+        }
+      }
+      x_39 = x_39_phi;
+      if (x_39) {
+        break;
+      }
+      {
+        x_38_phi = x_39;
+        x_41_phi = x_42;
+        if ((x_34 < 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_39) {
+      break;
+    }
+    *(tint_symbol_6) = x_42;
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..ef40c26
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.spvasm
@@ -0,0 +1,252 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 141
+; Schema: 0
+               OpCapability Shader
+         %39 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_42 "x_42"
+               OpName %x_39 "x_39"
+               OpName %x_38_phi "x_38_phi"
+               OpName %x_41_phi "x_41_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %x_47_phi "x_47_phi"
+               OpName %x_39_phi "x_39_phi"
+               OpName %x_45 "x_45"
+               OpName %x_48 "x_48"
+               OpName %x_66 "x_66"
+               OpName %x_70 "x_70"
+               OpName %x_45_phi "x_45_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %28 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+        %int = OpTypeInt 32 1
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %51 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float
+        %128 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_42 = OpVariable %_ptr_Function_v4float Function %5
+       %x_39 = OpVariable %_ptr_Function_bool Function %28
+   %x_38_phi = OpVariable %_ptr_Function_bool Function %28
+   %x_41_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_42_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_47_phi = OpVariable %_ptr_Function_int Function %51
+   %x_39_phi = OpVariable %_ptr_Function_bool Function %28
+       %x_45 = OpVariable %_ptr_Function_v4float Function %5
+       %x_48 = OpVariable %_ptr_Function_int Function %51
+       %x_66 = OpVariable %_ptr_Function_v4float Function %5
+       %x_70 = OpVariable %_ptr_Function_v4float Function %5
+   %x_45_phi = OpVariable %_ptr_Function_v4float Function %5
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+         %34 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %35 = OpLoad %float %34
+         %38 = OpExtInst %float %39 NClamp %35 %float_0 %float_1
+         %36 = OpConvertFToS %int %38
+               OpStore %x_GLF_color %42
+               OpStore %x_38_phi %false
+               OpStore %x_41_phi %42
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %53 = OpLoad %bool %x_38_phi
+         %54 = OpLoad %v4float %x_41_phi
+               OpStore %x_42_phi %54
+               OpStore %x_47_phi %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %62 = OpLoad %v4float %x_42_phi
+               OpStore %x_42 %62
+         %63 = OpLoad %int %x_47_phi
+         %66 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %67 = OpLoad %float %66
+               OpStore %x_39_phi %53
+         %68 = OpConvertFToS %int %67
+         %69 = OpIAdd %int %36 %68
+         %70 = OpSLessThan %bool %63 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %57
+         %71 = OpLabel
+         %77 = OpSLessThan %bool %36 %int_0
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpStore %x_39_phi %true
+               OpBranch %57
+         %80 = OpLabel
+         %83 = OpIEqual %bool %36 %int_1
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+         %87 = OpConvertSToF %float %36
+         %88 = OpCompositeConstruct %v2float %87 %87
+         %89 = OpCompositeExtract %float %88 0
+         %91 = OpAccessChain %_ptr_Function_float %x_42 %uint_1
+         %92 = OpLoad %float %91
+         %94 = OpAccessChain %_ptr_Function_float %x_42 %uint_2
+         %95 = OpLoad %float %94
+         %96 = OpCompositeExtract %float %88 1
+         %97 = OpCompositeConstruct %v4float %89 %92 %95 %96
+               OpStore %x_66 %97
+         %98 = OpLoad %v4float %x_66
+               OpStore %x_45_phi %98
+               OpBranch %84
+         %86 = OpLabel
+        %100 = OpIAdd %int %36 %int_1
+         %99 = OpConvertSToF %float %100
+        %101 = OpCompositeConstruct %v2float %99 %99
+        %102 = OpCompositeExtract %float %101 0
+        %103 = OpAccessChain %_ptr_Function_float %x_42 %uint_1
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Function_float %x_42 %uint_2
+        %106 = OpLoad %float %105
+        %107 = OpCompositeExtract %float %101 1
+        %108 = OpCompositeConstruct %v4float %102 %104 %106 %107
+               OpStore %x_70 %108
+        %109 = OpLoad %v4float %x_70
+               OpStore %x_45_phi %109
+               OpBranch %84
+         %84 = OpLabel
+        %110 = OpLoad %v4float %x_45_phi
+               OpStore %x_45 %110
+               OpBranch %78
+         %78 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+        %111 = OpIAdd %int %63 %int_1
+               OpStore %x_48 %111
+        %112 = OpLoad %v4float %x_45
+               OpStore %x_42_phi %112
+        %113 = OpLoad %int %x_48
+               OpStore %x_47_phi %113
+               OpBranch %56
+         %57 = OpLabel
+        %114 = OpLoad %bool %x_39_phi
+               OpStore %x_39 %114
+        %115 = OpLoad %bool %x_39
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+               OpBranch %45
+        %116 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+        %118 = OpLoad %bool %x_39
+               OpStore %x_38_phi %118
+        %119 = OpLoad %v4float %x_42
+               OpStore %x_41_phi %119
+        %120 = OpSLessThan %bool %36 %int_0
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpBranch %121
+        %123 = OpLabel
+               OpBranch %45
+        %121 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+        %124 = OpLoad %bool %x_39
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+               OpBranch %20
+        %125 = OpLabel
+        %127 = OpLoad %v4float %x_42
+               OpStore %x_GLF_color %127
+               OpBranch %20
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %128
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %132 = OpLabel
+        %133 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %133
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %135 = OpLabel
+        %136 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %136
+        %137 = OpFunctionCall %void %main_1
+        %139 = OpLoad %v4float %x_GLF_color
+        %140 = OpCompositeConstruct %main_out %139
+        %138 = OpFunctionCall %void %tint_symbol_3 %140
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 46[%46] is not post dominated by the back-edge block 121[%121]
+  %121 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..ee729d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl.expected.wgsl
@@ -0,0 +1,102 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  loop {
+    var x_42 : vec4<f32>;
+    var x_39 : bool;
+    var x_38_phi : bool;
+    var x_41_phi : vec4<f32>;
+    let x_32 : f32 = gl_FragCoord.x;
+    let x_34 : i32 = i32(clamp(x_32, 0.0, 1.0));
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    x_38_phi = false;
+    x_41_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+    loop {
+      var x_42_phi : vec4<f32>;
+      var x_47_phi : i32;
+      var x_39_phi : bool;
+      let x_38 : bool = x_38_phi;
+      let x_41 : vec4<f32> = x_41_phi;
+      x_42_phi = x_41;
+      x_47_phi = 0;
+      loop {
+        var x_45 : vec4<f32>;
+        var x_48 : i32;
+        x_42 = x_42_phi;
+        let x_47 : i32 = x_47_phi;
+        let x_50 : f32 = x_6.injectionSwitch.y;
+        x_39_phi = x_38;
+        if ((x_47 < (x_34 + i32(x_50)))) {
+        } else {
+          break;
+        }
+        var x_66 : vec4<f32>;
+        var x_70 : vec4<f32>;
+        var x_45_phi : vec4<f32>;
+        if ((x_34 < 0)) {
+          x_39_phi = true;
+          break;
+        } else {
+          if ((x_34 == 1)) {
+            let x_64 : f32 = f32(x_34);
+            let x_65 : vec2<f32> = vec2<f32>(x_64, x_64);
+            x_66 = vec4<f32>(x_65.x, x_42.y, x_42.z, x_65.y);
+            x_45_phi = x_66;
+          } else {
+            let x_68 : f32 = f32((x_34 + 1));
+            let x_69 : vec2<f32> = vec2<f32>(x_68, x_68);
+            x_70 = vec4<f32>(x_69.x, x_42.y, x_42.z, x_69.y);
+            x_45_phi = x_70;
+          }
+          x_45 = x_45_phi;
+        }
+
+        continuing {
+          x_48 = (x_47 + 1);
+          x_42_phi = x_45;
+          x_47_phi = x_48;
+        }
+      }
+      x_39 = x_39_phi;
+      if (x_39) {
+        break;
+      }
+
+      continuing {
+        x_38_phi = x_39;
+        x_41_phi = x_42;
+        if ((x_34 < 0)) {
+        } else {
+          break;
+        }
+      }
+    }
+    if (x_39) {
+      break;
+    }
+    x_GLF_color = x_42;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm
new file mode 100644
index 0000000..2e26a63
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm
@@ -0,0 +1,152 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %lv "lv"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gv "gv"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %GLF_live5r "GLF_live5r"
+               OpName %GLF_live5_looplimiter6 "GLF_live5_looplimiter6"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %GLF_live5r RelaxedPrecision
+               OpDecorate %GLF_live5_looplimiter6 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Private_float = OpTypePointer Private %float
+         %gv = OpVariable %_ptr_Private_float Private
+  %float_260 = OpConstant %float 260
+    %int_250 = OpConstant %int 250
+    %int_180 = OpConstant %int 180
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+    %int_210 = OpConstant %int 210
+       %true = OpConstantTrue %bool
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_6 = OpConstant %int 6
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %41 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %15
+         %42 = OpLabel
+         %lv = OpVariable %_ptr_Function_float Function
+         %43 = OpVariable %_ptr_Function_float Function
+ %GLF_live5r = OpVariable %_ptr_Function_int Function
+%GLF_live5_looplimiter6 = OpVariable %_ptr_Function_int Function
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %45 = OpLoad %float %44
+         %46 = OpFOrdGreaterThan %bool %float_1 %45
+               OpSelectionMerge %47 None
+               OpBranchConditional %46 %48 %49
+         %48 = OpLabel
+         %50 = OpLoad %float %gv
+         %51 = OpExtInst %float %1 FAbs %50
+               OpStore %43 %51
+               OpBranch %47
+         %49 = OpLabel
+               OpStore %43 %float_260
+               OpBranch %47
+         %47 = OpLabel
+         %52 = OpLoad %float %43
+               OpStore %lv %52
+         %53 = OpLoad %float %lv
+         %54 = OpConvertFToS %int %53
+         %55 = OpSLessThan %bool %54 %int_250
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpLoad %float %lv
+         %59 = OpConvertFToS %int %58
+         %60 = OpSLessThan %bool %59 %int_180
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+         %64 = OpLoad %float %lv
+         %65 = OpExtInst %float %1 FClamp %64 %float_1 %float_1
+               OpBranch %61
+         %63 = OpLabel
+         %66 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %67 = OpLoad %float %66
+         %68 = OpFOrdLessThan %bool %67 %float_0
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpLoad %float %lv
+         %72 = OpConvertFToS %int %71
+         %73 = OpSLessThan %bool %72 %int_210
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+               OpBranch %76
+         %76 = OpLabel
+               OpLoopMerge %77 %78 None
+               OpBranch %79
+         %79 = OpLabel
+               OpBranch %78
+         %78 = OpLabel
+               OpBranchConditional %true %76 %77
+         %77 = OpLabel
+               OpBranch %74
+         %74 = OpLabel
+               OpStore %GLF_live5r %int_0
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+               OpBranchConditional %true %84 %81
+         %84 = OpLabel
+         %11 = OpLoad %int %GLF_live5_looplimiter6
+         %85 = OpSGreaterThanEqual %bool %11 %int_6
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+               OpBranch %81
+         %86 = OpLabel
+         %12 = OpLoad %int %GLF_live5_looplimiter6
+         %13 = OpIAdd %int %12 %int_1
+               OpStore %GLF_live5_looplimiter6 %13
+               OpBranch %82
+         %82 = OpLabel
+               OpBranch %80
+         %81 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpStore %_GLF_color %41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2b57a30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float gv = 0.0f;
+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() {
+  float lv = 0.0f;
+  float x_43 = 0.0f;
+  int GLF_live5r = 0;
+  int GLF_live5_looplimiter6 = 0;
+  const float x_45 = asfloat(x_7[0].y);
+  if ((1.0f > x_45)) {
+    x_43 = abs(gv);
+  } else {
+    x_43 = 260.0f;
+  }
+  lv = x_43;
+  if ((int(lv) < 250)) {
+    if ((int(lv) < 180)) {
+      const float x_65 = clamp(lv, 1.0f, 1.0f);
+    } else {
+      const float x_67 = gl_FragCoord.y;
+      if ((x_67 < 0.0f)) {
+        if ((int(lv) < 210)) {
+          while (true) {
+            {
+              if (true) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+        GLF_live5r = 0;
+        while (true) {
+          if (true) {
+          } else {
+            break;
+          }
+          if ((GLF_live5_looplimiter6 >= 6)) {
+            break;
+          }
+          GLF_live5_looplimiter6 = (GLF_live5_looplimiter6 + 1);
+        }
+      }
+    }
+  }
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..3bfd32e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float* const tint_symbol_5, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float lv = 0.0f;
+  float x_43 = 0.0f;
+  int GLF_live5r = 0;
+  int GLF_live5_looplimiter6 = 0;
+  float const x_45 = x_7.injectionSwitch.y;
+  if ((1.0f > x_45)) {
+    float const x_50 = *(tint_symbol_5);
+    x_43 = fabs(x_50);
+  } else {
+    x_43 = 260.0f;
+  }
+  float const x_52 = x_43;
+  lv = x_52;
+  float const x_53 = lv;
+  if ((int(x_53) < 250)) {
+    float const x_58 = lv;
+    if ((int(x_58) < 180)) {
+      float const x_64 = lv;
+      float const x_65 = clamp(x_64, 1.0f, 1.0f);
+    } else {
+      float const x_67 = (*(tint_symbol_6)).y;
+      if ((x_67 < 0.0f)) {
+        float const x_71 = lv;
+        if ((int(x_71) < 210)) {
+          while (true) {
+            {
+              if (true) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+        GLF_live5r = 0;
+        while (true) {
+          if (true) {
+          } else {
+            break;
+          }
+          int const x_11 = GLF_live5_looplimiter6;
+          if ((x_11 >= 6)) {
+            break;
+          }
+          int const x_12 = GLF_live5_looplimiter6;
+          GLF_live5_looplimiter6 = (x_12 + 1);
+        }
+      }
+    }
+  }
+  *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_9), &(tint_symbol_8), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..17f5fb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,203 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+         %44 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gv "gv"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %lv "lv"
+               OpName %x_43 "x_43"
+               OpName %GLF_live5r "GLF_live5r"
+               OpName %GLF_live5_looplimiter6 "GLF_live5_looplimiter6"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+         %gv = OpVariable %_ptr_Private_float Private %8
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+  %float_260 = OpConstant %float 260
+    %int_250 = OpConstant %int 250
+    %int_180 = OpConstant %int 180
+    %float_0 = OpConstant %float 0
+    %int_210 = OpConstant %int 210
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+      %int_6 = OpConstant %int 6
+      %int_1 = OpConstant %int 1
+         %98 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %99 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+         %lv = OpVariable %_ptr_Function_float Function %8
+       %x_43 = OpVariable %_ptr_Function_float Function %8
+ %GLF_live5r = OpVariable %_ptr_Function_int Function %28
+%GLF_live5_looplimiter6 = OpVariable %_ptr_Function_int Function %28
+         %34 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %35 = OpLoad %float %34
+         %37 = OpFOrdGreaterThan %bool %float_1 %35
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+         %42 = OpLoad %float %gv
+         %43 = OpExtInst %float %44 FAbs %42
+               OpStore %x_43 %43
+               OpBranch %39
+         %41 = OpLabel
+               OpStore %x_43 %float_260
+               OpBranch %39
+         %39 = OpLabel
+         %46 = OpLoad %float %x_43
+               OpStore %lv %46
+         %47 = OpLoad %float %lv
+         %48 = OpConvertFToS %int %47
+         %50 = OpSLessThan %bool %48 %int_250
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpLoad %float %lv
+         %54 = OpConvertFToS %int %53
+         %56 = OpSLessThan %bool %54 %int_180
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpLoad %float %lv
+         %61 = OpExtInst %float %44 NClamp %60 %float_1 %float_1
+               OpBranch %57
+         %59 = OpLabel
+         %62 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %63 = OpLoad %float %62
+         %65 = OpFOrdLessThan %bool %63 %float_0
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %66
+         %67 = OpLabel
+         %68 = OpLoad %float %lv
+         %69 = OpConvertFToS %int %68
+         %71 = OpSLessThan %bool %69 %int_210
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpBranch %74
+         %74 = OpLabel
+               OpLoopMerge %75 %76 None
+               OpBranch %77
+         %77 = OpLabel
+               OpBranch %76
+         %76 = OpLabel
+               OpSelectionMerge %79 None
+               OpBranchConditional %true %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %75
+         %79 = OpLabel
+               OpBranch %74
+         %75 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+               OpStore %GLF_live5r %int_0
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+               OpSelectionMerge %87 None
+               OpBranchConditional %true %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %84
+         %87 = OpLabel
+         %90 = OpLoad %int %GLF_live5_looplimiter6
+         %92 = OpSGreaterThanEqual %bool %90 %int_6
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+               OpBranch %84
+         %93 = OpLabel
+         %95 = OpLoad %int %GLF_live5_looplimiter6
+         %97 = OpIAdd %int %95 %int_1
+               OpStore %GLF_live5_looplimiter6 %97
+               OpBranch %85
+         %85 = OpLabel
+               OpBranch %83
+         %84 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+               OpStore %x_GLF_color %98
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %99
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %103 = OpLabel
+        %104 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %104
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %106 = OpLabel
+        %107 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %107
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_3 %111
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 76[%76] is not post dominated by the back-edge block 79[%79]
+  %79 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..592be78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,79 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gv : f32;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var lv : f32;
+  var x_43 : f32;
+  var GLF_live5r : i32;
+  var GLF_live5_looplimiter6 : i32;
+  let x_45 : f32 = x_7.injectionSwitch.y;
+  if ((1.0 > x_45)) {
+    let x_50 : f32 = gv;
+    x_43 = abs(x_50);
+  } else {
+    x_43 = 260.0;
+  }
+  let x_52 : f32 = x_43;
+  lv = x_52;
+  let x_53 : f32 = lv;
+  if ((i32(x_53) < 250)) {
+    let x_58 : f32 = lv;
+    if ((i32(x_58) < 180)) {
+      let x_64 : f32 = lv;
+      let x_65 : f32 = clamp(x_64, 1.0, 1.0);
+    } else {
+      let x_67 : f32 = gl_FragCoord.y;
+      if ((x_67 < 0.0)) {
+        let x_71 : f32 = lv;
+        if ((i32(x_71) < 210)) {
+          loop {
+
+            continuing {
+              if (true) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+        GLF_live5r = 0;
+        loop {
+          if (true) {
+          } else {
+            break;
+          }
+          let x_11 : i32 = GLF_live5_looplimiter6;
+          if ((x_11 >= 6)) {
+            break;
+          }
+          let x_12 : i32 = GLF_live5_looplimiter6;
+          GLF_live5_looplimiter6 = (x_12 + 1);
+        }
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
new file mode 100644
index 0000000..592be78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
@@ -0,0 +1,79 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gv : f32;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var lv : f32;
+  var x_43 : f32;
+  var GLF_live5r : i32;
+  var GLF_live5_looplimiter6 : i32;
+  let x_45 : f32 = x_7.injectionSwitch.y;
+  if ((1.0 > x_45)) {
+    let x_50 : f32 = gv;
+    x_43 = abs(x_50);
+  } else {
+    x_43 = 260.0;
+  }
+  let x_52 : f32 = x_43;
+  lv = x_52;
+  let x_53 : f32 = lv;
+  if ((i32(x_53) < 250)) {
+    let x_58 : f32 = lv;
+    if ((i32(x_58) < 180)) {
+      let x_64 : f32 = lv;
+      let x_65 : f32 = clamp(x_64, 1.0, 1.0);
+    } else {
+      let x_67 : f32 = gl_FragCoord.y;
+      if ((x_67 < 0.0)) {
+        let x_71 : f32 = lv;
+        if ((i32(x_71) < 210)) {
+          loop {
+
+            continuing {
+              if (true) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+        GLF_live5r = 0;
+        loop {
+          if (true) {
+          } else {
+            break;
+          }
+          let x_11 : i32 = GLF_live5_looplimiter6;
+          if ((x_11 >= 6)) {
+            break;
+          }
+          let x_12 : i32 = GLF_live5_looplimiter6;
+          GLF_live5_looplimiter6 = (x_12 + 1);
+        }
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2b57a30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float gv = 0.0f;
+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() {
+  float lv = 0.0f;
+  float x_43 = 0.0f;
+  int GLF_live5r = 0;
+  int GLF_live5_looplimiter6 = 0;
+  const float x_45 = asfloat(x_7[0].y);
+  if ((1.0f > x_45)) {
+    x_43 = abs(gv);
+  } else {
+    x_43 = 260.0f;
+  }
+  lv = x_43;
+  if ((int(lv) < 250)) {
+    if ((int(lv) < 180)) {
+      const float x_65 = clamp(lv, 1.0f, 1.0f);
+    } else {
+      const float x_67 = gl_FragCoord.y;
+      if ((x_67 < 0.0f)) {
+        if ((int(lv) < 210)) {
+          while (true) {
+            {
+              if (true) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+        GLF_live5r = 0;
+        while (true) {
+          if (true) {
+          } else {
+            break;
+          }
+          if ((GLF_live5_looplimiter6 >= 6)) {
+            break;
+          }
+          GLF_live5_looplimiter6 = (GLF_live5_looplimiter6 + 1);
+        }
+      }
+    }
+  }
+  x_GLF_color = float4(1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..3bfd32e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.msl
@@ -0,0 +1,78 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float* const tint_symbol_5, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float lv = 0.0f;
+  float x_43 = 0.0f;
+  int GLF_live5r = 0;
+  int GLF_live5_looplimiter6 = 0;
+  float const x_45 = x_7.injectionSwitch.y;
+  if ((1.0f > x_45)) {
+    float const x_50 = *(tint_symbol_5);
+    x_43 = fabs(x_50);
+  } else {
+    x_43 = 260.0f;
+  }
+  float const x_52 = x_43;
+  lv = x_52;
+  float const x_53 = lv;
+  if ((int(x_53) < 250)) {
+    float const x_58 = lv;
+    if ((int(x_58) < 180)) {
+      float const x_64 = lv;
+      float const x_65 = clamp(x_64, 1.0f, 1.0f);
+    } else {
+      float const x_67 = (*(tint_symbol_6)).y;
+      if ((x_67 < 0.0f)) {
+        float const x_71 = lv;
+        if ((int(x_71) < 210)) {
+          while (true) {
+            {
+              if (true) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+        GLF_live5r = 0;
+        while (true) {
+          if (true) {
+          } else {
+            break;
+          }
+          int const x_11 = GLF_live5_looplimiter6;
+          if ((x_11 >= 6)) {
+            break;
+          }
+          int const x_12 = GLF_live5_looplimiter6;
+          GLF_live5_looplimiter6 = (x_12 + 1);
+        }
+      }
+    }
+  }
+  *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_9), &(tint_symbol_8), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..17f5fb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,203 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 112
+; Schema: 0
+               OpCapability Shader
+         %44 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gv "gv"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %lv "lv"
+               OpName %x_43 "x_43"
+               OpName %GLF_live5r "GLF_live5r"
+               OpName %GLF_live5_looplimiter6 "GLF_live5_looplimiter6"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+         %gv = OpVariable %_ptr_Private_float Private %8
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+  %float_260 = OpConstant %float 260
+    %int_250 = OpConstant %int 250
+    %int_180 = OpConstant %int 180
+    %float_0 = OpConstant %float 0
+    %int_210 = OpConstant %int 210
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+      %int_6 = OpConstant %int 6
+      %int_1 = OpConstant %int 1
+         %98 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %99 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+         %lv = OpVariable %_ptr_Function_float Function %8
+       %x_43 = OpVariable %_ptr_Function_float Function %8
+ %GLF_live5r = OpVariable %_ptr_Function_int Function %28
+%GLF_live5_looplimiter6 = OpVariable %_ptr_Function_int Function %28
+         %34 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %35 = OpLoad %float %34
+         %37 = OpFOrdGreaterThan %bool %float_1 %35
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+         %42 = OpLoad %float %gv
+         %43 = OpExtInst %float %44 FAbs %42
+               OpStore %x_43 %43
+               OpBranch %39
+         %41 = OpLabel
+               OpStore %x_43 %float_260
+               OpBranch %39
+         %39 = OpLabel
+         %46 = OpLoad %float %x_43
+               OpStore %lv %46
+         %47 = OpLoad %float %lv
+         %48 = OpConvertFToS %int %47
+         %50 = OpSLessThan %bool %48 %int_250
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %53 = OpLoad %float %lv
+         %54 = OpConvertFToS %int %53
+         %56 = OpSLessThan %bool %54 %int_180
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+         %60 = OpLoad %float %lv
+         %61 = OpExtInst %float %44 NClamp %60 %float_1 %float_1
+               OpBranch %57
+         %59 = OpLabel
+         %62 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %63 = OpLoad %float %62
+         %65 = OpFOrdLessThan %bool %63 %float_0
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %66
+         %67 = OpLabel
+         %68 = OpLoad %float %lv
+         %69 = OpConvertFToS %int %68
+         %71 = OpSLessThan %bool %69 %int_210
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpBranch %74
+         %74 = OpLabel
+               OpLoopMerge %75 %76 None
+               OpBranch %77
+         %77 = OpLabel
+               OpBranch %76
+         %76 = OpLabel
+               OpSelectionMerge %79 None
+               OpBranchConditional %true %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %75
+         %79 = OpLabel
+               OpBranch %74
+         %75 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+               OpStore %GLF_live5r %int_0
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+               OpSelectionMerge %87 None
+               OpBranchConditional %true %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %84
+         %87 = OpLabel
+         %90 = OpLoad %int %GLF_live5_looplimiter6
+         %92 = OpSGreaterThanEqual %bool %90 %int_6
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+               OpBranch %84
+         %93 = OpLabel
+         %95 = OpLoad %int %GLF_live5_looplimiter6
+         %97 = OpIAdd %int %95 %int_1
+               OpStore %GLF_live5_looplimiter6 %97
+               OpBranch %85
+         %85 = OpLabel
+               OpBranch %83
+         %84 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+               OpStore %x_GLF_color %98
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %99
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %103 = OpLabel
+        %104 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %104
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %106 = OpLabel
+        %107 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %107
+        %108 = OpFunctionCall %void %main_1
+        %110 = OpLoad %v4float %x_GLF_color
+        %111 = OpCompositeConstruct %main_out %110
+        %109 = OpFunctionCall %void %tint_symbol_3 %111
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 76[%76] is not post dominated by the back-edge block 79[%79]
+  %79 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..592be78
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,79 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gv : f32;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var lv : f32;
+  var x_43 : f32;
+  var GLF_live5r : i32;
+  var GLF_live5_looplimiter6 : i32;
+  let x_45 : f32 = x_7.injectionSwitch.y;
+  if ((1.0 > x_45)) {
+    let x_50 : f32 = gv;
+    x_43 = abs(x_50);
+  } else {
+    x_43 = 260.0;
+  }
+  let x_52 : f32 = x_43;
+  lv = x_52;
+  let x_53 : f32 = lv;
+  if ((i32(x_53) < 250)) {
+    let x_58 : f32 = lv;
+    if ((i32(x_58) < 180)) {
+      let x_64 : f32 = lv;
+      let x_65 : f32 = clamp(x_64, 1.0, 1.0);
+    } else {
+      let x_67 : f32 = gl_FragCoord.y;
+      if ((x_67 < 0.0)) {
+        let x_71 : f32 = lv;
+        if ((i32(x_71) < 210)) {
+          loop {
+
+            continuing {
+              if (true) {
+              } else {
+                break;
+              }
+            }
+          }
+        }
+        GLF_live5r = 0;
+        loop {
+          if (true) {
+          } else {
+            break;
+          }
+          let x_11 : i32 = GLF_live5_looplimiter6;
+          if ((x_11 >= 6)) {
+            break;
+          }
+          let x_12 : i32 = GLF_live5_looplimiter6;
+          GLF_live5_looplimiter6 = (x_12 + 1);
+        }
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm
new file mode 100644
index 0000000..e7e836b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm
@@ -0,0 +1,58 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %GLF_live9r "GLF_live9r"
+               OpName %g "g"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %13 = OpConstantComposite %v2float %float_1 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_3 = OpConstant %float 3
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+       %main = OpFunction %void None %7
+         %23 = OpLabel
+ %GLF_live9r = OpVariable %_ptr_Function_int Function
+          %g = OpVariable %_ptr_Function_float Function
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+               OpBranchConditional %true %28 %25
+         %28 = OpLabel
+               OpSelectionMerge %29 None
+               OpBranchConditional %true %30 %29
+         %30 = OpLabel
+               OpBranch %25
+         %29 = OpLabel
+         %31 = OpLoad %int %GLF_live9r
+         %32 = OpExtInst %int %1 SClamp %31 %int_0 %int_1
+               OpBranch %26
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+               OpStore %g %float_3
+         %33 = OpLoad %float %g
+         %34 = OpExtInst %float %1 SmoothStep %float_0 %float_1 %33
+         %35 = OpCompositeConstruct %v4float %34 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %35
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..bbaed1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,33 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int GLF_live9r = 0;
+  float g = 0.0f;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    if (true) {
+      break;
+    }
+    const int x_32 = clamp(GLF_live9r, 0, 1);
+  }
+  g = 3.0f;
+  x_GLF_color = float4(smoothstep(0.0f, 1.0f, g), 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f979602
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int GLF_live9r = 0;
+  float g = 0.0f;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    if (true) {
+      break;
+    }
+    int const x_31 = GLF_live9r;
+    int const x_32 = clamp(x_31, 0, 1);
+  }
+  g = 3.0f;
+  float const x_33 = g;
+  *(tint_symbol_4) = float4(smoothstep(0.0f, 1.0f, x_33), 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e273234
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,94 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+         %32 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %GLF_live9r "GLF_live9r"
+               OpName %g "g"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_3 = OpConstant %float 3
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %41 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+ %GLF_live9r = OpVariable %_ptr_Function_int Function %15
+          %g = OpVariable %_ptr_Function_float Function %18
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+               OpSelectionMerge %25 None
+               OpBranchConditional %true %26 %27
+         %26 = OpLabel
+               OpBranch %25
+         %27 = OpLabel
+               OpBranch %20
+         %25 = OpLabel
+               OpSelectionMerge %28 None
+               OpBranchConditional %true %29 %28
+         %29 = OpLabel
+               OpBranch %20
+         %28 = OpLabel
+         %30 = OpLoad %int %GLF_live9r
+         %31 = OpExtInst %int %32 SClamp %30 %int_0 %int_1
+               OpBranch %21
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpStore %g %float_3
+         %36 = OpLoad %float %g
+         %37 = OpExtInst %float %32 SmoothStep %float_0 %float_1 %36
+         %40 = OpCompositeConstruct %v4float %37 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %40
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %41
+%tint_symbol = OpFunctionParameter %main_out
+         %45 = OpLabel
+         %46 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %46
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_2 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3f8d86d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,32 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var GLF_live9r : i32;
+  var g : f32;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    if (true) {
+      break;
+    }
+    let x_31 : i32 = GLF_live9r;
+    let x_32 : i32 = clamp(x_31, 0, 1);
+  }
+  g = 3.0;
+  let x_33 : f32 = g;
+  x_GLF_color = vec4<f32>(smoothStep(0.0, 1.0, x_33), 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
new file mode 100644
index 0000000..3f8d86d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
@@ -0,0 +1,32 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var GLF_live9r : i32;
+  var g : f32;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    if (true) {
+      break;
+    }
+    let x_31 : i32 = GLF_live9r;
+    let x_32 : i32 = clamp(x_31, 0, 1);
+  }
+  g = 3.0;
+  let x_33 : f32 = g;
+  x_GLF_color = vec4<f32>(smoothStep(0.0, 1.0, x_33), 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..bbaed1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,33 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int GLF_live9r = 0;
+  float g = 0.0f;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    if (true) {
+      break;
+    }
+    const int x_32 = clamp(GLF_live9r, 0, 1);
+  }
+  g = 3.0f;
+  x_GLF_color = float4(smoothstep(0.0f, 1.0f, g), 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f979602
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int GLF_live9r = 0;
+  float g = 0.0f;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    if (true) {
+      break;
+    }
+    int const x_31 = GLF_live9r;
+    int const x_32 = clamp(x_31, 0, 1);
+  }
+  g = 3.0f;
+  float const x_33 = g;
+  *(tint_symbol_4) = float4(smoothstep(0.0f, 1.0f, x_33), 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e273234
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,94 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+         %32 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %GLF_live9r "GLF_live9r"
+               OpName %g "g"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_3 = OpConstant %float 3
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %41 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+ %GLF_live9r = OpVariable %_ptr_Function_int Function %15
+          %g = OpVariable %_ptr_Function_float Function %18
+               OpBranch %19
+         %19 = OpLabel
+               OpLoopMerge %20 %21 None
+               OpBranch %22
+         %22 = OpLabel
+               OpSelectionMerge %25 None
+               OpBranchConditional %true %26 %27
+         %26 = OpLabel
+               OpBranch %25
+         %27 = OpLabel
+               OpBranch %20
+         %25 = OpLabel
+               OpSelectionMerge %28 None
+               OpBranchConditional %true %29 %28
+         %29 = OpLabel
+               OpBranch %20
+         %28 = OpLabel
+         %30 = OpLoad %int %GLF_live9r
+         %31 = OpExtInst %int %32 SClamp %30 %int_0 %int_1
+               OpBranch %21
+         %21 = OpLabel
+               OpBranch %19
+         %20 = OpLabel
+               OpStore %g %float_3
+         %36 = OpLoad %float %g
+         %37 = OpExtInst %float %32 SmoothStep %float_0 %float_1 %36
+         %40 = OpCompositeConstruct %v4float %37 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %40
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %41
+%tint_symbol = OpFunctionParameter %main_out
+         %45 = OpLabel
+         %46 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %46
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %main_1
+         %51 = OpLoad %v4float %x_GLF_color
+         %52 = OpCompositeConstruct %main_out %51
+         %50 = OpFunctionCall %void %tint_symbol_2 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3f8d86d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,32 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var GLF_live9r : i32;
+  var g : f32;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    if (true) {
+      break;
+    }
+    let x_31 : i32 = GLF_live9r;
+    let x_32 : i32 = clamp(x_31, 0, 1);
+  }
+  g = 3.0;
+  let x_33 : f32 = g;
+  x_GLF_color = vec4<f32>(smoothStep(0.0, 1.0, x_33), 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm
new file mode 100644
index 0000000..4596d90
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm
@@ -0,0 +1,609 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %pos "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %map "map"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+   %float_16 = OpConstant %float 16
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %43 = OpConstantComposite %v2int %int_0 %int_0
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %53 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %18
+         %56 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function
+       %ipos = OpVariable %_ptr_Function_v2int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %p = OpVariable %_ptr_Function_v2int Function
+    %canwalk = OpVariable %_ptr_Function_bool Function
+          %v = OpVariable %_ptr_Function_int Function
+ %directions = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+          %d = OpVariable %_ptr_Function_int Function
+         %57 = OpLoad %v4float %gl_FragCoord
+         %58 = OpVectorShuffle %v2float %57 %57 0 1
+         %59 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %60 = OpLoad %v2float %59
+         %61 = OpFDiv %v2float %58 %60
+               OpStore %pos %61
+         %62 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %63 = OpLoad %float %62
+         %64 = OpFMul %float %63 %float_16
+         %65 = OpConvertFToS %int %64
+         %66 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %67 = OpLoad %float %66
+         %68 = OpFMul %float %67 %float_16
+         %69 = OpConvertFToS %int %68
+         %70 = OpCompositeConstruct %v2int %65 %69
+               OpStore %ipos %70
+               OpStore %i %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %i
+         %76 = OpSLessThan %bool %75 %int_256
+               OpBranchConditional %76 %77 %72
+         %77 = OpLabel
+         %78 = OpLoad %int %i
+         %79 = OpAccessChain %_ptr_Private_int %map %78
+               OpStore %79 %int_0
+               OpBranch %73
+         %73 = OpLabel
+         %80 = OpLoad %int %i
+         %81 = OpIAdd %int %80 %int_1
+               OpStore %i %81
+               OpBranch %71
+         %72 = OpLabel
+               OpStore %p %43
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %82
+         %82 = OpLabel
+               OpLoopMerge %83 %84 None
+               OpBranch %85
+         %85 = OpLabel
+         %86 = OpLoad %int %v
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %v %87
+               OpStore %directions %int_0
+         %88 = OpAccessChain %_ptr_Function_int %p %uint_0
+         %89 = OpLoad %int %88
+         %90 = OpSGreaterThan %bool %89 %int_0
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+         %93 = OpAccessChain %_ptr_Function_int %p %uint_0
+         %94 = OpLoad %int %93
+         %95 = OpISub %int %94 %int_2
+         %96 = OpAccessChain %_ptr_Function_int %p %uint_1
+         %97 = OpLoad %int %96
+         %98 = OpIMul %int %97 %int_16
+         %99 = OpIAdd %int %95 %98
+        %100 = OpAccessChain %_ptr_Private_int %map %99
+        %101 = OpLoad %int %100
+        %102 = OpIEqual %bool %101 %int_0
+               OpBranch %91
+         %91 = OpLabel
+        %103 = OpPhi %bool %90 %85 %102 %92
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+        %106 = OpLoad %int %directions
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %directions %107
+               OpBranch %104
+        %104 = OpLabel
+        %108 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %109 = OpLoad %int %108
+        %110 = OpSGreaterThan %bool %109 %int_0
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %111
+        %112 = OpLabel
+        %113 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %116 = OpLoad %int %115
+        %117 = OpISub %int %116 %int_2
+        %118 = OpIMul %int %117 %int_16
+        %119 = OpIAdd %int %114 %118
+        %120 = OpAccessChain %_ptr_Private_int %map %119
+        %121 = OpLoad %int %120
+        %122 = OpIEqual %bool %121 %int_0
+               OpBranch %111
+        %111 = OpLabel
+        %123 = OpPhi %bool %110 %104 %122 %112
+               OpSelectionMerge %124 None
+               OpBranchConditional %123 %125 %124
+        %125 = OpLabel
+        %126 = OpLoad %int %directions
+        %127 = OpIAdd %int %126 %int_1
+               OpStore %directions %127
+               OpBranch %124
+        %124 = OpLabel
+        %128 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %129 = OpLoad %int %128
+        %130 = OpSLessThan %bool %129 %int_14
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+        %133 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %134 = OpLoad %int %133
+        %135 = OpIAdd %int %134 %int_2
+        %136 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %137 = OpLoad %int %136
+        %138 = OpIMul %int %137 %int_16
+        %139 = OpIAdd %int %135 %138
+        %140 = OpAccessChain %_ptr_Private_int %map %139
+        %141 = OpLoad %int %140
+        %142 = OpIEqual %bool %141 %int_0
+               OpBranch %131
+        %131 = OpLabel
+        %143 = OpPhi %bool %130 %124 %142 %132
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %144
+        %145 = OpLabel
+        %146 = OpLoad %int %directions
+        %147 = OpIAdd %int %146 %int_1
+               OpStore %directions %147
+               OpBranch %144
+        %144 = OpLabel
+        %148 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %149 = OpLoad %int %148
+        %150 = OpSLessThan %bool %149 %int_14
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %151
+        %152 = OpLabel
+        %153 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %154 = OpLoad %int %153
+        %155 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %156 = OpLoad %int %155
+        %157 = OpIAdd %int %156 %int_2
+        %158 = OpIMul %int %157 %int_16
+        %159 = OpIAdd %int %154 %158
+        %160 = OpAccessChain %_ptr_Private_int %map %159
+        %161 = OpLoad %int %160
+        %162 = OpIEqual %bool %161 %int_0
+               OpBranch %151
+        %151 = OpLabel
+        %163 = OpPhi %bool %150 %144 %162 %152
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %164
+        %165 = OpLabel
+        %166 = OpLoad %int %directions
+        %167 = OpIAdd %int %166 %int_1
+               OpStore %directions %167
+               OpBranch %164
+        %164 = OpLabel
+        %168 = OpLoad %int %directions
+        %169 = OpIEqual %bool %168 %int_0
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %172
+        %171 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %173
+        %173 = OpLabel
+               OpLoopMerge %174 %175 None
+               OpBranch %176
+        %176 = OpLabel
+        %177 = OpLoad %int %i
+        %178 = OpSLessThan %bool %177 %int_8
+               OpBranchConditional %178 %179 %174
+        %179 = OpLabel
+               OpStore %j %int_0
+               OpBranch %180
+        %180 = OpLabel
+               OpLoopMerge %181 %182 None
+               OpBranch %183
+        %183 = OpLabel
+        %184 = OpLoad %int %j
+        %185 = OpSLessThan %bool %184 %int_8
+               OpBranchConditional %185 %186 %181
+        %186 = OpLabel
+        %187 = OpLoad %int %j
+        %188 = OpIMul %int %187 %int_2
+        %189 = OpLoad %int %i
+        %190 = OpIMul %int %189 %int_2
+        %191 = OpIMul %int %190 %int_16
+        %192 = OpIAdd %int %188 %191
+        %193 = OpAccessChain %_ptr_Private_int %map %192
+        %194 = OpLoad %int %193
+        %195 = OpIEqual %bool %194 %int_0
+               OpSelectionMerge %196 None
+               OpBranchConditional %195 %197 %196
+        %197 = OpLabel
+        %198 = OpLoad %int %j
+        %199 = OpIMul %int %198 %int_2
+        %200 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %200 %199
+        %201 = OpLoad %int %i
+        %202 = OpIMul %int %201 %int_2
+        %203 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %203 %202
+               OpStore %canwalk %true
+               OpBranch %196
+        %196 = OpLabel
+               OpBranch %182
+        %182 = OpLabel
+        %204 = OpLoad %int %j
+        %205 = OpIAdd %int %204 %int_1
+               OpStore %j %205
+               OpBranch %180
+        %181 = OpLabel
+               OpBranch %175
+        %175 = OpLabel
+        %206 = OpLoad %int %i
+        %207 = OpIAdd %int %206 %int_1
+               OpStore %i %207
+               OpBranch %173
+        %174 = OpLabel
+        %208 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %209 = OpLoad %int %208
+        %210 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %211 = OpLoad %int %210
+        %212 = OpIMul %int %211 %int_16
+        %213 = OpIAdd %int %209 %212
+        %214 = OpAccessChain %_ptr_Private_int %map %213
+               OpStore %214 %int_1
+               OpBranch %170
+        %172 = OpLabel
+        %215 = OpLoad %int %v
+        %216 = OpLoad %int %directions
+        %217 = OpSMod %int %215 %216
+               OpStore %d %217
+        %218 = OpLoad %int %directions
+        %219 = OpLoad %int %v
+        %220 = OpIAdd %int %219 %218
+               OpStore %v %220
+        %221 = OpLoad %int %d
+        %222 = OpSGreaterThanEqual %bool %221 %int_0
+               OpSelectionMerge %223 None
+               OpBranchConditional %222 %224 %223
+        %224 = OpLabel
+        %225 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %226 = OpLoad %int %225
+        %227 = OpSGreaterThan %bool %226 %int_0
+               OpBranch %223
+        %223 = OpLabel
+        %228 = OpPhi %bool %222 %172 %227 %224
+               OpSelectionMerge %229 None
+               OpBranchConditional %228 %230 %229
+        %230 = OpLabel
+        %231 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %232 = OpLoad %int %231
+        %233 = OpISub %int %232 %int_2
+        %234 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %235 = OpLoad %int %234
+        %236 = OpIMul %int %235 %int_16
+        %237 = OpIAdd %int %233 %236
+        %238 = OpAccessChain %_ptr_Private_int %map %237
+        %239 = OpLoad %int %238
+        %240 = OpIEqual %bool %239 %int_0
+               OpBranch %229
+        %229 = OpLabel
+        %241 = OpPhi %bool %228 %223 %240 %230
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %242
+        %243 = OpLabel
+        %244 = OpLoad %int %d
+        %245 = OpISub %int %244 %int_1
+               OpStore %d %245
+        %246 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %247 = OpLoad %int %246
+        %248 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %249 = OpLoad %int %248
+        %250 = OpIMul %int %249 %int_16
+        %251 = OpIAdd %int %247 %250
+        %252 = OpAccessChain %_ptr_Private_int %map %251
+               OpStore %252 %int_1
+        %253 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %254 = OpLoad %int %253
+        %255 = OpISub %int %254 %int_1
+        %256 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %257 = OpLoad %int %256
+        %258 = OpIMul %int %257 %int_16
+        %259 = OpIAdd %int %255 %258
+        %260 = OpAccessChain %_ptr_Private_int %map %259
+               OpStore %260 %int_1
+        %261 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %262 = OpLoad %int %261
+        %263 = OpISub %int %262 %int_2
+        %264 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %265 = OpLoad %int %264
+        %266 = OpIMul %int %265 %int_16
+        %267 = OpIAdd %int %263 %266
+        %268 = OpAccessChain %_ptr_Private_int %map %267
+               OpStore %268 %int_1
+        %269 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %270 = OpLoad %int %269
+        %271 = OpISub %int %270 %int_2
+        %272 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %272 %271
+               OpBranch %242
+        %242 = OpLabel
+        %273 = OpLoad %int %d
+        %274 = OpSGreaterThanEqual %bool %273 %int_0
+               OpSelectionMerge %275 None
+               OpBranchConditional %274 %276 %275
+        %276 = OpLabel
+        %277 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %278 = OpLoad %int %277
+        %279 = OpSGreaterThan %bool %278 %int_0
+               OpBranch %275
+        %275 = OpLabel
+        %280 = OpPhi %bool %274 %242 %279 %276
+               OpSelectionMerge %281 None
+               OpBranchConditional %280 %282 %281
+        %282 = OpLabel
+        %283 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %284 = OpLoad %int %283
+        %285 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %286 = OpLoad %int %285
+        %287 = OpISub %int %286 %int_2
+        %288 = OpIMul %int %287 %int_16
+        %289 = OpIAdd %int %284 %288
+        %290 = OpAccessChain %_ptr_Private_int %map %289
+        %291 = OpLoad %int %290
+        %292 = OpIEqual %bool %291 %int_0
+               OpBranch %281
+        %281 = OpLabel
+        %293 = OpPhi %bool %280 %275 %292 %282
+               OpSelectionMerge %294 None
+               OpBranchConditional %293 %295 %294
+        %295 = OpLabel
+        %296 = OpLoad %int %d
+        %297 = OpISub %int %296 %int_1
+               OpStore %d %297
+        %298 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %299 = OpLoad %int %298
+        %300 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %301 = OpLoad %int %300
+        %302 = OpIMul %int %301 %int_16
+        %303 = OpIAdd %int %299 %302
+        %304 = OpAccessChain %_ptr_Private_int %map %303
+               OpStore %304 %int_1
+        %305 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %306 = OpLoad %int %305
+        %307 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %308 = OpLoad %int %307
+        %309 = OpISub %int %308 %int_1
+        %310 = OpIMul %int %309 %int_16
+        %311 = OpIAdd %int %306 %310
+        %312 = OpAccessChain %_ptr_Private_int %map %311
+               OpStore %312 %int_1
+        %313 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %314 = OpLoad %int %313
+        %315 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %316 = OpLoad %int %315
+        %317 = OpISub %int %316 %int_2
+        %318 = OpIMul %int %317 %int_16
+        %319 = OpIAdd %int %314 %318
+        %320 = OpAccessChain %_ptr_Private_int %map %319
+               OpStore %320 %int_1
+        %321 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %322 = OpLoad %int %321
+        %323 = OpISub %int %322 %int_2
+        %324 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %324 %323
+               OpBranch %294
+        %294 = OpLabel
+        %325 = OpLoad %int %d
+        %326 = OpSGreaterThanEqual %bool %325 %int_0
+               OpSelectionMerge %327 None
+               OpBranchConditional %326 %328 %327
+        %328 = OpLabel
+        %329 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %330 = OpLoad %int %329
+        %331 = OpSLessThan %bool %330 %int_14
+               OpBranch %327
+        %327 = OpLabel
+        %332 = OpPhi %bool %326 %294 %331 %328
+               OpSelectionMerge %333 None
+               OpBranchConditional %332 %334 %333
+        %334 = OpLabel
+        %335 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %336 = OpLoad %int %335
+        %337 = OpIAdd %int %336 %int_2
+        %338 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %339 = OpLoad %int %338
+        %340 = OpIMul %int %339 %int_16
+        %341 = OpIAdd %int %337 %340
+        %342 = OpAccessChain %_ptr_Private_int %map %341
+        %343 = OpLoad %int %342
+        %344 = OpIEqual %bool %343 %int_0
+               OpBranch %333
+        %333 = OpLabel
+        %345 = OpPhi %bool %332 %327 %344 %334
+               OpSelectionMerge %346 None
+               OpBranchConditional %345 %347 %346
+        %347 = OpLabel
+        %348 = OpLoad %int %d
+        %349 = OpISub %int %348 %int_1
+               OpStore %d %349
+        %350 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %351 = OpLoad %int %350
+        %352 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %353 = OpLoad %int %352
+        %354 = OpIMul %int %353 %int_16
+        %355 = OpIAdd %int %351 %354
+        %356 = OpAccessChain %_ptr_Private_int %map %355
+               OpStore %356 %int_1
+        %357 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %358 = OpLoad %int %357
+        %359 = OpIAdd %int %358 %int_1
+        %360 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %361 = OpLoad %int %360
+        %362 = OpIMul %int %361 %int_16
+        %363 = OpIAdd %int %359 %362
+        %364 = OpAccessChain %_ptr_Private_int %map %363
+               OpStore %364 %int_1
+        %365 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %366 = OpLoad %int %365
+        %367 = OpIAdd %int %366 %int_2
+        %368 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %369 = OpLoad %int %368
+        %370 = OpIMul %int %369 %int_16
+        %371 = OpIAdd %int %367 %370
+        %372 = OpAccessChain %_ptr_Private_int %map %371
+               OpStore %372 %int_1
+        %373 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %374 = OpLoad %int %373
+        %375 = OpIAdd %int %374 %int_2
+        %376 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %376 %375
+               OpBranch %346
+        %346 = OpLabel
+        %377 = OpLoad %int %d
+        %378 = OpSGreaterThanEqual %bool %377 %int_0
+               OpSelectionMerge %379 None
+               OpBranchConditional %378 %380 %379
+        %380 = OpLabel
+        %381 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %382 = OpLoad %int %381
+        %383 = OpSLessThan %bool %382 %int_14
+               OpBranch %379
+        %379 = OpLabel
+        %384 = OpPhi %bool %378 %346 %383 %380
+               OpSelectionMerge %385 None
+               OpBranchConditional %384 %386 %385
+        %386 = OpLabel
+        %387 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %388 = OpLoad %int %387
+        %389 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %390 = OpLoad %int %389
+        %391 = OpIAdd %int %390 %int_2
+        %392 = OpIMul %int %391 %int_16
+        %393 = OpIAdd %int %388 %392
+        %394 = OpAccessChain %_ptr_Private_int %map %393
+        %395 = OpLoad %int %394
+        %396 = OpIEqual %bool %395 %int_0
+               OpBranch %385
+        %385 = OpLabel
+        %397 = OpPhi %bool %384 %379 %396 %386
+               OpSelectionMerge %398 None
+               OpBranchConditional %397 %399 %398
+        %399 = OpLabel
+        %400 = OpLoad %int %d
+        %401 = OpISub %int %400 %int_1
+               OpStore %d %401
+        %402 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %403 = OpLoad %int %402
+        %404 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %405 = OpLoad %int %404
+        %406 = OpIMul %int %405 %int_16
+        %407 = OpIAdd %int %403 %406
+        %408 = OpAccessChain %_ptr_Private_int %map %407
+               OpStore %408 %int_1
+        %409 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %410 = OpLoad %int %409
+        %411 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %412 = OpLoad %int %411
+        %413 = OpIAdd %int %412 %int_1
+        %414 = OpIMul %int %413 %int_16
+        %415 = OpIAdd %int %410 %414
+        %416 = OpAccessChain %_ptr_Private_int %map %415
+               OpStore %416 %int_1
+        %417 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %418 = OpLoad %int %417
+        %419 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %420 = OpLoad %int %419
+        %421 = OpIAdd %int %420 %int_2
+        %422 = OpIMul %int %421 %int_16
+        %423 = OpIAdd %int %418 %422
+        %424 = OpAccessChain %_ptr_Private_int %map %423
+               OpStore %424 %int_1
+        %425 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %426 = OpLoad %int %425
+        %427 = OpIAdd %int %426 %int_2
+        %428 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %428 %427
+               OpBranch %398
+        %398 = OpLabel
+               OpBranch %170
+        %170 = OpLabel
+        %429 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %430 = OpLoad %int %429
+        %431 = OpIMul %int %430 %int_16
+        %432 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %433 = OpLoad %int %432
+        %434 = OpIAdd %int %431 %433
+        %435 = OpAccessChain %_ptr_Private_int %map %434
+        %436 = OpLoad %int %435
+        %437 = OpIEqual %bool %436 %int_1
+               OpSelectionMerge %438 None
+               OpBranchConditional %437 %439 %438
+        %439 = OpLabel
+               OpStore %_GLF_color %53
+               OpReturn
+        %438 = OpLabel
+               OpBranch %84
+         %84 = OpLabel
+        %440 = OpLoad %bool %canwalk
+               OpBranchConditional %440 %82 %83
+         %83 = OpLabel
+               OpStore %_GLF_color %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a5177e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,292 @@
+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_57 = gl_FragCoord;
+  const float2 x_60 = asfloat(x_7[0].xy);
+  pos = (float2(x_57.x, x_57.y) / x_60);
+  const float x_63 = pos.x;
+  const float x_67 = pos.y;
+  ipos = int2(int((x_63 * 16.0f)), int((x_67 * 16.0f)));
+  i = 0;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  while (true) {
+    bool x_102 = false;
+    bool x_122 = false;
+    bool x_142 = false;
+    bool x_162 = false;
+    bool x_103_phi = false;
+    bool x_123_phi = false;
+    bool x_143_phi = false;
+    bool x_163_phi = false;
+    v = (v + 1);
+    directions = 0;
+    const int x_89 = p.x;
+    const bool x_90 = (x_89 > 0);
+    x_103_phi = x_90;
+    if (x_90) {
+      const int x_94 = p.x;
+      const int x_97 = p.y;
+      const int x_101 = map[((x_94 - 2) + (x_97 * 16))];
+      x_102 = (x_101 == 0);
+      x_103_phi = x_102;
+    }
+    if (x_103_phi) {
+      directions = (directions + 1);
+    }
+    const int x_109 = p.y;
+    const bool x_110 = (x_109 > 0);
+    x_123_phi = x_110;
+    if (x_110) {
+      const int x_114 = p.x;
+      const int x_116 = p.y;
+      const int x_121 = map[(x_114 + ((x_116 - 2) * 16))];
+      x_122 = (x_121 == 0);
+      x_123_phi = x_122;
+    }
+    if (x_123_phi) {
+      directions = (directions + 1);
+    }
+    const int x_129 = p.x;
+    const bool x_130 = (x_129 < 14);
+    x_143_phi = x_130;
+    if (x_130) {
+      const int x_134 = p.x;
+      const int x_137 = p.y;
+      const int x_141 = map[((x_134 + 2) + (x_137 * 16))];
+      x_142 = (x_141 == 0);
+      x_143_phi = x_142;
+    }
+    if (x_143_phi) {
+      directions = (directions + 1);
+    }
+    const int x_149 = p.y;
+    const bool x_150 = (x_149 < 14);
+    x_163_phi = x_150;
+    if (x_150) {
+      const int x_154 = p.x;
+      const int x_156 = p.y;
+      const int x_161 = map[(x_154 + ((x_156 + 2) * 16))];
+      x_162 = (x_161 == 0);
+      x_163_phi = x_162;
+    }
+    if (x_163_phi) {
+      directions = (directions + 1);
+    }
+    bool x_227 = false;
+    bool x_240 = false;
+    bool x_279 = false;
+    bool x_292 = false;
+    bool x_331 = false;
+    bool x_344 = false;
+    bool x_383 = false;
+    bool x_396 = false;
+    bool x_228_phi = false;
+    bool x_241_phi = false;
+    bool x_280_phi = false;
+    bool x_293_phi = false;
+    bool x_332_phi = false;
+    bool x_345_phi = false;
+    bool x_384_phi = false;
+    bool x_397_phi = false;
+    if ((directions == 0)) {
+      canwalk = false;
+      i = 0;
+      {
+        for(; (i < 8); i = (i + 1)) {
+          j = 0;
+          {
+            for(; (j < 8); j = (j + 1)) {
+              const int x_194 = map[((j * 2) + ((i * 2) * 16))];
+              if ((x_194 == 0)) {
+                p.x = (j * 2);
+                p.y = (i * 2);
+                canwalk = true;
+              }
+            }
+          }
+        }
+      }
+      const int x_209 = p.x;
+      const int x_211 = p.y;
+      map[(x_209 + (x_211 * 16))] = 1;
+    } else {
+      d = (v % directions);
+      v = (v + directions);
+      const bool x_222 = (d >= 0);
+      x_228_phi = x_222;
+      if (x_222) {
+        const int x_226 = p.x;
+        x_227 = (x_226 > 0);
+        x_228_phi = x_227;
+      }
+      const bool x_228 = x_228_phi;
+      x_241_phi = x_228;
+      if (x_228) {
+        const int x_232 = p.x;
+        const int x_235 = p.y;
+        const int x_239 = map[((x_232 - 2) + (x_235 * 16))];
+        x_240 = (x_239 == 0);
+        x_241_phi = x_240;
+      }
+      if (x_241_phi) {
+        d = (d - 1);
+        const int x_247 = p.x;
+        const int x_249 = p.y;
+        map[(x_247 + (x_249 * 16))] = 1;
+        const int x_254 = p.x;
+        const int x_257 = p.y;
+        map[((x_254 - 1) + (x_257 * 16))] = 1;
+        const int x_262 = p.x;
+        const int x_265 = p.y;
+        map[((x_262 - 2) + (x_265 * 16))] = 1;
+        const int x_270 = p.x;
+        p.x = (x_270 - 2);
+      }
+      const bool x_274 = (d >= 0);
+      x_280_phi = x_274;
+      if (x_274) {
+        const int x_278 = p.y;
+        x_279 = (x_278 > 0);
+        x_280_phi = x_279;
+      }
+      const bool x_280 = x_280_phi;
+      x_293_phi = x_280;
+      if (x_280) {
+        const int x_284 = p.x;
+        const int x_286 = p.y;
+        const int x_291 = map[(x_284 + ((x_286 - 2) * 16))];
+        x_292 = (x_291 == 0);
+        x_293_phi = x_292;
+      }
+      if (x_293_phi) {
+        d = (d - 1);
+        const int x_299 = p.x;
+        const int x_301 = p.y;
+        map[(x_299 + (x_301 * 16))] = 1;
+        const int x_306 = p.x;
+        const int x_308 = p.y;
+        map[(x_306 + ((x_308 - 1) * 16))] = 1;
+        const int x_314 = p.x;
+        const int x_316 = p.y;
+        map[(x_314 + ((x_316 - 2) * 16))] = 1;
+        const int x_322 = p.y;
+        p.y = (x_322 - 2);
+      }
+      const bool x_326 = (d >= 0);
+      x_332_phi = x_326;
+      if (x_326) {
+        const int x_330 = p.x;
+        x_331 = (x_330 < 14);
+        x_332_phi = x_331;
+      }
+      const bool x_332 = x_332_phi;
+      x_345_phi = x_332;
+      if (x_332) {
+        const int x_336 = p.x;
+        const int x_339 = p.y;
+        const int x_343 = map[((x_336 + 2) + (x_339 * 16))];
+        x_344 = (x_343 == 0);
+        x_345_phi = x_344;
+      }
+      if (x_345_phi) {
+        d = (d - 1);
+        const int x_351 = p.x;
+        const int x_353 = p.y;
+        map[(x_351 + (x_353 * 16))] = 1;
+        const int x_358 = p.x;
+        const int x_361 = p.y;
+        map[((x_358 + 1) + (x_361 * 16))] = 1;
+        const int x_366 = p.x;
+        const int x_369 = p.y;
+        map[((x_366 + 2) + (x_369 * 16))] = 1;
+        const int x_374 = p.x;
+        p.x = (x_374 + 2);
+      }
+      const bool x_378 = (d >= 0);
+      x_384_phi = x_378;
+      if (x_378) {
+        const int x_382 = p.y;
+        x_383 = (x_382 < 14);
+        x_384_phi = x_383;
+      }
+      const bool x_384 = x_384_phi;
+      x_397_phi = x_384;
+      if (x_384) {
+        const int x_388 = p.x;
+        const int x_390 = p.y;
+        const int x_395 = map[(x_388 + ((x_390 + 2) * 16))];
+        x_396 = (x_395 == 0);
+        x_397_phi = x_396;
+      }
+      if (x_397_phi) {
+        d = (d - 1);
+        const int x_403 = p.x;
+        const int x_405 = p.y;
+        map[(x_403 + (x_405 * 16))] = 1;
+        const int x_410 = p.x;
+        const int x_412 = p.y;
+        map[(x_410 + ((x_412 + 1) * 16))] = 1;
+        const int x_418 = p.x;
+        const int x_420 = p.y;
+        map[(x_418 + ((x_420 + 2) * 16))] = 1;
+        const int x_426 = p.y;
+        p.y = (x_426 + 2);
+      }
+    }
+    const int x_430 = ipos.y;
+    const int x_433 = ipos.x;
+    const int x_436 = map[((x_430 * 16) + x_433)];
+    if ((x_436 == 1)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e1df0f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.msl
@@ -0,0 +1,347 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float2 pos = 0.0f;
+  int2 ipos = 0;
+  int i = 0;
+  int2 p = 0;
+  bool canwalk = false;
+  int v = 0;
+  int directions = 0;
+  int j = 0;
+  int d = 0;
+  float4 const x_57 = *(tint_symbol_5);
+  float2 const x_60 = x_7.resolution;
+  pos = (float2(x_57.x, x_57.y) / x_60);
+  float const x_63 = pos.x;
+  float const x_67 = pos.y;
+  ipos = int2(int((x_63 * 16.0f)), int((x_67 * 16.0f)));
+  i = 0;
+  while (true) {
+    int const x_75 = i;
+    if ((x_75 < 256)) {
+    } else {
+      break;
+    }
+    int const x_78 = i;
+    (*(tint_symbol_6)).arr[x_78] = 0;
+    {
+      int const x_80 = i;
+      i = (x_80 + 1);
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  while (true) {
+    bool x_102 = false;
+    bool x_122 = false;
+    bool x_142 = false;
+    bool x_162 = false;
+    bool x_103_phi = false;
+    bool x_123_phi = false;
+    bool x_143_phi = false;
+    bool x_163_phi = false;
+    int const x_86 = v;
+    v = (x_86 + 1);
+    directions = 0;
+    int const x_89 = p.x;
+    bool const x_90 = (x_89 > 0);
+    x_103_phi = x_90;
+    if (x_90) {
+      int const x_94 = p.x;
+      int const x_97 = p.y;
+      int const x_101 = (*(tint_symbol_6)).arr[((x_94 - 2) + (x_97 * 16))];
+      x_102 = (x_101 == 0);
+      x_103_phi = x_102;
+    }
+    bool const x_103 = x_103_phi;
+    if (x_103) {
+      int const x_106 = directions;
+      directions = (x_106 + 1);
+    }
+    int const x_109 = p.y;
+    bool const x_110 = (x_109 > 0);
+    x_123_phi = x_110;
+    if (x_110) {
+      int const x_114 = p.x;
+      int const x_116 = p.y;
+      int const x_121 = (*(tint_symbol_6)).arr[(x_114 + ((x_116 - 2) * 16))];
+      x_122 = (x_121 == 0);
+      x_123_phi = x_122;
+    }
+    bool const x_123 = x_123_phi;
+    if (x_123) {
+      int const x_126 = directions;
+      directions = (x_126 + 1);
+    }
+    int const x_129 = p.x;
+    bool const x_130 = (x_129 < 14);
+    x_143_phi = x_130;
+    if (x_130) {
+      int const x_134 = p.x;
+      int const x_137 = p.y;
+      int const x_141 = (*(tint_symbol_6)).arr[((x_134 + 2) + (x_137 * 16))];
+      x_142 = (x_141 == 0);
+      x_143_phi = x_142;
+    }
+    bool const x_143 = x_143_phi;
+    if (x_143) {
+      int const x_146 = directions;
+      directions = (x_146 + 1);
+    }
+    int const x_149 = p.y;
+    bool const x_150 = (x_149 < 14);
+    x_163_phi = x_150;
+    if (x_150) {
+      int const x_154 = p.x;
+      int const x_156 = p.y;
+      int const x_161 = (*(tint_symbol_6)).arr[(x_154 + ((x_156 + 2) * 16))];
+      x_162 = (x_161 == 0);
+      x_163_phi = x_162;
+    }
+    bool const x_163 = x_163_phi;
+    if (x_163) {
+      int const x_166 = directions;
+      directions = (x_166 + 1);
+    }
+    bool x_227 = false;
+    bool x_240 = false;
+    bool x_279 = false;
+    bool x_292 = false;
+    bool x_331 = false;
+    bool x_344 = false;
+    bool x_383 = false;
+    bool x_396 = false;
+    bool x_228_phi = false;
+    bool x_241_phi = false;
+    bool x_280_phi = false;
+    bool x_293_phi = false;
+    bool x_332_phi = false;
+    bool x_345_phi = false;
+    bool x_384_phi = false;
+    bool x_397_phi = false;
+    int const x_168 = directions;
+    if ((x_168 == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        int const x_177 = i;
+        if ((x_177 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        while (true) {
+          int const x_184 = j;
+          if ((x_184 < 8)) {
+          } else {
+            break;
+          }
+          int const x_187 = j;
+          int const x_189 = i;
+          int const x_194 = (*(tint_symbol_6)).arr[((x_187 * 2) + ((x_189 * 2) * 16))];
+          if ((x_194 == 0)) {
+            int const x_198 = j;
+            p.x = (x_198 * 2);
+            int const x_201 = i;
+            p.y = (x_201 * 2);
+            canwalk = true;
+          }
+          {
+            int const x_204 = j;
+            j = (x_204 + 1);
+          }
+        }
+        {
+          int const x_206 = i;
+          i = (x_206 + 1);
+        }
+      }
+      int const x_209 = p.x;
+      int const x_211 = p.y;
+      (*(tint_symbol_6)).arr[(x_209 + (x_211 * 16))] = 1;
+    } else {
+      int const x_215 = v;
+      int const x_216 = directions;
+      d = (x_215 % x_216);
+      int const x_218 = directions;
+      int const x_219 = v;
+      v = (x_219 + x_218);
+      int const x_221 = d;
+      bool const x_222 = (x_221 >= 0);
+      x_228_phi = x_222;
+      if (x_222) {
+        int const x_226 = p.x;
+        x_227 = (x_226 > 0);
+        x_228_phi = x_227;
+      }
+      bool const x_228 = x_228_phi;
+      x_241_phi = x_228;
+      if (x_228) {
+        int const x_232 = p.x;
+        int const x_235 = p.y;
+        int const x_239 = (*(tint_symbol_6)).arr[((x_232 - 2) + (x_235 * 16))];
+        x_240 = (x_239 == 0);
+        x_241_phi = x_240;
+      }
+      bool const x_241 = x_241_phi;
+      if (x_241) {
+        int const x_244 = d;
+        d = (x_244 - 1);
+        int const x_247 = p.x;
+        int const x_249 = p.y;
+        (*(tint_symbol_6)).arr[(x_247 + (x_249 * 16))] = 1;
+        int const x_254 = p.x;
+        int const x_257 = p.y;
+        (*(tint_symbol_6)).arr[((x_254 - 1) + (x_257 * 16))] = 1;
+        int const x_262 = p.x;
+        int const x_265 = p.y;
+        (*(tint_symbol_6)).arr[((x_262 - 2) + (x_265 * 16))] = 1;
+        int const x_270 = p.x;
+        p.x = (x_270 - 2);
+      }
+      int const x_273 = d;
+      bool const x_274 = (x_273 >= 0);
+      x_280_phi = x_274;
+      if (x_274) {
+        int const x_278 = p.y;
+        x_279 = (x_278 > 0);
+        x_280_phi = x_279;
+      }
+      bool const x_280 = x_280_phi;
+      x_293_phi = x_280;
+      if (x_280) {
+        int const x_284 = p.x;
+        int const x_286 = p.y;
+        int const x_291 = (*(tint_symbol_6)).arr[(x_284 + ((x_286 - 2) * 16))];
+        x_292 = (x_291 == 0);
+        x_293_phi = x_292;
+      }
+      bool const x_293 = x_293_phi;
+      if (x_293) {
+        int const x_296 = d;
+        d = (x_296 - 1);
+        int const x_299 = p.x;
+        int const x_301 = p.y;
+        (*(tint_symbol_6)).arr[(x_299 + (x_301 * 16))] = 1;
+        int const x_306 = p.x;
+        int const x_308 = p.y;
+        (*(tint_symbol_6)).arr[(x_306 + ((x_308 - 1) * 16))] = 1;
+        int const x_314 = p.x;
+        int const x_316 = p.y;
+        (*(tint_symbol_6)).arr[(x_314 + ((x_316 - 2) * 16))] = 1;
+        int const x_322 = p.y;
+        p.y = (x_322 - 2);
+      }
+      int const x_325 = d;
+      bool const x_326 = (x_325 >= 0);
+      x_332_phi = x_326;
+      if (x_326) {
+        int const x_330 = p.x;
+        x_331 = (x_330 < 14);
+        x_332_phi = x_331;
+      }
+      bool const x_332 = x_332_phi;
+      x_345_phi = x_332;
+      if (x_332) {
+        int const x_336 = p.x;
+        int const x_339 = p.y;
+        int const x_343 = (*(tint_symbol_6)).arr[((x_336 + 2) + (x_339 * 16))];
+        x_344 = (x_343 == 0);
+        x_345_phi = x_344;
+      }
+      bool const x_345 = x_345_phi;
+      if (x_345) {
+        int const x_348 = d;
+        d = (x_348 - 1);
+        int const x_351 = p.x;
+        int const x_353 = p.y;
+        (*(tint_symbol_6)).arr[(x_351 + (x_353 * 16))] = 1;
+        int const x_358 = p.x;
+        int const x_361 = p.y;
+        (*(tint_symbol_6)).arr[((x_358 + 1) + (x_361 * 16))] = 1;
+        int const x_366 = p.x;
+        int const x_369 = p.y;
+        (*(tint_symbol_6)).arr[((x_366 + 2) + (x_369 * 16))] = 1;
+        int const x_374 = p.x;
+        p.x = (x_374 + 2);
+      }
+      int const x_377 = d;
+      bool const x_378 = (x_377 >= 0);
+      x_384_phi = x_378;
+      if (x_378) {
+        int const x_382 = p.y;
+        x_383 = (x_382 < 14);
+        x_384_phi = x_383;
+      }
+      bool const x_384 = x_384_phi;
+      x_397_phi = x_384;
+      if (x_384) {
+        int const x_388 = p.x;
+        int const x_390 = p.y;
+        int const x_395 = (*(tint_symbol_6)).arr[(x_388 + ((x_390 + 2) * 16))];
+        x_396 = (x_395 == 0);
+        x_397_phi = x_396;
+      }
+      bool const x_397 = x_397_phi;
+      if (x_397) {
+        int const x_400 = d;
+        d = (x_400 - 1);
+        int const x_403 = p.x;
+        int const x_405 = p.y;
+        (*(tint_symbol_6)).arr[(x_403 + (x_405 * 16))] = 1;
+        int const x_410 = p.x;
+        int const x_412 = p.y;
+        (*(tint_symbol_6)).arr[(x_410 + ((x_412 + 1) * 16))] = 1;
+        int const x_418 = p.x;
+        int const x_420 = p.y;
+        (*(tint_symbol_6)).arr[(x_418 + ((x_420 + 2) * 16))] = 1;
+        int const x_426 = p.y;
+        p.y = (x_426 + 2);
+      }
+    }
+    int const x_430 = ipos.y;
+    int const x_433 = ipos.x;
+    int const x_436 = (*(tint_symbol_6)).arr[((x_430 * 16) + x_433)];
+    if ((x_436 == 1)) {
+      *(tint_symbol_7) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      return;
+    }
+    {
+      bool const x_440 = canwalk;
+      if (x_440) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread tint_array_wrapper tint_symbol_9 = {};
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_8), &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4613f9f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,775 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 509
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %map "map"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %x_102 "x_102"
+               OpName %x_122 "x_122"
+               OpName %x_142 "x_142"
+               OpName %x_162 "x_162"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_123_phi "x_123_phi"
+               OpName %x_143_phi "x_143_phi"
+               OpName %x_163_phi "x_163_phi"
+               OpName %x_227 "x_227"
+               OpName %x_240 "x_240"
+               OpName %x_279 "x_279"
+               OpName %x_292 "x_292"
+               OpName %x_331 "x_331"
+               OpName %x_344 "x_344"
+               OpName %x_383 "x_383"
+               OpName %x_396 "x_396"
+               OpName %x_228_phi "x_228_phi"
+               OpName %x_241_phi "x_241_phi"
+               OpName %x_280_phi "x_280_phi"
+               OpName %x_293_phi "x_293_phi"
+               OpName %x_332_phi "x_332_phi"
+               OpName %x_345_phi "x_345_phi"
+               OpName %x_384_phi "x_384_phi"
+               OpName %x_397_phi "x_397_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+         %16 = OpConstantNull %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private %16
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %28 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %32 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %float_16 = OpConstant %float 16
+      %int_0 = OpConstant %int 0
+    %int_256 = OpConstant %int 256
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %83 = OpConstantComposite %v2int %int_0 %int_0
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+        %489 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+        %495 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %496 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %28
+       %ipos = OpVariable %_ptr_Function_v2int Function %32
+          %i = OpVariable %_ptr_Function_int Function %35
+          %p = OpVariable %_ptr_Function_v2int Function %32
+    %canwalk = OpVariable %_ptr_Function_bool Function %40
+          %v = OpVariable %_ptr_Function_int Function %35
+ %directions = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+          %d = OpVariable %_ptr_Function_int Function %35
+      %x_102 = OpVariable %_ptr_Function_bool Function %40
+      %x_122 = OpVariable %_ptr_Function_bool Function %40
+      %x_142 = OpVariable %_ptr_Function_bool Function %40
+      %x_162 = OpVariable %_ptr_Function_bool Function %40
+  %x_103_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_123_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_143_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_163_phi = OpVariable %_ptr_Function_bool Function %40
+      %x_227 = OpVariable %_ptr_Function_bool Function %40
+      %x_240 = OpVariable %_ptr_Function_bool Function %40
+      %x_279 = OpVariable %_ptr_Function_bool Function %40
+      %x_292 = OpVariable %_ptr_Function_bool Function %40
+      %x_331 = OpVariable %_ptr_Function_bool Function %40
+      %x_344 = OpVariable %_ptr_Function_bool Function %40
+      %x_383 = OpVariable %_ptr_Function_bool Function %40
+      %x_396 = OpVariable %_ptr_Function_bool Function %40
+  %x_228_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_241_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_280_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_293_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_332_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_345_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_384_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_397_phi = OpVariable %_ptr_Function_bool Function %40
+         %45 = OpLoad %v4float %gl_FragCoord
+         %48 = OpAccessChain %_ptr_Uniform_v2float %x_7 %uint_0
+         %49 = OpLoad %v2float %48
+         %50 = OpCompositeExtract %float %45 0
+         %51 = OpCompositeExtract %float %45 1
+         %52 = OpCompositeConstruct %v2float %50 %51
+         %53 = OpFDiv %v2float %52 %49
+               OpStore %pos %53
+         %55 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %59 = OpLoad %float %58
+         %62 = OpFMul %float %56 %float_16
+         %60 = OpConvertFToS %int %62
+         %64 = OpFMul %float %59 %float_16
+         %63 = OpConvertFToS %int %64
+         %65 = OpCompositeConstruct %v2int %60 %63
+               OpStore %ipos %65
+               OpStore %i %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i
+         %73 = OpSLessThan %bool %71 %int_256
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %68
+         %74 = OpLabel
+         %77 = OpLoad %int %i
+         %79 = OpAccessChain %_ptr_Private_int %map %77
+               OpStore %79 %int_0
+               OpBranch %69
+         %69 = OpLabel
+         %80 = OpLoad %int %i
+         %82 = OpIAdd %int %80 %int_1
+               OpStore %i %82
+               OpBranch %67
+         %68 = OpLabel
+               OpStore %p %83
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %97 = OpLoad %int %v
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %v %98
+               OpStore %directions %int_0
+         %99 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %100 = OpLoad %int %99
+        %101 = OpSGreaterThan %bool %100 %int_0
+               OpStore %x_103_phi %101
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %104 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %107 = OpLoad %int %106
+        %109 = OpISub %int %105 %int_2
+        %111 = OpIMul %int %107 %int_16
+        %112 = OpIAdd %int %109 %111
+        %113 = OpAccessChain %_ptr_Private_int %map %112
+        %114 = OpLoad %int %113
+        %115 = OpIEqual %bool %114 %int_0
+               OpStore %x_102 %115
+        %116 = OpLoad %bool %x_102
+               OpStore %x_103_phi %116
+               OpBranch %102
+        %102 = OpLabel
+        %117 = OpLoad %bool %x_103_phi
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpLoad %int %directions
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %directions %121
+               OpBranch %118
+        %118 = OpLabel
+        %122 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %123 = OpLoad %int %122
+        %124 = OpSGreaterThan %bool %123 %int_0
+               OpStore %x_123_phi %124
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %130 = OpLoad %int %129
+        %131 = OpISub %int %130 %int_2
+        %132 = OpIMul %int %131 %int_16
+        %133 = OpIAdd %int %128 %132
+        %134 = OpAccessChain %_ptr_Private_int %map %133
+        %135 = OpLoad %int %134
+        %136 = OpIEqual %bool %135 %int_0
+               OpStore %x_122 %136
+        %137 = OpLoad %bool %x_122
+               OpStore %x_123_phi %137
+               OpBranch %125
+        %125 = OpLabel
+        %138 = OpLoad %bool %x_123_phi
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %directions
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %directions %142
+               OpBranch %139
+        %139 = OpLabel
+        %143 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %144 = OpLoad %int %143
+        %146 = OpSLessThan %bool %144 %int_14
+               OpStore %x_143_phi %146
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %150 = OpLoad %int %149
+        %151 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %152 = OpLoad %int %151
+        %153 = OpIAdd %int %150 %int_2
+        %154 = OpIMul %int %152 %int_16
+        %155 = OpIAdd %int %153 %154
+        %156 = OpAccessChain %_ptr_Private_int %map %155
+        %157 = OpLoad %int %156
+        %158 = OpIEqual %bool %157 %int_0
+               OpStore %x_142 %158
+        %159 = OpLoad %bool %x_142
+               OpStore %x_143_phi %159
+               OpBranch %147
+        %147 = OpLabel
+        %160 = OpLoad %bool %x_143_phi
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %int %directions
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %directions %164
+               OpBranch %161
+        %161 = OpLabel
+        %165 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %166 %int_14
+               OpStore %x_163_phi %167
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %168
+        %169 = OpLabel
+        %170 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %171 = OpLoad %int %170
+        %172 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %173 = OpLoad %int %172
+        %174 = OpIAdd %int %173 %int_2
+        %175 = OpIMul %int %174 %int_16
+        %176 = OpIAdd %int %171 %175
+        %177 = OpAccessChain %_ptr_Private_int %map %176
+        %178 = OpLoad %int %177
+        %179 = OpIEqual %bool %178 %int_0
+               OpStore %x_162 %179
+        %180 = OpLoad %bool %x_162
+               OpStore %x_163_phi %180
+               OpBranch %168
+        %168 = OpLabel
+        %181 = OpLoad %bool %x_163_phi
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %directions
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %directions %185
+               OpBranch %182
+        %182 = OpLabel
+        %202 = OpLoad %int %directions
+        %203 = OpIEqual %bool %202 %int_0
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %205 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %i
+        %214 = OpSLessThan %bool %212 %int_8
+               OpSelectionMerge %215 None
+               OpBranchConditional %214 %216 %217
+        %216 = OpLabel
+               OpBranch %215
+        %217 = OpLabel
+               OpBranch %209
+        %215 = OpLabel
+               OpStore %j %int_0
+               OpBranch %218
+        %218 = OpLabel
+               OpLoopMerge %219 %220 None
+               OpBranch %221
+        %221 = OpLabel
+        %222 = OpLoad %int %j
+        %223 = OpSLessThan %bool %222 %int_8
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %226
+        %225 = OpLabel
+               OpBranch %224
+        %226 = OpLabel
+               OpBranch %219
+        %224 = OpLabel
+        %227 = OpLoad %int %j
+        %228 = OpLoad %int %i
+        %229 = OpIMul %int %227 %int_2
+        %230 = OpIMul %int %228 %int_2
+        %231 = OpIMul %int %230 %int_16
+        %232 = OpIAdd %int %229 %231
+        %233 = OpAccessChain %_ptr_Private_int %map %232
+        %234 = OpLoad %int %233
+        %235 = OpIEqual %bool %234 %int_0
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %236
+        %237 = OpLabel
+        %238 = OpLoad %int %j
+        %239 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %240 = OpIMul %int %238 %int_2
+               OpStore %239 %240
+        %241 = OpLoad %int %i
+        %242 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %243 = OpIMul %int %241 %int_2
+               OpStore %242 %243
+               OpStore %canwalk %true
+               OpBranch %236
+        %236 = OpLabel
+               OpBranch %220
+        %220 = OpLabel
+        %244 = OpLoad %int %j
+        %245 = OpIAdd %int %244 %int_1
+               OpStore %j %245
+               OpBranch %218
+        %219 = OpLabel
+               OpBranch %210
+        %210 = OpLabel
+        %246 = OpLoad %int %i
+        %247 = OpIAdd %int %246 %int_1
+               OpStore %i %247
+               OpBranch %208
+        %209 = OpLabel
+        %248 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %249 = OpLoad %int %248
+        %250 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %251 = OpLoad %int %250
+        %252 = OpIMul %int %251 %int_16
+        %253 = OpIAdd %int %249 %252
+        %254 = OpAccessChain %_ptr_Private_int %map %253
+               OpStore %254 %int_1
+               OpBranch %204
+        %206 = OpLabel
+        %255 = OpLoad %int %v
+        %256 = OpLoad %int %directions
+        %257 = OpSMod %int %255 %256
+               OpStore %d %257
+        %258 = OpLoad %int %directions
+        %259 = OpLoad %int %v
+        %260 = OpIAdd %int %259 %258
+               OpStore %v %260
+        %261 = OpLoad %int %d
+        %262 = OpSGreaterThanEqual %bool %261 %int_0
+               OpStore %x_228_phi %262
+               OpSelectionMerge %263 None
+               OpBranchConditional %262 %264 %263
+        %264 = OpLabel
+        %265 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %266 = OpLoad %int %265
+        %267 = OpSGreaterThan %bool %266 %int_0
+               OpStore %x_227 %267
+        %268 = OpLoad %bool %x_227
+               OpStore %x_228_phi %268
+               OpBranch %263
+        %263 = OpLabel
+        %269 = OpLoad %bool %x_228_phi
+               OpStore %x_241_phi %269
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %270
+        %271 = OpLabel
+        %272 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %273 = OpLoad %int %272
+        %274 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %275 = OpLoad %int %274
+        %276 = OpISub %int %273 %int_2
+        %277 = OpIMul %int %275 %int_16
+        %278 = OpIAdd %int %276 %277
+        %279 = OpAccessChain %_ptr_Private_int %map %278
+        %280 = OpLoad %int %279
+        %281 = OpIEqual %bool %280 %int_0
+               OpStore %x_240 %281
+        %282 = OpLoad %bool %x_240
+               OpStore %x_241_phi %282
+               OpBranch %270
+        %270 = OpLabel
+        %283 = OpLoad %bool %x_241_phi
+               OpSelectionMerge %284 None
+               OpBranchConditional %283 %285 %284
+        %285 = OpLabel
+        %286 = OpLoad %int %d
+        %287 = OpISub %int %286 %int_1
+               OpStore %d %287
+        %288 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %289 = OpLoad %int %288
+        %290 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %291 = OpLoad %int %290
+        %292 = OpIMul %int %291 %int_16
+        %293 = OpIAdd %int %289 %292
+        %294 = OpAccessChain %_ptr_Private_int %map %293
+               OpStore %294 %int_1
+        %295 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %296 = OpLoad %int %295
+        %297 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %298 = OpLoad %int %297
+        %299 = OpISub %int %296 %int_1
+        %300 = OpIMul %int %298 %int_16
+        %301 = OpIAdd %int %299 %300
+        %302 = OpAccessChain %_ptr_Private_int %map %301
+               OpStore %302 %int_1
+        %303 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %304 = OpLoad %int %303
+        %305 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %306 = OpLoad %int %305
+        %307 = OpISub %int %304 %int_2
+        %308 = OpIMul %int %306 %int_16
+        %309 = OpIAdd %int %307 %308
+        %310 = OpAccessChain %_ptr_Private_int %map %309
+               OpStore %310 %int_1
+        %311 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %312 = OpLoad %int %311
+        %313 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %314 = OpISub %int %312 %int_2
+               OpStore %313 %314
+               OpBranch %284
+        %284 = OpLabel
+        %315 = OpLoad %int %d
+        %316 = OpSGreaterThanEqual %bool %315 %int_0
+               OpStore %x_280_phi %316
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %317
+        %318 = OpLabel
+        %319 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %320 = OpLoad %int %319
+        %321 = OpSGreaterThan %bool %320 %int_0
+               OpStore %x_279 %321
+        %322 = OpLoad %bool %x_279
+               OpStore %x_280_phi %322
+               OpBranch %317
+        %317 = OpLabel
+        %323 = OpLoad %bool %x_280_phi
+               OpStore %x_293_phi %323
+               OpSelectionMerge %324 None
+               OpBranchConditional %323 %325 %324
+        %325 = OpLabel
+        %326 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %327 = OpLoad %int %326
+        %328 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %329 = OpLoad %int %328
+        %330 = OpISub %int %329 %int_2
+        %331 = OpIMul %int %330 %int_16
+        %332 = OpIAdd %int %327 %331
+        %333 = OpAccessChain %_ptr_Private_int %map %332
+        %334 = OpLoad %int %333
+        %335 = OpIEqual %bool %334 %int_0
+               OpStore %x_292 %335
+        %336 = OpLoad %bool %x_292
+               OpStore %x_293_phi %336
+               OpBranch %324
+        %324 = OpLabel
+        %337 = OpLoad %bool %x_293_phi
+               OpSelectionMerge %338 None
+               OpBranchConditional %337 %339 %338
+        %339 = OpLabel
+        %340 = OpLoad %int %d
+        %341 = OpISub %int %340 %int_1
+               OpStore %d %341
+        %342 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %343 = OpLoad %int %342
+        %344 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %345 = OpLoad %int %344
+        %346 = OpIMul %int %345 %int_16
+        %347 = OpIAdd %int %343 %346
+        %348 = OpAccessChain %_ptr_Private_int %map %347
+               OpStore %348 %int_1
+        %349 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %350 = OpLoad %int %349
+        %351 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %352 = OpLoad %int %351
+        %353 = OpISub %int %352 %int_1
+        %354 = OpIMul %int %353 %int_16
+        %355 = OpIAdd %int %350 %354
+        %356 = OpAccessChain %_ptr_Private_int %map %355
+               OpStore %356 %int_1
+        %357 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %358 = OpLoad %int %357
+        %359 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %360 = OpLoad %int %359
+        %361 = OpISub %int %360 %int_2
+        %362 = OpIMul %int %361 %int_16
+        %363 = OpIAdd %int %358 %362
+        %364 = OpAccessChain %_ptr_Private_int %map %363
+               OpStore %364 %int_1
+        %365 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %366 = OpLoad %int %365
+        %367 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %368 = OpISub %int %366 %int_2
+               OpStore %367 %368
+               OpBranch %338
+        %338 = OpLabel
+        %369 = OpLoad %int %d
+        %370 = OpSGreaterThanEqual %bool %369 %int_0
+               OpStore %x_332_phi %370
+               OpSelectionMerge %371 None
+               OpBranchConditional %370 %372 %371
+        %372 = OpLabel
+        %373 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %374 = OpLoad %int %373
+        %375 = OpSLessThan %bool %374 %int_14
+               OpStore %x_331 %375
+        %376 = OpLoad %bool %x_331
+               OpStore %x_332_phi %376
+               OpBranch %371
+        %371 = OpLabel
+        %377 = OpLoad %bool %x_332_phi
+               OpStore %x_345_phi %377
+               OpSelectionMerge %378 None
+               OpBranchConditional %377 %379 %378
+        %379 = OpLabel
+        %380 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %381 = OpLoad %int %380
+        %382 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %383 = OpLoad %int %382
+        %384 = OpIAdd %int %381 %int_2
+        %385 = OpIMul %int %383 %int_16
+        %386 = OpIAdd %int %384 %385
+        %387 = OpAccessChain %_ptr_Private_int %map %386
+        %388 = OpLoad %int %387
+        %389 = OpIEqual %bool %388 %int_0
+               OpStore %x_344 %389
+        %390 = OpLoad %bool %x_344
+               OpStore %x_345_phi %390
+               OpBranch %378
+        %378 = OpLabel
+        %391 = OpLoad %bool %x_345_phi
+               OpSelectionMerge %392 None
+               OpBranchConditional %391 %393 %392
+        %393 = OpLabel
+        %394 = OpLoad %int %d
+        %395 = OpISub %int %394 %int_1
+               OpStore %d %395
+        %396 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %397 = OpLoad %int %396
+        %398 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %399 = OpLoad %int %398
+        %400 = OpIMul %int %399 %int_16
+        %401 = OpIAdd %int %397 %400
+        %402 = OpAccessChain %_ptr_Private_int %map %401
+               OpStore %402 %int_1
+        %403 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %404 = OpLoad %int %403
+        %405 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %406 = OpLoad %int %405
+        %407 = OpIAdd %int %404 %int_1
+        %408 = OpIMul %int %406 %int_16
+        %409 = OpIAdd %int %407 %408
+        %410 = OpAccessChain %_ptr_Private_int %map %409
+               OpStore %410 %int_1
+        %411 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %412 = OpLoad %int %411
+        %413 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %414 = OpLoad %int %413
+        %415 = OpIAdd %int %412 %int_2
+        %416 = OpIMul %int %414 %int_16
+        %417 = OpIAdd %int %415 %416
+        %418 = OpAccessChain %_ptr_Private_int %map %417
+               OpStore %418 %int_1
+        %419 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %420 = OpLoad %int %419
+        %421 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %422 = OpIAdd %int %420 %int_2
+               OpStore %421 %422
+               OpBranch %392
+        %392 = OpLabel
+        %423 = OpLoad %int %d
+        %424 = OpSGreaterThanEqual %bool %423 %int_0
+               OpStore %x_384_phi %424
+               OpSelectionMerge %425 None
+               OpBranchConditional %424 %426 %425
+        %426 = OpLabel
+        %427 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %428 = OpLoad %int %427
+        %429 = OpSLessThan %bool %428 %int_14
+               OpStore %x_383 %429
+        %430 = OpLoad %bool %x_383
+               OpStore %x_384_phi %430
+               OpBranch %425
+        %425 = OpLabel
+        %431 = OpLoad %bool %x_384_phi
+               OpStore %x_397_phi %431
+               OpSelectionMerge %432 None
+               OpBranchConditional %431 %433 %432
+        %433 = OpLabel
+        %434 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %435 = OpLoad %int %434
+        %436 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %437 = OpLoad %int %436
+        %438 = OpIAdd %int %437 %int_2
+        %439 = OpIMul %int %438 %int_16
+        %440 = OpIAdd %int %435 %439
+        %441 = OpAccessChain %_ptr_Private_int %map %440
+        %442 = OpLoad %int %441
+        %443 = OpIEqual %bool %442 %int_0
+               OpStore %x_396 %443
+        %444 = OpLoad %bool %x_396
+               OpStore %x_397_phi %444
+               OpBranch %432
+        %432 = OpLabel
+        %445 = OpLoad %bool %x_397_phi
+               OpSelectionMerge %446 None
+               OpBranchConditional %445 %447 %446
+        %447 = OpLabel
+        %448 = OpLoad %int %d
+        %449 = OpISub %int %448 %int_1
+               OpStore %d %449
+        %450 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %451 = OpLoad %int %450
+        %452 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %453 = OpLoad %int %452
+        %454 = OpIMul %int %453 %int_16
+        %455 = OpIAdd %int %451 %454
+        %456 = OpAccessChain %_ptr_Private_int %map %455
+               OpStore %456 %int_1
+        %457 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %458 = OpLoad %int %457
+        %459 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %460 = OpLoad %int %459
+        %461 = OpIAdd %int %460 %int_1
+        %462 = OpIMul %int %461 %int_16
+        %463 = OpIAdd %int %458 %462
+        %464 = OpAccessChain %_ptr_Private_int %map %463
+               OpStore %464 %int_1
+        %465 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %466 = OpLoad %int %465
+        %467 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %468 = OpLoad %int %467
+        %469 = OpIAdd %int %468 %int_2
+        %470 = OpIMul %int %469 %int_16
+        %471 = OpIAdd %int %466 %470
+        %472 = OpAccessChain %_ptr_Private_int %map %471
+               OpStore %472 %int_1
+        %473 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %474 = OpLoad %int %473
+        %475 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %476 = OpIAdd %int %474 %int_2
+               OpStore %475 %476
+               OpBranch %446
+        %446 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+        %477 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %478 = OpLoad %int %477
+        %479 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %480 = OpLoad %int %479
+        %481 = OpIMul %int %478 %int_16
+        %482 = OpIAdd %int %481 %480
+        %483 = OpAccessChain %_ptr_Private_int %map %482
+        %484 = OpLoad %int %483
+        %485 = OpIEqual %bool %484 %int_1
+               OpSelectionMerge %486 None
+               OpBranchConditional %485 %487 %486
+        %487 = OpLabel
+               OpStore %x_GLF_color %489
+               OpReturn
+        %486 = OpLabel
+               OpBranch %87
+         %87 = OpLabel
+        %490 = OpLoad %bool %canwalk
+               OpSelectionMerge %491 None
+               OpBranchConditional %490 %492 %493
+        %492 = OpLabel
+               OpBranch %491
+        %493 = OpLabel
+               OpBranch %86
+        %491 = OpLabel
+               OpBranch %85
+         %86 = OpLabel
+               OpStore %x_GLF_color %495
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %496
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %500 = OpLabel
+        %501 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %501
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %503 = OpLabel
+        %504 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %504
+        %505 = OpFunctionCall %void %main_1
+        %507 = OpLoad %v4float %x_GLF_color
+        %508 = OpCompositeConstruct %main_out %507
+        %506 = OpFunctionCall %void %tint_symbol_3 %508
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 87[%87] is not post dominated by the back-edge block 491[%491]
+  %491 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..4128fb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,348 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_57 : vec4<f32> = gl_FragCoord;
+  let x_60 : vec2<f32> = x_7.resolution;
+  pos = (vec2<f32>(x_57.x, x_57.y) / x_60);
+  let x_63 : f32 = pos.x;
+  let x_67 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_63 * 16.0)), i32((x_67 * 16.0)));
+  i = 0;
+  loop {
+    let x_75 : i32 = i;
+    if ((x_75 < 256)) {
+    } else {
+      break;
+    }
+    let x_78 : i32 = i;
+    map[x_78] = 0;
+
+    continuing {
+      let x_80 : i32 = i;
+      i = (x_80 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_102 : bool;
+    var x_122 : bool;
+    var x_142 : bool;
+    var x_162 : bool;
+    var x_103_phi : bool;
+    var x_123_phi : bool;
+    var x_143_phi : bool;
+    var x_163_phi : bool;
+    let x_86 : i32 = v;
+    v = (x_86 + 1);
+    directions = 0;
+    let x_89 : i32 = p.x;
+    let x_90 : bool = (x_89 > 0);
+    x_103_phi = x_90;
+    if (x_90) {
+      let x_94 : i32 = p.x;
+      let x_97 : i32 = p.y;
+      let x_101 : i32 = map[((x_94 - 2) + (x_97 * 16))];
+      x_102 = (x_101 == 0);
+      x_103_phi = x_102;
+    }
+    let x_103 : bool = x_103_phi;
+    if (x_103) {
+      let x_106 : i32 = directions;
+      directions = (x_106 + 1);
+    }
+    let x_109 : i32 = p.y;
+    let x_110 : bool = (x_109 > 0);
+    x_123_phi = x_110;
+    if (x_110) {
+      let x_114 : i32 = p.x;
+      let x_116 : i32 = p.y;
+      let x_121 : i32 = map[(x_114 + ((x_116 - 2) * 16))];
+      x_122 = (x_121 == 0);
+      x_123_phi = x_122;
+    }
+    let x_123 : bool = x_123_phi;
+    if (x_123) {
+      let x_126 : i32 = directions;
+      directions = (x_126 + 1);
+    }
+    let x_129 : i32 = p.x;
+    let x_130 : bool = (x_129 < 14);
+    x_143_phi = x_130;
+    if (x_130) {
+      let x_134 : i32 = p.x;
+      let x_137 : i32 = p.y;
+      let x_141 : i32 = map[((x_134 + 2) + (x_137 * 16))];
+      x_142 = (x_141 == 0);
+      x_143_phi = x_142;
+    }
+    let x_143 : bool = x_143_phi;
+    if (x_143) {
+      let x_146 : i32 = directions;
+      directions = (x_146 + 1);
+    }
+    let x_149 : i32 = p.y;
+    let x_150 : bool = (x_149 < 14);
+    x_163_phi = x_150;
+    if (x_150) {
+      let x_154 : i32 = p.x;
+      let x_156 : i32 = p.y;
+      let x_161 : i32 = map[(x_154 + ((x_156 + 2) * 16))];
+      x_162 = (x_161 == 0);
+      x_163_phi = x_162;
+    }
+    let x_163 : bool = x_163_phi;
+    if (x_163) {
+      let x_166 : i32 = directions;
+      directions = (x_166 + 1);
+    }
+    var x_227 : bool;
+    var x_240 : bool;
+    var x_279 : bool;
+    var x_292 : bool;
+    var x_331 : bool;
+    var x_344 : bool;
+    var x_383 : bool;
+    var x_396 : bool;
+    var x_228_phi : bool;
+    var x_241_phi : bool;
+    var x_280_phi : bool;
+    var x_293_phi : bool;
+    var x_332_phi : bool;
+    var x_345_phi : bool;
+    var x_384_phi : bool;
+    var x_397_phi : bool;
+    let x_168 : i32 = directions;
+    if ((x_168 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_177 : i32 = i;
+        if ((x_177 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        loop {
+          let x_184 : i32 = j;
+          if ((x_184 < 8)) {
+          } else {
+            break;
+          }
+          let x_187 : i32 = j;
+          let x_189 : i32 = i;
+          let x_194 : i32 = map[((x_187 * 2) + ((x_189 * 2) * 16))];
+          if ((x_194 == 0)) {
+            let x_198 : i32 = j;
+            p.x = (x_198 * 2);
+            let x_201 : i32 = i;
+            p.y = (x_201 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_204 : i32 = j;
+            j = (x_204 + 1);
+          }
+        }
+
+        continuing {
+          let x_206 : i32 = i;
+          i = (x_206 + 1);
+        }
+      }
+      let x_209 : i32 = p.x;
+      let x_211 : i32 = p.y;
+      map[(x_209 + (x_211 * 16))] = 1;
+    } else {
+      let x_215 : i32 = v;
+      let x_216 : i32 = directions;
+      d = (x_215 % x_216);
+      let x_218 : i32 = directions;
+      let x_219 : i32 = v;
+      v = (x_219 + x_218);
+      let x_221 : i32 = d;
+      let x_222 : bool = (x_221 >= 0);
+      x_228_phi = x_222;
+      if (x_222) {
+        let x_226 : i32 = p.x;
+        x_227 = (x_226 > 0);
+        x_228_phi = x_227;
+      }
+      let x_228 : bool = x_228_phi;
+      x_241_phi = x_228;
+      if (x_228) {
+        let x_232 : i32 = p.x;
+        let x_235 : i32 = p.y;
+        let x_239 : i32 = map[((x_232 - 2) + (x_235 * 16))];
+        x_240 = (x_239 == 0);
+        x_241_phi = x_240;
+      }
+      let x_241 : bool = x_241_phi;
+      if (x_241) {
+        let x_244 : i32 = d;
+        d = (x_244 - 1);
+        let x_247 : i32 = p.x;
+        let x_249 : i32 = p.y;
+        map[(x_247 + (x_249 * 16))] = 1;
+        let x_254 : i32 = p.x;
+        let x_257 : i32 = p.y;
+        map[((x_254 - 1) + (x_257 * 16))] = 1;
+        let x_262 : i32 = p.x;
+        let x_265 : i32 = p.y;
+        map[((x_262 - 2) + (x_265 * 16))] = 1;
+        let x_270 : i32 = p.x;
+        p.x = (x_270 - 2);
+      }
+      let x_273 : i32 = d;
+      let x_274 : bool = (x_273 >= 0);
+      x_280_phi = x_274;
+      if (x_274) {
+        let x_278 : i32 = p.y;
+        x_279 = (x_278 > 0);
+        x_280_phi = x_279;
+      }
+      let x_280 : bool = x_280_phi;
+      x_293_phi = x_280;
+      if (x_280) {
+        let x_284 : i32 = p.x;
+        let x_286 : i32 = p.y;
+        let x_291 : i32 = map[(x_284 + ((x_286 - 2) * 16))];
+        x_292 = (x_291 == 0);
+        x_293_phi = x_292;
+      }
+      let x_293 : bool = x_293_phi;
+      if (x_293) {
+        let x_296 : i32 = d;
+        d = (x_296 - 1);
+        let x_299 : i32 = p.x;
+        let x_301 : i32 = p.y;
+        map[(x_299 + (x_301 * 16))] = 1;
+        let x_306 : i32 = p.x;
+        let x_308 : i32 = p.y;
+        map[(x_306 + ((x_308 - 1) * 16))] = 1;
+        let x_314 : i32 = p.x;
+        let x_316 : i32 = p.y;
+        map[(x_314 + ((x_316 - 2) * 16))] = 1;
+        let x_322 : i32 = p.y;
+        p.y = (x_322 - 2);
+      }
+      let x_325 : i32 = d;
+      let x_326 : bool = (x_325 >= 0);
+      x_332_phi = x_326;
+      if (x_326) {
+        let x_330 : i32 = p.x;
+        x_331 = (x_330 < 14);
+        x_332_phi = x_331;
+      }
+      let x_332 : bool = x_332_phi;
+      x_345_phi = x_332;
+      if (x_332) {
+        let x_336 : i32 = p.x;
+        let x_339 : i32 = p.y;
+        let x_343 : i32 = map[((x_336 + 2) + (x_339 * 16))];
+        x_344 = (x_343 == 0);
+        x_345_phi = x_344;
+      }
+      let x_345 : bool = x_345_phi;
+      if (x_345) {
+        let x_348 : i32 = d;
+        d = (x_348 - 1);
+        let x_351 : i32 = p.x;
+        let x_353 : i32 = p.y;
+        map[(x_351 + (x_353 * 16))] = 1;
+        let x_358 : i32 = p.x;
+        let x_361 : i32 = p.y;
+        map[((x_358 + 1) + (x_361 * 16))] = 1;
+        let x_366 : i32 = p.x;
+        let x_369 : i32 = p.y;
+        map[((x_366 + 2) + (x_369 * 16))] = 1;
+        let x_374 : i32 = p.x;
+        p.x = (x_374 + 2);
+      }
+      let x_377 : i32 = d;
+      let x_378 : bool = (x_377 >= 0);
+      x_384_phi = x_378;
+      if (x_378) {
+        let x_382 : i32 = p.y;
+        x_383 = (x_382 < 14);
+        x_384_phi = x_383;
+      }
+      let x_384 : bool = x_384_phi;
+      x_397_phi = x_384;
+      if (x_384) {
+        let x_388 : i32 = p.x;
+        let x_390 : i32 = p.y;
+        let x_395 : i32 = map[(x_388 + ((x_390 + 2) * 16))];
+        x_396 = (x_395 == 0);
+        x_397_phi = x_396;
+      }
+      let x_397 : bool = x_397_phi;
+      if (x_397) {
+        let x_400 : i32 = d;
+        d = (x_400 - 1);
+        let x_403 : i32 = p.x;
+        let x_405 : i32 = p.y;
+        map[(x_403 + (x_405 * 16))] = 1;
+        let x_410 : i32 = p.x;
+        let x_412 : i32 = p.y;
+        map[(x_410 + ((x_412 + 1) * 16))] = 1;
+        let x_418 : i32 = p.x;
+        let x_420 : i32 = p.y;
+        map[(x_418 + ((x_420 + 2) * 16))] = 1;
+        let x_426 : i32 = p.y;
+        p.y = (x_426 + 2);
+      }
+    }
+    let x_430 : i32 = ipos.y;
+    let x_433 : i32 = ipos.x;
+    let x_436 : i32 = map[((x_430 * 16) + x_433)];
+    if ((x_436 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_440 : bool = canwalk;
+      if (x_440) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
new file mode 100644
index 0000000..4128fb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
@@ -0,0 +1,348 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_57 : vec4<f32> = gl_FragCoord;
+  let x_60 : vec2<f32> = x_7.resolution;
+  pos = (vec2<f32>(x_57.x, x_57.y) / x_60);
+  let x_63 : f32 = pos.x;
+  let x_67 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_63 * 16.0)), i32((x_67 * 16.0)));
+  i = 0;
+  loop {
+    let x_75 : i32 = i;
+    if ((x_75 < 256)) {
+    } else {
+      break;
+    }
+    let x_78 : i32 = i;
+    map[x_78] = 0;
+
+    continuing {
+      let x_80 : i32 = i;
+      i = (x_80 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_102 : bool;
+    var x_122 : bool;
+    var x_142 : bool;
+    var x_162 : bool;
+    var x_103_phi : bool;
+    var x_123_phi : bool;
+    var x_143_phi : bool;
+    var x_163_phi : bool;
+    let x_86 : i32 = v;
+    v = (x_86 + 1);
+    directions = 0;
+    let x_89 : i32 = p.x;
+    let x_90 : bool = (x_89 > 0);
+    x_103_phi = x_90;
+    if (x_90) {
+      let x_94 : i32 = p.x;
+      let x_97 : i32 = p.y;
+      let x_101 : i32 = map[((x_94 - 2) + (x_97 * 16))];
+      x_102 = (x_101 == 0);
+      x_103_phi = x_102;
+    }
+    let x_103 : bool = x_103_phi;
+    if (x_103) {
+      let x_106 : i32 = directions;
+      directions = (x_106 + 1);
+    }
+    let x_109 : i32 = p.y;
+    let x_110 : bool = (x_109 > 0);
+    x_123_phi = x_110;
+    if (x_110) {
+      let x_114 : i32 = p.x;
+      let x_116 : i32 = p.y;
+      let x_121 : i32 = map[(x_114 + ((x_116 - 2) * 16))];
+      x_122 = (x_121 == 0);
+      x_123_phi = x_122;
+    }
+    let x_123 : bool = x_123_phi;
+    if (x_123) {
+      let x_126 : i32 = directions;
+      directions = (x_126 + 1);
+    }
+    let x_129 : i32 = p.x;
+    let x_130 : bool = (x_129 < 14);
+    x_143_phi = x_130;
+    if (x_130) {
+      let x_134 : i32 = p.x;
+      let x_137 : i32 = p.y;
+      let x_141 : i32 = map[((x_134 + 2) + (x_137 * 16))];
+      x_142 = (x_141 == 0);
+      x_143_phi = x_142;
+    }
+    let x_143 : bool = x_143_phi;
+    if (x_143) {
+      let x_146 : i32 = directions;
+      directions = (x_146 + 1);
+    }
+    let x_149 : i32 = p.y;
+    let x_150 : bool = (x_149 < 14);
+    x_163_phi = x_150;
+    if (x_150) {
+      let x_154 : i32 = p.x;
+      let x_156 : i32 = p.y;
+      let x_161 : i32 = map[(x_154 + ((x_156 + 2) * 16))];
+      x_162 = (x_161 == 0);
+      x_163_phi = x_162;
+    }
+    let x_163 : bool = x_163_phi;
+    if (x_163) {
+      let x_166 : i32 = directions;
+      directions = (x_166 + 1);
+    }
+    var x_227 : bool;
+    var x_240 : bool;
+    var x_279 : bool;
+    var x_292 : bool;
+    var x_331 : bool;
+    var x_344 : bool;
+    var x_383 : bool;
+    var x_396 : bool;
+    var x_228_phi : bool;
+    var x_241_phi : bool;
+    var x_280_phi : bool;
+    var x_293_phi : bool;
+    var x_332_phi : bool;
+    var x_345_phi : bool;
+    var x_384_phi : bool;
+    var x_397_phi : bool;
+    let x_168 : i32 = directions;
+    if ((x_168 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_177 : i32 = i;
+        if ((x_177 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        loop {
+          let x_184 : i32 = j;
+          if ((x_184 < 8)) {
+          } else {
+            break;
+          }
+          let x_187 : i32 = j;
+          let x_189 : i32 = i;
+          let x_194 : i32 = map[((x_187 * 2) + ((x_189 * 2) * 16))];
+          if ((x_194 == 0)) {
+            let x_198 : i32 = j;
+            p.x = (x_198 * 2);
+            let x_201 : i32 = i;
+            p.y = (x_201 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_204 : i32 = j;
+            j = (x_204 + 1);
+          }
+        }
+
+        continuing {
+          let x_206 : i32 = i;
+          i = (x_206 + 1);
+        }
+      }
+      let x_209 : i32 = p.x;
+      let x_211 : i32 = p.y;
+      map[(x_209 + (x_211 * 16))] = 1;
+    } else {
+      let x_215 : i32 = v;
+      let x_216 : i32 = directions;
+      d = (x_215 % x_216);
+      let x_218 : i32 = directions;
+      let x_219 : i32 = v;
+      v = (x_219 + x_218);
+      let x_221 : i32 = d;
+      let x_222 : bool = (x_221 >= 0);
+      x_228_phi = x_222;
+      if (x_222) {
+        let x_226 : i32 = p.x;
+        x_227 = (x_226 > 0);
+        x_228_phi = x_227;
+      }
+      let x_228 : bool = x_228_phi;
+      x_241_phi = x_228;
+      if (x_228) {
+        let x_232 : i32 = p.x;
+        let x_235 : i32 = p.y;
+        let x_239 : i32 = map[((x_232 - 2) + (x_235 * 16))];
+        x_240 = (x_239 == 0);
+        x_241_phi = x_240;
+      }
+      let x_241 : bool = x_241_phi;
+      if (x_241) {
+        let x_244 : i32 = d;
+        d = (x_244 - 1);
+        let x_247 : i32 = p.x;
+        let x_249 : i32 = p.y;
+        map[(x_247 + (x_249 * 16))] = 1;
+        let x_254 : i32 = p.x;
+        let x_257 : i32 = p.y;
+        map[((x_254 - 1) + (x_257 * 16))] = 1;
+        let x_262 : i32 = p.x;
+        let x_265 : i32 = p.y;
+        map[((x_262 - 2) + (x_265 * 16))] = 1;
+        let x_270 : i32 = p.x;
+        p.x = (x_270 - 2);
+      }
+      let x_273 : i32 = d;
+      let x_274 : bool = (x_273 >= 0);
+      x_280_phi = x_274;
+      if (x_274) {
+        let x_278 : i32 = p.y;
+        x_279 = (x_278 > 0);
+        x_280_phi = x_279;
+      }
+      let x_280 : bool = x_280_phi;
+      x_293_phi = x_280;
+      if (x_280) {
+        let x_284 : i32 = p.x;
+        let x_286 : i32 = p.y;
+        let x_291 : i32 = map[(x_284 + ((x_286 - 2) * 16))];
+        x_292 = (x_291 == 0);
+        x_293_phi = x_292;
+      }
+      let x_293 : bool = x_293_phi;
+      if (x_293) {
+        let x_296 : i32 = d;
+        d = (x_296 - 1);
+        let x_299 : i32 = p.x;
+        let x_301 : i32 = p.y;
+        map[(x_299 + (x_301 * 16))] = 1;
+        let x_306 : i32 = p.x;
+        let x_308 : i32 = p.y;
+        map[(x_306 + ((x_308 - 1) * 16))] = 1;
+        let x_314 : i32 = p.x;
+        let x_316 : i32 = p.y;
+        map[(x_314 + ((x_316 - 2) * 16))] = 1;
+        let x_322 : i32 = p.y;
+        p.y = (x_322 - 2);
+      }
+      let x_325 : i32 = d;
+      let x_326 : bool = (x_325 >= 0);
+      x_332_phi = x_326;
+      if (x_326) {
+        let x_330 : i32 = p.x;
+        x_331 = (x_330 < 14);
+        x_332_phi = x_331;
+      }
+      let x_332 : bool = x_332_phi;
+      x_345_phi = x_332;
+      if (x_332) {
+        let x_336 : i32 = p.x;
+        let x_339 : i32 = p.y;
+        let x_343 : i32 = map[((x_336 + 2) + (x_339 * 16))];
+        x_344 = (x_343 == 0);
+        x_345_phi = x_344;
+      }
+      let x_345 : bool = x_345_phi;
+      if (x_345) {
+        let x_348 : i32 = d;
+        d = (x_348 - 1);
+        let x_351 : i32 = p.x;
+        let x_353 : i32 = p.y;
+        map[(x_351 + (x_353 * 16))] = 1;
+        let x_358 : i32 = p.x;
+        let x_361 : i32 = p.y;
+        map[((x_358 + 1) + (x_361 * 16))] = 1;
+        let x_366 : i32 = p.x;
+        let x_369 : i32 = p.y;
+        map[((x_366 + 2) + (x_369 * 16))] = 1;
+        let x_374 : i32 = p.x;
+        p.x = (x_374 + 2);
+      }
+      let x_377 : i32 = d;
+      let x_378 : bool = (x_377 >= 0);
+      x_384_phi = x_378;
+      if (x_378) {
+        let x_382 : i32 = p.y;
+        x_383 = (x_382 < 14);
+        x_384_phi = x_383;
+      }
+      let x_384 : bool = x_384_phi;
+      x_397_phi = x_384;
+      if (x_384) {
+        let x_388 : i32 = p.x;
+        let x_390 : i32 = p.y;
+        let x_395 : i32 = map[(x_388 + ((x_390 + 2) * 16))];
+        x_396 = (x_395 == 0);
+        x_397_phi = x_396;
+      }
+      let x_397 : bool = x_397_phi;
+      if (x_397) {
+        let x_400 : i32 = d;
+        d = (x_400 - 1);
+        let x_403 : i32 = p.x;
+        let x_405 : i32 = p.y;
+        map[(x_403 + (x_405 * 16))] = 1;
+        let x_410 : i32 = p.x;
+        let x_412 : i32 = p.y;
+        map[(x_410 + ((x_412 + 1) * 16))] = 1;
+        let x_418 : i32 = p.x;
+        let x_420 : i32 = p.y;
+        map[(x_418 + ((x_420 + 2) * 16))] = 1;
+        let x_426 : i32 = p.y;
+        p.y = (x_426 + 2);
+      }
+    }
+    let x_430 : i32 = ipos.y;
+    let x_433 : i32 = ipos.x;
+    let x_436 : i32 = map[((x_430 * 16) + x_433)];
+    if ((x_436 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_440 : bool = canwalk;
+      if (x_440) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a5177e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,292 @@
+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_57 = gl_FragCoord;
+  const float2 x_60 = asfloat(x_7[0].xy);
+  pos = (float2(x_57.x, x_57.y) / x_60);
+  const float x_63 = pos.x;
+  const float x_67 = pos.y;
+  ipos = int2(int((x_63 * 16.0f)), int((x_67 * 16.0f)));
+  i = 0;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  while (true) {
+    bool x_102 = false;
+    bool x_122 = false;
+    bool x_142 = false;
+    bool x_162 = false;
+    bool x_103_phi = false;
+    bool x_123_phi = false;
+    bool x_143_phi = false;
+    bool x_163_phi = false;
+    v = (v + 1);
+    directions = 0;
+    const int x_89 = p.x;
+    const bool x_90 = (x_89 > 0);
+    x_103_phi = x_90;
+    if (x_90) {
+      const int x_94 = p.x;
+      const int x_97 = p.y;
+      const int x_101 = map[((x_94 - 2) + (x_97 * 16))];
+      x_102 = (x_101 == 0);
+      x_103_phi = x_102;
+    }
+    if (x_103_phi) {
+      directions = (directions + 1);
+    }
+    const int x_109 = p.y;
+    const bool x_110 = (x_109 > 0);
+    x_123_phi = x_110;
+    if (x_110) {
+      const int x_114 = p.x;
+      const int x_116 = p.y;
+      const int x_121 = map[(x_114 + ((x_116 - 2) * 16))];
+      x_122 = (x_121 == 0);
+      x_123_phi = x_122;
+    }
+    if (x_123_phi) {
+      directions = (directions + 1);
+    }
+    const int x_129 = p.x;
+    const bool x_130 = (x_129 < 14);
+    x_143_phi = x_130;
+    if (x_130) {
+      const int x_134 = p.x;
+      const int x_137 = p.y;
+      const int x_141 = map[((x_134 + 2) + (x_137 * 16))];
+      x_142 = (x_141 == 0);
+      x_143_phi = x_142;
+    }
+    if (x_143_phi) {
+      directions = (directions + 1);
+    }
+    const int x_149 = p.y;
+    const bool x_150 = (x_149 < 14);
+    x_163_phi = x_150;
+    if (x_150) {
+      const int x_154 = p.x;
+      const int x_156 = p.y;
+      const int x_161 = map[(x_154 + ((x_156 + 2) * 16))];
+      x_162 = (x_161 == 0);
+      x_163_phi = x_162;
+    }
+    if (x_163_phi) {
+      directions = (directions + 1);
+    }
+    bool x_227 = false;
+    bool x_240 = false;
+    bool x_279 = false;
+    bool x_292 = false;
+    bool x_331 = false;
+    bool x_344 = false;
+    bool x_383 = false;
+    bool x_396 = false;
+    bool x_228_phi = false;
+    bool x_241_phi = false;
+    bool x_280_phi = false;
+    bool x_293_phi = false;
+    bool x_332_phi = false;
+    bool x_345_phi = false;
+    bool x_384_phi = false;
+    bool x_397_phi = false;
+    if ((directions == 0)) {
+      canwalk = false;
+      i = 0;
+      {
+        for(; (i < 8); i = (i + 1)) {
+          j = 0;
+          {
+            for(; (j < 8); j = (j + 1)) {
+              const int x_194 = map[((j * 2) + ((i * 2) * 16))];
+              if ((x_194 == 0)) {
+                p.x = (j * 2);
+                p.y = (i * 2);
+                canwalk = true;
+              }
+            }
+          }
+        }
+      }
+      const int x_209 = p.x;
+      const int x_211 = p.y;
+      map[(x_209 + (x_211 * 16))] = 1;
+    } else {
+      d = (v % directions);
+      v = (v + directions);
+      const bool x_222 = (d >= 0);
+      x_228_phi = x_222;
+      if (x_222) {
+        const int x_226 = p.x;
+        x_227 = (x_226 > 0);
+        x_228_phi = x_227;
+      }
+      const bool x_228 = x_228_phi;
+      x_241_phi = x_228;
+      if (x_228) {
+        const int x_232 = p.x;
+        const int x_235 = p.y;
+        const int x_239 = map[((x_232 - 2) + (x_235 * 16))];
+        x_240 = (x_239 == 0);
+        x_241_phi = x_240;
+      }
+      if (x_241_phi) {
+        d = (d - 1);
+        const int x_247 = p.x;
+        const int x_249 = p.y;
+        map[(x_247 + (x_249 * 16))] = 1;
+        const int x_254 = p.x;
+        const int x_257 = p.y;
+        map[((x_254 - 1) + (x_257 * 16))] = 1;
+        const int x_262 = p.x;
+        const int x_265 = p.y;
+        map[((x_262 - 2) + (x_265 * 16))] = 1;
+        const int x_270 = p.x;
+        p.x = (x_270 - 2);
+      }
+      const bool x_274 = (d >= 0);
+      x_280_phi = x_274;
+      if (x_274) {
+        const int x_278 = p.y;
+        x_279 = (x_278 > 0);
+        x_280_phi = x_279;
+      }
+      const bool x_280 = x_280_phi;
+      x_293_phi = x_280;
+      if (x_280) {
+        const int x_284 = p.x;
+        const int x_286 = p.y;
+        const int x_291 = map[(x_284 + ((x_286 - 2) * 16))];
+        x_292 = (x_291 == 0);
+        x_293_phi = x_292;
+      }
+      if (x_293_phi) {
+        d = (d - 1);
+        const int x_299 = p.x;
+        const int x_301 = p.y;
+        map[(x_299 + (x_301 * 16))] = 1;
+        const int x_306 = p.x;
+        const int x_308 = p.y;
+        map[(x_306 + ((x_308 - 1) * 16))] = 1;
+        const int x_314 = p.x;
+        const int x_316 = p.y;
+        map[(x_314 + ((x_316 - 2) * 16))] = 1;
+        const int x_322 = p.y;
+        p.y = (x_322 - 2);
+      }
+      const bool x_326 = (d >= 0);
+      x_332_phi = x_326;
+      if (x_326) {
+        const int x_330 = p.x;
+        x_331 = (x_330 < 14);
+        x_332_phi = x_331;
+      }
+      const bool x_332 = x_332_phi;
+      x_345_phi = x_332;
+      if (x_332) {
+        const int x_336 = p.x;
+        const int x_339 = p.y;
+        const int x_343 = map[((x_336 + 2) + (x_339 * 16))];
+        x_344 = (x_343 == 0);
+        x_345_phi = x_344;
+      }
+      if (x_345_phi) {
+        d = (d - 1);
+        const int x_351 = p.x;
+        const int x_353 = p.y;
+        map[(x_351 + (x_353 * 16))] = 1;
+        const int x_358 = p.x;
+        const int x_361 = p.y;
+        map[((x_358 + 1) + (x_361 * 16))] = 1;
+        const int x_366 = p.x;
+        const int x_369 = p.y;
+        map[((x_366 + 2) + (x_369 * 16))] = 1;
+        const int x_374 = p.x;
+        p.x = (x_374 + 2);
+      }
+      const bool x_378 = (d >= 0);
+      x_384_phi = x_378;
+      if (x_378) {
+        const int x_382 = p.y;
+        x_383 = (x_382 < 14);
+        x_384_phi = x_383;
+      }
+      const bool x_384 = x_384_phi;
+      x_397_phi = x_384;
+      if (x_384) {
+        const int x_388 = p.x;
+        const int x_390 = p.y;
+        const int x_395 = map[(x_388 + ((x_390 + 2) * 16))];
+        x_396 = (x_395 == 0);
+        x_397_phi = x_396;
+      }
+      if (x_397_phi) {
+        d = (d - 1);
+        const int x_403 = p.x;
+        const int x_405 = p.y;
+        map[(x_403 + (x_405 * 16))] = 1;
+        const int x_410 = p.x;
+        const int x_412 = p.y;
+        map[(x_410 + ((x_412 + 1) * 16))] = 1;
+        const int x_418 = p.x;
+        const int x_420 = p.y;
+        map[(x_418 + ((x_420 + 2) * 16))] = 1;
+        const int x_426 = p.y;
+        p.y = (x_426 + 2);
+      }
+    }
+    const int x_430 = ipos.y;
+    const int x_433 = ipos.x;
+    const int x_436 = map[((x_430 * 16) + x_433)];
+    if ((x_436 == 1)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e1df0f2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.msl
@@ -0,0 +1,347 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float2 pos = 0.0f;
+  int2 ipos = 0;
+  int i = 0;
+  int2 p = 0;
+  bool canwalk = false;
+  int v = 0;
+  int directions = 0;
+  int j = 0;
+  int d = 0;
+  float4 const x_57 = *(tint_symbol_5);
+  float2 const x_60 = x_7.resolution;
+  pos = (float2(x_57.x, x_57.y) / x_60);
+  float const x_63 = pos.x;
+  float const x_67 = pos.y;
+  ipos = int2(int((x_63 * 16.0f)), int((x_67 * 16.0f)));
+  i = 0;
+  while (true) {
+    int const x_75 = i;
+    if ((x_75 < 256)) {
+    } else {
+      break;
+    }
+    int const x_78 = i;
+    (*(tint_symbol_6)).arr[x_78] = 0;
+    {
+      int const x_80 = i;
+      i = (x_80 + 1);
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  while (true) {
+    bool x_102 = false;
+    bool x_122 = false;
+    bool x_142 = false;
+    bool x_162 = false;
+    bool x_103_phi = false;
+    bool x_123_phi = false;
+    bool x_143_phi = false;
+    bool x_163_phi = false;
+    int const x_86 = v;
+    v = (x_86 + 1);
+    directions = 0;
+    int const x_89 = p.x;
+    bool const x_90 = (x_89 > 0);
+    x_103_phi = x_90;
+    if (x_90) {
+      int const x_94 = p.x;
+      int const x_97 = p.y;
+      int const x_101 = (*(tint_symbol_6)).arr[((x_94 - 2) + (x_97 * 16))];
+      x_102 = (x_101 == 0);
+      x_103_phi = x_102;
+    }
+    bool const x_103 = x_103_phi;
+    if (x_103) {
+      int const x_106 = directions;
+      directions = (x_106 + 1);
+    }
+    int const x_109 = p.y;
+    bool const x_110 = (x_109 > 0);
+    x_123_phi = x_110;
+    if (x_110) {
+      int const x_114 = p.x;
+      int const x_116 = p.y;
+      int const x_121 = (*(tint_symbol_6)).arr[(x_114 + ((x_116 - 2) * 16))];
+      x_122 = (x_121 == 0);
+      x_123_phi = x_122;
+    }
+    bool const x_123 = x_123_phi;
+    if (x_123) {
+      int const x_126 = directions;
+      directions = (x_126 + 1);
+    }
+    int const x_129 = p.x;
+    bool const x_130 = (x_129 < 14);
+    x_143_phi = x_130;
+    if (x_130) {
+      int const x_134 = p.x;
+      int const x_137 = p.y;
+      int const x_141 = (*(tint_symbol_6)).arr[((x_134 + 2) + (x_137 * 16))];
+      x_142 = (x_141 == 0);
+      x_143_phi = x_142;
+    }
+    bool const x_143 = x_143_phi;
+    if (x_143) {
+      int const x_146 = directions;
+      directions = (x_146 + 1);
+    }
+    int const x_149 = p.y;
+    bool const x_150 = (x_149 < 14);
+    x_163_phi = x_150;
+    if (x_150) {
+      int const x_154 = p.x;
+      int const x_156 = p.y;
+      int const x_161 = (*(tint_symbol_6)).arr[(x_154 + ((x_156 + 2) * 16))];
+      x_162 = (x_161 == 0);
+      x_163_phi = x_162;
+    }
+    bool const x_163 = x_163_phi;
+    if (x_163) {
+      int const x_166 = directions;
+      directions = (x_166 + 1);
+    }
+    bool x_227 = false;
+    bool x_240 = false;
+    bool x_279 = false;
+    bool x_292 = false;
+    bool x_331 = false;
+    bool x_344 = false;
+    bool x_383 = false;
+    bool x_396 = false;
+    bool x_228_phi = false;
+    bool x_241_phi = false;
+    bool x_280_phi = false;
+    bool x_293_phi = false;
+    bool x_332_phi = false;
+    bool x_345_phi = false;
+    bool x_384_phi = false;
+    bool x_397_phi = false;
+    int const x_168 = directions;
+    if ((x_168 == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        int const x_177 = i;
+        if ((x_177 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        while (true) {
+          int const x_184 = j;
+          if ((x_184 < 8)) {
+          } else {
+            break;
+          }
+          int const x_187 = j;
+          int const x_189 = i;
+          int const x_194 = (*(tint_symbol_6)).arr[((x_187 * 2) + ((x_189 * 2) * 16))];
+          if ((x_194 == 0)) {
+            int const x_198 = j;
+            p.x = (x_198 * 2);
+            int const x_201 = i;
+            p.y = (x_201 * 2);
+            canwalk = true;
+          }
+          {
+            int const x_204 = j;
+            j = (x_204 + 1);
+          }
+        }
+        {
+          int const x_206 = i;
+          i = (x_206 + 1);
+        }
+      }
+      int const x_209 = p.x;
+      int const x_211 = p.y;
+      (*(tint_symbol_6)).arr[(x_209 + (x_211 * 16))] = 1;
+    } else {
+      int const x_215 = v;
+      int const x_216 = directions;
+      d = (x_215 % x_216);
+      int const x_218 = directions;
+      int const x_219 = v;
+      v = (x_219 + x_218);
+      int const x_221 = d;
+      bool const x_222 = (x_221 >= 0);
+      x_228_phi = x_222;
+      if (x_222) {
+        int const x_226 = p.x;
+        x_227 = (x_226 > 0);
+        x_228_phi = x_227;
+      }
+      bool const x_228 = x_228_phi;
+      x_241_phi = x_228;
+      if (x_228) {
+        int const x_232 = p.x;
+        int const x_235 = p.y;
+        int const x_239 = (*(tint_symbol_6)).arr[((x_232 - 2) + (x_235 * 16))];
+        x_240 = (x_239 == 0);
+        x_241_phi = x_240;
+      }
+      bool const x_241 = x_241_phi;
+      if (x_241) {
+        int const x_244 = d;
+        d = (x_244 - 1);
+        int const x_247 = p.x;
+        int const x_249 = p.y;
+        (*(tint_symbol_6)).arr[(x_247 + (x_249 * 16))] = 1;
+        int const x_254 = p.x;
+        int const x_257 = p.y;
+        (*(tint_symbol_6)).arr[((x_254 - 1) + (x_257 * 16))] = 1;
+        int const x_262 = p.x;
+        int const x_265 = p.y;
+        (*(tint_symbol_6)).arr[((x_262 - 2) + (x_265 * 16))] = 1;
+        int const x_270 = p.x;
+        p.x = (x_270 - 2);
+      }
+      int const x_273 = d;
+      bool const x_274 = (x_273 >= 0);
+      x_280_phi = x_274;
+      if (x_274) {
+        int const x_278 = p.y;
+        x_279 = (x_278 > 0);
+        x_280_phi = x_279;
+      }
+      bool const x_280 = x_280_phi;
+      x_293_phi = x_280;
+      if (x_280) {
+        int const x_284 = p.x;
+        int const x_286 = p.y;
+        int const x_291 = (*(tint_symbol_6)).arr[(x_284 + ((x_286 - 2) * 16))];
+        x_292 = (x_291 == 0);
+        x_293_phi = x_292;
+      }
+      bool const x_293 = x_293_phi;
+      if (x_293) {
+        int const x_296 = d;
+        d = (x_296 - 1);
+        int const x_299 = p.x;
+        int const x_301 = p.y;
+        (*(tint_symbol_6)).arr[(x_299 + (x_301 * 16))] = 1;
+        int const x_306 = p.x;
+        int const x_308 = p.y;
+        (*(tint_symbol_6)).arr[(x_306 + ((x_308 - 1) * 16))] = 1;
+        int const x_314 = p.x;
+        int const x_316 = p.y;
+        (*(tint_symbol_6)).arr[(x_314 + ((x_316 - 2) * 16))] = 1;
+        int const x_322 = p.y;
+        p.y = (x_322 - 2);
+      }
+      int const x_325 = d;
+      bool const x_326 = (x_325 >= 0);
+      x_332_phi = x_326;
+      if (x_326) {
+        int const x_330 = p.x;
+        x_331 = (x_330 < 14);
+        x_332_phi = x_331;
+      }
+      bool const x_332 = x_332_phi;
+      x_345_phi = x_332;
+      if (x_332) {
+        int const x_336 = p.x;
+        int const x_339 = p.y;
+        int const x_343 = (*(tint_symbol_6)).arr[((x_336 + 2) + (x_339 * 16))];
+        x_344 = (x_343 == 0);
+        x_345_phi = x_344;
+      }
+      bool const x_345 = x_345_phi;
+      if (x_345) {
+        int const x_348 = d;
+        d = (x_348 - 1);
+        int const x_351 = p.x;
+        int const x_353 = p.y;
+        (*(tint_symbol_6)).arr[(x_351 + (x_353 * 16))] = 1;
+        int const x_358 = p.x;
+        int const x_361 = p.y;
+        (*(tint_symbol_6)).arr[((x_358 + 1) + (x_361 * 16))] = 1;
+        int const x_366 = p.x;
+        int const x_369 = p.y;
+        (*(tint_symbol_6)).arr[((x_366 + 2) + (x_369 * 16))] = 1;
+        int const x_374 = p.x;
+        p.x = (x_374 + 2);
+      }
+      int const x_377 = d;
+      bool const x_378 = (x_377 >= 0);
+      x_384_phi = x_378;
+      if (x_378) {
+        int const x_382 = p.y;
+        x_383 = (x_382 < 14);
+        x_384_phi = x_383;
+      }
+      bool const x_384 = x_384_phi;
+      x_397_phi = x_384;
+      if (x_384) {
+        int const x_388 = p.x;
+        int const x_390 = p.y;
+        int const x_395 = (*(tint_symbol_6)).arr[(x_388 + ((x_390 + 2) * 16))];
+        x_396 = (x_395 == 0);
+        x_397_phi = x_396;
+      }
+      bool const x_397 = x_397_phi;
+      if (x_397) {
+        int const x_400 = d;
+        d = (x_400 - 1);
+        int const x_403 = p.x;
+        int const x_405 = p.y;
+        (*(tint_symbol_6)).arr[(x_403 + (x_405 * 16))] = 1;
+        int const x_410 = p.x;
+        int const x_412 = p.y;
+        (*(tint_symbol_6)).arr[(x_410 + ((x_412 + 1) * 16))] = 1;
+        int const x_418 = p.x;
+        int const x_420 = p.y;
+        (*(tint_symbol_6)).arr[(x_418 + ((x_420 + 2) * 16))] = 1;
+        int const x_426 = p.y;
+        p.y = (x_426 + 2);
+      }
+    }
+    int const x_430 = ipos.y;
+    int const x_433 = ipos.x;
+    int const x_436 = (*(tint_symbol_6)).arr[((x_430 * 16) + x_433)];
+    if ((x_436 == 1)) {
+      *(tint_symbol_7) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      return;
+    }
+    {
+      bool const x_440 = canwalk;
+      if (x_440) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread tint_array_wrapper tint_symbol_9 = {};
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_8), &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4613f9f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,775 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 509
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %map "map"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %x_102 "x_102"
+               OpName %x_122 "x_122"
+               OpName %x_142 "x_142"
+               OpName %x_162 "x_162"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_123_phi "x_123_phi"
+               OpName %x_143_phi "x_143_phi"
+               OpName %x_163_phi "x_163_phi"
+               OpName %x_227 "x_227"
+               OpName %x_240 "x_240"
+               OpName %x_279 "x_279"
+               OpName %x_292 "x_292"
+               OpName %x_331 "x_331"
+               OpName %x_344 "x_344"
+               OpName %x_383 "x_383"
+               OpName %x_396 "x_396"
+               OpName %x_228_phi "x_228_phi"
+               OpName %x_241_phi "x_241_phi"
+               OpName %x_280_phi "x_280_phi"
+               OpName %x_293_phi "x_293_phi"
+               OpName %x_332_phi "x_332_phi"
+               OpName %x_345_phi "x_345_phi"
+               OpName %x_384_phi "x_384_phi"
+               OpName %x_397_phi "x_397_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+         %16 = OpConstantNull %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private %16
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %28 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %32 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %float_16 = OpConstant %float 16
+      %int_0 = OpConstant %int 0
+    %int_256 = OpConstant %int 256
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %83 = OpConstantComposite %v2int %int_0 %int_0
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+        %489 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+        %495 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %496 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %28
+       %ipos = OpVariable %_ptr_Function_v2int Function %32
+          %i = OpVariable %_ptr_Function_int Function %35
+          %p = OpVariable %_ptr_Function_v2int Function %32
+    %canwalk = OpVariable %_ptr_Function_bool Function %40
+          %v = OpVariable %_ptr_Function_int Function %35
+ %directions = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+          %d = OpVariable %_ptr_Function_int Function %35
+      %x_102 = OpVariable %_ptr_Function_bool Function %40
+      %x_122 = OpVariable %_ptr_Function_bool Function %40
+      %x_142 = OpVariable %_ptr_Function_bool Function %40
+      %x_162 = OpVariable %_ptr_Function_bool Function %40
+  %x_103_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_123_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_143_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_163_phi = OpVariable %_ptr_Function_bool Function %40
+      %x_227 = OpVariable %_ptr_Function_bool Function %40
+      %x_240 = OpVariable %_ptr_Function_bool Function %40
+      %x_279 = OpVariable %_ptr_Function_bool Function %40
+      %x_292 = OpVariable %_ptr_Function_bool Function %40
+      %x_331 = OpVariable %_ptr_Function_bool Function %40
+      %x_344 = OpVariable %_ptr_Function_bool Function %40
+      %x_383 = OpVariable %_ptr_Function_bool Function %40
+      %x_396 = OpVariable %_ptr_Function_bool Function %40
+  %x_228_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_241_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_280_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_293_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_332_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_345_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_384_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_397_phi = OpVariable %_ptr_Function_bool Function %40
+         %45 = OpLoad %v4float %gl_FragCoord
+         %48 = OpAccessChain %_ptr_Uniform_v2float %x_7 %uint_0
+         %49 = OpLoad %v2float %48
+         %50 = OpCompositeExtract %float %45 0
+         %51 = OpCompositeExtract %float %45 1
+         %52 = OpCompositeConstruct %v2float %50 %51
+         %53 = OpFDiv %v2float %52 %49
+               OpStore %pos %53
+         %55 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %59 = OpLoad %float %58
+         %62 = OpFMul %float %56 %float_16
+         %60 = OpConvertFToS %int %62
+         %64 = OpFMul %float %59 %float_16
+         %63 = OpConvertFToS %int %64
+         %65 = OpCompositeConstruct %v2int %60 %63
+               OpStore %ipos %65
+               OpStore %i %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i
+         %73 = OpSLessThan %bool %71 %int_256
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %68
+         %74 = OpLabel
+         %77 = OpLoad %int %i
+         %79 = OpAccessChain %_ptr_Private_int %map %77
+               OpStore %79 %int_0
+               OpBranch %69
+         %69 = OpLabel
+         %80 = OpLoad %int %i
+         %82 = OpIAdd %int %80 %int_1
+               OpStore %i %82
+               OpBranch %67
+         %68 = OpLabel
+               OpStore %p %83
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %97 = OpLoad %int %v
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %v %98
+               OpStore %directions %int_0
+         %99 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %100 = OpLoad %int %99
+        %101 = OpSGreaterThan %bool %100 %int_0
+               OpStore %x_103_phi %101
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %104 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %107 = OpLoad %int %106
+        %109 = OpISub %int %105 %int_2
+        %111 = OpIMul %int %107 %int_16
+        %112 = OpIAdd %int %109 %111
+        %113 = OpAccessChain %_ptr_Private_int %map %112
+        %114 = OpLoad %int %113
+        %115 = OpIEqual %bool %114 %int_0
+               OpStore %x_102 %115
+        %116 = OpLoad %bool %x_102
+               OpStore %x_103_phi %116
+               OpBranch %102
+        %102 = OpLabel
+        %117 = OpLoad %bool %x_103_phi
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpLoad %int %directions
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %directions %121
+               OpBranch %118
+        %118 = OpLabel
+        %122 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %123 = OpLoad %int %122
+        %124 = OpSGreaterThan %bool %123 %int_0
+               OpStore %x_123_phi %124
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %130 = OpLoad %int %129
+        %131 = OpISub %int %130 %int_2
+        %132 = OpIMul %int %131 %int_16
+        %133 = OpIAdd %int %128 %132
+        %134 = OpAccessChain %_ptr_Private_int %map %133
+        %135 = OpLoad %int %134
+        %136 = OpIEqual %bool %135 %int_0
+               OpStore %x_122 %136
+        %137 = OpLoad %bool %x_122
+               OpStore %x_123_phi %137
+               OpBranch %125
+        %125 = OpLabel
+        %138 = OpLoad %bool %x_123_phi
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %directions
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %directions %142
+               OpBranch %139
+        %139 = OpLabel
+        %143 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %144 = OpLoad %int %143
+        %146 = OpSLessThan %bool %144 %int_14
+               OpStore %x_143_phi %146
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %150 = OpLoad %int %149
+        %151 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %152 = OpLoad %int %151
+        %153 = OpIAdd %int %150 %int_2
+        %154 = OpIMul %int %152 %int_16
+        %155 = OpIAdd %int %153 %154
+        %156 = OpAccessChain %_ptr_Private_int %map %155
+        %157 = OpLoad %int %156
+        %158 = OpIEqual %bool %157 %int_0
+               OpStore %x_142 %158
+        %159 = OpLoad %bool %x_142
+               OpStore %x_143_phi %159
+               OpBranch %147
+        %147 = OpLabel
+        %160 = OpLoad %bool %x_143_phi
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %int %directions
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %directions %164
+               OpBranch %161
+        %161 = OpLabel
+        %165 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %166 %int_14
+               OpStore %x_163_phi %167
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %168
+        %169 = OpLabel
+        %170 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %171 = OpLoad %int %170
+        %172 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %173 = OpLoad %int %172
+        %174 = OpIAdd %int %173 %int_2
+        %175 = OpIMul %int %174 %int_16
+        %176 = OpIAdd %int %171 %175
+        %177 = OpAccessChain %_ptr_Private_int %map %176
+        %178 = OpLoad %int %177
+        %179 = OpIEqual %bool %178 %int_0
+               OpStore %x_162 %179
+        %180 = OpLoad %bool %x_162
+               OpStore %x_163_phi %180
+               OpBranch %168
+        %168 = OpLabel
+        %181 = OpLoad %bool %x_163_phi
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %directions
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %directions %185
+               OpBranch %182
+        %182 = OpLabel
+        %202 = OpLoad %int %directions
+        %203 = OpIEqual %bool %202 %int_0
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %205 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %i
+        %214 = OpSLessThan %bool %212 %int_8
+               OpSelectionMerge %215 None
+               OpBranchConditional %214 %216 %217
+        %216 = OpLabel
+               OpBranch %215
+        %217 = OpLabel
+               OpBranch %209
+        %215 = OpLabel
+               OpStore %j %int_0
+               OpBranch %218
+        %218 = OpLabel
+               OpLoopMerge %219 %220 None
+               OpBranch %221
+        %221 = OpLabel
+        %222 = OpLoad %int %j
+        %223 = OpSLessThan %bool %222 %int_8
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %226
+        %225 = OpLabel
+               OpBranch %224
+        %226 = OpLabel
+               OpBranch %219
+        %224 = OpLabel
+        %227 = OpLoad %int %j
+        %228 = OpLoad %int %i
+        %229 = OpIMul %int %227 %int_2
+        %230 = OpIMul %int %228 %int_2
+        %231 = OpIMul %int %230 %int_16
+        %232 = OpIAdd %int %229 %231
+        %233 = OpAccessChain %_ptr_Private_int %map %232
+        %234 = OpLoad %int %233
+        %235 = OpIEqual %bool %234 %int_0
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %236
+        %237 = OpLabel
+        %238 = OpLoad %int %j
+        %239 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %240 = OpIMul %int %238 %int_2
+               OpStore %239 %240
+        %241 = OpLoad %int %i
+        %242 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %243 = OpIMul %int %241 %int_2
+               OpStore %242 %243
+               OpStore %canwalk %true
+               OpBranch %236
+        %236 = OpLabel
+               OpBranch %220
+        %220 = OpLabel
+        %244 = OpLoad %int %j
+        %245 = OpIAdd %int %244 %int_1
+               OpStore %j %245
+               OpBranch %218
+        %219 = OpLabel
+               OpBranch %210
+        %210 = OpLabel
+        %246 = OpLoad %int %i
+        %247 = OpIAdd %int %246 %int_1
+               OpStore %i %247
+               OpBranch %208
+        %209 = OpLabel
+        %248 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %249 = OpLoad %int %248
+        %250 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %251 = OpLoad %int %250
+        %252 = OpIMul %int %251 %int_16
+        %253 = OpIAdd %int %249 %252
+        %254 = OpAccessChain %_ptr_Private_int %map %253
+               OpStore %254 %int_1
+               OpBranch %204
+        %206 = OpLabel
+        %255 = OpLoad %int %v
+        %256 = OpLoad %int %directions
+        %257 = OpSMod %int %255 %256
+               OpStore %d %257
+        %258 = OpLoad %int %directions
+        %259 = OpLoad %int %v
+        %260 = OpIAdd %int %259 %258
+               OpStore %v %260
+        %261 = OpLoad %int %d
+        %262 = OpSGreaterThanEqual %bool %261 %int_0
+               OpStore %x_228_phi %262
+               OpSelectionMerge %263 None
+               OpBranchConditional %262 %264 %263
+        %264 = OpLabel
+        %265 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %266 = OpLoad %int %265
+        %267 = OpSGreaterThan %bool %266 %int_0
+               OpStore %x_227 %267
+        %268 = OpLoad %bool %x_227
+               OpStore %x_228_phi %268
+               OpBranch %263
+        %263 = OpLabel
+        %269 = OpLoad %bool %x_228_phi
+               OpStore %x_241_phi %269
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %270
+        %271 = OpLabel
+        %272 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %273 = OpLoad %int %272
+        %274 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %275 = OpLoad %int %274
+        %276 = OpISub %int %273 %int_2
+        %277 = OpIMul %int %275 %int_16
+        %278 = OpIAdd %int %276 %277
+        %279 = OpAccessChain %_ptr_Private_int %map %278
+        %280 = OpLoad %int %279
+        %281 = OpIEqual %bool %280 %int_0
+               OpStore %x_240 %281
+        %282 = OpLoad %bool %x_240
+               OpStore %x_241_phi %282
+               OpBranch %270
+        %270 = OpLabel
+        %283 = OpLoad %bool %x_241_phi
+               OpSelectionMerge %284 None
+               OpBranchConditional %283 %285 %284
+        %285 = OpLabel
+        %286 = OpLoad %int %d
+        %287 = OpISub %int %286 %int_1
+               OpStore %d %287
+        %288 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %289 = OpLoad %int %288
+        %290 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %291 = OpLoad %int %290
+        %292 = OpIMul %int %291 %int_16
+        %293 = OpIAdd %int %289 %292
+        %294 = OpAccessChain %_ptr_Private_int %map %293
+               OpStore %294 %int_1
+        %295 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %296 = OpLoad %int %295
+        %297 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %298 = OpLoad %int %297
+        %299 = OpISub %int %296 %int_1
+        %300 = OpIMul %int %298 %int_16
+        %301 = OpIAdd %int %299 %300
+        %302 = OpAccessChain %_ptr_Private_int %map %301
+               OpStore %302 %int_1
+        %303 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %304 = OpLoad %int %303
+        %305 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %306 = OpLoad %int %305
+        %307 = OpISub %int %304 %int_2
+        %308 = OpIMul %int %306 %int_16
+        %309 = OpIAdd %int %307 %308
+        %310 = OpAccessChain %_ptr_Private_int %map %309
+               OpStore %310 %int_1
+        %311 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %312 = OpLoad %int %311
+        %313 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %314 = OpISub %int %312 %int_2
+               OpStore %313 %314
+               OpBranch %284
+        %284 = OpLabel
+        %315 = OpLoad %int %d
+        %316 = OpSGreaterThanEqual %bool %315 %int_0
+               OpStore %x_280_phi %316
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %317
+        %318 = OpLabel
+        %319 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %320 = OpLoad %int %319
+        %321 = OpSGreaterThan %bool %320 %int_0
+               OpStore %x_279 %321
+        %322 = OpLoad %bool %x_279
+               OpStore %x_280_phi %322
+               OpBranch %317
+        %317 = OpLabel
+        %323 = OpLoad %bool %x_280_phi
+               OpStore %x_293_phi %323
+               OpSelectionMerge %324 None
+               OpBranchConditional %323 %325 %324
+        %325 = OpLabel
+        %326 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %327 = OpLoad %int %326
+        %328 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %329 = OpLoad %int %328
+        %330 = OpISub %int %329 %int_2
+        %331 = OpIMul %int %330 %int_16
+        %332 = OpIAdd %int %327 %331
+        %333 = OpAccessChain %_ptr_Private_int %map %332
+        %334 = OpLoad %int %333
+        %335 = OpIEqual %bool %334 %int_0
+               OpStore %x_292 %335
+        %336 = OpLoad %bool %x_292
+               OpStore %x_293_phi %336
+               OpBranch %324
+        %324 = OpLabel
+        %337 = OpLoad %bool %x_293_phi
+               OpSelectionMerge %338 None
+               OpBranchConditional %337 %339 %338
+        %339 = OpLabel
+        %340 = OpLoad %int %d
+        %341 = OpISub %int %340 %int_1
+               OpStore %d %341
+        %342 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %343 = OpLoad %int %342
+        %344 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %345 = OpLoad %int %344
+        %346 = OpIMul %int %345 %int_16
+        %347 = OpIAdd %int %343 %346
+        %348 = OpAccessChain %_ptr_Private_int %map %347
+               OpStore %348 %int_1
+        %349 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %350 = OpLoad %int %349
+        %351 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %352 = OpLoad %int %351
+        %353 = OpISub %int %352 %int_1
+        %354 = OpIMul %int %353 %int_16
+        %355 = OpIAdd %int %350 %354
+        %356 = OpAccessChain %_ptr_Private_int %map %355
+               OpStore %356 %int_1
+        %357 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %358 = OpLoad %int %357
+        %359 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %360 = OpLoad %int %359
+        %361 = OpISub %int %360 %int_2
+        %362 = OpIMul %int %361 %int_16
+        %363 = OpIAdd %int %358 %362
+        %364 = OpAccessChain %_ptr_Private_int %map %363
+               OpStore %364 %int_1
+        %365 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %366 = OpLoad %int %365
+        %367 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %368 = OpISub %int %366 %int_2
+               OpStore %367 %368
+               OpBranch %338
+        %338 = OpLabel
+        %369 = OpLoad %int %d
+        %370 = OpSGreaterThanEqual %bool %369 %int_0
+               OpStore %x_332_phi %370
+               OpSelectionMerge %371 None
+               OpBranchConditional %370 %372 %371
+        %372 = OpLabel
+        %373 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %374 = OpLoad %int %373
+        %375 = OpSLessThan %bool %374 %int_14
+               OpStore %x_331 %375
+        %376 = OpLoad %bool %x_331
+               OpStore %x_332_phi %376
+               OpBranch %371
+        %371 = OpLabel
+        %377 = OpLoad %bool %x_332_phi
+               OpStore %x_345_phi %377
+               OpSelectionMerge %378 None
+               OpBranchConditional %377 %379 %378
+        %379 = OpLabel
+        %380 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %381 = OpLoad %int %380
+        %382 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %383 = OpLoad %int %382
+        %384 = OpIAdd %int %381 %int_2
+        %385 = OpIMul %int %383 %int_16
+        %386 = OpIAdd %int %384 %385
+        %387 = OpAccessChain %_ptr_Private_int %map %386
+        %388 = OpLoad %int %387
+        %389 = OpIEqual %bool %388 %int_0
+               OpStore %x_344 %389
+        %390 = OpLoad %bool %x_344
+               OpStore %x_345_phi %390
+               OpBranch %378
+        %378 = OpLabel
+        %391 = OpLoad %bool %x_345_phi
+               OpSelectionMerge %392 None
+               OpBranchConditional %391 %393 %392
+        %393 = OpLabel
+        %394 = OpLoad %int %d
+        %395 = OpISub %int %394 %int_1
+               OpStore %d %395
+        %396 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %397 = OpLoad %int %396
+        %398 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %399 = OpLoad %int %398
+        %400 = OpIMul %int %399 %int_16
+        %401 = OpIAdd %int %397 %400
+        %402 = OpAccessChain %_ptr_Private_int %map %401
+               OpStore %402 %int_1
+        %403 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %404 = OpLoad %int %403
+        %405 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %406 = OpLoad %int %405
+        %407 = OpIAdd %int %404 %int_1
+        %408 = OpIMul %int %406 %int_16
+        %409 = OpIAdd %int %407 %408
+        %410 = OpAccessChain %_ptr_Private_int %map %409
+               OpStore %410 %int_1
+        %411 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %412 = OpLoad %int %411
+        %413 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %414 = OpLoad %int %413
+        %415 = OpIAdd %int %412 %int_2
+        %416 = OpIMul %int %414 %int_16
+        %417 = OpIAdd %int %415 %416
+        %418 = OpAccessChain %_ptr_Private_int %map %417
+               OpStore %418 %int_1
+        %419 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %420 = OpLoad %int %419
+        %421 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %422 = OpIAdd %int %420 %int_2
+               OpStore %421 %422
+               OpBranch %392
+        %392 = OpLabel
+        %423 = OpLoad %int %d
+        %424 = OpSGreaterThanEqual %bool %423 %int_0
+               OpStore %x_384_phi %424
+               OpSelectionMerge %425 None
+               OpBranchConditional %424 %426 %425
+        %426 = OpLabel
+        %427 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %428 = OpLoad %int %427
+        %429 = OpSLessThan %bool %428 %int_14
+               OpStore %x_383 %429
+        %430 = OpLoad %bool %x_383
+               OpStore %x_384_phi %430
+               OpBranch %425
+        %425 = OpLabel
+        %431 = OpLoad %bool %x_384_phi
+               OpStore %x_397_phi %431
+               OpSelectionMerge %432 None
+               OpBranchConditional %431 %433 %432
+        %433 = OpLabel
+        %434 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %435 = OpLoad %int %434
+        %436 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %437 = OpLoad %int %436
+        %438 = OpIAdd %int %437 %int_2
+        %439 = OpIMul %int %438 %int_16
+        %440 = OpIAdd %int %435 %439
+        %441 = OpAccessChain %_ptr_Private_int %map %440
+        %442 = OpLoad %int %441
+        %443 = OpIEqual %bool %442 %int_0
+               OpStore %x_396 %443
+        %444 = OpLoad %bool %x_396
+               OpStore %x_397_phi %444
+               OpBranch %432
+        %432 = OpLabel
+        %445 = OpLoad %bool %x_397_phi
+               OpSelectionMerge %446 None
+               OpBranchConditional %445 %447 %446
+        %447 = OpLabel
+        %448 = OpLoad %int %d
+        %449 = OpISub %int %448 %int_1
+               OpStore %d %449
+        %450 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %451 = OpLoad %int %450
+        %452 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %453 = OpLoad %int %452
+        %454 = OpIMul %int %453 %int_16
+        %455 = OpIAdd %int %451 %454
+        %456 = OpAccessChain %_ptr_Private_int %map %455
+               OpStore %456 %int_1
+        %457 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %458 = OpLoad %int %457
+        %459 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %460 = OpLoad %int %459
+        %461 = OpIAdd %int %460 %int_1
+        %462 = OpIMul %int %461 %int_16
+        %463 = OpIAdd %int %458 %462
+        %464 = OpAccessChain %_ptr_Private_int %map %463
+               OpStore %464 %int_1
+        %465 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %466 = OpLoad %int %465
+        %467 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %468 = OpLoad %int %467
+        %469 = OpIAdd %int %468 %int_2
+        %470 = OpIMul %int %469 %int_16
+        %471 = OpIAdd %int %466 %470
+        %472 = OpAccessChain %_ptr_Private_int %map %471
+               OpStore %472 %int_1
+        %473 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %474 = OpLoad %int %473
+        %475 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %476 = OpIAdd %int %474 %int_2
+               OpStore %475 %476
+               OpBranch %446
+        %446 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+        %477 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %478 = OpLoad %int %477
+        %479 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %480 = OpLoad %int %479
+        %481 = OpIMul %int %478 %int_16
+        %482 = OpIAdd %int %481 %480
+        %483 = OpAccessChain %_ptr_Private_int %map %482
+        %484 = OpLoad %int %483
+        %485 = OpIEqual %bool %484 %int_1
+               OpSelectionMerge %486 None
+               OpBranchConditional %485 %487 %486
+        %487 = OpLabel
+               OpStore %x_GLF_color %489
+               OpReturn
+        %486 = OpLabel
+               OpBranch %87
+         %87 = OpLabel
+        %490 = OpLoad %bool %canwalk
+               OpSelectionMerge %491 None
+               OpBranchConditional %490 %492 %493
+        %492 = OpLabel
+               OpBranch %491
+        %493 = OpLabel
+               OpBranch %86
+        %491 = OpLabel
+               OpBranch %85
+         %86 = OpLabel
+               OpStore %x_GLF_color %495
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %496
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %500 = OpLabel
+        %501 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %501
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %503 = OpLabel
+        %504 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %504
+        %505 = OpFunctionCall %void %main_1
+        %507 = OpLoad %v4float %x_GLF_color
+        %508 = OpCompositeConstruct %main_out %507
+        %506 = OpFunctionCall %void %tint_symbol_3 %508
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 87[%87] is not post dominated by the back-edge block 491[%491]
+  %491 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..4128fb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,348 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_57 : vec4<f32> = gl_FragCoord;
+  let x_60 : vec2<f32> = x_7.resolution;
+  pos = (vec2<f32>(x_57.x, x_57.y) / x_60);
+  let x_63 : f32 = pos.x;
+  let x_67 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_63 * 16.0)), i32((x_67 * 16.0)));
+  i = 0;
+  loop {
+    let x_75 : i32 = i;
+    if ((x_75 < 256)) {
+    } else {
+      break;
+    }
+    let x_78 : i32 = i;
+    map[x_78] = 0;
+
+    continuing {
+      let x_80 : i32 = i;
+      i = (x_80 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_102 : bool;
+    var x_122 : bool;
+    var x_142 : bool;
+    var x_162 : bool;
+    var x_103_phi : bool;
+    var x_123_phi : bool;
+    var x_143_phi : bool;
+    var x_163_phi : bool;
+    let x_86 : i32 = v;
+    v = (x_86 + 1);
+    directions = 0;
+    let x_89 : i32 = p.x;
+    let x_90 : bool = (x_89 > 0);
+    x_103_phi = x_90;
+    if (x_90) {
+      let x_94 : i32 = p.x;
+      let x_97 : i32 = p.y;
+      let x_101 : i32 = map[((x_94 - 2) + (x_97 * 16))];
+      x_102 = (x_101 == 0);
+      x_103_phi = x_102;
+    }
+    let x_103 : bool = x_103_phi;
+    if (x_103) {
+      let x_106 : i32 = directions;
+      directions = (x_106 + 1);
+    }
+    let x_109 : i32 = p.y;
+    let x_110 : bool = (x_109 > 0);
+    x_123_phi = x_110;
+    if (x_110) {
+      let x_114 : i32 = p.x;
+      let x_116 : i32 = p.y;
+      let x_121 : i32 = map[(x_114 + ((x_116 - 2) * 16))];
+      x_122 = (x_121 == 0);
+      x_123_phi = x_122;
+    }
+    let x_123 : bool = x_123_phi;
+    if (x_123) {
+      let x_126 : i32 = directions;
+      directions = (x_126 + 1);
+    }
+    let x_129 : i32 = p.x;
+    let x_130 : bool = (x_129 < 14);
+    x_143_phi = x_130;
+    if (x_130) {
+      let x_134 : i32 = p.x;
+      let x_137 : i32 = p.y;
+      let x_141 : i32 = map[((x_134 + 2) + (x_137 * 16))];
+      x_142 = (x_141 == 0);
+      x_143_phi = x_142;
+    }
+    let x_143 : bool = x_143_phi;
+    if (x_143) {
+      let x_146 : i32 = directions;
+      directions = (x_146 + 1);
+    }
+    let x_149 : i32 = p.y;
+    let x_150 : bool = (x_149 < 14);
+    x_163_phi = x_150;
+    if (x_150) {
+      let x_154 : i32 = p.x;
+      let x_156 : i32 = p.y;
+      let x_161 : i32 = map[(x_154 + ((x_156 + 2) * 16))];
+      x_162 = (x_161 == 0);
+      x_163_phi = x_162;
+    }
+    let x_163 : bool = x_163_phi;
+    if (x_163) {
+      let x_166 : i32 = directions;
+      directions = (x_166 + 1);
+    }
+    var x_227 : bool;
+    var x_240 : bool;
+    var x_279 : bool;
+    var x_292 : bool;
+    var x_331 : bool;
+    var x_344 : bool;
+    var x_383 : bool;
+    var x_396 : bool;
+    var x_228_phi : bool;
+    var x_241_phi : bool;
+    var x_280_phi : bool;
+    var x_293_phi : bool;
+    var x_332_phi : bool;
+    var x_345_phi : bool;
+    var x_384_phi : bool;
+    var x_397_phi : bool;
+    let x_168 : i32 = directions;
+    if ((x_168 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_177 : i32 = i;
+        if ((x_177 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        loop {
+          let x_184 : i32 = j;
+          if ((x_184 < 8)) {
+          } else {
+            break;
+          }
+          let x_187 : i32 = j;
+          let x_189 : i32 = i;
+          let x_194 : i32 = map[((x_187 * 2) + ((x_189 * 2) * 16))];
+          if ((x_194 == 0)) {
+            let x_198 : i32 = j;
+            p.x = (x_198 * 2);
+            let x_201 : i32 = i;
+            p.y = (x_201 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_204 : i32 = j;
+            j = (x_204 + 1);
+          }
+        }
+
+        continuing {
+          let x_206 : i32 = i;
+          i = (x_206 + 1);
+        }
+      }
+      let x_209 : i32 = p.x;
+      let x_211 : i32 = p.y;
+      map[(x_209 + (x_211 * 16))] = 1;
+    } else {
+      let x_215 : i32 = v;
+      let x_216 : i32 = directions;
+      d = (x_215 % x_216);
+      let x_218 : i32 = directions;
+      let x_219 : i32 = v;
+      v = (x_219 + x_218);
+      let x_221 : i32 = d;
+      let x_222 : bool = (x_221 >= 0);
+      x_228_phi = x_222;
+      if (x_222) {
+        let x_226 : i32 = p.x;
+        x_227 = (x_226 > 0);
+        x_228_phi = x_227;
+      }
+      let x_228 : bool = x_228_phi;
+      x_241_phi = x_228;
+      if (x_228) {
+        let x_232 : i32 = p.x;
+        let x_235 : i32 = p.y;
+        let x_239 : i32 = map[((x_232 - 2) + (x_235 * 16))];
+        x_240 = (x_239 == 0);
+        x_241_phi = x_240;
+      }
+      let x_241 : bool = x_241_phi;
+      if (x_241) {
+        let x_244 : i32 = d;
+        d = (x_244 - 1);
+        let x_247 : i32 = p.x;
+        let x_249 : i32 = p.y;
+        map[(x_247 + (x_249 * 16))] = 1;
+        let x_254 : i32 = p.x;
+        let x_257 : i32 = p.y;
+        map[((x_254 - 1) + (x_257 * 16))] = 1;
+        let x_262 : i32 = p.x;
+        let x_265 : i32 = p.y;
+        map[((x_262 - 2) + (x_265 * 16))] = 1;
+        let x_270 : i32 = p.x;
+        p.x = (x_270 - 2);
+      }
+      let x_273 : i32 = d;
+      let x_274 : bool = (x_273 >= 0);
+      x_280_phi = x_274;
+      if (x_274) {
+        let x_278 : i32 = p.y;
+        x_279 = (x_278 > 0);
+        x_280_phi = x_279;
+      }
+      let x_280 : bool = x_280_phi;
+      x_293_phi = x_280;
+      if (x_280) {
+        let x_284 : i32 = p.x;
+        let x_286 : i32 = p.y;
+        let x_291 : i32 = map[(x_284 + ((x_286 - 2) * 16))];
+        x_292 = (x_291 == 0);
+        x_293_phi = x_292;
+      }
+      let x_293 : bool = x_293_phi;
+      if (x_293) {
+        let x_296 : i32 = d;
+        d = (x_296 - 1);
+        let x_299 : i32 = p.x;
+        let x_301 : i32 = p.y;
+        map[(x_299 + (x_301 * 16))] = 1;
+        let x_306 : i32 = p.x;
+        let x_308 : i32 = p.y;
+        map[(x_306 + ((x_308 - 1) * 16))] = 1;
+        let x_314 : i32 = p.x;
+        let x_316 : i32 = p.y;
+        map[(x_314 + ((x_316 - 2) * 16))] = 1;
+        let x_322 : i32 = p.y;
+        p.y = (x_322 - 2);
+      }
+      let x_325 : i32 = d;
+      let x_326 : bool = (x_325 >= 0);
+      x_332_phi = x_326;
+      if (x_326) {
+        let x_330 : i32 = p.x;
+        x_331 = (x_330 < 14);
+        x_332_phi = x_331;
+      }
+      let x_332 : bool = x_332_phi;
+      x_345_phi = x_332;
+      if (x_332) {
+        let x_336 : i32 = p.x;
+        let x_339 : i32 = p.y;
+        let x_343 : i32 = map[((x_336 + 2) + (x_339 * 16))];
+        x_344 = (x_343 == 0);
+        x_345_phi = x_344;
+      }
+      let x_345 : bool = x_345_phi;
+      if (x_345) {
+        let x_348 : i32 = d;
+        d = (x_348 - 1);
+        let x_351 : i32 = p.x;
+        let x_353 : i32 = p.y;
+        map[(x_351 + (x_353 * 16))] = 1;
+        let x_358 : i32 = p.x;
+        let x_361 : i32 = p.y;
+        map[((x_358 + 1) + (x_361 * 16))] = 1;
+        let x_366 : i32 = p.x;
+        let x_369 : i32 = p.y;
+        map[((x_366 + 2) + (x_369 * 16))] = 1;
+        let x_374 : i32 = p.x;
+        p.x = (x_374 + 2);
+      }
+      let x_377 : i32 = d;
+      let x_378 : bool = (x_377 >= 0);
+      x_384_phi = x_378;
+      if (x_378) {
+        let x_382 : i32 = p.y;
+        x_383 = (x_382 < 14);
+        x_384_phi = x_383;
+      }
+      let x_384 : bool = x_384_phi;
+      x_397_phi = x_384;
+      if (x_384) {
+        let x_388 : i32 = p.x;
+        let x_390 : i32 = p.y;
+        let x_395 : i32 = map[(x_388 + ((x_390 + 2) * 16))];
+        x_396 = (x_395 == 0);
+        x_397_phi = x_396;
+      }
+      let x_397 : bool = x_397_phi;
+      if (x_397) {
+        let x_400 : i32 = d;
+        d = (x_400 - 1);
+        let x_403 : i32 = p.x;
+        let x_405 : i32 = p.y;
+        map[(x_403 + (x_405 * 16))] = 1;
+        let x_410 : i32 = p.x;
+        let x_412 : i32 = p.y;
+        map[(x_410 + ((x_412 + 1) * 16))] = 1;
+        let x_418 : i32 = p.x;
+        let x_420 : i32 = p.y;
+        map[(x_418 + ((x_420 + 2) * 16))] = 1;
+        let x_426 : i32 = p.y;
+        p.y = (x_426 + 2);
+      }
+    }
+    let x_430 : i32 = ipos.y;
+    let x_433 : i32 = ipos.x;
+    let x_436 : i32 = map[((x_430 * 16) + x_433)];
+    if ((x_436 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_440 : bool = canwalk;
+      if (x_440) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm
new file mode 100644
index 0000000..208f178
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm
@@ -0,0 +1,223 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %c "c"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %27 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+         %43 = OpUndef %float
+%float_0_125 = OpConstant %float 0.125
+       %main = OpFunction %void None %9
+         %45 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+               OpStore %c %27
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %47 = OpLoad %float %46
+         %48 = OpFMul %float %47 %float_0_125
+         %49 = OpExtInst %float %1 Round %48
+         %50 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %51 = OpLoad %float %50
+               OpSelectionMerge %52 None
+               OpSwitch %uint_0 %53
+         %53 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %55 = OpPhi %float %float_n0_5 %53 %56 %57
+         %58 = OpPhi %int %int_1 %53 %59 %57
+         %60 = OpSLessThan %bool %58 %int_800
+               OpLoopMerge %61 %57 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+         %63 = OpSMod %int %58 %int_32
+         %64 = OpIEqual %bool %63 %int_0
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+         %68 = OpFAdd %float %55 %float_0_400000006
+               OpBranch %65
+         %67 = OpLabel
+         %69 = OpConvertSToF %float %58
+         %70 = OpExtInst %float %1 Round %49
+         %71 = OpFMod %float %69 %70
+         %72 = OpFOrdLessThanEqual %bool %71 %float_0_00999999978
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpFAdd %float %55 %float_100
+               OpBranch %73
+         %73 = OpLabel
+         %76 = OpPhi %float %55 %67 %75 %74
+               OpBranch %65
+         %65 = OpLabel
+         %56 = OpPhi %float %68 %66 %76 %73
+         %77 = OpConvertSToF %float %58
+         %78 = OpFOrdGreaterThanEqual %bool %77 %51
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpBranch %61
+         %79 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %59 = OpIAdd %int %58 %int_1
+               OpBranch %54
+         %61 = OpLabel
+         %81 = OpPhi %float %43 %54 %56 %80
+         %82 = OpPhi %float %55 %54 %56 %80
+         %83 = OpPhi %bool %false %54 %true %80
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %52 %84
+         %84 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+         %85 = OpPhi %float %81 %61 %82 %84
+         %86 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %86 %85
+         %87 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %88 = OpLoad %float %87
+               OpSelectionMerge %89 None
+               OpSwitch %uint_0 %90
+         %90 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpPhi %float %float_n0_5 %90 %93 %94
+         %95 = OpPhi %int %int_1 %90 %96 %94
+         %97 = OpSLessThan %bool %95 %int_800
+               OpLoopMerge %98 %94 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSMod %int %95 %int_32
+        %101 = OpIEqual %bool %100 %int_0
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+        %105 = OpFAdd %float %92 %float_0_400000006
+               OpBranch %102
+        %104 = OpLabel
+        %106 = OpConvertSToF %float %95
+        %107 = OpExtInst %float %1 Round %49
+        %108 = OpFMod %float %106 %107
+        %109 = OpFOrdLessThanEqual %bool %108 %float_0_00999999978
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpFAdd %float %92 %float_100
+               OpBranch %110
+        %110 = OpLabel
+        %113 = OpPhi %float %92 %104 %112 %111
+               OpBranch %102
+        %102 = OpLabel
+         %93 = OpPhi %float %105 %103 %113 %110
+        %114 = OpConvertSToF %float %95
+        %115 = OpFOrdGreaterThanEqual %bool %114 %88
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+               OpBranch %98
+        %116 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+         %96 = OpIAdd %int %95 %int_1
+               OpBranch %91
+         %98 = OpLabel
+        %118 = OpPhi %float %43 %91 %93 %117
+        %119 = OpPhi %float %92 %91 %93 %117
+        %120 = OpPhi %bool %false %91 %true %117
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %89 %121
+        %121 = OpLabel
+               OpBranch %89
+         %89 = OpLabel
+        %122 = OpPhi %float %118 %98 %119 %121
+        %123 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %123 %122
+        %124 = OpLoad %float %86
+        %125 = OpLoad %float %123
+        %126 = OpFAdd %float %124 %125
+        %127 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %127 %126
+               OpBranch %128
+        %128 = OpLabel
+        %129 = OpPhi %int %int_0 %89 %130 %131
+        %132 = OpSLessThan %bool %129 %int_3
+               OpLoopMerge %133 %131 None
+               OpBranchConditional %132 %134 %133
+        %134 = OpLabel
+        %135 = OpAccessChain %_ptr_Function_float %c %129
+        %136 = OpLoad %float %135
+        %137 = OpFOrdGreaterThanEqual %bool %136 %float_1
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+        %140 = OpLoad %float %135
+        %141 = OpLoad %float %135
+        %142 = OpFMul %float %140 %141
+               OpStore %135 %142
+               OpBranch %138
+        %138 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+        %130 = OpIAdd %int %129 %int_1
+               OpBranch %128
+        %133 = OpLabel
+        %143 = OpLoad %v3float %c
+        %144 = OpExtInst %v3float %1 FAbs %143
+        %145 = OpExtInst %v3float %1 Normalize %144
+        %146 = OpCompositeExtract %float %145 0
+        %147 = OpCompositeExtract %float %145 1
+        %148 = OpCompositeExtract %float %145 2
+        %149 = OpCompositeConstruct %v4float %146 %147 %148 %float_1
+               OpStore %_GLF_color %149
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..8d53961
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.hlsl
@@ -0,0 +1,202 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float x_51 = 0.0f;
+  float x_55 = 0.0f;
+  float x_56 = 0.0f;
+  float x_81 = 0.0f;
+  float x_82 = 0.0f;
+  float x_118 = 0.0f;
+  float x_119 = 0.0f;
+  float x_55_phi = 0.0f;
+  int x_58_phi = 0;
+  float x_81_phi = 0.0f;
+  float x_82_phi = 0.0f;
+  bool x_83_phi = false;
+  float x_85_phi = 0.0f;
+  float x_122_phi = 0.0f;
+  int x_129_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_47 = asfloat(x_7[0].x);
+  const float x_49 = round((x_47 * 0.125f));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5f;
+      x_58_phi = 1;
+      while (true) {
+        float x_68 = 0.0f;
+        float x_76 = 0.0f;
+        int x_59 = 0;
+        float x_56_phi = 0.0f;
+        x_55 = x_55_phi;
+        const int x_58 = x_58_phi;
+        x_81_phi = 0.0f;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        float x_75 = 0.0f;
+        float x_76_phi = 0.0f;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006f);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((float(x_58) % round(x_49)) <= 0.01f)) {
+            x_75 = (x_55 + 100.0f);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((float(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+        {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      const bool x_83 = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+      break;
+    }
+  }
+  float x_88 = 0.0f;
+  float x_92 = 0.0f;
+  float x_93 = 0.0f;
+  float x_92_phi = 0.0f;
+  int x_95_phi = 0;
+  float x_118_phi = 0.0f;
+  float x_119_phi = 0.0f;
+  bool x_120_phi = false;
+  const float x_85 = x_85_phi;
+  c.x = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5f;
+      x_95_phi = 1;
+      while (true) {
+        float x_105 = 0.0f;
+        float x_113 = 0.0f;
+        int x_96 = 0;
+        float x_93_phi = 0.0f;
+        x_92 = x_92_phi;
+        const int x_95 = x_95_phi;
+        x_118_phi = 0.0f;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        float x_112 = 0.0f;
+        float x_113_phi = 0.0f;
+        if (((x_95 % 32) == 0)) {
+          x_105 = (x_92 + 0.400000006f);
+          x_93_phi = x_105;
+        } else {
+          x_113_phi = x_92;
+          if (((float(x_95) % round(x_49)) <= 0.01f)) {
+            x_112 = (x_92 + 100.0f);
+            x_113_phi = x_112;
+          }
+          x_113 = x_113_phi;
+          x_93_phi = x_113;
+        }
+        x_93 = x_93_phi;
+        if ((float(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+        {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      const bool x_120 = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+      break;
+    }
+  }
+  const float x_122 = x_122_phi;
+  c.y = x_122;
+  const float x_124 = c.x;
+  const float x_125 = c.y;
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  while (true) {
+    int x_130 = 0;
+    const int x_129 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    const int x_135_save = x_129;
+    const float x_136 = c[x_135_save];
+    if ((x_136 >= 1.0f)) {
+      const float x_140 = c[x_135_save];
+      const float x_141 = c[x_135_save];
+      set_float3(c, x_135_save, (x_140 * x_141));
+    }
+    {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  const float3 x_145 = normalize(abs(c));
+  x_GLF_color = float4(x_145.x, x_145.y, x_145.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.msl
new file mode 100755
index 0000000..6b28523
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.msl
@@ -0,0 +1,208 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float x_51 = 0.0f;
+  float x_55 = 0.0f;
+  float x_56 = 0.0f;
+  float x_81 = 0.0f;
+  float x_82 = 0.0f;
+  float x_118 = 0.0f;
+  float x_119 = 0.0f;
+  float x_55_phi = 0.0f;
+  int x_58_phi = 0;
+  float x_81_phi = 0.0f;
+  float x_82_phi = 0.0f;
+  bool x_83_phi = false;
+  float x_85_phi = 0.0f;
+  float x_122_phi = 0.0f;
+  int x_129_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_47 = x_7.resolution.x;
+  float const x_49 = rint((x_47 * 0.125f));
+  x_51 = (*(tint_symbol_5)).x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5f;
+      x_58_phi = 1;
+      while (true) {
+        float x_68 = 0.0f;
+        float x_76 = 0.0f;
+        int x_59 = 0;
+        float x_56_phi = 0.0f;
+        x_55 = x_55_phi;
+        int const x_58 = x_58_phi;
+        x_81_phi = 0.0f;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        float x_75 = 0.0f;
+        float x_76_phi = 0.0f;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006f);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((float(x_58) % rint(x_49)) <= 0.01f)) {
+            x_75 = (x_55 + 100.0f);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((float(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+        {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      bool const x_83 = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+      break;
+    }
+  }
+  float x_88 = 0.0f;
+  float x_92 = 0.0f;
+  float x_93 = 0.0f;
+  float x_92_phi = 0.0f;
+  int x_95_phi = 0;
+  float x_118_phi = 0.0f;
+  float x_119_phi = 0.0f;
+  bool x_120_phi = false;
+  float const x_85 = x_85_phi;
+  c.x = x_85;
+  x_88 = (*(tint_symbol_5)).y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5f;
+      x_95_phi = 1;
+      while (true) {
+        float x_105 = 0.0f;
+        float x_113 = 0.0f;
+        int x_96 = 0;
+        float x_93_phi = 0.0f;
+        x_92 = x_92_phi;
+        int const x_95 = x_95_phi;
+        x_118_phi = 0.0f;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        float x_112 = 0.0f;
+        float x_113_phi = 0.0f;
+        if (((x_95 % 32) == 0)) {
+          x_105 = (x_92 + 0.400000006f);
+          x_93_phi = x_105;
+        } else {
+          x_113_phi = x_92;
+          if (((float(x_95) % rint(x_49)) <= 0.01f)) {
+            x_112 = (x_92 + 100.0f);
+            x_113_phi = x_112;
+          }
+          x_113 = x_113_phi;
+          x_93_phi = x_113;
+        }
+        x_93 = x_93_phi;
+        if ((float(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+        {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      bool const x_120 = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+      break;
+    }
+  }
+  float const x_122 = x_122_phi;
+  c.y = x_122;
+  float const x_124 = c.x;
+  float const x_125 = c.y;
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  while (true) {
+    int x_130 = 0;
+    int const x_129 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    int const x_135_save = x_129;
+    float const x_136 = c[x_135_save];
+    if ((x_136 >= 1.0f)) {
+      float const x_140 = c[x_135_save];
+      float const x_141 = c[x_135_save];
+      c[x_135_save] = (x_140 * x_141);
+    }
+    {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  float3 const x_143 = c;
+  float3 const x_145 = normalize(fabs(x_143));
+  *(tint_symbol_6) = float4(x_145.x, x_145.y, x_145.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u2mo.0.metal:60:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_58) % rint(x_49)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+T:\tmp\u2mo.0.metal:127:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_95) % rint(x_49)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+2 errors generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..fdd3fe1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.spvasm
@@ -0,0 +1,449 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 254
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %x_51 "x_51"
+               OpName %x_55 "x_55"
+               OpName %x_56 "x_56"
+               OpName %x_81 "x_81"
+               OpName %x_82 "x_82"
+               OpName %x_118 "x_118"
+               OpName %x_119 "x_119"
+               OpName %x_55_phi "x_55_phi"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_81_phi "x_81_phi"
+               OpName %x_82_phi "x_82_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_85_phi "x_85_phi"
+               OpName %x_122_phi "x_122_phi"
+               OpName %x_129_phi "x_129_phi"
+               OpName %x_68 "x_68"
+               OpName %x_76 "x_76"
+               OpName %x_59 "x_59"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_75 "x_75"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_88 "x_88"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_120_phi "x_120_phi"
+               OpName %x_105 "x_105"
+               OpName %x_113 "x_113"
+               OpName %x_96 "x_96"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_112 "x_112"
+               OpName %x_113_phi "x_113_phi"
+               OpName %x_130 "x_130"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %22 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %49 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+    %int_800 = OpConstant %int 800
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %241 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %22
+       %x_51 = OpVariable %_ptr_Function_float Function %25
+       %x_55 = OpVariable %_ptr_Function_float Function %25
+       %x_56 = OpVariable %_ptr_Function_float Function %25
+       %x_81 = OpVariable %_ptr_Function_float Function %25
+       %x_82 = OpVariable %_ptr_Function_float Function %25
+      %x_118 = OpVariable %_ptr_Function_float Function %25
+      %x_119 = OpVariable %_ptr_Function_float Function %25
+   %x_55_phi = OpVariable %_ptr_Function_float Function %25
+   %x_58_phi = OpVariable %_ptr_Function_int Function %36
+   %x_81_phi = OpVariable %_ptr_Function_float Function %25
+   %x_82_phi = OpVariable %_ptr_Function_float Function %25
+   %x_83_phi = OpVariable %_ptr_Function_bool Function %42
+   %x_85_phi = OpVariable %_ptr_Function_float Function %25
+  %x_122_phi = OpVariable %_ptr_Function_float Function %25
+  %x_129_phi = OpVariable %_ptr_Function_int Function %36
+       %x_68 = OpVariable %_ptr_Function_float Function %25
+       %x_76 = OpVariable %_ptr_Function_float Function %25
+       %x_59 = OpVariable %_ptr_Function_int Function %36
+   %x_56_phi = OpVariable %_ptr_Function_float Function %25
+       %x_75 = OpVariable %_ptr_Function_float Function %25
+   %x_76_phi = OpVariable %_ptr_Function_float Function %25
+       %x_88 = OpVariable %_ptr_Function_float Function %25
+       %x_92 = OpVariable %_ptr_Function_float Function %25
+       %x_93 = OpVariable %_ptr_Function_float Function %25
+   %x_92_phi = OpVariable %_ptr_Function_float Function %25
+   %x_95_phi = OpVariable %_ptr_Function_int Function %36
+  %x_118_phi = OpVariable %_ptr_Function_float Function %25
+  %x_119_phi = OpVariable %_ptr_Function_float Function %25
+  %x_120_phi = OpVariable %_ptr_Function_bool Function %42
+      %x_105 = OpVariable %_ptr_Function_float Function %25
+      %x_113 = OpVariable %_ptr_Function_float Function %25
+       %x_96 = OpVariable %_ptr_Function_int Function %36
+   %x_93_phi = OpVariable %_ptr_Function_float Function %25
+      %x_112 = OpVariable %_ptr_Function_float Function %25
+  %x_113_phi = OpVariable %_ptr_Function_float Function %25
+      %x_130 = OpVariable %_ptr_Function_int Function %36
+               OpStore %c %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %54 = OpLoad %float %53
+         %58 = OpFMul %float %54 %float_0_125
+         %55 = OpExtInst %float %56 RoundEven %58
+         %60 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %61 = OpLoad %float %60
+               OpStore %x_51 %61
+               OpSelectionMerge %62 None
+               OpSwitch %uint_0 %63
+         %63 = OpLabel
+               OpStore %x_55_phi %float_n0_5
+               OpStore %x_58_phi %int_1
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %74 = OpLoad %float %x_55_phi
+               OpStore %x_55 %74
+         %75 = OpLoad %int %x_58_phi
+               OpStore %x_81_phi %float_0
+         %77 = OpLoad %float %x_55
+               OpStore %x_82_phi %77
+               OpStore %x_83_phi %false
+         %80 = OpSLessThan %bool %75 %int_800
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %67
+         %81 = OpLabel
+         %87 = OpSMod %int %75 %int_32
+         %89 = OpIEqual %bool %87 %int_0
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+         %93 = OpLoad %float %x_55
+         %95 = OpFAdd %float %93 %float_0_400000006
+               OpStore %x_68 %95
+         %96 = OpLoad %float %x_68
+               OpStore %x_56_phi %96
+               OpBranch %90
+         %92 = OpLabel
+         %97 = OpLoad %float %x_55
+               OpStore %x_76_phi %97
+         %98 = OpConvertSToF %float %75
+         %99 = OpExtInst %float %56 RoundEven %55
+        %100 = OpFMod %float %98 %99
+        %102 = OpFOrdLessThanEqual %bool %100 %float_0_00999999978
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+        %105 = OpLoad %float %x_55
+        %107 = OpFAdd %float %105 %float_100
+               OpStore %x_75 %107
+        %108 = OpLoad %float %x_75
+               OpStore %x_76_phi %108
+               OpBranch %103
+        %103 = OpLabel
+        %109 = OpLoad %float %x_76_phi
+               OpStore %x_76 %109
+        %110 = OpLoad %float %x_76
+               OpStore %x_56_phi %110
+               OpBranch %90
+         %90 = OpLabel
+        %111 = OpLoad %float %x_56_phi
+               OpStore %x_56 %111
+        %112 = OpConvertSToF %float %75
+        %113 = OpLoad %float %x_51
+        %114 = OpFOrdGreaterThanEqual %bool %112 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+        %117 = OpLoad %float %x_56
+               OpStore %x_81_phi %117
+        %118 = OpLoad %float %x_56
+               OpStore %x_82_phi %118
+               OpStore %x_83_phi %true
+               OpBranch %67
+        %115 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+        %120 = OpIAdd %int %75 %int_1
+               OpStore %x_59 %120
+        %121 = OpLoad %float %x_56
+               OpStore %x_55_phi %121
+        %122 = OpLoad %int %x_59
+               OpStore %x_58_phi %122
+               OpBranch %66
+         %67 = OpLabel
+        %123 = OpLoad %float %x_81_phi
+               OpStore %x_81 %123
+        %124 = OpLoad %float %x_82_phi
+               OpStore %x_82 %124
+        %125 = OpLoad %bool %x_83_phi
+        %126 = OpLoad %float %x_81
+               OpStore %x_85_phi %126
+               OpSelectionMerge %127 None
+               OpBranchConditional %125 %128 %127
+        %128 = OpLabel
+               OpBranch %62
+        %127 = OpLabel
+        %129 = OpLoad %float %x_82
+               OpStore %x_85_phi %129
+               OpBranch %62
+         %62 = OpLabel
+        %138 = OpLoad %float %x_85_phi
+        %139 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %139 %138
+        %141 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %142 = OpLoad %float %141
+               OpStore %x_88 %142
+               OpSelectionMerge %143 None
+               OpSwitch %uint_0 %144
+        %144 = OpLabel
+               OpStore %x_92_phi %float_n0_5
+               OpStore %x_95_phi %int_1
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %153 = OpLoad %float %x_92_phi
+               OpStore %x_92 %153
+        %154 = OpLoad %int %x_95_phi
+               OpStore %x_118_phi %float_0
+        %155 = OpLoad %float %x_92
+               OpStore %x_119_phi %155
+               OpStore %x_120_phi %false
+        %156 = OpSLessThan %bool %154 %int_800
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %146
+        %157 = OpLabel
+        %162 = OpSMod %int %154 %int_32
+        %163 = OpIEqual %bool %162 %int_0
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %166
+        %165 = OpLabel
+        %167 = OpLoad %float %x_92
+        %168 = OpFAdd %float %167 %float_0_400000006
+               OpStore %x_105 %168
+        %169 = OpLoad %float %x_105
+               OpStore %x_93_phi %169
+               OpBranch %164
+        %166 = OpLabel
+        %170 = OpLoad %float %x_92
+               OpStore %x_113_phi %170
+        %171 = OpConvertSToF %float %154
+        %172 = OpExtInst %float %56 RoundEven %55
+        %173 = OpFMod %float %171 %172
+        %174 = OpFOrdLessThanEqual %bool %173 %float_0_00999999978
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %175
+        %176 = OpLabel
+        %177 = OpLoad %float %x_92
+        %178 = OpFAdd %float %177 %float_100
+               OpStore %x_112 %178
+        %179 = OpLoad %float %x_112
+               OpStore %x_113_phi %179
+               OpBranch %175
+        %175 = OpLabel
+        %180 = OpLoad %float %x_113_phi
+               OpStore %x_113 %180
+        %181 = OpLoad %float %x_113
+               OpStore %x_93_phi %181
+               OpBranch %164
+        %164 = OpLabel
+        %182 = OpLoad %float %x_93_phi
+               OpStore %x_93 %182
+        %183 = OpConvertSToF %float %154
+        %184 = OpLoad %float %x_88
+        %185 = OpFOrdGreaterThanEqual %bool %183 %184
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %186
+        %187 = OpLabel
+        %188 = OpLoad %float %x_93
+               OpStore %x_118_phi %188
+        %189 = OpLoad %float %x_93
+               OpStore %x_119_phi %189
+               OpStore %x_120_phi %true
+               OpBranch %146
+        %186 = OpLabel
+               OpBranch %147
+        %147 = OpLabel
+        %190 = OpIAdd %int %154 %int_1
+               OpStore %x_96 %190
+        %191 = OpLoad %float %x_93
+               OpStore %x_92_phi %191
+        %192 = OpLoad %int %x_96
+               OpStore %x_95_phi %192
+               OpBranch %145
+        %146 = OpLabel
+        %193 = OpLoad %float %x_118_phi
+               OpStore %x_118 %193
+        %194 = OpLoad %float %x_119_phi
+               OpStore %x_119 %194
+        %195 = OpLoad %bool %x_120_phi
+        %196 = OpLoad %float %x_118
+               OpStore %x_122_phi %196
+               OpSelectionMerge %197 None
+               OpBranchConditional %195 %198 %197
+        %198 = OpLabel
+               OpBranch %143
+        %197 = OpLabel
+        %199 = OpLoad %float %x_119
+               OpStore %x_122_phi %199
+               OpBranch %143
+        %143 = OpLabel
+        %200 = OpLoad %float %x_122_phi
+        %201 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %201 %200
+        %202 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %203 = OpLoad %float %202
+        %204 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %205 = OpLoad %float %204
+        %207 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %208 = OpFAdd %float %203 %205
+               OpStore %207 %208
+               OpStore %x_129_phi %int_0
+               OpBranch %209
+        %209 = OpLabel
+               OpLoopMerge %210 %211 None
+               OpBranch %212
+        %212 = OpLabel
+        %214 = OpLoad %int %x_129_phi
+        %216 = OpSLessThan %bool %214 %int_3
+               OpSelectionMerge %217 None
+               OpBranchConditional %216 %218 %219
+        %218 = OpLabel
+               OpBranch %217
+        %219 = OpLabel
+               OpBranch %210
+        %217 = OpLabel
+        %220 = OpAccessChain %_ptr_Function_float %c %214
+        %221 = OpLoad %float %220
+        %223 = OpFOrdGreaterThanEqual %bool %221 %float_1
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %224
+        %225 = OpLabel
+        %226 = OpAccessChain %_ptr_Function_float %c %214
+        %227 = OpLoad %float %226
+        %228 = OpAccessChain %_ptr_Function_float %c %214
+        %229 = OpLoad %float %228
+        %230 = OpAccessChain %_ptr_Function_float %c %214
+        %231 = OpFMul %float %227 %229
+               OpStore %230 %231
+               OpBranch %224
+        %224 = OpLabel
+               OpBranch %211
+        %211 = OpLabel
+        %232 = OpIAdd %int %214 %int_1
+               OpStore %x_130 %232
+        %233 = OpLoad %int %x_130
+               OpStore %x_129_phi %233
+               OpBranch %209
+        %210 = OpLabel
+        %234 = OpLoad %v3float %c
+        %236 = OpExtInst %v3float %56 FAbs %234
+        %235 = OpExtInst %v3float %56 Normalize %236
+        %237 = OpCompositeExtract %float %235 0
+        %238 = OpCompositeExtract %float %235 1
+        %239 = OpCompositeExtract %float %235 2
+        %240 = OpCompositeConstruct %v4float %237 %238 %239 %float_1
+               OpStore %x_GLF_color %240
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %241
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %245 = OpLabel
+        %246 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %246
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %248 = OpLabel
+        %249 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %249
+        %250 = OpFunctionCall %void %main_1
+        %252 = OpLoad %v4float %x_GLF_color
+        %253 = OpCompositeConstruct %main_out %252
+        %251 = OpFunctionCall %void %tint_symbol_3 %253
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..41e57f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.spvasm.expected.wgsl
@@ -0,0 +1,200 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_51 : f32;
+  var x_55 : f32;
+  var x_56 : f32;
+  var x_81 : f32;
+  var x_82 : f32;
+  var x_118 : f32;
+  var x_119 : f32;
+  var x_55_phi : f32;
+  var x_58_phi : i32;
+  var x_81_phi : f32;
+  var x_82_phi : f32;
+  var x_83_phi : bool;
+  var x_85_phi : f32;
+  var x_122_phi : f32;
+  var x_129_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_47 : f32 = x_7.resolution.x;
+  let x_49 : f32 = round((x_47 * 0.125));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5;
+      x_58_phi = 1;
+      loop {
+        var x_68 : f32;
+        var x_76 : f32;
+        var x_59 : i32;
+        var x_56_phi : f32;
+        x_55 = x_55_phi;
+        let x_58 : i32 = x_58_phi;
+        x_81_phi = 0.0;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        var x_75 : f32;
+        var x_76_phi : f32;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((f32(x_58) % round(x_49)) <= 0.01)) {
+            x_75 = (x_55 + 100.0);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((f32(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+
+        continuing {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      let x_83 : bool = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+    }
+  }
+  var x_88 : f32;
+  var x_92 : f32;
+  var x_93 : f32;
+  var x_92_phi : f32;
+  var x_95_phi : i32;
+  var x_118_phi : f32;
+  var x_119_phi : f32;
+  var x_120_phi : bool;
+  let x_85 : f32 = x_85_phi;
+  let x_86 : ptr<function, f32> = &(c.x);
+  *(x_86) = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5;
+      x_95_phi = 1;
+      loop {
+        var x_105 : f32;
+        var x_113 : f32;
+        var x_96 : i32;
+        var x_93_phi : f32;
+        x_92 = x_92_phi;
+        let x_95 : i32 = x_95_phi;
+        x_118_phi = 0.0;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        var x_112 : f32;
+        var x_113_phi : f32;
+        if (((x_95 % 32) == 0)) {
+          x_105 = (x_92 + 0.400000006);
+          x_93_phi = x_105;
+        } else {
+          x_113_phi = x_92;
+          if (((f32(x_95) % round(x_49)) <= 0.01)) {
+            x_112 = (x_92 + 100.0);
+            x_113_phi = x_112;
+          }
+          x_113 = x_113_phi;
+          x_93_phi = x_113;
+        }
+        x_93 = x_93_phi;
+        if ((f32(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+
+        continuing {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      let x_120 : bool = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+    }
+  }
+  let x_122 : f32 = x_122_phi;
+  let x_123 : ptr<function, f32> = &(c.y);
+  *(x_123) = x_122;
+  let x_124 : f32 = *(x_86);
+  let x_125 : f32 = *(x_123);
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  loop {
+    var x_130 : i32;
+    let x_129 : i32 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    let x_135 : ptr<function, f32> = &(c[x_129]);
+    let x_136 : f32 = *(x_135);
+    if ((x_136 >= 1.0)) {
+      let x_140 : f32 = *(x_135);
+      let x_141 : f32 = *(x_135);
+      *(x_135) = (x_140 * x_141);
+    }
+
+    continuing {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  let x_143 : vec3<f32> = c;
+  let x_145 : vec3<f32> = normalize(abs(x_143));
+  x_GLF_color = vec4<f32>(x_145.x, x_145.y, x_145.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
new file mode 100644
index 0000000..41e57f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
@@ -0,0 +1,200 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_51 : f32;
+  var x_55 : f32;
+  var x_56 : f32;
+  var x_81 : f32;
+  var x_82 : f32;
+  var x_118 : f32;
+  var x_119 : f32;
+  var x_55_phi : f32;
+  var x_58_phi : i32;
+  var x_81_phi : f32;
+  var x_82_phi : f32;
+  var x_83_phi : bool;
+  var x_85_phi : f32;
+  var x_122_phi : f32;
+  var x_129_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_47 : f32 = x_7.resolution.x;
+  let x_49 : f32 = round((x_47 * 0.125));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5;
+      x_58_phi = 1;
+      loop {
+        var x_68 : f32;
+        var x_76 : f32;
+        var x_59 : i32;
+        var x_56_phi : f32;
+        x_55 = x_55_phi;
+        let x_58 : i32 = x_58_phi;
+        x_81_phi = 0.0;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        var x_75 : f32;
+        var x_76_phi : f32;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((f32(x_58) % round(x_49)) <= 0.01)) {
+            x_75 = (x_55 + 100.0);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((f32(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+
+        continuing {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      let x_83 : bool = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+    }
+  }
+  var x_88 : f32;
+  var x_92 : f32;
+  var x_93 : f32;
+  var x_92_phi : f32;
+  var x_95_phi : i32;
+  var x_118_phi : f32;
+  var x_119_phi : f32;
+  var x_120_phi : bool;
+  let x_85 : f32 = x_85_phi;
+  let x_86 : ptr<function, f32> = &(c.x);
+  *(x_86) = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5;
+      x_95_phi = 1;
+      loop {
+        var x_105 : f32;
+        var x_113 : f32;
+        var x_96 : i32;
+        var x_93_phi : f32;
+        x_92 = x_92_phi;
+        let x_95 : i32 = x_95_phi;
+        x_118_phi = 0.0;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        var x_112 : f32;
+        var x_113_phi : f32;
+        if (((x_95 % 32) == 0)) {
+          x_105 = (x_92 + 0.400000006);
+          x_93_phi = x_105;
+        } else {
+          x_113_phi = x_92;
+          if (((f32(x_95) % round(x_49)) <= 0.01)) {
+            x_112 = (x_92 + 100.0);
+            x_113_phi = x_112;
+          }
+          x_113 = x_113_phi;
+          x_93_phi = x_113;
+        }
+        x_93 = x_93_phi;
+        if ((f32(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+
+        continuing {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      let x_120 : bool = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+    }
+  }
+  let x_122 : f32 = x_122_phi;
+  let x_123 : ptr<function, f32> = &(c.y);
+  *(x_123) = x_122;
+  let x_124 : f32 = *(x_86);
+  let x_125 : f32 = *(x_123);
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  loop {
+    var x_130 : i32;
+    let x_129 : i32 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    let x_135 : ptr<function, f32> = &(c[x_129]);
+    let x_136 : f32 = *(x_135);
+    if ((x_136 >= 1.0)) {
+      let x_140 : f32 = *(x_135);
+      let x_141 : f32 = *(x_135);
+      *(x_135) = (x_140 * x_141);
+    }
+
+    continuing {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  let x_143 : vec3<f32> = c;
+  let x_145 : vec3<f32> = normalize(abs(x_143));
+  x_GLF_color = vec4<f32>(x_145.x, x_145.y, x_145.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..8d53961
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.hlsl
@@ -0,0 +1,202 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float x_51 = 0.0f;
+  float x_55 = 0.0f;
+  float x_56 = 0.0f;
+  float x_81 = 0.0f;
+  float x_82 = 0.0f;
+  float x_118 = 0.0f;
+  float x_119 = 0.0f;
+  float x_55_phi = 0.0f;
+  int x_58_phi = 0;
+  float x_81_phi = 0.0f;
+  float x_82_phi = 0.0f;
+  bool x_83_phi = false;
+  float x_85_phi = 0.0f;
+  float x_122_phi = 0.0f;
+  int x_129_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_47 = asfloat(x_7[0].x);
+  const float x_49 = round((x_47 * 0.125f));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5f;
+      x_58_phi = 1;
+      while (true) {
+        float x_68 = 0.0f;
+        float x_76 = 0.0f;
+        int x_59 = 0;
+        float x_56_phi = 0.0f;
+        x_55 = x_55_phi;
+        const int x_58 = x_58_phi;
+        x_81_phi = 0.0f;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        float x_75 = 0.0f;
+        float x_76_phi = 0.0f;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006f);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((float(x_58) % round(x_49)) <= 0.01f)) {
+            x_75 = (x_55 + 100.0f);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((float(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+        {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      const bool x_83 = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+      break;
+    }
+  }
+  float x_88 = 0.0f;
+  float x_92 = 0.0f;
+  float x_93 = 0.0f;
+  float x_92_phi = 0.0f;
+  int x_95_phi = 0;
+  float x_118_phi = 0.0f;
+  float x_119_phi = 0.0f;
+  bool x_120_phi = false;
+  const float x_85 = x_85_phi;
+  c.x = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5f;
+      x_95_phi = 1;
+      while (true) {
+        float x_105 = 0.0f;
+        float x_113 = 0.0f;
+        int x_96 = 0;
+        float x_93_phi = 0.0f;
+        x_92 = x_92_phi;
+        const int x_95 = x_95_phi;
+        x_118_phi = 0.0f;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        float x_112 = 0.0f;
+        float x_113_phi = 0.0f;
+        if (((x_95 % 32) == 0)) {
+          x_105 = (x_92 + 0.400000006f);
+          x_93_phi = x_105;
+        } else {
+          x_113_phi = x_92;
+          if (((float(x_95) % round(x_49)) <= 0.01f)) {
+            x_112 = (x_92 + 100.0f);
+            x_113_phi = x_112;
+          }
+          x_113 = x_113_phi;
+          x_93_phi = x_113;
+        }
+        x_93 = x_93_phi;
+        if ((float(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+        {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      const bool x_120 = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+      break;
+    }
+  }
+  const float x_122 = x_122_phi;
+  c.y = x_122;
+  const float x_124 = c.x;
+  const float x_125 = c.y;
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  while (true) {
+    int x_130 = 0;
+    const int x_129 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    const int x_135_save = x_129;
+    const float x_136 = c[x_135_save];
+    if ((x_136 >= 1.0f)) {
+      const float x_140 = c[x_135_save];
+      const float x_141 = c[x_135_save];
+      set_float3(c, x_135_save, (x_140 * x_141));
+    }
+    {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  const float3 x_145 = normalize(abs(c));
+  x_GLF_color = float4(x_145.x, x_145.y, x_145.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.msl
new file mode 100755
index 0000000..a68104d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.msl
@@ -0,0 +1,208 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float x_51 = 0.0f;
+  float x_55 = 0.0f;
+  float x_56 = 0.0f;
+  float x_81 = 0.0f;
+  float x_82 = 0.0f;
+  float x_118 = 0.0f;
+  float x_119 = 0.0f;
+  float x_55_phi = 0.0f;
+  int x_58_phi = 0;
+  float x_81_phi = 0.0f;
+  float x_82_phi = 0.0f;
+  bool x_83_phi = false;
+  float x_85_phi = 0.0f;
+  float x_122_phi = 0.0f;
+  int x_129_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_47 = x_7.resolution.x;
+  float const x_49 = rint((x_47 * 0.125f));
+  x_51 = (*(tint_symbol_5)).x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5f;
+      x_58_phi = 1;
+      while (true) {
+        float x_68 = 0.0f;
+        float x_76 = 0.0f;
+        int x_59 = 0;
+        float x_56_phi = 0.0f;
+        x_55 = x_55_phi;
+        int const x_58 = x_58_phi;
+        x_81_phi = 0.0f;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        float x_75 = 0.0f;
+        float x_76_phi = 0.0f;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006f);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((float(x_58) % rint(x_49)) <= 0.01f)) {
+            x_75 = (x_55 + 100.0f);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((float(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+        {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      bool const x_83 = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+      break;
+    }
+  }
+  float x_88 = 0.0f;
+  float x_92 = 0.0f;
+  float x_93 = 0.0f;
+  float x_92_phi = 0.0f;
+  int x_95_phi = 0;
+  float x_118_phi = 0.0f;
+  float x_119_phi = 0.0f;
+  bool x_120_phi = false;
+  float const x_85 = x_85_phi;
+  c.x = x_85;
+  x_88 = (*(tint_symbol_5)).y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5f;
+      x_95_phi = 1;
+      while (true) {
+        float x_105 = 0.0f;
+        float x_113 = 0.0f;
+        int x_96 = 0;
+        float x_93_phi = 0.0f;
+        x_92 = x_92_phi;
+        int const x_95 = x_95_phi;
+        x_118_phi = 0.0f;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        float x_112 = 0.0f;
+        float x_113_phi = 0.0f;
+        if (((x_95 % 32) == 0)) {
+          x_105 = (x_92 + 0.400000006f);
+          x_93_phi = x_105;
+        } else {
+          x_113_phi = x_92;
+          if (((float(x_95) % rint(x_49)) <= 0.01f)) {
+            x_112 = (x_92 + 100.0f);
+            x_113_phi = x_112;
+          }
+          x_113 = x_113_phi;
+          x_93_phi = x_113;
+        }
+        x_93 = x_93_phi;
+        if ((float(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+        {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      bool const x_120 = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+      break;
+    }
+  }
+  float const x_122 = x_122_phi;
+  c.y = x_122;
+  float const x_124 = c.x;
+  float const x_125 = c.y;
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  while (true) {
+    int x_130 = 0;
+    int const x_129 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    int const x_135_save = x_129;
+    float const x_136 = c[x_135_save];
+    if ((x_136 >= 1.0f)) {
+      float const x_140 = c[x_135_save];
+      float const x_141 = c[x_135_save];
+      c[x_135_save] = (x_140 * x_141);
+    }
+    {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  float3 const x_143 = c;
+  float3 const x_145 = normalize(fabs(x_143));
+  *(tint_symbol_6) = float4(x_145.x, x_145.y, x_145.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u938.0.metal:60:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_58) % rint(x_49)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+T:\tmp\u938.0.metal:127:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_95) % rint(x_49)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+2 errors generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..fdd3fe1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.spvasm
@@ -0,0 +1,449 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 254
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %x_51 "x_51"
+               OpName %x_55 "x_55"
+               OpName %x_56 "x_56"
+               OpName %x_81 "x_81"
+               OpName %x_82 "x_82"
+               OpName %x_118 "x_118"
+               OpName %x_119 "x_119"
+               OpName %x_55_phi "x_55_phi"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_81_phi "x_81_phi"
+               OpName %x_82_phi "x_82_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_85_phi "x_85_phi"
+               OpName %x_122_phi "x_122_phi"
+               OpName %x_129_phi "x_129_phi"
+               OpName %x_68 "x_68"
+               OpName %x_76 "x_76"
+               OpName %x_59 "x_59"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_75 "x_75"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_88 "x_88"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_120_phi "x_120_phi"
+               OpName %x_105 "x_105"
+               OpName %x_113 "x_113"
+               OpName %x_96 "x_96"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_112 "x_112"
+               OpName %x_113_phi "x_113_phi"
+               OpName %x_130 "x_130"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %22 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %49 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+    %int_800 = OpConstant %int 800
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %241 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %22
+       %x_51 = OpVariable %_ptr_Function_float Function %25
+       %x_55 = OpVariable %_ptr_Function_float Function %25
+       %x_56 = OpVariable %_ptr_Function_float Function %25
+       %x_81 = OpVariable %_ptr_Function_float Function %25
+       %x_82 = OpVariable %_ptr_Function_float Function %25
+      %x_118 = OpVariable %_ptr_Function_float Function %25
+      %x_119 = OpVariable %_ptr_Function_float Function %25
+   %x_55_phi = OpVariable %_ptr_Function_float Function %25
+   %x_58_phi = OpVariable %_ptr_Function_int Function %36
+   %x_81_phi = OpVariable %_ptr_Function_float Function %25
+   %x_82_phi = OpVariable %_ptr_Function_float Function %25
+   %x_83_phi = OpVariable %_ptr_Function_bool Function %42
+   %x_85_phi = OpVariable %_ptr_Function_float Function %25
+  %x_122_phi = OpVariable %_ptr_Function_float Function %25
+  %x_129_phi = OpVariable %_ptr_Function_int Function %36
+       %x_68 = OpVariable %_ptr_Function_float Function %25
+       %x_76 = OpVariable %_ptr_Function_float Function %25
+       %x_59 = OpVariable %_ptr_Function_int Function %36
+   %x_56_phi = OpVariable %_ptr_Function_float Function %25
+       %x_75 = OpVariable %_ptr_Function_float Function %25
+   %x_76_phi = OpVariable %_ptr_Function_float Function %25
+       %x_88 = OpVariable %_ptr_Function_float Function %25
+       %x_92 = OpVariable %_ptr_Function_float Function %25
+       %x_93 = OpVariable %_ptr_Function_float Function %25
+   %x_92_phi = OpVariable %_ptr_Function_float Function %25
+   %x_95_phi = OpVariable %_ptr_Function_int Function %36
+  %x_118_phi = OpVariable %_ptr_Function_float Function %25
+  %x_119_phi = OpVariable %_ptr_Function_float Function %25
+  %x_120_phi = OpVariable %_ptr_Function_bool Function %42
+      %x_105 = OpVariable %_ptr_Function_float Function %25
+      %x_113 = OpVariable %_ptr_Function_float Function %25
+       %x_96 = OpVariable %_ptr_Function_int Function %36
+   %x_93_phi = OpVariable %_ptr_Function_float Function %25
+      %x_112 = OpVariable %_ptr_Function_float Function %25
+  %x_113_phi = OpVariable %_ptr_Function_float Function %25
+      %x_130 = OpVariable %_ptr_Function_int Function %36
+               OpStore %c %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %54 = OpLoad %float %53
+         %58 = OpFMul %float %54 %float_0_125
+         %55 = OpExtInst %float %56 RoundEven %58
+         %60 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %61 = OpLoad %float %60
+               OpStore %x_51 %61
+               OpSelectionMerge %62 None
+               OpSwitch %uint_0 %63
+         %63 = OpLabel
+               OpStore %x_55_phi %float_n0_5
+               OpStore %x_58_phi %int_1
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %74 = OpLoad %float %x_55_phi
+               OpStore %x_55 %74
+         %75 = OpLoad %int %x_58_phi
+               OpStore %x_81_phi %float_0
+         %77 = OpLoad %float %x_55
+               OpStore %x_82_phi %77
+               OpStore %x_83_phi %false
+         %80 = OpSLessThan %bool %75 %int_800
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %67
+         %81 = OpLabel
+         %87 = OpSMod %int %75 %int_32
+         %89 = OpIEqual %bool %87 %int_0
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+         %93 = OpLoad %float %x_55
+         %95 = OpFAdd %float %93 %float_0_400000006
+               OpStore %x_68 %95
+         %96 = OpLoad %float %x_68
+               OpStore %x_56_phi %96
+               OpBranch %90
+         %92 = OpLabel
+         %97 = OpLoad %float %x_55
+               OpStore %x_76_phi %97
+         %98 = OpConvertSToF %float %75
+         %99 = OpExtInst %float %56 RoundEven %55
+        %100 = OpFMod %float %98 %99
+        %102 = OpFOrdLessThanEqual %bool %100 %float_0_00999999978
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+        %105 = OpLoad %float %x_55
+        %107 = OpFAdd %float %105 %float_100
+               OpStore %x_75 %107
+        %108 = OpLoad %float %x_75
+               OpStore %x_76_phi %108
+               OpBranch %103
+        %103 = OpLabel
+        %109 = OpLoad %float %x_76_phi
+               OpStore %x_76 %109
+        %110 = OpLoad %float %x_76
+               OpStore %x_56_phi %110
+               OpBranch %90
+         %90 = OpLabel
+        %111 = OpLoad %float %x_56_phi
+               OpStore %x_56 %111
+        %112 = OpConvertSToF %float %75
+        %113 = OpLoad %float %x_51
+        %114 = OpFOrdGreaterThanEqual %bool %112 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+        %117 = OpLoad %float %x_56
+               OpStore %x_81_phi %117
+        %118 = OpLoad %float %x_56
+               OpStore %x_82_phi %118
+               OpStore %x_83_phi %true
+               OpBranch %67
+        %115 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+        %120 = OpIAdd %int %75 %int_1
+               OpStore %x_59 %120
+        %121 = OpLoad %float %x_56
+               OpStore %x_55_phi %121
+        %122 = OpLoad %int %x_59
+               OpStore %x_58_phi %122
+               OpBranch %66
+         %67 = OpLabel
+        %123 = OpLoad %float %x_81_phi
+               OpStore %x_81 %123
+        %124 = OpLoad %float %x_82_phi
+               OpStore %x_82 %124
+        %125 = OpLoad %bool %x_83_phi
+        %126 = OpLoad %float %x_81
+               OpStore %x_85_phi %126
+               OpSelectionMerge %127 None
+               OpBranchConditional %125 %128 %127
+        %128 = OpLabel
+               OpBranch %62
+        %127 = OpLabel
+        %129 = OpLoad %float %x_82
+               OpStore %x_85_phi %129
+               OpBranch %62
+         %62 = OpLabel
+        %138 = OpLoad %float %x_85_phi
+        %139 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %139 %138
+        %141 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %142 = OpLoad %float %141
+               OpStore %x_88 %142
+               OpSelectionMerge %143 None
+               OpSwitch %uint_0 %144
+        %144 = OpLabel
+               OpStore %x_92_phi %float_n0_5
+               OpStore %x_95_phi %int_1
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %153 = OpLoad %float %x_92_phi
+               OpStore %x_92 %153
+        %154 = OpLoad %int %x_95_phi
+               OpStore %x_118_phi %float_0
+        %155 = OpLoad %float %x_92
+               OpStore %x_119_phi %155
+               OpStore %x_120_phi %false
+        %156 = OpSLessThan %bool %154 %int_800
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %146
+        %157 = OpLabel
+        %162 = OpSMod %int %154 %int_32
+        %163 = OpIEqual %bool %162 %int_0
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %166
+        %165 = OpLabel
+        %167 = OpLoad %float %x_92
+        %168 = OpFAdd %float %167 %float_0_400000006
+               OpStore %x_105 %168
+        %169 = OpLoad %float %x_105
+               OpStore %x_93_phi %169
+               OpBranch %164
+        %166 = OpLabel
+        %170 = OpLoad %float %x_92
+               OpStore %x_113_phi %170
+        %171 = OpConvertSToF %float %154
+        %172 = OpExtInst %float %56 RoundEven %55
+        %173 = OpFMod %float %171 %172
+        %174 = OpFOrdLessThanEqual %bool %173 %float_0_00999999978
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %175
+        %176 = OpLabel
+        %177 = OpLoad %float %x_92
+        %178 = OpFAdd %float %177 %float_100
+               OpStore %x_112 %178
+        %179 = OpLoad %float %x_112
+               OpStore %x_113_phi %179
+               OpBranch %175
+        %175 = OpLabel
+        %180 = OpLoad %float %x_113_phi
+               OpStore %x_113 %180
+        %181 = OpLoad %float %x_113
+               OpStore %x_93_phi %181
+               OpBranch %164
+        %164 = OpLabel
+        %182 = OpLoad %float %x_93_phi
+               OpStore %x_93 %182
+        %183 = OpConvertSToF %float %154
+        %184 = OpLoad %float %x_88
+        %185 = OpFOrdGreaterThanEqual %bool %183 %184
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %186
+        %187 = OpLabel
+        %188 = OpLoad %float %x_93
+               OpStore %x_118_phi %188
+        %189 = OpLoad %float %x_93
+               OpStore %x_119_phi %189
+               OpStore %x_120_phi %true
+               OpBranch %146
+        %186 = OpLabel
+               OpBranch %147
+        %147 = OpLabel
+        %190 = OpIAdd %int %154 %int_1
+               OpStore %x_96 %190
+        %191 = OpLoad %float %x_93
+               OpStore %x_92_phi %191
+        %192 = OpLoad %int %x_96
+               OpStore %x_95_phi %192
+               OpBranch %145
+        %146 = OpLabel
+        %193 = OpLoad %float %x_118_phi
+               OpStore %x_118 %193
+        %194 = OpLoad %float %x_119_phi
+               OpStore %x_119 %194
+        %195 = OpLoad %bool %x_120_phi
+        %196 = OpLoad %float %x_118
+               OpStore %x_122_phi %196
+               OpSelectionMerge %197 None
+               OpBranchConditional %195 %198 %197
+        %198 = OpLabel
+               OpBranch %143
+        %197 = OpLabel
+        %199 = OpLoad %float %x_119
+               OpStore %x_122_phi %199
+               OpBranch %143
+        %143 = OpLabel
+        %200 = OpLoad %float %x_122_phi
+        %201 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %201 %200
+        %202 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %203 = OpLoad %float %202
+        %204 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %205 = OpLoad %float %204
+        %207 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %208 = OpFAdd %float %203 %205
+               OpStore %207 %208
+               OpStore %x_129_phi %int_0
+               OpBranch %209
+        %209 = OpLabel
+               OpLoopMerge %210 %211 None
+               OpBranch %212
+        %212 = OpLabel
+        %214 = OpLoad %int %x_129_phi
+        %216 = OpSLessThan %bool %214 %int_3
+               OpSelectionMerge %217 None
+               OpBranchConditional %216 %218 %219
+        %218 = OpLabel
+               OpBranch %217
+        %219 = OpLabel
+               OpBranch %210
+        %217 = OpLabel
+        %220 = OpAccessChain %_ptr_Function_float %c %214
+        %221 = OpLoad %float %220
+        %223 = OpFOrdGreaterThanEqual %bool %221 %float_1
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %224
+        %225 = OpLabel
+        %226 = OpAccessChain %_ptr_Function_float %c %214
+        %227 = OpLoad %float %226
+        %228 = OpAccessChain %_ptr_Function_float %c %214
+        %229 = OpLoad %float %228
+        %230 = OpAccessChain %_ptr_Function_float %c %214
+        %231 = OpFMul %float %227 %229
+               OpStore %230 %231
+               OpBranch %224
+        %224 = OpLabel
+               OpBranch %211
+        %211 = OpLabel
+        %232 = OpIAdd %int %214 %int_1
+               OpStore %x_130 %232
+        %233 = OpLoad %int %x_130
+               OpStore %x_129_phi %233
+               OpBranch %209
+        %210 = OpLabel
+        %234 = OpLoad %v3float %c
+        %236 = OpExtInst %v3float %56 FAbs %234
+        %235 = OpExtInst %v3float %56 Normalize %236
+        %237 = OpCompositeExtract %float %235 0
+        %238 = OpCompositeExtract %float %235 1
+        %239 = OpCompositeExtract %float %235 2
+        %240 = OpCompositeConstruct %v4float %237 %238 %239 %float_1
+               OpStore %x_GLF_color %240
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %241
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %245 = OpLabel
+        %246 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %246
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %248 = OpLabel
+        %249 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %249
+        %250 = OpFunctionCall %void %main_1
+        %252 = OpLoad %v4float %x_GLF_color
+        %253 = OpCompositeConstruct %main_out %252
+        %251 = OpFunctionCall %void %tint_symbol_3 %253
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..41e57f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl.expected.wgsl
@@ -0,0 +1,200 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_51 : f32;
+  var x_55 : f32;
+  var x_56 : f32;
+  var x_81 : f32;
+  var x_82 : f32;
+  var x_118 : f32;
+  var x_119 : f32;
+  var x_55_phi : f32;
+  var x_58_phi : i32;
+  var x_81_phi : f32;
+  var x_82_phi : f32;
+  var x_83_phi : bool;
+  var x_85_phi : f32;
+  var x_122_phi : f32;
+  var x_129_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_47 : f32 = x_7.resolution.x;
+  let x_49 : f32 = round((x_47 * 0.125));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5;
+      x_58_phi = 1;
+      loop {
+        var x_68 : f32;
+        var x_76 : f32;
+        var x_59 : i32;
+        var x_56_phi : f32;
+        x_55 = x_55_phi;
+        let x_58 : i32 = x_58_phi;
+        x_81_phi = 0.0;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        var x_75 : f32;
+        var x_76_phi : f32;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((f32(x_58) % round(x_49)) <= 0.01)) {
+            x_75 = (x_55 + 100.0);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((f32(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+
+        continuing {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      let x_83 : bool = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+    }
+  }
+  var x_88 : f32;
+  var x_92 : f32;
+  var x_93 : f32;
+  var x_92_phi : f32;
+  var x_95_phi : i32;
+  var x_118_phi : f32;
+  var x_119_phi : f32;
+  var x_120_phi : bool;
+  let x_85 : f32 = x_85_phi;
+  let x_86 : ptr<function, f32> = &(c.x);
+  *(x_86) = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5;
+      x_95_phi = 1;
+      loop {
+        var x_105 : f32;
+        var x_113 : f32;
+        var x_96 : i32;
+        var x_93_phi : f32;
+        x_92 = x_92_phi;
+        let x_95 : i32 = x_95_phi;
+        x_118_phi = 0.0;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        var x_112 : f32;
+        var x_113_phi : f32;
+        if (((x_95 % 32) == 0)) {
+          x_105 = (x_92 + 0.400000006);
+          x_93_phi = x_105;
+        } else {
+          x_113_phi = x_92;
+          if (((f32(x_95) % round(x_49)) <= 0.01)) {
+            x_112 = (x_92 + 100.0);
+            x_113_phi = x_112;
+          }
+          x_113 = x_113_phi;
+          x_93_phi = x_113;
+        }
+        x_93 = x_93_phi;
+        if ((f32(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+
+        continuing {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      let x_120 : bool = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+    }
+  }
+  let x_122 : f32 = x_122_phi;
+  let x_123 : ptr<function, f32> = &(c.y);
+  *(x_123) = x_122;
+  let x_124 : f32 = *(x_86);
+  let x_125 : f32 = *(x_123);
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  loop {
+    var x_130 : i32;
+    let x_129 : i32 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    let x_135 : ptr<function, f32> = &(c[x_129]);
+    let x_136 : f32 = *(x_135);
+    if ((x_136 >= 1.0)) {
+      let x_140 : f32 = *(x_135);
+      let x_141 : f32 = *(x_135);
+      *(x_135) = (x_140 * x_141);
+    }
+
+    continuing {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  let x_143 : vec3<f32> = c;
+  let x_145 : vec3<f32> = normalize(abs(x_143));
+  x_GLF_color = vec4<f32>(x_145.x, x_145.y, x_145.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm
new file mode 100644
index 0000000..918bcf7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm
@@ -0,0 +1,229 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %c "c"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %27 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+         %43 = OpUndef %float
+%float_0_125 = OpConstant %float 0.125
+       %main = OpFunction %void None %9
+         %45 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+               OpStore %c %27
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %47 = OpLoad %float %46
+         %48 = OpCompositeConstruct %v2float %float_1 %47
+         %49 = OpFMul %float %47 %float_0_125
+         %50 = OpExtInst %float %1 Round %49
+         %51 = OpCompositeConstruct %v2float %43 %float_n0_5
+         %52 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %53 = OpLoad %float %52
+               OpSelectionMerge %54 None
+               OpSwitch %uint_0 %55
+         %55 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpPhi %float %float_n0_5 %55 %58 %59
+         %60 = OpPhi %int %int_1 %55 %61 %59
+         %62 = OpSLessThan %bool %60 %int_800
+               OpLoopMerge %63 %59 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+         %65 = OpSMod %int %60 %int_32
+         %66 = OpIEqual %bool %65 %int_0
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+         %70 = OpFAdd %float %57 %float_0_400000006
+               OpBranch %67
+         %69 = OpLabel
+         %71 = OpConvertSToF %float %60
+         %72 = OpExtInst %float %1 Round %50
+         %73 = OpFMod %float %71 %72
+         %74 = OpFOrdLessThanEqual %bool %73 %float_0_00999999978
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+         %77 = OpFAdd %float %57 %float_100
+               OpBranch %75
+         %75 = OpLabel
+         %78 = OpPhi %float %57 %69 %77 %76
+               OpBranch %67
+         %67 = OpLabel
+         %58 = OpPhi %float %70 %68 %78 %75
+         %79 = OpConvertSToF %float %60
+         %80 = OpFOrdGreaterThanEqual %bool %79 %53
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+               OpBranch %63
+         %81 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %61 = OpIAdd %int %60 %int_1
+               OpBranch %56
+         %63 = OpLabel
+         %83 = OpPhi %float %43 %56 %58 %82
+         %84 = OpPhi %float %57 %56 %58 %82
+         %85 = OpPhi %bool %false %56 %true %82
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %54 %86
+         %86 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %87 = OpPhi %float %83 %63 %84 %86
+         %88 = OpAccessChain %_ptr_Function_float %c %uint_0
+         %89 = OpCompositeConstruct %v4float %84 %float_0_400000006 %83 %float_0_400000006
+         %90 = OpCompositeConstruct %v3float %48 %float_n0_5
+               OpStore %88 %87
+         %91 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %92 = OpLoad %float %91
+               OpSelectionMerge %93 None
+               OpSwitch %uint_0 %94
+         %94 = OpLabel
+         %95 = OpCompositeConstruct %v4float %51 %43 %57
+         %96 = OpCompositeExtract %float %90 2
+               OpBranch %97
+         %97 = OpLabel
+         %98 = OpPhi %float %96 %94 %99 %100
+        %101 = OpPhi %int %int_1 %94 %102 %100
+        %103 = OpSLessThan %bool %101 %int_800
+               OpLoopMerge %104 %100 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+        %106 = OpSMod %int %101 %int_32
+        %107 = OpIEqual %bool %106 %int_0
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %110
+        %109 = OpLabel
+        %111 = OpFAdd %float %98 %float_0_400000006
+               OpBranch %108
+        %110 = OpLabel
+        %112 = OpConvertSToF %float %101
+        %113 = OpExtInst %float %1 Round %50
+        %114 = OpFMod %float %112 %113
+        %115 = OpFOrdLessThanEqual %bool %114 %float_0_00999999978
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+        %118 = OpFAdd %float %98 %float_100
+               OpBranch %116
+        %116 = OpLabel
+        %119 = OpPhi %float %98 %110 %118 %117
+               OpBranch %108
+        %108 = OpLabel
+         %99 = OpPhi %float %111 %109 %119 %116
+        %120 = OpConvertSToF %float %101
+        %121 = OpFOrdGreaterThanEqual %bool %120 %92
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+               OpBranch %104
+        %122 = OpLabel
+               OpBranch %100
+        %100 = OpLabel
+        %102 = OpIAdd %int %101 %int_1
+               OpBranch %97
+        %104 = OpLabel
+        %124 = OpPhi %float %43 %97 %99 %123
+        %125 = OpPhi %float %98 %97 %99 %123
+        %126 = OpPhi %bool %false %97 %true %123
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %93 %127
+        %127 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+        %128 = OpPhi %float %124 %104 %125 %127
+        %129 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %129 %128
+        %130 = OpLoad %float %88
+        %131 = OpLoad %float %129
+        %132 = OpFAdd %float %130 %131
+        %133 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %133 %132
+               OpBranch %134
+        %134 = OpLabel
+        %135 = OpPhi %int %int_0 %93 %136 %137
+        %138 = OpSLessThan %bool %135 %int_3
+               OpLoopMerge %139 %137 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpAccessChain %_ptr_Function_float %c %135
+        %142 = OpLoad %float %141
+        %143 = OpFOrdGreaterThanEqual %bool %142 %float_1
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %144
+        %145 = OpLabel
+        %146 = OpLoad %float %141
+        %147 = OpLoad %float %141
+        %148 = OpFMul %float %146 %147
+               OpStore %141 %148
+               OpBranch %144
+        %144 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %136 = OpIAdd %int %135 %int_1
+               OpBranch %134
+        %139 = OpLabel
+        %149 = OpLoad %v3float %c
+        %150 = OpExtInst %v3float %1 FAbs %149
+        %151 = OpExtInst %v3float %1 Normalize %150
+        %152 = OpCompositeExtract %float %151 0
+        %153 = OpCompositeExtract %float %151 1
+        %154 = OpCompositeExtract %float %151 2
+        %155 = OpCompositeConstruct %v4float %152 %153 %154 %float_1
+               OpStore %_GLF_color %155
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..f5c9fb0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.hlsl
@@ -0,0 +1,207 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float x_53 = 0.0f;
+  float x_57 = 0.0f;
+  float x_58 = 0.0f;
+  float x_83 = 0.0f;
+  float x_84 = 0.0f;
+  float x_124 = 0.0f;
+  float x_125 = 0.0f;
+  float x_57_phi = 0.0f;
+  int x_60_phi = 0;
+  float x_83_phi = 0.0f;
+  float x_84_phi = 0.0f;
+  bool x_85_phi = false;
+  float x_87_phi = 0.0f;
+  float x_128_phi = 0.0f;
+  int x_135_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_47 = asfloat(x_7[0].x);
+  const float2 x_48 = float2(1.0f, x_47);
+  const float x_50 = round((x_47 * 0.125f));
+  const float2 x_51 = float2(0.0f, -0.5f);
+  x_53 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_57_phi = -0.5f;
+      x_60_phi = 1;
+      while (true) {
+        float x_70 = 0.0f;
+        float x_78 = 0.0f;
+        int x_61 = 0;
+        float x_58_phi = 0.0f;
+        x_57 = x_57_phi;
+        const int x_60 = x_60_phi;
+        x_83_phi = 0.0f;
+        x_84_phi = x_57;
+        x_85_phi = false;
+        if ((x_60 < 800)) {
+        } else {
+          break;
+        }
+        float x_77 = 0.0f;
+        float x_78_phi = 0.0f;
+        if (((x_60 % 32) == 0)) {
+          x_70 = (x_57 + 0.400000006f);
+          x_58_phi = x_70;
+        } else {
+          x_78_phi = x_57;
+          if (((float(x_60) % round(x_50)) <= 0.01f)) {
+            x_77 = (x_57 + 100.0f);
+            x_78_phi = x_77;
+          }
+          x_78 = x_78_phi;
+          x_58_phi = x_78;
+        }
+        x_58 = x_58_phi;
+        if ((float(x_60) >= x_53)) {
+          x_83_phi = x_58;
+          x_84_phi = x_58;
+          x_85_phi = true;
+          break;
+        }
+        {
+          x_61 = (x_60 + 1);
+          x_57_phi = x_58;
+          x_60_phi = x_61;
+        }
+      }
+      x_83 = x_83_phi;
+      x_84 = x_84_phi;
+      const bool x_85 = x_85_phi;
+      x_87_phi = x_83;
+      if (x_85) {
+        break;
+      }
+      x_87_phi = x_84;
+      break;
+    }
+  }
+  float x_92 = 0.0f;
+  float x_98 = 0.0f;
+  float x_99 = 0.0f;
+  float x_98_phi = 0.0f;
+  int x_101_phi = 0;
+  float x_124_phi = 0.0f;
+  float x_125_phi = 0.0f;
+  bool x_126_phi = false;
+  const float x_87 = x_87_phi;
+  const float4 x_89 = float4(x_84, 0.400000006f, x_83, 0.400000006f);
+  c.x = x_87;
+  x_92 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      const float4 x_95 = float4(x_51, 0.0f, x_57);
+      const float x_96 = float3(x_48, -0.5f).z;
+      x_98_phi = x_96;
+      x_101_phi = 1;
+      while (true) {
+        float x_111 = 0.0f;
+        float x_119 = 0.0f;
+        int x_102 = 0;
+        float x_99_phi = 0.0f;
+        x_98 = x_98_phi;
+        const int x_101 = x_101_phi;
+        x_124_phi = 0.0f;
+        x_125_phi = x_98;
+        x_126_phi = false;
+        if ((x_101 < 800)) {
+        } else {
+          break;
+        }
+        float x_118 = 0.0f;
+        float x_119_phi = 0.0f;
+        if (((x_101 % 32) == 0)) {
+          x_111 = (x_98 + 0.400000006f);
+          x_99_phi = x_111;
+        } else {
+          x_119_phi = x_98;
+          if (((float(x_101) % round(x_50)) <= 0.01f)) {
+            x_118 = (x_98 + 100.0f);
+            x_119_phi = x_118;
+          }
+          x_119 = x_119_phi;
+          x_99_phi = x_119;
+        }
+        x_99 = x_99_phi;
+        if ((float(x_101) >= x_92)) {
+          x_124_phi = x_99;
+          x_125_phi = x_99;
+          x_126_phi = true;
+          break;
+        }
+        {
+          x_102 = (x_101 + 1);
+          x_98_phi = x_99;
+          x_101_phi = x_102;
+        }
+      }
+      x_124 = x_124_phi;
+      x_125 = x_125_phi;
+      const bool x_126 = x_126_phi;
+      x_128_phi = x_124;
+      if (x_126) {
+        break;
+      }
+      x_128_phi = x_125;
+      break;
+    }
+  }
+  const float x_128 = x_128_phi;
+  c.y = x_128;
+  const float x_130 = c.x;
+  const float x_131 = c.y;
+  c.z = (x_130 + x_131);
+  x_135_phi = 0;
+  while (true) {
+    int x_136 = 0;
+    const int x_135 = x_135_phi;
+    if ((x_135 < 3)) {
+    } else {
+      break;
+    }
+    const int x_141_save = x_135;
+    const float x_142 = c[x_141_save];
+    if ((x_142 >= 1.0f)) {
+      const float x_146 = c[x_141_save];
+      const float x_147 = c[x_141_save];
+      set_float3(c, x_141_save, (x_146 * x_147));
+    }
+    {
+      x_136 = (x_135 + 1);
+      x_135_phi = x_136;
+    }
+  }
+  const float3 x_151 = normalize(abs(c));
+  x_GLF_color = float4(x_151.x, x_151.y, x_151.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.msl
new file mode 100755
index 0000000..1a98de4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.msl
@@ -0,0 +1,213 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float x_53 = 0.0f;
+  float x_57 = 0.0f;
+  float x_58 = 0.0f;
+  float x_83 = 0.0f;
+  float x_84 = 0.0f;
+  float x_124 = 0.0f;
+  float x_125 = 0.0f;
+  float x_57_phi = 0.0f;
+  int x_60_phi = 0;
+  float x_83_phi = 0.0f;
+  float x_84_phi = 0.0f;
+  bool x_85_phi = false;
+  float x_87_phi = 0.0f;
+  float x_128_phi = 0.0f;
+  int x_135_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_47 = x_7.resolution.x;
+  float2 const x_48 = float2(1.0f, x_47);
+  float const x_50 = rint((x_47 * 0.125f));
+  float2 const x_51 = float2(0.0f, -0.5f);
+  x_53 = (*(tint_symbol_5)).x;
+  switch(0u) {
+    default: {
+      x_57_phi = -0.5f;
+      x_60_phi = 1;
+      while (true) {
+        float x_70 = 0.0f;
+        float x_78 = 0.0f;
+        int x_61 = 0;
+        float x_58_phi = 0.0f;
+        x_57 = x_57_phi;
+        int const x_60 = x_60_phi;
+        x_83_phi = 0.0f;
+        x_84_phi = x_57;
+        x_85_phi = false;
+        if ((x_60 < 800)) {
+        } else {
+          break;
+        }
+        float x_77 = 0.0f;
+        float x_78_phi = 0.0f;
+        if (((x_60 % 32) == 0)) {
+          x_70 = (x_57 + 0.400000006f);
+          x_58_phi = x_70;
+        } else {
+          x_78_phi = x_57;
+          if (((float(x_60) % rint(x_50)) <= 0.01f)) {
+            x_77 = (x_57 + 100.0f);
+            x_78_phi = x_77;
+          }
+          x_78 = x_78_phi;
+          x_58_phi = x_78;
+        }
+        x_58 = x_58_phi;
+        if ((float(x_60) >= x_53)) {
+          x_83_phi = x_58;
+          x_84_phi = x_58;
+          x_85_phi = true;
+          break;
+        }
+        {
+          x_61 = (x_60 + 1);
+          x_57_phi = x_58;
+          x_60_phi = x_61;
+        }
+      }
+      x_83 = x_83_phi;
+      x_84 = x_84_phi;
+      bool const x_85 = x_85_phi;
+      x_87_phi = x_83;
+      if (x_85) {
+        break;
+      }
+      x_87_phi = x_84;
+      break;
+    }
+  }
+  float x_92 = 0.0f;
+  float x_98 = 0.0f;
+  float x_99 = 0.0f;
+  float x_98_phi = 0.0f;
+  int x_101_phi = 0;
+  float x_124_phi = 0.0f;
+  float x_125_phi = 0.0f;
+  bool x_126_phi = false;
+  float const x_87 = x_87_phi;
+  float4 const x_89 = float4(x_84, 0.400000006f, x_83, 0.400000006f);
+  c.x = x_87;
+  x_92 = (*(tint_symbol_5)).y;
+  switch(0u) {
+    default: {
+      float4 const x_95 = float4(x_51, 0.0f, x_57);
+      float const x_96 = float3(x_48, -0.5f).z;
+      x_98_phi = x_96;
+      x_101_phi = 1;
+      while (true) {
+        float x_111 = 0.0f;
+        float x_119 = 0.0f;
+        int x_102 = 0;
+        float x_99_phi = 0.0f;
+        x_98 = x_98_phi;
+        int const x_101 = x_101_phi;
+        x_124_phi = 0.0f;
+        x_125_phi = x_98;
+        x_126_phi = false;
+        if ((x_101 < 800)) {
+        } else {
+          break;
+        }
+        float x_118 = 0.0f;
+        float x_119_phi = 0.0f;
+        if (((x_101 % 32) == 0)) {
+          x_111 = (x_98 + 0.400000006f);
+          x_99_phi = x_111;
+        } else {
+          x_119_phi = x_98;
+          if (((float(x_101) % rint(x_50)) <= 0.01f)) {
+            x_118 = (x_98 + 100.0f);
+            x_119_phi = x_118;
+          }
+          x_119 = x_119_phi;
+          x_99_phi = x_119;
+        }
+        x_99 = x_99_phi;
+        if ((float(x_101) >= x_92)) {
+          x_124_phi = x_99;
+          x_125_phi = x_99;
+          x_126_phi = true;
+          break;
+        }
+        {
+          x_102 = (x_101 + 1);
+          x_98_phi = x_99;
+          x_101_phi = x_102;
+        }
+      }
+      x_124 = x_124_phi;
+      x_125 = x_125_phi;
+      bool const x_126 = x_126_phi;
+      x_128_phi = x_124;
+      if (x_126) {
+        break;
+      }
+      x_128_phi = x_125;
+      break;
+    }
+  }
+  float const x_128 = x_128_phi;
+  c.y = x_128;
+  float const x_130 = c.x;
+  float const x_131 = c.y;
+  c.z = (x_130 + x_131);
+  x_135_phi = 0;
+  while (true) {
+    int x_136 = 0;
+    int const x_135 = x_135_phi;
+    if ((x_135 < 3)) {
+    } else {
+      break;
+    }
+    int const x_141_save = x_135;
+    float const x_142 = c[x_141_save];
+    if ((x_142 >= 1.0f)) {
+      float const x_146 = c[x_141_save];
+      float const x_147 = c[x_141_save];
+      c[x_141_save] = (x_146 * x_147);
+    }
+    {
+      x_136 = (x_135 + 1);
+      x_135_phi = x_136;
+    }
+  }
+  float3 const x_149 = c;
+  float3 const x_151 = normalize(fabs(x_149));
+  *(tint_symbol_6) = float4(x_151.x, x_151.y, x_151.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\ufm8.0.metal:62:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_60) % rint(x_50)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+T:\tmp\ufm8.0.metal:132:30: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_101) % rint(x_50)) <= 0.01f)) {
+                ~~~~~~~~~~~~ ^ ~~~~~~~~~~
+2 errors generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..59c0cdb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.spvasm
@@ -0,0 +1,462 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 267
+; Schema: 0
+               OpCapability Shader
+         %58 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %x_53 "x_53"
+               OpName %x_57 "x_57"
+               OpName %x_58 "x_58"
+               OpName %x_83 "x_83"
+               OpName %x_84 "x_84"
+               OpName %x_124 "x_124"
+               OpName %x_125 "x_125"
+               OpName %x_57_phi "x_57_phi"
+               OpName %x_60_phi "x_60_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_84_phi "x_84_phi"
+               OpName %x_85_phi "x_85_phi"
+               OpName %x_87_phi "x_87_phi"
+               OpName %x_128_phi "x_128_phi"
+               OpName %x_135_phi "x_135_phi"
+               OpName %x_70 "x_70"
+               OpName %x_78 "x_78"
+               OpName %x_61 "x_61"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_77 "x_77"
+               OpName %x_78_phi "x_78_phi"
+               OpName %x_92 "x_92"
+               OpName %x_98 "x_98"
+               OpName %x_99 "x_99"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_101_phi "x_101_phi"
+               OpName %x_124_phi "x_124_phi"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_126_phi "x_126_phi"
+               OpName %x_111 "x_111"
+               OpName %x_119 "x_119"
+               OpName %x_102 "x_102"
+               OpName %x_99_phi "x_99_phi"
+               OpName %x_118 "x_118"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_136 "x_136"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %22 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %49 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+%float_0_125 = OpConstant %float 0.125
+    %float_0 = OpConstant %float 0
+ %float_n0_5 = OpConstant %float -0.5
+         %63 = OpConstantComposite %v2float %float_0 %float_n0_5
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+    %int_800 = OpConstant %int 800
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %254 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %22
+       %x_53 = OpVariable %_ptr_Function_float Function %25
+       %x_57 = OpVariable %_ptr_Function_float Function %25
+       %x_58 = OpVariable %_ptr_Function_float Function %25
+       %x_83 = OpVariable %_ptr_Function_float Function %25
+       %x_84 = OpVariable %_ptr_Function_float Function %25
+      %x_124 = OpVariable %_ptr_Function_float Function %25
+      %x_125 = OpVariable %_ptr_Function_float Function %25
+   %x_57_phi = OpVariable %_ptr_Function_float Function %25
+   %x_60_phi = OpVariable %_ptr_Function_int Function %36
+   %x_83_phi = OpVariable %_ptr_Function_float Function %25
+   %x_84_phi = OpVariable %_ptr_Function_float Function %25
+   %x_85_phi = OpVariable %_ptr_Function_bool Function %42
+   %x_87_phi = OpVariable %_ptr_Function_float Function %25
+  %x_128_phi = OpVariable %_ptr_Function_float Function %25
+  %x_135_phi = OpVariable %_ptr_Function_int Function %36
+       %x_70 = OpVariable %_ptr_Function_float Function %25
+       %x_78 = OpVariable %_ptr_Function_float Function %25
+       %x_61 = OpVariable %_ptr_Function_int Function %36
+   %x_58_phi = OpVariable %_ptr_Function_float Function %25
+       %x_77 = OpVariable %_ptr_Function_float Function %25
+   %x_78_phi = OpVariable %_ptr_Function_float Function %25
+       %x_92 = OpVariable %_ptr_Function_float Function %25
+       %x_98 = OpVariable %_ptr_Function_float Function %25
+       %x_99 = OpVariable %_ptr_Function_float Function %25
+   %x_98_phi = OpVariable %_ptr_Function_float Function %25
+  %x_101_phi = OpVariable %_ptr_Function_int Function %36
+  %x_124_phi = OpVariable %_ptr_Function_float Function %25
+  %x_125_phi = OpVariable %_ptr_Function_float Function %25
+  %x_126_phi = OpVariable %_ptr_Function_bool Function %42
+      %x_111 = OpVariable %_ptr_Function_float Function %25
+      %x_119 = OpVariable %_ptr_Function_float Function %25
+      %x_102 = OpVariable %_ptr_Function_int Function %36
+   %x_99_phi = OpVariable %_ptr_Function_float Function %25
+      %x_118 = OpVariable %_ptr_Function_float Function %25
+  %x_119_phi = OpVariable %_ptr_Function_float Function %25
+      %x_136 = OpVariable %_ptr_Function_int Function %36
+               OpStore %c %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %54 = OpLoad %float %53
+         %56 = OpCompositeConstruct %v2float %float_1 %54
+         %60 = OpFMul %float %54 %float_0_125
+         %57 = OpExtInst %float %58 RoundEven %60
+         %65 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %66 = OpLoad %float %65
+               OpStore %x_53 %66
+               OpSelectionMerge %67 None
+               OpSwitch %uint_0 %68
+         %68 = OpLabel
+               OpStore %x_57_phi %float_n0_5
+               OpStore %x_60_phi %int_1
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %78 = OpLoad %float %x_57_phi
+               OpStore %x_57 %78
+         %79 = OpLoad %int %x_60_phi
+               OpStore %x_83_phi %float_0
+         %80 = OpLoad %float %x_57
+               OpStore %x_84_phi %80
+               OpStore %x_85_phi %false
+         %83 = OpSLessThan %bool %79 %int_800
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %71
+         %84 = OpLabel
+         %90 = OpSMod %int %79 %int_32
+         %92 = OpIEqual %bool %90 %int_0
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+         %96 = OpLoad %float %x_57
+         %98 = OpFAdd %float %96 %float_0_400000006
+               OpStore %x_70 %98
+         %99 = OpLoad %float %x_70
+               OpStore %x_58_phi %99
+               OpBranch %93
+         %95 = OpLabel
+        %100 = OpLoad %float %x_57
+               OpStore %x_78_phi %100
+        %101 = OpConvertSToF %float %79
+        %102 = OpExtInst %float %58 RoundEven %57
+        %103 = OpFMod %float %101 %102
+        %105 = OpFOrdLessThanEqual %bool %103 %float_0_00999999978
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+        %108 = OpLoad %float %x_57
+        %110 = OpFAdd %float %108 %float_100
+               OpStore %x_77 %110
+        %111 = OpLoad %float %x_77
+               OpStore %x_78_phi %111
+               OpBranch %106
+        %106 = OpLabel
+        %112 = OpLoad %float %x_78_phi
+               OpStore %x_78 %112
+        %113 = OpLoad %float %x_78
+               OpStore %x_58_phi %113
+               OpBranch %93
+         %93 = OpLabel
+        %114 = OpLoad %float %x_58_phi
+               OpStore %x_58 %114
+        %115 = OpConvertSToF %float %79
+        %116 = OpLoad %float %x_53
+        %117 = OpFOrdGreaterThanEqual %bool %115 %116
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpLoad %float %x_58
+               OpStore %x_83_phi %120
+        %121 = OpLoad %float %x_58
+               OpStore %x_84_phi %121
+               OpStore %x_85_phi %true
+               OpBranch %71
+        %118 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+        %123 = OpIAdd %int %79 %int_1
+               OpStore %x_61 %123
+        %124 = OpLoad %float %x_58
+               OpStore %x_57_phi %124
+        %125 = OpLoad %int %x_61
+               OpStore %x_60_phi %125
+               OpBranch %70
+         %71 = OpLabel
+        %126 = OpLoad %float %x_83_phi
+               OpStore %x_83 %126
+        %127 = OpLoad %float %x_84_phi
+               OpStore %x_84 %127
+        %128 = OpLoad %bool %x_85_phi
+        %129 = OpLoad %float %x_83
+               OpStore %x_87_phi %129
+               OpSelectionMerge %130 None
+               OpBranchConditional %128 %131 %130
+        %131 = OpLabel
+               OpBranch %67
+        %130 = OpLabel
+        %132 = OpLoad %float %x_84
+               OpStore %x_87_phi %132
+               OpBranch %67
+         %67 = OpLabel
+        %141 = OpLoad %float %x_87_phi
+        %142 = OpLoad %float %x_84
+        %143 = OpLoad %float %x_83
+        %144 = OpCompositeConstruct %v4float %142 %float_0_400000006 %143 %float_0_400000006
+        %145 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %145 %141
+        %147 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %148 = OpLoad %float %147
+               OpStore %x_92 %148
+               OpSelectionMerge %149 None
+               OpSwitch %uint_0 %150
+        %150 = OpLabel
+        %151 = OpCompositeExtract %float %63 0
+        %152 = OpCompositeExtract %float %63 1
+        %153 = OpLoad %float %x_57
+        %154 = OpCompositeConstruct %v4float %151 %152 %float_0 %153
+        %155 = OpCompositeExtract %float %56 0
+        %156 = OpCompositeExtract %float %56 1
+        %157 = OpCompositeConstruct %v3float %155 %156 %float_n0_5
+        %158 = OpCompositeExtract %float %157 2
+               OpStore %x_98_phi %158
+               OpStore %x_101_phi %int_1
+               OpBranch %159
+        %159 = OpLabel
+               OpLoopMerge %160 %161 None
+               OpBranch %162
+        %162 = OpLabel
+        %167 = OpLoad %float %x_98_phi
+               OpStore %x_98 %167
+        %168 = OpLoad %int %x_101_phi
+               OpStore %x_124_phi %float_0
+        %169 = OpLoad %float %x_98
+               OpStore %x_125_phi %169
+               OpStore %x_126_phi %false
+        %170 = OpSLessThan %bool %168 %int_800
+               OpSelectionMerge %171 None
+               OpBranchConditional %170 %172 %173
+        %172 = OpLabel
+               OpBranch %171
+        %173 = OpLabel
+               OpBranch %160
+        %171 = OpLabel
+        %176 = OpSMod %int %168 %int_32
+        %177 = OpIEqual %bool %176 %int_0
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %180
+        %179 = OpLabel
+        %181 = OpLoad %float %x_98
+        %182 = OpFAdd %float %181 %float_0_400000006
+               OpStore %x_111 %182
+        %183 = OpLoad %float %x_111
+               OpStore %x_99_phi %183
+               OpBranch %178
+        %180 = OpLabel
+        %184 = OpLoad %float %x_98
+               OpStore %x_119_phi %184
+        %185 = OpConvertSToF %float %168
+        %186 = OpExtInst %float %58 RoundEven %57
+        %187 = OpFMod %float %185 %186
+        %188 = OpFOrdLessThanEqual %bool %187 %float_0_00999999978
+               OpSelectionMerge %189 None
+               OpBranchConditional %188 %190 %189
+        %190 = OpLabel
+        %191 = OpLoad %float %x_98
+        %192 = OpFAdd %float %191 %float_100
+               OpStore %x_118 %192
+        %193 = OpLoad %float %x_118
+               OpStore %x_119_phi %193
+               OpBranch %189
+        %189 = OpLabel
+        %194 = OpLoad %float %x_119_phi
+               OpStore %x_119 %194
+        %195 = OpLoad %float %x_119
+               OpStore %x_99_phi %195
+               OpBranch %178
+        %178 = OpLabel
+        %196 = OpLoad %float %x_99_phi
+               OpStore %x_99 %196
+        %197 = OpConvertSToF %float %168
+        %198 = OpLoad %float %x_92
+        %199 = OpFOrdGreaterThanEqual %bool %197 %198
+               OpSelectionMerge %200 None
+               OpBranchConditional %199 %201 %200
+        %201 = OpLabel
+        %202 = OpLoad %float %x_99
+               OpStore %x_124_phi %202
+        %203 = OpLoad %float %x_99
+               OpStore %x_125_phi %203
+               OpStore %x_126_phi %true
+               OpBranch %160
+        %200 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+        %204 = OpIAdd %int %168 %int_1
+               OpStore %x_102 %204
+        %205 = OpLoad %float %x_99
+               OpStore %x_98_phi %205
+        %206 = OpLoad %int %x_102
+               OpStore %x_101_phi %206
+               OpBranch %159
+        %160 = OpLabel
+        %207 = OpLoad %float %x_124_phi
+               OpStore %x_124 %207
+        %208 = OpLoad %float %x_125_phi
+               OpStore %x_125 %208
+        %209 = OpLoad %bool %x_126_phi
+        %210 = OpLoad %float %x_124
+               OpStore %x_128_phi %210
+               OpSelectionMerge %211 None
+               OpBranchConditional %209 %212 %211
+        %212 = OpLabel
+               OpBranch %149
+        %211 = OpLabel
+        %213 = OpLoad %float %x_125
+               OpStore %x_128_phi %213
+               OpBranch %149
+        %149 = OpLabel
+        %214 = OpLoad %float %x_128_phi
+        %215 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %215 %214
+        %216 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %217 = OpLoad %float %216
+        %218 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %219 = OpLoad %float %218
+        %221 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %222 = OpFAdd %float %217 %219
+               OpStore %221 %222
+               OpStore %x_135_phi %int_0
+               OpBranch %223
+        %223 = OpLabel
+               OpLoopMerge %224 %225 None
+               OpBranch %226
+        %226 = OpLabel
+        %228 = OpLoad %int %x_135_phi
+        %230 = OpSLessThan %bool %228 %int_3
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %233
+        %232 = OpLabel
+               OpBranch %231
+        %233 = OpLabel
+               OpBranch %224
+        %231 = OpLabel
+        %234 = OpAccessChain %_ptr_Function_float %c %228
+        %235 = OpLoad %float %234
+        %236 = OpFOrdGreaterThanEqual %bool %235 %float_1
+               OpSelectionMerge %237 None
+               OpBranchConditional %236 %238 %237
+        %238 = OpLabel
+        %239 = OpAccessChain %_ptr_Function_float %c %228
+        %240 = OpLoad %float %239
+        %241 = OpAccessChain %_ptr_Function_float %c %228
+        %242 = OpLoad %float %241
+        %243 = OpAccessChain %_ptr_Function_float %c %228
+        %244 = OpFMul %float %240 %242
+               OpStore %243 %244
+               OpBranch %237
+        %237 = OpLabel
+               OpBranch %225
+        %225 = OpLabel
+        %245 = OpIAdd %int %228 %int_1
+               OpStore %x_136 %245
+        %246 = OpLoad %int %x_136
+               OpStore %x_135_phi %246
+               OpBranch %223
+        %224 = OpLabel
+        %247 = OpLoad %v3float %c
+        %249 = OpExtInst %v3float %58 FAbs %247
+        %248 = OpExtInst %v3float %58 Normalize %249
+        %250 = OpCompositeExtract %float %248 0
+        %251 = OpCompositeExtract %float %248 1
+        %252 = OpCompositeExtract %float %248 2
+        %253 = OpCompositeConstruct %v4float %250 %251 %252 %float_1
+               OpStore %x_GLF_color %253
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %254
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %258 = OpLabel
+        %259 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %259
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %261 = OpLabel
+        %262 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %262
+        %263 = OpFunctionCall %void %main_1
+        %265 = OpLoad %v4float %x_GLF_color
+        %266 = OpCompositeConstruct %main_out %265
+        %264 = OpFunctionCall %void %tint_symbol_3 %266
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..c2ad2e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.spvasm.expected.wgsl
@@ -0,0 +1,205 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_53 : f32;
+  var x_57 : f32;
+  var x_58 : f32;
+  var x_83 : f32;
+  var x_84 : f32;
+  var x_124 : f32;
+  var x_125 : f32;
+  var x_57_phi : f32;
+  var x_60_phi : i32;
+  var x_83_phi : f32;
+  var x_84_phi : f32;
+  var x_85_phi : bool;
+  var x_87_phi : f32;
+  var x_128_phi : f32;
+  var x_135_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_47 : f32 = x_7.resolution.x;
+  let x_48 : vec2<f32> = vec2<f32>(1.0, x_47);
+  let x_50 : f32 = round((x_47 * 0.125));
+  let x_51 : vec2<f32> = vec2<f32>(0.0, -0.5);
+  x_53 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_57_phi = -0.5;
+      x_60_phi = 1;
+      loop {
+        var x_70 : f32;
+        var x_78 : f32;
+        var x_61 : i32;
+        var x_58_phi : f32;
+        x_57 = x_57_phi;
+        let x_60 : i32 = x_60_phi;
+        x_83_phi = 0.0;
+        x_84_phi = x_57;
+        x_85_phi = false;
+        if ((x_60 < 800)) {
+        } else {
+          break;
+        }
+        var x_77 : f32;
+        var x_78_phi : f32;
+        if (((x_60 % 32) == 0)) {
+          x_70 = (x_57 + 0.400000006);
+          x_58_phi = x_70;
+        } else {
+          x_78_phi = x_57;
+          if (((f32(x_60) % round(x_50)) <= 0.01)) {
+            x_77 = (x_57 + 100.0);
+            x_78_phi = x_77;
+          }
+          x_78 = x_78_phi;
+          x_58_phi = x_78;
+        }
+        x_58 = x_58_phi;
+        if ((f32(x_60) >= x_53)) {
+          x_83_phi = x_58;
+          x_84_phi = x_58;
+          x_85_phi = true;
+          break;
+        }
+
+        continuing {
+          x_61 = (x_60 + 1);
+          x_57_phi = x_58;
+          x_60_phi = x_61;
+        }
+      }
+      x_83 = x_83_phi;
+      x_84 = x_84_phi;
+      let x_85 : bool = x_85_phi;
+      x_87_phi = x_83;
+      if (x_85) {
+        break;
+      }
+      x_87_phi = x_84;
+    }
+  }
+  var x_92 : f32;
+  var x_98 : f32;
+  var x_99 : f32;
+  var x_98_phi : f32;
+  var x_101_phi : i32;
+  var x_124_phi : f32;
+  var x_125_phi : f32;
+  var x_126_phi : bool;
+  let x_87 : f32 = x_87_phi;
+  let x_88 : ptr<function, f32> = &(c.x);
+  let x_89 : vec4<f32> = vec4<f32>(x_84, 0.400000006, x_83, 0.400000006);
+  *(x_88) = x_87;
+  x_92 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      let x_95 : vec4<f32> = vec4<f32>(x_51, 0.0, x_57);
+      let x_96 : f32 = vec3<f32>(x_48, -0.5).z;
+      x_98_phi = x_96;
+      x_101_phi = 1;
+      loop {
+        var x_111 : f32;
+        var x_119 : f32;
+        var x_102 : i32;
+        var x_99_phi : f32;
+        x_98 = x_98_phi;
+        let x_101 : i32 = x_101_phi;
+        x_124_phi = 0.0;
+        x_125_phi = x_98;
+        x_126_phi = false;
+        if ((x_101 < 800)) {
+        } else {
+          break;
+        }
+        var x_118 : f32;
+        var x_119_phi : f32;
+        if (((x_101 % 32) == 0)) {
+          x_111 = (x_98 + 0.400000006);
+          x_99_phi = x_111;
+        } else {
+          x_119_phi = x_98;
+          if (((f32(x_101) % round(x_50)) <= 0.01)) {
+            x_118 = (x_98 + 100.0);
+            x_119_phi = x_118;
+          }
+          x_119 = x_119_phi;
+          x_99_phi = x_119;
+        }
+        x_99 = x_99_phi;
+        if ((f32(x_101) >= x_92)) {
+          x_124_phi = x_99;
+          x_125_phi = x_99;
+          x_126_phi = true;
+          break;
+        }
+
+        continuing {
+          x_102 = (x_101 + 1);
+          x_98_phi = x_99;
+          x_101_phi = x_102;
+        }
+      }
+      x_124 = x_124_phi;
+      x_125 = x_125_phi;
+      let x_126 : bool = x_126_phi;
+      x_128_phi = x_124;
+      if (x_126) {
+        break;
+      }
+      x_128_phi = x_125;
+    }
+  }
+  let x_128 : f32 = x_128_phi;
+  let x_129 : ptr<function, f32> = &(c.y);
+  *(x_129) = x_128;
+  let x_130 : f32 = *(x_88);
+  let x_131 : f32 = *(x_129);
+  c.z = (x_130 + x_131);
+  x_135_phi = 0;
+  loop {
+    var x_136 : i32;
+    let x_135 : i32 = x_135_phi;
+    if ((x_135 < 3)) {
+    } else {
+      break;
+    }
+    let x_141 : ptr<function, f32> = &(c[x_135]);
+    let x_142 : f32 = *(x_141);
+    if ((x_142 >= 1.0)) {
+      let x_146 : f32 = *(x_141);
+      let x_147 : f32 = *(x_141);
+      *(x_141) = (x_146 * x_147);
+    }
+
+    continuing {
+      x_136 = (x_135 + 1);
+      x_135_phi = x_136;
+    }
+  }
+  let x_149 : vec3<f32> = c;
+  let x_151 : vec3<f32> = normalize(abs(x_149));
+  x_GLF_color = vec4<f32>(x_151.x, x_151.y, x_151.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
new file mode 100644
index 0000000..c2ad2e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
@@ -0,0 +1,205 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_53 : f32;
+  var x_57 : f32;
+  var x_58 : f32;
+  var x_83 : f32;
+  var x_84 : f32;
+  var x_124 : f32;
+  var x_125 : f32;
+  var x_57_phi : f32;
+  var x_60_phi : i32;
+  var x_83_phi : f32;
+  var x_84_phi : f32;
+  var x_85_phi : bool;
+  var x_87_phi : f32;
+  var x_128_phi : f32;
+  var x_135_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_47 : f32 = x_7.resolution.x;
+  let x_48 : vec2<f32> = vec2<f32>(1.0, x_47);
+  let x_50 : f32 = round((x_47 * 0.125));
+  let x_51 : vec2<f32> = vec2<f32>(0.0, -0.5);
+  x_53 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_57_phi = -0.5;
+      x_60_phi = 1;
+      loop {
+        var x_70 : f32;
+        var x_78 : f32;
+        var x_61 : i32;
+        var x_58_phi : f32;
+        x_57 = x_57_phi;
+        let x_60 : i32 = x_60_phi;
+        x_83_phi = 0.0;
+        x_84_phi = x_57;
+        x_85_phi = false;
+        if ((x_60 < 800)) {
+        } else {
+          break;
+        }
+        var x_77 : f32;
+        var x_78_phi : f32;
+        if (((x_60 % 32) == 0)) {
+          x_70 = (x_57 + 0.400000006);
+          x_58_phi = x_70;
+        } else {
+          x_78_phi = x_57;
+          if (((f32(x_60) % round(x_50)) <= 0.01)) {
+            x_77 = (x_57 + 100.0);
+            x_78_phi = x_77;
+          }
+          x_78 = x_78_phi;
+          x_58_phi = x_78;
+        }
+        x_58 = x_58_phi;
+        if ((f32(x_60) >= x_53)) {
+          x_83_phi = x_58;
+          x_84_phi = x_58;
+          x_85_phi = true;
+          break;
+        }
+
+        continuing {
+          x_61 = (x_60 + 1);
+          x_57_phi = x_58;
+          x_60_phi = x_61;
+        }
+      }
+      x_83 = x_83_phi;
+      x_84 = x_84_phi;
+      let x_85 : bool = x_85_phi;
+      x_87_phi = x_83;
+      if (x_85) {
+        break;
+      }
+      x_87_phi = x_84;
+    }
+  }
+  var x_92 : f32;
+  var x_98 : f32;
+  var x_99 : f32;
+  var x_98_phi : f32;
+  var x_101_phi : i32;
+  var x_124_phi : f32;
+  var x_125_phi : f32;
+  var x_126_phi : bool;
+  let x_87 : f32 = x_87_phi;
+  let x_88 : ptr<function, f32> = &(c.x);
+  let x_89 : vec4<f32> = vec4<f32>(x_84, 0.400000006, x_83, 0.400000006);
+  *(x_88) = x_87;
+  x_92 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      let x_95 : vec4<f32> = vec4<f32>(x_51, 0.0, x_57);
+      let x_96 : f32 = vec3<f32>(x_48, -0.5).z;
+      x_98_phi = x_96;
+      x_101_phi = 1;
+      loop {
+        var x_111 : f32;
+        var x_119 : f32;
+        var x_102 : i32;
+        var x_99_phi : f32;
+        x_98 = x_98_phi;
+        let x_101 : i32 = x_101_phi;
+        x_124_phi = 0.0;
+        x_125_phi = x_98;
+        x_126_phi = false;
+        if ((x_101 < 800)) {
+        } else {
+          break;
+        }
+        var x_118 : f32;
+        var x_119_phi : f32;
+        if (((x_101 % 32) == 0)) {
+          x_111 = (x_98 + 0.400000006);
+          x_99_phi = x_111;
+        } else {
+          x_119_phi = x_98;
+          if (((f32(x_101) % round(x_50)) <= 0.01)) {
+            x_118 = (x_98 + 100.0);
+            x_119_phi = x_118;
+          }
+          x_119 = x_119_phi;
+          x_99_phi = x_119;
+        }
+        x_99 = x_99_phi;
+        if ((f32(x_101) >= x_92)) {
+          x_124_phi = x_99;
+          x_125_phi = x_99;
+          x_126_phi = true;
+          break;
+        }
+
+        continuing {
+          x_102 = (x_101 + 1);
+          x_98_phi = x_99;
+          x_101_phi = x_102;
+        }
+      }
+      x_124 = x_124_phi;
+      x_125 = x_125_phi;
+      let x_126 : bool = x_126_phi;
+      x_128_phi = x_124;
+      if (x_126) {
+        break;
+      }
+      x_128_phi = x_125;
+    }
+  }
+  let x_128 : f32 = x_128_phi;
+  let x_129 : ptr<function, f32> = &(c.y);
+  *(x_129) = x_128;
+  let x_130 : f32 = *(x_88);
+  let x_131 : f32 = *(x_129);
+  c.z = (x_130 + x_131);
+  x_135_phi = 0;
+  loop {
+    var x_136 : i32;
+    let x_135 : i32 = x_135_phi;
+    if ((x_135 < 3)) {
+    } else {
+      break;
+    }
+    let x_141 : ptr<function, f32> = &(c[x_135]);
+    let x_142 : f32 = *(x_141);
+    if ((x_142 >= 1.0)) {
+      let x_146 : f32 = *(x_141);
+      let x_147 : f32 = *(x_141);
+      *(x_141) = (x_146 * x_147);
+    }
+
+    continuing {
+      x_136 = (x_135 + 1);
+      x_135_phi = x_136;
+    }
+  }
+  let x_149 : vec3<f32> = c;
+  let x_151 : vec3<f32> = normalize(abs(x_149));
+  x_GLF_color = vec4<f32>(x_151.x, x_151.y, x_151.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..f5c9fb0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.hlsl
@@ -0,0 +1,207 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float x_53 = 0.0f;
+  float x_57 = 0.0f;
+  float x_58 = 0.0f;
+  float x_83 = 0.0f;
+  float x_84 = 0.0f;
+  float x_124 = 0.0f;
+  float x_125 = 0.0f;
+  float x_57_phi = 0.0f;
+  int x_60_phi = 0;
+  float x_83_phi = 0.0f;
+  float x_84_phi = 0.0f;
+  bool x_85_phi = false;
+  float x_87_phi = 0.0f;
+  float x_128_phi = 0.0f;
+  int x_135_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_47 = asfloat(x_7[0].x);
+  const float2 x_48 = float2(1.0f, x_47);
+  const float x_50 = round((x_47 * 0.125f));
+  const float2 x_51 = float2(0.0f, -0.5f);
+  x_53 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_57_phi = -0.5f;
+      x_60_phi = 1;
+      while (true) {
+        float x_70 = 0.0f;
+        float x_78 = 0.0f;
+        int x_61 = 0;
+        float x_58_phi = 0.0f;
+        x_57 = x_57_phi;
+        const int x_60 = x_60_phi;
+        x_83_phi = 0.0f;
+        x_84_phi = x_57;
+        x_85_phi = false;
+        if ((x_60 < 800)) {
+        } else {
+          break;
+        }
+        float x_77 = 0.0f;
+        float x_78_phi = 0.0f;
+        if (((x_60 % 32) == 0)) {
+          x_70 = (x_57 + 0.400000006f);
+          x_58_phi = x_70;
+        } else {
+          x_78_phi = x_57;
+          if (((float(x_60) % round(x_50)) <= 0.01f)) {
+            x_77 = (x_57 + 100.0f);
+            x_78_phi = x_77;
+          }
+          x_78 = x_78_phi;
+          x_58_phi = x_78;
+        }
+        x_58 = x_58_phi;
+        if ((float(x_60) >= x_53)) {
+          x_83_phi = x_58;
+          x_84_phi = x_58;
+          x_85_phi = true;
+          break;
+        }
+        {
+          x_61 = (x_60 + 1);
+          x_57_phi = x_58;
+          x_60_phi = x_61;
+        }
+      }
+      x_83 = x_83_phi;
+      x_84 = x_84_phi;
+      const bool x_85 = x_85_phi;
+      x_87_phi = x_83;
+      if (x_85) {
+        break;
+      }
+      x_87_phi = x_84;
+      break;
+    }
+  }
+  float x_92 = 0.0f;
+  float x_98 = 0.0f;
+  float x_99 = 0.0f;
+  float x_98_phi = 0.0f;
+  int x_101_phi = 0;
+  float x_124_phi = 0.0f;
+  float x_125_phi = 0.0f;
+  bool x_126_phi = false;
+  const float x_87 = x_87_phi;
+  const float4 x_89 = float4(x_84, 0.400000006f, x_83, 0.400000006f);
+  c.x = x_87;
+  x_92 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      const float4 x_95 = float4(x_51, 0.0f, x_57);
+      const float x_96 = float3(x_48, -0.5f).z;
+      x_98_phi = x_96;
+      x_101_phi = 1;
+      while (true) {
+        float x_111 = 0.0f;
+        float x_119 = 0.0f;
+        int x_102 = 0;
+        float x_99_phi = 0.0f;
+        x_98 = x_98_phi;
+        const int x_101 = x_101_phi;
+        x_124_phi = 0.0f;
+        x_125_phi = x_98;
+        x_126_phi = false;
+        if ((x_101 < 800)) {
+        } else {
+          break;
+        }
+        float x_118 = 0.0f;
+        float x_119_phi = 0.0f;
+        if (((x_101 % 32) == 0)) {
+          x_111 = (x_98 + 0.400000006f);
+          x_99_phi = x_111;
+        } else {
+          x_119_phi = x_98;
+          if (((float(x_101) % round(x_50)) <= 0.01f)) {
+            x_118 = (x_98 + 100.0f);
+            x_119_phi = x_118;
+          }
+          x_119 = x_119_phi;
+          x_99_phi = x_119;
+        }
+        x_99 = x_99_phi;
+        if ((float(x_101) >= x_92)) {
+          x_124_phi = x_99;
+          x_125_phi = x_99;
+          x_126_phi = true;
+          break;
+        }
+        {
+          x_102 = (x_101 + 1);
+          x_98_phi = x_99;
+          x_101_phi = x_102;
+        }
+      }
+      x_124 = x_124_phi;
+      x_125 = x_125_phi;
+      const bool x_126 = x_126_phi;
+      x_128_phi = x_124;
+      if (x_126) {
+        break;
+      }
+      x_128_phi = x_125;
+      break;
+    }
+  }
+  const float x_128 = x_128_phi;
+  c.y = x_128;
+  const float x_130 = c.x;
+  const float x_131 = c.y;
+  c.z = (x_130 + x_131);
+  x_135_phi = 0;
+  while (true) {
+    int x_136 = 0;
+    const int x_135 = x_135_phi;
+    if ((x_135 < 3)) {
+    } else {
+      break;
+    }
+    const int x_141_save = x_135;
+    const float x_142 = c[x_141_save];
+    if ((x_142 >= 1.0f)) {
+      const float x_146 = c[x_141_save];
+      const float x_147 = c[x_141_save];
+      set_float3(c, x_141_save, (x_146 * x_147));
+    }
+    {
+      x_136 = (x_135 + 1);
+      x_135_phi = x_136;
+    }
+  }
+  const float3 x_151 = normalize(abs(c));
+  x_GLF_color = float4(x_151.x, x_151.y, x_151.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.msl
new file mode 100755
index 0000000..4bdc690
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.msl
@@ -0,0 +1,213 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float x_53 = 0.0f;
+  float x_57 = 0.0f;
+  float x_58 = 0.0f;
+  float x_83 = 0.0f;
+  float x_84 = 0.0f;
+  float x_124 = 0.0f;
+  float x_125 = 0.0f;
+  float x_57_phi = 0.0f;
+  int x_60_phi = 0;
+  float x_83_phi = 0.0f;
+  float x_84_phi = 0.0f;
+  bool x_85_phi = false;
+  float x_87_phi = 0.0f;
+  float x_128_phi = 0.0f;
+  int x_135_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_47 = x_7.resolution.x;
+  float2 const x_48 = float2(1.0f, x_47);
+  float const x_50 = rint((x_47 * 0.125f));
+  float2 const x_51 = float2(0.0f, -0.5f);
+  x_53 = (*(tint_symbol_5)).x;
+  switch(0u) {
+    default: {
+      x_57_phi = -0.5f;
+      x_60_phi = 1;
+      while (true) {
+        float x_70 = 0.0f;
+        float x_78 = 0.0f;
+        int x_61 = 0;
+        float x_58_phi = 0.0f;
+        x_57 = x_57_phi;
+        int const x_60 = x_60_phi;
+        x_83_phi = 0.0f;
+        x_84_phi = x_57;
+        x_85_phi = false;
+        if ((x_60 < 800)) {
+        } else {
+          break;
+        }
+        float x_77 = 0.0f;
+        float x_78_phi = 0.0f;
+        if (((x_60 % 32) == 0)) {
+          x_70 = (x_57 + 0.400000006f);
+          x_58_phi = x_70;
+        } else {
+          x_78_phi = x_57;
+          if (((float(x_60) % rint(x_50)) <= 0.01f)) {
+            x_77 = (x_57 + 100.0f);
+            x_78_phi = x_77;
+          }
+          x_78 = x_78_phi;
+          x_58_phi = x_78;
+        }
+        x_58 = x_58_phi;
+        if ((float(x_60) >= x_53)) {
+          x_83_phi = x_58;
+          x_84_phi = x_58;
+          x_85_phi = true;
+          break;
+        }
+        {
+          x_61 = (x_60 + 1);
+          x_57_phi = x_58;
+          x_60_phi = x_61;
+        }
+      }
+      x_83 = x_83_phi;
+      x_84 = x_84_phi;
+      bool const x_85 = x_85_phi;
+      x_87_phi = x_83;
+      if (x_85) {
+        break;
+      }
+      x_87_phi = x_84;
+      break;
+    }
+  }
+  float x_92 = 0.0f;
+  float x_98 = 0.0f;
+  float x_99 = 0.0f;
+  float x_98_phi = 0.0f;
+  int x_101_phi = 0;
+  float x_124_phi = 0.0f;
+  float x_125_phi = 0.0f;
+  bool x_126_phi = false;
+  float const x_87 = x_87_phi;
+  float4 const x_89 = float4(x_84, 0.400000006f, x_83, 0.400000006f);
+  c.x = x_87;
+  x_92 = (*(tint_symbol_5)).y;
+  switch(0u) {
+    default: {
+      float4 const x_95 = float4(x_51, 0.0f, x_57);
+      float const x_96 = float3(x_48, -0.5f).z;
+      x_98_phi = x_96;
+      x_101_phi = 1;
+      while (true) {
+        float x_111 = 0.0f;
+        float x_119 = 0.0f;
+        int x_102 = 0;
+        float x_99_phi = 0.0f;
+        x_98 = x_98_phi;
+        int const x_101 = x_101_phi;
+        x_124_phi = 0.0f;
+        x_125_phi = x_98;
+        x_126_phi = false;
+        if ((x_101 < 800)) {
+        } else {
+          break;
+        }
+        float x_118 = 0.0f;
+        float x_119_phi = 0.0f;
+        if (((x_101 % 32) == 0)) {
+          x_111 = (x_98 + 0.400000006f);
+          x_99_phi = x_111;
+        } else {
+          x_119_phi = x_98;
+          if (((float(x_101) % rint(x_50)) <= 0.01f)) {
+            x_118 = (x_98 + 100.0f);
+            x_119_phi = x_118;
+          }
+          x_119 = x_119_phi;
+          x_99_phi = x_119;
+        }
+        x_99 = x_99_phi;
+        if ((float(x_101) >= x_92)) {
+          x_124_phi = x_99;
+          x_125_phi = x_99;
+          x_126_phi = true;
+          break;
+        }
+        {
+          x_102 = (x_101 + 1);
+          x_98_phi = x_99;
+          x_101_phi = x_102;
+        }
+      }
+      x_124 = x_124_phi;
+      x_125 = x_125_phi;
+      bool const x_126 = x_126_phi;
+      x_128_phi = x_124;
+      if (x_126) {
+        break;
+      }
+      x_128_phi = x_125;
+      break;
+    }
+  }
+  float const x_128 = x_128_phi;
+  c.y = x_128;
+  float const x_130 = c.x;
+  float const x_131 = c.y;
+  c.z = (x_130 + x_131);
+  x_135_phi = 0;
+  while (true) {
+    int x_136 = 0;
+    int const x_135 = x_135_phi;
+    if ((x_135 < 3)) {
+    } else {
+      break;
+    }
+    int const x_141_save = x_135;
+    float const x_142 = c[x_141_save];
+    if ((x_142 >= 1.0f)) {
+      float const x_146 = c[x_141_save];
+      float const x_147 = c[x_141_save];
+      c[x_141_save] = (x_146 * x_147);
+    }
+    {
+      x_136 = (x_135 + 1);
+      x_135_phi = x_136;
+    }
+  }
+  float3 const x_149 = c;
+  float3 const x_151 = normalize(fabs(x_149));
+  *(tint_symbol_6) = float4(x_151.x, x_151.y, x_151.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u9vw.0.metal:62:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_60) % rint(x_50)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+T:\tmp\u9vw.0.metal:132:30: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_101) % rint(x_50)) <= 0.01f)) {
+                ~~~~~~~~~~~~ ^ ~~~~~~~~~~
+2 errors generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..59c0cdb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.spvasm
@@ -0,0 +1,462 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 267
+; Schema: 0
+               OpCapability Shader
+         %58 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %x_53 "x_53"
+               OpName %x_57 "x_57"
+               OpName %x_58 "x_58"
+               OpName %x_83 "x_83"
+               OpName %x_84 "x_84"
+               OpName %x_124 "x_124"
+               OpName %x_125 "x_125"
+               OpName %x_57_phi "x_57_phi"
+               OpName %x_60_phi "x_60_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_84_phi "x_84_phi"
+               OpName %x_85_phi "x_85_phi"
+               OpName %x_87_phi "x_87_phi"
+               OpName %x_128_phi "x_128_phi"
+               OpName %x_135_phi "x_135_phi"
+               OpName %x_70 "x_70"
+               OpName %x_78 "x_78"
+               OpName %x_61 "x_61"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_77 "x_77"
+               OpName %x_78_phi "x_78_phi"
+               OpName %x_92 "x_92"
+               OpName %x_98 "x_98"
+               OpName %x_99 "x_99"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_101_phi "x_101_phi"
+               OpName %x_124_phi "x_124_phi"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_126_phi "x_126_phi"
+               OpName %x_111 "x_111"
+               OpName %x_119 "x_119"
+               OpName %x_102 "x_102"
+               OpName %x_99_phi "x_99_phi"
+               OpName %x_118 "x_118"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_136 "x_136"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %22 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %49 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+%float_0_125 = OpConstant %float 0.125
+    %float_0 = OpConstant %float 0
+ %float_n0_5 = OpConstant %float -0.5
+         %63 = OpConstantComposite %v2float %float_0 %float_n0_5
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+    %int_800 = OpConstant %int 800
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %254 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %22
+       %x_53 = OpVariable %_ptr_Function_float Function %25
+       %x_57 = OpVariable %_ptr_Function_float Function %25
+       %x_58 = OpVariable %_ptr_Function_float Function %25
+       %x_83 = OpVariable %_ptr_Function_float Function %25
+       %x_84 = OpVariable %_ptr_Function_float Function %25
+      %x_124 = OpVariable %_ptr_Function_float Function %25
+      %x_125 = OpVariable %_ptr_Function_float Function %25
+   %x_57_phi = OpVariable %_ptr_Function_float Function %25
+   %x_60_phi = OpVariable %_ptr_Function_int Function %36
+   %x_83_phi = OpVariable %_ptr_Function_float Function %25
+   %x_84_phi = OpVariable %_ptr_Function_float Function %25
+   %x_85_phi = OpVariable %_ptr_Function_bool Function %42
+   %x_87_phi = OpVariable %_ptr_Function_float Function %25
+  %x_128_phi = OpVariable %_ptr_Function_float Function %25
+  %x_135_phi = OpVariable %_ptr_Function_int Function %36
+       %x_70 = OpVariable %_ptr_Function_float Function %25
+       %x_78 = OpVariable %_ptr_Function_float Function %25
+       %x_61 = OpVariable %_ptr_Function_int Function %36
+   %x_58_phi = OpVariable %_ptr_Function_float Function %25
+       %x_77 = OpVariable %_ptr_Function_float Function %25
+   %x_78_phi = OpVariable %_ptr_Function_float Function %25
+       %x_92 = OpVariable %_ptr_Function_float Function %25
+       %x_98 = OpVariable %_ptr_Function_float Function %25
+       %x_99 = OpVariable %_ptr_Function_float Function %25
+   %x_98_phi = OpVariable %_ptr_Function_float Function %25
+  %x_101_phi = OpVariable %_ptr_Function_int Function %36
+  %x_124_phi = OpVariable %_ptr_Function_float Function %25
+  %x_125_phi = OpVariable %_ptr_Function_float Function %25
+  %x_126_phi = OpVariable %_ptr_Function_bool Function %42
+      %x_111 = OpVariable %_ptr_Function_float Function %25
+      %x_119 = OpVariable %_ptr_Function_float Function %25
+      %x_102 = OpVariable %_ptr_Function_int Function %36
+   %x_99_phi = OpVariable %_ptr_Function_float Function %25
+      %x_118 = OpVariable %_ptr_Function_float Function %25
+  %x_119_phi = OpVariable %_ptr_Function_float Function %25
+      %x_136 = OpVariable %_ptr_Function_int Function %36
+               OpStore %c %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %54 = OpLoad %float %53
+         %56 = OpCompositeConstruct %v2float %float_1 %54
+         %60 = OpFMul %float %54 %float_0_125
+         %57 = OpExtInst %float %58 RoundEven %60
+         %65 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %66 = OpLoad %float %65
+               OpStore %x_53 %66
+               OpSelectionMerge %67 None
+               OpSwitch %uint_0 %68
+         %68 = OpLabel
+               OpStore %x_57_phi %float_n0_5
+               OpStore %x_60_phi %int_1
+               OpBranch %70
+         %70 = OpLabel
+               OpLoopMerge %71 %72 None
+               OpBranch %73
+         %73 = OpLabel
+         %78 = OpLoad %float %x_57_phi
+               OpStore %x_57 %78
+         %79 = OpLoad %int %x_60_phi
+               OpStore %x_83_phi %float_0
+         %80 = OpLoad %float %x_57
+               OpStore %x_84_phi %80
+               OpStore %x_85_phi %false
+         %83 = OpSLessThan %bool %79 %int_800
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %71
+         %84 = OpLabel
+         %90 = OpSMod %int %79 %int_32
+         %92 = OpIEqual %bool %90 %int_0
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+         %96 = OpLoad %float %x_57
+         %98 = OpFAdd %float %96 %float_0_400000006
+               OpStore %x_70 %98
+         %99 = OpLoad %float %x_70
+               OpStore %x_58_phi %99
+               OpBranch %93
+         %95 = OpLabel
+        %100 = OpLoad %float %x_57
+               OpStore %x_78_phi %100
+        %101 = OpConvertSToF %float %79
+        %102 = OpExtInst %float %58 RoundEven %57
+        %103 = OpFMod %float %101 %102
+        %105 = OpFOrdLessThanEqual %bool %103 %float_0_00999999978
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+        %108 = OpLoad %float %x_57
+        %110 = OpFAdd %float %108 %float_100
+               OpStore %x_77 %110
+        %111 = OpLoad %float %x_77
+               OpStore %x_78_phi %111
+               OpBranch %106
+        %106 = OpLabel
+        %112 = OpLoad %float %x_78_phi
+               OpStore %x_78 %112
+        %113 = OpLoad %float %x_78
+               OpStore %x_58_phi %113
+               OpBranch %93
+         %93 = OpLabel
+        %114 = OpLoad %float %x_58_phi
+               OpStore %x_58 %114
+        %115 = OpConvertSToF %float %79
+        %116 = OpLoad %float %x_53
+        %117 = OpFOrdGreaterThanEqual %bool %115 %116
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpLoad %float %x_58
+               OpStore %x_83_phi %120
+        %121 = OpLoad %float %x_58
+               OpStore %x_84_phi %121
+               OpStore %x_85_phi %true
+               OpBranch %71
+        %118 = OpLabel
+               OpBranch %72
+         %72 = OpLabel
+        %123 = OpIAdd %int %79 %int_1
+               OpStore %x_61 %123
+        %124 = OpLoad %float %x_58
+               OpStore %x_57_phi %124
+        %125 = OpLoad %int %x_61
+               OpStore %x_60_phi %125
+               OpBranch %70
+         %71 = OpLabel
+        %126 = OpLoad %float %x_83_phi
+               OpStore %x_83 %126
+        %127 = OpLoad %float %x_84_phi
+               OpStore %x_84 %127
+        %128 = OpLoad %bool %x_85_phi
+        %129 = OpLoad %float %x_83
+               OpStore %x_87_phi %129
+               OpSelectionMerge %130 None
+               OpBranchConditional %128 %131 %130
+        %131 = OpLabel
+               OpBranch %67
+        %130 = OpLabel
+        %132 = OpLoad %float %x_84
+               OpStore %x_87_phi %132
+               OpBranch %67
+         %67 = OpLabel
+        %141 = OpLoad %float %x_87_phi
+        %142 = OpLoad %float %x_84
+        %143 = OpLoad %float %x_83
+        %144 = OpCompositeConstruct %v4float %142 %float_0_400000006 %143 %float_0_400000006
+        %145 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %145 %141
+        %147 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %148 = OpLoad %float %147
+               OpStore %x_92 %148
+               OpSelectionMerge %149 None
+               OpSwitch %uint_0 %150
+        %150 = OpLabel
+        %151 = OpCompositeExtract %float %63 0
+        %152 = OpCompositeExtract %float %63 1
+        %153 = OpLoad %float %x_57
+        %154 = OpCompositeConstruct %v4float %151 %152 %float_0 %153
+        %155 = OpCompositeExtract %float %56 0
+        %156 = OpCompositeExtract %float %56 1
+        %157 = OpCompositeConstruct %v3float %155 %156 %float_n0_5
+        %158 = OpCompositeExtract %float %157 2
+               OpStore %x_98_phi %158
+               OpStore %x_101_phi %int_1
+               OpBranch %159
+        %159 = OpLabel
+               OpLoopMerge %160 %161 None
+               OpBranch %162
+        %162 = OpLabel
+        %167 = OpLoad %float %x_98_phi
+               OpStore %x_98 %167
+        %168 = OpLoad %int %x_101_phi
+               OpStore %x_124_phi %float_0
+        %169 = OpLoad %float %x_98
+               OpStore %x_125_phi %169
+               OpStore %x_126_phi %false
+        %170 = OpSLessThan %bool %168 %int_800
+               OpSelectionMerge %171 None
+               OpBranchConditional %170 %172 %173
+        %172 = OpLabel
+               OpBranch %171
+        %173 = OpLabel
+               OpBranch %160
+        %171 = OpLabel
+        %176 = OpSMod %int %168 %int_32
+        %177 = OpIEqual %bool %176 %int_0
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %180
+        %179 = OpLabel
+        %181 = OpLoad %float %x_98
+        %182 = OpFAdd %float %181 %float_0_400000006
+               OpStore %x_111 %182
+        %183 = OpLoad %float %x_111
+               OpStore %x_99_phi %183
+               OpBranch %178
+        %180 = OpLabel
+        %184 = OpLoad %float %x_98
+               OpStore %x_119_phi %184
+        %185 = OpConvertSToF %float %168
+        %186 = OpExtInst %float %58 RoundEven %57
+        %187 = OpFMod %float %185 %186
+        %188 = OpFOrdLessThanEqual %bool %187 %float_0_00999999978
+               OpSelectionMerge %189 None
+               OpBranchConditional %188 %190 %189
+        %190 = OpLabel
+        %191 = OpLoad %float %x_98
+        %192 = OpFAdd %float %191 %float_100
+               OpStore %x_118 %192
+        %193 = OpLoad %float %x_118
+               OpStore %x_119_phi %193
+               OpBranch %189
+        %189 = OpLabel
+        %194 = OpLoad %float %x_119_phi
+               OpStore %x_119 %194
+        %195 = OpLoad %float %x_119
+               OpStore %x_99_phi %195
+               OpBranch %178
+        %178 = OpLabel
+        %196 = OpLoad %float %x_99_phi
+               OpStore %x_99 %196
+        %197 = OpConvertSToF %float %168
+        %198 = OpLoad %float %x_92
+        %199 = OpFOrdGreaterThanEqual %bool %197 %198
+               OpSelectionMerge %200 None
+               OpBranchConditional %199 %201 %200
+        %201 = OpLabel
+        %202 = OpLoad %float %x_99
+               OpStore %x_124_phi %202
+        %203 = OpLoad %float %x_99
+               OpStore %x_125_phi %203
+               OpStore %x_126_phi %true
+               OpBranch %160
+        %200 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+        %204 = OpIAdd %int %168 %int_1
+               OpStore %x_102 %204
+        %205 = OpLoad %float %x_99
+               OpStore %x_98_phi %205
+        %206 = OpLoad %int %x_102
+               OpStore %x_101_phi %206
+               OpBranch %159
+        %160 = OpLabel
+        %207 = OpLoad %float %x_124_phi
+               OpStore %x_124 %207
+        %208 = OpLoad %float %x_125_phi
+               OpStore %x_125 %208
+        %209 = OpLoad %bool %x_126_phi
+        %210 = OpLoad %float %x_124
+               OpStore %x_128_phi %210
+               OpSelectionMerge %211 None
+               OpBranchConditional %209 %212 %211
+        %212 = OpLabel
+               OpBranch %149
+        %211 = OpLabel
+        %213 = OpLoad %float %x_125
+               OpStore %x_128_phi %213
+               OpBranch %149
+        %149 = OpLabel
+        %214 = OpLoad %float %x_128_phi
+        %215 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %215 %214
+        %216 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %217 = OpLoad %float %216
+        %218 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %219 = OpLoad %float %218
+        %221 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %222 = OpFAdd %float %217 %219
+               OpStore %221 %222
+               OpStore %x_135_phi %int_0
+               OpBranch %223
+        %223 = OpLabel
+               OpLoopMerge %224 %225 None
+               OpBranch %226
+        %226 = OpLabel
+        %228 = OpLoad %int %x_135_phi
+        %230 = OpSLessThan %bool %228 %int_3
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %233
+        %232 = OpLabel
+               OpBranch %231
+        %233 = OpLabel
+               OpBranch %224
+        %231 = OpLabel
+        %234 = OpAccessChain %_ptr_Function_float %c %228
+        %235 = OpLoad %float %234
+        %236 = OpFOrdGreaterThanEqual %bool %235 %float_1
+               OpSelectionMerge %237 None
+               OpBranchConditional %236 %238 %237
+        %238 = OpLabel
+        %239 = OpAccessChain %_ptr_Function_float %c %228
+        %240 = OpLoad %float %239
+        %241 = OpAccessChain %_ptr_Function_float %c %228
+        %242 = OpLoad %float %241
+        %243 = OpAccessChain %_ptr_Function_float %c %228
+        %244 = OpFMul %float %240 %242
+               OpStore %243 %244
+               OpBranch %237
+        %237 = OpLabel
+               OpBranch %225
+        %225 = OpLabel
+        %245 = OpIAdd %int %228 %int_1
+               OpStore %x_136 %245
+        %246 = OpLoad %int %x_136
+               OpStore %x_135_phi %246
+               OpBranch %223
+        %224 = OpLabel
+        %247 = OpLoad %v3float %c
+        %249 = OpExtInst %v3float %58 FAbs %247
+        %248 = OpExtInst %v3float %58 Normalize %249
+        %250 = OpCompositeExtract %float %248 0
+        %251 = OpCompositeExtract %float %248 1
+        %252 = OpCompositeExtract %float %248 2
+        %253 = OpCompositeConstruct %v4float %250 %251 %252 %float_1
+               OpStore %x_GLF_color %253
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %254
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %258 = OpLabel
+        %259 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %259
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %261 = OpLabel
+        %262 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %262
+        %263 = OpFunctionCall %void %main_1
+        %265 = OpLoad %v4float %x_GLF_color
+        %266 = OpCompositeConstruct %main_out %265
+        %264 = OpFunctionCall %void %tint_symbol_3 %266
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..c2ad2e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl.expected.wgsl
@@ -0,0 +1,205 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_53 : f32;
+  var x_57 : f32;
+  var x_58 : f32;
+  var x_83 : f32;
+  var x_84 : f32;
+  var x_124 : f32;
+  var x_125 : f32;
+  var x_57_phi : f32;
+  var x_60_phi : i32;
+  var x_83_phi : f32;
+  var x_84_phi : f32;
+  var x_85_phi : bool;
+  var x_87_phi : f32;
+  var x_128_phi : f32;
+  var x_135_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_47 : f32 = x_7.resolution.x;
+  let x_48 : vec2<f32> = vec2<f32>(1.0, x_47);
+  let x_50 : f32 = round((x_47 * 0.125));
+  let x_51 : vec2<f32> = vec2<f32>(0.0, -0.5);
+  x_53 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_57_phi = -0.5;
+      x_60_phi = 1;
+      loop {
+        var x_70 : f32;
+        var x_78 : f32;
+        var x_61 : i32;
+        var x_58_phi : f32;
+        x_57 = x_57_phi;
+        let x_60 : i32 = x_60_phi;
+        x_83_phi = 0.0;
+        x_84_phi = x_57;
+        x_85_phi = false;
+        if ((x_60 < 800)) {
+        } else {
+          break;
+        }
+        var x_77 : f32;
+        var x_78_phi : f32;
+        if (((x_60 % 32) == 0)) {
+          x_70 = (x_57 + 0.400000006);
+          x_58_phi = x_70;
+        } else {
+          x_78_phi = x_57;
+          if (((f32(x_60) % round(x_50)) <= 0.01)) {
+            x_77 = (x_57 + 100.0);
+            x_78_phi = x_77;
+          }
+          x_78 = x_78_phi;
+          x_58_phi = x_78;
+        }
+        x_58 = x_58_phi;
+        if ((f32(x_60) >= x_53)) {
+          x_83_phi = x_58;
+          x_84_phi = x_58;
+          x_85_phi = true;
+          break;
+        }
+
+        continuing {
+          x_61 = (x_60 + 1);
+          x_57_phi = x_58;
+          x_60_phi = x_61;
+        }
+      }
+      x_83 = x_83_phi;
+      x_84 = x_84_phi;
+      let x_85 : bool = x_85_phi;
+      x_87_phi = x_83;
+      if (x_85) {
+        break;
+      }
+      x_87_phi = x_84;
+    }
+  }
+  var x_92 : f32;
+  var x_98 : f32;
+  var x_99 : f32;
+  var x_98_phi : f32;
+  var x_101_phi : i32;
+  var x_124_phi : f32;
+  var x_125_phi : f32;
+  var x_126_phi : bool;
+  let x_87 : f32 = x_87_phi;
+  let x_88 : ptr<function, f32> = &(c.x);
+  let x_89 : vec4<f32> = vec4<f32>(x_84, 0.400000006, x_83, 0.400000006);
+  *(x_88) = x_87;
+  x_92 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      let x_95 : vec4<f32> = vec4<f32>(x_51, 0.0, x_57);
+      let x_96 : f32 = vec3<f32>(x_48, -0.5).z;
+      x_98_phi = x_96;
+      x_101_phi = 1;
+      loop {
+        var x_111 : f32;
+        var x_119 : f32;
+        var x_102 : i32;
+        var x_99_phi : f32;
+        x_98 = x_98_phi;
+        let x_101 : i32 = x_101_phi;
+        x_124_phi = 0.0;
+        x_125_phi = x_98;
+        x_126_phi = false;
+        if ((x_101 < 800)) {
+        } else {
+          break;
+        }
+        var x_118 : f32;
+        var x_119_phi : f32;
+        if (((x_101 % 32) == 0)) {
+          x_111 = (x_98 + 0.400000006);
+          x_99_phi = x_111;
+        } else {
+          x_119_phi = x_98;
+          if (((f32(x_101) % round(x_50)) <= 0.01)) {
+            x_118 = (x_98 + 100.0);
+            x_119_phi = x_118;
+          }
+          x_119 = x_119_phi;
+          x_99_phi = x_119;
+        }
+        x_99 = x_99_phi;
+        if ((f32(x_101) >= x_92)) {
+          x_124_phi = x_99;
+          x_125_phi = x_99;
+          x_126_phi = true;
+          break;
+        }
+
+        continuing {
+          x_102 = (x_101 + 1);
+          x_98_phi = x_99;
+          x_101_phi = x_102;
+        }
+      }
+      x_124 = x_124_phi;
+      x_125 = x_125_phi;
+      let x_126 : bool = x_126_phi;
+      x_128_phi = x_124;
+      if (x_126) {
+        break;
+      }
+      x_128_phi = x_125;
+    }
+  }
+  let x_128 : f32 = x_128_phi;
+  let x_129 : ptr<function, f32> = &(c.y);
+  *(x_129) = x_128;
+  let x_130 : f32 = *(x_88);
+  let x_131 : f32 = *(x_129);
+  c.z = (x_130 + x_131);
+  x_135_phi = 0;
+  loop {
+    var x_136 : i32;
+    let x_135 : i32 = x_135_phi;
+    if ((x_135 < 3)) {
+    } else {
+      break;
+    }
+    let x_141 : ptr<function, f32> = &(c[x_135]);
+    let x_142 : f32 = *(x_141);
+    if ((x_142 >= 1.0)) {
+      let x_146 : f32 = *(x_141);
+      let x_147 : f32 = *(x_141);
+      *(x_141) = (x_146 * x_147);
+    }
+
+    continuing {
+      x_136 = (x_135 + 1);
+      x_135_phi = x_136;
+    }
+  }
+  let x_149 : vec3<f32> = c;
+  let x_151 : vec3<f32> = normalize(abs(x_149));
+  x_GLF_color = vec4<f32>(x_151.x, x_151.y, x_151.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm
new file mode 100644
index 0000000..a12759d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm
@@ -0,0 +1,104 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %uint = OpTypeInt 32 0
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %33 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %37 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %39 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %40 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %41 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %46 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %47 = OpConstantComposite %_arr_v4float_uint_16 %31 %33 %34 %35 %36 %37 %38 %39 %31 %40 %41 %42 %43 %44 %45 %46
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %main = OpFunction %void None %9
+         %51 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %52 = OpLoad %v4float %gl_FragCoord
+         %53 = OpVectorShuffle %v2float %52 %52 0 1
+         %54 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %55 = OpLoad %v2float %54
+         %56 = OpFDiv %v2float %53 %55
+         %57 = OpCompositeExtract %float %56 0
+         %58 = OpFMul %float %57 %float_10
+         %59 = OpConvertFToS %int %58
+         %60 = OpCompositeExtract %float %56 1
+         %61 = OpFMul %float %60 %float_10
+         %62 = OpConvertFToS %int %61
+         %63 = OpIMul %int %62 %int_10
+         %64 = OpIAdd %int %59 %63
+               OpBranch %65
+         %65 = OpLabel
+         %66 = OpPhi %int %int_100 %51 %67 %68
+         %69 = OpPhi %int %int_0 %51 %70 %68
+         %71 = OpSLessThan %bool %69 %64
+               OpLoopMerge %72 %68 None
+               OpBranchConditional %71 %68 %72
+         %68 = OpLabel
+         %73 = OpIMul %int %int_4 %66
+         %74 = OpISub %int %int_1000 %66
+         %75 = OpIMul %int %73 %74
+         %67 = OpSDiv %int %75 %int_1000
+         %70 = OpIAdd %int %69 %int_1
+               OpBranch %65
+         %72 = OpLabel
+         %76 = OpSMod %int %66 %int_16
+               OpStore %indexable %47
+         %77 = OpAccessChain %_ptr_Function_v4float %indexable %76
+         %78 = OpLoad %v4float %77
+               OpStore %_GLF_color %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..14cc0b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_66 = 0;
+  int x_66_phi = 0;
+  int x_69_phi = 0;
+  const float4 x_52 = gl_FragCoord;
+  const float2 x_55 = asfloat(x_6[0].xy);
+  const float2 x_56 = (float2(x_52.x, x_52.y) / x_55);
+  const int x_64 = (int((x_56.x * 10.0f)) + (int((x_56.y * 10.0f)) * 10));
+  x_66_phi = 100;
+  x_69_phi = 0;
+  while (true) {
+    int x_67 = 0;
+    int x_70 = 0;
+    x_66 = x_66_phi;
+    const int x_69 = x_69_phi;
+    if ((x_69 < x_64)) {
+    } else {
+      break;
+    }
+    {
+      x_67 = (((4 * asint(x_66)) * (1000 - asint(x_66))) / 1000);
+      x_70 = (x_69 + 1);
+      x_66_phi = x_67;
+      x_69_phi = x_70;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_78 = indexable[asint((x_66 % 16))];
+  x_GLF_color = x_78;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.msl
new file mode 100644
index 0000000..f5bbeb8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.msl
@@ -0,0 +1,60 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int x_66 = 0;
+  int x_66_phi = 0;
+  int x_69_phi = 0;
+  float4 const x_52 = *(tint_symbol_6);
+  float2 const x_55 = x_6.resolution;
+  float2 const x_56 = (float2(x_52.x, x_52.y) / x_55);
+  int const x_64 = (int((x_56.x * 10.0f)) + (int((x_56.y * 10.0f)) * 10));
+  x_66_phi = 100;
+  x_69_phi = 0;
+  while (true) {
+    int x_67 = 0;
+    int x_70 = 0;
+    x_66 = x_66_phi;
+    int const x_69 = x_69_phi;
+    if ((x_69 < x_64)) {
+    } else {
+      break;
+    }
+    {
+      x_67 = (((4 * as_type<int>(x_66)) * (1000 - as_type<int>(x_66))) / 1000);
+      x_70 = (x_69 + 1);
+      x_66_phi = x_67;
+      x_69_phi = x_70;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_78 = indexable.arr[as_type<int>((x_66 % 16))];
+  *(tint_symbol_7) = x_78;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..feaee7c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.spvasm
@@ -0,0 +1,180 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 118
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_66 "x_66"
+               OpName %x_66_phi "x_66_phi"
+               OpName %x_69_phi "x_69_phi"
+               OpName %x_67 "x_67"
+               OpName %x_70 "x_70"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %83 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %84 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %85 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %87 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %88 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %89 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %90 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %92 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %94 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %95 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %96 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %97 = OpConstantComposite %_arr_v4float_uint_16 %81 %83 %84 %85 %86 %87 %88 %89 %81 %90 %91 %92 %93 %94 %95 %96
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %105 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_66 = OpVariable %_ptr_Function_int Function %28
+   %x_66_phi = OpVariable %_ptr_Function_int Function %28
+   %x_69_phi = OpVariable %_ptr_Function_int Function %28
+       %x_67 = OpVariable %_ptr_Function_int Function %28
+       %x_70 = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %34 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %35 = OpLoad %v2float %34
+         %36 = OpCompositeExtract %float %31 0
+         %37 = OpCompositeExtract %float %31 1
+         %38 = OpCompositeConstruct %v2float %36 %37
+         %39 = OpFDiv %v2float %38 %35
+         %41 = OpCompositeExtract %float %39 0
+         %43 = OpFMul %float %41 %float_10
+         %40 = OpConvertFToS %int %43
+         %45 = OpCompositeExtract %float %39 1
+         %46 = OpFMul %float %45 %float_10
+         %44 = OpConvertFToS %int %46
+         %48 = OpIMul %int %44 %int_10
+         %49 = OpIAdd %int %40 %48
+               OpStore %x_66_phi %int_100
+               OpStore %x_69_phi %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %58 = OpLoad %int %x_66_phi
+               OpStore %x_66 %58
+         %59 = OpLoad %int %x_69_phi
+         %60 = OpSLessThan %bool %59 %49
+               OpSelectionMerge %62 None
+               OpBranchConditional %60 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %53
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %67 = OpLoad %int %x_66
+         %66 = OpCopyObject %int %67
+         %68 = OpIMul %int %int_4 %66
+         %71 = OpLoad %int %x_66
+         %70 = OpCopyObject %int %71
+         %72 = OpISub %int %int_1000 %70
+         %73 = OpIMul %int %68 %72
+         %74 = OpSDiv %int %73 %int_1000
+               OpStore %x_67 %74
+         %76 = OpIAdd %int %59 %int_1
+               OpStore %x_70 %76
+         %77 = OpLoad %int %x_67
+               OpStore %x_66_phi %77
+         %78 = OpLoad %int %x_70
+               OpStore %x_69_phi %78
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %97
+         %99 = OpLoad %int %x_66
+        %101 = OpSMod %int %99 %int_16
+         %98 = OpCopyObject %int %101
+        %103 = OpAccessChain %_ptr_Function_v4float %indexable %98
+        %104 = OpLoad %v4float %103
+               OpStore %x_GLF_color %104
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %105
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %109 = OpLabel
+        %110 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %110
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %112 = OpLabel
+        %113 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %113
+        %114 = OpFunctionCall %void %main_1
+        %116 = OpLoad %v4float %x_GLF_color
+        %117 = OpCompositeConstruct %main_out %116
+        %115 = OpFunctionCall %void %tint_symbol_3 %117
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..8d0080b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.spvasm.expected.wgsl
@@ -0,0 +1,56 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_66 : i32;
+  var x_66_phi : i32;
+  var x_69_phi : i32;
+  let x_52 : vec4<f32> = gl_FragCoord;
+  let x_55 : vec2<f32> = x_6.resolution;
+  let x_56 : vec2<f32> = (vec2<f32>(x_52.x, x_52.y) / x_55);
+  let x_64 : i32 = (i32((x_56.x * 10.0)) + (i32((x_56.y * 10.0)) * 10));
+  x_66_phi = 100;
+  x_69_phi = 0;
+  loop {
+    var x_67 : i32;
+    var x_70 : i32;
+    x_66 = x_66_phi;
+    let x_69 : i32 = x_69_phi;
+    if ((x_69 < x_64)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_67 = (((4 * bitcast<i32>(x_66)) * (1000 - bitcast<i32>(x_66))) / 1000);
+      x_70 = (x_69 + 1);
+      x_66_phi = x_67;
+      x_69_phi = x_70;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_78 : vec4<f32> = indexable[bitcast<i32>((x_66 % 16))];
+  x_GLF_color = x_78;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
new file mode 100644
index 0000000..8d0080b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
@@ -0,0 +1,56 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_66 : i32;
+  var x_66_phi : i32;
+  var x_69_phi : i32;
+  let x_52 : vec4<f32> = gl_FragCoord;
+  let x_55 : vec2<f32> = x_6.resolution;
+  let x_56 : vec2<f32> = (vec2<f32>(x_52.x, x_52.y) / x_55);
+  let x_64 : i32 = (i32((x_56.x * 10.0)) + (i32((x_56.y * 10.0)) * 10));
+  x_66_phi = 100;
+  x_69_phi = 0;
+  loop {
+    var x_67 : i32;
+    var x_70 : i32;
+    x_66 = x_66_phi;
+    let x_69 : i32 = x_69_phi;
+    if ((x_69 < x_64)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_67 = (((4 * bitcast<i32>(x_66)) * (1000 - bitcast<i32>(x_66))) / 1000);
+      x_70 = (x_69 + 1);
+      x_66_phi = x_67;
+      x_69_phi = x_70;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_78 : vec4<f32> = indexable[bitcast<i32>((x_66 % 16))];
+  x_GLF_color = x_78;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..14cc0b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_66 = 0;
+  int x_66_phi = 0;
+  int x_69_phi = 0;
+  const float4 x_52 = gl_FragCoord;
+  const float2 x_55 = asfloat(x_6[0].xy);
+  const float2 x_56 = (float2(x_52.x, x_52.y) / x_55);
+  const int x_64 = (int((x_56.x * 10.0f)) + (int((x_56.y * 10.0f)) * 10));
+  x_66_phi = 100;
+  x_69_phi = 0;
+  while (true) {
+    int x_67 = 0;
+    int x_70 = 0;
+    x_66 = x_66_phi;
+    const int x_69 = x_69_phi;
+    if ((x_69 < x_64)) {
+    } else {
+      break;
+    }
+    {
+      x_67 = (((4 * asint(x_66)) * (1000 - asint(x_66))) / 1000);
+      x_70 = (x_69 + 1);
+      x_66_phi = x_67;
+      x_69_phi = x_70;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_78 = indexable[asint((x_66 % 16))];
+  x_GLF_color = x_78;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.msl
new file mode 100644
index 0000000..f5bbeb8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.msl
@@ -0,0 +1,60 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int x_66 = 0;
+  int x_66_phi = 0;
+  int x_69_phi = 0;
+  float4 const x_52 = *(tint_symbol_6);
+  float2 const x_55 = x_6.resolution;
+  float2 const x_56 = (float2(x_52.x, x_52.y) / x_55);
+  int const x_64 = (int((x_56.x * 10.0f)) + (int((x_56.y * 10.0f)) * 10));
+  x_66_phi = 100;
+  x_69_phi = 0;
+  while (true) {
+    int x_67 = 0;
+    int x_70 = 0;
+    x_66 = x_66_phi;
+    int const x_69 = x_69_phi;
+    if ((x_69 < x_64)) {
+    } else {
+      break;
+    }
+    {
+      x_67 = (((4 * as_type<int>(x_66)) * (1000 - as_type<int>(x_66))) / 1000);
+      x_70 = (x_69 + 1);
+      x_66_phi = x_67;
+      x_69_phi = x_70;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_78 = indexable.arr[as_type<int>((x_66 % 16))];
+  *(tint_symbol_7) = x_78;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..feaee7c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.spvasm
@@ -0,0 +1,180 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 118
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_66 "x_66"
+               OpName %x_66_phi "x_66_phi"
+               OpName %x_69_phi "x_69_phi"
+               OpName %x_67 "x_67"
+               OpName %x_70 "x_70"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %83 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %84 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %85 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %87 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %88 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %89 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %90 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %92 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %94 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %95 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %96 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %97 = OpConstantComposite %_arr_v4float_uint_16 %81 %83 %84 %85 %86 %87 %88 %89 %81 %90 %91 %92 %93 %94 %95 %96
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %105 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_66 = OpVariable %_ptr_Function_int Function %28
+   %x_66_phi = OpVariable %_ptr_Function_int Function %28
+   %x_69_phi = OpVariable %_ptr_Function_int Function %28
+       %x_67 = OpVariable %_ptr_Function_int Function %28
+       %x_70 = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %34 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %35 = OpLoad %v2float %34
+         %36 = OpCompositeExtract %float %31 0
+         %37 = OpCompositeExtract %float %31 1
+         %38 = OpCompositeConstruct %v2float %36 %37
+         %39 = OpFDiv %v2float %38 %35
+         %41 = OpCompositeExtract %float %39 0
+         %43 = OpFMul %float %41 %float_10
+         %40 = OpConvertFToS %int %43
+         %45 = OpCompositeExtract %float %39 1
+         %46 = OpFMul %float %45 %float_10
+         %44 = OpConvertFToS %int %46
+         %48 = OpIMul %int %44 %int_10
+         %49 = OpIAdd %int %40 %48
+               OpStore %x_66_phi %int_100
+               OpStore %x_69_phi %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %58 = OpLoad %int %x_66_phi
+               OpStore %x_66 %58
+         %59 = OpLoad %int %x_69_phi
+         %60 = OpSLessThan %bool %59 %49
+               OpSelectionMerge %62 None
+               OpBranchConditional %60 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %53
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %67 = OpLoad %int %x_66
+         %66 = OpCopyObject %int %67
+         %68 = OpIMul %int %int_4 %66
+         %71 = OpLoad %int %x_66
+         %70 = OpCopyObject %int %71
+         %72 = OpISub %int %int_1000 %70
+         %73 = OpIMul %int %68 %72
+         %74 = OpSDiv %int %73 %int_1000
+               OpStore %x_67 %74
+         %76 = OpIAdd %int %59 %int_1
+               OpStore %x_70 %76
+         %77 = OpLoad %int %x_67
+               OpStore %x_66_phi %77
+         %78 = OpLoad %int %x_70
+               OpStore %x_69_phi %78
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %97
+         %99 = OpLoad %int %x_66
+        %101 = OpSMod %int %99 %int_16
+         %98 = OpCopyObject %int %101
+        %103 = OpAccessChain %_ptr_Function_v4float %indexable %98
+        %104 = OpLoad %v4float %103
+               OpStore %x_GLF_color %104
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %105
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %109 = OpLabel
+        %110 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %110
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %112 = OpLabel
+        %113 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %113
+        %114 = OpFunctionCall %void %main_1
+        %116 = OpLoad %v4float %x_GLF_color
+        %117 = OpCompositeConstruct %main_out %116
+        %115 = OpFunctionCall %void %tint_symbol_3 %117
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..8d0080b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl.expected.wgsl
@@ -0,0 +1,56 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_66 : i32;
+  var x_66_phi : i32;
+  var x_69_phi : i32;
+  let x_52 : vec4<f32> = gl_FragCoord;
+  let x_55 : vec2<f32> = x_6.resolution;
+  let x_56 : vec2<f32> = (vec2<f32>(x_52.x, x_52.y) / x_55);
+  let x_64 : i32 = (i32((x_56.x * 10.0)) + (i32((x_56.y * 10.0)) * 10));
+  x_66_phi = 100;
+  x_69_phi = 0;
+  loop {
+    var x_67 : i32;
+    var x_70 : i32;
+    x_66 = x_66_phi;
+    let x_69 : i32 = x_69_phi;
+    if ((x_69 < x_64)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_67 = (((4 * bitcast<i32>(x_66)) * (1000 - bitcast<i32>(x_66))) / 1000);
+      x_70 = (x_69 + 1);
+      x_66_phi = x_67;
+      x_69_phi = x_70;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_78 : vec4<f32> = indexable[bitcast<i32>((x_66 % 16))];
+  x_GLF_color = x_78;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm
new file mode 100644
index 0000000..1f2cac9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm
@@ -0,0 +1,110 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %uint = OpTypeInt 32 0
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %33 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %37 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %39 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %40 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %41 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %46 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %47 = OpConstantComposite %_arr_v4float_uint_16 %31 %33 %34 %35 %36 %37 %38 %39 %31 %40 %41 %42 %43 %44 %45 %46
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %51 = OpConstantComposite %v2float %float_0 %float_0
+%float_0_5_0 = OpConstant %float 0.5
+       %main = OpFunction %void None %9
+         %53 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %54 = OpLoad %v4float %gl_FragCoord
+         %55 = OpVectorShuffle %v2float %54 %54 0 1
+         %56 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %57 = OpCompositeConstruct %v4float %float_0 %55 %float_0_5_0
+         %58 = OpLoad %v2float %56
+         %59 = OpFDiv %v2float %55 %58
+         %60 = OpCompositeExtract %float %59 0
+         %61 = OpCompositeExtract %float %57 3
+         %62 = OpCompositeConstruct %v4float %61 %float_10 %51
+         %63 = OpCompositeExtract %float %62 1
+         %64 = OpFMul %float %60 %63
+         %65 = OpConvertFToS %int %64
+         %66 = OpCompositeExtract %float %59 1
+         %67 = OpFMul %float %66 %float_10
+         %68 = OpConvertFToS %int %67
+         %69 = OpIMul %int %68 %int_10
+         %70 = OpIAdd %int %65 %69
+               OpBranch %71
+         %71 = OpLabel
+         %72 = OpPhi %int %int_100 %53 %73 %74
+         %75 = OpPhi %int %int_0 %53 %76 %74
+         %77 = OpSLessThan %bool %75 %70
+               OpLoopMerge %78 %74 None
+               OpBranchConditional %77 %74 %78
+         %74 = OpLabel
+         %79 = OpIMul %int %int_4 %72
+         %80 = OpISub %int %int_1000 %72
+         %81 = OpIMul %int %79 %80
+         %73 = OpSDiv %int %81 %int_1000
+         %76 = OpIAdd %int %75 %int_1
+               OpBranch %71
+         %78 = OpLabel
+         %82 = OpSMod %int %72 %int_16
+               OpStore %indexable %47
+         %83 = OpAccessChain %_ptr_Function_v4float %indexable %82
+         %84 = OpLoad %v4float %83
+               OpStore %_GLF_color %84
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..ca60803
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.hlsl
@@ -0,0 +1,59 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_72 = 0;
+  int x_72_phi = 0;
+  int x_75_phi = 0;
+  const float4 x_54 = gl_FragCoord;
+  const float2 x_55 = float2(x_54.x, x_54.y);
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_59 = (x_55 / x_58);
+  const int x_70 = (int((x_59.x * float4(float4(0.0f, x_55, 0.5f).w, 10.0f, float2(0.0f, 0.0f)).y)) + (int((x_59.y * 10.0f)) * 10));
+  x_72_phi = 100;
+  x_75_phi = 0;
+  while (true) {
+    int x_73 = 0;
+    int x_76 = 0;
+    x_72 = x_72_phi;
+    const int x_75 = x_75_phi;
+    if ((x_75 < x_70)) {
+    } else {
+      break;
+    }
+    {
+      x_73 = (((4 * asint(x_72)) * (1000 - asint(x_72))) / 1000);
+      x_76 = (x_75 + 1);
+      x_72_phi = x_73;
+      x_75_phi = x_76;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_84 = indexable[asint((x_72 % 16))];
+  x_GLF_color = x_84;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.msl
new file mode 100644
index 0000000..7c00279
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int x_72 = 0;
+  int x_72_phi = 0;
+  int x_75_phi = 0;
+  float4 const x_54 = *(tint_symbol_6);
+  float2 const x_55 = float2(x_54.x, x_54.y);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_59 = (x_55 / x_58);
+  int const x_70 = (int((x_59.x * float4(float4(0.0f, x_55, 0.5f).w, 10.0f, float2(0.0f, 0.0f)).y)) + (int((x_59.y * 10.0f)) * 10));
+  x_72_phi = 100;
+  x_75_phi = 0;
+  while (true) {
+    int x_73 = 0;
+    int x_76 = 0;
+    x_72 = x_72_phi;
+    int const x_75 = x_75_phi;
+    if ((x_75 < x_70)) {
+    } else {
+      break;
+    }
+    {
+      x_73 = (((4 * as_type<int>(x_72)) * (1000 - as_type<int>(x_72))) / 1000);
+      x_76 = (x_75 + 1);
+      x_72_phi = x_73;
+      x_75_phi = x_76;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_84 = indexable.arr[as_type<int>((x_72 % 16))];
+  *(tint_symbol_7) = x_84;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..f9920e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.spvasm
@@ -0,0 +1,189 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 127
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_72 "x_72"
+               OpName %x_72_phi "x_72_phi"
+               OpName %x_75_phi "x_75_phi"
+               OpName %x_73 "x_73"
+               OpName %x_76 "x_76"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_0 = OpConstant %float 0
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+         %49 = OpConstantComposite %v2float %float_0 %float_0
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %91 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %92 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %94 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %95 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %96 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %97 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %98 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %99 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %100 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %101 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %102 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %103 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %104 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %105 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %106 = OpConstantComposite %_arr_v4float_uint_16 %91 %92 %93 %94 %95 %96 %97 %98 %91 %99 %100 %101 %102 %103 %104 %105
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %114 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_72 = OpVariable %_ptr_Function_int Function %28
+   %x_72_phi = OpVariable %_ptr_Function_int Function %28
+   %x_75_phi = OpVariable %_ptr_Function_int Function %28
+       %x_73 = OpVariable %_ptr_Function_int Function %28
+       %x_76 = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %32 = OpCompositeExtract %float %31 0
+         %33 = OpCompositeExtract %float %31 1
+         %34 = OpCompositeConstruct %v2float %32 %33
+         %37 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %38 = OpLoad %v2float %37
+         %39 = OpFDiv %v2float %34 %38
+         %41 = OpCompositeExtract %float %39 0
+         %43 = OpCompositeExtract %float %34 0
+         %44 = OpCompositeExtract %float %34 1
+         %46 = OpCompositeConstruct %v4float %float_0 %43 %44 %float_0_5
+         %47 = OpCompositeExtract %float %46 3
+         %50 = OpCompositeExtract %float %49 0
+         %51 = OpCompositeExtract %float %49 1
+         %52 = OpCompositeConstruct %v4float %47 %float_10 %50 %51
+         %53 = OpCompositeExtract %float %52 1
+         %54 = OpFMul %float %41 %53
+         %40 = OpConvertFToS %int %54
+         %56 = OpCompositeExtract %float %39 1
+         %57 = OpFMul %float %56 %float_10
+         %55 = OpConvertFToS %int %57
+         %59 = OpIMul %int %55 %int_10
+         %60 = OpIAdd %int %40 %59
+               OpStore %x_72_phi %int_100
+               OpStore %x_75_phi %int_0
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %69 = OpLoad %int %x_72_phi
+               OpStore %x_72 %69
+         %70 = OpLoad %int %x_75_phi
+         %71 = OpSLessThan %bool %70 %60
+               OpSelectionMerge %73 None
+               OpBranchConditional %71 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %64
+         %73 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+         %78 = OpLoad %int %x_72
+         %77 = OpCopyObject %int %78
+         %79 = OpIMul %int %int_4 %77
+         %82 = OpLoad %int %x_72
+         %81 = OpCopyObject %int %82
+         %83 = OpISub %int %int_1000 %81
+         %84 = OpIMul %int %79 %83
+         %85 = OpSDiv %int %84 %int_1000
+               OpStore %x_73 %85
+         %87 = OpIAdd %int %70 %int_1
+               OpStore %x_76 %87
+         %88 = OpLoad %int %x_73
+               OpStore %x_72_phi %88
+         %89 = OpLoad %int %x_76
+               OpStore %x_75_phi %89
+               OpBranch %63
+         %64 = OpLabel
+               OpStore %indexable %106
+        %108 = OpLoad %int %x_72
+        %110 = OpSMod %int %108 %int_16
+        %107 = OpCopyObject %int %110
+        %112 = OpAccessChain %_ptr_Function_v4float %indexable %107
+        %113 = OpLoad %v4float %112
+               OpStore %x_GLF_color %113
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %114
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %118 = OpLabel
+        %119 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %119
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %121 = OpLabel
+        %122 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %122
+        %123 = OpFunctionCall %void %main_1
+        %125 = OpLoad %v4float %x_GLF_color
+        %126 = OpCompositeConstruct %main_out %125
+        %124 = OpFunctionCall %void %tint_symbol_3 %126
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..daa4973
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.spvasm.expected.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_72 : i32;
+  var x_72_phi : i32;
+  var x_75_phi : i32;
+  let x_54 : vec4<f32> = gl_FragCoord;
+  let x_55 : vec2<f32> = vec2<f32>(x_54.x, x_54.y);
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (x_55 / x_58);
+  let x_70 : i32 = (i32((x_59.x * vec4<f32>(vec4<f32>(0.0, x_55, 0.5).w, 10.0, vec2<f32>(0.0, 0.0)).y)) + (i32((x_59.y * 10.0)) * 10));
+  x_72_phi = 100;
+  x_75_phi = 0;
+  loop {
+    var x_73 : i32;
+    var x_76 : i32;
+    x_72 = x_72_phi;
+    let x_75 : i32 = x_75_phi;
+    if ((x_75 < x_70)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_73 = (((4 * bitcast<i32>(x_72)) * (1000 - bitcast<i32>(x_72))) / 1000);
+      x_76 = (x_75 + 1);
+      x_72_phi = x_73;
+      x_75_phi = x_76;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_84 : vec4<f32> = indexable[bitcast<i32>((x_72 % 16))];
+  x_GLF_color = x_84;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
new file mode 100644
index 0000000..daa4973
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_72 : i32;
+  var x_72_phi : i32;
+  var x_75_phi : i32;
+  let x_54 : vec4<f32> = gl_FragCoord;
+  let x_55 : vec2<f32> = vec2<f32>(x_54.x, x_54.y);
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (x_55 / x_58);
+  let x_70 : i32 = (i32((x_59.x * vec4<f32>(vec4<f32>(0.0, x_55, 0.5).w, 10.0, vec2<f32>(0.0, 0.0)).y)) + (i32((x_59.y * 10.0)) * 10));
+  x_72_phi = 100;
+  x_75_phi = 0;
+  loop {
+    var x_73 : i32;
+    var x_76 : i32;
+    x_72 = x_72_phi;
+    let x_75 : i32 = x_75_phi;
+    if ((x_75 < x_70)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_73 = (((4 * bitcast<i32>(x_72)) * (1000 - bitcast<i32>(x_72))) / 1000);
+      x_76 = (x_75 + 1);
+      x_72_phi = x_73;
+      x_75_phi = x_76;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_84 : vec4<f32> = indexable[bitcast<i32>((x_72 % 16))];
+  x_GLF_color = x_84;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..ca60803
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.hlsl
@@ -0,0 +1,59 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_72 = 0;
+  int x_72_phi = 0;
+  int x_75_phi = 0;
+  const float4 x_54 = gl_FragCoord;
+  const float2 x_55 = float2(x_54.x, x_54.y);
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_59 = (x_55 / x_58);
+  const int x_70 = (int((x_59.x * float4(float4(0.0f, x_55, 0.5f).w, 10.0f, float2(0.0f, 0.0f)).y)) + (int((x_59.y * 10.0f)) * 10));
+  x_72_phi = 100;
+  x_75_phi = 0;
+  while (true) {
+    int x_73 = 0;
+    int x_76 = 0;
+    x_72 = x_72_phi;
+    const int x_75 = x_75_phi;
+    if ((x_75 < x_70)) {
+    } else {
+      break;
+    }
+    {
+      x_73 = (((4 * asint(x_72)) * (1000 - asint(x_72))) / 1000);
+      x_76 = (x_75 + 1);
+      x_72_phi = x_73;
+      x_75_phi = x_76;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_84 = indexable[asint((x_72 % 16))];
+  x_GLF_color = x_84;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.msl
new file mode 100644
index 0000000..7c00279
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int x_72 = 0;
+  int x_72_phi = 0;
+  int x_75_phi = 0;
+  float4 const x_54 = *(tint_symbol_6);
+  float2 const x_55 = float2(x_54.x, x_54.y);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_59 = (x_55 / x_58);
+  int const x_70 = (int((x_59.x * float4(float4(0.0f, x_55, 0.5f).w, 10.0f, float2(0.0f, 0.0f)).y)) + (int((x_59.y * 10.0f)) * 10));
+  x_72_phi = 100;
+  x_75_phi = 0;
+  while (true) {
+    int x_73 = 0;
+    int x_76 = 0;
+    x_72 = x_72_phi;
+    int const x_75 = x_75_phi;
+    if ((x_75 < x_70)) {
+    } else {
+      break;
+    }
+    {
+      x_73 = (((4 * as_type<int>(x_72)) * (1000 - as_type<int>(x_72))) / 1000);
+      x_76 = (x_75 + 1);
+      x_72_phi = x_73;
+      x_75_phi = x_76;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_84 = indexable.arr[as_type<int>((x_72 % 16))];
+  *(tint_symbol_7) = x_84;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..f9920e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.spvasm
@@ -0,0 +1,189 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 127
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_72 "x_72"
+               OpName %x_72_phi "x_72_phi"
+               OpName %x_75_phi "x_75_phi"
+               OpName %x_73 "x_73"
+               OpName %x_76 "x_76"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_0 = OpConstant %float 0
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+         %49 = OpConstantComposite %v2float %float_0 %float_0
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %91 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %92 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %94 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %95 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %96 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %97 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %98 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %99 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %100 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %101 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %102 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %103 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %104 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %105 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %106 = OpConstantComposite %_arr_v4float_uint_16 %91 %92 %93 %94 %95 %96 %97 %98 %91 %99 %100 %101 %102 %103 %104 %105
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %114 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_72 = OpVariable %_ptr_Function_int Function %28
+   %x_72_phi = OpVariable %_ptr_Function_int Function %28
+   %x_75_phi = OpVariable %_ptr_Function_int Function %28
+       %x_73 = OpVariable %_ptr_Function_int Function %28
+       %x_76 = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %32 = OpCompositeExtract %float %31 0
+         %33 = OpCompositeExtract %float %31 1
+         %34 = OpCompositeConstruct %v2float %32 %33
+         %37 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %38 = OpLoad %v2float %37
+         %39 = OpFDiv %v2float %34 %38
+         %41 = OpCompositeExtract %float %39 0
+         %43 = OpCompositeExtract %float %34 0
+         %44 = OpCompositeExtract %float %34 1
+         %46 = OpCompositeConstruct %v4float %float_0 %43 %44 %float_0_5
+         %47 = OpCompositeExtract %float %46 3
+         %50 = OpCompositeExtract %float %49 0
+         %51 = OpCompositeExtract %float %49 1
+         %52 = OpCompositeConstruct %v4float %47 %float_10 %50 %51
+         %53 = OpCompositeExtract %float %52 1
+         %54 = OpFMul %float %41 %53
+         %40 = OpConvertFToS %int %54
+         %56 = OpCompositeExtract %float %39 1
+         %57 = OpFMul %float %56 %float_10
+         %55 = OpConvertFToS %int %57
+         %59 = OpIMul %int %55 %int_10
+         %60 = OpIAdd %int %40 %59
+               OpStore %x_72_phi %int_100
+               OpStore %x_75_phi %int_0
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %69 = OpLoad %int %x_72_phi
+               OpStore %x_72 %69
+         %70 = OpLoad %int %x_75_phi
+         %71 = OpSLessThan %bool %70 %60
+               OpSelectionMerge %73 None
+               OpBranchConditional %71 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %64
+         %73 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+         %78 = OpLoad %int %x_72
+         %77 = OpCopyObject %int %78
+         %79 = OpIMul %int %int_4 %77
+         %82 = OpLoad %int %x_72
+         %81 = OpCopyObject %int %82
+         %83 = OpISub %int %int_1000 %81
+         %84 = OpIMul %int %79 %83
+         %85 = OpSDiv %int %84 %int_1000
+               OpStore %x_73 %85
+         %87 = OpIAdd %int %70 %int_1
+               OpStore %x_76 %87
+         %88 = OpLoad %int %x_73
+               OpStore %x_72_phi %88
+         %89 = OpLoad %int %x_76
+               OpStore %x_75_phi %89
+               OpBranch %63
+         %64 = OpLabel
+               OpStore %indexable %106
+        %108 = OpLoad %int %x_72
+        %110 = OpSMod %int %108 %int_16
+        %107 = OpCopyObject %int %110
+        %112 = OpAccessChain %_ptr_Function_v4float %indexable %107
+        %113 = OpLoad %v4float %112
+               OpStore %x_GLF_color %113
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %114
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %118 = OpLabel
+        %119 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %119
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %121 = OpLabel
+        %122 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %122
+        %123 = OpFunctionCall %void %main_1
+        %125 = OpLoad %v4float %x_GLF_color
+        %126 = OpCompositeConstruct %main_out %125
+        %124 = OpFunctionCall %void %tint_symbol_3 %126
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..daa4973
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl.expected.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_72 : i32;
+  var x_72_phi : i32;
+  var x_75_phi : i32;
+  let x_54 : vec4<f32> = gl_FragCoord;
+  let x_55 : vec2<f32> = vec2<f32>(x_54.x, x_54.y);
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (x_55 / x_58);
+  let x_70 : i32 = (i32((x_59.x * vec4<f32>(vec4<f32>(0.0, x_55, 0.5).w, 10.0, vec2<f32>(0.0, 0.0)).y)) + (i32((x_59.y * 10.0)) * 10));
+  x_72_phi = 100;
+  x_75_phi = 0;
+  loop {
+    var x_73 : i32;
+    var x_76 : i32;
+    x_72 = x_72_phi;
+    let x_75 : i32 = x_75_phi;
+    if ((x_75 < x_70)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_73 = (((4 * bitcast<i32>(x_72)) * (1000 - bitcast<i32>(x_72))) / 1000);
+      x_76 = (x_75 + 1);
+      x_72_phi = x_73;
+      x_75_phi = x_76;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_84 : vec4<f32> = indexable[bitcast<i32>((x_72 % 16))];
+  x_GLF_color = x_84;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm
new file mode 100644
index 0000000..b87985b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm
@@ -0,0 +1,285 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %177 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %183 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+        %192 = OpUndef %v4float
+%float_0_0666666701 = OpConstant %float 0.0666666701
+       %main = OpFunction %void None %8
+        %194 = OpLabel
+        %195 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %196 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %197 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %198 = OpLoad %v4float %gl_FragCoord
+        %199 = OpVectorShuffle %v2float %198 %198 0 1
+        %200 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %201 = OpLoad %v2float %200
+        %202 = OpFDiv %v2float %199 %201
+        %203 = OpCompositeExtract %float %202 0
+        %204 = OpFMul %float %203 %float_256
+        %205 = OpConvertFToS %int %204
+        %206 = OpCompositeExtract %float %202 1
+        %207 = OpFMul %float %206 %float_256
+        %208 = OpConvertFToS %int %207
+        %209 = OpCompositeConstruct %v2int %205 %208
+               OpSelectionMerge %210 None
+               OpSwitch %uint_0 %211
+        %211 = OpLabel
+               OpBranch %212
+        %212 = OpLabel
+        %213 = OpPhi %v2int %209 %211 %214 %215
+        %216 = OpCompositeExtract %int %213 1
+        %217 = OpINotEqual %bool %216 %int_256
+               OpLoopMerge %218 %215 None
+               OpBranchConditional %217 %219 %218
+        %219 = OpLabel
+        %220 = OpCompositeExtract %int %213 0
+               OpStore %195 %177
+        %221 = OpAccessChain %_ptr_Function_int %195 %216
+        %222 = OpLoad %int %221
+        %223 = OpIAdd %int %222 %int_15
+        %224 = OpSLessThan %bool %220 %223
+               OpSelectionMerge %225 None
+               OpBranchConditional %224 %226 %225
+        %226 = OpLabel
+               OpStore %196 %177
+        %227 = OpAccessChain %_ptr_Function_int %196 %216
+        %228 = OpLoad %int %227
+        %229 = OpISub %int %228 %int_15
+        %230 = OpSGreaterThan %bool %220 %229
+               OpBranch %225
+        %225 = OpLabel
+        %231 = OpPhi %bool %224 %219 %230 %226
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %232
+        %233 = OpLabel
+               OpStore %197 %177
+        %234 = OpAccessChain %_ptr_Function_int %197 %216
+        %235 = OpLoad %int %234
+        %236 = OpISub %int %220 %235
+        %237 = OpConvertSToF %float %236
+        %238 = OpExtInst %float %1 FAbs %237
+        %239 = OpFSub %float %float_15 %238
+        %240 = OpFMul %float %239 %float_0_0666666701
+        %241 = OpCompositeConstruct %v4float %240 %240 %240 %float_1
+               OpBranch %218
+        %232 = OpLabel
+        %242 = OpIAdd %int %216 %int_1
+        %214 = OpCompositeInsert %v2int %242 %213 1
+               OpBranch %215
+        %215 = OpLabel
+               OpBranch %212
+        %218 = OpLabel
+        %243 = OpPhi %v4float %192 %212 %241 %233
+        %244 = OpPhi %bool %false %212 %true %233
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %210 %245
+        %245 = OpLabel
+               OpBranch %210
+        %210 = OpLabel
+        %246 = OpPhi %v4float %243 %218 %183 %245
+               OpStore %_GLF_color %246
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..cd5825d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.hlsl
@@ -0,0 +1,97 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_195[256] = (int[256])0;
+  int x_196[256] = (int[256])0;
+  int x_197[256] = (int[256])0;
+  int2 x_209 = int2(0, 0);
+  float4 x_241 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_243 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int2 x_213_phi = int2(0, 0);
+  float4 x_243_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_244_phi = false;
+  float4 x_246_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float4 x_198 = gl_FragCoord;
+  const float2 x_201 = asfloat(x_6[0].xy);
+  const float2 x_202 = (float2(x_198.x, x_198.y) / x_201);
+  x_209 = int2(int((x_202.x * 256.0f)), int((x_202.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_213_phi = x_209;
+      while (true) {
+        bool x_230 = false;
+        bool x_231_phi = false;
+        const int2 x_213 = x_213_phi;
+        const int x_216 = x_213.y;
+        x_243_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_244_phi = false;
+        if ((x_216 != 256)) {
+        } else {
+          break;
+        }
+        const int x_220 = x_213.x;
+        const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+        x_195 = tint_symbol_5;
+        const int x_222 = x_195[x_216];
+        const bool x_224 = (x_220 < (x_222 + 15));
+        x_231_phi = x_224;
+        if (x_224) {
+          const int tint_symbol_6[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_196 = tint_symbol_6;
+          const int x_228 = x_196[x_216];
+          x_230 = (x_220 > (x_228 - 15));
+          x_231_phi = x_230;
+        }
+        if (x_231_phi) {
+          const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_197 = tint_symbol_7;
+          const int x_235 = x_197[x_216];
+          const float x_240 = ((15.0f - abs(float((x_220 - x_235)))) * 0.06666667f);
+          x_241 = float4(x_240, x_240, x_240, 1.0f);
+          x_243_phi = x_241;
+          x_244_phi = true;
+          break;
+        }
+        int2 x_214_1 = x_213;
+        x_214_1.y = (x_216 + 1);
+        const int2 x_214 = x_214_1;
+        {
+          x_213_phi = x_214;
+        }
+      }
+      x_243 = x_243_phi;
+      const bool x_244 = x_244_phi;
+      x_246_phi = x_243;
+      if (x_244) {
+        break;
+      }
+      x_246_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  x_GLF_color = x_246_phi;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.msl
new file mode 100644
index 0000000..4c8e613
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  tint_array_wrapper x_195 = {};
+  tint_array_wrapper x_196 = {};
+  tint_array_wrapper x_197 = {};
+  int2 x_209 = 0;
+  float4 x_241 = 0.0f;
+  float4 x_243 = 0.0f;
+  int2 x_213_phi = 0;
+  float4 x_243_phi = 0.0f;
+  bool x_244_phi = false;
+  float4 x_246_phi = 0.0f;
+  float4 const x_198 = *(tint_symbol_8);
+  float2 const x_201 = x_6.resolution;
+  float2 const x_202 = (float2(x_198.x, x_198.y) / x_201);
+  x_209 = int2(int((x_202.x * 256.0f)), int((x_202.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_213_phi = x_209;
+      while (true) {
+        bool x_230 = false;
+        bool x_231_phi = false;
+        int2 const x_213 = x_213_phi;
+        int const x_216 = x_213.y;
+        x_243_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_244_phi = false;
+        if ((x_216 != 256)) {
+        } else {
+          break;
+        }
+        int const x_220 = x_213.x;
+        tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+        x_195 = tint_symbol_4;
+        int const x_222 = x_195.arr[x_216];
+        bool const x_224 = (x_220 < (x_222 + 15));
+        x_231_phi = x_224;
+        if (x_224) {
+          tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_196 = tint_symbol_5;
+          int const x_228 = x_196.arr[x_216];
+          x_230 = (x_220 > (x_228 - 15));
+          x_231_phi = x_230;
+        }
+        bool const x_231 = x_231_phi;
+        if (x_231) {
+          tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_197 = tint_symbol_6;
+          int const x_235 = x_197.arr[x_216];
+          float const x_240 = ((15.0f - fabs(float((x_220 - x_235)))) * 0.06666667f);
+          x_241 = float4(x_240, x_240, x_240, 1.0f);
+          x_243_phi = x_241;
+          x_244_phi = true;
+          break;
+        }
+        int2 x_214_1 = x_213;
+        x_214_1.y = (x_216 + 1);
+        int2 const x_214 = x_214_1;
+        {
+          x_213_phi = x_214;
+        }
+      }
+      x_243 = x_243_phi;
+      bool const x_244 = x_244_phi;
+      x_246_phi = x_243;
+      if (x_244) {
+        break;
+      }
+      x_246_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  float4 const x_246 = x_246_phi;
+  *(tint_symbol_9) = x_246;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..4a43cab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.spvasm
@@ -0,0 +1,384 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 292
+; Schema: 0
+               OpCapability Shader
+        %256 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_195 "x_195"
+               OpName %x_196 "x_196"
+               OpName %x_197 "x_197"
+               OpName %x_209 "x_209"
+               OpName %x_241 "x_241"
+               OpName %x_243 "x_243"
+               OpName %x_213_phi "x_213_phi"
+               OpName %x_243_phi "x_243_phi"
+               OpName %x_244_phi "x_244_phi"
+               OpName %x_246_phi "x_246_phi"
+               OpName %x_230 "x_230"
+               OpName %x_231_phi "x_231_phi"
+               OpName %x_214_1 "x_214_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %25 = OpConstantNull %_arr_int_uint_256
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %31 = OpConstantNull %v2int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+    %float_0 = OpConstant %float 0
+         %71 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+    %int_256 = OpConstant %int 256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %236 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function_int = OpTypePointer Function %int
+   %float_15 = OpConstant %float 15
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+        %277 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %279 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %x_195 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_196 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_197 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_209 = OpVariable %_ptr_Function_v2int Function %31
+      %x_241 = OpVariable %_ptr_Function_v4float Function %5
+      %x_243 = OpVariable %_ptr_Function_v4float Function %5
+  %x_213_phi = OpVariable %_ptr_Function_v2int Function %31
+  %x_243_phi = OpVariable %_ptr_Function_v4float Function %5
+  %x_244_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_246_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_230 = OpVariable %_ptr_Function_bool Function %40
+  %x_231_phi = OpVariable %_ptr_Function_bool Function %40
+    %x_214_1 = OpVariable %_ptr_Function_v2int Function %31
+         %42 = OpLoad %v4float %gl_FragCoord
+         %45 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %46 = OpLoad %v2float %45
+         %47 = OpCompositeExtract %float %42 0
+         %48 = OpCompositeExtract %float %42 1
+         %49 = OpCompositeConstruct %v2float %47 %48
+         %50 = OpFDiv %v2float %49 %46
+         %52 = OpCompositeExtract %float %50 0
+         %54 = OpFMul %float %52 %float_256
+         %51 = OpConvertFToS %int %54
+         %56 = OpCompositeExtract %float %50 1
+         %57 = OpFMul %float %56 %float_256
+         %55 = OpConvertFToS %int %57
+         %58 = OpCompositeConstruct %v2int %51 %55
+               OpStore %x_209 %58
+               OpSelectionMerge %59 None
+               OpSwitch %uint_0 %60
+         %60 = OpLabel
+         %61 = OpLoad %v2int %x_209
+               OpStore %x_213_phi %61
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %68 = OpLoad %v2int %x_213_phi
+         %69 = OpCompositeExtract %int %68 1
+               OpStore %x_243_phi %71
+               OpStore %x_244_phi %false
+         %74 = OpINotEqual %bool %69 %int_256
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %63
+         %75 = OpLabel
+         %78 = OpCompositeExtract %int %68 0
+               OpStore %x_195 %236
+        %238 = OpAccessChain %_ptr_Function_int %x_195 %69
+        %239 = OpLoad %int %238
+        %240 = OpIAdd %int %239 %int_15
+        %241 = OpSLessThan %bool %78 %240
+               OpStore %x_231_phi %241
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %242
+        %243 = OpLabel
+               OpStore %x_196 %236
+        %244 = OpAccessChain %_ptr_Function_int %x_196 %69
+        %245 = OpLoad %int %244
+        %246 = OpISub %int %245 %int_15
+        %247 = OpSGreaterThan %bool %78 %246
+               OpStore %x_230 %247
+        %248 = OpLoad %bool %x_230
+               OpStore %x_231_phi %248
+               OpBranch %242
+        %242 = OpLabel
+        %249 = OpLoad %bool %x_231_phi
+               OpSelectionMerge %250 None
+               OpBranchConditional %249 %251 %250
+        %251 = OpLabel
+               OpStore %x_197 %236
+        %252 = OpAccessChain %_ptr_Function_int %x_197 %69
+        %253 = OpLoad %int %252
+        %258 = OpISub %int %78 %253
+        %257 = OpConvertSToF %float %258
+        %255 = OpExtInst %float %256 FAbs %257
+        %259 = OpFSub %float %float_15 %255
+        %261 = OpFMul %float %259 %float_0_0666666701
+        %263 = OpCompositeConstruct %v4float %261 %261 %261 %float_1
+               OpStore %x_241 %263
+        %264 = OpLoad %v4float %x_241
+               OpStore %x_243_phi %264
+               OpStore %x_244_phi %true
+               OpBranch %63
+        %250 = OpLabel
+               OpStore %x_214_1 %68
+        %268 = OpAccessChain %_ptr_Function_int %x_214_1 %uint_1
+        %270 = OpIAdd %int %69 %int_1
+               OpStore %268 %270
+        %271 = OpLoad %v2int %x_214_1
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %x_213_phi %271
+               OpBranch %62
+         %63 = OpLabel
+        %272 = OpLoad %v4float %x_243_phi
+               OpStore %x_243 %272
+        %273 = OpLoad %bool %x_244_phi
+        %274 = OpLoad %v4float %x_243
+               OpStore %x_246_phi %274
+               OpSelectionMerge %275 None
+               OpBranchConditional %273 %276 %275
+        %276 = OpLabel
+               OpBranch %59
+        %275 = OpLabel
+               OpStore %x_246_phi %277
+               OpBranch %59
+         %59 = OpLabel
+        %278 = OpLoad %v4float %x_246_phi
+               OpStore %x_GLF_color %278
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %279
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %283 = OpLabel
+        %284 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %284
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %286 = OpLabel
+        %287 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %287
+        %288 = OpFunctionCall %void %main_1
+        %290 = OpLoad %v4float %x_GLF_color
+        %291 = OpCompositeConstruct %main_out %290
+        %289 = OpFunctionCall %void %tint_symbol_3 %291
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..bdc7096
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.spvasm.expected.wgsl
@@ -0,0 +1,94 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_195 : array<i32, 256>;
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_209 : vec2<i32>;
+  var x_241 : vec4<f32>;
+  var x_243 : vec4<f32>;
+  var x_213_phi : vec2<i32>;
+  var x_243_phi : vec4<f32>;
+  var x_244_phi : bool;
+  var x_246_phi : vec4<f32>;
+  let x_198 : vec4<f32> = gl_FragCoord;
+  let x_201 : vec2<f32> = x_6.resolution;
+  let x_202 : vec2<f32> = (vec2<f32>(x_198.x, x_198.y) / x_201);
+  x_209 = vec2<i32>(i32((x_202.x * 256.0)), i32((x_202.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_213_phi = x_209;
+      loop {
+        var x_230 : bool;
+        var x_231_phi : bool;
+        let x_213 : vec2<i32> = x_213_phi;
+        let x_216 : i32 = x_213.y;
+        x_243_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_244_phi = false;
+        if ((x_216 != 256)) {
+        } else {
+          break;
+        }
+        let x_220 : i32 = x_213.x;
+        x_195 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_222 : i32 = x_195[x_216];
+        let x_224 : bool = (x_220 < (x_222 + 15));
+        x_231_phi = x_224;
+        if (x_224) {
+          x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_228 : i32 = x_196[x_216];
+          x_230 = (x_220 > (x_228 - 15));
+          x_231_phi = x_230;
+        }
+        let x_231 : bool = x_231_phi;
+        if (x_231) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_235 : i32 = x_197[x_216];
+          let x_240 : f32 = ((15.0 - abs(f32((x_220 - x_235)))) * 0.06666667);
+          x_241 = vec4<f32>(x_240, x_240, x_240, 1.0);
+          x_243_phi = x_241;
+          x_244_phi = true;
+          break;
+        }
+        var x_214_1 : vec2<i32> = x_213;
+        x_214_1.y = (x_216 + 1);
+        let x_214 : vec2<i32> = x_214_1;
+
+        continuing {
+          x_213_phi = x_214;
+        }
+      }
+      x_243 = x_243_phi;
+      let x_244 : bool = x_244_phi;
+      x_246_phi = x_243;
+      if (x_244) {
+        break;
+      }
+      x_246_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_246 : vec4<f32> = x_246_phi;
+  x_GLF_color = x_246;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
new file mode 100644
index 0000000..bdc7096
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
@@ -0,0 +1,94 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_195 : array<i32, 256>;
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_209 : vec2<i32>;
+  var x_241 : vec4<f32>;
+  var x_243 : vec4<f32>;
+  var x_213_phi : vec2<i32>;
+  var x_243_phi : vec4<f32>;
+  var x_244_phi : bool;
+  var x_246_phi : vec4<f32>;
+  let x_198 : vec4<f32> = gl_FragCoord;
+  let x_201 : vec2<f32> = x_6.resolution;
+  let x_202 : vec2<f32> = (vec2<f32>(x_198.x, x_198.y) / x_201);
+  x_209 = vec2<i32>(i32((x_202.x * 256.0)), i32((x_202.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_213_phi = x_209;
+      loop {
+        var x_230 : bool;
+        var x_231_phi : bool;
+        let x_213 : vec2<i32> = x_213_phi;
+        let x_216 : i32 = x_213.y;
+        x_243_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_244_phi = false;
+        if ((x_216 != 256)) {
+        } else {
+          break;
+        }
+        let x_220 : i32 = x_213.x;
+        x_195 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_222 : i32 = x_195[x_216];
+        let x_224 : bool = (x_220 < (x_222 + 15));
+        x_231_phi = x_224;
+        if (x_224) {
+          x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_228 : i32 = x_196[x_216];
+          x_230 = (x_220 > (x_228 - 15));
+          x_231_phi = x_230;
+        }
+        let x_231 : bool = x_231_phi;
+        if (x_231) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_235 : i32 = x_197[x_216];
+          let x_240 : f32 = ((15.0 - abs(f32((x_220 - x_235)))) * 0.06666667);
+          x_241 = vec4<f32>(x_240, x_240, x_240, 1.0);
+          x_243_phi = x_241;
+          x_244_phi = true;
+          break;
+        }
+        var x_214_1 : vec2<i32> = x_213;
+        x_214_1.y = (x_216 + 1);
+        let x_214 : vec2<i32> = x_214_1;
+
+        continuing {
+          x_213_phi = x_214;
+        }
+      }
+      x_243 = x_243_phi;
+      let x_244 : bool = x_244_phi;
+      x_246_phi = x_243;
+      if (x_244) {
+        break;
+      }
+      x_246_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_246 : vec4<f32> = x_246_phi;
+  x_GLF_color = x_246;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..cd5825d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.hlsl
@@ -0,0 +1,97 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_195[256] = (int[256])0;
+  int x_196[256] = (int[256])0;
+  int x_197[256] = (int[256])0;
+  int2 x_209 = int2(0, 0);
+  float4 x_241 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_243 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int2 x_213_phi = int2(0, 0);
+  float4 x_243_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_244_phi = false;
+  float4 x_246_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float4 x_198 = gl_FragCoord;
+  const float2 x_201 = asfloat(x_6[0].xy);
+  const float2 x_202 = (float2(x_198.x, x_198.y) / x_201);
+  x_209 = int2(int((x_202.x * 256.0f)), int((x_202.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_213_phi = x_209;
+      while (true) {
+        bool x_230 = false;
+        bool x_231_phi = false;
+        const int2 x_213 = x_213_phi;
+        const int x_216 = x_213.y;
+        x_243_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_244_phi = false;
+        if ((x_216 != 256)) {
+        } else {
+          break;
+        }
+        const int x_220 = x_213.x;
+        const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+        x_195 = tint_symbol_5;
+        const int x_222 = x_195[x_216];
+        const bool x_224 = (x_220 < (x_222 + 15));
+        x_231_phi = x_224;
+        if (x_224) {
+          const int tint_symbol_6[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_196 = tint_symbol_6;
+          const int x_228 = x_196[x_216];
+          x_230 = (x_220 > (x_228 - 15));
+          x_231_phi = x_230;
+        }
+        if (x_231_phi) {
+          const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_197 = tint_symbol_7;
+          const int x_235 = x_197[x_216];
+          const float x_240 = ((15.0f - abs(float((x_220 - x_235)))) * 0.06666667f);
+          x_241 = float4(x_240, x_240, x_240, 1.0f);
+          x_243_phi = x_241;
+          x_244_phi = true;
+          break;
+        }
+        int2 x_214_1 = x_213;
+        x_214_1.y = (x_216 + 1);
+        const int2 x_214 = x_214_1;
+        {
+          x_213_phi = x_214;
+        }
+      }
+      x_243 = x_243_phi;
+      const bool x_244 = x_244_phi;
+      x_246_phi = x_243;
+      if (x_244) {
+        break;
+      }
+      x_246_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  x_GLF_color = x_246_phi;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.msl
new file mode 100644
index 0000000..4c8e613
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.msl
@@ -0,0 +1,101 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  tint_array_wrapper x_195 = {};
+  tint_array_wrapper x_196 = {};
+  tint_array_wrapper x_197 = {};
+  int2 x_209 = 0;
+  float4 x_241 = 0.0f;
+  float4 x_243 = 0.0f;
+  int2 x_213_phi = 0;
+  float4 x_243_phi = 0.0f;
+  bool x_244_phi = false;
+  float4 x_246_phi = 0.0f;
+  float4 const x_198 = *(tint_symbol_8);
+  float2 const x_201 = x_6.resolution;
+  float2 const x_202 = (float2(x_198.x, x_198.y) / x_201);
+  x_209 = int2(int((x_202.x * 256.0f)), int((x_202.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_213_phi = x_209;
+      while (true) {
+        bool x_230 = false;
+        bool x_231_phi = false;
+        int2 const x_213 = x_213_phi;
+        int const x_216 = x_213.y;
+        x_243_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_244_phi = false;
+        if ((x_216 != 256)) {
+        } else {
+          break;
+        }
+        int const x_220 = x_213.x;
+        tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+        x_195 = tint_symbol_4;
+        int const x_222 = x_195.arr[x_216];
+        bool const x_224 = (x_220 < (x_222 + 15));
+        x_231_phi = x_224;
+        if (x_224) {
+          tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_196 = tint_symbol_5;
+          int const x_228 = x_196.arr[x_216];
+          x_230 = (x_220 > (x_228 - 15));
+          x_231_phi = x_230;
+        }
+        bool const x_231 = x_231_phi;
+        if (x_231) {
+          tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_197 = tint_symbol_6;
+          int const x_235 = x_197.arr[x_216];
+          float const x_240 = ((15.0f - fabs(float((x_220 - x_235)))) * 0.06666667f);
+          x_241 = float4(x_240, x_240, x_240, 1.0f);
+          x_243_phi = x_241;
+          x_244_phi = true;
+          break;
+        }
+        int2 x_214_1 = x_213;
+        x_214_1.y = (x_216 + 1);
+        int2 const x_214 = x_214_1;
+        {
+          x_213_phi = x_214;
+        }
+      }
+      x_243 = x_243_phi;
+      bool const x_244 = x_244_phi;
+      x_246_phi = x_243;
+      if (x_244) {
+        break;
+      }
+      x_246_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  float4 const x_246 = x_246_phi;
+  *(tint_symbol_9) = x_246;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..4a43cab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.spvasm
@@ -0,0 +1,384 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 292
+; Schema: 0
+               OpCapability Shader
+        %256 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_195 "x_195"
+               OpName %x_196 "x_196"
+               OpName %x_197 "x_197"
+               OpName %x_209 "x_209"
+               OpName %x_241 "x_241"
+               OpName %x_243 "x_243"
+               OpName %x_213_phi "x_213_phi"
+               OpName %x_243_phi "x_243_phi"
+               OpName %x_244_phi "x_244_phi"
+               OpName %x_246_phi "x_246_phi"
+               OpName %x_230 "x_230"
+               OpName %x_231_phi "x_231_phi"
+               OpName %x_214_1 "x_214_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %25 = OpConstantNull %_arr_int_uint_256
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %31 = OpConstantNull %v2int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+    %float_0 = OpConstant %float 0
+         %71 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+    %int_256 = OpConstant %int 256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %236 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function_int = OpTypePointer Function %int
+   %float_15 = OpConstant %float 15
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+        %277 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %279 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %x_195 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_196 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_197 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_209 = OpVariable %_ptr_Function_v2int Function %31
+      %x_241 = OpVariable %_ptr_Function_v4float Function %5
+      %x_243 = OpVariable %_ptr_Function_v4float Function %5
+  %x_213_phi = OpVariable %_ptr_Function_v2int Function %31
+  %x_243_phi = OpVariable %_ptr_Function_v4float Function %5
+  %x_244_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_246_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_230 = OpVariable %_ptr_Function_bool Function %40
+  %x_231_phi = OpVariable %_ptr_Function_bool Function %40
+    %x_214_1 = OpVariable %_ptr_Function_v2int Function %31
+         %42 = OpLoad %v4float %gl_FragCoord
+         %45 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %46 = OpLoad %v2float %45
+         %47 = OpCompositeExtract %float %42 0
+         %48 = OpCompositeExtract %float %42 1
+         %49 = OpCompositeConstruct %v2float %47 %48
+         %50 = OpFDiv %v2float %49 %46
+         %52 = OpCompositeExtract %float %50 0
+         %54 = OpFMul %float %52 %float_256
+         %51 = OpConvertFToS %int %54
+         %56 = OpCompositeExtract %float %50 1
+         %57 = OpFMul %float %56 %float_256
+         %55 = OpConvertFToS %int %57
+         %58 = OpCompositeConstruct %v2int %51 %55
+               OpStore %x_209 %58
+               OpSelectionMerge %59 None
+               OpSwitch %uint_0 %60
+         %60 = OpLabel
+         %61 = OpLoad %v2int %x_209
+               OpStore %x_213_phi %61
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %68 = OpLoad %v2int %x_213_phi
+         %69 = OpCompositeExtract %int %68 1
+               OpStore %x_243_phi %71
+               OpStore %x_244_phi %false
+         %74 = OpINotEqual %bool %69 %int_256
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %63
+         %75 = OpLabel
+         %78 = OpCompositeExtract %int %68 0
+               OpStore %x_195 %236
+        %238 = OpAccessChain %_ptr_Function_int %x_195 %69
+        %239 = OpLoad %int %238
+        %240 = OpIAdd %int %239 %int_15
+        %241 = OpSLessThan %bool %78 %240
+               OpStore %x_231_phi %241
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %242
+        %243 = OpLabel
+               OpStore %x_196 %236
+        %244 = OpAccessChain %_ptr_Function_int %x_196 %69
+        %245 = OpLoad %int %244
+        %246 = OpISub %int %245 %int_15
+        %247 = OpSGreaterThan %bool %78 %246
+               OpStore %x_230 %247
+        %248 = OpLoad %bool %x_230
+               OpStore %x_231_phi %248
+               OpBranch %242
+        %242 = OpLabel
+        %249 = OpLoad %bool %x_231_phi
+               OpSelectionMerge %250 None
+               OpBranchConditional %249 %251 %250
+        %251 = OpLabel
+               OpStore %x_197 %236
+        %252 = OpAccessChain %_ptr_Function_int %x_197 %69
+        %253 = OpLoad %int %252
+        %258 = OpISub %int %78 %253
+        %257 = OpConvertSToF %float %258
+        %255 = OpExtInst %float %256 FAbs %257
+        %259 = OpFSub %float %float_15 %255
+        %261 = OpFMul %float %259 %float_0_0666666701
+        %263 = OpCompositeConstruct %v4float %261 %261 %261 %float_1
+               OpStore %x_241 %263
+        %264 = OpLoad %v4float %x_241
+               OpStore %x_243_phi %264
+               OpStore %x_244_phi %true
+               OpBranch %63
+        %250 = OpLabel
+               OpStore %x_214_1 %68
+        %268 = OpAccessChain %_ptr_Function_int %x_214_1 %uint_1
+        %270 = OpIAdd %int %69 %int_1
+               OpStore %268 %270
+        %271 = OpLoad %v2int %x_214_1
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %x_213_phi %271
+               OpBranch %62
+         %63 = OpLabel
+        %272 = OpLoad %v4float %x_243_phi
+               OpStore %x_243 %272
+        %273 = OpLoad %bool %x_244_phi
+        %274 = OpLoad %v4float %x_243
+               OpStore %x_246_phi %274
+               OpSelectionMerge %275 None
+               OpBranchConditional %273 %276 %275
+        %276 = OpLabel
+               OpBranch %59
+        %275 = OpLabel
+               OpStore %x_246_phi %277
+               OpBranch %59
+         %59 = OpLabel
+        %278 = OpLoad %v4float %x_246_phi
+               OpStore %x_GLF_color %278
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %279
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %283 = OpLabel
+        %284 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %284
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %286 = OpLabel
+        %287 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %287
+        %288 = OpFunctionCall %void %main_1
+        %290 = OpLoad %v4float %x_GLF_color
+        %291 = OpCompositeConstruct %main_out %290
+        %289 = OpFunctionCall %void %tint_symbol_3 %291
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..bdc7096
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl.expected.wgsl
@@ -0,0 +1,94 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_195 : array<i32, 256>;
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_209 : vec2<i32>;
+  var x_241 : vec4<f32>;
+  var x_243 : vec4<f32>;
+  var x_213_phi : vec2<i32>;
+  var x_243_phi : vec4<f32>;
+  var x_244_phi : bool;
+  var x_246_phi : vec4<f32>;
+  let x_198 : vec4<f32> = gl_FragCoord;
+  let x_201 : vec2<f32> = x_6.resolution;
+  let x_202 : vec2<f32> = (vec2<f32>(x_198.x, x_198.y) / x_201);
+  x_209 = vec2<i32>(i32((x_202.x * 256.0)), i32((x_202.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_213_phi = x_209;
+      loop {
+        var x_230 : bool;
+        var x_231_phi : bool;
+        let x_213 : vec2<i32> = x_213_phi;
+        let x_216 : i32 = x_213.y;
+        x_243_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_244_phi = false;
+        if ((x_216 != 256)) {
+        } else {
+          break;
+        }
+        let x_220 : i32 = x_213.x;
+        x_195 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_222 : i32 = x_195[x_216];
+        let x_224 : bool = (x_220 < (x_222 + 15));
+        x_231_phi = x_224;
+        if (x_224) {
+          x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_228 : i32 = x_196[x_216];
+          x_230 = (x_220 > (x_228 - 15));
+          x_231_phi = x_230;
+        }
+        let x_231 : bool = x_231_phi;
+        if (x_231) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_235 : i32 = x_197[x_216];
+          let x_240 : f32 = ((15.0 - abs(f32((x_220 - x_235)))) * 0.06666667);
+          x_241 = vec4<f32>(x_240, x_240, x_240, 1.0);
+          x_243_phi = x_241;
+          x_244_phi = true;
+          break;
+        }
+        var x_214_1 : vec2<i32> = x_213;
+        x_214_1.y = (x_216 + 1);
+        let x_214 : vec2<i32> = x_214_1;
+
+        continuing {
+          x_213_phi = x_214;
+        }
+      }
+      x_243 = x_243_phi;
+      let x_244 : bool = x_244_phi;
+      x_246_phi = x_243;
+      if (x_244) {
+        break;
+      }
+      x_246_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_246 : vec4<f32> = x_246_phi;
+  x_GLF_color = x_246;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm
new file mode 100644
index 0000000..80382f4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm
@@ -0,0 +1,293 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %177 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %183 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+        %192 = OpUndef %v4float
+%float_0_0666666701 = OpConstant %float 0.0666666701
+       %main = OpFunction %void None %8
+        %194 = OpLabel
+        %195 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %196 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %197 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %198 = OpLoad %v4float %gl_FragCoord
+        %199 = OpVectorShuffle %v2float %198 %198 0 1
+        %200 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %201 = OpLoad %v2float %200
+        %202 = OpFDiv %v2float %199 %201
+        %203 = OpCompositeConstruct %v4float %201 %float_15 %float_15
+        %204 = OpSNegate %int %int_82
+        %205 = OpCompositeExtract %float %202 0
+        %206 = OpFMul %float %205 %float_256
+        %207 = OpCompositeExtract %float %203 2
+        %208 = OpCompositeConstruct %v2float %float_0 %207
+        %209 = OpISub %int %int_120 %int_0
+        %210 = OpConvertFToS %int %206
+        %211 = OpCompositeExtract %float %202 1
+        %212 = OpFMul %float %211 %float_256
+        %213 = OpConvertFToS %int %212
+        %214 = OpCompositeConstruct %v2int %210 %213
+               OpSelectionMerge %215 None
+               OpSwitch %uint_0 %216
+        %216 = OpLabel
+               OpBranch %217
+        %217 = OpLabel
+        %218 = OpPhi %v2int %214 %216 %219 %220
+        %221 = OpCompositeExtract %int %218 1
+        %222 = OpINotEqual %bool %221 %int_256
+               OpLoopMerge %223 %220 None
+               OpBranchConditional %222 %224 %223
+        %224 = OpLabel
+        %225 = OpCompositeExtract %int %218 0
+               OpStore %195 %177
+        %226 = OpAccessChain %_ptr_Function_int %195 %221
+        %227 = OpLoad %int %226
+        %228 = OpIAdd %int %227 %int_15
+        %229 = OpSLessThan %bool %225 %228
+               OpSelectionMerge %230 None
+               OpBranchConditional %229 %231 %230
+        %231 = OpLabel
+               OpStore %196 %177
+        %232 = OpAccessChain %_ptr_Function_int %196 %221
+        %233 = OpLoad %int %232
+        %234 = OpISub %int %233 %int_15
+        %235 = OpSGreaterThan %bool %225 %234
+               OpBranch %230
+        %230 = OpLabel
+        %236 = OpPhi %bool %229 %224 %235 %231
+               OpSelectionMerge %237 None
+               OpBranchConditional %236 %238 %237
+        %238 = OpLabel
+               OpStore %197 %177
+        %239 = OpAccessChain %_ptr_Function_int %197 %221
+        %240 = OpLoad %int %239
+        %241 = OpISub %int %225 %240
+        %242 = OpConvertSToF %float %241
+        %243 = OpCompositeConstruct %buf0 %208
+        %244 = OpIAdd %int %int_91 %int_244
+        %245 = OpExtInst %float %1 FAbs %242
+        %246 = OpCompositeExtract %float %243 0 1
+        %247 = OpFSub %float %246 %245
+        %248 = OpFMul %float %247 %float_0_0666666701
+        %249 = OpCompositeConstruct %v4float %248 %248 %248 %float_1
+               OpBranch %223
+        %237 = OpLabel
+        %250 = OpIAdd %int %221 %int_1
+        %219 = OpCompositeInsert %v2int %250 %218 1
+               OpBranch %220
+        %220 = OpLabel
+               OpBranch %217
+        %223 = OpLabel
+        %251 = OpPhi %v4float %192 %217 %249 %238
+        %252 = OpPhi %bool %false %217 %true %238
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %215 %253
+        %253 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %254 = OpPhi %v4float %251 %223 %183 %253
+               OpStore %_GLF_color %254
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.hlsl
new file mode 100755
index 0000000..6f779cc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.hlsl
@@ -0,0 +1,10 @@
+SKIP: FAILED
+
+..\..\src\writer\hlsl\generator_impl.cc:3099 internal compiler error: unhandled struct member attribute: offset
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.msl
new file mode 100644
index 0000000..805d16d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  tint_array_wrapper x_195 = {};
+  tint_array_wrapper x_196 = {};
+  tint_array_wrapper x_197 = {};
+  float2 x_208 = 0.0f;
+  int2 x_214 = 0;
+  float4 x_249 = 0.0f;
+  float4 x_251 = 0.0f;
+  int2 x_218_phi = 0;
+  float4 x_251_phi = 0.0f;
+  bool x_252_phi = false;
+  float4 x_254_phi = 0.0f;
+  float4 const x_198 = *(tint_symbol_9);
+  float2 const x_201 = x_6.resolution;
+  float2 const x_202 = (float2(x_198.x, x_198.y) / x_201);
+  int const x_204 = -(82);
+  x_208 = float2(0.0f, float4(x_201, 15.0f, 15.0f).z);
+  int const x_209 = (120 - 0);
+  x_214 = int2(int((x_202.x * 256.0f)), int((x_202.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_218_phi = x_214;
+      while (true) {
+        bool x_235 = false;
+        bool x_236_phi = false;
+        int2 const x_218 = x_218_phi;
+        int const x_221 = x_218.y;
+        x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_252_phi = false;
+        if ((x_221 != 256)) {
+        } else {
+          break;
+        }
+        int const x_225 = x_218.x;
+        tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+        x_195 = tint_symbol_4;
+        int const x_227 = x_195.arr[x_221];
+        bool const x_229 = (x_225 < (x_227 + 15));
+        x_236_phi = x_229;
+        if (x_229) {
+          tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_196 = tint_symbol_5;
+          int const x_233 = x_196.arr[x_221];
+          x_235 = (x_225 > (x_233 - 15));
+          x_236_phi = x_235;
+        }
+        bool const x_236 = x_236_phi;
+        if (x_236) {
+          tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_197 = tint_symbol_6;
+          int const x_240 = x_197.arr[x_221];
+          int const x_244 = (91 + 244);
+          buf0 const tint_symbol_7 = {.resolution=x_208};
+          float const x_248 = ((tint_symbol_7.resolution.y - fabs(float((x_225 - x_240)))) * 0.06666667f);
+          x_249 = float4(x_248, x_248, x_248, 1.0f);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        int2 x_219_1 = x_218;
+        x_219_1.y = (x_221 + 1);
+        int2 const x_219 = x_219_1;
+        {
+          x_218_phi = x_219;
+        }
+      }
+      x_251 = x_251_phi;
+      bool const x_252 = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  float4 const x_254 = x_254_phi;
+  *(tint_symbol_10) = x_254;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..8f758b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.spvasm
@@ -0,0 +1,401 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 307
+; Schema: 0
+               OpCapability Shader
+        %271 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_195 "x_195"
+               OpName %x_196 "x_196"
+               OpName %x_197 "x_197"
+               OpName %x_208 "x_208"
+               OpName %x_214 "x_214"
+               OpName %x_249 "x_249"
+               OpName %x_251 "x_251"
+               OpName %x_218_phi "x_218_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_252_phi "x_252_phi"
+               OpName %x_254_phi "x_254_phi"
+               OpName %x_235 "x_235"
+               OpName %x_236_phi "x_236_phi"
+               OpName %x_219_1 "x_219_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %25 = OpConstantNull %_arr_int_uint_256
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %30 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %34 = OpConstantNull %v2int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %43 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+     %int_82 = OpConstant %int 82
+    %float_0 = OpConstant %float 0
+   %float_15 = OpConstant %float 15
+    %int_120 = OpConstant %int 120
+      %int_0 = OpConstant %int 0
+  %float_256 = OpConstant %float 256
+         %85 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+    %int_256 = OpConstant %int 256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %247 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function_int = OpTypePointer Function %int
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+        %292 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %294 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %x_195 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_196 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_197 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_208 = OpVariable %_ptr_Function_v2float Function %30
+      %x_214 = OpVariable %_ptr_Function_v2int Function %34
+      %x_249 = OpVariable %_ptr_Function_v4float Function %5
+      %x_251 = OpVariable %_ptr_Function_v4float Function %5
+  %x_218_phi = OpVariable %_ptr_Function_v2int Function %34
+  %x_251_phi = OpVariable %_ptr_Function_v4float Function %5
+  %x_252_phi = OpVariable %_ptr_Function_bool Function %43
+  %x_254_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_235 = OpVariable %_ptr_Function_bool Function %43
+  %x_236_phi = OpVariable %_ptr_Function_bool Function %43
+    %x_219_1 = OpVariable %_ptr_Function_v2int Function %34
+         %45 = OpLoad %v4float %gl_FragCoord
+         %48 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %49 = OpLoad %v2float %48
+         %50 = OpCompositeExtract %float %45 0
+         %51 = OpCompositeExtract %float %45 1
+         %52 = OpCompositeConstruct %v2float %50 %51
+         %53 = OpFDiv %v2float %52 %49
+         %54 = OpSNegate %int %int_82
+         %57 = OpCompositeExtract %float %49 0
+         %58 = OpCompositeExtract %float %49 1
+         %60 = OpCompositeConstruct %v4float %57 %58 %float_15 %float_15
+         %61 = OpCompositeExtract %float %60 2
+         %62 = OpCompositeConstruct %v2float %float_0 %61
+               OpStore %x_208 %62
+         %65 = OpISub %int %int_120 %int_0
+         %67 = OpCompositeExtract %float %53 0
+         %69 = OpFMul %float %67 %float_256
+         %66 = OpConvertFToS %int %69
+         %71 = OpCompositeExtract %float %53 1
+         %72 = OpFMul %float %71 %float_256
+         %70 = OpConvertFToS %int %72
+         %73 = OpCompositeConstruct %v2int %66 %70
+               OpStore %x_214 %73
+               OpSelectionMerge %74 None
+               OpSwitch %uint_0 %75
+         %75 = OpLabel
+         %76 = OpLoad %v2int %x_214
+               OpStore %x_218_phi %76
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+         %83 = OpLoad %v2int %x_218_phi
+         %84 = OpCompositeExtract %int %83 1
+               OpStore %x_251_phi %85
+               OpStore %x_252_phi %false
+         %88 = OpINotEqual %bool %84 %int_256
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+               OpBranch %89
+         %91 = OpLabel
+               OpBranch %78
+         %89 = OpLabel
+         %92 = OpCompositeExtract %int %83 0
+               OpStore %x_195 %247
+        %249 = OpAccessChain %_ptr_Function_int %x_195 %84
+        %250 = OpLoad %int %249
+        %251 = OpIAdd %int %250 %int_15
+        %252 = OpSLessThan %bool %92 %251
+               OpStore %x_236_phi %252
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %254 %253
+        %254 = OpLabel
+               OpStore %x_196 %247
+        %255 = OpAccessChain %_ptr_Function_int %x_196 %84
+        %256 = OpLoad %int %255
+        %257 = OpISub %int %256 %int_15
+        %258 = OpSGreaterThan %bool %92 %257
+               OpStore %x_235 %258
+        %259 = OpLoad %bool %x_235
+               OpStore %x_236_phi %259
+               OpBranch %253
+        %253 = OpLabel
+        %260 = OpLoad %bool %x_236_phi
+               OpSelectionMerge %261 None
+               OpBranchConditional %260 %262 %261
+        %262 = OpLabel
+               OpStore %x_197 %247
+        %263 = OpAccessChain %_ptr_Function_int %x_197 %84
+        %264 = OpLoad %int %263
+        %265 = OpIAdd %int %int_91 %int_244
+        %266 = OpLoad %v2float %x_208
+        %267 = OpCompositeConstruct %buf0 %266
+        %268 = OpCompositeExtract %v2float %267 0
+        %269 = OpCompositeExtract %float %268 1
+        %273 = OpISub %int %92 %264
+        %272 = OpConvertSToF %float %273
+        %270 = OpExtInst %float %271 FAbs %272
+        %274 = OpFSub %float %269 %270
+        %276 = OpFMul %float %274 %float_0_0666666701
+        %278 = OpCompositeConstruct %v4float %276 %276 %276 %float_1
+               OpStore %x_249 %278
+        %279 = OpLoad %v4float %x_249
+               OpStore %x_251_phi %279
+               OpStore %x_252_phi %true
+               OpBranch %78
+        %261 = OpLabel
+               OpStore %x_219_1 %83
+        %283 = OpAccessChain %_ptr_Function_int %x_219_1 %uint_1
+        %285 = OpIAdd %int %84 %int_1
+               OpStore %283 %285
+        %286 = OpLoad %v2int %x_219_1
+               OpBranch %79
+         %79 = OpLabel
+               OpStore %x_218_phi %286
+               OpBranch %77
+         %78 = OpLabel
+        %287 = OpLoad %v4float %x_251_phi
+               OpStore %x_251 %287
+        %288 = OpLoad %bool %x_252_phi
+        %289 = OpLoad %v4float %x_251
+               OpStore %x_254_phi %289
+               OpSelectionMerge %290 None
+               OpBranchConditional %288 %291 %290
+        %291 = OpLabel
+               OpBranch %74
+        %290 = OpLabel
+               OpStore %x_254_phi %292
+               OpBranch %74
+         %74 = OpLabel
+        %293 = OpLoad %v4float %x_254_phi
+               OpStore %x_GLF_color %293
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %294
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %298 = OpLabel
+        %299 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %299
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %301 = OpLabel
+        %302 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %302
+        %303 = OpFunctionCall %void %main_1
+        %305 = OpLoad %v4float %x_GLF_color
+        %306 = OpCompositeConstruct %main_out %305
+        %304 = OpFunctionCall %void %tint_symbol_3 %306
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..a8a9633
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.spvasm.expected.wgsl
@@ -0,0 +1,99 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_195 : array<i32, 256>;
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_208 : vec2<f32>;
+  var x_214 : vec2<i32>;
+  var x_249 : vec4<f32>;
+  var x_251 : vec4<f32>;
+  var x_218_phi : vec2<i32>;
+  var x_251_phi : vec4<f32>;
+  var x_252_phi : bool;
+  var x_254_phi : vec4<f32>;
+  let x_198 : vec4<f32> = gl_FragCoord;
+  let x_201 : vec2<f32> = x_6.resolution;
+  let x_202 : vec2<f32> = (vec2<f32>(x_198.x, x_198.y) / x_201);
+  let x_204 : i32 = -(82);
+  x_208 = vec2<f32>(0.0, vec4<f32>(x_201, 15.0, 15.0).z);
+  let x_209 : i32 = (120 - 0);
+  x_214 = vec2<i32>(i32((x_202.x * 256.0)), i32((x_202.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_218_phi = x_214;
+      loop {
+        var x_235 : bool;
+        var x_236_phi : bool;
+        let x_218 : vec2<i32> = x_218_phi;
+        let x_221 : i32 = x_218.y;
+        x_251_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_252_phi = false;
+        if ((x_221 != 256)) {
+        } else {
+          break;
+        }
+        let x_225 : i32 = x_218.x;
+        x_195 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_227 : i32 = x_195[x_221];
+        let x_229 : bool = (x_225 < (x_227 + 15));
+        x_236_phi = x_229;
+        if (x_229) {
+          x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_233 : i32 = x_196[x_221];
+          x_235 = (x_225 > (x_233 - 15));
+          x_236_phi = x_235;
+        }
+        let x_236 : bool = x_236_phi;
+        if (x_236) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_240 : i32 = x_197[x_221];
+          let x_244 : i32 = (91 + 244);
+          let x_248 : f32 = ((buf0(x_208).resolution.y - abs(f32((x_225 - x_240)))) * 0.06666667);
+          x_249 = vec4<f32>(x_248, x_248, x_248, 1.0);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        var x_219_1 : vec2<i32> = x_218;
+        x_219_1.y = (x_221 + 1);
+        let x_219 : vec2<i32> = x_219_1;
+
+        continuing {
+          x_218_phi = x_219;
+        }
+      }
+      x_251 = x_251_phi;
+      let x_252 : bool = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_254 : vec4<f32> = x_254_phi;
+  x_GLF_color = x_254;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
new file mode 100644
index 0000000..a8a9633
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
@@ -0,0 +1,99 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_195 : array<i32, 256>;
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_208 : vec2<f32>;
+  var x_214 : vec2<i32>;
+  var x_249 : vec4<f32>;
+  var x_251 : vec4<f32>;
+  var x_218_phi : vec2<i32>;
+  var x_251_phi : vec4<f32>;
+  var x_252_phi : bool;
+  var x_254_phi : vec4<f32>;
+  let x_198 : vec4<f32> = gl_FragCoord;
+  let x_201 : vec2<f32> = x_6.resolution;
+  let x_202 : vec2<f32> = (vec2<f32>(x_198.x, x_198.y) / x_201);
+  let x_204 : i32 = -(82);
+  x_208 = vec2<f32>(0.0, vec4<f32>(x_201, 15.0, 15.0).z);
+  let x_209 : i32 = (120 - 0);
+  x_214 = vec2<i32>(i32((x_202.x * 256.0)), i32((x_202.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_218_phi = x_214;
+      loop {
+        var x_235 : bool;
+        var x_236_phi : bool;
+        let x_218 : vec2<i32> = x_218_phi;
+        let x_221 : i32 = x_218.y;
+        x_251_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_252_phi = false;
+        if ((x_221 != 256)) {
+        } else {
+          break;
+        }
+        let x_225 : i32 = x_218.x;
+        x_195 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_227 : i32 = x_195[x_221];
+        let x_229 : bool = (x_225 < (x_227 + 15));
+        x_236_phi = x_229;
+        if (x_229) {
+          x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_233 : i32 = x_196[x_221];
+          x_235 = (x_225 > (x_233 - 15));
+          x_236_phi = x_235;
+        }
+        let x_236 : bool = x_236_phi;
+        if (x_236) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_240 : i32 = x_197[x_221];
+          let x_244 : i32 = (91 + 244);
+          let x_248 : f32 = ((buf0(x_208).resolution.y - abs(f32((x_225 - x_240)))) * 0.06666667);
+          x_249 = vec4<f32>(x_248, x_248, x_248, 1.0);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        var x_219_1 : vec2<i32> = x_218;
+        x_219_1.y = (x_221 + 1);
+        let x_219 : vec2<i32> = x_219_1;
+
+        continuing {
+          x_218_phi = x_219;
+        }
+      }
+      x_251 = x_251_phi;
+      let x_252 : bool = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_254 : vec4<f32> = x_254_phi;
+  x_GLF_color = x_254;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..0e4020b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.hlsl
@@ -0,0 +1,107 @@
+struct buf0 {
+  float2 resolution;
+};
+
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_195[256] = (int[256])0;
+  int x_196[256] = (int[256])0;
+  int x_197[256] = (int[256])0;
+  float2 x_208 = float2(0.0f, 0.0f);
+  int2 x_214 = int2(0, 0);
+  float4 x_249 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_251 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int2 x_218_phi = int2(0, 0);
+  float4 x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_252_phi = false;
+  float4 x_254_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float4 x_198 = gl_FragCoord;
+  const float2 x_201 = asfloat(x_6[0].xy);
+  const float2 x_202 = (float2(x_198.x, x_198.y) / x_201);
+  const int x_204 = -(82);
+  x_208 = float2(0.0f, float4(x_201, 15.0f, 15.0f).z);
+  const int x_209 = (120 - 0);
+  x_214 = int2(int((x_202.x * 256.0f)), int((x_202.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_218_phi = x_214;
+      while (true) {
+        bool x_235 = false;
+        bool x_236_phi = false;
+        const int2 x_218 = x_218_phi;
+        const int x_221 = x_218.y;
+        x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_252_phi = false;
+        if ((x_221 != 256)) {
+        } else {
+          break;
+        }
+        const int x_225 = x_218.x;
+        const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+        x_195 = tint_symbol_5;
+        const int x_227 = x_195[x_221];
+        const bool x_229 = (x_225 < (x_227 + 15));
+        x_236_phi = x_229;
+        if (x_229) {
+          const int tint_symbol_6[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_196 = tint_symbol_6;
+          const int x_233 = x_196[x_221];
+          x_235 = (x_225 > (x_233 - 15));
+          x_236_phi = x_235;
+        }
+        if (x_236_phi) {
+          const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_197 = tint_symbol_7;
+          const int x_240 = x_197[x_221];
+          const int x_244 = (91 + 244);
+          const buf0 tint_symbol_8 = {x_208};
+          const float x_248 = ((tint_symbol_8.resolution.y - abs(float((x_225 - x_240)))) * 0.06666667f);
+          x_249 = float4(x_248, x_248, x_248, 1.0f);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        int2 x_219_1 = x_218;
+        x_219_1.y = (x_221 + 1);
+        const int2 x_219 = x_219_1;
+        {
+          x_218_phi = x_219;
+        }
+      }
+      x_251 = x_251_phi;
+      const bool x_252 = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  x_GLF_color = x_254_phi;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.msl
new file mode 100644
index 0000000..805d16d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.msl
@@ -0,0 +1,107 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  tint_array_wrapper x_195 = {};
+  tint_array_wrapper x_196 = {};
+  tint_array_wrapper x_197 = {};
+  float2 x_208 = 0.0f;
+  int2 x_214 = 0;
+  float4 x_249 = 0.0f;
+  float4 x_251 = 0.0f;
+  int2 x_218_phi = 0;
+  float4 x_251_phi = 0.0f;
+  bool x_252_phi = false;
+  float4 x_254_phi = 0.0f;
+  float4 const x_198 = *(tint_symbol_9);
+  float2 const x_201 = x_6.resolution;
+  float2 const x_202 = (float2(x_198.x, x_198.y) / x_201);
+  int const x_204 = -(82);
+  x_208 = float2(0.0f, float4(x_201, 15.0f, 15.0f).z);
+  int const x_209 = (120 - 0);
+  x_214 = int2(int((x_202.x * 256.0f)), int((x_202.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_218_phi = x_214;
+      while (true) {
+        bool x_235 = false;
+        bool x_236_phi = false;
+        int2 const x_218 = x_218_phi;
+        int const x_221 = x_218.y;
+        x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_252_phi = false;
+        if ((x_221 != 256)) {
+        } else {
+          break;
+        }
+        int const x_225 = x_218.x;
+        tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+        x_195 = tint_symbol_4;
+        int const x_227 = x_195.arr[x_221];
+        bool const x_229 = (x_225 < (x_227 + 15));
+        x_236_phi = x_229;
+        if (x_229) {
+          tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_196 = tint_symbol_5;
+          int const x_233 = x_196.arr[x_221];
+          x_235 = (x_225 > (x_233 - 15));
+          x_236_phi = x_235;
+        }
+        bool const x_236 = x_236_phi;
+        if (x_236) {
+          tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_197 = tint_symbol_6;
+          int const x_240 = x_197.arr[x_221];
+          int const x_244 = (91 + 244);
+          buf0 const tint_symbol_7 = {.resolution=x_208};
+          float const x_248 = ((tint_symbol_7.resolution.y - fabs(float((x_225 - x_240)))) * 0.06666667f);
+          x_249 = float4(x_248, x_248, x_248, 1.0f);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        int2 x_219_1 = x_218;
+        x_219_1.y = (x_221 + 1);
+        int2 const x_219 = x_219_1;
+        {
+          x_218_phi = x_219;
+        }
+      }
+      x_251 = x_251_phi;
+      bool const x_252 = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  float4 const x_254 = x_254_phi;
+  *(tint_symbol_10) = x_254;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..8f758b6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.spvasm
@@ -0,0 +1,401 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 307
+; Schema: 0
+               OpCapability Shader
+        %271 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_195 "x_195"
+               OpName %x_196 "x_196"
+               OpName %x_197 "x_197"
+               OpName %x_208 "x_208"
+               OpName %x_214 "x_214"
+               OpName %x_249 "x_249"
+               OpName %x_251 "x_251"
+               OpName %x_218_phi "x_218_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_252_phi "x_252_phi"
+               OpName %x_254_phi "x_254_phi"
+               OpName %x_235 "x_235"
+               OpName %x_236_phi "x_236_phi"
+               OpName %x_219_1 "x_219_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %25 = OpConstantNull %_arr_int_uint_256
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %30 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %34 = OpConstantNull %v2int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %43 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+     %int_82 = OpConstant %int 82
+    %float_0 = OpConstant %float 0
+   %float_15 = OpConstant %float 15
+    %int_120 = OpConstant %int 120
+      %int_0 = OpConstant %int 0
+  %float_256 = OpConstant %float 256
+         %85 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+    %int_256 = OpConstant %int 256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %247 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function_int = OpTypePointer Function %int
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+        %292 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %294 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %x_195 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_196 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_197 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_208 = OpVariable %_ptr_Function_v2float Function %30
+      %x_214 = OpVariable %_ptr_Function_v2int Function %34
+      %x_249 = OpVariable %_ptr_Function_v4float Function %5
+      %x_251 = OpVariable %_ptr_Function_v4float Function %5
+  %x_218_phi = OpVariable %_ptr_Function_v2int Function %34
+  %x_251_phi = OpVariable %_ptr_Function_v4float Function %5
+  %x_252_phi = OpVariable %_ptr_Function_bool Function %43
+  %x_254_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_235 = OpVariable %_ptr_Function_bool Function %43
+  %x_236_phi = OpVariable %_ptr_Function_bool Function %43
+    %x_219_1 = OpVariable %_ptr_Function_v2int Function %34
+         %45 = OpLoad %v4float %gl_FragCoord
+         %48 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %49 = OpLoad %v2float %48
+         %50 = OpCompositeExtract %float %45 0
+         %51 = OpCompositeExtract %float %45 1
+         %52 = OpCompositeConstruct %v2float %50 %51
+         %53 = OpFDiv %v2float %52 %49
+         %54 = OpSNegate %int %int_82
+         %57 = OpCompositeExtract %float %49 0
+         %58 = OpCompositeExtract %float %49 1
+         %60 = OpCompositeConstruct %v4float %57 %58 %float_15 %float_15
+         %61 = OpCompositeExtract %float %60 2
+         %62 = OpCompositeConstruct %v2float %float_0 %61
+               OpStore %x_208 %62
+         %65 = OpISub %int %int_120 %int_0
+         %67 = OpCompositeExtract %float %53 0
+         %69 = OpFMul %float %67 %float_256
+         %66 = OpConvertFToS %int %69
+         %71 = OpCompositeExtract %float %53 1
+         %72 = OpFMul %float %71 %float_256
+         %70 = OpConvertFToS %int %72
+         %73 = OpCompositeConstruct %v2int %66 %70
+               OpStore %x_214 %73
+               OpSelectionMerge %74 None
+               OpSwitch %uint_0 %75
+         %75 = OpLabel
+         %76 = OpLoad %v2int %x_214
+               OpStore %x_218_phi %76
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+         %83 = OpLoad %v2int %x_218_phi
+         %84 = OpCompositeExtract %int %83 1
+               OpStore %x_251_phi %85
+               OpStore %x_252_phi %false
+         %88 = OpINotEqual %bool %84 %int_256
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+               OpBranch %89
+         %91 = OpLabel
+               OpBranch %78
+         %89 = OpLabel
+         %92 = OpCompositeExtract %int %83 0
+               OpStore %x_195 %247
+        %249 = OpAccessChain %_ptr_Function_int %x_195 %84
+        %250 = OpLoad %int %249
+        %251 = OpIAdd %int %250 %int_15
+        %252 = OpSLessThan %bool %92 %251
+               OpStore %x_236_phi %252
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %254 %253
+        %254 = OpLabel
+               OpStore %x_196 %247
+        %255 = OpAccessChain %_ptr_Function_int %x_196 %84
+        %256 = OpLoad %int %255
+        %257 = OpISub %int %256 %int_15
+        %258 = OpSGreaterThan %bool %92 %257
+               OpStore %x_235 %258
+        %259 = OpLoad %bool %x_235
+               OpStore %x_236_phi %259
+               OpBranch %253
+        %253 = OpLabel
+        %260 = OpLoad %bool %x_236_phi
+               OpSelectionMerge %261 None
+               OpBranchConditional %260 %262 %261
+        %262 = OpLabel
+               OpStore %x_197 %247
+        %263 = OpAccessChain %_ptr_Function_int %x_197 %84
+        %264 = OpLoad %int %263
+        %265 = OpIAdd %int %int_91 %int_244
+        %266 = OpLoad %v2float %x_208
+        %267 = OpCompositeConstruct %buf0 %266
+        %268 = OpCompositeExtract %v2float %267 0
+        %269 = OpCompositeExtract %float %268 1
+        %273 = OpISub %int %92 %264
+        %272 = OpConvertSToF %float %273
+        %270 = OpExtInst %float %271 FAbs %272
+        %274 = OpFSub %float %269 %270
+        %276 = OpFMul %float %274 %float_0_0666666701
+        %278 = OpCompositeConstruct %v4float %276 %276 %276 %float_1
+               OpStore %x_249 %278
+        %279 = OpLoad %v4float %x_249
+               OpStore %x_251_phi %279
+               OpStore %x_252_phi %true
+               OpBranch %78
+        %261 = OpLabel
+               OpStore %x_219_1 %83
+        %283 = OpAccessChain %_ptr_Function_int %x_219_1 %uint_1
+        %285 = OpIAdd %int %84 %int_1
+               OpStore %283 %285
+        %286 = OpLoad %v2int %x_219_1
+               OpBranch %79
+         %79 = OpLabel
+               OpStore %x_218_phi %286
+               OpBranch %77
+         %78 = OpLabel
+        %287 = OpLoad %v4float %x_251_phi
+               OpStore %x_251 %287
+        %288 = OpLoad %bool %x_252_phi
+        %289 = OpLoad %v4float %x_251
+               OpStore %x_254_phi %289
+               OpSelectionMerge %290 None
+               OpBranchConditional %288 %291 %290
+        %291 = OpLabel
+               OpBranch %74
+        %290 = OpLabel
+               OpStore %x_254_phi %292
+               OpBranch %74
+         %74 = OpLabel
+        %293 = OpLoad %v4float %x_254_phi
+               OpStore %x_GLF_color %293
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %294
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %298 = OpLabel
+        %299 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %299
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %301 = OpLabel
+        %302 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %302
+        %303 = OpFunctionCall %void %main_1
+        %305 = OpLoad %v4float %x_GLF_color
+        %306 = OpCompositeConstruct %main_out %305
+        %304 = OpFunctionCall %void %tint_symbol_3 %306
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..a8a9633
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl.expected.wgsl
@@ -0,0 +1,99 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_195 : array<i32, 256>;
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_208 : vec2<f32>;
+  var x_214 : vec2<i32>;
+  var x_249 : vec4<f32>;
+  var x_251 : vec4<f32>;
+  var x_218_phi : vec2<i32>;
+  var x_251_phi : vec4<f32>;
+  var x_252_phi : bool;
+  var x_254_phi : vec4<f32>;
+  let x_198 : vec4<f32> = gl_FragCoord;
+  let x_201 : vec2<f32> = x_6.resolution;
+  let x_202 : vec2<f32> = (vec2<f32>(x_198.x, x_198.y) / x_201);
+  let x_204 : i32 = -(82);
+  x_208 = vec2<f32>(0.0, vec4<f32>(x_201, 15.0, 15.0).z);
+  let x_209 : i32 = (120 - 0);
+  x_214 = vec2<i32>(i32((x_202.x * 256.0)), i32((x_202.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_218_phi = x_214;
+      loop {
+        var x_235 : bool;
+        var x_236_phi : bool;
+        let x_218 : vec2<i32> = x_218_phi;
+        let x_221 : i32 = x_218.y;
+        x_251_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_252_phi = false;
+        if ((x_221 != 256)) {
+        } else {
+          break;
+        }
+        let x_225 : i32 = x_218.x;
+        x_195 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_227 : i32 = x_195[x_221];
+        let x_229 : bool = (x_225 < (x_227 + 15));
+        x_236_phi = x_229;
+        if (x_229) {
+          x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_233 : i32 = x_196[x_221];
+          x_235 = (x_225 > (x_233 - 15));
+          x_236_phi = x_235;
+        }
+        let x_236 : bool = x_236_phi;
+        if (x_236) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_240 : i32 = x_197[x_221];
+          let x_244 : i32 = (91 + 244);
+          let x_248 : f32 = ((buf0(x_208).resolution.y - abs(f32((x_225 - x_240)))) * 0.06666667);
+          x_249 = vec4<f32>(x_248, x_248, x_248, 1.0);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        var x_219_1 : vec2<i32> = x_218;
+        x_219_1.y = (x_221 + 1);
+        let x_219 : vec2<i32> = x_219_1;
+
+        continuing {
+          x_218_phi = x_219;
+        }
+      }
+      x_251 = x_251_phi;
+      let x_252 : bool = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_254 : vec4<f32> = x_254_phi;
+  x_GLF_color = x_254;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm
new file mode 100644
index 0000000..b8609d3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm
@@ -0,0 +1,620 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %pos "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %map "map"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+   %float_16 = OpConstant %float 16
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %43 = OpConstantComposite %v2int %int_0 %int_0
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %53 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+%mat2v4float = OpTypeMatrix %v4float 2
+%_ptr_Private_mat2v4float = OpTypePointer Private %mat2v4float
+         %58 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %59 = OpConstantComposite %mat2v4float %58 %58
+         %60 = OpVariable %_ptr_Private_mat2v4float Private %59
+         %61 = OpConstantNull %bool
+       %main = OpFunction %void None %18
+         %62 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function
+       %ipos = OpVariable %_ptr_Function_v2int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %p = OpVariable %_ptr_Function_v2int Function
+    %canwalk = OpVariable %_ptr_Function_bool Function
+          %v = OpVariable %_ptr_Function_int Function
+ %directions = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+          %d = OpVariable %_ptr_Function_int Function
+         %63 = OpLoad %v4float %gl_FragCoord
+         %64 = OpVectorShuffle %v2float %63 %63 0 1
+         %65 = OpISub %int %int_256 %int_14
+         %66 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %67 = OpLoad %v2float %66
+         %68 = OpSNegate %int %65
+         %69 = OpFDiv %v2float %64 %67
+               OpStore %pos %69
+         %70 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %71 = OpLoad %float %70
+         %72 = OpFMul %float %71 %float_16
+         %73 = OpConvertFToS %int %72
+         %74 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %75 = OpLoad %float %74
+         %76 = OpFMul %float %75 %float_16
+         %77 = OpConvertFToS %int %76
+         %78 = OpCompositeConstruct %v2int %73 %77
+               OpStore %ipos %78
+               OpStore %i %int_0
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %83 = OpLoad %int %i
+         %84 = OpSLessThan %bool %83 %int_256
+               OpBranchConditional %84 %85 %80
+         %85 = OpLabel
+         %86 = OpLoad %int %i
+         %87 = OpAccessChain %_ptr_Private_int %map %86
+               OpStore %87 %int_0
+               OpBranch %81
+         %81 = OpLabel
+         %88 = OpLoad %int %i
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %i %89
+               OpBranch %79
+         %80 = OpLabel
+               OpStore %p %43
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %90
+         %90 = OpLabel
+               OpLoopMerge %91 %92 None
+               OpBranch %93
+         %93 = OpLabel
+         %94 = OpLoad %int %v
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %v %95
+               OpStore %directions %int_0
+         %96 = OpAccessChain %_ptr_Function_int %p %uint_0
+         %97 = OpLoad %int %96
+         %98 = OpSGreaterThan %bool %97 %int_0
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %99
+        %100 = OpLabel
+        %101 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %102 = OpLoad %int %101
+        %103 = OpISub %int %102 %int_2
+        %104 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %105 = OpLoad %int %104
+        %106 = OpIMul %int %105 %int_16
+        %107 = OpIAdd %int %103 %106
+        %108 = OpAccessChain %_ptr_Private_int %map %107
+        %109 = OpLoad %int %108
+        %110 = OpIEqual %bool %109 %int_0
+               OpBranch %99
+         %99 = OpLabel
+        %111 = OpPhi %bool %98 %93 %110 %100
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %112
+        %113 = OpLabel
+        %114 = OpLoad %int %directions
+        %115 = OpIAdd %int %114 %int_1
+               OpStore %directions %115
+               OpBranch %112
+        %112 = OpLabel
+        %116 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %117 = OpLoad %int %116
+        %118 = OpSGreaterThan %bool %117 %int_0
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+        %121 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %122 = OpLoad %int %121
+        %123 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %124 = OpLoad %int %123
+        %125 = OpISub %int %124 %int_2
+        %126 = OpIMul %int %125 %int_16
+        %127 = OpIAdd %int %122 %126
+        %128 = OpAccessChain %_ptr_Private_int %map %127
+        %129 = OpLoad %int %128
+        %130 = OpIEqual %bool %129 %int_0
+               OpBranch %119
+        %119 = OpLabel
+        %131 = OpPhi %bool %118 %112 %130 %120
+               OpSelectionMerge %132 None
+               OpBranchConditional %131 %133 %132
+        %133 = OpLabel
+        %134 = OpLoad %int %directions
+        %135 = OpIAdd %int %134 %int_1
+               OpStore %directions %135
+               OpBranch %132
+        %132 = OpLabel
+        %136 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %137 = OpLoad %int %136
+        %138 = OpSLessThan %bool %137 %int_14
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %142 = OpLoad %int %141
+        %143 = OpIAdd %int %142 %int_2
+        %144 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %145 = OpLoad %int %144
+        %146 = OpIMul %int %145 %int_16
+        %147 = OpIAdd %int %143 %146
+        %148 = OpAccessChain %_ptr_Private_int %map %147
+        %149 = OpLoad %int %148
+        %150 = OpIEqual %bool %149 %int_0
+               OpBranch %139
+        %139 = OpLabel
+        %151 = OpPhi %bool %138 %132 %150 %140
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %152
+        %153 = OpLabel
+        %154 = OpLoad %int %directions
+        %155 = OpIAdd %int %154 %int_1
+               OpStore %directions %155
+               OpBranch %152
+        %152 = OpLabel
+        %156 = OpISub %int %int_256 %68
+        %157 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %158 = OpLoad %int %157
+        %159 = OpSLessThan %bool %158 %int_14
+               OpSelectionMerge %160 None
+               OpBranchConditional %159 %161 %160
+        %161 = OpLabel
+        %162 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %163 = OpLoad %int %162
+        %164 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %165 = OpLoad %int %164
+        %166 = OpIAdd %int %165 %int_2
+        %167 = OpIMul %int %166 %int_16
+        %168 = OpIAdd %int %163 %167
+        %169 = OpAccessChain %_ptr_Private_int %map %168
+        %170 = OpLoad %int %169
+        %171 = OpIEqual %bool %170 %int_0
+               OpBranch %160
+        %160 = OpLabel
+        %172 = OpPhi %bool %159 %152 %171 %161
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+        %175 = OpLoad %int %directions
+        %176 = OpIAdd %int %175 %int_1
+               OpStore %directions %176
+               OpBranch %173
+        %173 = OpLabel
+        %177 = OpLoad %int %directions
+        %178 = OpIEqual %bool %177 %int_0
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %181
+        %180 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %182
+        %182 = OpLabel
+               OpLoopMerge %183 %184 None
+               OpBranch %185
+        %185 = OpLabel
+        %186 = OpLoad %int %i
+        %187 = OpSLessThan %bool %186 %int_8
+               OpBranchConditional %187 %188 %183
+        %188 = OpLabel
+               OpStore %j %int_0
+        %189 = OpISub %int %156 %186
+               OpStore %60 %59
+               OpBranchConditional %61 %184 %190
+        %190 = OpLabel
+               OpLoopMerge %191 %192 Unroll
+               OpBranch %193
+        %193 = OpLabel
+        %194 = OpLoad %int %j
+        %195 = OpSLessThan %bool %194 %int_8
+               OpBranchConditional %195 %196 %191
+        %196 = OpLabel
+        %197 = OpLoad %int %j
+        %198 = OpIMul %int %197 %int_2
+        %199 = OpLoad %int %i
+        %200 = OpIMul %int %199 %int_2
+        %201 = OpIMul %int %200 %int_16
+        %202 = OpIAdd %int %198 %201
+        %203 = OpAccessChain %_ptr_Private_int %map %202
+        %204 = OpLoad %int %203
+        %205 = OpIEqual %bool %204 %int_0
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %206
+        %207 = OpLabel
+        %208 = OpLoad %int %j
+        %209 = OpIMul %int %208 %int_2
+        %210 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %210 %209
+        %211 = OpLoad %int %i
+        %212 = OpIMul %int %211 %int_2
+        %213 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %213 %212
+               OpStore %canwalk %true
+               OpBranch %206
+        %206 = OpLabel
+               OpBranch %192
+        %192 = OpLabel
+        %214 = OpLoad %int %j
+        %215 = OpIAdd %int %214 %int_1
+               OpStore %j %215
+               OpBranch %190
+        %191 = OpLabel
+               OpBranch %184
+        %184 = OpLabel
+        %216 = OpLoad %int %i
+        %217 = OpIAdd %int %216 %int_1
+               OpStore %i %217
+               OpBranch %182
+        %183 = OpLabel
+        %218 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %219 = OpLoad %int %218
+        %220 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %221 = OpLoad %int %220
+        %222 = OpIMul %int %221 %int_16
+        %223 = OpIAdd %int %219 %222
+        %224 = OpAccessChain %_ptr_Private_int %map %223
+               OpStore %224 %int_1
+               OpBranch %179
+        %181 = OpLabel
+        %225 = OpLoad %int %v
+        %226 = OpLoad %int %directions
+        %227 = OpSMod %int %225 %226
+               OpStore %d %227
+        %228 = OpLoad %int %directions
+        %229 = OpLoad %int %v
+        %230 = OpIAdd %int %229 %228
+               OpStore %v %230
+        %231 = OpLoad %int %d
+        %232 = OpSGreaterThanEqual %bool %231 %int_0
+               OpSelectionMerge %233 None
+               OpBranchConditional %232 %234 %233
+        %234 = OpLabel
+        %235 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %236 = OpLoad %int %235
+        %237 = OpSGreaterThan %bool %236 %int_0
+               OpBranch %233
+        %233 = OpLabel
+        %238 = OpPhi %bool %232 %181 %237 %234
+               OpSelectionMerge %239 None
+               OpBranchConditional %238 %240 %239
+        %240 = OpLabel
+        %241 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %242 = OpLoad %int %241
+        %243 = OpISub %int %242 %int_2
+        %244 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %245 = OpLoad %int %244
+        %246 = OpIMul %int %245 %int_16
+        %247 = OpIAdd %int %243 %246
+        %248 = OpAccessChain %_ptr_Private_int %map %247
+        %249 = OpLoad %int %248
+        %250 = OpIEqual %bool %249 %int_0
+               OpBranch %239
+        %239 = OpLabel
+        %251 = OpPhi %bool %238 %233 %250 %240
+               OpSelectionMerge %252 None
+               OpBranchConditional %251 %253 %252
+        %253 = OpLabel
+        %254 = OpLoad %int %d
+        %255 = OpISub %int %254 %int_1
+               OpStore %d %255
+        %256 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %257 = OpLoad %int %256
+        %258 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %259 = OpLoad %int %258
+        %260 = OpIMul %int %259 %int_16
+        %261 = OpIAdd %int %257 %260
+        %262 = OpAccessChain %_ptr_Private_int %map %261
+               OpStore %262 %int_1
+        %263 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %264 = OpLoad %int %263
+        %265 = OpISub %int %264 %int_1
+        %266 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %267 = OpLoad %int %266
+        %268 = OpIMul %int %267 %int_16
+        %269 = OpIAdd %int %265 %268
+        %270 = OpAccessChain %_ptr_Private_int %map %269
+               OpStore %270 %int_1
+        %271 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %272 = OpLoad %int %271
+        %273 = OpISub %int %272 %int_2
+        %274 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %275 = OpLoad %int %274
+        %276 = OpIMul %int %275 %int_16
+        %277 = OpIAdd %int %273 %276
+        %278 = OpAccessChain %_ptr_Private_int %map %277
+               OpStore %278 %int_1
+        %279 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %280 = OpLoad %int %279
+        %281 = OpISub %int %280 %int_2
+        %282 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %282 %281
+               OpBranch %252
+        %252 = OpLabel
+        %283 = OpLoad %int %d
+        %284 = OpSGreaterThanEqual %bool %283 %int_0
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %285
+        %286 = OpLabel
+        %287 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %288 = OpLoad %int %287
+        %289 = OpSGreaterThan %bool %288 %int_0
+               OpBranch %285
+        %285 = OpLabel
+        %290 = OpPhi %bool %284 %252 %289 %286
+               OpSelectionMerge %291 None
+               OpBranchConditional %290 %292 %291
+        %292 = OpLabel
+        %293 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %294 = OpLoad %int %293
+        %295 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %296 = OpLoad %int %295
+        %297 = OpISub %int %296 %int_2
+        %298 = OpIMul %int %297 %int_16
+        %299 = OpIAdd %int %294 %298
+        %300 = OpAccessChain %_ptr_Private_int %map %299
+        %301 = OpLoad %int %300
+        %302 = OpIEqual %bool %301 %int_0
+               OpBranch %291
+        %291 = OpLabel
+        %303 = OpPhi %bool %290 %285 %302 %292
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %304
+        %305 = OpLabel
+        %306 = OpLoad %int %d
+        %307 = OpISub %int %306 %int_1
+               OpStore %d %307
+        %308 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %309 = OpLoad %int %308
+        %310 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %311 = OpLoad %int %310
+        %312 = OpIMul %int %311 %int_16
+        %313 = OpIAdd %int %309 %312
+        %314 = OpAccessChain %_ptr_Private_int %map %313
+               OpStore %314 %int_1
+        %315 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %316 = OpLoad %int %315
+        %317 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %318 = OpLoad %int %317
+        %319 = OpISub %int %318 %int_1
+        %320 = OpIMul %int %319 %int_16
+        %321 = OpIAdd %int %316 %320
+        %322 = OpAccessChain %_ptr_Private_int %map %321
+               OpStore %322 %int_1
+        %323 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %324 = OpLoad %int %323
+        %325 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %326 = OpLoad %int %325
+        %327 = OpISub %int %326 %int_2
+        %328 = OpIMul %int %327 %int_16
+        %329 = OpIAdd %int %324 %328
+        %330 = OpAccessChain %_ptr_Private_int %map %329
+               OpStore %330 %int_1
+        %331 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %332 = OpLoad %int %331
+        %333 = OpISub %int %332 %int_2
+        %334 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %334 %333
+               OpBranch %304
+        %304 = OpLabel
+        %335 = OpLoad %int %d
+        %336 = OpSGreaterThanEqual %bool %335 %int_0
+               OpSelectionMerge %337 None
+               OpBranchConditional %336 %338 %337
+        %338 = OpLabel
+        %339 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %340 = OpLoad %int %339
+        %341 = OpSLessThan %bool %340 %int_14
+               OpBranch %337
+        %337 = OpLabel
+        %342 = OpPhi %bool %336 %304 %341 %338
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %343
+        %344 = OpLabel
+        %345 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %346 = OpLoad %int %345
+        %347 = OpIAdd %int %346 %int_2
+        %348 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %349 = OpLoad %int %348
+        %350 = OpIMul %int %349 %int_16
+        %351 = OpIAdd %int %347 %350
+        %352 = OpAccessChain %_ptr_Private_int %map %351
+        %353 = OpLoad %int %352
+        %354 = OpIEqual %bool %353 %int_0
+               OpBranch %343
+        %343 = OpLabel
+        %355 = OpPhi %bool %342 %337 %354 %344
+               OpSelectionMerge %356 None
+               OpBranchConditional %355 %357 %356
+        %357 = OpLabel
+        %358 = OpLoad %int %d
+        %359 = OpISub %int %358 %int_1
+               OpStore %d %359
+        %360 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %361 = OpLoad %int %360
+        %362 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %363 = OpLoad %int %362
+        %364 = OpIMul %int %363 %int_16
+        %365 = OpIAdd %int %361 %364
+        %366 = OpAccessChain %_ptr_Private_int %map %365
+               OpStore %366 %int_1
+        %367 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %368 = OpLoad %int %367
+        %369 = OpIAdd %int %368 %int_1
+        %370 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %371 = OpLoad %int %370
+        %372 = OpIMul %int %371 %int_16
+        %373 = OpIAdd %int %369 %372
+        %374 = OpAccessChain %_ptr_Private_int %map %373
+               OpStore %374 %int_1
+        %375 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %376 = OpLoad %int %375
+        %377 = OpIAdd %int %376 %int_2
+        %378 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %379 = OpLoad %int %378
+        %380 = OpIMul %int %379 %int_16
+        %381 = OpIAdd %int %377 %380
+        %382 = OpAccessChain %_ptr_Private_int %map %381
+               OpStore %382 %int_1
+        %383 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %384 = OpLoad %int %383
+        %385 = OpIAdd %int %384 %int_2
+        %386 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %386 %385
+               OpBranch %356
+        %356 = OpLabel
+        %387 = OpLoad %int %d
+        %388 = OpSGreaterThanEqual %bool %387 %int_0
+               OpSelectionMerge %389 None
+               OpBranchConditional %388 %390 %389
+        %390 = OpLabel
+        %391 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %392 = OpLoad %int %391
+        %393 = OpSLessThan %bool %392 %int_14
+               OpBranch %389
+        %389 = OpLabel
+        %394 = OpPhi %bool %388 %356 %393 %390
+               OpSelectionMerge %395 None
+               OpBranchConditional %394 %396 %395
+        %396 = OpLabel
+        %397 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %398 = OpLoad %int %397
+        %399 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %400 = OpLoad %int %399
+        %401 = OpIAdd %int %400 %int_2
+        %402 = OpIMul %int %401 %int_16
+        %403 = OpIAdd %int %398 %402
+        %404 = OpAccessChain %_ptr_Private_int %map %403
+        %405 = OpLoad %int %404
+        %406 = OpIEqual %bool %405 %int_0
+               OpBranch %395
+        %395 = OpLabel
+        %407 = OpPhi %bool %394 %389 %406 %396
+               OpSelectionMerge %408 None
+               OpBranchConditional %407 %409 %408
+        %409 = OpLabel
+        %410 = OpLoad %int %d
+        %411 = OpISub %int %410 %int_1
+               OpStore %d %411
+        %412 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %413 = OpLoad %int %412
+        %414 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %415 = OpLoad %int %414
+        %416 = OpIMul %int %415 %int_16
+        %417 = OpIAdd %int %413 %416
+        %418 = OpAccessChain %_ptr_Private_int %map %417
+               OpStore %418 %int_1
+        %419 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %420 = OpLoad %int %419
+        %421 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %422 = OpLoad %int %421
+        %423 = OpIAdd %int %422 %int_1
+        %424 = OpIMul %int %423 %int_16
+        %425 = OpIAdd %int %420 %424
+        %426 = OpAccessChain %_ptr_Private_int %map %425
+               OpStore %426 %int_1
+        %427 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %428 = OpLoad %int %427
+        %429 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %430 = OpLoad %int %429
+        %431 = OpIAdd %int %430 %int_2
+        %432 = OpIMul %int %431 %int_16
+        %433 = OpIAdd %int %428 %432
+        %434 = OpAccessChain %_ptr_Private_int %map %433
+               OpStore %434 %int_1
+        %435 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %436 = OpLoad %int %435
+        %437 = OpIAdd %int %436 %int_2
+        %438 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %438 %437
+               OpBranch %408
+        %408 = OpLabel
+               OpBranch %179
+        %179 = OpLabel
+        %439 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %440 = OpLoad %int %439
+        %441 = OpIMul %int %440 %int_16
+        %442 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %443 = OpLoad %int %442
+        %444 = OpIAdd %int %441 %443
+        %445 = OpAccessChain %_ptr_Private_int %map %444
+        %446 = OpLoad %int %445
+        %447 = OpIEqual %bool %446 %int_1
+               OpSelectionMerge %448 None
+               OpBranchConditional %447 %449 %448
+        %449 = OpLabel
+               OpStore %_GLF_color %53
+               OpReturn
+        %448 = OpLabel
+               OpBranch %92
+         %92 = OpLabel
+        %450 = OpLoad %bool %canwalk
+               OpBranchConditional %450 %90 %91
+         %91 = OpLabel
+               OpStore %_GLF_color %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..d8420f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.hlsl
@@ -0,0 +1,309 @@
+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);
+static float2x4 x_60 = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), 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_63 = gl_FragCoord;
+  const float2 x_67 = asfloat(x_7[0].xy);
+  const int x_68 = -((256 - 14));
+  pos = (float2(x_63.x, x_63.y) / x_67);
+  const float x_71 = pos.x;
+  const float x_75 = pos.y;
+  ipos = int2(int((x_71 * 16.0f)), int((x_75 * 16.0f)));
+  i = 0;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  while (true) {
+    bool x_110 = false;
+    bool x_130 = false;
+    bool x_150 = false;
+    bool x_171 = false;
+    bool x_111_phi = false;
+    bool x_131_phi = false;
+    bool x_151_phi = false;
+    bool x_172_phi = false;
+    v = (v + 1);
+    directions = 0;
+    const int x_97 = p.x;
+    const bool x_98 = (x_97 > 0);
+    x_111_phi = x_98;
+    if (x_98) {
+      const int x_102 = p.x;
+      const int x_105 = p.y;
+      const int x_109 = map[((x_102 - 2) + (x_105 * 16))];
+      x_110 = (x_109 == 0);
+      x_111_phi = x_110;
+    }
+    if (x_111_phi) {
+      directions = (directions + 1);
+    }
+    const int x_117 = p.y;
+    const bool x_118 = (x_117 > 0);
+    x_131_phi = x_118;
+    if (x_118) {
+      const int x_122 = p.x;
+      const int x_124 = p.y;
+      const int x_129 = map[(x_122 + ((x_124 - 2) * 16))];
+      x_130 = (x_129 == 0);
+      x_131_phi = x_130;
+    }
+    if (x_131_phi) {
+      directions = (directions + 1);
+    }
+    const int x_137 = p.x;
+    const bool x_138 = (x_137 < 14);
+    x_151_phi = x_138;
+    if (x_138) {
+      const int x_142 = p.x;
+      const int x_145 = p.y;
+      const int x_149 = map[((x_142 + 2) + (x_145 * 16))];
+      x_150 = (x_149 == 0);
+      x_151_phi = x_150;
+    }
+    if (x_151_phi) {
+      directions = (directions + 1);
+    }
+    const int x_156 = (256 - x_68);
+    const int x_158 = p.y;
+    const bool x_159 = (x_158 < 14);
+    x_172_phi = x_159;
+    if (x_159) {
+      const int x_163 = p.x;
+      const int x_165 = p.y;
+      const int x_170 = map[(x_163 + ((x_165 + 2) * 16))];
+      x_171 = (x_170 == 0);
+      x_172_phi = x_171;
+    }
+    if (x_172_phi) {
+      directions = (directions + 1);
+    }
+    bool x_237 = false;
+    bool x_250 = false;
+    bool x_289 = false;
+    bool x_302 = false;
+    bool x_341 = false;
+    bool x_354 = false;
+    bool x_393 = false;
+    bool x_406 = false;
+    bool x_238_phi = false;
+    bool x_251_phi = false;
+    bool x_290_phi = false;
+    bool x_303_phi = false;
+    bool x_342_phi = false;
+    bool x_355_phi = false;
+    bool x_394_phi = false;
+    bool x_407_phi = false;
+    if ((directions == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        const int x_186 = i;
+        if ((x_186 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        const int x_189 = (x_156 - x_186);
+        x_60 = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
+        if (false) {
+          {
+            i = (i + 1);
+          }
+          continue;
+        }
+        {
+          for(; (j < 8); j = (j + 1)) {
+            const int x_204 = map[((j * 2) + ((i * 2) * 16))];
+            if ((x_204 == 0)) {
+              p.x = (j * 2);
+              p.y = (i * 2);
+              canwalk = true;
+            }
+          }
+        }
+        {
+          i = (i + 1);
+        }
+      }
+      const int x_219 = p.x;
+      const int x_221 = p.y;
+      map[(x_219 + (x_221 * 16))] = 1;
+    } else {
+      d = (v % directions);
+      v = (v + directions);
+      const bool x_232 = (d >= 0);
+      x_238_phi = x_232;
+      if (x_232) {
+        const int x_236 = p.x;
+        x_237 = (x_236 > 0);
+        x_238_phi = x_237;
+      }
+      const bool x_238 = x_238_phi;
+      x_251_phi = x_238;
+      if (x_238) {
+        const int x_242 = p.x;
+        const int x_245 = p.y;
+        const int x_249 = map[((x_242 - 2) + (x_245 * 16))];
+        x_250 = (x_249 == 0);
+        x_251_phi = x_250;
+      }
+      if (x_251_phi) {
+        d = (d - 1);
+        const int x_257 = p.x;
+        const int x_259 = p.y;
+        map[(x_257 + (x_259 * 16))] = 1;
+        const int x_264 = p.x;
+        const int x_267 = p.y;
+        map[((x_264 - 1) + (x_267 * 16))] = 1;
+        const int x_272 = p.x;
+        const int x_275 = p.y;
+        map[((x_272 - 2) + (x_275 * 16))] = 1;
+        const int x_280 = p.x;
+        p.x = (x_280 - 2);
+      }
+      const bool x_284 = (d >= 0);
+      x_290_phi = x_284;
+      if (x_284) {
+        const int x_288 = p.y;
+        x_289 = (x_288 > 0);
+        x_290_phi = x_289;
+      }
+      const bool x_290 = x_290_phi;
+      x_303_phi = x_290;
+      if (x_290) {
+        const int x_294 = p.x;
+        const int x_296 = p.y;
+        const int x_301 = map[(x_294 + ((x_296 - 2) * 16))];
+        x_302 = (x_301 == 0);
+        x_303_phi = x_302;
+      }
+      if (x_303_phi) {
+        d = (d - 1);
+        const int x_309 = p.x;
+        const int x_311 = p.y;
+        map[(x_309 + (x_311 * 16))] = 1;
+        const int x_316 = p.x;
+        const int x_318 = p.y;
+        map[(x_316 + ((x_318 - 1) * 16))] = 1;
+        const int x_324 = p.x;
+        const int x_326 = p.y;
+        map[(x_324 + ((x_326 - 2) * 16))] = 1;
+        const int x_332 = p.y;
+        p.y = (x_332 - 2);
+      }
+      const bool x_336 = (d >= 0);
+      x_342_phi = x_336;
+      if (x_336) {
+        const int x_340 = p.x;
+        x_341 = (x_340 < 14);
+        x_342_phi = x_341;
+      }
+      const bool x_342 = x_342_phi;
+      x_355_phi = x_342;
+      if (x_342) {
+        const int x_346 = p.x;
+        const int x_349 = p.y;
+        const int x_353 = map[((x_346 + 2) + (x_349 * 16))];
+        x_354 = (x_353 == 0);
+        x_355_phi = x_354;
+      }
+      if (x_355_phi) {
+        d = (d - 1);
+        const int x_361 = p.x;
+        const int x_363 = p.y;
+        map[(x_361 + (x_363 * 16))] = 1;
+        const int x_368 = p.x;
+        const int x_371 = p.y;
+        map[((x_368 + 1) + (x_371 * 16))] = 1;
+        const int x_376 = p.x;
+        const int x_379 = p.y;
+        map[((x_376 + 2) + (x_379 * 16))] = 1;
+        const int x_384 = p.x;
+        p.x = (x_384 + 2);
+      }
+      const bool x_388 = (d >= 0);
+      x_394_phi = x_388;
+      if (x_388) {
+        const int x_392 = p.y;
+        x_393 = (x_392 < 14);
+        x_394_phi = x_393;
+      }
+      const bool x_394 = x_394_phi;
+      x_407_phi = x_394;
+      if (x_394) {
+        const int x_398 = p.x;
+        const int x_400 = p.y;
+        const int x_405 = map[(x_398 + ((x_400 + 2) * 16))];
+        x_406 = (x_405 == 0);
+        x_407_phi = x_406;
+      }
+      if (x_407_phi) {
+        d = (d - 1);
+        const int x_413 = p.x;
+        const int x_415 = p.y;
+        map[(x_413 + (x_415 * 16))] = 1;
+        const int x_420 = p.x;
+        const int x_422 = p.y;
+        map[(x_420 + ((x_422 + 1) * 16))] = 1;
+        const int x_428 = p.x;
+        const int x_430 = p.y;
+        map[(x_428 + ((x_430 + 2) * 16))] = 1;
+        const int x_436 = p.y;
+        p.y = (x_436 + 2);
+      }
+    }
+    const int x_440 = ipos.y;
+    const int x_443 = ipos.x;
+    const int x_446 = map[((x_440 * 16) + x_443)];
+    if ((x_446 == 1)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.msl
new file mode 100644
index 0000000..192b6aa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.msl
@@ -0,0 +1,359 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6, thread float2x4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float2 pos = 0.0f;
+  int2 ipos = 0;
+  int i = 0;
+  int2 p = 0;
+  bool canwalk = false;
+  int v = 0;
+  int directions = 0;
+  int j = 0;
+  int d = 0;
+  float4 const x_63 = *(tint_symbol_5);
+  float2 const x_67 = x_7.resolution;
+  int const x_68 = -((256 - 14));
+  pos = (float2(x_63.x, x_63.y) / x_67);
+  float const x_71 = pos.x;
+  float const x_75 = pos.y;
+  ipos = int2(int((x_71 * 16.0f)), int((x_75 * 16.0f)));
+  i = 0;
+  while (true) {
+    int const x_83 = i;
+    if ((x_83 < 256)) {
+    } else {
+      break;
+    }
+    int const x_86 = i;
+    (*(tint_symbol_6)).arr[x_86] = 0;
+    {
+      int const x_88 = i;
+      i = (x_88 + 1);
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  while (true) {
+    bool x_110 = false;
+    bool x_130 = false;
+    bool x_150 = false;
+    bool x_171 = false;
+    bool x_111_phi = false;
+    bool x_131_phi = false;
+    bool x_151_phi = false;
+    bool x_172_phi = false;
+    int const x_94 = v;
+    v = (x_94 + 1);
+    directions = 0;
+    int const x_97 = p.x;
+    bool const x_98 = (x_97 > 0);
+    x_111_phi = x_98;
+    if (x_98) {
+      int const x_102 = p.x;
+      int const x_105 = p.y;
+      int const x_109 = (*(tint_symbol_6)).arr[((x_102 - 2) + (x_105 * 16))];
+      x_110 = (x_109 == 0);
+      x_111_phi = x_110;
+    }
+    bool const x_111 = x_111_phi;
+    if (x_111) {
+      int const x_114 = directions;
+      directions = (x_114 + 1);
+    }
+    int const x_117 = p.y;
+    bool const x_118 = (x_117 > 0);
+    x_131_phi = x_118;
+    if (x_118) {
+      int const x_122 = p.x;
+      int const x_124 = p.y;
+      int const x_129 = (*(tint_symbol_6)).arr[(x_122 + ((x_124 - 2) * 16))];
+      x_130 = (x_129 == 0);
+      x_131_phi = x_130;
+    }
+    bool const x_131 = x_131_phi;
+    if (x_131) {
+      int const x_134 = directions;
+      directions = (x_134 + 1);
+    }
+    int const x_137 = p.x;
+    bool const x_138 = (x_137 < 14);
+    x_151_phi = x_138;
+    if (x_138) {
+      int const x_142 = p.x;
+      int const x_145 = p.y;
+      int const x_149 = (*(tint_symbol_6)).arr[((x_142 + 2) + (x_145 * 16))];
+      x_150 = (x_149 == 0);
+      x_151_phi = x_150;
+    }
+    bool const x_151 = x_151_phi;
+    if (x_151) {
+      int const x_154 = directions;
+      directions = (x_154 + 1);
+    }
+    int const x_156 = (256 - x_68);
+    int const x_158 = p.y;
+    bool const x_159 = (x_158 < 14);
+    x_172_phi = x_159;
+    if (x_159) {
+      int const x_163 = p.x;
+      int const x_165 = p.y;
+      int const x_170 = (*(tint_symbol_6)).arr[(x_163 + ((x_165 + 2) * 16))];
+      x_171 = (x_170 == 0);
+      x_172_phi = x_171;
+    }
+    bool const x_172 = x_172_phi;
+    if (x_172) {
+      int const x_175 = directions;
+      directions = (x_175 + 1);
+    }
+    bool x_237 = false;
+    bool x_250 = false;
+    bool x_289 = false;
+    bool x_302 = false;
+    bool x_341 = false;
+    bool x_354 = false;
+    bool x_393 = false;
+    bool x_406 = false;
+    bool x_238_phi = false;
+    bool x_251_phi = false;
+    bool x_290_phi = false;
+    bool x_303_phi = false;
+    bool x_342_phi = false;
+    bool x_355_phi = false;
+    bool x_394_phi = false;
+    bool x_407_phi = false;
+    int const x_177 = directions;
+    if ((x_177 == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        int const x_186 = i;
+        if ((x_186 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        int const x_189 = (x_156 - x_186);
+        *(tint_symbol_7) = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
+        if (false) {
+          {
+            int const x_216 = i;
+            i = (x_216 + 1);
+          }
+          continue;
+        }
+        while (true) {
+          int const x_194 = j;
+          if ((x_194 < 8)) {
+          } else {
+            break;
+          }
+          int const x_197 = j;
+          int const x_199 = i;
+          int const x_204 = (*(tint_symbol_6)).arr[((x_197 * 2) + ((x_199 * 2) * 16))];
+          if ((x_204 == 0)) {
+            int const x_208 = j;
+            p.x = (x_208 * 2);
+            int const x_211 = i;
+            p.y = (x_211 * 2);
+            canwalk = true;
+          }
+          {
+            int const x_214 = j;
+            j = (x_214 + 1);
+          }
+        }
+        {
+          int const x_216 = i;
+          i = (x_216 + 1);
+        }
+      }
+      int const x_219 = p.x;
+      int const x_221 = p.y;
+      (*(tint_symbol_6)).arr[(x_219 + (x_221 * 16))] = 1;
+    } else {
+      int const x_225 = v;
+      int const x_226 = directions;
+      d = (x_225 % x_226);
+      int const x_228 = directions;
+      int const x_229 = v;
+      v = (x_229 + x_228);
+      int const x_231 = d;
+      bool const x_232 = (x_231 >= 0);
+      x_238_phi = x_232;
+      if (x_232) {
+        int const x_236 = p.x;
+        x_237 = (x_236 > 0);
+        x_238_phi = x_237;
+      }
+      bool const x_238 = x_238_phi;
+      x_251_phi = x_238;
+      if (x_238) {
+        int const x_242 = p.x;
+        int const x_245 = p.y;
+        int const x_249 = (*(tint_symbol_6)).arr[((x_242 - 2) + (x_245 * 16))];
+        x_250 = (x_249 == 0);
+        x_251_phi = x_250;
+      }
+      bool const x_251 = x_251_phi;
+      if (x_251) {
+        int const x_254 = d;
+        d = (x_254 - 1);
+        int const x_257 = p.x;
+        int const x_259 = p.y;
+        (*(tint_symbol_6)).arr[(x_257 + (x_259 * 16))] = 1;
+        int const x_264 = p.x;
+        int const x_267 = p.y;
+        (*(tint_symbol_6)).arr[((x_264 - 1) + (x_267 * 16))] = 1;
+        int const x_272 = p.x;
+        int const x_275 = p.y;
+        (*(tint_symbol_6)).arr[((x_272 - 2) + (x_275 * 16))] = 1;
+        int const x_280 = p.x;
+        p.x = (x_280 - 2);
+      }
+      int const x_283 = d;
+      bool const x_284 = (x_283 >= 0);
+      x_290_phi = x_284;
+      if (x_284) {
+        int const x_288 = p.y;
+        x_289 = (x_288 > 0);
+        x_290_phi = x_289;
+      }
+      bool const x_290 = x_290_phi;
+      x_303_phi = x_290;
+      if (x_290) {
+        int const x_294 = p.x;
+        int const x_296 = p.y;
+        int const x_301 = (*(tint_symbol_6)).arr[(x_294 + ((x_296 - 2) * 16))];
+        x_302 = (x_301 == 0);
+        x_303_phi = x_302;
+      }
+      bool const x_303 = x_303_phi;
+      if (x_303) {
+        int const x_306 = d;
+        d = (x_306 - 1);
+        int const x_309 = p.x;
+        int const x_311 = p.y;
+        (*(tint_symbol_6)).arr[(x_309 + (x_311 * 16))] = 1;
+        int const x_316 = p.x;
+        int const x_318 = p.y;
+        (*(tint_symbol_6)).arr[(x_316 + ((x_318 - 1) * 16))] = 1;
+        int const x_324 = p.x;
+        int const x_326 = p.y;
+        (*(tint_symbol_6)).arr[(x_324 + ((x_326 - 2) * 16))] = 1;
+        int const x_332 = p.y;
+        p.y = (x_332 - 2);
+      }
+      int const x_335 = d;
+      bool const x_336 = (x_335 >= 0);
+      x_342_phi = x_336;
+      if (x_336) {
+        int const x_340 = p.x;
+        x_341 = (x_340 < 14);
+        x_342_phi = x_341;
+      }
+      bool const x_342 = x_342_phi;
+      x_355_phi = x_342;
+      if (x_342) {
+        int const x_346 = p.x;
+        int const x_349 = p.y;
+        int const x_353 = (*(tint_symbol_6)).arr[((x_346 + 2) + (x_349 * 16))];
+        x_354 = (x_353 == 0);
+        x_355_phi = x_354;
+      }
+      bool const x_355 = x_355_phi;
+      if (x_355) {
+        int const x_358 = d;
+        d = (x_358 - 1);
+        int const x_361 = p.x;
+        int const x_363 = p.y;
+        (*(tint_symbol_6)).arr[(x_361 + (x_363 * 16))] = 1;
+        int const x_368 = p.x;
+        int const x_371 = p.y;
+        (*(tint_symbol_6)).arr[((x_368 + 1) + (x_371 * 16))] = 1;
+        int const x_376 = p.x;
+        int const x_379 = p.y;
+        (*(tint_symbol_6)).arr[((x_376 + 2) + (x_379 * 16))] = 1;
+        int const x_384 = p.x;
+        p.x = (x_384 + 2);
+      }
+      int const x_387 = d;
+      bool const x_388 = (x_387 >= 0);
+      x_394_phi = x_388;
+      if (x_388) {
+        int const x_392 = p.y;
+        x_393 = (x_392 < 14);
+        x_394_phi = x_393;
+      }
+      bool const x_394 = x_394_phi;
+      x_407_phi = x_394;
+      if (x_394) {
+        int const x_398 = p.x;
+        int const x_400 = p.y;
+        int const x_405 = (*(tint_symbol_6)).arr[(x_398 + ((x_400 + 2) * 16))];
+        x_406 = (x_405 == 0);
+        x_407_phi = x_406;
+      }
+      bool const x_407 = x_407_phi;
+      if (x_407) {
+        int const x_410 = d;
+        d = (x_410 - 1);
+        int const x_413 = p.x;
+        int const x_415 = p.y;
+        (*(tint_symbol_6)).arr[(x_413 + (x_415 * 16))] = 1;
+        int const x_420 = p.x;
+        int const x_422 = p.y;
+        (*(tint_symbol_6)).arr[(x_420 + ((x_422 + 1) * 16))] = 1;
+        int const x_428 = p.x;
+        int const x_430 = p.y;
+        (*(tint_symbol_6)).arr[(x_428 + ((x_430 + 2) * 16))] = 1;
+        int const x_436 = p.y;
+        p.y = (x_436 + 2);
+      }
+    }
+    int const x_440 = ipos.y;
+    int const x_443 = ipos.x;
+    int const x_446 = (*(tint_symbol_6)).arr[((x_440 * 16) + x_443)];
+    if ((x_446 == 1)) {
+      *(tint_symbol_8) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      return;
+    }
+    {
+      bool const x_450 = canwalk;
+      if (x_450) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_8) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread tint_array_wrapper tint_symbol_10 = {};
+  thread float2x4 tint_symbol_11 = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..efc1a09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.spvasm
@@ -0,0 +1,791 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 520
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %map "map"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %x_60 "x_60"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %x_110 "x_110"
+               OpName %x_130 "x_130"
+               OpName %x_150 "x_150"
+               OpName %x_171 "x_171"
+               OpName %x_111_phi "x_111_phi"
+               OpName %x_131_phi "x_131_phi"
+               OpName %x_151_phi "x_151_phi"
+               OpName %x_172_phi "x_172_phi"
+               OpName %x_237 "x_237"
+               OpName %x_250 "x_250"
+               OpName %x_289 "x_289"
+               OpName %x_302 "x_302"
+               OpName %x_341 "x_341"
+               OpName %x_354 "x_354"
+               OpName %x_393 "x_393"
+               OpName %x_406 "x_406"
+               OpName %x_238_phi "x_238_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_290_phi "x_290_phi"
+               OpName %x_303_phi "x_303_phi"
+               OpName %x_342_phi "x_342_phi"
+               OpName %x_355_phi "x_355_phi"
+               OpName %x_394_phi "x_394_phi"
+               OpName %x_407_phi "x_407_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+         %16 = OpConstantNull %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private %16
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%mat2v4float = OpTypeMatrix %v4float 2
+    %float_0 = OpConstant %float 0
+         %20 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %21 = OpConstantComposite %mat2v4float %20 %20
+%_ptr_Private_mat2v4float = OpTypePointer Private %mat2v4float
+       %x_60 = OpVariable %_ptr_Private_mat2v4float Private %21
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %28 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %34 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %38 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %41 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %46 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %int_256 = OpConstant %int 256
+     %int_14 = OpConstant %int 14
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %float_16 = OpConstant %float 16
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %92 = OpConstantComposite %v2int %int_0 %int_0
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+        %501 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %506 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %507 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %28
+         %31 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %34
+       %ipos = OpVariable %_ptr_Function_v2int Function %38
+          %i = OpVariable %_ptr_Function_int Function %41
+          %p = OpVariable %_ptr_Function_v2int Function %38
+    %canwalk = OpVariable %_ptr_Function_bool Function %46
+          %v = OpVariable %_ptr_Function_int Function %41
+ %directions = OpVariable %_ptr_Function_int Function %41
+          %j = OpVariable %_ptr_Function_int Function %41
+          %d = OpVariable %_ptr_Function_int Function %41
+      %x_110 = OpVariable %_ptr_Function_bool Function %46
+      %x_130 = OpVariable %_ptr_Function_bool Function %46
+      %x_150 = OpVariable %_ptr_Function_bool Function %46
+      %x_171 = OpVariable %_ptr_Function_bool Function %46
+  %x_111_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_131_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_151_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_172_phi = OpVariable %_ptr_Function_bool Function %46
+      %x_237 = OpVariable %_ptr_Function_bool Function %46
+      %x_250 = OpVariable %_ptr_Function_bool Function %46
+      %x_289 = OpVariable %_ptr_Function_bool Function %46
+      %x_302 = OpVariable %_ptr_Function_bool Function %46
+      %x_341 = OpVariable %_ptr_Function_bool Function %46
+      %x_354 = OpVariable %_ptr_Function_bool Function %46
+      %x_393 = OpVariable %_ptr_Function_bool Function %46
+      %x_406 = OpVariable %_ptr_Function_bool Function %46
+  %x_238_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_251_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_290_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_303_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_342_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_355_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_394_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_407_phi = OpVariable %_ptr_Function_bool Function %46
+         %51 = OpLoad %v4float %gl_FragCoord
+         %54 = OpAccessChain %_ptr_Uniform_v2float %x_7 %uint_0
+         %55 = OpLoad %v2float %54
+         %59 = OpISub %int %int_256 %int_14
+         %56 = OpSNegate %int %59
+         %60 = OpCompositeExtract %float %51 0
+         %61 = OpCompositeExtract %float %51 1
+         %62 = OpCompositeConstruct %v2float %60 %61
+         %63 = OpFDiv %v2float %62 %55
+               OpStore %pos %63
+         %65 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %66 = OpLoad %float %65
+         %68 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %69 = OpLoad %float %68
+         %72 = OpFMul %float %66 %float_16
+         %70 = OpConvertFToS %int %72
+         %74 = OpFMul %float %69 %float_16
+         %73 = OpConvertFToS %int %74
+         %75 = OpCompositeConstruct %v2int %70 %73
+               OpStore %ipos %75
+               OpStore %i %int_0
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+         %81 = OpLoad %int %i
+         %82 = OpSLessThan %bool %81 %int_256
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %78
+         %83 = OpLabel
+         %86 = OpLoad %int %i
+         %88 = OpAccessChain %_ptr_Private_int %map %86
+               OpStore %88 %int_0
+               OpBranch %79
+         %79 = OpLabel
+         %89 = OpLoad %int %i
+         %91 = OpIAdd %int %89 %int_1
+               OpStore %i %91
+               OpBranch %77
+         %78 = OpLabel
+               OpStore %p %92
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+        %106 = OpLoad %int %v
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %v %107
+               OpStore %directions %int_0
+        %108 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %109 = OpLoad %int %108
+        %110 = OpSGreaterThan %bool %109 %int_0
+               OpStore %x_111_phi %110
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %111
+        %112 = OpLabel
+        %113 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %116 = OpLoad %int %115
+        %118 = OpISub %int %114 %int_2
+        %120 = OpIMul %int %116 %int_16
+        %121 = OpIAdd %int %118 %120
+        %122 = OpAccessChain %_ptr_Private_int %map %121
+        %123 = OpLoad %int %122
+        %124 = OpIEqual %bool %123 %int_0
+               OpStore %x_110 %124
+        %125 = OpLoad %bool %x_110
+               OpStore %x_111_phi %125
+               OpBranch %111
+        %111 = OpLabel
+        %126 = OpLoad %bool %x_111_phi
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %127
+        %128 = OpLabel
+        %129 = OpLoad %int %directions
+        %130 = OpIAdd %int %129 %int_1
+               OpStore %directions %130
+               OpBranch %127
+        %127 = OpLabel
+        %131 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %132 = OpLoad %int %131
+        %133 = OpSGreaterThan %bool %132 %int_0
+               OpStore %x_131_phi %133
+               OpSelectionMerge %134 None
+               OpBranchConditional %133 %135 %134
+        %135 = OpLabel
+        %136 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %139 = OpLoad %int %138
+        %140 = OpISub %int %139 %int_2
+        %141 = OpIMul %int %140 %int_16
+        %142 = OpIAdd %int %137 %141
+        %143 = OpAccessChain %_ptr_Private_int %map %142
+        %144 = OpLoad %int %143
+        %145 = OpIEqual %bool %144 %int_0
+               OpStore %x_130 %145
+        %146 = OpLoad %bool %x_130
+               OpStore %x_131_phi %146
+               OpBranch %134
+        %134 = OpLabel
+        %147 = OpLoad %bool %x_131_phi
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %148
+        %149 = OpLabel
+        %150 = OpLoad %int %directions
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %directions %151
+               OpBranch %148
+        %148 = OpLabel
+        %152 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %153 = OpLoad %int %152
+        %154 = OpSLessThan %bool %153 %int_14
+               OpStore %x_151_phi %154
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %158 = OpLoad %int %157
+        %159 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %160 = OpLoad %int %159
+        %161 = OpIAdd %int %158 %int_2
+        %162 = OpIMul %int %160 %int_16
+        %163 = OpIAdd %int %161 %162
+        %164 = OpAccessChain %_ptr_Private_int %map %163
+        %165 = OpLoad %int %164
+        %166 = OpIEqual %bool %165 %int_0
+               OpStore %x_150 %166
+        %167 = OpLoad %bool %x_150
+               OpStore %x_151_phi %167
+               OpBranch %155
+        %155 = OpLabel
+        %168 = OpLoad %bool %x_151_phi
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %169
+        %170 = OpLabel
+        %171 = OpLoad %int %directions
+        %172 = OpIAdd %int %171 %int_1
+               OpStore %directions %172
+               OpBranch %169
+        %169 = OpLabel
+        %173 = OpISub %int %int_256 %56
+        %174 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %175 = OpLoad %int %174
+        %176 = OpSLessThan %bool %175 %int_14
+               OpStore %x_172_phi %176
+               OpSelectionMerge %177 None
+               OpBranchConditional %176 %178 %177
+        %178 = OpLabel
+        %179 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %180 = OpLoad %int %179
+        %181 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %182 = OpLoad %int %181
+        %183 = OpIAdd %int %182 %int_2
+        %184 = OpIMul %int %183 %int_16
+        %185 = OpIAdd %int %180 %184
+        %186 = OpAccessChain %_ptr_Private_int %map %185
+        %187 = OpLoad %int %186
+        %188 = OpIEqual %bool %187 %int_0
+               OpStore %x_171 %188
+        %189 = OpLoad %bool %x_171
+               OpStore %x_172_phi %189
+               OpBranch %177
+        %177 = OpLabel
+        %190 = OpLoad %bool %x_172_phi
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %191
+        %192 = OpLabel
+        %193 = OpLoad %int %directions
+        %194 = OpIAdd %int %193 %int_1
+               OpStore %directions %194
+               OpBranch %191
+        %191 = OpLabel
+        %211 = OpLoad %int %directions
+        %212 = OpIEqual %bool %211 %int_0
+               OpSelectionMerge %213 None
+               OpBranchConditional %212 %214 %215
+        %214 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %217
+        %217 = OpLabel
+               OpLoopMerge %218 %219 None
+               OpBranch %220
+        %220 = OpLabel
+        %221 = OpLoad %int %i
+        %223 = OpSLessThan %bool %221 %int_8
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %226
+        %225 = OpLabel
+               OpBranch %224
+        %226 = OpLabel
+               OpBranch %218
+        %224 = OpLabel
+               OpStore %j %int_0
+        %227 = OpISub %int %173 %221
+               OpStore %x_60 %21
+               OpSelectionMerge %228 None
+               OpBranchConditional %false %229 %228
+        %229 = OpLabel
+               OpBranch %219
+        %228 = OpLabel
+               OpBranch %230
+        %230 = OpLabel
+               OpLoopMerge %231 %232 None
+               OpBranch %233
+        %233 = OpLabel
+        %234 = OpLoad %int %j
+        %235 = OpSLessThan %bool %234 %int_8
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %238
+        %237 = OpLabel
+               OpBranch %236
+        %238 = OpLabel
+               OpBranch %231
+        %236 = OpLabel
+        %239 = OpLoad %int %j
+        %240 = OpLoad %int %i
+        %241 = OpIMul %int %239 %int_2
+        %242 = OpIMul %int %240 %int_2
+        %243 = OpIMul %int %242 %int_16
+        %244 = OpIAdd %int %241 %243
+        %245 = OpAccessChain %_ptr_Private_int %map %244
+        %246 = OpLoad %int %245
+        %247 = OpIEqual %bool %246 %int_0
+               OpSelectionMerge %248 None
+               OpBranchConditional %247 %249 %248
+        %249 = OpLabel
+        %250 = OpLoad %int %j
+        %251 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %252 = OpIMul %int %250 %int_2
+               OpStore %251 %252
+        %253 = OpLoad %int %i
+        %254 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %255 = OpIMul %int %253 %int_2
+               OpStore %254 %255
+               OpStore %canwalk %true
+               OpBranch %248
+        %248 = OpLabel
+               OpBranch %232
+        %232 = OpLabel
+        %256 = OpLoad %int %j
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %j %257
+               OpBranch %230
+        %231 = OpLabel
+               OpBranch %219
+        %219 = OpLabel
+        %258 = OpLoad %int %i
+        %259 = OpIAdd %int %258 %int_1
+               OpStore %i %259
+               OpBranch %217
+        %218 = OpLabel
+        %260 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %261 = OpLoad %int %260
+        %262 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %263 = OpLoad %int %262
+        %264 = OpIMul %int %263 %int_16
+        %265 = OpIAdd %int %261 %264
+        %266 = OpAccessChain %_ptr_Private_int %map %265
+               OpStore %266 %int_1
+               OpBranch %213
+        %215 = OpLabel
+        %267 = OpLoad %int %v
+        %268 = OpLoad %int %directions
+        %269 = OpSMod %int %267 %268
+               OpStore %d %269
+        %270 = OpLoad %int %directions
+        %271 = OpLoad %int %v
+        %272 = OpIAdd %int %271 %270
+               OpStore %v %272
+        %273 = OpLoad %int %d
+        %274 = OpSGreaterThanEqual %bool %273 %int_0
+               OpStore %x_238_phi %274
+               OpSelectionMerge %275 None
+               OpBranchConditional %274 %276 %275
+        %276 = OpLabel
+        %277 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %278 = OpLoad %int %277
+        %279 = OpSGreaterThan %bool %278 %int_0
+               OpStore %x_237 %279
+        %280 = OpLoad %bool %x_237
+               OpStore %x_238_phi %280
+               OpBranch %275
+        %275 = OpLabel
+        %281 = OpLoad %bool %x_238_phi
+               OpStore %x_251_phi %281
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %282
+        %283 = OpLabel
+        %284 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %285 = OpLoad %int %284
+        %286 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %287 = OpLoad %int %286
+        %288 = OpISub %int %285 %int_2
+        %289 = OpIMul %int %287 %int_16
+        %290 = OpIAdd %int %288 %289
+        %291 = OpAccessChain %_ptr_Private_int %map %290
+        %292 = OpLoad %int %291
+        %293 = OpIEqual %bool %292 %int_0
+               OpStore %x_250 %293
+        %294 = OpLoad %bool %x_250
+               OpStore %x_251_phi %294
+               OpBranch %282
+        %282 = OpLabel
+        %295 = OpLoad %bool %x_251_phi
+               OpSelectionMerge %296 None
+               OpBranchConditional %295 %297 %296
+        %297 = OpLabel
+        %298 = OpLoad %int %d
+        %299 = OpISub %int %298 %int_1
+               OpStore %d %299
+        %300 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %301 = OpLoad %int %300
+        %302 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %303 = OpLoad %int %302
+        %304 = OpIMul %int %303 %int_16
+        %305 = OpIAdd %int %301 %304
+        %306 = OpAccessChain %_ptr_Private_int %map %305
+               OpStore %306 %int_1
+        %307 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %308 = OpLoad %int %307
+        %309 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %310 = OpLoad %int %309
+        %311 = OpISub %int %308 %int_1
+        %312 = OpIMul %int %310 %int_16
+        %313 = OpIAdd %int %311 %312
+        %314 = OpAccessChain %_ptr_Private_int %map %313
+               OpStore %314 %int_1
+        %315 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %316 = OpLoad %int %315
+        %317 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %318 = OpLoad %int %317
+        %319 = OpISub %int %316 %int_2
+        %320 = OpIMul %int %318 %int_16
+        %321 = OpIAdd %int %319 %320
+        %322 = OpAccessChain %_ptr_Private_int %map %321
+               OpStore %322 %int_1
+        %323 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %324 = OpLoad %int %323
+        %325 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %326 = OpISub %int %324 %int_2
+               OpStore %325 %326
+               OpBranch %296
+        %296 = OpLabel
+        %327 = OpLoad %int %d
+        %328 = OpSGreaterThanEqual %bool %327 %int_0
+               OpStore %x_290_phi %328
+               OpSelectionMerge %329 None
+               OpBranchConditional %328 %330 %329
+        %330 = OpLabel
+        %331 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %332 = OpLoad %int %331
+        %333 = OpSGreaterThan %bool %332 %int_0
+               OpStore %x_289 %333
+        %334 = OpLoad %bool %x_289
+               OpStore %x_290_phi %334
+               OpBranch %329
+        %329 = OpLabel
+        %335 = OpLoad %bool %x_290_phi
+               OpStore %x_303_phi %335
+               OpSelectionMerge %336 None
+               OpBranchConditional %335 %337 %336
+        %337 = OpLabel
+        %338 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %339 = OpLoad %int %338
+        %340 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %341 = OpLoad %int %340
+        %342 = OpISub %int %341 %int_2
+        %343 = OpIMul %int %342 %int_16
+        %344 = OpIAdd %int %339 %343
+        %345 = OpAccessChain %_ptr_Private_int %map %344
+        %346 = OpLoad %int %345
+        %347 = OpIEqual %bool %346 %int_0
+               OpStore %x_302 %347
+        %348 = OpLoad %bool %x_302
+               OpStore %x_303_phi %348
+               OpBranch %336
+        %336 = OpLabel
+        %349 = OpLoad %bool %x_303_phi
+               OpSelectionMerge %350 None
+               OpBranchConditional %349 %351 %350
+        %351 = OpLabel
+        %352 = OpLoad %int %d
+        %353 = OpISub %int %352 %int_1
+               OpStore %d %353
+        %354 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %355 = OpLoad %int %354
+        %356 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %357 = OpLoad %int %356
+        %358 = OpIMul %int %357 %int_16
+        %359 = OpIAdd %int %355 %358
+        %360 = OpAccessChain %_ptr_Private_int %map %359
+               OpStore %360 %int_1
+        %361 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %362 = OpLoad %int %361
+        %363 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %364 = OpLoad %int %363
+        %365 = OpISub %int %364 %int_1
+        %366 = OpIMul %int %365 %int_16
+        %367 = OpIAdd %int %362 %366
+        %368 = OpAccessChain %_ptr_Private_int %map %367
+               OpStore %368 %int_1
+        %369 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %370 = OpLoad %int %369
+        %371 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %372 = OpLoad %int %371
+        %373 = OpISub %int %372 %int_2
+        %374 = OpIMul %int %373 %int_16
+        %375 = OpIAdd %int %370 %374
+        %376 = OpAccessChain %_ptr_Private_int %map %375
+               OpStore %376 %int_1
+        %377 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %378 = OpLoad %int %377
+        %379 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %380 = OpISub %int %378 %int_2
+               OpStore %379 %380
+               OpBranch %350
+        %350 = OpLabel
+        %381 = OpLoad %int %d
+        %382 = OpSGreaterThanEqual %bool %381 %int_0
+               OpStore %x_342_phi %382
+               OpSelectionMerge %383 None
+               OpBranchConditional %382 %384 %383
+        %384 = OpLabel
+        %385 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %386 = OpLoad %int %385
+        %387 = OpSLessThan %bool %386 %int_14
+               OpStore %x_341 %387
+        %388 = OpLoad %bool %x_341
+               OpStore %x_342_phi %388
+               OpBranch %383
+        %383 = OpLabel
+        %389 = OpLoad %bool %x_342_phi
+               OpStore %x_355_phi %389
+               OpSelectionMerge %390 None
+               OpBranchConditional %389 %391 %390
+        %391 = OpLabel
+        %392 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %393 = OpLoad %int %392
+        %394 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %395 = OpLoad %int %394
+        %396 = OpIAdd %int %393 %int_2
+        %397 = OpIMul %int %395 %int_16
+        %398 = OpIAdd %int %396 %397
+        %399 = OpAccessChain %_ptr_Private_int %map %398
+        %400 = OpLoad %int %399
+        %401 = OpIEqual %bool %400 %int_0
+               OpStore %x_354 %401
+        %402 = OpLoad %bool %x_354
+               OpStore %x_355_phi %402
+               OpBranch %390
+        %390 = OpLabel
+        %403 = OpLoad %bool %x_355_phi
+               OpSelectionMerge %404 None
+               OpBranchConditional %403 %405 %404
+        %405 = OpLabel
+        %406 = OpLoad %int %d
+        %407 = OpISub %int %406 %int_1
+               OpStore %d %407
+        %408 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %409 = OpLoad %int %408
+        %410 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %411 = OpLoad %int %410
+        %412 = OpIMul %int %411 %int_16
+        %413 = OpIAdd %int %409 %412
+        %414 = OpAccessChain %_ptr_Private_int %map %413
+               OpStore %414 %int_1
+        %415 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %416 = OpLoad %int %415
+        %417 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %418 = OpLoad %int %417
+        %419 = OpIAdd %int %416 %int_1
+        %420 = OpIMul %int %418 %int_16
+        %421 = OpIAdd %int %419 %420
+        %422 = OpAccessChain %_ptr_Private_int %map %421
+               OpStore %422 %int_1
+        %423 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %424 = OpLoad %int %423
+        %425 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %426 = OpLoad %int %425
+        %427 = OpIAdd %int %424 %int_2
+        %428 = OpIMul %int %426 %int_16
+        %429 = OpIAdd %int %427 %428
+        %430 = OpAccessChain %_ptr_Private_int %map %429
+               OpStore %430 %int_1
+        %431 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %432 = OpLoad %int %431
+        %433 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %434 = OpIAdd %int %432 %int_2
+               OpStore %433 %434
+               OpBranch %404
+        %404 = OpLabel
+        %435 = OpLoad %int %d
+        %436 = OpSGreaterThanEqual %bool %435 %int_0
+               OpStore %x_394_phi %436
+               OpSelectionMerge %437 None
+               OpBranchConditional %436 %438 %437
+        %438 = OpLabel
+        %439 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %440 = OpLoad %int %439
+        %441 = OpSLessThan %bool %440 %int_14
+               OpStore %x_393 %441
+        %442 = OpLoad %bool %x_393
+               OpStore %x_394_phi %442
+               OpBranch %437
+        %437 = OpLabel
+        %443 = OpLoad %bool %x_394_phi
+               OpStore %x_407_phi %443
+               OpSelectionMerge %444 None
+               OpBranchConditional %443 %445 %444
+        %445 = OpLabel
+        %446 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %447 = OpLoad %int %446
+        %448 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %449 = OpLoad %int %448
+        %450 = OpIAdd %int %449 %int_2
+        %451 = OpIMul %int %450 %int_16
+        %452 = OpIAdd %int %447 %451
+        %453 = OpAccessChain %_ptr_Private_int %map %452
+        %454 = OpLoad %int %453
+        %455 = OpIEqual %bool %454 %int_0
+               OpStore %x_406 %455
+        %456 = OpLoad %bool %x_406
+               OpStore %x_407_phi %456
+               OpBranch %444
+        %444 = OpLabel
+        %457 = OpLoad %bool %x_407_phi
+               OpSelectionMerge %458 None
+               OpBranchConditional %457 %459 %458
+        %459 = OpLabel
+        %460 = OpLoad %int %d
+        %461 = OpISub %int %460 %int_1
+               OpStore %d %461
+        %462 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %463 = OpLoad %int %462
+        %464 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %465 = OpLoad %int %464
+        %466 = OpIMul %int %465 %int_16
+        %467 = OpIAdd %int %463 %466
+        %468 = OpAccessChain %_ptr_Private_int %map %467
+               OpStore %468 %int_1
+        %469 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %470 = OpLoad %int %469
+        %471 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %472 = OpLoad %int %471
+        %473 = OpIAdd %int %472 %int_1
+        %474 = OpIMul %int %473 %int_16
+        %475 = OpIAdd %int %470 %474
+        %476 = OpAccessChain %_ptr_Private_int %map %475
+               OpStore %476 %int_1
+        %477 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %478 = OpLoad %int %477
+        %479 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %480 = OpLoad %int %479
+        %481 = OpIAdd %int %480 %int_2
+        %482 = OpIMul %int %481 %int_16
+        %483 = OpIAdd %int %478 %482
+        %484 = OpAccessChain %_ptr_Private_int %map %483
+               OpStore %484 %int_1
+        %485 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %486 = OpLoad %int %485
+        %487 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %488 = OpIAdd %int %486 %int_2
+               OpStore %487 %488
+               OpBranch %458
+        %458 = OpLabel
+               OpBranch %213
+        %213 = OpLabel
+        %489 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %490 = OpLoad %int %489
+        %491 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %492 = OpLoad %int %491
+        %493 = OpIMul %int %490 %int_16
+        %494 = OpIAdd %int %493 %492
+        %495 = OpAccessChain %_ptr_Private_int %map %494
+        %496 = OpLoad %int %495
+        %497 = OpIEqual %bool %496 %int_1
+               OpSelectionMerge %498 None
+               OpBranchConditional %497 %499 %498
+        %499 = OpLabel
+               OpStore %x_GLF_color %501
+               OpReturn
+        %498 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+        %502 = OpLoad %bool %canwalk
+               OpSelectionMerge %503 None
+               OpBranchConditional %502 %504 %505
+        %504 = OpLabel
+               OpBranch %503
+        %505 = OpLabel
+               OpBranch %95
+        %503 = OpLabel
+               OpBranch %94
+         %95 = OpLabel
+               OpStore %x_GLF_color %506
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %507
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %511 = OpLabel
+        %512 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %512
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %28
+        %514 = OpLabel
+        %515 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %515
+        %516 = OpFunctionCall %void %main_1
+        %518 = OpLoad %v4float %x_GLF_color
+        %519 = OpCompositeConstruct %main_out %518
+        %517 = OpFunctionCall %void %tint_symbol_3 %519
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 96[%96] is not post dominated by the back-edge block 503[%503]
+  %503 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..14e531e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.spvasm.expected.wgsl
@@ -0,0 +1,357 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> x_60 : mat2x4<f32> = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_67 : vec2<f32> = x_7.resolution;
+  let x_68 : i32 = -((256 - 14));
+  pos = (vec2<f32>(x_63.x, x_63.y) / x_67);
+  let x_71 : f32 = pos.x;
+  let x_75 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_71 * 16.0)), i32((x_75 * 16.0)));
+  i = 0;
+  loop {
+    let x_83 : i32 = i;
+    if ((x_83 < 256)) {
+    } else {
+      break;
+    }
+    let x_86 : i32 = i;
+    map[x_86] = 0;
+
+    continuing {
+      let x_88 : i32 = i;
+      i = (x_88 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_110 : bool;
+    var x_130 : bool;
+    var x_150 : bool;
+    var x_171 : bool;
+    var x_111_phi : bool;
+    var x_131_phi : bool;
+    var x_151_phi : bool;
+    var x_172_phi : bool;
+    let x_94 : i32 = v;
+    v = (x_94 + 1);
+    directions = 0;
+    let x_97 : i32 = p.x;
+    let x_98 : bool = (x_97 > 0);
+    x_111_phi = x_98;
+    if (x_98) {
+      let x_102 : i32 = p.x;
+      let x_105 : i32 = p.y;
+      let x_109 : i32 = map[((x_102 - 2) + (x_105 * 16))];
+      x_110 = (x_109 == 0);
+      x_111_phi = x_110;
+    }
+    let x_111 : bool = x_111_phi;
+    if (x_111) {
+      let x_114 : i32 = directions;
+      directions = (x_114 + 1);
+    }
+    let x_117 : i32 = p.y;
+    let x_118 : bool = (x_117 > 0);
+    x_131_phi = x_118;
+    if (x_118) {
+      let x_122 : i32 = p.x;
+      let x_124 : i32 = p.y;
+      let x_129 : i32 = map[(x_122 + ((x_124 - 2) * 16))];
+      x_130 = (x_129 == 0);
+      x_131_phi = x_130;
+    }
+    let x_131 : bool = x_131_phi;
+    if (x_131) {
+      let x_134 : i32 = directions;
+      directions = (x_134 + 1);
+    }
+    let x_137 : i32 = p.x;
+    let x_138 : bool = (x_137 < 14);
+    x_151_phi = x_138;
+    if (x_138) {
+      let x_142 : i32 = p.x;
+      let x_145 : i32 = p.y;
+      let x_149 : i32 = map[((x_142 + 2) + (x_145 * 16))];
+      x_150 = (x_149 == 0);
+      x_151_phi = x_150;
+    }
+    let x_151 : bool = x_151_phi;
+    if (x_151) {
+      let x_154 : i32 = directions;
+      directions = (x_154 + 1);
+    }
+    let x_156 : i32 = (256 - x_68);
+    let x_158 : i32 = p.y;
+    let x_159 : bool = (x_158 < 14);
+    x_172_phi = x_159;
+    if (x_159) {
+      let x_163 : i32 = p.x;
+      let x_165 : i32 = p.y;
+      let x_170 : i32 = map[(x_163 + ((x_165 + 2) * 16))];
+      x_171 = (x_170 == 0);
+      x_172_phi = x_171;
+    }
+    let x_172 : bool = x_172_phi;
+    if (x_172) {
+      let x_175 : i32 = directions;
+      directions = (x_175 + 1);
+    }
+    var x_237 : bool;
+    var x_250 : bool;
+    var x_289 : bool;
+    var x_302 : bool;
+    var x_341 : bool;
+    var x_354 : bool;
+    var x_393 : bool;
+    var x_406 : bool;
+    var x_238_phi : bool;
+    var x_251_phi : bool;
+    var x_290_phi : bool;
+    var x_303_phi : bool;
+    var x_342_phi : bool;
+    var x_355_phi : bool;
+    var x_394_phi : bool;
+    var x_407_phi : bool;
+    let x_177 : i32 = directions;
+    if ((x_177 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_186 : i32 = i;
+        if ((x_186 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        let x_189 : i32 = (x_156 - x_186);
+        x_60 = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+        if (false) {
+          continue;
+        }
+        loop {
+          let x_194 : i32 = j;
+          if ((x_194 < 8)) {
+          } else {
+            break;
+          }
+          let x_197 : i32 = j;
+          let x_199 : i32 = i;
+          let x_204 : i32 = map[((x_197 * 2) + ((x_199 * 2) * 16))];
+          if ((x_204 == 0)) {
+            let x_208 : i32 = j;
+            p.x = (x_208 * 2);
+            let x_211 : i32 = i;
+            p.y = (x_211 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_214 : i32 = j;
+            j = (x_214 + 1);
+          }
+        }
+
+        continuing {
+          let x_216 : i32 = i;
+          i = (x_216 + 1);
+        }
+      }
+      let x_219 : i32 = p.x;
+      let x_221 : i32 = p.y;
+      map[(x_219 + (x_221 * 16))] = 1;
+    } else {
+      let x_225 : i32 = v;
+      let x_226 : i32 = directions;
+      d = (x_225 % x_226);
+      let x_228 : i32 = directions;
+      let x_229 : i32 = v;
+      v = (x_229 + x_228);
+      let x_231 : i32 = d;
+      let x_232 : bool = (x_231 >= 0);
+      x_238_phi = x_232;
+      if (x_232) {
+        let x_236 : i32 = p.x;
+        x_237 = (x_236 > 0);
+        x_238_phi = x_237;
+      }
+      let x_238 : bool = x_238_phi;
+      x_251_phi = x_238;
+      if (x_238) {
+        let x_242 : i32 = p.x;
+        let x_245 : i32 = p.y;
+        let x_249 : i32 = map[((x_242 - 2) + (x_245 * 16))];
+        x_250 = (x_249 == 0);
+        x_251_phi = x_250;
+      }
+      let x_251 : bool = x_251_phi;
+      if (x_251) {
+        let x_254 : i32 = d;
+        d = (x_254 - 1);
+        let x_257 : i32 = p.x;
+        let x_259 : i32 = p.y;
+        map[(x_257 + (x_259 * 16))] = 1;
+        let x_264 : i32 = p.x;
+        let x_267 : i32 = p.y;
+        map[((x_264 - 1) + (x_267 * 16))] = 1;
+        let x_272 : i32 = p.x;
+        let x_275 : i32 = p.y;
+        map[((x_272 - 2) + (x_275 * 16))] = 1;
+        let x_280 : i32 = p.x;
+        p.x = (x_280 - 2);
+      }
+      let x_283 : i32 = d;
+      let x_284 : bool = (x_283 >= 0);
+      x_290_phi = x_284;
+      if (x_284) {
+        let x_288 : i32 = p.y;
+        x_289 = (x_288 > 0);
+        x_290_phi = x_289;
+      }
+      let x_290 : bool = x_290_phi;
+      x_303_phi = x_290;
+      if (x_290) {
+        let x_294 : i32 = p.x;
+        let x_296 : i32 = p.y;
+        let x_301 : i32 = map[(x_294 + ((x_296 - 2) * 16))];
+        x_302 = (x_301 == 0);
+        x_303_phi = x_302;
+      }
+      let x_303 : bool = x_303_phi;
+      if (x_303) {
+        let x_306 : i32 = d;
+        d = (x_306 - 1);
+        let x_309 : i32 = p.x;
+        let x_311 : i32 = p.y;
+        map[(x_309 + (x_311 * 16))] = 1;
+        let x_316 : i32 = p.x;
+        let x_318 : i32 = p.y;
+        map[(x_316 + ((x_318 - 1) * 16))] = 1;
+        let x_324 : i32 = p.x;
+        let x_326 : i32 = p.y;
+        map[(x_324 + ((x_326 - 2) * 16))] = 1;
+        let x_332 : i32 = p.y;
+        p.y = (x_332 - 2);
+      }
+      let x_335 : i32 = d;
+      let x_336 : bool = (x_335 >= 0);
+      x_342_phi = x_336;
+      if (x_336) {
+        let x_340 : i32 = p.x;
+        x_341 = (x_340 < 14);
+        x_342_phi = x_341;
+      }
+      let x_342 : bool = x_342_phi;
+      x_355_phi = x_342;
+      if (x_342) {
+        let x_346 : i32 = p.x;
+        let x_349 : i32 = p.y;
+        let x_353 : i32 = map[((x_346 + 2) + (x_349 * 16))];
+        x_354 = (x_353 == 0);
+        x_355_phi = x_354;
+      }
+      let x_355 : bool = x_355_phi;
+      if (x_355) {
+        let x_358 : i32 = d;
+        d = (x_358 - 1);
+        let x_361 : i32 = p.x;
+        let x_363 : i32 = p.y;
+        map[(x_361 + (x_363 * 16))] = 1;
+        let x_368 : i32 = p.x;
+        let x_371 : i32 = p.y;
+        map[((x_368 + 1) + (x_371 * 16))] = 1;
+        let x_376 : i32 = p.x;
+        let x_379 : i32 = p.y;
+        map[((x_376 + 2) + (x_379 * 16))] = 1;
+        let x_384 : i32 = p.x;
+        p.x = (x_384 + 2);
+      }
+      let x_387 : i32 = d;
+      let x_388 : bool = (x_387 >= 0);
+      x_394_phi = x_388;
+      if (x_388) {
+        let x_392 : i32 = p.y;
+        x_393 = (x_392 < 14);
+        x_394_phi = x_393;
+      }
+      let x_394 : bool = x_394_phi;
+      x_407_phi = x_394;
+      if (x_394) {
+        let x_398 : i32 = p.x;
+        let x_400 : i32 = p.y;
+        let x_405 : i32 = map[(x_398 + ((x_400 + 2) * 16))];
+        x_406 = (x_405 == 0);
+        x_407_phi = x_406;
+      }
+      let x_407 : bool = x_407_phi;
+      if (x_407) {
+        let x_410 : i32 = d;
+        d = (x_410 - 1);
+        let x_413 : i32 = p.x;
+        let x_415 : i32 = p.y;
+        map[(x_413 + (x_415 * 16))] = 1;
+        let x_420 : i32 = p.x;
+        let x_422 : i32 = p.y;
+        map[(x_420 + ((x_422 + 1) * 16))] = 1;
+        let x_428 : i32 = p.x;
+        let x_430 : i32 = p.y;
+        map[(x_428 + ((x_430 + 2) * 16))] = 1;
+        let x_436 : i32 = p.y;
+        p.y = (x_436 + 2);
+      }
+    }
+    let x_440 : i32 = ipos.y;
+    let x_443 : i32 = ipos.x;
+    let x_446 : i32 = map[((x_440 * 16) + x_443)];
+    if ((x_446 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_450 : bool = canwalk;
+      if (x_450) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
new file mode 100644
index 0000000..14e531e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
@@ -0,0 +1,357 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> x_60 : mat2x4<f32> = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_67 : vec2<f32> = x_7.resolution;
+  let x_68 : i32 = -((256 - 14));
+  pos = (vec2<f32>(x_63.x, x_63.y) / x_67);
+  let x_71 : f32 = pos.x;
+  let x_75 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_71 * 16.0)), i32((x_75 * 16.0)));
+  i = 0;
+  loop {
+    let x_83 : i32 = i;
+    if ((x_83 < 256)) {
+    } else {
+      break;
+    }
+    let x_86 : i32 = i;
+    map[x_86] = 0;
+
+    continuing {
+      let x_88 : i32 = i;
+      i = (x_88 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_110 : bool;
+    var x_130 : bool;
+    var x_150 : bool;
+    var x_171 : bool;
+    var x_111_phi : bool;
+    var x_131_phi : bool;
+    var x_151_phi : bool;
+    var x_172_phi : bool;
+    let x_94 : i32 = v;
+    v = (x_94 + 1);
+    directions = 0;
+    let x_97 : i32 = p.x;
+    let x_98 : bool = (x_97 > 0);
+    x_111_phi = x_98;
+    if (x_98) {
+      let x_102 : i32 = p.x;
+      let x_105 : i32 = p.y;
+      let x_109 : i32 = map[((x_102 - 2) + (x_105 * 16))];
+      x_110 = (x_109 == 0);
+      x_111_phi = x_110;
+    }
+    let x_111 : bool = x_111_phi;
+    if (x_111) {
+      let x_114 : i32 = directions;
+      directions = (x_114 + 1);
+    }
+    let x_117 : i32 = p.y;
+    let x_118 : bool = (x_117 > 0);
+    x_131_phi = x_118;
+    if (x_118) {
+      let x_122 : i32 = p.x;
+      let x_124 : i32 = p.y;
+      let x_129 : i32 = map[(x_122 + ((x_124 - 2) * 16))];
+      x_130 = (x_129 == 0);
+      x_131_phi = x_130;
+    }
+    let x_131 : bool = x_131_phi;
+    if (x_131) {
+      let x_134 : i32 = directions;
+      directions = (x_134 + 1);
+    }
+    let x_137 : i32 = p.x;
+    let x_138 : bool = (x_137 < 14);
+    x_151_phi = x_138;
+    if (x_138) {
+      let x_142 : i32 = p.x;
+      let x_145 : i32 = p.y;
+      let x_149 : i32 = map[((x_142 + 2) + (x_145 * 16))];
+      x_150 = (x_149 == 0);
+      x_151_phi = x_150;
+    }
+    let x_151 : bool = x_151_phi;
+    if (x_151) {
+      let x_154 : i32 = directions;
+      directions = (x_154 + 1);
+    }
+    let x_156 : i32 = (256 - x_68);
+    let x_158 : i32 = p.y;
+    let x_159 : bool = (x_158 < 14);
+    x_172_phi = x_159;
+    if (x_159) {
+      let x_163 : i32 = p.x;
+      let x_165 : i32 = p.y;
+      let x_170 : i32 = map[(x_163 + ((x_165 + 2) * 16))];
+      x_171 = (x_170 == 0);
+      x_172_phi = x_171;
+    }
+    let x_172 : bool = x_172_phi;
+    if (x_172) {
+      let x_175 : i32 = directions;
+      directions = (x_175 + 1);
+    }
+    var x_237 : bool;
+    var x_250 : bool;
+    var x_289 : bool;
+    var x_302 : bool;
+    var x_341 : bool;
+    var x_354 : bool;
+    var x_393 : bool;
+    var x_406 : bool;
+    var x_238_phi : bool;
+    var x_251_phi : bool;
+    var x_290_phi : bool;
+    var x_303_phi : bool;
+    var x_342_phi : bool;
+    var x_355_phi : bool;
+    var x_394_phi : bool;
+    var x_407_phi : bool;
+    let x_177 : i32 = directions;
+    if ((x_177 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_186 : i32 = i;
+        if ((x_186 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        let x_189 : i32 = (x_156 - x_186);
+        x_60 = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+        if (false) {
+          continue;
+        }
+        loop {
+          let x_194 : i32 = j;
+          if ((x_194 < 8)) {
+          } else {
+            break;
+          }
+          let x_197 : i32 = j;
+          let x_199 : i32 = i;
+          let x_204 : i32 = map[((x_197 * 2) + ((x_199 * 2) * 16))];
+          if ((x_204 == 0)) {
+            let x_208 : i32 = j;
+            p.x = (x_208 * 2);
+            let x_211 : i32 = i;
+            p.y = (x_211 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_214 : i32 = j;
+            j = (x_214 + 1);
+          }
+        }
+
+        continuing {
+          let x_216 : i32 = i;
+          i = (x_216 + 1);
+        }
+      }
+      let x_219 : i32 = p.x;
+      let x_221 : i32 = p.y;
+      map[(x_219 + (x_221 * 16))] = 1;
+    } else {
+      let x_225 : i32 = v;
+      let x_226 : i32 = directions;
+      d = (x_225 % x_226);
+      let x_228 : i32 = directions;
+      let x_229 : i32 = v;
+      v = (x_229 + x_228);
+      let x_231 : i32 = d;
+      let x_232 : bool = (x_231 >= 0);
+      x_238_phi = x_232;
+      if (x_232) {
+        let x_236 : i32 = p.x;
+        x_237 = (x_236 > 0);
+        x_238_phi = x_237;
+      }
+      let x_238 : bool = x_238_phi;
+      x_251_phi = x_238;
+      if (x_238) {
+        let x_242 : i32 = p.x;
+        let x_245 : i32 = p.y;
+        let x_249 : i32 = map[((x_242 - 2) + (x_245 * 16))];
+        x_250 = (x_249 == 0);
+        x_251_phi = x_250;
+      }
+      let x_251 : bool = x_251_phi;
+      if (x_251) {
+        let x_254 : i32 = d;
+        d = (x_254 - 1);
+        let x_257 : i32 = p.x;
+        let x_259 : i32 = p.y;
+        map[(x_257 + (x_259 * 16))] = 1;
+        let x_264 : i32 = p.x;
+        let x_267 : i32 = p.y;
+        map[((x_264 - 1) + (x_267 * 16))] = 1;
+        let x_272 : i32 = p.x;
+        let x_275 : i32 = p.y;
+        map[((x_272 - 2) + (x_275 * 16))] = 1;
+        let x_280 : i32 = p.x;
+        p.x = (x_280 - 2);
+      }
+      let x_283 : i32 = d;
+      let x_284 : bool = (x_283 >= 0);
+      x_290_phi = x_284;
+      if (x_284) {
+        let x_288 : i32 = p.y;
+        x_289 = (x_288 > 0);
+        x_290_phi = x_289;
+      }
+      let x_290 : bool = x_290_phi;
+      x_303_phi = x_290;
+      if (x_290) {
+        let x_294 : i32 = p.x;
+        let x_296 : i32 = p.y;
+        let x_301 : i32 = map[(x_294 + ((x_296 - 2) * 16))];
+        x_302 = (x_301 == 0);
+        x_303_phi = x_302;
+      }
+      let x_303 : bool = x_303_phi;
+      if (x_303) {
+        let x_306 : i32 = d;
+        d = (x_306 - 1);
+        let x_309 : i32 = p.x;
+        let x_311 : i32 = p.y;
+        map[(x_309 + (x_311 * 16))] = 1;
+        let x_316 : i32 = p.x;
+        let x_318 : i32 = p.y;
+        map[(x_316 + ((x_318 - 1) * 16))] = 1;
+        let x_324 : i32 = p.x;
+        let x_326 : i32 = p.y;
+        map[(x_324 + ((x_326 - 2) * 16))] = 1;
+        let x_332 : i32 = p.y;
+        p.y = (x_332 - 2);
+      }
+      let x_335 : i32 = d;
+      let x_336 : bool = (x_335 >= 0);
+      x_342_phi = x_336;
+      if (x_336) {
+        let x_340 : i32 = p.x;
+        x_341 = (x_340 < 14);
+        x_342_phi = x_341;
+      }
+      let x_342 : bool = x_342_phi;
+      x_355_phi = x_342;
+      if (x_342) {
+        let x_346 : i32 = p.x;
+        let x_349 : i32 = p.y;
+        let x_353 : i32 = map[((x_346 + 2) + (x_349 * 16))];
+        x_354 = (x_353 == 0);
+        x_355_phi = x_354;
+      }
+      let x_355 : bool = x_355_phi;
+      if (x_355) {
+        let x_358 : i32 = d;
+        d = (x_358 - 1);
+        let x_361 : i32 = p.x;
+        let x_363 : i32 = p.y;
+        map[(x_361 + (x_363 * 16))] = 1;
+        let x_368 : i32 = p.x;
+        let x_371 : i32 = p.y;
+        map[((x_368 + 1) + (x_371 * 16))] = 1;
+        let x_376 : i32 = p.x;
+        let x_379 : i32 = p.y;
+        map[((x_376 + 2) + (x_379 * 16))] = 1;
+        let x_384 : i32 = p.x;
+        p.x = (x_384 + 2);
+      }
+      let x_387 : i32 = d;
+      let x_388 : bool = (x_387 >= 0);
+      x_394_phi = x_388;
+      if (x_388) {
+        let x_392 : i32 = p.y;
+        x_393 = (x_392 < 14);
+        x_394_phi = x_393;
+      }
+      let x_394 : bool = x_394_phi;
+      x_407_phi = x_394;
+      if (x_394) {
+        let x_398 : i32 = p.x;
+        let x_400 : i32 = p.y;
+        let x_405 : i32 = map[(x_398 + ((x_400 + 2) * 16))];
+        x_406 = (x_405 == 0);
+        x_407_phi = x_406;
+      }
+      let x_407 : bool = x_407_phi;
+      if (x_407) {
+        let x_410 : i32 = d;
+        d = (x_410 - 1);
+        let x_413 : i32 = p.x;
+        let x_415 : i32 = p.y;
+        map[(x_413 + (x_415 * 16))] = 1;
+        let x_420 : i32 = p.x;
+        let x_422 : i32 = p.y;
+        map[(x_420 + ((x_422 + 1) * 16))] = 1;
+        let x_428 : i32 = p.x;
+        let x_430 : i32 = p.y;
+        map[(x_428 + ((x_430 + 2) * 16))] = 1;
+        let x_436 : i32 = p.y;
+        p.y = (x_436 + 2);
+      }
+    }
+    let x_440 : i32 = ipos.y;
+    let x_443 : i32 = ipos.x;
+    let x_446 : i32 = map[((x_440 * 16) + x_443)];
+    if ((x_446 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_450 : bool = canwalk;
+      if (x_450) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..d8420f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.hlsl
@@ -0,0 +1,309 @@
+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);
+static float2x4 x_60 = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), 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_63 = gl_FragCoord;
+  const float2 x_67 = asfloat(x_7[0].xy);
+  const int x_68 = -((256 - 14));
+  pos = (float2(x_63.x, x_63.y) / x_67);
+  const float x_71 = pos.x;
+  const float x_75 = pos.y;
+  ipos = int2(int((x_71 * 16.0f)), int((x_75 * 16.0f)));
+  i = 0;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  while (true) {
+    bool x_110 = false;
+    bool x_130 = false;
+    bool x_150 = false;
+    bool x_171 = false;
+    bool x_111_phi = false;
+    bool x_131_phi = false;
+    bool x_151_phi = false;
+    bool x_172_phi = false;
+    v = (v + 1);
+    directions = 0;
+    const int x_97 = p.x;
+    const bool x_98 = (x_97 > 0);
+    x_111_phi = x_98;
+    if (x_98) {
+      const int x_102 = p.x;
+      const int x_105 = p.y;
+      const int x_109 = map[((x_102 - 2) + (x_105 * 16))];
+      x_110 = (x_109 == 0);
+      x_111_phi = x_110;
+    }
+    if (x_111_phi) {
+      directions = (directions + 1);
+    }
+    const int x_117 = p.y;
+    const bool x_118 = (x_117 > 0);
+    x_131_phi = x_118;
+    if (x_118) {
+      const int x_122 = p.x;
+      const int x_124 = p.y;
+      const int x_129 = map[(x_122 + ((x_124 - 2) * 16))];
+      x_130 = (x_129 == 0);
+      x_131_phi = x_130;
+    }
+    if (x_131_phi) {
+      directions = (directions + 1);
+    }
+    const int x_137 = p.x;
+    const bool x_138 = (x_137 < 14);
+    x_151_phi = x_138;
+    if (x_138) {
+      const int x_142 = p.x;
+      const int x_145 = p.y;
+      const int x_149 = map[((x_142 + 2) + (x_145 * 16))];
+      x_150 = (x_149 == 0);
+      x_151_phi = x_150;
+    }
+    if (x_151_phi) {
+      directions = (directions + 1);
+    }
+    const int x_156 = (256 - x_68);
+    const int x_158 = p.y;
+    const bool x_159 = (x_158 < 14);
+    x_172_phi = x_159;
+    if (x_159) {
+      const int x_163 = p.x;
+      const int x_165 = p.y;
+      const int x_170 = map[(x_163 + ((x_165 + 2) * 16))];
+      x_171 = (x_170 == 0);
+      x_172_phi = x_171;
+    }
+    if (x_172_phi) {
+      directions = (directions + 1);
+    }
+    bool x_237 = false;
+    bool x_250 = false;
+    bool x_289 = false;
+    bool x_302 = false;
+    bool x_341 = false;
+    bool x_354 = false;
+    bool x_393 = false;
+    bool x_406 = false;
+    bool x_238_phi = false;
+    bool x_251_phi = false;
+    bool x_290_phi = false;
+    bool x_303_phi = false;
+    bool x_342_phi = false;
+    bool x_355_phi = false;
+    bool x_394_phi = false;
+    bool x_407_phi = false;
+    if ((directions == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        const int x_186 = i;
+        if ((x_186 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        const int x_189 = (x_156 - x_186);
+        x_60 = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
+        if (false) {
+          {
+            i = (i + 1);
+          }
+          continue;
+        }
+        {
+          for(; (j < 8); j = (j + 1)) {
+            const int x_204 = map[((j * 2) + ((i * 2) * 16))];
+            if ((x_204 == 0)) {
+              p.x = (j * 2);
+              p.y = (i * 2);
+              canwalk = true;
+            }
+          }
+        }
+        {
+          i = (i + 1);
+        }
+      }
+      const int x_219 = p.x;
+      const int x_221 = p.y;
+      map[(x_219 + (x_221 * 16))] = 1;
+    } else {
+      d = (v % directions);
+      v = (v + directions);
+      const bool x_232 = (d >= 0);
+      x_238_phi = x_232;
+      if (x_232) {
+        const int x_236 = p.x;
+        x_237 = (x_236 > 0);
+        x_238_phi = x_237;
+      }
+      const bool x_238 = x_238_phi;
+      x_251_phi = x_238;
+      if (x_238) {
+        const int x_242 = p.x;
+        const int x_245 = p.y;
+        const int x_249 = map[((x_242 - 2) + (x_245 * 16))];
+        x_250 = (x_249 == 0);
+        x_251_phi = x_250;
+      }
+      if (x_251_phi) {
+        d = (d - 1);
+        const int x_257 = p.x;
+        const int x_259 = p.y;
+        map[(x_257 + (x_259 * 16))] = 1;
+        const int x_264 = p.x;
+        const int x_267 = p.y;
+        map[((x_264 - 1) + (x_267 * 16))] = 1;
+        const int x_272 = p.x;
+        const int x_275 = p.y;
+        map[((x_272 - 2) + (x_275 * 16))] = 1;
+        const int x_280 = p.x;
+        p.x = (x_280 - 2);
+      }
+      const bool x_284 = (d >= 0);
+      x_290_phi = x_284;
+      if (x_284) {
+        const int x_288 = p.y;
+        x_289 = (x_288 > 0);
+        x_290_phi = x_289;
+      }
+      const bool x_290 = x_290_phi;
+      x_303_phi = x_290;
+      if (x_290) {
+        const int x_294 = p.x;
+        const int x_296 = p.y;
+        const int x_301 = map[(x_294 + ((x_296 - 2) * 16))];
+        x_302 = (x_301 == 0);
+        x_303_phi = x_302;
+      }
+      if (x_303_phi) {
+        d = (d - 1);
+        const int x_309 = p.x;
+        const int x_311 = p.y;
+        map[(x_309 + (x_311 * 16))] = 1;
+        const int x_316 = p.x;
+        const int x_318 = p.y;
+        map[(x_316 + ((x_318 - 1) * 16))] = 1;
+        const int x_324 = p.x;
+        const int x_326 = p.y;
+        map[(x_324 + ((x_326 - 2) * 16))] = 1;
+        const int x_332 = p.y;
+        p.y = (x_332 - 2);
+      }
+      const bool x_336 = (d >= 0);
+      x_342_phi = x_336;
+      if (x_336) {
+        const int x_340 = p.x;
+        x_341 = (x_340 < 14);
+        x_342_phi = x_341;
+      }
+      const bool x_342 = x_342_phi;
+      x_355_phi = x_342;
+      if (x_342) {
+        const int x_346 = p.x;
+        const int x_349 = p.y;
+        const int x_353 = map[((x_346 + 2) + (x_349 * 16))];
+        x_354 = (x_353 == 0);
+        x_355_phi = x_354;
+      }
+      if (x_355_phi) {
+        d = (d - 1);
+        const int x_361 = p.x;
+        const int x_363 = p.y;
+        map[(x_361 + (x_363 * 16))] = 1;
+        const int x_368 = p.x;
+        const int x_371 = p.y;
+        map[((x_368 + 1) + (x_371 * 16))] = 1;
+        const int x_376 = p.x;
+        const int x_379 = p.y;
+        map[((x_376 + 2) + (x_379 * 16))] = 1;
+        const int x_384 = p.x;
+        p.x = (x_384 + 2);
+      }
+      const bool x_388 = (d >= 0);
+      x_394_phi = x_388;
+      if (x_388) {
+        const int x_392 = p.y;
+        x_393 = (x_392 < 14);
+        x_394_phi = x_393;
+      }
+      const bool x_394 = x_394_phi;
+      x_407_phi = x_394;
+      if (x_394) {
+        const int x_398 = p.x;
+        const int x_400 = p.y;
+        const int x_405 = map[(x_398 + ((x_400 + 2) * 16))];
+        x_406 = (x_405 == 0);
+        x_407_phi = x_406;
+      }
+      if (x_407_phi) {
+        d = (d - 1);
+        const int x_413 = p.x;
+        const int x_415 = p.y;
+        map[(x_413 + (x_415 * 16))] = 1;
+        const int x_420 = p.x;
+        const int x_422 = p.y;
+        map[(x_420 + ((x_422 + 1) * 16))] = 1;
+        const int x_428 = p.x;
+        const int x_430 = p.y;
+        map[(x_428 + ((x_430 + 2) * 16))] = 1;
+        const int x_436 = p.y;
+        p.y = (x_436 + 2);
+      }
+    }
+    const int x_440 = ipos.y;
+    const int x_443 = ipos.x;
+    const int x_446 = map[((x_440 * 16) + x_443)];
+    if ((x_446 == 1)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.msl
new file mode 100644
index 0000000..192b6aa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.msl
@@ -0,0 +1,359 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6, thread float2x4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float2 pos = 0.0f;
+  int2 ipos = 0;
+  int i = 0;
+  int2 p = 0;
+  bool canwalk = false;
+  int v = 0;
+  int directions = 0;
+  int j = 0;
+  int d = 0;
+  float4 const x_63 = *(tint_symbol_5);
+  float2 const x_67 = x_7.resolution;
+  int const x_68 = -((256 - 14));
+  pos = (float2(x_63.x, x_63.y) / x_67);
+  float const x_71 = pos.x;
+  float const x_75 = pos.y;
+  ipos = int2(int((x_71 * 16.0f)), int((x_75 * 16.0f)));
+  i = 0;
+  while (true) {
+    int const x_83 = i;
+    if ((x_83 < 256)) {
+    } else {
+      break;
+    }
+    int const x_86 = i;
+    (*(tint_symbol_6)).arr[x_86] = 0;
+    {
+      int const x_88 = i;
+      i = (x_88 + 1);
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  while (true) {
+    bool x_110 = false;
+    bool x_130 = false;
+    bool x_150 = false;
+    bool x_171 = false;
+    bool x_111_phi = false;
+    bool x_131_phi = false;
+    bool x_151_phi = false;
+    bool x_172_phi = false;
+    int const x_94 = v;
+    v = (x_94 + 1);
+    directions = 0;
+    int const x_97 = p.x;
+    bool const x_98 = (x_97 > 0);
+    x_111_phi = x_98;
+    if (x_98) {
+      int const x_102 = p.x;
+      int const x_105 = p.y;
+      int const x_109 = (*(tint_symbol_6)).arr[((x_102 - 2) + (x_105 * 16))];
+      x_110 = (x_109 == 0);
+      x_111_phi = x_110;
+    }
+    bool const x_111 = x_111_phi;
+    if (x_111) {
+      int const x_114 = directions;
+      directions = (x_114 + 1);
+    }
+    int const x_117 = p.y;
+    bool const x_118 = (x_117 > 0);
+    x_131_phi = x_118;
+    if (x_118) {
+      int const x_122 = p.x;
+      int const x_124 = p.y;
+      int const x_129 = (*(tint_symbol_6)).arr[(x_122 + ((x_124 - 2) * 16))];
+      x_130 = (x_129 == 0);
+      x_131_phi = x_130;
+    }
+    bool const x_131 = x_131_phi;
+    if (x_131) {
+      int const x_134 = directions;
+      directions = (x_134 + 1);
+    }
+    int const x_137 = p.x;
+    bool const x_138 = (x_137 < 14);
+    x_151_phi = x_138;
+    if (x_138) {
+      int const x_142 = p.x;
+      int const x_145 = p.y;
+      int const x_149 = (*(tint_symbol_6)).arr[((x_142 + 2) + (x_145 * 16))];
+      x_150 = (x_149 == 0);
+      x_151_phi = x_150;
+    }
+    bool const x_151 = x_151_phi;
+    if (x_151) {
+      int const x_154 = directions;
+      directions = (x_154 + 1);
+    }
+    int const x_156 = (256 - x_68);
+    int const x_158 = p.y;
+    bool const x_159 = (x_158 < 14);
+    x_172_phi = x_159;
+    if (x_159) {
+      int const x_163 = p.x;
+      int const x_165 = p.y;
+      int const x_170 = (*(tint_symbol_6)).arr[(x_163 + ((x_165 + 2) * 16))];
+      x_171 = (x_170 == 0);
+      x_172_phi = x_171;
+    }
+    bool const x_172 = x_172_phi;
+    if (x_172) {
+      int const x_175 = directions;
+      directions = (x_175 + 1);
+    }
+    bool x_237 = false;
+    bool x_250 = false;
+    bool x_289 = false;
+    bool x_302 = false;
+    bool x_341 = false;
+    bool x_354 = false;
+    bool x_393 = false;
+    bool x_406 = false;
+    bool x_238_phi = false;
+    bool x_251_phi = false;
+    bool x_290_phi = false;
+    bool x_303_phi = false;
+    bool x_342_phi = false;
+    bool x_355_phi = false;
+    bool x_394_phi = false;
+    bool x_407_phi = false;
+    int const x_177 = directions;
+    if ((x_177 == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        int const x_186 = i;
+        if ((x_186 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        int const x_189 = (x_156 - x_186);
+        *(tint_symbol_7) = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
+        if (false) {
+          {
+            int const x_216 = i;
+            i = (x_216 + 1);
+          }
+          continue;
+        }
+        while (true) {
+          int const x_194 = j;
+          if ((x_194 < 8)) {
+          } else {
+            break;
+          }
+          int const x_197 = j;
+          int const x_199 = i;
+          int const x_204 = (*(tint_symbol_6)).arr[((x_197 * 2) + ((x_199 * 2) * 16))];
+          if ((x_204 == 0)) {
+            int const x_208 = j;
+            p.x = (x_208 * 2);
+            int const x_211 = i;
+            p.y = (x_211 * 2);
+            canwalk = true;
+          }
+          {
+            int const x_214 = j;
+            j = (x_214 + 1);
+          }
+        }
+        {
+          int const x_216 = i;
+          i = (x_216 + 1);
+        }
+      }
+      int const x_219 = p.x;
+      int const x_221 = p.y;
+      (*(tint_symbol_6)).arr[(x_219 + (x_221 * 16))] = 1;
+    } else {
+      int const x_225 = v;
+      int const x_226 = directions;
+      d = (x_225 % x_226);
+      int const x_228 = directions;
+      int const x_229 = v;
+      v = (x_229 + x_228);
+      int const x_231 = d;
+      bool const x_232 = (x_231 >= 0);
+      x_238_phi = x_232;
+      if (x_232) {
+        int const x_236 = p.x;
+        x_237 = (x_236 > 0);
+        x_238_phi = x_237;
+      }
+      bool const x_238 = x_238_phi;
+      x_251_phi = x_238;
+      if (x_238) {
+        int const x_242 = p.x;
+        int const x_245 = p.y;
+        int const x_249 = (*(tint_symbol_6)).arr[((x_242 - 2) + (x_245 * 16))];
+        x_250 = (x_249 == 0);
+        x_251_phi = x_250;
+      }
+      bool const x_251 = x_251_phi;
+      if (x_251) {
+        int const x_254 = d;
+        d = (x_254 - 1);
+        int const x_257 = p.x;
+        int const x_259 = p.y;
+        (*(tint_symbol_6)).arr[(x_257 + (x_259 * 16))] = 1;
+        int const x_264 = p.x;
+        int const x_267 = p.y;
+        (*(tint_symbol_6)).arr[((x_264 - 1) + (x_267 * 16))] = 1;
+        int const x_272 = p.x;
+        int const x_275 = p.y;
+        (*(tint_symbol_6)).arr[((x_272 - 2) + (x_275 * 16))] = 1;
+        int const x_280 = p.x;
+        p.x = (x_280 - 2);
+      }
+      int const x_283 = d;
+      bool const x_284 = (x_283 >= 0);
+      x_290_phi = x_284;
+      if (x_284) {
+        int const x_288 = p.y;
+        x_289 = (x_288 > 0);
+        x_290_phi = x_289;
+      }
+      bool const x_290 = x_290_phi;
+      x_303_phi = x_290;
+      if (x_290) {
+        int const x_294 = p.x;
+        int const x_296 = p.y;
+        int const x_301 = (*(tint_symbol_6)).arr[(x_294 + ((x_296 - 2) * 16))];
+        x_302 = (x_301 == 0);
+        x_303_phi = x_302;
+      }
+      bool const x_303 = x_303_phi;
+      if (x_303) {
+        int const x_306 = d;
+        d = (x_306 - 1);
+        int const x_309 = p.x;
+        int const x_311 = p.y;
+        (*(tint_symbol_6)).arr[(x_309 + (x_311 * 16))] = 1;
+        int const x_316 = p.x;
+        int const x_318 = p.y;
+        (*(tint_symbol_6)).arr[(x_316 + ((x_318 - 1) * 16))] = 1;
+        int const x_324 = p.x;
+        int const x_326 = p.y;
+        (*(tint_symbol_6)).arr[(x_324 + ((x_326 - 2) * 16))] = 1;
+        int const x_332 = p.y;
+        p.y = (x_332 - 2);
+      }
+      int const x_335 = d;
+      bool const x_336 = (x_335 >= 0);
+      x_342_phi = x_336;
+      if (x_336) {
+        int const x_340 = p.x;
+        x_341 = (x_340 < 14);
+        x_342_phi = x_341;
+      }
+      bool const x_342 = x_342_phi;
+      x_355_phi = x_342;
+      if (x_342) {
+        int const x_346 = p.x;
+        int const x_349 = p.y;
+        int const x_353 = (*(tint_symbol_6)).arr[((x_346 + 2) + (x_349 * 16))];
+        x_354 = (x_353 == 0);
+        x_355_phi = x_354;
+      }
+      bool const x_355 = x_355_phi;
+      if (x_355) {
+        int const x_358 = d;
+        d = (x_358 - 1);
+        int const x_361 = p.x;
+        int const x_363 = p.y;
+        (*(tint_symbol_6)).arr[(x_361 + (x_363 * 16))] = 1;
+        int const x_368 = p.x;
+        int const x_371 = p.y;
+        (*(tint_symbol_6)).arr[((x_368 + 1) + (x_371 * 16))] = 1;
+        int const x_376 = p.x;
+        int const x_379 = p.y;
+        (*(tint_symbol_6)).arr[((x_376 + 2) + (x_379 * 16))] = 1;
+        int const x_384 = p.x;
+        p.x = (x_384 + 2);
+      }
+      int const x_387 = d;
+      bool const x_388 = (x_387 >= 0);
+      x_394_phi = x_388;
+      if (x_388) {
+        int const x_392 = p.y;
+        x_393 = (x_392 < 14);
+        x_394_phi = x_393;
+      }
+      bool const x_394 = x_394_phi;
+      x_407_phi = x_394;
+      if (x_394) {
+        int const x_398 = p.x;
+        int const x_400 = p.y;
+        int const x_405 = (*(tint_symbol_6)).arr[(x_398 + ((x_400 + 2) * 16))];
+        x_406 = (x_405 == 0);
+        x_407_phi = x_406;
+      }
+      bool const x_407 = x_407_phi;
+      if (x_407) {
+        int const x_410 = d;
+        d = (x_410 - 1);
+        int const x_413 = p.x;
+        int const x_415 = p.y;
+        (*(tint_symbol_6)).arr[(x_413 + (x_415 * 16))] = 1;
+        int const x_420 = p.x;
+        int const x_422 = p.y;
+        (*(tint_symbol_6)).arr[(x_420 + ((x_422 + 1) * 16))] = 1;
+        int const x_428 = p.x;
+        int const x_430 = p.y;
+        (*(tint_symbol_6)).arr[(x_428 + ((x_430 + 2) * 16))] = 1;
+        int const x_436 = p.y;
+        p.y = (x_436 + 2);
+      }
+    }
+    int const x_440 = ipos.y;
+    int const x_443 = ipos.x;
+    int const x_446 = (*(tint_symbol_6)).arr[((x_440 * 16) + x_443)];
+    if ((x_446 == 1)) {
+      *(tint_symbol_8) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      return;
+    }
+    {
+      bool const x_450 = canwalk;
+      if (x_450) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_8) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread tint_array_wrapper tint_symbol_10 = {};
+  thread float2x4 tint_symbol_11 = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..efc1a09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.spvasm
@@ -0,0 +1,791 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 520
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %map "map"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %x_60 "x_60"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %x_110 "x_110"
+               OpName %x_130 "x_130"
+               OpName %x_150 "x_150"
+               OpName %x_171 "x_171"
+               OpName %x_111_phi "x_111_phi"
+               OpName %x_131_phi "x_131_phi"
+               OpName %x_151_phi "x_151_phi"
+               OpName %x_172_phi "x_172_phi"
+               OpName %x_237 "x_237"
+               OpName %x_250 "x_250"
+               OpName %x_289 "x_289"
+               OpName %x_302 "x_302"
+               OpName %x_341 "x_341"
+               OpName %x_354 "x_354"
+               OpName %x_393 "x_393"
+               OpName %x_406 "x_406"
+               OpName %x_238_phi "x_238_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_290_phi "x_290_phi"
+               OpName %x_303_phi "x_303_phi"
+               OpName %x_342_phi "x_342_phi"
+               OpName %x_355_phi "x_355_phi"
+               OpName %x_394_phi "x_394_phi"
+               OpName %x_407_phi "x_407_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+         %16 = OpConstantNull %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private %16
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%mat2v4float = OpTypeMatrix %v4float 2
+    %float_0 = OpConstant %float 0
+         %20 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %21 = OpConstantComposite %mat2v4float %20 %20
+%_ptr_Private_mat2v4float = OpTypePointer Private %mat2v4float
+       %x_60 = OpVariable %_ptr_Private_mat2v4float Private %21
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %28 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %34 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %38 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %41 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %46 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %int_256 = OpConstant %int 256
+     %int_14 = OpConstant %int 14
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %float_16 = OpConstant %float 16
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %92 = OpConstantComposite %v2int %int_0 %int_0
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+        %501 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %506 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %507 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %28
+         %31 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %34
+       %ipos = OpVariable %_ptr_Function_v2int Function %38
+          %i = OpVariable %_ptr_Function_int Function %41
+          %p = OpVariable %_ptr_Function_v2int Function %38
+    %canwalk = OpVariable %_ptr_Function_bool Function %46
+          %v = OpVariable %_ptr_Function_int Function %41
+ %directions = OpVariable %_ptr_Function_int Function %41
+          %j = OpVariable %_ptr_Function_int Function %41
+          %d = OpVariable %_ptr_Function_int Function %41
+      %x_110 = OpVariable %_ptr_Function_bool Function %46
+      %x_130 = OpVariable %_ptr_Function_bool Function %46
+      %x_150 = OpVariable %_ptr_Function_bool Function %46
+      %x_171 = OpVariable %_ptr_Function_bool Function %46
+  %x_111_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_131_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_151_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_172_phi = OpVariable %_ptr_Function_bool Function %46
+      %x_237 = OpVariable %_ptr_Function_bool Function %46
+      %x_250 = OpVariable %_ptr_Function_bool Function %46
+      %x_289 = OpVariable %_ptr_Function_bool Function %46
+      %x_302 = OpVariable %_ptr_Function_bool Function %46
+      %x_341 = OpVariable %_ptr_Function_bool Function %46
+      %x_354 = OpVariable %_ptr_Function_bool Function %46
+      %x_393 = OpVariable %_ptr_Function_bool Function %46
+      %x_406 = OpVariable %_ptr_Function_bool Function %46
+  %x_238_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_251_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_290_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_303_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_342_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_355_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_394_phi = OpVariable %_ptr_Function_bool Function %46
+  %x_407_phi = OpVariable %_ptr_Function_bool Function %46
+         %51 = OpLoad %v4float %gl_FragCoord
+         %54 = OpAccessChain %_ptr_Uniform_v2float %x_7 %uint_0
+         %55 = OpLoad %v2float %54
+         %59 = OpISub %int %int_256 %int_14
+         %56 = OpSNegate %int %59
+         %60 = OpCompositeExtract %float %51 0
+         %61 = OpCompositeExtract %float %51 1
+         %62 = OpCompositeConstruct %v2float %60 %61
+         %63 = OpFDiv %v2float %62 %55
+               OpStore %pos %63
+         %65 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %66 = OpLoad %float %65
+         %68 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %69 = OpLoad %float %68
+         %72 = OpFMul %float %66 %float_16
+         %70 = OpConvertFToS %int %72
+         %74 = OpFMul %float %69 %float_16
+         %73 = OpConvertFToS %int %74
+         %75 = OpCompositeConstruct %v2int %70 %73
+               OpStore %ipos %75
+               OpStore %i %int_0
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+         %81 = OpLoad %int %i
+         %82 = OpSLessThan %bool %81 %int_256
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %78
+         %83 = OpLabel
+         %86 = OpLoad %int %i
+         %88 = OpAccessChain %_ptr_Private_int %map %86
+               OpStore %88 %int_0
+               OpBranch %79
+         %79 = OpLabel
+         %89 = OpLoad %int %i
+         %91 = OpIAdd %int %89 %int_1
+               OpStore %i %91
+               OpBranch %77
+         %78 = OpLabel
+               OpStore %p %92
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+        %106 = OpLoad %int %v
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %v %107
+               OpStore %directions %int_0
+        %108 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %109 = OpLoad %int %108
+        %110 = OpSGreaterThan %bool %109 %int_0
+               OpStore %x_111_phi %110
+               OpSelectionMerge %111 None
+               OpBranchConditional %110 %112 %111
+        %112 = OpLabel
+        %113 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %114 = OpLoad %int %113
+        %115 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %116 = OpLoad %int %115
+        %118 = OpISub %int %114 %int_2
+        %120 = OpIMul %int %116 %int_16
+        %121 = OpIAdd %int %118 %120
+        %122 = OpAccessChain %_ptr_Private_int %map %121
+        %123 = OpLoad %int %122
+        %124 = OpIEqual %bool %123 %int_0
+               OpStore %x_110 %124
+        %125 = OpLoad %bool %x_110
+               OpStore %x_111_phi %125
+               OpBranch %111
+        %111 = OpLabel
+        %126 = OpLoad %bool %x_111_phi
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %127
+        %128 = OpLabel
+        %129 = OpLoad %int %directions
+        %130 = OpIAdd %int %129 %int_1
+               OpStore %directions %130
+               OpBranch %127
+        %127 = OpLabel
+        %131 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %132 = OpLoad %int %131
+        %133 = OpSGreaterThan %bool %132 %int_0
+               OpStore %x_131_phi %133
+               OpSelectionMerge %134 None
+               OpBranchConditional %133 %135 %134
+        %135 = OpLabel
+        %136 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %139 = OpLoad %int %138
+        %140 = OpISub %int %139 %int_2
+        %141 = OpIMul %int %140 %int_16
+        %142 = OpIAdd %int %137 %141
+        %143 = OpAccessChain %_ptr_Private_int %map %142
+        %144 = OpLoad %int %143
+        %145 = OpIEqual %bool %144 %int_0
+               OpStore %x_130 %145
+        %146 = OpLoad %bool %x_130
+               OpStore %x_131_phi %146
+               OpBranch %134
+        %134 = OpLabel
+        %147 = OpLoad %bool %x_131_phi
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %148
+        %149 = OpLabel
+        %150 = OpLoad %int %directions
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %directions %151
+               OpBranch %148
+        %148 = OpLabel
+        %152 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %153 = OpLoad %int %152
+        %154 = OpSLessThan %bool %153 %int_14
+               OpStore %x_151_phi %154
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %158 = OpLoad %int %157
+        %159 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %160 = OpLoad %int %159
+        %161 = OpIAdd %int %158 %int_2
+        %162 = OpIMul %int %160 %int_16
+        %163 = OpIAdd %int %161 %162
+        %164 = OpAccessChain %_ptr_Private_int %map %163
+        %165 = OpLoad %int %164
+        %166 = OpIEqual %bool %165 %int_0
+               OpStore %x_150 %166
+        %167 = OpLoad %bool %x_150
+               OpStore %x_151_phi %167
+               OpBranch %155
+        %155 = OpLabel
+        %168 = OpLoad %bool %x_151_phi
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %169
+        %170 = OpLabel
+        %171 = OpLoad %int %directions
+        %172 = OpIAdd %int %171 %int_1
+               OpStore %directions %172
+               OpBranch %169
+        %169 = OpLabel
+        %173 = OpISub %int %int_256 %56
+        %174 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %175 = OpLoad %int %174
+        %176 = OpSLessThan %bool %175 %int_14
+               OpStore %x_172_phi %176
+               OpSelectionMerge %177 None
+               OpBranchConditional %176 %178 %177
+        %178 = OpLabel
+        %179 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %180 = OpLoad %int %179
+        %181 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %182 = OpLoad %int %181
+        %183 = OpIAdd %int %182 %int_2
+        %184 = OpIMul %int %183 %int_16
+        %185 = OpIAdd %int %180 %184
+        %186 = OpAccessChain %_ptr_Private_int %map %185
+        %187 = OpLoad %int %186
+        %188 = OpIEqual %bool %187 %int_0
+               OpStore %x_171 %188
+        %189 = OpLoad %bool %x_171
+               OpStore %x_172_phi %189
+               OpBranch %177
+        %177 = OpLabel
+        %190 = OpLoad %bool %x_172_phi
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %191
+        %192 = OpLabel
+        %193 = OpLoad %int %directions
+        %194 = OpIAdd %int %193 %int_1
+               OpStore %directions %194
+               OpBranch %191
+        %191 = OpLabel
+        %211 = OpLoad %int %directions
+        %212 = OpIEqual %bool %211 %int_0
+               OpSelectionMerge %213 None
+               OpBranchConditional %212 %214 %215
+        %214 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %217
+        %217 = OpLabel
+               OpLoopMerge %218 %219 None
+               OpBranch %220
+        %220 = OpLabel
+        %221 = OpLoad %int %i
+        %223 = OpSLessThan %bool %221 %int_8
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %226
+        %225 = OpLabel
+               OpBranch %224
+        %226 = OpLabel
+               OpBranch %218
+        %224 = OpLabel
+               OpStore %j %int_0
+        %227 = OpISub %int %173 %221
+               OpStore %x_60 %21
+               OpSelectionMerge %228 None
+               OpBranchConditional %false %229 %228
+        %229 = OpLabel
+               OpBranch %219
+        %228 = OpLabel
+               OpBranch %230
+        %230 = OpLabel
+               OpLoopMerge %231 %232 None
+               OpBranch %233
+        %233 = OpLabel
+        %234 = OpLoad %int %j
+        %235 = OpSLessThan %bool %234 %int_8
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %238
+        %237 = OpLabel
+               OpBranch %236
+        %238 = OpLabel
+               OpBranch %231
+        %236 = OpLabel
+        %239 = OpLoad %int %j
+        %240 = OpLoad %int %i
+        %241 = OpIMul %int %239 %int_2
+        %242 = OpIMul %int %240 %int_2
+        %243 = OpIMul %int %242 %int_16
+        %244 = OpIAdd %int %241 %243
+        %245 = OpAccessChain %_ptr_Private_int %map %244
+        %246 = OpLoad %int %245
+        %247 = OpIEqual %bool %246 %int_0
+               OpSelectionMerge %248 None
+               OpBranchConditional %247 %249 %248
+        %249 = OpLabel
+        %250 = OpLoad %int %j
+        %251 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %252 = OpIMul %int %250 %int_2
+               OpStore %251 %252
+        %253 = OpLoad %int %i
+        %254 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %255 = OpIMul %int %253 %int_2
+               OpStore %254 %255
+               OpStore %canwalk %true
+               OpBranch %248
+        %248 = OpLabel
+               OpBranch %232
+        %232 = OpLabel
+        %256 = OpLoad %int %j
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %j %257
+               OpBranch %230
+        %231 = OpLabel
+               OpBranch %219
+        %219 = OpLabel
+        %258 = OpLoad %int %i
+        %259 = OpIAdd %int %258 %int_1
+               OpStore %i %259
+               OpBranch %217
+        %218 = OpLabel
+        %260 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %261 = OpLoad %int %260
+        %262 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %263 = OpLoad %int %262
+        %264 = OpIMul %int %263 %int_16
+        %265 = OpIAdd %int %261 %264
+        %266 = OpAccessChain %_ptr_Private_int %map %265
+               OpStore %266 %int_1
+               OpBranch %213
+        %215 = OpLabel
+        %267 = OpLoad %int %v
+        %268 = OpLoad %int %directions
+        %269 = OpSMod %int %267 %268
+               OpStore %d %269
+        %270 = OpLoad %int %directions
+        %271 = OpLoad %int %v
+        %272 = OpIAdd %int %271 %270
+               OpStore %v %272
+        %273 = OpLoad %int %d
+        %274 = OpSGreaterThanEqual %bool %273 %int_0
+               OpStore %x_238_phi %274
+               OpSelectionMerge %275 None
+               OpBranchConditional %274 %276 %275
+        %276 = OpLabel
+        %277 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %278 = OpLoad %int %277
+        %279 = OpSGreaterThan %bool %278 %int_0
+               OpStore %x_237 %279
+        %280 = OpLoad %bool %x_237
+               OpStore %x_238_phi %280
+               OpBranch %275
+        %275 = OpLabel
+        %281 = OpLoad %bool %x_238_phi
+               OpStore %x_251_phi %281
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %282
+        %283 = OpLabel
+        %284 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %285 = OpLoad %int %284
+        %286 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %287 = OpLoad %int %286
+        %288 = OpISub %int %285 %int_2
+        %289 = OpIMul %int %287 %int_16
+        %290 = OpIAdd %int %288 %289
+        %291 = OpAccessChain %_ptr_Private_int %map %290
+        %292 = OpLoad %int %291
+        %293 = OpIEqual %bool %292 %int_0
+               OpStore %x_250 %293
+        %294 = OpLoad %bool %x_250
+               OpStore %x_251_phi %294
+               OpBranch %282
+        %282 = OpLabel
+        %295 = OpLoad %bool %x_251_phi
+               OpSelectionMerge %296 None
+               OpBranchConditional %295 %297 %296
+        %297 = OpLabel
+        %298 = OpLoad %int %d
+        %299 = OpISub %int %298 %int_1
+               OpStore %d %299
+        %300 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %301 = OpLoad %int %300
+        %302 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %303 = OpLoad %int %302
+        %304 = OpIMul %int %303 %int_16
+        %305 = OpIAdd %int %301 %304
+        %306 = OpAccessChain %_ptr_Private_int %map %305
+               OpStore %306 %int_1
+        %307 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %308 = OpLoad %int %307
+        %309 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %310 = OpLoad %int %309
+        %311 = OpISub %int %308 %int_1
+        %312 = OpIMul %int %310 %int_16
+        %313 = OpIAdd %int %311 %312
+        %314 = OpAccessChain %_ptr_Private_int %map %313
+               OpStore %314 %int_1
+        %315 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %316 = OpLoad %int %315
+        %317 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %318 = OpLoad %int %317
+        %319 = OpISub %int %316 %int_2
+        %320 = OpIMul %int %318 %int_16
+        %321 = OpIAdd %int %319 %320
+        %322 = OpAccessChain %_ptr_Private_int %map %321
+               OpStore %322 %int_1
+        %323 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %324 = OpLoad %int %323
+        %325 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %326 = OpISub %int %324 %int_2
+               OpStore %325 %326
+               OpBranch %296
+        %296 = OpLabel
+        %327 = OpLoad %int %d
+        %328 = OpSGreaterThanEqual %bool %327 %int_0
+               OpStore %x_290_phi %328
+               OpSelectionMerge %329 None
+               OpBranchConditional %328 %330 %329
+        %330 = OpLabel
+        %331 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %332 = OpLoad %int %331
+        %333 = OpSGreaterThan %bool %332 %int_0
+               OpStore %x_289 %333
+        %334 = OpLoad %bool %x_289
+               OpStore %x_290_phi %334
+               OpBranch %329
+        %329 = OpLabel
+        %335 = OpLoad %bool %x_290_phi
+               OpStore %x_303_phi %335
+               OpSelectionMerge %336 None
+               OpBranchConditional %335 %337 %336
+        %337 = OpLabel
+        %338 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %339 = OpLoad %int %338
+        %340 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %341 = OpLoad %int %340
+        %342 = OpISub %int %341 %int_2
+        %343 = OpIMul %int %342 %int_16
+        %344 = OpIAdd %int %339 %343
+        %345 = OpAccessChain %_ptr_Private_int %map %344
+        %346 = OpLoad %int %345
+        %347 = OpIEqual %bool %346 %int_0
+               OpStore %x_302 %347
+        %348 = OpLoad %bool %x_302
+               OpStore %x_303_phi %348
+               OpBranch %336
+        %336 = OpLabel
+        %349 = OpLoad %bool %x_303_phi
+               OpSelectionMerge %350 None
+               OpBranchConditional %349 %351 %350
+        %351 = OpLabel
+        %352 = OpLoad %int %d
+        %353 = OpISub %int %352 %int_1
+               OpStore %d %353
+        %354 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %355 = OpLoad %int %354
+        %356 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %357 = OpLoad %int %356
+        %358 = OpIMul %int %357 %int_16
+        %359 = OpIAdd %int %355 %358
+        %360 = OpAccessChain %_ptr_Private_int %map %359
+               OpStore %360 %int_1
+        %361 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %362 = OpLoad %int %361
+        %363 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %364 = OpLoad %int %363
+        %365 = OpISub %int %364 %int_1
+        %366 = OpIMul %int %365 %int_16
+        %367 = OpIAdd %int %362 %366
+        %368 = OpAccessChain %_ptr_Private_int %map %367
+               OpStore %368 %int_1
+        %369 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %370 = OpLoad %int %369
+        %371 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %372 = OpLoad %int %371
+        %373 = OpISub %int %372 %int_2
+        %374 = OpIMul %int %373 %int_16
+        %375 = OpIAdd %int %370 %374
+        %376 = OpAccessChain %_ptr_Private_int %map %375
+               OpStore %376 %int_1
+        %377 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %378 = OpLoad %int %377
+        %379 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %380 = OpISub %int %378 %int_2
+               OpStore %379 %380
+               OpBranch %350
+        %350 = OpLabel
+        %381 = OpLoad %int %d
+        %382 = OpSGreaterThanEqual %bool %381 %int_0
+               OpStore %x_342_phi %382
+               OpSelectionMerge %383 None
+               OpBranchConditional %382 %384 %383
+        %384 = OpLabel
+        %385 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %386 = OpLoad %int %385
+        %387 = OpSLessThan %bool %386 %int_14
+               OpStore %x_341 %387
+        %388 = OpLoad %bool %x_341
+               OpStore %x_342_phi %388
+               OpBranch %383
+        %383 = OpLabel
+        %389 = OpLoad %bool %x_342_phi
+               OpStore %x_355_phi %389
+               OpSelectionMerge %390 None
+               OpBranchConditional %389 %391 %390
+        %391 = OpLabel
+        %392 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %393 = OpLoad %int %392
+        %394 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %395 = OpLoad %int %394
+        %396 = OpIAdd %int %393 %int_2
+        %397 = OpIMul %int %395 %int_16
+        %398 = OpIAdd %int %396 %397
+        %399 = OpAccessChain %_ptr_Private_int %map %398
+        %400 = OpLoad %int %399
+        %401 = OpIEqual %bool %400 %int_0
+               OpStore %x_354 %401
+        %402 = OpLoad %bool %x_354
+               OpStore %x_355_phi %402
+               OpBranch %390
+        %390 = OpLabel
+        %403 = OpLoad %bool %x_355_phi
+               OpSelectionMerge %404 None
+               OpBranchConditional %403 %405 %404
+        %405 = OpLabel
+        %406 = OpLoad %int %d
+        %407 = OpISub %int %406 %int_1
+               OpStore %d %407
+        %408 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %409 = OpLoad %int %408
+        %410 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %411 = OpLoad %int %410
+        %412 = OpIMul %int %411 %int_16
+        %413 = OpIAdd %int %409 %412
+        %414 = OpAccessChain %_ptr_Private_int %map %413
+               OpStore %414 %int_1
+        %415 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %416 = OpLoad %int %415
+        %417 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %418 = OpLoad %int %417
+        %419 = OpIAdd %int %416 %int_1
+        %420 = OpIMul %int %418 %int_16
+        %421 = OpIAdd %int %419 %420
+        %422 = OpAccessChain %_ptr_Private_int %map %421
+               OpStore %422 %int_1
+        %423 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %424 = OpLoad %int %423
+        %425 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %426 = OpLoad %int %425
+        %427 = OpIAdd %int %424 %int_2
+        %428 = OpIMul %int %426 %int_16
+        %429 = OpIAdd %int %427 %428
+        %430 = OpAccessChain %_ptr_Private_int %map %429
+               OpStore %430 %int_1
+        %431 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %432 = OpLoad %int %431
+        %433 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %434 = OpIAdd %int %432 %int_2
+               OpStore %433 %434
+               OpBranch %404
+        %404 = OpLabel
+        %435 = OpLoad %int %d
+        %436 = OpSGreaterThanEqual %bool %435 %int_0
+               OpStore %x_394_phi %436
+               OpSelectionMerge %437 None
+               OpBranchConditional %436 %438 %437
+        %438 = OpLabel
+        %439 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %440 = OpLoad %int %439
+        %441 = OpSLessThan %bool %440 %int_14
+               OpStore %x_393 %441
+        %442 = OpLoad %bool %x_393
+               OpStore %x_394_phi %442
+               OpBranch %437
+        %437 = OpLabel
+        %443 = OpLoad %bool %x_394_phi
+               OpStore %x_407_phi %443
+               OpSelectionMerge %444 None
+               OpBranchConditional %443 %445 %444
+        %445 = OpLabel
+        %446 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %447 = OpLoad %int %446
+        %448 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %449 = OpLoad %int %448
+        %450 = OpIAdd %int %449 %int_2
+        %451 = OpIMul %int %450 %int_16
+        %452 = OpIAdd %int %447 %451
+        %453 = OpAccessChain %_ptr_Private_int %map %452
+        %454 = OpLoad %int %453
+        %455 = OpIEqual %bool %454 %int_0
+               OpStore %x_406 %455
+        %456 = OpLoad %bool %x_406
+               OpStore %x_407_phi %456
+               OpBranch %444
+        %444 = OpLabel
+        %457 = OpLoad %bool %x_407_phi
+               OpSelectionMerge %458 None
+               OpBranchConditional %457 %459 %458
+        %459 = OpLabel
+        %460 = OpLoad %int %d
+        %461 = OpISub %int %460 %int_1
+               OpStore %d %461
+        %462 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %463 = OpLoad %int %462
+        %464 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %465 = OpLoad %int %464
+        %466 = OpIMul %int %465 %int_16
+        %467 = OpIAdd %int %463 %466
+        %468 = OpAccessChain %_ptr_Private_int %map %467
+               OpStore %468 %int_1
+        %469 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %470 = OpLoad %int %469
+        %471 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %472 = OpLoad %int %471
+        %473 = OpIAdd %int %472 %int_1
+        %474 = OpIMul %int %473 %int_16
+        %475 = OpIAdd %int %470 %474
+        %476 = OpAccessChain %_ptr_Private_int %map %475
+               OpStore %476 %int_1
+        %477 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %478 = OpLoad %int %477
+        %479 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %480 = OpLoad %int %479
+        %481 = OpIAdd %int %480 %int_2
+        %482 = OpIMul %int %481 %int_16
+        %483 = OpIAdd %int %478 %482
+        %484 = OpAccessChain %_ptr_Private_int %map %483
+               OpStore %484 %int_1
+        %485 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %486 = OpLoad %int %485
+        %487 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %488 = OpIAdd %int %486 %int_2
+               OpStore %487 %488
+               OpBranch %458
+        %458 = OpLabel
+               OpBranch %213
+        %213 = OpLabel
+        %489 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %490 = OpLoad %int %489
+        %491 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %492 = OpLoad %int %491
+        %493 = OpIMul %int %490 %int_16
+        %494 = OpIAdd %int %493 %492
+        %495 = OpAccessChain %_ptr_Private_int %map %494
+        %496 = OpLoad %int %495
+        %497 = OpIEqual %bool %496 %int_1
+               OpSelectionMerge %498 None
+               OpBranchConditional %497 %499 %498
+        %499 = OpLabel
+               OpStore %x_GLF_color %501
+               OpReturn
+        %498 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+        %502 = OpLoad %bool %canwalk
+               OpSelectionMerge %503 None
+               OpBranchConditional %502 %504 %505
+        %504 = OpLabel
+               OpBranch %503
+        %505 = OpLabel
+               OpBranch %95
+        %503 = OpLabel
+               OpBranch %94
+         %95 = OpLabel
+               OpStore %x_GLF_color %506
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %507
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %511 = OpLabel
+        %512 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %512
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %28
+        %514 = OpLabel
+        %515 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %515
+        %516 = OpFunctionCall %void %main_1
+        %518 = OpLoad %v4float %x_GLF_color
+        %519 = OpCompositeConstruct %main_out %518
+        %517 = OpFunctionCall %void %tint_symbol_3 %519
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 96[%96] is not post dominated by the back-edge block 503[%503]
+  %503 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..14e531e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl.expected.wgsl
@@ -0,0 +1,357 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> x_60 : mat2x4<f32> = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_67 : vec2<f32> = x_7.resolution;
+  let x_68 : i32 = -((256 - 14));
+  pos = (vec2<f32>(x_63.x, x_63.y) / x_67);
+  let x_71 : f32 = pos.x;
+  let x_75 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_71 * 16.0)), i32((x_75 * 16.0)));
+  i = 0;
+  loop {
+    let x_83 : i32 = i;
+    if ((x_83 < 256)) {
+    } else {
+      break;
+    }
+    let x_86 : i32 = i;
+    map[x_86] = 0;
+
+    continuing {
+      let x_88 : i32 = i;
+      i = (x_88 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_110 : bool;
+    var x_130 : bool;
+    var x_150 : bool;
+    var x_171 : bool;
+    var x_111_phi : bool;
+    var x_131_phi : bool;
+    var x_151_phi : bool;
+    var x_172_phi : bool;
+    let x_94 : i32 = v;
+    v = (x_94 + 1);
+    directions = 0;
+    let x_97 : i32 = p.x;
+    let x_98 : bool = (x_97 > 0);
+    x_111_phi = x_98;
+    if (x_98) {
+      let x_102 : i32 = p.x;
+      let x_105 : i32 = p.y;
+      let x_109 : i32 = map[((x_102 - 2) + (x_105 * 16))];
+      x_110 = (x_109 == 0);
+      x_111_phi = x_110;
+    }
+    let x_111 : bool = x_111_phi;
+    if (x_111) {
+      let x_114 : i32 = directions;
+      directions = (x_114 + 1);
+    }
+    let x_117 : i32 = p.y;
+    let x_118 : bool = (x_117 > 0);
+    x_131_phi = x_118;
+    if (x_118) {
+      let x_122 : i32 = p.x;
+      let x_124 : i32 = p.y;
+      let x_129 : i32 = map[(x_122 + ((x_124 - 2) * 16))];
+      x_130 = (x_129 == 0);
+      x_131_phi = x_130;
+    }
+    let x_131 : bool = x_131_phi;
+    if (x_131) {
+      let x_134 : i32 = directions;
+      directions = (x_134 + 1);
+    }
+    let x_137 : i32 = p.x;
+    let x_138 : bool = (x_137 < 14);
+    x_151_phi = x_138;
+    if (x_138) {
+      let x_142 : i32 = p.x;
+      let x_145 : i32 = p.y;
+      let x_149 : i32 = map[((x_142 + 2) + (x_145 * 16))];
+      x_150 = (x_149 == 0);
+      x_151_phi = x_150;
+    }
+    let x_151 : bool = x_151_phi;
+    if (x_151) {
+      let x_154 : i32 = directions;
+      directions = (x_154 + 1);
+    }
+    let x_156 : i32 = (256 - x_68);
+    let x_158 : i32 = p.y;
+    let x_159 : bool = (x_158 < 14);
+    x_172_phi = x_159;
+    if (x_159) {
+      let x_163 : i32 = p.x;
+      let x_165 : i32 = p.y;
+      let x_170 : i32 = map[(x_163 + ((x_165 + 2) * 16))];
+      x_171 = (x_170 == 0);
+      x_172_phi = x_171;
+    }
+    let x_172 : bool = x_172_phi;
+    if (x_172) {
+      let x_175 : i32 = directions;
+      directions = (x_175 + 1);
+    }
+    var x_237 : bool;
+    var x_250 : bool;
+    var x_289 : bool;
+    var x_302 : bool;
+    var x_341 : bool;
+    var x_354 : bool;
+    var x_393 : bool;
+    var x_406 : bool;
+    var x_238_phi : bool;
+    var x_251_phi : bool;
+    var x_290_phi : bool;
+    var x_303_phi : bool;
+    var x_342_phi : bool;
+    var x_355_phi : bool;
+    var x_394_phi : bool;
+    var x_407_phi : bool;
+    let x_177 : i32 = directions;
+    if ((x_177 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_186 : i32 = i;
+        if ((x_186 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        let x_189 : i32 = (x_156 - x_186);
+        x_60 = mat2x4<f32>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+        if (false) {
+          continue;
+        }
+        loop {
+          let x_194 : i32 = j;
+          if ((x_194 < 8)) {
+          } else {
+            break;
+          }
+          let x_197 : i32 = j;
+          let x_199 : i32 = i;
+          let x_204 : i32 = map[((x_197 * 2) + ((x_199 * 2) * 16))];
+          if ((x_204 == 0)) {
+            let x_208 : i32 = j;
+            p.x = (x_208 * 2);
+            let x_211 : i32 = i;
+            p.y = (x_211 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_214 : i32 = j;
+            j = (x_214 + 1);
+          }
+        }
+
+        continuing {
+          let x_216 : i32 = i;
+          i = (x_216 + 1);
+        }
+      }
+      let x_219 : i32 = p.x;
+      let x_221 : i32 = p.y;
+      map[(x_219 + (x_221 * 16))] = 1;
+    } else {
+      let x_225 : i32 = v;
+      let x_226 : i32 = directions;
+      d = (x_225 % x_226);
+      let x_228 : i32 = directions;
+      let x_229 : i32 = v;
+      v = (x_229 + x_228);
+      let x_231 : i32 = d;
+      let x_232 : bool = (x_231 >= 0);
+      x_238_phi = x_232;
+      if (x_232) {
+        let x_236 : i32 = p.x;
+        x_237 = (x_236 > 0);
+        x_238_phi = x_237;
+      }
+      let x_238 : bool = x_238_phi;
+      x_251_phi = x_238;
+      if (x_238) {
+        let x_242 : i32 = p.x;
+        let x_245 : i32 = p.y;
+        let x_249 : i32 = map[((x_242 - 2) + (x_245 * 16))];
+        x_250 = (x_249 == 0);
+        x_251_phi = x_250;
+      }
+      let x_251 : bool = x_251_phi;
+      if (x_251) {
+        let x_254 : i32 = d;
+        d = (x_254 - 1);
+        let x_257 : i32 = p.x;
+        let x_259 : i32 = p.y;
+        map[(x_257 + (x_259 * 16))] = 1;
+        let x_264 : i32 = p.x;
+        let x_267 : i32 = p.y;
+        map[((x_264 - 1) + (x_267 * 16))] = 1;
+        let x_272 : i32 = p.x;
+        let x_275 : i32 = p.y;
+        map[((x_272 - 2) + (x_275 * 16))] = 1;
+        let x_280 : i32 = p.x;
+        p.x = (x_280 - 2);
+      }
+      let x_283 : i32 = d;
+      let x_284 : bool = (x_283 >= 0);
+      x_290_phi = x_284;
+      if (x_284) {
+        let x_288 : i32 = p.y;
+        x_289 = (x_288 > 0);
+        x_290_phi = x_289;
+      }
+      let x_290 : bool = x_290_phi;
+      x_303_phi = x_290;
+      if (x_290) {
+        let x_294 : i32 = p.x;
+        let x_296 : i32 = p.y;
+        let x_301 : i32 = map[(x_294 + ((x_296 - 2) * 16))];
+        x_302 = (x_301 == 0);
+        x_303_phi = x_302;
+      }
+      let x_303 : bool = x_303_phi;
+      if (x_303) {
+        let x_306 : i32 = d;
+        d = (x_306 - 1);
+        let x_309 : i32 = p.x;
+        let x_311 : i32 = p.y;
+        map[(x_309 + (x_311 * 16))] = 1;
+        let x_316 : i32 = p.x;
+        let x_318 : i32 = p.y;
+        map[(x_316 + ((x_318 - 1) * 16))] = 1;
+        let x_324 : i32 = p.x;
+        let x_326 : i32 = p.y;
+        map[(x_324 + ((x_326 - 2) * 16))] = 1;
+        let x_332 : i32 = p.y;
+        p.y = (x_332 - 2);
+      }
+      let x_335 : i32 = d;
+      let x_336 : bool = (x_335 >= 0);
+      x_342_phi = x_336;
+      if (x_336) {
+        let x_340 : i32 = p.x;
+        x_341 = (x_340 < 14);
+        x_342_phi = x_341;
+      }
+      let x_342 : bool = x_342_phi;
+      x_355_phi = x_342;
+      if (x_342) {
+        let x_346 : i32 = p.x;
+        let x_349 : i32 = p.y;
+        let x_353 : i32 = map[((x_346 + 2) + (x_349 * 16))];
+        x_354 = (x_353 == 0);
+        x_355_phi = x_354;
+      }
+      let x_355 : bool = x_355_phi;
+      if (x_355) {
+        let x_358 : i32 = d;
+        d = (x_358 - 1);
+        let x_361 : i32 = p.x;
+        let x_363 : i32 = p.y;
+        map[(x_361 + (x_363 * 16))] = 1;
+        let x_368 : i32 = p.x;
+        let x_371 : i32 = p.y;
+        map[((x_368 + 1) + (x_371 * 16))] = 1;
+        let x_376 : i32 = p.x;
+        let x_379 : i32 = p.y;
+        map[((x_376 + 2) + (x_379 * 16))] = 1;
+        let x_384 : i32 = p.x;
+        p.x = (x_384 + 2);
+      }
+      let x_387 : i32 = d;
+      let x_388 : bool = (x_387 >= 0);
+      x_394_phi = x_388;
+      if (x_388) {
+        let x_392 : i32 = p.y;
+        x_393 = (x_392 < 14);
+        x_394_phi = x_393;
+      }
+      let x_394 : bool = x_394_phi;
+      x_407_phi = x_394;
+      if (x_394) {
+        let x_398 : i32 = p.x;
+        let x_400 : i32 = p.y;
+        let x_405 : i32 = map[(x_398 + ((x_400 + 2) * 16))];
+        x_406 = (x_405 == 0);
+        x_407_phi = x_406;
+      }
+      let x_407 : bool = x_407_phi;
+      if (x_407) {
+        let x_410 : i32 = d;
+        d = (x_410 - 1);
+        let x_413 : i32 = p.x;
+        let x_415 : i32 = p.y;
+        map[(x_413 + (x_415 * 16))] = 1;
+        let x_420 : i32 = p.x;
+        let x_422 : i32 = p.y;
+        map[(x_420 + ((x_422 + 1) * 16))] = 1;
+        let x_428 : i32 = p.x;
+        let x_430 : i32 = p.y;
+        map[(x_428 + ((x_430 + 2) * 16))] = 1;
+        let x_436 : i32 = p.y;
+        p.y = (x_436 + 2);
+      }
+    }
+    let x_440 : i32 = ipos.y;
+    let x_443 : i32 = ipos.x;
+    let x_446 : i32 = map[((x_440 * 16) + x_443)];
+    if ((x_446 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_450 : bool = canwalk;
+      if (x_450) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm
new file mode 100644
index 0000000..2f78252
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm
@@ -0,0 +1,255 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %collision_vf2_vf4_ "collision(vf2;vf4;"
+               OpName %pos "pos"
+               OpName %quad "quad"
+               OpName %match_vf2_ "match(vf2;"
+               OpName %pos_0 "pos"
+               OpName %res "res"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %indexable "indexable"
+               OpName %indexable_0 "indexable"
+               OpName %indexable_1 "indexable"
+               OpName %indexable_2 "indexable"
+               OpName %lin "lin"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %param_1 "param"
+               OpName %index "index"
+               OpName %state "state"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %25 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+         %32 = OpTypeFunction %bool %_ptr_Function_v2float %_ptr_Function_v4float
+         %33 = OpTypeFunction %v4float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %44 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %53 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %54 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %55 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %57 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %60 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %62 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %64 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %66 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %67 = OpConstantComposite %_arr_v4float_uint_8 %53 %54 %55 %57 %60 %62 %64 %66
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+         %72 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %73 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %74 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %75 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %76 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %77 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %78 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %79 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %80 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %81 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %82 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %83 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %84 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %85 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %86 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %87 = OpConstantComposite %_arr_v4float_uint_16 %72 %73 %74 %75 %76 %77 %78 %79 %72 %80 %81 %82 %83 %84 %85 %86
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Private_int = OpTypePointer Private %int
+      %index = OpVariable %_ptr_Private_int Private
+%_arr_int_uint_16 = OpTypeArray %int %uint_16
+%_ptr_Private__arr_int_uint_16 = OpTypePointer Private %_arr_int_uint_16
+      %state = OpVariable %_ptr_Private__arr_int_uint_16 Private
+       %main = OpFunction %void None %25
+        %101 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+        %102 = OpLoad %v4float %gl_FragCoord
+        %103 = OpVectorShuffle %v2float %102 %102 0 1
+        %104 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %105 = OpLoad %v2float %104
+        %106 = OpFDiv %v2float %103 %105
+               OpStore %lin %106
+        %107 = OpLoad %v2float %lin
+        %108 = OpVectorTimesScalar %v2float %107 %float_32
+        %109 = OpExtInst %v2float %1 Floor %108
+               OpStore %lin %109
+        %110 = OpLoad %v2float %lin
+               OpStore %param_1 %110
+        %111 = OpFunctionCall %v4float %match_vf2_ %param_1
+               OpStore %_GLF_color %111
+               OpReturn
+               OpFunctionEnd
+%collision_vf2_vf4_ = OpFunction %bool None %32
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+       %quad = OpFunctionParameter %_ptr_Function_v4float
+        %112 = OpLabel
+        %113 = OpAccessChain %_ptr_Function_float %pos %uint_0
+        %114 = OpLoad %float %113
+        %115 = OpAccessChain %_ptr_Function_float %quad %uint_0
+        %116 = OpLoad %float %115
+        %117 = OpFOrdLessThan %bool %114 %116
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+               OpReturnValue %false
+        %118 = OpLabel
+        %120 = OpAccessChain %_ptr_Function_float %pos %uint_1
+        %121 = OpLoad %float %120
+        %122 = OpAccessChain %_ptr_Function_float %quad %uint_1
+        %123 = OpLoad %float %122
+        %124 = OpFOrdLessThan %bool %121 %123
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+               OpReturnValue %false
+        %125 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_float %pos %uint_0
+        %128 = OpLoad %float %127
+        %129 = OpAccessChain %_ptr_Function_float %quad %uint_0
+        %130 = OpLoad %float %129
+        %131 = OpAccessChain %_ptr_Function_float %quad %uint_2
+        %132 = OpLoad %float %131
+        %133 = OpFAdd %float %130 %132
+        %134 = OpFOrdGreaterThan %bool %128 %133
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %135
+        %136 = OpLabel
+               OpReturnValue %false
+        %135 = OpLabel
+        %137 = OpAccessChain %_ptr_Function_float %pos %uint_1
+        %138 = OpLoad %float %137
+        %139 = OpAccessChain %_ptr_Function_float %quad %uint_1
+        %140 = OpLoad %float %139
+        %141 = OpAccessChain %_ptr_Function_float %quad %uint_3
+        %142 = OpLoad %float %141
+        %143 = OpFAdd %float %140 %142
+        %144 = OpFOrdGreaterThan %bool %138 %143
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %145
+        %146 = OpLabel
+               OpReturnValue %false
+        %145 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+ %match_vf2_ = OpFunction %v4float None %33
+      %pos_0 = OpFunctionParameter %_ptr_Function_v2float
+        %147 = OpLabel
+        %res = OpVariable %_ptr_Function_v4float Function
+          %i = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v4float Function
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+%indexable_0 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+%indexable_2 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+               OpStore %res %44
+               OpStore %i %int_0
+               OpBranch %148
+        %148 = OpLabel
+               OpLoopMerge %149 %150 None
+               OpBranch %151
+        %151 = OpLabel
+        %152 = OpLoad %int %i
+        %153 = OpSLessThan %bool %152 %int_8
+               OpBranchConditional %153 %154 %149
+        %154 = OpLabel
+        %155 = OpLoad %int %i
+        %156 = OpLoad %v2float %pos_0
+               OpStore %param %156
+               OpStore %indexable %67
+        %157 = OpAccessChain %_ptr_Function_v4float %indexable %155
+        %158 = OpLoad %v4float %157
+               OpStore %param_0 %158
+        %159 = OpFunctionCall %bool %collision_vf2_vf4_ %param %param_0
+               OpSelectionMerge %160 None
+               OpBranchConditional %159 %161 %160
+        %161 = OpLabel
+        %162 = OpLoad %int %i
+               OpStore %indexable_0 %67
+        %163 = OpAccessChain %_ptr_Function_float %indexable_0 %162 %uint_0
+        %164 = OpLoad %float %163
+        %165 = OpConvertFToS %int %164
+        %166 = OpLoad %int %i
+               OpStore %indexable_1 %67
+        %167 = OpAccessChain %_ptr_Function_float %indexable_1 %166 %uint_1
+        %168 = OpLoad %float %167
+        %169 = OpConvertFToS %int %168
+        %170 = OpIMul %int %165 %169
+        %171 = OpLoad %int %i
+        %172 = OpIMul %int %171 %int_9
+        %173 = OpIAdd %int %170 %172
+        %174 = OpIAdd %int %173 %int_11
+        %175 = OpSMod %int %174 %int_16
+               OpStore %indexable_2 %87
+        %176 = OpAccessChain %_ptr_Function_v4float %indexable_2 %175
+        %177 = OpLoad %v4float %176
+               OpStore %res %177
+               OpBranch %160
+        %160 = OpLabel
+               OpBranch %150
+        %150 = OpLabel
+        %178 = OpLoad %int %i
+        %179 = OpIAdd %int %178 %int_1
+               OpStore %i %179
+               OpBranch %148
+        %149 = OpLabel
+        %180 = OpLoad %v4float %res
+               OpReturnValue %180
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3588689
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,106 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_20 : register(b0, space0) {
+  uint4 x_20[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int index = 0;
+static int state[16] = (int[16])0;
+
+bool collision_vf2_vf4_(inout float2 pos, inout float4 quad) {
+  const float x_114 = pos.x;
+  const float x_116 = quad.x;
+  if ((x_114 < x_116)) {
+    return false;
+  }
+  const float x_121 = pos.y;
+  const float x_123 = quad.y;
+  if ((x_121 < x_123)) {
+    return false;
+  }
+  const float x_128 = pos.x;
+  const float x_130 = quad.x;
+  const float x_132 = quad.z;
+  if ((x_128 > (x_130 + x_132))) {
+    return false;
+  }
+  const float x_138 = pos.y;
+  const float x_140 = quad.y;
+  const float x_142 = quad.w;
+  if ((x_138 > (x_140 + x_142))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(inout float2 pos_1) {
+  float4 res = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  float2 param = float2(0.0f, 0.0f);
+  float4 param_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 indexable[8] = (float4[8])0;
+  float4 indexable_1[8] = (float4[8])0;
+  float4 indexable_2[8] = (float4[8])0;
+  float4 indexable_3[16] = (float4[16])0;
+  res = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 8); i = (i + 1)) {
+      const int x_155 = i;
+      const float2 x_156 = pos_1;
+      param = x_156;
+      const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      indexable = tint_symbol_5;
+      const float4 x_158 = indexable[x_155];
+      param_1 = x_158;
+      const bool x_159 = collision_vf2_vf4_(param, param_1);
+      if (x_159) {
+        const int x_162 = i;
+        const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_1 = tint_symbol_6;
+        const float x_164 = indexable_1[x_162].x;
+        const int x_166 = i;
+        const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_2 = tint_symbol_7;
+        const float x_168 = indexable_2[x_166].y;
+        const int x_171 = i;
+        const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+        indexable_3 = tint_symbol_8;
+        const float4 x_177 = indexable_3[((((int(x_164) * int(x_168)) + (x_171 * 9)) + 11) % 16)];
+        res = x_177;
+      }
+    }
+  }
+  return res;
+}
+
+void main_1() {
+  float2 lin = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  const float4 x_102 = gl_FragCoord;
+  const float2 x_105 = asfloat(x_20[0].xy);
+  lin = (float2(x_102.x, x_102.y) / x_105);
+  lin = floor((lin * 32.0f));
+  param_2 = lin;
+  const float4 x_111 = match_vf2_(param_2);
+  x_GLF_color = x_111;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..8780c86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.msl
@@ -0,0 +1,122 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[16];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[8];
+};
+struct tint_array_wrapper_2 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool collision_vf2_vf4_(thread float2* const pos, thread float4* const quad) {
+  float const x_114 = (*(pos)).x;
+  float const x_116 = (*(quad)).x;
+  if ((x_114 < x_116)) {
+    return false;
+  }
+  float const x_121 = (*(pos)).y;
+  float const x_123 = (*(quad)).y;
+  if ((x_121 < x_123)) {
+    return false;
+  }
+  float const x_128 = (*(pos)).x;
+  float const x_130 = (*(quad)).x;
+  float const x_132 = (*(quad)).z;
+  if ((x_128 > (x_130 + x_132))) {
+    return false;
+  }
+  float const x_138 = (*(pos)).y;
+  float const x_140 = (*(quad)).y;
+  float const x_142 = (*(quad)).w;
+  if ((x_138 > (x_140 + x_142))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(thread float2* const pos_1) {
+  float4 res = 0.0f;
+  int i = 0;
+  float2 param = 0.0f;
+  float4 param_1 = 0.0f;
+  tint_array_wrapper_1 indexable = {};
+  tint_array_wrapper_1 indexable_1 = {};
+  tint_array_wrapper_1 indexable_2 = {};
+  tint_array_wrapper_2 indexable_3 = {};
+  res = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_152 = i;
+    if ((x_152 < 8)) {
+    } else {
+      break;
+    }
+    int const x_155 = i;
+    float2 const x_156 = *(pos_1);
+    param = x_156;
+    tint_array_wrapper_1 const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+    indexable = tint_symbol_4;
+    float4 const x_158 = indexable.arr[x_155];
+    param_1 = x_158;
+    bool const x_159 = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_159) {
+      int const x_162 = i;
+      tint_array_wrapper_1 const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_1 = tint_symbol_5;
+      float const x_164 = indexable_1.arr[x_162].x;
+      int const x_166 = i;
+      tint_array_wrapper_1 const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_2 = tint_symbol_6;
+      float const x_168 = indexable_2.arr[x_166].y;
+      int const x_171 = i;
+      tint_array_wrapper_2 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      indexable_3 = tint_symbol_7;
+      float4 const x_177 = indexable_3.arr[((((int(x_164) * int(x_168)) + (x_171 * 9)) + 11) % 16)];
+      res = x_177;
+    }
+    {
+      int const x_178 = i;
+      i = (x_178 + 1);
+    }
+  }
+  float4 const x_180 = res;
+  return x_180;
+}
+
+void main_1(constant buf0& x_20, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  float2 lin = 0.0f;
+  float2 param_2 = 0.0f;
+  float4 const x_102 = *(tint_symbol_9);
+  float2 const x_105 = x_20.resolution;
+  lin = (float2(x_102.x, x_102.y) / x_105);
+  float2 const x_107 = lin;
+  lin = floor((x_107 * 32.0f));
+  float2 const x_110 = lin;
+  param_2 = x_110;
+  float4 const x_111 = match_vf2_(&(param_2));
+  *(tint_symbol_10) = x_111;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_20 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_20, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..d01b8b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,306 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 221
+; Schema: 0
+               OpCapability Shader
+        %202 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_20 "x_20"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %index "index"
+               OpName %state "state"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %collision_vf2_vf4_ "collision_vf2_vf4_"
+               OpName %pos "pos"
+               OpName %quad "quad"
+               OpName %match_vf2_ "match_vf2_"
+               OpName %pos_1 "pos_1"
+               OpName %res "res"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %indexable_2 "indexable_2"
+               OpName %indexable_3 "indexable_3"
+               OpName %main_1 "main_1"
+               OpName %lin "lin"
+               OpName %param_2 "param_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_20 NonWritable
+               OpDecorate %x_20 DescriptorSet 0
+               OpDecorate %x_20 Binding 0
+               OpDecorate %_arr_int_uint_16 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_20 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+         %14 = OpConstantNull %int
+      %index = OpVariable %_ptr_Private_int Private %14
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_int_uint_16 = OpTypeArray %int %uint_16
+%_ptr_Private__arr_int_uint_16 = OpTypePointer Private %_arr_int_uint_16
+         %20 = OpConstantNull %_arr_int_uint_16
+      %state = OpVariable %_ptr_Private__arr_int_uint_16 Private %20
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %25 = OpTypeFunction %bool %_ptr_Function_v2float %_ptr_Function_v4float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+         %84 = OpTypeFunction %v4float %_ptr_Function_v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %92 = OpConstantNull %v2float
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %98 = OpConstantNull %_arr_v4float_uint_8
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+        %104 = OpConstantNull %_arr_v4float_uint_16
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+        %107 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+        %124 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+        %125 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+        %126 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+        %128 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+        %131 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+        %133 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+        %135 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+        %137 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+        %138 = OpConstantComposite %_arr_v4float_uint_8 %124 %125 %126 %128 %131 %133 %135 %137
+    %float_0 = OpConstant %float 0
+        %154 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %161 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %167 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %168 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %169 = OpConstantComposite %_arr_v4float_uint_16 %154 %155 %156 %157 %158 %159 %160 %161 %154 %162 %163 %164 %165 %166 %167 %168
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %186 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+   %main_out = OpTypeStruct %v4float
+        %208 = OpTypeFunction %void %main_out
+%collision_vf2_vf4_ = OpFunction %bool None %25
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+       %quad = OpFunctionParameter %_ptr_Function_v4float
+         %32 = OpLabel
+         %36 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %37 = OpLoad %float %36
+         %39 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %37 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpReturnValue %false
+         %42 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %48 = OpLoad %float %47
+         %50 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %51 = OpLoad %float %50
+         %52 = OpFOrdLessThan %bool %48 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpReturnValue %false
+         %53 = OpLabel
+         %56 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %60 = OpLoad %float %59
+         %63 = OpAccessChain %_ptr_Function_float %quad %uint_2
+         %64 = OpLoad %float %63
+         %65 = OpFAdd %float %60 %64
+         %66 = OpFOrdGreaterThan %bool %57 %65
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+               OpReturnValue %false
+         %67 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %74 = OpLoad %float %73
+         %77 = OpAccessChain %_ptr_Function_float %quad %uint_3
+         %78 = OpLoad %float %77
+         %79 = OpFAdd %float %74 %78
+         %80 = OpFOrdGreaterThan %bool %71 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+               OpReturnValue %false
+         %81 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+ %match_vf2_ = OpFunction %v4float None %84
+      %pos_1 = OpFunctionParameter %_ptr_Function_v2float
+         %87 = OpLabel
+        %res = OpVariable %_ptr_Function_v4float Function %5
+          %i = OpVariable %_ptr_Function_int Function %14
+      %param = OpVariable %_ptr_Function_v2float Function %92
+    %param_1 = OpVariable %_ptr_Function_v4float Function %5
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %98
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %98
+%indexable_2 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %98
+%indexable_3 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %104
+               OpStore %res %107
+               OpStore %i %int_0
+               OpBranch %109
+        %109 = OpLabel
+               OpLoopMerge %110 %111 None
+               OpBranch %112
+        %112 = OpLabel
+        %113 = OpLoad %int %i
+        %115 = OpSLessThan %bool %113 %int_8
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+               OpBranch %116
+        %118 = OpLabel
+               OpBranch %110
+        %116 = OpLabel
+        %119 = OpLoad %int %i
+        %121 = OpLoad %v2float %pos_1
+               OpStore %param %121
+               OpStore %indexable %138
+        %139 = OpAccessChain %_ptr_Function_v4float %indexable %119
+        %140 = OpLoad %v4float %139
+               OpStore %param_1 %140
+        %141 = OpFunctionCall %bool %collision_vf2_vf4_ %param %param_1
+               OpSelectionMerge %144 None
+               OpBranchConditional %141 %145 %144
+        %145 = OpLabel
+        %146 = OpLoad %int %i
+               OpStore %indexable_1 %138
+        %147 = OpAccessChain %_ptr_Function_float %indexable_1 %146 %uint_0
+        %148 = OpLoad %float %147
+        %149 = OpLoad %int %i
+               OpStore %indexable_2 %138
+        %150 = OpAccessChain %_ptr_Function_float %indexable_2 %149 %uint_1
+        %151 = OpLoad %float %150
+        %152 = OpLoad %int %i
+               OpStore %indexable_3 %169
+        %170 = OpConvertFToS %int %148
+        %171 = OpConvertFToS %int %151
+        %172 = OpIMul %int %170 %171
+        %174 = OpIMul %int %152 %int_9
+        %175 = OpIAdd %int %172 %174
+        %177 = OpIAdd %int %175 %int_11
+        %179 = OpSMod %int %177 %int_16
+        %180 = OpAccessChain %_ptr_Function_v4float %indexable_3 %179
+        %181 = OpLoad %v4float %180
+               OpStore %res %181
+               OpBranch %144
+        %144 = OpLabel
+               OpBranch %111
+        %111 = OpLabel
+        %182 = OpLoad %int %i
+        %184 = OpIAdd %int %182 %int_1
+               OpStore %i %184
+               OpBranch %109
+        %110 = OpLabel
+        %185 = OpLoad %v4float %res
+               OpReturnValue %185
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %186
+        %189 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function %92
+    %param_2 = OpVariable %_ptr_Function_v2float Function %92
+        %192 = OpLoad %v4float %gl_FragCoord
+        %194 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_0
+        %195 = OpLoad %v2float %194
+        %196 = OpCompositeExtract %float %192 0
+        %197 = OpCompositeExtract %float %192 1
+        %198 = OpCompositeConstruct %v2float %196 %197
+        %199 = OpFDiv %v2float %198 %195
+               OpStore %lin %199
+        %200 = OpLoad %v2float %lin
+        %204 = OpVectorTimesScalar %v2float %200 %float_32
+        %201 = OpExtInst %v2float %202 Floor %204
+               OpStore %lin %201
+        %205 = OpLoad %v2float %lin
+               OpStore %param_2 %205
+        %206 = OpFunctionCall %v4float %match_vf2_ %param_2
+               OpStore %x_GLF_color %206
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %208
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %212 = OpLabel
+        %213 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %213
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %186
+        %215 = OpLabel
+        %216 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %216
+        %217 = OpFunctionCall %void %main_1
+        %219 = OpLoad %v4float %x_GLF_color
+        %220 = OpCompositeConstruct %main_out %219
+        %218 = OpFunctionCall %void %tint_symbol_3 %220
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f8f9584
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,113 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> index : i32;
+
+var<private> state : array<i32, 16>;
+
+fn collision_vf2_vf4_(pos : ptr<function, vec2<f32>>, quad : ptr<function, vec4<f32>>) -> bool {
+  let x_114 : f32 = (*(pos)).x;
+  let x_116 : f32 = (*(quad)).x;
+  if ((x_114 < x_116)) {
+    return false;
+  }
+  let x_121 : f32 = (*(pos)).y;
+  let x_123 : f32 = (*(quad)).y;
+  if ((x_121 < x_123)) {
+    return false;
+  }
+  let x_128 : f32 = (*(pos)).x;
+  let x_130 : f32 = (*(quad)).x;
+  let x_132 : f32 = (*(quad)).z;
+  if ((x_128 > (x_130 + x_132))) {
+    return false;
+  }
+  let x_138 : f32 = (*(pos)).y;
+  let x_140 : f32 = (*(quad)).y;
+  let x_142 : f32 = (*(quad)).w;
+  if ((x_138 > (x_140 + x_142))) {
+    return false;
+  }
+  return true;
+}
+
+fn match_vf2_(pos_1 : ptr<function, vec2<f32>>) -> vec4<f32> {
+  var res : vec4<f32>;
+  var i : i32;
+  var param : vec2<f32>;
+  var param_1 : vec4<f32>;
+  var indexable : array<vec4<f32>, 8>;
+  var indexable_1 : array<vec4<f32>, 8>;
+  var indexable_2 : array<vec4<f32>, 8>;
+  var indexable_3 : array<vec4<f32>, 16>;
+  res = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  i = 0;
+  loop {
+    let x_152 : i32 = i;
+    if ((x_152 < 8)) {
+    } else {
+      break;
+    }
+    let x_155 : i32 = i;
+    let x_156 : vec2<f32> = *(pos_1);
+    param = x_156;
+    indexable = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    let x_158 : vec4<f32> = indexable[x_155];
+    param_1 = x_158;
+    let x_159 : bool = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_159) {
+      let x_162 : i32 = i;
+      indexable_1 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_164 : f32 = indexable_1[x_162].x;
+      let x_166 : i32 = i;
+      indexable_2 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_168 : f32 = indexable_2[x_166].y;
+      let x_171 : i32 = i;
+      indexable_3 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      let x_177 : vec4<f32> = indexable_3[((((i32(x_164) * i32(x_168)) + (x_171 * 9)) + 11) % 16)];
+      res = x_177;
+    }
+
+    continuing {
+      let x_178 : i32 = i;
+      i = (x_178 + 1);
+    }
+  }
+  let x_180 : vec4<f32> = res;
+  return x_180;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var param_2 : vec2<f32>;
+  let x_102 : vec4<f32> = gl_FragCoord;
+  let x_105 : vec2<f32> = x_20.resolution;
+  lin = (vec2<f32>(x_102.x, x_102.y) / x_105);
+  let x_107 : vec2<f32> = lin;
+  lin = floor((x_107 * 32.0));
+  let x_110 : vec2<f32> = lin;
+  param_2 = x_110;
+  let x_111 : vec4<f32> = match_vf2_(&(param_2));
+  x_GLF_color = x_111;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
new file mode 100644
index 0000000..f8f9584
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
@@ -0,0 +1,113 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> index : i32;
+
+var<private> state : array<i32, 16>;
+
+fn collision_vf2_vf4_(pos : ptr<function, vec2<f32>>, quad : ptr<function, vec4<f32>>) -> bool {
+  let x_114 : f32 = (*(pos)).x;
+  let x_116 : f32 = (*(quad)).x;
+  if ((x_114 < x_116)) {
+    return false;
+  }
+  let x_121 : f32 = (*(pos)).y;
+  let x_123 : f32 = (*(quad)).y;
+  if ((x_121 < x_123)) {
+    return false;
+  }
+  let x_128 : f32 = (*(pos)).x;
+  let x_130 : f32 = (*(quad)).x;
+  let x_132 : f32 = (*(quad)).z;
+  if ((x_128 > (x_130 + x_132))) {
+    return false;
+  }
+  let x_138 : f32 = (*(pos)).y;
+  let x_140 : f32 = (*(quad)).y;
+  let x_142 : f32 = (*(quad)).w;
+  if ((x_138 > (x_140 + x_142))) {
+    return false;
+  }
+  return true;
+}
+
+fn match_vf2_(pos_1 : ptr<function, vec2<f32>>) -> vec4<f32> {
+  var res : vec4<f32>;
+  var i : i32;
+  var param : vec2<f32>;
+  var param_1 : vec4<f32>;
+  var indexable : array<vec4<f32>, 8>;
+  var indexable_1 : array<vec4<f32>, 8>;
+  var indexable_2 : array<vec4<f32>, 8>;
+  var indexable_3 : array<vec4<f32>, 16>;
+  res = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  i = 0;
+  loop {
+    let x_152 : i32 = i;
+    if ((x_152 < 8)) {
+    } else {
+      break;
+    }
+    let x_155 : i32 = i;
+    let x_156 : vec2<f32> = *(pos_1);
+    param = x_156;
+    indexable = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    let x_158 : vec4<f32> = indexable[x_155];
+    param_1 = x_158;
+    let x_159 : bool = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_159) {
+      let x_162 : i32 = i;
+      indexable_1 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_164 : f32 = indexable_1[x_162].x;
+      let x_166 : i32 = i;
+      indexable_2 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_168 : f32 = indexable_2[x_166].y;
+      let x_171 : i32 = i;
+      indexable_3 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      let x_177 : vec4<f32> = indexable_3[((((i32(x_164) * i32(x_168)) + (x_171 * 9)) + 11) % 16)];
+      res = x_177;
+    }
+
+    continuing {
+      let x_178 : i32 = i;
+      i = (x_178 + 1);
+    }
+  }
+  let x_180 : vec4<f32> = res;
+  return x_180;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var param_2 : vec2<f32>;
+  let x_102 : vec4<f32> = gl_FragCoord;
+  let x_105 : vec2<f32> = x_20.resolution;
+  lin = (vec2<f32>(x_102.x, x_102.y) / x_105);
+  let x_107 : vec2<f32> = lin;
+  lin = floor((x_107 * 32.0));
+  let x_110 : vec2<f32> = lin;
+  param_2 = x_110;
+  let x_111 : vec4<f32> = match_vf2_(&(param_2));
+  x_GLF_color = x_111;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..3588689
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,106 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_20 : register(b0, space0) {
+  uint4 x_20[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int index = 0;
+static int state[16] = (int[16])0;
+
+bool collision_vf2_vf4_(inout float2 pos, inout float4 quad) {
+  const float x_114 = pos.x;
+  const float x_116 = quad.x;
+  if ((x_114 < x_116)) {
+    return false;
+  }
+  const float x_121 = pos.y;
+  const float x_123 = quad.y;
+  if ((x_121 < x_123)) {
+    return false;
+  }
+  const float x_128 = pos.x;
+  const float x_130 = quad.x;
+  const float x_132 = quad.z;
+  if ((x_128 > (x_130 + x_132))) {
+    return false;
+  }
+  const float x_138 = pos.y;
+  const float x_140 = quad.y;
+  const float x_142 = quad.w;
+  if ((x_138 > (x_140 + x_142))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(inout float2 pos_1) {
+  float4 res = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  float2 param = float2(0.0f, 0.0f);
+  float4 param_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 indexable[8] = (float4[8])0;
+  float4 indexable_1[8] = (float4[8])0;
+  float4 indexable_2[8] = (float4[8])0;
+  float4 indexable_3[16] = (float4[16])0;
+  res = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 8); i = (i + 1)) {
+      const int x_155 = i;
+      const float2 x_156 = pos_1;
+      param = x_156;
+      const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      indexable = tint_symbol_5;
+      const float4 x_158 = indexable[x_155];
+      param_1 = x_158;
+      const bool x_159 = collision_vf2_vf4_(param, param_1);
+      if (x_159) {
+        const int x_162 = i;
+        const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_1 = tint_symbol_6;
+        const float x_164 = indexable_1[x_162].x;
+        const int x_166 = i;
+        const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_2 = tint_symbol_7;
+        const float x_168 = indexable_2[x_166].y;
+        const int x_171 = i;
+        const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+        indexable_3 = tint_symbol_8;
+        const float4 x_177 = indexable_3[((((int(x_164) * int(x_168)) + (x_171 * 9)) + 11) % 16)];
+        res = x_177;
+      }
+    }
+  }
+  return res;
+}
+
+void main_1() {
+  float2 lin = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  const float4 x_102 = gl_FragCoord;
+  const float2 x_105 = asfloat(x_20[0].xy);
+  lin = (float2(x_102.x, x_102.y) / x_105);
+  lin = floor((lin * 32.0f));
+  param_2 = lin;
+  const float4 x_111 = match_vf2_(param_2);
+  x_GLF_color = x_111;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..8780c86
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.msl
@@ -0,0 +1,122 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[16];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[8];
+};
+struct tint_array_wrapper_2 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool collision_vf2_vf4_(thread float2* const pos, thread float4* const quad) {
+  float const x_114 = (*(pos)).x;
+  float const x_116 = (*(quad)).x;
+  if ((x_114 < x_116)) {
+    return false;
+  }
+  float const x_121 = (*(pos)).y;
+  float const x_123 = (*(quad)).y;
+  if ((x_121 < x_123)) {
+    return false;
+  }
+  float const x_128 = (*(pos)).x;
+  float const x_130 = (*(quad)).x;
+  float const x_132 = (*(quad)).z;
+  if ((x_128 > (x_130 + x_132))) {
+    return false;
+  }
+  float const x_138 = (*(pos)).y;
+  float const x_140 = (*(quad)).y;
+  float const x_142 = (*(quad)).w;
+  if ((x_138 > (x_140 + x_142))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(thread float2* const pos_1) {
+  float4 res = 0.0f;
+  int i = 0;
+  float2 param = 0.0f;
+  float4 param_1 = 0.0f;
+  tint_array_wrapper_1 indexable = {};
+  tint_array_wrapper_1 indexable_1 = {};
+  tint_array_wrapper_1 indexable_2 = {};
+  tint_array_wrapper_2 indexable_3 = {};
+  res = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_152 = i;
+    if ((x_152 < 8)) {
+    } else {
+      break;
+    }
+    int const x_155 = i;
+    float2 const x_156 = *(pos_1);
+    param = x_156;
+    tint_array_wrapper_1 const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+    indexable = tint_symbol_4;
+    float4 const x_158 = indexable.arr[x_155];
+    param_1 = x_158;
+    bool const x_159 = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_159) {
+      int const x_162 = i;
+      tint_array_wrapper_1 const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_1 = tint_symbol_5;
+      float const x_164 = indexable_1.arr[x_162].x;
+      int const x_166 = i;
+      tint_array_wrapper_1 const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_2 = tint_symbol_6;
+      float const x_168 = indexable_2.arr[x_166].y;
+      int const x_171 = i;
+      tint_array_wrapper_2 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      indexable_3 = tint_symbol_7;
+      float4 const x_177 = indexable_3.arr[((((int(x_164) * int(x_168)) + (x_171 * 9)) + 11) % 16)];
+      res = x_177;
+    }
+    {
+      int const x_178 = i;
+      i = (x_178 + 1);
+    }
+  }
+  float4 const x_180 = res;
+  return x_180;
+}
+
+void main_1(constant buf0& x_20, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  float2 lin = 0.0f;
+  float2 param_2 = 0.0f;
+  float4 const x_102 = *(tint_symbol_9);
+  float2 const x_105 = x_20.resolution;
+  lin = (float2(x_102.x, x_102.y) / x_105);
+  float2 const x_107 = lin;
+  lin = floor((x_107 * 32.0f));
+  float2 const x_110 = lin;
+  param_2 = x_110;
+  float4 const x_111 = match_vf2_(&(param_2));
+  *(tint_symbol_10) = x_111;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_20 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_20, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..d01b8b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,306 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 221
+; Schema: 0
+               OpCapability Shader
+        %202 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_20 "x_20"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %index "index"
+               OpName %state "state"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %collision_vf2_vf4_ "collision_vf2_vf4_"
+               OpName %pos "pos"
+               OpName %quad "quad"
+               OpName %match_vf2_ "match_vf2_"
+               OpName %pos_1 "pos_1"
+               OpName %res "res"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %indexable_2 "indexable_2"
+               OpName %indexable_3 "indexable_3"
+               OpName %main_1 "main_1"
+               OpName %lin "lin"
+               OpName %param_2 "param_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_20 NonWritable
+               OpDecorate %x_20 DescriptorSet 0
+               OpDecorate %x_20 Binding 0
+               OpDecorate %_arr_int_uint_16 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_20 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+         %14 = OpConstantNull %int
+      %index = OpVariable %_ptr_Private_int Private %14
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_int_uint_16 = OpTypeArray %int %uint_16
+%_ptr_Private__arr_int_uint_16 = OpTypePointer Private %_arr_int_uint_16
+         %20 = OpConstantNull %_arr_int_uint_16
+      %state = OpVariable %_ptr_Private__arr_int_uint_16 Private %20
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %25 = OpTypeFunction %bool %_ptr_Function_v2float %_ptr_Function_v4float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+         %84 = OpTypeFunction %v4float %_ptr_Function_v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %92 = OpConstantNull %v2float
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %98 = OpConstantNull %_arr_v4float_uint_8
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+        %104 = OpConstantNull %_arr_v4float_uint_16
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+        %107 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+        %124 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+        %125 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+        %126 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+        %128 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+        %131 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+        %133 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+        %135 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+        %137 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+        %138 = OpConstantComposite %_arr_v4float_uint_8 %124 %125 %126 %128 %131 %133 %135 %137
+    %float_0 = OpConstant %float 0
+        %154 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %161 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %167 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %168 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %169 = OpConstantComposite %_arr_v4float_uint_16 %154 %155 %156 %157 %158 %159 %160 %161 %154 %162 %163 %164 %165 %166 %167 %168
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %186 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+   %main_out = OpTypeStruct %v4float
+        %208 = OpTypeFunction %void %main_out
+%collision_vf2_vf4_ = OpFunction %bool None %25
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+       %quad = OpFunctionParameter %_ptr_Function_v4float
+         %32 = OpLabel
+         %36 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %37 = OpLoad %float %36
+         %39 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %37 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpReturnValue %false
+         %42 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %48 = OpLoad %float %47
+         %50 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %51 = OpLoad %float %50
+         %52 = OpFOrdLessThan %bool %48 %51
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpReturnValue %false
+         %53 = OpLabel
+         %56 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %60 = OpLoad %float %59
+         %63 = OpAccessChain %_ptr_Function_float %quad %uint_2
+         %64 = OpLoad %float %63
+         %65 = OpFAdd %float %60 %64
+         %66 = OpFOrdGreaterThan %bool %57 %65
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+               OpReturnValue %false
+         %67 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %74 = OpLoad %float %73
+         %77 = OpAccessChain %_ptr_Function_float %quad %uint_3
+         %78 = OpLoad %float %77
+         %79 = OpFAdd %float %74 %78
+         %80 = OpFOrdGreaterThan %bool %71 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+               OpReturnValue %false
+         %81 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+ %match_vf2_ = OpFunction %v4float None %84
+      %pos_1 = OpFunctionParameter %_ptr_Function_v2float
+         %87 = OpLabel
+        %res = OpVariable %_ptr_Function_v4float Function %5
+          %i = OpVariable %_ptr_Function_int Function %14
+      %param = OpVariable %_ptr_Function_v2float Function %92
+    %param_1 = OpVariable %_ptr_Function_v4float Function %5
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %98
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %98
+%indexable_2 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %98
+%indexable_3 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %104
+               OpStore %res %107
+               OpStore %i %int_0
+               OpBranch %109
+        %109 = OpLabel
+               OpLoopMerge %110 %111 None
+               OpBranch %112
+        %112 = OpLabel
+        %113 = OpLoad %int %i
+        %115 = OpSLessThan %bool %113 %int_8
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+               OpBranch %116
+        %118 = OpLabel
+               OpBranch %110
+        %116 = OpLabel
+        %119 = OpLoad %int %i
+        %121 = OpLoad %v2float %pos_1
+               OpStore %param %121
+               OpStore %indexable %138
+        %139 = OpAccessChain %_ptr_Function_v4float %indexable %119
+        %140 = OpLoad %v4float %139
+               OpStore %param_1 %140
+        %141 = OpFunctionCall %bool %collision_vf2_vf4_ %param %param_1
+               OpSelectionMerge %144 None
+               OpBranchConditional %141 %145 %144
+        %145 = OpLabel
+        %146 = OpLoad %int %i
+               OpStore %indexable_1 %138
+        %147 = OpAccessChain %_ptr_Function_float %indexable_1 %146 %uint_0
+        %148 = OpLoad %float %147
+        %149 = OpLoad %int %i
+               OpStore %indexable_2 %138
+        %150 = OpAccessChain %_ptr_Function_float %indexable_2 %149 %uint_1
+        %151 = OpLoad %float %150
+        %152 = OpLoad %int %i
+               OpStore %indexable_3 %169
+        %170 = OpConvertFToS %int %148
+        %171 = OpConvertFToS %int %151
+        %172 = OpIMul %int %170 %171
+        %174 = OpIMul %int %152 %int_9
+        %175 = OpIAdd %int %172 %174
+        %177 = OpIAdd %int %175 %int_11
+        %179 = OpSMod %int %177 %int_16
+        %180 = OpAccessChain %_ptr_Function_v4float %indexable_3 %179
+        %181 = OpLoad %v4float %180
+               OpStore %res %181
+               OpBranch %144
+        %144 = OpLabel
+               OpBranch %111
+        %111 = OpLabel
+        %182 = OpLoad %int %i
+        %184 = OpIAdd %int %182 %int_1
+               OpStore %i %184
+               OpBranch %109
+        %110 = OpLabel
+        %185 = OpLoad %v4float %res
+               OpReturnValue %185
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %186
+        %189 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function %92
+    %param_2 = OpVariable %_ptr_Function_v2float Function %92
+        %192 = OpLoad %v4float %gl_FragCoord
+        %194 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_0
+        %195 = OpLoad %v2float %194
+        %196 = OpCompositeExtract %float %192 0
+        %197 = OpCompositeExtract %float %192 1
+        %198 = OpCompositeConstruct %v2float %196 %197
+        %199 = OpFDiv %v2float %198 %195
+               OpStore %lin %199
+        %200 = OpLoad %v2float %lin
+        %204 = OpVectorTimesScalar %v2float %200 %float_32
+        %201 = OpExtInst %v2float %202 Floor %204
+               OpStore %lin %201
+        %205 = OpLoad %v2float %lin
+               OpStore %param_2 %205
+        %206 = OpFunctionCall %v4float %match_vf2_ %param_2
+               OpStore %x_GLF_color %206
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %208
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %212 = OpLabel
+        %213 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %213
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %186
+        %215 = OpLabel
+        %216 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %216
+        %217 = OpFunctionCall %void %main_1
+        %219 = OpLoad %v4float %x_GLF_color
+        %220 = OpCompositeConstruct %main_out %219
+        %218 = OpFunctionCall %void %tint_symbol_3 %220
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f8f9584
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,113 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> index : i32;
+
+var<private> state : array<i32, 16>;
+
+fn collision_vf2_vf4_(pos : ptr<function, vec2<f32>>, quad : ptr<function, vec4<f32>>) -> bool {
+  let x_114 : f32 = (*(pos)).x;
+  let x_116 : f32 = (*(quad)).x;
+  if ((x_114 < x_116)) {
+    return false;
+  }
+  let x_121 : f32 = (*(pos)).y;
+  let x_123 : f32 = (*(quad)).y;
+  if ((x_121 < x_123)) {
+    return false;
+  }
+  let x_128 : f32 = (*(pos)).x;
+  let x_130 : f32 = (*(quad)).x;
+  let x_132 : f32 = (*(quad)).z;
+  if ((x_128 > (x_130 + x_132))) {
+    return false;
+  }
+  let x_138 : f32 = (*(pos)).y;
+  let x_140 : f32 = (*(quad)).y;
+  let x_142 : f32 = (*(quad)).w;
+  if ((x_138 > (x_140 + x_142))) {
+    return false;
+  }
+  return true;
+}
+
+fn match_vf2_(pos_1 : ptr<function, vec2<f32>>) -> vec4<f32> {
+  var res : vec4<f32>;
+  var i : i32;
+  var param : vec2<f32>;
+  var param_1 : vec4<f32>;
+  var indexable : array<vec4<f32>, 8>;
+  var indexable_1 : array<vec4<f32>, 8>;
+  var indexable_2 : array<vec4<f32>, 8>;
+  var indexable_3 : array<vec4<f32>, 16>;
+  res = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  i = 0;
+  loop {
+    let x_152 : i32 = i;
+    if ((x_152 < 8)) {
+    } else {
+      break;
+    }
+    let x_155 : i32 = i;
+    let x_156 : vec2<f32> = *(pos_1);
+    param = x_156;
+    indexable = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    let x_158 : vec4<f32> = indexable[x_155];
+    param_1 = x_158;
+    let x_159 : bool = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_159) {
+      let x_162 : i32 = i;
+      indexable_1 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_164 : f32 = indexable_1[x_162].x;
+      let x_166 : i32 = i;
+      indexable_2 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_168 : f32 = indexable_2[x_166].y;
+      let x_171 : i32 = i;
+      indexable_3 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      let x_177 : vec4<f32> = indexable_3[((((i32(x_164) * i32(x_168)) + (x_171 * 9)) + 11) % 16)];
+      res = x_177;
+    }
+
+    continuing {
+      let x_178 : i32 = i;
+      i = (x_178 + 1);
+    }
+  }
+  let x_180 : vec4<f32> = res;
+  return x_180;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var param_2 : vec2<f32>;
+  let x_102 : vec4<f32> = gl_FragCoord;
+  let x_105 : vec2<f32> = x_20.resolution;
+  lin = (vec2<f32>(x_102.x, x_102.y) / x_105);
+  let x_107 : vec2<f32> = lin;
+  lin = floor((x_107 * 32.0));
+  let x_110 : vec2<f32> = lin;
+  param_2 = x_110;
+  let x_111 : vec4<f32> = match_vf2_(&(param_2));
+  x_GLF_color = x_111;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm
new file mode 100644
index 0000000..e2303ec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm
@@ -0,0 +1,259 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %collision_vf2_vf4_ "collision(vf2;vf4;"
+               OpName %pos "pos"
+               OpName %quad "quad"
+               OpName %match_vf2_ "match(vf2;"
+               OpName %pos_0 "pos"
+               OpName %res "res"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %indexable "indexable"
+               OpName %indexable_0 "indexable"
+               OpName %indexable_1 "indexable"
+               OpName %indexable_2 "indexable"
+               OpName %lin "lin"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %param_1 "param"
+               OpName %index "index"
+               OpName %state "state"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %25 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+         %32 = OpTypeFunction %bool %_ptr_Function_v2float %_ptr_Function_v4float
+         %33 = OpTypeFunction %v4float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %44 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %53 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %54 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %55 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %57 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %60 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %62 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %64 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %66 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %67 = OpConstantComposite %_arr_v4float_uint_8 %53 %54 %55 %57 %60 %62 %64 %66
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+         %72 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %73 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %74 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %75 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %76 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %77 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %78 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %79 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %80 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %81 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %82 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %83 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %84 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %85 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %86 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %87 = OpConstantComposite %_arr_v4float_uint_16 %72 %73 %74 %75 %76 %77 %78 %79 %72 %80 %81 %82 %83 %84 %85 %86
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Private_int = OpTypePointer Private %int
+      %index = OpVariable %_ptr_Private_int Private
+%_arr_int_uint_16 = OpTypeArray %int %uint_16
+%_ptr_Private__arr_int_uint_16 = OpTypePointer Private %_arr_int_uint_16
+      %state = OpVariable %_ptr_Private__arr_int_uint_16 Private
+     %v4bool = OpTypeVector %bool 4
+%_ptr_Function_v4bool = OpTypePointer Function %v4bool
+        %103 = OpConstantComposite %v4bool %false %false %false %false
+       %main = OpFunction %void None %25
+        %104 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+        %105 = OpLoad %v4float %gl_FragCoord
+        %106 = OpVectorShuffle %v2float %105 %105 0 1
+        %107 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %108 = OpLoad %v2float %107
+        %109 = OpFDiv %v2float %106 %108
+               OpStore %lin %109
+        %110 = OpLoad %v2float %lin
+        %111 = OpVectorTimesScalar %v2float %110 %float_32
+        %112 = OpExtInst %v2float %1 Floor %111
+               OpStore %lin %112
+        %113 = OpLoad %v2float %lin
+               OpStore %param_1 %113
+        %114 = OpFunctionCall %v4float %match_vf2_ %param_1
+               OpStore %_GLF_color %114
+               OpReturn
+               OpFunctionEnd
+%collision_vf2_vf4_ = OpFunction %bool None %32
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+       %quad = OpFunctionParameter %_ptr_Function_v4float
+        %115 = OpLabel
+        %116 = OpVariable %_ptr_Function_v4bool Function %103
+        %117 = OpAccessChain %_ptr_Function_float %pos %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpAccessChain %_ptr_Function_float %quad %uint_0
+        %120 = OpLoad %float %119
+        %121 = OpFOrdLessThan %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+               OpReturnValue %false
+        %122 = OpLabel
+        %124 = OpAccessChain %_ptr_Function_float %pos %uint_1
+        %125 = OpLoad %float %124
+        %126 = OpAccessChain %_ptr_Function_float %quad %uint_1
+        %127 = OpLoad %float %126
+        %128 = OpFOrdLessThan %bool %125 %127
+               OpSelectionMerge %129 None
+               OpBranchConditional %128 %130 %129
+        %130 = OpLabel
+               OpReturnValue %false
+        %129 = OpLabel
+        %131 = OpAccessChain %_ptr_Function_float %pos %uint_0
+        %132 = OpLoad %float %131
+        %133 = OpAccessChain %_ptr_Function_float %quad %uint_0
+        %134 = OpLoad %float %133
+        %135 = OpAccessChain %_ptr_Function_float %quad %uint_2
+        %136 = OpLoad %float %135
+        %137 = OpFAdd %float %134 %136
+        %138 = OpFOrdGreaterThan %bool %132 %137
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+               OpReturnValue %false
+        %139 = OpLabel
+        %141 = OpAccessChain %_ptr_Function_float %pos %uint_1
+        %142 = OpLoad %float %141
+        %143 = OpAccessChain %_ptr_Function_float %quad %uint_1
+        %144 = OpLoad %float %143
+        %145 = OpAccessChain %_ptr_Function_float %quad %uint_3
+        %146 = OpLoad %float %145
+        %147 = OpFAdd %float %144 %146
+        %148 = OpFOrdGreaterThan %bool %142 %147
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %149
+        %150 = OpLabel
+               OpReturnValue %false
+        %149 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+ %match_vf2_ = OpFunction %v4float None %33
+      %pos_0 = OpFunctionParameter %_ptr_Function_v2float
+        %151 = OpLabel
+        %res = OpVariable %_ptr_Function_v4float Function
+          %i = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v4float Function
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+%indexable_0 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+%indexable_2 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+               OpStore %res %44
+               OpStore %i %int_0
+               OpBranch %152
+        %152 = OpLabel
+               OpLoopMerge %153 %154 None
+               OpBranch %155
+        %155 = OpLabel
+        %156 = OpLoad %int %i
+        %157 = OpSLessThan %bool %156 %int_8
+               OpBranchConditional %157 %158 %153
+        %158 = OpLabel
+        %159 = OpLoad %int %i
+        %160 = OpLoad %v2float %pos_0
+               OpStore %param %160
+               OpStore %indexable %67
+        %161 = OpAccessChain %_ptr_Function_v4float %indexable %159
+        %162 = OpLoad %v4float %161
+               OpStore %param_0 %162
+        %163 = OpFunctionCall %bool %collision_vf2_vf4_ %param %param_0
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %164
+        %165 = OpLabel
+        %166 = OpLoad %int %i
+               OpStore %indexable_0 %67
+        %167 = OpAccessChain %_ptr_Function_float %indexable_0 %166 %uint_0
+        %168 = OpLoad %float %167
+        %169 = OpConvertFToS %int %168
+        %170 = OpLoad %int %i
+               OpStore %indexable_1 %67
+        %171 = OpAccessChain %_ptr_Function_float %indexable_1 %170 %uint_1
+        %172 = OpLoad %float %171
+        %173 = OpConvertFToS %int %172
+        %174 = OpIMul %int %169 %173
+        %175 = OpLoad %int %i
+        %176 = OpIMul %int %175 %int_9
+        %177 = OpIAdd %int %174 %176
+        %178 = OpIAdd %int %177 %int_11
+        %179 = OpSMod %int %178 %int_16
+               OpStore %indexable_2 %87
+        %180 = OpAccessChain %_ptr_Function_v4float %indexable_2 %179
+        %181 = OpLoad %v4float %180
+               OpStore %res %181
+               OpBranch %164
+        %164 = OpLabel
+               OpBranch %154
+        %154 = OpLabel
+        %182 = OpLoad %int %i
+        %183 = OpIAdd %int %182 %int_1
+               OpStore %i %183
+               OpBranch %152
+        %153 = OpLabel
+        %184 = OpLoad %v4float %res
+               OpReturnValue %184
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..fb19885
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.hlsl
@@ -0,0 +1,107 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_20 : register(b0, space0) {
+  uint4 x_20[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int index = 0;
+static int state[16] = (int[16])0;
+
+bool collision_vf2_vf4_(inout float2 pos, inout float4 quad) {
+  bool4 x_116 = bool4(false, false, false, false);
+  const float x_118 = pos.x;
+  const float x_120 = quad.x;
+  if ((x_118 < x_120)) {
+    return false;
+  }
+  const float x_125 = pos.y;
+  const float x_127 = quad.y;
+  if ((x_125 < x_127)) {
+    return false;
+  }
+  const float x_132 = pos.x;
+  const float x_134 = quad.x;
+  const float x_136 = quad.z;
+  if ((x_132 > (x_134 + x_136))) {
+    return false;
+  }
+  const float x_142 = pos.y;
+  const float x_144 = quad.y;
+  const float x_146 = quad.w;
+  if ((x_142 > (x_144 + x_146))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(inout float2 pos_1) {
+  float4 res = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  float2 param = float2(0.0f, 0.0f);
+  float4 param_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 indexable[8] = (float4[8])0;
+  float4 indexable_1[8] = (float4[8])0;
+  float4 indexable_2[8] = (float4[8])0;
+  float4 indexable_3[16] = (float4[16])0;
+  res = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 8); i = (i + 1)) {
+      const int x_159 = i;
+      const float2 x_160 = pos_1;
+      param = x_160;
+      const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      indexable = tint_symbol_5;
+      const float4 x_162 = indexable[x_159];
+      param_1 = x_162;
+      const bool x_163 = collision_vf2_vf4_(param, param_1);
+      if (x_163) {
+        const int x_166 = i;
+        const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_1 = tint_symbol_6;
+        const float x_168 = indexable_1[x_166].x;
+        const int x_170 = i;
+        const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_2 = tint_symbol_7;
+        const float x_172 = indexable_2[x_170].y;
+        const int x_175 = i;
+        const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+        indexable_3 = tint_symbol_8;
+        const float4 x_181 = indexable_3[((((int(x_168) * int(x_172)) + (x_175 * 9)) + 11) % 16)];
+        res = x_181;
+      }
+    }
+  }
+  return res;
+}
+
+void main_1() {
+  float2 lin = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  const float4 x_105 = gl_FragCoord;
+  const float2 x_108 = asfloat(x_20[0].xy);
+  lin = (float2(x_105.x, x_105.y) / x_108);
+  lin = floor((lin * 32.0f));
+  param_2 = lin;
+  const float4 x_114 = match_vf2_(param_2);
+  x_GLF_color = x_114;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.msl
new file mode 100644
index 0000000..5b43db6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.msl
@@ -0,0 +1,123 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[16];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[8];
+};
+struct tint_array_wrapper_2 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool collision_vf2_vf4_(thread float2* const pos, thread float4* const quad) {
+  bool4 x_116 = bool4(false, false, false, false);
+  float const x_118 = (*(pos)).x;
+  float const x_120 = (*(quad)).x;
+  if ((x_118 < x_120)) {
+    return false;
+  }
+  float const x_125 = (*(pos)).y;
+  float const x_127 = (*(quad)).y;
+  if ((x_125 < x_127)) {
+    return false;
+  }
+  float const x_132 = (*(pos)).x;
+  float const x_134 = (*(quad)).x;
+  float const x_136 = (*(quad)).z;
+  if ((x_132 > (x_134 + x_136))) {
+    return false;
+  }
+  float const x_142 = (*(pos)).y;
+  float const x_144 = (*(quad)).y;
+  float const x_146 = (*(quad)).w;
+  if ((x_142 > (x_144 + x_146))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(thread float2* const pos_1) {
+  float4 res = 0.0f;
+  int i = 0;
+  float2 param = 0.0f;
+  float4 param_1 = 0.0f;
+  tint_array_wrapper_1 indexable = {};
+  tint_array_wrapper_1 indexable_1 = {};
+  tint_array_wrapper_1 indexable_2 = {};
+  tint_array_wrapper_2 indexable_3 = {};
+  res = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_156 = i;
+    if ((x_156 < 8)) {
+    } else {
+      break;
+    }
+    int const x_159 = i;
+    float2 const x_160 = *(pos_1);
+    param = x_160;
+    tint_array_wrapper_1 const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+    indexable = tint_symbol_4;
+    float4 const x_162 = indexable.arr[x_159];
+    param_1 = x_162;
+    bool const x_163 = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_163) {
+      int const x_166 = i;
+      tint_array_wrapper_1 const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_1 = tint_symbol_5;
+      float const x_168 = indexable_1.arr[x_166].x;
+      int const x_170 = i;
+      tint_array_wrapper_1 const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_2 = tint_symbol_6;
+      float const x_172 = indexable_2.arr[x_170].y;
+      int const x_175 = i;
+      tint_array_wrapper_2 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      indexable_3 = tint_symbol_7;
+      float4 const x_181 = indexable_3.arr[((((int(x_168) * int(x_172)) + (x_175 * 9)) + 11) % 16)];
+      res = x_181;
+    }
+    {
+      int const x_182 = i;
+      i = (x_182 + 1);
+    }
+  }
+  float4 const x_184 = res;
+  return x_184;
+}
+
+void main_1(constant buf0& x_20, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  float2 lin = 0.0f;
+  float2 param_2 = 0.0f;
+  float4 const x_105 = *(tint_symbol_9);
+  float2 const x_108 = x_20.resolution;
+  lin = (float2(x_105.x, x_105.y) / x_108);
+  float2 const x_110 = lin;
+  lin = floor((x_110 * 32.0f));
+  float2 const x_113 = lin;
+  param_2 = x_113;
+  float4 const x_114 = match_vf2_(&(param_2));
+  *(tint_symbol_10) = x_114;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_20 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_20, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..44345bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.spvasm
@@ -0,0 +1,313 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 226
+; Schema: 0
+               OpCapability Shader
+        %207 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_20 "x_20"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %index "index"
+               OpName %state "state"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %collision_vf2_vf4_ "collision_vf2_vf4_"
+               OpName %pos "pos"
+               OpName %quad "quad"
+               OpName %x_116 "x_116"
+               OpName %match_vf2_ "match_vf2_"
+               OpName %pos_1 "pos_1"
+               OpName %res "res"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %indexable_2 "indexable_2"
+               OpName %indexable_3 "indexable_3"
+               OpName %main_1 "main_1"
+               OpName %lin "lin"
+               OpName %param_2 "param_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_20 NonWritable
+               OpDecorate %x_20 DescriptorSet 0
+               OpDecorate %x_20 Binding 0
+               OpDecorate %_arr_int_uint_16 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_20 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+         %14 = OpConstantNull %int
+      %index = OpVariable %_ptr_Private_int Private %14
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_int_uint_16 = OpTypeArray %int %uint_16
+%_ptr_Private__arr_int_uint_16 = OpTypePointer Private %_arr_int_uint_16
+         %20 = OpConstantNull %_arr_int_uint_16
+      %state = OpVariable %_ptr_Private__arr_int_uint_16 Private %20
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %25 = OpTypeFunction %bool %_ptr_Function_v2float %_ptr_Function_v4float
+     %v4bool = OpTypeVector %bool 4
+      %false = OpConstantFalse %bool
+         %35 = OpConstantComposite %v4bool %false %false %false %false
+%_ptr_Function_v4bool = OpTypePointer Function %v4bool
+         %38 = OpConstantNull %v4bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+         %89 = OpTypeFunction %v4float %_ptr_Function_v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %97 = OpConstantNull %v2float
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+        %103 = OpConstantNull %_arr_v4float_uint_8
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+        %109 = OpConstantNull %_arr_v4float_uint_16
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+        %112 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+        %129 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+        %130 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+        %131 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+        %133 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+        %136 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+        %138 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+        %140 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+        %142 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+        %143 = OpConstantComposite %_arr_v4float_uint_8 %129 %130 %131 %133 %136 %138 %140 %142
+    %float_0 = OpConstant %float 0
+        %159 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %160 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %164 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %166 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %167 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %168 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %169 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %170 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %171 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %172 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %173 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %174 = OpConstantComposite %_arr_v4float_uint_16 %159 %160 %161 %162 %163 %164 %165 %166 %159 %167 %168 %169 %170 %171 %172 %173
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %191 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+   %main_out = OpTypeStruct %v4float
+        %213 = OpTypeFunction %void %main_out
+%collision_vf2_vf4_ = OpFunction %bool None %25
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+       %quad = OpFunctionParameter %_ptr_Function_v4float
+         %32 = OpLabel
+      %x_116 = OpVariable %_ptr_Function_v4bool Function %38
+               OpStore %x_116 %35
+         %42 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %43 = OpLoad %float %42
+         %45 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %46 = OpLoad %float %45
+         %47 = OpFOrdLessThan %bool %43 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+               OpReturnValue %false
+         %48 = OpLabel
+         %52 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %53 = OpLoad %float %52
+         %55 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %56 = OpLoad %float %55
+         %57 = OpFOrdLessThan %bool %53 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpReturnValue %false
+         %58 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %62 = OpLoad %float %61
+         %64 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %65 = OpLoad %float %64
+         %68 = OpAccessChain %_ptr_Function_float %quad %uint_2
+         %69 = OpLoad %float %68
+         %70 = OpFAdd %float %65 %69
+         %71 = OpFOrdGreaterThan %bool %62 %70
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpReturnValue %false
+         %72 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %76 = OpLoad %float %75
+         %78 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %79 = OpLoad %float %78
+         %82 = OpAccessChain %_ptr_Function_float %quad %uint_3
+         %83 = OpLoad %float %82
+         %84 = OpFAdd %float %79 %83
+         %85 = OpFOrdGreaterThan %bool %76 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+               OpReturnValue %false
+         %86 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+ %match_vf2_ = OpFunction %v4float None %89
+      %pos_1 = OpFunctionParameter %_ptr_Function_v2float
+         %92 = OpLabel
+        %res = OpVariable %_ptr_Function_v4float Function %5
+          %i = OpVariable %_ptr_Function_int Function %14
+      %param = OpVariable %_ptr_Function_v2float Function %97
+    %param_1 = OpVariable %_ptr_Function_v4float Function %5
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %103
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %103
+%indexable_2 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %103
+%indexable_3 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %109
+               OpStore %res %112
+               OpStore %i %int_0
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i
+        %120 = OpSLessThan %bool %118 %int_8
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpBranch %121
+        %123 = OpLabel
+               OpBranch %115
+        %121 = OpLabel
+        %124 = OpLoad %int %i
+        %126 = OpLoad %v2float %pos_1
+               OpStore %param %126
+               OpStore %indexable %143
+        %144 = OpAccessChain %_ptr_Function_v4float %indexable %124
+        %145 = OpLoad %v4float %144
+               OpStore %param_1 %145
+        %146 = OpFunctionCall %bool %collision_vf2_vf4_ %param %param_1
+               OpSelectionMerge %149 None
+               OpBranchConditional %146 %150 %149
+        %150 = OpLabel
+        %151 = OpLoad %int %i
+               OpStore %indexable_1 %143
+        %152 = OpAccessChain %_ptr_Function_float %indexable_1 %151 %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpLoad %int %i
+               OpStore %indexable_2 %143
+        %155 = OpAccessChain %_ptr_Function_float %indexable_2 %154 %uint_1
+        %156 = OpLoad %float %155
+        %157 = OpLoad %int %i
+               OpStore %indexable_3 %174
+        %175 = OpConvertFToS %int %153
+        %176 = OpConvertFToS %int %156
+        %177 = OpIMul %int %175 %176
+        %179 = OpIMul %int %157 %int_9
+        %180 = OpIAdd %int %177 %179
+        %182 = OpIAdd %int %180 %int_11
+        %184 = OpSMod %int %182 %int_16
+        %185 = OpAccessChain %_ptr_Function_v4float %indexable_3 %184
+        %186 = OpLoad %v4float %185
+               OpStore %res %186
+               OpBranch %149
+        %149 = OpLabel
+               OpBranch %116
+        %116 = OpLabel
+        %187 = OpLoad %int %i
+        %189 = OpIAdd %int %187 %int_1
+               OpStore %i %189
+               OpBranch %114
+        %115 = OpLabel
+        %190 = OpLoad %v4float %res
+               OpReturnValue %190
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %191
+        %194 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function %97
+    %param_2 = OpVariable %_ptr_Function_v2float Function %97
+        %197 = OpLoad %v4float %gl_FragCoord
+        %199 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_0
+        %200 = OpLoad %v2float %199
+        %201 = OpCompositeExtract %float %197 0
+        %202 = OpCompositeExtract %float %197 1
+        %203 = OpCompositeConstruct %v2float %201 %202
+        %204 = OpFDiv %v2float %203 %200
+               OpStore %lin %204
+        %205 = OpLoad %v2float %lin
+        %209 = OpVectorTimesScalar %v2float %205 %float_32
+        %206 = OpExtInst %v2float %207 Floor %209
+               OpStore %lin %206
+        %210 = OpLoad %v2float %lin
+               OpStore %param_2 %210
+        %211 = OpFunctionCall %v4float %match_vf2_ %param_2
+               OpStore %x_GLF_color %211
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %213
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %217 = OpLabel
+        %218 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %218
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %191
+        %220 = OpLabel
+        %221 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %221
+        %222 = OpFunctionCall %void %main_1
+        %224 = OpLoad %v4float %x_GLF_color
+        %225 = OpCompositeConstruct %main_out %224
+        %223 = OpFunctionCall %void %tint_symbol_3 %225
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..f70d557
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.spvasm.expected.wgsl
@@ -0,0 +1,114 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> index : i32;
+
+var<private> state : array<i32, 16>;
+
+fn collision_vf2_vf4_(pos : ptr<function, vec2<f32>>, quad : ptr<function, vec4<f32>>) -> bool {
+  var x_116 : vec4<bool> = vec4<bool>(false, false, false, false);
+  let x_118 : f32 = (*(pos)).x;
+  let x_120 : f32 = (*(quad)).x;
+  if ((x_118 < x_120)) {
+    return false;
+  }
+  let x_125 : f32 = (*(pos)).y;
+  let x_127 : f32 = (*(quad)).y;
+  if ((x_125 < x_127)) {
+    return false;
+  }
+  let x_132 : f32 = (*(pos)).x;
+  let x_134 : f32 = (*(quad)).x;
+  let x_136 : f32 = (*(quad)).z;
+  if ((x_132 > (x_134 + x_136))) {
+    return false;
+  }
+  let x_142 : f32 = (*(pos)).y;
+  let x_144 : f32 = (*(quad)).y;
+  let x_146 : f32 = (*(quad)).w;
+  if ((x_142 > (x_144 + x_146))) {
+    return false;
+  }
+  return true;
+}
+
+fn match_vf2_(pos_1 : ptr<function, vec2<f32>>) -> vec4<f32> {
+  var res : vec4<f32>;
+  var i : i32;
+  var param : vec2<f32>;
+  var param_1 : vec4<f32>;
+  var indexable : array<vec4<f32>, 8>;
+  var indexable_1 : array<vec4<f32>, 8>;
+  var indexable_2 : array<vec4<f32>, 8>;
+  var indexable_3 : array<vec4<f32>, 16>;
+  res = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  i = 0;
+  loop {
+    let x_156 : i32 = i;
+    if ((x_156 < 8)) {
+    } else {
+      break;
+    }
+    let x_159 : i32 = i;
+    let x_160 : vec2<f32> = *(pos_1);
+    param = x_160;
+    indexable = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    let x_162 : vec4<f32> = indexable[x_159];
+    param_1 = x_162;
+    let x_163 : bool = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_163) {
+      let x_166 : i32 = i;
+      indexable_1 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_168 : f32 = indexable_1[x_166].x;
+      let x_170 : i32 = i;
+      indexable_2 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_172 : f32 = indexable_2[x_170].y;
+      let x_175 : i32 = i;
+      indexable_3 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      let x_181 : vec4<f32> = indexable_3[((((i32(x_168) * i32(x_172)) + (x_175 * 9)) + 11) % 16)];
+      res = x_181;
+    }
+
+    continuing {
+      let x_182 : i32 = i;
+      i = (x_182 + 1);
+    }
+  }
+  let x_184 : vec4<f32> = res;
+  return x_184;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var param_2 : vec2<f32>;
+  let x_105 : vec4<f32> = gl_FragCoord;
+  let x_108 : vec2<f32> = x_20.resolution;
+  lin = (vec2<f32>(x_105.x, x_105.y) / x_108);
+  let x_110 : vec2<f32> = lin;
+  lin = floor((x_110 * 32.0));
+  let x_113 : vec2<f32> = lin;
+  param_2 = x_113;
+  let x_114 : vec4<f32> = match_vf2_(&(param_2));
+  x_GLF_color = x_114;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
new file mode 100644
index 0000000..f70d557
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
@@ -0,0 +1,114 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> index : i32;
+
+var<private> state : array<i32, 16>;
+
+fn collision_vf2_vf4_(pos : ptr<function, vec2<f32>>, quad : ptr<function, vec4<f32>>) -> bool {
+  var x_116 : vec4<bool> = vec4<bool>(false, false, false, false);
+  let x_118 : f32 = (*(pos)).x;
+  let x_120 : f32 = (*(quad)).x;
+  if ((x_118 < x_120)) {
+    return false;
+  }
+  let x_125 : f32 = (*(pos)).y;
+  let x_127 : f32 = (*(quad)).y;
+  if ((x_125 < x_127)) {
+    return false;
+  }
+  let x_132 : f32 = (*(pos)).x;
+  let x_134 : f32 = (*(quad)).x;
+  let x_136 : f32 = (*(quad)).z;
+  if ((x_132 > (x_134 + x_136))) {
+    return false;
+  }
+  let x_142 : f32 = (*(pos)).y;
+  let x_144 : f32 = (*(quad)).y;
+  let x_146 : f32 = (*(quad)).w;
+  if ((x_142 > (x_144 + x_146))) {
+    return false;
+  }
+  return true;
+}
+
+fn match_vf2_(pos_1 : ptr<function, vec2<f32>>) -> vec4<f32> {
+  var res : vec4<f32>;
+  var i : i32;
+  var param : vec2<f32>;
+  var param_1 : vec4<f32>;
+  var indexable : array<vec4<f32>, 8>;
+  var indexable_1 : array<vec4<f32>, 8>;
+  var indexable_2 : array<vec4<f32>, 8>;
+  var indexable_3 : array<vec4<f32>, 16>;
+  res = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  i = 0;
+  loop {
+    let x_156 : i32 = i;
+    if ((x_156 < 8)) {
+    } else {
+      break;
+    }
+    let x_159 : i32 = i;
+    let x_160 : vec2<f32> = *(pos_1);
+    param = x_160;
+    indexable = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    let x_162 : vec4<f32> = indexable[x_159];
+    param_1 = x_162;
+    let x_163 : bool = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_163) {
+      let x_166 : i32 = i;
+      indexable_1 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_168 : f32 = indexable_1[x_166].x;
+      let x_170 : i32 = i;
+      indexable_2 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_172 : f32 = indexable_2[x_170].y;
+      let x_175 : i32 = i;
+      indexable_3 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      let x_181 : vec4<f32> = indexable_3[((((i32(x_168) * i32(x_172)) + (x_175 * 9)) + 11) % 16)];
+      res = x_181;
+    }
+
+    continuing {
+      let x_182 : i32 = i;
+      i = (x_182 + 1);
+    }
+  }
+  let x_184 : vec4<f32> = res;
+  return x_184;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var param_2 : vec2<f32>;
+  let x_105 : vec4<f32> = gl_FragCoord;
+  let x_108 : vec2<f32> = x_20.resolution;
+  lin = (vec2<f32>(x_105.x, x_105.y) / x_108);
+  let x_110 : vec2<f32> = lin;
+  lin = floor((x_110 * 32.0));
+  let x_113 : vec2<f32> = lin;
+  param_2 = x_113;
+  let x_114 : vec4<f32> = match_vf2_(&(param_2));
+  x_GLF_color = x_114;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..fb19885
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.hlsl
@@ -0,0 +1,107 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_20 : register(b0, space0) {
+  uint4 x_20[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int index = 0;
+static int state[16] = (int[16])0;
+
+bool collision_vf2_vf4_(inout float2 pos, inout float4 quad) {
+  bool4 x_116 = bool4(false, false, false, false);
+  const float x_118 = pos.x;
+  const float x_120 = quad.x;
+  if ((x_118 < x_120)) {
+    return false;
+  }
+  const float x_125 = pos.y;
+  const float x_127 = quad.y;
+  if ((x_125 < x_127)) {
+    return false;
+  }
+  const float x_132 = pos.x;
+  const float x_134 = quad.x;
+  const float x_136 = quad.z;
+  if ((x_132 > (x_134 + x_136))) {
+    return false;
+  }
+  const float x_142 = pos.y;
+  const float x_144 = quad.y;
+  const float x_146 = quad.w;
+  if ((x_142 > (x_144 + x_146))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(inout float2 pos_1) {
+  float4 res = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int i = 0;
+  float2 param = float2(0.0f, 0.0f);
+  float4 param_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 indexable[8] = (float4[8])0;
+  float4 indexable_1[8] = (float4[8])0;
+  float4 indexable_2[8] = (float4[8])0;
+  float4 indexable_3[16] = (float4[16])0;
+  res = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 8); i = (i + 1)) {
+      const int x_159 = i;
+      const float2 x_160 = pos_1;
+      param = x_160;
+      const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      indexable = tint_symbol_5;
+      const float4 x_162 = indexable[x_159];
+      param_1 = x_162;
+      const bool x_163 = collision_vf2_vf4_(param, param_1);
+      if (x_163) {
+        const int x_166 = i;
+        const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_1 = tint_symbol_6;
+        const float x_168 = indexable_1[x_166].x;
+        const int x_170 = i;
+        const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_2 = tint_symbol_7;
+        const float x_172 = indexable_2[x_170].y;
+        const int x_175 = i;
+        const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+        indexable_3 = tint_symbol_8;
+        const float4 x_181 = indexable_3[((((int(x_168) * int(x_172)) + (x_175 * 9)) + 11) % 16)];
+        res = x_181;
+      }
+    }
+  }
+  return res;
+}
+
+void main_1() {
+  float2 lin = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  const float4 x_105 = gl_FragCoord;
+  const float2 x_108 = asfloat(x_20[0].xy);
+  lin = (float2(x_105.x, x_105.y) / x_108);
+  lin = floor((lin * 32.0f));
+  param_2 = lin;
+  const float4 x_114 = match_vf2_(param_2);
+  x_GLF_color = x_114;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.msl
new file mode 100644
index 0000000..5b43db6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.msl
@@ -0,0 +1,123 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[16];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[8];
+};
+struct tint_array_wrapper_2 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool collision_vf2_vf4_(thread float2* const pos, thread float4* const quad) {
+  bool4 x_116 = bool4(false, false, false, false);
+  float const x_118 = (*(pos)).x;
+  float const x_120 = (*(quad)).x;
+  if ((x_118 < x_120)) {
+    return false;
+  }
+  float const x_125 = (*(pos)).y;
+  float const x_127 = (*(quad)).y;
+  if ((x_125 < x_127)) {
+    return false;
+  }
+  float const x_132 = (*(pos)).x;
+  float const x_134 = (*(quad)).x;
+  float const x_136 = (*(quad)).z;
+  if ((x_132 > (x_134 + x_136))) {
+    return false;
+  }
+  float const x_142 = (*(pos)).y;
+  float const x_144 = (*(quad)).y;
+  float const x_146 = (*(quad)).w;
+  if ((x_142 > (x_144 + x_146))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(thread float2* const pos_1) {
+  float4 res = 0.0f;
+  int i = 0;
+  float2 param = 0.0f;
+  float4 param_1 = 0.0f;
+  tint_array_wrapper_1 indexable = {};
+  tint_array_wrapper_1 indexable_1 = {};
+  tint_array_wrapper_1 indexable_2 = {};
+  tint_array_wrapper_2 indexable_3 = {};
+  res = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_156 = i;
+    if ((x_156 < 8)) {
+    } else {
+      break;
+    }
+    int const x_159 = i;
+    float2 const x_160 = *(pos_1);
+    param = x_160;
+    tint_array_wrapper_1 const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+    indexable = tint_symbol_4;
+    float4 const x_162 = indexable.arr[x_159];
+    param_1 = x_162;
+    bool const x_163 = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_163) {
+      int const x_166 = i;
+      tint_array_wrapper_1 const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_1 = tint_symbol_5;
+      float const x_168 = indexable_1.arr[x_166].x;
+      int const x_170 = i;
+      tint_array_wrapper_1 const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_2 = tint_symbol_6;
+      float const x_172 = indexable_2.arr[x_170].y;
+      int const x_175 = i;
+      tint_array_wrapper_2 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      indexable_3 = tint_symbol_7;
+      float4 const x_181 = indexable_3.arr[((((int(x_168) * int(x_172)) + (x_175 * 9)) + 11) % 16)];
+      res = x_181;
+    }
+    {
+      int const x_182 = i;
+      i = (x_182 + 1);
+    }
+  }
+  float4 const x_184 = res;
+  return x_184;
+}
+
+void main_1(constant buf0& x_20, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  float2 lin = 0.0f;
+  float2 param_2 = 0.0f;
+  float4 const x_105 = *(tint_symbol_9);
+  float2 const x_108 = x_20.resolution;
+  lin = (float2(x_105.x, x_105.y) / x_108);
+  float2 const x_110 = lin;
+  lin = floor((x_110 * 32.0f));
+  float2 const x_113 = lin;
+  param_2 = x_113;
+  float4 const x_114 = match_vf2_(&(param_2));
+  *(tint_symbol_10) = x_114;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_20 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_20, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..44345bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.spvasm
@@ -0,0 +1,313 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 226
+; Schema: 0
+               OpCapability Shader
+        %207 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_20 "x_20"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %index "index"
+               OpName %state "state"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %collision_vf2_vf4_ "collision_vf2_vf4_"
+               OpName %pos "pos"
+               OpName %quad "quad"
+               OpName %x_116 "x_116"
+               OpName %match_vf2_ "match_vf2_"
+               OpName %pos_1 "pos_1"
+               OpName %res "res"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %indexable_2 "indexable_2"
+               OpName %indexable_3 "indexable_3"
+               OpName %main_1 "main_1"
+               OpName %lin "lin"
+               OpName %param_2 "param_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_20 NonWritable
+               OpDecorate %x_20 DescriptorSet 0
+               OpDecorate %x_20 Binding 0
+               OpDecorate %_arr_int_uint_16 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_20 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+         %14 = OpConstantNull %int
+      %index = OpVariable %_ptr_Private_int Private %14
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_int_uint_16 = OpTypeArray %int %uint_16
+%_ptr_Private__arr_int_uint_16 = OpTypePointer Private %_arr_int_uint_16
+         %20 = OpConstantNull %_arr_int_uint_16
+      %state = OpVariable %_ptr_Private__arr_int_uint_16 Private %20
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %25 = OpTypeFunction %bool %_ptr_Function_v2float %_ptr_Function_v4float
+     %v4bool = OpTypeVector %bool 4
+      %false = OpConstantFalse %bool
+         %35 = OpConstantComposite %v4bool %false %false %false %false
+%_ptr_Function_v4bool = OpTypePointer Function %v4bool
+         %38 = OpConstantNull %v4bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+         %89 = OpTypeFunction %v4float %_ptr_Function_v2float
+%_ptr_Function_int = OpTypePointer Function %int
+         %97 = OpConstantNull %v2float
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+        %103 = OpConstantNull %_arr_v4float_uint_8
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+        %109 = OpConstantNull %_arr_v4float_uint_16
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+        %112 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+        %129 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+        %130 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+        %131 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+        %133 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+        %136 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+        %138 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+        %140 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+        %142 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+        %143 = OpConstantComposite %_arr_v4float_uint_8 %129 %130 %131 %133 %136 %138 %140 %142
+    %float_0 = OpConstant %float 0
+        %159 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %160 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %164 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %166 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %167 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %168 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %169 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %170 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %171 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %172 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %173 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %174 = OpConstantComposite %_arr_v4float_uint_16 %159 %160 %161 %162 %163 %164 %165 %166 %159 %167 %168 %169 %170 %171 %172 %173
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %191 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+   %main_out = OpTypeStruct %v4float
+        %213 = OpTypeFunction %void %main_out
+%collision_vf2_vf4_ = OpFunction %bool None %25
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+       %quad = OpFunctionParameter %_ptr_Function_v4float
+         %32 = OpLabel
+      %x_116 = OpVariable %_ptr_Function_v4bool Function %38
+               OpStore %x_116 %35
+         %42 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %43 = OpLoad %float %42
+         %45 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %46 = OpLoad %float %45
+         %47 = OpFOrdLessThan %bool %43 %46
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+               OpReturnValue %false
+         %48 = OpLabel
+         %52 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %53 = OpLoad %float %52
+         %55 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %56 = OpLoad %float %55
+         %57 = OpFOrdLessThan %bool %53 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpReturnValue %false
+         %58 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %62 = OpLoad %float %61
+         %64 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %65 = OpLoad %float %64
+         %68 = OpAccessChain %_ptr_Function_float %quad %uint_2
+         %69 = OpLoad %float %68
+         %70 = OpFAdd %float %65 %69
+         %71 = OpFOrdGreaterThan %bool %62 %70
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpReturnValue %false
+         %72 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %76 = OpLoad %float %75
+         %78 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %79 = OpLoad %float %78
+         %82 = OpAccessChain %_ptr_Function_float %quad %uint_3
+         %83 = OpLoad %float %82
+         %84 = OpFAdd %float %79 %83
+         %85 = OpFOrdGreaterThan %bool %76 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+               OpReturnValue %false
+         %86 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+ %match_vf2_ = OpFunction %v4float None %89
+      %pos_1 = OpFunctionParameter %_ptr_Function_v2float
+         %92 = OpLabel
+        %res = OpVariable %_ptr_Function_v4float Function %5
+          %i = OpVariable %_ptr_Function_int Function %14
+      %param = OpVariable %_ptr_Function_v2float Function %97
+    %param_1 = OpVariable %_ptr_Function_v4float Function %5
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %103
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %103
+%indexable_2 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %103
+%indexable_3 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %109
+               OpStore %res %112
+               OpStore %i %int_0
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i
+        %120 = OpSLessThan %bool %118 %int_8
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpBranch %121
+        %123 = OpLabel
+               OpBranch %115
+        %121 = OpLabel
+        %124 = OpLoad %int %i
+        %126 = OpLoad %v2float %pos_1
+               OpStore %param %126
+               OpStore %indexable %143
+        %144 = OpAccessChain %_ptr_Function_v4float %indexable %124
+        %145 = OpLoad %v4float %144
+               OpStore %param_1 %145
+        %146 = OpFunctionCall %bool %collision_vf2_vf4_ %param %param_1
+               OpSelectionMerge %149 None
+               OpBranchConditional %146 %150 %149
+        %150 = OpLabel
+        %151 = OpLoad %int %i
+               OpStore %indexable_1 %143
+        %152 = OpAccessChain %_ptr_Function_float %indexable_1 %151 %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpLoad %int %i
+               OpStore %indexable_2 %143
+        %155 = OpAccessChain %_ptr_Function_float %indexable_2 %154 %uint_1
+        %156 = OpLoad %float %155
+        %157 = OpLoad %int %i
+               OpStore %indexable_3 %174
+        %175 = OpConvertFToS %int %153
+        %176 = OpConvertFToS %int %156
+        %177 = OpIMul %int %175 %176
+        %179 = OpIMul %int %157 %int_9
+        %180 = OpIAdd %int %177 %179
+        %182 = OpIAdd %int %180 %int_11
+        %184 = OpSMod %int %182 %int_16
+        %185 = OpAccessChain %_ptr_Function_v4float %indexable_3 %184
+        %186 = OpLoad %v4float %185
+               OpStore %res %186
+               OpBranch %149
+        %149 = OpLabel
+               OpBranch %116
+        %116 = OpLabel
+        %187 = OpLoad %int %i
+        %189 = OpIAdd %int %187 %int_1
+               OpStore %i %189
+               OpBranch %114
+        %115 = OpLabel
+        %190 = OpLoad %v4float %res
+               OpReturnValue %190
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %191
+        %194 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function %97
+    %param_2 = OpVariable %_ptr_Function_v2float Function %97
+        %197 = OpLoad %v4float %gl_FragCoord
+        %199 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_0
+        %200 = OpLoad %v2float %199
+        %201 = OpCompositeExtract %float %197 0
+        %202 = OpCompositeExtract %float %197 1
+        %203 = OpCompositeConstruct %v2float %201 %202
+        %204 = OpFDiv %v2float %203 %200
+               OpStore %lin %204
+        %205 = OpLoad %v2float %lin
+        %209 = OpVectorTimesScalar %v2float %205 %float_32
+        %206 = OpExtInst %v2float %207 Floor %209
+               OpStore %lin %206
+        %210 = OpLoad %v2float %lin
+               OpStore %param_2 %210
+        %211 = OpFunctionCall %v4float %match_vf2_ %param_2
+               OpStore %x_GLF_color %211
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %213
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %217 = OpLabel
+        %218 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %218
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %191
+        %220 = OpLabel
+        %221 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %221
+        %222 = OpFunctionCall %void %main_1
+        %224 = OpLoad %v4float %x_GLF_color
+        %225 = OpCompositeConstruct %main_out %224
+        %223 = OpFunctionCall %void %tint_symbol_3 %225
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..f70d557
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl.expected.wgsl
@@ -0,0 +1,114 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> index : i32;
+
+var<private> state : array<i32, 16>;
+
+fn collision_vf2_vf4_(pos : ptr<function, vec2<f32>>, quad : ptr<function, vec4<f32>>) -> bool {
+  var x_116 : vec4<bool> = vec4<bool>(false, false, false, false);
+  let x_118 : f32 = (*(pos)).x;
+  let x_120 : f32 = (*(quad)).x;
+  if ((x_118 < x_120)) {
+    return false;
+  }
+  let x_125 : f32 = (*(pos)).y;
+  let x_127 : f32 = (*(quad)).y;
+  if ((x_125 < x_127)) {
+    return false;
+  }
+  let x_132 : f32 = (*(pos)).x;
+  let x_134 : f32 = (*(quad)).x;
+  let x_136 : f32 = (*(quad)).z;
+  if ((x_132 > (x_134 + x_136))) {
+    return false;
+  }
+  let x_142 : f32 = (*(pos)).y;
+  let x_144 : f32 = (*(quad)).y;
+  let x_146 : f32 = (*(quad)).w;
+  if ((x_142 > (x_144 + x_146))) {
+    return false;
+  }
+  return true;
+}
+
+fn match_vf2_(pos_1 : ptr<function, vec2<f32>>) -> vec4<f32> {
+  var res : vec4<f32>;
+  var i : i32;
+  var param : vec2<f32>;
+  var param_1 : vec4<f32>;
+  var indexable : array<vec4<f32>, 8>;
+  var indexable_1 : array<vec4<f32>, 8>;
+  var indexable_2 : array<vec4<f32>, 8>;
+  var indexable_3 : array<vec4<f32>, 16>;
+  res = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  i = 0;
+  loop {
+    let x_156 : i32 = i;
+    if ((x_156 < 8)) {
+    } else {
+      break;
+    }
+    let x_159 : i32 = i;
+    let x_160 : vec2<f32> = *(pos_1);
+    param = x_160;
+    indexable = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    let x_162 : vec4<f32> = indexable[x_159];
+    param_1 = x_162;
+    let x_163 : bool = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_163) {
+      let x_166 : i32 = i;
+      indexable_1 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_168 : f32 = indexable_1[x_166].x;
+      let x_170 : i32 = i;
+      indexable_2 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_172 : f32 = indexable_2[x_170].y;
+      let x_175 : i32 = i;
+      indexable_3 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      let x_181 : vec4<f32> = indexable_3[((((i32(x_168) * i32(x_172)) + (x_175 * 9)) + 11) % 16)];
+      res = x_181;
+    }
+
+    continuing {
+      let x_182 : i32 = i;
+      i = (x_182 + 1);
+    }
+  }
+  let x_184 : vec4<f32> = res;
+  return x_184;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var param_2 : vec2<f32>;
+  let x_105 : vec4<f32> = gl_FragCoord;
+  let x_108 : vec2<f32> = x_20.resolution;
+  lin = (vec2<f32>(x_105.x, x_105.y) / x_108);
+  let x_110 : vec2<f32> = lin;
+  lin = floor((x_110 * 32.0));
+  let x_113 : vec2<f32> = lin;
+  param_2 = x_113;
+  let x_114 : vec4<f32> = match_vf2_(&(param_2));
+  x_GLF_color = x_114;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm
new file mode 100644
index 0000000..a8c4c53
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm
@@ -0,0 +1,565 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %__0 ""
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %34 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %37 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %main = OpFunction %void None %34
+         %85 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %86 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %87 = OpLoad %float %86
+         %88 = OpConvertFToS %int %87
+               OpStore %i_2 %88
+               OpBranch %89
+         %89 = OpLabel
+               OpLoopMerge %90 %91 None
+               OpBranch %92
+         %92 = OpLabel
+         %93 = OpLoad %int %i_2
+               OpSelectionMerge %94 None
+               OpSwitch %93 %94 0 %95 1 %96 2 %97 3 %98 4 %99 5 %100 6 %101 7 %102 8 %103 9 %104
+         %95 = OpLabel
+        %105 = OpLoad %int %i_2
+        %106 = OpAccessChain %_ptr_Private_int %data %105
+               OpStore %106 %int_4
+               OpBranch %94
+         %96 = OpLabel
+        %107 = OpLoad %int %i_2
+        %108 = OpAccessChain %_ptr_Private_int %data %107
+               OpStore %108 %int_3
+               OpBranch %94
+         %97 = OpLabel
+        %109 = OpLoad %int %i_2
+        %110 = OpAccessChain %_ptr_Private_int %data %109
+               OpStore %110 %int_2
+               OpBranch %94
+         %98 = OpLabel
+        %111 = OpLoad %int %i_2
+        %112 = OpAccessChain %_ptr_Private_int %data %111
+               OpStore %112 %int_1
+               OpBranch %94
+         %99 = OpLabel
+        %113 = OpLoad %int %i_2
+        %114 = OpAccessChain %_ptr_Private_int %data %113
+               OpStore %114 %int_0
+               OpBranch %94
+        %100 = OpLabel
+        %115 = OpLoad %int %i_2
+        %116 = OpAccessChain %_ptr_Private_int %data %115
+               OpStore %116 %int_n1
+               OpBranch %94
+        %101 = OpLabel
+        %117 = OpLoad %int %i_2
+        %118 = OpAccessChain %_ptr_Private_int %data %117
+               OpStore %118 %int_n2
+               OpBranch %94
+        %102 = OpLabel
+        %119 = OpLoad %int %i_2
+        %120 = OpAccessChain %_ptr_Private_int %data %119
+               OpStore %120 %int_n3
+               OpBranch %94
+        %103 = OpLabel
+        %121 = OpLoad %int %i_2
+        %122 = OpAccessChain %_ptr_Private_int %data %121
+               OpStore %122 %int_n4
+               OpBranch %94
+        %104 = OpLabel
+        %123 = OpLoad %int %i_2
+        %124 = OpAccessChain %_ptr_Private_int %data %123
+               OpStore %124 %int_n5
+               OpBranch %94
+         %94 = OpLabel
+        %125 = OpLoad %int %i_2
+        %126 = OpIAdd %int %125 %int_1
+               OpStore %i_2 %126
+               OpBranch %91
+         %91 = OpLabel
+        %127 = OpLoad %int %i_2
+        %128 = OpSLessThan %bool %127 %int_10
+               OpBranchConditional %128 %89 %90
+         %90 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %j_0
+        %134 = OpSLessThan %bool %133 %int_10
+               OpBranchConditional %134 %135 %130
+        %135 = OpLabel
+        %136 = OpLoad %int %j_0
+        %137 = OpLoad %int %j_0
+        %138 = OpAccessChain %_ptr_Private_int %data %137
+        %139 = OpLoad %int %138
+        %140 = OpAccessChain %_ptr_Private_int %temp %136
+               OpStore %140 %139
+               OpBranch %131
+        %131 = OpLabel
+        %141 = OpLoad %int %j_0
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %j_0 %142
+               OpBranch %129
+        %130 = OpLabel
+        %143 = OpFunctionCall %void %mergeSort_
+        %144 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %145 = OpLoad %float %144
+        %146 = OpConvertFToS %int %145
+        %147 = OpSLessThan %bool %146 %int_30
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %150
+        %149 = OpLabel
+        %151 = OpAccessChain %_ptr_Private_int %data %int_0
+        %152 = OpLoad %int %151
+        %153 = OpConvertSToF %float %152
+        %154 = OpFDiv %float %153 %float_10
+        %155 = OpFAdd %float %float_0_5 %154
+               OpStore %grey %155
+               OpBranch %148
+        %150 = OpLabel
+        %156 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %157 = OpLoad %float %156
+        %158 = OpConvertFToS %int %157
+        %159 = OpSLessThan %bool %158 %int_60
+               OpSelectionMerge %160 None
+               OpBranchConditional %159 %161 %162
+        %161 = OpLabel
+        %163 = OpAccessChain %_ptr_Private_int %data %int_1
+        %164 = OpLoad %int %163
+        %165 = OpConvertSToF %float %164
+        %166 = OpFDiv %float %165 %float_10
+        %167 = OpFAdd %float %float_0_5 %166
+               OpStore %grey %167
+               OpBranch %160
+        %162 = OpLabel
+        %168 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %169 = OpLoad %float %168
+        %170 = OpConvertFToS %int %169
+        %171 = OpSLessThan %bool %170 %int_90
+               OpSelectionMerge %172 None
+               OpBranchConditional %171 %173 %174
+        %173 = OpLabel
+        %175 = OpAccessChain %_ptr_Private_int %data %int_2
+        %176 = OpLoad %int %175
+        %177 = OpConvertSToF %float %176
+        %178 = OpFDiv %float %177 %float_10
+        %179 = OpFAdd %float %float_0_5 %178
+               OpStore %grey %179
+               OpBranch %172
+        %174 = OpLabel
+        %180 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %181 = OpLoad %float %180
+        %182 = OpConvertFToS %int %181
+        %183 = OpSLessThan %bool %182 %int_120
+               OpSelectionMerge %184 None
+               OpBranchConditional %183 %185 %186
+        %185 = OpLabel
+        %187 = OpAccessChain %_ptr_Private_int %data %int_3
+        %188 = OpLoad %int %187
+        %189 = OpConvertSToF %float %188
+        %190 = OpFDiv %float %189 %float_10
+        %191 = OpFAdd %float %float_0_5 %190
+               OpStore %grey %191
+               OpBranch %184
+        %186 = OpLabel
+        %192 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %193 = OpLoad %float %192
+        %194 = OpConvertFToS %int %193
+        %195 = OpSLessThan %bool %194 %int_150
+               OpSelectionMerge %196 None
+               OpBranchConditional %195 %197 %198
+        %197 = OpLabel
+               OpKill
+        %198 = OpLabel
+        %199 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %200 = OpLoad %float %199
+        %201 = OpConvertFToS %int %200
+        %202 = OpSLessThan %bool %201 %int_180
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %205
+        %204 = OpLabel
+        %206 = OpAccessChain %_ptr_Private_int %data %int_5
+        %207 = OpLoad %int %206
+        %208 = OpConvertSToF %float %207
+        %209 = OpFDiv %float %208 %float_10
+        %210 = OpFAdd %float %float_0_5 %209
+               OpStore %grey %210
+               OpBranch %203
+        %205 = OpLabel
+        %211 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %212 = OpLoad %float %211
+        %213 = OpConvertFToS %int %212
+        %214 = OpSLessThan %bool %213 %int_210
+               OpSelectionMerge %215 None
+               OpBranchConditional %214 %216 %217
+        %216 = OpLabel
+        %218 = OpAccessChain %_ptr_Private_int %data %int_6
+        %219 = OpLoad %int %218
+        %220 = OpConvertSToF %float %219
+        %221 = OpFDiv %float %220 %float_10
+        %222 = OpFAdd %float %float_0_5 %221
+               OpStore %grey %222
+               OpBranch %215
+        %217 = OpLabel
+        %223 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %224 = OpLoad %float %223
+        %225 = OpConvertFToS %int %224
+        %226 = OpSLessThan %bool %225 %int_240
+               OpSelectionMerge %227 None
+               OpBranchConditional %226 %228 %229
+        %228 = OpLabel
+        %230 = OpAccessChain %_ptr_Private_int %data %int_7
+        %231 = OpLoad %int %230
+        %232 = OpConvertSToF %float %231
+        %233 = OpFDiv %float %232 %float_10
+        %234 = OpFAdd %float %float_0_5 %233
+               OpStore %grey %234
+               OpBranch %227
+        %229 = OpLabel
+        %235 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %236 = OpLoad %float %235
+        %237 = OpConvertFToS %int %236
+        %238 = OpSLessThan %bool %237 %int_270
+               OpSelectionMerge %239 None
+               OpBranchConditional %238 %240 %241
+        %240 = OpLabel
+        %242 = OpAccessChain %_ptr_Private_int %data %int_8
+        %243 = OpLoad %int %242
+        %244 = OpConvertSToF %float %243
+        %245 = OpFDiv %float %244 %float_10
+        %246 = OpFAdd %float %float_0_5 %245
+               OpStore %grey %246
+               OpBranch %239
+        %241 = OpLabel
+               OpKill
+        %239 = OpLabel
+               OpBranch %227
+        %227 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+               OpBranch %203
+        %203 = OpLabel
+               OpBranch %196
+        %196 = OpLabel
+               OpBranch %184
+        %184 = OpLabel
+               OpBranch %172
+        %172 = OpLabel
+               OpBranch %160
+        %160 = OpLabel
+               OpBranch %148
+        %148 = OpLabel
+        %247 = OpLoad %float %grey
+        %248 = OpCompositeConstruct %v3float %247 %247 %247
+        %249 = OpCompositeExtract %float %248 0
+        %250 = OpCompositeExtract %float %248 1
+        %251 = OpCompositeExtract %float %248 2
+        %252 = OpCompositeConstruct %v4float %249 %250 %251 %float_1
+               OpStore %_GLF_color %252
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %37
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %253 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %254 = OpLoad %int %from
+               OpStore %k %254
+        %255 = OpLoad %int %from
+               OpStore %i %255
+        %256 = OpLoad %int %mid
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %j %257
+               OpBranch %258
+        %258 = OpLabel
+               OpLoopMerge %259 %260 None
+               OpBranch %261
+        %261 = OpLabel
+        %262 = OpLoad %int %i
+        %263 = OpLoad %int %mid
+        %264 = OpSLessThanEqual %bool %262 %263
+        %265 = OpLoad %int %j
+        %266 = OpLoad %int %to
+        %267 = OpSLessThanEqual %bool %265 %266
+        %268 = OpLogicalAnd %bool %264 %267
+               OpBranchConditional %268 %269 %259
+        %269 = OpLabel
+        %270 = OpLoad %int %i
+        %271 = OpAccessChain %_ptr_Private_int %data %270
+        %272 = OpLoad %int %271
+        %273 = OpLoad %int %j
+        %274 = OpAccessChain %_ptr_Private_int %data %273
+        %275 = OpLoad %int %274
+        %276 = OpSLessThan %bool %272 %275
+               OpSelectionMerge %277 None
+               OpBranchConditional %276 %278 %279
+        %278 = OpLabel
+        %280 = OpLoad %int %k
+        %281 = OpIAdd %int %280 %int_1
+               OpStore %k %281
+        %282 = OpLoad %int %i
+        %283 = OpIAdd %int %282 %int_1
+               OpStore %i %283
+        %284 = OpAccessChain %_ptr_Private_int %data %282
+        %285 = OpLoad %int %284
+        %286 = OpAccessChain %_ptr_Private_int %temp %280
+               OpStore %286 %285
+               OpBranch %277
+        %279 = OpLabel
+        %287 = OpLoad %int %k
+        %288 = OpIAdd %int %287 %int_1
+               OpStore %k %288
+        %289 = OpLoad %int %j
+        %290 = OpIAdd %int %289 %int_1
+               OpStore %j %290
+        %291 = OpAccessChain %_ptr_Private_int %data %289
+        %292 = OpLoad %int %291
+        %293 = OpAccessChain %_ptr_Private_int %temp %287
+               OpStore %293 %292
+               OpBranch %277
+        %277 = OpLabel
+               OpBranch %260
+        %260 = OpLabel
+               OpBranch %258
+        %259 = OpLabel
+               OpBranch %294
+        %294 = OpLabel
+               OpLoopMerge %295 %296 None
+               OpBranch %297
+        %297 = OpLabel
+        %298 = OpLoad %int %i
+        %299 = OpSLessThan %bool %298 %int_10
+        %300 = OpLoad %int %i
+        %301 = OpLoad %int %mid
+        %302 = OpSLessThanEqual %bool %300 %301
+        %303 = OpLogicalAnd %bool %299 %302
+               OpBranchConditional %303 %304 %295
+        %304 = OpLabel
+        %305 = OpLoad %int %k
+        %306 = OpIAdd %int %305 %int_1
+               OpStore %k %306
+        %307 = OpLoad %int %i
+        %308 = OpIAdd %int %307 %int_1
+               OpStore %i %308
+        %309 = OpAccessChain %_ptr_Private_int %data %307
+        %310 = OpLoad %int %309
+        %311 = OpAccessChain %_ptr_Private_int %temp %305
+               OpStore %311 %310
+               OpBranch %296
+        %296 = OpLabel
+               OpBranch %294
+        %295 = OpLabel
+        %312 = OpLoad %int %from
+               OpStore %i_0 %312
+               OpBranch %313
+        %313 = OpLabel
+               OpLoopMerge %314 %315 None
+               OpBranch %316
+        %316 = OpLabel
+        %317 = OpLoad %int %i_0
+        %318 = OpLoad %int %to
+        %319 = OpSLessThanEqual %bool %317 %318
+               OpBranchConditional %319 %320 %314
+        %320 = OpLabel
+        %321 = OpLoad %int %i_0
+        %322 = OpLoad %int %i_0
+        %323 = OpAccessChain %_ptr_Private_int %temp %322
+        %324 = OpLoad %int %323
+        %325 = OpAccessChain %_ptr_Private_int %data %321
+               OpStore %325 %324
+               OpBranch %315
+        %315 = OpLabel
+        %326 = OpLoad %int %i_0
+        %327 = OpIAdd %int %326 %int_1
+               OpStore %i_0 %327
+               OpBranch %313
+        %314 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %34
+        %328 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %329
+        %329 = OpLabel
+               OpLoopMerge %330 %331 None
+               OpBranch %332
+        %332 = OpLabel
+        %333 = OpLoad %int %m
+        %334 = OpLoad %int %high
+        %335 = OpSLessThanEqual %bool %333 %334
+               OpBranchConditional %335 %336 %330
+        %336 = OpLabel
+        %337 = OpLoad %int %low
+               OpStore %i_1 %337
+               OpBranch %338
+        %338 = OpLabel
+               OpLoopMerge %339 %340 None
+               OpBranch %341
+        %341 = OpLabel
+        %342 = OpLoad %int %i_1
+        %343 = OpLoad %int %high
+        %344 = OpSLessThan %bool %342 %343
+               OpBranchConditional %344 %345 %339
+        %345 = OpLabel
+        %346 = OpLoad %int %i_1
+               OpStore %from_0 %346
+        %347 = OpLoad %int %i_1
+        %348 = OpLoad %int %m
+        %349 = OpIAdd %int %347 %348
+        %350 = OpISub %int %349 %int_1
+               OpStore %mid_0 %350
+        %351 = OpLoad %int %i_1
+        %352 = OpLoad %int %m
+        %353 = OpIMul %int %int_2 %352
+        %354 = OpIAdd %int %351 %353
+        %355 = OpISub %int %354 %int_1
+        %356 = OpLoad %int %high
+        %357 = OpExtInst %int %1 SMin %355 %356
+               OpStore %to_0 %357
+        %358 = OpLoad %int %from_0
+               OpStore %param %358
+        %359 = OpLoad %int %mid_0
+               OpStore %param_0 %359
+        %360 = OpLoad %int %to_0
+               OpStore %param_1 %360
+        %361 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %340
+        %340 = OpLabel
+        %362 = OpLoad %int %m
+        %363 = OpIMul %int %int_2 %362
+        %364 = OpLoad %int %i_1
+        %365 = OpIAdd %int %364 %363
+               OpStore %i_1 %365
+               OpBranch %338
+        %339 = OpLabel
+               OpBranch %331
+        %331 = OpLabel
+        %366 = OpLoad %int %m
+        %367 = OpIMul %int %int_2 %366
+               OpStore %m %367
+               OpBranch %329
+        %330 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..be184c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,271 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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);
+cbuffer cbuffer_x_32 : register(b1, space0) {
+  uint4 x_32[1];
+};
+
+void merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_254 = from;
+  k = x_254;
+  const int x_255 = from;
+  i = x_255;
+  const int x_256 = mid;
+  j = (x_256 + 1);
+  while (true) {
+    const int x_262 = i;
+    const int x_263 = mid;
+    const int x_265 = j;
+    const int x_266 = to;
+    bool tint_tmp = (x_262 <= x_263);
+    if (tint_tmp) {
+      tint_tmp = (x_265 <= x_266);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_272 = data[i];
+    const int x_275 = data[j];
+    if ((x_272 < x_275)) {
+      const int x_280 = k;
+      k = (x_280 + 1);
+      const int x_282 = i;
+      i = (x_282 + 1);
+      const int x_285 = data[x_282];
+      temp[x_280] = x_285;
+    } else {
+      const int x_287 = k;
+      k = (x_287 + 1);
+      const int x_289 = j;
+      j = (x_289 + 1);
+      const int x_292 = data[x_289];
+      temp[x_287] = x_292;
+    }
+  }
+  while (true) {
+    const int x_298 = i;
+    const int x_300 = i;
+    const int x_301 = mid;
+    bool tint_tmp_1 = (x_298 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_300 <= x_301);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_305 = k;
+    k = (x_305 + 1);
+    const int x_307 = i;
+    i = (x_307 + 1);
+    const int x_310 = data[x_307];
+    temp[x_305] = x_310;
+  }
+  const int x_312 = from;
+  i_1 = x_312;
+  while (true) {
+    const int x_317 = i_1;
+    const int x_318 = to;
+    if ((x_317 <= x_318)) {
+    } else {
+      break;
+    }
+    const int x_321 = i_1;
+    const int x_324 = temp[i_1];
+    data[x_321] = x_324;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_87 = asfloat(x_28[0].x);
+  i_3 = int(x_87);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_136 = j_1;
+      const int x_139 = data[j_1];
+      temp[x_136] = x_139;
+    }
+  }
+  mergeSort_();
+  const float x_145 = gl_FragCoord.y;
+  if ((int(x_145) < 30)) {
+    const int x_152 = data[0];
+    grey = (0.5f + (float(x_152) / 10.0f));
+  } else {
+    const float x_157 = gl_FragCoord.y;
+    if ((int(x_157) < 60)) {
+      const int x_164 = data[1];
+      grey = (0.5f + (float(x_164) / 10.0f));
+    } else {
+      const float x_169 = gl_FragCoord.y;
+      if ((int(x_169) < 90)) {
+        const int x_176 = data[2];
+        grey = (0.5f + (float(x_176) / 10.0f));
+      } else {
+        const float x_181 = gl_FragCoord.y;
+        if ((int(x_181) < 120)) {
+          const int x_188 = data[3];
+          grey = (0.5f + (float(x_188) / 10.0f));
+        } else {
+          const float x_193 = gl_FragCoord.y;
+          if ((int(x_193) < 150)) {
+            discard;
+          } else {
+            const float x_200 = gl_FragCoord.y;
+            if ((int(x_200) < 180)) {
+              const int x_207 = data[5];
+              grey = (0.5f + (float(x_207) / 10.0f));
+            } else {
+              const float x_212 = gl_FragCoord.y;
+              if ((int(x_212) < 210)) {
+                const int x_219 = data[6];
+                grey = (0.5f + (float(x_219) / 10.0f));
+              } else {
+                const float x_224 = gl_FragCoord.y;
+                if ((int(x_224) < 240)) {
+                  const int x_231 = data[7];
+                  grey = (0.5f + (float(x_231) / 10.0f));
+                } else {
+                  const float x_236 = gl_FragCoord.y;
+                  if ((int(x_236) < 270)) {
+                    const int x_243 = data[8];
+                    grey = (0.5f + (float(x_243) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_247 = grey;
+  const float3 x_248 = float3(x_247, x_247, x_247);
+  x_GLF_color = float4(x_248.x, x_248.y, x_248.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6e7adb4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.msl
@@ -0,0 +1,317 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_254 = *(from);
+  k = x_254;
+  int const x_255 = *(from);
+  i = x_255;
+  int const x_256 = *(mid);
+  j = (x_256 + 1);
+  while (true) {
+    int const x_262 = i;
+    int const x_263 = *(mid);
+    int const x_265 = j;
+    int const x_266 = *(to);
+    if (((x_262 <= x_263) && (x_265 <= x_266))) {
+    } else {
+      break;
+    }
+    int const x_270 = i;
+    int const x_272 = (*(tint_symbol_5)).arr[x_270];
+    int const x_273 = j;
+    int const x_275 = (*(tint_symbol_5)).arr[x_273];
+    if ((x_272 < x_275)) {
+      int const x_280 = k;
+      k = (x_280 + 1);
+      int const x_282 = i;
+      i = (x_282 + 1);
+      int const x_285 = (*(tint_symbol_5)).arr[x_282];
+      (*(tint_symbol_6)).arr[x_280] = x_285;
+    } else {
+      int const x_287 = k;
+      k = (x_287 + 1);
+      int const x_289 = j;
+      j = (x_289 + 1);
+      int const x_292 = (*(tint_symbol_5)).arr[x_289];
+      (*(tint_symbol_6)).arr[x_287] = x_292;
+    }
+  }
+  while (true) {
+    int const x_298 = i;
+    int const x_300 = i;
+    int const x_301 = *(mid);
+    if (((x_298 < 10) && (x_300 <= x_301))) {
+    } else {
+      break;
+    }
+    int const x_305 = k;
+    k = (x_305 + 1);
+    int const x_307 = i;
+    i = (x_307 + 1);
+    int const x_310 = (*(tint_symbol_5)).arr[x_307];
+    (*(tint_symbol_6)).arr[x_305] = x_310;
+  }
+  int const x_312 = *(from);
+  i_1 = x_312;
+  while (true) {
+    int const x_317 = i_1;
+    int const x_318 = *(to);
+    if ((x_317 <= x_318)) {
+    } else {
+      break;
+    }
+    int const x_321 = i_1;
+    int const x_322 = i_1;
+    int const x_324 = (*(tint_symbol_6)).arr[x_322];
+    (*(tint_symbol_5)).arr[x_321] = x_324;
+    {
+      int const x_326 = i_1;
+      i_1 = (x_326 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_333 = m;
+    int const x_334 = high;
+    if ((x_333 <= x_334)) {
+    } else {
+      break;
+    }
+    int const x_337 = low;
+    i_2 = x_337;
+    while (true) {
+      int const x_342 = i_2;
+      int const x_343 = high;
+      if ((x_342 < x_343)) {
+      } else {
+        break;
+      }
+      int const x_346 = i_2;
+      from_1 = x_346;
+      int const x_347 = i_2;
+      int const x_348 = m;
+      mid_1 = ((x_347 + x_348) - 1);
+      int const x_351 = i_2;
+      int const x_352 = m;
+      int const x_356 = high;
+      to_1 = min(((x_351 + (2 * x_352)) - 1), x_356);
+      int const x_358 = from_1;
+      param = x_358;
+      int const x_359 = mid_1;
+      param_1 = x_359;
+      int const x_360 = to_1;
+      param_2 = x_360;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_362 = m;
+        int const x_364 = i_2;
+        i_2 = (x_364 + (2 * x_362));
+      }
+    }
+    {
+      int const x_366 = m;
+      m = (2 * x_366);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_87 = x_28.injectionSwitch.x;
+  i_3 = int(x_87);
+  while (true) {
+    int const x_93 = i_3;
+    switch(x_93) {
+      case 9: {
+        int const x_123 = i_3;
+        (*(tint_symbol_9)).arr[x_123] = -5;
+        break;
+      }
+      case 8: {
+        int const x_121 = i_3;
+        (*(tint_symbol_9)).arr[x_121] = -4;
+        break;
+      }
+      case 7: {
+        int const x_119 = i_3;
+        (*(tint_symbol_9)).arr[x_119] = -3;
+        break;
+      }
+      case 6: {
+        int const x_117 = i_3;
+        (*(tint_symbol_9)).arr[x_117] = -2;
+        break;
+      }
+      case 5: {
+        int const x_115 = i_3;
+        (*(tint_symbol_9)).arr[x_115] = -1;
+        break;
+      }
+      case 4: {
+        int const x_113 = i_3;
+        (*(tint_symbol_9)).arr[x_113] = 0;
+        break;
+      }
+      case 3: {
+        int const x_111 = i_3;
+        (*(tint_symbol_9)).arr[x_111] = 1;
+        break;
+      }
+      case 2: {
+        int const x_109 = i_3;
+        (*(tint_symbol_9)).arr[x_109] = 2;
+        break;
+      }
+      case 1: {
+        int const x_107 = i_3;
+        (*(tint_symbol_9)).arr[x_107] = 3;
+        break;
+      }
+      case 0: {
+        int const x_105 = i_3;
+        (*(tint_symbol_9)).arr[x_105] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_125 = i_3;
+    i_3 = (x_125 + 1);
+    {
+      int const x_127 = i_3;
+      if ((x_127 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_133 = j_1;
+    if ((x_133 < 10)) {
+    } else {
+      break;
+    }
+    int const x_136 = j_1;
+    int const x_137 = j_1;
+    int const x_139 = (*(tint_symbol_9)).arr[x_137];
+    (*(tint_symbol_10)).arr[x_136] = x_139;
+    {
+      int const x_141 = j_1;
+      j_1 = (x_141 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_145 = (*(tint_symbol_11)).y;
+  if ((int(x_145) < 30)) {
+    int const x_152 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_152) / 10.0f));
+  } else {
+    float const x_157 = (*(tint_symbol_11)).y;
+    if ((int(x_157) < 60)) {
+      int const x_164 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_164) / 10.0f));
+    } else {
+      float const x_169 = (*(tint_symbol_11)).y;
+      if ((int(x_169) < 90)) {
+        int const x_176 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_176) / 10.0f));
+      } else {
+        float const x_181 = (*(tint_symbol_11)).y;
+        if ((int(x_181) < 120)) {
+          int const x_188 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_188) / 10.0f));
+        } else {
+          float const x_193 = (*(tint_symbol_11)).y;
+          if ((int(x_193) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_200 = (*(tint_symbol_11)).y;
+            if ((int(x_200) < 180)) {
+              int const x_207 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_207) / 10.0f));
+            } else {
+              float const x_212 = (*(tint_symbol_11)).y;
+              if ((int(x_212) < 210)) {
+                int const x_219 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_219) / 10.0f));
+              } else {
+                float const x_224 = (*(tint_symbol_11)).y;
+                if ((int(x_224) < 240)) {
+                  int const x_231 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_231) / 10.0f));
+                } else {
+                  float const x_236 = (*(tint_symbol_11)).y;
+                  if ((int(x_236) < 270)) {
+                    int const x_243 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_243) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_247 = grey;
+  float3 const x_248 = float3(x_247, x_247, x_247);
+  *(tint_symbol_12) = float4(x_248.x, x_248.y, x_248.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9042981
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,660 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 419
+; Schema: 0
+               OpCapability Shader
+        %180 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_32 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %35 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %135 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %204 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %406 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %26
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %33 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %35
+          %i = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+        %i_1 = OpVariable %_ptr_Function_int Function %35
+         %40 = OpLoad %int %from
+               OpStore %k %40
+         %42 = OpLoad %int %from
+               OpStore %i %42
+         %44 = OpLoad %int %mid
+         %46 = OpIAdd %int %44 %int_1
+               OpStore %j %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %int %mid
+         %54 = OpLoad %int %j
+         %56 = OpLoad %int %to
+         %57 = OpSLessThanEqual %bool %51 %53
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+         %61 = OpSLessThanEqual %bool %54 %56
+               OpBranch %59
+         %59 = OpLabel
+         %62 = OpPhi %bool %57 %50 %61 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %48
+         %63 = OpLabel
+         %66 = OpLoad %int %i
+         %68 = OpAccessChain %_ptr_Private_int %data %66
+         %69 = OpLoad %int %68
+         %70 = OpLoad %int %j
+         %71 = OpAccessChain %_ptr_Private_int %data %70
+         %72 = OpLoad %int %71
+         %73 = OpSLessThan %bool %69 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %77 = OpLoad %int %k
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %k %78
+         %79 = OpLoad %int %i
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %i %80
+         %81 = OpAccessChain %_ptr_Private_int %data %79
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Private_int %temp %77
+               OpStore %83 %82
+               OpBranch %74
+         %76 = OpLabel
+         %84 = OpLoad %int %k
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %k %85
+         %86 = OpLoad %int %j
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %j %87
+         %88 = OpAccessChain %_ptr_Private_int %data %86
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Private_int %temp %84
+               OpStore %90 %89
+               OpBranch %74
+         %74 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i
+         %96 = OpLoad %int %i
+         %98 = OpLoad %int %mid
+        %100 = OpSLessThan %bool %95 %int_10
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpSLessThanEqual %bool %96 %98
+               OpBranch %101
+        %101 = OpLabel
+        %104 = OpPhi %bool %100 %94 %103 %102
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+               OpBranch %105
+        %107 = OpLabel
+               OpBranch %92
+        %105 = OpLabel
+        %108 = OpLoad %int %k
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %k %109
+        %110 = OpLoad %int %i
+        %111 = OpIAdd %int %110 %int_1
+               OpStore %i %111
+        %112 = OpAccessChain %_ptr_Private_int %data %110
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Private_int %temp %108
+               OpStore %114 %113
+               OpBranch %93
+         %93 = OpLabel
+               OpBranch %91
+         %92 = OpLabel
+        %116 = OpLoad %int %from
+               OpStore %i_1 %116
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpLoad %int %i_1
+        %123 = OpLoad %int %to
+        %124 = OpSLessThanEqual %bool %121 %123
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %127
+        %126 = OpLabel
+               OpBranch %125
+        %127 = OpLabel
+               OpBranch %118
+        %125 = OpLabel
+        %128 = OpLoad %int %i_1
+        %129 = OpLoad %int %i_1
+        %130 = OpAccessChain %_ptr_Private_int %temp %129
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Private_int %data %128
+               OpStore %132 %131
+               OpBranch %119
+        %119 = OpLabel
+        %133 = OpLoad %int %i_1
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %i_1 %134
+               OpBranch %117
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %135
+        %137 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %35
+       %high = OpVariable %_ptr_Function_int Function %35
+          %m = OpVariable %_ptr_Function_int Function %35
+        %i_2 = OpVariable %_ptr_Function_int Function %35
+     %from_1 = OpVariable %_ptr_Function_int Function %35
+      %mid_1 = OpVariable %_ptr_Function_int Function %35
+       %to_1 = OpVariable %_ptr_Function_int Function %35
+      %param = OpVariable %_ptr_Function_int Function %35
+    %param_1 = OpVariable %_ptr_Function_int Function %35
+    %param_2 = OpVariable %_ptr_Function_int Function %35
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %154 = OpLoad %int %m
+        %155 = OpLoad %int %high
+        %156 = OpSLessThanEqual %bool %154 %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %151
+        %157 = OpLabel
+        %160 = OpLoad %int %low
+               OpStore %i_2 %160
+               OpBranch %161
+        %161 = OpLabel
+               OpLoopMerge %162 %163 None
+               OpBranch %164
+        %164 = OpLabel
+        %165 = OpLoad %int %i_2
+        %166 = OpLoad %int %high
+        %167 = OpSLessThan %bool %165 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %162
+        %168 = OpLabel
+        %171 = OpLoad %int %i_2
+               OpStore %from_1 %171
+        %172 = OpLoad %int %i_2
+        %173 = OpLoad %int %m
+        %174 = OpIAdd %int %172 %173
+        %175 = OpISub %int %174 %int_1
+               OpStore %mid_1 %175
+        %176 = OpLoad %int %i_2
+        %177 = OpLoad %int %m
+        %178 = OpLoad %int %high
+        %182 = OpIMul %int %int_2 %177
+        %183 = OpIAdd %int %176 %182
+        %184 = OpISub %int %183 %int_1
+        %179 = OpExtInst %int %180 SMin %184 %178
+               OpStore %to_1 %179
+        %185 = OpLoad %int %from_1
+               OpStore %param %185
+        %186 = OpLoad %int %mid_1
+               OpStore %param_1 %186
+        %187 = OpLoad %int %to_1
+               OpStore %param_2 %187
+        %188 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %163
+        %163 = OpLabel
+        %192 = OpLoad %int %m
+        %193 = OpLoad %int %i_2
+        %194 = OpIMul %int %int_2 %192
+        %195 = OpIAdd %int %193 %194
+               OpStore %i_2 %195
+               OpBranch %161
+        %162 = OpLabel
+               OpBranch %152
+        %152 = OpLabel
+        %196 = OpLoad %int %m
+        %197 = OpIMul %int %int_2 %196
+               OpStore %m %197
+               OpBranch %150
+        %151 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %135
+        %199 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %35
+        %j_1 = OpVariable %_ptr_Function_int Function %35
+       %grey = OpVariable %_ptr_Function_float Function %204
+        %207 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %208 = OpLoad %float %207
+        %209 = OpConvertFToS %int %208
+               OpStore %i_3 %209
+               OpBranch %210
+        %210 = OpLabel
+               OpLoopMerge %211 %212 None
+               OpBranch %213
+        %213 = OpLabel
+        %214 = OpLoad %int %i_3
+               OpSelectionMerge %215 None
+               OpSwitch %214 %216 9 %217 8 %218 7 %219 6 %220 5 %221 4 %222 3 %223 2 %224 1 %225 0 %226
+        %217 = OpLabel
+        %227 = OpLoad %int %i_3
+        %228 = OpAccessChain %_ptr_Private_int %data %227
+               OpStore %228 %int_n5
+               OpBranch %215
+        %218 = OpLabel
+        %230 = OpLoad %int %i_3
+        %231 = OpAccessChain %_ptr_Private_int %data %230
+               OpStore %231 %int_n4
+               OpBranch %215
+        %219 = OpLabel
+        %233 = OpLoad %int %i_3
+        %234 = OpAccessChain %_ptr_Private_int %data %233
+               OpStore %234 %int_n3
+               OpBranch %215
+        %220 = OpLabel
+        %236 = OpLoad %int %i_3
+        %237 = OpAccessChain %_ptr_Private_int %data %236
+               OpStore %237 %int_n2
+               OpBranch %215
+        %221 = OpLabel
+        %239 = OpLoad %int %i_3
+        %240 = OpAccessChain %_ptr_Private_int %data %239
+               OpStore %240 %int_n1
+               OpBranch %215
+        %222 = OpLabel
+        %242 = OpLoad %int %i_3
+        %243 = OpAccessChain %_ptr_Private_int %data %242
+               OpStore %243 %int_0
+               OpBranch %215
+        %223 = OpLabel
+        %244 = OpLoad %int %i_3
+        %245 = OpAccessChain %_ptr_Private_int %data %244
+               OpStore %245 %int_1
+               OpBranch %215
+        %224 = OpLabel
+        %246 = OpLoad %int %i_3
+        %247 = OpAccessChain %_ptr_Private_int %data %246
+               OpStore %247 %int_2
+               OpBranch %215
+        %225 = OpLabel
+        %248 = OpLoad %int %i_3
+        %249 = OpAccessChain %_ptr_Private_int %data %248
+               OpStore %249 %int_3
+               OpBranch %215
+        %226 = OpLabel
+        %251 = OpLoad %int %i_3
+        %252 = OpAccessChain %_ptr_Private_int %data %251
+               OpStore %252 %int_4
+               OpBranch %215
+        %216 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %254 = OpLoad %int %i_3
+        %255 = OpIAdd %int %254 %int_1
+               OpStore %i_3 %255
+               OpBranch %212
+        %212 = OpLabel
+        %256 = OpLoad %int %i_3
+        %257 = OpSLessThan %bool %256 %int_10
+               OpSelectionMerge %258 None
+               OpBranchConditional %257 %259 %260
+        %259 = OpLabel
+               OpBranch %258
+        %260 = OpLabel
+               OpBranch %211
+        %258 = OpLabel
+               OpBranch %210
+        %211 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %261
+        %261 = OpLabel
+               OpLoopMerge %262 %263 None
+               OpBranch %264
+        %264 = OpLabel
+        %265 = OpLoad %int %j_1
+        %266 = OpSLessThan %bool %265 %int_10
+               OpSelectionMerge %267 None
+               OpBranchConditional %266 %268 %269
+        %268 = OpLabel
+               OpBranch %267
+        %269 = OpLabel
+               OpBranch %262
+        %267 = OpLabel
+        %270 = OpLoad %int %j_1
+        %271 = OpLoad %int %j_1
+        %272 = OpAccessChain %_ptr_Private_int %data %271
+        %273 = OpLoad %int %272
+        %274 = OpAccessChain %_ptr_Private_int %temp %270
+               OpStore %274 %273
+               OpBranch %263
+        %263 = OpLabel
+        %275 = OpLoad %int %j_1
+        %276 = OpIAdd %int %275 %int_1
+               OpStore %j_1 %276
+               OpBranch %261
+        %262 = OpLabel
+        %277 = OpFunctionCall %void %mergeSort_
+        %280 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %281 = OpLoad %float %280
+        %282 = OpConvertFToS %int %281
+        %284 = OpSLessThan %bool %282 %int_30
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %287
+        %286 = OpLabel
+        %288 = OpAccessChain %_ptr_Private_int %data %int_0
+        %289 = OpLoad %int %288
+        %291 = OpConvertSToF %float %289
+        %293 = OpFDiv %float %291 %float_10
+        %294 = OpFAdd %float %float_0_5 %293
+               OpStore %grey %294
+               OpBranch %285
+        %287 = OpLabel
+        %295 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %296 = OpLoad %float %295
+        %297 = OpConvertFToS %int %296
+        %299 = OpSLessThan %bool %297 %int_60
+               OpSelectionMerge %300 None
+               OpBranchConditional %299 %301 %302
+        %301 = OpLabel
+        %303 = OpAccessChain %_ptr_Private_int %data %int_1
+        %304 = OpLoad %int %303
+        %305 = OpConvertSToF %float %304
+        %306 = OpFDiv %float %305 %float_10
+        %307 = OpFAdd %float %float_0_5 %306
+               OpStore %grey %307
+               OpBranch %300
+        %302 = OpLabel
+        %308 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %309 = OpLoad %float %308
+        %310 = OpConvertFToS %int %309
+        %312 = OpSLessThan %bool %310 %int_90
+               OpSelectionMerge %313 None
+               OpBranchConditional %312 %314 %315
+        %314 = OpLabel
+        %316 = OpAccessChain %_ptr_Private_int %data %int_2
+        %317 = OpLoad %int %316
+        %318 = OpConvertSToF %float %317
+        %319 = OpFDiv %float %318 %float_10
+        %320 = OpFAdd %float %float_0_5 %319
+               OpStore %grey %320
+               OpBranch %313
+        %315 = OpLabel
+        %321 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %322 = OpLoad %float %321
+        %323 = OpConvertFToS %int %322
+        %325 = OpSLessThan %bool %323 %int_120
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %328
+        %327 = OpLabel
+        %329 = OpAccessChain %_ptr_Private_int %data %int_3
+        %330 = OpLoad %int %329
+        %331 = OpConvertSToF %float %330
+        %332 = OpFDiv %float %331 %float_10
+        %333 = OpFAdd %float %float_0_5 %332
+               OpStore %grey %333
+               OpBranch %326
+        %328 = OpLabel
+        %334 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %335 = OpLoad %float %334
+        %336 = OpConvertFToS %int %335
+        %338 = OpSLessThan %bool %336 %int_150
+               OpSelectionMerge %339 None
+               OpBranchConditional %338 %340 %341
+        %340 = OpLabel
+               OpKill
+        %341 = OpLabel
+        %342 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %343 = OpLoad %float %342
+        %344 = OpConvertFToS %int %343
+        %346 = OpSLessThan %bool %344 %int_180
+               OpSelectionMerge %347 None
+               OpBranchConditional %346 %348 %349
+        %348 = OpLabel
+        %351 = OpAccessChain %_ptr_Private_int %data %int_5
+        %352 = OpLoad %int %351
+        %353 = OpConvertSToF %float %352
+        %354 = OpFDiv %float %353 %float_10
+        %355 = OpFAdd %float %float_0_5 %354
+               OpStore %grey %355
+               OpBranch %347
+        %349 = OpLabel
+        %356 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %357 = OpLoad %float %356
+        %358 = OpConvertFToS %int %357
+        %360 = OpSLessThan %bool %358 %int_210
+               OpSelectionMerge %361 None
+               OpBranchConditional %360 %362 %363
+        %362 = OpLabel
+        %365 = OpAccessChain %_ptr_Private_int %data %int_6
+        %366 = OpLoad %int %365
+        %367 = OpConvertSToF %float %366
+        %368 = OpFDiv %float %367 %float_10
+        %369 = OpFAdd %float %float_0_5 %368
+               OpStore %grey %369
+               OpBranch %361
+        %363 = OpLabel
+        %370 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %371 = OpLoad %float %370
+        %372 = OpConvertFToS %int %371
+        %374 = OpSLessThan %bool %372 %int_240
+               OpSelectionMerge %375 None
+               OpBranchConditional %374 %376 %377
+        %376 = OpLabel
+        %379 = OpAccessChain %_ptr_Private_int %data %int_7
+        %380 = OpLoad %int %379
+        %381 = OpConvertSToF %float %380
+        %382 = OpFDiv %float %381 %float_10
+        %383 = OpFAdd %float %float_0_5 %382
+               OpStore %grey %383
+               OpBranch %375
+        %377 = OpLabel
+        %384 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %385 = OpLoad %float %384
+        %386 = OpConvertFToS %int %385
+        %388 = OpSLessThan %bool %386 %int_270
+               OpSelectionMerge %389 None
+               OpBranchConditional %388 %390 %391
+        %390 = OpLabel
+        %393 = OpAccessChain %_ptr_Private_int %data %int_8
+        %394 = OpLoad %int %393
+        %395 = OpConvertSToF %float %394
+        %396 = OpFDiv %float %395 %float_10
+        %397 = OpFAdd %float %float_0_5 %396
+               OpStore %grey %397
+               OpBranch %389
+        %391 = OpLabel
+               OpKill
+        %389 = OpLabel
+               OpBranch %375
+        %375 = OpLabel
+               OpBranch %361
+        %361 = OpLabel
+               OpBranch %347
+        %347 = OpLabel
+               OpBranch %339
+        %339 = OpLabel
+               OpBranch %326
+        %326 = OpLabel
+               OpBranch %313
+        %313 = OpLabel
+               OpBranch %300
+        %300 = OpLabel
+               OpBranch %285
+        %285 = OpLabel
+        %398 = OpLoad %float %grey
+        %400 = OpCompositeConstruct %v3float %398 %398 %398
+        %401 = OpCompositeExtract %float %400 0
+        %402 = OpCompositeExtract %float %400 1
+        %403 = OpCompositeExtract %float %400 2
+        %405 = OpCompositeConstruct %v4float %401 %402 %403 %float_1
+               OpStore %x_GLF_color %405
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %406
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %410 = OpLabel
+        %411 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %411
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %135
+        %413 = OpLabel
+        %414 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %414
+        %415 = OpFunctionCall %void %main_1
+        %417 = OpLoad %v4float %x_GLF_color
+        %418 = OpCompositeConstruct %main_out %417
+        %416 = OpFunctionCall %void %tint_symbol_3 %418
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 212[%212] is not post dominated by the back-edge block 258[%258]
+  %258 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e61feb5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,313 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_254 : i32 = *(from);
+  k = x_254;
+  let x_255 : i32 = *(from);
+  i = x_255;
+  let x_256 : i32 = *(mid);
+  j = (x_256 + 1);
+  loop {
+    let x_262 : i32 = i;
+    let x_263 : i32 = *(mid);
+    let x_265 : i32 = j;
+    let x_266 : i32 = *(to);
+    if (((x_262 <= x_263) && (x_265 <= x_266))) {
+    } else {
+      break;
+    }
+    let x_270 : i32 = i;
+    let x_272 : i32 = data[x_270];
+    let x_273 : i32 = j;
+    let x_275 : i32 = data[x_273];
+    if ((x_272 < x_275)) {
+      let x_280 : i32 = k;
+      k = (x_280 + 1);
+      let x_282 : i32 = i;
+      i = (x_282 + 1);
+      let x_285 : i32 = data[x_282];
+      temp[x_280] = x_285;
+    } else {
+      let x_287 : i32 = k;
+      k = (x_287 + 1);
+      let x_289 : i32 = j;
+      j = (x_289 + 1);
+      let x_292 : i32 = data[x_289];
+      temp[x_287] = x_292;
+    }
+  }
+  loop {
+    let x_298 : i32 = i;
+    let x_300 : i32 = i;
+    let x_301 : i32 = *(mid);
+    if (((x_298 < 10) && (x_300 <= x_301))) {
+    } else {
+      break;
+    }
+    let x_305 : i32 = k;
+    k = (x_305 + 1);
+    let x_307 : i32 = i;
+    i = (x_307 + 1);
+    let x_310 : i32 = data[x_307];
+    temp[x_305] = x_310;
+  }
+  let x_312 : i32 = *(from);
+  i_1 = x_312;
+  loop {
+    let x_317 : i32 = i_1;
+    let x_318 : i32 = *(to);
+    if ((x_317 <= x_318)) {
+    } else {
+      break;
+    }
+    let x_321 : i32 = i_1;
+    let x_322 : i32 = i_1;
+    let x_324 : i32 = temp[x_322];
+    data[x_321] = x_324;
+
+    continuing {
+      let x_326 : i32 = i_1;
+      i_1 = (x_326 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_333 : i32 = m;
+    let x_334 : i32 = high;
+    if ((x_333 <= x_334)) {
+    } else {
+      break;
+    }
+    let x_337 : i32 = low;
+    i_2 = x_337;
+    loop {
+      let x_342 : i32 = i_2;
+      let x_343 : i32 = high;
+      if ((x_342 < x_343)) {
+      } else {
+        break;
+      }
+      let x_346 : i32 = i_2;
+      from_1 = x_346;
+      let x_347 : i32 = i_2;
+      let x_348 : i32 = m;
+      mid_1 = ((x_347 + x_348) - 1);
+      let x_351 : i32 = i_2;
+      let x_352 : i32 = m;
+      let x_356 : i32 = high;
+      to_1 = min(((x_351 + (2 * x_352)) - 1), x_356);
+      let x_358 : i32 = from_1;
+      param = x_358;
+      let x_359 : i32 = mid_1;
+      param_1 = x_359;
+      let x_360 : i32 = to_1;
+      param_2 = x_360;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_362 : i32 = m;
+        let x_364 : i32 = i_2;
+        i_2 = (x_364 + (2 * x_362));
+      }
+    }
+
+    continuing {
+      let x_366 : i32 = m;
+      m = (2 * x_366);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_87 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_87);
+  loop {
+    let x_93 : i32 = i_3;
+    switch(x_93) {
+      case 9: {
+        let x_123 : i32 = i_3;
+        data[x_123] = -5;
+      }
+      case 8: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -4;
+      }
+      case 7: {
+        let x_119 : i32 = i_3;
+        data[x_119] = -3;
+      }
+      case 6: {
+        let x_117 : i32 = i_3;
+        data[x_117] = -2;
+      }
+      case 5: {
+        let x_115 : i32 = i_3;
+        data[x_115] = -1;
+      }
+      case 4: {
+        let x_113 : i32 = i_3;
+        data[x_113] = 0;
+      }
+      case 3: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 1;
+      }
+      case 2: {
+        let x_109 : i32 = i_3;
+        data[x_109] = 2;
+      }
+      case 1: {
+        let x_107 : i32 = i_3;
+        data[x_107] = 3;
+      }
+      case 0: {
+        let x_105 : i32 = i_3;
+        data[x_105] = 4;
+      }
+      default: {
+      }
+    }
+    let x_125 : i32 = i_3;
+    i_3 = (x_125 + 1);
+
+    continuing {
+      let x_127 : i32 = i_3;
+      if ((x_127 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_133 : i32 = j_1;
+    if ((x_133 < 10)) {
+    } else {
+      break;
+    }
+    let x_136 : i32 = j_1;
+    let x_137 : i32 = j_1;
+    let x_139 : i32 = data[x_137];
+    temp[x_136] = x_139;
+
+    continuing {
+      let x_141 : i32 = j_1;
+      j_1 = (x_141 + 1);
+    }
+  }
+  mergeSort_();
+  let x_145 : f32 = gl_FragCoord.y;
+  if ((i32(x_145) < 30)) {
+    let x_152 : i32 = data[0];
+    grey = (0.5 + (f32(x_152) / 10.0));
+  } else {
+    let x_157 : f32 = gl_FragCoord.y;
+    if ((i32(x_157) < 60)) {
+      let x_164 : i32 = data[1];
+      grey = (0.5 + (f32(x_164) / 10.0));
+    } else {
+      let x_169 : f32 = gl_FragCoord.y;
+      if ((i32(x_169) < 90)) {
+        let x_176 : i32 = data[2];
+        grey = (0.5 + (f32(x_176) / 10.0));
+      } else {
+        let x_181 : f32 = gl_FragCoord.y;
+        if ((i32(x_181) < 120)) {
+          let x_188 : i32 = data[3];
+          grey = (0.5 + (f32(x_188) / 10.0));
+        } else {
+          let x_193 : f32 = gl_FragCoord.y;
+          if ((i32(x_193) < 150)) {
+            discard;
+          } else {
+            let x_200 : f32 = gl_FragCoord.y;
+            if ((i32(x_200) < 180)) {
+              let x_207 : i32 = data[5];
+              grey = (0.5 + (f32(x_207) / 10.0));
+            } else {
+              let x_212 : f32 = gl_FragCoord.y;
+              if ((i32(x_212) < 210)) {
+                let x_219 : i32 = data[6];
+                grey = (0.5 + (f32(x_219) / 10.0));
+              } else {
+                let x_224 : f32 = gl_FragCoord.y;
+                if ((i32(x_224) < 240)) {
+                  let x_231 : i32 = data[7];
+                  grey = (0.5 + (f32(x_231) / 10.0));
+                } else {
+                  let x_236 : f32 = gl_FragCoord.y;
+                  if ((i32(x_236) < 270)) {
+                    let x_243 : i32 = data[8];
+                    grey = (0.5 + (f32(x_243) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_247 : f32 = grey;
+  let x_248 : vec3<f32> = vec3<f32>(x_247, x_247, x_247);
+  x_GLF_color = vec4<f32>(x_248.x, x_248.y, x_248.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
new file mode 100644
index 0000000..e61feb5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
@@ -0,0 +1,313 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_254 : i32 = *(from);
+  k = x_254;
+  let x_255 : i32 = *(from);
+  i = x_255;
+  let x_256 : i32 = *(mid);
+  j = (x_256 + 1);
+  loop {
+    let x_262 : i32 = i;
+    let x_263 : i32 = *(mid);
+    let x_265 : i32 = j;
+    let x_266 : i32 = *(to);
+    if (((x_262 <= x_263) && (x_265 <= x_266))) {
+    } else {
+      break;
+    }
+    let x_270 : i32 = i;
+    let x_272 : i32 = data[x_270];
+    let x_273 : i32 = j;
+    let x_275 : i32 = data[x_273];
+    if ((x_272 < x_275)) {
+      let x_280 : i32 = k;
+      k = (x_280 + 1);
+      let x_282 : i32 = i;
+      i = (x_282 + 1);
+      let x_285 : i32 = data[x_282];
+      temp[x_280] = x_285;
+    } else {
+      let x_287 : i32 = k;
+      k = (x_287 + 1);
+      let x_289 : i32 = j;
+      j = (x_289 + 1);
+      let x_292 : i32 = data[x_289];
+      temp[x_287] = x_292;
+    }
+  }
+  loop {
+    let x_298 : i32 = i;
+    let x_300 : i32 = i;
+    let x_301 : i32 = *(mid);
+    if (((x_298 < 10) && (x_300 <= x_301))) {
+    } else {
+      break;
+    }
+    let x_305 : i32 = k;
+    k = (x_305 + 1);
+    let x_307 : i32 = i;
+    i = (x_307 + 1);
+    let x_310 : i32 = data[x_307];
+    temp[x_305] = x_310;
+  }
+  let x_312 : i32 = *(from);
+  i_1 = x_312;
+  loop {
+    let x_317 : i32 = i_1;
+    let x_318 : i32 = *(to);
+    if ((x_317 <= x_318)) {
+    } else {
+      break;
+    }
+    let x_321 : i32 = i_1;
+    let x_322 : i32 = i_1;
+    let x_324 : i32 = temp[x_322];
+    data[x_321] = x_324;
+
+    continuing {
+      let x_326 : i32 = i_1;
+      i_1 = (x_326 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_333 : i32 = m;
+    let x_334 : i32 = high;
+    if ((x_333 <= x_334)) {
+    } else {
+      break;
+    }
+    let x_337 : i32 = low;
+    i_2 = x_337;
+    loop {
+      let x_342 : i32 = i_2;
+      let x_343 : i32 = high;
+      if ((x_342 < x_343)) {
+      } else {
+        break;
+      }
+      let x_346 : i32 = i_2;
+      from_1 = x_346;
+      let x_347 : i32 = i_2;
+      let x_348 : i32 = m;
+      mid_1 = ((x_347 + x_348) - 1);
+      let x_351 : i32 = i_2;
+      let x_352 : i32 = m;
+      let x_356 : i32 = high;
+      to_1 = min(((x_351 + (2 * x_352)) - 1), x_356);
+      let x_358 : i32 = from_1;
+      param = x_358;
+      let x_359 : i32 = mid_1;
+      param_1 = x_359;
+      let x_360 : i32 = to_1;
+      param_2 = x_360;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_362 : i32 = m;
+        let x_364 : i32 = i_2;
+        i_2 = (x_364 + (2 * x_362));
+      }
+    }
+
+    continuing {
+      let x_366 : i32 = m;
+      m = (2 * x_366);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_87 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_87);
+  loop {
+    let x_93 : i32 = i_3;
+    switch(x_93) {
+      case 9: {
+        let x_123 : i32 = i_3;
+        data[x_123] = -5;
+      }
+      case 8: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -4;
+      }
+      case 7: {
+        let x_119 : i32 = i_3;
+        data[x_119] = -3;
+      }
+      case 6: {
+        let x_117 : i32 = i_3;
+        data[x_117] = -2;
+      }
+      case 5: {
+        let x_115 : i32 = i_3;
+        data[x_115] = -1;
+      }
+      case 4: {
+        let x_113 : i32 = i_3;
+        data[x_113] = 0;
+      }
+      case 3: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 1;
+      }
+      case 2: {
+        let x_109 : i32 = i_3;
+        data[x_109] = 2;
+      }
+      case 1: {
+        let x_107 : i32 = i_3;
+        data[x_107] = 3;
+      }
+      case 0: {
+        let x_105 : i32 = i_3;
+        data[x_105] = 4;
+      }
+      default: {
+      }
+    }
+    let x_125 : i32 = i_3;
+    i_3 = (x_125 + 1);
+
+    continuing {
+      let x_127 : i32 = i_3;
+      if ((x_127 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_133 : i32 = j_1;
+    if ((x_133 < 10)) {
+    } else {
+      break;
+    }
+    let x_136 : i32 = j_1;
+    let x_137 : i32 = j_1;
+    let x_139 : i32 = data[x_137];
+    temp[x_136] = x_139;
+
+    continuing {
+      let x_141 : i32 = j_1;
+      j_1 = (x_141 + 1);
+    }
+  }
+  mergeSort_();
+  let x_145 : f32 = gl_FragCoord.y;
+  if ((i32(x_145) < 30)) {
+    let x_152 : i32 = data[0];
+    grey = (0.5 + (f32(x_152) / 10.0));
+  } else {
+    let x_157 : f32 = gl_FragCoord.y;
+    if ((i32(x_157) < 60)) {
+      let x_164 : i32 = data[1];
+      grey = (0.5 + (f32(x_164) / 10.0));
+    } else {
+      let x_169 : f32 = gl_FragCoord.y;
+      if ((i32(x_169) < 90)) {
+        let x_176 : i32 = data[2];
+        grey = (0.5 + (f32(x_176) / 10.0));
+      } else {
+        let x_181 : f32 = gl_FragCoord.y;
+        if ((i32(x_181) < 120)) {
+          let x_188 : i32 = data[3];
+          grey = (0.5 + (f32(x_188) / 10.0));
+        } else {
+          let x_193 : f32 = gl_FragCoord.y;
+          if ((i32(x_193) < 150)) {
+            discard;
+          } else {
+            let x_200 : f32 = gl_FragCoord.y;
+            if ((i32(x_200) < 180)) {
+              let x_207 : i32 = data[5];
+              grey = (0.5 + (f32(x_207) / 10.0));
+            } else {
+              let x_212 : f32 = gl_FragCoord.y;
+              if ((i32(x_212) < 210)) {
+                let x_219 : i32 = data[6];
+                grey = (0.5 + (f32(x_219) / 10.0));
+              } else {
+                let x_224 : f32 = gl_FragCoord.y;
+                if ((i32(x_224) < 240)) {
+                  let x_231 : i32 = data[7];
+                  grey = (0.5 + (f32(x_231) / 10.0));
+                } else {
+                  let x_236 : f32 = gl_FragCoord.y;
+                  if ((i32(x_236) < 270)) {
+                    let x_243 : i32 = data[8];
+                    grey = (0.5 + (f32(x_243) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_247 : f32 = grey;
+  let x_248 : vec3<f32> = vec3<f32>(x_247, x_247, x_247);
+  x_GLF_color = vec4<f32>(x_248.x, x_248.y, x_248.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..be184c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,271 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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);
+cbuffer cbuffer_x_32 : register(b1, space0) {
+  uint4 x_32[1];
+};
+
+void merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_254 = from;
+  k = x_254;
+  const int x_255 = from;
+  i = x_255;
+  const int x_256 = mid;
+  j = (x_256 + 1);
+  while (true) {
+    const int x_262 = i;
+    const int x_263 = mid;
+    const int x_265 = j;
+    const int x_266 = to;
+    bool tint_tmp = (x_262 <= x_263);
+    if (tint_tmp) {
+      tint_tmp = (x_265 <= x_266);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_272 = data[i];
+    const int x_275 = data[j];
+    if ((x_272 < x_275)) {
+      const int x_280 = k;
+      k = (x_280 + 1);
+      const int x_282 = i;
+      i = (x_282 + 1);
+      const int x_285 = data[x_282];
+      temp[x_280] = x_285;
+    } else {
+      const int x_287 = k;
+      k = (x_287 + 1);
+      const int x_289 = j;
+      j = (x_289 + 1);
+      const int x_292 = data[x_289];
+      temp[x_287] = x_292;
+    }
+  }
+  while (true) {
+    const int x_298 = i;
+    const int x_300 = i;
+    const int x_301 = mid;
+    bool tint_tmp_1 = (x_298 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_300 <= x_301);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_305 = k;
+    k = (x_305 + 1);
+    const int x_307 = i;
+    i = (x_307 + 1);
+    const int x_310 = data[x_307];
+    temp[x_305] = x_310;
+  }
+  const int x_312 = from;
+  i_1 = x_312;
+  while (true) {
+    const int x_317 = i_1;
+    const int x_318 = to;
+    if ((x_317 <= x_318)) {
+    } else {
+      break;
+    }
+    const int x_321 = i_1;
+    const int x_324 = temp[i_1];
+    data[x_321] = x_324;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_87 = asfloat(x_28[0].x);
+  i_3 = int(x_87);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_136 = j_1;
+      const int x_139 = data[j_1];
+      temp[x_136] = x_139;
+    }
+  }
+  mergeSort_();
+  const float x_145 = gl_FragCoord.y;
+  if ((int(x_145) < 30)) {
+    const int x_152 = data[0];
+    grey = (0.5f + (float(x_152) / 10.0f));
+  } else {
+    const float x_157 = gl_FragCoord.y;
+    if ((int(x_157) < 60)) {
+      const int x_164 = data[1];
+      grey = (0.5f + (float(x_164) / 10.0f));
+    } else {
+      const float x_169 = gl_FragCoord.y;
+      if ((int(x_169) < 90)) {
+        const int x_176 = data[2];
+        grey = (0.5f + (float(x_176) / 10.0f));
+      } else {
+        const float x_181 = gl_FragCoord.y;
+        if ((int(x_181) < 120)) {
+          const int x_188 = data[3];
+          grey = (0.5f + (float(x_188) / 10.0f));
+        } else {
+          const float x_193 = gl_FragCoord.y;
+          if ((int(x_193) < 150)) {
+            discard;
+          } else {
+            const float x_200 = gl_FragCoord.y;
+            if ((int(x_200) < 180)) {
+              const int x_207 = data[5];
+              grey = (0.5f + (float(x_207) / 10.0f));
+            } else {
+              const float x_212 = gl_FragCoord.y;
+              if ((int(x_212) < 210)) {
+                const int x_219 = data[6];
+                grey = (0.5f + (float(x_219) / 10.0f));
+              } else {
+                const float x_224 = gl_FragCoord.y;
+                if ((int(x_224) < 240)) {
+                  const int x_231 = data[7];
+                  grey = (0.5f + (float(x_231) / 10.0f));
+                } else {
+                  const float x_236 = gl_FragCoord.y;
+                  if ((int(x_236) < 270)) {
+                    const int x_243 = data[8];
+                    grey = (0.5f + (float(x_243) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_247 = grey;
+  const float3 x_248 = float3(x_247, x_247, x_247);
+  x_GLF_color = float4(x_248.x, x_248.y, x_248.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6e7adb4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.msl
@@ -0,0 +1,317 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_254 = *(from);
+  k = x_254;
+  int const x_255 = *(from);
+  i = x_255;
+  int const x_256 = *(mid);
+  j = (x_256 + 1);
+  while (true) {
+    int const x_262 = i;
+    int const x_263 = *(mid);
+    int const x_265 = j;
+    int const x_266 = *(to);
+    if (((x_262 <= x_263) && (x_265 <= x_266))) {
+    } else {
+      break;
+    }
+    int const x_270 = i;
+    int const x_272 = (*(tint_symbol_5)).arr[x_270];
+    int const x_273 = j;
+    int const x_275 = (*(tint_symbol_5)).arr[x_273];
+    if ((x_272 < x_275)) {
+      int const x_280 = k;
+      k = (x_280 + 1);
+      int const x_282 = i;
+      i = (x_282 + 1);
+      int const x_285 = (*(tint_symbol_5)).arr[x_282];
+      (*(tint_symbol_6)).arr[x_280] = x_285;
+    } else {
+      int const x_287 = k;
+      k = (x_287 + 1);
+      int const x_289 = j;
+      j = (x_289 + 1);
+      int const x_292 = (*(tint_symbol_5)).arr[x_289];
+      (*(tint_symbol_6)).arr[x_287] = x_292;
+    }
+  }
+  while (true) {
+    int const x_298 = i;
+    int const x_300 = i;
+    int const x_301 = *(mid);
+    if (((x_298 < 10) && (x_300 <= x_301))) {
+    } else {
+      break;
+    }
+    int const x_305 = k;
+    k = (x_305 + 1);
+    int const x_307 = i;
+    i = (x_307 + 1);
+    int const x_310 = (*(tint_symbol_5)).arr[x_307];
+    (*(tint_symbol_6)).arr[x_305] = x_310;
+  }
+  int const x_312 = *(from);
+  i_1 = x_312;
+  while (true) {
+    int const x_317 = i_1;
+    int const x_318 = *(to);
+    if ((x_317 <= x_318)) {
+    } else {
+      break;
+    }
+    int const x_321 = i_1;
+    int const x_322 = i_1;
+    int const x_324 = (*(tint_symbol_6)).arr[x_322];
+    (*(tint_symbol_5)).arr[x_321] = x_324;
+    {
+      int const x_326 = i_1;
+      i_1 = (x_326 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_333 = m;
+    int const x_334 = high;
+    if ((x_333 <= x_334)) {
+    } else {
+      break;
+    }
+    int const x_337 = low;
+    i_2 = x_337;
+    while (true) {
+      int const x_342 = i_2;
+      int const x_343 = high;
+      if ((x_342 < x_343)) {
+      } else {
+        break;
+      }
+      int const x_346 = i_2;
+      from_1 = x_346;
+      int const x_347 = i_2;
+      int const x_348 = m;
+      mid_1 = ((x_347 + x_348) - 1);
+      int const x_351 = i_2;
+      int const x_352 = m;
+      int const x_356 = high;
+      to_1 = min(((x_351 + (2 * x_352)) - 1), x_356);
+      int const x_358 = from_1;
+      param = x_358;
+      int const x_359 = mid_1;
+      param_1 = x_359;
+      int const x_360 = to_1;
+      param_2 = x_360;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_362 = m;
+        int const x_364 = i_2;
+        i_2 = (x_364 + (2 * x_362));
+      }
+    }
+    {
+      int const x_366 = m;
+      m = (2 * x_366);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_87 = x_28.injectionSwitch.x;
+  i_3 = int(x_87);
+  while (true) {
+    int const x_93 = i_3;
+    switch(x_93) {
+      case 9: {
+        int const x_123 = i_3;
+        (*(tint_symbol_9)).arr[x_123] = -5;
+        break;
+      }
+      case 8: {
+        int const x_121 = i_3;
+        (*(tint_symbol_9)).arr[x_121] = -4;
+        break;
+      }
+      case 7: {
+        int const x_119 = i_3;
+        (*(tint_symbol_9)).arr[x_119] = -3;
+        break;
+      }
+      case 6: {
+        int const x_117 = i_3;
+        (*(tint_symbol_9)).arr[x_117] = -2;
+        break;
+      }
+      case 5: {
+        int const x_115 = i_3;
+        (*(tint_symbol_9)).arr[x_115] = -1;
+        break;
+      }
+      case 4: {
+        int const x_113 = i_3;
+        (*(tint_symbol_9)).arr[x_113] = 0;
+        break;
+      }
+      case 3: {
+        int const x_111 = i_3;
+        (*(tint_symbol_9)).arr[x_111] = 1;
+        break;
+      }
+      case 2: {
+        int const x_109 = i_3;
+        (*(tint_symbol_9)).arr[x_109] = 2;
+        break;
+      }
+      case 1: {
+        int const x_107 = i_3;
+        (*(tint_symbol_9)).arr[x_107] = 3;
+        break;
+      }
+      case 0: {
+        int const x_105 = i_3;
+        (*(tint_symbol_9)).arr[x_105] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_125 = i_3;
+    i_3 = (x_125 + 1);
+    {
+      int const x_127 = i_3;
+      if ((x_127 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_133 = j_1;
+    if ((x_133 < 10)) {
+    } else {
+      break;
+    }
+    int const x_136 = j_1;
+    int const x_137 = j_1;
+    int const x_139 = (*(tint_symbol_9)).arr[x_137];
+    (*(tint_symbol_10)).arr[x_136] = x_139;
+    {
+      int const x_141 = j_1;
+      j_1 = (x_141 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_145 = (*(tint_symbol_11)).y;
+  if ((int(x_145) < 30)) {
+    int const x_152 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_152) / 10.0f));
+  } else {
+    float const x_157 = (*(tint_symbol_11)).y;
+    if ((int(x_157) < 60)) {
+      int const x_164 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_164) / 10.0f));
+    } else {
+      float const x_169 = (*(tint_symbol_11)).y;
+      if ((int(x_169) < 90)) {
+        int const x_176 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_176) / 10.0f));
+      } else {
+        float const x_181 = (*(tint_symbol_11)).y;
+        if ((int(x_181) < 120)) {
+          int const x_188 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_188) / 10.0f));
+        } else {
+          float const x_193 = (*(tint_symbol_11)).y;
+          if ((int(x_193) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_200 = (*(tint_symbol_11)).y;
+            if ((int(x_200) < 180)) {
+              int const x_207 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_207) / 10.0f));
+            } else {
+              float const x_212 = (*(tint_symbol_11)).y;
+              if ((int(x_212) < 210)) {
+                int const x_219 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_219) / 10.0f));
+              } else {
+                float const x_224 = (*(tint_symbol_11)).y;
+                if ((int(x_224) < 240)) {
+                  int const x_231 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_231) / 10.0f));
+                } else {
+                  float const x_236 = (*(tint_symbol_11)).y;
+                  if ((int(x_236) < 270)) {
+                    int const x_243 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_243) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_247 = grey;
+  float3 const x_248 = float3(x_247, x_247, x_247);
+  *(tint_symbol_12) = float4(x_248.x, x_248.y, x_248.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9042981
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,660 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 419
+; Schema: 0
+               OpCapability Shader
+        %180 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_32 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %35 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %135 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %204 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %406 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %26
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %33 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %35
+          %i = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+        %i_1 = OpVariable %_ptr_Function_int Function %35
+         %40 = OpLoad %int %from
+               OpStore %k %40
+         %42 = OpLoad %int %from
+               OpStore %i %42
+         %44 = OpLoad %int %mid
+         %46 = OpIAdd %int %44 %int_1
+               OpStore %j %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %int %mid
+         %54 = OpLoad %int %j
+         %56 = OpLoad %int %to
+         %57 = OpSLessThanEqual %bool %51 %53
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+         %61 = OpSLessThanEqual %bool %54 %56
+               OpBranch %59
+         %59 = OpLabel
+         %62 = OpPhi %bool %57 %50 %61 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %48
+         %63 = OpLabel
+         %66 = OpLoad %int %i
+         %68 = OpAccessChain %_ptr_Private_int %data %66
+         %69 = OpLoad %int %68
+         %70 = OpLoad %int %j
+         %71 = OpAccessChain %_ptr_Private_int %data %70
+         %72 = OpLoad %int %71
+         %73 = OpSLessThan %bool %69 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %77 = OpLoad %int %k
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %k %78
+         %79 = OpLoad %int %i
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %i %80
+         %81 = OpAccessChain %_ptr_Private_int %data %79
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Private_int %temp %77
+               OpStore %83 %82
+               OpBranch %74
+         %76 = OpLabel
+         %84 = OpLoad %int %k
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %k %85
+         %86 = OpLoad %int %j
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %j %87
+         %88 = OpAccessChain %_ptr_Private_int %data %86
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Private_int %temp %84
+               OpStore %90 %89
+               OpBranch %74
+         %74 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i
+         %96 = OpLoad %int %i
+         %98 = OpLoad %int %mid
+        %100 = OpSLessThan %bool %95 %int_10
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpSLessThanEqual %bool %96 %98
+               OpBranch %101
+        %101 = OpLabel
+        %104 = OpPhi %bool %100 %94 %103 %102
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+               OpBranch %105
+        %107 = OpLabel
+               OpBranch %92
+        %105 = OpLabel
+        %108 = OpLoad %int %k
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %k %109
+        %110 = OpLoad %int %i
+        %111 = OpIAdd %int %110 %int_1
+               OpStore %i %111
+        %112 = OpAccessChain %_ptr_Private_int %data %110
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Private_int %temp %108
+               OpStore %114 %113
+               OpBranch %93
+         %93 = OpLabel
+               OpBranch %91
+         %92 = OpLabel
+        %116 = OpLoad %int %from
+               OpStore %i_1 %116
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpLoad %int %i_1
+        %123 = OpLoad %int %to
+        %124 = OpSLessThanEqual %bool %121 %123
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %127
+        %126 = OpLabel
+               OpBranch %125
+        %127 = OpLabel
+               OpBranch %118
+        %125 = OpLabel
+        %128 = OpLoad %int %i_1
+        %129 = OpLoad %int %i_1
+        %130 = OpAccessChain %_ptr_Private_int %temp %129
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Private_int %data %128
+               OpStore %132 %131
+               OpBranch %119
+        %119 = OpLabel
+        %133 = OpLoad %int %i_1
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %i_1 %134
+               OpBranch %117
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %135
+        %137 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %35
+       %high = OpVariable %_ptr_Function_int Function %35
+          %m = OpVariable %_ptr_Function_int Function %35
+        %i_2 = OpVariable %_ptr_Function_int Function %35
+     %from_1 = OpVariable %_ptr_Function_int Function %35
+      %mid_1 = OpVariable %_ptr_Function_int Function %35
+       %to_1 = OpVariable %_ptr_Function_int Function %35
+      %param = OpVariable %_ptr_Function_int Function %35
+    %param_1 = OpVariable %_ptr_Function_int Function %35
+    %param_2 = OpVariable %_ptr_Function_int Function %35
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %154 = OpLoad %int %m
+        %155 = OpLoad %int %high
+        %156 = OpSLessThanEqual %bool %154 %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %151
+        %157 = OpLabel
+        %160 = OpLoad %int %low
+               OpStore %i_2 %160
+               OpBranch %161
+        %161 = OpLabel
+               OpLoopMerge %162 %163 None
+               OpBranch %164
+        %164 = OpLabel
+        %165 = OpLoad %int %i_2
+        %166 = OpLoad %int %high
+        %167 = OpSLessThan %bool %165 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %162
+        %168 = OpLabel
+        %171 = OpLoad %int %i_2
+               OpStore %from_1 %171
+        %172 = OpLoad %int %i_2
+        %173 = OpLoad %int %m
+        %174 = OpIAdd %int %172 %173
+        %175 = OpISub %int %174 %int_1
+               OpStore %mid_1 %175
+        %176 = OpLoad %int %i_2
+        %177 = OpLoad %int %m
+        %178 = OpLoad %int %high
+        %182 = OpIMul %int %int_2 %177
+        %183 = OpIAdd %int %176 %182
+        %184 = OpISub %int %183 %int_1
+        %179 = OpExtInst %int %180 SMin %184 %178
+               OpStore %to_1 %179
+        %185 = OpLoad %int %from_1
+               OpStore %param %185
+        %186 = OpLoad %int %mid_1
+               OpStore %param_1 %186
+        %187 = OpLoad %int %to_1
+               OpStore %param_2 %187
+        %188 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %163
+        %163 = OpLabel
+        %192 = OpLoad %int %m
+        %193 = OpLoad %int %i_2
+        %194 = OpIMul %int %int_2 %192
+        %195 = OpIAdd %int %193 %194
+               OpStore %i_2 %195
+               OpBranch %161
+        %162 = OpLabel
+               OpBranch %152
+        %152 = OpLabel
+        %196 = OpLoad %int %m
+        %197 = OpIMul %int %int_2 %196
+               OpStore %m %197
+               OpBranch %150
+        %151 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %135
+        %199 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %35
+        %j_1 = OpVariable %_ptr_Function_int Function %35
+       %grey = OpVariable %_ptr_Function_float Function %204
+        %207 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %208 = OpLoad %float %207
+        %209 = OpConvertFToS %int %208
+               OpStore %i_3 %209
+               OpBranch %210
+        %210 = OpLabel
+               OpLoopMerge %211 %212 None
+               OpBranch %213
+        %213 = OpLabel
+        %214 = OpLoad %int %i_3
+               OpSelectionMerge %215 None
+               OpSwitch %214 %216 9 %217 8 %218 7 %219 6 %220 5 %221 4 %222 3 %223 2 %224 1 %225 0 %226
+        %217 = OpLabel
+        %227 = OpLoad %int %i_3
+        %228 = OpAccessChain %_ptr_Private_int %data %227
+               OpStore %228 %int_n5
+               OpBranch %215
+        %218 = OpLabel
+        %230 = OpLoad %int %i_3
+        %231 = OpAccessChain %_ptr_Private_int %data %230
+               OpStore %231 %int_n4
+               OpBranch %215
+        %219 = OpLabel
+        %233 = OpLoad %int %i_3
+        %234 = OpAccessChain %_ptr_Private_int %data %233
+               OpStore %234 %int_n3
+               OpBranch %215
+        %220 = OpLabel
+        %236 = OpLoad %int %i_3
+        %237 = OpAccessChain %_ptr_Private_int %data %236
+               OpStore %237 %int_n2
+               OpBranch %215
+        %221 = OpLabel
+        %239 = OpLoad %int %i_3
+        %240 = OpAccessChain %_ptr_Private_int %data %239
+               OpStore %240 %int_n1
+               OpBranch %215
+        %222 = OpLabel
+        %242 = OpLoad %int %i_3
+        %243 = OpAccessChain %_ptr_Private_int %data %242
+               OpStore %243 %int_0
+               OpBranch %215
+        %223 = OpLabel
+        %244 = OpLoad %int %i_3
+        %245 = OpAccessChain %_ptr_Private_int %data %244
+               OpStore %245 %int_1
+               OpBranch %215
+        %224 = OpLabel
+        %246 = OpLoad %int %i_3
+        %247 = OpAccessChain %_ptr_Private_int %data %246
+               OpStore %247 %int_2
+               OpBranch %215
+        %225 = OpLabel
+        %248 = OpLoad %int %i_3
+        %249 = OpAccessChain %_ptr_Private_int %data %248
+               OpStore %249 %int_3
+               OpBranch %215
+        %226 = OpLabel
+        %251 = OpLoad %int %i_3
+        %252 = OpAccessChain %_ptr_Private_int %data %251
+               OpStore %252 %int_4
+               OpBranch %215
+        %216 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %254 = OpLoad %int %i_3
+        %255 = OpIAdd %int %254 %int_1
+               OpStore %i_3 %255
+               OpBranch %212
+        %212 = OpLabel
+        %256 = OpLoad %int %i_3
+        %257 = OpSLessThan %bool %256 %int_10
+               OpSelectionMerge %258 None
+               OpBranchConditional %257 %259 %260
+        %259 = OpLabel
+               OpBranch %258
+        %260 = OpLabel
+               OpBranch %211
+        %258 = OpLabel
+               OpBranch %210
+        %211 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %261
+        %261 = OpLabel
+               OpLoopMerge %262 %263 None
+               OpBranch %264
+        %264 = OpLabel
+        %265 = OpLoad %int %j_1
+        %266 = OpSLessThan %bool %265 %int_10
+               OpSelectionMerge %267 None
+               OpBranchConditional %266 %268 %269
+        %268 = OpLabel
+               OpBranch %267
+        %269 = OpLabel
+               OpBranch %262
+        %267 = OpLabel
+        %270 = OpLoad %int %j_1
+        %271 = OpLoad %int %j_1
+        %272 = OpAccessChain %_ptr_Private_int %data %271
+        %273 = OpLoad %int %272
+        %274 = OpAccessChain %_ptr_Private_int %temp %270
+               OpStore %274 %273
+               OpBranch %263
+        %263 = OpLabel
+        %275 = OpLoad %int %j_1
+        %276 = OpIAdd %int %275 %int_1
+               OpStore %j_1 %276
+               OpBranch %261
+        %262 = OpLabel
+        %277 = OpFunctionCall %void %mergeSort_
+        %280 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %281 = OpLoad %float %280
+        %282 = OpConvertFToS %int %281
+        %284 = OpSLessThan %bool %282 %int_30
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %287
+        %286 = OpLabel
+        %288 = OpAccessChain %_ptr_Private_int %data %int_0
+        %289 = OpLoad %int %288
+        %291 = OpConvertSToF %float %289
+        %293 = OpFDiv %float %291 %float_10
+        %294 = OpFAdd %float %float_0_5 %293
+               OpStore %grey %294
+               OpBranch %285
+        %287 = OpLabel
+        %295 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %296 = OpLoad %float %295
+        %297 = OpConvertFToS %int %296
+        %299 = OpSLessThan %bool %297 %int_60
+               OpSelectionMerge %300 None
+               OpBranchConditional %299 %301 %302
+        %301 = OpLabel
+        %303 = OpAccessChain %_ptr_Private_int %data %int_1
+        %304 = OpLoad %int %303
+        %305 = OpConvertSToF %float %304
+        %306 = OpFDiv %float %305 %float_10
+        %307 = OpFAdd %float %float_0_5 %306
+               OpStore %grey %307
+               OpBranch %300
+        %302 = OpLabel
+        %308 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %309 = OpLoad %float %308
+        %310 = OpConvertFToS %int %309
+        %312 = OpSLessThan %bool %310 %int_90
+               OpSelectionMerge %313 None
+               OpBranchConditional %312 %314 %315
+        %314 = OpLabel
+        %316 = OpAccessChain %_ptr_Private_int %data %int_2
+        %317 = OpLoad %int %316
+        %318 = OpConvertSToF %float %317
+        %319 = OpFDiv %float %318 %float_10
+        %320 = OpFAdd %float %float_0_5 %319
+               OpStore %grey %320
+               OpBranch %313
+        %315 = OpLabel
+        %321 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %322 = OpLoad %float %321
+        %323 = OpConvertFToS %int %322
+        %325 = OpSLessThan %bool %323 %int_120
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %328
+        %327 = OpLabel
+        %329 = OpAccessChain %_ptr_Private_int %data %int_3
+        %330 = OpLoad %int %329
+        %331 = OpConvertSToF %float %330
+        %332 = OpFDiv %float %331 %float_10
+        %333 = OpFAdd %float %float_0_5 %332
+               OpStore %grey %333
+               OpBranch %326
+        %328 = OpLabel
+        %334 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %335 = OpLoad %float %334
+        %336 = OpConvertFToS %int %335
+        %338 = OpSLessThan %bool %336 %int_150
+               OpSelectionMerge %339 None
+               OpBranchConditional %338 %340 %341
+        %340 = OpLabel
+               OpKill
+        %341 = OpLabel
+        %342 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %343 = OpLoad %float %342
+        %344 = OpConvertFToS %int %343
+        %346 = OpSLessThan %bool %344 %int_180
+               OpSelectionMerge %347 None
+               OpBranchConditional %346 %348 %349
+        %348 = OpLabel
+        %351 = OpAccessChain %_ptr_Private_int %data %int_5
+        %352 = OpLoad %int %351
+        %353 = OpConvertSToF %float %352
+        %354 = OpFDiv %float %353 %float_10
+        %355 = OpFAdd %float %float_0_5 %354
+               OpStore %grey %355
+               OpBranch %347
+        %349 = OpLabel
+        %356 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %357 = OpLoad %float %356
+        %358 = OpConvertFToS %int %357
+        %360 = OpSLessThan %bool %358 %int_210
+               OpSelectionMerge %361 None
+               OpBranchConditional %360 %362 %363
+        %362 = OpLabel
+        %365 = OpAccessChain %_ptr_Private_int %data %int_6
+        %366 = OpLoad %int %365
+        %367 = OpConvertSToF %float %366
+        %368 = OpFDiv %float %367 %float_10
+        %369 = OpFAdd %float %float_0_5 %368
+               OpStore %grey %369
+               OpBranch %361
+        %363 = OpLabel
+        %370 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %371 = OpLoad %float %370
+        %372 = OpConvertFToS %int %371
+        %374 = OpSLessThan %bool %372 %int_240
+               OpSelectionMerge %375 None
+               OpBranchConditional %374 %376 %377
+        %376 = OpLabel
+        %379 = OpAccessChain %_ptr_Private_int %data %int_7
+        %380 = OpLoad %int %379
+        %381 = OpConvertSToF %float %380
+        %382 = OpFDiv %float %381 %float_10
+        %383 = OpFAdd %float %float_0_5 %382
+               OpStore %grey %383
+               OpBranch %375
+        %377 = OpLabel
+        %384 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %385 = OpLoad %float %384
+        %386 = OpConvertFToS %int %385
+        %388 = OpSLessThan %bool %386 %int_270
+               OpSelectionMerge %389 None
+               OpBranchConditional %388 %390 %391
+        %390 = OpLabel
+        %393 = OpAccessChain %_ptr_Private_int %data %int_8
+        %394 = OpLoad %int %393
+        %395 = OpConvertSToF %float %394
+        %396 = OpFDiv %float %395 %float_10
+        %397 = OpFAdd %float %float_0_5 %396
+               OpStore %grey %397
+               OpBranch %389
+        %391 = OpLabel
+               OpKill
+        %389 = OpLabel
+               OpBranch %375
+        %375 = OpLabel
+               OpBranch %361
+        %361 = OpLabel
+               OpBranch %347
+        %347 = OpLabel
+               OpBranch %339
+        %339 = OpLabel
+               OpBranch %326
+        %326 = OpLabel
+               OpBranch %313
+        %313 = OpLabel
+               OpBranch %300
+        %300 = OpLabel
+               OpBranch %285
+        %285 = OpLabel
+        %398 = OpLoad %float %grey
+        %400 = OpCompositeConstruct %v3float %398 %398 %398
+        %401 = OpCompositeExtract %float %400 0
+        %402 = OpCompositeExtract %float %400 1
+        %403 = OpCompositeExtract %float %400 2
+        %405 = OpCompositeConstruct %v4float %401 %402 %403 %float_1
+               OpStore %x_GLF_color %405
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %406
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %410 = OpLabel
+        %411 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %411
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %135
+        %413 = OpLabel
+        %414 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %414
+        %415 = OpFunctionCall %void %main_1
+        %417 = OpLoad %v4float %x_GLF_color
+        %418 = OpCompositeConstruct %main_out %417
+        %416 = OpFunctionCall %void %tint_symbol_3 %418
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 212[%212] is not post dominated by the back-edge block 258[%258]
+  %258 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e61feb5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,313 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_254 : i32 = *(from);
+  k = x_254;
+  let x_255 : i32 = *(from);
+  i = x_255;
+  let x_256 : i32 = *(mid);
+  j = (x_256 + 1);
+  loop {
+    let x_262 : i32 = i;
+    let x_263 : i32 = *(mid);
+    let x_265 : i32 = j;
+    let x_266 : i32 = *(to);
+    if (((x_262 <= x_263) && (x_265 <= x_266))) {
+    } else {
+      break;
+    }
+    let x_270 : i32 = i;
+    let x_272 : i32 = data[x_270];
+    let x_273 : i32 = j;
+    let x_275 : i32 = data[x_273];
+    if ((x_272 < x_275)) {
+      let x_280 : i32 = k;
+      k = (x_280 + 1);
+      let x_282 : i32 = i;
+      i = (x_282 + 1);
+      let x_285 : i32 = data[x_282];
+      temp[x_280] = x_285;
+    } else {
+      let x_287 : i32 = k;
+      k = (x_287 + 1);
+      let x_289 : i32 = j;
+      j = (x_289 + 1);
+      let x_292 : i32 = data[x_289];
+      temp[x_287] = x_292;
+    }
+  }
+  loop {
+    let x_298 : i32 = i;
+    let x_300 : i32 = i;
+    let x_301 : i32 = *(mid);
+    if (((x_298 < 10) && (x_300 <= x_301))) {
+    } else {
+      break;
+    }
+    let x_305 : i32 = k;
+    k = (x_305 + 1);
+    let x_307 : i32 = i;
+    i = (x_307 + 1);
+    let x_310 : i32 = data[x_307];
+    temp[x_305] = x_310;
+  }
+  let x_312 : i32 = *(from);
+  i_1 = x_312;
+  loop {
+    let x_317 : i32 = i_1;
+    let x_318 : i32 = *(to);
+    if ((x_317 <= x_318)) {
+    } else {
+      break;
+    }
+    let x_321 : i32 = i_1;
+    let x_322 : i32 = i_1;
+    let x_324 : i32 = temp[x_322];
+    data[x_321] = x_324;
+
+    continuing {
+      let x_326 : i32 = i_1;
+      i_1 = (x_326 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_333 : i32 = m;
+    let x_334 : i32 = high;
+    if ((x_333 <= x_334)) {
+    } else {
+      break;
+    }
+    let x_337 : i32 = low;
+    i_2 = x_337;
+    loop {
+      let x_342 : i32 = i_2;
+      let x_343 : i32 = high;
+      if ((x_342 < x_343)) {
+      } else {
+        break;
+      }
+      let x_346 : i32 = i_2;
+      from_1 = x_346;
+      let x_347 : i32 = i_2;
+      let x_348 : i32 = m;
+      mid_1 = ((x_347 + x_348) - 1);
+      let x_351 : i32 = i_2;
+      let x_352 : i32 = m;
+      let x_356 : i32 = high;
+      to_1 = min(((x_351 + (2 * x_352)) - 1), x_356);
+      let x_358 : i32 = from_1;
+      param = x_358;
+      let x_359 : i32 = mid_1;
+      param_1 = x_359;
+      let x_360 : i32 = to_1;
+      param_2 = x_360;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_362 : i32 = m;
+        let x_364 : i32 = i_2;
+        i_2 = (x_364 + (2 * x_362));
+      }
+    }
+
+    continuing {
+      let x_366 : i32 = m;
+      m = (2 * x_366);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_87 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_87);
+  loop {
+    let x_93 : i32 = i_3;
+    switch(x_93) {
+      case 9: {
+        let x_123 : i32 = i_3;
+        data[x_123] = -5;
+      }
+      case 8: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -4;
+      }
+      case 7: {
+        let x_119 : i32 = i_3;
+        data[x_119] = -3;
+      }
+      case 6: {
+        let x_117 : i32 = i_3;
+        data[x_117] = -2;
+      }
+      case 5: {
+        let x_115 : i32 = i_3;
+        data[x_115] = -1;
+      }
+      case 4: {
+        let x_113 : i32 = i_3;
+        data[x_113] = 0;
+      }
+      case 3: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 1;
+      }
+      case 2: {
+        let x_109 : i32 = i_3;
+        data[x_109] = 2;
+      }
+      case 1: {
+        let x_107 : i32 = i_3;
+        data[x_107] = 3;
+      }
+      case 0: {
+        let x_105 : i32 = i_3;
+        data[x_105] = 4;
+      }
+      default: {
+      }
+    }
+    let x_125 : i32 = i_3;
+    i_3 = (x_125 + 1);
+
+    continuing {
+      let x_127 : i32 = i_3;
+      if ((x_127 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_133 : i32 = j_1;
+    if ((x_133 < 10)) {
+    } else {
+      break;
+    }
+    let x_136 : i32 = j_1;
+    let x_137 : i32 = j_1;
+    let x_139 : i32 = data[x_137];
+    temp[x_136] = x_139;
+
+    continuing {
+      let x_141 : i32 = j_1;
+      j_1 = (x_141 + 1);
+    }
+  }
+  mergeSort_();
+  let x_145 : f32 = gl_FragCoord.y;
+  if ((i32(x_145) < 30)) {
+    let x_152 : i32 = data[0];
+    grey = (0.5 + (f32(x_152) / 10.0));
+  } else {
+    let x_157 : f32 = gl_FragCoord.y;
+    if ((i32(x_157) < 60)) {
+      let x_164 : i32 = data[1];
+      grey = (0.5 + (f32(x_164) / 10.0));
+    } else {
+      let x_169 : f32 = gl_FragCoord.y;
+      if ((i32(x_169) < 90)) {
+        let x_176 : i32 = data[2];
+        grey = (0.5 + (f32(x_176) / 10.0));
+      } else {
+        let x_181 : f32 = gl_FragCoord.y;
+        if ((i32(x_181) < 120)) {
+          let x_188 : i32 = data[3];
+          grey = (0.5 + (f32(x_188) / 10.0));
+        } else {
+          let x_193 : f32 = gl_FragCoord.y;
+          if ((i32(x_193) < 150)) {
+            discard;
+          } else {
+            let x_200 : f32 = gl_FragCoord.y;
+            if ((i32(x_200) < 180)) {
+              let x_207 : i32 = data[5];
+              grey = (0.5 + (f32(x_207) / 10.0));
+            } else {
+              let x_212 : f32 = gl_FragCoord.y;
+              if ((i32(x_212) < 210)) {
+                let x_219 : i32 = data[6];
+                grey = (0.5 + (f32(x_219) / 10.0));
+              } else {
+                let x_224 : f32 = gl_FragCoord.y;
+                if ((i32(x_224) < 240)) {
+                  let x_231 : i32 = data[7];
+                  grey = (0.5 + (f32(x_231) / 10.0));
+                } else {
+                  let x_236 : f32 = gl_FragCoord.y;
+                  if ((i32(x_236) < 270)) {
+                    let x_243 : i32 = data[8];
+                    grey = (0.5 + (f32(x_243) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_247 : f32 = grey;
+  let x_248 : vec3<f32> = vec3<f32>(x_247, x_247, x_247);
+  x_GLF_color = vec4<f32>(x_248.x, x_248.y, x_248.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm
new file mode 100644
index 0000000..1746285
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm
@@ -0,0 +1,566 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %__0 ""
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %34 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %37 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %34
+         %86 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %87 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpConvertFToS %int %88
+               OpStore %i_2 %89
+               OpBranch %90
+         %90 = OpLabel
+               OpLoopMerge %91 %92 None
+               OpBranch %93
+         %93 = OpLabel
+         %94 = OpLoad %int %i_2
+               OpSelectionMerge %95 None
+               OpSwitch %94 %95 0 %96 1 %97 2 %98 3 %99 4 %100 5 %101 6 %102 7 %103 8 %104 9 %105
+         %96 = OpLabel
+        %106 = OpLoad %int %i_2
+        %107 = OpAccessChain %_ptr_Private_int %data %106
+               OpStore %107 %int_4
+               OpBranch %95
+         %97 = OpLabel
+        %108 = OpLoad %int %i_2
+        %109 = OpAccessChain %_ptr_Private_int %data %108
+               OpStore %109 %int_3
+               OpBranch %95
+         %98 = OpLabel
+        %110 = OpLoad %int %i_2
+        %111 = OpAccessChain %_ptr_Private_int %data %110
+               OpStore %111 %int_2
+               OpBranch %95
+         %99 = OpLabel
+        %112 = OpLoad %int %i_2
+        %113 = OpAccessChain %_ptr_Private_int %data %112
+               OpStore %113 %int_1
+               OpBranch %95
+        %100 = OpLabel
+        %114 = OpLoad %int %i_2
+        %115 = OpAccessChain %_ptr_Private_int %data %114
+               OpStore %115 %int_0
+               OpBranch %95
+        %101 = OpLabel
+        %116 = OpLoad %int %i_2
+        %117 = OpAccessChain %_ptr_Private_int %data %116
+               OpStore %117 %int_n1
+               OpBranch %95
+        %102 = OpLabel
+        %118 = OpLoad %int %i_2
+        %119 = OpAccessChain %_ptr_Private_int %data %118
+               OpStore %119 %int_n2
+               OpBranch %95
+        %103 = OpLabel
+        %120 = OpLoad %int %i_2
+        %121 = OpAccessChain %_ptr_Private_int %data %120
+               OpStore %121 %int_n3
+               OpBranch %95
+        %104 = OpLabel
+        %122 = OpLoad %int %i_2
+        %123 = OpAccessChain %_ptr_Private_int %data %122
+               OpStore %123 %int_n4
+               OpBranch %95
+        %105 = OpLabel
+        %124 = OpLoad %int %i_2
+        %125 = OpAccessChain %_ptr_Private_int %data %124
+               OpStore %125 %int_n5
+               OpBranchConditional %true %95 %92
+         %95 = OpLabel
+        %126 = OpLoad %int %i_2
+        %127 = OpIAdd %int %126 %int_1
+               OpStore %i_2 %127
+               OpBranchConditional %true %92 %92
+         %92 = OpLabel
+        %128 = OpLoad %int %i_2
+        %129 = OpSLessThan %bool %128 %int_10
+               OpBranchConditional %129 %90 %91
+         %91 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %130
+        %130 = OpLabel
+               OpLoopMerge %131 %132 None
+               OpBranch %133
+        %133 = OpLabel
+        %134 = OpLoad %int %j_0
+        %135 = OpSLessThan %bool %134 %int_10
+               OpBranchConditional %135 %136 %131
+        %136 = OpLabel
+        %137 = OpLoad %int %j_0
+        %138 = OpLoad %int %j_0
+        %139 = OpAccessChain %_ptr_Private_int %data %138
+        %140 = OpLoad %int %139
+        %141 = OpAccessChain %_ptr_Private_int %temp %137
+               OpStore %141 %140
+               OpBranch %132
+        %132 = OpLabel
+        %142 = OpLoad %int %j_0
+        %143 = OpIAdd %int %142 %int_1
+               OpStore %j_0 %143
+               OpBranch %130
+        %131 = OpLabel
+        %144 = OpFunctionCall %void %mergeSort_
+        %145 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %146 = OpLoad %float %145
+        %147 = OpConvertFToS %int %146
+        %148 = OpSLessThan %bool %147 %int_30
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %151
+        %150 = OpLabel
+        %152 = OpAccessChain %_ptr_Private_int %data %int_0
+        %153 = OpLoad %int %152
+        %154 = OpConvertSToF %float %153
+        %155 = OpFDiv %float %154 %float_10
+        %156 = OpFAdd %float %float_0_5 %155
+               OpStore %grey %156
+               OpBranch %149
+        %151 = OpLabel
+        %157 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %158 = OpLoad %float %157
+        %159 = OpConvertFToS %int %158
+        %160 = OpSLessThan %bool %159 %int_60
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+        %164 = OpAccessChain %_ptr_Private_int %data %int_1
+        %165 = OpLoad %int %164
+        %166 = OpConvertSToF %float %165
+        %167 = OpFDiv %float %166 %float_10
+        %168 = OpFAdd %float %float_0_5 %167
+               OpStore %grey %168
+               OpBranch %161
+        %163 = OpLabel
+        %169 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %170 = OpLoad %float %169
+        %171 = OpConvertFToS %int %170
+        %172 = OpSLessThan %bool %171 %int_90
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %175
+        %174 = OpLabel
+        %176 = OpAccessChain %_ptr_Private_int %data %int_2
+        %177 = OpLoad %int %176
+        %178 = OpConvertSToF %float %177
+        %179 = OpFDiv %float %178 %float_10
+        %180 = OpFAdd %float %float_0_5 %179
+               OpStore %grey %180
+               OpBranch %173
+        %175 = OpLabel
+        %181 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %182 = OpLoad %float %181
+        %183 = OpConvertFToS %int %182
+        %184 = OpSLessThan %bool %183 %int_120
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %187
+        %186 = OpLabel
+        %188 = OpAccessChain %_ptr_Private_int %data %int_3
+        %189 = OpLoad %int %188
+        %190 = OpConvertSToF %float %189
+        %191 = OpFDiv %float %190 %float_10
+        %192 = OpFAdd %float %float_0_5 %191
+               OpStore %grey %192
+               OpBranch %185
+        %187 = OpLabel
+        %193 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %194 = OpLoad %float %193
+        %195 = OpConvertFToS %int %194
+        %196 = OpSLessThan %bool %195 %int_150
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %199
+        %198 = OpLabel
+               OpKill
+        %199 = OpLabel
+        %200 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %201 = OpLoad %float %200
+        %202 = OpConvertFToS %int %201
+        %203 = OpSLessThan %bool %202 %int_180
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %205 = OpLabel
+        %207 = OpAccessChain %_ptr_Private_int %data %int_5
+        %208 = OpLoad %int %207
+        %209 = OpConvertSToF %float %208
+        %210 = OpFDiv %float %209 %float_10
+        %211 = OpFAdd %float %float_0_5 %210
+               OpStore %grey %211
+               OpBranch %204
+        %206 = OpLabel
+        %212 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %213 = OpLoad %float %212
+        %214 = OpConvertFToS %int %213
+        %215 = OpSLessThan %bool %214 %int_210
+               OpSelectionMerge %216 None
+               OpBranchConditional %215 %217 %218
+        %217 = OpLabel
+        %219 = OpAccessChain %_ptr_Private_int %data %int_6
+        %220 = OpLoad %int %219
+        %221 = OpConvertSToF %float %220
+        %222 = OpFDiv %float %221 %float_10
+        %223 = OpFAdd %float %float_0_5 %222
+               OpStore %grey %223
+               OpBranch %216
+        %218 = OpLabel
+        %224 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %225 = OpLoad %float %224
+        %226 = OpConvertFToS %int %225
+        %227 = OpSLessThan %bool %226 %int_240
+               OpSelectionMerge %228 None
+               OpBranchConditional %227 %229 %230
+        %229 = OpLabel
+        %231 = OpAccessChain %_ptr_Private_int %data %int_7
+        %232 = OpLoad %int %231
+        %233 = OpConvertSToF %float %232
+        %234 = OpFDiv %float %233 %float_10
+        %235 = OpFAdd %float %float_0_5 %234
+               OpStore %grey %235
+               OpBranch %228
+        %230 = OpLabel
+        %236 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %237 = OpLoad %float %236
+        %238 = OpConvertFToS %int %237
+        %239 = OpSLessThan %bool %238 %int_270
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %242
+        %241 = OpLabel
+        %243 = OpAccessChain %_ptr_Private_int %data %int_8
+        %244 = OpLoad %int %243
+        %245 = OpConvertSToF %float %244
+        %246 = OpFDiv %float %245 %float_10
+        %247 = OpFAdd %float %float_0_5 %246
+               OpStore %grey %247
+               OpBranch %240
+        %242 = OpLabel
+               OpKill
+        %240 = OpLabel
+               OpBranch %228
+        %228 = OpLabel
+               OpBranch %216
+        %216 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+               OpBranch %197
+        %197 = OpLabel
+               OpBranch %185
+        %185 = OpLabel
+               OpBranch %173
+        %173 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %248 = OpLoad %float %grey
+        %249 = OpCompositeConstruct %v3float %248 %248 %248
+        %250 = OpCompositeExtract %float %249 0
+        %251 = OpCompositeExtract %float %249 1
+        %252 = OpCompositeExtract %float %249 2
+        %253 = OpCompositeConstruct %v4float %250 %251 %252 %float_1
+               OpStore %_GLF_color %253
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %37
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %254 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %255 = OpLoad %int %from
+               OpStore %k %255
+        %256 = OpLoad %int %from
+               OpStore %i %256
+        %257 = OpLoad %int %mid
+        %258 = OpIAdd %int %257 %int_1
+               OpStore %j %258
+               OpBranch %259
+        %259 = OpLabel
+               OpLoopMerge %260 %261 None
+               OpBranch %262
+        %262 = OpLabel
+        %263 = OpLoad %int %i
+        %264 = OpLoad %int %mid
+        %265 = OpSLessThanEqual %bool %263 %264
+        %266 = OpLoad %int %j
+        %267 = OpLoad %int %to
+        %268 = OpSLessThanEqual %bool %266 %267
+        %269 = OpLogicalAnd %bool %265 %268
+               OpBranchConditional %269 %270 %260
+        %270 = OpLabel
+        %271 = OpLoad %int %i
+        %272 = OpAccessChain %_ptr_Private_int %data %271
+        %273 = OpLoad %int %272
+        %274 = OpLoad %int %j
+        %275 = OpAccessChain %_ptr_Private_int %data %274
+        %276 = OpLoad %int %275
+        %277 = OpSLessThan %bool %273 %276
+               OpSelectionMerge %278 None
+               OpBranchConditional %277 %279 %280
+        %279 = OpLabel
+        %281 = OpLoad %int %k
+        %282 = OpIAdd %int %281 %int_1
+               OpStore %k %282
+        %283 = OpLoad %int %i
+        %284 = OpIAdd %int %283 %int_1
+               OpStore %i %284
+        %285 = OpAccessChain %_ptr_Private_int %data %283
+        %286 = OpLoad %int %285
+        %287 = OpAccessChain %_ptr_Private_int %temp %281
+               OpStore %287 %286
+               OpBranch %278
+        %280 = OpLabel
+        %288 = OpLoad %int %k
+        %289 = OpIAdd %int %288 %int_1
+               OpStore %k %289
+        %290 = OpLoad %int %j
+        %291 = OpIAdd %int %290 %int_1
+               OpStore %j %291
+        %292 = OpAccessChain %_ptr_Private_int %data %290
+        %293 = OpLoad %int %292
+        %294 = OpAccessChain %_ptr_Private_int %temp %288
+               OpStore %294 %293
+               OpBranch %278
+        %278 = OpLabel
+               OpBranch %261
+        %261 = OpLabel
+               OpBranch %259
+        %260 = OpLabel
+               OpBranch %295
+        %295 = OpLabel
+               OpLoopMerge %296 %297 None
+               OpBranch %298
+        %298 = OpLabel
+        %299 = OpLoad %int %i
+        %300 = OpSLessThan %bool %299 %int_10
+        %301 = OpLoad %int %i
+        %302 = OpLoad %int %mid
+        %303 = OpSLessThanEqual %bool %301 %302
+        %304 = OpLogicalAnd %bool %300 %303
+               OpBranchConditional %304 %305 %296
+        %305 = OpLabel
+        %306 = OpLoad %int %k
+        %307 = OpIAdd %int %306 %int_1
+               OpStore %k %307
+        %308 = OpLoad %int %i
+        %309 = OpIAdd %int %308 %int_1
+               OpStore %i %309
+        %310 = OpAccessChain %_ptr_Private_int %data %308
+        %311 = OpLoad %int %310
+        %312 = OpAccessChain %_ptr_Private_int %temp %306
+               OpStore %312 %311
+               OpBranch %297
+        %297 = OpLabel
+               OpBranch %295
+        %296 = OpLabel
+        %313 = OpLoad %int %from
+               OpStore %i_0 %313
+               OpBranch %314
+        %314 = OpLabel
+               OpLoopMerge %315 %316 None
+               OpBranch %317
+        %317 = OpLabel
+        %318 = OpLoad %int %i_0
+        %319 = OpLoad %int %to
+        %320 = OpSLessThanEqual %bool %318 %319
+               OpBranchConditional %320 %321 %315
+        %321 = OpLabel
+        %322 = OpLoad %int %i_0
+        %323 = OpLoad %int %i_0
+        %324 = OpAccessChain %_ptr_Private_int %temp %323
+        %325 = OpLoad %int %324
+        %326 = OpAccessChain %_ptr_Private_int %data %322
+               OpStore %326 %325
+               OpBranch %316
+        %316 = OpLabel
+        %327 = OpLoad %int %i_0
+        %328 = OpIAdd %int %327 %int_1
+               OpStore %i_0 %328
+               OpBranch %314
+        %315 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %34
+        %329 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %330
+        %330 = OpLabel
+               OpLoopMerge %331 %332 None
+               OpBranch %333
+        %333 = OpLabel
+        %334 = OpLoad %int %m
+        %335 = OpLoad %int %high
+        %336 = OpSLessThanEqual %bool %334 %335
+               OpBranchConditional %336 %337 %331
+        %337 = OpLabel
+        %338 = OpLoad %int %low
+               OpStore %i_1 %338
+               OpBranch %339
+        %339 = OpLabel
+               OpLoopMerge %340 %341 None
+               OpBranch %342
+        %342 = OpLabel
+        %343 = OpLoad %int %i_1
+        %344 = OpLoad %int %high
+        %345 = OpSLessThan %bool %343 %344
+               OpBranchConditional %345 %346 %340
+        %346 = OpLabel
+        %347 = OpLoad %int %i_1
+               OpStore %from_0 %347
+        %348 = OpLoad %int %i_1
+        %349 = OpLoad %int %m
+        %350 = OpIAdd %int %348 %349
+        %351 = OpISub %int %350 %int_1
+               OpStore %mid_0 %351
+        %352 = OpLoad %int %i_1
+        %353 = OpLoad %int %m
+        %354 = OpIMul %int %int_2 %353
+        %355 = OpIAdd %int %352 %354
+        %356 = OpISub %int %355 %int_1
+        %357 = OpLoad %int %high
+        %358 = OpExtInst %int %1 SMin %356 %357
+               OpStore %to_0 %358
+        %359 = OpLoad %int %from_0
+               OpStore %param %359
+        %360 = OpLoad %int %mid_0
+               OpStore %param_0 %360
+        %361 = OpLoad %int %to_0
+               OpStore %param_1 %361
+        %362 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %341
+        %341 = OpLabel
+        %363 = OpLoad %int %m
+        %364 = OpIMul %int %int_2 %363
+        %365 = OpLoad %int %i_1
+        %366 = OpIAdd %int %365 %364
+               OpStore %i_1 %366
+               OpBranch %339
+        %340 = OpLabel
+               OpBranch %332
+        %332 = OpLabel
+        %367 = OpLoad %int %m
+        %368 = OpIMul %int %int_2 %367
+               OpStore %m %368
+               OpBranch %330
+        %331 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..b6f582e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.hlsl
@@ -0,0 +1,281 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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);
+cbuffer cbuffer_x_32 : register(b1, space0) {
+  uint4 x_32[1];
+};
+
+void merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_255 = from;
+  k = x_255;
+  const int x_256 = from;
+  i = x_256;
+  const int x_257 = mid;
+  j = (x_257 + 1);
+  while (true) {
+    const int x_263 = i;
+    const int x_264 = mid;
+    const int x_266 = j;
+    const int x_267 = to;
+    bool tint_tmp = (x_263 <= x_264);
+    if (tint_tmp) {
+      tint_tmp = (x_266 <= x_267);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_273 = data[i];
+    const int x_276 = data[j];
+    if ((x_273 < x_276)) {
+      const int x_281 = k;
+      k = (x_281 + 1);
+      const int x_283 = i;
+      i = (x_283 + 1);
+      const int x_286 = data[x_283];
+      temp[x_281] = x_286;
+    } else {
+      const int x_288 = k;
+      k = (x_288 + 1);
+      const int x_290 = j;
+      j = (x_290 + 1);
+      const int x_293 = data[x_290];
+      temp[x_288] = x_293;
+    }
+  }
+  while (true) {
+    const int x_299 = i;
+    const int x_301 = i;
+    const int x_302 = mid;
+    bool tint_tmp_1 = (x_299 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_301 <= x_302);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_306 = k;
+    k = (x_306 + 1);
+    const int x_308 = i;
+    i = (x_308 + 1);
+    const int x_311 = data[x_308];
+    temp[x_306] = x_311;
+  }
+  const int x_313 = from;
+  i_1 = x_313;
+  while (true) {
+    const int x_318 = i_1;
+    const int x_319 = to;
+    if ((x_318 <= x_319)) {
+    } else {
+      break;
+    }
+    const int x_322 = i_1;
+    const int x_325 = temp[i_1];
+    data[x_322] = x_325;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_88 = asfloat(x_28[0].x);
+  i_3 = int(x_88);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        if (true) {
+        } else {
+          {
+            if ((i_3 < 10)) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_137 = j_1;
+      const int x_140 = data[j_1];
+      temp[x_137] = x_140;
+    }
+  }
+  mergeSort_();
+  const float x_146 = gl_FragCoord.y;
+  if ((int(x_146) < 30)) {
+    const int x_153 = data[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    const float x_158 = gl_FragCoord.y;
+    if ((int(x_158) < 60)) {
+      const int x_165 = data[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      const float x_170 = gl_FragCoord.y;
+      if ((int(x_170) < 90)) {
+        const int x_177 = data[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        const float x_182 = gl_FragCoord.y;
+        if ((int(x_182) < 120)) {
+          const int x_189 = data[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          const float x_194 = gl_FragCoord.y;
+          if ((int(x_194) < 150)) {
+            discard;
+          } else {
+            const float x_201 = gl_FragCoord.y;
+            if ((int(x_201) < 180)) {
+              const int x_208 = data[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              const float x_213 = gl_FragCoord.y;
+              if ((int(x_213) < 210)) {
+                const int x_220 = data[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                const float x_225 = gl_FragCoord.y;
+                if ((int(x_225) < 240)) {
+                  const int x_232 = data[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  const float x_237 = gl_FragCoord.y;
+                  if ((int(x_237) < 270)) {
+                    const int x_244 = data[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_248 = grey;
+  const float3 x_249 = float3(x_248, x_248, x_248);
+  x_GLF_color = float4(x_249.x, x_249.y, x_249.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.msl
new file mode 100644
index 0000000..983295b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.msl
@@ -0,0 +1,328 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_255 = *(from);
+  k = x_255;
+  int const x_256 = *(from);
+  i = x_256;
+  int const x_257 = *(mid);
+  j = (x_257 + 1);
+  while (true) {
+    int const x_263 = i;
+    int const x_264 = *(mid);
+    int const x_266 = j;
+    int const x_267 = *(to);
+    if (((x_263 <= x_264) && (x_266 <= x_267))) {
+    } else {
+      break;
+    }
+    int const x_271 = i;
+    int const x_273 = (*(tint_symbol_5)).arr[x_271];
+    int const x_274 = j;
+    int const x_276 = (*(tint_symbol_5)).arr[x_274];
+    if ((x_273 < x_276)) {
+      int const x_281 = k;
+      k = (x_281 + 1);
+      int const x_283 = i;
+      i = (x_283 + 1);
+      int const x_286 = (*(tint_symbol_5)).arr[x_283];
+      (*(tint_symbol_6)).arr[x_281] = x_286;
+    } else {
+      int const x_288 = k;
+      k = (x_288 + 1);
+      int const x_290 = j;
+      j = (x_290 + 1);
+      int const x_293 = (*(tint_symbol_5)).arr[x_290];
+      (*(tint_symbol_6)).arr[x_288] = x_293;
+    }
+  }
+  while (true) {
+    int const x_299 = i;
+    int const x_301 = i;
+    int const x_302 = *(mid);
+    if (((x_299 < 10) && (x_301 <= x_302))) {
+    } else {
+      break;
+    }
+    int const x_306 = k;
+    k = (x_306 + 1);
+    int const x_308 = i;
+    i = (x_308 + 1);
+    int const x_311 = (*(tint_symbol_5)).arr[x_308];
+    (*(tint_symbol_6)).arr[x_306] = x_311;
+  }
+  int const x_313 = *(from);
+  i_1 = x_313;
+  while (true) {
+    int const x_318 = i_1;
+    int const x_319 = *(to);
+    if ((x_318 <= x_319)) {
+    } else {
+      break;
+    }
+    int const x_322 = i_1;
+    int const x_323 = i_1;
+    int const x_325 = (*(tint_symbol_6)).arr[x_323];
+    (*(tint_symbol_5)).arr[x_322] = x_325;
+    {
+      int const x_327 = i_1;
+      i_1 = (x_327 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_334 = m;
+    int const x_335 = high;
+    if ((x_334 <= x_335)) {
+    } else {
+      break;
+    }
+    int const x_338 = low;
+    i_2 = x_338;
+    while (true) {
+      int const x_343 = i_2;
+      int const x_344 = high;
+      if ((x_343 < x_344)) {
+      } else {
+        break;
+      }
+      int const x_347 = i_2;
+      from_1 = x_347;
+      int const x_348 = i_2;
+      int const x_349 = m;
+      mid_1 = ((x_348 + x_349) - 1);
+      int const x_352 = i_2;
+      int const x_353 = m;
+      int const x_357 = high;
+      to_1 = min(((x_352 + (2 * x_353)) - 1), x_357);
+      int const x_359 = from_1;
+      param = x_359;
+      int const x_360 = mid_1;
+      param_1 = x_360;
+      int const x_361 = to_1;
+      param_2 = x_361;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_363 = m;
+        int const x_365 = i_2;
+        i_2 = (x_365 + (2 * x_363));
+      }
+    }
+    {
+      int const x_367 = m;
+      m = (2 * x_367);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_88 = x_28.injectionSwitch.x;
+  i_3 = int(x_88);
+  while (true) {
+    int const x_94 = i_3;
+    switch(x_94) {
+      case 9: {
+        int const x_124 = i_3;
+        (*(tint_symbol_9)).arr[x_124] = -5;
+        if (true) {
+        } else {
+          {
+            int const x_128 = i_3;
+            if ((x_128 < 10)) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+        break;
+      }
+      case 8: {
+        int const x_122 = i_3;
+        (*(tint_symbol_9)).arr[x_122] = -4;
+        break;
+      }
+      case 7: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -3;
+        break;
+      }
+      case 6: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -2;
+        break;
+      }
+      case 5: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -1;
+        break;
+      }
+      case 4: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = 0;
+        break;
+      }
+      case 3: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = 1;
+        break;
+      }
+      case 2: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 2;
+        break;
+      }
+      case 1: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 3;
+        break;
+      }
+      case 0: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_126 = i_3;
+    i_3 = (x_126 + 1);
+    {
+      int const x_128 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_134 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    int const x_137 = j_1;
+    int const x_138 = j_1;
+    int const x_140 = (*(tint_symbol_9)).arr[x_138];
+    (*(tint_symbol_10)).arr[x_137] = x_140;
+    {
+      int const x_142 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_146 = (*(tint_symbol_11)).y;
+  if ((int(x_146) < 30)) {
+    int const x_153 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    float const x_158 = (*(tint_symbol_11)).y;
+    if ((int(x_158) < 60)) {
+      int const x_165 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      float const x_170 = (*(tint_symbol_11)).y;
+      if ((int(x_170) < 90)) {
+        int const x_177 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        float const x_182 = (*(tint_symbol_11)).y;
+        if ((int(x_182) < 120)) {
+          int const x_189 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          float const x_194 = (*(tint_symbol_11)).y;
+          if ((int(x_194) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_201 = (*(tint_symbol_11)).y;
+            if ((int(x_201) < 180)) {
+              int const x_208 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              float const x_213 = (*(tint_symbol_11)).y;
+              if ((int(x_213) < 210)) {
+                int const x_220 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                float const x_225 = (*(tint_symbol_11)).y;
+                if ((int(x_225) < 240)) {
+                  int const x_232 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  float const x_237 = (*(tint_symbol_11)).y;
+                  if ((int(x_237) < 270)) {
+                    int const x_244 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_248 = grey;
+  float3 const x_249 = float3(x_248, x_248, x_248);
+  *(tint_symbol_12) = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..a382317
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.spvasm
@@ -0,0 +1,668 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 423
+; Schema: 0
+               OpCapability Shader
+        %180 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_32 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %35 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %135 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %204 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+       %true = OpConstantTrue %bool
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %410 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %26
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %33 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %35
+          %i = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+        %i_1 = OpVariable %_ptr_Function_int Function %35
+         %40 = OpLoad %int %from
+               OpStore %k %40
+         %42 = OpLoad %int %from
+               OpStore %i %42
+         %44 = OpLoad %int %mid
+         %46 = OpIAdd %int %44 %int_1
+               OpStore %j %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %int %mid
+         %54 = OpLoad %int %j
+         %56 = OpLoad %int %to
+         %57 = OpSLessThanEqual %bool %51 %53
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+         %61 = OpSLessThanEqual %bool %54 %56
+               OpBranch %59
+         %59 = OpLabel
+         %62 = OpPhi %bool %57 %50 %61 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %48
+         %63 = OpLabel
+         %66 = OpLoad %int %i
+         %68 = OpAccessChain %_ptr_Private_int %data %66
+         %69 = OpLoad %int %68
+         %70 = OpLoad %int %j
+         %71 = OpAccessChain %_ptr_Private_int %data %70
+         %72 = OpLoad %int %71
+         %73 = OpSLessThan %bool %69 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %77 = OpLoad %int %k
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %k %78
+         %79 = OpLoad %int %i
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %i %80
+         %81 = OpAccessChain %_ptr_Private_int %data %79
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Private_int %temp %77
+               OpStore %83 %82
+               OpBranch %74
+         %76 = OpLabel
+         %84 = OpLoad %int %k
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %k %85
+         %86 = OpLoad %int %j
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %j %87
+         %88 = OpAccessChain %_ptr_Private_int %data %86
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Private_int %temp %84
+               OpStore %90 %89
+               OpBranch %74
+         %74 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i
+         %96 = OpLoad %int %i
+         %98 = OpLoad %int %mid
+        %100 = OpSLessThan %bool %95 %int_10
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpSLessThanEqual %bool %96 %98
+               OpBranch %101
+        %101 = OpLabel
+        %104 = OpPhi %bool %100 %94 %103 %102
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+               OpBranch %105
+        %107 = OpLabel
+               OpBranch %92
+        %105 = OpLabel
+        %108 = OpLoad %int %k
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %k %109
+        %110 = OpLoad %int %i
+        %111 = OpIAdd %int %110 %int_1
+               OpStore %i %111
+        %112 = OpAccessChain %_ptr_Private_int %data %110
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Private_int %temp %108
+               OpStore %114 %113
+               OpBranch %93
+         %93 = OpLabel
+               OpBranch %91
+         %92 = OpLabel
+        %116 = OpLoad %int %from
+               OpStore %i_1 %116
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpLoad %int %i_1
+        %123 = OpLoad %int %to
+        %124 = OpSLessThanEqual %bool %121 %123
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %127
+        %126 = OpLabel
+               OpBranch %125
+        %127 = OpLabel
+               OpBranch %118
+        %125 = OpLabel
+        %128 = OpLoad %int %i_1
+        %129 = OpLoad %int %i_1
+        %130 = OpAccessChain %_ptr_Private_int %temp %129
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Private_int %data %128
+               OpStore %132 %131
+               OpBranch %119
+        %119 = OpLabel
+        %133 = OpLoad %int %i_1
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %i_1 %134
+               OpBranch %117
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %135
+        %137 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %35
+       %high = OpVariable %_ptr_Function_int Function %35
+          %m = OpVariable %_ptr_Function_int Function %35
+        %i_2 = OpVariable %_ptr_Function_int Function %35
+     %from_1 = OpVariable %_ptr_Function_int Function %35
+      %mid_1 = OpVariable %_ptr_Function_int Function %35
+       %to_1 = OpVariable %_ptr_Function_int Function %35
+      %param = OpVariable %_ptr_Function_int Function %35
+    %param_1 = OpVariable %_ptr_Function_int Function %35
+    %param_2 = OpVariable %_ptr_Function_int Function %35
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %154 = OpLoad %int %m
+        %155 = OpLoad %int %high
+        %156 = OpSLessThanEqual %bool %154 %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %151
+        %157 = OpLabel
+        %160 = OpLoad %int %low
+               OpStore %i_2 %160
+               OpBranch %161
+        %161 = OpLabel
+               OpLoopMerge %162 %163 None
+               OpBranch %164
+        %164 = OpLabel
+        %165 = OpLoad %int %i_2
+        %166 = OpLoad %int %high
+        %167 = OpSLessThan %bool %165 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %162
+        %168 = OpLabel
+        %171 = OpLoad %int %i_2
+               OpStore %from_1 %171
+        %172 = OpLoad %int %i_2
+        %173 = OpLoad %int %m
+        %174 = OpIAdd %int %172 %173
+        %175 = OpISub %int %174 %int_1
+               OpStore %mid_1 %175
+        %176 = OpLoad %int %i_2
+        %177 = OpLoad %int %m
+        %178 = OpLoad %int %high
+        %182 = OpIMul %int %int_2 %177
+        %183 = OpIAdd %int %176 %182
+        %184 = OpISub %int %183 %int_1
+        %179 = OpExtInst %int %180 SMin %184 %178
+               OpStore %to_1 %179
+        %185 = OpLoad %int %from_1
+               OpStore %param %185
+        %186 = OpLoad %int %mid_1
+               OpStore %param_1 %186
+        %187 = OpLoad %int %to_1
+               OpStore %param_2 %187
+        %188 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %163
+        %163 = OpLabel
+        %192 = OpLoad %int %m
+        %193 = OpLoad %int %i_2
+        %194 = OpIMul %int %int_2 %192
+        %195 = OpIAdd %int %193 %194
+               OpStore %i_2 %195
+               OpBranch %161
+        %162 = OpLabel
+               OpBranch %152
+        %152 = OpLabel
+        %196 = OpLoad %int %m
+        %197 = OpIMul %int %int_2 %196
+               OpStore %m %197
+               OpBranch %150
+        %151 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %135
+        %199 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %35
+        %j_1 = OpVariable %_ptr_Function_int Function %35
+       %grey = OpVariable %_ptr_Function_float Function %204
+        %207 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %208 = OpLoad %float %207
+        %209 = OpConvertFToS %int %208
+               OpStore %i_3 %209
+               OpBranch %210
+        %210 = OpLabel
+               OpLoopMerge %211 %212 None
+               OpBranch %213
+        %213 = OpLabel
+        %214 = OpLoad %int %i_3
+               OpSelectionMerge %215 None
+               OpSwitch %214 %216 9 %217 8 %218 7 %219 6 %220 5 %221 4 %222 3 %223 2 %224 1 %225 0 %226
+        %217 = OpLabel
+        %227 = OpLoad %int %i_3
+        %228 = OpAccessChain %_ptr_Private_int %data %227
+               OpStore %228 %int_n5
+               OpSelectionMerge %231 None
+               OpBranchConditional %true %232 %233
+        %232 = OpLabel
+               OpBranch %231
+        %233 = OpLabel
+               OpBranch %212
+        %231 = OpLabel
+               OpBranch %215
+        %218 = OpLabel
+        %234 = OpLoad %int %i_3
+        %235 = OpAccessChain %_ptr_Private_int %data %234
+               OpStore %235 %int_n4
+               OpBranch %215
+        %219 = OpLabel
+        %237 = OpLoad %int %i_3
+        %238 = OpAccessChain %_ptr_Private_int %data %237
+               OpStore %238 %int_n3
+               OpBranch %215
+        %220 = OpLabel
+        %240 = OpLoad %int %i_3
+        %241 = OpAccessChain %_ptr_Private_int %data %240
+               OpStore %241 %int_n2
+               OpBranch %215
+        %221 = OpLabel
+        %243 = OpLoad %int %i_3
+        %244 = OpAccessChain %_ptr_Private_int %data %243
+               OpStore %244 %int_n1
+               OpBranch %215
+        %222 = OpLabel
+        %246 = OpLoad %int %i_3
+        %247 = OpAccessChain %_ptr_Private_int %data %246
+               OpStore %247 %int_0
+               OpBranch %215
+        %223 = OpLabel
+        %248 = OpLoad %int %i_3
+        %249 = OpAccessChain %_ptr_Private_int %data %248
+               OpStore %249 %int_1
+               OpBranch %215
+        %224 = OpLabel
+        %250 = OpLoad %int %i_3
+        %251 = OpAccessChain %_ptr_Private_int %data %250
+               OpStore %251 %int_2
+               OpBranch %215
+        %225 = OpLabel
+        %252 = OpLoad %int %i_3
+        %253 = OpAccessChain %_ptr_Private_int %data %252
+               OpStore %253 %int_3
+               OpBranch %215
+        %226 = OpLabel
+        %255 = OpLoad %int %i_3
+        %256 = OpAccessChain %_ptr_Private_int %data %255
+               OpStore %256 %int_4
+               OpBranch %215
+        %216 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %258 = OpLoad %int %i_3
+        %259 = OpIAdd %int %258 %int_1
+               OpStore %i_3 %259
+               OpBranch %212
+        %212 = OpLabel
+        %260 = OpLoad %int %i_3
+        %261 = OpSLessThan %bool %260 %int_10
+               OpSelectionMerge %262 None
+               OpBranchConditional %261 %263 %264
+        %263 = OpLabel
+               OpBranch %262
+        %264 = OpLabel
+               OpBranch %211
+        %262 = OpLabel
+               OpBranch %210
+        %211 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %265
+        %265 = OpLabel
+               OpLoopMerge %266 %267 None
+               OpBranch %268
+        %268 = OpLabel
+        %269 = OpLoad %int %j_1
+        %270 = OpSLessThan %bool %269 %int_10
+               OpSelectionMerge %271 None
+               OpBranchConditional %270 %272 %273
+        %272 = OpLabel
+               OpBranch %271
+        %273 = OpLabel
+               OpBranch %266
+        %271 = OpLabel
+        %274 = OpLoad %int %j_1
+        %275 = OpLoad %int %j_1
+        %276 = OpAccessChain %_ptr_Private_int %data %275
+        %277 = OpLoad %int %276
+        %278 = OpAccessChain %_ptr_Private_int %temp %274
+               OpStore %278 %277
+               OpBranch %267
+        %267 = OpLabel
+        %279 = OpLoad %int %j_1
+        %280 = OpIAdd %int %279 %int_1
+               OpStore %j_1 %280
+               OpBranch %265
+        %266 = OpLabel
+        %281 = OpFunctionCall %void %mergeSort_
+        %284 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %285 = OpLoad %float %284
+        %286 = OpConvertFToS %int %285
+        %288 = OpSLessThan %bool %286 %int_30
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %291
+        %290 = OpLabel
+        %292 = OpAccessChain %_ptr_Private_int %data %int_0
+        %293 = OpLoad %int %292
+        %295 = OpConvertSToF %float %293
+        %297 = OpFDiv %float %295 %float_10
+        %298 = OpFAdd %float %float_0_5 %297
+               OpStore %grey %298
+               OpBranch %289
+        %291 = OpLabel
+        %299 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %300 = OpLoad %float %299
+        %301 = OpConvertFToS %int %300
+        %303 = OpSLessThan %bool %301 %int_60
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %306
+        %305 = OpLabel
+        %307 = OpAccessChain %_ptr_Private_int %data %int_1
+        %308 = OpLoad %int %307
+        %309 = OpConvertSToF %float %308
+        %310 = OpFDiv %float %309 %float_10
+        %311 = OpFAdd %float %float_0_5 %310
+               OpStore %grey %311
+               OpBranch %304
+        %306 = OpLabel
+        %312 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %313 = OpLoad %float %312
+        %314 = OpConvertFToS %int %313
+        %316 = OpSLessThan %bool %314 %int_90
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %319
+        %318 = OpLabel
+        %320 = OpAccessChain %_ptr_Private_int %data %int_2
+        %321 = OpLoad %int %320
+        %322 = OpConvertSToF %float %321
+        %323 = OpFDiv %float %322 %float_10
+        %324 = OpFAdd %float %float_0_5 %323
+               OpStore %grey %324
+               OpBranch %317
+        %319 = OpLabel
+        %325 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %326 = OpLoad %float %325
+        %327 = OpConvertFToS %int %326
+        %329 = OpSLessThan %bool %327 %int_120
+               OpSelectionMerge %330 None
+               OpBranchConditional %329 %331 %332
+        %331 = OpLabel
+        %333 = OpAccessChain %_ptr_Private_int %data %int_3
+        %334 = OpLoad %int %333
+        %335 = OpConvertSToF %float %334
+        %336 = OpFDiv %float %335 %float_10
+        %337 = OpFAdd %float %float_0_5 %336
+               OpStore %grey %337
+               OpBranch %330
+        %332 = OpLabel
+        %338 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %339 = OpLoad %float %338
+        %340 = OpConvertFToS %int %339
+        %342 = OpSLessThan %bool %340 %int_150
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+               OpKill
+        %345 = OpLabel
+        %346 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %347 = OpLoad %float %346
+        %348 = OpConvertFToS %int %347
+        %350 = OpSLessThan %bool %348 %int_180
+               OpSelectionMerge %351 None
+               OpBranchConditional %350 %352 %353
+        %352 = OpLabel
+        %355 = OpAccessChain %_ptr_Private_int %data %int_5
+        %356 = OpLoad %int %355
+        %357 = OpConvertSToF %float %356
+        %358 = OpFDiv %float %357 %float_10
+        %359 = OpFAdd %float %float_0_5 %358
+               OpStore %grey %359
+               OpBranch %351
+        %353 = OpLabel
+        %360 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %361 = OpLoad %float %360
+        %362 = OpConvertFToS %int %361
+        %364 = OpSLessThan %bool %362 %int_210
+               OpSelectionMerge %365 None
+               OpBranchConditional %364 %366 %367
+        %366 = OpLabel
+        %369 = OpAccessChain %_ptr_Private_int %data %int_6
+        %370 = OpLoad %int %369
+        %371 = OpConvertSToF %float %370
+        %372 = OpFDiv %float %371 %float_10
+        %373 = OpFAdd %float %float_0_5 %372
+               OpStore %grey %373
+               OpBranch %365
+        %367 = OpLabel
+        %374 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %375 = OpLoad %float %374
+        %376 = OpConvertFToS %int %375
+        %378 = OpSLessThan %bool %376 %int_240
+               OpSelectionMerge %379 None
+               OpBranchConditional %378 %380 %381
+        %380 = OpLabel
+        %383 = OpAccessChain %_ptr_Private_int %data %int_7
+        %384 = OpLoad %int %383
+        %385 = OpConvertSToF %float %384
+        %386 = OpFDiv %float %385 %float_10
+        %387 = OpFAdd %float %float_0_5 %386
+               OpStore %grey %387
+               OpBranch %379
+        %381 = OpLabel
+        %388 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %389 = OpLoad %float %388
+        %390 = OpConvertFToS %int %389
+        %392 = OpSLessThan %bool %390 %int_270
+               OpSelectionMerge %393 None
+               OpBranchConditional %392 %394 %395
+        %394 = OpLabel
+        %397 = OpAccessChain %_ptr_Private_int %data %int_8
+        %398 = OpLoad %int %397
+        %399 = OpConvertSToF %float %398
+        %400 = OpFDiv %float %399 %float_10
+        %401 = OpFAdd %float %float_0_5 %400
+               OpStore %grey %401
+               OpBranch %393
+        %395 = OpLabel
+               OpKill
+        %393 = OpLabel
+               OpBranch %379
+        %379 = OpLabel
+               OpBranch %365
+        %365 = OpLabel
+               OpBranch %351
+        %351 = OpLabel
+               OpBranch %343
+        %343 = OpLabel
+               OpBranch %330
+        %330 = OpLabel
+               OpBranch %317
+        %317 = OpLabel
+               OpBranch %304
+        %304 = OpLabel
+               OpBranch %289
+        %289 = OpLabel
+        %402 = OpLoad %float %grey
+        %404 = OpCompositeConstruct %v3float %402 %402 %402
+        %405 = OpCompositeExtract %float %404 0
+        %406 = OpCompositeExtract %float %404 1
+        %407 = OpCompositeExtract %float %404 2
+        %409 = OpCompositeConstruct %v4float %405 %406 %407 %float_1
+               OpStore %x_GLF_color %409
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %410
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %414 = OpLabel
+        %415 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %415
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %135
+        %417 = OpLabel
+        %418 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %418
+        %419 = OpFunctionCall %void %main_1
+        %421 = OpLoad %v4float %x_GLF_color
+        %422 = OpCompositeConstruct %main_out %421
+        %420 = OpFunctionCall %void %tint_symbol_3 %422
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 212[%212] is not post dominated by the back-edge block 262[%262]
+  %262 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..b969e06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.spvasm.expected.wgsl
@@ -0,0 +1,317 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_255 : i32 = *(from);
+  k = x_255;
+  let x_256 : i32 = *(from);
+  i = x_256;
+  let x_257 : i32 = *(mid);
+  j = (x_257 + 1);
+  loop {
+    let x_263 : i32 = i;
+    let x_264 : i32 = *(mid);
+    let x_266 : i32 = j;
+    let x_267 : i32 = *(to);
+    if (((x_263 <= x_264) && (x_266 <= x_267))) {
+    } else {
+      break;
+    }
+    let x_271 : i32 = i;
+    let x_273 : i32 = data[x_271];
+    let x_274 : i32 = j;
+    let x_276 : i32 = data[x_274];
+    if ((x_273 < x_276)) {
+      let x_281 : i32 = k;
+      k = (x_281 + 1);
+      let x_283 : i32 = i;
+      i = (x_283 + 1);
+      let x_286 : i32 = data[x_283];
+      temp[x_281] = x_286;
+    } else {
+      let x_288 : i32 = k;
+      k = (x_288 + 1);
+      let x_290 : i32 = j;
+      j = (x_290 + 1);
+      let x_293 : i32 = data[x_290];
+      temp[x_288] = x_293;
+    }
+  }
+  loop {
+    let x_299 : i32 = i;
+    let x_301 : i32 = i;
+    let x_302 : i32 = *(mid);
+    if (((x_299 < 10) && (x_301 <= x_302))) {
+    } else {
+      break;
+    }
+    let x_306 : i32 = k;
+    k = (x_306 + 1);
+    let x_308 : i32 = i;
+    i = (x_308 + 1);
+    let x_311 : i32 = data[x_308];
+    temp[x_306] = x_311;
+  }
+  let x_313 : i32 = *(from);
+  i_1 = x_313;
+  loop {
+    let x_318 : i32 = i_1;
+    let x_319 : i32 = *(to);
+    if ((x_318 <= x_319)) {
+    } else {
+      break;
+    }
+    let x_322 : i32 = i_1;
+    let x_323 : i32 = i_1;
+    let x_325 : i32 = temp[x_323];
+    data[x_322] = x_325;
+
+    continuing {
+      let x_327 : i32 = i_1;
+      i_1 = (x_327 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_334 : i32 = m;
+    let x_335 : i32 = high;
+    if ((x_334 <= x_335)) {
+    } else {
+      break;
+    }
+    let x_338 : i32 = low;
+    i_2 = x_338;
+    loop {
+      let x_343 : i32 = i_2;
+      let x_344 : i32 = high;
+      if ((x_343 < x_344)) {
+      } else {
+        break;
+      }
+      let x_347 : i32 = i_2;
+      from_1 = x_347;
+      let x_348 : i32 = i_2;
+      let x_349 : i32 = m;
+      mid_1 = ((x_348 + x_349) - 1);
+      let x_352 : i32 = i_2;
+      let x_353 : i32 = m;
+      let x_357 : i32 = high;
+      to_1 = min(((x_352 + (2 * x_353)) - 1), x_357);
+      let x_359 : i32 = from_1;
+      param = x_359;
+      let x_360 : i32 = mid_1;
+      param_1 = x_360;
+      let x_361 : i32 = to_1;
+      param_2 = x_361;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_363 : i32 = m;
+        let x_365 : i32 = i_2;
+        i_2 = (x_365 + (2 * x_363));
+      }
+    }
+
+    continuing {
+      let x_367 : i32 = m;
+      m = (2 * x_367);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_88 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_88);
+  loop {
+    let x_94 : i32 = i_3;
+    switch(x_94) {
+      case 9: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -5;
+        if (true) {
+        } else {
+          continue;
+        }
+      }
+      case 8: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -4;
+      }
+      case 7: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -3;
+      }
+      case 6: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -2;
+      }
+      case 5: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -1;
+      }
+      case 4: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 0;
+      }
+      case 3: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 1;
+      }
+      case 2: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 2;
+      }
+      case 1: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 3;
+      }
+      case 0: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 4;
+      }
+      default: {
+      }
+    }
+    let x_126 : i32 = i_3;
+    i_3 = (x_126 + 1);
+
+    continuing {
+      let x_128 : i32 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_134 : i32 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    let x_137 : i32 = j_1;
+    let x_138 : i32 = j_1;
+    let x_140 : i32 = data[x_138];
+    temp[x_137] = x_140;
+
+    continuing {
+      let x_142 : i32 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_();
+  let x_146 : f32 = gl_FragCoord.y;
+  if ((i32(x_146) < 30)) {
+    let x_153 : i32 = data[0];
+    grey = (0.5 + (f32(x_153) / 10.0));
+  } else {
+    let x_158 : f32 = gl_FragCoord.y;
+    if ((i32(x_158) < 60)) {
+      let x_165 : i32 = data[1];
+      grey = (0.5 + (f32(x_165) / 10.0));
+    } else {
+      let x_170 : f32 = gl_FragCoord.y;
+      if ((i32(x_170) < 90)) {
+        let x_177 : i32 = data[2];
+        grey = (0.5 + (f32(x_177) / 10.0));
+      } else {
+        let x_182 : f32 = gl_FragCoord.y;
+        if ((i32(x_182) < 120)) {
+          let x_189 : i32 = data[3];
+          grey = (0.5 + (f32(x_189) / 10.0));
+        } else {
+          let x_194 : f32 = gl_FragCoord.y;
+          if ((i32(x_194) < 150)) {
+            discard;
+          } else {
+            let x_201 : f32 = gl_FragCoord.y;
+            if ((i32(x_201) < 180)) {
+              let x_208 : i32 = data[5];
+              grey = (0.5 + (f32(x_208) / 10.0));
+            } else {
+              let x_213 : f32 = gl_FragCoord.y;
+              if ((i32(x_213) < 210)) {
+                let x_220 : i32 = data[6];
+                grey = (0.5 + (f32(x_220) / 10.0));
+              } else {
+                let x_225 : f32 = gl_FragCoord.y;
+                if ((i32(x_225) < 240)) {
+                  let x_232 : i32 = data[7];
+                  grey = (0.5 + (f32(x_232) / 10.0));
+                } else {
+                  let x_237 : f32 = gl_FragCoord.y;
+                  if ((i32(x_237) < 270)) {
+                    let x_244 : i32 = data[8];
+                    grey = (0.5 + (f32(x_244) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_248 : f32 = grey;
+  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
+  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
new file mode 100644
index 0000000..b969e06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
@@ -0,0 +1,317 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_255 : i32 = *(from);
+  k = x_255;
+  let x_256 : i32 = *(from);
+  i = x_256;
+  let x_257 : i32 = *(mid);
+  j = (x_257 + 1);
+  loop {
+    let x_263 : i32 = i;
+    let x_264 : i32 = *(mid);
+    let x_266 : i32 = j;
+    let x_267 : i32 = *(to);
+    if (((x_263 <= x_264) && (x_266 <= x_267))) {
+    } else {
+      break;
+    }
+    let x_271 : i32 = i;
+    let x_273 : i32 = data[x_271];
+    let x_274 : i32 = j;
+    let x_276 : i32 = data[x_274];
+    if ((x_273 < x_276)) {
+      let x_281 : i32 = k;
+      k = (x_281 + 1);
+      let x_283 : i32 = i;
+      i = (x_283 + 1);
+      let x_286 : i32 = data[x_283];
+      temp[x_281] = x_286;
+    } else {
+      let x_288 : i32 = k;
+      k = (x_288 + 1);
+      let x_290 : i32 = j;
+      j = (x_290 + 1);
+      let x_293 : i32 = data[x_290];
+      temp[x_288] = x_293;
+    }
+  }
+  loop {
+    let x_299 : i32 = i;
+    let x_301 : i32 = i;
+    let x_302 : i32 = *(mid);
+    if (((x_299 < 10) && (x_301 <= x_302))) {
+    } else {
+      break;
+    }
+    let x_306 : i32 = k;
+    k = (x_306 + 1);
+    let x_308 : i32 = i;
+    i = (x_308 + 1);
+    let x_311 : i32 = data[x_308];
+    temp[x_306] = x_311;
+  }
+  let x_313 : i32 = *(from);
+  i_1 = x_313;
+  loop {
+    let x_318 : i32 = i_1;
+    let x_319 : i32 = *(to);
+    if ((x_318 <= x_319)) {
+    } else {
+      break;
+    }
+    let x_322 : i32 = i_1;
+    let x_323 : i32 = i_1;
+    let x_325 : i32 = temp[x_323];
+    data[x_322] = x_325;
+
+    continuing {
+      let x_327 : i32 = i_1;
+      i_1 = (x_327 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_334 : i32 = m;
+    let x_335 : i32 = high;
+    if ((x_334 <= x_335)) {
+    } else {
+      break;
+    }
+    let x_338 : i32 = low;
+    i_2 = x_338;
+    loop {
+      let x_343 : i32 = i_2;
+      let x_344 : i32 = high;
+      if ((x_343 < x_344)) {
+      } else {
+        break;
+      }
+      let x_347 : i32 = i_2;
+      from_1 = x_347;
+      let x_348 : i32 = i_2;
+      let x_349 : i32 = m;
+      mid_1 = ((x_348 + x_349) - 1);
+      let x_352 : i32 = i_2;
+      let x_353 : i32 = m;
+      let x_357 : i32 = high;
+      to_1 = min(((x_352 + (2 * x_353)) - 1), x_357);
+      let x_359 : i32 = from_1;
+      param = x_359;
+      let x_360 : i32 = mid_1;
+      param_1 = x_360;
+      let x_361 : i32 = to_1;
+      param_2 = x_361;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_363 : i32 = m;
+        let x_365 : i32 = i_2;
+        i_2 = (x_365 + (2 * x_363));
+      }
+    }
+
+    continuing {
+      let x_367 : i32 = m;
+      m = (2 * x_367);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_88 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_88);
+  loop {
+    let x_94 : i32 = i_3;
+    switch(x_94) {
+      case 9: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -5;
+        if (true) {
+        } else {
+          continue;
+        }
+      }
+      case 8: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -4;
+      }
+      case 7: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -3;
+      }
+      case 6: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -2;
+      }
+      case 5: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -1;
+      }
+      case 4: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 0;
+      }
+      case 3: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 1;
+      }
+      case 2: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 2;
+      }
+      case 1: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 3;
+      }
+      case 0: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 4;
+      }
+      default: {
+      }
+    }
+    let x_126 : i32 = i_3;
+    i_3 = (x_126 + 1);
+
+    continuing {
+      let x_128 : i32 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_134 : i32 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    let x_137 : i32 = j_1;
+    let x_138 : i32 = j_1;
+    let x_140 : i32 = data[x_138];
+    temp[x_137] = x_140;
+
+    continuing {
+      let x_142 : i32 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_();
+  let x_146 : f32 = gl_FragCoord.y;
+  if ((i32(x_146) < 30)) {
+    let x_153 : i32 = data[0];
+    grey = (0.5 + (f32(x_153) / 10.0));
+  } else {
+    let x_158 : f32 = gl_FragCoord.y;
+    if ((i32(x_158) < 60)) {
+      let x_165 : i32 = data[1];
+      grey = (0.5 + (f32(x_165) / 10.0));
+    } else {
+      let x_170 : f32 = gl_FragCoord.y;
+      if ((i32(x_170) < 90)) {
+        let x_177 : i32 = data[2];
+        grey = (0.5 + (f32(x_177) / 10.0));
+      } else {
+        let x_182 : f32 = gl_FragCoord.y;
+        if ((i32(x_182) < 120)) {
+          let x_189 : i32 = data[3];
+          grey = (0.5 + (f32(x_189) / 10.0));
+        } else {
+          let x_194 : f32 = gl_FragCoord.y;
+          if ((i32(x_194) < 150)) {
+            discard;
+          } else {
+            let x_201 : f32 = gl_FragCoord.y;
+            if ((i32(x_201) < 180)) {
+              let x_208 : i32 = data[5];
+              grey = (0.5 + (f32(x_208) / 10.0));
+            } else {
+              let x_213 : f32 = gl_FragCoord.y;
+              if ((i32(x_213) < 210)) {
+                let x_220 : i32 = data[6];
+                grey = (0.5 + (f32(x_220) / 10.0));
+              } else {
+                let x_225 : f32 = gl_FragCoord.y;
+                if ((i32(x_225) < 240)) {
+                  let x_232 : i32 = data[7];
+                  grey = (0.5 + (f32(x_232) / 10.0));
+                } else {
+                  let x_237 : f32 = gl_FragCoord.y;
+                  if ((i32(x_237) < 270)) {
+                    let x_244 : i32 = data[8];
+                    grey = (0.5 + (f32(x_244) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_248 : f32 = grey;
+  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
+  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..b6f582e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.hlsl
@@ -0,0 +1,281 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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);
+cbuffer cbuffer_x_32 : register(b1, space0) {
+  uint4 x_32[1];
+};
+
+void merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_255 = from;
+  k = x_255;
+  const int x_256 = from;
+  i = x_256;
+  const int x_257 = mid;
+  j = (x_257 + 1);
+  while (true) {
+    const int x_263 = i;
+    const int x_264 = mid;
+    const int x_266 = j;
+    const int x_267 = to;
+    bool tint_tmp = (x_263 <= x_264);
+    if (tint_tmp) {
+      tint_tmp = (x_266 <= x_267);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_273 = data[i];
+    const int x_276 = data[j];
+    if ((x_273 < x_276)) {
+      const int x_281 = k;
+      k = (x_281 + 1);
+      const int x_283 = i;
+      i = (x_283 + 1);
+      const int x_286 = data[x_283];
+      temp[x_281] = x_286;
+    } else {
+      const int x_288 = k;
+      k = (x_288 + 1);
+      const int x_290 = j;
+      j = (x_290 + 1);
+      const int x_293 = data[x_290];
+      temp[x_288] = x_293;
+    }
+  }
+  while (true) {
+    const int x_299 = i;
+    const int x_301 = i;
+    const int x_302 = mid;
+    bool tint_tmp_1 = (x_299 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_301 <= x_302);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_306 = k;
+    k = (x_306 + 1);
+    const int x_308 = i;
+    i = (x_308 + 1);
+    const int x_311 = data[x_308];
+    temp[x_306] = x_311;
+  }
+  const int x_313 = from;
+  i_1 = x_313;
+  while (true) {
+    const int x_318 = i_1;
+    const int x_319 = to;
+    if ((x_318 <= x_319)) {
+    } else {
+      break;
+    }
+    const int x_322 = i_1;
+    const int x_325 = temp[i_1];
+    data[x_322] = x_325;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_88 = asfloat(x_28[0].x);
+  i_3 = int(x_88);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        if (true) {
+        } else {
+          {
+            if ((i_3 < 10)) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_137 = j_1;
+      const int x_140 = data[j_1];
+      temp[x_137] = x_140;
+    }
+  }
+  mergeSort_();
+  const float x_146 = gl_FragCoord.y;
+  if ((int(x_146) < 30)) {
+    const int x_153 = data[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    const float x_158 = gl_FragCoord.y;
+    if ((int(x_158) < 60)) {
+      const int x_165 = data[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      const float x_170 = gl_FragCoord.y;
+      if ((int(x_170) < 90)) {
+        const int x_177 = data[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        const float x_182 = gl_FragCoord.y;
+        if ((int(x_182) < 120)) {
+          const int x_189 = data[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          const float x_194 = gl_FragCoord.y;
+          if ((int(x_194) < 150)) {
+            discard;
+          } else {
+            const float x_201 = gl_FragCoord.y;
+            if ((int(x_201) < 180)) {
+              const int x_208 = data[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              const float x_213 = gl_FragCoord.y;
+              if ((int(x_213) < 210)) {
+                const int x_220 = data[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                const float x_225 = gl_FragCoord.y;
+                if ((int(x_225) < 240)) {
+                  const int x_232 = data[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  const float x_237 = gl_FragCoord.y;
+                  if ((int(x_237) < 270)) {
+                    const int x_244 = data[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_248 = grey;
+  const float3 x_249 = float3(x_248, x_248, x_248);
+  x_GLF_color = float4(x_249.x, x_249.y, x_249.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.msl
new file mode 100644
index 0000000..983295b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.msl
@@ -0,0 +1,328 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_255 = *(from);
+  k = x_255;
+  int const x_256 = *(from);
+  i = x_256;
+  int const x_257 = *(mid);
+  j = (x_257 + 1);
+  while (true) {
+    int const x_263 = i;
+    int const x_264 = *(mid);
+    int const x_266 = j;
+    int const x_267 = *(to);
+    if (((x_263 <= x_264) && (x_266 <= x_267))) {
+    } else {
+      break;
+    }
+    int const x_271 = i;
+    int const x_273 = (*(tint_symbol_5)).arr[x_271];
+    int const x_274 = j;
+    int const x_276 = (*(tint_symbol_5)).arr[x_274];
+    if ((x_273 < x_276)) {
+      int const x_281 = k;
+      k = (x_281 + 1);
+      int const x_283 = i;
+      i = (x_283 + 1);
+      int const x_286 = (*(tint_symbol_5)).arr[x_283];
+      (*(tint_symbol_6)).arr[x_281] = x_286;
+    } else {
+      int const x_288 = k;
+      k = (x_288 + 1);
+      int const x_290 = j;
+      j = (x_290 + 1);
+      int const x_293 = (*(tint_symbol_5)).arr[x_290];
+      (*(tint_symbol_6)).arr[x_288] = x_293;
+    }
+  }
+  while (true) {
+    int const x_299 = i;
+    int const x_301 = i;
+    int const x_302 = *(mid);
+    if (((x_299 < 10) && (x_301 <= x_302))) {
+    } else {
+      break;
+    }
+    int const x_306 = k;
+    k = (x_306 + 1);
+    int const x_308 = i;
+    i = (x_308 + 1);
+    int const x_311 = (*(tint_symbol_5)).arr[x_308];
+    (*(tint_symbol_6)).arr[x_306] = x_311;
+  }
+  int const x_313 = *(from);
+  i_1 = x_313;
+  while (true) {
+    int const x_318 = i_1;
+    int const x_319 = *(to);
+    if ((x_318 <= x_319)) {
+    } else {
+      break;
+    }
+    int const x_322 = i_1;
+    int const x_323 = i_1;
+    int const x_325 = (*(tint_symbol_6)).arr[x_323];
+    (*(tint_symbol_5)).arr[x_322] = x_325;
+    {
+      int const x_327 = i_1;
+      i_1 = (x_327 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_334 = m;
+    int const x_335 = high;
+    if ((x_334 <= x_335)) {
+    } else {
+      break;
+    }
+    int const x_338 = low;
+    i_2 = x_338;
+    while (true) {
+      int const x_343 = i_2;
+      int const x_344 = high;
+      if ((x_343 < x_344)) {
+      } else {
+        break;
+      }
+      int const x_347 = i_2;
+      from_1 = x_347;
+      int const x_348 = i_2;
+      int const x_349 = m;
+      mid_1 = ((x_348 + x_349) - 1);
+      int const x_352 = i_2;
+      int const x_353 = m;
+      int const x_357 = high;
+      to_1 = min(((x_352 + (2 * x_353)) - 1), x_357);
+      int const x_359 = from_1;
+      param = x_359;
+      int const x_360 = mid_1;
+      param_1 = x_360;
+      int const x_361 = to_1;
+      param_2 = x_361;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_363 = m;
+        int const x_365 = i_2;
+        i_2 = (x_365 + (2 * x_363));
+      }
+    }
+    {
+      int const x_367 = m;
+      m = (2 * x_367);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_88 = x_28.injectionSwitch.x;
+  i_3 = int(x_88);
+  while (true) {
+    int const x_94 = i_3;
+    switch(x_94) {
+      case 9: {
+        int const x_124 = i_3;
+        (*(tint_symbol_9)).arr[x_124] = -5;
+        if (true) {
+        } else {
+          {
+            int const x_128 = i_3;
+            if ((x_128 < 10)) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+        break;
+      }
+      case 8: {
+        int const x_122 = i_3;
+        (*(tint_symbol_9)).arr[x_122] = -4;
+        break;
+      }
+      case 7: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -3;
+        break;
+      }
+      case 6: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -2;
+        break;
+      }
+      case 5: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -1;
+        break;
+      }
+      case 4: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = 0;
+        break;
+      }
+      case 3: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = 1;
+        break;
+      }
+      case 2: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 2;
+        break;
+      }
+      case 1: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 3;
+        break;
+      }
+      case 0: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_126 = i_3;
+    i_3 = (x_126 + 1);
+    {
+      int const x_128 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_134 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    int const x_137 = j_1;
+    int const x_138 = j_1;
+    int const x_140 = (*(tint_symbol_9)).arr[x_138];
+    (*(tint_symbol_10)).arr[x_137] = x_140;
+    {
+      int const x_142 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_146 = (*(tint_symbol_11)).y;
+  if ((int(x_146) < 30)) {
+    int const x_153 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    float const x_158 = (*(tint_symbol_11)).y;
+    if ((int(x_158) < 60)) {
+      int const x_165 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      float const x_170 = (*(tint_symbol_11)).y;
+      if ((int(x_170) < 90)) {
+        int const x_177 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        float const x_182 = (*(tint_symbol_11)).y;
+        if ((int(x_182) < 120)) {
+          int const x_189 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          float const x_194 = (*(tint_symbol_11)).y;
+          if ((int(x_194) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_201 = (*(tint_symbol_11)).y;
+            if ((int(x_201) < 180)) {
+              int const x_208 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              float const x_213 = (*(tint_symbol_11)).y;
+              if ((int(x_213) < 210)) {
+                int const x_220 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                float const x_225 = (*(tint_symbol_11)).y;
+                if ((int(x_225) < 240)) {
+                  int const x_232 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  float const x_237 = (*(tint_symbol_11)).y;
+                  if ((int(x_237) < 270)) {
+                    int const x_244 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_248 = grey;
+  float3 const x_249 = float3(x_248, x_248, x_248);
+  *(tint_symbol_12) = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..a382317
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.spvasm
@@ -0,0 +1,668 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 423
+; Schema: 0
+               OpCapability Shader
+        %180 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_32 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %35 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %135 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %204 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+       %true = OpConstantTrue %bool
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %410 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %26
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %33 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %35
+          %i = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+        %i_1 = OpVariable %_ptr_Function_int Function %35
+         %40 = OpLoad %int %from
+               OpStore %k %40
+         %42 = OpLoad %int %from
+               OpStore %i %42
+         %44 = OpLoad %int %mid
+         %46 = OpIAdd %int %44 %int_1
+               OpStore %j %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %int %mid
+         %54 = OpLoad %int %j
+         %56 = OpLoad %int %to
+         %57 = OpSLessThanEqual %bool %51 %53
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+         %61 = OpSLessThanEqual %bool %54 %56
+               OpBranch %59
+         %59 = OpLabel
+         %62 = OpPhi %bool %57 %50 %61 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %48
+         %63 = OpLabel
+         %66 = OpLoad %int %i
+         %68 = OpAccessChain %_ptr_Private_int %data %66
+         %69 = OpLoad %int %68
+         %70 = OpLoad %int %j
+         %71 = OpAccessChain %_ptr_Private_int %data %70
+         %72 = OpLoad %int %71
+         %73 = OpSLessThan %bool %69 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %77 = OpLoad %int %k
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %k %78
+         %79 = OpLoad %int %i
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %i %80
+         %81 = OpAccessChain %_ptr_Private_int %data %79
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Private_int %temp %77
+               OpStore %83 %82
+               OpBranch %74
+         %76 = OpLabel
+         %84 = OpLoad %int %k
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %k %85
+         %86 = OpLoad %int %j
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %j %87
+         %88 = OpAccessChain %_ptr_Private_int %data %86
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Private_int %temp %84
+               OpStore %90 %89
+               OpBranch %74
+         %74 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i
+         %96 = OpLoad %int %i
+         %98 = OpLoad %int %mid
+        %100 = OpSLessThan %bool %95 %int_10
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpSLessThanEqual %bool %96 %98
+               OpBranch %101
+        %101 = OpLabel
+        %104 = OpPhi %bool %100 %94 %103 %102
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %107
+        %106 = OpLabel
+               OpBranch %105
+        %107 = OpLabel
+               OpBranch %92
+        %105 = OpLabel
+        %108 = OpLoad %int %k
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %k %109
+        %110 = OpLoad %int %i
+        %111 = OpIAdd %int %110 %int_1
+               OpStore %i %111
+        %112 = OpAccessChain %_ptr_Private_int %data %110
+        %113 = OpLoad %int %112
+        %114 = OpAccessChain %_ptr_Private_int %temp %108
+               OpStore %114 %113
+               OpBranch %93
+         %93 = OpLabel
+               OpBranch %91
+         %92 = OpLabel
+        %116 = OpLoad %int %from
+               OpStore %i_1 %116
+               OpBranch %117
+        %117 = OpLabel
+               OpLoopMerge %118 %119 None
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpLoad %int %i_1
+        %123 = OpLoad %int %to
+        %124 = OpSLessThanEqual %bool %121 %123
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %127
+        %126 = OpLabel
+               OpBranch %125
+        %127 = OpLabel
+               OpBranch %118
+        %125 = OpLabel
+        %128 = OpLoad %int %i_1
+        %129 = OpLoad %int %i_1
+        %130 = OpAccessChain %_ptr_Private_int %temp %129
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Private_int %data %128
+               OpStore %132 %131
+               OpBranch %119
+        %119 = OpLabel
+        %133 = OpLoad %int %i_1
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %i_1 %134
+               OpBranch %117
+        %118 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %135
+        %137 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %35
+       %high = OpVariable %_ptr_Function_int Function %35
+          %m = OpVariable %_ptr_Function_int Function %35
+        %i_2 = OpVariable %_ptr_Function_int Function %35
+     %from_1 = OpVariable %_ptr_Function_int Function %35
+      %mid_1 = OpVariable %_ptr_Function_int Function %35
+       %to_1 = OpVariable %_ptr_Function_int Function %35
+      %param = OpVariable %_ptr_Function_int Function %35
+    %param_1 = OpVariable %_ptr_Function_int Function %35
+    %param_2 = OpVariable %_ptr_Function_int Function %35
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %154 = OpLoad %int %m
+        %155 = OpLoad %int %high
+        %156 = OpSLessThanEqual %bool %154 %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %151
+        %157 = OpLabel
+        %160 = OpLoad %int %low
+               OpStore %i_2 %160
+               OpBranch %161
+        %161 = OpLabel
+               OpLoopMerge %162 %163 None
+               OpBranch %164
+        %164 = OpLabel
+        %165 = OpLoad %int %i_2
+        %166 = OpLoad %int %high
+        %167 = OpSLessThan %bool %165 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %162
+        %168 = OpLabel
+        %171 = OpLoad %int %i_2
+               OpStore %from_1 %171
+        %172 = OpLoad %int %i_2
+        %173 = OpLoad %int %m
+        %174 = OpIAdd %int %172 %173
+        %175 = OpISub %int %174 %int_1
+               OpStore %mid_1 %175
+        %176 = OpLoad %int %i_2
+        %177 = OpLoad %int %m
+        %178 = OpLoad %int %high
+        %182 = OpIMul %int %int_2 %177
+        %183 = OpIAdd %int %176 %182
+        %184 = OpISub %int %183 %int_1
+        %179 = OpExtInst %int %180 SMin %184 %178
+               OpStore %to_1 %179
+        %185 = OpLoad %int %from_1
+               OpStore %param %185
+        %186 = OpLoad %int %mid_1
+               OpStore %param_1 %186
+        %187 = OpLoad %int %to_1
+               OpStore %param_2 %187
+        %188 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %163
+        %163 = OpLabel
+        %192 = OpLoad %int %m
+        %193 = OpLoad %int %i_2
+        %194 = OpIMul %int %int_2 %192
+        %195 = OpIAdd %int %193 %194
+               OpStore %i_2 %195
+               OpBranch %161
+        %162 = OpLabel
+               OpBranch %152
+        %152 = OpLabel
+        %196 = OpLoad %int %m
+        %197 = OpIMul %int %int_2 %196
+               OpStore %m %197
+               OpBranch %150
+        %151 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %135
+        %199 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %35
+        %j_1 = OpVariable %_ptr_Function_int Function %35
+       %grey = OpVariable %_ptr_Function_float Function %204
+        %207 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %208 = OpLoad %float %207
+        %209 = OpConvertFToS %int %208
+               OpStore %i_3 %209
+               OpBranch %210
+        %210 = OpLabel
+               OpLoopMerge %211 %212 None
+               OpBranch %213
+        %213 = OpLabel
+        %214 = OpLoad %int %i_3
+               OpSelectionMerge %215 None
+               OpSwitch %214 %216 9 %217 8 %218 7 %219 6 %220 5 %221 4 %222 3 %223 2 %224 1 %225 0 %226
+        %217 = OpLabel
+        %227 = OpLoad %int %i_3
+        %228 = OpAccessChain %_ptr_Private_int %data %227
+               OpStore %228 %int_n5
+               OpSelectionMerge %231 None
+               OpBranchConditional %true %232 %233
+        %232 = OpLabel
+               OpBranch %231
+        %233 = OpLabel
+               OpBranch %212
+        %231 = OpLabel
+               OpBranch %215
+        %218 = OpLabel
+        %234 = OpLoad %int %i_3
+        %235 = OpAccessChain %_ptr_Private_int %data %234
+               OpStore %235 %int_n4
+               OpBranch %215
+        %219 = OpLabel
+        %237 = OpLoad %int %i_3
+        %238 = OpAccessChain %_ptr_Private_int %data %237
+               OpStore %238 %int_n3
+               OpBranch %215
+        %220 = OpLabel
+        %240 = OpLoad %int %i_3
+        %241 = OpAccessChain %_ptr_Private_int %data %240
+               OpStore %241 %int_n2
+               OpBranch %215
+        %221 = OpLabel
+        %243 = OpLoad %int %i_3
+        %244 = OpAccessChain %_ptr_Private_int %data %243
+               OpStore %244 %int_n1
+               OpBranch %215
+        %222 = OpLabel
+        %246 = OpLoad %int %i_3
+        %247 = OpAccessChain %_ptr_Private_int %data %246
+               OpStore %247 %int_0
+               OpBranch %215
+        %223 = OpLabel
+        %248 = OpLoad %int %i_3
+        %249 = OpAccessChain %_ptr_Private_int %data %248
+               OpStore %249 %int_1
+               OpBranch %215
+        %224 = OpLabel
+        %250 = OpLoad %int %i_3
+        %251 = OpAccessChain %_ptr_Private_int %data %250
+               OpStore %251 %int_2
+               OpBranch %215
+        %225 = OpLabel
+        %252 = OpLoad %int %i_3
+        %253 = OpAccessChain %_ptr_Private_int %data %252
+               OpStore %253 %int_3
+               OpBranch %215
+        %226 = OpLabel
+        %255 = OpLoad %int %i_3
+        %256 = OpAccessChain %_ptr_Private_int %data %255
+               OpStore %256 %int_4
+               OpBranch %215
+        %216 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %258 = OpLoad %int %i_3
+        %259 = OpIAdd %int %258 %int_1
+               OpStore %i_3 %259
+               OpBranch %212
+        %212 = OpLabel
+        %260 = OpLoad %int %i_3
+        %261 = OpSLessThan %bool %260 %int_10
+               OpSelectionMerge %262 None
+               OpBranchConditional %261 %263 %264
+        %263 = OpLabel
+               OpBranch %262
+        %264 = OpLabel
+               OpBranch %211
+        %262 = OpLabel
+               OpBranch %210
+        %211 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %265
+        %265 = OpLabel
+               OpLoopMerge %266 %267 None
+               OpBranch %268
+        %268 = OpLabel
+        %269 = OpLoad %int %j_1
+        %270 = OpSLessThan %bool %269 %int_10
+               OpSelectionMerge %271 None
+               OpBranchConditional %270 %272 %273
+        %272 = OpLabel
+               OpBranch %271
+        %273 = OpLabel
+               OpBranch %266
+        %271 = OpLabel
+        %274 = OpLoad %int %j_1
+        %275 = OpLoad %int %j_1
+        %276 = OpAccessChain %_ptr_Private_int %data %275
+        %277 = OpLoad %int %276
+        %278 = OpAccessChain %_ptr_Private_int %temp %274
+               OpStore %278 %277
+               OpBranch %267
+        %267 = OpLabel
+        %279 = OpLoad %int %j_1
+        %280 = OpIAdd %int %279 %int_1
+               OpStore %j_1 %280
+               OpBranch %265
+        %266 = OpLabel
+        %281 = OpFunctionCall %void %mergeSort_
+        %284 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %285 = OpLoad %float %284
+        %286 = OpConvertFToS %int %285
+        %288 = OpSLessThan %bool %286 %int_30
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %291
+        %290 = OpLabel
+        %292 = OpAccessChain %_ptr_Private_int %data %int_0
+        %293 = OpLoad %int %292
+        %295 = OpConvertSToF %float %293
+        %297 = OpFDiv %float %295 %float_10
+        %298 = OpFAdd %float %float_0_5 %297
+               OpStore %grey %298
+               OpBranch %289
+        %291 = OpLabel
+        %299 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %300 = OpLoad %float %299
+        %301 = OpConvertFToS %int %300
+        %303 = OpSLessThan %bool %301 %int_60
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %306
+        %305 = OpLabel
+        %307 = OpAccessChain %_ptr_Private_int %data %int_1
+        %308 = OpLoad %int %307
+        %309 = OpConvertSToF %float %308
+        %310 = OpFDiv %float %309 %float_10
+        %311 = OpFAdd %float %float_0_5 %310
+               OpStore %grey %311
+               OpBranch %304
+        %306 = OpLabel
+        %312 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %313 = OpLoad %float %312
+        %314 = OpConvertFToS %int %313
+        %316 = OpSLessThan %bool %314 %int_90
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %319
+        %318 = OpLabel
+        %320 = OpAccessChain %_ptr_Private_int %data %int_2
+        %321 = OpLoad %int %320
+        %322 = OpConvertSToF %float %321
+        %323 = OpFDiv %float %322 %float_10
+        %324 = OpFAdd %float %float_0_5 %323
+               OpStore %grey %324
+               OpBranch %317
+        %319 = OpLabel
+        %325 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %326 = OpLoad %float %325
+        %327 = OpConvertFToS %int %326
+        %329 = OpSLessThan %bool %327 %int_120
+               OpSelectionMerge %330 None
+               OpBranchConditional %329 %331 %332
+        %331 = OpLabel
+        %333 = OpAccessChain %_ptr_Private_int %data %int_3
+        %334 = OpLoad %int %333
+        %335 = OpConvertSToF %float %334
+        %336 = OpFDiv %float %335 %float_10
+        %337 = OpFAdd %float %float_0_5 %336
+               OpStore %grey %337
+               OpBranch %330
+        %332 = OpLabel
+        %338 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %339 = OpLoad %float %338
+        %340 = OpConvertFToS %int %339
+        %342 = OpSLessThan %bool %340 %int_150
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+               OpKill
+        %345 = OpLabel
+        %346 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %347 = OpLoad %float %346
+        %348 = OpConvertFToS %int %347
+        %350 = OpSLessThan %bool %348 %int_180
+               OpSelectionMerge %351 None
+               OpBranchConditional %350 %352 %353
+        %352 = OpLabel
+        %355 = OpAccessChain %_ptr_Private_int %data %int_5
+        %356 = OpLoad %int %355
+        %357 = OpConvertSToF %float %356
+        %358 = OpFDiv %float %357 %float_10
+        %359 = OpFAdd %float %float_0_5 %358
+               OpStore %grey %359
+               OpBranch %351
+        %353 = OpLabel
+        %360 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %361 = OpLoad %float %360
+        %362 = OpConvertFToS %int %361
+        %364 = OpSLessThan %bool %362 %int_210
+               OpSelectionMerge %365 None
+               OpBranchConditional %364 %366 %367
+        %366 = OpLabel
+        %369 = OpAccessChain %_ptr_Private_int %data %int_6
+        %370 = OpLoad %int %369
+        %371 = OpConvertSToF %float %370
+        %372 = OpFDiv %float %371 %float_10
+        %373 = OpFAdd %float %float_0_5 %372
+               OpStore %grey %373
+               OpBranch %365
+        %367 = OpLabel
+        %374 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %375 = OpLoad %float %374
+        %376 = OpConvertFToS %int %375
+        %378 = OpSLessThan %bool %376 %int_240
+               OpSelectionMerge %379 None
+               OpBranchConditional %378 %380 %381
+        %380 = OpLabel
+        %383 = OpAccessChain %_ptr_Private_int %data %int_7
+        %384 = OpLoad %int %383
+        %385 = OpConvertSToF %float %384
+        %386 = OpFDiv %float %385 %float_10
+        %387 = OpFAdd %float %float_0_5 %386
+               OpStore %grey %387
+               OpBranch %379
+        %381 = OpLabel
+        %388 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %389 = OpLoad %float %388
+        %390 = OpConvertFToS %int %389
+        %392 = OpSLessThan %bool %390 %int_270
+               OpSelectionMerge %393 None
+               OpBranchConditional %392 %394 %395
+        %394 = OpLabel
+        %397 = OpAccessChain %_ptr_Private_int %data %int_8
+        %398 = OpLoad %int %397
+        %399 = OpConvertSToF %float %398
+        %400 = OpFDiv %float %399 %float_10
+        %401 = OpFAdd %float %float_0_5 %400
+               OpStore %grey %401
+               OpBranch %393
+        %395 = OpLabel
+               OpKill
+        %393 = OpLabel
+               OpBranch %379
+        %379 = OpLabel
+               OpBranch %365
+        %365 = OpLabel
+               OpBranch %351
+        %351 = OpLabel
+               OpBranch %343
+        %343 = OpLabel
+               OpBranch %330
+        %330 = OpLabel
+               OpBranch %317
+        %317 = OpLabel
+               OpBranch %304
+        %304 = OpLabel
+               OpBranch %289
+        %289 = OpLabel
+        %402 = OpLoad %float %grey
+        %404 = OpCompositeConstruct %v3float %402 %402 %402
+        %405 = OpCompositeExtract %float %404 0
+        %406 = OpCompositeExtract %float %404 1
+        %407 = OpCompositeExtract %float %404 2
+        %409 = OpCompositeConstruct %v4float %405 %406 %407 %float_1
+               OpStore %x_GLF_color %409
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %410
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %414 = OpLabel
+        %415 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %415
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %135
+        %417 = OpLabel
+        %418 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %418
+        %419 = OpFunctionCall %void %main_1
+        %421 = OpLoad %v4float %x_GLF_color
+        %422 = OpCompositeConstruct %main_out %421
+        %420 = OpFunctionCall %void %tint_symbol_3 %422
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 212[%212] is not post dominated by the back-edge block 262[%262]
+  %262 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..b969e06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl.expected.wgsl
@@ -0,0 +1,317 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_255 : i32 = *(from);
+  k = x_255;
+  let x_256 : i32 = *(from);
+  i = x_256;
+  let x_257 : i32 = *(mid);
+  j = (x_257 + 1);
+  loop {
+    let x_263 : i32 = i;
+    let x_264 : i32 = *(mid);
+    let x_266 : i32 = j;
+    let x_267 : i32 = *(to);
+    if (((x_263 <= x_264) && (x_266 <= x_267))) {
+    } else {
+      break;
+    }
+    let x_271 : i32 = i;
+    let x_273 : i32 = data[x_271];
+    let x_274 : i32 = j;
+    let x_276 : i32 = data[x_274];
+    if ((x_273 < x_276)) {
+      let x_281 : i32 = k;
+      k = (x_281 + 1);
+      let x_283 : i32 = i;
+      i = (x_283 + 1);
+      let x_286 : i32 = data[x_283];
+      temp[x_281] = x_286;
+    } else {
+      let x_288 : i32 = k;
+      k = (x_288 + 1);
+      let x_290 : i32 = j;
+      j = (x_290 + 1);
+      let x_293 : i32 = data[x_290];
+      temp[x_288] = x_293;
+    }
+  }
+  loop {
+    let x_299 : i32 = i;
+    let x_301 : i32 = i;
+    let x_302 : i32 = *(mid);
+    if (((x_299 < 10) && (x_301 <= x_302))) {
+    } else {
+      break;
+    }
+    let x_306 : i32 = k;
+    k = (x_306 + 1);
+    let x_308 : i32 = i;
+    i = (x_308 + 1);
+    let x_311 : i32 = data[x_308];
+    temp[x_306] = x_311;
+  }
+  let x_313 : i32 = *(from);
+  i_1 = x_313;
+  loop {
+    let x_318 : i32 = i_1;
+    let x_319 : i32 = *(to);
+    if ((x_318 <= x_319)) {
+    } else {
+      break;
+    }
+    let x_322 : i32 = i_1;
+    let x_323 : i32 = i_1;
+    let x_325 : i32 = temp[x_323];
+    data[x_322] = x_325;
+
+    continuing {
+      let x_327 : i32 = i_1;
+      i_1 = (x_327 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_334 : i32 = m;
+    let x_335 : i32 = high;
+    if ((x_334 <= x_335)) {
+    } else {
+      break;
+    }
+    let x_338 : i32 = low;
+    i_2 = x_338;
+    loop {
+      let x_343 : i32 = i_2;
+      let x_344 : i32 = high;
+      if ((x_343 < x_344)) {
+      } else {
+        break;
+      }
+      let x_347 : i32 = i_2;
+      from_1 = x_347;
+      let x_348 : i32 = i_2;
+      let x_349 : i32 = m;
+      mid_1 = ((x_348 + x_349) - 1);
+      let x_352 : i32 = i_2;
+      let x_353 : i32 = m;
+      let x_357 : i32 = high;
+      to_1 = min(((x_352 + (2 * x_353)) - 1), x_357);
+      let x_359 : i32 = from_1;
+      param = x_359;
+      let x_360 : i32 = mid_1;
+      param_1 = x_360;
+      let x_361 : i32 = to_1;
+      param_2 = x_361;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_363 : i32 = m;
+        let x_365 : i32 = i_2;
+        i_2 = (x_365 + (2 * x_363));
+      }
+    }
+
+    continuing {
+      let x_367 : i32 = m;
+      m = (2 * x_367);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_88 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_88);
+  loop {
+    let x_94 : i32 = i_3;
+    switch(x_94) {
+      case 9: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -5;
+        if (true) {
+        } else {
+          continue;
+        }
+      }
+      case 8: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -4;
+      }
+      case 7: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -3;
+      }
+      case 6: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -2;
+      }
+      case 5: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -1;
+      }
+      case 4: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 0;
+      }
+      case 3: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 1;
+      }
+      case 2: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 2;
+      }
+      case 1: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 3;
+      }
+      case 0: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 4;
+      }
+      default: {
+      }
+    }
+    let x_126 : i32 = i_3;
+    i_3 = (x_126 + 1);
+
+    continuing {
+      let x_128 : i32 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_134 : i32 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    let x_137 : i32 = j_1;
+    let x_138 : i32 = j_1;
+    let x_140 : i32 = data[x_138];
+    temp[x_137] = x_140;
+
+    continuing {
+      let x_142 : i32 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_();
+  let x_146 : f32 = gl_FragCoord.y;
+  if ((i32(x_146) < 30)) {
+    let x_153 : i32 = data[0];
+    grey = (0.5 + (f32(x_153) / 10.0));
+  } else {
+    let x_158 : f32 = gl_FragCoord.y;
+    if ((i32(x_158) < 60)) {
+      let x_165 : i32 = data[1];
+      grey = (0.5 + (f32(x_165) / 10.0));
+    } else {
+      let x_170 : f32 = gl_FragCoord.y;
+      if ((i32(x_170) < 90)) {
+        let x_177 : i32 = data[2];
+        grey = (0.5 + (f32(x_177) / 10.0));
+      } else {
+        let x_182 : f32 = gl_FragCoord.y;
+        if ((i32(x_182) < 120)) {
+          let x_189 : i32 = data[3];
+          grey = (0.5 + (f32(x_189) / 10.0));
+        } else {
+          let x_194 : f32 = gl_FragCoord.y;
+          if ((i32(x_194) < 150)) {
+            discard;
+          } else {
+            let x_201 : f32 = gl_FragCoord.y;
+            if ((i32(x_201) < 180)) {
+              let x_208 : i32 = data[5];
+              grey = (0.5 + (f32(x_208) / 10.0));
+            } else {
+              let x_213 : f32 = gl_FragCoord.y;
+              if ((i32(x_213) < 210)) {
+                let x_220 : i32 = data[6];
+                grey = (0.5 + (f32(x_220) / 10.0));
+              } else {
+                let x_225 : f32 = gl_FragCoord.y;
+                if ((i32(x_225) < 240)) {
+                  let x_232 : i32 = data[7];
+                  grey = (0.5 + (f32(x_232) / 10.0));
+                } else {
+                  let x_237 : f32 = gl_FragCoord.y;
+                  if ((i32(x_237) < 270)) {
+                    let x_244 : i32 = data[8];
+                    grey = (0.5 + (f32(x_244) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_248 : f32 = grey;
+  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
+  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm
new file mode 100644
index 0000000..9da572b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm
@@ -0,0 +1,177 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %_ ""
+               OpName %data "data"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_10 = OpConstant %int 10
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+     %uint_0 = OpConstant %uint 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_5 = OpConstant %int 5
+    %float_1 = OpConstant %float 1
+  %float_0_5 = OpConstant %float 0.5
+%float_0_100000001 = OpConstant %float 0.100000001
+       %main = OpFunction %void None %11
+         %38 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpPhi %int %int_0 %38 %41 %42
+         %43 = OpSLessThan %bool %40 %int_10
+               OpLoopMerge %44 %42 None
+               OpBranchConditional %43 %42 %44
+         %42 = OpLabel
+         %45 = OpISub %int %int_10 %40
+         %46 = OpConvertSToF %float %45
+         %47 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %48 = OpLoad %float %47
+         %49 = OpFMul %float %46 %48
+         %50 = OpAccessChain %_ptr_Function_float %data %40
+               OpStore %50 %49
+         %41 = OpIAdd %int %40 %int_1
+               OpBranch %39
+         %44 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpPhi %int %int_0 %44 %53 %54
+         %55 = OpSLessThan %bool %52 %int_9
+               OpLoopMerge %56 %54 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpPhi %int %int_0 %57 %60 %61
+         %62 = OpSLessThan %bool %59 %int_10
+               OpLoopMerge %63 %61 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+         %65 = OpIAdd %int %52 %int_1
+         %66 = OpSLessThan %bool %59 %65
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %67
+         %68 = OpLabel
+               OpBranch %61
+         %67 = OpLabel
+         %69 = OpAccessChain %_ptr_Function_float %data %52
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Function_float %data %59
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %74 = OpLoad %float %73
+         %75 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %76 = OpLoad %float %75
+         %77 = OpFMul %float %76 %float_0_5
+         %78 = OpFOrdLessThan %bool %74 %77
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+         %82 = OpFOrdGreaterThan %bool %70 %72
+               OpBranch %79
+         %81 = OpLabel
+         %83 = OpFOrdLessThan %bool %70 %72
+               OpBranch %79
+         %79 = OpLabel
+         %84 = OpPhi %bool %82 %80 %83 %81
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpLoad %float %69
+         %88 = OpLoad %float %71
+               OpStore %69 %88
+               OpStore %71 %87
+               OpBranch %85
+         %85 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+         %60 = OpIAdd %int %59 %int_1
+               OpBranch %58
+         %63 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %53 = OpIAdd %int %52 %int_1
+               OpBranch %51
+         %56 = OpLabel
+         %89 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %92 = OpLoad %float %91
+         %93 = OpFMul %float %92 %float_0_5
+         %94 = OpFOrdLessThan %bool %90 %93
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+         %98 = OpAccessChain %_ptr_Function_float %data %int_0
+         %99 = OpLoad %float %98
+        %100 = OpFMul %float %99 %float_0_100000001
+        %101 = OpAccessChain %_ptr_Function_float %data %int_5
+        %102 = OpLoad %float %101
+        %103 = OpFMul %float %102 %float_0_100000001
+        %104 = OpAccessChain %_ptr_Function_float %data %int_9
+        %105 = OpLoad %float %104
+        %106 = OpFMul %float %105 %float_0_100000001
+        %107 = OpCompositeConstruct %v4float %100 %103 %106 %float_1
+               OpStore %_GLF_color %107
+               OpBranch %95
+         %97 = OpLabel
+        %108 = OpAccessChain %_ptr_Function_float %data %int_5
+        %109 = OpLoad %float %108
+        %110 = OpFMul %float %109 %float_0_100000001
+        %111 = OpAccessChain %_ptr_Function_float %data %int_9
+        %112 = OpLoad %float %111
+        %113 = OpFMul %float %112 %float_0_100000001
+        %114 = OpAccessChain %_ptr_Function_float %data %int_0
+        %115 = OpLoad %float %114
+        %116 = OpFMul %float %115 %float_0_100000001
+        %117 = OpCompositeConstruct %v4float %110 %113 %116 %float_1
+               OpStore %_GLF_color %117
+               OpBranch %95
+         %95 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..059390e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.hlsl
@@ -0,0 +1,118 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float data[10] = (float[10])0;
+  int x_40_phi = 0;
+  int x_52_phi = 0;
+  x_40_phi = 0;
+  while (true) {
+    int x_41 = 0;
+    const int x_40 = x_40_phi;
+    if ((x_40 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const float x_48 = asfloat(x_9[0].y);
+      data[x_40] = (float((10 - x_40)) * x_48);
+      x_41 = (x_40 + 1);
+      x_40_phi = x_41;
+    }
+  }
+  x_52_phi = 0;
+  while (true) {
+    int x_53 = 0;
+    int x_59_phi = 0;
+    const int x_52 = x_52_phi;
+    if ((x_52 < 9)) {
+    } else {
+      break;
+    }
+    x_59_phi = 0;
+    while (true) {
+      bool x_82 = false;
+      bool x_83 = false;
+      int x_60 = 0;
+      bool x_84_phi = false;
+      const int x_59 = x_59_phi;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_59 < (x_52 + 1))) {
+        {
+          x_60 = (x_59 + 1);
+          x_59_phi = x_60;
+        }
+        continue;
+      }
+      const int x_69_save = x_52;
+      const float x_70 = data[x_69_save];
+      const int x_71_save = x_59;
+      const float x_72 = data[x_71_save];
+      const float x_74 = gl_FragCoord.y;
+      const float x_76 = asfloat(x_6[0].y);
+      if ((x_74 < (x_76 * 0.5f))) {
+        x_82 = (x_70 > x_72);
+        x_84_phi = x_82;
+      } else {
+        x_83 = (x_70 < x_72);
+        x_84_phi = x_83;
+      }
+      if (x_84_phi) {
+        const float x_87 = data[x_69_save];
+        const float x_88 = data[x_71_save];
+        data[x_69_save] = x_88;
+        data[x_71_save] = x_87;
+      }
+      {
+        x_60 = (x_59 + 1);
+        x_59_phi = x_60;
+      }
+    }
+    {
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  const float x_90 = gl_FragCoord.x;
+  const float x_92 = asfloat(x_6[0].x);
+  if ((x_90 < (x_92 * 0.5f))) {
+    const float x_99 = data[0];
+    const float x_102 = data[5];
+    const float x_105 = data[9];
+    x_GLF_color = float4((x_99 * 0.100000001f), (x_102 * 0.100000001f), (x_105 * 0.100000001f), 1.0f);
+  } else {
+    const float x_109 = data[5];
+    const float x_112 = data[9];
+    const float x_115 = data[0];
+    x_GLF_color = float4((x_109 * 0.100000001f), (x_112 * 0.100000001f), (x_115 * 0.100000001f), 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.msl
new file mode 100644
index 0000000..45769f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.msl
@@ -0,0 +1,121 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, constant buf1& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  tint_array_wrapper data = {};
+  int x_40_phi = 0;
+  int x_52_phi = 0;
+  x_40_phi = 0;
+  while (true) {
+    int x_41 = 0;
+    int const x_40 = x_40_phi;
+    if ((x_40 < 10)) {
+    } else {
+      break;
+    }
+    {
+      float const x_48 = x_9.injectionSwitch.y;
+      data.arr[x_40] = (float((10 - x_40)) * x_48);
+      x_41 = (x_40 + 1);
+      x_40_phi = x_41;
+    }
+  }
+  x_52_phi = 0;
+  while (true) {
+    int x_53 = 0;
+    int x_59_phi = 0;
+    int const x_52 = x_52_phi;
+    if ((x_52 < 9)) {
+    } else {
+      break;
+    }
+    x_59_phi = 0;
+    while (true) {
+      bool x_82 = false;
+      bool x_83 = false;
+      int x_60 = 0;
+      bool x_84_phi = false;
+      int const x_59 = x_59_phi;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_59 < (x_52 + 1))) {
+        {
+          x_60 = (x_59 + 1);
+          x_59_phi = x_60;
+        }
+        continue;
+      }
+      int const x_69_save = x_52;
+      float const x_70 = data.arr[x_69_save];
+      int const x_71_save = x_59;
+      float const x_72 = data.arr[x_71_save];
+      float const x_74 = (*(tint_symbol_5)).y;
+      float const x_76 = x_6.resolution.y;
+      if ((x_74 < (x_76 * 0.5f))) {
+        x_82 = (x_70 > x_72);
+        x_84_phi = x_82;
+      } else {
+        x_83 = (x_70 < x_72);
+        x_84_phi = x_83;
+      }
+      bool const x_84 = x_84_phi;
+      if (x_84) {
+        float const x_87 = data.arr[x_69_save];
+        float const x_88 = data.arr[x_71_save];
+        data.arr[x_69_save] = x_88;
+        data.arr[x_71_save] = x_87;
+      }
+      {
+        x_60 = (x_59 + 1);
+        x_59_phi = x_60;
+      }
+    }
+    {
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  float const x_90 = (*(tint_symbol_5)).x;
+  float const x_92 = x_6.resolution.x;
+  if ((x_90 < (x_92 * 0.5f))) {
+    float const x_99 = data.arr[0];
+    float const x_102 = data.arr[5];
+    float const x_105 = data.arr[9];
+    *(tint_symbol_6) = float4((x_99 * 0.100000001f), (x_102 * 0.100000001f), (x_105 * 0.100000001f), 1.0f);
+  } else {
+    float const x_109 = data.arr[5];
+    float const x_112 = data.arr[9];
+    float const x_115 = data.arr[0];
+    *(tint_symbol_6) = float4((x_109 * 0.100000001f), (x_112 * 0.100000001f), (x_115 * 0.100000001f), 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]], constant buf1& x_6 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..43b700f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.spvasm
@@ -0,0 +1,282 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 167
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_52_phi "x_52_phi"
+               OpName %x_41 "x_41"
+               OpName %x_53 "x_53"
+               OpName %x_59_phi "x_59_phi"
+               OpName %x_82 "x_82"
+               OpName %x_83 "x_83"
+               OpName %x_60 "x_60"
+               OpName %x_84_phi "x_84_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %27 = OpConstantNull %_arr_float_uint_10
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %77 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_0_5 = OpConstant %float 0.5
+      %int_5 = OpConstant %int 5
+%float_0_100000001 = OpConstant %float 0.100000001
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %154 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %27
+   %x_40_phi = OpVariable %_ptr_Function_int Function %31
+   %x_52_phi = OpVariable %_ptr_Function_int Function %31
+       %x_41 = OpVariable %_ptr_Function_int Function %31
+       %x_53 = OpVariable %_ptr_Function_int Function %31
+   %x_59_phi = OpVariable %_ptr_Function_int Function %31
+       %x_82 = OpVariable %_ptr_Function_bool Function %77
+       %x_83 = OpVariable %_ptr_Function_bool Function %77
+       %x_60 = OpVariable %_ptr_Function_int Function %31
+   %x_84_phi = OpVariable %_ptr_Function_bool Function %77
+               OpStore %x_40_phi %int_0
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %39 = OpLoad %int %x_40_phi
+         %41 = OpSLessThan %bool %39 %int_10
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %35
+         %43 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Function_float %data %39
+         %54 = OpISub %int %int_10 %39
+         %53 = OpConvertSToF %float %54
+         %55 = OpFMul %float %53 %50
+               OpStore %52 %55
+         %57 = OpIAdd %int %39 %int_1
+               OpStore %x_41 %57
+         %58 = OpLoad %int %x_41
+               OpStore %x_40_phi %58
+               OpBranch %34
+         %35 = OpLabel
+               OpStore %x_52_phi %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %65 = OpLoad %int %x_52_phi
+         %67 = OpSLessThan %bool %65 %int_9
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %60
+         %68 = OpLabel
+               OpStore %x_59_phi %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %81 = OpLoad %int %x_59_phi
+         %82 = OpSLessThan %bool %81 %int_10
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %72
+         %83 = OpLabel
+         %86 = OpIAdd %int %65 %int_1
+         %87 = OpSLessThan %bool %81 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpBranch %73
+         %88 = OpLabel
+         %90 = OpAccessChain %_ptr_Function_float %data %65
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Function_float %data %81
+         %93 = OpLoad %float %92
+         %95 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %98 = OpLoad %float %97
+        %100 = OpFMul %float %98 %float_0_5
+        %101 = OpFOrdLessThan %bool %96 %100
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+        %105 = OpFOrdGreaterThan %bool %91 %93
+               OpStore %x_82 %105
+        %106 = OpLoad %bool %x_82
+               OpStore %x_84_phi %106
+               OpBranch %102
+        %104 = OpLabel
+        %107 = OpFOrdLessThan %bool %91 %93
+               OpStore %x_83 %107
+        %108 = OpLoad %bool %x_83
+               OpStore %x_84_phi %108
+               OpBranch %102
+        %102 = OpLabel
+        %109 = OpLoad %bool %x_84_phi
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpAccessChain %_ptr_Function_float %data %65
+        %113 = OpLoad %float %112
+        %114 = OpAccessChain %_ptr_Function_float %data %81
+        %115 = OpLoad %float %114
+        %116 = OpAccessChain %_ptr_Function_float %data %65
+               OpStore %116 %115
+        %117 = OpAccessChain %_ptr_Function_float %data %81
+               OpStore %117 %113
+               OpBranch %110
+        %110 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+        %118 = OpIAdd %int %81 %int_1
+               OpStore %x_60 %118
+        %119 = OpLoad %int %x_60
+               OpStore %x_59_phi %119
+               OpBranch %71
+         %72 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+        %120 = OpIAdd %int %65 %int_1
+               OpStore %x_53 %120
+        %121 = OpLoad %int %x_53
+               OpStore %x_52_phi %121
+               OpBranch %59
+         %60 = OpLabel
+        %122 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpFMul %float %125 %float_0_5
+        %127 = OpFOrdLessThan %bool %123 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+        %131 = OpAccessChain %_ptr_Function_float %data %int_0
+        %132 = OpLoad %float %131
+        %134 = OpAccessChain %_ptr_Function_float %data %int_5
+        %135 = OpLoad %float %134
+        %136 = OpAccessChain %_ptr_Function_float %data %int_9
+        %137 = OpLoad %float %136
+        %139 = OpFMul %float %132 %float_0_100000001
+        %140 = OpFMul %float %135 %float_0_100000001
+        %141 = OpFMul %float %137 %float_0_100000001
+        %143 = OpCompositeConstruct %v4float %139 %140 %141 %float_1
+               OpStore %x_GLF_color %143
+               OpBranch %128
+        %130 = OpLabel
+        %144 = OpAccessChain %_ptr_Function_float %data %int_5
+        %145 = OpLoad %float %144
+        %146 = OpAccessChain %_ptr_Function_float %data %int_9
+        %147 = OpLoad %float %146
+        %148 = OpAccessChain %_ptr_Function_float %data %int_0
+        %149 = OpLoad %float %148
+        %150 = OpFMul %float %145 %float_0_100000001
+        %151 = OpFMul %float %147 %float_0_100000001
+        %152 = OpFMul %float %149 %float_0_100000001
+        %153 = OpCompositeConstruct %v4float %150 %151 %152 %float_1
+               OpStore %x_GLF_color %153
+               OpBranch %128
+        %128 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %154
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %158 = OpLabel
+        %159 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %159
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %161 = OpLabel
+        %162 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %162
+        %163 = OpFunctionCall %void %main_1
+        %165 = OpLoad %v4float %x_GLF_color
+        %166 = OpCompositeConstruct %main_out %165
+        %164 = OpFunctionCall %void %tint_symbol_3 %166
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..819f07b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.spvasm.expected.wgsl
@@ -0,0 +1,120 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 10>;
+  var x_40_phi : i32;
+  var x_52_phi : i32;
+  x_40_phi = 0;
+  loop {
+    var x_41 : i32;
+    let x_40 : i32 = x_40_phi;
+    if ((x_40 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_48 : f32 = x_9.injectionSwitch.y;
+      data[x_40] = (f32((10 - x_40)) * x_48);
+      x_41 = (x_40 + 1);
+      x_40_phi = x_41;
+    }
+  }
+  x_52_phi = 0;
+  loop {
+    var x_53 : i32;
+    var x_59_phi : i32;
+    let x_52 : i32 = x_52_phi;
+    if ((x_52 < 9)) {
+    } else {
+      break;
+    }
+    x_59_phi = 0;
+    loop {
+      var x_82 : bool;
+      var x_83 : bool;
+      var x_60 : i32;
+      var x_84_phi : bool;
+      let x_59 : i32 = x_59_phi;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_59 < (x_52 + 1))) {
+        continue;
+      }
+      let x_69 : ptr<function, f32> = &(data[x_52]);
+      let x_70 : f32 = *(x_69);
+      let x_71 : ptr<function, f32> = &(data[x_59]);
+      let x_72 : f32 = *(x_71);
+      let x_74 : f32 = gl_FragCoord.y;
+      let x_76 : f32 = x_6.resolution.y;
+      if ((x_74 < (x_76 * 0.5))) {
+        x_82 = (x_70 > x_72);
+        x_84_phi = x_82;
+      } else {
+        x_83 = (x_70 < x_72);
+        x_84_phi = x_83;
+      }
+      let x_84 : bool = x_84_phi;
+      if (x_84) {
+        let x_87 : f32 = *(x_69);
+        let x_88 : f32 = *(x_71);
+        *(x_69) = x_88;
+        *(x_71) = x_87;
+      }
+
+      continuing {
+        x_60 = (x_59 + 1);
+        x_59_phi = x_60;
+      }
+    }
+
+    continuing {
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  let x_90 : f32 = gl_FragCoord.x;
+  let x_92 : f32 = x_6.resolution.x;
+  if ((x_90 < (x_92 * 0.5))) {
+    let x_99 : f32 = data[0];
+    let x_102 : f32 = data[5];
+    let x_105 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_99 * 0.100000001), (x_102 * 0.100000001), (x_105 * 0.100000001), 1.0);
+  } else {
+    let x_109 : f32 = data[5];
+    let x_112 : f32 = data[9];
+    let x_115 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_109 * 0.100000001), (x_112 * 0.100000001), (x_115 * 0.100000001), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
new file mode 100644
index 0000000..819f07b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
@@ -0,0 +1,120 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 10>;
+  var x_40_phi : i32;
+  var x_52_phi : i32;
+  x_40_phi = 0;
+  loop {
+    var x_41 : i32;
+    let x_40 : i32 = x_40_phi;
+    if ((x_40 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_48 : f32 = x_9.injectionSwitch.y;
+      data[x_40] = (f32((10 - x_40)) * x_48);
+      x_41 = (x_40 + 1);
+      x_40_phi = x_41;
+    }
+  }
+  x_52_phi = 0;
+  loop {
+    var x_53 : i32;
+    var x_59_phi : i32;
+    let x_52 : i32 = x_52_phi;
+    if ((x_52 < 9)) {
+    } else {
+      break;
+    }
+    x_59_phi = 0;
+    loop {
+      var x_82 : bool;
+      var x_83 : bool;
+      var x_60 : i32;
+      var x_84_phi : bool;
+      let x_59 : i32 = x_59_phi;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_59 < (x_52 + 1))) {
+        continue;
+      }
+      let x_69 : ptr<function, f32> = &(data[x_52]);
+      let x_70 : f32 = *(x_69);
+      let x_71 : ptr<function, f32> = &(data[x_59]);
+      let x_72 : f32 = *(x_71);
+      let x_74 : f32 = gl_FragCoord.y;
+      let x_76 : f32 = x_6.resolution.y;
+      if ((x_74 < (x_76 * 0.5))) {
+        x_82 = (x_70 > x_72);
+        x_84_phi = x_82;
+      } else {
+        x_83 = (x_70 < x_72);
+        x_84_phi = x_83;
+      }
+      let x_84 : bool = x_84_phi;
+      if (x_84) {
+        let x_87 : f32 = *(x_69);
+        let x_88 : f32 = *(x_71);
+        *(x_69) = x_88;
+        *(x_71) = x_87;
+      }
+
+      continuing {
+        x_60 = (x_59 + 1);
+        x_59_phi = x_60;
+      }
+    }
+
+    continuing {
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  let x_90 : f32 = gl_FragCoord.x;
+  let x_92 : f32 = x_6.resolution.x;
+  if ((x_90 < (x_92 * 0.5))) {
+    let x_99 : f32 = data[0];
+    let x_102 : f32 = data[5];
+    let x_105 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_99 * 0.100000001), (x_102 * 0.100000001), (x_105 * 0.100000001), 1.0);
+  } else {
+    let x_109 : f32 = data[5];
+    let x_112 : f32 = data[9];
+    let x_115 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_109 * 0.100000001), (x_112 * 0.100000001), (x_115 * 0.100000001), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..059390e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.hlsl
@@ -0,0 +1,118 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float data[10] = (float[10])0;
+  int x_40_phi = 0;
+  int x_52_phi = 0;
+  x_40_phi = 0;
+  while (true) {
+    int x_41 = 0;
+    const int x_40 = x_40_phi;
+    if ((x_40 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const float x_48 = asfloat(x_9[0].y);
+      data[x_40] = (float((10 - x_40)) * x_48);
+      x_41 = (x_40 + 1);
+      x_40_phi = x_41;
+    }
+  }
+  x_52_phi = 0;
+  while (true) {
+    int x_53 = 0;
+    int x_59_phi = 0;
+    const int x_52 = x_52_phi;
+    if ((x_52 < 9)) {
+    } else {
+      break;
+    }
+    x_59_phi = 0;
+    while (true) {
+      bool x_82 = false;
+      bool x_83 = false;
+      int x_60 = 0;
+      bool x_84_phi = false;
+      const int x_59 = x_59_phi;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_59 < (x_52 + 1))) {
+        {
+          x_60 = (x_59 + 1);
+          x_59_phi = x_60;
+        }
+        continue;
+      }
+      const int x_69_save = x_52;
+      const float x_70 = data[x_69_save];
+      const int x_71_save = x_59;
+      const float x_72 = data[x_71_save];
+      const float x_74 = gl_FragCoord.y;
+      const float x_76 = asfloat(x_6[0].y);
+      if ((x_74 < (x_76 * 0.5f))) {
+        x_82 = (x_70 > x_72);
+        x_84_phi = x_82;
+      } else {
+        x_83 = (x_70 < x_72);
+        x_84_phi = x_83;
+      }
+      if (x_84_phi) {
+        const float x_87 = data[x_69_save];
+        const float x_88 = data[x_71_save];
+        data[x_69_save] = x_88;
+        data[x_71_save] = x_87;
+      }
+      {
+        x_60 = (x_59 + 1);
+        x_59_phi = x_60;
+      }
+    }
+    {
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  const float x_90 = gl_FragCoord.x;
+  const float x_92 = asfloat(x_6[0].x);
+  if ((x_90 < (x_92 * 0.5f))) {
+    const float x_99 = data[0];
+    const float x_102 = data[5];
+    const float x_105 = data[9];
+    x_GLF_color = float4((x_99 * 0.100000001f), (x_102 * 0.100000001f), (x_105 * 0.100000001f), 1.0f);
+  } else {
+    const float x_109 = data[5];
+    const float x_112 = data[9];
+    const float x_115 = data[0];
+    x_GLF_color = float4((x_109 * 0.100000001f), (x_112 * 0.100000001f), (x_115 * 0.100000001f), 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.msl
new file mode 100644
index 0000000..45769f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.msl
@@ -0,0 +1,121 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, constant buf1& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  tint_array_wrapper data = {};
+  int x_40_phi = 0;
+  int x_52_phi = 0;
+  x_40_phi = 0;
+  while (true) {
+    int x_41 = 0;
+    int const x_40 = x_40_phi;
+    if ((x_40 < 10)) {
+    } else {
+      break;
+    }
+    {
+      float const x_48 = x_9.injectionSwitch.y;
+      data.arr[x_40] = (float((10 - x_40)) * x_48);
+      x_41 = (x_40 + 1);
+      x_40_phi = x_41;
+    }
+  }
+  x_52_phi = 0;
+  while (true) {
+    int x_53 = 0;
+    int x_59_phi = 0;
+    int const x_52 = x_52_phi;
+    if ((x_52 < 9)) {
+    } else {
+      break;
+    }
+    x_59_phi = 0;
+    while (true) {
+      bool x_82 = false;
+      bool x_83 = false;
+      int x_60 = 0;
+      bool x_84_phi = false;
+      int const x_59 = x_59_phi;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_59 < (x_52 + 1))) {
+        {
+          x_60 = (x_59 + 1);
+          x_59_phi = x_60;
+        }
+        continue;
+      }
+      int const x_69_save = x_52;
+      float const x_70 = data.arr[x_69_save];
+      int const x_71_save = x_59;
+      float const x_72 = data.arr[x_71_save];
+      float const x_74 = (*(tint_symbol_5)).y;
+      float const x_76 = x_6.resolution.y;
+      if ((x_74 < (x_76 * 0.5f))) {
+        x_82 = (x_70 > x_72);
+        x_84_phi = x_82;
+      } else {
+        x_83 = (x_70 < x_72);
+        x_84_phi = x_83;
+      }
+      bool const x_84 = x_84_phi;
+      if (x_84) {
+        float const x_87 = data.arr[x_69_save];
+        float const x_88 = data.arr[x_71_save];
+        data.arr[x_69_save] = x_88;
+        data.arr[x_71_save] = x_87;
+      }
+      {
+        x_60 = (x_59 + 1);
+        x_59_phi = x_60;
+      }
+    }
+    {
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  float const x_90 = (*(tint_symbol_5)).x;
+  float const x_92 = x_6.resolution.x;
+  if ((x_90 < (x_92 * 0.5f))) {
+    float const x_99 = data.arr[0];
+    float const x_102 = data.arr[5];
+    float const x_105 = data.arr[9];
+    *(tint_symbol_6) = float4((x_99 * 0.100000001f), (x_102 * 0.100000001f), (x_105 * 0.100000001f), 1.0f);
+  } else {
+    float const x_109 = data.arr[5];
+    float const x_112 = data.arr[9];
+    float const x_115 = data.arr[0];
+    *(tint_symbol_6) = float4((x_109 * 0.100000001f), (x_112 * 0.100000001f), (x_115 * 0.100000001f), 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]], constant buf1& x_6 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..43b700f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.spvasm
@@ -0,0 +1,282 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 167
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %x_40_phi "x_40_phi"
+               OpName %x_52_phi "x_52_phi"
+               OpName %x_41 "x_41"
+               OpName %x_53 "x_53"
+               OpName %x_59_phi "x_59_phi"
+               OpName %x_82 "x_82"
+               OpName %x_83 "x_83"
+               OpName %x_60 "x_60"
+               OpName %x_84_phi "x_84_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %27 = OpConstantNull %_arr_float_uint_10
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %77 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_0_5 = OpConstant %float 0.5
+      %int_5 = OpConstant %int 5
+%float_0_100000001 = OpConstant %float 0.100000001
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %154 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %27
+   %x_40_phi = OpVariable %_ptr_Function_int Function %31
+   %x_52_phi = OpVariable %_ptr_Function_int Function %31
+       %x_41 = OpVariable %_ptr_Function_int Function %31
+       %x_53 = OpVariable %_ptr_Function_int Function %31
+   %x_59_phi = OpVariable %_ptr_Function_int Function %31
+       %x_82 = OpVariable %_ptr_Function_bool Function %77
+       %x_83 = OpVariable %_ptr_Function_bool Function %77
+       %x_60 = OpVariable %_ptr_Function_int Function %31
+   %x_84_phi = OpVariable %_ptr_Function_bool Function %77
+               OpStore %x_40_phi %int_0
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %39 = OpLoad %int %x_40_phi
+         %41 = OpSLessThan %bool %39 %int_10
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %35
+         %43 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Function_float %data %39
+         %54 = OpISub %int %int_10 %39
+         %53 = OpConvertSToF %float %54
+         %55 = OpFMul %float %53 %50
+               OpStore %52 %55
+         %57 = OpIAdd %int %39 %int_1
+               OpStore %x_41 %57
+         %58 = OpLoad %int %x_41
+               OpStore %x_40_phi %58
+               OpBranch %34
+         %35 = OpLabel
+               OpStore %x_52_phi %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %65 = OpLoad %int %x_52_phi
+         %67 = OpSLessThan %bool %65 %int_9
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %60
+         %68 = OpLabel
+               OpStore %x_59_phi %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %81 = OpLoad %int %x_59_phi
+         %82 = OpSLessThan %bool %81 %int_10
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %72
+         %83 = OpLabel
+         %86 = OpIAdd %int %65 %int_1
+         %87 = OpSLessThan %bool %81 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpBranch %73
+         %88 = OpLabel
+         %90 = OpAccessChain %_ptr_Function_float %data %65
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Function_float %data %81
+         %93 = OpLoad %float %92
+         %95 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %98 = OpLoad %float %97
+        %100 = OpFMul %float %98 %float_0_5
+        %101 = OpFOrdLessThan %bool %96 %100
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+        %105 = OpFOrdGreaterThan %bool %91 %93
+               OpStore %x_82 %105
+        %106 = OpLoad %bool %x_82
+               OpStore %x_84_phi %106
+               OpBranch %102
+        %104 = OpLabel
+        %107 = OpFOrdLessThan %bool %91 %93
+               OpStore %x_83 %107
+        %108 = OpLoad %bool %x_83
+               OpStore %x_84_phi %108
+               OpBranch %102
+        %102 = OpLabel
+        %109 = OpLoad %bool %x_84_phi
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpAccessChain %_ptr_Function_float %data %65
+        %113 = OpLoad %float %112
+        %114 = OpAccessChain %_ptr_Function_float %data %81
+        %115 = OpLoad %float %114
+        %116 = OpAccessChain %_ptr_Function_float %data %65
+               OpStore %116 %115
+        %117 = OpAccessChain %_ptr_Function_float %data %81
+               OpStore %117 %113
+               OpBranch %110
+        %110 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+        %118 = OpIAdd %int %81 %int_1
+               OpStore %x_60 %118
+        %119 = OpLoad %int %x_60
+               OpStore %x_59_phi %119
+               OpBranch %71
+         %72 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+        %120 = OpIAdd %int %65 %int_1
+               OpStore %x_53 %120
+        %121 = OpLoad %int %x_53
+               OpStore %x_52_phi %121
+               OpBranch %59
+         %60 = OpLabel
+        %122 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpFMul %float %125 %float_0_5
+        %127 = OpFOrdLessThan %bool %123 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+        %131 = OpAccessChain %_ptr_Function_float %data %int_0
+        %132 = OpLoad %float %131
+        %134 = OpAccessChain %_ptr_Function_float %data %int_5
+        %135 = OpLoad %float %134
+        %136 = OpAccessChain %_ptr_Function_float %data %int_9
+        %137 = OpLoad %float %136
+        %139 = OpFMul %float %132 %float_0_100000001
+        %140 = OpFMul %float %135 %float_0_100000001
+        %141 = OpFMul %float %137 %float_0_100000001
+        %143 = OpCompositeConstruct %v4float %139 %140 %141 %float_1
+               OpStore %x_GLF_color %143
+               OpBranch %128
+        %130 = OpLabel
+        %144 = OpAccessChain %_ptr_Function_float %data %int_5
+        %145 = OpLoad %float %144
+        %146 = OpAccessChain %_ptr_Function_float %data %int_9
+        %147 = OpLoad %float %146
+        %148 = OpAccessChain %_ptr_Function_float %data %int_0
+        %149 = OpLoad %float %148
+        %150 = OpFMul %float %145 %float_0_100000001
+        %151 = OpFMul %float %147 %float_0_100000001
+        %152 = OpFMul %float %149 %float_0_100000001
+        %153 = OpCompositeConstruct %v4float %150 %151 %152 %float_1
+               OpStore %x_GLF_color %153
+               OpBranch %128
+        %128 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %154
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %158 = OpLabel
+        %159 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %159
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %161 = OpLabel
+        %162 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %162
+        %163 = OpFunctionCall %void %main_1
+        %165 = OpLoad %v4float %x_GLF_color
+        %166 = OpCompositeConstruct %main_out %165
+        %164 = OpFunctionCall %void %tint_symbol_3 %166
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..819f07b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl.expected.wgsl
@@ -0,0 +1,120 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 10>;
+  var x_40_phi : i32;
+  var x_52_phi : i32;
+  x_40_phi = 0;
+  loop {
+    var x_41 : i32;
+    let x_40 : i32 = x_40_phi;
+    if ((x_40 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_48 : f32 = x_9.injectionSwitch.y;
+      data[x_40] = (f32((10 - x_40)) * x_48);
+      x_41 = (x_40 + 1);
+      x_40_phi = x_41;
+    }
+  }
+  x_52_phi = 0;
+  loop {
+    var x_53 : i32;
+    var x_59_phi : i32;
+    let x_52 : i32 = x_52_phi;
+    if ((x_52 < 9)) {
+    } else {
+      break;
+    }
+    x_59_phi = 0;
+    loop {
+      var x_82 : bool;
+      var x_83 : bool;
+      var x_60 : i32;
+      var x_84_phi : bool;
+      let x_59 : i32 = x_59_phi;
+      if ((x_59 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_59 < (x_52 + 1))) {
+        continue;
+      }
+      let x_69 : ptr<function, f32> = &(data[x_52]);
+      let x_70 : f32 = *(x_69);
+      let x_71 : ptr<function, f32> = &(data[x_59]);
+      let x_72 : f32 = *(x_71);
+      let x_74 : f32 = gl_FragCoord.y;
+      let x_76 : f32 = x_6.resolution.y;
+      if ((x_74 < (x_76 * 0.5))) {
+        x_82 = (x_70 > x_72);
+        x_84_phi = x_82;
+      } else {
+        x_83 = (x_70 < x_72);
+        x_84_phi = x_83;
+      }
+      let x_84 : bool = x_84_phi;
+      if (x_84) {
+        let x_87 : f32 = *(x_69);
+        let x_88 : f32 = *(x_71);
+        *(x_69) = x_88;
+        *(x_71) = x_87;
+      }
+
+      continuing {
+        x_60 = (x_59 + 1);
+        x_59_phi = x_60;
+      }
+    }
+
+    continuing {
+      x_53 = (x_52 + 1);
+      x_52_phi = x_53;
+    }
+  }
+  let x_90 : f32 = gl_FragCoord.x;
+  let x_92 : f32 = x_6.resolution.x;
+  if ((x_90 < (x_92 * 0.5))) {
+    let x_99 : f32 = data[0];
+    let x_102 : f32 = data[5];
+    let x_105 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_99 * 0.100000001), (x_102 * 0.100000001), (x_105 * 0.100000001), 1.0);
+  } else {
+    let x_109 : f32 = data[5];
+    let x_112 : f32 = data[9];
+    let x_115 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_109 * 0.100000001), (x_112 * 0.100000001), (x_115 * 0.100000001), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm
new file mode 100644
index 0000000..1199569
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm
@@ -0,0 +1,178 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %_ ""
+               OpName %data "data"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_10 = OpConstant %int 10
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+     %uint_0 = OpConstant %uint 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_5 = OpConstant %int 5
+    %float_1 = OpConstant %float 1
+  %float_0_5 = OpConstant %float 0.5
+%float_0_100000001 = OpConstant %float 0.100000001
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %11
+         %39 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpPhi %int %int_0 %39 %42 %43
+         %44 = OpSLessThan %bool %41 %int_10
+               OpLoopMerge %45 %43 None
+               OpBranchConditional %44 %43 %45
+         %43 = OpLabel
+         %46 = OpISub %int %int_10 %41
+         %47 = OpConvertSToF %float %46
+         %48 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %49 = OpLoad %float %48
+         %50 = OpFMul %float %47 %49
+         %51 = OpAccessChain %_ptr_Function_float %data %41
+               OpStore %51 %50
+         %42 = OpIAdd %int %41 %int_1
+               OpBranch %40
+         %45 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpPhi %int %int_0 %45 %54 %55
+         %56 = OpSLessThan %bool %53 %int_9
+               OpLoopMerge %57 %55 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpPhi %int %int_0 %58 %61 %62
+         %63 = OpSLessThan %bool %60 %int_10
+               OpLoopMerge %64 %62 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+         %66 = OpIAdd %int %53 %int_1
+         %67 = OpSLessThan %bool %60 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+               OpBranch %62
+         %68 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %data %53
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Function_float %data %60
+         %73 = OpLoad %float %72
+         %74 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %77 = OpLoad %float %76
+         %78 = OpFMul %float %77 %float_0_5
+         %79 = OpFOrdLessThan %bool %75 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpFOrdGreaterThan %bool %71 %73
+               OpBranch %80
+         %82 = OpLabel
+         %84 = OpFOrdLessThan %bool %71 %73
+               OpBranch %80
+         %80 = OpLabel
+         %85 = OpPhi %bool %83 %81 %84 %82
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpLoad %float %70
+         %89 = OpLoad %float %72
+               OpStore %70 %89
+               OpStore %72 %88
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+         %61 = OpIAdd %int %60 %int_1
+               OpBranch %59
+         %64 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %54 = OpIAdd %int %53 %int_1
+               OpBranch %52
+         %57 = OpLabel
+         %90 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %93 = OpLoad %float %92
+         %94 = OpFMul %float %93 %float_0_5
+         %95 = OpFOrdLessThan %bool %91 %94
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %98
+         %97 = OpLabel
+         %99 = OpAccessChain %_ptr_Function_float %data %int_0
+        %100 = OpLoad %float %99
+        %101 = OpFMul %float %100 %float_0_100000001
+        %102 = OpAccessChain %_ptr_Function_float %data %int_5
+        %103 = OpLoad %float %102
+        %104 = OpFMul %float %103 %float_0_100000001
+        %105 = OpAccessChain %_ptr_Function_float %data %int_9
+        %106 = OpLoad %float %105
+        %107 = OpFMul %float %106 %float_0_100000001
+        %108 = OpCompositeConstruct %v4float %101 %104 %107 %float_1
+               OpStore %_GLF_color %108
+               OpBranch %96
+         %98 = OpLabel
+        %109 = OpAccessChain %_ptr_Function_float %data %int_5
+        %110 = OpLoad %float %109
+        %111 = OpFMul %float %110 %float_0_100000001
+        %112 = OpAccessChain %_ptr_Function_float %data %int_9
+        %113 = OpLoad %float %112
+        %114 = OpFMul %float %113 %float_0_100000001
+        %115 = OpAccessChain %_ptr_Function_float %data %int_0
+        %116 = OpLoad %float %115
+        %117 = OpFMul %float %116 %float_0_100000001
+        %118 = OpCompositeConstruct %v4float %111 %114 %117 %float_1
+               OpStore %_GLF_color %118
+               OpBranchConditional %true %96 %96
+         %96 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..9792c8f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.hlsl
@@ -0,0 +1,118 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float data[10] = (float[10])0;
+  int x_41_phi = 0;
+  int x_53_phi = 0;
+  x_41_phi = 0;
+  while (true) {
+    int x_42 = 0;
+    const int x_41 = x_41_phi;
+    if ((x_41 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const float x_49 = asfloat(x_9[0].y);
+      data[x_41] = (float((10 - x_41)) * x_49);
+      x_42 = (x_41 + 1);
+      x_41_phi = x_42;
+    }
+  }
+  x_53_phi = 0;
+  while (true) {
+    int x_54 = 0;
+    int x_60_phi = 0;
+    const int x_53 = x_53_phi;
+    if ((x_53 < 9)) {
+    } else {
+      break;
+    }
+    x_60_phi = 0;
+    while (true) {
+      bool x_83 = false;
+      bool x_84 = false;
+      int x_61 = 0;
+      bool x_85_phi = false;
+      const int x_60 = x_60_phi;
+      if ((x_60 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_60 < (x_53 + 1))) {
+        {
+          x_61 = (x_60 + 1);
+          x_60_phi = x_61;
+        }
+        continue;
+      }
+      const int x_70_save = x_53;
+      const float x_71 = data[x_70_save];
+      const int x_72_save = x_60;
+      const float x_73 = data[x_72_save];
+      const float x_75 = gl_FragCoord.y;
+      const float x_77 = asfloat(x_6[0].y);
+      if ((x_75 < (x_77 * 0.5f))) {
+        x_83 = (x_71 > x_73);
+        x_85_phi = x_83;
+      } else {
+        x_84 = (x_71 < x_73);
+        x_85_phi = x_84;
+      }
+      if (x_85_phi) {
+        const float x_88 = data[x_70_save];
+        const float x_89 = data[x_72_save];
+        data[x_70_save] = x_89;
+        data[x_72_save] = x_88;
+      }
+      {
+        x_61 = (x_60 + 1);
+        x_60_phi = x_61;
+      }
+    }
+    {
+      x_54 = (x_53 + 1);
+      x_53_phi = x_54;
+    }
+  }
+  const float x_91 = gl_FragCoord.x;
+  const float x_93 = asfloat(x_6[0].x);
+  if ((x_91 < (x_93 * 0.5f))) {
+    const float x_100 = data[0];
+    const float x_103 = data[5];
+    const float x_106 = data[9];
+    x_GLF_color = float4((x_100 * 0.100000001f), (x_103 * 0.100000001f), (x_106 * 0.100000001f), 1.0f);
+  } else {
+    const float x_110 = data[5];
+    const float x_113 = data[9];
+    const float x_116 = data[0];
+    x_GLF_color = float4((x_110 * 0.100000001f), (x_113 * 0.100000001f), (x_116 * 0.100000001f), 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.msl
new file mode 100644
index 0000000..0bcea9e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.msl
@@ -0,0 +1,121 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, constant buf1& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  tint_array_wrapper data = {};
+  int x_41_phi = 0;
+  int x_53_phi = 0;
+  x_41_phi = 0;
+  while (true) {
+    int x_42 = 0;
+    int const x_41 = x_41_phi;
+    if ((x_41 < 10)) {
+    } else {
+      break;
+    }
+    {
+      float const x_49 = x_9.injectionSwitch.y;
+      data.arr[x_41] = (float((10 - x_41)) * x_49);
+      x_42 = (x_41 + 1);
+      x_41_phi = x_42;
+    }
+  }
+  x_53_phi = 0;
+  while (true) {
+    int x_54 = 0;
+    int x_60_phi = 0;
+    int const x_53 = x_53_phi;
+    if ((x_53 < 9)) {
+    } else {
+      break;
+    }
+    x_60_phi = 0;
+    while (true) {
+      bool x_83 = false;
+      bool x_84 = false;
+      int x_61 = 0;
+      bool x_85_phi = false;
+      int const x_60 = x_60_phi;
+      if ((x_60 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_60 < (x_53 + 1))) {
+        {
+          x_61 = (x_60 + 1);
+          x_60_phi = x_61;
+        }
+        continue;
+      }
+      int const x_70_save = x_53;
+      float const x_71 = data.arr[x_70_save];
+      int const x_72_save = x_60;
+      float const x_73 = data.arr[x_72_save];
+      float const x_75 = (*(tint_symbol_5)).y;
+      float const x_77 = x_6.resolution.y;
+      if ((x_75 < (x_77 * 0.5f))) {
+        x_83 = (x_71 > x_73);
+        x_85_phi = x_83;
+      } else {
+        x_84 = (x_71 < x_73);
+        x_85_phi = x_84;
+      }
+      bool const x_85 = x_85_phi;
+      if (x_85) {
+        float const x_88 = data.arr[x_70_save];
+        float const x_89 = data.arr[x_72_save];
+        data.arr[x_70_save] = x_89;
+        data.arr[x_72_save] = x_88;
+      }
+      {
+        x_61 = (x_60 + 1);
+        x_60_phi = x_61;
+      }
+    }
+    {
+      x_54 = (x_53 + 1);
+      x_53_phi = x_54;
+    }
+  }
+  float const x_91 = (*(tint_symbol_5)).x;
+  float const x_93 = x_6.resolution.x;
+  if ((x_91 < (x_93 * 0.5f))) {
+    float const x_100 = data.arr[0];
+    float const x_103 = data.arr[5];
+    float const x_106 = data.arr[9];
+    *(tint_symbol_6) = float4((x_100 * 0.100000001f), (x_103 * 0.100000001f), (x_106 * 0.100000001f), 1.0f);
+  } else {
+    float const x_110 = data.arr[5];
+    float const x_113 = data.arr[9];
+    float const x_116 = data.arr[0];
+    *(tint_symbol_6) = float4((x_110 * 0.100000001f), (x_113 * 0.100000001f), (x_116 * 0.100000001f), 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]], constant buf1& x_6 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..8a60eb4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.spvasm
@@ -0,0 +1,282 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 167
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %x_41_phi "x_41_phi"
+               OpName %x_53_phi "x_53_phi"
+               OpName %x_42 "x_42"
+               OpName %x_54 "x_54"
+               OpName %x_60_phi "x_60_phi"
+               OpName %x_83 "x_83"
+               OpName %x_84 "x_84"
+               OpName %x_61 "x_61"
+               OpName %x_85_phi "x_85_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %27 = OpConstantNull %_arr_float_uint_10
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %77 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_0_5 = OpConstant %float 0.5
+      %int_5 = OpConstant %int 5
+%float_0_100000001 = OpConstant %float 0.100000001
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %154 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %27
+   %x_41_phi = OpVariable %_ptr_Function_int Function %31
+   %x_53_phi = OpVariable %_ptr_Function_int Function %31
+       %x_42 = OpVariable %_ptr_Function_int Function %31
+       %x_54 = OpVariable %_ptr_Function_int Function %31
+   %x_60_phi = OpVariable %_ptr_Function_int Function %31
+       %x_83 = OpVariable %_ptr_Function_bool Function %77
+       %x_84 = OpVariable %_ptr_Function_bool Function %77
+       %x_61 = OpVariable %_ptr_Function_int Function %31
+   %x_85_phi = OpVariable %_ptr_Function_bool Function %77
+               OpStore %x_41_phi %int_0
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %39 = OpLoad %int %x_41_phi
+         %41 = OpSLessThan %bool %39 %int_10
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %35
+         %43 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Function_float %data %39
+         %54 = OpISub %int %int_10 %39
+         %53 = OpConvertSToF %float %54
+         %55 = OpFMul %float %53 %50
+               OpStore %52 %55
+         %57 = OpIAdd %int %39 %int_1
+               OpStore %x_42 %57
+         %58 = OpLoad %int %x_42
+               OpStore %x_41_phi %58
+               OpBranch %34
+         %35 = OpLabel
+               OpStore %x_53_phi %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %65 = OpLoad %int %x_53_phi
+         %67 = OpSLessThan %bool %65 %int_9
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %60
+         %68 = OpLabel
+               OpStore %x_60_phi %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %81 = OpLoad %int %x_60_phi
+         %82 = OpSLessThan %bool %81 %int_10
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %72
+         %83 = OpLabel
+         %86 = OpIAdd %int %65 %int_1
+         %87 = OpSLessThan %bool %81 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpBranch %73
+         %88 = OpLabel
+         %90 = OpAccessChain %_ptr_Function_float %data %65
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Function_float %data %81
+         %93 = OpLoad %float %92
+         %95 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %98 = OpLoad %float %97
+        %100 = OpFMul %float %98 %float_0_5
+        %101 = OpFOrdLessThan %bool %96 %100
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+        %105 = OpFOrdGreaterThan %bool %91 %93
+               OpStore %x_83 %105
+        %106 = OpLoad %bool %x_83
+               OpStore %x_85_phi %106
+               OpBranch %102
+        %104 = OpLabel
+        %107 = OpFOrdLessThan %bool %91 %93
+               OpStore %x_84 %107
+        %108 = OpLoad %bool %x_84
+               OpStore %x_85_phi %108
+               OpBranch %102
+        %102 = OpLabel
+        %109 = OpLoad %bool %x_85_phi
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpAccessChain %_ptr_Function_float %data %65
+        %113 = OpLoad %float %112
+        %114 = OpAccessChain %_ptr_Function_float %data %81
+        %115 = OpLoad %float %114
+        %116 = OpAccessChain %_ptr_Function_float %data %65
+               OpStore %116 %115
+        %117 = OpAccessChain %_ptr_Function_float %data %81
+               OpStore %117 %113
+               OpBranch %110
+        %110 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+        %118 = OpIAdd %int %81 %int_1
+               OpStore %x_61 %118
+        %119 = OpLoad %int %x_61
+               OpStore %x_60_phi %119
+               OpBranch %71
+         %72 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+        %120 = OpIAdd %int %65 %int_1
+               OpStore %x_54 %120
+        %121 = OpLoad %int %x_54
+               OpStore %x_53_phi %121
+               OpBranch %59
+         %60 = OpLabel
+        %122 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpFMul %float %125 %float_0_5
+        %127 = OpFOrdLessThan %bool %123 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+        %131 = OpAccessChain %_ptr_Function_float %data %int_0
+        %132 = OpLoad %float %131
+        %134 = OpAccessChain %_ptr_Function_float %data %int_5
+        %135 = OpLoad %float %134
+        %136 = OpAccessChain %_ptr_Function_float %data %int_9
+        %137 = OpLoad %float %136
+        %139 = OpFMul %float %132 %float_0_100000001
+        %140 = OpFMul %float %135 %float_0_100000001
+        %141 = OpFMul %float %137 %float_0_100000001
+        %143 = OpCompositeConstruct %v4float %139 %140 %141 %float_1
+               OpStore %x_GLF_color %143
+               OpBranch %128
+        %130 = OpLabel
+        %144 = OpAccessChain %_ptr_Function_float %data %int_5
+        %145 = OpLoad %float %144
+        %146 = OpAccessChain %_ptr_Function_float %data %int_9
+        %147 = OpLoad %float %146
+        %148 = OpAccessChain %_ptr_Function_float %data %int_0
+        %149 = OpLoad %float %148
+        %150 = OpFMul %float %145 %float_0_100000001
+        %151 = OpFMul %float %147 %float_0_100000001
+        %152 = OpFMul %float %149 %float_0_100000001
+        %153 = OpCompositeConstruct %v4float %150 %151 %152 %float_1
+               OpStore %x_GLF_color %153
+               OpBranch %128
+        %128 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %154
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %158 = OpLabel
+        %159 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %159
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %161 = OpLabel
+        %162 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %162
+        %163 = OpFunctionCall %void %main_1
+        %165 = OpLoad %v4float %x_GLF_color
+        %166 = OpCompositeConstruct %main_out %165
+        %164 = OpFunctionCall %void %tint_symbol_3 %166
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..aac8d57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.spvasm.expected.wgsl
@@ -0,0 +1,120 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 10>;
+  var x_41_phi : i32;
+  var x_53_phi : i32;
+  x_41_phi = 0;
+  loop {
+    var x_42 : i32;
+    let x_41 : i32 = x_41_phi;
+    if ((x_41 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_49 : f32 = x_9.injectionSwitch.y;
+      data[x_41] = (f32((10 - x_41)) * x_49);
+      x_42 = (x_41 + 1);
+      x_41_phi = x_42;
+    }
+  }
+  x_53_phi = 0;
+  loop {
+    var x_54 : i32;
+    var x_60_phi : i32;
+    let x_53 : i32 = x_53_phi;
+    if ((x_53 < 9)) {
+    } else {
+      break;
+    }
+    x_60_phi = 0;
+    loop {
+      var x_83 : bool;
+      var x_84 : bool;
+      var x_61 : i32;
+      var x_85_phi : bool;
+      let x_60 : i32 = x_60_phi;
+      if ((x_60 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_60 < (x_53 + 1))) {
+        continue;
+      }
+      let x_70 : ptr<function, f32> = &(data[x_53]);
+      let x_71 : f32 = *(x_70);
+      let x_72 : ptr<function, f32> = &(data[x_60]);
+      let x_73 : f32 = *(x_72);
+      let x_75 : f32 = gl_FragCoord.y;
+      let x_77 : f32 = x_6.resolution.y;
+      if ((x_75 < (x_77 * 0.5))) {
+        x_83 = (x_71 > x_73);
+        x_85_phi = x_83;
+      } else {
+        x_84 = (x_71 < x_73);
+        x_85_phi = x_84;
+      }
+      let x_85 : bool = x_85_phi;
+      if (x_85) {
+        let x_88 : f32 = *(x_70);
+        let x_89 : f32 = *(x_72);
+        *(x_70) = x_89;
+        *(x_72) = x_88;
+      }
+
+      continuing {
+        x_61 = (x_60 + 1);
+        x_60_phi = x_61;
+      }
+    }
+
+    continuing {
+      x_54 = (x_53 + 1);
+      x_53_phi = x_54;
+    }
+  }
+  let x_91 : f32 = gl_FragCoord.x;
+  let x_93 : f32 = x_6.resolution.x;
+  if ((x_91 < (x_93 * 0.5))) {
+    let x_100 : f32 = data[0];
+    let x_103 : f32 = data[5];
+    let x_106 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_100 * 0.100000001), (x_103 * 0.100000001), (x_106 * 0.100000001), 1.0);
+  } else {
+    let x_110 : f32 = data[5];
+    let x_113 : f32 = data[9];
+    let x_116 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_110 * 0.100000001), (x_113 * 0.100000001), (x_116 * 0.100000001), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
new file mode 100644
index 0000000..aac8d57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
@@ -0,0 +1,120 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 10>;
+  var x_41_phi : i32;
+  var x_53_phi : i32;
+  x_41_phi = 0;
+  loop {
+    var x_42 : i32;
+    let x_41 : i32 = x_41_phi;
+    if ((x_41 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_49 : f32 = x_9.injectionSwitch.y;
+      data[x_41] = (f32((10 - x_41)) * x_49);
+      x_42 = (x_41 + 1);
+      x_41_phi = x_42;
+    }
+  }
+  x_53_phi = 0;
+  loop {
+    var x_54 : i32;
+    var x_60_phi : i32;
+    let x_53 : i32 = x_53_phi;
+    if ((x_53 < 9)) {
+    } else {
+      break;
+    }
+    x_60_phi = 0;
+    loop {
+      var x_83 : bool;
+      var x_84 : bool;
+      var x_61 : i32;
+      var x_85_phi : bool;
+      let x_60 : i32 = x_60_phi;
+      if ((x_60 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_60 < (x_53 + 1))) {
+        continue;
+      }
+      let x_70 : ptr<function, f32> = &(data[x_53]);
+      let x_71 : f32 = *(x_70);
+      let x_72 : ptr<function, f32> = &(data[x_60]);
+      let x_73 : f32 = *(x_72);
+      let x_75 : f32 = gl_FragCoord.y;
+      let x_77 : f32 = x_6.resolution.y;
+      if ((x_75 < (x_77 * 0.5))) {
+        x_83 = (x_71 > x_73);
+        x_85_phi = x_83;
+      } else {
+        x_84 = (x_71 < x_73);
+        x_85_phi = x_84;
+      }
+      let x_85 : bool = x_85_phi;
+      if (x_85) {
+        let x_88 : f32 = *(x_70);
+        let x_89 : f32 = *(x_72);
+        *(x_70) = x_89;
+        *(x_72) = x_88;
+      }
+
+      continuing {
+        x_61 = (x_60 + 1);
+        x_60_phi = x_61;
+      }
+    }
+
+    continuing {
+      x_54 = (x_53 + 1);
+      x_53_phi = x_54;
+    }
+  }
+  let x_91 : f32 = gl_FragCoord.x;
+  let x_93 : f32 = x_6.resolution.x;
+  if ((x_91 < (x_93 * 0.5))) {
+    let x_100 : f32 = data[0];
+    let x_103 : f32 = data[5];
+    let x_106 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_100 * 0.100000001), (x_103 * 0.100000001), (x_106 * 0.100000001), 1.0);
+  } else {
+    let x_110 : f32 = data[5];
+    let x_113 : f32 = data[9];
+    let x_116 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_110 * 0.100000001), (x_113 * 0.100000001), (x_116 * 0.100000001), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..9792c8f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.hlsl
@@ -0,0 +1,118 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float data[10] = (float[10])0;
+  int x_41_phi = 0;
+  int x_53_phi = 0;
+  x_41_phi = 0;
+  while (true) {
+    int x_42 = 0;
+    const int x_41 = x_41_phi;
+    if ((x_41 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const float x_49 = asfloat(x_9[0].y);
+      data[x_41] = (float((10 - x_41)) * x_49);
+      x_42 = (x_41 + 1);
+      x_41_phi = x_42;
+    }
+  }
+  x_53_phi = 0;
+  while (true) {
+    int x_54 = 0;
+    int x_60_phi = 0;
+    const int x_53 = x_53_phi;
+    if ((x_53 < 9)) {
+    } else {
+      break;
+    }
+    x_60_phi = 0;
+    while (true) {
+      bool x_83 = false;
+      bool x_84 = false;
+      int x_61 = 0;
+      bool x_85_phi = false;
+      const int x_60 = x_60_phi;
+      if ((x_60 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_60 < (x_53 + 1))) {
+        {
+          x_61 = (x_60 + 1);
+          x_60_phi = x_61;
+        }
+        continue;
+      }
+      const int x_70_save = x_53;
+      const float x_71 = data[x_70_save];
+      const int x_72_save = x_60;
+      const float x_73 = data[x_72_save];
+      const float x_75 = gl_FragCoord.y;
+      const float x_77 = asfloat(x_6[0].y);
+      if ((x_75 < (x_77 * 0.5f))) {
+        x_83 = (x_71 > x_73);
+        x_85_phi = x_83;
+      } else {
+        x_84 = (x_71 < x_73);
+        x_85_phi = x_84;
+      }
+      if (x_85_phi) {
+        const float x_88 = data[x_70_save];
+        const float x_89 = data[x_72_save];
+        data[x_70_save] = x_89;
+        data[x_72_save] = x_88;
+      }
+      {
+        x_61 = (x_60 + 1);
+        x_60_phi = x_61;
+      }
+    }
+    {
+      x_54 = (x_53 + 1);
+      x_53_phi = x_54;
+    }
+  }
+  const float x_91 = gl_FragCoord.x;
+  const float x_93 = asfloat(x_6[0].x);
+  if ((x_91 < (x_93 * 0.5f))) {
+    const float x_100 = data[0];
+    const float x_103 = data[5];
+    const float x_106 = data[9];
+    x_GLF_color = float4((x_100 * 0.100000001f), (x_103 * 0.100000001f), (x_106 * 0.100000001f), 1.0f);
+  } else {
+    const float x_110 = data[5];
+    const float x_113 = data[9];
+    const float x_116 = data[0];
+    x_GLF_color = float4((x_110 * 0.100000001f), (x_113 * 0.100000001f), (x_116 * 0.100000001f), 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.msl
new file mode 100644
index 0000000..0bcea9e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.msl
@@ -0,0 +1,121 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, constant buf1& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  tint_array_wrapper data = {};
+  int x_41_phi = 0;
+  int x_53_phi = 0;
+  x_41_phi = 0;
+  while (true) {
+    int x_42 = 0;
+    int const x_41 = x_41_phi;
+    if ((x_41 < 10)) {
+    } else {
+      break;
+    }
+    {
+      float const x_49 = x_9.injectionSwitch.y;
+      data.arr[x_41] = (float((10 - x_41)) * x_49);
+      x_42 = (x_41 + 1);
+      x_41_phi = x_42;
+    }
+  }
+  x_53_phi = 0;
+  while (true) {
+    int x_54 = 0;
+    int x_60_phi = 0;
+    int const x_53 = x_53_phi;
+    if ((x_53 < 9)) {
+    } else {
+      break;
+    }
+    x_60_phi = 0;
+    while (true) {
+      bool x_83 = false;
+      bool x_84 = false;
+      int x_61 = 0;
+      bool x_85_phi = false;
+      int const x_60 = x_60_phi;
+      if ((x_60 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_60 < (x_53 + 1))) {
+        {
+          x_61 = (x_60 + 1);
+          x_60_phi = x_61;
+        }
+        continue;
+      }
+      int const x_70_save = x_53;
+      float const x_71 = data.arr[x_70_save];
+      int const x_72_save = x_60;
+      float const x_73 = data.arr[x_72_save];
+      float const x_75 = (*(tint_symbol_5)).y;
+      float const x_77 = x_6.resolution.y;
+      if ((x_75 < (x_77 * 0.5f))) {
+        x_83 = (x_71 > x_73);
+        x_85_phi = x_83;
+      } else {
+        x_84 = (x_71 < x_73);
+        x_85_phi = x_84;
+      }
+      bool const x_85 = x_85_phi;
+      if (x_85) {
+        float const x_88 = data.arr[x_70_save];
+        float const x_89 = data.arr[x_72_save];
+        data.arr[x_70_save] = x_89;
+        data.arr[x_72_save] = x_88;
+      }
+      {
+        x_61 = (x_60 + 1);
+        x_60_phi = x_61;
+      }
+    }
+    {
+      x_54 = (x_53 + 1);
+      x_53_phi = x_54;
+    }
+  }
+  float const x_91 = (*(tint_symbol_5)).x;
+  float const x_93 = x_6.resolution.x;
+  if ((x_91 < (x_93 * 0.5f))) {
+    float const x_100 = data.arr[0];
+    float const x_103 = data.arr[5];
+    float const x_106 = data.arr[9];
+    *(tint_symbol_6) = float4((x_100 * 0.100000001f), (x_103 * 0.100000001f), (x_106 * 0.100000001f), 1.0f);
+  } else {
+    float const x_110 = data.arr[5];
+    float const x_113 = data.arr[9];
+    float const x_116 = data.arr[0];
+    *(tint_symbol_6) = float4((x_110 * 0.100000001f), (x_113 * 0.100000001f), (x_116 * 0.100000001f), 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]], constant buf1& x_6 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..8a60eb4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.spvasm
@@ -0,0 +1,282 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 167
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %data "data"
+               OpName %x_41_phi "x_41_phi"
+               OpName %x_53_phi "x_53_phi"
+               OpName %x_42 "x_42"
+               OpName %x_54 "x_54"
+               OpName %x_60_phi "x_60_phi"
+               OpName %x_83 "x_83"
+               OpName %x_84 "x_84"
+               OpName %x_61 "x_61"
+               OpName %x_85_phi "x_85_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %27 = OpConstantNull %_arr_float_uint_10
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %31 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %77 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_0_5 = OpConstant %float 0.5
+      %int_5 = OpConstant %int 5
+%float_0_100000001 = OpConstant %float 0.100000001
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %154 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %27
+   %x_41_phi = OpVariable %_ptr_Function_int Function %31
+   %x_53_phi = OpVariable %_ptr_Function_int Function %31
+       %x_42 = OpVariable %_ptr_Function_int Function %31
+       %x_54 = OpVariable %_ptr_Function_int Function %31
+   %x_60_phi = OpVariable %_ptr_Function_int Function %31
+       %x_83 = OpVariable %_ptr_Function_bool Function %77
+       %x_84 = OpVariable %_ptr_Function_bool Function %77
+       %x_61 = OpVariable %_ptr_Function_int Function %31
+   %x_85_phi = OpVariable %_ptr_Function_bool Function %77
+               OpStore %x_41_phi %int_0
+               OpBranch %34
+         %34 = OpLabel
+               OpLoopMerge %35 %36 None
+               OpBranch %37
+         %37 = OpLabel
+         %39 = OpLoad %int %x_41_phi
+         %41 = OpSLessThan %bool %39 %int_10
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %35
+         %43 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Function_float %data %39
+         %54 = OpISub %int %int_10 %39
+         %53 = OpConvertSToF %float %54
+         %55 = OpFMul %float %53 %50
+               OpStore %52 %55
+         %57 = OpIAdd %int %39 %int_1
+               OpStore %x_42 %57
+         %58 = OpLoad %int %x_42
+               OpStore %x_41_phi %58
+               OpBranch %34
+         %35 = OpLabel
+               OpStore %x_53_phi %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %65 = OpLoad %int %x_53_phi
+         %67 = OpSLessThan %bool %65 %int_9
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpBranch %68
+         %70 = OpLabel
+               OpBranch %60
+         %68 = OpLabel
+               OpStore %x_60_phi %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %81 = OpLoad %int %x_60_phi
+         %82 = OpSLessThan %bool %81 %int_10
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %72
+         %83 = OpLabel
+         %86 = OpIAdd %int %65 %int_1
+         %87 = OpSLessThan %bool %81 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpBranch %73
+         %88 = OpLabel
+         %90 = OpAccessChain %_ptr_Function_float %data %65
+         %91 = OpLoad %float %90
+         %92 = OpAccessChain %_ptr_Function_float %data %81
+         %93 = OpLoad %float %92
+         %95 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %96 = OpLoad %float %95
+         %97 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %98 = OpLoad %float %97
+        %100 = OpFMul %float %98 %float_0_5
+        %101 = OpFOrdLessThan %bool %96 %100
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+        %105 = OpFOrdGreaterThan %bool %91 %93
+               OpStore %x_83 %105
+        %106 = OpLoad %bool %x_83
+               OpStore %x_85_phi %106
+               OpBranch %102
+        %104 = OpLabel
+        %107 = OpFOrdLessThan %bool %91 %93
+               OpStore %x_84 %107
+        %108 = OpLoad %bool %x_84
+               OpStore %x_85_phi %108
+               OpBranch %102
+        %102 = OpLabel
+        %109 = OpLoad %bool %x_85_phi
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpAccessChain %_ptr_Function_float %data %65
+        %113 = OpLoad %float %112
+        %114 = OpAccessChain %_ptr_Function_float %data %81
+        %115 = OpLoad %float %114
+        %116 = OpAccessChain %_ptr_Function_float %data %65
+               OpStore %116 %115
+        %117 = OpAccessChain %_ptr_Function_float %data %81
+               OpStore %117 %113
+               OpBranch %110
+        %110 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+        %118 = OpIAdd %int %81 %int_1
+               OpStore %x_61 %118
+        %119 = OpLoad %int %x_61
+               OpStore %x_60_phi %119
+               OpBranch %71
+         %72 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+        %120 = OpIAdd %int %65 %int_1
+               OpStore %x_54 %120
+        %121 = OpLoad %int %x_54
+               OpStore %x_53_phi %121
+               OpBranch %59
+         %60 = OpLabel
+        %122 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpFMul %float %125 %float_0_5
+        %127 = OpFOrdLessThan %bool %123 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %130
+        %129 = OpLabel
+        %131 = OpAccessChain %_ptr_Function_float %data %int_0
+        %132 = OpLoad %float %131
+        %134 = OpAccessChain %_ptr_Function_float %data %int_5
+        %135 = OpLoad %float %134
+        %136 = OpAccessChain %_ptr_Function_float %data %int_9
+        %137 = OpLoad %float %136
+        %139 = OpFMul %float %132 %float_0_100000001
+        %140 = OpFMul %float %135 %float_0_100000001
+        %141 = OpFMul %float %137 %float_0_100000001
+        %143 = OpCompositeConstruct %v4float %139 %140 %141 %float_1
+               OpStore %x_GLF_color %143
+               OpBranch %128
+        %130 = OpLabel
+        %144 = OpAccessChain %_ptr_Function_float %data %int_5
+        %145 = OpLoad %float %144
+        %146 = OpAccessChain %_ptr_Function_float %data %int_9
+        %147 = OpLoad %float %146
+        %148 = OpAccessChain %_ptr_Function_float %data %int_0
+        %149 = OpLoad %float %148
+        %150 = OpFMul %float %145 %float_0_100000001
+        %151 = OpFMul %float %147 %float_0_100000001
+        %152 = OpFMul %float %149 %float_0_100000001
+        %153 = OpCompositeConstruct %v4float %150 %151 %152 %float_1
+               OpStore %x_GLF_color %153
+               OpBranch %128
+        %128 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %154
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %158 = OpLabel
+        %159 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %159
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %161 = OpLabel
+        %162 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %162
+        %163 = OpFunctionCall %void %main_1
+        %165 = OpLoad %v4float %x_GLF_color
+        %166 = OpCompositeConstruct %main_out %165
+        %164 = OpFunctionCall %void %tint_symbol_3 %166
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..aac8d57
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl.expected.wgsl
@@ -0,0 +1,120 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var data : array<f32, 10>;
+  var x_41_phi : i32;
+  var x_53_phi : i32;
+  x_41_phi = 0;
+  loop {
+    var x_42 : i32;
+    let x_41 : i32 = x_41_phi;
+    if ((x_41 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_49 : f32 = x_9.injectionSwitch.y;
+      data[x_41] = (f32((10 - x_41)) * x_49);
+      x_42 = (x_41 + 1);
+      x_41_phi = x_42;
+    }
+  }
+  x_53_phi = 0;
+  loop {
+    var x_54 : i32;
+    var x_60_phi : i32;
+    let x_53 : i32 = x_53_phi;
+    if ((x_53 < 9)) {
+    } else {
+      break;
+    }
+    x_60_phi = 0;
+    loop {
+      var x_83 : bool;
+      var x_84 : bool;
+      var x_61 : i32;
+      var x_85_phi : bool;
+      let x_60 : i32 = x_60_phi;
+      if ((x_60 < 10)) {
+      } else {
+        break;
+      }
+      if ((x_60 < (x_53 + 1))) {
+        continue;
+      }
+      let x_70 : ptr<function, f32> = &(data[x_53]);
+      let x_71 : f32 = *(x_70);
+      let x_72 : ptr<function, f32> = &(data[x_60]);
+      let x_73 : f32 = *(x_72);
+      let x_75 : f32 = gl_FragCoord.y;
+      let x_77 : f32 = x_6.resolution.y;
+      if ((x_75 < (x_77 * 0.5))) {
+        x_83 = (x_71 > x_73);
+        x_85_phi = x_83;
+      } else {
+        x_84 = (x_71 < x_73);
+        x_85_phi = x_84;
+      }
+      let x_85 : bool = x_85_phi;
+      if (x_85) {
+        let x_88 : f32 = *(x_70);
+        let x_89 : f32 = *(x_72);
+        *(x_70) = x_89;
+        *(x_72) = x_88;
+      }
+
+      continuing {
+        x_61 = (x_60 + 1);
+        x_60_phi = x_61;
+      }
+    }
+
+    continuing {
+      x_54 = (x_53 + 1);
+      x_53_phi = x_54;
+    }
+  }
+  let x_91 : f32 = gl_FragCoord.x;
+  let x_93 : f32 = x_6.resolution.x;
+  if ((x_91 < (x_93 * 0.5))) {
+    let x_100 : f32 = data[0];
+    let x_103 : f32 = data[5];
+    let x_106 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_100 * 0.100000001), (x_103 * 0.100000001), (x_106 * 0.100000001), 1.0);
+  } else {
+    let x_110 : f32 = data[5];
+    let x_113 : f32 = data[9];
+    let x_116 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_110 * 0.100000001), (x_113 * 0.100000001), (x_116 * 0.100000001), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm
new file mode 100644
index 0000000..6504342
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm
@@ -0,0 +1,570 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %__0 ""
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %34 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %37 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %true = OpConstantTrue %bool
+  %float_256 = OpConstant %float 256
+       %main = OpFunction %void None %34
+         %87 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %88 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %89 = OpLoad %float %88
+         %90 = OpConvertFToS %int %89
+               OpStore %i_2 %90
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpLoad %int %i_2
+               OpSelectionMerge %96 None
+               OpSwitch %95 %96 0 %97 1 %98 2 %99 3 %100 4 %101 5 %102 6 %103 7 %104 8 %105 9 %106
+         %97 = OpLabel
+        %107 = OpLoad %int %i_2
+        %108 = OpAccessChain %_ptr_Private_int %data %107
+               OpStore %108 %int_4
+               OpBranch %96
+         %98 = OpLabel
+        %109 = OpLoad %int %i_2
+        %110 = OpAccessChain %_ptr_Private_int %data %109
+               OpStore %110 %int_3
+               OpBranch %96
+         %99 = OpLabel
+        %111 = OpLoad %int %i_2
+        %112 = OpAccessChain %_ptr_Private_int %data %111
+               OpStore %112 %int_2
+               OpBranch %96
+        %100 = OpLabel
+        %113 = OpLoad %int %i_2
+        %114 = OpAccessChain %_ptr_Private_int %data %113
+               OpStore %114 %int_1
+               OpBranch %96
+        %101 = OpLabel
+        %115 = OpLoad %int %i_2
+        %116 = OpAccessChain %_ptr_Private_int %data %115
+               OpStore %116 %int_0
+               OpBranch %96
+        %102 = OpLabel
+        %117 = OpLoad %int %i_2
+        %118 = OpAccessChain %_ptr_Private_int %data %117
+               OpStore %118 %int_n1
+               OpBranch %96
+        %103 = OpLabel
+        %119 = OpLoad %int %i_2
+        %120 = OpAccessChain %_ptr_Private_int %data %119
+               OpStore %120 %int_n2
+               OpBranch %96
+        %104 = OpLabel
+        %121 = OpLoad %int %i_2
+        %122 = OpAccessChain %_ptr_Private_int %data %121
+               OpStore %122 %int_n3
+               OpBranch %96
+        %105 = OpLabel
+        %123 = OpLoad %int %i_2
+        %124 = OpAccessChain %_ptr_Private_int %data %123
+               OpStore %124 %int_n4
+               OpBranch %96
+        %106 = OpLabel
+        %125 = OpLoad %int %i_2
+        %126 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %126 %int_n5
+               OpBranch %96
+         %96 = OpLabel
+        %127 = OpLoad %int %i_2
+        %128 = OpIAdd %int %127 %int_1
+               OpStore %i_2 %128
+               OpBranch %93
+         %93 = OpLabel
+        %129 = OpLoad %int %i_2
+        %130 = OpSLessThan %bool %129 %int_10
+               OpBranchConditional %130 %91 %92
+         %92 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %131
+        %131 = OpLabel
+               OpLoopMerge %132 %133 None
+               OpBranch %134
+        %134 = OpLabel
+        %135 = OpLoad %int %j_0
+        %136 = OpSLessThan %bool %135 %int_10
+               OpBranchConditional %136 %137 %132
+        %137 = OpLabel
+        %138 = OpLoad %int %j_0
+        %139 = OpLoad %int %j_0
+        %140 = OpAccessChain %_ptr_Private_int %data %139
+        %141 = OpLoad %int %140
+        %142 = OpAccessChain %_ptr_Private_int %temp %138
+               OpStore %142 %141
+               OpBranch %133
+        %133 = OpLabel
+        %143 = OpLoad %int %j_0
+        %144 = OpIAdd %int %143 %int_1
+               OpStore %j_0 %144
+               OpBranch %131
+        %132 = OpLabel
+        %145 = OpFunctionCall %void %mergeSort_
+        %146 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %147 = OpLoad %float %146
+        %148 = OpConvertFToS %int %147
+        %149 = OpSLessThan %bool %148 %int_30
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %152
+        %151 = OpLabel
+        %153 = OpAccessChain %_ptr_Private_int %data %int_0
+        %154 = OpLoad %int %153
+        %155 = OpConvertSToF %float %154
+        %156 = OpFDiv %float %155 %float_10
+        %157 = OpFAdd %float %float_0_5 %156
+               OpStore %grey %157
+               OpBranch %150
+        %152 = OpLabel
+        %158 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %159 = OpLoad %float %158
+        %160 = OpConvertFToS %int %159
+        %161 = OpSLessThan %bool %160 %int_60
+               OpSelectionMerge %162 None
+               OpBranchConditional %161 %163 %164
+        %163 = OpLabel
+        %165 = OpAccessChain %_ptr_Private_int %data %int_1
+        %166 = OpLoad %int %165
+        %167 = OpConvertSToF %float %166
+        %168 = OpFDiv %float %167 %float_10
+        %169 = OpFAdd %float %float_0_5 %168
+               OpStore %grey %169
+               OpBranch %162
+        %164 = OpLabel
+        %170 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %171 = OpLoad %float %170
+        %172 = OpConvertFToS %int %171
+        %173 = OpSLessThan %bool %172 %int_90
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+        %177 = OpAccessChain %_ptr_Private_int %data %int_2
+        %178 = OpLoad %int %177
+        %179 = OpConvertSToF %float %178
+        %180 = OpFDiv %float %179 %float_10
+        %181 = OpFAdd %float %float_0_5 %180
+               OpStore %grey %181
+               OpBranch %174
+        %176 = OpLabel
+        %182 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %183 = OpLoad %float %182
+        %184 = OpConvertFToS %int %183
+        %185 = OpSLessThan %bool %184 %int_120
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+        %189 = OpAccessChain %_ptr_Private_int %data %int_3
+        %190 = OpLoad %int %189
+        %191 = OpConvertSToF %float %190
+        %192 = OpFDiv %float %191 %float_10
+        %193 = OpFAdd %float %float_0_5 %192
+               OpStore %grey %193
+               OpBranch %186
+        %188 = OpLabel
+        %194 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %195 = OpLoad %float %194
+        %196 = OpConvertFToS %int %195
+        %197 = OpSLessThan %bool %196 %int_150
+               OpSelectionMerge %198 None
+               OpBranchConditional %197 %199 %200
+        %199 = OpLabel
+               OpKill
+        %200 = OpLabel
+        %201 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %202 = OpLoad %float %201
+        %203 = OpConvertFToS %int %202
+        %204 = OpSLessThan %bool %203 %int_180
+               OpSelectionMerge %205 None
+               OpBranchConditional %204 %206 %207
+        %206 = OpLabel
+        %208 = OpAccessChain %_ptr_Private_int %data %int_5
+        %209 = OpLoad %int %208
+        %210 = OpConvertSToF %float %209
+        %211 = OpFDiv %float %210 %float_10
+        %212 = OpFAdd %float %float_0_5 %211
+               OpStore %grey %212
+               OpBranch %205
+        %207 = OpLabel
+        %213 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %214 = OpLoad %float %213
+        %215 = OpConvertFToS %int %214
+        %216 = OpSLessThan %bool %215 %int_210
+               OpSelectionMerge %217 None
+               OpBranchConditional %216 %218 %219
+        %218 = OpLabel
+        %220 = OpAccessChain %_ptr_Private_int %data %int_6
+        %221 = OpLoad %int %220
+        %222 = OpConvertSToF %float %221
+        %223 = OpFDiv %float %222 %float_10
+        %224 = OpFAdd %float %float_0_5 %223
+               OpStore %grey %224
+               OpBranch %217
+        %219 = OpLabel
+        %225 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %226 = OpLoad %float %225
+        %227 = OpConvertFToS %int %226
+        %228 = OpSLessThan %bool %227 %int_240
+               OpSelectionMerge %229 None
+               OpBranchConditional %228 %230 %231
+        %230 = OpLabel
+        %232 = OpAccessChain %_ptr_Private_int %data %int_7
+        %233 = OpLoad %int %232
+        %234 = OpConvertSToF %float %233
+        %235 = OpFDiv %float %234 %float_10
+        %236 = OpFAdd %float %float_0_5 %235
+               OpStore %grey %236
+               OpBranch %229
+        %231 = OpLabel
+        %237 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %238 = OpLoad %float %237
+        %239 = OpConvertFToS %int %238
+        %240 = OpSLessThan %bool %239 %int_270
+               OpSelectionMerge %241 None
+               OpBranchConditional %240 %242 %243
+        %242 = OpLabel
+        %244 = OpAccessChain %_ptr_Private_int %data %int_8
+        %245 = OpLoad %int %244
+        %246 = OpConvertSToF %float %245
+        %247 = OpFDiv %float %246 %float_10
+        %248 = OpFAdd %float %float_0_5 %247
+               OpStore %grey %248
+               OpBranch %241
+        %243 = OpLabel
+               OpKill
+        %241 = OpLabel
+               OpBranch %229
+        %229 = OpLabel
+               OpBranch %217
+        %217 = OpLabel
+               OpBranch %205
+        %205 = OpLabel
+               OpBranch %198
+        %198 = OpLabel
+               OpBranch %186
+        %186 = OpLabel
+               OpBranch %174
+        %174 = OpLabel
+               OpBranch %162
+        %162 = OpLabel
+               OpBranch %150
+        %150 = OpLabel
+        %249 = OpLoad %float %grey
+        %250 = OpCompositeConstruct %v3float %249 %249 %249
+        %251 = OpCompositeExtract %float %250 0
+        %252 = OpCompositeExtract %float %250 1
+        %253 = OpCompositeExtract %float %250 2
+        %254 = OpCompositeConstruct %v4float %251 %252 %253 %float_1
+               OpStore %_GLF_color %254
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %37
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %255 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %256 = OpLoad %int %from
+               OpStore %k %256
+        %257 = OpLoad %int %from
+               OpStore %i %257
+        %258 = OpLoad %int %mid
+        %259 = OpIAdd %int %258 %int_1
+               OpStore %j %259
+               OpBranch %260
+        %260 = OpLabel
+               OpLoopMerge %261 %262 None
+               OpBranch %263
+        %263 = OpLabel
+        %264 = OpLoad %int %i
+        %265 = OpLoad %int %mid
+        %266 = OpSLessThanEqual %bool %264 %265
+        %267 = OpLoad %int %j
+        %268 = OpLoad %int %to
+        %269 = OpSLessThanEqual %bool %267 %268
+        %270 = OpLogicalAnd %bool %266 %269
+               OpBranchConditional %270 %271 %261
+        %271 = OpLabel
+        %272 = OpLoad %int %i
+        %273 = OpAccessChain %_ptr_Private_int %data %272
+        %274 = OpLoad %int %273
+        %275 = OpLoad %int %j
+        %276 = OpAccessChain %_ptr_Private_int %data %275
+        %277 = OpLoad %int %276
+        %278 = OpSLessThan %bool %274 %277
+               OpSelectionMerge %279 None
+               OpBranchConditional %278 %280 %281
+        %280 = OpLabel
+        %282 = OpLoad %int %k
+        %283 = OpIAdd %int %282 %int_1
+               OpStore %k %283
+        %284 = OpLoad %int %i
+        %285 = OpIAdd %int %284 %int_1
+               OpStore %i %285
+        %286 = OpAccessChain %_ptr_Private_int %data %284
+        %287 = OpLoad %int %286
+        %288 = OpAccessChain %_ptr_Private_int %temp %282
+               OpStore %288 %287
+               OpBranch %279
+        %281 = OpLabel
+        %289 = OpLoad %int %k
+        %290 = OpIAdd %int %289 %int_1
+               OpStore %k %290
+        %291 = OpLoad %int %j
+        %292 = OpIAdd %int %291 %int_1
+               OpStore %j %292
+        %293 = OpAccessChain %_ptr_Private_int %data %291
+        %294 = OpLoad %int %293
+        %295 = OpAccessChain %_ptr_Private_int %temp %289
+               OpStore %295 %294
+               OpBranch %279
+        %279 = OpLabel
+               OpBranch %262
+        %262 = OpLabel
+               OpBranch %260
+        %261 = OpLabel
+               OpBranch %296
+        %296 = OpLabel
+        %297 = OpFUnordGreaterThanEqual %bool %float_256 %float_1
+               OpLoopMerge %298 %299 None
+               OpBranchConditional %297 %300 %299
+        %300 = OpLabel
+        %301 = OpLoad %int %i
+        %302 = OpSLessThan %bool %301 %int_10
+        %303 = OpLoad %int %i
+        %304 = OpLoad %int %mid
+        %305 = OpSLessThanEqual %bool %303 %304
+        %306 = OpLogicalAnd %bool %302 %305
+               OpBranchConditional %306 %307 %298
+        %307 = OpLabel
+               OpBranch %308
+        %308 = OpLabel
+        %309 = OpLoad %int %k
+        %310 = OpIAdd %int %309 %int_1
+               OpStore %k %310
+        %311 = OpLoad %int %i
+        %312 = OpIAdd %int %311 %int_1
+               OpStore %i %312
+        %313 = OpAccessChain %_ptr_Private_int %data %311
+        %314 = OpLoad %int %313
+        %315 = OpAccessChain %_ptr_Private_int %temp %309
+               OpStore %315 %314
+               OpBranchConditional %true %299 %299
+        %299 = OpLabel
+               OpBranch %296
+        %298 = OpLabel
+        %316 = OpLoad %int %from
+               OpStore %i_0 %316
+               OpBranch %317
+        %317 = OpLabel
+               OpLoopMerge %318 %319 None
+               OpBranch %320
+        %320 = OpLabel
+        %321 = OpLoad %int %i_0
+        %322 = OpLoad %int %to
+        %323 = OpSLessThanEqual %bool %321 %322
+               OpBranchConditional %323 %324 %318
+        %324 = OpLabel
+        %325 = OpLoad %int %i_0
+        %326 = OpLoad %int %i_0
+        %327 = OpAccessChain %_ptr_Private_int %temp %326
+        %328 = OpLoad %int %327
+        %329 = OpAccessChain %_ptr_Private_int %data %325
+               OpStore %329 %328
+               OpBranch %319
+        %319 = OpLabel
+        %330 = OpLoad %int %i_0
+        %331 = OpIAdd %int %330 %int_1
+               OpStore %i_0 %331
+               OpBranch %317
+        %318 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %34
+        %332 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %333
+        %333 = OpLabel
+               OpLoopMerge %334 %335 None
+               OpBranch %336
+        %336 = OpLabel
+        %337 = OpLoad %int %m
+        %338 = OpLoad %int %high
+        %339 = OpSLessThanEqual %bool %337 %338
+               OpBranchConditional %339 %340 %334
+        %340 = OpLabel
+        %341 = OpLoad %int %low
+               OpStore %i_1 %341
+               OpBranch %342
+        %342 = OpLabel
+               OpLoopMerge %343 %344 None
+               OpBranch %345
+        %345 = OpLabel
+        %346 = OpLoad %int %i_1
+        %347 = OpLoad %int %high
+        %348 = OpSLessThan %bool %346 %347
+               OpBranchConditional %348 %349 %343
+        %349 = OpLabel
+        %350 = OpLoad %int %i_1
+               OpStore %from_0 %350
+        %351 = OpLoad %int %i_1
+        %352 = OpLoad %int %m
+        %353 = OpIAdd %int %351 %352
+        %354 = OpISub %int %353 %int_1
+               OpStore %mid_0 %354
+        %355 = OpLoad %int %i_1
+        %356 = OpLoad %int %m
+        %357 = OpIMul %int %int_2 %356
+        %358 = OpIAdd %int %355 %357
+        %359 = OpISub %int %358 %int_1
+        %360 = OpLoad %int %high
+        %361 = OpExtInst %int %1 SMin %359 %360
+               OpStore %to_0 %361
+        %362 = OpLoad %int %from_0
+               OpStore %param %362
+        %363 = OpLoad %int %mid_0
+               OpStore %param_0 %363
+        %364 = OpLoad %int %to_0
+               OpStore %param_1 %364
+        %365 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %344
+        %344 = OpLabel
+        %366 = OpLoad %int %m
+        %367 = OpIMul %int %int_2 %366
+        %368 = OpLoad %int %i_1
+        %369 = OpIAdd %int %368 %367
+               OpStore %i_1 %369
+               OpBranch %342
+        %343 = OpLabel
+               OpBranch %335
+        %335 = OpLabel
+        %370 = OpLoad %int %m
+        %371 = OpIMul %int %int_2 %370
+               OpStore %m %371
+               OpBranch %333
+        %334 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..61539cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.hlsl
@@ -0,0 +1,275 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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);
+cbuffer cbuffer_x_32 : register(b1, space0) {
+  uint4 x_32[1];
+};
+
+void merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_256 = from;
+  k = x_256;
+  const int x_257 = from;
+  i = x_257;
+  const int x_258 = mid;
+  j = (x_258 + 1);
+  while (true) {
+    const int x_264 = i;
+    const int x_265 = mid;
+    const int x_267 = j;
+    const int x_268 = to;
+    bool tint_tmp = (x_264 <= x_265);
+    if (tint_tmp) {
+      tint_tmp = (x_267 <= x_268);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_274 = data[i];
+    const int x_277 = data[j];
+    if ((x_274 < x_277)) {
+      const int x_282 = k;
+      k = (x_282 + 1);
+      const int x_284 = i;
+      i = (x_284 + 1);
+      const int x_287 = data[x_284];
+      temp[x_282] = x_287;
+    } else {
+      const int x_289 = k;
+      k = (x_289 + 1);
+      const int x_291 = j;
+      j = (x_291 + 1);
+      const int x_294 = data[x_291];
+      temp[x_289] = x_294;
+    }
+  }
+  while (true) {
+    if (!((256.0f < 1.0f))) {
+    } else {
+      continue;
+    }
+    const int x_301 = i;
+    const int x_303 = i;
+    const int x_304 = mid;
+    bool tint_tmp_1 = (x_301 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_303 <= x_304);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_309 = k;
+    k = (x_309 + 1);
+    const int x_311 = i;
+    i = (x_311 + 1);
+    const int x_314 = data[x_311];
+    temp[x_309] = x_314;
+  }
+  const int x_316 = from;
+  i_1 = x_316;
+  while (true) {
+    const int x_321 = i_1;
+    const int x_322 = to;
+    if ((x_321 <= x_322)) {
+    } else {
+      break;
+    }
+    const int x_325 = i_1;
+    const int x_328 = temp[i_1];
+    data[x_325] = x_328;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_89 = asfloat(x_28[0].x);
+  i_3 = int(x_89);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_138 = j_1;
+      const int x_141 = data[j_1];
+      temp[x_138] = x_141;
+    }
+  }
+  mergeSort_();
+  const float x_147 = gl_FragCoord.y;
+  if ((int(x_147) < 30)) {
+    const int x_154 = data[0];
+    grey = (0.5f + (float(x_154) / 10.0f));
+  } else {
+    const float x_159 = gl_FragCoord.y;
+    if ((int(x_159) < 60)) {
+      const int x_166 = data[1];
+      grey = (0.5f + (float(x_166) / 10.0f));
+    } else {
+      const float x_171 = gl_FragCoord.y;
+      if ((int(x_171) < 90)) {
+        const int x_178 = data[2];
+        grey = (0.5f + (float(x_178) / 10.0f));
+      } else {
+        const float x_183 = gl_FragCoord.y;
+        if ((int(x_183) < 120)) {
+          const int x_190 = data[3];
+          grey = (0.5f + (float(x_190) / 10.0f));
+        } else {
+          const float x_195 = gl_FragCoord.y;
+          if ((int(x_195) < 150)) {
+            discard;
+          } else {
+            const float x_202 = gl_FragCoord.y;
+            if ((int(x_202) < 180)) {
+              const int x_209 = data[5];
+              grey = (0.5f + (float(x_209) / 10.0f));
+            } else {
+              const float x_214 = gl_FragCoord.y;
+              if ((int(x_214) < 210)) {
+                const int x_221 = data[6];
+                grey = (0.5f + (float(x_221) / 10.0f));
+              } else {
+                const float x_226 = gl_FragCoord.y;
+                if ((int(x_226) < 240)) {
+                  const int x_233 = data[7];
+                  grey = (0.5f + (float(x_233) / 10.0f));
+                } else {
+                  const float x_238 = gl_FragCoord.y;
+                  if ((int(x_238) < 270)) {
+                    const int x_245 = data[8];
+                    grey = (0.5f + (float(x_245) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_249 = grey;
+  const float3 x_250 = float3(x_249, x_249, x_249);
+  x_GLF_color = float4(x_250.x, x_250.y, x_250.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.msl
new file mode 100644
index 0000000..e2f2448
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.msl
@@ -0,0 +1,321 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_256 = *(from);
+  k = x_256;
+  int const x_257 = *(from);
+  i = x_257;
+  int const x_258 = *(mid);
+  j = (x_258 + 1);
+  while (true) {
+    int const x_264 = i;
+    int const x_265 = *(mid);
+    int const x_267 = j;
+    int const x_268 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    int const x_272 = i;
+    int const x_274 = (*(tint_symbol_5)).arr[x_272];
+    int const x_275 = j;
+    int const x_277 = (*(tint_symbol_5)).arr[x_275];
+    if ((x_274 < x_277)) {
+      int const x_282 = k;
+      k = (x_282 + 1);
+      int const x_284 = i;
+      i = (x_284 + 1);
+      int const x_287 = (*(tint_symbol_5)).arr[x_284];
+      (*(tint_symbol_6)).arr[x_282] = x_287;
+    } else {
+      int const x_289 = k;
+      k = (x_289 + 1);
+      int const x_291 = j;
+      j = (x_291 + 1);
+      int const x_294 = (*(tint_symbol_5)).arr[x_291];
+      (*(tint_symbol_6)).arr[x_289] = x_294;
+    }
+  }
+  while (true) {
+    if (!((256.0f < 1.0f))) {
+    } else {
+      continue;
+    }
+    int const x_301 = i;
+    int const x_303 = i;
+    int const x_304 = *(mid);
+    if (((x_301 < 10) && (x_303 <= x_304))) {
+    } else {
+      break;
+    }
+    int const x_309 = k;
+    k = (x_309 + 1);
+    int const x_311 = i;
+    i = (x_311 + 1);
+    int const x_314 = (*(tint_symbol_5)).arr[x_311];
+    (*(tint_symbol_6)).arr[x_309] = x_314;
+  }
+  int const x_316 = *(from);
+  i_1 = x_316;
+  while (true) {
+    int const x_321 = i_1;
+    int const x_322 = *(to);
+    if ((x_321 <= x_322)) {
+    } else {
+      break;
+    }
+    int const x_325 = i_1;
+    int const x_326 = i_1;
+    int const x_328 = (*(tint_symbol_6)).arr[x_326];
+    (*(tint_symbol_5)).arr[x_325] = x_328;
+    {
+      int const x_330 = i_1;
+      i_1 = (x_330 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_337 = m;
+    int const x_338 = high;
+    if ((x_337 <= x_338)) {
+    } else {
+      break;
+    }
+    int const x_341 = low;
+    i_2 = x_341;
+    while (true) {
+      int const x_346 = i_2;
+      int const x_347 = high;
+      if ((x_346 < x_347)) {
+      } else {
+        break;
+      }
+      int const x_350 = i_2;
+      from_1 = x_350;
+      int const x_351 = i_2;
+      int const x_352 = m;
+      mid_1 = ((x_351 + x_352) - 1);
+      int const x_355 = i_2;
+      int const x_356 = m;
+      int const x_360 = high;
+      to_1 = min(((x_355 + (2 * x_356)) - 1), x_360);
+      int const x_362 = from_1;
+      param = x_362;
+      int const x_363 = mid_1;
+      param_1 = x_363;
+      int const x_364 = to_1;
+      param_2 = x_364;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_366 = m;
+        int const x_368 = i_2;
+        i_2 = (x_368 + (2 * x_366));
+      }
+    }
+    {
+      int const x_370 = m;
+      m = (2 * x_370);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_89 = x_28.injectionSwitch.x;
+  i_3 = int(x_89);
+  while (true) {
+    int const x_95 = i_3;
+    switch(x_95) {
+      case 9: {
+        int const x_125 = i_3;
+        (*(tint_symbol_9)).arr[x_125] = -5;
+        break;
+      }
+      case 8: {
+        int const x_123 = i_3;
+        (*(tint_symbol_9)).arr[x_123] = -4;
+        break;
+      }
+      case 7: {
+        int const x_121 = i_3;
+        (*(tint_symbol_9)).arr[x_121] = -3;
+        break;
+      }
+      case 6: {
+        int const x_119 = i_3;
+        (*(tint_symbol_9)).arr[x_119] = -2;
+        break;
+      }
+      case 5: {
+        int const x_117 = i_3;
+        (*(tint_symbol_9)).arr[x_117] = -1;
+        break;
+      }
+      case 4: {
+        int const x_115 = i_3;
+        (*(tint_symbol_9)).arr[x_115] = 0;
+        break;
+      }
+      case 3: {
+        int const x_113 = i_3;
+        (*(tint_symbol_9)).arr[x_113] = 1;
+        break;
+      }
+      case 2: {
+        int const x_111 = i_3;
+        (*(tint_symbol_9)).arr[x_111] = 2;
+        break;
+      }
+      case 1: {
+        int const x_109 = i_3;
+        (*(tint_symbol_9)).arr[x_109] = 3;
+        break;
+      }
+      case 0: {
+        int const x_107 = i_3;
+        (*(tint_symbol_9)).arr[x_107] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_127 = i_3;
+    i_3 = (x_127 + 1);
+    {
+      int const x_129 = i_3;
+      if ((x_129 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_135 = j_1;
+    if ((x_135 < 10)) {
+    } else {
+      break;
+    }
+    int const x_138 = j_1;
+    int const x_139 = j_1;
+    int const x_141 = (*(tint_symbol_9)).arr[x_139];
+    (*(tint_symbol_10)).arr[x_138] = x_141;
+    {
+      int const x_143 = j_1;
+      j_1 = (x_143 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_147 = (*(tint_symbol_11)).y;
+  if ((int(x_147) < 30)) {
+    int const x_154 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_154) / 10.0f));
+  } else {
+    float const x_159 = (*(tint_symbol_11)).y;
+    if ((int(x_159) < 60)) {
+      int const x_166 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_166) / 10.0f));
+    } else {
+      float const x_171 = (*(tint_symbol_11)).y;
+      if ((int(x_171) < 90)) {
+        int const x_178 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_178) / 10.0f));
+      } else {
+        float const x_183 = (*(tint_symbol_11)).y;
+        if ((int(x_183) < 120)) {
+          int const x_190 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_190) / 10.0f));
+        } else {
+          float const x_195 = (*(tint_symbol_11)).y;
+          if ((int(x_195) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_202 = (*(tint_symbol_11)).y;
+            if ((int(x_202) < 180)) {
+              int const x_209 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_209) / 10.0f));
+            } else {
+              float const x_214 = (*(tint_symbol_11)).y;
+              if ((int(x_214) < 210)) {
+                int const x_221 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_221) / 10.0f));
+              } else {
+                float const x_226 = (*(tint_symbol_11)).y;
+                if ((int(x_226) < 240)) {
+                  int const x_233 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_233) / 10.0f));
+                } else {
+                  float const x_238 = (*(tint_symbol_11)).y;
+                  if ((int(x_238) < 270)) {
+                    int const x_245 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_245) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_249 = grey;
+  float3 const x_250 = float3(x_249, x_249, x_249);
+  *(tint_symbol_12) = float4(x_250.x, x_250.y, x_250.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..f632619
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.spvasm
@@ -0,0 +1,670 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 425
+; Schema: 0
+               OpCapability Shader
+        %187 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_32 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %35 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+  %float_256 = OpConstant %float 256
+    %float_1 = OpConstant %float 1
+     %int_10 = OpConstant %int 10
+        %142 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %211 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %412 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %26
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %33 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %35
+          %i = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+        %i_1 = OpVariable %_ptr_Function_int Function %35
+         %40 = OpLoad %int %from
+               OpStore %k %40
+         %42 = OpLoad %int %from
+               OpStore %i %42
+         %44 = OpLoad %int %mid
+         %46 = OpIAdd %int %44 %int_1
+               OpStore %j %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %int %mid
+         %54 = OpLoad %int %j
+         %56 = OpLoad %int %to
+         %57 = OpSLessThanEqual %bool %51 %53
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+         %61 = OpSLessThanEqual %bool %54 %56
+               OpBranch %59
+         %59 = OpLabel
+         %62 = OpPhi %bool %57 %50 %61 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %48
+         %63 = OpLabel
+         %66 = OpLoad %int %i
+         %68 = OpAccessChain %_ptr_Private_int %data %66
+         %69 = OpLoad %int %68
+         %70 = OpLoad %int %j
+         %71 = OpAccessChain %_ptr_Private_int %data %70
+         %72 = OpLoad %int %71
+         %73 = OpSLessThan %bool %69 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %77 = OpLoad %int %k
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %k %78
+         %79 = OpLoad %int %i
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %i %80
+         %81 = OpAccessChain %_ptr_Private_int %data %79
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Private_int %temp %77
+               OpStore %83 %82
+               OpBranch %74
+         %76 = OpLabel
+         %84 = OpLoad %int %k
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %k %85
+         %86 = OpLoad %int %j
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %j %87
+         %88 = OpAccessChain %_ptr_Private_int %data %86
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Private_int %temp %84
+               OpStore %90 %89
+               OpBranch %74
+         %74 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %98 = OpFOrdLessThan %bool %float_256 %float_1
+         %95 = OpLogicalNot %bool %98
+               OpSelectionMerge %99 None
+               OpBranchConditional %95 %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %93
+         %99 = OpLabel
+        %102 = OpLoad %int %i
+        %103 = OpLoad %int %i
+        %105 = OpLoad %int %mid
+        %107 = OpSLessThan %bool %102 %int_10
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %108
+        %109 = OpLabel
+        %110 = OpSLessThanEqual %bool %103 %105
+               OpBranch %108
+        %108 = OpLabel
+        %111 = OpPhi %bool %107 %99 %110 %109
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %114
+        %113 = OpLabel
+               OpBranch %112
+        %114 = OpLabel
+               OpBranch %92
+        %112 = OpLabel
+        %115 = OpLoad %int %k
+        %116 = OpIAdd %int %115 %int_1
+               OpStore %k %116
+        %117 = OpLoad %int %i
+        %118 = OpIAdd %int %117 %int_1
+               OpStore %i %118
+        %119 = OpAccessChain %_ptr_Private_int %data %117
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Private_int %temp %115
+               OpStore %121 %120
+               OpBranch %93
+         %93 = OpLabel
+               OpBranch %91
+         %92 = OpLabel
+        %123 = OpLoad %int %from
+               OpStore %i_1 %123
+               OpBranch %124
+        %124 = OpLabel
+               OpLoopMerge %125 %126 None
+               OpBranch %127
+        %127 = OpLabel
+        %128 = OpLoad %int %i_1
+        %130 = OpLoad %int %to
+        %131 = OpSLessThanEqual %bool %128 %130
+               OpSelectionMerge %132 None
+               OpBranchConditional %131 %133 %134
+        %133 = OpLabel
+               OpBranch %132
+        %134 = OpLabel
+               OpBranch %125
+        %132 = OpLabel
+        %135 = OpLoad %int %i_1
+        %136 = OpLoad %int %i_1
+        %137 = OpAccessChain %_ptr_Private_int %temp %136
+        %138 = OpLoad %int %137
+        %139 = OpAccessChain %_ptr_Private_int %data %135
+               OpStore %139 %138
+               OpBranch %126
+        %126 = OpLabel
+        %140 = OpLoad %int %i_1
+        %141 = OpIAdd %int %140 %int_1
+               OpStore %i_1 %141
+               OpBranch %124
+        %125 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %142
+        %144 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %35
+       %high = OpVariable %_ptr_Function_int Function %35
+          %m = OpVariable %_ptr_Function_int Function %35
+        %i_2 = OpVariable %_ptr_Function_int Function %35
+     %from_1 = OpVariable %_ptr_Function_int Function %35
+      %mid_1 = OpVariable %_ptr_Function_int Function %35
+       %to_1 = OpVariable %_ptr_Function_int Function %35
+      %param = OpVariable %_ptr_Function_int Function %35
+    %param_1 = OpVariable %_ptr_Function_int Function %35
+    %param_2 = OpVariable %_ptr_Function_int Function %35
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %157
+        %157 = OpLabel
+               OpLoopMerge %158 %159 None
+               OpBranch %160
+        %160 = OpLabel
+        %161 = OpLoad %int %m
+        %162 = OpLoad %int %high
+        %163 = OpSLessThanEqual %bool %161 %162
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %166
+        %165 = OpLabel
+               OpBranch %164
+        %166 = OpLabel
+               OpBranch %158
+        %164 = OpLabel
+        %167 = OpLoad %int %low
+               OpStore %i_2 %167
+               OpBranch %168
+        %168 = OpLabel
+               OpLoopMerge %169 %170 None
+               OpBranch %171
+        %171 = OpLabel
+        %172 = OpLoad %int %i_2
+        %173 = OpLoad %int %high
+        %174 = OpSLessThan %bool %172 %173
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %177
+        %176 = OpLabel
+               OpBranch %175
+        %177 = OpLabel
+               OpBranch %169
+        %175 = OpLabel
+        %178 = OpLoad %int %i_2
+               OpStore %from_1 %178
+        %179 = OpLoad %int %i_2
+        %180 = OpLoad %int %m
+        %181 = OpIAdd %int %179 %180
+        %182 = OpISub %int %181 %int_1
+               OpStore %mid_1 %182
+        %183 = OpLoad %int %i_2
+        %184 = OpLoad %int %m
+        %185 = OpLoad %int %high
+        %189 = OpIMul %int %int_2 %184
+        %190 = OpIAdd %int %183 %189
+        %191 = OpISub %int %190 %int_1
+        %186 = OpExtInst %int %187 SMin %191 %185
+               OpStore %to_1 %186
+        %192 = OpLoad %int %from_1
+               OpStore %param %192
+        %193 = OpLoad %int %mid_1
+               OpStore %param_1 %193
+        %194 = OpLoad %int %to_1
+               OpStore %param_2 %194
+        %195 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %170
+        %170 = OpLabel
+        %199 = OpLoad %int %m
+        %200 = OpLoad %int %i_2
+        %201 = OpIMul %int %int_2 %199
+        %202 = OpIAdd %int %200 %201
+               OpStore %i_2 %202
+               OpBranch %168
+        %169 = OpLabel
+               OpBranch %159
+        %159 = OpLabel
+        %203 = OpLoad %int %m
+        %204 = OpIMul %int %int_2 %203
+               OpStore %m %204
+               OpBranch %157
+        %158 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %142
+        %206 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %35
+        %j_1 = OpVariable %_ptr_Function_int Function %35
+       %grey = OpVariable %_ptr_Function_float Function %211
+        %214 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %215 = OpLoad %float %214
+        %216 = OpConvertFToS %int %215
+               OpStore %i_3 %216
+               OpBranch %217
+        %217 = OpLabel
+               OpLoopMerge %218 %219 None
+               OpBranch %220
+        %220 = OpLabel
+        %221 = OpLoad %int %i_3
+               OpSelectionMerge %222 None
+               OpSwitch %221 %223 9 %224 8 %225 7 %226 6 %227 5 %228 4 %229 3 %230 2 %231 1 %232 0 %233
+        %224 = OpLabel
+        %234 = OpLoad %int %i_3
+        %235 = OpAccessChain %_ptr_Private_int %data %234
+               OpStore %235 %int_n5
+               OpBranch %222
+        %225 = OpLabel
+        %237 = OpLoad %int %i_3
+        %238 = OpAccessChain %_ptr_Private_int %data %237
+               OpStore %238 %int_n4
+               OpBranch %222
+        %226 = OpLabel
+        %240 = OpLoad %int %i_3
+        %241 = OpAccessChain %_ptr_Private_int %data %240
+               OpStore %241 %int_n3
+               OpBranch %222
+        %227 = OpLabel
+        %243 = OpLoad %int %i_3
+        %244 = OpAccessChain %_ptr_Private_int %data %243
+               OpStore %244 %int_n2
+               OpBranch %222
+        %228 = OpLabel
+        %246 = OpLoad %int %i_3
+        %247 = OpAccessChain %_ptr_Private_int %data %246
+               OpStore %247 %int_n1
+               OpBranch %222
+        %229 = OpLabel
+        %249 = OpLoad %int %i_3
+        %250 = OpAccessChain %_ptr_Private_int %data %249
+               OpStore %250 %int_0
+               OpBranch %222
+        %230 = OpLabel
+        %251 = OpLoad %int %i_3
+        %252 = OpAccessChain %_ptr_Private_int %data %251
+               OpStore %252 %int_1
+               OpBranch %222
+        %231 = OpLabel
+        %253 = OpLoad %int %i_3
+        %254 = OpAccessChain %_ptr_Private_int %data %253
+               OpStore %254 %int_2
+               OpBranch %222
+        %232 = OpLabel
+        %255 = OpLoad %int %i_3
+        %256 = OpAccessChain %_ptr_Private_int %data %255
+               OpStore %256 %int_3
+               OpBranch %222
+        %233 = OpLabel
+        %258 = OpLoad %int %i_3
+        %259 = OpAccessChain %_ptr_Private_int %data %258
+               OpStore %259 %int_4
+               OpBranch %222
+        %223 = OpLabel
+               OpBranch %222
+        %222 = OpLabel
+        %261 = OpLoad %int %i_3
+        %262 = OpIAdd %int %261 %int_1
+               OpStore %i_3 %262
+               OpBranch %219
+        %219 = OpLabel
+        %263 = OpLoad %int %i_3
+        %264 = OpSLessThan %bool %263 %int_10
+               OpSelectionMerge %265 None
+               OpBranchConditional %264 %266 %267
+        %266 = OpLabel
+               OpBranch %265
+        %267 = OpLabel
+               OpBranch %218
+        %265 = OpLabel
+               OpBranch %217
+        %218 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %268
+        %268 = OpLabel
+               OpLoopMerge %269 %270 None
+               OpBranch %271
+        %271 = OpLabel
+        %272 = OpLoad %int %j_1
+        %273 = OpSLessThan %bool %272 %int_10
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %276
+        %275 = OpLabel
+               OpBranch %274
+        %276 = OpLabel
+               OpBranch %269
+        %274 = OpLabel
+        %277 = OpLoad %int %j_1
+        %278 = OpLoad %int %j_1
+        %279 = OpAccessChain %_ptr_Private_int %data %278
+        %280 = OpLoad %int %279
+        %281 = OpAccessChain %_ptr_Private_int %temp %277
+               OpStore %281 %280
+               OpBranch %270
+        %270 = OpLabel
+        %282 = OpLoad %int %j_1
+        %283 = OpIAdd %int %282 %int_1
+               OpStore %j_1 %283
+               OpBranch %268
+        %269 = OpLabel
+        %284 = OpFunctionCall %void %mergeSort_
+        %287 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %288 = OpLoad %float %287
+        %289 = OpConvertFToS %int %288
+        %291 = OpSLessThan %bool %289 %int_30
+               OpSelectionMerge %292 None
+               OpBranchConditional %291 %293 %294
+        %293 = OpLabel
+        %295 = OpAccessChain %_ptr_Private_int %data %int_0
+        %296 = OpLoad %int %295
+        %298 = OpConvertSToF %float %296
+        %300 = OpFDiv %float %298 %float_10
+        %301 = OpFAdd %float %float_0_5 %300
+               OpStore %grey %301
+               OpBranch %292
+        %294 = OpLabel
+        %302 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %303 = OpLoad %float %302
+        %304 = OpConvertFToS %int %303
+        %306 = OpSLessThan %bool %304 %int_60
+               OpSelectionMerge %307 None
+               OpBranchConditional %306 %308 %309
+        %308 = OpLabel
+        %310 = OpAccessChain %_ptr_Private_int %data %int_1
+        %311 = OpLoad %int %310
+        %312 = OpConvertSToF %float %311
+        %313 = OpFDiv %float %312 %float_10
+        %314 = OpFAdd %float %float_0_5 %313
+               OpStore %grey %314
+               OpBranch %307
+        %309 = OpLabel
+        %315 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpConvertFToS %int %316
+        %319 = OpSLessThan %bool %317 %int_90
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %322
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Private_int %data %int_2
+        %324 = OpLoad %int %323
+        %325 = OpConvertSToF %float %324
+        %326 = OpFDiv %float %325 %float_10
+        %327 = OpFAdd %float %float_0_5 %326
+               OpStore %grey %327
+               OpBranch %320
+        %322 = OpLabel
+        %328 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %329 = OpLoad %float %328
+        %330 = OpConvertFToS %int %329
+        %332 = OpSLessThan %bool %330 %int_120
+               OpSelectionMerge %333 None
+               OpBranchConditional %332 %334 %335
+        %334 = OpLabel
+        %336 = OpAccessChain %_ptr_Private_int %data %int_3
+        %337 = OpLoad %int %336
+        %338 = OpConvertSToF %float %337
+        %339 = OpFDiv %float %338 %float_10
+        %340 = OpFAdd %float %float_0_5 %339
+               OpStore %grey %340
+               OpBranch %333
+        %335 = OpLabel
+        %341 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %342 = OpLoad %float %341
+        %343 = OpConvertFToS %int %342
+        %345 = OpSLessThan %bool %343 %int_150
+               OpSelectionMerge %346 None
+               OpBranchConditional %345 %347 %348
+        %347 = OpLabel
+               OpKill
+        %348 = OpLabel
+        %349 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %350 = OpLoad %float %349
+        %351 = OpConvertFToS %int %350
+        %353 = OpSLessThan %bool %351 %int_180
+               OpSelectionMerge %354 None
+               OpBranchConditional %353 %355 %356
+        %355 = OpLabel
+        %358 = OpAccessChain %_ptr_Private_int %data %int_5
+        %359 = OpLoad %int %358
+        %360 = OpConvertSToF %float %359
+        %361 = OpFDiv %float %360 %float_10
+        %362 = OpFAdd %float %float_0_5 %361
+               OpStore %grey %362
+               OpBranch %354
+        %356 = OpLabel
+        %363 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %364 = OpLoad %float %363
+        %365 = OpConvertFToS %int %364
+        %367 = OpSLessThan %bool %365 %int_210
+               OpSelectionMerge %368 None
+               OpBranchConditional %367 %369 %370
+        %369 = OpLabel
+        %372 = OpAccessChain %_ptr_Private_int %data %int_6
+        %373 = OpLoad %int %372
+        %374 = OpConvertSToF %float %373
+        %375 = OpFDiv %float %374 %float_10
+        %376 = OpFAdd %float %float_0_5 %375
+               OpStore %grey %376
+               OpBranch %368
+        %370 = OpLabel
+        %377 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %378 = OpLoad %float %377
+        %379 = OpConvertFToS %int %378
+        %381 = OpSLessThan %bool %379 %int_240
+               OpSelectionMerge %382 None
+               OpBranchConditional %381 %383 %384
+        %383 = OpLabel
+        %386 = OpAccessChain %_ptr_Private_int %data %int_7
+        %387 = OpLoad %int %386
+        %388 = OpConvertSToF %float %387
+        %389 = OpFDiv %float %388 %float_10
+        %390 = OpFAdd %float %float_0_5 %389
+               OpStore %grey %390
+               OpBranch %382
+        %384 = OpLabel
+        %391 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %392 = OpLoad %float %391
+        %393 = OpConvertFToS %int %392
+        %395 = OpSLessThan %bool %393 %int_270
+               OpSelectionMerge %396 None
+               OpBranchConditional %395 %397 %398
+        %397 = OpLabel
+        %400 = OpAccessChain %_ptr_Private_int %data %int_8
+        %401 = OpLoad %int %400
+        %402 = OpConvertSToF %float %401
+        %403 = OpFDiv %float %402 %float_10
+        %404 = OpFAdd %float %float_0_5 %403
+               OpStore %grey %404
+               OpBranch %396
+        %398 = OpLabel
+               OpKill
+        %396 = OpLabel
+               OpBranch %382
+        %382 = OpLabel
+               OpBranch %368
+        %368 = OpLabel
+               OpBranch %354
+        %354 = OpLabel
+               OpBranch %346
+        %346 = OpLabel
+               OpBranch %333
+        %333 = OpLabel
+               OpBranch %320
+        %320 = OpLabel
+               OpBranch %307
+        %307 = OpLabel
+               OpBranch %292
+        %292 = OpLabel
+        %405 = OpLoad %float %grey
+        %407 = OpCompositeConstruct %v3float %405 %405 %405
+        %408 = OpCompositeExtract %float %407 0
+        %409 = OpCompositeExtract %float %407 1
+        %410 = OpCompositeExtract %float %407 2
+        %411 = OpCompositeConstruct %v4float %408 %409 %410 %float_1
+               OpStore %x_GLF_color %411
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %412
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %416 = OpLabel
+        %417 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %417
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %142
+        %419 = OpLabel
+        %420 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %420
+        %421 = OpFunctionCall %void %main_1
+        %423 = OpLoad %v4float %x_GLF_color
+        %424 = OpCompositeConstruct %main_out %423
+        %422 = OpFunctionCall %void %tint_symbol_3 %424
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 219[%219] is not post dominated by the back-edge block 265[%265]
+  %265 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..b26ac12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.spvasm.expected.wgsl
@@ -0,0 +1,317 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_256 : i32 = *(from);
+  k = x_256;
+  let x_257 : i32 = *(from);
+  i = x_257;
+  let x_258 : i32 = *(mid);
+  j = (x_258 + 1);
+  loop {
+    let x_264 : i32 = i;
+    let x_265 : i32 = *(mid);
+    let x_267 : i32 = j;
+    let x_268 : i32 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    let x_272 : i32 = i;
+    let x_274 : i32 = data[x_272];
+    let x_275 : i32 = j;
+    let x_277 : i32 = data[x_275];
+    if ((x_274 < x_277)) {
+      let x_282 : i32 = k;
+      k = (x_282 + 1);
+      let x_284 : i32 = i;
+      i = (x_284 + 1);
+      let x_287 : i32 = data[x_284];
+      temp[x_282] = x_287;
+    } else {
+      let x_289 : i32 = k;
+      k = (x_289 + 1);
+      let x_291 : i32 = j;
+      j = (x_291 + 1);
+      let x_294 : i32 = data[x_291];
+      temp[x_289] = x_294;
+    }
+  }
+  loop {
+    if (!((256.0 < 1.0))) {
+    } else {
+      continue;
+    }
+    let x_301 : i32 = i;
+    let x_303 : i32 = i;
+    let x_304 : i32 = *(mid);
+    if (((x_301 < 10) && (x_303 <= x_304))) {
+    } else {
+      break;
+    }
+    let x_309 : i32 = k;
+    k = (x_309 + 1);
+    let x_311 : i32 = i;
+    i = (x_311 + 1);
+    let x_314 : i32 = data[x_311];
+    temp[x_309] = x_314;
+  }
+  let x_316 : i32 = *(from);
+  i_1 = x_316;
+  loop {
+    let x_321 : i32 = i_1;
+    let x_322 : i32 = *(to);
+    if ((x_321 <= x_322)) {
+    } else {
+      break;
+    }
+    let x_325 : i32 = i_1;
+    let x_326 : i32 = i_1;
+    let x_328 : i32 = temp[x_326];
+    data[x_325] = x_328;
+
+    continuing {
+      let x_330 : i32 = i_1;
+      i_1 = (x_330 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_337 : i32 = m;
+    let x_338 : i32 = high;
+    if ((x_337 <= x_338)) {
+    } else {
+      break;
+    }
+    let x_341 : i32 = low;
+    i_2 = x_341;
+    loop {
+      let x_346 : i32 = i_2;
+      let x_347 : i32 = high;
+      if ((x_346 < x_347)) {
+      } else {
+        break;
+      }
+      let x_350 : i32 = i_2;
+      from_1 = x_350;
+      let x_351 : i32 = i_2;
+      let x_352 : i32 = m;
+      mid_1 = ((x_351 + x_352) - 1);
+      let x_355 : i32 = i_2;
+      let x_356 : i32 = m;
+      let x_360 : i32 = high;
+      to_1 = min(((x_355 + (2 * x_356)) - 1), x_360);
+      let x_362 : i32 = from_1;
+      param = x_362;
+      let x_363 : i32 = mid_1;
+      param_1 = x_363;
+      let x_364 : i32 = to_1;
+      param_2 = x_364;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_366 : i32 = m;
+        let x_368 : i32 = i_2;
+        i_2 = (x_368 + (2 * x_366));
+      }
+    }
+
+    continuing {
+      let x_370 : i32 = m;
+      m = (2 * x_370);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_89 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_89);
+  loop {
+    let x_95 : i32 = i_3;
+    switch(x_95) {
+      case 9: {
+        let x_125 : i32 = i_3;
+        data[x_125] = -5;
+      }
+      case 8: {
+        let x_123 : i32 = i_3;
+        data[x_123] = -4;
+      }
+      case 7: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -3;
+      }
+      case 6: {
+        let x_119 : i32 = i_3;
+        data[x_119] = -2;
+      }
+      case 5: {
+        let x_117 : i32 = i_3;
+        data[x_117] = -1;
+      }
+      case 4: {
+        let x_115 : i32 = i_3;
+        data[x_115] = 0;
+      }
+      case 3: {
+        let x_113 : i32 = i_3;
+        data[x_113] = 1;
+      }
+      case 2: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 2;
+      }
+      case 1: {
+        let x_109 : i32 = i_3;
+        data[x_109] = 3;
+      }
+      case 0: {
+        let x_107 : i32 = i_3;
+        data[x_107] = 4;
+      }
+      default: {
+      }
+    }
+    let x_127 : i32 = i_3;
+    i_3 = (x_127 + 1);
+
+    continuing {
+      let x_129 : i32 = i_3;
+      if ((x_129 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_135 : i32 = j_1;
+    if ((x_135 < 10)) {
+    } else {
+      break;
+    }
+    let x_138 : i32 = j_1;
+    let x_139 : i32 = j_1;
+    let x_141 : i32 = data[x_139];
+    temp[x_138] = x_141;
+
+    continuing {
+      let x_143 : i32 = j_1;
+      j_1 = (x_143 + 1);
+    }
+  }
+  mergeSort_();
+  let x_147 : f32 = gl_FragCoord.y;
+  if ((i32(x_147) < 30)) {
+    let x_154 : i32 = data[0];
+    grey = (0.5 + (f32(x_154) / 10.0));
+  } else {
+    let x_159 : f32 = gl_FragCoord.y;
+    if ((i32(x_159) < 60)) {
+      let x_166 : i32 = data[1];
+      grey = (0.5 + (f32(x_166) / 10.0));
+    } else {
+      let x_171 : f32 = gl_FragCoord.y;
+      if ((i32(x_171) < 90)) {
+        let x_178 : i32 = data[2];
+        grey = (0.5 + (f32(x_178) / 10.0));
+      } else {
+        let x_183 : f32 = gl_FragCoord.y;
+        if ((i32(x_183) < 120)) {
+          let x_190 : i32 = data[3];
+          grey = (0.5 + (f32(x_190) / 10.0));
+        } else {
+          let x_195 : f32 = gl_FragCoord.y;
+          if ((i32(x_195) < 150)) {
+            discard;
+          } else {
+            let x_202 : f32 = gl_FragCoord.y;
+            if ((i32(x_202) < 180)) {
+              let x_209 : i32 = data[5];
+              grey = (0.5 + (f32(x_209) / 10.0));
+            } else {
+              let x_214 : f32 = gl_FragCoord.y;
+              if ((i32(x_214) < 210)) {
+                let x_221 : i32 = data[6];
+                grey = (0.5 + (f32(x_221) / 10.0));
+              } else {
+                let x_226 : f32 = gl_FragCoord.y;
+                if ((i32(x_226) < 240)) {
+                  let x_233 : i32 = data[7];
+                  grey = (0.5 + (f32(x_233) / 10.0));
+                } else {
+                  let x_238 : f32 = gl_FragCoord.y;
+                  if ((i32(x_238) < 270)) {
+                    let x_245 : i32 = data[8];
+                    grey = (0.5 + (f32(x_245) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_249 : f32 = grey;
+  let x_250 : vec3<f32> = vec3<f32>(x_249, x_249, x_249);
+  x_GLF_color = vec4<f32>(x_250.x, x_250.y, x_250.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
new file mode 100644
index 0000000..b26ac12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
@@ -0,0 +1,317 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_256 : i32 = *(from);
+  k = x_256;
+  let x_257 : i32 = *(from);
+  i = x_257;
+  let x_258 : i32 = *(mid);
+  j = (x_258 + 1);
+  loop {
+    let x_264 : i32 = i;
+    let x_265 : i32 = *(mid);
+    let x_267 : i32 = j;
+    let x_268 : i32 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    let x_272 : i32 = i;
+    let x_274 : i32 = data[x_272];
+    let x_275 : i32 = j;
+    let x_277 : i32 = data[x_275];
+    if ((x_274 < x_277)) {
+      let x_282 : i32 = k;
+      k = (x_282 + 1);
+      let x_284 : i32 = i;
+      i = (x_284 + 1);
+      let x_287 : i32 = data[x_284];
+      temp[x_282] = x_287;
+    } else {
+      let x_289 : i32 = k;
+      k = (x_289 + 1);
+      let x_291 : i32 = j;
+      j = (x_291 + 1);
+      let x_294 : i32 = data[x_291];
+      temp[x_289] = x_294;
+    }
+  }
+  loop {
+    if (!((256.0 < 1.0))) {
+    } else {
+      continue;
+    }
+    let x_301 : i32 = i;
+    let x_303 : i32 = i;
+    let x_304 : i32 = *(mid);
+    if (((x_301 < 10) && (x_303 <= x_304))) {
+    } else {
+      break;
+    }
+    let x_309 : i32 = k;
+    k = (x_309 + 1);
+    let x_311 : i32 = i;
+    i = (x_311 + 1);
+    let x_314 : i32 = data[x_311];
+    temp[x_309] = x_314;
+  }
+  let x_316 : i32 = *(from);
+  i_1 = x_316;
+  loop {
+    let x_321 : i32 = i_1;
+    let x_322 : i32 = *(to);
+    if ((x_321 <= x_322)) {
+    } else {
+      break;
+    }
+    let x_325 : i32 = i_1;
+    let x_326 : i32 = i_1;
+    let x_328 : i32 = temp[x_326];
+    data[x_325] = x_328;
+
+    continuing {
+      let x_330 : i32 = i_1;
+      i_1 = (x_330 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_337 : i32 = m;
+    let x_338 : i32 = high;
+    if ((x_337 <= x_338)) {
+    } else {
+      break;
+    }
+    let x_341 : i32 = low;
+    i_2 = x_341;
+    loop {
+      let x_346 : i32 = i_2;
+      let x_347 : i32 = high;
+      if ((x_346 < x_347)) {
+      } else {
+        break;
+      }
+      let x_350 : i32 = i_2;
+      from_1 = x_350;
+      let x_351 : i32 = i_2;
+      let x_352 : i32 = m;
+      mid_1 = ((x_351 + x_352) - 1);
+      let x_355 : i32 = i_2;
+      let x_356 : i32 = m;
+      let x_360 : i32 = high;
+      to_1 = min(((x_355 + (2 * x_356)) - 1), x_360);
+      let x_362 : i32 = from_1;
+      param = x_362;
+      let x_363 : i32 = mid_1;
+      param_1 = x_363;
+      let x_364 : i32 = to_1;
+      param_2 = x_364;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_366 : i32 = m;
+        let x_368 : i32 = i_2;
+        i_2 = (x_368 + (2 * x_366));
+      }
+    }
+
+    continuing {
+      let x_370 : i32 = m;
+      m = (2 * x_370);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_89 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_89);
+  loop {
+    let x_95 : i32 = i_3;
+    switch(x_95) {
+      case 9: {
+        let x_125 : i32 = i_3;
+        data[x_125] = -5;
+      }
+      case 8: {
+        let x_123 : i32 = i_3;
+        data[x_123] = -4;
+      }
+      case 7: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -3;
+      }
+      case 6: {
+        let x_119 : i32 = i_3;
+        data[x_119] = -2;
+      }
+      case 5: {
+        let x_117 : i32 = i_3;
+        data[x_117] = -1;
+      }
+      case 4: {
+        let x_115 : i32 = i_3;
+        data[x_115] = 0;
+      }
+      case 3: {
+        let x_113 : i32 = i_3;
+        data[x_113] = 1;
+      }
+      case 2: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 2;
+      }
+      case 1: {
+        let x_109 : i32 = i_3;
+        data[x_109] = 3;
+      }
+      case 0: {
+        let x_107 : i32 = i_3;
+        data[x_107] = 4;
+      }
+      default: {
+      }
+    }
+    let x_127 : i32 = i_3;
+    i_3 = (x_127 + 1);
+
+    continuing {
+      let x_129 : i32 = i_3;
+      if ((x_129 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_135 : i32 = j_1;
+    if ((x_135 < 10)) {
+    } else {
+      break;
+    }
+    let x_138 : i32 = j_1;
+    let x_139 : i32 = j_1;
+    let x_141 : i32 = data[x_139];
+    temp[x_138] = x_141;
+
+    continuing {
+      let x_143 : i32 = j_1;
+      j_1 = (x_143 + 1);
+    }
+  }
+  mergeSort_();
+  let x_147 : f32 = gl_FragCoord.y;
+  if ((i32(x_147) < 30)) {
+    let x_154 : i32 = data[0];
+    grey = (0.5 + (f32(x_154) / 10.0));
+  } else {
+    let x_159 : f32 = gl_FragCoord.y;
+    if ((i32(x_159) < 60)) {
+      let x_166 : i32 = data[1];
+      grey = (0.5 + (f32(x_166) / 10.0));
+    } else {
+      let x_171 : f32 = gl_FragCoord.y;
+      if ((i32(x_171) < 90)) {
+        let x_178 : i32 = data[2];
+        grey = (0.5 + (f32(x_178) / 10.0));
+      } else {
+        let x_183 : f32 = gl_FragCoord.y;
+        if ((i32(x_183) < 120)) {
+          let x_190 : i32 = data[3];
+          grey = (0.5 + (f32(x_190) / 10.0));
+        } else {
+          let x_195 : f32 = gl_FragCoord.y;
+          if ((i32(x_195) < 150)) {
+            discard;
+          } else {
+            let x_202 : f32 = gl_FragCoord.y;
+            if ((i32(x_202) < 180)) {
+              let x_209 : i32 = data[5];
+              grey = (0.5 + (f32(x_209) / 10.0));
+            } else {
+              let x_214 : f32 = gl_FragCoord.y;
+              if ((i32(x_214) < 210)) {
+                let x_221 : i32 = data[6];
+                grey = (0.5 + (f32(x_221) / 10.0));
+              } else {
+                let x_226 : f32 = gl_FragCoord.y;
+                if ((i32(x_226) < 240)) {
+                  let x_233 : i32 = data[7];
+                  grey = (0.5 + (f32(x_233) / 10.0));
+                } else {
+                  let x_238 : f32 = gl_FragCoord.y;
+                  if ((i32(x_238) < 270)) {
+                    let x_245 : i32 = data[8];
+                    grey = (0.5 + (f32(x_245) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_249 : f32 = grey;
+  let x_250 : vec3<f32> = vec3<f32>(x_249, x_249, x_249);
+  x_GLF_color = vec4<f32>(x_250.x, x_250.y, x_250.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..61539cb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.hlsl
@@ -0,0 +1,275 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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);
+cbuffer cbuffer_x_32 : register(b1, space0) {
+  uint4 x_32[1];
+};
+
+void merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_256 = from;
+  k = x_256;
+  const int x_257 = from;
+  i = x_257;
+  const int x_258 = mid;
+  j = (x_258 + 1);
+  while (true) {
+    const int x_264 = i;
+    const int x_265 = mid;
+    const int x_267 = j;
+    const int x_268 = to;
+    bool tint_tmp = (x_264 <= x_265);
+    if (tint_tmp) {
+      tint_tmp = (x_267 <= x_268);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_274 = data[i];
+    const int x_277 = data[j];
+    if ((x_274 < x_277)) {
+      const int x_282 = k;
+      k = (x_282 + 1);
+      const int x_284 = i;
+      i = (x_284 + 1);
+      const int x_287 = data[x_284];
+      temp[x_282] = x_287;
+    } else {
+      const int x_289 = k;
+      k = (x_289 + 1);
+      const int x_291 = j;
+      j = (x_291 + 1);
+      const int x_294 = data[x_291];
+      temp[x_289] = x_294;
+    }
+  }
+  while (true) {
+    if (!((256.0f < 1.0f))) {
+    } else {
+      continue;
+    }
+    const int x_301 = i;
+    const int x_303 = i;
+    const int x_304 = mid;
+    bool tint_tmp_1 = (x_301 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_303 <= x_304);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_309 = k;
+    k = (x_309 + 1);
+    const int x_311 = i;
+    i = (x_311 + 1);
+    const int x_314 = data[x_311];
+    temp[x_309] = x_314;
+  }
+  const int x_316 = from;
+  i_1 = x_316;
+  while (true) {
+    const int x_321 = i_1;
+    const int x_322 = to;
+    if ((x_321 <= x_322)) {
+    } else {
+      break;
+    }
+    const int x_325 = i_1;
+    const int x_328 = temp[i_1];
+    data[x_325] = x_328;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_89 = asfloat(x_28[0].x);
+  i_3 = int(x_89);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_138 = j_1;
+      const int x_141 = data[j_1];
+      temp[x_138] = x_141;
+    }
+  }
+  mergeSort_();
+  const float x_147 = gl_FragCoord.y;
+  if ((int(x_147) < 30)) {
+    const int x_154 = data[0];
+    grey = (0.5f + (float(x_154) / 10.0f));
+  } else {
+    const float x_159 = gl_FragCoord.y;
+    if ((int(x_159) < 60)) {
+      const int x_166 = data[1];
+      grey = (0.5f + (float(x_166) / 10.0f));
+    } else {
+      const float x_171 = gl_FragCoord.y;
+      if ((int(x_171) < 90)) {
+        const int x_178 = data[2];
+        grey = (0.5f + (float(x_178) / 10.0f));
+      } else {
+        const float x_183 = gl_FragCoord.y;
+        if ((int(x_183) < 120)) {
+          const int x_190 = data[3];
+          grey = (0.5f + (float(x_190) / 10.0f));
+        } else {
+          const float x_195 = gl_FragCoord.y;
+          if ((int(x_195) < 150)) {
+            discard;
+          } else {
+            const float x_202 = gl_FragCoord.y;
+            if ((int(x_202) < 180)) {
+              const int x_209 = data[5];
+              grey = (0.5f + (float(x_209) / 10.0f));
+            } else {
+              const float x_214 = gl_FragCoord.y;
+              if ((int(x_214) < 210)) {
+                const int x_221 = data[6];
+                grey = (0.5f + (float(x_221) / 10.0f));
+              } else {
+                const float x_226 = gl_FragCoord.y;
+                if ((int(x_226) < 240)) {
+                  const int x_233 = data[7];
+                  grey = (0.5f + (float(x_233) / 10.0f));
+                } else {
+                  const float x_238 = gl_FragCoord.y;
+                  if ((int(x_238) < 270)) {
+                    const int x_245 = data[8];
+                    grey = (0.5f + (float(x_245) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_249 = grey;
+  const float3 x_250 = float3(x_249, x_249, x_249);
+  x_GLF_color = float4(x_250.x, x_250.y, x_250.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.msl
new file mode 100644
index 0000000..e2f2448
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.msl
@@ -0,0 +1,321 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_256 = *(from);
+  k = x_256;
+  int const x_257 = *(from);
+  i = x_257;
+  int const x_258 = *(mid);
+  j = (x_258 + 1);
+  while (true) {
+    int const x_264 = i;
+    int const x_265 = *(mid);
+    int const x_267 = j;
+    int const x_268 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    int const x_272 = i;
+    int const x_274 = (*(tint_symbol_5)).arr[x_272];
+    int const x_275 = j;
+    int const x_277 = (*(tint_symbol_5)).arr[x_275];
+    if ((x_274 < x_277)) {
+      int const x_282 = k;
+      k = (x_282 + 1);
+      int const x_284 = i;
+      i = (x_284 + 1);
+      int const x_287 = (*(tint_symbol_5)).arr[x_284];
+      (*(tint_symbol_6)).arr[x_282] = x_287;
+    } else {
+      int const x_289 = k;
+      k = (x_289 + 1);
+      int const x_291 = j;
+      j = (x_291 + 1);
+      int const x_294 = (*(tint_symbol_5)).arr[x_291];
+      (*(tint_symbol_6)).arr[x_289] = x_294;
+    }
+  }
+  while (true) {
+    if (!((256.0f < 1.0f))) {
+    } else {
+      continue;
+    }
+    int const x_301 = i;
+    int const x_303 = i;
+    int const x_304 = *(mid);
+    if (((x_301 < 10) && (x_303 <= x_304))) {
+    } else {
+      break;
+    }
+    int const x_309 = k;
+    k = (x_309 + 1);
+    int const x_311 = i;
+    i = (x_311 + 1);
+    int const x_314 = (*(tint_symbol_5)).arr[x_311];
+    (*(tint_symbol_6)).arr[x_309] = x_314;
+  }
+  int const x_316 = *(from);
+  i_1 = x_316;
+  while (true) {
+    int const x_321 = i_1;
+    int const x_322 = *(to);
+    if ((x_321 <= x_322)) {
+    } else {
+      break;
+    }
+    int const x_325 = i_1;
+    int const x_326 = i_1;
+    int const x_328 = (*(tint_symbol_6)).arr[x_326];
+    (*(tint_symbol_5)).arr[x_325] = x_328;
+    {
+      int const x_330 = i_1;
+      i_1 = (x_330 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_337 = m;
+    int const x_338 = high;
+    if ((x_337 <= x_338)) {
+    } else {
+      break;
+    }
+    int const x_341 = low;
+    i_2 = x_341;
+    while (true) {
+      int const x_346 = i_2;
+      int const x_347 = high;
+      if ((x_346 < x_347)) {
+      } else {
+        break;
+      }
+      int const x_350 = i_2;
+      from_1 = x_350;
+      int const x_351 = i_2;
+      int const x_352 = m;
+      mid_1 = ((x_351 + x_352) - 1);
+      int const x_355 = i_2;
+      int const x_356 = m;
+      int const x_360 = high;
+      to_1 = min(((x_355 + (2 * x_356)) - 1), x_360);
+      int const x_362 = from_1;
+      param = x_362;
+      int const x_363 = mid_1;
+      param_1 = x_363;
+      int const x_364 = to_1;
+      param_2 = x_364;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_366 = m;
+        int const x_368 = i_2;
+        i_2 = (x_368 + (2 * x_366));
+      }
+    }
+    {
+      int const x_370 = m;
+      m = (2 * x_370);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_89 = x_28.injectionSwitch.x;
+  i_3 = int(x_89);
+  while (true) {
+    int const x_95 = i_3;
+    switch(x_95) {
+      case 9: {
+        int const x_125 = i_3;
+        (*(tint_symbol_9)).arr[x_125] = -5;
+        break;
+      }
+      case 8: {
+        int const x_123 = i_3;
+        (*(tint_symbol_9)).arr[x_123] = -4;
+        break;
+      }
+      case 7: {
+        int const x_121 = i_3;
+        (*(tint_symbol_9)).arr[x_121] = -3;
+        break;
+      }
+      case 6: {
+        int const x_119 = i_3;
+        (*(tint_symbol_9)).arr[x_119] = -2;
+        break;
+      }
+      case 5: {
+        int const x_117 = i_3;
+        (*(tint_symbol_9)).arr[x_117] = -1;
+        break;
+      }
+      case 4: {
+        int const x_115 = i_3;
+        (*(tint_symbol_9)).arr[x_115] = 0;
+        break;
+      }
+      case 3: {
+        int const x_113 = i_3;
+        (*(tint_symbol_9)).arr[x_113] = 1;
+        break;
+      }
+      case 2: {
+        int const x_111 = i_3;
+        (*(tint_symbol_9)).arr[x_111] = 2;
+        break;
+      }
+      case 1: {
+        int const x_109 = i_3;
+        (*(tint_symbol_9)).arr[x_109] = 3;
+        break;
+      }
+      case 0: {
+        int const x_107 = i_3;
+        (*(tint_symbol_9)).arr[x_107] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_127 = i_3;
+    i_3 = (x_127 + 1);
+    {
+      int const x_129 = i_3;
+      if ((x_129 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_135 = j_1;
+    if ((x_135 < 10)) {
+    } else {
+      break;
+    }
+    int const x_138 = j_1;
+    int const x_139 = j_1;
+    int const x_141 = (*(tint_symbol_9)).arr[x_139];
+    (*(tint_symbol_10)).arr[x_138] = x_141;
+    {
+      int const x_143 = j_1;
+      j_1 = (x_143 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_147 = (*(tint_symbol_11)).y;
+  if ((int(x_147) < 30)) {
+    int const x_154 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_154) / 10.0f));
+  } else {
+    float const x_159 = (*(tint_symbol_11)).y;
+    if ((int(x_159) < 60)) {
+      int const x_166 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_166) / 10.0f));
+    } else {
+      float const x_171 = (*(tint_symbol_11)).y;
+      if ((int(x_171) < 90)) {
+        int const x_178 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_178) / 10.0f));
+      } else {
+        float const x_183 = (*(tint_symbol_11)).y;
+        if ((int(x_183) < 120)) {
+          int const x_190 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_190) / 10.0f));
+        } else {
+          float const x_195 = (*(tint_symbol_11)).y;
+          if ((int(x_195) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_202 = (*(tint_symbol_11)).y;
+            if ((int(x_202) < 180)) {
+              int const x_209 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_209) / 10.0f));
+            } else {
+              float const x_214 = (*(tint_symbol_11)).y;
+              if ((int(x_214) < 210)) {
+                int const x_221 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_221) / 10.0f));
+              } else {
+                float const x_226 = (*(tint_symbol_11)).y;
+                if ((int(x_226) < 240)) {
+                  int const x_233 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_233) / 10.0f));
+                } else {
+                  float const x_238 = (*(tint_symbol_11)).y;
+                  if ((int(x_238) < 270)) {
+                    int const x_245 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_245) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_249 = grey;
+  float3 const x_250 = float3(x_249, x_249, x_249);
+  *(tint_symbol_12) = float4(x_250.x, x_250.y, x_250.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..f632619
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.spvasm
@@ -0,0 +1,670 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 425
+; Schema: 0
+               OpCapability Shader
+        %187 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_32 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %35 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+  %float_256 = OpConstant %float 256
+    %float_1 = OpConstant %float 1
+     %int_10 = OpConstant %int 10
+        %142 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %211 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %412 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %26
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %33 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %35
+          %i = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+        %i_1 = OpVariable %_ptr_Function_int Function %35
+         %40 = OpLoad %int %from
+               OpStore %k %40
+         %42 = OpLoad %int %from
+               OpStore %i %42
+         %44 = OpLoad %int %mid
+         %46 = OpIAdd %int %44 %int_1
+               OpStore %j %46
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %int %mid
+         %54 = OpLoad %int %j
+         %56 = OpLoad %int %to
+         %57 = OpSLessThanEqual %bool %51 %53
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+         %61 = OpSLessThanEqual %bool %54 %56
+               OpBranch %59
+         %59 = OpLabel
+         %62 = OpPhi %bool %57 %50 %61 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %48
+         %63 = OpLabel
+         %66 = OpLoad %int %i
+         %68 = OpAccessChain %_ptr_Private_int %data %66
+         %69 = OpLoad %int %68
+         %70 = OpLoad %int %j
+         %71 = OpAccessChain %_ptr_Private_int %data %70
+         %72 = OpLoad %int %71
+         %73 = OpSLessThan %bool %69 %72
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %77 = OpLoad %int %k
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %k %78
+         %79 = OpLoad %int %i
+         %80 = OpIAdd %int %79 %int_1
+               OpStore %i %80
+         %81 = OpAccessChain %_ptr_Private_int %data %79
+         %82 = OpLoad %int %81
+         %83 = OpAccessChain %_ptr_Private_int %temp %77
+               OpStore %83 %82
+               OpBranch %74
+         %76 = OpLabel
+         %84 = OpLoad %int %k
+         %85 = OpIAdd %int %84 %int_1
+               OpStore %k %85
+         %86 = OpLoad %int %j
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %j %87
+         %88 = OpAccessChain %_ptr_Private_int %data %86
+         %89 = OpLoad %int %88
+         %90 = OpAccessChain %_ptr_Private_int %temp %84
+               OpStore %90 %89
+               OpBranch %74
+         %74 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+               OpLoopMerge %92 %93 None
+               OpBranch %94
+         %94 = OpLabel
+         %98 = OpFOrdLessThan %bool %float_256 %float_1
+         %95 = OpLogicalNot %bool %98
+               OpSelectionMerge %99 None
+               OpBranchConditional %95 %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %93
+         %99 = OpLabel
+        %102 = OpLoad %int %i
+        %103 = OpLoad %int %i
+        %105 = OpLoad %int %mid
+        %107 = OpSLessThan %bool %102 %int_10
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %108
+        %109 = OpLabel
+        %110 = OpSLessThanEqual %bool %103 %105
+               OpBranch %108
+        %108 = OpLabel
+        %111 = OpPhi %bool %107 %99 %110 %109
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %114
+        %113 = OpLabel
+               OpBranch %112
+        %114 = OpLabel
+               OpBranch %92
+        %112 = OpLabel
+        %115 = OpLoad %int %k
+        %116 = OpIAdd %int %115 %int_1
+               OpStore %k %116
+        %117 = OpLoad %int %i
+        %118 = OpIAdd %int %117 %int_1
+               OpStore %i %118
+        %119 = OpAccessChain %_ptr_Private_int %data %117
+        %120 = OpLoad %int %119
+        %121 = OpAccessChain %_ptr_Private_int %temp %115
+               OpStore %121 %120
+               OpBranch %93
+         %93 = OpLabel
+               OpBranch %91
+         %92 = OpLabel
+        %123 = OpLoad %int %from
+               OpStore %i_1 %123
+               OpBranch %124
+        %124 = OpLabel
+               OpLoopMerge %125 %126 None
+               OpBranch %127
+        %127 = OpLabel
+        %128 = OpLoad %int %i_1
+        %130 = OpLoad %int %to
+        %131 = OpSLessThanEqual %bool %128 %130
+               OpSelectionMerge %132 None
+               OpBranchConditional %131 %133 %134
+        %133 = OpLabel
+               OpBranch %132
+        %134 = OpLabel
+               OpBranch %125
+        %132 = OpLabel
+        %135 = OpLoad %int %i_1
+        %136 = OpLoad %int %i_1
+        %137 = OpAccessChain %_ptr_Private_int %temp %136
+        %138 = OpLoad %int %137
+        %139 = OpAccessChain %_ptr_Private_int %data %135
+               OpStore %139 %138
+               OpBranch %126
+        %126 = OpLabel
+        %140 = OpLoad %int %i_1
+        %141 = OpIAdd %int %140 %int_1
+               OpStore %i_1 %141
+               OpBranch %124
+        %125 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %142
+        %144 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %35
+       %high = OpVariable %_ptr_Function_int Function %35
+          %m = OpVariable %_ptr_Function_int Function %35
+        %i_2 = OpVariable %_ptr_Function_int Function %35
+     %from_1 = OpVariable %_ptr_Function_int Function %35
+      %mid_1 = OpVariable %_ptr_Function_int Function %35
+       %to_1 = OpVariable %_ptr_Function_int Function %35
+      %param = OpVariable %_ptr_Function_int Function %35
+    %param_1 = OpVariable %_ptr_Function_int Function %35
+    %param_2 = OpVariable %_ptr_Function_int Function %35
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %157
+        %157 = OpLabel
+               OpLoopMerge %158 %159 None
+               OpBranch %160
+        %160 = OpLabel
+        %161 = OpLoad %int %m
+        %162 = OpLoad %int %high
+        %163 = OpSLessThanEqual %bool %161 %162
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %166
+        %165 = OpLabel
+               OpBranch %164
+        %166 = OpLabel
+               OpBranch %158
+        %164 = OpLabel
+        %167 = OpLoad %int %low
+               OpStore %i_2 %167
+               OpBranch %168
+        %168 = OpLabel
+               OpLoopMerge %169 %170 None
+               OpBranch %171
+        %171 = OpLabel
+        %172 = OpLoad %int %i_2
+        %173 = OpLoad %int %high
+        %174 = OpSLessThan %bool %172 %173
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %177
+        %176 = OpLabel
+               OpBranch %175
+        %177 = OpLabel
+               OpBranch %169
+        %175 = OpLabel
+        %178 = OpLoad %int %i_2
+               OpStore %from_1 %178
+        %179 = OpLoad %int %i_2
+        %180 = OpLoad %int %m
+        %181 = OpIAdd %int %179 %180
+        %182 = OpISub %int %181 %int_1
+               OpStore %mid_1 %182
+        %183 = OpLoad %int %i_2
+        %184 = OpLoad %int %m
+        %185 = OpLoad %int %high
+        %189 = OpIMul %int %int_2 %184
+        %190 = OpIAdd %int %183 %189
+        %191 = OpISub %int %190 %int_1
+        %186 = OpExtInst %int %187 SMin %191 %185
+               OpStore %to_1 %186
+        %192 = OpLoad %int %from_1
+               OpStore %param %192
+        %193 = OpLoad %int %mid_1
+               OpStore %param_1 %193
+        %194 = OpLoad %int %to_1
+               OpStore %param_2 %194
+        %195 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %170
+        %170 = OpLabel
+        %199 = OpLoad %int %m
+        %200 = OpLoad %int %i_2
+        %201 = OpIMul %int %int_2 %199
+        %202 = OpIAdd %int %200 %201
+               OpStore %i_2 %202
+               OpBranch %168
+        %169 = OpLabel
+               OpBranch %159
+        %159 = OpLabel
+        %203 = OpLoad %int %m
+        %204 = OpIMul %int %int_2 %203
+               OpStore %m %204
+               OpBranch %157
+        %158 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %142
+        %206 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %35
+        %j_1 = OpVariable %_ptr_Function_int Function %35
+       %grey = OpVariable %_ptr_Function_float Function %211
+        %214 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %215 = OpLoad %float %214
+        %216 = OpConvertFToS %int %215
+               OpStore %i_3 %216
+               OpBranch %217
+        %217 = OpLabel
+               OpLoopMerge %218 %219 None
+               OpBranch %220
+        %220 = OpLabel
+        %221 = OpLoad %int %i_3
+               OpSelectionMerge %222 None
+               OpSwitch %221 %223 9 %224 8 %225 7 %226 6 %227 5 %228 4 %229 3 %230 2 %231 1 %232 0 %233
+        %224 = OpLabel
+        %234 = OpLoad %int %i_3
+        %235 = OpAccessChain %_ptr_Private_int %data %234
+               OpStore %235 %int_n5
+               OpBranch %222
+        %225 = OpLabel
+        %237 = OpLoad %int %i_3
+        %238 = OpAccessChain %_ptr_Private_int %data %237
+               OpStore %238 %int_n4
+               OpBranch %222
+        %226 = OpLabel
+        %240 = OpLoad %int %i_3
+        %241 = OpAccessChain %_ptr_Private_int %data %240
+               OpStore %241 %int_n3
+               OpBranch %222
+        %227 = OpLabel
+        %243 = OpLoad %int %i_3
+        %244 = OpAccessChain %_ptr_Private_int %data %243
+               OpStore %244 %int_n2
+               OpBranch %222
+        %228 = OpLabel
+        %246 = OpLoad %int %i_3
+        %247 = OpAccessChain %_ptr_Private_int %data %246
+               OpStore %247 %int_n1
+               OpBranch %222
+        %229 = OpLabel
+        %249 = OpLoad %int %i_3
+        %250 = OpAccessChain %_ptr_Private_int %data %249
+               OpStore %250 %int_0
+               OpBranch %222
+        %230 = OpLabel
+        %251 = OpLoad %int %i_3
+        %252 = OpAccessChain %_ptr_Private_int %data %251
+               OpStore %252 %int_1
+               OpBranch %222
+        %231 = OpLabel
+        %253 = OpLoad %int %i_3
+        %254 = OpAccessChain %_ptr_Private_int %data %253
+               OpStore %254 %int_2
+               OpBranch %222
+        %232 = OpLabel
+        %255 = OpLoad %int %i_3
+        %256 = OpAccessChain %_ptr_Private_int %data %255
+               OpStore %256 %int_3
+               OpBranch %222
+        %233 = OpLabel
+        %258 = OpLoad %int %i_3
+        %259 = OpAccessChain %_ptr_Private_int %data %258
+               OpStore %259 %int_4
+               OpBranch %222
+        %223 = OpLabel
+               OpBranch %222
+        %222 = OpLabel
+        %261 = OpLoad %int %i_3
+        %262 = OpIAdd %int %261 %int_1
+               OpStore %i_3 %262
+               OpBranch %219
+        %219 = OpLabel
+        %263 = OpLoad %int %i_3
+        %264 = OpSLessThan %bool %263 %int_10
+               OpSelectionMerge %265 None
+               OpBranchConditional %264 %266 %267
+        %266 = OpLabel
+               OpBranch %265
+        %267 = OpLabel
+               OpBranch %218
+        %265 = OpLabel
+               OpBranch %217
+        %218 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %268
+        %268 = OpLabel
+               OpLoopMerge %269 %270 None
+               OpBranch %271
+        %271 = OpLabel
+        %272 = OpLoad %int %j_1
+        %273 = OpSLessThan %bool %272 %int_10
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %276
+        %275 = OpLabel
+               OpBranch %274
+        %276 = OpLabel
+               OpBranch %269
+        %274 = OpLabel
+        %277 = OpLoad %int %j_1
+        %278 = OpLoad %int %j_1
+        %279 = OpAccessChain %_ptr_Private_int %data %278
+        %280 = OpLoad %int %279
+        %281 = OpAccessChain %_ptr_Private_int %temp %277
+               OpStore %281 %280
+               OpBranch %270
+        %270 = OpLabel
+        %282 = OpLoad %int %j_1
+        %283 = OpIAdd %int %282 %int_1
+               OpStore %j_1 %283
+               OpBranch %268
+        %269 = OpLabel
+        %284 = OpFunctionCall %void %mergeSort_
+        %287 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %288 = OpLoad %float %287
+        %289 = OpConvertFToS %int %288
+        %291 = OpSLessThan %bool %289 %int_30
+               OpSelectionMerge %292 None
+               OpBranchConditional %291 %293 %294
+        %293 = OpLabel
+        %295 = OpAccessChain %_ptr_Private_int %data %int_0
+        %296 = OpLoad %int %295
+        %298 = OpConvertSToF %float %296
+        %300 = OpFDiv %float %298 %float_10
+        %301 = OpFAdd %float %float_0_5 %300
+               OpStore %grey %301
+               OpBranch %292
+        %294 = OpLabel
+        %302 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %303 = OpLoad %float %302
+        %304 = OpConvertFToS %int %303
+        %306 = OpSLessThan %bool %304 %int_60
+               OpSelectionMerge %307 None
+               OpBranchConditional %306 %308 %309
+        %308 = OpLabel
+        %310 = OpAccessChain %_ptr_Private_int %data %int_1
+        %311 = OpLoad %int %310
+        %312 = OpConvertSToF %float %311
+        %313 = OpFDiv %float %312 %float_10
+        %314 = OpFAdd %float %float_0_5 %313
+               OpStore %grey %314
+               OpBranch %307
+        %309 = OpLabel
+        %315 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpConvertFToS %int %316
+        %319 = OpSLessThan %bool %317 %int_90
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %322
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Private_int %data %int_2
+        %324 = OpLoad %int %323
+        %325 = OpConvertSToF %float %324
+        %326 = OpFDiv %float %325 %float_10
+        %327 = OpFAdd %float %float_0_5 %326
+               OpStore %grey %327
+               OpBranch %320
+        %322 = OpLabel
+        %328 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %329 = OpLoad %float %328
+        %330 = OpConvertFToS %int %329
+        %332 = OpSLessThan %bool %330 %int_120
+               OpSelectionMerge %333 None
+               OpBranchConditional %332 %334 %335
+        %334 = OpLabel
+        %336 = OpAccessChain %_ptr_Private_int %data %int_3
+        %337 = OpLoad %int %336
+        %338 = OpConvertSToF %float %337
+        %339 = OpFDiv %float %338 %float_10
+        %340 = OpFAdd %float %float_0_5 %339
+               OpStore %grey %340
+               OpBranch %333
+        %335 = OpLabel
+        %341 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %342 = OpLoad %float %341
+        %343 = OpConvertFToS %int %342
+        %345 = OpSLessThan %bool %343 %int_150
+               OpSelectionMerge %346 None
+               OpBranchConditional %345 %347 %348
+        %347 = OpLabel
+               OpKill
+        %348 = OpLabel
+        %349 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %350 = OpLoad %float %349
+        %351 = OpConvertFToS %int %350
+        %353 = OpSLessThan %bool %351 %int_180
+               OpSelectionMerge %354 None
+               OpBranchConditional %353 %355 %356
+        %355 = OpLabel
+        %358 = OpAccessChain %_ptr_Private_int %data %int_5
+        %359 = OpLoad %int %358
+        %360 = OpConvertSToF %float %359
+        %361 = OpFDiv %float %360 %float_10
+        %362 = OpFAdd %float %float_0_5 %361
+               OpStore %grey %362
+               OpBranch %354
+        %356 = OpLabel
+        %363 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %364 = OpLoad %float %363
+        %365 = OpConvertFToS %int %364
+        %367 = OpSLessThan %bool %365 %int_210
+               OpSelectionMerge %368 None
+               OpBranchConditional %367 %369 %370
+        %369 = OpLabel
+        %372 = OpAccessChain %_ptr_Private_int %data %int_6
+        %373 = OpLoad %int %372
+        %374 = OpConvertSToF %float %373
+        %375 = OpFDiv %float %374 %float_10
+        %376 = OpFAdd %float %float_0_5 %375
+               OpStore %grey %376
+               OpBranch %368
+        %370 = OpLabel
+        %377 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %378 = OpLoad %float %377
+        %379 = OpConvertFToS %int %378
+        %381 = OpSLessThan %bool %379 %int_240
+               OpSelectionMerge %382 None
+               OpBranchConditional %381 %383 %384
+        %383 = OpLabel
+        %386 = OpAccessChain %_ptr_Private_int %data %int_7
+        %387 = OpLoad %int %386
+        %388 = OpConvertSToF %float %387
+        %389 = OpFDiv %float %388 %float_10
+        %390 = OpFAdd %float %float_0_5 %389
+               OpStore %grey %390
+               OpBranch %382
+        %384 = OpLabel
+        %391 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %392 = OpLoad %float %391
+        %393 = OpConvertFToS %int %392
+        %395 = OpSLessThan %bool %393 %int_270
+               OpSelectionMerge %396 None
+               OpBranchConditional %395 %397 %398
+        %397 = OpLabel
+        %400 = OpAccessChain %_ptr_Private_int %data %int_8
+        %401 = OpLoad %int %400
+        %402 = OpConvertSToF %float %401
+        %403 = OpFDiv %float %402 %float_10
+        %404 = OpFAdd %float %float_0_5 %403
+               OpStore %grey %404
+               OpBranch %396
+        %398 = OpLabel
+               OpKill
+        %396 = OpLabel
+               OpBranch %382
+        %382 = OpLabel
+               OpBranch %368
+        %368 = OpLabel
+               OpBranch %354
+        %354 = OpLabel
+               OpBranch %346
+        %346 = OpLabel
+               OpBranch %333
+        %333 = OpLabel
+               OpBranch %320
+        %320 = OpLabel
+               OpBranch %307
+        %307 = OpLabel
+               OpBranch %292
+        %292 = OpLabel
+        %405 = OpLoad %float %grey
+        %407 = OpCompositeConstruct %v3float %405 %405 %405
+        %408 = OpCompositeExtract %float %407 0
+        %409 = OpCompositeExtract %float %407 1
+        %410 = OpCompositeExtract %float %407 2
+        %411 = OpCompositeConstruct %v4float %408 %409 %410 %float_1
+               OpStore %x_GLF_color %411
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %412
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %416 = OpLabel
+        %417 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %417
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %142
+        %419 = OpLabel
+        %420 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %420
+        %421 = OpFunctionCall %void %main_1
+        %423 = OpLoad %v4float %x_GLF_color
+        %424 = OpCompositeConstruct %main_out %423
+        %422 = OpFunctionCall %void %tint_symbol_3 %424
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 219[%219] is not post dominated by the back-edge block 265[%265]
+  %265 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..b26ac12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl.expected.wgsl
@@ -0,0 +1,317 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_256 : i32 = *(from);
+  k = x_256;
+  let x_257 : i32 = *(from);
+  i = x_257;
+  let x_258 : i32 = *(mid);
+  j = (x_258 + 1);
+  loop {
+    let x_264 : i32 = i;
+    let x_265 : i32 = *(mid);
+    let x_267 : i32 = j;
+    let x_268 : i32 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    let x_272 : i32 = i;
+    let x_274 : i32 = data[x_272];
+    let x_275 : i32 = j;
+    let x_277 : i32 = data[x_275];
+    if ((x_274 < x_277)) {
+      let x_282 : i32 = k;
+      k = (x_282 + 1);
+      let x_284 : i32 = i;
+      i = (x_284 + 1);
+      let x_287 : i32 = data[x_284];
+      temp[x_282] = x_287;
+    } else {
+      let x_289 : i32 = k;
+      k = (x_289 + 1);
+      let x_291 : i32 = j;
+      j = (x_291 + 1);
+      let x_294 : i32 = data[x_291];
+      temp[x_289] = x_294;
+    }
+  }
+  loop {
+    if (!((256.0 < 1.0))) {
+    } else {
+      continue;
+    }
+    let x_301 : i32 = i;
+    let x_303 : i32 = i;
+    let x_304 : i32 = *(mid);
+    if (((x_301 < 10) && (x_303 <= x_304))) {
+    } else {
+      break;
+    }
+    let x_309 : i32 = k;
+    k = (x_309 + 1);
+    let x_311 : i32 = i;
+    i = (x_311 + 1);
+    let x_314 : i32 = data[x_311];
+    temp[x_309] = x_314;
+  }
+  let x_316 : i32 = *(from);
+  i_1 = x_316;
+  loop {
+    let x_321 : i32 = i_1;
+    let x_322 : i32 = *(to);
+    if ((x_321 <= x_322)) {
+    } else {
+      break;
+    }
+    let x_325 : i32 = i_1;
+    let x_326 : i32 = i_1;
+    let x_328 : i32 = temp[x_326];
+    data[x_325] = x_328;
+
+    continuing {
+      let x_330 : i32 = i_1;
+      i_1 = (x_330 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_337 : i32 = m;
+    let x_338 : i32 = high;
+    if ((x_337 <= x_338)) {
+    } else {
+      break;
+    }
+    let x_341 : i32 = low;
+    i_2 = x_341;
+    loop {
+      let x_346 : i32 = i_2;
+      let x_347 : i32 = high;
+      if ((x_346 < x_347)) {
+      } else {
+        break;
+      }
+      let x_350 : i32 = i_2;
+      from_1 = x_350;
+      let x_351 : i32 = i_2;
+      let x_352 : i32 = m;
+      mid_1 = ((x_351 + x_352) - 1);
+      let x_355 : i32 = i_2;
+      let x_356 : i32 = m;
+      let x_360 : i32 = high;
+      to_1 = min(((x_355 + (2 * x_356)) - 1), x_360);
+      let x_362 : i32 = from_1;
+      param = x_362;
+      let x_363 : i32 = mid_1;
+      param_1 = x_363;
+      let x_364 : i32 = to_1;
+      param_2 = x_364;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_366 : i32 = m;
+        let x_368 : i32 = i_2;
+        i_2 = (x_368 + (2 * x_366));
+      }
+    }
+
+    continuing {
+      let x_370 : i32 = m;
+      m = (2 * x_370);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_89 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_89);
+  loop {
+    let x_95 : i32 = i_3;
+    switch(x_95) {
+      case 9: {
+        let x_125 : i32 = i_3;
+        data[x_125] = -5;
+      }
+      case 8: {
+        let x_123 : i32 = i_3;
+        data[x_123] = -4;
+      }
+      case 7: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -3;
+      }
+      case 6: {
+        let x_119 : i32 = i_3;
+        data[x_119] = -2;
+      }
+      case 5: {
+        let x_117 : i32 = i_3;
+        data[x_117] = -1;
+      }
+      case 4: {
+        let x_115 : i32 = i_3;
+        data[x_115] = 0;
+      }
+      case 3: {
+        let x_113 : i32 = i_3;
+        data[x_113] = 1;
+      }
+      case 2: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 2;
+      }
+      case 1: {
+        let x_109 : i32 = i_3;
+        data[x_109] = 3;
+      }
+      case 0: {
+        let x_107 : i32 = i_3;
+        data[x_107] = 4;
+      }
+      default: {
+      }
+    }
+    let x_127 : i32 = i_3;
+    i_3 = (x_127 + 1);
+
+    continuing {
+      let x_129 : i32 = i_3;
+      if ((x_129 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_135 : i32 = j_1;
+    if ((x_135 < 10)) {
+    } else {
+      break;
+    }
+    let x_138 : i32 = j_1;
+    let x_139 : i32 = j_1;
+    let x_141 : i32 = data[x_139];
+    temp[x_138] = x_141;
+
+    continuing {
+      let x_143 : i32 = j_1;
+      j_1 = (x_143 + 1);
+    }
+  }
+  mergeSort_();
+  let x_147 : f32 = gl_FragCoord.y;
+  if ((i32(x_147) < 30)) {
+    let x_154 : i32 = data[0];
+    grey = (0.5 + (f32(x_154) / 10.0));
+  } else {
+    let x_159 : f32 = gl_FragCoord.y;
+    if ((i32(x_159) < 60)) {
+      let x_166 : i32 = data[1];
+      grey = (0.5 + (f32(x_166) / 10.0));
+    } else {
+      let x_171 : f32 = gl_FragCoord.y;
+      if ((i32(x_171) < 90)) {
+        let x_178 : i32 = data[2];
+        grey = (0.5 + (f32(x_178) / 10.0));
+      } else {
+        let x_183 : f32 = gl_FragCoord.y;
+        if ((i32(x_183) < 120)) {
+          let x_190 : i32 = data[3];
+          grey = (0.5 + (f32(x_190) / 10.0));
+        } else {
+          let x_195 : f32 = gl_FragCoord.y;
+          if ((i32(x_195) < 150)) {
+            discard;
+          } else {
+            let x_202 : f32 = gl_FragCoord.y;
+            if ((i32(x_202) < 180)) {
+              let x_209 : i32 = data[5];
+              grey = (0.5 + (f32(x_209) / 10.0));
+            } else {
+              let x_214 : f32 = gl_FragCoord.y;
+              if ((i32(x_214) < 210)) {
+                let x_221 : i32 = data[6];
+                grey = (0.5 + (f32(x_221) / 10.0));
+              } else {
+                let x_226 : f32 = gl_FragCoord.y;
+                if ((i32(x_226) < 240)) {
+                  let x_233 : i32 = data[7];
+                  grey = (0.5 + (f32(x_233) / 10.0));
+                } else {
+                  let x_238 : f32 = gl_FragCoord.y;
+                  if ((i32(x_238) < 270)) {
+                    let x_245 : i32 = data[8];
+                    grey = (0.5 + (f32(x_245) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_249 : f32 = grey;
+  let x_250 : vec3<f32> = vec3<f32>(x_249, x_249, x_249);
+  x_GLF_color = vec4<f32>(x_250.x, x_250.y, x_250.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm
new file mode 100644
index 0000000..682080c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm
@@ -0,0 +1,695 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %40 = OpUndef %int
+         %41 = OpConstantComposite %BST %int_9 %int_n1 %int_n1
+         %42 = OpConstantComposite %BST %int_5 %int_n1 %int_n1
+         %43 = OpConstantComposite %BST %int_12 %int_n1 %int_n1
+      %int_3 = OpConstant %int 3
+         %45 = OpConstantComposite %BST %int_15 %int_n1 %int_n1
+      %int_4 = OpConstant %int 4
+         %47 = OpConstantComposite %BST %int_7 %int_n1 %int_n1
+         %48 = OpConstantComposite %BST %int_8 %int_n1 %int_n1
+         %49 = OpConstantComposite %BST %int_2 %int_n1 %int_n1
+         %50 = OpConstantComposite %BST %int_6 %int_n1 %int_n1
+         %51 = OpConstantComposite %BST %int_17 %int_n1 %int_n1
+         %52 = OpConstantComposite %BST %int_13 %int_n1 %int_n1
+   %int_15_0 = OpConstant %int 15
+    %int_6_0 = OpConstant %int 6
+     %uint_3 = OpConstant %uint 3
+%_ptr_Output_float = OpTypePointer Output %float
+       %main = OpFunction %void None %7
+         %57 = OpLabel
+       %tree = OpVariable %_ptr_Function__arr_BST_uint_10 Function
+         %58 = OpAccessChain %_ptr_Function_BST %tree %int_0
+               OpStore %58 %41
+               OpSelectionMerge %59 None
+               OpSwitch %uint_0 %60
+         %60 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpPhi %int %int_0 %60 %63 %64
+         %65 = OpSLessThanEqual %bool %62 %int_1
+               OpLoopMerge %66 %64 None
+               OpBranchConditional %65 %67 %66
+         %67 = OpLabel
+         %68 = OpAccessChain %_ptr_Function_int %tree %62 %int_0
+         %69 = OpLoad %int %68
+         %70 = OpSLessThanEqual %bool %int_5 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %73 = OpLabel
+         %74 = OpAccessChain %_ptr_Function_int %tree %62 %int_2
+         %75 = OpLoad %int %74
+         %76 = OpIEqual %bool %75 %int_n1
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %79 = OpLabel
+         %80 = OpLoad %int %74
+               OpBranch %64
+         %78 = OpLabel
+               OpStore %74 %int_1
+         %81 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %81 %42
+               OpBranch %66
+         %77 = OpLabel
+               OpUnreachable
+         %72 = OpLabel
+         %82 = OpAccessChain %_ptr_Function_int %tree %62 %int_1
+         %83 = OpLoad %int %82
+         %84 = OpIEqual %bool %83 %int_n1
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %87 = OpLabel
+         %88 = OpLoad %int %82
+               OpBranch %64
+         %86 = OpLabel
+               OpStore %82 %int_1
+         %89 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %89 %42
+               OpBranch %66
+         %85 = OpLabel
+               OpUnreachable
+         %71 = OpLabel
+               OpUnreachable
+         %64 = OpLabel
+         %63 = OpPhi %int %80 %79 %88 %87
+               OpBranch %61
+         %66 = OpLabel
+         %90 = OpPhi %bool %false %61 %true %78 %true %86
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %59 %91
+         %91 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+               OpSelectionMerge %92 None
+               OpSwitch %uint_0 %93
+         %93 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpPhi %int %int_0 %93 %96 %97
+         %98 = OpSLessThanEqual %bool %95 %int_2
+               OpLoopMerge %99 %97 None
+               OpBranchConditional %98 %100 %99
+        %100 = OpLabel
+        %101 = OpAccessChain %_ptr_Function_int %tree %95 %int_0
+        %102 = OpLoad %int %101
+        %103 = OpSLessThanEqual %bool %int_12 %102
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %106 = OpLabel
+        %107 = OpAccessChain %_ptr_Function_int %tree %95 %int_2
+        %108 = OpLoad %int %107
+        %109 = OpIEqual %bool %108 %int_n1
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %112
+        %112 = OpLabel
+        %113 = OpLoad %int %107
+               OpBranch %97
+        %111 = OpLabel
+               OpStore %107 %int_2
+        %114 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %114 %43
+               OpBranch %99
+        %110 = OpLabel
+               OpUnreachable
+        %105 = OpLabel
+        %115 = OpAccessChain %_ptr_Function_int %tree %95 %int_1
+        %116 = OpLoad %int %115
+        %117 = OpIEqual %bool %116 %int_n1
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %120
+        %120 = OpLabel
+        %121 = OpLoad %int %115
+               OpBranch %97
+        %119 = OpLabel
+               OpStore %115 %int_2
+        %122 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %122 %43
+               OpBranch %99
+        %118 = OpLabel
+               OpUnreachable
+        %104 = OpLabel
+               OpUnreachable
+         %97 = OpLabel
+         %96 = OpPhi %int %113 %112 %121 %120
+               OpBranch %94
+         %99 = OpLabel
+        %123 = OpPhi %bool %false %94 %true %111 %true %119
+               OpSelectionMerge %124 None
+               OpBranchConditional %123 %92 %124
+        %124 = OpLabel
+               OpBranch %92
+         %92 = OpLabel
+               OpSelectionMerge %125 None
+               OpSwitch %uint_0 %126
+        %126 = OpLabel
+               OpBranch %127
+        %127 = OpLabel
+        %128 = OpPhi %int %int_0 %126 %129 %130
+        %131 = OpSLessThanEqual %bool %128 %int_3
+               OpLoopMerge %132 %130 None
+               OpBranchConditional %131 %133 %132
+        %133 = OpLabel
+        %134 = OpAccessChain %_ptr_Function_int %tree %128 %int_0
+        %135 = OpLoad %int %134
+        %136 = OpSLessThanEqual %bool %int_15 %135
+               OpSelectionMerge %137 None
+               OpBranchConditional %136 %138 %139
+        %139 = OpLabel
+        %140 = OpAccessChain %_ptr_Function_int %tree %128 %int_2
+        %141 = OpLoad %int %140
+        %142 = OpIEqual %bool %141 %int_n1
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %145
+        %145 = OpLabel
+        %146 = OpLoad %int %140
+               OpBranch %130
+        %144 = OpLabel
+               OpStore %140 %int_3
+        %147 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %147 %45
+               OpBranch %132
+        %143 = OpLabel
+               OpUnreachable
+        %138 = OpLabel
+        %148 = OpAccessChain %_ptr_Function_int %tree %128 %int_1
+        %149 = OpLoad %int %148
+        %150 = OpIEqual %bool %149 %int_n1
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %153
+        %153 = OpLabel
+        %154 = OpLoad %int %148
+               OpBranch %130
+        %152 = OpLabel
+               OpStore %148 %int_3
+        %155 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %155 %45
+               OpBranch %132
+        %151 = OpLabel
+               OpUnreachable
+        %137 = OpLabel
+               OpUnreachable
+        %130 = OpLabel
+        %129 = OpPhi %int %146 %145 %154 %153
+               OpBranch %127
+        %132 = OpLabel
+        %156 = OpPhi %bool %false %127 %true %144 %true %152
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %125 %157
+        %157 = OpLabel
+               OpBranch %125
+        %125 = OpLabel
+               OpSelectionMerge %158 None
+               OpSwitch %uint_0 %159
+        %159 = OpLabel
+               OpBranch %160
+        %160 = OpLabel
+        %161 = OpPhi %int %int_0 %159 %162 %163
+        %164 = OpSLessThanEqual %bool %161 %int_4
+               OpLoopMerge %165 %163 None
+               OpBranchConditional %164 %166 %165
+        %166 = OpLabel
+        %167 = OpAccessChain %_ptr_Function_int %tree %161 %int_0
+        %168 = OpLoad %int %167
+        %169 = OpSLessThanEqual %bool %int_7 %168
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %172
+        %172 = OpLabel
+        %173 = OpAccessChain %_ptr_Function_int %tree %161 %int_2
+        %174 = OpLoad %int %173
+        %175 = OpIEqual %bool %174 %int_n1
+               OpSelectionMerge %176 None
+               OpBranchConditional %175 %177 %178
+        %178 = OpLabel
+        %179 = OpLoad %int %173
+               OpBranch %163
+        %177 = OpLabel
+               OpStore %173 %int_4
+        %180 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %180 %47
+               OpBranch %165
+        %176 = OpLabel
+               OpUnreachable
+        %171 = OpLabel
+        %181 = OpAccessChain %_ptr_Function_int %tree %161 %int_1
+        %182 = OpLoad %int %181
+        %183 = OpIEqual %bool %182 %int_n1
+               OpSelectionMerge %184 None
+               OpBranchConditional %183 %185 %186
+        %186 = OpLabel
+        %187 = OpLoad %int %181
+               OpBranch %163
+        %185 = OpLabel
+               OpStore %181 %int_4
+        %188 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %188 %47
+               OpBranch %165
+        %184 = OpLabel
+               OpUnreachable
+        %170 = OpLabel
+               OpUnreachable
+        %163 = OpLabel
+        %162 = OpPhi %int %179 %178 %187 %186
+               OpBranch %160
+        %165 = OpLabel
+        %189 = OpPhi %bool %false %160 %true %177 %true %185
+               OpSelectionMerge %190 None
+               OpBranchConditional %189 %158 %190
+        %190 = OpLabel
+               OpBranch %158
+        %158 = OpLabel
+               OpSelectionMerge %191 None
+               OpSwitch %uint_0 %192
+        %192 = OpLabel
+               OpBranch %193
+        %193 = OpLabel
+        %194 = OpPhi %int %int_0 %192 %195 %196
+        %197 = OpSLessThanEqual %bool %194 %int_5
+               OpLoopMerge %198 %196 None
+               OpBranchConditional %197 %199 %198
+        %199 = OpLabel
+        %200 = OpAccessChain %_ptr_Function_int %tree %194 %int_0
+        %201 = OpLoad %int %200
+        %202 = OpSLessThanEqual %bool %int_8 %201
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %205
+        %205 = OpLabel
+        %206 = OpAccessChain %_ptr_Function_int %tree %194 %int_2
+        %207 = OpLoad %int %206
+        %208 = OpIEqual %bool %207 %int_n1
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %211
+        %211 = OpLabel
+        %212 = OpLoad %int %206
+               OpBranch %196
+        %210 = OpLabel
+               OpStore %206 %int_5
+        %213 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %213 %48
+               OpBranch %198
+        %209 = OpLabel
+               OpUnreachable
+        %204 = OpLabel
+        %214 = OpAccessChain %_ptr_Function_int %tree %194 %int_1
+        %215 = OpLoad %int %214
+        %216 = OpIEqual %bool %215 %int_n1
+               OpSelectionMerge %217 None
+               OpBranchConditional %216 %218 %219
+        %219 = OpLabel
+        %220 = OpLoad %int %214
+               OpBranch %196
+        %218 = OpLabel
+               OpStore %214 %int_5
+        %221 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %221 %48
+               OpBranch %198
+        %217 = OpLabel
+               OpUnreachable
+        %203 = OpLabel
+               OpUnreachable
+        %196 = OpLabel
+        %195 = OpPhi %int %212 %211 %220 %219
+               OpBranch %193
+        %198 = OpLabel
+        %222 = OpPhi %bool %false %193 %true %210 %true %218
+               OpSelectionMerge %223 None
+               OpBranchConditional %222 %191 %223
+        %223 = OpLabel
+               OpBranch %191
+        %191 = OpLabel
+               OpSelectionMerge %224 None
+               OpSwitch %uint_0 %225
+        %225 = OpLabel
+               OpBranch %226
+        %226 = OpLabel
+        %227 = OpPhi %int %int_0 %225 %228 %229
+        %230 = OpSLessThanEqual %bool %227 %int_6
+               OpLoopMerge %231 %229 None
+               OpBranchConditional %230 %232 %231
+        %232 = OpLabel
+        %233 = OpAccessChain %_ptr_Function_int %tree %227 %int_0
+        %234 = OpLoad %int %233
+        %235 = OpSLessThanEqual %bool %int_2 %234
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %238
+        %238 = OpLabel
+        %239 = OpAccessChain %_ptr_Function_int %tree %227 %int_2
+        %240 = OpLoad %int %239
+        %241 = OpIEqual %bool %240 %int_n1
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %244
+        %244 = OpLabel
+        %245 = OpLoad %int %239
+               OpBranch %229
+        %243 = OpLabel
+               OpStore %239 %int_6
+        %246 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %246 %49
+               OpBranch %231
+        %242 = OpLabel
+               OpUnreachable
+        %237 = OpLabel
+        %247 = OpAccessChain %_ptr_Function_int %tree %227 %int_1
+        %248 = OpLoad %int %247
+        %249 = OpIEqual %bool %248 %int_n1
+               OpSelectionMerge %250 None
+               OpBranchConditional %249 %251 %252
+        %252 = OpLabel
+        %253 = OpLoad %int %247
+               OpBranch %229
+        %251 = OpLabel
+               OpStore %247 %int_6
+        %254 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %254 %49
+               OpBranch %231
+        %250 = OpLabel
+               OpUnreachable
+        %236 = OpLabel
+               OpUnreachable
+        %229 = OpLabel
+        %228 = OpPhi %int %245 %244 %253 %252
+               OpBranch %226
+        %231 = OpLabel
+        %255 = OpPhi %bool %false %226 %true %243 %true %251
+               OpSelectionMerge %256 None
+               OpBranchConditional %255 %224 %256
+        %256 = OpLabel
+               OpBranch %224
+        %224 = OpLabel
+               OpSelectionMerge %257 None
+               OpSwitch %uint_0 %258
+        %258 = OpLabel
+               OpBranch %259
+        %259 = OpLabel
+        %260 = OpPhi %int %int_0 %258 %261 %262
+        %263 = OpSLessThanEqual %bool %260 %int_7
+               OpLoopMerge %264 %262 None
+               OpBranchConditional %263 %265 %264
+        %265 = OpLabel
+        %266 = OpAccessChain %_ptr_Function_int %tree %260 %int_0
+        %267 = OpLoad %int %266
+        %268 = OpSLessThanEqual %bool %int_6 %267
+               OpSelectionMerge %269 None
+               OpBranchConditional %268 %270 %271
+        %271 = OpLabel
+        %272 = OpAccessChain %_ptr_Function_int %tree %260 %int_2
+        %273 = OpLoad %int %272
+        %274 = OpIEqual %bool %273 %int_n1
+               OpSelectionMerge %275 None
+               OpBranchConditional %274 %276 %277
+        %277 = OpLabel
+        %278 = OpLoad %int %272
+               OpBranch %262
+        %276 = OpLabel
+               OpStore %272 %int_7
+        %279 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %279 %50
+               OpBranch %264
+        %275 = OpLabel
+               OpUnreachable
+        %270 = OpLabel
+        %280 = OpAccessChain %_ptr_Function_int %tree %260 %int_1
+        %281 = OpLoad %int %280
+        %282 = OpIEqual %bool %281 %int_n1
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %285
+        %285 = OpLabel
+        %286 = OpLoad %int %280
+               OpBranch %262
+        %284 = OpLabel
+               OpStore %280 %int_7
+        %287 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %287 %50
+               OpBranch %264
+        %283 = OpLabel
+               OpUnreachable
+        %269 = OpLabel
+               OpUnreachable
+        %262 = OpLabel
+        %261 = OpPhi %int %278 %277 %286 %285
+               OpBranch %259
+        %264 = OpLabel
+        %288 = OpPhi %bool %false %259 %true %276 %true %284
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %257 %289
+        %289 = OpLabel
+               OpBranch %257
+        %257 = OpLabel
+               OpSelectionMerge %290 None
+               OpSwitch %uint_0 %291
+        %291 = OpLabel
+               OpBranch %292
+        %292 = OpLabel
+        %293 = OpPhi %int %int_0 %291 %294 %295
+        %296 = OpSLessThanEqual %bool %293 %int_8
+               OpLoopMerge %297 %295 None
+               OpBranchConditional %296 %298 %297
+        %298 = OpLabel
+        %299 = OpAccessChain %_ptr_Function_int %tree %293 %int_0
+        %300 = OpLoad %int %299
+        %301 = OpSLessThanEqual %bool %int_17 %300
+               OpSelectionMerge %302 None
+               OpBranchConditional %301 %303 %304
+        %304 = OpLabel
+        %305 = OpAccessChain %_ptr_Function_int %tree %293 %int_2
+        %306 = OpLoad %int %305
+        %307 = OpIEqual %bool %306 %int_n1
+               OpSelectionMerge %308 None
+               OpBranchConditional %307 %309 %310
+        %310 = OpLabel
+        %311 = OpLoad %int %305
+               OpBranch %295
+        %309 = OpLabel
+               OpStore %305 %int_8
+        %312 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %312 %51
+               OpBranch %297
+        %308 = OpLabel
+               OpUnreachable
+        %303 = OpLabel
+        %313 = OpAccessChain %_ptr_Function_int %tree %293 %int_1
+        %314 = OpLoad %int %313
+        %315 = OpIEqual %bool %314 %int_n1
+               OpSelectionMerge %316 None
+               OpBranchConditional %315 %317 %318
+        %318 = OpLabel
+        %319 = OpLoad %int %313
+               OpBranch %295
+        %317 = OpLabel
+               OpStore %313 %int_8
+        %320 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %320 %51
+               OpBranch %297
+        %316 = OpLabel
+               OpUnreachable
+        %302 = OpLabel
+               OpUnreachable
+        %295 = OpLabel
+        %294 = OpPhi %int %311 %310 %319 %318
+               OpBranch %292
+        %297 = OpLabel
+        %321 = OpPhi %bool %false %292 %true %309 %true %317
+               OpSelectionMerge %322 None
+               OpBranchConditional %321 %290 %322
+        %322 = OpLabel
+               OpBranch %290
+        %290 = OpLabel
+               OpSelectionMerge %323 None
+               OpSwitch %uint_0 %324
+        %324 = OpLabel
+               OpBranch %325
+        %325 = OpLabel
+        %326 = OpPhi %int %int_0 %324 %327 %328
+        %329 = OpSLessThanEqual %bool %326 %int_9
+               OpLoopMerge %330 %328 None
+               OpBranchConditional %329 %331 %330
+        %331 = OpLabel
+        %332 = OpAccessChain %_ptr_Function_int %tree %326 %int_0
+        %333 = OpLoad %int %332
+        %334 = OpSLessThanEqual %bool %int_13 %333
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %337
+        %337 = OpLabel
+        %338 = OpAccessChain %_ptr_Function_int %tree %326 %int_2
+        %339 = OpLoad %int %338
+        %340 = OpIEqual %bool %339 %int_n1
+               OpSelectionMerge %341 None
+               OpBranchConditional %340 %342 %343
+        %343 = OpLabel
+        %344 = OpLoad %int %338
+               OpBranch %328
+        %342 = OpLabel
+               OpStore %338 %int_9
+        %345 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %345 %52
+               OpBranch %330
+        %341 = OpLabel
+               OpUnreachable
+        %336 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_int %tree %326 %int_1
+        %347 = OpLoad %int %346
+        %348 = OpIEqual %bool %347 %int_n1
+               OpSelectionMerge %349 None
+               OpBranchConditional %348 %350 %351
+        %351 = OpLabel
+        %352 = OpLoad %int %346
+               OpBranch %328
+        %350 = OpLabel
+               OpStore %346 %int_9
+        %353 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %353 %52
+               OpBranch %330
+        %349 = OpLabel
+               OpUnreachable
+        %335 = OpLabel
+               OpUnreachable
+        %328 = OpLabel
+        %327 = OpPhi %int %344 %343 %352 %351
+               OpBranch %325
+        %330 = OpLabel
+        %354 = OpPhi %bool %false %325 %true %342 %true %350
+               OpSelectionMerge %355 None
+               OpBranchConditional %354 %323 %355
+        %355 = OpLabel
+               OpBranch %323
+        %323 = OpLabel
+               OpBranch %356
+        %356 = OpLabel
+        %357 = OpPhi %int %40 %323 %358 %359
+        %360 = OpPhi %int %int_0 %323 %361 %359
+        %362 = OpPhi %int %int_0 %323 %363 %359
+        %364 = OpSLessThan %bool %362 %int_20
+        %365 = OpISub %int %int_6_0 %int_15_0
+        %366 = OpULessThanEqual %bool %uint_3 %uint_3
+        %367 = OpSelect %uint %366 %uint_3 %uint_3
+        %368 = OpAccessChain %_ptr_Output_float %_GLF_color %367
+               OpLoopMerge %369 %359 None
+               OpBranchConditional %364 %370 %369
+        %370 = OpLabel
+               OpSelectionMerge %371 None
+               OpSwitch %uint_0 %372
+        %372 = OpLabel
+               OpBranch %373
+        %373 = OpLabel
+        %374 = OpPhi %int %int_0 %372 %375 %376
+        %377 = OpINotEqual %bool %374 %int_n1
+               OpLoopMerge %378 %376 None
+               OpBranchConditional %377 %379 %378
+        %379 = OpLabel
+        %380 = OpAccessChain %_ptr_Function_BST %tree %374
+        %381 = OpLoad %BST %380
+        %382 = OpCompositeExtract %int %381 0
+        %383 = OpCompositeExtract %int %381 1
+        %384 = OpInBoundsAccessChain %_ptr_Output_float %368
+        %385 = OpCompositeExtract %int %381 2
+        %386 = OpIEqual %bool %382 %362
+               OpSelectionMerge %387 None
+               OpBranchConditional %386 %388 %387
+        %388 = OpLabel
+               OpBranch %378
+        %387 = OpLabel
+        %389 = OpLoad %float %384
+        %390 = OpSLessThanEqual %bool %362 %382
+        %391 = OpLogicalNot %bool %390
+        %375 = OpSelect %int %391 %385 %383
+               OpBranch %376
+        %376 = OpLabel
+               OpBranch %373
+        %378 = OpLabel
+        %392 = OpPhi %int %357 %373 %362 %388
+        %393 = OpPhi %bool %false %373 %true %388
+               OpSelectionMerge %394 None
+               OpBranchConditional %393 %371 %394
+        %394 = OpLabel
+               OpBranch %371
+        %371 = OpLabel
+        %358 = OpPhi %int %392 %378 %int_n1 %394
+               OpSelectionMerge %395 None
+               OpSwitch %362 %396 9 %397 5 %397 12 %397 15 %397 7 %397 8 %397 2 %397 6 %397 17 %397 13 %397
+        %397 = OpLabel
+        %398 = OpIEqual %bool %358 %362
+               OpSelectionMerge %399 None
+               OpBranchConditional %398 %400 %399
+        %400 = OpLabel
+        %401 = OpIAdd %int %360 %int_1
+               OpBranch %399
+        %399 = OpLabel
+        %402 = OpPhi %int %360 %397 %401 %400
+               OpBranch %395
+        %396 = OpLabel
+        %403 = OpIEqual %bool %358 %int_n1
+               OpSelectionMerge %404 None
+               OpBranchConditional %403 %405 %404
+        %405 = OpLabel
+        %406 = OpIAdd %int %360 %int_1
+               OpBranch %404
+        %404 = OpLabel
+        %407 = OpPhi %int %360 %396 %406 %405
+               OpBranch %395
+        %395 = OpLabel
+        %361 = OpPhi %int %402 %399 %407 %404
+               OpBranch %359
+        %359 = OpLabel
+        %363 = OpIAdd %int %362 %int_1
+               OpBranch %356
+        %369 = OpLabel
+        %408 = OpIEqual %bool %360 %int_20
+               OpSelectionMerge %409 None
+               OpBranchConditional %408 %410 %411
+        %411 = OpLabel
+               OpStore %_GLF_color %35
+               OpBranch %409
+        %410 = OpLabel
+               OpStore %_GLF_color %34
+               OpBranch %409
+        %409 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..6b3b61f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.hlsl
@@ -0,0 +1,750 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  BST tree[10] = (BST[10])0;
+  int x_360 = 0;
+  int x_62_phi = 0;
+  bool x_90_phi = false;
+  int x_357_phi = 0;
+  int x_360_phi = 0;
+  int x_362_phi = 0;
+  const BST tint_symbol_2 = {9, -1, -1};
+  tree[0] = tint_symbol_2;
+  switch(0u) {
+    default: {
+      x_62_phi = 0;
+      while (true) {
+        int x_88 = 0;
+        int x_80 = 0;
+        int x_63 = 0;
+        int x_63_phi = 0;
+        const int x_62 = x_62_phi;
+        x_90_phi = false;
+        if ((x_62 <= 1)) {
+        } else {
+          break;
+        }
+        const int x_69 = tree[x_62].data;
+        if ((5 <= x_69)) {
+          const int x_82_save = x_62;
+          const int x_83 = tree[x_82_save].leftIndex;
+          if ((x_83 == -1)) {
+            tree[x_82_save].leftIndex = 1;
+            const BST tint_symbol_3 = {5, -1, -1};
+            tree[1] = tint_symbol_3;
+            x_90_phi = true;
+            break;
+          } else {
+            x_88 = tree[x_82_save].leftIndex;
+            x_63_phi = x_88;
+            {
+              x_63 = x_63_phi;
+              x_62_phi = x_63;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_74_save = x_62;
+          const int x_75 = tree[x_74_save].rightIndex;
+          if ((x_75 == -1)) {
+            tree[x_74_save].rightIndex = 1;
+            const BST tint_symbol_4 = {5, -1, -1};
+            tree[1] = tint_symbol_4;
+            x_90_phi = true;
+            break;
+          } else {
+            x_80 = tree[x_74_save].rightIndex;
+            x_63_phi = x_80;
+            {
+              x_63 = x_63_phi;
+              x_62_phi = x_63;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_63 = x_63_phi;
+          x_62_phi = x_63;
+        }
+      }
+      if (x_90_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_95_phi = 0;
+  bool x_123_phi = false;
+  switch(0u) {
+    default: {
+      x_95_phi = 0;
+      while (true) {
+        int x_121 = 0;
+        int x_113 = 0;
+        int x_96 = 0;
+        int x_96_phi = 0;
+        const int x_95 = x_95_phi;
+        x_123_phi = false;
+        if ((x_95 <= 2)) {
+        } else {
+          break;
+        }
+        const int x_102 = tree[x_95].data;
+        if ((12 <= x_102)) {
+          const int x_115_save = x_95;
+          const int x_116 = tree[x_115_save].leftIndex;
+          if ((x_116 == -1)) {
+            tree[x_115_save].leftIndex = 2;
+            const BST tint_symbol_5 = {12, -1, -1};
+            tree[2] = tint_symbol_5;
+            x_123_phi = true;
+            break;
+          } else {
+            x_121 = tree[x_115_save].leftIndex;
+            x_96_phi = x_121;
+            {
+              x_96 = x_96_phi;
+              x_95_phi = x_96;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_107_save = x_95;
+          const int x_108 = tree[x_107_save].rightIndex;
+          if ((x_108 == -1)) {
+            tree[x_107_save].rightIndex = 2;
+            const BST tint_symbol_6 = {12, -1, -1};
+            tree[2] = tint_symbol_6;
+            x_123_phi = true;
+            break;
+          } else {
+            x_113 = tree[x_107_save].rightIndex;
+            x_96_phi = x_113;
+            {
+              x_96 = x_96_phi;
+              x_95_phi = x_96;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_96 = x_96_phi;
+          x_95_phi = x_96;
+        }
+      }
+      if (x_123_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_128_phi = 0;
+  bool x_156_phi = false;
+  switch(0u) {
+    default: {
+      x_128_phi = 0;
+      while (true) {
+        int x_154 = 0;
+        int x_146 = 0;
+        int x_129 = 0;
+        int x_129_phi = 0;
+        const int x_128 = x_128_phi;
+        x_156_phi = false;
+        if ((x_128 <= 3)) {
+        } else {
+          break;
+        }
+        const int x_135 = tree[x_128].data;
+        if ((15 <= x_135)) {
+          const int x_148_save = x_128;
+          const int x_149 = tree[x_148_save].leftIndex;
+          if ((x_149 == -1)) {
+            tree[x_148_save].leftIndex = 3;
+            const BST tint_symbol_7 = {15, -1, -1};
+            tree[3] = tint_symbol_7;
+            x_156_phi = true;
+            break;
+          } else {
+            x_154 = tree[x_148_save].leftIndex;
+            x_129_phi = x_154;
+            {
+              x_129 = x_129_phi;
+              x_128_phi = x_129;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_140_save = x_128;
+          const int x_141 = tree[x_140_save].rightIndex;
+          if ((x_141 == -1)) {
+            tree[x_140_save].rightIndex = 3;
+            const BST tint_symbol_8 = {15, -1, -1};
+            tree[3] = tint_symbol_8;
+            x_156_phi = true;
+            break;
+          } else {
+            x_146 = tree[x_140_save].rightIndex;
+            x_129_phi = x_146;
+            {
+              x_129 = x_129_phi;
+              x_128_phi = x_129;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_129 = x_129_phi;
+          x_128_phi = x_129;
+        }
+      }
+      if (x_156_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_161_phi = 0;
+  bool x_189_phi = false;
+  switch(0u) {
+    default: {
+      x_161_phi = 0;
+      while (true) {
+        int x_187 = 0;
+        int x_179 = 0;
+        int x_162 = 0;
+        int x_162_phi = 0;
+        const int x_161 = x_161_phi;
+        x_189_phi = false;
+        if ((x_161 <= 4)) {
+        } else {
+          break;
+        }
+        const int x_168 = tree[x_161].data;
+        if ((7 <= x_168)) {
+          const int x_181_save = x_161;
+          const int x_182 = tree[x_181_save].leftIndex;
+          if ((x_182 == -1)) {
+            tree[x_181_save].leftIndex = 4;
+            const BST tint_symbol_9 = {7, -1, -1};
+            tree[4] = tint_symbol_9;
+            x_189_phi = true;
+            break;
+          } else {
+            x_187 = tree[x_181_save].leftIndex;
+            x_162_phi = x_187;
+            {
+              x_162 = x_162_phi;
+              x_161_phi = x_162;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_173_save = x_161;
+          const int x_174 = tree[x_173_save].rightIndex;
+          if ((x_174 == -1)) {
+            tree[x_173_save].rightIndex = 4;
+            const BST tint_symbol_10 = {7, -1, -1};
+            tree[4] = tint_symbol_10;
+            x_189_phi = true;
+            break;
+          } else {
+            x_179 = tree[x_173_save].rightIndex;
+            x_162_phi = x_179;
+            {
+              x_162 = x_162_phi;
+              x_161_phi = x_162;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_162 = x_162_phi;
+          x_161_phi = x_162;
+        }
+      }
+      if (x_189_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_194_phi = 0;
+  bool x_222_phi = false;
+  switch(0u) {
+    default: {
+      x_194_phi = 0;
+      while (true) {
+        int x_220 = 0;
+        int x_212 = 0;
+        int x_195 = 0;
+        int x_195_phi = 0;
+        const int x_194 = x_194_phi;
+        x_222_phi = false;
+        if ((x_194 <= 5)) {
+        } else {
+          break;
+        }
+        const int x_201 = tree[x_194].data;
+        if ((8 <= x_201)) {
+          const int x_214_save = x_194;
+          const int x_215 = tree[x_214_save].leftIndex;
+          if ((x_215 == -1)) {
+            tree[x_214_save].leftIndex = 5;
+            const BST tint_symbol_11 = {8, -1, -1};
+            tree[5] = tint_symbol_11;
+            x_222_phi = true;
+            break;
+          } else {
+            x_220 = tree[x_214_save].leftIndex;
+            x_195_phi = x_220;
+            {
+              x_195 = x_195_phi;
+              x_194_phi = x_195;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_206_save = x_194;
+          const int x_207 = tree[x_206_save].rightIndex;
+          if ((x_207 == -1)) {
+            tree[x_206_save].rightIndex = 5;
+            const BST tint_symbol_12 = {8, -1, -1};
+            tree[5] = tint_symbol_12;
+            x_222_phi = true;
+            break;
+          } else {
+            x_212 = tree[x_206_save].rightIndex;
+            x_195_phi = x_212;
+            {
+              x_195 = x_195_phi;
+              x_194_phi = x_195;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_195 = x_195_phi;
+          x_194_phi = x_195;
+        }
+      }
+      if (x_222_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_227_phi = 0;
+  bool x_255_phi = false;
+  switch(0u) {
+    default: {
+      x_227_phi = 0;
+      while (true) {
+        int x_253 = 0;
+        int x_245 = 0;
+        int x_228 = 0;
+        int x_228_phi = 0;
+        const int x_227 = x_227_phi;
+        x_255_phi = false;
+        if ((x_227 <= 6)) {
+        } else {
+          break;
+        }
+        const int x_234 = tree[x_227].data;
+        if ((2 <= x_234)) {
+          const int x_247_save = x_227;
+          const int x_248 = tree[x_247_save].leftIndex;
+          if ((x_248 == -1)) {
+            tree[x_247_save].leftIndex = 6;
+            const BST tint_symbol_13 = {2, -1, -1};
+            tree[6] = tint_symbol_13;
+            x_255_phi = true;
+            break;
+          } else {
+            x_253 = tree[x_247_save].leftIndex;
+            x_228_phi = x_253;
+            {
+              x_228 = x_228_phi;
+              x_227_phi = x_228;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_239_save = x_227;
+          const int x_240 = tree[x_239_save].rightIndex;
+          if ((x_240 == -1)) {
+            tree[x_239_save].rightIndex = 6;
+            const BST tint_symbol_14 = {2, -1, -1};
+            tree[6] = tint_symbol_14;
+            x_255_phi = true;
+            break;
+          } else {
+            x_245 = tree[x_239_save].rightIndex;
+            x_228_phi = x_245;
+            {
+              x_228 = x_228_phi;
+              x_227_phi = x_228;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_228 = x_228_phi;
+          x_227_phi = x_228;
+        }
+      }
+      if (x_255_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_260_phi = 0;
+  bool x_288_phi = false;
+  switch(0u) {
+    default: {
+      x_260_phi = 0;
+      while (true) {
+        int x_286 = 0;
+        int x_278 = 0;
+        int x_261 = 0;
+        int x_261_phi = 0;
+        const int x_260 = x_260_phi;
+        x_288_phi = false;
+        if ((x_260 <= 7)) {
+        } else {
+          break;
+        }
+        const int x_267 = tree[x_260].data;
+        if ((6 <= x_267)) {
+          const int x_280_save = x_260;
+          const int x_281 = tree[x_280_save].leftIndex;
+          if ((x_281 == -1)) {
+            tree[x_280_save].leftIndex = 7;
+            const BST tint_symbol_15 = {6, -1, -1};
+            tree[7] = tint_symbol_15;
+            x_288_phi = true;
+            break;
+          } else {
+            x_286 = tree[x_280_save].leftIndex;
+            x_261_phi = x_286;
+            {
+              x_261 = x_261_phi;
+              x_260_phi = x_261;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_272_save = x_260;
+          const int x_273 = tree[x_272_save].rightIndex;
+          if ((x_273 == -1)) {
+            tree[x_272_save].rightIndex = 7;
+            const BST tint_symbol_16 = {6, -1, -1};
+            tree[7] = tint_symbol_16;
+            x_288_phi = true;
+            break;
+          } else {
+            x_278 = tree[x_272_save].rightIndex;
+            x_261_phi = x_278;
+            {
+              x_261 = x_261_phi;
+              x_260_phi = x_261;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_261 = x_261_phi;
+          x_260_phi = x_261;
+        }
+      }
+      if (x_288_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_293_phi = 0;
+  bool x_321_phi = false;
+  switch(0u) {
+    default: {
+      x_293_phi = 0;
+      while (true) {
+        int x_319 = 0;
+        int x_311 = 0;
+        int x_294 = 0;
+        int x_294_phi = 0;
+        const int x_293 = x_293_phi;
+        x_321_phi = false;
+        if ((x_293 <= 8)) {
+        } else {
+          break;
+        }
+        const int x_300 = tree[x_293].data;
+        if ((17 <= x_300)) {
+          const int x_313_save = x_293;
+          const int x_314 = tree[x_313_save].leftIndex;
+          if ((x_314 == -1)) {
+            tree[x_313_save].leftIndex = 8;
+            const BST tint_symbol_17 = {17, -1, -1};
+            tree[8] = tint_symbol_17;
+            x_321_phi = true;
+            break;
+          } else {
+            x_319 = tree[x_313_save].leftIndex;
+            x_294_phi = x_319;
+            {
+              x_294 = x_294_phi;
+              x_293_phi = x_294;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_305_save = x_293;
+          const int x_306 = tree[x_305_save].rightIndex;
+          if ((x_306 == -1)) {
+            tree[x_305_save].rightIndex = 8;
+            const BST tint_symbol_18 = {17, -1, -1};
+            tree[8] = tint_symbol_18;
+            x_321_phi = true;
+            break;
+          } else {
+            x_311 = tree[x_305_save].rightIndex;
+            x_294_phi = x_311;
+            {
+              x_294 = x_294_phi;
+              x_293_phi = x_294;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_294 = x_294_phi;
+          x_293_phi = x_294;
+        }
+      }
+      if (x_321_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_326_phi = 0;
+  bool x_354_phi = false;
+  switch(0u) {
+    default: {
+      x_326_phi = 0;
+      while (true) {
+        int x_352 = 0;
+        int x_344 = 0;
+        int x_327 = 0;
+        int x_327_phi = 0;
+        const int x_326 = x_326_phi;
+        x_354_phi = false;
+        if ((x_326 <= 9)) {
+        } else {
+          break;
+        }
+        const int x_333 = tree[x_326].data;
+        if ((13 <= x_333)) {
+          const int x_346_save = x_326;
+          const int x_347 = tree[x_346_save].leftIndex;
+          if ((x_347 == -1)) {
+            tree[x_346_save].leftIndex = 9;
+            const BST tint_symbol_19 = {13, -1, -1};
+            tree[9] = tint_symbol_19;
+            x_354_phi = true;
+            break;
+          } else {
+            x_352 = tree[x_346_save].leftIndex;
+            x_327_phi = x_352;
+            {
+              x_327 = x_327_phi;
+              x_326_phi = x_327;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_338_save = x_326;
+          const int x_339 = tree[x_338_save].rightIndex;
+          if ((x_339 == -1)) {
+            tree[x_338_save].rightIndex = 9;
+            const BST tint_symbol_20 = {13, -1, -1};
+            tree[9] = tint_symbol_20;
+            x_354_phi = true;
+            break;
+          } else {
+            x_344 = tree[x_338_save].rightIndex;
+            x_327_phi = x_344;
+            {
+              x_327 = x_327_phi;
+              x_326_phi = x_327;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_327 = x_327_phi;
+          x_326_phi = x_327;
+        }
+      }
+      if (x_354_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  x_357_phi = 0;
+  x_360_phi = 0;
+  x_362_phi = 0;
+  while (true) {
+    int x_392 = 0;
+    int x_402 = 0;
+    int x_407 = 0;
+    int x_363 = 0;
+    int x_358_phi = 0;
+    int x_361_phi = 0;
+    const int x_357 = x_357_phi;
+    x_360 = x_360_phi;
+    const int x_362 = x_362_phi;
+    const int x_365 = (6 - 15);
+    if ((x_362 < 20)) {
+    } else {
+      break;
+    }
+    int x_374_phi = 0;
+    int x_392_phi = 0;
+    bool x_393_phi = false;
+    switch(0u) {
+      default: {
+        x_374_phi = 0;
+        while (true) {
+          const int x_374 = x_374_phi;
+          x_392_phi = x_357;
+          x_393_phi = false;
+          if ((x_374 != -1)) {
+          } else {
+            break;
+          }
+          const BST x_381 = tree[x_374];
+          const int x_382 = x_381.data;
+          const int x_383 = x_381.leftIndex;
+          const int x_385 = x_381.rightIndex;
+          if ((x_382 == x_362)) {
+            x_392_phi = x_362;
+            x_393_phi = true;
+            break;
+          }
+          const float x_389 = x_GLF_color[((3u <= 3u) ? 3u : 3u)];
+          {
+            x_374_phi = (!((x_362 <= x_382)) ? x_385 : x_383);
+          }
+        }
+        x_392 = x_392_phi;
+        const bool x_393 = x_393_phi;
+        x_358_phi = x_392;
+        if (x_393) {
+          break;
+        }
+        x_358_phi = -1;
+        break;
+      }
+    }
+    int x_358 = 0;
+    int x_401 = 0;
+    int x_406 = 0;
+    int x_402_phi = 0;
+    int x_407_phi = 0;
+    x_358 = x_358_phi;
+    switch(x_362) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_402_phi = x_360;
+        if ((x_358 == asint(x_362))) {
+          x_401 = asint((x_360 + asint(1)));
+          x_402_phi = x_401;
+        }
+        x_402 = x_402_phi;
+        x_361_phi = x_402;
+        break;
+      }
+      default: {
+        x_407_phi = x_360;
+        if ((x_358 == asint(-1))) {
+          x_406 = asint((x_360 + asint(1)));
+          x_407_phi = x_406;
+        }
+        x_407 = x_407_phi;
+        x_361_phi = x_407;
+        break;
+      }
+    }
+    const int x_361 = x_361_phi;
+    {
+      x_363 = (x_362 + 1);
+      x_357_phi = x_358;
+      x_360_phi = x_361;
+      x_362_phi = x_363;
+    }
+  }
+  if ((x_360 == asint(20))) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_21 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_21;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.msl
new file mode 100644
index 0000000..94bc881
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.msl
@@ -0,0 +1,764 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_23) {
+  tint_array_wrapper tree = {};
+  int x_360 = 0;
+  int x_62_phi = 0;
+  bool x_90_phi = false;
+  int x_357_phi = 0;
+  int x_360_phi = 0;
+  int x_362_phi = 0;
+  BST const tint_symbol_3 = {.data=9, .leftIndex=-1, .rightIndex=-1};
+  tree.arr[0] = tint_symbol_3;
+  switch(0u) {
+    default: {
+      x_62_phi = 0;
+      while (true) {
+        int x_88 = 0;
+        int x_80 = 0;
+        int x_63 = 0;
+        int x_63_phi = 0;
+        int const x_62 = x_62_phi;
+        x_90_phi = false;
+        if ((x_62 <= 1)) {
+        } else {
+          break;
+        }
+        int const x_69 = tree.arr[x_62].data;
+        if ((5 <= x_69)) {
+          int const x_82_save = x_62;
+          int const x_83 = tree.arr[x_82_save].leftIndex;
+          if ((x_83 == -1)) {
+            tree.arr[x_82_save].leftIndex = 1;
+            BST const tint_symbol_4 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_4;
+            x_90_phi = true;
+            break;
+          } else {
+            x_88 = tree.arr[x_82_save].leftIndex;
+            x_63_phi = x_88;
+            {
+              x_63 = x_63_phi;
+              x_62_phi = x_63;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_74_save = x_62;
+          int const x_75 = tree.arr[x_74_save].rightIndex;
+          if ((x_75 == -1)) {
+            tree.arr[x_74_save].rightIndex = 1;
+            BST const tint_symbol_5 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_5;
+            x_90_phi = true;
+            break;
+          } else {
+            x_80 = tree.arr[x_74_save].rightIndex;
+            x_63_phi = x_80;
+            {
+              x_63 = x_63_phi;
+              x_62_phi = x_63;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_63 = x_63_phi;
+          x_62_phi = x_63;
+        }
+      }
+      bool const x_90 = x_90_phi;
+      if (x_90) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_95_phi = 0;
+  bool x_123_phi = false;
+  switch(0u) {
+    default: {
+      x_95_phi = 0;
+      while (true) {
+        int x_121 = 0;
+        int x_113 = 0;
+        int x_96 = 0;
+        int x_96_phi = 0;
+        int const x_95 = x_95_phi;
+        x_123_phi = false;
+        if ((x_95 <= 2)) {
+        } else {
+          break;
+        }
+        int const x_102 = tree.arr[x_95].data;
+        if ((12 <= x_102)) {
+          int const x_115_save = x_95;
+          int const x_116 = tree.arr[x_115_save].leftIndex;
+          if ((x_116 == -1)) {
+            tree.arr[x_115_save].leftIndex = 2;
+            BST const tint_symbol_6 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[2] = tint_symbol_6;
+            x_123_phi = true;
+            break;
+          } else {
+            x_121 = tree.arr[x_115_save].leftIndex;
+            x_96_phi = x_121;
+            {
+              x_96 = x_96_phi;
+              x_95_phi = x_96;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_107_save = x_95;
+          int const x_108 = tree.arr[x_107_save].rightIndex;
+          if ((x_108 == -1)) {
+            tree.arr[x_107_save].rightIndex = 2;
+            BST const tint_symbol_7 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[2] = tint_symbol_7;
+            x_123_phi = true;
+            break;
+          } else {
+            x_113 = tree.arr[x_107_save].rightIndex;
+            x_96_phi = x_113;
+            {
+              x_96 = x_96_phi;
+              x_95_phi = x_96;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_96 = x_96_phi;
+          x_95_phi = x_96;
+        }
+      }
+      bool const x_123 = x_123_phi;
+      if (x_123) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_128_phi = 0;
+  bool x_156_phi = false;
+  switch(0u) {
+    default: {
+      x_128_phi = 0;
+      while (true) {
+        int x_154 = 0;
+        int x_146 = 0;
+        int x_129 = 0;
+        int x_129_phi = 0;
+        int const x_128 = x_128_phi;
+        x_156_phi = false;
+        if ((x_128 <= 3)) {
+        } else {
+          break;
+        }
+        int const x_135 = tree.arr[x_128].data;
+        if ((15 <= x_135)) {
+          int const x_148_save = x_128;
+          int const x_149 = tree.arr[x_148_save].leftIndex;
+          if ((x_149 == -1)) {
+            tree.arr[x_148_save].leftIndex = 3;
+            BST const tint_symbol_8 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_8;
+            x_156_phi = true;
+            break;
+          } else {
+            x_154 = tree.arr[x_148_save].leftIndex;
+            x_129_phi = x_154;
+            {
+              x_129 = x_129_phi;
+              x_128_phi = x_129;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_140_save = x_128;
+          int const x_141 = tree.arr[x_140_save].rightIndex;
+          if ((x_141 == -1)) {
+            tree.arr[x_140_save].rightIndex = 3;
+            BST const tint_symbol_9 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_9;
+            x_156_phi = true;
+            break;
+          } else {
+            x_146 = tree.arr[x_140_save].rightIndex;
+            x_129_phi = x_146;
+            {
+              x_129 = x_129_phi;
+              x_128_phi = x_129;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_129 = x_129_phi;
+          x_128_phi = x_129;
+        }
+      }
+      bool const x_156 = x_156_phi;
+      if (x_156) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_161_phi = 0;
+  bool x_189_phi = false;
+  switch(0u) {
+    default: {
+      x_161_phi = 0;
+      while (true) {
+        int x_187 = 0;
+        int x_179 = 0;
+        int x_162 = 0;
+        int x_162_phi = 0;
+        int const x_161 = x_161_phi;
+        x_189_phi = false;
+        if ((x_161 <= 4)) {
+        } else {
+          break;
+        }
+        int const x_168 = tree.arr[x_161].data;
+        if ((7 <= x_168)) {
+          int const x_181_save = x_161;
+          int const x_182 = tree.arr[x_181_save].leftIndex;
+          if ((x_182 == -1)) {
+            tree.arr[x_181_save].leftIndex = 4;
+            BST const tint_symbol_10 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_10;
+            x_189_phi = true;
+            break;
+          } else {
+            x_187 = tree.arr[x_181_save].leftIndex;
+            x_162_phi = x_187;
+            {
+              x_162 = x_162_phi;
+              x_161_phi = x_162;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_173_save = x_161;
+          int const x_174 = tree.arr[x_173_save].rightIndex;
+          if ((x_174 == -1)) {
+            tree.arr[x_173_save].rightIndex = 4;
+            BST const tint_symbol_11 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_11;
+            x_189_phi = true;
+            break;
+          } else {
+            x_179 = tree.arr[x_173_save].rightIndex;
+            x_162_phi = x_179;
+            {
+              x_162 = x_162_phi;
+              x_161_phi = x_162;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_162 = x_162_phi;
+          x_161_phi = x_162;
+        }
+      }
+      bool const x_189 = x_189_phi;
+      if (x_189) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_194_phi = 0;
+  bool x_222_phi = false;
+  switch(0u) {
+    default: {
+      x_194_phi = 0;
+      while (true) {
+        int x_220 = 0;
+        int x_212 = 0;
+        int x_195 = 0;
+        int x_195_phi = 0;
+        int const x_194 = x_194_phi;
+        x_222_phi = false;
+        if ((x_194 <= 5)) {
+        } else {
+          break;
+        }
+        int const x_201 = tree.arr[x_194].data;
+        if ((8 <= x_201)) {
+          int const x_214_save = x_194;
+          int const x_215 = tree.arr[x_214_save].leftIndex;
+          if ((x_215 == -1)) {
+            tree.arr[x_214_save].leftIndex = 5;
+            BST const tint_symbol_12 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_12;
+            x_222_phi = true;
+            break;
+          } else {
+            x_220 = tree.arr[x_214_save].leftIndex;
+            x_195_phi = x_220;
+            {
+              x_195 = x_195_phi;
+              x_194_phi = x_195;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_206_save = x_194;
+          int const x_207 = tree.arr[x_206_save].rightIndex;
+          if ((x_207 == -1)) {
+            tree.arr[x_206_save].rightIndex = 5;
+            BST const tint_symbol_13 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_13;
+            x_222_phi = true;
+            break;
+          } else {
+            x_212 = tree.arr[x_206_save].rightIndex;
+            x_195_phi = x_212;
+            {
+              x_195 = x_195_phi;
+              x_194_phi = x_195;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_195 = x_195_phi;
+          x_194_phi = x_195;
+        }
+      }
+      bool const x_222 = x_222_phi;
+      if (x_222) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_227_phi = 0;
+  bool x_255_phi = false;
+  switch(0u) {
+    default: {
+      x_227_phi = 0;
+      while (true) {
+        int x_253 = 0;
+        int x_245 = 0;
+        int x_228 = 0;
+        int x_228_phi = 0;
+        int const x_227 = x_227_phi;
+        x_255_phi = false;
+        if ((x_227 <= 6)) {
+        } else {
+          break;
+        }
+        int const x_234 = tree.arr[x_227].data;
+        if ((2 <= x_234)) {
+          int const x_247_save = x_227;
+          int const x_248 = tree.arr[x_247_save].leftIndex;
+          if ((x_248 == -1)) {
+            tree.arr[x_247_save].leftIndex = 6;
+            BST const tint_symbol_14 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_14;
+            x_255_phi = true;
+            break;
+          } else {
+            x_253 = tree.arr[x_247_save].leftIndex;
+            x_228_phi = x_253;
+            {
+              x_228 = x_228_phi;
+              x_227_phi = x_228;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_239_save = x_227;
+          int const x_240 = tree.arr[x_239_save].rightIndex;
+          if ((x_240 == -1)) {
+            tree.arr[x_239_save].rightIndex = 6;
+            BST const tint_symbol_15 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_15;
+            x_255_phi = true;
+            break;
+          } else {
+            x_245 = tree.arr[x_239_save].rightIndex;
+            x_228_phi = x_245;
+            {
+              x_228 = x_228_phi;
+              x_227_phi = x_228;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_228 = x_228_phi;
+          x_227_phi = x_228;
+        }
+      }
+      bool const x_255 = x_255_phi;
+      if (x_255) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_260_phi = 0;
+  bool x_288_phi = false;
+  switch(0u) {
+    default: {
+      x_260_phi = 0;
+      while (true) {
+        int x_286 = 0;
+        int x_278 = 0;
+        int x_261 = 0;
+        int x_261_phi = 0;
+        int const x_260 = x_260_phi;
+        x_288_phi = false;
+        if ((x_260 <= 7)) {
+        } else {
+          break;
+        }
+        int const x_267 = tree.arr[x_260].data;
+        if ((6 <= x_267)) {
+          int const x_280_save = x_260;
+          int const x_281 = tree.arr[x_280_save].leftIndex;
+          if ((x_281 == -1)) {
+            tree.arr[x_280_save].leftIndex = 7;
+            BST const tint_symbol_16 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_16;
+            x_288_phi = true;
+            break;
+          } else {
+            x_286 = tree.arr[x_280_save].leftIndex;
+            x_261_phi = x_286;
+            {
+              x_261 = x_261_phi;
+              x_260_phi = x_261;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_272_save = x_260;
+          int const x_273 = tree.arr[x_272_save].rightIndex;
+          if ((x_273 == -1)) {
+            tree.arr[x_272_save].rightIndex = 7;
+            BST const tint_symbol_17 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_17;
+            x_288_phi = true;
+            break;
+          } else {
+            x_278 = tree.arr[x_272_save].rightIndex;
+            x_261_phi = x_278;
+            {
+              x_261 = x_261_phi;
+              x_260_phi = x_261;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_261 = x_261_phi;
+          x_260_phi = x_261;
+        }
+      }
+      bool const x_288 = x_288_phi;
+      if (x_288) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_293_phi = 0;
+  bool x_321_phi = false;
+  switch(0u) {
+    default: {
+      x_293_phi = 0;
+      while (true) {
+        int x_319 = 0;
+        int x_311 = 0;
+        int x_294 = 0;
+        int x_294_phi = 0;
+        int const x_293 = x_293_phi;
+        x_321_phi = false;
+        if ((x_293 <= 8)) {
+        } else {
+          break;
+        }
+        int const x_300 = tree.arr[x_293].data;
+        if ((17 <= x_300)) {
+          int const x_313_save = x_293;
+          int const x_314 = tree.arr[x_313_save].leftIndex;
+          if ((x_314 == -1)) {
+            tree.arr[x_313_save].leftIndex = 8;
+            BST const tint_symbol_18 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_18;
+            x_321_phi = true;
+            break;
+          } else {
+            x_319 = tree.arr[x_313_save].leftIndex;
+            x_294_phi = x_319;
+            {
+              x_294 = x_294_phi;
+              x_293_phi = x_294;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_305_save = x_293;
+          int const x_306 = tree.arr[x_305_save].rightIndex;
+          if ((x_306 == -1)) {
+            tree.arr[x_305_save].rightIndex = 8;
+            BST const tint_symbol_19 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_19;
+            x_321_phi = true;
+            break;
+          } else {
+            x_311 = tree.arr[x_305_save].rightIndex;
+            x_294_phi = x_311;
+            {
+              x_294 = x_294_phi;
+              x_293_phi = x_294;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_294 = x_294_phi;
+          x_293_phi = x_294;
+        }
+      }
+      bool const x_321 = x_321_phi;
+      if (x_321) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_326_phi = 0;
+  bool x_354_phi = false;
+  switch(0u) {
+    default: {
+      x_326_phi = 0;
+      while (true) {
+        int x_352 = 0;
+        int x_344 = 0;
+        int x_327 = 0;
+        int x_327_phi = 0;
+        int const x_326 = x_326_phi;
+        x_354_phi = false;
+        if ((x_326 <= 9)) {
+        } else {
+          break;
+        }
+        int const x_333 = tree.arr[x_326].data;
+        if ((13 <= x_333)) {
+          int const x_346_save = x_326;
+          int const x_347 = tree.arr[x_346_save].leftIndex;
+          if ((x_347 == -1)) {
+            tree.arr[x_346_save].leftIndex = 9;
+            BST const tint_symbol_20 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_20;
+            x_354_phi = true;
+            break;
+          } else {
+            x_352 = tree.arr[x_346_save].leftIndex;
+            x_327_phi = x_352;
+            {
+              x_327 = x_327_phi;
+              x_326_phi = x_327;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_338_save = x_326;
+          int const x_339 = tree.arr[x_338_save].rightIndex;
+          if ((x_339 == -1)) {
+            tree.arr[x_338_save].rightIndex = 9;
+            BST const tint_symbol_21 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_21;
+            x_354_phi = true;
+            break;
+          } else {
+            x_344 = tree.arr[x_338_save].rightIndex;
+            x_327_phi = x_344;
+            {
+              x_327 = x_327_phi;
+              x_326_phi = x_327;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_327 = x_327_phi;
+          x_326_phi = x_327;
+        }
+      }
+      bool const x_354 = x_354_phi;
+      if (x_354) {
+        break;
+      }
+      break;
+    }
+  }
+  x_357_phi = 0;
+  x_360_phi = 0;
+  x_362_phi = 0;
+  while (true) {
+    int x_392 = 0;
+    int x_402 = 0;
+    int x_407 = 0;
+    int x_363 = 0;
+    int x_358_phi = 0;
+    int x_361_phi = 0;
+    int const x_357 = x_357_phi;
+    x_360 = x_360_phi;
+    int const x_362 = x_362_phi;
+    int const x_365 = (6 - 15);
+    if ((x_362 < 20)) {
+    } else {
+      break;
+    }
+    int x_374_phi = 0;
+    int x_392_phi = 0;
+    bool x_393_phi = false;
+    switch(0u) {
+      default: {
+        x_374_phi = 0;
+        while (true) {
+          int const x_374 = x_374_phi;
+          x_392_phi = x_357;
+          x_393_phi = false;
+          if ((x_374 != -1)) {
+          } else {
+            break;
+          }
+          BST const x_381 = tree.arr[x_374];
+          int const x_382 = x_381.data;
+          int const x_383 = x_381.leftIndex;
+          int const x_385 = x_381.rightIndex;
+          if ((x_382 == x_362)) {
+            x_392_phi = x_362;
+            x_393_phi = true;
+            break;
+          }
+          float const x_389 = (*(tint_symbol_23))[select(3u, 3u, (3u <= 3u))];
+          {
+            x_374_phi = select(x_383, x_385, !((x_362 <= x_382)));
+          }
+        }
+        x_392 = x_392_phi;
+        bool const x_393 = x_393_phi;
+        x_358_phi = x_392;
+        if (x_393) {
+          break;
+        }
+        x_358_phi = -1;
+        break;
+      }
+    }
+    int x_358 = 0;
+    int x_401 = 0;
+    int x_406 = 0;
+    int x_402_phi = 0;
+    int x_407_phi = 0;
+    x_358 = x_358_phi;
+    switch(x_362) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_402_phi = x_360;
+        if ((x_358 == as_type<int>(x_362))) {
+          x_401 = as_type<int>((x_360 + as_type<int>(1)));
+          x_402_phi = x_401;
+        }
+        x_402 = x_402_phi;
+        x_361_phi = x_402;
+        break;
+      }
+      default: {
+        x_407_phi = x_360;
+        if ((x_358 == as_type<int>(-1))) {
+          x_406 = as_type<int>((x_360 + as_type<int>(1)));
+          x_407_phi = x_406;
+        }
+        x_407 = x_407_phi;
+        x_361_phi = x_407;
+        break;
+      }
+    }
+    int const x_361 = x_361_phi;
+    {
+      x_363 = (x_362 + 1);
+      x_357_phi = x_358;
+      x_360_phi = x_361;
+      x_362_phi = x_363;
+    }
+  }
+  if ((x_360 == as_type<int>(20))) {
+    *(tint_symbol_23) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_23) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_24 = 0.0f;
+  main_1(&(tint_symbol_24));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_24};
+  tint_symbol_1 const tint_symbol_22 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_22;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..9057c70
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.spvasm
@@ -0,0 +1,1174 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 627
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %x_360 "x_360"
+               OpName %x_62_phi "x_62_phi"
+               OpName %x_90_phi "x_90_phi"
+               OpName %x_357_phi "x_357_phi"
+               OpName %x_360_phi "x_360_phi"
+               OpName %x_362_phi "x_362_phi"
+               OpName %x_88 "x_88"
+               OpName %x_80 "x_80"
+               OpName %x_63 "x_63"
+               OpName %x_63_phi "x_63_phi"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_123_phi "x_123_phi"
+               OpName %x_121 "x_121"
+               OpName %x_113 "x_113"
+               OpName %x_96 "x_96"
+               OpName %x_96_phi "x_96_phi"
+               OpName %x_128_phi "x_128_phi"
+               OpName %x_156_phi "x_156_phi"
+               OpName %x_154 "x_154"
+               OpName %x_146 "x_146"
+               OpName %x_129 "x_129"
+               OpName %x_129_phi "x_129_phi"
+               OpName %x_161_phi "x_161_phi"
+               OpName %x_189_phi "x_189_phi"
+               OpName %x_187 "x_187"
+               OpName %x_179 "x_179"
+               OpName %x_162 "x_162"
+               OpName %x_162_phi "x_162_phi"
+               OpName %x_194_phi "x_194_phi"
+               OpName %x_222_phi "x_222_phi"
+               OpName %x_220 "x_220"
+               OpName %x_212 "x_212"
+               OpName %x_195 "x_195"
+               OpName %x_195_phi "x_195_phi"
+               OpName %x_227_phi "x_227_phi"
+               OpName %x_255_phi "x_255_phi"
+               OpName %x_253 "x_253"
+               OpName %x_245 "x_245"
+               OpName %x_228 "x_228"
+               OpName %x_228_phi "x_228_phi"
+               OpName %x_260_phi "x_260_phi"
+               OpName %x_288_phi "x_288_phi"
+               OpName %x_286 "x_286"
+               OpName %x_278 "x_278"
+               OpName %x_261 "x_261"
+               OpName %x_261_phi "x_261_phi"
+               OpName %x_293_phi "x_293_phi"
+               OpName %x_321_phi "x_321_phi"
+               OpName %x_319 "x_319"
+               OpName %x_311 "x_311"
+               OpName %x_294 "x_294"
+               OpName %x_294_phi "x_294_phi"
+               OpName %x_326_phi "x_326_phi"
+               OpName %x_354_phi "x_354_phi"
+               OpName %x_352 "x_352"
+               OpName %x_344 "x_344"
+               OpName %x_327 "x_327"
+               OpName %x_327_phi "x_327_phi"
+               OpName %x_392 "x_392"
+               OpName %x_402 "x_402"
+               OpName %x_407 "x_407"
+               OpName %x_363 "x_363"
+               OpName %x_358_phi "x_358_phi"
+               OpName %x_361_phi "x_361_phi"
+               OpName %x_374_phi "x_374_phi"
+               OpName %x_392_phi "x_392_phi"
+               OpName %x_393_phi "x_393_phi"
+               OpName %x_358 "x_358"
+               OpName %x_401 "x_401"
+               OpName %x_406 "x_406"
+               OpName %x_402_phi "x_402_phi"
+               OpName %x_407_phi "x_407_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %19 = OpConstantNull %_arr_BST_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+%_ptr_Function_BST = OpTypePointer Function %BST
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+         %36 = OpConstantComposite %BST %int_9 %int_n1 %int_n1
+     %uint_0 = OpConstant %uint 0
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+         %71 = OpConstantComposite %BST %int_5 %int_n1 %int_n1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+      %int_2 = OpConstant %int 2
+     %int_12 = OpConstant %int 12
+        %126 = OpConstantComposite %BST %int_12 %int_n1 %int_n1
+      %int_3 = OpConstant %int 3
+     %int_15 = OpConstant %int 15
+        %179 = OpConstantComposite %BST %int_15 %int_n1 %int_n1
+      %int_4 = OpConstant %int 4
+      %int_7 = OpConstant %int 7
+        %232 = OpConstantComposite %BST %int_7 %int_n1 %int_n1
+      %int_8 = OpConstant %int 8
+        %284 = OpConstantComposite %BST %int_8 %int_n1 %int_n1
+      %int_6 = OpConstant %int 6
+        %336 = OpConstantComposite %BST %int_2 %int_n1 %int_n1
+        %387 = OpConstantComposite %BST %int_6 %int_n1 %int_n1
+     %int_17 = OpConstant %int 17
+        %439 = OpConstantComposite %BST %int_17 %int_n1 %int_n1
+     %int_13 = OpConstant %int 13
+        %491 = OpConstantComposite %BST %int_13 %int_n1 %int_n1
+     %int_20 = OpConstant %int 20
+     %uint_3 = OpConstant %uint 3
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %613 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %614 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %615 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %tree = OpVariable %_ptr_Function__arr_BST_uint_10 Function %19
+      %x_360 = OpVariable %_ptr_Function_int Function %22
+   %x_62_phi = OpVariable %_ptr_Function_int Function %22
+   %x_90_phi = OpVariable %_ptr_Function_bool Function %27
+  %x_357_phi = OpVariable %_ptr_Function_int Function %22
+  %x_360_phi = OpVariable %_ptr_Function_int Function %22
+  %x_362_phi = OpVariable %_ptr_Function_int Function %22
+       %x_88 = OpVariable %_ptr_Function_int Function %22
+       %x_80 = OpVariable %_ptr_Function_int Function %22
+       %x_63 = OpVariable %_ptr_Function_int Function %22
+   %x_63_phi = OpVariable %_ptr_Function_int Function %22
+   %x_95_phi = OpVariable %_ptr_Function_int Function %22
+  %x_123_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_121 = OpVariable %_ptr_Function_int Function %22
+      %x_113 = OpVariable %_ptr_Function_int Function %22
+       %x_96 = OpVariable %_ptr_Function_int Function %22
+   %x_96_phi = OpVariable %_ptr_Function_int Function %22
+  %x_128_phi = OpVariable %_ptr_Function_int Function %22
+  %x_156_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_154 = OpVariable %_ptr_Function_int Function %22
+      %x_146 = OpVariable %_ptr_Function_int Function %22
+      %x_129 = OpVariable %_ptr_Function_int Function %22
+  %x_129_phi = OpVariable %_ptr_Function_int Function %22
+  %x_161_phi = OpVariable %_ptr_Function_int Function %22
+  %x_189_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_187 = OpVariable %_ptr_Function_int Function %22
+      %x_179 = OpVariable %_ptr_Function_int Function %22
+      %x_162 = OpVariable %_ptr_Function_int Function %22
+  %x_162_phi = OpVariable %_ptr_Function_int Function %22
+  %x_194_phi = OpVariable %_ptr_Function_int Function %22
+  %x_222_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_220 = OpVariable %_ptr_Function_int Function %22
+      %x_212 = OpVariable %_ptr_Function_int Function %22
+      %x_195 = OpVariable %_ptr_Function_int Function %22
+  %x_195_phi = OpVariable %_ptr_Function_int Function %22
+  %x_227_phi = OpVariable %_ptr_Function_int Function %22
+  %x_255_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_253 = OpVariable %_ptr_Function_int Function %22
+      %x_245 = OpVariable %_ptr_Function_int Function %22
+      %x_228 = OpVariable %_ptr_Function_int Function %22
+  %x_228_phi = OpVariable %_ptr_Function_int Function %22
+  %x_260_phi = OpVariable %_ptr_Function_int Function %22
+  %x_288_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_286 = OpVariable %_ptr_Function_int Function %22
+      %x_278 = OpVariable %_ptr_Function_int Function %22
+      %x_261 = OpVariable %_ptr_Function_int Function %22
+  %x_261_phi = OpVariable %_ptr_Function_int Function %22
+  %x_293_phi = OpVariable %_ptr_Function_int Function %22
+  %x_321_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_319 = OpVariable %_ptr_Function_int Function %22
+      %x_311 = OpVariable %_ptr_Function_int Function %22
+      %x_294 = OpVariable %_ptr_Function_int Function %22
+  %x_294_phi = OpVariable %_ptr_Function_int Function %22
+  %x_326_phi = OpVariable %_ptr_Function_int Function %22
+  %x_354_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_352 = OpVariable %_ptr_Function_int Function %22
+      %x_344 = OpVariable %_ptr_Function_int Function %22
+      %x_327 = OpVariable %_ptr_Function_int Function %22
+  %x_327_phi = OpVariable %_ptr_Function_int Function %22
+      %x_392 = OpVariable %_ptr_Function_int Function %22
+      %x_402 = OpVariable %_ptr_Function_int Function %22
+      %x_407 = OpVariable %_ptr_Function_int Function %22
+      %x_363 = OpVariable %_ptr_Function_int Function %22
+  %x_358_phi = OpVariable %_ptr_Function_int Function %22
+  %x_361_phi = OpVariable %_ptr_Function_int Function %22
+  %x_374_phi = OpVariable %_ptr_Function_int Function %22
+  %x_392_phi = OpVariable %_ptr_Function_int Function %22
+  %x_393_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_358 = OpVariable %_ptr_Function_int Function %22
+      %x_401 = OpVariable %_ptr_Function_int Function %22
+      %x_406 = OpVariable %_ptr_Function_int Function %22
+  %x_402_phi = OpVariable %_ptr_Function_int Function %22
+  %x_407_phi = OpVariable %_ptr_Function_int Function %22
+         %33 = OpAccessChain %_ptr_Function_BST %tree %int_0
+               OpStore %33 %36
+               OpSelectionMerge %37 None
+               OpSwitch %uint_0 %39
+         %39 = OpLabel
+               OpStore %x_62_phi %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %48 = OpLoad %int %x_62_phi
+               OpStore %x_90_phi %false
+         %51 = OpSLessThanEqual %bool %48 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %41
+         %52 = OpLabel
+         %55 = OpAccessChain %_ptr_Function_int %tree %48 %uint_0
+         %56 = OpLoad %int %55
+         %58 = OpSLessThanEqual %bool %int_5 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+         %64 = OpLoad %int %63
+         %65 = OpIEqual %bool %64 %int_n1
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+         %69 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+               OpStore %69 %int_1
+         %70 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %70 %71
+               OpStore %x_90_phi %true
+               OpBranch %41
+         %68 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+         %74 = OpLoad %int %73
+               OpStore %x_88 %74
+         %75 = OpLoad %int %x_88
+               OpStore %x_63_phi %75
+               OpBranch %42
+         %66 = OpLabel
+               OpReturn
+         %61 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+         %78 = OpLoad %int %77
+         %79 = OpIEqual %bool %78 %int_n1
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+               OpStore %83 %int_1
+         %84 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %84 %71
+               OpStore %x_90_phi %true
+               OpBranch %41
+         %82 = OpLabel
+         %85 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+         %86 = OpLoad %int %85
+               OpStore %x_80 %86
+         %87 = OpLoad %int %x_80
+               OpStore %x_63_phi %87
+               OpBranch %42
+         %80 = OpLabel
+               OpReturn
+         %59 = OpLabel
+               OpReturn
+         %42 = OpLabel
+         %88 = OpLoad %int %x_63_phi
+               OpStore %x_63 %88
+         %89 = OpLoad %int %x_63
+               OpStore %x_62_phi %89
+               OpBranch %40
+         %41 = OpLabel
+         %90 = OpLoad %bool %x_90_phi
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+               OpBranch %37
+         %91 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpSelectionMerge %95 None
+               OpSwitch %uint_0 %96
+         %96 = OpLabel
+               OpStore %x_95_phi %int_0
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %105 = OpLoad %int %x_95_phi
+               OpStore %x_123_phi %false
+        %107 = OpSLessThanEqual %bool %105 %int_2
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %110
+        %109 = OpLabel
+               OpBranch %108
+        %110 = OpLabel
+               OpBranch %98
+        %108 = OpLabel
+        %111 = OpAccessChain %_ptr_Function_int %tree %105 %uint_0
+        %112 = OpLoad %int %111
+        %114 = OpSLessThanEqual %bool %int_12 %112
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %117
+        %116 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+        %119 = OpLoad %int %118
+        %120 = OpIEqual %bool %119 %int_n1
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+        %124 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+               OpStore %124 %int_2
+        %125 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %125 %126
+               OpStore %x_123_phi %true
+               OpBranch %98
+        %123 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+        %128 = OpLoad %int %127
+               OpStore %x_121 %128
+        %129 = OpLoad %int %x_121
+               OpStore %x_96_phi %129
+               OpBranch %99
+        %121 = OpLabel
+               OpReturn
+        %117 = OpLabel
+        %130 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+        %131 = OpLoad %int %130
+        %132 = OpIEqual %bool %131 %int_n1
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %134 = OpLabel
+        %136 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+               OpStore %136 %int_2
+        %137 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %137 %126
+               OpStore %x_123_phi %true
+               OpBranch %98
+        %135 = OpLabel
+        %138 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+        %139 = OpLoad %int %138
+               OpStore %x_113 %139
+        %140 = OpLoad %int %x_113
+               OpStore %x_96_phi %140
+               OpBranch %99
+        %133 = OpLabel
+               OpReturn
+        %115 = OpLabel
+               OpReturn
+         %99 = OpLabel
+        %141 = OpLoad %int %x_96_phi
+               OpStore %x_96 %141
+        %142 = OpLoad %int %x_96
+               OpStore %x_95_phi %142
+               OpBranch %97
+         %98 = OpLabel
+        %143 = OpLoad %bool %x_123_phi
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %144
+        %145 = OpLabel
+               OpBranch %95
+        %144 = OpLabel
+               OpBranch %95
+         %95 = OpLabel
+               OpSelectionMerge %148 None
+               OpSwitch %uint_0 %149
+        %149 = OpLabel
+               OpStore %x_128_phi %int_0
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %158 = OpLoad %int %x_128_phi
+               OpStore %x_156_phi %false
+        %160 = OpSLessThanEqual %bool %158 %int_3
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+               OpBranch %161
+        %163 = OpLabel
+               OpBranch %151
+        %161 = OpLabel
+        %164 = OpAccessChain %_ptr_Function_int %tree %158 %uint_0
+        %165 = OpLoad %int %164
+        %167 = OpSLessThanEqual %bool %int_15 %165
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+        %171 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+        %172 = OpLoad %int %171
+        %173 = OpIEqual %bool %172 %int_n1
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+        %177 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+               OpStore %177 %int_3
+        %178 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %178 %179
+               OpStore %x_156_phi %true
+               OpBranch %151
+        %176 = OpLabel
+        %180 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+        %181 = OpLoad %int %180
+               OpStore %x_154 %181
+        %182 = OpLoad %int %x_154
+               OpStore %x_129_phi %182
+               OpBranch %152
+        %174 = OpLabel
+               OpReturn
+        %170 = OpLabel
+        %183 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+        %184 = OpLoad %int %183
+        %185 = OpIEqual %bool %184 %int_n1
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+        %189 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+               OpStore %189 %int_3
+        %190 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %190 %179
+               OpStore %x_156_phi %true
+               OpBranch %151
+        %188 = OpLabel
+        %191 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+        %192 = OpLoad %int %191
+               OpStore %x_146 %192
+        %193 = OpLoad %int %x_146
+               OpStore %x_129_phi %193
+               OpBranch %152
+        %186 = OpLabel
+               OpReturn
+        %168 = OpLabel
+               OpReturn
+        %152 = OpLabel
+        %194 = OpLoad %int %x_129_phi
+               OpStore %x_129 %194
+        %195 = OpLoad %int %x_129
+               OpStore %x_128_phi %195
+               OpBranch %150
+        %151 = OpLabel
+        %196 = OpLoad %bool %x_156_phi
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+               OpBranch %148
+        %197 = OpLabel
+               OpBranch %148
+        %148 = OpLabel
+               OpSelectionMerge %201 None
+               OpSwitch %uint_0 %202
+        %202 = OpLabel
+               OpStore %x_161_phi %int_0
+               OpBranch %203
+        %203 = OpLabel
+               OpLoopMerge %204 %205 None
+               OpBranch %206
+        %206 = OpLabel
+        %211 = OpLoad %int %x_161_phi
+               OpStore %x_189_phi %false
+        %213 = OpSLessThanEqual %bool %211 %int_4
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %204
+        %214 = OpLabel
+        %217 = OpAccessChain %_ptr_Function_int %tree %211 %uint_0
+        %218 = OpLoad %int %217
+        %220 = OpSLessThanEqual %bool %int_7 %218
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %223
+        %222 = OpLabel
+        %224 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+        %225 = OpLoad %int %224
+        %226 = OpIEqual %bool %225 %int_n1
+               OpSelectionMerge %227 None
+               OpBranchConditional %226 %228 %229
+        %228 = OpLabel
+        %230 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+               OpStore %230 %int_4
+        %231 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %231 %232
+               OpStore %x_189_phi %true
+               OpBranch %204
+        %229 = OpLabel
+        %233 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+        %234 = OpLoad %int %233
+               OpStore %x_187 %234
+        %235 = OpLoad %int %x_187
+               OpStore %x_162_phi %235
+               OpBranch %205
+        %227 = OpLabel
+               OpReturn
+        %223 = OpLabel
+        %236 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+        %237 = OpLoad %int %236
+        %238 = OpIEqual %bool %237 %int_n1
+               OpSelectionMerge %239 None
+               OpBranchConditional %238 %240 %241
+        %240 = OpLabel
+        %242 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+               OpStore %242 %int_4
+        %243 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %243 %232
+               OpStore %x_189_phi %true
+               OpBranch %204
+        %241 = OpLabel
+        %244 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+        %245 = OpLoad %int %244
+               OpStore %x_179 %245
+        %246 = OpLoad %int %x_179
+               OpStore %x_162_phi %246
+               OpBranch %205
+        %239 = OpLabel
+               OpReturn
+        %221 = OpLabel
+               OpReturn
+        %205 = OpLabel
+        %247 = OpLoad %int %x_162_phi
+               OpStore %x_162 %247
+        %248 = OpLoad %int %x_162
+               OpStore %x_161_phi %248
+               OpBranch %203
+        %204 = OpLabel
+        %249 = OpLoad %bool %x_189_phi
+               OpSelectionMerge %250 None
+               OpBranchConditional %249 %251 %250
+        %251 = OpLabel
+               OpBranch %201
+        %250 = OpLabel
+               OpBranch %201
+        %201 = OpLabel
+               OpSelectionMerge %254 None
+               OpSwitch %uint_0 %255
+        %255 = OpLabel
+               OpStore %x_194_phi %int_0
+               OpBranch %256
+        %256 = OpLabel
+               OpLoopMerge %257 %258 None
+               OpBranch %259
+        %259 = OpLabel
+        %264 = OpLoad %int %x_194_phi
+               OpStore %x_222_phi %false
+        %265 = OpSLessThanEqual %bool %264 %int_5
+               OpSelectionMerge %266 None
+               OpBranchConditional %265 %267 %268
+        %267 = OpLabel
+               OpBranch %266
+        %268 = OpLabel
+               OpBranch %257
+        %266 = OpLabel
+        %269 = OpAccessChain %_ptr_Function_int %tree %264 %uint_0
+        %270 = OpLoad %int %269
+        %272 = OpSLessThanEqual %bool %int_8 %270
+               OpSelectionMerge %273 None
+               OpBranchConditional %272 %274 %275
+        %274 = OpLabel
+        %276 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+        %277 = OpLoad %int %276
+        %278 = OpIEqual %bool %277 %int_n1
+               OpSelectionMerge %279 None
+               OpBranchConditional %278 %280 %281
+        %280 = OpLabel
+        %282 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+               OpStore %282 %int_5
+        %283 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %283 %284
+               OpStore %x_222_phi %true
+               OpBranch %257
+        %281 = OpLabel
+        %285 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+        %286 = OpLoad %int %285
+               OpStore %x_220 %286
+        %287 = OpLoad %int %x_220
+               OpStore %x_195_phi %287
+               OpBranch %258
+        %279 = OpLabel
+               OpReturn
+        %275 = OpLabel
+        %288 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+        %289 = OpLoad %int %288
+        %290 = OpIEqual %bool %289 %int_n1
+               OpSelectionMerge %291 None
+               OpBranchConditional %290 %292 %293
+        %292 = OpLabel
+        %294 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+               OpStore %294 %int_5
+        %295 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %295 %284
+               OpStore %x_222_phi %true
+               OpBranch %257
+        %293 = OpLabel
+        %296 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+        %297 = OpLoad %int %296
+               OpStore %x_212 %297
+        %298 = OpLoad %int %x_212
+               OpStore %x_195_phi %298
+               OpBranch %258
+        %291 = OpLabel
+               OpReturn
+        %273 = OpLabel
+               OpReturn
+        %258 = OpLabel
+        %299 = OpLoad %int %x_195_phi
+               OpStore %x_195 %299
+        %300 = OpLoad %int %x_195
+               OpStore %x_194_phi %300
+               OpBranch %256
+        %257 = OpLabel
+        %301 = OpLoad %bool %x_222_phi
+               OpSelectionMerge %302 None
+               OpBranchConditional %301 %303 %302
+        %303 = OpLabel
+               OpBranch %254
+        %302 = OpLabel
+               OpBranch %254
+        %254 = OpLabel
+               OpSelectionMerge %306 None
+               OpSwitch %uint_0 %307
+        %307 = OpLabel
+               OpStore %x_227_phi %int_0
+               OpBranch %308
+        %308 = OpLabel
+               OpLoopMerge %309 %310 None
+               OpBranch %311
+        %311 = OpLabel
+        %316 = OpLoad %int %x_227_phi
+               OpStore %x_255_phi %false
+        %318 = OpSLessThanEqual %bool %316 %int_6
+               OpSelectionMerge %319 None
+               OpBranchConditional %318 %320 %321
+        %320 = OpLabel
+               OpBranch %319
+        %321 = OpLabel
+               OpBranch %309
+        %319 = OpLabel
+        %322 = OpAccessChain %_ptr_Function_int %tree %316 %uint_0
+        %323 = OpLoad %int %322
+        %324 = OpSLessThanEqual %bool %int_2 %323
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %327
+        %326 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+        %329 = OpLoad %int %328
+        %330 = OpIEqual %bool %329 %int_n1
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %333
+        %332 = OpLabel
+        %334 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+               OpStore %334 %int_6
+        %335 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %335 %336
+               OpStore %x_255_phi %true
+               OpBranch %309
+        %333 = OpLabel
+        %337 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+        %338 = OpLoad %int %337
+               OpStore %x_253 %338
+        %339 = OpLoad %int %x_253
+               OpStore %x_228_phi %339
+               OpBranch %310
+        %331 = OpLabel
+               OpReturn
+        %327 = OpLabel
+        %340 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+        %341 = OpLoad %int %340
+        %342 = OpIEqual %bool %341 %int_n1
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+               OpStore %346 %int_6
+        %347 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %347 %336
+               OpStore %x_255_phi %true
+               OpBranch %309
+        %345 = OpLabel
+        %348 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+        %349 = OpLoad %int %348
+               OpStore %x_245 %349
+        %350 = OpLoad %int %x_245
+               OpStore %x_228_phi %350
+               OpBranch %310
+        %343 = OpLabel
+               OpReturn
+        %325 = OpLabel
+               OpReturn
+        %310 = OpLabel
+        %351 = OpLoad %int %x_228_phi
+               OpStore %x_228 %351
+        %352 = OpLoad %int %x_228
+               OpStore %x_227_phi %352
+               OpBranch %308
+        %309 = OpLabel
+        %353 = OpLoad %bool %x_255_phi
+               OpSelectionMerge %354 None
+               OpBranchConditional %353 %355 %354
+        %355 = OpLabel
+               OpBranch %306
+        %354 = OpLabel
+               OpBranch %306
+        %306 = OpLabel
+               OpSelectionMerge %358 None
+               OpSwitch %uint_0 %359
+        %359 = OpLabel
+               OpStore %x_260_phi %int_0
+               OpBranch %360
+        %360 = OpLabel
+               OpLoopMerge %361 %362 None
+               OpBranch %363
+        %363 = OpLabel
+        %368 = OpLoad %int %x_260_phi
+               OpStore %x_288_phi %false
+        %369 = OpSLessThanEqual %bool %368 %int_7
+               OpSelectionMerge %370 None
+               OpBranchConditional %369 %371 %372
+        %371 = OpLabel
+               OpBranch %370
+        %372 = OpLabel
+               OpBranch %361
+        %370 = OpLabel
+        %373 = OpAccessChain %_ptr_Function_int %tree %368 %uint_0
+        %374 = OpLoad %int %373
+        %375 = OpSLessThanEqual %bool %int_6 %374
+               OpSelectionMerge %376 None
+               OpBranchConditional %375 %377 %378
+        %377 = OpLabel
+        %379 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+        %380 = OpLoad %int %379
+        %381 = OpIEqual %bool %380 %int_n1
+               OpSelectionMerge %382 None
+               OpBranchConditional %381 %383 %384
+        %383 = OpLabel
+        %385 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+               OpStore %385 %int_7
+        %386 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %386 %387
+               OpStore %x_288_phi %true
+               OpBranch %361
+        %384 = OpLabel
+        %388 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+        %389 = OpLoad %int %388
+               OpStore %x_286 %389
+        %390 = OpLoad %int %x_286
+               OpStore %x_261_phi %390
+               OpBranch %362
+        %382 = OpLabel
+               OpReturn
+        %378 = OpLabel
+        %391 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+        %392 = OpLoad %int %391
+        %393 = OpIEqual %bool %392 %int_n1
+               OpSelectionMerge %394 None
+               OpBranchConditional %393 %395 %396
+        %395 = OpLabel
+        %397 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+               OpStore %397 %int_7
+        %398 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %398 %387
+               OpStore %x_288_phi %true
+               OpBranch %361
+        %396 = OpLabel
+        %399 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+        %400 = OpLoad %int %399
+               OpStore %x_278 %400
+        %401 = OpLoad %int %x_278
+               OpStore %x_261_phi %401
+               OpBranch %362
+        %394 = OpLabel
+               OpReturn
+        %376 = OpLabel
+               OpReturn
+        %362 = OpLabel
+        %402 = OpLoad %int %x_261_phi
+               OpStore %x_261 %402
+        %403 = OpLoad %int %x_261
+               OpStore %x_260_phi %403
+               OpBranch %360
+        %361 = OpLabel
+        %404 = OpLoad %bool %x_288_phi
+               OpSelectionMerge %405 None
+               OpBranchConditional %404 %406 %405
+        %406 = OpLabel
+               OpBranch %358
+        %405 = OpLabel
+               OpBranch %358
+        %358 = OpLabel
+               OpSelectionMerge %409 None
+               OpSwitch %uint_0 %410
+        %410 = OpLabel
+               OpStore %x_293_phi %int_0
+               OpBranch %411
+        %411 = OpLabel
+               OpLoopMerge %412 %413 None
+               OpBranch %414
+        %414 = OpLabel
+        %419 = OpLoad %int %x_293_phi
+               OpStore %x_321_phi %false
+        %420 = OpSLessThanEqual %bool %419 %int_8
+               OpSelectionMerge %421 None
+               OpBranchConditional %420 %422 %423
+        %422 = OpLabel
+               OpBranch %421
+        %423 = OpLabel
+               OpBranch %412
+        %421 = OpLabel
+        %424 = OpAccessChain %_ptr_Function_int %tree %419 %uint_0
+        %425 = OpLoad %int %424
+        %427 = OpSLessThanEqual %bool %int_17 %425
+               OpSelectionMerge %428 None
+               OpBranchConditional %427 %429 %430
+        %429 = OpLabel
+        %431 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+        %432 = OpLoad %int %431
+        %433 = OpIEqual %bool %432 %int_n1
+               OpSelectionMerge %434 None
+               OpBranchConditional %433 %435 %436
+        %435 = OpLabel
+        %437 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+               OpStore %437 %int_8
+        %438 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %438 %439
+               OpStore %x_321_phi %true
+               OpBranch %412
+        %436 = OpLabel
+        %440 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+        %441 = OpLoad %int %440
+               OpStore %x_319 %441
+        %442 = OpLoad %int %x_319
+               OpStore %x_294_phi %442
+               OpBranch %413
+        %434 = OpLabel
+               OpReturn
+        %430 = OpLabel
+        %443 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+        %444 = OpLoad %int %443
+        %445 = OpIEqual %bool %444 %int_n1
+               OpSelectionMerge %446 None
+               OpBranchConditional %445 %447 %448
+        %447 = OpLabel
+        %449 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+               OpStore %449 %int_8
+        %450 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %450 %439
+               OpStore %x_321_phi %true
+               OpBranch %412
+        %448 = OpLabel
+        %451 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+        %452 = OpLoad %int %451
+               OpStore %x_311 %452
+        %453 = OpLoad %int %x_311
+               OpStore %x_294_phi %453
+               OpBranch %413
+        %446 = OpLabel
+               OpReturn
+        %428 = OpLabel
+               OpReturn
+        %413 = OpLabel
+        %454 = OpLoad %int %x_294_phi
+               OpStore %x_294 %454
+        %455 = OpLoad %int %x_294
+               OpStore %x_293_phi %455
+               OpBranch %411
+        %412 = OpLabel
+        %456 = OpLoad %bool %x_321_phi
+               OpSelectionMerge %457 None
+               OpBranchConditional %456 %458 %457
+        %458 = OpLabel
+               OpBranch %409
+        %457 = OpLabel
+               OpBranch %409
+        %409 = OpLabel
+               OpSelectionMerge %461 None
+               OpSwitch %uint_0 %462
+        %462 = OpLabel
+               OpStore %x_326_phi %int_0
+               OpBranch %463
+        %463 = OpLabel
+               OpLoopMerge %464 %465 None
+               OpBranch %466
+        %466 = OpLabel
+        %471 = OpLoad %int %x_326_phi
+               OpStore %x_354_phi %false
+        %472 = OpSLessThanEqual %bool %471 %int_9
+               OpSelectionMerge %473 None
+               OpBranchConditional %472 %474 %475
+        %474 = OpLabel
+               OpBranch %473
+        %475 = OpLabel
+               OpBranch %464
+        %473 = OpLabel
+        %476 = OpAccessChain %_ptr_Function_int %tree %471 %uint_0
+        %477 = OpLoad %int %476
+        %479 = OpSLessThanEqual %bool %int_13 %477
+               OpSelectionMerge %480 None
+               OpBranchConditional %479 %481 %482
+        %481 = OpLabel
+        %483 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+        %484 = OpLoad %int %483
+        %485 = OpIEqual %bool %484 %int_n1
+               OpSelectionMerge %486 None
+               OpBranchConditional %485 %487 %488
+        %487 = OpLabel
+        %489 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+               OpStore %489 %int_9
+        %490 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %490 %491
+               OpStore %x_354_phi %true
+               OpBranch %464
+        %488 = OpLabel
+        %492 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+        %493 = OpLoad %int %492
+               OpStore %x_352 %493
+        %494 = OpLoad %int %x_352
+               OpStore %x_327_phi %494
+               OpBranch %465
+        %486 = OpLabel
+               OpReturn
+        %482 = OpLabel
+        %495 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+        %496 = OpLoad %int %495
+        %497 = OpIEqual %bool %496 %int_n1
+               OpSelectionMerge %498 None
+               OpBranchConditional %497 %499 %500
+        %499 = OpLabel
+        %501 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+               OpStore %501 %int_9
+        %502 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %502 %491
+               OpStore %x_354_phi %true
+               OpBranch %464
+        %500 = OpLabel
+        %503 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+        %504 = OpLoad %int %503
+               OpStore %x_344 %504
+        %505 = OpLoad %int %x_344
+               OpStore %x_327_phi %505
+               OpBranch %465
+        %498 = OpLabel
+               OpReturn
+        %480 = OpLabel
+               OpReturn
+        %465 = OpLabel
+        %506 = OpLoad %int %x_327_phi
+               OpStore %x_327 %506
+        %507 = OpLoad %int %x_327
+               OpStore %x_326_phi %507
+               OpBranch %463
+        %464 = OpLabel
+        %508 = OpLoad %bool %x_354_phi
+               OpSelectionMerge %509 None
+               OpBranchConditional %508 %510 %509
+        %510 = OpLabel
+               OpBranch %461
+        %509 = OpLabel
+               OpBranch %461
+        %461 = OpLabel
+               OpStore %x_357_phi %int_0
+               OpStore %x_360_phi %int_0
+               OpStore %x_362_phi %int_0
+               OpBranch %511
+        %511 = OpLabel
+               OpLoopMerge %512 %513 None
+               OpBranch %514
+        %514 = OpLabel
+        %521 = OpLoad %int %x_357_phi
+        %522 = OpLoad %int %x_360_phi
+               OpStore %x_360 %522
+        %523 = OpLoad %int %x_362_phi
+        %524 = OpISub %int %int_6 %int_15
+        %526 = OpSLessThan %bool %523 %int_20
+               OpSelectionMerge %527 None
+               OpBranchConditional %526 %528 %529
+        %528 = OpLabel
+               OpBranch %527
+        %529 = OpLabel
+               OpBranch %512
+        %527 = OpLabel
+               OpSelectionMerge %533 None
+               OpSwitch %uint_0 %534
+        %534 = OpLabel
+               OpStore %x_374_phi %int_0
+               OpBranch %535
+        %535 = OpLabel
+               OpLoopMerge %536 %537 None
+               OpBranch %538
+        %538 = OpLabel
+        %539 = OpLoad %int %x_374_phi
+               OpStore %x_392_phi %521
+               OpStore %x_393_phi %false
+        %540 = OpINotEqual %bool %539 %int_n1
+               OpSelectionMerge %541 None
+               OpBranchConditional %540 %542 %543
+        %542 = OpLabel
+               OpBranch %541
+        %543 = OpLabel
+               OpBranch %536
+        %541 = OpLabel
+        %544 = OpAccessChain %_ptr_Function_BST %tree %539
+        %545 = OpLoad %BST %544
+        %546 = OpCompositeExtract %int %545 0
+        %547 = OpCompositeExtract %int %545 1
+        %548 = OpCompositeExtract %int %545 2
+        %549 = OpIEqual %bool %546 %523
+               OpSelectionMerge %550 None
+               OpBranchConditional %549 %551 %550
+        %551 = OpLabel
+               OpStore %x_392_phi %523
+               OpStore %x_393_phi %true
+               OpBranch %536
+        %550 = OpLabel
+        %554 = OpULessThanEqual %bool %uint_3 %uint_3
+        %552 = OpSelect %uint %554 %uint_3 %uint_3
+        %556 = OpAccessChain %_ptr_Private_float %x_GLF_color %552
+        %557 = OpLoad %float %556
+               OpBranch %537
+        %537 = OpLabel
+        %560 = OpSLessThanEqual %bool %523 %546
+        %559 = OpLogicalNot %bool %560
+        %558 = OpSelect %int %559 %548 %547
+               OpStore %x_374_phi %558
+               OpBranch %535
+        %536 = OpLabel
+        %561 = OpLoad %int %x_392_phi
+               OpStore %x_392 %561
+        %562 = OpLoad %bool %x_393_phi
+        %563 = OpLoad %int %x_392
+               OpStore %x_358_phi %563
+               OpSelectionMerge %564 None
+               OpBranchConditional %562 %565 %564
+        %565 = OpLabel
+               OpBranch %533
+        %564 = OpLabel
+               OpStore %x_358_phi %int_n1
+               OpBranch %533
+        %533 = OpLabel
+        %571 = OpLoad %int %x_358_phi
+               OpStore %x_358 %571
+               OpSelectionMerge %572 None
+               OpSwitch %523 %573 2 %574 5 %574 6 %574 7 %574 8 %574 9 %574 12 %574 13 %574 15 %574 17 %574
+        %574 = OpLabel
+        %575 = OpLoad %int %x_360
+               OpStore %x_402_phi %575
+        %576 = OpLoad %int %x_358
+        %577 = OpCopyObject %int %523
+        %578 = OpIEqual %bool %576 %577
+               OpSelectionMerge %579 None
+               OpBranchConditional %578 %580 %579
+        %580 = OpLabel
+        %582 = OpLoad %int %x_360
+        %583 = OpCopyObject %int %int_1
+        %584 = OpIAdd %int %582 %583
+        %581 = OpCopyObject %int %584
+               OpStore %x_401 %581
+        %585 = OpLoad %int %x_401
+               OpStore %x_402_phi %585
+               OpBranch %579
+        %579 = OpLabel
+        %586 = OpLoad %int %x_402_phi
+               OpStore %x_402 %586
+        %587 = OpLoad %int %x_402
+               OpStore %x_361_phi %587
+               OpBranch %572
+        %573 = OpLabel
+        %588 = OpLoad %int %x_360
+               OpStore %x_407_phi %588
+        %589 = OpLoad %int %x_358
+        %590 = OpCopyObject %int %int_n1
+        %591 = OpIEqual %bool %589 %590
+               OpSelectionMerge %592 None
+               OpBranchConditional %591 %593 %592
+        %593 = OpLabel
+        %595 = OpLoad %int %x_360
+        %596 = OpCopyObject %int %int_1
+        %597 = OpIAdd %int %595 %596
+        %594 = OpCopyObject %int %597
+               OpStore %x_406 %594
+        %598 = OpLoad %int %x_406
+               OpStore %x_407_phi %598
+               OpBranch %592
+        %592 = OpLabel
+        %599 = OpLoad %int %x_407_phi
+               OpStore %x_407 %599
+        %600 = OpLoad %int %x_407
+               OpStore %x_361_phi %600
+               OpBranch %572
+        %572 = OpLabel
+        %601 = OpLoad %int %x_361_phi
+               OpBranch %513
+        %513 = OpLabel
+        %602 = OpIAdd %int %523 %int_1
+               OpStore %x_363 %602
+        %603 = OpLoad %int %x_358
+               OpStore %x_357_phi %603
+               OpStore %x_360_phi %601
+        %604 = OpLoad %int %x_363
+               OpStore %x_362_phi %604
+               OpBranch %511
+        %512 = OpLabel
+        %605 = OpLoad %int %x_360
+        %606 = OpCopyObject %int %int_20
+        %607 = OpIEqual %bool %605 %606
+               OpSelectionMerge %608 None
+               OpBranchConditional %607 %609 %610
+        %609 = OpLabel
+               OpStore %x_GLF_color %613
+               OpBranch %608
+        %610 = OpLabel
+               OpStore %x_GLF_color %614
+               OpBranch %608
+        %608 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %615
+%tint_symbol = OpFunctionParameter %main_out
+        %619 = OpLabel
+        %620 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %620
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+        %622 = OpLabel
+        %623 = OpFunctionCall %void %main_1
+        %625 = OpLoad %v4float %x_GLF_color
+        %626 = OpCompositeConstruct %main_out %625
+        %624 = OpFunctionCall %void %tint_symbol_2 %626
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..0c19b19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.wgsl
@@ -0,0 +1,655 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var tree : array<BST, 10>;
+  var x_360 : i32;
+  var x_62_phi : i32;
+  var x_90_phi : bool;
+  var x_357_phi : i32;
+  var x_360_phi : i32;
+  var x_362_phi : i32;
+  tree[0] = BST(9, -1, -1);
+  switch(0u) {
+    default: {
+      x_62_phi = 0;
+      loop {
+        var x_88 : i32;
+        var x_80 : i32;
+        var x_63 : i32;
+        var x_63_phi : i32;
+        let x_62 : i32 = x_62_phi;
+        x_90_phi = false;
+        if ((x_62 <= 1)) {
+        } else {
+          break;
+        }
+        let x_69 : i32 = tree[x_62].data;
+        if ((5 <= x_69)) {
+          let x_82 : ptr<function, i32> = &(tree[x_62].leftIndex);
+          let x_83 : i32 = *(x_82);
+          if ((x_83 == -1)) {
+            *(x_82) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_90_phi = true;
+            break;
+          } else {
+            x_88 = *(x_82);
+            x_63_phi = x_88;
+            continue;
+          }
+          return;
+        } else {
+          let x_74 : ptr<function, i32> = &(tree[x_62].rightIndex);
+          let x_75 : i32 = *(x_74);
+          if ((x_75 == -1)) {
+            *(x_74) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_90_phi = true;
+            break;
+          } else {
+            x_80 = *(x_74);
+            x_63_phi = x_80;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_63 = x_63_phi;
+          x_62_phi = x_63;
+        }
+      }
+      let x_90 : bool = x_90_phi;
+      if (x_90) {
+        break;
+      }
+    }
+  }
+  var x_95_phi : i32;
+  var x_123_phi : bool;
+  switch(0u) {
+    default: {
+      x_95_phi = 0;
+      loop {
+        var x_121 : i32;
+        var x_113 : i32;
+        var x_96 : i32;
+        var x_96_phi : i32;
+        let x_95 : i32 = x_95_phi;
+        x_123_phi = false;
+        if ((x_95 <= 2)) {
+        } else {
+          break;
+        }
+        let x_102 : i32 = tree[x_95].data;
+        if ((12 <= x_102)) {
+          let x_115 : ptr<function, i32> = &(tree[x_95].leftIndex);
+          let x_116 : i32 = *(x_115);
+          if ((x_116 == -1)) {
+            *(x_115) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_123_phi = true;
+            break;
+          } else {
+            x_121 = *(x_115);
+            x_96_phi = x_121;
+            continue;
+          }
+          return;
+        } else {
+          let x_107 : ptr<function, i32> = &(tree[x_95].rightIndex);
+          let x_108 : i32 = *(x_107);
+          if ((x_108 == -1)) {
+            *(x_107) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_123_phi = true;
+            break;
+          } else {
+            x_113 = *(x_107);
+            x_96_phi = x_113;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_96 = x_96_phi;
+          x_95_phi = x_96;
+        }
+      }
+      let x_123 : bool = x_123_phi;
+      if (x_123) {
+        break;
+      }
+    }
+  }
+  var x_128_phi : i32;
+  var x_156_phi : bool;
+  switch(0u) {
+    default: {
+      x_128_phi = 0;
+      loop {
+        var x_154 : i32;
+        var x_146 : i32;
+        var x_129 : i32;
+        var x_129_phi : i32;
+        let x_128 : i32 = x_128_phi;
+        x_156_phi = false;
+        if ((x_128 <= 3)) {
+        } else {
+          break;
+        }
+        let x_135 : i32 = tree[x_128].data;
+        if ((15 <= x_135)) {
+          let x_148 : ptr<function, i32> = &(tree[x_128].leftIndex);
+          let x_149 : i32 = *(x_148);
+          if ((x_149 == -1)) {
+            *(x_148) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_156_phi = true;
+            break;
+          } else {
+            x_154 = *(x_148);
+            x_129_phi = x_154;
+            continue;
+          }
+          return;
+        } else {
+          let x_140 : ptr<function, i32> = &(tree[x_128].rightIndex);
+          let x_141 : i32 = *(x_140);
+          if ((x_141 == -1)) {
+            *(x_140) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_156_phi = true;
+            break;
+          } else {
+            x_146 = *(x_140);
+            x_129_phi = x_146;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_129 = x_129_phi;
+          x_128_phi = x_129;
+        }
+      }
+      let x_156 : bool = x_156_phi;
+      if (x_156) {
+        break;
+      }
+    }
+  }
+  var x_161_phi : i32;
+  var x_189_phi : bool;
+  switch(0u) {
+    default: {
+      x_161_phi = 0;
+      loop {
+        var x_187 : i32;
+        var x_179 : i32;
+        var x_162 : i32;
+        var x_162_phi : i32;
+        let x_161 : i32 = x_161_phi;
+        x_189_phi = false;
+        if ((x_161 <= 4)) {
+        } else {
+          break;
+        }
+        let x_168 : i32 = tree[x_161].data;
+        if ((7 <= x_168)) {
+          let x_181 : ptr<function, i32> = &(tree[x_161].leftIndex);
+          let x_182 : i32 = *(x_181);
+          if ((x_182 == -1)) {
+            *(x_181) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_189_phi = true;
+            break;
+          } else {
+            x_187 = *(x_181);
+            x_162_phi = x_187;
+            continue;
+          }
+          return;
+        } else {
+          let x_173 : ptr<function, i32> = &(tree[x_161].rightIndex);
+          let x_174 : i32 = *(x_173);
+          if ((x_174 == -1)) {
+            *(x_173) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_189_phi = true;
+            break;
+          } else {
+            x_179 = *(x_173);
+            x_162_phi = x_179;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_162 = x_162_phi;
+          x_161_phi = x_162;
+        }
+      }
+      let x_189 : bool = x_189_phi;
+      if (x_189) {
+        break;
+      }
+    }
+  }
+  var x_194_phi : i32;
+  var x_222_phi : bool;
+  switch(0u) {
+    default: {
+      x_194_phi = 0;
+      loop {
+        var x_220 : i32;
+        var x_212 : i32;
+        var x_195 : i32;
+        var x_195_phi : i32;
+        let x_194 : i32 = x_194_phi;
+        x_222_phi = false;
+        if ((x_194 <= 5)) {
+        } else {
+          break;
+        }
+        let x_201 : i32 = tree[x_194].data;
+        if ((8 <= x_201)) {
+          let x_214 : ptr<function, i32> = &(tree[x_194].leftIndex);
+          let x_215 : i32 = *(x_214);
+          if ((x_215 == -1)) {
+            *(x_214) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_222_phi = true;
+            break;
+          } else {
+            x_220 = *(x_214);
+            x_195_phi = x_220;
+            continue;
+          }
+          return;
+        } else {
+          let x_206 : ptr<function, i32> = &(tree[x_194].rightIndex);
+          let x_207 : i32 = *(x_206);
+          if ((x_207 == -1)) {
+            *(x_206) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_222_phi = true;
+            break;
+          } else {
+            x_212 = *(x_206);
+            x_195_phi = x_212;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_195 = x_195_phi;
+          x_194_phi = x_195;
+        }
+      }
+      let x_222 : bool = x_222_phi;
+      if (x_222) {
+        break;
+      }
+    }
+  }
+  var x_227_phi : i32;
+  var x_255_phi : bool;
+  switch(0u) {
+    default: {
+      x_227_phi = 0;
+      loop {
+        var x_253 : i32;
+        var x_245 : i32;
+        var x_228 : i32;
+        var x_228_phi : i32;
+        let x_227 : i32 = x_227_phi;
+        x_255_phi = false;
+        if ((x_227 <= 6)) {
+        } else {
+          break;
+        }
+        let x_234 : i32 = tree[x_227].data;
+        if ((2 <= x_234)) {
+          let x_247 : ptr<function, i32> = &(tree[x_227].leftIndex);
+          let x_248 : i32 = *(x_247);
+          if ((x_248 == -1)) {
+            *(x_247) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_255_phi = true;
+            break;
+          } else {
+            x_253 = *(x_247);
+            x_228_phi = x_253;
+            continue;
+          }
+          return;
+        } else {
+          let x_239 : ptr<function, i32> = &(tree[x_227].rightIndex);
+          let x_240 : i32 = *(x_239);
+          if ((x_240 == -1)) {
+            *(x_239) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_255_phi = true;
+            break;
+          } else {
+            x_245 = *(x_239);
+            x_228_phi = x_245;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_228 = x_228_phi;
+          x_227_phi = x_228;
+        }
+      }
+      let x_255 : bool = x_255_phi;
+      if (x_255) {
+        break;
+      }
+    }
+  }
+  var x_260_phi : i32;
+  var x_288_phi : bool;
+  switch(0u) {
+    default: {
+      x_260_phi = 0;
+      loop {
+        var x_286 : i32;
+        var x_278 : i32;
+        var x_261 : i32;
+        var x_261_phi : i32;
+        let x_260 : i32 = x_260_phi;
+        x_288_phi = false;
+        if ((x_260 <= 7)) {
+        } else {
+          break;
+        }
+        let x_267 : i32 = tree[x_260].data;
+        if ((6 <= x_267)) {
+          let x_280 : ptr<function, i32> = &(tree[x_260].leftIndex);
+          let x_281 : i32 = *(x_280);
+          if ((x_281 == -1)) {
+            *(x_280) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_288_phi = true;
+            break;
+          } else {
+            x_286 = *(x_280);
+            x_261_phi = x_286;
+            continue;
+          }
+          return;
+        } else {
+          let x_272 : ptr<function, i32> = &(tree[x_260].rightIndex);
+          let x_273 : i32 = *(x_272);
+          if ((x_273 == -1)) {
+            *(x_272) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_288_phi = true;
+            break;
+          } else {
+            x_278 = *(x_272);
+            x_261_phi = x_278;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_261 = x_261_phi;
+          x_260_phi = x_261;
+        }
+      }
+      let x_288 : bool = x_288_phi;
+      if (x_288) {
+        break;
+      }
+    }
+  }
+  var x_293_phi : i32;
+  var x_321_phi : bool;
+  switch(0u) {
+    default: {
+      x_293_phi = 0;
+      loop {
+        var x_319 : i32;
+        var x_311 : i32;
+        var x_294 : i32;
+        var x_294_phi : i32;
+        let x_293 : i32 = x_293_phi;
+        x_321_phi = false;
+        if ((x_293 <= 8)) {
+        } else {
+          break;
+        }
+        let x_300 : i32 = tree[x_293].data;
+        if ((17 <= x_300)) {
+          let x_313 : ptr<function, i32> = &(tree[x_293].leftIndex);
+          let x_314 : i32 = *(x_313);
+          if ((x_314 == -1)) {
+            *(x_313) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_321_phi = true;
+            break;
+          } else {
+            x_319 = *(x_313);
+            x_294_phi = x_319;
+            continue;
+          }
+          return;
+        } else {
+          let x_305 : ptr<function, i32> = &(tree[x_293].rightIndex);
+          let x_306 : i32 = *(x_305);
+          if ((x_306 == -1)) {
+            *(x_305) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_321_phi = true;
+            break;
+          } else {
+            x_311 = *(x_305);
+            x_294_phi = x_311;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_294 = x_294_phi;
+          x_293_phi = x_294;
+        }
+      }
+      let x_321 : bool = x_321_phi;
+      if (x_321) {
+        break;
+      }
+    }
+  }
+  var x_326_phi : i32;
+  var x_354_phi : bool;
+  switch(0u) {
+    default: {
+      x_326_phi = 0;
+      loop {
+        var x_352 : i32;
+        var x_344 : i32;
+        var x_327 : i32;
+        var x_327_phi : i32;
+        let x_326 : i32 = x_326_phi;
+        x_354_phi = false;
+        if ((x_326 <= 9)) {
+        } else {
+          break;
+        }
+        let x_333 : i32 = tree[x_326].data;
+        if ((13 <= x_333)) {
+          let x_346 : ptr<function, i32> = &(tree[x_326].leftIndex);
+          let x_347 : i32 = *(x_346);
+          if ((x_347 == -1)) {
+            *(x_346) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_354_phi = true;
+            break;
+          } else {
+            x_352 = *(x_346);
+            x_327_phi = x_352;
+            continue;
+          }
+          return;
+        } else {
+          let x_338 : ptr<function, i32> = &(tree[x_326].rightIndex);
+          let x_339 : i32 = *(x_338);
+          if ((x_339 == -1)) {
+            *(x_338) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_354_phi = true;
+            break;
+          } else {
+            x_344 = *(x_338);
+            x_327_phi = x_344;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_327 = x_327_phi;
+          x_326_phi = x_327;
+        }
+      }
+      let x_354 : bool = x_354_phi;
+      if (x_354) {
+        break;
+      }
+    }
+  }
+  x_357_phi = 0;
+  x_360_phi = 0;
+  x_362_phi = 0;
+  loop {
+    var x_392 : i32;
+    var x_402 : i32;
+    var x_407 : i32;
+    var x_363 : i32;
+    var x_358_phi : i32;
+    var x_361_phi : i32;
+    let x_357 : i32 = x_357_phi;
+    x_360 = x_360_phi;
+    let x_362 : i32 = x_362_phi;
+    let x_365 : i32 = (6 - 15);
+    if ((x_362 < 20)) {
+    } else {
+      break;
+    }
+    var x_374_phi : i32;
+    var x_392_phi : i32;
+    var x_393_phi : bool;
+    switch(0u) {
+      default: {
+        x_374_phi = 0;
+        loop {
+          let x_374 : i32 = x_374_phi;
+          x_392_phi = x_357;
+          x_393_phi = false;
+          if ((x_374 != -1)) {
+          } else {
+            break;
+          }
+          let x_381 : BST = tree[x_374];
+          let x_382 : i32 = x_381.data;
+          let x_383 : i32 = x_381.leftIndex;
+          let x_385 : i32 = x_381.rightIndex;
+          if ((x_382 == x_362)) {
+            x_392_phi = x_362;
+            x_393_phi = true;
+            break;
+          }
+          let x_389 : f32 = x_GLF_color[select(3u, 3u, (3u <= 3u))];
+
+          continuing {
+            x_374_phi = select(x_383, x_385, !((x_362 <= x_382)));
+          }
+        }
+        x_392 = x_392_phi;
+        let x_393 : bool = x_393_phi;
+        x_358_phi = x_392;
+        if (x_393) {
+          break;
+        }
+        x_358_phi = -1;
+      }
+    }
+    var x_358 : i32;
+    var x_401 : i32;
+    var x_406 : i32;
+    var x_402_phi : i32;
+    var x_407_phi : i32;
+    x_358 = x_358_phi;
+    switch(x_362) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        x_402_phi = x_360;
+        if ((x_358 == bitcast<i32>(x_362))) {
+          x_401 = bitcast<i32>((x_360 + bitcast<i32>(1)));
+          x_402_phi = x_401;
+        }
+        x_402 = x_402_phi;
+        x_361_phi = x_402;
+      }
+      default: {
+        x_407_phi = x_360;
+        if ((x_358 == bitcast<i32>(-1))) {
+          x_406 = bitcast<i32>((x_360 + bitcast<i32>(1)));
+          x_407_phi = x_406;
+        }
+        x_407 = x_407_phi;
+        x_361_phi = x_407;
+      }
+    }
+    let x_361 : i32 = x_361_phi;
+
+    continuing {
+      x_363 = (x_362 + 1);
+      x_357_phi = x_358;
+      x_360_phi = x_361;
+      x_362_phi = x_363;
+    }
+  }
+  if ((x_360 == bitcast<i32>(20))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
new file mode 100644
index 0000000..0c19b19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
@@ -0,0 +1,655 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var tree : array<BST, 10>;
+  var x_360 : i32;
+  var x_62_phi : i32;
+  var x_90_phi : bool;
+  var x_357_phi : i32;
+  var x_360_phi : i32;
+  var x_362_phi : i32;
+  tree[0] = BST(9, -1, -1);
+  switch(0u) {
+    default: {
+      x_62_phi = 0;
+      loop {
+        var x_88 : i32;
+        var x_80 : i32;
+        var x_63 : i32;
+        var x_63_phi : i32;
+        let x_62 : i32 = x_62_phi;
+        x_90_phi = false;
+        if ((x_62 <= 1)) {
+        } else {
+          break;
+        }
+        let x_69 : i32 = tree[x_62].data;
+        if ((5 <= x_69)) {
+          let x_82 : ptr<function, i32> = &(tree[x_62].leftIndex);
+          let x_83 : i32 = *(x_82);
+          if ((x_83 == -1)) {
+            *(x_82) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_90_phi = true;
+            break;
+          } else {
+            x_88 = *(x_82);
+            x_63_phi = x_88;
+            continue;
+          }
+          return;
+        } else {
+          let x_74 : ptr<function, i32> = &(tree[x_62].rightIndex);
+          let x_75 : i32 = *(x_74);
+          if ((x_75 == -1)) {
+            *(x_74) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_90_phi = true;
+            break;
+          } else {
+            x_80 = *(x_74);
+            x_63_phi = x_80;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_63 = x_63_phi;
+          x_62_phi = x_63;
+        }
+      }
+      let x_90 : bool = x_90_phi;
+      if (x_90) {
+        break;
+      }
+    }
+  }
+  var x_95_phi : i32;
+  var x_123_phi : bool;
+  switch(0u) {
+    default: {
+      x_95_phi = 0;
+      loop {
+        var x_121 : i32;
+        var x_113 : i32;
+        var x_96 : i32;
+        var x_96_phi : i32;
+        let x_95 : i32 = x_95_phi;
+        x_123_phi = false;
+        if ((x_95 <= 2)) {
+        } else {
+          break;
+        }
+        let x_102 : i32 = tree[x_95].data;
+        if ((12 <= x_102)) {
+          let x_115 : ptr<function, i32> = &(tree[x_95].leftIndex);
+          let x_116 : i32 = *(x_115);
+          if ((x_116 == -1)) {
+            *(x_115) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_123_phi = true;
+            break;
+          } else {
+            x_121 = *(x_115);
+            x_96_phi = x_121;
+            continue;
+          }
+          return;
+        } else {
+          let x_107 : ptr<function, i32> = &(tree[x_95].rightIndex);
+          let x_108 : i32 = *(x_107);
+          if ((x_108 == -1)) {
+            *(x_107) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_123_phi = true;
+            break;
+          } else {
+            x_113 = *(x_107);
+            x_96_phi = x_113;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_96 = x_96_phi;
+          x_95_phi = x_96;
+        }
+      }
+      let x_123 : bool = x_123_phi;
+      if (x_123) {
+        break;
+      }
+    }
+  }
+  var x_128_phi : i32;
+  var x_156_phi : bool;
+  switch(0u) {
+    default: {
+      x_128_phi = 0;
+      loop {
+        var x_154 : i32;
+        var x_146 : i32;
+        var x_129 : i32;
+        var x_129_phi : i32;
+        let x_128 : i32 = x_128_phi;
+        x_156_phi = false;
+        if ((x_128 <= 3)) {
+        } else {
+          break;
+        }
+        let x_135 : i32 = tree[x_128].data;
+        if ((15 <= x_135)) {
+          let x_148 : ptr<function, i32> = &(tree[x_128].leftIndex);
+          let x_149 : i32 = *(x_148);
+          if ((x_149 == -1)) {
+            *(x_148) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_156_phi = true;
+            break;
+          } else {
+            x_154 = *(x_148);
+            x_129_phi = x_154;
+            continue;
+          }
+          return;
+        } else {
+          let x_140 : ptr<function, i32> = &(tree[x_128].rightIndex);
+          let x_141 : i32 = *(x_140);
+          if ((x_141 == -1)) {
+            *(x_140) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_156_phi = true;
+            break;
+          } else {
+            x_146 = *(x_140);
+            x_129_phi = x_146;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_129 = x_129_phi;
+          x_128_phi = x_129;
+        }
+      }
+      let x_156 : bool = x_156_phi;
+      if (x_156) {
+        break;
+      }
+    }
+  }
+  var x_161_phi : i32;
+  var x_189_phi : bool;
+  switch(0u) {
+    default: {
+      x_161_phi = 0;
+      loop {
+        var x_187 : i32;
+        var x_179 : i32;
+        var x_162 : i32;
+        var x_162_phi : i32;
+        let x_161 : i32 = x_161_phi;
+        x_189_phi = false;
+        if ((x_161 <= 4)) {
+        } else {
+          break;
+        }
+        let x_168 : i32 = tree[x_161].data;
+        if ((7 <= x_168)) {
+          let x_181 : ptr<function, i32> = &(tree[x_161].leftIndex);
+          let x_182 : i32 = *(x_181);
+          if ((x_182 == -1)) {
+            *(x_181) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_189_phi = true;
+            break;
+          } else {
+            x_187 = *(x_181);
+            x_162_phi = x_187;
+            continue;
+          }
+          return;
+        } else {
+          let x_173 : ptr<function, i32> = &(tree[x_161].rightIndex);
+          let x_174 : i32 = *(x_173);
+          if ((x_174 == -1)) {
+            *(x_173) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_189_phi = true;
+            break;
+          } else {
+            x_179 = *(x_173);
+            x_162_phi = x_179;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_162 = x_162_phi;
+          x_161_phi = x_162;
+        }
+      }
+      let x_189 : bool = x_189_phi;
+      if (x_189) {
+        break;
+      }
+    }
+  }
+  var x_194_phi : i32;
+  var x_222_phi : bool;
+  switch(0u) {
+    default: {
+      x_194_phi = 0;
+      loop {
+        var x_220 : i32;
+        var x_212 : i32;
+        var x_195 : i32;
+        var x_195_phi : i32;
+        let x_194 : i32 = x_194_phi;
+        x_222_phi = false;
+        if ((x_194 <= 5)) {
+        } else {
+          break;
+        }
+        let x_201 : i32 = tree[x_194].data;
+        if ((8 <= x_201)) {
+          let x_214 : ptr<function, i32> = &(tree[x_194].leftIndex);
+          let x_215 : i32 = *(x_214);
+          if ((x_215 == -1)) {
+            *(x_214) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_222_phi = true;
+            break;
+          } else {
+            x_220 = *(x_214);
+            x_195_phi = x_220;
+            continue;
+          }
+          return;
+        } else {
+          let x_206 : ptr<function, i32> = &(tree[x_194].rightIndex);
+          let x_207 : i32 = *(x_206);
+          if ((x_207 == -1)) {
+            *(x_206) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_222_phi = true;
+            break;
+          } else {
+            x_212 = *(x_206);
+            x_195_phi = x_212;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_195 = x_195_phi;
+          x_194_phi = x_195;
+        }
+      }
+      let x_222 : bool = x_222_phi;
+      if (x_222) {
+        break;
+      }
+    }
+  }
+  var x_227_phi : i32;
+  var x_255_phi : bool;
+  switch(0u) {
+    default: {
+      x_227_phi = 0;
+      loop {
+        var x_253 : i32;
+        var x_245 : i32;
+        var x_228 : i32;
+        var x_228_phi : i32;
+        let x_227 : i32 = x_227_phi;
+        x_255_phi = false;
+        if ((x_227 <= 6)) {
+        } else {
+          break;
+        }
+        let x_234 : i32 = tree[x_227].data;
+        if ((2 <= x_234)) {
+          let x_247 : ptr<function, i32> = &(tree[x_227].leftIndex);
+          let x_248 : i32 = *(x_247);
+          if ((x_248 == -1)) {
+            *(x_247) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_255_phi = true;
+            break;
+          } else {
+            x_253 = *(x_247);
+            x_228_phi = x_253;
+            continue;
+          }
+          return;
+        } else {
+          let x_239 : ptr<function, i32> = &(tree[x_227].rightIndex);
+          let x_240 : i32 = *(x_239);
+          if ((x_240 == -1)) {
+            *(x_239) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_255_phi = true;
+            break;
+          } else {
+            x_245 = *(x_239);
+            x_228_phi = x_245;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_228 = x_228_phi;
+          x_227_phi = x_228;
+        }
+      }
+      let x_255 : bool = x_255_phi;
+      if (x_255) {
+        break;
+      }
+    }
+  }
+  var x_260_phi : i32;
+  var x_288_phi : bool;
+  switch(0u) {
+    default: {
+      x_260_phi = 0;
+      loop {
+        var x_286 : i32;
+        var x_278 : i32;
+        var x_261 : i32;
+        var x_261_phi : i32;
+        let x_260 : i32 = x_260_phi;
+        x_288_phi = false;
+        if ((x_260 <= 7)) {
+        } else {
+          break;
+        }
+        let x_267 : i32 = tree[x_260].data;
+        if ((6 <= x_267)) {
+          let x_280 : ptr<function, i32> = &(tree[x_260].leftIndex);
+          let x_281 : i32 = *(x_280);
+          if ((x_281 == -1)) {
+            *(x_280) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_288_phi = true;
+            break;
+          } else {
+            x_286 = *(x_280);
+            x_261_phi = x_286;
+            continue;
+          }
+          return;
+        } else {
+          let x_272 : ptr<function, i32> = &(tree[x_260].rightIndex);
+          let x_273 : i32 = *(x_272);
+          if ((x_273 == -1)) {
+            *(x_272) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_288_phi = true;
+            break;
+          } else {
+            x_278 = *(x_272);
+            x_261_phi = x_278;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_261 = x_261_phi;
+          x_260_phi = x_261;
+        }
+      }
+      let x_288 : bool = x_288_phi;
+      if (x_288) {
+        break;
+      }
+    }
+  }
+  var x_293_phi : i32;
+  var x_321_phi : bool;
+  switch(0u) {
+    default: {
+      x_293_phi = 0;
+      loop {
+        var x_319 : i32;
+        var x_311 : i32;
+        var x_294 : i32;
+        var x_294_phi : i32;
+        let x_293 : i32 = x_293_phi;
+        x_321_phi = false;
+        if ((x_293 <= 8)) {
+        } else {
+          break;
+        }
+        let x_300 : i32 = tree[x_293].data;
+        if ((17 <= x_300)) {
+          let x_313 : ptr<function, i32> = &(tree[x_293].leftIndex);
+          let x_314 : i32 = *(x_313);
+          if ((x_314 == -1)) {
+            *(x_313) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_321_phi = true;
+            break;
+          } else {
+            x_319 = *(x_313);
+            x_294_phi = x_319;
+            continue;
+          }
+          return;
+        } else {
+          let x_305 : ptr<function, i32> = &(tree[x_293].rightIndex);
+          let x_306 : i32 = *(x_305);
+          if ((x_306 == -1)) {
+            *(x_305) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_321_phi = true;
+            break;
+          } else {
+            x_311 = *(x_305);
+            x_294_phi = x_311;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_294 = x_294_phi;
+          x_293_phi = x_294;
+        }
+      }
+      let x_321 : bool = x_321_phi;
+      if (x_321) {
+        break;
+      }
+    }
+  }
+  var x_326_phi : i32;
+  var x_354_phi : bool;
+  switch(0u) {
+    default: {
+      x_326_phi = 0;
+      loop {
+        var x_352 : i32;
+        var x_344 : i32;
+        var x_327 : i32;
+        var x_327_phi : i32;
+        let x_326 : i32 = x_326_phi;
+        x_354_phi = false;
+        if ((x_326 <= 9)) {
+        } else {
+          break;
+        }
+        let x_333 : i32 = tree[x_326].data;
+        if ((13 <= x_333)) {
+          let x_346 : ptr<function, i32> = &(tree[x_326].leftIndex);
+          let x_347 : i32 = *(x_346);
+          if ((x_347 == -1)) {
+            *(x_346) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_354_phi = true;
+            break;
+          } else {
+            x_352 = *(x_346);
+            x_327_phi = x_352;
+            continue;
+          }
+          return;
+        } else {
+          let x_338 : ptr<function, i32> = &(tree[x_326].rightIndex);
+          let x_339 : i32 = *(x_338);
+          if ((x_339 == -1)) {
+            *(x_338) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_354_phi = true;
+            break;
+          } else {
+            x_344 = *(x_338);
+            x_327_phi = x_344;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_327 = x_327_phi;
+          x_326_phi = x_327;
+        }
+      }
+      let x_354 : bool = x_354_phi;
+      if (x_354) {
+        break;
+      }
+    }
+  }
+  x_357_phi = 0;
+  x_360_phi = 0;
+  x_362_phi = 0;
+  loop {
+    var x_392 : i32;
+    var x_402 : i32;
+    var x_407 : i32;
+    var x_363 : i32;
+    var x_358_phi : i32;
+    var x_361_phi : i32;
+    let x_357 : i32 = x_357_phi;
+    x_360 = x_360_phi;
+    let x_362 : i32 = x_362_phi;
+    let x_365 : i32 = (6 - 15);
+    if ((x_362 < 20)) {
+    } else {
+      break;
+    }
+    var x_374_phi : i32;
+    var x_392_phi : i32;
+    var x_393_phi : bool;
+    switch(0u) {
+      default: {
+        x_374_phi = 0;
+        loop {
+          let x_374 : i32 = x_374_phi;
+          x_392_phi = x_357;
+          x_393_phi = false;
+          if ((x_374 != -1)) {
+          } else {
+            break;
+          }
+          let x_381 : BST = tree[x_374];
+          let x_382 : i32 = x_381.data;
+          let x_383 : i32 = x_381.leftIndex;
+          let x_385 : i32 = x_381.rightIndex;
+          if ((x_382 == x_362)) {
+            x_392_phi = x_362;
+            x_393_phi = true;
+            break;
+          }
+          let x_389 : f32 = x_GLF_color[select(3u, 3u, (3u <= 3u))];
+
+          continuing {
+            x_374_phi = select(x_383, x_385, !((x_362 <= x_382)));
+          }
+        }
+        x_392 = x_392_phi;
+        let x_393 : bool = x_393_phi;
+        x_358_phi = x_392;
+        if (x_393) {
+          break;
+        }
+        x_358_phi = -1;
+      }
+    }
+    var x_358 : i32;
+    var x_401 : i32;
+    var x_406 : i32;
+    var x_402_phi : i32;
+    var x_407_phi : i32;
+    x_358 = x_358_phi;
+    switch(x_362) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        x_402_phi = x_360;
+        if ((x_358 == bitcast<i32>(x_362))) {
+          x_401 = bitcast<i32>((x_360 + bitcast<i32>(1)));
+          x_402_phi = x_401;
+        }
+        x_402 = x_402_phi;
+        x_361_phi = x_402;
+      }
+      default: {
+        x_407_phi = x_360;
+        if ((x_358 == bitcast<i32>(-1))) {
+          x_406 = bitcast<i32>((x_360 + bitcast<i32>(1)));
+          x_407_phi = x_406;
+        }
+        x_407 = x_407_phi;
+        x_361_phi = x_407;
+      }
+    }
+    let x_361 : i32 = x_361_phi;
+
+    continuing {
+      x_363 = (x_362 + 1);
+      x_357_phi = x_358;
+      x_360_phi = x_361;
+      x_362_phi = x_363;
+    }
+  }
+  if ((x_360 == bitcast<i32>(20))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..6b3b61f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.hlsl
@@ -0,0 +1,750 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  BST tree[10] = (BST[10])0;
+  int x_360 = 0;
+  int x_62_phi = 0;
+  bool x_90_phi = false;
+  int x_357_phi = 0;
+  int x_360_phi = 0;
+  int x_362_phi = 0;
+  const BST tint_symbol_2 = {9, -1, -1};
+  tree[0] = tint_symbol_2;
+  switch(0u) {
+    default: {
+      x_62_phi = 0;
+      while (true) {
+        int x_88 = 0;
+        int x_80 = 0;
+        int x_63 = 0;
+        int x_63_phi = 0;
+        const int x_62 = x_62_phi;
+        x_90_phi = false;
+        if ((x_62 <= 1)) {
+        } else {
+          break;
+        }
+        const int x_69 = tree[x_62].data;
+        if ((5 <= x_69)) {
+          const int x_82_save = x_62;
+          const int x_83 = tree[x_82_save].leftIndex;
+          if ((x_83 == -1)) {
+            tree[x_82_save].leftIndex = 1;
+            const BST tint_symbol_3 = {5, -1, -1};
+            tree[1] = tint_symbol_3;
+            x_90_phi = true;
+            break;
+          } else {
+            x_88 = tree[x_82_save].leftIndex;
+            x_63_phi = x_88;
+            {
+              x_63 = x_63_phi;
+              x_62_phi = x_63;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_74_save = x_62;
+          const int x_75 = tree[x_74_save].rightIndex;
+          if ((x_75 == -1)) {
+            tree[x_74_save].rightIndex = 1;
+            const BST tint_symbol_4 = {5, -1, -1};
+            tree[1] = tint_symbol_4;
+            x_90_phi = true;
+            break;
+          } else {
+            x_80 = tree[x_74_save].rightIndex;
+            x_63_phi = x_80;
+            {
+              x_63 = x_63_phi;
+              x_62_phi = x_63;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_63 = x_63_phi;
+          x_62_phi = x_63;
+        }
+      }
+      if (x_90_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_95_phi = 0;
+  bool x_123_phi = false;
+  switch(0u) {
+    default: {
+      x_95_phi = 0;
+      while (true) {
+        int x_121 = 0;
+        int x_113 = 0;
+        int x_96 = 0;
+        int x_96_phi = 0;
+        const int x_95 = x_95_phi;
+        x_123_phi = false;
+        if ((x_95 <= 2)) {
+        } else {
+          break;
+        }
+        const int x_102 = tree[x_95].data;
+        if ((12 <= x_102)) {
+          const int x_115_save = x_95;
+          const int x_116 = tree[x_115_save].leftIndex;
+          if ((x_116 == -1)) {
+            tree[x_115_save].leftIndex = 2;
+            const BST tint_symbol_5 = {12, -1, -1};
+            tree[2] = tint_symbol_5;
+            x_123_phi = true;
+            break;
+          } else {
+            x_121 = tree[x_115_save].leftIndex;
+            x_96_phi = x_121;
+            {
+              x_96 = x_96_phi;
+              x_95_phi = x_96;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_107_save = x_95;
+          const int x_108 = tree[x_107_save].rightIndex;
+          if ((x_108 == -1)) {
+            tree[x_107_save].rightIndex = 2;
+            const BST tint_symbol_6 = {12, -1, -1};
+            tree[2] = tint_symbol_6;
+            x_123_phi = true;
+            break;
+          } else {
+            x_113 = tree[x_107_save].rightIndex;
+            x_96_phi = x_113;
+            {
+              x_96 = x_96_phi;
+              x_95_phi = x_96;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_96 = x_96_phi;
+          x_95_phi = x_96;
+        }
+      }
+      if (x_123_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_128_phi = 0;
+  bool x_156_phi = false;
+  switch(0u) {
+    default: {
+      x_128_phi = 0;
+      while (true) {
+        int x_154 = 0;
+        int x_146 = 0;
+        int x_129 = 0;
+        int x_129_phi = 0;
+        const int x_128 = x_128_phi;
+        x_156_phi = false;
+        if ((x_128 <= 3)) {
+        } else {
+          break;
+        }
+        const int x_135 = tree[x_128].data;
+        if ((15 <= x_135)) {
+          const int x_148_save = x_128;
+          const int x_149 = tree[x_148_save].leftIndex;
+          if ((x_149 == -1)) {
+            tree[x_148_save].leftIndex = 3;
+            const BST tint_symbol_7 = {15, -1, -1};
+            tree[3] = tint_symbol_7;
+            x_156_phi = true;
+            break;
+          } else {
+            x_154 = tree[x_148_save].leftIndex;
+            x_129_phi = x_154;
+            {
+              x_129 = x_129_phi;
+              x_128_phi = x_129;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_140_save = x_128;
+          const int x_141 = tree[x_140_save].rightIndex;
+          if ((x_141 == -1)) {
+            tree[x_140_save].rightIndex = 3;
+            const BST tint_symbol_8 = {15, -1, -1};
+            tree[3] = tint_symbol_8;
+            x_156_phi = true;
+            break;
+          } else {
+            x_146 = tree[x_140_save].rightIndex;
+            x_129_phi = x_146;
+            {
+              x_129 = x_129_phi;
+              x_128_phi = x_129;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_129 = x_129_phi;
+          x_128_phi = x_129;
+        }
+      }
+      if (x_156_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_161_phi = 0;
+  bool x_189_phi = false;
+  switch(0u) {
+    default: {
+      x_161_phi = 0;
+      while (true) {
+        int x_187 = 0;
+        int x_179 = 0;
+        int x_162 = 0;
+        int x_162_phi = 0;
+        const int x_161 = x_161_phi;
+        x_189_phi = false;
+        if ((x_161 <= 4)) {
+        } else {
+          break;
+        }
+        const int x_168 = tree[x_161].data;
+        if ((7 <= x_168)) {
+          const int x_181_save = x_161;
+          const int x_182 = tree[x_181_save].leftIndex;
+          if ((x_182 == -1)) {
+            tree[x_181_save].leftIndex = 4;
+            const BST tint_symbol_9 = {7, -1, -1};
+            tree[4] = tint_symbol_9;
+            x_189_phi = true;
+            break;
+          } else {
+            x_187 = tree[x_181_save].leftIndex;
+            x_162_phi = x_187;
+            {
+              x_162 = x_162_phi;
+              x_161_phi = x_162;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_173_save = x_161;
+          const int x_174 = tree[x_173_save].rightIndex;
+          if ((x_174 == -1)) {
+            tree[x_173_save].rightIndex = 4;
+            const BST tint_symbol_10 = {7, -1, -1};
+            tree[4] = tint_symbol_10;
+            x_189_phi = true;
+            break;
+          } else {
+            x_179 = tree[x_173_save].rightIndex;
+            x_162_phi = x_179;
+            {
+              x_162 = x_162_phi;
+              x_161_phi = x_162;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_162 = x_162_phi;
+          x_161_phi = x_162;
+        }
+      }
+      if (x_189_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_194_phi = 0;
+  bool x_222_phi = false;
+  switch(0u) {
+    default: {
+      x_194_phi = 0;
+      while (true) {
+        int x_220 = 0;
+        int x_212 = 0;
+        int x_195 = 0;
+        int x_195_phi = 0;
+        const int x_194 = x_194_phi;
+        x_222_phi = false;
+        if ((x_194 <= 5)) {
+        } else {
+          break;
+        }
+        const int x_201 = tree[x_194].data;
+        if ((8 <= x_201)) {
+          const int x_214_save = x_194;
+          const int x_215 = tree[x_214_save].leftIndex;
+          if ((x_215 == -1)) {
+            tree[x_214_save].leftIndex = 5;
+            const BST tint_symbol_11 = {8, -1, -1};
+            tree[5] = tint_symbol_11;
+            x_222_phi = true;
+            break;
+          } else {
+            x_220 = tree[x_214_save].leftIndex;
+            x_195_phi = x_220;
+            {
+              x_195 = x_195_phi;
+              x_194_phi = x_195;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_206_save = x_194;
+          const int x_207 = tree[x_206_save].rightIndex;
+          if ((x_207 == -1)) {
+            tree[x_206_save].rightIndex = 5;
+            const BST tint_symbol_12 = {8, -1, -1};
+            tree[5] = tint_symbol_12;
+            x_222_phi = true;
+            break;
+          } else {
+            x_212 = tree[x_206_save].rightIndex;
+            x_195_phi = x_212;
+            {
+              x_195 = x_195_phi;
+              x_194_phi = x_195;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_195 = x_195_phi;
+          x_194_phi = x_195;
+        }
+      }
+      if (x_222_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_227_phi = 0;
+  bool x_255_phi = false;
+  switch(0u) {
+    default: {
+      x_227_phi = 0;
+      while (true) {
+        int x_253 = 0;
+        int x_245 = 0;
+        int x_228 = 0;
+        int x_228_phi = 0;
+        const int x_227 = x_227_phi;
+        x_255_phi = false;
+        if ((x_227 <= 6)) {
+        } else {
+          break;
+        }
+        const int x_234 = tree[x_227].data;
+        if ((2 <= x_234)) {
+          const int x_247_save = x_227;
+          const int x_248 = tree[x_247_save].leftIndex;
+          if ((x_248 == -1)) {
+            tree[x_247_save].leftIndex = 6;
+            const BST tint_symbol_13 = {2, -1, -1};
+            tree[6] = tint_symbol_13;
+            x_255_phi = true;
+            break;
+          } else {
+            x_253 = tree[x_247_save].leftIndex;
+            x_228_phi = x_253;
+            {
+              x_228 = x_228_phi;
+              x_227_phi = x_228;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_239_save = x_227;
+          const int x_240 = tree[x_239_save].rightIndex;
+          if ((x_240 == -1)) {
+            tree[x_239_save].rightIndex = 6;
+            const BST tint_symbol_14 = {2, -1, -1};
+            tree[6] = tint_symbol_14;
+            x_255_phi = true;
+            break;
+          } else {
+            x_245 = tree[x_239_save].rightIndex;
+            x_228_phi = x_245;
+            {
+              x_228 = x_228_phi;
+              x_227_phi = x_228;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_228 = x_228_phi;
+          x_227_phi = x_228;
+        }
+      }
+      if (x_255_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_260_phi = 0;
+  bool x_288_phi = false;
+  switch(0u) {
+    default: {
+      x_260_phi = 0;
+      while (true) {
+        int x_286 = 0;
+        int x_278 = 0;
+        int x_261 = 0;
+        int x_261_phi = 0;
+        const int x_260 = x_260_phi;
+        x_288_phi = false;
+        if ((x_260 <= 7)) {
+        } else {
+          break;
+        }
+        const int x_267 = tree[x_260].data;
+        if ((6 <= x_267)) {
+          const int x_280_save = x_260;
+          const int x_281 = tree[x_280_save].leftIndex;
+          if ((x_281 == -1)) {
+            tree[x_280_save].leftIndex = 7;
+            const BST tint_symbol_15 = {6, -1, -1};
+            tree[7] = tint_symbol_15;
+            x_288_phi = true;
+            break;
+          } else {
+            x_286 = tree[x_280_save].leftIndex;
+            x_261_phi = x_286;
+            {
+              x_261 = x_261_phi;
+              x_260_phi = x_261;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_272_save = x_260;
+          const int x_273 = tree[x_272_save].rightIndex;
+          if ((x_273 == -1)) {
+            tree[x_272_save].rightIndex = 7;
+            const BST tint_symbol_16 = {6, -1, -1};
+            tree[7] = tint_symbol_16;
+            x_288_phi = true;
+            break;
+          } else {
+            x_278 = tree[x_272_save].rightIndex;
+            x_261_phi = x_278;
+            {
+              x_261 = x_261_phi;
+              x_260_phi = x_261;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_261 = x_261_phi;
+          x_260_phi = x_261;
+        }
+      }
+      if (x_288_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_293_phi = 0;
+  bool x_321_phi = false;
+  switch(0u) {
+    default: {
+      x_293_phi = 0;
+      while (true) {
+        int x_319 = 0;
+        int x_311 = 0;
+        int x_294 = 0;
+        int x_294_phi = 0;
+        const int x_293 = x_293_phi;
+        x_321_phi = false;
+        if ((x_293 <= 8)) {
+        } else {
+          break;
+        }
+        const int x_300 = tree[x_293].data;
+        if ((17 <= x_300)) {
+          const int x_313_save = x_293;
+          const int x_314 = tree[x_313_save].leftIndex;
+          if ((x_314 == -1)) {
+            tree[x_313_save].leftIndex = 8;
+            const BST tint_symbol_17 = {17, -1, -1};
+            tree[8] = tint_symbol_17;
+            x_321_phi = true;
+            break;
+          } else {
+            x_319 = tree[x_313_save].leftIndex;
+            x_294_phi = x_319;
+            {
+              x_294 = x_294_phi;
+              x_293_phi = x_294;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_305_save = x_293;
+          const int x_306 = tree[x_305_save].rightIndex;
+          if ((x_306 == -1)) {
+            tree[x_305_save].rightIndex = 8;
+            const BST tint_symbol_18 = {17, -1, -1};
+            tree[8] = tint_symbol_18;
+            x_321_phi = true;
+            break;
+          } else {
+            x_311 = tree[x_305_save].rightIndex;
+            x_294_phi = x_311;
+            {
+              x_294 = x_294_phi;
+              x_293_phi = x_294;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_294 = x_294_phi;
+          x_293_phi = x_294;
+        }
+      }
+      if (x_321_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_326_phi = 0;
+  bool x_354_phi = false;
+  switch(0u) {
+    default: {
+      x_326_phi = 0;
+      while (true) {
+        int x_352 = 0;
+        int x_344 = 0;
+        int x_327 = 0;
+        int x_327_phi = 0;
+        const int x_326 = x_326_phi;
+        x_354_phi = false;
+        if ((x_326 <= 9)) {
+        } else {
+          break;
+        }
+        const int x_333 = tree[x_326].data;
+        if ((13 <= x_333)) {
+          const int x_346_save = x_326;
+          const int x_347 = tree[x_346_save].leftIndex;
+          if ((x_347 == -1)) {
+            tree[x_346_save].leftIndex = 9;
+            const BST tint_symbol_19 = {13, -1, -1};
+            tree[9] = tint_symbol_19;
+            x_354_phi = true;
+            break;
+          } else {
+            x_352 = tree[x_346_save].leftIndex;
+            x_327_phi = x_352;
+            {
+              x_327 = x_327_phi;
+              x_326_phi = x_327;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_338_save = x_326;
+          const int x_339 = tree[x_338_save].rightIndex;
+          if ((x_339 == -1)) {
+            tree[x_338_save].rightIndex = 9;
+            const BST tint_symbol_20 = {13, -1, -1};
+            tree[9] = tint_symbol_20;
+            x_354_phi = true;
+            break;
+          } else {
+            x_344 = tree[x_338_save].rightIndex;
+            x_327_phi = x_344;
+            {
+              x_327 = x_327_phi;
+              x_326_phi = x_327;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_327 = x_327_phi;
+          x_326_phi = x_327;
+        }
+      }
+      if (x_354_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  x_357_phi = 0;
+  x_360_phi = 0;
+  x_362_phi = 0;
+  while (true) {
+    int x_392 = 0;
+    int x_402 = 0;
+    int x_407 = 0;
+    int x_363 = 0;
+    int x_358_phi = 0;
+    int x_361_phi = 0;
+    const int x_357 = x_357_phi;
+    x_360 = x_360_phi;
+    const int x_362 = x_362_phi;
+    const int x_365 = (6 - 15);
+    if ((x_362 < 20)) {
+    } else {
+      break;
+    }
+    int x_374_phi = 0;
+    int x_392_phi = 0;
+    bool x_393_phi = false;
+    switch(0u) {
+      default: {
+        x_374_phi = 0;
+        while (true) {
+          const int x_374 = x_374_phi;
+          x_392_phi = x_357;
+          x_393_phi = false;
+          if ((x_374 != -1)) {
+          } else {
+            break;
+          }
+          const BST x_381 = tree[x_374];
+          const int x_382 = x_381.data;
+          const int x_383 = x_381.leftIndex;
+          const int x_385 = x_381.rightIndex;
+          if ((x_382 == x_362)) {
+            x_392_phi = x_362;
+            x_393_phi = true;
+            break;
+          }
+          const float x_389 = x_GLF_color[((3u <= 3u) ? 3u : 3u)];
+          {
+            x_374_phi = (!((x_362 <= x_382)) ? x_385 : x_383);
+          }
+        }
+        x_392 = x_392_phi;
+        const bool x_393 = x_393_phi;
+        x_358_phi = x_392;
+        if (x_393) {
+          break;
+        }
+        x_358_phi = -1;
+        break;
+      }
+    }
+    int x_358 = 0;
+    int x_401 = 0;
+    int x_406 = 0;
+    int x_402_phi = 0;
+    int x_407_phi = 0;
+    x_358 = x_358_phi;
+    switch(x_362) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_402_phi = x_360;
+        if ((x_358 == asint(x_362))) {
+          x_401 = asint((x_360 + asint(1)));
+          x_402_phi = x_401;
+        }
+        x_402 = x_402_phi;
+        x_361_phi = x_402;
+        break;
+      }
+      default: {
+        x_407_phi = x_360;
+        if ((x_358 == asint(-1))) {
+          x_406 = asint((x_360 + asint(1)));
+          x_407_phi = x_406;
+        }
+        x_407 = x_407_phi;
+        x_361_phi = x_407;
+        break;
+      }
+    }
+    const int x_361 = x_361_phi;
+    {
+      x_363 = (x_362 + 1);
+      x_357_phi = x_358;
+      x_360_phi = x_361;
+      x_362_phi = x_363;
+    }
+  }
+  if ((x_360 == asint(20))) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_21 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_21;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.msl
new file mode 100644
index 0000000..94bc881
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.msl
@@ -0,0 +1,764 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_23) {
+  tint_array_wrapper tree = {};
+  int x_360 = 0;
+  int x_62_phi = 0;
+  bool x_90_phi = false;
+  int x_357_phi = 0;
+  int x_360_phi = 0;
+  int x_362_phi = 0;
+  BST const tint_symbol_3 = {.data=9, .leftIndex=-1, .rightIndex=-1};
+  tree.arr[0] = tint_symbol_3;
+  switch(0u) {
+    default: {
+      x_62_phi = 0;
+      while (true) {
+        int x_88 = 0;
+        int x_80 = 0;
+        int x_63 = 0;
+        int x_63_phi = 0;
+        int const x_62 = x_62_phi;
+        x_90_phi = false;
+        if ((x_62 <= 1)) {
+        } else {
+          break;
+        }
+        int const x_69 = tree.arr[x_62].data;
+        if ((5 <= x_69)) {
+          int const x_82_save = x_62;
+          int const x_83 = tree.arr[x_82_save].leftIndex;
+          if ((x_83 == -1)) {
+            tree.arr[x_82_save].leftIndex = 1;
+            BST const tint_symbol_4 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_4;
+            x_90_phi = true;
+            break;
+          } else {
+            x_88 = tree.arr[x_82_save].leftIndex;
+            x_63_phi = x_88;
+            {
+              x_63 = x_63_phi;
+              x_62_phi = x_63;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_74_save = x_62;
+          int const x_75 = tree.arr[x_74_save].rightIndex;
+          if ((x_75 == -1)) {
+            tree.arr[x_74_save].rightIndex = 1;
+            BST const tint_symbol_5 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_5;
+            x_90_phi = true;
+            break;
+          } else {
+            x_80 = tree.arr[x_74_save].rightIndex;
+            x_63_phi = x_80;
+            {
+              x_63 = x_63_phi;
+              x_62_phi = x_63;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_63 = x_63_phi;
+          x_62_phi = x_63;
+        }
+      }
+      bool const x_90 = x_90_phi;
+      if (x_90) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_95_phi = 0;
+  bool x_123_phi = false;
+  switch(0u) {
+    default: {
+      x_95_phi = 0;
+      while (true) {
+        int x_121 = 0;
+        int x_113 = 0;
+        int x_96 = 0;
+        int x_96_phi = 0;
+        int const x_95 = x_95_phi;
+        x_123_phi = false;
+        if ((x_95 <= 2)) {
+        } else {
+          break;
+        }
+        int const x_102 = tree.arr[x_95].data;
+        if ((12 <= x_102)) {
+          int const x_115_save = x_95;
+          int const x_116 = tree.arr[x_115_save].leftIndex;
+          if ((x_116 == -1)) {
+            tree.arr[x_115_save].leftIndex = 2;
+            BST const tint_symbol_6 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[2] = tint_symbol_6;
+            x_123_phi = true;
+            break;
+          } else {
+            x_121 = tree.arr[x_115_save].leftIndex;
+            x_96_phi = x_121;
+            {
+              x_96 = x_96_phi;
+              x_95_phi = x_96;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_107_save = x_95;
+          int const x_108 = tree.arr[x_107_save].rightIndex;
+          if ((x_108 == -1)) {
+            tree.arr[x_107_save].rightIndex = 2;
+            BST const tint_symbol_7 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[2] = tint_symbol_7;
+            x_123_phi = true;
+            break;
+          } else {
+            x_113 = tree.arr[x_107_save].rightIndex;
+            x_96_phi = x_113;
+            {
+              x_96 = x_96_phi;
+              x_95_phi = x_96;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_96 = x_96_phi;
+          x_95_phi = x_96;
+        }
+      }
+      bool const x_123 = x_123_phi;
+      if (x_123) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_128_phi = 0;
+  bool x_156_phi = false;
+  switch(0u) {
+    default: {
+      x_128_phi = 0;
+      while (true) {
+        int x_154 = 0;
+        int x_146 = 0;
+        int x_129 = 0;
+        int x_129_phi = 0;
+        int const x_128 = x_128_phi;
+        x_156_phi = false;
+        if ((x_128 <= 3)) {
+        } else {
+          break;
+        }
+        int const x_135 = tree.arr[x_128].data;
+        if ((15 <= x_135)) {
+          int const x_148_save = x_128;
+          int const x_149 = tree.arr[x_148_save].leftIndex;
+          if ((x_149 == -1)) {
+            tree.arr[x_148_save].leftIndex = 3;
+            BST const tint_symbol_8 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_8;
+            x_156_phi = true;
+            break;
+          } else {
+            x_154 = tree.arr[x_148_save].leftIndex;
+            x_129_phi = x_154;
+            {
+              x_129 = x_129_phi;
+              x_128_phi = x_129;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_140_save = x_128;
+          int const x_141 = tree.arr[x_140_save].rightIndex;
+          if ((x_141 == -1)) {
+            tree.arr[x_140_save].rightIndex = 3;
+            BST const tint_symbol_9 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_9;
+            x_156_phi = true;
+            break;
+          } else {
+            x_146 = tree.arr[x_140_save].rightIndex;
+            x_129_phi = x_146;
+            {
+              x_129 = x_129_phi;
+              x_128_phi = x_129;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_129 = x_129_phi;
+          x_128_phi = x_129;
+        }
+      }
+      bool const x_156 = x_156_phi;
+      if (x_156) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_161_phi = 0;
+  bool x_189_phi = false;
+  switch(0u) {
+    default: {
+      x_161_phi = 0;
+      while (true) {
+        int x_187 = 0;
+        int x_179 = 0;
+        int x_162 = 0;
+        int x_162_phi = 0;
+        int const x_161 = x_161_phi;
+        x_189_phi = false;
+        if ((x_161 <= 4)) {
+        } else {
+          break;
+        }
+        int const x_168 = tree.arr[x_161].data;
+        if ((7 <= x_168)) {
+          int const x_181_save = x_161;
+          int const x_182 = tree.arr[x_181_save].leftIndex;
+          if ((x_182 == -1)) {
+            tree.arr[x_181_save].leftIndex = 4;
+            BST const tint_symbol_10 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_10;
+            x_189_phi = true;
+            break;
+          } else {
+            x_187 = tree.arr[x_181_save].leftIndex;
+            x_162_phi = x_187;
+            {
+              x_162 = x_162_phi;
+              x_161_phi = x_162;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_173_save = x_161;
+          int const x_174 = tree.arr[x_173_save].rightIndex;
+          if ((x_174 == -1)) {
+            tree.arr[x_173_save].rightIndex = 4;
+            BST const tint_symbol_11 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_11;
+            x_189_phi = true;
+            break;
+          } else {
+            x_179 = tree.arr[x_173_save].rightIndex;
+            x_162_phi = x_179;
+            {
+              x_162 = x_162_phi;
+              x_161_phi = x_162;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_162 = x_162_phi;
+          x_161_phi = x_162;
+        }
+      }
+      bool const x_189 = x_189_phi;
+      if (x_189) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_194_phi = 0;
+  bool x_222_phi = false;
+  switch(0u) {
+    default: {
+      x_194_phi = 0;
+      while (true) {
+        int x_220 = 0;
+        int x_212 = 0;
+        int x_195 = 0;
+        int x_195_phi = 0;
+        int const x_194 = x_194_phi;
+        x_222_phi = false;
+        if ((x_194 <= 5)) {
+        } else {
+          break;
+        }
+        int const x_201 = tree.arr[x_194].data;
+        if ((8 <= x_201)) {
+          int const x_214_save = x_194;
+          int const x_215 = tree.arr[x_214_save].leftIndex;
+          if ((x_215 == -1)) {
+            tree.arr[x_214_save].leftIndex = 5;
+            BST const tint_symbol_12 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_12;
+            x_222_phi = true;
+            break;
+          } else {
+            x_220 = tree.arr[x_214_save].leftIndex;
+            x_195_phi = x_220;
+            {
+              x_195 = x_195_phi;
+              x_194_phi = x_195;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_206_save = x_194;
+          int const x_207 = tree.arr[x_206_save].rightIndex;
+          if ((x_207 == -1)) {
+            tree.arr[x_206_save].rightIndex = 5;
+            BST const tint_symbol_13 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_13;
+            x_222_phi = true;
+            break;
+          } else {
+            x_212 = tree.arr[x_206_save].rightIndex;
+            x_195_phi = x_212;
+            {
+              x_195 = x_195_phi;
+              x_194_phi = x_195;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_195 = x_195_phi;
+          x_194_phi = x_195;
+        }
+      }
+      bool const x_222 = x_222_phi;
+      if (x_222) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_227_phi = 0;
+  bool x_255_phi = false;
+  switch(0u) {
+    default: {
+      x_227_phi = 0;
+      while (true) {
+        int x_253 = 0;
+        int x_245 = 0;
+        int x_228 = 0;
+        int x_228_phi = 0;
+        int const x_227 = x_227_phi;
+        x_255_phi = false;
+        if ((x_227 <= 6)) {
+        } else {
+          break;
+        }
+        int const x_234 = tree.arr[x_227].data;
+        if ((2 <= x_234)) {
+          int const x_247_save = x_227;
+          int const x_248 = tree.arr[x_247_save].leftIndex;
+          if ((x_248 == -1)) {
+            tree.arr[x_247_save].leftIndex = 6;
+            BST const tint_symbol_14 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_14;
+            x_255_phi = true;
+            break;
+          } else {
+            x_253 = tree.arr[x_247_save].leftIndex;
+            x_228_phi = x_253;
+            {
+              x_228 = x_228_phi;
+              x_227_phi = x_228;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_239_save = x_227;
+          int const x_240 = tree.arr[x_239_save].rightIndex;
+          if ((x_240 == -1)) {
+            tree.arr[x_239_save].rightIndex = 6;
+            BST const tint_symbol_15 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_15;
+            x_255_phi = true;
+            break;
+          } else {
+            x_245 = tree.arr[x_239_save].rightIndex;
+            x_228_phi = x_245;
+            {
+              x_228 = x_228_phi;
+              x_227_phi = x_228;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_228 = x_228_phi;
+          x_227_phi = x_228;
+        }
+      }
+      bool const x_255 = x_255_phi;
+      if (x_255) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_260_phi = 0;
+  bool x_288_phi = false;
+  switch(0u) {
+    default: {
+      x_260_phi = 0;
+      while (true) {
+        int x_286 = 0;
+        int x_278 = 0;
+        int x_261 = 0;
+        int x_261_phi = 0;
+        int const x_260 = x_260_phi;
+        x_288_phi = false;
+        if ((x_260 <= 7)) {
+        } else {
+          break;
+        }
+        int const x_267 = tree.arr[x_260].data;
+        if ((6 <= x_267)) {
+          int const x_280_save = x_260;
+          int const x_281 = tree.arr[x_280_save].leftIndex;
+          if ((x_281 == -1)) {
+            tree.arr[x_280_save].leftIndex = 7;
+            BST const tint_symbol_16 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_16;
+            x_288_phi = true;
+            break;
+          } else {
+            x_286 = tree.arr[x_280_save].leftIndex;
+            x_261_phi = x_286;
+            {
+              x_261 = x_261_phi;
+              x_260_phi = x_261;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_272_save = x_260;
+          int const x_273 = tree.arr[x_272_save].rightIndex;
+          if ((x_273 == -1)) {
+            tree.arr[x_272_save].rightIndex = 7;
+            BST const tint_symbol_17 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_17;
+            x_288_phi = true;
+            break;
+          } else {
+            x_278 = tree.arr[x_272_save].rightIndex;
+            x_261_phi = x_278;
+            {
+              x_261 = x_261_phi;
+              x_260_phi = x_261;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_261 = x_261_phi;
+          x_260_phi = x_261;
+        }
+      }
+      bool const x_288 = x_288_phi;
+      if (x_288) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_293_phi = 0;
+  bool x_321_phi = false;
+  switch(0u) {
+    default: {
+      x_293_phi = 0;
+      while (true) {
+        int x_319 = 0;
+        int x_311 = 0;
+        int x_294 = 0;
+        int x_294_phi = 0;
+        int const x_293 = x_293_phi;
+        x_321_phi = false;
+        if ((x_293 <= 8)) {
+        } else {
+          break;
+        }
+        int const x_300 = tree.arr[x_293].data;
+        if ((17 <= x_300)) {
+          int const x_313_save = x_293;
+          int const x_314 = tree.arr[x_313_save].leftIndex;
+          if ((x_314 == -1)) {
+            tree.arr[x_313_save].leftIndex = 8;
+            BST const tint_symbol_18 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_18;
+            x_321_phi = true;
+            break;
+          } else {
+            x_319 = tree.arr[x_313_save].leftIndex;
+            x_294_phi = x_319;
+            {
+              x_294 = x_294_phi;
+              x_293_phi = x_294;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_305_save = x_293;
+          int const x_306 = tree.arr[x_305_save].rightIndex;
+          if ((x_306 == -1)) {
+            tree.arr[x_305_save].rightIndex = 8;
+            BST const tint_symbol_19 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_19;
+            x_321_phi = true;
+            break;
+          } else {
+            x_311 = tree.arr[x_305_save].rightIndex;
+            x_294_phi = x_311;
+            {
+              x_294 = x_294_phi;
+              x_293_phi = x_294;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_294 = x_294_phi;
+          x_293_phi = x_294;
+        }
+      }
+      bool const x_321 = x_321_phi;
+      if (x_321) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_326_phi = 0;
+  bool x_354_phi = false;
+  switch(0u) {
+    default: {
+      x_326_phi = 0;
+      while (true) {
+        int x_352 = 0;
+        int x_344 = 0;
+        int x_327 = 0;
+        int x_327_phi = 0;
+        int const x_326 = x_326_phi;
+        x_354_phi = false;
+        if ((x_326 <= 9)) {
+        } else {
+          break;
+        }
+        int const x_333 = tree.arr[x_326].data;
+        if ((13 <= x_333)) {
+          int const x_346_save = x_326;
+          int const x_347 = tree.arr[x_346_save].leftIndex;
+          if ((x_347 == -1)) {
+            tree.arr[x_346_save].leftIndex = 9;
+            BST const tint_symbol_20 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_20;
+            x_354_phi = true;
+            break;
+          } else {
+            x_352 = tree.arr[x_346_save].leftIndex;
+            x_327_phi = x_352;
+            {
+              x_327 = x_327_phi;
+              x_326_phi = x_327;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_338_save = x_326;
+          int const x_339 = tree.arr[x_338_save].rightIndex;
+          if ((x_339 == -1)) {
+            tree.arr[x_338_save].rightIndex = 9;
+            BST const tint_symbol_21 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_21;
+            x_354_phi = true;
+            break;
+          } else {
+            x_344 = tree.arr[x_338_save].rightIndex;
+            x_327_phi = x_344;
+            {
+              x_327 = x_327_phi;
+              x_326_phi = x_327;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_327 = x_327_phi;
+          x_326_phi = x_327;
+        }
+      }
+      bool const x_354 = x_354_phi;
+      if (x_354) {
+        break;
+      }
+      break;
+    }
+  }
+  x_357_phi = 0;
+  x_360_phi = 0;
+  x_362_phi = 0;
+  while (true) {
+    int x_392 = 0;
+    int x_402 = 0;
+    int x_407 = 0;
+    int x_363 = 0;
+    int x_358_phi = 0;
+    int x_361_phi = 0;
+    int const x_357 = x_357_phi;
+    x_360 = x_360_phi;
+    int const x_362 = x_362_phi;
+    int const x_365 = (6 - 15);
+    if ((x_362 < 20)) {
+    } else {
+      break;
+    }
+    int x_374_phi = 0;
+    int x_392_phi = 0;
+    bool x_393_phi = false;
+    switch(0u) {
+      default: {
+        x_374_phi = 0;
+        while (true) {
+          int const x_374 = x_374_phi;
+          x_392_phi = x_357;
+          x_393_phi = false;
+          if ((x_374 != -1)) {
+          } else {
+            break;
+          }
+          BST const x_381 = tree.arr[x_374];
+          int const x_382 = x_381.data;
+          int const x_383 = x_381.leftIndex;
+          int const x_385 = x_381.rightIndex;
+          if ((x_382 == x_362)) {
+            x_392_phi = x_362;
+            x_393_phi = true;
+            break;
+          }
+          float const x_389 = (*(tint_symbol_23))[select(3u, 3u, (3u <= 3u))];
+          {
+            x_374_phi = select(x_383, x_385, !((x_362 <= x_382)));
+          }
+        }
+        x_392 = x_392_phi;
+        bool const x_393 = x_393_phi;
+        x_358_phi = x_392;
+        if (x_393) {
+          break;
+        }
+        x_358_phi = -1;
+        break;
+      }
+    }
+    int x_358 = 0;
+    int x_401 = 0;
+    int x_406 = 0;
+    int x_402_phi = 0;
+    int x_407_phi = 0;
+    x_358 = x_358_phi;
+    switch(x_362) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_402_phi = x_360;
+        if ((x_358 == as_type<int>(x_362))) {
+          x_401 = as_type<int>((x_360 + as_type<int>(1)));
+          x_402_phi = x_401;
+        }
+        x_402 = x_402_phi;
+        x_361_phi = x_402;
+        break;
+      }
+      default: {
+        x_407_phi = x_360;
+        if ((x_358 == as_type<int>(-1))) {
+          x_406 = as_type<int>((x_360 + as_type<int>(1)));
+          x_407_phi = x_406;
+        }
+        x_407 = x_407_phi;
+        x_361_phi = x_407;
+        break;
+      }
+    }
+    int const x_361 = x_361_phi;
+    {
+      x_363 = (x_362 + 1);
+      x_357_phi = x_358;
+      x_360_phi = x_361;
+      x_362_phi = x_363;
+    }
+  }
+  if ((x_360 == as_type<int>(20))) {
+    *(tint_symbol_23) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_23) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_24 = 0.0f;
+  main_1(&(tint_symbol_24));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_24};
+  tint_symbol_1 const tint_symbol_22 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_22;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..9057c70
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.spvasm
@@ -0,0 +1,1174 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 627
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %x_360 "x_360"
+               OpName %x_62_phi "x_62_phi"
+               OpName %x_90_phi "x_90_phi"
+               OpName %x_357_phi "x_357_phi"
+               OpName %x_360_phi "x_360_phi"
+               OpName %x_362_phi "x_362_phi"
+               OpName %x_88 "x_88"
+               OpName %x_80 "x_80"
+               OpName %x_63 "x_63"
+               OpName %x_63_phi "x_63_phi"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_123_phi "x_123_phi"
+               OpName %x_121 "x_121"
+               OpName %x_113 "x_113"
+               OpName %x_96 "x_96"
+               OpName %x_96_phi "x_96_phi"
+               OpName %x_128_phi "x_128_phi"
+               OpName %x_156_phi "x_156_phi"
+               OpName %x_154 "x_154"
+               OpName %x_146 "x_146"
+               OpName %x_129 "x_129"
+               OpName %x_129_phi "x_129_phi"
+               OpName %x_161_phi "x_161_phi"
+               OpName %x_189_phi "x_189_phi"
+               OpName %x_187 "x_187"
+               OpName %x_179 "x_179"
+               OpName %x_162 "x_162"
+               OpName %x_162_phi "x_162_phi"
+               OpName %x_194_phi "x_194_phi"
+               OpName %x_222_phi "x_222_phi"
+               OpName %x_220 "x_220"
+               OpName %x_212 "x_212"
+               OpName %x_195 "x_195"
+               OpName %x_195_phi "x_195_phi"
+               OpName %x_227_phi "x_227_phi"
+               OpName %x_255_phi "x_255_phi"
+               OpName %x_253 "x_253"
+               OpName %x_245 "x_245"
+               OpName %x_228 "x_228"
+               OpName %x_228_phi "x_228_phi"
+               OpName %x_260_phi "x_260_phi"
+               OpName %x_288_phi "x_288_phi"
+               OpName %x_286 "x_286"
+               OpName %x_278 "x_278"
+               OpName %x_261 "x_261"
+               OpName %x_261_phi "x_261_phi"
+               OpName %x_293_phi "x_293_phi"
+               OpName %x_321_phi "x_321_phi"
+               OpName %x_319 "x_319"
+               OpName %x_311 "x_311"
+               OpName %x_294 "x_294"
+               OpName %x_294_phi "x_294_phi"
+               OpName %x_326_phi "x_326_phi"
+               OpName %x_354_phi "x_354_phi"
+               OpName %x_352 "x_352"
+               OpName %x_344 "x_344"
+               OpName %x_327 "x_327"
+               OpName %x_327_phi "x_327_phi"
+               OpName %x_392 "x_392"
+               OpName %x_402 "x_402"
+               OpName %x_407 "x_407"
+               OpName %x_363 "x_363"
+               OpName %x_358_phi "x_358_phi"
+               OpName %x_361_phi "x_361_phi"
+               OpName %x_374_phi "x_374_phi"
+               OpName %x_392_phi "x_392_phi"
+               OpName %x_393_phi "x_393_phi"
+               OpName %x_358 "x_358"
+               OpName %x_401 "x_401"
+               OpName %x_406 "x_406"
+               OpName %x_402_phi "x_402_phi"
+               OpName %x_407_phi "x_407_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %19 = OpConstantNull %_arr_BST_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+%_ptr_Function_BST = OpTypePointer Function %BST
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+         %36 = OpConstantComposite %BST %int_9 %int_n1 %int_n1
+     %uint_0 = OpConstant %uint 0
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+         %71 = OpConstantComposite %BST %int_5 %int_n1 %int_n1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+      %int_2 = OpConstant %int 2
+     %int_12 = OpConstant %int 12
+        %126 = OpConstantComposite %BST %int_12 %int_n1 %int_n1
+      %int_3 = OpConstant %int 3
+     %int_15 = OpConstant %int 15
+        %179 = OpConstantComposite %BST %int_15 %int_n1 %int_n1
+      %int_4 = OpConstant %int 4
+      %int_7 = OpConstant %int 7
+        %232 = OpConstantComposite %BST %int_7 %int_n1 %int_n1
+      %int_8 = OpConstant %int 8
+        %284 = OpConstantComposite %BST %int_8 %int_n1 %int_n1
+      %int_6 = OpConstant %int 6
+        %336 = OpConstantComposite %BST %int_2 %int_n1 %int_n1
+        %387 = OpConstantComposite %BST %int_6 %int_n1 %int_n1
+     %int_17 = OpConstant %int 17
+        %439 = OpConstantComposite %BST %int_17 %int_n1 %int_n1
+     %int_13 = OpConstant %int 13
+        %491 = OpConstantComposite %BST %int_13 %int_n1 %int_n1
+     %int_20 = OpConstant %int 20
+     %uint_3 = OpConstant %uint 3
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %613 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %614 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %615 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %tree = OpVariable %_ptr_Function__arr_BST_uint_10 Function %19
+      %x_360 = OpVariable %_ptr_Function_int Function %22
+   %x_62_phi = OpVariable %_ptr_Function_int Function %22
+   %x_90_phi = OpVariable %_ptr_Function_bool Function %27
+  %x_357_phi = OpVariable %_ptr_Function_int Function %22
+  %x_360_phi = OpVariable %_ptr_Function_int Function %22
+  %x_362_phi = OpVariable %_ptr_Function_int Function %22
+       %x_88 = OpVariable %_ptr_Function_int Function %22
+       %x_80 = OpVariable %_ptr_Function_int Function %22
+       %x_63 = OpVariable %_ptr_Function_int Function %22
+   %x_63_phi = OpVariable %_ptr_Function_int Function %22
+   %x_95_phi = OpVariable %_ptr_Function_int Function %22
+  %x_123_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_121 = OpVariable %_ptr_Function_int Function %22
+      %x_113 = OpVariable %_ptr_Function_int Function %22
+       %x_96 = OpVariable %_ptr_Function_int Function %22
+   %x_96_phi = OpVariable %_ptr_Function_int Function %22
+  %x_128_phi = OpVariable %_ptr_Function_int Function %22
+  %x_156_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_154 = OpVariable %_ptr_Function_int Function %22
+      %x_146 = OpVariable %_ptr_Function_int Function %22
+      %x_129 = OpVariable %_ptr_Function_int Function %22
+  %x_129_phi = OpVariable %_ptr_Function_int Function %22
+  %x_161_phi = OpVariable %_ptr_Function_int Function %22
+  %x_189_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_187 = OpVariable %_ptr_Function_int Function %22
+      %x_179 = OpVariable %_ptr_Function_int Function %22
+      %x_162 = OpVariable %_ptr_Function_int Function %22
+  %x_162_phi = OpVariable %_ptr_Function_int Function %22
+  %x_194_phi = OpVariable %_ptr_Function_int Function %22
+  %x_222_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_220 = OpVariable %_ptr_Function_int Function %22
+      %x_212 = OpVariable %_ptr_Function_int Function %22
+      %x_195 = OpVariable %_ptr_Function_int Function %22
+  %x_195_phi = OpVariable %_ptr_Function_int Function %22
+  %x_227_phi = OpVariable %_ptr_Function_int Function %22
+  %x_255_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_253 = OpVariable %_ptr_Function_int Function %22
+      %x_245 = OpVariable %_ptr_Function_int Function %22
+      %x_228 = OpVariable %_ptr_Function_int Function %22
+  %x_228_phi = OpVariable %_ptr_Function_int Function %22
+  %x_260_phi = OpVariable %_ptr_Function_int Function %22
+  %x_288_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_286 = OpVariable %_ptr_Function_int Function %22
+      %x_278 = OpVariable %_ptr_Function_int Function %22
+      %x_261 = OpVariable %_ptr_Function_int Function %22
+  %x_261_phi = OpVariable %_ptr_Function_int Function %22
+  %x_293_phi = OpVariable %_ptr_Function_int Function %22
+  %x_321_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_319 = OpVariable %_ptr_Function_int Function %22
+      %x_311 = OpVariable %_ptr_Function_int Function %22
+      %x_294 = OpVariable %_ptr_Function_int Function %22
+  %x_294_phi = OpVariable %_ptr_Function_int Function %22
+  %x_326_phi = OpVariable %_ptr_Function_int Function %22
+  %x_354_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_352 = OpVariable %_ptr_Function_int Function %22
+      %x_344 = OpVariable %_ptr_Function_int Function %22
+      %x_327 = OpVariable %_ptr_Function_int Function %22
+  %x_327_phi = OpVariable %_ptr_Function_int Function %22
+      %x_392 = OpVariable %_ptr_Function_int Function %22
+      %x_402 = OpVariable %_ptr_Function_int Function %22
+      %x_407 = OpVariable %_ptr_Function_int Function %22
+      %x_363 = OpVariable %_ptr_Function_int Function %22
+  %x_358_phi = OpVariable %_ptr_Function_int Function %22
+  %x_361_phi = OpVariable %_ptr_Function_int Function %22
+  %x_374_phi = OpVariable %_ptr_Function_int Function %22
+  %x_392_phi = OpVariable %_ptr_Function_int Function %22
+  %x_393_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_358 = OpVariable %_ptr_Function_int Function %22
+      %x_401 = OpVariable %_ptr_Function_int Function %22
+      %x_406 = OpVariable %_ptr_Function_int Function %22
+  %x_402_phi = OpVariable %_ptr_Function_int Function %22
+  %x_407_phi = OpVariable %_ptr_Function_int Function %22
+         %33 = OpAccessChain %_ptr_Function_BST %tree %int_0
+               OpStore %33 %36
+               OpSelectionMerge %37 None
+               OpSwitch %uint_0 %39
+         %39 = OpLabel
+               OpStore %x_62_phi %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %48 = OpLoad %int %x_62_phi
+               OpStore %x_90_phi %false
+         %51 = OpSLessThanEqual %bool %48 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %41
+         %52 = OpLabel
+         %55 = OpAccessChain %_ptr_Function_int %tree %48 %uint_0
+         %56 = OpLoad %int %55
+         %58 = OpSLessThanEqual %bool %int_5 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+         %64 = OpLoad %int %63
+         %65 = OpIEqual %bool %64 %int_n1
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+         %69 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+               OpStore %69 %int_1
+         %70 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %70 %71
+               OpStore %x_90_phi %true
+               OpBranch %41
+         %68 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+         %74 = OpLoad %int %73
+               OpStore %x_88 %74
+         %75 = OpLoad %int %x_88
+               OpStore %x_63_phi %75
+               OpBranch %42
+         %66 = OpLabel
+               OpReturn
+         %61 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+         %78 = OpLoad %int %77
+         %79 = OpIEqual %bool %78 %int_n1
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+               OpStore %83 %int_1
+         %84 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %84 %71
+               OpStore %x_90_phi %true
+               OpBranch %41
+         %82 = OpLabel
+         %85 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+         %86 = OpLoad %int %85
+               OpStore %x_80 %86
+         %87 = OpLoad %int %x_80
+               OpStore %x_63_phi %87
+               OpBranch %42
+         %80 = OpLabel
+               OpReturn
+         %59 = OpLabel
+               OpReturn
+         %42 = OpLabel
+         %88 = OpLoad %int %x_63_phi
+               OpStore %x_63 %88
+         %89 = OpLoad %int %x_63
+               OpStore %x_62_phi %89
+               OpBranch %40
+         %41 = OpLabel
+         %90 = OpLoad %bool %x_90_phi
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+               OpBranch %37
+         %91 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpSelectionMerge %95 None
+               OpSwitch %uint_0 %96
+         %96 = OpLabel
+               OpStore %x_95_phi %int_0
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %105 = OpLoad %int %x_95_phi
+               OpStore %x_123_phi %false
+        %107 = OpSLessThanEqual %bool %105 %int_2
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %110
+        %109 = OpLabel
+               OpBranch %108
+        %110 = OpLabel
+               OpBranch %98
+        %108 = OpLabel
+        %111 = OpAccessChain %_ptr_Function_int %tree %105 %uint_0
+        %112 = OpLoad %int %111
+        %114 = OpSLessThanEqual %bool %int_12 %112
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %117
+        %116 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+        %119 = OpLoad %int %118
+        %120 = OpIEqual %bool %119 %int_n1
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+        %124 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+               OpStore %124 %int_2
+        %125 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %125 %126
+               OpStore %x_123_phi %true
+               OpBranch %98
+        %123 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+        %128 = OpLoad %int %127
+               OpStore %x_121 %128
+        %129 = OpLoad %int %x_121
+               OpStore %x_96_phi %129
+               OpBranch %99
+        %121 = OpLabel
+               OpReturn
+        %117 = OpLabel
+        %130 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+        %131 = OpLoad %int %130
+        %132 = OpIEqual %bool %131 %int_n1
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %134 = OpLabel
+        %136 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+               OpStore %136 %int_2
+        %137 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %137 %126
+               OpStore %x_123_phi %true
+               OpBranch %98
+        %135 = OpLabel
+        %138 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+        %139 = OpLoad %int %138
+               OpStore %x_113 %139
+        %140 = OpLoad %int %x_113
+               OpStore %x_96_phi %140
+               OpBranch %99
+        %133 = OpLabel
+               OpReturn
+        %115 = OpLabel
+               OpReturn
+         %99 = OpLabel
+        %141 = OpLoad %int %x_96_phi
+               OpStore %x_96 %141
+        %142 = OpLoad %int %x_96
+               OpStore %x_95_phi %142
+               OpBranch %97
+         %98 = OpLabel
+        %143 = OpLoad %bool %x_123_phi
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %144
+        %145 = OpLabel
+               OpBranch %95
+        %144 = OpLabel
+               OpBranch %95
+         %95 = OpLabel
+               OpSelectionMerge %148 None
+               OpSwitch %uint_0 %149
+        %149 = OpLabel
+               OpStore %x_128_phi %int_0
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %158 = OpLoad %int %x_128_phi
+               OpStore %x_156_phi %false
+        %160 = OpSLessThanEqual %bool %158 %int_3
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+               OpBranch %161
+        %163 = OpLabel
+               OpBranch %151
+        %161 = OpLabel
+        %164 = OpAccessChain %_ptr_Function_int %tree %158 %uint_0
+        %165 = OpLoad %int %164
+        %167 = OpSLessThanEqual %bool %int_15 %165
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+        %171 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+        %172 = OpLoad %int %171
+        %173 = OpIEqual %bool %172 %int_n1
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+        %177 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+               OpStore %177 %int_3
+        %178 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %178 %179
+               OpStore %x_156_phi %true
+               OpBranch %151
+        %176 = OpLabel
+        %180 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+        %181 = OpLoad %int %180
+               OpStore %x_154 %181
+        %182 = OpLoad %int %x_154
+               OpStore %x_129_phi %182
+               OpBranch %152
+        %174 = OpLabel
+               OpReturn
+        %170 = OpLabel
+        %183 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+        %184 = OpLoad %int %183
+        %185 = OpIEqual %bool %184 %int_n1
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+        %189 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+               OpStore %189 %int_3
+        %190 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %190 %179
+               OpStore %x_156_phi %true
+               OpBranch %151
+        %188 = OpLabel
+        %191 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+        %192 = OpLoad %int %191
+               OpStore %x_146 %192
+        %193 = OpLoad %int %x_146
+               OpStore %x_129_phi %193
+               OpBranch %152
+        %186 = OpLabel
+               OpReturn
+        %168 = OpLabel
+               OpReturn
+        %152 = OpLabel
+        %194 = OpLoad %int %x_129_phi
+               OpStore %x_129 %194
+        %195 = OpLoad %int %x_129
+               OpStore %x_128_phi %195
+               OpBranch %150
+        %151 = OpLabel
+        %196 = OpLoad %bool %x_156_phi
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+               OpBranch %148
+        %197 = OpLabel
+               OpBranch %148
+        %148 = OpLabel
+               OpSelectionMerge %201 None
+               OpSwitch %uint_0 %202
+        %202 = OpLabel
+               OpStore %x_161_phi %int_0
+               OpBranch %203
+        %203 = OpLabel
+               OpLoopMerge %204 %205 None
+               OpBranch %206
+        %206 = OpLabel
+        %211 = OpLoad %int %x_161_phi
+               OpStore %x_189_phi %false
+        %213 = OpSLessThanEqual %bool %211 %int_4
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %204
+        %214 = OpLabel
+        %217 = OpAccessChain %_ptr_Function_int %tree %211 %uint_0
+        %218 = OpLoad %int %217
+        %220 = OpSLessThanEqual %bool %int_7 %218
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %223
+        %222 = OpLabel
+        %224 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+        %225 = OpLoad %int %224
+        %226 = OpIEqual %bool %225 %int_n1
+               OpSelectionMerge %227 None
+               OpBranchConditional %226 %228 %229
+        %228 = OpLabel
+        %230 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+               OpStore %230 %int_4
+        %231 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %231 %232
+               OpStore %x_189_phi %true
+               OpBranch %204
+        %229 = OpLabel
+        %233 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+        %234 = OpLoad %int %233
+               OpStore %x_187 %234
+        %235 = OpLoad %int %x_187
+               OpStore %x_162_phi %235
+               OpBranch %205
+        %227 = OpLabel
+               OpReturn
+        %223 = OpLabel
+        %236 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+        %237 = OpLoad %int %236
+        %238 = OpIEqual %bool %237 %int_n1
+               OpSelectionMerge %239 None
+               OpBranchConditional %238 %240 %241
+        %240 = OpLabel
+        %242 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+               OpStore %242 %int_4
+        %243 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %243 %232
+               OpStore %x_189_phi %true
+               OpBranch %204
+        %241 = OpLabel
+        %244 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+        %245 = OpLoad %int %244
+               OpStore %x_179 %245
+        %246 = OpLoad %int %x_179
+               OpStore %x_162_phi %246
+               OpBranch %205
+        %239 = OpLabel
+               OpReturn
+        %221 = OpLabel
+               OpReturn
+        %205 = OpLabel
+        %247 = OpLoad %int %x_162_phi
+               OpStore %x_162 %247
+        %248 = OpLoad %int %x_162
+               OpStore %x_161_phi %248
+               OpBranch %203
+        %204 = OpLabel
+        %249 = OpLoad %bool %x_189_phi
+               OpSelectionMerge %250 None
+               OpBranchConditional %249 %251 %250
+        %251 = OpLabel
+               OpBranch %201
+        %250 = OpLabel
+               OpBranch %201
+        %201 = OpLabel
+               OpSelectionMerge %254 None
+               OpSwitch %uint_0 %255
+        %255 = OpLabel
+               OpStore %x_194_phi %int_0
+               OpBranch %256
+        %256 = OpLabel
+               OpLoopMerge %257 %258 None
+               OpBranch %259
+        %259 = OpLabel
+        %264 = OpLoad %int %x_194_phi
+               OpStore %x_222_phi %false
+        %265 = OpSLessThanEqual %bool %264 %int_5
+               OpSelectionMerge %266 None
+               OpBranchConditional %265 %267 %268
+        %267 = OpLabel
+               OpBranch %266
+        %268 = OpLabel
+               OpBranch %257
+        %266 = OpLabel
+        %269 = OpAccessChain %_ptr_Function_int %tree %264 %uint_0
+        %270 = OpLoad %int %269
+        %272 = OpSLessThanEqual %bool %int_8 %270
+               OpSelectionMerge %273 None
+               OpBranchConditional %272 %274 %275
+        %274 = OpLabel
+        %276 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+        %277 = OpLoad %int %276
+        %278 = OpIEqual %bool %277 %int_n1
+               OpSelectionMerge %279 None
+               OpBranchConditional %278 %280 %281
+        %280 = OpLabel
+        %282 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+               OpStore %282 %int_5
+        %283 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %283 %284
+               OpStore %x_222_phi %true
+               OpBranch %257
+        %281 = OpLabel
+        %285 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+        %286 = OpLoad %int %285
+               OpStore %x_220 %286
+        %287 = OpLoad %int %x_220
+               OpStore %x_195_phi %287
+               OpBranch %258
+        %279 = OpLabel
+               OpReturn
+        %275 = OpLabel
+        %288 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+        %289 = OpLoad %int %288
+        %290 = OpIEqual %bool %289 %int_n1
+               OpSelectionMerge %291 None
+               OpBranchConditional %290 %292 %293
+        %292 = OpLabel
+        %294 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+               OpStore %294 %int_5
+        %295 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %295 %284
+               OpStore %x_222_phi %true
+               OpBranch %257
+        %293 = OpLabel
+        %296 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+        %297 = OpLoad %int %296
+               OpStore %x_212 %297
+        %298 = OpLoad %int %x_212
+               OpStore %x_195_phi %298
+               OpBranch %258
+        %291 = OpLabel
+               OpReturn
+        %273 = OpLabel
+               OpReturn
+        %258 = OpLabel
+        %299 = OpLoad %int %x_195_phi
+               OpStore %x_195 %299
+        %300 = OpLoad %int %x_195
+               OpStore %x_194_phi %300
+               OpBranch %256
+        %257 = OpLabel
+        %301 = OpLoad %bool %x_222_phi
+               OpSelectionMerge %302 None
+               OpBranchConditional %301 %303 %302
+        %303 = OpLabel
+               OpBranch %254
+        %302 = OpLabel
+               OpBranch %254
+        %254 = OpLabel
+               OpSelectionMerge %306 None
+               OpSwitch %uint_0 %307
+        %307 = OpLabel
+               OpStore %x_227_phi %int_0
+               OpBranch %308
+        %308 = OpLabel
+               OpLoopMerge %309 %310 None
+               OpBranch %311
+        %311 = OpLabel
+        %316 = OpLoad %int %x_227_phi
+               OpStore %x_255_phi %false
+        %318 = OpSLessThanEqual %bool %316 %int_6
+               OpSelectionMerge %319 None
+               OpBranchConditional %318 %320 %321
+        %320 = OpLabel
+               OpBranch %319
+        %321 = OpLabel
+               OpBranch %309
+        %319 = OpLabel
+        %322 = OpAccessChain %_ptr_Function_int %tree %316 %uint_0
+        %323 = OpLoad %int %322
+        %324 = OpSLessThanEqual %bool %int_2 %323
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %327
+        %326 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+        %329 = OpLoad %int %328
+        %330 = OpIEqual %bool %329 %int_n1
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %333
+        %332 = OpLabel
+        %334 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+               OpStore %334 %int_6
+        %335 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %335 %336
+               OpStore %x_255_phi %true
+               OpBranch %309
+        %333 = OpLabel
+        %337 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+        %338 = OpLoad %int %337
+               OpStore %x_253 %338
+        %339 = OpLoad %int %x_253
+               OpStore %x_228_phi %339
+               OpBranch %310
+        %331 = OpLabel
+               OpReturn
+        %327 = OpLabel
+        %340 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+        %341 = OpLoad %int %340
+        %342 = OpIEqual %bool %341 %int_n1
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+               OpStore %346 %int_6
+        %347 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %347 %336
+               OpStore %x_255_phi %true
+               OpBranch %309
+        %345 = OpLabel
+        %348 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+        %349 = OpLoad %int %348
+               OpStore %x_245 %349
+        %350 = OpLoad %int %x_245
+               OpStore %x_228_phi %350
+               OpBranch %310
+        %343 = OpLabel
+               OpReturn
+        %325 = OpLabel
+               OpReturn
+        %310 = OpLabel
+        %351 = OpLoad %int %x_228_phi
+               OpStore %x_228 %351
+        %352 = OpLoad %int %x_228
+               OpStore %x_227_phi %352
+               OpBranch %308
+        %309 = OpLabel
+        %353 = OpLoad %bool %x_255_phi
+               OpSelectionMerge %354 None
+               OpBranchConditional %353 %355 %354
+        %355 = OpLabel
+               OpBranch %306
+        %354 = OpLabel
+               OpBranch %306
+        %306 = OpLabel
+               OpSelectionMerge %358 None
+               OpSwitch %uint_0 %359
+        %359 = OpLabel
+               OpStore %x_260_phi %int_0
+               OpBranch %360
+        %360 = OpLabel
+               OpLoopMerge %361 %362 None
+               OpBranch %363
+        %363 = OpLabel
+        %368 = OpLoad %int %x_260_phi
+               OpStore %x_288_phi %false
+        %369 = OpSLessThanEqual %bool %368 %int_7
+               OpSelectionMerge %370 None
+               OpBranchConditional %369 %371 %372
+        %371 = OpLabel
+               OpBranch %370
+        %372 = OpLabel
+               OpBranch %361
+        %370 = OpLabel
+        %373 = OpAccessChain %_ptr_Function_int %tree %368 %uint_0
+        %374 = OpLoad %int %373
+        %375 = OpSLessThanEqual %bool %int_6 %374
+               OpSelectionMerge %376 None
+               OpBranchConditional %375 %377 %378
+        %377 = OpLabel
+        %379 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+        %380 = OpLoad %int %379
+        %381 = OpIEqual %bool %380 %int_n1
+               OpSelectionMerge %382 None
+               OpBranchConditional %381 %383 %384
+        %383 = OpLabel
+        %385 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+               OpStore %385 %int_7
+        %386 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %386 %387
+               OpStore %x_288_phi %true
+               OpBranch %361
+        %384 = OpLabel
+        %388 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+        %389 = OpLoad %int %388
+               OpStore %x_286 %389
+        %390 = OpLoad %int %x_286
+               OpStore %x_261_phi %390
+               OpBranch %362
+        %382 = OpLabel
+               OpReturn
+        %378 = OpLabel
+        %391 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+        %392 = OpLoad %int %391
+        %393 = OpIEqual %bool %392 %int_n1
+               OpSelectionMerge %394 None
+               OpBranchConditional %393 %395 %396
+        %395 = OpLabel
+        %397 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+               OpStore %397 %int_7
+        %398 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %398 %387
+               OpStore %x_288_phi %true
+               OpBranch %361
+        %396 = OpLabel
+        %399 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+        %400 = OpLoad %int %399
+               OpStore %x_278 %400
+        %401 = OpLoad %int %x_278
+               OpStore %x_261_phi %401
+               OpBranch %362
+        %394 = OpLabel
+               OpReturn
+        %376 = OpLabel
+               OpReturn
+        %362 = OpLabel
+        %402 = OpLoad %int %x_261_phi
+               OpStore %x_261 %402
+        %403 = OpLoad %int %x_261
+               OpStore %x_260_phi %403
+               OpBranch %360
+        %361 = OpLabel
+        %404 = OpLoad %bool %x_288_phi
+               OpSelectionMerge %405 None
+               OpBranchConditional %404 %406 %405
+        %406 = OpLabel
+               OpBranch %358
+        %405 = OpLabel
+               OpBranch %358
+        %358 = OpLabel
+               OpSelectionMerge %409 None
+               OpSwitch %uint_0 %410
+        %410 = OpLabel
+               OpStore %x_293_phi %int_0
+               OpBranch %411
+        %411 = OpLabel
+               OpLoopMerge %412 %413 None
+               OpBranch %414
+        %414 = OpLabel
+        %419 = OpLoad %int %x_293_phi
+               OpStore %x_321_phi %false
+        %420 = OpSLessThanEqual %bool %419 %int_8
+               OpSelectionMerge %421 None
+               OpBranchConditional %420 %422 %423
+        %422 = OpLabel
+               OpBranch %421
+        %423 = OpLabel
+               OpBranch %412
+        %421 = OpLabel
+        %424 = OpAccessChain %_ptr_Function_int %tree %419 %uint_0
+        %425 = OpLoad %int %424
+        %427 = OpSLessThanEqual %bool %int_17 %425
+               OpSelectionMerge %428 None
+               OpBranchConditional %427 %429 %430
+        %429 = OpLabel
+        %431 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+        %432 = OpLoad %int %431
+        %433 = OpIEqual %bool %432 %int_n1
+               OpSelectionMerge %434 None
+               OpBranchConditional %433 %435 %436
+        %435 = OpLabel
+        %437 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+               OpStore %437 %int_8
+        %438 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %438 %439
+               OpStore %x_321_phi %true
+               OpBranch %412
+        %436 = OpLabel
+        %440 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+        %441 = OpLoad %int %440
+               OpStore %x_319 %441
+        %442 = OpLoad %int %x_319
+               OpStore %x_294_phi %442
+               OpBranch %413
+        %434 = OpLabel
+               OpReturn
+        %430 = OpLabel
+        %443 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+        %444 = OpLoad %int %443
+        %445 = OpIEqual %bool %444 %int_n1
+               OpSelectionMerge %446 None
+               OpBranchConditional %445 %447 %448
+        %447 = OpLabel
+        %449 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+               OpStore %449 %int_8
+        %450 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %450 %439
+               OpStore %x_321_phi %true
+               OpBranch %412
+        %448 = OpLabel
+        %451 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+        %452 = OpLoad %int %451
+               OpStore %x_311 %452
+        %453 = OpLoad %int %x_311
+               OpStore %x_294_phi %453
+               OpBranch %413
+        %446 = OpLabel
+               OpReturn
+        %428 = OpLabel
+               OpReturn
+        %413 = OpLabel
+        %454 = OpLoad %int %x_294_phi
+               OpStore %x_294 %454
+        %455 = OpLoad %int %x_294
+               OpStore %x_293_phi %455
+               OpBranch %411
+        %412 = OpLabel
+        %456 = OpLoad %bool %x_321_phi
+               OpSelectionMerge %457 None
+               OpBranchConditional %456 %458 %457
+        %458 = OpLabel
+               OpBranch %409
+        %457 = OpLabel
+               OpBranch %409
+        %409 = OpLabel
+               OpSelectionMerge %461 None
+               OpSwitch %uint_0 %462
+        %462 = OpLabel
+               OpStore %x_326_phi %int_0
+               OpBranch %463
+        %463 = OpLabel
+               OpLoopMerge %464 %465 None
+               OpBranch %466
+        %466 = OpLabel
+        %471 = OpLoad %int %x_326_phi
+               OpStore %x_354_phi %false
+        %472 = OpSLessThanEqual %bool %471 %int_9
+               OpSelectionMerge %473 None
+               OpBranchConditional %472 %474 %475
+        %474 = OpLabel
+               OpBranch %473
+        %475 = OpLabel
+               OpBranch %464
+        %473 = OpLabel
+        %476 = OpAccessChain %_ptr_Function_int %tree %471 %uint_0
+        %477 = OpLoad %int %476
+        %479 = OpSLessThanEqual %bool %int_13 %477
+               OpSelectionMerge %480 None
+               OpBranchConditional %479 %481 %482
+        %481 = OpLabel
+        %483 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+        %484 = OpLoad %int %483
+        %485 = OpIEqual %bool %484 %int_n1
+               OpSelectionMerge %486 None
+               OpBranchConditional %485 %487 %488
+        %487 = OpLabel
+        %489 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+               OpStore %489 %int_9
+        %490 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %490 %491
+               OpStore %x_354_phi %true
+               OpBranch %464
+        %488 = OpLabel
+        %492 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+        %493 = OpLoad %int %492
+               OpStore %x_352 %493
+        %494 = OpLoad %int %x_352
+               OpStore %x_327_phi %494
+               OpBranch %465
+        %486 = OpLabel
+               OpReturn
+        %482 = OpLabel
+        %495 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+        %496 = OpLoad %int %495
+        %497 = OpIEqual %bool %496 %int_n1
+               OpSelectionMerge %498 None
+               OpBranchConditional %497 %499 %500
+        %499 = OpLabel
+        %501 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+               OpStore %501 %int_9
+        %502 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %502 %491
+               OpStore %x_354_phi %true
+               OpBranch %464
+        %500 = OpLabel
+        %503 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+        %504 = OpLoad %int %503
+               OpStore %x_344 %504
+        %505 = OpLoad %int %x_344
+               OpStore %x_327_phi %505
+               OpBranch %465
+        %498 = OpLabel
+               OpReturn
+        %480 = OpLabel
+               OpReturn
+        %465 = OpLabel
+        %506 = OpLoad %int %x_327_phi
+               OpStore %x_327 %506
+        %507 = OpLoad %int %x_327
+               OpStore %x_326_phi %507
+               OpBranch %463
+        %464 = OpLabel
+        %508 = OpLoad %bool %x_354_phi
+               OpSelectionMerge %509 None
+               OpBranchConditional %508 %510 %509
+        %510 = OpLabel
+               OpBranch %461
+        %509 = OpLabel
+               OpBranch %461
+        %461 = OpLabel
+               OpStore %x_357_phi %int_0
+               OpStore %x_360_phi %int_0
+               OpStore %x_362_phi %int_0
+               OpBranch %511
+        %511 = OpLabel
+               OpLoopMerge %512 %513 None
+               OpBranch %514
+        %514 = OpLabel
+        %521 = OpLoad %int %x_357_phi
+        %522 = OpLoad %int %x_360_phi
+               OpStore %x_360 %522
+        %523 = OpLoad %int %x_362_phi
+        %524 = OpISub %int %int_6 %int_15
+        %526 = OpSLessThan %bool %523 %int_20
+               OpSelectionMerge %527 None
+               OpBranchConditional %526 %528 %529
+        %528 = OpLabel
+               OpBranch %527
+        %529 = OpLabel
+               OpBranch %512
+        %527 = OpLabel
+               OpSelectionMerge %533 None
+               OpSwitch %uint_0 %534
+        %534 = OpLabel
+               OpStore %x_374_phi %int_0
+               OpBranch %535
+        %535 = OpLabel
+               OpLoopMerge %536 %537 None
+               OpBranch %538
+        %538 = OpLabel
+        %539 = OpLoad %int %x_374_phi
+               OpStore %x_392_phi %521
+               OpStore %x_393_phi %false
+        %540 = OpINotEqual %bool %539 %int_n1
+               OpSelectionMerge %541 None
+               OpBranchConditional %540 %542 %543
+        %542 = OpLabel
+               OpBranch %541
+        %543 = OpLabel
+               OpBranch %536
+        %541 = OpLabel
+        %544 = OpAccessChain %_ptr_Function_BST %tree %539
+        %545 = OpLoad %BST %544
+        %546 = OpCompositeExtract %int %545 0
+        %547 = OpCompositeExtract %int %545 1
+        %548 = OpCompositeExtract %int %545 2
+        %549 = OpIEqual %bool %546 %523
+               OpSelectionMerge %550 None
+               OpBranchConditional %549 %551 %550
+        %551 = OpLabel
+               OpStore %x_392_phi %523
+               OpStore %x_393_phi %true
+               OpBranch %536
+        %550 = OpLabel
+        %554 = OpULessThanEqual %bool %uint_3 %uint_3
+        %552 = OpSelect %uint %554 %uint_3 %uint_3
+        %556 = OpAccessChain %_ptr_Private_float %x_GLF_color %552
+        %557 = OpLoad %float %556
+               OpBranch %537
+        %537 = OpLabel
+        %560 = OpSLessThanEqual %bool %523 %546
+        %559 = OpLogicalNot %bool %560
+        %558 = OpSelect %int %559 %548 %547
+               OpStore %x_374_phi %558
+               OpBranch %535
+        %536 = OpLabel
+        %561 = OpLoad %int %x_392_phi
+               OpStore %x_392 %561
+        %562 = OpLoad %bool %x_393_phi
+        %563 = OpLoad %int %x_392
+               OpStore %x_358_phi %563
+               OpSelectionMerge %564 None
+               OpBranchConditional %562 %565 %564
+        %565 = OpLabel
+               OpBranch %533
+        %564 = OpLabel
+               OpStore %x_358_phi %int_n1
+               OpBranch %533
+        %533 = OpLabel
+        %571 = OpLoad %int %x_358_phi
+               OpStore %x_358 %571
+               OpSelectionMerge %572 None
+               OpSwitch %523 %573 2 %574 5 %574 6 %574 7 %574 8 %574 9 %574 12 %574 13 %574 15 %574 17 %574
+        %574 = OpLabel
+        %575 = OpLoad %int %x_360
+               OpStore %x_402_phi %575
+        %576 = OpLoad %int %x_358
+        %577 = OpCopyObject %int %523
+        %578 = OpIEqual %bool %576 %577
+               OpSelectionMerge %579 None
+               OpBranchConditional %578 %580 %579
+        %580 = OpLabel
+        %582 = OpLoad %int %x_360
+        %583 = OpCopyObject %int %int_1
+        %584 = OpIAdd %int %582 %583
+        %581 = OpCopyObject %int %584
+               OpStore %x_401 %581
+        %585 = OpLoad %int %x_401
+               OpStore %x_402_phi %585
+               OpBranch %579
+        %579 = OpLabel
+        %586 = OpLoad %int %x_402_phi
+               OpStore %x_402 %586
+        %587 = OpLoad %int %x_402
+               OpStore %x_361_phi %587
+               OpBranch %572
+        %573 = OpLabel
+        %588 = OpLoad %int %x_360
+               OpStore %x_407_phi %588
+        %589 = OpLoad %int %x_358
+        %590 = OpCopyObject %int %int_n1
+        %591 = OpIEqual %bool %589 %590
+               OpSelectionMerge %592 None
+               OpBranchConditional %591 %593 %592
+        %593 = OpLabel
+        %595 = OpLoad %int %x_360
+        %596 = OpCopyObject %int %int_1
+        %597 = OpIAdd %int %595 %596
+        %594 = OpCopyObject %int %597
+               OpStore %x_406 %594
+        %598 = OpLoad %int %x_406
+               OpStore %x_407_phi %598
+               OpBranch %592
+        %592 = OpLabel
+        %599 = OpLoad %int %x_407_phi
+               OpStore %x_407 %599
+        %600 = OpLoad %int %x_407
+               OpStore %x_361_phi %600
+               OpBranch %572
+        %572 = OpLabel
+        %601 = OpLoad %int %x_361_phi
+               OpBranch %513
+        %513 = OpLabel
+        %602 = OpIAdd %int %523 %int_1
+               OpStore %x_363 %602
+        %603 = OpLoad %int %x_358
+               OpStore %x_357_phi %603
+               OpStore %x_360_phi %601
+        %604 = OpLoad %int %x_363
+               OpStore %x_362_phi %604
+               OpBranch %511
+        %512 = OpLabel
+        %605 = OpLoad %int %x_360
+        %606 = OpCopyObject %int %int_20
+        %607 = OpIEqual %bool %605 %606
+               OpSelectionMerge %608 None
+               OpBranchConditional %607 %609 %610
+        %609 = OpLabel
+               OpStore %x_GLF_color %613
+               OpBranch %608
+        %610 = OpLabel
+               OpStore %x_GLF_color %614
+               OpBranch %608
+        %608 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %615
+%tint_symbol = OpFunctionParameter %main_out
+        %619 = OpLabel
+        %620 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %620
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+        %622 = OpLabel
+        %623 = OpFunctionCall %void %main_1
+        %625 = OpLoad %v4float %x_GLF_color
+        %626 = OpCompositeConstruct %main_out %625
+        %624 = OpFunctionCall %void %tint_symbol_2 %626
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..0c19b19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.wgsl
@@ -0,0 +1,655 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var tree : array<BST, 10>;
+  var x_360 : i32;
+  var x_62_phi : i32;
+  var x_90_phi : bool;
+  var x_357_phi : i32;
+  var x_360_phi : i32;
+  var x_362_phi : i32;
+  tree[0] = BST(9, -1, -1);
+  switch(0u) {
+    default: {
+      x_62_phi = 0;
+      loop {
+        var x_88 : i32;
+        var x_80 : i32;
+        var x_63 : i32;
+        var x_63_phi : i32;
+        let x_62 : i32 = x_62_phi;
+        x_90_phi = false;
+        if ((x_62 <= 1)) {
+        } else {
+          break;
+        }
+        let x_69 : i32 = tree[x_62].data;
+        if ((5 <= x_69)) {
+          let x_82 : ptr<function, i32> = &(tree[x_62].leftIndex);
+          let x_83 : i32 = *(x_82);
+          if ((x_83 == -1)) {
+            *(x_82) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_90_phi = true;
+            break;
+          } else {
+            x_88 = *(x_82);
+            x_63_phi = x_88;
+            continue;
+          }
+          return;
+        } else {
+          let x_74 : ptr<function, i32> = &(tree[x_62].rightIndex);
+          let x_75 : i32 = *(x_74);
+          if ((x_75 == -1)) {
+            *(x_74) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_90_phi = true;
+            break;
+          } else {
+            x_80 = *(x_74);
+            x_63_phi = x_80;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_63 = x_63_phi;
+          x_62_phi = x_63;
+        }
+      }
+      let x_90 : bool = x_90_phi;
+      if (x_90) {
+        break;
+      }
+    }
+  }
+  var x_95_phi : i32;
+  var x_123_phi : bool;
+  switch(0u) {
+    default: {
+      x_95_phi = 0;
+      loop {
+        var x_121 : i32;
+        var x_113 : i32;
+        var x_96 : i32;
+        var x_96_phi : i32;
+        let x_95 : i32 = x_95_phi;
+        x_123_phi = false;
+        if ((x_95 <= 2)) {
+        } else {
+          break;
+        }
+        let x_102 : i32 = tree[x_95].data;
+        if ((12 <= x_102)) {
+          let x_115 : ptr<function, i32> = &(tree[x_95].leftIndex);
+          let x_116 : i32 = *(x_115);
+          if ((x_116 == -1)) {
+            *(x_115) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_123_phi = true;
+            break;
+          } else {
+            x_121 = *(x_115);
+            x_96_phi = x_121;
+            continue;
+          }
+          return;
+        } else {
+          let x_107 : ptr<function, i32> = &(tree[x_95].rightIndex);
+          let x_108 : i32 = *(x_107);
+          if ((x_108 == -1)) {
+            *(x_107) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_123_phi = true;
+            break;
+          } else {
+            x_113 = *(x_107);
+            x_96_phi = x_113;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_96 = x_96_phi;
+          x_95_phi = x_96;
+        }
+      }
+      let x_123 : bool = x_123_phi;
+      if (x_123) {
+        break;
+      }
+    }
+  }
+  var x_128_phi : i32;
+  var x_156_phi : bool;
+  switch(0u) {
+    default: {
+      x_128_phi = 0;
+      loop {
+        var x_154 : i32;
+        var x_146 : i32;
+        var x_129 : i32;
+        var x_129_phi : i32;
+        let x_128 : i32 = x_128_phi;
+        x_156_phi = false;
+        if ((x_128 <= 3)) {
+        } else {
+          break;
+        }
+        let x_135 : i32 = tree[x_128].data;
+        if ((15 <= x_135)) {
+          let x_148 : ptr<function, i32> = &(tree[x_128].leftIndex);
+          let x_149 : i32 = *(x_148);
+          if ((x_149 == -1)) {
+            *(x_148) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_156_phi = true;
+            break;
+          } else {
+            x_154 = *(x_148);
+            x_129_phi = x_154;
+            continue;
+          }
+          return;
+        } else {
+          let x_140 : ptr<function, i32> = &(tree[x_128].rightIndex);
+          let x_141 : i32 = *(x_140);
+          if ((x_141 == -1)) {
+            *(x_140) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_156_phi = true;
+            break;
+          } else {
+            x_146 = *(x_140);
+            x_129_phi = x_146;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_129 = x_129_phi;
+          x_128_phi = x_129;
+        }
+      }
+      let x_156 : bool = x_156_phi;
+      if (x_156) {
+        break;
+      }
+    }
+  }
+  var x_161_phi : i32;
+  var x_189_phi : bool;
+  switch(0u) {
+    default: {
+      x_161_phi = 0;
+      loop {
+        var x_187 : i32;
+        var x_179 : i32;
+        var x_162 : i32;
+        var x_162_phi : i32;
+        let x_161 : i32 = x_161_phi;
+        x_189_phi = false;
+        if ((x_161 <= 4)) {
+        } else {
+          break;
+        }
+        let x_168 : i32 = tree[x_161].data;
+        if ((7 <= x_168)) {
+          let x_181 : ptr<function, i32> = &(tree[x_161].leftIndex);
+          let x_182 : i32 = *(x_181);
+          if ((x_182 == -1)) {
+            *(x_181) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_189_phi = true;
+            break;
+          } else {
+            x_187 = *(x_181);
+            x_162_phi = x_187;
+            continue;
+          }
+          return;
+        } else {
+          let x_173 : ptr<function, i32> = &(tree[x_161].rightIndex);
+          let x_174 : i32 = *(x_173);
+          if ((x_174 == -1)) {
+            *(x_173) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_189_phi = true;
+            break;
+          } else {
+            x_179 = *(x_173);
+            x_162_phi = x_179;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_162 = x_162_phi;
+          x_161_phi = x_162;
+        }
+      }
+      let x_189 : bool = x_189_phi;
+      if (x_189) {
+        break;
+      }
+    }
+  }
+  var x_194_phi : i32;
+  var x_222_phi : bool;
+  switch(0u) {
+    default: {
+      x_194_phi = 0;
+      loop {
+        var x_220 : i32;
+        var x_212 : i32;
+        var x_195 : i32;
+        var x_195_phi : i32;
+        let x_194 : i32 = x_194_phi;
+        x_222_phi = false;
+        if ((x_194 <= 5)) {
+        } else {
+          break;
+        }
+        let x_201 : i32 = tree[x_194].data;
+        if ((8 <= x_201)) {
+          let x_214 : ptr<function, i32> = &(tree[x_194].leftIndex);
+          let x_215 : i32 = *(x_214);
+          if ((x_215 == -1)) {
+            *(x_214) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_222_phi = true;
+            break;
+          } else {
+            x_220 = *(x_214);
+            x_195_phi = x_220;
+            continue;
+          }
+          return;
+        } else {
+          let x_206 : ptr<function, i32> = &(tree[x_194].rightIndex);
+          let x_207 : i32 = *(x_206);
+          if ((x_207 == -1)) {
+            *(x_206) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_222_phi = true;
+            break;
+          } else {
+            x_212 = *(x_206);
+            x_195_phi = x_212;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_195 = x_195_phi;
+          x_194_phi = x_195;
+        }
+      }
+      let x_222 : bool = x_222_phi;
+      if (x_222) {
+        break;
+      }
+    }
+  }
+  var x_227_phi : i32;
+  var x_255_phi : bool;
+  switch(0u) {
+    default: {
+      x_227_phi = 0;
+      loop {
+        var x_253 : i32;
+        var x_245 : i32;
+        var x_228 : i32;
+        var x_228_phi : i32;
+        let x_227 : i32 = x_227_phi;
+        x_255_phi = false;
+        if ((x_227 <= 6)) {
+        } else {
+          break;
+        }
+        let x_234 : i32 = tree[x_227].data;
+        if ((2 <= x_234)) {
+          let x_247 : ptr<function, i32> = &(tree[x_227].leftIndex);
+          let x_248 : i32 = *(x_247);
+          if ((x_248 == -1)) {
+            *(x_247) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_255_phi = true;
+            break;
+          } else {
+            x_253 = *(x_247);
+            x_228_phi = x_253;
+            continue;
+          }
+          return;
+        } else {
+          let x_239 : ptr<function, i32> = &(tree[x_227].rightIndex);
+          let x_240 : i32 = *(x_239);
+          if ((x_240 == -1)) {
+            *(x_239) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_255_phi = true;
+            break;
+          } else {
+            x_245 = *(x_239);
+            x_228_phi = x_245;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_228 = x_228_phi;
+          x_227_phi = x_228;
+        }
+      }
+      let x_255 : bool = x_255_phi;
+      if (x_255) {
+        break;
+      }
+    }
+  }
+  var x_260_phi : i32;
+  var x_288_phi : bool;
+  switch(0u) {
+    default: {
+      x_260_phi = 0;
+      loop {
+        var x_286 : i32;
+        var x_278 : i32;
+        var x_261 : i32;
+        var x_261_phi : i32;
+        let x_260 : i32 = x_260_phi;
+        x_288_phi = false;
+        if ((x_260 <= 7)) {
+        } else {
+          break;
+        }
+        let x_267 : i32 = tree[x_260].data;
+        if ((6 <= x_267)) {
+          let x_280 : ptr<function, i32> = &(tree[x_260].leftIndex);
+          let x_281 : i32 = *(x_280);
+          if ((x_281 == -1)) {
+            *(x_280) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_288_phi = true;
+            break;
+          } else {
+            x_286 = *(x_280);
+            x_261_phi = x_286;
+            continue;
+          }
+          return;
+        } else {
+          let x_272 : ptr<function, i32> = &(tree[x_260].rightIndex);
+          let x_273 : i32 = *(x_272);
+          if ((x_273 == -1)) {
+            *(x_272) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_288_phi = true;
+            break;
+          } else {
+            x_278 = *(x_272);
+            x_261_phi = x_278;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_261 = x_261_phi;
+          x_260_phi = x_261;
+        }
+      }
+      let x_288 : bool = x_288_phi;
+      if (x_288) {
+        break;
+      }
+    }
+  }
+  var x_293_phi : i32;
+  var x_321_phi : bool;
+  switch(0u) {
+    default: {
+      x_293_phi = 0;
+      loop {
+        var x_319 : i32;
+        var x_311 : i32;
+        var x_294 : i32;
+        var x_294_phi : i32;
+        let x_293 : i32 = x_293_phi;
+        x_321_phi = false;
+        if ((x_293 <= 8)) {
+        } else {
+          break;
+        }
+        let x_300 : i32 = tree[x_293].data;
+        if ((17 <= x_300)) {
+          let x_313 : ptr<function, i32> = &(tree[x_293].leftIndex);
+          let x_314 : i32 = *(x_313);
+          if ((x_314 == -1)) {
+            *(x_313) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_321_phi = true;
+            break;
+          } else {
+            x_319 = *(x_313);
+            x_294_phi = x_319;
+            continue;
+          }
+          return;
+        } else {
+          let x_305 : ptr<function, i32> = &(tree[x_293].rightIndex);
+          let x_306 : i32 = *(x_305);
+          if ((x_306 == -1)) {
+            *(x_305) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_321_phi = true;
+            break;
+          } else {
+            x_311 = *(x_305);
+            x_294_phi = x_311;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_294 = x_294_phi;
+          x_293_phi = x_294;
+        }
+      }
+      let x_321 : bool = x_321_phi;
+      if (x_321) {
+        break;
+      }
+    }
+  }
+  var x_326_phi : i32;
+  var x_354_phi : bool;
+  switch(0u) {
+    default: {
+      x_326_phi = 0;
+      loop {
+        var x_352 : i32;
+        var x_344 : i32;
+        var x_327 : i32;
+        var x_327_phi : i32;
+        let x_326 : i32 = x_326_phi;
+        x_354_phi = false;
+        if ((x_326 <= 9)) {
+        } else {
+          break;
+        }
+        let x_333 : i32 = tree[x_326].data;
+        if ((13 <= x_333)) {
+          let x_346 : ptr<function, i32> = &(tree[x_326].leftIndex);
+          let x_347 : i32 = *(x_346);
+          if ((x_347 == -1)) {
+            *(x_346) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_354_phi = true;
+            break;
+          } else {
+            x_352 = *(x_346);
+            x_327_phi = x_352;
+            continue;
+          }
+          return;
+        } else {
+          let x_338 : ptr<function, i32> = &(tree[x_326].rightIndex);
+          let x_339 : i32 = *(x_338);
+          if ((x_339 == -1)) {
+            *(x_338) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_354_phi = true;
+            break;
+          } else {
+            x_344 = *(x_338);
+            x_327_phi = x_344;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_327 = x_327_phi;
+          x_326_phi = x_327;
+        }
+      }
+      let x_354 : bool = x_354_phi;
+      if (x_354) {
+        break;
+      }
+    }
+  }
+  x_357_phi = 0;
+  x_360_phi = 0;
+  x_362_phi = 0;
+  loop {
+    var x_392 : i32;
+    var x_402 : i32;
+    var x_407 : i32;
+    var x_363 : i32;
+    var x_358_phi : i32;
+    var x_361_phi : i32;
+    let x_357 : i32 = x_357_phi;
+    x_360 = x_360_phi;
+    let x_362 : i32 = x_362_phi;
+    let x_365 : i32 = (6 - 15);
+    if ((x_362 < 20)) {
+    } else {
+      break;
+    }
+    var x_374_phi : i32;
+    var x_392_phi : i32;
+    var x_393_phi : bool;
+    switch(0u) {
+      default: {
+        x_374_phi = 0;
+        loop {
+          let x_374 : i32 = x_374_phi;
+          x_392_phi = x_357;
+          x_393_phi = false;
+          if ((x_374 != -1)) {
+          } else {
+            break;
+          }
+          let x_381 : BST = tree[x_374];
+          let x_382 : i32 = x_381.data;
+          let x_383 : i32 = x_381.leftIndex;
+          let x_385 : i32 = x_381.rightIndex;
+          if ((x_382 == x_362)) {
+            x_392_phi = x_362;
+            x_393_phi = true;
+            break;
+          }
+          let x_389 : f32 = x_GLF_color[select(3u, 3u, (3u <= 3u))];
+
+          continuing {
+            x_374_phi = select(x_383, x_385, !((x_362 <= x_382)));
+          }
+        }
+        x_392 = x_392_phi;
+        let x_393 : bool = x_393_phi;
+        x_358_phi = x_392;
+        if (x_393) {
+          break;
+        }
+        x_358_phi = -1;
+      }
+    }
+    var x_358 : i32;
+    var x_401 : i32;
+    var x_406 : i32;
+    var x_402_phi : i32;
+    var x_407_phi : i32;
+    x_358 = x_358_phi;
+    switch(x_362) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        x_402_phi = x_360;
+        if ((x_358 == bitcast<i32>(x_362))) {
+          x_401 = bitcast<i32>((x_360 + bitcast<i32>(1)));
+          x_402_phi = x_401;
+        }
+        x_402 = x_402_phi;
+        x_361_phi = x_402;
+      }
+      default: {
+        x_407_phi = x_360;
+        if ((x_358 == bitcast<i32>(-1))) {
+          x_406 = bitcast<i32>((x_360 + bitcast<i32>(1)));
+          x_407_phi = x_406;
+        }
+        x_407 = x_407_phi;
+        x_361_phi = x_407;
+      }
+    }
+    let x_361 : i32 = x_361_phi;
+
+    continuing {
+      x_363 = (x_362 + 1);
+      x_357_phi = x_358;
+      x_360_phi = x_361;
+      x_362_phi = x_363;
+    }
+  }
+  if ((x_360 == bitcast<i32>(20))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm
new file mode 100644
index 0000000..c48df75
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm
@@ -0,0 +1,183 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+       %true = OpConstantTrue %bool
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %30 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %31 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %32 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %34 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %37 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %39 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %41 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %43 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %44 = OpConstantComposite %_arr_v4float_uint_8 %30 %31 %32 %34 %37 %39 %41 %43
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %50 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %51 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %52 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %53 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %54 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %55 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %56 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %58 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %59 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %60 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %61 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %62 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %63 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %64 = OpConstantComposite %_arr_v4float_uint_16 %49 %50 %51 %52 %53 %54 %55 %56 %49 %57 %58 %59 %60 %61 %62 %63
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %75 = OpConstantNull %int
+       %main = OpFunction %void None %8
+         %76 = OpLabel
+         %77 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+         %78 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+         %79 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+         %80 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %81 = OpLoad %v4float %gl_FragCoord
+         %82 = OpVectorShuffle %v2float %81 %81 0 1
+         %83 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %84 = OpLoad %v2float %83
+         %85 = OpFDiv %v2float %82 %84
+         %86 = OpVectorTimesScalar %v2float %85 %float_32
+         %87 = OpExtInst %v2float %1 Floor %86
+               OpBranch %88
+         %88 = OpLabel
+         %89 = OpPhi %v4float %22 %76 %90 %91
+         %92 = OpPhi %int %75 %76 %93 %91
+         %94 = OpSLessThan %bool %92 %int_8
+               OpLoopMerge %95 %91 Unroll
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+               OpStore %77 %44
+         %97 = OpAccessChain %_ptr_Function_v4float %77 %92
+         %98 = OpLoad %v4float %97
+               OpSelectionMerge %99 None
+               OpSwitch %uint_0 %100
+        %100 = OpLabel
+        %101 = OpCompositeExtract %float %87 0
+        %102 = OpCompositeExtract %float %98 0
+        %103 = OpFOrdLessThan %bool %101 %102
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+               OpBranch %99
+        %104 = OpLabel
+        %106 = OpCompositeExtract %float %87 1
+        %107 = OpCompositeExtract %float %98 1
+        %108 = OpFOrdLessThan %bool %106 %107
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+               OpBranch %99
+        %109 = OpLabel
+        %111 = OpCompositeExtract %float %98 2
+        %112 = OpFAdd %float %102 %111
+        %113 = OpFOrdGreaterThan %bool %101 %112
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+               OpBranch %99
+        %114 = OpLabel
+        %116 = OpCompositeExtract %float %98 3
+        %117 = OpFAdd %float %107 %116
+        %118 = OpFOrdGreaterThan %bool %106 %117
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpBranch %99
+        %119 = OpLabel
+               OpBranch %99
+         %99 = OpLabel
+        %121 = OpPhi %bool %false %105 %false %110 %false %115 %false %120 %true %119
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+               OpStore %78 %44
+        %124 = OpAccessChain %_ptr_Function_float %78 %92 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpConvertFToS %int %125
+               OpStore %79 %44
+        %127 = OpAccessChain %_ptr_Function_float %79 %92 %uint_1
+        %128 = OpLoad %float %127
+        %129 = OpConvertFToS %int %128
+        %130 = OpIMul %int %126 %129
+        %131 = OpIMul %int %92 %int_9
+        %132 = OpIAdd %int %130 %131
+        %133 = OpIAdd %int %132 %int_11
+        %134 = OpSMod %int %133 %int_16
+               OpStore %80 %64
+        %135 = OpAccessChain %_ptr_Function_v4float %80 %134
+        %136 = OpLoad %v4float %135
+               OpBranch %122
+        %122 = OpLabel
+         %90 = OpPhi %v4float %89 %99 %136 %123
+               OpBranch %91
+         %91 = OpLabel
+         %93 = OpIAdd %int %92 %int_1
+               OpBranch %88
+         %95 = OpLabel
+               OpStore %_GLF_color %89
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..0326a9c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.hlsl
@@ -0,0 +1,103 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 x_77[8] = (float4[8])0;
+  float4 x_78[8] = (float4[8])0;
+  float4 x_79[8] = (float4[8])0;
+  float4 x_80[16] = (float4[16])0;
+  float4 x_89 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_89_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_92_phi = 0;
+  const float4 x_81 = gl_FragCoord;
+  const float2 x_84 = asfloat(x_6[0].xy);
+  const float2 x_87 = floor(((float2(x_81.x, x_81.y) / x_84) * 32.0f));
+  x_89_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_92_phi = 0;
+  while (true) {
+    float4 x_136 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_93 = 0;
+    bool x_121_phi = false;
+    float4 x_90_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_89 = x_89_phi;
+    const int x_92 = x_92_phi;
+    if ((x_92 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_98 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+    x_77 = tint_symbol_5;
+    x_98 = x_77[x_92];
+    switch(0u) {
+      default: {
+        const float x_101 = x_87.x;
+        const float x_102 = x_98.x;
+        if ((x_101 < x_102)) {
+          x_121_phi = false;
+          break;
+        }
+        const float x_106 = x_87.y;
+        const float x_107 = x_98.y;
+        if ((x_106 < x_107)) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_101 > (x_102 + x_98.z))) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_106 > (x_107 + x_98.w))) {
+          x_121_phi = false;
+          break;
+        }
+        x_121_phi = true;
+        break;
+      }
+    }
+    const bool x_121 = x_121_phi;
+    x_90_phi = x_89;
+    if (x_121) {
+      const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_78 = tint_symbol_6;
+      const float x_125 = x_78[x_92].x;
+      const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_79 = tint_symbol_7;
+      const float x_128 = x_79[x_92].y;
+      const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+      x_80 = tint_symbol_8;
+      x_136 = x_80[((((int(x_125) * int(x_128)) + (x_92 * 9)) + 11) % 16)];
+      x_90_phi = x_136;
+    }
+    const float4 x_90 = x_90_phi;
+    {
+      x_93 = (x_92 + 1);
+      x_89_phi = x_90;
+      x_92_phi = x_93;
+    }
+  }
+  x_GLF_color = x_89;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.msl
new file mode 100644
index 0000000..ecbf92f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[8];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  tint_array_wrapper x_77 = {};
+  tint_array_wrapper x_78 = {};
+  tint_array_wrapper x_79 = {};
+  tint_array_wrapper_1 x_80 = {};
+  float4 x_89 = 0.0f;
+  float4 x_89_phi = 0.0f;
+  int x_92_phi = 0;
+  float4 const x_81 = *(tint_symbol_9);
+  float2 const x_84 = x_6.resolution;
+  float2 const x_87 = floor(((float2(x_81.x, x_81.y) / x_84) * 32.0f));
+  x_89_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_92_phi = 0;
+  while (true) {
+    float4 x_136 = 0.0f;
+    int x_93 = 0;
+    bool x_121_phi = false;
+    float4 x_90_phi = 0.0f;
+    x_89 = x_89_phi;
+    int const x_92 = x_92_phi;
+    if ((x_92 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_98 = 0.0f;
+    tint_array_wrapper const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+    x_77 = tint_symbol_4;
+    x_98 = x_77.arr[x_92];
+    switch(0u) {
+      default: {
+        float const x_101 = x_87.x;
+        float const x_102 = x_98.x;
+        if ((x_101 < x_102)) {
+          x_121_phi = false;
+          break;
+        }
+        float const x_106 = x_87.y;
+        float const x_107 = x_98.y;
+        if ((x_106 < x_107)) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_101 > (x_102 + x_98.z))) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_106 > (x_107 + x_98.w))) {
+          x_121_phi = false;
+          break;
+        }
+        x_121_phi = true;
+        break;
+      }
+    }
+    bool const x_121 = x_121_phi;
+    x_90_phi = x_89;
+    if (x_121) {
+      tint_array_wrapper const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_78 = tint_symbol_5;
+      float const x_125 = x_78.arr[x_92].x;
+      tint_array_wrapper const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_79 = tint_symbol_6;
+      float const x_128 = x_79.arr[x_92].y;
+      tint_array_wrapper_1 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      x_80 = tint_symbol_7;
+      x_136 = x_80.arr[((((int(x_125) * int(x_128)) + (x_92 * 9)) + 11) % 16)];
+      x_90_phi = x_136;
+    }
+    float4 const x_90 = x_90_phi;
+    {
+      x_93 = (x_92 + 1);
+      x_89_phi = x_90;
+      x_92_phi = x_93;
+    }
+  }
+  *(tint_symbol_10) = x_89;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..770f48a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.spvasm
@@ -0,0 +1,280 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 182
+; Schema: 0
+               OpCapability Shader
+         %45 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_77 "x_77"
+               OpName %x_78 "x_78"
+               OpName %x_79 "x_79"
+               OpName %x_80 "x_80"
+               OpName %x_89 "x_89"
+               OpName %x_89_phi "x_89_phi"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_136 "x_136"
+               OpName %x_93 "x_93"
+               OpName %x_121_phi "x_121_phi"
+               OpName %x_90_phi "x_90_phi"
+               OpName %x_98 "x_98"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %24 = OpConstantNull %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %31 = OpConstantNull %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %38 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %54 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %65 = OpConstantNull %bool
+      %int_8 = OpConstant %int 8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %77 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %78 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %79 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %81 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %84 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %86 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %88 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %90 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %91 = OpConstantComposite %_arr_v4float_uint_8 %77 %78 %79 %81 %84 %86 %88 %90
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+    %float_0 = OpConstant %float 0
+        %135 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %136 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %137 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %138 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %139 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %140 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %141 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %142 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %143 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %144 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %145 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %146 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %147 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %148 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %149 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %150 = OpConstantComposite %_arr_v4float_uint_16 %135 %136 %137 %138 %139 %140 %141 %142 %135 %143 %144 %145 %146 %147 %148 %149
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %169 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_77 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %24
+       %x_78 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %24
+       %x_79 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %24
+       %x_80 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %31
+       %x_89 = OpVariable %_ptr_Function_v4float Function %5
+   %x_89_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_92_phi = OpVariable %_ptr_Function_int Function %38
+      %x_136 = OpVariable %_ptr_Function_v4float Function %5
+       %x_93 = OpVariable %_ptr_Function_int Function %38
+  %x_121_phi = OpVariable %_ptr_Function_bool Function %65
+   %x_90_phi = OpVariable %_ptr_Function_v4float Function %5
+       %x_98 = OpVariable %_ptr_Function_v4float Function %5
+         %39 = OpLoad %v4float %gl_FragCoord
+         %42 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %43 = OpLoad %v2float %42
+         %46 = OpCompositeExtract %float %39 0
+         %47 = OpCompositeExtract %float %39 1
+         %48 = OpCompositeConstruct %v2float %46 %47
+         %49 = OpFDiv %v2float %48 %43
+         %51 = OpVectorTimesScalar %v2float %49 %float_32
+         %44 = OpExtInst %v2float %45 Floor %51
+               OpStore %x_89_phi %54
+               OpStore %x_92_phi %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %67 = OpLoad %v4float %x_89_phi
+               OpStore %x_89 %67
+         %68 = OpLoad %int %x_92_phi
+         %70 = OpSLessThan %bool %68 %int_8
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %57
+         %71 = OpLabel
+               OpStore %x_77 %91
+         %92 = OpAccessChain %_ptr_Function_v4float %x_77 %68
+         %93 = OpLoad %v4float %92
+               OpStore %x_98 %93
+               OpSelectionMerge %94 None
+               OpSwitch %uint_0 %95
+         %95 = OpLabel
+         %96 = OpCompositeExtract %float %44 0
+         %98 = OpAccessChain %_ptr_Function_float %x_98 %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpFOrdLessThan %bool %96 %99
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_121_phi %false
+               OpBranch %94
+        %101 = OpLabel
+        %104 = OpCompositeExtract %float %44 1
+        %106 = OpAccessChain %_ptr_Function_float %x_98 %uint_1
+        %107 = OpLoad %float %106
+        %108 = OpFOrdLessThan %bool %104 %107
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+               OpStore %x_121_phi %false
+               OpBranch %94
+        %109 = OpLabel
+        %112 = OpAccessChain %_ptr_Function_float %x_98 %uint_2
+        %113 = OpLoad %float %112
+        %114 = OpFAdd %float %99 %113
+        %115 = OpFOrdGreaterThan %bool %96 %114
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+               OpStore %x_121_phi %false
+               OpBranch %94
+        %116 = OpLabel
+        %119 = OpAccessChain %_ptr_Function_float %x_98 %uint_3
+        %120 = OpLoad %float %119
+        %121 = OpFAdd %float %107 %120
+        %122 = OpFOrdGreaterThan %bool %104 %121
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %123
+        %124 = OpLabel
+               OpStore %x_121_phi %false
+               OpBranch %94
+        %123 = OpLabel
+               OpStore %x_121_phi %true
+               OpBranch %94
+         %94 = OpLabel
+        %126 = OpLoad %bool %x_121_phi
+        %127 = OpLoad %v4float %x_89
+               OpStore %x_90_phi %127
+               OpSelectionMerge %128 None
+               OpBranchConditional %126 %129 %128
+        %129 = OpLabel
+               OpStore %x_78 %91
+        %130 = OpAccessChain %_ptr_Function_float %x_78 %68 %uint_0
+        %131 = OpLoad %float %130
+               OpStore %x_79 %91
+        %132 = OpAccessChain %_ptr_Function_float %x_79 %68 %uint_1
+        %133 = OpLoad %float %132
+               OpStore %x_80 %150
+        %151 = OpConvertFToS %int %131
+        %152 = OpConvertFToS %int %133
+        %153 = OpIMul %int %151 %152
+        %155 = OpIMul %int %68 %int_9
+        %156 = OpIAdd %int %153 %155
+        %158 = OpIAdd %int %156 %int_11
+        %160 = OpSMod %int %158 %int_16
+        %161 = OpAccessChain %_ptr_Function_v4float %x_80 %160
+        %162 = OpLoad %v4float %161
+               OpStore %x_136 %162
+        %163 = OpLoad %v4float %x_136
+               OpStore %x_90_phi %163
+               OpBranch %128
+        %128 = OpLabel
+        %164 = OpLoad %v4float %x_90_phi
+               OpBranch %58
+         %58 = OpLabel
+        %166 = OpIAdd %int %68 %int_1
+               OpStore %x_93 %166
+               OpStore %x_89_phi %164
+        %167 = OpLoad %int %x_93
+               OpStore %x_92_phi %167
+               OpBranch %56
+         %57 = OpLabel
+        %168 = OpLoad %v4float %x_89
+               OpStore %x_GLF_color %168
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %169
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %173 = OpLabel
+        %174 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %174
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %176 = OpLabel
+        %177 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %177
+        %178 = OpFunctionCall %void %main_1
+        %180 = OpLoad %v4float %x_GLF_color
+        %181 = OpCompositeConstruct %main_out %180
+        %179 = OpFunctionCall %void %tint_symbol_3 %181
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..1742de0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.spvasm.expected.wgsl
@@ -0,0 +1,97 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_77 : array<vec4<f32>, 8>;
+  var x_78 : array<vec4<f32>, 8>;
+  var x_79 : array<vec4<f32>, 8>;
+  var x_80 : array<vec4<f32>, 16>;
+  var x_89 : vec4<f32>;
+  var x_89_phi : vec4<f32>;
+  var x_92_phi : i32;
+  let x_81 : vec4<f32> = gl_FragCoord;
+  let x_84 : vec2<f32> = x_6.resolution;
+  let x_87 : vec2<f32> = floor(((vec2<f32>(x_81.x, x_81.y) / x_84) * 32.0));
+  x_89_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  x_92_phi = 0;
+  loop {
+    var x_136 : vec4<f32>;
+    var x_93 : i32;
+    var x_121_phi : bool;
+    var x_90_phi : vec4<f32>;
+    x_89 = x_89_phi;
+    let x_92 : i32 = x_92_phi;
+    if ((x_92 < 8)) {
+    } else {
+      break;
+    }
+    var x_98 : vec4<f32>;
+    x_77 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    x_98 = x_77[x_92];
+    switch(0u) {
+      default: {
+        let x_101 : f32 = x_87.x;
+        let x_102 : f32 = x_98.x;
+        if ((x_101 < x_102)) {
+          x_121_phi = false;
+          break;
+        }
+        let x_106 : f32 = x_87.y;
+        let x_107 : f32 = x_98.y;
+        if ((x_106 < x_107)) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_101 > (x_102 + x_98.z))) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_106 > (x_107 + x_98.w))) {
+          x_121_phi = false;
+          break;
+        }
+        x_121_phi = true;
+      }
+    }
+    let x_121 : bool = x_121_phi;
+    x_90_phi = x_89;
+    if (x_121) {
+      x_78 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_125 : f32 = x_78[x_92].x;
+      x_79 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_128 : f32 = x_79[x_92].y;
+      x_80 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      x_136 = x_80[((((i32(x_125) * i32(x_128)) + (x_92 * 9)) + 11) % 16)];
+      x_90_phi = x_136;
+    }
+    let x_90 : vec4<f32> = x_90_phi;
+
+    continuing {
+      x_93 = (x_92 + 1);
+      x_89_phi = x_90;
+      x_92_phi = x_93;
+    }
+  }
+  x_GLF_color = x_89;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
new file mode 100644
index 0000000..1742de0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
@@ -0,0 +1,97 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_77 : array<vec4<f32>, 8>;
+  var x_78 : array<vec4<f32>, 8>;
+  var x_79 : array<vec4<f32>, 8>;
+  var x_80 : array<vec4<f32>, 16>;
+  var x_89 : vec4<f32>;
+  var x_89_phi : vec4<f32>;
+  var x_92_phi : i32;
+  let x_81 : vec4<f32> = gl_FragCoord;
+  let x_84 : vec2<f32> = x_6.resolution;
+  let x_87 : vec2<f32> = floor(((vec2<f32>(x_81.x, x_81.y) / x_84) * 32.0));
+  x_89_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  x_92_phi = 0;
+  loop {
+    var x_136 : vec4<f32>;
+    var x_93 : i32;
+    var x_121_phi : bool;
+    var x_90_phi : vec4<f32>;
+    x_89 = x_89_phi;
+    let x_92 : i32 = x_92_phi;
+    if ((x_92 < 8)) {
+    } else {
+      break;
+    }
+    var x_98 : vec4<f32>;
+    x_77 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    x_98 = x_77[x_92];
+    switch(0u) {
+      default: {
+        let x_101 : f32 = x_87.x;
+        let x_102 : f32 = x_98.x;
+        if ((x_101 < x_102)) {
+          x_121_phi = false;
+          break;
+        }
+        let x_106 : f32 = x_87.y;
+        let x_107 : f32 = x_98.y;
+        if ((x_106 < x_107)) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_101 > (x_102 + x_98.z))) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_106 > (x_107 + x_98.w))) {
+          x_121_phi = false;
+          break;
+        }
+        x_121_phi = true;
+      }
+    }
+    let x_121 : bool = x_121_phi;
+    x_90_phi = x_89;
+    if (x_121) {
+      x_78 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_125 : f32 = x_78[x_92].x;
+      x_79 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_128 : f32 = x_79[x_92].y;
+      x_80 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      x_136 = x_80[((((i32(x_125) * i32(x_128)) + (x_92 * 9)) + 11) % 16)];
+      x_90_phi = x_136;
+    }
+    let x_90 : vec4<f32> = x_90_phi;
+
+    continuing {
+      x_93 = (x_92 + 1);
+      x_89_phi = x_90;
+      x_92_phi = x_93;
+    }
+  }
+  x_GLF_color = x_89;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..0326a9c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.hlsl
@@ -0,0 +1,103 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 x_77[8] = (float4[8])0;
+  float4 x_78[8] = (float4[8])0;
+  float4 x_79[8] = (float4[8])0;
+  float4 x_80[16] = (float4[16])0;
+  float4 x_89 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_89_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_92_phi = 0;
+  const float4 x_81 = gl_FragCoord;
+  const float2 x_84 = asfloat(x_6[0].xy);
+  const float2 x_87 = floor(((float2(x_81.x, x_81.y) / x_84) * 32.0f));
+  x_89_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_92_phi = 0;
+  while (true) {
+    float4 x_136 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_93 = 0;
+    bool x_121_phi = false;
+    float4 x_90_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_89 = x_89_phi;
+    const int x_92 = x_92_phi;
+    if ((x_92 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_98 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+    x_77 = tint_symbol_5;
+    x_98 = x_77[x_92];
+    switch(0u) {
+      default: {
+        const float x_101 = x_87.x;
+        const float x_102 = x_98.x;
+        if ((x_101 < x_102)) {
+          x_121_phi = false;
+          break;
+        }
+        const float x_106 = x_87.y;
+        const float x_107 = x_98.y;
+        if ((x_106 < x_107)) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_101 > (x_102 + x_98.z))) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_106 > (x_107 + x_98.w))) {
+          x_121_phi = false;
+          break;
+        }
+        x_121_phi = true;
+        break;
+      }
+    }
+    const bool x_121 = x_121_phi;
+    x_90_phi = x_89;
+    if (x_121) {
+      const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_78 = tint_symbol_6;
+      const float x_125 = x_78[x_92].x;
+      const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_79 = tint_symbol_7;
+      const float x_128 = x_79[x_92].y;
+      const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+      x_80 = tint_symbol_8;
+      x_136 = x_80[((((int(x_125) * int(x_128)) + (x_92 * 9)) + 11) % 16)];
+      x_90_phi = x_136;
+    }
+    const float4 x_90 = x_90_phi;
+    {
+      x_93 = (x_92 + 1);
+      x_89_phi = x_90;
+      x_92_phi = x_93;
+    }
+  }
+  x_GLF_color = x_89;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.msl
new file mode 100644
index 0000000..ecbf92f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[8];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  tint_array_wrapper x_77 = {};
+  tint_array_wrapper x_78 = {};
+  tint_array_wrapper x_79 = {};
+  tint_array_wrapper_1 x_80 = {};
+  float4 x_89 = 0.0f;
+  float4 x_89_phi = 0.0f;
+  int x_92_phi = 0;
+  float4 const x_81 = *(tint_symbol_9);
+  float2 const x_84 = x_6.resolution;
+  float2 const x_87 = floor(((float2(x_81.x, x_81.y) / x_84) * 32.0f));
+  x_89_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_92_phi = 0;
+  while (true) {
+    float4 x_136 = 0.0f;
+    int x_93 = 0;
+    bool x_121_phi = false;
+    float4 x_90_phi = 0.0f;
+    x_89 = x_89_phi;
+    int const x_92 = x_92_phi;
+    if ((x_92 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_98 = 0.0f;
+    tint_array_wrapper const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+    x_77 = tint_symbol_4;
+    x_98 = x_77.arr[x_92];
+    switch(0u) {
+      default: {
+        float const x_101 = x_87.x;
+        float const x_102 = x_98.x;
+        if ((x_101 < x_102)) {
+          x_121_phi = false;
+          break;
+        }
+        float const x_106 = x_87.y;
+        float const x_107 = x_98.y;
+        if ((x_106 < x_107)) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_101 > (x_102 + x_98.z))) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_106 > (x_107 + x_98.w))) {
+          x_121_phi = false;
+          break;
+        }
+        x_121_phi = true;
+        break;
+      }
+    }
+    bool const x_121 = x_121_phi;
+    x_90_phi = x_89;
+    if (x_121) {
+      tint_array_wrapper const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_78 = tint_symbol_5;
+      float const x_125 = x_78.arr[x_92].x;
+      tint_array_wrapper const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_79 = tint_symbol_6;
+      float const x_128 = x_79.arr[x_92].y;
+      tint_array_wrapper_1 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      x_80 = tint_symbol_7;
+      x_136 = x_80.arr[((((int(x_125) * int(x_128)) + (x_92 * 9)) + 11) % 16)];
+      x_90_phi = x_136;
+    }
+    float4 const x_90 = x_90_phi;
+    {
+      x_93 = (x_92 + 1);
+      x_89_phi = x_90;
+      x_92_phi = x_93;
+    }
+  }
+  *(tint_symbol_10) = x_89;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..770f48a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.spvasm
@@ -0,0 +1,280 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 182
+; Schema: 0
+               OpCapability Shader
+         %45 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_77 "x_77"
+               OpName %x_78 "x_78"
+               OpName %x_79 "x_79"
+               OpName %x_80 "x_80"
+               OpName %x_89 "x_89"
+               OpName %x_89_phi "x_89_phi"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_136 "x_136"
+               OpName %x_93 "x_93"
+               OpName %x_121_phi "x_121_phi"
+               OpName %x_90_phi "x_90_phi"
+               OpName %x_98 "x_98"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %24 = OpConstantNull %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %31 = OpConstantNull %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %38 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %54 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %65 = OpConstantNull %bool
+      %int_8 = OpConstant %int 8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %77 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %78 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %79 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %81 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %84 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %86 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %88 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %90 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %91 = OpConstantComposite %_arr_v4float_uint_8 %77 %78 %79 %81 %84 %86 %88 %90
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+    %float_0 = OpConstant %float 0
+        %135 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %136 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %137 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %138 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %139 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %140 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %141 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %142 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %143 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %144 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %145 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %146 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %147 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %148 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %149 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %150 = OpConstantComposite %_arr_v4float_uint_16 %135 %136 %137 %138 %139 %140 %141 %142 %135 %143 %144 %145 %146 %147 %148 %149
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %169 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_77 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %24
+       %x_78 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %24
+       %x_79 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %24
+       %x_80 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %31
+       %x_89 = OpVariable %_ptr_Function_v4float Function %5
+   %x_89_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_92_phi = OpVariable %_ptr_Function_int Function %38
+      %x_136 = OpVariable %_ptr_Function_v4float Function %5
+       %x_93 = OpVariable %_ptr_Function_int Function %38
+  %x_121_phi = OpVariable %_ptr_Function_bool Function %65
+   %x_90_phi = OpVariable %_ptr_Function_v4float Function %5
+       %x_98 = OpVariable %_ptr_Function_v4float Function %5
+         %39 = OpLoad %v4float %gl_FragCoord
+         %42 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %43 = OpLoad %v2float %42
+         %46 = OpCompositeExtract %float %39 0
+         %47 = OpCompositeExtract %float %39 1
+         %48 = OpCompositeConstruct %v2float %46 %47
+         %49 = OpFDiv %v2float %48 %43
+         %51 = OpVectorTimesScalar %v2float %49 %float_32
+         %44 = OpExtInst %v2float %45 Floor %51
+               OpStore %x_89_phi %54
+               OpStore %x_92_phi %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %67 = OpLoad %v4float %x_89_phi
+               OpStore %x_89 %67
+         %68 = OpLoad %int %x_92_phi
+         %70 = OpSLessThan %bool %68 %int_8
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %57
+         %71 = OpLabel
+               OpStore %x_77 %91
+         %92 = OpAccessChain %_ptr_Function_v4float %x_77 %68
+         %93 = OpLoad %v4float %92
+               OpStore %x_98 %93
+               OpSelectionMerge %94 None
+               OpSwitch %uint_0 %95
+         %95 = OpLabel
+         %96 = OpCompositeExtract %float %44 0
+         %98 = OpAccessChain %_ptr_Function_float %x_98 %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpFOrdLessThan %bool %96 %99
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_121_phi %false
+               OpBranch %94
+        %101 = OpLabel
+        %104 = OpCompositeExtract %float %44 1
+        %106 = OpAccessChain %_ptr_Function_float %x_98 %uint_1
+        %107 = OpLoad %float %106
+        %108 = OpFOrdLessThan %bool %104 %107
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+               OpStore %x_121_phi %false
+               OpBranch %94
+        %109 = OpLabel
+        %112 = OpAccessChain %_ptr_Function_float %x_98 %uint_2
+        %113 = OpLoad %float %112
+        %114 = OpFAdd %float %99 %113
+        %115 = OpFOrdGreaterThan %bool %96 %114
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+               OpStore %x_121_phi %false
+               OpBranch %94
+        %116 = OpLabel
+        %119 = OpAccessChain %_ptr_Function_float %x_98 %uint_3
+        %120 = OpLoad %float %119
+        %121 = OpFAdd %float %107 %120
+        %122 = OpFOrdGreaterThan %bool %104 %121
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %123
+        %124 = OpLabel
+               OpStore %x_121_phi %false
+               OpBranch %94
+        %123 = OpLabel
+               OpStore %x_121_phi %true
+               OpBranch %94
+         %94 = OpLabel
+        %126 = OpLoad %bool %x_121_phi
+        %127 = OpLoad %v4float %x_89
+               OpStore %x_90_phi %127
+               OpSelectionMerge %128 None
+               OpBranchConditional %126 %129 %128
+        %129 = OpLabel
+               OpStore %x_78 %91
+        %130 = OpAccessChain %_ptr_Function_float %x_78 %68 %uint_0
+        %131 = OpLoad %float %130
+               OpStore %x_79 %91
+        %132 = OpAccessChain %_ptr_Function_float %x_79 %68 %uint_1
+        %133 = OpLoad %float %132
+               OpStore %x_80 %150
+        %151 = OpConvertFToS %int %131
+        %152 = OpConvertFToS %int %133
+        %153 = OpIMul %int %151 %152
+        %155 = OpIMul %int %68 %int_9
+        %156 = OpIAdd %int %153 %155
+        %158 = OpIAdd %int %156 %int_11
+        %160 = OpSMod %int %158 %int_16
+        %161 = OpAccessChain %_ptr_Function_v4float %x_80 %160
+        %162 = OpLoad %v4float %161
+               OpStore %x_136 %162
+        %163 = OpLoad %v4float %x_136
+               OpStore %x_90_phi %163
+               OpBranch %128
+        %128 = OpLabel
+        %164 = OpLoad %v4float %x_90_phi
+               OpBranch %58
+         %58 = OpLabel
+        %166 = OpIAdd %int %68 %int_1
+               OpStore %x_93 %166
+               OpStore %x_89_phi %164
+        %167 = OpLoad %int %x_93
+               OpStore %x_92_phi %167
+               OpBranch %56
+         %57 = OpLabel
+        %168 = OpLoad %v4float %x_89
+               OpStore %x_GLF_color %168
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %169
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %173 = OpLabel
+        %174 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %174
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %176 = OpLabel
+        %177 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %177
+        %178 = OpFunctionCall %void %main_1
+        %180 = OpLoad %v4float %x_GLF_color
+        %181 = OpCompositeConstruct %main_out %180
+        %179 = OpFunctionCall %void %tint_symbol_3 %181
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..1742de0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl.expected.wgsl
@@ -0,0 +1,97 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_77 : array<vec4<f32>, 8>;
+  var x_78 : array<vec4<f32>, 8>;
+  var x_79 : array<vec4<f32>, 8>;
+  var x_80 : array<vec4<f32>, 16>;
+  var x_89 : vec4<f32>;
+  var x_89_phi : vec4<f32>;
+  var x_92_phi : i32;
+  let x_81 : vec4<f32> = gl_FragCoord;
+  let x_84 : vec2<f32> = x_6.resolution;
+  let x_87 : vec2<f32> = floor(((vec2<f32>(x_81.x, x_81.y) / x_84) * 32.0));
+  x_89_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  x_92_phi = 0;
+  loop {
+    var x_136 : vec4<f32>;
+    var x_93 : i32;
+    var x_121_phi : bool;
+    var x_90_phi : vec4<f32>;
+    x_89 = x_89_phi;
+    let x_92 : i32 = x_92_phi;
+    if ((x_92 < 8)) {
+    } else {
+      break;
+    }
+    var x_98 : vec4<f32>;
+    x_77 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    x_98 = x_77[x_92];
+    switch(0u) {
+      default: {
+        let x_101 : f32 = x_87.x;
+        let x_102 : f32 = x_98.x;
+        if ((x_101 < x_102)) {
+          x_121_phi = false;
+          break;
+        }
+        let x_106 : f32 = x_87.y;
+        let x_107 : f32 = x_98.y;
+        if ((x_106 < x_107)) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_101 > (x_102 + x_98.z))) {
+          x_121_phi = false;
+          break;
+        }
+        if ((x_106 > (x_107 + x_98.w))) {
+          x_121_phi = false;
+          break;
+        }
+        x_121_phi = true;
+      }
+    }
+    let x_121 : bool = x_121_phi;
+    x_90_phi = x_89;
+    if (x_121) {
+      x_78 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_125 : f32 = x_78[x_92].x;
+      x_79 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_128 : f32 = x_79[x_92].y;
+      x_80 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      x_136 = x_80[((((i32(x_125) * i32(x_128)) + (x_92 * 9)) + 11) % 16)];
+      x_90_phi = x_136;
+    }
+    let x_90 : vec4<f32> = x_90_phi;
+
+    continuing {
+      x_93 = (x_92 + 1);
+      x_89_phi = x_90;
+      x_92_phi = x_93;
+    }
+  }
+  x_GLF_color = x_89;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm
new file mode 100644
index 0000000..84be19f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm
@@ -0,0 +1,111 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %uint = OpTypeInt 32 0
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %33 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %37 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %39 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %40 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %41 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %46 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %47 = OpConstantComposite %_arr_v4float_uint_16 %31 %33 %34 %35 %36 %37 %38 %39 %31 %40 %41 %42 %43 %44 %45 %46
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+  %float_0_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_0_0 %float_0_0 %float_0_0 %float_0_0
+         %53 = OpConstantComposite %_arr_v4float_uint_16 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52
+       %main = OpFunction %void None %9
+         %54 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %55 = OpLoad %v4float %gl_FragCoord
+         %56 = OpVectorShuffle %v2float %55 %55 0 1
+         %57 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %58 = OpLoad %v2float %57
+         %59 = OpFDiv %v2float %56 %58
+         %60 = OpCompositeExtract %float %59 0
+         %61 = OpFMul %float %60 %float_10
+         %62 = OpConvertFToS %int %61
+         %63 = OpCompositeExtract %float %59 1
+         %64 = OpFMul %float %63 %float_10
+         %65 = OpConvertFToS %int %64
+         %66 = OpIMul %int %65 %int_10
+         %67 = OpIAdd %int %62 %66
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpPhi %int %int_100 %54 %70 %71
+         %72 = OpPhi %int %int_0 %54 %73 %71
+         %74 = OpSLessThan %bool %72 %67
+               OpLoopMerge %75 %71 None
+               OpBranchConditional %74 %71 %75
+         %71 = OpLabel
+         %76 = OpIMul %int %int_4 %69
+         %77 = OpISub %int %int_1000 %69
+         %78 = OpIMul %int %76 %77
+         %70 = OpSDiv %int %78 %int_1000
+         %73 = OpIAdd %int %72 %int_1
+               OpBranch %68
+         %75 = OpLabel
+         %79 = OpSMod %int %69 %int_16
+               OpStore %indexable %47
+         %80 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %53
+               OpStore %indexable %80
+         %81 = OpVectorShuffle %v2float %41 %37 1 4
+         %82 = OpAccessChain %_ptr_Function_v4float %indexable %79
+         %83 = OpLoad %v4float %82
+               OpStore %_GLF_color %83
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..9998415
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.hlsl
@@ -0,0 +1,63 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_69 = 0;
+  int x_69_phi = 0;
+  int x_72_phi = 0;
+  const float4 x_55 = gl_FragCoord;
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_59 = (float2(x_55.x, x_55.y) / x_58);
+  const int x_67 = (int((x_59.x * 10.0f)) + (int((x_59.y * 10.0f)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  while (true) {
+    int x_70 = 0;
+    int x_73 = 0;
+    x_69 = x_69_phi;
+    const int x_72 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+    {
+      x_70 = (((4 * asint(x_69)) * (1000 - asint(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_80[16] = indexable;
+  const float4 tint_symbol_6[16] = {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), 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), 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), 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)};
+  indexable = tint_symbol_6;
+  indexable = x_80;
+  const float2 x_81 = float2(float4(0.0f, 1.0f, 0.0f, 1.0f).y, float4(0.5f, 0.0f, 0.5f, 1.0f).x);
+  const float4 x_83 = indexable[asint((x_69 % 16))];
+  x_GLF_color = x_83;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.msl
new file mode 100644
index 0000000..d75eca0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  tint_array_wrapper indexable = {};
+  int x_69 = 0;
+  int x_69_phi = 0;
+  int x_72_phi = 0;
+  float4 const x_55 = *(tint_symbol_7);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_59 = (float2(x_55.x, x_55.y) / x_58);
+  int const x_67 = (int((x_59.x * 10.0f)) + (int((x_59.y * 10.0f)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  while (true) {
+    int x_70 = 0;
+    int x_73 = 0;
+    x_69 = x_69_phi;
+    int const x_72 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+    {
+      x_70 = (((4 * as_type<int>(x_69)) * (1000 - as_type<int>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  tint_array_wrapper const x_80 = indexable;
+  tint_array_wrapper const tint_symbol_5 = {.arr={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), 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), 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), 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)}};
+  indexable = tint_symbol_5;
+  indexable = x_80;
+  float2 const x_81 = float2(float4(0.0f, 1.0f, 0.0f, 1.0f).y, float4(0.5f, 0.0f, 0.5f, 1.0f).x);
+  float4 const x_83 = indexable.arr[as_type<int>((x_69 % 16))];
+  *(tint_symbol_8) = x_83;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_6 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..7dfa9c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.spvasm
@@ -0,0 +1,188 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 124
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_69 "x_69"
+               OpName %x_69_phi "x_69_phi"
+               OpName %x_72_phi "x_72_phi"
+               OpName %x_70 "x_70"
+               OpName %x_73 "x_73"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %83 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %84 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %85 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %87 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %88 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %89 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %90 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %92 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %94 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %95 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %96 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %97 = OpConstantComposite %_arr_v4float_uint_16 %81 %83 %84 %85 %86 %87 %88 %89 %81 %90 %91 %92 %93 %94 %95 %96
+         %99 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %100 = OpConstantComposite %_arr_v4float_uint_16 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %111 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_69 = OpVariable %_ptr_Function_int Function %28
+   %x_69_phi = OpVariable %_ptr_Function_int Function %28
+   %x_72_phi = OpVariable %_ptr_Function_int Function %28
+       %x_70 = OpVariable %_ptr_Function_int Function %28
+       %x_73 = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %34 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %35 = OpLoad %v2float %34
+         %36 = OpCompositeExtract %float %31 0
+         %37 = OpCompositeExtract %float %31 1
+         %38 = OpCompositeConstruct %v2float %36 %37
+         %39 = OpFDiv %v2float %38 %35
+         %41 = OpCompositeExtract %float %39 0
+         %43 = OpFMul %float %41 %float_10
+         %40 = OpConvertFToS %int %43
+         %45 = OpCompositeExtract %float %39 1
+         %46 = OpFMul %float %45 %float_10
+         %44 = OpConvertFToS %int %46
+         %48 = OpIMul %int %44 %int_10
+         %49 = OpIAdd %int %40 %48
+               OpStore %x_69_phi %int_100
+               OpStore %x_72_phi %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %58 = OpLoad %int %x_69_phi
+               OpStore %x_69 %58
+         %59 = OpLoad %int %x_72_phi
+         %60 = OpSLessThan %bool %59 %49
+               OpSelectionMerge %62 None
+               OpBranchConditional %60 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %53
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %67 = OpLoad %int %x_69
+         %66 = OpCopyObject %int %67
+         %68 = OpIMul %int %int_4 %66
+         %71 = OpLoad %int %x_69
+         %70 = OpCopyObject %int %71
+         %72 = OpISub %int %int_1000 %70
+         %73 = OpIMul %int %68 %72
+         %74 = OpSDiv %int %73 %int_1000
+               OpStore %x_70 %74
+         %76 = OpIAdd %int %59 %int_1
+               OpStore %x_73 %76
+         %77 = OpLoad %int %x_70
+               OpStore %x_69_phi %77
+         %78 = OpLoad %int %x_73
+               OpStore %x_72_phi %78
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %97
+         %98 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %100
+               OpStore %indexable %98
+        %101 = OpCompositeExtract %float %91 1
+        %102 = OpCompositeExtract %float %87 0
+        %103 = OpCompositeConstruct %v2float %101 %102
+        %105 = OpLoad %int %x_69
+        %107 = OpSMod %int %105 %int_16
+        %104 = OpCopyObject %int %107
+        %109 = OpAccessChain %_ptr_Function_v4float %indexable %104
+        %110 = OpLoad %v4float %109
+               OpStore %x_GLF_color %110
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %111
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %115 = OpLabel
+        %116 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %116
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %118 = OpLabel
+        %119 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %119
+        %120 = OpFunctionCall %void %main_1
+        %122 = OpLoad %v4float %x_GLF_color
+        %123 = OpCompositeConstruct %main_out %122
+        %121 = OpFunctionCall %void %tint_symbol_3 %123
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..e7aeb6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.spvasm.expected.wgsl
@@ -0,0 +1,60 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_69 : i32;
+  var x_69_phi : i32;
+  var x_72_phi : i32;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  let x_67 : i32 = (i32((x_59.x * 10.0)) + (i32((x_59.y * 10.0)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  loop {
+    var x_70 : i32;
+    var x_73 : i32;
+    x_69 = x_69_phi;
+    let x_72 : i32 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_70 = (((4 * bitcast<i32>(x_69)) * (1000 - bitcast<i32>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_80 : array<vec4<f32>, 16> = indexable;
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  indexable = x_80;
+  let x_81 : vec2<f32> = vec2<f32>(vec4<f32>(0.0, 1.0, 0.0, 1.0).y, vec4<f32>(0.5, 0.0, 0.5, 1.0).x);
+  let x_83 : vec4<f32> = indexable[bitcast<i32>((x_69 % 16))];
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
new file mode 100644
index 0000000..e7aeb6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
@@ -0,0 +1,60 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_69 : i32;
+  var x_69_phi : i32;
+  var x_72_phi : i32;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  let x_67 : i32 = (i32((x_59.x * 10.0)) + (i32((x_59.y * 10.0)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  loop {
+    var x_70 : i32;
+    var x_73 : i32;
+    x_69 = x_69_phi;
+    let x_72 : i32 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_70 = (((4 * bitcast<i32>(x_69)) * (1000 - bitcast<i32>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_80 : array<vec4<f32>, 16> = indexable;
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  indexable = x_80;
+  let x_81 : vec2<f32> = vec2<f32>(vec4<f32>(0.0, 1.0, 0.0, 1.0).y, vec4<f32>(0.5, 0.0, 0.5, 1.0).x);
+  let x_83 : vec4<f32> = indexable[bitcast<i32>((x_69 % 16))];
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..9998415
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.hlsl
@@ -0,0 +1,63 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_69 = 0;
+  int x_69_phi = 0;
+  int x_72_phi = 0;
+  const float4 x_55 = gl_FragCoord;
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_59 = (float2(x_55.x, x_55.y) / x_58);
+  const int x_67 = (int((x_59.x * 10.0f)) + (int((x_59.y * 10.0f)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  while (true) {
+    int x_70 = 0;
+    int x_73 = 0;
+    x_69 = x_69_phi;
+    const int x_72 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+    {
+      x_70 = (((4 * asint(x_69)) * (1000 - asint(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_80[16] = indexable;
+  const float4 tint_symbol_6[16] = {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), 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), 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), 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)};
+  indexable = tint_symbol_6;
+  indexable = x_80;
+  const float2 x_81 = float2(float4(0.0f, 1.0f, 0.0f, 1.0f).y, float4(0.5f, 0.0f, 0.5f, 1.0f).x);
+  const float4 x_83 = indexable[asint((x_69 % 16))];
+  x_GLF_color = x_83;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.msl
new file mode 100644
index 0000000..d75eca0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.msl
@@ -0,0 +1,65 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  tint_array_wrapper indexable = {};
+  int x_69 = 0;
+  int x_69_phi = 0;
+  int x_72_phi = 0;
+  float4 const x_55 = *(tint_symbol_7);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_59 = (float2(x_55.x, x_55.y) / x_58);
+  int const x_67 = (int((x_59.x * 10.0f)) + (int((x_59.y * 10.0f)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  while (true) {
+    int x_70 = 0;
+    int x_73 = 0;
+    x_69 = x_69_phi;
+    int const x_72 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+    {
+      x_70 = (((4 * as_type<int>(x_69)) * (1000 - as_type<int>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  tint_array_wrapper const x_80 = indexable;
+  tint_array_wrapper const tint_symbol_5 = {.arr={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), 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), 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), 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)}};
+  indexable = tint_symbol_5;
+  indexable = x_80;
+  float2 const x_81 = float2(float4(0.0f, 1.0f, 0.0f, 1.0f).y, float4(0.5f, 0.0f, 0.5f, 1.0f).x);
+  float4 const x_83 = indexable.arr[as_type<int>((x_69 % 16))];
+  *(tint_symbol_8) = x_83;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_6 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..7dfa9c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.spvasm
@@ -0,0 +1,188 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 124
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_69 "x_69"
+               OpName %x_69_phi "x_69_phi"
+               OpName %x_72_phi "x_72_phi"
+               OpName %x_70 "x_70"
+               OpName %x_73 "x_73"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %83 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %84 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %85 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %87 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %88 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %89 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %90 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %92 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %94 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %95 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %96 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %97 = OpConstantComposite %_arr_v4float_uint_16 %81 %83 %84 %85 %86 %87 %88 %89 %81 %90 %91 %92 %93 %94 %95 %96
+         %99 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %100 = OpConstantComposite %_arr_v4float_uint_16 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99 %99
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %111 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_69 = OpVariable %_ptr_Function_int Function %28
+   %x_69_phi = OpVariable %_ptr_Function_int Function %28
+   %x_72_phi = OpVariable %_ptr_Function_int Function %28
+       %x_70 = OpVariable %_ptr_Function_int Function %28
+       %x_73 = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %34 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %35 = OpLoad %v2float %34
+         %36 = OpCompositeExtract %float %31 0
+         %37 = OpCompositeExtract %float %31 1
+         %38 = OpCompositeConstruct %v2float %36 %37
+         %39 = OpFDiv %v2float %38 %35
+         %41 = OpCompositeExtract %float %39 0
+         %43 = OpFMul %float %41 %float_10
+         %40 = OpConvertFToS %int %43
+         %45 = OpCompositeExtract %float %39 1
+         %46 = OpFMul %float %45 %float_10
+         %44 = OpConvertFToS %int %46
+         %48 = OpIMul %int %44 %int_10
+         %49 = OpIAdd %int %40 %48
+               OpStore %x_69_phi %int_100
+               OpStore %x_72_phi %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %58 = OpLoad %int %x_69_phi
+               OpStore %x_69 %58
+         %59 = OpLoad %int %x_72_phi
+         %60 = OpSLessThan %bool %59 %49
+               OpSelectionMerge %62 None
+               OpBranchConditional %60 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %53
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %67 = OpLoad %int %x_69
+         %66 = OpCopyObject %int %67
+         %68 = OpIMul %int %int_4 %66
+         %71 = OpLoad %int %x_69
+         %70 = OpCopyObject %int %71
+         %72 = OpISub %int %int_1000 %70
+         %73 = OpIMul %int %68 %72
+         %74 = OpSDiv %int %73 %int_1000
+               OpStore %x_70 %74
+         %76 = OpIAdd %int %59 %int_1
+               OpStore %x_73 %76
+         %77 = OpLoad %int %x_70
+               OpStore %x_69_phi %77
+         %78 = OpLoad %int %x_73
+               OpStore %x_72_phi %78
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %97
+         %98 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %100
+               OpStore %indexable %98
+        %101 = OpCompositeExtract %float %91 1
+        %102 = OpCompositeExtract %float %87 0
+        %103 = OpCompositeConstruct %v2float %101 %102
+        %105 = OpLoad %int %x_69
+        %107 = OpSMod %int %105 %int_16
+        %104 = OpCopyObject %int %107
+        %109 = OpAccessChain %_ptr_Function_v4float %indexable %104
+        %110 = OpLoad %v4float %109
+               OpStore %x_GLF_color %110
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %111
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %115 = OpLabel
+        %116 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %116
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %118 = OpLabel
+        %119 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %119
+        %120 = OpFunctionCall %void %main_1
+        %122 = OpLoad %v4float %x_GLF_color
+        %123 = OpCompositeConstruct %main_out %122
+        %121 = OpFunctionCall %void %tint_symbol_3 %123
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..e7aeb6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl.expected.wgsl
@@ -0,0 +1,60 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_69 : i32;
+  var x_69_phi : i32;
+  var x_72_phi : i32;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  let x_67 : i32 = (i32((x_59.x * 10.0)) + (i32((x_59.y * 10.0)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  loop {
+    var x_70 : i32;
+    var x_73 : i32;
+    x_69 = x_69_phi;
+    let x_72 : i32 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_70 = (((4 * bitcast<i32>(x_69)) * (1000 - bitcast<i32>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_80 : array<vec4<f32>, 16> = indexable;
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  indexable = x_80;
+  let x_81 : vec2<f32> = vec2<f32>(vec4<f32>(0.0, 1.0, 0.0, 1.0).y, vec4<f32>(0.5, 0.0, 0.5, 1.0).x);
+  let x_83 : vec4<f32> = indexable[bitcast<i32>((x_69 % 16))];
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm
new file mode 100644
index 0000000..ee9d964
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm
@@ -0,0 +1,108 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+       %uint = OpTypeInt 32 0
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %33 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %36 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %37 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %39 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %40 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %41 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %43 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %46 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %47 = OpConstantComposite %_arr_v4float_uint_16 %31 %33 %34 %35 %36 %37 %38 %39 %31 %40 %41 %42 %43 %44 %45 %46
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+  %float_0_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_0_0 %float_0_0 %float_0_0 %float_0_0
+         %53 = OpConstantComposite %_arr_v4float_uint_16 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52 %52
+       %main = OpFunction %void None %9
+         %54 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %55 = OpLoad %v4float %gl_FragCoord
+         %56 = OpVectorShuffle %v2float %55 %55 0 1
+         %57 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %58 = OpLoad %v2float %57
+         %59 = OpFDiv %v2float %56 %58
+         %60 = OpCompositeExtract %float %59 0
+         %61 = OpFMul %float %60 %float_10
+         %62 = OpConvertFToS %int %61
+         %63 = OpCompositeExtract %float %59 1
+         %64 = OpFMul %float %63 %float_10
+         %65 = OpConvertFToS %int %64
+         %66 = OpIMul %int %65 %int_10
+         %67 = OpIAdd %int %62 %66
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpPhi %int %int_100 %54 %70 %71
+         %72 = OpPhi %int %int_0 %54 %73 %71
+         %74 = OpSLessThan %bool %72 %67
+               OpLoopMerge %75 %71 None
+               OpBranchConditional %74 %71 %75
+         %71 = OpLabel
+         %76 = OpIMul %int %int_4 %69
+         %77 = OpISub %int %int_1000 %69
+         %78 = OpIMul %int %76 %77
+         %70 = OpSDiv %int %78 %int_1000
+         %73 = OpIAdd %int %72 %int_1
+               OpBranch %68
+         %75 = OpLabel
+         %79 = OpSMod %int %69 %int_16
+               OpStore %indexable %47
+         %80 = OpVectorShuffle %v2float %41 %37 1 4
+         %81 = OpAccessChain %_ptr_Function_v4float %indexable %79
+         %82 = OpLoad %v4float %81
+               OpStore %_GLF_color %82
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.hlsl
new file mode 100644
index 0000000..ac6e8e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.hlsl
@@ -0,0 +1,59 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_69 = 0;
+  int x_69_phi = 0;
+  int x_72_phi = 0;
+  const float4 x_55 = gl_FragCoord;
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_59 = (float2(x_55.x, x_55.y) / x_58);
+  const int x_67 = (int((x_59.x * 10.0f)) + (int((x_59.y * 10.0f)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  while (true) {
+    int x_70 = 0;
+    int x_73 = 0;
+    x_69 = x_69_phi;
+    const int x_72 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+    {
+      x_70 = (((4 * asint(x_69)) * (1000 - asint(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float2 x_80 = float2(float4(0.0f, 1.0f, 0.0f, 1.0f).y, float4(0.5f, 0.0f, 0.5f, 1.0f).x);
+  const float4 x_82 = indexable[asint((x_69 % 16))];
+  x_GLF_color = x_82;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.msl
new file mode 100644
index 0000000..f126328
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int x_69 = 0;
+  int x_69_phi = 0;
+  int x_72_phi = 0;
+  float4 const x_55 = *(tint_symbol_6);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_59 = (float2(x_55.x, x_55.y) / x_58);
+  int const x_67 = (int((x_59.x * 10.0f)) + (int((x_59.y * 10.0f)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  while (true) {
+    int x_70 = 0;
+    int x_73 = 0;
+    x_69 = x_69_phi;
+    int const x_72 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+    {
+      x_70 = (((4 * as_type<int>(x_69)) * (1000 - as_type<int>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float2 const x_80 = float2(float4(0.0f, 1.0f, 0.0f, 1.0f).y, float4(0.5f, 0.0f, 0.5f, 1.0f).x);
+  float4 const x_82 = indexable.arr[as_type<int>((x_69 % 16))];
+  *(tint_symbol_7) = x_82;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.spvasm
new file mode 100644
index 0000000..6899c03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.spvasm
@@ -0,0 +1,183 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 121
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_69 "x_69"
+               OpName %x_69_phi "x_69_phi"
+               OpName %x_72_phi "x_72_phi"
+               OpName %x_70 "x_70"
+               OpName %x_73 "x_73"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %83 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %84 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %85 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %87 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %88 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %89 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %90 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %92 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %94 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %95 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %96 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %97 = OpConstantComposite %_arr_v4float_uint_16 %81 %83 %84 %85 %86 %87 %88 %89 %81 %90 %91 %92 %93 %94 %95 %96
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_69 = OpVariable %_ptr_Function_int Function %28
+   %x_69_phi = OpVariable %_ptr_Function_int Function %28
+   %x_72_phi = OpVariable %_ptr_Function_int Function %28
+       %x_70 = OpVariable %_ptr_Function_int Function %28
+       %x_73 = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %34 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %35 = OpLoad %v2float %34
+         %36 = OpCompositeExtract %float %31 0
+         %37 = OpCompositeExtract %float %31 1
+         %38 = OpCompositeConstruct %v2float %36 %37
+         %39 = OpFDiv %v2float %38 %35
+         %41 = OpCompositeExtract %float %39 0
+         %43 = OpFMul %float %41 %float_10
+         %40 = OpConvertFToS %int %43
+         %45 = OpCompositeExtract %float %39 1
+         %46 = OpFMul %float %45 %float_10
+         %44 = OpConvertFToS %int %46
+         %48 = OpIMul %int %44 %int_10
+         %49 = OpIAdd %int %40 %48
+               OpStore %x_69_phi %int_100
+               OpStore %x_72_phi %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %58 = OpLoad %int %x_69_phi
+               OpStore %x_69 %58
+         %59 = OpLoad %int %x_72_phi
+         %60 = OpSLessThan %bool %59 %49
+               OpSelectionMerge %62 None
+               OpBranchConditional %60 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %53
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %67 = OpLoad %int %x_69
+         %66 = OpCopyObject %int %67
+         %68 = OpIMul %int %int_4 %66
+         %71 = OpLoad %int %x_69
+         %70 = OpCopyObject %int %71
+         %72 = OpISub %int %int_1000 %70
+         %73 = OpIMul %int %68 %72
+         %74 = OpSDiv %int %73 %int_1000
+               OpStore %x_70 %74
+         %76 = OpIAdd %int %59 %int_1
+               OpStore %x_73 %76
+         %77 = OpLoad %int %x_70
+               OpStore %x_69_phi %77
+         %78 = OpLoad %int %x_73
+               OpStore %x_72_phi %78
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %97
+         %98 = OpCompositeExtract %float %91 1
+         %99 = OpCompositeExtract %float %87 0
+        %100 = OpCompositeConstruct %v2float %98 %99
+        %102 = OpLoad %int %x_69
+        %104 = OpSMod %int %102 %int_16
+        %101 = OpCopyObject %int %104
+        %106 = OpAccessChain %_ptr_Function_v4float %indexable %101
+        %107 = OpLoad %v4float %106
+               OpStore %x_GLF_color %107
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %108
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %115 = OpLabel
+        %116 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %116
+        %117 = OpFunctionCall %void %main_1
+        %119 = OpLoad %v4float %x_GLF_color
+        %120 = OpCompositeConstruct %main_out %119
+        %118 = OpFunctionCall %void %tint_symbol_3 %120
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.wgsl
new file mode 100644
index 0000000..088e3cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.spvasm.expected.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_69 : i32;
+  var x_69_phi : i32;
+  var x_72_phi : i32;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  let x_67 : i32 = (i32((x_59.x * 10.0)) + (i32((x_59.y * 10.0)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  loop {
+    var x_70 : i32;
+    var x_73 : i32;
+    x_69 = x_69_phi;
+    let x_72 : i32 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_70 = (((4 * bitcast<i32>(x_69)) * (1000 - bitcast<i32>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_80 : vec2<f32> = vec2<f32>(vec4<f32>(0.0, 1.0, 0.0, 1.0).y, vec4<f32>(0.5, 0.0, 0.5, 1.0).x);
+  let x_82 : vec4<f32> = indexable[bitcast<i32>((x_69 % 16))];
+  x_GLF_color = x_82;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
new file mode 100644
index 0000000..088e3cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_69 : i32;
+  var x_69_phi : i32;
+  var x_72_phi : i32;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  let x_67 : i32 = (i32((x_59.x * 10.0)) + (i32((x_59.y * 10.0)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  loop {
+    var x_70 : i32;
+    var x_73 : i32;
+    x_69 = x_69_phi;
+    let x_72 : i32 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_70 = (((4 * bitcast<i32>(x_69)) * (1000 - bitcast<i32>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_80 : vec2<f32> = vec2<f32>(vec4<f32>(0.0, 1.0, 0.0, 1.0).y, vec4<f32>(0.5, 0.0, 0.5, 1.0).x);
+  let x_82 : vec4<f32> = indexable[bitcast<i32>((x_69 % 16))];
+  x_GLF_color = x_82;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.hlsl
new file mode 100644
index 0000000..ac6e8e0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.hlsl
@@ -0,0 +1,59 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_69 = 0;
+  int x_69_phi = 0;
+  int x_72_phi = 0;
+  const float4 x_55 = gl_FragCoord;
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_59 = (float2(x_55.x, x_55.y) / x_58);
+  const int x_67 = (int((x_59.x * 10.0f)) + (int((x_59.y * 10.0f)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  while (true) {
+    int x_70 = 0;
+    int x_73 = 0;
+    x_69 = x_69_phi;
+    const int x_72 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+    {
+      x_70 = (((4 * asint(x_69)) * (1000 - asint(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float2 x_80 = float2(float4(0.0f, 1.0f, 0.0f, 1.0f).y, float4(0.5f, 0.0f, 0.5f, 1.0f).x);
+  const float4 x_82 = indexable[asint((x_69 % 16))];
+  x_GLF_color = x_82;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.msl
new file mode 100644
index 0000000..f126328
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int x_69 = 0;
+  int x_69_phi = 0;
+  int x_72_phi = 0;
+  float4 const x_55 = *(tint_symbol_6);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_59 = (float2(x_55.x, x_55.y) / x_58);
+  int const x_67 = (int((x_59.x * 10.0f)) + (int((x_59.y * 10.0f)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  while (true) {
+    int x_70 = 0;
+    int x_73 = 0;
+    x_69 = x_69_phi;
+    int const x_72 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+    {
+      x_70 = (((4 * as_type<int>(x_69)) * (1000 - as_type<int>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float2 const x_80 = float2(float4(0.0f, 1.0f, 0.0f, 1.0f).y, float4(0.5f, 0.0f, 0.5f, 1.0f).x);
+  float4 const x_82 = indexable.arr[as_type<int>((x_69 % 16))];
+  *(tint_symbol_7) = x_82;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.spvasm
new file mode 100644
index 0000000..6899c03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.spvasm
@@ -0,0 +1,183 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 121
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_69 "x_69"
+               OpName %x_69_phi "x_69_phi"
+               OpName %x_72_phi "x_72_phi"
+               OpName %x_70 "x_70"
+               OpName %x_73 "x_73"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_10 = OpConstant %float 10
+     %int_10 = OpConstant %int 10
+    %int_100 = OpConstant %int 100
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_4 = OpConstant %int 4
+   %int_1000 = OpConstant %int 1000
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %83 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %84 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %85 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %87 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %88 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %89 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %90 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %92 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %94 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %95 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %96 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %97 = OpConstantComposite %_arr_v4float_uint_16 %81 %83 %84 %85 %86 %87 %88 %89 %81 %90 %91 %92 %93 %94 %95 %96
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %108 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_69 = OpVariable %_ptr_Function_int Function %28
+   %x_69_phi = OpVariable %_ptr_Function_int Function %28
+   %x_72_phi = OpVariable %_ptr_Function_int Function %28
+       %x_70 = OpVariable %_ptr_Function_int Function %28
+       %x_73 = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %34 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %35 = OpLoad %v2float %34
+         %36 = OpCompositeExtract %float %31 0
+         %37 = OpCompositeExtract %float %31 1
+         %38 = OpCompositeConstruct %v2float %36 %37
+         %39 = OpFDiv %v2float %38 %35
+         %41 = OpCompositeExtract %float %39 0
+         %43 = OpFMul %float %41 %float_10
+         %40 = OpConvertFToS %int %43
+         %45 = OpCompositeExtract %float %39 1
+         %46 = OpFMul %float %45 %float_10
+         %44 = OpConvertFToS %int %46
+         %48 = OpIMul %int %44 %int_10
+         %49 = OpIAdd %int %40 %48
+               OpStore %x_69_phi %int_100
+               OpStore %x_72_phi %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %58 = OpLoad %int %x_69_phi
+               OpStore %x_69 %58
+         %59 = OpLoad %int %x_72_phi
+         %60 = OpSLessThan %bool %59 %49
+               OpSelectionMerge %62 None
+               OpBranchConditional %60 %63 %64
+         %63 = OpLabel
+               OpBranch %62
+         %64 = OpLabel
+               OpBranch %53
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %67 = OpLoad %int %x_69
+         %66 = OpCopyObject %int %67
+         %68 = OpIMul %int %int_4 %66
+         %71 = OpLoad %int %x_69
+         %70 = OpCopyObject %int %71
+         %72 = OpISub %int %int_1000 %70
+         %73 = OpIMul %int %68 %72
+         %74 = OpSDiv %int %73 %int_1000
+               OpStore %x_70 %74
+         %76 = OpIAdd %int %59 %int_1
+               OpStore %x_73 %76
+         %77 = OpLoad %int %x_70
+               OpStore %x_69_phi %77
+         %78 = OpLoad %int %x_73
+               OpStore %x_72_phi %78
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %97
+         %98 = OpCompositeExtract %float %91 1
+         %99 = OpCompositeExtract %float %87 0
+        %100 = OpCompositeConstruct %v2float %98 %99
+        %102 = OpLoad %int %x_69
+        %104 = OpSMod %int %102 %int_16
+        %101 = OpCopyObject %int %104
+        %106 = OpAccessChain %_ptr_Function_v4float %indexable %101
+        %107 = OpLoad %v4float %106
+               OpStore %x_GLF_color %107
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %108
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %112 = OpLabel
+        %113 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %113
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %115 = OpLabel
+        %116 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %116
+        %117 = OpFunctionCall %void %main_1
+        %119 = OpLoad %v4float %x_GLF_color
+        %120 = OpCompositeConstruct %main_out %119
+        %118 = OpFunctionCall %void %tint_symbol_3 %120
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.wgsl
new file mode 100644
index 0000000..088e3cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl.expected.wgsl
@@ -0,0 +1,57 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_69 : i32;
+  var x_69_phi : i32;
+  var x_72_phi : i32;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  let x_67 : i32 = (i32((x_59.x * 10.0)) + (i32((x_59.y * 10.0)) * 10));
+  x_69_phi = 100;
+  x_72_phi = 0;
+  loop {
+    var x_70 : i32;
+    var x_73 : i32;
+    x_69 = x_69_phi;
+    let x_72 : i32 = x_72_phi;
+    if ((x_72 < x_67)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_70 = (((4 * bitcast<i32>(x_69)) * (1000 - bitcast<i32>(x_69))) / 1000);
+      x_73 = (x_72 + 1);
+      x_69_phi = x_70;
+      x_72_phi = x_73;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_80 : vec2<f32> = vec2<f32>(vec4<f32>(0.0, 1.0, 0.0, 1.0).y, vec4<f32>(0.5, 0.0, 0.5, 1.0).x);
+  let x_82 : vec4<f32> = indexable[bitcast<i32>((x_69 % 16))];
+  x_GLF_color = x_82;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm
new file mode 100644
index 0000000..ca63a27
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm
@@ -0,0 +1,248 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %checkSwap_f1_f1_ "checkSwap(f1;f1;"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %data "data"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %__0 ""
+               OpName %i_0 "i"
+               OpName %j "j"
+               OpName %doSwap "doSwap"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %temp "temp"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+         %25 = OpTypeFunction %bool %_ptr_Function_float %_ptr_Function_float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+%_ptr_Function_bool = OpTypePointer Function %bool
+%_ptr_Function_int = OpTypePointer Function %int
+     %int_10 = OpConstant %int 10
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+     %uint_0 = OpConstant %uint 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+   %float_10 = OpConstant %float 10
+      %int_5 = OpConstant %int 5
+    %float_1 = OpConstant %float 1
+       %main = OpFunction %void None %21
+         %51 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+     %doSwap = OpVariable %_ptr_Function_bool Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+       %temp = OpVariable %_ptr_Function_float Function
+               OpStore %i %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpSLessThan %bool %56 %int_10
+               OpBranchConditional %57 %58 %53
+         %58 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpLoad %int %i
+         %61 = OpISub %int %int_10 %60
+         %62 = OpConvertSToF %float %61
+         %63 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %64 = OpLoad %float %63
+         %65 = OpFMul %float %62 %64
+         %66 = OpAccessChain %_ptr_Function_float %data %59
+               OpStore %66 %65
+               OpBranch %54
+         %54 = OpLabel
+         %67 = OpLoad %int %i
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %i %68
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %i_0 %int_0
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %i_0
+         %74 = OpSLessThan %bool %73 %int_9
+               OpBranchConditional %74 %75 %70
+         %75 = OpLabel
+               OpStore %j %int_0
+               OpBranch %76
+         %76 = OpLabel
+               OpLoopMerge %77 %78 None
+               OpBranch %79
+         %79 = OpLabel
+         %80 = OpLoad %int %j
+         %81 = OpSLessThan %bool %80 %int_10
+               OpBranchConditional %81 %82 %77
+         %82 = OpLabel
+         %83 = OpLoad %int %j
+         %84 = OpLoad %int %i_0
+         %85 = OpIAdd %int %84 %int_1
+         %86 = OpSLessThan %bool %83 %85
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+               OpBranch %78
+         %87 = OpLabel
+         %89 = OpLoad %int %i_0
+         %90 = OpLoad %int %j
+         %91 = OpAccessChain %_ptr_Function_float %data %89
+         %92 = OpLoad %float %91
+               OpStore %param %92
+         %93 = OpAccessChain %_ptr_Function_float %data %90
+         %94 = OpLoad %float %93
+               OpStore %param_0 %94
+         %95 = OpFunctionCall %bool %checkSwap_f1_f1_ %param %param_0
+               OpStore %doSwap %95
+         %96 = OpLoad %bool %doSwap
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %97
+         %98 = OpLabel
+         %99 = OpLoad %int %i_0
+        %100 = OpAccessChain %_ptr_Function_float %data %99
+        %101 = OpLoad %float %100
+               OpStore %temp %101
+        %102 = OpLoad %int %i_0
+        %103 = OpLoad %int %j
+        %104 = OpAccessChain %_ptr_Function_float %data %103
+        %105 = OpLoad %float %104
+        %106 = OpAccessChain %_ptr_Function_float %data %102
+               OpStore %106 %105
+        %107 = OpLoad %int %j
+        %108 = OpLoad %float %temp
+        %109 = OpAccessChain %_ptr_Function_float %data %107
+               OpStore %109 %108
+               OpBranch %97
+         %97 = OpLabel
+               OpBranch %78
+         %78 = OpLabel
+        %110 = OpLoad %int %j
+        %111 = OpIAdd %int %110 %int_1
+               OpStore %j %111
+               OpBranch %76
+         %77 = OpLabel
+               OpBranch %71
+         %71 = OpLabel
+        %112 = OpLoad %int %i_0
+        %113 = OpIAdd %int %112 %int_1
+               OpStore %i_0 %113
+               OpBranch %69
+         %70 = OpLabel
+        %114 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %115 = OpLoad %float %114
+        %116 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %117 = OpLoad %float %116
+        %118 = OpFDiv %float %117 %float_2
+        %119 = OpFOrdLessThan %bool %115 %118
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+        %123 = OpAccessChain %_ptr_Function_float %data %int_0
+        %124 = OpLoad %float %123
+        %125 = OpFDiv %float %124 %float_10
+        %126 = OpAccessChain %_ptr_Function_float %data %int_5
+        %127 = OpLoad %float %126
+        %128 = OpFDiv %float %127 %float_10
+        %129 = OpAccessChain %_ptr_Function_float %data %int_9
+        %130 = OpLoad %float %129
+        %131 = OpFDiv %float %130 %float_10
+        %132 = OpCompositeConstruct %v4float %125 %128 %131 %float_1
+               OpStore %_GLF_color %132
+               OpBranch %120
+        %122 = OpLabel
+        %133 = OpAccessChain %_ptr_Function_float %data %int_5
+        %134 = OpLoad %float %133
+        %135 = OpFDiv %float %134 %float_10
+        %136 = OpAccessChain %_ptr_Function_float %data %int_9
+        %137 = OpLoad %float %136
+        %138 = OpFDiv %float %137 %float_10
+        %139 = OpAccessChain %_ptr_Function_float %data %int_0
+        %140 = OpLoad %float %139
+        %141 = OpFDiv %float %140 %float_10
+        %142 = OpCompositeConstruct %v4float %135 %138 %141 %float_1
+               OpStore %_GLF_color %142
+               OpBranch %120
+        %120 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%checkSwap_f1_f1_ = OpFunction %bool None %25
+          %a = OpFunctionParameter %_ptr_Function_float
+          %b = OpFunctionParameter %_ptr_Function_float
+        %143 = OpLabel
+        %144 = OpVariable %_ptr_Function_bool Function
+        %145 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %146 = OpLoad %float %145
+        %147 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %148 = OpLoad %float %147
+        %149 = OpFDiv %float %148 %float_2
+        %150 = OpFOrdLessThan %bool %146 %149
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %153
+        %152 = OpLabel
+        %154 = OpLoad %float %a
+        %155 = OpLoad %float %b
+        %156 = OpFOrdGreaterThan %bool %154 %155
+               OpStore %144 %156
+               OpBranch %151
+        %153 = OpLabel
+        %157 = OpLoad %float %a
+        %158 = OpLoad %float %b
+        %159 = OpFOrdLessThan %bool %157 %158
+               OpStore %144 %159
+               OpBranch %151
+        %151 = OpLabel
+        %160 = OpLoad %bool %144
+               OpReturnValue %160
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..5ff3989
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.hlsl
@@ -0,0 +1,105 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+bool checkSwap_f1_f1_(inout float a, inout float b) {
+  bool x_144 = false;
+  const float x_146 = gl_FragCoord.y;
+  const float x_148 = asfloat(x_9[0].y);
+  if ((x_146 < (x_148 / 2.0f))) {
+    const float x_154 = a;
+    const float x_155 = b;
+    x_144 = (x_154 > x_155);
+  } else {
+    const float x_157 = a;
+    const float x_158 = b;
+    x_144 = (x_157 < x_158);
+  }
+  return x_144;
+}
+
+void main_1() {
+  int i = 0;
+  float data[10] = (float[10])0;
+  int i_1 = 0;
+  int j = 0;
+  bool doSwap = false;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float temp = 0.0f;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      const int x_59 = i;
+      const int x_60 = i;
+      const float x_64 = asfloat(x_13[0].y);
+      data[x_59] = (float((10 - x_60)) * x_64);
+    }
+  }
+  i_1 = 0;
+  {
+    for(; (i_1 < 9); i_1 = (i_1 + 1)) {
+      j = 0;
+      {
+        for(; (j < 10); j = (j + 1)) {
+          if ((j < (i_1 + 1))) {
+            continue;
+          }
+          const int x_90 = j;
+          const float x_92 = data[i_1];
+          param = x_92;
+          const float x_94 = data[x_90];
+          param_1 = x_94;
+          const bool x_95 = checkSwap_f1_f1_(param, param_1);
+          doSwap = x_95;
+          if (doSwap) {
+            const float x_101 = data[i_1];
+            temp = x_101;
+            const int x_102 = i_1;
+            const float x_105 = data[j];
+            data[x_102] = x_105;
+            data[j] = temp;
+          }
+        }
+      }
+    }
+  }
+  const float x_115 = gl_FragCoord.x;
+  const float x_117 = asfloat(x_9[0].x);
+  if ((x_115 < (x_117 / 2.0f))) {
+    const float x_124 = data[0];
+    const float x_127 = data[5];
+    const float x_130 = data[9];
+    x_GLF_color = float4((x_124 / 10.0f), (x_127 / 10.0f), (x_130 / 10.0f), 1.0f);
+  } else {
+    const float x_134 = data[5];
+    const float x_137 = data[9];
+    const float x_140 = data[0];
+    x_GLF_color = float4((x_134 / 10.0f), (x_137 / 10.0f), (x_140 / 10.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.msl
new file mode 100644
index 0000000..08dcf56
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.msl
@@ -0,0 +1,141 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool checkSwap_f1_f1_(constant buf1& x_9, thread float* const a, thread float* const b, thread float4* const tint_symbol_5) {
+  bool x_144 = false;
+  float const x_146 = (*(tint_symbol_5)).y;
+  float const x_148 = x_9.resolution.y;
+  if ((x_146 < (x_148 / 2.0f))) {
+    float const x_154 = *(a);
+    float const x_155 = *(b);
+    x_144 = (x_154 > x_155);
+  } else {
+    float const x_157 = *(a);
+    float const x_158 = *(b);
+    x_144 = (x_157 < x_158);
+  }
+  bool const x_160 = x_144;
+  return x_160;
+}
+
+void main_1(constant buf0& x_13, constant buf1& x_9, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int i = 0;
+  tint_array_wrapper data = {};
+  int i_1 = 0;
+  int j = 0;
+  bool doSwap = false;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float temp = 0.0f;
+  i = 0;
+  while (true) {
+    int const x_56 = i;
+    if ((x_56 < 10)) {
+    } else {
+      break;
+    }
+    int const x_59 = i;
+    int const x_60 = i;
+    float const x_64 = x_13.injectionSwitch.y;
+    data.arr[x_59] = (float((10 - x_60)) * x_64);
+    {
+      int const x_67 = i;
+      i = (x_67 + 1);
+    }
+  }
+  i_1 = 0;
+  while (true) {
+    int const x_73 = i_1;
+    if ((x_73 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      int const x_80 = j;
+      if ((x_80 < 10)) {
+      } else {
+        break;
+      }
+      int const x_83 = j;
+      int const x_84 = i_1;
+      if ((x_83 < (x_84 + 1))) {
+        {
+          int const x_110 = j;
+          j = (x_110 + 1);
+        }
+        continue;
+      }
+      int const x_89 = i_1;
+      int const x_90 = j;
+      float const x_92 = data.arr[x_89];
+      param = x_92;
+      float const x_94 = data.arr[x_90];
+      param_1 = x_94;
+      bool const x_95 = checkSwap_f1_f1_(x_9, &(param), &(param_1), tint_symbol_6);
+      doSwap = x_95;
+      bool const x_96 = doSwap;
+      if (x_96) {
+        int const x_99 = i_1;
+        float const x_101 = data.arr[x_99];
+        temp = x_101;
+        int const x_102 = i_1;
+        int const x_103 = j;
+        float const x_105 = data.arr[x_103];
+        data.arr[x_102] = x_105;
+        int const x_107 = j;
+        float const x_108 = temp;
+        data.arr[x_107] = x_108;
+      }
+      {
+        int const x_110 = j;
+        j = (x_110 + 1);
+      }
+    }
+    {
+      int const x_112 = i_1;
+      i_1 = (x_112 + 1);
+    }
+  }
+  float const x_115 = (*(tint_symbol_6)).x;
+  float const x_117 = x_9.resolution.x;
+  if ((x_115 < (x_117 / 2.0f))) {
+    float const x_124 = data.arr[0];
+    float const x_127 = data.arr[5];
+    float const x_130 = data.arr[9];
+    *(tint_symbol_7) = float4((x_124 / 10.0f), (x_127 / 10.0f), (x_130 / 10.0f), 1.0f);
+  } else {
+    float const x_134 = data.arr[5];
+    float const x_137 = data.arr[9];
+    float const x_140 = data.arr[0];
+    *(tint_symbol_7) = float4((x_134 / 10.0f), (x_137 / 10.0f), (x_140 / 10.0f), 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_13, x_9, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..d4767b3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.spvasm
@@ -0,0 +1,305 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 193
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_9 "x_9"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %checkSwap_f1_f1_ "checkSwap_f1_f1_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_144 "x_144"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %i_1 "i_1"
+               OpName %j "j"
+               OpName %doSwap "doSwap"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %temp "temp"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %bool %_ptr_Function_float %_ptr_Function_float
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+       %void = OpTypeVoid
+         %54 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %61 = OpConstantNull %int
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %66 = OpConstantNull %_arr_float_uint_10
+         %71 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+   %float_10 = OpConstant %float 10
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %180 = OpTypeFunction %void %main_out
+%checkSwap_f1_f1_ = OpFunction %bool None %18
+          %a = OpFunctionParameter %_ptr_Function_float
+          %b = OpFunctionParameter %_ptr_Function_float
+         %24 = OpLabel
+      %x_144 = OpVariable %_ptr_Function_bool Function %27
+         %31 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %32 = OpLoad %float %31
+         %35 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %36 = OpLoad %float %35
+         %38 = OpFDiv %float %36 %float_2
+         %39 = OpFOrdLessThan %bool %32 %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %42
+         %41 = OpLabel
+         %44 = OpLoad %float %a
+         %46 = OpLoad %float %b
+         %47 = OpFOrdGreaterThan %bool %44 %46
+               OpStore %x_144 %47
+               OpBranch %40
+         %42 = OpLabel
+         %49 = OpLoad %float %a
+         %51 = OpLoad %float %b
+         %52 = OpFOrdLessThan %bool %49 %51
+               OpStore %x_144 %52
+               OpBranch %40
+         %40 = OpLabel
+         %53 = OpLoad %bool %x_144
+               OpReturnValue %53
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %54
+         %57 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %61
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %66
+        %i_1 = OpVariable %_ptr_Function_int Function %61
+          %j = OpVariable %_ptr_Function_int Function %61
+     %doSwap = OpVariable %_ptr_Function_bool Function %27
+      %param = OpVariable %_ptr_Function_float Function %71
+    %param_1 = OpVariable %_ptr_Function_float Function %71
+       %temp = OpVariable %_ptr_Function_float Function %71
+               OpStore %i %int_0
+               OpBranch %75
+         %75 = OpLabel
+               OpLoopMerge %76 %77 None
+               OpBranch %78
+         %78 = OpLabel
+         %79 = OpLoad %int %i
+         %81 = OpSLessThan %bool %79 %int_10
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+               OpBranch %82
+         %84 = OpLabel
+               OpBranch %76
+         %82 = OpLabel
+         %85 = OpLoad %int %i
+         %86 = OpLoad %int %i
+         %87 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_1
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Function_float %data %85
+         %91 = OpISub %int %int_10 %86
+         %90 = OpConvertSToF %float %91
+         %92 = OpFMul %float %90 %88
+               OpStore %89 %92
+               OpBranch %77
+         %77 = OpLabel
+         %93 = OpLoad %int %i
+         %95 = OpIAdd %int %93 %int_1
+               OpStore %i %95
+               OpBranch %75
+         %76 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %96
+         %96 = OpLabel
+               OpLoopMerge %97 %98 None
+               OpBranch %99
+         %99 = OpLabel
+        %100 = OpLoad %int %i_1
+        %102 = OpSLessThan %bool %100 %int_9
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+               OpBranch %103
+        %105 = OpLabel
+               OpBranch %97
+        %103 = OpLabel
+               OpStore %j %int_0
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %j
+        %111 = OpSLessThan %bool %110 %int_10
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %114
+        %113 = OpLabel
+               OpBranch %112
+        %114 = OpLabel
+               OpBranch %107
+        %112 = OpLabel
+        %115 = OpLoad %int %j
+        %116 = OpLoad %int %i_1
+        %117 = OpIAdd %int %116 %int_1
+        %118 = OpSLessThan %bool %115 %117
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpBranch %108
+        %119 = OpLabel
+        %121 = OpLoad %int %i_1
+        %122 = OpLoad %int %j
+        %123 = OpAccessChain %_ptr_Function_float %data %121
+        %124 = OpLoad %float %123
+               OpStore %param %124
+        %125 = OpAccessChain %_ptr_Function_float %data %122
+        %126 = OpLoad %float %125
+               OpStore %param_1 %126
+        %127 = OpFunctionCall %bool %checkSwap_f1_f1_ %param %param_1
+               OpStore %doSwap %127
+        %130 = OpLoad %bool %doSwap
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+        %133 = OpLoad %int %i_1
+        %134 = OpAccessChain %_ptr_Function_float %data %133
+        %135 = OpLoad %float %134
+               OpStore %temp %135
+        %136 = OpLoad %int %i_1
+        %137 = OpLoad %int %j
+        %138 = OpAccessChain %_ptr_Function_float %data %137
+        %139 = OpLoad %float %138
+        %140 = OpAccessChain %_ptr_Function_float %data %136
+               OpStore %140 %139
+        %141 = OpLoad %int %j
+        %142 = OpLoad %float %temp
+        %143 = OpAccessChain %_ptr_Function_float %data %141
+               OpStore %143 %142
+               OpBranch %131
+        %131 = OpLabel
+               OpBranch %108
+        %108 = OpLabel
+        %144 = OpLoad %int %j
+        %145 = OpIAdd %int %144 %int_1
+               OpStore %j %145
+               OpBranch %106
+        %107 = OpLabel
+               OpBranch %98
+         %98 = OpLabel
+        %146 = OpLoad %int %i_1
+        %147 = OpIAdd %int %146 %int_1
+               OpStore %i_1 %147
+               OpBranch %96
+         %97 = OpLabel
+        %148 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %149 = OpLoad %float %148
+        %150 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+        %151 = OpLoad %float %150
+        %152 = OpFDiv %float %151 %float_2
+        %153 = OpFOrdLessThan %bool %149 %152
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+        %157 = OpAccessChain %_ptr_Function_float %data %int_0
+        %158 = OpLoad %float %157
+        %160 = OpAccessChain %_ptr_Function_float %data %int_5
+        %161 = OpLoad %float %160
+        %162 = OpAccessChain %_ptr_Function_float %data %int_9
+        %163 = OpLoad %float %162
+        %165 = OpFDiv %float %158 %float_10
+        %166 = OpFDiv %float %161 %float_10
+        %167 = OpFDiv %float %163 %float_10
+        %169 = OpCompositeConstruct %v4float %165 %166 %167 %float_1
+               OpStore %x_GLF_color %169
+               OpBranch %154
+        %156 = OpLabel
+        %170 = OpAccessChain %_ptr_Function_float %data %int_5
+        %171 = OpLoad %float %170
+        %172 = OpAccessChain %_ptr_Function_float %data %int_9
+        %173 = OpLoad %float %172
+        %174 = OpAccessChain %_ptr_Function_float %data %int_0
+        %175 = OpLoad %float %174
+        %176 = OpFDiv %float %171 %float_10
+        %177 = OpFDiv %float %173 %float_10
+        %178 = OpFDiv %float %175 %float_10
+        %179 = OpCompositeConstruct %v4float %176 %177 %178 %float_1
+               OpStore %x_GLF_color %179
+               OpBranch %154
+        %154 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %180
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %184 = OpLabel
+        %185 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %185
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %54
+        %187 = OpLabel
+        %188 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %188
+        %189 = OpFunctionCall %void %main_1
+        %191 = OpLoad %v4float %x_GLF_color
+        %192 = OpCompositeConstruct %main_out %191
+        %190 = OpFunctionCall %void %tint_symbol_3 %192
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..9074163
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.spvasm.expected.wgsl
@@ -0,0 +1,140 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn checkSwap_f1_f1_(a : ptr<function, f32>, b : ptr<function, f32>) -> bool {
+  var x_144 : bool;
+  let x_146 : f32 = gl_FragCoord.y;
+  let x_148 : f32 = x_9.resolution.y;
+  if ((x_146 < (x_148 / 2.0))) {
+    let x_154 : f32 = *(a);
+    let x_155 : f32 = *(b);
+    x_144 = (x_154 > x_155);
+  } else {
+    let x_157 : f32 = *(a);
+    let x_158 : f32 = *(b);
+    x_144 = (x_157 < x_158);
+  }
+  let x_160 : bool = x_144;
+  return x_160;
+}
+
+fn main_1() {
+  var i : i32;
+  var data : array<f32, 10>;
+  var i_1 : i32;
+  var j : i32;
+  var doSwap : bool;
+  var param : f32;
+  var param_1 : f32;
+  var temp : f32;
+  i = 0;
+  loop {
+    let x_56 : i32 = i;
+    if ((x_56 < 10)) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = i;
+    let x_60 : i32 = i;
+    let x_64 : f32 = x_13.injectionSwitch.y;
+    data[x_59] = (f32((10 - x_60)) * x_64);
+
+    continuing {
+      let x_67 : i32 = i;
+      i = (x_67 + 1);
+    }
+  }
+  i_1 = 0;
+  loop {
+    let x_73 : i32 = i_1;
+    if ((x_73 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_80 : i32 = j;
+      if ((x_80 < 10)) {
+      } else {
+        break;
+      }
+      let x_83 : i32 = j;
+      let x_84 : i32 = i_1;
+      if ((x_83 < (x_84 + 1))) {
+        continue;
+      }
+      let x_89 : i32 = i_1;
+      let x_90 : i32 = j;
+      let x_92 : f32 = data[x_89];
+      param = x_92;
+      let x_94 : f32 = data[x_90];
+      param_1 = x_94;
+      let x_95 : bool = checkSwap_f1_f1_(&(param), &(param_1));
+      doSwap = x_95;
+      let x_96 : bool = doSwap;
+      if (x_96) {
+        let x_99 : i32 = i_1;
+        let x_101 : f32 = data[x_99];
+        temp = x_101;
+        let x_102 : i32 = i_1;
+        let x_103 : i32 = j;
+        let x_105 : f32 = data[x_103];
+        data[x_102] = x_105;
+        let x_107 : i32 = j;
+        let x_108 : f32 = temp;
+        data[x_107] = x_108;
+      }
+
+      continuing {
+        let x_110 : i32 = j;
+        j = (x_110 + 1);
+      }
+    }
+
+    continuing {
+      let x_112 : i32 = i_1;
+      i_1 = (x_112 + 1);
+    }
+  }
+  let x_115 : f32 = gl_FragCoord.x;
+  let x_117 : f32 = x_9.resolution.x;
+  if ((x_115 < (x_117 / 2.0))) {
+    let x_124 : f32 = data[0];
+    let x_127 : f32 = data[5];
+    let x_130 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_124 / 10.0), (x_127 / 10.0), (x_130 / 10.0), 1.0);
+  } else {
+    let x_134 : f32 = data[5];
+    let x_137 : f32 = data[9];
+    let x_140 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_134 / 10.0), (x_137 / 10.0), (x_140 / 10.0), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
new file mode 100644
index 0000000..9074163
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
@@ -0,0 +1,140 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn checkSwap_f1_f1_(a : ptr<function, f32>, b : ptr<function, f32>) -> bool {
+  var x_144 : bool;
+  let x_146 : f32 = gl_FragCoord.y;
+  let x_148 : f32 = x_9.resolution.y;
+  if ((x_146 < (x_148 / 2.0))) {
+    let x_154 : f32 = *(a);
+    let x_155 : f32 = *(b);
+    x_144 = (x_154 > x_155);
+  } else {
+    let x_157 : f32 = *(a);
+    let x_158 : f32 = *(b);
+    x_144 = (x_157 < x_158);
+  }
+  let x_160 : bool = x_144;
+  return x_160;
+}
+
+fn main_1() {
+  var i : i32;
+  var data : array<f32, 10>;
+  var i_1 : i32;
+  var j : i32;
+  var doSwap : bool;
+  var param : f32;
+  var param_1 : f32;
+  var temp : f32;
+  i = 0;
+  loop {
+    let x_56 : i32 = i;
+    if ((x_56 < 10)) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = i;
+    let x_60 : i32 = i;
+    let x_64 : f32 = x_13.injectionSwitch.y;
+    data[x_59] = (f32((10 - x_60)) * x_64);
+
+    continuing {
+      let x_67 : i32 = i;
+      i = (x_67 + 1);
+    }
+  }
+  i_1 = 0;
+  loop {
+    let x_73 : i32 = i_1;
+    if ((x_73 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_80 : i32 = j;
+      if ((x_80 < 10)) {
+      } else {
+        break;
+      }
+      let x_83 : i32 = j;
+      let x_84 : i32 = i_1;
+      if ((x_83 < (x_84 + 1))) {
+        continue;
+      }
+      let x_89 : i32 = i_1;
+      let x_90 : i32 = j;
+      let x_92 : f32 = data[x_89];
+      param = x_92;
+      let x_94 : f32 = data[x_90];
+      param_1 = x_94;
+      let x_95 : bool = checkSwap_f1_f1_(&(param), &(param_1));
+      doSwap = x_95;
+      let x_96 : bool = doSwap;
+      if (x_96) {
+        let x_99 : i32 = i_1;
+        let x_101 : f32 = data[x_99];
+        temp = x_101;
+        let x_102 : i32 = i_1;
+        let x_103 : i32 = j;
+        let x_105 : f32 = data[x_103];
+        data[x_102] = x_105;
+        let x_107 : i32 = j;
+        let x_108 : f32 = temp;
+        data[x_107] = x_108;
+      }
+
+      continuing {
+        let x_110 : i32 = j;
+        j = (x_110 + 1);
+      }
+    }
+
+    continuing {
+      let x_112 : i32 = i_1;
+      i_1 = (x_112 + 1);
+    }
+  }
+  let x_115 : f32 = gl_FragCoord.x;
+  let x_117 : f32 = x_9.resolution.x;
+  if ((x_115 < (x_117 / 2.0))) {
+    let x_124 : f32 = data[0];
+    let x_127 : f32 = data[5];
+    let x_130 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_124 / 10.0), (x_127 / 10.0), (x_130 / 10.0), 1.0);
+  } else {
+    let x_134 : f32 = data[5];
+    let x_137 : f32 = data[9];
+    let x_140 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_134 / 10.0), (x_137 / 10.0), (x_140 / 10.0), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..5ff3989
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.hlsl
@@ -0,0 +1,105 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+bool checkSwap_f1_f1_(inout float a, inout float b) {
+  bool x_144 = false;
+  const float x_146 = gl_FragCoord.y;
+  const float x_148 = asfloat(x_9[0].y);
+  if ((x_146 < (x_148 / 2.0f))) {
+    const float x_154 = a;
+    const float x_155 = b;
+    x_144 = (x_154 > x_155);
+  } else {
+    const float x_157 = a;
+    const float x_158 = b;
+    x_144 = (x_157 < x_158);
+  }
+  return x_144;
+}
+
+void main_1() {
+  int i = 0;
+  float data[10] = (float[10])0;
+  int i_1 = 0;
+  int j = 0;
+  bool doSwap = false;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float temp = 0.0f;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      const int x_59 = i;
+      const int x_60 = i;
+      const float x_64 = asfloat(x_13[0].y);
+      data[x_59] = (float((10 - x_60)) * x_64);
+    }
+  }
+  i_1 = 0;
+  {
+    for(; (i_1 < 9); i_1 = (i_1 + 1)) {
+      j = 0;
+      {
+        for(; (j < 10); j = (j + 1)) {
+          if ((j < (i_1 + 1))) {
+            continue;
+          }
+          const int x_90 = j;
+          const float x_92 = data[i_1];
+          param = x_92;
+          const float x_94 = data[x_90];
+          param_1 = x_94;
+          const bool x_95 = checkSwap_f1_f1_(param, param_1);
+          doSwap = x_95;
+          if (doSwap) {
+            const float x_101 = data[i_1];
+            temp = x_101;
+            const int x_102 = i_1;
+            const float x_105 = data[j];
+            data[x_102] = x_105;
+            data[j] = temp;
+          }
+        }
+      }
+    }
+  }
+  const float x_115 = gl_FragCoord.x;
+  const float x_117 = asfloat(x_9[0].x);
+  if ((x_115 < (x_117 / 2.0f))) {
+    const float x_124 = data[0];
+    const float x_127 = data[5];
+    const float x_130 = data[9];
+    x_GLF_color = float4((x_124 / 10.0f), (x_127 / 10.0f), (x_130 / 10.0f), 1.0f);
+  } else {
+    const float x_134 = data[5];
+    const float x_137 = data[9];
+    const float x_140 = data[0];
+    x_GLF_color = float4((x_134 / 10.0f), (x_137 / 10.0f), (x_140 / 10.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.msl
new file mode 100644
index 0000000..08dcf56
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.msl
@@ -0,0 +1,141 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool checkSwap_f1_f1_(constant buf1& x_9, thread float* const a, thread float* const b, thread float4* const tint_symbol_5) {
+  bool x_144 = false;
+  float const x_146 = (*(tint_symbol_5)).y;
+  float const x_148 = x_9.resolution.y;
+  if ((x_146 < (x_148 / 2.0f))) {
+    float const x_154 = *(a);
+    float const x_155 = *(b);
+    x_144 = (x_154 > x_155);
+  } else {
+    float const x_157 = *(a);
+    float const x_158 = *(b);
+    x_144 = (x_157 < x_158);
+  }
+  bool const x_160 = x_144;
+  return x_160;
+}
+
+void main_1(constant buf0& x_13, constant buf1& x_9, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int i = 0;
+  tint_array_wrapper data = {};
+  int i_1 = 0;
+  int j = 0;
+  bool doSwap = false;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float temp = 0.0f;
+  i = 0;
+  while (true) {
+    int const x_56 = i;
+    if ((x_56 < 10)) {
+    } else {
+      break;
+    }
+    int const x_59 = i;
+    int const x_60 = i;
+    float const x_64 = x_13.injectionSwitch.y;
+    data.arr[x_59] = (float((10 - x_60)) * x_64);
+    {
+      int const x_67 = i;
+      i = (x_67 + 1);
+    }
+  }
+  i_1 = 0;
+  while (true) {
+    int const x_73 = i_1;
+    if ((x_73 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      int const x_80 = j;
+      if ((x_80 < 10)) {
+      } else {
+        break;
+      }
+      int const x_83 = j;
+      int const x_84 = i_1;
+      if ((x_83 < (x_84 + 1))) {
+        {
+          int const x_110 = j;
+          j = (x_110 + 1);
+        }
+        continue;
+      }
+      int const x_89 = i_1;
+      int const x_90 = j;
+      float const x_92 = data.arr[x_89];
+      param = x_92;
+      float const x_94 = data.arr[x_90];
+      param_1 = x_94;
+      bool const x_95 = checkSwap_f1_f1_(x_9, &(param), &(param_1), tint_symbol_6);
+      doSwap = x_95;
+      bool const x_96 = doSwap;
+      if (x_96) {
+        int const x_99 = i_1;
+        float const x_101 = data.arr[x_99];
+        temp = x_101;
+        int const x_102 = i_1;
+        int const x_103 = j;
+        float const x_105 = data.arr[x_103];
+        data.arr[x_102] = x_105;
+        int const x_107 = j;
+        float const x_108 = temp;
+        data.arr[x_107] = x_108;
+      }
+      {
+        int const x_110 = j;
+        j = (x_110 + 1);
+      }
+    }
+    {
+      int const x_112 = i_1;
+      i_1 = (x_112 + 1);
+    }
+  }
+  float const x_115 = (*(tint_symbol_6)).x;
+  float const x_117 = x_9.resolution.x;
+  if ((x_115 < (x_117 / 2.0f))) {
+    float const x_124 = data.arr[0];
+    float const x_127 = data.arr[5];
+    float const x_130 = data.arr[9];
+    *(tint_symbol_7) = float4((x_124 / 10.0f), (x_127 / 10.0f), (x_130 / 10.0f), 1.0f);
+  } else {
+    float const x_134 = data.arr[5];
+    float const x_137 = data.arr[9];
+    float const x_140 = data.arr[0];
+    *(tint_symbol_7) = float4((x_134 / 10.0f), (x_137 / 10.0f), (x_140 / 10.0f), 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_13, x_9, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..d4767b3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.spvasm
@@ -0,0 +1,305 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 193
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_9 "x_9"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %checkSwap_f1_f1_ "checkSwap_f1_f1_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_144 "x_144"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %i_1 "i_1"
+               OpName %j "j"
+               OpName %doSwap "doSwap"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %temp "temp"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %bool %_ptr_Function_float %_ptr_Function_float
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+       %void = OpTypeVoid
+         %54 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %61 = OpConstantNull %int
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+         %66 = OpConstantNull %_arr_float_uint_10
+         %71 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+   %float_10 = OpConstant %float 10
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %180 = OpTypeFunction %void %main_out
+%checkSwap_f1_f1_ = OpFunction %bool None %18
+          %a = OpFunctionParameter %_ptr_Function_float
+          %b = OpFunctionParameter %_ptr_Function_float
+         %24 = OpLabel
+      %x_144 = OpVariable %_ptr_Function_bool Function %27
+         %31 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %32 = OpLoad %float %31
+         %35 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %36 = OpLoad %float %35
+         %38 = OpFDiv %float %36 %float_2
+         %39 = OpFOrdLessThan %bool %32 %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %42
+         %41 = OpLabel
+         %44 = OpLoad %float %a
+         %46 = OpLoad %float %b
+         %47 = OpFOrdGreaterThan %bool %44 %46
+               OpStore %x_144 %47
+               OpBranch %40
+         %42 = OpLabel
+         %49 = OpLoad %float %a
+         %51 = OpLoad %float %b
+         %52 = OpFOrdLessThan %bool %49 %51
+               OpStore %x_144 %52
+               OpBranch %40
+         %40 = OpLabel
+         %53 = OpLoad %bool %x_144
+               OpReturnValue %53
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %54
+         %57 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %61
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %66
+        %i_1 = OpVariable %_ptr_Function_int Function %61
+          %j = OpVariable %_ptr_Function_int Function %61
+     %doSwap = OpVariable %_ptr_Function_bool Function %27
+      %param = OpVariable %_ptr_Function_float Function %71
+    %param_1 = OpVariable %_ptr_Function_float Function %71
+       %temp = OpVariable %_ptr_Function_float Function %71
+               OpStore %i %int_0
+               OpBranch %75
+         %75 = OpLabel
+               OpLoopMerge %76 %77 None
+               OpBranch %78
+         %78 = OpLabel
+         %79 = OpLoad %int %i
+         %81 = OpSLessThan %bool %79 %int_10
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+               OpBranch %82
+         %84 = OpLabel
+               OpBranch %76
+         %82 = OpLabel
+         %85 = OpLoad %int %i
+         %86 = OpLoad %int %i
+         %87 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_1
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Function_float %data %85
+         %91 = OpISub %int %int_10 %86
+         %90 = OpConvertSToF %float %91
+         %92 = OpFMul %float %90 %88
+               OpStore %89 %92
+               OpBranch %77
+         %77 = OpLabel
+         %93 = OpLoad %int %i
+         %95 = OpIAdd %int %93 %int_1
+               OpStore %i %95
+               OpBranch %75
+         %76 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %96
+         %96 = OpLabel
+               OpLoopMerge %97 %98 None
+               OpBranch %99
+         %99 = OpLabel
+        %100 = OpLoad %int %i_1
+        %102 = OpSLessThan %bool %100 %int_9
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+               OpBranch %103
+        %105 = OpLabel
+               OpBranch %97
+        %103 = OpLabel
+               OpStore %j %int_0
+               OpBranch %106
+        %106 = OpLabel
+               OpLoopMerge %107 %108 None
+               OpBranch %109
+        %109 = OpLabel
+        %110 = OpLoad %int %j
+        %111 = OpSLessThan %bool %110 %int_10
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %114
+        %113 = OpLabel
+               OpBranch %112
+        %114 = OpLabel
+               OpBranch %107
+        %112 = OpLabel
+        %115 = OpLoad %int %j
+        %116 = OpLoad %int %i_1
+        %117 = OpIAdd %int %116 %int_1
+        %118 = OpSLessThan %bool %115 %117
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpBranch %108
+        %119 = OpLabel
+        %121 = OpLoad %int %i_1
+        %122 = OpLoad %int %j
+        %123 = OpAccessChain %_ptr_Function_float %data %121
+        %124 = OpLoad %float %123
+               OpStore %param %124
+        %125 = OpAccessChain %_ptr_Function_float %data %122
+        %126 = OpLoad %float %125
+               OpStore %param_1 %126
+        %127 = OpFunctionCall %bool %checkSwap_f1_f1_ %param %param_1
+               OpStore %doSwap %127
+        %130 = OpLoad %bool %doSwap
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+        %133 = OpLoad %int %i_1
+        %134 = OpAccessChain %_ptr_Function_float %data %133
+        %135 = OpLoad %float %134
+               OpStore %temp %135
+        %136 = OpLoad %int %i_1
+        %137 = OpLoad %int %j
+        %138 = OpAccessChain %_ptr_Function_float %data %137
+        %139 = OpLoad %float %138
+        %140 = OpAccessChain %_ptr_Function_float %data %136
+               OpStore %140 %139
+        %141 = OpLoad %int %j
+        %142 = OpLoad %float %temp
+        %143 = OpAccessChain %_ptr_Function_float %data %141
+               OpStore %143 %142
+               OpBranch %131
+        %131 = OpLabel
+               OpBranch %108
+        %108 = OpLabel
+        %144 = OpLoad %int %j
+        %145 = OpIAdd %int %144 %int_1
+               OpStore %j %145
+               OpBranch %106
+        %107 = OpLabel
+               OpBranch %98
+         %98 = OpLabel
+        %146 = OpLoad %int %i_1
+        %147 = OpIAdd %int %146 %int_1
+               OpStore %i_1 %147
+               OpBranch %96
+         %97 = OpLabel
+        %148 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %149 = OpLoad %float %148
+        %150 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+        %151 = OpLoad %float %150
+        %152 = OpFDiv %float %151 %float_2
+        %153 = OpFOrdLessThan %bool %149 %152
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+        %157 = OpAccessChain %_ptr_Function_float %data %int_0
+        %158 = OpLoad %float %157
+        %160 = OpAccessChain %_ptr_Function_float %data %int_5
+        %161 = OpLoad %float %160
+        %162 = OpAccessChain %_ptr_Function_float %data %int_9
+        %163 = OpLoad %float %162
+        %165 = OpFDiv %float %158 %float_10
+        %166 = OpFDiv %float %161 %float_10
+        %167 = OpFDiv %float %163 %float_10
+        %169 = OpCompositeConstruct %v4float %165 %166 %167 %float_1
+               OpStore %x_GLF_color %169
+               OpBranch %154
+        %156 = OpLabel
+        %170 = OpAccessChain %_ptr_Function_float %data %int_5
+        %171 = OpLoad %float %170
+        %172 = OpAccessChain %_ptr_Function_float %data %int_9
+        %173 = OpLoad %float %172
+        %174 = OpAccessChain %_ptr_Function_float %data %int_0
+        %175 = OpLoad %float %174
+        %176 = OpFDiv %float %171 %float_10
+        %177 = OpFDiv %float %173 %float_10
+        %178 = OpFDiv %float %175 %float_10
+        %179 = OpCompositeConstruct %v4float %176 %177 %178 %float_1
+               OpStore %x_GLF_color %179
+               OpBranch %154
+        %154 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %180
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %184 = OpLabel
+        %185 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %185
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %54
+        %187 = OpLabel
+        %188 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %188
+        %189 = OpFunctionCall %void %main_1
+        %191 = OpLoad %v4float %x_GLF_color
+        %192 = OpCompositeConstruct %main_out %191
+        %190 = OpFunctionCall %void %tint_symbol_3 %192
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..9074163
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl.expected.wgsl
@@ -0,0 +1,140 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn checkSwap_f1_f1_(a : ptr<function, f32>, b : ptr<function, f32>) -> bool {
+  var x_144 : bool;
+  let x_146 : f32 = gl_FragCoord.y;
+  let x_148 : f32 = x_9.resolution.y;
+  if ((x_146 < (x_148 / 2.0))) {
+    let x_154 : f32 = *(a);
+    let x_155 : f32 = *(b);
+    x_144 = (x_154 > x_155);
+  } else {
+    let x_157 : f32 = *(a);
+    let x_158 : f32 = *(b);
+    x_144 = (x_157 < x_158);
+  }
+  let x_160 : bool = x_144;
+  return x_160;
+}
+
+fn main_1() {
+  var i : i32;
+  var data : array<f32, 10>;
+  var i_1 : i32;
+  var j : i32;
+  var doSwap : bool;
+  var param : f32;
+  var param_1 : f32;
+  var temp : f32;
+  i = 0;
+  loop {
+    let x_56 : i32 = i;
+    if ((x_56 < 10)) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = i;
+    let x_60 : i32 = i;
+    let x_64 : f32 = x_13.injectionSwitch.y;
+    data[x_59] = (f32((10 - x_60)) * x_64);
+
+    continuing {
+      let x_67 : i32 = i;
+      i = (x_67 + 1);
+    }
+  }
+  i_1 = 0;
+  loop {
+    let x_73 : i32 = i_1;
+    if ((x_73 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_80 : i32 = j;
+      if ((x_80 < 10)) {
+      } else {
+        break;
+      }
+      let x_83 : i32 = j;
+      let x_84 : i32 = i_1;
+      if ((x_83 < (x_84 + 1))) {
+        continue;
+      }
+      let x_89 : i32 = i_1;
+      let x_90 : i32 = j;
+      let x_92 : f32 = data[x_89];
+      param = x_92;
+      let x_94 : f32 = data[x_90];
+      param_1 = x_94;
+      let x_95 : bool = checkSwap_f1_f1_(&(param), &(param_1));
+      doSwap = x_95;
+      let x_96 : bool = doSwap;
+      if (x_96) {
+        let x_99 : i32 = i_1;
+        let x_101 : f32 = data[x_99];
+        temp = x_101;
+        let x_102 : i32 = i_1;
+        let x_103 : i32 = j;
+        let x_105 : f32 = data[x_103];
+        data[x_102] = x_105;
+        let x_107 : i32 = j;
+        let x_108 : f32 = temp;
+        data[x_107] = x_108;
+      }
+
+      continuing {
+        let x_110 : i32 = j;
+        j = (x_110 + 1);
+      }
+    }
+
+    continuing {
+      let x_112 : i32 = i_1;
+      i_1 = (x_112 + 1);
+    }
+  }
+  let x_115 : f32 = gl_FragCoord.x;
+  let x_117 : f32 = x_9.resolution.x;
+  if ((x_115 < (x_117 / 2.0))) {
+    let x_124 : f32 = data[0];
+    let x_127 : f32 = data[5];
+    let x_130 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_124 / 10.0), (x_127 / 10.0), (x_130 / 10.0), 1.0);
+  } else {
+    let x_134 : f32 = data[5];
+    let x_137 : f32 = data[9];
+    let x_140 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_134 / 10.0), (x_137 / 10.0), (x_140 / 10.0), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm
new file mode 100644
index 0000000..5b6120e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm
@@ -0,0 +1,305 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %checkSwap_f1_f1_ "checkSwap(f1;f1;"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %data "data"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %__0 ""
+               OpName %i_0 "i"
+               OpName %j "j"
+               OpName %doSwap "doSwap"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %temp "temp"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+       %bool = OpTypeBool
+         %25 = OpTypeFunction %bool %_ptr_Function_float %_ptr_Function_float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+%_ptr_Function_bool = OpTypePointer Function %bool
+%_ptr_Function_int = OpTypePointer Function %int
+     %int_10 = OpConstant %int 10
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+     %uint_0 = OpConstant %uint 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+   %float_10 = OpConstant %float 10
+      %int_5 = OpConstant %int 5
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %21
+         %54 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+     %doSwap = OpVariable %_ptr_Function_bool Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+       %temp = OpVariable %_ptr_Function_float Function
+               OpStore %i %int_0
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+         %59 = OpLoad %int %i
+         %60 = OpSLessThan %bool %59 %int_10
+               OpBranchConditional %60 %61 %56
+         %61 = OpLabel
+         %62 = OpLoad %int %i
+         %63 = OpLoad %int %i
+         %64 = OpISub %int %int_10 %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %67 = OpLoad %float %66
+         %68 = OpFMul %float %65 %67
+         %69 = OpAccessChain %_ptr_Function_float %data %62
+               OpStore %69 %68
+               OpBranch %57
+         %57 = OpLabel
+         %70 = OpLoad %int %i
+         %71 = OpIAdd %int %70 %int_1
+               OpStore %i %71
+               OpBranch %55
+         %56 = OpLabel
+               OpStore %i_0 %int_0
+               OpBranch %72
+         %72 = OpLabel
+               OpLoopMerge %73 %74 None
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpLoad %int %i_0
+         %77 = OpSLessThan %bool %76 %int_9
+               OpBranchConditional %77 %78 %73
+         %78 = OpLabel
+               OpStore %j %int_0
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %83 = OpLoad %int %j
+         %84 = OpSLessThan %bool %83 %int_10
+               OpBranchConditional %84 %85 %80
+         %85 = OpLabel
+         %86 = OpLoad %int %j
+         %87 = OpLoad %int %i_0
+         %88 = OpIAdd %int %87 %int_1
+         %89 = OpSLessThan %bool %86 %88
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+               OpBranch %81
+         %90 = OpLabel
+         %92 = OpLoad %int %i_0
+         %93 = OpLoad %int %j
+         %94 = OpAccessChain %_ptr_Function_float %data %92
+         %95 = OpLoad %float %94
+               OpStore %param %95
+         %96 = OpAccessChain %_ptr_Function_float %data %93
+         %97 = OpLoad %float %96
+               OpStore %param_0 %97
+         %98 = OpFunctionCall %bool %checkSwap_f1_f1_ %param %param_0
+               OpStore %doSwap %98
+         %99 = OpLoad %bool %doSwap
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %100
+        %101 = OpLabel
+        %102 = OpLoad %int %i_0
+        %103 = OpAccessChain %_ptr_Function_float %data %102
+        %104 = OpLoad %float %103
+               OpStore %temp %104
+        %105 = OpLoad %int %i_0
+        %106 = OpLoad %int %j
+        %107 = OpAccessChain %_ptr_Function_float %data %106
+        %108 = OpLoad %float %107
+        %109 = OpAccessChain %_ptr_Function_float %data %105
+               OpStore %109 %108
+        %110 = OpLoad %int %j
+        %111 = OpLoad %float %temp
+        %112 = OpAccessChain %_ptr_Function_float %data %110
+               OpStore %112 %111
+               OpBranch %100
+        %100 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+        %113 = OpLoad %int %j
+        %114 = OpIAdd %int %113 %int_1
+               OpStore %j %114
+               OpBranch %79
+         %80 = OpLabel
+               OpBranch %74
+         %74 = OpLabel
+        %115 = OpLoad %int %i_0
+        %116 = OpIAdd %int %115 %int_1
+               OpStore %i_0 %116
+               OpBranch %72
+         %73 = OpLabel
+        %117 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %120 = OpLoad %float %119
+        %121 = OpFDiv %float %120 %float_2
+        %122 = OpFOrdLessThan %bool %118 %121
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %125
+        %124 = OpLabel
+        %126 = OpAccessChain %_ptr_Function_float %data %int_0
+        %127 = OpLoad %float %126
+        %128 = OpFDiv %float %127 %float_10
+        %129 = OpAccessChain %_ptr_Function_float %data %int_5
+        %130 = OpLoad %float %129
+        %131 = OpFDiv %float %130 %float_10
+        %132 = OpAccessChain %_ptr_Function_float %data %int_9
+        %133 = OpLoad %float %132
+        %134 = OpFDiv %float %133 %float_10
+        %135 = OpCompositeConstruct %v4float %128 %131 %134 %float_1
+               OpStore %_GLF_color %135
+               OpBranch %123
+        %125 = OpLabel
+        %136 = OpAccessChain %_ptr_Function_float %data %int_5
+        %137 = OpLoad %float %136
+        %138 = OpFDiv %float %137 %float_10
+        %139 = OpAccessChain %_ptr_Function_float %data %int_9
+        %140 = OpLoad %float %139
+        %141 = OpFDiv %float %140 %float_10
+        %142 = OpAccessChain %_ptr_Function_float %data %int_0
+        %143 = OpLoad %float %142
+        %144 = OpFDiv %float %143 %float_10
+        %145 = OpCompositeConstruct %v4float %138 %141 %144 %float_1
+               OpStore %_GLF_color %145
+               OpBranch %123
+        %123 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%checkSwap_f1_f1_ = OpFunction %bool None %25
+          %a = OpFunctionParameter %_ptr_Function_float
+          %b = OpFunctionParameter %_ptr_Function_float
+        %146 = OpLabel
+        %147 = OpVariable %_ptr_Function_bool Function
+        %148 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %149 = OpLoad %float %148
+        %150 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %151 = OpLoad %float %150
+        %152 = OpFDiv %float %151 %float_2
+        %153 = OpFOrdLessThan %bool %149 %152
+               OpBranch %154
+        %154 = OpLabel
+               OpSelectionMerge %155 None
+               OpBranchConditional %153 %156 %157
+        %156 = OpLabel
+        %158 = OpLoad %float %a
+               OpBranch %155
+        %157 = OpLabel
+        %159 = OpCopyObject %float %float_0
+               OpBranch %155
+        %155 = OpLabel
+        %160 = OpPhi %float %158 %156 %159 %157
+               OpSelectionMerge %161 None
+               OpBranchConditional %false %162 %162
+        %162 = OpLabel
+               OpSelectionMerge %163 None
+               OpBranchConditional %153 %164 %165
+        %164 = OpLabel
+        %166 = OpLoad %float %b
+               OpBranch %163
+        %165 = OpLabel
+        %167 = OpCopyObject %float %float_0
+               OpBranch %163
+        %163 = OpLabel
+        %168 = OpPhi %float %166 %164 %167 %165
+        %169 = OpFOrdGreaterThan %bool %160 %168
+               OpBranch %170
+        %170 = OpLabel
+               OpSelectionMerge %171 None
+               OpBranchConditional %153 %172 %171
+        %172 = OpLabel
+               OpStore %147 %169
+               OpBranch %171
+        %171 = OpLabel
+               OpBranchConditional %true %173 %161
+        %173 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+               OpBranch %174
+        %174 = OpLabel
+               OpSelectionMerge %175 None
+               OpBranchConditional %153 %176 %177
+        %177 = OpLabel
+        %178 = OpLoad %float %a
+               OpBranch %175
+        %176 = OpLabel
+        %179 = OpCopyObject %float %float_0
+               OpBranch %175
+        %175 = OpLabel
+        %180 = OpPhi %float %178 %177 %179 %176
+               OpSelectionMerge %181 None
+               OpBranchConditional %153 %182 %183
+        %183 = OpLabel
+        %184 = OpLoad %float %b
+               OpBranch %181
+        %182 = OpLabel
+        %185 = OpCopyObject %float %float_0
+               OpBranch %181
+        %181 = OpLabel
+        %186 = OpPhi %float %184 %183 %185 %182
+        %187 = OpFOrdLessThan %bool %180 %186
+               OpSelectionMerge %188 None
+               OpBranchConditional %153 %188 %189
+        %189 = OpLabel
+               OpStore %147 %187
+               OpBranch %188
+        %188 = OpLabel
+               OpBranch %190
+        %190 = OpLabel
+        %191 = OpLoad %bool %147
+               OpReturnValue %191
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..8afa23d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.hlsl
@@ -0,0 +1,161 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+bool checkSwap_f1_f1_(inout float a, inout float b) {
+  bool x_147 = false;
+  float x_158 = 0.0f;
+  float x_159 = 0.0f;
+  float x_179 = 0.0f;
+  float x_178 = 0.0f;
+  float x_185 = 0.0f;
+  float x_184 = 0.0f;
+  float x_160_phi = 0.0f;
+  float x_180_phi = 0.0f;
+  float x_186_phi = 0.0f;
+  const float x_149 = gl_FragCoord.y;
+  const float x_151 = asfloat(x_9[0].y);
+  const bool x_153 = (x_149 < (x_151 / 2.0f));
+  if (x_153) {
+    x_158 = a;
+    x_160_phi = x_158;
+  } else {
+    x_159 = 0.0f;
+    x_160_phi = x_159;
+  }
+  float x_166 = 0.0f;
+  float x_167 = 0.0f;
+  float x_168_phi = 0.0f;
+  const float x_160 = x_160_phi;
+  bool guard155 = true;
+  if (false) {
+  } else {
+    if (guard155) {
+      if (x_153) {
+        x_166 = b;
+        x_168_phi = x_166;
+      } else {
+        x_167 = 0.0f;
+        x_168_phi = x_167;
+      }
+      const bool x_169 = (x_160 > x_168_phi);
+      if (x_153) {
+        x_147 = x_169;
+      }
+      if (true) {
+      } else {
+        guard155 = false;
+      }
+      if (guard155) {
+        guard155 = false;
+      }
+    }
+  }
+  if (x_153) {
+    x_179 = 0.0f;
+    x_180_phi = x_179;
+  } else {
+    x_178 = a;
+    x_180_phi = x_178;
+  }
+  const float x_180 = x_180_phi;
+  if (x_153) {
+    x_185 = 0.0f;
+    x_186_phi = x_185;
+  } else {
+    x_184 = b;
+    x_186_phi = x_184;
+  }
+  const float x_186 = x_186_phi;
+  if (x_153) {
+  } else {
+    x_147 = (x_180 < x_186);
+  }
+  return x_147;
+}
+
+void main_1() {
+  int i = 0;
+  float data[10] = (float[10])0;
+  int i_1 = 0;
+  int j = 0;
+  bool doSwap = false;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float temp = 0.0f;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      const int x_62 = i;
+      const int x_63 = i;
+      const float x_67 = asfloat(x_13[0].y);
+      data[x_62] = (float((10 - x_63)) * x_67);
+    }
+  }
+  i_1 = 0;
+  {
+    for(; (i_1 < 9); i_1 = (i_1 + 1)) {
+      j = 0;
+      {
+        for(; (j < 10); j = (j + 1)) {
+          if ((j < (i_1 + 1))) {
+            continue;
+          }
+          const int x_93 = j;
+          const float x_95 = data[i_1];
+          param = x_95;
+          const float x_97 = data[x_93];
+          param_1 = x_97;
+          const bool x_98 = checkSwap_f1_f1_(param, param_1);
+          doSwap = x_98;
+          if (doSwap) {
+            const float x_104 = data[i_1];
+            temp = x_104;
+            const int x_105 = i_1;
+            const float x_108 = data[j];
+            data[x_105] = x_108;
+            data[j] = temp;
+          }
+        }
+      }
+    }
+  }
+  const float x_118 = gl_FragCoord.x;
+  const float x_120 = asfloat(x_9[0].x);
+  if ((x_118 < (x_120 / 2.0f))) {
+    const float x_127 = data[0];
+    const float x_130 = data[5];
+    const float x_133 = data[9];
+    x_GLF_color = float4((x_127 / 10.0f), (x_130 / 10.0f), (x_133 / 10.0f), 1.0f);
+  } else {
+    const float x_137 = data[5];
+    const float x_140 = data[9];
+    const float x_143 = data[0];
+    x_GLF_color = float4((x_137 / 10.0f), (x_140 / 10.0f), (x_143 / 10.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.msl
new file mode 100644
index 0000000..3475e45
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.msl
@@ -0,0 +1,198 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool checkSwap_f1_f1_(constant buf1& x_9, thread float* const a, thread float* const b, thread float4* const tint_symbol_5) {
+  bool x_147 = false;
+  float x_158 = 0.0f;
+  float x_159 = 0.0f;
+  float x_179 = 0.0f;
+  float x_178 = 0.0f;
+  float x_185 = 0.0f;
+  float x_184 = 0.0f;
+  float x_160_phi = 0.0f;
+  float x_180_phi = 0.0f;
+  float x_186_phi = 0.0f;
+  float const x_149 = (*(tint_symbol_5)).y;
+  float const x_151 = x_9.resolution.y;
+  bool const x_153 = (x_149 < (x_151 / 2.0f));
+  if (x_153) {
+    x_158 = *(a);
+    x_160_phi = x_158;
+  } else {
+    x_159 = 0.0f;
+    x_160_phi = x_159;
+  }
+  float x_166 = 0.0f;
+  float x_167 = 0.0f;
+  float x_168_phi = 0.0f;
+  float const x_160 = x_160_phi;
+  bool guard155 = true;
+  if (false) {
+  } else {
+    if (guard155) {
+      if (x_153) {
+        x_166 = *(b);
+        x_168_phi = x_166;
+      } else {
+        x_167 = 0.0f;
+        x_168_phi = x_167;
+      }
+      float const x_168 = x_168_phi;
+      bool const x_169 = (x_160 > x_168);
+      if (x_153) {
+        x_147 = x_169;
+      }
+      if (true) {
+      } else {
+        guard155 = false;
+      }
+      if (guard155) {
+        guard155 = false;
+      }
+    }
+  }
+  if (x_153) {
+    x_179 = 0.0f;
+    x_180_phi = x_179;
+  } else {
+    x_178 = *(a);
+    x_180_phi = x_178;
+  }
+  float const x_180 = x_180_phi;
+  if (x_153) {
+    x_185 = 0.0f;
+    x_186_phi = x_185;
+  } else {
+    x_184 = *(b);
+    x_186_phi = x_184;
+  }
+  float const x_186 = x_186_phi;
+  if (x_153) {
+  } else {
+    x_147 = (x_180 < x_186);
+  }
+  bool const x_191 = x_147;
+  return x_191;
+}
+
+void main_1(constant buf0& x_13, constant buf1& x_9, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int i = 0;
+  tint_array_wrapper data = {};
+  int i_1 = 0;
+  int j = 0;
+  bool doSwap = false;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float temp = 0.0f;
+  i = 0;
+  while (true) {
+    int const x_59 = i;
+    if ((x_59 < 10)) {
+    } else {
+      break;
+    }
+    int const x_62 = i;
+    int const x_63 = i;
+    float const x_67 = x_13.injectionSwitch.y;
+    data.arr[x_62] = (float((10 - x_63)) * x_67);
+    {
+      int const x_70 = i;
+      i = (x_70 + 1);
+    }
+  }
+  i_1 = 0;
+  while (true) {
+    int const x_76 = i_1;
+    if ((x_76 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      int const x_83 = j;
+      if ((x_83 < 10)) {
+      } else {
+        break;
+      }
+      int const x_86 = j;
+      int const x_87 = i_1;
+      if ((x_86 < (x_87 + 1))) {
+        {
+          int const x_113 = j;
+          j = (x_113 + 1);
+        }
+        continue;
+      }
+      int const x_92 = i_1;
+      int const x_93 = j;
+      float const x_95 = data.arr[x_92];
+      param = x_95;
+      float const x_97 = data.arr[x_93];
+      param_1 = x_97;
+      bool const x_98 = checkSwap_f1_f1_(x_9, &(param), &(param_1), tint_symbol_6);
+      doSwap = x_98;
+      bool const x_99 = doSwap;
+      if (x_99) {
+        int const x_102 = i_1;
+        float const x_104 = data.arr[x_102];
+        temp = x_104;
+        int const x_105 = i_1;
+        int const x_106 = j;
+        float const x_108 = data.arr[x_106];
+        data.arr[x_105] = x_108;
+        int const x_110 = j;
+        float const x_111 = temp;
+        data.arr[x_110] = x_111;
+      }
+      {
+        int const x_113 = j;
+        j = (x_113 + 1);
+      }
+    }
+    {
+      int const x_115 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  float const x_118 = (*(tint_symbol_6)).x;
+  float const x_120 = x_9.resolution.x;
+  if ((x_118 < (x_120 / 2.0f))) {
+    float const x_127 = data.arr[0];
+    float const x_130 = data.arr[5];
+    float const x_133 = data.arr[9];
+    *(tint_symbol_7) = float4((x_127 / 10.0f), (x_130 / 10.0f), (x_133 / 10.0f), 1.0f);
+  } else {
+    float const x_137 = data.arr[5];
+    float const x_140 = data.arr[9];
+    float const x_143 = data.arr[0];
+    *(tint_symbol_7) = float4((x_137 / 10.0f), (x_140 / 10.0f), (x_143 / 10.0f), 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_13, x_9, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..75d9c10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.spvasm
@@ -0,0 +1,424 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 247
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_9 "x_9"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %checkSwap_f1_f1_ "checkSwap_f1_f1_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_147 "x_147"
+               OpName %x_158 "x_158"
+               OpName %x_159 "x_159"
+               OpName %x_179 "x_179"
+               OpName %x_178 "x_178"
+               OpName %x_185 "x_185"
+               OpName %x_184 "x_184"
+               OpName %x_160_phi "x_160_phi"
+               OpName %x_180_phi "x_180_phi"
+               OpName %x_186_phi "x_186_phi"
+               OpName %x_166 "x_166"
+               OpName %x_167 "x_167"
+               OpName %x_168_phi "x_168_phi"
+               OpName %guard155 "guard155"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %i_1 "i_1"
+               OpName %j "j"
+               OpName %doSwap "doSwap"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %temp "temp"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %bool %_ptr_Function_float %_ptr_Function_float
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+         %29 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+       %void = OpTypeVoid
+        %109 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+        %116 = OpConstantNull %int
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+        %121 = OpConstantNull %_arr_float_uint_10
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+   %float_10 = OpConstant %float 10
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %234 = OpTypeFunction %void %main_out
+%checkSwap_f1_f1_ = OpFunction %bool None %18
+          %a = OpFunctionParameter %_ptr_Function_float
+          %b = OpFunctionParameter %_ptr_Function_float
+         %24 = OpLabel
+      %x_147 = OpVariable %_ptr_Function_bool Function %27
+      %x_158 = OpVariable %_ptr_Function_float Function %29
+      %x_159 = OpVariable %_ptr_Function_float Function %29
+      %x_179 = OpVariable %_ptr_Function_float Function %29
+      %x_178 = OpVariable %_ptr_Function_float Function %29
+      %x_185 = OpVariable %_ptr_Function_float Function %29
+      %x_184 = OpVariable %_ptr_Function_float Function %29
+  %x_160_phi = OpVariable %_ptr_Function_float Function %29
+  %x_180_phi = OpVariable %_ptr_Function_float Function %29
+  %x_186_phi = OpVariable %_ptr_Function_float Function %29
+      %x_166 = OpVariable %_ptr_Function_float Function %29
+      %x_167 = OpVariable %_ptr_Function_float Function %29
+  %x_168_phi = OpVariable %_ptr_Function_float Function %29
+   %guard155 = OpVariable %_ptr_Function_bool Function %27
+         %41 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %42 = OpLoad %float %41
+         %45 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %46 = OpLoad %float %45
+         %48 = OpFDiv %float %46 %float_2
+         %49 = OpFOrdLessThan %bool %42 %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+         %54 = OpLoad %float %a
+               OpStore %x_158 %54
+         %55 = OpLoad %float %x_158
+               OpStore %x_160_phi %55
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_159 %float_0
+         %57 = OpLoad %float %x_159
+               OpStore %x_160_phi %57
+               OpBranch %50
+         %50 = OpLabel
+         %61 = OpLoad %float %x_160_phi
+               OpStore %guard155 %true
+               OpSelectionMerge %65 None
+               OpBranchConditional %false %66 %67
+         %66 = OpLabel
+               OpBranch %65
+         %67 = OpLabel
+         %68 = OpLoad %bool %guard155
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+               OpSelectionMerge %71 None
+               OpBranchConditional %49 %72 %73
+         %72 = OpLabel
+         %75 = OpLoad %float %b
+               OpStore %x_166 %75
+         %76 = OpLoad %float %x_166
+               OpStore %x_168_phi %76
+               OpBranch %71
+         %73 = OpLabel
+               OpStore %x_167 %float_0
+         %77 = OpLoad %float %x_167
+               OpStore %x_168_phi %77
+               OpBranch %71
+         %71 = OpLabel
+         %78 = OpLoad %float %x_168_phi
+         %79 = OpFOrdGreaterThan %bool %61 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %49 %81 %80
+         %81 = OpLabel
+               OpStore %x_147 %79
+               OpBranch %80
+         %80 = OpLabel
+               OpSelectionMerge %82 None
+               OpBranchConditional %true %83 %84
+         %83 = OpLabel
+               OpBranch %82
+         %84 = OpLabel
+               OpStore %guard155 %false
+               OpBranch %82
+         %82 = OpLabel
+         %85 = OpLoad %bool %guard155
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+               OpStore %guard155 %false
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpSelectionMerge %88 None
+               OpBranchConditional %49 %89 %90
+         %89 = OpLabel
+               OpStore %x_179 %float_0
+         %91 = OpLoad %float %x_179
+               OpStore %x_180_phi %91
+               OpBranch %88
+         %90 = OpLabel
+         %93 = OpLoad %float %a
+               OpStore %x_178 %93
+         %94 = OpLoad %float %x_178
+               OpStore %x_180_phi %94
+               OpBranch %88
+         %88 = OpLabel
+         %95 = OpLoad %float %x_180_phi
+               OpSelectionMerge %96 None
+               OpBranchConditional %49 %97 %98
+         %97 = OpLabel
+               OpStore %x_185 %float_0
+         %99 = OpLoad %float %x_185
+               OpStore %x_186_phi %99
+               OpBranch %96
+         %98 = OpLabel
+        %101 = OpLoad %float %b
+               OpStore %x_184 %101
+        %102 = OpLoad %float %x_184
+               OpStore %x_186_phi %102
+               OpBranch %96
+         %96 = OpLabel
+        %103 = OpLoad %float %x_186_phi
+               OpSelectionMerge %104 None
+               OpBranchConditional %49 %105 %106
+        %105 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+        %107 = OpFOrdLessThan %bool %95 %103
+               OpStore %x_147 %107
+               OpBranch %104
+        %104 = OpLabel
+        %108 = OpLoad %bool %x_147
+               OpReturnValue %108
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %109
+        %112 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %116
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %121
+        %i_1 = OpVariable %_ptr_Function_int Function %116
+          %j = OpVariable %_ptr_Function_int Function %116
+     %doSwap = OpVariable %_ptr_Function_bool Function %27
+      %param = OpVariable %_ptr_Function_float Function %29
+    %param_1 = OpVariable %_ptr_Function_float Function %29
+       %temp = OpVariable %_ptr_Function_float Function %29
+               OpStore %i %int_0
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %i
+        %135 = OpSLessThan %bool %133 %int_10
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %138
+        %137 = OpLabel
+               OpBranch %136
+        %138 = OpLabel
+               OpBranch %130
+        %136 = OpLabel
+        %139 = OpLoad %int %i
+        %140 = OpLoad %int %i
+        %141 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_1
+        %142 = OpLoad %float %141
+        %143 = OpAccessChain %_ptr_Function_float %data %139
+        %145 = OpISub %int %int_10 %140
+        %144 = OpConvertSToF %float %145
+        %146 = OpFMul %float %144 %142
+               OpStore %143 %146
+               OpBranch %131
+        %131 = OpLabel
+        %147 = OpLoad %int %i
+        %149 = OpIAdd %int %147 %int_1
+               OpStore %i %149
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %154 = OpLoad %int %i_1
+        %156 = OpSLessThan %bool %154 %int_9
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %151
+        %157 = OpLabel
+               OpStore %j %int_0
+               OpBranch %160
+        %160 = OpLabel
+               OpLoopMerge %161 %162 None
+               OpBranch %163
+        %163 = OpLabel
+        %164 = OpLoad %int %j
+        %165 = OpSLessThan %bool %164 %int_10
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %168
+        %167 = OpLabel
+               OpBranch %166
+        %168 = OpLabel
+               OpBranch %161
+        %166 = OpLabel
+        %169 = OpLoad %int %j
+        %170 = OpLoad %int %i_1
+        %171 = OpIAdd %int %170 %int_1
+        %172 = OpSLessThan %bool %169 %171
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+               OpBranch %162
+        %173 = OpLabel
+        %175 = OpLoad %int %i_1
+        %176 = OpLoad %int %j
+        %177 = OpAccessChain %_ptr_Function_float %data %175
+        %178 = OpLoad %float %177
+               OpStore %param %178
+        %179 = OpAccessChain %_ptr_Function_float %data %176
+        %180 = OpLoad %float %179
+               OpStore %param_1 %180
+        %181 = OpFunctionCall %bool %checkSwap_f1_f1_ %param %param_1
+               OpStore %doSwap %181
+        %184 = OpLoad %bool %doSwap
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %185
+        %186 = OpLabel
+        %187 = OpLoad %int %i_1
+        %188 = OpAccessChain %_ptr_Function_float %data %187
+        %189 = OpLoad %float %188
+               OpStore %temp %189
+        %190 = OpLoad %int %i_1
+        %191 = OpLoad %int %j
+        %192 = OpAccessChain %_ptr_Function_float %data %191
+        %193 = OpLoad %float %192
+        %194 = OpAccessChain %_ptr_Function_float %data %190
+               OpStore %194 %193
+        %195 = OpLoad %int %j
+        %196 = OpLoad %float %temp
+        %197 = OpAccessChain %_ptr_Function_float %data %195
+               OpStore %197 %196
+               OpBranch %185
+        %185 = OpLabel
+               OpBranch %162
+        %162 = OpLabel
+        %198 = OpLoad %int %j
+        %199 = OpIAdd %int %198 %int_1
+               OpStore %j %199
+               OpBranch %160
+        %161 = OpLabel
+               OpBranch %152
+        %152 = OpLabel
+        %200 = OpLoad %int %i_1
+        %201 = OpIAdd %int %200 %int_1
+               OpStore %i_1 %201
+               OpBranch %150
+        %151 = OpLabel
+        %202 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %203 = OpLoad %float %202
+        %204 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+        %205 = OpLoad %float %204
+        %206 = OpFDiv %float %205 %float_2
+        %207 = OpFOrdLessThan %bool %203 %206
+               OpSelectionMerge %208 None
+               OpBranchConditional %207 %209 %210
+        %209 = OpLabel
+        %211 = OpAccessChain %_ptr_Function_float %data %int_0
+        %212 = OpLoad %float %211
+        %214 = OpAccessChain %_ptr_Function_float %data %int_5
+        %215 = OpLoad %float %214
+        %216 = OpAccessChain %_ptr_Function_float %data %int_9
+        %217 = OpLoad %float %216
+        %219 = OpFDiv %float %212 %float_10
+        %220 = OpFDiv %float %215 %float_10
+        %221 = OpFDiv %float %217 %float_10
+        %223 = OpCompositeConstruct %v4float %219 %220 %221 %float_1
+               OpStore %x_GLF_color %223
+               OpBranch %208
+        %210 = OpLabel
+        %224 = OpAccessChain %_ptr_Function_float %data %int_5
+        %225 = OpLoad %float %224
+        %226 = OpAccessChain %_ptr_Function_float %data %int_9
+        %227 = OpLoad %float %226
+        %228 = OpAccessChain %_ptr_Function_float %data %int_0
+        %229 = OpLoad %float %228
+        %230 = OpFDiv %float %225 %float_10
+        %231 = OpFDiv %float %227 %float_10
+        %232 = OpFDiv %float %229 %float_10
+        %233 = OpCompositeConstruct %v4float %230 %231 %232 %float_1
+               OpStore %x_GLF_color %233
+               OpBranch %208
+        %208 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %234
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %238 = OpLabel
+        %239 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %239
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %109
+        %241 = OpLabel
+        %242 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %242
+        %243 = OpFunctionCall %void %main_1
+        %245 = OpLoad %v4float %x_GLF_color
+        %246 = OpCompositeConstruct %main_out %245
+        %244 = OpFunctionCall %void %tint_symbol_3 %246
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..6e36ff77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.spvasm.expected.wgsl
@@ -0,0 +1,197 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn checkSwap_f1_f1_(a : ptr<function, f32>, b : ptr<function, f32>) -> bool {
+  var x_147 : bool;
+  var x_158 : f32;
+  var x_159 : f32;
+  var x_179 : f32;
+  var x_178 : f32;
+  var x_185 : f32;
+  var x_184 : f32;
+  var x_160_phi : f32;
+  var x_180_phi : f32;
+  var x_186_phi : f32;
+  let x_149 : f32 = gl_FragCoord.y;
+  let x_151 : f32 = x_9.resolution.y;
+  let x_153 : bool = (x_149 < (x_151 / 2.0));
+  if (x_153) {
+    x_158 = *(a);
+    x_160_phi = x_158;
+  } else {
+    x_159 = 0.0;
+    x_160_phi = x_159;
+  }
+  var x_166 : f32;
+  var x_167 : f32;
+  var x_168_phi : f32;
+  let x_160 : f32 = x_160_phi;
+  var guard155 : bool = true;
+  if (false) {
+  } else {
+    if (guard155) {
+      if (x_153) {
+        x_166 = *(b);
+        x_168_phi = x_166;
+      } else {
+        x_167 = 0.0;
+        x_168_phi = x_167;
+      }
+      let x_168 : f32 = x_168_phi;
+      let x_169 : bool = (x_160 > x_168);
+      if (x_153) {
+        x_147 = x_169;
+      }
+      if (true) {
+      } else {
+        guard155 = false;
+      }
+      if (guard155) {
+        guard155 = false;
+      }
+    }
+  }
+  if (x_153) {
+    x_179 = 0.0;
+    x_180_phi = x_179;
+  } else {
+    x_178 = *(a);
+    x_180_phi = x_178;
+  }
+  let x_180 : f32 = x_180_phi;
+  if (x_153) {
+    x_185 = 0.0;
+    x_186_phi = x_185;
+  } else {
+    x_184 = *(b);
+    x_186_phi = x_184;
+  }
+  let x_186 : f32 = x_186_phi;
+  if (x_153) {
+  } else {
+    x_147 = (x_180 < x_186);
+  }
+  let x_191 : bool = x_147;
+  return x_191;
+}
+
+fn main_1() {
+  var i : i32;
+  var data : array<f32, 10>;
+  var i_1 : i32;
+  var j : i32;
+  var doSwap : bool;
+  var param : f32;
+  var param_1 : f32;
+  var temp : f32;
+  i = 0;
+  loop {
+    let x_59 : i32 = i;
+    if ((x_59 < 10)) {
+    } else {
+      break;
+    }
+    let x_62 : i32 = i;
+    let x_63 : i32 = i;
+    let x_67 : f32 = x_13.injectionSwitch.y;
+    data[x_62] = (f32((10 - x_63)) * x_67);
+
+    continuing {
+      let x_70 : i32 = i;
+      i = (x_70 + 1);
+    }
+  }
+  i_1 = 0;
+  loop {
+    let x_76 : i32 = i_1;
+    if ((x_76 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_83 : i32 = j;
+      if ((x_83 < 10)) {
+      } else {
+        break;
+      }
+      let x_86 : i32 = j;
+      let x_87 : i32 = i_1;
+      if ((x_86 < (x_87 + 1))) {
+        continue;
+      }
+      let x_92 : i32 = i_1;
+      let x_93 : i32 = j;
+      let x_95 : f32 = data[x_92];
+      param = x_95;
+      let x_97 : f32 = data[x_93];
+      param_1 = x_97;
+      let x_98 : bool = checkSwap_f1_f1_(&(param), &(param_1));
+      doSwap = x_98;
+      let x_99 : bool = doSwap;
+      if (x_99) {
+        let x_102 : i32 = i_1;
+        let x_104 : f32 = data[x_102];
+        temp = x_104;
+        let x_105 : i32 = i_1;
+        let x_106 : i32 = j;
+        let x_108 : f32 = data[x_106];
+        data[x_105] = x_108;
+        let x_110 : i32 = j;
+        let x_111 : f32 = temp;
+        data[x_110] = x_111;
+      }
+
+      continuing {
+        let x_113 : i32 = j;
+        j = (x_113 + 1);
+      }
+    }
+
+    continuing {
+      let x_115 : i32 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  let x_118 : f32 = gl_FragCoord.x;
+  let x_120 : f32 = x_9.resolution.x;
+  if ((x_118 < (x_120 / 2.0))) {
+    let x_127 : f32 = data[0];
+    let x_130 : f32 = data[5];
+    let x_133 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_127 / 10.0), (x_130 / 10.0), (x_133 / 10.0), 1.0);
+  } else {
+    let x_137 : f32 = data[5];
+    let x_140 : f32 = data[9];
+    let x_143 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_137 / 10.0), (x_140 / 10.0), (x_143 / 10.0), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
new file mode 100644
index 0000000..6e36ff77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
@@ -0,0 +1,197 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn checkSwap_f1_f1_(a : ptr<function, f32>, b : ptr<function, f32>) -> bool {
+  var x_147 : bool;
+  var x_158 : f32;
+  var x_159 : f32;
+  var x_179 : f32;
+  var x_178 : f32;
+  var x_185 : f32;
+  var x_184 : f32;
+  var x_160_phi : f32;
+  var x_180_phi : f32;
+  var x_186_phi : f32;
+  let x_149 : f32 = gl_FragCoord.y;
+  let x_151 : f32 = x_9.resolution.y;
+  let x_153 : bool = (x_149 < (x_151 / 2.0));
+  if (x_153) {
+    x_158 = *(a);
+    x_160_phi = x_158;
+  } else {
+    x_159 = 0.0;
+    x_160_phi = x_159;
+  }
+  var x_166 : f32;
+  var x_167 : f32;
+  var x_168_phi : f32;
+  let x_160 : f32 = x_160_phi;
+  var guard155 : bool = true;
+  if (false) {
+  } else {
+    if (guard155) {
+      if (x_153) {
+        x_166 = *(b);
+        x_168_phi = x_166;
+      } else {
+        x_167 = 0.0;
+        x_168_phi = x_167;
+      }
+      let x_168 : f32 = x_168_phi;
+      let x_169 : bool = (x_160 > x_168);
+      if (x_153) {
+        x_147 = x_169;
+      }
+      if (true) {
+      } else {
+        guard155 = false;
+      }
+      if (guard155) {
+        guard155 = false;
+      }
+    }
+  }
+  if (x_153) {
+    x_179 = 0.0;
+    x_180_phi = x_179;
+  } else {
+    x_178 = *(a);
+    x_180_phi = x_178;
+  }
+  let x_180 : f32 = x_180_phi;
+  if (x_153) {
+    x_185 = 0.0;
+    x_186_phi = x_185;
+  } else {
+    x_184 = *(b);
+    x_186_phi = x_184;
+  }
+  let x_186 : f32 = x_186_phi;
+  if (x_153) {
+  } else {
+    x_147 = (x_180 < x_186);
+  }
+  let x_191 : bool = x_147;
+  return x_191;
+}
+
+fn main_1() {
+  var i : i32;
+  var data : array<f32, 10>;
+  var i_1 : i32;
+  var j : i32;
+  var doSwap : bool;
+  var param : f32;
+  var param_1 : f32;
+  var temp : f32;
+  i = 0;
+  loop {
+    let x_59 : i32 = i;
+    if ((x_59 < 10)) {
+    } else {
+      break;
+    }
+    let x_62 : i32 = i;
+    let x_63 : i32 = i;
+    let x_67 : f32 = x_13.injectionSwitch.y;
+    data[x_62] = (f32((10 - x_63)) * x_67);
+
+    continuing {
+      let x_70 : i32 = i;
+      i = (x_70 + 1);
+    }
+  }
+  i_1 = 0;
+  loop {
+    let x_76 : i32 = i_1;
+    if ((x_76 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_83 : i32 = j;
+      if ((x_83 < 10)) {
+      } else {
+        break;
+      }
+      let x_86 : i32 = j;
+      let x_87 : i32 = i_1;
+      if ((x_86 < (x_87 + 1))) {
+        continue;
+      }
+      let x_92 : i32 = i_1;
+      let x_93 : i32 = j;
+      let x_95 : f32 = data[x_92];
+      param = x_95;
+      let x_97 : f32 = data[x_93];
+      param_1 = x_97;
+      let x_98 : bool = checkSwap_f1_f1_(&(param), &(param_1));
+      doSwap = x_98;
+      let x_99 : bool = doSwap;
+      if (x_99) {
+        let x_102 : i32 = i_1;
+        let x_104 : f32 = data[x_102];
+        temp = x_104;
+        let x_105 : i32 = i_1;
+        let x_106 : i32 = j;
+        let x_108 : f32 = data[x_106];
+        data[x_105] = x_108;
+        let x_110 : i32 = j;
+        let x_111 : f32 = temp;
+        data[x_110] = x_111;
+      }
+
+      continuing {
+        let x_113 : i32 = j;
+        j = (x_113 + 1);
+      }
+    }
+
+    continuing {
+      let x_115 : i32 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  let x_118 : f32 = gl_FragCoord.x;
+  let x_120 : f32 = x_9.resolution.x;
+  if ((x_118 < (x_120 / 2.0))) {
+    let x_127 : f32 = data[0];
+    let x_130 : f32 = data[5];
+    let x_133 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_127 / 10.0), (x_130 / 10.0), (x_133 / 10.0), 1.0);
+  } else {
+    let x_137 : f32 = data[5];
+    let x_140 : f32 = data[9];
+    let x_143 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_137 / 10.0), (x_140 / 10.0), (x_143 / 10.0), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..8afa23d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.hlsl
@@ -0,0 +1,161 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+bool checkSwap_f1_f1_(inout float a, inout float b) {
+  bool x_147 = false;
+  float x_158 = 0.0f;
+  float x_159 = 0.0f;
+  float x_179 = 0.0f;
+  float x_178 = 0.0f;
+  float x_185 = 0.0f;
+  float x_184 = 0.0f;
+  float x_160_phi = 0.0f;
+  float x_180_phi = 0.0f;
+  float x_186_phi = 0.0f;
+  const float x_149 = gl_FragCoord.y;
+  const float x_151 = asfloat(x_9[0].y);
+  const bool x_153 = (x_149 < (x_151 / 2.0f));
+  if (x_153) {
+    x_158 = a;
+    x_160_phi = x_158;
+  } else {
+    x_159 = 0.0f;
+    x_160_phi = x_159;
+  }
+  float x_166 = 0.0f;
+  float x_167 = 0.0f;
+  float x_168_phi = 0.0f;
+  const float x_160 = x_160_phi;
+  bool guard155 = true;
+  if (false) {
+  } else {
+    if (guard155) {
+      if (x_153) {
+        x_166 = b;
+        x_168_phi = x_166;
+      } else {
+        x_167 = 0.0f;
+        x_168_phi = x_167;
+      }
+      const bool x_169 = (x_160 > x_168_phi);
+      if (x_153) {
+        x_147 = x_169;
+      }
+      if (true) {
+      } else {
+        guard155 = false;
+      }
+      if (guard155) {
+        guard155 = false;
+      }
+    }
+  }
+  if (x_153) {
+    x_179 = 0.0f;
+    x_180_phi = x_179;
+  } else {
+    x_178 = a;
+    x_180_phi = x_178;
+  }
+  const float x_180 = x_180_phi;
+  if (x_153) {
+    x_185 = 0.0f;
+    x_186_phi = x_185;
+  } else {
+    x_184 = b;
+    x_186_phi = x_184;
+  }
+  const float x_186 = x_186_phi;
+  if (x_153) {
+  } else {
+    x_147 = (x_180 < x_186);
+  }
+  return x_147;
+}
+
+void main_1() {
+  int i = 0;
+  float data[10] = (float[10])0;
+  int i_1 = 0;
+  int j = 0;
+  bool doSwap = false;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float temp = 0.0f;
+  i = 0;
+  {
+    for(; (i < 10); i = (i + 1)) {
+      const int x_62 = i;
+      const int x_63 = i;
+      const float x_67 = asfloat(x_13[0].y);
+      data[x_62] = (float((10 - x_63)) * x_67);
+    }
+  }
+  i_1 = 0;
+  {
+    for(; (i_1 < 9); i_1 = (i_1 + 1)) {
+      j = 0;
+      {
+        for(; (j < 10); j = (j + 1)) {
+          if ((j < (i_1 + 1))) {
+            continue;
+          }
+          const int x_93 = j;
+          const float x_95 = data[i_1];
+          param = x_95;
+          const float x_97 = data[x_93];
+          param_1 = x_97;
+          const bool x_98 = checkSwap_f1_f1_(param, param_1);
+          doSwap = x_98;
+          if (doSwap) {
+            const float x_104 = data[i_1];
+            temp = x_104;
+            const int x_105 = i_1;
+            const float x_108 = data[j];
+            data[x_105] = x_108;
+            data[j] = temp;
+          }
+        }
+      }
+    }
+  }
+  const float x_118 = gl_FragCoord.x;
+  const float x_120 = asfloat(x_9[0].x);
+  if ((x_118 < (x_120 / 2.0f))) {
+    const float x_127 = data[0];
+    const float x_130 = data[5];
+    const float x_133 = data[9];
+    x_GLF_color = float4((x_127 / 10.0f), (x_130 / 10.0f), (x_133 / 10.0f), 1.0f);
+  } else {
+    const float x_137 = data[5];
+    const float x_140 = data[9];
+    const float x_143 = data[0];
+    x_GLF_color = float4((x_137 / 10.0f), (x_140 / 10.0f), (x_143 / 10.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.msl
new file mode 100644
index 0000000..3475e45
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.msl
@@ -0,0 +1,198 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool checkSwap_f1_f1_(constant buf1& x_9, thread float* const a, thread float* const b, thread float4* const tint_symbol_5) {
+  bool x_147 = false;
+  float x_158 = 0.0f;
+  float x_159 = 0.0f;
+  float x_179 = 0.0f;
+  float x_178 = 0.0f;
+  float x_185 = 0.0f;
+  float x_184 = 0.0f;
+  float x_160_phi = 0.0f;
+  float x_180_phi = 0.0f;
+  float x_186_phi = 0.0f;
+  float const x_149 = (*(tint_symbol_5)).y;
+  float const x_151 = x_9.resolution.y;
+  bool const x_153 = (x_149 < (x_151 / 2.0f));
+  if (x_153) {
+    x_158 = *(a);
+    x_160_phi = x_158;
+  } else {
+    x_159 = 0.0f;
+    x_160_phi = x_159;
+  }
+  float x_166 = 0.0f;
+  float x_167 = 0.0f;
+  float x_168_phi = 0.0f;
+  float const x_160 = x_160_phi;
+  bool guard155 = true;
+  if (false) {
+  } else {
+    if (guard155) {
+      if (x_153) {
+        x_166 = *(b);
+        x_168_phi = x_166;
+      } else {
+        x_167 = 0.0f;
+        x_168_phi = x_167;
+      }
+      float const x_168 = x_168_phi;
+      bool const x_169 = (x_160 > x_168);
+      if (x_153) {
+        x_147 = x_169;
+      }
+      if (true) {
+      } else {
+        guard155 = false;
+      }
+      if (guard155) {
+        guard155 = false;
+      }
+    }
+  }
+  if (x_153) {
+    x_179 = 0.0f;
+    x_180_phi = x_179;
+  } else {
+    x_178 = *(a);
+    x_180_phi = x_178;
+  }
+  float const x_180 = x_180_phi;
+  if (x_153) {
+    x_185 = 0.0f;
+    x_186_phi = x_185;
+  } else {
+    x_184 = *(b);
+    x_186_phi = x_184;
+  }
+  float const x_186 = x_186_phi;
+  if (x_153) {
+  } else {
+    x_147 = (x_180 < x_186);
+  }
+  bool const x_191 = x_147;
+  return x_191;
+}
+
+void main_1(constant buf0& x_13, constant buf1& x_9, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int i = 0;
+  tint_array_wrapper data = {};
+  int i_1 = 0;
+  int j = 0;
+  bool doSwap = false;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float temp = 0.0f;
+  i = 0;
+  while (true) {
+    int const x_59 = i;
+    if ((x_59 < 10)) {
+    } else {
+      break;
+    }
+    int const x_62 = i;
+    int const x_63 = i;
+    float const x_67 = x_13.injectionSwitch.y;
+    data.arr[x_62] = (float((10 - x_63)) * x_67);
+    {
+      int const x_70 = i;
+      i = (x_70 + 1);
+    }
+  }
+  i_1 = 0;
+  while (true) {
+    int const x_76 = i_1;
+    if ((x_76 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    while (true) {
+      int const x_83 = j;
+      if ((x_83 < 10)) {
+      } else {
+        break;
+      }
+      int const x_86 = j;
+      int const x_87 = i_1;
+      if ((x_86 < (x_87 + 1))) {
+        {
+          int const x_113 = j;
+          j = (x_113 + 1);
+        }
+        continue;
+      }
+      int const x_92 = i_1;
+      int const x_93 = j;
+      float const x_95 = data.arr[x_92];
+      param = x_95;
+      float const x_97 = data.arr[x_93];
+      param_1 = x_97;
+      bool const x_98 = checkSwap_f1_f1_(x_9, &(param), &(param_1), tint_symbol_6);
+      doSwap = x_98;
+      bool const x_99 = doSwap;
+      if (x_99) {
+        int const x_102 = i_1;
+        float const x_104 = data.arr[x_102];
+        temp = x_104;
+        int const x_105 = i_1;
+        int const x_106 = j;
+        float const x_108 = data.arr[x_106];
+        data.arr[x_105] = x_108;
+        int const x_110 = j;
+        float const x_111 = temp;
+        data.arr[x_110] = x_111;
+      }
+      {
+        int const x_113 = j;
+        j = (x_113 + 1);
+      }
+    }
+    {
+      int const x_115 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  float const x_118 = (*(tint_symbol_6)).x;
+  float const x_120 = x_9.resolution.x;
+  if ((x_118 < (x_120 / 2.0f))) {
+    float const x_127 = data.arr[0];
+    float const x_130 = data.arr[5];
+    float const x_133 = data.arr[9];
+    *(tint_symbol_7) = float4((x_127 / 10.0f), (x_130 / 10.0f), (x_133 / 10.0f), 1.0f);
+  } else {
+    float const x_137 = data.arr[5];
+    float const x_140 = data.arr[9];
+    float const x_143 = data.arr[0];
+    *(tint_symbol_7) = float4((x_137 / 10.0f), (x_140 / 10.0f), (x_143 / 10.0f), 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]], constant buf1& x_9 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_13, x_9, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..75d9c10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.spvasm
@@ -0,0 +1,424 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 247
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_9 "x_9"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %checkSwap_f1_f1_ "checkSwap_f1_f1_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %x_147 "x_147"
+               OpName %x_158 "x_158"
+               OpName %x_159 "x_159"
+               OpName %x_179 "x_179"
+               OpName %x_178 "x_178"
+               OpName %x_185 "x_185"
+               OpName %x_184 "x_184"
+               OpName %x_160_phi "x_160_phi"
+               OpName %x_180_phi "x_180_phi"
+               OpName %x_186_phi "x_186_phi"
+               OpName %x_166 "x_166"
+               OpName %x_167 "x_167"
+               OpName %x_168_phi "x_168_phi"
+               OpName %guard155 "guard155"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %i_1 "i_1"
+               OpName %j "j"
+               OpName %doSwap "doSwap"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %temp "temp"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_9 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %bool %_ptr_Function_float %_ptr_Function_float
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+         %29 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_2 = OpConstant %float 2
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+       %void = OpTypeVoid
+        %109 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+        %116 = OpConstantNull %int
+    %uint_10 = OpConstant %uint 10
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+%_ptr_Function__arr_float_uint_10 = OpTypePointer Function %_arr_float_uint_10
+        %121 = OpConstantNull %_arr_float_uint_10
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+   %float_10 = OpConstant %float 10
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %234 = OpTypeFunction %void %main_out
+%checkSwap_f1_f1_ = OpFunction %bool None %18
+          %a = OpFunctionParameter %_ptr_Function_float
+          %b = OpFunctionParameter %_ptr_Function_float
+         %24 = OpLabel
+      %x_147 = OpVariable %_ptr_Function_bool Function %27
+      %x_158 = OpVariable %_ptr_Function_float Function %29
+      %x_159 = OpVariable %_ptr_Function_float Function %29
+      %x_179 = OpVariable %_ptr_Function_float Function %29
+      %x_178 = OpVariable %_ptr_Function_float Function %29
+      %x_185 = OpVariable %_ptr_Function_float Function %29
+      %x_184 = OpVariable %_ptr_Function_float Function %29
+  %x_160_phi = OpVariable %_ptr_Function_float Function %29
+  %x_180_phi = OpVariable %_ptr_Function_float Function %29
+  %x_186_phi = OpVariable %_ptr_Function_float Function %29
+      %x_166 = OpVariable %_ptr_Function_float Function %29
+      %x_167 = OpVariable %_ptr_Function_float Function %29
+  %x_168_phi = OpVariable %_ptr_Function_float Function %29
+   %guard155 = OpVariable %_ptr_Function_bool Function %27
+         %41 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %42 = OpLoad %float %41
+         %45 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %46 = OpLoad %float %45
+         %48 = OpFDiv %float %46 %float_2
+         %49 = OpFOrdLessThan %bool %42 %48
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %52
+         %51 = OpLabel
+         %54 = OpLoad %float %a
+               OpStore %x_158 %54
+         %55 = OpLoad %float %x_158
+               OpStore %x_160_phi %55
+               OpBranch %50
+         %52 = OpLabel
+               OpStore %x_159 %float_0
+         %57 = OpLoad %float %x_159
+               OpStore %x_160_phi %57
+               OpBranch %50
+         %50 = OpLabel
+         %61 = OpLoad %float %x_160_phi
+               OpStore %guard155 %true
+               OpSelectionMerge %65 None
+               OpBranchConditional %false %66 %67
+         %66 = OpLabel
+               OpBranch %65
+         %67 = OpLabel
+         %68 = OpLoad %bool %guard155
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+               OpSelectionMerge %71 None
+               OpBranchConditional %49 %72 %73
+         %72 = OpLabel
+         %75 = OpLoad %float %b
+               OpStore %x_166 %75
+         %76 = OpLoad %float %x_166
+               OpStore %x_168_phi %76
+               OpBranch %71
+         %73 = OpLabel
+               OpStore %x_167 %float_0
+         %77 = OpLoad %float %x_167
+               OpStore %x_168_phi %77
+               OpBranch %71
+         %71 = OpLabel
+         %78 = OpLoad %float %x_168_phi
+         %79 = OpFOrdGreaterThan %bool %61 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %49 %81 %80
+         %81 = OpLabel
+               OpStore %x_147 %79
+               OpBranch %80
+         %80 = OpLabel
+               OpSelectionMerge %82 None
+               OpBranchConditional %true %83 %84
+         %83 = OpLabel
+               OpBranch %82
+         %84 = OpLabel
+               OpStore %guard155 %false
+               OpBranch %82
+         %82 = OpLabel
+         %85 = OpLoad %bool %guard155
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+               OpStore %guard155 %false
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+               OpSelectionMerge %88 None
+               OpBranchConditional %49 %89 %90
+         %89 = OpLabel
+               OpStore %x_179 %float_0
+         %91 = OpLoad %float %x_179
+               OpStore %x_180_phi %91
+               OpBranch %88
+         %90 = OpLabel
+         %93 = OpLoad %float %a
+               OpStore %x_178 %93
+         %94 = OpLoad %float %x_178
+               OpStore %x_180_phi %94
+               OpBranch %88
+         %88 = OpLabel
+         %95 = OpLoad %float %x_180_phi
+               OpSelectionMerge %96 None
+               OpBranchConditional %49 %97 %98
+         %97 = OpLabel
+               OpStore %x_185 %float_0
+         %99 = OpLoad %float %x_185
+               OpStore %x_186_phi %99
+               OpBranch %96
+         %98 = OpLabel
+        %101 = OpLoad %float %b
+               OpStore %x_184 %101
+        %102 = OpLoad %float %x_184
+               OpStore %x_186_phi %102
+               OpBranch %96
+         %96 = OpLabel
+        %103 = OpLoad %float %x_186_phi
+               OpSelectionMerge %104 None
+               OpBranchConditional %49 %105 %106
+        %105 = OpLabel
+               OpBranch %104
+        %106 = OpLabel
+        %107 = OpFOrdLessThan %bool %95 %103
+               OpStore %x_147 %107
+               OpBranch %104
+        %104 = OpLabel
+        %108 = OpLoad %bool %x_147
+               OpReturnValue %108
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %109
+        %112 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %116
+       %data = OpVariable %_ptr_Function__arr_float_uint_10 Function %121
+        %i_1 = OpVariable %_ptr_Function_int Function %116
+          %j = OpVariable %_ptr_Function_int Function %116
+     %doSwap = OpVariable %_ptr_Function_bool Function %27
+      %param = OpVariable %_ptr_Function_float Function %29
+    %param_1 = OpVariable %_ptr_Function_float Function %29
+       %temp = OpVariable %_ptr_Function_float Function %29
+               OpStore %i %int_0
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %i
+        %135 = OpSLessThan %bool %133 %int_10
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %138
+        %137 = OpLabel
+               OpBranch %136
+        %138 = OpLabel
+               OpBranch %130
+        %136 = OpLabel
+        %139 = OpLoad %int %i
+        %140 = OpLoad %int %i
+        %141 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_1
+        %142 = OpLoad %float %141
+        %143 = OpAccessChain %_ptr_Function_float %data %139
+        %145 = OpISub %int %int_10 %140
+        %144 = OpConvertSToF %float %145
+        %146 = OpFMul %float %144 %142
+               OpStore %143 %146
+               OpBranch %131
+        %131 = OpLabel
+        %147 = OpLoad %int %i
+        %149 = OpIAdd %int %147 %int_1
+               OpStore %i %149
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %154 = OpLoad %int %i_1
+        %156 = OpSLessThan %bool %154 %int_9
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %151
+        %157 = OpLabel
+               OpStore %j %int_0
+               OpBranch %160
+        %160 = OpLabel
+               OpLoopMerge %161 %162 None
+               OpBranch %163
+        %163 = OpLabel
+        %164 = OpLoad %int %j
+        %165 = OpSLessThan %bool %164 %int_10
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %168
+        %167 = OpLabel
+               OpBranch %166
+        %168 = OpLabel
+               OpBranch %161
+        %166 = OpLabel
+        %169 = OpLoad %int %j
+        %170 = OpLoad %int %i_1
+        %171 = OpIAdd %int %170 %int_1
+        %172 = OpSLessThan %bool %169 %171
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+               OpBranch %162
+        %173 = OpLabel
+        %175 = OpLoad %int %i_1
+        %176 = OpLoad %int %j
+        %177 = OpAccessChain %_ptr_Function_float %data %175
+        %178 = OpLoad %float %177
+               OpStore %param %178
+        %179 = OpAccessChain %_ptr_Function_float %data %176
+        %180 = OpLoad %float %179
+               OpStore %param_1 %180
+        %181 = OpFunctionCall %bool %checkSwap_f1_f1_ %param %param_1
+               OpStore %doSwap %181
+        %184 = OpLoad %bool %doSwap
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %185
+        %186 = OpLabel
+        %187 = OpLoad %int %i_1
+        %188 = OpAccessChain %_ptr_Function_float %data %187
+        %189 = OpLoad %float %188
+               OpStore %temp %189
+        %190 = OpLoad %int %i_1
+        %191 = OpLoad %int %j
+        %192 = OpAccessChain %_ptr_Function_float %data %191
+        %193 = OpLoad %float %192
+        %194 = OpAccessChain %_ptr_Function_float %data %190
+               OpStore %194 %193
+        %195 = OpLoad %int %j
+        %196 = OpLoad %float %temp
+        %197 = OpAccessChain %_ptr_Function_float %data %195
+               OpStore %197 %196
+               OpBranch %185
+        %185 = OpLabel
+               OpBranch %162
+        %162 = OpLabel
+        %198 = OpLoad %int %j
+        %199 = OpIAdd %int %198 %int_1
+               OpStore %j %199
+               OpBranch %160
+        %161 = OpLabel
+               OpBranch %152
+        %152 = OpLabel
+        %200 = OpLoad %int %i_1
+        %201 = OpIAdd %int %200 %int_1
+               OpStore %i_1 %201
+               OpBranch %150
+        %151 = OpLabel
+        %202 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %203 = OpLoad %float %202
+        %204 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+        %205 = OpLoad %float %204
+        %206 = OpFDiv %float %205 %float_2
+        %207 = OpFOrdLessThan %bool %203 %206
+               OpSelectionMerge %208 None
+               OpBranchConditional %207 %209 %210
+        %209 = OpLabel
+        %211 = OpAccessChain %_ptr_Function_float %data %int_0
+        %212 = OpLoad %float %211
+        %214 = OpAccessChain %_ptr_Function_float %data %int_5
+        %215 = OpLoad %float %214
+        %216 = OpAccessChain %_ptr_Function_float %data %int_9
+        %217 = OpLoad %float %216
+        %219 = OpFDiv %float %212 %float_10
+        %220 = OpFDiv %float %215 %float_10
+        %221 = OpFDiv %float %217 %float_10
+        %223 = OpCompositeConstruct %v4float %219 %220 %221 %float_1
+               OpStore %x_GLF_color %223
+               OpBranch %208
+        %210 = OpLabel
+        %224 = OpAccessChain %_ptr_Function_float %data %int_5
+        %225 = OpLoad %float %224
+        %226 = OpAccessChain %_ptr_Function_float %data %int_9
+        %227 = OpLoad %float %226
+        %228 = OpAccessChain %_ptr_Function_float %data %int_0
+        %229 = OpLoad %float %228
+        %230 = OpFDiv %float %225 %float_10
+        %231 = OpFDiv %float %227 %float_10
+        %232 = OpFDiv %float %229 %float_10
+        %233 = OpCompositeConstruct %v4float %230 %231 %232 %float_1
+               OpStore %x_GLF_color %233
+               OpBranch %208
+        %208 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %234
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %238 = OpLabel
+        %239 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %239
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %109
+        %241 = OpLabel
+        %242 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %242
+        %243 = OpFunctionCall %void %main_1
+        %245 = OpLoad %v4float %x_GLF_color
+        %246 = OpCompositeConstruct %main_out %245
+        %244 = OpFunctionCall %void %tint_symbol_3 %246
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..6e36ff77
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl.expected.wgsl
@@ -0,0 +1,197 @@
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn checkSwap_f1_f1_(a : ptr<function, f32>, b : ptr<function, f32>) -> bool {
+  var x_147 : bool;
+  var x_158 : f32;
+  var x_159 : f32;
+  var x_179 : f32;
+  var x_178 : f32;
+  var x_185 : f32;
+  var x_184 : f32;
+  var x_160_phi : f32;
+  var x_180_phi : f32;
+  var x_186_phi : f32;
+  let x_149 : f32 = gl_FragCoord.y;
+  let x_151 : f32 = x_9.resolution.y;
+  let x_153 : bool = (x_149 < (x_151 / 2.0));
+  if (x_153) {
+    x_158 = *(a);
+    x_160_phi = x_158;
+  } else {
+    x_159 = 0.0;
+    x_160_phi = x_159;
+  }
+  var x_166 : f32;
+  var x_167 : f32;
+  var x_168_phi : f32;
+  let x_160 : f32 = x_160_phi;
+  var guard155 : bool = true;
+  if (false) {
+  } else {
+    if (guard155) {
+      if (x_153) {
+        x_166 = *(b);
+        x_168_phi = x_166;
+      } else {
+        x_167 = 0.0;
+        x_168_phi = x_167;
+      }
+      let x_168 : f32 = x_168_phi;
+      let x_169 : bool = (x_160 > x_168);
+      if (x_153) {
+        x_147 = x_169;
+      }
+      if (true) {
+      } else {
+        guard155 = false;
+      }
+      if (guard155) {
+        guard155 = false;
+      }
+    }
+  }
+  if (x_153) {
+    x_179 = 0.0;
+    x_180_phi = x_179;
+  } else {
+    x_178 = *(a);
+    x_180_phi = x_178;
+  }
+  let x_180 : f32 = x_180_phi;
+  if (x_153) {
+    x_185 = 0.0;
+    x_186_phi = x_185;
+  } else {
+    x_184 = *(b);
+    x_186_phi = x_184;
+  }
+  let x_186 : f32 = x_186_phi;
+  if (x_153) {
+  } else {
+    x_147 = (x_180 < x_186);
+  }
+  let x_191 : bool = x_147;
+  return x_191;
+}
+
+fn main_1() {
+  var i : i32;
+  var data : array<f32, 10>;
+  var i_1 : i32;
+  var j : i32;
+  var doSwap : bool;
+  var param : f32;
+  var param_1 : f32;
+  var temp : f32;
+  i = 0;
+  loop {
+    let x_59 : i32 = i;
+    if ((x_59 < 10)) {
+    } else {
+      break;
+    }
+    let x_62 : i32 = i;
+    let x_63 : i32 = i;
+    let x_67 : f32 = x_13.injectionSwitch.y;
+    data[x_62] = (f32((10 - x_63)) * x_67);
+
+    continuing {
+      let x_70 : i32 = i;
+      i = (x_70 + 1);
+    }
+  }
+  i_1 = 0;
+  loop {
+    let x_76 : i32 = i_1;
+    if ((x_76 < 9)) {
+    } else {
+      break;
+    }
+    j = 0;
+    loop {
+      let x_83 : i32 = j;
+      if ((x_83 < 10)) {
+      } else {
+        break;
+      }
+      let x_86 : i32 = j;
+      let x_87 : i32 = i_1;
+      if ((x_86 < (x_87 + 1))) {
+        continue;
+      }
+      let x_92 : i32 = i_1;
+      let x_93 : i32 = j;
+      let x_95 : f32 = data[x_92];
+      param = x_95;
+      let x_97 : f32 = data[x_93];
+      param_1 = x_97;
+      let x_98 : bool = checkSwap_f1_f1_(&(param), &(param_1));
+      doSwap = x_98;
+      let x_99 : bool = doSwap;
+      if (x_99) {
+        let x_102 : i32 = i_1;
+        let x_104 : f32 = data[x_102];
+        temp = x_104;
+        let x_105 : i32 = i_1;
+        let x_106 : i32 = j;
+        let x_108 : f32 = data[x_106];
+        data[x_105] = x_108;
+        let x_110 : i32 = j;
+        let x_111 : f32 = temp;
+        data[x_110] = x_111;
+      }
+
+      continuing {
+        let x_113 : i32 = j;
+        j = (x_113 + 1);
+      }
+    }
+
+    continuing {
+      let x_115 : i32 = i_1;
+      i_1 = (x_115 + 1);
+    }
+  }
+  let x_118 : f32 = gl_FragCoord.x;
+  let x_120 : f32 = x_9.resolution.x;
+  if ((x_118 < (x_120 / 2.0))) {
+    let x_127 : f32 = data[0];
+    let x_130 : f32 = data[5];
+    let x_133 : f32 = data[9];
+    x_GLF_color = vec4<f32>((x_127 / 10.0), (x_130 / 10.0), (x_133 / 10.0), 1.0);
+  } else {
+    let x_137 : f32 = data[5];
+    let x_140 : f32 = data[9];
+    let x_143 : f32 = data[0];
+    x_GLF_color = vec4<f32>((x_137 / 10.0), (x_140 / 10.0), (x_143 / 10.0), 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm
new file mode 100644
index 0000000..9fa3f85
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm
@@ -0,0 +1,114 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+       %uint = OpTypeInt 32 0
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %30 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %32 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %36 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %38 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %39 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %40 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %41 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %43 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %44 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %45 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %46 = OpConstantComposite %_arr_v4float_uint_16 %30 %32 %33 %34 %35 %36 %37 %38 %30 %39 %40 %41 %42 %43 %44 %45
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %main = OpFunction %void None %9
+         %50 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %51 = OpLoad %v4float %gl_FragCoord
+         %52 = OpVectorShuffle %v2float %51 %51 0 1
+         %53 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %54 = OpLoad %v2float %53
+         %55 = OpFDiv %v2float %52 %54
+         %56 = OpVectorTimesScalar %v2float %55 %float_8
+         %57 = OpExtInst %v2float %1 Floor %56
+         %58 = OpCompositeExtract %float %57 0
+         %59 = OpConvertFToS %int %58
+         %60 = OpIMul %int %59 %int_8
+         %61 = OpCompositeExtract %float %57 1
+         %62 = OpConvertFToS %int %61
+         %63 = OpIAdd %int %60 %62
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpPhi %int %int_0 %50 %66 %67
+         %68 = OpPhi %int %63 %50 %69 %67
+         %70 = OpSGreaterThan %bool %68 %int_1
+               OpLoopMerge %71 %67 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpBitwiseAnd %int %68 %int_1
+         %74 = OpIEqual %bool %73 %int_1
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpIMul %int %int_3 %68
+         %79 = OpIAdd %int %78 %int_1
+               OpBranch %75
+         %77 = OpLabel
+         %80 = OpSDiv %int %68 %int_2
+               OpBranch %75
+         %75 = OpLabel
+         %69 = OpPhi %int %79 %76 %80 %77
+         %66 = OpIAdd %int %65 %int_1
+               OpBranch %67
+         %67 = OpLabel
+               OpBranch %64
+         %71 = OpLabel
+         %81 = OpSMod %int %65 %int_16
+               OpStore %indexable %46
+         %82 = OpAccessChain %_ptr_Function_v4float %indexable %81
+         %83 = OpLoad %v4float %82
+               OpStore %_GLF_color %83
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..74ac34a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.hlsl
@@ -0,0 +1,65 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_65 = 0;
+  int x_65_phi = 0;
+  int x_68_phi = 0;
+  const float4 x_51 = gl_FragCoord;
+  const float2 x_54 = asfloat(x_6[0].xy);
+  const float2 x_57 = floor(((float2(x_51.x, x_51.y) / x_54) * 8.0f));
+  const int x_63 = ((int(x_57.x) * 8) + int(x_57.y));
+  x_65_phi = 0;
+  x_68_phi = x_63;
+  while (true) {
+    int x_79 = 0;
+    int x_80 = 0;
+    int x_69_phi = 0;
+    x_65 = x_65_phi;
+    const int x_68 = x_68_phi;
+    if ((x_68 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_68 & 1) == 1)) {
+      x_79 = ((3 * x_68) + 1);
+      x_69_phi = x_79;
+    } else {
+      x_80 = (x_68 / 2);
+      x_69_phi = x_80;
+    }
+    const int x_69 = x_69_phi;
+    {
+      x_65_phi = asint((x_65 + asint(1)));
+      x_68_phi = x_69;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_83 = indexable[asint((x_65 % 16))];
+  x_GLF_color = x_83;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.msl
new file mode 100644
index 0000000..c9c314f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.msl
@@ -0,0 +1,67 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int x_65 = 0;
+  int x_65_phi = 0;
+  int x_68_phi = 0;
+  float4 const x_51 = *(tint_symbol_6);
+  float2 const x_54 = x_6.resolution;
+  float2 const x_57 = floor(((float2(x_51.x, x_51.y) / x_54) * 8.0f));
+  int const x_63 = ((int(x_57.x) * 8) + int(x_57.y));
+  x_65_phi = 0;
+  x_68_phi = x_63;
+  while (true) {
+    int x_79 = 0;
+    int x_80 = 0;
+    int x_69_phi = 0;
+    x_65 = x_65_phi;
+    int const x_68 = x_68_phi;
+    if ((x_68 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_68 & 1) == 1)) {
+      x_79 = ((3 * x_68) + 1);
+      x_69_phi = x_79;
+    } else {
+      x_80 = (x_68 / 2);
+      x_69_phi = x_80;
+    }
+    int const x_69 = x_69_phi;
+    {
+      x_65_phi = as_type<int>((x_65 + as_type<int>(1)));
+      x_68_phi = x_69;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_83 = indexable.arr[as_type<int>((x_65 % 16))];
+  *(tint_symbol_7) = x_83;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..5b40919
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.spvasm
@@ -0,0 +1,192 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 123
+; Schema: 0
+               OpCapability Shader
+         %37 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_65 "x_65"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_68_phi "x_68_phi"
+               OpName %x_79 "x_79"
+               OpName %x_80 "x_80"
+               OpName %x_69_phi "x_69_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %88 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %89 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %90 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %92 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %94 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %95 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %96 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %97 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %98 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %99 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %100 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %101 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %102 = OpConstantComposite %_arr_v4float_uint_16 %86 %88 %89 %90 %91 %92 %93 %94 %86 %95 %96 %97 %98 %99 %100 %101
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %110 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_65 = OpVariable %_ptr_Function_int Function %28
+   %x_65_phi = OpVariable %_ptr_Function_int Function %28
+   %x_68_phi = OpVariable %_ptr_Function_int Function %28
+       %x_79 = OpVariable %_ptr_Function_int Function %28
+       %x_80 = OpVariable %_ptr_Function_int Function %28
+   %x_69_phi = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %34 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %35 = OpLoad %v2float %34
+         %38 = OpCompositeExtract %float %31 0
+         %39 = OpCompositeExtract %float %31 1
+         %40 = OpCompositeConstruct %v2float %38 %39
+         %41 = OpFDiv %v2float %40 %35
+         %43 = OpVectorTimesScalar %v2float %41 %float_8
+         %36 = OpExtInst %v2float %37 Floor %43
+         %45 = OpCompositeExtract %float %36 0
+         %44 = OpConvertFToS %int %45
+         %47 = OpIMul %int %44 %int_8
+         %49 = OpCompositeExtract %float %36 1
+         %48 = OpConvertFToS %int %49
+         %50 = OpIAdd %int %47 %48
+               OpStore %x_65_phi %int_0
+               OpStore %x_68_phi %50
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %59 = OpLoad %int %x_65_phi
+               OpStore %x_65 %59
+         %60 = OpLoad %int %x_68_phi
+         %62 = OpSGreaterThan %bool %60 %int_1
+               OpSelectionMerge %64 None
+               OpBranchConditional %62 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %53
+         %64 = OpLabel
+         %67 = OpBitwiseAnd %int %60 %int_1
+         %68 = OpIEqual %bool %67 %int_1
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %73 = OpIMul %int %int_3 %60
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %x_79 %74
+         %75 = OpLoad %int %x_79
+               OpStore %x_69_phi %75
+               OpBranch %69
+         %71 = OpLabel
+         %77 = OpSDiv %int %60 %int_2
+               OpStore %x_80 %77
+         %78 = OpLoad %int %x_80
+               OpStore %x_69_phi %78
+               OpBranch %69
+         %69 = OpLabel
+         %79 = OpLoad %int %x_69_phi
+               OpBranch %54
+         %54 = OpLabel
+         %81 = OpLoad %int %x_65
+         %82 = OpCopyObject %int %int_1
+         %83 = OpIAdd %int %81 %82
+         %80 = OpCopyObject %int %83
+               OpStore %x_65_phi %80
+               OpStore %x_68_phi %79
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %102
+        %104 = OpLoad %int %x_65
+        %106 = OpSMod %int %104 %int_16
+        %103 = OpCopyObject %int %106
+        %108 = OpAccessChain %_ptr_Function_v4float %indexable %103
+        %109 = OpLoad %v4float %108
+               OpStore %x_GLF_color %109
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %110
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %114 = OpLabel
+        %115 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %115
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %117 = OpLabel
+        %118 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %118
+        %119 = OpFunctionCall %void %main_1
+        %121 = OpLoad %v4float %x_GLF_color
+        %122 = OpCompositeConstruct %main_out %121
+        %120 = OpFunctionCall %void %tint_symbol_3 %122
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..919b5ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.spvasm.expected.wgsl
@@ -0,0 +1,63 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_65 : i32;
+  var x_65_phi : i32;
+  var x_68_phi : i32;
+  let x_51 : vec4<f32> = gl_FragCoord;
+  let x_54 : vec2<f32> = x_6.resolution;
+  let x_57 : vec2<f32> = floor(((vec2<f32>(x_51.x, x_51.y) / x_54) * 8.0));
+  let x_63 : i32 = ((i32(x_57.x) * 8) + i32(x_57.y));
+  x_65_phi = 0;
+  x_68_phi = x_63;
+  loop {
+    var x_79 : i32;
+    var x_80 : i32;
+    var x_69_phi : i32;
+    x_65 = x_65_phi;
+    let x_68 : i32 = x_68_phi;
+    if ((x_68 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_68 & 1) == 1)) {
+      x_79 = ((3 * x_68) + 1);
+      x_69_phi = x_79;
+    } else {
+      x_80 = (x_68 / 2);
+      x_69_phi = x_80;
+    }
+    let x_69 : i32 = x_69_phi;
+
+    continuing {
+      x_65_phi = bitcast<i32>((x_65 + bitcast<i32>(1)));
+      x_68_phi = x_69;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_83 : vec4<f32> = indexable[bitcast<i32>((x_65 % 16))];
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
new file mode 100644
index 0000000..919b5ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
@@ -0,0 +1,63 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_65 : i32;
+  var x_65_phi : i32;
+  var x_68_phi : i32;
+  let x_51 : vec4<f32> = gl_FragCoord;
+  let x_54 : vec2<f32> = x_6.resolution;
+  let x_57 : vec2<f32> = floor(((vec2<f32>(x_51.x, x_51.y) / x_54) * 8.0));
+  let x_63 : i32 = ((i32(x_57.x) * 8) + i32(x_57.y));
+  x_65_phi = 0;
+  x_68_phi = x_63;
+  loop {
+    var x_79 : i32;
+    var x_80 : i32;
+    var x_69_phi : i32;
+    x_65 = x_65_phi;
+    let x_68 : i32 = x_68_phi;
+    if ((x_68 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_68 & 1) == 1)) {
+      x_79 = ((3 * x_68) + 1);
+      x_69_phi = x_79;
+    } else {
+      x_80 = (x_68 / 2);
+      x_69_phi = x_80;
+    }
+    let x_69 : i32 = x_69_phi;
+
+    continuing {
+      x_65_phi = bitcast<i32>((x_65 + bitcast<i32>(1)));
+      x_68_phi = x_69;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_83 : vec4<f32> = indexable[bitcast<i32>((x_65 % 16))];
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..74ac34a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.hlsl
@@ -0,0 +1,65 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_65 = 0;
+  int x_65_phi = 0;
+  int x_68_phi = 0;
+  const float4 x_51 = gl_FragCoord;
+  const float2 x_54 = asfloat(x_6[0].xy);
+  const float2 x_57 = floor(((float2(x_51.x, x_51.y) / x_54) * 8.0f));
+  const int x_63 = ((int(x_57.x) * 8) + int(x_57.y));
+  x_65_phi = 0;
+  x_68_phi = x_63;
+  while (true) {
+    int x_79 = 0;
+    int x_80 = 0;
+    int x_69_phi = 0;
+    x_65 = x_65_phi;
+    const int x_68 = x_68_phi;
+    if ((x_68 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_68 & 1) == 1)) {
+      x_79 = ((3 * x_68) + 1);
+      x_69_phi = x_79;
+    } else {
+      x_80 = (x_68 / 2);
+      x_69_phi = x_80;
+    }
+    const int x_69 = x_69_phi;
+    {
+      x_65_phi = asint((x_65 + asint(1)));
+      x_68_phi = x_69;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_83 = indexable[asint((x_65 % 16))];
+  x_GLF_color = x_83;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.msl
new file mode 100644
index 0000000..c9c314f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.msl
@@ -0,0 +1,67 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int x_65 = 0;
+  int x_65_phi = 0;
+  int x_68_phi = 0;
+  float4 const x_51 = *(tint_symbol_6);
+  float2 const x_54 = x_6.resolution;
+  float2 const x_57 = floor(((float2(x_51.x, x_51.y) / x_54) * 8.0f));
+  int const x_63 = ((int(x_57.x) * 8) + int(x_57.y));
+  x_65_phi = 0;
+  x_68_phi = x_63;
+  while (true) {
+    int x_79 = 0;
+    int x_80 = 0;
+    int x_69_phi = 0;
+    x_65 = x_65_phi;
+    int const x_68 = x_68_phi;
+    if ((x_68 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_68 & 1) == 1)) {
+      x_79 = ((3 * x_68) + 1);
+      x_69_phi = x_79;
+    } else {
+      x_80 = (x_68 / 2);
+      x_69_phi = x_80;
+    }
+    int const x_69 = x_69_phi;
+    {
+      x_65_phi = as_type<int>((x_65 + as_type<int>(1)));
+      x_68_phi = x_69;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_83 = indexable.arr[as_type<int>((x_65 % 16))];
+  *(tint_symbol_7) = x_83;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..5b40919
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.spvasm
@@ -0,0 +1,192 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 123
+; Schema: 0
+               OpCapability Shader
+         %37 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_65 "x_65"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_68_phi "x_68_phi"
+               OpName %x_79 "x_79"
+               OpName %x_80 "x_80"
+               OpName %x_69_phi "x_69_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %88 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %89 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %90 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %92 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %94 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %95 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %96 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %97 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %98 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %99 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %100 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %101 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %102 = OpConstantComposite %_arr_v4float_uint_16 %86 %88 %89 %90 %91 %92 %93 %94 %86 %95 %96 %97 %98 %99 %100 %101
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %110 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_65 = OpVariable %_ptr_Function_int Function %28
+   %x_65_phi = OpVariable %_ptr_Function_int Function %28
+   %x_68_phi = OpVariable %_ptr_Function_int Function %28
+       %x_79 = OpVariable %_ptr_Function_int Function %28
+       %x_80 = OpVariable %_ptr_Function_int Function %28
+   %x_69_phi = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %34 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %35 = OpLoad %v2float %34
+         %38 = OpCompositeExtract %float %31 0
+         %39 = OpCompositeExtract %float %31 1
+         %40 = OpCompositeConstruct %v2float %38 %39
+         %41 = OpFDiv %v2float %40 %35
+         %43 = OpVectorTimesScalar %v2float %41 %float_8
+         %36 = OpExtInst %v2float %37 Floor %43
+         %45 = OpCompositeExtract %float %36 0
+         %44 = OpConvertFToS %int %45
+         %47 = OpIMul %int %44 %int_8
+         %49 = OpCompositeExtract %float %36 1
+         %48 = OpConvertFToS %int %49
+         %50 = OpIAdd %int %47 %48
+               OpStore %x_65_phi %int_0
+               OpStore %x_68_phi %50
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %59 = OpLoad %int %x_65_phi
+               OpStore %x_65 %59
+         %60 = OpLoad %int %x_68_phi
+         %62 = OpSGreaterThan %bool %60 %int_1
+               OpSelectionMerge %64 None
+               OpBranchConditional %62 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %53
+         %64 = OpLabel
+         %67 = OpBitwiseAnd %int %60 %int_1
+         %68 = OpIEqual %bool %67 %int_1
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %73 = OpIMul %int %int_3 %60
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %x_79 %74
+         %75 = OpLoad %int %x_79
+               OpStore %x_69_phi %75
+               OpBranch %69
+         %71 = OpLabel
+         %77 = OpSDiv %int %60 %int_2
+               OpStore %x_80 %77
+         %78 = OpLoad %int %x_80
+               OpStore %x_69_phi %78
+               OpBranch %69
+         %69 = OpLabel
+         %79 = OpLoad %int %x_69_phi
+               OpBranch %54
+         %54 = OpLabel
+         %81 = OpLoad %int %x_65
+         %82 = OpCopyObject %int %int_1
+         %83 = OpIAdd %int %81 %82
+         %80 = OpCopyObject %int %83
+               OpStore %x_65_phi %80
+               OpStore %x_68_phi %79
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %102
+        %104 = OpLoad %int %x_65
+        %106 = OpSMod %int %104 %int_16
+        %103 = OpCopyObject %int %106
+        %108 = OpAccessChain %_ptr_Function_v4float %indexable %103
+        %109 = OpLoad %v4float %108
+               OpStore %x_GLF_color %109
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %110
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %114 = OpLabel
+        %115 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %115
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %117 = OpLabel
+        %118 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %118
+        %119 = OpFunctionCall %void %main_1
+        %121 = OpLoad %v4float %x_GLF_color
+        %122 = OpCompositeConstruct %main_out %121
+        %120 = OpFunctionCall %void %tint_symbol_3 %122
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..919b5ea
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl.expected.wgsl
@@ -0,0 +1,63 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_65 : i32;
+  var x_65_phi : i32;
+  var x_68_phi : i32;
+  let x_51 : vec4<f32> = gl_FragCoord;
+  let x_54 : vec2<f32> = x_6.resolution;
+  let x_57 : vec2<f32> = floor(((vec2<f32>(x_51.x, x_51.y) / x_54) * 8.0));
+  let x_63 : i32 = ((i32(x_57.x) * 8) + i32(x_57.y));
+  x_65_phi = 0;
+  x_68_phi = x_63;
+  loop {
+    var x_79 : i32;
+    var x_80 : i32;
+    var x_69_phi : i32;
+    x_65 = x_65_phi;
+    let x_68 : i32 = x_68_phi;
+    if ((x_68 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_68 & 1) == 1)) {
+      x_79 = ((3 * x_68) + 1);
+      x_69_phi = x_79;
+    } else {
+      x_80 = (x_68 / 2);
+      x_69_phi = x_80;
+    }
+    let x_69 : i32 = x_69_phi;
+
+    continuing {
+      x_65_phi = bitcast<i32>((x_65 + bitcast<i32>(1)));
+      x_68_phi = x_69;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_83 : vec4<f32> = indexable[bitcast<i32>((x_65 % 16))];
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm
new file mode 100644
index 0000000..fe85990
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm
@@ -0,0 +1,125 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+       %uint = OpTypeInt 32 0
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %30 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %32 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %34 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %36 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %37 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %38 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %39 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %40 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %41 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %43 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %44 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %45 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %46 = OpConstantComposite %_arr_v4float_uint_16 %30 %32 %33 %34 %35 %36 %37 %38 %30 %39 %40 %41 %42 %43 %44 %45
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+  %float_0_0 = OpConstant %float 0
+         %51 = OpConstantComposite %v4float %float_0_0 %float_0_0 %float_0_0 %float_0_0
+         %52 = OpConstantComposite %_arr_v4float_uint_16 %51 %51 %51 %51 %51 %51 %51 %51 %51 %51 %51 %51 %51 %51 %51 %51
+       %main = OpFunction %void None %9
+         %53 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %54 = OpLoad %v4float %gl_FragCoord
+         %55 = OpVectorShuffle %v2float %54 %54 0 1
+         %56 = OpCompositeConstruct %v4float %float_0 %float_8 %55
+         %57 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %58 = OpLoad %v2float %57
+         %59 = OpCompositeConstruct %_arr_v4float_uint_16 %35 %43 %37 %44 %45 %37 %37 %36 %41 %54 %35 %34 %33 %32 %40 %39
+         %60 = OpFDiv %v2float %55 %58
+         %61 = OpVectorTimesScalar %v2float %60 %float_8
+         %62 = OpExtInst %v2float %1 Floor %61
+         %63 = OpCompositeConstruct %v4float %61 %float_0_5 %float_1
+         %64 = OpCompositeExtract %float %62 0
+         %65 = OpConvertFToS %int %64
+         %66 = OpIMul %int %65 %int_8
+         %67 = OpCompositeExtract %float %62 1
+         %68 = OpConvertFToS %int %67
+         %69 = OpIAdd %int %66 %68
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpPhi %int %int_0 %53 %72 %73
+         %74 = OpPhi %int %69 %53 %75 %73
+         %76 = OpSGreaterThan %bool %74 %int_1
+               OpLoopMerge %77 %73 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpBitwiseAnd %int %74 %int_1
+         %80 = OpIEqual %bool %79 %int_1
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpIMul %int %int_3 %74
+         %85 = OpIAdd %int %84 %int_1
+               OpBranch %81
+         %83 = OpLabel
+         %86 = OpSDiv %int %74 %int_2
+               OpBranch %81
+         %81 = OpLabel
+         %75 = OpPhi %int %85 %82 %86 %83
+         %72 = OpIAdd %int %71 %int_1
+               OpBranch %73
+         %73 = OpLabel
+               OpBranch %70
+         %77 = OpLabel
+         %87 = OpSMod %int %71 %int_16
+               OpStore %indexable %46
+         %88 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %52
+               OpStore %indexable %88
+         %89 = OpCompositeExtract %v4float %59 1
+         %90 = OpCompositeConstruct %_arr_v4float_uint_16 %36 %36 %40 %30 %36 %38 %43 %30 %40 %56 %35 %37 %36 %41 %43 %63
+         %91 = OpAccessChain %_ptr_Function_v4float %indexable %87
+         %92 = OpLoad %v4float %91
+               OpStore %_GLF_color %92
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..5df85e4d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.hlsl
@@ -0,0 +1,74 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_71 = 0;
+  int x_71_phi = 0;
+  int x_74_phi = 0;
+  const float4 x_54 = gl_FragCoord;
+  const float2 x_55 = float2(x_54.x, x_54.y);
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_61 = ((x_55 / x_58) * 8.0f);
+  const float2 x_62 = floor(x_61);
+  const int x_69 = ((int(x_62.x) * 8) + int(x_62.y));
+  x_71_phi = 0;
+  x_74_phi = x_69;
+  while (true) {
+    int x_85 = 0;
+    int x_86 = 0;
+    int x_75_phi = 0;
+    x_71 = x_71_phi;
+    const int x_74 = x_74_phi;
+    if ((x_74 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_74 & 1) == 1)) {
+      x_85 = ((3 * x_74) + 1);
+      x_75_phi = x_85;
+    } else {
+      x_86 = (x_74 / 2);
+      x_75_phi = x_86;
+    }
+    const int x_75 = x_75_phi;
+    {
+      x_71_phi = asint((x_71 + asint(1)));
+      x_74_phi = x_75;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_88[16] = indexable;
+  const float4 tint_symbol_6[16] = {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), 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), 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), 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)};
+  indexable = tint_symbol_6;
+  indexable = x_88;
+  const float4 tint_symbol_7[16] = {float4(0.0f, 0.0f, 0.5f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), x_54, float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f)};
+  const float4 x_89 = tint_symbol_7[1u];
+  const float4 x_90[16] = {float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 8.0f, x_55), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(x_61, 0.5f, 1.0f)};
+  const float4 x_92 = indexable[asint((x_71 % 16))];
+  x_GLF_color = x_92;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.msl
new file mode 100644
index 0000000..b1f84a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.msl
@@ -0,0 +1,76 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  tint_array_wrapper indexable = {};
+  int x_71 = 0;
+  int x_71_phi = 0;
+  int x_74_phi = 0;
+  float4 const x_54 = *(tint_symbol_8);
+  float2 const x_55 = float2(x_54.x, x_54.y);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_61 = ((x_55 / x_58) * 8.0f);
+  float2 const x_62 = floor(x_61);
+  int const x_69 = ((int(x_62.x) * 8) + int(x_62.y));
+  x_71_phi = 0;
+  x_74_phi = x_69;
+  while (true) {
+    int x_85 = 0;
+    int x_86 = 0;
+    int x_75_phi = 0;
+    x_71 = x_71_phi;
+    int const x_74 = x_74_phi;
+    if ((x_74 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_74 & 1) == 1)) {
+      x_85 = ((3 * x_74) + 1);
+      x_75_phi = x_85;
+    } else {
+      x_86 = (x_74 / 2);
+      x_75_phi = x_86;
+    }
+    int const x_75 = x_75_phi;
+    {
+      x_71_phi = as_type<int>((x_71 + as_type<int>(1)));
+      x_74_phi = x_75;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  tint_array_wrapper const x_88 = indexable;
+  tint_array_wrapper const tint_symbol_5 = {.arr={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), 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), 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), 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)}};
+  indexable = tint_symbol_5;
+  indexable = x_88;
+  tint_array_wrapper const tint_symbol_6 = {.arr={float4(0.0f, 0.0f, 0.5f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), x_54, float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f)}};
+  float4 const x_89 = tint_symbol_6.arr[1u];
+  tint_array_wrapper const x_90 = {.arr={float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 8.0f, x_55), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(x_61, 0.5f, 1.0f)}};
+  float4 const x_92 = indexable.arr[as_type<int>((x_71 % 16))];
+  *(tint_symbol_9) = x_92;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..9edd5c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.spvasm
@@ -0,0 +1,207 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 136
+; Schema: 0
+               OpCapability Shader
+         %43 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_71 "x_71"
+               OpName %x_71_phi "x_71_phi"
+               OpName %x_74_phi "x_74_phi"
+               OpName %x_85 "x_85"
+               OpName %x_86 "x_86"
+               OpName %x_75_phi "x_75_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %88 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %89 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %90 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %92 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %94 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %95 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %96 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %97 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %98 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %99 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %100 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %101 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %102 = OpConstantComposite %_arr_v4float_uint_16 %86 %88 %89 %90 %91 %92 %93 %94 %86 %95 %96 %97 %98 %99 %100 %101
+        %104 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %105 = OpConstantComposite %_arr_v4float_uint_16 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104
+     %uint_1 = OpConstant %uint 1
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %123 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_71 = OpVariable %_ptr_Function_int Function %28
+   %x_71_phi = OpVariable %_ptr_Function_int Function %28
+   %x_74_phi = OpVariable %_ptr_Function_int Function %28
+       %x_85 = OpVariable %_ptr_Function_int Function %28
+       %x_86 = OpVariable %_ptr_Function_int Function %28
+   %x_75_phi = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %32 = OpCompositeExtract %float %31 0
+         %33 = OpCompositeExtract %float %31 1
+         %34 = OpCompositeConstruct %v2float %32 %33
+         %37 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %38 = OpLoad %v2float %37
+         %39 = OpFDiv %v2float %34 %38
+         %41 = OpVectorTimesScalar %v2float %39 %float_8
+         %42 = OpExtInst %v2float %43 Floor %41
+         %45 = OpCompositeExtract %float %42 0
+         %44 = OpConvertFToS %int %45
+         %47 = OpIMul %int %44 %int_8
+         %49 = OpCompositeExtract %float %42 1
+         %48 = OpConvertFToS %int %49
+         %50 = OpIAdd %int %47 %48
+               OpStore %x_71_phi %int_0
+               OpStore %x_74_phi %50
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %59 = OpLoad %int %x_71_phi
+               OpStore %x_71 %59
+         %60 = OpLoad %int %x_74_phi
+         %62 = OpSGreaterThan %bool %60 %int_1
+               OpSelectionMerge %64 None
+               OpBranchConditional %62 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %53
+         %64 = OpLabel
+         %67 = OpBitwiseAnd %int %60 %int_1
+         %68 = OpIEqual %bool %67 %int_1
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %73 = OpIMul %int %int_3 %60
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %x_85 %74
+         %75 = OpLoad %int %x_85
+               OpStore %x_75_phi %75
+               OpBranch %69
+         %71 = OpLabel
+         %77 = OpSDiv %int %60 %int_2
+               OpStore %x_86 %77
+         %78 = OpLoad %int %x_86
+               OpStore %x_75_phi %78
+               OpBranch %69
+         %69 = OpLabel
+         %79 = OpLoad %int %x_75_phi
+               OpBranch %54
+         %54 = OpLabel
+         %81 = OpLoad %int %x_71
+         %82 = OpCopyObject %int %int_1
+         %83 = OpIAdd %int %81 %82
+         %80 = OpCopyObject %int %83
+               OpStore %x_71_phi %80
+               OpStore %x_74_phi %79
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %102
+        %103 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %105
+               OpStore %indexable %103
+        %106 = OpCompositeConstruct %_arr_v4float_uint_16 %91 %99 %93 %100 %101 %93 %93 %92 %97 %31 %91 %90 %89 %88 %96 %95
+        %108 = OpCompositeExtract %v4float %106 1
+        %109 = OpCompositeExtract %float %34 0
+        %110 = OpCompositeExtract %float %34 1
+        %111 = OpCompositeConstruct %v4float %float_0 %float_8 %109 %110
+        %112 = OpCompositeExtract %float %41 0
+        %113 = OpCompositeExtract %float %41 1
+        %114 = OpCompositeConstruct %v4float %112 %113 %float_0_5 %float_1
+        %115 = OpCompositeConstruct %_arr_v4float_uint_16 %92 %92 %96 %86 %92 %94 %99 %86 %96 %111 %91 %93 %92 %97 %99 %114
+        %117 = OpLoad %int %x_71
+        %119 = OpSMod %int %117 %int_16
+        %116 = OpCopyObject %int %119
+        %121 = OpAccessChain %_ptr_Function_v4float %indexable %116
+        %122 = OpLoad %v4float %121
+               OpStore %x_GLF_color %122
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %123
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %127 = OpLabel
+        %128 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %128
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %130 = OpLabel
+        %131 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %131
+        %132 = OpFunctionCall %void %main_1
+        %134 = OpLoad %v4float %x_GLF_color
+        %135 = OpCompositeConstruct %main_out %134
+        %133 = OpFunctionCall %void %tint_symbol_3 %135
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..872479c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.spvasm.expected.wgsl
@@ -0,0 +1,70 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_71 : i32;
+  var x_71_phi : i32;
+  var x_74_phi : i32;
+  let x_54 : vec4<f32> = gl_FragCoord;
+  let x_55 : vec2<f32> = vec2<f32>(x_54.x, x_54.y);
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_61 : vec2<f32> = ((x_55 / x_58) * 8.0);
+  let x_62 : vec2<f32> = floor(x_61);
+  let x_69 : i32 = ((i32(x_62.x) * 8) + i32(x_62.y));
+  x_71_phi = 0;
+  x_74_phi = x_69;
+  loop {
+    var x_85 : i32;
+    var x_86 : i32;
+    var x_75_phi : i32;
+    x_71 = x_71_phi;
+    let x_74 : i32 = x_74_phi;
+    if ((x_74 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_74 & 1) == 1)) {
+      x_85 = ((3 * x_74) + 1);
+      x_75_phi = x_85;
+    } else {
+      x_86 = (x_74 / 2);
+      x_75_phi = x_86;
+    }
+    let x_75 : i32 = x_75_phi;
+
+    continuing {
+      x_71_phi = bitcast<i32>((x_71 + bitcast<i32>(1)));
+      x_74_phi = x_75;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_88 : array<vec4<f32>, 16> = indexable;
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  indexable = x_88;
+  let x_89 : vec4<f32> = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), x_54, vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0))[1u];
+  let x_90 : array<vec4<f32>, 16> = array<vec4<f32>, 16>(vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 8.0, x_55), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(x_61, 0.5, 1.0));
+  let x_92 : vec4<f32> = indexable[bitcast<i32>((x_71 % 16))];
+  x_GLF_color = x_92;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
new file mode 100644
index 0000000..872479c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
@@ -0,0 +1,70 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_71 : i32;
+  var x_71_phi : i32;
+  var x_74_phi : i32;
+  let x_54 : vec4<f32> = gl_FragCoord;
+  let x_55 : vec2<f32> = vec2<f32>(x_54.x, x_54.y);
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_61 : vec2<f32> = ((x_55 / x_58) * 8.0);
+  let x_62 : vec2<f32> = floor(x_61);
+  let x_69 : i32 = ((i32(x_62.x) * 8) + i32(x_62.y));
+  x_71_phi = 0;
+  x_74_phi = x_69;
+  loop {
+    var x_85 : i32;
+    var x_86 : i32;
+    var x_75_phi : i32;
+    x_71 = x_71_phi;
+    let x_74 : i32 = x_74_phi;
+    if ((x_74 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_74 & 1) == 1)) {
+      x_85 = ((3 * x_74) + 1);
+      x_75_phi = x_85;
+    } else {
+      x_86 = (x_74 / 2);
+      x_75_phi = x_86;
+    }
+    let x_75 : i32 = x_75_phi;
+
+    continuing {
+      x_71_phi = bitcast<i32>((x_71 + bitcast<i32>(1)));
+      x_74_phi = x_75;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_88 : array<vec4<f32>, 16> = indexable;
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  indexable = x_88;
+  let x_89 : vec4<f32> = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), x_54, vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0))[1u];
+  let x_90 : array<vec4<f32>, 16> = array<vec4<f32>, 16>(vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 8.0, x_55), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(x_61, 0.5, 1.0));
+  let x_92 : vec4<f32> = indexable[bitcast<i32>((x_71 % 16))];
+  x_GLF_color = x_92;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..5df85e4d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.hlsl
@@ -0,0 +1,74 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int x_71 = 0;
+  int x_71_phi = 0;
+  int x_74_phi = 0;
+  const float4 x_54 = gl_FragCoord;
+  const float2 x_55 = float2(x_54.x, x_54.y);
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_61 = ((x_55 / x_58) * 8.0f);
+  const float2 x_62 = floor(x_61);
+  const int x_69 = ((int(x_62.x) * 8) + int(x_62.y));
+  x_71_phi = 0;
+  x_74_phi = x_69;
+  while (true) {
+    int x_85 = 0;
+    int x_86 = 0;
+    int x_75_phi = 0;
+    x_71 = x_71_phi;
+    const int x_74 = x_74_phi;
+    if ((x_74 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_74 & 1) == 1)) {
+      x_85 = ((3 * x_74) + 1);
+      x_75_phi = x_85;
+    } else {
+      x_86 = (x_74 / 2);
+      x_75_phi = x_86;
+    }
+    const int x_75 = x_75_phi;
+    {
+      x_71_phi = asint((x_71 + asint(1)));
+      x_74_phi = x_75;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_88[16] = indexable;
+  const float4 tint_symbol_6[16] = {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), 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), 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), 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)};
+  indexable = tint_symbol_6;
+  indexable = x_88;
+  const float4 tint_symbol_7[16] = {float4(0.0f, 0.0f, 0.5f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), x_54, float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f)};
+  const float4 x_89 = tint_symbol_7[1u];
+  const float4 x_90[16] = {float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 8.0f, x_55), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(x_61, 0.5f, 1.0f)};
+  const float4 x_92 = indexable[asint((x_71 % 16))];
+  x_GLF_color = x_92;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.msl
new file mode 100644
index 0000000..b1f84a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.msl
@@ -0,0 +1,76 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  tint_array_wrapper indexable = {};
+  int x_71 = 0;
+  int x_71_phi = 0;
+  int x_74_phi = 0;
+  float4 const x_54 = *(tint_symbol_8);
+  float2 const x_55 = float2(x_54.x, x_54.y);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_61 = ((x_55 / x_58) * 8.0f);
+  float2 const x_62 = floor(x_61);
+  int const x_69 = ((int(x_62.x) * 8) + int(x_62.y));
+  x_71_phi = 0;
+  x_74_phi = x_69;
+  while (true) {
+    int x_85 = 0;
+    int x_86 = 0;
+    int x_75_phi = 0;
+    x_71 = x_71_phi;
+    int const x_74 = x_74_phi;
+    if ((x_74 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_74 & 1) == 1)) {
+      x_85 = ((3 * x_74) + 1);
+      x_75_phi = x_85;
+    } else {
+      x_86 = (x_74 / 2);
+      x_75_phi = x_86;
+    }
+    int const x_75 = x_75_phi;
+    {
+      x_71_phi = as_type<int>((x_71 + as_type<int>(1)));
+      x_74_phi = x_75;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  tint_array_wrapper const x_88 = indexable;
+  tint_array_wrapper const tint_symbol_5 = {.arr={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), 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), 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), 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)}};
+  indexable = tint_symbol_5;
+  indexable = x_88;
+  tint_array_wrapper const tint_symbol_6 = {.arr={float4(0.0f, 0.0f, 0.5f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), x_54, float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f)}};
+  float4 const x_89 = tint_symbol_6.arr[1u];
+  tint_array_wrapper const x_90 = {.arr={float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 8.0f, x_55), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(x_61, 0.5f, 1.0f)}};
+  float4 const x_92 = indexable.arr[as_type<int>((x_71 % 16))];
+  *(tint_symbol_9) = x_92;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..9edd5c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.spvasm
@@ -0,0 +1,207 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 136
+; Schema: 0
+               OpCapability Shader
+         %43 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_71 "x_71"
+               OpName %x_71_phi "x_71_phi"
+               OpName %x_74_phi "x_74_phi"
+               OpName %x_85 "x_85"
+               OpName %x_86 "x_86"
+               OpName %x_75_phi "x_75_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %28 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %88 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %89 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %90 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %91 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %92 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %93 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %94 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %95 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %96 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %97 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %98 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %99 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %100 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %101 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %102 = OpConstantComposite %_arr_v4float_uint_16 %86 %88 %89 %90 %91 %92 %93 %94 %86 %95 %96 %97 %98 %99 %100 %101
+        %104 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %105 = OpConstantComposite %_arr_v4float_uint_16 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104 %104
+     %uint_1 = OpConstant %uint 1
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %123 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_71 = OpVariable %_ptr_Function_int Function %28
+   %x_71_phi = OpVariable %_ptr_Function_int Function %28
+   %x_74_phi = OpVariable %_ptr_Function_int Function %28
+       %x_85 = OpVariable %_ptr_Function_int Function %28
+       %x_86 = OpVariable %_ptr_Function_int Function %28
+   %x_75_phi = OpVariable %_ptr_Function_int Function %28
+         %31 = OpLoad %v4float %gl_FragCoord
+         %32 = OpCompositeExtract %float %31 0
+         %33 = OpCompositeExtract %float %31 1
+         %34 = OpCompositeConstruct %v2float %32 %33
+         %37 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %38 = OpLoad %v2float %37
+         %39 = OpFDiv %v2float %34 %38
+         %41 = OpVectorTimesScalar %v2float %39 %float_8
+         %42 = OpExtInst %v2float %43 Floor %41
+         %45 = OpCompositeExtract %float %42 0
+         %44 = OpConvertFToS %int %45
+         %47 = OpIMul %int %44 %int_8
+         %49 = OpCompositeExtract %float %42 1
+         %48 = OpConvertFToS %int %49
+         %50 = OpIAdd %int %47 %48
+               OpStore %x_71_phi %int_0
+               OpStore %x_74_phi %50
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %59 = OpLoad %int %x_71_phi
+               OpStore %x_71 %59
+         %60 = OpLoad %int %x_74_phi
+         %62 = OpSGreaterThan %bool %60 %int_1
+               OpSelectionMerge %64 None
+               OpBranchConditional %62 %65 %66
+         %65 = OpLabel
+               OpBranch %64
+         %66 = OpLabel
+               OpBranch %53
+         %64 = OpLabel
+         %67 = OpBitwiseAnd %int %60 %int_1
+         %68 = OpIEqual %bool %67 %int_1
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+         %73 = OpIMul %int %int_3 %60
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %x_85 %74
+         %75 = OpLoad %int %x_85
+               OpStore %x_75_phi %75
+               OpBranch %69
+         %71 = OpLabel
+         %77 = OpSDiv %int %60 %int_2
+               OpStore %x_86 %77
+         %78 = OpLoad %int %x_86
+               OpStore %x_75_phi %78
+               OpBranch %69
+         %69 = OpLabel
+         %79 = OpLoad %int %x_75_phi
+               OpBranch %54
+         %54 = OpLabel
+         %81 = OpLoad %int %x_71
+         %82 = OpCopyObject %int %int_1
+         %83 = OpIAdd %int %81 %82
+         %80 = OpCopyObject %int %83
+               OpStore %x_71_phi %80
+               OpStore %x_74_phi %79
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %indexable %102
+        %103 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %105
+               OpStore %indexable %103
+        %106 = OpCompositeConstruct %_arr_v4float_uint_16 %91 %99 %93 %100 %101 %93 %93 %92 %97 %31 %91 %90 %89 %88 %96 %95
+        %108 = OpCompositeExtract %v4float %106 1
+        %109 = OpCompositeExtract %float %34 0
+        %110 = OpCompositeExtract %float %34 1
+        %111 = OpCompositeConstruct %v4float %float_0 %float_8 %109 %110
+        %112 = OpCompositeExtract %float %41 0
+        %113 = OpCompositeExtract %float %41 1
+        %114 = OpCompositeConstruct %v4float %112 %113 %float_0_5 %float_1
+        %115 = OpCompositeConstruct %_arr_v4float_uint_16 %92 %92 %96 %86 %92 %94 %99 %86 %96 %111 %91 %93 %92 %97 %99 %114
+        %117 = OpLoad %int %x_71
+        %119 = OpSMod %int %117 %int_16
+        %116 = OpCopyObject %int %119
+        %121 = OpAccessChain %_ptr_Function_v4float %indexable %116
+        %122 = OpLoad %v4float %121
+               OpStore %x_GLF_color %122
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %123
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %127 = OpLabel
+        %128 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %128
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %130 = OpLabel
+        %131 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %131
+        %132 = OpFunctionCall %void %main_1
+        %134 = OpLoad %v4float %x_GLF_color
+        %135 = OpCompositeConstruct %main_out %134
+        %133 = OpFunctionCall %void %tint_symbol_3 %135
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..872479c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl.expected.wgsl
@@ -0,0 +1,70 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_71 : i32;
+  var x_71_phi : i32;
+  var x_74_phi : i32;
+  let x_54 : vec4<f32> = gl_FragCoord;
+  let x_55 : vec2<f32> = vec2<f32>(x_54.x, x_54.y);
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_61 : vec2<f32> = ((x_55 / x_58) * 8.0);
+  let x_62 : vec2<f32> = floor(x_61);
+  let x_69 : i32 = ((i32(x_62.x) * 8) + i32(x_62.y));
+  x_71_phi = 0;
+  x_74_phi = x_69;
+  loop {
+    var x_85 : i32;
+    var x_86 : i32;
+    var x_75_phi : i32;
+    x_71 = x_71_phi;
+    let x_74 : i32 = x_74_phi;
+    if ((x_74 > 1)) {
+    } else {
+      break;
+    }
+    if (((x_74 & 1) == 1)) {
+      x_85 = ((3 * x_74) + 1);
+      x_75_phi = x_85;
+    } else {
+      x_86 = (x_74 / 2);
+      x_75_phi = x_86;
+    }
+    let x_75 : i32 = x_75_phi;
+
+    continuing {
+      x_71_phi = bitcast<i32>((x_71 + bitcast<i32>(1)));
+      x_74_phi = x_75;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_88 : array<vec4<f32>, 16> = indexable;
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  indexable = x_88;
+  let x_89 : vec4<f32> = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), x_54, vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0))[1u];
+  let x_90 : array<vec4<f32>, 16> = array<vec4<f32>, 16>(vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 8.0, x_55), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(x_61, 0.5, 1.0));
+  let x_92 : vec4<f32> = indexable[bitcast<i32>((x_71 % 16))];
+  x_GLF_color = x_92;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm
new file mode 100644
index 0000000..c006009
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm
@@ -0,0 +1,223 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %c "c"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %27 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+         %43 = OpUndef %float
+%float_0_125 = OpConstant %float 0.125
+       %main = OpFunction %void None %9
+         %45 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+               OpStore %c %27
+         %46 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %47 = OpLoad %float %46
+         %48 = OpFMul %float %47 %float_0_125
+         %49 = OpExtInst %float %1 Round %48
+         %50 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %51 = OpLoad %float %50
+               OpSelectionMerge %52 None
+               OpSwitch %uint_0 %53
+         %53 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %55 = OpPhi %float %float_n0_5 %53 %56 %57
+         %58 = OpPhi %int %int_1 %53 %59 %57
+         %60 = OpSLessThan %bool %58 %int_800
+               OpLoopMerge %61 %57 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+         %63 = OpSMod %int %58 %int_32
+         %64 = OpIEqual %bool %63 %int_0
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %67
+         %66 = OpLabel
+         %68 = OpFAdd %float %55 %float_0_400000006
+               OpBranch %65
+         %67 = OpLabel
+         %69 = OpConvertSToF %float %58
+         %70 = OpExtInst %float %1 Round %49
+         %71 = OpFMod %float %69 %70
+         %72 = OpFOrdLessThanEqual %bool %71 %float_0_00999999978
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpFAdd %float %55 %float_100
+               OpBranch %73
+         %73 = OpLabel
+         %76 = OpPhi %float %55 %67 %75 %74
+               OpBranch %65
+         %65 = OpLabel
+         %56 = OpPhi %float %68 %66 %76 %73
+         %77 = OpConvertSToF %float %58
+         %78 = OpFOrdGreaterThanEqual %bool %77 %51
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %79
+         %80 = OpLabel
+               OpBranch %61
+         %79 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %59 = OpIAdd %int %58 %int_1
+               OpBranch %54
+         %61 = OpLabel
+         %81 = OpPhi %float %43 %54 %56 %80
+         %82 = OpPhi %float %55 %54 %56 %80
+         %83 = OpPhi %bool %false %54 %true %80
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %52 %84
+         %84 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+         %85 = OpPhi %float %81 %61 %82 %84
+         %86 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %86 %85
+         %87 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %88 = OpLoad %float %87
+               OpSelectionMerge %89 None
+               OpSwitch %uint_0 %90
+         %90 = OpLabel
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpPhi %float %float_n0_5 %90 %93 %94
+         %95 = OpPhi %int %int_1 %90 %96 %94
+         %97 = OpSLessThan %bool %95 %int_800
+               OpLoopMerge %98 %94 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSMod %int %95 %int_32
+        %101 = OpIEqual %bool %100 %int_0
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %104 = OpLabel
+        %105 = OpConvertSToF %float %95
+        %106 = OpExtInst %float %1 Round %49
+        %107 = OpFMod %float %105 %106
+        %108 = OpFOrdLessThanEqual %bool %107 %float_0_00999999978
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+        %111 = OpFAdd %float %92 %float_100
+               OpBranch %109
+        %109 = OpLabel
+        %112 = OpPhi %float %92 %104 %111 %110
+               OpBranch %102
+        %102 = OpLabel
+         %93 = OpPhi %float %113 %103 %112 %109
+        %114 = OpConvertSToF %float %95
+        %115 = OpFOrdGreaterThanEqual %bool %114 %88
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+               OpBranch %98
+         %98 = OpLabel
+        %118 = OpPhi %float %43 %91 %93 %117
+        %119 = OpPhi %float %92 %91 %93 %117
+        %120 = OpPhi %bool %false %91 %true %117
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %89 %121
+        %103 = OpLabel
+        %113 = OpFAdd %float %92 %float_0_400000006
+               OpBranch %102
+        %116 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+         %96 = OpIAdd %int %95 %int_1
+               OpBranch %91
+        %121 = OpLabel
+               OpBranch %89
+         %89 = OpLabel
+        %122 = OpPhi %float %118 %98 %119 %121
+        %123 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %123 %122
+        %124 = OpLoad %float %86
+        %125 = OpLoad %float %123
+        %126 = OpFAdd %float %124 %125
+        %127 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %127 %126
+               OpBranch %128
+        %128 = OpLabel
+        %129 = OpPhi %int %int_0 %89 %130 %131
+        %132 = OpSLessThan %bool %129 %int_3
+               OpLoopMerge %133 %131 None
+               OpBranchConditional %132 %134 %133
+        %134 = OpLabel
+        %135 = OpAccessChain %_ptr_Function_float %c %129
+        %136 = OpLoad %float %135
+        %137 = OpFOrdGreaterThanEqual %bool %136 %float_1
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+        %140 = OpLoad %float %135
+        %141 = OpLoad %float %135
+        %142 = OpFMul %float %140 %141
+               OpStore %135 %142
+               OpBranch %138
+        %138 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+        %130 = OpIAdd %int %129 %int_1
+               OpBranch %128
+        %133 = OpLabel
+        %143 = OpLoad %v3float %c
+        %144 = OpExtInst %v3float %1 FAbs %143
+        %145 = OpExtInst %v3float %1 Normalize %144
+        %146 = OpCompositeExtract %float %145 0
+        %147 = OpCompositeExtract %float %145 1
+        %148 = OpCompositeExtract %float %145 2
+        %149 = OpCompositeConstruct %v4float %146 %147 %148 %float_1
+               OpStore %_GLF_color %149
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..3102fad
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.hlsl
@@ -0,0 +1,202 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float x_51 = 0.0f;
+  float x_55 = 0.0f;
+  float x_56 = 0.0f;
+  float x_81 = 0.0f;
+  float x_82 = 0.0f;
+  float x_118 = 0.0f;
+  float x_119 = 0.0f;
+  float x_55_phi = 0.0f;
+  int x_58_phi = 0;
+  float x_81_phi = 0.0f;
+  float x_82_phi = 0.0f;
+  bool x_83_phi = false;
+  float x_85_phi = 0.0f;
+  float x_122_phi = 0.0f;
+  int x_129_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_47 = asfloat(x_7[0].x);
+  const float x_49 = round((x_47 * 0.125f));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5f;
+      x_58_phi = 1;
+      while (true) {
+        float x_68 = 0.0f;
+        float x_76 = 0.0f;
+        int x_59 = 0;
+        float x_56_phi = 0.0f;
+        x_55 = x_55_phi;
+        const int x_58 = x_58_phi;
+        x_81_phi = 0.0f;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        float x_75 = 0.0f;
+        float x_76_phi = 0.0f;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006f);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((float(x_58) % round(x_49)) <= 0.01f)) {
+            x_75 = (x_55 + 100.0f);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((float(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+        {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      const bool x_83 = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+      break;
+    }
+  }
+  float x_88 = 0.0f;
+  float x_92 = 0.0f;
+  float x_93 = 0.0f;
+  float x_92_phi = 0.0f;
+  int x_95_phi = 0;
+  float x_118_phi = 0.0f;
+  float x_119_phi = 0.0f;
+  bool x_120_phi = false;
+  const float x_85 = x_85_phi;
+  c.x = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5f;
+      x_95_phi = 1;
+      while (true) {
+        float x_113 = 0.0f;
+        float x_112 = 0.0f;
+        int x_96 = 0;
+        float x_93_phi = 0.0f;
+        x_92 = x_92_phi;
+        const int x_95 = x_95_phi;
+        x_118_phi = 0.0f;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        float x_111 = 0.0f;
+        float x_112_phi = 0.0f;
+        if (((x_95 % 32) == 0)) {
+          x_113 = (x_92 + 0.400000006f);
+          x_93_phi = x_113;
+        } else {
+          x_112_phi = x_92;
+          if (((float(x_95) % round(x_49)) <= 0.01f)) {
+            x_111 = (x_92 + 100.0f);
+            x_112_phi = x_111;
+          }
+          x_112 = x_112_phi;
+          x_93_phi = x_112;
+        }
+        x_93 = x_93_phi;
+        if ((float(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+        {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      const bool x_120 = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+      break;
+    }
+  }
+  const float x_122 = x_122_phi;
+  c.y = x_122;
+  const float x_124 = c.x;
+  const float x_125 = c.y;
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  while (true) {
+    int x_130 = 0;
+    const int x_129 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    const int x_135_save = x_129;
+    const float x_136 = c[x_135_save];
+    if ((x_136 >= 1.0f)) {
+      const float x_140 = c[x_135_save];
+      const float x_141 = c[x_135_save];
+      set_float3(c, x_135_save, (x_140 * x_141));
+    }
+    {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  const float3 x_145 = normalize(abs(c));
+  x_GLF_color = float4(x_145.x, x_145.y, x_145.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.msl
new file mode 100755
index 0000000..ccf66a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.msl
@@ -0,0 +1,208 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float x_51 = 0.0f;
+  float x_55 = 0.0f;
+  float x_56 = 0.0f;
+  float x_81 = 0.0f;
+  float x_82 = 0.0f;
+  float x_118 = 0.0f;
+  float x_119 = 0.0f;
+  float x_55_phi = 0.0f;
+  int x_58_phi = 0;
+  float x_81_phi = 0.0f;
+  float x_82_phi = 0.0f;
+  bool x_83_phi = false;
+  float x_85_phi = 0.0f;
+  float x_122_phi = 0.0f;
+  int x_129_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_47 = x_7.resolution.x;
+  float const x_49 = rint((x_47 * 0.125f));
+  x_51 = (*(tint_symbol_5)).x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5f;
+      x_58_phi = 1;
+      while (true) {
+        float x_68 = 0.0f;
+        float x_76 = 0.0f;
+        int x_59 = 0;
+        float x_56_phi = 0.0f;
+        x_55 = x_55_phi;
+        int const x_58 = x_58_phi;
+        x_81_phi = 0.0f;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        float x_75 = 0.0f;
+        float x_76_phi = 0.0f;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006f);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((float(x_58) % rint(x_49)) <= 0.01f)) {
+            x_75 = (x_55 + 100.0f);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((float(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+        {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      bool const x_83 = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+      break;
+    }
+  }
+  float x_88 = 0.0f;
+  float x_92 = 0.0f;
+  float x_93 = 0.0f;
+  float x_92_phi = 0.0f;
+  int x_95_phi = 0;
+  float x_118_phi = 0.0f;
+  float x_119_phi = 0.0f;
+  bool x_120_phi = false;
+  float const x_85 = x_85_phi;
+  c.x = x_85;
+  x_88 = (*(tint_symbol_5)).y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5f;
+      x_95_phi = 1;
+      while (true) {
+        float x_113 = 0.0f;
+        float x_112 = 0.0f;
+        int x_96 = 0;
+        float x_93_phi = 0.0f;
+        x_92 = x_92_phi;
+        int const x_95 = x_95_phi;
+        x_118_phi = 0.0f;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        float x_111 = 0.0f;
+        float x_112_phi = 0.0f;
+        if (((x_95 % 32) == 0)) {
+          x_113 = (x_92 + 0.400000006f);
+          x_93_phi = x_113;
+        } else {
+          x_112_phi = x_92;
+          if (((float(x_95) % rint(x_49)) <= 0.01f)) {
+            x_111 = (x_92 + 100.0f);
+            x_112_phi = x_111;
+          }
+          x_112 = x_112_phi;
+          x_93_phi = x_112;
+        }
+        x_93 = x_93_phi;
+        if ((float(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+        {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      bool const x_120 = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+      break;
+    }
+  }
+  float const x_122 = x_122_phi;
+  c.y = x_122;
+  float const x_124 = c.x;
+  float const x_125 = c.y;
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  while (true) {
+    int x_130 = 0;
+    int const x_129 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    int const x_135_save = x_129;
+    float const x_136 = c[x_135_save];
+    if ((x_136 >= 1.0f)) {
+      float const x_140 = c[x_135_save];
+      float const x_141 = c[x_135_save];
+      c[x_135_save] = (x_140 * x_141);
+    }
+    {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  float3 const x_143 = c;
+  float3 const x_145 = normalize(fabs(x_143));
+  *(tint_symbol_6) = float4(x_145.x, x_145.y, x_145.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u3lk.0.metal:60:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_58) % rint(x_49)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+T:\tmp\u3lk.0.metal:127:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_95) % rint(x_49)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+2 errors generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..d596d85
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.spvasm
@@ -0,0 +1,449 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 254
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %x_51 "x_51"
+               OpName %x_55 "x_55"
+               OpName %x_56 "x_56"
+               OpName %x_81 "x_81"
+               OpName %x_82 "x_82"
+               OpName %x_118 "x_118"
+               OpName %x_119 "x_119"
+               OpName %x_55_phi "x_55_phi"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_81_phi "x_81_phi"
+               OpName %x_82_phi "x_82_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_85_phi "x_85_phi"
+               OpName %x_122_phi "x_122_phi"
+               OpName %x_129_phi "x_129_phi"
+               OpName %x_68 "x_68"
+               OpName %x_76 "x_76"
+               OpName %x_59 "x_59"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_75 "x_75"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_88 "x_88"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_120_phi "x_120_phi"
+               OpName %x_113 "x_113"
+               OpName %x_112 "x_112"
+               OpName %x_96 "x_96"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_111 "x_111"
+               OpName %x_112_phi "x_112_phi"
+               OpName %x_130 "x_130"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %22 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %49 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+    %int_800 = OpConstant %int 800
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %241 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %22
+       %x_51 = OpVariable %_ptr_Function_float Function %25
+       %x_55 = OpVariable %_ptr_Function_float Function %25
+       %x_56 = OpVariable %_ptr_Function_float Function %25
+       %x_81 = OpVariable %_ptr_Function_float Function %25
+       %x_82 = OpVariable %_ptr_Function_float Function %25
+      %x_118 = OpVariable %_ptr_Function_float Function %25
+      %x_119 = OpVariable %_ptr_Function_float Function %25
+   %x_55_phi = OpVariable %_ptr_Function_float Function %25
+   %x_58_phi = OpVariable %_ptr_Function_int Function %36
+   %x_81_phi = OpVariable %_ptr_Function_float Function %25
+   %x_82_phi = OpVariable %_ptr_Function_float Function %25
+   %x_83_phi = OpVariable %_ptr_Function_bool Function %42
+   %x_85_phi = OpVariable %_ptr_Function_float Function %25
+  %x_122_phi = OpVariable %_ptr_Function_float Function %25
+  %x_129_phi = OpVariable %_ptr_Function_int Function %36
+       %x_68 = OpVariable %_ptr_Function_float Function %25
+       %x_76 = OpVariable %_ptr_Function_float Function %25
+       %x_59 = OpVariable %_ptr_Function_int Function %36
+   %x_56_phi = OpVariable %_ptr_Function_float Function %25
+       %x_75 = OpVariable %_ptr_Function_float Function %25
+   %x_76_phi = OpVariable %_ptr_Function_float Function %25
+       %x_88 = OpVariable %_ptr_Function_float Function %25
+       %x_92 = OpVariable %_ptr_Function_float Function %25
+       %x_93 = OpVariable %_ptr_Function_float Function %25
+   %x_92_phi = OpVariable %_ptr_Function_float Function %25
+   %x_95_phi = OpVariable %_ptr_Function_int Function %36
+  %x_118_phi = OpVariable %_ptr_Function_float Function %25
+  %x_119_phi = OpVariable %_ptr_Function_float Function %25
+  %x_120_phi = OpVariable %_ptr_Function_bool Function %42
+      %x_113 = OpVariable %_ptr_Function_float Function %25
+      %x_112 = OpVariable %_ptr_Function_float Function %25
+       %x_96 = OpVariable %_ptr_Function_int Function %36
+   %x_93_phi = OpVariable %_ptr_Function_float Function %25
+      %x_111 = OpVariable %_ptr_Function_float Function %25
+  %x_112_phi = OpVariable %_ptr_Function_float Function %25
+      %x_130 = OpVariable %_ptr_Function_int Function %36
+               OpStore %c %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %54 = OpLoad %float %53
+         %58 = OpFMul %float %54 %float_0_125
+         %55 = OpExtInst %float %56 RoundEven %58
+         %60 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %61 = OpLoad %float %60
+               OpStore %x_51 %61
+               OpSelectionMerge %62 None
+               OpSwitch %uint_0 %63
+         %63 = OpLabel
+               OpStore %x_55_phi %float_n0_5
+               OpStore %x_58_phi %int_1
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %74 = OpLoad %float %x_55_phi
+               OpStore %x_55 %74
+         %75 = OpLoad %int %x_58_phi
+               OpStore %x_81_phi %float_0
+         %77 = OpLoad %float %x_55
+               OpStore %x_82_phi %77
+               OpStore %x_83_phi %false
+         %80 = OpSLessThan %bool %75 %int_800
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %67
+         %81 = OpLabel
+         %87 = OpSMod %int %75 %int_32
+         %89 = OpIEqual %bool %87 %int_0
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+         %93 = OpLoad %float %x_55
+         %95 = OpFAdd %float %93 %float_0_400000006
+               OpStore %x_68 %95
+         %96 = OpLoad %float %x_68
+               OpStore %x_56_phi %96
+               OpBranch %90
+         %92 = OpLabel
+         %97 = OpLoad %float %x_55
+               OpStore %x_76_phi %97
+         %98 = OpConvertSToF %float %75
+         %99 = OpExtInst %float %56 RoundEven %55
+        %100 = OpFMod %float %98 %99
+        %102 = OpFOrdLessThanEqual %bool %100 %float_0_00999999978
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+        %105 = OpLoad %float %x_55
+        %107 = OpFAdd %float %105 %float_100
+               OpStore %x_75 %107
+        %108 = OpLoad %float %x_75
+               OpStore %x_76_phi %108
+               OpBranch %103
+        %103 = OpLabel
+        %109 = OpLoad %float %x_76_phi
+               OpStore %x_76 %109
+        %110 = OpLoad %float %x_76
+               OpStore %x_56_phi %110
+               OpBranch %90
+         %90 = OpLabel
+        %111 = OpLoad %float %x_56_phi
+               OpStore %x_56 %111
+        %112 = OpConvertSToF %float %75
+        %113 = OpLoad %float %x_51
+        %114 = OpFOrdGreaterThanEqual %bool %112 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+        %117 = OpLoad %float %x_56
+               OpStore %x_81_phi %117
+        %118 = OpLoad %float %x_56
+               OpStore %x_82_phi %118
+               OpStore %x_83_phi %true
+               OpBranch %67
+        %115 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+        %120 = OpIAdd %int %75 %int_1
+               OpStore %x_59 %120
+        %121 = OpLoad %float %x_56
+               OpStore %x_55_phi %121
+        %122 = OpLoad %int %x_59
+               OpStore %x_58_phi %122
+               OpBranch %66
+         %67 = OpLabel
+        %123 = OpLoad %float %x_81_phi
+               OpStore %x_81 %123
+        %124 = OpLoad %float %x_82_phi
+               OpStore %x_82 %124
+        %125 = OpLoad %bool %x_83_phi
+        %126 = OpLoad %float %x_81
+               OpStore %x_85_phi %126
+               OpSelectionMerge %127 None
+               OpBranchConditional %125 %128 %127
+        %128 = OpLabel
+               OpBranch %62
+        %127 = OpLabel
+        %129 = OpLoad %float %x_82
+               OpStore %x_85_phi %129
+               OpBranch %62
+         %62 = OpLabel
+        %138 = OpLoad %float %x_85_phi
+        %139 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %139 %138
+        %141 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %142 = OpLoad %float %141
+               OpStore %x_88 %142
+               OpSelectionMerge %143 None
+               OpSwitch %uint_0 %144
+        %144 = OpLabel
+               OpStore %x_92_phi %float_n0_5
+               OpStore %x_95_phi %int_1
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %153 = OpLoad %float %x_92_phi
+               OpStore %x_92 %153
+        %154 = OpLoad %int %x_95_phi
+               OpStore %x_118_phi %float_0
+        %155 = OpLoad %float %x_92
+               OpStore %x_119_phi %155
+               OpStore %x_120_phi %false
+        %156 = OpSLessThan %bool %154 %int_800
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %146
+        %157 = OpLabel
+        %162 = OpSMod %int %154 %int_32
+        %163 = OpIEqual %bool %162 %int_0
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %166
+        %165 = OpLabel
+        %167 = OpLoad %float %x_92
+        %168 = OpFAdd %float %167 %float_0_400000006
+               OpStore %x_113 %168
+        %169 = OpLoad %float %x_113
+               OpStore %x_93_phi %169
+               OpBranch %164
+        %166 = OpLabel
+        %170 = OpLoad %float %x_92
+               OpStore %x_112_phi %170
+        %171 = OpConvertSToF %float %154
+        %172 = OpExtInst %float %56 RoundEven %55
+        %173 = OpFMod %float %171 %172
+        %174 = OpFOrdLessThanEqual %bool %173 %float_0_00999999978
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %175
+        %176 = OpLabel
+        %177 = OpLoad %float %x_92
+        %178 = OpFAdd %float %177 %float_100
+               OpStore %x_111 %178
+        %179 = OpLoad %float %x_111
+               OpStore %x_112_phi %179
+               OpBranch %175
+        %175 = OpLabel
+        %180 = OpLoad %float %x_112_phi
+               OpStore %x_112 %180
+        %181 = OpLoad %float %x_112
+               OpStore %x_93_phi %181
+               OpBranch %164
+        %164 = OpLabel
+        %182 = OpLoad %float %x_93_phi
+               OpStore %x_93 %182
+        %183 = OpConvertSToF %float %154
+        %184 = OpLoad %float %x_88
+        %185 = OpFOrdGreaterThanEqual %bool %183 %184
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %186
+        %187 = OpLabel
+        %188 = OpLoad %float %x_93
+               OpStore %x_118_phi %188
+        %189 = OpLoad %float %x_93
+               OpStore %x_119_phi %189
+               OpStore %x_120_phi %true
+               OpBranch %146
+        %186 = OpLabel
+               OpBranch %147
+        %147 = OpLabel
+        %190 = OpIAdd %int %154 %int_1
+               OpStore %x_96 %190
+        %191 = OpLoad %float %x_93
+               OpStore %x_92_phi %191
+        %192 = OpLoad %int %x_96
+               OpStore %x_95_phi %192
+               OpBranch %145
+        %146 = OpLabel
+        %193 = OpLoad %float %x_118_phi
+               OpStore %x_118 %193
+        %194 = OpLoad %float %x_119_phi
+               OpStore %x_119 %194
+        %195 = OpLoad %bool %x_120_phi
+        %196 = OpLoad %float %x_118
+               OpStore %x_122_phi %196
+               OpSelectionMerge %197 None
+               OpBranchConditional %195 %198 %197
+        %198 = OpLabel
+               OpBranch %143
+        %197 = OpLabel
+        %199 = OpLoad %float %x_119
+               OpStore %x_122_phi %199
+               OpBranch %143
+        %143 = OpLabel
+        %200 = OpLoad %float %x_122_phi
+        %201 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %201 %200
+        %202 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %203 = OpLoad %float %202
+        %204 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %205 = OpLoad %float %204
+        %207 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %208 = OpFAdd %float %203 %205
+               OpStore %207 %208
+               OpStore %x_129_phi %int_0
+               OpBranch %209
+        %209 = OpLabel
+               OpLoopMerge %210 %211 None
+               OpBranch %212
+        %212 = OpLabel
+        %214 = OpLoad %int %x_129_phi
+        %216 = OpSLessThan %bool %214 %int_3
+               OpSelectionMerge %217 None
+               OpBranchConditional %216 %218 %219
+        %218 = OpLabel
+               OpBranch %217
+        %219 = OpLabel
+               OpBranch %210
+        %217 = OpLabel
+        %220 = OpAccessChain %_ptr_Function_float %c %214
+        %221 = OpLoad %float %220
+        %223 = OpFOrdGreaterThanEqual %bool %221 %float_1
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %224
+        %225 = OpLabel
+        %226 = OpAccessChain %_ptr_Function_float %c %214
+        %227 = OpLoad %float %226
+        %228 = OpAccessChain %_ptr_Function_float %c %214
+        %229 = OpLoad %float %228
+        %230 = OpAccessChain %_ptr_Function_float %c %214
+        %231 = OpFMul %float %227 %229
+               OpStore %230 %231
+               OpBranch %224
+        %224 = OpLabel
+               OpBranch %211
+        %211 = OpLabel
+        %232 = OpIAdd %int %214 %int_1
+               OpStore %x_130 %232
+        %233 = OpLoad %int %x_130
+               OpStore %x_129_phi %233
+               OpBranch %209
+        %210 = OpLabel
+        %234 = OpLoad %v3float %c
+        %236 = OpExtInst %v3float %56 FAbs %234
+        %235 = OpExtInst %v3float %56 Normalize %236
+        %237 = OpCompositeExtract %float %235 0
+        %238 = OpCompositeExtract %float %235 1
+        %239 = OpCompositeExtract %float %235 2
+        %240 = OpCompositeConstruct %v4float %237 %238 %239 %float_1
+               OpStore %x_GLF_color %240
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %241
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %245 = OpLabel
+        %246 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %246
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %248 = OpLabel
+        %249 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %249
+        %250 = OpFunctionCall %void %main_1
+        %252 = OpLoad %v4float %x_GLF_color
+        %253 = OpCompositeConstruct %main_out %252
+        %251 = OpFunctionCall %void %tint_symbol_3 %253
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..20e6da9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.spvasm.expected.wgsl
@@ -0,0 +1,200 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_51 : f32;
+  var x_55 : f32;
+  var x_56 : f32;
+  var x_81 : f32;
+  var x_82 : f32;
+  var x_118 : f32;
+  var x_119 : f32;
+  var x_55_phi : f32;
+  var x_58_phi : i32;
+  var x_81_phi : f32;
+  var x_82_phi : f32;
+  var x_83_phi : bool;
+  var x_85_phi : f32;
+  var x_122_phi : f32;
+  var x_129_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_47 : f32 = x_7.resolution.x;
+  let x_49 : f32 = round((x_47 * 0.125));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5;
+      x_58_phi = 1;
+      loop {
+        var x_68 : f32;
+        var x_76 : f32;
+        var x_59 : i32;
+        var x_56_phi : f32;
+        x_55 = x_55_phi;
+        let x_58 : i32 = x_58_phi;
+        x_81_phi = 0.0;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        var x_75 : f32;
+        var x_76_phi : f32;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((f32(x_58) % round(x_49)) <= 0.01)) {
+            x_75 = (x_55 + 100.0);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((f32(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+
+        continuing {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      let x_83 : bool = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+    }
+  }
+  var x_88 : f32;
+  var x_92 : f32;
+  var x_93 : f32;
+  var x_92_phi : f32;
+  var x_95_phi : i32;
+  var x_118_phi : f32;
+  var x_119_phi : f32;
+  var x_120_phi : bool;
+  let x_85 : f32 = x_85_phi;
+  let x_86 : ptr<function, f32> = &(c.x);
+  *(x_86) = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5;
+      x_95_phi = 1;
+      loop {
+        var x_113 : f32;
+        var x_112 : f32;
+        var x_96 : i32;
+        var x_93_phi : f32;
+        x_92 = x_92_phi;
+        let x_95 : i32 = x_95_phi;
+        x_118_phi = 0.0;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        var x_111 : f32;
+        var x_112_phi : f32;
+        if (((x_95 % 32) == 0)) {
+          x_113 = (x_92 + 0.400000006);
+          x_93_phi = x_113;
+        } else {
+          x_112_phi = x_92;
+          if (((f32(x_95) % round(x_49)) <= 0.01)) {
+            x_111 = (x_92 + 100.0);
+            x_112_phi = x_111;
+          }
+          x_112 = x_112_phi;
+          x_93_phi = x_112;
+        }
+        x_93 = x_93_phi;
+        if ((f32(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+
+        continuing {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      let x_120 : bool = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+    }
+  }
+  let x_122 : f32 = x_122_phi;
+  let x_123 : ptr<function, f32> = &(c.y);
+  *(x_123) = x_122;
+  let x_124 : f32 = *(x_86);
+  let x_125 : f32 = *(x_123);
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  loop {
+    var x_130 : i32;
+    let x_129 : i32 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    let x_135 : ptr<function, f32> = &(c[x_129]);
+    let x_136 : f32 = *(x_135);
+    if ((x_136 >= 1.0)) {
+      let x_140 : f32 = *(x_135);
+      let x_141 : f32 = *(x_135);
+      *(x_135) = (x_140 * x_141);
+    }
+
+    continuing {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  let x_143 : vec3<f32> = c;
+  let x_145 : vec3<f32> = normalize(abs(x_143));
+  x_GLF_color = vec4<f32>(x_145.x, x_145.y, x_145.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
new file mode 100644
index 0000000..20e6da9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
@@ -0,0 +1,200 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_51 : f32;
+  var x_55 : f32;
+  var x_56 : f32;
+  var x_81 : f32;
+  var x_82 : f32;
+  var x_118 : f32;
+  var x_119 : f32;
+  var x_55_phi : f32;
+  var x_58_phi : i32;
+  var x_81_phi : f32;
+  var x_82_phi : f32;
+  var x_83_phi : bool;
+  var x_85_phi : f32;
+  var x_122_phi : f32;
+  var x_129_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_47 : f32 = x_7.resolution.x;
+  let x_49 : f32 = round((x_47 * 0.125));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5;
+      x_58_phi = 1;
+      loop {
+        var x_68 : f32;
+        var x_76 : f32;
+        var x_59 : i32;
+        var x_56_phi : f32;
+        x_55 = x_55_phi;
+        let x_58 : i32 = x_58_phi;
+        x_81_phi = 0.0;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        var x_75 : f32;
+        var x_76_phi : f32;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((f32(x_58) % round(x_49)) <= 0.01)) {
+            x_75 = (x_55 + 100.0);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((f32(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+
+        continuing {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      let x_83 : bool = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+    }
+  }
+  var x_88 : f32;
+  var x_92 : f32;
+  var x_93 : f32;
+  var x_92_phi : f32;
+  var x_95_phi : i32;
+  var x_118_phi : f32;
+  var x_119_phi : f32;
+  var x_120_phi : bool;
+  let x_85 : f32 = x_85_phi;
+  let x_86 : ptr<function, f32> = &(c.x);
+  *(x_86) = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5;
+      x_95_phi = 1;
+      loop {
+        var x_113 : f32;
+        var x_112 : f32;
+        var x_96 : i32;
+        var x_93_phi : f32;
+        x_92 = x_92_phi;
+        let x_95 : i32 = x_95_phi;
+        x_118_phi = 0.0;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        var x_111 : f32;
+        var x_112_phi : f32;
+        if (((x_95 % 32) == 0)) {
+          x_113 = (x_92 + 0.400000006);
+          x_93_phi = x_113;
+        } else {
+          x_112_phi = x_92;
+          if (((f32(x_95) % round(x_49)) <= 0.01)) {
+            x_111 = (x_92 + 100.0);
+            x_112_phi = x_111;
+          }
+          x_112 = x_112_phi;
+          x_93_phi = x_112;
+        }
+        x_93 = x_93_phi;
+        if ((f32(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+
+        continuing {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      let x_120 : bool = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+    }
+  }
+  let x_122 : f32 = x_122_phi;
+  let x_123 : ptr<function, f32> = &(c.y);
+  *(x_123) = x_122;
+  let x_124 : f32 = *(x_86);
+  let x_125 : f32 = *(x_123);
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  loop {
+    var x_130 : i32;
+    let x_129 : i32 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    let x_135 : ptr<function, f32> = &(c[x_129]);
+    let x_136 : f32 = *(x_135);
+    if ((x_136 >= 1.0)) {
+      let x_140 : f32 = *(x_135);
+      let x_141 : f32 = *(x_135);
+      *(x_135) = (x_140 * x_141);
+    }
+
+    continuing {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  let x_143 : vec3<f32> = c;
+  let x_145 : vec3<f32> = normalize(abs(x_143));
+  x_GLF_color = vec4<f32>(x_145.x, x_145.y, x_145.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..3102fad
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.hlsl
@@ -0,0 +1,202 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float x_51 = 0.0f;
+  float x_55 = 0.0f;
+  float x_56 = 0.0f;
+  float x_81 = 0.0f;
+  float x_82 = 0.0f;
+  float x_118 = 0.0f;
+  float x_119 = 0.0f;
+  float x_55_phi = 0.0f;
+  int x_58_phi = 0;
+  float x_81_phi = 0.0f;
+  float x_82_phi = 0.0f;
+  bool x_83_phi = false;
+  float x_85_phi = 0.0f;
+  float x_122_phi = 0.0f;
+  int x_129_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_47 = asfloat(x_7[0].x);
+  const float x_49 = round((x_47 * 0.125f));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5f;
+      x_58_phi = 1;
+      while (true) {
+        float x_68 = 0.0f;
+        float x_76 = 0.0f;
+        int x_59 = 0;
+        float x_56_phi = 0.0f;
+        x_55 = x_55_phi;
+        const int x_58 = x_58_phi;
+        x_81_phi = 0.0f;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        float x_75 = 0.0f;
+        float x_76_phi = 0.0f;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006f);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((float(x_58) % round(x_49)) <= 0.01f)) {
+            x_75 = (x_55 + 100.0f);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((float(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+        {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      const bool x_83 = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+      break;
+    }
+  }
+  float x_88 = 0.0f;
+  float x_92 = 0.0f;
+  float x_93 = 0.0f;
+  float x_92_phi = 0.0f;
+  int x_95_phi = 0;
+  float x_118_phi = 0.0f;
+  float x_119_phi = 0.0f;
+  bool x_120_phi = false;
+  const float x_85 = x_85_phi;
+  c.x = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5f;
+      x_95_phi = 1;
+      while (true) {
+        float x_113 = 0.0f;
+        float x_112 = 0.0f;
+        int x_96 = 0;
+        float x_93_phi = 0.0f;
+        x_92 = x_92_phi;
+        const int x_95 = x_95_phi;
+        x_118_phi = 0.0f;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        float x_111 = 0.0f;
+        float x_112_phi = 0.0f;
+        if (((x_95 % 32) == 0)) {
+          x_113 = (x_92 + 0.400000006f);
+          x_93_phi = x_113;
+        } else {
+          x_112_phi = x_92;
+          if (((float(x_95) % round(x_49)) <= 0.01f)) {
+            x_111 = (x_92 + 100.0f);
+            x_112_phi = x_111;
+          }
+          x_112 = x_112_phi;
+          x_93_phi = x_112;
+        }
+        x_93 = x_93_phi;
+        if ((float(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+        {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      const bool x_120 = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+      break;
+    }
+  }
+  const float x_122 = x_122_phi;
+  c.y = x_122;
+  const float x_124 = c.x;
+  const float x_125 = c.y;
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  while (true) {
+    int x_130 = 0;
+    const int x_129 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    const int x_135_save = x_129;
+    const float x_136 = c[x_135_save];
+    if ((x_136 >= 1.0f)) {
+      const float x_140 = c[x_135_save];
+      const float x_141 = c[x_135_save];
+      set_float3(c, x_135_save, (x_140 * x_141));
+    }
+    {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  const float3 x_145 = normalize(abs(c));
+  x_GLF_color = float4(x_145.x, x_145.y, x_145.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.msl
new file mode 100755
index 0000000..f28bdc8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.msl
@@ -0,0 +1,208 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float x_51 = 0.0f;
+  float x_55 = 0.0f;
+  float x_56 = 0.0f;
+  float x_81 = 0.0f;
+  float x_82 = 0.0f;
+  float x_118 = 0.0f;
+  float x_119 = 0.0f;
+  float x_55_phi = 0.0f;
+  int x_58_phi = 0;
+  float x_81_phi = 0.0f;
+  float x_82_phi = 0.0f;
+  bool x_83_phi = false;
+  float x_85_phi = 0.0f;
+  float x_122_phi = 0.0f;
+  int x_129_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_47 = x_7.resolution.x;
+  float const x_49 = rint((x_47 * 0.125f));
+  x_51 = (*(tint_symbol_5)).x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5f;
+      x_58_phi = 1;
+      while (true) {
+        float x_68 = 0.0f;
+        float x_76 = 0.0f;
+        int x_59 = 0;
+        float x_56_phi = 0.0f;
+        x_55 = x_55_phi;
+        int const x_58 = x_58_phi;
+        x_81_phi = 0.0f;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        float x_75 = 0.0f;
+        float x_76_phi = 0.0f;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006f);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((float(x_58) % rint(x_49)) <= 0.01f)) {
+            x_75 = (x_55 + 100.0f);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((float(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+        {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      bool const x_83 = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+      break;
+    }
+  }
+  float x_88 = 0.0f;
+  float x_92 = 0.0f;
+  float x_93 = 0.0f;
+  float x_92_phi = 0.0f;
+  int x_95_phi = 0;
+  float x_118_phi = 0.0f;
+  float x_119_phi = 0.0f;
+  bool x_120_phi = false;
+  float const x_85 = x_85_phi;
+  c.x = x_85;
+  x_88 = (*(tint_symbol_5)).y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5f;
+      x_95_phi = 1;
+      while (true) {
+        float x_113 = 0.0f;
+        float x_112 = 0.0f;
+        int x_96 = 0;
+        float x_93_phi = 0.0f;
+        x_92 = x_92_phi;
+        int const x_95 = x_95_phi;
+        x_118_phi = 0.0f;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        float x_111 = 0.0f;
+        float x_112_phi = 0.0f;
+        if (((x_95 % 32) == 0)) {
+          x_113 = (x_92 + 0.400000006f);
+          x_93_phi = x_113;
+        } else {
+          x_112_phi = x_92;
+          if (((float(x_95) % rint(x_49)) <= 0.01f)) {
+            x_111 = (x_92 + 100.0f);
+            x_112_phi = x_111;
+          }
+          x_112 = x_112_phi;
+          x_93_phi = x_112;
+        }
+        x_93 = x_93_phi;
+        if ((float(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+        {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      bool const x_120 = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+      break;
+    }
+  }
+  float const x_122 = x_122_phi;
+  c.y = x_122;
+  float const x_124 = c.x;
+  float const x_125 = c.y;
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  while (true) {
+    int x_130 = 0;
+    int const x_129 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    int const x_135_save = x_129;
+    float const x_136 = c[x_135_save];
+    if ((x_136 >= 1.0f)) {
+      float const x_140 = c[x_135_save];
+      float const x_141 = c[x_135_save];
+      c[x_135_save] = (x_140 * x_141);
+    }
+    {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  float3 const x_143 = c;
+  float3 const x_145 = normalize(fabs(x_143));
+  *(tint_symbol_6) = float4(x_145.x, x_145.y, x_145.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\udmw.0.metal:60:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_58) % rint(x_49)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+T:\tmp\udmw.0.metal:127:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_95) % rint(x_49)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+2 errors generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..d596d85
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.spvasm
@@ -0,0 +1,449 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 254
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %x_51 "x_51"
+               OpName %x_55 "x_55"
+               OpName %x_56 "x_56"
+               OpName %x_81 "x_81"
+               OpName %x_82 "x_82"
+               OpName %x_118 "x_118"
+               OpName %x_119 "x_119"
+               OpName %x_55_phi "x_55_phi"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_81_phi "x_81_phi"
+               OpName %x_82_phi "x_82_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_85_phi "x_85_phi"
+               OpName %x_122_phi "x_122_phi"
+               OpName %x_129_phi "x_129_phi"
+               OpName %x_68 "x_68"
+               OpName %x_76 "x_76"
+               OpName %x_59 "x_59"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_75 "x_75"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_88 "x_88"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_120_phi "x_120_phi"
+               OpName %x_113 "x_113"
+               OpName %x_112 "x_112"
+               OpName %x_96 "x_96"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_111 "x_111"
+               OpName %x_112_phi "x_112_phi"
+               OpName %x_130 "x_130"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %22 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %49 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+    %int_800 = OpConstant %int 800
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %241 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %22
+       %x_51 = OpVariable %_ptr_Function_float Function %25
+       %x_55 = OpVariable %_ptr_Function_float Function %25
+       %x_56 = OpVariable %_ptr_Function_float Function %25
+       %x_81 = OpVariable %_ptr_Function_float Function %25
+       %x_82 = OpVariable %_ptr_Function_float Function %25
+      %x_118 = OpVariable %_ptr_Function_float Function %25
+      %x_119 = OpVariable %_ptr_Function_float Function %25
+   %x_55_phi = OpVariable %_ptr_Function_float Function %25
+   %x_58_phi = OpVariable %_ptr_Function_int Function %36
+   %x_81_phi = OpVariable %_ptr_Function_float Function %25
+   %x_82_phi = OpVariable %_ptr_Function_float Function %25
+   %x_83_phi = OpVariable %_ptr_Function_bool Function %42
+   %x_85_phi = OpVariable %_ptr_Function_float Function %25
+  %x_122_phi = OpVariable %_ptr_Function_float Function %25
+  %x_129_phi = OpVariable %_ptr_Function_int Function %36
+       %x_68 = OpVariable %_ptr_Function_float Function %25
+       %x_76 = OpVariable %_ptr_Function_float Function %25
+       %x_59 = OpVariable %_ptr_Function_int Function %36
+   %x_56_phi = OpVariable %_ptr_Function_float Function %25
+       %x_75 = OpVariable %_ptr_Function_float Function %25
+   %x_76_phi = OpVariable %_ptr_Function_float Function %25
+       %x_88 = OpVariable %_ptr_Function_float Function %25
+       %x_92 = OpVariable %_ptr_Function_float Function %25
+       %x_93 = OpVariable %_ptr_Function_float Function %25
+   %x_92_phi = OpVariable %_ptr_Function_float Function %25
+   %x_95_phi = OpVariable %_ptr_Function_int Function %36
+  %x_118_phi = OpVariable %_ptr_Function_float Function %25
+  %x_119_phi = OpVariable %_ptr_Function_float Function %25
+  %x_120_phi = OpVariable %_ptr_Function_bool Function %42
+      %x_113 = OpVariable %_ptr_Function_float Function %25
+      %x_112 = OpVariable %_ptr_Function_float Function %25
+       %x_96 = OpVariable %_ptr_Function_int Function %36
+   %x_93_phi = OpVariable %_ptr_Function_float Function %25
+      %x_111 = OpVariable %_ptr_Function_float Function %25
+  %x_112_phi = OpVariable %_ptr_Function_float Function %25
+      %x_130 = OpVariable %_ptr_Function_int Function %36
+               OpStore %c %49
+         %53 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %54 = OpLoad %float %53
+         %58 = OpFMul %float %54 %float_0_125
+         %55 = OpExtInst %float %56 RoundEven %58
+         %60 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %61 = OpLoad %float %60
+               OpStore %x_51 %61
+               OpSelectionMerge %62 None
+               OpSwitch %uint_0 %63
+         %63 = OpLabel
+               OpStore %x_55_phi %float_n0_5
+               OpStore %x_58_phi %int_1
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+         %74 = OpLoad %float %x_55_phi
+               OpStore %x_55 %74
+         %75 = OpLoad %int %x_58_phi
+               OpStore %x_81_phi %float_0
+         %77 = OpLoad %float %x_55
+               OpStore %x_82_phi %77
+               OpStore %x_83_phi %false
+         %80 = OpSLessThan %bool %75 %int_800
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %67
+         %81 = OpLabel
+         %87 = OpSMod %int %75 %int_32
+         %89 = OpIEqual %bool %87 %int_0
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %92
+         %91 = OpLabel
+         %93 = OpLoad %float %x_55
+         %95 = OpFAdd %float %93 %float_0_400000006
+               OpStore %x_68 %95
+         %96 = OpLoad %float %x_68
+               OpStore %x_56_phi %96
+               OpBranch %90
+         %92 = OpLabel
+         %97 = OpLoad %float %x_55
+               OpStore %x_76_phi %97
+         %98 = OpConvertSToF %float %75
+         %99 = OpExtInst %float %56 RoundEven %55
+        %100 = OpFMod %float %98 %99
+        %102 = OpFOrdLessThanEqual %bool %100 %float_0_00999999978
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+        %105 = OpLoad %float %x_55
+        %107 = OpFAdd %float %105 %float_100
+               OpStore %x_75 %107
+        %108 = OpLoad %float %x_75
+               OpStore %x_76_phi %108
+               OpBranch %103
+        %103 = OpLabel
+        %109 = OpLoad %float %x_76_phi
+               OpStore %x_76 %109
+        %110 = OpLoad %float %x_76
+               OpStore %x_56_phi %110
+               OpBranch %90
+         %90 = OpLabel
+        %111 = OpLoad %float %x_56_phi
+               OpStore %x_56 %111
+        %112 = OpConvertSToF %float %75
+        %113 = OpLoad %float %x_51
+        %114 = OpFOrdGreaterThanEqual %bool %112 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+        %117 = OpLoad %float %x_56
+               OpStore %x_81_phi %117
+        %118 = OpLoad %float %x_56
+               OpStore %x_82_phi %118
+               OpStore %x_83_phi %true
+               OpBranch %67
+        %115 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+        %120 = OpIAdd %int %75 %int_1
+               OpStore %x_59 %120
+        %121 = OpLoad %float %x_56
+               OpStore %x_55_phi %121
+        %122 = OpLoad %int %x_59
+               OpStore %x_58_phi %122
+               OpBranch %66
+         %67 = OpLabel
+        %123 = OpLoad %float %x_81_phi
+               OpStore %x_81 %123
+        %124 = OpLoad %float %x_82_phi
+               OpStore %x_82 %124
+        %125 = OpLoad %bool %x_83_phi
+        %126 = OpLoad %float %x_81
+               OpStore %x_85_phi %126
+               OpSelectionMerge %127 None
+               OpBranchConditional %125 %128 %127
+        %128 = OpLabel
+               OpBranch %62
+        %127 = OpLabel
+        %129 = OpLoad %float %x_82
+               OpStore %x_85_phi %129
+               OpBranch %62
+         %62 = OpLabel
+        %138 = OpLoad %float %x_85_phi
+        %139 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %139 %138
+        %141 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %142 = OpLoad %float %141
+               OpStore %x_88 %142
+               OpSelectionMerge %143 None
+               OpSwitch %uint_0 %144
+        %144 = OpLabel
+               OpStore %x_92_phi %float_n0_5
+               OpStore %x_95_phi %int_1
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %153 = OpLoad %float %x_92_phi
+               OpStore %x_92 %153
+        %154 = OpLoad %int %x_95_phi
+               OpStore %x_118_phi %float_0
+        %155 = OpLoad %float %x_92
+               OpStore %x_119_phi %155
+               OpStore %x_120_phi %false
+        %156 = OpSLessThan %bool %154 %int_800
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+               OpBranch %157
+        %159 = OpLabel
+               OpBranch %146
+        %157 = OpLabel
+        %162 = OpSMod %int %154 %int_32
+        %163 = OpIEqual %bool %162 %int_0
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %166
+        %165 = OpLabel
+        %167 = OpLoad %float %x_92
+        %168 = OpFAdd %float %167 %float_0_400000006
+               OpStore %x_113 %168
+        %169 = OpLoad %float %x_113
+               OpStore %x_93_phi %169
+               OpBranch %164
+        %166 = OpLabel
+        %170 = OpLoad %float %x_92
+               OpStore %x_112_phi %170
+        %171 = OpConvertSToF %float %154
+        %172 = OpExtInst %float %56 RoundEven %55
+        %173 = OpFMod %float %171 %172
+        %174 = OpFOrdLessThanEqual %bool %173 %float_0_00999999978
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %175
+        %176 = OpLabel
+        %177 = OpLoad %float %x_92
+        %178 = OpFAdd %float %177 %float_100
+               OpStore %x_111 %178
+        %179 = OpLoad %float %x_111
+               OpStore %x_112_phi %179
+               OpBranch %175
+        %175 = OpLabel
+        %180 = OpLoad %float %x_112_phi
+               OpStore %x_112 %180
+        %181 = OpLoad %float %x_112
+               OpStore %x_93_phi %181
+               OpBranch %164
+        %164 = OpLabel
+        %182 = OpLoad %float %x_93_phi
+               OpStore %x_93 %182
+        %183 = OpConvertSToF %float %154
+        %184 = OpLoad %float %x_88
+        %185 = OpFOrdGreaterThanEqual %bool %183 %184
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %186
+        %187 = OpLabel
+        %188 = OpLoad %float %x_93
+               OpStore %x_118_phi %188
+        %189 = OpLoad %float %x_93
+               OpStore %x_119_phi %189
+               OpStore %x_120_phi %true
+               OpBranch %146
+        %186 = OpLabel
+               OpBranch %147
+        %147 = OpLabel
+        %190 = OpIAdd %int %154 %int_1
+               OpStore %x_96 %190
+        %191 = OpLoad %float %x_93
+               OpStore %x_92_phi %191
+        %192 = OpLoad %int %x_96
+               OpStore %x_95_phi %192
+               OpBranch %145
+        %146 = OpLabel
+        %193 = OpLoad %float %x_118_phi
+               OpStore %x_118 %193
+        %194 = OpLoad %float %x_119_phi
+               OpStore %x_119 %194
+        %195 = OpLoad %bool %x_120_phi
+        %196 = OpLoad %float %x_118
+               OpStore %x_122_phi %196
+               OpSelectionMerge %197 None
+               OpBranchConditional %195 %198 %197
+        %198 = OpLabel
+               OpBranch %143
+        %197 = OpLabel
+        %199 = OpLoad %float %x_119
+               OpStore %x_122_phi %199
+               OpBranch %143
+        %143 = OpLabel
+        %200 = OpLoad %float %x_122_phi
+        %201 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %201 %200
+        %202 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %203 = OpLoad %float %202
+        %204 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %205 = OpLoad %float %204
+        %207 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %208 = OpFAdd %float %203 %205
+               OpStore %207 %208
+               OpStore %x_129_phi %int_0
+               OpBranch %209
+        %209 = OpLabel
+               OpLoopMerge %210 %211 None
+               OpBranch %212
+        %212 = OpLabel
+        %214 = OpLoad %int %x_129_phi
+        %216 = OpSLessThan %bool %214 %int_3
+               OpSelectionMerge %217 None
+               OpBranchConditional %216 %218 %219
+        %218 = OpLabel
+               OpBranch %217
+        %219 = OpLabel
+               OpBranch %210
+        %217 = OpLabel
+        %220 = OpAccessChain %_ptr_Function_float %c %214
+        %221 = OpLoad %float %220
+        %223 = OpFOrdGreaterThanEqual %bool %221 %float_1
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %224
+        %225 = OpLabel
+        %226 = OpAccessChain %_ptr_Function_float %c %214
+        %227 = OpLoad %float %226
+        %228 = OpAccessChain %_ptr_Function_float %c %214
+        %229 = OpLoad %float %228
+        %230 = OpAccessChain %_ptr_Function_float %c %214
+        %231 = OpFMul %float %227 %229
+               OpStore %230 %231
+               OpBranch %224
+        %224 = OpLabel
+               OpBranch %211
+        %211 = OpLabel
+        %232 = OpIAdd %int %214 %int_1
+               OpStore %x_130 %232
+        %233 = OpLoad %int %x_130
+               OpStore %x_129_phi %233
+               OpBranch %209
+        %210 = OpLabel
+        %234 = OpLoad %v3float %c
+        %236 = OpExtInst %v3float %56 FAbs %234
+        %235 = OpExtInst %v3float %56 Normalize %236
+        %237 = OpCompositeExtract %float %235 0
+        %238 = OpCompositeExtract %float %235 1
+        %239 = OpCompositeExtract %float %235 2
+        %240 = OpCompositeConstruct %v4float %237 %238 %239 %float_1
+               OpStore %x_GLF_color %240
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %241
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %245 = OpLabel
+        %246 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %246
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %248 = OpLabel
+        %249 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %249
+        %250 = OpFunctionCall %void %main_1
+        %252 = OpLoad %v4float %x_GLF_color
+        %253 = OpCompositeConstruct %main_out %252
+        %251 = OpFunctionCall %void %tint_symbol_3 %253
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..20e6da9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl.expected.wgsl
@@ -0,0 +1,200 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_51 : f32;
+  var x_55 : f32;
+  var x_56 : f32;
+  var x_81 : f32;
+  var x_82 : f32;
+  var x_118 : f32;
+  var x_119 : f32;
+  var x_55_phi : f32;
+  var x_58_phi : i32;
+  var x_81_phi : f32;
+  var x_82_phi : f32;
+  var x_83_phi : bool;
+  var x_85_phi : f32;
+  var x_122_phi : f32;
+  var x_129_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_47 : f32 = x_7.resolution.x;
+  let x_49 : f32 = round((x_47 * 0.125));
+  x_51 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_55_phi = -0.5;
+      x_58_phi = 1;
+      loop {
+        var x_68 : f32;
+        var x_76 : f32;
+        var x_59 : i32;
+        var x_56_phi : f32;
+        x_55 = x_55_phi;
+        let x_58 : i32 = x_58_phi;
+        x_81_phi = 0.0;
+        x_82_phi = x_55;
+        x_83_phi = false;
+        if ((x_58 < 800)) {
+        } else {
+          break;
+        }
+        var x_75 : f32;
+        var x_76_phi : f32;
+        if (((x_58 % 32) == 0)) {
+          x_68 = (x_55 + 0.400000006);
+          x_56_phi = x_68;
+        } else {
+          x_76_phi = x_55;
+          if (((f32(x_58) % round(x_49)) <= 0.01)) {
+            x_75 = (x_55 + 100.0);
+            x_76_phi = x_75;
+          }
+          x_76 = x_76_phi;
+          x_56_phi = x_76;
+        }
+        x_56 = x_56_phi;
+        if ((f32(x_58) >= x_51)) {
+          x_81_phi = x_56;
+          x_82_phi = x_56;
+          x_83_phi = true;
+          break;
+        }
+
+        continuing {
+          x_59 = (x_58 + 1);
+          x_55_phi = x_56;
+          x_58_phi = x_59;
+        }
+      }
+      x_81 = x_81_phi;
+      x_82 = x_82_phi;
+      let x_83 : bool = x_83_phi;
+      x_85_phi = x_81;
+      if (x_83) {
+        break;
+      }
+      x_85_phi = x_82;
+    }
+  }
+  var x_88 : f32;
+  var x_92 : f32;
+  var x_93 : f32;
+  var x_92_phi : f32;
+  var x_95_phi : i32;
+  var x_118_phi : f32;
+  var x_119_phi : f32;
+  var x_120_phi : bool;
+  let x_85 : f32 = x_85_phi;
+  let x_86 : ptr<function, f32> = &(c.x);
+  *(x_86) = x_85;
+  x_88 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_92_phi = -0.5;
+      x_95_phi = 1;
+      loop {
+        var x_113 : f32;
+        var x_112 : f32;
+        var x_96 : i32;
+        var x_93_phi : f32;
+        x_92 = x_92_phi;
+        let x_95 : i32 = x_95_phi;
+        x_118_phi = 0.0;
+        x_119_phi = x_92;
+        x_120_phi = false;
+        if ((x_95 < 800)) {
+        } else {
+          break;
+        }
+        var x_111 : f32;
+        var x_112_phi : f32;
+        if (((x_95 % 32) == 0)) {
+          x_113 = (x_92 + 0.400000006);
+          x_93_phi = x_113;
+        } else {
+          x_112_phi = x_92;
+          if (((f32(x_95) % round(x_49)) <= 0.01)) {
+            x_111 = (x_92 + 100.0);
+            x_112_phi = x_111;
+          }
+          x_112 = x_112_phi;
+          x_93_phi = x_112;
+        }
+        x_93 = x_93_phi;
+        if ((f32(x_95) >= x_88)) {
+          x_118_phi = x_93;
+          x_119_phi = x_93;
+          x_120_phi = true;
+          break;
+        }
+
+        continuing {
+          x_96 = (x_95 + 1);
+          x_92_phi = x_93;
+          x_95_phi = x_96;
+        }
+      }
+      x_118 = x_118_phi;
+      x_119 = x_119_phi;
+      let x_120 : bool = x_120_phi;
+      x_122_phi = x_118;
+      if (x_120) {
+        break;
+      }
+      x_122_phi = x_119;
+    }
+  }
+  let x_122 : f32 = x_122_phi;
+  let x_123 : ptr<function, f32> = &(c.y);
+  *(x_123) = x_122;
+  let x_124 : f32 = *(x_86);
+  let x_125 : f32 = *(x_123);
+  c.z = (x_124 + x_125);
+  x_129_phi = 0;
+  loop {
+    var x_130 : i32;
+    let x_129 : i32 = x_129_phi;
+    if ((x_129 < 3)) {
+    } else {
+      break;
+    }
+    let x_135 : ptr<function, f32> = &(c[x_129]);
+    let x_136 : f32 = *(x_135);
+    if ((x_136 >= 1.0)) {
+      let x_140 : f32 = *(x_135);
+      let x_141 : f32 = *(x_135);
+      *(x_135) = (x_140 * x_141);
+    }
+
+    continuing {
+      x_130 = (x_129 + 1);
+      x_129_phi = x_130;
+    }
+  }
+  let x_143 : vec3<f32> = c;
+  let x_145 : vec3<f32> = normalize(abs(x_143));
+  x_GLF_color = vec4<f32>(x_145.x, x_145.y, x_145.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm
new file mode 100644
index 0000000..cc80c9a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm
@@ -0,0 +1,662 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %pos "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %map "map"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+   %float_16 = OpConstant %float 16
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %43 = OpConstantComposite %v2int %int_0 %int_0
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %53 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %int_0_0 = OpConstant %int 0
+         %57 = OpConstantComposite %_arr_int_uint_256 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0
+       %main = OpFunction %void None %18
+         %58 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function
+       %ipos = OpVariable %_ptr_Function_v2int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %p = OpVariable %_ptr_Function_v2int Function
+    %canwalk = OpVariable %_ptr_Function_bool Function
+          %v = OpVariable %_ptr_Function_int Function
+ %directions = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+          %d = OpVariable %_ptr_Function_int Function
+         %59 = OpLoad %v4float %gl_FragCoord
+         %60 = OpVectorShuffle %v2float %59 %59 0 1
+         %61 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %62 = OpLoad %v2float %61
+         %63 = OpFDiv %v2float %60 %62
+               OpStore %pos %63
+         %64 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %65 = OpLoad %float %64
+         %66 = OpFMul %float %65 %float_16
+         %67 = OpConvertFToS %int %66
+         %68 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %69 = OpLoad %float %68
+         %70 = OpFMul %float %69 %float_16
+         %71 = OpConvertFToS %int %70
+         %72 = OpCompositeConstruct %v2int %67 %71
+               OpStore %ipos %72
+               OpStore %i %int_0
+               OpBranch %73
+         %73 = OpLabel
+               OpLoopMerge %74 %75 None
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpLoad %int %i
+         %78 = OpSLessThan %bool %77 %int_256
+               OpBranchConditional %78 %79 %74
+         %79 = OpLabel
+         %80 = OpLoad %int %i
+         %81 = OpAccessChain %_ptr_Private_int %map %80
+               OpStore %81 %int_0
+               OpBranch %75
+         %75 = OpLabel
+         %82 = OpLoad %int %i
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %i %83
+               OpBranch %73
+         %74 = OpLabel
+               OpStore %p %43
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %84
+         %84 = OpLabel
+               OpLoopMerge %85 %86 None
+               OpBranch %87
+         %87 = OpLabel
+         %88 = OpLoad %int %v
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %v %89
+               OpStore %directions %int_0
+         %90 = OpAccessChain %_ptr_Function_int %p %uint_0
+         %91 = OpLoad %int %90
+         %92 = OpSGreaterThan %bool %91 %int_0
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+         %95 = OpAccessChain %_ptr_Function_int %p %uint_0
+         %96 = OpLoad %int %95
+         %97 = OpISub %int %96 %int_2
+         %98 = OpAccessChain %_ptr_Function_int %p %uint_1
+         %99 = OpLoad %int %98
+        %100 = OpIMul %int %99 %int_16
+        %101 = OpIAdd %int %97 %100
+        %102 = OpAccessChain %_ptr_Private_int %map %101
+        %103 = OpLoad %int %102
+        %104 = OpIEqual %bool %103 %int_0
+               OpBranch %93
+         %93 = OpLabel
+        %105 = OpPhi %bool %92 %87 %104 %94
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+        %108 = OpLoad %int %directions
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %directions %109
+               OpBranch %106
+        %106 = OpLabel
+        %110 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %111 = OpLoad %int %110
+        %112 = OpSGreaterThan %bool %111 %int_0
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+        %115 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %116 = OpLoad %int %115
+        %117 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %118 = OpLoad %int %117
+        %119 = OpISub %int %118 %int_2
+        %120 = OpIMul %int %119 %int_16
+        %121 = OpIAdd %int %116 %120
+        %122 = OpAccessChain %_ptr_Private_int %map %121
+        %123 = OpLoad %int %122
+        %124 = OpIEqual %bool %123 %int_0
+               OpBranch %113
+        %113 = OpLabel
+        %125 = OpPhi %bool %112 %106 %124 %114
+               OpSelectionMerge %126 None
+               OpBranchConditional %125 %127 %126
+        %127 = OpLabel
+        %128 = OpLoad %int %directions
+        %129 = OpIAdd %int %128 %int_1
+               OpStore %directions %129
+               OpBranch %126
+        %126 = OpLabel
+        %130 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %131 = OpLoad %int %130
+        %132 = OpSLessThan %bool %131 %int_14
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %133
+        %134 = OpLabel
+        %135 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %136 = OpLoad %int %135
+        %137 = OpIAdd %int %136 %int_2
+        %138 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %139 = OpLoad %int %138
+        %140 = OpIMul %int %139 %int_16
+        %141 = OpIAdd %int %137 %140
+        %142 = OpAccessChain %_ptr_Private_int %map %141
+        %143 = OpLoad %int %142
+        %144 = OpIEqual %bool %143 %int_0
+               OpBranch %133
+        %133 = OpLabel
+        %145 = OpPhi %bool %132 %126 %144 %134
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpLoad %int %directions
+        %149 = OpIAdd %int %148 %int_1
+               OpStore %directions %149
+               OpBranch %146
+        %146 = OpLabel
+        %150 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %151 = OpLoad %int %150
+        %152 = OpSLessThan %bool %151 %int_14
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+        %155 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %156 = OpLoad %int %155
+        %157 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %158 = OpLoad %int %157
+        %159 = OpIAdd %int %158 %int_2
+        %160 = OpIMul %int %159 %int_16
+        %161 = OpIAdd %int %156 %160
+        %162 = OpAccessChain %_ptr_Private_int %map %161
+        %163 = OpLoad %int %162
+        %164 = OpIEqual %bool %163 %int_0
+               OpBranch %153
+        %153 = OpLabel
+        %165 = OpPhi %bool %152 %146 %164 %154
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %166
+        %167 = OpLabel
+        %168 = OpLoad %int %directions
+        %169 = OpIAdd %int %168 %int_1
+               OpStore %directions %169
+               OpBranch %166
+        %166 = OpLabel
+        %170 = OpLoad %int %directions
+        %171 = OpIEqual %bool %170 %int_0
+               OpSelectionMerge %172 None
+               OpBranchConditional %171 %173 %174
+        %173 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %175
+        %175 = OpLabel
+               OpLoopMerge %176 %177 None
+               OpBranch %178
+        %178 = OpLabel
+        %179 = OpLoad %int %i
+        %180 = OpSLessThan %bool %179 %int_8
+               OpBranchConditional %180 %181 %176
+        %181 = OpLabel
+               OpStore %j %int_0
+               OpBranch %182
+        %182 = OpLabel
+               OpLoopMerge %183 %184 None
+               OpBranch %185
+        %185 = OpLabel
+        %186 = OpLoad %int %j
+        %187 = OpSLessThan %bool %186 %int_8
+               OpBranchConditional %187 %188 %183
+        %188 = OpLabel
+        %189 = OpLoad %int %j
+        %190 = OpIMul %int %189 %int_2
+        %191 = OpLoad %int %i
+        %192 = OpIMul %int %191 %int_2
+        %193 = OpIMul %int %192 %int_16
+        %194 = OpIAdd %int %190 %193
+        %195 = OpAccessChain %_ptr_Private_int %map %194
+        %196 = OpLoad %int %195
+        %197 = OpIEqual %bool %196 %int_0
+               OpSelectionMerge %198 None
+               OpBranchConditional %197 %199 %198
+        %199 = OpLabel
+        %200 = OpLoad %int %j
+        %201 = OpIMul %int %200 %int_2
+        %202 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %202 %201
+        %203 = OpLoad %int %i
+        %204 = OpIMul %int %203 %int_2
+        %205 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %205 %204
+               OpStore %canwalk %true
+               OpBranch %198
+        %198 = OpLabel
+               OpBranch %184
+        %184 = OpLabel
+        %206 = OpLoad %int %j
+        %207 = OpIAdd %int %206 %int_1
+               OpStore %j %207
+               OpBranch %182
+        %183 = OpLabel
+               OpBranch %177
+        %177 = OpLabel
+        %208 = OpLoad %int %i
+        %209 = OpIAdd %int %208 %int_1
+               OpStore %i %209
+               OpBranch %175
+        %176 = OpLabel
+        %210 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %211 = OpLoad %int %210
+        %212 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %213 = OpLoad %int %212
+        %214 = OpIMul %int %213 %int_16
+        %215 = OpIAdd %int %211 %214
+        %216 = OpAccessChain %_ptr_Private_int %map %215
+               OpStore %216 %int_1
+               OpBranch %172
+        %174 = OpLabel
+        %217 = OpLoad %int %v
+        %218 = OpLoad %int %directions
+        %219 = OpSMod %int %217 %218
+               OpStore %d %219
+        %220 = OpLoad %int %directions
+        %221 = OpLoad %int %v
+        %222 = OpIAdd %int %221 %220
+               OpStore %v %222
+        %223 = OpLoad %int %d
+        %224 = OpSGreaterThanEqual %bool %223 %int_0
+               OpSelectionMerge %225 None
+               OpBranchConditional %224 %226 %225
+        %226 = OpLabel
+        %227 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %228 = OpLoad %int %227
+        %229 = OpSGreaterThan %bool %228 %int_0
+               OpBranch %225
+        %225 = OpLabel
+        %230 = OpPhi %bool %224 %174 %229 %226
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %231
+        %232 = OpLabel
+        %233 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %234 = OpLoad %int %233
+        %235 = OpISub %int %234 %int_2
+        %236 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %237 = OpLoad %int %236
+        %238 = OpIMul %int %237 %int_16
+        %239 = OpIAdd %int %235 %238
+        %240 = OpAccessChain %_ptr_Private_int %map %239
+        %241 = OpLoad %int %240
+        %242 = OpIEqual %bool %241 %int_0
+               OpBranch %231
+        %231 = OpLabel
+        %243 = OpPhi %bool %230 %225 %242 %232
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+        %246 = OpLoad %int %d
+        %247 = OpISub %int %246 %int_1
+               OpStore %d %247
+        %248 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %249 = OpLoad %int %248
+        %250 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %251 = OpLoad %int %250
+        %252 = OpIMul %int %251 %int_16
+        %253 = OpIAdd %int %249 %252
+        %254 = OpAccessChain %_ptr_Private_int %map %253
+               OpStore %254 %int_1
+        %255 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %256 = OpLoad %int %255
+        %257 = OpISub %int %256 %int_1
+        %258 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %259 = OpLoad %int %258
+        %260 = OpIMul %int %259 %int_16
+        %261 = OpIAdd %int %257 %260
+        %262 = OpAccessChain %_ptr_Private_int %map %261
+               OpStore %262 %int_1
+        %263 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %264 = OpLoad %int %263
+        %265 = OpISub %int %264 %int_2
+        %266 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %267 = OpLoad %int %266
+        %268 = OpIMul %int %267 %int_16
+        %269 = OpIAdd %int %265 %268
+        %270 = OpAccessChain %_ptr_Private_int %map %269
+               OpStore %270 %int_1
+        %271 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %272 = OpLoad %int %271
+        %273 = OpISub %int %272 %int_2
+        %274 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %274 %273
+               OpBranch %244
+        %244 = OpLabel
+        %275 = OpLoad %int %d
+        %276 = OpSGreaterThanEqual %bool %275 %int_0
+               OpSelectionMerge %277 None
+               OpBranchConditional %276 %278 %277
+        %278 = OpLabel
+        %279 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %280 = OpLoad %int %279
+        %281 = OpSGreaterThan %bool %280 %int_0
+               OpBranch %277
+        %277 = OpLabel
+        %282 = OpPhi %bool %276 %244 %281 %278
+               OpBranch %283
+        %283 = OpLabel
+        %284 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpSelectionMerge %285 None
+               OpBranchConditional %282 %286 %287
+        %286 = OpLabel
+        %288 = OpLoad %int %284
+               OpBranch %285
+        %287 = OpLabel
+        %289 = OpCopyObject %int %int_0_0
+               OpBranch %285
+        %285 = OpLabel
+        %290 = OpPhi %int %288 %286 %289 %287
+        %291 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpSelectionMerge %292 None
+               OpBranchConditional %282 %293 %294
+        %293 = OpLabel
+        %295 = OpLoad %int %291
+               OpBranch %292
+        %294 = OpLabel
+        %296 = OpCopyObject %int %int_0_0
+               OpBranch %292
+        %292 = OpLabel
+        %297 = OpPhi %int %295 %293 %296 %294
+        %298 = OpISub %int %297 %int_2
+        %299 = OpIMul %int %298 %int_16
+               OpSelectionMerge %300 None
+               OpBranchConditional %282 %301 %302
+        %301 = OpLabel
+        %303 = OpLoad %_arr_int_uint_256 %map
+               OpBranch %300
+        %302 = OpLabel
+        %304 = OpCopyObject %_arr_int_uint_256 %57
+               OpBranch %300
+        %300 = OpLabel
+        %305 = OpPhi %_arr_int_uint_256 %303 %301 %304 %302
+               OpSelectionMerge %306 None
+               OpBranchConditional %282 %307 %306
+        %307 = OpLabel
+               OpStore %map %57
+               OpBranch %306
+        %306 = OpLabel
+               OpSelectionMerge %308 None
+               OpBranchConditional %282 %309 %308
+        %309 = OpLabel
+               OpStore %map %305
+               OpBranch %308
+        %308 = OpLabel
+        %310 = OpIAdd %int %290 %299
+        %311 = OpAccessChain %_ptr_Private_int %map %310
+               OpSelectionMerge %312 None
+               OpBranchConditional %282 %313 %314
+        %313 = OpLabel
+        %315 = OpLoad %int %311
+               OpBranch %312
+        %314 = OpLabel
+        %316 = OpCopyObject %int %int_0_0
+               OpBranch %312
+        %312 = OpLabel
+        %317 = OpPhi %int %315 %313 %316 %314
+        %318 = OpIEqual %bool %317 %int_0
+               OpBranch %319
+        %319 = OpLabel
+        %320 = OpSelect %bool %282 %318 %282
+               OpSelectionMerge %321 None
+               OpBranchConditional %320 %322 %321
+        %322 = OpLabel
+        %323 = OpLoad %int %d
+        %324 = OpISub %int %323 %int_1
+               OpStore %d %324
+        %325 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %326 = OpLoad %int %325
+        %327 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %328 = OpLoad %int %327
+        %329 = OpIMul %int %328 %int_16
+        %330 = OpIAdd %int %326 %329
+        %331 = OpAccessChain %_ptr_Private_int %map %330
+               OpStore %331 %int_1
+        %332 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %333 = OpLoad %int %332
+        %334 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %335 = OpLoad %int %334
+        %336 = OpISub %int %335 %int_1
+        %337 = OpIMul %int %336 %int_16
+        %338 = OpIAdd %int %333 %337
+        %339 = OpAccessChain %_ptr_Private_int %map %338
+               OpStore %339 %int_1
+        %340 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %341 = OpLoad %int %340
+        %342 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %343 = OpLoad %int %342
+        %344 = OpISub %int %343 %int_2
+        %345 = OpLoad %_arr_int_uint_256 %map
+               OpStore %map %57
+               OpStore %map %345
+        %346 = OpIMul %int %344 %int_16
+        %347 = OpIAdd %int %341 %346
+        %348 = OpAccessChain %_ptr_Private_int %map %347
+               OpStore %348 %int_1
+        %349 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %350 = OpLoad %int %349
+        %351 = OpISub %int %350 %int_2
+        %352 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %352 %351
+               OpBranch %321
+        %321 = OpLabel
+        %353 = OpLoad %int %d
+        %354 = OpSGreaterThanEqual %bool %353 %int_0
+               OpSelectionMerge %355 None
+               OpBranchConditional %354 %356 %355
+        %356 = OpLabel
+        %357 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %358 = OpLoad %int %357
+        %359 = OpSLessThan %bool %358 %int_14
+               OpBranch %355
+        %355 = OpLabel
+        %360 = OpPhi %bool %354 %321 %359 %356
+               OpSelectionMerge %361 None
+               OpBranchConditional %360 %362 %361
+        %362 = OpLabel
+        %363 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %364 = OpLoad %int %363
+        %365 = OpIAdd %int %364 %int_2
+        %366 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %367 = OpLoad %int %366
+        %368 = OpIMul %int %367 %int_16
+        %369 = OpIAdd %int %365 %368
+        %370 = OpAccessChain %_ptr_Private_int %map %369
+        %371 = OpLoad %int %370
+        %372 = OpIEqual %bool %371 %int_0
+               OpBranch %361
+        %361 = OpLabel
+        %373 = OpPhi %bool %360 %355 %372 %362
+               OpSelectionMerge %374 None
+               OpBranchConditional %373 %375 %374
+        %375 = OpLabel
+        %376 = OpLoad %int %d
+        %377 = OpISub %int %376 %int_1
+               OpStore %d %377
+        %378 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %379 = OpLoad %int %378
+        %380 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %381 = OpLoad %int %380
+        %382 = OpIMul %int %381 %int_16
+        %383 = OpIAdd %int %379 %382
+        %384 = OpAccessChain %_ptr_Private_int %map %383
+               OpStore %384 %int_1
+        %385 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %386 = OpLoad %int %385
+        %387 = OpIAdd %int %386 %int_1
+        %388 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %389 = OpLoad %int %388
+        %390 = OpIMul %int %389 %int_16
+        %391 = OpIAdd %int %387 %390
+        %392 = OpAccessChain %_ptr_Private_int %map %391
+               OpStore %392 %int_1
+        %393 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %394 = OpLoad %int %393
+        %395 = OpIAdd %int %394 %int_2
+        %396 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %397 = OpLoad %int %396
+        %398 = OpIMul %int %397 %int_16
+        %399 = OpIAdd %int %395 %398
+        %400 = OpAccessChain %_ptr_Private_int %map %399
+               OpStore %400 %int_1
+        %401 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %402 = OpLoad %int %401
+        %403 = OpIAdd %int %402 %int_2
+        %404 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %404 %403
+               OpBranch %374
+        %374 = OpLabel
+        %405 = OpLoad %int %d
+        %406 = OpSGreaterThanEqual %bool %405 %int_0
+               OpSelectionMerge %407 None
+               OpBranchConditional %406 %408 %407
+        %408 = OpLabel
+        %409 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %410 = OpLoad %int %409
+        %411 = OpSLessThan %bool %410 %int_14
+               OpBranch %407
+        %407 = OpLabel
+        %412 = OpPhi %bool %406 %374 %411 %408
+               OpSelectionMerge %413 None
+               OpBranchConditional %412 %414 %413
+        %414 = OpLabel
+        %415 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %416 = OpLoad %int %415
+        %417 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %418 = OpLoad %int %417
+        %419 = OpIAdd %int %418 %int_2
+        %420 = OpIMul %int %419 %int_16
+        %421 = OpIAdd %int %416 %420
+        %422 = OpAccessChain %_ptr_Private_int %map %421
+        %423 = OpLoad %int %422
+        %424 = OpIEqual %bool %423 %int_0
+               OpBranch %413
+        %413 = OpLabel
+        %425 = OpPhi %bool %412 %407 %424 %414
+               OpSelectionMerge %426 None
+               OpBranchConditional %425 %427 %426
+        %427 = OpLabel
+        %428 = OpLoad %int %d
+        %429 = OpISub %int %428 %int_1
+               OpStore %d %429
+        %430 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %431 = OpLoad %int %430
+        %432 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %433 = OpLoad %int %432
+        %434 = OpIMul %int %433 %int_16
+        %435 = OpIAdd %int %431 %434
+        %436 = OpAccessChain %_ptr_Private_int %map %435
+               OpStore %436 %int_1
+        %437 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %438 = OpLoad %int %437
+        %439 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %440 = OpLoad %int %439
+        %441 = OpIAdd %int %440 %int_1
+        %442 = OpIMul %int %441 %int_16
+        %443 = OpIAdd %int %438 %442
+        %444 = OpAccessChain %_ptr_Private_int %map %443
+               OpStore %444 %int_1
+        %445 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %446 = OpLoad %int %445
+        %447 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %448 = OpLoad %int %447
+        %449 = OpIAdd %int %448 %int_2
+        %450 = OpIMul %int %449 %int_16
+        %451 = OpIAdd %int %446 %450
+        %452 = OpAccessChain %_ptr_Private_int %map %451
+               OpStore %452 %int_1
+        %453 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %454 = OpLoad %int %453
+        %455 = OpIAdd %int %454 %int_2
+        %456 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %456 %455
+               OpBranch %426
+        %426 = OpLabel
+               OpBranch %172
+        %172 = OpLabel
+        %457 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %458 = OpLoad %int %457
+        %459 = OpIMul %int %458 %int_16
+        %460 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %461 = OpLoad %int %460
+        %462 = OpIAdd %int %459 %461
+        %463 = OpAccessChain %_ptr_Private_int %map %462
+        %464 = OpLoad %int %463
+        %465 = OpIEqual %bool %464 %int_1
+               OpSelectionMerge %466 None
+               OpBranchConditional %465 %467 %466
+        %467 = OpLabel
+               OpStore %_GLF_color %53
+               OpReturn
+        %466 = OpLabel
+               OpBranch %86
+         %86 = OpLabel
+        %468 = OpLoad %bool %canwalk
+               OpBranchConditional %468 %84 %85
+         %85 = OpLabel
+               OpStore %_GLF_color %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..0505c28
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.hlsl
@@ -0,0 +1,338 @@
+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;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  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;
+      {
+        for(; (i < 8); i = (i + 1)) {
+          j = 0;
+          {
+            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);
+      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_5[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        x_304 = tint_symbol_5;
+        x_305_phi = x_304;
+      }
+      const int x_305[256] = x_305_phi;
+      if (x_282) {
+        const int tint_symbol_6[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        map = tint_symbol_6;
+      }
+      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_7[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        map = tint_symbol_7;
+        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 = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.msl
new file mode 100644
index 0000000..794863a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.msl
@@ -0,0 +1,394 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_8, thread tint_array_wrapper* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  float2 pos = 0.0f;
+  int2 ipos = 0;
+  int i = 0;
+  int2 p = 0;
+  bool canwalk = false;
+  int v = 0;
+  int directions = 0;
+  int j = 0;
+  int d = 0;
+  float4 const x_59 = *(tint_symbol_8);
+  float2 const x_62 = x_7.resolution;
+  pos = (float2(x_59.x, x_59.y) / x_62);
+  float const x_65 = pos.x;
+  float const x_69 = pos.y;
+  ipos = int2(int((x_65 * 16.0f)), int((x_69 * 16.0f)));
+  i = 0;
+  while (true) {
+    int const x_77 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    int const x_80 = i;
+    (*(tint_symbol_9)).arr[x_80] = 0;
+    {
+      int const x_82 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  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;
+    int const x_88 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    int const x_91 = p.x;
+    bool const x_92 = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      int const x_96 = p.x;
+      int const x_99 = p.y;
+      int const x_103 = (*(tint_symbol_9)).arr[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    bool const x_105 = x_105_phi;
+    if (x_105) {
+      int const x_108 = directions;
+      directions = (x_108 + 1);
+    }
+    int const x_111 = p.y;
+    bool const x_112 = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      int const x_116 = p.x;
+      int const x_118 = p.y;
+      int const x_123 = (*(tint_symbol_9)).arr[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    bool const x_125 = x_125_phi;
+    if (x_125) {
+      int const x_128 = directions;
+      directions = (x_128 + 1);
+    }
+    int const x_131 = p.x;
+    bool const x_132 = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      int const x_136 = p.x;
+      int const x_139 = p.y;
+      int const x_143 = (*(tint_symbol_9)).arr[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    bool const x_145 = x_145_phi;
+    if (x_145) {
+      int const x_148 = directions;
+      directions = (x_148 + 1);
+    }
+    int const x_151 = p.y;
+    bool const x_152 = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      int const x_156 = p.x;
+      int const x_158 = p.y;
+      int const x_163 = (*(tint_symbol_9)).arr[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    bool const x_165 = x_165_phi;
+    if (x_165) {
+      int const x_168 = directions;
+      directions = (x_168 + 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;
+    tint_array_wrapper x_303 = {};
+    tint_array_wrapper x_304 = {};
+    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;
+    tint_array_wrapper x_305_phi = {};
+    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;
+    int const x_170 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        int const x_179 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        while (true) {
+          int const x_186 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          int const x_189 = j;
+          int const x_191 = i;
+          int const x_196 = (*(tint_symbol_9)).arr[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            int const x_200 = j;
+            p.x = (x_200 * 2);
+            int const x_203 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+          {
+            int const x_206 = j;
+            j = (x_206 + 1);
+          }
+        }
+        {
+          int const x_208 = i;
+          i = (x_208 + 1);
+        }
+      }
+      int const x_211 = p.x;
+      int const x_213 = p.y;
+      (*(tint_symbol_9)).arr[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      int const x_217 = v;
+      int const x_218 = directions;
+      d = (x_217 % x_218);
+      int const x_220 = directions;
+      int const x_221 = v;
+      v = (x_221 + x_220);
+      int const x_223 = d;
+      bool const x_224 = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        int const x_228 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      bool const x_230 = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        int const x_234 = p.x;
+        int const x_237 = p.y;
+        int const x_241 = (*(tint_symbol_9)).arr[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      bool const x_243 = x_243_phi;
+      if (x_243) {
+        int const x_246 = d;
+        d = (x_246 - 1);
+        int const x_249 = p.x;
+        int const x_251 = p.y;
+        (*(tint_symbol_9)).arr[(x_249 + (x_251 * 16))] = 1;
+        int const x_256 = p.x;
+        int const x_259 = p.y;
+        (*(tint_symbol_9)).arr[((x_256 - 1) + (x_259 * 16))] = 1;
+        int const x_264 = p.x;
+        int const x_267 = p.y;
+        (*(tint_symbol_9)).arr[((x_264 - 2) + (x_267 * 16))] = 1;
+        int const x_272 = p.x;
+        p.x = (x_272 - 2);
+      }
+      int const x_275 = d;
+      bool const x_276 = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        int const x_280 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      bool const 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;
+      }
+      int const 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;
+      }
+      int const x_297 = x_297_phi;
+      int const x_299 = ((x_297 - 2) * 16);
+      if (x_282) {
+        x_303 = *(tint_symbol_9);
+        x_305_phi = x_303;
+      } else {
+        tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        x_304 = tint_symbol_4;
+        x_305_phi = x_304;
+      }
+      tint_array_wrapper const x_305 = x_305_phi;
+      if (x_282) {
+        tint_array_wrapper const tint_symbol_5 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        *(tint_symbol_9) = tint_symbol_5;
+      }
+      if (x_282) {
+        *(tint_symbol_9) = x_305;
+      }
+      if (x_282) {
+        x_315 = (*(tint_symbol_9)).arr[(x_290 + x_299)];
+        x_317_phi = x_315;
+      } else {
+        x_316 = 0;
+        x_317_phi = x_316;
+      }
+      int const x_317 = x_317_phi;
+      bool const x_318 = (x_317 == 0);
+      if (select(x_282, x_318, x_282)) {
+        int const x_323 = d;
+        d = (x_323 - 1);
+        int const x_326 = p.x;
+        int const x_328 = p.y;
+        (*(tint_symbol_9)).arr[(x_326 + (x_328 * 16))] = 1;
+        int const x_333 = p.x;
+        int const x_335 = p.y;
+        (*(tint_symbol_9)).arr[(x_333 + ((x_335 - 1) * 16))] = 1;
+        int const x_341 = p.x;
+        int const x_343 = p.y;
+        tint_array_wrapper const x_345 = *(tint_symbol_9);
+        tint_array_wrapper const tint_symbol_6 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        *(tint_symbol_9) = tint_symbol_6;
+        *(tint_symbol_9) = x_345;
+        (*(tint_symbol_9)).arr[(x_341 + ((x_343 - 2) * 16))] = 1;
+        int const x_350 = p.y;
+        p.y = (x_350 - 2);
+      }
+      int const x_353 = d;
+      bool const x_354 = (x_353 >= 0);
+      x_360_phi = x_354;
+      if (x_354) {
+        int const x_358 = p.x;
+        x_359 = (x_358 < 14);
+        x_360_phi = x_359;
+      }
+      bool const x_360 = x_360_phi;
+      x_373_phi = x_360;
+      if (x_360) {
+        int const x_364 = p.x;
+        int const x_367 = p.y;
+        int const x_371 = (*(tint_symbol_9)).arr[((x_364 + 2) + (x_367 * 16))];
+        x_372 = (x_371 == 0);
+        x_373_phi = x_372;
+      }
+      bool const x_373 = x_373_phi;
+      if (x_373) {
+        int const x_376 = d;
+        d = (x_376 - 1);
+        int const x_379 = p.x;
+        int const x_381 = p.y;
+        (*(tint_symbol_9)).arr[(x_379 + (x_381 * 16))] = 1;
+        int const x_386 = p.x;
+        int const x_389 = p.y;
+        (*(tint_symbol_9)).arr[((x_386 + 1) + (x_389 * 16))] = 1;
+        int const x_394 = p.x;
+        int const x_397 = p.y;
+        (*(tint_symbol_9)).arr[((x_394 + 2) + (x_397 * 16))] = 1;
+        int const x_402 = p.x;
+        p.x = (x_402 + 2);
+      }
+      int const x_405 = d;
+      bool const x_406 = (x_405 >= 0);
+      x_412_phi = x_406;
+      if (x_406) {
+        int const x_410 = p.y;
+        x_411 = (x_410 < 14);
+        x_412_phi = x_411;
+      }
+      bool const x_412 = x_412_phi;
+      x_425_phi = x_412;
+      if (x_412) {
+        int const x_416 = p.x;
+        int const x_418 = p.y;
+        int const x_423 = (*(tint_symbol_9)).arr[(x_416 + ((x_418 + 2) * 16))];
+        x_424 = (x_423 == 0);
+        x_425_phi = x_424;
+      }
+      bool const x_425 = x_425_phi;
+      if (x_425) {
+        int const x_428 = d;
+        d = (x_428 - 1);
+        int const x_431 = p.x;
+        int const x_433 = p.y;
+        (*(tint_symbol_9)).arr[(x_431 + (x_433 * 16))] = 1;
+        int const x_438 = p.x;
+        int const x_440 = p.y;
+        (*(tint_symbol_9)).arr[(x_438 + ((x_440 + 1) * 16))] = 1;
+        int const x_446 = p.x;
+        int const x_448 = p.y;
+        (*(tint_symbol_9)).arr[(x_446 + ((x_448 + 2) * 16))] = 1;
+        int const x_454 = p.y;
+        p.y = (x_454 + 2);
+      }
+    }
+    int const x_458 = ipos.y;
+    int const x_461 = ipos.x;
+    int const x_464 = (*(tint_symbol_9)).arr[((x_458 * 16) + x_461)];
+    if ((x_464 == 1)) {
+      *(tint_symbol_10) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      return;
+    }
+    {
+      bool const x_468 = canwalk;
+      if (x_468) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_10) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread tint_array_wrapper tint_symbol_12 = {};
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_11), &(tint_symbol_12), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..bde11c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.spvasm
@@ -0,0 +1,860 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 548
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %map "map"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %x_104 "x_104"
+               OpName %x_124 "x_124"
+               OpName %x_144 "x_144"
+               OpName %x_164 "x_164"
+               OpName %x_105_phi "x_105_phi"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_145_phi "x_145_phi"
+               OpName %x_165_phi "x_165_phi"
+               OpName %x_229 "x_229"
+               OpName %x_242 "x_242"
+               OpName %x_281 "x_281"
+               OpName %x_288 "x_288"
+               OpName %x_289 "x_289"
+               OpName %x_295 "x_295"
+               OpName %x_296 "x_296"
+               OpName %x_303 "x_303"
+               OpName %x_304 "x_304"
+               OpName %x_315 "x_315"
+               OpName %x_316 "x_316"
+               OpName %x_359 "x_359"
+               OpName %x_372 "x_372"
+               OpName %x_411 "x_411"
+               OpName %x_424 "x_424"
+               OpName %x_230_phi "x_230_phi"
+               OpName %x_243_phi "x_243_phi"
+               OpName %x_282_phi "x_282_phi"
+               OpName %x_290_phi "x_290_phi"
+               OpName %x_297_phi "x_297_phi"
+               OpName %x_305_phi "x_305_phi"
+               OpName %x_317_phi "x_317_phi"
+               OpName %x_360_phi "x_360_phi"
+               OpName %x_373_phi "x_373_phi"
+               OpName %x_412_phi "x_412_phi"
+               OpName %x_425_phi "x_425_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+         %16 = OpConstantNull %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private %16
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %28 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %32 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %float_16 = OpConstant %float 16
+      %int_0 = OpConstant %int 0
+    %int_256 = OpConstant %int 256
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %83 = OpConstantComposite %v2int %int_0 %int_0
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+        %358 = OpConstantComposite %_arr_int_uint_256 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+    %float_1 = OpConstant %float 1
+        %528 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+        %534 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %535 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %28
+       %ipos = OpVariable %_ptr_Function_v2int Function %32
+          %i = OpVariable %_ptr_Function_int Function %35
+          %p = OpVariable %_ptr_Function_v2int Function %32
+    %canwalk = OpVariable %_ptr_Function_bool Function %40
+          %v = OpVariable %_ptr_Function_int Function %35
+ %directions = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+          %d = OpVariable %_ptr_Function_int Function %35
+      %x_104 = OpVariable %_ptr_Function_bool Function %40
+      %x_124 = OpVariable %_ptr_Function_bool Function %40
+      %x_144 = OpVariable %_ptr_Function_bool Function %40
+      %x_164 = OpVariable %_ptr_Function_bool Function %40
+  %x_105_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_125_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_145_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_165_phi = OpVariable %_ptr_Function_bool Function %40
+      %x_229 = OpVariable %_ptr_Function_bool Function %40
+      %x_242 = OpVariable %_ptr_Function_bool Function %40
+      %x_281 = OpVariable %_ptr_Function_bool Function %40
+      %x_288 = OpVariable %_ptr_Function_int Function %35
+      %x_289 = OpVariable %_ptr_Function_int Function %35
+      %x_295 = OpVariable %_ptr_Function_int Function %35
+      %x_296 = OpVariable %_ptr_Function_int Function %35
+      %x_303 = OpVariable %_ptr_Function__arr_int_uint_256 Function %16
+      %x_304 = OpVariable %_ptr_Function__arr_int_uint_256 Function %16
+      %x_315 = OpVariable %_ptr_Function_int Function %35
+      %x_316 = OpVariable %_ptr_Function_int Function %35
+      %x_359 = OpVariable %_ptr_Function_bool Function %40
+      %x_372 = OpVariable %_ptr_Function_bool Function %40
+      %x_411 = OpVariable %_ptr_Function_bool Function %40
+      %x_424 = OpVariable %_ptr_Function_bool Function %40
+  %x_230_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_243_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_282_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_290_phi = OpVariable %_ptr_Function_int Function %35
+  %x_297_phi = OpVariable %_ptr_Function_int Function %35
+  %x_305_phi = OpVariable %_ptr_Function__arr_int_uint_256 Function %16
+  %x_317_phi = OpVariable %_ptr_Function_int Function %35
+  %x_360_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_373_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_412_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_425_phi = OpVariable %_ptr_Function_bool Function %40
+         %45 = OpLoad %v4float %gl_FragCoord
+         %48 = OpAccessChain %_ptr_Uniform_v2float %x_7 %uint_0
+         %49 = OpLoad %v2float %48
+         %50 = OpCompositeExtract %float %45 0
+         %51 = OpCompositeExtract %float %45 1
+         %52 = OpCompositeConstruct %v2float %50 %51
+         %53 = OpFDiv %v2float %52 %49
+               OpStore %pos %53
+         %55 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %59 = OpLoad %float %58
+         %62 = OpFMul %float %56 %float_16
+         %60 = OpConvertFToS %int %62
+         %64 = OpFMul %float %59 %float_16
+         %63 = OpConvertFToS %int %64
+         %65 = OpCompositeConstruct %v2int %60 %63
+               OpStore %ipos %65
+               OpStore %i %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i
+         %73 = OpSLessThan %bool %71 %int_256
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %68
+         %74 = OpLabel
+         %77 = OpLoad %int %i
+         %79 = OpAccessChain %_ptr_Private_int %map %77
+               OpStore %79 %int_0
+               OpBranch %69
+         %69 = OpLabel
+         %80 = OpLoad %int %i
+         %82 = OpIAdd %int %80 %int_1
+               OpStore %i %82
+               OpBranch %67
+         %68 = OpLabel
+               OpStore %p %83
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %97 = OpLoad %int %v
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %v %98
+               OpStore %directions %int_0
+         %99 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %100 = OpLoad %int %99
+        %101 = OpSGreaterThan %bool %100 %int_0
+               OpStore %x_105_phi %101
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %104 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %107 = OpLoad %int %106
+        %109 = OpISub %int %105 %int_2
+        %111 = OpIMul %int %107 %int_16
+        %112 = OpIAdd %int %109 %111
+        %113 = OpAccessChain %_ptr_Private_int %map %112
+        %114 = OpLoad %int %113
+        %115 = OpIEqual %bool %114 %int_0
+               OpStore %x_104 %115
+        %116 = OpLoad %bool %x_104
+               OpStore %x_105_phi %116
+               OpBranch %102
+        %102 = OpLabel
+        %117 = OpLoad %bool %x_105_phi
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpLoad %int %directions
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %directions %121
+               OpBranch %118
+        %118 = OpLabel
+        %122 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %123 = OpLoad %int %122
+        %124 = OpSGreaterThan %bool %123 %int_0
+               OpStore %x_125_phi %124
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %130 = OpLoad %int %129
+        %131 = OpISub %int %130 %int_2
+        %132 = OpIMul %int %131 %int_16
+        %133 = OpIAdd %int %128 %132
+        %134 = OpAccessChain %_ptr_Private_int %map %133
+        %135 = OpLoad %int %134
+        %136 = OpIEqual %bool %135 %int_0
+               OpStore %x_124 %136
+        %137 = OpLoad %bool %x_124
+               OpStore %x_125_phi %137
+               OpBranch %125
+        %125 = OpLabel
+        %138 = OpLoad %bool %x_125_phi
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %directions
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %directions %142
+               OpBranch %139
+        %139 = OpLabel
+        %143 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %144 = OpLoad %int %143
+        %146 = OpSLessThan %bool %144 %int_14
+               OpStore %x_145_phi %146
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %150 = OpLoad %int %149
+        %151 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %152 = OpLoad %int %151
+        %153 = OpIAdd %int %150 %int_2
+        %154 = OpIMul %int %152 %int_16
+        %155 = OpIAdd %int %153 %154
+        %156 = OpAccessChain %_ptr_Private_int %map %155
+        %157 = OpLoad %int %156
+        %158 = OpIEqual %bool %157 %int_0
+               OpStore %x_144 %158
+        %159 = OpLoad %bool %x_144
+               OpStore %x_145_phi %159
+               OpBranch %147
+        %147 = OpLabel
+        %160 = OpLoad %bool %x_145_phi
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %int %directions
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %directions %164
+               OpBranch %161
+        %161 = OpLabel
+        %165 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %166 %int_14
+               OpStore %x_165_phi %167
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %168
+        %169 = OpLabel
+        %170 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %171 = OpLoad %int %170
+        %172 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %173 = OpLoad %int %172
+        %174 = OpIAdd %int %173 %int_2
+        %175 = OpIMul %int %174 %int_16
+        %176 = OpIAdd %int %171 %175
+        %177 = OpAccessChain %_ptr_Private_int %map %176
+        %178 = OpLoad %int %177
+        %179 = OpIEqual %bool %178 %int_0
+               OpStore %x_164 %179
+        %180 = OpLoad %bool %x_164
+               OpStore %x_165_phi %180
+               OpBranch %168
+        %168 = OpLabel
+        %181 = OpLoad %bool %x_165_phi
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %directions
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %directions %185
+               OpBranch %182
+        %182 = OpLabel
+        %213 = OpLoad %int %directions
+        %214 = OpIEqual %bool %213 %int_0
+               OpSelectionMerge %215 None
+               OpBranchConditional %214 %216 %217
+        %216 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %219
+        %219 = OpLabel
+               OpLoopMerge %220 %221 None
+               OpBranch %222
+        %222 = OpLabel
+        %223 = OpLoad %int %i
+        %225 = OpSLessThan %bool %223 %int_8
+               OpSelectionMerge %226 None
+               OpBranchConditional %225 %227 %228
+        %227 = OpLabel
+               OpBranch %226
+        %228 = OpLabel
+               OpBranch %220
+        %226 = OpLabel
+               OpStore %j %int_0
+               OpBranch %229
+        %229 = OpLabel
+               OpLoopMerge %230 %231 None
+               OpBranch %232
+        %232 = OpLabel
+        %233 = OpLoad %int %j
+        %234 = OpSLessThan %bool %233 %int_8
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %237
+        %236 = OpLabel
+               OpBranch %235
+        %237 = OpLabel
+               OpBranch %230
+        %235 = OpLabel
+        %238 = OpLoad %int %j
+        %239 = OpLoad %int %i
+        %240 = OpIMul %int %238 %int_2
+        %241 = OpIMul %int %239 %int_2
+        %242 = OpIMul %int %241 %int_16
+        %243 = OpIAdd %int %240 %242
+        %244 = OpAccessChain %_ptr_Private_int %map %243
+        %245 = OpLoad %int %244
+        %246 = OpIEqual %bool %245 %int_0
+               OpSelectionMerge %247 None
+               OpBranchConditional %246 %248 %247
+        %248 = OpLabel
+        %249 = OpLoad %int %j
+        %250 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %251 = OpIMul %int %249 %int_2
+               OpStore %250 %251
+        %252 = OpLoad %int %i
+        %253 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %254 = OpIMul %int %252 %int_2
+               OpStore %253 %254
+               OpStore %canwalk %true
+               OpBranch %247
+        %247 = OpLabel
+               OpBranch %231
+        %231 = OpLabel
+        %255 = OpLoad %int %j
+        %256 = OpIAdd %int %255 %int_1
+               OpStore %j %256
+               OpBranch %229
+        %230 = OpLabel
+               OpBranch %221
+        %221 = OpLabel
+        %257 = OpLoad %int %i
+        %258 = OpIAdd %int %257 %int_1
+               OpStore %i %258
+               OpBranch %219
+        %220 = OpLabel
+        %259 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %260 = OpLoad %int %259
+        %261 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %262 = OpLoad %int %261
+        %263 = OpIMul %int %262 %int_16
+        %264 = OpIAdd %int %260 %263
+        %265 = OpAccessChain %_ptr_Private_int %map %264
+               OpStore %265 %int_1
+               OpBranch %215
+        %217 = OpLabel
+        %266 = OpLoad %int %v
+        %267 = OpLoad %int %directions
+        %268 = OpSMod %int %266 %267
+               OpStore %d %268
+        %269 = OpLoad %int %directions
+        %270 = OpLoad %int %v
+        %271 = OpIAdd %int %270 %269
+               OpStore %v %271
+        %272 = OpLoad %int %d
+        %273 = OpSGreaterThanEqual %bool %272 %int_0
+               OpStore %x_230_phi %273
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %274
+        %275 = OpLabel
+        %276 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %277 = OpLoad %int %276
+        %278 = OpSGreaterThan %bool %277 %int_0
+               OpStore %x_229 %278
+        %279 = OpLoad %bool %x_229
+               OpStore %x_230_phi %279
+               OpBranch %274
+        %274 = OpLabel
+        %280 = OpLoad %bool %x_230_phi
+               OpStore %x_243_phi %280
+               OpSelectionMerge %281 None
+               OpBranchConditional %280 %282 %281
+        %282 = OpLabel
+        %283 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %284 = OpLoad %int %283
+        %285 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %286 = OpLoad %int %285
+        %287 = OpISub %int %284 %int_2
+        %288 = OpIMul %int %286 %int_16
+        %289 = OpIAdd %int %287 %288
+        %290 = OpAccessChain %_ptr_Private_int %map %289
+        %291 = OpLoad %int %290
+        %292 = OpIEqual %bool %291 %int_0
+               OpStore %x_242 %292
+        %293 = OpLoad %bool %x_242
+               OpStore %x_243_phi %293
+               OpBranch %281
+        %281 = OpLabel
+        %294 = OpLoad %bool %x_243_phi
+               OpSelectionMerge %295 None
+               OpBranchConditional %294 %296 %295
+        %296 = OpLabel
+        %297 = OpLoad %int %d
+        %298 = OpISub %int %297 %int_1
+               OpStore %d %298
+        %299 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %300 = OpLoad %int %299
+        %301 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %302 = OpLoad %int %301
+        %303 = OpIMul %int %302 %int_16
+        %304 = OpIAdd %int %300 %303
+        %305 = OpAccessChain %_ptr_Private_int %map %304
+               OpStore %305 %int_1
+        %306 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %307 = OpLoad %int %306
+        %308 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %309 = OpLoad %int %308
+        %310 = OpISub %int %307 %int_1
+        %311 = OpIMul %int %309 %int_16
+        %312 = OpIAdd %int %310 %311
+        %313 = OpAccessChain %_ptr_Private_int %map %312
+               OpStore %313 %int_1
+        %314 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %315 = OpLoad %int %314
+        %316 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %317 = OpLoad %int %316
+        %318 = OpISub %int %315 %int_2
+        %319 = OpIMul %int %317 %int_16
+        %320 = OpIAdd %int %318 %319
+        %321 = OpAccessChain %_ptr_Private_int %map %320
+               OpStore %321 %int_1
+        %322 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %323 = OpLoad %int %322
+        %324 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %325 = OpISub %int %323 %int_2
+               OpStore %324 %325
+               OpBranch %295
+        %295 = OpLabel
+        %326 = OpLoad %int %d
+        %327 = OpSGreaterThanEqual %bool %326 %int_0
+               OpStore %x_282_phi %327
+               OpSelectionMerge %328 None
+               OpBranchConditional %327 %329 %328
+        %329 = OpLabel
+        %330 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %331 = OpLoad %int %330
+        %332 = OpSGreaterThan %bool %331 %int_0
+               OpStore %x_281 %332
+        %333 = OpLoad %bool %x_281
+               OpStore %x_282_phi %333
+               OpBranch %328
+        %328 = OpLabel
+        %334 = OpLoad %bool %x_282_phi
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %337
+        %336 = OpLabel
+        %338 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %339 = OpLoad %int %338
+               OpStore %x_288 %339
+        %340 = OpLoad %int %x_288
+               OpStore %x_290_phi %340
+               OpBranch %335
+        %337 = OpLabel
+               OpStore %x_289 %int_0
+        %341 = OpLoad %int %x_289
+               OpStore %x_290_phi %341
+               OpBranch %335
+        %335 = OpLabel
+        %342 = OpLoad %int %x_290_phi
+               OpSelectionMerge %343 None
+               OpBranchConditional %334 %344 %345
+        %344 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %347 = OpLoad %int %346
+               OpStore %x_295 %347
+        %348 = OpLoad %int %x_295
+               OpStore %x_297_phi %348
+               OpBranch %343
+        %345 = OpLabel
+               OpStore %x_296 %int_0
+        %349 = OpLoad %int %x_296
+               OpStore %x_297_phi %349
+               OpBranch %343
+        %343 = OpLabel
+        %350 = OpLoad %int %x_297_phi
+        %351 = OpISub %int %350 %int_2
+        %352 = OpIMul %int %351 %int_16
+               OpSelectionMerge %353 None
+               OpBranchConditional %334 %354 %355
+        %354 = OpLabel
+        %356 = OpLoad %_arr_int_uint_256 %map
+               OpStore %x_303 %356
+        %357 = OpLoad %_arr_int_uint_256 %x_303
+               OpStore %x_305_phi %357
+               OpBranch %353
+        %355 = OpLabel
+               OpStore %x_304 %358
+        %359 = OpLoad %_arr_int_uint_256 %x_304
+               OpStore %x_305_phi %359
+               OpBranch %353
+        %353 = OpLabel
+        %360 = OpLoad %_arr_int_uint_256 %x_305_phi
+               OpSelectionMerge %361 None
+               OpBranchConditional %334 %362 %361
+        %362 = OpLabel
+               OpStore %map %358
+               OpBranch %361
+        %361 = OpLabel
+               OpSelectionMerge %363 None
+               OpBranchConditional %334 %364 %363
+        %364 = OpLabel
+               OpStore %map %360
+               OpBranch %363
+        %363 = OpLabel
+               OpSelectionMerge %365 None
+               OpBranchConditional %334 %366 %367
+        %366 = OpLabel
+        %368 = OpIAdd %int %342 %352
+        %369 = OpAccessChain %_ptr_Private_int %map %368
+        %370 = OpLoad %int %369
+               OpStore %x_315 %370
+        %371 = OpLoad %int %x_315
+               OpStore %x_317_phi %371
+               OpBranch %365
+        %367 = OpLabel
+               OpStore %x_316 %int_0
+        %372 = OpLoad %int %x_316
+               OpStore %x_317_phi %372
+               OpBranch %365
+        %365 = OpLabel
+        %373 = OpLoad %int %x_317_phi
+        %374 = OpIEqual %bool %373 %int_0
+        %375 = OpSelect %bool %334 %374 %334
+               OpSelectionMerge %376 None
+               OpBranchConditional %375 %377 %376
+        %377 = OpLabel
+        %378 = OpLoad %int %d
+        %379 = OpISub %int %378 %int_1
+               OpStore %d %379
+        %380 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %381 = OpLoad %int %380
+        %382 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %383 = OpLoad %int %382
+        %384 = OpIMul %int %383 %int_16
+        %385 = OpIAdd %int %381 %384
+        %386 = OpAccessChain %_ptr_Private_int %map %385
+               OpStore %386 %int_1
+        %387 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %388 = OpLoad %int %387
+        %389 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %390 = OpLoad %int %389
+        %391 = OpISub %int %390 %int_1
+        %392 = OpIMul %int %391 %int_16
+        %393 = OpIAdd %int %388 %392
+        %394 = OpAccessChain %_ptr_Private_int %map %393
+               OpStore %394 %int_1
+        %395 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %396 = OpLoad %int %395
+        %397 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %398 = OpLoad %int %397
+        %399 = OpLoad %_arr_int_uint_256 %map
+               OpStore %map %358
+               OpStore %map %399
+        %400 = OpISub %int %398 %int_2
+        %401 = OpIMul %int %400 %int_16
+        %402 = OpIAdd %int %396 %401
+        %403 = OpAccessChain %_ptr_Private_int %map %402
+               OpStore %403 %int_1
+        %404 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %405 = OpLoad %int %404
+        %406 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %407 = OpISub %int %405 %int_2
+               OpStore %406 %407
+               OpBranch %376
+        %376 = OpLabel
+        %408 = OpLoad %int %d
+        %409 = OpSGreaterThanEqual %bool %408 %int_0
+               OpStore %x_360_phi %409
+               OpSelectionMerge %410 None
+               OpBranchConditional %409 %411 %410
+        %411 = OpLabel
+        %412 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %413 = OpLoad %int %412
+        %414 = OpSLessThan %bool %413 %int_14
+               OpStore %x_359 %414
+        %415 = OpLoad %bool %x_359
+               OpStore %x_360_phi %415
+               OpBranch %410
+        %410 = OpLabel
+        %416 = OpLoad %bool %x_360_phi
+               OpStore %x_373_phi %416
+               OpSelectionMerge %417 None
+               OpBranchConditional %416 %418 %417
+        %418 = OpLabel
+        %419 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %420 = OpLoad %int %419
+        %421 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %422 = OpLoad %int %421
+        %423 = OpIAdd %int %420 %int_2
+        %424 = OpIMul %int %422 %int_16
+        %425 = OpIAdd %int %423 %424
+        %426 = OpAccessChain %_ptr_Private_int %map %425
+        %427 = OpLoad %int %426
+        %428 = OpIEqual %bool %427 %int_0
+               OpStore %x_372 %428
+        %429 = OpLoad %bool %x_372
+               OpStore %x_373_phi %429
+               OpBranch %417
+        %417 = OpLabel
+        %430 = OpLoad %bool %x_373_phi
+               OpSelectionMerge %431 None
+               OpBranchConditional %430 %432 %431
+        %432 = OpLabel
+        %433 = OpLoad %int %d
+        %434 = OpISub %int %433 %int_1
+               OpStore %d %434
+        %435 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %436 = OpLoad %int %435
+        %437 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %438 = OpLoad %int %437
+        %439 = OpIMul %int %438 %int_16
+        %440 = OpIAdd %int %436 %439
+        %441 = OpAccessChain %_ptr_Private_int %map %440
+               OpStore %441 %int_1
+        %442 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %443 = OpLoad %int %442
+        %444 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %445 = OpLoad %int %444
+        %446 = OpIAdd %int %443 %int_1
+        %447 = OpIMul %int %445 %int_16
+        %448 = OpIAdd %int %446 %447
+        %449 = OpAccessChain %_ptr_Private_int %map %448
+               OpStore %449 %int_1
+        %450 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %451 = OpLoad %int %450
+        %452 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %453 = OpLoad %int %452
+        %454 = OpIAdd %int %451 %int_2
+        %455 = OpIMul %int %453 %int_16
+        %456 = OpIAdd %int %454 %455
+        %457 = OpAccessChain %_ptr_Private_int %map %456
+               OpStore %457 %int_1
+        %458 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %459 = OpLoad %int %458
+        %460 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %461 = OpIAdd %int %459 %int_2
+               OpStore %460 %461
+               OpBranch %431
+        %431 = OpLabel
+        %462 = OpLoad %int %d
+        %463 = OpSGreaterThanEqual %bool %462 %int_0
+               OpStore %x_412_phi %463
+               OpSelectionMerge %464 None
+               OpBranchConditional %463 %465 %464
+        %465 = OpLabel
+        %466 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %467 = OpLoad %int %466
+        %468 = OpSLessThan %bool %467 %int_14
+               OpStore %x_411 %468
+        %469 = OpLoad %bool %x_411
+               OpStore %x_412_phi %469
+               OpBranch %464
+        %464 = OpLabel
+        %470 = OpLoad %bool %x_412_phi
+               OpStore %x_425_phi %470
+               OpSelectionMerge %471 None
+               OpBranchConditional %470 %472 %471
+        %472 = OpLabel
+        %473 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %474 = OpLoad %int %473
+        %475 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %476 = OpLoad %int %475
+        %477 = OpIAdd %int %476 %int_2
+        %478 = OpIMul %int %477 %int_16
+        %479 = OpIAdd %int %474 %478
+        %480 = OpAccessChain %_ptr_Private_int %map %479
+        %481 = OpLoad %int %480
+        %482 = OpIEqual %bool %481 %int_0
+               OpStore %x_424 %482
+        %483 = OpLoad %bool %x_424
+               OpStore %x_425_phi %483
+               OpBranch %471
+        %471 = OpLabel
+        %484 = OpLoad %bool %x_425_phi
+               OpSelectionMerge %485 None
+               OpBranchConditional %484 %486 %485
+        %486 = OpLabel
+        %487 = OpLoad %int %d
+        %488 = OpISub %int %487 %int_1
+               OpStore %d %488
+        %489 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %490 = OpLoad %int %489
+        %491 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %492 = OpLoad %int %491
+        %493 = OpIMul %int %492 %int_16
+        %494 = OpIAdd %int %490 %493
+        %495 = OpAccessChain %_ptr_Private_int %map %494
+               OpStore %495 %int_1
+        %496 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %497 = OpLoad %int %496
+        %498 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %499 = OpLoad %int %498
+        %500 = OpIAdd %int %499 %int_1
+        %501 = OpIMul %int %500 %int_16
+        %502 = OpIAdd %int %497 %501
+        %503 = OpAccessChain %_ptr_Private_int %map %502
+               OpStore %503 %int_1
+        %504 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %505 = OpLoad %int %504
+        %506 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %507 = OpLoad %int %506
+        %508 = OpIAdd %int %507 %int_2
+        %509 = OpIMul %int %508 %int_16
+        %510 = OpIAdd %int %505 %509
+        %511 = OpAccessChain %_ptr_Private_int %map %510
+               OpStore %511 %int_1
+        %512 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %513 = OpLoad %int %512
+        %514 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %515 = OpIAdd %int %513 %int_2
+               OpStore %514 %515
+               OpBranch %485
+        %485 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %516 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %517 = OpLoad %int %516
+        %518 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %519 = OpLoad %int %518
+        %520 = OpIMul %int %517 %int_16
+        %521 = OpIAdd %int %520 %519
+        %522 = OpAccessChain %_ptr_Private_int %map %521
+        %523 = OpLoad %int %522
+        %524 = OpIEqual %bool %523 %int_1
+               OpSelectionMerge %525 None
+               OpBranchConditional %524 %526 %525
+        %526 = OpLabel
+               OpStore %x_GLF_color %528
+               OpReturn
+        %525 = OpLabel
+               OpBranch %87
+         %87 = OpLabel
+        %529 = OpLoad %bool %canwalk
+               OpSelectionMerge %530 None
+               OpBranchConditional %529 %531 %532
+        %531 = OpLabel
+               OpBranch %530
+        %532 = OpLabel
+               OpBranch %86
+        %530 = OpLabel
+               OpBranch %85
+         %86 = OpLabel
+               OpStore %x_GLF_color %534
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %535
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %539 = OpLabel
+        %540 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %540
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %542 = OpLabel
+        %543 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %543
+        %544 = OpFunctionCall %void %main_1
+        %546 = OpLoad %v4float %x_GLF_color
+        %547 = OpCompositeConstruct %main_out %546
+        %545 = OpFunctionCall %void %tint_symbol_3 %547
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 87[%87] is not post dominated by the back-edge block 530[%530]
+  %530 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..7636426
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.wgsl
@@ -0,0 +1,392 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_59 : vec4<f32> = gl_FragCoord;
+  let x_62 : vec2<f32> = x_7.resolution;
+  pos = (vec2<f32>(x_59.x, x_59.y) / x_62);
+  let x_65 : f32 = pos.x;
+  let x_69 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_65 * 16.0)), i32((x_69 * 16.0)));
+  i = 0;
+  loop {
+    let x_77 : i32 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = i;
+    map[x_80] = 0;
+
+    continuing {
+      let x_82 : i32 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_104 : bool;
+    var x_124 : bool;
+    var x_144 : bool;
+    var x_164 : bool;
+    var x_105_phi : bool;
+    var x_125_phi : bool;
+    var x_145_phi : bool;
+    var x_165_phi : bool;
+    let x_88 : i32 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    let x_91 : i32 = p.x;
+    let x_92 : bool = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      let x_96 : i32 = p.x;
+      let x_99 : i32 = p.y;
+      let x_103 : i32 = map[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    let x_105 : bool = x_105_phi;
+    if (x_105) {
+      let x_108 : i32 = directions;
+      directions = (x_108 + 1);
+    }
+    let x_111 : i32 = p.y;
+    let x_112 : bool = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      let x_116 : i32 = p.x;
+      let x_118 : i32 = p.y;
+      let x_123 : i32 = map[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    let x_125 : bool = x_125_phi;
+    if (x_125) {
+      let x_128 : i32 = directions;
+      directions = (x_128 + 1);
+    }
+    let x_131 : i32 = p.x;
+    let x_132 : bool = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      let x_136 : i32 = p.x;
+      let x_139 : i32 = p.y;
+      let x_143 : i32 = map[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    let x_145 : bool = x_145_phi;
+    if (x_145) {
+      let x_148 : i32 = directions;
+      directions = (x_148 + 1);
+    }
+    let x_151 : i32 = p.y;
+    let x_152 : bool = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      let x_156 : i32 = p.x;
+      let x_158 : i32 = p.y;
+      let x_163 : i32 = map[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    let x_165 : bool = x_165_phi;
+    if (x_165) {
+      let x_168 : i32 = directions;
+      directions = (x_168 + 1);
+    }
+    var x_229 : bool;
+    var x_242 : bool;
+    var x_281 : bool;
+    var x_288 : i32;
+    var x_289 : i32;
+    var x_295 : i32;
+    var x_296 : i32;
+    var x_303 : array<i32, 256>;
+    var x_304 : array<i32, 256>;
+    var x_315 : i32;
+    var x_316 : i32;
+    var x_359 : bool;
+    var x_372 : bool;
+    var x_411 : bool;
+    var x_424 : bool;
+    var x_230_phi : bool;
+    var x_243_phi : bool;
+    var x_282_phi : bool;
+    var x_290_phi : i32;
+    var x_297_phi : i32;
+    var x_305_phi : array<i32, 256>;
+    var x_317_phi : i32;
+    var x_360_phi : bool;
+    var x_373_phi : bool;
+    var x_412_phi : bool;
+    var x_425_phi : bool;
+    let x_170 : i32 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_179 : i32 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        loop {
+          let x_186 : i32 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          let x_189 : i32 = j;
+          let x_191 : i32 = i;
+          let x_196 : i32 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            let x_200 : i32 = j;
+            p.x = (x_200 * 2);
+            let x_203 : i32 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_206 : i32 = j;
+            j = (x_206 + 1);
+          }
+        }
+
+        continuing {
+          let x_208 : i32 = i;
+          i = (x_208 + 1);
+        }
+      }
+      let x_211 : i32 = p.x;
+      let x_213 : i32 = p.y;
+      map[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      let x_217 : i32 = v;
+      let x_218 : i32 = directions;
+      d = (x_217 % x_218);
+      let x_220 : i32 = directions;
+      let x_221 : i32 = v;
+      v = (x_221 + x_220);
+      let x_223 : i32 = d;
+      let x_224 : bool = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        let x_228 : i32 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      let x_230 : bool = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        let x_234 : i32 = p.x;
+        let x_237 : i32 = p.y;
+        let x_241 : i32 = map[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      let x_243 : bool = x_243_phi;
+      if (x_243) {
+        let x_246 : i32 = d;
+        d = (x_246 - 1);
+        let x_249 : i32 = p.x;
+        let x_251 : i32 = p.y;
+        map[(x_249 + (x_251 * 16))] = 1;
+        let x_256 : i32 = p.x;
+        let x_259 : i32 = p.y;
+        map[((x_256 - 1) + (x_259 * 16))] = 1;
+        let x_264 : i32 = p.x;
+        let x_267 : i32 = p.y;
+        map[((x_264 - 2) + (x_267 * 16))] = 1;
+        let x_272 : i32 = p.x;
+        p.x = (x_272 - 2);
+      }
+      let x_275 : i32 = d;
+      let x_276 : bool = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        let x_280 : i32 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      let x_282 : bool = x_282_phi;
+      if (x_282) {
+        x_288 = p.x;
+        x_290_phi = x_288;
+      } else {
+        x_289 = 0;
+        x_290_phi = x_289;
+      }
+      let x_290 : i32 = x_290_phi;
+      if (x_282) {
+        x_295 = p.y;
+        x_297_phi = x_295;
+      } else {
+        x_296 = 0;
+        x_297_phi = x_296;
+      }
+      let x_297 : i32 = x_297_phi;
+      let x_299 : i32 = ((x_297 - 2) * 16);
+      if (x_282) {
+        x_303 = map;
+        x_305_phi = x_303;
+      } else {
+        x_304 = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        x_305_phi = x_304;
+      }
+      let x_305 : array<i32, 256> = x_305_phi;
+      if (x_282) {
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+      }
+      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;
+      }
+      let x_317 : i32 = x_317_phi;
+      let x_318 : bool = (x_317 == 0);
+      if (select(x_282, x_318, x_282)) {
+        let x_323 : i32 = d;
+        d = (x_323 - 1);
+        let x_326 : i32 = p.x;
+        let x_328 : i32 = p.y;
+        map[(x_326 + (x_328 * 16))] = 1;
+        let x_333 : i32 = p.x;
+        let x_335 : i32 = p.y;
+        map[(x_333 + ((x_335 - 1) * 16))] = 1;
+        let x_341 : i32 = p.x;
+        let x_343 : i32 = p.y;
+        let x_345 : array<i32, 256> = map;
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        map = x_345;
+        map[(x_341 + ((x_343 - 2) * 16))] = 1;
+        let x_350 : i32 = p.y;
+        p.y = (x_350 - 2);
+      }
+      let x_353 : i32 = d;
+      let x_354 : bool = (x_353 >= 0);
+      x_360_phi = x_354;
+      if (x_354) {
+        let x_358 : i32 = p.x;
+        x_359 = (x_358 < 14);
+        x_360_phi = x_359;
+      }
+      let x_360 : bool = x_360_phi;
+      x_373_phi = x_360;
+      if (x_360) {
+        let x_364 : i32 = p.x;
+        let x_367 : i32 = p.y;
+        let x_371 : i32 = map[((x_364 + 2) + (x_367 * 16))];
+        x_372 = (x_371 == 0);
+        x_373_phi = x_372;
+      }
+      let x_373 : bool = x_373_phi;
+      if (x_373) {
+        let x_376 : i32 = d;
+        d = (x_376 - 1);
+        let x_379 : i32 = p.x;
+        let x_381 : i32 = p.y;
+        map[(x_379 + (x_381 * 16))] = 1;
+        let x_386 : i32 = p.x;
+        let x_389 : i32 = p.y;
+        map[((x_386 + 1) + (x_389 * 16))] = 1;
+        let x_394 : i32 = p.x;
+        let x_397 : i32 = p.y;
+        map[((x_394 + 2) + (x_397 * 16))] = 1;
+        let x_402 : i32 = p.x;
+        p.x = (x_402 + 2);
+      }
+      let x_405 : i32 = d;
+      let x_406 : bool = (x_405 >= 0);
+      x_412_phi = x_406;
+      if (x_406) {
+        let x_410 : i32 = p.y;
+        x_411 = (x_410 < 14);
+        x_412_phi = x_411;
+      }
+      let x_412 : bool = x_412_phi;
+      x_425_phi = x_412;
+      if (x_412) {
+        let x_416 : i32 = p.x;
+        let x_418 : i32 = p.y;
+        let x_423 : i32 = map[(x_416 + ((x_418 + 2) * 16))];
+        x_424 = (x_423 == 0);
+        x_425_phi = x_424;
+      }
+      let x_425 : bool = x_425_phi;
+      if (x_425) {
+        let x_428 : i32 = d;
+        d = (x_428 - 1);
+        let x_431 : i32 = p.x;
+        let x_433 : i32 = p.y;
+        map[(x_431 + (x_433 * 16))] = 1;
+        let x_438 : i32 = p.x;
+        let x_440 : i32 = p.y;
+        map[(x_438 + ((x_440 + 1) * 16))] = 1;
+        let x_446 : i32 = p.x;
+        let x_448 : i32 = p.y;
+        map[(x_446 + ((x_448 + 2) * 16))] = 1;
+        let x_454 : i32 = p.y;
+        p.y = (x_454 + 2);
+      }
+    }
+    let x_458 : i32 = ipos.y;
+    let x_461 : i32 = ipos.x;
+    let x_464 : i32 = map[((x_458 * 16) + x_461)];
+    if ((x_464 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_468 : bool = canwalk;
+      if (x_468) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
new file mode 100644
index 0000000..7636426
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
@@ -0,0 +1,392 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_59 : vec4<f32> = gl_FragCoord;
+  let x_62 : vec2<f32> = x_7.resolution;
+  pos = (vec2<f32>(x_59.x, x_59.y) / x_62);
+  let x_65 : f32 = pos.x;
+  let x_69 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_65 * 16.0)), i32((x_69 * 16.0)));
+  i = 0;
+  loop {
+    let x_77 : i32 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = i;
+    map[x_80] = 0;
+
+    continuing {
+      let x_82 : i32 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_104 : bool;
+    var x_124 : bool;
+    var x_144 : bool;
+    var x_164 : bool;
+    var x_105_phi : bool;
+    var x_125_phi : bool;
+    var x_145_phi : bool;
+    var x_165_phi : bool;
+    let x_88 : i32 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    let x_91 : i32 = p.x;
+    let x_92 : bool = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      let x_96 : i32 = p.x;
+      let x_99 : i32 = p.y;
+      let x_103 : i32 = map[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    let x_105 : bool = x_105_phi;
+    if (x_105) {
+      let x_108 : i32 = directions;
+      directions = (x_108 + 1);
+    }
+    let x_111 : i32 = p.y;
+    let x_112 : bool = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      let x_116 : i32 = p.x;
+      let x_118 : i32 = p.y;
+      let x_123 : i32 = map[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    let x_125 : bool = x_125_phi;
+    if (x_125) {
+      let x_128 : i32 = directions;
+      directions = (x_128 + 1);
+    }
+    let x_131 : i32 = p.x;
+    let x_132 : bool = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      let x_136 : i32 = p.x;
+      let x_139 : i32 = p.y;
+      let x_143 : i32 = map[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    let x_145 : bool = x_145_phi;
+    if (x_145) {
+      let x_148 : i32 = directions;
+      directions = (x_148 + 1);
+    }
+    let x_151 : i32 = p.y;
+    let x_152 : bool = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      let x_156 : i32 = p.x;
+      let x_158 : i32 = p.y;
+      let x_163 : i32 = map[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    let x_165 : bool = x_165_phi;
+    if (x_165) {
+      let x_168 : i32 = directions;
+      directions = (x_168 + 1);
+    }
+    var x_229 : bool;
+    var x_242 : bool;
+    var x_281 : bool;
+    var x_288 : i32;
+    var x_289 : i32;
+    var x_295 : i32;
+    var x_296 : i32;
+    var x_303 : array<i32, 256>;
+    var x_304 : array<i32, 256>;
+    var x_315 : i32;
+    var x_316 : i32;
+    var x_359 : bool;
+    var x_372 : bool;
+    var x_411 : bool;
+    var x_424 : bool;
+    var x_230_phi : bool;
+    var x_243_phi : bool;
+    var x_282_phi : bool;
+    var x_290_phi : i32;
+    var x_297_phi : i32;
+    var x_305_phi : array<i32, 256>;
+    var x_317_phi : i32;
+    var x_360_phi : bool;
+    var x_373_phi : bool;
+    var x_412_phi : bool;
+    var x_425_phi : bool;
+    let x_170 : i32 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_179 : i32 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        loop {
+          let x_186 : i32 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          let x_189 : i32 = j;
+          let x_191 : i32 = i;
+          let x_196 : i32 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            let x_200 : i32 = j;
+            p.x = (x_200 * 2);
+            let x_203 : i32 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_206 : i32 = j;
+            j = (x_206 + 1);
+          }
+        }
+
+        continuing {
+          let x_208 : i32 = i;
+          i = (x_208 + 1);
+        }
+      }
+      let x_211 : i32 = p.x;
+      let x_213 : i32 = p.y;
+      map[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      let x_217 : i32 = v;
+      let x_218 : i32 = directions;
+      d = (x_217 % x_218);
+      let x_220 : i32 = directions;
+      let x_221 : i32 = v;
+      v = (x_221 + x_220);
+      let x_223 : i32 = d;
+      let x_224 : bool = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        let x_228 : i32 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      let x_230 : bool = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        let x_234 : i32 = p.x;
+        let x_237 : i32 = p.y;
+        let x_241 : i32 = map[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      let x_243 : bool = x_243_phi;
+      if (x_243) {
+        let x_246 : i32 = d;
+        d = (x_246 - 1);
+        let x_249 : i32 = p.x;
+        let x_251 : i32 = p.y;
+        map[(x_249 + (x_251 * 16))] = 1;
+        let x_256 : i32 = p.x;
+        let x_259 : i32 = p.y;
+        map[((x_256 - 1) + (x_259 * 16))] = 1;
+        let x_264 : i32 = p.x;
+        let x_267 : i32 = p.y;
+        map[((x_264 - 2) + (x_267 * 16))] = 1;
+        let x_272 : i32 = p.x;
+        p.x = (x_272 - 2);
+      }
+      let x_275 : i32 = d;
+      let x_276 : bool = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        let x_280 : i32 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      let x_282 : bool = x_282_phi;
+      if (x_282) {
+        x_288 = p.x;
+        x_290_phi = x_288;
+      } else {
+        x_289 = 0;
+        x_290_phi = x_289;
+      }
+      let x_290 : i32 = x_290_phi;
+      if (x_282) {
+        x_295 = p.y;
+        x_297_phi = x_295;
+      } else {
+        x_296 = 0;
+        x_297_phi = x_296;
+      }
+      let x_297 : i32 = x_297_phi;
+      let x_299 : i32 = ((x_297 - 2) * 16);
+      if (x_282) {
+        x_303 = map;
+        x_305_phi = x_303;
+      } else {
+        x_304 = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        x_305_phi = x_304;
+      }
+      let x_305 : array<i32, 256> = x_305_phi;
+      if (x_282) {
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+      }
+      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;
+      }
+      let x_317 : i32 = x_317_phi;
+      let x_318 : bool = (x_317 == 0);
+      if (select(x_282, x_318, x_282)) {
+        let x_323 : i32 = d;
+        d = (x_323 - 1);
+        let x_326 : i32 = p.x;
+        let x_328 : i32 = p.y;
+        map[(x_326 + (x_328 * 16))] = 1;
+        let x_333 : i32 = p.x;
+        let x_335 : i32 = p.y;
+        map[(x_333 + ((x_335 - 1) * 16))] = 1;
+        let x_341 : i32 = p.x;
+        let x_343 : i32 = p.y;
+        let x_345 : array<i32, 256> = map;
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        map = x_345;
+        map[(x_341 + ((x_343 - 2) * 16))] = 1;
+        let x_350 : i32 = p.y;
+        p.y = (x_350 - 2);
+      }
+      let x_353 : i32 = d;
+      let x_354 : bool = (x_353 >= 0);
+      x_360_phi = x_354;
+      if (x_354) {
+        let x_358 : i32 = p.x;
+        x_359 = (x_358 < 14);
+        x_360_phi = x_359;
+      }
+      let x_360 : bool = x_360_phi;
+      x_373_phi = x_360;
+      if (x_360) {
+        let x_364 : i32 = p.x;
+        let x_367 : i32 = p.y;
+        let x_371 : i32 = map[((x_364 + 2) + (x_367 * 16))];
+        x_372 = (x_371 == 0);
+        x_373_phi = x_372;
+      }
+      let x_373 : bool = x_373_phi;
+      if (x_373) {
+        let x_376 : i32 = d;
+        d = (x_376 - 1);
+        let x_379 : i32 = p.x;
+        let x_381 : i32 = p.y;
+        map[(x_379 + (x_381 * 16))] = 1;
+        let x_386 : i32 = p.x;
+        let x_389 : i32 = p.y;
+        map[((x_386 + 1) + (x_389 * 16))] = 1;
+        let x_394 : i32 = p.x;
+        let x_397 : i32 = p.y;
+        map[((x_394 + 2) + (x_397 * 16))] = 1;
+        let x_402 : i32 = p.x;
+        p.x = (x_402 + 2);
+      }
+      let x_405 : i32 = d;
+      let x_406 : bool = (x_405 >= 0);
+      x_412_phi = x_406;
+      if (x_406) {
+        let x_410 : i32 = p.y;
+        x_411 = (x_410 < 14);
+        x_412_phi = x_411;
+      }
+      let x_412 : bool = x_412_phi;
+      x_425_phi = x_412;
+      if (x_412) {
+        let x_416 : i32 = p.x;
+        let x_418 : i32 = p.y;
+        let x_423 : i32 = map[(x_416 + ((x_418 + 2) * 16))];
+        x_424 = (x_423 == 0);
+        x_425_phi = x_424;
+      }
+      let x_425 : bool = x_425_phi;
+      if (x_425) {
+        let x_428 : i32 = d;
+        d = (x_428 - 1);
+        let x_431 : i32 = p.x;
+        let x_433 : i32 = p.y;
+        map[(x_431 + (x_433 * 16))] = 1;
+        let x_438 : i32 = p.x;
+        let x_440 : i32 = p.y;
+        map[(x_438 + ((x_440 + 1) * 16))] = 1;
+        let x_446 : i32 = p.x;
+        let x_448 : i32 = p.y;
+        map[(x_446 + ((x_448 + 2) * 16))] = 1;
+        let x_454 : i32 = p.y;
+        p.y = (x_454 + 2);
+      }
+    }
+    let x_458 : i32 = ipos.y;
+    let x_461 : i32 = ipos.x;
+    let x_464 : i32 = map[((x_458 * 16) + x_461)];
+    if ((x_464 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_468 : bool = canwalk;
+      if (x_468) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..0505c28
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.hlsl
@@ -0,0 +1,338 @@
+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;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  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;
+      {
+        for(; (i < 8); i = (i + 1)) {
+          j = 0;
+          {
+            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);
+      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_5[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        x_304 = tint_symbol_5;
+        x_305_phi = x_304;
+      }
+      const int x_305[256] = x_305_phi;
+      if (x_282) {
+        const int tint_symbol_6[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        map = tint_symbol_6;
+      }
+      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_7[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        map = tint_symbol_7;
+        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 = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.msl
new file mode 100644
index 0000000..794863a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.msl
@@ -0,0 +1,394 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_8, thread tint_array_wrapper* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  float2 pos = 0.0f;
+  int2 ipos = 0;
+  int i = 0;
+  int2 p = 0;
+  bool canwalk = false;
+  int v = 0;
+  int directions = 0;
+  int j = 0;
+  int d = 0;
+  float4 const x_59 = *(tint_symbol_8);
+  float2 const x_62 = x_7.resolution;
+  pos = (float2(x_59.x, x_59.y) / x_62);
+  float const x_65 = pos.x;
+  float const x_69 = pos.y;
+  ipos = int2(int((x_65 * 16.0f)), int((x_69 * 16.0f)));
+  i = 0;
+  while (true) {
+    int const x_77 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    int const x_80 = i;
+    (*(tint_symbol_9)).arr[x_80] = 0;
+    {
+      int const x_82 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  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;
+    int const x_88 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    int const x_91 = p.x;
+    bool const x_92 = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      int const x_96 = p.x;
+      int const x_99 = p.y;
+      int const x_103 = (*(tint_symbol_9)).arr[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    bool const x_105 = x_105_phi;
+    if (x_105) {
+      int const x_108 = directions;
+      directions = (x_108 + 1);
+    }
+    int const x_111 = p.y;
+    bool const x_112 = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      int const x_116 = p.x;
+      int const x_118 = p.y;
+      int const x_123 = (*(tint_symbol_9)).arr[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    bool const x_125 = x_125_phi;
+    if (x_125) {
+      int const x_128 = directions;
+      directions = (x_128 + 1);
+    }
+    int const x_131 = p.x;
+    bool const x_132 = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      int const x_136 = p.x;
+      int const x_139 = p.y;
+      int const x_143 = (*(tint_symbol_9)).arr[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    bool const x_145 = x_145_phi;
+    if (x_145) {
+      int const x_148 = directions;
+      directions = (x_148 + 1);
+    }
+    int const x_151 = p.y;
+    bool const x_152 = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      int const x_156 = p.x;
+      int const x_158 = p.y;
+      int const x_163 = (*(tint_symbol_9)).arr[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    bool const x_165 = x_165_phi;
+    if (x_165) {
+      int const x_168 = directions;
+      directions = (x_168 + 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;
+    tint_array_wrapper x_303 = {};
+    tint_array_wrapper x_304 = {};
+    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;
+    tint_array_wrapper x_305_phi = {};
+    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;
+    int const x_170 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        int const x_179 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        while (true) {
+          int const x_186 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          int const x_189 = j;
+          int const x_191 = i;
+          int const x_196 = (*(tint_symbol_9)).arr[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            int const x_200 = j;
+            p.x = (x_200 * 2);
+            int const x_203 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+          {
+            int const x_206 = j;
+            j = (x_206 + 1);
+          }
+        }
+        {
+          int const x_208 = i;
+          i = (x_208 + 1);
+        }
+      }
+      int const x_211 = p.x;
+      int const x_213 = p.y;
+      (*(tint_symbol_9)).arr[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      int const x_217 = v;
+      int const x_218 = directions;
+      d = (x_217 % x_218);
+      int const x_220 = directions;
+      int const x_221 = v;
+      v = (x_221 + x_220);
+      int const x_223 = d;
+      bool const x_224 = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        int const x_228 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      bool const x_230 = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        int const x_234 = p.x;
+        int const x_237 = p.y;
+        int const x_241 = (*(tint_symbol_9)).arr[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      bool const x_243 = x_243_phi;
+      if (x_243) {
+        int const x_246 = d;
+        d = (x_246 - 1);
+        int const x_249 = p.x;
+        int const x_251 = p.y;
+        (*(tint_symbol_9)).arr[(x_249 + (x_251 * 16))] = 1;
+        int const x_256 = p.x;
+        int const x_259 = p.y;
+        (*(tint_symbol_9)).arr[((x_256 - 1) + (x_259 * 16))] = 1;
+        int const x_264 = p.x;
+        int const x_267 = p.y;
+        (*(tint_symbol_9)).arr[((x_264 - 2) + (x_267 * 16))] = 1;
+        int const x_272 = p.x;
+        p.x = (x_272 - 2);
+      }
+      int const x_275 = d;
+      bool const x_276 = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        int const x_280 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      bool const 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;
+      }
+      int const 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;
+      }
+      int const x_297 = x_297_phi;
+      int const x_299 = ((x_297 - 2) * 16);
+      if (x_282) {
+        x_303 = *(tint_symbol_9);
+        x_305_phi = x_303;
+      } else {
+        tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        x_304 = tint_symbol_4;
+        x_305_phi = x_304;
+      }
+      tint_array_wrapper const x_305 = x_305_phi;
+      if (x_282) {
+        tint_array_wrapper const tint_symbol_5 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        *(tint_symbol_9) = tint_symbol_5;
+      }
+      if (x_282) {
+        *(tint_symbol_9) = x_305;
+      }
+      if (x_282) {
+        x_315 = (*(tint_symbol_9)).arr[(x_290 + x_299)];
+        x_317_phi = x_315;
+      } else {
+        x_316 = 0;
+        x_317_phi = x_316;
+      }
+      int const x_317 = x_317_phi;
+      bool const x_318 = (x_317 == 0);
+      if (select(x_282, x_318, x_282)) {
+        int const x_323 = d;
+        d = (x_323 - 1);
+        int const x_326 = p.x;
+        int const x_328 = p.y;
+        (*(tint_symbol_9)).arr[(x_326 + (x_328 * 16))] = 1;
+        int const x_333 = p.x;
+        int const x_335 = p.y;
+        (*(tint_symbol_9)).arr[(x_333 + ((x_335 - 1) * 16))] = 1;
+        int const x_341 = p.x;
+        int const x_343 = p.y;
+        tint_array_wrapper const x_345 = *(tint_symbol_9);
+        tint_array_wrapper const tint_symbol_6 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        *(tint_symbol_9) = tint_symbol_6;
+        *(tint_symbol_9) = x_345;
+        (*(tint_symbol_9)).arr[(x_341 + ((x_343 - 2) * 16))] = 1;
+        int const x_350 = p.y;
+        p.y = (x_350 - 2);
+      }
+      int const x_353 = d;
+      bool const x_354 = (x_353 >= 0);
+      x_360_phi = x_354;
+      if (x_354) {
+        int const x_358 = p.x;
+        x_359 = (x_358 < 14);
+        x_360_phi = x_359;
+      }
+      bool const x_360 = x_360_phi;
+      x_373_phi = x_360;
+      if (x_360) {
+        int const x_364 = p.x;
+        int const x_367 = p.y;
+        int const x_371 = (*(tint_symbol_9)).arr[((x_364 + 2) + (x_367 * 16))];
+        x_372 = (x_371 == 0);
+        x_373_phi = x_372;
+      }
+      bool const x_373 = x_373_phi;
+      if (x_373) {
+        int const x_376 = d;
+        d = (x_376 - 1);
+        int const x_379 = p.x;
+        int const x_381 = p.y;
+        (*(tint_symbol_9)).arr[(x_379 + (x_381 * 16))] = 1;
+        int const x_386 = p.x;
+        int const x_389 = p.y;
+        (*(tint_symbol_9)).arr[((x_386 + 1) + (x_389 * 16))] = 1;
+        int const x_394 = p.x;
+        int const x_397 = p.y;
+        (*(tint_symbol_9)).arr[((x_394 + 2) + (x_397 * 16))] = 1;
+        int const x_402 = p.x;
+        p.x = (x_402 + 2);
+      }
+      int const x_405 = d;
+      bool const x_406 = (x_405 >= 0);
+      x_412_phi = x_406;
+      if (x_406) {
+        int const x_410 = p.y;
+        x_411 = (x_410 < 14);
+        x_412_phi = x_411;
+      }
+      bool const x_412 = x_412_phi;
+      x_425_phi = x_412;
+      if (x_412) {
+        int const x_416 = p.x;
+        int const x_418 = p.y;
+        int const x_423 = (*(tint_symbol_9)).arr[(x_416 + ((x_418 + 2) * 16))];
+        x_424 = (x_423 == 0);
+        x_425_phi = x_424;
+      }
+      bool const x_425 = x_425_phi;
+      if (x_425) {
+        int const x_428 = d;
+        d = (x_428 - 1);
+        int const x_431 = p.x;
+        int const x_433 = p.y;
+        (*(tint_symbol_9)).arr[(x_431 + (x_433 * 16))] = 1;
+        int const x_438 = p.x;
+        int const x_440 = p.y;
+        (*(tint_symbol_9)).arr[(x_438 + ((x_440 + 1) * 16))] = 1;
+        int const x_446 = p.x;
+        int const x_448 = p.y;
+        (*(tint_symbol_9)).arr[(x_446 + ((x_448 + 2) * 16))] = 1;
+        int const x_454 = p.y;
+        p.y = (x_454 + 2);
+      }
+    }
+    int const x_458 = ipos.y;
+    int const x_461 = ipos.x;
+    int const x_464 = (*(tint_symbol_9)).arr[((x_458 * 16) + x_461)];
+    if ((x_464 == 1)) {
+      *(tint_symbol_10) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      return;
+    }
+    {
+      bool const x_468 = canwalk;
+      if (x_468) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_10) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread tint_array_wrapper tint_symbol_12 = {};
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_11), &(tint_symbol_12), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..bde11c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.spvasm
@@ -0,0 +1,860 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 548
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %map "map"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %x_104 "x_104"
+               OpName %x_124 "x_124"
+               OpName %x_144 "x_144"
+               OpName %x_164 "x_164"
+               OpName %x_105_phi "x_105_phi"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_145_phi "x_145_phi"
+               OpName %x_165_phi "x_165_phi"
+               OpName %x_229 "x_229"
+               OpName %x_242 "x_242"
+               OpName %x_281 "x_281"
+               OpName %x_288 "x_288"
+               OpName %x_289 "x_289"
+               OpName %x_295 "x_295"
+               OpName %x_296 "x_296"
+               OpName %x_303 "x_303"
+               OpName %x_304 "x_304"
+               OpName %x_315 "x_315"
+               OpName %x_316 "x_316"
+               OpName %x_359 "x_359"
+               OpName %x_372 "x_372"
+               OpName %x_411 "x_411"
+               OpName %x_424 "x_424"
+               OpName %x_230_phi "x_230_phi"
+               OpName %x_243_phi "x_243_phi"
+               OpName %x_282_phi "x_282_phi"
+               OpName %x_290_phi "x_290_phi"
+               OpName %x_297_phi "x_297_phi"
+               OpName %x_305_phi "x_305_phi"
+               OpName %x_317_phi "x_317_phi"
+               OpName %x_360_phi "x_360_phi"
+               OpName %x_373_phi "x_373_phi"
+               OpName %x_412_phi "x_412_phi"
+               OpName %x_425_phi "x_425_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+         %16 = OpConstantNull %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private %16
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %28 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %32 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %float_16 = OpConstant %float 16
+      %int_0 = OpConstant %int 0
+    %int_256 = OpConstant %int 256
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %83 = OpConstantComposite %v2int %int_0 %int_0
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+        %358 = OpConstantComposite %_arr_int_uint_256 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+    %float_1 = OpConstant %float 1
+        %528 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+        %534 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %535 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %28
+       %ipos = OpVariable %_ptr_Function_v2int Function %32
+          %i = OpVariable %_ptr_Function_int Function %35
+          %p = OpVariable %_ptr_Function_v2int Function %32
+    %canwalk = OpVariable %_ptr_Function_bool Function %40
+          %v = OpVariable %_ptr_Function_int Function %35
+ %directions = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+          %d = OpVariable %_ptr_Function_int Function %35
+      %x_104 = OpVariable %_ptr_Function_bool Function %40
+      %x_124 = OpVariable %_ptr_Function_bool Function %40
+      %x_144 = OpVariable %_ptr_Function_bool Function %40
+      %x_164 = OpVariable %_ptr_Function_bool Function %40
+  %x_105_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_125_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_145_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_165_phi = OpVariable %_ptr_Function_bool Function %40
+      %x_229 = OpVariable %_ptr_Function_bool Function %40
+      %x_242 = OpVariable %_ptr_Function_bool Function %40
+      %x_281 = OpVariable %_ptr_Function_bool Function %40
+      %x_288 = OpVariable %_ptr_Function_int Function %35
+      %x_289 = OpVariable %_ptr_Function_int Function %35
+      %x_295 = OpVariable %_ptr_Function_int Function %35
+      %x_296 = OpVariable %_ptr_Function_int Function %35
+      %x_303 = OpVariable %_ptr_Function__arr_int_uint_256 Function %16
+      %x_304 = OpVariable %_ptr_Function__arr_int_uint_256 Function %16
+      %x_315 = OpVariable %_ptr_Function_int Function %35
+      %x_316 = OpVariable %_ptr_Function_int Function %35
+      %x_359 = OpVariable %_ptr_Function_bool Function %40
+      %x_372 = OpVariable %_ptr_Function_bool Function %40
+      %x_411 = OpVariable %_ptr_Function_bool Function %40
+      %x_424 = OpVariable %_ptr_Function_bool Function %40
+  %x_230_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_243_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_282_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_290_phi = OpVariable %_ptr_Function_int Function %35
+  %x_297_phi = OpVariable %_ptr_Function_int Function %35
+  %x_305_phi = OpVariable %_ptr_Function__arr_int_uint_256 Function %16
+  %x_317_phi = OpVariable %_ptr_Function_int Function %35
+  %x_360_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_373_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_412_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_425_phi = OpVariable %_ptr_Function_bool Function %40
+         %45 = OpLoad %v4float %gl_FragCoord
+         %48 = OpAccessChain %_ptr_Uniform_v2float %x_7 %uint_0
+         %49 = OpLoad %v2float %48
+         %50 = OpCompositeExtract %float %45 0
+         %51 = OpCompositeExtract %float %45 1
+         %52 = OpCompositeConstruct %v2float %50 %51
+         %53 = OpFDiv %v2float %52 %49
+               OpStore %pos %53
+         %55 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %59 = OpLoad %float %58
+         %62 = OpFMul %float %56 %float_16
+         %60 = OpConvertFToS %int %62
+         %64 = OpFMul %float %59 %float_16
+         %63 = OpConvertFToS %int %64
+         %65 = OpCompositeConstruct %v2int %60 %63
+               OpStore %ipos %65
+               OpStore %i %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i
+         %73 = OpSLessThan %bool %71 %int_256
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %68
+         %74 = OpLabel
+         %77 = OpLoad %int %i
+         %79 = OpAccessChain %_ptr_Private_int %map %77
+               OpStore %79 %int_0
+               OpBranch %69
+         %69 = OpLabel
+         %80 = OpLoad %int %i
+         %82 = OpIAdd %int %80 %int_1
+               OpStore %i %82
+               OpBranch %67
+         %68 = OpLabel
+               OpStore %p %83
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %97 = OpLoad %int %v
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %v %98
+               OpStore %directions %int_0
+         %99 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %100 = OpLoad %int %99
+        %101 = OpSGreaterThan %bool %100 %int_0
+               OpStore %x_105_phi %101
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %104 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %107 = OpLoad %int %106
+        %109 = OpISub %int %105 %int_2
+        %111 = OpIMul %int %107 %int_16
+        %112 = OpIAdd %int %109 %111
+        %113 = OpAccessChain %_ptr_Private_int %map %112
+        %114 = OpLoad %int %113
+        %115 = OpIEqual %bool %114 %int_0
+               OpStore %x_104 %115
+        %116 = OpLoad %bool %x_104
+               OpStore %x_105_phi %116
+               OpBranch %102
+        %102 = OpLabel
+        %117 = OpLoad %bool %x_105_phi
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpLoad %int %directions
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %directions %121
+               OpBranch %118
+        %118 = OpLabel
+        %122 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %123 = OpLoad %int %122
+        %124 = OpSGreaterThan %bool %123 %int_0
+               OpStore %x_125_phi %124
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %130 = OpLoad %int %129
+        %131 = OpISub %int %130 %int_2
+        %132 = OpIMul %int %131 %int_16
+        %133 = OpIAdd %int %128 %132
+        %134 = OpAccessChain %_ptr_Private_int %map %133
+        %135 = OpLoad %int %134
+        %136 = OpIEqual %bool %135 %int_0
+               OpStore %x_124 %136
+        %137 = OpLoad %bool %x_124
+               OpStore %x_125_phi %137
+               OpBranch %125
+        %125 = OpLabel
+        %138 = OpLoad %bool %x_125_phi
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %directions
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %directions %142
+               OpBranch %139
+        %139 = OpLabel
+        %143 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %144 = OpLoad %int %143
+        %146 = OpSLessThan %bool %144 %int_14
+               OpStore %x_145_phi %146
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %150 = OpLoad %int %149
+        %151 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %152 = OpLoad %int %151
+        %153 = OpIAdd %int %150 %int_2
+        %154 = OpIMul %int %152 %int_16
+        %155 = OpIAdd %int %153 %154
+        %156 = OpAccessChain %_ptr_Private_int %map %155
+        %157 = OpLoad %int %156
+        %158 = OpIEqual %bool %157 %int_0
+               OpStore %x_144 %158
+        %159 = OpLoad %bool %x_144
+               OpStore %x_145_phi %159
+               OpBranch %147
+        %147 = OpLabel
+        %160 = OpLoad %bool %x_145_phi
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %int %directions
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %directions %164
+               OpBranch %161
+        %161 = OpLabel
+        %165 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %166 %int_14
+               OpStore %x_165_phi %167
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %168
+        %169 = OpLabel
+        %170 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %171 = OpLoad %int %170
+        %172 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %173 = OpLoad %int %172
+        %174 = OpIAdd %int %173 %int_2
+        %175 = OpIMul %int %174 %int_16
+        %176 = OpIAdd %int %171 %175
+        %177 = OpAccessChain %_ptr_Private_int %map %176
+        %178 = OpLoad %int %177
+        %179 = OpIEqual %bool %178 %int_0
+               OpStore %x_164 %179
+        %180 = OpLoad %bool %x_164
+               OpStore %x_165_phi %180
+               OpBranch %168
+        %168 = OpLabel
+        %181 = OpLoad %bool %x_165_phi
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %directions
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %directions %185
+               OpBranch %182
+        %182 = OpLabel
+        %213 = OpLoad %int %directions
+        %214 = OpIEqual %bool %213 %int_0
+               OpSelectionMerge %215 None
+               OpBranchConditional %214 %216 %217
+        %216 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %219
+        %219 = OpLabel
+               OpLoopMerge %220 %221 None
+               OpBranch %222
+        %222 = OpLabel
+        %223 = OpLoad %int %i
+        %225 = OpSLessThan %bool %223 %int_8
+               OpSelectionMerge %226 None
+               OpBranchConditional %225 %227 %228
+        %227 = OpLabel
+               OpBranch %226
+        %228 = OpLabel
+               OpBranch %220
+        %226 = OpLabel
+               OpStore %j %int_0
+               OpBranch %229
+        %229 = OpLabel
+               OpLoopMerge %230 %231 None
+               OpBranch %232
+        %232 = OpLabel
+        %233 = OpLoad %int %j
+        %234 = OpSLessThan %bool %233 %int_8
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %237
+        %236 = OpLabel
+               OpBranch %235
+        %237 = OpLabel
+               OpBranch %230
+        %235 = OpLabel
+        %238 = OpLoad %int %j
+        %239 = OpLoad %int %i
+        %240 = OpIMul %int %238 %int_2
+        %241 = OpIMul %int %239 %int_2
+        %242 = OpIMul %int %241 %int_16
+        %243 = OpIAdd %int %240 %242
+        %244 = OpAccessChain %_ptr_Private_int %map %243
+        %245 = OpLoad %int %244
+        %246 = OpIEqual %bool %245 %int_0
+               OpSelectionMerge %247 None
+               OpBranchConditional %246 %248 %247
+        %248 = OpLabel
+        %249 = OpLoad %int %j
+        %250 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %251 = OpIMul %int %249 %int_2
+               OpStore %250 %251
+        %252 = OpLoad %int %i
+        %253 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %254 = OpIMul %int %252 %int_2
+               OpStore %253 %254
+               OpStore %canwalk %true
+               OpBranch %247
+        %247 = OpLabel
+               OpBranch %231
+        %231 = OpLabel
+        %255 = OpLoad %int %j
+        %256 = OpIAdd %int %255 %int_1
+               OpStore %j %256
+               OpBranch %229
+        %230 = OpLabel
+               OpBranch %221
+        %221 = OpLabel
+        %257 = OpLoad %int %i
+        %258 = OpIAdd %int %257 %int_1
+               OpStore %i %258
+               OpBranch %219
+        %220 = OpLabel
+        %259 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %260 = OpLoad %int %259
+        %261 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %262 = OpLoad %int %261
+        %263 = OpIMul %int %262 %int_16
+        %264 = OpIAdd %int %260 %263
+        %265 = OpAccessChain %_ptr_Private_int %map %264
+               OpStore %265 %int_1
+               OpBranch %215
+        %217 = OpLabel
+        %266 = OpLoad %int %v
+        %267 = OpLoad %int %directions
+        %268 = OpSMod %int %266 %267
+               OpStore %d %268
+        %269 = OpLoad %int %directions
+        %270 = OpLoad %int %v
+        %271 = OpIAdd %int %270 %269
+               OpStore %v %271
+        %272 = OpLoad %int %d
+        %273 = OpSGreaterThanEqual %bool %272 %int_0
+               OpStore %x_230_phi %273
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %274
+        %275 = OpLabel
+        %276 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %277 = OpLoad %int %276
+        %278 = OpSGreaterThan %bool %277 %int_0
+               OpStore %x_229 %278
+        %279 = OpLoad %bool %x_229
+               OpStore %x_230_phi %279
+               OpBranch %274
+        %274 = OpLabel
+        %280 = OpLoad %bool %x_230_phi
+               OpStore %x_243_phi %280
+               OpSelectionMerge %281 None
+               OpBranchConditional %280 %282 %281
+        %282 = OpLabel
+        %283 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %284 = OpLoad %int %283
+        %285 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %286 = OpLoad %int %285
+        %287 = OpISub %int %284 %int_2
+        %288 = OpIMul %int %286 %int_16
+        %289 = OpIAdd %int %287 %288
+        %290 = OpAccessChain %_ptr_Private_int %map %289
+        %291 = OpLoad %int %290
+        %292 = OpIEqual %bool %291 %int_0
+               OpStore %x_242 %292
+        %293 = OpLoad %bool %x_242
+               OpStore %x_243_phi %293
+               OpBranch %281
+        %281 = OpLabel
+        %294 = OpLoad %bool %x_243_phi
+               OpSelectionMerge %295 None
+               OpBranchConditional %294 %296 %295
+        %296 = OpLabel
+        %297 = OpLoad %int %d
+        %298 = OpISub %int %297 %int_1
+               OpStore %d %298
+        %299 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %300 = OpLoad %int %299
+        %301 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %302 = OpLoad %int %301
+        %303 = OpIMul %int %302 %int_16
+        %304 = OpIAdd %int %300 %303
+        %305 = OpAccessChain %_ptr_Private_int %map %304
+               OpStore %305 %int_1
+        %306 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %307 = OpLoad %int %306
+        %308 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %309 = OpLoad %int %308
+        %310 = OpISub %int %307 %int_1
+        %311 = OpIMul %int %309 %int_16
+        %312 = OpIAdd %int %310 %311
+        %313 = OpAccessChain %_ptr_Private_int %map %312
+               OpStore %313 %int_1
+        %314 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %315 = OpLoad %int %314
+        %316 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %317 = OpLoad %int %316
+        %318 = OpISub %int %315 %int_2
+        %319 = OpIMul %int %317 %int_16
+        %320 = OpIAdd %int %318 %319
+        %321 = OpAccessChain %_ptr_Private_int %map %320
+               OpStore %321 %int_1
+        %322 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %323 = OpLoad %int %322
+        %324 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %325 = OpISub %int %323 %int_2
+               OpStore %324 %325
+               OpBranch %295
+        %295 = OpLabel
+        %326 = OpLoad %int %d
+        %327 = OpSGreaterThanEqual %bool %326 %int_0
+               OpStore %x_282_phi %327
+               OpSelectionMerge %328 None
+               OpBranchConditional %327 %329 %328
+        %329 = OpLabel
+        %330 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %331 = OpLoad %int %330
+        %332 = OpSGreaterThan %bool %331 %int_0
+               OpStore %x_281 %332
+        %333 = OpLoad %bool %x_281
+               OpStore %x_282_phi %333
+               OpBranch %328
+        %328 = OpLabel
+        %334 = OpLoad %bool %x_282_phi
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %337
+        %336 = OpLabel
+        %338 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %339 = OpLoad %int %338
+               OpStore %x_288 %339
+        %340 = OpLoad %int %x_288
+               OpStore %x_290_phi %340
+               OpBranch %335
+        %337 = OpLabel
+               OpStore %x_289 %int_0
+        %341 = OpLoad %int %x_289
+               OpStore %x_290_phi %341
+               OpBranch %335
+        %335 = OpLabel
+        %342 = OpLoad %int %x_290_phi
+               OpSelectionMerge %343 None
+               OpBranchConditional %334 %344 %345
+        %344 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %347 = OpLoad %int %346
+               OpStore %x_295 %347
+        %348 = OpLoad %int %x_295
+               OpStore %x_297_phi %348
+               OpBranch %343
+        %345 = OpLabel
+               OpStore %x_296 %int_0
+        %349 = OpLoad %int %x_296
+               OpStore %x_297_phi %349
+               OpBranch %343
+        %343 = OpLabel
+        %350 = OpLoad %int %x_297_phi
+        %351 = OpISub %int %350 %int_2
+        %352 = OpIMul %int %351 %int_16
+               OpSelectionMerge %353 None
+               OpBranchConditional %334 %354 %355
+        %354 = OpLabel
+        %356 = OpLoad %_arr_int_uint_256 %map
+               OpStore %x_303 %356
+        %357 = OpLoad %_arr_int_uint_256 %x_303
+               OpStore %x_305_phi %357
+               OpBranch %353
+        %355 = OpLabel
+               OpStore %x_304 %358
+        %359 = OpLoad %_arr_int_uint_256 %x_304
+               OpStore %x_305_phi %359
+               OpBranch %353
+        %353 = OpLabel
+        %360 = OpLoad %_arr_int_uint_256 %x_305_phi
+               OpSelectionMerge %361 None
+               OpBranchConditional %334 %362 %361
+        %362 = OpLabel
+               OpStore %map %358
+               OpBranch %361
+        %361 = OpLabel
+               OpSelectionMerge %363 None
+               OpBranchConditional %334 %364 %363
+        %364 = OpLabel
+               OpStore %map %360
+               OpBranch %363
+        %363 = OpLabel
+               OpSelectionMerge %365 None
+               OpBranchConditional %334 %366 %367
+        %366 = OpLabel
+        %368 = OpIAdd %int %342 %352
+        %369 = OpAccessChain %_ptr_Private_int %map %368
+        %370 = OpLoad %int %369
+               OpStore %x_315 %370
+        %371 = OpLoad %int %x_315
+               OpStore %x_317_phi %371
+               OpBranch %365
+        %367 = OpLabel
+               OpStore %x_316 %int_0
+        %372 = OpLoad %int %x_316
+               OpStore %x_317_phi %372
+               OpBranch %365
+        %365 = OpLabel
+        %373 = OpLoad %int %x_317_phi
+        %374 = OpIEqual %bool %373 %int_0
+        %375 = OpSelect %bool %334 %374 %334
+               OpSelectionMerge %376 None
+               OpBranchConditional %375 %377 %376
+        %377 = OpLabel
+        %378 = OpLoad %int %d
+        %379 = OpISub %int %378 %int_1
+               OpStore %d %379
+        %380 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %381 = OpLoad %int %380
+        %382 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %383 = OpLoad %int %382
+        %384 = OpIMul %int %383 %int_16
+        %385 = OpIAdd %int %381 %384
+        %386 = OpAccessChain %_ptr_Private_int %map %385
+               OpStore %386 %int_1
+        %387 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %388 = OpLoad %int %387
+        %389 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %390 = OpLoad %int %389
+        %391 = OpISub %int %390 %int_1
+        %392 = OpIMul %int %391 %int_16
+        %393 = OpIAdd %int %388 %392
+        %394 = OpAccessChain %_ptr_Private_int %map %393
+               OpStore %394 %int_1
+        %395 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %396 = OpLoad %int %395
+        %397 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %398 = OpLoad %int %397
+        %399 = OpLoad %_arr_int_uint_256 %map
+               OpStore %map %358
+               OpStore %map %399
+        %400 = OpISub %int %398 %int_2
+        %401 = OpIMul %int %400 %int_16
+        %402 = OpIAdd %int %396 %401
+        %403 = OpAccessChain %_ptr_Private_int %map %402
+               OpStore %403 %int_1
+        %404 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %405 = OpLoad %int %404
+        %406 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %407 = OpISub %int %405 %int_2
+               OpStore %406 %407
+               OpBranch %376
+        %376 = OpLabel
+        %408 = OpLoad %int %d
+        %409 = OpSGreaterThanEqual %bool %408 %int_0
+               OpStore %x_360_phi %409
+               OpSelectionMerge %410 None
+               OpBranchConditional %409 %411 %410
+        %411 = OpLabel
+        %412 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %413 = OpLoad %int %412
+        %414 = OpSLessThan %bool %413 %int_14
+               OpStore %x_359 %414
+        %415 = OpLoad %bool %x_359
+               OpStore %x_360_phi %415
+               OpBranch %410
+        %410 = OpLabel
+        %416 = OpLoad %bool %x_360_phi
+               OpStore %x_373_phi %416
+               OpSelectionMerge %417 None
+               OpBranchConditional %416 %418 %417
+        %418 = OpLabel
+        %419 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %420 = OpLoad %int %419
+        %421 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %422 = OpLoad %int %421
+        %423 = OpIAdd %int %420 %int_2
+        %424 = OpIMul %int %422 %int_16
+        %425 = OpIAdd %int %423 %424
+        %426 = OpAccessChain %_ptr_Private_int %map %425
+        %427 = OpLoad %int %426
+        %428 = OpIEqual %bool %427 %int_0
+               OpStore %x_372 %428
+        %429 = OpLoad %bool %x_372
+               OpStore %x_373_phi %429
+               OpBranch %417
+        %417 = OpLabel
+        %430 = OpLoad %bool %x_373_phi
+               OpSelectionMerge %431 None
+               OpBranchConditional %430 %432 %431
+        %432 = OpLabel
+        %433 = OpLoad %int %d
+        %434 = OpISub %int %433 %int_1
+               OpStore %d %434
+        %435 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %436 = OpLoad %int %435
+        %437 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %438 = OpLoad %int %437
+        %439 = OpIMul %int %438 %int_16
+        %440 = OpIAdd %int %436 %439
+        %441 = OpAccessChain %_ptr_Private_int %map %440
+               OpStore %441 %int_1
+        %442 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %443 = OpLoad %int %442
+        %444 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %445 = OpLoad %int %444
+        %446 = OpIAdd %int %443 %int_1
+        %447 = OpIMul %int %445 %int_16
+        %448 = OpIAdd %int %446 %447
+        %449 = OpAccessChain %_ptr_Private_int %map %448
+               OpStore %449 %int_1
+        %450 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %451 = OpLoad %int %450
+        %452 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %453 = OpLoad %int %452
+        %454 = OpIAdd %int %451 %int_2
+        %455 = OpIMul %int %453 %int_16
+        %456 = OpIAdd %int %454 %455
+        %457 = OpAccessChain %_ptr_Private_int %map %456
+               OpStore %457 %int_1
+        %458 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %459 = OpLoad %int %458
+        %460 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %461 = OpIAdd %int %459 %int_2
+               OpStore %460 %461
+               OpBranch %431
+        %431 = OpLabel
+        %462 = OpLoad %int %d
+        %463 = OpSGreaterThanEqual %bool %462 %int_0
+               OpStore %x_412_phi %463
+               OpSelectionMerge %464 None
+               OpBranchConditional %463 %465 %464
+        %465 = OpLabel
+        %466 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %467 = OpLoad %int %466
+        %468 = OpSLessThan %bool %467 %int_14
+               OpStore %x_411 %468
+        %469 = OpLoad %bool %x_411
+               OpStore %x_412_phi %469
+               OpBranch %464
+        %464 = OpLabel
+        %470 = OpLoad %bool %x_412_phi
+               OpStore %x_425_phi %470
+               OpSelectionMerge %471 None
+               OpBranchConditional %470 %472 %471
+        %472 = OpLabel
+        %473 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %474 = OpLoad %int %473
+        %475 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %476 = OpLoad %int %475
+        %477 = OpIAdd %int %476 %int_2
+        %478 = OpIMul %int %477 %int_16
+        %479 = OpIAdd %int %474 %478
+        %480 = OpAccessChain %_ptr_Private_int %map %479
+        %481 = OpLoad %int %480
+        %482 = OpIEqual %bool %481 %int_0
+               OpStore %x_424 %482
+        %483 = OpLoad %bool %x_424
+               OpStore %x_425_phi %483
+               OpBranch %471
+        %471 = OpLabel
+        %484 = OpLoad %bool %x_425_phi
+               OpSelectionMerge %485 None
+               OpBranchConditional %484 %486 %485
+        %486 = OpLabel
+        %487 = OpLoad %int %d
+        %488 = OpISub %int %487 %int_1
+               OpStore %d %488
+        %489 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %490 = OpLoad %int %489
+        %491 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %492 = OpLoad %int %491
+        %493 = OpIMul %int %492 %int_16
+        %494 = OpIAdd %int %490 %493
+        %495 = OpAccessChain %_ptr_Private_int %map %494
+               OpStore %495 %int_1
+        %496 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %497 = OpLoad %int %496
+        %498 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %499 = OpLoad %int %498
+        %500 = OpIAdd %int %499 %int_1
+        %501 = OpIMul %int %500 %int_16
+        %502 = OpIAdd %int %497 %501
+        %503 = OpAccessChain %_ptr_Private_int %map %502
+               OpStore %503 %int_1
+        %504 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %505 = OpLoad %int %504
+        %506 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %507 = OpLoad %int %506
+        %508 = OpIAdd %int %507 %int_2
+        %509 = OpIMul %int %508 %int_16
+        %510 = OpIAdd %int %505 %509
+        %511 = OpAccessChain %_ptr_Private_int %map %510
+               OpStore %511 %int_1
+        %512 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %513 = OpLoad %int %512
+        %514 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %515 = OpIAdd %int %513 %int_2
+               OpStore %514 %515
+               OpBranch %485
+        %485 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %516 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %517 = OpLoad %int %516
+        %518 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %519 = OpLoad %int %518
+        %520 = OpIMul %int %517 %int_16
+        %521 = OpIAdd %int %520 %519
+        %522 = OpAccessChain %_ptr_Private_int %map %521
+        %523 = OpLoad %int %522
+        %524 = OpIEqual %bool %523 %int_1
+               OpSelectionMerge %525 None
+               OpBranchConditional %524 %526 %525
+        %526 = OpLabel
+               OpStore %x_GLF_color %528
+               OpReturn
+        %525 = OpLabel
+               OpBranch %87
+         %87 = OpLabel
+        %529 = OpLoad %bool %canwalk
+               OpSelectionMerge %530 None
+               OpBranchConditional %529 %531 %532
+        %531 = OpLabel
+               OpBranch %530
+        %532 = OpLabel
+               OpBranch %86
+        %530 = OpLabel
+               OpBranch %85
+         %86 = OpLabel
+               OpStore %x_GLF_color %534
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %535
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %539 = OpLabel
+        %540 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %540
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %542 = OpLabel
+        %543 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %543
+        %544 = OpFunctionCall %void %main_1
+        %546 = OpLoad %v4float %x_GLF_color
+        %547 = OpCompositeConstruct %main_out %546
+        %545 = OpFunctionCall %void %tint_symbol_3 %547
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 87[%87] is not post dominated by the back-edge block 530[%530]
+  %530 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..7636426
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.wgsl
@@ -0,0 +1,392 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_59 : vec4<f32> = gl_FragCoord;
+  let x_62 : vec2<f32> = x_7.resolution;
+  pos = (vec2<f32>(x_59.x, x_59.y) / x_62);
+  let x_65 : f32 = pos.x;
+  let x_69 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_65 * 16.0)), i32((x_69 * 16.0)));
+  i = 0;
+  loop {
+    let x_77 : i32 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = i;
+    map[x_80] = 0;
+
+    continuing {
+      let x_82 : i32 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_104 : bool;
+    var x_124 : bool;
+    var x_144 : bool;
+    var x_164 : bool;
+    var x_105_phi : bool;
+    var x_125_phi : bool;
+    var x_145_phi : bool;
+    var x_165_phi : bool;
+    let x_88 : i32 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    let x_91 : i32 = p.x;
+    let x_92 : bool = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      let x_96 : i32 = p.x;
+      let x_99 : i32 = p.y;
+      let x_103 : i32 = map[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    let x_105 : bool = x_105_phi;
+    if (x_105) {
+      let x_108 : i32 = directions;
+      directions = (x_108 + 1);
+    }
+    let x_111 : i32 = p.y;
+    let x_112 : bool = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      let x_116 : i32 = p.x;
+      let x_118 : i32 = p.y;
+      let x_123 : i32 = map[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    let x_125 : bool = x_125_phi;
+    if (x_125) {
+      let x_128 : i32 = directions;
+      directions = (x_128 + 1);
+    }
+    let x_131 : i32 = p.x;
+    let x_132 : bool = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      let x_136 : i32 = p.x;
+      let x_139 : i32 = p.y;
+      let x_143 : i32 = map[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    let x_145 : bool = x_145_phi;
+    if (x_145) {
+      let x_148 : i32 = directions;
+      directions = (x_148 + 1);
+    }
+    let x_151 : i32 = p.y;
+    let x_152 : bool = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      let x_156 : i32 = p.x;
+      let x_158 : i32 = p.y;
+      let x_163 : i32 = map[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    let x_165 : bool = x_165_phi;
+    if (x_165) {
+      let x_168 : i32 = directions;
+      directions = (x_168 + 1);
+    }
+    var x_229 : bool;
+    var x_242 : bool;
+    var x_281 : bool;
+    var x_288 : i32;
+    var x_289 : i32;
+    var x_295 : i32;
+    var x_296 : i32;
+    var x_303 : array<i32, 256>;
+    var x_304 : array<i32, 256>;
+    var x_315 : i32;
+    var x_316 : i32;
+    var x_359 : bool;
+    var x_372 : bool;
+    var x_411 : bool;
+    var x_424 : bool;
+    var x_230_phi : bool;
+    var x_243_phi : bool;
+    var x_282_phi : bool;
+    var x_290_phi : i32;
+    var x_297_phi : i32;
+    var x_305_phi : array<i32, 256>;
+    var x_317_phi : i32;
+    var x_360_phi : bool;
+    var x_373_phi : bool;
+    var x_412_phi : bool;
+    var x_425_phi : bool;
+    let x_170 : i32 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_179 : i32 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        loop {
+          let x_186 : i32 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          let x_189 : i32 = j;
+          let x_191 : i32 = i;
+          let x_196 : i32 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            let x_200 : i32 = j;
+            p.x = (x_200 * 2);
+            let x_203 : i32 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_206 : i32 = j;
+            j = (x_206 + 1);
+          }
+        }
+
+        continuing {
+          let x_208 : i32 = i;
+          i = (x_208 + 1);
+        }
+      }
+      let x_211 : i32 = p.x;
+      let x_213 : i32 = p.y;
+      map[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      let x_217 : i32 = v;
+      let x_218 : i32 = directions;
+      d = (x_217 % x_218);
+      let x_220 : i32 = directions;
+      let x_221 : i32 = v;
+      v = (x_221 + x_220);
+      let x_223 : i32 = d;
+      let x_224 : bool = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        let x_228 : i32 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      let x_230 : bool = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        let x_234 : i32 = p.x;
+        let x_237 : i32 = p.y;
+        let x_241 : i32 = map[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      let x_243 : bool = x_243_phi;
+      if (x_243) {
+        let x_246 : i32 = d;
+        d = (x_246 - 1);
+        let x_249 : i32 = p.x;
+        let x_251 : i32 = p.y;
+        map[(x_249 + (x_251 * 16))] = 1;
+        let x_256 : i32 = p.x;
+        let x_259 : i32 = p.y;
+        map[((x_256 - 1) + (x_259 * 16))] = 1;
+        let x_264 : i32 = p.x;
+        let x_267 : i32 = p.y;
+        map[((x_264 - 2) + (x_267 * 16))] = 1;
+        let x_272 : i32 = p.x;
+        p.x = (x_272 - 2);
+      }
+      let x_275 : i32 = d;
+      let x_276 : bool = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        let x_280 : i32 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      let x_282 : bool = x_282_phi;
+      if (x_282) {
+        x_288 = p.x;
+        x_290_phi = x_288;
+      } else {
+        x_289 = 0;
+        x_290_phi = x_289;
+      }
+      let x_290 : i32 = x_290_phi;
+      if (x_282) {
+        x_295 = p.y;
+        x_297_phi = x_295;
+      } else {
+        x_296 = 0;
+        x_297_phi = x_296;
+      }
+      let x_297 : i32 = x_297_phi;
+      let x_299 : i32 = ((x_297 - 2) * 16);
+      if (x_282) {
+        x_303 = map;
+        x_305_phi = x_303;
+      } else {
+        x_304 = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        x_305_phi = x_304;
+      }
+      let x_305 : array<i32, 256> = x_305_phi;
+      if (x_282) {
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+      }
+      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;
+      }
+      let x_317 : i32 = x_317_phi;
+      let x_318 : bool = (x_317 == 0);
+      if (select(x_282, x_318, x_282)) {
+        let x_323 : i32 = d;
+        d = (x_323 - 1);
+        let x_326 : i32 = p.x;
+        let x_328 : i32 = p.y;
+        map[(x_326 + (x_328 * 16))] = 1;
+        let x_333 : i32 = p.x;
+        let x_335 : i32 = p.y;
+        map[(x_333 + ((x_335 - 1) * 16))] = 1;
+        let x_341 : i32 = p.x;
+        let x_343 : i32 = p.y;
+        let x_345 : array<i32, 256> = map;
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        map = x_345;
+        map[(x_341 + ((x_343 - 2) * 16))] = 1;
+        let x_350 : i32 = p.y;
+        p.y = (x_350 - 2);
+      }
+      let x_353 : i32 = d;
+      let x_354 : bool = (x_353 >= 0);
+      x_360_phi = x_354;
+      if (x_354) {
+        let x_358 : i32 = p.x;
+        x_359 = (x_358 < 14);
+        x_360_phi = x_359;
+      }
+      let x_360 : bool = x_360_phi;
+      x_373_phi = x_360;
+      if (x_360) {
+        let x_364 : i32 = p.x;
+        let x_367 : i32 = p.y;
+        let x_371 : i32 = map[((x_364 + 2) + (x_367 * 16))];
+        x_372 = (x_371 == 0);
+        x_373_phi = x_372;
+      }
+      let x_373 : bool = x_373_phi;
+      if (x_373) {
+        let x_376 : i32 = d;
+        d = (x_376 - 1);
+        let x_379 : i32 = p.x;
+        let x_381 : i32 = p.y;
+        map[(x_379 + (x_381 * 16))] = 1;
+        let x_386 : i32 = p.x;
+        let x_389 : i32 = p.y;
+        map[((x_386 + 1) + (x_389 * 16))] = 1;
+        let x_394 : i32 = p.x;
+        let x_397 : i32 = p.y;
+        map[((x_394 + 2) + (x_397 * 16))] = 1;
+        let x_402 : i32 = p.x;
+        p.x = (x_402 + 2);
+      }
+      let x_405 : i32 = d;
+      let x_406 : bool = (x_405 >= 0);
+      x_412_phi = x_406;
+      if (x_406) {
+        let x_410 : i32 = p.y;
+        x_411 = (x_410 < 14);
+        x_412_phi = x_411;
+      }
+      let x_412 : bool = x_412_phi;
+      x_425_phi = x_412;
+      if (x_412) {
+        let x_416 : i32 = p.x;
+        let x_418 : i32 = p.y;
+        let x_423 : i32 = map[(x_416 + ((x_418 + 2) * 16))];
+        x_424 = (x_423 == 0);
+        x_425_phi = x_424;
+      }
+      let x_425 : bool = x_425_phi;
+      if (x_425) {
+        let x_428 : i32 = d;
+        d = (x_428 - 1);
+        let x_431 : i32 = p.x;
+        let x_433 : i32 = p.y;
+        map[(x_431 + (x_433 * 16))] = 1;
+        let x_438 : i32 = p.x;
+        let x_440 : i32 = p.y;
+        map[(x_438 + ((x_440 + 1) * 16))] = 1;
+        let x_446 : i32 = p.x;
+        let x_448 : i32 = p.y;
+        map[(x_446 + ((x_448 + 2) * 16))] = 1;
+        let x_454 : i32 = p.y;
+        p.y = (x_454 + 2);
+      }
+    }
+    let x_458 : i32 = ipos.y;
+    let x_461 : i32 = ipos.x;
+    let x_464 : i32 = map[((x_458 * 16) + x_461)];
+    if ((x_464 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_468 : bool = canwalk;
+      if (x_468) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm
new file mode 100644
index 0000000..189e3fb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm
@@ -0,0 +1,617 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %pos "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %map "map"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+   %float_16 = OpConstant %float 16
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %43 = OpConstantComposite %v2int %int_0 %int_0
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %53 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %int_0_0 = OpConstant %int 0
+         %57 = OpConstantComposite %_arr_int_uint_256 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0
+       %main = OpFunction %void None %18
+         %58 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function
+       %ipos = OpVariable %_ptr_Function_v2int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %p = OpVariable %_ptr_Function_v2int Function
+    %canwalk = OpVariable %_ptr_Function_bool Function
+          %v = OpVariable %_ptr_Function_int Function
+ %directions = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+          %d = OpVariable %_ptr_Function_int Function
+         %59 = OpLoad %v4float %gl_FragCoord
+         %60 = OpVectorShuffle %v2float %59 %59 0 1
+         %61 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %62 = OpLoad %v2float %61
+         %63 = OpFDiv %v2float %60 %62
+               OpStore %pos %63
+         %64 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %65 = OpLoad %float %64
+         %66 = OpFMul %float %65 %float_16
+         %67 = OpConvertFToS %int %66
+         %68 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %69 = OpLoad %float %68
+         %70 = OpFMul %float %69 %float_16
+         %71 = OpConvertFToS %int %70
+         %72 = OpCompositeConstruct %v2int %67 %71
+               OpStore %ipos %72
+               OpStore %i %int_0
+               OpBranch %73
+         %73 = OpLabel
+               OpLoopMerge %74 %75 None
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpLoad %int %i
+         %78 = OpSLessThan %bool %77 %int_256
+               OpBranchConditional %78 %79 %74
+         %79 = OpLabel
+         %80 = OpLoad %int %i
+         %81 = OpAccessChain %_ptr_Private_int %map %80
+               OpStore %81 %int_0
+               OpBranch %75
+         %75 = OpLabel
+         %82 = OpLoad %int %i
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %i %83
+               OpBranch %73
+         %74 = OpLabel
+               OpStore %p %43
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %84
+         %84 = OpLabel
+               OpLoopMerge %85 %86 None
+               OpBranch %87
+         %87 = OpLabel
+         %88 = OpLoad %int %v
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %v %89
+               OpStore %directions %int_0
+         %90 = OpAccessChain %_ptr_Function_int %p %uint_0
+         %91 = OpLoad %int %90
+         %92 = OpSGreaterThan %bool %91 %int_0
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+         %95 = OpAccessChain %_ptr_Function_int %p %uint_0
+         %96 = OpLoad %int %95
+         %97 = OpISub %int %96 %int_2
+         %98 = OpAccessChain %_ptr_Function_int %p %uint_1
+         %99 = OpLoad %int %98
+        %100 = OpIMul %int %99 %int_16
+        %101 = OpIAdd %int %97 %100
+        %102 = OpAccessChain %_ptr_Private_int %map %101
+        %103 = OpLoad %int %102
+        %104 = OpIEqual %bool %103 %int_0
+               OpBranch %93
+         %93 = OpLabel
+        %105 = OpPhi %bool %92 %87 %104 %94
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+        %108 = OpLoad %int %directions
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %directions %109
+               OpBranch %106
+        %106 = OpLabel
+        %110 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %111 = OpLoad %int %110
+        %112 = OpSGreaterThan %bool %111 %int_0
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+        %115 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %116 = OpLoad %int %115
+        %117 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %118 = OpLoad %int %117
+        %119 = OpISub %int %118 %int_2
+        %120 = OpIMul %int %119 %int_16
+        %121 = OpIAdd %int %116 %120
+        %122 = OpAccessChain %_ptr_Private_int %map %121
+        %123 = OpLoad %int %122
+        %124 = OpIEqual %bool %123 %int_0
+               OpBranch %113
+        %113 = OpLabel
+        %125 = OpPhi %bool %112 %106 %124 %114
+               OpSelectionMerge %126 None
+               OpBranchConditional %125 %127 %126
+        %127 = OpLabel
+        %128 = OpLoad %int %directions
+        %129 = OpIAdd %int %128 %int_1
+               OpStore %directions %129
+               OpBranch %126
+        %126 = OpLabel
+        %130 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %131 = OpLoad %int %130
+        %132 = OpSLessThan %bool %131 %int_14
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %133
+        %134 = OpLabel
+        %135 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %136 = OpLoad %int %135
+        %137 = OpIAdd %int %136 %int_2
+        %138 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %139 = OpLoad %int %138
+        %140 = OpIMul %int %139 %int_16
+        %141 = OpIAdd %int %137 %140
+        %142 = OpAccessChain %_ptr_Private_int %map %141
+        %143 = OpLoad %int %142
+        %144 = OpIEqual %bool %143 %int_0
+               OpBranch %133
+        %133 = OpLabel
+        %145 = OpPhi %bool %132 %126 %144 %134
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpLoad %int %directions
+        %149 = OpIAdd %int %148 %int_1
+               OpStore %directions %149
+               OpBranch %146
+        %146 = OpLabel
+        %150 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %151 = OpLoad %int %150
+        %152 = OpSLessThan %bool %151 %int_14
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+        %155 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %156 = OpLoad %int %155
+        %157 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %158 = OpLoad %int %157
+        %159 = OpIAdd %int %158 %int_2
+        %160 = OpIMul %int %159 %int_16
+        %161 = OpIAdd %int %156 %160
+        %162 = OpAccessChain %_ptr_Private_int %map %161
+        %163 = OpLoad %int %162
+        %164 = OpIEqual %bool %163 %int_0
+               OpBranch %153
+        %153 = OpLabel
+        %165 = OpPhi %bool %152 %146 %164 %154
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %166
+        %167 = OpLabel
+        %168 = OpLoad %int %directions
+        %169 = OpIAdd %int %168 %int_1
+               OpStore %directions %169
+               OpBranch %166
+        %166 = OpLabel
+        %170 = OpLoad %int %directions
+        %171 = OpIEqual %bool %170 %int_0
+               OpSelectionMerge %172 None
+               OpBranchConditional %171 %173 %174
+        %173 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %175
+        %175 = OpLabel
+               OpLoopMerge %176 %177 None
+               OpBranch %178
+        %178 = OpLabel
+        %179 = OpLoad %int %i
+        %180 = OpSLessThan %bool %179 %int_8
+               OpBranchConditional %180 %181 %176
+        %181 = OpLabel
+               OpStore %j %int_0
+               OpBranch %182
+        %182 = OpLabel
+               OpLoopMerge %183 %184 None
+               OpBranch %185
+        %185 = OpLabel
+        %186 = OpLoad %int %j
+        %187 = OpSLessThan %bool %186 %int_8
+               OpBranchConditional %187 %188 %183
+        %188 = OpLabel
+        %189 = OpLoad %int %j
+        %190 = OpIMul %int %189 %int_2
+        %191 = OpLoad %int %i
+        %192 = OpIMul %int %191 %int_2
+        %193 = OpIMul %int %192 %int_16
+        %194 = OpIAdd %int %190 %193
+        %195 = OpAccessChain %_ptr_Private_int %map %194
+        %196 = OpLoad %int %195
+        %197 = OpIEqual %bool %196 %int_0
+               OpSelectionMerge %198 None
+               OpBranchConditional %197 %199 %198
+        %199 = OpLabel
+        %200 = OpLoad %int %j
+        %201 = OpIMul %int %200 %int_2
+        %202 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %202 %201
+        %203 = OpLoad %int %i
+        %204 = OpIMul %int %203 %int_2
+        %205 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %205 %204
+               OpStore %canwalk %true
+               OpBranch %198
+        %198 = OpLabel
+               OpBranch %184
+        %184 = OpLabel
+        %206 = OpLoad %int %j
+        %207 = OpIAdd %int %206 %int_1
+               OpStore %j %207
+               OpBranch %182
+        %183 = OpLabel
+               OpBranch %177
+        %177 = OpLabel
+        %208 = OpLoad %int %i
+        %209 = OpIAdd %int %208 %int_1
+               OpStore %i %209
+               OpBranch %175
+        %176 = OpLabel
+        %210 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %211 = OpLoad %int %210
+        %212 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %213 = OpLoad %int %212
+        %214 = OpIMul %int %213 %int_16
+        %215 = OpIAdd %int %211 %214
+        %216 = OpAccessChain %_ptr_Private_int %map %215
+               OpStore %216 %int_1
+               OpBranch %172
+        %174 = OpLabel
+        %217 = OpLoad %int %v
+        %218 = OpLoad %int %directions
+        %219 = OpSMod %int %217 %218
+               OpStore %d %219
+        %220 = OpLoad %int %directions
+        %221 = OpLoad %int %v
+        %222 = OpIAdd %int %221 %220
+               OpStore %v %222
+        %223 = OpLoad %int %d
+        %224 = OpSGreaterThanEqual %bool %223 %int_0
+               OpSelectionMerge %225 None
+               OpBranchConditional %224 %226 %225
+        %226 = OpLabel
+        %227 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %228 = OpLoad %int %227
+        %229 = OpSGreaterThan %bool %228 %int_0
+               OpBranch %225
+        %225 = OpLabel
+        %230 = OpPhi %bool %224 %174 %229 %226
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %231
+        %232 = OpLabel
+        %233 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %234 = OpLoad %int %233
+        %235 = OpISub %int %234 %int_2
+        %236 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %237 = OpLoad %int %236
+        %238 = OpIMul %int %237 %int_16
+        %239 = OpIAdd %int %235 %238
+        %240 = OpAccessChain %_ptr_Private_int %map %239
+        %241 = OpLoad %int %240
+        %242 = OpIEqual %bool %241 %int_0
+               OpBranch %231
+        %231 = OpLabel
+        %243 = OpPhi %bool %230 %225 %242 %232
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+        %246 = OpLoad %int %d
+        %247 = OpISub %int %246 %int_1
+               OpStore %d %247
+        %248 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %249 = OpLoad %int %248
+        %250 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %251 = OpLoad %int %250
+        %252 = OpIMul %int %251 %int_16
+        %253 = OpIAdd %int %249 %252
+        %254 = OpAccessChain %_ptr_Private_int %map %253
+               OpStore %254 %int_1
+        %255 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %256 = OpLoad %int %255
+        %257 = OpISub %int %256 %int_1
+        %258 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %259 = OpLoad %int %258
+        %260 = OpIMul %int %259 %int_16
+        %261 = OpIAdd %int %257 %260
+        %262 = OpAccessChain %_ptr_Private_int %map %261
+               OpStore %262 %int_1
+        %263 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %264 = OpLoad %int %263
+        %265 = OpISub %int %264 %int_2
+        %266 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %267 = OpLoad %int %266
+        %268 = OpIMul %int %267 %int_16
+        %269 = OpIAdd %int %265 %268
+        %270 = OpAccessChain %_ptr_Private_int %map %269
+               OpStore %270 %int_1
+        %271 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %272 = OpLoad %int %271
+        %273 = OpISub %int %272 %int_2
+        %274 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %274 %273
+               OpBranch %244
+        %244 = OpLabel
+        %275 = OpLoad %int %d
+        %276 = OpSGreaterThanEqual %bool %275 %int_0
+               OpSelectionMerge %277 None
+               OpBranchConditional %276 %278 %277
+        %278 = OpLabel
+        %279 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %280 = OpLoad %int %279
+        %281 = OpSGreaterThan %bool %280 %int_0
+               OpBranch %277
+        %277 = OpLabel
+        %282 = OpPhi %bool %276 %244 %281 %278
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %283
+        %284 = OpLabel
+        %285 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %286 = OpLoad %int %285
+        %287 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %288 = OpLoad %int %287
+        %289 = OpISub %int %288 %int_2
+        %290 = OpIMul %int %289 %int_16
+        %291 = OpLoad %_arr_int_uint_256 %map
+               OpStore %map %57
+               OpStore %map %291
+        %292 = OpIAdd %int %286 %290
+        %293 = OpAccessChain %_ptr_Private_int %map %292
+        %294 = OpLoad %int %293
+        %295 = OpIEqual %bool %294 %int_0
+               OpBranch %283
+        %283 = OpLabel
+        %296 = OpPhi %bool %282 %277 %295 %284
+               OpSelectionMerge %297 None
+               OpBranchConditional %296 %298 %297
+        %298 = OpLabel
+        %299 = OpLoad %int %d
+        %300 = OpISub %int %299 %int_1
+               OpStore %d %300
+        %301 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %302 = OpLoad %int %301
+        %303 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %304 = OpLoad %int %303
+        %305 = OpIMul %int %304 %int_16
+        %306 = OpIAdd %int %302 %305
+        %307 = OpAccessChain %_ptr_Private_int %map %306
+               OpStore %307 %int_1
+        %308 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %309 = OpLoad %int %308
+        %310 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %311 = OpLoad %int %310
+        %312 = OpISub %int %311 %int_1
+        %313 = OpIMul %int %312 %int_16
+        %314 = OpIAdd %int %309 %313
+        %315 = OpAccessChain %_ptr_Private_int %map %314
+               OpStore %315 %int_1
+        %316 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %317 = OpLoad %int %316
+        %318 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %319 = OpLoad %int %318
+        %320 = OpISub %int %319 %int_2
+        %321 = OpLoad %_arr_int_uint_256 %map
+               OpStore %map %57
+               OpStore %map %321
+        %322 = OpIMul %int %320 %int_16
+        %323 = OpIAdd %int %317 %322
+        %324 = OpAccessChain %_ptr_Private_int %map %323
+               OpStore %324 %int_1
+        %325 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %326 = OpLoad %int %325
+        %327 = OpISub %int %326 %int_2
+        %328 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %328 %327
+               OpBranch %297
+        %297 = OpLabel
+        %329 = OpLoad %int %d
+        %330 = OpSGreaterThanEqual %bool %329 %int_0
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %331
+        %332 = OpLabel
+        %333 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %334 = OpLoad %int %333
+        %335 = OpSLessThan %bool %334 %int_14
+               OpBranch %331
+        %331 = OpLabel
+        %336 = OpPhi %bool %330 %297 %335 %332
+               OpSelectionMerge %337 None
+               OpBranchConditional %336 %338 %337
+        %338 = OpLabel
+        %339 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %340 = OpLoad %int %339
+        %341 = OpIAdd %int %340 %int_2
+        %342 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %343 = OpLoad %int %342
+        %344 = OpIMul %int %343 %int_16
+        %345 = OpIAdd %int %341 %344
+        %346 = OpAccessChain %_ptr_Private_int %map %345
+        %347 = OpLoad %int %346
+        %348 = OpIEqual %bool %347 %int_0
+               OpBranch %337
+        %337 = OpLabel
+        %349 = OpPhi %bool %336 %331 %348 %338
+               OpSelectionMerge %350 None
+               OpBranchConditional %349 %351 %350
+        %351 = OpLabel
+        %352 = OpLoad %int %d
+        %353 = OpISub %int %352 %int_1
+               OpStore %d %353
+        %354 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %355 = OpLoad %int %354
+        %356 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %357 = OpLoad %int %356
+        %358 = OpIMul %int %357 %int_16
+        %359 = OpIAdd %int %355 %358
+        %360 = OpAccessChain %_ptr_Private_int %map %359
+               OpStore %360 %int_1
+        %361 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %362 = OpLoad %int %361
+        %363 = OpIAdd %int %362 %int_1
+        %364 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %365 = OpLoad %int %364
+        %366 = OpIMul %int %365 %int_16
+        %367 = OpIAdd %int %363 %366
+        %368 = OpAccessChain %_ptr_Private_int %map %367
+               OpStore %368 %int_1
+        %369 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %370 = OpLoad %int %369
+        %371 = OpIAdd %int %370 %int_2
+        %372 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %373 = OpLoad %int %372
+        %374 = OpIMul %int %373 %int_16
+        %375 = OpIAdd %int %371 %374
+        %376 = OpAccessChain %_ptr_Private_int %map %375
+               OpStore %376 %int_1
+        %377 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %378 = OpLoad %int %377
+        %379 = OpIAdd %int %378 %int_2
+        %380 = OpAccessChain %_ptr_Function_int %p %uint_0
+               OpStore %380 %379
+               OpBranch %350
+        %350 = OpLabel
+        %381 = OpLoad %int %d
+        %382 = OpSGreaterThanEqual %bool %381 %int_0
+               OpSelectionMerge %383 None
+               OpBranchConditional %382 %384 %383
+        %384 = OpLabel
+        %385 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %386 = OpLoad %int %385
+        %387 = OpSLessThan %bool %386 %int_14
+               OpBranch %383
+        %383 = OpLabel
+        %388 = OpPhi %bool %382 %350 %387 %384
+               OpSelectionMerge %389 None
+               OpBranchConditional %388 %390 %389
+        %390 = OpLabel
+        %391 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %392 = OpLoad %int %391
+        %393 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %394 = OpLoad %int %393
+        %395 = OpIAdd %int %394 %int_2
+        %396 = OpIMul %int %395 %int_16
+        %397 = OpIAdd %int %392 %396
+        %398 = OpAccessChain %_ptr_Private_int %map %397
+        %399 = OpLoad %int %398
+        %400 = OpIEqual %bool %399 %int_0
+               OpBranch %389
+        %389 = OpLabel
+        %401 = OpPhi %bool %388 %383 %400 %390
+               OpSelectionMerge %402 None
+               OpBranchConditional %401 %403 %402
+        %403 = OpLabel
+        %404 = OpLoad %int %d
+        %405 = OpISub %int %404 %int_1
+               OpStore %d %405
+        %406 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %407 = OpLoad %int %406
+        %408 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %409 = OpLoad %int %408
+        %410 = OpIMul %int %409 %int_16
+        %411 = OpIAdd %int %407 %410
+        %412 = OpAccessChain %_ptr_Private_int %map %411
+               OpStore %412 %int_1
+        %413 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %414 = OpLoad %int %413
+        %415 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %416 = OpLoad %int %415
+        %417 = OpIAdd %int %416 %int_1
+        %418 = OpIMul %int %417 %int_16
+        %419 = OpIAdd %int %414 %418
+        %420 = OpAccessChain %_ptr_Private_int %map %419
+               OpStore %420 %int_1
+        %421 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %422 = OpLoad %int %421
+        %423 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %424 = OpLoad %int %423
+        %425 = OpIAdd %int %424 %int_2
+        %426 = OpIMul %int %425 %int_16
+        %427 = OpIAdd %int %422 %426
+        %428 = OpAccessChain %_ptr_Private_int %map %427
+               OpStore %428 %int_1
+        %429 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %430 = OpLoad %int %429
+        %431 = OpIAdd %int %430 %int_2
+        %432 = OpAccessChain %_ptr_Function_int %p %uint_1
+               OpStore %432 %431
+               OpBranch %402
+        %402 = OpLabel
+               OpBranch %172
+        %172 = OpLabel
+        %433 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %434 = OpLoad %int %433
+        %435 = OpIMul %int %434 %int_16
+        %436 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %437 = OpLoad %int %436
+        %438 = OpIAdd %int %435 %437
+        %439 = OpAccessChain %_ptr_Private_int %map %438
+        %440 = OpLoad %int %439
+        %441 = OpIEqual %bool %440 %int_1
+               OpSelectionMerge %442 None
+               OpBranchConditional %441 %443 %442
+        %443 = OpLabel
+               OpStore %_GLF_color %53
+               OpReturn
+        %442 = OpLabel
+               OpBranch %86
+         %86 = OpLabel
+        %444 = OpLoad %bool %canwalk
+               OpBranchConditional %444 %84 %85
+         %85 = OpLabel
+               OpStore %_GLF_color %55
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.hlsl
new file mode 100644
index 0000000..cfe3abd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.hlsl
@@ -0,0 +1,300 @@
+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;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  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;
+    bool x_295 = false;
+    bool x_335 = false;
+    bool x_348 = false;
+    bool x_387 = false;
+    bool x_400 = false;
+    bool x_230_phi = false;
+    bool x_243_phi = false;
+    bool x_282_phi = false;
+    bool x_296_phi = false;
+    bool x_336_phi = false;
+    bool x_349_phi = false;
+    bool x_388_phi = false;
+    bool x_401_phi = false;
+    if ((directions == 0)) {
+      canwalk = false;
+      i = 0;
+      {
+        for(; (i < 8); i = (i + 1)) {
+          j = 0;
+          {
+            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);
+      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;
+      x_296_phi = x_282;
+      if (x_282) {
+        const int x_286 = p.x;
+        const int x_288 = p.y;
+        const int x_291[256] = map;
+        const int tint_symbol_5[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        map = tint_symbol_5;
+        map = x_291;
+        const int x_294 = map[(x_286 + ((x_288 - 2) * 16))];
+        x_295 = (x_294 == 0);
+        x_296_phi = x_295;
+      }
+      if (x_296_phi) {
+        d = (d - 1);
+        const int x_302 = p.x;
+        const int x_304 = p.y;
+        map[(x_302 + (x_304 * 16))] = 1;
+        const int x_309 = p.x;
+        const int x_311 = p.y;
+        map[(x_309 + ((x_311 - 1) * 16))] = 1;
+        const int x_317 = p.x;
+        const int x_319 = p.y;
+        const int x_321[256] = map;
+        const int tint_symbol_6[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        map = tint_symbol_6;
+        map = x_321;
+        map[(x_317 + ((x_319 - 2) * 16))] = 1;
+        const int x_326 = p.y;
+        p.y = (x_326 - 2);
+      }
+      const bool x_330 = (d >= 0);
+      x_336_phi = x_330;
+      if (x_330) {
+        const int x_334 = p.x;
+        x_335 = (x_334 < 14);
+        x_336_phi = x_335;
+      }
+      const bool x_336 = x_336_phi;
+      x_349_phi = x_336;
+      if (x_336) {
+        const int x_340 = p.x;
+        const int x_343 = p.y;
+        const int x_347 = map[((x_340 + 2) + (x_343 * 16))];
+        x_348 = (x_347 == 0);
+        x_349_phi = x_348;
+      }
+      if (x_349_phi) {
+        d = (d - 1);
+        const int x_355 = p.x;
+        const int x_357 = p.y;
+        map[(x_355 + (x_357 * 16))] = 1;
+        const int x_362 = p.x;
+        const int x_365 = p.y;
+        map[((x_362 + 1) + (x_365 * 16))] = 1;
+        const int x_370 = p.x;
+        const int x_373 = p.y;
+        map[((x_370 + 2) + (x_373 * 16))] = 1;
+        const int x_378 = p.x;
+        p.x = (x_378 + 2);
+      }
+      const bool x_382 = (d >= 0);
+      x_388_phi = x_382;
+      if (x_382) {
+        const int x_386 = p.y;
+        x_387 = (x_386 < 14);
+        x_388_phi = x_387;
+      }
+      const bool x_388 = x_388_phi;
+      x_401_phi = x_388;
+      if (x_388) {
+        const int x_392 = p.x;
+        const int x_394 = p.y;
+        const int x_399 = map[(x_392 + ((x_394 + 2) * 16))];
+        x_400 = (x_399 == 0);
+        x_401_phi = x_400;
+      }
+      if (x_401_phi) {
+        d = (d - 1);
+        const int x_407 = p.x;
+        const int x_409 = p.y;
+        map[(x_407 + (x_409 * 16))] = 1;
+        const int x_414 = p.x;
+        const int x_416 = p.y;
+        map[(x_414 + ((x_416 + 1) * 16))] = 1;
+        const int x_422 = p.x;
+        const int x_424 = p.y;
+        map[(x_422 + ((x_424 + 2) * 16))] = 1;
+        const int x_430 = p.y;
+        p.y = (x_430 + 2);
+      }
+    }
+    const int x_434 = ipos.y;
+    const int x_437 = ipos.x;
+    const int x_440 = map[((x_434 * 16) + x_437)];
+    if ((x_440 == 1)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.msl
new file mode 100644
index 0000000..b60fe95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.msl
@@ -0,0 +1,355 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  float2 pos = 0.0f;
+  int2 ipos = 0;
+  int i = 0;
+  int2 p = 0;
+  bool canwalk = false;
+  int v = 0;
+  int directions = 0;
+  int j = 0;
+  int d = 0;
+  float4 const x_59 = *(tint_symbol_7);
+  float2 const x_62 = x_7.resolution;
+  pos = (float2(x_59.x, x_59.y) / x_62);
+  float const x_65 = pos.x;
+  float const x_69 = pos.y;
+  ipos = int2(int((x_65 * 16.0f)), int((x_69 * 16.0f)));
+  i = 0;
+  while (true) {
+    int const x_77 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    int const x_80 = i;
+    (*(tint_symbol_8)).arr[x_80] = 0;
+    {
+      int const x_82 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  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;
+    int const x_88 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    int const x_91 = p.x;
+    bool const x_92 = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      int const x_96 = p.x;
+      int const x_99 = p.y;
+      int const x_103 = (*(tint_symbol_8)).arr[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    bool const x_105 = x_105_phi;
+    if (x_105) {
+      int const x_108 = directions;
+      directions = (x_108 + 1);
+    }
+    int const x_111 = p.y;
+    bool const x_112 = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      int const x_116 = p.x;
+      int const x_118 = p.y;
+      int const x_123 = (*(tint_symbol_8)).arr[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    bool const x_125 = x_125_phi;
+    if (x_125) {
+      int const x_128 = directions;
+      directions = (x_128 + 1);
+    }
+    int const x_131 = p.x;
+    bool const x_132 = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      int const x_136 = p.x;
+      int const x_139 = p.y;
+      int const x_143 = (*(tint_symbol_8)).arr[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    bool const x_145 = x_145_phi;
+    if (x_145) {
+      int const x_148 = directions;
+      directions = (x_148 + 1);
+    }
+    int const x_151 = p.y;
+    bool const x_152 = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      int const x_156 = p.x;
+      int const x_158 = p.y;
+      int const x_163 = (*(tint_symbol_8)).arr[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    bool const x_165 = x_165_phi;
+    if (x_165) {
+      int const x_168 = directions;
+      directions = (x_168 + 1);
+    }
+    bool x_229 = false;
+    bool x_242 = false;
+    bool x_281 = false;
+    bool x_295 = false;
+    bool x_335 = false;
+    bool x_348 = false;
+    bool x_387 = false;
+    bool x_400 = false;
+    bool x_230_phi = false;
+    bool x_243_phi = false;
+    bool x_282_phi = false;
+    bool x_296_phi = false;
+    bool x_336_phi = false;
+    bool x_349_phi = false;
+    bool x_388_phi = false;
+    bool x_401_phi = false;
+    int const x_170 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        int const x_179 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        while (true) {
+          int const x_186 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          int const x_189 = j;
+          int const x_191 = i;
+          int const x_196 = (*(tint_symbol_8)).arr[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            int const x_200 = j;
+            p.x = (x_200 * 2);
+            int const x_203 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+          {
+            int const x_206 = j;
+            j = (x_206 + 1);
+          }
+        }
+        {
+          int const x_208 = i;
+          i = (x_208 + 1);
+        }
+      }
+      int const x_211 = p.x;
+      int const x_213 = p.y;
+      (*(tint_symbol_8)).arr[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      int const x_217 = v;
+      int const x_218 = directions;
+      d = (x_217 % x_218);
+      int const x_220 = directions;
+      int const x_221 = v;
+      v = (x_221 + x_220);
+      int const x_223 = d;
+      bool const x_224 = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        int const x_228 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      bool const x_230 = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        int const x_234 = p.x;
+        int const x_237 = p.y;
+        int const x_241 = (*(tint_symbol_8)).arr[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      bool const x_243 = x_243_phi;
+      if (x_243) {
+        int const x_246 = d;
+        d = (x_246 - 1);
+        int const x_249 = p.x;
+        int const x_251 = p.y;
+        (*(tint_symbol_8)).arr[(x_249 + (x_251 * 16))] = 1;
+        int const x_256 = p.x;
+        int const x_259 = p.y;
+        (*(tint_symbol_8)).arr[((x_256 - 1) + (x_259 * 16))] = 1;
+        int const x_264 = p.x;
+        int const x_267 = p.y;
+        (*(tint_symbol_8)).arr[((x_264 - 2) + (x_267 * 16))] = 1;
+        int const x_272 = p.x;
+        p.x = (x_272 - 2);
+      }
+      int const x_275 = d;
+      bool const x_276 = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        int const x_280 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      bool const x_282 = x_282_phi;
+      x_296_phi = x_282;
+      if (x_282) {
+        int const x_286 = p.x;
+        int const x_288 = p.y;
+        tint_array_wrapper const x_291 = *(tint_symbol_8);
+        tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        *(tint_symbol_8) = tint_symbol_4;
+        *(tint_symbol_8) = x_291;
+        int const x_294 = (*(tint_symbol_8)).arr[(x_286 + ((x_288 - 2) * 16))];
+        x_295 = (x_294 == 0);
+        x_296_phi = x_295;
+      }
+      bool const x_296 = x_296_phi;
+      if (x_296) {
+        int const x_299 = d;
+        d = (x_299 - 1);
+        int const x_302 = p.x;
+        int const x_304 = p.y;
+        (*(tint_symbol_8)).arr[(x_302 + (x_304 * 16))] = 1;
+        int const x_309 = p.x;
+        int const x_311 = p.y;
+        (*(tint_symbol_8)).arr[(x_309 + ((x_311 - 1) * 16))] = 1;
+        int const x_317 = p.x;
+        int const x_319 = p.y;
+        tint_array_wrapper const x_321 = *(tint_symbol_8);
+        tint_array_wrapper const tint_symbol_5 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        *(tint_symbol_8) = tint_symbol_5;
+        *(tint_symbol_8) = x_321;
+        (*(tint_symbol_8)).arr[(x_317 + ((x_319 - 2) * 16))] = 1;
+        int const x_326 = p.y;
+        p.y = (x_326 - 2);
+      }
+      int const x_329 = d;
+      bool const x_330 = (x_329 >= 0);
+      x_336_phi = x_330;
+      if (x_330) {
+        int const x_334 = p.x;
+        x_335 = (x_334 < 14);
+        x_336_phi = x_335;
+      }
+      bool const x_336 = x_336_phi;
+      x_349_phi = x_336;
+      if (x_336) {
+        int const x_340 = p.x;
+        int const x_343 = p.y;
+        int const x_347 = (*(tint_symbol_8)).arr[((x_340 + 2) + (x_343 * 16))];
+        x_348 = (x_347 == 0);
+        x_349_phi = x_348;
+      }
+      bool const x_349 = x_349_phi;
+      if (x_349) {
+        int const x_352 = d;
+        d = (x_352 - 1);
+        int const x_355 = p.x;
+        int const x_357 = p.y;
+        (*(tint_symbol_8)).arr[(x_355 + (x_357 * 16))] = 1;
+        int const x_362 = p.x;
+        int const x_365 = p.y;
+        (*(tint_symbol_8)).arr[((x_362 + 1) + (x_365 * 16))] = 1;
+        int const x_370 = p.x;
+        int const x_373 = p.y;
+        (*(tint_symbol_8)).arr[((x_370 + 2) + (x_373 * 16))] = 1;
+        int const x_378 = p.x;
+        p.x = (x_378 + 2);
+      }
+      int const x_381 = d;
+      bool const x_382 = (x_381 >= 0);
+      x_388_phi = x_382;
+      if (x_382) {
+        int const x_386 = p.y;
+        x_387 = (x_386 < 14);
+        x_388_phi = x_387;
+      }
+      bool const x_388 = x_388_phi;
+      x_401_phi = x_388;
+      if (x_388) {
+        int const x_392 = p.x;
+        int const x_394 = p.y;
+        int const x_399 = (*(tint_symbol_8)).arr[(x_392 + ((x_394 + 2) * 16))];
+        x_400 = (x_399 == 0);
+        x_401_phi = x_400;
+      }
+      bool const x_401 = x_401_phi;
+      if (x_401) {
+        int const x_404 = d;
+        d = (x_404 - 1);
+        int const x_407 = p.x;
+        int const x_409 = p.y;
+        (*(tint_symbol_8)).arr[(x_407 + (x_409 * 16))] = 1;
+        int const x_414 = p.x;
+        int const x_416 = p.y;
+        (*(tint_symbol_8)).arr[(x_414 + ((x_416 + 1) * 16))] = 1;
+        int const x_422 = p.x;
+        int const x_424 = p.y;
+        (*(tint_symbol_8)).arr[(x_422 + ((x_424 + 2) * 16))] = 1;
+        int const x_430 = p.y;
+        p.y = (x_430 + 2);
+      }
+    }
+    int const x_434 = ipos.y;
+    int const x_437 = ipos.x;
+    int const x_440 = (*(tint_symbol_8)).arr[((x_434 * 16) + x_437)];
+    if ((x_440 == 1)) {
+      *(tint_symbol_9) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      return;
+    }
+    {
+      bool const x_444 = canwalk;
+      if (x_444) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_9) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread tint_array_wrapper tint_symbol_11 = {};
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_6 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.spvasm
new file mode 100644
index 0000000..577b0fa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.spvasm
@@ -0,0 +1,782 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 512
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %map "map"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %x_104 "x_104"
+               OpName %x_124 "x_124"
+               OpName %x_144 "x_144"
+               OpName %x_164 "x_164"
+               OpName %x_105_phi "x_105_phi"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_145_phi "x_145_phi"
+               OpName %x_165_phi "x_165_phi"
+               OpName %x_229 "x_229"
+               OpName %x_242 "x_242"
+               OpName %x_281 "x_281"
+               OpName %x_295 "x_295"
+               OpName %x_335 "x_335"
+               OpName %x_348 "x_348"
+               OpName %x_387 "x_387"
+               OpName %x_400 "x_400"
+               OpName %x_230_phi "x_230_phi"
+               OpName %x_243_phi "x_243_phi"
+               OpName %x_282_phi "x_282_phi"
+               OpName %x_296_phi "x_296_phi"
+               OpName %x_336_phi "x_336_phi"
+               OpName %x_349_phi "x_349_phi"
+               OpName %x_388_phi "x_388_phi"
+               OpName %x_401_phi "x_401_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+         %16 = OpConstantNull %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private %16
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %28 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %32 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %float_16 = OpConstant %float 16
+      %int_0 = OpConstant %int 0
+    %int_256 = OpConstant %int 256
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %83 = OpConstantComposite %v2int %int_0 %int_0
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+        %331 = OpConstantComposite %_arr_int_uint_256 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+    %float_1 = OpConstant %float 1
+        %492 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+        %498 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %499 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %28
+       %ipos = OpVariable %_ptr_Function_v2int Function %32
+          %i = OpVariable %_ptr_Function_int Function %35
+          %p = OpVariable %_ptr_Function_v2int Function %32
+    %canwalk = OpVariable %_ptr_Function_bool Function %40
+          %v = OpVariable %_ptr_Function_int Function %35
+ %directions = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+          %d = OpVariable %_ptr_Function_int Function %35
+      %x_104 = OpVariable %_ptr_Function_bool Function %40
+      %x_124 = OpVariable %_ptr_Function_bool Function %40
+      %x_144 = OpVariable %_ptr_Function_bool Function %40
+      %x_164 = OpVariable %_ptr_Function_bool Function %40
+  %x_105_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_125_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_145_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_165_phi = OpVariable %_ptr_Function_bool Function %40
+      %x_229 = OpVariable %_ptr_Function_bool Function %40
+      %x_242 = OpVariable %_ptr_Function_bool Function %40
+      %x_281 = OpVariable %_ptr_Function_bool Function %40
+      %x_295 = OpVariable %_ptr_Function_bool Function %40
+      %x_335 = OpVariable %_ptr_Function_bool Function %40
+      %x_348 = OpVariable %_ptr_Function_bool Function %40
+      %x_387 = OpVariable %_ptr_Function_bool Function %40
+      %x_400 = OpVariable %_ptr_Function_bool Function %40
+  %x_230_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_243_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_282_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_296_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_336_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_349_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_388_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_401_phi = OpVariable %_ptr_Function_bool Function %40
+         %45 = OpLoad %v4float %gl_FragCoord
+         %48 = OpAccessChain %_ptr_Uniform_v2float %x_7 %uint_0
+         %49 = OpLoad %v2float %48
+         %50 = OpCompositeExtract %float %45 0
+         %51 = OpCompositeExtract %float %45 1
+         %52 = OpCompositeConstruct %v2float %50 %51
+         %53 = OpFDiv %v2float %52 %49
+               OpStore %pos %53
+         %55 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %59 = OpLoad %float %58
+         %62 = OpFMul %float %56 %float_16
+         %60 = OpConvertFToS %int %62
+         %64 = OpFMul %float %59 %float_16
+         %63 = OpConvertFToS %int %64
+         %65 = OpCompositeConstruct %v2int %60 %63
+               OpStore %ipos %65
+               OpStore %i %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i
+         %73 = OpSLessThan %bool %71 %int_256
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %68
+         %74 = OpLabel
+         %77 = OpLoad %int %i
+         %79 = OpAccessChain %_ptr_Private_int %map %77
+               OpStore %79 %int_0
+               OpBranch %69
+         %69 = OpLabel
+         %80 = OpLoad %int %i
+         %82 = OpIAdd %int %80 %int_1
+               OpStore %i %82
+               OpBranch %67
+         %68 = OpLabel
+               OpStore %p %83
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %97 = OpLoad %int %v
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %v %98
+               OpStore %directions %int_0
+         %99 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %100 = OpLoad %int %99
+        %101 = OpSGreaterThan %bool %100 %int_0
+               OpStore %x_105_phi %101
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %104 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %107 = OpLoad %int %106
+        %109 = OpISub %int %105 %int_2
+        %111 = OpIMul %int %107 %int_16
+        %112 = OpIAdd %int %109 %111
+        %113 = OpAccessChain %_ptr_Private_int %map %112
+        %114 = OpLoad %int %113
+        %115 = OpIEqual %bool %114 %int_0
+               OpStore %x_104 %115
+        %116 = OpLoad %bool %x_104
+               OpStore %x_105_phi %116
+               OpBranch %102
+        %102 = OpLabel
+        %117 = OpLoad %bool %x_105_phi
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpLoad %int %directions
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %directions %121
+               OpBranch %118
+        %118 = OpLabel
+        %122 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %123 = OpLoad %int %122
+        %124 = OpSGreaterThan %bool %123 %int_0
+               OpStore %x_125_phi %124
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %130 = OpLoad %int %129
+        %131 = OpISub %int %130 %int_2
+        %132 = OpIMul %int %131 %int_16
+        %133 = OpIAdd %int %128 %132
+        %134 = OpAccessChain %_ptr_Private_int %map %133
+        %135 = OpLoad %int %134
+        %136 = OpIEqual %bool %135 %int_0
+               OpStore %x_124 %136
+        %137 = OpLoad %bool %x_124
+               OpStore %x_125_phi %137
+               OpBranch %125
+        %125 = OpLabel
+        %138 = OpLoad %bool %x_125_phi
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %directions
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %directions %142
+               OpBranch %139
+        %139 = OpLabel
+        %143 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %144 = OpLoad %int %143
+        %146 = OpSLessThan %bool %144 %int_14
+               OpStore %x_145_phi %146
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %150 = OpLoad %int %149
+        %151 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %152 = OpLoad %int %151
+        %153 = OpIAdd %int %150 %int_2
+        %154 = OpIMul %int %152 %int_16
+        %155 = OpIAdd %int %153 %154
+        %156 = OpAccessChain %_ptr_Private_int %map %155
+        %157 = OpLoad %int %156
+        %158 = OpIEqual %bool %157 %int_0
+               OpStore %x_144 %158
+        %159 = OpLoad %bool %x_144
+               OpStore %x_145_phi %159
+               OpBranch %147
+        %147 = OpLabel
+        %160 = OpLoad %bool %x_145_phi
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %int %directions
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %directions %164
+               OpBranch %161
+        %161 = OpLabel
+        %165 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %166 %int_14
+               OpStore %x_165_phi %167
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %168
+        %169 = OpLabel
+        %170 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %171 = OpLoad %int %170
+        %172 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %173 = OpLoad %int %172
+        %174 = OpIAdd %int %173 %int_2
+        %175 = OpIMul %int %174 %int_16
+        %176 = OpIAdd %int %171 %175
+        %177 = OpAccessChain %_ptr_Private_int %map %176
+        %178 = OpLoad %int %177
+        %179 = OpIEqual %bool %178 %int_0
+               OpStore %x_164 %179
+        %180 = OpLoad %bool %x_164
+               OpStore %x_165_phi %180
+               OpBranch %168
+        %168 = OpLabel
+        %181 = OpLoad %bool %x_165_phi
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %directions
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %directions %185
+               OpBranch %182
+        %182 = OpLabel
+        %202 = OpLoad %int %directions
+        %203 = OpIEqual %bool %202 %int_0
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %205 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %i
+        %214 = OpSLessThan %bool %212 %int_8
+               OpSelectionMerge %215 None
+               OpBranchConditional %214 %216 %217
+        %216 = OpLabel
+               OpBranch %215
+        %217 = OpLabel
+               OpBranch %209
+        %215 = OpLabel
+               OpStore %j %int_0
+               OpBranch %218
+        %218 = OpLabel
+               OpLoopMerge %219 %220 None
+               OpBranch %221
+        %221 = OpLabel
+        %222 = OpLoad %int %j
+        %223 = OpSLessThan %bool %222 %int_8
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %226
+        %225 = OpLabel
+               OpBranch %224
+        %226 = OpLabel
+               OpBranch %219
+        %224 = OpLabel
+        %227 = OpLoad %int %j
+        %228 = OpLoad %int %i
+        %229 = OpIMul %int %227 %int_2
+        %230 = OpIMul %int %228 %int_2
+        %231 = OpIMul %int %230 %int_16
+        %232 = OpIAdd %int %229 %231
+        %233 = OpAccessChain %_ptr_Private_int %map %232
+        %234 = OpLoad %int %233
+        %235 = OpIEqual %bool %234 %int_0
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %236
+        %237 = OpLabel
+        %238 = OpLoad %int %j
+        %239 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %240 = OpIMul %int %238 %int_2
+               OpStore %239 %240
+        %241 = OpLoad %int %i
+        %242 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %243 = OpIMul %int %241 %int_2
+               OpStore %242 %243
+               OpStore %canwalk %true
+               OpBranch %236
+        %236 = OpLabel
+               OpBranch %220
+        %220 = OpLabel
+        %244 = OpLoad %int %j
+        %245 = OpIAdd %int %244 %int_1
+               OpStore %j %245
+               OpBranch %218
+        %219 = OpLabel
+               OpBranch %210
+        %210 = OpLabel
+        %246 = OpLoad %int %i
+        %247 = OpIAdd %int %246 %int_1
+               OpStore %i %247
+               OpBranch %208
+        %209 = OpLabel
+        %248 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %249 = OpLoad %int %248
+        %250 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %251 = OpLoad %int %250
+        %252 = OpIMul %int %251 %int_16
+        %253 = OpIAdd %int %249 %252
+        %254 = OpAccessChain %_ptr_Private_int %map %253
+               OpStore %254 %int_1
+               OpBranch %204
+        %206 = OpLabel
+        %255 = OpLoad %int %v
+        %256 = OpLoad %int %directions
+        %257 = OpSMod %int %255 %256
+               OpStore %d %257
+        %258 = OpLoad %int %directions
+        %259 = OpLoad %int %v
+        %260 = OpIAdd %int %259 %258
+               OpStore %v %260
+        %261 = OpLoad %int %d
+        %262 = OpSGreaterThanEqual %bool %261 %int_0
+               OpStore %x_230_phi %262
+               OpSelectionMerge %263 None
+               OpBranchConditional %262 %264 %263
+        %264 = OpLabel
+        %265 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %266 = OpLoad %int %265
+        %267 = OpSGreaterThan %bool %266 %int_0
+               OpStore %x_229 %267
+        %268 = OpLoad %bool %x_229
+               OpStore %x_230_phi %268
+               OpBranch %263
+        %263 = OpLabel
+        %269 = OpLoad %bool %x_230_phi
+               OpStore %x_243_phi %269
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %270
+        %271 = OpLabel
+        %272 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %273 = OpLoad %int %272
+        %274 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %275 = OpLoad %int %274
+        %276 = OpISub %int %273 %int_2
+        %277 = OpIMul %int %275 %int_16
+        %278 = OpIAdd %int %276 %277
+        %279 = OpAccessChain %_ptr_Private_int %map %278
+        %280 = OpLoad %int %279
+        %281 = OpIEqual %bool %280 %int_0
+               OpStore %x_242 %281
+        %282 = OpLoad %bool %x_242
+               OpStore %x_243_phi %282
+               OpBranch %270
+        %270 = OpLabel
+        %283 = OpLoad %bool %x_243_phi
+               OpSelectionMerge %284 None
+               OpBranchConditional %283 %285 %284
+        %285 = OpLabel
+        %286 = OpLoad %int %d
+        %287 = OpISub %int %286 %int_1
+               OpStore %d %287
+        %288 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %289 = OpLoad %int %288
+        %290 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %291 = OpLoad %int %290
+        %292 = OpIMul %int %291 %int_16
+        %293 = OpIAdd %int %289 %292
+        %294 = OpAccessChain %_ptr_Private_int %map %293
+               OpStore %294 %int_1
+        %295 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %296 = OpLoad %int %295
+        %297 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %298 = OpLoad %int %297
+        %299 = OpISub %int %296 %int_1
+        %300 = OpIMul %int %298 %int_16
+        %301 = OpIAdd %int %299 %300
+        %302 = OpAccessChain %_ptr_Private_int %map %301
+               OpStore %302 %int_1
+        %303 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %304 = OpLoad %int %303
+        %305 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %306 = OpLoad %int %305
+        %307 = OpISub %int %304 %int_2
+        %308 = OpIMul %int %306 %int_16
+        %309 = OpIAdd %int %307 %308
+        %310 = OpAccessChain %_ptr_Private_int %map %309
+               OpStore %310 %int_1
+        %311 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %312 = OpLoad %int %311
+        %313 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %314 = OpISub %int %312 %int_2
+               OpStore %313 %314
+               OpBranch %284
+        %284 = OpLabel
+        %315 = OpLoad %int %d
+        %316 = OpSGreaterThanEqual %bool %315 %int_0
+               OpStore %x_282_phi %316
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %317
+        %318 = OpLabel
+        %319 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %320 = OpLoad %int %319
+        %321 = OpSGreaterThan %bool %320 %int_0
+               OpStore %x_281 %321
+        %322 = OpLoad %bool %x_281
+               OpStore %x_282_phi %322
+               OpBranch %317
+        %317 = OpLabel
+        %323 = OpLoad %bool %x_282_phi
+               OpStore %x_296_phi %323
+               OpSelectionMerge %324 None
+               OpBranchConditional %323 %325 %324
+        %325 = OpLabel
+        %326 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %327 = OpLoad %int %326
+        %328 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %329 = OpLoad %int %328
+        %330 = OpLoad %_arr_int_uint_256 %map
+               OpStore %map %331
+               OpStore %map %330
+        %332 = OpISub %int %329 %int_2
+        %333 = OpIMul %int %332 %int_16
+        %334 = OpIAdd %int %327 %333
+        %335 = OpAccessChain %_ptr_Private_int %map %334
+        %336 = OpLoad %int %335
+        %337 = OpIEqual %bool %336 %int_0
+               OpStore %x_295 %337
+        %338 = OpLoad %bool %x_295
+               OpStore %x_296_phi %338
+               OpBranch %324
+        %324 = OpLabel
+        %339 = OpLoad %bool %x_296_phi
+               OpSelectionMerge %340 None
+               OpBranchConditional %339 %341 %340
+        %341 = OpLabel
+        %342 = OpLoad %int %d
+        %343 = OpISub %int %342 %int_1
+               OpStore %d %343
+        %344 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %345 = OpLoad %int %344
+        %346 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %347 = OpLoad %int %346
+        %348 = OpIMul %int %347 %int_16
+        %349 = OpIAdd %int %345 %348
+        %350 = OpAccessChain %_ptr_Private_int %map %349
+               OpStore %350 %int_1
+        %351 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %352 = OpLoad %int %351
+        %353 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %354 = OpLoad %int %353
+        %355 = OpISub %int %354 %int_1
+        %356 = OpIMul %int %355 %int_16
+        %357 = OpIAdd %int %352 %356
+        %358 = OpAccessChain %_ptr_Private_int %map %357
+               OpStore %358 %int_1
+        %359 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %360 = OpLoad %int %359
+        %361 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %362 = OpLoad %int %361
+        %363 = OpLoad %_arr_int_uint_256 %map
+               OpStore %map %331
+               OpStore %map %363
+        %364 = OpISub %int %362 %int_2
+        %365 = OpIMul %int %364 %int_16
+        %366 = OpIAdd %int %360 %365
+        %367 = OpAccessChain %_ptr_Private_int %map %366
+               OpStore %367 %int_1
+        %368 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %369 = OpLoad %int %368
+        %370 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %371 = OpISub %int %369 %int_2
+               OpStore %370 %371
+               OpBranch %340
+        %340 = OpLabel
+        %372 = OpLoad %int %d
+        %373 = OpSGreaterThanEqual %bool %372 %int_0
+               OpStore %x_336_phi %373
+               OpSelectionMerge %374 None
+               OpBranchConditional %373 %375 %374
+        %375 = OpLabel
+        %376 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %377 = OpLoad %int %376
+        %378 = OpSLessThan %bool %377 %int_14
+               OpStore %x_335 %378
+        %379 = OpLoad %bool %x_335
+               OpStore %x_336_phi %379
+               OpBranch %374
+        %374 = OpLabel
+        %380 = OpLoad %bool %x_336_phi
+               OpStore %x_349_phi %380
+               OpSelectionMerge %381 None
+               OpBranchConditional %380 %382 %381
+        %382 = OpLabel
+        %383 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %384 = OpLoad %int %383
+        %385 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %386 = OpLoad %int %385
+        %387 = OpIAdd %int %384 %int_2
+        %388 = OpIMul %int %386 %int_16
+        %389 = OpIAdd %int %387 %388
+        %390 = OpAccessChain %_ptr_Private_int %map %389
+        %391 = OpLoad %int %390
+        %392 = OpIEqual %bool %391 %int_0
+               OpStore %x_348 %392
+        %393 = OpLoad %bool %x_348
+               OpStore %x_349_phi %393
+               OpBranch %381
+        %381 = OpLabel
+        %394 = OpLoad %bool %x_349_phi
+               OpSelectionMerge %395 None
+               OpBranchConditional %394 %396 %395
+        %396 = OpLabel
+        %397 = OpLoad %int %d
+        %398 = OpISub %int %397 %int_1
+               OpStore %d %398
+        %399 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %400 = OpLoad %int %399
+        %401 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %402 = OpLoad %int %401
+        %403 = OpIMul %int %402 %int_16
+        %404 = OpIAdd %int %400 %403
+        %405 = OpAccessChain %_ptr_Private_int %map %404
+               OpStore %405 %int_1
+        %406 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %407 = OpLoad %int %406
+        %408 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %409 = OpLoad %int %408
+        %410 = OpIAdd %int %407 %int_1
+        %411 = OpIMul %int %409 %int_16
+        %412 = OpIAdd %int %410 %411
+        %413 = OpAccessChain %_ptr_Private_int %map %412
+               OpStore %413 %int_1
+        %414 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %415 = OpLoad %int %414
+        %416 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %417 = OpLoad %int %416
+        %418 = OpIAdd %int %415 %int_2
+        %419 = OpIMul %int %417 %int_16
+        %420 = OpIAdd %int %418 %419
+        %421 = OpAccessChain %_ptr_Private_int %map %420
+               OpStore %421 %int_1
+        %422 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %423 = OpLoad %int %422
+        %424 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %425 = OpIAdd %int %423 %int_2
+               OpStore %424 %425
+               OpBranch %395
+        %395 = OpLabel
+        %426 = OpLoad %int %d
+        %427 = OpSGreaterThanEqual %bool %426 %int_0
+               OpStore %x_388_phi %427
+               OpSelectionMerge %428 None
+               OpBranchConditional %427 %429 %428
+        %429 = OpLabel
+        %430 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %431 = OpLoad %int %430
+        %432 = OpSLessThan %bool %431 %int_14
+               OpStore %x_387 %432
+        %433 = OpLoad %bool %x_387
+               OpStore %x_388_phi %433
+               OpBranch %428
+        %428 = OpLabel
+        %434 = OpLoad %bool %x_388_phi
+               OpStore %x_401_phi %434
+               OpSelectionMerge %435 None
+               OpBranchConditional %434 %436 %435
+        %436 = OpLabel
+        %437 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %438 = OpLoad %int %437
+        %439 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %440 = OpLoad %int %439
+        %441 = OpIAdd %int %440 %int_2
+        %442 = OpIMul %int %441 %int_16
+        %443 = OpIAdd %int %438 %442
+        %444 = OpAccessChain %_ptr_Private_int %map %443
+        %445 = OpLoad %int %444
+        %446 = OpIEqual %bool %445 %int_0
+               OpStore %x_400 %446
+        %447 = OpLoad %bool %x_400
+               OpStore %x_401_phi %447
+               OpBranch %435
+        %435 = OpLabel
+        %448 = OpLoad %bool %x_401_phi
+               OpSelectionMerge %449 None
+               OpBranchConditional %448 %450 %449
+        %450 = OpLabel
+        %451 = OpLoad %int %d
+        %452 = OpISub %int %451 %int_1
+               OpStore %d %452
+        %453 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %454 = OpLoad %int %453
+        %455 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %456 = OpLoad %int %455
+        %457 = OpIMul %int %456 %int_16
+        %458 = OpIAdd %int %454 %457
+        %459 = OpAccessChain %_ptr_Private_int %map %458
+               OpStore %459 %int_1
+        %460 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %461 = OpLoad %int %460
+        %462 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %463 = OpLoad %int %462
+        %464 = OpIAdd %int %463 %int_1
+        %465 = OpIMul %int %464 %int_16
+        %466 = OpIAdd %int %461 %465
+        %467 = OpAccessChain %_ptr_Private_int %map %466
+               OpStore %467 %int_1
+        %468 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %469 = OpLoad %int %468
+        %470 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %471 = OpLoad %int %470
+        %472 = OpIAdd %int %471 %int_2
+        %473 = OpIMul %int %472 %int_16
+        %474 = OpIAdd %int %469 %473
+        %475 = OpAccessChain %_ptr_Private_int %map %474
+               OpStore %475 %int_1
+        %476 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %477 = OpLoad %int %476
+        %478 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %479 = OpIAdd %int %477 %int_2
+               OpStore %478 %479
+               OpBranch %449
+        %449 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+        %480 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %481 = OpLoad %int %480
+        %482 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %483 = OpLoad %int %482
+        %484 = OpIMul %int %481 %int_16
+        %485 = OpIAdd %int %484 %483
+        %486 = OpAccessChain %_ptr_Private_int %map %485
+        %487 = OpLoad %int %486
+        %488 = OpIEqual %bool %487 %int_1
+               OpSelectionMerge %489 None
+               OpBranchConditional %488 %490 %489
+        %490 = OpLabel
+               OpStore %x_GLF_color %492
+               OpReturn
+        %489 = OpLabel
+               OpBranch %87
+         %87 = OpLabel
+        %493 = OpLoad %bool %canwalk
+               OpSelectionMerge %494 None
+               OpBranchConditional %493 %495 %496
+        %495 = OpLabel
+               OpBranch %494
+        %496 = OpLabel
+               OpBranch %86
+        %494 = OpLabel
+               OpBranch %85
+         %86 = OpLabel
+               OpStore %x_GLF_color %498
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %499
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %503 = OpLabel
+        %504 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %504
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %506 = OpLabel
+        %507 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %507
+        %508 = OpFunctionCall %void %main_1
+        %510 = OpLoad %v4float %x_GLF_color
+        %511 = OpCompositeConstruct %main_out %510
+        %509 = OpFunctionCall %void %tint_symbol_3 %511
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 87[%87] is not post dominated by the back-edge block 494[%494]
+  %494 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.wgsl
new file mode 100644
index 0000000..774e546
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.spvasm.expected.wgsl
@@ -0,0 +1,354 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_59 : vec4<f32> = gl_FragCoord;
+  let x_62 : vec2<f32> = x_7.resolution;
+  pos = (vec2<f32>(x_59.x, x_59.y) / x_62);
+  let x_65 : f32 = pos.x;
+  let x_69 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_65 * 16.0)), i32((x_69 * 16.0)));
+  i = 0;
+  loop {
+    let x_77 : i32 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = i;
+    map[x_80] = 0;
+
+    continuing {
+      let x_82 : i32 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_104 : bool;
+    var x_124 : bool;
+    var x_144 : bool;
+    var x_164 : bool;
+    var x_105_phi : bool;
+    var x_125_phi : bool;
+    var x_145_phi : bool;
+    var x_165_phi : bool;
+    let x_88 : i32 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    let x_91 : i32 = p.x;
+    let x_92 : bool = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      let x_96 : i32 = p.x;
+      let x_99 : i32 = p.y;
+      let x_103 : i32 = map[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    let x_105 : bool = x_105_phi;
+    if (x_105) {
+      let x_108 : i32 = directions;
+      directions = (x_108 + 1);
+    }
+    let x_111 : i32 = p.y;
+    let x_112 : bool = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      let x_116 : i32 = p.x;
+      let x_118 : i32 = p.y;
+      let x_123 : i32 = map[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    let x_125 : bool = x_125_phi;
+    if (x_125) {
+      let x_128 : i32 = directions;
+      directions = (x_128 + 1);
+    }
+    let x_131 : i32 = p.x;
+    let x_132 : bool = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      let x_136 : i32 = p.x;
+      let x_139 : i32 = p.y;
+      let x_143 : i32 = map[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    let x_145 : bool = x_145_phi;
+    if (x_145) {
+      let x_148 : i32 = directions;
+      directions = (x_148 + 1);
+    }
+    let x_151 : i32 = p.y;
+    let x_152 : bool = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      let x_156 : i32 = p.x;
+      let x_158 : i32 = p.y;
+      let x_163 : i32 = map[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    let x_165 : bool = x_165_phi;
+    if (x_165) {
+      let x_168 : i32 = directions;
+      directions = (x_168 + 1);
+    }
+    var x_229 : bool;
+    var x_242 : bool;
+    var x_281 : bool;
+    var x_295 : bool;
+    var x_335 : bool;
+    var x_348 : bool;
+    var x_387 : bool;
+    var x_400 : bool;
+    var x_230_phi : bool;
+    var x_243_phi : bool;
+    var x_282_phi : bool;
+    var x_296_phi : bool;
+    var x_336_phi : bool;
+    var x_349_phi : bool;
+    var x_388_phi : bool;
+    var x_401_phi : bool;
+    let x_170 : i32 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_179 : i32 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        loop {
+          let x_186 : i32 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          let x_189 : i32 = j;
+          let x_191 : i32 = i;
+          let x_196 : i32 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            let x_200 : i32 = j;
+            p.x = (x_200 * 2);
+            let x_203 : i32 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_206 : i32 = j;
+            j = (x_206 + 1);
+          }
+        }
+
+        continuing {
+          let x_208 : i32 = i;
+          i = (x_208 + 1);
+        }
+      }
+      let x_211 : i32 = p.x;
+      let x_213 : i32 = p.y;
+      map[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      let x_217 : i32 = v;
+      let x_218 : i32 = directions;
+      d = (x_217 % x_218);
+      let x_220 : i32 = directions;
+      let x_221 : i32 = v;
+      v = (x_221 + x_220);
+      let x_223 : i32 = d;
+      let x_224 : bool = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        let x_228 : i32 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      let x_230 : bool = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        let x_234 : i32 = p.x;
+        let x_237 : i32 = p.y;
+        let x_241 : i32 = map[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      let x_243 : bool = x_243_phi;
+      if (x_243) {
+        let x_246 : i32 = d;
+        d = (x_246 - 1);
+        let x_249 : i32 = p.x;
+        let x_251 : i32 = p.y;
+        map[(x_249 + (x_251 * 16))] = 1;
+        let x_256 : i32 = p.x;
+        let x_259 : i32 = p.y;
+        map[((x_256 - 1) + (x_259 * 16))] = 1;
+        let x_264 : i32 = p.x;
+        let x_267 : i32 = p.y;
+        map[((x_264 - 2) + (x_267 * 16))] = 1;
+        let x_272 : i32 = p.x;
+        p.x = (x_272 - 2);
+      }
+      let x_275 : i32 = d;
+      let x_276 : bool = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        let x_280 : i32 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      let x_282 : bool = x_282_phi;
+      x_296_phi = x_282;
+      if (x_282) {
+        let x_286 : i32 = p.x;
+        let x_288 : i32 = p.y;
+        let x_291 : array<i32, 256> = map;
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        map = x_291;
+        let x_294 : i32 = map[(x_286 + ((x_288 - 2) * 16))];
+        x_295 = (x_294 == 0);
+        x_296_phi = x_295;
+      }
+      let x_296 : bool = x_296_phi;
+      if (x_296) {
+        let x_299 : i32 = d;
+        d = (x_299 - 1);
+        let x_302 : i32 = p.x;
+        let x_304 : i32 = p.y;
+        map[(x_302 + (x_304 * 16))] = 1;
+        let x_309 : i32 = p.x;
+        let x_311 : i32 = p.y;
+        map[(x_309 + ((x_311 - 1) * 16))] = 1;
+        let x_317 : i32 = p.x;
+        let x_319 : i32 = p.y;
+        let x_321 : array<i32, 256> = map;
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        map = x_321;
+        map[(x_317 + ((x_319 - 2) * 16))] = 1;
+        let x_326 : i32 = p.y;
+        p.y = (x_326 - 2);
+      }
+      let x_329 : i32 = d;
+      let x_330 : bool = (x_329 >= 0);
+      x_336_phi = x_330;
+      if (x_330) {
+        let x_334 : i32 = p.x;
+        x_335 = (x_334 < 14);
+        x_336_phi = x_335;
+      }
+      let x_336 : bool = x_336_phi;
+      x_349_phi = x_336;
+      if (x_336) {
+        let x_340 : i32 = p.x;
+        let x_343 : i32 = p.y;
+        let x_347 : i32 = map[((x_340 + 2) + (x_343 * 16))];
+        x_348 = (x_347 == 0);
+        x_349_phi = x_348;
+      }
+      let x_349 : bool = x_349_phi;
+      if (x_349) {
+        let x_352 : i32 = d;
+        d = (x_352 - 1);
+        let x_355 : i32 = p.x;
+        let x_357 : i32 = p.y;
+        map[(x_355 + (x_357 * 16))] = 1;
+        let x_362 : i32 = p.x;
+        let x_365 : i32 = p.y;
+        map[((x_362 + 1) + (x_365 * 16))] = 1;
+        let x_370 : i32 = p.x;
+        let x_373 : i32 = p.y;
+        map[((x_370 + 2) + (x_373 * 16))] = 1;
+        let x_378 : i32 = p.x;
+        p.x = (x_378 + 2);
+      }
+      let x_381 : i32 = d;
+      let x_382 : bool = (x_381 >= 0);
+      x_388_phi = x_382;
+      if (x_382) {
+        let x_386 : i32 = p.y;
+        x_387 = (x_386 < 14);
+        x_388_phi = x_387;
+      }
+      let x_388 : bool = x_388_phi;
+      x_401_phi = x_388;
+      if (x_388) {
+        let x_392 : i32 = p.x;
+        let x_394 : i32 = p.y;
+        let x_399 : i32 = map[(x_392 + ((x_394 + 2) * 16))];
+        x_400 = (x_399 == 0);
+        x_401_phi = x_400;
+      }
+      let x_401 : bool = x_401_phi;
+      if (x_401) {
+        let x_404 : i32 = d;
+        d = (x_404 - 1);
+        let x_407 : i32 = p.x;
+        let x_409 : i32 = p.y;
+        map[(x_407 + (x_409 * 16))] = 1;
+        let x_414 : i32 = p.x;
+        let x_416 : i32 = p.y;
+        map[(x_414 + ((x_416 + 1) * 16))] = 1;
+        let x_422 : i32 = p.x;
+        let x_424 : i32 = p.y;
+        map[(x_422 + ((x_424 + 2) * 16))] = 1;
+        let x_430 : i32 = p.y;
+        p.y = (x_430 + 2);
+      }
+    }
+    let x_434 : i32 = ipos.y;
+    let x_437 : i32 = ipos.x;
+    let x_440 : i32 = map[((x_434 * 16) + x_437)];
+    if ((x_440 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_444 : bool = canwalk;
+      if (x_444) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
new file mode 100644
index 0000000..774e546
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
@@ -0,0 +1,354 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_59 : vec4<f32> = gl_FragCoord;
+  let x_62 : vec2<f32> = x_7.resolution;
+  pos = (vec2<f32>(x_59.x, x_59.y) / x_62);
+  let x_65 : f32 = pos.x;
+  let x_69 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_65 * 16.0)), i32((x_69 * 16.0)));
+  i = 0;
+  loop {
+    let x_77 : i32 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = i;
+    map[x_80] = 0;
+
+    continuing {
+      let x_82 : i32 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_104 : bool;
+    var x_124 : bool;
+    var x_144 : bool;
+    var x_164 : bool;
+    var x_105_phi : bool;
+    var x_125_phi : bool;
+    var x_145_phi : bool;
+    var x_165_phi : bool;
+    let x_88 : i32 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    let x_91 : i32 = p.x;
+    let x_92 : bool = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      let x_96 : i32 = p.x;
+      let x_99 : i32 = p.y;
+      let x_103 : i32 = map[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    let x_105 : bool = x_105_phi;
+    if (x_105) {
+      let x_108 : i32 = directions;
+      directions = (x_108 + 1);
+    }
+    let x_111 : i32 = p.y;
+    let x_112 : bool = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      let x_116 : i32 = p.x;
+      let x_118 : i32 = p.y;
+      let x_123 : i32 = map[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    let x_125 : bool = x_125_phi;
+    if (x_125) {
+      let x_128 : i32 = directions;
+      directions = (x_128 + 1);
+    }
+    let x_131 : i32 = p.x;
+    let x_132 : bool = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      let x_136 : i32 = p.x;
+      let x_139 : i32 = p.y;
+      let x_143 : i32 = map[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    let x_145 : bool = x_145_phi;
+    if (x_145) {
+      let x_148 : i32 = directions;
+      directions = (x_148 + 1);
+    }
+    let x_151 : i32 = p.y;
+    let x_152 : bool = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      let x_156 : i32 = p.x;
+      let x_158 : i32 = p.y;
+      let x_163 : i32 = map[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    let x_165 : bool = x_165_phi;
+    if (x_165) {
+      let x_168 : i32 = directions;
+      directions = (x_168 + 1);
+    }
+    var x_229 : bool;
+    var x_242 : bool;
+    var x_281 : bool;
+    var x_295 : bool;
+    var x_335 : bool;
+    var x_348 : bool;
+    var x_387 : bool;
+    var x_400 : bool;
+    var x_230_phi : bool;
+    var x_243_phi : bool;
+    var x_282_phi : bool;
+    var x_296_phi : bool;
+    var x_336_phi : bool;
+    var x_349_phi : bool;
+    var x_388_phi : bool;
+    var x_401_phi : bool;
+    let x_170 : i32 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_179 : i32 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        loop {
+          let x_186 : i32 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          let x_189 : i32 = j;
+          let x_191 : i32 = i;
+          let x_196 : i32 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            let x_200 : i32 = j;
+            p.x = (x_200 * 2);
+            let x_203 : i32 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_206 : i32 = j;
+            j = (x_206 + 1);
+          }
+        }
+
+        continuing {
+          let x_208 : i32 = i;
+          i = (x_208 + 1);
+        }
+      }
+      let x_211 : i32 = p.x;
+      let x_213 : i32 = p.y;
+      map[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      let x_217 : i32 = v;
+      let x_218 : i32 = directions;
+      d = (x_217 % x_218);
+      let x_220 : i32 = directions;
+      let x_221 : i32 = v;
+      v = (x_221 + x_220);
+      let x_223 : i32 = d;
+      let x_224 : bool = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        let x_228 : i32 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      let x_230 : bool = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        let x_234 : i32 = p.x;
+        let x_237 : i32 = p.y;
+        let x_241 : i32 = map[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      let x_243 : bool = x_243_phi;
+      if (x_243) {
+        let x_246 : i32 = d;
+        d = (x_246 - 1);
+        let x_249 : i32 = p.x;
+        let x_251 : i32 = p.y;
+        map[(x_249 + (x_251 * 16))] = 1;
+        let x_256 : i32 = p.x;
+        let x_259 : i32 = p.y;
+        map[((x_256 - 1) + (x_259 * 16))] = 1;
+        let x_264 : i32 = p.x;
+        let x_267 : i32 = p.y;
+        map[((x_264 - 2) + (x_267 * 16))] = 1;
+        let x_272 : i32 = p.x;
+        p.x = (x_272 - 2);
+      }
+      let x_275 : i32 = d;
+      let x_276 : bool = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        let x_280 : i32 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      let x_282 : bool = x_282_phi;
+      x_296_phi = x_282;
+      if (x_282) {
+        let x_286 : i32 = p.x;
+        let x_288 : i32 = p.y;
+        let x_291 : array<i32, 256> = map;
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        map = x_291;
+        let x_294 : i32 = map[(x_286 + ((x_288 - 2) * 16))];
+        x_295 = (x_294 == 0);
+        x_296_phi = x_295;
+      }
+      let x_296 : bool = x_296_phi;
+      if (x_296) {
+        let x_299 : i32 = d;
+        d = (x_299 - 1);
+        let x_302 : i32 = p.x;
+        let x_304 : i32 = p.y;
+        map[(x_302 + (x_304 * 16))] = 1;
+        let x_309 : i32 = p.x;
+        let x_311 : i32 = p.y;
+        map[(x_309 + ((x_311 - 1) * 16))] = 1;
+        let x_317 : i32 = p.x;
+        let x_319 : i32 = p.y;
+        let x_321 : array<i32, 256> = map;
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        map = x_321;
+        map[(x_317 + ((x_319 - 2) * 16))] = 1;
+        let x_326 : i32 = p.y;
+        p.y = (x_326 - 2);
+      }
+      let x_329 : i32 = d;
+      let x_330 : bool = (x_329 >= 0);
+      x_336_phi = x_330;
+      if (x_330) {
+        let x_334 : i32 = p.x;
+        x_335 = (x_334 < 14);
+        x_336_phi = x_335;
+      }
+      let x_336 : bool = x_336_phi;
+      x_349_phi = x_336;
+      if (x_336) {
+        let x_340 : i32 = p.x;
+        let x_343 : i32 = p.y;
+        let x_347 : i32 = map[((x_340 + 2) + (x_343 * 16))];
+        x_348 = (x_347 == 0);
+        x_349_phi = x_348;
+      }
+      let x_349 : bool = x_349_phi;
+      if (x_349) {
+        let x_352 : i32 = d;
+        d = (x_352 - 1);
+        let x_355 : i32 = p.x;
+        let x_357 : i32 = p.y;
+        map[(x_355 + (x_357 * 16))] = 1;
+        let x_362 : i32 = p.x;
+        let x_365 : i32 = p.y;
+        map[((x_362 + 1) + (x_365 * 16))] = 1;
+        let x_370 : i32 = p.x;
+        let x_373 : i32 = p.y;
+        map[((x_370 + 2) + (x_373 * 16))] = 1;
+        let x_378 : i32 = p.x;
+        p.x = (x_378 + 2);
+      }
+      let x_381 : i32 = d;
+      let x_382 : bool = (x_381 >= 0);
+      x_388_phi = x_382;
+      if (x_382) {
+        let x_386 : i32 = p.y;
+        x_387 = (x_386 < 14);
+        x_388_phi = x_387;
+      }
+      let x_388 : bool = x_388_phi;
+      x_401_phi = x_388;
+      if (x_388) {
+        let x_392 : i32 = p.x;
+        let x_394 : i32 = p.y;
+        let x_399 : i32 = map[(x_392 + ((x_394 + 2) * 16))];
+        x_400 = (x_399 == 0);
+        x_401_phi = x_400;
+      }
+      let x_401 : bool = x_401_phi;
+      if (x_401) {
+        let x_404 : i32 = d;
+        d = (x_404 - 1);
+        let x_407 : i32 = p.x;
+        let x_409 : i32 = p.y;
+        map[(x_407 + (x_409 * 16))] = 1;
+        let x_414 : i32 = p.x;
+        let x_416 : i32 = p.y;
+        map[(x_414 + ((x_416 + 1) * 16))] = 1;
+        let x_422 : i32 = p.x;
+        let x_424 : i32 = p.y;
+        map[(x_422 + ((x_424 + 2) * 16))] = 1;
+        let x_430 : i32 = p.y;
+        p.y = (x_430 + 2);
+      }
+    }
+    let x_434 : i32 = ipos.y;
+    let x_437 : i32 = ipos.x;
+    let x_440 : i32 = map[((x_434 * 16) + x_437)];
+    if ((x_440 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_444 : bool = canwalk;
+      if (x_444) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.hlsl
new file mode 100644
index 0000000..cfe3abd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.hlsl
@@ -0,0 +1,300 @@
+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;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  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;
+    bool x_295 = false;
+    bool x_335 = false;
+    bool x_348 = false;
+    bool x_387 = false;
+    bool x_400 = false;
+    bool x_230_phi = false;
+    bool x_243_phi = false;
+    bool x_282_phi = false;
+    bool x_296_phi = false;
+    bool x_336_phi = false;
+    bool x_349_phi = false;
+    bool x_388_phi = false;
+    bool x_401_phi = false;
+    if ((directions == 0)) {
+      canwalk = false;
+      i = 0;
+      {
+        for(; (i < 8); i = (i + 1)) {
+          j = 0;
+          {
+            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);
+      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;
+      x_296_phi = x_282;
+      if (x_282) {
+        const int x_286 = p.x;
+        const int x_288 = p.y;
+        const int x_291[256] = map;
+        const int tint_symbol_5[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        map = tint_symbol_5;
+        map = x_291;
+        const int x_294 = map[(x_286 + ((x_288 - 2) * 16))];
+        x_295 = (x_294 == 0);
+        x_296_phi = x_295;
+      }
+      if (x_296_phi) {
+        d = (d - 1);
+        const int x_302 = p.x;
+        const int x_304 = p.y;
+        map[(x_302 + (x_304 * 16))] = 1;
+        const int x_309 = p.x;
+        const int x_311 = p.y;
+        map[(x_309 + ((x_311 - 1) * 16))] = 1;
+        const int x_317 = p.x;
+        const int x_319 = p.y;
+        const int x_321[256] = map;
+        const int tint_symbol_6[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        map = tint_symbol_6;
+        map = x_321;
+        map[(x_317 + ((x_319 - 2) * 16))] = 1;
+        const int x_326 = p.y;
+        p.y = (x_326 - 2);
+      }
+      const bool x_330 = (d >= 0);
+      x_336_phi = x_330;
+      if (x_330) {
+        const int x_334 = p.x;
+        x_335 = (x_334 < 14);
+        x_336_phi = x_335;
+      }
+      const bool x_336 = x_336_phi;
+      x_349_phi = x_336;
+      if (x_336) {
+        const int x_340 = p.x;
+        const int x_343 = p.y;
+        const int x_347 = map[((x_340 + 2) + (x_343 * 16))];
+        x_348 = (x_347 == 0);
+        x_349_phi = x_348;
+      }
+      if (x_349_phi) {
+        d = (d - 1);
+        const int x_355 = p.x;
+        const int x_357 = p.y;
+        map[(x_355 + (x_357 * 16))] = 1;
+        const int x_362 = p.x;
+        const int x_365 = p.y;
+        map[((x_362 + 1) + (x_365 * 16))] = 1;
+        const int x_370 = p.x;
+        const int x_373 = p.y;
+        map[((x_370 + 2) + (x_373 * 16))] = 1;
+        const int x_378 = p.x;
+        p.x = (x_378 + 2);
+      }
+      const bool x_382 = (d >= 0);
+      x_388_phi = x_382;
+      if (x_382) {
+        const int x_386 = p.y;
+        x_387 = (x_386 < 14);
+        x_388_phi = x_387;
+      }
+      const bool x_388 = x_388_phi;
+      x_401_phi = x_388;
+      if (x_388) {
+        const int x_392 = p.x;
+        const int x_394 = p.y;
+        const int x_399 = map[(x_392 + ((x_394 + 2) * 16))];
+        x_400 = (x_399 == 0);
+        x_401_phi = x_400;
+      }
+      if (x_401_phi) {
+        d = (d - 1);
+        const int x_407 = p.x;
+        const int x_409 = p.y;
+        map[(x_407 + (x_409 * 16))] = 1;
+        const int x_414 = p.x;
+        const int x_416 = p.y;
+        map[(x_414 + ((x_416 + 1) * 16))] = 1;
+        const int x_422 = p.x;
+        const int x_424 = p.y;
+        map[(x_422 + ((x_424 + 2) * 16))] = 1;
+        const int x_430 = p.y;
+        p.y = (x_430 + 2);
+      }
+    }
+    const int x_434 = ipos.y;
+    const int x_437 = ipos.x;
+    const int x_440 = map[((x_434 * 16) + x_437)];
+    if ((x_440 == 1)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.msl
new file mode 100644
index 0000000..b60fe95
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.msl
@@ -0,0 +1,355 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  float2 pos = 0.0f;
+  int2 ipos = 0;
+  int i = 0;
+  int2 p = 0;
+  bool canwalk = false;
+  int v = 0;
+  int directions = 0;
+  int j = 0;
+  int d = 0;
+  float4 const x_59 = *(tint_symbol_7);
+  float2 const x_62 = x_7.resolution;
+  pos = (float2(x_59.x, x_59.y) / x_62);
+  float const x_65 = pos.x;
+  float const x_69 = pos.y;
+  ipos = int2(int((x_65 * 16.0f)), int((x_69 * 16.0f)));
+  i = 0;
+  while (true) {
+    int const x_77 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    int const x_80 = i;
+    (*(tint_symbol_8)).arr[x_80] = 0;
+    {
+      int const x_82 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = int2(0, 0);
+  canwalk = true;
+  v = 0;
+  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;
+    int const x_88 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    int const x_91 = p.x;
+    bool const x_92 = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      int const x_96 = p.x;
+      int const x_99 = p.y;
+      int const x_103 = (*(tint_symbol_8)).arr[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    bool const x_105 = x_105_phi;
+    if (x_105) {
+      int const x_108 = directions;
+      directions = (x_108 + 1);
+    }
+    int const x_111 = p.y;
+    bool const x_112 = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      int const x_116 = p.x;
+      int const x_118 = p.y;
+      int const x_123 = (*(tint_symbol_8)).arr[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    bool const x_125 = x_125_phi;
+    if (x_125) {
+      int const x_128 = directions;
+      directions = (x_128 + 1);
+    }
+    int const x_131 = p.x;
+    bool const x_132 = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      int const x_136 = p.x;
+      int const x_139 = p.y;
+      int const x_143 = (*(tint_symbol_8)).arr[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    bool const x_145 = x_145_phi;
+    if (x_145) {
+      int const x_148 = directions;
+      directions = (x_148 + 1);
+    }
+    int const x_151 = p.y;
+    bool const x_152 = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      int const x_156 = p.x;
+      int const x_158 = p.y;
+      int const x_163 = (*(tint_symbol_8)).arr[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    bool const x_165 = x_165_phi;
+    if (x_165) {
+      int const x_168 = directions;
+      directions = (x_168 + 1);
+    }
+    bool x_229 = false;
+    bool x_242 = false;
+    bool x_281 = false;
+    bool x_295 = false;
+    bool x_335 = false;
+    bool x_348 = false;
+    bool x_387 = false;
+    bool x_400 = false;
+    bool x_230_phi = false;
+    bool x_243_phi = false;
+    bool x_282_phi = false;
+    bool x_296_phi = false;
+    bool x_336_phi = false;
+    bool x_349_phi = false;
+    bool x_388_phi = false;
+    bool x_401_phi = false;
+    int const x_170 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      while (true) {
+        int const x_179 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        while (true) {
+          int const x_186 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          int const x_189 = j;
+          int const x_191 = i;
+          int const x_196 = (*(tint_symbol_8)).arr[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            int const x_200 = j;
+            p.x = (x_200 * 2);
+            int const x_203 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+          {
+            int const x_206 = j;
+            j = (x_206 + 1);
+          }
+        }
+        {
+          int const x_208 = i;
+          i = (x_208 + 1);
+        }
+      }
+      int const x_211 = p.x;
+      int const x_213 = p.y;
+      (*(tint_symbol_8)).arr[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      int const x_217 = v;
+      int const x_218 = directions;
+      d = (x_217 % x_218);
+      int const x_220 = directions;
+      int const x_221 = v;
+      v = (x_221 + x_220);
+      int const x_223 = d;
+      bool const x_224 = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        int const x_228 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      bool const x_230 = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        int const x_234 = p.x;
+        int const x_237 = p.y;
+        int const x_241 = (*(tint_symbol_8)).arr[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      bool const x_243 = x_243_phi;
+      if (x_243) {
+        int const x_246 = d;
+        d = (x_246 - 1);
+        int const x_249 = p.x;
+        int const x_251 = p.y;
+        (*(tint_symbol_8)).arr[(x_249 + (x_251 * 16))] = 1;
+        int const x_256 = p.x;
+        int const x_259 = p.y;
+        (*(tint_symbol_8)).arr[((x_256 - 1) + (x_259 * 16))] = 1;
+        int const x_264 = p.x;
+        int const x_267 = p.y;
+        (*(tint_symbol_8)).arr[((x_264 - 2) + (x_267 * 16))] = 1;
+        int const x_272 = p.x;
+        p.x = (x_272 - 2);
+      }
+      int const x_275 = d;
+      bool const x_276 = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        int const x_280 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      bool const x_282 = x_282_phi;
+      x_296_phi = x_282;
+      if (x_282) {
+        int const x_286 = p.x;
+        int const x_288 = p.y;
+        tint_array_wrapper const x_291 = *(tint_symbol_8);
+        tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        *(tint_symbol_8) = tint_symbol_4;
+        *(tint_symbol_8) = x_291;
+        int const x_294 = (*(tint_symbol_8)).arr[(x_286 + ((x_288 - 2) * 16))];
+        x_295 = (x_294 == 0);
+        x_296_phi = x_295;
+      }
+      bool const x_296 = x_296_phi;
+      if (x_296) {
+        int const x_299 = d;
+        d = (x_299 - 1);
+        int const x_302 = p.x;
+        int const x_304 = p.y;
+        (*(tint_symbol_8)).arr[(x_302 + (x_304 * 16))] = 1;
+        int const x_309 = p.x;
+        int const x_311 = p.y;
+        (*(tint_symbol_8)).arr[(x_309 + ((x_311 - 1) * 16))] = 1;
+        int const x_317 = p.x;
+        int const x_319 = p.y;
+        tint_array_wrapper const x_321 = *(tint_symbol_8);
+        tint_array_wrapper const tint_symbol_5 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+        *(tint_symbol_8) = tint_symbol_5;
+        *(tint_symbol_8) = x_321;
+        (*(tint_symbol_8)).arr[(x_317 + ((x_319 - 2) * 16))] = 1;
+        int const x_326 = p.y;
+        p.y = (x_326 - 2);
+      }
+      int const x_329 = d;
+      bool const x_330 = (x_329 >= 0);
+      x_336_phi = x_330;
+      if (x_330) {
+        int const x_334 = p.x;
+        x_335 = (x_334 < 14);
+        x_336_phi = x_335;
+      }
+      bool const x_336 = x_336_phi;
+      x_349_phi = x_336;
+      if (x_336) {
+        int const x_340 = p.x;
+        int const x_343 = p.y;
+        int const x_347 = (*(tint_symbol_8)).arr[((x_340 + 2) + (x_343 * 16))];
+        x_348 = (x_347 == 0);
+        x_349_phi = x_348;
+      }
+      bool const x_349 = x_349_phi;
+      if (x_349) {
+        int const x_352 = d;
+        d = (x_352 - 1);
+        int const x_355 = p.x;
+        int const x_357 = p.y;
+        (*(tint_symbol_8)).arr[(x_355 + (x_357 * 16))] = 1;
+        int const x_362 = p.x;
+        int const x_365 = p.y;
+        (*(tint_symbol_8)).arr[((x_362 + 1) + (x_365 * 16))] = 1;
+        int const x_370 = p.x;
+        int const x_373 = p.y;
+        (*(tint_symbol_8)).arr[((x_370 + 2) + (x_373 * 16))] = 1;
+        int const x_378 = p.x;
+        p.x = (x_378 + 2);
+      }
+      int const x_381 = d;
+      bool const x_382 = (x_381 >= 0);
+      x_388_phi = x_382;
+      if (x_382) {
+        int const x_386 = p.y;
+        x_387 = (x_386 < 14);
+        x_388_phi = x_387;
+      }
+      bool const x_388 = x_388_phi;
+      x_401_phi = x_388;
+      if (x_388) {
+        int const x_392 = p.x;
+        int const x_394 = p.y;
+        int const x_399 = (*(tint_symbol_8)).arr[(x_392 + ((x_394 + 2) * 16))];
+        x_400 = (x_399 == 0);
+        x_401_phi = x_400;
+      }
+      bool const x_401 = x_401_phi;
+      if (x_401) {
+        int const x_404 = d;
+        d = (x_404 - 1);
+        int const x_407 = p.x;
+        int const x_409 = p.y;
+        (*(tint_symbol_8)).arr[(x_407 + (x_409 * 16))] = 1;
+        int const x_414 = p.x;
+        int const x_416 = p.y;
+        (*(tint_symbol_8)).arr[(x_414 + ((x_416 + 1) * 16))] = 1;
+        int const x_422 = p.x;
+        int const x_424 = p.y;
+        (*(tint_symbol_8)).arr[(x_422 + ((x_424 + 2) * 16))] = 1;
+        int const x_430 = p.y;
+        p.y = (x_430 + 2);
+      }
+    }
+    int const x_434 = ipos.y;
+    int const x_437 = ipos.x;
+    int const x_440 = (*(tint_symbol_8)).arr[((x_434 * 16) + x_437)];
+    if ((x_440 == 1)) {
+      *(tint_symbol_9) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      return;
+    }
+    {
+      bool const x_444 = canwalk;
+      if (x_444) {
+      } else {
+        break;
+      }
+    }
+  }
+  *(tint_symbol_9) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread tint_array_wrapper tint_symbol_11 = {};
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_6 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.spvasm
new file mode 100644
index 0000000..577b0fa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.spvasm
@@ -0,0 +1,782 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 512
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_7 "x_7"
+               OpName %map "map"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %ipos "ipos"
+               OpName %i "i"
+               OpName %p "p"
+               OpName %canwalk "canwalk"
+               OpName %v "v"
+               OpName %directions "directions"
+               OpName %j "j"
+               OpName %d "d"
+               OpName %x_104 "x_104"
+               OpName %x_124 "x_124"
+               OpName %x_144 "x_144"
+               OpName %x_164 "x_164"
+               OpName %x_105_phi "x_105_phi"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_145_phi "x_145_phi"
+               OpName %x_165_phi "x_165_phi"
+               OpName %x_229 "x_229"
+               OpName %x_242 "x_242"
+               OpName %x_281 "x_281"
+               OpName %x_295 "x_295"
+               OpName %x_335 "x_335"
+               OpName %x_348 "x_348"
+               OpName %x_387 "x_387"
+               OpName %x_400 "x_400"
+               OpName %x_230_phi "x_230_phi"
+               OpName %x_243_phi "x_243_phi"
+               OpName %x_282_phi "x_282_phi"
+               OpName %x_296_phi "x_296_phi"
+               OpName %x_336_phi "x_336_phi"
+               OpName %x_349_phi "x_349_phi"
+               OpName %x_388_phi "x_388_phi"
+               OpName %x_401_phi "x_401_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Private__arr_int_uint_256 = OpTypePointer Private %_arr_int_uint_256
+         %16 = OpConstantNull %_arr_int_uint_256
+        %map = OpVariable %_ptr_Private__arr_int_uint_256 Private %16
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %28 = OpConstantNull %v2float
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %32 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+   %float_16 = OpConstant %float 16
+      %int_0 = OpConstant %int 0
+    %int_256 = OpConstant %int 256
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+         %83 = OpConstantComposite %v2int %int_0 %int_0
+       %true = OpConstantTrue %bool
+      %int_2 = OpConstant %int 2
+     %int_16 = OpConstant %int 16
+     %int_14 = OpConstant %int 14
+      %false = OpConstantFalse %bool
+      %int_8 = OpConstant %int 8
+        %331 = OpConstantComposite %_arr_int_uint_256 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+    %float_1 = OpConstant %float 1
+        %492 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %float_0 = OpConstant %float 0
+        %498 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %499 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %22
+         %25 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %28
+       %ipos = OpVariable %_ptr_Function_v2int Function %32
+          %i = OpVariable %_ptr_Function_int Function %35
+          %p = OpVariable %_ptr_Function_v2int Function %32
+    %canwalk = OpVariable %_ptr_Function_bool Function %40
+          %v = OpVariable %_ptr_Function_int Function %35
+ %directions = OpVariable %_ptr_Function_int Function %35
+          %j = OpVariable %_ptr_Function_int Function %35
+          %d = OpVariable %_ptr_Function_int Function %35
+      %x_104 = OpVariable %_ptr_Function_bool Function %40
+      %x_124 = OpVariable %_ptr_Function_bool Function %40
+      %x_144 = OpVariable %_ptr_Function_bool Function %40
+      %x_164 = OpVariable %_ptr_Function_bool Function %40
+  %x_105_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_125_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_145_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_165_phi = OpVariable %_ptr_Function_bool Function %40
+      %x_229 = OpVariable %_ptr_Function_bool Function %40
+      %x_242 = OpVariable %_ptr_Function_bool Function %40
+      %x_281 = OpVariable %_ptr_Function_bool Function %40
+      %x_295 = OpVariable %_ptr_Function_bool Function %40
+      %x_335 = OpVariable %_ptr_Function_bool Function %40
+      %x_348 = OpVariable %_ptr_Function_bool Function %40
+      %x_387 = OpVariable %_ptr_Function_bool Function %40
+      %x_400 = OpVariable %_ptr_Function_bool Function %40
+  %x_230_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_243_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_282_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_296_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_336_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_349_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_388_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_401_phi = OpVariable %_ptr_Function_bool Function %40
+         %45 = OpLoad %v4float %gl_FragCoord
+         %48 = OpAccessChain %_ptr_Uniform_v2float %x_7 %uint_0
+         %49 = OpLoad %v2float %48
+         %50 = OpCompositeExtract %float %45 0
+         %51 = OpCompositeExtract %float %45 1
+         %52 = OpCompositeConstruct %v2float %50 %51
+         %53 = OpFDiv %v2float %52 %49
+               OpStore %pos %53
+         %55 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %56 = OpLoad %float %55
+         %58 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %59 = OpLoad %float %58
+         %62 = OpFMul %float %56 %float_16
+         %60 = OpConvertFToS %int %62
+         %64 = OpFMul %float %59 %float_16
+         %63 = OpConvertFToS %int %64
+         %65 = OpCompositeConstruct %v2int %60 %63
+               OpStore %ipos %65
+               OpStore %i %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %i
+         %73 = OpSLessThan %bool %71 %int_256
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+               OpBranch %68
+         %74 = OpLabel
+         %77 = OpLoad %int %i
+         %79 = OpAccessChain %_ptr_Private_int %map %77
+               OpStore %79 %int_0
+               OpBranch %69
+         %69 = OpLabel
+         %80 = OpLoad %int %i
+         %82 = OpIAdd %int %80 %int_1
+               OpStore %i %82
+               OpBranch %67
+         %68 = OpLabel
+               OpStore %p %83
+               OpStore %canwalk %true
+               OpStore %v %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %97 = OpLoad %int %v
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %v %98
+               OpStore %directions %int_0
+         %99 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %100 = OpLoad %int %99
+        %101 = OpSGreaterThan %bool %100 %int_0
+               OpStore %x_105_phi %101
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %104 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %105 = OpLoad %int %104
+        %106 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %107 = OpLoad %int %106
+        %109 = OpISub %int %105 %int_2
+        %111 = OpIMul %int %107 %int_16
+        %112 = OpIAdd %int %109 %111
+        %113 = OpAccessChain %_ptr_Private_int %map %112
+        %114 = OpLoad %int %113
+        %115 = OpIEqual %bool %114 %int_0
+               OpStore %x_104 %115
+        %116 = OpLoad %bool %x_104
+               OpStore %x_105_phi %116
+               OpBranch %102
+        %102 = OpLabel
+        %117 = OpLoad %bool %x_105_phi
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %120 = OpLoad %int %directions
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %directions %121
+               OpBranch %118
+        %118 = OpLabel
+        %122 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %123 = OpLoad %int %122
+        %124 = OpSGreaterThan %bool %123 %int_0
+               OpStore %x_125_phi %124
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %130 = OpLoad %int %129
+        %131 = OpISub %int %130 %int_2
+        %132 = OpIMul %int %131 %int_16
+        %133 = OpIAdd %int %128 %132
+        %134 = OpAccessChain %_ptr_Private_int %map %133
+        %135 = OpLoad %int %134
+        %136 = OpIEqual %bool %135 %int_0
+               OpStore %x_124 %136
+        %137 = OpLoad %bool %x_124
+               OpStore %x_125_phi %137
+               OpBranch %125
+        %125 = OpLabel
+        %138 = OpLoad %bool %x_125_phi
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %directions
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %directions %142
+               OpBranch %139
+        %139 = OpLabel
+        %143 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %144 = OpLoad %int %143
+        %146 = OpSLessThan %bool %144 %int_14
+               OpStore %x_145_phi %146
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %150 = OpLoad %int %149
+        %151 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %152 = OpLoad %int %151
+        %153 = OpIAdd %int %150 %int_2
+        %154 = OpIMul %int %152 %int_16
+        %155 = OpIAdd %int %153 %154
+        %156 = OpAccessChain %_ptr_Private_int %map %155
+        %157 = OpLoad %int %156
+        %158 = OpIEqual %bool %157 %int_0
+               OpStore %x_144 %158
+        %159 = OpLoad %bool %x_144
+               OpStore %x_145_phi %159
+               OpBranch %147
+        %147 = OpLabel
+        %160 = OpLoad %bool %x_145_phi
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %int %directions
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %directions %164
+               OpBranch %161
+        %161 = OpLabel
+        %165 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %166 = OpLoad %int %165
+        %167 = OpSLessThan %bool %166 %int_14
+               OpStore %x_165_phi %167
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %168
+        %169 = OpLabel
+        %170 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %171 = OpLoad %int %170
+        %172 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %173 = OpLoad %int %172
+        %174 = OpIAdd %int %173 %int_2
+        %175 = OpIMul %int %174 %int_16
+        %176 = OpIAdd %int %171 %175
+        %177 = OpAccessChain %_ptr_Private_int %map %176
+        %178 = OpLoad %int %177
+        %179 = OpIEqual %bool %178 %int_0
+               OpStore %x_164 %179
+        %180 = OpLoad %bool %x_164
+               OpStore %x_165_phi %180
+               OpBranch %168
+        %168 = OpLabel
+        %181 = OpLoad %bool %x_165_phi
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %directions
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %directions %185
+               OpBranch %182
+        %182 = OpLabel
+        %202 = OpLoad %int %directions
+        %203 = OpIEqual %bool %202 %int_0
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %205 = OpLabel
+               OpStore %canwalk %false
+               OpStore %i %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %i
+        %214 = OpSLessThan %bool %212 %int_8
+               OpSelectionMerge %215 None
+               OpBranchConditional %214 %216 %217
+        %216 = OpLabel
+               OpBranch %215
+        %217 = OpLabel
+               OpBranch %209
+        %215 = OpLabel
+               OpStore %j %int_0
+               OpBranch %218
+        %218 = OpLabel
+               OpLoopMerge %219 %220 None
+               OpBranch %221
+        %221 = OpLabel
+        %222 = OpLoad %int %j
+        %223 = OpSLessThan %bool %222 %int_8
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %226
+        %225 = OpLabel
+               OpBranch %224
+        %226 = OpLabel
+               OpBranch %219
+        %224 = OpLabel
+        %227 = OpLoad %int %j
+        %228 = OpLoad %int %i
+        %229 = OpIMul %int %227 %int_2
+        %230 = OpIMul %int %228 %int_2
+        %231 = OpIMul %int %230 %int_16
+        %232 = OpIAdd %int %229 %231
+        %233 = OpAccessChain %_ptr_Private_int %map %232
+        %234 = OpLoad %int %233
+        %235 = OpIEqual %bool %234 %int_0
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %236
+        %237 = OpLabel
+        %238 = OpLoad %int %j
+        %239 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %240 = OpIMul %int %238 %int_2
+               OpStore %239 %240
+        %241 = OpLoad %int %i
+        %242 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %243 = OpIMul %int %241 %int_2
+               OpStore %242 %243
+               OpStore %canwalk %true
+               OpBranch %236
+        %236 = OpLabel
+               OpBranch %220
+        %220 = OpLabel
+        %244 = OpLoad %int %j
+        %245 = OpIAdd %int %244 %int_1
+               OpStore %j %245
+               OpBranch %218
+        %219 = OpLabel
+               OpBranch %210
+        %210 = OpLabel
+        %246 = OpLoad %int %i
+        %247 = OpIAdd %int %246 %int_1
+               OpStore %i %247
+               OpBranch %208
+        %209 = OpLabel
+        %248 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %249 = OpLoad %int %248
+        %250 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %251 = OpLoad %int %250
+        %252 = OpIMul %int %251 %int_16
+        %253 = OpIAdd %int %249 %252
+        %254 = OpAccessChain %_ptr_Private_int %map %253
+               OpStore %254 %int_1
+               OpBranch %204
+        %206 = OpLabel
+        %255 = OpLoad %int %v
+        %256 = OpLoad %int %directions
+        %257 = OpSMod %int %255 %256
+               OpStore %d %257
+        %258 = OpLoad %int %directions
+        %259 = OpLoad %int %v
+        %260 = OpIAdd %int %259 %258
+               OpStore %v %260
+        %261 = OpLoad %int %d
+        %262 = OpSGreaterThanEqual %bool %261 %int_0
+               OpStore %x_230_phi %262
+               OpSelectionMerge %263 None
+               OpBranchConditional %262 %264 %263
+        %264 = OpLabel
+        %265 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %266 = OpLoad %int %265
+        %267 = OpSGreaterThan %bool %266 %int_0
+               OpStore %x_229 %267
+        %268 = OpLoad %bool %x_229
+               OpStore %x_230_phi %268
+               OpBranch %263
+        %263 = OpLabel
+        %269 = OpLoad %bool %x_230_phi
+               OpStore %x_243_phi %269
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %270
+        %271 = OpLabel
+        %272 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %273 = OpLoad %int %272
+        %274 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %275 = OpLoad %int %274
+        %276 = OpISub %int %273 %int_2
+        %277 = OpIMul %int %275 %int_16
+        %278 = OpIAdd %int %276 %277
+        %279 = OpAccessChain %_ptr_Private_int %map %278
+        %280 = OpLoad %int %279
+        %281 = OpIEqual %bool %280 %int_0
+               OpStore %x_242 %281
+        %282 = OpLoad %bool %x_242
+               OpStore %x_243_phi %282
+               OpBranch %270
+        %270 = OpLabel
+        %283 = OpLoad %bool %x_243_phi
+               OpSelectionMerge %284 None
+               OpBranchConditional %283 %285 %284
+        %285 = OpLabel
+        %286 = OpLoad %int %d
+        %287 = OpISub %int %286 %int_1
+               OpStore %d %287
+        %288 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %289 = OpLoad %int %288
+        %290 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %291 = OpLoad %int %290
+        %292 = OpIMul %int %291 %int_16
+        %293 = OpIAdd %int %289 %292
+        %294 = OpAccessChain %_ptr_Private_int %map %293
+               OpStore %294 %int_1
+        %295 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %296 = OpLoad %int %295
+        %297 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %298 = OpLoad %int %297
+        %299 = OpISub %int %296 %int_1
+        %300 = OpIMul %int %298 %int_16
+        %301 = OpIAdd %int %299 %300
+        %302 = OpAccessChain %_ptr_Private_int %map %301
+               OpStore %302 %int_1
+        %303 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %304 = OpLoad %int %303
+        %305 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %306 = OpLoad %int %305
+        %307 = OpISub %int %304 %int_2
+        %308 = OpIMul %int %306 %int_16
+        %309 = OpIAdd %int %307 %308
+        %310 = OpAccessChain %_ptr_Private_int %map %309
+               OpStore %310 %int_1
+        %311 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %312 = OpLoad %int %311
+        %313 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %314 = OpISub %int %312 %int_2
+               OpStore %313 %314
+               OpBranch %284
+        %284 = OpLabel
+        %315 = OpLoad %int %d
+        %316 = OpSGreaterThanEqual %bool %315 %int_0
+               OpStore %x_282_phi %316
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %317
+        %318 = OpLabel
+        %319 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %320 = OpLoad %int %319
+        %321 = OpSGreaterThan %bool %320 %int_0
+               OpStore %x_281 %321
+        %322 = OpLoad %bool %x_281
+               OpStore %x_282_phi %322
+               OpBranch %317
+        %317 = OpLabel
+        %323 = OpLoad %bool %x_282_phi
+               OpStore %x_296_phi %323
+               OpSelectionMerge %324 None
+               OpBranchConditional %323 %325 %324
+        %325 = OpLabel
+        %326 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %327 = OpLoad %int %326
+        %328 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %329 = OpLoad %int %328
+        %330 = OpLoad %_arr_int_uint_256 %map
+               OpStore %map %331
+               OpStore %map %330
+        %332 = OpISub %int %329 %int_2
+        %333 = OpIMul %int %332 %int_16
+        %334 = OpIAdd %int %327 %333
+        %335 = OpAccessChain %_ptr_Private_int %map %334
+        %336 = OpLoad %int %335
+        %337 = OpIEqual %bool %336 %int_0
+               OpStore %x_295 %337
+        %338 = OpLoad %bool %x_295
+               OpStore %x_296_phi %338
+               OpBranch %324
+        %324 = OpLabel
+        %339 = OpLoad %bool %x_296_phi
+               OpSelectionMerge %340 None
+               OpBranchConditional %339 %341 %340
+        %341 = OpLabel
+        %342 = OpLoad %int %d
+        %343 = OpISub %int %342 %int_1
+               OpStore %d %343
+        %344 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %345 = OpLoad %int %344
+        %346 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %347 = OpLoad %int %346
+        %348 = OpIMul %int %347 %int_16
+        %349 = OpIAdd %int %345 %348
+        %350 = OpAccessChain %_ptr_Private_int %map %349
+               OpStore %350 %int_1
+        %351 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %352 = OpLoad %int %351
+        %353 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %354 = OpLoad %int %353
+        %355 = OpISub %int %354 %int_1
+        %356 = OpIMul %int %355 %int_16
+        %357 = OpIAdd %int %352 %356
+        %358 = OpAccessChain %_ptr_Private_int %map %357
+               OpStore %358 %int_1
+        %359 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %360 = OpLoad %int %359
+        %361 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %362 = OpLoad %int %361
+        %363 = OpLoad %_arr_int_uint_256 %map
+               OpStore %map %331
+               OpStore %map %363
+        %364 = OpISub %int %362 %int_2
+        %365 = OpIMul %int %364 %int_16
+        %366 = OpIAdd %int %360 %365
+        %367 = OpAccessChain %_ptr_Private_int %map %366
+               OpStore %367 %int_1
+        %368 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %369 = OpLoad %int %368
+        %370 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %371 = OpISub %int %369 %int_2
+               OpStore %370 %371
+               OpBranch %340
+        %340 = OpLabel
+        %372 = OpLoad %int %d
+        %373 = OpSGreaterThanEqual %bool %372 %int_0
+               OpStore %x_336_phi %373
+               OpSelectionMerge %374 None
+               OpBranchConditional %373 %375 %374
+        %375 = OpLabel
+        %376 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %377 = OpLoad %int %376
+        %378 = OpSLessThan %bool %377 %int_14
+               OpStore %x_335 %378
+        %379 = OpLoad %bool %x_335
+               OpStore %x_336_phi %379
+               OpBranch %374
+        %374 = OpLabel
+        %380 = OpLoad %bool %x_336_phi
+               OpStore %x_349_phi %380
+               OpSelectionMerge %381 None
+               OpBranchConditional %380 %382 %381
+        %382 = OpLabel
+        %383 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %384 = OpLoad %int %383
+        %385 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %386 = OpLoad %int %385
+        %387 = OpIAdd %int %384 %int_2
+        %388 = OpIMul %int %386 %int_16
+        %389 = OpIAdd %int %387 %388
+        %390 = OpAccessChain %_ptr_Private_int %map %389
+        %391 = OpLoad %int %390
+        %392 = OpIEqual %bool %391 %int_0
+               OpStore %x_348 %392
+        %393 = OpLoad %bool %x_348
+               OpStore %x_349_phi %393
+               OpBranch %381
+        %381 = OpLabel
+        %394 = OpLoad %bool %x_349_phi
+               OpSelectionMerge %395 None
+               OpBranchConditional %394 %396 %395
+        %396 = OpLabel
+        %397 = OpLoad %int %d
+        %398 = OpISub %int %397 %int_1
+               OpStore %d %398
+        %399 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %400 = OpLoad %int %399
+        %401 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %402 = OpLoad %int %401
+        %403 = OpIMul %int %402 %int_16
+        %404 = OpIAdd %int %400 %403
+        %405 = OpAccessChain %_ptr_Private_int %map %404
+               OpStore %405 %int_1
+        %406 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %407 = OpLoad %int %406
+        %408 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %409 = OpLoad %int %408
+        %410 = OpIAdd %int %407 %int_1
+        %411 = OpIMul %int %409 %int_16
+        %412 = OpIAdd %int %410 %411
+        %413 = OpAccessChain %_ptr_Private_int %map %412
+               OpStore %413 %int_1
+        %414 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %415 = OpLoad %int %414
+        %416 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %417 = OpLoad %int %416
+        %418 = OpIAdd %int %415 %int_2
+        %419 = OpIMul %int %417 %int_16
+        %420 = OpIAdd %int %418 %419
+        %421 = OpAccessChain %_ptr_Private_int %map %420
+               OpStore %421 %int_1
+        %422 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %423 = OpLoad %int %422
+        %424 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %425 = OpIAdd %int %423 %int_2
+               OpStore %424 %425
+               OpBranch %395
+        %395 = OpLabel
+        %426 = OpLoad %int %d
+        %427 = OpSGreaterThanEqual %bool %426 %int_0
+               OpStore %x_388_phi %427
+               OpSelectionMerge %428 None
+               OpBranchConditional %427 %429 %428
+        %429 = OpLabel
+        %430 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %431 = OpLoad %int %430
+        %432 = OpSLessThan %bool %431 %int_14
+               OpStore %x_387 %432
+        %433 = OpLoad %bool %x_387
+               OpStore %x_388_phi %433
+               OpBranch %428
+        %428 = OpLabel
+        %434 = OpLoad %bool %x_388_phi
+               OpStore %x_401_phi %434
+               OpSelectionMerge %435 None
+               OpBranchConditional %434 %436 %435
+        %436 = OpLabel
+        %437 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %438 = OpLoad %int %437
+        %439 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %440 = OpLoad %int %439
+        %441 = OpIAdd %int %440 %int_2
+        %442 = OpIMul %int %441 %int_16
+        %443 = OpIAdd %int %438 %442
+        %444 = OpAccessChain %_ptr_Private_int %map %443
+        %445 = OpLoad %int %444
+        %446 = OpIEqual %bool %445 %int_0
+               OpStore %x_400 %446
+        %447 = OpLoad %bool %x_400
+               OpStore %x_401_phi %447
+               OpBranch %435
+        %435 = OpLabel
+        %448 = OpLoad %bool %x_401_phi
+               OpSelectionMerge %449 None
+               OpBranchConditional %448 %450 %449
+        %450 = OpLabel
+        %451 = OpLoad %int %d
+        %452 = OpISub %int %451 %int_1
+               OpStore %d %452
+        %453 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %454 = OpLoad %int %453
+        %455 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %456 = OpLoad %int %455
+        %457 = OpIMul %int %456 %int_16
+        %458 = OpIAdd %int %454 %457
+        %459 = OpAccessChain %_ptr_Private_int %map %458
+               OpStore %459 %int_1
+        %460 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %461 = OpLoad %int %460
+        %462 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %463 = OpLoad %int %462
+        %464 = OpIAdd %int %463 %int_1
+        %465 = OpIMul %int %464 %int_16
+        %466 = OpIAdd %int %461 %465
+        %467 = OpAccessChain %_ptr_Private_int %map %466
+               OpStore %467 %int_1
+        %468 = OpAccessChain %_ptr_Function_int %p %uint_0
+        %469 = OpLoad %int %468
+        %470 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %471 = OpLoad %int %470
+        %472 = OpIAdd %int %471 %int_2
+        %473 = OpIMul %int %472 %int_16
+        %474 = OpIAdd %int %469 %473
+        %475 = OpAccessChain %_ptr_Private_int %map %474
+               OpStore %475 %int_1
+        %476 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %477 = OpLoad %int %476
+        %478 = OpAccessChain %_ptr_Function_int %p %uint_1
+        %479 = OpIAdd %int %477 %int_2
+               OpStore %478 %479
+               OpBranch %449
+        %449 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+        %480 = OpAccessChain %_ptr_Function_int %ipos %uint_1
+        %481 = OpLoad %int %480
+        %482 = OpAccessChain %_ptr_Function_int %ipos %uint_0
+        %483 = OpLoad %int %482
+        %484 = OpIMul %int %481 %int_16
+        %485 = OpIAdd %int %484 %483
+        %486 = OpAccessChain %_ptr_Private_int %map %485
+        %487 = OpLoad %int %486
+        %488 = OpIEqual %bool %487 %int_1
+               OpSelectionMerge %489 None
+               OpBranchConditional %488 %490 %489
+        %490 = OpLabel
+               OpStore %x_GLF_color %492
+               OpReturn
+        %489 = OpLabel
+               OpBranch %87
+         %87 = OpLabel
+        %493 = OpLoad %bool %canwalk
+               OpSelectionMerge %494 None
+               OpBranchConditional %493 %495 %496
+        %495 = OpLabel
+               OpBranch %494
+        %496 = OpLabel
+               OpBranch %86
+        %494 = OpLabel
+               OpBranch %85
+         %86 = OpLabel
+               OpStore %x_GLF_color %498
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %499
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %503 = OpLabel
+        %504 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %504
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+        %506 = OpLabel
+        %507 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %507
+        %508 = OpFunctionCall %void %main_1
+        %510 = OpLoad %v4float %x_GLF_color
+        %511 = OpCompositeConstruct %main_out %510
+        %509 = OpFunctionCall %void %tint_symbol_3 %511
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 87[%87] is not post dominated by the back-edge block 494[%494]
+  %494 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.wgsl
new file mode 100644
index 0000000..774e546
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl.expected.wgsl
@@ -0,0 +1,354 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> map : array<i32, 256>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var ipos : vec2<i32>;
+  var i : i32;
+  var p : vec2<i32>;
+  var canwalk : bool;
+  var v : i32;
+  var directions : i32;
+  var j : i32;
+  var d : i32;
+  let x_59 : vec4<f32> = gl_FragCoord;
+  let x_62 : vec2<f32> = x_7.resolution;
+  pos = (vec2<f32>(x_59.x, x_59.y) / x_62);
+  let x_65 : f32 = pos.x;
+  let x_69 : f32 = pos.y;
+  ipos = vec2<i32>(i32((x_65 * 16.0)), i32((x_69 * 16.0)));
+  i = 0;
+  loop {
+    let x_77 : i32 = i;
+    if ((x_77 < 256)) {
+    } else {
+      break;
+    }
+    let x_80 : i32 = i;
+    map[x_80] = 0;
+
+    continuing {
+      let x_82 : i32 = i;
+      i = (x_82 + 1);
+    }
+  }
+  p = vec2<i32>(0, 0);
+  canwalk = true;
+  v = 0;
+  loop {
+    var x_104 : bool;
+    var x_124 : bool;
+    var x_144 : bool;
+    var x_164 : bool;
+    var x_105_phi : bool;
+    var x_125_phi : bool;
+    var x_145_phi : bool;
+    var x_165_phi : bool;
+    let x_88 : i32 = v;
+    v = (x_88 + 1);
+    directions = 0;
+    let x_91 : i32 = p.x;
+    let x_92 : bool = (x_91 > 0);
+    x_105_phi = x_92;
+    if (x_92) {
+      let x_96 : i32 = p.x;
+      let x_99 : i32 = p.y;
+      let x_103 : i32 = map[((x_96 - 2) + (x_99 * 16))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    let x_105 : bool = x_105_phi;
+    if (x_105) {
+      let x_108 : i32 = directions;
+      directions = (x_108 + 1);
+    }
+    let x_111 : i32 = p.y;
+    let x_112 : bool = (x_111 > 0);
+    x_125_phi = x_112;
+    if (x_112) {
+      let x_116 : i32 = p.x;
+      let x_118 : i32 = p.y;
+      let x_123 : i32 = map[(x_116 + ((x_118 - 2) * 16))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    let x_125 : bool = x_125_phi;
+    if (x_125) {
+      let x_128 : i32 = directions;
+      directions = (x_128 + 1);
+    }
+    let x_131 : i32 = p.x;
+    let x_132 : bool = (x_131 < 14);
+    x_145_phi = x_132;
+    if (x_132) {
+      let x_136 : i32 = p.x;
+      let x_139 : i32 = p.y;
+      let x_143 : i32 = map[((x_136 + 2) + (x_139 * 16))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    let x_145 : bool = x_145_phi;
+    if (x_145) {
+      let x_148 : i32 = directions;
+      directions = (x_148 + 1);
+    }
+    let x_151 : i32 = p.y;
+    let x_152 : bool = (x_151 < 14);
+    x_165_phi = x_152;
+    if (x_152) {
+      let x_156 : i32 = p.x;
+      let x_158 : i32 = p.y;
+      let x_163 : i32 = map[(x_156 + ((x_158 + 2) * 16))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    let x_165 : bool = x_165_phi;
+    if (x_165) {
+      let x_168 : i32 = directions;
+      directions = (x_168 + 1);
+    }
+    var x_229 : bool;
+    var x_242 : bool;
+    var x_281 : bool;
+    var x_295 : bool;
+    var x_335 : bool;
+    var x_348 : bool;
+    var x_387 : bool;
+    var x_400 : bool;
+    var x_230_phi : bool;
+    var x_243_phi : bool;
+    var x_282_phi : bool;
+    var x_296_phi : bool;
+    var x_336_phi : bool;
+    var x_349_phi : bool;
+    var x_388_phi : bool;
+    var x_401_phi : bool;
+    let x_170 : i32 = directions;
+    if ((x_170 == 0)) {
+      canwalk = false;
+      i = 0;
+      loop {
+        let x_179 : i32 = i;
+        if ((x_179 < 8)) {
+        } else {
+          break;
+        }
+        j = 0;
+        loop {
+          let x_186 : i32 = j;
+          if ((x_186 < 8)) {
+          } else {
+            break;
+          }
+          let x_189 : i32 = j;
+          let x_191 : i32 = i;
+          let x_196 : i32 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
+          if ((x_196 == 0)) {
+            let x_200 : i32 = j;
+            p.x = (x_200 * 2);
+            let x_203 : i32 = i;
+            p.y = (x_203 * 2);
+            canwalk = true;
+          }
+
+          continuing {
+            let x_206 : i32 = j;
+            j = (x_206 + 1);
+          }
+        }
+
+        continuing {
+          let x_208 : i32 = i;
+          i = (x_208 + 1);
+        }
+      }
+      let x_211 : i32 = p.x;
+      let x_213 : i32 = p.y;
+      map[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      let x_217 : i32 = v;
+      let x_218 : i32 = directions;
+      d = (x_217 % x_218);
+      let x_220 : i32 = directions;
+      let x_221 : i32 = v;
+      v = (x_221 + x_220);
+      let x_223 : i32 = d;
+      let x_224 : bool = (x_223 >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        let x_228 : i32 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      let x_230 : bool = x_230_phi;
+      x_243_phi = x_230;
+      if (x_230) {
+        let x_234 : i32 = p.x;
+        let x_237 : i32 = p.y;
+        let x_241 : i32 = map[((x_234 - 2) + (x_237 * 16))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      let x_243 : bool = x_243_phi;
+      if (x_243) {
+        let x_246 : i32 = d;
+        d = (x_246 - 1);
+        let x_249 : i32 = p.x;
+        let x_251 : i32 = p.y;
+        map[(x_249 + (x_251 * 16))] = 1;
+        let x_256 : i32 = p.x;
+        let x_259 : i32 = p.y;
+        map[((x_256 - 1) + (x_259 * 16))] = 1;
+        let x_264 : i32 = p.x;
+        let x_267 : i32 = p.y;
+        map[((x_264 - 2) + (x_267 * 16))] = 1;
+        let x_272 : i32 = p.x;
+        p.x = (x_272 - 2);
+      }
+      let x_275 : i32 = d;
+      let x_276 : bool = (x_275 >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        let x_280 : i32 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      let x_282 : bool = x_282_phi;
+      x_296_phi = x_282;
+      if (x_282) {
+        let x_286 : i32 = p.x;
+        let x_288 : i32 = p.y;
+        let x_291 : array<i32, 256> = map;
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        map = x_291;
+        let x_294 : i32 = map[(x_286 + ((x_288 - 2) * 16))];
+        x_295 = (x_294 == 0);
+        x_296_phi = x_295;
+      }
+      let x_296 : bool = x_296_phi;
+      if (x_296) {
+        let x_299 : i32 = d;
+        d = (x_299 - 1);
+        let x_302 : i32 = p.x;
+        let x_304 : i32 = p.y;
+        map[(x_302 + (x_304 * 16))] = 1;
+        let x_309 : i32 = p.x;
+        let x_311 : i32 = p.y;
+        map[(x_309 + ((x_311 - 1) * 16))] = 1;
+        let x_317 : i32 = p.x;
+        let x_319 : i32 = p.y;
+        let x_321 : array<i32, 256> = map;
+        map = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+        map = x_321;
+        map[(x_317 + ((x_319 - 2) * 16))] = 1;
+        let x_326 : i32 = p.y;
+        p.y = (x_326 - 2);
+      }
+      let x_329 : i32 = d;
+      let x_330 : bool = (x_329 >= 0);
+      x_336_phi = x_330;
+      if (x_330) {
+        let x_334 : i32 = p.x;
+        x_335 = (x_334 < 14);
+        x_336_phi = x_335;
+      }
+      let x_336 : bool = x_336_phi;
+      x_349_phi = x_336;
+      if (x_336) {
+        let x_340 : i32 = p.x;
+        let x_343 : i32 = p.y;
+        let x_347 : i32 = map[((x_340 + 2) + (x_343 * 16))];
+        x_348 = (x_347 == 0);
+        x_349_phi = x_348;
+      }
+      let x_349 : bool = x_349_phi;
+      if (x_349) {
+        let x_352 : i32 = d;
+        d = (x_352 - 1);
+        let x_355 : i32 = p.x;
+        let x_357 : i32 = p.y;
+        map[(x_355 + (x_357 * 16))] = 1;
+        let x_362 : i32 = p.x;
+        let x_365 : i32 = p.y;
+        map[((x_362 + 1) + (x_365 * 16))] = 1;
+        let x_370 : i32 = p.x;
+        let x_373 : i32 = p.y;
+        map[((x_370 + 2) + (x_373 * 16))] = 1;
+        let x_378 : i32 = p.x;
+        p.x = (x_378 + 2);
+      }
+      let x_381 : i32 = d;
+      let x_382 : bool = (x_381 >= 0);
+      x_388_phi = x_382;
+      if (x_382) {
+        let x_386 : i32 = p.y;
+        x_387 = (x_386 < 14);
+        x_388_phi = x_387;
+      }
+      let x_388 : bool = x_388_phi;
+      x_401_phi = x_388;
+      if (x_388) {
+        let x_392 : i32 = p.x;
+        let x_394 : i32 = p.y;
+        let x_399 : i32 = map[(x_392 + ((x_394 + 2) * 16))];
+        x_400 = (x_399 == 0);
+        x_401_phi = x_400;
+      }
+      let x_401 : bool = x_401_phi;
+      if (x_401) {
+        let x_404 : i32 = d;
+        d = (x_404 - 1);
+        let x_407 : i32 = p.x;
+        let x_409 : i32 = p.y;
+        map[(x_407 + (x_409 * 16))] = 1;
+        let x_414 : i32 = p.x;
+        let x_416 : i32 = p.y;
+        map[(x_414 + ((x_416 + 1) * 16))] = 1;
+        let x_422 : i32 = p.x;
+        let x_424 : i32 = p.y;
+        map[(x_422 + ((x_424 + 2) * 16))] = 1;
+        let x_430 : i32 = p.y;
+        p.y = (x_430 + 2);
+      }
+    }
+    let x_434 : i32 = ipos.y;
+    let x_437 : i32 = ipos.x;
+    let x_440 : i32 = map[((x_434 * 16) + x_437)];
+    if ((x_440 == 1)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      return;
+    }
+
+    continuing {
+      let x_444 : bool = canwalk;
+      if (x_444) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm
new file mode 100644
index 0000000..3e57abd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm
@@ -0,0 +1,386 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+%float_0_100000001 = OpConstant %float 0.100000001
+    %int_0_0 = OpConstant %int 0
+         %57 = OpConstantComposite %_arr_int_uint_10 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0
+       %main = OpFunction %void None %10
+         %58 = OpLabel
+       %temp = OpVariable %_ptr_Function__arr_int_uint_10 Function
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %60 = OpLoad %float %59
+         %61 = OpConvertFToS %int %60
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpPhi %int %61 %58 %64 %65
+               OpLoopMerge %66 %65 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %_arr_int_uint_10 %data
+               OpStore %data %57
+               OpStore %data %68
+         %69 = OpIAdd %int %63 %int_1
+               OpSelectionMerge %70 None
+               OpSwitch %63 %70 0 %71 1 %72 2 %73 3 %74 4 %75 5 %76 6 %77 7 %78 8 %79 9 %80
+         %71 = OpLabel
+         %81 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %81 %int_4
+         %82 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %72 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %83 %int_3
+         %84 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %73 = OpLabel
+         %85 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %85 %int_2
+         %86 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %74 = OpLabel
+         %87 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %87 %int_1
+         %88 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %75 = OpLabel
+         %89 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %89 %int_0
+         %90 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %76 = OpLabel
+         %91 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %91 %int_n1
+         %92 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %77 = OpLabel
+         %93 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %93 %int_n2
+         %94 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %78 = OpLabel
+         %95 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %95 %int_n3
+         %96 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %79 = OpLabel
+         %97 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %97 %int_n4
+         %98 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %80 = OpLabel
+         %99 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %99 %int_n5
+        %100 = OpIAdd %int %63 %int_1
+               OpBranch %70
+         %70 = OpLabel
+         %64 = OpPhi %int %69 %67 %82 %71 %84 %72 %86 %73 %88 %74 %90 %75 %92 %76 %94 %77 %96 %78 %98 %79 %100 %80
+               OpBranch %65
+         %65 = OpLabel
+        %101 = OpSLessThan %bool %64 %int_10
+               OpBranchConditional %101 %62 %66
+         %66 = OpLabel
+               OpBranch %102
+        %102 = OpLabel
+        %103 = OpPhi %int %int_0 %66 %104 %105
+        %106 = OpSLessThan %bool %103 %int_10
+               OpLoopMerge %107 %105 None
+               OpBranchConditional %106 %105 %107
+        %105 = OpLabel
+        %108 = OpAccessChain %_ptr_Function_int %data %103
+        %109 = OpLoad %int %108
+        %110 = OpAccessChain %_ptr_Function_int %temp %103
+               OpStore %110 %109
+        %104 = OpIAdd %int %103 %int_1
+               OpBranch %102
+        %107 = OpLabel
+               OpBranch %111
+        %111 = OpLabel
+        %112 = OpPhi %int %int_1 %107 %113 %114
+        %115 = OpSLessThanEqual %bool %112 %int_9
+               OpLoopMerge %116 %114 None
+               OpBranchConditional %115 %117 %116
+        %117 = OpLabel
+               OpBranch %118
+        %118 = OpLabel
+        %119 = OpPhi %int %int_0 %117 %120 %121
+        %122 = OpSLessThan %bool %119 %int_9
+               OpLoopMerge %123 %121 None
+               OpBranchConditional %122 %124 %123
+        %124 = OpLabel
+        %125 = OpIAdd %int %119 %112
+        %126 = OpISub %int %125 %int_1
+        %127 = OpIMul %int %int_2 %112
+        %120 = OpIAdd %int %119 %127
+        %128 = OpISub %int %120 %int_1
+        %129 = OpExtInst %int %1 SMin %128 %int_9
+               OpBranch %130
+        %130 = OpLabel
+        %131 = OpPhi %int %119 %124 %132 %133
+        %134 = OpPhi %int %125 %124 %135 %133
+        %136 = OpPhi %int %119 %124 %137 %133
+        %138 = OpSLessThanEqual %bool %136 %126
+        %139 = OpSLessThanEqual %bool %134 %129
+        %140 = OpLogicalAnd %bool %138 %139
+               OpLoopMerge %141 %133 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+        %143 = OpAccessChain %_ptr_Function_int %data %136
+        %144 = OpLoad %int %143
+        %145 = OpAccessChain %_ptr_Function_int %data %134
+        %146 = OpLoad %int %145
+        %147 = OpSLessThan %bool %144 %146
+        %132 = OpIAdd %int %131 %int_1
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %150
+        %149 = OpLabel
+        %151 = OpIAdd %int %136 %int_1
+        %152 = OpLoad %int %143
+        %153 = OpAccessChain %_ptr_Function_int %temp %131
+               OpStore %153 %152
+               OpBranch %148
+        %150 = OpLabel
+        %154 = OpIAdd %int %134 %int_1
+        %155 = OpLoad %int %145
+        %156 = OpAccessChain %_ptr_Function_int %temp %131
+               OpStore %156 %155
+               OpBranch %148
+        %148 = OpLabel
+        %135 = OpPhi %int %134 %149 %154 %150
+        %137 = OpPhi %int %151 %149 %136 %150
+               OpBranch %133
+        %133 = OpLabel
+               OpBranch %130
+        %141 = OpLabel
+               OpBranch %157
+        %157 = OpLabel
+        %158 = OpPhi %int %131 %141 %159 %160
+        %161 = OpPhi %int %136 %141 %162 %160
+        %163 = OpSLessThan %bool %161 %int_10
+        %164 = OpSLessThanEqual %bool %161 %126
+        %165 = OpLogicalAnd %bool %163 %164
+               OpLoopMerge %166 %160 None
+               OpBranchConditional %165 %160 %166
+        %160 = OpLabel
+        %159 = OpIAdd %int %158 %int_1
+        %162 = OpIAdd %int %161 %int_1
+        %167 = OpAccessChain %_ptr_Function_int %data %161
+        %168 = OpLoad %int %167
+        %169 = OpAccessChain %_ptr_Function_int %temp %158
+               OpStore %169 %168
+               OpBranch %157
+        %166 = OpLabel
+               OpBranch %170
+        %170 = OpLabel
+        %171 = OpPhi %int %119 %166 %172 %173
+        %174 = OpSLessThanEqual %bool %171 %129
+               OpLoopMerge %175 %173 None
+               OpBranchConditional %174 %173 %175
+        %173 = OpLabel
+        %176 = OpAccessChain %_ptr_Function_int %temp %171
+        %177 = OpLoad %int %176
+        %178 = OpAccessChain %_ptr_Function_int %data %171
+               OpStore %178 %177
+        %172 = OpIAdd %int %171 %int_1
+               OpBranch %170
+        %175 = OpLabel
+               OpBranch %121
+        %121 = OpLabel
+               OpBranch %118
+        %123 = OpLabel
+               OpBranch %114
+        %114 = OpLabel
+        %113 = OpIMul %int %int_2 %112
+               OpBranch %111
+        %116 = OpLabel
+        %179 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %180 = OpLoad %float %179
+        %181 = OpConvertFToS %int %180
+        %182 = OpSLessThan %bool %181 %int_30
+               OpSelectionMerge %183 None
+               OpBranchConditional %182 %184 %185
+        %184 = OpLabel
+        %186 = OpAccessChain %_ptr_Function_int %data %int_0
+        %187 = OpLoad %int %186
+        %188 = OpConvertSToF %float %187
+        %189 = OpFMul %float %188 %float_0_100000001
+        %190 = OpFAdd %float %float_0_5 %189
+               OpBranch %183
+        %185 = OpLabel
+        %191 = OpSLessThan %bool %181 %int_60
+               OpSelectionMerge %192 None
+               OpBranchConditional %191 %193 %194
+        %193 = OpLabel
+        %195 = OpAccessChain %_ptr_Function_int %data %int_1
+        %196 = OpLoad %int %195
+        %197 = OpConvertSToF %float %196
+        %198 = OpFMul %float %197 %float_0_100000001
+        %199 = OpFAdd %float %float_0_5 %198
+               OpBranch %192
+        %194 = OpLabel
+        %200 = OpSLessThan %bool %181 %int_90
+               OpSelectionMerge %201 None
+               OpBranchConditional %200 %202 %203
+        %202 = OpLabel
+        %204 = OpAccessChain %_ptr_Function_int %data %int_2
+        %205 = OpLoad %int %204
+        %206 = OpConvertSToF %float %205
+        %207 = OpFMul %float %206 %float_0_100000001
+        %208 = OpFAdd %float %float_0_5 %207
+               OpBranch %201
+        %203 = OpLabel
+        %209 = OpSLessThan %bool %181 %int_120
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %212
+        %211 = OpLabel
+        %213 = OpAccessChain %_ptr_Function_int %data %int_3
+        %214 = OpLoad %int %213
+        %215 = OpConvertSToF %float %214
+        %216 = OpFMul %float %215 %float_0_100000001
+        %217 = OpFAdd %float %float_0_5 %216
+               OpBranch %210
+        %212 = OpLabel
+        %218 = OpSLessThan %bool %181 %int_150
+               OpSelectionMerge %219 None
+               OpBranchConditional %218 %220 %221
+        %220 = OpLabel
+               OpKill
+        %221 = OpLabel
+        %222 = OpSLessThan %bool %181 %int_180
+               OpSelectionMerge %223 None
+               OpBranchConditional %222 %224 %225
+        %224 = OpLabel
+        %226 = OpAccessChain %_ptr_Function_int %data %int_5
+        %227 = OpLoad %int %226
+        %228 = OpConvertSToF %float %227
+        %229 = OpFMul %float %228 %float_0_100000001
+        %230 = OpFAdd %float %float_0_5 %229
+               OpBranch %223
+        %225 = OpLabel
+        %231 = OpSLessThan %bool %181 %int_210
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %234
+        %233 = OpLabel
+        %235 = OpAccessChain %_ptr_Function_int %data %int_6
+        %236 = OpLoad %int %235
+        %237 = OpConvertSToF %float %236
+        %238 = OpFMul %float %237 %float_0_100000001
+        %239 = OpFAdd %float %float_0_5 %238
+               OpBranch %232
+        %234 = OpLabel
+        %240 = OpSLessThan %bool %181 %int_240
+               OpSelectionMerge %241 None
+               OpBranchConditional %240 %242 %243
+        %242 = OpLabel
+        %244 = OpAccessChain %_ptr_Function_int %data %int_7
+        %245 = OpLoad %int %244
+        %246 = OpConvertSToF %float %245
+        %247 = OpFMul %float %246 %float_0_100000001
+        %248 = OpFAdd %float %float_0_5 %247
+               OpBranch %241
+        %243 = OpLabel
+        %249 = OpSLessThan %bool %181 %int_270
+               OpSelectionMerge %250 None
+               OpBranchConditional %249 %250 %251
+        %250 = OpLabel
+        %252 = OpAccessChain %_ptr_Function_int %data %int_8
+        %253 = OpLoad %int %252
+        %254 = OpConvertSToF %float %253
+        %255 = OpFMul %float %254 %float_0_100000001
+        %256 = OpFAdd %float %float_0_5 %255
+               OpBranch %241
+        %251 = OpLabel
+               OpKill
+        %241 = OpLabel
+        %257 = OpPhi %float %248 %242 %256 %250
+               OpBranch %232
+        %232 = OpLabel
+        %258 = OpPhi %float %239 %233 %257 %241
+               OpBranch %223
+        %223 = OpLabel
+        %259 = OpPhi %float %230 %224 %258 %232
+               OpBranch %219
+        %219 = OpLabel
+               OpBranch %210
+        %210 = OpLabel
+        %260 = OpPhi %float %217 %211 %259 %219
+               OpBranch %201
+        %201 = OpLabel
+        %261 = OpPhi %float %208 %202 %260 %210
+               OpBranch %192
+        %192 = OpLabel
+        %262 = OpPhi %float %199 %193 %261 %201
+               OpBranch %183
+        %183 = OpLabel
+        %263 = OpPhi %float %190 %184 %262 %192
+        %264 = OpCompositeConstruct %v4float %263 %263 %263 %float_1
+               OpStore %_GLF_color %264
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..975a0e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.hlsl
@@ -0,0 +1,356 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+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() {
+  int temp[10] = (int[10])0;
+  int data[10] = (int[10])0;
+  float x_190 = 0.0f;
+  float x_262 = 0.0f;
+  int x_63_phi = 0;
+  int x_103_phi = 0;
+  int x_112_phi = 0;
+  float x_263_phi = 0.0f;
+  const float x_60 = asfloat(x_8[0].x);
+  const int x_61 = int(x_60);
+  x_63_phi = x_61;
+  while (true) {
+    int x_100 = 0;
+    int x_98 = 0;
+    int x_96 = 0;
+    int x_94 = 0;
+    int x_92 = 0;
+    int x_90 = 0;
+    int x_88 = 0;
+    int x_86 = 0;
+    int x_84 = 0;
+    int x_82 = 0;
+    int x_64_phi = 0;
+    const int x_63 = x_63_phi;
+    const int x_68[10] = data;
+    const int tint_symbol_5[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    data = tint_symbol_5;
+    data = x_68;
+    const int x_69 = (x_63 + 1);
+    x_64_phi = x_69;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_100 = (x_63 + 1);
+        x_64_phi = x_100;
+        break;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_98 = (x_63 + 1);
+        x_64_phi = x_98;
+        break;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_96 = (x_63 + 1);
+        x_64_phi = x_96;
+        break;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_94 = (x_63 + 1);
+        x_64_phi = x_94;
+        break;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_92 = (x_63 + 1);
+        x_64_phi = x_92;
+        break;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_90 = (x_63 + 1);
+        x_64_phi = x_90;
+        break;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_88 = (x_63 + 1);
+        x_64_phi = x_88;
+        break;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_86 = (x_63 + 1);
+        x_64_phi = x_86;
+        break;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_84 = (x_63 + 1);
+        x_64_phi = x_84;
+        break;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_82 = (x_63 + 1);
+        x_64_phi = x_82;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    const int x_64 = x_64_phi;
+    {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_103_phi = 0;
+  while (true) {
+    int x_104 = 0;
+    const int x_103 = x_103_phi;
+    if ((x_103 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const int x_109 = data[x_103];
+      temp[x_103] = x_109;
+      x_104 = (x_103 + 1);
+      x_103_phi = x_104;
+    }
+  }
+  x_112_phi = 1;
+  while (true) {
+    int x_113 = 0;
+    int x_119_phi = 0;
+    const int x_112 = x_112_phi;
+    if ((x_112 <= 9)) {
+    } else {
+      break;
+    }
+    x_119_phi = 0;
+    while (true) {
+      int x_131 = 0;
+      int x_136 = 0;
+      int x_131_phi = 0;
+      int x_134_phi = 0;
+      int x_136_phi = 0;
+      int x_158_phi = 0;
+      int x_161_phi = 0;
+      int x_171_phi = 0;
+      const int x_119 = x_119_phi;
+      if ((x_119 < 9)) {
+      } else {
+        break;
+      }
+      const int x_125 = (x_119 + x_112);
+      const int x_126 = (x_125 - 1);
+      const int x_120 = (x_119 + (2 * x_112));
+      const int x_129 = min((x_120 - 1), 9);
+      x_131_phi = x_119;
+      x_134_phi = x_125;
+      x_136_phi = x_119;
+      while (true) {
+        int x_151 = 0;
+        int x_154 = 0;
+        int x_135_phi = 0;
+        int x_137_phi = 0;
+        x_131 = x_131_phi;
+        const int x_134 = x_134_phi;
+        x_136 = x_136_phi;
+        bool tint_tmp = (x_136 <= x_126);
+        if (tint_tmp) {
+          tint_tmp = (x_134 <= x_129);
+        }
+        if ((tint_tmp)) {
+        } else {
+          break;
+        }
+        const int x_143_save = x_136;
+        const int x_144 = data[x_143_save];
+        const int x_145_save = x_134;
+        const int x_146 = data[x_145_save];
+        const int x_132 = asint((x_131 + asint(1)));
+        if ((x_144 < x_146)) {
+          x_151 = asint((x_136 + asint(1)));
+          const int x_152 = data[x_143_save];
+          temp[x_131] = x_152;
+          x_135_phi = x_134;
+          x_137_phi = x_151;
+        } else {
+          x_154 = (x_134 + 1);
+          const int x_155 = data[x_145_save];
+          temp[x_131] = x_155;
+          x_135_phi = x_154;
+          x_137_phi = x_136;
+        }
+        const int x_135 = x_135_phi;
+        const int x_137 = x_137_phi;
+        {
+          x_131_phi = x_132;
+          x_134_phi = x_135;
+          x_136_phi = x_137;
+        }
+      }
+      x_158_phi = x_131;
+      x_161_phi = x_136;
+      while (true) {
+        int x_159 = 0;
+        int x_162 = 0;
+        const int x_158 = x_158_phi;
+        const int x_161 = x_161_phi;
+        bool tint_tmp_1 = (x_161 < 10);
+        if (tint_tmp_1) {
+          tint_tmp_1 = (x_161 <= x_126);
+        }
+        if ((tint_tmp_1)) {
+        } else {
+          break;
+        }
+        {
+          x_159 = (x_158 + 1);
+          x_162 = (x_161 + 1);
+          const int x_168 = data[x_161];
+          temp[x_158] = x_168;
+          x_158_phi = x_159;
+          x_161_phi = x_162;
+        }
+      }
+      x_171_phi = x_119;
+      while (true) {
+        int x_172 = 0;
+        const int x_171 = x_171_phi;
+        if ((x_171 <= x_129)) {
+        } else {
+          break;
+        }
+        {
+          const int x_177 = temp[x_171];
+          data[x_171] = x_177;
+          x_172 = (x_171 + 1);
+          x_171_phi = x_172;
+        }
+      }
+      {
+        x_119_phi = x_120;
+      }
+    }
+    {
+      x_113 = (2 * x_112);
+      x_112_phi = x_113;
+    }
+  }
+  int x_181 = 0;
+  float x_199 = 0.0f;
+  float x_261 = 0.0f;
+  float x_262_phi = 0.0f;
+  const float x_180 = gl_FragCoord.y;
+  x_181 = int(x_180);
+  if ((x_181 < 30)) {
+    const int x_187 = data[0];
+    x_190 = (0.5f + (float(x_187) * 0.100000001f));
+    x_263_phi = x_190;
+  } else {
+    float x_208 = 0.0f;
+    float x_260 = 0.0f;
+    float x_261_phi = 0.0f;
+    if ((x_181 < 60)) {
+      const int x_196 = data[1];
+      x_199 = (0.5f + (float(x_196) * 0.100000001f));
+      x_262_phi = x_199;
+    } else {
+      float x_217 = 0.0f;
+      float x_259 = 0.0f;
+      float x_260_phi = 0.0f;
+      if ((x_181 < 90)) {
+        const int x_205 = data[2];
+        x_208 = (0.5f + (float(x_205) * 0.100000001f));
+        x_261_phi = x_208;
+      } else {
+        if ((x_181 < 120)) {
+          const int x_214 = data[3];
+          x_217 = (0.5f + (float(x_214) * 0.100000001f));
+          x_260_phi = x_217;
+        } else {
+          float x_230 = 0.0f;
+          float x_258 = 0.0f;
+          float x_259_phi = 0.0f;
+          if ((x_181 < 150)) {
+            discard;
+          } else {
+            float x_239 = 0.0f;
+            float x_257 = 0.0f;
+            float x_258_phi = 0.0f;
+            if ((x_181 < 180)) {
+              const int x_227 = data[5];
+              x_230 = (0.5f + (float(x_227) * 0.100000001f));
+              x_259_phi = x_230;
+            } else {
+              float x_248 = 0.0f;
+              float x_256 = 0.0f;
+              float x_257_phi = 0.0f;
+              if ((x_181 < 210)) {
+                const int x_236 = data[6];
+                x_239 = (0.5f + (float(x_236) * 0.100000001f));
+                x_258_phi = x_239;
+              } else {
+                if ((x_181 < 240)) {
+                  const int x_245 = data[7];
+                  x_248 = (0.5f + (float(x_245) * 0.100000001f));
+                  x_257_phi = x_248;
+                } else {
+                  if ((x_181 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  const int x_253 = data[8];
+                  x_256 = (0.5f + (float(x_253) * 0.100000001f));
+                  x_257_phi = x_256;
+                }
+                x_257 = x_257_phi;
+                x_258_phi = x_257;
+              }
+              x_258 = x_258_phi;
+              x_259_phi = x_258;
+            }
+            x_259 = x_259_phi;
+          }
+          x_260_phi = x_259;
+        }
+        x_260 = x_260_phi;
+        x_261_phi = x_260;
+      }
+      x_261 = x_261_phi;
+      x_262_phi = x_261;
+    }
+    x_262 = x_262_phi;
+    x_263_phi = x_262;
+  }
+  const float x_263 = x_263_phi;
+  x_GLF_color = float4(x_263, x_263, x_263, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.msl
new file mode 100644
index 0000000..e8a7ca8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.msl
@@ -0,0 +1,350 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper temp = {};
+  tint_array_wrapper data = {};
+  float x_190 = 0.0f;
+  float x_262 = 0.0f;
+  int x_63_phi = 0;
+  int x_103_phi = 0;
+  int x_112_phi = 0;
+  float x_263_phi = 0.0f;
+  float const x_60 = x_8.injectionSwitch.x;
+  int const x_61 = int(x_60);
+  x_63_phi = x_61;
+  while (true) {
+    int x_100 = 0;
+    int x_98 = 0;
+    int x_96 = 0;
+    int x_94 = 0;
+    int x_92 = 0;
+    int x_90 = 0;
+    int x_88 = 0;
+    int x_86 = 0;
+    int x_84 = 0;
+    int x_82 = 0;
+    int x_64_phi = 0;
+    int const x_63 = x_63_phi;
+    tint_array_wrapper const x_68 = data;
+    tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    data = tint_symbol_4;
+    data = x_68;
+    int const x_69 = (x_63 + 1);
+    x_64_phi = x_69;
+    switch(x_63) {
+      case 9: {
+        data.arr[x_63] = -5;
+        x_100 = (x_63 + 1);
+        x_64_phi = x_100;
+        break;
+      }
+      case 8: {
+        data.arr[x_63] = -4;
+        x_98 = (x_63 + 1);
+        x_64_phi = x_98;
+        break;
+      }
+      case 7: {
+        data.arr[x_63] = -3;
+        x_96 = (x_63 + 1);
+        x_64_phi = x_96;
+        break;
+      }
+      case 6: {
+        data.arr[x_63] = -2;
+        x_94 = (x_63 + 1);
+        x_64_phi = x_94;
+        break;
+      }
+      case 5: {
+        data.arr[x_63] = -1;
+        x_92 = (x_63 + 1);
+        x_64_phi = x_92;
+        break;
+      }
+      case 4: {
+        data.arr[x_63] = 0;
+        x_90 = (x_63 + 1);
+        x_64_phi = x_90;
+        break;
+      }
+      case 3: {
+        data.arr[x_63] = 1;
+        x_88 = (x_63 + 1);
+        x_64_phi = x_88;
+        break;
+      }
+      case 2: {
+        data.arr[x_63] = 2;
+        x_86 = (x_63 + 1);
+        x_64_phi = x_86;
+        break;
+      }
+      case 1: {
+        data.arr[x_63] = 3;
+        x_84 = (x_63 + 1);
+        x_64_phi = x_84;
+        break;
+      }
+      case 0: {
+        data.arr[x_63] = 4;
+        x_82 = (x_63 + 1);
+        x_64_phi = x_82;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_64 = x_64_phi;
+    {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_103_phi = 0;
+  while (true) {
+    int x_104 = 0;
+    int const x_103 = x_103_phi;
+    if ((x_103 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_109 = data.arr[x_103];
+      temp.arr[x_103] = x_109;
+      x_104 = (x_103 + 1);
+      x_103_phi = x_104;
+    }
+  }
+  x_112_phi = 1;
+  while (true) {
+    int x_113 = 0;
+    int x_119_phi = 0;
+    int const x_112 = x_112_phi;
+    if ((x_112 <= 9)) {
+    } else {
+      break;
+    }
+    x_119_phi = 0;
+    while (true) {
+      int x_131 = 0;
+      int x_136 = 0;
+      int x_131_phi = 0;
+      int x_134_phi = 0;
+      int x_136_phi = 0;
+      int x_158_phi = 0;
+      int x_161_phi = 0;
+      int x_171_phi = 0;
+      int const x_119 = x_119_phi;
+      if ((x_119 < 9)) {
+      } else {
+        break;
+      }
+      int const x_125 = (x_119 + x_112);
+      int const x_126 = (x_125 - 1);
+      int const x_120 = (x_119 + (2 * x_112));
+      int const x_129 = min((x_120 - 1), 9);
+      x_131_phi = x_119;
+      x_134_phi = x_125;
+      x_136_phi = x_119;
+      while (true) {
+        int x_151 = 0;
+        int x_154 = 0;
+        int x_135_phi = 0;
+        int x_137_phi = 0;
+        x_131 = x_131_phi;
+        int const x_134 = x_134_phi;
+        x_136 = x_136_phi;
+        if (((x_136 <= x_126) && (x_134 <= x_129))) {
+        } else {
+          break;
+        }
+        int const x_143_save = x_136;
+        int const x_144 = data.arr[x_143_save];
+        int const x_145_save = x_134;
+        int const x_146 = data.arr[x_145_save];
+        int const x_132 = as_type<int>((x_131 + as_type<int>(1)));
+        if ((x_144 < x_146)) {
+          x_151 = as_type<int>((x_136 + as_type<int>(1)));
+          int const x_152 = data.arr[x_143_save];
+          temp.arr[x_131] = x_152;
+          x_135_phi = x_134;
+          x_137_phi = x_151;
+        } else {
+          x_154 = (x_134 + 1);
+          int const x_155 = data.arr[x_145_save];
+          temp.arr[x_131] = x_155;
+          x_135_phi = x_154;
+          x_137_phi = x_136;
+        }
+        int const x_135 = x_135_phi;
+        int const x_137 = x_137_phi;
+        {
+          x_131_phi = x_132;
+          x_134_phi = x_135;
+          x_136_phi = x_137;
+        }
+      }
+      x_158_phi = x_131;
+      x_161_phi = x_136;
+      while (true) {
+        int x_159 = 0;
+        int x_162 = 0;
+        int const x_158 = x_158_phi;
+        int const x_161 = x_161_phi;
+        if (((x_161 < 10) && (x_161 <= x_126))) {
+        } else {
+          break;
+        }
+        {
+          x_159 = (x_158 + 1);
+          x_162 = (x_161 + 1);
+          int const x_168 = data.arr[x_161];
+          temp.arr[x_158] = x_168;
+          x_158_phi = x_159;
+          x_161_phi = x_162;
+        }
+      }
+      x_171_phi = x_119;
+      while (true) {
+        int x_172 = 0;
+        int const x_171 = x_171_phi;
+        if ((x_171 <= x_129)) {
+        } else {
+          break;
+        }
+        {
+          int const x_177 = temp.arr[x_171];
+          data.arr[x_171] = x_177;
+          x_172 = (x_171 + 1);
+          x_171_phi = x_172;
+        }
+      }
+      {
+        x_119_phi = x_120;
+      }
+    }
+    {
+      x_113 = (2 * x_112);
+      x_112_phi = x_113;
+    }
+  }
+  int x_181 = 0;
+  float x_199 = 0.0f;
+  float x_261 = 0.0f;
+  float x_262_phi = 0.0f;
+  float const x_180 = (*(tint_symbol_6)).y;
+  x_181 = int(x_180);
+  if ((x_181 < 30)) {
+    int const x_187 = data.arr[0];
+    x_190 = (0.5f + (float(x_187) * 0.100000001f));
+    x_263_phi = x_190;
+  } else {
+    float x_208 = 0.0f;
+    float x_260 = 0.0f;
+    float x_261_phi = 0.0f;
+    if ((x_181 < 60)) {
+      int const x_196 = data.arr[1];
+      x_199 = (0.5f + (float(x_196) * 0.100000001f));
+      x_262_phi = x_199;
+    } else {
+      float x_217 = 0.0f;
+      float x_259 = 0.0f;
+      float x_260_phi = 0.0f;
+      if ((x_181 < 90)) {
+        int const x_205 = data.arr[2];
+        x_208 = (0.5f + (float(x_205) * 0.100000001f));
+        x_261_phi = x_208;
+      } else {
+        if ((x_181 < 120)) {
+          int const x_214 = data.arr[3];
+          x_217 = (0.5f + (float(x_214) * 0.100000001f));
+          x_260_phi = x_217;
+        } else {
+          float x_230 = 0.0f;
+          float x_258 = 0.0f;
+          float x_259_phi = 0.0f;
+          if ((x_181 < 150)) {
+            discard_fragment();
+          } else {
+            float x_239 = 0.0f;
+            float x_257 = 0.0f;
+            float x_258_phi = 0.0f;
+            if ((x_181 < 180)) {
+              int const x_227 = data.arr[5];
+              x_230 = (0.5f + (float(x_227) * 0.100000001f));
+              x_259_phi = x_230;
+            } else {
+              float x_248 = 0.0f;
+              float x_256 = 0.0f;
+              float x_257_phi = 0.0f;
+              if ((x_181 < 210)) {
+                int const x_236 = data.arr[6];
+                x_239 = (0.5f + (float(x_236) * 0.100000001f));
+                x_258_phi = x_239;
+              } else {
+                if ((x_181 < 240)) {
+                  int const x_245 = data.arr[7];
+                  x_248 = (0.5f + (float(x_245) * 0.100000001f));
+                  x_257_phi = x_248;
+                } else {
+                  if ((x_181 < 270)) {
+                  } else {
+                    discard_fragment();
+                  }
+                  int const x_253 = data.arr[8];
+                  x_256 = (0.5f + (float(x_253) * 0.100000001f));
+                  x_257_phi = x_256;
+                }
+                x_257 = x_257_phi;
+                x_258_phi = x_257;
+              }
+              x_258 = x_258_phi;
+              x_259_phi = x_258;
+            }
+            x_259 = x_259_phi;
+          }
+          x_260_phi = x_259;
+        }
+        x_260 = x_260_phi;
+        x_261_phi = x_260;
+      }
+      x_261 = x_261_phi;
+      x_262_phi = x_261;
+    }
+    x_262 = x_262_phi;
+    x_263_phi = x_262;
+  }
+  float const x_263 = x_263_phi;
+  *(tint_symbol_7) = float4(x_263, x_263, x_263, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..63a761d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.spvasm
@@ -0,0 +1,746 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 424
+; Schema: 0
+               OpCapability Shader
+        %169 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %temp "temp"
+               OpName %data "data"
+               OpName %x_190 "x_190"
+               OpName %x_262 "x_262"
+               OpName %x_63_phi "x_63_phi"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_112_phi "x_112_phi"
+               OpName %x_263_phi "x_263_phi"
+               OpName %x_100 "x_100"
+               OpName %x_98 "x_98"
+               OpName %x_96 "x_96"
+               OpName %x_94 "x_94"
+               OpName %x_92 "x_92"
+               OpName %x_90 "x_90"
+               OpName %x_88 "x_88"
+               OpName %x_86 "x_86"
+               OpName %x_84 "x_84"
+               OpName %x_82 "x_82"
+               OpName %x_64_phi "x_64_phi"
+               OpName %x_104 "x_104"
+               OpName %x_113 "x_113"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_131 "x_131"
+               OpName %x_136 "x_136"
+               OpName %x_131_phi "x_131_phi"
+               OpName %x_134_phi "x_134_phi"
+               OpName %x_136_phi "x_136_phi"
+               OpName %x_158_phi "x_158_phi"
+               OpName %x_161_phi "x_161_phi"
+               OpName %x_171_phi "x_171_phi"
+               OpName %x_151 "x_151"
+               OpName %x_154 "x_154"
+               OpName %x_135_phi "x_135_phi"
+               OpName %x_137_phi "x_137_phi"
+               OpName %x_159 "x_159"
+               OpName %x_162 "x_162"
+               OpName %x_172 "x_172"
+               OpName %x_181 "x_181"
+               OpName %x_199 "x_199"
+               OpName %x_261 "x_261"
+               OpName %x_262_phi "x_262_phi"
+               OpName %x_208 "x_208"
+               OpName %x_260 "x_260"
+               OpName %x_261_phi "x_261_phi"
+               OpName %x_217 "x_217"
+               OpName %x_259 "x_259"
+               OpName %x_260_phi "x_260_phi"
+               OpName %x_230 "x_230"
+               OpName %x_258 "x_258"
+               OpName %x_259_phi "x_259_phi"
+               OpName %x_239 "x_239"
+               OpName %x_257 "x_257"
+               OpName %x_258_phi "x_258_phi"
+               OpName %x_248 "x_248"
+               OpName %x_256 "x_256"
+               OpName %x_257_phi "x_257_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %25 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+         %60 = OpConstantComposite %_arr_int_uint_10 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+      %int_1 = OpConstant %int 1
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+%float_0_100000001 = OpConstant %float 0.100000001
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %411 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %temp = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+      %x_190 = OpVariable %_ptr_Function_float Function %29
+      %x_262 = OpVariable %_ptr_Function_float Function %29
+   %x_63_phi = OpVariable %_ptr_Function_int Function %33
+  %x_103_phi = OpVariable %_ptr_Function_int Function %33
+  %x_112_phi = OpVariable %_ptr_Function_int Function %33
+  %x_263_phi = OpVariable %_ptr_Function_float Function %29
+      %x_100 = OpVariable %_ptr_Function_int Function %33
+       %x_98 = OpVariable %_ptr_Function_int Function %33
+       %x_96 = OpVariable %_ptr_Function_int Function %33
+       %x_94 = OpVariable %_ptr_Function_int Function %33
+       %x_92 = OpVariable %_ptr_Function_int Function %33
+       %x_90 = OpVariable %_ptr_Function_int Function %33
+       %x_88 = OpVariable %_ptr_Function_int Function %33
+       %x_86 = OpVariable %_ptr_Function_int Function %33
+       %x_84 = OpVariable %_ptr_Function_int Function %33
+       %x_82 = OpVariable %_ptr_Function_int Function %33
+   %x_64_phi = OpVariable %_ptr_Function_int Function %33
+      %x_104 = OpVariable %_ptr_Function_int Function %33
+      %x_113 = OpVariable %_ptr_Function_int Function %33
+  %x_119_phi = OpVariable %_ptr_Function_int Function %33
+      %x_131 = OpVariable %_ptr_Function_int Function %33
+      %x_136 = OpVariable %_ptr_Function_int Function %33
+  %x_131_phi = OpVariable %_ptr_Function_int Function %33
+  %x_134_phi = OpVariable %_ptr_Function_int Function %33
+  %x_136_phi = OpVariable %_ptr_Function_int Function %33
+  %x_158_phi = OpVariable %_ptr_Function_int Function %33
+  %x_161_phi = OpVariable %_ptr_Function_int Function %33
+  %x_171_phi = OpVariable %_ptr_Function_int Function %33
+      %x_151 = OpVariable %_ptr_Function_int Function %33
+      %x_154 = OpVariable %_ptr_Function_int Function %33
+  %x_135_phi = OpVariable %_ptr_Function_int Function %33
+  %x_137_phi = OpVariable %_ptr_Function_int Function %33
+      %x_159 = OpVariable %_ptr_Function_int Function %33
+      %x_162 = OpVariable %_ptr_Function_int Function %33
+      %x_172 = OpVariable %_ptr_Function_int Function %33
+      %x_181 = OpVariable %_ptr_Function_int Function %33
+      %x_199 = OpVariable %_ptr_Function_float Function %29
+      %x_261 = OpVariable %_ptr_Function_float Function %29
+  %x_262_phi = OpVariable %_ptr_Function_float Function %29
+      %x_208 = OpVariable %_ptr_Function_float Function %29
+      %x_260 = OpVariable %_ptr_Function_float Function %29
+  %x_261_phi = OpVariable %_ptr_Function_float Function %29
+      %x_217 = OpVariable %_ptr_Function_float Function %29
+      %x_259 = OpVariable %_ptr_Function_float Function %29
+  %x_260_phi = OpVariable %_ptr_Function_float Function %29
+      %x_230 = OpVariable %_ptr_Function_float Function %29
+      %x_258 = OpVariable %_ptr_Function_float Function %29
+  %x_259_phi = OpVariable %_ptr_Function_float Function %29
+      %x_239 = OpVariable %_ptr_Function_float Function %29
+      %x_257 = OpVariable %_ptr_Function_float Function %29
+  %x_258_phi = OpVariable %_ptr_Function_float Function %29
+      %x_248 = OpVariable %_ptr_Function_float Function %29
+      %x_256 = OpVariable %_ptr_Function_float Function %29
+  %x_257_phi = OpVariable %_ptr_Function_float Function %29
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+               OpStore %x_63_phi %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %57 = OpLoad %int %x_63_phi
+         %58 = OpLoad %_arr_int_uint_10 %data
+               OpStore %data %60
+               OpStore %data %58
+         %62 = OpIAdd %int %57 %int_1
+               OpStore %x_64_phi %62
+               OpSelectionMerge %63 None
+               OpSwitch %57 %64 9 %65 8 %66 7 %67 6 %68 5 %69 4 %70 3 %71 2 %72 1 %73 0 %74
+         %65 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %75 %int_n5
+         %77 = OpIAdd %int %57 %int_1
+               OpStore %x_100 %77
+         %78 = OpLoad %int %x_100
+               OpStore %x_64_phi %78
+               OpBranch %63
+         %66 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %79 %int_n4
+         %81 = OpIAdd %int %57 %int_1
+               OpStore %x_98 %81
+         %82 = OpLoad %int %x_98
+               OpStore %x_64_phi %82
+               OpBranch %63
+         %67 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %83 %int_n3
+         %85 = OpIAdd %int %57 %int_1
+               OpStore %x_96 %85
+         %86 = OpLoad %int %x_96
+               OpStore %x_64_phi %86
+               OpBranch %63
+         %68 = OpLabel
+         %87 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %87 %int_n2
+         %89 = OpIAdd %int %57 %int_1
+               OpStore %x_94 %89
+         %90 = OpLoad %int %x_94
+               OpStore %x_64_phi %90
+               OpBranch %63
+         %69 = OpLabel
+         %91 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %91 %int_n1
+         %93 = OpIAdd %int %57 %int_1
+               OpStore %x_92 %93
+         %94 = OpLoad %int %x_92
+               OpStore %x_64_phi %94
+               OpBranch %63
+         %70 = OpLabel
+         %95 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %95 %int_0
+         %96 = OpIAdd %int %57 %int_1
+               OpStore %x_90 %96
+         %97 = OpLoad %int %x_90
+               OpStore %x_64_phi %97
+               OpBranch %63
+         %71 = OpLabel
+         %98 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %98 %int_1
+         %99 = OpIAdd %int %57 %int_1
+               OpStore %x_88 %99
+        %100 = OpLoad %int %x_88
+               OpStore %x_64_phi %100
+               OpBranch %63
+         %72 = OpLabel
+        %101 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %101 %int_2
+        %103 = OpIAdd %int %57 %int_1
+               OpStore %x_86 %103
+        %104 = OpLoad %int %x_86
+               OpStore %x_64_phi %104
+               OpBranch %63
+         %73 = OpLabel
+        %105 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %105 %int_3
+        %107 = OpIAdd %int %57 %int_1
+               OpStore %x_84 %107
+        %108 = OpLoad %int %x_84
+               OpStore %x_64_phi %108
+               OpBranch %63
+         %74 = OpLabel
+        %109 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %109 %int_4
+        %111 = OpIAdd %int %57 %int_1
+               OpStore %x_82 %111
+        %112 = OpLoad %int %x_82
+               OpStore %x_64_phi %112
+               OpBranch %63
+         %64 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+        %113 = OpLoad %int %x_64_phi
+               OpBranch %44
+         %44 = OpLabel
+               OpStore %x_63_phi %113
+        %115 = OpSLessThan %bool %113 %int_10
+               OpSelectionMerge %117 None
+               OpBranchConditional %115 %118 %119
+        %118 = OpLabel
+               OpBranch %117
+        %119 = OpLabel
+               OpBranch %43
+        %117 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpStore %x_103_phi %int_0
+               OpBranch %120
+        %120 = OpLabel
+               OpLoopMerge %121 %122 None
+               OpBranch %123
+        %123 = OpLabel
+        %125 = OpLoad %int %x_103_phi
+        %126 = OpSLessThan %bool %125 %int_10
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %129
+        %128 = OpLabel
+               OpBranch %127
+        %129 = OpLabel
+               OpBranch %121
+        %127 = OpLabel
+               OpBranch %122
+        %122 = OpLabel
+        %130 = OpAccessChain %_ptr_Function_int %data %125
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Function_int %temp %125
+               OpStore %132 %131
+        %133 = OpIAdd %int %125 %int_1
+               OpStore %x_104 %133
+        %134 = OpLoad %int %x_104
+               OpStore %x_103_phi %134
+               OpBranch %120
+        %121 = OpLabel
+               OpStore %x_112_phi %int_1
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %141 = OpLoad %int %x_112_phi
+        %143 = OpSLessThanEqual %bool %141 %int_9
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %136
+        %144 = OpLabel
+               OpStore %x_119_phi %int_0
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %159 = OpLoad %int %x_119_phi
+        %160 = OpSLessThan %bool %159 %int_9
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+               OpBranch %161
+        %163 = OpLabel
+               OpBranch %148
+        %161 = OpLabel
+        %164 = OpIAdd %int %159 %141
+        %165 = OpISub %int %164 %int_1
+        %166 = OpIMul %int %int_2 %141
+        %167 = OpIAdd %int %159 %166
+        %170 = OpISub %int %167 %int_1
+        %168 = OpExtInst %int %169 SMin %170 %int_9
+               OpStore %x_131_phi %159
+               OpStore %x_134_phi %164
+               OpStore %x_136_phi %159
+               OpBranch %171
+        %171 = OpLabel
+               OpLoopMerge %172 %173 None
+               OpBranch %174
+        %174 = OpLabel
+        %179 = OpLoad %int %x_131_phi
+               OpStore %x_131 %179
+        %180 = OpLoad %int %x_134_phi
+        %181 = OpLoad %int %x_136_phi
+               OpStore %x_136 %181
+        %182 = OpLoad %int %x_136
+        %183 = OpSLessThanEqual %bool %182 %165
+               OpSelectionMerge %184 None
+               OpBranchConditional %183 %185 %184
+        %185 = OpLabel
+        %186 = OpSLessThanEqual %bool %180 %168
+               OpBranch %184
+        %184 = OpLabel
+        %187 = OpPhi %bool %183 %174 %186 %185
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %190
+        %189 = OpLabel
+               OpBranch %188
+        %190 = OpLabel
+               OpBranch %172
+        %188 = OpLabel
+        %191 = OpLoad %int %x_136
+        %192 = OpAccessChain %_ptr_Function_int %data %191
+        %193 = OpLoad %int %192
+        %194 = OpAccessChain %_ptr_Function_int %data %180
+        %195 = OpLoad %int %194
+        %197 = OpLoad %int %x_131
+        %198 = OpCopyObject %int %int_1
+        %199 = OpIAdd %int %197 %198
+        %196 = OpCopyObject %int %199
+        %200 = OpSLessThan %bool %193 %195
+               OpSelectionMerge %201 None
+               OpBranchConditional %200 %202 %203
+        %202 = OpLabel
+        %205 = OpLoad %int %x_136
+        %206 = OpCopyObject %int %int_1
+        %207 = OpIAdd %int %205 %206
+        %204 = OpCopyObject %int %207
+               OpStore %x_151 %204
+        %208 = OpAccessChain %_ptr_Function_int %data %191
+        %209 = OpLoad %int %208
+        %210 = OpLoad %int %x_131
+        %211 = OpAccessChain %_ptr_Function_int %temp %210
+               OpStore %211 %209
+               OpStore %x_135_phi %180
+        %212 = OpLoad %int %x_151
+               OpStore %x_137_phi %212
+               OpBranch %201
+        %203 = OpLabel
+        %213 = OpIAdd %int %180 %int_1
+               OpStore %x_154 %213
+        %214 = OpAccessChain %_ptr_Function_int %data %180
+        %215 = OpLoad %int %214
+        %216 = OpLoad %int %x_131
+        %217 = OpAccessChain %_ptr_Function_int %temp %216
+               OpStore %217 %215
+        %218 = OpLoad %int %x_154
+               OpStore %x_135_phi %218
+        %219 = OpLoad %int %x_136
+               OpStore %x_137_phi %219
+               OpBranch %201
+        %201 = OpLabel
+        %220 = OpLoad %int %x_135_phi
+        %221 = OpLoad %int %x_137_phi
+               OpBranch %173
+        %173 = OpLabel
+               OpStore %x_131_phi %196
+               OpStore %x_134_phi %220
+               OpStore %x_136_phi %221
+               OpBranch %171
+        %172 = OpLabel
+        %222 = OpLoad %int %x_131
+               OpStore %x_158_phi %222
+        %223 = OpLoad %int %x_136
+               OpStore %x_161_phi %223
+               OpBranch %224
+        %224 = OpLabel
+               OpLoopMerge %225 %226 None
+               OpBranch %227
+        %227 = OpLabel
+        %230 = OpLoad %int %x_158_phi
+        %231 = OpLoad %int %x_161_phi
+        %232 = OpSLessThan %bool %231 %int_10
+               OpSelectionMerge %233 None
+               OpBranchConditional %232 %234 %233
+        %234 = OpLabel
+        %235 = OpSLessThanEqual %bool %231 %165
+               OpBranch %233
+        %233 = OpLabel
+        %236 = OpPhi %bool %232 %227 %235 %234
+               OpSelectionMerge %237 None
+               OpBranchConditional %236 %238 %239
+        %238 = OpLabel
+               OpBranch %237
+        %239 = OpLabel
+               OpBranch %225
+        %237 = OpLabel
+               OpBranch %226
+        %226 = OpLabel
+        %240 = OpIAdd %int %230 %int_1
+               OpStore %x_159 %240
+        %241 = OpIAdd %int %231 %int_1
+               OpStore %x_162 %241
+        %242 = OpAccessChain %_ptr_Function_int %data %231
+        %243 = OpLoad %int %242
+        %244 = OpAccessChain %_ptr_Function_int %temp %230
+               OpStore %244 %243
+        %245 = OpLoad %int %x_159
+               OpStore %x_158_phi %245
+        %246 = OpLoad %int %x_162
+               OpStore %x_161_phi %246
+               OpBranch %224
+        %225 = OpLabel
+               OpStore %x_171_phi %159
+               OpBranch %247
+        %247 = OpLabel
+               OpLoopMerge %248 %249 None
+               OpBranch %250
+        %250 = OpLabel
+        %252 = OpLoad %int %x_171_phi
+        %253 = OpSLessThanEqual %bool %252 %168
+               OpSelectionMerge %254 None
+               OpBranchConditional %253 %255 %256
+        %255 = OpLabel
+               OpBranch %254
+        %256 = OpLabel
+               OpBranch %248
+        %254 = OpLabel
+               OpBranch %249
+        %249 = OpLabel
+        %257 = OpAccessChain %_ptr_Function_int %temp %252
+        %258 = OpLoad %int %257
+        %259 = OpAccessChain %_ptr_Function_int %data %252
+               OpStore %259 %258
+        %260 = OpIAdd %int %252 %int_1
+               OpStore %x_172 %260
+        %261 = OpLoad %int %x_172
+               OpStore %x_171_phi %261
+               OpBranch %247
+        %248 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+               OpStore %x_119_phi %167
+               OpBranch %147
+        %148 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %262 = OpIMul %int %int_2 %141
+               OpStore %x_113 %262
+        %263 = OpLoad %int %x_113
+               OpStore %x_112_phi %263
+               OpBranch %135
+        %136 = OpLabel
+        %270 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %271 = OpLoad %float %270
+        %272 = OpConvertFToS %int %271
+               OpStore %x_181 %272
+        %273 = OpLoad %int %x_181
+        %275 = OpSLessThan %bool %273 %int_30
+               OpSelectionMerge %276 None
+               OpBranchConditional %275 %277 %278
+        %277 = OpLabel
+        %279 = OpAccessChain %_ptr_Function_int %data %int_0
+        %280 = OpLoad %int %279
+        %282 = OpConvertSToF %float %280
+        %284 = OpFMul %float %282 %float_0_100000001
+        %285 = OpFAdd %float %float_0_5 %284
+               OpStore %x_190 %285
+        %286 = OpLoad %float %x_190
+               OpStore %x_263_phi %286
+               OpBranch %276
+        %278 = OpLabel
+        %290 = OpLoad %int %x_181
+        %292 = OpSLessThan %bool %290 %int_60
+               OpSelectionMerge %293 None
+               OpBranchConditional %292 %294 %295
+        %294 = OpLabel
+        %296 = OpAccessChain %_ptr_Function_int %data %int_1
+        %297 = OpLoad %int %296
+        %298 = OpConvertSToF %float %297
+        %299 = OpFMul %float %298 %float_0_100000001
+        %300 = OpFAdd %float %float_0_5 %299
+               OpStore %x_199 %300
+        %301 = OpLoad %float %x_199
+               OpStore %x_262_phi %301
+               OpBranch %293
+        %295 = OpLabel
+        %305 = OpLoad %int %x_181
+        %307 = OpSLessThan %bool %305 %int_90
+               OpSelectionMerge %308 None
+               OpBranchConditional %307 %309 %310
+        %309 = OpLabel
+        %311 = OpAccessChain %_ptr_Function_int %data %int_2
+        %312 = OpLoad %int %311
+        %313 = OpConvertSToF %float %312
+        %314 = OpFMul %float %313 %float_0_100000001
+        %315 = OpFAdd %float %float_0_5 %314
+               OpStore %x_208 %315
+        %316 = OpLoad %float %x_208
+               OpStore %x_261_phi %316
+               OpBranch %308
+        %310 = OpLabel
+        %317 = OpLoad %int %x_181
+        %319 = OpSLessThan %bool %317 %int_120
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %322
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Function_int %data %int_3
+        %324 = OpLoad %int %323
+        %325 = OpConvertSToF %float %324
+        %326 = OpFMul %float %325 %float_0_100000001
+        %327 = OpFAdd %float %float_0_5 %326
+               OpStore %x_217 %327
+        %328 = OpLoad %float %x_217
+               OpStore %x_260_phi %328
+               OpBranch %320
+        %322 = OpLabel
+        %332 = OpLoad %int %x_181
+        %334 = OpSLessThan %bool %332 %int_150
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %337
+        %336 = OpLabel
+               OpKill
+        %337 = OpLabel
+        %341 = OpLoad %int %x_181
+        %343 = OpSLessThan %bool %341 %int_180
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %346
+        %345 = OpLabel
+        %348 = OpAccessChain %_ptr_Function_int %data %int_5
+        %349 = OpLoad %int %348
+        %350 = OpConvertSToF %float %349
+        %351 = OpFMul %float %350 %float_0_100000001
+        %352 = OpFAdd %float %float_0_5 %351
+               OpStore %x_230 %352
+        %353 = OpLoad %float %x_230
+               OpStore %x_259_phi %353
+               OpBranch %344
+        %346 = OpLabel
+        %357 = OpLoad %int %x_181
+        %359 = OpSLessThan %bool %357 %int_210
+               OpSelectionMerge %360 None
+               OpBranchConditional %359 %361 %362
+        %361 = OpLabel
+        %364 = OpAccessChain %_ptr_Function_int %data %int_6
+        %365 = OpLoad %int %364
+        %366 = OpConvertSToF %float %365
+        %367 = OpFMul %float %366 %float_0_100000001
+        %368 = OpFAdd %float %float_0_5 %367
+               OpStore %x_239 %368
+        %369 = OpLoad %float %x_239
+               OpStore %x_258_phi %369
+               OpBranch %360
+        %362 = OpLabel
+        %370 = OpLoad %int %x_181
+        %372 = OpSLessThan %bool %370 %int_240
+               OpSelectionMerge %373 None
+               OpBranchConditional %372 %374 %375
+        %374 = OpLabel
+        %377 = OpAccessChain %_ptr_Function_int %data %int_7
+        %378 = OpLoad %int %377
+        %379 = OpConvertSToF %float %378
+        %380 = OpFMul %float %379 %float_0_100000001
+        %381 = OpFAdd %float %float_0_5 %380
+               OpStore %x_248 %381
+        %382 = OpLoad %float %x_248
+               OpStore %x_257_phi %382
+               OpBranch %373
+        %375 = OpLabel
+        %383 = OpLoad %int %x_181
+        %385 = OpSLessThan %bool %383 %int_270
+               OpSelectionMerge %386 None
+               OpBranchConditional %385 %387 %388
+        %387 = OpLabel
+               OpBranch %386
+        %388 = OpLabel
+               OpKill
+        %386 = OpLabel
+        %390 = OpAccessChain %_ptr_Function_int %data %int_8
+        %391 = OpLoad %int %390
+        %392 = OpConvertSToF %float %391
+        %393 = OpFMul %float %392 %float_0_100000001
+        %394 = OpFAdd %float %float_0_5 %393
+               OpStore %x_256 %394
+        %395 = OpLoad %float %x_256
+               OpStore %x_257_phi %395
+               OpBranch %373
+        %373 = OpLabel
+        %396 = OpLoad %float %x_257_phi
+               OpStore %x_257 %396
+        %397 = OpLoad %float %x_257
+               OpStore %x_258_phi %397
+               OpBranch %360
+        %360 = OpLabel
+        %398 = OpLoad %float %x_258_phi
+               OpStore %x_258 %398
+        %399 = OpLoad %float %x_258
+               OpStore %x_259_phi %399
+               OpBranch %344
+        %344 = OpLabel
+        %400 = OpLoad %float %x_259_phi
+               OpStore %x_259 %400
+               OpBranch %335
+        %335 = OpLabel
+        %401 = OpLoad %float %x_259
+               OpStore %x_260_phi %401
+               OpBranch %320
+        %320 = OpLabel
+        %402 = OpLoad %float %x_260_phi
+               OpStore %x_260 %402
+        %403 = OpLoad %float %x_260
+               OpStore %x_261_phi %403
+               OpBranch %308
+        %308 = OpLabel
+        %404 = OpLoad %float %x_261_phi
+               OpStore %x_261 %404
+        %405 = OpLoad %float %x_261
+               OpStore %x_262_phi %405
+               OpBranch %293
+        %293 = OpLabel
+        %406 = OpLoad %float %x_262_phi
+               OpStore %x_262 %406
+        %407 = OpLoad %float %x_262
+               OpStore %x_263_phi %407
+               OpBranch %276
+        %276 = OpLabel
+        %408 = OpLoad %float %x_263_phi
+        %410 = OpCompositeConstruct %v4float %408 %408 %408 %float_1
+               OpStore %x_GLF_color %410
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %411
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %415 = OpLabel
+        %416 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %416
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %418 = OpLabel
+        %419 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %419
+        %420 = OpFunctionCall %void %main_1
+        %422 = OpLoad %v4float %x_GLF_color
+        %423 = OpCompositeConstruct %main_out %422
+        %421 = OpFunctionCall %void %tint_symbol_3 %423
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 44[%44] is not post dominated by the back-edge block 117[%117]
+  %117 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..fc4bfa1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.spvasm.expected.wgsl
@@ -0,0 +1,341 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : array<i32, 10>;
+  var data : array<i32, 10>;
+  var x_190 : f32;
+  var x_262 : f32;
+  var x_63_phi : i32;
+  var x_103_phi : i32;
+  var x_112_phi : i32;
+  var x_263_phi : f32;
+  let x_60 : f32 = x_8.injectionSwitch.x;
+  let x_61 : i32 = i32(x_60);
+  x_63_phi = x_61;
+  loop {
+    var x_100 : i32;
+    var x_98 : i32;
+    var x_96 : i32;
+    var x_94 : i32;
+    var x_92 : i32;
+    var x_90 : i32;
+    var x_88 : i32;
+    var x_86 : i32;
+    var x_84 : i32;
+    var x_82 : i32;
+    var x_64_phi : i32;
+    let x_63 : i32 = x_63_phi;
+    let x_68 : array<i32, 10> = data;
+    data = array<i32, 10>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+    data = x_68;
+    let x_69 : i32 = (x_63 + 1);
+    x_64_phi = x_69;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_100 = (x_63 + 1);
+        x_64_phi = x_100;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_98 = (x_63 + 1);
+        x_64_phi = x_98;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_96 = (x_63 + 1);
+        x_64_phi = x_96;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_94 = (x_63 + 1);
+        x_64_phi = x_94;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_92 = (x_63 + 1);
+        x_64_phi = x_92;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_90 = (x_63 + 1);
+        x_64_phi = x_90;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_88 = (x_63 + 1);
+        x_64_phi = x_88;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_86 = (x_63 + 1);
+        x_64_phi = x_86;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_84 = (x_63 + 1);
+        x_64_phi = x_84;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_82 = (x_63 + 1);
+        x_64_phi = x_82;
+      }
+      default: {
+      }
+    }
+    let x_64 : i32 = x_64_phi;
+
+    continuing {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_103_phi = 0;
+  loop {
+    var x_104 : i32;
+    let x_103 : i32 = x_103_phi;
+    if ((x_103 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_109 : i32 = data[x_103];
+      temp[x_103] = x_109;
+      x_104 = (x_103 + 1);
+      x_103_phi = x_104;
+    }
+  }
+  x_112_phi = 1;
+  loop {
+    var x_113 : i32;
+    var x_119_phi : i32;
+    let x_112 : i32 = x_112_phi;
+    if ((x_112 <= 9)) {
+    } else {
+      break;
+    }
+    x_119_phi = 0;
+    loop {
+      var x_131 : i32;
+      var x_136 : i32;
+      var x_131_phi : i32;
+      var x_134_phi : i32;
+      var x_136_phi : i32;
+      var x_158_phi : i32;
+      var x_161_phi : i32;
+      var x_171_phi : i32;
+      let x_119 : i32 = x_119_phi;
+      if ((x_119 < 9)) {
+      } else {
+        break;
+      }
+      let x_125 : i32 = (x_119 + x_112);
+      let x_126 : i32 = (x_125 - 1);
+      let x_120 : i32 = (x_119 + (2 * x_112));
+      let x_129 : i32 = min((x_120 - 1), 9);
+      x_131_phi = x_119;
+      x_134_phi = x_125;
+      x_136_phi = x_119;
+      loop {
+        var x_151 : i32;
+        var x_154 : i32;
+        var x_135_phi : i32;
+        var x_137_phi : i32;
+        x_131 = x_131_phi;
+        let x_134 : i32 = x_134_phi;
+        x_136 = x_136_phi;
+        if (((x_136 <= x_126) && (x_134 <= x_129))) {
+        } else {
+          break;
+        }
+        let x_143 : ptr<function, i32> = &(data[x_136]);
+        let x_144 : i32 = *(x_143);
+        let x_145 : ptr<function, i32> = &(data[x_134]);
+        let x_146 : i32 = *(x_145);
+        let x_132 : i32 = bitcast<i32>((x_131 + bitcast<i32>(1)));
+        if ((x_144 < x_146)) {
+          x_151 = bitcast<i32>((x_136 + bitcast<i32>(1)));
+          let x_152 : i32 = *(x_143);
+          temp[x_131] = x_152;
+          x_135_phi = x_134;
+          x_137_phi = x_151;
+        } else {
+          x_154 = (x_134 + 1);
+          let x_155 : i32 = *(x_145);
+          temp[x_131] = x_155;
+          x_135_phi = x_154;
+          x_137_phi = x_136;
+        }
+        let x_135 : i32 = x_135_phi;
+        let x_137 : i32 = x_137_phi;
+
+        continuing {
+          x_131_phi = x_132;
+          x_134_phi = x_135;
+          x_136_phi = x_137;
+        }
+      }
+      x_158_phi = x_131;
+      x_161_phi = x_136;
+      loop {
+        var x_159 : i32;
+        var x_162 : i32;
+        let x_158 : i32 = x_158_phi;
+        let x_161 : i32 = x_161_phi;
+        if (((x_161 < 10) && (x_161 <= x_126))) {
+        } else {
+          break;
+        }
+
+        continuing {
+          x_159 = (x_158 + 1);
+          x_162 = (x_161 + 1);
+          let x_168 : i32 = data[x_161];
+          temp[x_158] = x_168;
+          x_158_phi = x_159;
+          x_161_phi = x_162;
+        }
+      }
+      x_171_phi = x_119;
+      loop {
+        var x_172 : i32;
+        let x_171 : i32 = x_171_phi;
+        if ((x_171 <= x_129)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_177 : i32 = temp[x_171];
+          data[x_171] = x_177;
+          x_172 = (x_171 + 1);
+          x_171_phi = x_172;
+        }
+      }
+
+      continuing {
+        x_119_phi = x_120;
+      }
+    }
+
+    continuing {
+      x_113 = (2 * x_112);
+      x_112_phi = x_113;
+    }
+  }
+  var x_181 : i32;
+  var x_199 : f32;
+  var x_261 : f32;
+  var x_262_phi : f32;
+  let x_180 : f32 = gl_FragCoord.y;
+  x_181 = i32(x_180);
+  if ((x_181 < 30)) {
+    let x_187 : i32 = data[0];
+    x_190 = (0.5 + (f32(x_187) * 0.100000001));
+    x_263_phi = x_190;
+  } else {
+    var x_208 : f32;
+    var x_260 : f32;
+    var x_261_phi : f32;
+    if ((x_181 < 60)) {
+      let x_196 : i32 = data[1];
+      x_199 = (0.5 + (f32(x_196) * 0.100000001));
+      x_262_phi = x_199;
+    } else {
+      var x_217 : f32;
+      var x_259 : f32;
+      var x_260_phi : f32;
+      if ((x_181 < 90)) {
+        let x_205 : i32 = data[2];
+        x_208 = (0.5 + (f32(x_205) * 0.100000001));
+        x_261_phi = x_208;
+      } else {
+        if ((x_181 < 120)) {
+          let x_214 : i32 = data[3];
+          x_217 = (0.5 + (f32(x_214) * 0.100000001));
+          x_260_phi = x_217;
+        } else {
+          var x_230 : f32;
+          var x_258 : f32;
+          var x_259_phi : f32;
+          if ((x_181 < 150)) {
+            discard;
+          } else {
+            var x_239 : f32;
+            var x_257 : f32;
+            var x_258_phi : f32;
+            if ((x_181 < 180)) {
+              let x_227 : i32 = data[5];
+              x_230 = (0.5 + (f32(x_227) * 0.100000001));
+              x_259_phi = x_230;
+            } else {
+              var x_248 : f32;
+              var x_256 : f32;
+              var x_257_phi : f32;
+              if ((x_181 < 210)) {
+                let x_236 : i32 = data[6];
+                x_239 = (0.5 + (f32(x_236) * 0.100000001));
+                x_258_phi = x_239;
+              } else {
+                if ((x_181 < 240)) {
+                  let x_245 : i32 = data[7];
+                  x_248 = (0.5 + (f32(x_245) * 0.100000001));
+                  x_257_phi = x_248;
+                } else {
+                  if ((x_181 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  let x_253 : i32 = data[8];
+                  x_256 = (0.5 + (f32(x_253) * 0.100000001));
+                  x_257_phi = x_256;
+                }
+                x_257 = x_257_phi;
+                x_258_phi = x_257;
+              }
+              x_258 = x_258_phi;
+              x_259_phi = x_258;
+            }
+            x_259 = x_259_phi;
+          }
+          x_260_phi = x_259;
+        }
+        x_260 = x_260_phi;
+        x_261_phi = x_260;
+      }
+      x_261 = x_261_phi;
+      x_262_phi = x_261;
+    }
+    x_262 = x_262_phi;
+    x_263_phi = x_262;
+  }
+  let x_263 : f32 = x_263_phi;
+  x_GLF_color = vec4<f32>(x_263, x_263, x_263, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
new file mode 100644
index 0000000..fc4bfa1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
@@ -0,0 +1,341 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : array<i32, 10>;
+  var data : array<i32, 10>;
+  var x_190 : f32;
+  var x_262 : f32;
+  var x_63_phi : i32;
+  var x_103_phi : i32;
+  var x_112_phi : i32;
+  var x_263_phi : f32;
+  let x_60 : f32 = x_8.injectionSwitch.x;
+  let x_61 : i32 = i32(x_60);
+  x_63_phi = x_61;
+  loop {
+    var x_100 : i32;
+    var x_98 : i32;
+    var x_96 : i32;
+    var x_94 : i32;
+    var x_92 : i32;
+    var x_90 : i32;
+    var x_88 : i32;
+    var x_86 : i32;
+    var x_84 : i32;
+    var x_82 : i32;
+    var x_64_phi : i32;
+    let x_63 : i32 = x_63_phi;
+    let x_68 : array<i32, 10> = data;
+    data = array<i32, 10>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+    data = x_68;
+    let x_69 : i32 = (x_63 + 1);
+    x_64_phi = x_69;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_100 = (x_63 + 1);
+        x_64_phi = x_100;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_98 = (x_63 + 1);
+        x_64_phi = x_98;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_96 = (x_63 + 1);
+        x_64_phi = x_96;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_94 = (x_63 + 1);
+        x_64_phi = x_94;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_92 = (x_63 + 1);
+        x_64_phi = x_92;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_90 = (x_63 + 1);
+        x_64_phi = x_90;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_88 = (x_63 + 1);
+        x_64_phi = x_88;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_86 = (x_63 + 1);
+        x_64_phi = x_86;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_84 = (x_63 + 1);
+        x_64_phi = x_84;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_82 = (x_63 + 1);
+        x_64_phi = x_82;
+      }
+      default: {
+      }
+    }
+    let x_64 : i32 = x_64_phi;
+
+    continuing {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_103_phi = 0;
+  loop {
+    var x_104 : i32;
+    let x_103 : i32 = x_103_phi;
+    if ((x_103 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_109 : i32 = data[x_103];
+      temp[x_103] = x_109;
+      x_104 = (x_103 + 1);
+      x_103_phi = x_104;
+    }
+  }
+  x_112_phi = 1;
+  loop {
+    var x_113 : i32;
+    var x_119_phi : i32;
+    let x_112 : i32 = x_112_phi;
+    if ((x_112 <= 9)) {
+    } else {
+      break;
+    }
+    x_119_phi = 0;
+    loop {
+      var x_131 : i32;
+      var x_136 : i32;
+      var x_131_phi : i32;
+      var x_134_phi : i32;
+      var x_136_phi : i32;
+      var x_158_phi : i32;
+      var x_161_phi : i32;
+      var x_171_phi : i32;
+      let x_119 : i32 = x_119_phi;
+      if ((x_119 < 9)) {
+      } else {
+        break;
+      }
+      let x_125 : i32 = (x_119 + x_112);
+      let x_126 : i32 = (x_125 - 1);
+      let x_120 : i32 = (x_119 + (2 * x_112));
+      let x_129 : i32 = min((x_120 - 1), 9);
+      x_131_phi = x_119;
+      x_134_phi = x_125;
+      x_136_phi = x_119;
+      loop {
+        var x_151 : i32;
+        var x_154 : i32;
+        var x_135_phi : i32;
+        var x_137_phi : i32;
+        x_131 = x_131_phi;
+        let x_134 : i32 = x_134_phi;
+        x_136 = x_136_phi;
+        if (((x_136 <= x_126) && (x_134 <= x_129))) {
+        } else {
+          break;
+        }
+        let x_143 : ptr<function, i32> = &(data[x_136]);
+        let x_144 : i32 = *(x_143);
+        let x_145 : ptr<function, i32> = &(data[x_134]);
+        let x_146 : i32 = *(x_145);
+        let x_132 : i32 = bitcast<i32>((x_131 + bitcast<i32>(1)));
+        if ((x_144 < x_146)) {
+          x_151 = bitcast<i32>((x_136 + bitcast<i32>(1)));
+          let x_152 : i32 = *(x_143);
+          temp[x_131] = x_152;
+          x_135_phi = x_134;
+          x_137_phi = x_151;
+        } else {
+          x_154 = (x_134 + 1);
+          let x_155 : i32 = *(x_145);
+          temp[x_131] = x_155;
+          x_135_phi = x_154;
+          x_137_phi = x_136;
+        }
+        let x_135 : i32 = x_135_phi;
+        let x_137 : i32 = x_137_phi;
+
+        continuing {
+          x_131_phi = x_132;
+          x_134_phi = x_135;
+          x_136_phi = x_137;
+        }
+      }
+      x_158_phi = x_131;
+      x_161_phi = x_136;
+      loop {
+        var x_159 : i32;
+        var x_162 : i32;
+        let x_158 : i32 = x_158_phi;
+        let x_161 : i32 = x_161_phi;
+        if (((x_161 < 10) && (x_161 <= x_126))) {
+        } else {
+          break;
+        }
+
+        continuing {
+          x_159 = (x_158 + 1);
+          x_162 = (x_161 + 1);
+          let x_168 : i32 = data[x_161];
+          temp[x_158] = x_168;
+          x_158_phi = x_159;
+          x_161_phi = x_162;
+        }
+      }
+      x_171_phi = x_119;
+      loop {
+        var x_172 : i32;
+        let x_171 : i32 = x_171_phi;
+        if ((x_171 <= x_129)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_177 : i32 = temp[x_171];
+          data[x_171] = x_177;
+          x_172 = (x_171 + 1);
+          x_171_phi = x_172;
+        }
+      }
+
+      continuing {
+        x_119_phi = x_120;
+      }
+    }
+
+    continuing {
+      x_113 = (2 * x_112);
+      x_112_phi = x_113;
+    }
+  }
+  var x_181 : i32;
+  var x_199 : f32;
+  var x_261 : f32;
+  var x_262_phi : f32;
+  let x_180 : f32 = gl_FragCoord.y;
+  x_181 = i32(x_180);
+  if ((x_181 < 30)) {
+    let x_187 : i32 = data[0];
+    x_190 = (0.5 + (f32(x_187) * 0.100000001));
+    x_263_phi = x_190;
+  } else {
+    var x_208 : f32;
+    var x_260 : f32;
+    var x_261_phi : f32;
+    if ((x_181 < 60)) {
+      let x_196 : i32 = data[1];
+      x_199 = (0.5 + (f32(x_196) * 0.100000001));
+      x_262_phi = x_199;
+    } else {
+      var x_217 : f32;
+      var x_259 : f32;
+      var x_260_phi : f32;
+      if ((x_181 < 90)) {
+        let x_205 : i32 = data[2];
+        x_208 = (0.5 + (f32(x_205) * 0.100000001));
+        x_261_phi = x_208;
+      } else {
+        if ((x_181 < 120)) {
+          let x_214 : i32 = data[3];
+          x_217 = (0.5 + (f32(x_214) * 0.100000001));
+          x_260_phi = x_217;
+        } else {
+          var x_230 : f32;
+          var x_258 : f32;
+          var x_259_phi : f32;
+          if ((x_181 < 150)) {
+            discard;
+          } else {
+            var x_239 : f32;
+            var x_257 : f32;
+            var x_258_phi : f32;
+            if ((x_181 < 180)) {
+              let x_227 : i32 = data[5];
+              x_230 = (0.5 + (f32(x_227) * 0.100000001));
+              x_259_phi = x_230;
+            } else {
+              var x_248 : f32;
+              var x_256 : f32;
+              var x_257_phi : f32;
+              if ((x_181 < 210)) {
+                let x_236 : i32 = data[6];
+                x_239 = (0.5 + (f32(x_236) * 0.100000001));
+                x_258_phi = x_239;
+              } else {
+                if ((x_181 < 240)) {
+                  let x_245 : i32 = data[7];
+                  x_248 = (0.5 + (f32(x_245) * 0.100000001));
+                  x_257_phi = x_248;
+                } else {
+                  if ((x_181 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  let x_253 : i32 = data[8];
+                  x_256 = (0.5 + (f32(x_253) * 0.100000001));
+                  x_257_phi = x_256;
+                }
+                x_257 = x_257_phi;
+                x_258_phi = x_257;
+              }
+              x_258 = x_258_phi;
+              x_259_phi = x_258;
+            }
+            x_259 = x_259_phi;
+          }
+          x_260_phi = x_259;
+        }
+        x_260 = x_260_phi;
+        x_261_phi = x_260;
+      }
+      x_261 = x_261_phi;
+      x_262_phi = x_261;
+    }
+    x_262 = x_262_phi;
+    x_263_phi = x_262;
+  }
+  let x_263 : f32 = x_263_phi;
+  x_GLF_color = vec4<f32>(x_263, x_263, x_263, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..975a0e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.hlsl
@@ -0,0 +1,356 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+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() {
+  int temp[10] = (int[10])0;
+  int data[10] = (int[10])0;
+  float x_190 = 0.0f;
+  float x_262 = 0.0f;
+  int x_63_phi = 0;
+  int x_103_phi = 0;
+  int x_112_phi = 0;
+  float x_263_phi = 0.0f;
+  const float x_60 = asfloat(x_8[0].x);
+  const int x_61 = int(x_60);
+  x_63_phi = x_61;
+  while (true) {
+    int x_100 = 0;
+    int x_98 = 0;
+    int x_96 = 0;
+    int x_94 = 0;
+    int x_92 = 0;
+    int x_90 = 0;
+    int x_88 = 0;
+    int x_86 = 0;
+    int x_84 = 0;
+    int x_82 = 0;
+    int x_64_phi = 0;
+    const int x_63 = x_63_phi;
+    const int x_68[10] = data;
+    const int tint_symbol_5[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    data = tint_symbol_5;
+    data = x_68;
+    const int x_69 = (x_63 + 1);
+    x_64_phi = x_69;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_100 = (x_63 + 1);
+        x_64_phi = x_100;
+        break;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_98 = (x_63 + 1);
+        x_64_phi = x_98;
+        break;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_96 = (x_63 + 1);
+        x_64_phi = x_96;
+        break;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_94 = (x_63 + 1);
+        x_64_phi = x_94;
+        break;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_92 = (x_63 + 1);
+        x_64_phi = x_92;
+        break;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_90 = (x_63 + 1);
+        x_64_phi = x_90;
+        break;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_88 = (x_63 + 1);
+        x_64_phi = x_88;
+        break;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_86 = (x_63 + 1);
+        x_64_phi = x_86;
+        break;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_84 = (x_63 + 1);
+        x_64_phi = x_84;
+        break;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_82 = (x_63 + 1);
+        x_64_phi = x_82;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    const int x_64 = x_64_phi;
+    {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_103_phi = 0;
+  while (true) {
+    int x_104 = 0;
+    const int x_103 = x_103_phi;
+    if ((x_103 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const int x_109 = data[x_103];
+      temp[x_103] = x_109;
+      x_104 = (x_103 + 1);
+      x_103_phi = x_104;
+    }
+  }
+  x_112_phi = 1;
+  while (true) {
+    int x_113 = 0;
+    int x_119_phi = 0;
+    const int x_112 = x_112_phi;
+    if ((x_112 <= 9)) {
+    } else {
+      break;
+    }
+    x_119_phi = 0;
+    while (true) {
+      int x_131 = 0;
+      int x_136 = 0;
+      int x_131_phi = 0;
+      int x_134_phi = 0;
+      int x_136_phi = 0;
+      int x_158_phi = 0;
+      int x_161_phi = 0;
+      int x_171_phi = 0;
+      const int x_119 = x_119_phi;
+      if ((x_119 < 9)) {
+      } else {
+        break;
+      }
+      const int x_125 = (x_119 + x_112);
+      const int x_126 = (x_125 - 1);
+      const int x_120 = (x_119 + (2 * x_112));
+      const int x_129 = min((x_120 - 1), 9);
+      x_131_phi = x_119;
+      x_134_phi = x_125;
+      x_136_phi = x_119;
+      while (true) {
+        int x_151 = 0;
+        int x_154 = 0;
+        int x_135_phi = 0;
+        int x_137_phi = 0;
+        x_131 = x_131_phi;
+        const int x_134 = x_134_phi;
+        x_136 = x_136_phi;
+        bool tint_tmp = (x_136 <= x_126);
+        if (tint_tmp) {
+          tint_tmp = (x_134 <= x_129);
+        }
+        if ((tint_tmp)) {
+        } else {
+          break;
+        }
+        const int x_143_save = x_136;
+        const int x_144 = data[x_143_save];
+        const int x_145_save = x_134;
+        const int x_146 = data[x_145_save];
+        const int x_132 = asint((x_131 + asint(1)));
+        if ((x_144 < x_146)) {
+          x_151 = asint((x_136 + asint(1)));
+          const int x_152 = data[x_143_save];
+          temp[x_131] = x_152;
+          x_135_phi = x_134;
+          x_137_phi = x_151;
+        } else {
+          x_154 = (x_134 + 1);
+          const int x_155 = data[x_145_save];
+          temp[x_131] = x_155;
+          x_135_phi = x_154;
+          x_137_phi = x_136;
+        }
+        const int x_135 = x_135_phi;
+        const int x_137 = x_137_phi;
+        {
+          x_131_phi = x_132;
+          x_134_phi = x_135;
+          x_136_phi = x_137;
+        }
+      }
+      x_158_phi = x_131;
+      x_161_phi = x_136;
+      while (true) {
+        int x_159 = 0;
+        int x_162 = 0;
+        const int x_158 = x_158_phi;
+        const int x_161 = x_161_phi;
+        bool tint_tmp_1 = (x_161 < 10);
+        if (tint_tmp_1) {
+          tint_tmp_1 = (x_161 <= x_126);
+        }
+        if ((tint_tmp_1)) {
+        } else {
+          break;
+        }
+        {
+          x_159 = (x_158 + 1);
+          x_162 = (x_161 + 1);
+          const int x_168 = data[x_161];
+          temp[x_158] = x_168;
+          x_158_phi = x_159;
+          x_161_phi = x_162;
+        }
+      }
+      x_171_phi = x_119;
+      while (true) {
+        int x_172 = 0;
+        const int x_171 = x_171_phi;
+        if ((x_171 <= x_129)) {
+        } else {
+          break;
+        }
+        {
+          const int x_177 = temp[x_171];
+          data[x_171] = x_177;
+          x_172 = (x_171 + 1);
+          x_171_phi = x_172;
+        }
+      }
+      {
+        x_119_phi = x_120;
+      }
+    }
+    {
+      x_113 = (2 * x_112);
+      x_112_phi = x_113;
+    }
+  }
+  int x_181 = 0;
+  float x_199 = 0.0f;
+  float x_261 = 0.0f;
+  float x_262_phi = 0.0f;
+  const float x_180 = gl_FragCoord.y;
+  x_181 = int(x_180);
+  if ((x_181 < 30)) {
+    const int x_187 = data[0];
+    x_190 = (0.5f + (float(x_187) * 0.100000001f));
+    x_263_phi = x_190;
+  } else {
+    float x_208 = 0.0f;
+    float x_260 = 0.0f;
+    float x_261_phi = 0.0f;
+    if ((x_181 < 60)) {
+      const int x_196 = data[1];
+      x_199 = (0.5f + (float(x_196) * 0.100000001f));
+      x_262_phi = x_199;
+    } else {
+      float x_217 = 0.0f;
+      float x_259 = 0.0f;
+      float x_260_phi = 0.0f;
+      if ((x_181 < 90)) {
+        const int x_205 = data[2];
+        x_208 = (0.5f + (float(x_205) * 0.100000001f));
+        x_261_phi = x_208;
+      } else {
+        if ((x_181 < 120)) {
+          const int x_214 = data[3];
+          x_217 = (0.5f + (float(x_214) * 0.100000001f));
+          x_260_phi = x_217;
+        } else {
+          float x_230 = 0.0f;
+          float x_258 = 0.0f;
+          float x_259_phi = 0.0f;
+          if ((x_181 < 150)) {
+            discard;
+          } else {
+            float x_239 = 0.0f;
+            float x_257 = 0.0f;
+            float x_258_phi = 0.0f;
+            if ((x_181 < 180)) {
+              const int x_227 = data[5];
+              x_230 = (0.5f + (float(x_227) * 0.100000001f));
+              x_259_phi = x_230;
+            } else {
+              float x_248 = 0.0f;
+              float x_256 = 0.0f;
+              float x_257_phi = 0.0f;
+              if ((x_181 < 210)) {
+                const int x_236 = data[6];
+                x_239 = (0.5f + (float(x_236) * 0.100000001f));
+                x_258_phi = x_239;
+              } else {
+                if ((x_181 < 240)) {
+                  const int x_245 = data[7];
+                  x_248 = (0.5f + (float(x_245) * 0.100000001f));
+                  x_257_phi = x_248;
+                } else {
+                  if ((x_181 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  const int x_253 = data[8];
+                  x_256 = (0.5f + (float(x_253) * 0.100000001f));
+                  x_257_phi = x_256;
+                }
+                x_257 = x_257_phi;
+                x_258_phi = x_257;
+              }
+              x_258 = x_258_phi;
+              x_259_phi = x_258;
+            }
+            x_259 = x_259_phi;
+          }
+          x_260_phi = x_259;
+        }
+        x_260 = x_260_phi;
+        x_261_phi = x_260;
+      }
+      x_261 = x_261_phi;
+      x_262_phi = x_261;
+    }
+    x_262 = x_262_phi;
+    x_263_phi = x_262;
+  }
+  const float x_263 = x_263_phi;
+  x_GLF_color = float4(x_263, x_263, x_263, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.msl
new file mode 100644
index 0000000..e8a7ca8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.msl
@@ -0,0 +1,350 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper temp = {};
+  tint_array_wrapper data = {};
+  float x_190 = 0.0f;
+  float x_262 = 0.0f;
+  int x_63_phi = 0;
+  int x_103_phi = 0;
+  int x_112_phi = 0;
+  float x_263_phi = 0.0f;
+  float const x_60 = x_8.injectionSwitch.x;
+  int const x_61 = int(x_60);
+  x_63_phi = x_61;
+  while (true) {
+    int x_100 = 0;
+    int x_98 = 0;
+    int x_96 = 0;
+    int x_94 = 0;
+    int x_92 = 0;
+    int x_90 = 0;
+    int x_88 = 0;
+    int x_86 = 0;
+    int x_84 = 0;
+    int x_82 = 0;
+    int x_64_phi = 0;
+    int const x_63 = x_63_phi;
+    tint_array_wrapper const x_68 = data;
+    tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    data = tint_symbol_4;
+    data = x_68;
+    int const x_69 = (x_63 + 1);
+    x_64_phi = x_69;
+    switch(x_63) {
+      case 9: {
+        data.arr[x_63] = -5;
+        x_100 = (x_63 + 1);
+        x_64_phi = x_100;
+        break;
+      }
+      case 8: {
+        data.arr[x_63] = -4;
+        x_98 = (x_63 + 1);
+        x_64_phi = x_98;
+        break;
+      }
+      case 7: {
+        data.arr[x_63] = -3;
+        x_96 = (x_63 + 1);
+        x_64_phi = x_96;
+        break;
+      }
+      case 6: {
+        data.arr[x_63] = -2;
+        x_94 = (x_63 + 1);
+        x_64_phi = x_94;
+        break;
+      }
+      case 5: {
+        data.arr[x_63] = -1;
+        x_92 = (x_63 + 1);
+        x_64_phi = x_92;
+        break;
+      }
+      case 4: {
+        data.arr[x_63] = 0;
+        x_90 = (x_63 + 1);
+        x_64_phi = x_90;
+        break;
+      }
+      case 3: {
+        data.arr[x_63] = 1;
+        x_88 = (x_63 + 1);
+        x_64_phi = x_88;
+        break;
+      }
+      case 2: {
+        data.arr[x_63] = 2;
+        x_86 = (x_63 + 1);
+        x_64_phi = x_86;
+        break;
+      }
+      case 1: {
+        data.arr[x_63] = 3;
+        x_84 = (x_63 + 1);
+        x_64_phi = x_84;
+        break;
+      }
+      case 0: {
+        data.arr[x_63] = 4;
+        x_82 = (x_63 + 1);
+        x_64_phi = x_82;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_64 = x_64_phi;
+    {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_103_phi = 0;
+  while (true) {
+    int x_104 = 0;
+    int const x_103 = x_103_phi;
+    if ((x_103 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_109 = data.arr[x_103];
+      temp.arr[x_103] = x_109;
+      x_104 = (x_103 + 1);
+      x_103_phi = x_104;
+    }
+  }
+  x_112_phi = 1;
+  while (true) {
+    int x_113 = 0;
+    int x_119_phi = 0;
+    int const x_112 = x_112_phi;
+    if ((x_112 <= 9)) {
+    } else {
+      break;
+    }
+    x_119_phi = 0;
+    while (true) {
+      int x_131 = 0;
+      int x_136 = 0;
+      int x_131_phi = 0;
+      int x_134_phi = 0;
+      int x_136_phi = 0;
+      int x_158_phi = 0;
+      int x_161_phi = 0;
+      int x_171_phi = 0;
+      int const x_119 = x_119_phi;
+      if ((x_119 < 9)) {
+      } else {
+        break;
+      }
+      int const x_125 = (x_119 + x_112);
+      int const x_126 = (x_125 - 1);
+      int const x_120 = (x_119 + (2 * x_112));
+      int const x_129 = min((x_120 - 1), 9);
+      x_131_phi = x_119;
+      x_134_phi = x_125;
+      x_136_phi = x_119;
+      while (true) {
+        int x_151 = 0;
+        int x_154 = 0;
+        int x_135_phi = 0;
+        int x_137_phi = 0;
+        x_131 = x_131_phi;
+        int const x_134 = x_134_phi;
+        x_136 = x_136_phi;
+        if (((x_136 <= x_126) && (x_134 <= x_129))) {
+        } else {
+          break;
+        }
+        int const x_143_save = x_136;
+        int const x_144 = data.arr[x_143_save];
+        int const x_145_save = x_134;
+        int const x_146 = data.arr[x_145_save];
+        int const x_132 = as_type<int>((x_131 + as_type<int>(1)));
+        if ((x_144 < x_146)) {
+          x_151 = as_type<int>((x_136 + as_type<int>(1)));
+          int const x_152 = data.arr[x_143_save];
+          temp.arr[x_131] = x_152;
+          x_135_phi = x_134;
+          x_137_phi = x_151;
+        } else {
+          x_154 = (x_134 + 1);
+          int const x_155 = data.arr[x_145_save];
+          temp.arr[x_131] = x_155;
+          x_135_phi = x_154;
+          x_137_phi = x_136;
+        }
+        int const x_135 = x_135_phi;
+        int const x_137 = x_137_phi;
+        {
+          x_131_phi = x_132;
+          x_134_phi = x_135;
+          x_136_phi = x_137;
+        }
+      }
+      x_158_phi = x_131;
+      x_161_phi = x_136;
+      while (true) {
+        int x_159 = 0;
+        int x_162 = 0;
+        int const x_158 = x_158_phi;
+        int const x_161 = x_161_phi;
+        if (((x_161 < 10) && (x_161 <= x_126))) {
+        } else {
+          break;
+        }
+        {
+          x_159 = (x_158 + 1);
+          x_162 = (x_161 + 1);
+          int const x_168 = data.arr[x_161];
+          temp.arr[x_158] = x_168;
+          x_158_phi = x_159;
+          x_161_phi = x_162;
+        }
+      }
+      x_171_phi = x_119;
+      while (true) {
+        int x_172 = 0;
+        int const x_171 = x_171_phi;
+        if ((x_171 <= x_129)) {
+        } else {
+          break;
+        }
+        {
+          int const x_177 = temp.arr[x_171];
+          data.arr[x_171] = x_177;
+          x_172 = (x_171 + 1);
+          x_171_phi = x_172;
+        }
+      }
+      {
+        x_119_phi = x_120;
+      }
+    }
+    {
+      x_113 = (2 * x_112);
+      x_112_phi = x_113;
+    }
+  }
+  int x_181 = 0;
+  float x_199 = 0.0f;
+  float x_261 = 0.0f;
+  float x_262_phi = 0.0f;
+  float const x_180 = (*(tint_symbol_6)).y;
+  x_181 = int(x_180);
+  if ((x_181 < 30)) {
+    int const x_187 = data.arr[0];
+    x_190 = (0.5f + (float(x_187) * 0.100000001f));
+    x_263_phi = x_190;
+  } else {
+    float x_208 = 0.0f;
+    float x_260 = 0.0f;
+    float x_261_phi = 0.0f;
+    if ((x_181 < 60)) {
+      int const x_196 = data.arr[1];
+      x_199 = (0.5f + (float(x_196) * 0.100000001f));
+      x_262_phi = x_199;
+    } else {
+      float x_217 = 0.0f;
+      float x_259 = 0.0f;
+      float x_260_phi = 0.0f;
+      if ((x_181 < 90)) {
+        int const x_205 = data.arr[2];
+        x_208 = (0.5f + (float(x_205) * 0.100000001f));
+        x_261_phi = x_208;
+      } else {
+        if ((x_181 < 120)) {
+          int const x_214 = data.arr[3];
+          x_217 = (0.5f + (float(x_214) * 0.100000001f));
+          x_260_phi = x_217;
+        } else {
+          float x_230 = 0.0f;
+          float x_258 = 0.0f;
+          float x_259_phi = 0.0f;
+          if ((x_181 < 150)) {
+            discard_fragment();
+          } else {
+            float x_239 = 0.0f;
+            float x_257 = 0.0f;
+            float x_258_phi = 0.0f;
+            if ((x_181 < 180)) {
+              int const x_227 = data.arr[5];
+              x_230 = (0.5f + (float(x_227) * 0.100000001f));
+              x_259_phi = x_230;
+            } else {
+              float x_248 = 0.0f;
+              float x_256 = 0.0f;
+              float x_257_phi = 0.0f;
+              if ((x_181 < 210)) {
+                int const x_236 = data.arr[6];
+                x_239 = (0.5f + (float(x_236) * 0.100000001f));
+                x_258_phi = x_239;
+              } else {
+                if ((x_181 < 240)) {
+                  int const x_245 = data.arr[7];
+                  x_248 = (0.5f + (float(x_245) * 0.100000001f));
+                  x_257_phi = x_248;
+                } else {
+                  if ((x_181 < 270)) {
+                  } else {
+                    discard_fragment();
+                  }
+                  int const x_253 = data.arr[8];
+                  x_256 = (0.5f + (float(x_253) * 0.100000001f));
+                  x_257_phi = x_256;
+                }
+                x_257 = x_257_phi;
+                x_258_phi = x_257;
+              }
+              x_258 = x_258_phi;
+              x_259_phi = x_258;
+            }
+            x_259 = x_259_phi;
+          }
+          x_260_phi = x_259;
+        }
+        x_260 = x_260_phi;
+        x_261_phi = x_260;
+      }
+      x_261 = x_261_phi;
+      x_262_phi = x_261;
+    }
+    x_262 = x_262_phi;
+    x_263_phi = x_262;
+  }
+  float const x_263 = x_263_phi;
+  *(tint_symbol_7) = float4(x_263, x_263, x_263, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..63a761d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.spvasm
@@ -0,0 +1,746 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 424
+; Schema: 0
+               OpCapability Shader
+        %169 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %temp "temp"
+               OpName %data "data"
+               OpName %x_190 "x_190"
+               OpName %x_262 "x_262"
+               OpName %x_63_phi "x_63_phi"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_112_phi "x_112_phi"
+               OpName %x_263_phi "x_263_phi"
+               OpName %x_100 "x_100"
+               OpName %x_98 "x_98"
+               OpName %x_96 "x_96"
+               OpName %x_94 "x_94"
+               OpName %x_92 "x_92"
+               OpName %x_90 "x_90"
+               OpName %x_88 "x_88"
+               OpName %x_86 "x_86"
+               OpName %x_84 "x_84"
+               OpName %x_82 "x_82"
+               OpName %x_64_phi "x_64_phi"
+               OpName %x_104 "x_104"
+               OpName %x_113 "x_113"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_131 "x_131"
+               OpName %x_136 "x_136"
+               OpName %x_131_phi "x_131_phi"
+               OpName %x_134_phi "x_134_phi"
+               OpName %x_136_phi "x_136_phi"
+               OpName %x_158_phi "x_158_phi"
+               OpName %x_161_phi "x_161_phi"
+               OpName %x_171_phi "x_171_phi"
+               OpName %x_151 "x_151"
+               OpName %x_154 "x_154"
+               OpName %x_135_phi "x_135_phi"
+               OpName %x_137_phi "x_137_phi"
+               OpName %x_159 "x_159"
+               OpName %x_162 "x_162"
+               OpName %x_172 "x_172"
+               OpName %x_181 "x_181"
+               OpName %x_199 "x_199"
+               OpName %x_261 "x_261"
+               OpName %x_262_phi "x_262_phi"
+               OpName %x_208 "x_208"
+               OpName %x_260 "x_260"
+               OpName %x_261_phi "x_261_phi"
+               OpName %x_217 "x_217"
+               OpName %x_259 "x_259"
+               OpName %x_260_phi "x_260_phi"
+               OpName %x_230 "x_230"
+               OpName %x_258 "x_258"
+               OpName %x_259_phi "x_259_phi"
+               OpName %x_239 "x_239"
+               OpName %x_257 "x_257"
+               OpName %x_258_phi "x_258_phi"
+               OpName %x_248 "x_248"
+               OpName %x_256 "x_256"
+               OpName %x_257_phi "x_257_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %25 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_0 = OpConstant %int 0
+         %60 = OpConstantComposite %_arr_int_uint_10 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+      %int_1 = OpConstant %int 1
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+%float_0_100000001 = OpConstant %float 0.100000001
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %411 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %temp = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+      %x_190 = OpVariable %_ptr_Function_float Function %29
+      %x_262 = OpVariable %_ptr_Function_float Function %29
+   %x_63_phi = OpVariable %_ptr_Function_int Function %33
+  %x_103_phi = OpVariable %_ptr_Function_int Function %33
+  %x_112_phi = OpVariable %_ptr_Function_int Function %33
+  %x_263_phi = OpVariable %_ptr_Function_float Function %29
+      %x_100 = OpVariable %_ptr_Function_int Function %33
+       %x_98 = OpVariable %_ptr_Function_int Function %33
+       %x_96 = OpVariable %_ptr_Function_int Function %33
+       %x_94 = OpVariable %_ptr_Function_int Function %33
+       %x_92 = OpVariable %_ptr_Function_int Function %33
+       %x_90 = OpVariable %_ptr_Function_int Function %33
+       %x_88 = OpVariable %_ptr_Function_int Function %33
+       %x_86 = OpVariable %_ptr_Function_int Function %33
+       %x_84 = OpVariable %_ptr_Function_int Function %33
+       %x_82 = OpVariable %_ptr_Function_int Function %33
+   %x_64_phi = OpVariable %_ptr_Function_int Function %33
+      %x_104 = OpVariable %_ptr_Function_int Function %33
+      %x_113 = OpVariable %_ptr_Function_int Function %33
+  %x_119_phi = OpVariable %_ptr_Function_int Function %33
+      %x_131 = OpVariable %_ptr_Function_int Function %33
+      %x_136 = OpVariable %_ptr_Function_int Function %33
+  %x_131_phi = OpVariable %_ptr_Function_int Function %33
+  %x_134_phi = OpVariable %_ptr_Function_int Function %33
+  %x_136_phi = OpVariable %_ptr_Function_int Function %33
+  %x_158_phi = OpVariable %_ptr_Function_int Function %33
+  %x_161_phi = OpVariable %_ptr_Function_int Function %33
+  %x_171_phi = OpVariable %_ptr_Function_int Function %33
+      %x_151 = OpVariable %_ptr_Function_int Function %33
+      %x_154 = OpVariable %_ptr_Function_int Function %33
+  %x_135_phi = OpVariable %_ptr_Function_int Function %33
+  %x_137_phi = OpVariable %_ptr_Function_int Function %33
+      %x_159 = OpVariable %_ptr_Function_int Function %33
+      %x_162 = OpVariable %_ptr_Function_int Function %33
+      %x_172 = OpVariable %_ptr_Function_int Function %33
+      %x_181 = OpVariable %_ptr_Function_int Function %33
+      %x_199 = OpVariable %_ptr_Function_float Function %29
+      %x_261 = OpVariable %_ptr_Function_float Function %29
+  %x_262_phi = OpVariable %_ptr_Function_float Function %29
+      %x_208 = OpVariable %_ptr_Function_float Function %29
+      %x_260 = OpVariable %_ptr_Function_float Function %29
+  %x_261_phi = OpVariable %_ptr_Function_float Function %29
+      %x_217 = OpVariable %_ptr_Function_float Function %29
+      %x_259 = OpVariable %_ptr_Function_float Function %29
+  %x_260_phi = OpVariable %_ptr_Function_float Function %29
+      %x_230 = OpVariable %_ptr_Function_float Function %29
+      %x_258 = OpVariable %_ptr_Function_float Function %29
+  %x_259_phi = OpVariable %_ptr_Function_float Function %29
+      %x_239 = OpVariable %_ptr_Function_float Function %29
+      %x_257 = OpVariable %_ptr_Function_float Function %29
+  %x_258_phi = OpVariable %_ptr_Function_float Function %29
+      %x_248 = OpVariable %_ptr_Function_float Function %29
+      %x_256 = OpVariable %_ptr_Function_float Function %29
+  %x_257_phi = OpVariable %_ptr_Function_float Function %29
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+               OpStore %x_63_phi %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %57 = OpLoad %int %x_63_phi
+         %58 = OpLoad %_arr_int_uint_10 %data
+               OpStore %data %60
+               OpStore %data %58
+         %62 = OpIAdd %int %57 %int_1
+               OpStore %x_64_phi %62
+               OpSelectionMerge %63 None
+               OpSwitch %57 %64 9 %65 8 %66 7 %67 6 %68 5 %69 4 %70 3 %71 2 %72 1 %73 0 %74
+         %65 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %75 %int_n5
+         %77 = OpIAdd %int %57 %int_1
+               OpStore %x_100 %77
+         %78 = OpLoad %int %x_100
+               OpStore %x_64_phi %78
+               OpBranch %63
+         %66 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %79 %int_n4
+         %81 = OpIAdd %int %57 %int_1
+               OpStore %x_98 %81
+         %82 = OpLoad %int %x_98
+               OpStore %x_64_phi %82
+               OpBranch %63
+         %67 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %83 %int_n3
+         %85 = OpIAdd %int %57 %int_1
+               OpStore %x_96 %85
+         %86 = OpLoad %int %x_96
+               OpStore %x_64_phi %86
+               OpBranch %63
+         %68 = OpLabel
+         %87 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %87 %int_n2
+         %89 = OpIAdd %int %57 %int_1
+               OpStore %x_94 %89
+         %90 = OpLoad %int %x_94
+               OpStore %x_64_phi %90
+               OpBranch %63
+         %69 = OpLabel
+         %91 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %91 %int_n1
+         %93 = OpIAdd %int %57 %int_1
+               OpStore %x_92 %93
+         %94 = OpLoad %int %x_92
+               OpStore %x_64_phi %94
+               OpBranch %63
+         %70 = OpLabel
+         %95 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %95 %int_0
+         %96 = OpIAdd %int %57 %int_1
+               OpStore %x_90 %96
+         %97 = OpLoad %int %x_90
+               OpStore %x_64_phi %97
+               OpBranch %63
+         %71 = OpLabel
+         %98 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %98 %int_1
+         %99 = OpIAdd %int %57 %int_1
+               OpStore %x_88 %99
+        %100 = OpLoad %int %x_88
+               OpStore %x_64_phi %100
+               OpBranch %63
+         %72 = OpLabel
+        %101 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %101 %int_2
+        %103 = OpIAdd %int %57 %int_1
+               OpStore %x_86 %103
+        %104 = OpLoad %int %x_86
+               OpStore %x_64_phi %104
+               OpBranch %63
+         %73 = OpLabel
+        %105 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %105 %int_3
+        %107 = OpIAdd %int %57 %int_1
+               OpStore %x_84 %107
+        %108 = OpLoad %int %x_84
+               OpStore %x_64_phi %108
+               OpBranch %63
+         %74 = OpLabel
+        %109 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %109 %int_4
+        %111 = OpIAdd %int %57 %int_1
+               OpStore %x_82 %111
+        %112 = OpLoad %int %x_82
+               OpStore %x_64_phi %112
+               OpBranch %63
+         %64 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+        %113 = OpLoad %int %x_64_phi
+               OpBranch %44
+         %44 = OpLabel
+               OpStore %x_63_phi %113
+        %115 = OpSLessThan %bool %113 %int_10
+               OpSelectionMerge %117 None
+               OpBranchConditional %115 %118 %119
+        %118 = OpLabel
+               OpBranch %117
+        %119 = OpLabel
+               OpBranch %43
+        %117 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpStore %x_103_phi %int_0
+               OpBranch %120
+        %120 = OpLabel
+               OpLoopMerge %121 %122 None
+               OpBranch %123
+        %123 = OpLabel
+        %125 = OpLoad %int %x_103_phi
+        %126 = OpSLessThan %bool %125 %int_10
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %129
+        %128 = OpLabel
+               OpBranch %127
+        %129 = OpLabel
+               OpBranch %121
+        %127 = OpLabel
+               OpBranch %122
+        %122 = OpLabel
+        %130 = OpAccessChain %_ptr_Function_int %data %125
+        %131 = OpLoad %int %130
+        %132 = OpAccessChain %_ptr_Function_int %temp %125
+               OpStore %132 %131
+        %133 = OpIAdd %int %125 %int_1
+               OpStore %x_104 %133
+        %134 = OpLoad %int %x_104
+               OpStore %x_103_phi %134
+               OpBranch %120
+        %121 = OpLabel
+               OpStore %x_112_phi %int_1
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %141 = OpLoad %int %x_112_phi
+        %143 = OpSLessThanEqual %bool %141 %int_9
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %136
+        %144 = OpLabel
+               OpStore %x_119_phi %int_0
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %159 = OpLoad %int %x_119_phi
+        %160 = OpSLessThan %bool %159 %int_9
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+               OpBranch %161
+        %163 = OpLabel
+               OpBranch %148
+        %161 = OpLabel
+        %164 = OpIAdd %int %159 %141
+        %165 = OpISub %int %164 %int_1
+        %166 = OpIMul %int %int_2 %141
+        %167 = OpIAdd %int %159 %166
+        %170 = OpISub %int %167 %int_1
+        %168 = OpExtInst %int %169 SMin %170 %int_9
+               OpStore %x_131_phi %159
+               OpStore %x_134_phi %164
+               OpStore %x_136_phi %159
+               OpBranch %171
+        %171 = OpLabel
+               OpLoopMerge %172 %173 None
+               OpBranch %174
+        %174 = OpLabel
+        %179 = OpLoad %int %x_131_phi
+               OpStore %x_131 %179
+        %180 = OpLoad %int %x_134_phi
+        %181 = OpLoad %int %x_136_phi
+               OpStore %x_136 %181
+        %182 = OpLoad %int %x_136
+        %183 = OpSLessThanEqual %bool %182 %165
+               OpSelectionMerge %184 None
+               OpBranchConditional %183 %185 %184
+        %185 = OpLabel
+        %186 = OpSLessThanEqual %bool %180 %168
+               OpBranch %184
+        %184 = OpLabel
+        %187 = OpPhi %bool %183 %174 %186 %185
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %190
+        %189 = OpLabel
+               OpBranch %188
+        %190 = OpLabel
+               OpBranch %172
+        %188 = OpLabel
+        %191 = OpLoad %int %x_136
+        %192 = OpAccessChain %_ptr_Function_int %data %191
+        %193 = OpLoad %int %192
+        %194 = OpAccessChain %_ptr_Function_int %data %180
+        %195 = OpLoad %int %194
+        %197 = OpLoad %int %x_131
+        %198 = OpCopyObject %int %int_1
+        %199 = OpIAdd %int %197 %198
+        %196 = OpCopyObject %int %199
+        %200 = OpSLessThan %bool %193 %195
+               OpSelectionMerge %201 None
+               OpBranchConditional %200 %202 %203
+        %202 = OpLabel
+        %205 = OpLoad %int %x_136
+        %206 = OpCopyObject %int %int_1
+        %207 = OpIAdd %int %205 %206
+        %204 = OpCopyObject %int %207
+               OpStore %x_151 %204
+        %208 = OpAccessChain %_ptr_Function_int %data %191
+        %209 = OpLoad %int %208
+        %210 = OpLoad %int %x_131
+        %211 = OpAccessChain %_ptr_Function_int %temp %210
+               OpStore %211 %209
+               OpStore %x_135_phi %180
+        %212 = OpLoad %int %x_151
+               OpStore %x_137_phi %212
+               OpBranch %201
+        %203 = OpLabel
+        %213 = OpIAdd %int %180 %int_1
+               OpStore %x_154 %213
+        %214 = OpAccessChain %_ptr_Function_int %data %180
+        %215 = OpLoad %int %214
+        %216 = OpLoad %int %x_131
+        %217 = OpAccessChain %_ptr_Function_int %temp %216
+               OpStore %217 %215
+        %218 = OpLoad %int %x_154
+               OpStore %x_135_phi %218
+        %219 = OpLoad %int %x_136
+               OpStore %x_137_phi %219
+               OpBranch %201
+        %201 = OpLabel
+        %220 = OpLoad %int %x_135_phi
+        %221 = OpLoad %int %x_137_phi
+               OpBranch %173
+        %173 = OpLabel
+               OpStore %x_131_phi %196
+               OpStore %x_134_phi %220
+               OpStore %x_136_phi %221
+               OpBranch %171
+        %172 = OpLabel
+        %222 = OpLoad %int %x_131
+               OpStore %x_158_phi %222
+        %223 = OpLoad %int %x_136
+               OpStore %x_161_phi %223
+               OpBranch %224
+        %224 = OpLabel
+               OpLoopMerge %225 %226 None
+               OpBranch %227
+        %227 = OpLabel
+        %230 = OpLoad %int %x_158_phi
+        %231 = OpLoad %int %x_161_phi
+        %232 = OpSLessThan %bool %231 %int_10
+               OpSelectionMerge %233 None
+               OpBranchConditional %232 %234 %233
+        %234 = OpLabel
+        %235 = OpSLessThanEqual %bool %231 %165
+               OpBranch %233
+        %233 = OpLabel
+        %236 = OpPhi %bool %232 %227 %235 %234
+               OpSelectionMerge %237 None
+               OpBranchConditional %236 %238 %239
+        %238 = OpLabel
+               OpBranch %237
+        %239 = OpLabel
+               OpBranch %225
+        %237 = OpLabel
+               OpBranch %226
+        %226 = OpLabel
+        %240 = OpIAdd %int %230 %int_1
+               OpStore %x_159 %240
+        %241 = OpIAdd %int %231 %int_1
+               OpStore %x_162 %241
+        %242 = OpAccessChain %_ptr_Function_int %data %231
+        %243 = OpLoad %int %242
+        %244 = OpAccessChain %_ptr_Function_int %temp %230
+               OpStore %244 %243
+        %245 = OpLoad %int %x_159
+               OpStore %x_158_phi %245
+        %246 = OpLoad %int %x_162
+               OpStore %x_161_phi %246
+               OpBranch %224
+        %225 = OpLabel
+               OpStore %x_171_phi %159
+               OpBranch %247
+        %247 = OpLabel
+               OpLoopMerge %248 %249 None
+               OpBranch %250
+        %250 = OpLabel
+        %252 = OpLoad %int %x_171_phi
+        %253 = OpSLessThanEqual %bool %252 %168
+               OpSelectionMerge %254 None
+               OpBranchConditional %253 %255 %256
+        %255 = OpLabel
+               OpBranch %254
+        %256 = OpLabel
+               OpBranch %248
+        %254 = OpLabel
+               OpBranch %249
+        %249 = OpLabel
+        %257 = OpAccessChain %_ptr_Function_int %temp %252
+        %258 = OpLoad %int %257
+        %259 = OpAccessChain %_ptr_Function_int %data %252
+               OpStore %259 %258
+        %260 = OpIAdd %int %252 %int_1
+               OpStore %x_172 %260
+        %261 = OpLoad %int %x_172
+               OpStore %x_171_phi %261
+               OpBranch %247
+        %248 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+               OpStore %x_119_phi %167
+               OpBranch %147
+        %148 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %262 = OpIMul %int %int_2 %141
+               OpStore %x_113 %262
+        %263 = OpLoad %int %x_113
+               OpStore %x_112_phi %263
+               OpBranch %135
+        %136 = OpLabel
+        %270 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %271 = OpLoad %float %270
+        %272 = OpConvertFToS %int %271
+               OpStore %x_181 %272
+        %273 = OpLoad %int %x_181
+        %275 = OpSLessThan %bool %273 %int_30
+               OpSelectionMerge %276 None
+               OpBranchConditional %275 %277 %278
+        %277 = OpLabel
+        %279 = OpAccessChain %_ptr_Function_int %data %int_0
+        %280 = OpLoad %int %279
+        %282 = OpConvertSToF %float %280
+        %284 = OpFMul %float %282 %float_0_100000001
+        %285 = OpFAdd %float %float_0_5 %284
+               OpStore %x_190 %285
+        %286 = OpLoad %float %x_190
+               OpStore %x_263_phi %286
+               OpBranch %276
+        %278 = OpLabel
+        %290 = OpLoad %int %x_181
+        %292 = OpSLessThan %bool %290 %int_60
+               OpSelectionMerge %293 None
+               OpBranchConditional %292 %294 %295
+        %294 = OpLabel
+        %296 = OpAccessChain %_ptr_Function_int %data %int_1
+        %297 = OpLoad %int %296
+        %298 = OpConvertSToF %float %297
+        %299 = OpFMul %float %298 %float_0_100000001
+        %300 = OpFAdd %float %float_0_5 %299
+               OpStore %x_199 %300
+        %301 = OpLoad %float %x_199
+               OpStore %x_262_phi %301
+               OpBranch %293
+        %295 = OpLabel
+        %305 = OpLoad %int %x_181
+        %307 = OpSLessThan %bool %305 %int_90
+               OpSelectionMerge %308 None
+               OpBranchConditional %307 %309 %310
+        %309 = OpLabel
+        %311 = OpAccessChain %_ptr_Function_int %data %int_2
+        %312 = OpLoad %int %311
+        %313 = OpConvertSToF %float %312
+        %314 = OpFMul %float %313 %float_0_100000001
+        %315 = OpFAdd %float %float_0_5 %314
+               OpStore %x_208 %315
+        %316 = OpLoad %float %x_208
+               OpStore %x_261_phi %316
+               OpBranch %308
+        %310 = OpLabel
+        %317 = OpLoad %int %x_181
+        %319 = OpSLessThan %bool %317 %int_120
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %322
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Function_int %data %int_3
+        %324 = OpLoad %int %323
+        %325 = OpConvertSToF %float %324
+        %326 = OpFMul %float %325 %float_0_100000001
+        %327 = OpFAdd %float %float_0_5 %326
+               OpStore %x_217 %327
+        %328 = OpLoad %float %x_217
+               OpStore %x_260_phi %328
+               OpBranch %320
+        %322 = OpLabel
+        %332 = OpLoad %int %x_181
+        %334 = OpSLessThan %bool %332 %int_150
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %337
+        %336 = OpLabel
+               OpKill
+        %337 = OpLabel
+        %341 = OpLoad %int %x_181
+        %343 = OpSLessThan %bool %341 %int_180
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %346
+        %345 = OpLabel
+        %348 = OpAccessChain %_ptr_Function_int %data %int_5
+        %349 = OpLoad %int %348
+        %350 = OpConvertSToF %float %349
+        %351 = OpFMul %float %350 %float_0_100000001
+        %352 = OpFAdd %float %float_0_5 %351
+               OpStore %x_230 %352
+        %353 = OpLoad %float %x_230
+               OpStore %x_259_phi %353
+               OpBranch %344
+        %346 = OpLabel
+        %357 = OpLoad %int %x_181
+        %359 = OpSLessThan %bool %357 %int_210
+               OpSelectionMerge %360 None
+               OpBranchConditional %359 %361 %362
+        %361 = OpLabel
+        %364 = OpAccessChain %_ptr_Function_int %data %int_6
+        %365 = OpLoad %int %364
+        %366 = OpConvertSToF %float %365
+        %367 = OpFMul %float %366 %float_0_100000001
+        %368 = OpFAdd %float %float_0_5 %367
+               OpStore %x_239 %368
+        %369 = OpLoad %float %x_239
+               OpStore %x_258_phi %369
+               OpBranch %360
+        %362 = OpLabel
+        %370 = OpLoad %int %x_181
+        %372 = OpSLessThan %bool %370 %int_240
+               OpSelectionMerge %373 None
+               OpBranchConditional %372 %374 %375
+        %374 = OpLabel
+        %377 = OpAccessChain %_ptr_Function_int %data %int_7
+        %378 = OpLoad %int %377
+        %379 = OpConvertSToF %float %378
+        %380 = OpFMul %float %379 %float_0_100000001
+        %381 = OpFAdd %float %float_0_5 %380
+               OpStore %x_248 %381
+        %382 = OpLoad %float %x_248
+               OpStore %x_257_phi %382
+               OpBranch %373
+        %375 = OpLabel
+        %383 = OpLoad %int %x_181
+        %385 = OpSLessThan %bool %383 %int_270
+               OpSelectionMerge %386 None
+               OpBranchConditional %385 %387 %388
+        %387 = OpLabel
+               OpBranch %386
+        %388 = OpLabel
+               OpKill
+        %386 = OpLabel
+        %390 = OpAccessChain %_ptr_Function_int %data %int_8
+        %391 = OpLoad %int %390
+        %392 = OpConvertSToF %float %391
+        %393 = OpFMul %float %392 %float_0_100000001
+        %394 = OpFAdd %float %float_0_5 %393
+               OpStore %x_256 %394
+        %395 = OpLoad %float %x_256
+               OpStore %x_257_phi %395
+               OpBranch %373
+        %373 = OpLabel
+        %396 = OpLoad %float %x_257_phi
+               OpStore %x_257 %396
+        %397 = OpLoad %float %x_257
+               OpStore %x_258_phi %397
+               OpBranch %360
+        %360 = OpLabel
+        %398 = OpLoad %float %x_258_phi
+               OpStore %x_258 %398
+        %399 = OpLoad %float %x_258
+               OpStore %x_259_phi %399
+               OpBranch %344
+        %344 = OpLabel
+        %400 = OpLoad %float %x_259_phi
+               OpStore %x_259 %400
+               OpBranch %335
+        %335 = OpLabel
+        %401 = OpLoad %float %x_259
+               OpStore %x_260_phi %401
+               OpBranch %320
+        %320 = OpLabel
+        %402 = OpLoad %float %x_260_phi
+               OpStore %x_260 %402
+        %403 = OpLoad %float %x_260
+               OpStore %x_261_phi %403
+               OpBranch %308
+        %308 = OpLabel
+        %404 = OpLoad %float %x_261_phi
+               OpStore %x_261 %404
+        %405 = OpLoad %float %x_261
+               OpStore %x_262_phi %405
+               OpBranch %293
+        %293 = OpLabel
+        %406 = OpLoad %float %x_262_phi
+               OpStore %x_262 %406
+        %407 = OpLoad %float %x_262
+               OpStore %x_263_phi %407
+               OpBranch %276
+        %276 = OpLabel
+        %408 = OpLoad %float %x_263_phi
+        %410 = OpCompositeConstruct %v4float %408 %408 %408 %float_1
+               OpStore %x_GLF_color %410
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %411
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %415 = OpLabel
+        %416 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %416
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %418 = OpLabel
+        %419 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %419
+        %420 = OpFunctionCall %void %main_1
+        %422 = OpLoad %v4float %x_GLF_color
+        %423 = OpCompositeConstruct %main_out %422
+        %421 = OpFunctionCall %void %tint_symbol_3 %423
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 44[%44] is not post dominated by the back-edge block 117[%117]
+  %117 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..fc4bfa1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl.expected.wgsl
@@ -0,0 +1,341 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : array<i32, 10>;
+  var data : array<i32, 10>;
+  var x_190 : f32;
+  var x_262 : f32;
+  var x_63_phi : i32;
+  var x_103_phi : i32;
+  var x_112_phi : i32;
+  var x_263_phi : f32;
+  let x_60 : f32 = x_8.injectionSwitch.x;
+  let x_61 : i32 = i32(x_60);
+  x_63_phi = x_61;
+  loop {
+    var x_100 : i32;
+    var x_98 : i32;
+    var x_96 : i32;
+    var x_94 : i32;
+    var x_92 : i32;
+    var x_90 : i32;
+    var x_88 : i32;
+    var x_86 : i32;
+    var x_84 : i32;
+    var x_82 : i32;
+    var x_64_phi : i32;
+    let x_63 : i32 = x_63_phi;
+    let x_68 : array<i32, 10> = data;
+    data = array<i32, 10>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+    data = x_68;
+    let x_69 : i32 = (x_63 + 1);
+    x_64_phi = x_69;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_100 = (x_63 + 1);
+        x_64_phi = x_100;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_98 = (x_63 + 1);
+        x_64_phi = x_98;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_96 = (x_63 + 1);
+        x_64_phi = x_96;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_94 = (x_63 + 1);
+        x_64_phi = x_94;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_92 = (x_63 + 1);
+        x_64_phi = x_92;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_90 = (x_63 + 1);
+        x_64_phi = x_90;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_88 = (x_63 + 1);
+        x_64_phi = x_88;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_86 = (x_63 + 1);
+        x_64_phi = x_86;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_84 = (x_63 + 1);
+        x_64_phi = x_84;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_82 = (x_63 + 1);
+        x_64_phi = x_82;
+      }
+      default: {
+      }
+    }
+    let x_64 : i32 = x_64_phi;
+
+    continuing {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_103_phi = 0;
+  loop {
+    var x_104 : i32;
+    let x_103 : i32 = x_103_phi;
+    if ((x_103 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_109 : i32 = data[x_103];
+      temp[x_103] = x_109;
+      x_104 = (x_103 + 1);
+      x_103_phi = x_104;
+    }
+  }
+  x_112_phi = 1;
+  loop {
+    var x_113 : i32;
+    var x_119_phi : i32;
+    let x_112 : i32 = x_112_phi;
+    if ((x_112 <= 9)) {
+    } else {
+      break;
+    }
+    x_119_phi = 0;
+    loop {
+      var x_131 : i32;
+      var x_136 : i32;
+      var x_131_phi : i32;
+      var x_134_phi : i32;
+      var x_136_phi : i32;
+      var x_158_phi : i32;
+      var x_161_phi : i32;
+      var x_171_phi : i32;
+      let x_119 : i32 = x_119_phi;
+      if ((x_119 < 9)) {
+      } else {
+        break;
+      }
+      let x_125 : i32 = (x_119 + x_112);
+      let x_126 : i32 = (x_125 - 1);
+      let x_120 : i32 = (x_119 + (2 * x_112));
+      let x_129 : i32 = min((x_120 - 1), 9);
+      x_131_phi = x_119;
+      x_134_phi = x_125;
+      x_136_phi = x_119;
+      loop {
+        var x_151 : i32;
+        var x_154 : i32;
+        var x_135_phi : i32;
+        var x_137_phi : i32;
+        x_131 = x_131_phi;
+        let x_134 : i32 = x_134_phi;
+        x_136 = x_136_phi;
+        if (((x_136 <= x_126) && (x_134 <= x_129))) {
+        } else {
+          break;
+        }
+        let x_143 : ptr<function, i32> = &(data[x_136]);
+        let x_144 : i32 = *(x_143);
+        let x_145 : ptr<function, i32> = &(data[x_134]);
+        let x_146 : i32 = *(x_145);
+        let x_132 : i32 = bitcast<i32>((x_131 + bitcast<i32>(1)));
+        if ((x_144 < x_146)) {
+          x_151 = bitcast<i32>((x_136 + bitcast<i32>(1)));
+          let x_152 : i32 = *(x_143);
+          temp[x_131] = x_152;
+          x_135_phi = x_134;
+          x_137_phi = x_151;
+        } else {
+          x_154 = (x_134 + 1);
+          let x_155 : i32 = *(x_145);
+          temp[x_131] = x_155;
+          x_135_phi = x_154;
+          x_137_phi = x_136;
+        }
+        let x_135 : i32 = x_135_phi;
+        let x_137 : i32 = x_137_phi;
+
+        continuing {
+          x_131_phi = x_132;
+          x_134_phi = x_135;
+          x_136_phi = x_137;
+        }
+      }
+      x_158_phi = x_131;
+      x_161_phi = x_136;
+      loop {
+        var x_159 : i32;
+        var x_162 : i32;
+        let x_158 : i32 = x_158_phi;
+        let x_161 : i32 = x_161_phi;
+        if (((x_161 < 10) && (x_161 <= x_126))) {
+        } else {
+          break;
+        }
+
+        continuing {
+          x_159 = (x_158 + 1);
+          x_162 = (x_161 + 1);
+          let x_168 : i32 = data[x_161];
+          temp[x_158] = x_168;
+          x_158_phi = x_159;
+          x_161_phi = x_162;
+        }
+      }
+      x_171_phi = x_119;
+      loop {
+        var x_172 : i32;
+        let x_171 : i32 = x_171_phi;
+        if ((x_171 <= x_129)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_177 : i32 = temp[x_171];
+          data[x_171] = x_177;
+          x_172 = (x_171 + 1);
+          x_171_phi = x_172;
+        }
+      }
+
+      continuing {
+        x_119_phi = x_120;
+      }
+    }
+
+    continuing {
+      x_113 = (2 * x_112);
+      x_112_phi = x_113;
+    }
+  }
+  var x_181 : i32;
+  var x_199 : f32;
+  var x_261 : f32;
+  var x_262_phi : f32;
+  let x_180 : f32 = gl_FragCoord.y;
+  x_181 = i32(x_180);
+  if ((x_181 < 30)) {
+    let x_187 : i32 = data[0];
+    x_190 = (0.5 + (f32(x_187) * 0.100000001));
+    x_263_phi = x_190;
+  } else {
+    var x_208 : f32;
+    var x_260 : f32;
+    var x_261_phi : f32;
+    if ((x_181 < 60)) {
+      let x_196 : i32 = data[1];
+      x_199 = (0.5 + (f32(x_196) * 0.100000001));
+      x_262_phi = x_199;
+    } else {
+      var x_217 : f32;
+      var x_259 : f32;
+      var x_260_phi : f32;
+      if ((x_181 < 90)) {
+        let x_205 : i32 = data[2];
+        x_208 = (0.5 + (f32(x_205) * 0.100000001));
+        x_261_phi = x_208;
+      } else {
+        if ((x_181 < 120)) {
+          let x_214 : i32 = data[3];
+          x_217 = (0.5 + (f32(x_214) * 0.100000001));
+          x_260_phi = x_217;
+        } else {
+          var x_230 : f32;
+          var x_258 : f32;
+          var x_259_phi : f32;
+          if ((x_181 < 150)) {
+            discard;
+          } else {
+            var x_239 : f32;
+            var x_257 : f32;
+            var x_258_phi : f32;
+            if ((x_181 < 180)) {
+              let x_227 : i32 = data[5];
+              x_230 = (0.5 + (f32(x_227) * 0.100000001));
+              x_259_phi = x_230;
+            } else {
+              var x_248 : f32;
+              var x_256 : f32;
+              var x_257_phi : f32;
+              if ((x_181 < 210)) {
+                let x_236 : i32 = data[6];
+                x_239 = (0.5 + (f32(x_236) * 0.100000001));
+                x_258_phi = x_239;
+              } else {
+                if ((x_181 < 240)) {
+                  let x_245 : i32 = data[7];
+                  x_248 = (0.5 + (f32(x_245) * 0.100000001));
+                  x_257_phi = x_248;
+                } else {
+                  if ((x_181 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  let x_253 : i32 = data[8];
+                  x_256 = (0.5 + (f32(x_253) * 0.100000001));
+                  x_257_phi = x_256;
+                }
+                x_257 = x_257_phi;
+                x_258_phi = x_257;
+              }
+              x_258 = x_258_phi;
+              x_259_phi = x_258;
+            }
+            x_259 = x_259_phi;
+          }
+          x_260_phi = x_259;
+        }
+        x_260 = x_260_phi;
+        x_261_phi = x_260;
+      }
+      x_261 = x_261_phi;
+      x_262_phi = x_261;
+    }
+    x_262 = x_262_phi;
+    x_263_phi = x_262;
+  }
+  let x_263 : f32 = x_263_phi;
+  x_GLF_color = vec4<f32>(x_263, x_263, x_263, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm
new file mode 100644
index 0000000..ed7d367
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm
@@ -0,0 +1,383 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+%float_0_100000001 = OpConstant %float 0.100000001
+    %int_0_0 = OpConstant %int 0
+         %57 = OpConstantComposite %_arr_int_uint_10 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0
+       %main = OpFunction %void None %10
+         %58 = OpLabel
+       %temp = OpVariable %_ptr_Function__arr_int_uint_10 Function
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %60 = OpLoad %float %59
+         %61 = OpConvertFToS %int %60
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpPhi %int %61 %58 %64 %65
+               OpLoopMerge %66 %65 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpIAdd %int %63 %int_1
+               OpSelectionMerge %69 None
+               OpSwitch %63 %69 0 %70 1 %71 2 %72 3 %73 4 %74 5 %75 6 %76 7 %77 8 %78 9 %79
+         %70 = OpLabel
+         %80 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %80 %int_4
+         %81 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %71 = OpLabel
+         %82 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %82 %int_3
+         %83 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %72 = OpLabel
+         %84 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %84 %int_2
+         %85 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %73 = OpLabel
+         %86 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %86 %int_1
+         %87 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %74 = OpLabel
+         %88 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %88 %int_0
+         %89 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %75 = OpLabel
+         %90 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %90 %int_n1
+         %91 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %76 = OpLabel
+         %92 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %92 %int_n2
+         %93 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %77 = OpLabel
+         %94 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %94 %int_n3
+         %95 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %78 = OpLabel
+         %96 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %96 %int_n4
+         %97 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %79 = OpLabel
+         %98 = OpAccessChain %_ptr_Function_int %data %63
+               OpStore %98 %int_n5
+         %99 = OpIAdd %int %63 %int_1
+               OpBranch %69
+         %69 = OpLabel
+         %64 = OpPhi %int %68 %67 %81 %70 %83 %71 %85 %72 %87 %73 %89 %74 %91 %75 %93 %76 %95 %77 %97 %78 %99 %79
+               OpBranch %65
+         %65 = OpLabel
+        %100 = OpSLessThan %bool %64 %int_10
+               OpBranchConditional %100 %62 %66
+         %66 = OpLabel
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpPhi %int %int_0 %66 %103 %104
+        %105 = OpSLessThan %bool %102 %int_10
+               OpLoopMerge %106 %104 None
+               OpBranchConditional %105 %104 %106
+        %104 = OpLabel
+        %107 = OpAccessChain %_ptr_Function_int %data %102
+        %108 = OpLoad %int %107
+        %109 = OpAccessChain %_ptr_Function_int %temp %102
+               OpStore %109 %108
+        %103 = OpIAdd %int %102 %int_1
+               OpBranch %101
+        %106 = OpLabel
+               OpBranch %110
+        %110 = OpLabel
+        %111 = OpPhi %int %int_1 %106 %112 %113
+        %114 = OpSLessThanEqual %bool %111 %int_9
+               OpLoopMerge %115 %113 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpPhi %int %int_0 %116 %119 %120
+        %121 = OpSLessThan %bool %118 %int_9
+               OpLoopMerge %122 %120 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+        %124 = OpIAdd %int %118 %111
+        %125 = OpISub %int %124 %int_1
+        %126 = OpIMul %int %int_2 %111
+        %119 = OpIAdd %int %118 %126
+        %127 = OpISub %int %119 %int_1
+        %128 = OpExtInst %int %1 SMin %127 %int_9
+               OpBranch %129
+        %129 = OpLabel
+        %130 = OpPhi %int %118 %123 %131 %132
+        %133 = OpPhi %int %124 %123 %134 %132
+        %135 = OpPhi %int %118 %123 %136 %132
+        %137 = OpSLessThanEqual %bool %135 %125
+        %138 = OpSLessThanEqual %bool %133 %128
+        %139 = OpLogicalAnd %bool %137 %138
+               OpLoopMerge %140 %132 None
+               OpBranchConditional %139 %141 %140
+        %141 = OpLabel
+        %142 = OpAccessChain %_ptr_Function_int %data %135
+        %143 = OpLoad %int %142
+        %144 = OpAccessChain %_ptr_Function_int %data %133
+        %145 = OpLoad %int %144
+        %146 = OpSLessThan %bool %143 %145
+        %131 = OpIAdd %int %130 %int_1
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %149
+        %148 = OpLabel
+        %150 = OpIAdd %int %135 %int_1
+        %151 = OpLoad %int %142
+        %152 = OpAccessChain %_ptr_Function_int %temp %130
+               OpStore %152 %151
+               OpBranch %147
+        %149 = OpLabel
+        %153 = OpIAdd %int %133 %int_1
+        %154 = OpLoad %int %144
+        %155 = OpAccessChain %_ptr_Function_int %temp %130
+               OpStore %155 %154
+               OpBranch %147
+        %147 = OpLabel
+        %134 = OpPhi %int %133 %148 %153 %149
+        %136 = OpPhi %int %150 %148 %135 %149
+               OpBranch %132
+        %132 = OpLabel
+               OpBranch %129
+        %140 = OpLabel
+               OpBranch %156
+        %156 = OpLabel
+        %157 = OpPhi %int %130 %140 %158 %159
+        %160 = OpPhi %int %135 %140 %161 %159
+        %162 = OpSLessThan %bool %160 %int_10
+        %163 = OpSLessThanEqual %bool %160 %125
+        %164 = OpLogicalAnd %bool %162 %163
+               OpLoopMerge %165 %159 None
+               OpBranchConditional %164 %159 %165
+        %159 = OpLabel
+        %158 = OpIAdd %int %157 %int_1
+        %161 = OpIAdd %int %160 %int_1
+        %166 = OpAccessChain %_ptr_Function_int %data %160
+        %167 = OpLoad %int %166
+        %168 = OpAccessChain %_ptr_Function_int %temp %157
+               OpStore %168 %167
+               OpBranch %156
+        %165 = OpLabel
+               OpBranch %169
+        %169 = OpLabel
+        %170 = OpPhi %int %118 %165 %171 %172
+        %173 = OpSLessThanEqual %bool %170 %128
+               OpLoopMerge %174 %172 None
+               OpBranchConditional %173 %172 %174
+        %172 = OpLabel
+        %175 = OpAccessChain %_ptr_Function_int %temp %170
+        %176 = OpLoad %int %175
+        %177 = OpAccessChain %_ptr_Function_int %data %170
+               OpStore %177 %176
+        %171 = OpIAdd %int %170 %int_1
+               OpBranch %169
+        %174 = OpLabel
+               OpBranch %120
+        %120 = OpLabel
+               OpBranch %117
+        %122 = OpLabel
+               OpBranch %113
+        %113 = OpLabel
+        %112 = OpIMul %int %int_2 %111
+               OpBranch %110
+        %115 = OpLabel
+        %178 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %179 = OpLoad %float %178
+        %180 = OpConvertFToS %int %179
+        %181 = OpSLessThan %bool %180 %int_30
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %184
+        %183 = OpLabel
+        %185 = OpAccessChain %_ptr_Function_int %data %int_0
+        %186 = OpLoad %int %185
+        %187 = OpConvertSToF %float %186
+        %188 = OpFMul %float %187 %float_0_100000001
+        %189 = OpFAdd %float %float_0_5 %188
+               OpBranch %182
+        %184 = OpLabel
+        %190 = OpSLessThan %bool %180 %int_60
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %193
+        %192 = OpLabel
+        %194 = OpAccessChain %_ptr_Function_int %data %int_1
+        %195 = OpLoad %int %194
+        %196 = OpConvertSToF %float %195
+        %197 = OpFMul %float %196 %float_0_100000001
+        %198 = OpFAdd %float %float_0_5 %197
+               OpBranch %191
+        %193 = OpLabel
+        %199 = OpSLessThan %bool %180 %int_90
+               OpSelectionMerge %200 None
+               OpBranchConditional %199 %201 %202
+        %201 = OpLabel
+        %203 = OpAccessChain %_ptr_Function_int %data %int_2
+        %204 = OpLoad %int %203
+        %205 = OpConvertSToF %float %204
+        %206 = OpFMul %float %205 %float_0_100000001
+        %207 = OpFAdd %float %float_0_5 %206
+               OpBranch %200
+        %202 = OpLabel
+        %208 = OpSLessThan %bool %180 %int_120
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %211
+        %210 = OpLabel
+        %212 = OpAccessChain %_ptr_Function_int %data %int_3
+        %213 = OpLoad %int %212
+        %214 = OpConvertSToF %float %213
+        %215 = OpFMul %float %214 %float_0_100000001
+        %216 = OpFAdd %float %float_0_5 %215
+               OpBranch %209
+        %211 = OpLabel
+        %217 = OpSLessThan %bool %180 %int_150
+               OpSelectionMerge %218 None
+               OpBranchConditional %217 %219 %220
+        %219 = OpLabel
+               OpKill
+        %220 = OpLabel
+        %221 = OpSLessThan %bool %180 %int_180
+               OpSelectionMerge %222 None
+               OpBranchConditional %221 %223 %224
+        %223 = OpLabel
+        %225 = OpAccessChain %_ptr_Function_int %data %int_5
+        %226 = OpLoad %int %225
+        %227 = OpConvertSToF %float %226
+        %228 = OpFMul %float %227 %float_0_100000001
+        %229 = OpFAdd %float %float_0_5 %228
+               OpBranch %222
+        %224 = OpLabel
+        %230 = OpSLessThan %bool %180 %int_210
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %233
+        %232 = OpLabel
+        %234 = OpAccessChain %_ptr_Function_int %data %int_6
+        %235 = OpLoad %int %234
+        %236 = OpConvertSToF %float %235
+        %237 = OpFMul %float %236 %float_0_100000001
+        %238 = OpFAdd %float %float_0_5 %237
+               OpBranch %231
+        %233 = OpLabel
+        %239 = OpSLessThan %bool %180 %int_240
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %242
+        %241 = OpLabel
+        %243 = OpAccessChain %_ptr_Function_int %data %int_7
+        %244 = OpLoad %int %243
+        %245 = OpConvertSToF %float %244
+        %246 = OpFMul %float %245 %float_0_100000001
+        %247 = OpFAdd %float %float_0_5 %246
+               OpBranch %240
+        %242 = OpLabel
+        %248 = OpSLessThan %bool %180 %int_270
+               OpSelectionMerge %249 None
+               OpBranchConditional %248 %249 %250
+        %249 = OpLabel
+        %251 = OpAccessChain %_ptr_Function_int %data %int_8
+        %252 = OpLoad %int %251
+        %253 = OpConvertSToF %float %252
+        %254 = OpFMul %float %253 %float_0_100000001
+        %255 = OpFAdd %float %float_0_5 %254
+               OpBranch %240
+        %250 = OpLabel
+               OpKill
+        %240 = OpLabel
+        %256 = OpPhi %float %247 %241 %255 %249
+               OpBranch %231
+        %231 = OpLabel
+        %257 = OpPhi %float %238 %232 %256 %240
+               OpBranch %222
+        %222 = OpLabel
+        %258 = OpPhi %float %229 %223 %257 %231
+               OpBranch %218
+        %218 = OpLabel
+               OpBranch %209
+        %209 = OpLabel
+        %259 = OpPhi %float %216 %210 %258 %218
+               OpBranch %200
+        %200 = OpLabel
+        %260 = OpPhi %float %207 %201 %259 %209
+               OpBranch %191
+        %191 = OpLabel
+        %261 = OpPhi %float %198 %192 %260 %200
+               OpBranch %182
+        %182 = OpLabel
+        %262 = OpPhi %float %189 %183 %261 %191
+        %263 = OpCompositeConstruct %v4float %262 %262 %262 %float_1
+               OpStore %_GLF_color %263
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.hlsl
new file mode 100644
index 0000000..3b86173
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.hlsl
@@ -0,0 +1,352 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+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() {
+  int temp[10] = (int[10])0;
+  int data[10] = (int[10])0;
+  float x_189 = 0.0f;
+  float x_261 = 0.0f;
+  int x_63_phi = 0;
+  int x_102_phi = 0;
+  int x_111_phi = 0;
+  float x_262_phi = 0.0f;
+  const float x_60 = asfloat(x_8[0].x);
+  const int x_61 = int(x_60);
+  x_63_phi = x_61;
+  while (true) {
+    int x_99 = 0;
+    int x_97 = 0;
+    int x_95 = 0;
+    int x_93 = 0;
+    int x_91 = 0;
+    int x_89 = 0;
+    int x_87 = 0;
+    int x_85 = 0;
+    int x_83 = 0;
+    int x_81 = 0;
+    int x_64_phi = 0;
+    const int x_63 = x_63_phi;
+    const int x_68 = (x_63 + 1);
+    x_64_phi = x_68;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_99 = (x_63 + 1);
+        x_64_phi = x_99;
+        break;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_97 = (x_63 + 1);
+        x_64_phi = x_97;
+        break;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_95 = (x_63 + 1);
+        x_64_phi = x_95;
+        break;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_93 = (x_63 + 1);
+        x_64_phi = x_93;
+        break;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_91 = (x_63 + 1);
+        x_64_phi = x_91;
+        break;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_89 = (x_63 + 1);
+        x_64_phi = x_89;
+        break;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_87 = (x_63 + 1);
+        x_64_phi = x_87;
+        break;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_85 = (x_63 + 1);
+        x_64_phi = x_85;
+        break;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_83 = (x_63 + 1);
+        x_64_phi = x_83;
+        break;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_81 = (x_63 + 1);
+        x_64_phi = x_81;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    const int x_64 = x_64_phi;
+    {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_102_phi = 0;
+  while (true) {
+    int x_103 = 0;
+    const int x_102 = x_102_phi;
+    if ((x_102 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const int x_108 = data[x_102];
+      temp[x_102] = x_108;
+      x_103 = (x_102 + 1);
+      x_102_phi = x_103;
+    }
+  }
+  x_111_phi = 1;
+  while (true) {
+    int x_112 = 0;
+    int x_118_phi = 0;
+    const int x_111 = x_111_phi;
+    if ((x_111 <= 9)) {
+    } else {
+      break;
+    }
+    x_118_phi = 0;
+    while (true) {
+      int x_130 = 0;
+      int x_135 = 0;
+      int x_130_phi = 0;
+      int x_133_phi = 0;
+      int x_135_phi = 0;
+      int x_157_phi = 0;
+      int x_160_phi = 0;
+      int x_170_phi = 0;
+      const int x_118 = x_118_phi;
+      if ((x_118 < 9)) {
+      } else {
+        break;
+      }
+      const int x_124 = (x_118 + x_111);
+      const int x_125 = (x_124 - 1);
+      const int x_119 = (x_118 + (2 * x_111));
+      const int x_128 = min((x_119 - 1), 9);
+      x_130_phi = x_118;
+      x_133_phi = x_124;
+      x_135_phi = x_118;
+      while (true) {
+        int x_150 = 0;
+        int x_153 = 0;
+        int x_134_phi = 0;
+        int x_136_phi = 0;
+        x_130 = x_130_phi;
+        const int x_133 = x_133_phi;
+        x_135 = x_135_phi;
+        bool tint_tmp = (x_135 <= x_125);
+        if (tint_tmp) {
+          tint_tmp = (x_133 <= x_128);
+        }
+        if ((tint_tmp)) {
+        } else {
+          break;
+        }
+        const int x_142_save = x_135;
+        const int x_143 = data[x_142_save];
+        const int x_144_save = x_133;
+        const int x_145 = data[x_144_save];
+        const int x_131 = asint((x_130 + asint(1)));
+        if ((x_143 < x_145)) {
+          x_150 = asint((x_135 + asint(1)));
+          const int x_151 = data[x_142_save];
+          temp[x_130] = x_151;
+          x_134_phi = x_133;
+          x_136_phi = x_150;
+        } else {
+          x_153 = (x_133 + 1);
+          const int x_154 = data[x_144_save];
+          temp[x_130] = x_154;
+          x_134_phi = x_153;
+          x_136_phi = x_135;
+        }
+        const int x_134 = x_134_phi;
+        const int x_136 = x_136_phi;
+        {
+          x_130_phi = x_131;
+          x_133_phi = x_134;
+          x_135_phi = x_136;
+        }
+      }
+      x_157_phi = x_130;
+      x_160_phi = x_135;
+      while (true) {
+        int x_158 = 0;
+        int x_161 = 0;
+        const int x_157 = x_157_phi;
+        const int x_160 = x_160_phi;
+        bool tint_tmp_1 = (x_160 < 10);
+        if (tint_tmp_1) {
+          tint_tmp_1 = (x_160 <= x_125);
+        }
+        if ((tint_tmp_1)) {
+        } else {
+          break;
+        }
+        {
+          x_158 = (x_157 + 1);
+          x_161 = (x_160 + 1);
+          const int x_167 = data[x_160];
+          temp[x_157] = x_167;
+          x_157_phi = x_158;
+          x_160_phi = x_161;
+        }
+      }
+      x_170_phi = x_118;
+      while (true) {
+        int x_171 = 0;
+        const int x_170 = x_170_phi;
+        if ((x_170 <= x_128)) {
+        } else {
+          break;
+        }
+        {
+          const int x_176 = temp[x_170];
+          data[x_170] = x_176;
+          x_171 = (x_170 + 1);
+          x_170_phi = x_171;
+        }
+      }
+      {
+        x_118_phi = x_119;
+      }
+    }
+    {
+      x_112 = (2 * x_111);
+      x_111_phi = x_112;
+    }
+  }
+  int x_180 = 0;
+  float x_198 = 0.0f;
+  float x_260 = 0.0f;
+  float x_261_phi = 0.0f;
+  const float x_179 = gl_FragCoord.y;
+  x_180 = int(x_179);
+  if ((x_180 < 30)) {
+    const int x_186 = data[0];
+    x_189 = (0.5f + (float(x_186) * 0.100000001f));
+    x_262_phi = x_189;
+  } else {
+    float x_207 = 0.0f;
+    float x_259 = 0.0f;
+    float x_260_phi = 0.0f;
+    if ((x_180 < 60)) {
+      const int x_195 = data[1];
+      x_198 = (0.5f + (float(x_195) * 0.100000001f));
+      x_261_phi = x_198;
+    } else {
+      float x_216 = 0.0f;
+      float x_258 = 0.0f;
+      float x_259_phi = 0.0f;
+      if ((x_180 < 90)) {
+        const int x_204 = data[2];
+        x_207 = (0.5f + (float(x_204) * 0.100000001f));
+        x_260_phi = x_207;
+      } else {
+        if ((x_180 < 120)) {
+          const int x_213 = data[3];
+          x_216 = (0.5f + (float(x_213) * 0.100000001f));
+          x_259_phi = x_216;
+        } else {
+          float x_229 = 0.0f;
+          float x_257 = 0.0f;
+          float x_258_phi = 0.0f;
+          if ((x_180 < 150)) {
+            discard;
+          } else {
+            float x_238 = 0.0f;
+            float x_256 = 0.0f;
+            float x_257_phi = 0.0f;
+            if ((x_180 < 180)) {
+              const int x_226 = data[5];
+              x_229 = (0.5f + (float(x_226) * 0.100000001f));
+              x_258_phi = x_229;
+            } else {
+              float x_247 = 0.0f;
+              float x_255 = 0.0f;
+              float x_256_phi = 0.0f;
+              if ((x_180 < 210)) {
+                const int x_235 = data[6];
+                x_238 = (0.5f + (float(x_235) * 0.100000001f));
+                x_257_phi = x_238;
+              } else {
+                if ((x_180 < 240)) {
+                  const int x_244 = data[7];
+                  x_247 = (0.5f + (float(x_244) * 0.100000001f));
+                  x_256_phi = x_247;
+                } else {
+                  if ((x_180 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  const int x_252 = data[8];
+                  x_255 = (0.5f + (float(x_252) * 0.100000001f));
+                  x_256_phi = x_255;
+                }
+                x_256 = x_256_phi;
+                x_257_phi = x_256;
+              }
+              x_257 = x_257_phi;
+              x_258_phi = x_257;
+            }
+            x_258 = x_258_phi;
+          }
+          x_259_phi = x_258;
+        }
+        x_259 = x_259_phi;
+        x_260_phi = x_259;
+      }
+      x_260 = x_260_phi;
+      x_261_phi = x_260;
+    }
+    x_261 = x_261_phi;
+    x_262_phi = x_261;
+  }
+  const float x_262 = x_262_phi;
+  x_GLF_color = float4(x_262, x_262, x_262, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.msl
new file mode 100644
index 0000000..64e598b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.msl
@@ -0,0 +1,346 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  tint_array_wrapper temp = {};
+  tint_array_wrapper data = {};
+  float x_189 = 0.0f;
+  float x_261 = 0.0f;
+  int x_63_phi = 0;
+  int x_102_phi = 0;
+  int x_111_phi = 0;
+  float x_262_phi = 0.0f;
+  float const x_60 = x_8.injectionSwitch.x;
+  int const x_61 = int(x_60);
+  x_63_phi = x_61;
+  while (true) {
+    int x_99 = 0;
+    int x_97 = 0;
+    int x_95 = 0;
+    int x_93 = 0;
+    int x_91 = 0;
+    int x_89 = 0;
+    int x_87 = 0;
+    int x_85 = 0;
+    int x_83 = 0;
+    int x_81 = 0;
+    int x_64_phi = 0;
+    int const x_63 = x_63_phi;
+    int const x_68 = (x_63 + 1);
+    x_64_phi = x_68;
+    switch(x_63) {
+      case 9: {
+        data.arr[x_63] = -5;
+        x_99 = (x_63 + 1);
+        x_64_phi = x_99;
+        break;
+      }
+      case 8: {
+        data.arr[x_63] = -4;
+        x_97 = (x_63 + 1);
+        x_64_phi = x_97;
+        break;
+      }
+      case 7: {
+        data.arr[x_63] = -3;
+        x_95 = (x_63 + 1);
+        x_64_phi = x_95;
+        break;
+      }
+      case 6: {
+        data.arr[x_63] = -2;
+        x_93 = (x_63 + 1);
+        x_64_phi = x_93;
+        break;
+      }
+      case 5: {
+        data.arr[x_63] = -1;
+        x_91 = (x_63 + 1);
+        x_64_phi = x_91;
+        break;
+      }
+      case 4: {
+        data.arr[x_63] = 0;
+        x_89 = (x_63 + 1);
+        x_64_phi = x_89;
+        break;
+      }
+      case 3: {
+        data.arr[x_63] = 1;
+        x_87 = (x_63 + 1);
+        x_64_phi = x_87;
+        break;
+      }
+      case 2: {
+        data.arr[x_63] = 2;
+        x_85 = (x_63 + 1);
+        x_64_phi = x_85;
+        break;
+      }
+      case 1: {
+        data.arr[x_63] = 3;
+        x_83 = (x_63 + 1);
+        x_64_phi = x_83;
+        break;
+      }
+      case 0: {
+        data.arr[x_63] = 4;
+        x_81 = (x_63 + 1);
+        x_64_phi = x_81;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_64 = x_64_phi;
+    {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_102_phi = 0;
+  while (true) {
+    int x_103 = 0;
+    int const x_102 = x_102_phi;
+    if ((x_102 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_108 = data.arr[x_102];
+      temp.arr[x_102] = x_108;
+      x_103 = (x_102 + 1);
+      x_102_phi = x_103;
+    }
+  }
+  x_111_phi = 1;
+  while (true) {
+    int x_112 = 0;
+    int x_118_phi = 0;
+    int const x_111 = x_111_phi;
+    if ((x_111 <= 9)) {
+    } else {
+      break;
+    }
+    x_118_phi = 0;
+    while (true) {
+      int x_130 = 0;
+      int x_135 = 0;
+      int x_130_phi = 0;
+      int x_133_phi = 0;
+      int x_135_phi = 0;
+      int x_157_phi = 0;
+      int x_160_phi = 0;
+      int x_170_phi = 0;
+      int const x_118 = x_118_phi;
+      if ((x_118 < 9)) {
+      } else {
+        break;
+      }
+      int const x_124 = (x_118 + x_111);
+      int const x_125 = (x_124 - 1);
+      int const x_119 = (x_118 + (2 * x_111));
+      int const x_128 = min((x_119 - 1), 9);
+      x_130_phi = x_118;
+      x_133_phi = x_124;
+      x_135_phi = x_118;
+      while (true) {
+        int x_150 = 0;
+        int x_153 = 0;
+        int x_134_phi = 0;
+        int x_136_phi = 0;
+        x_130 = x_130_phi;
+        int const x_133 = x_133_phi;
+        x_135 = x_135_phi;
+        if (((x_135 <= x_125) && (x_133 <= x_128))) {
+        } else {
+          break;
+        }
+        int const x_142_save = x_135;
+        int const x_143 = data.arr[x_142_save];
+        int const x_144_save = x_133;
+        int const x_145 = data.arr[x_144_save];
+        int const x_131 = as_type<int>((x_130 + as_type<int>(1)));
+        if ((x_143 < x_145)) {
+          x_150 = as_type<int>((x_135 + as_type<int>(1)));
+          int const x_151 = data.arr[x_142_save];
+          temp.arr[x_130] = x_151;
+          x_134_phi = x_133;
+          x_136_phi = x_150;
+        } else {
+          x_153 = (x_133 + 1);
+          int const x_154 = data.arr[x_144_save];
+          temp.arr[x_130] = x_154;
+          x_134_phi = x_153;
+          x_136_phi = x_135;
+        }
+        int const x_134 = x_134_phi;
+        int const x_136 = x_136_phi;
+        {
+          x_130_phi = x_131;
+          x_133_phi = x_134;
+          x_135_phi = x_136;
+        }
+      }
+      x_157_phi = x_130;
+      x_160_phi = x_135;
+      while (true) {
+        int x_158 = 0;
+        int x_161 = 0;
+        int const x_157 = x_157_phi;
+        int const x_160 = x_160_phi;
+        if (((x_160 < 10) && (x_160 <= x_125))) {
+        } else {
+          break;
+        }
+        {
+          x_158 = (x_157 + 1);
+          x_161 = (x_160 + 1);
+          int const x_167 = data.arr[x_160];
+          temp.arr[x_157] = x_167;
+          x_157_phi = x_158;
+          x_160_phi = x_161;
+        }
+      }
+      x_170_phi = x_118;
+      while (true) {
+        int x_171 = 0;
+        int const x_170 = x_170_phi;
+        if ((x_170 <= x_128)) {
+        } else {
+          break;
+        }
+        {
+          int const x_176 = temp.arr[x_170];
+          data.arr[x_170] = x_176;
+          x_171 = (x_170 + 1);
+          x_170_phi = x_171;
+        }
+      }
+      {
+        x_118_phi = x_119;
+      }
+    }
+    {
+      x_112 = (2 * x_111);
+      x_111_phi = x_112;
+    }
+  }
+  int x_180 = 0;
+  float x_198 = 0.0f;
+  float x_260 = 0.0f;
+  float x_261_phi = 0.0f;
+  float const x_179 = (*(tint_symbol_5)).y;
+  x_180 = int(x_179);
+  if ((x_180 < 30)) {
+    int const x_186 = data.arr[0];
+    x_189 = (0.5f + (float(x_186) * 0.100000001f));
+    x_262_phi = x_189;
+  } else {
+    float x_207 = 0.0f;
+    float x_259 = 0.0f;
+    float x_260_phi = 0.0f;
+    if ((x_180 < 60)) {
+      int const x_195 = data.arr[1];
+      x_198 = (0.5f + (float(x_195) * 0.100000001f));
+      x_261_phi = x_198;
+    } else {
+      float x_216 = 0.0f;
+      float x_258 = 0.0f;
+      float x_259_phi = 0.0f;
+      if ((x_180 < 90)) {
+        int const x_204 = data.arr[2];
+        x_207 = (0.5f + (float(x_204) * 0.100000001f));
+        x_260_phi = x_207;
+      } else {
+        if ((x_180 < 120)) {
+          int const x_213 = data.arr[3];
+          x_216 = (0.5f + (float(x_213) * 0.100000001f));
+          x_259_phi = x_216;
+        } else {
+          float x_229 = 0.0f;
+          float x_257 = 0.0f;
+          float x_258_phi = 0.0f;
+          if ((x_180 < 150)) {
+            discard_fragment();
+          } else {
+            float x_238 = 0.0f;
+            float x_256 = 0.0f;
+            float x_257_phi = 0.0f;
+            if ((x_180 < 180)) {
+              int const x_226 = data.arr[5];
+              x_229 = (0.5f + (float(x_226) * 0.100000001f));
+              x_258_phi = x_229;
+            } else {
+              float x_247 = 0.0f;
+              float x_255 = 0.0f;
+              float x_256_phi = 0.0f;
+              if ((x_180 < 210)) {
+                int const x_235 = data.arr[6];
+                x_238 = (0.5f + (float(x_235) * 0.100000001f));
+                x_257_phi = x_238;
+              } else {
+                if ((x_180 < 240)) {
+                  int const x_244 = data.arr[7];
+                  x_247 = (0.5f + (float(x_244) * 0.100000001f));
+                  x_256_phi = x_247;
+                } else {
+                  if ((x_180 < 270)) {
+                  } else {
+                    discard_fragment();
+                  }
+                  int const x_252 = data.arr[8];
+                  x_255 = (0.5f + (float(x_252) * 0.100000001f));
+                  x_256_phi = x_255;
+                }
+                x_256 = x_256_phi;
+                x_257_phi = x_256;
+              }
+              x_257 = x_257_phi;
+              x_258_phi = x_257;
+            }
+            x_258 = x_258_phi;
+          }
+          x_259_phi = x_258;
+        }
+        x_259 = x_259_phi;
+        x_260_phi = x_259;
+      }
+      x_260 = x_260_phi;
+      x_261_phi = x_260;
+    }
+    x_261 = x_261_phi;
+    x_262_phi = x_261;
+  }
+  float const x_262 = x_262_phi;
+  *(tint_symbol_6) = float4(x_262, x_262, x_262, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.spvasm
new file mode 100644
index 0000000..105bea0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.spvasm
@@ -0,0 +1,742 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 422
+; Schema: 0
+               OpCapability Shader
+        %167 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %temp "temp"
+               OpName %data "data"
+               OpName %x_189 "x_189"
+               OpName %x_261 "x_261"
+               OpName %x_63_phi "x_63_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %x_111_phi "x_111_phi"
+               OpName %x_262_phi "x_262_phi"
+               OpName %x_99 "x_99"
+               OpName %x_97 "x_97"
+               OpName %x_95 "x_95"
+               OpName %x_93 "x_93"
+               OpName %x_91 "x_91"
+               OpName %x_89 "x_89"
+               OpName %x_87 "x_87"
+               OpName %x_85 "x_85"
+               OpName %x_83 "x_83"
+               OpName %x_81 "x_81"
+               OpName %x_64_phi "x_64_phi"
+               OpName %x_103 "x_103"
+               OpName %x_112 "x_112"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_130 "x_130"
+               OpName %x_135 "x_135"
+               OpName %x_130_phi "x_130_phi"
+               OpName %x_133_phi "x_133_phi"
+               OpName %x_135_phi "x_135_phi"
+               OpName %x_157_phi "x_157_phi"
+               OpName %x_160_phi "x_160_phi"
+               OpName %x_170_phi "x_170_phi"
+               OpName %x_150 "x_150"
+               OpName %x_153 "x_153"
+               OpName %x_134_phi "x_134_phi"
+               OpName %x_136_phi "x_136_phi"
+               OpName %x_158 "x_158"
+               OpName %x_161 "x_161"
+               OpName %x_171 "x_171"
+               OpName %x_180 "x_180"
+               OpName %x_198 "x_198"
+               OpName %x_260 "x_260"
+               OpName %x_261_phi "x_261_phi"
+               OpName %x_207 "x_207"
+               OpName %x_259 "x_259"
+               OpName %x_260_phi "x_260_phi"
+               OpName %x_216 "x_216"
+               OpName %x_258 "x_258"
+               OpName %x_259_phi "x_259_phi"
+               OpName %x_229 "x_229"
+               OpName %x_257 "x_257"
+               OpName %x_258_phi "x_258_phi"
+               OpName %x_238 "x_238"
+               OpName %x_256 "x_256"
+               OpName %x_257_phi "x_257_phi"
+               OpName %x_247 "x_247"
+               OpName %x_255 "x_255"
+               OpName %x_256_phi "x_256_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %25 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+%float_0_100000001 = OpConstant %float 0.100000001
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %409 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %temp = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+      %x_189 = OpVariable %_ptr_Function_float Function %29
+      %x_261 = OpVariable %_ptr_Function_float Function %29
+   %x_63_phi = OpVariable %_ptr_Function_int Function %33
+  %x_102_phi = OpVariable %_ptr_Function_int Function %33
+  %x_111_phi = OpVariable %_ptr_Function_int Function %33
+  %x_262_phi = OpVariable %_ptr_Function_float Function %29
+       %x_99 = OpVariable %_ptr_Function_int Function %33
+       %x_97 = OpVariable %_ptr_Function_int Function %33
+       %x_95 = OpVariable %_ptr_Function_int Function %33
+       %x_93 = OpVariable %_ptr_Function_int Function %33
+       %x_91 = OpVariable %_ptr_Function_int Function %33
+       %x_89 = OpVariable %_ptr_Function_int Function %33
+       %x_87 = OpVariable %_ptr_Function_int Function %33
+       %x_85 = OpVariable %_ptr_Function_int Function %33
+       %x_83 = OpVariable %_ptr_Function_int Function %33
+       %x_81 = OpVariable %_ptr_Function_int Function %33
+   %x_64_phi = OpVariable %_ptr_Function_int Function %33
+      %x_103 = OpVariable %_ptr_Function_int Function %33
+      %x_112 = OpVariable %_ptr_Function_int Function %33
+  %x_118_phi = OpVariable %_ptr_Function_int Function %33
+      %x_130 = OpVariable %_ptr_Function_int Function %33
+      %x_135 = OpVariable %_ptr_Function_int Function %33
+  %x_130_phi = OpVariable %_ptr_Function_int Function %33
+  %x_133_phi = OpVariable %_ptr_Function_int Function %33
+  %x_135_phi = OpVariable %_ptr_Function_int Function %33
+  %x_157_phi = OpVariable %_ptr_Function_int Function %33
+  %x_160_phi = OpVariable %_ptr_Function_int Function %33
+  %x_170_phi = OpVariable %_ptr_Function_int Function %33
+      %x_150 = OpVariable %_ptr_Function_int Function %33
+      %x_153 = OpVariable %_ptr_Function_int Function %33
+  %x_134_phi = OpVariable %_ptr_Function_int Function %33
+  %x_136_phi = OpVariable %_ptr_Function_int Function %33
+      %x_158 = OpVariable %_ptr_Function_int Function %33
+      %x_161 = OpVariable %_ptr_Function_int Function %33
+      %x_171 = OpVariable %_ptr_Function_int Function %33
+      %x_180 = OpVariable %_ptr_Function_int Function %33
+      %x_198 = OpVariable %_ptr_Function_float Function %29
+      %x_260 = OpVariable %_ptr_Function_float Function %29
+  %x_261_phi = OpVariable %_ptr_Function_float Function %29
+      %x_207 = OpVariable %_ptr_Function_float Function %29
+      %x_259 = OpVariable %_ptr_Function_float Function %29
+  %x_260_phi = OpVariable %_ptr_Function_float Function %29
+      %x_216 = OpVariable %_ptr_Function_float Function %29
+      %x_258 = OpVariable %_ptr_Function_float Function %29
+  %x_259_phi = OpVariable %_ptr_Function_float Function %29
+      %x_229 = OpVariable %_ptr_Function_float Function %29
+      %x_257 = OpVariable %_ptr_Function_float Function %29
+  %x_258_phi = OpVariable %_ptr_Function_float Function %29
+      %x_238 = OpVariable %_ptr_Function_float Function %29
+      %x_256 = OpVariable %_ptr_Function_float Function %29
+  %x_257_phi = OpVariable %_ptr_Function_float Function %29
+      %x_247 = OpVariable %_ptr_Function_float Function %29
+      %x_255 = OpVariable %_ptr_Function_float Function %29
+  %x_256_phi = OpVariable %_ptr_Function_float Function %29
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+               OpStore %x_63_phi %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %57 = OpLoad %int %x_63_phi
+         %59 = OpIAdd %int %57 %int_1
+               OpStore %x_64_phi %59
+               OpSelectionMerge %60 None
+               OpSwitch %57 %61 9 %62 8 %63 7 %64 6 %65 5 %66 4 %67 3 %68 2 %69 1 %70 0 %71
+         %62 = OpLabel
+         %72 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %72 %int_n5
+         %74 = OpIAdd %int %57 %int_1
+               OpStore %x_99 %74
+         %75 = OpLoad %int %x_99
+               OpStore %x_64_phi %75
+               OpBranch %60
+         %63 = OpLabel
+         %76 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %76 %int_n4
+         %78 = OpIAdd %int %57 %int_1
+               OpStore %x_97 %78
+         %79 = OpLoad %int %x_97
+               OpStore %x_64_phi %79
+               OpBranch %60
+         %64 = OpLabel
+         %80 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %80 %int_n3
+         %82 = OpIAdd %int %57 %int_1
+               OpStore %x_95 %82
+         %83 = OpLoad %int %x_95
+               OpStore %x_64_phi %83
+               OpBranch %60
+         %65 = OpLabel
+         %84 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %84 %int_n2
+         %86 = OpIAdd %int %57 %int_1
+               OpStore %x_93 %86
+         %87 = OpLoad %int %x_93
+               OpStore %x_64_phi %87
+               OpBranch %60
+         %66 = OpLabel
+         %88 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %88 %int_n1
+         %90 = OpIAdd %int %57 %int_1
+               OpStore %x_91 %90
+         %91 = OpLoad %int %x_91
+               OpStore %x_64_phi %91
+               OpBranch %60
+         %67 = OpLabel
+         %92 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %92 %int_0
+         %94 = OpIAdd %int %57 %int_1
+               OpStore %x_89 %94
+         %95 = OpLoad %int %x_89
+               OpStore %x_64_phi %95
+               OpBranch %60
+         %68 = OpLabel
+         %96 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %96 %int_1
+         %97 = OpIAdd %int %57 %int_1
+               OpStore %x_87 %97
+         %98 = OpLoad %int %x_87
+               OpStore %x_64_phi %98
+               OpBranch %60
+         %69 = OpLabel
+         %99 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %99 %int_2
+        %101 = OpIAdd %int %57 %int_1
+               OpStore %x_85 %101
+        %102 = OpLoad %int %x_85
+               OpStore %x_64_phi %102
+               OpBranch %60
+         %70 = OpLabel
+        %103 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %103 %int_3
+        %105 = OpIAdd %int %57 %int_1
+               OpStore %x_83 %105
+        %106 = OpLoad %int %x_83
+               OpStore %x_64_phi %106
+               OpBranch %60
+         %71 = OpLabel
+        %107 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %107 %int_4
+        %109 = OpIAdd %int %57 %int_1
+               OpStore %x_81 %109
+        %110 = OpLoad %int %x_81
+               OpStore %x_64_phi %110
+               OpBranch %60
+         %61 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+        %111 = OpLoad %int %x_64_phi
+               OpBranch %44
+         %44 = OpLabel
+               OpStore %x_63_phi %111
+        %113 = OpSLessThan %bool %111 %int_10
+               OpSelectionMerge %115 None
+               OpBranchConditional %113 %116 %117
+        %116 = OpLabel
+               OpBranch %115
+        %117 = OpLabel
+               OpBranch %43
+        %115 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpStore %x_102_phi %int_0
+               OpBranch %118
+        %118 = OpLabel
+               OpLoopMerge %119 %120 None
+               OpBranch %121
+        %121 = OpLabel
+        %123 = OpLoad %int %x_102_phi
+        %124 = OpSLessThan %bool %123 %int_10
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %127
+        %126 = OpLabel
+               OpBranch %125
+        %127 = OpLabel
+               OpBranch %119
+        %125 = OpLabel
+               OpBranch %120
+        %120 = OpLabel
+        %128 = OpAccessChain %_ptr_Function_int %data %123
+        %129 = OpLoad %int %128
+        %130 = OpAccessChain %_ptr_Function_int %temp %123
+               OpStore %130 %129
+        %131 = OpIAdd %int %123 %int_1
+               OpStore %x_103 %131
+        %132 = OpLoad %int %x_103
+               OpStore %x_102_phi %132
+               OpBranch %118
+        %119 = OpLabel
+               OpStore %x_111_phi %int_1
+               OpBranch %133
+        %133 = OpLabel
+               OpLoopMerge %134 %135 None
+               OpBranch %136
+        %136 = OpLabel
+        %139 = OpLoad %int %x_111_phi
+        %141 = OpSLessThanEqual %bool %139 %int_9
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %134
+        %142 = OpLabel
+               OpStore %x_118_phi %int_0
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %157 = OpLoad %int %x_118_phi
+        %158 = OpSLessThan %bool %157 %int_9
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %161
+        %160 = OpLabel
+               OpBranch %159
+        %161 = OpLabel
+               OpBranch %146
+        %159 = OpLabel
+        %162 = OpIAdd %int %157 %139
+        %163 = OpISub %int %162 %int_1
+        %164 = OpIMul %int %int_2 %139
+        %165 = OpIAdd %int %157 %164
+        %168 = OpISub %int %165 %int_1
+        %166 = OpExtInst %int %167 SMin %168 %int_9
+               OpStore %x_130_phi %157
+               OpStore %x_133_phi %162
+               OpStore %x_135_phi %157
+               OpBranch %169
+        %169 = OpLabel
+               OpLoopMerge %170 %171 None
+               OpBranch %172
+        %172 = OpLabel
+        %177 = OpLoad %int %x_130_phi
+               OpStore %x_130 %177
+        %178 = OpLoad %int %x_133_phi
+        %179 = OpLoad %int %x_135_phi
+               OpStore %x_135 %179
+        %180 = OpLoad %int %x_135
+        %181 = OpSLessThanEqual %bool %180 %163
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpSLessThanEqual %bool %178 %166
+               OpBranch %182
+        %182 = OpLabel
+        %185 = OpPhi %bool %181 %172 %184 %183
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+               OpBranch %170
+        %186 = OpLabel
+        %189 = OpLoad %int %x_135
+        %190 = OpAccessChain %_ptr_Function_int %data %189
+        %191 = OpLoad %int %190
+        %192 = OpAccessChain %_ptr_Function_int %data %178
+        %193 = OpLoad %int %192
+        %195 = OpLoad %int %x_130
+        %196 = OpCopyObject %int %int_1
+        %197 = OpIAdd %int %195 %196
+        %194 = OpCopyObject %int %197
+        %198 = OpSLessThan %bool %191 %193
+               OpSelectionMerge %199 None
+               OpBranchConditional %198 %200 %201
+        %200 = OpLabel
+        %203 = OpLoad %int %x_135
+        %204 = OpCopyObject %int %int_1
+        %205 = OpIAdd %int %203 %204
+        %202 = OpCopyObject %int %205
+               OpStore %x_150 %202
+        %206 = OpAccessChain %_ptr_Function_int %data %189
+        %207 = OpLoad %int %206
+        %208 = OpLoad %int %x_130
+        %209 = OpAccessChain %_ptr_Function_int %temp %208
+               OpStore %209 %207
+               OpStore %x_134_phi %178
+        %210 = OpLoad %int %x_150
+               OpStore %x_136_phi %210
+               OpBranch %199
+        %201 = OpLabel
+        %211 = OpIAdd %int %178 %int_1
+               OpStore %x_153 %211
+        %212 = OpAccessChain %_ptr_Function_int %data %178
+        %213 = OpLoad %int %212
+        %214 = OpLoad %int %x_130
+        %215 = OpAccessChain %_ptr_Function_int %temp %214
+               OpStore %215 %213
+        %216 = OpLoad %int %x_153
+               OpStore %x_134_phi %216
+        %217 = OpLoad %int %x_135
+               OpStore %x_136_phi %217
+               OpBranch %199
+        %199 = OpLabel
+        %218 = OpLoad %int %x_134_phi
+        %219 = OpLoad %int %x_136_phi
+               OpBranch %171
+        %171 = OpLabel
+               OpStore %x_130_phi %194
+               OpStore %x_133_phi %218
+               OpStore %x_135_phi %219
+               OpBranch %169
+        %170 = OpLabel
+        %220 = OpLoad %int %x_130
+               OpStore %x_157_phi %220
+        %221 = OpLoad %int %x_135
+               OpStore %x_160_phi %221
+               OpBranch %222
+        %222 = OpLabel
+               OpLoopMerge %223 %224 None
+               OpBranch %225
+        %225 = OpLabel
+        %228 = OpLoad %int %x_157_phi
+        %229 = OpLoad %int %x_160_phi
+        %230 = OpSLessThan %bool %229 %int_10
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %231
+        %232 = OpLabel
+        %233 = OpSLessThanEqual %bool %229 %163
+               OpBranch %231
+        %231 = OpLabel
+        %234 = OpPhi %bool %230 %225 %233 %232
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %237
+        %236 = OpLabel
+               OpBranch %235
+        %237 = OpLabel
+               OpBranch %223
+        %235 = OpLabel
+               OpBranch %224
+        %224 = OpLabel
+        %238 = OpIAdd %int %228 %int_1
+               OpStore %x_158 %238
+        %239 = OpIAdd %int %229 %int_1
+               OpStore %x_161 %239
+        %240 = OpAccessChain %_ptr_Function_int %data %229
+        %241 = OpLoad %int %240
+        %242 = OpAccessChain %_ptr_Function_int %temp %228
+               OpStore %242 %241
+        %243 = OpLoad %int %x_158
+               OpStore %x_157_phi %243
+        %244 = OpLoad %int %x_161
+               OpStore %x_160_phi %244
+               OpBranch %222
+        %223 = OpLabel
+               OpStore %x_170_phi %157
+               OpBranch %245
+        %245 = OpLabel
+               OpLoopMerge %246 %247 None
+               OpBranch %248
+        %248 = OpLabel
+        %250 = OpLoad %int %x_170_phi
+        %251 = OpSLessThanEqual %bool %250 %166
+               OpSelectionMerge %252 None
+               OpBranchConditional %251 %253 %254
+        %253 = OpLabel
+               OpBranch %252
+        %254 = OpLabel
+               OpBranch %246
+        %252 = OpLabel
+               OpBranch %247
+        %247 = OpLabel
+        %255 = OpAccessChain %_ptr_Function_int %temp %250
+        %256 = OpLoad %int %255
+        %257 = OpAccessChain %_ptr_Function_int %data %250
+               OpStore %257 %256
+        %258 = OpIAdd %int %250 %int_1
+               OpStore %x_171 %258
+        %259 = OpLoad %int %x_171
+               OpStore %x_170_phi %259
+               OpBranch %245
+        %246 = OpLabel
+               OpBranch %147
+        %147 = OpLabel
+               OpStore %x_118_phi %165
+               OpBranch %145
+        %146 = OpLabel
+               OpBranch %135
+        %135 = OpLabel
+        %260 = OpIMul %int %int_2 %139
+               OpStore %x_112 %260
+        %261 = OpLoad %int %x_112
+               OpStore %x_111_phi %261
+               OpBranch %133
+        %134 = OpLabel
+        %268 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %269 = OpLoad %float %268
+        %270 = OpConvertFToS %int %269
+               OpStore %x_180 %270
+        %271 = OpLoad %int %x_180
+        %273 = OpSLessThan %bool %271 %int_30
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %276
+        %275 = OpLabel
+        %277 = OpAccessChain %_ptr_Function_int %data %int_0
+        %278 = OpLoad %int %277
+        %280 = OpConvertSToF %float %278
+        %282 = OpFMul %float %280 %float_0_100000001
+        %283 = OpFAdd %float %float_0_5 %282
+               OpStore %x_189 %283
+        %284 = OpLoad %float %x_189
+               OpStore %x_262_phi %284
+               OpBranch %274
+        %276 = OpLabel
+        %288 = OpLoad %int %x_180
+        %290 = OpSLessThan %bool %288 %int_60
+               OpSelectionMerge %291 None
+               OpBranchConditional %290 %292 %293
+        %292 = OpLabel
+        %294 = OpAccessChain %_ptr_Function_int %data %int_1
+        %295 = OpLoad %int %294
+        %296 = OpConvertSToF %float %295
+        %297 = OpFMul %float %296 %float_0_100000001
+        %298 = OpFAdd %float %float_0_5 %297
+               OpStore %x_198 %298
+        %299 = OpLoad %float %x_198
+               OpStore %x_261_phi %299
+               OpBranch %291
+        %293 = OpLabel
+        %303 = OpLoad %int %x_180
+        %305 = OpSLessThan %bool %303 %int_90
+               OpSelectionMerge %306 None
+               OpBranchConditional %305 %307 %308
+        %307 = OpLabel
+        %309 = OpAccessChain %_ptr_Function_int %data %int_2
+        %310 = OpLoad %int %309
+        %311 = OpConvertSToF %float %310
+        %312 = OpFMul %float %311 %float_0_100000001
+        %313 = OpFAdd %float %float_0_5 %312
+               OpStore %x_207 %313
+        %314 = OpLoad %float %x_207
+               OpStore %x_260_phi %314
+               OpBranch %306
+        %308 = OpLabel
+        %315 = OpLoad %int %x_180
+        %317 = OpSLessThan %bool %315 %int_120
+               OpSelectionMerge %318 None
+               OpBranchConditional %317 %319 %320
+        %319 = OpLabel
+        %321 = OpAccessChain %_ptr_Function_int %data %int_3
+        %322 = OpLoad %int %321
+        %323 = OpConvertSToF %float %322
+        %324 = OpFMul %float %323 %float_0_100000001
+        %325 = OpFAdd %float %float_0_5 %324
+               OpStore %x_216 %325
+        %326 = OpLoad %float %x_216
+               OpStore %x_259_phi %326
+               OpBranch %318
+        %320 = OpLabel
+        %330 = OpLoad %int %x_180
+        %332 = OpSLessThan %bool %330 %int_150
+               OpSelectionMerge %333 None
+               OpBranchConditional %332 %334 %335
+        %334 = OpLabel
+               OpKill
+        %335 = OpLabel
+        %339 = OpLoad %int %x_180
+        %341 = OpSLessThan %bool %339 %int_180
+               OpSelectionMerge %342 None
+               OpBranchConditional %341 %343 %344
+        %343 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_int %data %int_5
+        %347 = OpLoad %int %346
+        %348 = OpConvertSToF %float %347
+        %349 = OpFMul %float %348 %float_0_100000001
+        %350 = OpFAdd %float %float_0_5 %349
+               OpStore %x_229 %350
+        %351 = OpLoad %float %x_229
+               OpStore %x_258_phi %351
+               OpBranch %342
+        %344 = OpLabel
+        %355 = OpLoad %int %x_180
+        %357 = OpSLessThan %bool %355 %int_210
+               OpSelectionMerge %358 None
+               OpBranchConditional %357 %359 %360
+        %359 = OpLabel
+        %362 = OpAccessChain %_ptr_Function_int %data %int_6
+        %363 = OpLoad %int %362
+        %364 = OpConvertSToF %float %363
+        %365 = OpFMul %float %364 %float_0_100000001
+        %366 = OpFAdd %float %float_0_5 %365
+               OpStore %x_238 %366
+        %367 = OpLoad %float %x_238
+               OpStore %x_257_phi %367
+               OpBranch %358
+        %360 = OpLabel
+        %368 = OpLoad %int %x_180
+        %370 = OpSLessThan %bool %368 %int_240
+               OpSelectionMerge %371 None
+               OpBranchConditional %370 %372 %373
+        %372 = OpLabel
+        %375 = OpAccessChain %_ptr_Function_int %data %int_7
+        %376 = OpLoad %int %375
+        %377 = OpConvertSToF %float %376
+        %378 = OpFMul %float %377 %float_0_100000001
+        %379 = OpFAdd %float %float_0_5 %378
+               OpStore %x_247 %379
+        %380 = OpLoad %float %x_247
+               OpStore %x_256_phi %380
+               OpBranch %371
+        %373 = OpLabel
+        %381 = OpLoad %int %x_180
+        %383 = OpSLessThan %bool %381 %int_270
+               OpSelectionMerge %384 None
+               OpBranchConditional %383 %385 %386
+        %385 = OpLabel
+               OpBranch %384
+        %386 = OpLabel
+               OpKill
+        %384 = OpLabel
+        %388 = OpAccessChain %_ptr_Function_int %data %int_8
+        %389 = OpLoad %int %388
+        %390 = OpConvertSToF %float %389
+        %391 = OpFMul %float %390 %float_0_100000001
+        %392 = OpFAdd %float %float_0_5 %391
+               OpStore %x_255 %392
+        %393 = OpLoad %float %x_255
+               OpStore %x_256_phi %393
+               OpBranch %371
+        %371 = OpLabel
+        %394 = OpLoad %float %x_256_phi
+               OpStore %x_256 %394
+        %395 = OpLoad %float %x_256
+               OpStore %x_257_phi %395
+               OpBranch %358
+        %358 = OpLabel
+        %396 = OpLoad %float %x_257_phi
+               OpStore %x_257 %396
+        %397 = OpLoad %float %x_257
+               OpStore %x_258_phi %397
+               OpBranch %342
+        %342 = OpLabel
+        %398 = OpLoad %float %x_258_phi
+               OpStore %x_258 %398
+               OpBranch %333
+        %333 = OpLabel
+        %399 = OpLoad %float %x_258
+               OpStore %x_259_phi %399
+               OpBranch %318
+        %318 = OpLabel
+        %400 = OpLoad %float %x_259_phi
+               OpStore %x_259 %400
+        %401 = OpLoad %float %x_259
+               OpStore %x_260_phi %401
+               OpBranch %306
+        %306 = OpLabel
+        %402 = OpLoad %float %x_260_phi
+               OpStore %x_260 %402
+        %403 = OpLoad %float %x_260
+               OpStore %x_261_phi %403
+               OpBranch %291
+        %291 = OpLabel
+        %404 = OpLoad %float %x_261_phi
+               OpStore %x_261 %404
+        %405 = OpLoad %float %x_261
+               OpStore %x_262_phi %405
+               OpBranch %274
+        %274 = OpLabel
+        %406 = OpLoad %float %x_262_phi
+        %408 = OpCompositeConstruct %v4float %406 %406 %406 %float_1
+               OpStore %x_GLF_color %408
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %409
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %413 = OpLabel
+        %414 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %414
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %416 = OpLabel
+        %417 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %417
+        %418 = OpFunctionCall %void %main_1
+        %420 = OpLoad %v4float %x_GLF_color
+        %421 = OpCompositeConstruct %main_out %420
+        %419 = OpFunctionCall %void %tint_symbol_3 %421
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 44[%44] is not post dominated by the back-edge block 115[%115]
+  %115 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.wgsl
new file mode 100644
index 0000000..0d0b64b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.spvasm.expected.wgsl
@@ -0,0 +1,338 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : array<i32, 10>;
+  var data : array<i32, 10>;
+  var x_189 : f32;
+  var x_261 : f32;
+  var x_63_phi : i32;
+  var x_102_phi : i32;
+  var x_111_phi : i32;
+  var x_262_phi : f32;
+  let x_60 : f32 = x_8.injectionSwitch.x;
+  let x_61 : i32 = i32(x_60);
+  x_63_phi = x_61;
+  loop {
+    var x_99 : i32;
+    var x_97 : i32;
+    var x_95 : i32;
+    var x_93 : i32;
+    var x_91 : i32;
+    var x_89 : i32;
+    var x_87 : i32;
+    var x_85 : i32;
+    var x_83 : i32;
+    var x_81 : i32;
+    var x_64_phi : i32;
+    let x_63 : i32 = x_63_phi;
+    let x_68 : i32 = (x_63 + 1);
+    x_64_phi = x_68;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_99 = (x_63 + 1);
+        x_64_phi = x_99;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_97 = (x_63 + 1);
+        x_64_phi = x_97;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_95 = (x_63 + 1);
+        x_64_phi = x_95;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_93 = (x_63 + 1);
+        x_64_phi = x_93;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_91 = (x_63 + 1);
+        x_64_phi = x_91;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_89 = (x_63 + 1);
+        x_64_phi = x_89;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_87 = (x_63 + 1);
+        x_64_phi = x_87;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_85 = (x_63 + 1);
+        x_64_phi = x_85;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_83 = (x_63 + 1);
+        x_64_phi = x_83;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_81 = (x_63 + 1);
+        x_64_phi = x_81;
+      }
+      default: {
+      }
+    }
+    let x_64 : i32 = x_64_phi;
+
+    continuing {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_102_phi = 0;
+  loop {
+    var x_103 : i32;
+    let x_102 : i32 = x_102_phi;
+    if ((x_102 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_108 : i32 = data[x_102];
+      temp[x_102] = x_108;
+      x_103 = (x_102 + 1);
+      x_102_phi = x_103;
+    }
+  }
+  x_111_phi = 1;
+  loop {
+    var x_112 : i32;
+    var x_118_phi : i32;
+    let x_111 : i32 = x_111_phi;
+    if ((x_111 <= 9)) {
+    } else {
+      break;
+    }
+    x_118_phi = 0;
+    loop {
+      var x_130 : i32;
+      var x_135 : i32;
+      var x_130_phi : i32;
+      var x_133_phi : i32;
+      var x_135_phi : i32;
+      var x_157_phi : i32;
+      var x_160_phi : i32;
+      var x_170_phi : i32;
+      let x_118 : i32 = x_118_phi;
+      if ((x_118 < 9)) {
+      } else {
+        break;
+      }
+      let x_124 : i32 = (x_118 + x_111);
+      let x_125 : i32 = (x_124 - 1);
+      let x_119 : i32 = (x_118 + (2 * x_111));
+      let x_128 : i32 = min((x_119 - 1), 9);
+      x_130_phi = x_118;
+      x_133_phi = x_124;
+      x_135_phi = x_118;
+      loop {
+        var x_150 : i32;
+        var x_153 : i32;
+        var x_134_phi : i32;
+        var x_136_phi : i32;
+        x_130 = x_130_phi;
+        let x_133 : i32 = x_133_phi;
+        x_135 = x_135_phi;
+        if (((x_135 <= x_125) && (x_133 <= x_128))) {
+        } else {
+          break;
+        }
+        let x_142 : ptr<function, i32> = &(data[x_135]);
+        let x_143 : i32 = *(x_142);
+        let x_144 : ptr<function, i32> = &(data[x_133]);
+        let x_145 : i32 = *(x_144);
+        let x_131 : i32 = bitcast<i32>((x_130 + bitcast<i32>(1)));
+        if ((x_143 < x_145)) {
+          x_150 = bitcast<i32>((x_135 + bitcast<i32>(1)));
+          let x_151 : i32 = *(x_142);
+          temp[x_130] = x_151;
+          x_134_phi = x_133;
+          x_136_phi = x_150;
+        } else {
+          x_153 = (x_133 + 1);
+          let x_154 : i32 = *(x_144);
+          temp[x_130] = x_154;
+          x_134_phi = x_153;
+          x_136_phi = x_135;
+        }
+        let x_134 : i32 = x_134_phi;
+        let x_136 : i32 = x_136_phi;
+
+        continuing {
+          x_130_phi = x_131;
+          x_133_phi = x_134;
+          x_135_phi = x_136;
+        }
+      }
+      x_157_phi = x_130;
+      x_160_phi = x_135;
+      loop {
+        var x_158 : i32;
+        var x_161 : i32;
+        let x_157 : i32 = x_157_phi;
+        let x_160 : i32 = x_160_phi;
+        if (((x_160 < 10) && (x_160 <= x_125))) {
+        } else {
+          break;
+        }
+
+        continuing {
+          x_158 = (x_157 + 1);
+          x_161 = (x_160 + 1);
+          let x_167 : i32 = data[x_160];
+          temp[x_157] = x_167;
+          x_157_phi = x_158;
+          x_160_phi = x_161;
+        }
+      }
+      x_170_phi = x_118;
+      loop {
+        var x_171 : i32;
+        let x_170 : i32 = x_170_phi;
+        if ((x_170 <= x_128)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_176 : i32 = temp[x_170];
+          data[x_170] = x_176;
+          x_171 = (x_170 + 1);
+          x_170_phi = x_171;
+        }
+      }
+
+      continuing {
+        x_118_phi = x_119;
+      }
+    }
+
+    continuing {
+      x_112 = (2 * x_111);
+      x_111_phi = x_112;
+    }
+  }
+  var x_180 : i32;
+  var x_198 : f32;
+  var x_260 : f32;
+  var x_261_phi : f32;
+  let x_179 : f32 = gl_FragCoord.y;
+  x_180 = i32(x_179);
+  if ((x_180 < 30)) {
+    let x_186 : i32 = data[0];
+    x_189 = (0.5 + (f32(x_186) * 0.100000001));
+    x_262_phi = x_189;
+  } else {
+    var x_207 : f32;
+    var x_259 : f32;
+    var x_260_phi : f32;
+    if ((x_180 < 60)) {
+      let x_195 : i32 = data[1];
+      x_198 = (0.5 + (f32(x_195) * 0.100000001));
+      x_261_phi = x_198;
+    } else {
+      var x_216 : f32;
+      var x_258 : f32;
+      var x_259_phi : f32;
+      if ((x_180 < 90)) {
+        let x_204 : i32 = data[2];
+        x_207 = (0.5 + (f32(x_204) * 0.100000001));
+        x_260_phi = x_207;
+      } else {
+        if ((x_180 < 120)) {
+          let x_213 : i32 = data[3];
+          x_216 = (0.5 + (f32(x_213) * 0.100000001));
+          x_259_phi = x_216;
+        } else {
+          var x_229 : f32;
+          var x_257 : f32;
+          var x_258_phi : f32;
+          if ((x_180 < 150)) {
+            discard;
+          } else {
+            var x_238 : f32;
+            var x_256 : f32;
+            var x_257_phi : f32;
+            if ((x_180 < 180)) {
+              let x_226 : i32 = data[5];
+              x_229 = (0.5 + (f32(x_226) * 0.100000001));
+              x_258_phi = x_229;
+            } else {
+              var x_247 : f32;
+              var x_255 : f32;
+              var x_256_phi : f32;
+              if ((x_180 < 210)) {
+                let x_235 : i32 = data[6];
+                x_238 = (0.5 + (f32(x_235) * 0.100000001));
+                x_257_phi = x_238;
+              } else {
+                if ((x_180 < 240)) {
+                  let x_244 : i32 = data[7];
+                  x_247 = (0.5 + (f32(x_244) * 0.100000001));
+                  x_256_phi = x_247;
+                } else {
+                  if ((x_180 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  let x_252 : i32 = data[8];
+                  x_255 = (0.5 + (f32(x_252) * 0.100000001));
+                  x_256_phi = x_255;
+                }
+                x_256 = x_256_phi;
+                x_257_phi = x_256;
+              }
+              x_257 = x_257_phi;
+              x_258_phi = x_257;
+            }
+            x_258 = x_258_phi;
+          }
+          x_259_phi = x_258;
+        }
+        x_259 = x_259_phi;
+        x_260_phi = x_259;
+      }
+      x_260 = x_260_phi;
+      x_261_phi = x_260;
+    }
+    x_261 = x_261_phi;
+    x_262_phi = x_261;
+  }
+  let x_262 : f32 = x_262_phi;
+  x_GLF_color = vec4<f32>(x_262, x_262, x_262, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
new file mode 100644
index 0000000..0d0b64b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
@@ -0,0 +1,338 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : array<i32, 10>;
+  var data : array<i32, 10>;
+  var x_189 : f32;
+  var x_261 : f32;
+  var x_63_phi : i32;
+  var x_102_phi : i32;
+  var x_111_phi : i32;
+  var x_262_phi : f32;
+  let x_60 : f32 = x_8.injectionSwitch.x;
+  let x_61 : i32 = i32(x_60);
+  x_63_phi = x_61;
+  loop {
+    var x_99 : i32;
+    var x_97 : i32;
+    var x_95 : i32;
+    var x_93 : i32;
+    var x_91 : i32;
+    var x_89 : i32;
+    var x_87 : i32;
+    var x_85 : i32;
+    var x_83 : i32;
+    var x_81 : i32;
+    var x_64_phi : i32;
+    let x_63 : i32 = x_63_phi;
+    let x_68 : i32 = (x_63 + 1);
+    x_64_phi = x_68;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_99 = (x_63 + 1);
+        x_64_phi = x_99;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_97 = (x_63 + 1);
+        x_64_phi = x_97;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_95 = (x_63 + 1);
+        x_64_phi = x_95;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_93 = (x_63 + 1);
+        x_64_phi = x_93;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_91 = (x_63 + 1);
+        x_64_phi = x_91;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_89 = (x_63 + 1);
+        x_64_phi = x_89;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_87 = (x_63 + 1);
+        x_64_phi = x_87;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_85 = (x_63 + 1);
+        x_64_phi = x_85;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_83 = (x_63 + 1);
+        x_64_phi = x_83;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_81 = (x_63 + 1);
+        x_64_phi = x_81;
+      }
+      default: {
+      }
+    }
+    let x_64 : i32 = x_64_phi;
+
+    continuing {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_102_phi = 0;
+  loop {
+    var x_103 : i32;
+    let x_102 : i32 = x_102_phi;
+    if ((x_102 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_108 : i32 = data[x_102];
+      temp[x_102] = x_108;
+      x_103 = (x_102 + 1);
+      x_102_phi = x_103;
+    }
+  }
+  x_111_phi = 1;
+  loop {
+    var x_112 : i32;
+    var x_118_phi : i32;
+    let x_111 : i32 = x_111_phi;
+    if ((x_111 <= 9)) {
+    } else {
+      break;
+    }
+    x_118_phi = 0;
+    loop {
+      var x_130 : i32;
+      var x_135 : i32;
+      var x_130_phi : i32;
+      var x_133_phi : i32;
+      var x_135_phi : i32;
+      var x_157_phi : i32;
+      var x_160_phi : i32;
+      var x_170_phi : i32;
+      let x_118 : i32 = x_118_phi;
+      if ((x_118 < 9)) {
+      } else {
+        break;
+      }
+      let x_124 : i32 = (x_118 + x_111);
+      let x_125 : i32 = (x_124 - 1);
+      let x_119 : i32 = (x_118 + (2 * x_111));
+      let x_128 : i32 = min((x_119 - 1), 9);
+      x_130_phi = x_118;
+      x_133_phi = x_124;
+      x_135_phi = x_118;
+      loop {
+        var x_150 : i32;
+        var x_153 : i32;
+        var x_134_phi : i32;
+        var x_136_phi : i32;
+        x_130 = x_130_phi;
+        let x_133 : i32 = x_133_phi;
+        x_135 = x_135_phi;
+        if (((x_135 <= x_125) && (x_133 <= x_128))) {
+        } else {
+          break;
+        }
+        let x_142 : ptr<function, i32> = &(data[x_135]);
+        let x_143 : i32 = *(x_142);
+        let x_144 : ptr<function, i32> = &(data[x_133]);
+        let x_145 : i32 = *(x_144);
+        let x_131 : i32 = bitcast<i32>((x_130 + bitcast<i32>(1)));
+        if ((x_143 < x_145)) {
+          x_150 = bitcast<i32>((x_135 + bitcast<i32>(1)));
+          let x_151 : i32 = *(x_142);
+          temp[x_130] = x_151;
+          x_134_phi = x_133;
+          x_136_phi = x_150;
+        } else {
+          x_153 = (x_133 + 1);
+          let x_154 : i32 = *(x_144);
+          temp[x_130] = x_154;
+          x_134_phi = x_153;
+          x_136_phi = x_135;
+        }
+        let x_134 : i32 = x_134_phi;
+        let x_136 : i32 = x_136_phi;
+
+        continuing {
+          x_130_phi = x_131;
+          x_133_phi = x_134;
+          x_135_phi = x_136;
+        }
+      }
+      x_157_phi = x_130;
+      x_160_phi = x_135;
+      loop {
+        var x_158 : i32;
+        var x_161 : i32;
+        let x_157 : i32 = x_157_phi;
+        let x_160 : i32 = x_160_phi;
+        if (((x_160 < 10) && (x_160 <= x_125))) {
+        } else {
+          break;
+        }
+
+        continuing {
+          x_158 = (x_157 + 1);
+          x_161 = (x_160 + 1);
+          let x_167 : i32 = data[x_160];
+          temp[x_157] = x_167;
+          x_157_phi = x_158;
+          x_160_phi = x_161;
+        }
+      }
+      x_170_phi = x_118;
+      loop {
+        var x_171 : i32;
+        let x_170 : i32 = x_170_phi;
+        if ((x_170 <= x_128)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_176 : i32 = temp[x_170];
+          data[x_170] = x_176;
+          x_171 = (x_170 + 1);
+          x_170_phi = x_171;
+        }
+      }
+
+      continuing {
+        x_118_phi = x_119;
+      }
+    }
+
+    continuing {
+      x_112 = (2 * x_111);
+      x_111_phi = x_112;
+    }
+  }
+  var x_180 : i32;
+  var x_198 : f32;
+  var x_260 : f32;
+  var x_261_phi : f32;
+  let x_179 : f32 = gl_FragCoord.y;
+  x_180 = i32(x_179);
+  if ((x_180 < 30)) {
+    let x_186 : i32 = data[0];
+    x_189 = (0.5 + (f32(x_186) * 0.100000001));
+    x_262_phi = x_189;
+  } else {
+    var x_207 : f32;
+    var x_259 : f32;
+    var x_260_phi : f32;
+    if ((x_180 < 60)) {
+      let x_195 : i32 = data[1];
+      x_198 = (0.5 + (f32(x_195) * 0.100000001));
+      x_261_phi = x_198;
+    } else {
+      var x_216 : f32;
+      var x_258 : f32;
+      var x_259_phi : f32;
+      if ((x_180 < 90)) {
+        let x_204 : i32 = data[2];
+        x_207 = (0.5 + (f32(x_204) * 0.100000001));
+        x_260_phi = x_207;
+      } else {
+        if ((x_180 < 120)) {
+          let x_213 : i32 = data[3];
+          x_216 = (0.5 + (f32(x_213) * 0.100000001));
+          x_259_phi = x_216;
+        } else {
+          var x_229 : f32;
+          var x_257 : f32;
+          var x_258_phi : f32;
+          if ((x_180 < 150)) {
+            discard;
+          } else {
+            var x_238 : f32;
+            var x_256 : f32;
+            var x_257_phi : f32;
+            if ((x_180 < 180)) {
+              let x_226 : i32 = data[5];
+              x_229 = (0.5 + (f32(x_226) * 0.100000001));
+              x_258_phi = x_229;
+            } else {
+              var x_247 : f32;
+              var x_255 : f32;
+              var x_256_phi : f32;
+              if ((x_180 < 210)) {
+                let x_235 : i32 = data[6];
+                x_238 = (0.5 + (f32(x_235) * 0.100000001));
+                x_257_phi = x_238;
+              } else {
+                if ((x_180 < 240)) {
+                  let x_244 : i32 = data[7];
+                  x_247 = (0.5 + (f32(x_244) * 0.100000001));
+                  x_256_phi = x_247;
+                } else {
+                  if ((x_180 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  let x_252 : i32 = data[8];
+                  x_255 = (0.5 + (f32(x_252) * 0.100000001));
+                  x_256_phi = x_255;
+                }
+                x_256 = x_256_phi;
+                x_257_phi = x_256;
+              }
+              x_257 = x_257_phi;
+              x_258_phi = x_257;
+            }
+            x_258 = x_258_phi;
+          }
+          x_259_phi = x_258;
+        }
+        x_259 = x_259_phi;
+        x_260_phi = x_259;
+      }
+      x_260 = x_260_phi;
+      x_261_phi = x_260;
+    }
+    x_261 = x_261_phi;
+    x_262_phi = x_261;
+  }
+  let x_262 : f32 = x_262_phi;
+  x_GLF_color = vec4<f32>(x_262, x_262, x_262, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.hlsl
new file mode 100644
index 0000000..3b86173
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.hlsl
@@ -0,0 +1,352 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+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() {
+  int temp[10] = (int[10])0;
+  int data[10] = (int[10])0;
+  float x_189 = 0.0f;
+  float x_261 = 0.0f;
+  int x_63_phi = 0;
+  int x_102_phi = 0;
+  int x_111_phi = 0;
+  float x_262_phi = 0.0f;
+  const float x_60 = asfloat(x_8[0].x);
+  const int x_61 = int(x_60);
+  x_63_phi = x_61;
+  while (true) {
+    int x_99 = 0;
+    int x_97 = 0;
+    int x_95 = 0;
+    int x_93 = 0;
+    int x_91 = 0;
+    int x_89 = 0;
+    int x_87 = 0;
+    int x_85 = 0;
+    int x_83 = 0;
+    int x_81 = 0;
+    int x_64_phi = 0;
+    const int x_63 = x_63_phi;
+    const int x_68 = (x_63 + 1);
+    x_64_phi = x_68;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_99 = (x_63 + 1);
+        x_64_phi = x_99;
+        break;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_97 = (x_63 + 1);
+        x_64_phi = x_97;
+        break;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_95 = (x_63 + 1);
+        x_64_phi = x_95;
+        break;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_93 = (x_63 + 1);
+        x_64_phi = x_93;
+        break;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_91 = (x_63 + 1);
+        x_64_phi = x_91;
+        break;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_89 = (x_63 + 1);
+        x_64_phi = x_89;
+        break;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_87 = (x_63 + 1);
+        x_64_phi = x_87;
+        break;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_85 = (x_63 + 1);
+        x_64_phi = x_85;
+        break;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_83 = (x_63 + 1);
+        x_64_phi = x_83;
+        break;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_81 = (x_63 + 1);
+        x_64_phi = x_81;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    const int x_64 = x_64_phi;
+    {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_102_phi = 0;
+  while (true) {
+    int x_103 = 0;
+    const int x_102 = x_102_phi;
+    if ((x_102 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const int x_108 = data[x_102];
+      temp[x_102] = x_108;
+      x_103 = (x_102 + 1);
+      x_102_phi = x_103;
+    }
+  }
+  x_111_phi = 1;
+  while (true) {
+    int x_112 = 0;
+    int x_118_phi = 0;
+    const int x_111 = x_111_phi;
+    if ((x_111 <= 9)) {
+    } else {
+      break;
+    }
+    x_118_phi = 0;
+    while (true) {
+      int x_130 = 0;
+      int x_135 = 0;
+      int x_130_phi = 0;
+      int x_133_phi = 0;
+      int x_135_phi = 0;
+      int x_157_phi = 0;
+      int x_160_phi = 0;
+      int x_170_phi = 0;
+      const int x_118 = x_118_phi;
+      if ((x_118 < 9)) {
+      } else {
+        break;
+      }
+      const int x_124 = (x_118 + x_111);
+      const int x_125 = (x_124 - 1);
+      const int x_119 = (x_118 + (2 * x_111));
+      const int x_128 = min((x_119 - 1), 9);
+      x_130_phi = x_118;
+      x_133_phi = x_124;
+      x_135_phi = x_118;
+      while (true) {
+        int x_150 = 0;
+        int x_153 = 0;
+        int x_134_phi = 0;
+        int x_136_phi = 0;
+        x_130 = x_130_phi;
+        const int x_133 = x_133_phi;
+        x_135 = x_135_phi;
+        bool tint_tmp = (x_135 <= x_125);
+        if (tint_tmp) {
+          tint_tmp = (x_133 <= x_128);
+        }
+        if ((tint_tmp)) {
+        } else {
+          break;
+        }
+        const int x_142_save = x_135;
+        const int x_143 = data[x_142_save];
+        const int x_144_save = x_133;
+        const int x_145 = data[x_144_save];
+        const int x_131 = asint((x_130 + asint(1)));
+        if ((x_143 < x_145)) {
+          x_150 = asint((x_135 + asint(1)));
+          const int x_151 = data[x_142_save];
+          temp[x_130] = x_151;
+          x_134_phi = x_133;
+          x_136_phi = x_150;
+        } else {
+          x_153 = (x_133 + 1);
+          const int x_154 = data[x_144_save];
+          temp[x_130] = x_154;
+          x_134_phi = x_153;
+          x_136_phi = x_135;
+        }
+        const int x_134 = x_134_phi;
+        const int x_136 = x_136_phi;
+        {
+          x_130_phi = x_131;
+          x_133_phi = x_134;
+          x_135_phi = x_136;
+        }
+      }
+      x_157_phi = x_130;
+      x_160_phi = x_135;
+      while (true) {
+        int x_158 = 0;
+        int x_161 = 0;
+        const int x_157 = x_157_phi;
+        const int x_160 = x_160_phi;
+        bool tint_tmp_1 = (x_160 < 10);
+        if (tint_tmp_1) {
+          tint_tmp_1 = (x_160 <= x_125);
+        }
+        if ((tint_tmp_1)) {
+        } else {
+          break;
+        }
+        {
+          x_158 = (x_157 + 1);
+          x_161 = (x_160 + 1);
+          const int x_167 = data[x_160];
+          temp[x_157] = x_167;
+          x_157_phi = x_158;
+          x_160_phi = x_161;
+        }
+      }
+      x_170_phi = x_118;
+      while (true) {
+        int x_171 = 0;
+        const int x_170 = x_170_phi;
+        if ((x_170 <= x_128)) {
+        } else {
+          break;
+        }
+        {
+          const int x_176 = temp[x_170];
+          data[x_170] = x_176;
+          x_171 = (x_170 + 1);
+          x_170_phi = x_171;
+        }
+      }
+      {
+        x_118_phi = x_119;
+      }
+    }
+    {
+      x_112 = (2 * x_111);
+      x_111_phi = x_112;
+    }
+  }
+  int x_180 = 0;
+  float x_198 = 0.0f;
+  float x_260 = 0.0f;
+  float x_261_phi = 0.0f;
+  const float x_179 = gl_FragCoord.y;
+  x_180 = int(x_179);
+  if ((x_180 < 30)) {
+    const int x_186 = data[0];
+    x_189 = (0.5f + (float(x_186) * 0.100000001f));
+    x_262_phi = x_189;
+  } else {
+    float x_207 = 0.0f;
+    float x_259 = 0.0f;
+    float x_260_phi = 0.0f;
+    if ((x_180 < 60)) {
+      const int x_195 = data[1];
+      x_198 = (0.5f + (float(x_195) * 0.100000001f));
+      x_261_phi = x_198;
+    } else {
+      float x_216 = 0.0f;
+      float x_258 = 0.0f;
+      float x_259_phi = 0.0f;
+      if ((x_180 < 90)) {
+        const int x_204 = data[2];
+        x_207 = (0.5f + (float(x_204) * 0.100000001f));
+        x_260_phi = x_207;
+      } else {
+        if ((x_180 < 120)) {
+          const int x_213 = data[3];
+          x_216 = (0.5f + (float(x_213) * 0.100000001f));
+          x_259_phi = x_216;
+        } else {
+          float x_229 = 0.0f;
+          float x_257 = 0.0f;
+          float x_258_phi = 0.0f;
+          if ((x_180 < 150)) {
+            discard;
+          } else {
+            float x_238 = 0.0f;
+            float x_256 = 0.0f;
+            float x_257_phi = 0.0f;
+            if ((x_180 < 180)) {
+              const int x_226 = data[5];
+              x_229 = (0.5f + (float(x_226) * 0.100000001f));
+              x_258_phi = x_229;
+            } else {
+              float x_247 = 0.0f;
+              float x_255 = 0.0f;
+              float x_256_phi = 0.0f;
+              if ((x_180 < 210)) {
+                const int x_235 = data[6];
+                x_238 = (0.5f + (float(x_235) * 0.100000001f));
+                x_257_phi = x_238;
+              } else {
+                if ((x_180 < 240)) {
+                  const int x_244 = data[7];
+                  x_247 = (0.5f + (float(x_244) * 0.100000001f));
+                  x_256_phi = x_247;
+                } else {
+                  if ((x_180 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  const int x_252 = data[8];
+                  x_255 = (0.5f + (float(x_252) * 0.100000001f));
+                  x_256_phi = x_255;
+                }
+                x_256 = x_256_phi;
+                x_257_phi = x_256;
+              }
+              x_257 = x_257_phi;
+              x_258_phi = x_257;
+            }
+            x_258 = x_258_phi;
+          }
+          x_259_phi = x_258;
+        }
+        x_259 = x_259_phi;
+        x_260_phi = x_259;
+      }
+      x_260 = x_260_phi;
+      x_261_phi = x_260;
+    }
+    x_261 = x_261_phi;
+    x_262_phi = x_261;
+  }
+  const float x_262 = x_262_phi;
+  x_GLF_color = float4(x_262, x_262, x_262, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.msl
new file mode 100644
index 0000000..64e598b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.msl
@@ -0,0 +1,346 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  tint_array_wrapper temp = {};
+  tint_array_wrapper data = {};
+  float x_189 = 0.0f;
+  float x_261 = 0.0f;
+  int x_63_phi = 0;
+  int x_102_phi = 0;
+  int x_111_phi = 0;
+  float x_262_phi = 0.0f;
+  float const x_60 = x_8.injectionSwitch.x;
+  int const x_61 = int(x_60);
+  x_63_phi = x_61;
+  while (true) {
+    int x_99 = 0;
+    int x_97 = 0;
+    int x_95 = 0;
+    int x_93 = 0;
+    int x_91 = 0;
+    int x_89 = 0;
+    int x_87 = 0;
+    int x_85 = 0;
+    int x_83 = 0;
+    int x_81 = 0;
+    int x_64_phi = 0;
+    int const x_63 = x_63_phi;
+    int const x_68 = (x_63 + 1);
+    x_64_phi = x_68;
+    switch(x_63) {
+      case 9: {
+        data.arr[x_63] = -5;
+        x_99 = (x_63 + 1);
+        x_64_phi = x_99;
+        break;
+      }
+      case 8: {
+        data.arr[x_63] = -4;
+        x_97 = (x_63 + 1);
+        x_64_phi = x_97;
+        break;
+      }
+      case 7: {
+        data.arr[x_63] = -3;
+        x_95 = (x_63 + 1);
+        x_64_phi = x_95;
+        break;
+      }
+      case 6: {
+        data.arr[x_63] = -2;
+        x_93 = (x_63 + 1);
+        x_64_phi = x_93;
+        break;
+      }
+      case 5: {
+        data.arr[x_63] = -1;
+        x_91 = (x_63 + 1);
+        x_64_phi = x_91;
+        break;
+      }
+      case 4: {
+        data.arr[x_63] = 0;
+        x_89 = (x_63 + 1);
+        x_64_phi = x_89;
+        break;
+      }
+      case 3: {
+        data.arr[x_63] = 1;
+        x_87 = (x_63 + 1);
+        x_64_phi = x_87;
+        break;
+      }
+      case 2: {
+        data.arr[x_63] = 2;
+        x_85 = (x_63 + 1);
+        x_64_phi = x_85;
+        break;
+      }
+      case 1: {
+        data.arr[x_63] = 3;
+        x_83 = (x_63 + 1);
+        x_64_phi = x_83;
+        break;
+      }
+      case 0: {
+        data.arr[x_63] = 4;
+        x_81 = (x_63 + 1);
+        x_64_phi = x_81;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_64 = x_64_phi;
+    {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_102_phi = 0;
+  while (true) {
+    int x_103 = 0;
+    int const x_102 = x_102_phi;
+    if ((x_102 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_108 = data.arr[x_102];
+      temp.arr[x_102] = x_108;
+      x_103 = (x_102 + 1);
+      x_102_phi = x_103;
+    }
+  }
+  x_111_phi = 1;
+  while (true) {
+    int x_112 = 0;
+    int x_118_phi = 0;
+    int const x_111 = x_111_phi;
+    if ((x_111 <= 9)) {
+    } else {
+      break;
+    }
+    x_118_phi = 0;
+    while (true) {
+      int x_130 = 0;
+      int x_135 = 0;
+      int x_130_phi = 0;
+      int x_133_phi = 0;
+      int x_135_phi = 0;
+      int x_157_phi = 0;
+      int x_160_phi = 0;
+      int x_170_phi = 0;
+      int const x_118 = x_118_phi;
+      if ((x_118 < 9)) {
+      } else {
+        break;
+      }
+      int const x_124 = (x_118 + x_111);
+      int const x_125 = (x_124 - 1);
+      int const x_119 = (x_118 + (2 * x_111));
+      int const x_128 = min((x_119 - 1), 9);
+      x_130_phi = x_118;
+      x_133_phi = x_124;
+      x_135_phi = x_118;
+      while (true) {
+        int x_150 = 0;
+        int x_153 = 0;
+        int x_134_phi = 0;
+        int x_136_phi = 0;
+        x_130 = x_130_phi;
+        int const x_133 = x_133_phi;
+        x_135 = x_135_phi;
+        if (((x_135 <= x_125) && (x_133 <= x_128))) {
+        } else {
+          break;
+        }
+        int const x_142_save = x_135;
+        int const x_143 = data.arr[x_142_save];
+        int const x_144_save = x_133;
+        int const x_145 = data.arr[x_144_save];
+        int const x_131 = as_type<int>((x_130 + as_type<int>(1)));
+        if ((x_143 < x_145)) {
+          x_150 = as_type<int>((x_135 + as_type<int>(1)));
+          int const x_151 = data.arr[x_142_save];
+          temp.arr[x_130] = x_151;
+          x_134_phi = x_133;
+          x_136_phi = x_150;
+        } else {
+          x_153 = (x_133 + 1);
+          int const x_154 = data.arr[x_144_save];
+          temp.arr[x_130] = x_154;
+          x_134_phi = x_153;
+          x_136_phi = x_135;
+        }
+        int const x_134 = x_134_phi;
+        int const x_136 = x_136_phi;
+        {
+          x_130_phi = x_131;
+          x_133_phi = x_134;
+          x_135_phi = x_136;
+        }
+      }
+      x_157_phi = x_130;
+      x_160_phi = x_135;
+      while (true) {
+        int x_158 = 0;
+        int x_161 = 0;
+        int const x_157 = x_157_phi;
+        int const x_160 = x_160_phi;
+        if (((x_160 < 10) && (x_160 <= x_125))) {
+        } else {
+          break;
+        }
+        {
+          x_158 = (x_157 + 1);
+          x_161 = (x_160 + 1);
+          int const x_167 = data.arr[x_160];
+          temp.arr[x_157] = x_167;
+          x_157_phi = x_158;
+          x_160_phi = x_161;
+        }
+      }
+      x_170_phi = x_118;
+      while (true) {
+        int x_171 = 0;
+        int const x_170 = x_170_phi;
+        if ((x_170 <= x_128)) {
+        } else {
+          break;
+        }
+        {
+          int const x_176 = temp.arr[x_170];
+          data.arr[x_170] = x_176;
+          x_171 = (x_170 + 1);
+          x_170_phi = x_171;
+        }
+      }
+      {
+        x_118_phi = x_119;
+      }
+    }
+    {
+      x_112 = (2 * x_111);
+      x_111_phi = x_112;
+    }
+  }
+  int x_180 = 0;
+  float x_198 = 0.0f;
+  float x_260 = 0.0f;
+  float x_261_phi = 0.0f;
+  float const x_179 = (*(tint_symbol_5)).y;
+  x_180 = int(x_179);
+  if ((x_180 < 30)) {
+    int const x_186 = data.arr[0];
+    x_189 = (0.5f + (float(x_186) * 0.100000001f));
+    x_262_phi = x_189;
+  } else {
+    float x_207 = 0.0f;
+    float x_259 = 0.0f;
+    float x_260_phi = 0.0f;
+    if ((x_180 < 60)) {
+      int const x_195 = data.arr[1];
+      x_198 = (0.5f + (float(x_195) * 0.100000001f));
+      x_261_phi = x_198;
+    } else {
+      float x_216 = 0.0f;
+      float x_258 = 0.0f;
+      float x_259_phi = 0.0f;
+      if ((x_180 < 90)) {
+        int const x_204 = data.arr[2];
+        x_207 = (0.5f + (float(x_204) * 0.100000001f));
+        x_260_phi = x_207;
+      } else {
+        if ((x_180 < 120)) {
+          int const x_213 = data.arr[3];
+          x_216 = (0.5f + (float(x_213) * 0.100000001f));
+          x_259_phi = x_216;
+        } else {
+          float x_229 = 0.0f;
+          float x_257 = 0.0f;
+          float x_258_phi = 0.0f;
+          if ((x_180 < 150)) {
+            discard_fragment();
+          } else {
+            float x_238 = 0.0f;
+            float x_256 = 0.0f;
+            float x_257_phi = 0.0f;
+            if ((x_180 < 180)) {
+              int const x_226 = data.arr[5];
+              x_229 = (0.5f + (float(x_226) * 0.100000001f));
+              x_258_phi = x_229;
+            } else {
+              float x_247 = 0.0f;
+              float x_255 = 0.0f;
+              float x_256_phi = 0.0f;
+              if ((x_180 < 210)) {
+                int const x_235 = data.arr[6];
+                x_238 = (0.5f + (float(x_235) * 0.100000001f));
+                x_257_phi = x_238;
+              } else {
+                if ((x_180 < 240)) {
+                  int const x_244 = data.arr[7];
+                  x_247 = (0.5f + (float(x_244) * 0.100000001f));
+                  x_256_phi = x_247;
+                } else {
+                  if ((x_180 < 270)) {
+                  } else {
+                    discard_fragment();
+                  }
+                  int const x_252 = data.arr[8];
+                  x_255 = (0.5f + (float(x_252) * 0.100000001f));
+                  x_256_phi = x_255;
+                }
+                x_256 = x_256_phi;
+                x_257_phi = x_256;
+              }
+              x_257 = x_257_phi;
+              x_258_phi = x_257;
+            }
+            x_258 = x_258_phi;
+          }
+          x_259_phi = x_258;
+        }
+        x_259 = x_259_phi;
+        x_260_phi = x_259;
+      }
+      x_260 = x_260_phi;
+      x_261_phi = x_260;
+    }
+    x_261 = x_261_phi;
+    x_262_phi = x_261;
+  }
+  float const x_262 = x_262_phi;
+  *(tint_symbol_6) = float4(x_262, x_262, x_262, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.spvasm
new file mode 100644
index 0000000..105bea0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.spvasm
@@ -0,0 +1,742 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 422
+; Schema: 0
+               OpCapability Shader
+        %167 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %temp "temp"
+               OpName %data "data"
+               OpName %x_189 "x_189"
+               OpName %x_261 "x_261"
+               OpName %x_63_phi "x_63_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %x_111_phi "x_111_phi"
+               OpName %x_262_phi "x_262_phi"
+               OpName %x_99 "x_99"
+               OpName %x_97 "x_97"
+               OpName %x_95 "x_95"
+               OpName %x_93 "x_93"
+               OpName %x_91 "x_91"
+               OpName %x_89 "x_89"
+               OpName %x_87 "x_87"
+               OpName %x_85 "x_85"
+               OpName %x_83 "x_83"
+               OpName %x_81 "x_81"
+               OpName %x_64_phi "x_64_phi"
+               OpName %x_103 "x_103"
+               OpName %x_112 "x_112"
+               OpName %x_118_phi "x_118_phi"
+               OpName %x_130 "x_130"
+               OpName %x_135 "x_135"
+               OpName %x_130_phi "x_130_phi"
+               OpName %x_133_phi "x_133_phi"
+               OpName %x_135_phi "x_135_phi"
+               OpName %x_157_phi "x_157_phi"
+               OpName %x_160_phi "x_160_phi"
+               OpName %x_170_phi "x_170_phi"
+               OpName %x_150 "x_150"
+               OpName %x_153 "x_153"
+               OpName %x_134_phi "x_134_phi"
+               OpName %x_136_phi "x_136_phi"
+               OpName %x_158 "x_158"
+               OpName %x_161 "x_161"
+               OpName %x_171 "x_171"
+               OpName %x_180 "x_180"
+               OpName %x_198 "x_198"
+               OpName %x_260 "x_260"
+               OpName %x_261_phi "x_261_phi"
+               OpName %x_207 "x_207"
+               OpName %x_259 "x_259"
+               OpName %x_260_phi "x_260_phi"
+               OpName %x_216 "x_216"
+               OpName %x_258 "x_258"
+               OpName %x_259_phi "x_259_phi"
+               OpName %x_229 "x_229"
+               OpName %x_257 "x_257"
+               OpName %x_258_phi "x_258_phi"
+               OpName %x_238 "x_238"
+               OpName %x_256 "x_256"
+               OpName %x_257_phi "x_257_phi"
+               OpName %x_247 "x_247"
+               OpName %x_255 "x_255"
+               OpName %x_256_phi "x_256_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %25 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+%float_0_100000001 = OpConstant %float 0.100000001
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %409 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %temp = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+      %x_189 = OpVariable %_ptr_Function_float Function %29
+      %x_261 = OpVariable %_ptr_Function_float Function %29
+   %x_63_phi = OpVariable %_ptr_Function_int Function %33
+  %x_102_phi = OpVariable %_ptr_Function_int Function %33
+  %x_111_phi = OpVariable %_ptr_Function_int Function %33
+  %x_262_phi = OpVariable %_ptr_Function_float Function %29
+       %x_99 = OpVariable %_ptr_Function_int Function %33
+       %x_97 = OpVariable %_ptr_Function_int Function %33
+       %x_95 = OpVariable %_ptr_Function_int Function %33
+       %x_93 = OpVariable %_ptr_Function_int Function %33
+       %x_91 = OpVariable %_ptr_Function_int Function %33
+       %x_89 = OpVariable %_ptr_Function_int Function %33
+       %x_87 = OpVariable %_ptr_Function_int Function %33
+       %x_85 = OpVariable %_ptr_Function_int Function %33
+       %x_83 = OpVariable %_ptr_Function_int Function %33
+       %x_81 = OpVariable %_ptr_Function_int Function %33
+   %x_64_phi = OpVariable %_ptr_Function_int Function %33
+      %x_103 = OpVariable %_ptr_Function_int Function %33
+      %x_112 = OpVariable %_ptr_Function_int Function %33
+  %x_118_phi = OpVariable %_ptr_Function_int Function %33
+      %x_130 = OpVariable %_ptr_Function_int Function %33
+      %x_135 = OpVariable %_ptr_Function_int Function %33
+  %x_130_phi = OpVariable %_ptr_Function_int Function %33
+  %x_133_phi = OpVariable %_ptr_Function_int Function %33
+  %x_135_phi = OpVariable %_ptr_Function_int Function %33
+  %x_157_phi = OpVariable %_ptr_Function_int Function %33
+  %x_160_phi = OpVariable %_ptr_Function_int Function %33
+  %x_170_phi = OpVariable %_ptr_Function_int Function %33
+      %x_150 = OpVariable %_ptr_Function_int Function %33
+      %x_153 = OpVariable %_ptr_Function_int Function %33
+  %x_134_phi = OpVariable %_ptr_Function_int Function %33
+  %x_136_phi = OpVariable %_ptr_Function_int Function %33
+      %x_158 = OpVariable %_ptr_Function_int Function %33
+      %x_161 = OpVariable %_ptr_Function_int Function %33
+      %x_171 = OpVariable %_ptr_Function_int Function %33
+      %x_180 = OpVariable %_ptr_Function_int Function %33
+      %x_198 = OpVariable %_ptr_Function_float Function %29
+      %x_260 = OpVariable %_ptr_Function_float Function %29
+  %x_261_phi = OpVariable %_ptr_Function_float Function %29
+      %x_207 = OpVariable %_ptr_Function_float Function %29
+      %x_259 = OpVariable %_ptr_Function_float Function %29
+  %x_260_phi = OpVariable %_ptr_Function_float Function %29
+      %x_216 = OpVariable %_ptr_Function_float Function %29
+      %x_258 = OpVariable %_ptr_Function_float Function %29
+  %x_259_phi = OpVariable %_ptr_Function_float Function %29
+      %x_229 = OpVariable %_ptr_Function_float Function %29
+      %x_257 = OpVariable %_ptr_Function_float Function %29
+  %x_258_phi = OpVariable %_ptr_Function_float Function %29
+      %x_238 = OpVariable %_ptr_Function_float Function %29
+      %x_256 = OpVariable %_ptr_Function_float Function %29
+  %x_257_phi = OpVariable %_ptr_Function_float Function %29
+      %x_247 = OpVariable %_ptr_Function_float Function %29
+      %x_255 = OpVariable %_ptr_Function_float Function %29
+  %x_256_phi = OpVariable %_ptr_Function_float Function %29
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+               OpStore %x_63_phi %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %57 = OpLoad %int %x_63_phi
+         %59 = OpIAdd %int %57 %int_1
+               OpStore %x_64_phi %59
+               OpSelectionMerge %60 None
+               OpSwitch %57 %61 9 %62 8 %63 7 %64 6 %65 5 %66 4 %67 3 %68 2 %69 1 %70 0 %71
+         %62 = OpLabel
+         %72 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %72 %int_n5
+         %74 = OpIAdd %int %57 %int_1
+               OpStore %x_99 %74
+         %75 = OpLoad %int %x_99
+               OpStore %x_64_phi %75
+               OpBranch %60
+         %63 = OpLabel
+         %76 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %76 %int_n4
+         %78 = OpIAdd %int %57 %int_1
+               OpStore %x_97 %78
+         %79 = OpLoad %int %x_97
+               OpStore %x_64_phi %79
+               OpBranch %60
+         %64 = OpLabel
+         %80 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %80 %int_n3
+         %82 = OpIAdd %int %57 %int_1
+               OpStore %x_95 %82
+         %83 = OpLoad %int %x_95
+               OpStore %x_64_phi %83
+               OpBranch %60
+         %65 = OpLabel
+         %84 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %84 %int_n2
+         %86 = OpIAdd %int %57 %int_1
+               OpStore %x_93 %86
+         %87 = OpLoad %int %x_93
+               OpStore %x_64_phi %87
+               OpBranch %60
+         %66 = OpLabel
+         %88 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %88 %int_n1
+         %90 = OpIAdd %int %57 %int_1
+               OpStore %x_91 %90
+         %91 = OpLoad %int %x_91
+               OpStore %x_64_phi %91
+               OpBranch %60
+         %67 = OpLabel
+         %92 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %92 %int_0
+         %94 = OpIAdd %int %57 %int_1
+               OpStore %x_89 %94
+         %95 = OpLoad %int %x_89
+               OpStore %x_64_phi %95
+               OpBranch %60
+         %68 = OpLabel
+         %96 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %96 %int_1
+         %97 = OpIAdd %int %57 %int_1
+               OpStore %x_87 %97
+         %98 = OpLoad %int %x_87
+               OpStore %x_64_phi %98
+               OpBranch %60
+         %69 = OpLabel
+         %99 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %99 %int_2
+        %101 = OpIAdd %int %57 %int_1
+               OpStore %x_85 %101
+        %102 = OpLoad %int %x_85
+               OpStore %x_64_phi %102
+               OpBranch %60
+         %70 = OpLabel
+        %103 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %103 %int_3
+        %105 = OpIAdd %int %57 %int_1
+               OpStore %x_83 %105
+        %106 = OpLoad %int %x_83
+               OpStore %x_64_phi %106
+               OpBranch %60
+         %71 = OpLabel
+        %107 = OpAccessChain %_ptr_Function_int %data %57
+               OpStore %107 %int_4
+        %109 = OpIAdd %int %57 %int_1
+               OpStore %x_81 %109
+        %110 = OpLoad %int %x_81
+               OpStore %x_64_phi %110
+               OpBranch %60
+         %61 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+        %111 = OpLoad %int %x_64_phi
+               OpBranch %44
+         %44 = OpLabel
+               OpStore %x_63_phi %111
+        %113 = OpSLessThan %bool %111 %int_10
+               OpSelectionMerge %115 None
+               OpBranchConditional %113 %116 %117
+        %116 = OpLabel
+               OpBranch %115
+        %117 = OpLabel
+               OpBranch %43
+        %115 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpStore %x_102_phi %int_0
+               OpBranch %118
+        %118 = OpLabel
+               OpLoopMerge %119 %120 None
+               OpBranch %121
+        %121 = OpLabel
+        %123 = OpLoad %int %x_102_phi
+        %124 = OpSLessThan %bool %123 %int_10
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %127
+        %126 = OpLabel
+               OpBranch %125
+        %127 = OpLabel
+               OpBranch %119
+        %125 = OpLabel
+               OpBranch %120
+        %120 = OpLabel
+        %128 = OpAccessChain %_ptr_Function_int %data %123
+        %129 = OpLoad %int %128
+        %130 = OpAccessChain %_ptr_Function_int %temp %123
+               OpStore %130 %129
+        %131 = OpIAdd %int %123 %int_1
+               OpStore %x_103 %131
+        %132 = OpLoad %int %x_103
+               OpStore %x_102_phi %132
+               OpBranch %118
+        %119 = OpLabel
+               OpStore %x_111_phi %int_1
+               OpBranch %133
+        %133 = OpLabel
+               OpLoopMerge %134 %135 None
+               OpBranch %136
+        %136 = OpLabel
+        %139 = OpLoad %int %x_111_phi
+        %141 = OpSLessThanEqual %bool %139 %int_9
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+               OpBranch %142
+        %144 = OpLabel
+               OpBranch %134
+        %142 = OpLabel
+               OpStore %x_118_phi %int_0
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %157 = OpLoad %int %x_118_phi
+        %158 = OpSLessThan %bool %157 %int_9
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %161
+        %160 = OpLabel
+               OpBranch %159
+        %161 = OpLabel
+               OpBranch %146
+        %159 = OpLabel
+        %162 = OpIAdd %int %157 %139
+        %163 = OpISub %int %162 %int_1
+        %164 = OpIMul %int %int_2 %139
+        %165 = OpIAdd %int %157 %164
+        %168 = OpISub %int %165 %int_1
+        %166 = OpExtInst %int %167 SMin %168 %int_9
+               OpStore %x_130_phi %157
+               OpStore %x_133_phi %162
+               OpStore %x_135_phi %157
+               OpBranch %169
+        %169 = OpLabel
+               OpLoopMerge %170 %171 None
+               OpBranch %172
+        %172 = OpLabel
+        %177 = OpLoad %int %x_130_phi
+               OpStore %x_130 %177
+        %178 = OpLoad %int %x_133_phi
+        %179 = OpLoad %int %x_135_phi
+               OpStore %x_135 %179
+        %180 = OpLoad %int %x_135
+        %181 = OpSLessThanEqual %bool %180 %163
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpSLessThanEqual %bool %178 %166
+               OpBranch %182
+        %182 = OpLabel
+        %185 = OpPhi %bool %181 %172 %184 %183
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+               OpBranch %170
+        %186 = OpLabel
+        %189 = OpLoad %int %x_135
+        %190 = OpAccessChain %_ptr_Function_int %data %189
+        %191 = OpLoad %int %190
+        %192 = OpAccessChain %_ptr_Function_int %data %178
+        %193 = OpLoad %int %192
+        %195 = OpLoad %int %x_130
+        %196 = OpCopyObject %int %int_1
+        %197 = OpIAdd %int %195 %196
+        %194 = OpCopyObject %int %197
+        %198 = OpSLessThan %bool %191 %193
+               OpSelectionMerge %199 None
+               OpBranchConditional %198 %200 %201
+        %200 = OpLabel
+        %203 = OpLoad %int %x_135
+        %204 = OpCopyObject %int %int_1
+        %205 = OpIAdd %int %203 %204
+        %202 = OpCopyObject %int %205
+               OpStore %x_150 %202
+        %206 = OpAccessChain %_ptr_Function_int %data %189
+        %207 = OpLoad %int %206
+        %208 = OpLoad %int %x_130
+        %209 = OpAccessChain %_ptr_Function_int %temp %208
+               OpStore %209 %207
+               OpStore %x_134_phi %178
+        %210 = OpLoad %int %x_150
+               OpStore %x_136_phi %210
+               OpBranch %199
+        %201 = OpLabel
+        %211 = OpIAdd %int %178 %int_1
+               OpStore %x_153 %211
+        %212 = OpAccessChain %_ptr_Function_int %data %178
+        %213 = OpLoad %int %212
+        %214 = OpLoad %int %x_130
+        %215 = OpAccessChain %_ptr_Function_int %temp %214
+               OpStore %215 %213
+        %216 = OpLoad %int %x_153
+               OpStore %x_134_phi %216
+        %217 = OpLoad %int %x_135
+               OpStore %x_136_phi %217
+               OpBranch %199
+        %199 = OpLabel
+        %218 = OpLoad %int %x_134_phi
+        %219 = OpLoad %int %x_136_phi
+               OpBranch %171
+        %171 = OpLabel
+               OpStore %x_130_phi %194
+               OpStore %x_133_phi %218
+               OpStore %x_135_phi %219
+               OpBranch %169
+        %170 = OpLabel
+        %220 = OpLoad %int %x_130
+               OpStore %x_157_phi %220
+        %221 = OpLoad %int %x_135
+               OpStore %x_160_phi %221
+               OpBranch %222
+        %222 = OpLabel
+               OpLoopMerge %223 %224 None
+               OpBranch %225
+        %225 = OpLabel
+        %228 = OpLoad %int %x_157_phi
+        %229 = OpLoad %int %x_160_phi
+        %230 = OpSLessThan %bool %229 %int_10
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %231
+        %232 = OpLabel
+        %233 = OpSLessThanEqual %bool %229 %163
+               OpBranch %231
+        %231 = OpLabel
+        %234 = OpPhi %bool %230 %225 %233 %232
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %237
+        %236 = OpLabel
+               OpBranch %235
+        %237 = OpLabel
+               OpBranch %223
+        %235 = OpLabel
+               OpBranch %224
+        %224 = OpLabel
+        %238 = OpIAdd %int %228 %int_1
+               OpStore %x_158 %238
+        %239 = OpIAdd %int %229 %int_1
+               OpStore %x_161 %239
+        %240 = OpAccessChain %_ptr_Function_int %data %229
+        %241 = OpLoad %int %240
+        %242 = OpAccessChain %_ptr_Function_int %temp %228
+               OpStore %242 %241
+        %243 = OpLoad %int %x_158
+               OpStore %x_157_phi %243
+        %244 = OpLoad %int %x_161
+               OpStore %x_160_phi %244
+               OpBranch %222
+        %223 = OpLabel
+               OpStore %x_170_phi %157
+               OpBranch %245
+        %245 = OpLabel
+               OpLoopMerge %246 %247 None
+               OpBranch %248
+        %248 = OpLabel
+        %250 = OpLoad %int %x_170_phi
+        %251 = OpSLessThanEqual %bool %250 %166
+               OpSelectionMerge %252 None
+               OpBranchConditional %251 %253 %254
+        %253 = OpLabel
+               OpBranch %252
+        %254 = OpLabel
+               OpBranch %246
+        %252 = OpLabel
+               OpBranch %247
+        %247 = OpLabel
+        %255 = OpAccessChain %_ptr_Function_int %temp %250
+        %256 = OpLoad %int %255
+        %257 = OpAccessChain %_ptr_Function_int %data %250
+               OpStore %257 %256
+        %258 = OpIAdd %int %250 %int_1
+               OpStore %x_171 %258
+        %259 = OpLoad %int %x_171
+               OpStore %x_170_phi %259
+               OpBranch %245
+        %246 = OpLabel
+               OpBranch %147
+        %147 = OpLabel
+               OpStore %x_118_phi %165
+               OpBranch %145
+        %146 = OpLabel
+               OpBranch %135
+        %135 = OpLabel
+        %260 = OpIMul %int %int_2 %139
+               OpStore %x_112 %260
+        %261 = OpLoad %int %x_112
+               OpStore %x_111_phi %261
+               OpBranch %133
+        %134 = OpLabel
+        %268 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %269 = OpLoad %float %268
+        %270 = OpConvertFToS %int %269
+               OpStore %x_180 %270
+        %271 = OpLoad %int %x_180
+        %273 = OpSLessThan %bool %271 %int_30
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %276
+        %275 = OpLabel
+        %277 = OpAccessChain %_ptr_Function_int %data %int_0
+        %278 = OpLoad %int %277
+        %280 = OpConvertSToF %float %278
+        %282 = OpFMul %float %280 %float_0_100000001
+        %283 = OpFAdd %float %float_0_5 %282
+               OpStore %x_189 %283
+        %284 = OpLoad %float %x_189
+               OpStore %x_262_phi %284
+               OpBranch %274
+        %276 = OpLabel
+        %288 = OpLoad %int %x_180
+        %290 = OpSLessThan %bool %288 %int_60
+               OpSelectionMerge %291 None
+               OpBranchConditional %290 %292 %293
+        %292 = OpLabel
+        %294 = OpAccessChain %_ptr_Function_int %data %int_1
+        %295 = OpLoad %int %294
+        %296 = OpConvertSToF %float %295
+        %297 = OpFMul %float %296 %float_0_100000001
+        %298 = OpFAdd %float %float_0_5 %297
+               OpStore %x_198 %298
+        %299 = OpLoad %float %x_198
+               OpStore %x_261_phi %299
+               OpBranch %291
+        %293 = OpLabel
+        %303 = OpLoad %int %x_180
+        %305 = OpSLessThan %bool %303 %int_90
+               OpSelectionMerge %306 None
+               OpBranchConditional %305 %307 %308
+        %307 = OpLabel
+        %309 = OpAccessChain %_ptr_Function_int %data %int_2
+        %310 = OpLoad %int %309
+        %311 = OpConvertSToF %float %310
+        %312 = OpFMul %float %311 %float_0_100000001
+        %313 = OpFAdd %float %float_0_5 %312
+               OpStore %x_207 %313
+        %314 = OpLoad %float %x_207
+               OpStore %x_260_phi %314
+               OpBranch %306
+        %308 = OpLabel
+        %315 = OpLoad %int %x_180
+        %317 = OpSLessThan %bool %315 %int_120
+               OpSelectionMerge %318 None
+               OpBranchConditional %317 %319 %320
+        %319 = OpLabel
+        %321 = OpAccessChain %_ptr_Function_int %data %int_3
+        %322 = OpLoad %int %321
+        %323 = OpConvertSToF %float %322
+        %324 = OpFMul %float %323 %float_0_100000001
+        %325 = OpFAdd %float %float_0_5 %324
+               OpStore %x_216 %325
+        %326 = OpLoad %float %x_216
+               OpStore %x_259_phi %326
+               OpBranch %318
+        %320 = OpLabel
+        %330 = OpLoad %int %x_180
+        %332 = OpSLessThan %bool %330 %int_150
+               OpSelectionMerge %333 None
+               OpBranchConditional %332 %334 %335
+        %334 = OpLabel
+               OpKill
+        %335 = OpLabel
+        %339 = OpLoad %int %x_180
+        %341 = OpSLessThan %bool %339 %int_180
+               OpSelectionMerge %342 None
+               OpBranchConditional %341 %343 %344
+        %343 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_int %data %int_5
+        %347 = OpLoad %int %346
+        %348 = OpConvertSToF %float %347
+        %349 = OpFMul %float %348 %float_0_100000001
+        %350 = OpFAdd %float %float_0_5 %349
+               OpStore %x_229 %350
+        %351 = OpLoad %float %x_229
+               OpStore %x_258_phi %351
+               OpBranch %342
+        %344 = OpLabel
+        %355 = OpLoad %int %x_180
+        %357 = OpSLessThan %bool %355 %int_210
+               OpSelectionMerge %358 None
+               OpBranchConditional %357 %359 %360
+        %359 = OpLabel
+        %362 = OpAccessChain %_ptr_Function_int %data %int_6
+        %363 = OpLoad %int %362
+        %364 = OpConvertSToF %float %363
+        %365 = OpFMul %float %364 %float_0_100000001
+        %366 = OpFAdd %float %float_0_5 %365
+               OpStore %x_238 %366
+        %367 = OpLoad %float %x_238
+               OpStore %x_257_phi %367
+               OpBranch %358
+        %360 = OpLabel
+        %368 = OpLoad %int %x_180
+        %370 = OpSLessThan %bool %368 %int_240
+               OpSelectionMerge %371 None
+               OpBranchConditional %370 %372 %373
+        %372 = OpLabel
+        %375 = OpAccessChain %_ptr_Function_int %data %int_7
+        %376 = OpLoad %int %375
+        %377 = OpConvertSToF %float %376
+        %378 = OpFMul %float %377 %float_0_100000001
+        %379 = OpFAdd %float %float_0_5 %378
+               OpStore %x_247 %379
+        %380 = OpLoad %float %x_247
+               OpStore %x_256_phi %380
+               OpBranch %371
+        %373 = OpLabel
+        %381 = OpLoad %int %x_180
+        %383 = OpSLessThan %bool %381 %int_270
+               OpSelectionMerge %384 None
+               OpBranchConditional %383 %385 %386
+        %385 = OpLabel
+               OpBranch %384
+        %386 = OpLabel
+               OpKill
+        %384 = OpLabel
+        %388 = OpAccessChain %_ptr_Function_int %data %int_8
+        %389 = OpLoad %int %388
+        %390 = OpConvertSToF %float %389
+        %391 = OpFMul %float %390 %float_0_100000001
+        %392 = OpFAdd %float %float_0_5 %391
+               OpStore %x_255 %392
+        %393 = OpLoad %float %x_255
+               OpStore %x_256_phi %393
+               OpBranch %371
+        %371 = OpLabel
+        %394 = OpLoad %float %x_256_phi
+               OpStore %x_256 %394
+        %395 = OpLoad %float %x_256
+               OpStore %x_257_phi %395
+               OpBranch %358
+        %358 = OpLabel
+        %396 = OpLoad %float %x_257_phi
+               OpStore %x_257 %396
+        %397 = OpLoad %float %x_257
+               OpStore %x_258_phi %397
+               OpBranch %342
+        %342 = OpLabel
+        %398 = OpLoad %float %x_258_phi
+               OpStore %x_258 %398
+               OpBranch %333
+        %333 = OpLabel
+        %399 = OpLoad %float %x_258
+               OpStore %x_259_phi %399
+               OpBranch %318
+        %318 = OpLabel
+        %400 = OpLoad %float %x_259_phi
+               OpStore %x_259 %400
+        %401 = OpLoad %float %x_259
+               OpStore %x_260_phi %401
+               OpBranch %306
+        %306 = OpLabel
+        %402 = OpLoad %float %x_260_phi
+               OpStore %x_260 %402
+        %403 = OpLoad %float %x_260
+               OpStore %x_261_phi %403
+               OpBranch %291
+        %291 = OpLabel
+        %404 = OpLoad %float %x_261_phi
+               OpStore %x_261 %404
+        %405 = OpLoad %float %x_261
+               OpStore %x_262_phi %405
+               OpBranch %274
+        %274 = OpLabel
+        %406 = OpLoad %float %x_262_phi
+        %408 = OpCompositeConstruct %v4float %406 %406 %406 %float_1
+               OpStore %x_GLF_color %408
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %409
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %413 = OpLabel
+        %414 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %414
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %416 = OpLabel
+        %417 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %417
+        %418 = OpFunctionCall %void %main_1
+        %420 = OpLoad %v4float %x_GLF_color
+        %421 = OpCompositeConstruct %main_out %420
+        %419 = OpFunctionCall %void %tint_symbol_3 %421
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 44[%44] is not post dominated by the back-edge block 115[%115]
+  %115 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.wgsl
new file mode 100644
index 0000000..0d0b64b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl.expected.wgsl
@@ -0,0 +1,338 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : array<i32, 10>;
+  var data : array<i32, 10>;
+  var x_189 : f32;
+  var x_261 : f32;
+  var x_63_phi : i32;
+  var x_102_phi : i32;
+  var x_111_phi : i32;
+  var x_262_phi : f32;
+  let x_60 : f32 = x_8.injectionSwitch.x;
+  let x_61 : i32 = i32(x_60);
+  x_63_phi = x_61;
+  loop {
+    var x_99 : i32;
+    var x_97 : i32;
+    var x_95 : i32;
+    var x_93 : i32;
+    var x_91 : i32;
+    var x_89 : i32;
+    var x_87 : i32;
+    var x_85 : i32;
+    var x_83 : i32;
+    var x_81 : i32;
+    var x_64_phi : i32;
+    let x_63 : i32 = x_63_phi;
+    let x_68 : i32 = (x_63 + 1);
+    x_64_phi = x_68;
+    switch(x_63) {
+      case 9: {
+        data[x_63] = -5;
+        x_99 = (x_63 + 1);
+        x_64_phi = x_99;
+      }
+      case 8: {
+        data[x_63] = -4;
+        x_97 = (x_63 + 1);
+        x_64_phi = x_97;
+      }
+      case 7: {
+        data[x_63] = -3;
+        x_95 = (x_63 + 1);
+        x_64_phi = x_95;
+      }
+      case 6: {
+        data[x_63] = -2;
+        x_93 = (x_63 + 1);
+        x_64_phi = x_93;
+      }
+      case 5: {
+        data[x_63] = -1;
+        x_91 = (x_63 + 1);
+        x_64_phi = x_91;
+      }
+      case 4: {
+        data[x_63] = 0;
+        x_89 = (x_63 + 1);
+        x_64_phi = x_89;
+      }
+      case 3: {
+        data[x_63] = 1;
+        x_87 = (x_63 + 1);
+        x_64_phi = x_87;
+      }
+      case 2: {
+        data[x_63] = 2;
+        x_85 = (x_63 + 1);
+        x_64_phi = x_85;
+      }
+      case 1: {
+        data[x_63] = 3;
+        x_83 = (x_63 + 1);
+        x_64_phi = x_83;
+      }
+      case 0: {
+        data[x_63] = 4;
+        x_81 = (x_63 + 1);
+        x_64_phi = x_81;
+      }
+      default: {
+      }
+    }
+    let x_64 : i32 = x_64_phi;
+
+    continuing {
+      x_63_phi = x_64;
+      if ((x_64 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_102_phi = 0;
+  loop {
+    var x_103 : i32;
+    let x_102 : i32 = x_102_phi;
+    if ((x_102 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_108 : i32 = data[x_102];
+      temp[x_102] = x_108;
+      x_103 = (x_102 + 1);
+      x_102_phi = x_103;
+    }
+  }
+  x_111_phi = 1;
+  loop {
+    var x_112 : i32;
+    var x_118_phi : i32;
+    let x_111 : i32 = x_111_phi;
+    if ((x_111 <= 9)) {
+    } else {
+      break;
+    }
+    x_118_phi = 0;
+    loop {
+      var x_130 : i32;
+      var x_135 : i32;
+      var x_130_phi : i32;
+      var x_133_phi : i32;
+      var x_135_phi : i32;
+      var x_157_phi : i32;
+      var x_160_phi : i32;
+      var x_170_phi : i32;
+      let x_118 : i32 = x_118_phi;
+      if ((x_118 < 9)) {
+      } else {
+        break;
+      }
+      let x_124 : i32 = (x_118 + x_111);
+      let x_125 : i32 = (x_124 - 1);
+      let x_119 : i32 = (x_118 + (2 * x_111));
+      let x_128 : i32 = min((x_119 - 1), 9);
+      x_130_phi = x_118;
+      x_133_phi = x_124;
+      x_135_phi = x_118;
+      loop {
+        var x_150 : i32;
+        var x_153 : i32;
+        var x_134_phi : i32;
+        var x_136_phi : i32;
+        x_130 = x_130_phi;
+        let x_133 : i32 = x_133_phi;
+        x_135 = x_135_phi;
+        if (((x_135 <= x_125) && (x_133 <= x_128))) {
+        } else {
+          break;
+        }
+        let x_142 : ptr<function, i32> = &(data[x_135]);
+        let x_143 : i32 = *(x_142);
+        let x_144 : ptr<function, i32> = &(data[x_133]);
+        let x_145 : i32 = *(x_144);
+        let x_131 : i32 = bitcast<i32>((x_130 + bitcast<i32>(1)));
+        if ((x_143 < x_145)) {
+          x_150 = bitcast<i32>((x_135 + bitcast<i32>(1)));
+          let x_151 : i32 = *(x_142);
+          temp[x_130] = x_151;
+          x_134_phi = x_133;
+          x_136_phi = x_150;
+        } else {
+          x_153 = (x_133 + 1);
+          let x_154 : i32 = *(x_144);
+          temp[x_130] = x_154;
+          x_134_phi = x_153;
+          x_136_phi = x_135;
+        }
+        let x_134 : i32 = x_134_phi;
+        let x_136 : i32 = x_136_phi;
+
+        continuing {
+          x_130_phi = x_131;
+          x_133_phi = x_134;
+          x_135_phi = x_136;
+        }
+      }
+      x_157_phi = x_130;
+      x_160_phi = x_135;
+      loop {
+        var x_158 : i32;
+        var x_161 : i32;
+        let x_157 : i32 = x_157_phi;
+        let x_160 : i32 = x_160_phi;
+        if (((x_160 < 10) && (x_160 <= x_125))) {
+        } else {
+          break;
+        }
+
+        continuing {
+          x_158 = (x_157 + 1);
+          x_161 = (x_160 + 1);
+          let x_167 : i32 = data[x_160];
+          temp[x_157] = x_167;
+          x_157_phi = x_158;
+          x_160_phi = x_161;
+        }
+      }
+      x_170_phi = x_118;
+      loop {
+        var x_171 : i32;
+        let x_170 : i32 = x_170_phi;
+        if ((x_170 <= x_128)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_176 : i32 = temp[x_170];
+          data[x_170] = x_176;
+          x_171 = (x_170 + 1);
+          x_170_phi = x_171;
+        }
+      }
+
+      continuing {
+        x_118_phi = x_119;
+      }
+    }
+
+    continuing {
+      x_112 = (2 * x_111);
+      x_111_phi = x_112;
+    }
+  }
+  var x_180 : i32;
+  var x_198 : f32;
+  var x_260 : f32;
+  var x_261_phi : f32;
+  let x_179 : f32 = gl_FragCoord.y;
+  x_180 = i32(x_179);
+  if ((x_180 < 30)) {
+    let x_186 : i32 = data[0];
+    x_189 = (0.5 + (f32(x_186) * 0.100000001));
+    x_262_phi = x_189;
+  } else {
+    var x_207 : f32;
+    var x_259 : f32;
+    var x_260_phi : f32;
+    if ((x_180 < 60)) {
+      let x_195 : i32 = data[1];
+      x_198 = (0.5 + (f32(x_195) * 0.100000001));
+      x_261_phi = x_198;
+    } else {
+      var x_216 : f32;
+      var x_258 : f32;
+      var x_259_phi : f32;
+      if ((x_180 < 90)) {
+        let x_204 : i32 = data[2];
+        x_207 = (0.5 + (f32(x_204) * 0.100000001));
+        x_260_phi = x_207;
+      } else {
+        if ((x_180 < 120)) {
+          let x_213 : i32 = data[3];
+          x_216 = (0.5 + (f32(x_213) * 0.100000001));
+          x_259_phi = x_216;
+        } else {
+          var x_229 : f32;
+          var x_257 : f32;
+          var x_258_phi : f32;
+          if ((x_180 < 150)) {
+            discard;
+          } else {
+            var x_238 : f32;
+            var x_256 : f32;
+            var x_257_phi : f32;
+            if ((x_180 < 180)) {
+              let x_226 : i32 = data[5];
+              x_229 = (0.5 + (f32(x_226) * 0.100000001));
+              x_258_phi = x_229;
+            } else {
+              var x_247 : f32;
+              var x_255 : f32;
+              var x_256_phi : f32;
+              if ((x_180 < 210)) {
+                let x_235 : i32 = data[6];
+                x_238 = (0.5 + (f32(x_235) * 0.100000001));
+                x_257_phi = x_238;
+              } else {
+                if ((x_180 < 240)) {
+                  let x_244 : i32 = data[7];
+                  x_247 = (0.5 + (f32(x_244) * 0.100000001));
+                  x_256_phi = x_247;
+                } else {
+                  if ((x_180 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  let x_252 : i32 = data[8];
+                  x_255 = (0.5 + (f32(x_252) * 0.100000001));
+                  x_256_phi = x_255;
+                }
+                x_256 = x_256_phi;
+                x_257_phi = x_256;
+              }
+              x_257 = x_257_phi;
+              x_258_phi = x_257;
+            }
+            x_258 = x_258_phi;
+          }
+          x_259_phi = x_258;
+        }
+        x_259 = x_259_phi;
+        x_260_phi = x_259;
+      }
+      x_260 = x_260_phi;
+      x_261_phi = x_260;
+    }
+    x_261 = x_261_phi;
+    x_262_phi = x_261;
+  }
+  let x_262 : f32 = x_262_phi;
+  x_GLF_color = vec4<f32>(x_262, x_262, x_262, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm
new file mode 100644
index 0000000..7e89166
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm
@@ -0,0 +1,555 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+       %main = OpFunction %void None %32
+         %82 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %83 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpConvertFToS %int %84
+               OpStore %i_2 %85
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %90 = OpLoad %int %i_2
+               OpSelectionMerge %91 None
+               OpSwitch %90 %91 0 %92 1 %93 2 %94 3 %95 4 %96 5 %97 6 %98 7 %99 8 %100 9 %101
+         %92 = OpLabel
+        %102 = OpLoad %int %i_2
+        %103 = OpAccessChain %_ptr_Private_int %data %102
+               OpStore %103 %int_4
+               OpBranch %91
+         %93 = OpLabel
+        %104 = OpLoad %int %i_2
+        %105 = OpAccessChain %_ptr_Private_int %data %104
+               OpStore %105 %int_3
+               OpBranch %91
+         %94 = OpLabel
+        %106 = OpLoad %int %i_2
+        %107 = OpAccessChain %_ptr_Private_int %data %106
+               OpStore %107 %int_2
+               OpBranch %91
+         %95 = OpLabel
+        %108 = OpLoad %int %i_2
+        %109 = OpAccessChain %_ptr_Private_int %data %108
+               OpStore %109 %int_1
+               OpBranch %91
+         %96 = OpLabel
+        %110 = OpLoad %int %i_2
+        %111 = OpAccessChain %_ptr_Private_int %data %110
+               OpStore %111 %int_0
+               OpBranch %91
+         %97 = OpLabel
+        %112 = OpLoad %int %i_2
+        %113 = OpAccessChain %_ptr_Private_int %data %112
+               OpStore %113 %int_n1
+               OpBranch %91
+         %98 = OpLabel
+        %114 = OpLoad %int %i_2
+        %115 = OpAccessChain %_ptr_Private_int %data %114
+               OpStore %115 %int_n2
+               OpBranch %91
+         %99 = OpLabel
+        %116 = OpLoad %int %i_2
+        %117 = OpAccessChain %_ptr_Private_int %data %116
+               OpStore %117 %int_n3
+               OpBranch %91
+        %100 = OpLabel
+        %118 = OpLoad %int %i_2
+        %119 = OpAccessChain %_ptr_Private_int %data %118
+               OpStore %119 %int_n4
+               OpBranch %91
+        %101 = OpLabel
+        %120 = OpLoad %int %i_2
+        %121 = OpAccessChain %_ptr_Private_int %data %120
+               OpStore %121 %int_n5
+               OpBranch %91
+         %91 = OpLabel
+        %122 = OpLoad %int %i_2
+        %123 = OpIAdd %int %122 %int_1
+               OpStore %i_2 %123
+               OpBranch %88
+         %88 = OpLabel
+        %124 = OpLoad %int %i_2
+        %125 = OpSLessThan %bool %124 %int_10
+               OpBranchConditional %125 %86 %87
+         %87 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %126
+        %126 = OpLabel
+               OpLoopMerge %127 %128 None
+               OpBranch %129
+        %129 = OpLabel
+        %130 = OpLoad %int %j_0
+        %131 = OpSLessThan %bool %130 %int_10
+               OpBranchConditional %131 %132 %127
+        %132 = OpLabel
+        %133 = OpLoad %int %j_0
+        %134 = OpLoad %int %j_0
+        %135 = OpAccessChain %_ptr_Private_int %data %134
+        %136 = OpLoad %int %135
+        %137 = OpAccessChain %_ptr_Private_int %temp %133
+               OpStore %137 %136
+               OpBranch %128
+        %128 = OpLabel
+        %138 = OpLoad %int %j_0
+        %139 = OpIAdd %int %138 %int_1
+               OpStore %j_0 %139
+               OpBranch %126
+        %127 = OpLabel
+        %140 = OpFunctionCall %void %mergeSort_
+        %141 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %142 = OpLoad %float %141
+        %143 = OpConvertFToS %int %142
+        %144 = OpSLessThan %bool %143 %int_30
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %147
+        %146 = OpLabel
+        %148 = OpAccessChain %_ptr_Private_int %data %int_0
+        %149 = OpLoad %int %148
+        %150 = OpConvertSToF %float %149
+        %151 = OpFDiv %float %150 %float_10
+        %152 = OpFAdd %float %float_0_5 %151
+               OpStore %grey %152
+               OpBranch %145
+        %147 = OpLabel
+        %153 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %154 = OpLoad %float %153
+        %155 = OpConvertFToS %int %154
+        %156 = OpSLessThan %bool %155 %int_60
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %159
+        %158 = OpLabel
+        %160 = OpAccessChain %_ptr_Private_int %data %int_1
+        %161 = OpLoad %int %160
+        %162 = OpConvertSToF %float %161
+        %163 = OpFDiv %float %162 %float_10
+        %164 = OpFAdd %float %float_0_5 %163
+               OpStore %grey %164
+               OpBranch %157
+        %159 = OpLabel
+        %165 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %166 = OpLoad %float %165
+        %167 = OpConvertFToS %int %166
+        %168 = OpSLessThan %bool %167 %int_90
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %171
+        %170 = OpLabel
+        %172 = OpAccessChain %_ptr_Private_int %data %int_2
+        %173 = OpLoad %int %172
+        %174 = OpConvertSToF %float %173
+        %175 = OpFDiv %float %174 %float_10
+        %176 = OpFAdd %float %float_0_5 %175
+               OpStore %grey %176
+               OpBranch %169
+        %171 = OpLabel
+        %177 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %178 = OpLoad %float %177
+        %179 = OpConvertFToS %int %178
+        %180 = OpSLessThan %bool %179 %int_120
+               OpSelectionMerge %181 None
+               OpBranchConditional %180 %182 %183
+        %182 = OpLabel
+        %184 = OpAccessChain %_ptr_Private_int %data %int_3
+        %185 = OpLoad %int %184
+        %186 = OpConvertSToF %float %185
+        %187 = OpFDiv %float %186 %float_10
+        %188 = OpFAdd %float %float_0_5 %187
+               OpStore %grey %188
+               OpBranch %181
+        %183 = OpLabel
+        %189 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %190 = OpLoad %float %189
+        %191 = OpConvertFToS %int %190
+        %192 = OpSLessThan %bool %191 %int_150
+               OpSelectionMerge %193 None
+               OpBranchConditional %192 %194 %195
+        %194 = OpLabel
+               OpKill
+        %195 = OpLabel
+        %196 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %197 = OpLoad %float %196
+        %198 = OpConvertFToS %int %197
+        %199 = OpSLessThan %bool %198 %int_180
+               OpSelectionMerge %200 None
+               OpBranchConditional %199 %201 %202
+        %201 = OpLabel
+        %203 = OpAccessChain %_ptr_Private_int %data %int_5
+        %204 = OpLoad %int %203
+        %205 = OpConvertSToF %float %204
+        %206 = OpFDiv %float %205 %float_10
+        %207 = OpFAdd %float %float_0_5 %206
+               OpStore %grey %207
+               OpBranch %200
+        %202 = OpLabel
+        %208 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %209 = OpLoad %float %208
+        %210 = OpConvertFToS %int %209
+        %211 = OpSLessThan %bool %210 %int_210
+               OpSelectionMerge %212 None
+               OpBranchConditional %211 %213 %214
+        %213 = OpLabel
+        %215 = OpAccessChain %_ptr_Private_int %data %int_6
+        %216 = OpLoad %int %215
+        %217 = OpConvertSToF %float %216
+        %218 = OpFDiv %float %217 %float_10
+        %219 = OpFAdd %float %float_0_5 %218
+               OpStore %grey %219
+               OpBranch %212
+        %214 = OpLabel
+        %220 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %221 = OpLoad %float %220
+        %222 = OpConvertFToS %int %221
+        %223 = OpSLessThan %bool %222 %int_240
+               OpSelectionMerge %224 None
+               OpBranchConditional %223 %225 %226
+        %225 = OpLabel
+        %227 = OpAccessChain %_ptr_Private_int %data %int_7
+        %228 = OpLoad %int %227
+        %229 = OpConvertSToF %float %228
+        %230 = OpFDiv %float %229 %float_10
+        %231 = OpFAdd %float %float_0_5 %230
+               OpStore %grey %231
+               OpBranch %224
+        %226 = OpLabel
+        %232 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %233 = OpLoad %float %232
+        %234 = OpConvertFToS %int %233
+        %235 = OpSLessThan %bool %234 %int_270
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %238
+        %237 = OpLabel
+        %239 = OpAccessChain %_ptr_Private_int %data %int_8
+        %240 = OpLoad %int %239
+        %241 = OpConvertSToF %float %240
+        %242 = OpFDiv %float %241 %float_10
+        %243 = OpFAdd %float %float_0_5 %242
+               OpStore %grey %243
+               OpBranch %236
+        %238 = OpLabel
+               OpKill
+        %236 = OpLabel
+               OpBranch %224
+        %224 = OpLabel
+               OpBranch %212
+        %212 = OpLabel
+               OpBranch %200
+        %200 = OpLabel
+               OpBranch %193
+        %193 = OpLabel
+               OpBranch %181
+        %181 = OpLabel
+               OpBranch %169
+        %169 = OpLabel
+               OpBranch %157
+        %157 = OpLabel
+               OpBranch %145
+        %145 = OpLabel
+        %244 = OpLoad %float %grey
+        %245 = OpCompositeConstruct %v3float %244 %244 %244
+        %246 = OpCompositeExtract %float %245 0
+        %247 = OpCompositeExtract %float %245 1
+        %248 = OpCompositeExtract %float %245 2
+        %249 = OpCompositeConstruct %v4float %246 %247 %248 %float_1
+               OpStore %_GLF_color %249
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %35
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %250 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %251 = OpLoad %int %from
+               OpStore %k %251
+        %252 = OpLoad %int %from
+               OpStore %i %252
+        %253 = OpLoad %int %mid
+        %254 = OpIAdd %int %253 %int_1
+               OpStore %j %254
+               OpBranch %255
+        %255 = OpLabel
+               OpLoopMerge %256 %257 None
+               OpBranch %258
+        %258 = OpLabel
+        %259 = OpLoad %int %i
+        %260 = OpLoad %int %mid
+        %261 = OpSLessThanEqual %bool %259 %260
+        %262 = OpLoad %int %j
+        %263 = OpLoad %int %to
+        %264 = OpSLessThanEqual %bool %262 %263
+        %265 = OpLogicalAnd %bool %261 %264
+               OpBranchConditional %265 %266 %256
+        %266 = OpLabel
+        %267 = OpLoad %int %i
+        %268 = OpAccessChain %_ptr_Private_int %data %267
+        %269 = OpLoad %int %268
+        %270 = OpLoad %int %j
+        %271 = OpAccessChain %_ptr_Private_int %data %270
+        %272 = OpLoad %int %271
+        %273 = OpSLessThan %bool %269 %272
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %276
+        %275 = OpLabel
+        %277 = OpLoad %int %k
+        %278 = OpIAdd %int %277 %int_1
+               OpStore %k %278
+        %279 = OpLoad %int %i
+        %280 = OpIAdd %int %279 %int_1
+               OpStore %i %280
+        %281 = OpAccessChain %_ptr_Private_int %data %279
+        %282 = OpLoad %int %281
+        %283 = OpAccessChain %_ptr_Private_int %temp %277
+               OpStore %283 %282
+               OpBranch %274
+        %276 = OpLabel
+        %284 = OpLoad %int %k
+        %285 = OpIAdd %int %284 %int_1
+               OpStore %k %285
+        %286 = OpLoad %int %j
+        %287 = OpIAdd %int %286 %int_1
+               OpStore %j %287
+        %288 = OpAccessChain %_ptr_Private_int %data %286
+        %289 = OpLoad %int %288
+        %290 = OpAccessChain %_ptr_Private_int %temp %284
+               OpStore %290 %289
+               OpBranch %274
+        %274 = OpLabel
+               OpBranch %257
+        %257 = OpLabel
+               OpBranch %255
+        %256 = OpLabel
+               OpBranch %291
+        %291 = OpLabel
+               OpLoopMerge %292 %293 None
+               OpBranch %294
+        %294 = OpLabel
+        %295 = OpLoad %int %i
+        %296 = OpSLessThan %bool %295 %int_10
+        %297 = OpLoad %int %i
+        %298 = OpLoad %int %mid
+        %299 = OpSLessThanEqual %bool %297 %298
+        %300 = OpLogicalAnd %bool %296 %299
+               OpBranchConditional %300 %301 %292
+        %301 = OpLabel
+        %302 = OpLoad %int %k
+        %303 = OpIAdd %int %302 %int_1
+               OpStore %k %303
+        %304 = OpLoad %int %i
+        %305 = OpIAdd %int %304 %int_1
+               OpStore %i %305
+        %306 = OpAccessChain %_ptr_Private_int %data %304
+        %307 = OpLoad %int %306
+        %308 = OpAccessChain %_ptr_Private_int %temp %302
+               OpStore %308 %307
+               OpBranch %293
+        %293 = OpLabel
+               OpBranch %291
+        %292 = OpLabel
+        %309 = OpLoad %int %from
+               OpStore %i_0 %309
+               OpBranch %310
+        %310 = OpLabel
+               OpLoopMerge %311 %312 None
+               OpBranch %313
+        %313 = OpLabel
+        %314 = OpLoad %int %i_0
+        %315 = OpLoad %int %to
+        %316 = OpSLessThanEqual %bool %314 %315
+               OpBranchConditional %316 %317 %311
+        %317 = OpLabel
+        %318 = OpLoad %int %i_0
+        %319 = OpLoad %int %i_0
+        %320 = OpAccessChain %_ptr_Private_int %temp %319
+        %321 = OpLoad %int %320
+        %322 = OpAccessChain %_ptr_Private_int %data %318
+               OpStore %322 %321
+               OpBranch %312
+        %312 = OpLabel
+        %323 = OpLoad %int %i_0
+        %324 = OpIAdd %int %323 %int_1
+               OpStore %i_0 %324
+               OpBranch %310
+        %311 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %32
+        %325 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %326
+        %326 = OpLabel
+               OpLoopMerge %327 %328 None
+               OpBranch %329
+        %329 = OpLabel
+        %330 = OpLoad %int %m
+        %331 = OpLoad %int %high
+        %332 = OpSLessThanEqual %bool %330 %331
+               OpBranchConditional %332 %333 %327
+        %333 = OpLabel
+        %334 = OpLoad %int %low
+               OpStore %i_1 %334
+               OpBranch %335
+        %335 = OpLabel
+               OpLoopMerge %336 %337 None
+               OpBranch %338
+        %338 = OpLabel
+        %339 = OpLoad %int %i_1
+        %340 = OpLoad %int %high
+        %341 = OpSLessThan %bool %339 %340
+               OpBranchConditional %341 %342 %336
+        %342 = OpLabel
+        %343 = OpLoad %int %i_1
+               OpStore %from_0 %343
+        %344 = OpLoad %int %i_1
+        %345 = OpLoad %int %m
+        %346 = OpIAdd %int %344 %345
+        %347 = OpISub %int %346 %int_1
+               OpStore %mid_0 %347
+        %348 = OpLoad %int %i_1
+        %349 = OpLoad %int %m
+        %350 = OpIMul %int %int_2 %349
+        %351 = OpIAdd %int %348 %350
+        %352 = OpISub %int %351 %int_1
+        %353 = OpLoad %int %high
+        %354 = OpExtInst %int %1 SMin %352 %353
+               OpStore %to_0 %354
+        %355 = OpLoad %int %from_0
+               OpStore %param %355
+        %356 = OpLoad %int %mid_0
+               OpStore %param_0 %356
+        %357 = OpLoad %int %to_0
+               OpStore %param_1 %357
+        %358 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %337
+        %337 = OpLabel
+        %359 = OpLoad %int %m
+        %360 = OpIMul %int %int_2 %359
+        %361 = OpLoad %int %i_1
+        %362 = OpIAdd %int %361 %360
+               OpStore %i_1 %362
+               OpBranch %335
+        %336 = OpLabel
+               OpBranch %328
+        %328 = OpLabel
+        %363 = OpLoad %int %m
+        %364 = OpIMul %int %int_2 %363
+               OpStore %m %364
+               OpBranch %326
+        %327 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..6a30ba4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.hlsl
@@ -0,0 +1,268 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_251 = from;
+  k = x_251;
+  const int x_252 = from;
+  i = x_252;
+  const int x_253 = mid;
+  j = (x_253 + 1);
+  while (true) {
+    const int x_259 = i;
+    const int x_260 = mid;
+    const int x_262 = j;
+    const int x_263 = to;
+    bool tint_tmp = (x_259 <= x_260);
+    if (tint_tmp) {
+      tint_tmp = (x_262 <= x_263);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_269 = data[i];
+    const int x_272 = data[j];
+    if ((x_269 < x_272)) {
+      const int x_277 = k;
+      k = (x_277 + 1);
+      const int x_279 = i;
+      i = (x_279 + 1);
+      const int x_282 = data[x_279];
+      temp[x_277] = x_282;
+    } else {
+      const int x_284 = k;
+      k = (x_284 + 1);
+      const int x_286 = j;
+      j = (x_286 + 1);
+      const int x_289 = data[x_286];
+      temp[x_284] = x_289;
+    }
+  }
+  while (true) {
+    const int x_295 = i;
+    const int x_297 = i;
+    const int x_298 = mid;
+    bool tint_tmp_1 = (x_295 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_297 <= x_298);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_302 = k;
+    k = (x_302 + 1);
+    const int x_304 = i;
+    i = (x_304 + 1);
+    const int x_307 = data[x_304];
+    temp[x_302] = x_307;
+  }
+  const int x_309 = from;
+  i_1 = x_309;
+  while (true) {
+    const int x_314 = i_1;
+    const int x_315 = to;
+    if ((x_314 <= x_315)) {
+    } else {
+      break;
+    }
+    const int x_318 = i_1;
+    const int x_321 = temp[i_1];
+    data[x_318] = x_321;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_84 = asfloat(x_28[0].x);
+  i_3 = int(x_84);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_133 = j_1;
+      const int x_136 = data[j_1];
+      temp[x_133] = x_136;
+    }
+  }
+  mergeSort_();
+  const float x_142 = gl_FragCoord.y;
+  if ((int(x_142) < 30)) {
+    const int x_149 = data[0];
+    grey = (0.5f + (float(x_149) / 10.0f));
+  } else {
+    const float x_154 = gl_FragCoord.y;
+    if ((int(x_154) < 60)) {
+      const int x_161 = data[1];
+      grey = (0.5f + (float(x_161) / 10.0f));
+    } else {
+      const float x_166 = gl_FragCoord.y;
+      if ((int(x_166) < 90)) {
+        const int x_173 = data[2];
+        grey = (0.5f + (float(x_173) / 10.0f));
+      } else {
+        const float x_178 = gl_FragCoord.y;
+        if ((int(x_178) < 120)) {
+          const int x_185 = data[3];
+          grey = (0.5f + (float(x_185) / 10.0f));
+        } else {
+          const float x_190 = gl_FragCoord.y;
+          if ((int(x_190) < 150)) {
+            discard;
+          } else {
+            const float x_197 = gl_FragCoord.y;
+            if ((int(x_197) < 180)) {
+              const int x_204 = data[5];
+              grey = (0.5f + (float(x_204) / 10.0f));
+            } else {
+              const float x_209 = gl_FragCoord.y;
+              if ((int(x_209) < 210)) {
+                const int x_216 = data[6];
+                grey = (0.5f + (float(x_216) / 10.0f));
+              } else {
+                const float x_221 = gl_FragCoord.y;
+                if ((int(x_221) < 240)) {
+                  const int x_228 = data[7];
+                  grey = (0.5f + (float(x_228) / 10.0f));
+                } else {
+                  const float x_233 = gl_FragCoord.y;
+                  if ((int(x_233) < 270)) {
+                    const int x_240 = data[8];
+                    grey = (0.5f + (float(x_240) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_244 = grey;
+  const float3 x_245 = float3(x_244, x_244, x_244);
+  x_GLF_color = float4(x_245.x, x_245.y, x_245.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.msl
new file mode 100644
index 0000000..6340b47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.msl
@@ -0,0 +1,314 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_251 = *(from);
+  k = x_251;
+  int const x_252 = *(from);
+  i = x_252;
+  int const x_253 = *(mid);
+  j = (x_253 + 1);
+  while (true) {
+    int const x_259 = i;
+    int const x_260 = *(mid);
+    int const x_262 = j;
+    int const x_263 = *(to);
+    if (((x_259 <= x_260) && (x_262 <= x_263))) {
+    } else {
+      break;
+    }
+    int const x_267 = i;
+    int const x_269 = (*(tint_symbol_5)).arr[x_267];
+    int const x_270 = j;
+    int const x_272 = (*(tint_symbol_5)).arr[x_270];
+    if ((x_269 < x_272)) {
+      int const x_277 = k;
+      k = (x_277 + 1);
+      int const x_279 = i;
+      i = (x_279 + 1);
+      int const x_282 = (*(tint_symbol_5)).arr[x_279];
+      (*(tint_symbol_6)).arr[x_277] = x_282;
+    } else {
+      int const x_284 = k;
+      k = (x_284 + 1);
+      int const x_286 = j;
+      j = (x_286 + 1);
+      int const x_289 = (*(tint_symbol_5)).arr[x_286];
+      (*(tint_symbol_6)).arr[x_284] = x_289;
+    }
+  }
+  while (true) {
+    int const x_295 = i;
+    int const x_297 = i;
+    int const x_298 = *(mid);
+    if (((x_295 < 10) && (x_297 <= x_298))) {
+    } else {
+      break;
+    }
+    int const x_302 = k;
+    k = (x_302 + 1);
+    int const x_304 = i;
+    i = (x_304 + 1);
+    int const x_307 = (*(tint_symbol_5)).arr[x_304];
+    (*(tint_symbol_6)).arr[x_302] = x_307;
+  }
+  int const x_309 = *(from);
+  i_1 = x_309;
+  while (true) {
+    int const x_314 = i_1;
+    int const x_315 = *(to);
+    if ((x_314 <= x_315)) {
+    } else {
+      break;
+    }
+    int const x_318 = i_1;
+    int const x_319 = i_1;
+    int const x_321 = (*(tint_symbol_6)).arr[x_319];
+    (*(tint_symbol_5)).arr[x_318] = x_321;
+    {
+      int const x_323 = i_1;
+      i_1 = (x_323 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_330 = m;
+    int const x_331 = high;
+    if ((x_330 <= x_331)) {
+    } else {
+      break;
+    }
+    int const x_334 = low;
+    i_2 = x_334;
+    while (true) {
+      int const x_339 = i_2;
+      int const x_340 = high;
+      if ((x_339 < x_340)) {
+      } else {
+        break;
+      }
+      int const x_343 = i_2;
+      from_1 = x_343;
+      int const x_344 = i_2;
+      int const x_345 = m;
+      mid_1 = ((x_344 + x_345) - 1);
+      int const x_348 = i_2;
+      int const x_349 = m;
+      int const x_353 = high;
+      to_1 = min(((x_348 + (2 * x_349)) - 1), x_353);
+      int const x_355 = from_1;
+      param = x_355;
+      int const x_356 = mid_1;
+      param_1 = x_356;
+      int const x_357 = to_1;
+      param_2 = x_357;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_359 = m;
+        int const x_361 = i_2;
+        i_2 = (x_361 + (2 * x_359));
+      }
+    }
+    {
+      int const x_363 = m;
+      m = (2 * x_363);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_84 = x_28.injectionSwitch.x;
+  i_3 = int(x_84);
+  while (true) {
+    int const x_90 = i_3;
+    switch(x_90) {
+      case 9: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -5;
+        break;
+      }
+      case 8: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -4;
+        break;
+      }
+      case 7: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -3;
+        break;
+      }
+      case 6: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = -2;
+        break;
+      }
+      case 5: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = -1;
+        break;
+      }
+      case 4: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 0;
+        break;
+      }
+      case 3: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 1;
+        break;
+      }
+      case 2: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 2;
+        break;
+      }
+      case 1: {
+        int const x_104 = i_3;
+        (*(tint_symbol_9)).arr[x_104] = 3;
+        break;
+      }
+      case 0: {
+        int const x_102 = i_3;
+        (*(tint_symbol_9)).arr[x_102] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_122 = i_3;
+    i_3 = (x_122 + 1);
+    {
+      int const x_124 = i_3;
+      if ((x_124 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_130 = j_1;
+    if ((x_130 < 10)) {
+    } else {
+      break;
+    }
+    int const x_133 = j_1;
+    int const x_134 = j_1;
+    int const x_136 = (*(tint_symbol_9)).arr[x_134];
+    (*(tint_symbol_10)).arr[x_133] = x_136;
+    {
+      int const x_138 = j_1;
+      j_1 = (x_138 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_142 = (*(tint_symbol_11)).y;
+  if ((int(x_142) < 30)) {
+    int const x_149 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_149) / 10.0f));
+  } else {
+    float const x_154 = (*(tint_symbol_11)).y;
+    if ((int(x_154) < 60)) {
+      int const x_161 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_161) / 10.0f));
+    } else {
+      float const x_166 = (*(tint_symbol_11)).y;
+      if ((int(x_166) < 90)) {
+        int const x_173 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_173) / 10.0f));
+      } else {
+        float const x_178 = (*(tint_symbol_11)).y;
+        if ((int(x_178) < 120)) {
+          int const x_185 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_185) / 10.0f));
+        } else {
+          float const x_190 = (*(tint_symbol_11)).y;
+          if ((int(x_190) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_197 = (*(tint_symbol_11)).y;
+            if ((int(x_197) < 180)) {
+              int const x_204 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_204) / 10.0f));
+            } else {
+              float const x_209 = (*(tint_symbol_11)).y;
+              if ((int(x_209) < 210)) {
+                int const x_216 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_216) / 10.0f));
+              } else {
+                float const x_221 = (*(tint_symbol_11)).y;
+                if ((int(x_221) < 240)) {
+                  int const x_228 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_228) / 10.0f));
+                } else {
+                  float const x_233 = (*(tint_symbol_11)).y;
+                  if ((int(x_233) < 270)) {
+                    int const x_240 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_240) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_244 = grey;
+  float3 const x_245 = float3(x_244, x_244, x_244);
+  *(tint_symbol_12) = float4(x_245.x, x_245.y, x_245.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..4df39a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.spvasm
@@ -0,0 +1,649 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 416
+; Schema: 0
+               OpCapability Shader
+        %177 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %201 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %403 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %134 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %m
+        %152 = OpLoad %int %high
+        %153 = OpSLessThanEqual %bool %151 %152
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %148
+        %154 = OpLabel
+        %157 = OpLoad %int %low
+               OpStore %i_2 %157
+               OpBranch %158
+        %158 = OpLabel
+               OpLoopMerge %159 %160 None
+               OpBranch %161
+        %161 = OpLabel
+        %162 = OpLoad %int %i_2
+        %163 = OpLoad %int %high
+        %164 = OpSLessThan %bool %162 %163
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %167
+        %166 = OpLabel
+               OpBranch %165
+        %167 = OpLabel
+               OpBranch %159
+        %165 = OpLabel
+        %168 = OpLoad %int %i_2
+               OpStore %from_1 %168
+        %169 = OpLoad %int %i_2
+        %170 = OpLoad %int %m
+        %171 = OpIAdd %int %169 %170
+        %172 = OpISub %int %171 %int_1
+               OpStore %mid_1 %172
+        %173 = OpLoad %int %i_2
+        %174 = OpLoad %int %m
+        %175 = OpLoad %int %high
+        %179 = OpIMul %int %int_2 %174
+        %180 = OpIAdd %int %173 %179
+        %181 = OpISub %int %180 %int_1
+        %176 = OpExtInst %int %177 SMin %181 %175
+               OpStore %to_1 %176
+        %182 = OpLoad %int %from_1
+               OpStore %param %182
+        %183 = OpLoad %int %mid_1
+               OpStore %param_1 %183
+        %184 = OpLoad %int %to_1
+               OpStore %param_2 %184
+        %185 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %160
+        %160 = OpLabel
+        %189 = OpLoad %int %m
+        %190 = OpLoad %int %i_2
+        %191 = OpIMul %int %int_2 %189
+        %192 = OpIAdd %int %190 %191
+               OpStore %i_2 %192
+               OpBranch %158
+        %159 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %193 = OpLoad %int %m
+        %194 = OpIMul %int %int_2 %193
+               OpStore %m %194
+               OpBranch %147
+        %148 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %196 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %201
+        %204 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %205 = OpLoad %float %204
+        %206 = OpConvertFToS %int %205
+               OpStore %i_3 %206
+               OpBranch %207
+        %207 = OpLabel
+               OpLoopMerge %208 %209 None
+               OpBranch %210
+        %210 = OpLabel
+        %211 = OpLoad %int %i_3
+               OpSelectionMerge %212 None
+               OpSwitch %211 %213 9 %214 8 %215 7 %216 6 %217 5 %218 4 %219 3 %220 2 %221 1 %222 0 %223
+        %214 = OpLabel
+        %224 = OpLoad %int %i_3
+        %225 = OpAccessChain %_ptr_Private_int %data %224
+               OpStore %225 %int_n5
+               OpBranch %212
+        %215 = OpLabel
+        %227 = OpLoad %int %i_3
+        %228 = OpAccessChain %_ptr_Private_int %data %227
+               OpStore %228 %int_n4
+               OpBranch %212
+        %216 = OpLabel
+        %230 = OpLoad %int %i_3
+        %231 = OpAccessChain %_ptr_Private_int %data %230
+               OpStore %231 %int_n3
+               OpBranch %212
+        %217 = OpLabel
+        %233 = OpLoad %int %i_3
+        %234 = OpAccessChain %_ptr_Private_int %data %233
+               OpStore %234 %int_n2
+               OpBranch %212
+        %218 = OpLabel
+        %236 = OpLoad %int %i_3
+        %237 = OpAccessChain %_ptr_Private_int %data %236
+               OpStore %237 %int_n1
+               OpBranch %212
+        %219 = OpLabel
+        %239 = OpLoad %int %i_3
+        %240 = OpAccessChain %_ptr_Private_int %data %239
+               OpStore %240 %int_0
+               OpBranch %212
+        %220 = OpLabel
+        %241 = OpLoad %int %i_3
+        %242 = OpAccessChain %_ptr_Private_int %data %241
+               OpStore %242 %int_1
+               OpBranch %212
+        %221 = OpLabel
+        %243 = OpLoad %int %i_3
+        %244 = OpAccessChain %_ptr_Private_int %data %243
+               OpStore %244 %int_2
+               OpBranch %212
+        %222 = OpLabel
+        %245 = OpLoad %int %i_3
+        %246 = OpAccessChain %_ptr_Private_int %data %245
+               OpStore %246 %int_3
+               OpBranch %212
+        %223 = OpLabel
+        %248 = OpLoad %int %i_3
+        %249 = OpAccessChain %_ptr_Private_int %data %248
+               OpStore %249 %int_4
+               OpBranch %212
+        %213 = OpLabel
+               OpBranch %212
+        %212 = OpLabel
+        %251 = OpLoad %int %i_3
+        %252 = OpIAdd %int %251 %int_1
+               OpStore %i_3 %252
+               OpBranch %209
+        %209 = OpLabel
+        %253 = OpLoad %int %i_3
+        %254 = OpSLessThan %bool %253 %int_10
+               OpSelectionMerge %255 None
+               OpBranchConditional %254 %256 %257
+        %256 = OpLabel
+               OpBranch %255
+        %257 = OpLabel
+               OpBranch %208
+        %255 = OpLabel
+               OpBranch %207
+        %208 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %258
+        %258 = OpLabel
+               OpLoopMerge %259 %260 None
+               OpBranch %261
+        %261 = OpLabel
+        %262 = OpLoad %int %j_1
+        %263 = OpSLessThan %bool %262 %int_10
+               OpSelectionMerge %264 None
+               OpBranchConditional %263 %265 %266
+        %265 = OpLabel
+               OpBranch %264
+        %266 = OpLabel
+               OpBranch %259
+        %264 = OpLabel
+        %267 = OpLoad %int %j_1
+        %268 = OpLoad %int %j_1
+        %269 = OpAccessChain %_ptr_Private_int %data %268
+        %270 = OpLoad %int %269
+        %271 = OpAccessChain %_ptr_Private_int %temp %267
+               OpStore %271 %270
+               OpBranch %260
+        %260 = OpLabel
+        %272 = OpLoad %int %j_1
+        %273 = OpIAdd %int %272 %int_1
+               OpStore %j_1 %273
+               OpBranch %258
+        %259 = OpLabel
+        %274 = OpFunctionCall %void %mergeSort_
+        %277 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %278 = OpLoad %float %277
+        %279 = OpConvertFToS %int %278
+        %281 = OpSLessThan %bool %279 %int_30
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %284
+        %283 = OpLabel
+        %285 = OpAccessChain %_ptr_Private_int %data %int_0
+        %286 = OpLoad %int %285
+        %288 = OpConvertSToF %float %286
+        %290 = OpFDiv %float %288 %float_10
+        %291 = OpFAdd %float %float_0_5 %290
+               OpStore %grey %291
+               OpBranch %282
+        %284 = OpLabel
+        %292 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %293 = OpLoad %float %292
+        %294 = OpConvertFToS %int %293
+        %296 = OpSLessThan %bool %294 %int_60
+               OpSelectionMerge %297 None
+               OpBranchConditional %296 %298 %299
+        %298 = OpLabel
+        %300 = OpAccessChain %_ptr_Private_int %data %int_1
+        %301 = OpLoad %int %300
+        %302 = OpConvertSToF %float %301
+        %303 = OpFDiv %float %302 %float_10
+        %304 = OpFAdd %float %float_0_5 %303
+               OpStore %grey %304
+               OpBranch %297
+        %299 = OpLabel
+        %305 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %306 = OpLoad %float %305
+        %307 = OpConvertFToS %int %306
+        %309 = OpSLessThan %bool %307 %int_90
+               OpSelectionMerge %310 None
+               OpBranchConditional %309 %311 %312
+        %311 = OpLabel
+        %313 = OpAccessChain %_ptr_Private_int %data %int_2
+        %314 = OpLoad %int %313
+        %315 = OpConvertSToF %float %314
+        %316 = OpFDiv %float %315 %float_10
+        %317 = OpFAdd %float %float_0_5 %316
+               OpStore %grey %317
+               OpBranch %310
+        %312 = OpLabel
+        %318 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %319 = OpLoad %float %318
+        %320 = OpConvertFToS %int %319
+        %322 = OpSLessThan %bool %320 %int_120
+               OpSelectionMerge %323 None
+               OpBranchConditional %322 %324 %325
+        %324 = OpLabel
+        %326 = OpAccessChain %_ptr_Private_int %data %int_3
+        %327 = OpLoad %int %326
+        %328 = OpConvertSToF %float %327
+        %329 = OpFDiv %float %328 %float_10
+        %330 = OpFAdd %float %float_0_5 %329
+               OpStore %grey %330
+               OpBranch %323
+        %325 = OpLabel
+        %331 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %332 = OpLoad %float %331
+        %333 = OpConvertFToS %int %332
+        %335 = OpSLessThan %bool %333 %int_150
+               OpSelectionMerge %336 None
+               OpBranchConditional %335 %337 %338
+        %337 = OpLabel
+               OpKill
+        %338 = OpLabel
+        %339 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %340 = OpLoad %float %339
+        %341 = OpConvertFToS %int %340
+        %343 = OpSLessThan %bool %341 %int_180
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %346
+        %345 = OpLabel
+        %348 = OpAccessChain %_ptr_Private_int %data %int_5
+        %349 = OpLoad %int %348
+        %350 = OpConvertSToF %float %349
+        %351 = OpFDiv %float %350 %float_10
+        %352 = OpFAdd %float %float_0_5 %351
+               OpStore %grey %352
+               OpBranch %344
+        %346 = OpLabel
+        %353 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %354 = OpLoad %float %353
+        %355 = OpConvertFToS %int %354
+        %357 = OpSLessThan %bool %355 %int_210
+               OpSelectionMerge %358 None
+               OpBranchConditional %357 %359 %360
+        %359 = OpLabel
+        %362 = OpAccessChain %_ptr_Private_int %data %int_6
+        %363 = OpLoad %int %362
+        %364 = OpConvertSToF %float %363
+        %365 = OpFDiv %float %364 %float_10
+        %366 = OpFAdd %float %float_0_5 %365
+               OpStore %grey %366
+               OpBranch %358
+        %360 = OpLabel
+        %367 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %368 = OpLoad %float %367
+        %369 = OpConvertFToS %int %368
+        %371 = OpSLessThan %bool %369 %int_240
+               OpSelectionMerge %372 None
+               OpBranchConditional %371 %373 %374
+        %373 = OpLabel
+        %376 = OpAccessChain %_ptr_Private_int %data %int_7
+        %377 = OpLoad %int %376
+        %378 = OpConvertSToF %float %377
+        %379 = OpFDiv %float %378 %float_10
+        %380 = OpFAdd %float %float_0_5 %379
+               OpStore %grey %380
+               OpBranch %372
+        %374 = OpLabel
+        %381 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %382 = OpLoad %float %381
+        %383 = OpConvertFToS %int %382
+        %385 = OpSLessThan %bool %383 %int_270
+               OpSelectionMerge %386 None
+               OpBranchConditional %385 %387 %388
+        %387 = OpLabel
+        %390 = OpAccessChain %_ptr_Private_int %data %int_8
+        %391 = OpLoad %int %390
+        %392 = OpConvertSToF %float %391
+        %393 = OpFDiv %float %392 %float_10
+        %394 = OpFAdd %float %float_0_5 %393
+               OpStore %grey %394
+               OpBranch %386
+        %388 = OpLabel
+               OpKill
+        %386 = OpLabel
+               OpBranch %372
+        %372 = OpLabel
+               OpBranch %358
+        %358 = OpLabel
+               OpBranch %344
+        %344 = OpLabel
+               OpBranch %336
+        %336 = OpLabel
+               OpBranch %323
+        %323 = OpLabel
+               OpBranch %310
+        %310 = OpLabel
+               OpBranch %297
+        %297 = OpLabel
+               OpBranch %282
+        %282 = OpLabel
+        %395 = OpLoad %float %grey
+        %397 = OpCompositeConstruct %v3float %395 %395 %395
+        %398 = OpCompositeExtract %float %397 0
+        %399 = OpCompositeExtract %float %397 1
+        %400 = OpCompositeExtract %float %397 2
+        %402 = OpCompositeConstruct %v4float %398 %399 %400 %float_1
+               OpStore %x_GLF_color %402
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %403
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %407 = OpLabel
+        %408 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %408
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %410 = OpLabel
+        %411 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %411
+        %412 = OpFunctionCall %void %main_1
+        %414 = OpLoad %v4float %x_GLF_color
+        %415 = OpCompositeConstruct %main_out %414
+        %413 = OpFunctionCall %void %tint_symbol_3 %415
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 209[%209] is not post dominated by the back-edge block 255[%255]
+  %255 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..c8f464e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.spvasm.expected.wgsl
@@ -0,0 +1,306 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_251 : i32 = *(from);
+  k = x_251;
+  let x_252 : i32 = *(from);
+  i = x_252;
+  let x_253 : i32 = *(mid);
+  j = (x_253 + 1);
+  loop {
+    let x_259 : i32 = i;
+    let x_260 : i32 = *(mid);
+    let x_262 : i32 = j;
+    let x_263 : i32 = *(to);
+    if (((x_259 <= x_260) && (x_262 <= x_263))) {
+    } else {
+      break;
+    }
+    let x_267 : i32 = i;
+    let x_269 : i32 = data[x_267];
+    let x_270 : i32 = j;
+    let x_272 : i32 = data[x_270];
+    if ((x_269 < x_272)) {
+      let x_277 : i32 = k;
+      k = (x_277 + 1);
+      let x_279 : i32 = i;
+      i = (x_279 + 1);
+      let x_282 : i32 = data[x_279];
+      temp[x_277] = x_282;
+    } else {
+      let x_284 : i32 = k;
+      k = (x_284 + 1);
+      let x_286 : i32 = j;
+      j = (x_286 + 1);
+      let x_289 : i32 = data[x_286];
+      temp[x_284] = x_289;
+    }
+  }
+  loop {
+    let x_295 : i32 = i;
+    let x_297 : i32 = i;
+    let x_298 : i32 = *(mid);
+    if (((x_295 < 10) && (x_297 <= x_298))) {
+    } else {
+      break;
+    }
+    let x_302 : i32 = k;
+    k = (x_302 + 1);
+    let x_304 : i32 = i;
+    i = (x_304 + 1);
+    let x_307 : i32 = data[x_304];
+    temp[x_302] = x_307;
+  }
+  let x_309 : i32 = *(from);
+  i_1 = x_309;
+  loop {
+    let x_314 : i32 = i_1;
+    let x_315 : i32 = *(to);
+    if ((x_314 <= x_315)) {
+    } else {
+      break;
+    }
+    let x_318 : i32 = i_1;
+    let x_319 : i32 = i_1;
+    let x_321 : i32 = temp[x_319];
+    data[x_318] = x_321;
+
+    continuing {
+      let x_323 : i32 = i_1;
+      i_1 = (x_323 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_330 : i32 = m;
+    let x_331 : i32 = high;
+    if ((x_330 <= x_331)) {
+    } else {
+      break;
+    }
+    let x_334 : i32 = low;
+    i_2 = x_334;
+    loop {
+      let x_339 : i32 = i_2;
+      let x_340 : i32 = high;
+      if ((x_339 < x_340)) {
+      } else {
+        break;
+      }
+      let x_343 : i32 = i_2;
+      from_1 = x_343;
+      let x_344 : i32 = i_2;
+      let x_345 : i32 = m;
+      mid_1 = ((x_344 + x_345) - 1);
+      let x_348 : i32 = i_2;
+      let x_349 : i32 = m;
+      let x_353 : i32 = high;
+      to_1 = min(((x_348 + (2 * x_349)) - 1), x_353);
+      let x_355 : i32 = from_1;
+      param = x_355;
+      let x_356 : i32 = mid_1;
+      param_1 = x_356;
+      let x_357 : i32 = to_1;
+      param_2 = x_357;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_359 : i32 = m;
+        let x_361 : i32 = i_2;
+        i_2 = (x_361 + (2 * x_359));
+      }
+    }
+
+    continuing {
+      let x_363 : i32 = m;
+      m = (2 * x_363);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_84 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_84);
+  loop {
+    let x_90 : i32 = i_3;
+    switch(x_90) {
+      case 9: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -5;
+      }
+      case 8: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -4;
+      }
+      case 7: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -3;
+      }
+      case 6: {
+        let x_114 : i32 = i_3;
+        data[x_114] = -2;
+      }
+      case 5: {
+        let x_112 : i32 = i_3;
+        data[x_112] = -1;
+      }
+      case 4: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 0;
+      }
+      case 3: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 1;
+      }
+      case 2: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 2;
+      }
+      case 1: {
+        let x_104 : i32 = i_3;
+        data[x_104] = 3;
+      }
+      case 0: {
+        let x_102 : i32 = i_3;
+        data[x_102] = 4;
+      }
+      default: {
+      }
+    }
+    let x_122 : i32 = i_3;
+    i_3 = (x_122 + 1);
+
+    continuing {
+      let x_124 : i32 = i_3;
+      if ((x_124 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_130 : i32 = j_1;
+    if ((x_130 < 10)) {
+    } else {
+      break;
+    }
+    let x_133 : i32 = j_1;
+    let x_134 : i32 = j_1;
+    let x_136 : i32 = data[x_134];
+    temp[x_133] = x_136;
+
+    continuing {
+      let x_138 : i32 = j_1;
+      j_1 = (x_138 + 1);
+    }
+  }
+  mergeSort_();
+  let x_142 : f32 = gl_FragCoord.y;
+  if ((i32(x_142) < 30)) {
+    let x_149 : i32 = data[0];
+    grey = (0.5 + (f32(x_149) / 10.0));
+  } else {
+    let x_154 : f32 = gl_FragCoord.y;
+    if ((i32(x_154) < 60)) {
+      let x_161 : i32 = data[1];
+      grey = (0.5 + (f32(x_161) / 10.0));
+    } else {
+      let x_166 : f32 = gl_FragCoord.y;
+      if ((i32(x_166) < 90)) {
+        let x_173 : i32 = data[2];
+        grey = (0.5 + (f32(x_173) / 10.0));
+      } else {
+        let x_178 : f32 = gl_FragCoord.y;
+        if ((i32(x_178) < 120)) {
+          let x_185 : i32 = data[3];
+          grey = (0.5 + (f32(x_185) / 10.0));
+        } else {
+          let x_190 : f32 = gl_FragCoord.y;
+          if ((i32(x_190) < 150)) {
+            discard;
+          } else {
+            let x_197 : f32 = gl_FragCoord.y;
+            if ((i32(x_197) < 180)) {
+              let x_204 : i32 = data[5];
+              grey = (0.5 + (f32(x_204) / 10.0));
+            } else {
+              let x_209 : f32 = gl_FragCoord.y;
+              if ((i32(x_209) < 210)) {
+                let x_216 : i32 = data[6];
+                grey = (0.5 + (f32(x_216) / 10.0));
+              } else {
+                let x_221 : f32 = gl_FragCoord.y;
+                if ((i32(x_221) < 240)) {
+                  let x_228 : i32 = data[7];
+                  grey = (0.5 + (f32(x_228) / 10.0));
+                } else {
+                  let x_233 : f32 = gl_FragCoord.y;
+                  if ((i32(x_233) < 270)) {
+                    let x_240 : i32 = data[8];
+                    grey = (0.5 + (f32(x_240) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_244 : f32 = grey;
+  let x_245 : vec3<f32> = vec3<f32>(x_244, x_244, x_244);
+  x_GLF_color = vec4<f32>(x_245.x, x_245.y, x_245.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
new file mode 100644
index 0000000..c8f464e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
@@ -0,0 +1,306 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_251 : i32 = *(from);
+  k = x_251;
+  let x_252 : i32 = *(from);
+  i = x_252;
+  let x_253 : i32 = *(mid);
+  j = (x_253 + 1);
+  loop {
+    let x_259 : i32 = i;
+    let x_260 : i32 = *(mid);
+    let x_262 : i32 = j;
+    let x_263 : i32 = *(to);
+    if (((x_259 <= x_260) && (x_262 <= x_263))) {
+    } else {
+      break;
+    }
+    let x_267 : i32 = i;
+    let x_269 : i32 = data[x_267];
+    let x_270 : i32 = j;
+    let x_272 : i32 = data[x_270];
+    if ((x_269 < x_272)) {
+      let x_277 : i32 = k;
+      k = (x_277 + 1);
+      let x_279 : i32 = i;
+      i = (x_279 + 1);
+      let x_282 : i32 = data[x_279];
+      temp[x_277] = x_282;
+    } else {
+      let x_284 : i32 = k;
+      k = (x_284 + 1);
+      let x_286 : i32 = j;
+      j = (x_286 + 1);
+      let x_289 : i32 = data[x_286];
+      temp[x_284] = x_289;
+    }
+  }
+  loop {
+    let x_295 : i32 = i;
+    let x_297 : i32 = i;
+    let x_298 : i32 = *(mid);
+    if (((x_295 < 10) && (x_297 <= x_298))) {
+    } else {
+      break;
+    }
+    let x_302 : i32 = k;
+    k = (x_302 + 1);
+    let x_304 : i32 = i;
+    i = (x_304 + 1);
+    let x_307 : i32 = data[x_304];
+    temp[x_302] = x_307;
+  }
+  let x_309 : i32 = *(from);
+  i_1 = x_309;
+  loop {
+    let x_314 : i32 = i_1;
+    let x_315 : i32 = *(to);
+    if ((x_314 <= x_315)) {
+    } else {
+      break;
+    }
+    let x_318 : i32 = i_1;
+    let x_319 : i32 = i_1;
+    let x_321 : i32 = temp[x_319];
+    data[x_318] = x_321;
+
+    continuing {
+      let x_323 : i32 = i_1;
+      i_1 = (x_323 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_330 : i32 = m;
+    let x_331 : i32 = high;
+    if ((x_330 <= x_331)) {
+    } else {
+      break;
+    }
+    let x_334 : i32 = low;
+    i_2 = x_334;
+    loop {
+      let x_339 : i32 = i_2;
+      let x_340 : i32 = high;
+      if ((x_339 < x_340)) {
+      } else {
+        break;
+      }
+      let x_343 : i32 = i_2;
+      from_1 = x_343;
+      let x_344 : i32 = i_2;
+      let x_345 : i32 = m;
+      mid_1 = ((x_344 + x_345) - 1);
+      let x_348 : i32 = i_2;
+      let x_349 : i32 = m;
+      let x_353 : i32 = high;
+      to_1 = min(((x_348 + (2 * x_349)) - 1), x_353);
+      let x_355 : i32 = from_1;
+      param = x_355;
+      let x_356 : i32 = mid_1;
+      param_1 = x_356;
+      let x_357 : i32 = to_1;
+      param_2 = x_357;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_359 : i32 = m;
+        let x_361 : i32 = i_2;
+        i_2 = (x_361 + (2 * x_359));
+      }
+    }
+
+    continuing {
+      let x_363 : i32 = m;
+      m = (2 * x_363);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_84 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_84);
+  loop {
+    let x_90 : i32 = i_3;
+    switch(x_90) {
+      case 9: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -5;
+      }
+      case 8: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -4;
+      }
+      case 7: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -3;
+      }
+      case 6: {
+        let x_114 : i32 = i_3;
+        data[x_114] = -2;
+      }
+      case 5: {
+        let x_112 : i32 = i_3;
+        data[x_112] = -1;
+      }
+      case 4: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 0;
+      }
+      case 3: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 1;
+      }
+      case 2: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 2;
+      }
+      case 1: {
+        let x_104 : i32 = i_3;
+        data[x_104] = 3;
+      }
+      case 0: {
+        let x_102 : i32 = i_3;
+        data[x_102] = 4;
+      }
+      default: {
+      }
+    }
+    let x_122 : i32 = i_3;
+    i_3 = (x_122 + 1);
+
+    continuing {
+      let x_124 : i32 = i_3;
+      if ((x_124 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_130 : i32 = j_1;
+    if ((x_130 < 10)) {
+    } else {
+      break;
+    }
+    let x_133 : i32 = j_1;
+    let x_134 : i32 = j_1;
+    let x_136 : i32 = data[x_134];
+    temp[x_133] = x_136;
+
+    continuing {
+      let x_138 : i32 = j_1;
+      j_1 = (x_138 + 1);
+    }
+  }
+  mergeSort_();
+  let x_142 : f32 = gl_FragCoord.y;
+  if ((i32(x_142) < 30)) {
+    let x_149 : i32 = data[0];
+    grey = (0.5 + (f32(x_149) / 10.0));
+  } else {
+    let x_154 : f32 = gl_FragCoord.y;
+    if ((i32(x_154) < 60)) {
+      let x_161 : i32 = data[1];
+      grey = (0.5 + (f32(x_161) / 10.0));
+    } else {
+      let x_166 : f32 = gl_FragCoord.y;
+      if ((i32(x_166) < 90)) {
+        let x_173 : i32 = data[2];
+        grey = (0.5 + (f32(x_173) / 10.0));
+      } else {
+        let x_178 : f32 = gl_FragCoord.y;
+        if ((i32(x_178) < 120)) {
+          let x_185 : i32 = data[3];
+          grey = (0.5 + (f32(x_185) / 10.0));
+        } else {
+          let x_190 : f32 = gl_FragCoord.y;
+          if ((i32(x_190) < 150)) {
+            discard;
+          } else {
+            let x_197 : f32 = gl_FragCoord.y;
+            if ((i32(x_197) < 180)) {
+              let x_204 : i32 = data[5];
+              grey = (0.5 + (f32(x_204) / 10.0));
+            } else {
+              let x_209 : f32 = gl_FragCoord.y;
+              if ((i32(x_209) < 210)) {
+                let x_216 : i32 = data[6];
+                grey = (0.5 + (f32(x_216) / 10.0));
+              } else {
+                let x_221 : f32 = gl_FragCoord.y;
+                if ((i32(x_221) < 240)) {
+                  let x_228 : i32 = data[7];
+                  grey = (0.5 + (f32(x_228) / 10.0));
+                } else {
+                  let x_233 : f32 = gl_FragCoord.y;
+                  if ((i32(x_233) < 270)) {
+                    let x_240 : i32 = data[8];
+                    grey = (0.5 + (f32(x_240) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_244 : f32 = grey;
+  let x_245 : vec3<f32> = vec3<f32>(x_244, x_244, x_244);
+  x_GLF_color = vec4<f32>(x_245.x, x_245.y, x_245.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..6a30ba4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.hlsl
@@ -0,0 +1,268 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_251 = from;
+  k = x_251;
+  const int x_252 = from;
+  i = x_252;
+  const int x_253 = mid;
+  j = (x_253 + 1);
+  while (true) {
+    const int x_259 = i;
+    const int x_260 = mid;
+    const int x_262 = j;
+    const int x_263 = to;
+    bool tint_tmp = (x_259 <= x_260);
+    if (tint_tmp) {
+      tint_tmp = (x_262 <= x_263);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_269 = data[i];
+    const int x_272 = data[j];
+    if ((x_269 < x_272)) {
+      const int x_277 = k;
+      k = (x_277 + 1);
+      const int x_279 = i;
+      i = (x_279 + 1);
+      const int x_282 = data[x_279];
+      temp[x_277] = x_282;
+    } else {
+      const int x_284 = k;
+      k = (x_284 + 1);
+      const int x_286 = j;
+      j = (x_286 + 1);
+      const int x_289 = data[x_286];
+      temp[x_284] = x_289;
+    }
+  }
+  while (true) {
+    const int x_295 = i;
+    const int x_297 = i;
+    const int x_298 = mid;
+    bool tint_tmp_1 = (x_295 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_297 <= x_298);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_302 = k;
+    k = (x_302 + 1);
+    const int x_304 = i;
+    i = (x_304 + 1);
+    const int x_307 = data[x_304];
+    temp[x_302] = x_307;
+  }
+  const int x_309 = from;
+  i_1 = x_309;
+  while (true) {
+    const int x_314 = i_1;
+    const int x_315 = to;
+    if ((x_314 <= x_315)) {
+    } else {
+      break;
+    }
+    const int x_318 = i_1;
+    const int x_321 = temp[i_1];
+    data[x_318] = x_321;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_84 = asfloat(x_28[0].x);
+  i_3 = int(x_84);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_133 = j_1;
+      const int x_136 = data[j_1];
+      temp[x_133] = x_136;
+    }
+  }
+  mergeSort_();
+  const float x_142 = gl_FragCoord.y;
+  if ((int(x_142) < 30)) {
+    const int x_149 = data[0];
+    grey = (0.5f + (float(x_149) / 10.0f));
+  } else {
+    const float x_154 = gl_FragCoord.y;
+    if ((int(x_154) < 60)) {
+      const int x_161 = data[1];
+      grey = (0.5f + (float(x_161) / 10.0f));
+    } else {
+      const float x_166 = gl_FragCoord.y;
+      if ((int(x_166) < 90)) {
+        const int x_173 = data[2];
+        grey = (0.5f + (float(x_173) / 10.0f));
+      } else {
+        const float x_178 = gl_FragCoord.y;
+        if ((int(x_178) < 120)) {
+          const int x_185 = data[3];
+          grey = (0.5f + (float(x_185) / 10.0f));
+        } else {
+          const float x_190 = gl_FragCoord.y;
+          if ((int(x_190) < 150)) {
+            discard;
+          } else {
+            const float x_197 = gl_FragCoord.y;
+            if ((int(x_197) < 180)) {
+              const int x_204 = data[5];
+              grey = (0.5f + (float(x_204) / 10.0f));
+            } else {
+              const float x_209 = gl_FragCoord.y;
+              if ((int(x_209) < 210)) {
+                const int x_216 = data[6];
+                grey = (0.5f + (float(x_216) / 10.0f));
+              } else {
+                const float x_221 = gl_FragCoord.y;
+                if ((int(x_221) < 240)) {
+                  const int x_228 = data[7];
+                  grey = (0.5f + (float(x_228) / 10.0f));
+                } else {
+                  const float x_233 = gl_FragCoord.y;
+                  if ((int(x_233) < 270)) {
+                    const int x_240 = data[8];
+                    grey = (0.5f + (float(x_240) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_244 = grey;
+  const float3 x_245 = float3(x_244, x_244, x_244);
+  x_GLF_color = float4(x_245.x, x_245.y, x_245.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.msl
new file mode 100644
index 0000000..6340b47
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.msl
@@ -0,0 +1,314 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_251 = *(from);
+  k = x_251;
+  int const x_252 = *(from);
+  i = x_252;
+  int const x_253 = *(mid);
+  j = (x_253 + 1);
+  while (true) {
+    int const x_259 = i;
+    int const x_260 = *(mid);
+    int const x_262 = j;
+    int const x_263 = *(to);
+    if (((x_259 <= x_260) && (x_262 <= x_263))) {
+    } else {
+      break;
+    }
+    int const x_267 = i;
+    int const x_269 = (*(tint_symbol_5)).arr[x_267];
+    int const x_270 = j;
+    int const x_272 = (*(tint_symbol_5)).arr[x_270];
+    if ((x_269 < x_272)) {
+      int const x_277 = k;
+      k = (x_277 + 1);
+      int const x_279 = i;
+      i = (x_279 + 1);
+      int const x_282 = (*(tint_symbol_5)).arr[x_279];
+      (*(tint_symbol_6)).arr[x_277] = x_282;
+    } else {
+      int const x_284 = k;
+      k = (x_284 + 1);
+      int const x_286 = j;
+      j = (x_286 + 1);
+      int const x_289 = (*(tint_symbol_5)).arr[x_286];
+      (*(tint_symbol_6)).arr[x_284] = x_289;
+    }
+  }
+  while (true) {
+    int const x_295 = i;
+    int const x_297 = i;
+    int const x_298 = *(mid);
+    if (((x_295 < 10) && (x_297 <= x_298))) {
+    } else {
+      break;
+    }
+    int const x_302 = k;
+    k = (x_302 + 1);
+    int const x_304 = i;
+    i = (x_304 + 1);
+    int const x_307 = (*(tint_symbol_5)).arr[x_304];
+    (*(tint_symbol_6)).arr[x_302] = x_307;
+  }
+  int const x_309 = *(from);
+  i_1 = x_309;
+  while (true) {
+    int const x_314 = i_1;
+    int const x_315 = *(to);
+    if ((x_314 <= x_315)) {
+    } else {
+      break;
+    }
+    int const x_318 = i_1;
+    int const x_319 = i_1;
+    int const x_321 = (*(tint_symbol_6)).arr[x_319];
+    (*(tint_symbol_5)).arr[x_318] = x_321;
+    {
+      int const x_323 = i_1;
+      i_1 = (x_323 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_330 = m;
+    int const x_331 = high;
+    if ((x_330 <= x_331)) {
+    } else {
+      break;
+    }
+    int const x_334 = low;
+    i_2 = x_334;
+    while (true) {
+      int const x_339 = i_2;
+      int const x_340 = high;
+      if ((x_339 < x_340)) {
+      } else {
+        break;
+      }
+      int const x_343 = i_2;
+      from_1 = x_343;
+      int const x_344 = i_2;
+      int const x_345 = m;
+      mid_1 = ((x_344 + x_345) - 1);
+      int const x_348 = i_2;
+      int const x_349 = m;
+      int const x_353 = high;
+      to_1 = min(((x_348 + (2 * x_349)) - 1), x_353);
+      int const x_355 = from_1;
+      param = x_355;
+      int const x_356 = mid_1;
+      param_1 = x_356;
+      int const x_357 = to_1;
+      param_2 = x_357;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_359 = m;
+        int const x_361 = i_2;
+        i_2 = (x_361 + (2 * x_359));
+      }
+    }
+    {
+      int const x_363 = m;
+      m = (2 * x_363);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_84 = x_28.injectionSwitch.x;
+  i_3 = int(x_84);
+  while (true) {
+    int const x_90 = i_3;
+    switch(x_90) {
+      case 9: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -5;
+        break;
+      }
+      case 8: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -4;
+        break;
+      }
+      case 7: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -3;
+        break;
+      }
+      case 6: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = -2;
+        break;
+      }
+      case 5: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = -1;
+        break;
+      }
+      case 4: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 0;
+        break;
+      }
+      case 3: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 1;
+        break;
+      }
+      case 2: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 2;
+        break;
+      }
+      case 1: {
+        int const x_104 = i_3;
+        (*(tint_symbol_9)).arr[x_104] = 3;
+        break;
+      }
+      case 0: {
+        int const x_102 = i_3;
+        (*(tint_symbol_9)).arr[x_102] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_122 = i_3;
+    i_3 = (x_122 + 1);
+    {
+      int const x_124 = i_3;
+      if ((x_124 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_130 = j_1;
+    if ((x_130 < 10)) {
+    } else {
+      break;
+    }
+    int const x_133 = j_1;
+    int const x_134 = j_1;
+    int const x_136 = (*(tint_symbol_9)).arr[x_134];
+    (*(tint_symbol_10)).arr[x_133] = x_136;
+    {
+      int const x_138 = j_1;
+      j_1 = (x_138 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_142 = (*(tint_symbol_11)).y;
+  if ((int(x_142) < 30)) {
+    int const x_149 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_149) / 10.0f));
+  } else {
+    float const x_154 = (*(tint_symbol_11)).y;
+    if ((int(x_154) < 60)) {
+      int const x_161 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_161) / 10.0f));
+    } else {
+      float const x_166 = (*(tint_symbol_11)).y;
+      if ((int(x_166) < 90)) {
+        int const x_173 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_173) / 10.0f));
+      } else {
+        float const x_178 = (*(tint_symbol_11)).y;
+        if ((int(x_178) < 120)) {
+          int const x_185 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_185) / 10.0f));
+        } else {
+          float const x_190 = (*(tint_symbol_11)).y;
+          if ((int(x_190) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_197 = (*(tint_symbol_11)).y;
+            if ((int(x_197) < 180)) {
+              int const x_204 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_204) / 10.0f));
+            } else {
+              float const x_209 = (*(tint_symbol_11)).y;
+              if ((int(x_209) < 210)) {
+                int const x_216 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_216) / 10.0f));
+              } else {
+                float const x_221 = (*(tint_symbol_11)).y;
+                if ((int(x_221) < 240)) {
+                  int const x_228 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_228) / 10.0f));
+                } else {
+                  float const x_233 = (*(tint_symbol_11)).y;
+                  if ((int(x_233) < 270)) {
+                    int const x_240 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_240) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_244 = grey;
+  float3 const x_245 = float3(x_244, x_244, x_244);
+  *(tint_symbol_12) = float4(x_245.x, x_245.y, x_245.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..4df39a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.spvasm
@@ -0,0 +1,649 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 416
+; Schema: 0
+               OpCapability Shader
+        %177 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %201 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %403 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %134 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %m
+        %152 = OpLoad %int %high
+        %153 = OpSLessThanEqual %bool %151 %152
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %148
+        %154 = OpLabel
+        %157 = OpLoad %int %low
+               OpStore %i_2 %157
+               OpBranch %158
+        %158 = OpLabel
+               OpLoopMerge %159 %160 None
+               OpBranch %161
+        %161 = OpLabel
+        %162 = OpLoad %int %i_2
+        %163 = OpLoad %int %high
+        %164 = OpSLessThan %bool %162 %163
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %167
+        %166 = OpLabel
+               OpBranch %165
+        %167 = OpLabel
+               OpBranch %159
+        %165 = OpLabel
+        %168 = OpLoad %int %i_2
+               OpStore %from_1 %168
+        %169 = OpLoad %int %i_2
+        %170 = OpLoad %int %m
+        %171 = OpIAdd %int %169 %170
+        %172 = OpISub %int %171 %int_1
+               OpStore %mid_1 %172
+        %173 = OpLoad %int %i_2
+        %174 = OpLoad %int %m
+        %175 = OpLoad %int %high
+        %179 = OpIMul %int %int_2 %174
+        %180 = OpIAdd %int %173 %179
+        %181 = OpISub %int %180 %int_1
+        %176 = OpExtInst %int %177 SMin %181 %175
+               OpStore %to_1 %176
+        %182 = OpLoad %int %from_1
+               OpStore %param %182
+        %183 = OpLoad %int %mid_1
+               OpStore %param_1 %183
+        %184 = OpLoad %int %to_1
+               OpStore %param_2 %184
+        %185 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %160
+        %160 = OpLabel
+        %189 = OpLoad %int %m
+        %190 = OpLoad %int %i_2
+        %191 = OpIMul %int %int_2 %189
+        %192 = OpIAdd %int %190 %191
+               OpStore %i_2 %192
+               OpBranch %158
+        %159 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %193 = OpLoad %int %m
+        %194 = OpIMul %int %int_2 %193
+               OpStore %m %194
+               OpBranch %147
+        %148 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %196 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %201
+        %204 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %205 = OpLoad %float %204
+        %206 = OpConvertFToS %int %205
+               OpStore %i_3 %206
+               OpBranch %207
+        %207 = OpLabel
+               OpLoopMerge %208 %209 None
+               OpBranch %210
+        %210 = OpLabel
+        %211 = OpLoad %int %i_3
+               OpSelectionMerge %212 None
+               OpSwitch %211 %213 9 %214 8 %215 7 %216 6 %217 5 %218 4 %219 3 %220 2 %221 1 %222 0 %223
+        %214 = OpLabel
+        %224 = OpLoad %int %i_3
+        %225 = OpAccessChain %_ptr_Private_int %data %224
+               OpStore %225 %int_n5
+               OpBranch %212
+        %215 = OpLabel
+        %227 = OpLoad %int %i_3
+        %228 = OpAccessChain %_ptr_Private_int %data %227
+               OpStore %228 %int_n4
+               OpBranch %212
+        %216 = OpLabel
+        %230 = OpLoad %int %i_3
+        %231 = OpAccessChain %_ptr_Private_int %data %230
+               OpStore %231 %int_n3
+               OpBranch %212
+        %217 = OpLabel
+        %233 = OpLoad %int %i_3
+        %234 = OpAccessChain %_ptr_Private_int %data %233
+               OpStore %234 %int_n2
+               OpBranch %212
+        %218 = OpLabel
+        %236 = OpLoad %int %i_3
+        %237 = OpAccessChain %_ptr_Private_int %data %236
+               OpStore %237 %int_n1
+               OpBranch %212
+        %219 = OpLabel
+        %239 = OpLoad %int %i_3
+        %240 = OpAccessChain %_ptr_Private_int %data %239
+               OpStore %240 %int_0
+               OpBranch %212
+        %220 = OpLabel
+        %241 = OpLoad %int %i_3
+        %242 = OpAccessChain %_ptr_Private_int %data %241
+               OpStore %242 %int_1
+               OpBranch %212
+        %221 = OpLabel
+        %243 = OpLoad %int %i_3
+        %244 = OpAccessChain %_ptr_Private_int %data %243
+               OpStore %244 %int_2
+               OpBranch %212
+        %222 = OpLabel
+        %245 = OpLoad %int %i_3
+        %246 = OpAccessChain %_ptr_Private_int %data %245
+               OpStore %246 %int_3
+               OpBranch %212
+        %223 = OpLabel
+        %248 = OpLoad %int %i_3
+        %249 = OpAccessChain %_ptr_Private_int %data %248
+               OpStore %249 %int_4
+               OpBranch %212
+        %213 = OpLabel
+               OpBranch %212
+        %212 = OpLabel
+        %251 = OpLoad %int %i_3
+        %252 = OpIAdd %int %251 %int_1
+               OpStore %i_3 %252
+               OpBranch %209
+        %209 = OpLabel
+        %253 = OpLoad %int %i_3
+        %254 = OpSLessThan %bool %253 %int_10
+               OpSelectionMerge %255 None
+               OpBranchConditional %254 %256 %257
+        %256 = OpLabel
+               OpBranch %255
+        %257 = OpLabel
+               OpBranch %208
+        %255 = OpLabel
+               OpBranch %207
+        %208 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %258
+        %258 = OpLabel
+               OpLoopMerge %259 %260 None
+               OpBranch %261
+        %261 = OpLabel
+        %262 = OpLoad %int %j_1
+        %263 = OpSLessThan %bool %262 %int_10
+               OpSelectionMerge %264 None
+               OpBranchConditional %263 %265 %266
+        %265 = OpLabel
+               OpBranch %264
+        %266 = OpLabel
+               OpBranch %259
+        %264 = OpLabel
+        %267 = OpLoad %int %j_1
+        %268 = OpLoad %int %j_1
+        %269 = OpAccessChain %_ptr_Private_int %data %268
+        %270 = OpLoad %int %269
+        %271 = OpAccessChain %_ptr_Private_int %temp %267
+               OpStore %271 %270
+               OpBranch %260
+        %260 = OpLabel
+        %272 = OpLoad %int %j_1
+        %273 = OpIAdd %int %272 %int_1
+               OpStore %j_1 %273
+               OpBranch %258
+        %259 = OpLabel
+        %274 = OpFunctionCall %void %mergeSort_
+        %277 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %278 = OpLoad %float %277
+        %279 = OpConvertFToS %int %278
+        %281 = OpSLessThan %bool %279 %int_30
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %284
+        %283 = OpLabel
+        %285 = OpAccessChain %_ptr_Private_int %data %int_0
+        %286 = OpLoad %int %285
+        %288 = OpConvertSToF %float %286
+        %290 = OpFDiv %float %288 %float_10
+        %291 = OpFAdd %float %float_0_5 %290
+               OpStore %grey %291
+               OpBranch %282
+        %284 = OpLabel
+        %292 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %293 = OpLoad %float %292
+        %294 = OpConvertFToS %int %293
+        %296 = OpSLessThan %bool %294 %int_60
+               OpSelectionMerge %297 None
+               OpBranchConditional %296 %298 %299
+        %298 = OpLabel
+        %300 = OpAccessChain %_ptr_Private_int %data %int_1
+        %301 = OpLoad %int %300
+        %302 = OpConvertSToF %float %301
+        %303 = OpFDiv %float %302 %float_10
+        %304 = OpFAdd %float %float_0_5 %303
+               OpStore %grey %304
+               OpBranch %297
+        %299 = OpLabel
+        %305 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %306 = OpLoad %float %305
+        %307 = OpConvertFToS %int %306
+        %309 = OpSLessThan %bool %307 %int_90
+               OpSelectionMerge %310 None
+               OpBranchConditional %309 %311 %312
+        %311 = OpLabel
+        %313 = OpAccessChain %_ptr_Private_int %data %int_2
+        %314 = OpLoad %int %313
+        %315 = OpConvertSToF %float %314
+        %316 = OpFDiv %float %315 %float_10
+        %317 = OpFAdd %float %float_0_5 %316
+               OpStore %grey %317
+               OpBranch %310
+        %312 = OpLabel
+        %318 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %319 = OpLoad %float %318
+        %320 = OpConvertFToS %int %319
+        %322 = OpSLessThan %bool %320 %int_120
+               OpSelectionMerge %323 None
+               OpBranchConditional %322 %324 %325
+        %324 = OpLabel
+        %326 = OpAccessChain %_ptr_Private_int %data %int_3
+        %327 = OpLoad %int %326
+        %328 = OpConvertSToF %float %327
+        %329 = OpFDiv %float %328 %float_10
+        %330 = OpFAdd %float %float_0_5 %329
+               OpStore %grey %330
+               OpBranch %323
+        %325 = OpLabel
+        %331 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %332 = OpLoad %float %331
+        %333 = OpConvertFToS %int %332
+        %335 = OpSLessThan %bool %333 %int_150
+               OpSelectionMerge %336 None
+               OpBranchConditional %335 %337 %338
+        %337 = OpLabel
+               OpKill
+        %338 = OpLabel
+        %339 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %340 = OpLoad %float %339
+        %341 = OpConvertFToS %int %340
+        %343 = OpSLessThan %bool %341 %int_180
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %346
+        %345 = OpLabel
+        %348 = OpAccessChain %_ptr_Private_int %data %int_5
+        %349 = OpLoad %int %348
+        %350 = OpConvertSToF %float %349
+        %351 = OpFDiv %float %350 %float_10
+        %352 = OpFAdd %float %float_0_5 %351
+               OpStore %grey %352
+               OpBranch %344
+        %346 = OpLabel
+        %353 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %354 = OpLoad %float %353
+        %355 = OpConvertFToS %int %354
+        %357 = OpSLessThan %bool %355 %int_210
+               OpSelectionMerge %358 None
+               OpBranchConditional %357 %359 %360
+        %359 = OpLabel
+        %362 = OpAccessChain %_ptr_Private_int %data %int_6
+        %363 = OpLoad %int %362
+        %364 = OpConvertSToF %float %363
+        %365 = OpFDiv %float %364 %float_10
+        %366 = OpFAdd %float %float_0_5 %365
+               OpStore %grey %366
+               OpBranch %358
+        %360 = OpLabel
+        %367 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %368 = OpLoad %float %367
+        %369 = OpConvertFToS %int %368
+        %371 = OpSLessThan %bool %369 %int_240
+               OpSelectionMerge %372 None
+               OpBranchConditional %371 %373 %374
+        %373 = OpLabel
+        %376 = OpAccessChain %_ptr_Private_int %data %int_7
+        %377 = OpLoad %int %376
+        %378 = OpConvertSToF %float %377
+        %379 = OpFDiv %float %378 %float_10
+        %380 = OpFAdd %float %float_0_5 %379
+               OpStore %grey %380
+               OpBranch %372
+        %374 = OpLabel
+        %381 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %382 = OpLoad %float %381
+        %383 = OpConvertFToS %int %382
+        %385 = OpSLessThan %bool %383 %int_270
+               OpSelectionMerge %386 None
+               OpBranchConditional %385 %387 %388
+        %387 = OpLabel
+        %390 = OpAccessChain %_ptr_Private_int %data %int_8
+        %391 = OpLoad %int %390
+        %392 = OpConvertSToF %float %391
+        %393 = OpFDiv %float %392 %float_10
+        %394 = OpFAdd %float %float_0_5 %393
+               OpStore %grey %394
+               OpBranch %386
+        %388 = OpLabel
+               OpKill
+        %386 = OpLabel
+               OpBranch %372
+        %372 = OpLabel
+               OpBranch %358
+        %358 = OpLabel
+               OpBranch %344
+        %344 = OpLabel
+               OpBranch %336
+        %336 = OpLabel
+               OpBranch %323
+        %323 = OpLabel
+               OpBranch %310
+        %310 = OpLabel
+               OpBranch %297
+        %297 = OpLabel
+               OpBranch %282
+        %282 = OpLabel
+        %395 = OpLoad %float %grey
+        %397 = OpCompositeConstruct %v3float %395 %395 %395
+        %398 = OpCompositeExtract %float %397 0
+        %399 = OpCompositeExtract %float %397 1
+        %400 = OpCompositeExtract %float %397 2
+        %402 = OpCompositeConstruct %v4float %398 %399 %400 %float_1
+               OpStore %x_GLF_color %402
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %403
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %407 = OpLabel
+        %408 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %408
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %410 = OpLabel
+        %411 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %411
+        %412 = OpFunctionCall %void %main_1
+        %414 = OpLoad %v4float %x_GLF_color
+        %415 = OpCompositeConstruct %main_out %414
+        %413 = OpFunctionCall %void %tint_symbol_3 %415
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 209[%209] is not post dominated by the back-edge block 255[%255]
+  %255 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..c8f464e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl.expected.wgsl
@@ -0,0 +1,306 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_251 : i32 = *(from);
+  k = x_251;
+  let x_252 : i32 = *(from);
+  i = x_252;
+  let x_253 : i32 = *(mid);
+  j = (x_253 + 1);
+  loop {
+    let x_259 : i32 = i;
+    let x_260 : i32 = *(mid);
+    let x_262 : i32 = j;
+    let x_263 : i32 = *(to);
+    if (((x_259 <= x_260) && (x_262 <= x_263))) {
+    } else {
+      break;
+    }
+    let x_267 : i32 = i;
+    let x_269 : i32 = data[x_267];
+    let x_270 : i32 = j;
+    let x_272 : i32 = data[x_270];
+    if ((x_269 < x_272)) {
+      let x_277 : i32 = k;
+      k = (x_277 + 1);
+      let x_279 : i32 = i;
+      i = (x_279 + 1);
+      let x_282 : i32 = data[x_279];
+      temp[x_277] = x_282;
+    } else {
+      let x_284 : i32 = k;
+      k = (x_284 + 1);
+      let x_286 : i32 = j;
+      j = (x_286 + 1);
+      let x_289 : i32 = data[x_286];
+      temp[x_284] = x_289;
+    }
+  }
+  loop {
+    let x_295 : i32 = i;
+    let x_297 : i32 = i;
+    let x_298 : i32 = *(mid);
+    if (((x_295 < 10) && (x_297 <= x_298))) {
+    } else {
+      break;
+    }
+    let x_302 : i32 = k;
+    k = (x_302 + 1);
+    let x_304 : i32 = i;
+    i = (x_304 + 1);
+    let x_307 : i32 = data[x_304];
+    temp[x_302] = x_307;
+  }
+  let x_309 : i32 = *(from);
+  i_1 = x_309;
+  loop {
+    let x_314 : i32 = i_1;
+    let x_315 : i32 = *(to);
+    if ((x_314 <= x_315)) {
+    } else {
+      break;
+    }
+    let x_318 : i32 = i_1;
+    let x_319 : i32 = i_1;
+    let x_321 : i32 = temp[x_319];
+    data[x_318] = x_321;
+
+    continuing {
+      let x_323 : i32 = i_1;
+      i_1 = (x_323 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_330 : i32 = m;
+    let x_331 : i32 = high;
+    if ((x_330 <= x_331)) {
+    } else {
+      break;
+    }
+    let x_334 : i32 = low;
+    i_2 = x_334;
+    loop {
+      let x_339 : i32 = i_2;
+      let x_340 : i32 = high;
+      if ((x_339 < x_340)) {
+      } else {
+        break;
+      }
+      let x_343 : i32 = i_2;
+      from_1 = x_343;
+      let x_344 : i32 = i_2;
+      let x_345 : i32 = m;
+      mid_1 = ((x_344 + x_345) - 1);
+      let x_348 : i32 = i_2;
+      let x_349 : i32 = m;
+      let x_353 : i32 = high;
+      to_1 = min(((x_348 + (2 * x_349)) - 1), x_353);
+      let x_355 : i32 = from_1;
+      param = x_355;
+      let x_356 : i32 = mid_1;
+      param_1 = x_356;
+      let x_357 : i32 = to_1;
+      param_2 = x_357;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_359 : i32 = m;
+        let x_361 : i32 = i_2;
+        i_2 = (x_361 + (2 * x_359));
+      }
+    }
+
+    continuing {
+      let x_363 : i32 = m;
+      m = (2 * x_363);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_84 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_84);
+  loop {
+    let x_90 : i32 = i_3;
+    switch(x_90) {
+      case 9: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -5;
+      }
+      case 8: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -4;
+      }
+      case 7: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -3;
+      }
+      case 6: {
+        let x_114 : i32 = i_3;
+        data[x_114] = -2;
+      }
+      case 5: {
+        let x_112 : i32 = i_3;
+        data[x_112] = -1;
+      }
+      case 4: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 0;
+      }
+      case 3: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 1;
+      }
+      case 2: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 2;
+      }
+      case 1: {
+        let x_104 : i32 = i_3;
+        data[x_104] = 3;
+      }
+      case 0: {
+        let x_102 : i32 = i_3;
+        data[x_102] = 4;
+      }
+      default: {
+      }
+    }
+    let x_122 : i32 = i_3;
+    i_3 = (x_122 + 1);
+
+    continuing {
+      let x_124 : i32 = i_3;
+      if ((x_124 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_130 : i32 = j_1;
+    if ((x_130 < 10)) {
+    } else {
+      break;
+    }
+    let x_133 : i32 = j_1;
+    let x_134 : i32 = j_1;
+    let x_136 : i32 = data[x_134];
+    temp[x_133] = x_136;
+
+    continuing {
+      let x_138 : i32 = j_1;
+      j_1 = (x_138 + 1);
+    }
+  }
+  mergeSort_();
+  let x_142 : f32 = gl_FragCoord.y;
+  if ((i32(x_142) < 30)) {
+    let x_149 : i32 = data[0];
+    grey = (0.5 + (f32(x_149) / 10.0));
+  } else {
+    let x_154 : f32 = gl_FragCoord.y;
+    if ((i32(x_154) < 60)) {
+      let x_161 : i32 = data[1];
+      grey = (0.5 + (f32(x_161) / 10.0));
+    } else {
+      let x_166 : f32 = gl_FragCoord.y;
+      if ((i32(x_166) < 90)) {
+        let x_173 : i32 = data[2];
+        grey = (0.5 + (f32(x_173) / 10.0));
+      } else {
+        let x_178 : f32 = gl_FragCoord.y;
+        if ((i32(x_178) < 120)) {
+          let x_185 : i32 = data[3];
+          grey = (0.5 + (f32(x_185) / 10.0));
+        } else {
+          let x_190 : f32 = gl_FragCoord.y;
+          if ((i32(x_190) < 150)) {
+            discard;
+          } else {
+            let x_197 : f32 = gl_FragCoord.y;
+            if ((i32(x_197) < 180)) {
+              let x_204 : i32 = data[5];
+              grey = (0.5 + (f32(x_204) / 10.0));
+            } else {
+              let x_209 : f32 = gl_FragCoord.y;
+              if ((i32(x_209) < 210)) {
+                let x_216 : i32 = data[6];
+                grey = (0.5 + (f32(x_216) / 10.0));
+              } else {
+                let x_221 : f32 = gl_FragCoord.y;
+                if ((i32(x_221) < 240)) {
+                  let x_228 : i32 = data[7];
+                  grey = (0.5 + (f32(x_228) / 10.0));
+                } else {
+                  let x_233 : f32 = gl_FragCoord.y;
+                  if ((i32(x_233) < 270)) {
+                    let x_240 : i32 = data[8];
+                    grey = (0.5 + (f32(x_240) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_244 : f32 = grey;
+  let x_245 : vec3<f32> = vec3<f32>(x_244, x_244, x_244);
+  x_GLF_color = vec4<f32>(x_245.x, x_245.y, x_245.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm
new file mode 100644
index 0000000..bfbb984
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm
@@ -0,0 +1,571 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+       %main = OpFunction %void None %32
+         %84 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %85 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %86 = OpLoad %float %85
+         %87 = OpConvertFToS %int %86
+               OpStore %i_2 %87
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i_2
+               OpSelectionMerge %93 None
+               OpSwitch %92 %93 0 %94 1 %95 2 %96 3 %97 4 %98 5 %99 6 %100 7 %101 8 %102 9 %103
+         %94 = OpLabel
+        %104 = OpLoad %int %i_2
+        %105 = OpAccessChain %_ptr_Private_int %data %104
+               OpStore %105 %int_4
+               OpBranch %93
+         %95 = OpLabel
+        %106 = OpLoad %int %i_2
+        %107 = OpAccessChain %_ptr_Private_int %data %106
+               OpStore %107 %int_3
+               OpBranch %93
+         %96 = OpLabel
+        %108 = OpLoad %int %i_2
+        %109 = OpAccessChain %_ptr_Private_int %data %108
+               OpStore %109 %int_2
+               OpBranch %93
+         %97 = OpLabel
+        %110 = OpLoad %int %i_2
+        %111 = OpAccessChain %_ptr_Private_int %data %110
+               OpStore %111 %int_1
+               OpBranch %93
+         %98 = OpLabel
+        %112 = OpLoad %int %i_2
+        %113 = OpAccessChain %_ptr_Private_int %data %112
+               OpStore %113 %int_0
+               OpBranch %93
+         %99 = OpLabel
+        %114 = OpLoad %int %i_2
+        %115 = OpAccessChain %_ptr_Private_int %data %114
+               OpStore %115 %int_n1
+               OpBranch %93
+        %100 = OpLabel
+        %116 = OpLoad %int %i_2
+        %117 = OpAccessChain %_ptr_Private_int %data %116
+               OpStore %117 %int_n2
+               OpBranch %93
+        %101 = OpLabel
+        %118 = OpLoad %int %i_2
+        %119 = OpAccessChain %_ptr_Private_int %data %118
+               OpStore %119 %int_n3
+               OpBranch %93
+        %102 = OpLabel
+        %120 = OpLoad %int %i_2
+        %121 = OpAccessChain %_ptr_Private_int %data %120
+               OpStore %121 %int_n4
+               OpBranch %93
+        %103 = OpLabel
+        %122 = OpLoad %int %i_2
+        %123 = OpAccessChain %_ptr_Private_int %data %122
+               OpStore %123 %int_n5
+               OpBranch %93
+         %93 = OpLabel
+        %124 = OpLoad %int %i_2
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %i_2 %125
+               OpBranch %90
+         %90 = OpLabel
+        %126 = OpLoad %int %i_2
+        %127 = OpSLessThan %bool %126 %int_10
+               OpBranchConditional %127 %88 %89
+         %89 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %132 = OpLoad %int %j_0
+        %133 = OpSLessThan %bool %132 %int_10
+        %134 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %135 = OpLoad %float %134
+        %136 = OpFUnordGreaterThan %bool %135 %float_1
+               OpSelectionMerge %137 None
+               OpBranchConditional %136 %138 %137
+        %138 = OpLabel
+               OpStore %grey %float_1
+               OpBranchConditional %false %137 %137
+        %137 = OpLabel
+               OpBranchConditional %133 %139 %129
+        %139 = OpLabel
+        %140 = OpLoad %int %j_0
+        %141 = OpLoad %int %j_0
+        %142 = OpAccessChain %_ptr_Private_int %data %141
+        %143 = OpLoad %int %142
+        %144 = OpAccessChain %_ptr_Private_int %temp %140
+               OpStore %144 %143
+               OpBranch %130
+        %130 = OpLabel
+        %145 = OpLoad %int %j_0
+        %146 = OpIAdd %int %145 %int_1
+               OpStore %j_0 %146
+               OpBranch %128
+        %129 = OpLabel
+        %147 = OpFunctionCall %void %mergeSort_
+        %148 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %149 = OpLoad %float %148
+        %150 = OpConvertFToS %int %149
+        %151 = OpSLessThan %bool %150 %int_30
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %154
+        %153 = OpLabel
+        %155 = OpAccessChain %_ptr_Private_int %data %int_0
+        %156 = OpLoad %int %155
+        %157 = OpConvertSToF %float %156
+        %158 = OpFDiv %float %157 %float_10
+        %159 = OpFAdd %float %float_0_5 %158
+               OpStore %grey %159
+               OpBranch %152
+        %154 = OpLabel
+        %160 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %161 = OpLoad %float %160
+        %162 = OpConvertFToS %int %161
+        %163 = OpSLessThan %bool %162 %int_60
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %166
+        %165 = OpLabel
+        %167 = OpAccessChain %_ptr_Private_int %data %int_1
+        %168 = OpLoad %int %167
+        %169 = OpConvertSToF %float %168
+        %170 = OpFDiv %float %169 %float_10
+        %171 = OpFAdd %float %float_0_5 %170
+               OpStore %grey %171
+               OpBranch %164
+        %166 = OpLabel
+        %172 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %173 = OpLoad %float %172
+        %174 = OpConvertFToS %int %173
+        %175 = OpSLessThan %bool %174 %int_90
+               OpSelectionMerge %176 None
+               OpBranchConditional %175 %177 %178
+        %177 = OpLabel
+        %179 = OpAccessChain %_ptr_Private_int %data %int_2
+        %180 = OpLoad %int %179
+        %181 = OpConvertSToF %float %180
+        %182 = OpFDiv %float %181 %float_10
+        %183 = OpFAdd %float %float_0_5 %182
+               OpStore %grey %183
+               OpBranch %176
+        %178 = OpLabel
+        %184 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %185 = OpLoad %float %184
+        %186 = OpConvertFToS %int %185
+        %187 = OpSLessThan %bool %186 %int_120
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %190
+        %189 = OpLabel
+        %191 = OpAccessChain %_ptr_Private_int %data %int_3
+        %192 = OpLoad %int %191
+        %193 = OpConvertSToF %float %192
+        %194 = OpFDiv %float %193 %float_10
+        %195 = OpFAdd %float %float_0_5 %194
+               OpStore %grey %195
+               OpBranch %188
+        %190 = OpLabel
+        %196 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %197 = OpLoad %float %196
+        %198 = OpConvertFToS %int %197
+        %199 = OpSLessThan %bool %198 %int_150
+               OpSelectionMerge %200 None
+               OpBranchConditional %199 %201 %202
+        %201 = OpLabel
+               OpKill
+        %202 = OpLabel
+        %203 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %204 = OpLoad %float %203
+        %205 = OpConvertFToS %int %204
+        %206 = OpSLessThan %bool %205 %int_180
+               OpSelectionMerge %207 None
+               OpBranchConditional %206 %208 %209
+        %208 = OpLabel
+        %210 = OpAccessChain %_ptr_Private_int %data %int_5
+        %211 = OpLoad %int %210
+        %212 = OpConvertSToF %float %211
+        %213 = OpFDiv %float %212 %float_10
+        %214 = OpFAdd %float %float_0_5 %213
+               OpStore %grey %214
+               OpBranch %207
+        %209 = OpLabel
+        %215 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %216 = OpLoad %float %215
+        %217 = OpConvertFToS %int %216
+        %218 = OpSLessThan %bool %217 %int_210
+               OpSelectionMerge %219 None
+               OpBranchConditional %218 %220 %221
+        %220 = OpLabel
+        %222 = OpAccessChain %_ptr_Private_int %data %int_6
+        %223 = OpLoad %int %222
+        %224 = OpConvertSToF %float %223
+        %225 = OpFDiv %float %224 %float_10
+        %226 = OpFAdd %float %float_0_5 %225
+               OpStore %grey %226
+               OpBranch %219
+        %221 = OpLabel
+        %227 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %228 = OpLoad %float %227
+        %229 = OpConvertFToS %int %228
+        %230 = OpSLessThan %bool %229 %int_240
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %233
+        %232 = OpLabel
+        %234 = OpAccessChain %_ptr_Private_int %data %int_7
+        %235 = OpLoad %int %234
+        %236 = OpConvertSToF %float %235
+        %237 = OpFDiv %float %236 %float_10
+        %238 = OpFAdd %float %float_0_5 %237
+               OpStore %grey %238
+               OpBranch %231
+        %233 = OpLabel
+        %239 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %240 = OpLoad %float %239
+        %241 = OpConvertFToS %int %240
+        %242 = OpSLessThan %bool %241 %int_270
+               OpSelectionMerge %243 None
+               OpBranchConditional %242 %244 %245
+        %244 = OpLabel
+        %246 = OpAccessChain %_ptr_Private_int %data %int_8
+        %247 = OpLoad %int %246
+        %248 = OpConvertSToF %float %247
+        %249 = OpFDiv %float %248 %float_10
+        %250 = OpFAdd %float %float_0_5 %249
+               OpStore %grey %250
+               OpBranch %243
+        %245 = OpLabel
+        %251 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %252 = OpLoad %float %251
+        %253 = OpFUnordGreaterThanEqual %bool %float_0 %252
+               OpBranchConditional %253 %243 %254
+        %254 = OpLabel
+               OpKill
+        %243 = OpLabel
+               OpBranch %231
+        %231 = OpLabel
+               OpBranch %219
+        %219 = OpLabel
+               OpBranch %207
+        %207 = OpLabel
+               OpBranch %200
+        %200 = OpLabel
+               OpBranch %188
+        %188 = OpLabel
+               OpBranch %176
+        %176 = OpLabel
+               OpBranch %164
+        %164 = OpLabel
+               OpBranch %152
+        %152 = OpLabel
+        %255 = OpLoad %float %grey
+        %256 = OpCompositeConstruct %v3float %255 %255 %255
+        %257 = OpCompositeExtract %float %256 0
+        %258 = OpCompositeExtract %float %256 1
+        %259 = OpCompositeExtract %float %256 2
+        %260 = OpCompositeConstruct %v4float %257 %258 %259 %float_1
+               OpStore %_GLF_color %260
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %35
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %261 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %262 = OpLoad %int %from
+               OpStore %k %262
+        %263 = OpLoad %int %from
+               OpStore %i %263
+        %264 = OpLoad %int %mid
+        %265 = OpIAdd %int %264 %int_1
+               OpStore %j %265
+               OpBranch %266
+        %266 = OpLabel
+               OpLoopMerge %267 %268 None
+               OpBranch %269
+        %269 = OpLabel
+        %270 = OpLoad %int %i
+        %271 = OpLoad %int %mid
+        %272 = OpSLessThanEqual %bool %270 %271
+        %273 = OpLoad %int %j
+        %274 = OpLoad %int %to
+        %275 = OpSLessThanEqual %bool %273 %274
+        %276 = OpLogicalAnd %bool %272 %275
+               OpBranchConditional %276 %277 %267
+        %277 = OpLabel
+        %278 = OpLoad %int %i
+        %279 = OpAccessChain %_ptr_Private_int %data %278
+        %280 = OpLoad %int %279
+        %281 = OpLoad %int %j
+        %282 = OpAccessChain %_ptr_Private_int %data %281
+        %283 = OpLoad %int %282
+        %284 = OpSLessThan %bool %280 %283
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %287
+        %286 = OpLabel
+        %288 = OpLoad %int %k
+        %289 = OpIAdd %int %288 %int_1
+               OpStore %k %289
+        %290 = OpLoad %int %i
+        %291 = OpIAdd %int %290 %int_1
+               OpStore %i %291
+        %292 = OpAccessChain %_ptr_Private_int %data %290
+        %293 = OpLoad %int %292
+        %294 = OpAccessChain %_ptr_Private_int %temp %288
+               OpStore %294 %293
+               OpBranch %285
+        %287 = OpLabel
+        %295 = OpLoad %int %k
+        %296 = OpIAdd %int %295 %int_1
+               OpStore %k %296
+        %297 = OpLoad %int %j
+        %298 = OpIAdd %int %297 %int_1
+               OpStore %j %298
+        %299 = OpAccessChain %_ptr_Private_int %data %297
+        %300 = OpLoad %int %299
+        %301 = OpAccessChain %_ptr_Private_int %temp %295
+               OpStore %301 %300
+               OpBranch %285
+        %285 = OpLabel
+               OpBranch %268
+        %268 = OpLabel
+               OpBranch %266
+        %267 = OpLabel
+               OpBranch %302
+        %302 = OpLabel
+               OpLoopMerge %303 %304 None
+               OpBranch %305
+        %305 = OpLabel
+        %306 = OpLoad %int %i
+        %307 = OpSLessThan %bool %306 %int_10
+        %308 = OpLoad %int %i
+        %309 = OpLoad %int %mid
+        %310 = OpSLessThanEqual %bool %308 %309
+        %311 = OpLogicalAnd %bool %307 %310
+               OpBranchConditional %311 %312 %303
+        %312 = OpLabel
+        %313 = OpLoad %int %k
+        %314 = OpIAdd %int %313 %int_1
+               OpStore %k %314
+        %315 = OpLoad %int %i
+        %316 = OpIAdd %int %315 %int_1
+               OpStore %i %316
+        %317 = OpAccessChain %_ptr_Private_int %data %315
+        %318 = OpLoad %int %317
+        %319 = OpAccessChain %_ptr_Private_int %temp %313
+               OpStore %319 %318
+               OpBranch %304
+        %304 = OpLabel
+               OpBranch %302
+        %303 = OpLabel
+        %320 = OpLoad %int %from
+               OpStore %i_0 %320
+               OpBranch %321
+        %321 = OpLabel
+               OpLoopMerge %322 %323 None
+               OpBranch %324
+        %324 = OpLabel
+        %325 = OpLoad %int %i_0
+        %326 = OpLoad %int %to
+        %327 = OpSLessThanEqual %bool %325 %326
+               OpBranchConditional %327 %328 %322
+        %328 = OpLabel
+        %329 = OpLoad %int %i_0
+        %330 = OpLoad %int %i_0
+        %331 = OpAccessChain %_ptr_Private_int %temp %330
+        %332 = OpLoad %int %331
+        %333 = OpAccessChain %_ptr_Private_int %data %329
+               OpStore %333 %332
+               OpBranch %323
+        %323 = OpLabel
+        %334 = OpLoad %int %i_0
+        %335 = OpIAdd %int %334 %int_1
+               OpStore %i_0 %335
+               OpBranch %321
+        %322 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %32
+        %336 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %337
+        %337 = OpLabel
+               OpLoopMerge %338 %339 None
+               OpBranch %340
+        %340 = OpLabel
+        %341 = OpLoad %int %m
+        %342 = OpLoad %int %high
+        %343 = OpSLessThanEqual %bool %341 %342
+               OpBranchConditional %343 %344 %338
+        %344 = OpLabel
+        %345 = OpLoad %int %low
+               OpStore %i_1 %345
+               OpBranch %346
+        %346 = OpLabel
+               OpLoopMerge %347 %348 None
+               OpBranch %349
+        %349 = OpLabel
+        %350 = OpLoad %int %i_1
+        %351 = OpLoad %int %high
+        %352 = OpSLessThan %bool %350 %351
+               OpBranchConditional %352 %353 %347
+        %353 = OpLabel
+        %354 = OpLoad %int %i_1
+               OpStore %from_0 %354
+        %355 = OpLoad %int %i_1
+        %356 = OpLoad %int %m
+        %357 = OpIAdd %int %355 %356
+        %358 = OpISub %int %357 %int_1
+               OpStore %mid_0 %358
+        %359 = OpLoad %int %i_1
+        %360 = OpLoad %int %m
+        %361 = OpIMul %int %int_2 %360
+        %362 = OpIAdd %int %359 %361
+        %363 = OpISub %int %362 %int_1
+        %364 = OpLoad %int %high
+        %365 = OpExtInst %int %1 SMin %363 %364
+               OpStore %to_0 %365
+        %366 = OpLoad %int %from_0
+               OpStore %param %366
+        %367 = OpLoad %int %mid_0
+               OpStore %param_0 %367
+        %368 = OpLoad %int %to_0
+               OpStore %param_1 %368
+        %369 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %348
+        %348 = OpLabel
+        %370 = OpLoad %int %m
+        %371 = OpIMul %int %int_2 %370
+        %372 = OpLoad %int %i_1
+        %373 = OpIAdd %int %372 %371
+               OpStore %i_1 %373
+               OpBranch %346
+        %347 = OpLabel
+               OpBranch %339
+        %339 = OpLabel
+        %374 = OpLoad %int %m
+        %375 = OpIMul %int %int_2 %374
+               OpStore %m %375
+               OpBranch %337
+        %338 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..b21b248
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.hlsl
@@ -0,0 +1,288 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_262 = from;
+  k = x_262;
+  const int x_263 = from;
+  i = x_263;
+  const int x_264 = mid;
+  j = (x_264 + 1);
+  while (true) {
+    const int x_270 = i;
+    const int x_271 = mid;
+    const int x_273 = j;
+    const int x_274 = to;
+    bool tint_tmp = (x_270 <= x_271);
+    if (tint_tmp) {
+      tint_tmp = (x_273 <= x_274);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_280 = data[i];
+    const int x_283 = data[j];
+    if ((x_280 < x_283)) {
+      const int x_288 = k;
+      k = (x_288 + 1);
+      const int x_290 = i;
+      i = (x_290 + 1);
+      const int x_293 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      const int x_295 = k;
+      k = (x_295 + 1);
+      const int x_297 = j;
+      j = (x_297 + 1);
+      const int x_300 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  while (true) {
+    const int x_306 = i;
+    const int x_308 = i;
+    const int x_309 = mid;
+    bool tint_tmp_1 = (x_306 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_308 <= x_309);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_313 = k;
+    k = (x_313 + 1);
+    const int x_315 = i;
+    i = (x_315 + 1);
+    const int x_318 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  const int x_320 = from;
+  i_1 = x_320;
+  while (true) {
+    const int x_325 = i_1;
+    const int x_326 = to;
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    const int x_329 = i_1;
+    const int x_332 = temp[i_1];
+    data[x_329] = x_332;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_86 = asfloat(x_28[0].x);
+  i_3 = int(x_86);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    const bool x_133 = (j_1 < 10);
+    const float x_135 = asfloat(x_28[0].x);
+    if (!((x_135 <= 1.0f))) {
+      grey = 1.0f;
+    }
+    if (x_133) {
+    } else {
+      break;
+    }
+    const int x_140 = j_1;
+    const int x_143 = data[j_1];
+    temp[x_140] = x_143;
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  mergeSort_();
+  const float x_149 = gl_FragCoord.y;
+  if ((int(x_149) < 30)) {
+    const int x_156 = data[0];
+    grey = (0.5f + (float(x_156) / 10.0f));
+  } else {
+    const float x_161 = gl_FragCoord.y;
+    if ((int(x_161) < 60)) {
+      const int x_168 = data[1];
+      grey = (0.5f + (float(x_168) / 10.0f));
+    } else {
+      const float x_173 = gl_FragCoord.y;
+      if ((int(x_173) < 90)) {
+        const int x_180 = data[2];
+        grey = (0.5f + (float(x_180) / 10.0f));
+      } else {
+        const float x_185 = gl_FragCoord.y;
+        if ((int(x_185) < 120)) {
+          const int x_192 = data[3];
+          grey = (0.5f + (float(x_192) / 10.0f));
+        } else {
+          const float x_197 = gl_FragCoord.y;
+          if ((int(x_197) < 150)) {
+            discard;
+          } else {
+            const float x_204 = gl_FragCoord.y;
+            if ((int(x_204) < 180)) {
+              const int x_211 = data[5];
+              grey = (0.5f + (float(x_211) / 10.0f));
+            } else {
+              const float x_216 = gl_FragCoord.y;
+              if ((int(x_216) < 210)) {
+                const int x_223 = data[6];
+                grey = (0.5f + (float(x_223) / 10.0f));
+              } else {
+                const float x_228 = gl_FragCoord.y;
+                if ((int(x_228) < 240)) {
+                  const int x_235 = data[7];
+                  grey = (0.5f + (float(x_235) / 10.0f));
+                } else {
+                  const float x_240 = gl_FragCoord.y;
+                  bool guard233 = true;
+                  if ((int(x_240) < 270)) {
+                    const int x_247 = data[8];
+                    grey = (0.5f + (float(x_247) / 10.0f));
+                    guard233 = false;
+                  } else {
+                    if (guard233) {
+                      const float x_252 = asfloat(x_28[0].y);
+                      if (!((0.0f < x_252))) {
+                        guard233 = false;
+                      }
+                      if (guard233) {
+                        discard;
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_255 = grey;
+  const float3 x_256 = float3(x_255, x_255, x_255);
+  x_GLF_color = float4(x_256.x, x_256.y, x_256.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.msl
new file mode 100644
index 0000000..941121e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.msl
@@ -0,0 +1,329 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_262 = *(from);
+  k = x_262;
+  int const x_263 = *(from);
+  i = x_263;
+  int const x_264 = *(mid);
+  j = (x_264 + 1);
+  while (true) {
+    int const x_270 = i;
+    int const x_271 = *(mid);
+    int const x_273 = j;
+    int const x_274 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    int const x_278 = i;
+    int const x_280 = (*(tint_symbol_5)).arr[x_278];
+    int const x_281 = j;
+    int const x_283 = (*(tint_symbol_5)).arr[x_281];
+    if ((x_280 < x_283)) {
+      int const x_288 = k;
+      k = (x_288 + 1);
+      int const x_290 = i;
+      i = (x_290 + 1);
+      int const x_293 = (*(tint_symbol_5)).arr[x_290];
+      (*(tint_symbol_6)).arr[x_288] = x_293;
+    } else {
+      int const x_295 = k;
+      k = (x_295 + 1);
+      int const x_297 = j;
+      j = (x_297 + 1);
+      int const x_300 = (*(tint_symbol_5)).arr[x_297];
+      (*(tint_symbol_6)).arr[x_295] = x_300;
+    }
+  }
+  while (true) {
+    int const x_306 = i;
+    int const x_308 = i;
+    int const x_309 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    int const x_313 = k;
+    k = (x_313 + 1);
+    int const x_315 = i;
+    i = (x_315 + 1);
+    int const x_318 = (*(tint_symbol_5)).arr[x_315];
+    (*(tint_symbol_6)).arr[x_313] = x_318;
+  }
+  int const x_320 = *(from);
+  i_1 = x_320;
+  while (true) {
+    int const x_325 = i_1;
+    int const x_326 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    int const x_329 = i_1;
+    int const x_330 = i_1;
+    int const x_332 = (*(tint_symbol_6)).arr[x_330];
+    (*(tint_symbol_5)).arr[x_329] = x_332;
+    {
+      int const x_334 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_341 = m;
+    int const x_342 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    int const x_345 = low;
+    i_2 = x_345;
+    while (true) {
+      int const x_350 = i_2;
+      int const x_351 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      int const x_354 = i_2;
+      from_1 = x_354;
+      int const x_355 = i_2;
+      int const x_356 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      int const x_359 = i_2;
+      int const x_360 = m;
+      int const x_364 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      int const x_366 = from_1;
+      param = x_366;
+      int const x_367 = mid_1;
+      param_1 = x_367;
+      int const x_368 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_370 = m;
+        int const x_372 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+    {
+      int const x_374 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_86 = x_28.injectionSwitch.x;
+  i_3 = int(x_86);
+  while (true) {
+    int const x_92 = i_3;
+    switch(x_92) {
+      case 9: {
+        int const x_122 = i_3;
+        (*(tint_symbol_9)).arr[x_122] = -5;
+        break;
+      }
+      case 8: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -4;
+        break;
+      }
+      case 7: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -3;
+        break;
+      }
+      case 6: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -2;
+        break;
+      }
+      case 5: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = -1;
+        break;
+      }
+      case 4: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = 0;
+        break;
+      }
+      case 3: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 1;
+        break;
+      }
+      case 2: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 2;
+        break;
+      }
+      case 1: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 3;
+        break;
+      }
+      case 0: {
+        int const x_104 = i_3;
+        (*(tint_symbol_9)).arr[x_104] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_124 = i_3;
+    i_3 = (x_124 + 1);
+    {
+      int const x_126 = i_3;
+      if ((x_126 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_132 = j_1;
+    bool const x_133 = (x_132 < 10);
+    float const x_135 = x_28.injectionSwitch.x;
+    if (!((x_135 <= 1.0f))) {
+      grey = 1.0f;
+    }
+    if (x_133) {
+    } else {
+      break;
+    }
+    int const x_140 = j_1;
+    int const x_141 = j_1;
+    int const x_143 = (*(tint_symbol_9)).arr[x_141];
+    (*(tint_symbol_10)).arr[x_140] = x_143;
+    {
+      int const x_145 = j_1;
+      j_1 = (x_145 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_149 = (*(tint_symbol_11)).y;
+  if ((int(x_149) < 30)) {
+    int const x_156 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_156) / 10.0f));
+  } else {
+    float const x_161 = (*(tint_symbol_11)).y;
+    if ((int(x_161) < 60)) {
+      int const x_168 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_168) / 10.0f));
+    } else {
+      float const x_173 = (*(tint_symbol_11)).y;
+      if ((int(x_173) < 90)) {
+        int const x_180 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_180) / 10.0f));
+      } else {
+        float const x_185 = (*(tint_symbol_11)).y;
+        if ((int(x_185) < 120)) {
+          int const x_192 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_192) / 10.0f));
+        } else {
+          float const x_197 = (*(tint_symbol_11)).y;
+          if ((int(x_197) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_204 = (*(tint_symbol_11)).y;
+            if ((int(x_204) < 180)) {
+              int const x_211 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_211) / 10.0f));
+            } else {
+              float const x_216 = (*(tint_symbol_11)).y;
+              if ((int(x_216) < 210)) {
+                int const x_223 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_223) / 10.0f));
+              } else {
+                float const x_228 = (*(tint_symbol_11)).y;
+                if ((int(x_228) < 240)) {
+                  int const x_235 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_235) / 10.0f));
+                } else {
+                  float const x_240 = (*(tint_symbol_11)).y;
+                  bool guard233 = true;
+                  if ((int(x_240) < 270)) {
+                    int const x_247 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_247) / 10.0f));
+                    guard233 = false;
+                  } else {
+                    if (guard233) {
+                      float const x_252 = x_28.injectionSwitch.y;
+                      if (!((0.0f < x_252))) {
+                        guard233 = false;
+                      }
+                      if (guard233) {
+                        discard_fragment();
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_255 = grey;
+  float3 const x_256 = float3(x_255, x_255, x_255);
+  *(tint_symbol_12) = float4(x_256.x, x_256.y, x_256.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..e2ae2d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.spvasm
@@ -0,0 +1,690 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 440
+; Schema: 0
+               OpCapability Shader
+        %177 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %guard233 "guard233"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %201 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+    %float_1 = OpConstant %float 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+       %true = OpConstantTrue %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+        %393 = OpConstantNull %bool
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %427 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %134 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %m
+        %152 = OpLoad %int %high
+        %153 = OpSLessThanEqual %bool %151 %152
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %148
+        %154 = OpLabel
+        %157 = OpLoad %int %low
+               OpStore %i_2 %157
+               OpBranch %158
+        %158 = OpLabel
+               OpLoopMerge %159 %160 None
+               OpBranch %161
+        %161 = OpLabel
+        %162 = OpLoad %int %i_2
+        %163 = OpLoad %int %high
+        %164 = OpSLessThan %bool %162 %163
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %167
+        %166 = OpLabel
+               OpBranch %165
+        %167 = OpLabel
+               OpBranch %159
+        %165 = OpLabel
+        %168 = OpLoad %int %i_2
+               OpStore %from_1 %168
+        %169 = OpLoad %int %i_2
+        %170 = OpLoad %int %m
+        %171 = OpIAdd %int %169 %170
+        %172 = OpISub %int %171 %int_1
+               OpStore %mid_1 %172
+        %173 = OpLoad %int %i_2
+        %174 = OpLoad %int %m
+        %175 = OpLoad %int %high
+        %179 = OpIMul %int %int_2 %174
+        %180 = OpIAdd %int %173 %179
+        %181 = OpISub %int %180 %int_1
+        %176 = OpExtInst %int %177 SMin %181 %175
+               OpStore %to_1 %176
+        %182 = OpLoad %int %from_1
+               OpStore %param %182
+        %183 = OpLoad %int %mid_1
+               OpStore %param_1 %183
+        %184 = OpLoad %int %to_1
+               OpStore %param_2 %184
+        %185 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %160
+        %160 = OpLabel
+        %189 = OpLoad %int %m
+        %190 = OpLoad %int %i_2
+        %191 = OpIMul %int %int_2 %189
+        %192 = OpIAdd %int %190 %191
+               OpStore %i_2 %192
+               OpBranch %158
+        %159 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %193 = OpLoad %int %m
+        %194 = OpIMul %int %int_2 %193
+               OpStore %m %194
+               OpBranch %147
+        %148 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %196 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %201
+   %guard233 = OpVariable %_ptr_Function_bool Function %393
+        %204 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %205 = OpLoad %float %204
+        %206 = OpConvertFToS %int %205
+               OpStore %i_3 %206
+               OpBranch %207
+        %207 = OpLabel
+               OpLoopMerge %208 %209 None
+               OpBranch %210
+        %210 = OpLabel
+        %211 = OpLoad %int %i_3
+               OpSelectionMerge %212 None
+               OpSwitch %211 %213 9 %214 8 %215 7 %216 6 %217 5 %218 4 %219 3 %220 2 %221 1 %222 0 %223
+        %214 = OpLabel
+        %224 = OpLoad %int %i_3
+        %225 = OpAccessChain %_ptr_Private_int %data %224
+               OpStore %225 %int_n5
+               OpBranch %212
+        %215 = OpLabel
+        %227 = OpLoad %int %i_3
+        %228 = OpAccessChain %_ptr_Private_int %data %227
+               OpStore %228 %int_n4
+               OpBranch %212
+        %216 = OpLabel
+        %230 = OpLoad %int %i_3
+        %231 = OpAccessChain %_ptr_Private_int %data %230
+               OpStore %231 %int_n3
+               OpBranch %212
+        %217 = OpLabel
+        %233 = OpLoad %int %i_3
+        %234 = OpAccessChain %_ptr_Private_int %data %233
+               OpStore %234 %int_n2
+               OpBranch %212
+        %218 = OpLabel
+        %236 = OpLoad %int %i_3
+        %237 = OpAccessChain %_ptr_Private_int %data %236
+               OpStore %237 %int_n1
+               OpBranch %212
+        %219 = OpLabel
+        %239 = OpLoad %int %i_3
+        %240 = OpAccessChain %_ptr_Private_int %data %239
+               OpStore %240 %int_0
+               OpBranch %212
+        %220 = OpLabel
+        %241 = OpLoad %int %i_3
+        %242 = OpAccessChain %_ptr_Private_int %data %241
+               OpStore %242 %int_1
+               OpBranch %212
+        %221 = OpLabel
+        %243 = OpLoad %int %i_3
+        %244 = OpAccessChain %_ptr_Private_int %data %243
+               OpStore %244 %int_2
+               OpBranch %212
+        %222 = OpLabel
+        %245 = OpLoad %int %i_3
+        %246 = OpAccessChain %_ptr_Private_int %data %245
+               OpStore %246 %int_3
+               OpBranch %212
+        %223 = OpLabel
+        %248 = OpLoad %int %i_3
+        %249 = OpAccessChain %_ptr_Private_int %data %248
+               OpStore %249 %int_4
+               OpBranch %212
+        %213 = OpLabel
+               OpBranch %212
+        %212 = OpLabel
+        %251 = OpLoad %int %i_3
+        %252 = OpIAdd %int %251 %int_1
+               OpStore %i_3 %252
+               OpBranch %209
+        %209 = OpLabel
+        %253 = OpLoad %int %i_3
+        %254 = OpSLessThan %bool %253 %int_10
+               OpSelectionMerge %255 None
+               OpBranchConditional %254 %256 %257
+        %256 = OpLabel
+               OpBranch %255
+        %257 = OpLabel
+               OpBranch %208
+        %255 = OpLabel
+               OpBranch %207
+        %208 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %258
+        %258 = OpLabel
+               OpLoopMerge %259 %260 None
+               OpBranch %261
+        %261 = OpLabel
+        %262 = OpLoad %int %j_1
+        %263 = OpSLessThan %bool %262 %int_10
+        %264 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %265 = OpLoad %float %264
+        %268 = OpFOrdLessThanEqual %bool %265 %float_1
+        %266 = OpLogicalNot %bool %268
+               OpSelectionMerge %269 None
+               OpBranchConditional %266 %270 %269
+        %270 = OpLabel
+               OpStore %grey %float_1
+               OpBranch %269
+        %269 = OpLabel
+               OpSelectionMerge %271 None
+               OpBranchConditional %263 %272 %273
+        %272 = OpLabel
+               OpBranch %271
+        %273 = OpLabel
+               OpBranch %259
+        %271 = OpLabel
+        %274 = OpLoad %int %j_1
+        %275 = OpLoad %int %j_1
+        %276 = OpAccessChain %_ptr_Private_int %data %275
+        %277 = OpLoad %int %276
+        %278 = OpAccessChain %_ptr_Private_int %temp %274
+               OpStore %278 %277
+               OpBranch %260
+        %260 = OpLabel
+        %279 = OpLoad %int %j_1
+        %280 = OpIAdd %int %279 %int_1
+               OpStore %j_1 %280
+               OpBranch %258
+        %259 = OpLabel
+        %281 = OpFunctionCall %void %mergeSort_
+        %284 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %285 = OpLoad %float %284
+        %286 = OpConvertFToS %int %285
+        %288 = OpSLessThan %bool %286 %int_30
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %291
+        %290 = OpLabel
+        %292 = OpAccessChain %_ptr_Private_int %data %int_0
+        %293 = OpLoad %int %292
+        %295 = OpConvertSToF %float %293
+        %297 = OpFDiv %float %295 %float_10
+        %298 = OpFAdd %float %float_0_5 %297
+               OpStore %grey %298
+               OpBranch %289
+        %291 = OpLabel
+        %299 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %300 = OpLoad %float %299
+        %301 = OpConvertFToS %int %300
+        %303 = OpSLessThan %bool %301 %int_60
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %306
+        %305 = OpLabel
+        %307 = OpAccessChain %_ptr_Private_int %data %int_1
+        %308 = OpLoad %int %307
+        %309 = OpConvertSToF %float %308
+        %310 = OpFDiv %float %309 %float_10
+        %311 = OpFAdd %float %float_0_5 %310
+               OpStore %grey %311
+               OpBranch %304
+        %306 = OpLabel
+        %312 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %313 = OpLoad %float %312
+        %314 = OpConvertFToS %int %313
+        %316 = OpSLessThan %bool %314 %int_90
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %319
+        %318 = OpLabel
+        %320 = OpAccessChain %_ptr_Private_int %data %int_2
+        %321 = OpLoad %int %320
+        %322 = OpConvertSToF %float %321
+        %323 = OpFDiv %float %322 %float_10
+        %324 = OpFAdd %float %float_0_5 %323
+               OpStore %grey %324
+               OpBranch %317
+        %319 = OpLabel
+        %325 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %326 = OpLoad %float %325
+        %327 = OpConvertFToS %int %326
+        %329 = OpSLessThan %bool %327 %int_120
+               OpSelectionMerge %330 None
+               OpBranchConditional %329 %331 %332
+        %331 = OpLabel
+        %333 = OpAccessChain %_ptr_Private_int %data %int_3
+        %334 = OpLoad %int %333
+        %335 = OpConvertSToF %float %334
+        %336 = OpFDiv %float %335 %float_10
+        %337 = OpFAdd %float %float_0_5 %336
+               OpStore %grey %337
+               OpBranch %330
+        %332 = OpLabel
+        %338 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %339 = OpLoad %float %338
+        %340 = OpConvertFToS %int %339
+        %342 = OpSLessThan %bool %340 %int_150
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+               OpKill
+        %345 = OpLabel
+        %346 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %347 = OpLoad %float %346
+        %348 = OpConvertFToS %int %347
+        %350 = OpSLessThan %bool %348 %int_180
+               OpSelectionMerge %351 None
+               OpBranchConditional %350 %352 %353
+        %352 = OpLabel
+        %355 = OpAccessChain %_ptr_Private_int %data %int_5
+        %356 = OpLoad %int %355
+        %357 = OpConvertSToF %float %356
+        %358 = OpFDiv %float %357 %float_10
+        %359 = OpFAdd %float %float_0_5 %358
+               OpStore %grey %359
+               OpBranch %351
+        %353 = OpLabel
+        %360 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %361 = OpLoad %float %360
+        %362 = OpConvertFToS %int %361
+        %364 = OpSLessThan %bool %362 %int_210
+               OpSelectionMerge %365 None
+               OpBranchConditional %364 %366 %367
+        %366 = OpLabel
+        %369 = OpAccessChain %_ptr_Private_int %data %int_6
+        %370 = OpLoad %int %369
+        %371 = OpConvertSToF %float %370
+        %372 = OpFDiv %float %371 %float_10
+        %373 = OpFAdd %float %float_0_5 %372
+               OpStore %grey %373
+               OpBranch %365
+        %367 = OpLabel
+        %374 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %375 = OpLoad %float %374
+        %376 = OpConvertFToS %int %375
+        %378 = OpSLessThan %bool %376 %int_240
+               OpSelectionMerge %379 None
+               OpBranchConditional %378 %380 %381
+        %380 = OpLabel
+        %383 = OpAccessChain %_ptr_Private_int %data %int_7
+        %384 = OpLoad %int %383
+        %385 = OpConvertSToF %float %384
+        %386 = OpFDiv %float %385 %float_10
+        %387 = OpFAdd %float %float_0_5 %386
+               OpStore %grey %387
+               OpBranch %379
+        %381 = OpLabel
+        %388 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %389 = OpLoad %float %388
+               OpStore %guard233 %true
+        %394 = OpConvertFToS %int %389
+        %396 = OpSLessThan %bool %394 %int_270
+               OpSelectionMerge %397 None
+               OpBranchConditional %396 %398 %399
+        %398 = OpLabel
+        %401 = OpAccessChain %_ptr_Private_int %data %int_8
+        %402 = OpLoad %int %401
+        %403 = OpConvertSToF %float %402
+        %404 = OpFDiv %float %403 %float_10
+        %405 = OpFAdd %float %float_0_5 %404
+               OpStore %grey %405
+               OpStore %guard233 %false
+               OpBranch %397
+        %399 = OpLabel
+        %407 = OpLoad %bool %guard233
+               OpSelectionMerge %408 None
+               OpBranchConditional %407 %409 %408
+        %409 = OpLabel
+        %410 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %411 = OpLoad %float %410
+        %414 = OpFOrdLessThan %bool %float_0 %411
+        %412 = OpLogicalNot %bool %414
+               OpSelectionMerge %415 None
+               OpBranchConditional %412 %416 %415
+        %416 = OpLabel
+               OpStore %guard233 %false
+               OpBranch %415
+        %415 = OpLabel
+        %417 = OpLoad %bool %guard233
+               OpSelectionMerge %418 None
+               OpBranchConditional %417 %419 %418
+        %419 = OpLabel
+               OpKill
+        %418 = OpLabel
+               OpBranch %408
+        %408 = OpLabel
+               OpBranch %397
+        %397 = OpLabel
+               OpBranch %379
+        %379 = OpLabel
+               OpBranch %365
+        %365 = OpLabel
+               OpBranch %351
+        %351 = OpLabel
+               OpBranch %343
+        %343 = OpLabel
+               OpBranch %330
+        %330 = OpLabel
+               OpBranch %317
+        %317 = OpLabel
+               OpBranch %304
+        %304 = OpLabel
+               OpBranch %289
+        %289 = OpLabel
+        %420 = OpLoad %float %grey
+        %422 = OpCompositeConstruct %v3float %420 %420 %420
+        %423 = OpCompositeExtract %float %422 0
+        %424 = OpCompositeExtract %float %422 1
+        %425 = OpCompositeExtract %float %422 2
+        %426 = OpCompositeConstruct %v4float %423 %424 %425 %float_1
+               OpStore %x_GLF_color %426
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %427
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %431 = OpLabel
+        %432 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %432
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %434 = OpLabel
+        %435 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %435
+        %436 = OpFunctionCall %void %main_1
+        %438 = OpLoad %v4float %x_GLF_color
+        %439 = OpCompositeConstruct %main_out %438
+        %437 = OpFunctionCall %void %tint_symbol_3 %439
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 209[%209] is not post dominated by the back-edge block 255[%255]
+  %255 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..4e442a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.spvasm.expected.wgsl
@@ -0,0 +1,321 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_262 : i32 = *(from);
+  k = x_262;
+  let x_263 : i32 = *(from);
+  i = x_263;
+  let x_264 : i32 = *(mid);
+  j = (x_264 + 1);
+  loop {
+    let x_270 : i32 = i;
+    let x_271 : i32 = *(mid);
+    let x_273 : i32 = j;
+    let x_274 : i32 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    let x_278 : i32 = i;
+    let x_280 : i32 = data[x_278];
+    let x_281 : i32 = j;
+    let x_283 : i32 = data[x_281];
+    if ((x_280 < x_283)) {
+      let x_288 : i32 = k;
+      k = (x_288 + 1);
+      let x_290 : i32 = i;
+      i = (x_290 + 1);
+      let x_293 : i32 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      let x_295 : i32 = k;
+      k = (x_295 + 1);
+      let x_297 : i32 = j;
+      j = (x_297 + 1);
+      let x_300 : i32 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  loop {
+    let x_306 : i32 = i;
+    let x_308 : i32 = i;
+    let x_309 : i32 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    let x_313 : i32 = k;
+    k = (x_313 + 1);
+    let x_315 : i32 = i;
+    i = (x_315 + 1);
+    let x_318 : i32 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  let x_320 : i32 = *(from);
+  i_1 = x_320;
+  loop {
+    let x_325 : i32 = i_1;
+    let x_326 : i32 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    let x_329 : i32 = i_1;
+    let x_330 : i32 = i_1;
+    let x_332 : i32 = temp[x_330];
+    data[x_329] = x_332;
+
+    continuing {
+      let x_334 : i32 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_341 : i32 = m;
+    let x_342 : i32 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    let x_345 : i32 = low;
+    i_2 = x_345;
+    loop {
+      let x_350 : i32 = i_2;
+      let x_351 : i32 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      let x_354 : i32 = i_2;
+      from_1 = x_354;
+      let x_355 : i32 = i_2;
+      let x_356 : i32 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      let x_359 : i32 = i_2;
+      let x_360 : i32 = m;
+      let x_364 : i32 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      let x_366 : i32 = from_1;
+      param = x_366;
+      let x_367 : i32 = mid_1;
+      param_1 = x_367;
+      let x_368 : i32 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_370 : i32 = m;
+        let x_372 : i32 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+
+    continuing {
+      let x_374 : i32 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_86 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_86);
+  loop {
+    let x_92 : i32 = i_3;
+    switch(x_92) {
+      case 9: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -5;
+      }
+      case 8: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -4;
+      }
+      case 7: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -3;
+      }
+      case 6: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -2;
+      }
+      case 5: {
+        let x_114 : i32 = i_3;
+        data[x_114] = -1;
+      }
+      case 4: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 0;
+      }
+      case 3: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 1;
+      }
+      case 2: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 2;
+      }
+      case 1: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 3;
+      }
+      case 0: {
+        let x_104 : i32 = i_3;
+        data[x_104] = 4;
+      }
+      default: {
+      }
+    }
+    let x_124 : i32 = i_3;
+    i_3 = (x_124 + 1);
+
+    continuing {
+      let x_126 : i32 = i_3;
+      if ((x_126 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_132 : i32 = j_1;
+    let x_133 : bool = (x_132 < 10);
+    let x_135 : f32 = x_28.injectionSwitch.x;
+    if (!((x_135 <= 1.0))) {
+      grey = 1.0;
+    }
+    if (x_133) {
+    } else {
+      break;
+    }
+    let x_140 : i32 = j_1;
+    let x_141 : i32 = j_1;
+    let x_143 : i32 = data[x_141];
+    temp[x_140] = x_143;
+
+    continuing {
+      let x_145 : i32 = j_1;
+      j_1 = (x_145 + 1);
+    }
+  }
+  mergeSort_();
+  let x_149 : f32 = gl_FragCoord.y;
+  if ((i32(x_149) < 30)) {
+    let x_156 : i32 = data[0];
+    grey = (0.5 + (f32(x_156) / 10.0));
+  } else {
+    let x_161 : f32 = gl_FragCoord.y;
+    if ((i32(x_161) < 60)) {
+      let x_168 : i32 = data[1];
+      grey = (0.5 + (f32(x_168) / 10.0));
+    } else {
+      let x_173 : f32 = gl_FragCoord.y;
+      if ((i32(x_173) < 90)) {
+        let x_180 : i32 = data[2];
+        grey = (0.5 + (f32(x_180) / 10.0));
+      } else {
+        let x_185 : f32 = gl_FragCoord.y;
+        if ((i32(x_185) < 120)) {
+          let x_192 : i32 = data[3];
+          grey = (0.5 + (f32(x_192) / 10.0));
+        } else {
+          let x_197 : f32 = gl_FragCoord.y;
+          if ((i32(x_197) < 150)) {
+            discard;
+          } else {
+            let x_204 : f32 = gl_FragCoord.y;
+            if ((i32(x_204) < 180)) {
+              let x_211 : i32 = data[5];
+              grey = (0.5 + (f32(x_211) / 10.0));
+            } else {
+              let x_216 : f32 = gl_FragCoord.y;
+              if ((i32(x_216) < 210)) {
+                let x_223 : i32 = data[6];
+                grey = (0.5 + (f32(x_223) / 10.0));
+              } else {
+                let x_228 : f32 = gl_FragCoord.y;
+                if ((i32(x_228) < 240)) {
+                  let x_235 : i32 = data[7];
+                  grey = (0.5 + (f32(x_235) / 10.0));
+                } else {
+                  let x_240 : f32 = gl_FragCoord.y;
+                  var guard233 : bool = true;
+                  if ((i32(x_240) < 270)) {
+                    let x_247 : i32 = data[8];
+                    grey = (0.5 + (f32(x_247) / 10.0));
+                    guard233 = false;
+                  } else {
+                    if (guard233) {
+                      let x_252 : f32 = x_28.injectionSwitch.y;
+                      if (!((0.0 < x_252))) {
+                        guard233 = false;
+                      }
+                      if (guard233) {
+                        discard;
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_255 : f32 = grey;
+  let x_256 : vec3<f32> = vec3<f32>(x_255, x_255, x_255);
+  x_GLF_color = vec4<f32>(x_256.x, x_256.y, x_256.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
new file mode 100644
index 0000000..4e442a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
@@ -0,0 +1,321 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_262 : i32 = *(from);
+  k = x_262;
+  let x_263 : i32 = *(from);
+  i = x_263;
+  let x_264 : i32 = *(mid);
+  j = (x_264 + 1);
+  loop {
+    let x_270 : i32 = i;
+    let x_271 : i32 = *(mid);
+    let x_273 : i32 = j;
+    let x_274 : i32 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    let x_278 : i32 = i;
+    let x_280 : i32 = data[x_278];
+    let x_281 : i32 = j;
+    let x_283 : i32 = data[x_281];
+    if ((x_280 < x_283)) {
+      let x_288 : i32 = k;
+      k = (x_288 + 1);
+      let x_290 : i32 = i;
+      i = (x_290 + 1);
+      let x_293 : i32 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      let x_295 : i32 = k;
+      k = (x_295 + 1);
+      let x_297 : i32 = j;
+      j = (x_297 + 1);
+      let x_300 : i32 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  loop {
+    let x_306 : i32 = i;
+    let x_308 : i32 = i;
+    let x_309 : i32 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    let x_313 : i32 = k;
+    k = (x_313 + 1);
+    let x_315 : i32 = i;
+    i = (x_315 + 1);
+    let x_318 : i32 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  let x_320 : i32 = *(from);
+  i_1 = x_320;
+  loop {
+    let x_325 : i32 = i_1;
+    let x_326 : i32 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    let x_329 : i32 = i_1;
+    let x_330 : i32 = i_1;
+    let x_332 : i32 = temp[x_330];
+    data[x_329] = x_332;
+
+    continuing {
+      let x_334 : i32 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_341 : i32 = m;
+    let x_342 : i32 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    let x_345 : i32 = low;
+    i_2 = x_345;
+    loop {
+      let x_350 : i32 = i_2;
+      let x_351 : i32 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      let x_354 : i32 = i_2;
+      from_1 = x_354;
+      let x_355 : i32 = i_2;
+      let x_356 : i32 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      let x_359 : i32 = i_2;
+      let x_360 : i32 = m;
+      let x_364 : i32 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      let x_366 : i32 = from_1;
+      param = x_366;
+      let x_367 : i32 = mid_1;
+      param_1 = x_367;
+      let x_368 : i32 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_370 : i32 = m;
+        let x_372 : i32 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+
+    continuing {
+      let x_374 : i32 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_86 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_86);
+  loop {
+    let x_92 : i32 = i_3;
+    switch(x_92) {
+      case 9: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -5;
+      }
+      case 8: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -4;
+      }
+      case 7: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -3;
+      }
+      case 6: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -2;
+      }
+      case 5: {
+        let x_114 : i32 = i_3;
+        data[x_114] = -1;
+      }
+      case 4: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 0;
+      }
+      case 3: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 1;
+      }
+      case 2: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 2;
+      }
+      case 1: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 3;
+      }
+      case 0: {
+        let x_104 : i32 = i_3;
+        data[x_104] = 4;
+      }
+      default: {
+      }
+    }
+    let x_124 : i32 = i_3;
+    i_3 = (x_124 + 1);
+
+    continuing {
+      let x_126 : i32 = i_3;
+      if ((x_126 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_132 : i32 = j_1;
+    let x_133 : bool = (x_132 < 10);
+    let x_135 : f32 = x_28.injectionSwitch.x;
+    if (!((x_135 <= 1.0))) {
+      grey = 1.0;
+    }
+    if (x_133) {
+    } else {
+      break;
+    }
+    let x_140 : i32 = j_1;
+    let x_141 : i32 = j_1;
+    let x_143 : i32 = data[x_141];
+    temp[x_140] = x_143;
+
+    continuing {
+      let x_145 : i32 = j_1;
+      j_1 = (x_145 + 1);
+    }
+  }
+  mergeSort_();
+  let x_149 : f32 = gl_FragCoord.y;
+  if ((i32(x_149) < 30)) {
+    let x_156 : i32 = data[0];
+    grey = (0.5 + (f32(x_156) / 10.0));
+  } else {
+    let x_161 : f32 = gl_FragCoord.y;
+    if ((i32(x_161) < 60)) {
+      let x_168 : i32 = data[1];
+      grey = (0.5 + (f32(x_168) / 10.0));
+    } else {
+      let x_173 : f32 = gl_FragCoord.y;
+      if ((i32(x_173) < 90)) {
+        let x_180 : i32 = data[2];
+        grey = (0.5 + (f32(x_180) / 10.0));
+      } else {
+        let x_185 : f32 = gl_FragCoord.y;
+        if ((i32(x_185) < 120)) {
+          let x_192 : i32 = data[3];
+          grey = (0.5 + (f32(x_192) / 10.0));
+        } else {
+          let x_197 : f32 = gl_FragCoord.y;
+          if ((i32(x_197) < 150)) {
+            discard;
+          } else {
+            let x_204 : f32 = gl_FragCoord.y;
+            if ((i32(x_204) < 180)) {
+              let x_211 : i32 = data[5];
+              grey = (0.5 + (f32(x_211) / 10.0));
+            } else {
+              let x_216 : f32 = gl_FragCoord.y;
+              if ((i32(x_216) < 210)) {
+                let x_223 : i32 = data[6];
+                grey = (0.5 + (f32(x_223) / 10.0));
+              } else {
+                let x_228 : f32 = gl_FragCoord.y;
+                if ((i32(x_228) < 240)) {
+                  let x_235 : i32 = data[7];
+                  grey = (0.5 + (f32(x_235) / 10.0));
+                } else {
+                  let x_240 : f32 = gl_FragCoord.y;
+                  var guard233 : bool = true;
+                  if ((i32(x_240) < 270)) {
+                    let x_247 : i32 = data[8];
+                    grey = (0.5 + (f32(x_247) / 10.0));
+                    guard233 = false;
+                  } else {
+                    if (guard233) {
+                      let x_252 : f32 = x_28.injectionSwitch.y;
+                      if (!((0.0 < x_252))) {
+                        guard233 = false;
+                      }
+                      if (guard233) {
+                        discard;
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_255 : f32 = grey;
+  let x_256 : vec3<f32> = vec3<f32>(x_255, x_255, x_255);
+  x_GLF_color = vec4<f32>(x_256.x, x_256.y, x_256.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..b21b248
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.hlsl
@@ -0,0 +1,288 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_262 = from;
+  k = x_262;
+  const int x_263 = from;
+  i = x_263;
+  const int x_264 = mid;
+  j = (x_264 + 1);
+  while (true) {
+    const int x_270 = i;
+    const int x_271 = mid;
+    const int x_273 = j;
+    const int x_274 = to;
+    bool tint_tmp = (x_270 <= x_271);
+    if (tint_tmp) {
+      tint_tmp = (x_273 <= x_274);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_280 = data[i];
+    const int x_283 = data[j];
+    if ((x_280 < x_283)) {
+      const int x_288 = k;
+      k = (x_288 + 1);
+      const int x_290 = i;
+      i = (x_290 + 1);
+      const int x_293 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      const int x_295 = k;
+      k = (x_295 + 1);
+      const int x_297 = j;
+      j = (x_297 + 1);
+      const int x_300 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  while (true) {
+    const int x_306 = i;
+    const int x_308 = i;
+    const int x_309 = mid;
+    bool tint_tmp_1 = (x_306 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_308 <= x_309);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_313 = k;
+    k = (x_313 + 1);
+    const int x_315 = i;
+    i = (x_315 + 1);
+    const int x_318 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  const int x_320 = from;
+  i_1 = x_320;
+  while (true) {
+    const int x_325 = i_1;
+    const int x_326 = to;
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    const int x_329 = i_1;
+    const int x_332 = temp[i_1];
+    data[x_329] = x_332;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_86 = asfloat(x_28[0].x);
+  i_3 = int(x_86);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    const bool x_133 = (j_1 < 10);
+    const float x_135 = asfloat(x_28[0].x);
+    if (!((x_135 <= 1.0f))) {
+      grey = 1.0f;
+    }
+    if (x_133) {
+    } else {
+      break;
+    }
+    const int x_140 = j_1;
+    const int x_143 = data[j_1];
+    temp[x_140] = x_143;
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  mergeSort_();
+  const float x_149 = gl_FragCoord.y;
+  if ((int(x_149) < 30)) {
+    const int x_156 = data[0];
+    grey = (0.5f + (float(x_156) / 10.0f));
+  } else {
+    const float x_161 = gl_FragCoord.y;
+    if ((int(x_161) < 60)) {
+      const int x_168 = data[1];
+      grey = (0.5f + (float(x_168) / 10.0f));
+    } else {
+      const float x_173 = gl_FragCoord.y;
+      if ((int(x_173) < 90)) {
+        const int x_180 = data[2];
+        grey = (0.5f + (float(x_180) / 10.0f));
+      } else {
+        const float x_185 = gl_FragCoord.y;
+        if ((int(x_185) < 120)) {
+          const int x_192 = data[3];
+          grey = (0.5f + (float(x_192) / 10.0f));
+        } else {
+          const float x_197 = gl_FragCoord.y;
+          if ((int(x_197) < 150)) {
+            discard;
+          } else {
+            const float x_204 = gl_FragCoord.y;
+            if ((int(x_204) < 180)) {
+              const int x_211 = data[5];
+              grey = (0.5f + (float(x_211) / 10.0f));
+            } else {
+              const float x_216 = gl_FragCoord.y;
+              if ((int(x_216) < 210)) {
+                const int x_223 = data[6];
+                grey = (0.5f + (float(x_223) / 10.0f));
+              } else {
+                const float x_228 = gl_FragCoord.y;
+                if ((int(x_228) < 240)) {
+                  const int x_235 = data[7];
+                  grey = (0.5f + (float(x_235) / 10.0f));
+                } else {
+                  const float x_240 = gl_FragCoord.y;
+                  bool guard233 = true;
+                  if ((int(x_240) < 270)) {
+                    const int x_247 = data[8];
+                    grey = (0.5f + (float(x_247) / 10.0f));
+                    guard233 = false;
+                  } else {
+                    if (guard233) {
+                      const float x_252 = asfloat(x_28[0].y);
+                      if (!((0.0f < x_252))) {
+                        guard233 = false;
+                      }
+                      if (guard233) {
+                        discard;
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_255 = grey;
+  const float3 x_256 = float3(x_255, x_255, x_255);
+  x_GLF_color = float4(x_256.x, x_256.y, x_256.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.msl
new file mode 100644
index 0000000..941121e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.msl
@@ -0,0 +1,329 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_262 = *(from);
+  k = x_262;
+  int const x_263 = *(from);
+  i = x_263;
+  int const x_264 = *(mid);
+  j = (x_264 + 1);
+  while (true) {
+    int const x_270 = i;
+    int const x_271 = *(mid);
+    int const x_273 = j;
+    int const x_274 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    int const x_278 = i;
+    int const x_280 = (*(tint_symbol_5)).arr[x_278];
+    int const x_281 = j;
+    int const x_283 = (*(tint_symbol_5)).arr[x_281];
+    if ((x_280 < x_283)) {
+      int const x_288 = k;
+      k = (x_288 + 1);
+      int const x_290 = i;
+      i = (x_290 + 1);
+      int const x_293 = (*(tint_symbol_5)).arr[x_290];
+      (*(tint_symbol_6)).arr[x_288] = x_293;
+    } else {
+      int const x_295 = k;
+      k = (x_295 + 1);
+      int const x_297 = j;
+      j = (x_297 + 1);
+      int const x_300 = (*(tint_symbol_5)).arr[x_297];
+      (*(tint_symbol_6)).arr[x_295] = x_300;
+    }
+  }
+  while (true) {
+    int const x_306 = i;
+    int const x_308 = i;
+    int const x_309 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    int const x_313 = k;
+    k = (x_313 + 1);
+    int const x_315 = i;
+    i = (x_315 + 1);
+    int const x_318 = (*(tint_symbol_5)).arr[x_315];
+    (*(tint_symbol_6)).arr[x_313] = x_318;
+  }
+  int const x_320 = *(from);
+  i_1 = x_320;
+  while (true) {
+    int const x_325 = i_1;
+    int const x_326 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    int const x_329 = i_1;
+    int const x_330 = i_1;
+    int const x_332 = (*(tint_symbol_6)).arr[x_330];
+    (*(tint_symbol_5)).arr[x_329] = x_332;
+    {
+      int const x_334 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_341 = m;
+    int const x_342 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    int const x_345 = low;
+    i_2 = x_345;
+    while (true) {
+      int const x_350 = i_2;
+      int const x_351 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      int const x_354 = i_2;
+      from_1 = x_354;
+      int const x_355 = i_2;
+      int const x_356 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      int const x_359 = i_2;
+      int const x_360 = m;
+      int const x_364 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      int const x_366 = from_1;
+      param = x_366;
+      int const x_367 = mid_1;
+      param_1 = x_367;
+      int const x_368 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_370 = m;
+        int const x_372 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+    {
+      int const x_374 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_86 = x_28.injectionSwitch.x;
+  i_3 = int(x_86);
+  while (true) {
+    int const x_92 = i_3;
+    switch(x_92) {
+      case 9: {
+        int const x_122 = i_3;
+        (*(tint_symbol_9)).arr[x_122] = -5;
+        break;
+      }
+      case 8: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -4;
+        break;
+      }
+      case 7: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -3;
+        break;
+      }
+      case 6: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -2;
+        break;
+      }
+      case 5: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = -1;
+        break;
+      }
+      case 4: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = 0;
+        break;
+      }
+      case 3: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 1;
+        break;
+      }
+      case 2: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 2;
+        break;
+      }
+      case 1: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 3;
+        break;
+      }
+      case 0: {
+        int const x_104 = i_3;
+        (*(tint_symbol_9)).arr[x_104] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_124 = i_3;
+    i_3 = (x_124 + 1);
+    {
+      int const x_126 = i_3;
+      if ((x_126 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_132 = j_1;
+    bool const x_133 = (x_132 < 10);
+    float const x_135 = x_28.injectionSwitch.x;
+    if (!((x_135 <= 1.0f))) {
+      grey = 1.0f;
+    }
+    if (x_133) {
+    } else {
+      break;
+    }
+    int const x_140 = j_1;
+    int const x_141 = j_1;
+    int const x_143 = (*(tint_symbol_9)).arr[x_141];
+    (*(tint_symbol_10)).arr[x_140] = x_143;
+    {
+      int const x_145 = j_1;
+      j_1 = (x_145 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_149 = (*(tint_symbol_11)).y;
+  if ((int(x_149) < 30)) {
+    int const x_156 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_156) / 10.0f));
+  } else {
+    float const x_161 = (*(tint_symbol_11)).y;
+    if ((int(x_161) < 60)) {
+      int const x_168 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_168) / 10.0f));
+    } else {
+      float const x_173 = (*(tint_symbol_11)).y;
+      if ((int(x_173) < 90)) {
+        int const x_180 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_180) / 10.0f));
+      } else {
+        float const x_185 = (*(tint_symbol_11)).y;
+        if ((int(x_185) < 120)) {
+          int const x_192 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_192) / 10.0f));
+        } else {
+          float const x_197 = (*(tint_symbol_11)).y;
+          if ((int(x_197) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_204 = (*(tint_symbol_11)).y;
+            if ((int(x_204) < 180)) {
+              int const x_211 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_211) / 10.0f));
+            } else {
+              float const x_216 = (*(tint_symbol_11)).y;
+              if ((int(x_216) < 210)) {
+                int const x_223 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_223) / 10.0f));
+              } else {
+                float const x_228 = (*(tint_symbol_11)).y;
+                if ((int(x_228) < 240)) {
+                  int const x_235 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_235) / 10.0f));
+                } else {
+                  float const x_240 = (*(tint_symbol_11)).y;
+                  bool guard233 = true;
+                  if ((int(x_240) < 270)) {
+                    int const x_247 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_247) / 10.0f));
+                    guard233 = false;
+                  } else {
+                    if (guard233) {
+                      float const x_252 = x_28.injectionSwitch.y;
+                      if (!((0.0f < x_252))) {
+                        guard233 = false;
+                      }
+                      if (guard233) {
+                        discard_fragment();
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_255 = grey;
+  float3 const x_256 = float3(x_255, x_255, x_255);
+  *(tint_symbol_12) = float4(x_256.x, x_256.y, x_256.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..e2ae2d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.spvasm
@@ -0,0 +1,690 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 440
+; Schema: 0
+               OpCapability Shader
+        %177 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %guard233 "guard233"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %201 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+    %float_1 = OpConstant %float 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+       %true = OpConstantTrue %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+        %393 = OpConstantNull %bool
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %427 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %134 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %m
+        %152 = OpLoad %int %high
+        %153 = OpSLessThanEqual %bool %151 %152
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %148
+        %154 = OpLabel
+        %157 = OpLoad %int %low
+               OpStore %i_2 %157
+               OpBranch %158
+        %158 = OpLabel
+               OpLoopMerge %159 %160 None
+               OpBranch %161
+        %161 = OpLabel
+        %162 = OpLoad %int %i_2
+        %163 = OpLoad %int %high
+        %164 = OpSLessThan %bool %162 %163
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %167
+        %166 = OpLabel
+               OpBranch %165
+        %167 = OpLabel
+               OpBranch %159
+        %165 = OpLabel
+        %168 = OpLoad %int %i_2
+               OpStore %from_1 %168
+        %169 = OpLoad %int %i_2
+        %170 = OpLoad %int %m
+        %171 = OpIAdd %int %169 %170
+        %172 = OpISub %int %171 %int_1
+               OpStore %mid_1 %172
+        %173 = OpLoad %int %i_2
+        %174 = OpLoad %int %m
+        %175 = OpLoad %int %high
+        %179 = OpIMul %int %int_2 %174
+        %180 = OpIAdd %int %173 %179
+        %181 = OpISub %int %180 %int_1
+        %176 = OpExtInst %int %177 SMin %181 %175
+               OpStore %to_1 %176
+        %182 = OpLoad %int %from_1
+               OpStore %param %182
+        %183 = OpLoad %int %mid_1
+               OpStore %param_1 %183
+        %184 = OpLoad %int %to_1
+               OpStore %param_2 %184
+        %185 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %160
+        %160 = OpLabel
+        %189 = OpLoad %int %m
+        %190 = OpLoad %int %i_2
+        %191 = OpIMul %int %int_2 %189
+        %192 = OpIAdd %int %190 %191
+               OpStore %i_2 %192
+               OpBranch %158
+        %159 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %193 = OpLoad %int %m
+        %194 = OpIMul %int %int_2 %193
+               OpStore %m %194
+               OpBranch %147
+        %148 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %196 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %201
+   %guard233 = OpVariable %_ptr_Function_bool Function %393
+        %204 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %205 = OpLoad %float %204
+        %206 = OpConvertFToS %int %205
+               OpStore %i_3 %206
+               OpBranch %207
+        %207 = OpLabel
+               OpLoopMerge %208 %209 None
+               OpBranch %210
+        %210 = OpLabel
+        %211 = OpLoad %int %i_3
+               OpSelectionMerge %212 None
+               OpSwitch %211 %213 9 %214 8 %215 7 %216 6 %217 5 %218 4 %219 3 %220 2 %221 1 %222 0 %223
+        %214 = OpLabel
+        %224 = OpLoad %int %i_3
+        %225 = OpAccessChain %_ptr_Private_int %data %224
+               OpStore %225 %int_n5
+               OpBranch %212
+        %215 = OpLabel
+        %227 = OpLoad %int %i_3
+        %228 = OpAccessChain %_ptr_Private_int %data %227
+               OpStore %228 %int_n4
+               OpBranch %212
+        %216 = OpLabel
+        %230 = OpLoad %int %i_3
+        %231 = OpAccessChain %_ptr_Private_int %data %230
+               OpStore %231 %int_n3
+               OpBranch %212
+        %217 = OpLabel
+        %233 = OpLoad %int %i_3
+        %234 = OpAccessChain %_ptr_Private_int %data %233
+               OpStore %234 %int_n2
+               OpBranch %212
+        %218 = OpLabel
+        %236 = OpLoad %int %i_3
+        %237 = OpAccessChain %_ptr_Private_int %data %236
+               OpStore %237 %int_n1
+               OpBranch %212
+        %219 = OpLabel
+        %239 = OpLoad %int %i_3
+        %240 = OpAccessChain %_ptr_Private_int %data %239
+               OpStore %240 %int_0
+               OpBranch %212
+        %220 = OpLabel
+        %241 = OpLoad %int %i_3
+        %242 = OpAccessChain %_ptr_Private_int %data %241
+               OpStore %242 %int_1
+               OpBranch %212
+        %221 = OpLabel
+        %243 = OpLoad %int %i_3
+        %244 = OpAccessChain %_ptr_Private_int %data %243
+               OpStore %244 %int_2
+               OpBranch %212
+        %222 = OpLabel
+        %245 = OpLoad %int %i_3
+        %246 = OpAccessChain %_ptr_Private_int %data %245
+               OpStore %246 %int_3
+               OpBranch %212
+        %223 = OpLabel
+        %248 = OpLoad %int %i_3
+        %249 = OpAccessChain %_ptr_Private_int %data %248
+               OpStore %249 %int_4
+               OpBranch %212
+        %213 = OpLabel
+               OpBranch %212
+        %212 = OpLabel
+        %251 = OpLoad %int %i_3
+        %252 = OpIAdd %int %251 %int_1
+               OpStore %i_3 %252
+               OpBranch %209
+        %209 = OpLabel
+        %253 = OpLoad %int %i_3
+        %254 = OpSLessThan %bool %253 %int_10
+               OpSelectionMerge %255 None
+               OpBranchConditional %254 %256 %257
+        %256 = OpLabel
+               OpBranch %255
+        %257 = OpLabel
+               OpBranch %208
+        %255 = OpLabel
+               OpBranch %207
+        %208 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %258
+        %258 = OpLabel
+               OpLoopMerge %259 %260 None
+               OpBranch %261
+        %261 = OpLabel
+        %262 = OpLoad %int %j_1
+        %263 = OpSLessThan %bool %262 %int_10
+        %264 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %265 = OpLoad %float %264
+        %268 = OpFOrdLessThanEqual %bool %265 %float_1
+        %266 = OpLogicalNot %bool %268
+               OpSelectionMerge %269 None
+               OpBranchConditional %266 %270 %269
+        %270 = OpLabel
+               OpStore %grey %float_1
+               OpBranch %269
+        %269 = OpLabel
+               OpSelectionMerge %271 None
+               OpBranchConditional %263 %272 %273
+        %272 = OpLabel
+               OpBranch %271
+        %273 = OpLabel
+               OpBranch %259
+        %271 = OpLabel
+        %274 = OpLoad %int %j_1
+        %275 = OpLoad %int %j_1
+        %276 = OpAccessChain %_ptr_Private_int %data %275
+        %277 = OpLoad %int %276
+        %278 = OpAccessChain %_ptr_Private_int %temp %274
+               OpStore %278 %277
+               OpBranch %260
+        %260 = OpLabel
+        %279 = OpLoad %int %j_1
+        %280 = OpIAdd %int %279 %int_1
+               OpStore %j_1 %280
+               OpBranch %258
+        %259 = OpLabel
+        %281 = OpFunctionCall %void %mergeSort_
+        %284 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %285 = OpLoad %float %284
+        %286 = OpConvertFToS %int %285
+        %288 = OpSLessThan %bool %286 %int_30
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %291
+        %290 = OpLabel
+        %292 = OpAccessChain %_ptr_Private_int %data %int_0
+        %293 = OpLoad %int %292
+        %295 = OpConvertSToF %float %293
+        %297 = OpFDiv %float %295 %float_10
+        %298 = OpFAdd %float %float_0_5 %297
+               OpStore %grey %298
+               OpBranch %289
+        %291 = OpLabel
+        %299 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %300 = OpLoad %float %299
+        %301 = OpConvertFToS %int %300
+        %303 = OpSLessThan %bool %301 %int_60
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %306
+        %305 = OpLabel
+        %307 = OpAccessChain %_ptr_Private_int %data %int_1
+        %308 = OpLoad %int %307
+        %309 = OpConvertSToF %float %308
+        %310 = OpFDiv %float %309 %float_10
+        %311 = OpFAdd %float %float_0_5 %310
+               OpStore %grey %311
+               OpBranch %304
+        %306 = OpLabel
+        %312 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %313 = OpLoad %float %312
+        %314 = OpConvertFToS %int %313
+        %316 = OpSLessThan %bool %314 %int_90
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %319
+        %318 = OpLabel
+        %320 = OpAccessChain %_ptr_Private_int %data %int_2
+        %321 = OpLoad %int %320
+        %322 = OpConvertSToF %float %321
+        %323 = OpFDiv %float %322 %float_10
+        %324 = OpFAdd %float %float_0_5 %323
+               OpStore %grey %324
+               OpBranch %317
+        %319 = OpLabel
+        %325 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %326 = OpLoad %float %325
+        %327 = OpConvertFToS %int %326
+        %329 = OpSLessThan %bool %327 %int_120
+               OpSelectionMerge %330 None
+               OpBranchConditional %329 %331 %332
+        %331 = OpLabel
+        %333 = OpAccessChain %_ptr_Private_int %data %int_3
+        %334 = OpLoad %int %333
+        %335 = OpConvertSToF %float %334
+        %336 = OpFDiv %float %335 %float_10
+        %337 = OpFAdd %float %float_0_5 %336
+               OpStore %grey %337
+               OpBranch %330
+        %332 = OpLabel
+        %338 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %339 = OpLoad %float %338
+        %340 = OpConvertFToS %int %339
+        %342 = OpSLessThan %bool %340 %int_150
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+               OpKill
+        %345 = OpLabel
+        %346 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %347 = OpLoad %float %346
+        %348 = OpConvertFToS %int %347
+        %350 = OpSLessThan %bool %348 %int_180
+               OpSelectionMerge %351 None
+               OpBranchConditional %350 %352 %353
+        %352 = OpLabel
+        %355 = OpAccessChain %_ptr_Private_int %data %int_5
+        %356 = OpLoad %int %355
+        %357 = OpConvertSToF %float %356
+        %358 = OpFDiv %float %357 %float_10
+        %359 = OpFAdd %float %float_0_5 %358
+               OpStore %grey %359
+               OpBranch %351
+        %353 = OpLabel
+        %360 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %361 = OpLoad %float %360
+        %362 = OpConvertFToS %int %361
+        %364 = OpSLessThan %bool %362 %int_210
+               OpSelectionMerge %365 None
+               OpBranchConditional %364 %366 %367
+        %366 = OpLabel
+        %369 = OpAccessChain %_ptr_Private_int %data %int_6
+        %370 = OpLoad %int %369
+        %371 = OpConvertSToF %float %370
+        %372 = OpFDiv %float %371 %float_10
+        %373 = OpFAdd %float %float_0_5 %372
+               OpStore %grey %373
+               OpBranch %365
+        %367 = OpLabel
+        %374 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %375 = OpLoad %float %374
+        %376 = OpConvertFToS %int %375
+        %378 = OpSLessThan %bool %376 %int_240
+               OpSelectionMerge %379 None
+               OpBranchConditional %378 %380 %381
+        %380 = OpLabel
+        %383 = OpAccessChain %_ptr_Private_int %data %int_7
+        %384 = OpLoad %int %383
+        %385 = OpConvertSToF %float %384
+        %386 = OpFDiv %float %385 %float_10
+        %387 = OpFAdd %float %float_0_5 %386
+               OpStore %grey %387
+               OpBranch %379
+        %381 = OpLabel
+        %388 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %389 = OpLoad %float %388
+               OpStore %guard233 %true
+        %394 = OpConvertFToS %int %389
+        %396 = OpSLessThan %bool %394 %int_270
+               OpSelectionMerge %397 None
+               OpBranchConditional %396 %398 %399
+        %398 = OpLabel
+        %401 = OpAccessChain %_ptr_Private_int %data %int_8
+        %402 = OpLoad %int %401
+        %403 = OpConvertSToF %float %402
+        %404 = OpFDiv %float %403 %float_10
+        %405 = OpFAdd %float %float_0_5 %404
+               OpStore %grey %405
+               OpStore %guard233 %false
+               OpBranch %397
+        %399 = OpLabel
+        %407 = OpLoad %bool %guard233
+               OpSelectionMerge %408 None
+               OpBranchConditional %407 %409 %408
+        %409 = OpLabel
+        %410 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %411 = OpLoad %float %410
+        %414 = OpFOrdLessThan %bool %float_0 %411
+        %412 = OpLogicalNot %bool %414
+               OpSelectionMerge %415 None
+               OpBranchConditional %412 %416 %415
+        %416 = OpLabel
+               OpStore %guard233 %false
+               OpBranch %415
+        %415 = OpLabel
+        %417 = OpLoad %bool %guard233
+               OpSelectionMerge %418 None
+               OpBranchConditional %417 %419 %418
+        %419 = OpLabel
+               OpKill
+        %418 = OpLabel
+               OpBranch %408
+        %408 = OpLabel
+               OpBranch %397
+        %397 = OpLabel
+               OpBranch %379
+        %379 = OpLabel
+               OpBranch %365
+        %365 = OpLabel
+               OpBranch %351
+        %351 = OpLabel
+               OpBranch %343
+        %343 = OpLabel
+               OpBranch %330
+        %330 = OpLabel
+               OpBranch %317
+        %317 = OpLabel
+               OpBranch %304
+        %304 = OpLabel
+               OpBranch %289
+        %289 = OpLabel
+        %420 = OpLoad %float %grey
+        %422 = OpCompositeConstruct %v3float %420 %420 %420
+        %423 = OpCompositeExtract %float %422 0
+        %424 = OpCompositeExtract %float %422 1
+        %425 = OpCompositeExtract %float %422 2
+        %426 = OpCompositeConstruct %v4float %423 %424 %425 %float_1
+               OpStore %x_GLF_color %426
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %427
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %431 = OpLabel
+        %432 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %432
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %434 = OpLabel
+        %435 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %435
+        %436 = OpFunctionCall %void %main_1
+        %438 = OpLoad %v4float %x_GLF_color
+        %439 = OpCompositeConstruct %main_out %438
+        %437 = OpFunctionCall %void %tint_symbol_3 %439
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 209[%209] is not post dominated by the back-edge block 255[%255]
+  %255 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..4e442a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl.expected.wgsl
@@ -0,0 +1,321 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_262 : i32 = *(from);
+  k = x_262;
+  let x_263 : i32 = *(from);
+  i = x_263;
+  let x_264 : i32 = *(mid);
+  j = (x_264 + 1);
+  loop {
+    let x_270 : i32 = i;
+    let x_271 : i32 = *(mid);
+    let x_273 : i32 = j;
+    let x_274 : i32 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    let x_278 : i32 = i;
+    let x_280 : i32 = data[x_278];
+    let x_281 : i32 = j;
+    let x_283 : i32 = data[x_281];
+    if ((x_280 < x_283)) {
+      let x_288 : i32 = k;
+      k = (x_288 + 1);
+      let x_290 : i32 = i;
+      i = (x_290 + 1);
+      let x_293 : i32 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      let x_295 : i32 = k;
+      k = (x_295 + 1);
+      let x_297 : i32 = j;
+      j = (x_297 + 1);
+      let x_300 : i32 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  loop {
+    let x_306 : i32 = i;
+    let x_308 : i32 = i;
+    let x_309 : i32 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    let x_313 : i32 = k;
+    k = (x_313 + 1);
+    let x_315 : i32 = i;
+    i = (x_315 + 1);
+    let x_318 : i32 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  let x_320 : i32 = *(from);
+  i_1 = x_320;
+  loop {
+    let x_325 : i32 = i_1;
+    let x_326 : i32 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    let x_329 : i32 = i_1;
+    let x_330 : i32 = i_1;
+    let x_332 : i32 = temp[x_330];
+    data[x_329] = x_332;
+
+    continuing {
+      let x_334 : i32 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_341 : i32 = m;
+    let x_342 : i32 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    let x_345 : i32 = low;
+    i_2 = x_345;
+    loop {
+      let x_350 : i32 = i_2;
+      let x_351 : i32 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      let x_354 : i32 = i_2;
+      from_1 = x_354;
+      let x_355 : i32 = i_2;
+      let x_356 : i32 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      let x_359 : i32 = i_2;
+      let x_360 : i32 = m;
+      let x_364 : i32 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      let x_366 : i32 = from_1;
+      param = x_366;
+      let x_367 : i32 = mid_1;
+      param_1 = x_367;
+      let x_368 : i32 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_370 : i32 = m;
+        let x_372 : i32 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+
+    continuing {
+      let x_374 : i32 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_86 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_86);
+  loop {
+    let x_92 : i32 = i_3;
+    switch(x_92) {
+      case 9: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -5;
+      }
+      case 8: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -4;
+      }
+      case 7: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -3;
+      }
+      case 6: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -2;
+      }
+      case 5: {
+        let x_114 : i32 = i_3;
+        data[x_114] = -1;
+      }
+      case 4: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 0;
+      }
+      case 3: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 1;
+      }
+      case 2: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 2;
+      }
+      case 1: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 3;
+      }
+      case 0: {
+        let x_104 : i32 = i_3;
+        data[x_104] = 4;
+      }
+      default: {
+      }
+    }
+    let x_124 : i32 = i_3;
+    i_3 = (x_124 + 1);
+
+    continuing {
+      let x_126 : i32 = i_3;
+      if ((x_126 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_132 : i32 = j_1;
+    let x_133 : bool = (x_132 < 10);
+    let x_135 : f32 = x_28.injectionSwitch.x;
+    if (!((x_135 <= 1.0))) {
+      grey = 1.0;
+    }
+    if (x_133) {
+    } else {
+      break;
+    }
+    let x_140 : i32 = j_1;
+    let x_141 : i32 = j_1;
+    let x_143 : i32 = data[x_141];
+    temp[x_140] = x_143;
+
+    continuing {
+      let x_145 : i32 = j_1;
+      j_1 = (x_145 + 1);
+    }
+  }
+  mergeSort_();
+  let x_149 : f32 = gl_FragCoord.y;
+  if ((i32(x_149) < 30)) {
+    let x_156 : i32 = data[0];
+    grey = (0.5 + (f32(x_156) / 10.0));
+  } else {
+    let x_161 : f32 = gl_FragCoord.y;
+    if ((i32(x_161) < 60)) {
+      let x_168 : i32 = data[1];
+      grey = (0.5 + (f32(x_168) / 10.0));
+    } else {
+      let x_173 : f32 = gl_FragCoord.y;
+      if ((i32(x_173) < 90)) {
+        let x_180 : i32 = data[2];
+        grey = (0.5 + (f32(x_180) / 10.0));
+      } else {
+        let x_185 : f32 = gl_FragCoord.y;
+        if ((i32(x_185) < 120)) {
+          let x_192 : i32 = data[3];
+          grey = (0.5 + (f32(x_192) / 10.0));
+        } else {
+          let x_197 : f32 = gl_FragCoord.y;
+          if ((i32(x_197) < 150)) {
+            discard;
+          } else {
+            let x_204 : f32 = gl_FragCoord.y;
+            if ((i32(x_204) < 180)) {
+              let x_211 : i32 = data[5];
+              grey = (0.5 + (f32(x_211) / 10.0));
+            } else {
+              let x_216 : f32 = gl_FragCoord.y;
+              if ((i32(x_216) < 210)) {
+                let x_223 : i32 = data[6];
+                grey = (0.5 + (f32(x_223) / 10.0));
+              } else {
+                let x_228 : f32 = gl_FragCoord.y;
+                if ((i32(x_228) < 240)) {
+                  let x_235 : i32 = data[7];
+                  grey = (0.5 + (f32(x_235) / 10.0));
+                } else {
+                  let x_240 : f32 = gl_FragCoord.y;
+                  var guard233 : bool = true;
+                  if ((i32(x_240) < 270)) {
+                    let x_247 : i32 = data[8];
+                    grey = (0.5 + (f32(x_247) / 10.0));
+                    guard233 = false;
+                  } else {
+                    if (guard233) {
+                      let x_252 : f32 = x_28.injectionSwitch.y;
+                      if (!((0.0 < x_252))) {
+                        guard233 = false;
+                      }
+                      if (guard233) {
+                        discard;
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_255 : f32 = grey;
+  let x_256 : vec3<f32> = vec3<f32>(x_255, x_255, x_255);
+  x_GLF_color = vec4<f32>(x_256.x, x_256.y, x_256.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm
new file mode 100644
index 0000000..2f1327c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm
@@ -0,0 +1,688 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+    %int_0_0 = OpConstant %int 0
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+       %main = OpFunction %void None %32
+         %86 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %87 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpConvertFToS %int %88
+               OpStore %i_2 %89
+               OpBranch %90
+         %90 = OpLabel
+               OpLoopMerge %91 %92 None
+               OpBranch %93
+         %93 = OpLabel
+         %94 = OpLoad %int %i_2
+               OpSelectionMerge %95 None
+               OpSwitch %94 %95 0 %96 1 %97 2 %98 3 %99 4 %100 5 %101 6 %102 7 %103 8 %104 9 %105
+         %96 = OpLabel
+        %106 = OpLoad %int %i_2
+        %107 = OpAccessChain %_ptr_Private_int %data %106
+               OpStore %107 %int_4
+               OpBranch %95
+         %97 = OpLabel
+        %108 = OpLoad %int %i_2
+        %109 = OpAccessChain %_ptr_Private_int %data %108
+               OpStore %109 %int_3
+               OpBranch %95
+         %98 = OpLabel
+        %110 = OpLoad %int %i_2
+        %111 = OpAccessChain %_ptr_Private_int %data %110
+               OpStore %111 %int_2
+               OpBranch %95
+         %99 = OpLabel
+        %112 = OpLoad %int %i_2
+        %113 = OpAccessChain %_ptr_Private_int %data %112
+               OpStore %113 %int_1
+               OpBranch %95
+        %100 = OpLabel
+        %114 = OpLoad %int %i_2
+        %115 = OpAccessChain %_ptr_Private_int %data %114
+               OpStore %115 %int_0
+               OpBranch %95
+        %101 = OpLabel
+        %116 = OpLoad %int %i_2
+        %117 = OpAccessChain %_ptr_Private_int %data %116
+               OpStore %117 %int_n1
+               OpBranch %95
+        %102 = OpLabel
+        %118 = OpLoad %int %i_2
+        %119 = OpAccessChain %_ptr_Private_int %data %118
+               OpStore %119 %int_n2
+               OpBranch %95
+        %103 = OpLabel
+        %120 = OpLoad %int %i_2
+        %121 = OpAccessChain %_ptr_Private_int %data %120
+               OpStore %121 %int_n3
+               OpBranch %95
+        %104 = OpLabel
+        %122 = OpLoad %int %i_2
+        %123 = OpAccessChain %_ptr_Private_int %data %122
+               OpStore %123 %int_n4
+               OpBranch %95
+        %105 = OpLabel
+        %124 = OpLoad %int %i_2
+        %125 = OpAccessChain %_ptr_Private_int %data %124
+               OpStore %125 %int_n5
+               OpBranch %95
+         %95 = OpLabel
+        %126 = OpLoad %int %i_2
+        %127 = OpIAdd %int %126 %int_1
+               OpStore %i_2 %127
+               OpBranch %92
+         %92 = OpLabel
+        %128 = OpLoad %int %i_2
+        %129 = OpSLessThan %bool %128 %int_10
+               OpBranchConditional %129 %90 %91
+         %91 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %130
+        %130 = OpLabel
+               OpLoopMerge %131 %132 None
+               OpBranch %133
+        %133 = OpLabel
+        %134 = OpLoad %int %j_0
+        %135 = OpSLessThan %bool %134 %int_10
+               OpBranchConditional %135 %136 %131
+        %136 = OpLabel
+        %137 = OpLoad %int %j_0
+        %138 = OpLoad %int %j_0
+        %139 = OpAccessChain %_ptr_Private_int %data %138
+        %140 = OpLoad %int %139
+        %141 = OpAccessChain %_ptr_Private_int %temp %137
+               OpStore %141 %140
+               OpBranch %132
+        %132 = OpLabel
+        %142 = OpLoad %int %j_0
+        %143 = OpIAdd %int %142 %int_1
+               OpStore %j_0 %143
+               OpBranch %130
+        %131 = OpLabel
+        %144 = OpFunctionCall %void %mergeSort_
+        %145 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %146 = OpLoad %float %145
+        %147 = OpConvertFToS %int %146
+        %148 = OpSLessThan %bool %147 %int_30
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %151
+        %150 = OpLabel
+        %152 = OpAccessChain %_ptr_Private_int %data %int_0
+        %153 = OpLoad %int %152
+        %154 = OpConvertSToF %float %153
+        %155 = OpFDiv %float %154 %float_10
+        %156 = OpFAdd %float %float_0_5 %155
+               OpStore %grey %156
+               OpBranch %149
+        %151 = OpLabel
+        %157 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %158 = OpLoad %float %157
+        %159 = OpConvertFToS %int %158
+        %160 = OpSLessThan %bool %159 %int_60
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+        %164 = OpAccessChain %_ptr_Private_int %data %int_1
+        %165 = OpLoad %int %164
+        %166 = OpConvertSToF %float %165
+        %167 = OpFDiv %float %166 %float_10
+        %168 = OpFAdd %float %float_0_5 %167
+               OpStore %grey %168
+               OpBranch %161
+        %163 = OpLabel
+        %169 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %170 = OpLoad %float %169
+        %171 = OpConvertFToS %int %170
+        %172 = OpSLessThan %bool %171 %int_90
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %175
+        %174 = OpLabel
+        %176 = OpAccessChain %_ptr_Private_int %data %int_2
+        %177 = OpLoad %int %176
+        %178 = OpConvertSToF %float %177
+        %179 = OpFDiv %float %178 %float_10
+        %180 = OpFAdd %float %float_0_5 %179
+               OpStore %grey %180
+               OpBranch %173
+        %175 = OpLabel
+        %181 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %182 = OpLoad %float %181
+        %183 = OpConvertFToS %int %182
+        %184 = OpSLessThan %bool %183 %int_120
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %187
+        %186 = OpLabel
+        %188 = OpAccessChain %_ptr_Private_int %data %int_3
+        %189 = OpLoad %int %188
+        %190 = OpConvertSToF %float %189
+        %191 = OpFDiv %float %190 %float_10
+        %192 = OpFAdd %float %float_0_5 %191
+               OpStore %grey %192
+               OpBranch %185
+        %187 = OpLabel
+        %193 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %194 = OpLoad %float %193
+        %195 = OpConvertFToS %int %194
+        %196 = OpSLessThan %bool %195 %int_150
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %199
+        %198 = OpLabel
+               OpKill
+        %199 = OpLabel
+        %200 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %201 = OpLoad %float %200
+        %202 = OpConvertFToS %int %201
+        %203 = OpSLessThan %bool %202 %int_180
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %205 = OpLabel
+        %207 = OpAccessChain %_ptr_Private_int %data %int_5
+        %208 = OpLoad %int %207
+        %209 = OpConvertSToF %float %208
+        %210 = OpFDiv %float %209 %float_10
+        %211 = OpFAdd %float %float_0_5 %210
+               OpStore %grey %211
+               OpBranch %204
+        %206 = OpLabel
+        %212 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %213 = OpLoad %float %212
+        %214 = OpConvertFToS %int %213
+        %215 = OpSLessThan %bool %214 %int_210
+               OpSelectionMerge %216 None
+               OpBranchConditional %215 %217 %218
+        %217 = OpLabel
+        %219 = OpAccessChain %_ptr_Private_int %data %int_6
+        %220 = OpLoad %int %219
+        %221 = OpConvertSToF %float %220
+        %222 = OpFDiv %float %221 %float_10
+        %223 = OpFAdd %float %float_0_5 %222
+               OpStore %grey %223
+               OpBranch %216
+        %218 = OpLabel
+        %224 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %225 = OpLoad %float %224
+        %226 = OpConvertFToS %int %225
+        %227 = OpSLessThan %bool %226 %int_240
+               OpSelectionMerge %228 None
+               OpBranchConditional %227 %229 %230
+        %229 = OpLabel
+        %231 = OpAccessChain %_ptr_Private_int %data %int_7
+        %232 = OpLoad %int %231
+        %233 = OpConvertSToF %float %232
+        %234 = OpFDiv %float %233 %float_10
+        %235 = OpFAdd %float %float_0_5 %234
+               OpStore %grey %235
+               OpBranch %228
+        %230 = OpLabel
+        %236 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %237 = OpLoad %float %236
+        %238 = OpConvertFToS %int %237
+        %239 = OpSLessThan %bool %238 %int_270
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %242
+        %241 = OpLabel
+        %243 = OpAccessChain %_ptr_Private_int %data %int_8
+        %244 = OpLoad %int %243
+        %245 = OpConvertSToF %float %244
+        %246 = OpFDiv %float %245 %float_10
+        %247 = OpFAdd %float %float_0_5 %246
+               OpStore %grey %247
+               OpBranch %240
+        %242 = OpLabel
+               OpKill
+        %240 = OpLabel
+               OpBranch %228
+        %228 = OpLabel
+               OpBranch %216
+        %216 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+               OpBranch %197
+        %197 = OpLabel
+               OpBranch %185
+        %185 = OpLabel
+               OpBranch %173
+        %173 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %248 = OpLoad %float %grey
+        %249 = OpCompositeConstruct %v3float %248 %248 %248
+        %250 = OpCompositeExtract %float %249 0
+        %251 = OpCompositeExtract %float %249 1
+        %252 = OpCompositeExtract %float %249 2
+        %253 = OpCompositeConstruct %v4float %250 %251 %252 %float_1
+               OpStore %_GLF_color %253
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %35
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %254 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %255 = OpLoad %int %from
+               OpStore %k %255
+        %256 = OpLoad %int %from
+               OpStore %i %256
+        %257 = OpLoad %int %mid
+        %258 = OpIAdd %int %257 %int_1
+               OpStore %j %258
+               OpBranch %259
+        %259 = OpLabel
+        %260 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %261 = OpLoad %float %260
+        %262 = OpFOrdGreaterThanEqual %bool %float_1 %261
+               OpLoopMerge %263 %264 None
+               OpBranchConditional %262 %265 %264
+        %265 = OpLabel
+        %266 = OpLoad %int %i
+        %267 = OpLoad %int %mid
+        %268 = OpSLessThanEqual %bool %266 %267
+        %269 = OpLoad %int %j
+        %270 = OpLoad %int %to
+        %271 = OpSLessThanEqual %bool %269 %270
+        %272 = OpLogicalAnd %bool %268 %271
+               OpBranchConditional %272 %273 %263
+        %273 = OpLabel
+        %274 = OpLoad %int %i
+        %275 = OpAccessChain %_ptr_Private_int %data %274
+        %276 = OpLoad %int %275
+        %277 = OpLoad %int %j
+        %278 = OpAccessChain %_ptr_Private_int %data %277
+        %279 = OpLoad %int %278
+        %280 = OpSLessThan %bool %276 %279
+               OpBranch %281
+        %281 = OpLabel
+               OpSelectionMerge %282 None
+               OpBranchConditional %280 %283 %284
+        %283 = OpLabel
+        %285 = OpLoad %int %k
+               OpBranch %282
+        %284 = OpLabel
+        %286 = OpCopyObject %int %int_0_0
+               OpBranch %282
+        %282 = OpLabel
+        %287 = OpPhi %int %285 %283 %286 %284
+        %288 = OpIAdd %int %287 %int_1
+               OpBranch %289
+        %289 = OpLabel
+               OpSelectionMerge %290 None
+               OpBranchConditional %280 %291 %290
+        %291 = OpLabel
+               OpStore %k %288
+        %292 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %293 = OpLoad %float %292
+        %294 = OpFUnordGreaterThan %bool %float_1 %293
+               OpBranchConditional %294 %290 %264
+        %290 = OpLabel
+               OpBranch %295
+        %295 = OpLabel
+        %296 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %297 = OpLoad %float %296
+        %298 = OpFOrdGreaterThanEqual %bool %297 %float_0
+               OpBranchConditional %298 %299 %264
+        %299 = OpLabel
+        %300 = OpCopyObject %int %int_0_0
+               OpBranch %301
+        %301 = OpLabel
+               OpSelectionMerge %302 None
+               OpBranchConditional %280 %303 %304
+        %303 = OpLabel
+        %305 = OpLoad %int %i
+               OpBranch %302
+        %304 = OpLabel
+        %306 = OpCopyObject %int %int_0_0
+               OpBranch %302
+        %302 = OpLabel
+        %307 = OpPhi %int %305 %303 %306 %304
+               OpBranch %308
+        %308 = OpLabel
+        %309 = OpSelect %int %280 %307 %300
+        %310 = OpIAdd %int %309 %int_1
+               OpSelectionMerge %311 None
+               OpBranchConditional %280 %312 %311
+        %312 = OpLabel
+               OpStore %i %310
+               OpBranch %311
+        %311 = OpLabel
+        %313 = OpAccessChain %_ptr_Private_int %data %309
+               OpBranch %314
+        %314 = OpLabel
+        %315 = OpCopyObject %int %int_0_0
+               OpBranch %316
+        %316 = OpLabel
+               OpSelectionMerge %317 None
+               OpBranchConditional %280 %318 %319
+        %318 = OpLabel
+        %320 = OpLoad %int %313
+        %321 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %322 = OpLoad %float %321
+        %323 = OpFUnordGreaterThan %bool %float_0 %322
+               OpBranchConditional %323 %264 %317
+        %319 = OpLabel
+        %324 = OpCopyObject %int %int_0_0
+        %325 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %326 = OpLoad %float %325
+        %327 = OpFUnordGreaterThanEqual %bool %326 %float_0
+               OpBranchConditional %327 %317 %264
+        %317 = OpLabel
+        %328 = OpPhi %int %320 %318 %324 %319
+               OpBranch %329
+        %329 = OpLabel
+        %330 = OpSelect %int %280 %328 %315
+        %331 = OpAccessChain %_ptr_Private_int %temp %287
+               OpSelectionMerge %332 None
+               OpBranchConditional %280 %333 %332
+        %333 = OpLabel
+               OpStore %331 %330
+               OpBranch %332
+        %332 = OpLabel
+               OpBranch %334
+        %334 = OpLabel
+               OpSelectionMerge %335 None
+               OpBranchConditional %280 %336 %337
+        %337 = OpLabel
+        %338 = OpLoad %int %k
+               OpBranch %335
+        %336 = OpLabel
+        %339 = OpCopyObject %int %int_0_0
+               OpBranch %335
+        %335 = OpLabel
+        %340 = OpPhi %int %338 %337 %339 %336
+        %341 = OpIAdd %int %340 %int_1
+               OpSelectionMerge %342 None
+               OpBranchConditional %280 %342 %343
+        %343 = OpLabel
+               OpStore %k %341
+               OpBranch %342
+        %342 = OpLabel
+        %344 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %345 = OpLoad %float %344
+        %346 = OpFUnordGreaterThan %bool %float_1 %345
+               OpBranchConditional %346 %347 %264
+        %347 = OpLabel
+               OpSelectionMerge %348 None
+               OpBranchConditional %280 %349 %350
+        %350 = OpLabel
+        %351 = OpLoad %int %j
+               OpBranch %348
+        %349 = OpLabel
+        %352 = OpCopyObject %int %int_0_0
+               OpBranch %348
+        %348 = OpLabel
+        %353 = OpPhi %int %351 %350 %352 %349
+               OpBranch %354
+        %354 = OpLabel
+        %355 = OpCopyObject %int %int_0_0
+               OpBranch %356
+        %356 = OpLabel
+        %357 = OpSelect %int %280 %355 %353
+        %358 = OpIAdd %int %357 %int_1
+               OpSelectionMerge %359 None
+               OpBranchConditional %280 %359 %360
+        %360 = OpLabel
+               OpStore %j %358
+               OpBranch %359
+        %359 = OpLabel
+        %361 = OpAccessChain %_ptr_Private_int %data %357
+               OpSelectionMerge %362 None
+               OpBranchConditional %280 %363 %364
+        %364 = OpLabel
+        %365 = OpLoad %int %361
+               OpBranch %362
+        %363 = OpLabel
+        %366 = OpCopyObject %int %int_0_0
+               OpBranch %362
+        %362 = OpLabel
+        %367 = OpPhi %int %365 %364 %366 %363
+        %368 = OpAccessChain %_ptr_Private_int %temp %340
+               OpSelectionMerge %369 None
+               OpBranchConditional %280 %369 %370
+        %370 = OpLabel
+               OpStore %368 %367
+               OpBranch %369
+        %369 = OpLabel
+               OpBranch %371
+        %371 = OpLabel
+               OpBranch %264
+        %264 = OpLabel
+               OpBranch %259
+        %263 = OpLabel
+               OpBranch %372
+        %372 = OpLabel
+               OpLoopMerge %373 %374 None
+               OpBranch %375
+        %375 = OpLabel
+        %376 = OpLoad %int %i
+        %377 = OpSLessThan %bool %376 %int_10
+        %378 = OpLoad %int %i
+        %379 = OpLoad %int %mid
+        %380 = OpSLessThanEqual %bool %378 %379
+        %381 = OpLogicalAnd %bool %377 %380
+               OpBranchConditional %381 %382 %373
+        %382 = OpLabel
+        %383 = OpLoad %int %k
+        %384 = OpIAdd %int %383 %int_1
+               OpStore %k %384
+        %385 = OpLoad %int %i
+        %386 = OpIAdd %int %385 %int_1
+               OpStore %i %386
+        %387 = OpAccessChain %_ptr_Private_int %data %385
+        %388 = OpLoad %int %387
+        %389 = OpAccessChain %_ptr_Private_int %temp %383
+               OpStore %389 %388
+               OpBranch %374
+        %374 = OpLabel
+               OpBranch %372
+        %373 = OpLabel
+        %390 = OpLoad %int %from
+               OpStore %i_0 %390
+               OpBranch %391
+        %391 = OpLabel
+               OpLoopMerge %392 %393 None
+               OpBranch %394
+        %394 = OpLabel
+        %395 = OpLoad %int %i_0
+        %396 = OpLoad %int %to
+        %397 = OpSLessThanEqual %bool %395 %396
+               OpBranchConditional %397 %398 %392
+        %398 = OpLabel
+        %399 = OpLoad %int %i_0
+        %400 = OpLoad %int %i_0
+        %401 = OpAccessChain %_ptr_Private_int %temp %400
+        %402 = OpLoad %int %401
+        %403 = OpAccessChain %_ptr_Private_int %data %399
+               OpStore %403 %402
+               OpBranch %393
+        %393 = OpLabel
+        %404 = OpLoad %int %i_0
+        %405 = OpIAdd %int %404 %int_1
+               OpStore %i_0 %405
+               OpBranch %391
+        %392 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %32
+        %406 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %407
+        %407 = OpLabel
+               OpLoopMerge %408 %409 None
+               OpBranch %410
+        %410 = OpLabel
+        %411 = OpLoad %int %m
+        %412 = OpLoad %int %high
+        %413 = OpSLessThanEqual %bool %411 %412
+               OpBranchConditional %413 %414 %408
+        %414 = OpLabel
+        %415 = OpLoad %int %low
+               OpStore %i_1 %415
+               OpBranch %416
+        %416 = OpLabel
+               OpLoopMerge %417 %418 None
+               OpBranch %419
+        %419 = OpLabel
+        %420 = OpLoad %int %i_1
+        %421 = OpLoad %int %high
+        %422 = OpSLessThan %bool %420 %421
+               OpBranchConditional %422 %423 %417
+        %423 = OpLabel
+        %424 = OpLoad %int %i_1
+               OpStore %from_0 %424
+        %425 = OpLoad %int %i_1
+        %426 = OpLoad %int %m
+        %427 = OpIAdd %int %425 %426
+        %428 = OpISub %int %427 %int_1
+               OpStore %mid_0 %428
+        %429 = OpLoad %int %i_1
+        %430 = OpLoad %int %m
+        %431 = OpIMul %int %int_2 %430
+        %432 = OpIAdd %int %429 %431
+        %433 = OpISub %int %432 %int_1
+        %434 = OpLoad %int %high
+        %435 = OpExtInst %int %1 SMin %433 %434
+               OpStore %to_0 %435
+        %436 = OpLoad %int %from_0
+               OpStore %param %436
+        %437 = OpLoad %int %mid_0
+               OpStore %param_0 %437
+        %438 = OpLoad %int %to_0
+               OpStore %param_1 %438
+        %439 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %418
+        %418 = OpLabel
+        %440 = OpLoad %int %m
+        %441 = OpIMul %int %int_2 %440
+        %442 = OpLoad %int %i_1
+        %443 = OpIAdd %int %442 %441
+               OpStore %i_1 %443
+               OpBranch %416
+        %417 = OpLabel
+               OpBranch %409
+        %409 = OpLabel
+        %444 = OpLoad %int %m
+        %445 = OpIMul %int %int_2 %444
+               OpStore %m %445
+               OpBranch %407
+        %408 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..5cccfe9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.hlsl
@@ -0,0 +1,373 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_255 = from;
+  k = x_255;
+  const int x_256 = from;
+  i = x_256;
+  const int x_257 = mid;
+  j = (x_257 + 1);
+  while (true) {
+    int x_285 = 0;
+    int x_286 = 0;
+    int x_305 = 0;
+    int x_306 = 0;
+    int x_320 = 0;
+    int x_324 = 0;
+    int x_339 = 0;
+    int x_338 = 0;
+    int x_352 = 0;
+    int x_351 = 0;
+    int x_366 = 0;
+    int x_365 = 0;
+    int x_287_phi = 0;
+    int x_307_phi = 0;
+    int x_328_phi = 0;
+    int x_340_phi = 0;
+    int x_353_phi = 0;
+    int x_367_phi = 0;
+    const float x_261 = asfloat(x_28[0].x);
+    if ((1.0f >= x_261)) {
+    } else {
+      continue;
+    }
+    const int x_266 = i;
+    const int x_267 = mid;
+    const int x_269 = j;
+    const int x_270 = to;
+    bool tint_tmp = (x_266 <= x_267);
+    if (tint_tmp) {
+      tint_tmp = (x_269 <= x_270);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_276 = data[i];
+    const int x_279 = data[j];
+    const bool x_280 = (x_276 < x_279);
+    if (x_280) {
+      x_285 = k;
+      x_287_phi = x_285;
+    } else {
+      x_286 = 0;
+      x_287_phi = x_286;
+    }
+    const int x_287 = x_287_phi;
+    const int x_288 = (x_287 + 1);
+    if (x_280) {
+      k = x_288;
+      const float x_293 = asfloat(x_28[0].x);
+      if (!((1.0f <= x_293))) {
+      } else {
+        continue;
+      }
+    }
+    const float x_297 = asfloat(x_28[0].y);
+    if ((x_297 >= 0.0f)) {
+    } else {
+      continue;
+    }
+    const int x_300 = 0;
+    if (x_280) {
+      x_305 = i;
+      x_307_phi = x_305;
+    } else {
+      x_306 = 0;
+      x_307_phi = x_306;
+    }
+    const int x_309 = (x_280 ? x_307_phi : x_300);
+    if (x_280) {
+      i = (x_309 + 1);
+    }
+    const int x_315 = 0;
+    if (x_280) {
+      x_320 = data[x_309];
+      const float x_322 = asfloat(x_28[0].y);
+      x_328_phi = x_320;
+      if (!((0.0f <= x_322))) {
+        continue;
+      }
+    } else {
+      x_324 = 0;
+      const float x_326 = asfloat(x_28[0].y);
+      x_328_phi = x_324;
+      if (!((x_326 < 0.0f))) {
+      } else {
+        continue;
+      }
+    }
+    const int x_328 = x_328_phi;
+    if (x_280) {
+      temp[x_287] = (x_280 ? x_328 : x_315);
+    }
+    if (x_280) {
+      x_339 = 0;
+      x_340_phi = x_339;
+    } else {
+      x_338 = k;
+      x_340_phi = x_338;
+    }
+    const int x_340 = x_340_phi;
+    if (x_280) {
+    } else {
+      k = (x_340 + 1);
+    }
+    const float x_345 = asfloat(x_28[0].x);
+    if (!((1.0f <= x_345))) {
+    } else {
+      continue;
+    }
+    if (x_280) {
+      x_352 = 0;
+      x_353_phi = x_352;
+    } else {
+      x_351 = j;
+      x_353_phi = x_351;
+    }
+    const int x_357 = (x_280 ? 0 : x_353_phi);
+    if (x_280) {
+    } else {
+      j = (x_357 + 1);
+    }
+    if (x_280) {
+      x_366 = 0;
+      x_367_phi = x_366;
+    } else {
+      x_365 = data[x_357];
+      x_367_phi = x_365;
+    }
+    const int x_367 = x_367_phi;
+    if (x_280) {
+    } else {
+      temp[x_340] = x_367;
+    }
+  }
+  while (true) {
+    const int x_376 = i;
+    const int x_378 = i;
+    const int x_379 = mid;
+    bool tint_tmp_1 = (x_376 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_378 <= x_379);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_383 = k;
+    k = (x_383 + 1);
+    const int x_385 = i;
+    i = (x_385 + 1);
+    const int x_388 = data[x_385];
+    temp[x_383] = x_388;
+  }
+  const int x_390 = from;
+  i_1 = x_390;
+  while (true) {
+    const int x_395 = i_1;
+    const int x_396 = to;
+    if ((x_395 <= x_396)) {
+    } else {
+      break;
+    }
+    const int x_399 = i_1;
+    const int x_402 = temp[i_1];
+    data[x_399] = x_402;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_88 = asfloat(x_28[0].x);
+  i_3 = int(x_88);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_137 = j_1;
+      const int x_140 = data[j_1];
+      temp[x_137] = x_140;
+    }
+  }
+  mergeSort_();
+  const float x_146 = gl_FragCoord.y;
+  if ((int(x_146) < 30)) {
+    const int x_153 = data[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    const float x_158 = gl_FragCoord.y;
+    if ((int(x_158) < 60)) {
+      const int x_165 = data[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      const float x_170 = gl_FragCoord.y;
+      if ((int(x_170) < 90)) {
+        const int x_177 = data[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        const float x_182 = gl_FragCoord.y;
+        if ((int(x_182) < 120)) {
+          const int x_189 = data[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          const float x_194 = gl_FragCoord.y;
+          if ((int(x_194) < 150)) {
+            discard;
+          } else {
+            const float x_201 = gl_FragCoord.y;
+            if ((int(x_201) < 180)) {
+              const int x_208 = data[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              const float x_213 = gl_FragCoord.y;
+              if ((int(x_213) < 210)) {
+                const int x_220 = data[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                const float x_225 = gl_FragCoord.y;
+                if ((int(x_225) < 240)) {
+                  const int x_232 = data[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  const float x_237 = gl_FragCoord.y;
+                  if ((int(x_237) < 270)) {
+                    const int x_244 = data[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_248 = grey;
+  const float3 x_249 = float3(x_248, x_248, x_248);
+  x_GLF_color = float4(x_249.x, x_249.y, x_249.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.msl
new file mode 100644
index 0000000..a023050
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.msl
@@ -0,0 +1,422 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(constant buf0& x_28, thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_255 = *(from);
+  k = x_255;
+  int const x_256 = *(from);
+  i = x_256;
+  int const x_257 = *(mid);
+  j = (x_257 + 1);
+  while (true) {
+    int x_285 = 0;
+    int x_286 = 0;
+    int x_305 = 0;
+    int x_306 = 0;
+    int x_320 = 0;
+    int x_324 = 0;
+    int x_339 = 0;
+    int x_338 = 0;
+    int x_352 = 0;
+    int x_351 = 0;
+    int x_366 = 0;
+    int x_365 = 0;
+    int x_287_phi = 0;
+    int x_307_phi = 0;
+    int x_328_phi = 0;
+    int x_340_phi = 0;
+    int x_353_phi = 0;
+    int x_367_phi = 0;
+    float const x_261 = x_28.injectionSwitch.x;
+    if ((1.0f >= x_261)) {
+    } else {
+      continue;
+    }
+    int const x_266 = i;
+    int const x_267 = *(mid);
+    int const x_269 = j;
+    int const x_270 = *(to);
+    if (((x_266 <= x_267) && (x_269 <= x_270))) {
+    } else {
+      break;
+    }
+    int const x_274 = i;
+    int const x_276 = (*(tint_symbol_5)).arr[x_274];
+    int const x_277 = j;
+    int const x_279 = (*(tint_symbol_5)).arr[x_277];
+    bool const x_280 = (x_276 < x_279);
+    if (x_280) {
+      x_285 = k;
+      x_287_phi = x_285;
+    } else {
+      x_286 = 0;
+      x_287_phi = x_286;
+    }
+    int const x_287 = x_287_phi;
+    int const x_288 = (x_287 + 1);
+    if (x_280) {
+      k = x_288;
+      float const x_293 = x_28.injectionSwitch.x;
+      if (!((1.0f <= x_293))) {
+      } else {
+        continue;
+      }
+    }
+    float const x_297 = x_28.injectionSwitch.y;
+    if ((x_297 >= 0.0f)) {
+    } else {
+      continue;
+    }
+    int const x_300 = 0;
+    if (x_280) {
+      x_305 = i;
+      x_307_phi = x_305;
+    } else {
+      x_306 = 0;
+      x_307_phi = x_306;
+    }
+    int const x_307 = x_307_phi;
+    int const x_309 = select(x_300, x_307, x_280);
+    if (x_280) {
+      i = (x_309 + 1);
+    }
+    int const x_315 = 0;
+    if (x_280) {
+      x_320 = (*(tint_symbol_5)).arr[x_309];
+      float const x_322 = x_28.injectionSwitch.y;
+      x_328_phi = x_320;
+      if (!((0.0f <= x_322))) {
+        continue;
+      }
+    } else {
+      x_324 = 0;
+      float const x_326 = x_28.injectionSwitch.y;
+      x_328_phi = x_324;
+      if (!((x_326 < 0.0f))) {
+      } else {
+        continue;
+      }
+    }
+    int const x_328 = x_328_phi;
+    if (x_280) {
+      (*(tint_symbol_6)).arr[x_287] = select(x_315, x_328, x_280);
+    }
+    if (x_280) {
+      x_339 = 0;
+      x_340_phi = x_339;
+    } else {
+      x_338 = k;
+      x_340_phi = x_338;
+    }
+    int const x_340 = x_340_phi;
+    if (x_280) {
+    } else {
+      k = (x_340 + 1);
+    }
+    float const x_345 = x_28.injectionSwitch.x;
+    if (!((1.0f <= x_345))) {
+    } else {
+      continue;
+    }
+    if (x_280) {
+      x_352 = 0;
+      x_353_phi = x_352;
+    } else {
+      x_351 = j;
+      x_353_phi = x_351;
+    }
+    int const x_353 = x_353_phi;
+    int const x_355 = 0;
+    int const x_357 = select(x_353, x_355, x_280);
+    if (x_280) {
+    } else {
+      j = (x_357 + 1);
+    }
+    if (x_280) {
+      x_366 = 0;
+      x_367_phi = x_366;
+    } else {
+      x_365 = (*(tint_symbol_5)).arr[x_357];
+      x_367_phi = x_365;
+    }
+    int const x_367 = x_367_phi;
+    if (x_280) {
+    } else {
+      (*(tint_symbol_6)).arr[x_340] = x_367;
+    }
+  }
+  while (true) {
+    int const x_376 = i;
+    int const x_378 = i;
+    int const x_379 = *(mid);
+    if (((x_376 < 10) && (x_378 <= x_379))) {
+    } else {
+      break;
+    }
+    int const x_383 = k;
+    k = (x_383 + 1);
+    int const x_385 = i;
+    i = (x_385 + 1);
+    int const x_388 = (*(tint_symbol_5)).arr[x_385];
+    (*(tint_symbol_6)).arr[x_383] = x_388;
+  }
+  int const x_390 = *(from);
+  i_1 = x_390;
+  while (true) {
+    int const x_395 = i_1;
+    int const x_396 = *(to);
+    if ((x_395 <= x_396)) {
+    } else {
+      break;
+    }
+    int const x_399 = i_1;
+    int const x_400 = i_1;
+    int const x_402 = (*(tint_symbol_6)).arr[x_400];
+    (*(tint_symbol_5)).arr[x_399] = x_402;
+    {
+      int const x_404 = i_1;
+      i_1 = (x_404 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_411 = m;
+    int const x_412 = high;
+    if ((x_411 <= x_412)) {
+    } else {
+      break;
+    }
+    int const x_415 = low;
+    i_2 = x_415;
+    while (true) {
+      int const x_420 = i_2;
+      int const x_421 = high;
+      if ((x_420 < x_421)) {
+      } else {
+        break;
+      }
+      int const x_424 = i_2;
+      from_1 = x_424;
+      int const x_425 = i_2;
+      int const x_426 = m;
+      mid_1 = ((x_425 + x_426) - 1);
+      int const x_429 = i_2;
+      int const x_430 = m;
+      int const x_434 = high;
+      to_1 = min(((x_429 + (2 * x_430)) - 1), x_434);
+      int const x_436 = from_1;
+      param = x_436;
+      int const x_437 = mid_1;
+      param_1 = x_437;
+      int const x_438 = to_1;
+      param_2 = x_438;
+      merge_i1_i1_i1_(x_28, &(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_440 = m;
+        int const x_442 = i_2;
+        i_2 = (x_442 + (2 * x_440));
+      }
+    }
+    {
+      int const x_444 = m;
+      m = (2 * x_444);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_88 = x_28.injectionSwitch.x;
+  i_3 = int(x_88);
+  while (true) {
+    int const x_94 = i_3;
+    switch(x_94) {
+      case 9: {
+        int const x_124 = i_3;
+        (*(tint_symbol_9)).arr[x_124] = -5;
+        break;
+      }
+      case 8: {
+        int const x_122 = i_3;
+        (*(tint_symbol_9)).arr[x_122] = -4;
+        break;
+      }
+      case 7: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -3;
+        break;
+      }
+      case 6: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -2;
+        break;
+      }
+      case 5: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -1;
+        break;
+      }
+      case 4: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = 0;
+        break;
+      }
+      case 3: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = 1;
+        break;
+      }
+      case 2: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 2;
+        break;
+      }
+      case 1: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 3;
+        break;
+      }
+      case 0: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_126 = i_3;
+    i_3 = (x_126 + 1);
+    {
+      int const x_128 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_134 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    int const x_137 = j_1;
+    int const x_138 = j_1;
+    int const x_140 = (*(tint_symbol_9)).arr[x_138];
+    (*(tint_symbol_10)).arr[x_137] = x_140;
+    {
+      int const x_142 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_(x_28, tint_symbol_9, tint_symbol_10);
+  float const x_146 = (*(tint_symbol_11)).y;
+  if ((int(x_146) < 30)) {
+    int const x_153 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    float const x_158 = (*(tint_symbol_11)).y;
+    if ((int(x_158) < 60)) {
+      int const x_165 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      float const x_170 = (*(tint_symbol_11)).y;
+      if ((int(x_170) < 90)) {
+        int const x_177 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        float const x_182 = (*(tint_symbol_11)).y;
+        if ((int(x_182) < 120)) {
+          int const x_189 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          float const x_194 = (*(tint_symbol_11)).y;
+          if ((int(x_194) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_201 = (*(tint_symbol_11)).y;
+            if ((int(x_201) < 180)) {
+              int const x_208 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              float const x_213 = (*(tint_symbol_11)).y;
+              if ((int(x_213) < 210)) {
+                int const x_220 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                float const x_225 = (*(tint_symbol_11)).y;
+                if ((int(x_225) < 240)) {
+                  int const x_232 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  float const x_237 = (*(tint_symbol_11)).y;
+                  if ((int(x_237) < 270)) {
+                    int const x_244 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_248 = grey;
+  float3 const x_249 = float3(x_248, x_248, x_248);
+  *(tint_symbol_12) = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..aa67796
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.spvasm
@@ -0,0 +1,864 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 525
+; Schema: 0
+               OpCapability Shader
+        %290 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %x_285 "x_285"
+               OpName %x_286 "x_286"
+               OpName %x_305 "x_305"
+               OpName %x_306 "x_306"
+               OpName %x_320 "x_320"
+               OpName %x_324 "x_324"
+               OpName %x_339 "x_339"
+               OpName %x_338 "x_338"
+               OpName %x_352 "x_352"
+               OpName %x_351 "x_351"
+               OpName %x_366 "x_366"
+               OpName %x_365 "x_365"
+               OpName %x_287_phi "x_287_phi"
+               OpName %x_307_phi "x_307_phi"
+               OpName %x_328_phi "x_328_phi"
+               OpName %x_340_phi "x_340_phi"
+               OpName %x_353_phi "x_353_phi"
+               OpName %x_367_phi "x_367_phi"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+     %int_10 = OpConstant %int 10
+        %246 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %314 = OpConstantNull %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %512 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+      %x_285 = OpVariable %_ptr_Function_int Function %32
+      %x_286 = OpVariable %_ptr_Function_int Function %32
+      %x_305 = OpVariable %_ptr_Function_int Function %32
+      %x_306 = OpVariable %_ptr_Function_int Function %32
+      %x_320 = OpVariable %_ptr_Function_int Function %32
+      %x_324 = OpVariable %_ptr_Function_int Function %32
+      %x_339 = OpVariable %_ptr_Function_int Function %32
+      %x_338 = OpVariable %_ptr_Function_int Function %32
+      %x_352 = OpVariable %_ptr_Function_int Function %32
+      %x_351 = OpVariable %_ptr_Function_int Function %32
+      %x_366 = OpVariable %_ptr_Function_int Function %32
+      %x_365 = OpVariable %_ptr_Function_int Function %32
+  %x_287_phi = OpVariable %_ptr_Function_int Function %32
+  %x_307_phi = OpVariable %_ptr_Function_int Function %32
+  %x_328_phi = OpVariable %_ptr_Function_int Function %32
+  %x_340_phi = OpVariable %_ptr_Function_int Function %32
+  %x_353_phi = OpVariable %_ptr_Function_int Function %32
+  %x_367_phi = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+         %69 = OpLoad %float %68
+         %71 = OpFOrdGreaterThanEqual %bool %float_1 %69
+               OpSelectionMerge %73 None
+               OpBranchConditional %71 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %46
+         %73 = OpLabel
+         %76 = OpLoad %int %i
+         %78 = OpLoad %int %mid
+         %79 = OpLoad %int %j
+         %81 = OpLoad %int %to
+         %82 = OpSLessThanEqual %bool %76 %78
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpSLessThanEqual %bool %79 %81
+               OpBranch %83
+         %83 = OpLabel
+         %86 = OpPhi %bool %82 %73 %85 %84
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %45
+         %87 = OpLabel
+         %90 = OpLoad %int %i
+         %92 = OpAccessChain %_ptr_Private_int %data %90
+         %93 = OpLoad %int %92
+         %94 = OpLoad %int %j
+         %95 = OpAccessChain %_ptr_Private_int %data %94
+         %96 = OpLoad %int %95
+         %97 = OpSLessThan %bool %93 %96
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %100
+         %99 = OpLabel
+        %101 = OpLoad %int %k
+               OpStore %x_285 %101
+        %102 = OpLoad %int %x_285
+               OpStore %x_287_phi %102
+               OpBranch %98
+        %100 = OpLabel
+               OpStore %x_286 %int_0
+        %104 = OpLoad %int %x_286
+               OpStore %x_287_phi %104
+               OpBranch %98
+         %98 = OpLabel
+        %105 = OpLoad %int %x_287_phi
+        %106 = OpIAdd %int %105 %int_1
+               OpSelectionMerge %107 None
+               OpBranchConditional %97 %108 %107
+        %108 = OpLabel
+               OpStore %k %106
+        %109 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %110 = OpLoad %float %109
+        %112 = OpFOrdLessThanEqual %bool %float_1 %110
+        %111 = OpLogicalNot %bool %112
+               OpSelectionMerge %113 None
+               OpBranchConditional %111 %114 %115
+        %114 = OpLabel
+               OpBranch %113
+        %115 = OpLabel
+               OpBranch %46
+        %113 = OpLabel
+               OpBranch %107
+        %107 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %118 = OpLoad %float %117
+        %120 = OpFOrdGreaterThanEqual %bool %118 %float_0
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpBranch %121
+        %123 = OpLabel
+               OpBranch %46
+        %121 = OpLabel
+               OpSelectionMerge %124 None
+               OpBranchConditional %97 %125 %126
+        %125 = OpLabel
+        %127 = OpLoad %int %i
+               OpStore %x_305 %127
+        %128 = OpLoad %int %x_305
+               OpStore %x_307_phi %128
+               OpBranch %124
+        %126 = OpLabel
+               OpStore %x_306 %int_0
+        %129 = OpLoad %int %x_306
+               OpStore %x_307_phi %129
+               OpBranch %124
+        %124 = OpLabel
+        %130 = OpLoad %int %x_307_phi
+        %131 = OpSelect %int %97 %130 %int_0
+               OpSelectionMerge %132 None
+               OpBranchConditional %97 %133 %132
+        %133 = OpLabel
+        %134 = OpIAdd %int %131 %int_1
+               OpStore %i %134
+               OpBranch %132
+        %132 = OpLabel
+               OpSelectionMerge %135 None
+               OpBranchConditional %97 %136 %137
+        %136 = OpLabel
+        %138 = OpAccessChain %_ptr_Private_int %data %131
+        %139 = OpLoad %int %138
+               OpStore %x_320 %139
+        %140 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %141 = OpLoad %float %140
+        %142 = OpLoad %int %x_320
+               OpStore %x_328_phi %142
+        %144 = OpFOrdLessThanEqual %bool %float_0 %141
+        %143 = OpLogicalNot %bool %144
+               OpSelectionMerge %145 None
+               OpBranchConditional %143 %146 %145
+        %146 = OpLabel
+               OpBranch %46
+        %145 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpStore %x_324 %int_0
+        %147 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %148 = OpLoad %float %147
+        %149 = OpLoad %int %x_324
+               OpStore %x_328_phi %149
+        %151 = OpFOrdLessThan %bool %148 %float_0
+        %150 = OpLogicalNot %bool %151
+               OpSelectionMerge %152 None
+               OpBranchConditional %150 %153 %154
+        %153 = OpLabel
+               OpBranch %152
+        %154 = OpLabel
+               OpBranch %46
+        %152 = OpLabel
+               OpBranch %135
+        %135 = OpLabel
+        %155 = OpLoad %int %x_328_phi
+               OpSelectionMerge %156 None
+               OpBranchConditional %97 %157 %156
+        %157 = OpLabel
+        %158 = OpAccessChain %_ptr_Private_int %temp %105
+        %159 = OpSelect %int %97 %155 %int_0
+               OpStore %158 %159
+               OpBranch %156
+        %156 = OpLabel
+               OpSelectionMerge %160 None
+               OpBranchConditional %97 %161 %162
+        %161 = OpLabel
+               OpStore %x_339 %int_0
+        %163 = OpLoad %int %x_339
+               OpStore %x_340_phi %163
+               OpBranch %160
+        %162 = OpLabel
+        %164 = OpLoad %int %k
+               OpStore %x_338 %164
+        %165 = OpLoad %int %x_338
+               OpStore %x_340_phi %165
+               OpBranch %160
+        %160 = OpLabel
+        %166 = OpLoad %int %x_340_phi
+               OpSelectionMerge %167 None
+               OpBranchConditional %97 %168 %169
+        %168 = OpLabel
+               OpBranch %167
+        %169 = OpLabel
+        %170 = OpIAdd %int %166 %int_1
+               OpStore %k %170
+               OpBranch %167
+        %167 = OpLabel
+        %171 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %172 = OpLoad %float %171
+        %174 = OpFOrdLessThanEqual %bool %float_1 %172
+        %173 = OpLogicalNot %bool %174
+               OpSelectionMerge %175 None
+               OpBranchConditional %173 %176 %177
+        %176 = OpLabel
+               OpBranch %175
+        %177 = OpLabel
+               OpBranch %46
+        %175 = OpLabel
+               OpSelectionMerge %178 None
+               OpBranchConditional %97 %179 %180
+        %179 = OpLabel
+               OpStore %x_352 %int_0
+        %181 = OpLoad %int %x_352
+               OpStore %x_353_phi %181
+               OpBranch %178
+        %180 = OpLabel
+        %182 = OpLoad %int %j
+               OpStore %x_351 %182
+        %183 = OpLoad %int %x_351
+               OpStore %x_353_phi %183
+               OpBranch %178
+        %178 = OpLabel
+        %184 = OpLoad %int %x_353_phi
+        %185 = OpSelect %int %97 %int_0 %184
+               OpSelectionMerge %186 None
+               OpBranchConditional %97 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+        %189 = OpIAdd %int %185 %int_1
+               OpStore %j %189
+               OpBranch %186
+        %186 = OpLabel
+               OpSelectionMerge %190 None
+               OpBranchConditional %97 %191 %192
+        %191 = OpLabel
+               OpStore %x_366 %int_0
+        %193 = OpLoad %int %x_366
+               OpStore %x_367_phi %193
+               OpBranch %190
+        %192 = OpLabel
+        %194 = OpAccessChain %_ptr_Private_int %data %185
+        %195 = OpLoad %int %194
+               OpStore %x_365 %195
+        %196 = OpLoad %int %x_365
+               OpStore %x_367_phi %196
+               OpBranch %190
+        %190 = OpLabel
+        %197 = OpLoad %int %x_367_phi
+               OpSelectionMerge %198 None
+               OpBranchConditional %97 %199 %200
+        %199 = OpLabel
+               OpBranch %198
+        %200 = OpLabel
+        %201 = OpAccessChain %_ptr_Private_int %temp %166
+               OpStore %201 %197
+               OpBranch %198
+        %198 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %202
+        %202 = OpLabel
+               OpLoopMerge %203 %204 None
+               OpBranch %205
+        %205 = OpLabel
+        %206 = OpLoad %int %i
+        %207 = OpLoad %int %i
+        %209 = OpLoad %int %mid
+        %211 = OpSLessThan %bool %206 %int_10
+               OpSelectionMerge %212 None
+               OpBranchConditional %211 %213 %212
+        %213 = OpLabel
+        %214 = OpSLessThanEqual %bool %207 %209
+               OpBranch %212
+        %212 = OpLabel
+        %215 = OpPhi %bool %211 %205 %214 %213
+               OpSelectionMerge %216 None
+               OpBranchConditional %215 %217 %218
+        %217 = OpLabel
+               OpBranch %216
+        %218 = OpLabel
+               OpBranch %203
+        %216 = OpLabel
+        %219 = OpLoad %int %k
+        %220 = OpIAdd %int %219 %int_1
+               OpStore %k %220
+        %221 = OpLoad %int %i
+        %222 = OpIAdd %int %221 %int_1
+               OpStore %i %222
+        %223 = OpAccessChain %_ptr_Private_int %data %221
+        %224 = OpLoad %int %223
+        %225 = OpAccessChain %_ptr_Private_int %temp %219
+               OpStore %225 %224
+               OpBranch %204
+        %204 = OpLabel
+               OpBranch %202
+        %203 = OpLabel
+        %227 = OpLoad %int %from
+               OpStore %i_1 %227
+               OpBranch %228
+        %228 = OpLabel
+               OpLoopMerge %229 %230 None
+               OpBranch %231
+        %231 = OpLabel
+        %232 = OpLoad %int %i_1
+        %234 = OpLoad %int %to
+        %235 = OpSLessThanEqual %bool %232 %234
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %238
+        %237 = OpLabel
+               OpBranch %236
+        %238 = OpLabel
+               OpBranch %229
+        %236 = OpLabel
+        %239 = OpLoad %int %i_1
+        %240 = OpLoad %int %i_1
+        %241 = OpAccessChain %_ptr_Private_int %temp %240
+        %242 = OpLoad %int %241
+        %243 = OpAccessChain %_ptr_Private_int %data %239
+               OpStore %243 %242
+               OpBranch %230
+        %230 = OpLabel
+        %244 = OpLoad %int %i_1
+        %245 = OpIAdd %int %244 %int_1
+               OpStore %i_1 %245
+               OpBranch %228
+        %229 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %246
+        %248 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %260
+        %260 = OpLabel
+               OpLoopMerge %261 %262 None
+               OpBranch %263
+        %263 = OpLabel
+        %264 = OpLoad %int %m
+        %265 = OpLoad %int %high
+        %266 = OpSLessThanEqual %bool %264 %265
+               OpSelectionMerge %267 None
+               OpBranchConditional %266 %268 %269
+        %268 = OpLabel
+               OpBranch %267
+        %269 = OpLabel
+               OpBranch %261
+        %267 = OpLabel
+        %270 = OpLoad %int %low
+               OpStore %i_2 %270
+               OpBranch %271
+        %271 = OpLabel
+               OpLoopMerge %272 %273 None
+               OpBranch %274
+        %274 = OpLabel
+        %275 = OpLoad %int %i_2
+        %276 = OpLoad %int %high
+        %277 = OpSLessThan %bool %275 %276
+               OpSelectionMerge %278 None
+               OpBranchConditional %277 %279 %280
+        %279 = OpLabel
+               OpBranch %278
+        %280 = OpLabel
+               OpBranch %272
+        %278 = OpLabel
+        %281 = OpLoad %int %i_2
+               OpStore %from_1 %281
+        %282 = OpLoad %int %i_2
+        %283 = OpLoad %int %m
+        %284 = OpIAdd %int %282 %283
+        %285 = OpISub %int %284 %int_1
+               OpStore %mid_1 %285
+        %286 = OpLoad %int %i_2
+        %287 = OpLoad %int %m
+        %288 = OpLoad %int %high
+        %292 = OpIMul %int %int_2 %287
+        %293 = OpIAdd %int %286 %292
+        %294 = OpISub %int %293 %int_1
+        %289 = OpExtInst %int %290 SMin %294 %288
+               OpStore %to_1 %289
+        %295 = OpLoad %int %from_1
+               OpStore %param %295
+        %296 = OpLoad %int %mid_1
+               OpStore %param_1 %296
+        %297 = OpLoad %int %to_1
+               OpStore %param_2 %297
+        %298 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %273
+        %273 = OpLabel
+        %302 = OpLoad %int %m
+        %303 = OpLoad %int %i_2
+        %304 = OpIMul %int %int_2 %302
+        %305 = OpIAdd %int %303 %304
+               OpStore %i_2 %305
+               OpBranch %271
+        %272 = OpLabel
+               OpBranch %262
+        %262 = OpLabel
+        %306 = OpLoad %int %m
+        %307 = OpIMul %int %int_2 %306
+               OpStore %m %307
+               OpBranch %260
+        %261 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %246
+        %309 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %314
+        %315 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %316 = OpLoad %float %315
+        %317 = OpConvertFToS %int %316
+               OpStore %i_3 %317
+               OpBranch %318
+        %318 = OpLabel
+               OpLoopMerge %319 %320 None
+               OpBranch %321
+        %321 = OpLabel
+        %322 = OpLoad %int %i_3
+               OpSelectionMerge %323 None
+               OpSwitch %322 %324 9 %325 8 %326 7 %327 6 %328 5 %329 4 %330 3 %331 2 %332 1 %333 0 %334
+        %325 = OpLabel
+        %335 = OpLoad %int %i_3
+        %336 = OpAccessChain %_ptr_Private_int %data %335
+               OpStore %336 %int_n5
+               OpBranch %323
+        %326 = OpLabel
+        %338 = OpLoad %int %i_3
+        %339 = OpAccessChain %_ptr_Private_int %data %338
+               OpStore %339 %int_n4
+               OpBranch %323
+        %327 = OpLabel
+        %341 = OpLoad %int %i_3
+        %342 = OpAccessChain %_ptr_Private_int %data %341
+               OpStore %342 %int_n3
+               OpBranch %323
+        %328 = OpLabel
+        %344 = OpLoad %int %i_3
+        %345 = OpAccessChain %_ptr_Private_int %data %344
+               OpStore %345 %int_n2
+               OpBranch %323
+        %329 = OpLabel
+        %347 = OpLoad %int %i_3
+        %348 = OpAccessChain %_ptr_Private_int %data %347
+               OpStore %348 %int_n1
+               OpBranch %323
+        %330 = OpLabel
+        %350 = OpLoad %int %i_3
+        %351 = OpAccessChain %_ptr_Private_int %data %350
+               OpStore %351 %int_0
+               OpBranch %323
+        %331 = OpLabel
+        %352 = OpLoad %int %i_3
+        %353 = OpAccessChain %_ptr_Private_int %data %352
+               OpStore %353 %int_1
+               OpBranch %323
+        %332 = OpLabel
+        %354 = OpLoad %int %i_3
+        %355 = OpAccessChain %_ptr_Private_int %data %354
+               OpStore %355 %int_2
+               OpBranch %323
+        %333 = OpLabel
+        %356 = OpLoad %int %i_3
+        %357 = OpAccessChain %_ptr_Private_int %data %356
+               OpStore %357 %int_3
+               OpBranch %323
+        %334 = OpLabel
+        %359 = OpLoad %int %i_3
+        %360 = OpAccessChain %_ptr_Private_int %data %359
+               OpStore %360 %int_4
+               OpBranch %323
+        %324 = OpLabel
+               OpBranch %323
+        %323 = OpLabel
+        %362 = OpLoad %int %i_3
+        %363 = OpIAdd %int %362 %int_1
+               OpStore %i_3 %363
+               OpBranch %320
+        %320 = OpLabel
+        %364 = OpLoad %int %i_3
+        %365 = OpSLessThan %bool %364 %int_10
+               OpSelectionMerge %366 None
+               OpBranchConditional %365 %367 %368
+        %367 = OpLabel
+               OpBranch %366
+        %368 = OpLabel
+               OpBranch %319
+        %366 = OpLabel
+               OpBranch %318
+        %319 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %369
+        %369 = OpLabel
+               OpLoopMerge %370 %371 None
+               OpBranch %372
+        %372 = OpLabel
+        %373 = OpLoad %int %j_1
+        %374 = OpSLessThan %bool %373 %int_10
+               OpSelectionMerge %375 None
+               OpBranchConditional %374 %376 %377
+        %376 = OpLabel
+               OpBranch %375
+        %377 = OpLabel
+               OpBranch %370
+        %375 = OpLabel
+        %378 = OpLoad %int %j_1
+        %379 = OpLoad %int %j_1
+        %380 = OpAccessChain %_ptr_Private_int %data %379
+        %381 = OpLoad %int %380
+        %382 = OpAccessChain %_ptr_Private_int %temp %378
+               OpStore %382 %381
+               OpBranch %371
+        %371 = OpLabel
+        %383 = OpLoad %int %j_1
+        %384 = OpIAdd %int %383 %int_1
+               OpStore %j_1 %384
+               OpBranch %369
+        %370 = OpLabel
+        %385 = OpFunctionCall %void %mergeSort_
+        %387 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %388 = OpLoad %float %387
+        %389 = OpConvertFToS %int %388
+        %391 = OpSLessThan %bool %389 %int_30
+               OpSelectionMerge %392 None
+               OpBranchConditional %391 %393 %394
+        %393 = OpLabel
+        %395 = OpAccessChain %_ptr_Private_int %data %int_0
+        %396 = OpLoad %int %395
+        %398 = OpConvertSToF %float %396
+        %400 = OpFDiv %float %398 %float_10
+        %401 = OpFAdd %float %float_0_5 %400
+               OpStore %grey %401
+               OpBranch %392
+        %394 = OpLabel
+        %402 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %403 = OpLoad %float %402
+        %404 = OpConvertFToS %int %403
+        %406 = OpSLessThan %bool %404 %int_60
+               OpSelectionMerge %407 None
+               OpBranchConditional %406 %408 %409
+        %408 = OpLabel
+        %410 = OpAccessChain %_ptr_Private_int %data %int_1
+        %411 = OpLoad %int %410
+        %412 = OpConvertSToF %float %411
+        %413 = OpFDiv %float %412 %float_10
+        %414 = OpFAdd %float %float_0_5 %413
+               OpStore %grey %414
+               OpBranch %407
+        %409 = OpLabel
+        %415 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %416 = OpLoad %float %415
+        %417 = OpConvertFToS %int %416
+        %419 = OpSLessThan %bool %417 %int_90
+               OpSelectionMerge %420 None
+               OpBranchConditional %419 %421 %422
+        %421 = OpLabel
+        %423 = OpAccessChain %_ptr_Private_int %data %int_2
+        %424 = OpLoad %int %423
+        %425 = OpConvertSToF %float %424
+        %426 = OpFDiv %float %425 %float_10
+        %427 = OpFAdd %float %float_0_5 %426
+               OpStore %grey %427
+               OpBranch %420
+        %422 = OpLabel
+        %428 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %429 = OpLoad %float %428
+        %430 = OpConvertFToS %int %429
+        %432 = OpSLessThan %bool %430 %int_120
+               OpSelectionMerge %433 None
+               OpBranchConditional %432 %434 %435
+        %434 = OpLabel
+        %436 = OpAccessChain %_ptr_Private_int %data %int_3
+        %437 = OpLoad %int %436
+        %438 = OpConvertSToF %float %437
+        %439 = OpFDiv %float %438 %float_10
+        %440 = OpFAdd %float %float_0_5 %439
+               OpStore %grey %440
+               OpBranch %433
+        %435 = OpLabel
+        %441 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %442 = OpLoad %float %441
+        %443 = OpConvertFToS %int %442
+        %445 = OpSLessThan %bool %443 %int_150
+               OpSelectionMerge %446 None
+               OpBranchConditional %445 %447 %448
+        %447 = OpLabel
+               OpKill
+        %448 = OpLabel
+        %449 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %450 = OpLoad %float %449
+        %451 = OpConvertFToS %int %450
+        %453 = OpSLessThan %bool %451 %int_180
+               OpSelectionMerge %454 None
+               OpBranchConditional %453 %455 %456
+        %455 = OpLabel
+        %458 = OpAccessChain %_ptr_Private_int %data %int_5
+        %459 = OpLoad %int %458
+        %460 = OpConvertSToF %float %459
+        %461 = OpFDiv %float %460 %float_10
+        %462 = OpFAdd %float %float_0_5 %461
+               OpStore %grey %462
+               OpBranch %454
+        %456 = OpLabel
+        %463 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %464 = OpLoad %float %463
+        %465 = OpConvertFToS %int %464
+        %467 = OpSLessThan %bool %465 %int_210
+               OpSelectionMerge %468 None
+               OpBranchConditional %467 %469 %470
+        %469 = OpLabel
+        %472 = OpAccessChain %_ptr_Private_int %data %int_6
+        %473 = OpLoad %int %472
+        %474 = OpConvertSToF %float %473
+        %475 = OpFDiv %float %474 %float_10
+        %476 = OpFAdd %float %float_0_5 %475
+               OpStore %grey %476
+               OpBranch %468
+        %470 = OpLabel
+        %477 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %478 = OpLoad %float %477
+        %479 = OpConvertFToS %int %478
+        %481 = OpSLessThan %bool %479 %int_240
+               OpSelectionMerge %482 None
+               OpBranchConditional %481 %483 %484
+        %483 = OpLabel
+        %486 = OpAccessChain %_ptr_Private_int %data %int_7
+        %487 = OpLoad %int %486
+        %488 = OpConvertSToF %float %487
+        %489 = OpFDiv %float %488 %float_10
+        %490 = OpFAdd %float %float_0_5 %489
+               OpStore %grey %490
+               OpBranch %482
+        %484 = OpLabel
+        %491 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %492 = OpLoad %float %491
+        %493 = OpConvertFToS %int %492
+        %495 = OpSLessThan %bool %493 %int_270
+               OpSelectionMerge %496 None
+               OpBranchConditional %495 %497 %498
+        %497 = OpLabel
+        %500 = OpAccessChain %_ptr_Private_int %data %int_8
+        %501 = OpLoad %int %500
+        %502 = OpConvertSToF %float %501
+        %503 = OpFDiv %float %502 %float_10
+        %504 = OpFAdd %float %float_0_5 %503
+               OpStore %grey %504
+               OpBranch %496
+        %498 = OpLabel
+               OpKill
+        %496 = OpLabel
+               OpBranch %482
+        %482 = OpLabel
+               OpBranch %468
+        %468 = OpLabel
+               OpBranch %454
+        %454 = OpLabel
+               OpBranch %446
+        %446 = OpLabel
+               OpBranch %433
+        %433 = OpLabel
+               OpBranch %420
+        %420 = OpLabel
+               OpBranch %407
+        %407 = OpLabel
+               OpBranch %392
+        %392 = OpLabel
+        %505 = OpLoad %float %grey
+        %507 = OpCompositeConstruct %v3float %505 %505 %505
+        %508 = OpCompositeExtract %float %507 0
+        %509 = OpCompositeExtract %float %507 1
+        %510 = OpCompositeExtract %float %507 2
+        %511 = OpCompositeConstruct %v4float %508 %509 %510 %float_1
+               OpStore %x_GLF_color %511
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %512
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %516 = OpLabel
+        %517 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %517
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %246
+        %519 = OpLabel
+        %520 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %520
+        %521 = OpFunctionCall %void %main_1
+        %523 = OpLoad %v4float %x_GLF_color
+        %524 = OpCompositeConstruct %main_out %523
+        %522 = OpFunctionCall %void %tint_symbol_3 %524
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 320[%320] is not post dominated by the back-edge block 366[%366]
+  %366 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..5fac853
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.spvasm.expected.wgsl
@@ -0,0 +1,414 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_255 : i32 = *(from);
+  k = x_255;
+  let x_256 : i32 = *(from);
+  i = x_256;
+  let x_257 : i32 = *(mid);
+  j = (x_257 + 1);
+  loop {
+    var x_285 : i32;
+    var x_286 : i32;
+    var x_305 : i32;
+    var x_306 : i32;
+    var x_320 : i32;
+    var x_324 : i32;
+    var x_339 : i32;
+    var x_338 : i32;
+    var x_352 : i32;
+    var x_351 : i32;
+    var x_366 : i32;
+    var x_365 : i32;
+    var x_287_phi : i32;
+    var x_307_phi : i32;
+    var x_328_phi : i32;
+    var x_340_phi : i32;
+    var x_353_phi : i32;
+    var x_367_phi : i32;
+    let x_261 : f32 = x_28.injectionSwitch.x;
+    if ((1.0 >= x_261)) {
+    } else {
+      continue;
+    }
+    let x_266 : i32 = i;
+    let x_267 : i32 = *(mid);
+    let x_269 : i32 = j;
+    let x_270 : i32 = *(to);
+    if (((x_266 <= x_267) && (x_269 <= x_270))) {
+    } else {
+      break;
+    }
+    let x_274 : i32 = i;
+    let x_276 : i32 = data[x_274];
+    let x_277 : i32 = j;
+    let x_279 : i32 = data[x_277];
+    let x_280 : bool = (x_276 < x_279);
+    if (x_280) {
+      x_285 = k;
+      x_287_phi = x_285;
+    } else {
+      x_286 = 0;
+      x_287_phi = x_286;
+    }
+    let x_287 : i32 = x_287_phi;
+    let x_288 : i32 = (x_287 + 1);
+    if (x_280) {
+      k = x_288;
+      let x_293 : f32 = x_28.injectionSwitch.x;
+      if (!((1.0 <= x_293))) {
+      } else {
+        continue;
+      }
+    }
+    let x_297 : f32 = x_28.injectionSwitch.y;
+    if ((x_297 >= 0.0)) {
+    } else {
+      continue;
+    }
+    let x_300 : i32 = 0;
+    if (x_280) {
+      x_305 = i;
+      x_307_phi = x_305;
+    } else {
+      x_306 = 0;
+      x_307_phi = x_306;
+    }
+    let x_307 : i32 = x_307_phi;
+    let x_309 : i32 = select(x_300, x_307, x_280);
+    if (x_280) {
+      i = (x_309 + 1);
+    }
+    let x_315 : i32 = 0;
+    if (x_280) {
+      x_320 = data[x_309];
+      let x_322 : f32 = x_28.injectionSwitch.y;
+      x_328_phi = x_320;
+      if (!((0.0 <= x_322))) {
+        continue;
+      }
+    } else {
+      x_324 = 0;
+      let x_326 : f32 = x_28.injectionSwitch.y;
+      x_328_phi = x_324;
+      if (!((x_326 < 0.0))) {
+      } else {
+        continue;
+      }
+    }
+    let x_328 : i32 = x_328_phi;
+    if (x_280) {
+      temp[x_287] = select(x_315, x_328, x_280);
+    }
+    if (x_280) {
+      x_339 = 0;
+      x_340_phi = x_339;
+    } else {
+      x_338 = k;
+      x_340_phi = x_338;
+    }
+    let x_340 : i32 = x_340_phi;
+    if (x_280) {
+    } else {
+      k = (x_340 + 1);
+    }
+    let x_345 : f32 = x_28.injectionSwitch.x;
+    if (!((1.0 <= x_345))) {
+    } else {
+      continue;
+    }
+    if (x_280) {
+      x_352 = 0;
+      x_353_phi = x_352;
+    } else {
+      x_351 = j;
+      x_353_phi = x_351;
+    }
+    let x_353 : i32 = x_353_phi;
+    let x_355 : i32 = 0;
+    let x_357 : i32 = select(x_353, x_355, x_280);
+    if (x_280) {
+    } else {
+      j = (x_357 + 1);
+    }
+    if (x_280) {
+      x_366 = 0;
+      x_367_phi = x_366;
+    } else {
+      x_365 = data[x_357];
+      x_367_phi = x_365;
+    }
+    let x_367 : i32 = x_367_phi;
+    if (x_280) {
+    } else {
+      temp[x_340] = x_367;
+    }
+  }
+  loop {
+    let x_376 : i32 = i;
+    let x_378 : i32 = i;
+    let x_379 : i32 = *(mid);
+    if (((x_376 < 10) && (x_378 <= x_379))) {
+    } else {
+      break;
+    }
+    let x_383 : i32 = k;
+    k = (x_383 + 1);
+    let x_385 : i32 = i;
+    i = (x_385 + 1);
+    let x_388 : i32 = data[x_385];
+    temp[x_383] = x_388;
+  }
+  let x_390 : i32 = *(from);
+  i_1 = x_390;
+  loop {
+    let x_395 : i32 = i_1;
+    let x_396 : i32 = *(to);
+    if ((x_395 <= x_396)) {
+    } else {
+      break;
+    }
+    let x_399 : i32 = i_1;
+    let x_400 : i32 = i_1;
+    let x_402 : i32 = temp[x_400];
+    data[x_399] = x_402;
+
+    continuing {
+      let x_404 : i32 = i_1;
+      i_1 = (x_404 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_411 : i32 = m;
+    let x_412 : i32 = high;
+    if ((x_411 <= x_412)) {
+    } else {
+      break;
+    }
+    let x_415 : i32 = low;
+    i_2 = x_415;
+    loop {
+      let x_420 : i32 = i_2;
+      let x_421 : i32 = high;
+      if ((x_420 < x_421)) {
+      } else {
+        break;
+      }
+      let x_424 : i32 = i_2;
+      from_1 = x_424;
+      let x_425 : i32 = i_2;
+      let x_426 : i32 = m;
+      mid_1 = ((x_425 + x_426) - 1);
+      let x_429 : i32 = i_2;
+      let x_430 : i32 = m;
+      let x_434 : i32 = high;
+      to_1 = min(((x_429 + (2 * x_430)) - 1), x_434);
+      let x_436 : i32 = from_1;
+      param = x_436;
+      let x_437 : i32 = mid_1;
+      param_1 = x_437;
+      let x_438 : i32 = to_1;
+      param_2 = x_438;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_440 : i32 = m;
+        let x_442 : i32 = i_2;
+        i_2 = (x_442 + (2 * x_440));
+      }
+    }
+
+    continuing {
+      let x_444 : i32 = m;
+      m = (2 * x_444);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_88 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_88);
+  loop {
+    let x_94 : i32 = i_3;
+    switch(x_94) {
+      case 9: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -5;
+      }
+      case 8: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -4;
+      }
+      case 7: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -3;
+      }
+      case 6: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -2;
+      }
+      case 5: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -1;
+      }
+      case 4: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 0;
+      }
+      case 3: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 1;
+      }
+      case 2: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 2;
+      }
+      case 1: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 3;
+      }
+      case 0: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 4;
+      }
+      default: {
+      }
+    }
+    let x_126 : i32 = i_3;
+    i_3 = (x_126 + 1);
+
+    continuing {
+      let x_128 : i32 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_134 : i32 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    let x_137 : i32 = j_1;
+    let x_138 : i32 = j_1;
+    let x_140 : i32 = data[x_138];
+    temp[x_137] = x_140;
+
+    continuing {
+      let x_142 : i32 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_();
+  let x_146 : f32 = gl_FragCoord.y;
+  if ((i32(x_146) < 30)) {
+    let x_153 : i32 = data[0];
+    grey = (0.5 + (f32(x_153) / 10.0));
+  } else {
+    let x_158 : f32 = gl_FragCoord.y;
+    if ((i32(x_158) < 60)) {
+      let x_165 : i32 = data[1];
+      grey = (0.5 + (f32(x_165) / 10.0));
+    } else {
+      let x_170 : f32 = gl_FragCoord.y;
+      if ((i32(x_170) < 90)) {
+        let x_177 : i32 = data[2];
+        grey = (0.5 + (f32(x_177) / 10.0));
+      } else {
+        let x_182 : f32 = gl_FragCoord.y;
+        if ((i32(x_182) < 120)) {
+          let x_189 : i32 = data[3];
+          grey = (0.5 + (f32(x_189) / 10.0));
+        } else {
+          let x_194 : f32 = gl_FragCoord.y;
+          if ((i32(x_194) < 150)) {
+            discard;
+          } else {
+            let x_201 : f32 = gl_FragCoord.y;
+            if ((i32(x_201) < 180)) {
+              let x_208 : i32 = data[5];
+              grey = (0.5 + (f32(x_208) / 10.0));
+            } else {
+              let x_213 : f32 = gl_FragCoord.y;
+              if ((i32(x_213) < 210)) {
+                let x_220 : i32 = data[6];
+                grey = (0.5 + (f32(x_220) / 10.0));
+              } else {
+                let x_225 : f32 = gl_FragCoord.y;
+                if ((i32(x_225) < 240)) {
+                  let x_232 : i32 = data[7];
+                  grey = (0.5 + (f32(x_232) / 10.0));
+                } else {
+                  let x_237 : f32 = gl_FragCoord.y;
+                  if ((i32(x_237) < 270)) {
+                    let x_244 : i32 = data[8];
+                    grey = (0.5 + (f32(x_244) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_248 : f32 = grey;
+  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
+  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
new file mode 100644
index 0000000..5fac853
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
@@ -0,0 +1,414 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_255 : i32 = *(from);
+  k = x_255;
+  let x_256 : i32 = *(from);
+  i = x_256;
+  let x_257 : i32 = *(mid);
+  j = (x_257 + 1);
+  loop {
+    var x_285 : i32;
+    var x_286 : i32;
+    var x_305 : i32;
+    var x_306 : i32;
+    var x_320 : i32;
+    var x_324 : i32;
+    var x_339 : i32;
+    var x_338 : i32;
+    var x_352 : i32;
+    var x_351 : i32;
+    var x_366 : i32;
+    var x_365 : i32;
+    var x_287_phi : i32;
+    var x_307_phi : i32;
+    var x_328_phi : i32;
+    var x_340_phi : i32;
+    var x_353_phi : i32;
+    var x_367_phi : i32;
+    let x_261 : f32 = x_28.injectionSwitch.x;
+    if ((1.0 >= x_261)) {
+    } else {
+      continue;
+    }
+    let x_266 : i32 = i;
+    let x_267 : i32 = *(mid);
+    let x_269 : i32 = j;
+    let x_270 : i32 = *(to);
+    if (((x_266 <= x_267) && (x_269 <= x_270))) {
+    } else {
+      break;
+    }
+    let x_274 : i32 = i;
+    let x_276 : i32 = data[x_274];
+    let x_277 : i32 = j;
+    let x_279 : i32 = data[x_277];
+    let x_280 : bool = (x_276 < x_279);
+    if (x_280) {
+      x_285 = k;
+      x_287_phi = x_285;
+    } else {
+      x_286 = 0;
+      x_287_phi = x_286;
+    }
+    let x_287 : i32 = x_287_phi;
+    let x_288 : i32 = (x_287 + 1);
+    if (x_280) {
+      k = x_288;
+      let x_293 : f32 = x_28.injectionSwitch.x;
+      if (!((1.0 <= x_293))) {
+      } else {
+        continue;
+      }
+    }
+    let x_297 : f32 = x_28.injectionSwitch.y;
+    if ((x_297 >= 0.0)) {
+    } else {
+      continue;
+    }
+    let x_300 : i32 = 0;
+    if (x_280) {
+      x_305 = i;
+      x_307_phi = x_305;
+    } else {
+      x_306 = 0;
+      x_307_phi = x_306;
+    }
+    let x_307 : i32 = x_307_phi;
+    let x_309 : i32 = select(x_300, x_307, x_280);
+    if (x_280) {
+      i = (x_309 + 1);
+    }
+    let x_315 : i32 = 0;
+    if (x_280) {
+      x_320 = data[x_309];
+      let x_322 : f32 = x_28.injectionSwitch.y;
+      x_328_phi = x_320;
+      if (!((0.0 <= x_322))) {
+        continue;
+      }
+    } else {
+      x_324 = 0;
+      let x_326 : f32 = x_28.injectionSwitch.y;
+      x_328_phi = x_324;
+      if (!((x_326 < 0.0))) {
+      } else {
+        continue;
+      }
+    }
+    let x_328 : i32 = x_328_phi;
+    if (x_280) {
+      temp[x_287] = select(x_315, x_328, x_280);
+    }
+    if (x_280) {
+      x_339 = 0;
+      x_340_phi = x_339;
+    } else {
+      x_338 = k;
+      x_340_phi = x_338;
+    }
+    let x_340 : i32 = x_340_phi;
+    if (x_280) {
+    } else {
+      k = (x_340 + 1);
+    }
+    let x_345 : f32 = x_28.injectionSwitch.x;
+    if (!((1.0 <= x_345))) {
+    } else {
+      continue;
+    }
+    if (x_280) {
+      x_352 = 0;
+      x_353_phi = x_352;
+    } else {
+      x_351 = j;
+      x_353_phi = x_351;
+    }
+    let x_353 : i32 = x_353_phi;
+    let x_355 : i32 = 0;
+    let x_357 : i32 = select(x_353, x_355, x_280);
+    if (x_280) {
+    } else {
+      j = (x_357 + 1);
+    }
+    if (x_280) {
+      x_366 = 0;
+      x_367_phi = x_366;
+    } else {
+      x_365 = data[x_357];
+      x_367_phi = x_365;
+    }
+    let x_367 : i32 = x_367_phi;
+    if (x_280) {
+    } else {
+      temp[x_340] = x_367;
+    }
+  }
+  loop {
+    let x_376 : i32 = i;
+    let x_378 : i32 = i;
+    let x_379 : i32 = *(mid);
+    if (((x_376 < 10) && (x_378 <= x_379))) {
+    } else {
+      break;
+    }
+    let x_383 : i32 = k;
+    k = (x_383 + 1);
+    let x_385 : i32 = i;
+    i = (x_385 + 1);
+    let x_388 : i32 = data[x_385];
+    temp[x_383] = x_388;
+  }
+  let x_390 : i32 = *(from);
+  i_1 = x_390;
+  loop {
+    let x_395 : i32 = i_1;
+    let x_396 : i32 = *(to);
+    if ((x_395 <= x_396)) {
+    } else {
+      break;
+    }
+    let x_399 : i32 = i_1;
+    let x_400 : i32 = i_1;
+    let x_402 : i32 = temp[x_400];
+    data[x_399] = x_402;
+
+    continuing {
+      let x_404 : i32 = i_1;
+      i_1 = (x_404 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_411 : i32 = m;
+    let x_412 : i32 = high;
+    if ((x_411 <= x_412)) {
+    } else {
+      break;
+    }
+    let x_415 : i32 = low;
+    i_2 = x_415;
+    loop {
+      let x_420 : i32 = i_2;
+      let x_421 : i32 = high;
+      if ((x_420 < x_421)) {
+      } else {
+        break;
+      }
+      let x_424 : i32 = i_2;
+      from_1 = x_424;
+      let x_425 : i32 = i_2;
+      let x_426 : i32 = m;
+      mid_1 = ((x_425 + x_426) - 1);
+      let x_429 : i32 = i_2;
+      let x_430 : i32 = m;
+      let x_434 : i32 = high;
+      to_1 = min(((x_429 + (2 * x_430)) - 1), x_434);
+      let x_436 : i32 = from_1;
+      param = x_436;
+      let x_437 : i32 = mid_1;
+      param_1 = x_437;
+      let x_438 : i32 = to_1;
+      param_2 = x_438;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_440 : i32 = m;
+        let x_442 : i32 = i_2;
+        i_2 = (x_442 + (2 * x_440));
+      }
+    }
+
+    continuing {
+      let x_444 : i32 = m;
+      m = (2 * x_444);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_88 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_88);
+  loop {
+    let x_94 : i32 = i_3;
+    switch(x_94) {
+      case 9: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -5;
+      }
+      case 8: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -4;
+      }
+      case 7: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -3;
+      }
+      case 6: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -2;
+      }
+      case 5: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -1;
+      }
+      case 4: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 0;
+      }
+      case 3: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 1;
+      }
+      case 2: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 2;
+      }
+      case 1: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 3;
+      }
+      case 0: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 4;
+      }
+      default: {
+      }
+    }
+    let x_126 : i32 = i_3;
+    i_3 = (x_126 + 1);
+
+    continuing {
+      let x_128 : i32 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_134 : i32 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    let x_137 : i32 = j_1;
+    let x_138 : i32 = j_1;
+    let x_140 : i32 = data[x_138];
+    temp[x_137] = x_140;
+
+    continuing {
+      let x_142 : i32 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_();
+  let x_146 : f32 = gl_FragCoord.y;
+  if ((i32(x_146) < 30)) {
+    let x_153 : i32 = data[0];
+    grey = (0.5 + (f32(x_153) / 10.0));
+  } else {
+    let x_158 : f32 = gl_FragCoord.y;
+    if ((i32(x_158) < 60)) {
+      let x_165 : i32 = data[1];
+      grey = (0.5 + (f32(x_165) / 10.0));
+    } else {
+      let x_170 : f32 = gl_FragCoord.y;
+      if ((i32(x_170) < 90)) {
+        let x_177 : i32 = data[2];
+        grey = (0.5 + (f32(x_177) / 10.0));
+      } else {
+        let x_182 : f32 = gl_FragCoord.y;
+        if ((i32(x_182) < 120)) {
+          let x_189 : i32 = data[3];
+          grey = (0.5 + (f32(x_189) / 10.0));
+        } else {
+          let x_194 : f32 = gl_FragCoord.y;
+          if ((i32(x_194) < 150)) {
+            discard;
+          } else {
+            let x_201 : f32 = gl_FragCoord.y;
+            if ((i32(x_201) < 180)) {
+              let x_208 : i32 = data[5];
+              grey = (0.5 + (f32(x_208) / 10.0));
+            } else {
+              let x_213 : f32 = gl_FragCoord.y;
+              if ((i32(x_213) < 210)) {
+                let x_220 : i32 = data[6];
+                grey = (0.5 + (f32(x_220) / 10.0));
+              } else {
+                let x_225 : f32 = gl_FragCoord.y;
+                if ((i32(x_225) < 240)) {
+                  let x_232 : i32 = data[7];
+                  grey = (0.5 + (f32(x_232) / 10.0));
+                } else {
+                  let x_237 : f32 = gl_FragCoord.y;
+                  if ((i32(x_237) < 270)) {
+                    let x_244 : i32 = data[8];
+                    grey = (0.5 + (f32(x_244) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_248 : f32 = grey;
+  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
+  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..5cccfe9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.hlsl
@@ -0,0 +1,373 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_255 = from;
+  k = x_255;
+  const int x_256 = from;
+  i = x_256;
+  const int x_257 = mid;
+  j = (x_257 + 1);
+  while (true) {
+    int x_285 = 0;
+    int x_286 = 0;
+    int x_305 = 0;
+    int x_306 = 0;
+    int x_320 = 0;
+    int x_324 = 0;
+    int x_339 = 0;
+    int x_338 = 0;
+    int x_352 = 0;
+    int x_351 = 0;
+    int x_366 = 0;
+    int x_365 = 0;
+    int x_287_phi = 0;
+    int x_307_phi = 0;
+    int x_328_phi = 0;
+    int x_340_phi = 0;
+    int x_353_phi = 0;
+    int x_367_phi = 0;
+    const float x_261 = asfloat(x_28[0].x);
+    if ((1.0f >= x_261)) {
+    } else {
+      continue;
+    }
+    const int x_266 = i;
+    const int x_267 = mid;
+    const int x_269 = j;
+    const int x_270 = to;
+    bool tint_tmp = (x_266 <= x_267);
+    if (tint_tmp) {
+      tint_tmp = (x_269 <= x_270);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_276 = data[i];
+    const int x_279 = data[j];
+    const bool x_280 = (x_276 < x_279);
+    if (x_280) {
+      x_285 = k;
+      x_287_phi = x_285;
+    } else {
+      x_286 = 0;
+      x_287_phi = x_286;
+    }
+    const int x_287 = x_287_phi;
+    const int x_288 = (x_287 + 1);
+    if (x_280) {
+      k = x_288;
+      const float x_293 = asfloat(x_28[0].x);
+      if (!((1.0f <= x_293))) {
+      } else {
+        continue;
+      }
+    }
+    const float x_297 = asfloat(x_28[0].y);
+    if ((x_297 >= 0.0f)) {
+    } else {
+      continue;
+    }
+    const int x_300 = 0;
+    if (x_280) {
+      x_305 = i;
+      x_307_phi = x_305;
+    } else {
+      x_306 = 0;
+      x_307_phi = x_306;
+    }
+    const int x_309 = (x_280 ? x_307_phi : x_300);
+    if (x_280) {
+      i = (x_309 + 1);
+    }
+    const int x_315 = 0;
+    if (x_280) {
+      x_320 = data[x_309];
+      const float x_322 = asfloat(x_28[0].y);
+      x_328_phi = x_320;
+      if (!((0.0f <= x_322))) {
+        continue;
+      }
+    } else {
+      x_324 = 0;
+      const float x_326 = asfloat(x_28[0].y);
+      x_328_phi = x_324;
+      if (!((x_326 < 0.0f))) {
+      } else {
+        continue;
+      }
+    }
+    const int x_328 = x_328_phi;
+    if (x_280) {
+      temp[x_287] = (x_280 ? x_328 : x_315);
+    }
+    if (x_280) {
+      x_339 = 0;
+      x_340_phi = x_339;
+    } else {
+      x_338 = k;
+      x_340_phi = x_338;
+    }
+    const int x_340 = x_340_phi;
+    if (x_280) {
+    } else {
+      k = (x_340 + 1);
+    }
+    const float x_345 = asfloat(x_28[0].x);
+    if (!((1.0f <= x_345))) {
+    } else {
+      continue;
+    }
+    if (x_280) {
+      x_352 = 0;
+      x_353_phi = x_352;
+    } else {
+      x_351 = j;
+      x_353_phi = x_351;
+    }
+    const int x_357 = (x_280 ? 0 : x_353_phi);
+    if (x_280) {
+    } else {
+      j = (x_357 + 1);
+    }
+    if (x_280) {
+      x_366 = 0;
+      x_367_phi = x_366;
+    } else {
+      x_365 = data[x_357];
+      x_367_phi = x_365;
+    }
+    const int x_367 = x_367_phi;
+    if (x_280) {
+    } else {
+      temp[x_340] = x_367;
+    }
+  }
+  while (true) {
+    const int x_376 = i;
+    const int x_378 = i;
+    const int x_379 = mid;
+    bool tint_tmp_1 = (x_376 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_378 <= x_379);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_383 = k;
+    k = (x_383 + 1);
+    const int x_385 = i;
+    i = (x_385 + 1);
+    const int x_388 = data[x_385];
+    temp[x_383] = x_388;
+  }
+  const int x_390 = from;
+  i_1 = x_390;
+  while (true) {
+    const int x_395 = i_1;
+    const int x_396 = to;
+    if ((x_395 <= x_396)) {
+    } else {
+      break;
+    }
+    const int x_399 = i_1;
+    const int x_402 = temp[i_1];
+    data[x_399] = x_402;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_88 = asfloat(x_28[0].x);
+  i_3 = int(x_88);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_137 = j_1;
+      const int x_140 = data[j_1];
+      temp[x_137] = x_140;
+    }
+  }
+  mergeSort_();
+  const float x_146 = gl_FragCoord.y;
+  if ((int(x_146) < 30)) {
+    const int x_153 = data[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    const float x_158 = gl_FragCoord.y;
+    if ((int(x_158) < 60)) {
+      const int x_165 = data[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      const float x_170 = gl_FragCoord.y;
+      if ((int(x_170) < 90)) {
+        const int x_177 = data[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        const float x_182 = gl_FragCoord.y;
+        if ((int(x_182) < 120)) {
+          const int x_189 = data[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          const float x_194 = gl_FragCoord.y;
+          if ((int(x_194) < 150)) {
+            discard;
+          } else {
+            const float x_201 = gl_FragCoord.y;
+            if ((int(x_201) < 180)) {
+              const int x_208 = data[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              const float x_213 = gl_FragCoord.y;
+              if ((int(x_213) < 210)) {
+                const int x_220 = data[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                const float x_225 = gl_FragCoord.y;
+                if ((int(x_225) < 240)) {
+                  const int x_232 = data[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  const float x_237 = gl_FragCoord.y;
+                  if ((int(x_237) < 270)) {
+                    const int x_244 = data[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_248 = grey;
+  const float3 x_249 = float3(x_248, x_248, x_248);
+  x_GLF_color = float4(x_249.x, x_249.y, x_249.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.msl
new file mode 100644
index 0000000..a023050
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.msl
@@ -0,0 +1,422 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(constant buf0& x_28, thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_255 = *(from);
+  k = x_255;
+  int const x_256 = *(from);
+  i = x_256;
+  int const x_257 = *(mid);
+  j = (x_257 + 1);
+  while (true) {
+    int x_285 = 0;
+    int x_286 = 0;
+    int x_305 = 0;
+    int x_306 = 0;
+    int x_320 = 0;
+    int x_324 = 0;
+    int x_339 = 0;
+    int x_338 = 0;
+    int x_352 = 0;
+    int x_351 = 0;
+    int x_366 = 0;
+    int x_365 = 0;
+    int x_287_phi = 0;
+    int x_307_phi = 0;
+    int x_328_phi = 0;
+    int x_340_phi = 0;
+    int x_353_phi = 0;
+    int x_367_phi = 0;
+    float const x_261 = x_28.injectionSwitch.x;
+    if ((1.0f >= x_261)) {
+    } else {
+      continue;
+    }
+    int const x_266 = i;
+    int const x_267 = *(mid);
+    int const x_269 = j;
+    int const x_270 = *(to);
+    if (((x_266 <= x_267) && (x_269 <= x_270))) {
+    } else {
+      break;
+    }
+    int const x_274 = i;
+    int const x_276 = (*(tint_symbol_5)).arr[x_274];
+    int const x_277 = j;
+    int const x_279 = (*(tint_symbol_5)).arr[x_277];
+    bool const x_280 = (x_276 < x_279);
+    if (x_280) {
+      x_285 = k;
+      x_287_phi = x_285;
+    } else {
+      x_286 = 0;
+      x_287_phi = x_286;
+    }
+    int const x_287 = x_287_phi;
+    int const x_288 = (x_287 + 1);
+    if (x_280) {
+      k = x_288;
+      float const x_293 = x_28.injectionSwitch.x;
+      if (!((1.0f <= x_293))) {
+      } else {
+        continue;
+      }
+    }
+    float const x_297 = x_28.injectionSwitch.y;
+    if ((x_297 >= 0.0f)) {
+    } else {
+      continue;
+    }
+    int const x_300 = 0;
+    if (x_280) {
+      x_305 = i;
+      x_307_phi = x_305;
+    } else {
+      x_306 = 0;
+      x_307_phi = x_306;
+    }
+    int const x_307 = x_307_phi;
+    int const x_309 = select(x_300, x_307, x_280);
+    if (x_280) {
+      i = (x_309 + 1);
+    }
+    int const x_315 = 0;
+    if (x_280) {
+      x_320 = (*(tint_symbol_5)).arr[x_309];
+      float const x_322 = x_28.injectionSwitch.y;
+      x_328_phi = x_320;
+      if (!((0.0f <= x_322))) {
+        continue;
+      }
+    } else {
+      x_324 = 0;
+      float const x_326 = x_28.injectionSwitch.y;
+      x_328_phi = x_324;
+      if (!((x_326 < 0.0f))) {
+      } else {
+        continue;
+      }
+    }
+    int const x_328 = x_328_phi;
+    if (x_280) {
+      (*(tint_symbol_6)).arr[x_287] = select(x_315, x_328, x_280);
+    }
+    if (x_280) {
+      x_339 = 0;
+      x_340_phi = x_339;
+    } else {
+      x_338 = k;
+      x_340_phi = x_338;
+    }
+    int const x_340 = x_340_phi;
+    if (x_280) {
+    } else {
+      k = (x_340 + 1);
+    }
+    float const x_345 = x_28.injectionSwitch.x;
+    if (!((1.0f <= x_345))) {
+    } else {
+      continue;
+    }
+    if (x_280) {
+      x_352 = 0;
+      x_353_phi = x_352;
+    } else {
+      x_351 = j;
+      x_353_phi = x_351;
+    }
+    int const x_353 = x_353_phi;
+    int const x_355 = 0;
+    int const x_357 = select(x_353, x_355, x_280);
+    if (x_280) {
+    } else {
+      j = (x_357 + 1);
+    }
+    if (x_280) {
+      x_366 = 0;
+      x_367_phi = x_366;
+    } else {
+      x_365 = (*(tint_symbol_5)).arr[x_357];
+      x_367_phi = x_365;
+    }
+    int const x_367 = x_367_phi;
+    if (x_280) {
+    } else {
+      (*(tint_symbol_6)).arr[x_340] = x_367;
+    }
+  }
+  while (true) {
+    int const x_376 = i;
+    int const x_378 = i;
+    int const x_379 = *(mid);
+    if (((x_376 < 10) && (x_378 <= x_379))) {
+    } else {
+      break;
+    }
+    int const x_383 = k;
+    k = (x_383 + 1);
+    int const x_385 = i;
+    i = (x_385 + 1);
+    int const x_388 = (*(tint_symbol_5)).arr[x_385];
+    (*(tint_symbol_6)).arr[x_383] = x_388;
+  }
+  int const x_390 = *(from);
+  i_1 = x_390;
+  while (true) {
+    int const x_395 = i_1;
+    int const x_396 = *(to);
+    if ((x_395 <= x_396)) {
+    } else {
+      break;
+    }
+    int const x_399 = i_1;
+    int const x_400 = i_1;
+    int const x_402 = (*(tint_symbol_6)).arr[x_400];
+    (*(tint_symbol_5)).arr[x_399] = x_402;
+    {
+      int const x_404 = i_1;
+      i_1 = (x_404 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_411 = m;
+    int const x_412 = high;
+    if ((x_411 <= x_412)) {
+    } else {
+      break;
+    }
+    int const x_415 = low;
+    i_2 = x_415;
+    while (true) {
+      int const x_420 = i_2;
+      int const x_421 = high;
+      if ((x_420 < x_421)) {
+      } else {
+        break;
+      }
+      int const x_424 = i_2;
+      from_1 = x_424;
+      int const x_425 = i_2;
+      int const x_426 = m;
+      mid_1 = ((x_425 + x_426) - 1);
+      int const x_429 = i_2;
+      int const x_430 = m;
+      int const x_434 = high;
+      to_1 = min(((x_429 + (2 * x_430)) - 1), x_434);
+      int const x_436 = from_1;
+      param = x_436;
+      int const x_437 = mid_1;
+      param_1 = x_437;
+      int const x_438 = to_1;
+      param_2 = x_438;
+      merge_i1_i1_i1_(x_28, &(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_440 = m;
+        int const x_442 = i_2;
+        i_2 = (x_442 + (2 * x_440));
+      }
+    }
+    {
+      int const x_444 = m;
+      m = (2 * x_444);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_88 = x_28.injectionSwitch.x;
+  i_3 = int(x_88);
+  while (true) {
+    int const x_94 = i_3;
+    switch(x_94) {
+      case 9: {
+        int const x_124 = i_3;
+        (*(tint_symbol_9)).arr[x_124] = -5;
+        break;
+      }
+      case 8: {
+        int const x_122 = i_3;
+        (*(tint_symbol_9)).arr[x_122] = -4;
+        break;
+      }
+      case 7: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -3;
+        break;
+      }
+      case 6: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -2;
+        break;
+      }
+      case 5: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -1;
+        break;
+      }
+      case 4: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = 0;
+        break;
+      }
+      case 3: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = 1;
+        break;
+      }
+      case 2: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 2;
+        break;
+      }
+      case 1: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 3;
+        break;
+      }
+      case 0: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_126 = i_3;
+    i_3 = (x_126 + 1);
+    {
+      int const x_128 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_134 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    int const x_137 = j_1;
+    int const x_138 = j_1;
+    int const x_140 = (*(tint_symbol_9)).arr[x_138];
+    (*(tint_symbol_10)).arr[x_137] = x_140;
+    {
+      int const x_142 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_(x_28, tint_symbol_9, tint_symbol_10);
+  float const x_146 = (*(tint_symbol_11)).y;
+  if ((int(x_146) < 30)) {
+    int const x_153 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    float const x_158 = (*(tint_symbol_11)).y;
+    if ((int(x_158) < 60)) {
+      int const x_165 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      float const x_170 = (*(tint_symbol_11)).y;
+      if ((int(x_170) < 90)) {
+        int const x_177 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        float const x_182 = (*(tint_symbol_11)).y;
+        if ((int(x_182) < 120)) {
+          int const x_189 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          float const x_194 = (*(tint_symbol_11)).y;
+          if ((int(x_194) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_201 = (*(tint_symbol_11)).y;
+            if ((int(x_201) < 180)) {
+              int const x_208 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              float const x_213 = (*(tint_symbol_11)).y;
+              if ((int(x_213) < 210)) {
+                int const x_220 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                float const x_225 = (*(tint_symbol_11)).y;
+                if ((int(x_225) < 240)) {
+                  int const x_232 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  float const x_237 = (*(tint_symbol_11)).y;
+                  if ((int(x_237) < 270)) {
+                    int const x_244 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_248 = grey;
+  float3 const x_249 = float3(x_248, x_248, x_248);
+  *(tint_symbol_12) = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..aa67796
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.spvasm
@@ -0,0 +1,864 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 525
+; Schema: 0
+               OpCapability Shader
+        %290 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %x_285 "x_285"
+               OpName %x_286 "x_286"
+               OpName %x_305 "x_305"
+               OpName %x_306 "x_306"
+               OpName %x_320 "x_320"
+               OpName %x_324 "x_324"
+               OpName %x_339 "x_339"
+               OpName %x_338 "x_338"
+               OpName %x_352 "x_352"
+               OpName %x_351 "x_351"
+               OpName %x_366 "x_366"
+               OpName %x_365 "x_365"
+               OpName %x_287_phi "x_287_phi"
+               OpName %x_307_phi "x_307_phi"
+               OpName %x_328_phi "x_328_phi"
+               OpName %x_340_phi "x_340_phi"
+               OpName %x_353_phi "x_353_phi"
+               OpName %x_367_phi "x_367_phi"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+     %int_10 = OpConstant %int 10
+        %246 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %314 = OpConstantNull %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %512 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+      %x_285 = OpVariable %_ptr_Function_int Function %32
+      %x_286 = OpVariable %_ptr_Function_int Function %32
+      %x_305 = OpVariable %_ptr_Function_int Function %32
+      %x_306 = OpVariable %_ptr_Function_int Function %32
+      %x_320 = OpVariable %_ptr_Function_int Function %32
+      %x_324 = OpVariable %_ptr_Function_int Function %32
+      %x_339 = OpVariable %_ptr_Function_int Function %32
+      %x_338 = OpVariable %_ptr_Function_int Function %32
+      %x_352 = OpVariable %_ptr_Function_int Function %32
+      %x_351 = OpVariable %_ptr_Function_int Function %32
+      %x_366 = OpVariable %_ptr_Function_int Function %32
+      %x_365 = OpVariable %_ptr_Function_int Function %32
+  %x_287_phi = OpVariable %_ptr_Function_int Function %32
+  %x_307_phi = OpVariable %_ptr_Function_int Function %32
+  %x_328_phi = OpVariable %_ptr_Function_int Function %32
+  %x_340_phi = OpVariable %_ptr_Function_int Function %32
+  %x_353_phi = OpVariable %_ptr_Function_int Function %32
+  %x_367_phi = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %68 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+         %69 = OpLoad %float %68
+         %71 = OpFOrdGreaterThanEqual %bool %float_1 %69
+               OpSelectionMerge %73 None
+               OpBranchConditional %71 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %46
+         %73 = OpLabel
+         %76 = OpLoad %int %i
+         %78 = OpLoad %int %mid
+         %79 = OpLoad %int %j
+         %81 = OpLoad %int %to
+         %82 = OpSLessThanEqual %bool %76 %78
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpSLessThanEqual %bool %79 %81
+               OpBranch %83
+         %83 = OpLabel
+         %86 = OpPhi %bool %82 %73 %85 %84
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %45
+         %87 = OpLabel
+         %90 = OpLoad %int %i
+         %92 = OpAccessChain %_ptr_Private_int %data %90
+         %93 = OpLoad %int %92
+         %94 = OpLoad %int %j
+         %95 = OpAccessChain %_ptr_Private_int %data %94
+         %96 = OpLoad %int %95
+         %97 = OpSLessThan %bool %93 %96
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %100
+         %99 = OpLabel
+        %101 = OpLoad %int %k
+               OpStore %x_285 %101
+        %102 = OpLoad %int %x_285
+               OpStore %x_287_phi %102
+               OpBranch %98
+        %100 = OpLabel
+               OpStore %x_286 %int_0
+        %104 = OpLoad %int %x_286
+               OpStore %x_287_phi %104
+               OpBranch %98
+         %98 = OpLabel
+        %105 = OpLoad %int %x_287_phi
+        %106 = OpIAdd %int %105 %int_1
+               OpSelectionMerge %107 None
+               OpBranchConditional %97 %108 %107
+        %108 = OpLabel
+               OpStore %k %106
+        %109 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %110 = OpLoad %float %109
+        %112 = OpFOrdLessThanEqual %bool %float_1 %110
+        %111 = OpLogicalNot %bool %112
+               OpSelectionMerge %113 None
+               OpBranchConditional %111 %114 %115
+        %114 = OpLabel
+               OpBranch %113
+        %115 = OpLabel
+               OpBranch %46
+        %113 = OpLabel
+               OpBranch %107
+        %107 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %118 = OpLoad %float %117
+        %120 = OpFOrdGreaterThanEqual %bool %118 %float_0
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+               OpBranch %121
+        %123 = OpLabel
+               OpBranch %46
+        %121 = OpLabel
+               OpSelectionMerge %124 None
+               OpBranchConditional %97 %125 %126
+        %125 = OpLabel
+        %127 = OpLoad %int %i
+               OpStore %x_305 %127
+        %128 = OpLoad %int %x_305
+               OpStore %x_307_phi %128
+               OpBranch %124
+        %126 = OpLabel
+               OpStore %x_306 %int_0
+        %129 = OpLoad %int %x_306
+               OpStore %x_307_phi %129
+               OpBranch %124
+        %124 = OpLabel
+        %130 = OpLoad %int %x_307_phi
+        %131 = OpSelect %int %97 %130 %int_0
+               OpSelectionMerge %132 None
+               OpBranchConditional %97 %133 %132
+        %133 = OpLabel
+        %134 = OpIAdd %int %131 %int_1
+               OpStore %i %134
+               OpBranch %132
+        %132 = OpLabel
+               OpSelectionMerge %135 None
+               OpBranchConditional %97 %136 %137
+        %136 = OpLabel
+        %138 = OpAccessChain %_ptr_Private_int %data %131
+        %139 = OpLoad %int %138
+               OpStore %x_320 %139
+        %140 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %141 = OpLoad %float %140
+        %142 = OpLoad %int %x_320
+               OpStore %x_328_phi %142
+        %144 = OpFOrdLessThanEqual %bool %float_0 %141
+        %143 = OpLogicalNot %bool %144
+               OpSelectionMerge %145 None
+               OpBranchConditional %143 %146 %145
+        %146 = OpLabel
+               OpBranch %46
+        %145 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpStore %x_324 %int_0
+        %147 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %148 = OpLoad %float %147
+        %149 = OpLoad %int %x_324
+               OpStore %x_328_phi %149
+        %151 = OpFOrdLessThan %bool %148 %float_0
+        %150 = OpLogicalNot %bool %151
+               OpSelectionMerge %152 None
+               OpBranchConditional %150 %153 %154
+        %153 = OpLabel
+               OpBranch %152
+        %154 = OpLabel
+               OpBranch %46
+        %152 = OpLabel
+               OpBranch %135
+        %135 = OpLabel
+        %155 = OpLoad %int %x_328_phi
+               OpSelectionMerge %156 None
+               OpBranchConditional %97 %157 %156
+        %157 = OpLabel
+        %158 = OpAccessChain %_ptr_Private_int %temp %105
+        %159 = OpSelect %int %97 %155 %int_0
+               OpStore %158 %159
+               OpBranch %156
+        %156 = OpLabel
+               OpSelectionMerge %160 None
+               OpBranchConditional %97 %161 %162
+        %161 = OpLabel
+               OpStore %x_339 %int_0
+        %163 = OpLoad %int %x_339
+               OpStore %x_340_phi %163
+               OpBranch %160
+        %162 = OpLabel
+        %164 = OpLoad %int %k
+               OpStore %x_338 %164
+        %165 = OpLoad %int %x_338
+               OpStore %x_340_phi %165
+               OpBranch %160
+        %160 = OpLabel
+        %166 = OpLoad %int %x_340_phi
+               OpSelectionMerge %167 None
+               OpBranchConditional %97 %168 %169
+        %168 = OpLabel
+               OpBranch %167
+        %169 = OpLabel
+        %170 = OpIAdd %int %166 %int_1
+               OpStore %k %170
+               OpBranch %167
+        %167 = OpLabel
+        %171 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %172 = OpLoad %float %171
+        %174 = OpFOrdLessThanEqual %bool %float_1 %172
+        %173 = OpLogicalNot %bool %174
+               OpSelectionMerge %175 None
+               OpBranchConditional %173 %176 %177
+        %176 = OpLabel
+               OpBranch %175
+        %177 = OpLabel
+               OpBranch %46
+        %175 = OpLabel
+               OpSelectionMerge %178 None
+               OpBranchConditional %97 %179 %180
+        %179 = OpLabel
+               OpStore %x_352 %int_0
+        %181 = OpLoad %int %x_352
+               OpStore %x_353_phi %181
+               OpBranch %178
+        %180 = OpLabel
+        %182 = OpLoad %int %j
+               OpStore %x_351 %182
+        %183 = OpLoad %int %x_351
+               OpStore %x_353_phi %183
+               OpBranch %178
+        %178 = OpLabel
+        %184 = OpLoad %int %x_353_phi
+        %185 = OpSelect %int %97 %int_0 %184
+               OpSelectionMerge %186 None
+               OpBranchConditional %97 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+        %189 = OpIAdd %int %185 %int_1
+               OpStore %j %189
+               OpBranch %186
+        %186 = OpLabel
+               OpSelectionMerge %190 None
+               OpBranchConditional %97 %191 %192
+        %191 = OpLabel
+               OpStore %x_366 %int_0
+        %193 = OpLoad %int %x_366
+               OpStore %x_367_phi %193
+               OpBranch %190
+        %192 = OpLabel
+        %194 = OpAccessChain %_ptr_Private_int %data %185
+        %195 = OpLoad %int %194
+               OpStore %x_365 %195
+        %196 = OpLoad %int %x_365
+               OpStore %x_367_phi %196
+               OpBranch %190
+        %190 = OpLabel
+        %197 = OpLoad %int %x_367_phi
+               OpSelectionMerge %198 None
+               OpBranchConditional %97 %199 %200
+        %199 = OpLabel
+               OpBranch %198
+        %200 = OpLabel
+        %201 = OpAccessChain %_ptr_Private_int %temp %166
+               OpStore %201 %197
+               OpBranch %198
+        %198 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %202
+        %202 = OpLabel
+               OpLoopMerge %203 %204 None
+               OpBranch %205
+        %205 = OpLabel
+        %206 = OpLoad %int %i
+        %207 = OpLoad %int %i
+        %209 = OpLoad %int %mid
+        %211 = OpSLessThan %bool %206 %int_10
+               OpSelectionMerge %212 None
+               OpBranchConditional %211 %213 %212
+        %213 = OpLabel
+        %214 = OpSLessThanEqual %bool %207 %209
+               OpBranch %212
+        %212 = OpLabel
+        %215 = OpPhi %bool %211 %205 %214 %213
+               OpSelectionMerge %216 None
+               OpBranchConditional %215 %217 %218
+        %217 = OpLabel
+               OpBranch %216
+        %218 = OpLabel
+               OpBranch %203
+        %216 = OpLabel
+        %219 = OpLoad %int %k
+        %220 = OpIAdd %int %219 %int_1
+               OpStore %k %220
+        %221 = OpLoad %int %i
+        %222 = OpIAdd %int %221 %int_1
+               OpStore %i %222
+        %223 = OpAccessChain %_ptr_Private_int %data %221
+        %224 = OpLoad %int %223
+        %225 = OpAccessChain %_ptr_Private_int %temp %219
+               OpStore %225 %224
+               OpBranch %204
+        %204 = OpLabel
+               OpBranch %202
+        %203 = OpLabel
+        %227 = OpLoad %int %from
+               OpStore %i_1 %227
+               OpBranch %228
+        %228 = OpLabel
+               OpLoopMerge %229 %230 None
+               OpBranch %231
+        %231 = OpLabel
+        %232 = OpLoad %int %i_1
+        %234 = OpLoad %int %to
+        %235 = OpSLessThanEqual %bool %232 %234
+               OpSelectionMerge %236 None
+               OpBranchConditional %235 %237 %238
+        %237 = OpLabel
+               OpBranch %236
+        %238 = OpLabel
+               OpBranch %229
+        %236 = OpLabel
+        %239 = OpLoad %int %i_1
+        %240 = OpLoad %int %i_1
+        %241 = OpAccessChain %_ptr_Private_int %temp %240
+        %242 = OpLoad %int %241
+        %243 = OpAccessChain %_ptr_Private_int %data %239
+               OpStore %243 %242
+               OpBranch %230
+        %230 = OpLabel
+        %244 = OpLoad %int %i_1
+        %245 = OpIAdd %int %244 %int_1
+               OpStore %i_1 %245
+               OpBranch %228
+        %229 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %246
+        %248 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %260
+        %260 = OpLabel
+               OpLoopMerge %261 %262 None
+               OpBranch %263
+        %263 = OpLabel
+        %264 = OpLoad %int %m
+        %265 = OpLoad %int %high
+        %266 = OpSLessThanEqual %bool %264 %265
+               OpSelectionMerge %267 None
+               OpBranchConditional %266 %268 %269
+        %268 = OpLabel
+               OpBranch %267
+        %269 = OpLabel
+               OpBranch %261
+        %267 = OpLabel
+        %270 = OpLoad %int %low
+               OpStore %i_2 %270
+               OpBranch %271
+        %271 = OpLabel
+               OpLoopMerge %272 %273 None
+               OpBranch %274
+        %274 = OpLabel
+        %275 = OpLoad %int %i_2
+        %276 = OpLoad %int %high
+        %277 = OpSLessThan %bool %275 %276
+               OpSelectionMerge %278 None
+               OpBranchConditional %277 %279 %280
+        %279 = OpLabel
+               OpBranch %278
+        %280 = OpLabel
+               OpBranch %272
+        %278 = OpLabel
+        %281 = OpLoad %int %i_2
+               OpStore %from_1 %281
+        %282 = OpLoad %int %i_2
+        %283 = OpLoad %int %m
+        %284 = OpIAdd %int %282 %283
+        %285 = OpISub %int %284 %int_1
+               OpStore %mid_1 %285
+        %286 = OpLoad %int %i_2
+        %287 = OpLoad %int %m
+        %288 = OpLoad %int %high
+        %292 = OpIMul %int %int_2 %287
+        %293 = OpIAdd %int %286 %292
+        %294 = OpISub %int %293 %int_1
+        %289 = OpExtInst %int %290 SMin %294 %288
+               OpStore %to_1 %289
+        %295 = OpLoad %int %from_1
+               OpStore %param %295
+        %296 = OpLoad %int %mid_1
+               OpStore %param_1 %296
+        %297 = OpLoad %int %to_1
+               OpStore %param_2 %297
+        %298 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %273
+        %273 = OpLabel
+        %302 = OpLoad %int %m
+        %303 = OpLoad %int %i_2
+        %304 = OpIMul %int %int_2 %302
+        %305 = OpIAdd %int %303 %304
+               OpStore %i_2 %305
+               OpBranch %271
+        %272 = OpLabel
+               OpBranch %262
+        %262 = OpLabel
+        %306 = OpLoad %int %m
+        %307 = OpIMul %int %int_2 %306
+               OpStore %m %307
+               OpBranch %260
+        %261 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %246
+        %309 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %314
+        %315 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %316 = OpLoad %float %315
+        %317 = OpConvertFToS %int %316
+               OpStore %i_3 %317
+               OpBranch %318
+        %318 = OpLabel
+               OpLoopMerge %319 %320 None
+               OpBranch %321
+        %321 = OpLabel
+        %322 = OpLoad %int %i_3
+               OpSelectionMerge %323 None
+               OpSwitch %322 %324 9 %325 8 %326 7 %327 6 %328 5 %329 4 %330 3 %331 2 %332 1 %333 0 %334
+        %325 = OpLabel
+        %335 = OpLoad %int %i_3
+        %336 = OpAccessChain %_ptr_Private_int %data %335
+               OpStore %336 %int_n5
+               OpBranch %323
+        %326 = OpLabel
+        %338 = OpLoad %int %i_3
+        %339 = OpAccessChain %_ptr_Private_int %data %338
+               OpStore %339 %int_n4
+               OpBranch %323
+        %327 = OpLabel
+        %341 = OpLoad %int %i_3
+        %342 = OpAccessChain %_ptr_Private_int %data %341
+               OpStore %342 %int_n3
+               OpBranch %323
+        %328 = OpLabel
+        %344 = OpLoad %int %i_3
+        %345 = OpAccessChain %_ptr_Private_int %data %344
+               OpStore %345 %int_n2
+               OpBranch %323
+        %329 = OpLabel
+        %347 = OpLoad %int %i_3
+        %348 = OpAccessChain %_ptr_Private_int %data %347
+               OpStore %348 %int_n1
+               OpBranch %323
+        %330 = OpLabel
+        %350 = OpLoad %int %i_3
+        %351 = OpAccessChain %_ptr_Private_int %data %350
+               OpStore %351 %int_0
+               OpBranch %323
+        %331 = OpLabel
+        %352 = OpLoad %int %i_3
+        %353 = OpAccessChain %_ptr_Private_int %data %352
+               OpStore %353 %int_1
+               OpBranch %323
+        %332 = OpLabel
+        %354 = OpLoad %int %i_3
+        %355 = OpAccessChain %_ptr_Private_int %data %354
+               OpStore %355 %int_2
+               OpBranch %323
+        %333 = OpLabel
+        %356 = OpLoad %int %i_3
+        %357 = OpAccessChain %_ptr_Private_int %data %356
+               OpStore %357 %int_3
+               OpBranch %323
+        %334 = OpLabel
+        %359 = OpLoad %int %i_3
+        %360 = OpAccessChain %_ptr_Private_int %data %359
+               OpStore %360 %int_4
+               OpBranch %323
+        %324 = OpLabel
+               OpBranch %323
+        %323 = OpLabel
+        %362 = OpLoad %int %i_3
+        %363 = OpIAdd %int %362 %int_1
+               OpStore %i_3 %363
+               OpBranch %320
+        %320 = OpLabel
+        %364 = OpLoad %int %i_3
+        %365 = OpSLessThan %bool %364 %int_10
+               OpSelectionMerge %366 None
+               OpBranchConditional %365 %367 %368
+        %367 = OpLabel
+               OpBranch %366
+        %368 = OpLabel
+               OpBranch %319
+        %366 = OpLabel
+               OpBranch %318
+        %319 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %369
+        %369 = OpLabel
+               OpLoopMerge %370 %371 None
+               OpBranch %372
+        %372 = OpLabel
+        %373 = OpLoad %int %j_1
+        %374 = OpSLessThan %bool %373 %int_10
+               OpSelectionMerge %375 None
+               OpBranchConditional %374 %376 %377
+        %376 = OpLabel
+               OpBranch %375
+        %377 = OpLabel
+               OpBranch %370
+        %375 = OpLabel
+        %378 = OpLoad %int %j_1
+        %379 = OpLoad %int %j_1
+        %380 = OpAccessChain %_ptr_Private_int %data %379
+        %381 = OpLoad %int %380
+        %382 = OpAccessChain %_ptr_Private_int %temp %378
+               OpStore %382 %381
+               OpBranch %371
+        %371 = OpLabel
+        %383 = OpLoad %int %j_1
+        %384 = OpIAdd %int %383 %int_1
+               OpStore %j_1 %384
+               OpBranch %369
+        %370 = OpLabel
+        %385 = OpFunctionCall %void %mergeSort_
+        %387 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %388 = OpLoad %float %387
+        %389 = OpConvertFToS %int %388
+        %391 = OpSLessThan %bool %389 %int_30
+               OpSelectionMerge %392 None
+               OpBranchConditional %391 %393 %394
+        %393 = OpLabel
+        %395 = OpAccessChain %_ptr_Private_int %data %int_0
+        %396 = OpLoad %int %395
+        %398 = OpConvertSToF %float %396
+        %400 = OpFDiv %float %398 %float_10
+        %401 = OpFAdd %float %float_0_5 %400
+               OpStore %grey %401
+               OpBranch %392
+        %394 = OpLabel
+        %402 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %403 = OpLoad %float %402
+        %404 = OpConvertFToS %int %403
+        %406 = OpSLessThan %bool %404 %int_60
+               OpSelectionMerge %407 None
+               OpBranchConditional %406 %408 %409
+        %408 = OpLabel
+        %410 = OpAccessChain %_ptr_Private_int %data %int_1
+        %411 = OpLoad %int %410
+        %412 = OpConvertSToF %float %411
+        %413 = OpFDiv %float %412 %float_10
+        %414 = OpFAdd %float %float_0_5 %413
+               OpStore %grey %414
+               OpBranch %407
+        %409 = OpLabel
+        %415 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %416 = OpLoad %float %415
+        %417 = OpConvertFToS %int %416
+        %419 = OpSLessThan %bool %417 %int_90
+               OpSelectionMerge %420 None
+               OpBranchConditional %419 %421 %422
+        %421 = OpLabel
+        %423 = OpAccessChain %_ptr_Private_int %data %int_2
+        %424 = OpLoad %int %423
+        %425 = OpConvertSToF %float %424
+        %426 = OpFDiv %float %425 %float_10
+        %427 = OpFAdd %float %float_0_5 %426
+               OpStore %grey %427
+               OpBranch %420
+        %422 = OpLabel
+        %428 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %429 = OpLoad %float %428
+        %430 = OpConvertFToS %int %429
+        %432 = OpSLessThan %bool %430 %int_120
+               OpSelectionMerge %433 None
+               OpBranchConditional %432 %434 %435
+        %434 = OpLabel
+        %436 = OpAccessChain %_ptr_Private_int %data %int_3
+        %437 = OpLoad %int %436
+        %438 = OpConvertSToF %float %437
+        %439 = OpFDiv %float %438 %float_10
+        %440 = OpFAdd %float %float_0_5 %439
+               OpStore %grey %440
+               OpBranch %433
+        %435 = OpLabel
+        %441 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %442 = OpLoad %float %441
+        %443 = OpConvertFToS %int %442
+        %445 = OpSLessThan %bool %443 %int_150
+               OpSelectionMerge %446 None
+               OpBranchConditional %445 %447 %448
+        %447 = OpLabel
+               OpKill
+        %448 = OpLabel
+        %449 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %450 = OpLoad %float %449
+        %451 = OpConvertFToS %int %450
+        %453 = OpSLessThan %bool %451 %int_180
+               OpSelectionMerge %454 None
+               OpBranchConditional %453 %455 %456
+        %455 = OpLabel
+        %458 = OpAccessChain %_ptr_Private_int %data %int_5
+        %459 = OpLoad %int %458
+        %460 = OpConvertSToF %float %459
+        %461 = OpFDiv %float %460 %float_10
+        %462 = OpFAdd %float %float_0_5 %461
+               OpStore %grey %462
+               OpBranch %454
+        %456 = OpLabel
+        %463 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %464 = OpLoad %float %463
+        %465 = OpConvertFToS %int %464
+        %467 = OpSLessThan %bool %465 %int_210
+               OpSelectionMerge %468 None
+               OpBranchConditional %467 %469 %470
+        %469 = OpLabel
+        %472 = OpAccessChain %_ptr_Private_int %data %int_6
+        %473 = OpLoad %int %472
+        %474 = OpConvertSToF %float %473
+        %475 = OpFDiv %float %474 %float_10
+        %476 = OpFAdd %float %float_0_5 %475
+               OpStore %grey %476
+               OpBranch %468
+        %470 = OpLabel
+        %477 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %478 = OpLoad %float %477
+        %479 = OpConvertFToS %int %478
+        %481 = OpSLessThan %bool %479 %int_240
+               OpSelectionMerge %482 None
+               OpBranchConditional %481 %483 %484
+        %483 = OpLabel
+        %486 = OpAccessChain %_ptr_Private_int %data %int_7
+        %487 = OpLoad %int %486
+        %488 = OpConvertSToF %float %487
+        %489 = OpFDiv %float %488 %float_10
+        %490 = OpFAdd %float %float_0_5 %489
+               OpStore %grey %490
+               OpBranch %482
+        %484 = OpLabel
+        %491 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %492 = OpLoad %float %491
+        %493 = OpConvertFToS %int %492
+        %495 = OpSLessThan %bool %493 %int_270
+               OpSelectionMerge %496 None
+               OpBranchConditional %495 %497 %498
+        %497 = OpLabel
+        %500 = OpAccessChain %_ptr_Private_int %data %int_8
+        %501 = OpLoad %int %500
+        %502 = OpConvertSToF %float %501
+        %503 = OpFDiv %float %502 %float_10
+        %504 = OpFAdd %float %float_0_5 %503
+               OpStore %grey %504
+               OpBranch %496
+        %498 = OpLabel
+               OpKill
+        %496 = OpLabel
+               OpBranch %482
+        %482 = OpLabel
+               OpBranch %468
+        %468 = OpLabel
+               OpBranch %454
+        %454 = OpLabel
+               OpBranch %446
+        %446 = OpLabel
+               OpBranch %433
+        %433 = OpLabel
+               OpBranch %420
+        %420 = OpLabel
+               OpBranch %407
+        %407 = OpLabel
+               OpBranch %392
+        %392 = OpLabel
+        %505 = OpLoad %float %grey
+        %507 = OpCompositeConstruct %v3float %505 %505 %505
+        %508 = OpCompositeExtract %float %507 0
+        %509 = OpCompositeExtract %float %507 1
+        %510 = OpCompositeExtract %float %507 2
+        %511 = OpCompositeConstruct %v4float %508 %509 %510 %float_1
+               OpStore %x_GLF_color %511
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %512
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %516 = OpLabel
+        %517 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %517
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %246
+        %519 = OpLabel
+        %520 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %520
+        %521 = OpFunctionCall %void %main_1
+        %523 = OpLoad %v4float %x_GLF_color
+        %524 = OpCompositeConstruct %main_out %523
+        %522 = OpFunctionCall %void %tint_symbol_3 %524
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 320[%320] is not post dominated by the back-edge block 366[%366]
+  %366 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..5fac853
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl.expected.wgsl
@@ -0,0 +1,414 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_255 : i32 = *(from);
+  k = x_255;
+  let x_256 : i32 = *(from);
+  i = x_256;
+  let x_257 : i32 = *(mid);
+  j = (x_257 + 1);
+  loop {
+    var x_285 : i32;
+    var x_286 : i32;
+    var x_305 : i32;
+    var x_306 : i32;
+    var x_320 : i32;
+    var x_324 : i32;
+    var x_339 : i32;
+    var x_338 : i32;
+    var x_352 : i32;
+    var x_351 : i32;
+    var x_366 : i32;
+    var x_365 : i32;
+    var x_287_phi : i32;
+    var x_307_phi : i32;
+    var x_328_phi : i32;
+    var x_340_phi : i32;
+    var x_353_phi : i32;
+    var x_367_phi : i32;
+    let x_261 : f32 = x_28.injectionSwitch.x;
+    if ((1.0 >= x_261)) {
+    } else {
+      continue;
+    }
+    let x_266 : i32 = i;
+    let x_267 : i32 = *(mid);
+    let x_269 : i32 = j;
+    let x_270 : i32 = *(to);
+    if (((x_266 <= x_267) && (x_269 <= x_270))) {
+    } else {
+      break;
+    }
+    let x_274 : i32 = i;
+    let x_276 : i32 = data[x_274];
+    let x_277 : i32 = j;
+    let x_279 : i32 = data[x_277];
+    let x_280 : bool = (x_276 < x_279);
+    if (x_280) {
+      x_285 = k;
+      x_287_phi = x_285;
+    } else {
+      x_286 = 0;
+      x_287_phi = x_286;
+    }
+    let x_287 : i32 = x_287_phi;
+    let x_288 : i32 = (x_287 + 1);
+    if (x_280) {
+      k = x_288;
+      let x_293 : f32 = x_28.injectionSwitch.x;
+      if (!((1.0 <= x_293))) {
+      } else {
+        continue;
+      }
+    }
+    let x_297 : f32 = x_28.injectionSwitch.y;
+    if ((x_297 >= 0.0)) {
+    } else {
+      continue;
+    }
+    let x_300 : i32 = 0;
+    if (x_280) {
+      x_305 = i;
+      x_307_phi = x_305;
+    } else {
+      x_306 = 0;
+      x_307_phi = x_306;
+    }
+    let x_307 : i32 = x_307_phi;
+    let x_309 : i32 = select(x_300, x_307, x_280);
+    if (x_280) {
+      i = (x_309 + 1);
+    }
+    let x_315 : i32 = 0;
+    if (x_280) {
+      x_320 = data[x_309];
+      let x_322 : f32 = x_28.injectionSwitch.y;
+      x_328_phi = x_320;
+      if (!((0.0 <= x_322))) {
+        continue;
+      }
+    } else {
+      x_324 = 0;
+      let x_326 : f32 = x_28.injectionSwitch.y;
+      x_328_phi = x_324;
+      if (!((x_326 < 0.0))) {
+      } else {
+        continue;
+      }
+    }
+    let x_328 : i32 = x_328_phi;
+    if (x_280) {
+      temp[x_287] = select(x_315, x_328, x_280);
+    }
+    if (x_280) {
+      x_339 = 0;
+      x_340_phi = x_339;
+    } else {
+      x_338 = k;
+      x_340_phi = x_338;
+    }
+    let x_340 : i32 = x_340_phi;
+    if (x_280) {
+    } else {
+      k = (x_340 + 1);
+    }
+    let x_345 : f32 = x_28.injectionSwitch.x;
+    if (!((1.0 <= x_345))) {
+    } else {
+      continue;
+    }
+    if (x_280) {
+      x_352 = 0;
+      x_353_phi = x_352;
+    } else {
+      x_351 = j;
+      x_353_phi = x_351;
+    }
+    let x_353 : i32 = x_353_phi;
+    let x_355 : i32 = 0;
+    let x_357 : i32 = select(x_353, x_355, x_280);
+    if (x_280) {
+    } else {
+      j = (x_357 + 1);
+    }
+    if (x_280) {
+      x_366 = 0;
+      x_367_phi = x_366;
+    } else {
+      x_365 = data[x_357];
+      x_367_phi = x_365;
+    }
+    let x_367 : i32 = x_367_phi;
+    if (x_280) {
+    } else {
+      temp[x_340] = x_367;
+    }
+  }
+  loop {
+    let x_376 : i32 = i;
+    let x_378 : i32 = i;
+    let x_379 : i32 = *(mid);
+    if (((x_376 < 10) && (x_378 <= x_379))) {
+    } else {
+      break;
+    }
+    let x_383 : i32 = k;
+    k = (x_383 + 1);
+    let x_385 : i32 = i;
+    i = (x_385 + 1);
+    let x_388 : i32 = data[x_385];
+    temp[x_383] = x_388;
+  }
+  let x_390 : i32 = *(from);
+  i_1 = x_390;
+  loop {
+    let x_395 : i32 = i_1;
+    let x_396 : i32 = *(to);
+    if ((x_395 <= x_396)) {
+    } else {
+      break;
+    }
+    let x_399 : i32 = i_1;
+    let x_400 : i32 = i_1;
+    let x_402 : i32 = temp[x_400];
+    data[x_399] = x_402;
+
+    continuing {
+      let x_404 : i32 = i_1;
+      i_1 = (x_404 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_411 : i32 = m;
+    let x_412 : i32 = high;
+    if ((x_411 <= x_412)) {
+    } else {
+      break;
+    }
+    let x_415 : i32 = low;
+    i_2 = x_415;
+    loop {
+      let x_420 : i32 = i_2;
+      let x_421 : i32 = high;
+      if ((x_420 < x_421)) {
+      } else {
+        break;
+      }
+      let x_424 : i32 = i_2;
+      from_1 = x_424;
+      let x_425 : i32 = i_2;
+      let x_426 : i32 = m;
+      mid_1 = ((x_425 + x_426) - 1);
+      let x_429 : i32 = i_2;
+      let x_430 : i32 = m;
+      let x_434 : i32 = high;
+      to_1 = min(((x_429 + (2 * x_430)) - 1), x_434);
+      let x_436 : i32 = from_1;
+      param = x_436;
+      let x_437 : i32 = mid_1;
+      param_1 = x_437;
+      let x_438 : i32 = to_1;
+      param_2 = x_438;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_440 : i32 = m;
+        let x_442 : i32 = i_2;
+        i_2 = (x_442 + (2 * x_440));
+      }
+    }
+
+    continuing {
+      let x_444 : i32 = m;
+      m = (2 * x_444);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_88 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_88);
+  loop {
+    let x_94 : i32 = i_3;
+    switch(x_94) {
+      case 9: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -5;
+      }
+      case 8: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -4;
+      }
+      case 7: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -3;
+      }
+      case 6: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -2;
+      }
+      case 5: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -1;
+      }
+      case 4: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 0;
+      }
+      case 3: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 1;
+      }
+      case 2: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 2;
+      }
+      case 1: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 3;
+      }
+      case 0: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 4;
+      }
+      default: {
+      }
+    }
+    let x_126 : i32 = i_3;
+    i_3 = (x_126 + 1);
+
+    continuing {
+      let x_128 : i32 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_134 : i32 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    let x_137 : i32 = j_1;
+    let x_138 : i32 = j_1;
+    let x_140 : i32 = data[x_138];
+    temp[x_137] = x_140;
+
+    continuing {
+      let x_142 : i32 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_();
+  let x_146 : f32 = gl_FragCoord.y;
+  if ((i32(x_146) < 30)) {
+    let x_153 : i32 = data[0];
+    grey = (0.5 + (f32(x_153) / 10.0));
+  } else {
+    let x_158 : f32 = gl_FragCoord.y;
+    if ((i32(x_158) < 60)) {
+      let x_165 : i32 = data[1];
+      grey = (0.5 + (f32(x_165) / 10.0));
+    } else {
+      let x_170 : f32 = gl_FragCoord.y;
+      if ((i32(x_170) < 90)) {
+        let x_177 : i32 = data[2];
+        grey = (0.5 + (f32(x_177) / 10.0));
+      } else {
+        let x_182 : f32 = gl_FragCoord.y;
+        if ((i32(x_182) < 120)) {
+          let x_189 : i32 = data[3];
+          grey = (0.5 + (f32(x_189) / 10.0));
+        } else {
+          let x_194 : f32 = gl_FragCoord.y;
+          if ((i32(x_194) < 150)) {
+            discard;
+          } else {
+            let x_201 : f32 = gl_FragCoord.y;
+            if ((i32(x_201) < 180)) {
+              let x_208 : i32 = data[5];
+              grey = (0.5 + (f32(x_208) / 10.0));
+            } else {
+              let x_213 : f32 = gl_FragCoord.y;
+              if ((i32(x_213) < 210)) {
+                let x_220 : i32 = data[6];
+                grey = (0.5 + (f32(x_220) / 10.0));
+              } else {
+                let x_225 : f32 = gl_FragCoord.y;
+                if ((i32(x_225) < 240)) {
+                  let x_232 : i32 = data[7];
+                  grey = (0.5 + (f32(x_232) / 10.0));
+                } else {
+                  let x_237 : f32 = gl_FragCoord.y;
+                  if ((i32(x_237) < 270)) {
+                    let x_244 : i32 = data[8];
+                    grey = (0.5 + (f32(x_244) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_248 : f32 = grey;
+  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
+  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm
new file mode 100644
index 0000000..5ddec35
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm
@@ -0,0 +1,686 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+    %int_0_0 = OpConstant %int 0
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+    %float_0 = OpConstant %float 0
+       %main = OpFunction %void None %32
+         %86 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %87 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpConvertFToS %int %88
+               OpStore %i_2 %89
+               OpBranch %90
+         %90 = OpLabel
+               OpLoopMerge %91 %92 None
+               OpBranch %93
+         %93 = OpLabel
+         %94 = OpLoad %int %i_2
+               OpSelectionMerge %95 None
+               OpSwitch %94 %95 0 %96 1 %97 2 %98 3 %99 4 %100 5 %101 6 %102 7 %103 8 %104 9 %105
+         %96 = OpLabel
+        %106 = OpLoad %int %i_2
+        %107 = OpAccessChain %_ptr_Private_int %data %106
+               OpStore %107 %int_4
+               OpBranch %95
+         %97 = OpLabel
+        %108 = OpLoad %int %i_2
+        %109 = OpAccessChain %_ptr_Private_int %data %108
+               OpStore %109 %int_3
+               OpBranch %95
+         %98 = OpLabel
+        %110 = OpLoad %int %i_2
+        %111 = OpAccessChain %_ptr_Private_int %data %110
+               OpStore %111 %int_2
+               OpBranch %95
+         %99 = OpLabel
+        %112 = OpLoad %int %i_2
+        %113 = OpAccessChain %_ptr_Private_int %data %112
+               OpStore %113 %int_1
+               OpBranch %95
+        %100 = OpLabel
+        %114 = OpLoad %int %i_2
+        %115 = OpAccessChain %_ptr_Private_int %data %114
+               OpStore %115 %int_0
+               OpBranch %95
+        %101 = OpLabel
+        %116 = OpLoad %int %i_2
+        %117 = OpAccessChain %_ptr_Private_int %data %116
+               OpStore %117 %int_n1
+               OpBranch %95
+        %102 = OpLabel
+        %118 = OpLoad %int %i_2
+        %119 = OpAccessChain %_ptr_Private_int %data %118
+               OpStore %119 %int_n2
+               OpBranch %95
+        %103 = OpLabel
+        %120 = OpLoad %int %i_2
+        %121 = OpAccessChain %_ptr_Private_int %data %120
+               OpStore %121 %int_n3
+               OpBranch %95
+        %104 = OpLabel
+        %122 = OpLoad %int %i_2
+        %123 = OpAccessChain %_ptr_Private_int %data %122
+               OpStore %123 %int_n4
+               OpBranch %95
+        %105 = OpLabel
+        %124 = OpLoad %int %i_2
+        %125 = OpAccessChain %_ptr_Private_int %data %124
+               OpStore %125 %int_n5
+               OpBranch %95
+         %95 = OpLabel
+        %126 = OpLoad %int %i_2
+        %127 = OpIAdd %int %126 %int_1
+               OpStore %i_2 %127
+               OpBranch %92
+         %92 = OpLabel
+        %128 = OpLoad %int %i_2
+        %129 = OpSLessThan %bool %128 %int_10
+               OpBranchConditional %129 %90 %91
+         %91 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %130
+        %130 = OpLabel
+               OpLoopMerge %131 %132 None
+               OpBranch %133
+        %133 = OpLabel
+        %134 = OpLoad %int %j_0
+        %135 = OpSLessThan %bool %134 %int_10
+               OpBranchConditional %135 %136 %131
+        %136 = OpLabel
+        %137 = OpLoad %int %j_0
+        %138 = OpLoad %int %j_0
+        %139 = OpAccessChain %_ptr_Private_int %data %138
+        %140 = OpLoad %int %139
+        %141 = OpAccessChain %_ptr_Private_int %temp %137
+               OpStore %141 %140
+               OpBranch %132
+        %132 = OpLabel
+        %142 = OpLoad %int %j_0
+        %143 = OpIAdd %int %142 %int_1
+               OpStore %j_0 %143
+               OpBranch %130
+        %131 = OpLabel
+        %144 = OpFunctionCall %void %mergeSort_
+        %145 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %146 = OpLoad %float %145
+        %147 = OpConvertFToS %int %146
+        %148 = OpSLessThan %bool %147 %int_30
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %151
+        %150 = OpLabel
+        %152 = OpAccessChain %_ptr_Private_int %data %int_0
+        %153 = OpLoad %int %152
+        %154 = OpConvertSToF %float %153
+        %155 = OpFDiv %float %154 %float_10
+        %156 = OpFAdd %float %float_0_5 %155
+               OpStore %grey %156
+               OpBranch %149
+        %151 = OpLabel
+        %157 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %158 = OpLoad %float %157
+        %159 = OpConvertFToS %int %158
+        %160 = OpSLessThan %bool %159 %int_60
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+        %164 = OpAccessChain %_ptr_Private_int %data %int_1
+        %165 = OpLoad %int %164
+        %166 = OpConvertSToF %float %165
+        %167 = OpFDiv %float %166 %float_10
+        %168 = OpFAdd %float %float_0_5 %167
+               OpStore %grey %168
+               OpBranch %161
+        %163 = OpLabel
+        %169 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %170 = OpLoad %float %169
+        %171 = OpConvertFToS %int %170
+        %172 = OpSLessThan %bool %171 %int_90
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %175
+        %174 = OpLabel
+        %176 = OpAccessChain %_ptr_Private_int %data %int_2
+        %177 = OpLoad %int %176
+        %178 = OpConvertSToF %float %177
+        %179 = OpFDiv %float %178 %float_10
+        %180 = OpFAdd %float %float_0_5 %179
+               OpStore %grey %180
+               OpBranch %173
+        %175 = OpLabel
+        %181 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %182 = OpLoad %float %181
+        %183 = OpConvertFToS %int %182
+        %184 = OpSLessThan %bool %183 %int_120
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %187
+        %186 = OpLabel
+        %188 = OpAccessChain %_ptr_Private_int %data %int_3
+        %189 = OpLoad %int %188
+        %190 = OpConvertSToF %float %189
+        %191 = OpFDiv %float %190 %float_10
+        %192 = OpFAdd %float %float_0_5 %191
+               OpStore %grey %192
+               OpBranch %185
+        %187 = OpLabel
+        %193 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %194 = OpLoad %float %193
+        %195 = OpConvertFToS %int %194
+        %196 = OpSLessThan %bool %195 %int_150
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %199
+        %198 = OpLabel
+               OpKill
+        %199 = OpLabel
+        %200 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %201 = OpLoad %float %200
+        %202 = OpConvertFToS %int %201
+        %203 = OpSLessThan %bool %202 %int_180
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %205 = OpLabel
+        %207 = OpAccessChain %_ptr_Private_int %data %int_5
+        %208 = OpLoad %int %207
+        %209 = OpConvertSToF %float %208
+        %210 = OpFDiv %float %209 %float_10
+        %211 = OpFAdd %float %float_0_5 %210
+               OpStore %grey %211
+               OpBranch %204
+        %206 = OpLabel
+        %212 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %213 = OpLoad %float %212
+        %214 = OpConvertFToS %int %213
+        %215 = OpSLessThan %bool %214 %int_210
+               OpSelectionMerge %216 None
+               OpBranchConditional %215 %217 %218
+        %217 = OpLabel
+        %219 = OpAccessChain %_ptr_Private_int %data %int_6
+        %220 = OpLoad %int %219
+        %221 = OpConvertSToF %float %220
+        %222 = OpFDiv %float %221 %float_10
+        %223 = OpFAdd %float %float_0_5 %222
+               OpStore %grey %223
+               OpBranch %216
+        %218 = OpLabel
+        %224 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %225 = OpLoad %float %224
+        %226 = OpConvertFToS %int %225
+        %227 = OpSLessThan %bool %226 %int_240
+               OpSelectionMerge %228 None
+               OpBranchConditional %227 %229 %230
+        %229 = OpLabel
+        %231 = OpAccessChain %_ptr_Private_int %data %int_7
+        %232 = OpLoad %int %231
+        %233 = OpConvertSToF %float %232
+        %234 = OpFDiv %float %233 %float_10
+        %235 = OpFAdd %float %float_0_5 %234
+               OpStore %grey %235
+               OpBranch %228
+        %230 = OpLabel
+        %236 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %237 = OpLoad %float %236
+        %238 = OpConvertFToS %int %237
+        %239 = OpSLessThan %bool %238 %int_270
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %242
+        %241 = OpLabel
+        %243 = OpAccessChain %_ptr_Private_int %data %int_8
+        %244 = OpLoad %int %243
+        %245 = OpConvertSToF %float %244
+        %246 = OpFDiv %float %245 %float_10
+        %247 = OpFAdd %float %float_0_5 %246
+               OpStore %grey %247
+               OpBranch %240
+        %242 = OpLabel
+               OpKill
+        %240 = OpLabel
+               OpBranch %228
+        %228 = OpLabel
+               OpBranch %216
+        %216 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+               OpBranch %197
+        %197 = OpLabel
+               OpBranch %185
+        %185 = OpLabel
+               OpBranch %173
+        %173 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %248 = OpLoad %float %grey
+        %249 = OpCompositeConstruct %v3float %248 %248 %248
+        %250 = OpCompositeExtract %float %249 0
+        %251 = OpCompositeExtract %float %249 1
+        %252 = OpCompositeExtract %float %249 2
+        %253 = OpCompositeConstruct %v4float %250 %251 %252 %float_1
+               OpStore %_GLF_color %253
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %35
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %254 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %255 = OpLoad %int %from
+               OpStore %k %255
+        %256 = OpLoad %int %from
+               OpStore %i %256
+        %257 = OpLoad %int %mid
+        %258 = OpIAdd %int %257 %int_1
+               OpStore %j %258
+               OpBranch %259
+        %259 = OpLabel
+        %260 = OpFOrdGreaterThanEqual %bool %float_1 %float_0
+               OpLoopMerge %261 %262 None
+               OpBranchConditional %260 %263 %262
+        %263 = OpLabel
+        %264 = OpLoad %int %i
+        %265 = OpLoad %int %mid
+        %266 = OpSLessThanEqual %bool %264 %265
+        %267 = OpLoad %int %j
+        %268 = OpLoad %int %to
+        %269 = OpSLessThanEqual %bool %267 %268
+        %270 = OpLogicalAnd %bool %266 %269
+               OpBranchConditional %270 %271 %261
+        %271 = OpLabel
+        %272 = OpLoad %int %i
+        %273 = OpAccessChain %_ptr_Private_int %data %272
+        %274 = OpLoad %int %273
+        %275 = OpLoad %int %j
+        %276 = OpAccessChain %_ptr_Private_int %data %275
+        %277 = OpLoad %int %276
+        %278 = OpSLessThan %bool %274 %277
+               OpBranch %279
+        %279 = OpLabel
+               OpSelectionMerge %280 None
+               OpBranchConditional %278 %281 %282
+        %281 = OpLabel
+        %283 = OpLoad %int %k
+               OpBranch %280
+        %282 = OpLabel
+        %284 = OpCopyObject %int %int_0_0
+               OpBranch %280
+        %280 = OpLabel
+        %285 = OpPhi %int %283 %281 %284 %282
+        %286 = OpIAdd %int %285 %int_1
+               OpBranch %287
+        %287 = OpLabel
+               OpSelectionMerge %288 None
+               OpBranchConditional %278 %289 %288
+        %289 = OpLabel
+               OpStore %k %286
+        %290 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %291 = OpLoad %float %290
+        %292 = OpFUnordGreaterThan %bool %float_1 %291
+               OpBranchConditional %292 %288 %262
+        %288 = OpLabel
+               OpBranch %293
+        %293 = OpLabel
+        %294 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %295 = OpLoad %float %294
+        %296 = OpFOrdGreaterThanEqual %bool %295 %float_0
+               OpBranchConditional %296 %297 %262
+        %297 = OpLabel
+        %298 = OpCopyObject %int %int_0_0
+               OpBranch %299
+        %299 = OpLabel
+               OpSelectionMerge %300 None
+               OpBranchConditional %278 %301 %302
+        %301 = OpLabel
+        %303 = OpLoad %int %i
+               OpBranch %300
+        %302 = OpLabel
+        %304 = OpCopyObject %int %int_0_0
+               OpBranch %300
+        %300 = OpLabel
+        %305 = OpPhi %int %303 %301 %304 %302
+               OpBranch %306
+        %306 = OpLabel
+        %307 = OpSelect %int %278 %305 %298
+        %308 = OpIAdd %int %307 %int_1
+               OpSelectionMerge %309 None
+               OpBranchConditional %278 %310 %309
+        %310 = OpLabel
+               OpStore %i %308
+               OpBranch %309
+        %309 = OpLabel
+        %311 = OpAccessChain %_ptr_Private_int %data %307
+               OpBranch %312
+        %312 = OpLabel
+        %313 = OpCopyObject %int %int_0_0
+               OpBranch %314
+        %314 = OpLabel
+               OpSelectionMerge %315 None
+               OpBranchConditional %278 %316 %317
+        %316 = OpLabel
+        %318 = OpLoad %int %311
+        %319 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %320 = OpLoad %float %319
+        %321 = OpFUnordGreaterThan %bool %float_0 %320
+               OpBranchConditional %321 %262 %315
+        %317 = OpLabel
+        %322 = OpCopyObject %int %int_0_0
+        %323 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_1
+        %324 = OpLoad %float %323
+        %325 = OpFUnordGreaterThanEqual %bool %324 %float_0
+               OpBranchConditional %325 %315 %262
+        %315 = OpLabel
+        %326 = OpPhi %int %318 %316 %322 %317
+               OpBranch %327
+        %327 = OpLabel
+        %328 = OpSelect %int %278 %326 %313
+        %329 = OpAccessChain %_ptr_Private_int %temp %285
+               OpSelectionMerge %330 None
+               OpBranchConditional %278 %331 %330
+        %331 = OpLabel
+               OpStore %329 %328
+               OpBranch %330
+        %330 = OpLabel
+               OpBranch %332
+        %332 = OpLabel
+               OpSelectionMerge %333 None
+               OpBranchConditional %278 %334 %335
+        %335 = OpLabel
+        %336 = OpLoad %int %k
+               OpBranch %333
+        %334 = OpLabel
+        %337 = OpCopyObject %int %int_0_0
+               OpBranch %333
+        %333 = OpLabel
+        %338 = OpPhi %int %336 %335 %337 %334
+        %339 = OpIAdd %int %338 %int_1
+               OpSelectionMerge %340 None
+               OpBranchConditional %278 %340 %341
+        %341 = OpLabel
+               OpStore %k %339
+               OpBranch %340
+        %340 = OpLabel
+        %342 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+        %343 = OpLoad %float %342
+        %344 = OpFUnordGreaterThan %bool %float_1 %343
+               OpBranchConditional %344 %345 %262
+        %345 = OpLabel
+               OpSelectionMerge %346 None
+               OpBranchConditional %278 %347 %348
+        %348 = OpLabel
+        %349 = OpLoad %int %j
+               OpBranch %346
+        %347 = OpLabel
+        %350 = OpCopyObject %int %int_0_0
+               OpBranch %346
+        %346 = OpLabel
+        %351 = OpPhi %int %349 %348 %350 %347
+               OpBranch %352
+        %352 = OpLabel
+        %353 = OpCopyObject %int %int_0_0
+               OpBranch %354
+        %354 = OpLabel
+        %355 = OpSelect %int %278 %353 %351
+        %356 = OpIAdd %int %355 %int_1
+               OpSelectionMerge %357 None
+               OpBranchConditional %278 %357 %358
+        %358 = OpLabel
+               OpStore %j %356
+               OpBranch %357
+        %357 = OpLabel
+        %359 = OpAccessChain %_ptr_Private_int %data %355
+               OpSelectionMerge %360 None
+               OpBranchConditional %278 %361 %362
+        %362 = OpLabel
+        %363 = OpLoad %int %359
+               OpBranch %360
+        %361 = OpLabel
+        %364 = OpCopyObject %int %int_0_0
+               OpBranch %360
+        %360 = OpLabel
+        %365 = OpPhi %int %363 %362 %364 %361
+        %366 = OpAccessChain %_ptr_Private_int %temp %338
+               OpSelectionMerge %367 None
+               OpBranchConditional %278 %367 %368
+        %368 = OpLabel
+               OpStore %366 %365
+               OpBranch %367
+        %367 = OpLabel
+               OpBranch %369
+        %369 = OpLabel
+               OpBranch %262
+        %262 = OpLabel
+               OpBranch %259
+        %261 = OpLabel
+               OpBranch %370
+        %370 = OpLabel
+               OpLoopMerge %371 %372 None
+               OpBranch %373
+        %373 = OpLabel
+        %374 = OpLoad %int %i
+        %375 = OpSLessThan %bool %374 %int_10
+        %376 = OpLoad %int %i
+        %377 = OpLoad %int %mid
+        %378 = OpSLessThanEqual %bool %376 %377
+        %379 = OpLogicalAnd %bool %375 %378
+               OpBranchConditional %379 %380 %371
+        %380 = OpLabel
+        %381 = OpLoad %int %k
+        %382 = OpIAdd %int %381 %int_1
+               OpStore %k %382
+        %383 = OpLoad %int %i
+        %384 = OpIAdd %int %383 %int_1
+               OpStore %i %384
+        %385 = OpAccessChain %_ptr_Private_int %data %383
+        %386 = OpLoad %int %385
+        %387 = OpAccessChain %_ptr_Private_int %temp %381
+               OpStore %387 %386
+               OpBranch %372
+        %372 = OpLabel
+               OpBranch %370
+        %371 = OpLabel
+        %388 = OpLoad %int %from
+               OpStore %i_0 %388
+               OpBranch %389
+        %389 = OpLabel
+               OpLoopMerge %390 %391 None
+               OpBranch %392
+        %392 = OpLabel
+        %393 = OpLoad %int %i_0
+        %394 = OpLoad %int %to
+        %395 = OpSLessThanEqual %bool %393 %394
+               OpBranchConditional %395 %396 %390
+        %396 = OpLabel
+        %397 = OpLoad %int %i_0
+        %398 = OpLoad %int %i_0
+        %399 = OpAccessChain %_ptr_Private_int %temp %398
+        %400 = OpLoad %int %399
+        %401 = OpAccessChain %_ptr_Private_int %data %397
+               OpStore %401 %400
+               OpBranch %391
+        %391 = OpLabel
+        %402 = OpLoad %int %i_0
+        %403 = OpIAdd %int %402 %int_1
+               OpStore %i_0 %403
+               OpBranch %389
+        %390 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %32
+        %404 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %405
+        %405 = OpLabel
+               OpLoopMerge %406 %407 None
+               OpBranch %408
+        %408 = OpLabel
+        %409 = OpLoad %int %m
+        %410 = OpLoad %int %high
+        %411 = OpSLessThanEqual %bool %409 %410
+               OpBranchConditional %411 %412 %406
+        %412 = OpLabel
+        %413 = OpLoad %int %low
+               OpStore %i_1 %413
+               OpBranch %414
+        %414 = OpLabel
+               OpLoopMerge %415 %416 None
+               OpBranch %417
+        %417 = OpLabel
+        %418 = OpLoad %int %i_1
+        %419 = OpLoad %int %high
+        %420 = OpSLessThan %bool %418 %419
+               OpBranchConditional %420 %421 %415
+        %421 = OpLabel
+        %422 = OpLoad %int %i_1
+               OpStore %from_0 %422
+        %423 = OpLoad %int %i_1
+        %424 = OpLoad %int %m
+        %425 = OpIAdd %int %423 %424
+        %426 = OpISub %int %425 %int_1
+               OpStore %mid_0 %426
+        %427 = OpLoad %int %i_1
+        %428 = OpLoad %int %m
+        %429 = OpIMul %int %int_2 %428
+        %430 = OpIAdd %int %427 %429
+        %431 = OpISub %int %430 %int_1
+        %432 = OpLoad %int %high
+        %433 = OpExtInst %int %1 SMin %431 %432
+               OpStore %to_0 %433
+        %434 = OpLoad %int %from_0
+               OpStore %param %434
+        %435 = OpLoad %int %mid_0
+               OpStore %param_0 %435
+        %436 = OpLoad %int %to_0
+               OpStore %param_1 %436
+        %437 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %416
+        %416 = OpLabel
+        %438 = OpLoad %int %m
+        %439 = OpIMul %int %int_2 %438
+        %440 = OpLoad %int %i_1
+        %441 = OpIAdd %int %440 %439
+               OpStore %i_1 %441
+               OpBranch %414
+        %415 = OpLabel
+               OpBranch %407
+        %407 = OpLabel
+        %442 = OpLoad %int %m
+        %443 = OpIMul %int %int_2 %442
+               OpStore %m %443
+               OpBranch %405
+        %406 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9cf6e4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.hlsl
@@ -0,0 +1,372 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_255 = from;
+  k = x_255;
+  const int x_256 = from;
+  i = x_256;
+  const int x_257 = mid;
+  j = (x_257 + 1);
+  while (true) {
+    int x_283 = 0;
+    int x_284 = 0;
+    int x_303 = 0;
+    int x_304 = 0;
+    int x_318 = 0;
+    int x_322 = 0;
+    int x_337 = 0;
+    int x_336 = 0;
+    int x_350 = 0;
+    int x_349 = 0;
+    int x_364 = 0;
+    int x_363 = 0;
+    int x_285_phi = 0;
+    int x_305_phi = 0;
+    int x_326_phi = 0;
+    int x_338_phi = 0;
+    int x_351_phi = 0;
+    int x_365_phi = 0;
+    if ((1.0f >= 0.0f)) {
+    } else {
+      continue;
+    }
+    const int x_264 = i;
+    const int x_265 = mid;
+    const int x_267 = j;
+    const int x_268 = to;
+    bool tint_tmp = (x_264 <= x_265);
+    if (tint_tmp) {
+      tint_tmp = (x_267 <= x_268);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_274 = data[i];
+    const int x_277 = data[j];
+    const bool x_278 = (x_274 < x_277);
+    if (x_278) {
+      x_283 = k;
+      x_285_phi = x_283;
+    } else {
+      x_284 = 0;
+      x_285_phi = x_284;
+    }
+    const int x_285 = x_285_phi;
+    const int x_286 = (x_285 + 1);
+    if (x_278) {
+      k = x_286;
+      const float x_291 = asfloat(x_28[0].x);
+      if (!((1.0f <= x_291))) {
+      } else {
+        continue;
+      }
+    }
+    const float x_295 = asfloat(x_28[0].y);
+    if ((x_295 >= 0.0f)) {
+    } else {
+      continue;
+    }
+    const int x_298 = 0;
+    if (x_278) {
+      x_303 = i;
+      x_305_phi = x_303;
+    } else {
+      x_304 = 0;
+      x_305_phi = x_304;
+    }
+    const int x_307 = (x_278 ? x_305_phi : x_298);
+    if (x_278) {
+      i = (x_307 + 1);
+    }
+    const int x_313 = 0;
+    if (x_278) {
+      x_318 = data[x_307];
+      const float x_320 = asfloat(x_28[0].y);
+      x_326_phi = x_318;
+      if (!((0.0f <= x_320))) {
+        continue;
+      }
+    } else {
+      x_322 = 0;
+      const float x_324 = asfloat(x_28[0].y);
+      x_326_phi = x_322;
+      if (!((x_324 < 0.0f))) {
+      } else {
+        continue;
+      }
+    }
+    const int x_326 = x_326_phi;
+    if (x_278) {
+      temp[x_285] = (x_278 ? x_326 : x_313);
+    }
+    if (x_278) {
+      x_337 = 0;
+      x_338_phi = x_337;
+    } else {
+      x_336 = k;
+      x_338_phi = x_336;
+    }
+    const int x_338 = x_338_phi;
+    if (x_278) {
+    } else {
+      k = (x_338 + 1);
+    }
+    const float x_343 = asfloat(x_28[0].x);
+    if (!((1.0f <= x_343))) {
+    } else {
+      continue;
+    }
+    if (x_278) {
+      x_350 = 0;
+      x_351_phi = x_350;
+    } else {
+      x_349 = j;
+      x_351_phi = x_349;
+    }
+    const int x_355 = (x_278 ? 0 : x_351_phi);
+    if (x_278) {
+    } else {
+      j = (x_355 + 1);
+    }
+    if (x_278) {
+      x_364 = 0;
+      x_365_phi = x_364;
+    } else {
+      x_363 = data[x_355];
+      x_365_phi = x_363;
+    }
+    const int x_365 = x_365_phi;
+    if (x_278) {
+    } else {
+      temp[x_338] = x_365;
+    }
+  }
+  while (true) {
+    const int x_374 = i;
+    const int x_376 = i;
+    const int x_377 = mid;
+    bool tint_tmp_1 = (x_374 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_376 <= x_377);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_381 = k;
+    k = (x_381 + 1);
+    const int x_383 = i;
+    i = (x_383 + 1);
+    const int x_386 = data[x_383];
+    temp[x_381] = x_386;
+  }
+  const int x_388 = from;
+  i_1 = x_388;
+  while (true) {
+    const int x_393 = i_1;
+    const int x_394 = to;
+    if ((x_393 <= x_394)) {
+    } else {
+      break;
+    }
+    const int x_397 = i_1;
+    const int x_400 = temp[i_1];
+    data[x_397] = x_400;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_88 = asfloat(x_28[0].x);
+  i_3 = int(x_88);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_137 = j_1;
+      const int x_140 = data[j_1];
+      temp[x_137] = x_140;
+    }
+  }
+  mergeSort_();
+  const float x_146 = gl_FragCoord.y;
+  if ((int(x_146) < 30)) {
+    const int x_153 = data[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    const float x_158 = gl_FragCoord.y;
+    if ((int(x_158) < 60)) {
+      const int x_165 = data[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      const float x_170 = gl_FragCoord.y;
+      if ((int(x_170) < 90)) {
+        const int x_177 = data[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        const float x_182 = gl_FragCoord.y;
+        if ((int(x_182) < 120)) {
+          const int x_189 = data[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          const float x_194 = gl_FragCoord.y;
+          if ((int(x_194) < 150)) {
+            discard;
+          } else {
+            const float x_201 = gl_FragCoord.y;
+            if ((int(x_201) < 180)) {
+              const int x_208 = data[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              const float x_213 = gl_FragCoord.y;
+              if ((int(x_213) < 210)) {
+                const int x_220 = data[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                const float x_225 = gl_FragCoord.y;
+                if ((int(x_225) < 240)) {
+                  const int x_232 = data[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  const float x_237 = gl_FragCoord.y;
+                  if ((int(x_237) < 270)) {
+                    const int x_244 = data[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_248 = grey;
+  const float3 x_249 = float3(x_248, x_248, x_248);
+  x_GLF_color = float4(x_249.x, x_249.y, x_249.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.msl
new file mode 100644
index 0000000..c3a165b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.msl
@@ -0,0 +1,421 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(constant buf0& x_28, thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_255 = *(from);
+  k = x_255;
+  int const x_256 = *(from);
+  i = x_256;
+  int const x_257 = *(mid);
+  j = (x_257 + 1);
+  while (true) {
+    int x_283 = 0;
+    int x_284 = 0;
+    int x_303 = 0;
+    int x_304 = 0;
+    int x_318 = 0;
+    int x_322 = 0;
+    int x_337 = 0;
+    int x_336 = 0;
+    int x_350 = 0;
+    int x_349 = 0;
+    int x_364 = 0;
+    int x_363 = 0;
+    int x_285_phi = 0;
+    int x_305_phi = 0;
+    int x_326_phi = 0;
+    int x_338_phi = 0;
+    int x_351_phi = 0;
+    int x_365_phi = 0;
+    if ((1.0f >= 0.0f)) {
+    } else {
+      continue;
+    }
+    int const x_264 = i;
+    int const x_265 = *(mid);
+    int const x_267 = j;
+    int const x_268 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    int const x_272 = i;
+    int const x_274 = (*(tint_symbol_5)).arr[x_272];
+    int const x_275 = j;
+    int const x_277 = (*(tint_symbol_5)).arr[x_275];
+    bool const x_278 = (x_274 < x_277);
+    if (x_278) {
+      x_283 = k;
+      x_285_phi = x_283;
+    } else {
+      x_284 = 0;
+      x_285_phi = x_284;
+    }
+    int const x_285 = x_285_phi;
+    int const x_286 = (x_285 + 1);
+    if (x_278) {
+      k = x_286;
+      float const x_291 = x_28.injectionSwitch.x;
+      if (!((1.0f <= x_291))) {
+      } else {
+        continue;
+      }
+    }
+    float const x_295 = x_28.injectionSwitch.y;
+    if ((x_295 >= 0.0f)) {
+    } else {
+      continue;
+    }
+    int const x_298 = 0;
+    if (x_278) {
+      x_303 = i;
+      x_305_phi = x_303;
+    } else {
+      x_304 = 0;
+      x_305_phi = x_304;
+    }
+    int const x_305 = x_305_phi;
+    int const x_307 = select(x_298, x_305, x_278);
+    if (x_278) {
+      i = (x_307 + 1);
+    }
+    int const x_313 = 0;
+    if (x_278) {
+      x_318 = (*(tint_symbol_5)).arr[x_307];
+      float const x_320 = x_28.injectionSwitch.y;
+      x_326_phi = x_318;
+      if (!((0.0f <= x_320))) {
+        continue;
+      }
+    } else {
+      x_322 = 0;
+      float const x_324 = x_28.injectionSwitch.y;
+      x_326_phi = x_322;
+      if (!((x_324 < 0.0f))) {
+      } else {
+        continue;
+      }
+    }
+    int const x_326 = x_326_phi;
+    if (x_278) {
+      (*(tint_symbol_6)).arr[x_285] = select(x_313, x_326, x_278);
+    }
+    if (x_278) {
+      x_337 = 0;
+      x_338_phi = x_337;
+    } else {
+      x_336 = k;
+      x_338_phi = x_336;
+    }
+    int const x_338 = x_338_phi;
+    if (x_278) {
+    } else {
+      k = (x_338 + 1);
+    }
+    float const x_343 = x_28.injectionSwitch.x;
+    if (!((1.0f <= x_343))) {
+    } else {
+      continue;
+    }
+    if (x_278) {
+      x_350 = 0;
+      x_351_phi = x_350;
+    } else {
+      x_349 = j;
+      x_351_phi = x_349;
+    }
+    int const x_351 = x_351_phi;
+    int const x_353 = 0;
+    int const x_355 = select(x_351, x_353, x_278);
+    if (x_278) {
+    } else {
+      j = (x_355 + 1);
+    }
+    if (x_278) {
+      x_364 = 0;
+      x_365_phi = x_364;
+    } else {
+      x_363 = (*(tint_symbol_5)).arr[x_355];
+      x_365_phi = x_363;
+    }
+    int const x_365 = x_365_phi;
+    if (x_278) {
+    } else {
+      (*(tint_symbol_6)).arr[x_338] = x_365;
+    }
+  }
+  while (true) {
+    int const x_374 = i;
+    int const x_376 = i;
+    int const x_377 = *(mid);
+    if (((x_374 < 10) && (x_376 <= x_377))) {
+    } else {
+      break;
+    }
+    int const x_381 = k;
+    k = (x_381 + 1);
+    int const x_383 = i;
+    i = (x_383 + 1);
+    int const x_386 = (*(tint_symbol_5)).arr[x_383];
+    (*(tint_symbol_6)).arr[x_381] = x_386;
+  }
+  int const x_388 = *(from);
+  i_1 = x_388;
+  while (true) {
+    int const x_393 = i_1;
+    int const x_394 = *(to);
+    if ((x_393 <= x_394)) {
+    } else {
+      break;
+    }
+    int const x_397 = i_1;
+    int const x_398 = i_1;
+    int const x_400 = (*(tint_symbol_6)).arr[x_398];
+    (*(tint_symbol_5)).arr[x_397] = x_400;
+    {
+      int const x_402 = i_1;
+      i_1 = (x_402 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_409 = m;
+    int const x_410 = high;
+    if ((x_409 <= x_410)) {
+    } else {
+      break;
+    }
+    int const x_413 = low;
+    i_2 = x_413;
+    while (true) {
+      int const x_418 = i_2;
+      int const x_419 = high;
+      if ((x_418 < x_419)) {
+      } else {
+        break;
+      }
+      int const x_422 = i_2;
+      from_1 = x_422;
+      int const x_423 = i_2;
+      int const x_424 = m;
+      mid_1 = ((x_423 + x_424) - 1);
+      int const x_427 = i_2;
+      int const x_428 = m;
+      int const x_432 = high;
+      to_1 = min(((x_427 + (2 * x_428)) - 1), x_432);
+      int const x_434 = from_1;
+      param = x_434;
+      int const x_435 = mid_1;
+      param_1 = x_435;
+      int const x_436 = to_1;
+      param_2 = x_436;
+      merge_i1_i1_i1_(x_28, &(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_438 = m;
+        int const x_440 = i_2;
+        i_2 = (x_440 + (2 * x_438));
+      }
+    }
+    {
+      int const x_442 = m;
+      m = (2 * x_442);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_88 = x_28.injectionSwitch.x;
+  i_3 = int(x_88);
+  while (true) {
+    int const x_94 = i_3;
+    switch(x_94) {
+      case 9: {
+        int const x_124 = i_3;
+        (*(tint_symbol_9)).arr[x_124] = -5;
+        break;
+      }
+      case 8: {
+        int const x_122 = i_3;
+        (*(tint_symbol_9)).arr[x_122] = -4;
+        break;
+      }
+      case 7: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -3;
+        break;
+      }
+      case 6: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -2;
+        break;
+      }
+      case 5: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -1;
+        break;
+      }
+      case 4: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = 0;
+        break;
+      }
+      case 3: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = 1;
+        break;
+      }
+      case 2: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 2;
+        break;
+      }
+      case 1: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 3;
+        break;
+      }
+      case 0: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_126 = i_3;
+    i_3 = (x_126 + 1);
+    {
+      int const x_128 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_134 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    int const x_137 = j_1;
+    int const x_138 = j_1;
+    int const x_140 = (*(tint_symbol_9)).arr[x_138];
+    (*(tint_symbol_10)).arr[x_137] = x_140;
+    {
+      int const x_142 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_(x_28, tint_symbol_9, tint_symbol_10);
+  float const x_146 = (*(tint_symbol_11)).y;
+  if ((int(x_146) < 30)) {
+    int const x_153 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    float const x_158 = (*(tint_symbol_11)).y;
+    if ((int(x_158) < 60)) {
+      int const x_165 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      float const x_170 = (*(tint_symbol_11)).y;
+      if ((int(x_170) < 90)) {
+        int const x_177 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        float const x_182 = (*(tint_symbol_11)).y;
+        if ((int(x_182) < 120)) {
+          int const x_189 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          float const x_194 = (*(tint_symbol_11)).y;
+          if ((int(x_194) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_201 = (*(tint_symbol_11)).y;
+            if ((int(x_201) < 180)) {
+              int const x_208 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              float const x_213 = (*(tint_symbol_11)).y;
+              if ((int(x_213) < 210)) {
+                int const x_220 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                float const x_225 = (*(tint_symbol_11)).y;
+                if ((int(x_225) < 240)) {
+                  int const x_232 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  float const x_237 = (*(tint_symbol_11)).y;
+                  if ((int(x_237) < 270)) {
+                    int const x_244 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_248 = grey;
+  float3 const x_249 = float3(x_248, x_248, x_248);
+  *(tint_symbol_12) = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..338bca8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.spvasm
@@ -0,0 +1,862 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 523
+; Schema: 0
+               OpCapability Shader
+        %288 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %x_283 "x_283"
+               OpName %x_284 "x_284"
+               OpName %x_303 "x_303"
+               OpName %x_304 "x_304"
+               OpName %x_318 "x_318"
+               OpName %x_322 "x_322"
+               OpName %x_337 "x_337"
+               OpName %x_336 "x_336"
+               OpName %x_350 "x_350"
+               OpName %x_349 "x_349"
+               OpName %x_364 "x_364"
+               OpName %x_363 "x_363"
+               OpName %x_285_phi "x_285_phi"
+               OpName %x_305_phi "x_305_phi"
+               OpName %x_326_phi "x_326_phi"
+               OpName %x_338_phi "x_338_phi"
+               OpName %x_351_phi "x_351_phi"
+               OpName %x_365_phi "x_365_phi"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+     %int_10 = OpConstant %int 10
+        %244 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %312 = OpConstantNull %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %510 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+      %x_283 = OpVariable %_ptr_Function_int Function %32
+      %x_284 = OpVariable %_ptr_Function_int Function %32
+      %x_303 = OpVariable %_ptr_Function_int Function %32
+      %x_304 = OpVariable %_ptr_Function_int Function %32
+      %x_318 = OpVariable %_ptr_Function_int Function %32
+      %x_322 = OpVariable %_ptr_Function_int Function %32
+      %x_337 = OpVariable %_ptr_Function_int Function %32
+      %x_336 = OpVariable %_ptr_Function_int Function %32
+      %x_350 = OpVariable %_ptr_Function_int Function %32
+      %x_349 = OpVariable %_ptr_Function_int Function %32
+      %x_364 = OpVariable %_ptr_Function_int Function %32
+      %x_363 = OpVariable %_ptr_Function_int Function %32
+  %x_285_phi = OpVariable %_ptr_Function_int Function %32
+  %x_305_phi = OpVariable %_ptr_Function_int Function %32
+  %x_326_phi = OpVariable %_ptr_Function_int Function %32
+  %x_338_phi = OpVariable %_ptr_Function_int Function %32
+  %x_351_phi = OpVariable %_ptr_Function_int Function %32
+  %x_365_phi = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %68 = OpFOrdGreaterThanEqual %bool %float_1 %float_0
+               OpSelectionMerge %70 None
+               OpBranchConditional %68 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %46
+         %70 = OpLabel
+         %73 = OpLoad %int %i
+         %75 = OpLoad %int %mid
+         %76 = OpLoad %int %j
+         %78 = OpLoad %int %to
+         %79 = OpSLessThanEqual %bool %73 %75
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %80
+         %81 = OpLabel
+         %82 = OpSLessThanEqual %bool %76 %78
+               OpBranch %80
+         %80 = OpLabel
+         %83 = OpPhi %bool %79 %70 %82 %81
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %45
+         %84 = OpLabel
+         %87 = OpLoad %int %i
+         %89 = OpAccessChain %_ptr_Private_int %data %87
+         %90 = OpLoad %int %89
+         %91 = OpLoad %int %j
+         %92 = OpAccessChain %_ptr_Private_int %data %91
+         %93 = OpLoad %int %92
+         %94 = OpSLessThan %bool %90 %93
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+         %98 = OpLoad %int %k
+               OpStore %x_283 %98
+         %99 = OpLoad %int %x_283
+               OpStore %x_285_phi %99
+               OpBranch %95
+         %97 = OpLabel
+               OpStore %x_284 %int_0
+        %101 = OpLoad %int %x_284
+               OpStore %x_285_phi %101
+               OpBranch %95
+         %95 = OpLabel
+        %102 = OpLoad %int %x_285_phi
+        %103 = OpIAdd %int %102 %int_1
+               OpSelectionMerge %104 None
+               OpBranchConditional %94 %105 %104
+        %105 = OpLabel
+               OpStore %k %103
+        %108 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %109 = OpLoad %float %108
+        %111 = OpFOrdLessThanEqual %bool %float_1 %109
+        %110 = OpLogicalNot %bool %111
+               OpSelectionMerge %112 None
+               OpBranchConditional %110 %113 %114
+        %113 = OpLabel
+               OpBranch %112
+        %114 = OpLabel
+               OpBranch %46
+        %112 = OpLabel
+               OpBranch %104
+        %104 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %117 = OpLoad %float %116
+        %118 = OpFOrdGreaterThanEqual %bool %117 %float_0
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %121
+        %120 = OpLabel
+               OpBranch %119
+        %121 = OpLabel
+               OpBranch %46
+        %119 = OpLabel
+               OpSelectionMerge %122 None
+               OpBranchConditional %94 %123 %124
+        %123 = OpLabel
+        %125 = OpLoad %int %i
+               OpStore %x_303 %125
+        %126 = OpLoad %int %x_303
+               OpStore %x_305_phi %126
+               OpBranch %122
+        %124 = OpLabel
+               OpStore %x_304 %int_0
+        %127 = OpLoad %int %x_304
+               OpStore %x_305_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %int %x_305_phi
+        %129 = OpSelect %int %94 %128 %int_0
+               OpSelectionMerge %130 None
+               OpBranchConditional %94 %131 %130
+        %131 = OpLabel
+        %132 = OpIAdd %int %129 %int_1
+               OpStore %i %132
+               OpBranch %130
+        %130 = OpLabel
+               OpSelectionMerge %133 None
+               OpBranchConditional %94 %134 %135
+        %134 = OpLabel
+        %136 = OpAccessChain %_ptr_Private_int %data %129
+        %137 = OpLoad %int %136
+               OpStore %x_318 %137
+        %138 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %139 = OpLoad %float %138
+        %140 = OpLoad %int %x_318
+               OpStore %x_326_phi %140
+        %142 = OpFOrdLessThanEqual %bool %float_0 %139
+        %141 = OpLogicalNot %bool %142
+               OpSelectionMerge %143 None
+               OpBranchConditional %141 %144 %143
+        %144 = OpLabel
+               OpBranch %46
+        %143 = OpLabel
+               OpBranch %133
+        %135 = OpLabel
+               OpStore %x_322 %int_0
+        %145 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %146 = OpLoad %float %145
+        %147 = OpLoad %int %x_322
+               OpStore %x_326_phi %147
+        %149 = OpFOrdLessThan %bool %146 %float_0
+        %148 = OpLogicalNot %bool %149
+               OpSelectionMerge %150 None
+               OpBranchConditional %148 %151 %152
+        %151 = OpLabel
+               OpBranch %150
+        %152 = OpLabel
+               OpBranch %46
+        %150 = OpLabel
+               OpBranch %133
+        %133 = OpLabel
+        %153 = OpLoad %int %x_326_phi
+               OpSelectionMerge %154 None
+               OpBranchConditional %94 %155 %154
+        %155 = OpLabel
+        %156 = OpAccessChain %_ptr_Private_int %temp %102
+        %157 = OpSelect %int %94 %153 %int_0
+               OpStore %156 %157
+               OpBranch %154
+        %154 = OpLabel
+               OpSelectionMerge %158 None
+               OpBranchConditional %94 %159 %160
+        %159 = OpLabel
+               OpStore %x_337 %int_0
+        %161 = OpLoad %int %x_337
+               OpStore %x_338_phi %161
+               OpBranch %158
+        %160 = OpLabel
+        %162 = OpLoad %int %k
+               OpStore %x_336 %162
+        %163 = OpLoad %int %x_336
+               OpStore %x_338_phi %163
+               OpBranch %158
+        %158 = OpLabel
+        %164 = OpLoad %int %x_338_phi
+               OpSelectionMerge %165 None
+               OpBranchConditional %94 %166 %167
+        %166 = OpLabel
+               OpBranch %165
+        %167 = OpLabel
+        %168 = OpIAdd %int %164 %int_1
+               OpStore %k %168
+               OpBranch %165
+        %165 = OpLabel
+        %169 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %170 = OpLoad %float %169
+        %172 = OpFOrdLessThanEqual %bool %float_1 %170
+        %171 = OpLogicalNot %bool %172
+               OpSelectionMerge %173 None
+               OpBranchConditional %171 %174 %175
+        %174 = OpLabel
+               OpBranch %173
+        %175 = OpLabel
+               OpBranch %46
+        %173 = OpLabel
+               OpSelectionMerge %176 None
+               OpBranchConditional %94 %177 %178
+        %177 = OpLabel
+               OpStore %x_350 %int_0
+        %179 = OpLoad %int %x_350
+               OpStore %x_351_phi %179
+               OpBranch %176
+        %178 = OpLabel
+        %180 = OpLoad %int %j
+               OpStore %x_349 %180
+        %181 = OpLoad %int %x_349
+               OpStore %x_351_phi %181
+               OpBranch %176
+        %176 = OpLabel
+        %182 = OpLoad %int %x_351_phi
+        %183 = OpSelect %int %94 %int_0 %182
+               OpSelectionMerge %184 None
+               OpBranchConditional %94 %185 %186
+        %185 = OpLabel
+               OpBranch %184
+        %186 = OpLabel
+        %187 = OpIAdd %int %183 %int_1
+               OpStore %j %187
+               OpBranch %184
+        %184 = OpLabel
+               OpSelectionMerge %188 None
+               OpBranchConditional %94 %189 %190
+        %189 = OpLabel
+               OpStore %x_364 %int_0
+        %191 = OpLoad %int %x_364
+               OpStore %x_365_phi %191
+               OpBranch %188
+        %190 = OpLabel
+        %192 = OpAccessChain %_ptr_Private_int %data %183
+        %193 = OpLoad %int %192
+               OpStore %x_363 %193
+        %194 = OpLoad %int %x_363
+               OpStore %x_365_phi %194
+               OpBranch %188
+        %188 = OpLabel
+        %195 = OpLoad %int %x_365_phi
+               OpSelectionMerge %196 None
+               OpBranchConditional %94 %197 %198
+        %197 = OpLabel
+               OpBranch %196
+        %198 = OpLabel
+        %199 = OpAccessChain %_ptr_Private_int %temp %164
+               OpStore %199 %195
+               OpBranch %196
+        %196 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %200
+        %200 = OpLabel
+               OpLoopMerge %201 %202 None
+               OpBranch %203
+        %203 = OpLabel
+        %204 = OpLoad %int %i
+        %205 = OpLoad %int %i
+        %207 = OpLoad %int %mid
+        %209 = OpSLessThan %bool %204 %int_10
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %210
+        %211 = OpLabel
+        %212 = OpSLessThanEqual %bool %205 %207
+               OpBranch %210
+        %210 = OpLabel
+        %213 = OpPhi %bool %209 %203 %212 %211
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %201
+        %214 = OpLabel
+        %217 = OpLoad %int %k
+        %218 = OpIAdd %int %217 %int_1
+               OpStore %k %218
+        %219 = OpLoad %int %i
+        %220 = OpIAdd %int %219 %int_1
+               OpStore %i %220
+        %221 = OpAccessChain %_ptr_Private_int %data %219
+        %222 = OpLoad %int %221
+        %223 = OpAccessChain %_ptr_Private_int %temp %217
+               OpStore %223 %222
+               OpBranch %202
+        %202 = OpLabel
+               OpBranch %200
+        %201 = OpLabel
+        %225 = OpLoad %int %from
+               OpStore %i_1 %225
+               OpBranch %226
+        %226 = OpLabel
+               OpLoopMerge %227 %228 None
+               OpBranch %229
+        %229 = OpLabel
+        %230 = OpLoad %int %i_1
+        %232 = OpLoad %int %to
+        %233 = OpSLessThanEqual %bool %230 %232
+               OpSelectionMerge %234 None
+               OpBranchConditional %233 %235 %236
+        %235 = OpLabel
+               OpBranch %234
+        %236 = OpLabel
+               OpBranch %227
+        %234 = OpLabel
+        %237 = OpLoad %int %i_1
+        %238 = OpLoad %int %i_1
+        %239 = OpAccessChain %_ptr_Private_int %temp %238
+        %240 = OpLoad %int %239
+        %241 = OpAccessChain %_ptr_Private_int %data %237
+               OpStore %241 %240
+               OpBranch %228
+        %228 = OpLabel
+        %242 = OpLoad %int %i_1
+        %243 = OpIAdd %int %242 %int_1
+               OpStore %i_1 %243
+               OpBranch %226
+        %227 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %244
+        %246 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %258
+        %258 = OpLabel
+               OpLoopMerge %259 %260 None
+               OpBranch %261
+        %261 = OpLabel
+        %262 = OpLoad %int %m
+        %263 = OpLoad %int %high
+        %264 = OpSLessThanEqual %bool %262 %263
+               OpSelectionMerge %265 None
+               OpBranchConditional %264 %266 %267
+        %266 = OpLabel
+               OpBranch %265
+        %267 = OpLabel
+               OpBranch %259
+        %265 = OpLabel
+        %268 = OpLoad %int %low
+               OpStore %i_2 %268
+               OpBranch %269
+        %269 = OpLabel
+               OpLoopMerge %270 %271 None
+               OpBranch %272
+        %272 = OpLabel
+        %273 = OpLoad %int %i_2
+        %274 = OpLoad %int %high
+        %275 = OpSLessThan %bool %273 %274
+               OpSelectionMerge %276 None
+               OpBranchConditional %275 %277 %278
+        %277 = OpLabel
+               OpBranch %276
+        %278 = OpLabel
+               OpBranch %270
+        %276 = OpLabel
+        %279 = OpLoad %int %i_2
+               OpStore %from_1 %279
+        %280 = OpLoad %int %i_2
+        %281 = OpLoad %int %m
+        %282 = OpIAdd %int %280 %281
+        %283 = OpISub %int %282 %int_1
+               OpStore %mid_1 %283
+        %284 = OpLoad %int %i_2
+        %285 = OpLoad %int %m
+        %286 = OpLoad %int %high
+        %290 = OpIMul %int %int_2 %285
+        %291 = OpIAdd %int %284 %290
+        %292 = OpISub %int %291 %int_1
+        %287 = OpExtInst %int %288 SMin %292 %286
+               OpStore %to_1 %287
+        %293 = OpLoad %int %from_1
+               OpStore %param %293
+        %294 = OpLoad %int %mid_1
+               OpStore %param_1 %294
+        %295 = OpLoad %int %to_1
+               OpStore %param_2 %295
+        %296 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %271
+        %271 = OpLabel
+        %300 = OpLoad %int %m
+        %301 = OpLoad %int %i_2
+        %302 = OpIMul %int %int_2 %300
+        %303 = OpIAdd %int %301 %302
+               OpStore %i_2 %303
+               OpBranch %269
+        %270 = OpLabel
+               OpBranch %260
+        %260 = OpLabel
+        %304 = OpLoad %int %m
+        %305 = OpIMul %int %int_2 %304
+               OpStore %m %305
+               OpBranch %258
+        %259 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %244
+        %307 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %312
+        %313 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %314 = OpLoad %float %313
+        %315 = OpConvertFToS %int %314
+               OpStore %i_3 %315
+               OpBranch %316
+        %316 = OpLabel
+               OpLoopMerge %317 %318 None
+               OpBranch %319
+        %319 = OpLabel
+        %320 = OpLoad %int %i_3
+               OpSelectionMerge %321 None
+               OpSwitch %320 %322 9 %323 8 %324 7 %325 6 %326 5 %327 4 %328 3 %329 2 %330 1 %331 0 %332
+        %323 = OpLabel
+        %333 = OpLoad %int %i_3
+        %334 = OpAccessChain %_ptr_Private_int %data %333
+               OpStore %334 %int_n5
+               OpBranch %321
+        %324 = OpLabel
+        %336 = OpLoad %int %i_3
+        %337 = OpAccessChain %_ptr_Private_int %data %336
+               OpStore %337 %int_n4
+               OpBranch %321
+        %325 = OpLabel
+        %339 = OpLoad %int %i_3
+        %340 = OpAccessChain %_ptr_Private_int %data %339
+               OpStore %340 %int_n3
+               OpBranch %321
+        %326 = OpLabel
+        %342 = OpLoad %int %i_3
+        %343 = OpAccessChain %_ptr_Private_int %data %342
+               OpStore %343 %int_n2
+               OpBranch %321
+        %327 = OpLabel
+        %345 = OpLoad %int %i_3
+        %346 = OpAccessChain %_ptr_Private_int %data %345
+               OpStore %346 %int_n1
+               OpBranch %321
+        %328 = OpLabel
+        %348 = OpLoad %int %i_3
+        %349 = OpAccessChain %_ptr_Private_int %data %348
+               OpStore %349 %int_0
+               OpBranch %321
+        %329 = OpLabel
+        %350 = OpLoad %int %i_3
+        %351 = OpAccessChain %_ptr_Private_int %data %350
+               OpStore %351 %int_1
+               OpBranch %321
+        %330 = OpLabel
+        %352 = OpLoad %int %i_3
+        %353 = OpAccessChain %_ptr_Private_int %data %352
+               OpStore %353 %int_2
+               OpBranch %321
+        %331 = OpLabel
+        %354 = OpLoad %int %i_3
+        %355 = OpAccessChain %_ptr_Private_int %data %354
+               OpStore %355 %int_3
+               OpBranch %321
+        %332 = OpLabel
+        %357 = OpLoad %int %i_3
+        %358 = OpAccessChain %_ptr_Private_int %data %357
+               OpStore %358 %int_4
+               OpBranch %321
+        %322 = OpLabel
+               OpBranch %321
+        %321 = OpLabel
+        %360 = OpLoad %int %i_3
+        %361 = OpIAdd %int %360 %int_1
+               OpStore %i_3 %361
+               OpBranch %318
+        %318 = OpLabel
+        %362 = OpLoad %int %i_3
+        %363 = OpSLessThan %bool %362 %int_10
+               OpSelectionMerge %364 None
+               OpBranchConditional %363 %365 %366
+        %365 = OpLabel
+               OpBranch %364
+        %366 = OpLabel
+               OpBranch %317
+        %364 = OpLabel
+               OpBranch %316
+        %317 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %367
+        %367 = OpLabel
+               OpLoopMerge %368 %369 None
+               OpBranch %370
+        %370 = OpLabel
+        %371 = OpLoad %int %j_1
+        %372 = OpSLessThan %bool %371 %int_10
+               OpSelectionMerge %373 None
+               OpBranchConditional %372 %374 %375
+        %374 = OpLabel
+               OpBranch %373
+        %375 = OpLabel
+               OpBranch %368
+        %373 = OpLabel
+        %376 = OpLoad %int %j_1
+        %377 = OpLoad %int %j_1
+        %378 = OpAccessChain %_ptr_Private_int %data %377
+        %379 = OpLoad %int %378
+        %380 = OpAccessChain %_ptr_Private_int %temp %376
+               OpStore %380 %379
+               OpBranch %369
+        %369 = OpLabel
+        %381 = OpLoad %int %j_1
+        %382 = OpIAdd %int %381 %int_1
+               OpStore %j_1 %382
+               OpBranch %367
+        %368 = OpLabel
+        %383 = OpFunctionCall %void %mergeSort_
+        %385 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %386 = OpLoad %float %385
+        %387 = OpConvertFToS %int %386
+        %389 = OpSLessThan %bool %387 %int_30
+               OpSelectionMerge %390 None
+               OpBranchConditional %389 %391 %392
+        %391 = OpLabel
+        %393 = OpAccessChain %_ptr_Private_int %data %int_0
+        %394 = OpLoad %int %393
+        %396 = OpConvertSToF %float %394
+        %398 = OpFDiv %float %396 %float_10
+        %399 = OpFAdd %float %float_0_5 %398
+               OpStore %grey %399
+               OpBranch %390
+        %392 = OpLabel
+        %400 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %401 = OpLoad %float %400
+        %402 = OpConvertFToS %int %401
+        %404 = OpSLessThan %bool %402 %int_60
+               OpSelectionMerge %405 None
+               OpBranchConditional %404 %406 %407
+        %406 = OpLabel
+        %408 = OpAccessChain %_ptr_Private_int %data %int_1
+        %409 = OpLoad %int %408
+        %410 = OpConvertSToF %float %409
+        %411 = OpFDiv %float %410 %float_10
+        %412 = OpFAdd %float %float_0_5 %411
+               OpStore %grey %412
+               OpBranch %405
+        %407 = OpLabel
+        %413 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %414 = OpLoad %float %413
+        %415 = OpConvertFToS %int %414
+        %417 = OpSLessThan %bool %415 %int_90
+               OpSelectionMerge %418 None
+               OpBranchConditional %417 %419 %420
+        %419 = OpLabel
+        %421 = OpAccessChain %_ptr_Private_int %data %int_2
+        %422 = OpLoad %int %421
+        %423 = OpConvertSToF %float %422
+        %424 = OpFDiv %float %423 %float_10
+        %425 = OpFAdd %float %float_0_5 %424
+               OpStore %grey %425
+               OpBranch %418
+        %420 = OpLabel
+        %426 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %427 = OpLoad %float %426
+        %428 = OpConvertFToS %int %427
+        %430 = OpSLessThan %bool %428 %int_120
+               OpSelectionMerge %431 None
+               OpBranchConditional %430 %432 %433
+        %432 = OpLabel
+        %434 = OpAccessChain %_ptr_Private_int %data %int_3
+        %435 = OpLoad %int %434
+        %436 = OpConvertSToF %float %435
+        %437 = OpFDiv %float %436 %float_10
+        %438 = OpFAdd %float %float_0_5 %437
+               OpStore %grey %438
+               OpBranch %431
+        %433 = OpLabel
+        %439 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %440 = OpLoad %float %439
+        %441 = OpConvertFToS %int %440
+        %443 = OpSLessThan %bool %441 %int_150
+               OpSelectionMerge %444 None
+               OpBranchConditional %443 %445 %446
+        %445 = OpLabel
+               OpKill
+        %446 = OpLabel
+        %447 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %448 = OpLoad %float %447
+        %449 = OpConvertFToS %int %448
+        %451 = OpSLessThan %bool %449 %int_180
+               OpSelectionMerge %452 None
+               OpBranchConditional %451 %453 %454
+        %453 = OpLabel
+        %456 = OpAccessChain %_ptr_Private_int %data %int_5
+        %457 = OpLoad %int %456
+        %458 = OpConvertSToF %float %457
+        %459 = OpFDiv %float %458 %float_10
+        %460 = OpFAdd %float %float_0_5 %459
+               OpStore %grey %460
+               OpBranch %452
+        %454 = OpLabel
+        %461 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %462 = OpLoad %float %461
+        %463 = OpConvertFToS %int %462
+        %465 = OpSLessThan %bool %463 %int_210
+               OpSelectionMerge %466 None
+               OpBranchConditional %465 %467 %468
+        %467 = OpLabel
+        %470 = OpAccessChain %_ptr_Private_int %data %int_6
+        %471 = OpLoad %int %470
+        %472 = OpConvertSToF %float %471
+        %473 = OpFDiv %float %472 %float_10
+        %474 = OpFAdd %float %float_0_5 %473
+               OpStore %grey %474
+               OpBranch %466
+        %468 = OpLabel
+        %475 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %476 = OpLoad %float %475
+        %477 = OpConvertFToS %int %476
+        %479 = OpSLessThan %bool %477 %int_240
+               OpSelectionMerge %480 None
+               OpBranchConditional %479 %481 %482
+        %481 = OpLabel
+        %484 = OpAccessChain %_ptr_Private_int %data %int_7
+        %485 = OpLoad %int %484
+        %486 = OpConvertSToF %float %485
+        %487 = OpFDiv %float %486 %float_10
+        %488 = OpFAdd %float %float_0_5 %487
+               OpStore %grey %488
+               OpBranch %480
+        %482 = OpLabel
+        %489 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %490 = OpLoad %float %489
+        %491 = OpConvertFToS %int %490
+        %493 = OpSLessThan %bool %491 %int_270
+               OpSelectionMerge %494 None
+               OpBranchConditional %493 %495 %496
+        %495 = OpLabel
+        %498 = OpAccessChain %_ptr_Private_int %data %int_8
+        %499 = OpLoad %int %498
+        %500 = OpConvertSToF %float %499
+        %501 = OpFDiv %float %500 %float_10
+        %502 = OpFAdd %float %float_0_5 %501
+               OpStore %grey %502
+               OpBranch %494
+        %496 = OpLabel
+               OpKill
+        %494 = OpLabel
+               OpBranch %480
+        %480 = OpLabel
+               OpBranch %466
+        %466 = OpLabel
+               OpBranch %452
+        %452 = OpLabel
+               OpBranch %444
+        %444 = OpLabel
+               OpBranch %431
+        %431 = OpLabel
+               OpBranch %418
+        %418 = OpLabel
+               OpBranch %405
+        %405 = OpLabel
+               OpBranch %390
+        %390 = OpLabel
+        %503 = OpLoad %float %grey
+        %505 = OpCompositeConstruct %v3float %503 %503 %503
+        %506 = OpCompositeExtract %float %505 0
+        %507 = OpCompositeExtract %float %505 1
+        %508 = OpCompositeExtract %float %505 2
+        %509 = OpCompositeConstruct %v4float %506 %507 %508 %float_1
+               OpStore %x_GLF_color %509
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %510
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %514 = OpLabel
+        %515 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %515
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %244
+        %517 = OpLabel
+        %518 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %518
+        %519 = OpFunctionCall %void %main_1
+        %521 = OpLoad %v4float %x_GLF_color
+        %522 = OpCompositeConstruct %main_out %521
+        %520 = OpFunctionCall %void %tint_symbol_3 %522
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 318[%318] is not post dominated by the back-edge block 364[%364]
+  %364 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e349c0c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.spvasm.expected.wgsl
@@ -0,0 +1,413 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_255 : i32 = *(from);
+  k = x_255;
+  let x_256 : i32 = *(from);
+  i = x_256;
+  let x_257 : i32 = *(mid);
+  j = (x_257 + 1);
+  loop {
+    var x_283 : i32;
+    var x_284 : i32;
+    var x_303 : i32;
+    var x_304 : i32;
+    var x_318 : i32;
+    var x_322 : i32;
+    var x_337 : i32;
+    var x_336 : i32;
+    var x_350 : i32;
+    var x_349 : i32;
+    var x_364 : i32;
+    var x_363 : i32;
+    var x_285_phi : i32;
+    var x_305_phi : i32;
+    var x_326_phi : i32;
+    var x_338_phi : i32;
+    var x_351_phi : i32;
+    var x_365_phi : i32;
+    if ((1.0 >= 0.0)) {
+    } else {
+      continue;
+    }
+    let x_264 : i32 = i;
+    let x_265 : i32 = *(mid);
+    let x_267 : i32 = j;
+    let x_268 : i32 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    let x_272 : i32 = i;
+    let x_274 : i32 = data[x_272];
+    let x_275 : i32 = j;
+    let x_277 : i32 = data[x_275];
+    let x_278 : bool = (x_274 < x_277);
+    if (x_278) {
+      x_283 = k;
+      x_285_phi = x_283;
+    } else {
+      x_284 = 0;
+      x_285_phi = x_284;
+    }
+    let x_285 : i32 = x_285_phi;
+    let x_286 : i32 = (x_285 + 1);
+    if (x_278) {
+      k = x_286;
+      let x_291 : f32 = x_28.injectionSwitch.x;
+      if (!((1.0 <= x_291))) {
+      } else {
+        continue;
+      }
+    }
+    let x_295 : f32 = x_28.injectionSwitch.y;
+    if ((x_295 >= 0.0)) {
+    } else {
+      continue;
+    }
+    let x_298 : i32 = 0;
+    if (x_278) {
+      x_303 = i;
+      x_305_phi = x_303;
+    } else {
+      x_304 = 0;
+      x_305_phi = x_304;
+    }
+    let x_305 : i32 = x_305_phi;
+    let x_307 : i32 = select(x_298, x_305, x_278);
+    if (x_278) {
+      i = (x_307 + 1);
+    }
+    let x_313 : i32 = 0;
+    if (x_278) {
+      x_318 = data[x_307];
+      let x_320 : f32 = x_28.injectionSwitch.y;
+      x_326_phi = x_318;
+      if (!((0.0 <= x_320))) {
+        continue;
+      }
+    } else {
+      x_322 = 0;
+      let x_324 : f32 = x_28.injectionSwitch.y;
+      x_326_phi = x_322;
+      if (!((x_324 < 0.0))) {
+      } else {
+        continue;
+      }
+    }
+    let x_326 : i32 = x_326_phi;
+    if (x_278) {
+      temp[x_285] = select(x_313, x_326, x_278);
+    }
+    if (x_278) {
+      x_337 = 0;
+      x_338_phi = x_337;
+    } else {
+      x_336 = k;
+      x_338_phi = x_336;
+    }
+    let x_338 : i32 = x_338_phi;
+    if (x_278) {
+    } else {
+      k = (x_338 + 1);
+    }
+    let x_343 : f32 = x_28.injectionSwitch.x;
+    if (!((1.0 <= x_343))) {
+    } else {
+      continue;
+    }
+    if (x_278) {
+      x_350 = 0;
+      x_351_phi = x_350;
+    } else {
+      x_349 = j;
+      x_351_phi = x_349;
+    }
+    let x_351 : i32 = x_351_phi;
+    let x_353 : i32 = 0;
+    let x_355 : i32 = select(x_351, x_353, x_278);
+    if (x_278) {
+    } else {
+      j = (x_355 + 1);
+    }
+    if (x_278) {
+      x_364 = 0;
+      x_365_phi = x_364;
+    } else {
+      x_363 = data[x_355];
+      x_365_phi = x_363;
+    }
+    let x_365 : i32 = x_365_phi;
+    if (x_278) {
+    } else {
+      temp[x_338] = x_365;
+    }
+  }
+  loop {
+    let x_374 : i32 = i;
+    let x_376 : i32 = i;
+    let x_377 : i32 = *(mid);
+    if (((x_374 < 10) && (x_376 <= x_377))) {
+    } else {
+      break;
+    }
+    let x_381 : i32 = k;
+    k = (x_381 + 1);
+    let x_383 : i32 = i;
+    i = (x_383 + 1);
+    let x_386 : i32 = data[x_383];
+    temp[x_381] = x_386;
+  }
+  let x_388 : i32 = *(from);
+  i_1 = x_388;
+  loop {
+    let x_393 : i32 = i_1;
+    let x_394 : i32 = *(to);
+    if ((x_393 <= x_394)) {
+    } else {
+      break;
+    }
+    let x_397 : i32 = i_1;
+    let x_398 : i32 = i_1;
+    let x_400 : i32 = temp[x_398];
+    data[x_397] = x_400;
+
+    continuing {
+      let x_402 : i32 = i_1;
+      i_1 = (x_402 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_409 : i32 = m;
+    let x_410 : i32 = high;
+    if ((x_409 <= x_410)) {
+    } else {
+      break;
+    }
+    let x_413 : i32 = low;
+    i_2 = x_413;
+    loop {
+      let x_418 : i32 = i_2;
+      let x_419 : i32 = high;
+      if ((x_418 < x_419)) {
+      } else {
+        break;
+      }
+      let x_422 : i32 = i_2;
+      from_1 = x_422;
+      let x_423 : i32 = i_2;
+      let x_424 : i32 = m;
+      mid_1 = ((x_423 + x_424) - 1);
+      let x_427 : i32 = i_2;
+      let x_428 : i32 = m;
+      let x_432 : i32 = high;
+      to_1 = min(((x_427 + (2 * x_428)) - 1), x_432);
+      let x_434 : i32 = from_1;
+      param = x_434;
+      let x_435 : i32 = mid_1;
+      param_1 = x_435;
+      let x_436 : i32 = to_1;
+      param_2 = x_436;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_438 : i32 = m;
+        let x_440 : i32 = i_2;
+        i_2 = (x_440 + (2 * x_438));
+      }
+    }
+
+    continuing {
+      let x_442 : i32 = m;
+      m = (2 * x_442);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_88 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_88);
+  loop {
+    let x_94 : i32 = i_3;
+    switch(x_94) {
+      case 9: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -5;
+      }
+      case 8: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -4;
+      }
+      case 7: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -3;
+      }
+      case 6: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -2;
+      }
+      case 5: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -1;
+      }
+      case 4: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 0;
+      }
+      case 3: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 1;
+      }
+      case 2: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 2;
+      }
+      case 1: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 3;
+      }
+      case 0: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 4;
+      }
+      default: {
+      }
+    }
+    let x_126 : i32 = i_3;
+    i_3 = (x_126 + 1);
+
+    continuing {
+      let x_128 : i32 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_134 : i32 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    let x_137 : i32 = j_1;
+    let x_138 : i32 = j_1;
+    let x_140 : i32 = data[x_138];
+    temp[x_137] = x_140;
+
+    continuing {
+      let x_142 : i32 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_();
+  let x_146 : f32 = gl_FragCoord.y;
+  if ((i32(x_146) < 30)) {
+    let x_153 : i32 = data[0];
+    grey = (0.5 + (f32(x_153) / 10.0));
+  } else {
+    let x_158 : f32 = gl_FragCoord.y;
+    if ((i32(x_158) < 60)) {
+      let x_165 : i32 = data[1];
+      grey = (0.5 + (f32(x_165) / 10.0));
+    } else {
+      let x_170 : f32 = gl_FragCoord.y;
+      if ((i32(x_170) < 90)) {
+        let x_177 : i32 = data[2];
+        grey = (0.5 + (f32(x_177) / 10.0));
+      } else {
+        let x_182 : f32 = gl_FragCoord.y;
+        if ((i32(x_182) < 120)) {
+          let x_189 : i32 = data[3];
+          grey = (0.5 + (f32(x_189) / 10.0));
+        } else {
+          let x_194 : f32 = gl_FragCoord.y;
+          if ((i32(x_194) < 150)) {
+            discard;
+          } else {
+            let x_201 : f32 = gl_FragCoord.y;
+            if ((i32(x_201) < 180)) {
+              let x_208 : i32 = data[5];
+              grey = (0.5 + (f32(x_208) / 10.0));
+            } else {
+              let x_213 : f32 = gl_FragCoord.y;
+              if ((i32(x_213) < 210)) {
+                let x_220 : i32 = data[6];
+                grey = (0.5 + (f32(x_220) / 10.0));
+              } else {
+                let x_225 : f32 = gl_FragCoord.y;
+                if ((i32(x_225) < 240)) {
+                  let x_232 : i32 = data[7];
+                  grey = (0.5 + (f32(x_232) / 10.0));
+                } else {
+                  let x_237 : f32 = gl_FragCoord.y;
+                  if ((i32(x_237) < 270)) {
+                    let x_244 : i32 = data[8];
+                    grey = (0.5 + (f32(x_244) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_248 : f32 = grey;
+  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
+  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
new file mode 100644
index 0000000..e349c0c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
@@ -0,0 +1,413 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_255 : i32 = *(from);
+  k = x_255;
+  let x_256 : i32 = *(from);
+  i = x_256;
+  let x_257 : i32 = *(mid);
+  j = (x_257 + 1);
+  loop {
+    var x_283 : i32;
+    var x_284 : i32;
+    var x_303 : i32;
+    var x_304 : i32;
+    var x_318 : i32;
+    var x_322 : i32;
+    var x_337 : i32;
+    var x_336 : i32;
+    var x_350 : i32;
+    var x_349 : i32;
+    var x_364 : i32;
+    var x_363 : i32;
+    var x_285_phi : i32;
+    var x_305_phi : i32;
+    var x_326_phi : i32;
+    var x_338_phi : i32;
+    var x_351_phi : i32;
+    var x_365_phi : i32;
+    if ((1.0 >= 0.0)) {
+    } else {
+      continue;
+    }
+    let x_264 : i32 = i;
+    let x_265 : i32 = *(mid);
+    let x_267 : i32 = j;
+    let x_268 : i32 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    let x_272 : i32 = i;
+    let x_274 : i32 = data[x_272];
+    let x_275 : i32 = j;
+    let x_277 : i32 = data[x_275];
+    let x_278 : bool = (x_274 < x_277);
+    if (x_278) {
+      x_283 = k;
+      x_285_phi = x_283;
+    } else {
+      x_284 = 0;
+      x_285_phi = x_284;
+    }
+    let x_285 : i32 = x_285_phi;
+    let x_286 : i32 = (x_285 + 1);
+    if (x_278) {
+      k = x_286;
+      let x_291 : f32 = x_28.injectionSwitch.x;
+      if (!((1.0 <= x_291))) {
+      } else {
+        continue;
+      }
+    }
+    let x_295 : f32 = x_28.injectionSwitch.y;
+    if ((x_295 >= 0.0)) {
+    } else {
+      continue;
+    }
+    let x_298 : i32 = 0;
+    if (x_278) {
+      x_303 = i;
+      x_305_phi = x_303;
+    } else {
+      x_304 = 0;
+      x_305_phi = x_304;
+    }
+    let x_305 : i32 = x_305_phi;
+    let x_307 : i32 = select(x_298, x_305, x_278);
+    if (x_278) {
+      i = (x_307 + 1);
+    }
+    let x_313 : i32 = 0;
+    if (x_278) {
+      x_318 = data[x_307];
+      let x_320 : f32 = x_28.injectionSwitch.y;
+      x_326_phi = x_318;
+      if (!((0.0 <= x_320))) {
+        continue;
+      }
+    } else {
+      x_322 = 0;
+      let x_324 : f32 = x_28.injectionSwitch.y;
+      x_326_phi = x_322;
+      if (!((x_324 < 0.0))) {
+      } else {
+        continue;
+      }
+    }
+    let x_326 : i32 = x_326_phi;
+    if (x_278) {
+      temp[x_285] = select(x_313, x_326, x_278);
+    }
+    if (x_278) {
+      x_337 = 0;
+      x_338_phi = x_337;
+    } else {
+      x_336 = k;
+      x_338_phi = x_336;
+    }
+    let x_338 : i32 = x_338_phi;
+    if (x_278) {
+    } else {
+      k = (x_338 + 1);
+    }
+    let x_343 : f32 = x_28.injectionSwitch.x;
+    if (!((1.0 <= x_343))) {
+    } else {
+      continue;
+    }
+    if (x_278) {
+      x_350 = 0;
+      x_351_phi = x_350;
+    } else {
+      x_349 = j;
+      x_351_phi = x_349;
+    }
+    let x_351 : i32 = x_351_phi;
+    let x_353 : i32 = 0;
+    let x_355 : i32 = select(x_351, x_353, x_278);
+    if (x_278) {
+    } else {
+      j = (x_355 + 1);
+    }
+    if (x_278) {
+      x_364 = 0;
+      x_365_phi = x_364;
+    } else {
+      x_363 = data[x_355];
+      x_365_phi = x_363;
+    }
+    let x_365 : i32 = x_365_phi;
+    if (x_278) {
+    } else {
+      temp[x_338] = x_365;
+    }
+  }
+  loop {
+    let x_374 : i32 = i;
+    let x_376 : i32 = i;
+    let x_377 : i32 = *(mid);
+    if (((x_374 < 10) && (x_376 <= x_377))) {
+    } else {
+      break;
+    }
+    let x_381 : i32 = k;
+    k = (x_381 + 1);
+    let x_383 : i32 = i;
+    i = (x_383 + 1);
+    let x_386 : i32 = data[x_383];
+    temp[x_381] = x_386;
+  }
+  let x_388 : i32 = *(from);
+  i_1 = x_388;
+  loop {
+    let x_393 : i32 = i_1;
+    let x_394 : i32 = *(to);
+    if ((x_393 <= x_394)) {
+    } else {
+      break;
+    }
+    let x_397 : i32 = i_1;
+    let x_398 : i32 = i_1;
+    let x_400 : i32 = temp[x_398];
+    data[x_397] = x_400;
+
+    continuing {
+      let x_402 : i32 = i_1;
+      i_1 = (x_402 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_409 : i32 = m;
+    let x_410 : i32 = high;
+    if ((x_409 <= x_410)) {
+    } else {
+      break;
+    }
+    let x_413 : i32 = low;
+    i_2 = x_413;
+    loop {
+      let x_418 : i32 = i_2;
+      let x_419 : i32 = high;
+      if ((x_418 < x_419)) {
+      } else {
+        break;
+      }
+      let x_422 : i32 = i_2;
+      from_1 = x_422;
+      let x_423 : i32 = i_2;
+      let x_424 : i32 = m;
+      mid_1 = ((x_423 + x_424) - 1);
+      let x_427 : i32 = i_2;
+      let x_428 : i32 = m;
+      let x_432 : i32 = high;
+      to_1 = min(((x_427 + (2 * x_428)) - 1), x_432);
+      let x_434 : i32 = from_1;
+      param = x_434;
+      let x_435 : i32 = mid_1;
+      param_1 = x_435;
+      let x_436 : i32 = to_1;
+      param_2 = x_436;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_438 : i32 = m;
+        let x_440 : i32 = i_2;
+        i_2 = (x_440 + (2 * x_438));
+      }
+    }
+
+    continuing {
+      let x_442 : i32 = m;
+      m = (2 * x_442);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_88 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_88);
+  loop {
+    let x_94 : i32 = i_3;
+    switch(x_94) {
+      case 9: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -5;
+      }
+      case 8: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -4;
+      }
+      case 7: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -3;
+      }
+      case 6: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -2;
+      }
+      case 5: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -1;
+      }
+      case 4: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 0;
+      }
+      case 3: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 1;
+      }
+      case 2: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 2;
+      }
+      case 1: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 3;
+      }
+      case 0: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 4;
+      }
+      default: {
+      }
+    }
+    let x_126 : i32 = i_3;
+    i_3 = (x_126 + 1);
+
+    continuing {
+      let x_128 : i32 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_134 : i32 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    let x_137 : i32 = j_1;
+    let x_138 : i32 = j_1;
+    let x_140 : i32 = data[x_138];
+    temp[x_137] = x_140;
+
+    continuing {
+      let x_142 : i32 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_();
+  let x_146 : f32 = gl_FragCoord.y;
+  if ((i32(x_146) < 30)) {
+    let x_153 : i32 = data[0];
+    grey = (0.5 + (f32(x_153) / 10.0));
+  } else {
+    let x_158 : f32 = gl_FragCoord.y;
+    if ((i32(x_158) < 60)) {
+      let x_165 : i32 = data[1];
+      grey = (0.5 + (f32(x_165) / 10.0));
+    } else {
+      let x_170 : f32 = gl_FragCoord.y;
+      if ((i32(x_170) < 90)) {
+        let x_177 : i32 = data[2];
+        grey = (0.5 + (f32(x_177) / 10.0));
+      } else {
+        let x_182 : f32 = gl_FragCoord.y;
+        if ((i32(x_182) < 120)) {
+          let x_189 : i32 = data[3];
+          grey = (0.5 + (f32(x_189) / 10.0));
+        } else {
+          let x_194 : f32 = gl_FragCoord.y;
+          if ((i32(x_194) < 150)) {
+            discard;
+          } else {
+            let x_201 : f32 = gl_FragCoord.y;
+            if ((i32(x_201) < 180)) {
+              let x_208 : i32 = data[5];
+              grey = (0.5 + (f32(x_208) / 10.0));
+            } else {
+              let x_213 : f32 = gl_FragCoord.y;
+              if ((i32(x_213) < 210)) {
+                let x_220 : i32 = data[6];
+                grey = (0.5 + (f32(x_220) / 10.0));
+              } else {
+                let x_225 : f32 = gl_FragCoord.y;
+                if ((i32(x_225) < 240)) {
+                  let x_232 : i32 = data[7];
+                  grey = (0.5 + (f32(x_232) / 10.0));
+                } else {
+                  let x_237 : f32 = gl_FragCoord.y;
+                  if ((i32(x_237) < 270)) {
+                    let x_244 : i32 = data[8];
+                    grey = (0.5 + (f32(x_244) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_248 : f32 = grey;
+  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
+  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9cf6e4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.hlsl
@@ -0,0 +1,372 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_255 = from;
+  k = x_255;
+  const int x_256 = from;
+  i = x_256;
+  const int x_257 = mid;
+  j = (x_257 + 1);
+  while (true) {
+    int x_283 = 0;
+    int x_284 = 0;
+    int x_303 = 0;
+    int x_304 = 0;
+    int x_318 = 0;
+    int x_322 = 0;
+    int x_337 = 0;
+    int x_336 = 0;
+    int x_350 = 0;
+    int x_349 = 0;
+    int x_364 = 0;
+    int x_363 = 0;
+    int x_285_phi = 0;
+    int x_305_phi = 0;
+    int x_326_phi = 0;
+    int x_338_phi = 0;
+    int x_351_phi = 0;
+    int x_365_phi = 0;
+    if ((1.0f >= 0.0f)) {
+    } else {
+      continue;
+    }
+    const int x_264 = i;
+    const int x_265 = mid;
+    const int x_267 = j;
+    const int x_268 = to;
+    bool tint_tmp = (x_264 <= x_265);
+    if (tint_tmp) {
+      tint_tmp = (x_267 <= x_268);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_274 = data[i];
+    const int x_277 = data[j];
+    const bool x_278 = (x_274 < x_277);
+    if (x_278) {
+      x_283 = k;
+      x_285_phi = x_283;
+    } else {
+      x_284 = 0;
+      x_285_phi = x_284;
+    }
+    const int x_285 = x_285_phi;
+    const int x_286 = (x_285 + 1);
+    if (x_278) {
+      k = x_286;
+      const float x_291 = asfloat(x_28[0].x);
+      if (!((1.0f <= x_291))) {
+      } else {
+        continue;
+      }
+    }
+    const float x_295 = asfloat(x_28[0].y);
+    if ((x_295 >= 0.0f)) {
+    } else {
+      continue;
+    }
+    const int x_298 = 0;
+    if (x_278) {
+      x_303 = i;
+      x_305_phi = x_303;
+    } else {
+      x_304 = 0;
+      x_305_phi = x_304;
+    }
+    const int x_307 = (x_278 ? x_305_phi : x_298);
+    if (x_278) {
+      i = (x_307 + 1);
+    }
+    const int x_313 = 0;
+    if (x_278) {
+      x_318 = data[x_307];
+      const float x_320 = asfloat(x_28[0].y);
+      x_326_phi = x_318;
+      if (!((0.0f <= x_320))) {
+        continue;
+      }
+    } else {
+      x_322 = 0;
+      const float x_324 = asfloat(x_28[0].y);
+      x_326_phi = x_322;
+      if (!((x_324 < 0.0f))) {
+      } else {
+        continue;
+      }
+    }
+    const int x_326 = x_326_phi;
+    if (x_278) {
+      temp[x_285] = (x_278 ? x_326 : x_313);
+    }
+    if (x_278) {
+      x_337 = 0;
+      x_338_phi = x_337;
+    } else {
+      x_336 = k;
+      x_338_phi = x_336;
+    }
+    const int x_338 = x_338_phi;
+    if (x_278) {
+    } else {
+      k = (x_338 + 1);
+    }
+    const float x_343 = asfloat(x_28[0].x);
+    if (!((1.0f <= x_343))) {
+    } else {
+      continue;
+    }
+    if (x_278) {
+      x_350 = 0;
+      x_351_phi = x_350;
+    } else {
+      x_349 = j;
+      x_351_phi = x_349;
+    }
+    const int x_355 = (x_278 ? 0 : x_351_phi);
+    if (x_278) {
+    } else {
+      j = (x_355 + 1);
+    }
+    if (x_278) {
+      x_364 = 0;
+      x_365_phi = x_364;
+    } else {
+      x_363 = data[x_355];
+      x_365_phi = x_363;
+    }
+    const int x_365 = x_365_phi;
+    if (x_278) {
+    } else {
+      temp[x_338] = x_365;
+    }
+  }
+  while (true) {
+    const int x_374 = i;
+    const int x_376 = i;
+    const int x_377 = mid;
+    bool tint_tmp_1 = (x_374 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_376 <= x_377);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_381 = k;
+    k = (x_381 + 1);
+    const int x_383 = i;
+    i = (x_383 + 1);
+    const int x_386 = data[x_383];
+    temp[x_381] = x_386;
+  }
+  const int x_388 = from;
+  i_1 = x_388;
+  while (true) {
+    const int x_393 = i_1;
+    const int x_394 = to;
+    if ((x_393 <= x_394)) {
+    } else {
+      break;
+    }
+    const int x_397 = i_1;
+    const int x_400 = temp[i_1];
+    data[x_397] = x_400;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_88 = asfloat(x_28[0].x);
+  i_3 = int(x_88);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_137 = j_1;
+      const int x_140 = data[j_1];
+      temp[x_137] = x_140;
+    }
+  }
+  mergeSort_();
+  const float x_146 = gl_FragCoord.y;
+  if ((int(x_146) < 30)) {
+    const int x_153 = data[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    const float x_158 = gl_FragCoord.y;
+    if ((int(x_158) < 60)) {
+      const int x_165 = data[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      const float x_170 = gl_FragCoord.y;
+      if ((int(x_170) < 90)) {
+        const int x_177 = data[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        const float x_182 = gl_FragCoord.y;
+        if ((int(x_182) < 120)) {
+          const int x_189 = data[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          const float x_194 = gl_FragCoord.y;
+          if ((int(x_194) < 150)) {
+            discard;
+          } else {
+            const float x_201 = gl_FragCoord.y;
+            if ((int(x_201) < 180)) {
+              const int x_208 = data[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              const float x_213 = gl_FragCoord.y;
+              if ((int(x_213) < 210)) {
+                const int x_220 = data[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                const float x_225 = gl_FragCoord.y;
+                if ((int(x_225) < 240)) {
+                  const int x_232 = data[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  const float x_237 = gl_FragCoord.y;
+                  if ((int(x_237) < 270)) {
+                    const int x_244 = data[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_248 = grey;
+  const float3 x_249 = float3(x_248, x_248, x_248);
+  x_GLF_color = float4(x_249.x, x_249.y, x_249.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.msl
new file mode 100644
index 0000000..c3a165b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.msl
@@ -0,0 +1,421 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(constant buf0& x_28, thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_255 = *(from);
+  k = x_255;
+  int const x_256 = *(from);
+  i = x_256;
+  int const x_257 = *(mid);
+  j = (x_257 + 1);
+  while (true) {
+    int x_283 = 0;
+    int x_284 = 0;
+    int x_303 = 0;
+    int x_304 = 0;
+    int x_318 = 0;
+    int x_322 = 0;
+    int x_337 = 0;
+    int x_336 = 0;
+    int x_350 = 0;
+    int x_349 = 0;
+    int x_364 = 0;
+    int x_363 = 0;
+    int x_285_phi = 0;
+    int x_305_phi = 0;
+    int x_326_phi = 0;
+    int x_338_phi = 0;
+    int x_351_phi = 0;
+    int x_365_phi = 0;
+    if ((1.0f >= 0.0f)) {
+    } else {
+      continue;
+    }
+    int const x_264 = i;
+    int const x_265 = *(mid);
+    int const x_267 = j;
+    int const x_268 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    int const x_272 = i;
+    int const x_274 = (*(tint_symbol_5)).arr[x_272];
+    int const x_275 = j;
+    int const x_277 = (*(tint_symbol_5)).arr[x_275];
+    bool const x_278 = (x_274 < x_277);
+    if (x_278) {
+      x_283 = k;
+      x_285_phi = x_283;
+    } else {
+      x_284 = 0;
+      x_285_phi = x_284;
+    }
+    int const x_285 = x_285_phi;
+    int const x_286 = (x_285 + 1);
+    if (x_278) {
+      k = x_286;
+      float const x_291 = x_28.injectionSwitch.x;
+      if (!((1.0f <= x_291))) {
+      } else {
+        continue;
+      }
+    }
+    float const x_295 = x_28.injectionSwitch.y;
+    if ((x_295 >= 0.0f)) {
+    } else {
+      continue;
+    }
+    int const x_298 = 0;
+    if (x_278) {
+      x_303 = i;
+      x_305_phi = x_303;
+    } else {
+      x_304 = 0;
+      x_305_phi = x_304;
+    }
+    int const x_305 = x_305_phi;
+    int const x_307 = select(x_298, x_305, x_278);
+    if (x_278) {
+      i = (x_307 + 1);
+    }
+    int const x_313 = 0;
+    if (x_278) {
+      x_318 = (*(tint_symbol_5)).arr[x_307];
+      float const x_320 = x_28.injectionSwitch.y;
+      x_326_phi = x_318;
+      if (!((0.0f <= x_320))) {
+        continue;
+      }
+    } else {
+      x_322 = 0;
+      float const x_324 = x_28.injectionSwitch.y;
+      x_326_phi = x_322;
+      if (!((x_324 < 0.0f))) {
+      } else {
+        continue;
+      }
+    }
+    int const x_326 = x_326_phi;
+    if (x_278) {
+      (*(tint_symbol_6)).arr[x_285] = select(x_313, x_326, x_278);
+    }
+    if (x_278) {
+      x_337 = 0;
+      x_338_phi = x_337;
+    } else {
+      x_336 = k;
+      x_338_phi = x_336;
+    }
+    int const x_338 = x_338_phi;
+    if (x_278) {
+    } else {
+      k = (x_338 + 1);
+    }
+    float const x_343 = x_28.injectionSwitch.x;
+    if (!((1.0f <= x_343))) {
+    } else {
+      continue;
+    }
+    if (x_278) {
+      x_350 = 0;
+      x_351_phi = x_350;
+    } else {
+      x_349 = j;
+      x_351_phi = x_349;
+    }
+    int const x_351 = x_351_phi;
+    int const x_353 = 0;
+    int const x_355 = select(x_351, x_353, x_278);
+    if (x_278) {
+    } else {
+      j = (x_355 + 1);
+    }
+    if (x_278) {
+      x_364 = 0;
+      x_365_phi = x_364;
+    } else {
+      x_363 = (*(tint_symbol_5)).arr[x_355];
+      x_365_phi = x_363;
+    }
+    int const x_365 = x_365_phi;
+    if (x_278) {
+    } else {
+      (*(tint_symbol_6)).arr[x_338] = x_365;
+    }
+  }
+  while (true) {
+    int const x_374 = i;
+    int const x_376 = i;
+    int const x_377 = *(mid);
+    if (((x_374 < 10) && (x_376 <= x_377))) {
+    } else {
+      break;
+    }
+    int const x_381 = k;
+    k = (x_381 + 1);
+    int const x_383 = i;
+    i = (x_383 + 1);
+    int const x_386 = (*(tint_symbol_5)).arr[x_383];
+    (*(tint_symbol_6)).arr[x_381] = x_386;
+  }
+  int const x_388 = *(from);
+  i_1 = x_388;
+  while (true) {
+    int const x_393 = i_1;
+    int const x_394 = *(to);
+    if ((x_393 <= x_394)) {
+    } else {
+      break;
+    }
+    int const x_397 = i_1;
+    int const x_398 = i_1;
+    int const x_400 = (*(tint_symbol_6)).arr[x_398];
+    (*(tint_symbol_5)).arr[x_397] = x_400;
+    {
+      int const x_402 = i_1;
+      i_1 = (x_402 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_409 = m;
+    int const x_410 = high;
+    if ((x_409 <= x_410)) {
+    } else {
+      break;
+    }
+    int const x_413 = low;
+    i_2 = x_413;
+    while (true) {
+      int const x_418 = i_2;
+      int const x_419 = high;
+      if ((x_418 < x_419)) {
+      } else {
+        break;
+      }
+      int const x_422 = i_2;
+      from_1 = x_422;
+      int const x_423 = i_2;
+      int const x_424 = m;
+      mid_1 = ((x_423 + x_424) - 1);
+      int const x_427 = i_2;
+      int const x_428 = m;
+      int const x_432 = high;
+      to_1 = min(((x_427 + (2 * x_428)) - 1), x_432);
+      int const x_434 = from_1;
+      param = x_434;
+      int const x_435 = mid_1;
+      param_1 = x_435;
+      int const x_436 = to_1;
+      param_2 = x_436;
+      merge_i1_i1_i1_(x_28, &(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_438 = m;
+        int const x_440 = i_2;
+        i_2 = (x_440 + (2 * x_438));
+      }
+    }
+    {
+      int const x_442 = m;
+      m = (2 * x_442);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_88 = x_28.injectionSwitch.x;
+  i_3 = int(x_88);
+  while (true) {
+    int const x_94 = i_3;
+    switch(x_94) {
+      case 9: {
+        int const x_124 = i_3;
+        (*(tint_symbol_9)).arr[x_124] = -5;
+        break;
+      }
+      case 8: {
+        int const x_122 = i_3;
+        (*(tint_symbol_9)).arr[x_122] = -4;
+        break;
+      }
+      case 7: {
+        int const x_120 = i_3;
+        (*(tint_symbol_9)).arr[x_120] = -3;
+        break;
+      }
+      case 6: {
+        int const x_118 = i_3;
+        (*(tint_symbol_9)).arr[x_118] = -2;
+        break;
+      }
+      case 5: {
+        int const x_116 = i_3;
+        (*(tint_symbol_9)).arr[x_116] = -1;
+        break;
+      }
+      case 4: {
+        int const x_114 = i_3;
+        (*(tint_symbol_9)).arr[x_114] = 0;
+        break;
+      }
+      case 3: {
+        int const x_112 = i_3;
+        (*(tint_symbol_9)).arr[x_112] = 1;
+        break;
+      }
+      case 2: {
+        int const x_110 = i_3;
+        (*(tint_symbol_9)).arr[x_110] = 2;
+        break;
+      }
+      case 1: {
+        int const x_108 = i_3;
+        (*(tint_symbol_9)).arr[x_108] = 3;
+        break;
+      }
+      case 0: {
+        int const x_106 = i_3;
+        (*(tint_symbol_9)).arr[x_106] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_126 = i_3;
+    i_3 = (x_126 + 1);
+    {
+      int const x_128 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_134 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    int const x_137 = j_1;
+    int const x_138 = j_1;
+    int const x_140 = (*(tint_symbol_9)).arr[x_138];
+    (*(tint_symbol_10)).arr[x_137] = x_140;
+    {
+      int const x_142 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_(x_28, tint_symbol_9, tint_symbol_10);
+  float const x_146 = (*(tint_symbol_11)).y;
+  if ((int(x_146) < 30)) {
+    int const x_153 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_153) / 10.0f));
+  } else {
+    float const x_158 = (*(tint_symbol_11)).y;
+    if ((int(x_158) < 60)) {
+      int const x_165 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_165) / 10.0f));
+    } else {
+      float const x_170 = (*(tint_symbol_11)).y;
+      if ((int(x_170) < 90)) {
+        int const x_177 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_177) / 10.0f));
+      } else {
+        float const x_182 = (*(tint_symbol_11)).y;
+        if ((int(x_182) < 120)) {
+          int const x_189 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_189) / 10.0f));
+        } else {
+          float const x_194 = (*(tint_symbol_11)).y;
+          if ((int(x_194) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_201 = (*(tint_symbol_11)).y;
+            if ((int(x_201) < 180)) {
+              int const x_208 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_208) / 10.0f));
+            } else {
+              float const x_213 = (*(tint_symbol_11)).y;
+              if ((int(x_213) < 210)) {
+                int const x_220 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_220) / 10.0f));
+              } else {
+                float const x_225 = (*(tint_symbol_11)).y;
+                if ((int(x_225) < 240)) {
+                  int const x_232 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_232) / 10.0f));
+                } else {
+                  float const x_237 = (*(tint_symbol_11)).y;
+                  if ((int(x_237) < 270)) {
+                    int const x_244 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_244) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_248 = grey;
+  float3 const x_249 = float3(x_248, x_248, x_248);
+  *(tint_symbol_12) = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..338bca8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.spvasm
@@ -0,0 +1,862 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 523
+; Schema: 0
+               OpCapability Shader
+        %288 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %x_283 "x_283"
+               OpName %x_284 "x_284"
+               OpName %x_303 "x_303"
+               OpName %x_304 "x_304"
+               OpName %x_318 "x_318"
+               OpName %x_322 "x_322"
+               OpName %x_337 "x_337"
+               OpName %x_336 "x_336"
+               OpName %x_350 "x_350"
+               OpName %x_349 "x_349"
+               OpName %x_364 "x_364"
+               OpName %x_363 "x_363"
+               OpName %x_285_phi "x_285_phi"
+               OpName %x_305_phi "x_305_phi"
+               OpName %x_326_phi "x_326_phi"
+               OpName %x_338_phi "x_338_phi"
+               OpName %x_351_phi "x_351_phi"
+               OpName %x_365_phi "x_365_phi"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+     %int_10 = OpConstant %int 10
+        %244 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %312 = OpConstantNull %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+   %main_out = OpTypeStruct %v4float
+        %510 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+      %x_283 = OpVariable %_ptr_Function_int Function %32
+      %x_284 = OpVariable %_ptr_Function_int Function %32
+      %x_303 = OpVariable %_ptr_Function_int Function %32
+      %x_304 = OpVariable %_ptr_Function_int Function %32
+      %x_318 = OpVariable %_ptr_Function_int Function %32
+      %x_322 = OpVariable %_ptr_Function_int Function %32
+      %x_337 = OpVariable %_ptr_Function_int Function %32
+      %x_336 = OpVariable %_ptr_Function_int Function %32
+      %x_350 = OpVariable %_ptr_Function_int Function %32
+      %x_349 = OpVariable %_ptr_Function_int Function %32
+      %x_364 = OpVariable %_ptr_Function_int Function %32
+      %x_363 = OpVariable %_ptr_Function_int Function %32
+  %x_285_phi = OpVariable %_ptr_Function_int Function %32
+  %x_305_phi = OpVariable %_ptr_Function_int Function %32
+  %x_326_phi = OpVariable %_ptr_Function_int Function %32
+  %x_338_phi = OpVariable %_ptr_Function_int Function %32
+  %x_351_phi = OpVariable %_ptr_Function_int Function %32
+  %x_365_phi = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %68 = OpFOrdGreaterThanEqual %bool %float_1 %float_0
+               OpSelectionMerge %70 None
+               OpBranchConditional %68 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %46
+         %70 = OpLabel
+         %73 = OpLoad %int %i
+         %75 = OpLoad %int %mid
+         %76 = OpLoad %int %j
+         %78 = OpLoad %int %to
+         %79 = OpSLessThanEqual %bool %73 %75
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %80
+         %81 = OpLabel
+         %82 = OpSLessThanEqual %bool %76 %78
+               OpBranch %80
+         %80 = OpLabel
+         %83 = OpPhi %bool %79 %70 %82 %81
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %45
+         %84 = OpLabel
+         %87 = OpLoad %int %i
+         %89 = OpAccessChain %_ptr_Private_int %data %87
+         %90 = OpLoad %int %89
+         %91 = OpLoad %int %j
+         %92 = OpAccessChain %_ptr_Private_int %data %91
+         %93 = OpLoad %int %92
+         %94 = OpSLessThan %bool %90 %93
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+         %98 = OpLoad %int %k
+               OpStore %x_283 %98
+         %99 = OpLoad %int %x_283
+               OpStore %x_285_phi %99
+               OpBranch %95
+         %97 = OpLabel
+               OpStore %x_284 %int_0
+        %101 = OpLoad %int %x_284
+               OpStore %x_285_phi %101
+               OpBranch %95
+         %95 = OpLabel
+        %102 = OpLoad %int %x_285_phi
+        %103 = OpIAdd %int %102 %int_1
+               OpSelectionMerge %104 None
+               OpBranchConditional %94 %105 %104
+        %105 = OpLabel
+               OpStore %k %103
+        %108 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %109 = OpLoad %float %108
+        %111 = OpFOrdLessThanEqual %bool %float_1 %109
+        %110 = OpLogicalNot %bool %111
+               OpSelectionMerge %112 None
+               OpBranchConditional %110 %113 %114
+        %113 = OpLabel
+               OpBranch %112
+        %114 = OpLabel
+               OpBranch %46
+        %112 = OpLabel
+               OpBranch %104
+        %104 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %117 = OpLoad %float %116
+        %118 = OpFOrdGreaterThanEqual %bool %117 %float_0
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %121
+        %120 = OpLabel
+               OpBranch %119
+        %121 = OpLabel
+               OpBranch %46
+        %119 = OpLabel
+               OpSelectionMerge %122 None
+               OpBranchConditional %94 %123 %124
+        %123 = OpLabel
+        %125 = OpLoad %int %i
+               OpStore %x_303 %125
+        %126 = OpLoad %int %x_303
+               OpStore %x_305_phi %126
+               OpBranch %122
+        %124 = OpLabel
+               OpStore %x_304 %int_0
+        %127 = OpLoad %int %x_304
+               OpStore %x_305_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %int %x_305_phi
+        %129 = OpSelect %int %94 %128 %int_0
+               OpSelectionMerge %130 None
+               OpBranchConditional %94 %131 %130
+        %131 = OpLabel
+        %132 = OpIAdd %int %129 %int_1
+               OpStore %i %132
+               OpBranch %130
+        %130 = OpLabel
+               OpSelectionMerge %133 None
+               OpBranchConditional %94 %134 %135
+        %134 = OpLabel
+        %136 = OpAccessChain %_ptr_Private_int %data %129
+        %137 = OpLoad %int %136
+               OpStore %x_318 %137
+        %138 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %139 = OpLoad %float %138
+        %140 = OpLoad %int %x_318
+               OpStore %x_326_phi %140
+        %142 = OpFOrdLessThanEqual %bool %float_0 %139
+        %141 = OpLogicalNot %bool %142
+               OpSelectionMerge %143 None
+               OpBranchConditional %141 %144 %143
+        %144 = OpLabel
+               OpBranch %46
+        %143 = OpLabel
+               OpBranch %133
+        %135 = OpLabel
+               OpStore %x_322 %int_0
+        %145 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_1
+        %146 = OpLoad %float %145
+        %147 = OpLoad %int %x_322
+               OpStore %x_326_phi %147
+        %149 = OpFOrdLessThan %bool %146 %float_0
+        %148 = OpLogicalNot %bool %149
+               OpSelectionMerge %150 None
+               OpBranchConditional %148 %151 %152
+        %151 = OpLabel
+               OpBranch %150
+        %152 = OpLabel
+               OpBranch %46
+        %150 = OpLabel
+               OpBranch %133
+        %133 = OpLabel
+        %153 = OpLoad %int %x_326_phi
+               OpSelectionMerge %154 None
+               OpBranchConditional %94 %155 %154
+        %155 = OpLabel
+        %156 = OpAccessChain %_ptr_Private_int %temp %102
+        %157 = OpSelect %int %94 %153 %int_0
+               OpStore %156 %157
+               OpBranch %154
+        %154 = OpLabel
+               OpSelectionMerge %158 None
+               OpBranchConditional %94 %159 %160
+        %159 = OpLabel
+               OpStore %x_337 %int_0
+        %161 = OpLoad %int %x_337
+               OpStore %x_338_phi %161
+               OpBranch %158
+        %160 = OpLabel
+        %162 = OpLoad %int %k
+               OpStore %x_336 %162
+        %163 = OpLoad %int %x_336
+               OpStore %x_338_phi %163
+               OpBranch %158
+        %158 = OpLabel
+        %164 = OpLoad %int %x_338_phi
+               OpSelectionMerge %165 None
+               OpBranchConditional %94 %166 %167
+        %166 = OpLabel
+               OpBranch %165
+        %167 = OpLabel
+        %168 = OpIAdd %int %164 %int_1
+               OpStore %k %168
+               OpBranch %165
+        %165 = OpLabel
+        %169 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %170 = OpLoad %float %169
+        %172 = OpFOrdLessThanEqual %bool %float_1 %170
+        %171 = OpLogicalNot %bool %172
+               OpSelectionMerge %173 None
+               OpBranchConditional %171 %174 %175
+        %174 = OpLabel
+               OpBranch %173
+        %175 = OpLabel
+               OpBranch %46
+        %173 = OpLabel
+               OpSelectionMerge %176 None
+               OpBranchConditional %94 %177 %178
+        %177 = OpLabel
+               OpStore %x_350 %int_0
+        %179 = OpLoad %int %x_350
+               OpStore %x_351_phi %179
+               OpBranch %176
+        %178 = OpLabel
+        %180 = OpLoad %int %j
+               OpStore %x_349 %180
+        %181 = OpLoad %int %x_349
+               OpStore %x_351_phi %181
+               OpBranch %176
+        %176 = OpLabel
+        %182 = OpLoad %int %x_351_phi
+        %183 = OpSelect %int %94 %int_0 %182
+               OpSelectionMerge %184 None
+               OpBranchConditional %94 %185 %186
+        %185 = OpLabel
+               OpBranch %184
+        %186 = OpLabel
+        %187 = OpIAdd %int %183 %int_1
+               OpStore %j %187
+               OpBranch %184
+        %184 = OpLabel
+               OpSelectionMerge %188 None
+               OpBranchConditional %94 %189 %190
+        %189 = OpLabel
+               OpStore %x_364 %int_0
+        %191 = OpLoad %int %x_364
+               OpStore %x_365_phi %191
+               OpBranch %188
+        %190 = OpLabel
+        %192 = OpAccessChain %_ptr_Private_int %data %183
+        %193 = OpLoad %int %192
+               OpStore %x_363 %193
+        %194 = OpLoad %int %x_363
+               OpStore %x_365_phi %194
+               OpBranch %188
+        %188 = OpLabel
+        %195 = OpLoad %int %x_365_phi
+               OpSelectionMerge %196 None
+               OpBranchConditional %94 %197 %198
+        %197 = OpLabel
+               OpBranch %196
+        %198 = OpLabel
+        %199 = OpAccessChain %_ptr_Private_int %temp %164
+               OpStore %199 %195
+               OpBranch %196
+        %196 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %200
+        %200 = OpLabel
+               OpLoopMerge %201 %202 None
+               OpBranch %203
+        %203 = OpLabel
+        %204 = OpLoad %int %i
+        %205 = OpLoad %int %i
+        %207 = OpLoad %int %mid
+        %209 = OpSLessThan %bool %204 %int_10
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %210
+        %211 = OpLabel
+        %212 = OpSLessThanEqual %bool %205 %207
+               OpBranch %210
+        %210 = OpLabel
+        %213 = OpPhi %bool %209 %203 %212 %211
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %201
+        %214 = OpLabel
+        %217 = OpLoad %int %k
+        %218 = OpIAdd %int %217 %int_1
+               OpStore %k %218
+        %219 = OpLoad %int %i
+        %220 = OpIAdd %int %219 %int_1
+               OpStore %i %220
+        %221 = OpAccessChain %_ptr_Private_int %data %219
+        %222 = OpLoad %int %221
+        %223 = OpAccessChain %_ptr_Private_int %temp %217
+               OpStore %223 %222
+               OpBranch %202
+        %202 = OpLabel
+               OpBranch %200
+        %201 = OpLabel
+        %225 = OpLoad %int %from
+               OpStore %i_1 %225
+               OpBranch %226
+        %226 = OpLabel
+               OpLoopMerge %227 %228 None
+               OpBranch %229
+        %229 = OpLabel
+        %230 = OpLoad %int %i_1
+        %232 = OpLoad %int %to
+        %233 = OpSLessThanEqual %bool %230 %232
+               OpSelectionMerge %234 None
+               OpBranchConditional %233 %235 %236
+        %235 = OpLabel
+               OpBranch %234
+        %236 = OpLabel
+               OpBranch %227
+        %234 = OpLabel
+        %237 = OpLoad %int %i_1
+        %238 = OpLoad %int %i_1
+        %239 = OpAccessChain %_ptr_Private_int %temp %238
+        %240 = OpLoad %int %239
+        %241 = OpAccessChain %_ptr_Private_int %data %237
+               OpStore %241 %240
+               OpBranch %228
+        %228 = OpLabel
+        %242 = OpLoad %int %i_1
+        %243 = OpIAdd %int %242 %int_1
+               OpStore %i_1 %243
+               OpBranch %226
+        %227 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %244
+        %246 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %258
+        %258 = OpLabel
+               OpLoopMerge %259 %260 None
+               OpBranch %261
+        %261 = OpLabel
+        %262 = OpLoad %int %m
+        %263 = OpLoad %int %high
+        %264 = OpSLessThanEqual %bool %262 %263
+               OpSelectionMerge %265 None
+               OpBranchConditional %264 %266 %267
+        %266 = OpLabel
+               OpBranch %265
+        %267 = OpLabel
+               OpBranch %259
+        %265 = OpLabel
+        %268 = OpLoad %int %low
+               OpStore %i_2 %268
+               OpBranch %269
+        %269 = OpLabel
+               OpLoopMerge %270 %271 None
+               OpBranch %272
+        %272 = OpLabel
+        %273 = OpLoad %int %i_2
+        %274 = OpLoad %int %high
+        %275 = OpSLessThan %bool %273 %274
+               OpSelectionMerge %276 None
+               OpBranchConditional %275 %277 %278
+        %277 = OpLabel
+               OpBranch %276
+        %278 = OpLabel
+               OpBranch %270
+        %276 = OpLabel
+        %279 = OpLoad %int %i_2
+               OpStore %from_1 %279
+        %280 = OpLoad %int %i_2
+        %281 = OpLoad %int %m
+        %282 = OpIAdd %int %280 %281
+        %283 = OpISub %int %282 %int_1
+               OpStore %mid_1 %283
+        %284 = OpLoad %int %i_2
+        %285 = OpLoad %int %m
+        %286 = OpLoad %int %high
+        %290 = OpIMul %int %int_2 %285
+        %291 = OpIAdd %int %284 %290
+        %292 = OpISub %int %291 %int_1
+        %287 = OpExtInst %int %288 SMin %292 %286
+               OpStore %to_1 %287
+        %293 = OpLoad %int %from_1
+               OpStore %param %293
+        %294 = OpLoad %int %mid_1
+               OpStore %param_1 %294
+        %295 = OpLoad %int %to_1
+               OpStore %param_2 %295
+        %296 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %271
+        %271 = OpLabel
+        %300 = OpLoad %int %m
+        %301 = OpLoad %int %i_2
+        %302 = OpIMul %int %int_2 %300
+        %303 = OpIAdd %int %301 %302
+               OpStore %i_2 %303
+               OpBranch %269
+        %270 = OpLabel
+               OpBranch %260
+        %260 = OpLabel
+        %304 = OpLoad %int %m
+        %305 = OpIMul %int %int_2 %304
+               OpStore %m %305
+               OpBranch %258
+        %259 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %244
+        %307 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %312
+        %313 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %314 = OpLoad %float %313
+        %315 = OpConvertFToS %int %314
+               OpStore %i_3 %315
+               OpBranch %316
+        %316 = OpLabel
+               OpLoopMerge %317 %318 None
+               OpBranch %319
+        %319 = OpLabel
+        %320 = OpLoad %int %i_3
+               OpSelectionMerge %321 None
+               OpSwitch %320 %322 9 %323 8 %324 7 %325 6 %326 5 %327 4 %328 3 %329 2 %330 1 %331 0 %332
+        %323 = OpLabel
+        %333 = OpLoad %int %i_3
+        %334 = OpAccessChain %_ptr_Private_int %data %333
+               OpStore %334 %int_n5
+               OpBranch %321
+        %324 = OpLabel
+        %336 = OpLoad %int %i_3
+        %337 = OpAccessChain %_ptr_Private_int %data %336
+               OpStore %337 %int_n4
+               OpBranch %321
+        %325 = OpLabel
+        %339 = OpLoad %int %i_3
+        %340 = OpAccessChain %_ptr_Private_int %data %339
+               OpStore %340 %int_n3
+               OpBranch %321
+        %326 = OpLabel
+        %342 = OpLoad %int %i_3
+        %343 = OpAccessChain %_ptr_Private_int %data %342
+               OpStore %343 %int_n2
+               OpBranch %321
+        %327 = OpLabel
+        %345 = OpLoad %int %i_3
+        %346 = OpAccessChain %_ptr_Private_int %data %345
+               OpStore %346 %int_n1
+               OpBranch %321
+        %328 = OpLabel
+        %348 = OpLoad %int %i_3
+        %349 = OpAccessChain %_ptr_Private_int %data %348
+               OpStore %349 %int_0
+               OpBranch %321
+        %329 = OpLabel
+        %350 = OpLoad %int %i_3
+        %351 = OpAccessChain %_ptr_Private_int %data %350
+               OpStore %351 %int_1
+               OpBranch %321
+        %330 = OpLabel
+        %352 = OpLoad %int %i_3
+        %353 = OpAccessChain %_ptr_Private_int %data %352
+               OpStore %353 %int_2
+               OpBranch %321
+        %331 = OpLabel
+        %354 = OpLoad %int %i_3
+        %355 = OpAccessChain %_ptr_Private_int %data %354
+               OpStore %355 %int_3
+               OpBranch %321
+        %332 = OpLabel
+        %357 = OpLoad %int %i_3
+        %358 = OpAccessChain %_ptr_Private_int %data %357
+               OpStore %358 %int_4
+               OpBranch %321
+        %322 = OpLabel
+               OpBranch %321
+        %321 = OpLabel
+        %360 = OpLoad %int %i_3
+        %361 = OpIAdd %int %360 %int_1
+               OpStore %i_3 %361
+               OpBranch %318
+        %318 = OpLabel
+        %362 = OpLoad %int %i_3
+        %363 = OpSLessThan %bool %362 %int_10
+               OpSelectionMerge %364 None
+               OpBranchConditional %363 %365 %366
+        %365 = OpLabel
+               OpBranch %364
+        %366 = OpLabel
+               OpBranch %317
+        %364 = OpLabel
+               OpBranch %316
+        %317 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %367
+        %367 = OpLabel
+               OpLoopMerge %368 %369 None
+               OpBranch %370
+        %370 = OpLabel
+        %371 = OpLoad %int %j_1
+        %372 = OpSLessThan %bool %371 %int_10
+               OpSelectionMerge %373 None
+               OpBranchConditional %372 %374 %375
+        %374 = OpLabel
+               OpBranch %373
+        %375 = OpLabel
+               OpBranch %368
+        %373 = OpLabel
+        %376 = OpLoad %int %j_1
+        %377 = OpLoad %int %j_1
+        %378 = OpAccessChain %_ptr_Private_int %data %377
+        %379 = OpLoad %int %378
+        %380 = OpAccessChain %_ptr_Private_int %temp %376
+               OpStore %380 %379
+               OpBranch %369
+        %369 = OpLabel
+        %381 = OpLoad %int %j_1
+        %382 = OpIAdd %int %381 %int_1
+               OpStore %j_1 %382
+               OpBranch %367
+        %368 = OpLabel
+        %383 = OpFunctionCall %void %mergeSort_
+        %385 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %386 = OpLoad %float %385
+        %387 = OpConvertFToS %int %386
+        %389 = OpSLessThan %bool %387 %int_30
+               OpSelectionMerge %390 None
+               OpBranchConditional %389 %391 %392
+        %391 = OpLabel
+        %393 = OpAccessChain %_ptr_Private_int %data %int_0
+        %394 = OpLoad %int %393
+        %396 = OpConvertSToF %float %394
+        %398 = OpFDiv %float %396 %float_10
+        %399 = OpFAdd %float %float_0_5 %398
+               OpStore %grey %399
+               OpBranch %390
+        %392 = OpLabel
+        %400 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %401 = OpLoad %float %400
+        %402 = OpConvertFToS %int %401
+        %404 = OpSLessThan %bool %402 %int_60
+               OpSelectionMerge %405 None
+               OpBranchConditional %404 %406 %407
+        %406 = OpLabel
+        %408 = OpAccessChain %_ptr_Private_int %data %int_1
+        %409 = OpLoad %int %408
+        %410 = OpConvertSToF %float %409
+        %411 = OpFDiv %float %410 %float_10
+        %412 = OpFAdd %float %float_0_5 %411
+               OpStore %grey %412
+               OpBranch %405
+        %407 = OpLabel
+        %413 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %414 = OpLoad %float %413
+        %415 = OpConvertFToS %int %414
+        %417 = OpSLessThan %bool %415 %int_90
+               OpSelectionMerge %418 None
+               OpBranchConditional %417 %419 %420
+        %419 = OpLabel
+        %421 = OpAccessChain %_ptr_Private_int %data %int_2
+        %422 = OpLoad %int %421
+        %423 = OpConvertSToF %float %422
+        %424 = OpFDiv %float %423 %float_10
+        %425 = OpFAdd %float %float_0_5 %424
+               OpStore %grey %425
+               OpBranch %418
+        %420 = OpLabel
+        %426 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %427 = OpLoad %float %426
+        %428 = OpConvertFToS %int %427
+        %430 = OpSLessThan %bool %428 %int_120
+               OpSelectionMerge %431 None
+               OpBranchConditional %430 %432 %433
+        %432 = OpLabel
+        %434 = OpAccessChain %_ptr_Private_int %data %int_3
+        %435 = OpLoad %int %434
+        %436 = OpConvertSToF %float %435
+        %437 = OpFDiv %float %436 %float_10
+        %438 = OpFAdd %float %float_0_5 %437
+               OpStore %grey %438
+               OpBranch %431
+        %433 = OpLabel
+        %439 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %440 = OpLoad %float %439
+        %441 = OpConvertFToS %int %440
+        %443 = OpSLessThan %bool %441 %int_150
+               OpSelectionMerge %444 None
+               OpBranchConditional %443 %445 %446
+        %445 = OpLabel
+               OpKill
+        %446 = OpLabel
+        %447 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %448 = OpLoad %float %447
+        %449 = OpConvertFToS %int %448
+        %451 = OpSLessThan %bool %449 %int_180
+               OpSelectionMerge %452 None
+               OpBranchConditional %451 %453 %454
+        %453 = OpLabel
+        %456 = OpAccessChain %_ptr_Private_int %data %int_5
+        %457 = OpLoad %int %456
+        %458 = OpConvertSToF %float %457
+        %459 = OpFDiv %float %458 %float_10
+        %460 = OpFAdd %float %float_0_5 %459
+               OpStore %grey %460
+               OpBranch %452
+        %454 = OpLabel
+        %461 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %462 = OpLoad %float %461
+        %463 = OpConvertFToS %int %462
+        %465 = OpSLessThan %bool %463 %int_210
+               OpSelectionMerge %466 None
+               OpBranchConditional %465 %467 %468
+        %467 = OpLabel
+        %470 = OpAccessChain %_ptr_Private_int %data %int_6
+        %471 = OpLoad %int %470
+        %472 = OpConvertSToF %float %471
+        %473 = OpFDiv %float %472 %float_10
+        %474 = OpFAdd %float %float_0_5 %473
+               OpStore %grey %474
+               OpBranch %466
+        %468 = OpLabel
+        %475 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %476 = OpLoad %float %475
+        %477 = OpConvertFToS %int %476
+        %479 = OpSLessThan %bool %477 %int_240
+               OpSelectionMerge %480 None
+               OpBranchConditional %479 %481 %482
+        %481 = OpLabel
+        %484 = OpAccessChain %_ptr_Private_int %data %int_7
+        %485 = OpLoad %int %484
+        %486 = OpConvertSToF %float %485
+        %487 = OpFDiv %float %486 %float_10
+        %488 = OpFAdd %float %float_0_5 %487
+               OpStore %grey %488
+               OpBranch %480
+        %482 = OpLabel
+        %489 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %490 = OpLoad %float %489
+        %491 = OpConvertFToS %int %490
+        %493 = OpSLessThan %bool %491 %int_270
+               OpSelectionMerge %494 None
+               OpBranchConditional %493 %495 %496
+        %495 = OpLabel
+        %498 = OpAccessChain %_ptr_Private_int %data %int_8
+        %499 = OpLoad %int %498
+        %500 = OpConvertSToF %float %499
+        %501 = OpFDiv %float %500 %float_10
+        %502 = OpFAdd %float %float_0_5 %501
+               OpStore %grey %502
+               OpBranch %494
+        %496 = OpLabel
+               OpKill
+        %494 = OpLabel
+               OpBranch %480
+        %480 = OpLabel
+               OpBranch %466
+        %466 = OpLabel
+               OpBranch %452
+        %452 = OpLabel
+               OpBranch %444
+        %444 = OpLabel
+               OpBranch %431
+        %431 = OpLabel
+               OpBranch %418
+        %418 = OpLabel
+               OpBranch %405
+        %405 = OpLabel
+               OpBranch %390
+        %390 = OpLabel
+        %503 = OpLoad %float %grey
+        %505 = OpCompositeConstruct %v3float %503 %503 %503
+        %506 = OpCompositeExtract %float %505 0
+        %507 = OpCompositeExtract %float %505 1
+        %508 = OpCompositeExtract %float %505 2
+        %509 = OpCompositeConstruct %v4float %506 %507 %508 %float_1
+               OpStore %x_GLF_color %509
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %510
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %514 = OpLabel
+        %515 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %515
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %244
+        %517 = OpLabel
+        %518 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %518
+        %519 = OpFunctionCall %void %main_1
+        %521 = OpLoad %v4float %x_GLF_color
+        %522 = OpCompositeConstruct %main_out %521
+        %520 = OpFunctionCall %void %tint_symbol_3 %522
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 318[%318] is not post dominated by the back-edge block 364[%364]
+  %364 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e349c0c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl.expected.wgsl
@@ -0,0 +1,413 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_255 : i32 = *(from);
+  k = x_255;
+  let x_256 : i32 = *(from);
+  i = x_256;
+  let x_257 : i32 = *(mid);
+  j = (x_257 + 1);
+  loop {
+    var x_283 : i32;
+    var x_284 : i32;
+    var x_303 : i32;
+    var x_304 : i32;
+    var x_318 : i32;
+    var x_322 : i32;
+    var x_337 : i32;
+    var x_336 : i32;
+    var x_350 : i32;
+    var x_349 : i32;
+    var x_364 : i32;
+    var x_363 : i32;
+    var x_285_phi : i32;
+    var x_305_phi : i32;
+    var x_326_phi : i32;
+    var x_338_phi : i32;
+    var x_351_phi : i32;
+    var x_365_phi : i32;
+    if ((1.0 >= 0.0)) {
+    } else {
+      continue;
+    }
+    let x_264 : i32 = i;
+    let x_265 : i32 = *(mid);
+    let x_267 : i32 = j;
+    let x_268 : i32 = *(to);
+    if (((x_264 <= x_265) && (x_267 <= x_268))) {
+    } else {
+      break;
+    }
+    let x_272 : i32 = i;
+    let x_274 : i32 = data[x_272];
+    let x_275 : i32 = j;
+    let x_277 : i32 = data[x_275];
+    let x_278 : bool = (x_274 < x_277);
+    if (x_278) {
+      x_283 = k;
+      x_285_phi = x_283;
+    } else {
+      x_284 = 0;
+      x_285_phi = x_284;
+    }
+    let x_285 : i32 = x_285_phi;
+    let x_286 : i32 = (x_285 + 1);
+    if (x_278) {
+      k = x_286;
+      let x_291 : f32 = x_28.injectionSwitch.x;
+      if (!((1.0 <= x_291))) {
+      } else {
+        continue;
+      }
+    }
+    let x_295 : f32 = x_28.injectionSwitch.y;
+    if ((x_295 >= 0.0)) {
+    } else {
+      continue;
+    }
+    let x_298 : i32 = 0;
+    if (x_278) {
+      x_303 = i;
+      x_305_phi = x_303;
+    } else {
+      x_304 = 0;
+      x_305_phi = x_304;
+    }
+    let x_305 : i32 = x_305_phi;
+    let x_307 : i32 = select(x_298, x_305, x_278);
+    if (x_278) {
+      i = (x_307 + 1);
+    }
+    let x_313 : i32 = 0;
+    if (x_278) {
+      x_318 = data[x_307];
+      let x_320 : f32 = x_28.injectionSwitch.y;
+      x_326_phi = x_318;
+      if (!((0.0 <= x_320))) {
+        continue;
+      }
+    } else {
+      x_322 = 0;
+      let x_324 : f32 = x_28.injectionSwitch.y;
+      x_326_phi = x_322;
+      if (!((x_324 < 0.0))) {
+      } else {
+        continue;
+      }
+    }
+    let x_326 : i32 = x_326_phi;
+    if (x_278) {
+      temp[x_285] = select(x_313, x_326, x_278);
+    }
+    if (x_278) {
+      x_337 = 0;
+      x_338_phi = x_337;
+    } else {
+      x_336 = k;
+      x_338_phi = x_336;
+    }
+    let x_338 : i32 = x_338_phi;
+    if (x_278) {
+    } else {
+      k = (x_338 + 1);
+    }
+    let x_343 : f32 = x_28.injectionSwitch.x;
+    if (!((1.0 <= x_343))) {
+    } else {
+      continue;
+    }
+    if (x_278) {
+      x_350 = 0;
+      x_351_phi = x_350;
+    } else {
+      x_349 = j;
+      x_351_phi = x_349;
+    }
+    let x_351 : i32 = x_351_phi;
+    let x_353 : i32 = 0;
+    let x_355 : i32 = select(x_351, x_353, x_278);
+    if (x_278) {
+    } else {
+      j = (x_355 + 1);
+    }
+    if (x_278) {
+      x_364 = 0;
+      x_365_phi = x_364;
+    } else {
+      x_363 = data[x_355];
+      x_365_phi = x_363;
+    }
+    let x_365 : i32 = x_365_phi;
+    if (x_278) {
+    } else {
+      temp[x_338] = x_365;
+    }
+  }
+  loop {
+    let x_374 : i32 = i;
+    let x_376 : i32 = i;
+    let x_377 : i32 = *(mid);
+    if (((x_374 < 10) && (x_376 <= x_377))) {
+    } else {
+      break;
+    }
+    let x_381 : i32 = k;
+    k = (x_381 + 1);
+    let x_383 : i32 = i;
+    i = (x_383 + 1);
+    let x_386 : i32 = data[x_383];
+    temp[x_381] = x_386;
+  }
+  let x_388 : i32 = *(from);
+  i_1 = x_388;
+  loop {
+    let x_393 : i32 = i_1;
+    let x_394 : i32 = *(to);
+    if ((x_393 <= x_394)) {
+    } else {
+      break;
+    }
+    let x_397 : i32 = i_1;
+    let x_398 : i32 = i_1;
+    let x_400 : i32 = temp[x_398];
+    data[x_397] = x_400;
+
+    continuing {
+      let x_402 : i32 = i_1;
+      i_1 = (x_402 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_409 : i32 = m;
+    let x_410 : i32 = high;
+    if ((x_409 <= x_410)) {
+    } else {
+      break;
+    }
+    let x_413 : i32 = low;
+    i_2 = x_413;
+    loop {
+      let x_418 : i32 = i_2;
+      let x_419 : i32 = high;
+      if ((x_418 < x_419)) {
+      } else {
+        break;
+      }
+      let x_422 : i32 = i_2;
+      from_1 = x_422;
+      let x_423 : i32 = i_2;
+      let x_424 : i32 = m;
+      mid_1 = ((x_423 + x_424) - 1);
+      let x_427 : i32 = i_2;
+      let x_428 : i32 = m;
+      let x_432 : i32 = high;
+      to_1 = min(((x_427 + (2 * x_428)) - 1), x_432);
+      let x_434 : i32 = from_1;
+      param = x_434;
+      let x_435 : i32 = mid_1;
+      param_1 = x_435;
+      let x_436 : i32 = to_1;
+      param_2 = x_436;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_438 : i32 = m;
+        let x_440 : i32 = i_2;
+        i_2 = (x_440 + (2 * x_438));
+      }
+    }
+
+    continuing {
+      let x_442 : i32 = m;
+      m = (2 * x_442);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_88 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_88);
+  loop {
+    let x_94 : i32 = i_3;
+    switch(x_94) {
+      case 9: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -5;
+      }
+      case 8: {
+        let x_122 : i32 = i_3;
+        data[x_122] = -4;
+      }
+      case 7: {
+        let x_120 : i32 = i_3;
+        data[x_120] = -3;
+      }
+      case 6: {
+        let x_118 : i32 = i_3;
+        data[x_118] = -2;
+      }
+      case 5: {
+        let x_116 : i32 = i_3;
+        data[x_116] = -1;
+      }
+      case 4: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 0;
+      }
+      case 3: {
+        let x_112 : i32 = i_3;
+        data[x_112] = 1;
+      }
+      case 2: {
+        let x_110 : i32 = i_3;
+        data[x_110] = 2;
+      }
+      case 1: {
+        let x_108 : i32 = i_3;
+        data[x_108] = 3;
+      }
+      case 0: {
+        let x_106 : i32 = i_3;
+        data[x_106] = 4;
+      }
+      default: {
+      }
+    }
+    let x_126 : i32 = i_3;
+    i_3 = (x_126 + 1);
+
+    continuing {
+      let x_128 : i32 = i_3;
+      if ((x_128 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_134 : i32 = j_1;
+    if ((x_134 < 10)) {
+    } else {
+      break;
+    }
+    let x_137 : i32 = j_1;
+    let x_138 : i32 = j_1;
+    let x_140 : i32 = data[x_138];
+    temp[x_137] = x_140;
+
+    continuing {
+      let x_142 : i32 = j_1;
+      j_1 = (x_142 + 1);
+    }
+  }
+  mergeSort_();
+  let x_146 : f32 = gl_FragCoord.y;
+  if ((i32(x_146) < 30)) {
+    let x_153 : i32 = data[0];
+    grey = (0.5 + (f32(x_153) / 10.0));
+  } else {
+    let x_158 : f32 = gl_FragCoord.y;
+    if ((i32(x_158) < 60)) {
+      let x_165 : i32 = data[1];
+      grey = (0.5 + (f32(x_165) / 10.0));
+    } else {
+      let x_170 : f32 = gl_FragCoord.y;
+      if ((i32(x_170) < 90)) {
+        let x_177 : i32 = data[2];
+        grey = (0.5 + (f32(x_177) / 10.0));
+      } else {
+        let x_182 : f32 = gl_FragCoord.y;
+        if ((i32(x_182) < 120)) {
+          let x_189 : i32 = data[3];
+          grey = (0.5 + (f32(x_189) / 10.0));
+        } else {
+          let x_194 : f32 = gl_FragCoord.y;
+          if ((i32(x_194) < 150)) {
+            discard;
+          } else {
+            let x_201 : f32 = gl_FragCoord.y;
+            if ((i32(x_201) < 180)) {
+              let x_208 : i32 = data[5];
+              grey = (0.5 + (f32(x_208) / 10.0));
+            } else {
+              let x_213 : f32 = gl_FragCoord.y;
+              if ((i32(x_213) < 210)) {
+                let x_220 : i32 = data[6];
+                grey = (0.5 + (f32(x_220) / 10.0));
+              } else {
+                let x_225 : f32 = gl_FragCoord.y;
+                if ((i32(x_225) < 240)) {
+                  let x_232 : i32 = data[7];
+                  grey = (0.5 + (f32(x_232) / 10.0));
+                } else {
+                  let x_237 : f32 = gl_FragCoord.y;
+                  if ((i32(x_237) < 270)) {
+                    let x_244 : i32 = data[8];
+                    grey = (0.5 + (f32(x_244) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_248 : f32 = grey;
+  let x_249 : vec3<f32> = vec3<f32>(x_248, x_248, x_248);
+  x_GLF_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm
new file mode 100644
index 0000000..f35b7eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm
@@ -0,0 +1,634 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+    %int_0_0 = OpConstant %int 0
+         %83 = OpConstantComposite %_arr_int_uint_10 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0
+       %main = OpFunction %void None %32
+         %84 = OpLabel
+         %85 = OpVariable %_ptr_Function_int Function
+         %86 = OpVariable %_ptr_Function_int Function
+         %87 = OpVariable %_ptr_Function_int Function
+         %88 = OpVariable %_ptr_Function_int Function
+         %89 = OpVariable %_ptr_Function_int Function
+         %90 = OpVariable %_ptr_Function_int Function
+         %91 = OpVariable %_ptr_Function_int Function
+         %92 = OpVariable %_ptr_Function_int Function
+         %93 = OpVariable %_ptr_Function_int Function
+         %94 = OpVariable %_ptr_Function_int Function
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %95 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %96 = OpLoad %float %95
+         %97 = OpConvertFToS %int %96
+               OpStore %i_2 %97
+               OpBranch %98
+         %98 = OpLabel
+               OpLoopMerge %99 %100 None
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpLoad %int %i_2
+               OpSelectionMerge %103 None
+               OpSwitch %102 %103 0 %104 1 %105 2 %106 3 %107 4 %108 5 %109 6 %110 7 %111 8 %112 9 %113
+        %104 = OpLabel
+        %114 = OpLoad %int %i_2
+        %115 = OpAccessChain %_ptr_Private_int %data %114
+               OpStore %115 %int_4
+               OpBranch %103
+        %105 = OpLabel
+        %116 = OpLoad %int %i_2
+        %117 = OpAccessChain %_ptr_Private_int %data %116
+               OpStore %117 %int_3
+               OpBranch %103
+        %106 = OpLabel
+        %118 = OpLoad %int %i_2
+        %119 = OpAccessChain %_ptr_Private_int %data %118
+               OpStore %119 %int_2
+               OpBranch %103
+        %107 = OpLabel
+        %120 = OpLoad %int %i_2
+        %121 = OpAccessChain %_ptr_Private_int %data %120
+               OpStore %121 %int_1
+               OpBranch %103
+        %108 = OpLabel
+        %122 = OpLoad %int %i_2
+        %123 = OpAccessChain %_ptr_Private_int %data %122
+               OpStore %123 %int_0
+               OpBranch %103
+        %109 = OpLabel
+        %124 = OpLoad %int %i_2
+        %125 = OpAccessChain %_ptr_Private_int %data %124
+               OpStore %125 %int_n1
+               OpBranch %103
+        %110 = OpLabel
+        %126 = OpLoad %int %i_2
+        %127 = OpAccessChain %_ptr_Private_int %data %126
+               OpStore %127 %int_n2
+               OpBranch %103
+        %111 = OpLabel
+        %128 = OpLoad %int %i_2
+        %129 = OpAccessChain %_ptr_Private_int %data %128
+               OpStore %129 %int_n3
+               OpBranch %103
+        %112 = OpLabel
+        %130 = OpLoad %int %i_2
+        %131 = OpAccessChain %_ptr_Private_int %data %130
+               OpStore %131 %int_n4
+               OpBranch %103
+        %113 = OpLabel
+        %132 = OpLoad %int %i_2
+        %133 = OpAccessChain %_ptr_Private_int %data %132
+               OpStore %133 %int_n5
+               OpBranch %103
+        %103 = OpLabel
+        %134 = OpLoad %int %i_2
+        %135 = OpIAdd %int %134 %int_1
+               OpStore %i_2 %135
+               OpBranch %100
+        %100 = OpLabel
+        %136 = OpLoad %int %i_2
+        %137 = OpSLessThan %bool %136 %int_10
+               OpBranchConditional %137 %98 %99
+         %99 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %138
+        %138 = OpLabel
+               OpLoopMerge %139 %140 None
+               OpBranch %141
+        %141 = OpLabel
+        %142 = OpLoad %int %j_0
+        %143 = OpSLessThan %bool %142 %int_10
+               OpBranchConditional %143 %144 %139
+        %144 = OpLabel
+        %145 = OpLoad %int %j_0
+        %146 = OpLoad %int %j_0
+        %147 = OpAccessChain %_ptr_Private_int %data %146
+        %148 = OpLoad %int %147
+        %149 = OpAccessChain %_ptr_Private_int %temp %145
+               OpStore %149 %148
+               OpBranch %140
+        %140 = OpLabel
+        %150 = OpLoad %int %j_0
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %j_0 %151
+               OpBranch %138
+        %139 = OpLabel
+               OpStore %94 %int_0
+               OpStore %93 %int_9
+               OpStore %92 %int_1
+               OpBranch %152
+        %152 = OpLabel
+               OpLoopMerge %153 %154 None
+               OpBranch %155
+        %155 = OpLabel
+        %156 = OpLoad %int %92
+        %157 = OpLoad %int %93
+        %158 = OpSLessThanEqual %bool %156 %157
+               OpBranchConditional %158 %159 %153
+        %159 = OpLabel
+        %160 = OpLoad %int %94
+               OpStore %91 %160
+               OpBranch %161
+        %161 = OpLabel
+               OpLoopMerge %162 %163 None
+               OpBranch %164
+        %164 = OpLabel
+        %165 = OpLoad %int %91
+        %166 = OpLoad %int %93
+        %167 = OpSLessThan %bool %165 %166
+               OpBranchConditional %167 %168 %162
+        %168 = OpLabel
+        %169 = OpLoad %int %91
+               OpStore %90 %169
+        %170 = OpLoad %int %91
+        %171 = OpLoad %int %92
+        %172 = OpIAdd %int %170 %171
+        %173 = OpLoad %_arr_int_uint_10 %data
+               OpStore %data %83
+               OpStore %data %173
+        %174 = OpISub %int %172 %int_1
+               OpStore %89 %174
+        %175 = OpLoad %int %91
+        %176 = OpLoad %int %92
+        %177 = OpIMul %int %int_2 %176
+        %178 = OpIAdd %int %175 %177
+        %179 = OpISub %int %178 %int_1
+        %180 = OpLoad %int %93
+        %181 = OpExtInst %int %1 SMin %179 %180
+               OpStore %88 %181
+        %182 = OpLoad %int %90
+               OpStore %87 %182
+        %183 = OpLoad %int %89
+               OpStore %86 %183
+        %184 = OpLoad %int %88
+               OpStore %85 %184
+        %185 = OpFunctionCall %void %merge_i1_i1_i1_ %87 %86 %85
+               OpBranch %163
+        %163 = OpLabel
+        %186 = OpLoad %int %92
+        %187 = OpIMul %int %int_2 %186
+        %188 = OpLoad %int %91
+        %189 = OpIAdd %int %188 %187
+               OpStore %91 %189
+               OpBranch %161
+        %162 = OpLabel
+               OpBranch %154
+        %154 = OpLabel
+        %190 = OpLoad %int %92
+        %191 = OpIMul %int %int_2 %190
+               OpStore %92 %191
+               OpBranch %152
+        %153 = OpLabel
+               OpBranch %192
+        %192 = OpLabel
+        %193 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %194 = OpLoad %float %193
+        %195 = OpConvertFToS %int %194
+        %196 = OpSLessThan %bool %195 %int_30
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %199
+        %198 = OpLabel
+        %200 = OpAccessChain %_ptr_Private_int %data %int_0
+        %201 = OpLoad %int %200
+        %202 = OpConvertSToF %float %201
+        %203 = OpFDiv %float %202 %float_10
+        %204 = OpFAdd %float %float_0_5 %203
+               OpStore %grey %204
+               OpBranch %197
+        %199 = OpLabel
+        %205 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %206 = OpLoad %float %205
+        %207 = OpConvertFToS %int %206
+        %208 = OpSLessThan %bool %207 %int_60
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %211
+        %210 = OpLabel
+        %212 = OpAccessChain %_ptr_Private_int %data %int_1
+        %213 = OpLoad %int %212
+        %214 = OpConvertSToF %float %213
+        %215 = OpFDiv %float %214 %float_10
+        %216 = OpFAdd %float %float_0_5 %215
+               OpStore %grey %216
+               OpBranch %209
+        %211 = OpLabel
+        %217 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %218 = OpLoad %float %217
+        %219 = OpConvertFToS %int %218
+        %220 = OpSLessThan %bool %219 %int_90
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %223
+        %222 = OpLabel
+        %224 = OpAccessChain %_ptr_Private_int %data %int_2
+        %225 = OpLoad %int %224
+        %226 = OpConvertSToF %float %225
+        %227 = OpFDiv %float %226 %float_10
+        %228 = OpFAdd %float %float_0_5 %227
+               OpStore %grey %228
+               OpBranch %221
+        %223 = OpLabel
+        %229 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %230 = OpLoad %float %229
+        %231 = OpConvertFToS %int %230
+        %232 = OpSLessThan %bool %231 %int_120
+               OpSelectionMerge %233 None
+               OpBranchConditional %232 %234 %235
+        %234 = OpLabel
+        %236 = OpAccessChain %_ptr_Private_int %data %int_3
+        %237 = OpLoad %int %236
+        %238 = OpConvertSToF %float %237
+        %239 = OpFDiv %float %238 %float_10
+        %240 = OpFAdd %float %float_0_5 %239
+               OpStore %grey %240
+               OpBranch %233
+        %235 = OpLabel
+        %241 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %242 = OpLoad %float %241
+        %243 = OpConvertFToS %int %242
+        %244 = OpSLessThan %bool %243 %int_150
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %247
+        %246 = OpLabel
+               OpKill
+        %247 = OpLabel
+        %248 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %249 = OpLoad %float %248
+        %250 = OpConvertFToS %int %249
+        %251 = OpSLessThan %bool %250 %int_180
+               OpSelectionMerge %252 None
+               OpBranchConditional %251 %253 %254
+        %253 = OpLabel
+        %255 = OpAccessChain %_ptr_Private_int %data %int_5
+        %256 = OpLoad %int %255
+        %257 = OpConvertSToF %float %256
+        %258 = OpFDiv %float %257 %float_10
+        %259 = OpFAdd %float %float_0_5 %258
+               OpStore %grey %259
+               OpBranch %252
+        %254 = OpLabel
+        %260 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %261 = OpLoad %float %260
+        %262 = OpConvertFToS %int %261
+        %263 = OpSLessThan %bool %262 %int_210
+               OpSelectionMerge %264 None
+               OpBranchConditional %263 %265 %266
+        %265 = OpLabel
+        %267 = OpAccessChain %_ptr_Private_int %data %int_6
+        %268 = OpLoad %int %267
+        %269 = OpConvertSToF %float %268
+        %270 = OpFDiv %float %269 %float_10
+        %271 = OpFAdd %float %float_0_5 %270
+               OpStore %grey %271
+               OpBranch %264
+        %266 = OpLabel
+        %272 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %273 = OpLoad %float %272
+        %274 = OpConvertFToS %int %273
+        %275 = OpSLessThan %bool %274 %int_240
+               OpSelectionMerge %276 None
+               OpBranchConditional %275 %277 %278
+        %277 = OpLabel
+        %279 = OpAccessChain %_ptr_Private_int %data %int_7
+        %280 = OpLoad %int %279
+        %281 = OpConvertSToF %float %280
+        %282 = OpFDiv %float %281 %float_10
+        %283 = OpFAdd %float %float_0_5 %282
+               OpStore %grey %283
+               OpBranch %276
+        %278 = OpLabel
+        %284 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %285 = OpLoad %float %284
+        %286 = OpConvertFToS %int %285
+        %287 = OpSLessThan %bool %286 %int_270
+               OpSelectionMerge %288 None
+               OpBranchConditional %287 %289 %290
+        %289 = OpLabel
+        %291 = OpAccessChain %_ptr_Private_int %data %int_8
+        %292 = OpLoad %int %291
+        %293 = OpConvertSToF %float %292
+        %294 = OpFDiv %float %293 %float_10
+        %295 = OpFAdd %float %float_0_5 %294
+               OpStore %grey %295
+               OpBranch %288
+        %290 = OpLabel
+               OpKill
+        %288 = OpLabel
+               OpBranch %276
+        %276 = OpLabel
+               OpBranch %264
+        %264 = OpLabel
+               OpBranch %252
+        %252 = OpLabel
+               OpBranch %245
+        %245 = OpLabel
+               OpBranch %233
+        %233 = OpLabel
+               OpBranch %221
+        %221 = OpLabel
+               OpBranch %209
+        %209 = OpLabel
+               OpBranch %197
+        %197 = OpLabel
+        %296 = OpLoad %float %grey
+        %297 = OpCompositeConstruct %v3float %296 %296 %296
+        %298 = OpCompositeExtract %float %297 0
+        %299 = OpCompositeExtract %float %297 1
+        %300 = OpCompositeExtract %float %297 2
+        %301 = OpCompositeConstruct %v4float %298 %299 %300 %float_1
+               OpStore %_GLF_color %301
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %35
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %302 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %303 = OpLoad %int %from
+               OpStore %k %303
+        %304 = OpLoad %int %from
+               OpStore %i %304
+        %305 = OpLoad %int %mid
+        %306 = OpIAdd %int %305 %int_1
+               OpStore %j %306
+               OpBranch %307
+        %307 = OpLabel
+               OpLoopMerge %308 %309 None
+               OpBranch %310
+        %310 = OpLabel
+        %311 = OpLoad %int %i
+        %312 = OpLoad %int %mid
+        %313 = OpSLessThanEqual %bool %311 %312
+        %314 = OpLoad %int %j
+        %315 = OpLoad %int %to
+        %316 = OpSLessThanEqual %bool %314 %315
+        %317 = OpLogicalAnd %bool %313 %316
+               OpBranchConditional %317 %318 %308
+        %318 = OpLabel
+        %319 = OpLoad %int %i
+        %320 = OpAccessChain %_ptr_Private_int %data %319
+        %321 = OpLoad %int %320
+        %322 = OpLoad %int %j
+        %323 = OpAccessChain %_ptr_Private_int %data %322
+        %324 = OpLoad %int %323
+        %325 = OpSLessThan %bool %321 %324
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %328
+        %327 = OpLabel
+        %329 = OpLoad %int %k
+        %330 = OpIAdd %int %329 %int_1
+               OpStore %k %330
+        %331 = OpLoad %int %i
+        %332 = OpIAdd %int %331 %int_1
+               OpStore %i %332
+        %333 = OpAccessChain %_ptr_Private_int %data %331
+        %334 = OpLoad %int %333
+        %335 = OpAccessChain %_ptr_Private_int %temp %329
+               OpStore %335 %334
+               OpBranch %326
+        %328 = OpLabel
+        %336 = OpLoad %int %k
+        %337 = OpIAdd %int %336 %int_1
+               OpStore %k %337
+        %338 = OpLoad %int %j
+        %339 = OpIAdd %int %338 %int_1
+               OpStore %j %339
+        %340 = OpAccessChain %_ptr_Private_int %data %338
+        %341 = OpLoad %int %340
+        %342 = OpAccessChain %_ptr_Private_int %temp %336
+               OpStore %342 %341
+               OpBranch %326
+        %326 = OpLabel
+               OpBranch %309
+        %309 = OpLabel
+               OpBranch %307
+        %308 = OpLabel
+               OpBranch %343
+        %343 = OpLabel
+               OpLoopMerge %344 %345 None
+               OpBranch %346
+        %346 = OpLabel
+        %347 = OpLoad %int %i
+        %348 = OpSLessThan %bool %347 %int_10
+        %349 = OpLoad %int %i
+        %350 = OpLoad %int %mid
+        %351 = OpSLessThanEqual %bool %349 %350
+        %352 = OpLogicalAnd %bool %348 %351
+               OpBranchConditional %352 %353 %344
+        %353 = OpLabel
+        %354 = OpLoad %int %k
+        %355 = OpIAdd %int %354 %int_1
+               OpStore %k %355
+        %356 = OpLoad %int %i
+        %357 = OpIAdd %int %356 %int_1
+               OpStore %i %357
+        %358 = OpAccessChain %_ptr_Private_int %data %356
+        %359 = OpLoad %int %358
+        %360 = OpAccessChain %_ptr_Private_int %temp %354
+               OpStore %360 %359
+               OpBranch %345
+        %345 = OpLabel
+               OpBranch %343
+        %344 = OpLabel
+        %361 = OpLoad %int %from
+               OpStore %i_0 %361
+               OpBranch %362
+        %362 = OpLabel
+               OpLoopMerge %363 %364 None
+               OpBranch %365
+        %365 = OpLabel
+        %366 = OpLoad %int %i_0
+        %367 = OpLoad %int %to
+        %368 = OpSLessThanEqual %bool %366 %367
+               OpBranchConditional %368 %369 %363
+        %369 = OpLabel
+        %370 = OpLoad %int %i_0
+        %371 = OpLoad %int %i_0
+        %372 = OpAccessChain %_ptr_Private_int %temp %371
+        %373 = OpLoad %int %372
+        %374 = OpAccessChain %_ptr_Private_int %data %370
+               OpStore %374 %373
+               OpBranch %364
+        %364 = OpLabel
+        %375 = OpLoad %int %i_0
+        %376 = OpIAdd %int %375 %int_1
+               OpStore %i_0 %376
+               OpBranch %362
+        %363 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %32
+        %377 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %378
+        %378 = OpLabel
+               OpLoopMerge %379 %380 None
+               OpBranch %381
+        %381 = OpLabel
+        %382 = OpLoad %int %m
+        %383 = OpLoad %int %high
+        %384 = OpSLessThanEqual %bool %382 %383
+               OpBranchConditional %384 %385 %379
+        %385 = OpLabel
+        %386 = OpLoad %int %low
+               OpStore %i_1 %386
+               OpBranch %387
+        %387 = OpLabel
+               OpLoopMerge %388 %389 None
+               OpBranch %390
+        %390 = OpLabel
+        %391 = OpLoad %int %i_1
+        %392 = OpLoad %int %high
+        %393 = OpSLessThan %bool %391 %392
+               OpBranchConditional %393 %394 %388
+        %394 = OpLabel
+        %395 = OpLoad %int %i_1
+               OpStore %from_0 %395
+        %396 = OpLoad %int %i_1
+        %397 = OpLoad %int %m
+        %398 = OpIAdd %int %396 %397
+        %399 = OpISub %int %398 %int_1
+               OpStore %mid_0 %399
+        %400 = OpLoad %int %i_1
+        %401 = OpLoad %int %m
+        %402 = OpIMul %int %int_2 %401
+        %403 = OpIAdd %int %400 %402
+        %404 = OpISub %int %403 %int_1
+        %405 = OpLoad %int %high
+        %406 = OpExtInst %int %1 SMin %404 %405
+               OpStore %to_0 %406
+        %407 = OpLoad %int %from_0
+               OpStore %param %407
+        %408 = OpLoad %int %mid_0
+               OpStore %param_0 %408
+        %409 = OpLoad %int %to_0
+               OpStore %param_1 %409
+        %410 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %389
+        %389 = OpLabel
+        %411 = OpLoad %int %m
+        %412 = OpIMul %int %int_2 %411
+        %413 = OpLoad %int %i_1
+        %414 = OpIAdd %int %413 %412
+               OpStore %i_1 %414
+               OpBranch %387
+        %388 = OpLabel
+               OpBranch %380
+        %380 = OpLabel
+        %415 = OpLoad %int %m
+        %416 = OpIMul %int %int_2 %415
+               OpStore %m %416
+               OpBranch %378
+        %379 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..03b86e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.hlsl
@@ -0,0 +1,302 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_303 = from;
+  k = x_303;
+  const int x_304 = from;
+  i = x_304;
+  const int x_305 = mid;
+  j = (x_305 + 1);
+  while (true) {
+    const int x_311 = i;
+    const int x_312 = mid;
+    const int x_314 = j;
+    const int x_315 = to;
+    bool tint_tmp = (x_311 <= x_312);
+    if (tint_tmp) {
+      tint_tmp = (x_314 <= x_315);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_321 = data[i];
+    const int x_324 = data[j];
+    if ((x_321 < x_324)) {
+      const int x_329 = k;
+      k = (x_329 + 1);
+      const int x_331 = i;
+      i = (x_331 + 1);
+      const int x_334 = data[x_331];
+      temp[x_329] = x_334;
+    } else {
+      const int x_336 = k;
+      k = (x_336 + 1);
+      const int x_338 = j;
+      j = (x_338 + 1);
+      const int x_341 = data[x_338];
+      temp[x_336] = x_341;
+    }
+  }
+  while (true) {
+    const int x_347 = i;
+    const int x_349 = i;
+    const int x_350 = mid;
+    bool tint_tmp_1 = (x_347 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_349 <= x_350);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_354 = k;
+    k = (x_354 + 1);
+    const int x_356 = i;
+    i = (x_356 + 1);
+    const int x_359 = data[x_356];
+    temp[x_354] = x_359;
+  }
+  const int x_361 = from;
+  i_1 = x_361;
+  while (true) {
+    const int x_366 = i_1;
+    const int x_367 = to;
+    if ((x_366 <= x_367)) {
+    } else {
+      break;
+    }
+    const int x_370 = i_1;
+    const int x_373 = temp[i_1];
+    data[x_370] = x_373;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int x_85 = 0;
+  int x_86 = 0;
+  int x_87 = 0;
+  int x_88 = 0;
+  int x_89 = 0;
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_96 = asfloat(x_28[0].x);
+  i_3 = int(x_96);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_145 = j_1;
+      const int x_148 = data[j_1];
+      temp[x_145] = x_148;
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  {
+    for(; (x_92 <= x_93); x_92 = (2 * x_92)) {
+      x_91 = x_94;
+      {
+        for(; (x_91 < x_93); x_91 = (x_91 + (2 * x_92))) {
+          x_90 = x_91;
+          const int x_170 = x_91;
+          const int x_171 = x_92;
+          const int x_173[10] = data;
+          const int tint_symbol_5[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+          data = tint_symbol_5;
+          data = x_173;
+          x_89 = ((x_170 + x_171) - 1);
+          x_88 = min(((x_91 + (2 * x_92)) - 1), x_93);
+          x_87 = x_90;
+          x_86 = x_89;
+          x_85 = x_88;
+          merge_i1_i1_i1_(x_87, x_86, x_85);
+        }
+      }
+    }
+  }
+  const float x_194 = gl_FragCoord.y;
+  if ((int(x_194) < 30)) {
+    const int x_201 = data[0];
+    grey = (0.5f + (float(x_201) / 10.0f));
+  } else {
+    const float x_206 = gl_FragCoord.y;
+    if ((int(x_206) < 60)) {
+      const int x_213 = data[1];
+      grey = (0.5f + (float(x_213) / 10.0f));
+    } else {
+      const float x_218 = gl_FragCoord.y;
+      if ((int(x_218) < 90)) {
+        const int x_225 = data[2];
+        grey = (0.5f + (float(x_225) / 10.0f));
+      } else {
+        const float x_230 = gl_FragCoord.y;
+        if ((int(x_230) < 120)) {
+          const int x_237 = data[3];
+          grey = (0.5f + (float(x_237) / 10.0f));
+        } else {
+          const float x_242 = gl_FragCoord.y;
+          if ((int(x_242) < 150)) {
+            discard;
+          } else {
+            const float x_249 = gl_FragCoord.y;
+            if ((int(x_249) < 180)) {
+              const int x_256 = data[5];
+              grey = (0.5f + (float(x_256) / 10.0f));
+            } else {
+              const float x_261 = gl_FragCoord.y;
+              if ((int(x_261) < 210)) {
+                const int x_268 = data[6];
+                grey = (0.5f + (float(x_268) / 10.0f));
+              } else {
+                const float x_273 = gl_FragCoord.y;
+                if ((int(x_273) < 240)) {
+                  const int x_280 = data[7];
+                  grey = (0.5f + (float(x_280) / 10.0f));
+                } else {
+                  const float x_285 = gl_FragCoord.y;
+                  if ((int(x_285) < 270)) {
+                    const int x_292 = data[8];
+                    grey = (0.5f + (float(x_292) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_296 = grey;
+  const float3 x_297 = float3(x_296, x_296, x_296);
+  x_GLF_color = float4(x_297.x, x_297.y, x_297.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.msl
new file mode 100644
index 0000000..6506890
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.msl
@@ -0,0 +1,373 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_6, thread tint_array_wrapper* const tint_symbol_7) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_303 = *(from);
+  k = x_303;
+  int const x_304 = *(from);
+  i = x_304;
+  int const x_305 = *(mid);
+  j = (x_305 + 1);
+  while (true) {
+    int const x_311 = i;
+    int const x_312 = *(mid);
+    int const x_314 = j;
+    int const x_315 = *(to);
+    if (((x_311 <= x_312) && (x_314 <= x_315))) {
+    } else {
+      break;
+    }
+    int const x_319 = i;
+    int const x_321 = (*(tint_symbol_6)).arr[x_319];
+    int const x_322 = j;
+    int const x_324 = (*(tint_symbol_6)).arr[x_322];
+    if ((x_321 < x_324)) {
+      int const x_329 = k;
+      k = (x_329 + 1);
+      int const x_331 = i;
+      i = (x_331 + 1);
+      int const x_334 = (*(tint_symbol_6)).arr[x_331];
+      (*(tint_symbol_7)).arr[x_329] = x_334;
+    } else {
+      int const x_336 = k;
+      k = (x_336 + 1);
+      int const x_338 = j;
+      j = (x_338 + 1);
+      int const x_341 = (*(tint_symbol_6)).arr[x_338];
+      (*(tint_symbol_7)).arr[x_336] = x_341;
+    }
+  }
+  while (true) {
+    int const x_347 = i;
+    int const x_349 = i;
+    int const x_350 = *(mid);
+    if (((x_347 < 10) && (x_349 <= x_350))) {
+    } else {
+      break;
+    }
+    int const x_354 = k;
+    k = (x_354 + 1);
+    int const x_356 = i;
+    i = (x_356 + 1);
+    int const x_359 = (*(tint_symbol_6)).arr[x_356];
+    (*(tint_symbol_7)).arr[x_354] = x_359;
+  }
+  int const x_361 = *(from);
+  i_1 = x_361;
+  while (true) {
+    int const x_366 = i_1;
+    int const x_367 = *(to);
+    if ((x_366 <= x_367)) {
+    } else {
+      break;
+    }
+    int const x_370 = i_1;
+    int const x_371 = i_1;
+    int const x_373 = (*(tint_symbol_7)).arr[x_371];
+    (*(tint_symbol_6)).arr[x_370] = x_373;
+    {
+      int const x_375 = i_1;
+      i_1 = (x_375 + 1);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_8, thread tint_array_wrapper* const tint_symbol_9, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int x_85 = 0;
+  int x_86 = 0;
+  int x_87 = 0;
+  int x_88 = 0;
+  int x_89 = 0;
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_96 = x_28.injectionSwitch.x;
+  i_3 = int(x_96);
+  while (true) {
+    int const x_102 = i_3;
+    switch(x_102) {
+      case 9: {
+        int const x_132 = i_3;
+        (*(tint_symbol_8)).arr[x_132] = -5;
+        break;
+      }
+      case 8: {
+        int const x_130 = i_3;
+        (*(tint_symbol_8)).arr[x_130] = -4;
+        break;
+      }
+      case 7: {
+        int const x_128 = i_3;
+        (*(tint_symbol_8)).arr[x_128] = -3;
+        break;
+      }
+      case 6: {
+        int const x_126 = i_3;
+        (*(tint_symbol_8)).arr[x_126] = -2;
+        break;
+      }
+      case 5: {
+        int const x_124 = i_3;
+        (*(tint_symbol_8)).arr[x_124] = -1;
+        break;
+      }
+      case 4: {
+        int const x_122 = i_3;
+        (*(tint_symbol_8)).arr[x_122] = 0;
+        break;
+      }
+      case 3: {
+        int const x_120 = i_3;
+        (*(tint_symbol_8)).arr[x_120] = 1;
+        break;
+      }
+      case 2: {
+        int const x_118 = i_3;
+        (*(tint_symbol_8)).arr[x_118] = 2;
+        break;
+      }
+      case 1: {
+        int const x_116 = i_3;
+        (*(tint_symbol_8)).arr[x_116] = 3;
+        break;
+      }
+      case 0: {
+        int const x_114 = i_3;
+        (*(tint_symbol_8)).arr[x_114] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_134 = i_3;
+    i_3 = (x_134 + 1);
+    {
+      int const x_136 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_142 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    int const x_145 = j_1;
+    int const x_146 = j_1;
+    int const x_148 = (*(tint_symbol_8)).arr[x_146];
+    (*(tint_symbol_9)).arr[x_145] = x_148;
+    {
+      int const x_150 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  while (true) {
+    int const x_156 = x_92;
+    int const x_157 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    int const x_160 = x_94;
+    x_91 = x_160;
+    while (true) {
+      int const x_165 = x_91;
+      int const x_166 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      int const x_169 = x_91;
+      x_90 = x_169;
+      int const x_170 = x_91;
+      int const x_171 = x_92;
+      tint_array_wrapper const x_173 = *(tint_symbol_8);
+      tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      *(tint_symbol_8) = tint_symbol_4;
+      *(tint_symbol_8) = x_173;
+      x_89 = ((x_170 + x_171) - 1);
+      int const x_175 = x_91;
+      int const x_176 = x_92;
+      int const x_180 = x_93;
+      x_88 = min(((x_175 + (2 * x_176)) - 1), x_180);
+      int const x_182 = x_90;
+      x_87 = x_182;
+      int const x_183 = x_89;
+      x_86 = x_183;
+      int const x_184 = x_88;
+      x_85 = x_184;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85), tint_symbol_8, tint_symbol_9);
+      {
+        int const x_186 = x_92;
+        int const x_188 = x_91;
+        x_91 = (x_188 + (2 * x_186));
+      }
+    }
+    {
+      int const x_190 = x_92;
+      x_92 = (2 * x_190);
+    }
+  }
+  float const x_194 = (*(tint_symbol_10)).y;
+  if ((int(x_194) < 30)) {
+    int const x_201 = (*(tint_symbol_8)).arr[0];
+    grey = (0.5f + (float(x_201) / 10.0f));
+  } else {
+    float const x_206 = (*(tint_symbol_10)).y;
+    if ((int(x_206) < 60)) {
+      int const x_213 = (*(tint_symbol_8)).arr[1];
+      grey = (0.5f + (float(x_213) / 10.0f));
+    } else {
+      float const x_218 = (*(tint_symbol_10)).y;
+      if ((int(x_218) < 90)) {
+        int const x_225 = (*(tint_symbol_8)).arr[2];
+        grey = (0.5f + (float(x_225) / 10.0f));
+      } else {
+        float const x_230 = (*(tint_symbol_10)).y;
+        if ((int(x_230) < 120)) {
+          int const x_237 = (*(tint_symbol_8)).arr[3];
+          grey = (0.5f + (float(x_237) / 10.0f));
+        } else {
+          float const x_242 = (*(tint_symbol_10)).y;
+          if ((int(x_242) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_249 = (*(tint_symbol_10)).y;
+            if ((int(x_249) < 180)) {
+              int const x_256 = (*(tint_symbol_8)).arr[5];
+              grey = (0.5f + (float(x_256) / 10.0f));
+            } else {
+              float const x_261 = (*(tint_symbol_10)).y;
+              if ((int(x_261) < 210)) {
+                int const x_268 = (*(tint_symbol_8)).arr[6];
+                grey = (0.5f + (float(x_268) / 10.0f));
+              } else {
+                float const x_273 = (*(tint_symbol_10)).y;
+                if ((int(x_273) < 240)) {
+                  int const x_280 = (*(tint_symbol_8)).arr[7];
+                  grey = (0.5f + (float(x_280) / 10.0f));
+                } else {
+                  float const x_285 = (*(tint_symbol_10)).y;
+                  if ((int(x_285) < 270)) {
+                    int const x_292 = (*(tint_symbol_8)).arr[8];
+                    grey = (0.5f + (float(x_292) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_296 = grey;
+  float3 const x_297 = float3(x_296, x_296, x_296);
+  *(tint_symbol_11) = float4(x_297.x, x_297.y, x_297.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread tint_array_wrapper tint_symbol_13 = {};
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread float4 tint_symbol_15 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_13), &(tint_symbol_14), &(tint_symbol_12), &(tint_symbol_15));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_15};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_16, thread tint_array_wrapper* const tint_symbol_17) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_382 = m;
+    int const x_383 = high;
+    if ((x_382 <= x_383)) {
+    } else {
+      break;
+    }
+    int const x_386 = low;
+    i_2 = x_386;
+    while (true) {
+      int const x_391 = i_2;
+      int const x_392 = high;
+      if ((x_391 < x_392)) {
+      } else {
+        break;
+      }
+      int const x_395 = i_2;
+      from_1 = x_395;
+      int const x_396 = i_2;
+      int const x_397 = m;
+      mid_1 = ((x_396 + x_397) - 1);
+      int const x_400 = i_2;
+      int const x_401 = m;
+      int const x_405 = high;
+      to_1 = min(((x_400 + (2 * x_401)) - 1), x_405);
+      int const x_407 = from_1;
+      param = x_407;
+      int const x_408 = mid_1;
+      param_1 = x_408;
+      int const x_409 = to_1;
+      param_2 = x_409;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_16, tint_symbol_17);
+      {
+        int const x_411 = m;
+        int const x_413 = i_2;
+        i_2 = (x_413 + (2 * x_411));
+      }
+    }
+    {
+      int const x_415 = m;
+      m = (2 * x_415);
+    }
+  }
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..451e627
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.spvasm
@@ -0,0 +1,745 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 473
+; Schema: 0
+               OpCapability Shader
+        %257 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %main_1 "main_1"
+               OpName %x_85 "x_85"
+               OpName %x_86 "x_86"
+               OpName %x_87 "x_87"
+               OpName %x_88 "x_88"
+               OpName %x_89 "x_89"
+               OpName %x_90 "x_90"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+        %149 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_9 = OpConstant %int 9
+        %250 = OpConstantComposite %_arr_int_uint_10 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %402 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %134 = OpLabel
+       %x_85 = OpVariable %_ptr_Function_int Function %32
+       %x_86 = OpVariable %_ptr_Function_int Function %32
+       %x_87 = OpVariable %_ptr_Function_int Function %32
+       %x_88 = OpVariable %_ptr_Function_int Function %32
+       %x_89 = OpVariable %_ptr_Function_int Function %32
+       %x_90 = OpVariable %_ptr_Function_int Function %32
+       %x_91 = OpVariable %_ptr_Function_int Function %32
+       %x_92 = OpVariable %_ptr_Function_int Function %32
+       %x_93 = OpVariable %_ptr_Function_int Function %32
+       %x_94 = OpVariable %_ptr_Function_int Function %32
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %149
+        %152 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpConvertFToS %int %153
+               OpStore %i_3 %154
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+        %159 = OpLoad %int %i_3
+               OpSelectionMerge %160 None
+               OpSwitch %159 %161 9 %162 8 %163 7 %164 6 %165 5 %166 4 %167 3 %168 2 %169 1 %170 0 %171
+        %162 = OpLabel
+        %172 = OpLoad %int %i_3
+        %173 = OpAccessChain %_ptr_Private_int %data %172
+               OpStore %173 %int_n5
+               OpBranch %160
+        %163 = OpLabel
+        %175 = OpLoad %int %i_3
+        %176 = OpAccessChain %_ptr_Private_int %data %175
+               OpStore %176 %int_n4
+               OpBranch %160
+        %164 = OpLabel
+        %178 = OpLoad %int %i_3
+        %179 = OpAccessChain %_ptr_Private_int %data %178
+               OpStore %179 %int_n3
+               OpBranch %160
+        %165 = OpLabel
+        %181 = OpLoad %int %i_3
+        %182 = OpAccessChain %_ptr_Private_int %data %181
+               OpStore %182 %int_n2
+               OpBranch %160
+        %166 = OpLabel
+        %184 = OpLoad %int %i_3
+        %185 = OpAccessChain %_ptr_Private_int %data %184
+               OpStore %185 %int_n1
+               OpBranch %160
+        %167 = OpLabel
+        %187 = OpLoad %int %i_3
+        %188 = OpAccessChain %_ptr_Private_int %data %187
+               OpStore %188 %int_0
+               OpBranch %160
+        %168 = OpLabel
+        %190 = OpLoad %int %i_3
+        %191 = OpAccessChain %_ptr_Private_int %data %190
+               OpStore %191 %int_1
+               OpBranch %160
+        %169 = OpLabel
+        %192 = OpLoad %int %i_3
+        %193 = OpAccessChain %_ptr_Private_int %data %192
+               OpStore %193 %int_2
+               OpBranch %160
+        %170 = OpLabel
+        %195 = OpLoad %int %i_3
+        %196 = OpAccessChain %_ptr_Private_int %data %195
+               OpStore %196 %int_3
+               OpBranch %160
+        %171 = OpLabel
+        %198 = OpLoad %int %i_3
+        %199 = OpAccessChain %_ptr_Private_int %data %198
+               OpStore %199 %int_4
+               OpBranch %160
+        %161 = OpLabel
+               OpBranch %160
+        %160 = OpLabel
+        %201 = OpLoad %int %i_3
+        %202 = OpIAdd %int %201 %int_1
+               OpStore %i_3 %202
+               OpBranch %157
+        %157 = OpLabel
+        %203 = OpLoad %int %i_3
+        %204 = OpSLessThan %bool %203 %int_10
+               OpSelectionMerge %205 None
+               OpBranchConditional %204 %206 %207
+        %206 = OpLabel
+               OpBranch %205
+        %207 = OpLabel
+               OpBranch %156
+        %205 = OpLabel
+               OpBranch %155
+        %156 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %j_1
+        %213 = OpSLessThan %bool %212 %int_10
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %209
+        %214 = OpLabel
+        %217 = OpLoad %int %j_1
+        %218 = OpLoad %int %j_1
+        %219 = OpAccessChain %_ptr_Private_int %data %218
+        %220 = OpLoad %int %219
+        %221 = OpAccessChain %_ptr_Private_int %temp %217
+               OpStore %221 %220
+               OpBranch %210
+        %210 = OpLabel
+        %222 = OpLoad %int %j_1
+        %223 = OpIAdd %int %222 %int_1
+               OpStore %j_1 %223
+               OpBranch %208
+        %209 = OpLabel
+               OpStore %x_94 %int_0
+               OpStore %x_93 %int_9
+               OpStore %x_92 %int_1
+               OpBranch %225
+        %225 = OpLabel
+               OpLoopMerge %226 %227 None
+               OpBranch %228
+        %228 = OpLabel
+        %229 = OpLoad %int %x_92
+        %230 = OpLoad %int %x_93
+        %231 = OpSLessThanEqual %bool %229 %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %234
+        %233 = OpLabel
+               OpBranch %232
+        %234 = OpLabel
+               OpBranch %226
+        %232 = OpLabel
+        %235 = OpLoad %int %x_94
+               OpStore %x_91 %235
+               OpBranch %236
+        %236 = OpLabel
+               OpLoopMerge %237 %238 None
+               OpBranch %239
+        %239 = OpLabel
+        %240 = OpLoad %int %x_91
+        %241 = OpLoad %int %x_93
+        %242 = OpSLessThan %bool %240 %241
+               OpSelectionMerge %243 None
+               OpBranchConditional %242 %244 %245
+        %244 = OpLabel
+               OpBranch %243
+        %245 = OpLabel
+               OpBranch %237
+        %243 = OpLabel
+        %246 = OpLoad %int %x_91
+               OpStore %x_90 %246
+        %247 = OpLoad %int %x_91
+        %248 = OpLoad %int %x_92
+        %249 = OpLoad %_arr_int_uint_10 %data
+               OpStore %data %250
+               OpStore %data %249
+        %251 = OpIAdd %int %247 %248
+        %252 = OpISub %int %251 %int_1
+               OpStore %x_89 %252
+        %253 = OpLoad %int %x_91
+        %254 = OpLoad %int %x_92
+        %255 = OpLoad %int %x_93
+        %258 = OpIMul %int %int_2 %254
+        %259 = OpIAdd %int %253 %258
+        %260 = OpISub %int %259 %int_1
+        %256 = OpExtInst %int %257 SMin %260 %255
+               OpStore %x_88 %256
+        %261 = OpLoad %int %x_90
+               OpStore %x_87 %261
+        %262 = OpLoad %int %x_89
+               OpStore %x_86 %262
+        %263 = OpLoad %int %x_88
+               OpStore %x_85 %263
+        %264 = OpFunctionCall %void %merge_i1_i1_i1_ %x_87 %x_86 %x_85
+               OpBranch %238
+        %238 = OpLabel
+        %268 = OpLoad %int %x_92
+        %269 = OpLoad %int %x_91
+        %270 = OpIMul %int %int_2 %268
+        %271 = OpIAdd %int %269 %270
+               OpStore %x_91 %271
+               OpBranch %236
+        %237 = OpLabel
+               OpBranch %227
+        %227 = OpLabel
+        %272 = OpLoad %int %x_92
+        %273 = OpIMul %int %int_2 %272
+               OpStore %x_92 %273
+               OpBranch %225
+        %226 = OpLabel
+        %276 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %277 = OpLoad %float %276
+        %278 = OpConvertFToS %int %277
+        %280 = OpSLessThan %bool %278 %int_30
+               OpSelectionMerge %281 None
+               OpBranchConditional %280 %282 %283
+        %282 = OpLabel
+        %284 = OpAccessChain %_ptr_Private_int %data %int_0
+        %285 = OpLoad %int %284
+        %287 = OpConvertSToF %float %285
+        %289 = OpFDiv %float %287 %float_10
+        %290 = OpFAdd %float %float_0_5 %289
+               OpStore %grey %290
+               OpBranch %281
+        %283 = OpLabel
+        %291 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %292 = OpLoad %float %291
+        %293 = OpConvertFToS %int %292
+        %295 = OpSLessThan %bool %293 %int_60
+               OpSelectionMerge %296 None
+               OpBranchConditional %295 %297 %298
+        %297 = OpLabel
+        %299 = OpAccessChain %_ptr_Private_int %data %int_1
+        %300 = OpLoad %int %299
+        %301 = OpConvertSToF %float %300
+        %302 = OpFDiv %float %301 %float_10
+        %303 = OpFAdd %float %float_0_5 %302
+               OpStore %grey %303
+               OpBranch %296
+        %298 = OpLabel
+        %304 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %305 = OpLoad %float %304
+        %306 = OpConvertFToS %int %305
+        %308 = OpSLessThan %bool %306 %int_90
+               OpSelectionMerge %309 None
+               OpBranchConditional %308 %310 %311
+        %310 = OpLabel
+        %312 = OpAccessChain %_ptr_Private_int %data %int_2
+        %313 = OpLoad %int %312
+        %314 = OpConvertSToF %float %313
+        %315 = OpFDiv %float %314 %float_10
+        %316 = OpFAdd %float %float_0_5 %315
+               OpStore %grey %316
+               OpBranch %309
+        %311 = OpLabel
+        %317 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %318 = OpLoad %float %317
+        %319 = OpConvertFToS %int %318
+        %321 = OpSLessThan %bool %319 %int_120
+               OpSelectionMerge %322 None
+               OpBranchConditional %321 %323 %324
+        %323 = OpLabel
+        %325 = OpAccessChain %_ptr_Private_int %data %int_3
+        %326 = OpLoad %int %325
+        %327 = OpConvertSToF %float %326
+        %328 = OpFDiv %float %327 %float_10
+        %329 = OpFAdd %float %float_0_5 %328
+               OpStore %grey %329
+               OpBranch %322
+        %324 = OpLabel
+        %330 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %331 = OpLoad %float %330
+        %332 = OpConvertFToS %int %331
+        %334 = OpSLessThan %bool %332 %int_150
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %337
+        %336 = OpLabel
+               OpKill
+        %337 = OpLabel
+        %338 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %339 = OpLoad %float %338
+        %340 = OpConvertFToS %int %339
+        %342 = OpSLessThan %bool %340 %int_180
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+        %347 = OpAccessChain %_ptr_Private_int %data %int_5
+        %348 = OpLoad %int %347
+        %349 = OpConvertSToF %float %348
+        %350 = OpFDiv %float %349 %float_10
+        %351 = OpFAdd %float %float_0_5 %350
+               OpStore %grey %351
+               OpBranch %343
+        %345 = OpLabel
+        %352 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %353 = OpLoad %float %352
+        %354 = OpConvertFToS %int %353
+        %356 = OpSLessThan %bool %354 %int_210
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %359
+        %358 = OpLabel
+        %361 = OpAccessChain %_ptr_Private_int %data %int_6
+        %362 = OpLoad %int %361
+        %363 = OpConvertSToF %float %362
+        %364 = OpFDiv %float %363 %float_10
+        %365 = OpFAdd %float %float_0_5 %364
+               OpStore %grey %365
+               OpBranch %357
+        %359 = OpLabel
+        %366 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %367 = OpLoad %float %366
+        %368 = OpConvertFToS %int %367
+        %370 = OpSLessThan %bool %368 %int_240
+               OpSelectionMerge %371 None
+               OpBranchConditional %370 %372 %373
+        %372 = OpLabel
+        %375 = OpAccessChain %_ptr_Private_int %data %int_7
+        %376 = OpLoad %int %375
+        %377 = OpConvertSToF %float %376
+        %378 = OpFDiv %float %377 %float_10
+        %379 = OpFAdd %float %float_0_5 %378
+               OpStore %grey %379
+               OpBranch %371
+        %373 = OpLabel
+        %380 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %381 = OpLoad %float %380
+        %382 = OpConvertFToS %int %381
+        %384 = OpSLessThan %bool %382 %int_270
+               OpSelectionMerge %385 None
+               OpBranchConditional %384 %386 %387
+        %386 = OpLabel
+        %389 = OpAccessChain %_ptr_Private_int %data %int_8
+        %390 = OpLoad %int %389
+        %391 = OpConvertSToF %float %390
+        %392 = OpFDiv %float %391 %float_10
+        %393 = OpFAdd %float %float_0_5 %392
+               OpStore %grey %393
+               OpBranch %385
+        %387 = OpLabel
+               OpKill
+        %385 = OpLabel
+               OpBranch %371
+        %371 = OpLabel
+               OpBranch %357
+        %357 = OpLabel
+               OpBranch %343
+        %343 = OpLabel
+               OpBranch %335
+        %335 = OpLabel
+               OpBranch %322
+        %322 = OpLabel
+               OpBranch %309
+        %309 = OpLabel
+               OpBranch %296
+        %296 = OpLabel
+               OpBranch %281
+        %281 = OpLabel
+        %394 = OpLoad %float %grey
+        %396 = OpCompositeConstruct %v3float %394 %394 %394
+        %397 = OpCompositeExtract %float %396 0
+        %398 = OpCompositeExtract %float %396 1
+        %399 = OpCompositeExtract %float %396 2
+        %401 = OpCompositeConstruct %v4float %397 %398 %399 %float_1
+               OpStore %x_GLF_color %401
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %402
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %406 = OpLabel
+        %407 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %407
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %409 = OpLabel
+        %410 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %410
+        %411 = OpFunctionCall %void %main_1
+        %413 = OpLoad %v4float %x_GLF_color
+        %414 = OpCompositeConstruct %main_out %413
+        %412 = OpFunctionCall %void %tint_symbol_3 %414
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %416 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %427
+        %427 = OpLabel
+               OpLoopMerge %428 %429 None
+               OpBranch %430
+        %430 = OpLabel
+        %431 = OpLoad %int %m
+        %432 = OpLoad %int %high
+        %433 = OpSLessThanEqual %bool %431 %432
+               OpSelectionMerge %434 None
+               OpBranchConditional %433 %435 %436
+        %435 = OpLabel
+               OpBranch %434
+        %436 = OpLabel
+               OpBranch %428
+        %434 = OpLabel
+        %437 = OpLoad %int %low
+               OpStore %i_2 %437
+               OpBranch %438
+        %438 = OpLabel
+               OpLoopMerge %439 %440 None
+               OpBranch %441
+        %441 = OpLabel
+        %442 = OpLoad %int %i_2
+        %443 = OpLoad %int %high
+        %444 = OpSLessThan %bool %442 %443
+               OpSelectionMerge %445 None
+               OpBranchConditional %444 %446 %447
+        %446 = OpLabel
+               OpBranch %445
+        %447 = OpLabel
+               OpBranch %439
+        %445 = OpLabel
+        %448 = OpLoad %int %i_2
+               OpStore %from_1 %448
+        %449 = OpLoad %int %i_2
+        %450 = OpLoad %int %m
+        %451 = OpIAdd %int %449 %450
+        %452 = OpISub %int %451 %int_1
+               OpStore %mid_1 %452
+        %453 = OpLoad %int %i_2
+        %454 = OpLoad %int %m
+        %455 = OpLoad %int %high
+        %457 = OpIMul %int %int_2 %454
+        %458 = OpIAdd %int %453 %457
+        %459 = OpISub %int %458 %int_1
+        %456 = OpExtInst %int %257 SMin %459 %455
+               OpStore %to_1 %456
+        %460 = OpLoad %int %from_1
+               OpStore %param %460
+        %461 = OpLoad %int %mid_1
+               OpStore %param_1 %461
+        %462 = OpLoad %int %to_1
+               OpStore %param_2 %462
+        %463 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %440
+        %440 = OpLabel
+        %467 = OpLoad %int %m
+        %468 = OpLoad %int %i_2
+        %469 = OpIMul %int %int_2 %467
+        %470 = OpIAdd %int %468 %469
+               OpStore %i_2 %470
+               OpBranch %438
+        %439 = OpLabel
+               OpBranch %429
+        %429 = OpLabel
+        %471 = OpLoad %int %m
+        %472 = OpIMul %int %int_2 %471
+               OpStore %m %472
+               OpBranch %427
+        %428 = OpLabel
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 157[%157] is not post dominated by the back-edge block 205[%205]
+  %205 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..bf16229
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.spvasm.expected.wgsl
@@ -0,0 +1,366 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_303 : i32 = *(from);
+  k = x_303;
+  let x_304 : i32 = *(from);
+  i = x_304;
+  let x_305 : i32 = *(mid);
+  j = (x_305 + 1);
+  loop {
+    let x_311 : i32 = i;
+    let x_312 : i32 = *(mid);
+    let x_314 : i32 = j;
+    let x_315 : i32 = *(to);
+    if (((x_311 <= x_312) && (x_314 <= x_315))) {
+    } else {
+      break;
+    }
+    let x_319 : i32 = i;
+    let x_321 : i32 = data[x_319];
+    let x_322 : i32 = j;
+    let x_324 : i32 = data[x_322];
+    if ((x_321 < x_324)) {
+      let x_329 : i32 = k;
+      k = (x_329 + 1);
+      let x_331 : i32 = i;
+      i = (x_331 + 1);
+      let x_334 : i32 = data[x_331];
+      temp[x_329] = x_334;
+    } else {
+      let x_336 : i32 = k;
+      k = (x_336 + 1);
+      let x_338 : i32 = j;
+      j = (x_338 + 1);
+      let x_341 : i32 = data[x_338];
+      temp[x_336] = x_341;
+    }
+  }
+  loop {
+    let x_347 : i32 = i;
+    let x_349 : i32 = i;
+    let x_350 : i32 = *(mid);
+    if (((x_347 < 10) && (x_349 <= x_350))) {
+    } else {
+      break;
+    }
+    let x_354 : i32 = k;
+    k = (x_354 + 1);
+    let x_356 : i32 = i;
+    i = (x_356 + 1);
+    let x_359 : i32 = data[x_356];
+    temp[x_354] = x_359;
+  }
+  let x_361 : i32 = *(from);
+  i_1 = x_361;
+  loop {
+    let x_366 : i32 = i_1;
+    let x_367 : i32 = *(to);
+    if ((x_366 <= x_367)) {
+    } else {
+      break;
+    }
+    let x_370 : i32 = i_1;
+    let x_371 : i32 = i_1;
+    let x_373 : i32 = temp[x_371];
+    data[x_370] = x_373;
+
+    continuing {
+      let x_375 : i32 = i_1;
+      i_1 = (x_375 + 1);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var x_85 : i32;
+  var x_86 : i32;
+  var x_87 : i32;
+  var x_88 : i32;
+  var x_89 : i32;
+  var x_90 : i32;
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : i32;
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_96 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_96);
+  loop {
+    let x_102 : i32 = i_3;
+    switch(x_102) {
+      case 9: {
+        let x_132 : i32 = i_3;
+        data[x_132] = -5;
+      }
+      case 8: {
+        let x_130 : i32 = i_3;
+        data[x_130] = -4;
+      }
+      case 7: {
+        let x_128 : i32 = i_3;
+        data[x_128] = -3;
+      }
+      case 6: {
+        let x_126 : i32 = i_3;
+        data[x_126] = -2;
+      }
+      case 5: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -1;
+      }
+      case 4: {
+        let x_122 : i32 = i_3;
+        data[x_122] = 0;
+      }
+      case 3: {
+        let x_120 : i32 = i_3;
+        data[x_120] = 1;
+      }
+      case 2: {
+        let x_118 : i32 = i_3;
+        data[x_118] = 2;
+      }
+      case 1: {
+        let x_116 : i32 = i_3;
+        data[x_116] = 3;
+      }
+      case 0: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 4;
+      }
+      default: {
+      }
+    }
+    let x_134 : i32 = i_3;
+    i_3 = (x_134 + 1);
+
+    continuing {
+      let x_136 : i32 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_142 : i32 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    let x_145 : i32 = j_1;
+    let x_146 : i32 = j_1;
+    let x_148 : i32 = data[x_146];
+    temp[x_145] = x_148;
+
+    continuing {
+      let x_150 : i32 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  loop {
+    let x_156 : i32 = x_92;
+    let x_157 : i32 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    let x_160 : i32 = x_94;
+    x_91 = x_160;
+    loop {
+      let x_165 : i32 = x_91;
+      let x_166 : i32 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      let x_169 : i32 = x_91;
+      x_90 = x_169;
+      let x_170 : i32 = x_91;
+      let x_171 : i32 = x_92;
+      let x_173 : array<i32, 10> = data;
+      data = array<i32, 10>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+      data = x_173;
+      x_89 = ((x_170 + x_171) - 1);
+      let x_175 : i32 = x_91;
+      let x_176 : i32 = x_92;
+      let x_180 : i32 = x_93;
+      x_88 = min(((x_175 + (2 * x_176)) - 1), x_180);
+      let x_182 : i32 = x_90;
+      x_87 = x_182;
+      let x_183 : i32 = x_89;
+      x_86 = x_183;
+      let x_184 : i32 = x_88;
+      x_85 = x_184;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85));
+
+      continuing {
+        let x_186 : i32 = x_92;
+        let x_188 : i32 = x_91;
+        x_91 = (x_188 + (2 * x_186));
+      }
+    }
+
+    continuing {
+      let x_190 : i32 = x_92;
+      x_92 = (2 * x_190);
+    }
+  }
+  let x_194 : f32 = gl_FragCoord.y;
+  if ((i32(x_194) < 30)) {
+    let x_201 : i32 = data[0];
+    grey = (0.5 + (f32(x_201) / 10.0));
+  } else {
+    let x_206 : f32 = gl_FragCoord.y;
+    if ((i32(x_206) < 60)) {
+      let x_213 : i32 = data[1];
+      grey = (0.5 + (f32(x_213) / 10.0));
+    } else {
+      let x_218 : f32 = gl_FragCoord.y;
+      if ((i32(x_218) < 90)) {
+        let x_225 : i32 = data[2];
+        grey = (0.5 + (f32(x_225) / 10.0));
+      } else {
+        let x_230 : f32 = gl_FragCoord.y;
+        if ((i32(x_230) < 120)) {
+          let x_237 : i32 = data[3];
+          grey = (0.5 + (f32(x_237) / 10.0));
+        } else {
+          let x_242 : f32 = gl_FragCoord.y;
+          if ((i32(x_242) < 150)) {
+            discard;
+          } else {
+            let x_249 : f32 = gl_FragCoord.y;
+            if ((i32(x_249) < 180)) {
+              let x_256 : i32 = data[5];
+              grey = (0.5 + (f32(x_256) / 10.0));
+            } else {
+              let x_261 : f32 = gl_FragCoord.y;
+              if ((i32(x_261) < 210)) {
+                let x_268 : i32 = data[6];
+                grey = (0.5 + (f32(x_268) / 10.0));
+              } else {
+                let x_273 : f32 = gl_FragCoord.y;
+                if ((i32(x_273) < 240)) {
+                  let x_280 : i32 = data[7];
+                  grey = (0.5 + (f32(x_280) / 10.0));
+                } else {
+                  let x_285 : f32 = gl_FragCoord.y;
+                  if ((i32(x_285) < 270)) {
+                    let x_292 : i32 = data[8];
+                    grey = (0.5 + (f32(x_292) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_296 : f32 = grey;
+  let x_297 : vec3<f32> = vec3<f32>(x_296, x_296, x_296);
+  x_GLF_color = vec4<f32>(x_297.x, x_297.y, x_297.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_382 : i32 = m;
+    let x_383 : i32 = high;
+    if ((x_382 <= x_383)) {
+    } else {
+      break;
+    }
+    let x_386 : i32 = low;
+    i_2 = x_386;
+    loop {
+      let x_391 : i32 = i_2;
+      let x_392 : i32 = high;
+      if ((x_391 < x_392)) {
+      } else {
+        break;
+      }
+      let x_395 : i32 = i_2;
+      from_1 = x_395;
+      let x_396 : i32 = i_2;
+      let x_397 : i32 = m;
+      mid_1 = ((x_396 + x_397) - 1);
+      let x_400 : i32 = i_2;
+      let x_401 : i32 = m;
+      let x_405 : i32 = high;
+      to_1 = min(((x_400 + (2 * x_401)) - 1), x_405);
+      let x_407 : i32 = from_1;
+      param = x_407;
+      let x_408 : i32 = mid_1;
+      param_1 = x_408;
+      let x_409 : i32 = to_1;
+      param_2 = x_409;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_411 : i32 = m;
+        let x_413 : i32 = i_2;
+        i_2 = (x_413 + (2 * x_411));
+      }
+    }
+
+    continuing {
+      let x_415 : i32 = m;
+      m = (2 * x_415);
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
new file mode 100644
index 0000000..bf16229
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
@@ -0,0 +1,366 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_303 : i32 = *(from);
+  k = x_303;
+  let x_304 : i32 = *(from);
+  i = x_304;
+  let x_305 : i32 = *(mid);
+  j = (x_305 + 1);
+  loop {
+    let x_311 : i32 = i;
+    let x_312 : i32 = *(mid);
+    let x_314 : i32 = j;
+    let x_315 : i32 = *(to);
+    if (((x_311 <= x_312) && (x_314 <= x_315))) {
+    } else {
+      break;
+    }
+    let x_319 : i32 = i;
+    let x_321 : i32 = data[x_319];
+    let x_322 : i32 = j;
+    let x_324 : i32 = data[x_322];
+    if ((x_321 < x_324)) {
+      let x_329 : i32 = k;
+      k = (x_329 + 1);
+      let x_331 : i32 = i;
+      i = (x_331 + 1);
+      let x_334 : i32 = data[x_331];
+      temp[x_329] = x_334;
+    } else {
+      let x_336 : i32 = k;
+      k = (x_336 + 1);
+      let x_338 : i32 = j;
+      j = (x_338 + 1);
+      let x_341 : i32 = data[x_338];
+      temp[x_336] = x_341;
+    }
+  }
+  loop {
+    let x_347 : i32 = i;
+    let x_349 : i32 = i;
+    let x_350 : i32 = *(mid);
+    if (((x_347 < 10) && (x_349 <= x_350))) {
+    } else {
+      break;
+    }
+    let x_354 : i32 = k;
+    k = (x_354 + 1);
+    let x_356 : i32 = i;
+    i = (x_356 + 1);
+    let x_359 : i32 = data[x_356];
+    temp[x_354] = x_359;
+  }
+  let x_361 : i32 = *(from);
+  i_1 = x_361;
+  loop {
+    let x_366 : i32 = i_1;
+    let x_367 : i32 = *(to);
+    if ((x_366 <= x_367)) {
+    } else {
+      break;
+    }
+    let x_370 : i32 = i_1;
+    let x_371 : i32 = i_1;
+    let x_373 : i32 = temp[x_371];
+    data[x_370] = x_373;
+
+    continuing {
+      let x_375 : i32 = i_1;
+      i_1 = (x_375 + 1);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var x_85 : i32;
+  var x_86 : i32;
+  var x_87 : i32;
+  var x_88 : i32;
+  var x_89 : i32;
+  var x_90 : i32;
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : i32;
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_96 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_96);
+  loop {
+    let x_102 : i32 = i_3;
+    switch(x_102) {
+      case 9: {
+        let x_132 : i32 = i_3;
+        data[x_132] = -5;
+      }
+      case 8: {
+        let x_130 : i32 = i_3;
+        data[x_130] = -4;
+      }
+      case 7: {
+        let x_128 : i32 = i_3;
+        data[x_128] = -3;
+      }
+      case 6: {
+        let x_126 : i32 = i_3;
+        data[x_126] = -2;
+      }
+      case 5: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -1;
+      }
+      case 4: {
+        let x_122 : i32 = i_3;
+        data[x_122] = 0;
+      }
+      case 3: {
+        let x_120 : i32 = i_3;
+        data[x_120] = 1;
+      }
+      case 2: {
+        let x_118 : i32 = i_3;
+        data[x_118] = 2;
+      }
+      case 1: {
+        let x_116 : i32 = i_3;
+        data[x_116] = 3;
+      }
+      case 0: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 4;
+      }
+      default: {
+      }
+    }
+    let x_134 : i32 = i_3;
+    i_3 = (x_134 + 1);
+
+    continuing {
+      let x_136 : i32 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_142 : i32 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    let x_145 : i32 = j_1;
+    let x_146 : i32 = j_1;
+    let x_148 : i32 = data[x_146];
+    temp[x_145] = x_148;
+
+    continuing {
+      let x_150 : i32 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  loop {
+    let x_156 : i32 = x_92;
+    let x_157 : i32 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    let x_160 : i32 = x_94;
+    x_91 = x_160;
+    loop {
+      let x_165 : i32 = x_91;
+      let x_166 : i32 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      let x_169 : i32 = x_91;
+      x_90 = x_169;
+      let x_170 : i32 = x_91;
+      let x_171 : i32 = x_92;
+      let x_173 : array<i32, 10> = data;
+      data = array<i32, 10>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+      data = x_173;
+      x_89 = ((x_170 + x_171) - 1);
+      let x_175 : i32 = x_91;
+      let x_176 : i32 = x_92;
+      let x_180 : i32 = x_93;
+      x_88 = min(((x_175 + (2 * x_176)) - 1), x_180);
+      let x_182 : i32 = x_90;
+      x_87 = x_182;
+      let x_183 : i32 = x_89;
+      x_86 = x_183;
+      let x_184 : i32 = x_88;
+      x_85 = x_184;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85));
+
+      continuing {
+        let x_186 : i32 = x_92;
+        let x_188 : i32 = x_91;
+        x_91 = (x_188 + (2 * x_186));
+      }
+    }
+
+    continuing {
+      let x_190 : i32 = x_92;
+      x_92 = (2 * x_190);
+    }
+  }
+  let x_194 : f32 = gl_FragCoord.y;
+  if ((i32(x_194) < 30)) {
+    let x_201 : i32 = data[0];
+    grey = (0.5 + (f32(x_201) / 10.0));
+  } else {
+    let x_206 : f32 = gl_FragCoord.y;
+    if ((i32(x_206) < 60)) {
+      let x_213 : i32 = data[1];
+      grey = (0.5 + (f32(x_213) / 10.0));
+    } else {
+      let x_218 : f32 = gl_FragCoord.y;
+      if ((i32(x_218) < 90)) {
+        let x_225 : i32 = data[2];
+        grey = (0.5 + (f32(x_225) / 10.0));
+      } else {
+        let x_230 : f32 = gl_FragCoord.y;
+        if ((i32(x_230) < 120)) {
+          let x_237 : i32 = data[3];
+          grey = (0.5 + (f32(x_237) / 10.0));
+        } else {
+          let x_242 : f32 = gl_FragCoord.y;
+          if ((i32(x_242) < 150)) {
+            discard;
+          } else {
+            let x_249 : f32 = gl_FragCoord.y;
+            if ((i32(x_249) < 180)) {
+              let x_256 : i32 = data[5];
+              grey = (0.5 + (f32(x_256) / 10.0));
+            } else {
+              let x_261 : f32 = gl_FragCoord.y;
+              if ((i32(x_261) < 210)) {
+                let x_268 : i32 = data[6];
+                grey = (0.5 + (f32(x_268) / 10.0));
+              } else {
+                let x_273 : f32 = gl_FragCoord.y;
+                if ((i32(x_273) < 240)) {
+                  let x_280 : i32 = data[7];
+                  grey = (0.5 + (f32(x_280) / 10.0));
+                } else {
+                  let x_285 : f32 = gl_FragCoord.y;
+                  if ((i32(x_285) < 270)) {
+                    let x_292 : i32 = data[8];
+                    grey = (0.5 + (f32(x_292) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_296 : f32 = grey;
+  let x_297 : vec3<f32> = vec3<f32>(x_296, x_296, x_296);
+  x_GLF_color = vec4<f32>(x_297.x, x_297.y, x_297.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_382 : i32 = m;
+    let x_383 : i32 = high;
+    if ((x_382 <= x_383)) {
+    } else {
+      break;
+    }
+    let x_386 : i32 = low;
+    i_2 = x_386;
+    loop {
+      let x_391 : i32 = i_2;
+      let x_392 : i32 = high;
+      if ((x_391 < x_392)) {
+      } else {
+        break;
+      }
+      let x_395 : i32 = i_2;
+      from_1 = x_395;
+      let x_396 : i32 = i_2;
+      let x_397 : i32 = m;
+      mid_1 = ((x_396 + x_397) - 1);
+      let x_400 : i32 = i_2;
+      let x_401 : i32 = m;
+      let x_405 : i32 = high;
+      to_1 = min(((x_400 + (2 * x_401)) - 1), x_405);
+      let x_407 : i32 = from_1;
+      param = x_407;
+      let x_408 : i32 = mid_1;
+      param_1 = x_408;
+      let x_409 : i32 = to_1;
+      param_2 = x_409;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_411 : i32 = m;
+        let x_413 : i32 = i_2;
+        i_2 = (x_413 + (2 * x_411));
+      }
+    }
+
+    continuing {
+      let x_415 : i32 = m;
+      m = (2 * x_415);
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..03b86e8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.hlsl
@@ -0,0 +1,302 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_303 = from;
+  k = x_303;
+  const int x_304 = from;
+  i = x_304;
+  const int x_305 = mid;
+  j = (x_305 + 1);
+  while (true) {
+    const int x_311 = i;
+    const int x_312 = mid;
+    const int x_314 = j;
+    const int x_315 = to;
+    bool tint_tmp = (x_311 <= x_312);
+    if (tint_tmp) {
+      tint_tmp = (x_314 <= x_315);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_321 = data[i];
+    const int x_324 = data[j];
+    if ((x_321 < x_324)) {
+      const int x_329 = k;
+      k = (x_329 + 1);
+      const int x_331 = i;
+      i = (x_331 + 1);
+      const int x_334 = data[x_331];
+      temp[x_329] = x_334;
+    } else {
+      const int x_336 = k;
+      k = (x_336 + 1);
+      const int x_338 = j;
+      j = (x_338 + 1);
+      const int x_341 = data[x_338];
+      temp[x_336] = x_341;
+    }
+  }
+  while (true) {
+    const int x_347 = i;
+    const int x_349 = i;
+    const int x_350 = mid;
+    bool tint_tmp_1 = (x_347 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_349 <= x_350);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_354 = k;
+    k = (x_354 + 1);
+    const int x_356 = i;
+    i = (x_356 + 1);
+    const int x_359 = data[x_356];
+    temp[x_354] = x_359;
+  }
+  const int x_361 = from;
+  i_1 = x_361;
+  while (true) {
+    const int x_366 = i_1;
+    const int x_367 = to;
+    if ((x_366 <= x_367)) {
+    } else {
+      break;
+    }
+    const int x_370 = i_1;
+    const int x_373 = temp[i_1];
+    data[x_370] = x_373;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int x_85 = 0;
+  int x_86 = 0;
+  int x_87 = 0;
+  int x_88 = 0;
+  int x_89 = 0;
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_96 = asfloat(x_28[0].x);
+  i_3 = int(x_96);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_145 = j_1;
+      const int x_148 = data[j_1];
+      temp[x_145] = x_148;
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  {
+    for(; (x_92 <= x_93); x_92 = (2 * x_92)) {
+      x_91 = x_94;
+      {
+        for(; (x_91 < x_93); x_91 = (x_91 + (2 * x_92))) {
+          x_90 = x_91;
+          const int x_170 = x_91;
+          const int x_171 = x_92;
+          const int x_173[10] = data;
+          const int tint_symbol_5[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+          data = tint_symbol_5;
+          data = x_173;
+          x_89 = ((x_170 + x_171) - 1);
+          x_88 = min(((x_91 + (2 * x_92)) - 1), x_93);
+          x_87 = x_90;
+          x_86 = x_89;
+          x_85 = x_88;
+          merge_i1_i1_i1_(x_87, x_86, x_85);
+        }
+      }
+    }
+  }
+  const float x_194 = gl_FragCoord.y;
+  if ((int(x_194) < 30)) {
+    const int x_201 = data[0];
+    grey = (0.5f + (float(x_201) / 10.0f));
+  } else {
+    const float x_206 = gl_FragCoord.y;
+    if ((int(x_206) < 60)) {
+      const int x_213 = data[1];
+      grey = (0.5f + (float(x_213) / 10.0f));
+    } else {
+      const float x_218 = gl_FragCoord.y;
+      if ((int(x_218) < 90)) {
+        const int x_225 = data[2];
+        grey = (0.5f + (float(x_225) / 10.0f));
+      } else {
+        const float x_230 = gl_FragCoord.y;
+        if ((int(x_230) < 120)) {
+          const int x_237 = data[3];
+          grey = (0.5f + (float(x_237) / 10.0f));
+        } else {
+          const float x_242 = gl_FragCoord.y;
+          if ((int(x_242) < 150)) {
+            discard;
+          } else {
+            const float x_249 = gl_FragCoord.y;
+            if ((int(x_249) < 180)) {
+              const int x_256 = data[5];
+              grey = (0.5f + (float(x_256) / 10.0f));
+            } else {
+              const float x_261 = gl_FragCoord.y;
+              if ((int(x_261) < 210)) {
+                const int x_268 = data[6];
+                grey = (0.5f + (float(x_268) / 10.0f));
+              } else {
+                const float x_273 = gl_FragCoord.y;
+                if ((int(x_273) < 240)) {
+                  const int x_280 = data[7];
+                  grey = (0.5f + (float(x_280) / 10.0f));
+                } else {
+                  const float x_285 = gl_FragCoord.y;
+                  if ((int(x_285) < 270)) {
+                    const int x_292 = data[8];
+                    grey = (0.5f + (float(x_292) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_296 = grey;
+  const float3 x_297 = float3(x_296, x_296, x_296);
+  x_GLF_color = float4(x_297.x, x_297.y, x_297.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.msl
new file mode 100644
index 0000000..6506890
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.msl
@@ -0,0 +1,373 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_6, thread tint_array_wrapper* const tint_symbol_7) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_303 = *(from);
+  k = x_303;
+  int const x_304 = *(from);
+  i = x_304;
+  int const x_305 = *(mid);
+  j = (x_305 + 1);
+  while (true) {
+    int const x_311 = i;
+    int const x_312 = *(mid);
+    int const x_314 = j;
+    int const x_315 = *(to);
+    if (((x_311 <= x_312) && (x_314 <= x_315))) {
+    } else {
+      break;
+    }
+    int const x_319 = i;
+    int const x_321 = (*(tint_symbol_6)).arr[x_319];
+    int const x_322 = j;
+    int const x_324 = (*(tint_symbol_6)).arr[x_322];
+    if ((x_321 < x_324)) {
+      int const x_329 = k;
+      k = (x_329 + 1);
+      int const x_331 = i;
+      i = (x_331 + 1);
+      int const x_334 = (*(tint_symbol_6)).arr[x_331];
+      (*(tint_symbol_7)).arr[x_329] = x_334;
+    } else {
+      int const x_336 = k;
+      k = (x_336 + 1);
+      int const x_338 = j;
+      j = (x_338 + 1);
+      int const x_341 = (*(tint_symbol_6)).arr[x_338];
+      (*(tint_symbol_7)).arr[x_336] = x_341;
+    }
+  }
+  while (true) {
+    int const x_347 = i;
+    int const x_349 = i;
+    int const x_350 = *(mid);
+    if (((x_347 < 10) && (x_349 <= x_350))) {
+    } else {
+      break;
+    }
+    int const x_354 = k;
+    k = (x_354 + 1);
+    int const x_356 = i;
+    i = (x_356 + 1);
+    int const x_359 = (*(tint_symbol_6)).arr[x_356];
+    (*(tint_symbol_7)).arr[x_354] = x_359;
+  }
+  int const x_361 = *(from);
+  i_1 = x_361;
+  while (true) {
+    int const x_366 = i_1;
+    int const x_367 = *(to);
+    if ((x_366 <= x_367)) {
+    } else {
+      break;
+    }
+    int const x_370 = i_1;
+    int const x_371 = i_1;
+    int const x_373 = (*(tint_symbol_7)).arr[x_371];
+    (*(tint_symbol_6)).arr[x_370] = x_373;
+    {
+      int const x_375 = i_1;
+      i_1 = (x_375 + 1);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_8, thread tint_array_wrapper* const tint_symbol_9, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int x_85 = 0;
+  int x_86 = 0;
+  int x_87 = 0;
+  int x_88 = 0;
+  int x_89 = 0;
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_96 = x_28.injectionSwitch.x;
+  i_3 = int(x_96);
+  while (true) {
+    int const x_102 = i_3;
+    switch(x_102) {
+      case 9: {
+        int const x_132 = i_3;
+        (*(tint_symbol_8)).arr[x_132] = -5;
+        break;
+      }
+      case 8: {
+        int const x_130 = i_3;
+        (*(tint_symbol_8)).arr[x_130] = -4;
+        break;
+      }
+      case 7: {
+        int const x_128 = i_3;
+        (*(tint_symbol_8)).arr[x_128] = -3;
+        break;
+      }
+      case 6: {
+        int const x_126 = i_3;
+        (*(tint_symbol_8)).arr[x_126] = -2;
+        break;
+      }
+      case 5: {
+        int const x_124 = i_3;
+        (*(tint_symbol_8)).arr[x_124] = -1;
+        break;
+      }
+      case 4: {
+        int const x_122 = i_3;
+        (*(tint_symbol_8)).arr[x_122] = 0;
+        break;
+      }
+      case 3: {
+        int const x_120 = i_3;
+        (*(tint_symbol_8)).arr[x_120] = 1;
+        break;
+      }
+      case 2: {
+        int const x_118 = i_3;
+        (*(tint_symbol_8)).arr[x_118] = 2;
+        break;
+      }
+      case 1: {
+        int const x_116 = i_3;
+        (*(tint_symbol_8)).arr[x_116] = 3;
+        break;
+      }
+      case 0: {
+        int const x_114 = i_3;
+        (*(tint_symbol_8)).arr[x_114] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_134 = i_3;
+    i_3 = (x_134 + 1);
+    {
+      int const x_136 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_142 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    int const x_145 = j_1;
+    int const x_146 = j_1;
+    int const x_148 = (*(tint_symbol_8)).arr[x_146];
+    (*(tint_symbol_9)).arr[x_145] = x_148;
+    {
+      int const x_150 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  while (true) {
+    int const x_156 = x_92;
+    int const x_157 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    int const x_160 = x_94;
+    x_91 = x_160;
+    while (true) {
+      int const x_165 = x_91;
+      int const x_166 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      int const x_169 = x_91;
+      x_90 = x_169;
+      int const x_170 = x_91;
+      int const x_171 = x_92;
+      tint_array_wrapper const x_173 = *(tint_symbol_8);
+      tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      *(tint_symbol_8) = tint_symbol_4;
+      *(tint_symbol_8) = x_173;
+      x_89 = ((x_170 + x_171) - 1);
+      int const x_175 = x_91;
+      int const x_176 = x_92;
+      int const x_180 = x_93;
+      x_88 = min(((x_175 + (2 * x_176)) - 1), x_180);
+      int const x_182 = x_90;
+      x_87 = x_182;
+      int const x_183 = x_89;
+      x_86 = x_183;
+      int const x_184 = x_88;
+      x_85 = x_184;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85), tint_symbol_8, tint_symbol_9);
+      {
+        int const x_186 = x_92;
+        int const x_188 = x_91;
+        x_91 = (x_188 + (2 * x_186));
+      }
+    }
+    {
+      int const x_190 = x_92;
+      x_92 = (2 * x_190);
+    }
+  }
+  float const x_194 = (*(tint_symbol_10)).y;
+  if ((int(x_194) < 30)) {
+    int const x_201 = (*(tint_symbol_8)).arr[0];
+    grey = (0.5f + (float(x_201) / 10.0f));
+  } else {
+    float const x_206 = (*(tint_symbol_10)).y;
+    if ((int(x_206) < 60)) {
+      int const x_213 = (*(tint_symbol_8)).arr[1];
+      grey = (0.5f + (float(x_213) / 10.0f));
+    } else {
+      float const x_218 = (*(tint_symbol_10)).y;
+      if ((int(x_218) < 90)) {
+        int const x_225 = (*(tint_symbol_8)).arr[2];
+        grey = (0.5f + (float(x_225) / 10.0f));
+      } else {
+        float const x_230 = (*(tint_symbol_10)).y;
+        if ((int(x_230) < 120)) {
+          int const x_237 = (*(tint_symbol_8)).arr[3];
+          grey = (0.5f + (float(x_237) / 10.0f));
+        } else {
+          float const x_242 = (*(tint_symbol_10)).y;
+          if ((int(x_242) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_249 = (*(tint_symbol_10)).y;
+            if ((int(x_249) < 180)) {
+              int const x_256 = (*(tint_symbol_8)).arr[5];
+              grey = (0.5f + (float(x_256) / 10.0f));
+            } else {
+              float const x_261 = (*(tint_symbol_10)).y;
+              if ((int(x_261) < 210)) {
+                int const x_268 = (*(tint_symbol_8)).arr[6];
+                grey = (0.5f + (float(x_268) / 10.0f));
+              } else {
+                float const x_273 = (*(tint_symbol_10)).y;
+                if ((int(x_273) < 240)) {
+                  int const x_280 = (*(tint_symbol_8)).arr[7];
+                  grey = (0.5f + (float(x_280) / 10.0f));
+                } else {
+                  float const x_285 = (*(tint_symbol_10)).y;
+                  if ((int(x_285) < 270)) {
+                    int const x_292 = (*(tint_symbol_8)).arr[8];
+                    grey = (0.5f + (float(x_292) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_296 = grey;
+  float3 const x_297 = float3(x_296, x_296, x_296);
+  *(tint_symbol_11) = float4(x_297.x, x_297.y, x_297.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread tint_array_wrapper tint_symbol_13 = {};
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread float4 tint_symbol_15 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_13), &(tint_symbol_14), &(tint_symbol_12), &(tint_symbol_15));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_15};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_16, thread tint_array_wrapper* const tint_symbol_17) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_382 = m;
+    int const x_383 = high;
+    if ((x_382 <= x_383)) {
+    } else {
+      break;
+    }
+    int const x_386 = low;
+    i_2 = x_386;
+    while (true) {
+      int const x_391 = i_2;
+      int const x_392 = high;
+      if ((x_391 < x_392)) {
+      } else {
+        break;
+      }
+      int const x_395 = i_2;
+      from_1 = x_395;
+      int const x_396 = i_2;
+      int const x_397 = m;
+      mid_1 = ((x_396 + x_397) - 1);
+      int const x_400 = i_2;
+      int const x_401 = m;
+      int const x_405 = high;
+      to_1 = min(((x_400 + (2 * x_401)) - 1), x_405);
+      int const x_407 = from_1;
+      param = x_407;
+      int const x_408 = mid_1;
+      param_1 = x_408;
+      int const x_409 = to_1;
+      param_2 = x_409;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_16, tint_symbol_17);
+      {
+        int const x_411 = m;
+        int const x_413 = i_2;
+        i_2 = (x_413 + (2 * x_411));
+      }
+    }
+    {
+      int const x_415 = m;
+      m = (2 * x_415);
+    }
+  }
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..451e627
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.spvasm
@@ -0,0 +1,745 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 473
+; Schema: 0
+               OpCapability Shader
+        %257 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %main_1 "main_1"
+               OpName %x_85 "x_85"
+               OpName %x_86 "x_86"
+               OpName %x_87 "x_87"
+               OpName %x_88 "x_88"
+               OpName %x_89 "x_89"
+               OpName %x_90 "x_90"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+        %149 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_9 = OpConstant %int 9
+        %250 = OpConstantComposite %_arr_int_uint_10 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %402 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %134 = OpLabel
+       %x_85 = OpVariable %_ptr_Function_int Function %32
+       %x_86 = OpVariable %_ptr_Function_int Function %32
+       %x_87 = OpVariable %_ptr_Function_int Function %32
+       %x_88 = OpVariable %_ptr_Function_int Function %32
+       %x_89 = OpVariable %_ptr_Function_int Function %32
+       %x_90 = OpVariable %_ptr_Function_int Function %32
+       %x_91 = OpVariable %_ptr_Function_int Function %32
+       %x_92 = OpVariable %_ptr_Function_int Function %32
+       %x_93 = OpVariable %_ptr_Function_int Function %32
+       %x_94 = OpVariable %_ptr_Function_int Function %32
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %149
+        %152 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpConvertFToS %int %153
+               OpStore %i_3 %154
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+        %159 = OpLoad %int %i_3
+               OpSelectionMerge %160 None
+               OpSwitch %159 %161 9 %162 8 %163 7 %164 6 %165 5 %166 4 %167 3 %168 2 %169 1 %170 0 %171
+        %162 = OpLabel
+        %172 = OpLoad %int %i_3
+        %173 = OpAccessChain %_ptr_Private_int %data %172
+               OpStore %173 %int_n5
+               OpBranch %160
+        %163 = OpLabel
+        %175 = OpLoad %int %i_3
+        %176 = OpAccessChain %_ptr_Private_int %data %175
+               OpStore %176 %int_n4
+               OpBranch %160
+        %164 = OpLabel
+        %178 = OpLoad %int %i_3
+        %179 = OpAccessChain %_ptr_Private_int %data %178
+               OpStore %179 %int_n3
+               OpBranch %160
+        %165 = OpLabel
+        %181 = OpLoad %int %i_3
+        %182 = OpAccessChain %_ptr_Private_int %data %181
+               OpStore %182 %int_n2
+               OpBranch %160
+        %166 = OpLabel
+        %184 = OpLoad %int %i_3
+        %185 = OpAccessChain %_ptr_Private_int %data %184
+               OpStore %185 %int_n1
+               OpBranch %160
+        %167 = OpLabel
+        %187 = OpLoad %int %i_3
+        %188 = OpAccessChain %_ptr_Private_int %data %187
+               OpStore %188 %int_0
+               OpBranch %160
+        %168 = OpLabel
+        %190 = OpLoad %int %i_3
+        %191 = OpAccessChain %_ptr_Private_int %data %190
+               OpStore %191 %int_1
+               OpBranch %160
+        %169 = OpLabel
+        %192 = OpLoad %int %i_3
+        %193 = OpAccessChain %_ptr_Private_int %data %192
+               OpStore %193 %int_2
+               OpBranch %160
+        %170 = OpLabel
+        %195 = OpLoad %int %i_3
+        %196 = OpAccessChain %_ptr_Private_int %data %195
+               OpStore %196 %int_3
+               OpBranch %160
+        %171 = OpLabel
+        %198 = OpLoad %int %i_3
+        %199 = OpAccessChain %_ptr_Private_int %data %198
+               OpStore %199 %int_4
+               OpBranch %160
+        %161 = OpLabel
+               OpBranch %160
+        %160 = OpLabel
+        %201 = OpLoad %int %i_3
+        %202 = OpIAdd %int %201 %int_1
+               OpStore %i_3 %202
+               OpBranch %157
+        %157 = OpLabel
+        %203 = OpLoad %int %i_3
+        %204 = OpSLessThan %bool %203 %int_10
+               OpSelectionMerge %205 None
+               OpBranchConditional %204 %206 %207
+        %206 = OpLabel
+               OpBranch %205
+        %207 = OpLabel
+               OpBranch %156
+        %205 = OpLabel
+               OpBranch %155
+        %156 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %j_1
+        %213 = OpSLessThan %bool %212 %int_10
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %209
+        %214 = OpLabel
+        %217 = OpLoad %int %j_1
+        %218 = OpLoad %int %j_1
+        %219 = OpAccessChain %_ptr_Private_int %data %218
+        %220 = OpLoad %int %219
+        %221 = OpAccessChain %_ptr_Private_int %temp %217
+               OpStore %221 %220
+               OpBranch %210
+        %210 = OpLabel
+        %222 = OpLoad %int %j_1
+        %223 = OpIAdd %int %222 %int_1
+               OpStore %j_1 %223
+               OpBranch %208
+        %209 = OpLabel
+               OpStore %x_94 %int_0
+               OpStore %x_93 %int_9
+               OpStore %x_92 %int_1
+               OpBranch %225
+        %225 = OpLabel
+               OpLoopMerge %226 %227 None
+               OpBranch %228
+        %228 = OpLabel
+        %229 = OpLoad %int %x_92
+        %230 = OpLoad %int %x_93
+        %231 = OpSLessThanEqual %bool %229 %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %234
+        %233 = OpLabel
+               OpBranch %232
+        %234 = OpLabel
+               OpBranch %226
+        %232 = OpLabel
+        %235 = OpLoad %int %x_94
+               OpStore %x_91 %235
+               OpBranch %236
+        %236 = OpLabel
+               OpLoopMerge %237 %238 None
+               OpBranch %239
+        %239 = OpLabel
+        %240 = OpLoad %int %x_91
+        %241 = OpLoad %int %x_93
+        %242 = OpSLessThan %bool %240 %241
+               OpSelectionMerge %243 None
+               OpBranchConditional %242 %244 %245
+        %244 = OpLabel
+               OpBranch %243
+        %245 = OpLabel
+               OpBranch %237
+        %243 = OpLabel
+        %246 = OpLoad %int %x_91
+               OpStore %x_90 %246
+        %247 = OpLoad %int %x_91
+        %248 = OpLoad %int %x_92
+        %249 = OpLoad %_arr_int_uint_10 %data
+               OpStore %data %250
+               OpStore %data %249
+        %251 = OpIAdd %int %247 %248
+        %252 = OpISub %int %251 %int_1
+               OpStore %x_89 %252
+        %253 = OpLoad %int %x_91
+        %254 = OpLoad %int %x_92
+        %255 = OpLoad %int %x_93
+        %258 = OpIMul %int %int_2 %254
+        %259 = OpIAdd %int %253 %258
+        %260 = OpISub %int %259 %int_1
+        %256 = OpExtInst %int %257 SMin %260 %255
+               OpStore %x_88 %256
+        %261 = OpLoad %int %x_90
+               OpStore %x_87 %261
+        %262 = OpLoad %int %x_89
+               OpStore %x_86 %262
+        %263 = OpLoad %int %x_88
+               OpStore %x_85 %263
+        %264 = OpFunctionCall %void %merge_i1_i1_i1_ %x_87 %x_86 %x_85
+               OpBranch %238
+        %238 = OpLabel
+        %268 = OpLoad %int %x_92
+        %269 = OpLoad %int %x_91
+        %270 = OpIMul %int %int_2 %268
+        %271 = OpIAdd %int %269 %270
+               OpStore %x_91 %271
+               OpBranch %236
+        %237 = OpLabel
+               OpBranch %227
+        %227 = OpLabel
+        %272 = OpLoad %int %x_92
+        %273 = OpIMul %int %int_2 %272
+               OpStore %x_92 %273
+               OpBranch %225
+        %226 = OpLabel
+        %276 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %277 = OpLoad %float %276
+        %278 = OpConvertFToS %int %277
+        %280 = OpSLessThan %bool %278 %int_30
+               OpSelectionMerge %281 None
+               OpBranchConditional %280 %282 %283
+        %282 = OpLabel
+        %284 = OpAccessChain %_ptr_Private_int %data %int_0
+        %285 = OpLoad %int %284
+        %287 = OpConvertSToF %float %285
+        %289 = OpFDiv %float %287 %float_10
+        %290 = OpFAdd %float %float_0_5 %289
+               OpStore %grey %290
+               OpBranch %281
+        %283 = OpLabel
+        %291 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %292 = OpLoad %float %291
+        %293 = OpConvertFToS %int %292
+        %295 = OpSLessThan %bool %293 %int_60
+               OpSelectionMerge %296 None
+               OpBranchConditional %295 %297 %298
+        %297 = OpLabel
+        %299 = OpAccessChain %_ptr_Private_int %data %int_1
+        %300 = OpLoad %int %299
+        %301 = OpConvertSToF %float %300
+        %302 = OpFDiv %float %301 %float_10
+        %303 = OpFAdd %float %float_0_5 %302
+               OpStore %grey %303
+               OpBranch %296
+        %298 = OpLabel
+        %304 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %305 = OpLoad %float %304
+        %306 = OpConvertFToS %int %305
+        %308 = OpSLessThan %bool %306 %int_90
+               OpSelectionMerge %309 None
+               OpBranchConditional %308 %310 %311
+        %310 = OpLabel
+        %312 = OpAccessChain %_ptr_Private_int %data %int_2
+        %313 = OpLoad %int %312
+        %314 = OpConvertSToF %float %313
+        %315 = OpFDiv %float %314 %float_10
+        %316 = OpFAdd %float %float_0_5 %315
+               OpStore %grey %316
+               OpBranch %309
+        %311 = OpLabel
+        %317 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %318 = OpLoad %float %317
+        %319 = OpConvertFToS %int %318
+        %321 = OpSLessThan %bool %319 %int_120
+               OpSelectionMerge %322 None
+               OpBranchConditional %321 %323 %324
+        %323 = OpLabel
+        %325 = OpAccessChain %_ptr_Private_int %data %int_3
+        %326 = OpLoad %int %325
+        %327 = OpConvertSToF %float %326
+        %328 = OpFDiv %float %327 %float_10
+        %329 = OpFAdd %float %float_0_5 %328
+               OpStore %grey %329
+               OpBranch %322
+        %324 = OpLabel
+        %330 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %331 = OpLoad %float %330
+        %332 = OpConvertFToS %int %331
+        %334 = OpSLessThan %bool %332 %int_150
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %337
+        %336 = OpLabel
+               OpKill
+        %337 = OpLabel
+        %338 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %339 = OpLoad %float %338
+        %340 = OpConvertFToS %int %339
+        %342 = OpSLessThan %bool %340 %int_180
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+        %347 = OpAccessChain %_ptr_Private_int %data %int_5
+        %348 = OpLoad %int %347
+        %349 = OpConvertSToF %float %348
+        %350 = OpFDiv %float %349 %float_10
+        %351 = OpFAdd %float %float_0_5 %350
+               OpStore %grey %351
+               OpBranch %343
+        %345 = OpLabel
+        %352 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %353 = OpLoad %float %352
+        %354 = OpConvertFToS %int %353
+        %356 = OpSLessThan %bool %354 %int_210
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %359
+        %358 = OpLabel
+        %361 = OpAccessChain %_ptr_Private_int %data %int_6
+        %362 = OpLoad %int %361
+        %363 = OpConvertSToF %float %362
+        %364 = OpFDiv %float %363 %float_10
+        %365 = OpFAdd %float %float_0_5 %364
+               OpStore %grey %365
+               OpBranch %357
+        %359 = OpLabel
+        %366 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %367 = OpLoad %float %366
+        %368 = OpConvertFToS %int %367
+        %370 = OpSLessThan %bool %368 %int_240
+               OpSelectionMerge %371 None
+               OpBranchConditional %370 %372 %373
+        %372 = OpLabel
+        %375 = OpAccessChain %_ptr_Private_int %data %int_7
+        %376 = OpLoad %int %375
+        %377 = OpConvertSToF %float %376
+        %378 = OpFDiv %float %377 %float_10
+        %379 = OpFAdd %float %float_0_5 %378
+               OpStore %grey %379
+               OpBranch %371
+        %373 = OpLabel
+        %380 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %381 = OpLoad %float %380
+        %382 = OpConvertFToS %int %381
+        %384 = OpSLessThan %bool %382 %int_270
+               OpSelectionMerge %385 None
+               OpBranchConditional %384 %386 %387
+        %386 = OpLabel
+        %389 = OpAccessChain %_ptr_Private_int %data %int_8
+        %390 = OpLoad %int %389
+        %391 = OpConvertSToF %float %390
+        %392 = OpFDiv %float %391 %float_10
+        %393 = OpFAdd %float %float_0_5 %392
+               OpStore %grey %393
+               OpBranch %385
+        %387 = OpLabel
+               OpKill
+        %385 = OpLabel
+               OpBranch %371
+        %371 = OpLabel
+               OpBranch %357
+        %357 = OpLabel
+               OpBranch %343
+        %343 = OpLabel
+               OpBranch %335
+        %335 = OpLabel
+               OpBranch %322
+        %322 = OpLabel
+               OpBranch %309
+        %309 = OpLabel
+               OpBranch %296
+        %296 = OpLabel
+               OpBranch %281
+        %281 = OpLabel
+        %394 = OpLoad %float %grey
+        %396 = OpCompositeConstruct %v3float %394 %394 %394
+        %397 = OpCompositeExtract %float %396 0
+        %398 = OpCompositeExtract %float %396 1
+        %399 = OpCompositeExtract %float %396 2
+        %401 = OpCompositeConstruct %v4float %397 %398 %399 %float_1
+               OpStore %x_GLF_color %401
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %402
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %406 = OpLabel
+        %407 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %407
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %409 = OpLabel
+        %410 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %410
+        %411 = OpFunctionCall %void %main_1
+        %413 = OpLoad %v4float %x_GLF_color
+        %414 = OpCompositeConstruct %main_out %413
+        %412 = OpFunctionCall %void %tint_symbol_3 %414
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %416 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %427
+        %427 = OpLabel
+               OpLoopMerge %428 %429 None
+               OpBranch %430
+        %430 = OpLabel
+        %431 = OpLoad %int %m
+        %432 = OpLoad %int %high
+        %433 = OpSLessThanEqual %bool %431 %432
+               OpSelectionMerge %434 None
+               OpBranchConditional %433 %435 %436
+        %435 = OpLabel
+               OpBranch %434
+        %436 = OpLabel
+               OpBranch %428
+        %434 = OpLabel
+        %437 = OpLoad %int %low
+               OpStore %i_2 %437
+               OpBranch %438
+        %438 = OpLabel
+               OpLoopMerge %439 %440 None
+               OpBranch %441
+        %441 = OpLabel
+        %442 = OpLoad %int %i_2
+        %443 = OpLoad %int %high
+        %444 = OpSLessThan %bool %442 %443
+               OpSelectionMerge %445 None
+               OpBranchConditional %444 %446 %447
+        %446 = OpLabel
+               OpBranch %445
+        %447 = OpLabel
+               OpBranch %439
+        %445 = OpLabel
+        %448 = OpLoad %int %i_2
+               OpStore %from_1 %448
+        %449 = OpLoad %int %i_2
+        %450 = OpLoad %int %m
+        %451 = OpIAdd %int %449 %450
+        %452 = OpISub %int %451 %int_1
+               OpStore %mid_1 %452
+        %453 = OpLoad %int %i_2
+        %454 = OpLoad %int %m
+        %455 = OpLoad %int %high
+        %457 = OpIMul %int %int_2 %454
+        %458 = OpIAdd %int %453 %457
+        %459 = OpISub %int %458 %int_1
+        %456 = OpExtInst %int %257 SMin %459 %455
+               OpStore %to_1 %456
+        %460 = OpLoad %int %from_1
+               OpStore %param %460
+        %461 = OpLoad %int %mid_1
+               OpStore %param_1 %461
+        %462 = OpLoad %int %to_1
+               OpStore %param_2 %462
+        %463 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %440
+        %440 = OpLabel
+        %467 = OpLoad %int %m
+        %468 = OpLoad %int %i_2
+        %469 = OpIMul %int %int_2 %467
+        %470 = OpIAdd %int %468 %469
+               OpStore %i_2 %470
+               OpBranch %438
+        %439 = OpLabel
+               OpBranch %429
+        %429 = OpLabel
+        %471 = OpLoad %int %m
+        %472 = OpIMul %int %int_2 %471
+               OpStore %m %472
+               OpBranch %427
+        %428 = OpLabel
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 157[%157] is not post dominated by the back-edge block 205[%205]
+  %205 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..bf16229
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl.expected.wgsl
@@ -0,0 +1,366 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_303 : i32 = *(from);
+  k = x_303;
+  let x_304 : i32 = *(from);
+  i = x_304;
+  let x_305 : i32 = *(mid);
+  j = (x_305 + 1);
+  loop {
+    let x_311 : i32 = i;
+    let x_312 : i32 = *(mid);
+    let x_314 : i32 = j;
+    let x_315 : i32 = *(to);
+    if (((x_311 <= x_312) && (x_314 <= x_315))) {
+    } else {
+      break;
+    }
+    let x_319 : i32 = i;
+    let x_321 : i32 = data[x_319];
+    let x_322 : i32 = j;
+    let x_324 : i32 = data[x_322];
+    if ((x_321 < x_324)) {
+      let x_329 : i32 = k;
+      k = (x_329 + 1);
+      let x_331 : i32 = i;
+      i = (x_331 + 1);
+      let x_334 : i32 = data[x_331];
+      temp[x_329] = x_334;
+    } else {
+      let x_336 : i32 = k;
+      k = (x_336 + 1);
+      let x_338 : i32 = j;
+      j = (x_338 + 1);
+      let x_341 : i32 = data[x_338];
+      temp[x_336] = x_341;
+    }
+  }
+  loop {
+    let x_347 : i32 = i;
+    let x_349 : i32 = i;
+    let x_350 : i32 = *(mid);
+    if (((x_347 < 10) && (x_349 <= x_350))) {
+    } else {
+      break;
+    }
+    let x_354 : i32 = k;
+    k = (x_354 + 1);
+    let x_356 : i32 = i;
+    i = (x_356 + 1);
+    let x_359 : i32 = data[x_356];
+    temp[x_354] = x_359;
+  }
+  let x_361 : i32 = *(from);
+  i_1 = x_361;
+  loop {
+    let x_366 : i32 = i_1;
+    let x_367 : i32 = *(to);
+    if ((x_366 <= x_367)) {
+    } else {
+      break;
+    }
+    let x_370 : i32 = i_1;
+    let x_371 : i32 = i_1;
+    let x_373 : i32 = temp[x_371];
+    data[x_370] = x_373;
+
+    continuing {
+      let x_375 : i32 = i_1;
+      i_1 = (x_375 + 1);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var x_85 : i32;
+  var x_86 : i32;
+  var x_87 : i32;
+  var x_88 : i32;
+  var x_89 : i32;
+  var x_90 : i32;
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : i32;
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_96 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_96);
+  loop {
+    let x_102 : i32 = i_3;
+    switch(x_102) {
+      case 9: {
+        let x_132 : i32 = i_3;
+        data[x_132] = -5;
+      }
+      case 8: {
+        let x_130 : i32 = i_3;
+        data[x_130] = -4;
+      }
+      case 7: {
+        let x_128 : i32 = i_3;
+        data[x_128] = -3;
+      }
+      case 6: {
+        let x_126 : i32 = i_3;
+        data[x_126] = -2;
+      }
+      case 5: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -1;
+      }
+      case 4: {
+        let x_122 : i32 = i_3;
+        data[x_122] = 0;
+      }
+      case 3: {
+        let x_120 : i32 = i_3;
+        data[x_120] = 1;
+      }
+      case 2: {
+        let x_118 : i32 = i_3;
+        data[x_118] = 2;
+      }
+      case 1: {
+        let x_116 : i32 = i_3;
+        data[x_116] = 3;
+      }
+      case 0: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 4;
+      }
+      default: {
+      }
+    }
+    let x_134 : i32 = i_3;
+    i_3 = (x_134 + 1);
+
+    continuing {
+      let x_136 : i32 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_142 : i32 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    let x_145 : i32 = j_1;
+    let x_146 : i32 = j_1;
+    let x_148 : i32 = data[x_146];
+    temp[x_145] = x_148;
+
+    continuing {
+      let x_150 : i32 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  loop {
+    let x_156 : i32 = x_92;
+    let x_157 : i32 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    let x_160 : i32 = x_94;
+    x_91 = x_160;
+    loop {
+      let x_165 : i32 = x_91;
+      let x_166 : i32 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      let x_169 : i32 = x_91;
+      x_90 = x_169;
+      let x_170 : i32 = x_91;
+      let x_171 : i32 = x_92;
+      let x_173 : array<i32, 10> = data;
+      data = array<i32, 10>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+      data = x_173;
+      x_89 = ((x_170 + x_171) - 1);
+      let x_175 : i32 = x_91;
+      let x_176 : i32 = x_92;
+      let x_180 : i32 = x_93;
+      x_88 = min(((x_175 + (2 * x_176)) - 1), x_180);
+      let x_182 : i32 = x_90;
+      x_87 = x_182;
+      let x_183 : i32 = x_89;
+      x_86 = x_183;
+      let x_184 : i32 = x_88;
+      x_85 = x_184;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85));
+
+      continuing {
+        let x_186 : i32 = x_92;
+        let x_188 : i32 = x_91;
+        x_91 = (x_188 + (2 * x_186));
+      }
+    }
+
+    continuing {
+      let x_190 : i32 = x_92;
+      x_92 = (2 * x_190);
+    }
+  }
+  let x_194 : f32 = gl_FragCoord.y;
+  if ((i32(x_194) < 30)) {
+    let x_201 : i32 = data[0];
+    grey = (0.5 + (f32(x_201) / 10.0));
+  } else {
+    let x_206 : f32 = gl_FragCoord.y;
+    if ((i32(x_206) < 60)) {
+      let x_213 : i32 = data[1];
+      grey = (0.5 + (f32(x_213) / 10.0));
+    } else {
+      let x_218 : f32 = gl_FragCoord.y;
+      if ((i32(x_218) < 90)) {
+        let x_225 : i32 = data[2];
+        grey = (0.5 + (f32(x_225) / 10.0));
+      } else {
+        let x_230 : f32 = gl_FragCoord.y;
+        if ((i32(x_230) < 120)) {
+          let x_237 : i32 = data[3];
+          grey = (0.5 + (f32(x_237) / 10.0));
+        } else {
+          let x_242 : f32 = gl_FragCoord.y;
+          if ((i32(x_242) < 150)) {
+            discard;
+          } else {
+            let x_249 : f32 = gl_FragCoord.y;
+            if ((i32(x_249) < 180)) {
+              let x_256 : i32 = data[5];
+              grey = (0.5 + (f32(x_256) / 10.0));
+            } else {
+              let x_261 : f32 = gl_FragCoord.y;
+              if ((i32(x_261) < 210)) {
+                let x_268 : i32 = data[6];
+                grey = (0.5 + (f32(x_268) / 10.0));
+              } else {
+                let x_273 : f32 = gl_FragCoord.y;
+                if ((i32(x_273) < 240)) {
+                  let x_280 : i32 = data[7];
+                  grey = (0.5 + (f32(x_280) / 10.0));
+                } else {
+                  let x_285 : f32 = gl_FragCoord.y;
+                  if ((i32(x_285) < 270)) {
+                    let x_292 : i32 = data[8];
+                    grey = (0.5 + (f32(x_292) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_296 : f32 = grey;
+  let x_297 : vec3<f32> = vec3<f32>(x_296, x_296, x_296);
+  x_GLF_color = vec4<f32>(x_297.x, x_297.y, x_297.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_382 : i32 = m;
+    let x_383 : i32 = high;
+    if ((x_382 <= x_383)) {
+    } else {
+      break;
+    }
+    let x_386 : i32 = low;
+    i_2 = x_386;
+    loop {
+      let x_391 : i32 = i_2;
+      let x_392 : i32 = high;
+      if ((x_391 < x_392)) {
+      } else {
+        break;
+      }
+      let x_395 : i32 = i_2;
+      from_1 = x_395;
+      let x_396 : i32 = i_2;
+      let x_397 : i32 = m;
+      mid_1 = ((x_396 + x_397) - 1);
+      let x_400 : i32 = i_2;
+      let x_401 : i32 = m;
+      let x_405 : i32 = high;
+      to_1 = min(((x_400 + (2 * x_401)) - 1), x_405);
+      let x_407 : i32 = from_1;
+      param = x_407;
+      let x_408 : i32 = mid_1;
+      param_1 = x_408;
+      let x_409 : i32 = to_1;
+      param_2 = x_409;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_411 : i32 = m;
+        let x_413 : i32 = i_2;
+        i_2 = (x_413 + (2 * x_411));
+      }
+    }
+
+    continuing {
+      let x_415 : i32 = m;
+      m = (2 * x_415);
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm
new file mode 100644
index 0000000..c45e451
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm
@@ -0,0 +1,631 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+    %int_0_0 = OpConstant %int 0
+         %83 = OpConstantComposite %_arr_int_uint_10 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0
+       %main = OpFunction %void None %32
+         %84 = OpLabel
+         %85 = OpVariable %_ptr_Function_int Function
+         %86 = OpVariable %_ptr_Function_int Function
+         %87 = OpVariable %_ptr_Function_int Function
+         %88 = OpVariable %_ptr_Function_int Function
+         %89 = OpVariable %_ptr_Function_int Function
+         %90 = OpVariable %_ptr_Function_int Function
+         %91 = OpVariable %_ptr_Function_int Function
+         %92 = OpVariable %_ptr_Function_int Function
+         %93 = OpVariable %_ptr_Function_int Function
+         %94 = OpVariable %_ptr_Function_int Function
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %95 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %96 = OpLoad %float %95
+         %97 = OpConvertFToS %int %96
+               OpStore %i_2 %97
+               OpBranch %98
+         %98 = OpLabel
+               OpLoopMerge %99 %100 None
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpLoad %int %i_2
+               OpSelectionMerge %103 None
+               OpSwitch %102 %103 0 %104 1 %105 2 %106 3 %107 4 %108 5 %109 6 %110 7 %111 8 %112 9 %113
+        %104 = OpLabel
+        %114 = OpLoad %int %i_2
+        %115 = OpAccessChain %_ptr_Private_int %data %114
+               OpStore %115 %int_4
+               OpBranch %103
+        %105 = OpLabel
+        %116 = OpLoad %int %i_2
+        %117 = OpAccessChain %_ptr_Private_int %data %116
+               OpStore %117 %int_3
+               OpBranch %103
+        %106 = OpLabel
+        %118 = OpLoad %int %i_2
+        %119 = OpAccessChain %_ptr_Private_int %data %118
+               OpStore %119 %int_2
+               OpBranch %103
+        %107 = OpLabel
+        %120 = OpLoad %int %i_2
+        %121 = OpAccessChain %_ptr_Private_int %data %120
+               OpStore %121 %int_1
+               OpBranch %103
+        %108 = OpLabel
+        %122 = OpLoad %int %i_2
+        %123 = OpAccessChain %_ptr_Private_int %data %122
+               OpStore %123 %int_0
+               OpBranch %103
+        %109 = OpLabel
+        %124 = OpLoad %int %i_2
+        %125 = OpAccessChain %_ptr_Private_int %data %124
+               OpStore %125 %int_n1
+               OpBranch %103
+        %110 = OpLabel
+        %126 = OpLoad %int %i_2
+        %127 = OpAccessChain %_ptr_Private_int %data %126
+               OpStore %127 %int_n2
+               OpBranch %103
+        %111 = OpLabel
+        %128 = OpLoad %int %i_2
+        %129 = OpAccessChain %_ptr_Private_int %data %128
+               OpStore %129 %int_n3
+               OpBranch %103
+        %112 = OpLabel
+        %130 = OpLoad %int %i_2
+        %131 = OpAccessChain %_ptr_Private_int %data %130
+               OpStore %131 %int_n4
+               OpBranch %103
+        %113 = OpLabel
+        %132 = OpLoad %int %i_2
+        %133 = OpAccessChain %_ptr_Private_int %data %132
+               OpStore %133 %int_n5
+               OpBranch %103
+        %103 = OpLabel
+        %134 = OpLoad %int %i_2
+        %135 = OpIAdd %int %134 %int_1
+               OpStore %i_2 %135
+               OpBranch %100
+        %100 = OpLabel
+        %136 = OpLoad %int %i_2
+        %137 = OpSLessThan %bool %136 %int_10
+               OpBranchConditional %137 %98 %99
+         %99 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %138
+        %138 = OpLabel
+               OpLoopMerge %139 %140 None
+               OpBranch %141
+        %141 = OpLabel
+        %142 = OpLoad %int %j_0
+        %143 = OpSLessThan %bool %142 %int_10
+               OpBranchConditional %143 %144 %139
+        %144 = OpLabel
+        %145 = OpLoad %int %j_0
+        %146 = OpLoad %int %j_0
+        %147 = OpAccessChain %_ptr_Private_int %data %146
+        %148 = OpLoad %int %147
+        %149 = OpAccessChain %_ptr_Private_int %temp %145
+               OpStore %149 %148
+               OpBranch %140
+        %140 = OpLabel
+        %150 = OpLoad %int %j_0
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %j_0 %151
+               OpBranch %138
+        %139 = OpLabel
+               OpStore %94 %int_0
+               OpStore %93 %int_9
+               OpStore %92 %int_1
+               OpBranch %152
+        %152 = OpLabel
+               OpLoopMerge %153 %154 None
+               OpBranch %155
+        %155 = OpLabel
+        %156 = OpLoad %int %92
+        %157 = OpLoad %int %93
+        %158 = OpSLessThanEqual %bool %156 %157
+               OpBranchConditional %158 %159 %153
+        %159 = OpLabel
+        %160 = OpLoad %int %94
+               OpStore %91 %160
+               OpBranch %161
+        %161 = OpLabel
+               OpLoopMerge %162 %163 None
+               OpBranch %164
+        %164 = OpLabel
+        %165 = OpLoad %int %91
+        %166 = OpLoad %int %93
+        %167 = OpSLessThan %bool %165 %166
+               OpBranchConditional %167 %168 %162
+        %168 = OpLabel
+        %169 = OpLoad %int %91
+               OpStore %90 %169
+        %170 = OpLoad %int %91
+        %171 = OpLoad %int %92
+        %172 = OpIAdd %int %170 %171
+        %173 = OpISub %int %172 %int_1
+               OpStore %89 %173
+        %174 = OpLoad %int %91
+        %175 = OpLoad %int %92
+        %176 = OpIMul %int %int_2 %175
+        %177 = OpIAdd %int %174 %176
+        %178 = OpISub %int %177 %int_1
+        %179 = OpLoad %int %93
+        %180 = OpExtInst %int %1 SMin %178 %179
+               OpStore %88 %180
+        %181 = OpLoad %int %90
+               OpStore %87 %181
+        %182 = OpLoad %int %89
+               OpStore %86 %182
+        %183 = OpLoad %int %88
+               OpStore %85 %183
+        %184 = OpFunctionCall %void %merge_i1_i1_i1_ %87 %86 %85
+               OpBranch %163
+        %163 = OpLabel
+        %185 = OpLoad %int %92
+        %186 = OpIMul %int %int_2 %185
+        %187 = OpLoad %int %91
+        %188 = OpIAdd %int %187 %186
+               OpStore %91 %188
+               OpBranch %161
+        %162 = OpLabel
+               OpBranch %154
+        %154 = OpLabel
+        %189 = OpLoad %int %92
+        %190 = OpIMul %int %int_2 %189
+               OpStore %92 %190
+               OpBranch %152
+        %153 = OpLabel
+               OpBranch %191
+        %191 = OpLabel
+        %192 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %193 = OpLoad %float %192
+        %194 = OpConvertFToS %int %193
+        %195 = OpSLessThan %bool %194 %int_30
+               OpSelectionMerge %196 None
+               OpBranchConditional %195 %197 %198
+        %197 = OpLabel
+        %199 = OpAccessChain %_ptr_Private_int %data %int_0
+        %200 = OpLoad %int %199
+        %201 = OpConvertSToF %float %200
+        %202 = OpFDiv %float %201 %float_10
+        %203 = OpFAdd %float %float_0_5 %202
+               OpStore %grey %203
+               OpBranch %196
+        %198 = OpLabel
+        %204 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %205 = OpLoad %float %204
+        %206 = OpConvertFToS %int %205
+        %207 = OpSLessThan %bool %206 %int_60
+               OpSelectionMerge %208 None
+               OpBranchConditional %207 %209 %210
+        %209 = OpLabel
+        %211 = OpAccessChain %_ptr_Private_int %data %int_1
+        %212 = OpLoad %int %211
+        %213 = OpConvertSToF %float %212
+        %214 = OpFDiv %float %213 %float_10
+        %215 = OpFAdd %float %float_0_5 %214
+               OpStore %grey %215
+               OpBranch %208
+        %210 = OpLabel
+        %216 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %217 = OpLoad %float %216
+        %218 = OpConvertFToS %int %217
+        %219 = OpSLessThan %bool %218 %int_90
+               OpSelectionMerge %220 None
+               OpBranchConditional %219 %221 %222
+        %221 = OpLabel
+        %223 = OpAccessChain %_ptr_Private_int %data %int_2
+        %224 = OpLoad %int %223
+        %225 = OpConvertSToF %float %224
+        %226 = OpFDiv %float %225 %float_10
+        %227 = OpFAdd %float %float_0_5 %226
+               OpStore %grey %227
+               OpBranch %220
+        %222 = OpLabel
+        %228 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %229 = OpLoad %float %228
+        %230 = OpConvertFToS %int %229
+        %231 = OpSLessThan %bool %230 %int_120
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %234
+        %233 = OpLabel
+        %235 = OpAccessChain %_ptr_Private_int %data %int_3
+        %236 = OpLoad %int %235
+        %237 = OpConvertSToF %float %236
+        %238 = OpFDiv %float %237 %float_10
+        %239 = OpFAdd %float %float_0_5 %238
+               OpStore %grey %239
+               OpBranch %232
+        %234 = OpLabel
+        %240 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %241 = OpLoad %float %240
+        %242 = OpConvertFToS %int %241
+        %243 = OpSLessThan %bool %242 %int_150
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %246
+        %245 = OpLabel
+               OpKill
+        %246 = OpLabel
+        %247 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %248 = OpLoad %float %247
+        %249 = OpConvertFToS %int %248
+        %250 = OpSLessThan %bool %249 %int_180
+               OpSelectionMerge %251 None
+               OpBranchConditional %250 %252 %253
+        %252 = OpLabel
+        %254 = OpAccessChain %_ptr_Private_int %data %int_5
+        %255 = OpLoad %int %254
+        %256 = OpConvertSToF %float %255
+        %257 = OpFDiv %float %256 %float_10
+        %258 = OpFAdd %float %float_0_5 %257
+               OpStore %grey %258
+               OpBranch %251
+        %253 = OpLabel
+        %259 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %260 = OpLoad %float %259
+        %261 = OpConvertFToS %int %260
+        %262 = OpSLessThan %bool %261 %int_210
+               OpSelectionMerge %263 None
+               OpBranchConditional %262 %264 %265
+        %264 = OpLabel
+        %266 = OpAccessChain %_ptr_Private_int %data %int_6
+        %267 = OpLoad %int %266
+        %268 = OpConvertSToF %float %267
+        %269 = OpFDiv %float %268 %float_10
+        %270 = OpFAdd %float %float_0_5 %269
+               OpStore %grey %270
+               OpBranch %263
+        %265 = OpLabel
+        %271 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %272 = OpLoad %float %271
+        %273 = OpConvertFToS %int %272
+        %274 = OpSLessThan %bool %273 %int_240
+               OpSelectionMerge %275 None
+               OpBranchConditional %274 %276 %277
+        %276 = OpLabel
+        %278 = OpAccessChain %_ptr_Private_int %data %int_7
+        %279 = OpLoad %int %278
+        %280 = OpConvertSToF %float %279
+        %281 = OpFDiv %float %280 %float_10
+        %282 = OpFAdd %float %float_0_5 %281
+               OpStore %grey %282
+               OpBranch %275
+        %277 = OpLabel
+        %283 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %284 = OpLoad %float %283
+        %285 = OpConvertFToS %int %284
+        %286 = OpSLessThan %bool %285 %int_270
+               OpSelectionMerge %287 None
+               OpBranchConditional %286 %288 %289
+        %288 = OpLabel
+        %290 = OpAccessChain %_ptr_Private_int %data %int_8
+        %291 = OpLoad %int %290
+        %292 = OpConvertSToF %float %291
+        %293 = OpFDiv %float %292 %float_10
+        %294 = OpFAdd %float %float_0_5 %293
+               OpStore %grey %294
+               OpBranch %287
+        %289 = OpLabel
+               OpKill
+        %287 = OpLabel
+               OpBranch %275
+        %275 = OpLabel
+               OpBranch %263
+        %263 = OpLabel
+               OpBranch %251
+        %251 = OpLabel
+               OpBranch %244
+        %244 = OpLabel
+               OpBranch %232
+        %232 = OpLabel
+               OpBranch %220
+        %220 = OpLabel
+               OpBranch %208
+        %208 = OpLabel
+               OpBranch %196
+        %196 = OpLabel
+        %295 = OpLoad %float %grey
+        %296 = OpCompositeConstruct %v3float %295 %295 %295
+        %297 = OpCompositeExtract %float %296 0
+        %298 = OpCompositeExtract %float %296 1
+        %299 = OpCompositeExtract %float %296 2
+        %300 = OpCompositeConstruct %v4float %297 %298 %299 %float_1
+               OpStore %_GLF_color %300
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %35
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %301 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %302 = OpLoad %int %from
+               OpStore %k %302
+        %303 = OpLoad %int %from
+               OpStore %i %303
+        %304 = OpLoad %int %mid
+        %305 = OpIAdd %int %304 %int_1
+               OpStore %j %305
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+        %310 = OpLoad %int %i
+        %311 = OpLoad %int %mid
+        %312 = OpSLessThanEqual %bool %310 %311
+        %313 = OpLoad %int %j
+        %314 = OpLoad %int %to
+        %315 = OpSLessThanEqual %bool %313 %314
+        %316 = OpLogicalAnd %bool %312 %315
+               OpBranchConditional %316 %317 %307
+        %317 = OpLabel
+        %318 = OpLoad %int %i
+        %319 = OpAccessChain %_ptr_Private_int %data %318
+        %320 = OpLoad %int %319
+        %321 = OpLoad %int %j
+        %322 = OpAccessChain %_ptr_Private_int %data %321
+        %323 = OpLoad %int %322
+        %324 = OpSLessThan %bool %320 %323
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %327
+        %326 = OpLabel
+        %328 = OpLoad %int %k
+        %329 = OpIAdd %int %328 %int_1
+               OpStore %k %329
+        %330 = OpLoad %int %i
+        %331 = OpIAdd %int %330 %int_1
+               OpStore %i %331
+        %332 = OpAccessChain %_ptr_Private_int %data %330
+        %333 = OpLoad %int %332
+        %334 = OpAccessChain %_ptr_Private_int %temp %328
+               OpStore %334 %333
+               OpBranch %325
+        %327 = OpLabel
+        %335 = OpLoad %int %k
+        %336 = OpIAdd %int %335 %int_1
+               OpStore %k %336
+        %337 = OpLoad %int %j
+        %338 = OpIAdd %int %337 %int_1
+               OpStore %j %338
+        %339 = OpAccessChain %_ptr_Private_int %data %337
+        %340 = OpLoad %int %339
+        %341 = OpAccessChain %_ptr_Private_int %temp %335
+               OpStore %341 %340
+               OpBranch %325
+        %325 = OpLabel
+               OpBranch %308
+        %308 = OpLabel
+               OpBranch %306
+        %307 = OpLabel
+               OpBranch %342
+        %342 = OpLabel
+               OpLoopMerge %343 %344 None
+               OpBranch %345
+        %345 = OpLabel
+        %346 = OpLoad %int %i
+        %347 = OpSLessThan %bool %346 %int_10
+        %348 = OpLoad %int %i
+        %349 = OpLoad %int %mid
+        %350 = OpSLessThanEqual %bool %348 %349
+        %351 = OpLogicalAnd %bool %347 %350
+               OpBranchConditional %351 %352 %343
+        %352 = OpLabel
+        %353 = OpLoad %int %k
+        %354 = OpIAdd %int %353 %int_1
+               OpStore %k %354
+        %355 = OpLoad %int %i
+        %356 = OpIAdd %int %355 %int_1
+               OpStore %i %356
+        %357 = OpAccessChain %_ptr_Private_int %data %355
+        %358 = OpLoad %int %357
+        %359 = OpAccessChain %_ptr_Private_int %temp %353
+               OpStore %359 %358
+               OpBranch %344
+        %344 = OpLabel
+               OpBranch %342
+        %343 = OpLabel
+        %360 = OpLoad %int %from
+               OpStore %i_0 %360
+               OpBranch %361
+        %361 = OpLabel
+               OpLoopMerge %362 %363 None
+               OpBranch %364
+        %364 = OpLabel
+        %365 = OpLoad %int %i_0
+        %366 = OpLoad %int %to
+        %367 = OpSLessThanEqual %bool %365 %366
+               OpBranchConditional %367 %368 %362
+        %368 = OpLabel
+        %369 = OpLoad %int %i_0
+        %370 = OpLoad %int %i_0
+        %371 = OpAccessChain %_ptr_Private_int %temp %370
+        %372 = OpLoad %int %371
+        %373 = OpAccessChain %_ptr_Private_int %data %369
+               OpStore %373 %372
+               OpBranch %363
+        %363 = OpLabel
+        %374 = OpLoad %int %i_0
+        %375 = OpIAdd %int %374 %int_1
+               OpStore %i_0 %375
+               OpBranch %361
+        %362 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %32
+        %376 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %377
+        %377 = OpLabel
+               OpLoopMerge %378 %379 None
+               OpBranch %380
+        %380 = OpLabel
+        %381 = OpLoad %int %m
+        %382 = OpLoad %int %high
+        %383 = OpSLessThanEqual %bool %381 %382
+               OpBranchConditional %383 %384 %378
+        %384 = OpLabel
+        %385 = OpLoad %int %low
+               OpStore %i_1 %385
+               OpBranch %386
+        %386 = OpLabel
+               OpLoopMerge %387 %388 None
+               OpBranch %389
+        %389 = OpLabel
+        %390 = OpLoad %int %i_1
+        %391 = OpLoad %int %high
+        %392 = OpSLessThan %bool %390 %391
+               OpBranchConditional %392 %393 %387
+        %393 = OpLabel
+        %394 = OpLoad %int %i_1
+               OpStore %from_0 %394
+        %395 = OpLoad %int %i_1
+        %396 = OpLoad %int %m
+        %397 = OpIAdd %int %395 %396
+        %398 = OpISub %int %397 %int_1
+               OpStore %mid_0 %398
+        %399 = OpLoad %int %i_1
+        %400 = OpLoad %int %m
+        %401 = OpIMul %int %int_2 %400
+        %402 = OpIAdd %int %399 %401
+        %403 = OpISub %int %402 %int_1
+        %404 = OpLoad %int %high
+        %405 = OpExtInst %int %1 SMin %403 %404
+               OpStore %to_0 %405
+        %406 = OpLoad %int %from_0
+               OpStore %param %406
+        %407 = OpLoad %int %mid_0
+               OpStore %param_0 %407
+        %408 = OpLoad %int %to_0
+               OpStore %param_1 %408
+        %409 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %388
+        %388 = OpLabel
+        %410 = OpLoad %int %m
+        %411 = OpIMul %int %int_2 %410
+        %412 = OpLoad %int %i_1
+        %413 = OpIAdd %int %412 %411
+               OpStore %i_1 %413
+               OpBranch %386
+        %387 = OpLabel
+               OpBranch %379
+        %379 = OpLabel
+        %414 = OpLoad %int %m
+        %415 = OpIMul %int %int_2 %414
+               OpStore %m %415
+               OpBranch %377
+        %378 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.hlsl
new file mode 100644
index 0000000..30e945e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.hlsl
@@ -0,0 +1,296 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_302 = from;
+  k = x_302;
+  const int x_303 = from;
+  i = x_303;
+  const int x_304 = mid;
+  j = (x_304 + 1);
+  while (true) {
+    const int x_310 = i;
+    const int x_311 = mid;
+    const int x_313 = j;
+    const int x_314 = to;
+    bool tint_tmp = (x_310 <= x_311);
+    if (tint_tmp) {
+      tint_tmp = (x_313 <= x_314);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_320 = data[i];
+    const int x_323 = data[j];
+    if ((x_320 < x_323)) {
+      const int x_328 = k;
+      k = (x_328 + 1);
+      const int x_330 = i;
+      i = (x_330 + 1);
+      const int x_333 = data[x_330];
+      temp[x_328] = x_333;
+    } else {
+      const int x_335 = k;
+      k = (x_335 + 1);
+      const int x_337 = j;
+      j = (x_337 + 1);
+      const int x_340 = data[x_337];
+      temp[x_335] = x_340;
+    }
+  }
+  while (true) {
+    const int x_346 = i;
+    const int x_348 = i;
+    const int x_349 = mid;
+    bool tint_tmp_1 = (x_346 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_348 <= x_349);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_353 = k;
+    k = (x_353 + 1);
+    const int x_355 = i;
+    i = (x_355 + 1);
+    const int x_358 = data[x_355];
+    temp[x_353] = x_358;
+  }
+  const int x_360 = from;
+  i_1 = x_360;
+  while (true) {
+    const int x_365 = i_1;
+    const int x_366 = to;
+    if ((x_365 <= x_366)) {
+    } else {
+      break;
+    }
+    const int x_369 = i_1;
+    const int x_372 = temp[i_1];
+    data[x_369] = x_372;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int x_85 = 0;
+  int x_86 = 0;
+  int x_87 = 0;
+  int x_88 = 0;
+  int x_89 = 0;
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_96 = asfloat(x_28[0].x);
+  i_3 = int(x_96);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_145 = j_1;
+      const int x_148 = data[j_1];
+      temp[x_145] = x_148;
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  {
+    for(; (x_92 <= x_93); x_92 = (2 * x_92)) {
+      x_91 = x_94;
+      {
+        for(; (x_91 < x_93); x_91 = (x_91 + (2 * x_92))) {
+          x_90 = x_91;
+          x_89 = ((x_91 + x_92) - 1);
+          x_88 = min(((x_91 + (2 * x_92)) - 1), x_93);
+          x_87 = x_90;
+          x_86 = x_89;
+          x_85 = x_88;
+          merge_i1_i1_i1_(x_87, x_86, x_85);
+        }
+      }
+    }
+  }
+  const float x_193 = gl_FragCoord.y;
+  if ((int(x_193) < 30)) {
+    const int x_200 = data[0];
+    grey = (0.5f + (float(x_200) / 10.0f));
+  } else {
+    const float x_205 = gl_FragCoord.y;
+    if ((int(x_205) < 60)) {
+      const int x_212 = data[1];
+      grey = (0.5f + (float(x_212) / 10.0f));
+    } else {
+      const float x_217 = gl_FragCoord.y;
+      if ((int(x_217) < 90)) {
+        const int x_224 = data[2];
+        grey = (0.5f + (float(x_224) / 10.0f));
+      } else {
+        const float x_229 = gl_FragCoord.y;
+        if ((int(x_229) < 120)) {
+          const int x_236 = data[3];
+          grey = (0.5f + (float(x_236) / 10.0f));
+        } else {
+          const float x_241 = gl_FragCoord.y;
+          if ((int(x_241) < 150)) {
+            discard;
+          } else {
+            const float x_248 = gl_FragCoord.y;
+            if ((int(x_248) < 180)) {
+              const int x_255 = data[5];
+              grey = (0.5f + (float(x_255) / 10.0f));
+            } else {
+              const float x_260 = gl_FragCoord.y;
+              if ((int(x_260) < 210)) {
+                const int x_267 = data[6];
+                grey = (0.5f + (float(x_267) / 10.0f));
+              } else {
+                const float x_272 = gl_FragCoord.y;
+                if ((int(x_272) < 240)) {
+                  const int x_279 = data[7];
+                  grey = (0.5f + (float(x_279) / 10.0f));
+                } else {
+                  const float x_284 = gl_FragCoord.y;
+                  if ((int(x_284) < 270)) {
+                    const int x_291 = data[8];
+                    grey = (0.5f + (float(x_291) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_295 = grey;
+  const float3 x_296 = float3(x_295, x_295, x_295);
+  x_GLF_color = float4(x_296.x, x_296.y, x_296.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.msl
new file mode 100644
index 0000000..a550d0f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.msl
@@ -0,0 +1,369 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_302 = *(from);
+  k = x_302;
+  int const x_303 = *(from);
+  i = x_303;
+  int const x_304 = *(mid);
+  j = (x_304 + 1);
+  while (true) {
+    int const x_310 = i;
+    int const x_311 = *(mid);
+    int const x_313 = j;
+    int const x_314 = *(to);
+    if (((x_310 <= x_311) && (x_313 <= x_314))) {
+    } else {
+      break;
+    }
+    int const x_318 = i;
+    int const x_320 = (*(tint_symbol_5)).arr[x_318];
+    int const x_321 = j;
+    int const x_323 = (*(tint_symbol_5)).arr[x_321];
+    if ((x_320 < x_323)) {
+      int const x_328 = k;
+      k = (x_328 + 1);
+      int const x_330 = i;
+      i = (x_330 + 1);
+      int const x_333 = (*(tint_symbol_5)).arr[x_330];
+      (*(tint_symbol_6)).arr[x_328] = x_333;
+    } else {
+      int const x_335 = k;
+      k = (x_335 + 1);
+      int const x_337 = j;
+      j = (x_337 + 1);
+      int const x_340 = (*(tint_symbol_5)).arr[x_337];
+      (*(tint_symbol_6)).arr[x_335] = x_340;
+    }
+  }
+  while (true) {
+    int const x_346 = i;
+    int const x_348 = i;
+    int const x_349 = *(mid);
+    if (((x_346 < 10) && (x_348 <= x_349))) {
+    } else {
+      break;
+    }
+    int const x_353 = k;
+    k = (x_353 + 1);
+    int const x_355 = i;
+    i = (x_355 + 1);
+    int const x_358 = (*(tint_symbol_5)).arr[x_355];
+    (*(tint_symbol_6)).arr[x_353] = x_358;
+  }
+  int const x_360 = *(from);
+  i_1 = x_360;
+  while (true) {
+    int const x_365 = i_1;
+    int const x_366 = *(to);
+    if ((x_365 <= x_366)) {
+    } else {
+      break;
+    }
+    int const x_369 = i_1;
+    int const x_370 = i_1;
+    int const x_372 = (*(tint_symbol_6)).arr[x_370];
+    (*(tint_symbol_5)).arr[x_369] = x_372;
+    {
+      int const x_374 = i_1;
+      i_1 = (x_374 + 1);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int x_85 = 0;
+  int x_86 = 0;
+  int x_87 = 0;
+  int x_88 = 0;
+  int x_89 = 0;
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_96 = x_28.injectionSwitch.x;
+  i_3 = int(x_96);
+  while (true) {
+    int const x_102 = i_3;
+    switch(x_102) {
+      case 9: {
+        int const x_132 = i_3;
+        (*(tint_symbol_7)).arr[x_132] = -5;
+        break;
+      }
+      case 8: {
+        int const x_130 = i_3;
+        (*(tint_symbol_7)).arr[x_130] = -4;
+        break;
+      }
+      case 7: {
+        int const x_128 = i_3;
+        (*(tint_symbol_7)).arr[x_128] = -3;
+        break;
+      }
+      case 6: {
+        int const x_126 = i_3;
+        (*(tint_symbol_7)).arr[x_126] = -2;
+        break;
+      }
+      case 5: {
+        int const x_124 = i_3;
+        (*(tint_symbol_7)).arr[x_124] = -1;
+        break;
+      }
+      case 4: {
+        int const x_122 = i_3;
+        (*(tint_symbol_7)).arr[x_122] = 0;
+        break;
+      }
+      case 3: {
+        int const x_120 = i_3;
+        (*(tint_symbol_7)).arr[x_120] = 1;
+        break;
+      }
+      case 2: {
+        int const x_118 = i_3;
+        (*(tint_symbol_7)).arr[x_118] = 2;
+        break;
+      }
+      case 1: {
+        int const x_116 = i_3;
+        (*(tint_symbol_7)).arr[x_116] = 3;
+        break;
+      }
+      case 0: {
+        int const x_114 = i_3;
+        (*(tint_symbol_7)).arr[x_114] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_134 = i_3;
+    i_3 = (x_134 + 1);
+    {
+      int const x_136 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_142 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    int const x_145 = j_1;
+    int const x_146 = j_1;
+    int const x_148 = (*(tint_symbol_7)).arr[x_146];
+    (*(tint_symbol_8)).arr[x_145] = x_148;
+    {
+      int const x_150 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  while (true) {
+    int const x_156 = x_92;
+    int const x_157 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    int const x_160 = x_94;
+    x_91 = x_160;
+    while (true) {
+      int const x_165 = x_91;
+      int const x_166 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      int const x_169 = x_91;
+      x_90 = x_169;
+      int const x_170 = x_91;
+      int const x_171 = x_92;
+      x_89 = ((x_170 + x_171) - 1);
+      int const x_174 = x_91;
+      int const x_175 = x_92;
+      int const x_179 = x_93;
+      x_88 = min(((x_174 + (2 * x_175)) - 1), x_179);
+      int const x_181 = x_90;
+      x_87 = x_181;
+      int const x_182 = x_89;
+      x_86 = x_182;
+      int const x_183 = x_88;
+      x_85 = x_183;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_185 = x_92;
+        int const x_187 = x_91;
+        x_91 = (x_187 + (2 * x_185));
+      }
+    }
+    {
+      int const x_189 = x_92;
+      x_92 = (2 * x_189);
+    }
+  }
+  float const x_193 = (*(tint_symbol_9)).y;
+  if ((int(x_193) < 30)) {
+    int const x_200 = (*(tint_symbol_7)).arr[0];
+    grey = (0.5f + (float(x_200) / 10.0f));
+  } else {
+    float const x_205 = (*(tint_symbol_9)).y;
+    if ((int(x_205) < 60)) {
+      int const x_212 = (*(tint_symbol_7)).arr[1];
+      grey = (0.5f + (float(x_212) / 10.0f));
+    } else {
+      float const x_217 = (*(tint_symbol_9)).y;
+      if ((int(x_217) < 90)) {
+        int const x_224 = (*(tint_symbol_7)).arr[2];
+        grey = (0.5f + (float(x_224) / 10.0f));
+      } else {
+        float const x_229 = (*(tint_symbol_9)).y;
+        if ((int(x_229) < 120)) {
+          int const x_236 = (*(tint_symbol_7)).arr[3];
+          grey = (0.5f + (float(x_236) / 10.0f));
+        } else {
+          float const x_241 = (*(tint_symbol_9)).y;
+          if ((int(x_241) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_248 = (*(tint_symbol_9)).y;
+            if ((int(x_248) < 180)) {
+              int const x_255 = (*(tint_symbol_7)).arr[5];
+              grey = (0.5f + (float(x_255) / 10.0f));
+            } else {
+              float const x_260 = (*(tint_symbol_9)).y;
+              if ((int(x_260) < 210)) {
+                int const x_267 = (*(tint_symbol_7)).arr[6];
+                grey = (0.5f + (float(x_267) / 10.0f));
+              } else {
+                float const x_272 = (*(tint_symbol_9)).y;
+                if ((int(x_272) < 240)) {
+                  int const x_279 = (*(tint_symbol_7)).arr[7];
+                  grey = (0.5f + (float(x_279) / 10.0f));
+                } else {
+                  float const x_284 = (*(tint_symbol_9)).y;
+                  if ((int(x_284) < 270)) {
+                    int const x_291 = (*(tint_symbol_7)).arr[8];
+                    grey = (0.5f + (float(x_291) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_295 = grey;
+  float3 const x_296 = float3(x_295, x_295, x_295);
+  *(tint_symbol_10) = float4(x_296.x, x_296.y, x_296.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread tint_array_wrapper tint_symbol_12 = {};
+  thread tint_array_wrapper tint_symbol_13 = {};
+  thread float4 tint_symbol_14 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_11), &(tint_symbol_14));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_14};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_15, thread tint_array_wrapper* const tint_symbol_16) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_381 = m;
+    int const x_382 = high;
+    if ((x_381 <= x_382)) {
+    } else {
+      break;
+    }
+    int const x_385 = low;
+    i_2 = x_385;
+    while (true) {
+      int const x_390 = i_2;
+      int const x_391 = high;
+      if ((x_390 < x_391)) {
+      } else {
+        break;
+      }
+      int const x_394 = i_2;
+      from_1 = x_394;
+      int const x_395 = i_2;
+      int const x_396 = m;
+      mid_1 = ((x_395 + x_396) - 1);
+      int const x_399 = i_2;
+      int const x_400 = m;
+      int const x_404 = high;
+      to_1 = min(((x_399 + (2 * x_400)) - 1), x_404);
+      int const x_406 = from_1;
+      param = x_406;
+      int const x_407 = mid_1;
+      param_1 = x_407;
+      int const x_408 = to_1;
+      param_2 = x_408;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_15, tint_symbol_16);
+      {
+        int const x_410 = m;
+        int const x_412 = i_2;
+        i_2 = (x_412 + (2 * x_410));
+      }
+    }
+    {
+      int const x_414 = m;
+      m = (2 * x_414);
+    }
+  }
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.spvasm
new file mode 100644
index 0000000..5cce2a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.spvasm
@@ -0,0 +1,741 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 471
+; Schema: 0
+               OpCapability Shader
+        %255 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %main_1 "main_1"
+               OpName %x_85 "x_85"
+               OpName %x_86 "x_86"
+               OpName %x_87 "x_87"
+               OpName %x_88 "x_88"
+               OpName %x_89 "x_89"
+               OpName %x_90 "x_90"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+        %149 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %400 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %134 = OpLabel
+       %x_85 = OpVariable %_ptr_Function_int Function %32
+       %x_86 = OpVariable %_ptr_Function_int Function %32
+       %x_87 = OpVariable %_ptr_Function_int Function %32
+       %x_88 = OpVariable %_ptr_Function_int Function %32
+       %x_89 = OpVariable %_ptr_Function_int Function %32
+       %x_90 = OpVariable %_ptr_Function_int Function %32
+       %x_91 = OpVariable %_ptr_Function_int Function %32
+       %x_92 = OpVariable %_ptr_Function_int Function %32
+       %x_93 = OpVariable %_ptr_Function_int Function %32
+       %x_94 = OpVariable %_ptr_Function_int Function %32
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %149
+        %152 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpConvertFToS %int %153
+               OpStore %i_3 %154
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+        %159 = OpLoad %int %i_3
+               OpSelectionMerge %160 None
+               OpSwitch %159 %161 9 %162 8 %163 7 %164 6 %165 5 %166 4 %167 3 %168 2 %169 1 %170 0 %171
+        %162 = OpLabel
+        %172 = OpLoad %int %i_3
+        %173 = OpAccessChain %_ptr_Private_int %data %172
+               OpStore %173 %int_n5
+               OpBranch %160
+        %163 = OpLabel
+        %175 = OpLoad %int %i_3
+        %176 = OpAccessChain %_ptr_Private_int %data %175
+               OpStore %176 %int_n4
+               OpBranch %160
+        %164 = OpLabel
+        %178 = OpLoad %int %i_3
+        %179 = OpAccessChain %_ptr_Private_int %data %178
+               OpStore %179 %int_n3
+               OpBranch %160
+        %165 = OpLabel
+        %181 = OpLoad %int %i_3
+        %182 = OpAccessChain %_ptr_Private_int %data %181
+               OpStore %182 %int_n2
+               OpBranch %160
+        %166 = OpLabel
+        %184 = OpLoad %int %i_3
+        %185 = OpAccessChain %_ptr_Private_int %data %184
+               OpStore %185 %int_n1
+               OpBranch %160
+        %167 = OpLabel
+        %187 = OpLoad %int %i_3
+        %188 = OpAccessChain %_ptr_Private_int %data %187
+               OpStore %188 %int_0
+               OpBranch %160
+        %168 = OpLabel
+        %190 = OpLoad %int %i_3
+        %191 = OpAccessChain %_ptr_Private_int %data %190
+               OpStore %191 %int_1
+               OpBranch %160
+        %169 = OpLabel
+        %192 = OpLoad %int %i_3
+        %193 = OpAccessChain %_ptr_Private_int %data %192
+               OpStore %193 %int_2
+               OpBranch %160
+        %170 = OpLabel
+        %195 = OpLoad %int %i_3
+        %196 = OpAccessChain %_ptr_Private_int %data %195
+               OpStore %196 %int_3
+               OpBranch %160
+        %171 = OpLabel
+        %198 = OpLoad %int %i_3
+        %199 = OpAccessChain %_ptr_Private_int %data %198
+               OpStore %199 %int_4
+               OpBranch %160
+        %161 = OpLabel
+               OpBranch %160
+        %160 = OpLabel
+        %201 = OpLoad %int %i_3
+        %202 = OpIAdd %int %201 %int_1
+               OpStore %i_3 %202
+               OpBranch %157
+        %157 = OpLabel
+        %203 = OpLoad %int %i_3
+        %204 = OpSLessThan %bool %203 %int_10
+               OpSelectionMerge %205 None
+               OpBranchConditional %204 %206 %207
+        %206 = OpLabel
+               OpBranch %205
+        %207 = OpLabel
+               OpBranch %156
+        %205 = OpLabel
+               OpBranch %155
+        %156 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %j_1
+        %213 = OpSLessThan %bool %212 %int_10
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %209
+        %214 = OpLabel
+        %217 = OpLoad %int %j_1
+        %218 = OpLoad %int %j_1
+        %219 = OpAccessChain %_ptr_Private_int %data %218
+        %220 = OpLoad %int %219
+        %221 = OpAccessChain %_ptr_Private_int %temp %217
+               OpStore %221 %220
+               OpBranch %210
+        %210 = OpLabel
+        %222 = OpLoad %int %j_1
+        %223 = OpIAdd %int %222 %int_1
+               OpStore %j_1 %223
+               OpBranch %208
+        %209 = OpLabel
+               OpStore %x_94 %int_0
+               OpStore %x_93 %int_9
+               OpStore %x_92 %int_1
+               OpBranch %225
+        %225 = OpLabel
+               OpLoopMerge %226 %227 None
+               OpBranch %228
+        %228 = OpLabel
+        %229 = OpLoad %int %x_92
+        %230 = OpLoad %int %x_93
+        %231 = OpSLessThanEqual %bool %229 %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %234
+        %233 = OpLabel
+               OpBranch %232
+        %234 = OpLabel
+               OpBranch %226
+        %232 = OpLabel
+        %235 = OpLoad %int %x_94
+               OpStore %x_91 %235
+               OpBranch %236
+        %236 = OpLabel
+               OpLoopMerge %237 %238 None
+               OpBranch %239
+        %239 = OpLabel
+        %240 = OpLoad %int %x_91
+        %241 = OpLoad %int %x_93
+        %242 = OpSLessThan %bool %240 %241
+               OpSelectionMerge %243 None
+               OpBranchConditional %242 %244 %245
+        %244 = OpLabel
+               OpBranch %243
+        %245 = OpLabel
+               OpBranch %237
+        %243 = OpLabel
+        %246 = OpLoad %int %x_91
+               OpStore %x_90 %246
+        %247 = OpLoad %int %x_91
+        %248 = OpLoad %int %x_92
+        %249 = OpIAdd %int %247 %248
+        %250 = OpISub %int %249 %int_1
+               OpStore %x_89 %250
+        %251 = OpLoad %int %x_91
+        %252 = OpLoad %int %x_92
+        %253 = OpLoad %int %x_93
+        %256 = OpIMul %int %int_2 %252
+        %257 = OpIAdd %int %251 %256
+        %258 = OpISub %int %257 %int_1
+        %254 = OpExtInst %int %255 SMin %258 %253
+               OpStore %x_88 %254
+        %259 = OpLoad %int %x_90
+               OpStore %x_87 %259
+        %260 = OpLoad %int %x_89
+               OpStore %x_86 %260
+        %261 = OpLoad %int %x_88
+               OpStore %x_85 %261
+        %262 = OpFunctionCall %void %merge_i1_i1_i1_ %x_87 %x_86 %x_85
+               OpBranch %238
+        %238 = OpLabel
+        %266 = OpLoad %int %x_92
+        %267 = OpLoad %int %x_91
+        %268 = OpIMul %int %int_2 %266
+        %269 = OpIAdd %int %267 %268
+               OpStore %x_91 %269
+               OpBranch %236
+        %237 = OpLabel
+               OpBranch %227
+        %227 = OpLabel
+        %270 = OpLoad %int %x_92
+        %271 = OpIMul %int %int_2 %270
+               OpStore %x_92 %271
+               OpBranch %225
+        %226 = OpLabel
+        %274 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %275 = OpLoad %float %274
+        %276 = OpConvertFToS %int %275
+        %278 = OpSLessThan %bool %276 %int_30
+               OpSelectionMerge %279 None
+               OpBranchConditional %278 %280 %281
+        %280 = OpLabel
+        %282 = OpAccessChain %_ptr_Private_int %data %int_0
+        %283 = OpLoad %int %282
+        %285 = OpConvertSToF %float %283
+        %287 = OpFDiv %float %285 %float_10
+        %288 = OpFAdd %float %float_0_5 %287
+               OpStore %grey %288
+               OpBranch %279
+        %281 = OpLabel
+        %289 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %290 = OpLoad %float %289
+        %291 = OpConvertFToS %int %290
+        %293 = OpSLessThan %bool %291 %int_60
+               OpSelectionMerge %294 None
+               OpBranchConditional %293 %295 %296
+        %295 = OpLabel
+        %297 = OpAccessChain %_ptr_Private_int %data %int_1
+        %298 = OpLoad %int %297
+        %299 = OpConvertSToF %float %298
+        %300 = OpFDiv %float %299 %float_10
+        %301 = OpFAdd %float %float_0_5 %300
+               OpStore %grey %301
+               OpBranch %294
+        %296 = OpLabel
+        %302 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %303 = OpLoad %float %302
+        %304 = OpConvertFToS %int %303
+        %306 = OpSLessThan %bool %304 %int_90
+               OpSelectionMerge %307 None
+               OpBranchConditional %306 %308 %309
+        %308 = OpLabel
+        %310 = OpAccessChain %_ptr_Private_int %data %int_2
+        %311 = OpLoad %int %310
+        %312 = OpConvertSToF %float %311
+        %313 = OpFDiv %float %312 %float_10
+        %314 = OpFAdd %float %float_0_5 %313
+               OpStore %grey %314
+               OpBranch %307
+        %309 = OpLabel
+        %315 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpConvertFToS %int %316
+        %319 = OpSLessThan %bool %317 %int_120
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %322
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Private_int %data %int_3
+        %324 = OpLoad %int %323
+        %325 = OpConvertSToF %float %324
+        %326 = OpFDiv %float %325 %float_10
+        %327 = OpFAdd %float %float_0_5 %326
+               OpStore %grey %327
+               OpBranch %320
+        %322 = OpLabel
+        %328 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %329 = OpLoad %float %328
+        %330 = OpConvertFToS %int %329
+        %332 = OpSLessThan %bool %330 %int_150
+               OpSelectionMerge %333 None
+               OpBranchConditional %332 %334 %335
+        %334 = OpLabel
+               OpKill
+        %335 = OpLabel
+        %336 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %337 = OpLoad %float %336
+        %338 = OpConvertFToS %int %337
+        %340 = OpSLessThan %bool %338 %int_180
+               OpSelectionMerge %341 None
+               OpBranchConditional %340 %342 %343
+        %342 = OpLabel
+        %345 = OpAccessChain %_ptr_Private_int %data %int_5
+        %346 = OpLoad %int %345
+        %347 = OpConvertSToF %float %346
+        %348 = OpFDiv %float %347 %float_10
+        %349 = OpFAdd %float %float_0_5 %348
+               OpStore %grey %349
+               OpBranch %341
+        %343 = OpLabel
+        %350 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %351 = OpLoad %float %350
+        %352 = OpConvertFToS %int %351
+        %354 = OpSLessThan %bool %352 %int_210
+               OpSelectionMerge %355 None
+               OpBranchConditional %354 %356 %357
+        %356 = OpLabel
+        %359 = OpAccessChain %_ptr_Private_int %data %int_6
+        %360 = OpLoad %int %359
+        %361 = OpConvertSToF %float %360
+        %362 = OpFDiv %float %361 %float_10
+        %363 = OpFAdd %float %float_0_5 %362
+               OpStore %grey %363
+               OpBranch %355
+        %357 = OpLabel
+        %364 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %365 = OpLoad %float %364
+        %366 = OpConvertFToS %int %365
+        %368 = OpSLessThan %bool %366 %int_240
+               OpSelectionMerge %369 None
+               OpBranchConditional %368 %370 %371
+        %370 = OpLabel
+        %373 = OpAccessChain %_ptr_Private_int %data %int_7
+        %374 = OpLoad %int %373
+        %375 = OpConvertSToF %float %374
+        %376 = OpFDiv %float %375 %float_10
+        %377 = OpFAdd %float %float_0_5 %376
+               OpStore %grey %377
+               OpBranch %369
+        %371 = OpLabel
+        %378 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %379 = OpLoad %float %378
+        %380 = OpConvertFToS %int %379
+        %382 = OpSLessThan %bool %380 %int_270
+               OpSelectionMerge %383 None
+               OpBranchConditional %382 %384 %385
+        %384 = OpLabel
+        %387 = OpAccessChain %_ptr_Private_int %data %int_8
+        %388 = OpLoad %int %387
+        %389 = OpConvertSToF %float %388
+        %390 = OpFDiv %float %389 %float_10
+        %391 = OpFAdd %float %float_0_5 %390
+               OpStore %grey %391
+               OpBranch %383
+        %385 = OpLabel
+               OpKill
+        %383 = OpLabel
+               OpBranch %369
+        %369 = OpLabel
+               OpBranch %355
+        %355 = OpLabel
+               OpBranch %341
+        %341 = OpLabel
+               OpBranch %333
+        %333 = OpLabel
+               OpBranch %320
+        %320 = OpLabel
+               OpBranch %307
+        %307 = OpLabel
+               OpBranch %294
+        %294 = OpLabel
+               OpBranch %279
+        %279 = OpLabel
+        %392 = OpLoad %float %grey
+        %394 = OpCompositeConstruct %v3float %392 %392 %392
+        %395 = OpCompositeExtract %float %394 0
+        %396 = OpCompositeExtract %float %394 1
+        %397 = OpCompositeExtract %float %394 2
+        %399 = OpCompositeConstruct %v4float %395 %396 %397 %float_1
+               OpStore %x_GLF_color %399
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %400
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %404 = OpLabel
+        %405 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %405
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %407 = OpLabel
+        %408 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %408
+        %409 = OpFunctionCall %void %main_1
+        %411 = OpLoad %v4float %x_GLF_color
+        %412 = OpCompositeConstruct %main_out %411
+        %410 = OpFunctionCall %void %tint_symbol_3 %412
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %414 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %425
+        %425 = OpLabel
+               OpLoopMerge %426 %427 None
+               OpBranch %428
+        %428 = OpLabel
+        %429 = OpLoad %int %m
+        %430 = OpLoad %int %high
+        %431 = OpSLessThanEqual %bool %429 %430
+               OpSelectionMerge %432 None
+               OpBranchConditional %431 %433 %434
+        %433 = OpLabel
+               OpBranch %432
+        %434 = OpLabel
+               OpBranch %426
+        %432 = OpLabel
+        %435 = OpLoad %int %low
+               OpStore %i_2 %435
+               OpBranch %436
+        %436 = OpLabel
+               OpLoopMerge %437 %438 None
+               OpBranch %439
+        %439 = OpLabel
+        %440 = OpLoad %int %i_2
+        %441 = OpLoad %int %high
+        %442 = OpSLessThan %bool %440 %441
+               OpSelectionMerge %443 None
+               OpBranchConditional %442 %444 %445
+        %444 = OpLabel
+               OpBranch %443
+        %445 = OpLabel
+               OpBranch %437
+        %443 = OpLabel
+        %446 = OpLoad %int %i_2
+               OpStore %from_1 %446
+        %447 = OpLoad %int %i_2
+        %448 = OpLoad %int %m
+        %449 = OpIAdd %int %447 %448
+        %450 = OpISub %int %449 %int_1
+               OpStore %mid_1 %450
+        %451 = OpLoad %int %i_2
+        %452 = OpLoad %int %m
+        %453 = OpLoad %int %high
+        %455 = OpIMul %int %int_2 %452
+        %456 = OpIAdd %int %451 %455
+        %457 = OpISub %int %456 %int_1
+        %454 = OpExtInst %int %255 SMin %457 %453
+               OpStore %to_1 %454
+        %458 = OpLoad %int %from_1
+               OpStore %param %458
+        %459 = OpLoad %int %mid_1
+               OpStore %param_1 %459
+        %460 = OpLoad %int %to_1
+               OpStore %param_2 %460
+        %461 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %438
+        %438 = OpLabel
+        %465 = OpLoad %int %m
+        %466 = OpLoad %int %i_2
+        %467 = OpIMul %int %int_2 %465
+        %468 = OpIAdd %int %466 %467
+               OpStore %i_2 %468
+               OpBranch %436
+        %437 = OpLabel
+               OpBranch %427
+        %427 = OpLabel
+        %469 = OpLoad %int %m
+        %470 = OpIMul %int %int_2 %469
+               OpStore %m %470
+               OpBranch %425
+        %426 = OpLabel
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 157[%157] is not post dominated by the back-edge block 205[%205]
+  %205 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.wgsl
new file mode 100644
index 0000000..57c9c29
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.spvasm.expected.wgsl
@@ -0,0 +1,363 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_302 : i32 = *(from);
+  k = x_302;
+  let x_303 : i32 = *(from);
+  i = x_303;
+  let x_304 : i32 = *(mid);
+  j = (x_304 + 1);
+  loop {
+    let x_310 : i32 = i;
+    let x_311 : i32 = *(mid);
+    let x_313 : i32 = j;
+    let x_314 : i32 = *(to);
+    if (((x_310 <= x_311) && (x_313 <= x_314))) {
+    } else {
+      break;
+    }
+    let x_318 : i32 = i;
+    let x_320 : i32 = data[x_318];
+    let x_321 : i32 = j;
+    let x_323 : i32 = data[x_321];
+    if ((x_320 < x_323)) {
+      let x_328 : i32 = k;
+      k = (x_328 + 1);
+      let x_330 : i32 = i;
+      i = (x_330 + 1);
+      let x_333 : i32 = data[x_330];
+      temp[x_328] = x_333;
+    } else {
+      let x_335 : i32 = k;
+      k = (x_335 + 1);
+      let x_337 : i32 = j;
+      j = (x_337 + 1);
+      let x_340 : i32 = data[x_337];
+      temp[x_335] = x_340;
+    }
+  }
+  loop {
+    let x_346 : i32 = i;
+    let x_348 : i32 = i;
+    let x_349 : i32 = *(mid);
+    if (((x_346 < 10) && (x_348 <= x_349))) {
+    } else {
+      break;
+    }
+    let x_353 : i32 = k;
+    k = (x_353 + 1);
+    let x_355 : i32 = i;
+    i = (x_355 + 1);
+    let x_358 : i32 = data[x_355];
+    temp[x_353] = x_358;
+  }
+  let x_360 : i32 = *(from);
+  i_1 = x_360;
+  loop {
+    let x_365 : i32 = i_1;
+    let x_366 : i32 = *(to);
+    if ((x_365 <= x_366)) {
+    } else {
+      break;
+    }
+    let x_369 : i32 = i_1;
+    let x_370 : i32 = i_1;
+    let x_372 : i32 = temp[x_370];
+    data[x_369] = x_372;
+
+    continuing {
+      let x_374 : i32 = i_1;
+      i_1 = (x_374 + 1);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var x_85 : i32;
+  var x_86 : i32;
+  var x_87 : i32;
+  var x_88 : i32;
+  var x_89 : i32;
+  var x_90 : i32;
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : i32;
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_96 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_96);
+  loop {
+    let x_102 : i32 = i_3;
+    switch(x_102) {
+      case 9: {
+        let x_132 : i32 = i_3;
+        data[x_132] = -5;
+      }
+      case 8: {
+        let x_130 : i32 = i_3;
+        data[x_130] = -4;
+      }
+      case 7: {
+        let x_128 : i32 = i_3;
+        data[x_128] = -3;
+      }
+      case 6: {
+        let x_126 : i32 = i_3;
+        data[x_126] = -2;
+      }
+      case 5: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -1;
+      }
+      case 4: {
+        let x_122 : i32 = i_3;
+        data[x_122] = 0;
+      }
+      case 3: {
+        let x_120 : i32 = i_3;
+        data[x_120] = 1;
+      }
+      case 2: {
+        let x_118 : i32 = i_3;
+        data[x_118] = 2;
+      }
+      case 1: {
+        let x_116 : i32 = i_3;
+        data[x_116] = 3;
+      }
+      case 0: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 4;
+      }
+      default: {
+      }
+    }
+    let x_134 : i32 = i_3;
+    i_3 = (x_134 + 1);
+
+    continuing {
+      let x_136 : i32 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_142 : i32 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    let x_145 : i32 = j_1;
+    let x_146 : i32 = j_1;
+    let x_148 : i32 = data[x_146];
+    temp[x_145] = x_148;
+
+    continuing {
+      let x_150 : i32 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  loop {
+    let x_156 : i32 = x_92;
+    let x_157 : i32 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    let x_160 : i32 = x_94;
+    x_91 = x_160;
+    loop {
+      let x_165 : i32 = x_91;
+      let x_166 : i32 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      let x_169 : i32 = x_91;
+      x_90 = x_169;
+      let x_170 : i32 = x_91;
+      let x_171 : i32 = x_92;
+      x_89 = ((x_170 + x_171) - 1);
+      let x_174 : i32 = x_91;
+      let x_175 : i32 = x_92;
+      let x_179 : i32 = x_93;
+      x_88 = min(((x_174 + (2 * x_175)) - 1), x_179);
+      let x_181 : i32 = x_90;
+      x_87 = x_181;
+      let x_182 : i32 = x_89;
+      x_86 = x_182;
+      let x_183 : i32 = x_88;
+      x_85 = x_183;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85));
+
+      continuing {
+        let x_185 : i32 = x_92;
+        let x_187 : i32 = x_91;
+        x_91 = (x_187 + (2 * x_185));
+      }
+    }
+
+    continuing {
+      let x_189 : i32 = x_92;
+      x_92 = (2 * x_189);
+    }
+  }
+  let x_193 : f32 = gl_FragCoord.y;
+  if ((i32(x_193) < 30)) {
+    let x_200 : i32 = data[0];
+    grey = (0.5 + (f32(x_200) / 10.0));
+  } else {
+    let x_205 : f32 = gl_FragCoord.y;
+    if ((i32(x_205) < 60)) {
+      let x_212 : i32 = data[1];
+      grey = (0.5 + (f32(x_212) / 10.0));
+    } else {
+      let x_217 : f32 = gl_FragCoord.y;
+      if ((i32(x_217) < 90)) {
+        let x_224 : i32 = data[2];
+        grey = (0.5 + (f32(x_224) / 10.0));
+      } else {
+        let x_229 : f32 = gl_FragCoord.y;
+        if ((i32(x_229) < 120)) {
+          let x_236 : i32 = data[3];
+          grey = (0.5 + (f32(x_236) / 10.0));
+        } else {
+          let x_241 : f32 = gl_FragCoord.y;
+          if ((i32(x_241) < 150)) {
+            discard;
+          } else {
+            let x_248 : f32 = gl_FragCoord.y;
+            if ((i32(x_248) < 180)) {
+              let x_255 : i32 = data[5];
+              grey = (0.5 + (f32(x_255) / 10.0));
+            } else {
+              let x_260 : f32 = gl_FragCoord.y;
+              if ((i32(x_260) < 210)) {
+                let x_267 : i32 = data[6];
+                grey = (0.5 + (f32(x_267) / 10.0));
+              } else {
+                let x_272 : f32 = gl_FragCoord.y;
+                if ((i32(x_272) < 240)) {
+                  let x_279 : i32 = data[7];
+                  grey = (0.5 + (f32(x_279) / 10.0));
+                } else {
+                  let x_284 : f32 = gl_FragCoord.y;
+                  if ((i32(x_284) < 270)) {
+                    let x_291 : i32 = data[8];
+                    grey = (0.5 + (f32(x_291) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_295 : f32 = grey;
+  let x_296 : vec3<f32> = vec3<f32>(x_295, x_295, x_295);
+  x_GLF_color = vec4<f32>(x_296.x, x_296.y, x_296.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_381 : i32 = m;
+    let x_382 : i32 = high;
+    if ((x_381 <= x_382)) {
+    } else {
+      break;
+    }
+    let x_385 : i32 = low;
+    i_2 = x_385;
+    loop {
+      let x_390 : i32 = i_2;
+      let x_391 : i32 = high;
+      if ((x_390 < x_391)) {
+      } else {
+        break;
+      }
+      let x_394 : i32 = i_2;
+      from_1 = x_394;
+      let x_395 : i32 = i_2;
+      let x_396 : i32 = m;
+      mid_1 = ((x_395 + x_396) - 1);
+      let x_399 : i32 = i_2;
+      let x_400 : i32 = m;
+      let x_404 : i32 = high;
+      to_1 = min(((x_399 + (2 * x_400)) - 1), x_404);
+      let x_406 : i32 = from_1;
+      param = x_406;
+      let x_407 : i32 = mid_1;
+      param_1 = x_407;
+      let x_408 : i32 = to_1;
+      param_2 = x_408;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_410 : i32 = m;
+        let x_412 : i32 = i_2;
+        i_2 = (x_412 + (2 * x_410));
+      }
+    }
+
+    continuing {
+      let x_414 : i32 = m;
+      m = (2 * x_414);
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
new file mode 100644
index 0000000..57c9c29
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
@@ -0,0 +1,363 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_302 : i32 = *(from);
+  k = x_302;
+  let x_303 : i32 = *(from);
+  i = x_303;
+  let x_304 : i32 = *(mid);
+  j = (x_304 + 1);
+  loop {
+    let x_310 : i32 = i;
+    let x_311 : i32 = *(mid);
+    let x_313 : i32 = j;
+    let x_314 : i32 = *(to);
+    if (((x_310 <= x_311) && (x_313 <= x_314))) {
+    } else {
+      break;
+    }
+    let x_318 : i32 = i;
+    let x_320 : i32 = data[x_318];
+    let x_321 : i32 = j;
+    let x_323 : i32 = data[x_321];
+    if ((x_320 < x_323)) {
+      let x_328 : i32 = k;
+      k = (x_328 + 1);
+      let x_330 : i32 = i;
+      i = (x_330 + 1);
+      let x_333 : i32 = data[x_330];
+      temp[x_328] = x_333;
+    } else {
+      let x_335 : i32 = k;
+      k = (x_335 + 1);
+      let x_337 : i32 = j;
+      j = (x_337 + 1);
+      let x_340 : i32 = data[x_337];
+      temp[x_335] = x_340;
+    }
+  }
+  loop {
+    let x_346 : i32 = i;
+    let x_348 : i32 = i;
+    let x_349 : i32 = *(mid);
+    if (((x_346 < 10) && (x_348 <= x_349))) {
+    } else {
+      break;
+    }
+    let x_353 : i32 = k;
+    k = (x_353 + 1);
+    let x_355 : i32 = i;
+    i = (x_355 + 1);
+    let x_358 : i32 = data[x_355];
+    temp[x_353] = x_358;
+  }
+  let x_360 : i32 = *(from);
+  i_1 = x_360;
+  loop {
+    let x_365 : i32 = i_1;
+    let x_366 : i32 = *(to);
+    if ((x_365 <= x_366)) {
+    } else {
+      break;
+    }
+    let x_369 : i32 = i_1;
+    let x_370 : i32 = i_1;
+    let x_372 : i32 = temp[x_370];
+    data[x_369] = x_372;
+
+    continuing {
+      let x_374 : i32 = i_1;
+      i_1 = (x_374 + 1);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var x_85 : i32;
+  var x_86 : i32;
+  var x_87 : i32;
+  var x_88 : i32;
+  var x_89 : i32;
+  var x_90 : i32;
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : i32;
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_96 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_96);
+  loop {
+    let x_102 : i32 = i_3;
+    switch(x_102) {
+      case 9: {
+        let x_132 : i32 = i_3;
+        data[x_132] = -5;
+      }
+      case 8: {
+        let x_130 : i32 = i_3;
+        data[x_130] = -4;
+      }
+      case 7: {
+        let x_128 : i32 = i_3;
+        data[x_128] = -3;
+      }
+      case 6: {
+        let x_126 : i32 = i_3;
+        data[x_126] = -2;
+      }
+      case 5: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -1;
+      }
+      case 4: {
+        let x_122 : i32 = i_3;
+        data[x_122] = 0;
+      }
+      case 3: {
+        let x_120 : i32 = i_3;
+        data[x_120] = 1;
+      }
+      case 2: {
+        let x_118 : i32 = i_3;
+        data[x_118] = 2;
+      }
+      case 1: {
+        let x_116 : i32 = i_3;
+        data[x_116] = 3;
+      }
+      case 0: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 4;
+      }
+      default: {
+      }
+    }
+    let x_134 : i32 = i_3;
+    i_3 = (x_134 + 1);
+
+    continuing {
+      let x_136 : i32 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_142 : i32 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    let x_145 : i32 = j_1;
+    let x_146 : i32 = j_1;
+    let x_148 : i32 = data[x_146];
+    temp[x_145] = x_148;
+
+    continuing {
+      let x_150 : i32 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  loop {
+    let x_156 : i32 = x_92;
+    let x_157 : i32 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    let x_160 : i32 = x_94;
+    x_91 = x_160;
+    loop {
+      let x_165 : i32 = x_91;
+      let x_166 : i32 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      let x_169 : i32 = x_91;
+      x_90 = x_169;
+      let x_170 : i32 = x_91;
+      let x_171 : i32 = x_92;
+      x_89 = ((x_170 + x_171) - 1);
+      let x_174 : i32 = x_91;
+      let x_175 : i32 = x_92;
+      let x_179 : i32 = x_93;
+      x_88 = min(((x_174 + (2 * x_175)) - 1), x_179);
+      let x_181 : i32 = x_90;
+      x_87 = x_181;
+      let x_182 : i32 = x_89;
+      x_86 = x_182;
+      let x_183 : i32 = x_88;
+      x_85 = x_183;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85));
+
+      continuing {
+        let x_185 : i32 = x_92;
+        let x_187 : i32 = x_91;
+        x_91 = (x_187 + (2 * x_185));
+      }
+    }
+
+    continuing {
+      let x_189 : i32 = x_92;
+      x_92 = (2 * x_189);
+    }
+  }
+  let x_193 : f32 = gl_FragCoord.y;
+  if ((i32(x_193) < 30)) {
+    let x_200 : i32 = data[0];
+    grey = (0.5 + (f32(x_200) / 10.0));
+  } else {
+    let x_205 : f32 = gl_FragCoord.y;
+    if ((i32(x_205) < 60)) {
+      let x_212 : i32 = data[1];
+      grey = (0.5 + (f32(x_212) / 10.0));
+    } else {
+      let x_217 : f32 = gl_FragCoord.y;
+      if ((i32(x_217) < 90)) {
+        let x_224 : i32 = data[2];
+        grey = (0.5 + (f32(x_224) / 10.0));
+      } else {
+        let x_229 : f32 = gl_FragCoord.y;
+        if ((i32(x_229) < 120)) {
+          let x_236 : i32 = data[3];
+          grey = (0.5 + (f32(x_236) / 10.0));
+        } else {
+          let x_241 : f32 = gl_FragCoord.y;
+          if ((i32(x_241) < 150)) {
+            discard;
+          } else {
+            let x_248 : f32 = gl_FragCoord.y;
+            if ((i32(x_248) < 180)) {
+              let x_255 : i32 = data[5];
+              grey = (0.5 + (f32(x_255) / 10.0));
+            } else {
+              let x_260 : f32 = gl_FragCoord.y;
+              if ((i32(x_260) < 210)) {
+                let x_267 : i32 = data[6];
+                grey = (0.5 + (f32(x_267) / 10.0));
+              } else {
+                let x_272 : f32 = gl_FragCoord.y;
+                if ((i32(x_272) < 240)) {
+                  let x_279 : i32 = data[7];
+                  grey = (0.5 + (f32(x_279) / 10.0));
+                } else {
+                  let x_284 : f32 = gl_FragCoord.y;
+                  if ((i32(x_284) < 270)) {
+                    let x_291 : i32 = data[8];
+                    grey = (0.5 + (f32(x_291) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_295 : f32 = grey;
+  let x_296 : vec3<f32> = vec3<f32>(x_295, x_295, x_295);
+  x_GLF_color = vec4<f32>(x_296.x, x_296.y, x_296.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_381 : i32 = m;
+    let x_382 : i32 = high;
+    if ((x_381 <= x_382)) {
+    } else {
+      break;
+    }
+    let x_385 : i32 = low;
+    i_2 = x_385;
+    loop {
+      let x_390 : i32 = i_2;
+      let x_391 : i32 = high;
+      if ((x_390 < x_391)) {
+      } else {
+        break;
+      }
+      let x_394 : i32 = i_2;
+      from_1 = x_394;
+      let x_395 : i32 = i_2;
+      let x_396 : i32 = m;
+      mid_1 = ((x_395 + x_396) - 1);
+      let x_399 : i32 = i_2;
+      let x_400 : i32 = m;
+      let x_404 : i32 = high;
+      to_1 = min(((x_399 + (2 * x_400)) - 1), x_404);
+      let x_406 : i32 = from_1;
+      param = x_406;
+      let x_407 : i32 = mid_1;
+      param_1 = x_407;
+      let x_408 : i32 = to_1;
+      param_2 = x_408;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_410 : i32 = m;
+        let x_412 : i32 = i_2;
+        i_2 = (x_412 + (2 * x_410));
+      }
+    }
+
+    continuing {
+      let x_414 : i32 = m;
+      m = (2 * x_414);
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.hlsl
new file mode 100644
index 0000000..30e945e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.hlsl
@@ -0,0 +1,296 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_302 = from;
+  k = x_302;
+  const int x_303 = from;
+  i = x_303;
+  const int x_304 = mid;
+  j = (x_304 + 1);
+  while (true) {
+    const int x_310 = i;
+    const int x_311 = mid;
+    const int x_313 = j;
+    const int x_314 = to;
+    bool tint_tmp = (x_310 <= x_311);
+    if (tint_tmp) {
+      tint_tmp = (x_313 <= x_314);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_320 = data[i];
+    const int x_323 = data[j];
+    if ((x_320 < x_323)) {
+      const int x_328 = k;
+      k = (x_328 + 1);
+      const int x_330 = i;
+      i = (x_330 + 1);
+      const int x_333 = data[x_330];
+      temp[x_328] = x_333;
+    } else {
+      const int x_335 = k;
+      k = (x_335 + 1);
+      const int x_337 = j;
+      j = (x_337 + 1);
+      const int x_340 = data[x_337];
+      temp[x_335] = x_340;
+    }
+  }
+  while (true) {
+    const int x_346 = i;
+    const int x_348 = i;
+    const int x_349 = mid;
+    bool tint_tmp_1 = (x_346 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_348 <= x_349);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_353 = k;
+    k = (x_353 + 1);
+    const int x_355 = i;
+    i = (x_355 + 1);
+    const int x_358 = data[x_355];
+    temp[x_353] = x_358;
+  }
+  const int x_360 = from;
+  i_1 = x_360;
+  while (true) {
+    const int x_365 = i_1;
+    const int x_366 = to;
+    if ((x_365 <= x_366)) {
+    } else {
+      break;
+    }
+    const int x_369 = i_1;
+    const int x_372 = temp[i_1];
+    data[x_369] = x_372;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int x_85 = 0;
+  int x_86 = 0;
+  int x_87 = 0;
+  int x_88 = 0;
+  int x_89 = 0;
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_96 = asfloat(x_28[0].x);
+  i_3 = int(x_96);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_145 = j_1;
+      const int x_148 = data[j_1];
+      temp[x_145] = x_148;
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  {
+    for(; (x_92 <= x_93); x_92 = (2 * x_92)) {
+      x_91 = x_94;
+      {
+        for(; (x_91 < x_93); x_91 = (x_91 + (2 * x_92))) {
+          x_90 = x_91;
+          x_89 = ((x_91 + x_92) - 1);
+          x_88 = min(((x_91 + (2 * x_92)) - 1), x_93);
+          x_87 = x_90;
+          x_86 = x_89;
+          x_85 = x_88;
+          merge_i1_i1_i1_(x_87, x_86, x_85);
+        }
+      }
+    }
+  }
+  const float x_193 = gl_FragCoord.y;
+  if ((int(x_193) < 30)) {
+    const int x_200 = data[0];
+    grey = (0.5f + (float(x_200) / 10.0f));
+  } else {
+    const float x_205 = gl_FragCoord.y;
+    if ((int(x_205) < 60)) {
+      const int x_212 = data[1];
+      grey = (0.5f + (float(x_212) / 10.0f));
+    } else {
+      const float x_217 = gl_FragCoord.y;
+      if ((int(x_217) < 90)) {
+        const int x_224 = data[2];
+        grey = (0.5f + (float(x_224) / 10.0f));
+      } else {
+        const float x_229 = gl_FragCoord.y;
+        if ((int(x_229) < 120)) {
+          const int x_236 = data[3];
+          grey = (0.5f + (float(x_236) / 10.0f));
+        } else {
+          const float x_241 = gl_FragCoord.y;
+          if ((int(x_241) < 150)) {
+            discard;
+          } else {
+            const float x_248 = gl_FragCoord.y;
+            if ((int(x_248) < 180)) {
+              const int x_255 = data[5];
+              grey = (0.5f + (float(x_255) / 10.0f));
+            } else {
+              const float x_260 = gl_FragCoord.y;
+              if ((int(x_260) < 210)) {
+                const int x_267 = data[6];
+                grey = (0.5f + (float(x_267) / 10.0f));
+              } else {
+                const float x_272 = gl_FragCoord.y;
+                if ((int(x_272) < 240)) {
+                  const int x_279 = data[7];
+                  grey = (0.5f + (float(x_279) / 10.0f));
+                } else {
+                  const float x_284 = gl_FragCoord.y;
+                  if ((int(x_284) < 270)) {
+                    const int x_291 = data[8];
+                    grey = (0.5f + (float(x_291) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_295 = grey;
+  const float3 x_296 = float3(x_295, x_295, x_295);
+  x_GLF_color = float4(x_296.x, x_296.y, x_296.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.msl
new file mode 100644
index 0000000..a550d0f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.msl
@@ -0,0 +1,369 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_302 = *(from);
+  k = x_302;
+  int const x_303 = *(from);
+  i = x_303;
+  int const x_304 = *(mid);
+  j = (x_304 + 1);
+  while (true) {
+    int const x_310 = i;
+    int const x_311 = *(mid);
+    int const x_313 = j;
+    int const x_314 = *(to);
+    if (((x_310 <= x_311) && (x_313 <= x_314))) {
+    } else {
+      break;
+    }
+    int const x_318 = i;
+    int const x_320 = (*(tint_symbol_5)).arr[x_318];
+    int const x_321 = j;
+    int const x_323 = (*(tint_symbol_5)).arr[x_321];
+    if ((x_320 < x_323)) {
+      int const x_328 = k;
+      k = (x_328 + 1);
+      int const x_330 = i;
+      i = (x_330 + 1);
+      int const x_333 = (*(tint_symbol_5)).arr[x_330];
+      (*(tint_symbol_6)).arr[x_328] = x_333;
+    } else {
+      int const x_335 = k;
+      k = (x_335 + 1);
+      int const x_337 = j;
+      j = (x_337 + 1);
+      int const x_340 = (*(tint_symbol_5)).arr[x_337];
+      (*(tint_symbol_6)).arr[x_335] = x_340;
+    }
+  }
+  while (true) {
+    int const x_346 = i;
+    int const x_348 = i;
+    int const x_349 = *(mid);
+    if (((x_346 < 10) && (x_348 <= x_349))) {
+    } else {
+      break;
+    }
+    int const x_353 = k;
+    k = (x_353 + 1);
+    int const x_355 = i;
+    i = (x_355 + 1);
+    int const x_358 = (*(tint_symbol_5)).arr[x_355];
+    (*(tint_symbol_6)).arr[x_353] = x_358;
+  }
+  int const x_360 = *(from);
+  i_1 = x_360;
+  while (true) {
+    int const x_365 = i_1;
+    int const x_366 = *(to);
+    if ((x_365 <= x_366)) {
+    } else {
+      break;
+    }
+    int const x_369 = i_1;
+    int const x_370 = i_1;
+    int const x_372 = (*(tint_symbol_6)).arr[x_370];
+    (*(tint_symbol_5)).arr[x_369] = x_372;
+    {
+      int const x_374 = i_1;
+      i_1 = (x_374 + 1);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int x_85 = 0;
+  int x_86 = 0;
+  int x_87 = 0;
+  int x_88 = 0;
+  int x_89 = 0;
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_96 = x_28.injectionSwitch.x;
+  i_3 = int(x_96);
+  while (true) {
+    int const x_102 = i_3;
+    switch(x_102) {
+      case 9: {
+        int const x_132 = i_3;
+        (*(tint_symbol_7)).arr[x_132] = -5;
+        break;
+      }
+      case 8: {
+        int const x_130 = i_3;
+        (*(tint_symbol_7)).arr[x_130] = -4;
+        break;
+      }
+      case 7: {
+        int const x_128 = i_3;
+        (*(tint_symbol_7)).arr[x_128] = -3;
+        break;
+      }
+      case 6: {
+        int const x_126 = i_3;
+        (*(tint_symbol_7)).arr[x_126] = -2;
+        break;
+      }
+      case 5: {
+        int const x_124 = i_3;
+        (*(tint_symbol_7)).arr[x_124] = -1;
+        break;
+      }
+      case 4: {
+        int const x_122 = i_3;
+        (*(tint_symbol_7)).arr[x_122] = 0;
+        break;
+      }
+      case 3: {
+        int const x_120 = i_3;
+        (*(tint_symbol_7)).arr[x_120] = 1;
+        break;
+      }
+      case 2: {
+        int const x_118 = i_3;
+        (*(tint_symbol_7)).arr[x_118] = 2;
+        break;
+      }
+      case 1: {
+        int const x_116 = i_3;
+        (*(tint_symbol_7)).arr[x_116] = 3;
+        break;
+      }
+      case 0: {
+        int const x_114 = i_3;
+        (*(tint_symbol_7)).arr[x_114] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_134 = i_3;
+    i_3 = (x_134 + 1);
+    {
+      int const x_136 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_142 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    int const x_145 = j_1;
+    int const x_146 = j_1;
+    int const x_148 = (*(tint_symbol_7)).arr[x_146];
+    (*(tint_symbol_8)).arr[x_145] = x_148;
+    {
+      int const x_150 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  while (true) {
+    int const x_156 = x_92;
+    int const x_157 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    int const x_160 = x_94;
+    x_91 = x_160;
+    while (true) {
+      int const x_165 = x_91;
+      int const x_166 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      int const x_169 = x_91;
+      x_90 = x_169;
+      int const x_170 = x_91;
+      int const x_171 = x_92;
+      x_89 = ((x_170 + x_171) - 1);
+      int const x_174 = x_91;
+      int const x_175 = x_92;
+      int const x_179 = x_93;
+      x_88 = min(((x_174 + (2 * x_175)) - 1), x_179);
+      int const x_181 = x_90;
+      x_87 = x_181;
+      int const x_182 = x_89;
+      x_86 = x_182;
+      int const x_183 = x_88;
+      x_85 = x_183;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_185 = x_92;
+        int const x_187 = x_91;
+        x_91 = (x_187 + (2 * x_185));
+      }
+    }
+    {
+      int const x_189 = x_92;
+      x_92 = (2 * x_189);
+    }
+  }
+  float const x_193 = (*(tint_symbol_9)).y;
+  if ((int(x_193) < 30)) {
+    int const x_200 = (*(tint_symbol_7)).arr[0];
+    grey = (0.5f + (float(x_200) / 10.0f));
+  } else {
+    float const x_205 = (*(tint_symbol_9)).y;
+    if ((int(x_205) < 60)) {
+      int const x_212 = (*(tint_symbol_7)).arr[1];
+      grey = (0.5f + (float(x_212) / 10.0f));
+    } else {
+      float const x_217 = (*(tint_symbol_9)).y;
+      if ((int(x_217) < 90)) {
+        int const x_224 = (*(tint_symbol_7)).arr[2];
+        grey = (0.5f + (float(x_224) / 10.0f));
+      } else {
+        float const x_229 = (*(tint_symbol_9)).y;
+        if ((int(x_229) < 120)) {
+          int const x_236 = (*(tint_symbol_7)).arr[3];
+          grey = (0.5f + (float(x_236) / 10.0f));
+        } else {
+          float const x_241 = (*(tint_symbol_9)).y;
+          if ((int(x_241) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_248 = (*(tint_symbol_9)).y;
+            if ((int(x_248) < 180)) {
+              int const x_255 = (*(tint_symbol_7)).arr[5];
+              grey = (0.5f + (float(x_255) / 10.0f));
+            } else {
+              float const x_260 = (*(tint_symbol_9)).y;
+              if ((int(x_260) < 210)) {
+                int const x_267 = (*(tint_symbol_7)).arr[6];
+                grey = (0.5f + (float(x_267) / 10.0f));
+              } else {
+                float const x_272 = (*(tint_symbol_9)).y;
+                if ((int(x_272) < 240)) {
+                  int const x_279 = (*(tint_symbol_7)).arr[7];
+                  grey = (0.5f + (float(x_279) / 10.0f));
+                } else {
+                  float const x_284 = (*(tint_symbol_9)).y;
+                  if ((int(x_284) < 270)) {
+                    int const x_291 = (*(tint_symbol_7)).arr[8];
+                    grey = (0.5f + (float(x_291) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_295 = grey;
+  float3 const x_296 = float3(x_295, x_295, x_295);
+  *(tint_symbol_10) = float4(x_296.x, x_296.y, x_296.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread tint_array_wrapper tint_symbol_12 = {};
+  thread tint_array_wrapper tint_symbol_13 = {};
+  thread float4 tint_symbol_14 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_11), &(tint_symbol_14));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_14};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_15, thread tint_array_wrapper* const tint_symbol_16) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_381 = m;
+    int const x_382 = high;
+    if ((x_381 <= x_382)) {
+    } else {
+      break;
+    }
+    int const x_385 = low;
+    i_2 = x_385;
+    while (true) {
+      int const x_390 = i_2;
+      int const x_391 = high;
+      if ((x_390 < x_391)) {
+      } else {
+        break;
+      }
+      int const x_394 = i_2;
+      from_1 = x_394;
+      int const x_395 = i_2;
+      int const x_396 = m;
+      mid_1 = ((x_395 + x_396) - 1);
+      int const x_399 = i_2;
+      int const x_400 = m;
+      int const x_404 = high;
+      to_1 = min(((x_399 + (2 * x_400)) - 1), x_404);
+      int const x_406 = from_1;
+      param = x_406;
+      int const x_407 = mid_1;
+      param_1 = x_407;
+      int const x_408 = to_1;
+      param_2 = x_408;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_15, tint_symbol_16);
+      {
+        int const x_410 = m;
+        int const x_412 = i_2;
+        i_2 = (x_412 + (2 * x_410));
+      }
+    }
+    {
+      int const x_414 = m;
+      m = (2 * x_414);
+    }
+  }
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.spvasm
new file mode 100644
index 0000000..5cce2a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.spvasm
@@ -0,0 +1,741 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 471
+; Schema: 0
+               OpCapability Shader
+        %255 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %main_1 "main_1"
+               OpName %x_85 "x_85"
+               OpName %x_86 "x_86"
+               OpName %x_87 "x_87"
+               OpName %x_88 "x_88"
+               OpName %x_89 "x_89"
+               OpName %x_90 "x_90"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+        %149 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %400 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %134 = OpLabel
+       %x_85 = OpVariable %_ptr_Function_int Function %32
+       %x_86 = OpVariable %_ptr_Function_int Function %32
+       %x_87 = OpVariable %_ptr_Function_int Function %32
+       %x_88 = OpVariable %_ptr_Function_int Function %32
+       %x_89 = OpVariable %_ptr_Function_int Function %32
+       %x_90 = OpVariable %_ptr_Function_int Function %32
+       %x_91 = OpVariable %_ptr_Function_int Function %32
+       %x_92 = OpVariable %_ptr_Function_int Function %32
+       %x_93 = OpVariable %_ptr_Function_int Function %32
+       %x_94 = OpVariable %_ptr_Function_int Function %32
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %149
+        %152 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpConvertFToS %int %153
+               OpStore %i_3 %154
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+        %159 = OpLoad %int %i_3
+               OpSelectionMerge %160 None
+               OpSwitch %159 %161 9 %162 8 %163 7 %164 6 %165 5 %166 4 %167 3 %168 2 %169 1 %170 0 %171
+        %162 = OpLabel
+        %172 = OpLoad %int %i_3
+        %173 = OpAccessChain %_ptr_Private_int %data %172
+               OpStore %173 %int_n5
+               OpBranch %160
+        %163 = OpLabel
+        %175 = OpLoad %int %i_3
+        %176 = OpAccessChain %_ptr_Private_int %data %175
+               OpStore %176 %int_n4
+               OpBranch %160
+        %164 = OpLabel
+        %178 = OpLoad %int %i_3
+        %179 = OpAccessChain %_ptr_Private_int %data %178
+               OpStore %179 %int_n3
+               OpBranch %160
+        %165 = OpLabel
+        %181 = OpLoad %int %i_3
+        %182 = OpAccessChain %_ptr_Private_int %data %181
+               OpStore %182 %int_n2
+               OpBranch %160
+        %166 = OpLabel
+        %184 = OpLoad %int %i_3
+        %185 = OpAccessChain %_ptr_Private_int %data %184
+               OpStore %185 %int_n1
+               OpBranch %160
+        %167 = OpLabel
+        %187 = OpLoad %int %i_3
+        %188 = OpAccessChain %_ptr_Private_int %data %187
+               OpStore %188 %int_0
+               OpBranch %160
+        %168 = OpLabel
+        %190 = OpLoad %int %i_3
+        %191 = OpAccessChain %_ptr_Private_int %data %190
+               OpStore %191 %int_1
+               OpBranch %160
+        %169 = OpLabel
+        %192 = OpLoad %int %i_3
+        %193 = OpAccessChain %_ptr_Private_int %data %192
+               OpStore %193 %int_2
+               OpBranch %160
+        %170 = OpLabel
+        %195 = OpLoad %int %i_3
+        %196 = OpAccessChain %_ptr_Private_int %data %195
+               OpStore %196 %int_3
+               OpBranch %160
+        %171 = OpLabel
+        %198 = OpLoad %int %i_3
+        %199 = OpAccessChain %_ptr_Private_int %data %198
+               OpStore %199 %int_4
+               OpBranch %160
+        %161 = OpLabel
+               OpBranch %160
+        %160 = OpLabel
+        %201 = OpLoad %int %i_3
+        %202 = OpIAdd %int %201 %int_1
+               OpStore %i_3 %202
+               OpBranch %157
+        %157 = OpLabel
+        %203 = OpLoad %int %i_3
+        %204 = OpSLessThan %bool %203 %int_10
+               OpSelectionMerge %205 None
+               OpBranchConditional %204 %206 %207
+        %206 = OpLabel
+               OpBranch %205
+        %207 = OpLabel
+               OpBranch %156
+        %205 = OpLabel
+               OpBranch %155
+        %156 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %j_1
+        %213 = OpSLessThan %bool %212 %int_10
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %209
+        %214 = OpLabel
+        %217 = OpLoad %int %j_1
+        %218 = OpLoad %int %j_1
+        %219 = OpAccessChain %_ptr_Private_int %data %218
+        %220 = OpLoad %int %219
+        %221 = OpAccessChain %_ptr_Private_int %temp %217
+               OpStore %221 %220
+               OpBranch %210
+        %210 = OpLabel
+        %222 = OpLoad %int %j_1
+        %223 = OpIAdd %int %222 %int_1
+               OpStore %j_1 %223
+               OpBranch %208
+        %209 = OpLabel
+               OpStore %x_94 %int_0
+               OpStore %x_93 %int_9
+               OpStore %x_92 %int_1
+               OpBranch %225
+        %225 = OpLabel
+               OpLoopMerge %226 %227 None
+               OpBranch %228
+        %228 = OpLabel
+        %229 = OpLoad %int %x_92
+        %230 = OpLoad %int %x_93
+        %231 = OpSLessThanEqual %bool %229 %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %234
+        %233 = OpLabel
+               OpBranch %232
+        %234 = OpLabel
+               OpBranch %226
+        %232 = OpLabel
+        %235 = OpLoad %int %x_94
+               OpStore %x_91 %235
+               OpBranch %236
+        %236 = OpLabel
+               OpLoopMerge %237 %238 None
+               OpBranch %239
+        %239 = OpLabel
+        %240 = OpLoad %int %x_91
+        %241 = OpLoad %int %x_93
+        %242 = OpSLessThan %bool %240 %241
+               OpSelectionMerge %243 None
+               OpBranchConditional %242 %244 %245
+        %244 = OpLabel
+               OpBranch %243
+        %245 = OpLabel
+               OpBranch %237
+        %243 = OpLabel
+        %246 = OpLoad %int %x_91
+               OpStore %x_90 %246
+        %247 = OpLoad %int %x_91
+        %248 = OpLoad %int %x_92
+        %249 = OpIAdd %int %247 %248
+        %250 = OpISub %int %249 %int_1
+               OpStore %x_89 %250
+        %251 = OpLoad %int %x_91
+        %252 = OpLoad %int %x_92
+        %253 = OpLoad %int %x_93
+        %256 = OpIMul %int %int_2 %252
+        %257 = OpIAdd %int %251 %256
+        %258 = OpISub %int %257 %int_1
+        %254 = OpExtInst %int %255 SMin %258 %253
+               OpStore %x_88 %254
+        %259 = OpLoad %int %x_90
+               OpStore %x_87 %259
+        %260 = OpLoad %int %x_89
+               OpStore %x_86 %260
+        %261 = OpLoad %int %x_88
+               OpStore %x_85 %261
+        %262 = OpFunctionCall %void %merge_i1_i1_i1_ %x_87 %x_86 %x_85
+               OpBranch %238
+        %238 = OpLabel
+        %266 = OpLoad %int %x_92
+        %267 = OpLoad %int %x_91
+        %268 = OpIMul %int %int_2 %266
+        %269 = OpIAdd %int %267 %268
+               OpStore %x_91 %269
+               OpBranch %236
+        %237 = OpLabel
+               OpBranch %227
+        %227 = OpLabel
+        %270 = OpLoad %int %x_92
+        %271 = OpIMul %int %int_2 %270
+               OpStore %x_92 %271
+               OpBranch %225
+        %226 = OpLabel
+        %274 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %275 = OpLoad %float %274
+        %276 = OpConvertFToS %int %275
+        %278 = OpSLessThan %bool %276 %int_30
+               OpSelectionMerge %279 None
+               OpBranchConditional %278 %280 %281
+        %280 = OpLabel
+        %282 = OpAccessChain %_ptr_Private_int %data %int_0
+        %283 = OpLoad %int %282
+        %285 = OpConvertSToF %float %283
+        %287 = OpFDiv %float %285 %float_10
+        %288 = OpFAdd %float %float_0_5 %287
+               OpStore %grey %288
+               OpBranch %279
+        %281 = OpLabel
+        %289 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %290 = OpLoad %float %289
+        %291 = OpConvertFToS %int %290
+        %293 = OpSLessThan %bool %291 %int_60
+               OpSelectionMerge %294 None
+               OpBranchConditional %293 %295 %296
+        %295 = OpLabel
+        %297 = OpAccessChain %_ptr_Private_int %data %int_1
+        %298 = OpLoad %int %297
+        %299 = OpConvertSToF %float %298
+        %300 = OpFDiv %float %299 %float_10
+        %301 = OpFAdd %float %float_0_5 %300
+               OpStore %grey %301
+               OpBranch %294
+        %296 = OpLabel
+        %302 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %303 = OpLoad %float %302
+        %304 = OpConvertFToS %int %303
+        %306 = OpSLessThan %bool %304 %int_90
+               OpSelectionMerge %307 None
+               OpBranchConditional %306 %308 %309
+        %308 = OpLabel
+        %310 = OpAccessChain %_ptr_Private_int %data %int_2
+        %311 = OpLoad %int %310
+        %312 = OpConvertSToF %float %311
+        %313 = OpFDiv %float %312 %float_10
+        %314 = OpFAdd %float %float_0_5 %313
+               OpStore %grey %314
+               OpBranch %307
+        %309 = OpLabel
+        %315 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpConvertFToS %int %316
+        %319 = OpSLessThan %bool %317 %int_120
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %322
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Private_int %data %int_3
+        %324 = OpLoad %int %323
+        %325 = OpConvertSToF %float %324
+        %326 = OpFDiv %float %325 %float_10
+        %327 = OpFAdd %float %float_0_5 %326
+               OpStore %grey %327
+               OpBranch %320
+        %322 = OpLabel
+        %328 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %329 = OpLoad %float %328
+        %330 = OpConvertFToS %int %329
+        %332 = OpSLessThan %bool %330 %int_150
+               OpSelectionMerge %333 None
+               OpBranchConditional %332 %334 %335
+        %334 = OpLabel
+               OpKill
+        %335 = OpLabel
+        %336 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %337 = OpLoad %float %336
+        %338 = OpConvertFToS %int %337
+        %340 = OpSLessThan %bool %338 %int_180
+               OpSelectionMerge %341 None
+               OpBranchConditional %340 %342 %343
+        %342 = OpLabel
+        %345 = OpAccessChain %_ptr_Private_int %data %int_5
+        %346 = OpLoad %int %345
+        %347 = OpConvertSToF %float %346
+        %348 = OpFDiv %float %347 %float_10
+        %349 = OpFAdd %float %float_0_5 %348
+               OpStore %grey %349
+               OpBranch %341
+        %343 = OpLabel
+        %350 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %351 = OpLoad %float %350
+        %352 = OpConvertFToS %int %351
+        %354 = OpSLessThan %bool %352 %int_210
+               OpSelectionMerge %355 None
+               OpBranchConditional %354 %356 %357
+        %356 = OpLabel
+        %359 = OpAccessChain %_ptr_Private_int %data %int_6
+        %360 = OpLoad %int %359
+        %361 = OpConvertSToF %float %360
+        %362 = OpFDiv %float %361 %float_10
+        %363 = OpFAdd %float %float_0_5 %362
+               OpStore %grey %363
+               OpBranch %355
+        %357 = OpLabel
+        %364 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %365 = OpLoad %float %364
+        %366 = OpConvertFToS %int %365
+        %368 = OpSLessThan %bool %366 %int_240
+               OpSelectionMerge %369 None
+               OpBranchConditional %368 %370 %371
+        %370 = OpLabel
+        %373 = OpAccessChain %_ptr_Private_int %data %int_7
+        %374 = OpLoad %int %373
+        %375 = OpConvertSToF %float %374
+        %376 = OpFDiv %float %375 %float_10
+        %377 = OpFAdd %float %float_0_5 %376
+               OpStore %grey %377
+               OpBranch %369
+        %371 = OpLabel
+        %378 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %379 = OpLoad %float %378
+        %380 = OpConvertFToS %int %379
+        %382 = OpSLessThan %bool %380 %int_270
+               OpSelectionMerge %383 None
+               OpBranchConditional %382 %384 %385
+        %384 = OpLabel
+        %387 = OpAccessChain %_ptr_Private_int %data %int_8
+        %388 = OpLoad %int %387
+        %389 = OpConvertSToF %float %388
+        %390 = OpFDiv %float %389 %float_10
+        %391 = OpFAdd %float %float_0_5 %390
+               OpStore %grey %391
+               OpBranch %383
+        %385 = OpLabel
+               OpKill
+        %383 = OpLabel
+               OpBranch %369
+        %369 = OpLabel
+               OpBranch %355
+        %355 = OpLabel
+               OpBranch %341
+        %341 = OpLabel
+               OpBranch %333
+        %333 = OpLabel
+               OpBranch %320
+        %320 = OpLabel
+               OpBranch %307
+        %307 = OpLabel
+               OpBranch %294
+        %294 = OpLabel
+               OpBranch %279
+        %279 = OpLabel
+        %392 = OpLoad %float %grey
+        %394 = OpCompositeConstruct %v3float %392 %392 %392
+        %395 = OpCompositeExtract %float %394 0
+        %396 = OpCompositeExtract %float %394 1
+        %397 = OpCompositeExtract %float %394 2
+        %399 = OpCompositeConstruct %v4float %395 %396 %397 %float_1
+               OpStore %x_GLF_color %399
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %400
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %404 = OpLabel
+        %405 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %405
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %407 = OpLabel
+        %408 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %408
+        %409 = OpFunctionCall %void %main_1
+        %411 = OpLoad %v4float %x_GLF_color
+        %412 = OpCompositeConstruct %main_out %411
+        %410 = OpFunctionCall %void %tint_symbol_3 %412
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %414 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %425
+        %425 = OpLabel
+               OpLoopMerge %426 %427 None
+               OpBranch %428
+        %428 = OpLabel
+        %429 = OpLoad %int %m
+        %430 = OpLoad %int %high
+        %431 = OpSLessThanEqual %bool %429 %430
+               OpSelectionMerge %432 None
+               OpBranchConditional %431 %433 %434
+        %433 = OpLabel
+               OpBranch %432
+        %434 = OpLabel
+               OpBranch %426
+        %432 = OpLabel
+        %435 = OpLoad %int %low
+               OpStore %i_2 %435
+               OpBranch %436
+        %436 = OpLabel
+               OpLoopMerge %437 %438 None
+               OpBranch %439
+        %439 = OpLabel
+        %440 = OpLoad %int %i_2
+        %441 = OpLoad %int %high
+        %442 = OpSLessThan %bool %440 %441
+               OpSelectionMerge %443 None
+               OpBranchConditional %442 %444 %445
+        %444 = OpLabel
+               OpBranch %443
+        %445 = OpLabel
+               OpBranch %437
+        %443 = OpLabel
+        %446 = OpLoad %int %i_2
+               OpStore %from_1 %446
+        %447 = OpLoad %int %i_2
+        %448 = OpLoad %int %m
+        %449 = OpIAdd %int %447 %448
+        %450 = OpISub %int %449 %int_1
+               OpStore %mid_1 %450
+        %451 = OpLoad %int %i_2
+        %452 = OpLoad %int %m
+        %453 = OpLoad %int %high
+        %455 = OpIMul %int %int_2 %452
+        %456 = OpIAdd %int %451 %455
+        %457 = OpISub %int %456 %int_1
+        %454 = OpExtInst %int %255 SMin %457 %453
+               OpStore %to_1 %454
+        %458 = OpLoad %int %from_1
+               OpStore %param %458
+        %459 = OpLoad %int %mid_1
+               OpStore %param_1 %459
+        %460 = OpLoad %int %to_1
+               OpStore %param_2 %460
+        %461 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %438
+        %438 = OpLabel
+        %465 = OpLoad %int %m
+        %466 = OpLoad %int %i_2
+        %467 = OpIMul %int %int_2 %465
+        %468 = OpIAdd %int %466 %467
+               OpStore %i_2 %468
+               OpBranch %436
+        %437 = OpLabel
+               OpBranch %427
+        %427 = OpLabel
+        %469 = OpLoad %int %m
+        %470 = OpIMul %int %int_2 %469
+               OpStore %m %470
+               OpBranch %425
+        %426 = OpLabel
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 157[%157] is not post dominated by the back-edge block 205[%205]
+  %205 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.wgsl
new file mode 100644
index 0000000..57c9c29
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl.expected.wgsl
@@ -0,0 +1,363 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_302 : i32 = *(from);
+  k = x_302;
+  let x_303 : i32 = *(from);
+  i = x_303;
+  let x_304 : i32 = *(mid);
+  j = (x_304 + 1);
+  loop {
+    let x_310 : i32 = i;
+    let x_311 : i32 = *(mid);
+    let x_313 : i32 = j;
+    let x_314 : i32 = *(to);
+    if (((x_310 <= x_311) && (x_313 <= x_314))) {
+    } else {
+      break;
+    }
+    let x_318 : i32 = i;
+    let x_320 : i32 = data[x_318];
+    let x_321 : i32 = j;
+    let x_323 : i32 = data[x_321];
+    if ((x_320 < x_323)) {
+      let x_328 : i32 = k;
+      k = (x_328 + 1);
+      let x_330 : i32 = i;
+      i = (x_330 + 1);
+      let x_333 : i32 = data[x_330];
+      temp[x_328] = x_333;
+    } else {
+      let x_335 : i32 = k;
+      k = (x_335 + 1);
+      let x_337 : i32 = j;
+      j = (x_337 + 1);
+      let x_340 : i32 = data[x_337];
+      temp[x_335] = x_340;
+    }
+  }
+  loop {
+    let x_346 : i32 = i;
+    let x_348 : i32 = i;
+    let x_349 : i32 = *(mid);
+    if (((x_346 < 10) && (x_348 <= x_349))) {
+    } else {
+      break;
+    }
+    let x_353 : i32 = k;
+    k = (x_353 + 1);
+    let x_355 : i32 = i;
+    i = (x_355 + 1);
+    let x_358 : i32 = data[x_355];
+    temp[x_353] = x_358;
+  }
+  let x_360 : i32 = *(from);
+  i_1 = x_360;
+  loop {
+    let x_365 : i32 = i_1;
+    let x_366 : i32 = *(to);
+    if ((x_365 <= x_366)) {
+    } else {
+      break;
+    }
+    let x_369 : i32 = i_1;
+    let x_370 : i32 = i_1;
+    let x_372 : i32 = temp[x_370];
+    data[x_369] = x_372;
+
+    continuing {
+      let x_374 : i32 = i_1;
+      i_1 = (x_374 + 1);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var x_85 : i32;
+  var x_86 : i32;
+  var x_87 : i32;
+  var x_88 : i32;
+  var x_89 : i32;
+  var x_90 : i32;
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : i32;
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_96 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_96);
+  loop {
+    let x_102 : i32 = i_3;
+    switch(x_102) {
+      case 9: {
+        let x_132 : i32 = i_3;
+        data[x_132] = -5;
+      }
+      case 8: {
+        let x_130 : i32 = i_3;
+        data[x_130] = -4;
+      }
+      case 7: {
+        let x_128 : i32 = i_3;
+        data[x_128] = -3;
+      }
+      case 6: {
+        let x_126 : i32 = i_3;
+        data[x_126] = -2;
+      }
+      case 5: {
+        let x_124 : i32 = i_3;
+        data[x_124] = -1;
+      }
+      case 4: {
+        let x_122 : i32 = i_3;
+        data[x_122] = 0;
+      }
+      case 3: {
+        let x_120 : i32 = i_3;
+        data[x_120] = 1;
+      }
+      case 2: {
+        let x_118 : i32 = i_3;
+        data[x_118] = 2;
+      }
+      case 1: {
+        let x_116 : i32 = i_3;
+        data[x_116] = 3;
+      }
+      case 0: {
+        let x_114 : i32 = i_3;
+        data[x_114] = 4;
+      }
+      default: {
+      }
+    }
+    let x_134 : i32 = i_3;
+    i_3 = (x_134 + 1);
+
+    continuing {
+      let x_136 : i32 = i_3;
+      if ((x_136 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_142 : i32 = j_1;
+    if ((x_142 < 10)) {
+    } else {
+      break;
+    }
+    let x_145 : i32 = j_1;
+    let x_146 : i32 = j_1;
+    let x_148 : i32 = data[x_146];
+    temp[x_145] = x_148;
+
+    continuing {
+      let x_150 : i32 = j_1;
+      j_1 = (x_150 + 1);
+    }
+  }
+  x_94 = 0;
+  x_93 = 9;
+  x_92 = 1;
+  loop {
+    let x_156 : i32 = x_92;
+    let x_157 : i32 = x_93;
+    if ((x_156 <= x_157)) {
+    } else {
+      break;
+    }
+    let x_160 : i32 = x_94;
+    x_91 = x_160;
+    loop {
+      let x_165 : i32 = x_91;
+      let x_166 : i32 = x_93;
+      if ((x_165 < x_166)) {
+      } else {
+        break;
+      }
+      let x_169 : i32 = x_91;
+      x_90 = x_169;
+      let x_170 : i32 = x_91;
+      let x_171 : i32 = x_92;
+      x_89 = ((x_170 + x_171) - 1);
+      let x_174 : i32 = x_91;
+      let x_175 : i32 = x_92;
+      let x_179 : i32 = x_93;
+      x_88 = min(((x_174 + (2 * x_175)) - 1), x_179);
+      let x_181 : i32 = x_90;
+      x_87 = x_181;
+      let x_182 : i32 = x_89;
+      x_86 = x_182;
+      let x_183 : i32 = x_88;
+      x_85 = x_183;
+      merge_i1_i1_i1_(&(x_87), &(x_86), &(x_85));
+
+      continuing {
+        let x_185 : i32 = x_92;
+        let x_187 : i32 = x_91;
+        x_91 = (x_187 + (2 * x_185));
+      }
+    }
+
+    continuing {
+      let x_189 : i32 = x_92;
+      x_92 = (2 * x_189);
+    }
+  }
+  let x_193 : f32 = gl_FragCoord.y;
+  if ((i32(x_193) < 30)) {
+    let x_200 : i32 = data[0];
+    grey = (0.5 + (f32(x_200) / 10.0));
+  } else {
+    let x_205 : f32 = gl_FragCoord.y;
+    if ((i32(x_205) < 60)) {
+      let x_212 : i32 = data[1];
+      grey = (0.5 + (f32(x_212) / 10.0));
+    } else {
+      let x_217 : f32 = gl_FragCoord.y;
+      if ((i32(x_217) < 90)) {
+        let x_224 : i32 = data[2];
+        grey = (0.5 + (f32(x_224) / 10.0));
+      } else {
+        let x_229 : f32 = gl_FragCoord.y;
+        if ((i32(x_229) < 120)) {
+          let x_236 : i32 = data[3];
+          grey = (0.5 + (f32(x_236) / 10.0));
+        } else {
+          let x_241 : f32 = gl_FragCoord.y;
+          if ((i32(x_241) < 150)) {
+            discard;
+          } else {
+            let x_248 : f32 = gl_FragCoord.y;
+            if ((i32(x_248) < 180)) {
+              let x_255 : i32 = data[5];
+              grey = (0.5 + (f32(x_255) / 10.0));
+            } else {
+              let x_260 : f32 = gl_FragCoord.y;
+              if ((i32(x_260) < 210)) {
+                let x_267 : i32 = data[6];
+                grey = (0.5 + (f32(x_267) / 10.0));
+              } else {
+                let x_272 : f32 = gl_FragCoord.y;
+                if ((i32(x_272) < 240)) {
+                  let x_279 : i32 = data[7];
+                  grey = (0.5 + (f32(x_279) / 10.0));
+                } else {
+                  let x_284 : f32 = gl_FragCoord.y;
+                  if ((i32(x_284) < 270)) {
+                    let x_291 : i32 = data[8];
+                    grey = (0.5 + (f32(x_291) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_295 : f32 = grey;
+  let x_296 : vec3<f32> = vec3<f32>(x_295, x_295, x_295);
+  x_GLF_color = vec4<f32>(x_296.x, x_296.y, x_296.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_381 : i32 = m;
+    let x_382 : i32 = high;
+    if ((x_381 <= x_382)) {
+    } else {
+      break;
+    }
+    let x_385 : i32 = low;
+    i_2 = x_385;
+    loop {
+      let x_390 : i32 = i_2;
+      let x_391 : i32 = high;
+      if ((x_390 < x_391)) {
+      } else {
+        break;
+      }
+      let x_394 : i32 = i_2;
+      from_1 = x_394;
+      let x_395 : i32 = i_2;
+      let x_396 : i32 = m;
+      mid_1 = ((x_395 + x_396) - 1);
+      let x_399 : i32 = i_2;
+      let x_400 : i32 = m;
+      let x_404 : i32 = high;
+      to_1 = min(((x_399 + (2 * x_400)) - 1), x_404);
+      let x_406 : i32 = from_1;
+      param = x_406;
+      let x_407 : i32 = mid_1;
+      param_1 = x_407;
+      let x_408 : i32 = to_1;
+      param_2 = x_408;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_410 : i32 = m;
+        let x_412 : i32 = i_2;
+        i_2 = (x_412 + (2 * x_410));
+      }
+    }
+
+    continuing {
+      let x_414 : i32 = m;
+      m = (2 * x_414);
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm
new file mode 100644
index 0000000..a003313
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm
@@ -0,0 +1,161 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+       %uint = OpTypeInt 32 0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+    %int_100 = OpConstant %int 100
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %37 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %41 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %43 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %46 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %50 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %51 = OpConstantComposite %_arr_v4float_uint_16 %35 %37 %38 %39 %40 %41 %42 %43 %35 %44 %45 %46 %47 %48 %49 %50
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %54 = OpUndef %v2int
+       %main = OpFunction %void None %9
+         %55 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %56 = OpLoad %v4float %gl_FragCoord
+         %57 = OpVectorShuffle %v2float %56 %56 0 1
+         %58 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %59 = OpLoad %v2float %58
+         %60 = OpFDiv %v2float %57 %59
+         %61 = OpCompositeExtract %float %60 0
+         %62 = OpFMul %float %61 %float_8
+         %63 = OpConvertFToS %int %62
+         %64 = OpCompositeExtract %float %60 1
+         %65 = OpFMul %float %64 %float_8
+         %66 = OpConvertFToS %int %65
+         %67 = OpBitwiseAnd %int %63 %int_5
+         %68 = OpBitwiseAnd %int %66 %int_10
+         %69 = OpBitwiseOr %int %67 %68
+         %70 = OpBitwiseAnd %int %66 %int_5
+         %71 = OpBitwiseAnd %int %63 %int_10
+         %72 = OpBitwiseOr %int %70 %71
+         %73 = OpIMul %int %69 %int_8
+         %74 = OpIAdd %int %73 %72
+         %75 = OpCompositeConstruct %v2int %74 %int_0
+               OpBranch %76
+         %76 = OpLabel
+         %77 = OpPhi %v2int %75 %55 %78 %79
+         %80 = OpPhi %int %int_0 %55 %81 %79
+         %82 = OpSLessThan %bool %80 %int_100
+               OpLoopMerge %83 %79 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpCompositeExtract %int %77 0
+         %86 = OpSGreaterThan %bool %85 %int_0
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %88 %87
+         %88 = OpLabel
+         %89 = OpCompositeExtract %int %77 1
+         %90 = OpISub %int %89 %int_1
+         %91 = OpCompositeInsert %v2int %90 %77 1
+               OpBranch %87
+         %87 = OpLabel
+         %92 = OpPhi %v2int %77 %84 %91 %88
+         %93 = OpCompositeExtract %int %92 0
+         %94 = OpSLessThan %bool %93 %int_0
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+         %97 = OpCompositeExtract %int %92 1
+         %98 = OpIAdd %int %97 %int_1
+         %99 = OpCompositeInsert %v2int %98 %92 1
+               OpBranch %95
+         %95 = OpLabel
+        %100 = OpPhi %v2int %92 %87 %99 %96
+        %101 = OpCompositeExtract %int %100 1
+        %102 = OpSDiv %int %101 %int_2
+        %103 = OpCompositeExtract %int %100 0
+        %104 = OpIAdd %int %103 %102
+         %78 = OpCompositeInsert %v2int %104 %100 0
+               OpBranch %79
+         %79 = OpLabel
+         %81 = OpIAdd %int %80 %int_1
+               OpBranch %76
+         %83 = OpLabel
+        %105 = OpCompositeExtract %int %77 0
+        %106 = OpSLessThan %bool %105 %int_0
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+        %109 = OpSNegate %int %105
+        %110 = OpCompositeInsert %v2int %109 %54 0
+               OpBranch %107
+        %107 = OpLabel
+        %111 = OpPhi %v2int %77 %83 %110 %108
+               OpBranch %112
+        %112 = OpLabel
+        %113 = OpPhi %v2int %111 %107 %114 %115
+        %116 = OpCompositeExtract %int %113 0
+        %117 = OpSGreaterThan %bool %116 %int_15
+               OpLoopMerge %118 %115 None
+               OpBranchConditional %117 %115 %118
+        %115 = OpLabel
+        %119 = OpISub %int %116 %int_16
+        %114 = OpCompositeInsert %v2int %119 %54 0
+               OpBranch %112
+        %118 = OpLabel
+               OpStore %indexable %51
+        %120 = OpAccessChain %_ptr_Function_v4float %indexable %116
+        %121 = OpLoad %v4float %120
+               OpStore %_GLF_color %121
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..5a6f9c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.hlsl
@@ -0,0 +1,104 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_77 = int2(0, 0);
+  int2 x_110 = int2(0, 0);
+  int x_116 = 0;
+  int2 x_77_phi = int2(0, 0);
+  int x_80_phi = 0;
+  int2 x_111_phi = int2(0, 0);
+  int2 x_113_phi = int2(0, 0);
+  const float4 x_56 = gl_FragCoord;
+  const float2 x_59 = asfloat(x_6[0].xy);
+  const float2 x_60 = (float2(x_56.x, x_56.y) / x_59);
+  const int x_63 = int((x_60.x * 8.0f));
+  const int x_66 = int((x_60.y * 8.0f));
+  const int2 x_75 = int2(((((x_63 & 5) | (x_66 & 10)) * 8) + ((x_66 & 5) | (x_63 & 10))), 0);
+  x_77_phi = x_75;
+  x_80_phi = 0;
+  while (true) {
+    int2 x_91 = int2(0, 0);
+    int2 x_99 = int2(0, 0);
+    int x_81 = 0;
+    int2 x_92_phi = int2(0, 0);
+    int2 x_100_phi = int2(0, 0);
+    x_77 = x_77_phi;
+    const int x_80 = x_80_phi;
+    if ((x_80 < 100)) {
+    } else {
+      break;
+    }
+    x_92_phi = x_77;
+    if ((x_77.x > 0)) {
+      x_91 = x_77;
+      x_91.y = (x_77.y - 1);
+      x_92_phi = x_91;
+    }
+    const int2 x_92 = x_92_phi;
+    x_100_phi = x_92;
+    if ((x_92.x < 0)) {
+      x_99 = x_92;
+      x_99.y = (x_92.y + 1);
+      x_100_phi = x_99;
+    }
+    const int2 x_100 = x_100_phi;
+    int2 x_78_1 = x_100;
+    x_78_1.x = (x_100.x + (x_100.y / 2));
+    const int2 x_78 = x_78_1;
+    {
+      x_81 = (x_80 + 1);
+      x_77_phi = x_78;
+      x_80_phi = x_81;
+    }
+  }
+  const int x_105 = x_77.x;
+  x_111_phi = x_77;
+  if ((x_105 < 0)) {
+    x_110 = int2(0, 0);
+    x_110.x = -(x_105);
+    x_111_phi = x_110;
+  }
+  x_113_phi = x_111_phi;
+  while (true) {
+    int2 x_114 = int2(0, 0);
+    x_116 = x_113_phi.x;
+    if ((x_116 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_114 = int2(0, 0);
+      x_114.x = asint((x_116 - asint(16)));
+      x_113_phi = x_114;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_121 = indexable[x_116];
+  x_GLF_color = x_121;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.msl
new file mode 100644
index 0000000..4266776
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int2 x_77 = 0;
+  int2 x_110 = 0;
+  int x_116 = 0;
+  int2 x_77_phi = 0;
+  int x_80_phi = 0;
+  int2 x_111_phi = 0;
+  int2 x_113_phi = 0;
+  float4 const x_56 = *(tint_symbol_6);
+  float2 const x_59 = x_6.resolution;
+  float2 const x_60 = (float2(x_56.x, x_56.y) / x_59);
+  int const x_63 = int((x_60.x * 8.0f));
+  int const x_66 = int((x_60.y * 8.0f));
+  int2 const x_75 = int2(((((x_63 & 5) | (x_66 & 10)) * 8) + ((x_66 & 5) | (x_63 & 10))), 0);
+  x_77_phi = x_75;
+  x_80_phi = 0;
+  while (true) {
+    int2 x_91 = 0;
+    int2 x_99 = 0;
+    int x_81 = 0;
+    int2 x_92_phi = 0;
+    int2 x_100_phi = 0;
+    x_77 = x_77_phi;
+    int const x_80 = x_80_phi;
+    if ((x_80 < 100)) {
+    } else {
+      break;
+    }
+    x_92_phi = x_77;
+    if ((x_77.x > 0)) {
+      x_91 = x_77;
+      x_91.y = (x_77.y - 1);
+      x_92_phi = x_91;
+    }
+    int2 const x_92 = x_92_phi;
+    x_100_phi = x_92;
+    if ((x_92.x < 0)) {
+      x_99 = x_92;
+      x_99.y = (x_92.y + 1);
+      x_100_phi = x_99;
+    }
+    int2 const x_100 = x_100_phi;
+    int2 x_78_1 = x_100;
+    x_78_1.x = (x_100.x + (x_100.y / 2));
+    int2 const x_78 = x_78_1;
+    {
+      x_81 = (x_80 + 1);
+      x_77_phi = x_78;
+      x_80_phi = x_81;
+    }
+  }
+  int const x_105 = x_77.x;
+  x_111_phi = x_77;
+  if ((x_105 < 0)) {
+    x_110 = int2(0, 0);
+    x_110.x = -(x_105);
+    x_111_phi = x_110;
+  }
+  int2 const x_111 = x_111_phi;
+  x_113_phi = x_111;
+  while (true) {
+    int2 x_114 = 0;
+    int2 const x_113 = x_113_phi;
+    x_116 = x_113.x;
+    if ((x_116 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_114 = int2(0, 0);
+      x_114.x = as_type<int>((x_116 - as_type<int>(16)));
+      x_113_phi = x_114;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_121 = indexable.arr[x_116];
+  *(tint_symbol_7) = x_121;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..d89e65c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.spvasm
@@ -0,0 +1,292 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 185
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_77 "x_77"
+               OpName %x_110 "x_110"
+               OpName %x_116 "x_116"
+               OpName %x_77_phi "x_77_phi"
+               OpName %x_80_phi "x_80_phi"
+               OpName %x_111_phi "x_111_phi"
+               OpName %x_113_phi "x_113_phi"
+               OpName %x_91 "x_91"
+               OpName %x_99 "x_99"
+               OpName %x_81 "x_81"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_100_phi "x_100_phi"
+               OpName %x_78_1 "x_78_1"
+               OpName %x_114 "x_114"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+        %124 = OpConstantComposite %v2int %int_0 %int_0
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %172 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_77 = OpVariable %_ptr_Function_v2int Function %29
+      %x_110 = OpVariable %_ptr_Function_v2int Function %29
+      %x_116 = OpVariable %_ptr_Function_int Function %33
+   %x_77_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_80_phi = OpVariable %_ptr_Function_int Function %33
+  %x_111_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_113_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_91 = OpVariable %_ptr_Function_v2int Function %29
+       %x_99 = OpVariable %_ptr_Function_v2int Function %29
+       %x_81 = OpVariable %_ptr_Function_int Function %33
+   %x_92_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_100_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_78_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_114 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_77_phi %66
+               OpStore %x_80_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_77_phi
+               OpStore %x_77 %76
+         %77 = OpLoad %int %x_80_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_77
+               OpStore %x_92_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_77 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_77
+               OpStore %x_91 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_91 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_77 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_91
+               OpStore %x_92_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_92_phi
+               OpStore %x_100_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_99 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_99 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_99
+               OpStore %x_100_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_100_phi
+               OpStore %x_78_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_78_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_78_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_81 %116
+               OpStore %x_77_phi %115
+        %117 = OpLoad %int %x_81
+               OpStore %x_80_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_77 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_77
+               OpStore %x_111_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+               OpStore %x_110 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_110 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_110
+               OpStore %x_111_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_111_phi
+               OpStore %x_113_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_113_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_116 %135
+        %136 = OpLoad %int %x_116
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_114 %124
+        %142 = OpAccessChain %_ptr_Function_int %x_114 %uint_0
+        %144 = OpLoad %int %x_116
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_114
+               OpStore %x_113_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %int %x_116
+        %170 = OpAccessChain %_ptr_Function_v4float %indexable %168
+        %171 = OpLoad %v4float %170
+               OpStore %x_GLF_color %171
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %172
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %176 = OpLabel
+        %177 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %177
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %179 = OpLabel
+        %180 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %180
+        %181 = OpFunctionCall %void %main_1
+        %183 = OpLoad %v4float %x_GLF_color
+        %184 = OpCompositeConstruct %main_out %183
+        %182 = OpFunctionCall %void %tint_symbol_3 %184
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..be331aa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.spvasm.expected.wgsl
@@ -0,0 +1,105 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_77 : vec2<i32>;
+  var x_110 : vec2<i32>;
+  var x_116 : i32;
+  var x_77_phi : vec2<i32>;
+  var x_80_phi : i32;
+  var x_111_phi : vec2<i32>;
+  var x_113_phi : vec2<i32>;
+  let x_56 : vec4<f32> = gl_FragCoord;
+  let x_59 : vec2<f32> = x_6.resolution;
+  let x_60 : vec2<f32> = (vec2<f32>(x_56.x, x_56.y) / x_59);
+  let x_63 : i32 = i32((x_60.x * 8.0));
+  let x_66 : i32 = i32((x_60.y * 8.0));
+  let x_75 : vec2<i32> = vec2<i32>(((((x_63 & 5) | (x_66 & 10)) * 8) + ((x_66 & 5) | (x_63 & 10))), 0);
+  x_77_phi = x_75;
+  x_80_phi = 0;
+  loop {
+    var x_91 : vec2<i32>;
+    var x_99 : vec2<i32>;
+    var x_81 : i32;
+    var x_92_phi : vec2<i32>;
+    var x_100_phi : vec2<i32>;
+    x_77 = x_77_phi;
+    let x_80 : i32 = x_80_phi;
+    if ((x_80 < 100)) {
+    } else {
+      break;
+    }
+    x_92_phi = x_77;
+    if ((x_77.x > 0)) {
+      x_91 = x_77;
+      x_91.y = (x_77.y - 1);
+      x_92_phi = x_91;
+    }
+    let x_92 : vec2<i32> = x_92_phi;
+    x_100_phi = x_92;
+    if ((x_92.x < 0)) {
+      x_99 = x_92;
+      x_99.y = (x_92.y + 1);
+      x_100_phi = x_99;
+    }
+    let x_100 : vec2<i32> = x_100_phi;
+    var x_78_1 : vec2<i32> = x_100;
+    x_78_1.x = (x_100.x + (x_100.y / 2));
+    let x_78 : vec2<i32> = x_78_1;
+
+    continuing {
+      x_81 = (x_80 + 1);
+      x_77_phi = x_78;
+      x_80_phi = x_81;
+    }
+  }
+  let x_105 : i32 = x_77.x;
+  x_111_phi = x_77;
+  if ((x_105 < 0)) {
+    x_110 = vec2<i32>(0, 0);
+    x_110.x = -(x_105);
+    x_111_phi = x_110;
+  }
+  let x_111 : vec2<i32> = x_111_phi;
+  x_113_phi = x_111;
+  loop {
+    var x_114 : vec2<i32>;
+    let x_113 : vec2<i32> = x_113_phi;
+    x_116 = x_113.x;
+    if ((x_116 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_114 = vec2<i32>(0, 0);
+      x_114.x = bitcast<i32>((x_116 - bitcast<i32>(16)));
+      x_113_phi = x_114;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_121 : vec4<f32> = indexable[x_116];
+  x_GLF_color = x_121;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
new file mode 100644
index 0000000..be331aa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
@@ -0,0 +1,105 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_77 : vec2<i32>;
+  var x_110 : vec2<i32>;
+  var x_116 : i32;
+  var x_77_phi : vec2<i32>;
+  var x_80_phi : i32;
+  var x_111_phi : vec2<i32>;
+  var x_113_phi : vec2<i32>;
+  let x_56 : vec4<f32> = gl_FragCoord;
+  let x_59 : vec2<f32> = x_6.resolution;
+  let x_60 : vec2<f32> = (vec2<f32>(x_56.x, x_56.y) / x_59);
+  let x_63 : i32 = i32((x_60.x * 8.0));
+  let x_66 : i32 = i32((x_60.y * 8.0));
+  let x_75 : vec2<i32> = vec2<i32>(((((x_63 & 5) | (x_66 & 10)) * 8) + ((x_66 & 5) | (x_63 & 10))), 0);
+  x_77_phi = x_75;
+  x_80_phi = 0;
+  loop {
+    var x_91 : vec2<i32>;
+    var x_99 : vec2<i32>;
+    var x_81 : i32;
+    var x_92_phi : vec2<i32>;
+    var x_100_phi : vec2<i32>;
+    x_77 = x_77_phi;
+    let x_80 : i32 = x_80_phi;
+    if ((x_80 < 100)) {
+    } else {
+      break;
+    }
+    x_92_phi = x_77;
+    if ((x_77.x > 0)) {
+      x_91 = x_77;
+      x_91.y = (x_77.y - 1);
+      x_92_phi = x_91;
+    }
+    let x_92 : vec2<i32> = x_92_phi;
+    x_100_phi = x_92;
+    if ((x_92.x < 0)) {
+      x_99 = x_92;
+      x_99.y = (x_92.y + 1);
+      x_100_phi = x_99;
+    }
+    let x_100 : vec2<i32> = x_100_phi;
+    var x_78_1 : vec2<i32> = x_100;
+    x_78_1.x = (x_100.x + (x_100.y / 2));
+    let x_78 : vec2<i32> = x_78_1;
+
+    continuing {
+      x_81 = (x_80 + 1);
+      x_77_phi = x_78;
+      x_80_phi = x_81;
+    }
+  }
+  let x_105 : i32 = x_77.x;
+  x_111_phi = x_77;
+  if ((x_105 < 0)) {
+    x_110 = vec2<i32>(0, 0);
+    x_110.x = -(x_105);
+    x_111_phi = x_110;
+  }
+  let x_111 : vec2<i32> = x_111_phi;
+  x_113_phi = x_111;
+  loop {
+    var x_114 : vec2<i32>;
+    let x_113 : vec2<i32> = x_113_phi;
+    x_116 = x_113.x;
+    if ((x_116 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_114 = vec2<i32>(0, 0);
+      x_114.x = bitcast<i32>((x_116 - bitcast<i32>(16)));
+      x_113_phi = x_114;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_121 : vec4<f32> = indexable[x_116];
+  x_GLF_color = x_121;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..5a6f9c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.hlsl
@@ -0,0 +1,104 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_77 = int2(0, 0);
+  int2 x_110 = int2(0, 0);
+  int x_116 = 0;
+  int2 x_77_phi = int2(0, 0);
+  int x_80_phi = 0;
+  int2 x_111_phi = int2(0, 0);
+  int2 x_113_phi = int2(0, 0);
+  const float4 x_56 = gl_FragCoord;
+  const float2 x_59 = asfloat(x_6[0].xy);
+  const float2 x_60 = (float2(x_56.x, x_56.y) / x_59);
+  const int x_63 = int((x_60.x * 8.0f));
+  const int x_66 = int((x_60.y * 8.0f));
+  const int2 x_75 = int2(((((x_63 & 5) | (x_66 & 10)) * 8) + ((x_66 & 5) | (x_63 & 10))), 0);
+  x_77_phi = x_75;
+  x_80_phi = 0;
+  while (true) {
+    int2 x_91 = int2(0, 0);
+    int2 x_99 = int2(0, 0);
+    int x_81 = 0;
+    int2 x_92_phi = int2(0, 0);
+    int2 x_100_phi = int2(0, 0);
+    x_77 = x_77_phi;
+    const int x_80 = x_80_phi;
+    if ((x_80 < 100)) {
+    } else {
+      break;
+    }
+    x_92_phi = x_77;
+    if ((x_77.x > 0)) {
+      x_91 = x_77;
+      x_91.y = (x_77.y - 1);
+      x_92_phi = x_91;
+    }
+    const int2 x_92 = x_92_phi;
+    x_100_phi = x_92;
+    if ((x_92.x < 0)) {
+      x_99 = x_92;
+      x_99.y = (x_92.y + 1);
+      x_100_phi = x_99;
+    }
+    const int2 x_100 = x_100_phi;
+    int2 x_78_1 = x_100;
+    x_78_1.x = (x_100.x + (x_100.y / 2));
+    const int2 x_78 = x_78_1;
+    {
+      x_81 = (x_80 + 1);
+      x_77_phi = x_78;
+      x_80_phi = x_81;
+    }
+  }
+  const int x_105 = x_77.x;
+  x_111_phi = x_77;
+  if ((x_105 < 0)) {
+    x_110 = int2(0, 0);
+    x_110.x = -(x_105);
+    x_111_phi = x_110;
+  }
+  x_113_phi = x_111_phi;
+  while (true) {
+    int2 x_114 = int2(0, 0);
+    x_116 = x_113_phi.x;
+    if ((x_116 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_114 = int2(0, 0);
+      x_114.x = asint((x_116 - asint(16)));
+      x_113_phi = x_114;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_121 = indexable[x_116];
+  x_GLF_color = x_121;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.msl
new file mode 100644
index 0000000..4266776
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int2 x_77 = 0;
+  int2 x_110 = 0;
+  int x_116 = 0;
+  int2 x_77_phi = 0;
+  int x_80_phi = 0;
+  int2 x_111_phi = 0;
+  int2 x_113_phi = 0;
+  float4 const x_56 = *(tint_symbol_6);
+  float2 const x_59 = x_6.resolution;
+  float2 const x_60 = (float2(x_56.x, x_56.y) / x_59);
+  int const x_63 = int((x_60.x * 8.0f));
+  int const x_66 = int((x_60.y * 8.0f));
+  int2 const x_75 = int2(((((x_63 & 5) | (x_66 & 10)) * 8) + ((x_66 & 5) | (x_63 & 10))), 0);
+  x_77_phi = x_75;
+  x_80_phi = 0;
+  while (true) {
+    int2 x_91 = 0;
+    int2 x_99 = 0;
+    int x_81 = 0;
+    int2 x_92_phi = 0;
+    int2 x_100_phi = 0;
+    x_77 = x_77_phi;
+    int const x_80 = x_80_phi;
+    if ((x_80 < 100)) {
+    } else {
+      break;
+    }
+    x_92_phi = x_77;
+    if ((x_77.x > 0)) {
+      x_91 = x_77;
+      x_91.y = (x_77.y - 1);
+      x_92_phi = x_91;
+    }
+    int2 const x_92 = x_92_phi;
+    x_100_phi = x_92;
+    if ((x_92.x < 0)) {
+      x_99 = x_92;
+      x_99.y = (x_92.y + 1);
+      x_100_phi = x_99;
+    }
+    int2 const x_100 = x_100_phi;
+    int2 x_78_1 = x_100;
+    x_78_1.x = (x_100.x + (x_100.y / 2));
+    int2 const x_78 = x_78_1;
+    {
+      x_81 = (x_80 + 1);
+      x_77_phi = x_78;
+      x_80_phi = x_81;
+    }
+  }
+  int const x_105 = x_77.x;
+  x_111_phi = x_77;
+  if ((x_105 < 0)) {
+    x_110 = int2(0, 0);
+    x_110.x = -(x_105);
+    x_111_phi = x_110;
+  }
+  int2 const x_111 = x_111_phi;
+  x_113_phi = x_111;
+  while (true) {
+    int2 x_114 = 0;
+    int2 const x_113 = x_113_phi;
+    x_116 = x_113.x;
+    if ((x_116 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_114 = int2(0, 0);
+      x_114.x = as_type<int>((x_116 - as_type<int>(16)));
+      x_113_phi = x_114;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_121 = indexable.arr[x_116];
+  *(tint_symbol_7) = x_121;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..d89e65c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.spvasm
@@ -0,0 +1,292 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 185
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_77 "x_77"
+               OpName %x_110 "x_110"
+               OpName %x_116 "x_116"
+               OpName %x_77_phi "x_77_phi"
+               OpName %x_80_phi "x_80_phi"
+               OpName %x_111_phi "x_111_phi"
+               OpName %x_113_phi "x_113_phi"
+               OpName %x_91 "x_91"
+               OpName %x_99 "x_99"
+               OpName %x_81 "x_81"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_100_phi "x_100_phi"
+               OpName %x_78_1 "x_78_1"
+               OpName %x_114 "x_114"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+        %124 = OpConstantComposite %v2int %int_0 %int_0
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %172 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_77 = OpVariable %_ptr_Function_v2int Function %29
+      %x_110 = OpVariable %_ptr_Function_v2int Function %29
+      %x_116 = OpVariable %_ptr_Function_int Function %33
+   %x_77_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_80_phi = OpVariable %_ptr_Function_int Function %33
+  %x_111_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_113_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_91 = OpVariable %_ptr_Function_v2int Function %29
+       %x_99 = OpVariable %_ptr_Function_v2int Function %29
+       %x_81 = OpVariable %_ptr_Function_int Function %33
+   %x_92_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_100_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_78_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_114 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_77_phi %66
+               OpStore %x_80_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_77_phi
+               OpStore %x_77 %76
+         %77 = OpLoad %int %x_80_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_77
+               OpStore %x_92_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_77 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_77
+               OpStore %x_91 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_91 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_77 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_91
+               OpStore %x_92_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_92_phi
+               OpStore %x_100_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_99 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_99 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_99
+               OpStore %x_100_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_100_phi
+               OpStore %x_78_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_78_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_78_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_81 %116
+               OpStore %x_77_phi %115
+        %117 = OpLoad %int %x_81
+               OpStore %x_80_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_77 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_77
+               OpStore %x_111_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+               OpStore %x_110 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_110 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_110
+               OpStore %x_111_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_111_phi
+               OpStore %x_113_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_113_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_116 %135
+        %136 = OpLoad %int %x_116
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_114 %124
+        %142 = OpAccessChain %_ptr_Function_int %x_114 %uint_0
+        %144 = OpLoad %int %x_116
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_114
+               OpStore %x_113_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %int %x_116
+        %170 = OpAccessChain %_ptr_Function_v4float %indexable %168
+        %171 = OpLoad %v4float %170
+               OpStore %x_GLF_color %171
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %172
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %176 = OpLabel
+        %177 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %177
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %179 = OpLabel
+        %180 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %180
+        %181 = OpFunctionCall %void %main_1
+        %183 = OpLoad %v4float %x_GLF_color
+        %184 = OpCompositeConstruct %main_out %183
+        %182 = OpFunctionCall %void %tint_symbol_3 %184
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..be331aa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl.expected.wgsl
@@ -0,0 +1,105 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_77 : vec2<i32>;
+  var x_110 : vec2<i32>;
+  var x_116 : i32;
+  var x_77_phi : vec2<i32>;
+  var x_80_phi : i32;
+  var x_111_phi : vec2<i32>;
+  var x_113_phi : vec2<i32>;
+  let x_56 : vec4<f32> = gl_FragCoord;
+  let x_59 : vec2<f32> = x_6.resolution;
+  let x_60 : vec2<f32> = (vec2<f32>(x_56.x, x_56.y) / x_59);
+  let x_63 : i32 = i32((x_60.x * 8.0));
+  let x_66 : i32 = i32((x_60.y * 8.0));
+  let x_75 : vec2<i32> = vec2<i32>(((((x_63 & 5) | (x_66 & 10)) * 8) + ((x_66 & 5) | (x_63 & 10))), 0);
+  x_77_phi = x_75;
+  x_80_phi = 0;
+  loop {
+    var x_91 : vec2<i32>;
+    var x_99 : vec2<i32>;
+    var x_81 : i32;
+    var x_92_phi : vec2<i32>;
+    var x_100_phi : vec2<i32>;
+    x_77 = x_77_phi;
+    let x_80 : i32 = x_80_phi;
+    if ((x_80 < 100)) {
+    } else {
+      break;
+    }
+    x_92_phi = x_77;
+    if ((x_77.x > 0)) {
+      x_91 = x_77;
+      x_91.y = (x_77.y - 1);
+      x_92_phi = x_91;
+    }
+    let x_92 : vec2<i32> = x_92_phi;
+    x_100_phi = x_92;
+    if ((x_92.x < 0)) {
+      x_99 = x_92;
+      x_99.y = (x_92.y + 1);
+      x_100_phi = x_99;
+    }
+    let x_100 : vec2<i32> = x_100_phi;
+    var x_78_1 : vec2<i32> = x_100;
+    x_78_1.x = (x_100.x + (x_100.y / 2));
+    let x_78 : vec2<i32> = x_78_1;
+
+    continuing {
+      x_81 = (x_80 + 1);
+      x_77_phi = x_78;
+      x_80_phi = x_81;
+    }
+  }
+  let x_105 : i32 = x_77.x;
+  x_111_phi = x_77;
+  if ((x_105 < 0)) {
+    x_110 = vec2<i32>(0, 0);
+    x_110.x = -(x_105);
+    x_111_phi = x_110;
+  }
+  let x_111 : vec2<i32> = x_111_phi;
+  x_113_phi = x_111;
+  loop {
+    var x_114 : vec2<i32>;
+    let x_113 : vec2<i32> = x_113_phi;
+    x_116 = x_113.x;
+    if ((x_116 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_114 = vec2<i32>(0, 0);
+      x_114.x = bitcast<i32>((x_116 - bitcast<i32>(16)));
+      x_113_phi = x_114;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_121 : vec4<f32> = indexable[x_116];
+  x_GLF_color = x_121;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm
new file mode 100644
index 0000000..d7ff45c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm
@@ -0,0 +1,167 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+       %uint = OpTypeInt 32 0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+    %int_100 = OpConstant %int 100
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %37 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %41 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %43 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %46 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %50 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %51 = OpConstantComposite %_arr_v4float_uint_16 %35 %37 %38 %39 %40 %41 %42 %43 %35 %44 %45 %46 %47 %48 %49 %50
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %54 = OpUndef %v2int
+  %float_0_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v4float %float_0_0 %float_0_0 %float_0_0 %float_0_0
+         %57 = OpConstantComposite %_arr_v4float_uint_16 %56 %56 %56 %56 %56 %56 %56 %56 %56 %56 %56 %56 %56 %56 %56 %56
+       %main = OpFunction %void None %9
+         %58 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %59 = OpLoad %v4float %gl_FragCoord
+         %60 = OpVectorShuffle %v2float %59 %59 0 1
+         %61 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %62 = OpLoad %v2float %61
+         %63 = OpFDiv %v2float %60 %62
+         %64 = OpCompositeExtract %float %63 0
+         %65 = OpFMul %float %64 %float_8
+         %66 = OpConvertFToS %int %65
+         %67 = OpCompositeExtract %float %63 1
+         %68 = OpFMul %float %67 %float_8
+         %69 = OpConvertFToS %int %68
+         %70 = OpBitwiseAnd %int %66 %int_5
+         %71 = OpBitwiseAnd %int %69 %int_10
+         %72 = OpBitwiseOr %int %70 %71
+         %73 = OpBitwiseAnd %int %69 %int_5
+         %74 = OpBitwiseAnd %int %66 %int_10
+         %75 = OpBitwiseOr %int %73 %74
+         %76 = OpIMul %int %72 %int_8
+         %77 = OpIAdd %int %76 %75
+         %78 = OpCompositeConstruct %v2int %77 %int_0
+               OpBranch %79
+         %79 = OpLabel
+         %80 = OpPhi %v2int %78 %58 %81 %82
+         %83 = OpPhi %int %int_0 %58 %84 %82
+         %85 = OpSLessThan %bool %83 %int_100
+               OpLoopMerge %86 %82 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpCompositeExtract %int %80 0
+         %89 = OpSGreaterThan %bool %88 %int_0
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+         %92 = OpCompositeExtract %int %80 1
+         %93 = OpISub %int %92 %int_1
+         %94 = OpCompositeInsert %v2int %93 %80 1
+               OpBranch %90
+         %90 = OpLabel
+         %95 = OpPhi %v2int %80 %87 %94 %91
+         %96 = OpCompositeExtract %int %95 0
+         %97 = OpSLessThan %bool %96 %int_0
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpCompositeExtract %int %95 1
+        %101 = OpIAdd %int %100 %int_1
+        %102 = OpCompositeInsert %v2int %101 %95 1
+               OpBranch %98
+         %98 = OpLabel
+        %103 = OpPhi %v2int %95 %90 %102 %99
+        %104 = OpCompositeExtract %int %103 1
+        %105 = OpSDiv %int %104 %int_2
+        %106 = OpCompositeExtract %int %103 0
+        %107 = OpIAdd %int %106 %105
+         %81 = OpCompositeInsert %v2int %107 %103 0
+               OpBranch %82
+         %82 = OpLabel
+         %84 = OpIAdd %int %83 %int_1
+               OpBranch %79
+         %86 = OpLabel
+        %108 = OpCompositeExtract %int %80 0
+        %109 = OpSLessThan %bool %108 %int_0
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpSNegate %int %108
+        %113 = OpCompositeInsert %v2int %112 %54 0
+               OpBranch %110
+        %110 = OpLabel
+        %114 = OpPhi %v2int %80 %86 %113 %111
+               OpBranch %115
+        %115 = OpLabel
+        %116 = OpPhi %v2int %114 %110 %117 %118
+        %119 = OpCompositeExtract %int %116 0
+        %120 = OpSGreaterThan %bool %119 %int_15
+               OpLoopMerge %121 %118 None
+               OpBranchConditional %120 %118 %121
+        %118 = OpLabel
+        %122 = OpISub %int %119 %int_16
+        %117 = OpCompositeInsert %v2int %122 %54 0
+               OpBranch %115
+        %121 = OpLabel
+               OpStore %indexable %51
+        %123 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %57
+               OpStore %indexable %123
+        %124 = OpAccessChain %_ptr_Function_v4float %indexable %119
+        %125 = OpLoad %v4float %124
+               OpStore %_GLF_color %125
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..9baedc8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.hlsl
@@ -0,0 +1,108 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_80 = int2(0, 0);
+  int2 x_113 = int2(0, 0);
+  int x_119 = 0;
+  int2 x_80_phi = int2(0, 0);
+  int x_83_phi = 0;
+  int2 x_114_phi = int2(0, 0);
+  int2 x_116_phi = int2(0, 0);
+  const float4 x_59 = gl_FragCoord;
+  const float2 x_62 = asfloat(x_6[0].xy);
+  const float2 x_63 = (float2(x_59.x, x_59.y) / x_62);
+  const int x_66 = int((x_63.x * 8.0f));
+  const int x_69 = int((x_63.y * 8.0f));
+  const int2 x_78 = int2(((((x_66 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_66 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = int2(0, 0);
+    int2 x_102 = int2(0, 0);
+    int x_84 = 0;
+    int2 x_95_phi = int2(0, 0);
+    int2 x_103_phi = int2(0, 0);
+    x_80 = x_80_phi;
+    const int x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    const int2 x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    const int2 x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    const int2 x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  const int x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = int2(0, 0);
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  x_116_phi = x_114_phi;
+  while (true) {
+    int2 x_117 = int2(0, 0);
+    x_119 = x_116_phi.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = int2(0, 0);
+      x_117.x = asint((x_119 - asint(16)));
+      x_116_phi = x_117;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_123[16] = indexable;
+  const float4 tint_symbol_6[16] = {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), 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), 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), 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)};
+  indexable = tint_symbol_6;
+  indexable = x_123;
+  const float4 x_125 = indexable[x_119];
+  x_GLF_color = x_125;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.msl
new file mode 100644
index 0000000..0e7d864
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  tint_array_wrapper indexable = {};
+  int2 x_80 = 0;
+  int2 x_113 = 0;
+  int x_119 = 0;
+  int2 x_80_phi = 0;
+  int x_83_phi = 0;
+  int2 x_114_phi = 0;
+  int2 x_116_phi = 0;
+  float4 const x_59 = *(tint_symbol_7);
+  float2 const x_62 = x_6.resolution;
+  float2 const x_63 = (float2(x_59.x, x_59.y) / x_62);
+  int const x_66 = int((x_63.x * 8.0f));
+  int const x_69 = int((x_63.y * 8.0f));
+  int2 const x_78 = int2(((((x_66 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_66 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = 0;
+    int2 x_102 = 0;
+    int x_84 = 0;
+    int2 x_95_phi = 0;
+    int2 x_103_phi = 0;
+    x_80 = x_80_phi;
+    int const x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    int2 const x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    int2 const x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    int2 const x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  int const x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = int2(0, 0);
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  int2 const x_114 = x_114_phi;
+  x_116_phi = x_114;
+  while (true) {
+    int2 x_117 = 0;
+    int2 const x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = int2(0, 0);
+      x_117.x = as_type<int>((x_119 - as_type<int>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  tint_array_wrapper const x_123 = indexable;
+  tint_array_wrapper const tint_symbol_5 = {.arr={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), 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), 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), 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)}};
+  indexable = tint_symbol_5;
+  indexable = x_123;
+  float4 const x_125 = indexable.arr[x_119];
+  *(tint_symbol_8) = x_125;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_6 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..0b49352
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.spvasm
@@ -0,0 +1,297 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 188
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_80 "x_80"
+               OpName %x_113 "x_113"
+               OpName %x_119 "x_119"
+               OpName %x_80_phi "x_80_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_116_phi "x_116_phi"
+               OpName %x_94 "x_94"
+               OpName %x_102 "x_102"
+               OpName %x_84 "x_84"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_81_1 "x_81_1"
+               OpName %x_117 "x_117"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+        %124 = OpConstantComposite %v2int %int_0 %int_0
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+        %169 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %170 = OpConstantComposite %_arr_v4float_uint_16 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %175 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_80 = OpVariable %_ptr_Function_v2int Function %29
+      %x_113 = OpVariable %_ptr_Function_v2int Function %29
+      %x_119 = OpVariable %_ptr_Function_int Function %33
+   %x_80_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_83_phi = OpVariable %_ptr_Function_int Function %33
+  %x_114_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_116_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_94 = OpVariable %_ptr_Function_v2int Function %29
+      %x_102 = OpVariable %_ptr_Function_v2int Function %29
+       %x_84 = OpVariable %_ptr_Function_int Function %33
+   %x_95_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_103_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_81_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_117 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_80_phi %66
+               OpStore %x_83_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_80_phi
+               OpStore %x_80 %76
+         %77 = OpLoad %int %x_83_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_80
+               OpStore %x_95_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_80
+               OpStore %x_94 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_94 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_80 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_94
+               OpStore %x_95_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_95_phi
+               OpStore %x_103_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_102 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_102 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_102
+               OpStore %x_103_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_103_phi
+               OpStore %x_81_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_81_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_81_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_84 %116
+               OpStore %x_80_phi %115
+        %117 = OpLoad %int %x_84
+               OpStore %x_83_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_80
+               OpStore %x_114_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+               OpStore %x_113 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_113 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_113
+               OpStore %x_114_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_114_phi
+               OpStore %x_116_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_116_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_119 %135
+        %136 = OpLoad %int %x_119
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_117 %124
+        %142 = OpAccessChain %_ptr_Function_int %x_117 %uint_0
+        %144 = OpLoad %int %x_119
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_117
+               OpStore %x_116_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %170
+               OpStore %indexable %168
+        %171 = OpLoad %int %x_119
+        %173 = OpAccessChain %_ptr_Function_v4float %indexable %171
+        %174 = OpLoad %v4float %173
+               OpStore %x_GLF_color %174
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %175
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %179 = OpLabel
+        %180 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %180
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %182 = OpLabel
+        %183 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %183
+        %184 = OpFunctionCall %void %main_1
+        %186 = OpLoad %v4float %x_GLF_color
+        %187 = OpCompositeConstruct %main_out %186
+        %185 = OpFunctionCall %void %tint_symbol_3 %187
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..0424d49b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.spvasm.expected.wgsl
@@ -0,0 +1,108 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_80 : vec2<i32>;
+  var x_113 : vec2<i32>;
+  var x_119 : i32;
+  var x_80_phi : vec2<i32>;
+  var x_83_phi : i32;
+  var x_114_phi : vec2<i32>;
+  var x_116_phi : vec2<i32>;
+  let x_59 : vec4<f32> = gl_FragCoord;
+  let x_62 : vec2<f32> = x_6.resolution;
+  let x_63 : vec2<f32> = (vec2<f32>(x_59.x, x_59.y) / x_62);
+  let x_66 : i32 = i32((x_63.x * 8.0));
+  let x_69 : i32 = i32((x_63.y * 8.0));
+  let x_78 : vec2<i32> = vec2<i32>(((((x_66 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_66 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  loop {
+    var x_94 : vec2<i32>;
+    var x_102 : vec2<i32>;
+    var x_84 : i32;
+    var x_95_phi : vec2<i32>;
+    var x_103_phi : vec2<i32>;
+    x_80 = x_80_phi;
+    let x_83 : i32 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    let x_95 : vec2<i32> = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    let x_103 : vec2<i32> = x_103_phi;
+    var x_81_1 : vec2<i32> = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    let x_81 : vec2<i32> = x_81_1;
+
+    continuing {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  let x_108 : i32 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = vec2<i32>(0, 0);
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  let x_114 : vec2<i32> = x_114_phi;
+  x_116_phi = x_114;
+  loop {
+    var x_117 : vec2<i32>;
+    let x_116 : vec2<i32> = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_117 = vec2<i32>(0, 0);
+      x_117.x = bitcast<i32>((x_119 - bitcast<i32>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_123 : array<vec4<f32>, 16> = indexable;
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  indexable = x_123;
+  let x_125 : vec4<f32> = indexable[x_119];
+  x_GLF_color = x_125;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
new file mode 100644
index 0000000..0424d49b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
@@ -0,0 +1,108 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_80 : vec2<i32>;
+  var x_113 : vec2<i32>;
+  var x_119 : i32;
+  var x_80_phi : vec2<i32>;
+  var x_83_phi : i32;
+  var x_114_phi : vec2<i32>;
+  var x_116_phi : vec2<i32>;
+  let x_59 : vec4<f32> = gl_FragCoord;
+  let x_62 : vec2<f32> = x_6.resolution;
+  let x_63 : vec2<f32> = (vec2<f32>(x_59.x, x_59.y) / x_62);
+  let x_66 : i32 = i32((x_63.x * 8.0));
+  let x_69 : i32 = i32((x_63.y * 8.0));
+  let x_78 : vec2<i32> = vec2<i32>(((((x_66 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_66 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  loop {
+    var x_94 : vec2<i32>;
+    var x_102 : vec2<i32>;
+    var x_84 : i32;
+    var x_95_phi : vec2<i32>;
+    var x_103_phi : vec2<i32>;
+    x_80 = x_80_phi;
+    let x_83 : i32 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    let x_95 : vec2<i32> = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    let x_103 : vec2<i32> = x_103_phi;
+    var x_81_1 : vec2<i32> = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    let x_81 : vec2<i32> = x_81_1;
+
+    continuing {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  let x_108 : i32 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = vec2<i32>(0, 0);
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  let x_114 : vec2<i32> = x_114_phi;
+  x_116_phi = x_114;
+  loop {
+    var x_117 : vec2<i32>;
+    let x_116 : vec2<i32> = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_117 = vec2<i32>(0, 0);
+      x_117.x = bitcast<i32>((x_119 - bitcast<i32>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_123 : array<vec4<f32>, 16> = indexable;
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  indexable = x_123;
+  let x_125 : vec4<f32> = indexable[x_119];
+  x_GLF_color = x_125;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..9baedc8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.hlsl
@@ -0,0 +1,108 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_80 = int2(0, 0);
+  int2 x_113 = int2(0, 0);
+  int x_119 = 0;
+  int2 x_80_phi = int2(0, 0);
+  int x_83_phi = 0;
+  int2 x_114_phi = int2(0, 0);
+  int2 x_116_phi = int2(0, 0);
+  const float4 x_59 = gl_FragCoord;
+  const float2 x_62 = asfloat(x_6[0].xy);
+  const float2 x_63 = (float2(x_59.x, x_59.y) / x_62);
+  const int x_66 = int((x_63.x * 8.0f));
+  const int x_69 = int((x_63.y * 8.0f));
+  const int2 x_78 = int2(((((x_66 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_66 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = int2(0, 0);
+    int2 x_102 = int2(0, 0);
+    int x_84 = 0;
+    int2 x_95_phi = int2(0, 0);
+    int2 x_103_phi = int2(0, 0);
+    x_80 = x_80_phi;
+    const int x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    const int2 x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    const int2 x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    const int2 x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  const int x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = int2(0, 0);
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  x_116_phi = x_114_phi;
+  while (true) {
+    int2 x_117 = int2(0, 0);
+    x_119 = x_116_phi.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = int2(0, 0);
+      x_117.x = asint((x_119 - asint(16)));
+      x_116_phi = x_117;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_123[16] = indexable;
+  const float4 tint_symbol_6[16] = {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), 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), 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), 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)};
+  indexable = tint_symbol_6;
+  indexable = x_123;
+  const float4 x_125 = indexable[x_119];
+  x_GLF_color = x_125;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.msl
new file mode 100644
index 0000000..0e7d864
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  tint_array_wrapper indexable = {};
+  int2 x_80 = 0;
+  int2 x_113 = 0;
+  int x_119 = 0;
+  int2 x_80_phi = 0;
+  int x_83_phi = 0;
+  int2 x_114_phi = 0;
+  int2 x_116_phi = 0;
+  float4 const x_59 = *(tint_symbol_7);
+  float2 const x_62 = x_6.resolution;
+  float2 const x_63 = (float2(x_59.x, x_59.y) / x_62);
+  int const x_66 = int((x_63.x * 8.0f));
+  int const x_69 = int((x_63.y * 8.0f));
+  int2 const x_78 = int2(((((x_66 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_66 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = 0;
+    int2 x_102 = 0;
+    int x_84 = 0;
+    int2 x_95_phi = 0;
+    int2 x_103_phi = 0;
+    x_80 = x_80_phi;
+    int const x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    int2 const x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    int2 const x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    int2 const x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  int const x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = int2(0, 0);
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  int2 const x_114 = x_114_phi;
+  x_116_phi = x_114;
+  while (true) {
+    int2 x_117 = 0;
+    int2 const x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = int2(0, 0);
+      x_117.x = as_type<int>((x_119 - as_type<int>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  tint_array_wrapper const x_123 = indexable;
+  tint_array_wrapper const tint_symbol_5 = {.arr={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), 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), 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), 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)}};
+  indexable = tint_symbol_5;
+  indexable = x_123;
+  float4 const x_125 = indexable.arr[x_119];
+  *(tint_symbol_8) = x_125;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_6 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..0b49352
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.spvasm
@@ -0,0 +1,297 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 188
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_80 "x_80"
+               OpName %x_113 "x_113"
+               OpName %x_119 "x_119"
+               OpName %x_80_phi "x_80_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_116_phi "x_116_phi"
+               OpName %x_94 "x_94"
+               OpName %x_102 "x_102"
+               OpName %x_84 "x_84"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_81_1 "x_81_1"
+               OpName %x_117 "x_117"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+        %124 = OpConstantComposite %v2int %int_0 %int_0
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+        %169 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %170 = OpConstantComposite %_arr_v4float_uint_16 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %175 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_80 = OpVariable %_ptr_Function_v2int Function %29
+      %x_113 = OpVariable %_ptr_Function_v2int Function %29
+      %x_119 = OpVariable %_ptr_Function_int Function %33
+   %x_80_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_83_phi = OpVariable %_ptr_Function_int Function %33
+  %x_114_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_116_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_94 = OpVariable %_ptr_Function_v2int Function %29
+      %x_102 = OpVariable %_ptr_Function_v2int Function %29
+       %x_84 = OpVariable %_ptr_Function_int Function %33
+   %x_95_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_103_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_81_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_117 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_80_phi %66
+               OpStore %x_83_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_80_phi
+               OpStore %x_80 %76
+         %77 = OpLoad %int %x_83_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_80
+               OpStore %x_95_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_80
+               OpStore %x_94 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_94 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_80 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_94
+               OpStore %x_95_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_95_phi
+               OpStore %x_103_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_102 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_102 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_102
+               OpStore %x_103_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_103_phi
+               OpStore %x_81_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_81_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_81_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_84 %116
+               OpStore %x_80_phi %115
+        %117 = OpLoad %int %x_84
+               OpStore %x_83_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_80
+               OpStore %x_114_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+               OpStore %x_113 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_113 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_113
+               OpStore %x_114_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_114_phi
+               OpStore %x_116_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_116_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_119 %135
+        %136 = OpLoad %int %x_119
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_117 %124
+        %142 = OpAccessChain %_ptr_Function_int %x_117 %uint_0
+        %144 = OpLoad %int %x_119
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_117
+               OpStore %x_116_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %170
+               OpStore %indexable %168
+        %171 = OpLoad %int %x_119
+        %173 = OpAccessChain %_ptr_Function_v4float %indexable %171
+        %174 = OpLoad %v4float %173
+               OpStore %x_GLF_color %174
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %175
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %179 = OpLabel
+        %180 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %180
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %182 = OpLabel
+        %183 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %183
+        %184 = OpFunctionCall %void %main_1
+        %186 = OpLoad %v4float %x_GLF_color
+        %187 = OpCompositeConstruct %main_out %186
+        %185 = OpFunctionCall %void %tint_symbol_3 %187
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..0424d49b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl.expected.wgsl
@@ -0,0 +1,108 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_80 : vec2<i32>;
+  var x_113 : vec2<i32>;
+  var x_119 : i32;
+  var x_80_phi : vec2<i32>;
+  var x_83_phi : i32;
+  var x_114_phi : vec2<i32>;
+  var x_116_phi : vec2<i32>;
+  let x_59 : vec4<f32> = gl_FragCoord;
+  let x_62 : vec2<f32> = x_6.resolution;
+  let x_63 : vec2<f32> = (vec2<f32>(x_59.x, x_59.y) / x_62);
+  let x_66 : i32 = i32((x_63.x * 8.0));
+  let x_69 : i32 = i32((x_63.y * 8.0));
+  let x_78 : vec2<i32> = vec2<i32>(((((x_66 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_66 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  loop {
+    var x_94 : vec2<i32>;
+    var x_102 : vec2<i32>;
+    var x_84 : i32;
+    var x_95_phi : vec2<i32>;
+    var x_103_phi : vec2<i32>;
+    x_80 = x_80_phi;
+    let x_83 : i32 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    let x_95 : vec2<i32> = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    let x_103 : vec2<i32> = x_103_phi;
+    var x_81_1 : vec2<i32> = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    let x_81 : vec2<i32> = x_81_1;
+
+    continuing {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  let x_108 : i32 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = vec2<i32>(0, 0);
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  let x_114 : vec2<i32> = x_114_phi;
+  x_116_phi = x_114;
+  loop {
+    var x_117 : vec2<i32>;
+    let x_116 : vec2<i32> = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_117 = vec2<i32>(0, 0);
+      x_117.x = bitcast<i32>((x_119 - bitcast<i32>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_123 : array<vec4<f32>, 16> = indexable;
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  indexable = x_123;
+  let x_125 : vec4<f32> = indexable[x_119];
+  x_GLF_color = x_125;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm
new file mode 100644
index 0000000..e5750e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm
@@ -0,0 +1,160 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+       %uint = OpTypeInt 32 0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+    %int_100 = OpConstant %int 100
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %37 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %41 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %43 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %46 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %50 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %51 = OpConstantComposite %_arr_v4float_uint_16 %35 %37 %38 %39 %40 %41 %42 %43 %35 %44 %45 %46 %47 %48 %49 %50
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %main = OpFunction %void None %9
+         %54 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %55 = OpLoad %v4float %gl_FragCoord
+         %56 = OpVectorShuffle %v2float %55 %55 0 1
+         %57 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %58 = OpLoad %v2float %57
+         %59 = OpFDiv %v2float %56 %58
+         %60 = OpCompositeExtract %float %59 0
+         %61 = OpFMul %float %60 %float_8
+         %62 = OpConvertFToS %int %61
+         %63 = OpCompositeExtract %float %59 1
+         %64 = OpFMul %float %63 %float_8
+         %65 = OpConvertFToS %int %64
+         %66 = OpBitwiseAnd %int %62 %int_5
+         %67 = OpBitwiseAnd %int %65 %int_10
+         %68 = OpBitwiseOr %int %66 %67
+         %69 = OpBitwiseAnd %int %65 %int_5
+         %70 = OpBitwiseAnd %int %62 %int_10
+         %71 = OpBitwiseOr %int %69 %70
+         %72 = OpIMul %int %68 %int_8
+         %73 = OpIAdd %int %72 %71
+         %74 = OpCompositeConstruct %v2int %73 %int_0
+               OpBranch %75
+         %75 = OpLabel
+         %76 = OpPhi %v2int %74 %54 %77 %78
+         %79 = OpPhi %int %int_0 %54 %80 %78
+         %81 = OpSLessThan %bool %79 %int_100
+               OpLoopMerge %82 %78 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+         %84 = OpCompositeExtract %int %76 0
+         %85 = OpSGreaterThan %bool %84 %int_0
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpCompositeExtract %int %76 1
+         %89 = OpISub %int %88 %int_1
+         %90 = OpCompositeInsert %v2int %89 %76 1
+               OpBranch %86
+         %86 = OpLabel
+         %91 = OpPhi %v2int %76 %83 %90 %87
+         %92 = OpCompositeExtract %int %91 0
+         %93 = OpSLessThan %bool %92 %int_0
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %94
+         %95 = OpLabel
+         %96 = OpCompositeExtract %int %91 1
+         %97 = OpIAdd %int %96 %int_1
+         %98 = OpCompositeInsert %v2int %97 %91 1
+               OpBranch %94
+         %94 = OpLabel
+         %99 = OpPhi %v2int %91 %86 %98 %95
+        %100 = OpCompositeExtract %int %99 1
+        %101 = OpSDiv %int %100 %int_2
+        %102 = OpCompositeExtract %int %99 0
+        %103 = OpIAdd %int %102 %101
+         %77 = OpCompositeInsert %v2int %103 %99 0
+               OpBranch %78
+         %78 = OpLabel
+         %80 = OpIAdd %int %79 %int_1
+               OpBranch %75
+         %82 = OpLabel
+        %104 = OpCompositeExtract %int %76 0
+        %105 = OpSLessThan %bool %104 %int_0
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+        %108 = OpSNegate %int %104
+        %109 = OpCompositeInsert %v2int %108 %76 0
+               OpBranch %106
+        %106 = OpLabel
+        %110 = OpPhi %v2int %76 %82 %109 %107
+               OpBranch %111
+        %111 = OpLabel
+        %112 = OpPhi %v2int %110 %106 %113 %114
+        %115 = OpCompositeExtract %int %112 0
+        %116 = OpSGreaterThan %bool %115 %int_15
+               OpLoopMerge %117 %114 None
+               OpBranchConditional %116 %114 %117
+        %114 = OpLabel
+        %118 = OpISub %int %115 %int_16
+        %113 = OpCompositeInsert %v2int %118 %112 0
+               OpBranch %111
+        %117 = OpLabel
+               OpStore %indexable %51
+        %119 = OpAccessChain %_ptr_Function_v4float %indexable %115
+        %120 = OpLoad %v4float %119
+               OpStore %_GLF_color %120
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..d58e8dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.hlsl
@@ -0,0 +1,105 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_76 = int2(0, 0);
+  int2 x_109 = int2(0, 0);
+  int x_115 = 0;
+  int2 x_76_phi = int2(0, 0);
+  int x_79_phi = 0;
+  int2 x_110_phi = int2(0, 0);
+  int2 x_112_phi = int2(0, 0);
+  const float4 x_55 = gl_FragCoord;
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_59 = (float2(x_55.x, x_55.y) / x_58);
+  const int x_62 = int((x_59.x * 8.0f));
+  const int x_65 = int((x_59.y * 8.0f));
+  const int2 x_74 = int2(((((x_62 & 5) | (x_65 & 10)) * 8) + ((x_65 & 5) | (x_62 & 10))), 0);
+  x_76_phi = x_74;
+  x_79_phi = 0;
+  while (true) {
+    int2 x_90 = int2(0, 0);
+    int2 x_98 = int2(0, 0);
+    int x_80 = 0;
+    int2 x_91_phi = int2(0, 0);
+    int2 x_99_phi = int2(0, 0);
+    x_76 = x_76_phi;
+    const int x_79 = x_79_phi;
+    if ((x_79 < 100)) {
+    } else {
+      break;
+    }
+    x_91_phi = x_76;
+    if ((x_76.x > 0)) {
+      x_90 = x_76;
+      x_90.y = (x_76.y - 1);
+      x_91_phi = x_90;
+    }
+    const int2 x_91 = x_91_phi;
+    x_99_phi = x_91;
+    if ((x_91.x < 0)) {
+      x_98 = x_91;
+      x_98.y = (x_91.y + 1);
+      x_99_phi = x_98;
+    }
+    const int2 x_99 = x_99_phi;
+    int2 x_77_1 = x_99;
+    x_77_1.x = (x_99.x + (x_99.y / 2));
+    const int2 x_77 = x_77_1;
+    {
+      x_80 = (x_79 + 1);
+      x_76_phi = x_77;
+      x_79_phi = x_80;
+    }
+  }
+  const int x_104 = x_76.x;
+  x_110_phi = x_76;
+  if ((x_104 < 0)) {
+    x_109 = x_76;
+    x_109.x = -(x_104);
+    x_110_phi = x_109;
+  }
+  x_112_phi = x_110_phi;
+  while (true) {
+    int2 x_113 = int2(0, 0);
+    const int2 x_112 = x_112_phi;
+    x_115 = x_112.x;
+    if ((x_115 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_113 = x_112;
+      x_113.x = asint((x_115 - asint(16)));
+      x_112_phi = x_113;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_120 = indexable[x_115];
+  x_GLF_color = x_120;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.msl
new file mode 100644
index 0000000..e35ddd7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int2 x_76 = 0;
+  int2 x_109 = 0;
+  int x_115 = 0;
+  int2 x_76_phi = 0;
+  int x_79_phi = 0;
+  int2 x_110_phi = 0;
+  int2 x_112_phi = 0;
+  float4 const x_55 = *(tint_symbol_6);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_59 = (float2(x_55.x, x_55.y) / x_58);
+  int const x_62 = int((x_59.x * 8.0f));
+  int const x_65 = int((x_59.y * 8.0f));
+  int2 const x_74 = int2(((((x_62 & 5) | (x_65 & 10)) * 8) + ((x_65 & 5) | (x_62 & 10))), 0);
+  x_76_phi = x_74;
+  x_79_phi = 0;
+  while (true) {
+    int2 x_90 = 0;
+    int2 x_98 = 0;
+    int x_80 = 0;
+    int2 x_91_phi = 0;
+    int2 x_99_phi = 0;
+    x_76 = x_76_phi;
+    int const x_79 = x_79_phi;
+    if ((x_79 < 100)) {
+    } else {
+      break;
+    }
+    x_91_phi = x_76;
+    if ((x_76.x > 0)) {
+      x_90 = x_76;
+      x_90.y = (x_76.y - 1);
+      x_91_phi = x_90;
+    }
+    int2 const x_91 = x_91_phi;
+    x_99_phi = x_91;
+    if ((x_91.x < 0)) {
+      x_98 = x_91;
+      x_98.y = (x_91.y + 1);
+      x_99_phi = x_98;
+    }
+    int2 const x_99 = x_99_phi;
+    int2 x_77_1 = x_99;
+    x_77_1.x = (x_99.x + (x_99.y / 2));
+    int2 const x_77 = x_77_1;
+    {
+      x_80 = (x_79 + 1);
+      x_76_phi = x_77;
+      x_79_phi = x_80;
+    }
+  }
+  int const x_104 = x_76.x;
+  x_110_phi = x_76;
+  if ((x_104 < 0)) {
+    x_109 = x_76;
+    x_109.x = -(x_104);
+    x_110_phi = x_109;
+  }
+  int2 const x_110 = x_110_phi;
+  x_112_phi = x_110;
+  while (true) {
+    int2 x_113 = 0;
+    int2 const x_112 = x_112_phi;
+    x_115 = x_112.x;
+    if ((x_115 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_113 = x_112;
+      x_113.x = as_type<int>((x_115 - as_type<int>(16)));
+      x_112_phi = x_113;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_120 = indexable.arr[x_115];
+  *(tint_symbol_7) = x_120;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..2951010
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.spvasm
@@ -0,0 +1,292 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 185
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_76 "x_76"
+               OpName %x_109 "x_109"
+               OpName %x_115 "x_115"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_79_phi "x_79_phi"
+               OpName %x_110_phi "x_110_phi"
+               OpName %x_112_phi "x_112_phi"
+               OpName %x_90 "x_90"
+               OpName %x_98 "x_98"
+               OpName %x_80 "x_80"
+               OpName %x_91_phi "x_91_phi"
+               OpName %x_99_phi "x_99_phi"
+               OpName %x_77_1 "x_77_1"
+               OpName %x_113 "x_113"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %172 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_76 = OpVariable %_ptr_Function_v2int Function %29
+      %x_109 = OpVariable %_ptr_Function_v2int Function %29
+      %x_115 = OpVariable %_ptr_Function_int Function %33
+   %x_76_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_79_phi = OpVariable %_ptr_Function_int Function %33
+  %x_110_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_112_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_90 = OpVariable %_ptr_Function_v2int Function %29
+       %x_98 = OpVariable %_ptr_Function_v2int Function %29
+       %x_80 = OpVariable %_ptr_Function_int Function %33
+   %x_91_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_99_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_77_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_113 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_76_phi %66
+               OpStore %x_79_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_76_phi
+               OpStore %x_76 %76
+         %77 = OpLoad %int %x_79_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_76
+               OpStore %x_91_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_76 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_76
+               OpStore %x_90 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_90 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_76 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_90
+               OpStore %x_91_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_91_phi
+               OpStore %x_99_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_98 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_98 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_98
+               OpStore %x_99_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_99_phi
+               OpStore %x_77_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_77_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_77_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_80 %116
+               OpStore %x_76_phi %115
+        %117 = OpLoad %int %x_80
+               OpStore %x_79_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_76 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_76
+               OpStore %x_110_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+        %124 = OpLoad %v2int %x_76
+               OpStore %x_109 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_109 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_109
+               OpStore %x_110_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_110_phi
+               OpStore %x_112_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_112_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_115 %135
+        %136 = OpLoad %int %x_115
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_113 %134
+        %142 = OpAccessChain %_ptr_Function_int %x_113 %uint_0
+        %144 = OpLoad %int %x_115
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_113
+               OpStore %x_112_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %int %x_115
+        %170 = OpAccessChain %_ptr_Function_v4float %indexable %168
+        %171 = OpLoad %v4float %170
+               OpStore %x_GLF_color %171
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %172
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %176 = OpLabel
+        %177 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %177
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %179 = OpLabel
+        %180 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %180
+        %181 = OpFunctionCall %void %main_1
+        %183 = OpLoad %v4float %x_GLF_color
+        %184 = OpCompositeConstruct %main_out %183
+        %182 = OpFunctionCall %void %tint_symbol_3 %184
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..8fe4ab4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.spvasm.expected.wgsl
@@ -0,0 +1,105 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_76 : vec2<i32>;
+  var x_109 : vec2<i32>;
+  var x_115 : i32;
+  var x_76_phi : vec2<i32>;
+  var x_79_phi : i32;
+  var x_110_phi : vec2<i32>;
+  var x_112_phi : vec2<i32>;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  let x_62 : i32 = i32((x_59.x * 8.0));
+  let x_65 : i32 = i32((x_59.y * 8.0));
+  let x_74 : vec2<i32> = vec2<i32>(((((x_62 & 5) | (x_65 & 10)) * 8) + ((x_65 & 5) | (x_62 & 10))), 0);
+  x_76_phi = x_74;
+  x_79_phi = 0;
+  loop {
+    var x_90 : vec2<i32>;
+    var x_98 : vec2<i32>;
+    var x_80 : i32;
+    var x_91_phi : vec2<i32>;
+    var x_99_phi : vec2<i32>;
+    x_76 = x_76_phi;
+    let x_79 : i32 = x_79_phi;
+    if ((x_79 < 100)) {
+    } else {
+      break;
+    }
+    x_91_phi = x_76;
+    if ((x_76.x > 0)) {
+      x_90 = x_76;
+      x_90.y = (x_76.y - 1);
+      x_91_phi = x_90;
+    }
+    let x_91 : vec2<i32> = x_91_phi;
+    x_99_phi = x_91;
+    if ((x_91.x < 0)) {
+      x_98 = x_91;
+      x_98.y = (x_91.y + 1);
+      x_99_phi = x_98;
+    }
+    let x_99 : vec2<i32> = x_99_phi;
+    var x_77_1 : vec2<i32> = x_99;
+    x_77_1.x = (x_99.x + (x_99.y / 2));
+    let x_77 : vec2<i32> = x_77_1;
+
+    continuing {
+      x_80 = (x_79 + 1);
+      x_76_phi = x_77;
+      x_79_phi = x_80;
+    }
+  }
+  let x_104 : i32 = x_76.x;
+  x_110_phi = x_76;
+  if ((x_104 < 0)) {
+    x_109 = x_76;
+    x_109.x = -(x_104);
+    x_110_phi = x_109;
+  }
+  let x_110 : vec2<i32> = x_110_phi;
+  x_112_phi = x_110;
+  loop {
+    var x_113 : vec2<i32>;
+    let x_112 : vec2<i32> = x_112_phi;
+    x_115 = x_112.x;
+    if ((x_115 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_113 = x_112;
+      x_113.x = bitcast<i32>((x_115 - bitcast<i32>(16)));
+      x_112_phi = x_113;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_120 : vec4<f32> = indexable[x_115];
+  x_GLF_color = x_120;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
new file mode 100644
index 0000000..8fe4ab4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
@@ -0,0 +1,105 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_76 : vec2<i32>;
+  var x_109 : vec2<i32>;
+  var x_115 : i32;
+  var x_76_phi : vec2<i32>;
+  var x_79_phi : i32;
+  var x_110_phi : vec2<i32>;
+  var x_112_phi : vec2<i32>;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  let x_62 : i32 = i32((x_59.x * 8.0));
+  let x_65 : i32 = i32((x_59.y * 8.0));
+  let x_74 : vec2<i32> = vec2<i32>(((((x_62 & 5) | (x_65 & 10)) * 8) + ((x_65 & 5) | (x_62 & 10))), 0);
+  x_76_phi = x_74;
+  x_79_phi = 0;
+  loop {
+    var x_90 : vec2<i32>;
+    var x_98 : vec2<i32>;
+    var x_80 : i32;
+    var x_91_phi : vec2<i32>;
+    var x_99_phi : vec2<i32>;
+    x_76 = x_76_phi;
+    let x_79 : i32 = x_79_phi;
+    if ((x_79 < 100)) {
+    } else {
+      break;
+    }
+    x_91_phi = x_76;
+    if ((x_76.x > 0)) {
+      x_90 = x_76;
+      x_90.y = (x_76.y - 1);
+      x_91_phi = x_90;
+    }
+    let x_91 : vec2<i32> = x_91_phi;
+    x_99_phi = x_91;
+    if ((x_91.x < 0)) {
+      x_98 = x_91;
+      x_98.y = (x_91.y + 1);
+      x_99_phi = x_98;
+    }
+    let x_99 : vec2<i32> = x_99_phi;
+    var x_77_1 : vec2<i32> = x_99;
+    x_77_1.x = (x_99.x + (x_99.y / 2));
+    let x_77 : vec2<i32> = x_77_1;
+
+    continuing {
+      x_80 = (x_79 + 1);
+      x_76_phi = x_77;
+      x_79_phi = x_80;
+    }
+  }
+  let x_104 : i32 = x_76.x;
+  x_110_phi = x_76;
+  if ((x_104 < 0)) {
+    x_109 = x_76;
+    x_109.x = -(x_104);
+    x_110_phi = x_109;
+  }
+  let x_110 : vec2<i32> = x_110_phi;
+  x_112_phi = x_110;
+  loop {
+    var x_113 : vec2<i32>;
+    let x_112 : vec2<i32> = x_112_phi;
+    x_115 = x_112.x;
+    if ((x_115 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_113 = x_112;
+      x_113.x = bitcast<i32>((x_115 - bitcast<i32>(16)));
+      x_112_phi = x_113;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_120 : vec4<f32> = indexable[x_115];
+  x_GLF_color = x_120;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..d58e8dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.hlsl
@@ -0,0 +1,105 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_76 = int2(0, 0);
+  int2 x_109 = int2(0, 0);
+  int x_115 = 0;
+  int2 x_76_phi = int2(0, 0);
+  int x_79_phi = 0;
+  int2 x_110_phi = int2(0, 0);
+  int2 x_112_phi = int2(0, 0);
+  const float4 x_55 = gl_FragCoord;
+  const float2 x_58 = asfloat(x_6[0].xy);
+  const float2 x_59 = (float2(x_55.x, x_55.y) / x_58);
+  const int x_62 = int((x_59.x * 8.0f));
+  const int x_65 = int((x_59.y * 8.0f));
+  const int2 x_74 = int2(((((x_62 & 5) | (x_65 & 10)) * 8) + ((x_65 & 5) | (x_62 & 10))), 0);
+  x_76_phi = x_74;
+  x_79_phi = 0;
+  while (true) {
+    int2 x_90 = int2(0, 0);
+    int2 x_98 = int2(0, 0);
+    int x_80 = 0;
+    int2 x_91_phi = int2(0, 0);
+    int2 x_99_phi = int2(0, 0);
+    x_76 = x_76_phi;
+    const int x_79 = x_79_phi;
+    if ((x_79 < 100)) {
+    } else {
+      break;
+    }
+    x_91_phi = x_76;
+    if ((x_76.x > 0)) {
+      x_90 = x_76;
+      x_90.y = (x_76.y - 1);
+      x_91_phi = x_90;
+    }
+    const int2 x_91 = x_91_phi;
+    x_99_phi = x_91;
+    if ((x_91.x < 0)) {
+      x_98 = x_91;
+      x_98.y = (x_91.y + 1);
+      x_99_phi = x_98;
+    }
+    const int2 x_99 = x_99_phi;
+    int2 x_77_1 = x_99;
+    x_77_1.x = (x_99.x + (x_99.y / 2));
+    const int2 x_77 = x_77_1;
+    {
+      x_80 = (x_79 + 1);
+      x_76_phi = x_77;
+      x_79_phi = x_80;
+    }
+  }
+  const int x_104 = x_76.x;
+  x_110_phi = x_76;
+  if ((x_104 < 0)) {
+    x_109 = x_76;
+    x_109.x = -(x_104);
+    x_110_phi = x_109;
+  }
+  x_112_phi = x_110_phi;
+  while (true) {
+    int2 x_113 = int2(0, 0);
+    const int2 x_112 = x_112_phi;
+    x_115 = x_112.x;
+    if ((x_115 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_113 = x_112;
+      x_113.x = asint((x_115 - asint(16)));
+      x_112_phi = x_113;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_120 = indexable[x_115];
+  x_GLF_color = x_120;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.msl
new file mode 100644
index 0000000..e35ddd7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int2 x_76 = 0;
+  int2 x_109 = 0;
+  int x_115 = 0;
+  int2 x_76_phi = 0;
+  int x_79_phi = 0;
+  int2 x_110_phi = 0;
+  int2 x_112_phi = 0;
+  float4 const x_55 = *(tint_symbol_6);
+  float2 const x_58 = x_6.resolution;
+  float2 const x_59 = (float2(x_55.x, x_55.y) / x_58);
+  int const x_62 = int((x_59.x * 8.0f));
+  int const x_65 = int((x_59.y * 8.0f));
+  int2 const x_74 = int2(((((x_62 & 5) | (x_65 & 10)) * 8) + ((x_65 & 5) | (x_62 & 10))), 0);
+  x_76_phi = x_74;
+  x_79_phi = 0;
+  while (true) {
+    int2 x_90 = 0;
+    int2 x_98 = 0;
+    int x_80 = 0;
+    int2 x_91_phi = 0;
+    int2 x_99_phi = 0;
+    x_76 = x_76_phi;
+    int const x_79 = x_79_phi;
+    if ((x_79 < 100)) {
+    } else {
+      break;
+    }
+    x_91_phi = x_76;
+    if ((x_76.x > 0)) {
+      x_90 = x_76;
+      x_90.y = (x_76.y - 1);
+      x_91_phi = x_90;
+    }
+    int2 const x_91 = x_91_phi;
+    x_99_phi = x_91;
+    if ((x_91.x < 0)) {
+      x_98 = x_91;
+      x_98.y = (x_91.y + 1);
+      x_99_phi = x_98;
+    }
+    int2 const x_99 = x_99_phi;
+    int2 x_77_1 = x_99;
+    x_77_1.x = (x_99.x + (x_99.y / 2));
+    int2 const x_77 = x_77_1;
+    {
+      x_80 = (x_79 + 1);
+      x_76_phi = x_77;
+      x_79_phi = x_80;
+    }
+  }
+  int const x_104 = x_76.x;
+  x_110_phi = x_76;
+  if ((x_104 < 0)) {
+    x_109 = x_76;
+    x_109.x = -(x_104);
+    x_110_phi = x_109;
+  }
+  int2 const x_110 = x_110_phi;
+  x_112_phi = x_110;
+  while (true) {
+    int2 x_113 = 0;
+    int2 const x_112 = x_112_phi;
+    x_115 = x_112.x;
+    if ((x_115 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_113 = x_112;
+      x_113.x = as_type<int>((x_115 - as_type<int>(16)));
+      x_112_phi = x_113;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_120 = indexable.arr[x_115];
+  *(tint_symbol_7) = x_120;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..2951010
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.spvasm
@@ -0,0 +1,292 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 185
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_76 "x_76"
+               OpName %x_109 "x_109"
+               OpName %x_115 "x_115"
+               OpName %x_76_phi "x_76_phi"
+               OpName %x_79_phi "x_79_phi"
+               OpName %x_110_phi "x_110_phi"
+               OpName %x_112_phi "x_112_phi"
+               OpName %x_90 "x_90"
+               OpName %x_98 "x_98"
+               OpName %x_80 "x_80"
+               OpName %x_91_phi "x_91_phi"
+               OpName %x_99_phi "x_99_phi"
+               OpName %x_77_1 "x_77_1"
+               OpName %x_113 "x_113"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %172 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_76 = OpVariable %_ptr_Function_v2int Function %29
+      %x_109 = OpVariable %_ptr_Function_v2int Function %29
+      %x_115 = OpVariable %_ptr_Function_int Function %33
+   %x_76_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_79_phi = OpVariable %_ptr_Function_int Function %33
+  %x_110_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_112_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_90 = OpVariable %_ptr_Function_v2int Function %29
+       %x_98 = OpVariable %_ptr_Function_v2int Function %29
+       %x_80 = OpVariable %_ptr_Function_int Function %33
+   %x_91_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_99_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_77_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_113 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_76_phi %66
+               OpStore %x_79_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_76_phi
+               OpStore %x_76 %76
+         %77 = OpLoad %int %x_79_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_76
+               OpStore %x_91_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_76 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_76
+               OpStore %x_90 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_90 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_76 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_90
+               OpStore %x_91_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_91_phi
+               OpStore %x_99_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_98 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_98 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_98
+               OpStore %x_99_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_99_phi
+               OpStore %x_77_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_77_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_77_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_80 %116
+               OpStore %x_76_phi %115
+        %117 = OpLoad %int %x_80
+               OpStore %x_79_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_76 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_76
+               OpStore %x_110_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+        %124 = OpLoad %v2int %x_76
+               OpStore %x_109 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_109 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_109
+               OpStore %x_110_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_110_phi
+               OpStore %x_112_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_112_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_115 %135
+        %136 = OpLoad %int %x_115
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_113 %134
+        %142 = OpAccessChain %_ptr_Function_int %x_113 %uint_0
+        %144 = OpLoad %int %x_115
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_113
+               OpStore %x_112_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %int %x_115
+        %170 = OpAccessChain %_ptr_Function_v4float %indexable %168
+        %171 = OpLoad %v4float %170
+               OpStore %x_GLF_color %171
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %172
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %176 = OpLabel
+        %177 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %177
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %179 = OpLabel
+        %180 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %180
+        %181 = OpFunctionCall %void %main_1
+        %183 = OpLoad %v4float %x_GLF_color
+        %184 = OpCompositeConstruct %main_out %183
+        %182 = OpFunctionCall %void %tint_symbol_3 %184
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..8fe4ab4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl.expected.wgsl
@@ -0,0 +1,105 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_76 : vec2<i32>;
+  var x_109 : vec2<i32>;
+  var x_115 : i32;
+  var x_76_phi : vec2<i32>;
+  var x_79_phi : i32;
+  var x_110_phi : vec2<i32>;
+  var x_112_phi : vec2<i32>;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_6.resolution;
+  let x_59 : vec2<f32> = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  let x_62 : i32 = i32((x_59.x * 8.0));
+  let x_65 : i32 = i32((x_59.y * 8.0));
+  let x_74 : vec2<i32> = vec2<i32>(((((x_62 & 5) | (x_65 & 10)) * 8) + ((x_65 & 5) | (x_62 & 10))), 0);
+  x_76_phi = x_74;
+  x_79_phi = 0;
+  loop {
+    var x_90 : vec2<i32>;
+    var x_98 : vec2<i32>;
+    var x_80 : i32;
+    var x_91_phi : vec2<i32>;
+    var x_99_phi : vec2<i32>;
+    x_76 = x_76_phi;
+    let x_79 : i32 = x_79_phi;
+    if ((x_79 < 100)) {
+    } else {
+      break;
+    }
+    x_91_phi = x_76;
+    if ((x_76.x > 0)) {
+      x_90 = x_76;
+      x_90.y = (x_76.y - 1);
+      x_91_phi = x_90;
+    }
+    let x_91 : vec2<i32> = x_91_phi;
+    x_99_phi = x_91;
+    if ((x_91.x < 0)) {
+      x_98 = x_91;
+      x_98.y = (x_91.y + 1);
+      x_99_phi = x_98;
+    }
+    let x_99 : vec2<i32> = x_99_phi;
+    var x_77_1 : vec2<i32> = x_99;
+    x_77_1.x = (x_99.x + (x_99.y / 2));
+    let x_77 : vec2<i32> = x_77_1;
+
+    continuing {
+      x_80 = (x_79 + 1);
+      x_76_phi = x_77;
+      x_79_phi = x_80;
+    }
+  }
+  let x_104 : i32 = x_76.x;
+  x_110_phi = x_76;
+  if ((x_104 < 0)) {
+    x_109 = x_76;
+    x_109.x = -(x_104);
+    x_110_phi = x_109;
+  }
+  let x_110 : vec2<i32> = x_110_phi;
+  x_112_phi = x_110;
+  loop {
+    var x_113 : vec2<i32>;
+    let x_112 : vec2<i32> = x_112_phi;
+    x_115 = x_112.x;
+    if ((x_115 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_113 = x_112;
+      x_113.x = bitcast<i32>((x_115 - bitcast<i32>(16)));
+      x_112_phi = x_113;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_120 : vec4<f32> = indexable[x_115];
+  x_GLF_color = x_120;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm
new file mode 100644
index 0000000..bccf1c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm
@@ -0,0 +1,167 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+       %uint = OpTypeInt 32 0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+    %int_100 = OpConstant %int 100
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %37 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %41 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %43 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %46 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %50 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %51 = OpConstantComposite %_arr_v4float_uint_16 %35 %37 %38 %39 %40 %41 %42 %43 %35 %44 %45 %46 %47 %48 %49 %50
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+  %float_0_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0_0 %float_0_0 %float_0_0 %float_0_0
+         %56 = OpConstantComposite %_arr_v4float_uint_16 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55
+       %main = OpFunction %void None %9
+         %57 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %58 = OpLoad %v4float %gl_FragCoord
+         %59 = OpVectorShuffle %v2float %58 %58 0 1
+         %60 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %61 = OpLoad %v2float %60
+         %62 = OpFDiv %v2float %59 %61
+         %63 = OpCompositeExtract %float %62 0
+         %64 = OpFMul %float %63 %float_8
+         %65 = OpConvertFToS %int %64
+         %66 = OpAccessChain %_ptr_Function__arr_v4float_uint_16 %indexable
+         %67 = OpCompositeExtract %float %62 1
+         %68 = OpFMul %float %67 %float_8
+         %69 = OpConvertFToS %int %68
+         %70 = OpBitwiseAnd %int %65 %int_5
+         %71 = OpBitwiseAnd %int %69 %int_10
+         %72 = OpBitwiseOr %int %70 %71
+         %73 = OpBitwiseAnd %int %69 %int_5
+         %74 = OpBitwiseAnd %int %65 %int_10
+         %75 = OpBitwiseOr %int %73 %74
+         %76 = OpIMul %int %72 %int_8
+         %77 = OpIAdd %int %76 %75
+         %78 = OpCompositeConstruct %v2int %77 %int_0
+               OpBranch %79
+         %79 = OpLabel
+         %80 = OpPhi %v2int %78 %57 %81 %82
+         %83 = OpPhi %int %int_0 %57 %84 %82
+         %85 = OpSLessThan %bool %83 %int_100
+               OpLoopMerge %86 %82 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpCompositeExtract %int %80 0
+         %89 = OpSGreaterThan %bool %88 %int_0
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+         %92 = OpCompositeExtract %int %80 1
+         %93 = OpISub %int %92 %int_1
+         %94 = OpCompositeInsert %v2int %93 %80 1
+               OpBranch %90
+         %90 = OpLabel
+         %95 = OpPhi %v2int %80 %87 %94 %91
+         %96 = OpCompositeExtract %int %95 0
+         %97 = OpSLessThan %bool %96 %int_0
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpCompositeExtract %int %95 1
+        %101 = OpIAdd %int %100 %int_1
+        %102 = OpCompositeInsert %v2int %101 %95 1
+               OpBranch %98
+         %98 = OpLabel
+        %103 = OpPhi %v2int %95 %90 %102 %99
+        %104 = OpCompositeExtract %int %103 1
+        %105 = OpSDiv %int %104 %int_2
+        %106 = OpCompositeExtract %int %103 0
+        %107 = OpIAdd %int %106 %105
+         %81 = OpCompositeInsert %v2int %107 %103 0
+               OpBranch %82
+         %82 = OpLabel
+         %84 = OpIAdd %int %83 %int_1
+               OpBranch %79
+         %86 = OpLabel
+        %108 = OpCompositeExtract %int %80 0
+        %109 = OpSLessThan %bool %108 %int_0
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpSNegate %int %108
+        %113 = OpCompositeInsert %v2int %112 %80 0
+               OpBranch %110
+        %110 = OpLabel
+        %114 = OpPhi %v2int %80 %86 %113 %111
+               OpBranch %115
+        %115 = OpLabel
+        %116 = OpPhi %v2int %114 %110 %117 %118
+        %119 = OpCompositeExtract %int %116 0
+        %120 = OpSGreaterThan %bool %119 %int_15
+               OpLoopMerge %121 %118 None
+               OpBranchConditional %120 %118 %121
+        %118 = OpLabel
+        %122 = OpISub %int %119 %int_16
+        %117 = OpCompositeInsert %v2int %122 %116 0
+               OpBranch %115
+        %121 = OpLabel
+               OpStore %indexable %51
+        %123 = OpAccessChain %_ptr_Function_v4float %indexable %119
+        %124 = OpLoad %_arr_v4float_uint_16 %66
+               OpStore %66 %56
+               OpStore %66 %124
+        %125 = OpLoad %v4float %123
+               OpStore %_GLF_color %125
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..64c4e84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.hlsl
@@ -0,0 +1,109 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_80 = int2(0, 0);
+  int2 x_113 = int2(0, 0);
+  int x_119 = 0;
+  int2 x_80_phi = int2(0, 0);
+  int x_83_phi = 0;
+  int2 x_114_phi = int2(0, 0);
+  int2 x_116_phi = int2(0, 0);
+  const float4 x_58 = gl_FragCoord;
+  const float2 x_61 = asfloat(x_6[0].xy);
+  const float2 x_62 = (float2(x_58.x, x_58.y) / x_61);
+  const int x_65 = int((x_62.x * 8.0f));
+  const int x_69 = int((x_62.y * 8.0f));
+  const int2 x_78 = int2(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = int2(0, 0);
+    int2 x_102 = int2(0, 0);
+    int x_84 = 0;
+    int2 x_95_phi = int2(0, 0);
+    int2 x_103_phi = int2(0, 0);
+    x_80 = x_80_phi;
+    const int x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    const int2 x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    const int2 x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    const int2 x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  const int x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  x_116_phi = x_114_phi;
+  while (true) {
+    int2 x_117 = int2(0, 0);
+    const int2 x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = x_116;
+      x_117.x = asint((x_119 - asint(16)));
+      x_116_phi = x_117;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_124[16] = indexable;
+  const float4 tint_symbol_6[16] = {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), 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), 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), 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)};
+  indexable = tint_symbol_6;
+  indexable = x_124;
+  const float4 x_125 = indexable[x_119];
+  x_GLF_color = x_125;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.msl
new file mode 100644
index 0000000..6b28e63
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  tint_array_wrapper indexable = {};
+  int2 x_80 = 0;
+  int2 x_113 = 0;
+  int x_119 = 0;
+  int2 x_80_phi = 0;
+  int x_83_phi = 0;
+  int2 x_114_phi = 0;
+  int2 x_116_phi = 0;
+  float4 const x_58 = *(tint_symbol_7);
+  float2 const x_61 = x_6.resolution;
+  float2 const x_62 = (float2(x_58.x, x_58.y) / x_61);
+  int const x_65 = int((x_62.x * 8.0f));
+  int const x_69 = int((x_62.y * 8.0f));
+  int2 const x_78 = int2(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = 0;
+    int2 x_102 = 0;
+    int x_84 = 0;
+    int2 x_95_phi = 0;
+    int2 x_103_phi = 0;
+    x_80 = x_80_phi;
+    int const x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    int2 const x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    int2 const x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    int2 const x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  int const x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  int2 const x_114 = x_114_phi;
+  x_116_phi = x_114;
+  while (true) {
+    int2 x_117 = 0;
+    int2 const x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = x_116;
+      x_117.x = as_type<int>((x_119 - as_type<int>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  tint_array_wrapper const x_124 = indexable;
+  tint_array_wrapper const tint_symbol_5 = {.arr={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), 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), 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), 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)}};
+  indexable = tint_symbol_5;
+  indexable = x_124;
+  float4 const x_125 = indexable.arr[x_119];
+  *(tint_symbol_8) = x_125;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_6 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..af0b70a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.spvasm
@@ -0,0 +1,297 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 188
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_80 "x_80"
+               OpName %x_113 "x_113"
+               OpName %x_119 "x_119"
+               OpName %x_80_phi "x_80_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_116_phi "x_116_phi"
+               OpName %x_94 "x_94"
+               OpName %x_102 "x_102"
+               OpName %x_84 "x_84"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_81_1 "x_81_1"
+               OpName %x_117 "x_117"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+        %169 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %170 = OpConstantComposite %_arr_v4float_uint_16 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %175 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_80 = OpVariable %_ptr_Function_v2int Function %29
+      %x_113 = OpVariable %_ptr_Function_v2int Function %29
+      %x_119 = OpVariable %_ptr_Function_int Function %33
+   %x_80_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_83_phi = OpVariable %_ptr_Function_int Function %33
+  %x_114_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_116_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_94 = OpVariable %_ptr_Function_v2int Function %29
+      %x_102 = OpVariable %_ptr_Function_v2int Function %29
+       %x_84 = OpVariable %_ptr_Function_int Function %33
+   %x_95_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_103_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_81_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_117 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_80_phi %66
+               OpStore %x_83_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_80_phi
+               OpStore %x_80 %76
+         %77 = OpLoad %int %x_83_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_80
+               OpStore %x_95_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_80
+               OpStore %x_94 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_94 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_80 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_94
+               OpStore %x_95_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_95_phi
+               OpStore %x_103_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_102 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_102 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_102
+               OpStore %x_103_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_103_phi
+               OpStore %x_81_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_81_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_81_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_84 %116
+               OpStore %x_80_phi %115
+        %117 = OpLoad %int %x_84
+               OpStore %x_83_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_80
+               OpStore %x_114_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+        %124 = OpLoad %v2int %x_80
+               OpStore %x_113 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_113 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_113
+               OpStore %x_114_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_114_phi
+               OpStore %x_116_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_116_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_119 %135
+        %136 = OpLoad %int %x_119
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_117 %134
+        %142 = OpAccessChain %_ptr_Function_int %x_117 %uint_0
+        %144 = OpLoad %int %x_119
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_117
+               OpStore %x_116_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %170
+               OpStore %indexable %168
+        %171 = OpLoad %int %x_119
+        %173 = OpAccessChain %_ptr_Function_v4float %indexable %171
+        %174 = OpLoad %v4float %173
+               OpStore %x_GLF_color %174
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %175
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %179 = OpLabel
+        %180 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %180
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %182 = OpLabel
+        %183 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %183
+        %184 = OpFunctionCall %void %main_1
+        %186 = OpLoad %v4float %x_GLF_color
+        %187 = OpCompositeConstruct %main_out %186
+        %185 = OpFunctionCall %void %tint_symbol_3 %187
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..f0b6447
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.spvasm.expected.wgsl
@@ -0,0 +1,109 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_80 : vec2<i32>;
+  var x_113 : vec2<i32>;
+  var x_119 : i32;
+  var x_80_phi : vec2<i32>;
+  var x_83_phi : i32;
+  var x_114_phi : vec2<i32>;
+  var x_116_phi : vec2<i32>;
+  let x_58 : vec4<f32> = gl_FragCoord;
+  let x_61 : vec2<f32> = x_6.resolution;
+  let x_62 : vec2<f32> = (vec2<f32>(x_58.x, x_58.y) / x_61);
+  let x_65 : i32 = i32((x_62.x * 8.0));
+  let x_66 : ptr<function, array<vec4<f32>, 16>> = &(indexable);
+  let x_69 : i32 = i32((x_62.y * 8.0));
+  let x_78 : vec2<i32> = vec2<i32>(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  loop {
+    var x_94 : vec2<i32>;
+    var x_102 : vec2<i32>;
+    var x_84 : i32;
+    var x_95_phi : vec2<i32>;
+    var x_103_phi : vec2<i32>;
+    x_80 = x_80_phi;
+    let x_83 : i32 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    let x_95 : vec2<i32> = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    let x_103 : vec2<i32> = x_103_phi;
+    var x_81_1 : vec2<i32> = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    let x_81 : vec2<i32> = x_81_1;
+
+    continuing {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  let x_108 : i32 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  let x_114 : vec2<i32> = x_114_phi;
+  x_116_phi = x_114;
+  loop {
+    var x_117 : vec2<i32>;
+    let x_116 : vec2<i32> = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_117 = x_116;
+      x_117.x = bitcast<i32>((x_119 - bitcast<i32>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_124 : array<vec4<f32>, 16> = *(x_66);
+  *(x_66) = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  *(x_66) = x_124;
+  let x_125 : vec4<f32> = indexable[x_119];
+  x_GLF_color = x_125;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
new file mode 100644
index 0000000..f0b6447
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
@@ -0,0 +1,109 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_80 : vec2<i32>;
+  var x_113 : vec2<i32>;
+  var x_119 : i32;
+  var x_80_phi : vec2<i32>;
+  var x_83_phi : i32;
+  var x_114_phi : vec2<i32>;
+  var x_116_phi : vec2<i32>;
+  let x_58 : vec4<f32> = gl_FragCoord;
+  let x_61 : vec2<f32> = x_6.resolution;
+  let x_62 : vec2<f32> = (vec2<f32>(x_58.x, x_58.y) / x_61);
+  let x_65 : i32 = i32((x_62.x * 8.0));
+  let x_66 : ptr<function, array<vec4<f32>, 16>> = &(indexable);
+  let x_69 : i32 = i32((x_62.y * 8.0));
+  let x_78 : vec2<i32> = vec2<i32>(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  loop {
+    var x_94 : vec2<i32>;
+    var x_102 : vec2<i32>;
+    var x_84 : i32;
+    var x_95_phi : vec2<i32>;
+    var x_103_phi : vec2<i32>;
+    x_80 = x_80_phi;
+    let x_83 : i32 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    let x_95 : vec2<i32> = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    let x_103 : vec2<i32> = x_103_phi;
+    var x_81_1 : vec2<i32> = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    let x_81 : vec2<i32> = x_81_1;
+
+    continuing {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  let x_108 : i32 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  let x_114 : vec2<i32> = x_114_phi;
+  x_116_phi = x_114;
+  loop {
+    var x_117 : vec2<i32>;
+    let x_116 : vec2<i32> = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_117 = x_116;
+      x_117.x = bitcast<i32>((x_119 - bitcast<i32>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_124 : array<vec4<f32>, 16> = *(x_66);
+  *(x_66) = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  *(x_66) = x_124;
+  let x_125 : vec4<f32> = indexable[x_119];
+  x_GLF_color = x_125;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..64c4e84
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.hlsl
@@ -0,0 +1,109 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_80 = int2(0, 0);
+  int2 x_113 = int2(0, 0);
+  int x_119 = 0;
+  int2 x_80_phi = int2(0, 0);
+  int x_83_phi = 0;
+  int2 x_114_phi = int2(0, 0);
+  int2 x_116_phi = int2(0, 0);
+  const float4 x_58 = gl_FragCoord;
+  const float2 x_61 = asfloat(x_6[0].xy);
+  const float2 x_62 = (float2(x_58.x, x_58.y) / x_61);
+  const int x_65 = int((x_62.x * 8.0f));
+  const int x_69 = int((x_62.y * 8.0f));
+  const int2 x_78 = int2(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = int2(0, 0);
+    int2 x_102 = int2(0, 0);
+    int x_84 = 0;
+    int2 x_95_phi = int2(0, 0);
+    int2 x_103_phi = int2(0, 0);
+    x_80 = x_80_phi;
+    const int x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    const int2 x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    const int2 x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    const int2 x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  const int x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  x_116_phi = x_114_phi;
+  while (true) {
+    int2 x_117 = int2(0, 0);
+    const int2 x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = x_116;
+      x_117.x = asint((x_119 - asint(16)));
+      x_116_phi = x_117;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_124[16] = indexable;
+  const float4 tint_symbol_6[16] = {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), 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), 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), 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)};
+  indexable = tint_symbol_6;
+  indexable = x_124;
+  const float4 x_125 = indexable[x_119];
+  x_GLF_color = x_125;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_7 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.msl
new file mode 100644
index 0000000..6b28e63
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.msl
@@ -0,0 +1,112 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  tint_array_wrapper indexable = {};
+  int2 x_80 = 0;
+  int2 x_113 = 0;
+  int x_119 = 0;
+  int2 x_80_phi = 0;
+  int x_83_phi = 0;
+  int2 x_114_phi = 0;
+  int2 x_116_phi = 0;
+  float4 const x_58 = *(tint_symbol_7);
+  float2 const x_61 = x_6.resolution;
+  float2 const x_62 = (float2(x_58.x, x_58.y) / x_61);
+  int const x_65 = int((x_62.x * 8.0f));
+  int const x_69 = int((x_62.y * 8.0f));
+  int2 const x_78 = int2(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = 0;
+    int2 x_102 = 0;
+    int x_84 = 0;
+    int2 x_95_phi = 0;
+    int2 x_103_phi = 0;
+    x_80 = x_80_phi;
+    int const x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    int2 const x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    int2 const x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    int2 const x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  int const x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  int2 const x_114 = x_114_phi;
+  x_116_phi = x_114;
+  while (true) {
+    int2 x_117 = 0;
+    int2 const x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = x_116;
+      x_117.x = as_type<int>((x_119 - as_type<int>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  tint_array_wrapper const x_124 = indexable;
+  tint_array_wrapper const tint_symbol_5 = {.arr={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), 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), 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), 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)}};
+  indexable = tint_symbol_5;
+  indexable = x_124;
+  float4 const x_125 = indexable.arr[x_119];
+  *(tint_symbol_8) = x_125;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_6 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..af0b70a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.spvasm
@@ -0,0 +1,297 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 188
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_80 "x_80"
+               OpName %x_113 "x_113"
+               OpName %x_119 "x_119"
+               OpName %x_80_phi "x_80_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_116_phi "x_116_phi"
+               OpName %x_94 "x_94"
+               OpName %x_102 "x_102"
+               OpName %x_84 "x_84"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_81_1 "x_81_1"
+               OpName %x_117 "x_117"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+        %169 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %170 = OpConstantComposite %_arr_v4float_uint_16 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169 %169
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %175 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_80 = OpVariable %_ptr_Function_v2int Function %29
+      %x_113 = OpVariable %_ptr_Function_v2int Function %29
+      %x_119 = OpVariable %_ptr_Function_int Function %33
+   %x_80_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_83_phi = OpVariable %_ptr_Function_int Function %33
+  %x_114_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_116_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_94 = OpVariable %_ptr_Function_v2int Function %29
+      %x_102 = OpVariable %_ptr_Function_v2int Function %29
+       %x_84 = OpVariable %_ptr_Function_int Function %33
+   %x_95_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_103_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_81_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_117 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_80_phi %66
+               OpStore %x_83_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_80_phi
+               OpStore %x_80 %76
+         %77 = OpLoad %int %x_83_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_80
+               OpStore %x_95_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_80
+               OpStore %x_94 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_94 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_80 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_94
+               OpStore %x_95_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_95_phi
+               OpStore %x_103_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_102 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_102 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_102
+               OpStore %x_103_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_103_phi
+               OpStore %x_81_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_81_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_81_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_84 %116
+               OpStore %x_80_phi %115
+        %117 = OpLoad %int %x_84
+               OpStore %x_83_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_80
+               OpStore %x_114_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+        %124 = OpLoad %v2int %x_80
+               OpStore %x_113 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_113 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_113
+               OpStore %x_114_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_114_phi
+               OpStore %x_116_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_116_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_119 %135
+        %136 = OpLoad %int %x_119
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_117 %134
+        %142 = OpAccessChain %_ptr_Function_int %x_117 %uint_0
+        %144 = OpLoad %int %x_119
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_117
+               OpStore %x_116_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %_arr_v4float_uint_16 %indexable
+               OpStore %indexable %170
+               OpStore %indexable %168
+        %171 = OpLoad %int %x_119
+        %173 = OpAccessChain %_ptr_Function_v4float %indexable %171
+        %174 = OpLoad %v4float %173
+               OpStore %x_GLF_color %174
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %175
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %179 = OpLabel
+        %180 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %180
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %182 = OpLabel
+        %183 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %183
+        %184 = OpFunctionCall %void %main_1
+        %186 = OpLoad %v4float %x_GLF_color
+        %187 = OpCompositeConstruct %main_out %186
+        %185 = OpFunctionCall %void %tint_symbol_3 %187
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..f0b6447
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl.expected.wgsl
@@ -0,0 +1,109 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_80 : vec2<i32>;
+  var x_113 : vec2<i32>;
+  var x_119 : i32;
+  var x_80_phi : vec2<i32>;
+  var x_83_phi : i32;
+  var x_114_phi : vec2<i32>;
+  var x_116_phi : vec2<i32>;
+  let x_58 : vec4<f32> = gl_FragCoord;
+  let x_61 : vec2<f32> = x_6.resolution;
+  let x_62 : vec2<f32> = (vec2<f32>(x_58.x, x_58.y) / x_61);
+  let x_65 : i32 = i32((x_62.x * 8.0));
+  let x_66 : ptr<function, array<vec4<f32>, 16>> = &(indexable);
+  let x_69 : i32 = i32((x_62.y * 8.0));
+  let x_78 : vec2<i32> = vec2<i32>(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  loop {
+    var x_94 : vec2<i32>;
+    var x_102 : vec2<i32>;
+    var x_84 : i32;
+    var x_95_phi : vec2<i32>;
+    var x_103_phi : vec2<i32>;
+    x_80 = x_80_phi;
+    let x_83 : i32 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    let x_95 : vec2<i32> = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    let x_103 : vec2<i32> = x_103_phi;
+    var x_81_1 : vec2<i32> = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    let x_81 : vec2<i32> = x_81_1;
+
+    continuing {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  let x_108 : i32 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  let x_114 : vec2<i32> = x_114_phi;
+  x_116_phi = x_114;
+  loop {
+    var x_117 : vec2<i32>;
+    let x_116 : vec2<i32> = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_117 = x_116;
+      x_117.x = bitcast<i32>((x_119 - bitcast<i32>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_124 : array<vec4<f32>, 16> = *(x_66);
+  *(x_66) = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  *(x_66) = x_124;
+  let x_125 : vec4<f32> = indexable[x_119];
+  x_GLF_color = x_125;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm
new file mode 100644
index 0000000..37d1093
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm
@@ -0,0 +1,164 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+       %uint = OpTypeInt 32 0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+    %int_100 = OpConstant %int 100
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %37 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %38 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %39 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %41 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %42 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %43 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %46 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %50 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %51 = OpConstantComposite %_arr_v4float_uint_16 %35 %37 %38 %39 %40 %41 %42 %43 %35 %44 %45 %46 %47 %48 %49 %50
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+  %float_0_0 = OpConstant %float 0
+         %55 = OpConstantComposite %v4float %float_0_0 %float_0_0 %float_0_0 %float_0_0
+         %56 = OpConstantComposite %_arr_v4float_uint_16 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55 %55
+       %main = OpFunction %void None %9
+         %57 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %58 = OpLoad %v4float %gl_FragCoord
+         %59 = OpVectorShuffle %v2float %58 %58 0 1
+         %60 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %61 = OpLoad %v2float %60
+         %62 = OpFDiv %v2float %59 %61
+         %63 = OpCompositeExtract %float %62 0
+         %64 = OpFMul %float %63 %float_8
+         %65 = OpConvertFToS %int %64
+         %66 = OpAccessChain %_ptr_Function__arr_v4float_uint_16 %indexable
+         %67 = OpCompositeExtract %float %62 1
+         %68 = OpFMul %float %67 %float_8
+         %69 = OpConvertFToS %int %68
+         %70 = OpBitwiseAnd %int %65 %int_5
+         %71 = OpBitwiseAnd %int %69 %int_10
+         %72 = OpBitwiseOr %int %70 %71
+         %73 = OpBitwiseAnd %int %69 %int_5
+         %74 = OpBitwiseAnd %int %65 %int_10
+         %75 = OpBitwiseOr %int %73 %74
+         %76 = OpIMul %int %72 %int_8
+         %77 = OpIAdd %int %76 %75
+         %78 = OpCompositeConstruct %v2int %77 %int_0
+               OpBranch %79
+         %79 = OpLabel
+         %80 = OpPhi %v2int %78 %57 %81 %82
+         %83 = OpPhi %int %int_0 %57 %84 %82
+         %85 = OpSLessThan %bool %83 %int_100
+               OpLoopMerge %86 %82 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpCompositeExtract %int %80 0
+         %89 = OpSGreaterThan %bool %88 %int_0
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+         %92 = OpCompositeExtract %int %80 1
+         %93 = OpISub %int %92 %int_1
+         %94 = OpCompositeInsert %v2int %93 %80 1
+               OpBranch %90
+         %90 = OpLabel
+         %95 = OpPhi %v2int %80 %87 %94 %91
+         %96 = OpCompositeExtract %int %95 0
+         %97 = OpSLessThan %bool %96 %int_0
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpCompositeExtract %int %95 1
+        %101 = OpIAdd %int %100 %int_1
+        %102 = OpCompositeInsert %v2int %101 %95 1
+               OpBranch %98
+         %98 = OpLabel
+        %103 = OpPhi %v2int %95 %90 %102 %99
+        %104 = OpCompositeExtract %int %103 1
+        %105 = OpSDiv %int %104 %int_2
+        %106 = OpCompositeExtract %int %103 0
+        %107 = OpIAdd %int %106 %105
+         %81 = OpCompositeInsert %v2int %107 %103 0
+               OpBranch %82
+         %82 = OpLabel
+         %84 = OpIAdd %int %83 %int_1
+               OpBranch %79
+         %86 = OpLabel
+        %108 = OpCompositeExtract %int %80 0
+        %109 = OpSLessThan %bool %108 %int_0
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpSNegate %int %108
+        %113 = OpCompositeInsert %v2int %112 %80 0
+               OpBranch %110
+        %110 = OpLabel
+        %114 = OpPhi %v2int %80 %86 %113 %111
+               OpBranch %115
+        %115 = OpLabel
+        %116 = OpPhi %v2int %114 %110 %117 %118
+        %119 = OpCompositeExtract %int %116 0
+        %120 = OpSGreaterThan %bool %119 %int_15
+               OpLoopMerge %121 %118 None
+               OpBranchConditional %120 %118 %121
+        %118 = OpLabel
+        %122 = OpISub %int %119 %int_16
+        %117 = OpCompositeInsert %v2int %122 %116 0
+               OpBranch %115
+        %121 = OpLabel
+               OpStore %indexable %51
+        %123 = OpAccessChain %_ptr_Function_v4float %indexable %119
+        %124 = OpLoad %v4float %123
+               OpStore %_GLF_color %124
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.hlsl
new file mode 100644
index 0000000..d1b1da5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.hlsl
@@ -0,0 +1,105 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_80 = int2(0, 0);
+  int2 x_113 = int2(0, 0);
+  int x_119 = 0;
+  int2 x_80_phi = int2(0, 0);
+  int x_83_phi = 0;
+  int2 x_114_phi = int2(0, 0);
+  int2 x_116_phi = int2(0, 0);
+  const float4 x_58 = gl_FragCoord;
+  const float2 x_61 = asfloat(x_6[0].xy);
+  const float2 x_62 = (float2(x_58.x, x_58.y) / x_61);
+  const int x_65 = int((x_62.x * 8.0f));
+  const int x_69 = int((x_62.y * 8.0f));
+  const int2 x_78 = int2(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = int2(0, 0);
+    int2 x_102 = int2(0, 0);
+    int x_84 = 0;
+    int2 x_95_phi = int2(0, 0);
+    int2 x_103_phi = int2(0, 0);
+    x_80 = x_80_phi;
+    const int x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    const int2 x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    const int2 x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    const int2 x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  const int x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  x_116_phi = x_114_phi;
+  while (true) {
+    int2 x_117 = int2(0, 0);
+    const int2 x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = x_116;
+      x_117.x = asint((x_119 - asint(16)));
+      x_116_phi = x_117;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_124 = indexable[x_119];
+  x_GLF_color = x_124;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.msl
new file mode 100644
index 0000000..14e3c2f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int2 x_80 = 0;
+  int2 x_113 = 0;
+  int x_119 = 0;
+  int2 x_80_phi = 0;
+  int x_83_phi = 0;
+  int2 x_114_phi = 0;
+  int2 x_116_phi = 0;
+  float4 const x_58 = *(tint_symbol_6);
+  float2 const x_61 = x_6.resolution;
+  float2 const x_62 = (float2(x_58.x, x_58.y) / x_61);
+  int const x_65 = int((x_62.x * 8.0f));
+  int const x_69 = int((x_62.y * 8.0f));
+  int2 const x_78 = int2(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = 0;
+    int2 x_102 = 0;
+    int x_84 = 0;
+    int2 x_95_phi = 0;
+    int2 x_103_phi = 0;
+    x_80 = x_80_phi;
+    int const x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    int2 const x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    int2 const x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    int2 const x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  int const x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  int2 const x_114 = x_114_phi;
+  x_116_phi = x_114;
+  while (true) {
+    int2 x_117 = 0;
+    int2 const x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = x_116;
+      x_117.x = as_type<int>((x_119 - as_type<int>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_124 = indexable.arr[x_119];
+  *(tint_symbol_7) = x_124;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.spvasm
new file mode 100644
index 0000000..657d9eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.spvasm
@@ -0,0 +1,292 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 185
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_80 "x_80"
+               OpName %x_113 "x_113"
+               OpName %x_119 "x_119"
+               OpName %x_80_phi "x_80_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_116_phi "x_116_phi"
+               OpName %x_94 "x_94"
+               OpName %x_102 "x_102"
+               OpName %x_84 "x_84"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_81_1 "x_81_1"
+               OpName %x_117 "x_117"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %172 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_80 = OpVariable %_ptr_Function_v2int Function %29
+      %x_113 = OpVariable %_ptr_Function_v2int Function %29
+      %x_119 = OpVariable %_ptr_Function_int Function %33
+   %x_80_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_83_phi = OpVariable %_ptr_Function_int Function %33
+  %x_114_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_116_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_94 = OpVariable %_ptr_Function_v2int Function %29
+      %x_102 = OpVariable %_ptr_Function_v2int Function %29
+       %x_84 = OpVariable %_ptr_Function_int Function %33
+   %x_95_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_103_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_81_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_117 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_80_phi %66
+               OpStore %x_83_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_80_phi
+               OpStore %x_80 %76
+         %77 = OpLoad %int %x_83_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_80
+               OpStore %x_95_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_80
+               OpStore %x_94 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_94 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_80 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_94
+               OpStore %x_95_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_95_phi
+               OpStore %x_103_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_102 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_102 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_102
+               OpStore %x_103_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_103_phi
+               OpStore %x_81_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_81_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_81_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_84 %116
+               OpStore %x_80_phi %115
+        %117 = OpLoad %int %x_84
+               OpStore %x_83_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_80
+               OpStore %x_114_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+        %124 = OpLoad %v2int %x_80
+               OpStore %x_113 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_113 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_113
+               OpStore %x_114_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_114_phi
+               OpStore %x_116_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_116_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_119 %135
+        %136 = OpLoad %int %x_119
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_117 %134
+        %142 = OpAccessChain %_ptr_Function_int %x_117 %uint_0
+        %144 = OpLoad %int %x_119
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_117
+               OpStore %x_116_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %int %x_119
+        %170 = OpAccessChain %_ptr_Function_v4float %indexable %168
+        %171 = OpLoad %v4float %170
+               OpStore %x_GLF_color %171
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %172
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %176 = OpLabel
+        %177 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %177
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %179 = OpLabel
+        %180 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %180
+        %181 = OpFunctionCall %void %main_1
+        %183 = OpLoad %v4float %x_GLF_color
+        %184 = OpCompositeConstruct %main_out %183
+        %182 = OpFunctionCall %void %tint_symbol_3 %184
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.wgsl
new file mode 100644
index 0000000..55f9a36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.spvasm.expected.wgsl
@@ -0,0 +1,106 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_80 : vec2<i32>;
+  var x_113 : vec2<i32>;
+  var x_119 : i32;
+  var x_80_phi : vec2<i32>;
+  var x_83_phi : i32;
+  var x_114_phi : vec2<i32>;
+  var x_116_phi : vec2<i32>;
+  let x_58 : vec4<f32> = gl_FragCoord;
+  let x_61 : vec2<f32> = x_6.resolution;
+  let x_62 : vec2<f32> = (vec2<f32>(x_58.x, x_58.y) / x_61);
+  let x_65 : i32 = i32((x_62.x * 8.0));
+  let x_66 : ptr<function, array<vec4<f32>, 16>> = &(indexable);
+  let x_69 : i32 = i32((x_62.y * 8.0));
+  let x_78 : vec2<i32> = vec2<i32>(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  loop {
+    var x_94 : vec2<i32>;
+    var x_102 : vec2<i32>;
+    var x_84 : i32;
+    var x_95_phi : vec2<i32>;
+    var x_103_phi : vec2<i32>;
+    x_80 = x_80_phi;
+    let x_83 : i32 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    let x_95 : vec2<i32> = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    let x_103 : vec2<i32> = x_103_phi;
+    var x_81_1 : vec2<i32> = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    let x_81 : vec2<i32> = x_81_1;
+
+    continuing {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  let x_108 : i32 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  let x_114 : vec2<i32> = x_114_phi;
+  x_116_phi = x_114;
+  loop {
+    var x_117 : vec2<i32>;
+    let x_116 : vec2<i32> = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_117 = x_116;
+      x_117.x = bitcast<i32>((x_119 - bitcast<i32>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_124 : vec4<f32> = indexable[x_119];
+  x_GLF_color = x_124;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
new file mode 100644
index 0000000..55f9a36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
@@ -0,0 +1,106 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_80 : vec2<i32>;
+  var x_113 : vec2<i32>;
+  var x_119 : i32;
+  var x_80_phi : vec2<i32>;
+  var x_83_phi : i32;
+  var x_114_phi : vec2<i32>;
+  var x_116_phi : vec2<i32>;
+  let x_58 : vec4<f32> = gl_FragCoord;
+  let x_61 : vec2<f32> = x_6.resolution;
+  let x_62 : vec2<f32> = (vec2<f32>(x_58.x, x_58.y) / x_61);
+  let x_65 : i32 = i32((x_62.x * 8.0));
+  let x_66 : ptr<function, array<vec4<f32>, 16>> = &(indexable);
+  let x_69 : i32 = i32((x_62.y * 8.0));
+  let x_78 : vec2<i32> = vec2<i32>(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  loop {
+    var x_94 : vec2<i32>;
+    var x_102 : vec2<i32>;
+    var x_84 : i32;
+    var x_95_phi : vec2<i32>;
+    var x_103_phi : vec2<i32>;
+    x_80 = x_80_phi;
+    let x_83 : i32 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    let x_95 : vec2<i32> = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    let x_103 : vec2<i32> = x_103_phi;
+    var x_81_1 : vec2<i32> = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    let x_81 : vec2<i32> = x_81_1;
+
+    continuing {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  let x_108 : i32 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  let x_114 : vec2<i32> = x_114_phi;
+  x_116_phi = x_114;
+  loop {
+    var x_117 : vec2<i32>;
+    let x_116 : vec2<i32> = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_117 = x_116;
+      x_117.x = bitcast<i32>((x_119 - bitcast<i32>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_124 : vec4<f32> = indexable[x_119];
+  x_GLF_color = x_124;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.hlsl
new file mode 100644
index 0000000..d1b1da5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.hlsl
@@ -0,0 +1,105 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 indexable[16] = (float4[16])0;
+  int2 x_80 = int2(0, 0);
+  int2 x_113 = int2(0, 0);
+  int x_119 = 0;
+  int2 x_80_phi = int2(0, 0);
+  int x_83_phi = 0;
+  int2 x_114_phi = int2(0, 0);
+  int2 x_116_phi = int2(0, 0);
+  const float4 x_58 = gl_FragCoord;
+  const float2 x_61 = asfloat(x_6[0].xy);
+  const float2 x_62 = (float2(x_58.x, x_58.y) / x_61);
+  const int x_65 = int((x_62.x * 8.0f));
+  const int x_69 = int((x_62.y * 8.0f));
+  const int2 x_78 = int2(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = int2(0, 0);
+    int2 x_102 = int2(0, 0);
+    int x_84 = 0;
+    int2 x_95_phi = int2(0, 0);
+    int2 x_103_phi = int2(0, 0);
+    x_80 = x_80_phi;
+    const int x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    const int2 x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    const int2 x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    const int2 x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  const int x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  x_116_phi = x_114_phi;
+  while (true) {
+    int2 x_117 = int2(0, 0);
+    const int2 x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = x_116;
+      x_117.x = asint((x_119 - asint(16)));
+      x_116_phi = x_117;
+    }
+  }
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_124 = indexable[x_119];
+  x_GLF_color = x_124;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.msl
new file mode 100644
index 0000000..14e3c2f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  tint_array_wrapper indexable = {};
+  int2 x_80 = 0;
+  int2 x_113 = 0;
+  int x_119 = 0;
+  int2 x_80_phi = 0;
+  int x_83_phi = 0;
+  int2 x_114_phi = 0;
+  int2 x_116_phi = 0;
+  float4 const x_58 = *(tint_symbol_6);
+  float2 const x_61 = x_6.resolution;
+  float2 const x_62 = (float2(x_58.x, x_58.y) / x_61);
+  int const x_65 = int((x_62.x * 8.0f));
+  int const x_69 = int((x_62.y * 8.0f));
+  int2 const x_78 = int2(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  while (true) {
+    int2 x_94 = 0;
+    int2 x_102 = 0;
+    int x_84 = 0;
+    int2 x_95_phi = 0;
+    int2 x_103_phi = 0;
+    x_80 = x_80_phi;
+    int const x_83 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    int2 const x_95 = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    int2 const x_103 = x_103_phi;
+    int2 x_81_1 = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    int2 const x_81 = x_81_1;
+    {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  int const x_108 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  int2 const x_114 = x_114_phi;
+  x_116_phi = x_114;
+  while (true) {
+    int2 x_117 = 0;
+    int2 const x_116 = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+    {
+      x_117 = x_116;
+      x_117.x = as_type<int>((x_119 - as_type<int>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_124 = indexable.arr[x_119];
+  *(tint_symbol_7) = x_124;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.spvasm
new file mode 100644
index 0000000..657d9eb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.spvasm
@@ -0,0 +1,292 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 185
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %indexable "indexable"
+               OpName %x_80 "x_80"
+               OpName %x_113 "x_113"
+               OpName %x_119 "x_119"
+               OpName %x_80_phi "x_80_phi"
+               OpName %x_83_phi "x_83_phi"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_116_phi "x_116_phi"
+               OpName %x_94 "x_94"
+               OpName %x_102 "x_102"
+               OpName %x_84 "x_84"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_81_1 "x_81_1"
+               OpName %x_117 "x_117"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %24 = OpConstantNull %_arr_v4float_uint_16
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %29 = OpConstantNull %v2int
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+      %int_5 = OpConstant %int 5
+     %int_10 = OpConstant %int 10
+      %int_8 = OpConstant %int 8
+      %int_0 = OpConstant %int 0
+    %int_100 = OpConstant %int 100
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+     %int_15 = OpConstant %int 15
+     %int_16 = OpConstant %int 16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %153 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %154 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %155 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %157 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %158 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %159 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %160 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %161 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %162 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %163 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %164 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %165 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %166 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %167 = OpConstantComposite %_arr_v4float_uint_16 %151 %153 %154 %155 %156 %157 %158 %159 %151 %160 %161 %162 %163 %164 %165 %166
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %172 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %24
+       %x_80 = OpVariable %_ptr_Function_v2int Function %29
+      %x_113 = OpVariable %_ptr_Function_v2int Function %29
+      %x_119 = OpVariable %_ptr_Function_int Function %33
+   %x_80_phi = OpVariable %_ptr_Function_v2int Function %29
+   %x_83_phi = OpVariable %_ptr_Function_int Function %33
+  %x_114_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_116_phi = OpVariable %_ptr_Function_v2int Function %29
+       %x_94 = OpVariable %_ptr_Function_v2int Function %29
+      %x_102 = OpVariable %_ptr_Function_v2int Function %29
+       %x_84 = OpVariable %_ptr_Function_int Function %33
+   %x_95_phi = OpVariable %_ptr_Function_v2int Function %29
+  %x_103_phi = OpVariable %_ptr_Function_v2int Function %29
+     %x_81_1 = OpVariable %_ptr_Function_v2int Function %29
+      %x_117 = OpVariable %_ptr_Function_v2int Function %29
+         %38 = OpLoad %v4float %gl_FragCoord
+         %41 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %42 = OpLoad %v2float %41
+         %43 = OpCompositeExtract %float %38 0
+         %44 = OpCompositeExtract %float %38 1
+         %45 = OpCompositeConstruct %v2float %43 %44
+         %46 = OpFDiv %v2float %45 %42
+         %48 = OpCompositeExtract %float %46 0
+         %50 = OpFMul %float %48 %float_8
+         %47 = OpConvertFToS %int %50
+         %52 = OpCompositeExtract %float %46 1
+         %53 = OpFMul %float %52 %float_8
+         %51 = OpConvertFToS %int %53
+         %55 = OpBitwiseAnd %int %47 %int_5
+         %57 = OpBitwiseAnd %int %51 %int_10
+         %58 = OpBitwiseOr %int %55 %57
+         %60 = OpIMul %int %58 %int_8
+         %61 = OpBitwiseAnd %int %51 %int_5
+         %62 = OpBitwiseAnd %int %47 %int_10
+         %63 = OpBitwiseOr %int %61 %62
+         %64 = OpIAdd %int %60 %63
+         %66 = OpCompositeConstruct %v2int %64 %int_0
+               OpStore %x_80_phi %66
+               OpStore %x_83_phi %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %76 = OpLoad %v2int %x_80_phi
+               OpStore %x_80 %76
+         %77 = OpLoad %int %x_83_phi
+         %79 = OpSLessThan %bool %77 %int_100
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %68
+         %81 = OpLabel
+         %84 = OpLoad %v2int %x_80
+               OpStore %x_95_phi %84
+         %85 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+         %86 = OpLoad %int %85
+         %87 = OpSGreaterThan %bool %86 %int_0
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+         %90 = OpLoad %v2int %x_80
+               OpStore %x_94 %90
+         %92 = OpAccessChain %_ptr_Function_int %x_94 %uint_1
+         %93 = OpAccessChain %_ptr_Function_int %x_80 %uint_1
+         %94 = OpLoad %int %93
+         %96 = OpISub %int %94 %int_1
+               OpStore %92 %96
+         %97 = OpLoad %v2int %x_94
+               OpStore %x_95_phi %97
+               OpBranch %88
+         %88 = OpLabel
+         %98 = OpLoad %v2int %x_95_phi
+               OpStore %x_103_phi %98
+         %99 = OpCompositeExtract %int %98 0
+        %100 = OpSLessThan %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %x_102 %98
+        %103 = OpAccessChain %_ptr_Function_int %x_102 %uint_1
+        %104 = OpCompositeExtract %int %98 1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %103 %105
+        %106 = OpLoad %v2int %x_102
+               OpStore %x_103_phi %106
+               OpBranch %101
+        %101 = OpLabel
+        %107 = OpLoad %v2int %x_103_phi
+               OpStore %x_81_1 %107
+        %109 = OpAccessChain %_ptr_Function_int %x_81_1 %uint_0
+        %110 = OpCompositeExtract %int %107 0
+        %111 = OpCompositeExtract %int %107 1
+        %113 = OpSDiv %int %111 %int_2
+        %114 = OpIAdd %int %110 %113
+               OpStore %109 %114
+        %115 = OpLoad %v2int %x_81_1
+               OpBranch %69
+         %69 = OpLabel
+        %116 = OpIAdd %int %77 %int_1
+               OpStore %x_84 %116
+               OpStore %x_80_phi %115
+        %117 = OpLoad %int %x_84
+               OpStore %x_83_phi %117
+               OpBranch %67
+         %68 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %x_80 %uint_0
+        %119 = OpLoad %int %118
+        %120 = OpLoad %v2int %x_80
+               OpStore %x_114_phi %120
+        %121 = OpSLessThan %bool %119 %int_0
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+        %124 = OpLoad %v2int %x_80
+               OpStore %x_113 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_113 %uint_0
+        %126 = OpSNegate %int %119
+               OpStore %125 %126
+        %127 = OpLoad %v2int %x_113
+               OpStore %x_114_phi %127
+               OpBranch %122
+        %122 = OpLabel
+        %128 = OpLoad %v2int %x_114_phi
+               OpStore %x_116_phi %128
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %134 = OpLoad %v2int %x_116_phi
+        %135 = OpCompositeExtract %int %134 0
+               OpStore %x_119 %135
+        %136 = OpLoad %int %x_119
+        %138 = OpSGreaterThan %bool %136 %int_15
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %140 = OpLabel
+               OpBranch %139
+        %141 = OpLabel
+               OpBranch %130
+        %139 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+               OpStore %x_117 %134
+        %142 = OpAccessChain %_ptr_Function_int %x_117 %uint_0
+        %144 = OpLoad %int %x_119
+        %145 = OpCopyObject %int %int_16
+        %147 = OpISub %int %144 %145
+        %143 = OpCopyObject %int %147
+               OpStore %142 %143
+        %148 = OpLoad %v2int %x_117
+               OpStore %x_116_phi %148
+               OpBranch %129
+        %130 = OpLabel
+               OpStore %indexable %167
+        %168 = OpLoad %int %x_119
+        %170 = OpAccessChain %_ptr_Function_v4float %indexable %168
+        %171 = OpLoad %v4float %170
+               OpStore %x_GLF_color %171
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %172
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %176 = OpLabel
+        %177 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %177
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %179 = OpLabel
+        %180 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %180
+        %181 = OpFunctionCall %void %main_1
+        %183 = OpLoad %v4float %x_GLF_color
+        %184 = OpCompositeConstruct %main_out %183
+        %182 = OpFunctionCall %void %tint_symbol_3 %184
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.wgsl
new file mode 100644
index 0000000..55f9a36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl.expected.wgsl
@@ -0,0 +1,106 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var indexable : array<vec4<f32>, 16>;
+  var x_80 : vec2<i32>;
+  var x_113 : vec2<i32>;
+  var x_119 : i32;
+  var x_80_phi : vec2<i32>;
+  var x_83_phi : i32;
+  var x_114_phi : vec2<i32>;
+  var x_116_phi : vec2<i32>;
+  let x_58 : vec4<f32> = gl_FragCoord;
+  let x_61 : vec2<f32> = x_6.resolution;
+  let x_62 : vec2<f32> = (vec2<f32>(x_58.x, x_58.y) / x_61);
+  let x_65 : i32 = i32((x_62.x * 8.0));
+  let x_66 : ptr<function, array<vec4<f32>, 16>> = &(indexable);
+  let x_69 : i32 = i32((x_62.y * 8.0));
+  let x_78 : vec2<i32> = vec2<i32>(((((x_65 & 5) | (x_69 & 10)) * 8) + ((x_69 & 5) | (x_65 & 10))), 0);
+  x_80_phi = x_78;
+  x_83_phi = 0;
+  loop {
+    var x_94 : vec2<i32>;
+    var x_102 : vec2<i32>;
+    var x_84 : i32;
+    var x_95_phi : vec2<i32>;
+    var x_103_phi : vec2<i32>;
+    x_80 = x_80_phi;
+    let x_83 : i32 = x_83_phi;
+    if ((x_83 < 100)) {
+    } else {
+      break;
+    }
+    x_95_phi = x_80;
+    if ((x_80.x > 0)) {
+      x_94 = x_80;
+      x_94.y = (x_80.y - 1);
+      x_95_phi = x_94;
+    }
+    let x_95 : vec2<i32> = x_95_phi;
+    x_103_phi = x_95;
+    if ((x_95.x < 0)) {
+      x_102 = x_95;
+      x_102.y = (x_95.y + 1);
+      x_103_phi = x_102;
+    }
+    let x_103 : vec2<i32> = x_103_phi;
+    var x_81_1 : vec2<i32> = x_103;
+    x_81_1.x = (x_103.x + (x_103.y / 2));
+    let x_81 : vec2<i32> = x_81_1;
+
+    continuing {
+      x_84 = (x_83 + 1);
+      x_80_phi = x_81;
+      x_83_phi = x_84;
+    }
+  }
+  let x_108 : i32 = x_80.x;
+  x_114_phi = x_80;
+  if ((x_108 < 0)) {
+    x_113 = x_80;
+    x_113.x = -(x_108);
+    x_114_phi = x_113;
+  }
+  let x_114 : vec2<i32> = x_114_phi;
+  x_116_phi = x_114;
+  loop {
+    var x_117 : vec2<i32>;
+    let x_116 : vec2<i32> = x_116_phi;
+    x_119 = x_116.x;
+    if ((x_119 > 15)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_117 = x_116;
+      x_117.x = bitcast<i32>((x_119 - bitcast<i32>(16)));
+      x_116_phi = x_117;
+    }
+  }
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_124 : vec4<f32> = indexable[x_119];
+  x_GLF_color = x_124;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm
new file mode 100644
index 0000000..97f6789
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm
@@ -0,0 +1,304 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %177 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %183 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+        %192 = OpUndef %v4float
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %int_0_0 = OpConstant %int 0
+       %main = OpFunction %void None %8
+        %195 = OpLabel
+        %196 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %197 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %198 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %199 = OpLoad %v4float %gl_FragCoord
+        %200 = OpVectorShuffle %v2float %199 %199 0 1
+        %201 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %202 = OpLoad %v2float %201
+        %203 = OpFDiv %v2float %200 %202
+        %204 = OpCompositeExtract %float %203 0
+        %205 = OpFMul %float %204 %float_256
+        %206 = OpConvertFToS %int %205
+        %207 = OpCompositeExtract %float %203 1
+        %208 = OpFMul %float %207 %float_256
+        %209 = OpConvertFToS %int %208
+        %210 = OpCompositeConstruct %v2int %206 %209
+               OpSelectionMerge %211 None
+               OpSwitch %uint_0 %212
+        %212 = OpLabel
+               OpBranch %213
+        %213 = OpLabel
+        %214 = OpPhi %v2int %210 %212 %215 %216
+        %217 = OpCompositeExtract %int %214 1
+        %218 = OpINotEqual %bool %217 %int_256
+               OpLoopMerge %219 %216 None
+               OpBranchConditional %218 %220 %219
+        %220 = OpLabel
+        %221 = OpCompositeExtract %int %214 0
+               OpStore %196 %177
+        %222 = OpAccessChain %_ptr_Function_int %196 %217
+        %223 = OpLoad %int %222
+        %224 = OpIAdd %int %223 %int_15
+        %225 = OpSLessThan %bool %221 %224
+               OpBranch %226
+        %226 = OpLabel
+               OpSelectionMerge %227 None
+               OpBranchConditional %225 %228 %227
+        %228 = OpLabel
+               OpStore %197 %177
+               OpBranch %227
+        %227 = OpLabel
+        %229 = OpAccessChain %_ptr_Function_int %197 %217
+               OpSelectionMerge %230 None
+               OpBranchConditional %225 %231 %232
+        %231 = OpLabel
+        %233 = OpLoad %int %229
+               OpBranch %230
+        %232 = OpLabel
+        %234 = OpCopyObject %int %int_0_0
+               OpBranch %230
+        %230 = OpLabel
+        %235 = OpPhi %int %233 %231 %234 %232
+        %236 = OpISub %int %235 %int_15
+        %237 = OpSGreaterThan %bool %221 %236
+               OpSelectionMerge %238 None
+               OpBranchConditional %225 %239 %240
+        %239 = OpLabel
+               OpBranch %238
+        %240 = OpLabel
+               OpBranch %238
+        %238 = OpLabel
+        %241 = OpPhi %bool %237 %239 %225 %240
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %242
+        %243 = OpLabel
+               OpStore %198 %177
+        %244 = OpAccessChain %_ptr_Function_int %198 %217
+        %245 = OpLoad %int %244
+        %246 = OpISub %int %221 %245
+        %247 = OpConvertSToF %float %246
+        %248 = OpExtInst %float %1 FAbs %247
+        %249 = OpFSub %float %float_15 %248
+        %250 = OpFMul %float %249 %float_0_0666666701
+        %251 = OpCompositeConstruct %v4float %250 %250 %250 %float_1
+               OpBranch %219
+        %242 = OpLabel
+        %252 = OpIAdd %int %217 %int_1
+        %215 = OpCompositeInsert %v2int %252 %214 1
+               OpBranch %216
+        %216 = OpLabel
+               OpBranch %213
+        %219 = OpLabel
+        %253 = OpPhi %v4float %192 %213 %251 %243
+        %254 = OpPhi %bool %false %213 %true %243
+               OpSelectionMerge %255 None
+               OpBranchConditional %254 %211 %255
+        %255 = OpLabel
+               OpBranch %211
+        %211 = OpLabel
+        %256 = OpPhi %v4float %253 %219 %183 %255
+               OpStore %_GLF_color %256
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..375d755
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.hlsl
@@ -0,0 +1,108 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_196[256] = (int[256])0;
+  int x_197[256] = (int[256])0;
+  int x_198[256] = (int[256])0;
+  int2 x_210 = int2(0, 0);
+  float4 x_251 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_253 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int2 x_214_phi = int2(0, 0);
+  float4 x_253_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_254_phi = false;
+  float4 x_256_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float4 x_199 = gl_FragCoord;
+  const float2 x_202 = asfloat(x_6[0].xy);
+  const float2 x_203 = (float2(x_199.x, x_199.y) / x_202);
+  x_210 = int2(int((x_203.x * 256.0f)), int((x_203.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      while (true) {
+        int x_233 = 0;
+        int x_234 = 0;
+        int x_235_phi = 0;
+        bool x_241_phi = false;
+        const int2 x_214 = x_214_phi;
+        const int x_217 = x_214.y;
+        x_253_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_254_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        const int x_221 = x_214.x;
+        const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+        x_196 = tint_symbol_5;
+        const int x_223 = x_196[x_217];
+        const bool x_225 = (x_221 < (x_223 + 15));
+        if (x_225) {
+          const int tint_symbol_6[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_197 = tint_symbol_6;
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        const bool x_237 = (x_221 > (x_235_phi - 15));
+        if (x_225) {
+          x_241_phi = x_237;
+        } else {
+          x_241_phi = x_225;
+        }
+        if (x_241_phi) {
+          const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_198 = tint_symbol_7;
+          const int x_245 = x_198[x_217];
+          const float x_250 = ((15.0f - abs(float((x_221 - x_245)))) * 0.06666667f);
+          x_251 = float4(x_250, x_250, x_250, 1.0f);
+          x_253_phi = x_251;
+          x_254_phi = true;
+          break;
+        }
+        int2 x_215_1 = x_214;
+        x_215_1.y = (x_217 + 1);
+        const int2 x_215 = x_215_1;
+        {
+          x_214_phi = x_215;
+        }
+      }
+      x_253 = x_253_phi;
+      const bool x_254 = x_254_phi;
+      x_256_phi = x_253;
+      if (x_254) {
+        break;
+      }
+      x_256_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  x_GLF_color = x_256_phi;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.msl
new file mode 100644
index 0000000..72762dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.msl
@@ -0,0 +1,113 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  tint_array_wrapper x_196 = {};
+  tint_array_wrapper x_197 = {};
+  tint_array_wrapper x_198 = {};
+  int2 x_210 = 0;
+  float4 x_251 = 0.0f;
+  float4 x_253 = 0.0f;
+  int2 x_214_phi = 0;
+  float4 x_253_phi = 0.0f;
+  bool x_254_phi = false;
+  float4 x_256_phi = 0.0f;
+  float4 const x_199 = *(tint_symbol_8);
+  float2 const x_202 = x_6.resolution;
+  float2 const x_203 = (float2(x_199.x, x_199.y) / x_202);
+  x_210 = int2(int((x_203.x * 256.0f)), int((x_203.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      while (true) {
+        int x_233 = 0;
+        int x_234 = 0;
+        int x_235_phi = 0;
+        bool x_241_phi = false;
+        int2 const x_214 = x_214_phi;
+        int const x_217 = x_214.y;
+        x_253_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_254_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        int const x_221 = x_214.x;
+        tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+        x_196 = tint_symbol_4;
+        int const x_223 = x_196.arr[x_217];
+        bool const x_225 = (x_221 < (x_223 + 15));
+        if (x_225) {
+          tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_197 = tint_symbol_5;
+        }
+        if (x_225) {
+          x_233 = x_197.arr[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        int const x_235 = x_235_phi;
+        bool const x_237 = (x_221 > (x_235 - 15));
+        if (x_225) {
+          x_241_phi = x_237;
+        } else {
+          x_241_phi = x_225;
+        }
+        bool const x_241 = x_241_phi;
+        if (x_241) {
+          tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_198 = tint_symbol_6;
+          int const x_245 = x_198.arr[x_217];
+          float const x_250 = ((15.0f - fabs(float((x_221 - x_245)))) * 0.06666667f);
+          x_251 = float4(x_250, x_250, x_250, 1.0f);
+          x_253_phi = x_251;
+          x_254_phi = true;
+          break;
+        }
+        int2 x_215_1 = x_214;
+        x_215_1.y = (x_217 + 1);
+        int2 const x_215 = x_215_1;
+        {
+          x_214_phi = x_215;
+        }
+      }
+      x_253 = x_253_phi;
+      bool const x_254 = x_254_phi;
+      x_256_phi = x_253;
+      if (x_254) {
+        break;
+      }
+      x_256_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  float4 const x_256 = x_256_phi;
+  *(tint_symbol_9) = x_256;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..cc6b7b1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.spvasm
@@ -0,0 +1,408 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 303
+; Schema: 0
+               OpCapability Shader
+        %267 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_196 "x_196"
+               OpName %x_197 "x_197"
+               OpName %x_198 "x_198"
+               OpName %x_210 "x_210"
+               OpName %x_251 "x_251"
+               OpName %x_253 "x_253"
+               OpName %x_214_phi "x_214_phi"
+               OpName %x_253_phi "x_253_phi"
+               OpName %x_254_phi "x_254_phi"
+               OpName %x_256_phi "x_256_phi"
+               OpName %x_233 "x_233"
+               OpName %x_234 "x_234"
+               OpName %x_235_phi "x_235_phi"
+               OpName %x_241_phi "x_241_phi"
+               OpName %x_215_1 "x_215_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %25 = OpConstantNull %_arr_int_uint_256
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %31 = OpConstantNull %v2int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Function_int = OpTypePointer Function %int
+         %68 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %75 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+    %int_256 = OpConstant %int 256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %240 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+   %float_15 = OpConstant %float 15
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+        %288 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %290 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %x_196 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_197 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_198 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_210 = OpVariable %_ptr_Function_v2int Function %31
+      %x_251 = OpVariable %_ptr_Function_v4float Function %5
+      %x_253 = OpVariable %_ptr_Function_v4float Function %5
+  %x_214_phi = OpVariable %_ptr_Function_v2int Function %31
+  %x_253_phi = OpVariable %_ptr_Function_v4float Function %5
+  %x_254_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_256_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_233 = OpVariable %_ptr_Function_int Function %68
+      %x_234 = OpVariable %_ptr_Function_int Function %68
+  %x_235_phi = OpVariable %_ptr_Function_int Function %68
+  %x_241_phi = OpVariable %_ptr_Function_bool Function %40
+    %x_215_1 = OpVariable %_ptr_Function_v2int Function %31
+         %42 = OpLoad %v4float %gl_FragCoord
+         %45 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %46 = OpLoad %v2float %45
+         %47 = OpCompositeExtract %float %42 0
+         %48 = OpCompositeExtract %float %42 1
+         %49 = OpCompositeConstruct %v2float %47 %48
+         %50 = OpFDiv %v2float %49 %46
+         %52 = OpCompositeExtract %float %50 0
+         %54 = OpFMul %float %52 %float_256
+         %51 = OpConvertFToS %int %54
+         %56 = OpCompositeExtract %float %50 1
+         %57 = OpFMul %float %56 %float_256
+         %55 = OpConvertFToS %int %57
+         %58 = OpCompositeConstruct %v2int %51 %55
+               OpStore %x_210 %58
+               OpSelectionMerge %59 None
+               OpSwitch %uint_0 %60
+         %60 = OpLabel
+         %61 = OpLoad %v2int %x_210
+               OpStore %x_214_phi %61
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %72 = OpLoad %v2int %x_214_phi
+         %73 = OpCompositeExtract %int %72 1
+               OpStore %x_253_phi %75
+               OpStore %x_254_phi %false
+         %78 = OpINotEqual %bool %73 %int_256
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %63
+         %79 = OpLabel
+         %82 = OpCompositeExtract %int %72 0
+               OpStore %x_196 %240
+        %241 = OpAccessChain %_ptr_Function_int %x_196 %73
+        %242 = OpLoad %int %241
+        %243 = OpIAdd %int %242 %int_15
+        %244 = OpSLessThan %bool %82 %243
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %245
+        %246 = OpLabel
+               OpStore %x_197 %240
+               OpBranch %245
+        %245 = OpLabel
+               OpSelectionMerge %247 None
+               OpBranchConditional %244 %248 %249
+        %248 = OpLabel
+        %250 = OpAccessChain %_ptr_Function_int %x_197 %73
+        %251 = OpLoad %int %250
+               OpStore %x_233 %251
+        %252 = OpLoad %int %x_233
+               OpStore %x_235_phi %252
+               OpBranch %247
+        %249 = OpLabel
+               OpStore %x_234 %int_0
+        %253 = OpLoad %int %x_234
+               OpStore %x_235_phi %253
+               OpBranch %247
+        %247 = OpLabel
+        %254 = OpLoad %int %x_235_phi
+        %255 = OpISub %int %254 %int_15
+        %256 = OpSGreaterThan %bool %82 %255
+               OpSelectionMerge %257 None
+               OpBranchConditional %244 %258 %259
+        %258 = OpLabel
+               OpStore %x_241_phi %256
+               OpBranch %257
+        %259 = OpLabel
+               OpStore %x_241_phi %244
+               OpBranch %257
+        %257 = OpLabel
+        %260 = OpLoad %bool %x_241_phi
+               OpSelectionMerge %261 None
+               OpBranchConditional %260 %262 %261
+        %262 = OpLabel
+               OpStore %x_198 %240
+        %263 = OpAccessChain %_ptr_Function_int %x_198 %73
+        %264 = OpLoad %int %263
+        %269 = OpISub %int %82 %264
+        %268 = OpConvertSToF %float %269
+        %266 = OpExtInst %float %267 FAbs %268
+        %270 = OpFSub %float %float_15 %266
+        %272 = OpFMul %float %270 %float_0_0666666701
+        %274 = OpCompositeConstruct %v4float %272 %272 %272 %float_1
+               OpStore %x_251 %274
+        %275 = OpLoad %v4float %x_251
+               OpStore %x_253_phi %275
+               OpStore %x_254_phi %true
+               OpBranch %63
+        %261 = OpLabel
+               OpStore %x_215_1 %72
+        %279 = OpAccessChain %_ptr_Function_int %x_215_1 %uint_1
+        %281 = OpIAdd %int %73 %int_1
+               OpStore %279 %281
+        %282 = OpLoad %v2int %x_215_1
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %x_214_phi %282
+               OpBranch %62
+         %63 = OpLabel
+        %283 = OpLoad %v4float %x_253_phi
+               OpStore %x_253 %283
+        %284 = OpLoad %bool %x_254_phi
+        %285 = OpLoad %v4float %x_253
+               OpStore %x_256_phi %285
+               OpSelectionMerge %286 None
+               OpBranchConditional %284 %287 %286
+        %287 = OpLabel
+               OpBranch %59
+        %286 = OpLabel
+               OpStore %x_256_phi %288
+               OpBranch %59
+         %59 = OpLabel
+        %289 = OpLoad %v4float %x_256_phi
+               OpStore %x_GLF_color %289
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %290
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %294 = OpLabel
+        %295 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %295
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %297 = OpLabel
+        %298 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %298
+        %299 = OpFunctionCall %void %main_1
+        %301 = OpLoad %v4float %x_GLF_color
+        %302 = OpCompositeConstruct %main_out %301
+        %300 = OpFunctionCall %void %tint_symbol_3 %302
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..43a6481
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.spvasm.expected.wgsl
@@ -0,0 +1,106 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_198 : array<i32, 256>;
+  var x_210 : vec2<i32>;
+  var x_251 : vec4<f32>;
+  var x_253 : vec4<f32>;
+  var x_214_phi : vec2<i32>;
+  var x_253_phi : vec4<f32>;
+  var x_254_phi : bool;
+  var x_256_phi : vec4<f32>;
+  let x_199 : vec4<f32> = gl_FragCoord;
+  let x_202 : vec2<f32> = x_6.resolution;
+  let x_203 : vec2<f32> = (vec2<f32>(x_199.x, x_199.y) / x_202);
+  x_210 = vec2<i32>(i32((x_203.x * 256.0)), i32((x_203.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      loop {
+        var x_233 : i32;
+        var x_234 : i32;
+        var x_235_phi : i32;
+        var x_241_phi : bool;
+        let x_214 : vec2<i32> = x_214_phi;
+        let x_217 : i32 = x_214.y;
+        x_253_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_254_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        let x_221 : i32 = x_214.x;
+        x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_223 : i32 = x_196[x_217];
+        let x_225 : bool = (x_221 < (x_223 + 15));
+        if (x_225) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        let x_235 : i32 = x_235_phi;
+        let x_237 : bool = (x_221 > (x_235 - 15));
+        if (x_225) {
+          x_241_phi = x_237;
+        } else {
+          x_241_phi = x_225;
+        }
+        let x_241 : bool = x_241_phi;
+        if (x_241) {
+          x_198 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_245 : i32 = x_198[x_217];
+          let x_250 : f32 = ((15.0 - abs(f32((x_221 - x_245)))) * 0.06666667);
+          x_251 = vec4<f32>(x_250, x_250, x_250, 1.0);
+          x_253_phi = x_251;
+          x_254_phi = true;
+          break;
+        }
+        var x_215_1 : vec2<i32> = x_214;
+        x_215_1.y = (x_217 + 1);
+        let x_215 : vec2<i32> = x_215_1;
+
+        continuing {
+          x_214_phi = x_215;
+        }
+      }
+      x_253 = x_253_phi;
+      let x_254 : bool = x_254_phi;
+      x_256_phi = x_253;
+      if (x_254) {
+        break;
+      }
+      x_256_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_256 : vec4<f32> = x_256_phi;
+  x_GLF_color = x_256;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
new file mode 100644
index 0000000..43a6481
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
@@ -0,0 +1,106 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_198 : array<i32, 256>;
+  var x_210 : vec2<i32>;
+  var x_251 : vec4<f32>;
+  var x_253 : vec4<f32>;
+  var x_214_phi : vec2<i32>;
+  var x_253_phi : vec4<f32>;
+  var x_254_phi : bool;
+  var x_256_phi : vec4<f32>;
+  let x_199 : vec4<f32> = gl_FragCoord;
+  let x_202 : vec2<f32> = x_6.resolution;
+  let x_203 : vec2<f32> = (vec2<f32>(x_199.x, x_199.y) / x_202);
+  x_210 = vec2<i32>(i32((x_203.x * 256.0)), i32((x_203.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      loop {
+        var x_233 : i32;
+        var x_234 : i32;
+        var x_235_phi : i32;
+        var x_241_phi : bool;
+        let x_214 : vec2<i32> = x_214_phi;
+        let x_217 : i32 = x_214.y;
+        x_253_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_254_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        let x_221 : i32 = x_214.x;
+        x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_223 : i32 = x_196[x_217];
+        let x_225 : bool = (x_221 < (x_223 + 15));
+        if (x_225) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        let x_235 : i32 = x_235_phi;
+        let x_237 : bool = (x_221 > (x_235 - 15));
+        if (x_225) {
+          x_241_phi = x_237;
+        } else {
+          x_241_phi = x_225;
+        }
+        let x_241 : bool = x_241_phi;
+        if (x_241) {
+          x_198 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_245 : i32 = x_198[x_217];
+          let x_250 : f32 = ((15.0 - abs(f32((x_221 - x_245)))) * 0.06666667);
+          x_251 = vec4<f32>(x_250, x_250, x_250, 1.0);
+          x_253_phi = x_251;
+          x_254_phi = true;
+          break;
+        }
+        var x_215_1 : vec2<i32> = x_214;
+        x_215_1.y = (x_217 + 1);
+        let x_215 : vec2<i32> = x_215_1;
+
+        continuing {
+          x_214_phi = x_215;
+        }
+      }
+      x_253 = x_253_phi;
+      let x_254 : bool = x_254_phi;
+      x_256_phi = x_253;
+      if (x_254) {
+        break;
+      }
+      x_256_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_256 : vec4<f32> = x_256_phi;
+  x_GLF_color = x_256;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..375d755
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.hlsl
@@ -0,0 +1,108 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_196[256] = (int[256])0;
+  int x_197[256] = (int[256])0;
+  int x_198[256] = (int[256])0;
+  int2 x_210 = int2(0, 0);
+  float4 x_251 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_253 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int2 x_214_phi = int2(0, 0);
+  float4 x_253_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_254_phi = false;
+  float4 x_256_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float4 x_199 = gl_FragCoord;
+  const float2 x_202 = asfloat(x_6[0].xy);
+  const float2 x_203 = (float2(x_199.x, x_199.y) / x_202);
+  x_210 = int2(int((x_203.x * 256.0f)), int((x_203.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      while (true) {
+        int x_233 = 0;
+        int x_234 = 0;
+        int x_235_phi = 0;
+        bool x_241_phi = false;
+        const int2 x_214 = x_214_phi;
+        const int x_217 = x_214.y;
+        x_253_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_254_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        const int x_221 = x_214.x;
+        const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+        x_196 = tint_symbol_5;
+        const int x_223 = x_196[x_217];
+        const bool x_225 = (x_221 < (x_223 + 15));
+        if (x_225) {
+          const int tint_symbol_6[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_197 = tint_symbol_6;
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        const bool x_237 = (x_221 > (x_235_phi - 15));
+        if (x_225) {
+          x_241_phi = x_237;
+        } else {
+          x_241_phi = x_225;
+        }
+        if (x_241_phi) {
+          const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_198 = tint_symbol_7;
+          const int x_245 = x_198[x_217];
+          const float x_250 = ((15.0f - abs(float((x_221 - x_245)))) * 0.06666667f);
+          x_251 = float4(x_250, x_250, x_250, 1.0f);
+          x_253_phi = x_251;
+          x_254_phi = true;
+          break;
+        }
+        int2 x_215_1 = x_214;
+        x_215_1.y = (x_217 + 1);
+        const int2 x_215 = x_215_1;
+        {
+          x_214_phi = x_215;
+        }
+      }
+      x_253 = x_253_phi;
+      const bool x_254 = x_254_phi;
+      x_256_phi = x_253;
+      if (x_254) {
+        break;
+      }
+      x_256_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  x_GLF_color = x_256_phi;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.msl
new file mode 100644
index 0000000..72762dc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.msl
@@ -0,0 +1,113 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  tint_array_wrapper x_196 = {};
+  tint_array_wrapper x_197 = {};
+  tint_array_wrapper x_198 = {};
+  int2 x_210 = 0;
+  float4 x_251 = 0.0f;
+  float4 x_253 = 0.0f;
+  int2 x_214_phi = 0;
+  float4 x_253_phi = 0.0f;
+  bool x_254_phi = false;
+  float4 x_256_phi = 0.0f;
+  float4 const x_199 = *(tint_symbol_8);
+  float2 const x_202 = x_6.resolution;
+  float2 const x_203 = (float2(x_199.x, x_199.y) / x_202);
+  x_210 = int2(int((x_203.x * 256.0f)), int((x_203.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      while (true) {
+        int x_233 = 0;
+        int x_234 = 0;
+        int x_235_phi = 0;
+        bool x_241_phi = false;
+        int2 const x_214 = x_214_phi;
+        int const x_217 = x_214.y;
+        x_253_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_254_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        int const x_221 = x_214.x;
+        tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+        x_196 = tint_symbol_4;
+        int const x_223 = x_196.arr[x_217];
+        bool const x_225 = (x_221 < (x_223 + 15));
+        if (x_225) {
+          tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_197 = tint_symbol_5;
+        }
+        if (x_225) {
+          x_233 = x_197.arr[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        int const x_235 = x_235_phi;
+        bool const x_237 = (x_221 > (x_235 - 15));
+        if (x_225) {
+          x_241_phi = x_237;
+        } else {
+          x_241_phi = x_225;
+        }
+        bool const x_241 = x_241_phi;
+        if (x_241) {
+          tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_198 = tint_symbol_6;
+          int const x_245 = x_198.arr[x_217];
+          float const x_250 = ((15.0f - fabs(float((x_221 - x_245)))) * 0.06666667f);
+          x_251 = float4(x_250, x_250, x_250, 1.0f);
+          x_253_phi = x_251;
+          x_254_phi = true;
+          break;
+        }
+        int2 x_215_1 = x_214;
+        x_215_1.y = (x_217 + 1);
+        int2 const x_215 = x_215_1;
+        {
+          x_214_phi = x_215;
+        }
+      }
+      x_253 = x_253_phi;
+      bool const x_254 = x_254_phi;
+      x_256_phi = x_253;
+      if (x_254) {
+        break;
+      }
+      x_256_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  float4 const x_256 = x_256_phi;
+  *(tint_symbol_9) = x_256;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..cc6b7b1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.spvasm
@@ -0,0 +1,408 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 303
+; Schema: 0
+               OpCapability Shader
+        %267 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_196 "x_196"
+               OpName %x_197 "x_197"
+               OpName %x_198 "x_198"
+               OpName %x_210 "x_210"
+               OpName %x_251 "x_251"
+               OpName %x_253 "x_253"
+               OpName %x_214_phi "x_214_phi"
+               OpName %x_253_phi "x_253_phi"
+               OpName %x_254_phi "x_254_phi"
+               OpName %x_256_phi "x_256_phi"
+               OpName %x_233 "x_233"
+               OpName %x_234 "x_234"
+               OpName %x_235_phi "x_235_phi"
+               OpName %x_241_phi "x_241_phi"
+               OpName %x_215_1 "x_215_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %25 = OpConstantNull %_arr_int_uint_256
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %31 = OpConstantNull %v2int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Function_int = OpTypePointer Function %int
+         %68 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %75 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+    %int_256 = OpConstant %int 256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %240 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+   %float_15 = OpConstant %float 15
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+        %288 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %290 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %x_196 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_197 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_198 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_210 = OpVariable %_ptr_Function_v2int Function %31
+      %x_251 = OpVariable %_ptr_Function_v4float Function %5
+      %x_253 = OpVariable %_ptr_Function_v4float Function %5
+  %x_214_phi = OpVariable %_ptr_Function_v2int Function %31
+  %x_253_phi = OpVariable %_ptr_Function_v4float Function %5
+  %x_254_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_256_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_233 = OpVariable %_ptr_Function_int Function %68
+      %x_234 = OpVariable %_ptr_Function_int Function %68
+  %x_235_phi = OpVariable %_ptr_Function_int Function %68
+  %x_241_phi = OpVariable %_ptr_Function_bool Function %40
+    %x_215_1 = OpVariable %_ptr_Function_v2int Function %31
+         %42 = OpLoad %v4float %gl_FragCoord
+         %45 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %46 = OpLoad %v2float %45
+         %47 = OpCompositeExtract %float %42 0
+         %48 = OpCompositeExtract %float %42 1
+         %49 = OpCompositeConstruct %v2float %47 %48
+         %50 = OpFDiv %v2float %49 %46
+         %52 = OpCompositeExtract %float %50 0
+         %54 = OpFMul %float %52 %float_256
+         %51 = OpConvertFToS %int %54
+         %56 = OpCompositeExtract %float %50 1
+         %57 = OpFMul %float %56 %float_256
+         %55 = OpConvertFToS %int %57
+         %58 = OpCompositeConstruct %v2int %51 %55
+               OpStore %x_210 %58
+               OpSelectionMerge %59 None
+               OpSwitch %uint_0 %60
+         %60 = OpLabel
+         %61 = OpLoad %v2int %x_210
+               OpStore %x_214_phi %61
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %72 = OpLoad %v2int %x_214_phi
+         %73 = OpCompositeExtract %int %72 1
+               OpStore %x_253_phi %75
+               OpStore %x_254_phi %false
+         %78 = OpINotEqual %bool %73 %int_256
+               OpSelectionMerge %79 None
+               OpBranchConditional %78 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %63
+         %79 = OpLabel
+         %82 = OpCompositeExtract %int %72 0
+               OpStore %x_196 %240
+        %241 = OpAccessChain %_ptr_Function_int %x_196 %73
+        %242 = OpLoad %int %241
+        %243 = OpIAdd %int %242 %int_15
+        %244 = OpSLessThan %bool %82 %243
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %245
+        %246 = OpLabel
+               OpStore %x_197 %240
+               OpBranch %245
+        %245 = OpLabel
+               OpSelectionMerge %247 None
+               OpBranchConditional %244 %248 %249
+        %248 = OpLabel
+        %250 = OpAccessChain %_ptr_Function_int %x_197 %73
+        %251 = OpLoad %int %250
+               OpStore %x_233 %251
+        %252 = OpLoad %int %x_233
+               OpStore %x_235_phi %252
+               OpBranch %247
+        %249 = OpLabel
+               OpStore %x_234 %int_0
+        %253 = OpLoad %int %x_234
+               OpStore %x_235_phi %253
+               OpBranch %247
+        %247 = OpLabel
+        %254 = OpLoad %int %x_235_phi
+        %255 = OpISub %int %254 %int_15
+        %256 = OpSGreaterThan %bool %82 %255
+               OpSelectionMerge %257 None
+               OpBranchConditional %244 %258 %259
+        %258 = OpLabel
+               OpStore %x_241_phi %256
+               OpBranch %257
+        %259 = OpLabel
+               OpStore %x_241_phi %244
+               OpBranch %257
+        %257 = OpLabel
+        %260 = OpLoad %bool %x_241_phi
+               OpSelectionMerge %261 None
+               OpBranchConditional %260 %262 %261
+        %262 = OpLabel
+               OpStore %x_198 %240
+        %263 = OpAccessChain %_ptr_Function_int %x_198 %73
+        %264 = OpLoad %int %263
+        %269 = OpISub %int %82 %264
+        %268 = OpConvertSToF %float %269
+        %266 = OpExtInst %float %267 FAbs %268
+        %270 = OpFSub %float %float_15 %266
+        %272 = OpFMul %float %270 %float_0_0666666701
+        %274 = OpCompositeConstruct %v4float %272 %272 %272 %float_1
+               OpStore %x_251 %274
+        %275 = OpLoad %v4float %x_251
+               OpStore %x_253_phi %275
+               OpStore %x_254_phi %true
+               OpBranch %63
+        %261 = OpLabel
+               OpStore %x_215_1 %72
+        %279 = OpAccessChain %_ptr_Function_int %x_215_1 %uint_1
+        %281 = OpIAdd %int %73 %int_1
+               OpStore %279 %281
+        %282 = OpLoad %v2int %x_215_1
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %x_214_phi %282
+               OpBranch %62
+         %63 = OpLabel
+        %283 = OpLoad %v4float %x_253_phi
+               OpStore %x_253 %283
+        %284 = OpLoad %bool %x_254_phi
+        %285 = OpLoad %v4float %x_253
+               OpStore %x_256_phi %285
+               OpSelectionMerge %286 None
+               OpBranchConditional %284 %287 %286
+        %287 = OpLabel
+               OpBranch %59
+        %286 = OpLabel
+               OpStore %x_256_phi %288
+               OpBranch %59
+         %59 = OpLabel
+        %289 = OpLoad %v4float %x_256_phi
+               OpStore %x_GLF_color %289
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %290
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %294 = OpLabel
+        %295 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %295
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %297 = OpLabel
+        %298 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %298
+        %299 = OpFunctionCall %void %main_1
+        %301 = OpLoad %v4float %x_GLF_color
+        %302 = OpCompositeConstruct %main_out %301
+        %300 = OpFunctionCall %void %tint_symbol_3 %302
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..43a6481
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl.expected.wgsl
@@ -0,0 +1,106 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_198 : array<i32, 256>;
+  var x_210 : vec2<i32>;
+  var x_251 : vec4<f32>;
+  var x_253 : vec4<f32>;
+  var x_214_phi : vec2<i32>;
+  var x_253_phi : vec4<f32>;
+  var x_254_phi : bool;
+  var x_256_phi : vec4<f32>;
+  let x_199 : vec4<f32> = gl_FragCoord;
+  let x_202 : vec2<f32> = x_6.resolution;
+  let x_203 : vec2<f32> = (vec2<f32>(x_199.x, x_199.y) / x_202);
+  x_210 = vec2<i32>(i32((x_203.x * 256.0)), i32((x_203.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      loop {
+        var x_233 : i32;
+        var x_234 : i32;
+        var x_235_phi : i32;
+        var x_241_phi : bool;
+        let x_214 : vec2<i32> = x_214_phi;
+        let x_217 : i32 = x_214.y;
+        x_253_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_254_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        let x_221 : i32 = x_214.x;
+        x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_223 : i32 = x_196[x_217];
+        let x_225 : bool = (x_221 < (x_223 + 15));
+        if (x_225) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        let x_235 : i32 = x_235_phi;
+        let x_237 : bool = (x_221 > (x_235 - 15));
+        if (x_225) {
+          x_241_phi = x_237;
+        } else {
+          x_241_phi = x_225;
+        }
+        let x_241 : bool = x_241_phi;
+        if (x_241) {
+          x_198 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_245 : i32 = x_198[x_217];
+          let x_250 : f32 = ((15.0 - abs(f32((x_221 - x_245)))) * 0.06666667);
+          x_251 = vec4<f32>(x_250, x_250, x_250, 1.0);
+          x_253_phi = x_251;
+          x_254_phi = true;
+          break;
+        }
+        var x_215_1 : vec2<i32> = x_214;
+        x_215_1.y = (x_217 + 1);
+        let x_215 : vec2<i32> = x_215_1;
+
+        continuing {
+          x_214_phi = x_215;
+        }
+      }
+      x_253 = x_253_phi;
+      let x_254 : bool = x_254_phi;
+      x_256_phi = x_253;
+      if (x_254) {
+        break;
+      }
+      x_256_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_256 : vec4<f32> = x_256_phi;
+  x_GLF_color = x_256;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm
new file mode 100644
index 0000000..0093895
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm
@@ -0,0 +1,299 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %177 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %183 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+        %192 = OpUndef %v4float
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %int_0_0 = OpConstant %int 0
+       %main = OpFunction %void None %8
+        %195 = OpLabel
+        %196 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %197 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %198 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+        %199 = OpLoad %v4float %gl_FragCoord
+        %200 = OpVectorShuffle %v2float %199 %199 0 1
+        %201 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %202 = OpLoad %v2float %201
+        %203 = OpFDiv %v2float %200 %202
+        %204 = OpCompositeExtract %float %203 0
+        %205 = OpFMul %float %204 %float_256
+        %206 = OpConvertFToS %int %205
+        %207 = OpCompositeExtract %float %203 1
+        %208 = OpFMul %float %207 %float_256
+        %209 = OpConvertFToS %int %208
+        %210 = OpCompositeConstruct %v2int %206 %209
+               OpSelectionMerge %211 None
+               OpSwitch %uint_0 %212
+        %212 = OpLabel
+               OpBranch %213
+        %213 = OpLabel
+        %214 = OpPhi %v2int %210 %212 %215 %216
+        %217 = OpCompositeExtract %int %214 1
+        %218 = OpINotEqual %bool %217 %int_256
+               OpLoopMerge %219 %216 None
+               OpBranchConditional %218 %220 %219
+        %220 = OpLabel
+        %221 = OpCompositeExtract %int %214 0
+               OpStore %196 %177
+        %222 = OpAccessChain %_ptr_Function_int %196 %217
+        %223 = OpLoad %int %222
+        %224 = OpIAdd %int %223 %int_15
+        %225 = OpSLessThan %bool %221 %224
+               OpBranch %226
+        %226 = OpLabel
+               OpSelectionMerge %227 None
+               OpBranchConditional %225 %228 %227
+        %228 = OpLabel
+               OpStore %197 %177
+               OpBranch %227
+        %227 = OpLabel
+        %229 = OpAccessChain %_ptr_Function_int %197 %217
+               OpSelectionMerge %230 None
+               OpBranchConditional %225 %231 %232
+        %231 = OpLabel
+        %233 = OpLoad %int %229
+               OpBranch %230
+        %232 = OpLabel
+        %234 = OpCopyObject %int %int_0_0
+               OpBranch %230
+        %230 = OpLabel
+        %235 = OpPhi %int %233 %231 %234 %232
+        %236 = OpISub %int %235 %int_15
+        %237 = OpSGreaterThan %bool %221 %236
+               OpBranch %238
+        %238 = OpLabel
+        %239 = OpSelect %bool %225 %237 %225
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %240
+        %241 = OpLabel
+               OpStore %198 %177
+        %242 = OpAccessChain %_ptr_Function_int %198 %217
+        %243 = OpLoad %int %242
+        %244 = OpISub %int %221 %243
+        %245 = OpConvertSToF %float %244
+        %246 = OpExtInst %float %1 FAbs %245
+        %247 = OpFSub %float %float_15 %246
+        %248 = OpFMul %float %247 %float_0_0666666701
+        %249 = OpCompositeConstruct %v4float %248 %248 %248 %float_1
+               OpBranch %219
+        %240 = OpLabel
+        %250 = OpIAdd %int %217 %int_1
+        %215 = OpCompositeInsert %v2int %250 %214 1
+               OpBranch %216
+        %216 = OpLabel
+               OpBranch %213
+        %219 = OpLabel
+        %251 = OpPhi %v4float %192 %213 %249 %241
+        %252 = OpPhi %bool %false %213 %true %241
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %211 %253
+        %253 = OpLabel
+               OpBranch %211
+        %211 = OpLabel
+        %254 = OpPhi %v4float %251 %219 %183 %253
+               OpStore %_GLF_color %254
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.hlsl
new file mode 100644
index 0000000..0614b0d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.hlsl
@@ -0,0 +1,102 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_196[256] = (int[256])0;
+  int x_197[256] = (int[256])0;
+  int x_198[256] = (int[256])0;
+  int2 x_210 = int2(0, 0);
+  float4 x_249 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_251 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int2 x_214_phi = int2(0, 0);
+  float4 x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_252_phi = false;
+  float4 x_254_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float4 x_199 = gl_FragCoord;
+  const float2 x_202 = asfloat(x_6[0].xy);
+  const float2 x_203 = (float2(x_199.x, x_199.y) / x_202);
+  x_210 = int2(int((x_203.x * 256.0f)), int((x_203.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      while (true) {
+        int x_233 = 0;
+        int x_234 = 0;
+        int x_235_phi = 0;
+        const int2 x_214 = x_214_phi;
+        const int x_217 = x_214.y;
+        x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_252_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        const int x_221 = x_214.x;
+        const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+        x_196 = tint_symbol_5;
+        const int x_223 = x_196[x_217];
+        const bool x_225 = (x_221 < (x_223 + 15));
+        if (x_225) {
+          const int tint_symbol_6[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_197 = tint_symbol_6;
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        const bool x_237 = (x_221 > (x_235_phi - 15));
+        if ((x_225 ? x_237 : x_225)) {
+          const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_198 = tint_symbol_7;
+          const int x_243 = x_198[x_217];
+          const float x_248 = ((15.0f - abs(float((x_221 - x_243)))) * 0.06666667f);
+          x_249 = float4(x_248, x_248, x_248, 1.0f);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        int2 x_215_1 = x_214;
+        x_215_1.y = (x_217 + 1);
+        const int2 x_215 = x_215_1;
+        {
+          x_214_phi = x_215;
+        }
+      }
+      x_251 = x_251_phi;
+      const bool x_252 = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  x_GLF_color = x_254_phi;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.msl
new file mode 100644
index 0000000..0b8a803
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.msl
@@ -0,0 +1,106 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  tint_array_wrapper x_196 = {};
+  tint_array_wrapper x_197 = {};
+  tint_array_wrapper x_198 = {};
+  int2 x_210 = 0;
+  float4 x_249 = 0.0f;
+  float4 x_251 = 0.0f;
+  int2 x_214_phi = 0;
+  float4 x_251_phi = 0.0f;
+  bool x_252_phi = false;
+  float4 x_254_phi = 0.0f;
+  float4 const x_199 = *(tint_symbol_8);
+  float2 const x_202 = x_6.resolution;
+  float2 const x_203 = (float2(x_199.x, x_199.y) / x_202);
+  x_210 = int2(int((x_203.x * 256.0f)), int((x_203.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      while (true) {
+        int x_233 = 0;
+        int x_234 = 0;
+        int x_235_phi = 0;
+        int2 const x_214 = x_214_phi;
+        int const x_217 = x_214.y;
+        x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_252_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        int const x_221 = x_214.x;
+        tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+        x_196 = tint_symbol_4;
+        int const x_223 = x_196.arr[x_217];
+        bool const x_225 = (x_221 < (x_223 + 15));
+        if (x_225) {
+          tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_197 = tint_symbol_5;
+        }
+        if (x_225) {
+          x_233 = x_197.arr[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        int const x_235 = x_235_phi;
+        bool const x_237 = (x_221 > (x_235 - 15));
+        if (select(x_225, x_237, x_225)) {
+          tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_198 = tint_symbol_6;
+          int const x_243 = x_198.arr[x_217];
+          float const x_248 = ((15.0f - fabs(float((x_221 - x_243)))) * 0.06666667f);
+          x_249 = float4(x_248, x_248, x_248, 1.0f);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        int2 x_215_1 = x_214;
+        x_215_1.y = (x_217 + 1);
+        int2 const x_215 = x_215_1;
+        {
+          x_214_phi = x_215;
+        }
+      }
+      x_251 = x_251_phi;
+      bool const x_252 = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  float4 const x_254 = x_254_phi;
+  *(tint_symbol_9) = x_254;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.spvasm
new file mode 100644
index 0000000..ace8cfb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.spvasm
@@ -0,0 +1,397 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 299
+; Schema: 0
+               OpCapability Shader
+        %263 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_196 "x_196"
+               OpName %x_197 "x_197"
+               OpName %x_198 "x_198"
+               OpName %x_210 "x_210"
+               OpName %x_249 "x_249"
+               OpName %x_251 "x_251"
+               OpName %x_214_phi "x_214_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_252_phi "x_252_phi"
+               OpName %x_254_phi "x_254_phi"
+               OpName %x_233 "x_233"
+               OpName %x_234 "x_234"
+               OpName %x_235_phi "x_235_phi"
+               OpName %x_215_1 "x_215_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %25 = OpConstantNull %_arr_int_uint_256
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %31 = OpConstantNull %v2int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Function_int = OpTypePointer Function %int
+         %68 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %74 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+    %int_256 = OpConstant %int 256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %239 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+   %float_15 = OpConstant %float 15
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+        %284 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %286 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %x_196 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_197 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_198 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_210 = OpVariable %_ptr_Function_v2int Function %31
+      %x_249 = OpVariable %_ptr_Function_v4float Function %5
+      %x_251 = OpVariable %_ptr_Function_v4float Function %5
+  %x_214_phi = OpVariable %_ptr_Function_v2int Function %31
+  %x_251_phi = OpVariable %_ptr_Function_v4float Function %5
+  %x_252_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_254_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_233 = OpVariable %_ptr_Function_int Function %68
+      %x_234 = OpVariable %_ptr_Function_int Function %68
+  %x_235_phi = OpVariable %_ptr_Function_int Function %68
+    %x_215_1 = OpVariable %_ptr_Function_v2int Function %31
+         %42 = OpLoad %v4float %gl_FragCoord
+         %45 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %46 = OpLoad %v2float %45
+         %47 = OpCompositeExtract %float %42 0
+         %48 = OpCompositeExtract %float %42 1
+         %49 = OpCompositeConstruct %v2float %47 %48
+         %50 = OpFDiv %v2float %49 %46
+         %52 = OpCompositeExtract %float %50 0
+         %54 = OpFMul %float %52 %float_256
+         %51 = OpConvertFToS %int %54
+         %56 = OpCompositeExtract %float %50 1
+         %57 = OpFMul %float %56 %float_256
+         %55 = OpConvertFToS %int %57
+         %58 = OpCompositeConstruct %v2int %51 %55
+               OpStore %x_210 %58
+               OpSelectionMerge %59 None
+               OpSwitch %uint_0 %60
+         %60 = OpLabel
+         %61 = OpLoad %v2int %x_210
+               OpStore %x_214_phi %61
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %71 = OpLoad %v2int %x_214_phi
+         %72 = OpCompositeExtract %int %71 1
+               OpStore %x_251_phi %74
+               OpStore %x_252_phi %false
+         %77 = OpINotEqual %bool %72 %int_256
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %63
+         %78 = OpLabel
+         %81 = OpCompositeExtract %int %71 0
+               OpStore %x_196 %239
+        %240 = OpAccessChain %_ptr_Function_int %x_196 %72
+        %241 = OpLoad %int %240
+        %242 = OpIAdd %int %241 %int_15
+        %243 = OpSLessThan %bool %81 %242
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+               OpStore %x_197 %239
+               OpBranch %244
+        %244 = OpLabel
+               OpSelectionMerge %246 None
+               OpBranchConditional %243 %247 %248
+        %247 = OpLabel
+        %249 = OpAccessChain %_ptr_Function_int %x_197 %72
+        %250 = OpLoad %int %249
+               OpStore %x_233 %250
+        %251 = OpLoad %int %x_233
+               OpStore %x_235_phi %251
+               OpBranch %246
+        %248 = OpLabel
+               OpStore %x_234 %int_0
+        %252 = OpLoad %int %x_234
+               OpStore %x_235_phi %252
+               OpBranch %246
+        %246 = OpLabel
+        %253 = OpLoad %int %x_235_phi
+        %254 = OpISub %int %253 %int_15
+        %255 = OpSGreaterThan %bool %81 %254
+        %256 = OpSelect %bool %243 %255 %243
+               OpSelectionMerge %257 None
+               OpBranchConditional %256 %258 %257
+        %258 = OpLabel
+               OpStore %x_198 %239
+        %259 = OpAccessChain %_ptr_Function_int %x_198 %72
+        %260 = OpLoad %int %259
+        %265 = OpISub %int %81 %260
+        %264 = OpConvertSToF %float %265
+        %262 = OpExtInst %float %263 FAbs %264
+        %266 = OpFSub %float %float_15 %262
+        %268 = OpFMul %float %266 %float_0_0666666701
+        %270 = OpCompositeConstruct %v4float %268 %268 %268 %float_1
+               OpStore %x_249 %270
+        %271 = OpLoad %v4float %x_249
+               OpStore %x_251_phi %271
+               OpStore %x_252_phi %true
+               OpBranch %63
+        %257 = OpLabel
+               OpStore %x_215_1 %71
+        %275 = OpAccessChain %_ptr_Function_int %x_215_1 %uint_1
+        %277 = OpIAdd %int %72 %int_1
+               OpStore %275 %277
+        %278 = OpLoad %v2int %x_215_1
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %x_214_phi %278
+               OpBranch %62
+         %63 = OpLabel
+        %279 = OpLoad %v4float %x_251_phi
+               OpStore %x_251 %279
+        %280 = OpLoad %bool %x_252_phi
+        %281 = OpLoad %v4float %x_251
+               OpStore %x_254_phi %281
+               OpSelectionMerge %282 None
+               OpBranchConditional %280 %283 %282
+        %283 = OpLabel
+               OpBranch %59
+        %282 = OpLabel
+               OpStore %x_254_phi %284
+               OpBranch %59
+         %59 = OpLabel
+        %285 = OpLoad %v4float %x_254_phi
+               OpStore %x_GLF_color %285
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %286
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %290 = OpLabel
+        %291 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %291
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %293 = OpLabel
+        %294 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %294
+        %295 = OpFunctionCall %void %main_1
+        %297 = OpLoad %v4float %x_GLF_color
+        %298 = OpCompositeConstruct %main_out %297
+        %296 = OpFunctionCall %void %tint_symbol_3 %298
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.wgsl
new file mode 100644
index 0000000..b52da64
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.spvasm.expected.wgsl
@@ -0,0 +1,99 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_198 : array<i32, 256>;
+  var x_210 : vec2<i32>;
+  var x_249 : vec4<f32>;
+  var x_251 : vec4<f32>;
+  var x_214_phi : vec2<i32>;
+  var x_251_phi : vec4<f32>;
+  var x_252_phi : bool;
+  var x_254_phi : vec4<f32>;
+  let x_199 : vec4<f32> = gl_FragCoord;
+  let x_202 : vec2<f32> = x_6.resolution;
+  let x_203 : vec2<f32> = (vec2<f32>(x_199.x, x_199.y) / x_202);
+  x_210 = vec2<i32>(i32((x_203.x * 256.0)), i32((x_203.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      loop {
+        var x_233 : i32;
+        var x_234 : i32;
+        var x_235_phi : i32;
+        let x_214 : vec2<i32> = x_214_phi;
+        let x_217 : i32 = x_214.y;
+        x_251_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_252_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        let x_221 : i32 = x_214.x;
+        x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_223 : i32 = x_196[x_217];
+        let x_225 : bool = (x_221 < (x_223 + 15));
+        if (x_225) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        let x_235 : i32 = x_235_phi;
+        let x_237 : bool = (x_221 > (x_235 - 15));
+        if (select(x_225, x_237, x_225)) {
+          x_198 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_243 : i32 = x_198[x_217];
+          let x_248 : f32 = ((15.0 - abs(f32((x_221 - x_243)))) * 0.06666667);
+          x_249 = vec4<f32>(x_248, x_248, x_248, 1.0);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        var x_215_1 : vec2<i32> = x_214;
+        x_215_1.y = (x_217 + 1);
+        let x_215 : vec2<i32> = x_215_1;
+
+        continuing {
+          x_214_phi = x_215;
+        }
+      }
+      x_251 = x_251_phi;
+      let x_252 : bool = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_254 : vec4<f32> = x_254_phi;
+  x_GLF_color = x_254;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
new file mode 100644
index 0000000..b52da64
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
@@ -0,0 +1,99 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_198 : array<i32, 256>;
+  var x_210 : vec2<i32>;
+  var x_249 : vec4<f32>;
+  var x_251 : vec4<f32>;
+  var x_214_phi : vec2<i32>;
+  var x_251_phi : vec4<f32>;
+  var x_252_phi : bool;
+  var x_254_phi : vec4<f32>;
+  let x_199 : vec4<f32> = gl_FragCoord;
+  let x_202 : vec2<f32> = x_6.resolution;
+  let x_203 : vec2<f32> = (vec2<f32>(x_199.x, x_199.y) / x_202);
+  x_210 = vec2<i32>(i32((x_203.x * 256.0)), i32((x_203.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      loop {
+        var x_233 : i32;
+        var x_234 : i32;
+        var x_235_phi : i32;
+        let x_214 : vec2<i32> = x_214_phi;
+        let x_217 : i32 = x_214.y;
+        x_251_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_252_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        let x_221 : i32 = x_214.x;
+        x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_223 : i32 = x_196[x_217];
+        let x_225 : bool = (x_221 < (x_223 + 15));
+        if (x_225) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        let x_235 : i32 = x_235_phi;
+        let x_237 : bool = (x_221 > (x_235 - 15));
+        if (select(x_225, x_237, x_225)) {
+          x_198 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_243 : i32 = x_198[x_217];
+          let x_248 : f32 = ((15.0 - abs(f32((x_221 - x_243)))) * 0.06666667);
+          x_249 = vec4<f32>(x_248, x_248, x_248, 1.0);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        var x_215_1 : vec2<i32> = x_214;
+        x_215_1.y = (x_217 + 1);
+        let x_215 : vec2<i32> = x_215_1;
+
+        continuing {
+          x_214_phi = x_215;
+        }
+      }
+      x_251 = x_251_phi;
+      let x_252 : bool = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_254 : vec4<f32> = x_254_phi;
+  x_GLF_color = x_254;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.hlsl
new file mode 100644
index 0000000..0614b0d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.hlsl
@@ -0,0 +1,102 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_196[256] = (int[256])0;
+  int x_197[256] = (int[256])0;
+  int x_198[256] = (int[256])0;
+  int2 x_210 = int2(0, 0);
+  float4 x_249 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_251 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int2 x_214_phi = int2(0, 0);
+  float4 x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  bool x_252_phi = false;
+  float4 x_254_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float4 x_199 = gl_FragCoord;
+  const float2 x_202 = asfloat(x_6[0].xy);
+  const float2 x_203 = (float2(x_199.x, x_199.y) / x_202);
+  x_210 = int2(int((x_203.x * 256.0f)), int((x_203.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      while (true) {
+        int x_233 = 0;
+        int x_234 = 0;
+        int x_235_phi = 0;
+        const int2 x_214 = x_214_phi;
+        const int x_217 = x_214.y;
+        x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_252_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        const int x_221 = x_214.x;
+        const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+        x_196 = tint_symbol_5;
+        const int x_223 = x_196[x_217];
+        const bool x_225 = (x_221 < (x_223 + 15));
+        if (x_225) {
+          const int tint_symbol_6[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_197 = tint_symbol_6;
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        const bool x_237 = (x_221 > (x_235_phi - 15));
+        if ((x_225 ? x_237 : x_225)) {
+          const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+          x_198 = tint_symbol_7;
+          const int x_243 = x_198[x_217];
+          const float x_248 = ((15.0f - abs(float((x_221 - x_243)))) * 0.06666667f);
+          x_249 = float4(x_248, x_248, x_248, 1.0f);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        int2 x_215_1 = x_214;
+        x_215_1.y = (x_217 + 1);
+        const int2 x_215 = x_215_1;
+        {
+          x_214_phi = x_215;
+        }
+      }
+      x_251 = x_251_phi;
+      const bool x_252 = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  x_GLF_color = x_254_phi;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.msl
new file mode 100644
index 0000000..0b8a803
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.msl
@@ -0,0 +1,106 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  tint_array_wrapper x_196 = {};
+  tint_array_wrapper x_197 = {};
+  tint_array_wrapper x_198 = {};
+  int2 x_210 = 0;
+  float4 x_249 = 0.0f;
+  float4 x_251 = 0.0f;
+  int2 x_214_phi = 0;
+  float4 x_251_phi = 0.0f;
+  bool x_252_phi = false;
+  float4 x_254_phi = 0.0f;
+  float4 const x_199 = *(tint_symbol_8);
+  float2 const x_202 = x_6.resolution;
+  float2 const x_203 = (float2(x_199.x, x_199.y) / x_202);
+  x_210 = int2(int((x_203.x * 256.0f)), int((x_203.y * 256.0f)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      while (true) {
+        int x_233 = 0;
+        int x_234 = 0;
+        int x_235_phi = 0;
+        int2 const x_214 = x_214_phi;
+        int const x_217 = x_214.y;
+        x_251_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        x_252_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        int const x_221 = x_214.x;
+        tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+        x_196 = tint_symbol_4;
+        int const x_223 = x_196.arr[x_217];
+        bool const x_225 = (x_221 < (x_223 + 15));
+        if (x_225) {
+          tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_197 = tint_symbol_5;
+        }
+        if (x_225) {
+          x_233 = x_197.arr[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        int const x_235 = x_235_phi;
+        bool const x_237 = (x_221 > (x_235 - 15));
+        if (select(x_225, x_237, x_225)) {
+          tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+          x_198 = tint_symbol_6;
+          int const x_243 = x_198.arr[x_217];
+          float const x_248 = ((15.0f - fabs(float((x_221 - x_243)))) * 0.06666667f);
+          x_249 = float4(x_248, x_248, x_248, 1.0f);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        int2 x_215_1 = x_214;
+        x_215_1.y = (x_217 + 1);
+        int2 const x_215 = x_215_1;
+        {
+          x_214_phi = x_215;
+        }
+      }
+      x_251 = x_251_phi;
+      bool const x_252 = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+  }
+  float4 const x_254 = x_254_phi;
+  *(tint_symbol_9) = x_254;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.spvasm
new file mode 100644
index 0000000..ace8cfb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.spvasm
@@ -0,0 +1,397 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 299
+; Schema: 0
+               OpCapability Shader
+        %263 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_196 "x_196"
+               OpName %x_197 "x_197"
+               OpName %x_198 "x_198"
+               OpName %x_210 "x_210"
+               OpName %x_249 "x_249"
+               OpName %x_251 "x_251"
+               OpName %x_214_phi "x_214_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_252_phi "x_252_phi"
+               OpName %x_254_phi "x_254_phi"
+               OpName %x_233 "x_233"
+               OpName %x_234 "x_234"
+               OpName %x_235_phi "x_235_phi"
+               OpName %x_215_1 "x_215_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %25 = OpConstantNull %_arr_int_uint_256
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %31 = OpConstantNull %v2int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Function_int = OpTypePointer Function %int
+         %68 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %74 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+    %int_256 = OpConstant %int 256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %239 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+   %float_15 = OpConstant %float 15
+%float_0_0666666701 = OpConstant %float 0.0666666701
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+        %284 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %286 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+      %x_196 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_197 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_198 = OpVariable %_ptr_Function__arr_int_uint_256 Function %25
+      %x_210 = OpVariable %_ptr_Function_v2int Function %31
+      %x_249 = OpVariable %_ptr_Function_v4float Function %5
+      %x_251 = OpVariable %_ptr_Function_v4float Function %5
+  %x_214_phi = OpVariable %_ptr_Function_v2int Function %31
+  %x_251_phi = OpVariable %_ptr_Function_v4float Function %5
+  %x_252_phi = OpVariable %_ptr_Function_bool Function %40
+  %x_254_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_233 = OpVariable %_ptr_Function_int Function %68
+      %x_234 = OpVariable %_ptr_Function_int Function %68
+  %x_235_phi = OpVariable %_ptr_Function_int Function %68
+    %x_215_1 = OpVariable %_ptr_Function_v2int Function %31
+         %42 = OpLoad %v4float %gl_FragCoord
+         %45 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %46 = OpLoad %v2float %45
+         %47 = OpCompositeExtract %float %42 0
+         %48 = OpCompositeExtract %float %42 1
+         %49 = OpCompositeConstruct %v2float %47 %48
+         %50 = OpFDiv %v2float %49 %46
+         %52 = OpCompositeExtract %float %50 0
+         %54 = OpFMul %float %52 %float_256
+         %51 = OpConvertFToS %int %54
+         %56 = OpCompositeExtract %float %50 1
+         %57 = OpFMul %float %56 %float_256
+         %55 = OpConvertFToS %int %57
+         %58 = OpCompositeConstruct %v2int %51 %55
+               OpStore %x_210 %58
+               OpSelectionMerge %59 None
+               OpSwitch %uint_0 %60
+         %60 = OpLabel
+         %61 = OpLoad %v2int %x_210
+               OpStore %x_214_phi %61
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %71 = OpLoad %v2int %x_214_phi
+         %72 = OpCompositeExtract %int %71 1
+               OpStore %x_251_phi %74
+               OpStore %x_252_phi %false
+         %77 = OpINotEqual %bool %72 %int_256
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %63
+         %78 = OpLabel
+         %81 = OpCompositeExtract %int %71 0
+               OpStore %x_196 %239
+        %240 = OpAccessChain %_ptr_Function_int %x_196 %72
+        %241 = OpLoad %int %240
+        %242 = OpIAdd %int %241 %int_15
+        %243 = OpSLessThan %bool %81 %242
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+               OpStore %x_197 %239
+               OpBranch %244
+        %244 = OpLabel
+               OpSelectionMerge %246 None
+               OpBranchConditional %243 %247 %248
+        %247 = OpLabel
+        %249 = OpAccessChain %_ptr_Function_int %x_197 %72
+        %250 = OpLoad %int %249
+               OpStore %x_233 %250
+        %251 = OpLoad %int %x_233
+               OpStore %x_235_phi %251
+               OpBranch %246
+        %248 = OpLabel
+               OpStore %x_234 %int_0
+        %252 = OpLoad %int %x_234
+               OpStore %x_235_phi %252
+               OpBranch %246
+        %246 = OpLabel
+        %253 = OpLoad %int %x_235_phi
+        %254 = OpISub %int %253 %int_15
+        %255 = OpSGreaterThan %bool %81 %254
+        %256 = OpSelect %bool %243 %255 %243
+               OpSelectionMerge %257 None
+               OpBranchConditional %256 %258 %257
+        %258 = OpLabel
+               OpStore %x_198 %239
+        %259 = OpAccessChain %_ptr_Function_int %x_198 %72
+        %260 = OpLoad %int %259
+        %265 = OpISub %int %81 %260
+        %264 = OpConvertSToF %float %265
+        %262 = OpExtInst %float %263 FAbs %264
+        %266 = OpFSub %float %float_15 %262
+        %268 = OpFMul %float %266 %float_0_0666666701
+        %270 = OpCompositeConstruct %v4float %268 %268 %268 %float_1
+               OpStore %x_249 %270
+        %271 = OpLoad %v4float %x_249
+               OpStore %x_251_phi %271
+               OpStore %x_252_phi %true
+               OpBranch %63
+        %257 = OpLabel
+               OpStore %x_215_1 %71
+        %275 = OpAccessChain %_ptr_Function_int %x_215_1 %uint_1
+        %277 = OpIAdd %int %72 %int_1
+               OpStore %275 %277
+        %278 = OpLoad %v2int %x_215_1
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %x_214_phi %278
+               OpBranch %62
+         %63 = OpLabel
+        %279 = OpLoad %v4float %x_251_phi
+               OpStore %x_251 %279
+        %280 = OpLoad %bool %x_252_phi
+        %281 = OpLoad %v4float %x_251
+               OpStore %x_254_phi %281
+               OpSelectionMerge %282 None
+               OpBranchConditional %280 %283 %282
+        %283 = OpLabel
+               OpBranch %59
+        %282 = OpLabel
+               OpStore %x_254_phi %284
+               OpBranch %59
+         %59 = OpLabel
+        %285 = OpLoad %v4float %x_254_phi
+               OpStore %x_GLF_color %285
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %286
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %290 = OpLabel
+        %291 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %291
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %293 = OpLabel
+        %294 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %294
+        %295 = OpFunctionCall %void %main_1
+        %297 = OpLoad %v4float %x_GLF_color
+        %298 = OpCompositeConstruct %main_out %297
+        %296 = OpFunctionCall %void %tint_symbol_3 %298
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.wgsl
new file mode 100644
index 0000000..b52da64
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl.expected.wgsl
@@ -0,0 +1,99 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_196 : array<i32, 256>;
+  var x_197 : array<i32, 256>;
+  var x_198 : array<i32, 256>;
+  var x_210 : vec2<i32>;
+  var x_249 : vec4<f32>;
+  var x_251 : vec4<f32>;
+  var x_214_phi : vec2<i32>;
+  var x_251_phi : vec4<f32>;
+  var x_252_phi : bool;
+  var x_254_phi : vec4<f32>;
+  let x_199 : vec4<f32> = gl_FragCoord;
+  let x_202 : vec2<f32> = x_6.resolution;
+  let x_203 : vec2<f32> = (vec2<f32>(x_199.x, x_199.y) / x_202);
+  x_210 = vec2<i32>(i32((x_203.x * 256.0)), i32((x_203.y * 256.0)));
+  switch(0u) {
+    default: {
+      x_214_phi = x_210;
+      loop {
+        var x_233 : i32;
+        var x_234 : i32;
+        var x_235_phi : i32;
+        let x_214 : vec2<i32> = x_214_phi;
+        let x_217 : i32 = x_214.y;
+        x_251_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+        x_252_phi = false;
+        if ((x_217 != 256)) {
+        } else {
+          break;
+        }
+        let x_221 : i32 = x_214.x;
+        x_196 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        let x_223 : i32 = x_196[x_217];
+        let x_225 : bool = (x_221 < (x_223 + 15));
+        if (x_225) {
+          x_197 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+        }
+        if (x_225) {
+          x_233 = x_197[x_217];
+          x_235_phi = x_233;
+        } else {
+          x_234 = 0;
+          x_235_phi = x_234;
+        }
+        let x_235 : i32 = x_235_phi;
+        let x_237 : bool = (x_221 > (x_235 - 15));
+        if (select(x_225, x_237, x_225)) {
+          x_198 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+          let x_243 : i32 = x_198[x_217];
+          let x_248 : f32 = ((15.0 - abs(f32((x_221 - x_243)))) * 0.06666667);
+          x_249 = vec4<f32>(x_248, x_248, x_248, 1.0);
+          x_251_phi = x_249;
+          x_252_phi = true;
+          break;
+        }
+        var x_215_1 : vec2<i32> = x_214;
+        x_215_1.y = (x_217 + 1);
+        let x_215 : vec2<i32> = x_215_1;
+
+        continuing {
+          x_214_phi = x_215;
+        }
+      }
+      x_251 = x_251_phi;
+      let x_252 : bool = x_252_phi;
+      x_254_phi = x_251;
+      if (x_252) {
+        break;
+      }
+      x_254_phi = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+    }
+  }
+  let x_254 : vec4<f32> = x_254_phi;
+  x_GLF_color = x_254;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm
new file mode 100644
index 0000000..315763e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm
@@ -0,0 +1,319 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %trace_vi2_ "trace(vi2;"
+               OpName %pos "pos"
+               OpName %indexable "indexable"
+               OpName %indexable_0 "indexable"
+               OpName %p "p"
+               OpName %indexable_1 "indexable"
+               OpName %pos_0 "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %ipos "ipos"
+               OpName %_GLF_color "_GLF_color"
+               OpName %param "param"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+         %23 = OpTypeFunction %v4float %_ptr_Function_v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %189 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+%_ptr_Function_float = OpTypePointer Function %float
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %196 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %17
+        %204 = OpLabel
+      %pos_0 = OpVariable %_ptr_Function_v2float Function
+       %ipos = OpVariable %_ptr_Function_v2int Function
+      %param = OpVariable %_ptr_Function_v2int Function
+        %205 = OpLoad %v4float %gl_FragCoord
+        %206 = OpVectorShuffle %v2float %205 %205 0 1
+        %207 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %208 = OpLoad %v2float %207
+        %209 = OpFDiv %v2float %206 %208
+               OpStore %pos_0 %209
+        %210 = OpAccessChain %_ptr_Function_float %pos_0 %uint_0
+        %211 = OpLoad %float %210
+        %212 = OpFMul %float %211 %float_256
+        %213 = OpConvertFToS %int %212
+        %214 = OpAccessChain %_ptr_Function_float %pos_0 %uint_1
+        %215 = OpLoad %float %214
+        %216 = OpFMul %float %215 %float_256
+        %217 = OpConvertFToS %int %216
+        %218 = OpCompositeConstruct %v2int %213 %217
+               OpStore %ipos %218
+        %219 = OpLoad %v2int %ipos
+               OpStore %param %219
+        %220 = OpFunctionCall %v4float %trace_vi2_ %param
+               OpStore %_GLF_color %220
+               OpReturn
+               OpFunctionEnd
+ %trace_vi2_ = OpFunction %v4float None %23
+        %pos = OpFunctionParameter %_ptr_Function_v2int
+        %221 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_256 Function
+%indexable_0 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+          %p = OpVariable %_ptr_Function_float Function
+%indexable_1 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+               OpBranch %222
+        %222 = OpLabel
+               OpLoopMerge %223 %224 None
+               OpBranch %225
+        %225 = OpLabel
+        %226 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %227 = OpLoad %int %226
+        %228 = OpINotEqual %bool %227 %int_256
+               OpBranchConditional %228 %229 %223
+        %229 = OpLabel
+        %230 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %231 = OpLoad %int %230
+        %232 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %233 = OpLoad %int %232
+               OpStore %indexable %189
+        %234 = OpAccessChain %_ptr_Function_int %indexable %233
+        %235 = OpLoad %int %234
+        %236 = OpIAdd %int %235 %int_15
+        %237 = OpSLessThan %bool %231 %236
+               OpSelectionMerge %238 None
+               OpBranchConditional %237 %239 %238
+        %239 = OpLabel
+        %240 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %241 = OpLoad %int %240
+        %242 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %243 = OpLoad %int %242
+               OpStore %indexable_0 %189
+        %244 = OpAccessChain %_ptr_Function_int %indexable_0 %243
+        %245 = OpLoad %int %244
+        %246 = OpISub %int %245 %int_15
+        %247 = OpSGreaterThan %bool %241 %246
+               OpBranch %238
+        %238 = OpLabel
+        %248 = OpPhi %bool %237 %229 %247 %239
+               OpSelectionMerge %249 None
+               OpBranchConditional %248 %250 %249
+        %250 = OpLabel
+        %251 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %252 = OpLoad %int %251
+        %253 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %254 = OpLoad %int %253
+               OpStore %indexable_1 %189
+        %255 = OpAccessChain %_ptr_Function_int %indexable_1 %254
+        %256 = OpLoad %int %255
+        %257 = OpISub %int %252 %256
+        %258 = OpConvertSToF %float %257
+        %259 = OpExtInst %float %1 FAbs %258
+        %260 = OpFSub %float %float_15 %259
+        %261 = OpFDiv %float %260 %float_15
+               OpStore %p %261
+        %262 = OpLoad %float %p
+        %263 = OpLoad %float %p
+        %264 = OpLoad %float %p
+        %265 = OpCompositeConstruct %v4float %262 %263 %264 %float_1
+               OpReturnValue %265
+        %249 = OpLabel
+        %266 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %267 = OpLoad %int %266
+        %268 = OpIAdd %int %267 %int_1
+               OpStore %266 %268
+               OpBranch %224
+        %224 = OpLabel
+               OpBranch %222
+        %223 = OpLabel
+               OpReturnValue %196
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..7b7c9a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.hlsl
@@ -0,0 +1,84 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float4 trace_vi2_(inout int2 pos) {
+  int indexable[256] = (int[256])0;
+  int indexable_1[256] = (int[256])0;
+  float p = 0.0f;
+  int indexable_2[256] = (int[256])0;
+  while (true) {
+    bool x_247 = false;
+    bool x_248_phi = false;
+    const int x_227 = pos.y;
+    if ((x_227 != 256)) {
+    } else {
+      break;
+    }
+    const int x_231 = pos.x;
+    const int x_233 = pos.y;
+    const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+    indexable = tint_symbol_5;
+    const int x_235 = indexable[x_233];
+    const bool x_237 = (x_231 < (x_235 + 15));
+    x_248_phi = x_237;
+    if (x_237) {
+      const int x_241 = pos.x;
+      const int x_243 = pos.y;
+      const int tint_symbol_6[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+      indexable_1 = tint_symbol_6;
+      const int x_245 = indexable_1[x_243];
+      x_247 = (x_241 > (x_245 - 15));
+      x_248_phi = x_247;
+    }
+    if (x_248_phi) {
+      const int x_252 = pos.x;
+      const int x_254 = pos.y;
+      const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+      indexable_2 = tint_symbol_7;
+      const int x_256 = indexable_2[x_254];
+      p = ((15.0f - abs(float((x_252 - x_256)))) / 15.0f);
+      return float4(p, p, p, 1.0f);
+    }
+    const int x_267 = pos.y;
+    pos.y = (x_267 + 1);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1() {
+  float2 pos_1 = float2(0.0f, 0.0f);
+  int2 ipos = int2(0, 0);
+  int2 param = int2(0, 0);
+  const float4 x_205 = gl_FragCoord;
+  const float2 x_208 = asfloat(x_13[0].xy);
+  pos_1 = (float2(x_205.x, x_205.y) / x_208);
+  const float x_211 = pos_1.x;
+  const float x_215 = pos_1.y;
+  ipos = int2(int((x_211 * 256.0f)), int((x_215 * 256.0f)));
+  param = ipos;
+  const float4 x_220 = trace_vi2_(param);
+  x_GLF_color = x_220;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.msl
new file mode 100644
index 0000000..f95df19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 trace_vi2_(thread int2* const pos) {
+  tint_array_wrapper indexable = {};
+  tint_array_wrapper indexable_1 = {};
+  float p = 0.0f;
+  tint_array_wrapper indexable_2 = {};
+  while (true) {
+    bool x_247 = false;
+    bool x_248_phi = false;
+    int const x_227 = (*(pos)).y;
+    if ((x_227 != 256)) {
+    } else {
+      break;
+    }
+    int const x_231 = (*(pos)).x;
+    int const x_233 = (*(pos)).y;
+    tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+    indexable = tint_symbol_4;
+    int const x_235 = indexable.arr[x_233];
+    bool const x_237 = (x_231 < (x_235 + 15));
+    x_248_phi = x_237;
+    if (x_237) {
+      int const x_241 = (*(pos)).x;
+      int const x_243 = (*(pos)).y;
+      tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+      indexable_1 = tint_symbol_5;
+      int const x_245 = indexable_1.arr[x_243];
+      x_247 = (x_241 > (x_245 - 15));
+      x_248_phi = x_247;
+    }
+    bool const x_248 = x_248_phi;
+    if (x_248) {
+      int const x_252 = (*(pos)).x;
+      int const x_254 = (*(pos)).y;
+      tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+      indexable_2 = tint_symbol_6;
+      int const x_256 = indexable_2.arr[x_254];
+      p = ((15.0f - fabs(float((x_252 - x_256)))) / 15.0f);
+      float const x_262 = p;
+      float const x_263 = p;
+      float const x_264 = p;
+      return float4(x_262, x_263, x_264, 1.0f);
+    }
+    int const x_267 = (*(pos)).y;
+    (*(pos)).y = (x_267 + 1);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1(constant buf0& x_13, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  float2 pos_1 = 0.0f;
+  int2 ipos = 0;
+  int2 param = 0;
+  float4 const x_205 = *(tint_symbol_8);
+  float2 const x_208 = x_13.resolution;
+  pos_1 = (float2(x_205.x, x_205.y) / x_208);
+  float const x_211 = pos_1.x;
+  float const x_215 = pos_1.y;
+  ipos = int2(int((x_211 * 256.0f)), int((x_215 * 256.0f)));
+  int2 const x_219 = ipos;
+  param = x_219;
+  float4 const x_220 = trace_vi2_(&(param));
+  *(tint_symbol_9) = x_220;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_13, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..1bc7c3e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.spvasm
@@ -0,0 +1,378 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 310
+; Schema: 0
+               OpCapability Shader
+        %247 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %trace_vi2_ "trace_vi2_"
+               OpName %pos "pos"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %p "p"
+               OpName %indexable_2 "indexable_2"
+               OpName %x_247 "x_247"
+               OpName %x_248_phi "x_248_phi"
+               OpName %main_1 "main_1"
+               OpName %pos_1 "pos_1"
+               OpName %ipos "ipos"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %15 = OpTypeFunction %v4float %_ptr_Function_v2int
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %27 = OpConstantNull %_arr_int_uint_256
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+     %uint_0 = OpConstant %uint 0
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %216 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %265 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %void = OpTypeVoid
+        %266 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %272 = OpConstantNull %v2float
+        %274 = OpConstantNull %v2int
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+   %main_out = OpTypeStruct %v4float
+        %297 = OpTypeFunction %void %main_out
+ %trace_vi2_ = OpFunction %v4float None %15
+        %pos = OpFunctionParameter %_ptr_Function_v2int
+         %21 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+%indexable_1 = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+          %p = OpVariable %_ptr_Function_float Function %31
+%indexable_2 = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+      %x_247 = OpVariable %_ptr_Function_bool Function %40
+  %x_248_phi = OpVariable %_ptr_Function_bool Function %40
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_int %pos %uint_1
+         %46 = OpLoad %int %45
+         %48 = OpINotEqual %bool %46 %int_256
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %34
+         %49 = OpLabel
+         %54 = OpAccessChain %_ptr_Function_int %pos %uint_0
+         %55 = OpLoad %int %54
+         %57 = OpAccessChain %_ptr_Function_int %pos %uint_1
+         %58 = OpLoad %int %57
+               OpStore %indexable %216
+        %217 = OpAccessChain %_ptr_Function_int %indexable %58
+        %218 = OpLoad %int %217
+        %219 = OpIAdd %int %218 %int_15
+        %220 = OpSLessThan %bool %55 %219
+               OpStore %x_248_phi %220
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %221
+        %222 = OpLabel
+        %224 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %225 = OpLoad %int %224
+        %227 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %228 = OpLoad %int %227
+               OpStore %indexable_1 %216
+        %229 = OpAccessChain %_ptr_Function_int %indexable_1 %228
+        %230 = OpLoad %int %229
+        %231 = OpISub %int %230 %int_15
+        %232 = OpSGreaterThan %bool %225 %231
+               OpStore %x_247 %232
+        %233 = OpLoad %bool %x_247
+               OpStore %x_248_phi %233
+               OpBranch %221
+        %221 = OpLabel
+        %234 = OpLoad %bool %x_248_phi
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %238 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %239 = OpLoad %int %238
+        %241 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %242 = OpLoad %int %241
+               OpStore %indexable_2 %216
+        %243 = OpAccessChain %_ptr_Function_int %indexable_2 %242
+        %244 = OpLoad %int %243
+        %249 = OpISub %int %239 %244
+        %248 = OpConvertSToF %float %249
+        %246 = OpExtInst %float %247 FAbs %248
+        %250 = OpFSub %float %float_15 %246
+        %251 = OpFDiv %float %250 %float_15
+               OpStore %p %251
+        %252 = OpLoad %float %p
+        %253 = OpLoad %float %p
+        %254 = OpLoad %float %p
+        %256 = OpCompositeConstruct %v4float %252 %253 %254 %float_1
+               OpReturnValue %256
+        %235 = OpLabel
+        %258 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %259 = OpLoad %int %258
+        %261 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %263 = OpIAdd %int %259 %int_1
+               OpStore %261 %263
+               OpBranch %35
+         %35 = OpLabel
+               OpBranch %33
+         %34 = OpLabel
+               OpReturnValue %265
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %266
+        %269 = OpLabel
+      %pos_1 = OpVariable %_ptr_Function_v2float Function %272
+       %ipos = OpVariable %_ptr_Function_v2int Function %274
+      %param = OpVariable %_ptr_Function_v2int Function %274
+        %276 = OpLoad %v4float %gl_FragCoord
+        %278 = OpAccessChain %_ptr_Uniform_v2float %x_13 %uint_0
+        %279 = OpLoad %v2float %278
+        %280 = OpCompositeExtract %float %276 0
+        %281 = OpCompositeExtract %float %276 1
+        %282 = OpCompositeConstruct %v2float %280 %281
+        %283 = OpFDiv %v2float %282 %279
+               OpStore %pos_1 %283
+        %284 = OpAccessChain %_ptr_Function_float %pos_1 %uint_0
+        %285 = OpLoad %float %284
+        %286 = OpAccessChain %_ptr_Function_float %pos_1 %uint_1
+        %287 = OpLoad %float %286
+        %290 = OpFMul %float %285 %float_256
+        %288 = OpConvertFToS %int %290
+        %292 = OpFMul %float %287 %float_256
+        %291 = OpConvertFToS %int %292
+        %293 = OpCompositeConstruct %v2int %288 %291
+               OpStore %ipos %293
+        %294 = OpLoad %v2int %ipos
+               OpStore %param %294
+        %295 = OpFunctionCall %v4float %trace_vi2_ %param
+               OpStore %x_GLF_color %295
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %297
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %301 = OpLabel
+        %302 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %302
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %266
+        %304 = OpLabel
+        %305 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %305
+        %306 = OpFunctionCall %void %main_1
+        %308 = OpLoad %v4float %x_GLF_color
+        %309 = OpCompositeConstruct %main_out %308
+        %307 = OpFunctionCall %void %tint_symbol_3 %309
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..5e10336
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.spvasm.expected.wgsl
@@ -0,0 +1,85 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn trace_vi2_(pos : ptr<function, vec2<i32>>) -> vec4<f32> {
+  var indexable : array<i32, 256>;
+  var indexable_1 : array<i32, 256>;
+  var p : f32;
+  var indexable_2 : array<i32, 256>;
+  loop {
+    var x_247 : bool;
+    var x_248_phi : bool;
+    let x_227 : i32 = (*(pos)).y;
+    if ((x_227 != 256)) {
+    } else {
+      break;
+    }
+    let x_231 : i32 = (*(pos)).x;
+    let x_233 : i32 = (*(pos)).y;
+    indexable = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+    let x_235 : i32 = indexable[x_233];
+    let x_237 : bool = (x_231 < (x_235 + 15));
+    x_248_phi = x_237;
+    if (x_237) {
+      let x_241 : i32 = (*(pos)).x;
+      let x_243 : i32 = (*(pos)).y;
+      indexable_1 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_245 : i32 = indexable_1[x_243];
+      x_247 = (x_241 > (x_245 - 15));
+      x_248_phi = x_247;
+    }
+    let x_248 : bool = x_248_phi;
+    if (x_248) {
+      let x_252 : i32 = (*(pos)).x;
+      let x_254 : i32 = (*(pos)).y;
+      indexable_2 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_256 : i32 = indexable_2[x_254];
+      p = ((15.0 - abs(f32((x_252 - x_256)))) / 15.0);
+      let x_262 : f32 = p;
+      let x_263 : f32 = p;
+      let x_264 : f32 = p;
+      return vec4<f32>(x_262, x_263, x_264, 1.0);
+    }
+    let x_266 : ptr<function, i32> = &((*(pos)).y);
+    let x_267 : i32 = *(x_266);
+    *(x_266) = (x_267 + 1);
+  }
+  return vec4<f32>(0.0, 0.0, 0.0, 1.0);
+}
+
+fn main_1() {
+  var pos_1 : vec2<f32>;
+  var ipos : vec2<i32>;
+  var param : vec2<i32>;
+  let x_205 : vec4<f32> = gl_FragCoord;
+  let x_208 : vec2<f32> = x_13.resolution;
+  pos_1 = (vec2<f32>(x_205.x, x_205.y) / x_208);
+  let x_211 : f32 = pos_1.x;
+  let x_215 : f32 = pos_1.y;
+  ipos = vec2<i32>(i32((x_211 * 256.0)), i32((x_215 * 256.0)));
+  let x_219 : vec2<i32> = ipos;
+  param = x_219;
+  let x_220 : vec4<f32> = trace_vi2_(&(param));
+  x_GLF_color = x_220;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
new file mode 100644
index 0000000..5e10336
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
@@ -0,0 +1,85 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn trace_vi2_(pos : ptr<function, vec2<i32>>) -> vec4<f32> {
+  var indexable : array<i32, 256>;
+  var indexable_1 : array<i32, 256>;
+  var p : f32;
+  var indexable_2 : array<i32, 256>;
+  loop {
+    var x_247 : bool;
+    var x_248_phi : bool;
+    let x_227 : i32 = (*(pos)).y;
+    if ((x_227 != 256)) {
+    } else {
+      break;
+    }
+    let x_231 : i32 = (*(pos)).x;
+    let x_233 : i32 = (*(pos)).y;
+    indexable = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+    let x_235 : i32 = indexable[x_233];
+    let x_237 : bool = (x_231 < (x_235 + 15));
+    x_248_phi = x_237;
+    if (x_237) {
+      let x_241 : i32 = (*(pos)).x;
+      let x_243 : i32 = (*(pos)).y;
+      indexable_1 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_245 : i32 = indexable_1[x_243];
+      x_247 = (x_241 > (x_245 - 15));
+      x_248_phi = x_247;
+    }
+    let x_248 : bool = x_248_phi;
+    if (x_248) {
+      let x_252 : i32 = (*(pos)).x;
+      let x_254 : i32 = (*(pos)).y;
+      indexable_2 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_256 : i32 = indexable_2[x_254];
+      p = ((15.0 - abs(f32((x_252 - x_256)))) / 15.0);
+      let x_262 : f32 = p;
+      let x_263 : f32 = p;
+      let x_264 : f32 = p;
+      return vec4<f32>(x_262, x_263, x_264, 1.0);
+    }
+    let x_266 : ptr<function, i32> = &((*(pos)).y);
+    let x_267 : i32 = *(x_266);
+    *(x_266) = (x_267 + 1);
+  }
+  return vec4<f32>(0.0, 0.0, 0.0, 1.0);
+}
+
+fn main_1() {
+  var pos_1 : vec2<f32>;
+  var ipos : vec2<i32>;
+  var param : vec2<i32>;
+  let x_205 : vec4<f32> = gl_FragCoord;
+  let x_208 : vec2<f32> = x_13.resolution;
+  pos_1 = (vec2<f32>(x_205.x, x_205.y) / x_208);
+  let x_211 : f32 = pos_1.x;
+  let x_215 : f32 = pos_1.y;
+  ipos = vec2<i32>(i32((x_211 * 256.0)), i32((x_215 * 256.0)));
+  let x_219 : vec2<i32> = ipos;
+  param = x_219;
+  let x_220 : vec4<f32> = trace_vi2_(&(param));
+  x_GLF_color = x_220;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..7b7c9a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.hlsl
@@ -0,0 +1,84 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float4 trace_vi2_(inout int2 pos) {
+  int indexable[256] = (int[256])0;
+  int indexable_1[256] = (int[256])0;
+  float p = 0.0f;
+  int indexable_2[256] = (int[256])0;
+  while (true) {
+    bool x_247 = false;
+    bool x_248_phi = false;
+    const int x_227 = pos.y;
+    if ((x_227 != 256)) {
+    } else {
+      break;
+    }
+    const int x_231 = pos.x;
+    const int x_233 = pos.y;
+    const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+    indexable = tint_symbol_5;
+    const int x_235 = indexable[x_233];
+    const bool x_237 = (x_231 < (x_235 + 15));
+    x_248_phi = x_237;
+    if (x_237) {
+      const int x_241 = pos.x;
+      const int x_243 = pos.y;
+      const int tint_symbol_6[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+      indexable_1 = tint_symbol_6;
+      const int x_245 = indexable_1[x_243];
+      x_247 = (x_241 > (x_245 - 15));
+      x_248_phi = x_247;
+    }
+    if (x_248_phi) {
+      const int x_252 = pos.x;
+      const int x_254 = pos.y;
+      const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+      indexable_2 = tint_symbol_7;
+      const int x_256 = indexable_2[x_254];
+      p = ((15.0f - abs(float((x_252 - x_256)))) / 15.0f);
+      return float4(p, p, p, 1.0f);
+    }
+    const int x_267 = pos.y;
+    pos.y = (x_267 + 1);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1() {
+  float2 pos_1 = float2(0.0f, 0.0f);
+  int2 ipos = int2(0, 0);
+  int2 param = int2(0, 0);
+  const float4 x_205 = gl_FragCoord;
+  const float2 x_208 = asfloat(x_13[0].xy);
+  pos_1 = (float2(x_205.x, x_205.y) / x_208);
+  const float x_211 = pos_1.x;
+  const float x_215 = pos_1.y;
+  ipos = int2(int((x_211 * 256.0f)), int((x_215 * 256.0f)));
+  param = ipos;
+  const float4 x_220 = trace_vi2_(param);
+  x_GLF_color = x_220;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_8 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.msl
new file mode 100644
index 0000000..f95df19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.msl
@@ -0,0 +1,91 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 trace_vi2_(thread int2* const pos) {
+  tint_array_wrapper indexable = {};
+  tint_array_wrapper indexable_1 = {};
+  float p = 0.0f;
+  tint_array_wrapper indexable_2 = {};
+  while (true) {
+    bool x_247 = false;
+    bool x_248_phi = false;
+    int const x_227 = (*(pos)).y;
+    if ((x_227 != 256)) {
+    } else {
+      break;
+    }
+    int const x_231 = (*(pos)).x;
+    int const x_233 = (*(pos)).y;
+    tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+    indexable = tint_symbol_4;
+    int const x_235 = indexable.arr[x_233];
+    bool const x_237 = (x_231 < (x_235 + 15));
+    x_248_phi = x_237;
+    if (x_237) {
+      int const x_241 = (*(pos)).x;
+      int const x_243 = (*(pos)).y;
+      tint_array_wrapper const tint_symbol_5 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+      indexable_1 = tint_symbol_5;
+      int const x_245 = indexable_1.arr[x_243];
+      x_247 = (x_241 > (x_245 - 15));
+      x_248_phi = x_247;
+    }
+    bool const x_248 = x_248_phi;
+    if (x_248) {
+      int const x_252 = (*(pos)).x;
+      int const x_254 = (*(pos)).y;
+      tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+      indexable_2 = tint_symbol_6;
+      int const x_256 = indexable_2.arr[x_254];
+      p = ((15.0f - fabs(float((x_252 - x_256)))) / 15.0f);
+      float const x_262 = p;
+      float const x_263 = p;
+      float const x_264 = p;
+      return float4(x_262, x_263, x_264, 1.0f);
+    }
+    int const x_267 = (*(pos)).y;
+    (*(pos)).y = (x_267 + 1);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1(constant buf0& x_13, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  float2 pos_1 = 0.0f;
+  int2 ipos = 0;
+  int2 param = 0;
+  float4 const x_205 = *(tint_symbol_8);
+  float2 const x_208 = x_13.resolution;
+  pos_1 = (float2(x_205.x, x_205.y) / x_208);
+  float const x_211 = pos_1.x;
+  float const x_215 = pos_1.y;
+  ipos = int2(int((x_211 * 256.0f)), int((x_215 * 256.0f)));
+  int2 const x_219 = ipos;
+  param = x_219;
+  float4 const x_220 = trace_vi2_(&(param));
+  *(tint_symbol_9) = x_220;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(x_13, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_2 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..1bc7c3e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.spvasm
@@ -0,0 +1,378 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 310
+; Schema: 0
+               OpCapability Shader
+        %247 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %trace_vi2_ "trace_vi2_"
+               OpName %pos "pos"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %p "p"
+               OpName %indexable_2 "indexable_2"
+               OpName %x_247 "x_247"
+               OpName %x_248_phi "x_248_phi"
+               OpName %main_1 "main_1"
+               OpName %pos_1 "pos_1"
+               OpName %ipos "ipos"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %15 = OpTypeFunction %v4float %_ptr_Function_v2int
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %27 = OpConstantNull %_arr_int_uint_256
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+     %uint_0 = OpConstant %uint 0
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %216 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %265 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %void = OpTypeVoid
+        %266 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %272 = OpConstantNull %v2float
+        %274 = OpConstantNull %v2int
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+   %main_out = OpTypeStruct %v4float
+        %297 = OpTypeFunction %void %main_out
+ %trace_vi2_ = OpFunction %v4float None %15
+        %pos = OpFunctionParameter %_ptr_Function_v2int
+         %21 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+%indexable_1 = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+          %p = OpVariable %_ptr_Function_float Function %31
+%indexable_2 = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+      %x_247 = OpVariable %_ptr_Function_bool Function %40
+  %x_248_phi = OpVariable %_ptr_Function_bool Function %40
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_int %pos %uint_1
+         %46 = OpLoad %int %45
+         %48 = OpINotEqual %bool %46 %int_256
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %34
+         %49 = OpLabel
+         %54 = OpAccessChain %_ptr_Function_int %pos %uint_0
+         %55 = OpLoad %int %54
+         %57 = OpAccessChain %_ptr_Function_int %pos %uint_1
+         %58 = OpLoad %int %57
+               OpStore %indexable %216
+        %217 = OpAccessChain %_ptr_Function_int %indexable %58
+        %218 = OpLoad %int %217
+        %219 = OpIAdd %int %218 %int_15
+        %220 = OpSLessThan %bool %55 %219
+               OpStore %x_248_phi %220
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %221
+        %222 = OpLabel
+        %224 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %225 = OpLoad %int %224
+        %227 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %228 = OpLoad %int %227
+               OpStore %indexable_1 %216
+        %229 = OpAccessChain %_ptr_Function_int %indexable_1 %228
+        %230 = OpLoad %int %229
+        %231 = OpISub %int %230 %int_15
+        %232 = OpSGreaterThan %bool %225 %231
+               OpStore %x_247 %232
+        %233 = OpLoad %bool %x_247
+               OpStore %x_248_phi %233
+               OpBranch %221
+        %221 = OpLabel
+        %234 = OpLoad %bool %x_248_phi
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %238 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %239 = OpLoad %int %238
+        %241 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %242 = OpLoad %int %241
+               OpStore %indexable_2 %216
+        %243 = OpAccessChain %_ptr_Function_int %indexable_2 %242
+        %244 = OpLoad %int %243
+        %249 = OpISub %int %239 %244
+        %248 = OpConvertSToF %float %249
+        %246 = OpExtInst %float %247 FAbs %248
+        %250 = OpFSub %float %float_15 %246
+        %251 = OpFDiv %float %250 %float_15
+               OpStore %p %251
+        %252 = OpLoad %float %p
+        %253 = OpLoad %float %p
+        %254 = OpLoad %float %p
+        %256 = OpCompositeConstruct %v4float %252 %253 %254 %float_1
+               OpReturnValue %256
+        %235 = OpLabel
+        %258 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %259 = OpLoad %int %258
+        %261 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %263 = OpIAdd %int %259 %int_1
+               OpStore %261 %263
+               OpBranch %35
+         %35 = OpLabel
+               OpBranch %33
+         %34 = OpLabel
+               OpReturnValue %265
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %266
+        %269 = OpLabel
+      %pos_1 = OpVariable %_ptr_Function_v2float Function %272
+       %ipos = OpVariable %_ptr_Function_v2int Function %274
+      %param = OpVariable %_ptr_Function_v2int Function %274
+        %276 = OpLoad %v4float %gl_FragCoord
+        %278 = OpAccessChain %_ptr_Uniform_v2float %x_13 %uint_0
+        %279 = OpLoad %v2float %278
+        %280 = OpCompositeExtract %float %276 0
+        %281 = OpCompositeExtract %float %276 1
+        %282 = OpCompositeConstruct %v2float %280 %281
+        %283 = OpFDiv %v2float %282 %279
+               OpStore %pos_1 %283
+        %284 = OpAccessChain %_ptr_Function_float %pos_1 %uint_0
+        %285 = OpLoad %float %284
+        %286 = OpAccessChain %_ptr_Function_float %pos_1 %uint_1
+        %287 = OpLoad %float %286
+        %290 = OpFMul %float %285 %float_256
+        %288 = OpConvertFToS %int %290
+        %292 = OpFMul %float %287 %float_256
+        %291 = OpConvertFToS %int %292
+        %293 = OpCompositeConstruct %v2int %288 %291
+               OpStore %ipos %293
+        %294 = OpLoad %v2int %ipos
+               OpStore %param %294
+        %295 = OpFunctionCall %v4float %trace_vi2_ %param
+               OpStore %x_GLF_color %295
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %297
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %301 = OpLabel
+        %302 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %302
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %266
+        %304 = OpLabel
+        %305 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %305
+        %306 = OpFunctionCall %void %main_1
+        %308 = OpLoad %v4float %x_GLF_color
+        %309 = OpCompositeConstruct %main_out %308
+        %307 = OpFunctionCall %void %tint_symbol_3 %309
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..5e10336
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl.expected.wgsl
@@ -0,0 +1,85 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn trace_vi2_(pos : ptr<function, vec2<i32>>) -> vec4<f32> {
+  var indexable : array<i32, 256>;
+  var indexable_1 : array<i32, 256>;
+  var p : f32;
+  var indexable_2 : array<i32, 256>;
+  loop {
+    var x_247 : bool;
+    var x_248_phi : bool;
+    let x_227 : i32 = (*(pos)).y;
+    if ((x_227 != 256)) {
+    } else {
+      break;
+    }
+    let x_231 : i32 = (*(pos)).x;
+    let x_233 : i32 = (*(pos)).y;
+    indexable = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+    let x_235 : i32 = indexable[x_233];
+    let x_237 : bool = (x_231 < (x_235 + 15));
+    x_248_phi = x_237;
+    if (x_237) {
+      let x_241 : i32 = (*(pos)).x;
+      let x_243 : i32 = (*(pos)).y;
+      indexable_1 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_245 : i32 = indexable_1[x_243];
+      x_247 = (x_241 > (x_245 - 15));
+      x_248_phi = x_247;
+    }
+    let x_248 : bool = x_248_phi;
+    if (x_248) {
+      let x_252 : i32 = (*(pos)).x;
+      let x_254 : i32 = (*(pos)).y;
+      indexable_2 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_256 : i32 = indexable_2[x_254];
+      p = ((15.0 - abs(f32((x_252 - x_256)))) / 15.0);
+      let x_262 : f32 = p;
+      let x_263 : f32 = p;
+      let x_264 : f32 = p;
+      return vec4<f32>(x_262, x_263, x_264, 1.0);
+    }
+    let x_266 : ptr<function, i32> = &((*(pos)).y);
+    let x_267 : i32 = *(x_266);
+    *(x_266) = (x_267 + 1);
+  }
+  return vec4<f32>(0.0, 0.0, 0.0, 1.0);
+}
+
+fn main_1() {
+  var pos_1 : vec2<f32>;
+  var ipos : vec2<i32>;
+  var param : vec2<i32>;
+  let x_205 : vec4<f32> = gl_FragCoord;
+  let x_208 : vec2<f32> = x_13.resolution;
+  pos_1 = (vec2<f32>(x_205.x, x_205.y) / x_208);
+  let x_211 : f32 = pos_1.x;
+  let x_215 : f32 = pos_1.y;
+  ipos = vec2<i32>(i32((x_211 * 256.0)), i32((x_215 * 256.0)));
+  let x_219 : vec2<i32> = ipos;
+  param = x_219;
+  let x_220 : vec4<f32> = trace_vi2_(&(param));
+  x_GLF_color = x_220;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm
new file mode 100644
index 0000000..6ef1627
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm
@@ -0,0 +1,327 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %trace_vi2_ "trace(vi2;"
+               OpName %pos "pos"
+               OpName %indexable "indexable"
+               OpName %indexable_0 "indexable"
+               OpName %p "p"
+               OpName %indexable_1 "indexable"
+               OpName %pos_0 "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %ipos "ipos"
+               OpName %_GLF_color "_GLF_color"
+               OpName %param "param"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+         %23 = OpTypeFunction %v4float %_ptr_Function_v2int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %189 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+%_ptr_Function_float = OpTypePointer Function %float
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %196 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %int_0_0 = OpConstant %int 0
+        %205 = OpConstantComposite %_arr_int_uint_256 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0 %int_0_0
+       %main = OpFunction %void None %17
+        %206 = OpLabel
+      %pos_0 = OpVariable %_ptr_Function_v2float Function
+       %ipos = OpVariable %_ptr_Function_v2int Function
+      %param = OpVariable %_ptr_Function_v2int Function
+        %207 = OpLoad %v4float %gl_FragCoord
+        %208 = OpVectorShuffle %v2float %207 %207 0 1
+        %209 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %210 = OpLoad %v2float %209
+        %211 = OpFDiv %v2float %208 %210
+               OpStore %pos_0 %211
+        %212 = OpAccessChain %_ptr_Function_float %pos_0 %uint_0
+        %213 = OpLoad %float %212
+        %214 = OpFMul %float %213 %float_256
+        %215 = OpConvertFToS %int %214
+        %216 = OpAccessChain %_ptr_Function_float %pos_0 %uint_1
+        %217 = OpLoad %float %216
+        %218 = OpFMul %float %217 %float_256
+        %219 = OpConvertFToS %int %218
+        %220 = OpCompositeConstruct %v2int %215 %219
+               OpStore %ipos %220
+        %221 = OpLoad %v2int %ipos
+               OpStore %param %221
+        %222 = OpFunctionCall %v4float %trace_vi2_ %param
+               OpStore %_GLF_color %222
+               OpReturn
+               OpFunctionEnd
+ %trace_vi2_ = OpFunction %v4float None %23
+        %pos = OpFunctionParameter %_ptr_Function_v2int
+        %223 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_256 Function
+%indexable_0 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+          %p = OpVariable %_ptr_Function_float Function
+%indexable_1 = OpVariable %_ptr_Function__arr_int_uint_256 Function
+               OpBranch %224
+        %224 = OpLabel
+               OpLoopMerge %225 %226 None
+               OpBranch %227
+        %227 = OpLabel
+        %228 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %229 = OpLoad %int %228
+        %230 = OpINotEqual %bool %229 %int_256
+               OpBranchConditional %230 %231 %225
+        %231 = OpLabel
+        %232 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %233 = OpLoad %int %232
+        %234 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %235 = OpLoad %int %234
+               OpStore %indexable %189
+        %236 = OpAccessChain %_ptr_Function_int %indexable %235
+        %237 = OpLoad %int %236
+        %238 = OpLoad %_arr_int_uint_256 %indexable
+               OpStore %indexable %205
+        %239 = OpLoad %int %228
+               OpStore %228 %int_0_0
+               OpStore %228 %239
+               OpStore %indexable %238 Volatile|Nontemporal
+        %240 = OpIAdd %int %237 %int_15
+        %241 = OpSLessThan %bool %233 %240
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %242
+        %243 = OpLabel
+        %244 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %245 = OpLoad %int %244
+        %246 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %247 = OpLoad %int %246
+               OpStore %indexable_0 %189
+        %248 = OpAccessChain %_ptr_Function_int %indexable_0 %247
+        %249 = OpLoad %int %248
+        %250 = OpISub %int %249 %int_15
+        %251 = OpSGreaterThan %bool %245 %250
+               OpBranch %242
+        %242 = OpLabel
+        %252 = OpPhi %bool %241 %231 %251 %243
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %254 %253
+        %254 = OpLabel
+        %255 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %256 = OpLoad %int %255
+        %257 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %258 = OpLoad %int %257
+               OpStore %indexable_1 %189
+        %259 = OpAccessChain %_ptr_Function_int %indexable_1 %258
+        %260 = OpLoad %int %259
+        %261 = OpISub %int %256 %260
+        %262 = OpConvertSToF %float %261
+        %263 = OpExtInst %float %1 FAbs %262
+        %264 = OpFSub %float %float_15 %263
+        %265 = OpFDiv %float %264 %float_15
+               OpStore %p %265
+        %266 = OpLoad %float %p
+        %267 = OpLoad %float %p
+        %268 = OpLoad %float %p
+        %269 = OpCompositeConstruct %v4float %266 %267 %268 %float_1
+               OpReturnValue %269
+        %253 = OpLabel
+        %270 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %271 = OpLoad %int %270
+        %272 = OpIAdd %int %271 %int_1
+               OpStore %270 %272
+               OpBranch %226
+        %226 = OpLabel
+               OpBranch %224
+        %225 = OpLabel
+               OpReturnValue %196
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..f284cbd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.hlsl
@@ -0,0 +1,91 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float4 trace_vi2_(inout int2 pos) {
+  int indexable[256] = (int[256])0;
+  int indexable_1[256] = (int[256])0;
+  float p = 0.0f;
+  int indexable_2[256] = (int[256])0;
+  while (true) {
+    bool x_251 = false;
+    bool x_252_phi = false;
+    const int x_229 = pos.y;
+    if ((x_229 != 256)) {
+    } else {
+      break;
+    }
+    const int x_233 = pos.x;
+    const int x_235 = pos.y;
+    const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+    indexable = tint_symbol_5;
+    const int x_237 = indexable[x_235];
+    const int x_238[256] = indexable;
+    const int tint_symbol_6[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    indexable = tint_symbol_6;
+    const int x_239 = pos.y;
+    pos.y = 0;
+    pos.y = x_239;
+    indexable = x_238;
+    const bool x_241 = (x_233 < (x_237 + 15));
+    x_252_phi = x_241;
+    if (x_241) {
+      const int x_245 = pos.x;
+      const int x_247 = pos.y;
+      const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+      indexable_1 = tint_symbol_7;
+      const int x_249 = indexable_1[x_247];
+      x_251 = (x_245 > (x_249 - 15));
+      x_252_phi = x_251;
+    }
+    if (x_252_phi) {
+      const int x_256 = pos.x;
+      const int x_258 = pos.y;
+      const int tint_symbol_8[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+      indexable_2 = tint_symbol_8;
+      const int x_260 = indexable_2[x_258];
+      p = ((15.0f - abs(float((x_256 - x_260)))) / 15.0f);
+      return float4(p, p, p, 1.0f);
+    }
+    const int x_271 = pos.y;
+    pos.y = (x_271 + 1);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1() {
+  float2 pos_1 = float2(0.0f, 0.0f);
+  int2 ipos = int2(0, 0);
+  int2 param = int2(0, 0);
+  const float4 x_207 = gl_FragCoord;
+  const float2 x_210 = asfloat(x_13[0].xy);
+  pos_1 = (float2(x_207.x, x_207.y) / x_210);
+  const float x_213 = pos_1.x;
+  const float x_217 = pos_1.y;
+  ipos = int2(int((x_213 * 256.0f)), int((x_217 * 256.0f)));
+  param = ipos;
+  const float4 x_222 = trace_vi2_(param);
+  x_GLF_color = x_222;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.msl
new file mode 100644
index 0000000..aa07b66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.msl
@@ -0,0 +1,98 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 trace_vi2_(thread int2* const pos) {
+  tint_array_wrapper indexable = {};
+  tint_array_wrapper indexable_1 = {};
+  float p = 0.0f;
+  tint_array_wrapper indexable_2 = {};
+  while (true) {
+    bool x_251 = false;
+    bool x_252_phi = false;
+    int const x_229 = (*(pos)).y;
+    if ((x_229 != 256)) {
+    } else {
+      break;
+    }
+    int const x_233 = (*(pos)).x;
+    int const x_235 = (*(pos)).y;
+    tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+    indexable = tint_symbol_4;
+    int const x_237 = indexable.arr[x_235];
+    tint_array_wrapper const x_238 = indexable;
+    tint_array_wrapper const tint_symbol_5 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    indexable = tint_symbol_5;
+    int const x_239 = (*(pos)).y;
+    (*(pos)).y = 0;
+    (*(pos)).y = x_239;
+    indexable = x_238;
+    bool const x_241 = (x_233 < (x_237 + 15));
+    x_252_phi = x_241;
+    if (x_241) {
+      int const x_245 = (*(pos)).x;
+      int const x_247 = (*(pos)).y;
+      tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+      indexable_1 = tint_symbol_6;
+      int const x_249 = indexable_1.arr[x_247];
+      x_251 = (x_245 > (x_249 - 15));
+      x_252_phi = x_251;
+    }
+    bool const x_252 = x_252_phi;
+    if (x_252) {
+      int const x_256 = (*(pos)).x;
+      int const x_258 = (*(pos)).y;
+      tint_array_wrapper const tint_symbol_7 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+      indexable_2 = tint_symbol_7;
+      int const x_260 = indexable_2.arr[x_258];
+      p = ((15.0f - fabs(float((x_256 - x_260)))) / 15.0f);
+      float const x_266 = p;
+      float const x_267 = p;
+      float const x_268 = p;
+      return float4(x_266, x_267, x_268, 1.0f);
+    }
+    int const x_271 = (*(pos)).y;
+    (*(pos)).y = (x_271 + 1);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1(constant buf0& x_13, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  float2 pos_1 = 0.0f;
+  int2 ipos = 0;
+  int2 param = 0;
+  float4 const x_207 = *(tint_symbol_9);
+  float2 const x_210 = x_13.resolution;
+  pos_1 = (float2(x_207.x, x_207.y) / x_210);
+  float const x_213 = pos_1.x;
+  float const x_217 = pos_1.y;
+  ipos = int2(int((x_213 * 256.0f)), int((x_217 * 256.0f)));
+  int2 const x_221 = ipos;
+  param = x_221;
+  float4 const x_222 = trace_vi2_(&(param));
+  *(tint_symbol_10) = x_222;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_13, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..5d77d9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.spvasm
@@ -0,0 +1,388 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 319
+; Schema: 0
+               OpCapability Shader
+        %256 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %trace_vi2_ "trace_vi2_"
+               OpName %pos "pos"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %p "p"
+               OpName %indexable_2 "indexable_2"
+               OpName %x_251 "x_251"
+               OpName %x_252_phi "x_252_phi"
+               OpName %main_1 "main_1"
+               OpName %pos_1 "pos_1"
+               OpName %ipos "ipos"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %15 = OpTypeFunction %v4float %_ptr_Function_v2int
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %27 = OpConstantNull %_arr_int_uint_256
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+     %uint_0 = OpConstant %uint 0
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %216 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+        %220 = OpConstantComposite %_arr_int_uint_256 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %274 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %void = OpTypeVoid
+        %275 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %281 = OpConstantNull %v2float
+        %283 = OpConstantNull %v2int
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+   %main_out = OpTypeStruct %v4float
+        %306 = OpTypeFunction %void %main_out
+ %trace_vi2_ = OpFunction %v4float None %15
+        %pos = OpFunctionParameter %_ptr_Function_v2int
+         %21 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+%indexable_1 = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+          %p = OpVariable %_ptr_Function_float Function %31
+%indexable_2 = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+      %x_251 = OpVariable %_ptr_Function_bool Function %40
+  %x_252_phi = OpVariable %_ptr_Function_bool Function %40
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_int %pos %uint_1
+         %46 = OpLoad %int %45
+         %48 = OpINotEqual %bool %46 %int_256
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %34
+         %49 = OpLabel
+         %54 = OpAccessChain %_ptr_Function_int %pos %uint_0
+         %55 = OpLoad %int %54
+         %57 = OpAccessChain %_ptr_Function_int %pos %uint_1
+         %58 = OpLoad %int %57
+               OpStore %indexable %216
+        %217 = OpAccessChain %_ptr_Function_int %indexable %58
+        %218 = OpLoad %int %217
+        %219 = OpLoad %_arr_int_uint_256 %indexable
+               OpStore %indexable %220
+        %222 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %223 = OpLoad %int %222
+        %225 = OpAccessChain %_ptr_Function_int %pos %uint_1
+               OpStore %225 %int_0
+        %227 = OpAccessChain %_ptr_Function_int %pos %uint_1
+               OpStore %227 %223
+               OpStore %indexable %219
+        %228 = OpIAdd %int %218 %int_15
+        %229 = OpSLessThan %bool %55 %228
+               OpStore %x_252_phi %229
+               OpSelectionMerge %230 None
+               OpBranchConditional %229 %231 %230
+        %231 = OpLabel
+        %233 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %234 = OpLoad %int %233
+        %236 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %237 = OpLoad %int %236
+               OpStore %indexable_1 %216
+        %238 = OpAccessChain %_ptr_Function_int %indexable_1 %237
+        %239 = OpLoad %int %238
+        %240 = OpISub %int %239 %int_15
+        %241 = OpSGreaterThan %bool %234 %240
+               OpStore %x_251 %241
+        %242 = OpLoad %bool %x_251
+               OpStore %x_252_phi %242
+               OpBranch %230
+        %230 = OpLabel
+        %243 = OpLoad %bool %x_252_phi
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+        %247 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %248 = OpLoad %int %247
+        %250 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %251 = OpLoad %int %250
+               OpStore %indexable_2 %216
+        %252 = OpAccessChain %_ptr_Function_int %indexable_2 %251
+        %253 = OpLoad %int %252
+        %258 = OpISub %int %248 %253
+        %257 = OpConvertSToF %float %258
+        %255 = OpExtInst %float %256 FAbs %257
+        %259 = OpFSub %float %float_15 %255
+        %260 = OpFDiv %float %259 %float_15
+               OpStore %p %260
+        %261 = OpLoad %float %p
+        %262 = OpLoad %float %p
+        %263 = OpLoad %float %p
+        %265 = OpCompositeConstruct %v4float %261 %262 %263 %float_1
+               OpReturnValue %265
+        %244 = OpLabel
+        %267 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %268 = OpLoad %int %267
+        %270 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %272 = OpIAdd %int %268 %int_1
+               OpStore %270 %272
+               OpBranch %35
+         %35 = OpLabel
+               OpBranch %33
+         %34 = OpLabel
+               OpReturnValue %274
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %275
+        %278 = OpLabel
+      %pos_1 = OpVariable %_ptr_Function_v2float Function %281
+       %ipos = OpVariable %_ptr_Function_v2int Function %283
+      %param = OpVariable %_ptr_Function_v2int Function %283
+        %285 = OpLoad %v4float %gl_FragCoord
+        %287 = OpAccessChain %_ptr_Uniform_v2float %x_13 %uint_0
+        %288 = OpLoad %v2float %287
+        %289 = OpCompositeExtract %float %285 0
+        %290 = OpCompositeExtract %float %285 1
+        %291 = OpCompositeConstruct %v2float %289 %290
+        %292 = OpFDiv %v2float %291 %288
+               OpStore %pos_1 %292
+        %293 = OpAccessChain %_ptr_Function_float %pos_1 %uint_0
+        %294 = OpLoad %float %293
+        %295 = OpAccessChain %_ptr_Function_float %pos_1 %uint_1
+        %296 = OpLoad %float %295
+        %299 = OpFMul %float %294 %float_256
+        %297 = OpConvertFToS %int %299
+        %301 = OpFMul %float %296 %float_256
+        %300 = OpConvertFToS %int %301
+        %302 = OpCompositeConstruct %v2int %297 %300
+               OpStore %ipos %302
+        %303 = OpLoad %v2int %ipos
+               OpStore %param %303
+        %304 = OpFunctionCall %v4float %trace_vi2_ %param
+               OpStore %x_GLF_color %304
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %306
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %310 = OpLabel
+        %311 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %311
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %275
+        %313 = OpLabel
+        %314 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %314
+        %315 = OpFunctionCall %void %main_1
+        %317 = OpLoad %v4float %x_GLF_color
+        %318 = OpCompositeConstruct %main_out %317
+        %316 = OpFunctionCall %void %tint_symbol_3 %318
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..3970047
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.spvasm.expected.wgsl
@@ -0,0 +1,92 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn trace_vi2_(pos : ptr<function, vec2<i32>>) -> vec4<f32> {
+  var indexable : array<i32, 256>;
+  var indexable_1 : array<i32, 256>;
+  var p : f32;
+  var indexable_2 : array<i32, 256>;
+  loop {
+    var x_251 : bool;
+    var x_252_phi : bool;
+    let x_228 : ptr<function, i32> = &((*(pos)).y);
+    let x_229 : i32 = *(x_228);
+    if ((x_229 != 256)) {
+    } else {
+      break;
+    }
+    let x_233 : i32 = (*(pos)).x;
+    let x_235 : i32 = (*(pos)).y;
+    indexable = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+    let x_237 : i32 = indexable[x_235];
+    let x_238 : array<i32, 256> = indexable;
+    indexable = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+    let x_239 : i32 = *(x_228);
+    *(x_228) = 0;
+    *(x_228) = x_239;
+    indexable = x_238;
+    let x_241 : bool = (x_233 < (x_237 + 15));
+    x_252_phi = x_241;
+    if (x_241) {
+      let x_245 : i32 = (*(pos)).x;
+      let x_247 : i32 = (*(pos)).y;
+      indexable_1 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_249 : i32 = indexable_1[x_247];
+      x_251 = (x_245 > (x_249 - 15));
+      x_252_phi = x_251;
+    }
+    let x_252 : bool = x_252_phi;
+    if (x_252) {
+      let x_256 : i32 = (*(pos)).x;
+      let x_258 : i32 = (*(pos)).y;
+      indexable_2 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_260 : i32 = indexable_2[x_258];
+      p = ((15.0 - abs(f32((x_256 - x_260)))) / 15.0);
+      let x_266 : f32 = p;
+      let x_267 : f32 = p;
+      let x_268 : f32 = p;
+      return vec4<f32>(x_266, x_267, x_268, 1.0);
+    }
+    let x_270 : ptr<function, i32> = &((*(pos)).y);
+    let x_271 : i32 = *(x_270);
+    *(x_270) = (x_271 + 1);
+  }
+  return vec4<f32>(0.0, 0.0, 0.0, 1.0);
+}
+
+fn main_1() {
+  var pos_1 : vec2<f32>;
+  var ipos : vec2<i32>;
+  var param : vec2<i32>;
+  let x_207 : vec4<f32> = gl_FragCoord;
+  let x_210 : vec2<f32> = x_13.resolution;
+  pos_1 = (vec2<f32>(x_207.x, x_207.y) / x_210);
+  let x_213 : f32 = pos_1.x;
+  let x_217 : f32 = pos_1.y;
+  ipos = vec2<i32>(i32((x_213 * 256.0)), i32((x_217 * 256.0)));
+  let x_221 : vec2<i32> = ipos;
+  param = x_221;
+  let x_222 : vec4<f32> = trace_vi2_(&(param));
+  x_GLF_color = x_222;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
new file mode 100644
index 0000000..3970047
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
@@ -0,0 +1,92 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn trace_vi2_(pos : ptr<function, vec2<i32>>) -> vec4<f32> {
+  var indexable : array<i32, 256>;
+  var indexable_1 : array<i32, 256>;
+  var p : f32;
+  var indexable_2 : array<i32, 256>;
+  loop {
+    var x_251 : bool;
+    var x_252_phi : bool;
+    let x_228 : ptr<function, i32> = &((*(pos)).y);
+    let x_229 : i32 = *(x_228);
+    if ((x_229 != 256)) {
+    } else {
+      break;
+    }
+    let x_233 : i32 = (*(pos)).x;
+    let x_235 : i32 = (*(pos)).y;
+    indexable = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+    let x_237 : i32 = indexable[x_235];
+    let x_238 : array<i32, 256> = indexable;
+    indexable = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+    let x_239 : i32 = *(x_228);
+    *(x_228) = 0;
+    *(x_228) = x_239;
+    indexable = x_238;
+    let x_241 : bool = (x_233 < (x_237 + 15));
+    x_252_phi = x_241;
+    if (x_241) {
+      let x_245 : i32 = (*(pos)).x;
+      let x_247 : i32 = (*(pos)).y;
+      indexable_1 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_249 : i32 = indexable_1[x_247];
+      x_251 = (x_245 > (x_249 - 15));
+      x_252_phi = x_251;
+    }
+    let x_252 : bool = x_252_phi;
+    if (x_252) {
+      let x_256 : i32 = (*(pos)).x;
+      let x_258 : i32 = (*(pos)).y;
+      indexable_2 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_260 : i32 = indexable_2[x_258];
+      p = ((15.0 - abs(f32((x_256 - x_260)))) / 15.0);
+      let x_266 : f32 = p;
+      let x_267 : f32 = p;
+      let x_268 : f32 = p;
+      return vec4<f32>(x_266, x_267, x_268, 1.0);
+    }
+    let x_270 : ptr<function, i32> = &((*(pos)).y);
+    let x_271 : i32 = *(x_270);
+    *(x_270) = (x_271 + 1);
+  }
+  return vec4<f32>(0.0, 0.0, 0.0, 1.0);
+}
+
+fn main_1() {
+  var pos_1 : vec2<f32>;
+  var ipos : vec2<i32>;
+  var param : vec2<i32>;
+  let x_207 : vec4<f32> = gl_FragCoord;
+  let x_210 : vec2<f32> = x_13.resolution;
+  pos_1 = (vec2<f32>(x_207.x, x_207.y) / x_210);
+  let x_213 : f32 = pos_1.x;
+  let x_217 : f32 = pos_1.y;
+  ipos = vec2<i32>(i32((x_213 * 256.0)), i32((x_217 * 256.0)));
+  let x_221 : vec2<i32> = ipos;
+  param = x_221;
+  let x_222 : vec4<f32> = trace_vi2_(&(param));
+  x_GLF_color = x_222;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..f284cbd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.hlsl
@@ -0,0 +1,91 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float4 trace_vi2_(inout int2 pos) {
+  int indexable[256] = (int[256])0;
+  int indexable_1[256] = (int[256])0;
+  float p = 0.0f;
+  int indexable_2[256] = (int[256])0;
+  while (true) {
+    bool x_251 = false;
+    bool x_252_phi = false;
+    const int x_229 = pos.y;
+    if ((x_229 != 256)) {
+    } else {
+      break;
+    }
+    const int x_233 = pos.x;
+    const int x_235 = pos.y;
+    const int tint_symbol_5[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+    indexable = tint_symbol_5;
+    const int x_237 = indexable[x_235];
+    const int x_238[256] = indexable;
+    const int tint_symbol_6[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    indexable = tint_symbol_6;
+    const int x_239 = pos.y;
+    pos.y = 0;
+    pos.y = x_239;
+    indexable = x_238;
+    const bool x_241 = (x_233 < (x_237 + 15));
+    x_252_phi = x_241;
+    if (x_241) {
+      const int x_245 = pos.x;
+      const int x_247 = pos.y;
+      const int tint_symbol_7[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+      indexable_1 = tint_symbol_7;
+      const int x_249 = indexable_1[x_247];
+      x_251 = (x_245 > (x_249 - 15));
+      x_252_phi = x_251;
+    }
+    if (x_252_phi) {
+      const int x_256 = pos.x;
+      const int x_258 = pos.y;
+      const int tint_symbol_8[256] = {115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94};
+      indexable_2 = tint_symbol_8;
+      const int x_260 = indexable_2[x_258];
+      p = ((15.0f - abs(float((x_256 - x_260)))) / 15.0f);
+      return float4(p, p, p, 1.0f);
+    }
+    const int x_271 = pos.y;
+    pos.y = (x_271 + 1);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1() {
+  float2 pos_1 = float2(0.0f, 0.0f);
+  int2 ipos = int2(0, 0);
+  int2 param = int2(0, 0);
+  const float4 x_207 = gl_FragCoord;
+  const float2 x_210 = asfloat(x_13[0].xy);
+  pos_1 = (float2(x_207.x, x_207.y) / x_210);
+  const float x_213 = pos_1.x;
+  const float x_217 = pos_1.y;
+  ipos = int2(int((x_213 * 256.0f)), int((x_217 * 256.0f)));
+  param = ipos;
+  const float4 x_222 = trace_vi2_(param);
+  x_GLF_color = x_222;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.msl
new file mode 100644
index 0000000..aa07b66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.msl
@@ -0,0 +1,98 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  int arr[256];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float4 trace_vi2_(thread int2* const pos) {
+  tint_array_wrapper indexable = {};
+  tint_array_wrapper indexable_1 = {};
+  float p = 0.0f;
+  tint_array_wrapper indexable_2 = {};
+  while (true) {
+    bool x_251 = false;
+    bool x_252_phi = false;
+    int const x_229 = (*(pos)).y;
+    if ((x_229 != 256)) {
+    } else {
+      break;
+    }
+    int const x_233 = (*(pos)).x;
+    int const x_235 = (*(pos)).y;
+    tint_array_wrapper const tint_symbol_4 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+    indexable = tint_symbol_4;
+    int const x_237 = indexable.arr[x_235];
+    tint_array_wrapper const x_238 = indexable;
+    tint_array_wrapper const tint_symbol_5 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    indexable = tint_symbol_5;
+    int const x_239 = (*(pos)).y;
+    (*(pos)).y = 0;
+    (*(pos)).y = x_239;
+    indexable = x_238;
+    bool const x_241 = (x_233 < (x_237 + 15));
+    x_252_phi = x_241;
+    if (x_241) {
+      int const x_245 = (*(pos)).x;
+      int const x_247 = (*(pos)).y;
+      tint_array_wrapper const tint_symbol_6 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+      indexable_1 = tint_symbol_6;
+      int const x_249 = indexable_1.arr[x_247];
+      x_251 = (x_245 > (x_249 - 15));
+      x_252_phi = x_251;
+    }
+    bool const x_252 = x_252_phi;
+    if (x_252) {
+      int const x_256 = (*(pos)).x;
+      int const x_258 = (*(pos)).y;
+      tint_array_wrapper const tint_symbol_7 = {.arr={115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94}};
+      indexable_2 = tint_symbol_7;
+      int const x_260 = indexable_2.arr[x_258];
+      p = ((15.0f - fabs(float((x_256 - x_260)))) / 15.0f);
+      float const x_266 = p;
+      float const x_267 = p;
+      float const x_268 = p;
+      return float4(x_266, x_267, x_268, 1.0f);
+    }
+    int const x_271 = (*(pos)).y;
+    (*(pos)).y = (x_271 + 1);
+  }
+  return float4(0.0f, 0.0f, 0.0f, 1.0f);
+}
+
+void main_1(constant buf0& x_13, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  float2 pos_1 = 0.0f;
+  int2 ipos = 0;
+  int2 param = 0;
+  float4 const x_207 = *(tint_symbol_9);
+  float2 const x_210 = x_13.resolution;
+  pos_1 = (float2(x_207.x, x_207.y) / x_210);
+  float const x_213 = pos_1.x;
+  float const x_217 = pos_1.y;
+  ipos = int2(int((x_213 * 256.0f)), int((x_217 * 256.0f)));
+  int2 const x_221 = ipos;
+  param = x_221;
+  float4 const x_222 = trace_vi2_(&(param));
+  *(tint_symbol_10) = x_222;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_13, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..5d77d9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.spvasm
@@ -0,0 +1,388 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 319
+; Schema: 0
+               OpCapability Shader
+        %256 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %trace_vi2_ "trace_vi2_"
+               OpName %pos "pos"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %p "p"
+               OpName %indexable_2 "indexable_2"
+               OpName %x_251 "x_251"
+               OpName %x_252_phi "x_252_phi"
+               OpName %main_1 "main_1"
+               OpName %pos_1 "pos_1"
+               OpName %ipos "ipos"
+               OpName %param "param"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_256 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %15 = OpTypeFunction %v4float %_ptr_Function_v2int
+       %uint = OpTypeInt 32 0
+   %uint_256 = OpConstant %uint 256
+%_arr_int_uint_256 = OpTypeArray %int %uint_256
+%_ptr_Function__arr_int_uint_256 = OpTypePointer Function %_arr_int_uint_256
+         %27 = OpConstantNull %_arr_int_uint_256
+%_ptr_Function_float = OpTypePointer Function %float
+         %31 = OpConstantNull %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_256 = OpConstant %int 256
+     %uint_0 = OpConstant %uint 0
+    %int_115 = OpConstant %int 115
+    %int_133 = OpConstant %int 133
+    %int_150 = OpConstant %int 150
+    %int_164 = OpConstant %int 164
+    %int_176 = OpConstant %int 176
+    %int_184 = OpConstant %int 184
+    %int_190 = OpConstant %int 190
+    %int_192 = OpConstant %int 192
+    %int_191 = OpConstant %int 191
+    %int_187 = OpConstant %int 187
+    %int_181 = OpConstant %int 181
+    %int_172 = OpConstant %int 172
+    %int_163 = OpConstant %int 163
+    %int_153 = OpConstant %int 153
+    %int_143 = OpConstant %int 143
+    %int_134 = OpConstant %int 134
+    %int_126 = OpConstant %int 126
+    %int_120 = OpConstant %int 120
+    %int_116 = OpConstant %int 116
+    %int_114 = OpConstant %int 114
+    %int_117 = OpConstant %int 117
+    %int_121 = OpConstant %int 121
+    %int_127 = OpConstant %int 127
+    %int_141 = OpConstant %int 141
+    %int_148 = OpConstant %int 148
+    %int_154 = OpConstant %int 154
+    %int_159 = OpConstant %int 159
+    %int_162 = OpConstant %int 162
+    %int_161 = OpConstant %int 161
+    %int_157 = OpConstant %int 157
+    %int_151 = OpConstant %int 151
+    %int_124 = OpConstant %int 124
+    %int_113 = OpConstant %int 113
+    %int_103 = OpConstant %int 103
+     %int_94 = OpConstant %int 94
+     %int_87 = OpConstant %int 87
+     %int_82 = OpConstant %int 82
+     %int_79 = OpConstant %int 79
+     %int_80 = OpConstant %int 80
+     %int_84 = OpConstant %int 84
+     %int_91 = OpConstant %int 91
+    %int_101 = OpConstant %int 101
+    %int_130 = OpConstant %int 130
+    %int_146 = OpConstant %int 146
+    %int_182 = OpConstant %int 182
+    %int_199 = OpConstant %int 199
+    %int_215 = OpConstant %int 215
+    %int_229 = OpConstant %int 229
+    %int_240 = OpConstant %int 240
+    %int_249 = OpConstant %int 249
+    %int_254 = OpConstant %int 254
+    %int_250 = OpConstant %int 250
+    %int_243 = OpConstant %int 243
+    %int_233 = OpConstant %int 233
+    %int_223 = OpConstant %int 223
+    %int_212 = OpConstant %int 212
+    %int_200 = OpConstant %int 200
+    %int_180 = OpConstant %int 180
+    %int_166 = OpConstant %int 166
+    %int_169 = OpConstant %int 169
+    %int_174 = OpConstant %int 174
+    %int_179 = OpConstant %int 179
+    %int_185 = OpConstant %int 185
+    %int_193 = OpConstant %int 193
+    %int_195 = OpConstant %int 195
+    %int_188 = OpConstant %int 188
+    %int_171 = OpConstant %int 171
+    %int_149 = OpConstant %int 149
+    %int_137 = OpConstant %int 137
+    %int_125 = OpConstant %int 125
+    %int_105 = OpConstant %int 105
+     %int_97 = OpConstant %int 97
+     %int_93 = OpConstant %int 93
+     %int_98 = OpConstant %int 98
+    %int_106 = OpConstant %int 106
+    %int_145 = OpConstant %int 145
+    %int_177 = OpConstant %int 177
+    %int_208 = OpConstant %int 208
+    %int_221 = OpConstant %int 221
+    %int_231 = OpConstant %int 231
+    %int_239 = OpConstant %int 239
+    %int_244 = OpConstant %int 244
+    %int_242 = OpConstant %int 242
+    %int_236 = OpConstant %int 236
+    %int_228 = OpConstant %int 228
+    %int_218 = OpConstant %int 218
+    %int_207 = OpConstant %int 207
+    %int_194 = OpConstant %int 194
+    %int_158 = OpConstant %int 158
+    %int_135 = OpConstant %int 135
+    %int_132 = OpConstant %int 132
+    %int_131 = OpConstant %int 131
+    %int_138 = OpConstant %int 138
+    %int_147 = OpConstant %int 147
+    %int_155 = OpConstant %int 155
+    %int_152 = OpConstant %int 152
+    %int_139 = OpConstant %int 139
+    %int_129 = OpConstant %int 129
+    %int_118 = OpConstant %int 118
+     %int_68 = OpConstant %int 68
+     %int_58 = OpConstant %int 58
+     %int_49 = OpConstant %int 49
+     %int_43 = OpConstant %int 43
+     %int_40 = OpConstant %int 40
+     %int_41 = OpConstant %int 41
+     %int_44 = OpConstant %int 44
+     %int_51 = OpConstant %int 51
+     %int_61 = OpConstant %int 61
+     %int_73 = OpConstant %int 73
+    %int_119 = OpConstant %int 119
+    %int_173 = OpConstant %int 173
+    %int_186 = OpConstant %int 186
+    %int_128 = OpConstant %int 128
+    %int_104 = OpConstant %int 104
+     %int_86 = OpConstant %int 86
+     %int_81 = OpConstant %int 81
+     %int_77 = OpConstant %int 77
+     %int_76 = OpConstant %int 76
+     %int_89 = OpConstant %int 89
+    %int_102 = OpConstant %int 102
+     %int_92 = OpConstant %int 92
+     %int_83 = OpConstant %int 83
+     %int_62 = OpConstant %int 62
+     %int_50 = OpConstant %int 50
+     %int_38 = OpConstant %int 38
+     %int_26 = OpConstant %int 26
+     %int_16 = OpConstant %int 16
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+     %int_11 = OpConstant %int 11
+     %int_21 = OpConstant %int 21
+     %int_33 = OpConstant %int 33
+     %int_48 = OpConstant %int 48
+     %int_64 = OpConstant %int 64
+    %int_144 = OpConstant %int 144
+    %int_123 = OpConstant %int 123
+    %int_112 = OpConstant %int 112
+    %int_100 = OpConstant %int 100
+     %int_90 = OpConstant %int 90
+     %int_65 = OpConstant %int 65
+     %int_67 = OpConstant %int 67
+     %int_70 = OpConstant %int 70
+     %int_75 = OpConstant %int 75
+     %int_95 = OpConstant %int 95
+     %int_88 = OpConstant %int 88
+     %int_69 = OpConstant %int 69
+     %int_47 = OpConstant %int 47
+     %int_36 = OpConstant %int 36
+     %int_18 = OpConstant %int 18
+     %int_13 = OpConstant %int 13
+     %int_15 = OpConstant %int 15
+     %int_22 = OpConstant %int 22
+     %int_32 = OpConstant %int 32
+     %int_45 = OpConstant %int 45
+     %int_60 = OpConstant %int 60
+        %216 = OpConstantComposite %_arr_int_uint_256 %int_115 %int_133 %int_150 %int_164 %int_176 %int_184 %int_190 %int_192 %int_191 %int_187 %int_181 %int_172 %int_163 %int_153 %int_143 %int_134 %int_126 %int_120 %int_116 %int_114 %int_114 %int_117 %int_121 %int_127 %int_134 %int_141 %int_148 %int_154 %int_159 %int_162 %int_163 %int_161 %int_157 %int_151 %int_143 %int_134 %int_124 %int_113 %int_103 %int_94 %int_87 %int_82 %int_79 %int_80 %int_84 %int_91 %int_101 %int_114 %int_130 %int_146 %int_164 %int_182 %int_199 %int_215 %int_229 %int_240 %int_249 %int_254 %int_256 %int_254 %int_250 %int_243 %int_233 %int_223 %int_212 %int_200 %int_190 %int_180 %int_172 %int_166 %int_163 %int_161 %int_162 %int_164 %int_169 %int_174 %int_179 %int_185 %int_190 %int_193 %int_195 %int_195 %int_192 %int_188 %int_180 %int_171 %int_161 %int_149 %int_137 %int_125 %int_114 %int_105 %int_97 %int_93 %int_91 %int_93 %int_98 %int_106 %int_117 %int_130 %int_145 %int_161 %int_177 %int_193 %int_208 %int_221 %int_231 %int_239 %int_243 %int_244 %int_242 %int_236 %int_228 %int_218 %int_207 %int_194 %int_181 %int_169 %int_158 %int_148 %int_141 %int_135 %int_132 %int_131 %int_132 %int_135 %int_138 %int_143 %int_147 %int_151 %int_154 %int_155 %int_155 %int_152 %int_146 %int_139 %int_129 %int_118 %int_106 %int_93 %int_80 %int_68 %int_58 %int_49 %int_43 %int_40 %int_41 %int_44 %int_51 %int_61 %int_73 %int_87 %int_103 %int_119 %int_134 %int_149 %int_162 %int_173 %int_181 %int_186 %int_188 %int_186 %int_181 %int_174 %int_164 %int_153 %int_141 %int_128 %int_116 %int_104 %int_94 %int_86 %int_81 %int_77 %int_76 %int_77 %int_80 %int_84 %int_89 %int_94 %int_98 %int_102 %int_104 %int_104 %int_102 %int_98 %int_92 %int_83 %int_73 %int_62 %int_50 %int_38 %int_26 %int_16 %int_8 %int_2 %int_0 %int_0 %int_4 %int_11 %int_21 %int_33 %int_48 %int_64 %int_81 %int_98 %int_114 %int_129 %int_141 %int_151 %int_158 %int_161 %int_161 %int_158 %int_152 %int_144 %int_134 %int_123 %int_112 %int_100 %int_90 %int_81 %int_73 %int_68 %int_65 %int_65 %int_67 %int_70 %int_75 %int_81 %int_87 %int_92 %int_97 %int_101 %int_103 %int_102 %int_100 %int_95 %int_88 %int_79 %int_69 %int_58 %int_47 %int_36 %int_26 %int_18 %int_13 %int_11 %int_11 %int_15 %int_22 %int_32 %int_45 %int_60 %int_77 %int_94
+        %220 = OpConstantComposite %_arr_int_uint_256 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0 %int_0
+   %float_15 = OpConstant %float 15
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+        %274 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %void = OpTypeVoid
+        %275 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %281 = OpConstantNull %v2float
+        %283 = OpConstantNull %v2int
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+  %float_256 = OpConstant %float 256
+   %main_out = OpTypeStruct %v4float
+        %306 = OpTypeFunction %void %main_out
+ %trace_vi2_ = OpFunction %v4float None %15
+        %pos = OpFunctionParameter %_ptr_Function_v2int
+         %21 = OpLabel
+  %indexable = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+%indexable_1 = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+          %p = OpVariable %_ptr_Function_float Function %31
+%indexable_2 = OpVariable %_ptr_Function__arr_int_uint_256 Function %27
+      %x_251 = OpVariable %_ptr_Function_bool Function %40
+  %x_252_phi = OpVariable %_ptr_Function_bool Function %40
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %45 = OpAccessChain %_ptr_Function_int %pos %uint_1
+         %46 = OpLoad %int %45
+         %48 = OpINotEqual %bool %46 %int_256
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %34
+         %49 = OpLabel
+         %54 = OpAccessChain %_ptr_Function_int %pos %uint_0
+         %55 = OpLoad %int %54
+         %57 = OpAccessChain %_ptr_Function_int %pos %uint_1
+         %58 = OpLoad %int %57
+               OpStore %indexable %216
+        %217 = OpAccessChain %_ptr_Function_int %indexable %58
+        %218 = OpLoad %int %217
+        %219 = OpLoad %_arr_int_uint_256 %indexable
+               OpStore %indexable %220
+        %222 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %223 = OpLoad %int %222
+        %225 = OpAccessChain %_ptr_Function_int %pos %uint_1
+               OpStore %225 %int_0
+        %227 = OpAccessChain %_ptr_Function_int %pos %uint_1
+               OpStore %227 %223
+               OpStore %indexable %219
+        %228 = OpIAdd %int %218 %int_15
+        %229 = OpSLessThan %bool %55 %228
+               OpStore %x_252_phi %229
+               OpSelectionMerge %230 None
+               OpBranchConditional %229 %231 %230
+        %231 = OpLabel
+        %233 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %234 = OpLoad %int %233
+        %236 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %237 = OpLoad %int %236
+               OpStore %indexable_1 %216
+        %238 = OpAccessChain %_ptr_Function_int %indexable_1 %237
+        %239 = OpLoad %int %238
+        %240 = OpISub %int %239 %int_15
+        %241 = OpSGreaterThan %bool %234 %240
+               OpStore %x_251 %241
+        %242 = OpLoad %bool %x_251
+               OpStore %x_252_phi %242
+               OpBranch %230
+        %230 = OpLabel
+        %243 = OpLoad %bool %x_252_phi
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+        %247 = OpAccessChain %_ptr_Function_int %pos %uint_0
+        %248 = OpLoad %int %247
+        %250 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %251 = OpLoad %int %250
+               OpStore %indexable_2 %216
+        %252 = OpAccessChain %_ptr_Function_int %indexable_2 %251
+        %253 = OpLoad %int %252
+        %258 = OpISub %int %248 %253
+        %257 = OpConvertSToF %float %258
+        %255 = OpExtInst %float %256 FAbs %257
+        %259 = OpFSub %float %float_15 %255
+        %260 = OpFDiv %float %259 %float_15
+               OpStore %p %260
+        %261 = OpLoad %float %p
+        %262 = OpLoad %float %p
+        %263 = OpLoad %float %p
+        %265 = OpCompositeConstruct %v4float %261 %262 %263 %float_1
+               OpReturnValue %265
+        %244 = OpLabel
+        %267 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %268 = OpLoad %int %267
+        %270 = OpAccessChain %_ptr_Function_int %pos %uint_1
+        %272 = OpIAdd %int %268 %int_1
+               OpStore %270 %272
+               OpBranch %35
+         %35 = OpLabel
+               OpBranch %33
+         %34 = OpLabel
+               OpReturnValue %274
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %275
+        %278 = OpLabel
+      %pos_1 = OpVariable %_ptr_Function_v2float Function %281
+       %ipos = OpVariable %_ptr_Function_v2int Function %283
+      %param = OpVariable %_ptr_Function_v2int Function %283
+        %285 = OpLoad %v4float %gl_FragCoord
+        %287 = OpAccessChain %_ptr_Uniform_v2float %x_13 %uint_0
+        %288 = OpLoad %v2float %287
+        %289 = OpCompositeExtract %float %285 0
+        %290 = OpCompositeExtract %float %285 1
+        %291 = OpCompositeConstruct %v2float %289 %290
+        %292 = OpFDiv %v2float %291 %288
+               OpStore %pos_1 %292
+        %293 = OpAccessChain %_ptr_Function_float %pos_1 %uint_0
+        %294 = OpLoad %float %293
+        %295 = OpAccessChain %_ptr_Function_float %pos_1 %uint_1
+        %296 = OpLoad %float %295
+        %299 = OpFMul %float %294 %float_256
+        %297 = OpConvertFToS %int %299
+        %301 = OpFMul %float %296 %float_256
+        %300 = OpConvertFToS %int %301
+        %302 = OpCompositeConstruct %v2int %297 %300
+               OpStore %ipos %302
+        %303 = OpLoad %v2int %ipos
+               OpStore %param %303
+        %304 = OpFunctionCall %v4float %trace_vi2_ %param
+               OpStore %x_GLF_color %304
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %306
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %310 = OpLabel
+        %311 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %311
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %275
+        %313 = OpLabel
+        %314 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %314
+        %315 = OpFunctionCall %void %main_1
+        %317 = OpLoad %v4float %x_GLF_color
+        %318 = OpCompositeConstruct %main_out %317
+        %316 = OpFunctionCall %void %tint_symbol_3 %318
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..3970047
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl.expected.wgsl
@@ -0,0 +1,92 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn trace_vi2_(pos : ptr<function, vec2<i32>>) -> vec4<f32> {
+  var indexable : array<i32, 256>;
+  var indexable_1 : array<i32, 256>;
+  var p : f32;
+  var indexable_2 : array<i32, 256>;
+  loop {
+    var x_251 : bool;
+    var x_252_phi : bool;
+    let x_228 : ptr<function, i32> = &((*(pos)).y);
+    let x_229 : i32 = *(x_228);
+    if ((x_229 != 256)) {
+    } else {
+      break;
+    }
+    let x_233 : i32 = (*(pos)).x;
+    let x_235 : i32 = (*(pos)).y;
+    indexable = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+    let x_237 : i32 = indexable[x_235];
+    let x_238 : array<i32, 256> = indexable;
+    indexable = array<i32, 256>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+    let x_239 : i32 = *(x_228);
+    *(x_228) = 0;
+    *(x_228) = x_239;
+    indexable = x_238;
+    let x_241 : bool = (x_233 < (x_237 + 15));
+    x_252_phi = x_241;
+    if (x_241) {
+      let x_245 : i32 = (*(pos)).x;
+      let x_247 : i32 = (*(pos)).y;
+      indexable_1 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_249 : i32 = indexable_1[x_247];
+      x_251 = (x_245 > (x_249 - 15));
+      x_252_phi = x_251;
+    }
+    let x_252 : bool = x_252_phi;
+    if (x_252) {
+      let x_256 : i32 = (*(pos)).x;
+      let x_258 : i32 = (*(pos)).y;
+      indexable_2 = array<i32, 256>(115, 133, 150, 164, 176, 184, 190, 192, 191, 187, 181, 172, 163, 153, 143, 134, 126, 120, 116, 114, 114, 117, 121, 127, 134, 141, 148, 154, 159, 162, 163, 161, 157, 151, 143, 134, 124, 113, 103, 94, 87, 82, 79, 80, 84, 91, 101, 114, 130, 146, 164, 182, 199, 215, 229, 240, 249, 254, 256, 254, 250, 243, 233, 223, 212, 200, 190, 180, 172, 166, 163, 161, 162, 164, 169, 174, 179, 185, 190, 193, 195, 195, 192, 188, 180, 171, 161, 149, 137, 125, 114, 105, 97, 93, 91, 93, 98, 106, 117, 130, 145, 161, 177, 193, 208, 221, 231, 239, 243, 244, 242, 236, 228, 218, 207, 194, 181, 169, 158, 148, 141, 135, 132, 131, 132, 135, 138, 143, 147, 151, 154, 155, 155, 152, 146, 139, 129, 118, 106, 93, 80, 68, 58, 49, 43, 40, 41, 44, 51, 61, 73, 87, 103, 119, 134, 149, 162, 173, 181, 186, 188, 186, 181, 174, 164, 153, 141, 128, 116, 104, 94, 86, 81, 77, 76, 77, 80, 84, 89, 94, 98, 102, 104, 104, 102, 98, 92, 83, 73, 62, 50, 38, 26, 16, 8, 2, 0, 0, 4, 11, 21, 33, 48, 64, 81, 98, 114, 129, 141, 151, 158, 161, 161, 158, 152, 144, 134, 123, 112, 100, 90, 81, 73, 68, 65, 65, 67, 70, 75, 81, 87, 92, 97, 101, 103, 102, 100, 95, 88, 79, 69, 58, 47, 36, 26, 18, 13, 11, 11, 15, 22, 32, 45, 60, 77, 94);
+      let x_260 : i32 = indexable_2[x_258];
+      p = ((15.0 - abs(f32((x_256 - x_260)))) / 15.0);
+      let x_266 : f32 = p;
+      let x_267 : f32 = p;
+      let x_268 : f32 = p;
+      return vec4<f32>(x_266, x_267, x_268, 1.0);
+    }
+    let x_270 : ptr<function, i32> = &((*(pos)).y);
+    let x_271 : i32 = *(x_270);
+    *(x_270) = (x_271 + 1);
+  }
+  return vec4<f32>(0.0, 0.0, 0.0, 1.0);
+}
+
+fn main_1() {
+  var pos_1 : vec2<f32>;
+  var ipos : vec2<i32>;
+  var param : vec2<i32>;
+  let x_207 : vec4<f32> = gl_FragCoord;
+  let x_210 : vec2<f32> = x_13.resolution;
+  pos_1 = (vec2<f32>(x_207.x, x_207.y) / x_210);
+  let x_213 : f32 = pos_1.x;
+  let x_217 : f32 = pos_1.y;
+  ipos = vec2<i32>(i32((x_213 * 256.0)), i32((x_217 * 256.0)));
+  let x_221 : vec2<i32> = ipos;
+  param = x_221;
+  let x_222 : vec4<f32> = trace_vi2_(&(param));
+  x_GLF_color = x_222;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm
new file mode 100644
index 0000000..449e485
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm
@@ -0,0 +1,481 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap(i1;i1;"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %quicksort_ "quicksort("
+               OpName %temp "temp"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %pivot "pivot"
+               OpName %i_0 "i"
+               OpName %j_0 "j"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %l_0 "l"
+               OpName %h_0 "h"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %i_1 "i"
+               OpName %uv "uv"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %color "color"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %35 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %38 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %39 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+     %int_10 = OpConstant %int 10
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %64 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %35
+         %80 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function
+         %uv = OpVariable %_ptr_Function_v2float Function
+      %color = OpVariable %_ptr_Function_v3float Function
+               OpStore %i_1 %int_0
+               OpBranch %81
+         %81 = OpLabel
+               OpLoopMerge %82 %83 None
+               OpBranch %84
+         %84 = OpLabel
+         %85 = OpLoad %int %i_1
+         %86 = OpSLessThan %bool %85 %int_10
+               OpBranchConditional %86 %87 %82
+         %87 = OpLabel
+         %88 = OpLoad %int %i_1
+         %89 = OpLoad %int %i_1
+         %90 = OpISub %int %int_10 %89
+         %91 = OpAccessChain %_ptr_Private_int %obj %int_0 %88
+               OpStore %91 %90
+         %92 = OpLoad %int %i_1
+         %93 = OpLoad %int %i_1
+         %94 = OpAccessChain %_ptr_Private_int %obj %int_0 %93
+         %95 = OpLoad %int %94
+         %96 = OpLoad %int %i_1
+         %97 = OpAccessChain %_ptr_Private_int %obj %int_0 %96
+         %98 = OpLoad %int %97
+         %99 = OpIMul %int %95 %98
+        %100 = OpAccessChain %_ptr_Private_int %obj %int_0 %92
+               OpStore %100 %99
+               OpBranch %83
+         %83 = OpLabel
+        %101 = OpLoad %int %i_1
+        %102 = OpIAdd %int %101 %int_1
+               OpStore %i_1 %102
+               OpBranch %81
+         %82 = OpLabel
+        %103 = OpFunctionCall %void %quicksort_
+        %104 = OpLoad %v4float %gl_FragCoord
+        %105 = OpVectorShuffle %v2float %104 %104 0 1
+        %106 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %107 = OpLoad %v2float %106
+        %108 = OpFDiv %v2float %105 %107
+               OpStore %uv %108
+               OpStore %color %64
+        %109 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
+        %110 = OpLoad %int %109
+        %111 = OpConvertSToF %float %110
+        %112 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %113 = OpLoad %float %112
+        %114 = OpFAdd %float %113 %111
+        %115 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %115 %114
+        %116 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %117 = OpLoad %float %116
+        %118 = OpFOrdGreaterThan %bool %117 %float_0_25
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+        %121 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
+        %122 = OpLoad %int %121
+        %123 = OpConvertSToF %float %122
+        %124 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpFAdd %float %125 %123
+        %127 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %127 %126
+               OpBranch %119
+        %119 = OpLabel
+        %128 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %129 = OpLoad %float %128
+        %130 = OpFOrdGreaterThan %bool %129 %float_0_5
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+        %133 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
+        %134 = OpLoad %int %133
+        %135 = OpConvertSToF %float %134
+        %136 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %137 = OpLoad %float %136
+        %138 = OpFAdd %float %137 %135
+        %139 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %139 %138
+               OpBranch %131
+        %131 = OpLabel
+        %140 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %141 = OpLoad %float %140
+        %142 = OpFOrdGreaterThan %bool %141 %float_0_75
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %143
+        %144 = OpLabel
+        %145 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
+        %146 = OpLoad %int %145
+        %147 = OpConvertSToF %float %146
+        %148 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %149 = OpLoad %float %148
+        %150 = OpFAdd %float %149 %147
+        %151 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %151 %150
+               OpBranch %143
+        %143 = OpLabel
+        %152 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
+        %153 = OpLoad %int %152
+        %154 = OpConvertSToF %float %153
+        %155 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %156 = OpLoad %float %155
+        %157 = OpFAdd %float %156 %154
+        %158 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %158 %157
+        %159 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %160 = OpLoad %float %159
+        %161 = OpFOrdGreaterThan %bool %160 %float_0_25
+               OpSelectionMerge %162 None
+               OpBranchConditional %161 %163 %162
+        %163 = OpLabel
+        %164 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
+        %165 = OpLoad %int %164
+        %166 = OpConvertSToF %float %165
+        %167 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %168 = OpLoad %float %167
+        %169 = OpFAdd %float %168 %166
+        %170 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %170 %169
+               OpBranch %162
+        %162 = OpLabel
+        %171 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %172 = OpLoad %float %171
+        %173 = OpFOrdGreaterThan %bool %172 %float_0_5
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %174
+        %175 = OpLabel
+        %176 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
+        %177 = OpLoad %int %176
+        %178 = OpConvertSToF %float %177
+        %179 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %180 = OpLoad %float %179
+        %181 = OpFAdd %float %180 %178
+        %182 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %182 %181
+               OpBranch %174
+        %174 = OpLabel
+        %183 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %184 = OpLoad %float %183
+        %185 = OpFOrdGreaterThan %bool %184 %float_0_75
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %186
+        %187 = OpLabel
+        %188 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
+        %189 = OpLoad %int %188
+        %190 = OpConvertSToF %float %189
+        %191 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %192 = OpLoad %float %191
+        %193 = OpFAdd %float %192 %190
+        %194 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %194 %193
+               OpBranch %186
+        %186 = OpLabel
+        %195 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
+        %196 = OpLoad %int %195
+        %197 = OpConvertSToF %float %196
+        %198 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %199 = OpLoad %float %198
+        %200 = OpFAdd %float %199 %197
+        %201 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %201 %200
+        %202 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %203 = OpLoad %float %202
+        %204 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %205 = OpLoad %float %204
+        %206 = OpFSub %float %203 %205
+        %207 = OpExtInst %float %1 FAbs %206
+        %208 = OpFOrdLessThan %bool %207 %float_0_25
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %209
+        %210 = OpLabel
+        %211 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
+        %212 = OpLoad %int %211
+        %213 = OpConvertSToF %float %212
+        %214 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %215 = OpLoad %float %214
+        %216 = OpFAdd %float %215 %213
+        %217 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %217 %216
+               OpBranch %209
+        %209 = OpLabel
+        %218 = OpLoad %v3float %color
+        %219 = OpExtInst %v3float %1 Normalize %218
+        %220 = OpCompositeExtract %float %219 0
+        %221 = OpCompositeExtract %float %219 1
+        %222 = OpCompositeExtract %float %219 2
+        %223 = OpCompositeConstruct %v4float %220 %221 %222 %float_1
+               OpStore %_GLF_color %223
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %38
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %224 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+        %225 = OpLoad %int %i
+        %226 = OpAccessChain %_ptr_Private_int %obj %int_0 %225
+        %227 = OpLoad %int %226
+               OpStore %temp %227
+        %228 = OpLoad %int %i
+        %229 = OpLoad %int %j
+        %230 = OpAccessChain %_ptr_Private_int %obj %int_0 %229
+        %231 = OpLoad %int %230
+        %232 = OpAccessChain %_ptr_Private_int %obj %int_0 %228
+               OpStore %232 %231
+        %233 = OpLoad %int %j
+        %234 = OpLoad %int %temp
+        %235 = OpAccessChain %_ptr_Private_int %obj %int_0 %233
+               OpStore %235 %234
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %39
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %236 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+        %237 = OpLoad %int %h
+        %238 = OpAccessChain %_ptr_Private_int %obj %int_0 %237
+        %239 = OpLoad %int %238
+               OpStore %pivot %239
+        %240 = OpLoad %int %l
+        %241 = OpISub %int %240 %int_1
+               OpStore %i_0 %241
+        %242 = OpLoad %int %l
+               OpStore %j_0 %242
+               OpBranch %243
+        %243 = OpLabel
+               OpLoopMerge %244 %245 None
+               OpBranch %246
+        %246 = OpLabel
+        %247 = OpLoad %int %j_0
+        %248 = OpLoad %int %h
+        %249 = OpISub %int %248 %int_1
+        %250 = OpSLessThanEqual %bool %247 %249
+               OpBranchConditional %250 %251 %244
+        %251 = OpLabel
+        %252 = OpLoad %int %j_0
+        %253 = OpAccessChain %_ptr_Private_int %obj %int_0 %252
+        %254 = OpLoad %int %253
+        %255 = OpLoad %int %pivot
+        %256 = OpSLessThanEqual %bool %254 %255
+               OpSelectionMerge %257 None
+               OpBranchConditional %256 %258 %257
+        %258 = OpLabel
+        %259 = OpLoad %int %i_0
+        %260 = OpIAdd %int %259 %int_1
+               OpStore %i_0 %260
+        %261 = OpLoad %int %i_0
+               OpStore %param %261
+        %262 = OpLoad %int %j_0
+               OpStore %param_0 %262
+        %263 = OpFunctionCall %void %swap_i1_i1_ %param %param_0
+               OpBranch %257
+        %257 = OpLabel
+               OpBranch %245
+        %245 = OpLabel
+        %264 = OpLoad %int %j_0
+        %265 = OpIAdd %int %264 %int_1
+               OpStore %j_0 %265
+               OpBranch %243
+        %244 = OpLabel
+        %266 = OpLoad %int %i_0
+        %267 = OpIAdd %int %266 %int_1
+               OpStore %i_0 %267
+        %268 = OpLoad %int %i_0
+               OpStore %param_1 %268
+        %269 = OpLoad %int %h
+               OpStore %param_2 %269
+        %270 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2
+        %271 = OpLoad %int %i_0
+               OpReturnValue %271
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %35
+        %272 = OpLabel
+        %l_0 = OpVariable %_ptr_Function_int Function
+        %h_0 = OpVariable %_ptr_Function_int Function
+        %top = OpVariable %_ptr_Function_int Function
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %p = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+               OpStore %l_0 %int_0
+               OpStore %h_0 %int_9
+               OpStore %top %int_n1
+        %273 = OpLoad %int %top
+        %274 = OpIAdd %int %273 %int_1
+               OpStore %top %274
+        %275 = OpLoad %int %l_0
+        %276 = OpAccessChain %_ptr_Function_int %stack %274
+               OpStore %276 %275
+        %277 = OpLoad %int %top
+        %278 = OpIAdd %int %277 %int_1
+               OpStore %top %278
+        %279 = OpLoad %int %h_0
+        %280 = OpAccessChain %_ptr_Function_int %stack %278
+               OpStore %280 %279
+               OpBranch %281
+        %281 = OpLabel
+               OpLoopMerge %282 %283 None
+               OpBranch %284
+        %284 = OpLabel
+        %285 = OpLoad %int %top
+        %286 = OpSGreaterThanEqual %bool %285 %int_0
+               OpBranchConditional %286 %287 %282
+        %287 = OpLabel
+        %288 = OpLoad %int %top
+        %289 = OpISub %int %288 %int_1
+               OpStore %top %289
+        %290 = OpAccessChain %_ptr_Function_int %stack %288
+        %291 = OpLoad %int %290
+               OpStore %h_0 %291
+        %292 = OpLoad %int %top
+        %293 = OpISub %int %292 %int_1
+               OpStore %top %293
+        %294 = OpAccessChain %_ptr_Function_int %stack %292
+        %295 = OpLoad %int %294
+               OpStore %l_0 %295
+        %296 = OpLoad %int %l_0
+               OpStore %param_3 %296
+        %297 = OpLoad %int %h_0
+               OpStore %param_4 %297
+        %298 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
+               OpStore %p %298
+        %299 = OpLoad %int %p
+        %300 = OpISub %int %299 %int_1
+        %301 = OpLoad %int %l_0
+        %302 = OpSGreaterThan %bool %300 %301
+               OpSelectionMerge %303 None
+               OpBranchConditional %302 %304 %303
+        %304 = OpLabel
+        %305 = OpLoad %int %top
+        %306 = OpIAdd %int %305 %int_1
+               OpStore %top %306
+        %307 = OpLoad %int %l_0
+        %308 = OpAccessChain %_ptr_Function_int %stack %306
+               OpStore %308 %307
+        %309 = OpLoad %int %top
+        %310 = OpIAdd %int %309 %int_1
+               OpStore %top %310
+        %311 = OpLoad %int %p
+        %312 = OpISub %int %311 %int_1
+        %313 = OpAccessChain %_ptr_Function_int %stack %310
+               OpStore %313 %312
+               OpBranch %303
+        %303 = OpLabel
+        %314 = OpLoad %int %p
+        %315 = OpIAdd %int %314 %int_1
+        %316 = OpLoad %int %h_0
+        %317 = OpSLessThan %bool %315 %316
+               OpSelectionMerge %318 None
+               OpBranchConditional %317 %319 %318
+        %319 = OpLabel
+        %320 = OpLoad %int %top
+        %321 = OpIAdd %int %320 %int_1
+               OpStore %top %321
+        %322 = OpLoad %int %p
+        %323 = OpIAdd %int %322 %int_1
+        %324 = OpAccessChain %_ptr_Function_int %stack %321
+               OpStore %324 %323
+        %325 = OpLoad %int %top
+        %326 = OpIAdd %int %325 %int_1
+               OpStore %top %326
+        %327 = OpLoad %int %h_0
+        %328 = OpAccessChain %_ptr_Function_int %stack %326
+               OpStore %328 %327
+               OpBranch %318
+        %318 = OpLabel
+               OpBranch %283
+        %283 = OpLabel
+               OpBranch %281
+        %282 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..18cfa06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,214 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_32 : register(b0, space0) {
+  uint4 x_32[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_225 = i;
+  const int x_227 = obj.numbers[x_225];
+  temp = x_227;
+  const int x_228 = i;
+  const int x_229 = j;
+  const int x_231 = obj.numbers[x_229];
+  obj.numbers[x_228] = x_231;
+  const int x_233 = j;
+  obj.numbers[x_233] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_237 = h;
+  const int x_239 = obj.numbers[x_237];
+  pivot = x_239;
+  const int x_240 = l;
+  i_1 = (x_240 - 1);
+  const int x_242 = l;
+  j_1 = x_242;
+  while (true) {
+    const int x_247 = j_1;
+    const int x_248 = h;
+    if ((x_247 <= (x_248 - 1))) {
+    } else {
+      break;
+    }
+    const int x_254 = obj.numbers[j_1];
+    if ((x_254 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  i_1 = (i_1 + 1);
+  param_2 = i_1;
+  const int x_269 = h;
+  param_3 = x_269;
+  swap_i1_i1_(param_2, param_3);
+  return i_1;
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_274 = (top + 1);
+  top = x_274;
+  stack[x_274] = l_1;
+  const int x_278 = (top + 1);
+  top = x_278;
+  stack[x_278] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_288 = top;
+    top = (x_288 - 1);
+    const int x_291 = stack[x_288];
+    h_1 = x_291;
+    const int x_292 = top;
+    top = (x_292 - 1);
+    const int x_295 = stack[x_292];
+    l_1 = x_295;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_298 = performPartition_i1_i1_(param_4, param_5);
+    p = x_298;
+    if (((p - 1) > l_1)) {
+      const int x_306 = (top + 1);
+      top = x_306;
+      stack[x_306] = l_1;
+      const int x_310 = (top + 1);
+      top = x_310;
+      stack[x_310] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_321 = (top + 1);
+      top = x_321;
+      stack[x_321] = (p + 1);
+      const int x_326 = (top + 1);
+      top = x_326;
+      stack[x_326] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_92 = i_2;
+      const int x_95 = obj.numbers[i_2];
+      const int x_98 = obj.numbers[i_2];
+      obj.numbers[x_92] = (x_95 * x_98);
+    }
+  }
+  quicksort_();
+  const float4 x_104 = gl_FragCoord;
+  const float2 x_107 = asfloat(x_32[0].xy);
+  uv = (float2(x_104.x, x_104.y) / x_107);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_110 = obj.numbers[0];
+  const float x_113 = color.x;
+  color.x = (x_113 + float(x_110));
+  const float x_117 = uv.x;
+  if ((x_117 > 0.25f)) {
+    const int x_122 = obj.numbers[1];
+    const float x_125 = color.x;
+    color.x = (x_125 + float(x_122));
+  }
+  const float x_129 = uv.x;
+  if ((x_129 > 0.5f)) {
+    const int x_134 = obj.numbers[2];
+    const float x_137 = color.y;
+    color.y = (x_137 + float(x_134));
+  }
+  const float x_141 = uv.x;
+  if ((x_141 > 0.75f)) {
+    const int x_146 = obj.numbers[3];
+    const float x_149 = color.z;
+    color.z = (x_149 + float(x_146));
+  }
+  const int x_153 = obj.numbers[4];
+  const float x_156 = color.y;
+  color.y = (x_156 + float(x_153));
+  const float x_160 = uv.y;
+  if ((x_160 > 0.25f)) {
+    const int x_165 = obj.numbers[5];
+    const float x_168 = color.x;
+    color.x = (x_168 + float(x_165));
+  }
+  const float x_172 = uv.y;
+  if ((x_172 > 0.5f)) {
+    const int x_177 = obj.numbers[6];
+    const float x_180 = color.y;
+    color.y = (x_180 + float(x_177));
+  }
+  const float x_184 = uv.y;
+  if ((x_184 > 0.75f)) {
+    const int x_189 = obj.numbers[7];
+    const float x_192 = color.z;
+    color.z = (x_192 + float(x_189));
+  }
+  const int x_196 = obj.numbers[8];
+  const float x_199 = color.z;
+  color.z = (x_199 + float(x_196));
+  const float x_203 = uv.x;
+  const float x_205 = uv.y;
+  if ((abs((x_203 - x_205)) < 0.25f)) {
+    const int x_212 = obj.numbers[9];
+    const float x_215 = color.x;
+    color.x = (x_215 + float(x_212));
+  }
+  const float3 x_219 = normalize(color);
+  x_GLF_color = float4(x_219.x, x_219.y, x_219.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..7cd8892
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.msl
@@ -0,0 +1,256 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_5) {
+  int temp = 0;
+  int const x_225 = *(i);
+  int const x_227 = (*(tint_symbol_5)).numbers.arr[x_225];
+  temp = x_227;
+  int const x_228 = *(i);
+  int const x_229 = *(j);
+  int const x_231 = (*(tint_symbol_5)).numbers.arr[x_229];
+  (*(tint_symbol_5)).numbers.arr[x_228] = x_231;
+  int const x_233 = *(j);
+  int const x_234 = temp;
+  (*(tint_symbol_5)).numbers.arr[x_233] = x_234;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_6) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_237 = *(h);
+  int const x_239 = (*(tint_symbol_6)).numbers.arr[x_237];
+  pivot = x_239;
+  int const x_240 = *(l);
+  i_1 = (x_240 - 1);
+  int const x_242 = *(l);
+  j_1 = x_242;
+  while (true) {
+    int const x_247 = j_1;
+    int const x_248 = *(h);
+    if ((x_247 <= (x_248 - 1))) {
+    } else {
+      break;
+    }
+    int const x_252 = j_1;
+    int const x_254 = (*(tint_symbol_6)).numbers.arr[x_252];
+    int const x_255 = pivot;
+    if ((x_254 <= x_255)) {
+      int const x_259 = i_1;
+      i_1 = (x_259 + 1);
+      int const x_261 = i_1;
+      param = x_261;
+      int const x_262 = j_1;
+      param_1 = x_262;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_6);
+    }
+    {
+      int const x_264 = j_1;
+      j_1 = (x_264 + 1);
+    }
+  }
+  int const x_266 = i_1;
+  i_1 = (x_266 + 1);
+  int const x_268 = i_1;
+  param_2 = x_268;
+  int const x_269 = *(h);
+  param_3 = x_269;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_6);
+  int const x_271 = i_1;
+  return x_271;
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_7) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_273 = top;
+  int const x_274 = (x_273 + 1);
+  top = x_274;
+  int const x_275 = l_1;
+  stack.arr[x_274] = x_275;
+  int const x_277 = top;
+  int const x_278 = (x_277 + 1);
+  top = x_278;
+  int const x_279 = h_1;
+  stack.arr[x_278] = x_279;
+  while (true) {
+    int const x_285 = top;
+    if ((x_285 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_288 = top;
+    top = (x_288 - 1);
+    int const x_291 = stack.arr[x_288];
+    h_1 = x_291;
+    int const x_292 = top;
+    top = (x_292 - 1);
+    int const x_295 = stack.arr[x_292];
+    l_1 = x_295;
+    int const x_296 = l_1;
+    param_4 = x_296;
+    int const x_297 = h_1;
+    param_5 = x_297;
+    int const x_298 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_7);
+    p = x_298;
+    int const x_299 = p;
+    int const x_301 = l_1;
+    if (((x_299 - 1) > x_301)) {
+      int const x_305 = top;
+      int const x_306 = (x_305 + 1);
+      top = x_306;
+      int const x_307 = l_1;
+      stack.arr[x_306] = x_307;
+      int const x_309 = top;
+      int const x_310 = (x_309 + 1);
+      top = x_310;
+      int const x_311 = p;
+      stack.arr[x_310] = (x_311 - 1);
+    }
+    int const x_314 = p;
+    int const x_316 = h_1;
+    if (((x_314 + 1) < x_316)) {
+      int const x_320 = top;
+      int const x_321 = (x_320 + 1);
+      top = x_321;
+      int const x_322 = p;
+      stack.arr[x_321] = (x_322 + 1);
+      int const x_325 = top;
+      int const x_326 = (x_325 + 1);
+      top = x_326;
+      int const x_327 = h_1;
+      stack.arr[x_326] = x_327;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_32, thread QuicksortObject* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  i_2 = 0;
+  while (true) {
+    int const x_85 = i_2;
+    if ((x_85 < 10)) {
+    } else {
+      break;
+    }
+    int const x_88 = i_2;
+    int const x_89 = i_2;
+    (*(tint_symbol_8)).numbers.arr[x_88] = (10 - x_89);
+    int const x_92 = i_2;
+    int const x_93 = i_2;
+    int const x_95 = (*(tint_symbol_8)).numbers.arr[x_93];
+    int const x_96 = i_2;
+    int const x_98 = (*(tint_symbol_8)).numbers.arr[x_96];
+    (*(tint_symbol_8)).numbers.arr[x_92] = (x_95 * x_98);
+    {
+      int const x_101 = i_2;
+      i_2 = (x_101 + 1);
+    }
+  }
+  quicksort_(tint_symbol_8);
+  float4 const x_104 = *(tint_symbol_9);
+  float2 const x_107 = x_32.resolution;
+  uv = (float2(x_104.x, x_104.y) / x_107);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_110 = (*(tint_symbol_8)).numbers.arr[0];
+  float const x_113 = color.x;
+  color.x = (x_113 + float(x_110));
+  float const x_117 = uv.x;
+  if ((x_117 > 0.25f)) {
+    int const x_122 = (*(tint_symbol_8)).numbers.arr[1];
+    float const x_125 = color.x;
+    color.x = (x_125 + float(x_122));
+  }
+  float const x_129 = uv.x;
+  if ((x_129 > 0.5f)) {
+    int const x_134 = (*(tint_symbol_8)).numbers.arr[2];
+    float const x_137 = color.y;
+    color.y = (x_137 + float(x_134));
+  }
+  float const x_141 = uv.x;
+  if ((x_141 > 0.75f)) {
+    int const x_146 = (*(tint_symbol_8)).numbers.arr[3];
+    float const x_149 = color.z;
+    color.z = (x_149 + float(x_146));
+  }
+  int const x_153 = (*(tint_symbol_8)).numbers.arr[4];
+  float const x_156 = color.y;
+  color.y = (x_156 + float(x_153));
+  float const x_160 = uv.y;
+  if ((x_160 > 0.25f)) {
+    int const x_165 = (*(tint_symbol_8)).numbers.arr[5];
+    float const x_168 = color.x;
+    color.x = (x_168 + float(x_165));
+  }
+  float const x_172 = uv.y;
+  if ((x_172 > 0.5f)) {
+    int const x_177 = (*(tint_symbol_8)).numbers.arr[6];
+    float const x_180 = color.y;
+    color.y = (x_180 + float(x_177));
+  }
+  float const x_184 = uv.y;
+  if ((x_184 > 0.75f)) {
+    int const x_189 = (*(tint_symbol_8)).numbers.arr[7];
+    float const x_192 = color.z;
+    color.z = (x_192 + float(x_189));
+  }
+  int const x_196 = (*(tint_symbol_8)).numbers.arr[8];
+  float const x_199 = color.z;
+  color.z = (x_199 + float(x_196));
+  float const x_203 = uv.x;
+  float const x_205 = uv.y;
+  if ((fabs((x_203 - x_205)) < 0.25f)) {
+    int const x_212 = (*(tint_symbol_8)).numbers.arr[9];
+    float const x_215 = color.x;
+    color.x = (x_215 + float(x_212));
+  }
+  float3 const x_218 = color;
+  float3 const x_219 = normalize(x_218);
+  *(tint_symbol_10) = float4(x_219.x, x_219.y, x_219.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_32 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread QuicksortObject tint_symbol_12 = {};
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_32, &(tint_symbol_12), &(tint_symbol_11), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..dfd34c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,541 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 374
+; Schema: 0
+               OpCapability Shader
+        %343 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_32 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %31 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %49 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %109 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %117 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %189 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %193 = OpConstantNull %v3float
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %231 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float
+        %361 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %23
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %29 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %31
+         %33 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Private_int %obj %uint_0 %33
+         %37 = OpLoad %int %36
+               OpStore %temp %37
+         %39 = OpLoad %int %i
+         %41 = OpLoad %int %j
+         %42 = OpAccessChain %_ptr_Private_int %obj %uint_0 %41
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Private_int %obj %uint_0 %39
+               OpStore %44 %43
+         %46 = OpLoad %int %j
+         %47 = OpLoad %int %temp
+         %48 = OpAccessChain %_ptr_Private_int %obj %uint_0 %46
+               OpStore %48 %47
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %49
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %53 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %31
+        %i_1 = OpVariable %_ptr_Function_int Function %31
+        %j_1 = OpVariable %_ptr_Function_int Function %31
+      %param = OpVariable %_ptr_Function_int Function %31
+    %param_1 = OpVariable %_ptr_Function_int Function %31
+    %param_2 = OpVariable %_ptr_Function_int Function %31
+    %param_3 = OpVariable %_ptr_Function_int Function %31
+         %62 = OpLoad %int %h
+         %63 = OpAccessChain %_ptr_Private_int %obj %uint_0 %62
+         %64 = OpLoad %int %63
+               OpStore %pivot %64
+         %66 = OpLoad %int %l
+         %68 = OpISub %int %66 %int_1
+               OpStore %i_1 %68
+         %70 = OpLoad %int %l
+               OpStore %j_1 %70
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %j_1
+         %77 = OpLoad %int %h
+         %78 = OpISub %int %77 %int_1
+         %79 = OpSLessThanEqual %bool %75 %78
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %72
+         %81 = OpLabel
+         %84 = OpLoad %int %j_1
+         %85 = OpAccessChain %_ptr_Private_int %obj %uint_0 %84
+         %86 = OpLoad %int %85
+         %87 = OpLoad %int %pivot
+         %88 = OpSLessThanEqual %bool %86 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+         %91 = OpLoad %int %i_1
+         %92 = OpIAdd %int %91 %int_1
+               OpStore %i_1 %92
+         %93 = OpLoad %int %i_1
+               OpStore %param %93
+         %94 = OpLoad %int %j_1
+               OpStore %param_1 %94
+         %95 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %89
+         %89 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+         %98 = OpLoad %int %j_1
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %j_1 %99
+               OpBranch %71
+         %72 = OpLabel
+        %100 = OpLoad %int %i_1
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %i_1 %101
+        %102 = OpLoad %int %i_1
+               OpStore %param_2 %102
+        %104 = OpLoad %int %h
+               OpStore %param_3 %104
+        %105 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %108 = OpLoad %int %i_1
+               OpReturnValue %108
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %109
+        %111 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %31
+        %h_1 = OpVariable %_ptr_Function_int Function %31
+        %top = OpVariable %_ptr_Function_int Function %31
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %117
+          %p = OpVariable %_ptr_Function_int Function %31
+    %param_4 = OpVariable %_ptr_Function_int Function %31
+    %param_5 = OpVariable %_ptr_Function_int Function %31
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %124 = OpLoad %int %top
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %top %125
+        %126 = OpLoad %int %l_1
+        %127 = OpAccessChain %_ptr_Function_int %stack %125
+               OpStore %127 %126
+        %128 = OpLoad %int %top
+        %129 = OpIAdd %int %128 %int_1
+               OpStore %top %129
+        %130 = OpLoad %int %h_1
+        %131 = OpAccessChain %_ptr_Function_int %stack %129
+               OpStore %131 %130
+               OpBranch %132
+        %132 = OpLabel
+               OpLoopMerge %133 %134 None
+               OpBranch %135
+        %135 = OpLabel
+        %136 = OpLoad %int %top
+        %137 = OpSGreaterThanEqual %bool %136 %int_0
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %140
+        %139 = OpLabel
+               OpBranch %138
+        %140 = OpLabel
+               OpBranch %133
+        %138 = OpLabel
+        %141 = OpLoad %int %top
+        %142 = OpISub %int %141 %int_1
+               OpStore %top %142
+        %143 = OpAccessChain %_ptr_Function_int %stack %141
+        %144 = OpLoad %int %143
+               OpStore %h_1 %144
+        %145 = OpLoad %int %top
+        %146 = OpISub %int %145 %int_1
+               OpStore %top %146
+        %147 = OpAccessChain %_ptr_Function_int %stack %145
+        %148 = OpLoad %int %147
+               OpStore %l_1 %148
+        %149 = OpLoad %int %l_1
+               OpStore %param_4 %149
+        %150 = OpLoad %int %h_1
+               OpStore %param_5 %150
+        %151 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %151
+        %154 = OpLoad %int %p
+        %155 = OpLoad %int %l_1
+        %156 = OpISub %int %154 %int_1
+        %157 = OpSGreaterThan %bool %156 %155
+               OpSelectionMerge %158 None
+               OpBranchConditional %157 %159 %158
+        %159 = OpLabel
+        %160 = OpLoad %int %top
+        %161 = OpIAdd %int %160 %int_1
+               OpStore %top %161
+        %162 = OpLoad %int %l_1
+        %163 = OpAccessChain %_ptr_Function_int %stack %161
+               OpStore %163 %162
+        %164 = OpLoad %int %top
+        %165 = OpIAdd %int %164 %int_1
+               OpStore %top %165
+        %166 = OpLoad %int %p
+        %167 = OpAccessChain %_ptr_Function_int %stack %165
+        %168 = OpISub %int %166 %int_1
+               OpStore %167 %168
+               OpBranch %158
+        %158 = OpLabel
+        %169 = OpLoad %int %p
+        %170 = OpLoad %int %h_1
+        %171 = OpIAdd %int %169 %int_1
+        %172 = OpSLessThan %bool %171 %170
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+        %175 = OpLoad %int %top
+        %176 = OpIAdd %int %175 %int_1
+               OpStore %top %176
+        %177 = OpLoad %int %p
+        %178 = OpAccessChain %_ptr_Function_int %stack %176
+        %179 = OpIAdd %int %177 %int_1
+               OpStore %178 %179
+        %180 = OpLoad %int %top
+        %181 = OpIAdd %int %180 %int_1
+               OpStore %top %181
+        %182 = OpLoad %int %h_1
+        %183 = OpAccessChain %_ptr_Function_int %stack %181
+               OpStore %183 %182
+               OpBranch %173
+        %173 = OpLabel
+               OpBranch %134
+        %134 = OpLabel
+               OpBranch %132
+        %133 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %109
+        %185 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %31
+         %uv = OpVariable %_ptr_Function_v2float Function %189
+      %color = OpVariable %_ptr_Function_v3float Function %193
+               OpStore %i_2 %int_0
+               OpBranch %194
+        %194 = OpLabel
+               OpLoopMerge %195 %196 None
+               OpBranch %197
+        %197 = OpLabel
+        %198 = OpLoad %int %i_2
+        %200 = OpSLessThan %bool %198 %int_10
+               OpSelectionMerge %201 None
+               OpBranchConditional %200 %202 %203
+        %202 = OpLabel
+               OpBranch %201
+        %203 = OpLabel
+               OpBranch %195
+        %201 = OpLabel
+        %204 = OpLoad %int %i_2
+        %205 = OpLoad %int %i_2
+        %206 = OpAccessChain %_ptr_Private_int %obj %uint_0 %204
+        %207 = OpISub %int %int_10 %205
+               OpStore %206 %207
+        %208 = OpLoad %int %i_2
+        %209 = OpLoad %int %i_2
+        %210 = OpAccessChain %_ptr_Private_int %obj %uint_0 %209
+        %211 = OpLoad %int %210
+        %212 = OpLoad %int %i_2
+        %213 = OpAccessChain %_ptr_Private_int %obj %uint_0 %212
+        %214 = OpLoad %int %213
+        %215 = OpAccessChain %_ptr_Private_int %obj %uint_0 %208
+        %216 = OpIMul %int %211 %214
+               OpStore %215 %216
+               OpBranch %196
+        %196 = OpLabel
+        %217 = OpLoad %int %i_2
+        %218 = OpIAdd %int %217 %int_1
+               OpStore %i_2 %218
+               OpBranch %194
+        %195 = OpLabel
+        %219 = OpFunctionCall %void %quicksort_
+        %220 = OpLoad %v4float %gl_FragCoord
+        %222 = OpAccessChain %_ptr_Uniform_v2float %x_32 %uint_0
+        %223 = OpLoad %v2float %222
+        %224 = OpCompositeExtract %float %220 0
+        %225 = OpCompositeExtract %float %220 1
+        %226 = OpCompositeConstruct %v2float %224 %225
+        %227 = OpFDiv %v2float %226 %223
+               OpStore %uv %227
+               OpStore %color %231
+        %232 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %233 = OpLoad %int %232
+        %235 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %236 = OpLoad %float %235
+        %237 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %238 = OpConvertSToF %float %233
+        %239 = OpFAdd %float %236 %238
+               OpStore %237 %239
+        %240 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %241 = OpLoad %float %240
+        %243 = OpFOrdGreaterThan %bool %241 %float_0_25
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+        %246 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %247 = OpLoad %int %246
+        %248 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %249 = OpLoad %float %248
+        %250 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %251 = OpConvertSToF %float %247
+        %252 = OpFAdd %float %249 %251
+               OpStore %250 %252
+               OpBranch %244
+        %244 = OpLabel
+        %253 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %254 = OpLoad %float %253
+        %256 = OpFOrdGreaterThan %bool %254 %float_0_5
+               OpSelectionMerge %257 None
+               OpBranchConditional %256 %258 %257
+        %258 = OpLabel
+        %260 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %261 = OpLoad %int %260
+        %263 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %264 = OpLoad %float %263
+        %265 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %266 = OpConvertSToF %float %261
+        %267 = OpFAdd %float %264 %266
+               OpStore %265 %267
+               OpBranch %257
+        %257 = OpLabel
+        %268 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %269 = OpLoad %float %268
+        %271 = OpFOrdGreaterThan %bool %269 %float_0_75
+               OpSelectionMerge %272 None
+               OpBranchConditional %271 %273 %272
+        %273 = OpLabel
+        %275 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %276 = OpLoad %int %275
+        %278 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %279 = OpLoad %float %278
+        %280 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %281 = OpConvertSToF %float %276
+        %282 = OpFAdd %float %279 %281
+               OpStore %280 %282
+               OpBranch %272
+        %272 = OpLabel
+        %284 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %285 = OpLoad %int %284
+        %286 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %287 = OpLoad %float %286
+        %288 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %289 = OpConvertSToF %float %285
+        %290 = OpFAdd %float %287 %289
+               OpStore %288 %290
+        %291 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %292 = OpLoad %float %291
+        %293 = OpFOrdGreaterThan %bool %292 %float_0_25
+               OpSelectionMerge %294 None
+               OpBranchConditional %293 %295 %294
+        %295 = OpLabel
+        %297 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %298 = OpLoad %int %297
+        %299 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %300 = OpLoad %float %299
+        %301 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %302 = OpConvertSToF %float %298
+        %303 = OpFAdd %float %300 %302
+               OpStore %301 %303
+               OpBranch %294
+        %294 = OpLabel
+        %304 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %305 = OpLoad %float %304
+        %306 = OpFOrdGreaterThan %bool %305 %float_0_5
+               OpSelectionMerge %307 None
+               OpBranchConditional %306 %308 %307
+        %308 = OpLabel
+        %310 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %311 = OpLoad %int %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %313 = OpLoad %float %312
+        %314 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %315 = OpConvertSToF %float %311
+        %316 = OpFAdd %float %313 %315
+               OpStore %314 %316
+               OpBranch %307
+        %307 = OpLabel
+        %317 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %318 = OpLoad %float %317
+        %319 = OpFOrdGreaterThan %bool %318 %float_0_75
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %320
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %324 = OpLoad %int %323
+        %325 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %326 = OpLoad %float %325
+        %327 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %328 = OpConvertSToF %float %324
+        %329 = OpFAdd %float %326 %328
+               OpStore %327 %329
+               OpBranch %320
+        %320 = OpLabel
+        %331 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %332 = OpLoad %int %331
+        %333 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %334 = OpLoad %float %333
+        %335 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %336 = OpConvertSToF %float %332
+        %337 = OpFAdd %float %334 %336
+               OpStore %335 %337
+        %338 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %339 = OpLoad %float %338
+        %340 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %341 = OpLoad %float %340
+        %344 = OpFSub %float %339 %341
+        %342 = OpExtInst %float %343 FAbs %344
+        %345 = OpFOrdLessThan %bool %342 %float_0_25
+               OpSelectionMerge %346 None
+               OpBranchConditional %345 %347 %346
+        %347 = OpLabel
+        %348 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %349 = OpLoad %int %348
+        %350 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %351 = OpLoad %float %350
+        %352 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %353 = OpConvertSToF %float %349
+        %354 = OpFAdd %float %351 %353
+               OpStore %352 %354
+               OpBranch %346
+        %346 = OpLabel
+        %355 = OpLoad %v3float %color
+        %356 = OpExtInst %v3float %343 Normalize %355
+        %357 = OpCompositeExtract %float %356 0
+        %358 = OpCompositeExtract %float %356 1
+        %359 = OpCompositeExtract %float %356 2
+        %360 = OpCompositeConstruct %v4float %357 %358 %359 %float_1
+               OpStore %x_GLF_color %360
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %361
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %365 = OpLabel
+        %366 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %366
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %109
+        %368 = OpLabel
+        %369 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %369
+        %370 = OpFunctionCall %void %main_1
+        %372 = OpLoad %v4float %x_GLF_color
+        %373 = OpCompositeConstruct %main_out %372
+        %371 = OpFunctionCall %void %tint_symbol_3 %373
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..df70a1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,256 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_225 : i32 = *(i);
+  let x_227 : i32 = obj.numbers[x_225];
+  temp = x_227;
+  let x_228 : i32 = *(i);
+  let x_229 : i32 = *(j);
+  let x_231 : i32 = obj.numbers[x_229];
+  obj.numbers[x_228] = x_231;
+  let x_233 : i32 = *(j);
+  let x_234 : i32 = temp;
+  obj.numbers[x_233] = x_234;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_237 : i32 = *(h);
+  let x_239 : i32 = obj.numbers[x_237];
+  pivot = x_239;
+  let x_240 : i32 = *(l);
+  i_1 = (x_240 - 1);
+  let x_242 : i32 = *(l);
+  j_1 = x_242;
+  loop {
+    let x_247 : i32 = j_1;
+    let x_248 : i32 = *(h);
+    if ((x_247 <= (x_248 - 1))) {
+    } else {
+      break;
+    }
+    let x_252 : i32 = j_1;
+    let x_254 : i32 = obj.numbers[x_252];
+    let x_255 : i32 = pivot;
+    if ((x_254 <= x_255)) {
+      let x_259 : i32 = i_1;
+      i_1 = (x_259 + 1);
+      let x_261 : i32 = i_1;
+      param = x_261;
+      let x_262 : i32 = j_1;
+      param_1 = x_262;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_264 : i32 = j_1;
+      j_1 = (x_264 + 1);
+    }
+  }
+  let x_266 : i32 = i_1;
+  i_1 = (x_266 + 1);
+  let x_268 : i32 = i_1;
+  param_2 = x_268;
+  let x_269 : i32 = *(h);
+  param_3 = x_269;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_271 : i32 = i_1;
+  return x_271;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_273 : i32 = top;
+  let x_274 : i32 = (x_273 + 1);
+  top = x_274;
+  let x_275 : i32 = l_1;
+  stack[x_274] = x_275;
+  let x_277 : i32 = top;
+  let x_278 : i32 = (x_277 + 1);
+  top = x_278;
+  let x_279 : i32 = h_1;
+  stack[x_278] = x_279;
+  loop {
+    let x_285 : i32 = top;
+    if ((x_285 >= 0)) {
+    } else {
+      break;
+    }
+    let x_288 : i32 = top;
+    top = (x_288 - 1);
+    let x_291 : i32 = stack[x_288];
+    h_1 = x_291;
+    let x_292 : i32 = top;
+    top = (x_292 - 1);
+    let x_295 : i32 = stack[x_292];
+    l_1 = x_295;
+    let x_296 : i32 = l_1;
+    param_4 = x_296;
+    let x_297 : i32 = h_1;
+    param_5 = x_297;
+    let x_298 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_298;
+    let x_299 : i32 = p;
+    let x_301 : i32 = l_1;
+    if (((x_299 - 1) > x_301)) {
+      let x_305 : i32 = top;
+      let x_306 : i32 = (x_305 + 1);
+      top = x_306;
+      let x_307 : i32 = l_1;
+      stack[x_306] = x_307;
+      let x_309 : i32 = top;
+      let x_310 : i32 = (x_309 + 1);
+      top = x_310;
+      let x_311 : i32 = p;
+      stack[x_310] = (x_311 - 1);
+    }
+    let x_314 : i32 = p;
+    let x_316 : i32 = h_1;
+    if (((x_314 + 1) < x_316)) {
+      let x_320 : i32 = top;
+      let x_321 : i32 = (x_320 + 1);
+      top = x_321;
+      let x_322 : i32 = p;
+      stack[x_321] = (x_322 + 1);
+      let x_325 : i32 = top;
+      let x_326 : i32 = (x_325 + 1);
+      top = x_326;
+      let x_327 : i32 = h_1;
+      stack[x_326] = x_327;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  i_2 = 0;
+  loop {
+    let x_85 : i32 = i_2;
+    if ((x_85 < 10)) {
+    } else {
+      break;
+    }
+    let x_88 : i32 = i_2;
+    let x_89 : i32 = i_2;
+    obj.numbers[x_88] = (10 - x_89);
+    let x_92 : i32 = i_2;
+    let x_93 : i32 = i_2;
+    let x_95 : i32 = obj.numbers[x_93];
+    let x_96 : i32 = i_2;
+    let x_98 : i32 = obj.numbers[x_96];
+    obj.numbers[x_92] = (x_95 * x_98);
+
+    continuing {
+      let x_101 : i32 = i_2;
+      i_2 = (x_101 + 1);
+    }
+  }
+  quicksort_();
+  let x_104 : vec4<f32> = gl_FragCoord;
+  let x_107 : vec2<f32> = x_32.resolution;
+  uv = (vec2<f32>(x_104.x, x_104.y) / x_107);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_110 : i32 = obj.numbers[0];
+  let x_113 : f32 = color.x;
+  color.x = (x_113 + f32(x_110));
+  let x_117 : f32 = uv.x;
+  if ((x_117 > 0.25)) {
+    let x_122 : i32 = obj.numbers[1];
+    let x_125 : f32 = color.x;
+    color.x = (x_125 + f32(x_122));
+  }
+  let x_129 : f32 = uv.x;
+  if ((x_129 > 0.5)) {
+    let x_134 : i32 = obj.numbers[2];
+    let x_137 : f32 = color.y;
+    color.y = (x_137 + f32(x_134));
+  }
+  let x_141 : f32 = uv.x;
+  if ((x_141 > 0.75)) {
+    let x_146 : i32 = obj.numbers[3];
+    let x_149 : f32 = color.z;
+    color.z = (x_149 + f32(x_146));
+  }
+  let x_153 : i32 = obj.numbers[4];
+  let x_156 : f32 = color.y;
+  color.y = (x_156 + f32(x_153));
+  let x_160 : f32 = uv.y;
+  if ((x_160 > 0.25)) {
+    let x_165 : i32 = obj.numbers[5];
+    let x_168 : f32 = color.x;
+    color.x = (x_168 + f32(x_165));
+  }
+  let x_172 : f32 = uv.y;
+  if ((x_172 > 0.5)) {
+    let x_177 : i32 = obj.numbers[6];
+    let x_180 : f32 = color.y;
+    color.y = (x_180 + f32(x_177));
+  }
+  let x_184 : f32 = uv.y;
+  if ((x_184 > 0.75)) {
+    let x_189 : i32 = obj.numbers[7];
+    let x_192 : f32 = color.z;
+    color.z = (x_192 + f32(x_189));
+  }
+  let x_196 : i32 = obj.numbers[8];
+  let x_199 : f32 = color.z;
+  color.z = (x_199 + f32(x_196));
+  let x_203 : f32 = uv.x;
+  let x_205 : f32 = uv.y;
+  if ((abs((x_203 - x_205)) < 0.25)) {
+    let x_212 : i32 = obj.numbers[9];
+    let x_215 : f32 = color.x;
+    color.x = (x_215 + f32(x_212));
+  }
+  let x_218 : vec3<f32> = color;
+  let x_219 : vec3<f32> = normalize(x_218);
+  x_GLF_color = vec4<f32>(x_219.x, x_219.y, x_219.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
new file mode 100644
index 0000000..df70a1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
@@ -0,0 +1,256 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_225 : i32 = *(i);
+  let x_227 : i32 = obj.numbers[x_225];
+  temp = x_227;
+  let x_228 : i32 = *(i);
+  let x_229 : i32 = *(j);
+  let x_231 : i32 = obj.numbers[x_229];
+  obj.numbers[x_228] = x_231;
+  let x_233 : i32 = *(j);
+  let x_234 : i32 = temp;
+  obj.numbers[x_233] = x_234;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_237 : i32 = *(h);
+  let x_239 : i32 = obj.numbers[x_237];
+  pivot = x_239;
+  let x_240 : i32 = *(l);
+  i_1 = (x_240 - 1);
+  let x_242 : i32 = *(l);
+  j_1 = x_242;
+  loop {
+    let x_247 : i32 = j_1;
+    let x_248 : i32 = *(h);
+    if ((x_247 <= (x_248 - 1))) {
+    } else {
+      break;
+    }
+    let x_252 : i32 = j_1;
+    let x_254 : i32 = obj.numbers[x_252];
+    let x_255 : i32 = pivot;
+    if ((x_254 <= x_255)) {
+      let x_259 : i32 = i_1;
+      i_1 = (x_259 + 1);
+      let x_261 : i32 = i_1;
+      param = x_261;
+      let x_262 : i32 = j_1;
+      param_1 = x_262;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_264 : i32 = j_1;
+      j_1 = (x_264 + 1);
+    }
+  }
+  let x_266 : i32 = i_1;
+  i_1 = (x_266 + 1);
+  let x_268 : i32 = i_1;
+  param_2 = x_268;
+  let x_269 : i32 = *(h);
+  param_3 = x_269;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_271 : i32 = i_1;
+  return x_271;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_273 : i32 = top;
+  let x_274 : i32 = (x_273 + 1);
+  top = x_274;
+  let x_275 : i32 = l_1;
+  stack[x_274] = x_275;
+  let x_277 : i32 = top;
+  let x_278 : i32 = (x_277 + 1);
+  top = x_278;
+  let x_279 : i32 = h_1;
+  stack[x_278] = x_279;
+  loop {
+    let x_285 : i32 = top;
+    if ((x_285 >= 0)) {
+    } else {
+      break;
+    }
+    let x_288 : i32 = top;
+    top = (x_288 - 1);
+    let x_291 : i32 = stack[x_288];
+    h_1 = x_291;
+    let x_292 : i32 = top;
+    top = (x_292 - 1);
+    let x_295 : i32 = stack[x_292];
+    l_1 = x_295;
+    let x_296 : i32 = l_1;
+    param_4 = x_296;
+    let x_297 : i32 = h_1;
+    param_5 = x_297;
+    let x_298 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_298;
+    let x_299 : i32 = p;
+    let x_301 : i32 = l_1;
+    if (((x_299 - 1) > x_301)) {
+      let x_305 : i32 = top;
+      let x_306 : i32 = (x_305 + 1);
+      top = x_306;
+      let x_307 : i32 = l_1;
+      stack[x_306] = x_307;
+      let x_309 : i32 = top;
+      let x_310 : i32 = (x_309 + 1);
+      top = x_310;
+      let x_311 : i32 = p;
+      stack[x_310] = (x_311 - 1);
+    }
+    let x_314 : i32 = p;
+    let x_316 : i32 = h_1;
+    if (((x_314 + 1) < x_316)) {
+      let x_320 : i32 = top;
+      let x_321 : i32 = (x_320 + 1);
+      top = x_321;
+      let x_322 : i32 = p;
+      stack[x_321] = (x_322 + 1);
+      let x_325 : i32 = top;
+      let x_326 : i32 = (x_325 + 1);
+      top = x_326;
+      let x_327 : i32 = h_1;
+      stack[x_326] = x_327;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  i_2 = 0;
+  loop {
+    let x_85 : i32 = i_2;
+    if ((x_85 < 10)) {
+    } else {
+      break;
+    }
+    let x_88 : i32 = i_2;
+    let x_89 : i32 = i_2;
+    obj.numbers[x_88] = (10 - x_89);
+    let x_92 : i32 = i_2;
+    let x_93 : i32 = i_2;
+    let x_95 : i32 = obj.numbers[x_93];
+    let x_96 : i32 = i_2;
+    let x_98 : i32 = obj.numbers[x_96];
+    obj.numbers[x_92] = (x_95 * x_98);
+
+    continuing {
+      let x_101 : i32 = i_2;
+      i_2 = (x_101 + 1);
+    }
+  }
+  quicksort_();
+  let x_104 : vec4<f32> = gl_FragCoord;
+  let x_107 : vec2<f32> = x_32.resolution;
+  uv = (vec2<f32>(x_104.x, x_104.y) / x_107);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_110 : i32 = obj.numbers[0];
+  let x_113 : f32 = color.x;
+  color.x = (x_113 + f32(x_110));
+  let x_117 : f32 = uv.x;
+  if ((x_117 > 0.25)) {
+    let x_122 : i32 = obj.numbers[1];
+    let x_125 : f32 = color.x;
+    color.x = (x_125 + f32(x_122));
+  }
+  let x_129 : f32 = uv.x;
+  if ((x_129 > 0.5)) {
+    let x_134 : i32 = obj.numbers[2];
+    let x_137 : f32 = color.y;
+    color.y = (x_137 + f32(x_134));
+  }
+  let x_141 : f32 = uv.x;
+  if ((x_141 > 0.75)) {
+    let x_146 : i32 = obj.numbers[3];
+    let x_149 : f32 = color.z;
+    color.z = (x_149 + f32(x_146));
+  }
+  let x_153 : i32 = obj.numbers[4];
+  let x_156 : f32 = color.y;
+  color.y = (x_156 + f32(x_153));
+  let x_160 : f32 = uv.y;
+  if ((x_160 > 0.25)) {
+    let x_165 : i32 = obj.numbers[5];
+    let x_168 : f32 = color.x;
+    color.x = (x_168 + f32(x_165));
+  }
+  let x_172 : f32 = uv.y;
+  if ((x_172 > 0.5)) {
+    let x_177 : i32 = obj.numbers[6];
+    let x_180 : f32 = color.y;
+    color.y = (x_180 + f32(x_177));
+  }
+  let x_184 : f32 = uv.y;
+  if ((x_184 > 0.75)) {
+    let x_189 : i32 = obj.numbers[7];
+    let x_192 : f32 = color.z;
+    color.z = (x_192 + f32(x_189));
+  }
+  let x_196 : i32 = obj.numbers[8];
+  let x_199 : f32 = color.z;
+  color.z = (x_199 + f32(x_196));
+  let x_203 : f32 = uv.x;
+  let x_205 : f32 = uv.y;
+  if ((abs((x_203 - x_205)) < 0.25)) {
+    let x_212 : i32 = obj.numbers[9];
+    let x_215 : f32 = color.x;
+    color.x = (x_215 + f32(x_212));
+  }
+  let x_218 : vec3<f32> = color;
+  let x_219 : vec3<f32> = normalize(x_218);
+  x_GLF_color = vec4<f32>(x_219.x, x_219.y, x_219.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..18cfa06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,214 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_32 : register(b0, space0) {
+  uint4 x_32[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_225 = i;
+  const int x_227 = obj.numbers[x_225];
+  temp = x_227;
+  const int x_228 = i;
+  const int x_229 = j;
+  const int x_231 = obj.numbers[x_229];
+  obj.numbers[x_228] = x_231;
+  const int x_233 = j;
+  obj.numbers[x_233] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_237 = h;
+  const int x_239 = obj.numbers[x_237];
+  pivot = x_239;
+  const int x_240 = l;
+  i_1 = (x_240 - 1);
+  const int x_242 = l;
+  j_1 = x_242;
+  while (true) {
+    const int x_247 = j_1;
+    const int x_248 = h;
+    if ((x_247 <= (x_248 - 1))) {
+    } else {
+      break;
+    }
+    const int x_254 = obj.numbers[j_1];
+    if ((x_254 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  i_1 = (i_1 + 1);
+  param_2 = i_1;
+  const int x_269 = h;
+  param_3 = x_269;
+  swap_i1_i1_(param_2, param_3);
+  return i_1;
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_274 = (top + 1);
+  top = x_274;
+  stack[x_274] = l_1;
+  const int x_278 = (top + 1);
+  top = x_278;
+  stack[x_278] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_288 = top;
+    top = (x_288 - 1);
+    const int x_291 = stack[x_288];
+    h_1 = x_291;
+    const int x_292 = top;
+    top = (x_292 - 1);
+    const int x_295 = stack[x_292];
+    l_1 = x_295;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_298 = performPartition_i1_i1_(param_4, param_5);
+    p = x_298;
+    if (((p - 1) > l_1)) {
+      const int x_306 = (top + 1);
+      top = x_306;
+      stack[x_306] = l_1;
+      const int x_310 = (top + 1);
+      top = x_310;
+      stack[x_310] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_321 = (top + 1);
+      top = x_321;
+      stack[x_321] = (p + 1);
+      const int x_326 = (top + 1);
+      top = x_326;
+      stack[x_326] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_92 = i_2;
+      const int x_95 = obj.numbers[i_2];
+      const int x_98 = obj.numbers[i_2];
+      obj.numbers[x_92] = (x_95 * x_98);
+    }
+  }
+  quicksort_();
+  const float4 x_104 = gl_FragCoord;
+  const float2 x_107 = asfloat(x_32[0].xy);
+  uv = (float2(x_104.x, x_104.y) / x_107);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_110 = obj.numbers[0];
+  const float x_113 = color.x;
+  color.x = (x_113 + float(x_110));
+  const float x_117 = uv.x;
+  if ((x_117 > 0.25f)) {
+    const int x_122 = obj.numbers[1];
+    const float x_125 = color.x;
+    color.x = (x_125 + float(x_122));
+  }
+  const float x_129 = uv.x;
+  if ((x_129 > 0.5f)) {
+    const int x_134 = obj.numbers[2];
+    const float x_137 = color.y;
+    color.y = (x_137 + float(x_134));
+  }
+  const float x_141 = uv.x;
+  if ((x_141 > 0.75f)) {
+    const int x_146 = obj.numbers[3];
+    const float x_149 = color.z;
+    color.z = (x_149 + float(x_146));
+  }
+  const int x_153 = obj.numbers[4];
+  const float x_156 = color.y;
+  color.y = (x_156 + float(x_153));
+  const float x_160 = uv.y;
+  if ((x_160 > 0.25f)) {
+    const int x_165 = obj.numbers[5];
+    const float x_168 = color.x;
+    color.x = (x_168 + float(x_165));
+  }
+  const float x_172 = uv.y;
+  if ((x_172 > 0.5f)) {
+    const int x_177 = obj.numbers[6];
+    const float x_180 = color.y;
+    color.y = (x_180 + float(x_177));
+  }
+  const float x_184 = uv.y;
+  if ((x_184 > 0.75f)) {
+    const int x_189 = obj.numbers[7];
+    const float x_192 = color.z;
+    color.z = (x_192 + float(x_189));
+  }
+  const int x_196 = obj.numbers[8];
+  const float x_199 = color.z;
+  color.z = (x_199 + float(x_196));
+  const float x_203 = uv.x;
+  const float x_205 = uv.y;
+  if ((abs((x_203 - x_205)) < 0.25f)) {
+    const int x_212 = obj.numbers[9];
+    const float x_215 = color.x;
+    color.x = (x_215 + float(x_212));
+  }
+  const float3 x_219 = normalize(color);
+  x_GLF_color = float4(x_219.x, x_219.y, x_219.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..7cd8892
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.msl
@@ -0,0 +1,256 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_5) {
+  int temp = 0;
+  int const x_225 = *(i);
+  int const x_227 = (*(tint_symbol_5)).numbers.arr[x_225];
+  temp = x_227;
+  int const x_228 = *(i);
+  int const x_229 = *(j);
+  int const x_231 = (*(tint_symbol_5)).numbers.arr[x_229];
+  (*(tint_symbol_5)).numbers.arr[x_228] = x_231;
+  int const x_233 = *(j);
+  int const x_234 = temp;
+  (*(tint_symbol_5)).numbers.arr[x_233] = x_234;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_6) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_237 = *(h);
+  int const x_239 = (*(tint_symbol_6)).numbers.arr[x_237];
+  pivot = x_239;
+  int const x_240 = *(l);
+  i_1 = (x_240 - 1);
+  int const x_242 = *(l);
+  j_1 = x_242;
+  while (true) {
+    int const x_247 = j_1;
+    int const x_248 = *(h);
+    if ((x_247 <= (x_248 - 1))) {
+    } else {
+      break;
+    }
+    int const x_252 = j_1;
+    int const x_254 = (*(tint_symbol_6)).numbers.arr[x_252];
+    int const x_255 = pivot;
+    if ((x_254 <= x_255)) {
+      int const x_259 = i_1;
+      i_1 = (x_259 + 1);
+      int const x_261 = i_1;
+      param = x_261;
+      int const x_262 = j_1;
+      param_1 = x_262;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_6);
+    }
+    {
+      int const x_264 = j_1;
+      j_1 = (x_264 + 1);
+    }
+  }
+  int const x_266 = i_1;
+  i_1 = (x_266 + 1);
+  int const x_268 = i_1;
+  param_2 = x_268;
+  int const x_269 = *(h);
+  param_3 = x_269;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_6);
+  int const x_271 = i_1;
+  return x_271;
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_7) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_273 = top;
+  int const x_274 = (x_273 + 1);
+  top = x_274;
+  int const x_275 = l_1;
+  stack.arr[x_274] = x_275;
+  int const x_277 = top;
+  int const x_278 = (x_277 + 1);
+  top = x_278;
+  int const x_279 = h_1;
+  stack.arr[x_278] = x_279;
+  while (true) {
+    int const x_285 = top;
+    if ((x_285 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_288 = top;
+    top = (x_288 - 1);
+    int const x_291 = stack.arr[x_288];
+    h_1 = x_291;
+    int const x_292 = top;
+    top = (x_292 - 1);
+    int const x_295 = stack.arr[x_292];
+    l_1 = x_295;
+    int const x_296 = l_1;
+    param_4 = x_296;
+    int const x_297 = h_1;
+    param_5 = x_297;
+    int const x_298 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_7);
+    p = x_298;
+    int const x_299 = p;
+    int const x_301 = l_1;
+    if (((x_299 - 1) > x_301)) {
+      int const x_305 = top;
+      int const x_306 = (x_305 + 1);
+      top = x_306;
+      int const x_307 = l_1;
+      stack.arr[x_306] = x_307;
+      int const x_309 = top;
+      int const x_310 = (x_309 + 1);
+      top = x_310;
+      int const x_311 = p;
+      stack.arr[x_310] = (x_311 - 1);
+    }
+    int const x_314 = p;
+    int const x_316 = h_1;
+    if (((x_314 + 1) < x_316)) {
+      int const x_320 = top;
+      int const x_321 = (x_320 + 1);
+      top = x_321;
+      int const x_322 = p;
+      stack.arr[x_321] = (x_322 + 1);
+      int const x_325 = top;
+      int const x_326 = (x_325 + 1);
+      top = x_326;
+      int const x_327 = h_1;
+      stack.arr[x_326] = x_327;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_32, thread QuicksortObject* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  i_2 = 0;
+  while (true) {
+    int const x_85 = i_2;
+    if ((x_85 < 10)) {
+    } else {
+      break;
+    }
+    int const x_88 = i_2;
+    int const x_89 = i_2;
+    (*(tint_symbol_8)).numbers.arr[x_88] = (10 - x_89);
+    int const x_92 = i_2;
+    int const x_93 = i_2;
+    int const x_95 = (*(tint_symbol_8)).numbers.arr[x_93];
+    int const x_96 = i_2;
+    int const x_98 = (*(tint_symbol_8)).numbers.arr[x_96];
+    (*(tint_symbol_8)).numbers.arr[x_92] = (x_95 * x_98);
+    {
+      int const x_101 = i_2;
+      i_2 = (x_101 + 1);
+    }
+  }
+  quicksort_(tint_symbol_8);
+  float4 const x_104 = *(tint_symbol_9);
+  float2 const x_107 = x_32.resolution;
+  uv = (float2(x_104.x, x_104.y) / x_107);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_110 = (*(tint_symbol_8)).numbers.arr[0];
+  float const x_113 = color.x;
+  color.x = (x_113 + float(x_110));
+  float const x_117 = uv.x;
+  if ((x_117 > 0.25f)) {
+    int const x_122 = (*(tint_symbol_8)).numbers.arr[1];
+    float const x_125 = color.x;
+    color.x = (x_125 + float(x_122));
+  }
+  float const x_129 = uv.x;
+  if ((x_129 > 0.5f)) {
+    int const x_134 = (*(tint_symbol_8)).numbers.arr[2];
+    float const x_137 = color.y;
+    color.y = (x_137 + float(x_134));
+  }
+  float const x_141 = uv.x;
+  if ((x_141 > 0.75f)) {
+    int const x_146 = (*(tint_symbol_8)).numbers.arr[3];
+    float const x_149 = color.z;
+    color.z = (x_149 + float(x_146));
+  }
+  int const x_153 = (*(tint_symbol_8)).numbers.arr[4];
+  float const x_156 = color.y;
+  color.y = (x_156 + float(x_153));
+  float const x_160 = uv.y;
+  if ((x_160 > 0.25f)) {
+    int const x_165 = (*(tint_symbol_8)).numbers.arr[5];
+    float const x_168 = color.x;
+    color.x = (x_168 + float(x_165));
+  }
+  float const x_172 = uv.y;
+  if ((x_172 > 0.5f)) {
+    int const x_177 = (*(tint_symbol_8)).numbers.arr[6];
+    float const x_180 = color.y;
+    color.y = (x_180 + float(x_177));
+  }
+  float const x_184 = uv.y;
+  if ((x_184 > 0.75f)) {
+    int const x_189 = (*(tint_symbol_8)).numbers.arr[7];
+    float const x_192 = color.z;
+    color.z = (x_192 + float(x_189));
+  }
+  int const x_196 = (*(tint_symbol_8)).numbers.arr[8];
+  float const x_199 = color.z;
+  color.z = (x_199 + float(x_196));
+  float const x_203 = uv.x;
+  float const x_205 = uv.y;
+  if ((fabs((x_203 - x_205)) < 0.25f)) {
+    int const x_212 = (*(tint_symbol_8)).numbers.arr[9];
+    float const x_215 = color.x;
+    color.x = (x_215 + float(x_212));
+  }
+  float3 const x_218 = color;
+  float3 const x_219 = normalize(x_218);
+  *(tint_symbol_10) = float4(x_219.x, x_219.y, x_219.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_32 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread QuicksortObject tint_symbol_12 = {};
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_32, &(tint_symbol_12), &(tint_symbol_11), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..dfd34c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,541 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 374
+; Schema: 0
+               OpCapability Shader
+        %343 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_32 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %31 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %49 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %109 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %117 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %189 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %193 = OpConstantNull %v3float
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %231 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float
+        %361 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %23
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %29 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %31
+         %33 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Private_int %obj %uint_0 %33
+         %37 = OpLoad %int %36
+               OpStore %temp %37
+         %39 = OpLoad %int %i
+         %41 = OpLoad %int %j
+         %42 = OpAccessChain %_ptr_Private_int %obj %uint_0 %41
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Private_int %obj %uint_0 %39
+               OpStore %44 %43
+         %46 = OpLoad %int %j
+         %47 = OpLoad %int %temp
+         %48 = OpAccessChain %_ptr_Private_int %obj %uint_0 %46
+               OpStore %48 %47
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %49
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %53 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %31
+        %i_1 = OpVariable %_ptr_Function_int Function %31
+        %j_1 = OpVariable %_ptr_Function_int Function %31
+      %param = OpVariable %_ptr_Function_int Function %31
+    %param_1 = OpVariable %_ptr_Function_int Function %31
+    %param_2 = OpVariable %_ptr_Function_int Function %31
+    %param_3 = OpVariable %_ptr_Function_int Function %31
+         %62 = OpLoad %int %h
+         %63 = OpAccessChain %_ptr_Private_int %obj %uint_0 %62
+         %64 = OpLoad %int %63
+               OpStore %pivot %64
+         %66 = OpLoad %int %l
+         %68 = OpISub %int %66 %int_1
+               OpStore %i_1 %68
+         %70 = OpLoad %int %l
+               OpStore %j_1 %70
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %j_1
+         %77 = OpLoad %int %h
+         %78 = OpISub %int %77 %int_1
+         %79 = OpSLessThanEqual %bool %75 %78
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %72
+         %81 = OpLabel
+         %84 = OpLoad %int %j_1
+         %85 = OpAccessChain %_ptr_Private_int %obj %uint_0 %84
+         %86 = OpLoad %int %85
+         %87 = OpLoad %int %pivot
+         %88 = OpSLessThanEqual %bool %86 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+         %91 = OpLoad %int %i_1
+         %92 = OpIAdd %int %91 %int_1
+               OpStore %i_1 %92
+         %93 = OpLoad %int %i_1
+               OpStore %param %93
+         %94 = OpLoad %int %j_1
+               OpStore %param_1 %94
+         %95 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %89
+         %89 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+         %98 = OpLoad %int %j_1
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %j_1 %99
+               OpBranch %71
+         %72 = OpLabel
+        %100 = OpLoad %int %i_1
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %i_1 %101
+        %102 = OpLoad %int %i_1
+               OpStore %param_2 %102
+        %104 = OpLoad %int %h
+               OpStore %param_3 %104
+        %105 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %108 = OpLoad %int %i_1
+               OpReturnValue %108
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %109
+        %111 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %31
+        %h_1 = OpVariable %_ptr_Function_int Function %31
+        %top = OpVariable %_ptr_Function_int Function %31
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %117
+          %p = OpVariable %_ptr_Function_int Function %31
+    %param_4 = OpVariable %_ptr_Function_int Function %31
+    %param_5 = OpVariable %_ptr_Function_int Function %31
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %124 = OpLoad %int %top
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %top %125
+        %126 = OpLoad %int %l_1
+        %127 = OpAccessChain %_ptr_Function_int %stack %125
+               OpStore %127 %126
+        %128 = OpLoad %int %top
+        %129 = OpIAdd %int %128 %int_1
+               OpStore %top %129
+        %130 = OpLoad %int %h_1
+        %131 = OpAccessChain %_ptr_Function_int %stack %129
+               OpStore %131 %130
+               OpBranch %132
+        %132 = OpLabel
+               OpLoopMerge %133 %134 None
+               OpBranch %135
+        %135 = OpLabel
+        %136 = OpLoad %int %top
+        %137 = OpSGreaterThanEqual %bool %136 %int_0
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %140
+        %139 = OpLabel
+               OpBranch %138
+        %140 = OpLabel
+               OpBranch %133
+        %138 = OpLabel
+        %141 = OpLoad %int %top
+        %142 = OpISub %int %141 %int_1
+               OpStore %top %142
+        %143 = OpAccessChain %_ptr_Function_int %stack %141
+        %144 = OpLoad %int %143
+               OpStore %h_1 %144
+        %145 = OpLoad %int %top
+        %146 = OpISub %int %145 %int_1
+               OpStore %top %146
+        %147 = OpAccessChain %_ptr_Function_int %stack %145
+        %148 = OpLoad %int %147
+               OpStore %l_1 %148
+        %149 = OpLoad %int %l_1
+               OpStore %param_4 %149
+        %150 = OpLoad %int %h_1
+               OpStore %param_5 %150
+        %151 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %151
+        %154 = OpLoad %int %p
+        %155 = OpLoad %int %l_1
+        %156 = OpISub %int %154 %int_1
+        %157 = OpSGreaterThan %bool %156 %155
+               OpSelectionMerge %158 None
+               OpBranchConditional %157 %159 %158
+        %159 = OpLabel
+        %160 = OpLoad %int %top
+        %161 = OpIAdd %int %160 %int_1
+               OpStore %top %161
+        %162 = OpLoad %int %l_1
+        %163 = OpAccessChain %_ptr_Function_int %stack %161
+               OpStore %163 %162
+        %164 = OpLoad %int %top
+        %165 = OpIAdd %int %164 %int_1
+               OpStore %top %165
+        %166 = OpLoad %int %p
+        %167 = OpAccessChain %_ptr_Function_int %stack %165
+        %168 = OpISub %int %166 %int_1
+               OpStore %167 %168
+               OpBranch %158
+        %158 = OpLabel
+        %169 = OpLoad %int %p
+        %170 = OpLoad %int %h_1
+        %171 = OpIAdd %int %169 %int_1
+        %172 = OpSLessThan %bool %171 %170
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+        %175 = OpLoad %int %top
+        %176 = OpIAdd %int %175 %int_1
+               OpStore %top %176
+        %177 = OpLoad %int %p
+        %178 = OpAccessChain %_ptr_Function_int %stack %176
+        %179 = OpIAdd %int %177 %int_1
+               OpStore %178 %179
+        %180 = OpLoad %int %top
+        %181 = OpIAdd %int %180 %int_1
+               OpStore %top %181
+        %182 = OpLoad %int %h_1
+        %183 = OpAccessChain %_ptr_Function_int %stack %181
+               OpStore %183 %182
+               OpBranch %173
+        %173 = OpLabel
+               OpBranch %134
+        %134 = OpLabel
+               OpBranch %132
+        %133 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %109
+        %185 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %31
+         %uv = OpVariable %_ptr_Function_v2float Function %189
+      %color = OpVariable %_ptr_Function_v3float Function %193
+               OpStore %i_2 %int_0
+               OpBranch %194
+        %194 = OpLabel
+               OpLoopMerge %195 %196 None
+               OpBranch %197
+        %197 = OpLabel
+        %198 = OpLoad %int %i_2
+        %200 = OpSLessThan %bool %198 %int_10
+               OpSelectionMerge %201 None
+               OpBranchConditional %200 %202 %203
+        %202 = OpLabel
+               OpBranch %201
+        %203 = OpLabel
+               OpBranch %195
+        %201 = OpLabel
+        %204 = OpLoad %int %i_2
+        %205 = OpLoad %int %i_2
+        %206 = OpAccessChain %_ptr_Private_int %obj %uint_0 %204
+        %207 = OpISub %int %int_10 %205
+               OpStore %206 %207
+        %208 = OpLoad %int %i_2
+        %209 = OpLoad %int %i_2
+        %210 = OpAccessChain %_ptr_Private_int %obj %uint_0 %209
+        %211 = OpLoad %int %210
+        %212 = OpLoad %int %i_2
+        %213 = OpAccessChain %_ptr_Private_int %obj %uint_0 %212
+        %214 = OpLoad %int %213
+        %215 = OpAccessChain %_ptr_Private_int %obj %uint_0 %208
+        %216 = OpIMul %int %211 %214
+               OpStore %215 %216
+               OpBranch %196
+        %196 = OpLabel
+        %217 = OpLoad %int %i_2
+        %218 = OpIAdd %int %217 %int_1
+               OpStore %i_2 %218
+               OpBranch %194
+        %195 = OpLabel
+        %219 = OpFunctionCall %void %quicksort_
+        %220 = OpLoad %v4float %gl_FragCoord
+        %222 = OpAccessChain %_ptr_Uniform_v2float %x_32 %uint_0
+        %223 = OpLoad %v2float %222
+        %224 = OpCompositeExtract %float %220 0
+        %225 = OpCompositeExtract %float %220 1
+        %226 = OpCompositeConstruct %v2float %224 %225
+        %227 = OpFDiv %v2float %226 %223
+               OpStore %uv %227
+               OpStore %color %231
+        %232 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %233 = OpLoad %int %232
+        %235 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %236 = OpLoad %float %235
+        %237 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %238 = OpConvertSToF %float %233
+        %239 = OpFAdd %float %236 %238
+               OpStore %237 %239
+        %240 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %241 = OpLoad %float %240
+        %243 = OpFOrdGreaterThan %bool %241 %float_0_25
+               OpSelectionMerge %244 None
+               OpBranchConditional %243 %245 %244
+        %245 = OpLabel
+        %246 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %247 = OpLoad %int %246
+        %248 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %249 = OpLoad %float %248
+        %250 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %251 = OpConvertSToF %float %247
+        %252 = OpFAdd %float %249 %251
+               OpStore %250 %252
+               OpBranch %244
+        %244 = OpLabel
+        %253 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %254 = OpLoad %float %253
+        %256 = OpFOrdGreaterThan %bool %254 %float_0_5
+               OpSelectionMerge %257 None
+               OpBranchConditional %256 %258 %257
+        %258 = OpLabel
+        %260 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %261 = OpLoad %int %260
+        %263 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %264 = OpLoad %float %263
+        %265 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %266 = OpConvertSToF %float %261
+        %267 = OpFAdd %float %264 %266
+               OpStore %265 %267
+               OpBranch %257
+        %257 = OpLabel
+        %268 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %269 = OpLoad %float %268
+        %271 = OpFOrdGreaterThan %bool %269 %float_0_75
+               OpSelectionMerge %272 None
+               OpBranchConditional %271 %273 %272
+        %273 = OpLabel
+        %275 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %276 = OpLoad %int %275
+        %278 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %279 = OpLoad %float %278
+        %280 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %281 = OpConvertSToF %float %276
+        %282 = OpFAdd %float %279 %281
+               OpStore %280 %282
+               OpBranch %272
+        %272 = OpLabel
+        %284 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %285 = OpLoad %int %284
+        %286 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %287 = OpLoad %float %286
+        %288 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %289 = OpConvertSToF %float %285
+        %290 = OpFAdd %float %287 %289
+               OpStore %288 %290
+        %291 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %292 = OpLoad %float %291
+        %293 = OpFOrdGreaterThan %bool %292 %float_0_25
+               OpSelectionMerge %294 None
+               OpBranchConditional %293 %295 %294
+        %295 = OpLabel
+        %297 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %298 = OpLoad %int %297
+        %299 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %300 = OpLoad %float %299
+        %301 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %302 = OpConvertSToF %float %298
+        %303 = OpFAdd %float %300 %302
+               OpStore %301 %303
+               OpBranch %294
+        %294 = OpLabel
+        %304 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %305 = OpLoad %float %304
+        %306 = OpFOrdGreaterThan %bool %305 %float_0_5
+               OpSelectionMerge %307 None
+               OpBranchConditional %306 %308 %307
+        %308 = OpLabel
+        %310 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %311 = OpLoad %int %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %313 = OpLoad %float %312
+        %314 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %315 = OpConvertSToF %float %311
+        %316 = OpFAdd %float %313 %315
+               OpStore %314 %316
+               OpBranch %307
+        %307 = OpLabel
+        %317 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %318 = OpLoad %float %317
+        %319 = OpFOrdGreaterThan %bool %318 %float_0_75
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %320
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %324 = OpLoad %int %323
+        %325 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %326 = OpLoad %float %325
+        %327 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %328 = OpConvertSToF %float %324
+        %329 = OpFAdd %float %326 %328
+               OpStore %327 %329
+               OpBranch %320
+        %320 = OpLabel
+        %331 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %332 = OpLoad %int %331
+        %333 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %334 = OpLoad %float %333
+        %335 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %336 = OpConvertSToF %float %332
+        %337 = OpFAdd %float %334 %336
+               OpStore %335 %337
+        %338 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %339 = OpLoad %float %338
+        %340 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %341 = OpLoad %float %340
+        %344 = OpFSub %float %339 %341
+        %342 = OpExtInst %float %343 FAbs %344
+        %345 = OpFOrdLessThan %bool %342 %float_0_25
+               OpSelectionMerge %346 None
+               OpBranchConditional %345 %347 %346
+        %347 = OpLabel
+        %348 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %349 = OpLoad %int %348
+        %350 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %351 = OpLoad %float %350
+        %352 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %353 = OpConvertSToF %float %349
+        %354 = OpFAdd %float %351 %353
+               OpStore %352 %354
+               OpBranch %346
+        %346 = OpLabel
+        %355 = OpLoad %v3float %color
+        %356 = OpExtInst %v3float %343 Normalize %355
+        %357 = OpCompositeExtract %float %356 0
+        %358 = OpCompositeExtract %float %356 1
+        %359 = OpCompositeExtract %float %356 2
+        %360 = OpCompositeConstruct %v4float %357 %358 %359 %float_1
+               OpStore %x_GLF_color %360
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %361
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %365 = OpLabel
+        %366 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %366
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %109
+        %368 = OpLabel
+        %369 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %369
+        %370 = OpFunctionCall %void %main_1
+        %372 = OpLoad %v4float %x_GLF_color
+        %373 = OpCompositeConstruct %main_out %372
+        %371 = OpFunctionCall %void %tint_symbol_3 %373
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..df70a1d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,256 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_225 : i32 = *(i);
+  let x_227 : i32 = obj.numbers[x_225];
+  temp = x_227;
+  let x_228 : i32 = *(i);
+  let x_229 : i32 = *(j);
+  let x_231 : i32 = obj.numbers[x_229];
+  obj.numbers[x_228] = x_231;
+  let x_233 : i32 = *(j);
+  let x_234 : i32 = temp;
+  obj.numbers[x_233] = x_234;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_237 : i32 = *(h);
+  let x_239 : i32 = obj.numbers[x_237];
+  pivot = x_239;
+  let x_240 : i32 = *(l);
+  i_1 = (x_240 - 1);
+  let x_242 : i32 = *(l);
+  j_1 = x_242;
+  loop {
+    let x_247 : i32 = j_1;
+    let x_248 : i32 = *(h);
+    if ((x_247 <= (x_248 - 1))) {
+    } else {
+      break;
+    }
+    let x_252 : i32 = j_1;
+    let x_254 : i32 = obj.numbers[x_252];
+    let x_255 : i32 = pivot;
+    if ((x_254 <= x_255)) {
+      let x_259 : i32 = i_1;
+      i_1 = (x_259 + 1);
+      let x_261 : i32 = i_1;
+      param = x_261;
+      let x_262 : i32 = j_1;
+      param_1 = x_262;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_264 : i32 = j_1;
+      j_1 = (x_264 + 1);
+    }
+  }
+  let x_266 : i32 = i_1;
+  i_1 = (x_266 + 1);
+  let x_268 : i32 = i_1;
+  param_2 = x_268;
+  let x_269 : i32 = *(h);
+  param_3 = x_269;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_271 : i32 = i_1;
+  return x_271;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_273 : i32 = top;
+  let x_274 : i32 = (x_273 + 1);
+  top = x_274;
+  let x_275 : i32 = l_1;
+  stack[x_274] = x_275;
+  let x_277 : i32 = top;
+  let x_278 : i32 = (x_277 + 1);
+  top = x_278;
+  let x_279 : i32 = h_1;
+  stack[x_278] = x_279;
+  loop {
+    let x_285 : i32 = top;
+    if ((x_285 >= 0)) {
+    } else {
+      break;
+    }
+    let x_288 : i32 = top;
+    top = (x_288 - 1);
+    let x_291 : i32 = stack[x_288];
+    h_1 = x_291;
+    let x_292 : i32 = top;
+    top = (x_292 - 1);
+    let x_295 : i32 = stack[x_292];
+    l_1 = x_295;
+    let x_296 : i32 = l_1;
+    param_4 = x_296;
+    let x_297 : i32 = h_1;
+    param_5 = x_297;
+    let x_298 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_298;
+    let x_299 : i32 = p;
+    let x_301 : i32 = l_1;
+    if (((x_299 - 1) > x_301)) {
+      let x_305 : i32 = top;
+      let x_306 : i32 = (x_305 + 1);
+      top = x_306;
+      let x_307 : i32 = l_1;
+      stack[x_306] = x_307;
+      let x_309 : i32 = top;
+      let x_310 : i32 = (x_309 + 1);
+      top = x_310;
+      let x_311 : i32 = p;
+      stack[x_310] = (x_311 - 1);
+    }
+    let x_314 : i32 = p;
+    let x_316 : i32 = h_1;
+    if (((x_314 + 1) < x_316)) {
+      let x_320 : i32 = top;
+      let x_321 : i32 = (x_320 + 1);
+      top = x_321;
+      let x_322 : i32 = p;
+      stack[x_321] = (x_322 + 1);
+      let x_325 : i32 = top;
+      let x_326 : i32 = (x_325 + 1);
+      top = x_326;
+      let x_327 : i32 = h_1;
+      stack[x_326] = x_327;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  i_2 = 0;
+  loop {
+    let x_85 : i32 = i_2;
+    if ((x_85 < 10)) {
+    } else {
+      break;
+    }
+    let x_88 : i32 = i_2;
+    let x_89 : i32 = i_2;
+    obj.numbers[x_88] = (10 - x_89);
+    let x_92 : i32 = i_2;
+    let x_93 : i32 = i_2;
+    let x_95 : i32 = obj.numbers[x_93];
+    let x_96 : i32 = i_2;
+    let x_98 : i32 = obj.numbers[x_96];
+    obj.numbers[x_92] = (x_95 * x_98);
+
+    continuing {
+      let x_101 : i32 = i_2;
+      i_2 = (x_101 + 1);
+    }
+  }
+  quicksort_();
+  let x_104 : vec4<f32> = gl_FragCoord;
+  let x_107 : vec2<f32> = x_32.resolution;
+  uv = (vec2<f32>(x_104.x, x_104.y) / x_107);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_110 : i32 = obj.numbers[0];
+  let x_113 : f32 = color.x;
+  color.x = (x_113 + f32(x_110));
+  let x_117 : f32 = uv.x;
+  if ((x_117 > 0.25)) {
+    let x_122 : i32 = obj.numbers[1];
+    let x_125 : f32 = color.x;
+    color.x = (x_125 + f32(x_122));
+  }
+  let x_129 : f32 = uv.x;
+  if ((x_129 > 0.5)) {
+    let x_134 : i32 = obj.numbers[2];
+    let x_137 : f32 = color.y;
+    color.y = (x_137 + f32(x_134));
+  }
+  let x_141 : f32 = uv.x;
+  if ((x_141 > 0.75)) {
+    let x_146 : i32 = obj.numbers[3];
+    let x_149 : f32 = color.z;
+    color.z = (x_149 + f32(x_146));
+  }
+  let x_153 : i32 = obj.numbers[4];
+  let x_156 : f32 = color.y;
+  color.y = (x_156 + f32(x_153));
+  let x_160 : f32 = uv.y;
+  if ((x_160 > 0.25)) {
+    let x_165 : i32 = obj.numbers[5];
+    let x_168 : f32 = color.x;
+    color.x = (x_168 + f32(x_165));
+  }
+  let x_172 : f32 = uv.y;
+  if ((x_172 > 0.5)) {
+    let x_177 : i32 = obj.numbers[6];
+    let x_180 : f32 = color.y;
+    color.y = (x_180 + f32(x_177));
+  }
+  let x_184 : f32 = uv.y;
+  if ((x_184 > 0.75)) {
+    let x_189 : i32 = obj.numbers[7];
+    let x_192 : f32 = color.z;
+    color.z = (x_192 + f32(x_189));
+  }
+  let x_196 : i32 = obj.numbers[8];
+  let x_199 : f32 = color.z;
+  color.z = (x_199 + f32(x_196));
+  let x_203 : f32 = uv.x;
+  let x_205 : f32 = uv.y;
+  if ((abs((x_203 - x_205)) < 0.25)) {
+    let x_212 : i32 = obj.numbers[9];
+    let x_215 : f32 = color.x;
+    color.x = (x_215 + f32(x_212));
+  }
+  let x_218 : vec3<f32> = color;
+  let x_219 : vec3<f32> = normalize(x_218);
+  x_GLF_color = vec4<f32>(x_219.x, x_219.y, x_219.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm
new file mode 100644
index 0000000..10bf636
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm
@@ -0,0 +1,486 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap(i1;i1;"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %quicksort_ "quicksort("
+               OpName %temp "temp"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %pivot "pivot"
+               OpName %i_0 "i"
+               OpName %j_0 "j"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %l_0 "l"
+               OpName %h_0 "h"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %i_1 "i"
+               OpName %uv "uv"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %color "color"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %35 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %38 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+     %int_10 = OpConstant %int 10
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %63 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%mat3v3float = OpTypeMatrix %v3float 3
+    %float_0 = OpConstant %float 0
+         %81 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %82 = OpConstantComposite %mat3v3float %81 %81 %81
+         %83 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %mat3v3float
+       %main = OpFunction %void None %35
+         %84 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function
+         %uv = OpVariable %_ptr_Function_v2float Function
+      %color = OpVariable %_ptr_Function_v3float Function
+               OpStore %i_1 %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %89 = OpLoad %int %i_1
+         %90 = OpSLessThan %bool %89 %int_10
+               OpBranchConditional %90 %91 %86
+         %91 = OpLabel
+         %92 = OpLoad %int %i_1
+         %93 = OpLoad %int %i_1
+         %94 = OpISub %int %int_10 %93
+         %95 = OpAccessChain %_ptr_Private_int %obj %int_0 %92
+               OpStore %95 %94
+         %96 = OpLoad %int %i_1
+         %97 = OpLoad %int %i_1
+         %98 = OpAccessChain %_ptr_Private_int %obj %int_0 %97
+         %99 = OpLoad %int %98
+        %100 = OpLoad %int %i_1
+        %101 = OpAccessChain %_ptr_Private_int %obj %int_0 %100
+        %102 = OpLoad %int %101
+        %103 = OpIMul %int %99 %102
+        %104 = OpAccessChain %_ptr_Private_int %obj %int_0 %96
+               OpStore %104 %103
+               OpBranch %87
+         %87 = OpLabel
+        %105 = OpLoad %int %i_1
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %i_1 %106
+               OpBranch %85
+         %86 = OpLabel
+        %107 = OpFunctionCall %void %quicksort_
+        %108 = OpLoad %v4float %gl_FragCoord
+        %109 = OpVectorShuffle %v2float %108 %108 0 1
+        %110 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %111 = OpLoad %v2float %110
+        %112 = OpFDiv %v2float %109 %111
+               OpStore %uv %112
+               OpStore %color %63
+        %113 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
+        %114 = OpLoad %int %113
+        %115 = OpConvertSToF %float %114
+        %116 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %117 = OpLoad %float %116
+        %118 = OpFAdd %float %117 %115
+        %119 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %119 %118
+        %120 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %121 = OpLoad %float %120
+        %122 = OpFOrdGreaterThan %bool %121 %float_0_25
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %123
+        %124 = OpLabel
+        %125 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %126
+        %128 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %129 = OpLoad %float %128
+        %130 = OpFAdd %float %129 %127
+        %131 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %131 %130
+               OpBranch %123
+        %123 = OpLabel
+        %132 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %133 = OpLoad %float %132
+        %134 = OpFOrdGreaterThan %bool %133 %float_0_5
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %135
+        %136 = OpLabel
+        %137 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
+        %138 = OpLoad %int %137
+        %139 = OpConvertSToF %float %138
+        %140 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %141 = OpLoad %float %140
+        %142 = OpFAdd %float %141 %139
+        %143 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %143 %142
+               OpBranch %135
+        %135 = OpLabel
+        %144 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %145 = OpLoad %float %144
+        %146 = OpFOrdGreaterThan %bool %145 %float_0_75
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
+        %150 = OpLoad %int %149
+        %151 = OpConvertSToF %float %150
+        %152 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %153 = OpLoad %float %152
+        %154 = OpFAdd %float %153 %151
+        %155 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %155 %154
+               OpBranch %147
+        %147 = OpLabel
+        %156 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
+        %157 = OpLoad %int %156
+        %158 = OpConvertSToF %float %157
+        %159 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %160 = OpLoad %float %159
+        %161 = OpFAdd %float %160 %158
+        %162 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %162 %161
+        %163 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %164 = OpLoad %float %163
+        %165 = OpFOrdGreaterThan %bool %164 %float_0_25
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %166
+        %167 = OpLabel
+        %168 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
+        %169 = OpLoad %int %168
+        %170 = OpConvertSToF %float %169
+        %171 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %172 = OpLoad %float %171
+        %173 = OpFAdd %float %172 %170
+        %174 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %174 %173
+               OpBranch %166
+        %166 = OpLabel
+        %175 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %176 = OpLoad %float %175
+        %177 = OpFOrdGreaterThan %bool %176 %float_0_5
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %178
+        %179 = OpLabel
+        %180 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
+        %181 = OpLoad %int %180
+        %182 = OpConvertSToF %float %181
+        %183 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %184 = OpLoad %float %183
+        %185 = OpFAdd %float %184 %182
+        %186 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %186 %185
+               OpBranch %178
+        %178 = OpLabel
+        %187 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %188 = OpLoad %float %187
+        %189 = OpFOrdGreaterThan %bool %188 %float_0_75
+               OpSelectionMerge %190 None
+               OpBranchConditional %189 %191 %190
+        %191 = OpLabel
+        %192 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
+        %193 = OpLoad %int %192
+        %194 = OpConvertSToF %float %193
+        %195 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %196 = OpLoad %float %195
+        %197 = OpFAdd %float %196 %194
+        %198 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %198 %197
+               OpBranch %190
+        %190 = OpLabel
+        %199 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
+        %200 = OpLoad %int %199
+        %201 = OpConvertSToF %float %200
+        %202 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %203 = OpLoad %float %202
+        %204 = OpFAdd %float %203 %201
+        %205 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %205 %204
+        %206 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %207 = OpLoad %float %206
+        %208 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %209 = OpLoad %float %208
+        %210 = OpFSub %float %207 %209
+        %211 = OpExtInst %float %1 FAbs %210
+        %212 = OpFOrdLessThan %bool %211 %float_0_25
+               OpSelectionMerge %213 None
+               OpBranchConditional %212 %214 %213
+        %214 = OpLabel
+        %215 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
+        %216 = OpLoad %int %215
+        %217 = OpConvertSToF %float %216
+        %218 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %219 = OpLoad %float %218
+        %220 = OpFAdd %float %219 %217
+        %221 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %221 %220
+               OpBranch %213
+        %213 = OpLabel
+        %222 = OpLoad %v3float %color
+        %223 = OpExtInst %v3float %1 Normalize %222
+        %224 = OpCompositeExtract %float %223 0
+        %225 = OpCompositeExtract %float %223 1
+        %226 = OpCompositeExtract %float %223 2
+        %227 = OpCompositeConstruct %v4float %224 %225 %226 %float_1
+               OpStore %_GLF_color %227
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %83
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %228 = OpFunctionParameter %mat3v3float
+        %229 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+        %230 = OpLoad %int %i
+        %231 = OpAccessChain %_ptr_Private_int %obj %int_0 %230
+        %232 = OpLoad %int %231
+               OpStore %temp %232
+        %233 = OpLoad %int %i
+        %234 = OpLoad %int %j
+        %235 = OpAccessChain %_ptr_Private_int %obj %int_0 %234
+        %236 = OpLoad %int %235
+        %237 = OpAccessChain %_ptr_Private_int %obj %int_0 %233
+               OpStore %237 %236
+        %238 = OpLoad %int %j
+        %239 = OpLoad %int %temp
+        %240 = OpAccessChain %_ptr_Private_int %obj %int_0 %238
+               OpStore %240 %239
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %38
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %241 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+        %242 = OpLoad %int %h
+        %243 = OpAccessChain %_ptr_Private_int %obj %int_0 %242
+        %244 = OpLoad %int %243
+               OpStore %pivot %244
+        %245 = OpLoad %int %l
+        %246 = OpISub %int %245 %int_1
+               OpStore %i_0 %246
+        %247 = OpLoad %int %l
+               OpStore %j_0 %247
+               OpBranch %248
+        %248 = OpLabel
+               OpLoopMerge %249 %250 None
+               OpBranch %251
+        %251 = OpLabel
+        %252 = OpLoad %int %j_0
+        %253 = OpLoad %int %h
+        %254 = OpISub %int %253 %int_1
+        %255 = OpSLessThanEqual %bool %252 %254
+               OpBranchConditional %255 %256 %249
+        %256 = OpLabel
+        %257 = OpLoad %int %j_0
+        %258 = OpAccessChain %_ptr_Private_int %obj %int_0 %257
+        %259 = OpLoad %int %258
+        %260 = OpLoad %int %pivot
+        %261 = OpSLessThanEqual %bool %259 %260
+               OpSelectionMerge %262 None
+               OpBranchConditional %261 %263 %262
+        %263 = OpLabel
+        %264 = OpLoad %int %i_0
+        %265 = OpIAdd %int %264 %int_1
+               OpStore %i_0 %265
+        %266 = OpLoad %int %i_0
+               OpStore %param %266
+        %267 = OpLoad %int %j_0
+               OpStore %param_0 %267
+        %268 = OpFunctionCall %void %swap_i1_i1_ %param %param_0 %82
+               OpBranch %262
+        %262 = OpLabel
+               OpBranch %250
+        %250 = OpLabel
+        %269 = OpLoad %int %j_0
+        %270 = OpIAdd %int %269 %int_1
+               OpStore %j_0 %270
+               OpBranch %248
+        %249 = OpLabel
+        %271 = OpLoad %int %i_0
+        %272 = OpIAdd %int %271 %int_1
+               OpStore %i_0 %272
+        %273 = OpLoad %int %i_0
+               OpStore %param_1 %273
+        %274 = OpLoad %int %h
+               OpStore %param_2 %274
+        %275 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2 %82
+        %276 = OpLoad %int %i_0
+               OpReturnValue %276
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %35
+        %277 = OpLabel
+        %l_0 = OpVariable %_ptr_Function_int Function
+        %h_0 = OpVariable %_ptr_Function_int Function
+        %top = OpVariable %_ptr_Function_int Function
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %p = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+               OpStore %l_0 %int_0
+               OpStore %h_0 %int_9
+               OpStore %top %int_n1
+        %278 = OpLoad %int %top
+        %279 = OpIAdd %int %278 %int_1
+               OpStore %top %279
+        %280 = OpLoad %int %l_0
+        %281 = OpAccessChain %_ptr_Function_int %stack %279
+               OpStore %281 %280
+        %282 = OpLoad %int %top
+        %283 = OpIAdd %int %282 %int_1
+               OpStore %top %283
+        %284 = OpLoad %int %h_0
+        %285 = OpAccessChain %_ptr_Function_int %stack %283
+               OpStore %285 %284
+               OpBranch %286
+        %286 = OpLabel
+               OpLoopMerge %287 %288 None
+               OpBranch %289
+        %289 = OpLabel
+        %290 = OpLoad %int %top
+        %291 = OpSGreaterThanEqual %bool %290 %int_0
+               OpBranchConditional %291 %292 %287
+        %292 = OpLabel
+        %293 = OpLoad %int %top
+        %294 = OpISub %int %293 %int_1
+               OpStore %top %294
+        %295 = OpAccessChain %_ptr_Function_int %stack %293
+        %296 = OpLoad %int %295
+               OpStore %h_0 %296
+        %297 = OpLoad %int %top
+        %298 = OpISub %int %297 %int_1
+               OpStore %top %298
+        %299 = OpAccessChain %_ptr_Function_int %stack %297
+        %300 = OpLoad %int %299
+               OpStore %l_0 %300
+        %301 = OpLoad %int %l_0
+               OpStore %param_3 %301
+        %302 = OpLoad %int %h_0
+               OpStore %param_4 %302
+        %303 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
+               OpStore %p %303
+        %304 = OpLoad %int %p
+        %305 = OpISub %int %304 %int_1
+        %306 = OpLoad %int %l_0
+        %307 = OpSGreaterThan %bool %305 %306
+               OpSelectionMerge %308 None
+               OpBranchConditional %307 %309 %308
+        %309 = OpLabel
+        %310 = OpLoad %int %top
+        %311 = OpIAdd %int %310 %int_1
+               OpStore %top %311
+        %312 = OpLoad %int %l_0
+        %313 = OpAccessChain %_ptr_Function_int %stack %311
+               OpStore %313 %312
+        %314 = OpLoad %int %top
+        %315 = OpIAdd %int %314 %int_1
+               OpStore %top %315
+        %316 = OpLoad %int %p
+        %317 = OpISub %int %316 %int_1
+        %318 = OpAccessChain %_ptr_Function_int %stack %315
+               OpStore %318 %317
+               OpBranch %308
+        %308 = OpLabel
+        %319 = OpLoad %int %p
+        %320 = OpIAdd %int %319 %int_1
+        %321 = OpLoad %int %h_0
+        %322 = OpSLessThan %bool %320 %321
+               OpSelectionMerge %323 None
+               OpBranchConditional %322 %324 %323
+        %324 = OpLabel
+        %325 = OpLoad %int %top
+        %326 = OpIAdd %int %325 %int_1
+               OpStore %top %326
+        %327 = OpLoad %int %p
+        %328 = OpIAdd %int %327 %int_1
+        %329 = OpAccessChain %_ptr_Function_int %stack %326
+               OpStore %329 %328
+        %330 = OpLoad %int %top
+        %331 = OpIAdd %int %330 %int_1
+               OpStore %top %331
+        %332 = OpLoad %int %h_0
+        %333 = OpAccessChain %_ptr_Function_int %stack %331
+               OpStore %333 %332
+               OpBranch %323
+        %323 = OpLabel
+               OpBranch %288
+        %288 = OpLabel
+               OpBranch %286
+        %287 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..405b040
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.hlsl
@@ -0,0 +1,214 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_32 : register(b0, space0) {
+  uint4 x_32[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j, float3x3 x_228) {
+  int temp = 0;
+  const int x_230 = i;
+  const int x_232 = obj.numbers[x_230];
+  temp = x_232;
+  const int x_233 = i;
+  const int x_234 = j;
+  const int x_236 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  const int x_238 = j;
+  obj.numbers[x_238] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_242 = h;
+  const int x_244 = obj.numbers[x_242];
+  pivot = x_244;
+  const int x_245 = l;
+  i_1 = (x_245 - 1);
+  const int x_247 = l;
+  j_1 = x_247;
+  while (true) {
+    const int x_252 = j_1;
+    const int x_253 = h;
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    const int x_259 = obj.numbers[j_1];
+    if ((x_259 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1, float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)));
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  i_1 = (i_1 + 1);
+  param_2 = i_1;
+  const int x_274 = h;
+  param_3 = x_274;
+  swap_i1_i1_(param_2, param_3, float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)));
+  return i_1;
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_279 = (top + 1);
+  top = x_279;
+  stack[x_279] = l_1;
+  const int x_283 = (top + 1);
+  top = x_283;
+  stack[x_283] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_293 = top;
+    top = (x_293 - 1);
+    const int x_296 = stack[x_293];
+    h_1 = x_296;
+    const int x_297 = top;
+    top = (x_297 - 1);
+    const int x_300 = stack[x_297];
+    l_1 = x_300;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_303 = performPartition_i1_i1_(param_4, param_5);
+    p = x_303;
+    if (((p - 1) > l_1)) {
+      const int x_311 = (top + 1);
+      top = x_311;
+      stack[x_311] = l_1;
+      const int x_315 = (top + 1);
+      top = x_315;
+      stack[x_315] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_326 = (top + 1);
+      top = x_326;
+      stack[x_326] = (p + 1);
+      const int x_331 = (top + 1);
+      top = x_331;
+      stack[x_331] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_96 = i_2;
+      const int x_99 = obj.numbers[i_2];
+      const int x_102 = obj.numbers[i_2];
+      obj.numbers[x_96] = (x_99 * x_102);
+    }
+  }
+  quicksort_();
+  const float4 x_108 = gl_FragCoord;
+  const float2 x_111 = asfloat(x_32[0].xy);
+  uv = (float2(x_108.x, x_108.y) / x_111);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_114 = obj.numbers[0];
+  const float x_117 = color.x;
+  color.x = (x_117 + float(x_114));
+  const float x_121 = uv.x;
+  if ((x_121 > 0.25f)) {
+    const int x_126 = obj.numbers[1];
+    const float x_129 = color.x;
+    color.x = (x_129 + float(x_126));
+  }
+  const float x_133 = uv.x;
+  if ((x_133 > 0.5f)) {
+    const int x_138 = obj.numbers[2];
+    const float x_141 = color.y;
+    color.y = (x_141 + float(x_138));
+  }
+  const float x_145 = uv.x;
+  if ((x_145 > 0.75f)) {
+    const int x_150 = obj.numbers[3];
+    const float x_153 = color.z;
+    color.z = (x_153 + float(x_150));
+  }
+  const int x_157 = obj.numbers[4];
+  const float x_160 = color.y;
+  color.y = (x_160 + float(x_157));
+  const float x_164 = uv.y;
+  if ((x_164 > 0.25f)) {
+    const int x_169 = obj.numbers[5];
+    const float x_172 = color.x;
+    color.x = (x_172 + float(x_169));
+  }
+  const float x_176 = uv.y;
+  if ((x_176 > 0.5f)) {
+    const int x_181 = obj.numbers[6];
+    const float x_184 = color.y;
+    color.y = (x_184 + float(x_181));
+  }
+  const float x_188 = uv.y;
+  if ((x_188 > 0.75f)) {
+    const int x_193 = obj.numbers[7];
+    const float x_196 = color.z;
+    color.z = (x_196 + float(x_193));
+  }
+  const int x_200 = obj.numbers[8];
+  const float x_203 = color.z;
+  color.z = (x_203 + float(x_200));
+  const float x_207 = uv.x;
+  const float x_209 = uv.y;
+  if ((abs((x_207 - x_209)) < 0.25f)) {
+    const int x_216 = obj.numbers[9];
+    const float x_219 = color.x;
+    color.x = (x_219 + float(x_216));
+  }
+  const float3 x_223 = normalize(color);
+  x_GLF_color = float4(x_223.x, x_223.y, x_223.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.msl
new file mode 100644
index 0000000..a97ee25
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.msl
@@ -0,0 +1,256 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, float3x3 x_228, thread QuicksortObject* const tint_symbol_5) {
+  int temp = 0;
+  int const x_230 = *(i);
+  int const x_232 = (*(tint_symbol_5)).numbers.arr[x_230];
+  temp = x_232;
+  int const x_233 = *(i);
+  int const x_234 = *(j);
+  int const x_236 = (*(tint_symbol_5)).numbers.arr[x_234];
+  (*(tint_symbol_5)).numbers.arr[x_233] = x_236;
+  int const x_238 = *(j);
+  int const x_239 = temp;
+  (*(tint_symbol_5)).numbers.arr[x_238] = x_239;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_6) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_242 = *(h);
+  int const x_244 = (*(tint_symbol_6)).numbers.arr[x_242];
+  pivot = x_244;
+  int const x_245 = *(l);
+  i_1 = (x_245 - 1);
+  int const x_247 = *(l);
+  j_1 = x_247;
+  while (true) {
+    int const x_252 = j_1;
+    int const x_253 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    int const x_257 = j_1;
+    int const x_259 = (*(tint_symbol_6)).numbers.arr[x_257];
+    int const x_260 = pivot;
+    if ((x_259 <= x_260)) {
+      int const x_264 = i_1;
+      i_1 = (x_264 + 1);
+      int const x_266 = i_1;
+      param = x_266;
+      int const x_267 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1), float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)), tint_symbol_6);
+    }
+    {
+      int const x_269 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  int const x_271 = i_1;
+  i_1 = (x_271 + 1);
+  int const x_273 = i_1;
+  param_2 = x_273;
+  int const x_274 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3), float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)), tint_symbol_6);
+  int const x_276 = i_1;
+  return x_276;
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_7) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_278 = top;
+  int const x_279 = (x_278 + 1);
+  top = x_279;
+  int const x_280 = l_1;
+  stack.arr[x_279] = x_280;
+  int const x_282 = top;
+  int const x_283 = (x_282 + 1);
+  top = x_283;
+  int const x_284 = h_1;
+  stack.arr[x_283] = x_284;
+  while (true) {
+    int const x_290 = top;
+    if ((x_290 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_293 = top;
+    top = (x_293 - 1);
+    int const x_296 = stack.arr[x_293];
+    h_1 = x_296;
+    int const x_297 = top;
+    top = (x_297 - 1);
+    int const x_300 = stack.arr[x_297];
+    l_1 = x_300;
+    int const x_301 = l_1;
+    param_4 = x_301;
+    int const x_302 = h_1;
+    param_5 = x_302;
+    int const x_303 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_7);
+    p = x_303;
+    int const x_304 = p;
+    int const x_306 = l_1;
+    if (((x_304 - 1) > x_306)) {
+      int const x_310 = top;
+      int const x_311 = (x_310 + 1);
+      top = x_311;
+      int const x_312 = l_1;
+      stack.arr[x_311] = x_312;
+      int const x_314 = top;
+      int const x_315 = (x_314 + 1);
+      top = x_315;
+      int const x_316 = p;
+      stack.arr[x_315] = (x_316 - 1);
+    }
+    int const x_319 = p;
+    int const x_321 = h_1;
+    if (((x_319 + 1) < x_321)) {
+      int const x_325 = top;
+      int const x_326 = (x_325 + 1);
+      top = x_326;
+      int const x_327 = p;
+      stack.arr[x_326] = (x_327 + 1);
+      int const x_330 = top;
+      int const x_331 = (x_330 + 1);
+      top = x_331;
+      int const x_332 = h_1;
+      stack.arr[x_331] = x_332;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_32, thread QuicksortObject* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  i_2 = 0;
+  while (true) {
+    int const x_89 = i_2;
+    if ((x_89 < 10)) {
+    } else {
+      break;
+    }
+    int const x_92 = i_2;
+    int const x_93 = i_2;
+    (*(tint_symbol_8)).numbers.arr[x_92] = (10 - x_93);
+    int const x_96 = i_2;
+    int const x_97 = i_2;
+    int const x_99 = (*(tint_symbol_8)).numbers.arr[x_97];
+    int const x_100 = i_2;
+    int const x_102 = (*(tint_symbol_8)).numbers.arr[x_100];
+    (*(tint_symbol_8)).numbers.arr[x_96] = (x_99 * x_102);
+    {
+      int const x_105 = i_2;
+      i_2 = (x_105 + 1);
+    }
+  }
+  quicksort_(tint_symbol_8);
+  float4 const x_108 = *(tint_symbol_9);
+  float2 const x_111 = x_32.resolution;
+  uv = (float2(x_108.x, x_108.y) / x_111);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_114 = (*(tint_symbol_8)).numbers.arr[0];
+  float const x_117 = color.x;
+  color.x = (x_117 + float(x_114));
+  float const x_121 = uv.x;
+  if ((x_121 > 0.25f)) {
+    int const x_126 = (*(tint_symbol_8)).numbers.arr[1];
+    float const x_129 = color.x;
+    color.x = (x_129 + float(x_126));
+  }
+  float const x_133 = uv.x;
+  if ((x_133 > 0.5f)) {
+    int const x_138 = (*(tint_symbol_8)).numbers.arr[2];
+    float const x_141 = color.y;
+    color.y = (x_141 + float(x_138));
+  }
+  float const x_145 = uv.x;
+  if ((x_145 > 0.75f)) {
+    int const x_150 = (*(tint_symbol_8)).numbers.arr[3];
+    float const x_153 = color.z;
+    color.z = (x_153 + float(x_150));
+  }
+  int const x_157 = (*(tint_symbol_8)).numbers.arr[4];
+  float const x_160 = color.y;
+  color.y = (x_160 + float(x_157));
+  float const x_164 = uv.y;
+  if ((x_164 > 0.25f)) {
+    int const x_169 = (*(tint_symbol_8)).numbers.arr[5];
+    float const x_172 = color.x;
+    color.x = (x_172 + float(x_169));
+  }
+  float const x_176 = uv.y;
+  if ((x_176 > 0.5f)) {
+    int const x_181 = (*(tint_symbol_8)).numbers.arr[6];
+    float const x_184 = color.y;
+    color.y = (x_184 + float(x_181));
+  }
+  float const x_188 = uv.y;
+  if ((x_188 > 0.75f)) {
+    int const x_193 = (*(tint_symbol_8)).numbers.arr[7];
+    float const x_196 = color.z;
+    color.z = (x_196 + float(x_193));
+  }
+  int const x_200 = (*(tint_symbol_8)).numbers.arr[8];
+  float const x_203 = color.z;
+  color.z = (x_203 + float(x_200));
+  float const x_207 = uv.x;
+  float const x_209 = uv.y;
+  if ((fabs((x_207 - x_209)) < 0.25f)) {
+    int const x_216 = (*(tint_symbol_8)).numbers.arr[9];
+    float const x_219 = color.x;
+    color.x = (x_219 + float(x_216));
+  }
+  float3 const x_222 = color;
+  float3 const x_223 = normalize(x_222);
+  *(tint_symbol_10) = float4(x_223.x, x_223.y, x_223.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_32 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread QuicksortObject tint_symbol_12 = {};
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_32, &(tint_symbol_12), &(tint_symbol_11), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..2c8db03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.spvasm
@@ -0,0 +1,547 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 379
+; Schema: 0
+               OpCapability Shader
+        %348 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %x_228 "x_228"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_32 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+    %v3float = OpTypeVector %float 3
+%mat3v3float = OpTypeMatrix %v3float 3
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %mat3v3float
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %52 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+        %102 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+        %103 = OpConstantComposite %mat3v3float %102 %102 %102
+        %115 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %123 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %195 = OpConstantNull %v2float
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %198 = OpConstantNull %v3float
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %236 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float
+        %366 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %23
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+      %x_228 = OpFunctionParameter %mat3v3float
+         %32 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %34
+         %36 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Private_int %obj %uint_0 %36
+         %40 = OpLoad %int %39
+               OpStore %temp %40
+         %42 = OpLoad %int %i
+         %44 = OpLoad %int %j
+         %45 = OpAccessChain %_ptr_Private_int %obj %uint_0 %44
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42
+               OpStore %47 %46
+         %49 = OpLoad %int %j
+         %50 = OpLoad %int %temp
+         %51 = OpAccessChain %_ptr_Private_int %obj %uint_0 %49
+               OpStore %51 %50
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %52
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %56 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %34
+        %i_1 = OpVariable %_ptr_Function_int Function %34
+        %j_1 = OpVariable %_ptr_Function_int Function %34
+      %param = OpVariable %_ptr_Function_int Function %34
+    %param_1 = OpVariable %_ptr_Function_int Function %34
+    %param_2 = OpVariable %_ptr_Function_int Function %34
+    %param_3 = OpVariable %_ptr_Function_int Function %34
+         %65 = OpLoad %int %h
+         %66 = OpAccessChain %_ptr_Private_int %obj %uint_0 %65
+         %67 = OpLoad %int %66
+               OpStore %pivot %67
+         %69 = OpLoad %int %l
+         %71 = OpISub %int %69 %int_1
+               OpStore %i_1 %71
+         %73 = OpLoad %int %l
+               OpStore %j_1 %73
+               OpBranch %74
+         %74 = OpLabel
+               OpLoopMerge %75 %76 None
+               OpBranch %77
+         %77 = OpLabel
+         %78 = OpLoad %int %j_1
+         %80 = OpLoad %int %h
+         %81 = OpISub %int %80 %int_1
+         %82 = OpSLessThanEqual %bool %78 %81
+               OpSelectionMerge %84 None
+               OpBranchConditional %82 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %75
+         %84 = OpLabel
+         %87 = OpLoad %int %j_1
+         %88 = OpAccessChain %_ptr_Private_int %obj %uint_0 %87
+         %89 = OpLoad %int %88
+         %90 = OpLoad %int %pivot
+         %91 = OpSLessThanEqual %bool %89 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %92
+         %93 = OpLabel
+         %94 = OpLoad %int %i_1
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %i_1 %95
+         %96 = OpLoad %int %i_1
+               OpStore %param %96
+         %97 = OpLoad %int %j_1
+               OpStore %param_1 %97
+         %98 = OpFunctionCall %void %swap_i1_i1_ %param %param_1 %103
+               OpBranch %92
+         %92 = OpLabel
+               OpBranch %76
+         %76 = OpLabel
+        %104 = OpLoad %int %j_1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %j_1 %105
+               OpBranch %74
+         %75 = OpLabel
+        %106 = OpLoad %int %i_1
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %i_1 %107
+        %108 = OpLoad %int %i_1
+               OpStore %param_2 %108
+        %110 = OpLoad %int %h
+               OpStore %param_3 %110
+        %111 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3 %103
+        %114 = OpLoad %int %i_1
+               OpReturnValue %114
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %115
+        %117 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %34
+        %h_1 = OpVariable %_ptr_Function_int Function %34
+        %top = OpVariable %_ptr_Function_int Function %34
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %123
+          %p = OpVariable %_ptr_Function_int Function %34
+    %param_4 = OpVariable %_ptr_Function_int Function %34
+    %param_5 = OpVariable %_ptr_Function_int Function %34
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %130 = OpLoad %int %top
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %top %131
+        %132 = OpLoad %int %l_1
+        %133 = OpAccessChain %_ptr_Function_int %stack %131
+               OpStore %133 %132
+        %134 = OpLoad %int %top
+        %135 = OpIAdd %int %134 %int_1
+               OpStore %top %135
+        %136 = OpLoad %int %h_1
+        %137 = OpAccessChain %_ptr_Function_int %stack %135
+               OpStore %137 %136
+               OpBranch %138
+        %138 = OpLabel
+               OpLoopMerge %139 %140 None
+               OpBranch %141
+        %141 = OpLabel
+        %142 = OpLoad %int %top
+        %143 = OpSGreaterThanEqual %bool %142 %int_0
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %139
+        %144 = OpLabel
+        %147 = OpLoad %int %top
+        %148 = OpISub %int %147 %int_1
+               OpStore %top %148
+        %149 = OpAccessChain %_ptr_Function_int %stack %147
+        %150 = OpLoad %int %149
+               OpStore %h_1 %150
+        %151 = OpLoad %int %top
+        %152 = OpISub %int %151 %int_1
+               OpStore %top %152
+        %153 = OpAccessChain %_ptr_Function_int %stack %151
+        %154 = OpLoad %int %153
+               OpStore %l_1 %154
+        %155 = OpLoad %int %l_1
+               OpStore %param_4 %155
+        %156 = OpLoad %int %h_1
+               OpStore %param_5 %156
+        %157 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %157
+        %160 = OpLoad %int %p
+        %161 = OpLoad %int %l_1
+        %162 = OpISub %int %160 %int_1
+        %163 = OpSGreaterThan %bool %162 %161
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %164
+        %165 = OpLabel
+        %166 = OpLoad %int %top
+        %167 = OpIAdd %int %166 %int_1
+               OpStore %top %167
+        %168 = OpLoad %int %l_1
+        %169 = OpAccessChain %_ptr_Function_int %stack %167
+               OpStore %169 %168
+        %170 = OpLoad %int %top
+        %171 = OpIAdd %int %170 %int_1
+               OpStore %top %171
+        %172 = OpLoad %int %p
+        %173 = OpAccessChain %_ptr_Function_int %stack %171
+        %174 = OpISub %int %172 %int_1
+               OpStore %173 %174
+               OpBranch %164
+        %164 = OpLabel
+        %175 = OpLoad %int %p
+        %176 = OpLoad %int %h_1
+        %177 = OpIAdd %int %175 %int_1
+        %178 = OpSLessThan %bool %177 %176
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %179
+        %180 = OpLabel
+        %181 = OpLoad %int %top
+        %182 = OpIAdd %int %181 %int_1
+               OpStore %top %182
+        %183 = OpLoad %int %p
+        %184 = OpAccessChain %_ptr_Function_int %stack %182
+        %185 = OpIAdd %int %183 %int_1
+               OpStore %184 %185
+        %186 = OpLoad %int %top
+        %187 = OpIAdd %int %186 %int_1
+               OpStore %top %187
+        %188 = OpLoad %int %h_1
+        %189 = OpAccessChain %_ptr_Function_int %stack %187
+               OpStore %189 %188
+               OpBranch %179
+        %179 = OpLabel
+               OpBranch %140
+        %140 = OpLabel
+               OpBranch %138
+        %139 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %115
+        %191 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %34
+         %uv = OpVariable %_ptr_Function_v2float Function %195
+      %color = OpVariable %_ptr_Function_v3float Function %198
+               OpStore %i_2 %int_0
+               OpBranch %199
+        %199 = OpLabel
+               OpLoopMerge %200 %201 None
+               OpBranch %202
+        %202 = OpLabel
+        %203 = OpLoad %int %i_2
+        %205 = OpSLessThan %bool %203 %int_10
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %208
+        %207 = OpLabel
+               OpBranch %206
+        %208 = OpLabel
+               OpBranch %200
+        %206 = OpLabel
+        %209 = OpLoad %int %i_2
+        %210 = OpLoad %int %i_2
+        %211 = OpAccessChain %_ptr_Private_int %obj %uint_0 %209
+        %212 = OpISub %int %int_10 %210
+               OpStore %211 %212
+        %213 = OpLoad %int %i_2
+        %214 = OpLoad %int %i_2
+        %215 = OpAccessChain %_ptr_Private_int %obj %uint_0 %214
+        %216 = OpLoad %int %215
+        %217 = OpLoad %int %i_2
+        %218 = OpAccessChain %_ptr_Private_int %obj %uint_0 %217
+        %219 = OpLoad %int %218
+        %220 = OpAccessChain %_ptr_Private_int %obj %uint_0 %213
+        %221 = OpIMul %int %216 %219
+               OpStore %220 %221
+               OpBranch %201
+        %201 = OpLabel
+        %222 = OpLoad %int %i_2
+        %223 = OpIAdd %int %222 %int_1
+               OpStore %i_2 %223
+               OpBranch %199
+        %200 = OpLabel
+        %224 = OpFunctionCall %void %quicksort_
+        %225 = OpLoad %v4float %gl_FragCoord
+        %227 = OpAccessChain %_ptr_Uniform_v2float %x_32 %uint_0
+        %228 = OpLoad %v2float %227
+        %229 = OpCompositeExtract %float %225 0
+        %230 = OpCompositeExtract %float %225 1
+        %231 = OpCompositeConstruct %v2float %229 %230
+        %232 = OpFDiv %v2float %231 %228
+               OpStore %uv %232
+               OpStore %color %236
+        %237 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %238 = OpLoad %int %237
+        %240 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %241 = OpLoad %float %240
+        %242 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %243 = OpConvertSToF %float %238
+        %244 = OpFAdd %float %241 %243
+               OpStore %242 %244
+        %245 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %246 = OpLoad %float %245
+        %248 = OpFOrdGreaterThan %bool %246 %float_0_25
+               OpSelectionMerge %249 None
+               OpBranchConditional %248 %250 %249
+        %250 = OpLabel
+        %251 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %252 = OpLoad %int %251
+        %253 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %254 = OpLoad %float %253
+        %255 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %256 = OpConvertSToF %float %252
+        %257 = OpFAdd %float %254 %256
+               OpStore %255 %257
+               OpBranch %249
+        %249 = OpLabel
+        %258 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %259 = OpLoad %float %258
+        %261 = OpFOrdGreaterThan %bool %259 %float_0_5
+               OpSelectionMerge %262 None
+               OpBranchConditional %261 %263 %262
+        %263 = OpLabel
+        %265 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %266 = OpLoad %int %265
+        %268 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %269 = OpLoad %float %268
+        %270 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %271 = OpConvertSToF %float %266
+        %272 = OpFAdd %float %269 %271
+               OpStore %270 %272
+               OpBranch %262
+        %262 = OpLabel
+        %273 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %274 = OpLoad %float %273
+        %276 = OpFOrdGreaterThan %bool %274 %float_0_75
+               OpSelectionMerge %277 None
+               OpBranchConditional %276 %278 %277
+        %278 = OpLabel
+        %280 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %281 = OpLoad %int %280
+        %283 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %284 = OpLoad %float %283
+        %285 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %286 = OpConvertSToF %float %281
+        %287 = OpFAdd %float %284 %286
+               OpStore %285 %287
+               OpBranch %277
+        %277 = OpLabel
+        %289 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %290 = OpLoad %int %289
+        %291 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %292 = OpLoad %float %291
+        %293 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %294 = OpConvertSToF %float %290
+        %295 = OpFAdd %float %292 %294
+               OpStore %293 %295
+        %296 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %297 = OpLoad %float %296
+        %298 = OpFOrdGreaterThan %bool %297 %float_0_25
+               OpSelectionMerge %299 None
+               OpBranchConditional %298 %300 %299
+        %300 = OpLabel
+        %302 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %303 = OpLoad %int %302
+        %304 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %305 = OpLoad %float %304
+        %306 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %307 = OpConvertSToF %float %303
+        %308 = OpFAdd %float %305 %307
+               OpStore %306 %308
+               OpBranch %299
+        %299 = OpLabel
+        %309 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %310 = OpLoad %float %309
+        %311 = OpFOrdGreaterThan %bool %310 %float_0_5
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %312
+        %313 = OpLabel
+        %315 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %316 = OpLoad %int %315
+        %317 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %318 = OpLoad %float %317
+        %319 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %320 = OpConvertSToF %float %316
+        %321 = OpFAdd %float %318 %320
+               OpStore %319 %321
+               OpBranch %312
+        %312 = OpLabel
+        %322 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %323 = OpLoad %float %322
+        %324 = OpFOrdGreaterThan %bool %323 %float_0_75
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %325
+        %326 = OpLabel
+        %328 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %329 = OpLoad %int %328
+        %330 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %331 = OpLoad %float %330
+        %332 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %333 = OpConvertSToF %float %329
+        %334 = OpFAdd %float %331 %333
+               OpStore %332 %334
+               OpBranch %325
+        %325 = OpLabel
+        %336 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %337 = OpLoad %int %336
+        %338 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %339 = OpLoad %float %338
+        %340 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %341 = OpConvertSToF %float %337
+        %342 = OpFAdd %float %339 %341
+               OpStore %340 %342
+        %343 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %344 = OpLoad %float %343
+        %345 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %346 = OpLoad %float %345
+        %349 = OpFSub %float %344 %346
+        %347 = OpExtInst %float %348 FAbs %349
+        %350 = OpFOrdLessThan %bool %347 %float_0_25
+               OpSelectionMerge %351 None
+               OpBranchConditional %350 %352 %351
+        %352 = OpLabel
+        %353 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %354 = OpLoad %int %353
+        %355 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %356 = OpLoad %float %355
+        %357 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %358 = OpConvertSToF %float %354
+        %359 = OpFAdd %float %356 %358
+               OpStore %357 %359
+               OpBranch %351
+        %351 = OpLabel
+        %360 = OpLoad %v3float %color
+        %361 = OpExtInst %v3float %348 Normalize %360
+        %362 = OpCompositeExtract %float %361 0
+        %363 = OpCompositeExtract %float %361 1
+        %364 = OpCompositeExtract %float %361 2
+        %365 = OpCompositeConstruct %v4float %362 %363 %364 %float_1
+               OpStore %x_GLF_color %365
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %366
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %370 = OpLabel
+        %371 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %371
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %115
+        %373 = OpLabel
+        %374 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %374
+        %375 = OpFunctionCall %void %main_1
+        %377 = OpLoad %v4float %x_GLF_color
+        %378 = OpCompositeConstruct %main_out %377
+        %376 = OpFunctionCall %void %tint_symbol_3 %378
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..af97bb8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.spvasm.expected.wgsl
@@ -0,0 +1,256 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>, x_228 : mat3x3<f32>) {
+  var temp : i32;
+  let x_230 : i32 = *(i);
+  let x_232 : i32 = obj.numbers[x_230];
+  temp = x_232;
+  let x_233 : i32 = *(i);
+  let x_234 : i32 = *(j);
+  let x_236 : i32 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  let x_238 : i32 = *(j);
+  let x_239 : i32 = temp;
+  obj.numbers[x_238] = x_239;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_242 : i32 = *(h);
+  let x_244 : i32 = obj.numbers[x_242];
+  pivot = x_244;
+  let x_245 : i32 = *(l);
+  i_1 = (x_245 - 1);
+  let x_247 : i32 = *(l);
+  j_1 = x_247;
+  loop {
+    let x_252 : i32 = j_1;
+    let x_253 : i32 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    let x_257 : i32 = j_1;
+    let x_259 : i32 = obj.numbers[x_257];
+    let x_260 : i32 = pivot;
+    if ((x_259 <= x_260)) {
+      let x_264 : i32 = i_1;
+      i_1 = (x_264 + 1);
+      let x_266 : i32 = i_1;
+      param = x_266;
+      let x_267 : i32 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1), mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0)));
+    }
+
+    continuing {
+      let x_269 : i32 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  let x_271 : i32 = i_1;
+  i_1 = (x_271 + 1);
+  let x_273 : i32 = i_1;
+  param_2 = x_273;
+  let x_274 : i32 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3), mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0)));
+  let x_276 : i32 = i_1;
+  return x_276;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_278 : i32 = top;
+  let x_279 : i32 = (x_278 + 1);
+  top = x_279;
+  let x_280 : i32 = l_1;
+  stack[x_279] = x_280;
+  let x_282 : i32 = top;
+  let x_283 : i32 = (x_282 + 1);
+  top = x_283;
+  let x_284 : i32 = h_1;
+  stack[x_283] = x_284;
+  loop {
+    let x_290 : i32 = top;
+    if ((x_290 >= 0)) {
+    } else {
+      break;
+    }
+    let x_293 : i32 = top;
+    top = (x_293 - 1);
+    let x_296 : i32 = stack[x_293];
+    h_1 = x_296;
+    let x_297 : i32 = top;
+    top = (x_297 - 1);
+    let x_300 : i32 = stack[x_297];
+    l_1 = x_300;
+    let x_301 : i32 = l_1;
+    param_4 = x_301;
+    let x_302 : i32 = h_1;
+    param_5 = x_302;
+    let x_303 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_303;
+    let x_304 : i32 = p;
+    let x_306 : i32 = l_1;
+    if (((x_304 - 1) > x_306)) {
+      let x_310 : i32 = top;
+      let x_311 : i32 = (x_310 + 1);
+      top = x_311;
+      let x_312 : i32 = l_1;
+      stack[x_311] = x_312;
+      let x_314 : i32 = top;
+      let x_315 : i32 = (x_314 + 1);
+      top = x_315;
+      let x_316 : i32 = p;
+      stack[x_315] = (x_316 - 1);
+    }
+    let x_319 : i32 = p;
+    let x_321 : i32 = h_1;
+    if (((x_319 + 1) < x_321)) {
+      let x_325 : i32 = top;
+      let x_326 : i32 = (x_325 + 1);
+      top = x_326;
+      let x_327 : i32 = p;
+      stack[x_326] = (x_327 + 1);
+      let x_330 : i32 = top;
+      let x_331 : i32 = (x_330 + 1);
+      top = x_331;
+      let x_332 : i32 = h_1;
+      stack[x_331] = x_332;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  i_2 = 0;
+  loop {
+    let x_89 : i32 = i_2;
+    if ((x_89 < 10)) {
+    } else {
+      break;
+    }
+    let x_92 : i32 = i_2;
+    let x_93 : i32 = i_2;
+    obj.numbers[x_92] = (10 - x_93);
+    let x_96 : i32 = i_2;
+    let x_97 : i32 = i_2;
+    let x_99 : i32 = obj.numbers[x_97];
+    let x_100 : i32 = i_2;
+    let x_102 : i32 = obj.numbers[x_100];
+    obj.numbers[x_96] = (x_99 * x_102);
+
+    continuing {
+      let x_105 : i32 = i_2;
+      i_2 = (x_105 + 1);
+    }
+  }
+  quicksort_();
+  let x_108 : vec4<f32> = gl_FragCoord;
+  let x_111 : vec2<f32> = x_32.resolution;
+  uv = (vec2<f32>(x_108.x, x_108.y) / x_111);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_114 : i32 = obj.numbers[0];
+  let x_117 : f32 = color.x;
+  color.x = (x_117 + f32(x_114));
+  let x_121 : f32 = uv.x;
+  if ((x_121 > 0.25)) {
+    let x_126 : i32 = obj.numbers[1];
+    let x_129 : f32 = color.x;
+    color.x = (x_129 + f32(x_126));
+  }
+  let x_133 : f32 = uv.x;
+  if ((x_133 > 0.5)) {
+    let x_138 : i32 = obj.numbers[2];
+    let x_141 : f32 = color.y;
+    color.y = (x_141 + f32(x_138));
+  }
+  let x_145 : f32 = uv.x;
+  if ((x_145 > 0.75)) {
+    let x_150 : i32 = obj.numbers[3];
+    let x_153 : f32 = color.z;
+    color.z = (x_153 + f32(x_150));
+  }
+  let x_157 : i32 = obj.numbers[4];
+  let x_160 : f32 = color.y;
+  color.y = (x_160 + f32(x_157));
+  let x_164 : f32 = uv.y;
+  if ((x_164 > 0.25)) {
+    let x_169 : i32 = obj.numbers[5];
+    let x_172 : f32 = color.x;
+    color.x = (x_172 + f32(x_169));
+  }
+  let x_176 : f32 = uv.y;
+  if ((x_176 > 0.5)) {
+    let x_181 : i32 = obj.numbers[6];
+    let x_184 : f32 = color.y;
+    color.y = (x_184 + f32(x_181));
+  }
+  let x_188 : f32 = uv.y;
+  if ((x_188 > 0.75)) {
+    let x_193 : i32 = obj.numbers[7];
+    let x_196 : f32 = color.z;
+    color.z = (x_196 + f32(x_193));
+  }
+  let x_200 : i32 = obj.numbers[8];
+  let x_203 : f32 = color.z;
+  color.z = (x_203 + f32(x_200));
+  let x_207 : f32 = uv.x;
+  let x_209 : f32 = uv.y;
+  if ((abs((x_207 - x_209)) < 0.25)) {
+    let x_216 : i32 = obj.numbers[9];
+    let x_219 : f32 = color.x;
+    color.x = (x_219 + f32(x_216));
+  }
+  let x_222 : vec3<f32> = color;
+  let x_223 : vec3<f32> = normalize(x_222);
+  x_GLF_color = vec4<f32>(x_223.x, x_223.y, x_223.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
new file mode 100644
index 0000000..af97bb8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
@@ -0,0 +1,256 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>, x_228 : mat3x3<f32>) {
+  var temp : i32;
+  let x_230 : i32 = *(i);
+  let x_232 : i32 = obj.numbers[x_230];
+  temp = x_232;
+  let x_233 : i32 = *(i);
+  let x_234 : i32 = *(j);
+  let x_236 : i32 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  let x_238 : i32 = *(j);
+  let x_239 : i32 = temp;
+  obj.numbers[x_238] = x_239;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_242 : i32 = *(h);
+  let x_244 : i32 = obj.numbers[x_242];
+  pivot = x_244;
+  let x_245 : i32 = *(l);
+  i_1 = (x_245 - 1);
+  let x_247 : i32 = *(l);
+  j_1 = x_247;
+  loop {
+    let x_252 : i32 = j_1;
+    let x_253 : i32 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    let x_257 : i32 = j_1;
+    let x_259 : i32 = obj.numbers[x_257];
+    let x_260 : i32 = pivot;
+    if ((x_259 <= x_260)) {
+      let x_264 : i32 = i_1;
+      i_1 = (x_264 + 1);
+      let x_266 : i32 = i_1;
+      param = x_266;
+      let x_267 : i32 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1), mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0)));
+    }
+
+    continuing {
+      let x_269 : i32 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  let x_271 : i32 = i_1;
+  i_1 = (x_271 + 1);
+  let x_273 : i32 = i_1;
+  param_2 = x_273;
+  let x_274 : i32 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3), mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0)));
+  let x_276 : i32 = i_1;
+  return x_276;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_278 : i32 = top;
+  let x_279 : i32 = (x_278 + 1);
+  top = x_279;
+  let x_280 : i32 = l_1;
+  stack[x_279] = x_280;
+  let x_282 : i32 = top;
+  let x_283 : i32 = (x_282 + 1);
+  top = x_283;
+  let x_284 : i32 = h_1;
+  stack[x_283] = x_284;
+  loop {
+    let x_290 : i32 = top;
+    if ((x_290 >= 0)) {
+    } else {
+      break;
+    }
+    let x_293 : i32 = top;
+    top = (x_293 - 1);
+    let x_296 : i32 = stack[x_293];
+    h_1 = x_296;
+    let x_297 : i32 = top;
+    top = (x_297 - 1);
+    let x_300 : i32 = stack[x_297];
+    l_1 = x_300;
+    let x_301 : i32 = l_1;
+    param_4 = x_301;
+    let x_302 : i32 = h_1;
+    param_5 = x_302;
+    let x_303 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_303;
+    let x_304 : i32 = p;
+    let x_306 : i32 = l_1;
+    if (((x_304 - 1) > x_306)) {
+      let x_310 : i32 = top;
+      let x_311 : i32 = (x_310 + 1);
+      top = x_311;
+      let x_312 : i32 = l_1;
+      stack[x_311] = x_312;
+      let x_314 : i32 = top;
+      let x_315 : i32 = (x_314 + 1);
+      top = x_315;
+      let x_316 : i32 = p;
+      stack[x_315] = (x_316 - 1);
+    }
+    let x_319 : i32 = p;
+    let x_321 : i32 = h_1;
+    if (((x_319 + 1) < x_321)) {
+      let x_325 : i32 = top;
+      let x_326 : i32 = (x_325 + 1);
+      top = x_326;
+      let x_327 : i32 = p;
+      stack[x_326] = (x_327 + 1);
+      let x_330 : i32 = top;
+      let x_331 : i32 = (x_330 + 1);
+      top = x_331;
+      let x_332 : i32 = h_1;
+      stack[x_331] = x_332;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  i_2 = 0;
+  loop {
+    let x_89 : i32 = i_2;
+    if ((x_89 < 10)) {
+    } else {
+      break;
+    }
+    let x_92 : i32 = i_2;
+    let x_93 : i32 = i_2;
+    obj.numbers[x_92] = (10 - x_93);
+    let x_96 : i32 = i_2;
+    let x_97 : i32 = i_2;
+    let x_99 : i32 = obj.numbers[x_97];
+    let x_100 : i32 = i_2;
+    let x_102 : i32 = obj.numbers[x_100];
+    obj.numbers[x_96] = (x_99 * x_102);
+
+    continuing {
+      let x_105 : i32 = i_2;
+      i_2 = (x_105 + 1);
+    }
+  }
+  quicksort_();
+  let x_108 : vec4<f32> = gl_FragCoord;
+  let x_111 : vec2<f32> = x_32.resolution;
+  uv = (vec2<f32>(x_108.x, x_108.y) / x_111);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_114 : i32 = obj.numbers[0];
+  let x_117 : f32 = color.x;
+  color.x = (x_117 + f32(x_114));
+  let x_121 : f32 = uv.x;
+  if ((x_121 > 0.25)) {
+    let x_126 : i32 = obj.numbers[1];
+    let x_129 : f32 = color.x;
+    color.x = (x_129 + f32(x_126));
+  }
+  let x_133 : f32 = uv.x;
+  if ((x_133 > 0.5)) {
+    let x_138 : i32 = obj.numbers[2];
+    let x_141 : f32 = color.y;
+    color.y = (x_141 + f32(x_138));
+  }
+  let x_145 : f32 = uv.x;
+  if ((x_145 > 0.75)) {
+    let x_150 : i32 = obj.numbers[3];
+    let x_153 : f32 = color.z;
+    color.z = (x_153 + f32(x_150));
+  }
+  let x_157 : i32 = obj.numbers[4];
+  let x_160 : f32 = color.y;
+  color.y = (x_160 + f32(x_157));
+  let x_164 : f32 = uv.y;
+  if ((x_164 > 0.25)) {
+    let x_169 : i32 = obj.numbers[5];
+    let x_172 : f32 = color.x;
+    color.x = (x_172 + f32(x_169));
+  }
+  let x_176 : f32 = uv.y;
+  if ((x_176 > 0.5)) {
+    let x_181 : i32 = obj.numbers[6];
+    let x_184 : f32 = color.y;
+    color.y = (x_184 + f32(x_181));
+  }
+  let x_188 : f32 = uv.y;
+  if ((x_188 > 0.75)) {
+    let x_193 : i32 = obj.numbers[7];
+    let x_196 : f32 = color.z;
+    color.z = (x_196 + f32(x_193));
+  }
+  let x_200 : i32 = obj.numbers[8];
+  let x_203 : f32 = color.z;
+  color.z = (x_203 + f32(x_200));
+  let x_207 : f32 = uv.x;
+  let x_209 : f32 = uv.y;
+  if ((abs((x_207 - x_209)) < 0.25)) {
+    let x_216 : i32 = obj.numbers[9];
+    let x_219 : f32 = color.x;
+    color.x = (x_219 + f32(x_216));
+  }
+  let x_222 : vec3<f32> = color;
+  let x_223 : vec3<f32> = normalize(x_222);
+  x_GLF_color = vec4<f32>(x_223.x, x_223.y, x_223.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..405b040
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.hlsl
@@ -0,0 +1,214 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_32 : register(b0, space0) {
+  uint4 x_32[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j, float3x3 x_228) {
+  int temp = 0;
+  const int x_230 = i;
+  const int x_232 = obj.numbers[x_230];
+  temp = x_232;
+  const int x_233 = i;
+  const int x_234 = j;
+  const int x_236 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  const int x_238 = j;
+  obj.numbers[x_238] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_242 = h;
+  const int x_244 = obj.numbers[x_242];
+  pivot = x_244;
+  const int x_245 = l;
+  i_1 = (x_245 - 1);
+  const int x_247 = l;
+  j_1 = x_247;
+  while (true) {
+    const int x_252 = j_1;
+    const int x_253 = h;
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    const int x_259 = obj.numbers[j_1];
+    if ((x_259 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1, float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)));
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  i_1 = (i_1 + 1);
+  param_2 = i_1;
+  const int x_274 = h;
+  param_3 = x_274;
+  swap_i1_i1_(param_2, param_3, float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)));
+  return i_1;
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_279 = (top + 1);
+  top = x_279;
+  stack[x_279] = l_1;
+  const int x_283 = (top + 1);
+  top = x_283;
+  stack[x_283] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_293 = top;
+    top = (x_293 - 1);
+    const int x_296 = stack[x_293];
+    h_1 = x_296;
+    const int x_297 = top;
+    top = (x_297 - 1);
+    const int x_300 = stack[x_297];
+    l_1 = x_300;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_303 = performPartition_i1_i1_(param_4, param_5);
+    p = x_303;
+    if (((p - 1) > l_1)) {
+      const int x_311 = (top + 1);
+      top = x_311;
+      stack[x_311] = l_1;
+      const int x_315 = (top + 1);
+      top = x_315;
+      stack[x_315] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_326 = (top + 1);
+      top = x_326;
+      stack[x_326] = (p + 1);
+      const int x_331 = (top + 1);
+      top = x_331;
+      stack[x_331] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_96 = i_2;
+      const int x_99 = obj.numbers[i_2];
+      const int x_102 = obj.numbers[i_2];
+      obj.numbers[x_96] = (x_99 * x_102);
+    }
+  }
+  quicksort_();
+  const float4 x_108 = gl_FragCoord;
+  const float2 x_111 = asfloat(x_32[0].xy);
+  uv = (float2(x_108.x, x_108.y) / x_111);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_114 = obj.numbers[0];
+  const float x_117 = color.x;
+  color.x = (x_117 + float(x_114));
+  const float x_121 = uv.x;
+  if ((x_121 > 0.25f)) {
+    const int x_126 = obj.numbers[1];
+    const float x_129 = color.x;
+    color.x = (x_129 + float(x_126));
+  }
+  const float x_133 = uv.x;
+  if ((x_133 > 0.5f)) {
+    const int x_138 = obj.numbers[2];
+    const float x_141 = color.y;
+    color.y = (x_141 + float(x_138));
+  }
+  const float x_145 = uv.x;
+  if ((x_145 > 0.75f)) {
+    const int x_150 = obj.numbers[3];
+    const float x_153 = color.z;
+    color.z = (x_153 + float(x_150));
+  }
+  const int x_157 = obj.numbers[4];
+  const float x_160 = color.y;
+  color.y = (x_160 + float(x_157));
+  const float x_164 = uv.y;
+  if ((x_164 > 0.25f)) {
+    const int x_169 = obj.numbers[5];
+    const float x_172 = color.x;
+    color.x = (x_172 + float(x_169));
+  }
+  const float x_176 = uv.y;
+  if ((x_176 > 0.5f)) {
+    const int x_181 = obj.numbers[6];
+    const float x_184 = color.y;
+    color.y = (x_184 + float(x_181));
+  }
+  const float x_188 = uv.y;
+  if ((x_188 > 0.75f)) {
+    const int x_193 = obj.numbers[7];
+    const float x_196 = color.z;
+    color.z = (x_196 + float(x_193));
+  }
+  const int x_200 = obj.numbers[8];
+  const float x_203 = color.z;
+  color.z = (x_203 + float(x_200));
+  const float x_207 = uv.x;
+  const float x_209 = uv.y;
+  if ((abs((x_207 - x_209)) < 0.25f)) {
+    const int x_216 = obj.numbers[9];
+    const float x_219 = color.x;
+    color.x = (x_219 + float(x_216));
+  }
+  const float3 x_223 = normalize(color);
+  x_GLF_color = float4(x_223.x, x_223.y, x_223.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.msl
new file mode 100644
index 0000000..a97ee25
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.msl
@@ -0,0 +1,256 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, float3x3 x_228, thread QuicksortObject* const tint_symbol_5) {
+  int temp = 0;
+  int const x_230 = *(i);
+  int const x_232 = (*(tint_symbol_5)).numbers.arr[x_230];
+  temp = x_232;
+  int const x_233 = *(i);
+  int const x_234 = *(j);
+  int const x_236 = (*(tint_symbol_5)).numbers.arr[x_234];
+  (*(tint_symbol_5)).numbers.arr[x_233] = x_236;
+  int const x_238 = *(j);
+  int const x_239 = temp;
+  (*(tint_symbol_5)).numbers.arr[x_238] = x_239;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_6) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_242 = *(h);
+  int const x_244 = (*(tint_symbol_6)).numbers.arr[x_242];
+  pivot = x_244;
+  int const x_245 = *(l);
+  i_1 = (x_245 - 1);
+  int const x_247 = *(l);
+  j_1 = x_247;
+  while (true) {
+    int const x_252 = j_1;
+    int const x_253 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    int const x_257 = j_1;
+    int const x_259 = (*(tint_symbol_6)).numbers.arr[x_257];
+    int const x_260 = pivot;
+    if ((x_259 <= x_260)) {
+      int const x_264 = i_1;
+      i_1 = (x_264 + 1);
+      int const x_266 = i_1;
+      param = x_266;
+      int const x_267 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1), float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)), tint_symbol_6);
+    }
+    {
+      int const x_269 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  int const x_271 = i_1;
+  i_1 = (x_271 + 1);
+  int const x_273 = i_1;
+  param_2 = x_273;
+  int const x_274 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3), float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f)), tint_symbol_6);
+  int const x_276 = i_1;
+  return x_276;
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_7) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_278 = top;
+  int const x_279 = (x_278 + 1);
+  top = x_279;
+  int const x_280 = l_1;
+  stack.arr[x_279] = x_280;
+  int const x_282 = top;
+  int const x_283 = (x_282 + 1);
+  top = x_283;
+  int const x_284 = h_1;
+  stack.arr[x_283] = x_284;
+  while (true) {
+    int const x_290 = top;
+    if ((x_290 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_293 = top;
+    top = (x_293 - 1);
+    int const x_296 = stack.arr[x_293];
+    h_1 = x_296;
+    int const x_297 = top;
+    top = (x_297 - 1);
+    int const x_300 = stack.arr[x_297];
+    l_1 = x_300;
+    int const x_301 = l_1;
+    param_4 = x_301;
+    int const x_302 = h_1;
+    param_5 = x_302;
+    int const x_303 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_7);
+    p = x_303;
+    int const x_304 = p;
+    int const x_306 = l_1;
+    if (((x_304 - 1) > x_306)) {
+      int const x_310 = top;
+      int const x_311 = (x_310 + 1);
+      top = x_311;
+      int const x_312 = l_1;
+      stack.arr[x_311] = x_312;
+      int const x_314 = top;
+      int const x_315 = (x_314 + 1);
+      top = x_315;
+      int const x_316 = p;
+      stack.arr[x_315] = (x_316 - 1);
+    }
+    int const x_319 = p;
+    int const x_321 = h_1;
+    if (((x_319 + 1) < x_321)) {
+      int const x_325 = top;
+      int const x_326 = (x_325 + 1);
+      top = x_326;
+      int const x_327 = p;
+      stack.arr[x_326] = (x_327 + 1);
+      int const x_330 = top;
+      int const x_331 = (x_330 + 1);
+      top = x_331;
+      int const x_332 = h_1;
+      stack.arr[x_331] = x_332;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_32, thread QuicksortObject* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  i_2 = 0;
+  while (true) {
+    int const x_89 = i_2;
+    if ((x_89 < 10)) {
+    } else {
+      break;
+    }
+    int const x_92 = i_2;
+    int const x_93 = i_2;
+    (*(tint_symbol_8)).numbers.arr[x_92] = (10 - x_93);
+    int const x_96 = i_2;
+    int const x_97 = i_2;
+    int const x_99 = (*(tint_symbol_8)).numbers.arr[x_97];
+    int const x_100 = i_2;
+    int const x_102 = (*(tint_symbol_8)).numbers.arr[x_100];
+    (*(tint_symbol_8)).numbers.arr[x_96] = (x_99 * x_102);
+    {
+      int const x_105 = i_2;
+      i_2 = (x_105 + 1);
+    }
+  }
+  quicksort_(tint_symbol_8);
+  float4 const x_108 = *(tint_symbol_9);
+  float2 const x_111 = x_32.resolution;
+  uv = (float2(x_108.x, x_108.y) / x_111);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_114 = (*(tint_symbol_8)).numbers.arr[0];
+  float const x_117 = color.x;
+  color.x = (x_117 + float(x_114));
+  float const x_121 = uv.x;
+  if ((x_121 > 0.25f)) {
+    int const x_126 = (*(tint_symbol_8)).numbers.arr[1];
+    float const x_129 = color.x;
+    color.x = (x_129 + float(x_126));
+  }
+  float const x_133 = uv.x;
+  if ((x_133 > 0.5f)) {
+    int const x_138 = (*(tint_symbol_8)).numbers.arr[2];
+    float const x_141 = color.y;
+    color.y = (x_141 + float(x_138));
+  }
+  float const x_145 = uv.x;
+  if ((x_145 > 0.75f)) {
+    int const x_150 = (*(tint_symbol_8)).numbers.arr[3];
+    float const x_153 = color.z;
+    color.z = (x_153 + float(x_150));
+  }
+  int const x_157 = (*(tint_symbol_8)).numbers.arr[4];
+  float const x_160 = color.y;
+  color.y = (x_160 + float(x_157));
+  float const x_164 = uv.y;
+  if ((x_164 > 0.25f)) {
+    int const x_169 = (*(tint_symbol_8)).numbers.arr[5];
+    float const x_172 = color.x;
+    color.x = (x_172 + float(x_169));
+  }
+  float const x_176 = uv.y;
+  if ((x_176 > 0.5f)) {
+    int const x_181 = (*(tint_symbol_8)).numbers.arr[6];
+    float const x_184 = color.y;
+    color.y = (x_184 + float(x_181));
+  }
+  float const x_188 = uv.y;
+  if ((x_188 > 0.75f)) {
+    int const x_193 = (*(tint_symbol_8)).numbers.arr[7];
+    float const x_196 = color.z;
+    color.z = (x_196 + float(x_193));
+  }
+  int const x_200 = (*(tint_symbol_8)).numbers.arr[8];
+  float const x_203 = color.z;
+  color.z = (x_203 + float(x_200));
+  float const x_207 = uv.x;
+  float const x_209 = uv.y;
+  if ((fabs((x_207 - x_209)) < 0.25f)) {
+    int const x_216 = (*(tint_symbol_8)).numbers.arr[9];
+    float const x_219 = color.x;
+    color.x = (x_219 + float(x_216));
+  }
+  float3 const x_222 = color;
+  float3 const x_223 = normalize(x_222);
+  *(tint_symbol_10) = float4(x_223.x, x_223.y, x_223.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_32 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread QuicksortObject tint_symbol_12 = {};
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_32, &(tint_symbol_12), &(tint_symbol_11), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..2c8db03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.spvasm
@@ -0,0 +1,547 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 379
+; Schema: 0
+               OpCapability Shader
+        %348 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_32 "x_32"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %x_228 "x_228"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_32 NonWritable
+               OpDecorate %x_32 DescriptorSet 0
+               OpDecorate %x_32 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_32 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+    %v3float = OpTypeVector %float 3
+%mat3v3float = OpTypeMatrix %v3float 3
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %mat3v3float
+         %34 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %52 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+        %102 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+        %103 = OpConstantComposite %mat3v3float %102 %102 %102
+        %115 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %123 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %195 = OpConstantNull %v2float
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %198 = OpConstantNull %v3float
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %236 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float
+        %366 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %23
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+      %x_228 = OpFunctionParameter %mat3v3float
+         %32 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %34
+         %36 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Private_int %obj %uint_0 %36
+         %40 = OpLoad %int %39
+               OpStore %temp %40
+         %42 = OpLoad %int %i
+         %44 = OpLoad %int %j
+         %45 = OpAccessChain %_ptr_Private_int %obj %uint_0 %44
+         %46 = OpLoad %int %45
+         %47 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42
+               OpStore %47 %46
+         %49 = OpLoad %int %j
+         %50 = OpLoad %int %temp
+         %51 = OpAccessChain %_ptr_Private_int %obj %uint_0 %49
+               OpStore %51 %50
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %52
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %56 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %34
+        %i_1 = OpVariable %_ptr_Function_int Function %34
+        %j_1 = OpVariable %_ptr_Function_int Function %34
+      %param = OpVariable %_ptr_Function_int Function %34
+    %param_1 = OpVariable %_ptr_Function_int Function %34
+    %param_2 = OpVariable %_ptr_Function_int Function %34
+    %param_3 = OpVariable %_ptr_Function_int Function %34
+         %65 = OpLoad %int %h
+         %66 = OpAccessChain %_ptr_Private_int %obj %uint_0 %65
+         %67 = OpLoad %int %66
+               OpStore %pivot %67
+         %69 = OpLoad %int %l
+         %71 = OpISub %int %69 %int_1
+               OpStore %i_1 %71
+         %73 = OpLoad %int %l
+               OpStore %j_1 %73
+               OpBranch %74
+         %74 = OpLabel
+               OpLoopMerge %75 %76 None
+               OpBranch %77
+         %77 = OpLabel
+         %78 = OpLoad %int %j_1
+         %80 = OpLoad %int %h
+         %81 = OpISub %int %80 %int_1
+         %82 = OpSLessThanEqual %bool %78 %81
+               OpSelectionMerge %84 None
+               OpBranchConditional %82 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %75
+         %84 = OpLabel
+         %87 = OpLoad %int %j_1
+         %88 = OpAccessChain %_ptr_Private_int %obj %uint_0 %87
+         %89 = OpLoad %int %88
+         %90 = OpLoad %int %pivot
+         %91 = OpSLessThanEqual %bool %89 %90
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %92
+         %93 = OpLabel
+         %94 = OpLoad %int %i_1
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %i_1 %95
+         %96 = OpLoad %int %i_1
+               OpStore %param %96
+         %97 = OpLoad %int %j_1
+               OpStore %param_1 %97
+         %98 = OpFunctionCall %void %swap_i1_i1_ %param %param_1 %103
+               OpBranch %92
+         %92 = OpLabel
+               OpBranch %76
+         %76 = OpLabel
+        %104 = OpLoad %int %j_1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %j_1 %105
+               OpBranch %74
+         %75 = OpLabel
+        %106 = OpLoad %int %i_1
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %i_1 %107
+        %108 = OpLoad %int %i_1
+               OpStore %param_2 %108
+        %110 = OpLoad %int %h
+               OpStore %param_3 %110
+        %111 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3 %103
+        %114 = OpLoad %int %i_1
+               OpReturnValue %114
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %115
+        %117 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %34
+        %h_1 = OpVariable %_ptr_Function_int Function %34
+        %top = OpVariable %_ptr_Function_int Function %34
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %123
+          %p = OpVariable %_ptr_Function_int Function %34
+    %param_4 = OpVariable %_ptr_Function_int Function %34
+    %param_5 = OpVariable %_ptr_Function_int Function %34
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %130 = OpLoad %int %top
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %top %131
+        %132 = OpLoad %int %l_1
+        %133 = OpAccessChain %_ptr_Function_int %stack %131
+               OpStore %133 %132
+        %134 = OpLoad %int %top
+        %135 = OpIAdd %int %134 %int_1
+               OpStore %top %135
+        %136 = OpLoad %int %h_1
+        %137 = OpAccessChain %_ptr_Function_int %stack %135
+               OpStore %137 %136
+               OpBranch %138
+        %138 = OpLabel
+               OpLoopMerge %139 %140 None
+               OpBranch %141
+        %141 = OpLabel
+        %142 = OpLoad %int %top
+        %143 = OpSGreaterThanEqual %bool %142 %int_0
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %139
+        %144 = OpLabel
+        %147 = OpLoad %int %top
+        %148 = OpISub %int %147 %int_1
+               OpStore %top %148
+        %149 = OpAccessChain %_ptr_Function_int %stack %147
+        %150 = OpLoad %int %149
+               OpStore %h_1 %150
+        %151 = OpLoad %int %top
+        %152 = OpISub %int %151 %int_1
+               OpStore %top %152
+        %153 = OpAccessChain %_ptr_Function_int %stack %151
+        %154 = OpLoad %int %153
+               OpStore %l_1 %154
+        %155 = OpLoad %int %l_1
+               OpStore %param_4 %155
+        %156 = OpLoad %int %h_1
+               OpStore %param_5 %156
+        %157 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %157
+        %160 = OpLoad %int %p
+        %161 = OpLoad %int %l_1
+        %162 = OpISub %int %160 %int_1
+        %163 = OpSGreaterThan %bool %162 %161
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %164
+        %165 = OpLabel
+        %166 = OpLoad %int %top
+        %167 = OpIAdd %int %166 %int_1
+               OpStore %top %167
+        %168 = OpLoad %int %l_1
+        %169 = OpAccessChain %_ptr_Function_int %stack %167
+               OpStore %169 %168
+        %170 = OpLoad %int %top
+        %171 = OpIAdd %int %170 %int_1
+               OpStore %top %171
+        %172 = OpLoad %int %p
+        %173 = OpAccessChain %_ptr_Function_int %stack %171
+        %174 = OpISub %int %172 %int_1
+               OpStore %173 %174
+               OpBranch %164
+        %164 = OpLabel
+        %175 = OpLoad %int %p
+        %176 = OpLoad %int %h_1
+        %177 = OpIAdd %int %175 %int_1
+        %178 = OpSLessThan %bool %177 %176
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %179
+        %180 = OpLabel
+        %181 = OpLoad %int %top
+        %182 = OpIAdd %int %181 %int_1
+               OpStore %top %182
+        %183 = OpLoad %int %p
+        %184 = OpAccessChain %_ptr_Function_int %stack %182
+        %185 = OpIAdd %int %183 %int_1
+               OpStore %184 %185
+        %186 = OpLoad %int %top
+        %187 = OpIAdd %int %186 %int_1
+               OpStore %top %187
+        %188 = OpLoad %int %h_1
+        %189 = OpAccessChain %_ptr_Function_int %stack %187
+               OpStore %189 %188
+               OpBranch %179
+        %179 = OpLabel
+               OpBranch %140
+        %140 = OpLabel
+               OpBranch %138
+        %139 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %115
+        %191 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %34
+         %uv = OpVariable %_ptr_Function_v2float Function %195
+      %color = OpVariable %_ptr_Function_v3float Function %198
+               OpStore %i_2 %int_0
+               OpBranch %199
+        %199 = OpLabel
+               OpLoopMerge %200 %201 None
+               OpBranch %202
+        %202 = OpLabel
+        %203 = OpLoad %int %i_2
+        %205 = OpSLessThan %bool %203 %int_10
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %208
+        %207 = OpLabel
+               OpBranch %206
+        %208 = OpLabel
+               OpBranch %200
+        %206 = OpLabel
+        %209 = OpLoad %int %i_2
+        %210 = OpLoad %int %i_2
+        %211 = OpAccessChain %_ptr_Private_int %obj %uint_0 %209
+        %212 = OpISub %int %int_10 %210
+               OpStore %211 %212
+        %213 = OpLoad %int %i_2
+        %214 = OpLoad %int %i_2
+        %215 = OpAccessChain %_ptr_Private_int %obj %uint_0 %214
+        %216 = OpLoad %int %215
+        %217 = OpLoad %int %i_2
+        %218 = OpAccessChain %_ptr_Private_int %obj %uint_0 %217
+        %219 = OpLoad %int %218
+        %220 = OpAccessChain %_ptr_Private_int %obj %uint_0 %213
+        %221 = OpIMul %int %216 %219
+               OpStore %220 %221
+               OpBranch %201
+        %201 = OpLabel
+        %222 = OpLoad %int %i_2
+        %223 = OpIAdd %int %222 %int_1
+               OpStore %i_2 %223
+               OpBranch %199
+        %200 = OpLabel
+        %224 = OpFunctionCall %void %quicksort_
+        %225 = OpLoad %v4float %gl_FragCoord
+        %227 = OpAccessChain %_ptr_Uniform_v2float %x_32 %uint_0
+        %228 = OpLoad %v2float %227
+        %229 = OpCompositeExtract %float %225 0
+        %230 = OpCompositeExtract %float %225 1
+        %231 = OpCompositeConstruct %v2float %229 %230
+        %232 = OpFDiv %v2float %231 %228
+               OpStore %uv %232
+               OpStore %color %236
+        %237 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %238 = OpLoad %int %237
+        %240 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %241 = OpLoad %float %240
+        %242 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %243 = OpConvertSToF %float %238
+        %244 = OpFAdd %float %241 %243
+               OpStore %242 %244
+        %245 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %246 = OpLoad %float %245
+        %248 = OpFOrdGreaterThan %bool %246 %float_0_25
+               OpSelectionMerge %249 None
+               OpBranchConditional %248 %250 %249
+        %250 = OpLabel
+        %251 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %252 = OpLoad %int %251
+        %253 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %254 = OpLoad %float %253
+        %255 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %256 = OpConvertSToF %float %252
+        %257 = OpFAdd %float %254 %256
+               OpStore %255 %257
+               OpBranch %249
+        %249 = OpLabel
+        %258 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %259 = OpLoad %float %258
+        %261 = OpFOrdGreaterThan %bool %259 %float_0_5
+               OpSelectionMerge %262 None
+               OpBranchConditional %261 %263 %262
+        %263 = OpLabel
+        %265 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %266 = OpLoad %int %265
+        %268 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %269 = OpLoad %float %268
+        %270 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %271 = OpConvertSToF %float %266
+        %272 = OpFAdd %float %269 %271
+               OpStore %270 %272
+               OpBranch %262
+        %262 = OpLabel
+        %273 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %274 = OpLoad %float %273
+        %276 = OpFOrdGreaterThan %bool %274 %float_0_75
+               OpSelectionMerge %277 None
+               OpBranchConditional %276 %278 %277
+        %278 = OpLabel
+        %280 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %281 = OpLoad %int %280
+        %283 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %284 = OpLoad %float %283
+        %285 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %286 = OpConvertSToF %float %281
+        %287 = OpFAdd %float %284 %286
+               OpStore %285 %287
+               OpBranch %277
+        %277 = OpLabel
+        %289 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %290 = OpLoad %int %289
+        %291 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %292 = OpLoad %float %291
+        %293 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %294 = OpConvertSToF %float %290
+        %295 = OpFAdd %float %292 %294
+               OpStore %293 %295
+        %296 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %297 = OpLoad %float %296
+        %298 = OpFOrdGreaterThan %bool %297 %float_0_25
+               OpSelectionMerge %299 None
+               OpBranchConditional %298 %300 %299
+        %300 = OpLabel
+        %302 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %303 = OpLoad %int %302
+        %304 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %305 = OpLoad %float %304
+        %306 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %307 = OpConvertSToF %float %303
+        %308 = OpFAdd %float %305 %307
+               OpStore %306 %308
+               OpBranch %299
+        %299 = OpLabel
+        %309 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %310 = OpLoad %float %309
+        %311 = OpFOrdGreaterThan %bool %310 %float_0_5
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %312
+        %313 = OpLabel
+        %315 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %316 = OpLoad %int %315
+        %317 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %318 = OpLoad %float %317
+        %319 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %320 = OpConvertSToF %float %316
+        %321 = OpFAdd %float %318 %320
+               OpStore %319 %321
+               OpBranch %312
+        %312 = OpLabel
+        %322 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %323 = OpLoad %float %322
+        %324 = OpFOrdGreaterThan %bool %323 %float_0_75
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %325
+        %326 = OpLabel
+        %328 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %329 = OpLoad %int %328
+        %330 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %331 = OpLoad %float %330
+        %332 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %333 = OpConvertSToF %float %329
+        %334 = OpFAdd %float %331 %333
+               OpStore %332 %334
+               OpBranch %325
+        %325 = OpLabel
+        %336 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %337 = OpLoad %int %336
+        %338 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %339 = OpLoad %float %338
+        %340 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %341 = OpConvertSToF %float %337
+        %342 = OpFAdd %float %339 %341
+               OpStore %340 %342
+        %343 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %344 = OpLoad %float %343
+        %345 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %346 = OpLoad %float %345
+        %349 = OpFSub %float %344 %346
+        %347 = OpExtInst %float %348 FAbs %349
+        %350 = OpFOrdLessThan %bool %347 %float_0_25
+               OpSelectionMerge %351 None
+               OpBranchConditional %350 %352 %351
+        %352 = OpLabel
+        %353 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %354 = OpLoad %int %353
+        %355 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %356 = OpLoad %float %355
+        %357 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %358 = OpConvertSToF %float %354
+        %359 = OpFAdd %float %356 %358
+               OpStore %357 %359
+               OpBranch %351
+        %351 = OpLabel
+        %360 = OpLoad %v3float %color
+        %361 = OpExtInst %v3float %348 Normalize %360
+        %362 = OpCompositeExtract %float %361 0
+        %363 = OpCompositeExtract %float %361 1
+        %364 = OpCompositeExtract %float %361 2
+        %365 = OpCompositeConstruct %v4float %362 %363 %364 %float_1
+               OpStore %x_GLF_color %365
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %366
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %370 = OpLabel
+        %371 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %371
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %115
+        %373 = OpLabel
+        %374 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %374
+        %375 = OpFunctionCall %void %main_1
+        %377 = OpLoad %v4float %x_GLF_color
+        %378 = OpCompositeConstruct %main_out %377
+        %376 = OpFunctionCall %void %tint_symbol_3 %378
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..af97bb8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl.expected.wgsl
@@ -0,0 +1,256 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>, x_228 : mat3x3<f32>) {
+  var temp : i32;
+  let x_230 : i32 = *(i);
+  let x_232 : i32 = obj.numbers[x_230];
+  temp = x_232;
+  let x_233 : i32 = *(i);
+  let x_234 : i32 = *(j);
+  let x_236 : i32 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  let x_238 : i32 = *(j);
+  let x_239 : i32 = temp;
+  obj.numbers[x_238] = x_239;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_242 : i32 = *(h);
+  let x_244 : i32 = obj.numbers[x_242];
+  pivot = x_244;
+  let x_245 : i32 = *(l);
+  i_1 = (x_245 - 1);
+  let x_247 : i32 = *(l);
+  j_1 = x_247;
+  loop {
+    let x_252 : i32 = j_1;
+    let x_253 : i32 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    let x_257 : i32 = j_1;
+    let x_259 : i32 = obj.numbers[x_257];
+    let x_260 : i32 = pivot;
+    if ((x_259 <= x_260)) {
+      let x_264 : i32 = i_1;
+      i_1 = (x_264 + 1);
+      let x_266 : i32 = i_1;
+      param = x_266;
+      let x_267 : i32 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1), mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0)));
+    }
+
+    continuing {
+      let x_269 : i32 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  let x_271 : i32 = i_1;
+  i_1 = (x_271 + 1);
+  let x_273 : i32 = i_1;
+  param_2 = x_273;
+  let x_274 : i32 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3), mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0)));
+  let x_276 : i32 = i_1;
+  return x_276;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_278 : i32 = top;
+  let x_279 : i32 = (x_278 + 1);
+  top = x_279;
+  let x_280 : i32 = l_1;
+  stack[x_279] = x_280;
+  let x_282 : i32 = top;
+  let x_283 : i32 = (x_282 + 1);
+  top = x_283;
+  let x_284 : i32 = h_1;
+  stack[x_283] = x_284;
+  loop {
+    let x_290 : i32 = top;
+    if ((x_290 >= 0)) {
+    } else {
+      break;
+    }
+    let x_293 : i32 = top;
+    top = (x_293 - 1);
+    let x_296 : i32 = stack[x_293];
+    h_1 = x_296;
+    let x_297 : i32 = top;
+    top = (x_297 - 1);
+    let x_300 : i32 = stack[x_297];
+    l_1 = x_300;
+    let x_301 : i32 = l_1;
+    param_4 = x_301;
+    let x_302 : i32 = h_1;
+    param_5 = x_302;
+    let x_303 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_303;
+    let x_304 : i32 = p;
+    let x_306 : i32 = l_1;
+    if (((x_304 - 1) > x_306)) {
+      let x_310 : i32 = top;
+      let x_311 : i32 = (x_310 + 1);
+      top = x_311;
+      let x_312 : i32 = l_1;
+      stack[x_311] = x_312;
+      let x_314 : i32 = top;
+      let x_315 : i32 = (x_314 + 1);
+      top = x_315;
+      let x_316 : i32 = p;
+      stack[x_315] = (x_316 - 1);
+    }
+    let x_319 : i32 = p;
+    let x_321 : i32 = h_1;
+    if (((x_319 + 1) < x_321)) {
+      let x_325 : i32 = top;
+      let x_326 : i32 = (x_325 + 1);
+      top = x_326;
+      let x_327 : i32 = p;
+      stack[x_326] = (x_327 + 1);
+      let x_330 : i32 = top;
+      let x_331 : i32 = (x_330 + 1);
+      top = x_331;
+      let x_332 : i32 = h_1;
+      stack[x_331] = x_332;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  i_2 = 0;
+  loop {
+    let x_89 : i32 = i_2;
+    if ((x_89 < 10)) {
+    } else {
+      break;
+    }
+    let x_92 : i32 = i_2;
+    let x_93 : i32 = i_2;
+    obj.numbers[x_92] = (10 - x_93);
+    let x_96 : i32 = i_2;
+    let x_97 : i32 = i_2;
+    let x_99 : i32 = obj.numbers[x_97];
+    let x_100 : i32 = i_2;
+    let x_102 : i32 = obj.numbers[x_100];
+    obj.numbers[x_96] = (x_99 * x_102);
+
+    continuing {
+      let x_105 : i32 = i_2;
+      i_2 = (x_105 + 1);
+    }
+  }
+  quicksort_();
+  let x_108 : vec4<f32> = gl_FragCoord;
+  let x_111 : vec2<f32> = x_32.resolution;
+  uv = (vec2<f32>(x_108.x, x_108.y) / x_111);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_114 : i32 = obj.numbers[0];
+  let x_117 : f32 = color.x;
+  color.x = (x_117 + f32(x_114));
+  let x_121 : f32 = uv.x;
+  if ((x_121 > 0.25)) {
+    let x_126 : i32 = obj.numbers[1];
+    let x_129 : f32 = color.x;
+    color.x = (x_129 + f32(x_126));
+  }
+  let x_133 : f32 = uv.x;
+  if ((x_133 > 0.5)) {
+    let x_138 : i32 = obj.numbers[2];
+    let x_141 : f32 = color.y;
+    color.y = (x_141 + f32(x_138));
+  }
+  let x_145 : f32 = uv.x;
+  if ((x_145 > 0.75)) {
+    let x_150 : i32 = obj.numbers[3];
+    let x_153 : f32 = color.z;
+    color.z = (x_153 + f32(x_150));
+  }
+  let x_157 : i32 = obj.numbers[4];
+  let x_160 : f32 = color.y;
+  color.y = (x_160 + f32(x_157));
+  let x_164 : f32 = uv.y;
+  if ((x_164 > 0.25)) {
+    let x_169 : i32 = obj.numbers[5];
+    let x_172 : f32 = color.x;
+    color.x = (x_172 + f32(x_169));
+  }
+  let x_176 : f32 = uv.y;
+  if ((x_176 > 0.5)) {
+    let x_181 : i32 = obj.numbers[6];
+    let x_184 : f32 = color.y;
+    color.y = (x_184 + f32(x_181));
+  }
+  let x_188 : f32 = uv.y;
+  if ((x_188 > 0.75)) {
+    let x_193 : i32 = obj.numbers[7];
+    let x_196 : f32 = color.z;
+    color.z = (x_196 + f32(x_193));
+  }
+  let x_200 : i32 = obj.numbers[8];
+  let x_203 : f32 = color.z;
+  color.z = (x_203 + f32(x_200));
+  let x_207 : f32 = uv.x;
+  let x_209 : f32 = uv.y;
+  if ((abs((x_207 - x_209)) < 0.25)) {
+    let x_216 : i32 = obj.numbers[9];
+    let x_219 : f32 = color.x;
+    color.x = (x_219 + f32(x_216));
+  }
+  let x_222 : vec3<f32> = color;
+  let x_223 : vec3<f32> = normalize(x_222);
+  x_GLF_color = vec4<f32>(x_223.x, x_223.y, x_223.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm
new file mode 100644
index 0000000..471025c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm
@@ -0,0 +1,193 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+       %true = OpConstantTrue %bool
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %30 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %31 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %32 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %34 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %37 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %39 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %41 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %43 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %44 = OpConstantComposite %_arr_v4float_uint_8 %30 %31 %32 %34 %37 %39 %41 %43
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %50 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %51 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %52 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %53 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %54 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %55 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %56 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %58 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %59 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %60 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %61 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %62 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %63 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %64 = OpConstantComposite %_arr_v4float_uint_16 %49 %50 %51 %52 %53 %54 %55 %56 %49 %57 %58 %59 %60 %61 %62 %63
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %75 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %76 = OpConstantComposite %_arr_v4float_uint_8 %75 %75 %75 %75 %75 %75 %75 %75
+  %float_0_0 = OpConstant %float 0
+         %78 = OpConstantComposite %v4float %float_0_0 %float_0_0 %float_0_0 %float_0_0
+         %79 = OpConstantComposite %_arr_v4float_uint_8 %78 %78 %78 %78 %78 %78 %78 %78
+       %main = OpFunction %void None %8
+         %80 = OpLabel
+         %81 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %76
+         %82 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+         %83 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+         %84 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+         %85 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+               OpStore %81 %44
+         %86 = OpLoad %_arr_v4float_uint_8 %81
+         %87 = OpLoad %v4float %gl_FragCoord
+         %88 = OpVectorShuffle %v2float %87 %87 0 1
+         %89 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %90 = OpLoad %v2float %89
+         %91 = OpFDiv %v2float %88 %90
+         %92 = OpVectorTimesScalar %v2float %91 %float_32
+         %93 = OpExtInst %v2float %1 Floor %92
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpPhi %v4float %22 %80 %96 %97
+         %98 = OpPhi %int %int_0 %80 %99 %97
+        %100 = OpSLessThan %bool %98 %int_8
+               OpLoopMerge %101 %97 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %82 %86
+        %103 = OpAccessChain %_ptr_Function_v4float %82 %98
+        %104 = OpLoad %v4float %103
+               OpSelectionMerge %105 None
+               OpSwitch %uint_0 %106
+        %106 = OpLabel
+        %107 = OpCompositeExtract %float %93 0
+        %108 = OpCompositeExtract %float %104 0
+        %109 = OpFOrdLessThan %bool %107 %108
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+               OpBranch %105
+        %110 = OpLabel
+        %112 = OpCompositeExtract %float %93 1
+        %113 = OpCompositeExtract %float %104 1
+        %114 = OpFOrdLessThan %bool %112 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+               OpBranch %105
+        %115 = OpLabel
+        %117 = OpCompositeExtract %float %104 2
+        %118 = OpFAdd %float %108 %117
+        %119 = OpFOrdGreaterThan %bool %107 %118
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %120
+        %121 = OpLabel
+               OpBranch %105
+        %120 = OpLabel
+        %122 = OpCompositeExtract %float %104 3
+        %123 = OpFAdd %float %113 %122
+        %124 = OpFOrdGreaterThan %bool %112 %123
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+               OpBranch %105
+        %125 = OpLabel
+               OpBranch %105
+        %105 = OpLabel
+        %127 = OpPhi %bool %false %111 %false %116 %false %121 %false %126 %true %125
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+               OpStore %83 %44
+        %130 = OpAccessChain %_ptr_Function_float %83 %98 %uint_0
+        %131 = OpLoad %float %130
+        %132 = OpConvertFToS %int %131
+               OpStore %84 %44
+        %133 = OpAccessChain %_ptr_Function_float %84 %98 %uint_1
+        %134 = OpLoad %float %133
+        %135 = OpLoad %_arr_v4float_uint_8 %81
+               OpStore %81 %79
+               OpStore %81 %135
+        %136 = OpConvertFToS %int %134
+        %137 = OpIMul %int %132 %136
+        %138 = OpIMul %int %98 %int_9
+        %139 = OpIAdd %int %137 %138
+        %140 = OpIAdd %int %139 %int_11
+        %141 = OpSMod %int %140 %int_16
+               OpStore %85 %64
+        %142 = OpAccessChain %_ptr_Function_v4float %85 %141
+        %143 = OpLoad %v4float %142
+               OpBranch %128
+        %128 = OpLabel
+         %96 = OpPhi %v4float %95 %105 %143 %129
+               OpBranch %97
+         %97 = OpLabel
+         %99 = OpIAdd %int %98 %int_1
+               OpBranch %94
+        %101 = OpLabel
+               OpStore %_GLF_color %95
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..2846e30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.hlsl
@@ -0,0 +1,110 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 x_81[8] = {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), 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)};
+  float4 x_82[8] = (float4[8])0;
+  float4 x_83[8] = (float4[8])0;
+  float4 x_84[8] = (float4[8])0;
+  float4 x_85[16] = (float4[16])0;
+  float4 x_95 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_95_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_98_phi = 0;
+  const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+  x_81 = tint_symbol_5;
+  const float4 x_86[8] = x_81;
+  const float4 x_87 = gl_FragCoord;
+  const float2 x_90 = asfloat(x_6[0].xy);
+  const float2 x_93 = floor(((float2(x_87.x, x_87.y) / x_90) * 32.0f));
+  x_95_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_98_phi = 0;
+  while (true) {
+    float4 x_143 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_99 = 0;
+    bool x_127_phi = false;
+    float4 x_96_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_95 = x_95_phi;
+    const int x_98 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_104 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        const float x_107 = x_93.x;
+        const float x_108 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        const float x_112 = x_93.y;
+        const float x_113 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+        break;
+      }
+    }
+    const bool x_127 = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_83 = tint_symbol_6;
+      const float x_131 = x_83[x_98].x;
+      const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_84 = tint_symbol_7;
+      const float x_134 = x_84[x_98].y;
+      const float4 x_135[8] = x_81;
+      const float4 tint_symbol_8[8] = {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), 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)};
+      x_81 = tint_symbol_8;
+      x_81 = x_135;
+      const float4 tint_symbol_9[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+      x_85 = tint_symbol_9;
+      x_143 = x_85[((((int(x_131) * int(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_143;
+    }
+    const float4 x_96 = x_96_phi;
+    {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_10 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_10;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.msl
new file mode 100644
index 0000000..c69c232
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.msl
@@ -0,0 +1,115 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[8];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  tint_array_wrapper x_81 = {.arr={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), 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)}};
+  tint_array_wrapper x_82 = {};
+  tint_array_wrapper x_83 = {};
+  tint_array_wrapper x_84 = {};
+  tint_array_wrapper_1 x_85 = {};
+  float4 x_95 = 0.0f;
+  float4 x_95_phi = 0.0f;
+  int x_98_phi = 0;
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+  x_81 = tint_symbol_4;
+  tint_array_wrapper const x_86 = x_81;
+  float4 const x_87 = *(tint_symbol_10);
+  float2 const x_90 = x_6.resolution;
+  float2 const x_93 = floor(((float2(x_87.x, x_87.y) / x_90) * 32.0f));
+  x_95_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_98_phi = 0;
+  while (true) {
+    float4 x_143 = 0.0f;
+    int x_99 = 0;
+    bool x_127_phi = false;
+    float4 x_96_phi = 0.0f;
+    x_95 = x_95_phi;
+    int const x_98 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_104 = 0.0f;
+    x_82 = x_86;
+    x_104 = x_82.arr[x_98];
+    switch(0u) {
+      default: {
+        float const x_107 = x_93.x;
+        float const x_108 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        float const x_112 = x_93.y;
+        float const x_113 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+        break;
+      }
+    }
+    bool const x_127 = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      tint_array_wrapper const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_83 = tint_symbol_5;
+      float const x_131 = x_83.arr[x_98].x;
+      tint_array_wrapper const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_84 = tint_symbol_6;
+      float const x_134 = x_84.arr[x_98].y;
+      tint_array_wrapper const x_135 = x_81;
+      tint_array_wrapper const tint_symbol_7 = {.arr={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), 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)}};
+      x_81 = tint_symbol_7;
+      x_81 = x_135;
+      tint_array_wrapper_1 const tint_symbol_8 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      x_85 = tint_symbol_8;
+      x_143 = x_85.arr[((((int(x_131) * int(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_143;
+    }
+    float4 const x_96 = x_96_phi;
+    {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  *(tint_symbol_11) = x_95;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_12), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_9 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..5d0f00b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.spvasm
@@ -0,0 +1,290 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 187
+; Schema: 0
+               OpCapability Shader
+         %67 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_81 "x_81"
+               OpName %x_82 "x_82"
+               OpName %x_83 "x_83"
+               OpName %x_84 "x_84"
+               OpName %x_85 "x_85"
+               OpName %x_95 "x_95"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_143 "x_143"
+               OpName %x_99 "x_99"
+               OpName %x_127_phi "x_127_phi"
+               OpName %x_96_phi "x_96_phi"
+               OpName %x_104 "x_104"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %24 = OpConstantComposite %_arr_v4float_uint_8 %23 %23 %23 %23 %23 %23 %23 %23
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %27 = OpConstantNull %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %35 = OpConstantNull %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %42 = OpConstantNull %int
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %45 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %46 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %47 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %49 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %52 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %54 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %56 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %58 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %59 = OpConstantComposite %_arr_v4float_uint_8 %45 %46 %47 %49 %52 %54 %56 %58
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %76 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %87 = OpConstantNull %bool
+      %int_8 = OpConstant %int 8
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+        %140 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %141 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %142 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %143 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %144 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %145 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %146 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %147 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %148 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %149 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %150 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %152 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %153 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %154 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %155 = OpConstantComposite %_arr_v4float_uint_16 %140 %141 %142 %143 %144 %145 %146 %147 %140 %148 %149 %150 %151 %152 %153 %154
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %174 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_81 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_82 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_83 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_84 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_85 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %35
+       %x_95 = OpVariable %_ptr_Function_v4float Function %5
+   %x_95_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_98_phi = OpVariable %_ptr_Function_int Function %42
+      %x_143 = OpVariable %_ptr_Function_v4float Function %5
+       %x_99 = OpVariable %_ptr_Function_int Function %42
+  %x_127_phi = OpVariable %_ptr_Function_bool Function %87
+   %x_96_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_104 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %x_81 %24
+               OpStore %x_81 %59
+         %60 = OpLoad %_arr_v4float_uint_8 %x_81
+         %61 = OpLoad %v4float %gl_FragCoord
+         %64 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %65 = OpLoad %v2float %64
+         %68 = OpCompositeExtract %float %61 0
+         %69 = OpCompositeExtract %float %61 1
+         %70 = OpCompositeConstruct %v2float %68 %69
+         %71 = OpFDiv %v2float %70 %65
+         %73 = OpVectorTimesScalar %v2float %71 %float_32
+         %66 = OpExtInst %v2float %67 Floor %73
+               OpStore %x_95_phi %76
+               OpStore %x_98_phi %int_0
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %89 = OpLoad %v4float %x_95_phi
+               OpStore %x_95 %89
+         %90 = OpLoad %int %x_98_phi
+         %92 = OpSLessThan %bool %90 %int_8
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpBranch %93
+         %95 = OpLabel
+               OpBranch %79
+         %93 = OpLabel
+               OpStore %x_82 %60
+         %97 = OpAccessChain %_ptr_Function_v4float %x_82 %90
+         %98 = OpLoad %v4float %97
+               OpStore %x_104 %98
+               OpSelectionMerge %99 None
+               OpSwitch %uint_0 %100
+        %100 = OpLabel
+        %101 = OpCompositeExtract %float %66 0
+        %103 = OpAccessChain %_ptr_Function_float %x_104 %uint_0
+        %104 = OpLoad %float %103
+        %105 = OpFOrdLessThan %bool %101 %104
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %106 = OpLabel
+        %109 = OpCompositeExtract %float %66 1
+        %111 = OpAccessChain %_ptr_Function_float %x_104 %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpFOrdLessThan %bool %109 %112
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %114 = OpLabel
+        %117 = OpAccessChain %_ptr_Function_float %x_104 %uint_2
+        %118 = OpLoad %float %117
+        %119 = OpFAdd %float %104 %118
+        %120 = OpFOrdGreaterThan %bool %101 %119
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %121
+        %122 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %121 = OpLabel
+        %124 = OpAccessChain %_ptr_Function_float %x_104 %uint_3
+        %125 = OpLoad %float %124
+        %126 = OpFAdd %float %112 %125
+        %127 = OpFOrdGreaterThan %bool %109 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %128 = OpLabel
+               OpStore %x_127_phi %true
+               OpBranch %99
+         %99 = OpLabel
+        %131 = OpLoad %bool %x_127_phi
+        %132 = OpLoad %v4float %x_95
+               OpStore %x_96_phi %132
+               OpSelectionMerge %133 None
+               OpBranchConditional %131 %134 %133
+        %134 = OpLabel
+               OpStore %x_83 %59
+        %135 = OpAccessChain %_ptr_Function_float %x_83 %90 %uint_0
+        %136 = OpLoad %float %135
+               OpStore %x_84 %59
+        %137 = OpAccessChain %_ptr_Function_float %x_84 %90 %uint_1
+        %138 = OpLoad %float %137
+        %139 = OpLoad %_arr_v4float_uint_8 %x_81
+               OpStore %x_81 %24
+               OpStore %x_81 %139
+               OpStore %x_85 %155
+        %156 = OpConvertFToS %int %136
+        %157 = OpConvertFToS %int %138
+        %158 = OpIMul %int %156 %157
+        %160 = OpIMul %int %90 %int_9
+        %161 = OpIAdd %int %158 %160
+        %163 = OpIAdd %int %161 %int_11
+        %165 = OpSMod %int %163 %int_16
+        %166 = OpAccessChain %_ptr_Function_v4float %x_85 %165
+        %167 = OpLoad %v4float %166
+               OpStore %x_143 %167
+        %168 = OpLoad %v4float %x_143
+               OpStore %x_96_phi %168
+               OpBranch %133
+        %133 = OpLabel
+        %169 = OpLoad %v4float %x_96_phi
+               OpBranch %80
+         %80 = OpLabel
+        %171 = OpIAdd %int %90 %int_1
+               OpStore %x_99 %171
+               OpStore %x_95_phi %169
+        %172 = OpLoad %int %x_99
+               OpStore %x_98_phi %172
+               OpBranch %78
+         %79 = OpLabel
+        %173 = OpLoad %v4float %x_95
+               OpStore %x_GLF_color %173
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %174
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %178 = OpLabel
+        %179 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %179
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %181 = OpLabel
+        %182 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %182
+        %183 = OpFunctionCall %void %main_1
+        %185 = OpLoad %v4float %x_GLF_color
+        %186 = OpCompositeConstruct %main_out %185
+        %184 = OpFunctionCall %void %tint_symbol_3 %186
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..8f0982f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.spvasm.expected.wgsl
@@ -0,0 +1,103 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_81 : array<vec4<f32>, 8> = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  var x_82 : array<vec4<f32>, 8>;
+  var x_83 : array<vec4<f32>, 8>;
+  var x_84 : array<vec4<f32>, 8>;
+  var x_85 : array<vec4<f32>, 16>;
+  var x_95 : vec4<f32>;
+  var x_95_phi : vec4<f32>;
+  var x_98_phi : i32;
+  x_81 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+  let x_86 : array<vec4<f32>, 8> = x_81;
+  let x_87 : vec4<f32> = gl_FragCoord;
+  let x_90 : vec2<f32> = x_6.resolution;
+  let x_93 : vec2<f32> = floor(((vec2<f32>(x_87.x, x_87.y) / x_90) * 32.0));
+  x_95_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  x_98_phi = 0;
+  loop {
+    var x_143 : vec4<f32>;
+    var x_99 : i32;
+    var x_127_phi : bool;
+    var x_96_phi : vec4<f32>;
+    x_95 = x_95_phi;
+    let x_98 : i32 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    var x_104 : vec4<f32>;
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        let x_107 : f32 = x_93.x;
+        let x_108 : f32 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        let x_112 : f32 = x_93.y;
+        let x_113 : f32 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+      }
+    }
+    let x_127 : bool = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      x_83 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_131 : f32 = x_83[x_98].x;
+      x_84 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_134 : f32 = x_84[x_98].y;
+      let x_135 : array<vec4<f32>, 8> = x_81;
+      x_81 = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+      x_81 = x_135;
+      x_85 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      x_143 = x_85[((((i32(x_131) * i32(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_143;
+    }
+    let x_96 : vec4<f32> = x_96_phi;
+
+    continuing {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
new file mode 100644
index 0000000..8f0982f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
@@ -0,0 +1,103 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_81 : array<vec4<f32>, 8> = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  var x_82 : array<vec4<f32>, 8>;
+  var x_83 : array<vec4<f32>, 8>;
+  var x_84 : array<vec4<f32>, 8>;
+  var x_85 : array<vec4<f32>, 16>;
+  var x_95 : vec4<f32>;
+  var x_95_phi : vec4<f32>;
+  var x_98_phi : i32;
+  x_81 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+  let x_86 : array<vec4<f32>, 8> = x_81;
+  let x_87 : vec4<f32> = gl_FragCoord;
+  let x_90 : vec2<f32> = x_6.resolution;
+  let x_93 : vec2<f32> = floor(((vec2<f32>(x_87.x, x_87.y) / x_90) * 32.0));
+  x_95_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  x_98_phi = 0;
+  loop {
+    var x_143 : vec4<f32>;
+    var x_99 : i32;
+    var x_127_phi : bool;
+    var x_96_phi : vec4<f32>;
+    x_95 = x_95_phi;
+    let x_98 : i32 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    var x_104 : vec4<f32>;
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        let x_107 : f32 = x_93.x;
+        let x_108 : f32 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        let x_112 : f32 = x_93.y;
+        let x_113 : f32 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+      }
+    }
+    let x_127 : bool = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      x_83 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_131 : f32 = x_83[x_98].x;
+      x_84 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_134 : f32 = x_84[x_98].y;
+      let x_135 : array<vec4<f32>, 8> = x_81;
+      x_81 = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+      x_81 = x_135;
+      x_85 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      x_143 = x_85[((((i32(x_131) * i32(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_143;
+    }
+    let x_96 : vec4<f32> = x_96_phi;
+
+    continuing {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..2846e30
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.hlsl
@@ -0,0 +1,110 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 x_81[8] = {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), 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)};
+  float4 x_82[8] = (float4[8])0;
+  float4 x_83[8] = (float4[8])0;
+  float4 x_84[8] = (float4[8])0;
+  float4 x_85[16] = (float4[16])0;
+  float4 x_95 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_95_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_98_phi = 0;
+  const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+  x_81 = tint_symbol_5;
+  const float4 x_86[8] = x_81;
+  const float4 x_87 = gl_FragCoord;
+  const float2 x_90 = asfloat(x_6[0].xy);
+  const float2 x_93 = floor(((float2(x_87.x, x_87.y) / x_90) * 32.0f));
+  x_95_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_98_phi = 0;
+  while (true) {
+    float4 x_143 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_99 = 0;
+    bool x_127_phi = false;
+    float4 x_96_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_95 = x_95_phi;
+    const int x_98 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_104 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        const float x_107 = x_93.x;
+        const float x_108 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        const float x_112 = x_93.y;
+        const float x_113 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+        break;
+      }
+    }
+    const bool x_127 = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_83 = tint_symbol_6;
+      const float x_131 = x_83[x_98].x;
+      const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_84 = tint_symbol_7;
+      const float x_134 = x_84[x_98].y;
+      const float4 x_135[8] = x_81;
+      const float4 tint_symbol_8[8] = {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), 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)};
+      x_81 = tint_symbol_8;
+      x_81 = x_135;
+      const float4 tint_symbol_9[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+      x_85 = tint_symbol_9;
+      x_143 = x_85[((((int(x_131) * int(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_143;
+    }
+    const float4 x_96 = x_96_phi;
+    {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_10 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_10;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.msl
new file mode 100644
index 0000000..c69c232
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.msl
@@ -0,0 +1,115 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[8];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  tint_array_wrapper x_81 = {.arr={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), 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)}};
+  tint_array_wrapper x_82 = {};
+  tint_array_wrapper x_83 = {};
+  tint_array_wrapper x_84 = {};
+  tint_array_wrapper_1 x_85 = {};
+  float4 x_95 = 0.0f;
+  float4 x_95_phi = 0.0f;
+  int x_98_phi = 0;
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+  x_81 = tint_symbol_4;
+  tint_array_wrapper const x_86 = x_81;
+  float4 const x_87 = *(tint_symbol_10);
+  float2 const x_90 = x_6.resolution;
+  float2 const x_93 = floor(((float2(x_87.x, x_87.y) / x_90) * 32.0f));
+  x_95_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_98_phi = 0;
+  while (true) {
+    float4 x_143 = 0.0f;
+    int x_99 = 0;
+    bool x_127_phi = false;
+    float4 x_96_phi = 0.0f;
+    x_95 = x_95_phi;
+    int const x_98 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_104 = 0.0f;
+    x_82 = x_86;
+    x_104 = x_82.arr[x_98];
+    switch(0u) {
+      default: {
+        float const x_107 = x_93.x;
+        float const x_108 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        float const x_112 = x_93.y;
+        float const x_113 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+        break;
+      }
+    }
+    bool const x_127 = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      tint_array_wrapper const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_83 = tint_symbol_5;
+      float const x_131 = x_83.arr[x_98].x;
+      tint_array_wrapper const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_84 = tint_symbol_6;
+      float const x_134 = x_84.arr[x_98].y;
+      tint_array_wrapper const x_135 = x_81;
+      tint_array_wrapper const tint_symbol_7 = {.arr={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), 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)}};
+      x_81 = tint_symbol_7;
+      x_81 = x_135;
+      tint_array_wrapper_1 const tint_symbol_8 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      x_85 = tint_symbol_8;
+      x_143 = x_85.arr[((((int(x_131) * int(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_143;
+    }
+    float4 const x_96 = x_96_phi;
+    {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  *(tint_symbol_11) = x_95;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_12), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_9 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..5d0f00b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.spvasm
@@ -0,0 +1,290 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 187
+; Schema: 0
+               OpCapability Shader
+         %67 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_81 "x_81"
+               OpName %x_82 "x_82"
+               OpName %x_83 "x_83"
+               OpName %x_84 "x_84"
+               OpName %x_85 "x_85"
+               OpName %x_95 "x_95"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_143 "x_143"
+               OpName %x_99 "x_99"
+               OpName %x_127_phi "x_127_phi"
+               OpName %x_96_phi "x_96_phi"
+               OpName %x_104 "x_104"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %24 = OpConstantComposite %_arr_v4float_uint_8 %23 %23 %23 %23 %23 %23 %23 %23
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %27 = OpConstantNull %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %35 = OpConstantNull %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %42 = OpConstantNull %int
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %45 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %46 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %47 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %49 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %52 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %54 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %56 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %58 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %59 = OpConstantComposite %_arr_v4float_uint_8 %45 %46 %47 %49 %52 %54 %56 %58
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %76 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %87 = OpConstantNull %bool
+      %int_8 = OpConstant %int 8
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+        %140 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %141 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %142 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %143 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %144 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %145 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %146 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %147 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %148 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %149 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %150 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %151 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %152 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %153 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %154 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %155 = OpConstantComposite %_arr_v4float_uint_16 %140 %141 %142 %143 %144 %145 %146 %147 %140 %148 %149 %150 %151 %152 %153 %154
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %174 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_81 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_82 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_83 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_84 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_85 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %35
+       %x_95 = OpVariable %_ptr_Function_v4float Function %5
+   %x_95_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_98_phi = OpVariable %_ptr_Function_int Function %42
+      %x_143 = OpVariable %_ptr_Function_v4float Function %5
+       %x_99 = OpVariable %_ptr_Function_int Function %42
+  %x_127_phi = OpVariable %_ptr_Function_bool Function %87
+   %x_96_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_104 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %x_81 %24
+               OpStore %x_81 %59
+         %60 = OpLoad %_arr_v4float_uint_8 %x_81
+         %61 = OpLoad %v4float %gl_FragCoord
+         %64 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %65 = OpLoad %v2float %64
+         %68 = OpCompositeExtract %float %61 0
+         %69 = OpCompositeExtract %float %61 1
+         %70 = OpCompositeConstruct %v2float %68 %69
+         %71 = OpFDiv %v2float %70 %65
+         %73 = OpVectorTimesScalar %v2float %71 %float_32
+         %66 = OpExtInst %v2float %67 Floor %73
+               OpStore %x_95_phi %76
+               OpStore %x_98_phi %int_0
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %89 = OpLoad %v4float %x_95_phi
+               OpStore %x_95 %89
+         %90 = OpLoad %int %x_98_phi
+         %92 = OpSLessThan %bool %90 %int_8
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpBranch %93
+         %95 = OpLabel
+               OpBranch %79
+         %93 = OpLabel
+               OpStore %x_82 %60
+         %97 = OpAccessChain %_ptr_Function_v4float %x_82 %90
+         %98 = OpLoad %v4float %97
+               OpStore %x_104 %98
+               OpSelectionMerge %99 None
+               OpSwitch %uint_0 %100
+        %100 = OpLabel
+        %101 = OpCompositeExtract %float %66 0
+        %103 = OpAccessChain %_ptr_Function_float %x_104 %uint_0
+        %104 = OpLoad %float %103
+        %105 = OpFOrdLessThan %bool %101 %104
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %106 = OpLabel
+        %109 = OpCompositeExtract %float %66 1
+        %111 = OpAccessChain %_ptr_Function_float %x_104 %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpFOrdLessThan %bool %109 %112
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %114 = OpLabel
+        %117 = OpAccessChain %_ptr_Function_float %x_104 %uint_2
+        %118 = OpLoad %float %117
+        %119 = OpFAdd %float %104 %118
+        %120 = OpFOrdGreaterThan %bool %101 %119
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %121
+        %122 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %121 = OpLabel
+        %124 = OpAccessChain %_ptr_Function_float %x_104 %uint_3
+        %125 = OpLoad %float %124
+        %126 = OpFAdd %float %112 %125
+        %127 = OpFOrdGreaterThan %bool %109 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %128 = OpLabel
+               OpStore %x_127_phi %true
+               OpBranch %99
+         %99 = OpLabel
+        %131 = OpLoad %bool %x_127_phi
+        %132 = OpLoad %v4float %x_95
+               OpStore %x_96_phi %132
+               OpSelectionMerge %133 None
+               OpBranchConditional %131 %134 %133
+        %134 = OpLabel
+               OpStore %x_83 %59
+        %135 = OpAccessChain %_ptr_Function_float %x_83 %90 %uint_0
+        %136 = OpLoad %float %135
+               OpStore %x_84 %59
+        %137 = OpAccessChain %_ptr_Function_float %x_84 %90 %uint_1
+        %138 = OpLoad %float %137
+        %139 = OpLoad %_arr_v4float_uint_8 %x_81
+               OpStore %x_81 %24
+               OpStore %x_81 %139
+               OpStore %x_85 %155
+        %156 = OpConvertFToS %int %136
+        %157 = OpConvertFToS %int %138
+        %158 = OpIMul %int %156 %157
+        %160 = OpIMul %int %90 %int_9
+        %161 = OpIAdd %int %158 %160
+        %163 = OpIAdd %int %161 %int_11
+        %165 = OpSMod %int %163 %int_16
+        %166 = OpAccessChain %_ptr_Function_v4float %x_85 %165
+        %167 = OpLoad %v4float %166
+               OpStore %x_143 %167
+        %168 = OpLoad %v4float %x_143
+               OpStore %x_96_phi %168
+               OpBranch %133
+        %133 = OpLabel
+        %169 = OpLoad %v4float %x_96_phi
+               OpBranch %80
+         %80 = OpLabel
+        %171 = OpIAdd %int %90 %int_1
+               OpStore %x_99 %171
+               OpStore %x_95_phi %169
+        %172 = OpLoad %int %x_99
+               OpStore %x_98_phi %172
+               OpBranch %78
+         %79 = OpLabel
+        %173 = OpLoad %v4float %x_95
+               OpStore %x_GLF_color %173
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %174
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %178 = OpLabel
+        %179 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %179
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %181 = OpLabel
+        %182 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %182
+        %183 = OpFunctionCall %void %main_1
+        %185 = OpLoad %v4float %x_GLF_color
+        %186 = OpCompositeConstruct %main_out %185
+        %184 = OpFunctionCall %void %tint_symbol_3 %186
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..8f0982f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl.expected.wgsl
@@ -0,0 +1,103 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_81 : array<vec4<f32>, 8> = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  var x_82 : array<vec4<f32>, 8>;
+  var x_83 : array<vec4<f32>, 8>;
+  var x_84 : array<vec4<f32>, 8>;
+  var x_85 : array<vec4<f32>, 16>;
+  var x_95 : vec4<f32>;
+  var x_95_phi : vec4<f32>;
+  var x_98_phi : i32;
+  x_81 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+  let x_86 : array<vec4<f32>, 8> = x_81;
+  let x_87 : vec4<f32> = gl_FragCoord;
+  let x_90 : vec2<f32> = x_6.resolution;
+  let x_93 : vec2<f32> = floor(((vec2<f32>(x_87.x, x_87.y) / x_90) * 32.0));
+  x_95_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  x_98_phi = 0;
+  loop {
+    var x_143 : vec4<f32>;
+    var x_99 : i32;
+    var x_127_phi : bool;
+    var x_96_phi : vec4<f32>;
+    x_95 = x_95_phi;
+    let x_98 : i32 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    var x_104 : vec4<f32>;
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        let x_107 : f32 = x_93.x;
+        let x_108 : f32 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        let x_112 : f32 = x_93.y;
+        let x_113 : f32 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+      }
+    }
+    let x_127 : bool = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      x_83 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_131 : f32 = x_83[x_98].x;
+      x_84 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_134 : f32 = x_84[x_98].y;
+      let x_135 : array<vec4<f32>, 8> = x_81;
+      x_81 = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+      x_81 = x_135;
+      x_85 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      x_143 = x_85[((((i32(x_131) * i32(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_143;
+    }
+    let x_96 : vec4<f32> = x_96_phi;
+
+    continuing {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm
new file mode 100644
index 0000000..7ef0dcd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm
@@ -0,0 +1,190 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+       %true = OpConstantTrue %bool
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %30 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %31 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %32 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %34 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %37 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %39 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %41 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %43 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %44 = OpConstantComposite %_arr_v4float_uint_8 %30 %31 %32 %34 %37 %39 %41 %43
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+         %49 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %50 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %51 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %52 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %53 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %54 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %55 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %56 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %58 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %59 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %60 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %61 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %62 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %63 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %64 = OpConstantComposite %_arr_v4float_uint_16 %49 %50 %51 %52 %53 %54 %55 %56 %49 %57 %58 %59 %60 %61 %62 %63
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %75 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %76 = OpConstantComposite %_arr_v4float_uint_8 %75 %75 %75 %75 %75 %75 %75 %75
+  %float_0_0 = OpConstant %float 0
+         %78 = OpConstantComposite %v4float %float_0_0 %float_0_0 %float_0_0 %float_0_0
+         %79 = OpConstantComposite %_arr_v4float_uint_8 %78 %78 %78 %78 %78 %78 %78 %78
+       %main = OpFunction %void None %8
+         %80 = OpLabel
+         %81 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %76
+         %82 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+         %83 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+         %84 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+         %85 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+               OpStore %81 %44
+         %86 = OpLoad %_arr_v4float_uint_8 %81
+         %87 = OpLoad %v4float %gl_FragCoord
+         %88 = OpVectorShuffle %v2float %87 %87 0 1
+         %89 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %90 = OpLoad %v2float %89
+         %91 = OpFDiv %v2float %88 %90
+         %92 = OpVectorTimesScalar %v2float %91 %float_32
+         %93 = OpExtInst %v2float %1 Floor %92
+               OpBranch %94
+         %94 = OpLabel
+         %95 = OpPhi %v4float %22 %80 %96 %97
+         %98 = OpPhi %int %int_0 %80 %99 %97
+        %100 = OpSLessThan %bool %98 %int_8
+               OpLoopMerge %101 %97 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpStore %82 %86
+        %103 = OpAccessChain %_ptr_Function_v4float %82 %98
+        %104 = OpLoad %v4float %103
+               OpSelectionMerge %105 None
+               OpSwitch %uint_0 %106
+        %106 = OpLabel
+        %107 = OpCompositeExtract %float %93 0
+        %108 = OpCompositeExtract %float %104 0
+        %109 = OpFOrdLessThan %bool %107 %108
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+               OpBranch %105
+        %110 = OpLabel
+        %112 = OpCompositeExtract %float %93 1
+        %113 = OpCompositeExtract %float %104 1
+        %114 = OpFOrdLessThan %bool %112 %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %115
+        %116 = OpLabel
+               OpBranch %105
+        %115 = OpLabel
+        %117 = OpCompositeExtract %float %104 2
+        %118 = OpFAdd %float %108 %117
+        %119 = OpFOrdGreaterThan %bool %107 %118
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %120
+        %121 = OpLabel
+               OpBranch %105
+        %120 = OpLabel
+        %122 = OpCompositeExtract %float %104 3
+        %123 = OpFAdd %float %113 %122
+        %124 = OpFOrdGreaterThan %bool %112 %123
+               OpSelectionMerge %125 None
+               OpBranchConditional %124 %126 %125
+        %126 = OpLabel
+               OpBranch %105
+        %125 = OpLabel
+               OpBranch %105
+        %105 = OpLabel
+        %127 = OpPhi %bool %false %111 %false %116 %false %121 %false %126 %true %125
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+               OpStore %83 %44
+        %130 = OpAccessChain %_ptr_Function_float %83 %98 %uint_0
+        %131 = OpLoad %float %130
+        %132 = OpConvertFToS %int %131
+               OpStore %84 %44
+        %133 = OpAccessChain %_ptr_Function_float %84 %98 %uint_1
+        %134 = OpLoad %float %133
+        %135 = OpConvertFToS %int %134
+        %136 = OpIMul %int %132 %135
+        %137 = OpIMul %int %98 %int_9
+        %138 = OpIAdd %int %136 %137
+        %139 = OpIAdd %int %138 %int_11
+        %140 = OpSMod %int %139 %int_16
+               OpStore %85 %64
+        %141 = OpAccessChain %_ptr_Function_v4float %85 %140
+        %142 = OpLoad %v4float %141
+               OpBranch %128
+        %128 = OpLabel
+         %96 = OpPhi %v4float %95 %105 %142 %129
+               OpBranch %97
+         %97 = OpLabel
+         %99 = OpIAdd %int %98 %int_1
+               OpBranch %94
+        %101 = OpLabel
+               OpStore %_GLF_color %95
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.hlsl
new file mode 100644
index 0000000..d50630e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.hlsl
@@ -0,0 +1,106 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 x_81[8] = {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), 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)};
+  float4 x_82[8] = (float4[8])0;
+  float4 x_83[8] = (float4[8])0;
+  float4 x_84[8] = (float4[8])0;
+  float4 x_85[16] = (float4[16])0;
+  float4 x_95 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_95_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_98_phi = 0;
+  const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+  x_81 = tint_symbol_5;
+  const float4 x_86[8] = x_81;
+  const float4 x_87 = gl_FragCoord;
+  const float2 x_90 = asfloat(x_6[0].xy);
+  const float2 x_93 = floor(((float2(x_87.x, x_87.y) / x_90) * 32.0f));
+  x_95_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_98_phi = 0;
+  while (true) {
+    float4 x_142 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_99 = 0;
+    bool x_127_phi = false;
+    float4 x_96_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_95 = x_95_phi;
+    const int x_98 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_104 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        const float x_107 = x_93.x;
+        const float x_108 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        const float x_112 = x_93.y;
+        const float x_113 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+        break;
+      }
+    }
+    const bool x_127 = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_83 = tint_symbol_6;
+      const float x_131 = x_83[x_98].x;
+      const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_84 = tint_symbol_7;
+      const float x_134 = x_84[x_98].y;
+      const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+      x_85 = tint_symbol_8;
+      x_142 = x_85[((((int(x_131) * int(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_142;
+    }
+    const float4 x_96 = x_96_phi;
+    {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.msl
new file mode 100644
index 0000000..f5eb2e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.msl
@@ -0,0 +1,111 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[8];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  tint_array_wrapper x_81 = {.arr={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), 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)}};
+  tint_array_wrapper x_82 = {};
+  tint_array_wrapper x_83 = {};
+  tint_array_wrapper x_84 = {};
+  tint_array_wrapper_1 x_85 = {};
+  float4 x_95 = 0.0f;
+  float4 x_95_phi = 0.0f;
+  int x_98_phi = 0;
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+  x_81 = tint_symbol_4;
+  tint_array_wrapper const x_86 = x_81;
+  float4 const x_87 = *(tint_symbol_9);
+  float2 const x_90 = x_6.resolution;
+  float2 const x_93 = floor(((float2(x_87.x, x_87.y) / x_90) * 32.0f));
+  x_95_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_98_phi = 0;
+  while (true) {
+    float4 x_142 = 0.0f;
+    int x_99 = 0;
+    bool x_127_phi = false;
+    float4 x_96_phi = 0.0f;
+    x_95 = x_95_phi;
+    int const x_98 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_104 = 0.0f;
+    x_82 = x_86;
+    x_104 = x_82.arr[x_98];
+    switch(0u) {
+      default: {
+        float const x_107 = x_93.x;
+        float const x_108 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        float const x_112 = x_93.y;
+        float const x_113 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+        break;
+      }
+    }
+    bool const x_127 = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      tint_array_wrapper const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_83 = tint_symbol_5;
+      float const x_131 = x_83.arr[x_98].x;
+      tint_array_wrapper const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_84 = tint_symbol_6;
+      float const x_134 = x_84.arr[x_98].y;
+      tint_array_wrapper_1 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      x_85 = tint_symbol_7;
+      x_142 = x_85.arr[((((int(x_131) * int(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_142;
+    }
+    float4 const x_96 = x_96_phi;
+    {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  *(tint_symbol_10) = x_95;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.spvasm
new file mode 100644
index 0000000..4ef0500
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.spvasm
@@ -0,0 +1,287 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 186
+; Schema: 0
+               OpCapability Shader
+         %67 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_81 "x_81"
+               OpName %x_82 "x_82"
+               OpName %x_83 "x_83"
+               OpName %x_84 "x_84"
+               OpName %x_85 "x_85"
+               OpName %x_95 "x_95"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_142 "x_142"
+               OpName %x_99 "x_99"
+               OpName %x_127_phi "x_127_phi"
+               OpName %x_96_phi "x_96_phi"
+               OpName %x_104 "x_104"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %24 = OpConstantComposite %_arr_v4float_uint_8 %23 %23 %23 %23 %23 %23 %23 %23
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %27 = OpConstantNull %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %35 = OpConstantNull %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %42 = OpConstantNull %int
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %45 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %46 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %47 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %49 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %52 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %54 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %56 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %58 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %59 = OpConstantComposite %_arr_v4float_uint_8 %45 %46 %47 %49 %52 %54 %56 %58
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %76 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %87 = OpConstantNull %bool
+      %int_8 = OpConstant %int 8
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+        %139 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %140 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %141 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %142 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %143 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %144 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %145 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %146 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %147 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %148 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %149 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %150 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %151 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %152 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %153 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %154 = OpConstantComposite %_arr_v4float_uint_16 %139 %140 %141 %142 %143 %144 %145 %146 %139 %147 %148 %149 %150 %151 %152 %153
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %173 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_81 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_82 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_83 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_84 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_85 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %35
+       %x_95 = OpVariable %_ptr_Function_v4float Function %5
+   %x_95_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_98_phi = OpVariable %_ptr_Function_int Function %42
+      %x_142 = OpVariable %_ptr_Function_v4float Function %5
+       %x_99 = OpVariable %_ptr_Function_int Function %42
+  %x_127_phi = OpVariable %_ptr_Function_bool Function %87
+   %x_96_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_104 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %x_81 %24
+               OpStore %x_81 %59
+         %60 = OpLoad %_arr_v4float_uint_8 %x_81
+         %61 = OpLoad %v4float %gl_FragCoord
+         %64 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %65 = OpLoad %v2float %64
+         %68 = OpCompositeExtract %float %61 0
+         %69 = OpCompositeExtract %float %61 1
+         %70 = OpCompositeConstruct %v2float %68 %69
+         %71 = OpFDiv %v2float %70 %65
+         %73 = OpVectorTimesScalar %v2float %71 %float_32
+         %66 = OpExtInst %v2float %67 Floor %73
+               OpStore %x_95_phi %76
+               OpStore %x_98_phi %int_0
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %89 = OpLoad %v4float %x_95_phi
+               OpStore %x_95 %89
+         %90 = OpLoad %int %x_98_phi
+         %92 = OpSLessThan %bool %90 %int_8
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpBranch %93
+         %95 = OpLabel
+               OpBranch %79
+         %93 = OpLabel
+               OpStore %x_82 %60
+         %97 = OpAccessChain %_ptr_Function_v4float %x_82 %90
+         %98 = OpLoad %v4float %97
+               OpStore %x_104 %98
+               OpSelectionMerge %99 None
+               OpSwitch %uint_0 %100
+        %100 = OpLabel
+        %101 = OpCompositeExtract %float %66 0
+        %103 = OpAccessChain %_ptr_Function_float %x_104 %uint_0
+        %104 = OpLoad %float %103
+        %105 = OpFOrdLessThan %bool %101 %104
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %106 = OpLabel
+        %109 = OpCompositeExtract %float %66 1
+        %111 = OpAccessChain %_ptr_Function_float %x_104 %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpFOrdLessThan %bool %109 %112
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %114 = OpLabel
+        %117 = OpAccessChain %_ptr_Function_float %x_104 %uint_2
+        %118 = OpLoad %float %117
+        %119 = OpFAdd %float %104 %118
+        %120 = OpFOrdGreaterThan %bool %101 %119
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %121
+        %122 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %121 = OpLabel
+        %124 = OpAccessChain %_ptr_Function_float %x_104 %uint_3
+        %125 = OpLoad %float %124
+        %126 = OpFAdd %float %112 %125
+        %127 = OpFOrdGreaterThan %bool %109 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %128 = OpLabel
+               OpStore %x_127_phi %true
+               OpBranch %99
+         %99 = OpLabel
+        %131 = OpLoad %bool %x_127_phi
+        %132 = OpLoad %v4float %x_95
+               OpStore %x_96_phi %132
+               OpSelectionMerge %133 None
+               OpBranchConditional %131 %134 %133
+        %134 = OpLabel
+               OpStore %x_83 %59
+        %135 = OpAccessChain %_ptr_Function_float %x_83 %90 %uint_0
+        %136 = OpLoad %float %135
+               OpStore %x_84 %59
+        %137 = OpAccessChain %_ptr_Function_float %x_84 %90 %uint_1
+        %138 = OpLoad %float %137
+               OpStore %x_85 %154
+        %155 = OpConvertFToS %int %136
+        %156 = OpConvertFToS %int %138
+        %157 = OpIMul %int %155 %156
+        %159 = OpIMul %int %90 %int_9
+        %160 = OpIAdd %int %157 %159
+        %162 = OpIAdd %int %160 %int_11
+        %164 = OpSMod %int %162 %int_16
+        %165 = OpAccessChain %_ptr_Function_v4float %x_85 %164
+        %166 = OpLoad %v4float %165
+               OpStore %x_142 %166
+        %167 = OpLoad %v4float %x_142
+               OpStore %x_96_phi %167
+               OpBranch %133
+        %133 = OpLabel
+        %168 = OpLoad %v4float %x_96_phi
+               OpBranch %80
+         %80 = OpLabel
+        %170 = OpIAdd %int %90 %int_1
+               OpStore %x_99 %170
+               OpStore %x_95_phi %168
+        %171 = OpLoad %int %x_99
+               OpStore %x_98_phi %171
+               OpBranch %78
+         %79 = OpLabel
+        %172 = OpLoad %v4float %x_95
+               OpStore %x_GLF_color %172
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %173
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %177 = OpLabel
+        %178 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %178
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %180 = OpLabel
+        %181 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %181
+        %182 = OpFunctionCall %void %main_1
+        %184 = OpLoad %v4float %x_GLF_color
+        %185 = OpCompositeConstruct %main_out %184
+        %183 = OpFunctionCall %void %tint_symbol_3 %185
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.wgsl
new file mode 100644
index 0000000..1bf1c72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.spvasm.expected.wgsl
@@ -0,0 +1,100 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_81 : array<vec4<f32>, 8> = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  var x_82 : array<vec4<f32>, 8>;
+  var x_83 : array<vec4<f32>, 8>;
+  var x_84 : array<vec4<f32>, 8>;
+  var x_85 : array<vec4<f32>, 16>;
+  var x_95 : vec4<f32>;
+  var x_95_phi : vec4<f32>;
+  var x_98_phi : i32;
+  x_81 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+  let x_86 : array<vec4<f32>, 8> = x_81;
+  let x_87 : vec4<f32> = gl_FragCoord;
+  let x_90 : vec2<f32> = x_6.resolution;
+  let x_93 : vec2<f32> = floor(((vec2<f32>(x_87.x, x_87.y) / x_90) * 32.0));
+  x_95_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  x_98_phi = 0;
+  loop {
+    var x_142 : vec4<f32>;
+    var x_99 : i32;
+    var x_127_phi : bool;
+    var x_96_phi : vec4<f32>;
+    x_95 = x_95_phi;
+    let x_98 : i32 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    var x_104 : vec4<f32>;
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        let x_107 : f32 = x_93.x;
+        let x_108 : f32 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        let x_112 : f32 = x_93.y;
+        let x_113 : f32 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+      }
+    }
+    let x_127 : bool = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      x_83 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_131 : f32 = x_83[x_98].x;
+      x_84 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_134 : f32 = x_84[x_98].y;
+      x_85 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      x_142 = x_85[((((i32(x_131) * i32(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_142;
+    }
+    let x_96 : vec4<f32> = x_96_phi;
+
+    continuing {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
new file mode 100644
index 0000000..1bf1c72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
@@ -0,0 +1,100 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_81 : array<vec4<f32>, 8> = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  var x_82 : array<vec4<f32>, 8>;
+  var x_83 : array<vec4<f32>, 8>;
+  var x_84 : array<vec4<f32>, 8>;
+  var x_85 : array<vec4<f32>, 16>;
+  var x_95 : vec4<f32>;
+  var x_95_phi : vec4<f32>;
+  var x_98_phi : i32;
+  x_81 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+  let x_86 : array<vec4<f32>, 8> = x_81;
+  let x_87 : vec4<f32> = gl_FragCoord;
+  let x_90 : vec2<f32> = x_6.resolution;
+  let x_93 : vec2<f32> = floor(((vec2<f32>(x_87.x, x_87.y) / x_90) * 32.0));
+  x_95_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  x_98_phi = 0;
+  loop {
+    var x_142 : vec4<f32>;
+    var x_99 : i32;
+    var x_127_phi : bool;
+    var x_96_phi : vec4<f32>;
+    x_95 = x_95_phi;
+    let x_98 : i32 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    var x_104 : vec4<f32>;
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        let x_107 : f32 = x_93.x;
+        let x_108 : f32 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        let x_112 : f32 = x_93.y;
+        let x_113 : f32 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+      }
+    }
+    let x_127 : bool = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      x_83 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_131 : f32 = x_83[x_98].x;
+      x_84 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_134 : f32 = x_84[x_98].y;
+      x_85 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      x_142 = x_85[((((i32(x_131) * i32(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_142;
+    }
+    let x_96 : vec4<f32> = x_96_phi;
+
+    continuing {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.hlsl
new file mode 100644
index 0000000..d50630e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.hlsl
@@ -0,0 +1,106 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 x_81[8] = {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), 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)};
+  float4 x_82[8] = (float4[8])0;
+  float4 x_83[8] = (float4[8])0;
+  float4 x_84[8] = (float4[8])0;
+  float4 x_85[16] = (float4[16])0;
+  float4 x_95 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_95_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int x_98_phi = 0;
+  const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+  x_81 = tint_symbol_5;
+  const float4 x_86[8] = x_81;
+  const float4 x_87 = gl_FragCoord;
+  const float2 x_90 = asfloat(x_6[0].xy);
+  const float2 x_93 = floor(((float2(x_87.x, x_87.y) / x_90) * 32.0f));
+  x_95_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_98_phi = 0;
+  while (true) {
+    float4 x_142 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    int x_99 = 0;
+    bool x_127_phi = false;
+    float4 x_96_phi = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_95 = x_95_phi;
+    const int x_98 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_104 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        const float x_107 = x_93.x;
+        const float x_108 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        const float x_112 = x_93.y;
+        const float x_113 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+        break;
+      }
+    }
+    const bool x_127 = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_83 = tint_symbol_6;
+      const float x_131 = x_83[x_98].x;
+      const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      x_84 = tint_symbol_7;
+      const float x_134 = x_84[x_98].y;
+      const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+      x_85 = tint_symbol_8;
+      x_142 = x_85[((((int(x_131) * int(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_142;
+    }
+    const float4 x_96 = x_96_phi;
+    {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.msl
new file mode 100644
index 0000000..f5eb2e7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.msl
@@ -0,0 +1,111 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[8];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  tint_array_wrapper x_81 = {.arr={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), 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)}};
+  tint_array_wrapper x_82 = {};
+  tint_array_wrapper x_83 = {};
+  tint_array_wrapper x_84 = {};
+  tint_array_wrapper_1 x_85 = {};
+  float4 x_95 = 0.0f;
+  float4 x_95_phi = 0.0f;
+  int x_98_phi = 0;
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+  x_81 = tint_symbol_4;
+  tint_array_wrapper const x_86 = x_81;
+  float4 const x_87 = *(tint_symbol_9);
+  float2 const x_90 = x_6.resolution;
+  float2 const x_93 = floor(((float2(x_87.x, x_87.y) / x_90) * 32.0f));
+  x_95_phi = float4(0.5f, 0.5f, 1.0f, 1.0f);
+  x_98_phi = 0;
+  while (true) {
+    float4 x_142 = 0.0f;
+    int x_99 = 0;
+    bool x_127_phi = false;
+    float4 x_96_phi = 0.0f;
+    x_95 = x_95_phi;
+    int const x_98 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    float4 x_104 = 0.0f;
+    x_82 = x_86;
+    x_104 = x_82.arr[x_98];
+    switch(0u) {
+      default: {
+        float const x_107 = x_93.x;
+        float const x_108 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        float const x_112 = x_93.y;
+        float const x_113 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+        break;
+      }
+    }
+    bool const x_127 = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      tint_array_wrapper const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_83 = tint_symbol_5;
+      float const x_131 = x_83.arr[x_98].x;
+      tint_array_wrapper const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      x_84 = tint_symbol_6;
+      float const x_134 = x_84.arr[x_98].y;
+      tint_array_wrapper_1 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      x_85 = tint_symbol_7;
+      x_142 = x_85.arr[((((int(x_131) * int(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_142;
+    }
+    float4 const x_96 = x_96_phi;
+    {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  *(tint_symbol_10) = x_95;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_11 = gl_FragCoord_param;
+  main_1(x_6, &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.spvasm
new file mode 100644
index 0000000..4ef0500
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.spvasm
@@ -0,0 +1,287 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 186
+; Schema: 0
+               OpCapability Shader
+         %67 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_81 "x_81"
+               OpName %x_82 "x_82"
+               OpName %x_83 "x_83"
+               OpName %x_84 "x_84"
+               OpName %x_85 "x_85"
+               OpName %x_95 "x_95"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_98_phi "x_98_phi"
+               OpName %x_142 "x_142"
+               OpName %x_99 "x_99"
+               OpName %x_127_phi "x_127_phi"
+               OpName %x_96_phi "x_96_phi"
+               OpName %x_104 "x_104"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %24 = OpConstantComposite %_arr_v4float_uint_8 %23 %23 %23 %23 %23 %23 %23 %23
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %27 = OpConstantNull %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %35 = OpConstantNull %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %42 = OpConstantNull %int
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %45 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %46 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %47 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %49 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %52 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %54 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %56 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %58 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %59 = OpConstantComposite %_arr_v4float_uint_8 %45 %46 %47 %49 %52 %54 %56 %58
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+         %76 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %87 = OpConstantNull %bool
+      %int_8 = OpConstant %int 8
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+        %139 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %140 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %141 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %142 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %143 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %144 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %145 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %146 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %147 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %148 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %149 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %150 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %151 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %152 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %153 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %154 = OpConstantComposite %_arr_v4float_uint_16 %139 %140 %141 %142 %143 %144 %145 %146 %139 %147 %148 %149 %150 %151 %152 %153
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+        %173 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %x_81 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_82 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_83 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_84 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %27
+       %x_85 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %35
+       %x_95 = OpVariable %_ptr_Function_v4float Function %5
+   %x_95_phi = OpVariable %_ptr_Function_v4float Function %5
+   %x_98_phi = OpVariable %_ptr_Function_int Function %42
+      %x_142 = OpVariable %_ptr_Function_v4float Function %5
+       %x_99 = OpVariable %_ptr_Function_int Function %42
+  %x_127_phi = OpVariable %_ptr_Function_bool Function %87
+   %x_96_phi = OpVariable %_ptr_Function_v4float Function %5
+      %x_104 = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %x_81 %24
+               OpStore %x_81 %59
+         %60 = OpLoad %_arr_v4float_uint_8 %x_81
+         %61 = OpLoad %v4float %gl_FragCoord
+         %64 = OpAccessChain %_ptr_Uniform_v2float %x_6 %uint_0
+         %65 = OpLoad %v2float %64
+         %68 = OpCompositeExtract %float %61 0
+         %69 = OpCompositeExtract %float %61 1
+         %70 = OpCompositeConstruct %v2float %68 %69
+         %71 = OpFDiv %v2float %70 %65
+         %73 = OpVectorTimesScalar %v2float %71 %float_32
+         %66 = OpExtInst %v2float %67 Floor %73
+               OpStore %x_95_phi %76
+               OpStore %x_98_phi %int_0
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %89 = OpLoad %v4float %x_95_phi
+               OpStore %x_95 %89
+         %90 = OpLoad %int %x_98_phi
+         %92 = OpSLessThan %bool %90 %int_8
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpBranch %93
+         %95 = OpLabel
+               OpBranch %79
+         %93 = OpLabel
+               OpStore %x_82 %60
+         %97 = OpAccessChain %_ptr_Function_v4float %x_82 %90
+         %98 = OpLoad %v4float %97
+               OpStore %x_104 %98
+               OpSelectionMerge %99 None
+               OpSwitch %uint_0 %100
+        %100 = OpLabel
+        %101 = OpCompositeExtract %float %66 0
+        %103 = OpAccessChain %_ptr_Function_float %x_104 %uint_0
+        %104 = OpLoad %float %103
+        %105 = OpFOrdLessThan %bool %101 %104
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %106 = OpLabel
+        %109 = OpCompositeExtract %float %66 1
+        %111 = OpAccessChain %_ptr_Function_float %x_104 %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpFOrdLessThan %bool %109 %112
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %114 = OpLabel
+        %117 = OpAccessChain %_ptr_Function_float %x_104 %uint_2
+        %118 = OpLoad %float %117
+        %119 = OpFAdd %float %104 %118
+        %120 = OpFOrdGreaterThan %bool %101 %119
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %121
+        %122 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %121 = OpLabel
+        %124 = OpAccessChain %_ptr_Function_float %x_104 %uint_3
+        %125 = OpLoad %float %124
+        %126 = OpFAdd %float %112 %125
+        %127 = OpFOrdGreaterThan %bool %109 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+               OpStore %x_127_phi %false
+               OpBranch %99
+        %128 = OpLabel
+               OpStore %x_127_phi %true
+               OpBranch %99
+         %99 = OpLabel
+        %131 = OpLoad %bool %x_127_phi
+        %132 = OpLoad %v4float %x_95
+               OpStore %x_96_phi %132
+               OpSelectionMerge %133 None
+               OpBranchConditional %131 %134 %133
+        %134 = OpLabel
+               OpStore %x_83 %59
+        %135 = OpAccessChain %_ptr_Function_float %x_83 %90 %uint_0
+        %136 = OpLoad %float %135
+               OpStore %x_84 %59
+        %137 = OpAccessChain %_ptr_Function_float %x_84 %90 %uint_1
+        %138 = OpLoad %float %137
+               OpStore %x_85 %154
+        %155 = OpConvertFToS %int %136
+        %156 = OpConvertFToS %int %138
+        %157 = OpIMul %int %155 %156
+        %159 = OpIMul %int %90 %int_9
+        %160 = OpIAdd %int %157 %159
+        %162 = OpIAdd %int %160 %int_11
+        %164 = OpSMod %int %162 %int_16
+        %165 = OpAccessChain %_ptr_Function_v4float %x_85 %164
+        %166 = OpLoad %v4float %165
+               OpStore %x_142 %166
+        %167 = OpLoad %v4float %x_142
+               OpStore %x_96_phi %167
+               OpBranch %133
+        %133 = OpLabel
+        %168 = OpLoad %v4float %x_96_phi
+               OpBranch %80
+         %80 = OpLabel
+        %170 = OpIAdd %int %90 %int_1
+               OpStore %x_99 %170
+               OpStore %x_95_phi %168
+        %171 = OpLoad %int %x_99
+               OpStore %x_98_phi %171
+               OpBranch %78
+         %79 = OpLabel
+        %172 = OpLoad %v4float %x_95
+               OpStore %x_GLF_color %172
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %173
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %177 = OpLabel
+        %178 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %178
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %180 = OpLabel
+        %181 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %181
+        %182 = OpFunctionCall %void %main_1
+        %184 = OpLoad %v4float %x_GLF_color
+        %185 = OpCompositeConstruct %main_out %184
+        %183 = OpFunctionCall %void %tint_symbol_3 %185
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.wgsl
new file mode 100644
index 0000000..1bf1c72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl.expected.wgsl
@@ -0,0 +1,100 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_81 : array<vec4<f32>, 8> = array<vec4<f32>, 8>(vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  var x_82 : array<vec4<f32>, 8>;
+  var x_83 : array<vec4<f32>, 8>;
+  var x_84 : array<vec4<f32>, 8>;
+  var x_85 : array<vec4<f32>, 16>;
+  var x_95 : vec4<f32>;
+  var x_95_phi : vec4<f32>;
+  var x_98_phi : i32;
+  x_81 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+  let x_86 : array<vec4<f32>, 8> = x_81;
+  let x_87 : vec4<f32> = gl_FragCoord;
+  let x_90 : vec2<f32> = x_6.resolution;
+  let x_93 : vec2<f32> = floor(((vec2<f32>(x_87.x, x_87.y) / x_90) * 32.0));
+  x_95_phi = vec4<f32>(0.5, 0.5, 1.0, 1.0);
+  x_98_phi = 0;
+  loop {
+    var x_142 : vec4<f32>;
+    var x_99 : i32;
+    var x_127_phi : bool;
+    var x_96_phi : vec4<f32>;
+    x_95 = x_95_phi;
+    let x_98 : i32 = x_98_phi;
+    if ((x_98 < 8)) {
+    } else {
+      break;
+    }
+    var x_104 : vec4<f32>;
+    x_82 = x_86;
+    x_104 = x_82[x_98];
+    switch(0u) {
+      default: {
+        let x_107 : f32 = x_93.x;
+        let x_108 : f32 = x_104.x;
+        if ((x_107 < x_108)) {
+          x_127_phi = false;
+          break;
+        }
+        let x_112 : f32 = x_93.y;
+        let x_113 : f32 = x_104.y;
+        if ((x_112 < x_113)) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_107 > (x_108 + x_104.z))) {
+          x_127_phi = false;
+          break;
+        }
+        if ((x_112 > (x_113 + x_104.w))) {
+          x_127_phi = false;
+          break;
+        }
+        x_127_phi = true;
+      }
+    }
+    let x_127 : bool = x_127_phi;
+    x_96_phi = x_95;
+    if (x_127) {
+      x_83 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_131 : f32 = x_83[x_98].x;
+      x_84 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_134 : f32 = x_84[x_98].y;
+      x_85 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      x_142 = x_85[((((i32(x_131) * i32(x_134)) + (x_98 * 9)) + 11) % 16)];
+      x_96_phi = x_142;
+    }
+    let x_96 : vec4<f32> = x_96_phi;
+
+    continuing {
+      x_99 = (x_98 + 1);
+      x_95_phi = x_96;
+      x_98_phi = x_99;
+    }
+  }
+  x_GLF_color = x_95;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm
new file mode 100644
index 0000000..81c39bd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm
@@ -0,0 +1,684 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+     %uint_0 = OpConstant %uint 0
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %40 = OpUndef %int
+         %41 = OpConstantComposite %BST %int_9 %int_n1 %int_n1
+         %42 = OpConstantComposite %BST %int_5 %int_n1 %int_n1
+         %43 = OpConstantComposite %BST %int_12 %int_n1 %int_n1
+      %int_3 = OpConstant %int 3
+         %45 = OpConstantComposite %BST %int_15 %int_n1 %int_n1
+      %int_4 = OpConstant %int 4
+         %47 = OpConstantComposite %BST %int_7 %int_n1 %int_n1
+         %48 = OpConstantComposite %BST %int_8 %int_n1 %int_n1
+         %49 = OpConstantComposite %BST %int_2 %int_n1 %int_n1
+         %50 = OpConstantComposite %BST %int_6 %int_n1 %int_n1
+         %51 = OpConstantComposite %BST %int_17 %int_n1 %int_n1
+         %52 = OpConstantComposite %BST %int_13 %int_n1 %int_n1
+       %main = OpFunction %void None %7
+         %53 = OpLabel
+       %tree = OpVariable %_ptr_Function__arr_BST_uint_10 Function
+         %54 = OpAccessChain %_ptr_Function_BST %tree %int_0
+               OpStore %54 %41
+               OpSelectionMerge %55 None
+               OpSwitch %uint_0 %56
+         %56 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpPhi %int %int_0 %56 %59 %60
+         %61 = OpSLessThanEqual %bool %58 %int_1
+               OpLoopMerge %62 %60 None
+               OpBranchConditional %61 %63 %62
+         %63 = OpLabel
+         %64 = OpAccessChain %_ptr_Function_int %tree %58 %int_0
+         %65 = OpLoad %int %64
+         %66 = OpSLessThanEqual %bool %int_5 %65
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %69 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_int %tree %58 %int_2
+         %71 = OpLoad %int %70
+         %72 = OpIEqual %bool %71 %int_n1
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %75 = OpLabel
+         %76 = OpLoad %int %70
+               OpBranch %60
+         %74 = OpLabel
+               OpStore %70 %int_1
+         %77 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %77 %42
+               OpBranch %62
+         %73 = OpLabel
+               OpUnreachable
+         %68 = OpLabel
+         %78 = OpAccessChain %_ptr_Function_int %tree %58 %int_1
+         %79 = OpLoad %int %78
+         %80 = OpIEqual %bool %79 %int_n1
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %83 = OpLabel
+         %84 = OpLoad %int %78
+               OpBranch %60
+         %82 = OpLabel
+               OpStore %78 %int_1
+         %85 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %85 %42
+               OpBranch %62
+         %81 = OpLabel
+               OpUnreachable
+         %67 = OpLabel
+               OpUnreachable
+         %60 = OpLabel
+         %59 = OpPhi %int %84 %83 %76 %75
+               OpBranch %57
+         %62 = OpLabel
+         %86 = OpPhi %bool %false %57 %true %82 %true %74
+               OpSelectionMerge %87 None
+               OpBranchConditional %86 %55 %87
+         %87 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+               OpSelectionMerge %88 None
+               OpSwitch %uint_0 %89
+         %89 = OpLabel
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpPhi %int %int_0 %89 %92 %93
+         %94 = OpSLessThanEqual %bool %91 %int_2
+               OpLoopMerge %95 %93 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+         %97 = OpAccessChain %_ptr_Function_int %tree %91 %int_0
+         %98 = OpLoad %int %97
+         %99 = OpSLessThanEqual %bool %int_12 %98
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %102
+        %102 = OpLabel
+        %103 = OpAccessChain %_ptr_Function_int %tree %91 %int_2
+        %104 = OpLoad %int %103
+        %105 = OpIEqual %bool %104 %int_n1
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %108
+        %108 = OpLabel
+        %109 = OpLoad %int %103
+               OpBranch %93
+        %107 = OpLabel
+               OpStore %103 %int_2
+        %110 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %110 %43
+               OpBranch %95
+        %106 = OpLabel
+               OpUnreachable
+        %101 = OpLabel
+        %111 = OpAccessChain %_ptr_Function_int %tree %91 %int_1
+        %112 = OpLoad %int %111
+        %113 = OpIEqual %bool %112 %int_n1
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %116 = OpLabel
+        %117 = OpLoad %int %111
+               OpBranch %93
+        %115 = OpLabel
+               OpStore %111 %int_2
+        %118 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %118 %43
+               OpBranch %95
+        %114 = OpLabel
+               OpUnreachable
+        %100 = OpLabel
+               OpUnreachable
+         %93 = OpLabel
+         %92 = OpPhi %int %117 %116 %109 %108
+               OpBranch %90
+         %95 = OpLabel
+        %119 = OpPhi %bool %false %90 %true %115 %true %107
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %88 %120
+        %120 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpSelectionMerge %121 None
+               OpSwitch %uint_0 %122
+        %122 = OpLabel
+               OpBranch %123
+        %123 = OpLabel
+        %124 = OpPhi %int %int_0 %122 %125 %126
+        %127 = OpSLessThanEqual %bool %124 %int_3
+               OpLoopMerge %128 %126 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+        %130 = OpAccessChain %_ptr_Function_int %tree %124 %int_0
+        %131 = OpLoad %int %130
+        %132 = OpSLessThanEqual %bool %int_15 %131
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %135 = OpLabel
+        %136 = OpAccessChain %_ptr_Function_int %tree %124 %int_2
+        %137 = OpLoad %int %136
+        %138 = OpIEqual %bool %137 %int_n1
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %141
+        %141 = OpLabel
+        %142 = OpLoad %int %136
+               OpBranch %126
+        %140 = OpLabel
+               OpStore %136 %int_3
+        %143 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %143 %45
+               OpBranch %128
+        %139 = OpLabel
+               OpUnreachable
+        %134 = OpLabel
+        %144 = OpAccessChain %_ptr_Function_int %tree %124 %int_1
+        %145 = OpLoad %int %144
+        %146 = OpIEqual %bool %145 %int_n1
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %149
+        %149 = OpLabel
+        %150 = OpLoad %int %144
+               OpBranch %126
+        %148 = OpLabel
+               OpStore %144 %int_3
+        %151 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %151 %45
+               OpBranch %128
+        %147 = OpLabel
+               OpUnreachable
+        %133 = OpLabel
+               OpUnreachable
+        %126 = OpLabel
+        %125 = OpPhi %int %150 %149 %142 %141
+               OpBranch %123
+        %128 = OpLabel
+        %152 = OpPhi %bool %false %123 %true %148 %true %140
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %121 %153
+        %153 = OpLabel
+               OpBranch %121
+        %121 = OpLabel
+               OpSelectionMerge %154 None
+               OpSwitch %uint_0 %155
+        %155 = OpLabel
+               OpBranch %156
+        %156 = OpLabel
+        %157 = OpPhi %int %int_0 %155 %158 %159
+        %160 = OpSLessThanEqual %bool %157 %int_4
+               OpLoopMerge %161 %159 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpAccessChain %_ptr_Function_int %tree %157 %int_0
+        %164 = OpLoad %int %163
+        %165 = OpSLessThanEqual %bool %int_7 %164
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %168
+        %168 = OpLabel
+        %169 = OpAccessChain %_ptr_Function_int %tree %157 %int_2
+        %170 = OpLoad %int %169
+        %171 = OpIEqual %bool %170 %int_n1
+               OpSelectionMerge %172 None
+               OpBranchConditional %171 %173 %174
+        %174 = OpLabel
+        %175 = OpLoad %int %169
+               OpBranch %159
+        %173 = OpLabel
+               OpStore %169 %int_4
+        %176 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %176 %47
+               OpBranch %161
+        %172 = OpLabel
+               OpUnreachable
+        %167 = OpLabel
+        %177 = OpAccessChain %_ptr_Function_int %tree %157 %int_1
+        %178 = OpLoad %int %177
+        %179 = OpIEqual %bool %178 %int_n1
+               OpSelectionMerge %180 None
+               OpBranchConditional %179 %181 %182
+        %182 = OpLabel
+        %183 = OpLoad %int %177
+               OpBranch %159
+        %181 = OpLabel
+               OpStore %177 %int_4
+        %184 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %184 %47
+               OpBranch %161
+        %180 = OpLabel
+               OpUnreachable
+        %166 = OpLabel
+               OpUnreachable
+        %159 = OpLabel
+        %158 = OpPhi %int %183 %182 %175 %174
+               OpBranch %156
+        %161 = OpLabel
+        %185 = OpPhi %bool %false %156 %true %181 %true %173
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %154 %186
+        %186 = OpLabel
+               OpBranch %154
+        %154 = OpLabel
+               OpSelectionMerge %187 None
+               OpSwitch %uint_0 %188
+        %188 = OpLabel
+               OpBranch %189
+        %189 = OpLabel
+        %190 = OpPhi %int %int_0 %188 %191 %192
+        %193 = OpSLessThanEqual %bool %190 %int_5
+               OpLoopMerge %194 %192 None
+               OpBranchConditional %193 %195 %194
+        %195 = OpLabel
+        %196 = OpAccessChain %_ptr_Function_int %tree %190 %int_0
+        %197 = OpLoad %int %196
+        %198 = OpSLessThanEqual %bool %int_8 %197
+               OpSelectionMerge %199 None
+               OpBranchConditional %198 %200 %201
+        %201 = OpLabel
+        %202 = OpAccessChain %_ptr_Function_int %tree %190 %int_2
+        %203 = OpLoad %int %202
+        %204 = OpIEqual %bool %203 %int_n1
+               OpSelectionMerge %205 None
+               OpBranchConditional %204 %206 %207
+        %207 = OpLabel
+        %208 = OpLoad %int %202
+               OpBranch %192
+        %206 = OpLabel
+               OpStore %202 %int_5
+        %209 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %209 %48
+               OpBranch %194
+        %205 = OpLabel
+               OpUnreachable
+        %200 = OpLabel
+        %210 = OpAccessChain %_ptr_Function_int %tree %190 %int_1
+        %211 = OpLoad %int %210
+        %212 = OpIEqual %bool %211 %int_n1
+               OpSelectionMerge %213 None
+               OpBranchConditional %212 %214 %215
+        %215 = OpLabel
+        %216 = OpLoad %int %210
+               OpBranch %192
+        %214 = OpLabel
+               OpStore %210 %int_5
+        %217 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %217 %48
+               OpBranch %194
+        %213 = OpLabel
+               OpUnreachable
+        %199 = OpLabel
+               OpUnreachable
+        %192 = OpLabel
+        %191 = OpPhi %int %216 %215 %208 %207
+               OpBranch %189
+        %194 = OpLabel
+        %218 = OpPhi %bool %false %189 %true %214 %true %206
+               OpSelectionMerge %219 None
+               OpBranchConditional %218 %187 %219
+        %219 = OpLabel
+               OpBranch %187
+        %187 = OpLabel
+               OpSelectionMerge %220 None
+               OpSwitch %uint_0 %221
+        %221 = OpLabel
+               OpBranch %222
+        %222 = OpLabel
+        %223 = OpPhi %int %int_0 %221 %224 %225
+        %226 = OpSLessThanEqual %bool %223 %int_6
+               OpLoopMerge %227 %225 None
+               OpBranchConditional %226 %228 %227
+        %228 = OpLabel
+        %229 = OpAccessChain %_ptr_Function_int %tree %223 %int_0
+        %230 = OpLoad %int %229
+        %231 = OpSLessThanEqual %bool %int_2 %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %234
+        %234 = OpLabel
+        %235 = OpAccessChain %_ptr_Function_int %tree %223 %int_2
+        %236 = OpLoad %int %235
+        %237 = OpIEqual %bool %236 %int_n1
+               OpSelectionMerge %238 None
+               OpBranchConditional %237 %239 %240
+        %240 = OpLabel
+        %241 = OpLoad %int %235
+               OpBranch %225
+        %239 = OpLabel
+               OpStore %235 %int_6
+        %242 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %242 %49
+               OpBranch %227
+        %238 = OpLabel
+               OpUnreachable
+        %233 = OpLabel
+        %243 = OpAccessChain %_ptr_Function_int %tree %223 %int_1
+        %244 = OpLoad %int %243
+        %245 = OpIEqual %bool %244 %int_n1
+               OpSelectionMerge %246 None
+               OpBranchConditional %245 %247 %248
+        %248 = OpLabel
+        %249 = OpLoad %int %243
+               OpBranch %225
+        %247 = OpLabel
+               OpStore %243 %int_6
+        %250 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %250 %49
+               OpBranch %227
+        %246 = OpLabel
+               OpUnreachable
+        %232 = OpLabel
+               OpUnreachable
+        %225 = OpLabel
+        %224 = OpPhi %int %249 %248 %241 %240
+               OpBranch %222
+        %227 = OpLabel
+        %251 = OpPhi %bool %false %222 %true %247 %true %239
+               OpSelectionMerge %252 None
+               OpBranchConditional %251 %220 %252
+        %252 = OpLabel
+               OpBranch %220
+        %220 = OpLabel
+               OpSelectionMerge %253 None
+               OpSwitch %uint_0 %254
+        %254 = OpLabel
+               OpBranch %255
+        %255 = OpLabel
+        %256 = OpPhi %int %int_0 %254 %257 %258
+        %259 = OpSLessThanEqual %bool %256 %int_7
+               OpLoopMerge %260 %258 None
+               OpBranchConditional %259 %261 %260
+        %261 = OpLabel
+        %262 = OpAccessChain %_ptr_Function_int %tree %256 %int_0
+        %263 = OpLoad %int %262
+        %264 = OpSLessThanEqual %bool %int_6 %263
+               OpSelectionMerge %265 None
+               OpBranchConditional %264 %266 %267
+        %267 = OpLabel
+        %268 = OpAccessChain %_ptr_Function_int %tree %256 %int_2
+        %269 = OpLoad %int %268
+        %270 = OpIEqual %bool %269 %int_n1
+               OpSelectionMerge %271 None
+               OpBranchConditional %270 %272 %273
+        %273 = OpLabel
+        %274 = OpLoad %int %268
+               OpBranch %258
+        %272 = OpLabel
+               OpStore %268 %int_7
+        %275 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %275 %50
+               OpBranch %260
+        %271 = OpLabel
+               OpUnreachable
+        %266 = OpLabel
+        %276 = OpAccessChain %_ptr_Function_int %tree %256 %int_1
+        %277 = OpLoad %int %276
+        %278 = OpIEqual %bool %277 %int_n1
+               OpSelectionMerge %279 None
+               OpBranchConditional %278 %280 %281
+        %281 = OpLabel
+        %282 = OpLoad %int %276
+               OpBranch %258
+        %280 = OpLabel
+               OpStore %276 %int_7
+        %283 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %283 %50
+               OpBranch %260
+        %279 = OpLabel
+               OpUnreachable
+        %265 = OpLabel
+               OpUnreachable
+        %258 = OpLabel
+        %257 = OpPhi %int %282 %281 %274 %273
+               OpBranch %255
+        %260 = OpLabel
+        %284 = OpPhi %bool %false %255 %true %280 %true %272
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %253 %285
+        %285 = OpLabel
+               OpBranch %253
+        %253 = OpLabel
+               OpSelectionMerge %286 None
+               OpSwitch %uint_0 %287
+        %287 = OpLabel
+               OpBranch %288
+        %288 = OpLabel
+        %289 = OpPhi %int %int_0 %287 %290 %291
+        %292 = OpSLessThanEqual %bool %289 %int_8
+               OpLoopMerge %293 %291 None
+               OpBranchConditional %292 %294 %293
+        %294 = OpLabel
+        %295 = OpAccessChain %_ptr_Function_int %tree %289 %int_0
+        %296 = OpLoad %int %295
+        %297 = OpSLessThanEqual %bool %int_17 %296
+               OpSelectionMerge %298 None
+               OpBranchConditional %297 %299 %300
+        %300 = OpLabel
+        %301 = OpAccessChain %_ptr_Function_int %tree %289 %int_2
+        %302 = OpLoad %int %301
+        %303 = OpIEqual %bool %302 %int_n1
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %306
+        %306 = OpLabel
+        %307 = OpLoad %int %301
+               OpBranch %291
+        %305 = OpLabel
+               OpStore %301 %int_8
+        %308 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %308 %51
+               OpBranch %293
+        %304 = OpLabel
+               OpUnreachable
+        %299 = OpLabel
+        %309 = OpAccessChain %_ptr_Function_int %tree %289 %int_1
+        %310 = OpLoad %int %309
+        %311 = OpIEqual %bool %310 %int_n1
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %314
+        %314 = OpLabel
+        %315 = OpLoad %int %309
+               OpBranch %291
+        %313 = OpLabel
+               OpStore %309 %int_8
+        %316 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %316 %51
+               OpBranch %293
+        %312 = OpLabel
+               OpUnreachable
+        %298 = OpLabel
+               OpUnreachable
+        %291 = OpLabel
+        %290 = OpPhi %int %315 %314 %307 %306
+               OpBranch %288
+        %293 = OpLabel
+        %317 = OpPhi %bool %false %288 %true %313 %true %305
+               OpSelectionMerge %318 None
+               OpBranchConditional %317 %286 %318
+        %318 = OpLabel
+               OpBranch %286
+        %286 = OpLabel
+               OpSelectionMerge %319 None
+               OpSwitch %uint_0 %320
+        %320 = OpLabel
+               OpBranch %321
+        %321 = OpLabel
+        %322 = OpPhi %int %int_0 %320 %323 %324
+        %325 = OpSLessThanEqual %bool %322 %int_9
+               OpLoopMerge %326 %324 None
+               OpBranchConditional %325 %327 %326
+        %327 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_int %tree %322 %int_0
+        %329 = OpLoad %int %328
+        %330 = OpSLessThanEqual %bool %int_13 %329
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %333
+        %333 = OpLabel
+        %334 = OpAccessChain %_ptr_Function_int %tree %322 %int_2
+        %335 = OpLoad %int %334
+        %336 = OpIEqual %bool %335 %int_n1
+               OpSelectionMerge %337 None
+               OpBranchConditional %336 %338 %339
+        %339 = OpLabel
+        %340 = OpLoad %int %334
+               OpBranch %324
+        %338 = OpLabel
+               OpStore %334 %int_9
+        %341 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %341 %52
+               OpBranch %326
+        %337 = OpLabel
+               OpUnreachable
+        %332 = OpLabel
+        %342 = OpAccessChain %_ptr_Function_int %tree %322 %int_1
+        %343 = OpLoad %int %342
+        %344 = OpIEqual %bool %343 %int_n1
+               OpSelectionMerge %345 None
+               OpBranchConditional %344 %346 %347
+        %347 = OpLabel
+        %348 = OpLoad %int %342
+               OpBranch %324
+        %346 = OpLabel
+               OpStore %342 %int_9
+        %349 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %349 %52
+               OpBranch %326
+        %345 = OpLabel
+               OpUnreachable
+        %331 = OpLabel
+               OpUnreachable
+        %324 = OpLabel
+        %323 = OpPhi %int %348 %347 %340 %339
+               OpBranch %321
+        %326 = OpLabel
+        %350 = OpPhi %bool %false %321 %true %346 %true %338
+               OpSelectionMerge %351 None
+               OpBranchConditional %350 %319 %351
+        %351 = OpLabel
+               OpBranch %319
+        %319 = OpLabel
+               OpBranch %352
+        %352 = OpLabel
+        %353 = OpPhi %int %40 %319 %354 %355
+        %356 = OpPhi %int %int_0 %319 %357 %355
+        %358 = OpPhi %int %int_0 %319 %359 %355
+        %360 = OpSLessThan %bool %358 %int_20
+               OpLoopMerge %361 %355 None
+               OpBranchConditional %360 %362 %361
+        %362 = OpLabel
+               OpSelectionMerge %363 None
+               OpSwitch %uint_0 %364
+        %364 = OpLabel
+               OpBranch %365
+        %365 = OpLabel
+        %366 = OpPhi %int %int_0 %364 %367 %368
+        %369 = OpINotEqual %bool %366 %int_n1
+               OpLoopMerge %370 %368 None
+               OpBranchConditional %369 %371 %370
+        %371 = OpLabel
+        %372 = OpAccessChain %_ptr_Function_BST %tree %366
+        %373 = OpLoad %BST %372
+        %374 = OpCompositeExtract %int %373 0
+        %375 = OpCompositeExtract %int %373 1
+        %376 = OpCompositeExtract %int %373 2
+        %377 = OpIEqual %bool %374 %358
+               OpSelectionMerge %378 None
+               OpBranchConditional %377 %379 %378
+        %379 = OpLabel
+               OpBranch %370
+        %378 = OpLabel
+        %380 = OpSGreaterThan %bool %358 %374
+        %367 = OpSelect %int %380 %376 %375
+               OpBranch %368
+        %368 = OpLabel
+               OpBranch %365
+        %370 = OpLabel
+        %381 = OpPhi %int %353 %365 %358 %379
+        %382 = OpPhi %bool %false %365 %true %379
+               OpSelectionMerge %383 None
+               OpBranchConditional %382 %363 %383
+        %383 = OpLabel
+               OpBranch %363
+        %363 = OpLabel
+        %354 = OpPhi %int %381 %370 %int_n1 %383
+               OpSelectionMerge %384 None
+               OpSwitch %358 %385 9 %386 5 %386 12 %386 15 %386 7 %386 8 %386 2 %386 6 %386 17 %386 13 %386
+        %386 = OpLabel
+        %387 = OpIEqual %bool %354 %358
+               OpSelectionMerge %388 None
+               OpBranchConditional %387 %389 %388
+        %389 = OpLabel
+        %390 = OpIAdd %int %356 %int_1
+               OpBranch %388
+        %388 = OpLabel
+        %391 = OpPhi %int %356 %386 %390 %389
+               OpBranch %384
+        %385 = OpLabel
+        %392 = OpIEqual %bool %354 %int_n1
+               OpSelectionMerge %393 None
+               OpBranchConditional %392 %394 %393
+        %394 = OpLabel
+        %395 = OpIAdd %int %356 %int_1
+               OpBranch %393
+        %393 = OpLabel
+        %396 = OpPhi %int %356 %385 %395 %394
+               OpBranch %384
+        %384 = OpLabel
+        %357 = OpPhi %int %396 %393 %391 %388
+               OpBranch %355
+        %355 = OpLabel
+        %359 = OpIAdd %int %358 %int_1
+               OpBranch %352
+        %361 = OpLabel
+        %397 = OpIEqual %bool %356 %int_20
+               OpSelectionMerge %398 None
+               OpBranchConditional %397 %399 %400
+        %400 = OpLabel
+               OpStore %_GLF_color %35
+               OpBranch %398
+        %399 = OpLabel
+               OpStore %_GLF_color %34
+               OpBranch %398
+        %398 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..1f593e3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.hlsl
@@ -0,0 +1,748 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  BST tree[10] = (BST[10])0;
+  int x_356 = 0;
+  int x_58_phi = 0;
+  bool x_86_phi = false;
+  int x_353_phi = 0;
+  int x_356_phi = 0;
+  int x_358_phi = 0;
+  const BST tint_symbol_2 = {9, -1, -1};
+  tree[0] = tint_symbol_2;
+  switch(0u) {
+    default: {
+      x_58_phi = 0;
+      while (true) {
+        int x_84 = 0;
+        int x_76 = 0;
+        int x_59 = 0;
+        int x_59_phi = 0;
+        const int x_58 = x_58_phi;
+        x_86_phi = false;
+        if ((x_58 <= 1)) {
+        } else {
+          break;
+        }
+        const int x_65 = tree[x_58].data;
+        if ((5 <= x_65)) {
+          const int x_78_save = x_58;
+          const int x_79 = tree[x_78_save].leftIndex;
+          if ((x_79 == -1)) {
+            tree[x_78_save].leftIndex = 1;
+            const BST tint_symbol_3 = {5, -1, -1};
+            tree[1] = tint_symbol_3;
+            x_86_phi = true;
+            break;
+          } else {
+            x_84 = tree[x_78_save].leftIndex;
+            x_59_phi = x_84;
+            {
+              x_59 = x_59_phi;
+              x_58_phi = x_59;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_70_save = x_58;
+          const int x_71 = tree[x_70_save].rightIndex;
+          if ((x_71 == -1)) {
+            tree[x_70_save].rightIndex = 1;
+            const BST tint_symbol_4 = {5, -1, -1};
+            tree[1] = tint_symbol_4;
+            x_86_phi = true;
+            break;
+          } else {
+            x_76 = tree[x_70_save].rightIndex;
+            x_59_phi = x_76;
+            {
+              x_59 = x_59_phi;
+              x_58_phi = x_59;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_59 = x_59_phi;
+          x_58_phi = x_59;
+        }
+      }
+      if (x_86_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_91_phi = 0;
+  bool x_119_phi = false;
+  switch(0u) {
+    default: {
+      x_91_phi = 0;
+      while (true) {
+        int x_117 = 0;
+        int x_109 = 0;
+        int x_92 = 0;
+        int x_92_phi = 0;
+        const int x_91 = x_91_phi;
+        x_119_phi = false;
+        if ((x_91 <= 2)) {
+        } else {
+          break;
+        }
+        const int x_98 = tree[x_91].data;
+        if ((12 <= x_98)) {
+          const int x_111_save = x_91;
+          const int x_112 = tree[x_111_save].leftIndex;
+          if ((x_112 == -1)) {
+            tree[x_111_save].leftIndex = 2;
+            const BST tint_symbol_5 = {12, -1, -1};
+            tree[2] = tint_symbol_5;
+            x_119_phi = true;
+            break;
+          } else {
+            x_117 = tree[x_111_save].leftIndex;
+            x_92_phi = x_117;
+            {
+              x_92 = x_92_phi;
+              x_91_phi = x_92;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_103_save = x_91;
+          const int x_104 = tree[x_103_save].rightIndex;
+          if ((x_104 == -1)) {
+            tree[x_103_save].rightIndex = 2;
+            const BST tint_symbol_6 = {12, -1, -1};
+            tree[2] = tint_symbol_6;
+            x_119_phi = true;
+            break;
+          } else {
+            x_109 = tree[x_103_save].rightIndex;
+            x_92_phi = x_109;
+            {
+              x_92 = x_92_phi;
+              x_91_phi = x_92;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_92 = x_92_phi;
+          x_91_phi = x_92;
+        }
+      }
+      if (x_119_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_124_phi = 0;
+  bool x_152_phi = false;
+  switch(0u) {
+    default: {
+      x_124_phi = 0;
+      while (true) {
+        int x_150 = 0;
+        int x_142 = 0;
+        int x_125 = 0;
+        int x_125_phi = 0;
+        const int x_124 = x_124_phi;
+        x_152_phi = false;
+        if ((x_124 <= 3)) {
+        } else {
+          break;
+        }
+        const int x_131 = tree[x_124].data;
+        if ((15 <= x_131)) {
+          const int x_144_save = x_124;
+          const int x_145 = tree[x_144_save].leftIndex;
+          if ((x_145 == -1)) {
+            tree[x_144_save].leftIndex = 3;
+            const BST tint_symbol_7 = {15, -1, -1};
+            tree[3] = tint_symbol_7;
+            x_152_phi = true;
+            break;
+          } else {
+            x_150 = tree[x_144_save].leftIndex;
+            x_125_phi = x_150;
+            {
+              x_125 = x_125_phi;
+              x_124_phi = x_125;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_136_save = x_124;
+          const int x_137 = tree[x_136_save].rightIndex;
+          if ((x_137 == -1)) {
+            tree[x_136_save].rightIndex = 3;
+            const BST tint_symbol_8 = {15, -1, -1};
+            tree[3] = tint_symbol_8;
+            x_152_phi = true;
+            break;
+          } else {
+            x_142 = tree[x_136_save].rightIndex;
+            x_125_phi = x_142;
+            {
+              x_125 = x_125_phi;
+              x_124_phi = x_125;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_125 = x_125_phi;
+          x_124_phi = x_125;
+        }
+      }
+      if (x_152_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_157_phi = 0;
+  bool x_185_phi = false;
+  switch(0u) {
+    default: {
+      x_157_phi = 0;
+      while (true) {
+        int x_183 = 0;
+        int x_175 = 0;
+        int x_158 = 0;
+        int x_158_phi = 0;
+        const int x_157 = x_157_phi;
+        x_185_phi = false;
+        if ((x_157 <= 4)) {
+        } else {
+          break;
+        }
+        const int x_164 = tree[x_157].data;
+        if ((7 <= x_164)) {
+          const int x_177_save = x_157;
+          const int x_178 = tree[x_177_save].leftIndex;
+          if ((x_178 == -1)) {
+            tree[x_177_save].leftIndex = 4;
+            const BST tint_symbol_9 = {7, -1, -1};
+            tree[4] = tint_symbol_9;
+            x_185_phi = true;
+            break;
+          } else {
+            x_183 = tree[x_177_save].leftIndex;
+            x_158_phi = x_183;
+            {
+              x_158 = x_158_phi;
+              x_157_phi = x_158;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_169_save = x_157;
+          const int x_170 = tree[x_169_save].rightIndex;
+          if ((x_170 == -1)) {
+            tree[x_169_save].rightIndex = 4;
+            const BST tint_symbol_10 = {7, -1, -1};
+            tree[4] = tint_symbol_10;
+            x_185_phi = true;
+            break;
+          } else {
+            x_175 = tree[x_169_save].rightIndex;
+            x_158_phi = x_175;
+            {
+              x_158 = x_158_phi;
+              x_157_phi = x_158;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_158 = x_158_phi;
+          x_157_phi = x_158;
+        }
+      }
+      if (x_185_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_190_phi = 0;
+  bool x_218_phi = false;
+  switch(0u) {
+    default: {
+      x_190_phi = 0;
+      while (true) {
+        int x_216 = 0;
+        int x_208 = 0;
+        int x_191 = 0;
+        int x_191_phi = 0;
+        const int x_190 = x_190_phi;
+        x_218_phi = false;
+        if ((x_190 <= 5)) {
+        } else {
+          break;
+        }
+        const int x_197 = tree[x_190].data;
+        if ((8 <= x_197)) {
+          const int x_210_save = x_190;
+          const int x_211 = tree[x_210_save].leftIndex;
+          if ((x_211 == -1)) {
+            tree[x_210_save].leftIndex = 5;
+            const BST tint_symbol_11 = {8, -1, -1};
+            tree[5] = tint_symbol_11;
+            x_218_phi = true;
+            break;
+          } else {
+            x_216 = tree[x_210_save].leftIndex;
+            x_191_phi = x_216;
+            {
+              x_191 = x_191_phi;
+              x_190_phi = x_191;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_202_save = x_190;
+          const int x_203 = tree[x_202_save].rightIndex;
+          if ((x_203 == -1)) {
+            tree[x_202_save].rightIndex = 5;
+            const BST tint_symbol_12 = {8, -1, -1};
+            tree[5] = tint_symbol_12;
+            x_218_phi = true;
+            break;
+          } else {
+            x_208 = tree[x_202_save].rightIndex;
+            x_191_phi = x_208;
+            {
+              x_191 = x_191_phi;
+              x_190_phi = x_191;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_191 = x_191_phi;
+          x_190_phi = x_191;
+        }
+      }
+      if (x_218_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_223_phi = 0;
+  bool x_251_phi = false;
+  switch(0u) {
+    default: {
+      x_223_phi = 0;
+      while (true) {
+        int x_249 = 0;
+        int x_241 = 0;
+        int x_224 = 0;
+        int x_224_phi = 0;
+        const int x_223 = x_223_phi;
+        x_251_phi = false;
+        if ((x_223 <= 6)) {
+        } else {
+          break;
+        }
+        const int x_230 = tree[x_223].data;
+        if ((2 <= x_230)) {
+          const int x_243_save = x_223;
+          const int x_244 = tree[x_243_save].leftIndex;
+          if ((x_244 == -1)) {
+            tree[x_243_save].leftIndex = 6;
+            const BST tint_symbol_13 = {2, -1, -1};
+            tree[6] = tint_symbol_13;
+            x_251_phi = true;
+            break;
+          } else {
+            x_249 = tree[x_243_save].leftIndex;
+            x_224_phi = x_249;
+            {
+              x_224 = x_224_phi;
+              x_223_phi = x_224;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_235_save = x_223;
+          const int x_236 = tree[x_235_save].rightIndex;
+          if ((x_236 == -1)) {
+            tree[x_235_save].rightIndex = 6;
+            const BST tint_symbol_14 = {2, -1, -1};
+            tree[6] = tint_symbol_14;
+            x_251_phi = true;
+            break;
+          } else {
+            x_241 = tree[x_235_save].rightIndex;
+            x_224_phi = x_241;
+            {
+              x_224 = x_224_phi;
+              x_223_phi = x_224;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_224 = x_224_phi;
+          x_223_phi = x_224;
+        }
+      }
+      if (x_251_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_256_phi = 0;
+  bool x_284_phi = false;
+  switch(0u) {
+    default: {
+      x_256_phi = 0;
+      while (true) {
+        int x_282 = 0;
+        int x_274 = 0;
+        int x_257 = 0;
+        int x_257_phi = 0;
+        const int x_256 = x_256_phi;
+        x_284_phi = false;
+        if ((x_256 <= 7)) {
+        } else {
+          break;
+        }
+        const int x_263 = tree[x_256].data;
+        if ((6 <= x_263)) {
+          const int x_276_save = x_256;
+          const int x_277 = tree[x_276_save].leftIndex;
+          if ((x_277 == -1)) {
+            tree[x_276_save].leftIndex = 7;
+            const BST tint_symbol_15 = {6, -1, -1};
+            tree[7] = tint_symbol_15;
+            x_284_phi = true;
+            break;
+          } else {
+            x_282 = tree[x_276_save].leftIndex;
+            x_257_phi = x_282;
+            {
+              x_257 = x_257_phi;
+              x_256_phi = x_257;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_268_save = x_256;
+          const int x_269 = tree[x_268_save].rightIndex;
+          if ((x_269 == -1)) {
+            tree[x_268_save].rightIndex = 7;
+            const BST tint_symbol_16 = {6, -1, -1};
+            tree[7] = tint_symbol_16;
+            x_284_phi = true;
+            break;
+          } else {
+            x_274 = tree[x_268_save].rightIndex;
+            x_257_phi = x_274;
+            {
+              x_257 = x_257_phi;
+              x_256_phi = x_257;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_257 = x_257_phi;
+          x_256_phi = x_257;
+        }
+      }
+      if (x_284_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_289_phi = 0;
+  bool x_317_phi = false;
+  switch(0u) {
+    default: {
+      x_289_phi = 0;
+      while (true) {
+        int x_315 = 0;
+        int x_307 = 0;
+        int x_290 = 0;
+        int x_290_phi = 0;
+        const int x_289 = x_289_phi;
+        x_317_phi = false;
+        if ((x_289 <= 8)) {
+        } else {
+          break;
+        }
+        const int x_296 = tree[x_289].data;
+        if ((17 <= x_296)) {
+          const int x_309_save = x_289;
+          const int x_310 = tree[x_309_save].leftIndex;
+          if ((x_310 == -1)) {
+            tree[x_309_save].leftIndex = 8;
+            const BST tint_symbol_17 = {17, -1, -1};
+            tree[8] = tint_symbol_17;
+            x_317_phi = true;
+            break;
+          } else {
+            x_315 = tree[x_309_save].leftIndex;
+            x_290_phi = x_315;
+            {
+              x_290 = x_290_phi;
+              x_289_phi = x_290;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_301_save = x_289;
+          const int x_302 = tree[x_301_save].rightIndex;
+          if ((x_302 == -1)) {
+            tree[x_301_save].rightIndex = 8;
+            const BST tint_symbol_18 = {17, -1, -1};
+            tree[8] = tint_symbol_18;
+            x_317_phi = true;
+            break;
+          } else {
+            x_307 = tree[x_301_save].rightIndex;
+            x_290_phi = x_307;
+            {
+              x_290 = x_290_phi;
+              x_289_phi = x_290;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_290 = x_290_phi;
+          x_289_phi = x_290;
+        }
+      }
+      if (x_317_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_322_phi = 0;
+  bool x_350_phi = false;
+  switch(0u) {
+    default: {
+      x_322_phi = 0;
+      while (true) {
+        int x_348 = 0;
+        int x_340 = 0;
+        int x_323 = 0;
+        int x_323_phi = 0;
+        const int x_322 = x_322_phi;
+        x_350_phi = false;
+        if ((x_322 <= 9)) {
+        } else {
+          break;
+        }
+        const int x_329 = tree[x_322].data;
+        if ((13 <= x_329)) {
+          const int x_342_save = x_322;
+          const int x_343 = tree[x_342_save].leftIndex;
+          if ((x_343 == -1)) {
+            tree[x_342_save].leftIndex = 9;
+            const BST tint_symbol_19 = {13, -1, -1};
+            tree[9] = tint_symbol_19;
+            x_350_phi = true;
+            break;
+          } else {
+            x_348 = tree[x_342_save].leftIndex;
+            x_323_phi = x_348;
+            {
+              x_323 = x_323_phi;
+              x_322_phi = x_323;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_334_save = x_322;
+          const int x_335 = tree[x_334_save].rightIndex;
+          if ((x_335 == -1)) {
+            tree[x_334_save].rightIndex = 9;
+            const BST tint_symbol_20 = {13, -1, -1};
+            tree[9] = tint_symbol_20;
+            x_350_phi = true;
+            break;
+          } else {
+            x_340 = tree[x_334_save].rightIndex;
+            x_323_phi = x_340;
+            {
+              x_323 = x_323_phi;
+              x_322_phi = x_323;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_323 = x_323_phi;
+          x_322_phi = x_323;
+        }
+      }
+      if (x_350_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  x_353_phi = 0;
+  x_356_phi = 0;
+  x_358_phi = 0;
+  while (true) {
+    int x_381 = 0;
+    int x_391 = 0;
+    int x_396 = 0;
+    int x_359 = 0;
+    int x_354_phi = 0;
+    int x_357_phi = 0;
+    const int x_353 = x_353_phi;
+    x_356 = x_356_phi;
+    const int x_358 = x_358_phi;
+    if ((x_358 < 20)) {
+    } else {
+      break;
+    }
+    int x_366_phi = 0;
+    int x_381_phi = 0;
+    bool x_382_phi = false;
+    switch(0u) {
+      default: {
+        x_366_phi = 0;
+        while (true) {
+          const int x_366 = x_366_phi;
+          x_381_phi = x_353;
+          x_382_phi = false;
+          if ((x_366 != -1)) {
+          } else {
+            break;
+          }
+          const BST x_373 = tree[x_366];
+          const int x_374 = x_373.data;
+          const int x_375 = x_373.leftIndex;
+          const int x_376 = x_373.rightIndex;
+          if ((x_374 == x_358)) {
+            x_381_phi = x_358;
+            x_382_phi = true;
+            break;
+          }
+          {
+            x_366_phi = ((x_358 > x_374) ? x_376 : x_375);
+          }
+        }
+        x_381 = x_381_phi;
+        const bool x_382 = x_382_phi;
+        x_354_phi = x_381;
+        if (x_382) {
+          break;
+        }
+        x_354_phi = -1;
+        break;
+      }
+    }
+    int x_354 = 0;
+    int x_390 = 0;
+    int x_395 = 0;
+    int x_391_phi = 0;
+    int x_396_phi = 0;
+    x_354 = x_354_phi;
+    switch(x_358) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_391_phi = x_356;
+        if ((x_354 == asint(x_358))) {
+          x_390 = asint((x_356 + asint(1)));
+          x_391_phi = x_390;
+        }
+        x_391 = x_391_phi;
+        x_357_phi = x_391;
+        break;
+      }
+      default: {
+        x_396_phi = x_356;
+        if ((x_354 == asint(-1))) {
+          x_395 = asint((x_356 + asint(1)));
+          x_396_phi = x_395;
+        }
+        x_396 = x_396_phi;
+        x_357_phi = x_396;
+        break;
+      }
+    }
+    const int x_357 = x_357_phi;
+    {
+      x_359 = (x_358 + 1);
+      x_353_phi = x_354;
+      x_356_phi = x_357;
+      x_358_phi = x_359;
+    }
+  }
+  if ((x_356 == asint(20))) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_21 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_21;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.msl
new file mode 100644
index 0000000..752c6ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.msl
@@ -0,0 +1,762 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_23) {
+  tint_array_wrapper tree = {};
+  int x_356 = 0;
+  int x_58_phi = 0;
+  bool x_86_phi = false;
+  int x_353_phi = 0;
+  int x_356_phi = 0;
+  int x_358_phi = 0;
+  BST const tint_symbol_3 = {.data=9, .leftIndex=-1, .rightIndex=-1};
+  tree.arr[0] = tint_symbol_3;
+  switch(0u) {
+    default: {
+      x_58_phi = 0;
+      while (true) {
+        int x_84 = 0;
+        int x_76 = 0;
+        int x_59 = 0;
+        int x_59_phi = 0;
+        int const x_58 = x_58_phi;
+        x_86_phi = false;
+        if ((x_58 <= 1)) {
+        } else {
+          break;
+        }
+        int const x_65 = tree.arr[x_58].data;
+        if ((5 <= x_65)) {
+          int const x_78_save = x_58;
+          int const x_79 = tree.arr[x_78_save].leftIndex;
+          if ((x_79 == -1)) {
+            tree.arr[x_78_save].leftIndex = 1;
+            BST const tint_symbol_4 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_4;
+            x_86_phi = true;
+            break;
+          } else {
+            x_84 = tree.arr[x_78_save].leftIndex;
+            x_59_phi = x_84;
+            {
+              x_59 = x_59_phi;
+              x_58_phi = x_59;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_70_save = x_58;
+          int const x_71 = tree.arr[x_70_save].rightIndex;
+          if ((x_71 == -1)) {
+            tree.arr[x_70_save].rightIndex = 1;
+            BST const tint_symbol_5 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_5;
+            x_86_phi = true;
+            break;
+          } else {
+            x_76 = tree.arr[x_70_save].rightIndex;
+            x_59_phi = x_76;
+            {
+              x_59 = x_59_phi;
+              x_58_phi = x_59;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_59 = x_59_phi;
+          x_58_phi = x_59;
+        }
+      }
+      bool const x_86 = x_86_phi;
+      if (x_86) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_91_phi = 0;
+  bool x_119_phi = false;
+  switch(0u) {
+    default: {
+      x_91_phi = 0;
+      while (true) {
+        int x_117 = 0;
+        int x_109 = 0;
+        int x_92 = 0;
+        int x_92_phi = 0;
+        int const x_91 = x_91_phi;
+        x_119_phi = false;
+        if ((x_91 <= 2)) {
+        } else {
+          break;
+        }
+        int const x_98 = tree.arr[x_91].data;
+        if ((12 <= x_98)) {
+          int const x_111_save = x_91;
+          int const x_112 = tree.arr[x_111_save].leftIndex;
+          if ((x_112 == -1)) {
+            tree.arr[x_111_save].leftIndex = 2;
+            BST const tint_symbol_6 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[2] = tint_symbol_6;
+            x_119_phi = true;
+            break;
+          } else {
+            x_117 = tree.arr[x_111_save].leftIndex;
+            x_92_phi = x_117;
+            {
+              x_92 = x_92_phi;
+              x_91_phi = x_92;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_103_save = x_91;
+          int const x_104 = tree.arr[x_103_save].rightIndex;
+          if ((x_104 == -1)) {
+            tree.arr[x_103_save].rightIndex = 2;
+            BST const tint_symbol_7 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[2] = tint_symbol_7;
+            x_119_phi = true;
+            break;
+          } else {
+            x_109 = tree.arr[x_103_save].rightIndex;
+            x_92_phi = x_109;
+            {
+              x_92 = x_92_phi;
+              x_91_phi = x_92;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_92 = x_92_phi;
+          x_91_phi = x_92;
+        }
+      }
+      bool const x_119 = x_119_phi;
+      if (x_119) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_124_phi = 0;
+  bool x_152_phi = false;
+  switch(0u) {
+    default: {
+      x_124_phi = 0;
+      while (true) {
+        int x_150 = 0;
+        int x_142 = 0;
+        int x_125 = 0;
+        int x_125_phi = 0;
+        int const x_124 = x_124_phi;
+        x_152_phi = false;
+        if ((x_124 <= 3)) {
+        } else {
+          break;
+        }
+        int const x_131 = tree.arr[x_124].data;
+        if ((15 <= x_131)) {
+          int const x_144_save = x_124;
+          int const x_145 = tree.arr[x_144_save].leftIndex;
+          if ((x_145 == -1)) {
+            tree.arr[x_144_save].leftIndex = 3;
+            BST const tint_symbol_8 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_8;
+            x_152_phi = true;
+            break;
+          } else {
+            x_150 = tree.arr[x_144_save].leftIndex;
+            x_125_phi = x_150;
+            {
+              x_125 = x_125_phi;
+              x_124_phi = x_125;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_136_save = x_124;
+          int const x_137 = tree.arr[x_136_save].rightIndex;
+          if ((x_137 == -1)) {
+            tree.arr[x_136_save].rightIndex = 3;
+            BST const tint_symbol_9 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_9;
+            x_152_phi = true;
+            break;
+          } else {
+            x_142 = tree.arr[x_136_save].rightIndex;
+            x_125_phi = x_142;
+            {
+              x_125 = x_125_phi;
+              x_124_phi = x_125;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_125 = x_125_phi;
+          x_124_phi = x_125;
+        }
+      }
+      bool const x_152 = x_152_phi;
+      if (x_152) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_157_phi = 0;
+  bool x_185_phi = false;
+  switch(0u) {
+    default: {
+      x_157_phi = 0;
+      while (true) {
+        int x_183 = 0;
+        int x_175 = 0;
+        int x_158 = 0;
+        int x_158_phi = 0;
+        int const x_157 = x_157_phi;
+        x_185_phi = false;
+        if ((x_157 <= 4)) {
+        } else {
+          break;
+        }
+        int const x_164 = tree.arr[x_157].data;
+        if ((7 <= x_164)) {
+          int const x_177_save = x_157;
+          int const x_178 = tree.arr[x_177_save].leftIndex;
+          if ((x_178 == -1)) {
+            tree.arr[x_177_save].leftIndex = 4;
+            BST const tint_symbol_10 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_10;
+            x_185_phi = true;
+            break;
+          } else {
+            x_183 = tree.arr[x_177_save].leftIndex;
+            x_158_phi = x_183;
+            {
+              x_158 = x_158_phi;
+              x_157_phi = x_158;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_169_save = x_157;
+          int const x_170 = tree.arr[x_169_save].rightIndex;
+          if ((x_170 == -1)) {
+            tree.arr[x_169_save].rightIndex = 4;
+            BST const tint_symbol_11 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_11;
+            x_185_phi = true;
+            break;
+          } else {
+            x_175 = tree.arr[x_169_save].rightIndex;
+            x_158_phi = x_175;
+            {
+              x_158 = x_158_phi;
+              x_157_phi = x_158;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_158 = x_158_phi;
+          x_157_phi = x_158;
+        }
+      }
+      bool const x_185 = x_185_phi;
+      if (x_185) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_190_phi = 0;
+  bool x_218_phi = false;
+  switch(0u) {
+    default: {
+      x_190_phi = 0;
+      while (true) {
+        int x_216 = 0;
+        int x_208 = 0;
+        int x_191 = 0;
+        int x_191_phi = 0;
+        int const x_190 = x_190_phi;
+        x_218_phi = false;
+        if ((x_190 <= 5)) {
+        } else {
+          break;
+        }
+        int const x_197 = tree.arr[x_190].data;
+        if ((8 <= x_197)) {
+          int const x_210_save = x_190;
+          int const x_211 = tree.arr[x_210_save].leftIndex;
+          if ((x_211 == -1)) {
+            tree.arr[x_210_save].leftIndex = 5;
+            BST const tint_symbol_12 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_12;
+            x_218_phi = true;
+            break;
+          } else {
+            x_216 = tree.arr[x_210_save].leftIndex;
+            x_191_phi = x_216;
+            {
+              x_191 = x_191_phi;
+              x_190_phi = x_191;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_202_save = x_190;
+          int const x_203 = tree.arr[x_202_save].rightIndex;
+          if ((x_203 == -1)) {
+            tree.arr[x_202_save].rightIndex = 5;
+            BST const tint_symbol_13 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_13;
+            x_218_phi = true;
+            break;
+          } else {
+            x_208 = tree.arr[x_202_save].rightIndex;
+            x_191_phi = x_208;
+            {
+              x_191 = x_191_phi;
+              x_190_phi = x_191;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_191 = x_191_phi;
+          x_190_phi = x_191;
+        }
+      }
+      bool const x_218 = x_218_phi;
+      if (x_218) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_223_phi = 0;
+  bool x_251_phi = false;
+  switch(0u) {
+    default: {
+      x_223_phi = 0;
+      while (true) {
+        int x_249 = 0;
+        int x_241 = 0;
+        int x_224 = 0;
+        int x_224_phi = 0;
+        int const x_223 = x_223_phi;
+        x_251_phi = false;
+        if ((x_223 <= 6)) {
+        } else {
+          break;
+        }
+        int const x_230 = tree.arr[x_223].data;
+        if ((2 <= x_230)) {
+          int const x_243_save = x_223;
+          int const x_244 = tree.arr[x_243_save].leftIndex;
+          if ((x_244 == -1)) {
+            tree.arr[x_243_save].leftIndex = 6;
+            BST const tint_symbol_14 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_14;
+            x_251_phi = true;
+            break;
+          } else {
+            x_249 = tree.arr[x_243_save].leftIndex;
+            x_224_phi = x_249;
+            {
+              x_224 = x_224_phi;
+              x_223_phi = x_224;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_235_save = x_223;
+          int const x_236 = tree.arr[x_235_save].rightIndex;
+          if ((x_236 == -1)) {
+            tree.arr[x_235_save].rightIndex = 6;
+            BST const tint_symbol_15 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_15;
+            x_251_phi = true;
+            break;
+          } else {
+            x_241 = tree.arr[x_235_save].rightIndex;
+            x_224_phi = x_241;
+            {
+              x_224 = x_224_phi;
+              x_223_phi = x_224;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_224 = x_224_phi;
+          x_223_phi = x_224;
+        }
+      }
+      bool const x_251 = x_251_phi;
+      if (x_251) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_256_phi = 0;
+  bool x_284_phi = false;
+  switch(0u) {
+    default: {
+      x_256_phi = 0;
+      while (true) {
+        int x_282 = 0;
+        int x_274 = 0;
+        int x_257 = 0;
+        int x_257_phi = 0;
+        int const x_256 = x_256_phi;
+        x_284_phi = false;
+        if ((x_256 <= 7)) {
+        } else {
+          break;
+        }
+        int const x_263 = tree.arr[x_256].data;
+        if ((6 <= x_263)) {
+          int const x_276_save = x_256;
+          int const x_277 = tree.arr[x_276_save].leftIndex;
+          if ((x_277 == -1)) {
+            tree.arr[x_276_save].leftIndex = 7;
+            BST const tint_symbol_16 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_16;
+            x_284_phi = true;
+            break;
+          } else {
+            x_282 = tree.arr[x_276_save].leftIndex;
+            x_257_phi = x_282;
+            {
+              x_257 = x_257_phi;
+              x_256_phi = x_257;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_268_save = x_256;
+          int const x_269 = tree.arr[x_268_save].rightIndex;
+          if ((x_269 == -1)) {
+            tree.arr[x_268_save].rightIndex = 7;
+            BST const tint_symbol_17 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_17;
+            x_284_phi = true;
+            break;
+          } else {
+            x_274 = tree.arr[x_268_save].rightIndex;
+            x_257_phi = x_274;
+            {
+              x_257 = x_257_phi;
+              x_256_phi = x_257;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_257 = x_257_phi;
+          x_256_phi = x_257;
+        }
+      }
+      bool const x_284 = x_284_phi;
+      if (x_284) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_289_phi = 0;
+  bool x_317_phi = false;
+  switch(0u) {
+    default: {
+      x_289_phi = 0;
+      while (true) {
+        int x_315 = 0;
+        int x_307 = 0;
+        int x_290 = 0;
+        int x_290_phi = 0;
+        int const x_289 = x_289_phi;
+        x_317_phi = false;
+        if ((x_289 <= 8)) {
+        } else {
+          break;
+        }
+        int const x_296 = tree.arr[x_289].data;
+        if ((17 <= x_296)) {
+          int const x_309_save = x_289;
+          int const x_310 = tree.arr[x_309_save].leftIndex;
+          if ((x_310 == -1)) {
+            tree.arr[x_309_save].leftIndex = 8;
+            BST const tint_symbol_18 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_18;
+            x_317_phi = true;
+            break;
+          } else {
+            x_315 = tree.arr[x_309_save].leftIndex;
+            x_290_phi = x_315;
+            {
+              x_290 = x_290_phi;
+              x_289_phi = x_290;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_301_save = x_289;
+          int const x_302 = tree.arr[x_301_save].rightIndex;
+          if ((x_302 == -1)) {
+            tree.arr[x_301_save].rightIndex = 8;
+            BST const tint_symbol_19 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_19;
+            x_317_phi = true;
+            break;
+          } else {
+            x_307 = tree.arr[x_301_save].rightIndex;
+            x_290_phi = x_307;
+            {
+              x_290 = x_290_phi;
+              x_289_phi = x_290;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_290 = x_290_phi;
+          x_289_phi = x_290;
+        }
+      }
+      bool const x_317 = x_317_phi;
+      if (x_317) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_322_phi = 0;
+  bool x_350_phi = false;
+  switch(0u) {
+    default: {
+      x_322_phi = 0;
+      while (true) {
+        int x_348 = 0;
+        int x_340 = 0;
+        int x_323 = 0;
+        int x_323_phi = 0;
+        int const x_322 = x_322_phi;
+        x_350_phi = false;
+        if ((x_322 <= 9)) {
+        } else {
+          break;
+        }
+        int const x_329 = tree.arr[x_322].data;
+        if ((13 <= x_329)) {
+          int const x_342_save = x_322;
+          int const x_343 = tree.arr[x_342_save].leftIndex;
+          if ((x_343 == -1)) {
+            tree.arr[x_342_save].leftIndex = 9;
+            BST const tint_symbol_20 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_20;
+            x_350_phi = true;
+            break;
+          } else {
+            x_348 = tree.arr[x_342_save].leftIndex;
+            x_323_phi = x_348;
+            {
+              x_323 = x_323_phi;
+              x_322_phi = x_323;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_334_save = x_322;
+          int const x_335 = tree.arr[x_334_save].rightIndex;
+          if ((x_335 == -1)) {
+            tree.arr[x_334_save].rightIndex = 9;
+            BST const tint_symbol_21 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_21;
+            x_350_phi = true;
+            break;
+          } else {
+            x_340 = tree.arr[x_334_save].rightIndex;
+            x_323_phi = x_340;
+            {
+              x_323 = x_323_phi;
+              x_322_phi = x_323;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_323 = x_323_phi;
+          x_322_phi = x_323;
+        }
+      }
+      bool const x_350 = x_350_phi;
+      if (x_350) {
+        break;
+      }
+      break;
+    }
+  }
+  x_353_phi = 0;
+  x_356_phi = 0;
+  x_358_phi = 0;
+  while (true) {
+    int x_381 = 0;
+    int x_391 = 0;
+    int x_396 = 0;
+    int x_359 = 0;
+    int x_354_phi = 0;
+    int x_357_phi = 0;
+    int const x_353 = x_353_phi;
+    x_356 = x_356_phi;
+    int const x_358 = x_358_phi;
+    if ((x_358 < 20)) {
+    } else {
+      break;
+    }
+    int x_366_phi = 0;
+    int x_381_phi = 0;
+    bool x_382_phi = false;
+    switch(0u) {
+      default: {
+        x_366_phi = 0;
+        while (true) {
+          int const x_366 = x_366_phi;
+          x_381_phi = x_353;
+          x_382_phi = false;
+          if ((x_366 != -1)) {
+          } else {
+            break;
+          }
+          BST const x_373 = tree.arr[x_366];
+          int const x_374 = x_373.data;
+          int const x_375 = x_373.leftIndex;
+          int const x_376 = x_373.rightIndex;
+          if ((x_374 == x_358)) {
+            x_381_phi = x_358;
+            x_382_phi = true;
+            break;
+          }
+          {
+            x_366_phi = select(x_375, x_376, (x_358 > x_374));
+          }
+        }
+        x_381 = x_381_phi;
+        bool const x_382 = x_382_phi;
+        x_354_phi = x_381;
+        if (x_382) {
+          break;
+        }
+        x_354_phi = -1;
+        break;
+      }
+    }
+    int x_354 = 0;
+    int x_390 = 0;
+    int x_395 = 0;
+    int x_391_phi = 0;
+    int x_396_phi = 0;
+    x_354 = x_354_phi;
+    switch(x_358) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_391_phi = x_356;
+        if ((x_354 == as_type<int>(x_358))) {
+          x_390 = as_type<int>((x_356 + as_type<int>(1)));
+          x_391_phi = x_390;
+        }
+        x_391 = x_391_phi;
+        x_357_phi = x_391;
+        break;
+      }
+      default: {
+        x_396_phi = x_356;
+        if ((x_354 == as_type<int>(-1))) {
+          x_395 = as_type<int>((x_356 + as_type<int>(1)));
+          x_396_phi = x_395;
+        }
+        x_396 = x_396_phi;
+        x_357_phi = x_396;
+        break;
+      }
+    }
+    int const x_357 = x_357_phi;
+    {
+      x_359 = (x_358 + 1);
+      x_353_phi = x_354;
+      x_356_phi = x_357;
+      x_358_phi = x_359;
+    }
+  }
+  if ((x_356 == as_type<int>(20))) {
+    *(tint_symbol_23) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_23) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_24 = 0.0f;
+  main_1(&(tint_symbol_24));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_24};
+  tint_symbol_1 const tint_symbol_22 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_22;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..9ea3312
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.spvasm
@@ -0,0 +1,1166 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 619
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %x_356 "x_356"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_353_phi "x_353_phi"
+               OpName %x_356_phi "x_356_phi"
+               OpName %x_358_phi "x_358_phi"
+               OpName %x_84 "x_84"
+               OpName %x_76 "x_76"
+               OpName %x_59 "x_59"
+               OpName %x_59_phi "x_59_phi"
+               OpName %x_91_phi "x_91_phi"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_117 "x_117"
+               OpName %x_109 "x_109"
+               OpName %x_92 "x_92"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_124_phi "x_124_phi"
+               OpName %x_152_phi "x_152_phi"
+               OpName %x_150 "x_150"
+               OpName %x_142 "x_142"
+               OpName %x_125 "x_125"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_157_phi "x_157_phi"
+               OpName %x_185_phi "x_185_phi"
+               OpName %x_183 "x_183"
+               OpName %x_175 "x_175"
+               OpName %x_158 "x_158"
+               OpName %x_158_phi "x_158_phi"
+               OpName %x_190_phi "x_190_phi"
+               OpName %x_218_phi "x_218_phi"
+               OpName %x_216 "x_216"
+               OpName %x_208 "x_208"
+               OpName %x_191 "x_191"
+               OpName %x_191_phi "x_191_phi"
+               OpName %x_223_phi "x_223_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_249 "x_249"
+               OpName %x_241 "x_241"
+               OpName %x_224 "x_224"
+               OpName %x_224_phi "x_224_phi"
+               OpName %x_256_phi "x_256_phi"
+               OpName %x_284_phi "x_284_phi"
+               OpName %x_282 "x_282"
+               OpName %x_274 "x_274"
+               OpName %x_257 "x_257"
+               OpName %x_257_phi "x_257_phi"
+               OpName %x_289_phi "x_289_phi"
+               OpName %x_317_phi "x_317_phi"
+               OpName %x_315 "x_315"
+               OpName %x_307 "x_307"
+               OpName %x_290 "x_290"
+               OpName %x_290_phi "x_290_phi"
+               OpName %x_322_phi "x_322_phi"
+               OpName %x_350_phi "x_350_phi"
+               OpName %x_348 "x_348"
+               OpName %x_340 "x_340"
+               OpName %x_323 "x_323"
+               OpName %x_323_phi "x_323_phi"
+               OpName %x_381 "x_381"
+               OpName %x_391 "x_391"
+               OpName %x_396 "x_396"
+               OpName %x_359 "x_359"
+               OpName %x_354_phi "x_354_phi"
+               OpName %x_357_phi "x_357_phi"
+               OpName %x_366_phi "x_366_phi"
+               OpName %x_381_phi "x_381_phi"
+               OpName %x_382_phi "x_382_phi"
+               OpName %x_354 "x_354"
+               OpName %x_390 "x_390"
+               OpName %x_395 "x_395"
+               OpName %x_391_phi "x_391_phi"
+               OpName %x_396_phi "x_396_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %19 = OpConstantNull %_arr_BST_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+%_ptr_Function_BST = OpTypePointer Function %BST
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+         %36 = OpConstantComposite %BST %int_9 %int_n1 %int_n1
+     %uint_0 = OpConstant %uint 0
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+         %71 = OpConstantComposite %BST %int_5 %int_n1 %int_n1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+      %int_2 = OpConstant %int 2
+     %int_12 = OpConstant %int 12
+        %126 = OpConstantComposite %BST %int_12 %int_n1 %int_n1
+      %int_3 = OpConstant %int 3
+     %int_15 = OpConstant %int 15
+        %179 = OpConstantComposite %BST %int_15 %int_n1 %int_n1
+      %int_4 = OpConstant %int 4
+      %int_7 = OpConstant %int 7
+        %232 = OpConstantComposite %BST %int_7 %int_n1 %int_n1
+      %int_8 = OpConstant %int 8
+        %284 = OpConstantComposite %BST %int_8 %int_n1 %int_n1
+      %int_6 = OpConstant %int 6
+        %336 = OpConstantComposite %BST %int_2 %int_n1 %int_n1
+        %387 = OpConstantComposite %BST %int_6 %int_n1 %int_n1
+     %int_17 = OpConstant %int 17
+        %439 = OpConstantComposite %BST %int_17 %int_n1 %int_n1
+     %int_13 = OpConstant %int 13
+        %491 = OpConstantComposite %BST %int_13 %int_n1 %int_n1
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %605 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %606 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %607 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %tree = OpVariable %_ptr_Function__arr_BST_uint_10 Function %19
+      %x_356 = OpVariable %_ptr_Function_int Function %22
+   %x_58_phi = OpVariable %_ptr_Function_int Function %22
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %27
+  %x_353_phi = OpVariable %_ptr_Function_int Function %22
+  %x_356_phi = OpVariable %_ptr_Function_int Function %22
+  %x_358_phi = OpVariable %_ptr_Function_int Function %22
+       %x_84 = OpVariable %_ptr_Function_int Function %22
+       %x_76 = OpVariable %_ptr_Function_int Function %22
+       %x_59 = OpVariable %_ptr_Function_int Function %22
+   %x_59_phi = OpVariable %_ptr_Function_int Function %22
+   %x_91_phi = OpVariable %_ptr_Function_int Function %22
+  %x_119_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_117 = OpVariable %_ptr_Function_int Function %22
+      %x_109 = OpVariable %_ptr_Function_int Function %22
+       %x_92 = OpVariable %_ptr_Function_int Function %22
+   %x_92_phi = OpVariable %_ptr_Function_int Function %22
+  %x_124_phi = OpVariable %_ptr_Function_int Function %22
+  %x_152_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_150 = OpVariable %_ptr_Function_int Function %22
+      %x_142 = OpVariable %_ptr_Function_int Function %22
+      %x_125 = OpVariable %_ptr_Function_int Function %22
+  %x_125_phi = OpVariable %_ptr_Function_int Function %22
+  %x_157_phi = OpVariable %_ptr_Function_int Function %22
+  %x_185_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_183 = OpVariable %_ptr_Function_int Function %22
+      %x_175 = OpVariable %_ptr_Function_int Function %22
+      %x_158 = OpVariable %_ptr_Function_int Function %22
+  %x_158_phi = OpVariable %_ptr_Function_int Function %22
+  %x_190_phi = OpVariable %_ptr_Function_int Function %22
+  %x_218_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_216 = OpVariable %_ptr_Function_int Function %22
+      %x_208 = OpVariable %_ptr_Function_int Function %22
+      %x_191 = OpVariable %_ptr_Function_int Function %22
+  %x_191_phi = OpVariable %_ptr_Function_int Function %22
+  %x_223_phi = OpVariable %_ptr_Function_int Function %22
+  %x_251_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_249 = OpVariable %_ptr_Function_int Function %22
+      %x_241 = OpVariable %_ptr_Function_int Function %22
+      %x_224 = OpVariable %_ptr_Function_int Function %22
+  %x_224_phi = OpVariable %_ptr_Function_int Function %22
+  %x_256_phi = OpVariable %_ptr_Function_int Function %22
+  %x_284_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_282 = OpVariable %_ptr_Function_int Function %22
+      %x_274 = OpVariable %_ptr_Function_int Function %22
+      %x_257 = OpVariable %_ptr_Function_int Function %22
+  %x_257_phi = OpVariable %_ptr_Function_int Function %22
+  %x_289_phi = OpVariable %_ptr_Function_int Function %22
+  %x_317_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_315 = OpVariable %_ptr_Function_int Function %22
+      %x_307 = OpVariable %_ptr_Function_int Function %22
+      %x_290 = OpVariable %_ptr_Function_int Function %22
+  %x_290_phi = OpVariable %_ptr_Function_int Function %22
+  %x_322_phi = OpVariable %_ptr_Function_int Function %22
+  %x_350_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_348 = OpVariable %_ptr_Function_int Function %22
+      %x_340 = OpVariable %_ptr_Function_int Function %22
+      %x_323 = OpVariable %_ptr_Function_int Function %22
+  %x_323_phi = OpVariable %_ptr_Function_int Function %22
+      %x_381 = OpVariable %_ptr_Function_int Function %22
+      %x_391 = OpVariable %_ptr_Function_int Function %22
+      %x_396 = OpVariable %_ptr_Function_int Function %22
+      %x_359 = OpVariable %_ptr_Function_int Function %22
+  %x_354_phi = OpVariable %_ptr_Function_int Function %22
+  %x_357_phi = OpVariable %_ptr_Function_int Function %22
+  %x_366_phi = OpVariable %_ptr_Function_int Function %22
+  %x_381_phi = OpVariable %_ptr_Function_int Function %22
+  %x_382_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_354 = OpVariable %_ptr_Function_int Function %22
+      %x_390 = OpVariable %_ptr_Function_int Function %22
+      %x_395 = OpVariable %_ptr_Function_int Function %22
+  %x_391_phi = OpVariable %_ptr_Function_int Function %22
+  %x_396_phi = OpVariable %_ptr_Function_int Function %22
+         %33 = OpAccessChain %_ptr_Function_BST %tree %int_0
+               OpStore %33 %36
+               OpSelectionMerge %37 None
+               OpSwitch %uint_0 %39
+         %39 = OpLabel
+               OpStore %x_58_phi %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %48 = OpLoad %int %x_58_phi
+               OpStore %x_86_phi %false
+         %51 = OpSLessThanEqual %bool %48 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %41
+         %52 = OpLabel
+         %55 = OpAccessChain %_ptr_Function_int %tree %48 %uint_0
+         %56 = OpLoad %int %55
+         %58 = OpSLessThanEqual %bool %int_5 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+         %64 = OpLoad %int %63
+         %65 = OpIEqual %bool %64 %int_n1
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+         %69 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+               OpStore %69 %int_1
+         %70 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %70 %71
+               OpStore %x_86_phi %true
+               OpBranch %41
+         %68 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+         %74 = OpLoad %int %73
+               OpStore %x_84 %74
+         %75 = OpLoad %int %x_84
+               OpStore %x_59_phi %75
+               OpBranch %42
+         %66 = OpLabel
+               OpReturn
+         %61 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+         %78 = OpLoad %int %77
+         %79 = OpIEqual %bool %78 %int_n1
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+               OpStore %83 %int_1
+         %84 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %84 %71
+               OpStore %x_86_phi %true
+               OpBranch %41
+         %82 = OpLabel
+         %85 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+         %86 = OpLoad %int %85
+               OpStore %x_76 %86
+         %87 = OpLoad %int %x_76
+               OpStore %x_59_phi %87
+               OpBranch %42
+         %80 = OpLabel
+               OpReturn
+         %59 = OpLabel
+               OpReturn
+         %42 = OpLabel
+         %88 = OpLoad %int %x_59_phi
+               OpStore %x_59 %88
+         %89 = OpLoad %int %x_59
+               OpStore %x_58_phi %89
+               OpBranch %40
+         %41 = OpLabel
+         %90 = OpLoad %bool %x_86_phi
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+               OpBranch %37
+         %91 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpSelectionMerge %95 None
+               OpSwitch %uint_0 %96
+         %96 = OpLabel
+               OpStore %x_91_phi %int_0
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %105 = OpLoad %int %x_91_phi
+               OpStore %x_119_phi %false
+        %107 = OpSLessThanEqual %bool %105 %int_2
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %110
+        %109 = OpLabel
+               OpBranch %108
+        %110 = OpLabel
+               OpBranch %98
+        %108 = OpLabel
+        %111 = OpAccessChain %_ptr_Function_int %tree %105 %uint_0
+        %112 = OpLoad %int %111
+        %114 = OpSLessThanEqual %bool %int_12 %112
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %117
+        %116 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+        %119 = OpLoad %int %118
+        %120 = OpIEqual %bool %119 %int_n1
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+        %124 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+               OpStore %124 %int_2
+        %125 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %125 %126
+               OpStore %x_119_phi %true
+               OpBranch %98
+        %123 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+        %128 = OpLoad %int %127
+               OpStore %x_117 %128
+        %129 = OpLoad %int %x_117
+               OpStore %x_92_phi %129
+               OpBranch %99
+        %121 = OpLabel
+               OpReturn
+        %117 = OpLabel
+        %130 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+        %131 = OpLoad %int %130
+        %132 = OpIEqual %bool %131 %int_n1
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %134 = OpLabel
+        %136 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+               OpStore %136 %int_2
+        %137 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %137 %126
+               OpStore %x_119_phi %true
+               OpBranch %98
+        %135 = OpLabel
+        %138 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+        %139 = OpLoad %int %138
+               OpStore %x_109 %139
+        %140 = OpLoad %int %x_109
+               OpStore %x_92_phi %140
+               OpBranch %99
+        %133 = OpLabel
+               OpReturn
+        %115 = OpLabel
+               OpReturn
+         %99 = OpLabel
+        %141 = OpLoad %int %x_92_phi
+               OpStore %x_92 %141
+        %142 = OpLoad %int %x_92
+               OpStore %x_91_phi %142
+               OpBranch %97
+         %98 = OpLabel
+        %143 = OpLoad %bool %x_119_phi
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %144
+        %145 = OpLabel
+               OpBranch %95
+        %144 = OpLabel
+               OpBranch %95
+         %95 = OpLabel
+               OpSelectionMerge %148 None
+               OpSwitch %uint_0 %149
+        %149 = OpLabel
+               OpStore %x_124_phi %int_0
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %158 = OpLoad %int %x_124_phi
+               OpStore %x_152_phi %false
+        %160 = OpSLessThanEqual %bool %158 %int_3
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+               OpBranch %161
+        %163 = OpLabel
+               OpBranch %151
+        %161 = OpLabel
+        %164 = OpAccessChain %_ptr_Function_int %tree %158 %uint_0
+        %165 = OpLoad %int %164
+        %167 = OpSLessThanEqual %bool %int_15 %165
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+        %171 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+        %172 = OpLoad %int %171
+        %173 = OpIEqual %bool %172 %int_n1
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+        %177 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+               OpStore %177 %int_3
+        %178 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %178 %179
+               OpStore %x_152_phi %true
+               OpBranch %151
+        %176 = OpLabel
+        %180 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+        %181 = OpLoad %int %180
+               OpStore %x_150 %181
+        %182 = OpLoad %int %x_150
+               OpStore %x_125_phi %182
+               OpBranch %152
+        %174 = OpLabel
+               OpReturn
+        %170 = OpLabel
+        %183 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+        %184 = OpLoad %int %183
+        %185 = OpIEqual %bool %184 %int_n1
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+        %189 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+               OpStore %189 %int_3
+        %190 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %190 %179
+               OpStore %x_152_phi %true
+               OpBranch %151
+        %188 = OpLabel
+        %191 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+        %192 = OpLoad %int %191
+               OpStore %x_142 %192
+        %193 = OpLoad %int %x_142
+               OpStore %x_125_phi %193
+               OpBranch %152
+        %186 = OpLabel
+               OpReturn
+        %168 = OpLabel
+               OpReturn
+        %152 = OpLabel
+        %194 = OpLoad %int %x_125_phi
+               OpStore %x_125 %194
+        %195 = OpLoad %int %x_125
+               OpStore %x_124_phi %195
+               OpBranch %150
+        %151 = OpLabel
+        %196 = OpLoad %bool %x_152_phi
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+               OpBranch %148
+        %197 = OpLabel
+               OpBranch %148
+        %148 = OpLabel
+               OpSelectionMerge %201 None
+               OpSwitch %uint_0 %202
+        %202 = OpLabel
+               OpStore %x_157_phi %int_0
+               OpBranch %203
+        %203 = OpLabel
+               OpLoopMerge %204 %205 None
+               OpBranch %206
+        %206 = OpLabel
+        %211 = OpLoad %int %x_157_phi
+               OpStore %x_185_phi %false
+        %213 = OpSLessThanEqual %bool %211 %int_4
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %204
+        %214 = OpLabel
+        %217 = OpAccessChain %_ptr_Function_int %tree %211 %uint_0
+        %218 = OpLoad %int %217
+        %220 = OpSLessThanEqual %bool %int_7 %218
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %223
+        %222 = OpLabel
+        %224 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+        %225 = OpLoad %int %224
+        %226 = OpIEqual %bool %225 %int_n1
+               OpSelectionMerge %227 None
+               OpBranchConditional %226 %228 %229
+        %228 = OpLabel
+        %230 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+               OpStore %230 %int_4
+        %231 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %231 %232
+               OpStore %x_185_phi %true
+               OpBranch %204
+        %229 = OpLabel
+        %233 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+        %234 = OpLoad %int %233
+               OpStore %x_183 %234
+        %235 = OpLoad %int %x_183
+               OpStore %x_158_phi %235
+               OpBranch %205
+        %227 = OpLabel
+               OpReturn
+        %223 = OpLabel
+        %236 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+        %237 = OpLoad %int %236
+        %238 = OpIEqual %bool %237 %int_n1
+               OpSelectionMerge %239 None
+               OpBranchConditional %238 %240 %241
+        %240 = OpLabel
+        %242 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+               OpStore %242 %int_4
+        %243 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %243 %232
+               OpStore %x_185_phi %true
+               OpBranch %204
+        %241 = OpLabel
+        %244 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+        %245 = OpLoad %int %244
+               OpStore %x_175 %245
+        %246 = OpLoad %int %x_175
+               OpStore %x_158_phi %246
+               OpBranch %205
+        %239 = OpLabel
+               OpReturn
+        %221 = OpLabel
+               OpReturn
+        %205 = OpLabel
+        %247 = OpLoad %int %x_158_phi
+               OpStore %x_158 %247
+        %248 = OpLoad %int %x_158
+               OpStore %x_157_phi %248
+               OpBranch %203
+        %204 = OpLabel
+        %249 = OpLoad %bool %x_185_phi
+               OpSelectionMerge %250 None
+               OpBranchConditional %249 %251 %250
+        %251 = OpLabel
+               OpBranch %201
+        %250 = OpLabel
+               OpBranch %201
+        %201 = OpLabel
+               OpSelectionMerge %254 None
+               OpSwitch %uint_0 %255
+        %255 = OpLabel
+               OpStore %x_190_phi %int_0
+               OpBranch %256
+        %256 = OpLabel
+               OpLoopMerge %257 %258 None
+               OpBranch %259
+        %259 = OpLabel
+        %264 = OpLoad %int %x_190_phi
+               OpStore %x_218_phi %false
+        %265 = OpSLessThanEqual %bool %264 %int_5
+               OpSelectionMerge %266 None
+               OpBranchConditional %265 %267 %268
+        %267 = OpLabel
+               OpBranch %266
+        %268 = OpLabel
+               OpBranch %257
+        %266 = OpLabel
+        %269 = OpAccessChain %_ptr_Function_int %tree %264 %uint_0
+        %270 = OpLoad %int %269
+        %272 = OpSLessThanEqual %bool %int_8 %270
+               OpSelectionMerge %273 None
+               OpBranchConditional %272 %274 %275
+        %274 = OpLabel
+        %276 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+        %277 = OpLoad %int %276
+        %278 = OpIEqual %bool %277 %int_n1
+               OpSelectionMerge %279 None
+               OpBranchConditional %278 %280 %281
+        %280 = OpLabel
+        %282 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+               OpStore %282 %int_5
+        %283 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %283 %284
+               OpStore %x_218_phi %true
+               OpBranch %257
+        %281 = OpLabel
+        %285 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+        %286 = OpLoad %int %285
+               OpStore %x_216 %286
+        %287 = OpLoad %int %x_216
+               OpStore %x_191_phi %287
+               OpBranch %258
+        %279 = OpLabel
+               OpReturn
+        %275 = OpLabel
+        %288 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+        %289 = OpLoad %int %288
+        %290 = OpIEqual %bool %289 %int_n1
+               OpSelectionMerge %291 None
+               OpBranchConditional %290 %292 %293
+        %292 = OpLabel
+        %294 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+               OpStore %294 %int_5
+        %295 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %295 %284
+               OpStore %x_218_phi %true
+               OpBranch %257
+        %293 = OpLabel
+        %296 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+        %297 = OpLoad %int %296
+               OpStore %x_208 %297
+        %298 = OpLoad %int %x_208
+               OpStore %x_191_phi %298
+               OpBranch %258
+        %291 = OpLabel
+               OpReturn
+        %273 = OpLabel
+               OpReturn
+        %258 = OpLabel
+        %299 = OpLoad %int %x_191_phi
+               OpStore %x_191 %299
+        %300 = OpLoad %int %x_191
+               OpStore %x_190_phi %300
+               OpBranch %256
+        %257 = OpLabel
+        %301 = OpLoad %bool %x_218_phi
+               OpSelectionMerge %302 None
+               OpBranchConditional %301 %303 %302
+        %303 = OpLabel
+               OpBranch %254
+        %302 = OpLabel
+               OpBranch %254
+        %254 = OpLabel
+               OpSelectionMerge %306 None
+               OpSwitch %uint_0 %307
+        %307 = OpLabel
+               OpStore %x_223_phi %int_0
+               OpBranch %308
+        %308 = OpLabel
+               OpLoopMerge %309 %310 None
+               OpBranch %311
+        %311 = OpLabel
+        %316 = OpLoad %int %x_223_phi
+               OpStore %x_251_phi %false
+        %318 = OpSLessThanEqual %bool %316 %int_6
+               OpSelectionMerge %319 None
+               OpBranchConditional %318 %320 %321
+        %320 = OpLabel
+               OpBranch %319
+        %321 = OpLabel
+               OpBranch %309
+        %319 = OpLabel
+        %322 = OpAccessChain %_ptr_Function_int %tree %316 %uint_0
+        %323 = OpLoad %int %322
+        %324 = OpSLessThanEqual %bool %int_2 %323
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %327
+        %326 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+        %329 = OpLoad %int %328
+        %330 = OpIEqual %bool %329 %int_n1
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %333
+        %332 = OpLabel
+        %334 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+               OpStore %334 %int_6
+        %335 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %335 %336
+               OpStore %x_251_phi %true
+               OpBranch %309
+        %333 = OpLabel
+        %337 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+        %338 = OpLoad %int %337
+               OpStore %x_249 %338
+        %339 = OpLoad %int %x_249
+               OpStore %x_224_phi %339
+               OpBranch %310
+        %331 = OpLabel
+               OpReturn
+        %327 = OpLabel
+        %340 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+        %341 = OpLoad %int %340
+        %342 = OpIEqual %bool %341 %int_n1
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+               OpStore %346 %int_6
+        %347 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %347 %336
+               OpStore %x_251_phi %true
+               OpBranch %309
+        %345 = OpLabel
+        %348 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+        %349 = OpLoad %int %348
+               OpStore %x_241 %349
+        %350 = OpLoad %int %x_241
+               OpStore %x_224_phi %350
+               OpBranch %310
+        %343 = OpLabel
+               OpReturn
+        %325 = OpLabel
+               OpReturn
+        %310 = OpLabel
+        %351 = OpLoad %int %x_224_phi
+               OpStore %x_224 %351
+        %352 = OpLoad %int %x_224
+               OpStore %x_223_phi %352
+               OpBranch %308
+        %309 = OpLabel
+        %353 = OpLoad %bool %x_251_phi
+               OpSelectionMerge %354 None
+               OpBranchConditional %353 %355 %354
+        %355 = OpLabel
+               OpBranch %306
+        %354 = OpLabel
+               OpBranch %306
+        %306 = OpLabel
+               OpSelectionMerge %358 None
+               OpSwitch %uint_0 %359
+        %359 = OpLabel
+               OpStore %x_256_phi %int_0
+               OpBranch %360
+        %360 = OpLabel
+               OpLoopMerge %361 %362 None
+               OpBranch %363
+        %363 = OpLabel
+        %368 = OpLoad %int %x_256_phi
+               OpStore %x_284_phi %false
+        %369 = OpSLessThanEqual %bool %368 %int_7
+               OpSelectionMerge %370 None
+               OpBranchConditional %369 %371 %372
+        %371 = OpLabel
+               OpBranch %370
+        %372 = OpLabel
+               OpBranch %361
+        %370 = OpLabel
+        %373 = OpAccessChain %_ptr_Function_int %tree %368 %uint_0
+        %374 = OpLoad %int %373
+        %375 = OpSLessThanEqual %bool %int_6 %374
+               OpSelectionMerge %376 None
+               OpBranchConditional %375 %377 %378
+        %377 = OpLabel
+        %379 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+        %380 = OpLoad %int %379
+        %381 = OpIEqual %bool %380 %int_n1
+               OpSelectionMerge %382 None
+               OpBranchConditional %381 %383 %384
+        %383 = OpLabel
+        %385 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+               OpStore %385 %int_7
+        %386 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %386 %387
+               OpStore %x_284_phi %true
+               OpBranch %361
+        %384 = OpLabel
+        %388 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+        %389 = OpLoad %int %388
+               OpStore %x_282 %389
+        %390 = OpLoad %int %x_282
+               OpStore %x_257_phi %390
+               OpBranch %362
+        %382 = OpLabel
+               OpReturn
+        %378 = OpLabel
+        %391 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+        %392 = OpLoad %int %391
+        %393 = OpIEqual %bool %392 %int_n1
+               OpSelectionMerge %394 None
+               OpBranchConditional %393 %395 %396
+        %395 = OpLabel
+        %397 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+               OpStore %397 %int_7
+        %398 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %398 %387
+               OpStore %x_284_phi %true
+               OpBranch %361
+        %396 = OpLabel
+        %399 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+        %400 = OpLoad %int %399
+               OpStore %x_274 %400
+        %401 = OpLoad %int %x_274
+               OpStore %x_257_phi %401
+               OpBranch %362
+        %394 = OpLabel
+               OpReturn
+        %376 = OpLabel
+               OpReturn
+        %362 = OpLabel
+        %402 = OpLoad %int %x_257_phi
+               OpStore %x_257 %402
+        %403 = OpLoad %int %x_257
+               OpStore %x_256_phi %403
+               OpBranch %360
+        %361 = OpLabel
+        %404 = OpLoad %bool %x_284_phi
+               OpSelectionMerge %405 None
+               OpBranchConditional %404 %406 %405
+        %406 = OpLabel
+               OpBranch %358
+        %405 = OpLabel
+               OpBranch %358
+        %358 = OpLabel
+               OpSelectionMerge %409 None
+               OpSwitch %uint_0 %410
+        %410 = OpLabel
+               OpStore %x_289_phi %int_0
+               OpBranch %411
+        %411 = OpLabel
+               OpLoopMerge %412 %413 None
+               OpBranch %414
+        %414 = OpLabel
+        %419 = OpLoad %int %x_289_phi
+               OpStore %x_317_phi %false
+        %420 = OpSLessThanEqual %bool %419 %int_8
+               OpSelectionMerge %421 None
+               OpBranchConditional %420 %422 %423
+        %422 = OpLabel
+               OpBranch %421
+        %423 = OpLabel
+               OpBranch %412
+        %421 = OpLabel
+        %424 = OpAccessChain %_ptr_Function_int %tree %419 %uint_0
+        %425 = OpLoad %int %424
+        %427 = OpSLessThanEqual %bool %int_17 %425
+               OpSelectionMerge %428 None
+               OpBranchConditional %427 %429 %430
+        %429 = OpLabel
+        %431 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+        %432 = OpLoad %int %431
+        %433 = OpIEqual %bool %432 %int_n1
+               OpSelectionMerge %434 None
+               OpBranchConditional %433 %435 %436
+        %435 = OpLabel
+        %437 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+               OpStore %437 %int_8
+        %438 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %438 %439
+               OpStore %x_317_phi %true
+               OpBranch %412
+        %436 = OpLabel
+        %440 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+        %441 = OpLoad %int %440
+               OpStore %x_315 %441
+        %442 = OpLoad %int %x_315
+               OpStore %x_290_phi %442
+               OpBranch %413
+        %434 = OpLabel
+               OpReturn
+        %430 = OpLabel
+        %443 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+        %444 = OpLoad %int %443
+        %445 = OpIEqual %bool %444 %int_n1
+               OpSelectionMerge %446 None
+               OpBranchConditional %445 %447 %448
+        %447 = OpLabel
+        %449 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+               OpStore %449 %int_8
+        %450 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %450 %439
+               OpStore %x_317_phi %true
+               OpBranch %412
+        %448 = OpLabel
+        %451 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+        %452 = OpLoad %int %451
+               OpStore %x_307 %452
+        %453 = OpLoad %int %x_307
+               OpStore %x_290_phi %453
+               OpBranch %413
+        %446 = OpLabel
+               OpReturn
+        %428 = OpLabel
+               OpReturn
+        %413 = OpLabel
+        %454 = OpLoad %int %x_290_phi
+               OpStore %x_290 %454
+        %455 = OpLoad %int %x_290
+               OpStore %x_289_phi %455
+               OpBranch %411
+        %412 = OpLabel
+        %456 = OpLoad %bool %x_317_phi
+               OpSelectionMerge %457 None
+               OpBranchConditional %456 %458 %457
+        %458 = OpLabel
+               OpBranch %409
+        %457 = OpLabel
+               OpBranch %409
+        %409 = OpLabel
+               OpSelectionMerge %461 None
+               OpSwitch %uint_0 %462
+        %462 = OpLabel
+               OpStore %x_322_phi %int_0
+               OpBranch %463
+        %463 = OpLabel
+               OpLoopMerge %464 %465 None
+               OpBranch %466
+        %466 = OpLabel
+        %471 = OpLoad %int %x_322_phi
+               OpStore %x_350_phi %false
+        %472 = OpSLessThanEqual %bool %471 %int_9
+               OpSelectionMerge %473 None
+               OpBranchConditional %472 %474 %475
+        %474 = OpLabel
+               OpBranch %473
+        %475 = OpLabel
+               OpBranch %464
+        %473 = OpLabel
+        %476 = OpAccessChain %_ptr_Function_int %tree %471 %uint_0
+        %477 = OpLoad %int %476
+        %479 = OpSLessThanEqual %bool %int_13 %477
+               OpSelectionMerge %480 None
+               OpBranchConditional %479 %481 %482
+        %481 = OpLabel
+        %483 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+        %484 = OpLoad %int %483
+        %485 = OpIEqual %bool %484 %int_n1
+               OpSelectionMerge %486 None
+               OpBranchConditional %485 %487 %488
+        %487 = OpLabel
+        %489 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+               OpStore %489 %int_9
+        %490 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %490 %491
+               OpStore %x_350_phi %true
+               OpBranch %464
+        %488 = OpLabel
+        %492 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+        %493 = OpLoad %int %492
+               OpStore %x_348 %493
+        %494 = OpLoad %int %x_348
+               OpStore %x_323_phi %494
+               OpBranch %465
+        %486 = OpLabel
+               OpReturn
+        %482 = OpLabel
+        %495 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+        %496 = OpLoad %int %495
+        %497 = OpIEqual %bool %496 %int_n1
+               OpSelectionMerge %498 None
+               OpBranchConditional %497 %499 %500
+        %499 = OpLabel
+        %501 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+               OpStore %501 %int_9
+        %502 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %502 %491
+               OpStore %x_350_phi %true
+               OpBranch %464
+        %500 = OpLabel
+        %503 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+        %504 = OpLoad %int %503
+               OpStore %x_340 %504
+        %505 = OpLoad %int %x_340
+               OpStore %x_323_phi %505
+               OpBranch %465
+        %498 = OpLabel
+               OpReturn
+        %480 = OpLabel
+               OpReturn
+        %465 = OpLabel
+        %506 = OpLoad %int %x_323_phi
+               OpStore %x_323 %506
+        %507 = OpLoad %int %x_323
+               OpStore %x_322_phi %507
+               OpBranch %463
+        %464 = OpLabel
+        %508 = OpLoad %bool %x_350_phi
+               OpSelectionMerge %509 None
+               OpBranchConditional %508 %510 %509
+        %510 = OpLabel
+               OpBranch %461
+        %509 = OpLabel
+               OpBranch %461
+        %461 = OpLabel
+               OpStore %x_353_phi %int_0
+               OpStore %x_356_phi %int_0
+               OpStore %x_358_phi %int_0
+               OpBranch %511
+        %511 = OpLabel
+               OpLoopMerge %512 %513 None
+               OpBranch %514
+        %514 = OpLabel
+        %521 = OpLoad %int %x_353_phi
+        %522 = OpLoad %int %x_356_phi
+               OpStore %x_356 %522
+        %523 = OpLoad %int %x_358_phi
+        %525 = OpSLessThan %bool %523 %int_20
+               OpSelectionMerge %526 None
+               OpBranchConditional %525 %527 %528
+        %527 = OpLabel
+               OpBranch %526
+        %528 = OpLabel
+               OpBranch %512
+        %526 = OpLabel
+               OpSelectionMerge %532 None
+               OpSwitch %uint_0 %533
+        %533 = OpLabel
+               OpStore %x_366_phi %int_0
+               OpBranch %534
+        %534 = OpLabel
+               OpLoopMerge %535 %536 None
+               OpBranch %537
+        %537 = OpLabel
+        %538 = OpLoad %int %x_366_phi
+               OpStore %x_381_phi %521
+               OpStore %x_382_phi %false
+        %539 = OpINotEqual %bool %538 %int_n1
+               OpSelectionMerge %540 None
+               OpBranchConditional %539 %541 %542
+        %541 = OpLabel
+               OpBranch %540
+        %542 = OpLabel
+               OpBranch %535
+        %540 = OpLabel
+        %543 = OpAccessChain %_ptr_Function_BST %tree %538
+        %544 = OpLoad %BST %543
+        %545 = OpCompositeExtract %int %544 0
+        %546 = OpCompositeExtract %int %544 1
+        %547 = OpCompositeExtract %int %544 2
+        %548 = OpIEqual %bool %545 %523
+               OpSelectionMerge %549 None
+               OpBranchConditional %548 %550 %549
+        %550 = OpLabel
+               OpStore %x_381_phi %523
+               OpStore %x_382_phi %true
+               OpBranch %535
+        %549 = OpLabel
+               OpBranch %536
+        %536 = OpLabel
+        %552 = OpSGreaterThan %bool %523 %545
+        %551 = OpSelect %int %552 %547 %546
+               OpStore %x_366_phi %551
+               OpBranch %534
+        %535 = OpLabel
+        %553 = OpLoad %int %x_381_phi
+               OpStore %x_381 %553
+        %554 = OpLoad %bool %x_382_phi
+        %555 = OpLoad %int %x_381
+               OpStore %x_354_phi %555
+               OpSelectionMerge %556 None
+               OpBranchConditional %554 %557 %556
+        %557 = OpLabel
+               OpBranch %532
+        %556 = OpLabel
+               OpStore %x_354_phi %int_n1
+               OpBranch %532
+        %532 = OpLabel
+        %563 = OpLoad %int %x_354_phi
+               OpStore %x_354 %563
+               OpSelectionMerge %564 None
+               OpSwitch %523 %565 2 %566 5 %566 6 %566 7 %566 8 %566 9 %566 12 %566 13 %566 15 %566 17 %566
+        %566 = OpLabel
+        %567 = OpLoad %int %x_356
+               OpStore %x_391_phi %567
+        %568 = OpLoad %int %x_354
+        %569 = OpCopyObject %int %523
+        %570 = OpIEqual %bool %568 %569
+               OpSelectionMerge %571 None
+               OpBranchConditional %570 %572 %571
+        %572 = OpLabel
+        %574 = OpLoad %int %x_356
+        %575 = OpCopyObject %int %int_1
+        %576 = OpIAdd %int %574 %575
+        %573 = OpCopyObject %int %576
+               OpStore %x_390 %573
+        %577 = OpLoad %int %x_390
+               OpStore %x_391_phi %577
+               OpBranch %571
+        %571 = OpLabel
+        %578 = OpLoad %int %x_391_phi
+               OpStore %x_391 %578
+        %579 = OpLoad %int %x_391
+               OpStore %x_357_phi %579
+               OpBranch %564
+        %565 = OpLabel
+        %580 = OpLoad %int %x_356
+               OpStore %x_396_phi %580
+        %581 = OpLoad %int %x_354
+        %582 = OpCopyObject %int %int_n1
+        %583 = OpIEqual %bool %581 %582
+               OpSelectionMerge %584 None
+               OpBranchConditional %583 %585 %584
+        %585 = OpLabel
+        %587 = OpLoad %int %x_356
+        %588 = OpCopyObject %int %int_1
+        %589 = OpIAdd %int %587 %588
+        %586 = OpCopyObject %int %589
+               OpStore %x_395 %586
+        %590 = OpLoad %int %x_395
+               OpStore %x_396_phi %590
+               OpBranch %584
+        %584 = OpLabel
+        %591 = OpLoad %int %x_396_phi
+               OpStore %x_396 %591
+        %592 = OpLoad %int %x_396
+               OpStore %x_357_phi %592
+               OpBranch %564
+        %564 = OpLabel
+        %593 = OpLoad %int %x_357_phi
+               OpBranch %513
+        %513 = OpLabel
+        %594 = OpIAdd %int %523 %int_1
+               OpStore %x_359 %594
+        %595 = OpLoad %int %x_354
+               OpStore %x_353_phi %595
+               OpStore %x_356_phi %593
+        %596 = OpLoad %int %x_359
+               OpStore %x_358_phi %596
+               OpBranch %511
+        %512 = OpLabel
+        %597 = OpLoad %int %x_356
+        %598 = OpCopyObject %int %int_20
+        %599 = OpIEqual %bool %597 %598
+               OpSelectionMerge %600 None
+               OpBranchConditional %599 %601 %602
+        %601 = OpLabel
+               OpStore %x_GLF_color %605
+               OpBranch %600
+        %602 = OpLabel
+               OpStore %x_GLF_color %606
+               OpBranch %600
+        %600 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %607
+%tint_symbol = OpFunctionParameter %main_out
+        %611 = OpLabel
+        %612 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %612
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+        %614 = OpLabel
+        %615 = OpFunctionCall %void %main_1
+        %617 = OpLoad %v4float %x_GLF_color
+        %618 = OpCompositeConstruct %main_out %617
+        %616 = OpFunctionCall %void %tint_symbol_2 %618
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..76d569e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.wgsl
@@ -0,0 +1,653 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var tree : array<BST, 10>;
+  var x_356 : i32;
+  var x_58_phi : i32;
+  var x_86_phi : bool;
+  var x_353_phi : i32;
+  var x_356_phi : i32;
+  var x_358_phi : i32;
+  tree[0] = BST(9, -1, -1);
+  switch(0u) {
+    default: {
+      x_58_phi = 0;
+      loop {
+        var x_84 : i32;
+        var x_76 : i32;
+        var x_59 : i32;
+        var x_59_phi : i32;
+        let x_58 : i32 = x_58_phi;
+        x_86_phi = false;
+        if ((x_58 <= 1)) {
+        } else {
+          break;
+        }
+        let x_65 : i32 = tree[x_58].data;
+        if ((5 <= x_65)) {
+          let x_78 : ptr<function, i32> = &(tree[x_58].leftIndex);
+          let x_79 : i32 = *(x_78);
+          if ((x_79 == -1)) {
+            *(x_78) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_86_phi = true;
+            break;
+          } else {
+            x_84 = *(x_78);
+            x_59_phi = x_84;
+            continue;
+          }
+          return;
+        } else {
+          let x_70 : ptr<function, i32> = &(tree[x_58].rightIndex);
+          let x_71 : i32 = *(x_70);
+          if ((x_71 == -1)) {
+            *(x_70) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_86_phi = true;
+            break;
+          } else {
+            x_76 = *(x_70);
+            x_59_phi = x_76;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_59 = x_59_phi;
+          x_58_phi = x_59;
+        }
+      }
+      let x_86 : bool = x_86_phi;
+      if (x_86) {
+        break;
+      }
+    }
+  }
+  var x_91_phi : i32;
+  var x_119_phi : bool;
+  switch(0u) {
+    default: {
+      x_91_phi = 0;
+      loop {
+        var x_117 : i32;
+        var x_109 : i32;
+        var x_92 : i32;
+        var x_92_phi : i32;
+        let x_91 : i32 = x_91_phi;
+        x_119_phi = false;
+        if ((x_91 <= 2)) {
+        } else {
+          break;
+        }
+        let x_98 : i32 = tree[x_91].data;
+        if ((12 <= x_98)) {
+          let x_111 : ptr<function, i32> = &(tree[x_91].leftIndex);
+          let x_112 : i32 = *(x_111);
+          if ((x_112 == -1)) {
+            *(x_111) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_119_phi = true;
+            break;
+          } else {
+            x_117 = *(x_111);
+            x_92_phi = x_117;
+            continue;
+          }
+          return;
+        } else {
+          let x_103 : ptr<function, i32> = &(tree[x_91].rightIndex);
+          let x_104 : i32 = *(x_103);
+          if ((x_104 == -1)) {
+            *(x_103) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_119_phi = true;
+            break;
+          } else {
+            x_109 = *(x_103);
+            x_92_phi = x_109;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_92 = x_92_phi;
+          x_91_phi = x_92;
+        }
+      }
+      let x_119 : bool = x_119_phi;
+      if (x_119) {
+        break;
+      }
+    }
+  }
+  var x_124_phi : i32;
+  var x_152_phi : bool;
+  switch(0u) {
+    default: {
+      x_124_phi = 0;
+      loop {
+        var x_150 : i32;
+        var x_142 : i32;
+        var x_125 : i32;
+        var x_125_phi : i32;
+        let x_124 : i32 = x_124_phi;
+        x_152_phi = false;
+        if ((x_124 <= 3)) {
+        } else {
+          break;
+        }
+        let x_131 : i32 = tree[x_124].data;
+        if ((15 <= x_131)) {
+          let x_144 : ptr<function, i32> = &(tree[x_124].leftIndex);
+          let x_145 : i32 = *(x_144);
+          if ((x_145 == -1)) {
+            *(x_144) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_152_phi = true;
+            break;
+          } else {
+            x_150 = *(x_144);
+            x_125_phi = x_150;
+            continue;
+          }
+          return;
+        } else {
+          let x_136 : ptr<function, i32> = &(tree[x_124].rightIndex);
+          let x_137 : i32 = *(x_136);
+          if ((x_137 == -1)) {
+            *(x_136) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_152_phi = true;
+            break;
+          } else {
+            x_142 = *(x_136);
+            x_125_phi = x_142;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_125 = x_125_phi;
+          x_124_phi = x_125;
+        }
+      }
+      let x_152 : bool = x_152_phi;
+      if (x_152) {
+        break;
+      }
+    }
+  }
+  var x_157_phi : i32;
+  var x_185_phi : bool;
+  switch(0u) {
+    default: {
+      x_157_phi = 0;
+      loop {
+        var x_183 : i32;
+        var x_175 : i32;
+        var x_158 : i32;
+        var x_158_phi : i32;
+        let x_157 : i32 = x_157_phi;
+        x_185_phi = false;
+        if ((x_157 <= 4)) {
+        } else {
+          break;
+        }
+        let x_164 : i32 = tree[x_157].data;
+        if ((7 <= x_164)) {
+          let x_177 : ptr<function, i32> = &(tree[x_157].leftIndex);
+          let x_178 : i32 = *(x_177);
+          if ((x_178 == -1)) {
+            *(x_177) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_185_phi = true;
+            break;
+          } else {
+            x_183 = *(x_177);
+            x_158_phi = x_183;
+            continue;
+          }
+          return;
+        } else {
+          let x_169 : ptr<function, i32> = &(tree[x_157].rightIndex);
+          let x_170 : i32 = *(x_169);
+          if ((x_170 == -1)) {
+            *(x_169) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_185_phi = true;
+            break;
+          } else {
+            x_175 = *(x_169);
+            x_158_phi = x_175;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_158 = x_158_phi;
+          x_157_phi = x_158;
+        }
+      }
+      let x_185 : bool = x_185_phi;
+      if (x_185) {
+        break;
+      }
+    }
+  }
+  var x_190_phi : i32;
+  var x_218_phi : bool;
+  switch(0u) {
+    default: {
+      x_190_phi = 0;
+      loop {
+        var x_216 : i32;
+        var x_208 : i32;
+        var x_191 : i32;
+        var x_191_phi : i32;
+        let x_190 : i32 = x_190_phi;
+        x_218_phi = false;
+        if ((x_190 <= 5)) {
+        } else {
+          break;
+        }
+        let x_197 : i32 = tree[x_190].data;
+        if ((8 <= x_197)) {
+          let x_210 : ptr<function, i32> = &(tree[x_190].leftIndex);
+          let x_211 : i32 = *(x_210);
+          if ((x_211 == -1)) {
+            *(x_210) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_218_phi = true;
+            break;
+          } else {
+            x_216 = *(x_210);
+            x_191_phi = x_216;
+            continue;
+          }
+          return;
+        } else {
+          let x_202 : ptr<function, i32> = &(tree[x_190].rightIndex);
+          let x_203 : i32 = *(x_202);
+          if ((x_203 == -1)) {
+            *(x_202) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_218_phi = true;
+            break;
+          } else {
+            x_208 = *(x_202);
+            x_191_phi = x_208;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_191 = x_191_phi;
+          x_190_phi = x_191;
+        }
+      }
+      let x_218 : bool = x_218_phi;
+      if (x_218) {
+        break;
+      }
+    }
+  }
+  var x_223_phi : i32;
+  var x_251_phi : bool;
+  switch(0u) {
+    default: {
+      x_223_phi = 0;
+      loop {
+        var x_249 : i32;
+        var x_241 : i32;
+        var x_224 : i32;
+        var x_224_phi : i32;
+        let x_223 : i32 = x_223_phi;
+        x_251_phi = false;
+        if ((x_223 <= 6)) {
+        } else {
+          break;
+        }
+        let x_230 : i32 = tree[x_223].data;
+        if ((2 <= x_230)) {
+          let x_243 : ptr<function, i32> = &(tree[x_223].leftIndex);
+          let x_244 : i32 = *(x_243);
+          if ((x_244 == -1)) {
+            *(x_243) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_251_phi = true;
+            break;
+          } else {
+            x_249 = *(x_243);
+            x_224_phi = x_249;
+            continue;
+          }
+          return;
+        } else {
+          let x_235 : ptr<function, i32> = &(tree[x_223].rightIndex);
+          let x_236 : i32 = *(x_235);
+          if ((x_236 == -1)) {
+            *(x_235) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_251_phi = true;
+            break;
+          } else {
+            x_241 = *(x_235);
+            x_224_phi = x_241;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_224 = x_224_phi;
+          x_223_phi = x_224;
+        }
+      }
+      let x_251 : bool = x_251_phi;
+      if (x_251) {
+        break;
+      }
+    }
+  }
+  var x_256_phi : i32;
+  var x_284_phi : bool;
+  switch(0u) {
+    default: {
+      x_256_phi = 0;
+      loop {
+        var x_282 : i32;
+        var x_274 : i32;
+        var x_257 : i32;
+        var x_257_phi : i32;
+        let x_256 : i32 = x_256_phi;
+        x_284_phi = false;
+        if ((x_256 <= 7)) {
+        } else {
+          break;
+        }
+        let x_263 : i32 = tree[x_256].data;
+        if ((6 <= x_263)) {
+          let x_276 : ptr<function, i32> = &(tree[x_256].leftIndex);
+          let x_277 : i32 = *(x_276);
+          if ((x_277 == -1)) {
+            *(x_276) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_284_phi = true;
+            break;
+          } else {
+            x_282 = *(x_276);
+            x_257_phi = x_282;
+            continue;
+          }
+          return;
+        } else {
+          let x_268 : ptr<function, i32> = &(tree[x_256].rightIndex);
+          let x_269 : i32 = *(x_268);
+          if ((x_269 == -1)) {
+            *(x_268) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_284_phi = true;
+            break;
+          } else {
+            x_274 = *(x_268);
+            x_257_phi = x_274;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_257 = x_257_phi;
+          x_256_phi = x_257;
+        }
+      }
+      let x_284 : bool = x_284_phi;
+      if (x_284) {
+        break;
+      }
+    }
+  }
+  var x_289_phi : i32;
+  var x_317_phi : bool;
+  switch(0u) {
+    default: {
+      x_289_phi = 0;
+      loop {
+        var x_315 : i32;
+        var x_307 : i32;
+        var x_290 : i32;
+        var x_290_phi : i32;
+        let x_289 : i32 = x_289_phi;
+        x_317_phi = false;
+        if ((x_289 <= 8)) {
+        } else {
+          break;
+        }
+        let x_296 : i32 = tree[x_289].data;
+        if ((17 <= x_296)) {
+          let x_309 : ptr<function, i32> = &(tree[x_289].leftIndex);
+          let x_310 : i32 = *(x_309);
+          if ((x_310 == -1)) {
+            *(x_309) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_317_phi = true;
+            break;
+          } else {
+            x_315 = *(x_309);
+            x_290_phi = x_315;
+            continue;
+          }
+          return;
+        } else {
+          let x_301 : ptr<function, i32> = &(tree[x_289].rightIndex);
+          let x_302 : i32 = *(x_301);
+          if ((x_302 == -1)) {
+            *(x_301) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_317_phi = true;
+            break;
+          } else {
+            x_307 = *(x_301);
+            x_290_phi = x_307;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_290 = x_290_phi;
+          x_289_phi = x_290;
+        }
+      }
+      let x_317 : bool = x_317_phi;
+      if (x_317) {
+        break;
+      }
+    }
+  }
+  var x_322_phi : i32;
+  var x_350_phi : bool;
+  switch(0u) {
+    default: {
+      x_322_phi = 0;
+      loop {
+        var x_348 : i32;
+        var x_340 : i32;
+        var x_323 : i32;
+        var x_323_phi : i32;
+        let x_322 : i32 = x_322_phi;
+        x_350_phi = false;
+        if ((x_322 <= 9)) {
+        } else {
+          break;
+        }
+        let x_329 : i32 = tree[x_322].data;
+        if ((13 <= x_329)) {
+          let x_342 : ptr<function, i32> = &(tree[x_322].leftIndex);
+          let x_343 : i32 = *(x_342);
+          if ((x_343 == -1)) {
+            *(x_342) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_350_phi = true;
+            break;
+          } else {
+            x_348 = *(x_342);
+            x_323_phi = x_348;
+            continue;
+          }
+          return;
+        } else {
+          let x_334 : ptr<function, i32> = &(tree[x_322].rightIndex);
+          let x_335 : i32 = *(x_334);
+          if ((x_335 == -1)) {
+            *(x_334) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_350_phi = true;
+            break;
+          } else {
+            x_340 = *(x_334);
+            x_323_phi = x_340;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_323 = x_323_phi;
+          x_322_phi = x_323;
+        }
+      }
+      let x_350 : bool = x_350_phi;
+      if (x_350) {
+        break;
+      }
+    }
+  }
+  x_353_phi = 0;
+  x_356_phi = 0;
+  x_358_phi = 0;
+  loop {
+    var x_381 : i32;
+    var x_391 : i32;
+    var x_396 : i32;
+    var x_359 : i32;
+    var x_354_phi : i32;
+    var x_357_phi : i32;
+    let x_353 : i32 = x_353_phi;
+    x_356 = x_356_phi;
+    let x_358 : i32 = x_358_phi;
+    if ((x_358 < 20)) {
+    } else {
+      break;
+    }
+    var x_366_phi : i32;
+    var x_381_phi : i32;
+    var x_382_phi : bool;
+    switch(0u) {
+      default: {
+        x_366_phi = 0;
+        loop {
+          let x_366 : i32 = x_366_phi;
+          x_381_phi = x_353;
+          x_382_phi = false;
+          if ((x_366 != -1)) {
+          } else {
+            break;
+          }
+          let x_373 : BST = tree[x_366];
+          let x_374 : i32 = x_373.data;
+          let x_375 : i32 = x_373.leftIndex;
+          let x_376 : i32 = x_373.rightIndex;
+          if ((x_374 == x_358)) {
+            x_381_phi = x_358;
+            x_382_phi = true;
+            break;
+          }
+
+          continuing {
+            x_366_phi = select(x_375, x_376, (x_358 > x_374));
+          }
+        }
+        x_381 = x_381_phi;
+        let x_382 : bool = x_382_phi;
+        x_354_phi = x_381;
+        if (x_382) {
+          break;
+        }
+        x_354_phi = -1;
+      }
+    }
+    var x_354 : i32;
+    var x_390 : i32;
+    var x_395 : i32;
+    var x_391_phi : i32;
+    var x_396_phi : i32;
+    x_354 = x_354_phi;
+    switch(x_358) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        x_391_phi = x_356;
+        if ((x_354 == bitcast<i32>(x_358))) {
+          x_390 = bitcast<i32>((x_356 + bitcast<i32>(1)));
+          x_391_phi = x_390;
+        }
+        x_391 = x_391_phi;
+        x_357_phi = x_391;
+      }
+      default: {
+        x_396_phi = x_356;
+        if ((x_354 == bitcast<i32>(-1))) {
+          x_395 = bitcast<i32>((x_356 + bitcast<i32>(1)));
+          x_396_phi = x_395;
+        }
+        x_396 = x_396_phi;
+        x_357_phi = x_396;
+      }
+    }
+    let x_357 : i32 = x_357_phi;
+
+    continuing {
+      x_359 = (x_358 + 1);
+      x_353_phi = x_354;
+      x_356_phi = x_357;
+      x_358_phi = x_359;
+    }
+  }
+  if ((x_356 == bitcast<i32>(20))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
new file mode 100644
index 0000000..76d569e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
@@ -0,0 +1,653 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var tree : array<BST, 10>;
+  var x_356 : i32;
+  var x_58_phi : i32;
+  var x_86_phi : bool;
+  var x_353_phi : i32;
+  var x_356_phi : i32;
+  var x_358_phi : i32;
+  tree[0] = BST(9, -1, -1);
+  switch(0u) {
+    default: {
+      x_58_phi = 0;
+      loop {
+        var x_84 : i32;
+        var x_76 : i32;
+        var x_59 : i32;
+        var x_59_phi : i32;
+        let x_58 : i32 = x_58_phi;
+        x_86_phi = false;
+        if ((x_58 <= 1)) {
+        } else {
+          break;
+        }
+        let x_65 : i32 = tree[x_58].data;
+        if ((5 <= x_65)) {
+          let x_78 : ptr<function, i32> = &(tree[x_58].leftIndex);
+          let x_79 : i32 = *(x_78);
+          if ((x_79 == -1)) {
+            *(x_78) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_86_phi = true;
+            break;
+          } else {
+            x_84 = *(x_78);
+            x_59_phi = x_84;
+            continue;
+          }
+          return;
+        } else {
+          let x_70 : ptr<function, i32> = &(tree[x_58].rightIndex);
+          let x_71 : i32 = *(x_70);
+          if ((x_71 == -1)) {
+            *(x_70) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_86_phi = true;
+            break;
+          } else {
+            x_76 = *(x_70);
+            x_59_phi = x_76;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_59 = x_59_phi;
+          x_58_phi = x_59;
+        }
+      }
+      let x_86 : bool = x_86_phi;
+      if (x_86) {
+        break;
+      }
+    }
+  }
+  var x_91_phi : i32;
+  var x_119_phi : bool;
+  switch(0u) {
+    default: {
+      x_91_phi = 0;
+      loop {
+        var x_117 : i32;
+        var x_109 : i32;
+        var x_92 : i32;
+        var x_92_phi : i32;
+        let x_91 : i32 = x_91_phi;
+        x_119_phi = false;
+        if ((x_91 <= 2)) {
+        } else {
+          break;
+        }
+        let x_98 : i32 = tree[x_91].data;
+        if ((12 <= x_98)) {
+          let x_111 : ptr<function, i32> = &(tree[x_91].leftIndex);
+          let x_112 : i32 = *(x_111);
+          if ((x_112 == -1)) {
+            *(x_111) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_119_phi = true;
+            break;
+          } else {
+            x_117 = *(x_111);
+            x_92_phi = x_117;
+            continue;
+          }
+          return;
+        } else {
+          let x_103 : ptr<function, i32> = &(tree[x_91].rightIndex);
+          let x_104 : i32 = *(x_103);
+          if ((x_104 == -1)) {
+            *(x_103) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_119_phi = true;
+            break;
+          } else {
+            x_109 = *(x_103);
+            x_92_phi = x_109;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_92 = x_92_phi;
+          x_91_phi = x_92;
+        }
+      }
+      let x_119 : bool = x_119_phi;
+      if (x_119) {
+        break;
+      }
+    }
+  }
+  var x_124_phi : i32;
+  var x_152_phi : bool;
+  switch(0u) {
+    default: {
+      x_124_phi = 0;
+      loop {
+        var x_150 : i32;
+        var x_142 : i32;
+        var x_125 : i32;
+        var x_125_phi : i32;
+        let x_124 : i32 = x_124_phi;
+        x_152_phi = false;
+        if ((x_124 <= 3)) {
+        } else {
+          break;
+        }
+        let x_131 : i32 = tree[x_124].data;
+        if ((15 <= x_131)) {
+          let x_144 : ptr<function, i32> = &(tree[x_124].leftIndex);
+          let x_145 : i32 = *(x_144);
+          if ((x_145 == -1)) {
+            *(x_144) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_152_phi = true;
+            break;
+          } else {
+            x_150 = *(x_144);
+            x_125_phi = x_150;
+            continue;
+          }
+          return;
+        } else {
+          let x_136 : ptr<function, i32> = &(tree[x_124].rightIndex);
+          let x_137 : i32 = *(x_136);
+          if ((x_137 == -1)) {
+            *(x_136) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_152_phi = true;
+            break;
+          } else {
+            x_142 = *(x_136);
+            x_125_phi = x_142;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_125 = x_125_phi;
+          x_124_phi = x_125;
+        }
+      }
+      let x_152 : bool = x_152_phi;
+      if (x_152) {
+        break;
+      }
+    }
+  }
+  var x_157_phi : i32;
+  var x_185_phi : bool;
+  switch(0u) {
+    default: {
+      x_157_phi = 0;
+      loop {
+        var x_183 : i32;
+        var x_175 : i32;
+        var x_158 : i32;
+        var x_158_phi : i32;
+        let x_157 : i32 = x_157_phi;
+        x_185_phi = false;
+        if ((x_157 <= 4)) {
+        } else {
+          break;
+        }
+        let x_164 : i32 = tree[x_157].data;
+        if ((7 <= x_164)) {
+          let x_177 : ptr<function, i32> = &(tree[x_157].leftIndex);
+          let x_178 : i32 = *(x_177);
+          if ((x_178 == -1)) {
+            *(x_177) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_185_phi = true;
+            break;
+          } else {
+            x_183 = *(x_177);
+            x_158_phi = x_183;
+            continue;
+          }
+          return;
+        } else {
+          let x_169 : ptr<function, i32> = &(tree[x_157].rightIndex);
+          let x_170 : i32 = *(x_169);
+          if ((x_170 == -1)) {
+            *(x_169) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_185_phi = true;
+            break;
+          } else {
+            x_175 = *(x_169);
+            x_158_phi = x_175;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_158 = x_158_phi;
+          x_157_phi = x_158;
+        }
+      }
+      let x_185 : bool = x_185_phi;
+      if (x_185) {
+        break;
+      }
+    }
+  }
+  var x_190_phi : i32;
+  var x_218_phi : bool;
+  switch(0u) {
+    default: {
+      x_190_phi = 0;
+      loop {
+        var x_216 : i32;
+        var x_208 : i32;
+        var x_191 : i32;
+        var x_191_phi : i32;
+        let x_190 : i32 = x_190_phi;
+        x_218_phi = false;
+        if ((x_190 <= 5)) {
+        } else {
+          break;
+        }
+        let x_197 : i32 = tree[x_190].data;
+        if ((8 <= x_197)) {
+          let x_210 : ptr<function, i32> = &(tree[x_190].leftIndex);
+          let x_211 : i32 = *(x_210);
+          if ((x_211 == -1)) {
+            *(x_210) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_218_phi = true;
+            break;
+          } else {
+            x_216 = *(x_210);
+            x_191_phi = x_216;
+            continue;
+          }
+          return;
+        } else {
+          let x_202 : ptr<function, i32> = &(tree[x_190].rightIndex);
+          let x_203 : i32 = *(x_202);
+          if ((x_203 == -1)) {
+            *(x_202) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_218_phi = true;
+            break;
+          } else {
+            x_208 = *(x_202);
+            x_191_phi = x_208;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_191 = x_191_phi;
+          x_190_phi = x_191;
+        }
+      }
+      let x_218 : bool = x_218_phi;
+      if (x_218) {
+        break;
+      }
+    }
+  }
+  var x_223_phi : i32;
+  var x_251_phi : bool;
+  switch(0u) {
+    default: {
+      x_223_phi = 0;
+      loop {
+        var x_249 : i32;
+        var x_241 : i32;
+        var x_224 : i32;
+        var x_224_phi : i32;
+        let x_223 : i32 = x_223_phi;
+        x_251_phi = false;
+        if ((x_223 <= 6)) {
+        } else {
+          break;
+        }
+        let x_230 : i32 = tree[x_223].data;
+        if ((2 <= x_230)) {
+          let x_243 : ptr<function, i32> = &(tree[x_223].leftIndex);
+          let x_244 : i32 = *(x_243);
+          if ((x_244 == -1)) {
+            *(x_243) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_251_phi = true;
+            break;
+          } else {
+            x_249 = *(x_243);
+            x_224_phi = x_249;
+            continue;
+          }
+          return;
+        } else {
+          let x_235 : ptr<function, i32> = &(tree[x_223].rightIndex);
+          let x_236 : i32 = *(x_235);
+          if ((x_236 == -1)) {
+            *(x_235) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_251_phi = true;
+            break;
+          } else {
+            x_241 = *(x_235);
+            x_224_phi = x_241;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_224 = x_224_phi;
+          x_223_phi = x_224;
+        }
+      }
+      let x_251 : bool = x_251_phi;
+      if (x_251) {
+        break;
+      }
+    }
+  }
+  var x_256_phi : i32;
+  var x_284_phi : bool;
+  switch(0u) {
+    default: {
+      x_256_phi = 0;
+      loop {
+        var x_282 : i32;
+        var x_274 : i32;
+        var x_257 : i32;
+        var x_257_phi : i32;
+        let x_256 : i32 = x_256_phi;
+        x_284_phi = false;
+        if ((x_256 <= 7)) {
+        } else {
+          break;
+        }
+        let x_263 : i32 = tree[x_256].data;
+        if ((6 <= x_263)) {
+          let x_276 : ptr<function, i32> = &(tree[x_256].leftIndex);
+          let x_277 : i32 = *(x_276);
+          if ((x_277 == -1)) {
+            *(x_276) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_284_phi = true;
+            break;
+          } else {
+            x_282 = *(x_276);
+            x_257_phi = x_282;
+            continue;
+          }
+          return;
+        } else {
+          let x_268 : ptr<function, i32> = &(tree[x_256].rightIndex);
+          let x_269 : i32 = *(x_268);
+          if ((x_269 == -1)) {
+            *(x_268) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_284_phi = true;
+            break;
+          } else {
+            x_274 = *(x_268);
+            x_257_phi = x_274;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_257 = x_257_phi;
+          x_256_phi = x_257;
+        }
+      }
+      let x_284 : bool = x_284_phi;
+      if (x_284) {
+        break;
+      }
+    }
+  }
+  var x_289_phi : i32;
+  var x_317_phi : bool;
+  switch(0u) {
+    default: {
+      x_289_phi = 0;
+      loop {
+        var x_315 : i32;
+        var x_307 : i32;
+        var x_290 : i32;
+        var x_290_phi : i32;
+        let x_289 : i32 = x_289_phi;
+        x_317_phi = false;
+        if ((x_289 <= 8)) {
+        } else {
+          break;
+        }
+        let x_296 : i32 = tree[x_289].data;
+        if ((17 <= x_296)) {
+          let x_309 : ptr<function, i32> = &(tree[x_289].leftIndex);
+          let x_310 : i32 = *(x_309);
+          if ((x_310 == -1)) {
+            *(x_309) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_317_phi = true;
+            break;
+          } else {
+            x_315 = *(x_309);
+            x_290_phi = x_315;
+            continue;
+          }
+          return;
+        } else {
+          let x_301 : ptr<function, i32> = &(tree[x_289].rightIndex);
+          let x_302 : i32 = *(x_301);
+          if ((x_302 == -1)) {
+            *(x_301) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_317_phi = true;
+            break;
+          } else {
+            x_307 = *(x_301);
+            x_290_phi = x_307;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_290 = x_290_phi;
+          x_289_phi = x_290;
+        }
+      }
+      let x_317 : bool = x_317_phi;
+      if (x_317) {
+        break;
+      }
+    }
+  }
+  var x_322_phi : i32;
+  var x_350_phi : bool;
+  switch(0u) {
+    default: {
+      x_322_phi = 0;
+      loop {
+        var x_348 : i32;
+        var x_340 : i32;
+        var x_323 : i32;
+        var x_323_phi : i32;
+        let x_322 : i32 = x_322_phi;
+        x_350_phi = false;
+        if ((x_322 <= 9)) {
+        } else {
+          break;
+        }
+        let x_329 : i32 = tree[x_322].data;
+        if ((13 <= x_329)) {
+          let x_342 : ptr<function, i32> = &(tree[x_322].leftIndex);
+          let x_343 : i32 = *(x_342);
+          if ((x_343 == -1)) {
+            *(x_342) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_350_phi = true;
+            break;
+          } else {
+            x_348 = *(x_342);
+            x_323_phi = x_348;
+            continue;
+          }
+          return;
+        } else {
+          let x_334 : ptr<function, i32> = &(tree[x_322].rightIndex);
+          let x_335 : i32 = *(x_334);
+          if ((x_335 == -1)) {
+            *(x_334) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_350_phi = true;
+            break;
+          } else {
+            x_340 = *(x_334);
+            x_323_phi = x_340;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_323 = x_323_phi;
+          x_322_phi = x_323;
+        }
+      }
+      let x_350 : bool = x_350_phi;
+      if (x_350) {
+        break;
+      }
+    }
+  }
+  x_353_phi = 0;
+  x_356_phi = 0;
+  x_358_phi = 0;
+  loop {
+    var x_381 : i32;
+    var x_391 : i32;
+    var x_396 : i32;
+    var x_359 : i32;
+    var x_354_phi : i32;
+    var x_357_phi : i32;
+    let x_353 : i32 = x_353_phi;
+    x_356 = x_356_phi;
+    let x_358 : i32 = x_358_phi;
+    if ((x_358 < 20)) {
+    } else {
+      break;
+    }
+    var x_366_phi : i32;
+    var x_381_phi : i32;
+    var x_382_phi : bool;
+    switch(0u) {
+      default: {
+        x_366_phi = 0;
+        loop {
+          let x_366 : i32 = x_366_phi;
+          x_381_phi = x_353;
+          x_382_phi = false;
+          if ((x_366 != -1)) {
+          } else {
+            break;
+          }
+          let x_373 : BST = tree[x_366];
+          let x_374 : i32 = x_373.data;
+          let x_375 : i32 = x_373.leftIndex;
+          let x_376 : i32 = x_373.rightIndex;
+          if ((x_374 == x_358)) {
+            x_381_phi = x_358;
+            x_382_phi = true;
+            break;
+          }
+
+          continuing {
+            x_366_phi = select(x_375, x_376, (x_358 > x_374));
+          }
+        }
+        x_381 = x_381_phi;
+        let x_382 : bool = x_382_phi;
+        x_354_phi = x_381;
+        if (x_382) {
+          break;
+        }
+        x_354_phi = -1;
+      }
+    }
+    var x_354 : i32;
+    var x_390 : i32;
+    var x_395 : i32;
+    var x_391_phi : i32;
+    var x_396_phi : i32;
+    x_354 = x_354_phi;
+    switch(x_358) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        x_391_phi = x_356;
+        if ((x_354 == bitcast<i32>(x_358))) {
+          x_390 = bitcast<i32>((x_356 + bitcast<i32>(1)));
+          x_391_phi = x_390;
+        }
+        x_391 = x_391_phi;
+        x_357_phi = x_391;
+      }
+      default: {
+        x_396_phi = x_356;
+        if ((x_354 == bitcast<i32>(-1))) {
+          x_395 = bitcast<i32>((x_356 + bitcast<i32>(1)));
+          x_396_phi = x_395;
+        }
+        x_396 = x_396_phi;
+        x_357_phi = x_396;
+      }
+    }
+    let x_357 : i32 = x_357_phi;
+
+    continuing {
+      x_359 = (x_358 + 1);
+      x_353_phi = x_354;
+      x_356_phi = x_357;
+      x_358_phi = x_359;
+    }
+  }
+  if ((x_356 == bitcast<i32>(20))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..1f593e3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.hlsl
@@ -0,0 +1,748 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  BST tree[10] = (BST[10])0;
+  int x_356 = 0;
+  int x_58_phi = 0;
+  bool x_86_phi = false;
+  int x_353_phi = 0;
+  int x_356_phi = 0;
+  int x_358_phi = 0;
+  const BST tint_symbol_2 = {9, -1, -1};
+  tree[0] = tint_symbol_2;
+  switch(0u) {
+    default: {
+      x_58_phi = 0;
+      while (true) {
+        int x_84 = 0;
+        int x_76 = 0;
+        int x_59 = 0;
+        int x_59_phi = 0;
+        const int x_58 = x_58_phi;
+        x_86_phi = false;
+        if ((x_58 <= 1)) {
+        } else {
+          break;
+        }
+        const int x_65 = tree[x_58].data;
+        if ((5 <= x_65)) {
+          const int x_78_save = x_58;
+          const int x_79 = tree[x_78_save].leftIndex;
+          if ((x_79 == -1)) {
+            tree[x_78_save].leftIndex = 1;
+            const BST tint_symbol_3 = {5, -1, -1};
+            tree[1] = tint_symbol_3;
+            x_86_phi = true;
+            break;
+          } else {
+            x_84 = tree[x_78_save].leftIndex;
+            x_59_phi = x_84;
+            {
+              x_59 = x_59_phi;
+              x_58_phi = x_59;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_70_save = x_58;
+          const int x_71 = tree[x_70_save].rightIndex;
+          if ((x_71 == -1)) {
+            tree[x_70_save].rightIndex = 1;
+            const BST tint_symbol_4 = {5, -1, -1};
+            tree[1] = tint_symbol_4;
+            x_86_phi = true;
+            break;
+          } else {
+            x_76 = tree[x_70_save].rightIndex;
+            x_59_phi = x_76;
+            {
+              x_59 = x_59_phi;
+              x_58_phi = x_59;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_59 = x_59_phi;
+          x_58_phi = x_59;
+        }
+      }
+      if (x_86_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_91_phi = 0;
+  bool x_119_phi = false;
+  switch(0u) {
+    default: {
+      x_91_phi = 0;
+      while (true) {
+        int x_117 = 0;
+        int x_109 = 0;
+        int x_92 = 0;
+        int x_92_phi = 0;
+        const int x_91 = x_91_phi;
+        x_119_phi = false;
+        if ((x_91 <= 2)) {
+        } else {
+          break;
+        }
+        const int x_98 = tree[x_91].data;
+        if ((12 <= x_98)) {
+          const int x_111_save = x_91;
+          const int x_112 = tree[x_111_save].leftIndex;
+          if ((x_112 == -1)) {
+            tree[x_111_save].leftIndex = 2;
+            const BST tint_symbol_5 = {12, -1, -1};
+            tree[2] = tint_symbol_5;
+            x_119_phi = true;
+            break;
+          } else {
+            x_117 = tree[x_111_save].leftIndex;
+            x_92_phi = x_117;
+            {
+              x_92 = x_92_phi;
+              x_91_phi = x_92;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_103_save = x_91;
+          const int x_104 = tree[x_103_save].rightIndex;
+          if ((x_104 == -1)) {
+            tree[x_103_save].rightIndex = 2;
+            const BST tint_symbol_6 = {12, -1, -1};
+            tree[2] = tint_symbol_6;
+            x_119_phi = true;
+            break;
+          } else {
+            x_109 = tree[x_103_save].rightIndex;
+            x_92_phi = x_109;
+            {
+              x_92 = x_92_phi;
+              x_91_phi = x_92;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_92 = x_92_phi;
+          x_91_phi = x_92;
+        }
+      }
+      if (x_119_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_124_phi = 0;
+  bool x_152_phi = false;
+  switch(0u) {
+    default: {
+      x_124_phi = 0;
+      while (true) {
+        int x_150 = 0;
+        int x_142 = 0;
+        int x_125 = 0;
+        int x_125_phi = 0;
+        const int x_124 = x_124_phi;
+        x_152_phi = false;
+        if ((x_124 <= 3)) {
+        } else {
+          break;
+        }
+        const int x_131 = tree[x_124].data;
+        if ((15 <= x_131)) {
+          const int x_144_save = x_124;
+          const int x_145 = tree[x_144_save].leftIndex;
+          if ((x_145 == -1)) {
+            tree[x_144_save].leftIndex = 3;
+            const BST tint_symbol_7 = {15, -1, -1};
+            tree[3] = tint_symbol_7;
+            x_152_phi = true;
+            break;
+          } else {
+            x_150 = tree[x_144_save].leftIndex;
+            x_125_phi = x_150;
+            {
+              x_125 = x_125_phi;
+              x_124_phi = x_125;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_136_save = x_124;
+          const int x_137 = tree[x_136_save].rightIndex;
+          if ((x_137 == -1)) {
+            tree[x_136_save].rightIndex = 3;
+            const BST tint_symbol_8 = {15, -1, -1};
+            tree[3] = tint_symbol_8;
+            x_152_phi = true;
+            break;
+          } else {
+            x_142 = tree[x_136_save].rightIndex;
+            x_125_phi = x_142;
+            {
+              x_125 = x_125_phi;
+              x_124_phi = x_125;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_125 = x_125_phi;
+          x_124_phi = x_125;
+        }
+      }
+      if (x_152_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_157_phi = 0;
+  bool x_185_phi = false;
+  switch(0u) {
+    default: {
+      x_157_phi = 0;
+      while (true) {
+        int x_183 = 0;
+        int x_175 = 0;
+        int x_158 = 0;
+        int x_158_phi = 0;
+        const int x_157 = x_157_phi;
+        x_185_phi = false;
+        if ((x_157 <= 4)) {
+        } else {
+          break;
+        }
+        const int x_164 = tree[x_157].data;
+        if ((7 <= x_164)) {
+          const int x_177_save = x_157;
+          const int x_178 = tree[x_177_save].leftIndex;
+          if ((x_178 == -1)) {
+            tree[x_177_save].leftIndex = 4;
+            const BST tint_symbol_9 = {7, -1, -1};
+            tree[4] = tint_symbol_9;
+            x_185_phi = true;
+            break;
+          } else {
+            x_183 = tree[x_177_save].leftIndex;
+            x_158_phi = x_183;
+            {
+              x_158 = x_158_phi;
+              x_157_phi = x_158;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_169_save = x_157;
+          const int x_170 = tree[x_169_save].rightIndex;
+          if ((x_170 == -1)) {
+            tree[x_169_save].rightIndex = 4;
+            const BST tint_symbol_10 = {7, -1, -1};
+            tree[4] = tint_symbol_10;
+            x_185_phi = true;
+            break;
+          } else {
+            x_175 = tree[x_169_save].rightIndex;
+            x_158_phi = x_175;
+            {
+              x_158 = x_158_phi;
+              x_157_phi = x_158;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_158 = x_158_phi;
+          x_157_phi = x_158;
+        }
+      }
+      if (x_185_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_190_phi = 0;
+  bool x_218_phi = false;
+  switch(0u) {
+    default: {
+      x_190_phi = 0;
+      while (true) {
+        int x_216 = 0;
+        int x_208 = 0;
+        int x_191 = 0;
+        int x_191_phi = 0;
+        const int x_190 = x_190_phi;
+        x_218_phi = false;
+        if ((x_190 <= 5)) {
+        } else {
+          break;
+        }
+        const int x_197 = tree[x_190].data;
+        if ((8 <= x_197)) {
+          const int x_210_save = x_190;
+          const int x_211 = tree[x_210_save].leftIndex;
+          if ((x_211 == -1)) {
+            tree[x_210_save].leftIndex = 5;
+            const BST tint_symbol_11 = {8, -1, -1};
+            tree[5] = tint_symbol_11;
+            x_218_phi = true;
+            break;
+          } else {
+            x_216 = tree[x_210_save].leftIndex;
+            x_191_phi = x_216;
+            {
+              x_191 = x_191_phi;
+              x_190_phi = x_191;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_202_save = x_190;
+          const int x_203 = tree[x_202_save].rightIndex;
+          if ((x_203 == -1)) {
+            tree[x_202_save].rightIndex = 5;
+            const BST tint_symbol_12 = {8, -1, -1};
+            tree[5] = tint_symbol_12;
+            x_218_phi = true;
+            break;
+          } else {
+            x_208 = tree[x_202_save].rightIndex;
+            x_191_phi = x_208;
+            {
+              x_191 = x_191_phi;
+              x_190_phi = x_191;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_191 = x_191_phi;
+          x_190_phi = x_191;
+        }
+      }
+      if (x_218_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_223_phi = 0;
+  bool x_251_phi = false;
+  switch(0u) {
+    default: {
+      x_223_phi = 0;
+      while (true) {
+        int x_249 = 0;
+        int x_241 = 0;
+        int x_224 = 0;
+        int x_224_phi = 0;
+        const int x_223 = x_223_phi;
+        x_251_phi = false;
+        if ((x_223 <= 6)) {
+        } else {
+          break;
+        }
+        const int x_230 = tree[x_223].data;
+        if ((2 <= x_230)) {
+          const int x_243_save = x_223;
+          const int x_244 = tree[x_243_save].leftIndex;
+          if ((x_244 == -1)) {
+            tree[x_243_save].leftIndex = 6;
+            const BST tint_symbol_13 = {2, -1, -1};
+            tree[6] = tint_symbol_13;
+            x_251_phi = true;
+            break;
+          } else {
+            x_249 = tree[x_243_save].leftIndex;
+            x_224_phi = x_249;
+            {
+              x_224 = x_224_phi;
+              x_223_phi = x_224;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_235_save = x_223;
+          const int x_236 = tree[x_235_save].rightIndex;
+          if ((x_236 == -1)) {
+            tree[x_235_save].rightIndex = 6;
+            const BST tint_symbol_14 = {2, -1, -1};
+            tree[6] = tint_symbol_14;
+            x_251_phi = true;
+            break;
+          } else {
+            x_241 = tree[x_235_save].rightIndex;
+            x_224_phi = x_241;
+            {
+              x_224 = x_224_phi;
+              x_223_phi = x_224;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_224 = x_224_phi;
+          x_223_phi = x_224;
+        }
+      }
+      if (x_251_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_256_phi = 0;
+  bool x_284_phi = false;
+  switch(0u) {
+    default: {
+      x_256_phi = 0;
+      while (true) {
+        int x_282 = 0;
+        int x_274 = 0;
+        int x_257 = 0;
+        int x_257_phi = 0;
+        const int x_256 = x_256_phi;
+        x_284_phi = false;
+        if ((x_256 <= 7)) {
+        } else {
+          break;
+        }
+        const int x_263 = tree[x_256].data;
+        if ((6 <= x_263)) {
+          const int x_276_save = x_256;
+          const int x_277 = tree[x_276_save].leftIndex;
+          if ((x_277 == -1)) {
+            tree[x_276_save].leftIndex = 7;
+            const BST tint_symbol_15 = {6, -1, -1};
+            tree[7] = tint_symbol_15;
+            x_284_phi = true;
+            break;
+          } else {
+            x_282 = tree[x_276_save].leftIndex;
+            x_257_phi = x_282;
+            {
+              x_257 = x_257_phi;
+              x_256_phi = x_257;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_268_save = x_256;
+          const int x_269 = tree[x_268_save].rightIndex;
+          if ((x_269 == -1)) {
+            tree[x_268_save].rightIndex = 7;
+            const BST tint_symbol_16 = {6, -1, -1};
+            tree[7] = tint_symbol_16;
+            x_284_phi = true;
+            break;
+          } else {
+            x_274 = tree[x_268_save].rightIndex;
+            x_257_phi = x_274;
+            {
+              x_257 = x_257_phi;
+              x_256_phi = x_257;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_257 = x_257_phi;
+          x_256_phi = x_257;
+        }
+      }
+      if (x_284_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_289_phi = 0;
+  bool x_317_phi = false;
+  switch(0u) {
+    default: {
+      x_289_phi = 0;
+      while (true) {
+        int x_315 = 0;
+        int x_307 = 0;
+        int x_290 = 0;
+        int x_290_phi = 0;
+        const int x_289 = x_289_phi;
+        x_317_phi = false;
+        if ((x_289 <= 8)) {
+        } else {
+          break;
+        }
+        const int x_296 = tree[x_289].data;
+        if ((17 <= x_296)) {
+          const int x_309_save = x_289;
+          const int x_310 = tree[x_309_save].leftIndex;
+          if ((x_310 == -1)) {
+            tree[x_309_save].leftIndex = 8;
+            const BST tint_symbol_17 = {17, -1, -1};
+            tree[8] = tint_symbol_17;
+            x_317_phi = true;
+            break;
+          } else {
+            x_315 = tree[x_309_save].leftIndex;
+            x_290_phi = x_315;
+            {
+              x_290 = x_290_phi;
+              x_289_phi = x_290;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_301_save = x_289;
+          const int x_302 = tree[x_301_save].rightIndex;
+          if ((x_302 == -1)) {
+            tree[x_301_save].rightIndex = 8;
+            const BST tint_symbol_18 = {17, -1, -1};
+            tree[8] = tint_symbol_18;
+            x_317_phi = true;
+            break;
+          } else {
+            x_307 = tree[x_301_save].rightIndex;
+            x_290_phi = x_307;
+            {
+              x_290 = x_290_phi;
+              x_289_phi = x_290;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_290 = x_290_phi;
+          x_289_phi = x_290;
+        }
+      }
+      if (x_317_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_322_phi = 0;
+  bool x_350_phi = false;
+  switch(0u) {
+    default: {
+      x_322_phi = 0;
+      while (true) {
+        int x_348 = 0;
+        int x_340 = 0;
+        int x_323 = 0;
+        int x_323_phi = 0;
+        const int x_322 = x_322_phi;
+        x_350_phi = false;
+        if ((x_322 <= 9)) {
+        } else {
+          break;
+        }
+        const int x_329 = tree[x_322].data;
+        if ((13 <= x_329)) {
+          const int x_342_save = x_322;
+          const int x_343 = tree[x_342_save].leftIndex;
+          if ((x_343 == -1)) {
+            tree[x_342_save].leftIndex = 9;
+            const BST tint_symbol_19 = {13, -1, -1};
+            tree[9] = tint_symbol_19;
+            x_350_phi = true;
+            break;
+          } else {
+            x_348 = tree[x_342_save].leftIndex;
+            x_323_phi = x_348;
+            {
+              x_323 = x_323_phi;
+              x_322_phi = x_323;
+            }
+            continue;
+          }
+          return;
+        } else {
+          const int x_334_save = x_322;
+          const int x_335 = tree[x_334_save].rightIndex;
+          if ((x_335 == -1)) {
+            tree[x_334_save].rightIndex = 9;
+            const BST tint_symbol_20 = {13, -1, -1};
+            tree[9] = tint_symbol_20;
+            x_350_phi = true;
+            break;
+          } else {
+            x_340 = tree[x_334_save].rightIndex;
+            x_323_phi = x_340;
+            {
+              x_323 = x_323_phi;
+              x_322_phi = x_323;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_323 = x_323_phi;
+          x_322_phi = x_323;
+        }
+      }
+      if (x_350_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  x_353_phi = 0;
+  x_356_phi = 0;
+  x_358_phi = 0;
+  while (true) {
+    int x_381 = 0;
+    int x_391 = 0;
+    int x_396 = 0;
+    int x_359 = 0;
+    int x_354_phi = 0;
+    int x_357_phi = 0;
+    const int x_353 = x_353_phi;
+    x_356 = x_356_phi;
+    const int x_358 = x_358_phi;
+    if ((x_358 < 20)) {
+    } else {
+      break;
+    }
+    int x_366_phi = 0;
+    int x_381_phi = 0;
+    bool x_382_phi = false;
+    switch(0u) {
+      default: {
+        x_366_phi = 0;
+        while (true) {
+          const int x_366 = x_366_phi;
+          x_381_phi = x_353;
+          x_382_phi = false;
+          if ((x_366 != -1)) {
+          } else {
+            break;
+          }
+          const BST x_373 = tree[x_366];
+          const int x_374 = x_373.data;
+          const int x_375 = x_373.leftIndex;
+          const int x_376 = x_373.rightIndex;
+          if ((x_374 == x_358)) {
+            x_381_phi = x_358;
+            x_382_phi = true;
+            break;
+          }
+          {
+            x_366_phi = ((x_358 > x_374) ? x_376 : x_375);
+          }
+        }
+        x_381 = x_381_phi;
+        const bool x_382 = x_382_phi;
+        x_354_phi = x_381;
+        if (x_382) {
+          break;
+        }
+        x_354_phi = -1;
+        break;
+      }
+    }
+    int x_354 = 0;
+    int x_390 = 0;
+    int x_395 = 0;
+    int x_391_phi = 0;
+    int x_396_phi = 0;
+    x_354 = x_354_phi;
+    switch(x_358) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_391_phi = x_356;
+        if ((x_354 == asint(x_358))) {
+          x_390 = asint((x_356 + asint(1)));
+          x_391_phi = x_390;
+        }
+        x_391 = x_391_phi;
+        x_357_phi = x_391;
+        break;
+      }
+      default: {
+        x_396_phi = x_356;
+        if ((x_354 == asint(-1))) {
+          x_395 = asint((x_356 + asint(1)));
+          x_396_phi = x_395;
+        }
+        x_396 = x_396_phi;
+        x_357_phi = x_396;
+        break;
+      }
+    }
+    const int x_357 = x_357_phi;
+    {
+      x_359 = (x_358 + 1);
+      x_353_phi = x_354;
+      x_356_phi = x_357;
+      x_358_phi = x_359;
+    }
+  }
+  if ((x_356 == asint(20))) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_21 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_21;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.msl
new file mode 100644
index 0000000..752c6ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.msl
@@ -0,0 +1,762 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_23) {
+  tint_array_wrapper tree = {};
+  int x_356 = 0;
+  int x_58_phi = 0;
+  bool x_86_phi = false;
+  int x_353_phi = 0;
+  int x_356_phi = 0;
+  int x_358_phi = 0;
+  BST const tint_symbol_3 = {.data=9, .leftIndex=-1, .rightIndex=-1};
+  tree.arr[0] = tint_symbol_3;
+  switch(0u) {
+    default: {
+      x_58_phi = 0;
+      while (true) {
+        int x_84 = 0;
+        int x_76 = 0;
+        int x_59 = 0;
+        int x_59_phi = 0;
+        int const x_58 = x_58_phi;
+        x_86_phi = false;
+        if ((x_58 <= 1)) {
+        } else {
+          break;
+        }
+        int const x_65 = tree.arr[x_58].data;
+        if ((5 <= x_65)) {
+          int const x_78_save = x_58;
+          int const x_79 = tree.arr[x_78_save].leftIndex;
+          if ((x_79 == -1)) {
+            tree.arr[x_78_save].leftIndex = 1;
+            BST const tint_symbol_4 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_4;
+            x_86_phi = true;
+            break;
+          } else {
+            x_84 = tree.arr[x_78_save].leftIndex;
+            x_59_phi = x_84;
+            {
+              x_59 = x_59_phi;
+              x_58_phi = x_59;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_70_save = x_58;
+          int const x_71 = tree.arr[x_70_save].rightIndex;
+          if ((x_71 == -1)) {
+            tree.arr[x_70_save].rightIndex = 1;
+            BST const tint_symbol_5 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_5;
+            x_86_phi = true;
+            break;
+          } else {
+            x_76 = tree.arr[x_70_save].rightIndex;
+            x_59_phi = x_76;
+            {
+              x_59 = x_59_phi;
+              x_58_phi = x_59;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_59 = x_59_phi;
+          x_58_phi = x_59;
+        }
+      }
+      bool const x_86 = x_86_phi;
+      if (x_86) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_91_phi = 0;
+  bool x_119_phi = false;
+  switch(0u) {
+    default: {
+      x_91_phi = 0;
+      while (true) {
+        int x_117 = 0;
+        int x_109 = 0;
+        int x_92 = 0;
+        int x_92_phi = 0;
+        int const x_91 = x_91_phi;
+        x_119_phi = false;
+        if ((x_91 <= 2)) {
+        } else {
+          break;
+        }
+        int const x_98 = tree.arr[x_91].data;
+        if ((12 <= x_98)) {
+          int const x_111_save = x_91;
+          int const x_112 = tree.arr[x_111_save].leftIndex;
+          if ((x_112 == -1)) {
+            tree.arr[x_111_save].leftIndex = 2;
+            BST const tint_symbol_6 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[2] = tint_symbol_6;
+            x_119_phi = true;
+            break;
+          } else {
+            x_117 = tree.arr[x_111_save].leftIndex;
+            x_92_phi = x_117;
+            {
+              x_92 = x_92_phi;
+              x_91_phi = x_92;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_103_save = x_91;
+          int const x_104 = tree.arr[x_103_save].rightIndex;
+          if ((x_104 == -1)) {
+            tree.arr[x_103_save].rightIndex = 2;
+            BST const tint_symbol_7 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[2] = tint_symbol_7;
+            x_119_phi = true;
+            break;
+          } else {
+            x_109 = tree.arr[x_103_save].rightIndex;
+            x_92_phi = x_109;
+            {
+              x_92 = x_92_phi;
+              x_91_phi = x_92;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_92 = x_92_phi;
+          x_91_phi = x_92;
+        }
+      }
+      bool const x_119 = x_119_phi;
+      if (x_119) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_124_phi = 0;
+  bool x_152_phi = false;
+  switch(0u) {
+    default: {
+      x_124_phi = 0;
+      while (true) {
+        int x_150 = 0;
+        int x_142 = 0;
+        int x_125 = 0;
+        int x_125_phi = 0;
+        int const x_124 = x_124_phi;
+        x_152_phi = false;
+        if ((x_124 <= 3)) {
+        } else {
+          break;
+        }
+        int const x_131 = tree.arr[x_124].data;
+        if ((15 <= x_131)) {
+          int const x_144_save = x_124;
+          int const x_145 = tree.arr[x_144_save].leftIndex;
+          if ((x_145 == -1)) {
+            tree.arr[x_144_save].leftIndex = 3;
+            BST const tint_symbol_8 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_8;
+            x_152_phi = true;
+            break;
+          } else {
+            x_150 = tree.arr[x_144_save].leftIndex;
+            x_125_phi = x_150;
+            {
+              x_125 = x_125_phi;
+              x_124_phi = x_125;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_136_save = x_124;
+          int const x_137 = tree.arr[x_136_save].rightIndex;
+          if ((x_137 == -1)) {
+            tree.arr[x_136_save].rightIndex = 3;
+            BST const tint_symbol_9 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_9;
+            x_152_phi = true;
+            break;
+          } else {
+            x_142 = tree.arr[x_136_save].rightIndex;
+            x_125_phi = x_142;
+            {
+              x_125 = x_125_phi;
+              x_124_phi = x_125;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_125 = x_125_phi;
+          x_124_phi = x_125;
+        }
+      }
+      bool const x_152 = x_152_phi;
+      if (x_152) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_157_phi = 0;
+  bool x_185_phi = false;
+  switch(0u) {
+    default: {
+      x_157_phi = 0;
+      while (true) {
+        int x_183 = 0;
+        int x_175 = 0;
+        int x_158 = 0;
+        int x_158_phi = 0;
+        int const x_157 = x_157_phi;
+        x_185_phi = false;
+        if ((x_157 <= 4)) {
+        } else {
+          break;
+        }
+        int const x_164 = tree.arr[x_157].data;
+        if ((7 <= x_164)) {
+          int const x_177_save = x_157;
+          int const x_178 = tree.arr[x_177_save].leftIndex;
+          if ((x_178 == -1)) {
+            tree.arr[x_177_save].leftIndex = 4;
+            BST const tint_symbol_10 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_10;
+            x_185_phi = true;
+            break;
+          } else {
+            x_183 = tree.arr[x_177_save].leftIndex;
+            x_158_phi = x_183;
+            {
+              x_158 = x_158_phi;
+              x_157_phi = x_158;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_169_save = x_157;
+          int const x_170 = tree.arr[x_169_save].rightIndex;
+          if ((x_170 == -1)) {
+            tree.arr[x_169_save].rightIndex = 4;
+            BST const tint_symbol_11 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_11;
+            x_185_phi = true;
+            break;
+          } else {
+            x_175 = tree.arr[x_169_save].rightIndex;
+            x_158_phi = x_175;
+            {
+              x_158 = x_158_phi;
+              x_157_phi = x_158;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_158 = x_158_phi;
+          x_157_phi = x_158;
+        }
+      }
+      bool const x_185 = x_185_phi;
+      if (x_185) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_190_phi = 0;
+  bool x_218_phi = false;
+  switch(0u) {
+    default: {
+      x_190_phi = 0;
+      while (true) {
+        int x_216 = 0;
+        int x_208 = 0;
+        int x_191 = 0;
+        int x_191_phi = 0;
+        int const x_190 = x_190_phi;
+        x_218_phi = false;
+        if ((x_190 <= 5)) {
+        } else {
+          break;
+        }
+        int const x_197 = tree.arr[x_190].data;
+        if ((8 <= x_197)) {
+          int const x_210_save = x_190;
+          int const x_211 = tree.arr[x_210_save].leftIndex;
+          if ((x_211 == -1)) {
+            tree.arr[x_210_save].leftIndex = 5;
+            BST const tint_symbol_12 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_12;
+            x_218_phi = true;
+            break;
+          } else {
+            x_216 = tree.arr[x_210_save].leftIndex;
+            x_191_phi = x_216;
+            {
+              x_191 = x_191_phi;
+              x_190_phi = x_191;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_202_save = x_190;
+          int const x_203 = tree.arr[x_202_save].rightIndex;
+          if ((x_203 == -1)) {
+            tree.arr[x_202_save].rightIndex = 5;
+            BST const tint_symbol_13 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_13;
+            x_218_phi = true;
+            break;
+          } else {
+            x_208 = tree.arr[x_202_save].rightIndex;
+            x_191_phi = x_208;
+            {
+              x_191 = x_191_phi;
+              x_190_phi = x_191;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_191 = x_191_phi;
+          x_190_phi = x_191;
+        }
+      }
+      bool const x_218 = x_218_phi;
+      if (x_218) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_223_phi = 0;
+  bool x_251_phi = false;
+  switch(0u) {
+    default: {
+      x_223_phi = 0;
+      while (true) {
+        int x_249 = 0;
+        int x_241 = 0;
+        int x_224 = 0;
+        int x_224_phi = 0;
+        int const x_223 = x_223_phi;
+        x_251_phi = false;
+        if ((x_223 <= 6)) {
+        } else {
+          break;
+        }
+        int const x_230 = tree.arr[x_223].data;
+        if ((2 <= x_230)) {
+          int const x_243_save = x_223;
+          int const x_244 = tree.arr[x_243_save].leftIndex;
+          if ((x_244 == -1)) {
+            tree.arr[x_243_save].leftIndex = 6;
+            BST const tint_symbol_14 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_14;
+            x_251_phi = true;
+            break;
+          } else {
+            x_249 = tree.arr[x_243_save].leftIndex;
+            x_224_phi = x_249;
+            {
+              x_224 = x_224_phi;
+              x_223_phi = x_224;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_235_save = x_223;
+          int const x_236 = tree.arr[x_235_save].rightIndex;
+          if ((x_236 == -1)) {
+            tree.arr[x_235_save].rightIndex = 6;
+            BST const tint_symbol_15 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_15;
+            x_251_phi = true;
+            break;
+          } else {
+            x_241 = tree.arr[x_235_save].rightIndex;
+            x_224_phi = x_241;
+            {
+              x_224 = x_224_phi;
+              x_223_phi = x_224;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_224 = x_224_phi;
+          x_223_phi = x_224;
+        }
+      }
+      bool const x_251 = x_251_phi;
+      if (x_251) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_256_phi = 0;
+  bool x_284_phi = false;
+  switch(0u) {
+    default: {
+      x_256_phi = 0;
+      while (true) {
+        int x_282 = 0;
+        int x_274 = 0;
+        int x_257 = 0;
+        int x_257_phi = 0;
+        int const x_256 = x_256_phi;
+        x_284_phi = false;
+        if ((x_256 <= 7)) {
+        } else {
+          break;
+        }
+        int const x_263 = tree.arr[x_256].data;
+        if ((6 <= x_263)) {
+          int const x_276_save = x_256;
+          int const x_277 = tree.arr[x_276_save].leftIndex;
+          if ((x_277 == -1)) {
+            tree.arr[x_276_save].leftIndex = 7;
+            BST const tint_symbol_16 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_16;
+            x_284_phi = true;
+            break;
+          } else {
+            x_282 = tree.arr[x_276_save].leftIndex;
+            x_257_phi = x_282;
+            {
+              x_257 = x_257_phi;
+              x_256_phi = x_257;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_268_save = x_256;
+          int const x_269 = tree.arr[x_268_save].rightIndex;
+          if ((x_269 == -1)) {
+            tree.arr[x_268_save].rightIndex = 7;
+            BST const tint_symbol_17 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_17;
+            x_284_phi = true;
+            break;
+          } else {
+            x_274 = tree.arr[x_268_save].rightIndex;
+            x_257_phi = x_274;
+            {
+              x_257 = x_257_phi;
+              x_256_phi = x_257;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_257 = x_257_phi;
+          x_256_phi = x_257;
+        }
+      }
+      bool const x_284 = x_284_phi;
+      if (x_284) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_289_phi = 0;
+  bool x_317_phi = false;
+  switch(0u) {
+    default: {
+      x_289_phi = 0;
+      while (true) {
+        int x_315 = 0;
+        int x_307 = 0;
+        int x_290 = 0;
+        int x_290_phi = 0;
+        int const x_289 = x_289_phi;
+        x_317_phi = false;
+        if ((x_289 <= 8)) {
+        } else {
+          break;
+        }
+        int const x_296 = tree.arr[x_289].data;
+        if ((17 <= x_296)) {
+          int const x_309_save = x_289;
+          int const x_310 = tree.arr[x_309_save].leftIndex;
+          if ((x_310 == -1)) {
+            tree.arr[x_309_save].leftIndex = 8;
+            BST const tint_symbol_18 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_18;
+            x_317_phi = true;
+            break;
+          } else {
+            x_315 = tree.arr[x_309_save].leftIndex;
+            x_290_phi = x_315;
+            {
+              x_290 = x_290_phi;
+              x_289_phi = x_290;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_301_save = x_289;
+          int const x_302 = tree.arr[x_301_save].rightIndex;
+          if ((x_302 == -1)) {
+            tree.arr[x_301_save].rightIndex = 8;
+            BST const tint_symbol_19 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_19;
+            x_317_phi = true;
+            break;
+          } else {
+            x_307 = tree.arr[x_301_save].rightIndex;
+            x_290_phi = x_307;
+            {
+              x_290 = x_290_phi;
+              x_289_phi = x_290;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_290 = x_290_phi;
+          x_289_phi = x_290;
+        }
+      }
+      bool const x_317 = x_317_phi;
+      if (x_317) {
+        break;
+      }
+      break;
+    }
+  }
+  int x_322_phi = 0;
+  bool x_350_phi = false;
+  switch(0u) {
+    default: {
+      x_322_phi = 0;
+      while (true) {
+        int x_348 = 0;
+        int x_340 = 0;
+        int x_323 = 0;
+        int x_323_phi = 0;
+        int const x_322 = x_322_phi;
+        x_350_phi = false;
+        if ((x_322 <= 9)) {
+        } else {
+          break;
+        }
+        int const x_329 = tree.arr[x_322].data;
+        if ((13 <= x_329)) {
+          int const x_342_save = x_322;
+          int const x_343 = tree.arr[x_342_save].leftIndex;
+          if ((x_343 == -1)) {
+            tree.arr[x_342_save].leftIndex = 9;
+            BST const tint_symbol_20 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_20;
+            x_350_phi = true;
+            break;
+          } else {
+            x_348 = tree.arr[x_342_save].leftIndex;
+            x_323_phi = x_348;
+            {
+              x_323 = x_323_phi;
+              x_322_phi = x_323;
+            }
+            continue;
+          }
+          return;
+        } else {
+          int const x_334_save = x_322;
+          int const x_335 = tree.arr[x_334_save].rightIndex;
+          if ((x_335 == -1)) {
+            tree.arr[x_334_save].rightIndex = 9;
+            BST const tint_symbol_21 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_21;
+            x_350_phi = true;
+            break;
+          } else {
+            x_340 = tree.arr[x_334_save].rightIndex;
+            x_323_phi = x_340;
+            {
+              x_323 = x_323_phi;
+              x_322_phi = x_323;
+            }
+            continue;
+          }
+          return;
+        }
+        return;
+        {
+          x_323 = x_323_phi;
+          x_322_phi = x_323;
+        }
+      }
+      bool const x_350 = x_350_phi;
+      if (x_350) {
+        break;
+      }
+      break;
+    }
+  }
+  x_353_phi = 0;
+  x_356_phi = 0;
+  x_358_phi = 0;
+  while (true) {
+    int x_381 = 0;
+    int x_391 = 0;
+    int x_396 = 0;
+    int x_359 = 0;
+    int x_354_phi = 0;
+    int x_357_phi = 0;
+    int const x_353 = x_353_phi;
+    x_356 = x_356_phi;
+    int const x_358 = x_358_phi;
+    if ((x_358 < 20)) {
+    } else {
+      break;
+    }
+    int x_366_phi = 0;
+    int x_381_phi = 0;
+    bool x_382_phi = false;
+    switch(0u) {
+      default: {
+        x_366_phi = 0;
+        while (true) {
+          int const x_366 = x_366_phi;
+          x_381_phi = x_353;
+          x_382_phi = false;
+          if ((x_366 != -1)) {
+          } else {
+            break;
+          }
+          BST const x_373 = tree.arr[x_366];
+          int const x_374 = x_373.data;
+          int const x_375 = x_373.leftIndex;
+          int const x_376 = x_373.rightIndex;
+          if ((x_374 == x_358)) {
+            x_381_phi = x_358;
+            x_382_phi = true;
+            break;
+          }
+          {
+            x_366_phi = select(x_375, x_376, (x_358 > x_374));
+          }
+        }
+        x_381 = x_381_phi;
+        bool const x_382 = x_382_phi;
+        x_354_phi = x_381;
+        if (x_382) {
+          break;
+        }
+        x_354_phi = -1;
+        break;
+      }
+    }
+    int x_354 = 0;
+    int x_390 = 0;
+    int x_395 = 0;
+    int x_391_phi = 0;
+    int x_396_phi = 0;
+    x_354 = x_354_phi;
+    switch(x_358) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_391_phi = x_356;
+        if ((x_354 == as_type<int>(x_358))) {
+          x_390 = as_type<int>((x_356 + as_type<int>(1)));
+          x_391_phi = x_390;
+        }
+        x_391 = x_391_phi;
+        x_357_phi = x_391;
+        break;
+      }
+      default: {
+        x_396_phi = x_356;
+        if ((x_354 == as_type<int>(-1))) {
+          x_395 = as_type<int>((x_356 + as_type<int>(1)));
+          x_396_phi = x_395;
+        }
+        x_396 = x_396_phi;
+        x_357_phi = x_396;
+        break;
+      }
+    }
+    int const x_357 = x_357_phi;
+    {
+      x_359 = (x_358 + 1);
+      x_353_phi = x_354;
+      x_356_phi = x_357;
+      x_358_phi = x_359;
+    }
+  }
+  if ((x_356 == as_type<int>(20))) {
+    *(tint_symbol_23) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_23) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_24 = 0.0f;
+  main_1(&(tint_symbol_24));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_24};
+  tint_symbol_1 const tint_symbol_22 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_22;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..9ea3312
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.spvasm
@@ -0,0 +1,1166 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 619
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %x_356 "x_356"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_86_phi "x_86_phi"
+               OpName %x_353_phi "x_353_phi"
+               OpName %x_356_phi "x_356_phi"
+               OpName %x_358_phi "x_358_phi"
+               OpName %x_84 "x_84"
+               OpName %x_76 "x_76"
+               OpName %x_59 "x_59"
+               OpName %x_59_phi "x_59_phi"
+               OpName %x_91_phi "x_91_phi"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_117 "x_117"
+               OpName %x_109 "x_109"
+               OpName %x_92 "x_92"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_124_phi "x_124_phi"
+               OpName %x_152_phi "x_152_phi"
+               OpName %x_150 "x_150"
+               OpName %x_142 "x_142"
+               OpName %x_125 "x_125"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_157_phi "x_157_phi"
+               OpName %x_185_phi "x_185_phi"
+               OpName %x_183 "x_183"
+               OpName %x_175 "x_175"
+               OpName %x_158 "x_158"
+               OpName %x_158_phi "x_158_phi"
+               OpName %x_190_phi "x_190_phi"
+               OpName %x_218_phi "x_218_phi"
+               OpName %x_216 "x_216"
+               OpName %x_208 "x_208"
+               OpName %x_191 "x_191"
+               OpName %x_191_phi "x_191_phi"
+               OpName %x_223_phi "x_223_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_249 "x_249"
+               OpName %x_241 "x_241"
+               OpName %x_224 "x_224"
+               OpName %x_224_phi "x_224_phi"
+               OpName %x_256_phi "x_256_phi"
+               OpName %x_284_phi "x_284_phi"
+               OpName %x_282 "x_282"
+               OpName %x_274 "x_274"
+               OpName %x_257 "x_257"
+               OpName %x_257_phi "x_257_phi"
+               OpName %x_289_phi "x_289_phi"
+               OpName %x_317_phi "x_317_phi"
+               OpName %x_315 "x_315"
+               OpName %x_307 "x_307"
+               OpName %x_290 "x_290"
+               OpName %x_290_phi "x_290_phi"
+               OpName %x_322_phi "x_322_phi"
+               OpName %x_350_phi "x_350_phi"
+               OpName %x_348 "x_348"
+               OpName %x_340 "x_340"
+               OpName %x_323 "x_323"
+               OpName %x_323_phi "x_323_phi"
+               OpName %x_381 "x_381"
+               OpName %x_391 "x_391"
+               OpName %x_396 "x_396"
+               OpName %x_359 "x_359"
+               OpName %x_354_phi "x_354_phi"
+               OpName %x_357_phi "x_357_phi"
+               OpName %x_366_phi "x_366_phi"
+               OpName %x_381_phi "x_381_phi"
+               OpName %x_382_phi "x_382_phi"
+               OpName %x_354 "x_354"
+               OpName %x_390 "x_390"
+               OpName %x_395 "x_395"
+               OpName %x_391_phi "x_391_phi"
+               OpName %x_396_phi "x_396_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %19 = OpConstantNull %_arr_BST_uint_10
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %27 = OpConstantNull %bool
+      %int_0 = OpConstant %int 0
+%_ptr_Function_BST = OpTypePointer Function %BST
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+         %36 = OpConstantComposite %BST %int_9 %int_n1 %int_n1
+     %uint_0 = OpConstant %uint 0
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+         %71 = OpConstantComposite %BST %int_5 %int_n1 %int_n1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+      %int_2 = OpConstant %int 2
+     %int_12 = OpConstant %int 12
+        %126 = OpConstantComposite %BST %int_12 %int_n1 %int_n1
+      %int_3 = OpConstant %int 3
+     %int_15 = OpConstant %int 15
+        %179 = OpConstantComposite %BST %int_15 %int_n1 %int_n1
+      %int_4 = OpConstant %int 4
+      %int_7 = OpConstant %int 7
+        %232 = OpConstantComposite %BST %int_7 %int_n1 %int_n1
+      %int_8 = OpConstant %int 8
+        %284 = OpConstantComposite %BST %int_8 %int_n1 %int_n1
+      %int_6 = OpConstant %int 6
+        %336 = OpConstantComposite %BST %int_2 %int_n1 %int_n1
+        %387 = OpConstantComposite %BST %int_6 %int_n1 %int_n1
+     %int_17 = OpConstant %int 17
+        %439 = OpConstantComposite %BST %int_17 %int_n1 %int_n1
+     %int_13 = OpConstant %int 13
+        %491 = OpConstantComposite %BST %int_13 %int_n1 %int_n1
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %605 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %606 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %607 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+       %tree = OpVariable %_ptr_Function__arr_BST_uint_10 Function %19
+      %x_356 = OpVariable %_ptr_Function_int Function %22
+   %x_58_phi = OpVariable %_ptr_Function_int Function %22
+   %x_86_phi = OpVariable %_ptr_Function_bool Function %27
+  %x_353_phi = OpVariable %_ptr_Function_int Function %22
+  %x_356_phi = OpVariable %_ptr_Function_int Function %22
+  %x_358_phi = OpVariable %_ptr_Function_int Function %22
+       %x_84 = OpVariable %_ptr_Function_int Function %22
+       %x_76 = OpVariable %_ptr_Function_int Function %22
+       %x_59 = OpVariable %_ptr_Function_int Function %22
+   %x_59_phi = OpVariable %_ptr_Function_int Function %22
+   %x_91_phi = OpVariable %_ptr_Function_int Function %22
+  %x_119_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_117 = OpVariable %_ptr_Function_int Function %22
+      %x_109 = OpVariable %_ptr_Function_int Function %22
+       %x_92 = OpVariable %_ptr_Function_int Function %22
+   %x_92_phi = OpVariable %_ptr_Function_int Function %22
+  %x_124_phi = OpVariable %_ptr_Function_int Function %22
+  %x_152_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_150 = OpVariable %_ptr_Function_int Function %22
+      %x_142 = OpVariable %_ptr_Function_int Function %22
+      %x_125 = OpVariable %_ptr_Function_int Function %22
+  %x_125_phi = OpVariable %_ptr_Function_int Function %22
+  %x_157_phi = OpVariable %_ptr_Function_int Function %22
+  %x_185_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_183 = OpVariable %_ptr_Function_int Function %22
+      %x_175 = OpVariable %_ptr_Function_int Function %22
+      %x_158 = OpVariable %_ptr_Function_int Function %22
+  %x_158_phi = OpVariable %_ptr_Function_int Function %22
+  %x_190_phi = OpVariable %_ptr_Function_int Function %22
+  %x_218_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_216 = OpVariable %_ptr_Function_int Function %22
+      %x_208 = OpVariable %_ptr_Function_int Function %22
+      %x_191 = OpVariable %_ptr_Function_int Function %22
+  %x_191_phi = OpVariable %_ptr_Function_int Function %22
+  %x_223_phi = OpVariable %_ptr_Function_int Function %22
+  %x_251_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_249 = OpVariable %_ptr_Function_int Function %22
+      %x_241 = OpVariable %_ptr_Function_int Function %22
+      %x_224 = OpVariable %_ptr_Function_int Function %22
+  %x_224_phi = OpVariable %_ptr_Function_int Function %22
+  %x_256_phi = OpVariable %_ptr_Function_int Function %22
+  %x_284_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_282 = OpVariable %_ptr_Function_int Function %22
+      %x_274 = OpVariable %_ptr_Function_int Function %22
+      %x_257 = OpVariable %_ptr_Function_int Function %22
+  %x_257_phi = OpVariable %_ptr_Function_int Function %22
+  %x_289_phi = OpVariable %_ptr_Function_int Function %22
+  %x_317_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_315 = OpVariable %_ptr_Function_int Function %22
+      %x_307 = OpVariable %_ptr_Function_int Function %22
+      %x_290 = OpVariable %_ptr_Function_int Function %22
+  %x_290_phi = OpVariable %_ptr_Function_int Function %22
+  %x_322_phi = OpVariable %_ptr_Function_int Function %22
+  %x_350_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_348 = OpVariable %_ptr_Function_int Function %22
+      %x_340 = OpVariable %_ptr_Function_int Function %22
+      %x_323 = OpVariable %_ptr_Function_int Function %22
+  %x_323_phi = OpVariable %_ptr_Function_int Function %22
+      %x_381 = OpVariable %_ptr_Function_int Function %22
+      %x_391 = OpVariable %_ptr_Function_int Function %22
+      %x_396 = OpVariable %_ptr_Function_int Function %22
+      %x_359 = OpVariable %_ptr_Function_int Function %22
+  %x_354_phi = OpVariable %_ptr_Function_int Function %22
+  %x_357_phi = OpVariable %_ptr_Function_int Function %22
+  %x_366_phi = OpVariable %_ptr_Function_int Function %22
+  %x_381_phi = OpVariable %_ptr_Function_int Function %22
+  %x_382_phi = OpVariable %_ptr_Function_bool Function %27
+      %x_354 = OpVariable %_ptr_Function_int Function %22
+      %x_390 = OpVariable %_ptr_Function_int Function %22
+      %x_395 = OpVariable %_ptr_Function_int Function %22
+  %x_391_phi = OpVariable %_ptr_Function_int Function %22
+  %x_396_phi = OpVariable %_ptr_Function_int Function %22
+         %33 = OpAccessChain %_ptr_Function_BST %tree %int_0
+               OpStore %33 %36
+               OpSelectionMerge %37 None
+               OpSwitch %uint_0 %39
+         %39 = OpLabel
+               OpStore %x_58_phi %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %48 = OpLoad %int %x_58_phi
+               OpStore %x_86_phi %false
+         %51 = OpSLessThanEqual %bool %48 %int_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %41
+         %52 = OpLabel
+         %55 = OpAccessChain %_ptr_Function_int %tree %48 %uint_0
+         %56 = OpLoad %int %55
+         %58 = OpSLessThanEqual %bool %int_5 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %63 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+         %64 = OpLoad %int %63
+         %65 = OpIEqual %bool %64 %int_n1
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+         %69 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+               OpStore %69 %int_1
+         %70 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %70 %71
+               OpStore %x_86_phi %true
+               OpBranch %41
+         %68 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_int %tree %48 %uint_1
+         %74 = OpLoad %int %73
+               OpStore %x_84 %74
+         %75 = OpLoad %int %x_84
+               OpStore %x_59_phi %75
+               OpBranch %42
+         %66 = OpLabel
+               OpReturn
+         %61 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+         %78 = OpLoad %int %77
+         %79 = OpIEqual %bool %78 %int_n1
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+               OpStore %83 %int_1
+         %84 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %84 %71
+               OpStore %x_86_phi %true
+               OpBranch %41
+         %82 = OpLabel
+         %85 = OpAccessChain %_ptr_Function_int %tree %48 %uint_2
+         %86 = OpLoad %int %85
+               OpStore %x_76 %86
+         %87 = OpLoad %int %x_76
+               OpStore %x_59_phi %87
+               OpBranch %42
+         %80 = OpLabel
+               OpReturn
+         %59 = OpLabel
+               OpReturn
+         %42 = OpLabel
+         %88 = OpLoad %int %x_59_phi
+               OpStore %x_59 %88
+         %89 = OpLoad %int %x_59
+               OpStore %x_58_phi %89
+               OpBranch %40
+         %41 = OpLabel
+         %90 = OpLoad %bool %x_86_phi
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+               OpBranch %37
+         %91 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpSelectionMerge %95 None
+               OpSwitch %uint_0 %96
+         %96 = OpLabel
+               OpStore %x_91_phi %int_0
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %105 = OpLoad %int %x_91_phi
+               OpStore %x_119_phi %false
+        %107 = OpSLessThanEqual %bool %105 %int_2
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %110
+        %109 = OpLabel
+               OpBranch %108
+        %110 = OpLabel
+               OpBranch %98
+        %108 = OpLabel
+        %111 = OpAccessChain %_ptr_Function_int %tree %105 %uint_0
+        %112 = OpLoad %int %111
+        %114 = OpSLessThanEqual %bool %int_12 %112
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %116 %117
+        %116 = OpLabel
+        %118 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+        %119 = OpLoad %int %118
+        %120 = OpIEqual %bool %119 %int_n1
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %123
+        %122 = OpLabel
+        %124 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+               OpStore %124 %int_2
+        %125 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %125 %126
+               OpStore %x_119_phi %true
+               OpBranch %98
+        %123 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %tree %105 %uint_1
+        %128 = OpLoad %int %127
+               OpStore %x_117 %128
+        %129 = OpLoad %int %x_117
+               OpStore %x_92_phi %129
+               OpBranch %99
+        %121 = OpLabel
+               OpReturn
+        %117 = OpLabel
+        %130 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+        %131 = OpLoad %int %130
+        %132 = OpIEqual %bool %131 %int_n1
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %134 = OpLabel
+        %136 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+               OpStore %136 %int_2
+        %137 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %137 %126
+               OpStore %x_119_phi %true
+               OpBranch %98
+        %135 = OpLabel
+        %138 = OpAccessChain %_ptr_Function_int %tree %105 %uint_2
+        %139 = OpLoad %int %138
+               OpStore %x_109 %139
+        %140 = OpLoad %int %x_109
+               OpStore %x_92_phi %140
+               OpBranch %99
+        %133 = OpLabel
+               OpReturn
+        %115 = OpLabel
+               OpReturn
+         %99 = OpLabel
+        %141 = OpLoad %int %x_92_phi
+               OpStore %x_92 %141
+        %142 = OpLoad %int %x_92
+               OpStore %x_91_phi %142
+               OpBranch %97
+         %98 = OpLabel
+        %143 = OpLoad %bool %x_119_phi
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %144
+        %145 = OpLabel
+               OpBranch %95
+        %144 = OpLabel
+               OpBranch %95
+         %95 = OpLabel
+               OpSelectionMerge %148 None
+               OpSwitch %uint_0 %149
+        %149 = OpLabel
+               OpStore %x_124_phi %int_0
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %158 = OpLoad %int %x_124_phi
+               OpStore %x_152_phi %false
+        %160 = OpSLessThanEqual %bool %158 %int_3
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+               OpBranch %161
+        %163 = OpLabel
+               OpBranch %151
+        %161 = OpLabel
+        %164 = OpAccessChain %_ptr_Function_int %tree %158 %uint_0
+        %165 = OpLoad %int %164
+        %167 = OpSLessThanEqual %bool %int_15 %165
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+        %171 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+        %172 = OpLoad %int %171
+        %173 = OpIEqual %bool %172 %int_n1
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+        %177 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+               OpStore %177 %int_3
+        %178 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %178 %179
+               OpStore %x_152_phi %true
+               OpBranch %151
+        %176 = OpLabel
+        %180 = OpAccessChain %_ptr_Function_int %tree %158 %uint_1
+        %181 = OpLoad %int %180
+               OpStore %x_150 %181
+        %182 = OpLoad %int %x_150
+               OpStore %x_125_phi %182
+               OpBranch %152
+        %174 = OpLabel
+               OpReturn
+        %170 = OpLabel
+        %183 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+        %184 = OpLoad %int %183
+        %185 = OpIEqual %bool %184 %int_n1
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+        %189 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+               OpStore %189 %int_3
+        %190 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %190 %179
+               OpStore %x_152_phi %true
+               OpBranch %151
+        %188 = OpLabel
+        %191 = OpAccessChain %_ptr_Function_int %tree %158 %uint_2
+        %192 = OpLoad %int %191
+               OpStore %x_142 %192
+        %193 = OpLoad %int %x_142
+               OpStore %x_125_phi %193
+               OpBranch %152
+        %186 = OpLabel
+               OpReturn
+        %168 = OpLabel
+               OpReturn
+        %152 = OpLabel
+        %194 = OpLoad %int %x_125_phi
+               OpStore %x_125 %194
+        %195 = OpLoad %int %x_125
+               OpStore %x_124_phi %195
+               OpBranch %150
+        %151 = OpLabel
+        %196 = OpLoad %bool %x_152_phi
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+               OpBranch %148
+        %197 = OpLabel
+               OpBranch %148
+        %148 = OpLabel
+               OpSelectionMerge %201 None
+               OpSwitch %uint_0 %202
+        %202 = OpLabel
+               OpStore %x_157_phi %int_0
+               OpBranch %203
+        %203 = OpLabel
+               OpLoopMerge %204 %205 None
+               OpBranch %206
+        %206 = OpLabel
+        %211 = OpLoad %int %x_157_phi
+               OpStore %x_185_phi %false
+        %213 = OpSLessThanEqual %bool %211 %int_4
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %204
+        %214 = OpLabel
+        %217 = OpAccessChain %_ptr_Function_int %tree %211 %uint_0
+        %218 = OpLoad %int %217
+        %220 = OpSLessThanEqual %bool %int_7 %218
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %223
+        %222 = OpLabel
+        %224 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+        %225 = OpLoad %int %224
+        %226 = OpIEqual %bool %225 %int_n1
+               OpSelectionMerge %227 None
+               OpBranchConditional %226 %228 %229
+        %228 = OpLabel
+        %230 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+               OpStore %230 %int_4
+        %231 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %231 %232
+               OpStore %x_185_phi %true
+               OpBranch %204
+        %229 = OpLabel
+        %233 = OpAccessChain %_ptr_Function_int %tree %211 %uint_1
+        %234 = OpLoad %int %233
+               OpStore %x_183 %234
+        %235 = OpLoad %int %x_183
+               OpStore %x_158_phi %235
+               OpBranch %205
+        %227 = OpLabel
+               OpReturn
+        %223 = OpLabel
+        %236 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+        %237 = OpLoad %int %236
+        %238 = OpIEqual %bool %237 %int_n1
+               OpSelectionMerge %239 None
+               OpBranchConditional %238 %240 %241
+        %240 = OpLabel
+        %242 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+               OpStore %242 %int_4
+        %243 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %243 %232
+               OpStore %x_185_phi %true
+               OpBranch %204
+        %241 = OpLabel
+        %244 = OpAccessChain %_ptr_Function_int %tree %211 %uint_2
+        %245 = OpLoad %int %244
+               OpStore %x_175 %245
+        %246 = OpLoad %int %x_175
+               OpStore %x_158_phi %246
+               OpBranch %205
+        %239 = OpLabel
+               OpReturn
+        %221 = OpLabel
+               OpReturn
+        %205 = OpLabel
+        %247 = OpLoad %int %x_158_phi
+               OpStore %x_158 %247
+        %248 = OpLoad %int %x_158
+               OpStore %x_157_phi %248
+               OpBranch %203
+        %204 = OpLabel
+        %249 = OpLoad %bool %x_185_phi
+               OpSelectionMerge %250 None
+               OpBranchConditional %249 %251 %250
+        %251 = OpLabel
+               OpBranch %201
+        %250 = OpLabel
+               OpBranch %201
+        %201 = OpLabel
+               OpSelectionMerge %254 None
+               OpSwitch %uint_0 %255
+        %255 = OpLabel
+               OpStore %x_190_phi %int_0
+               OpBranch %256
+        %256 = OpLabel
+               OpLoopMerge %257 %258 None
+               OpBranch %259
+        %259 = OpLabel
+        %264 = OpLoad %int %x_190_phi
+               OpStore %x_218_phi %false
+        %265 = OpSLessThanEqual %bool %264 %int_5
+               OpSelectionMerge %266 None
+               OpBranchConditional %265 %267 %268
+        %267 = OpLabel
+               OpBranch %266
+        %268 = OpLabel
+               OpBranch %257
+        %266 = OpLabel
+        %269 = OpAccessChain %_ptr_Function_int %tree %264 %uint_0
+        %270 = OpLoad %int %269
+        %272 = OpSLessThanEqual %bool %int_8 %270
+               OpSelectionMerge %273 None
+               OpBranchConditional %272 %274 %275
+        %274 = OpLabel
+        %276 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+        %277 = OpLoad %int %276
+        %278 = OpIEqual %bool %277 %int_n1
+               OpSelectionMerge %279 None
+               OpBranchConditional %278 %280 %281
+        %280 = OpLabel
+        %282 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+               OpStore %282 %int_5
+        %283 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %283 %284
+               OpStore %x_218_phi %true
+               OpBranch %257
+        %281 = OpLabel
+        %285 = OpAccessChain %_ptr_Function_int %tree %264 %uint_1
+        %286 = OpLoad %int %285
+               OpStore %x_216 %286
+        %287 = OpLoad %int %x_216
+               OpStore %x_191_phi %287
+               OpBranch %258
+        %279 = OpLabel
+               OpReturn
+        %275 = OpLabel
+        %288 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+        %289 = OpLoad %int %288
+        %290 = OpIEqual %bool %289 %int_n1
+               OpSelectionMerge %291 None
+               OpBranchConditional %290 %292 %293
+        %292 = OpLabel
+        %294 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+               OpStore %294 %int_5
+        %295 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %295 %284
+               OpStore %x_218_phi %true
+               OpBranch %257
+        %293 = OpLabel
+        %296 = OpAccessChain %_ptr_Function_int %tree %264 %uint_2
+        %297 = OpLoad %int %296
+               OpStore %x_208 %297
+        %298 = OpLoad %int %x_208
+               OpStore %x_191_phi %298
+               OpBranch %258
+        %291 = OpLabel
+               OpReturn
+        %273 = OpLabel
+               OpReturn
+        %258 = OpLabel
+        %299 = OpLoad %int %x_191_phi
+               OpStore %x_191 %299
+        %300 = OpLoad %int %x_191
+               OpStore %x_190_phi %300
+               OpBranch %256
+        %257 = OpLabel
+        %301 = OpLoad %bool %x_218_phi
+               OpSelectionMerge %302 None
+               OpBranchConditional %301 %303 %302
+        %303 = OpLabel
+               OpBranch %254
+        %302 = OpLabel
+               OpBranch %254
+        %254 = OpLabel
+               OpSelectionMerge %306 None
+               OpSwitch %uint_0 %307
+        %307 = OpLabel
+               OpStore %x_223_phi %int_0
+               OpBranch %308
+        %308 = OpLabel
+               OpLoopMerge %309 %310 None
+               OpBranch %311
+        %311 = OpLabel
+        %316 = OpLoad %int %x_223_phi
+               OpStore %x_251_phi %false
+        %318 = OpSLessThanEqual %bool %316 %int_6
+               OpSelectionMerge %319 None
+               OpBranchConditional %318 %320 %321
+        %320 = OpLabel
+               OpBranch %319
+        %321 = OpLabel
+               OpBranch %309
+        %319 = OpLabel
+        %322 = OpAccessChain %_ptr_Function_int %tree %316 %uint_0
+        %323 = OpLoad %int %322
+        %324 = OpSLessThanEqual %bool %int_2 %323
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %327
+        %326 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+        %329 = OpLoad %int %328
+        %330 = OpIEqual %bool %329 %int_n1
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %333
+        %332 = OpLabel
+        %334 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+               OpStore %334 %int_6
+        %335 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %335 %336
+               OpStore %x_251_phi %true
+               OpBranch %309
+        %333 = OpLabel
+        %337 = OpAccessChain %_ptr_Function_int %tree %316 %uint_1
+        %338 = OpLoad %int %337
+               OpStore %x_249 %338
+        %339 = OpLoad %int %x_249
+               OpStore %x_224_phi %339
+               OpBranch %310
+        %331 = OpLabel
+               OpReturn
+        %327 = OpLabel
+        %340 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+        %341 = OpLoad %int %340
+        %342 = OpIEqual %bool %341 %int_n1
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+               OpStore %346 %int_6
+        %347 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %347 %336
+               OpStore %x_251_phi %true
+               OpBranch %309
+        %345 = OpLabel
+        %348 = OpAccessChain %_ptr_Function_int %tree %316 %uint_2
+        %349 = OpLoad %int %348
+               OpStore %x_241 %349
+        %350 = OpLoad %int %x_241
+               OpStore %x_224_phi %350
+               OpBranch %310
+        %343 = OpLabel
+               OpReturn
+        %325 = OpLabel
+               OpReturn
+        %310 = OpLabel
+        %351 = OpLoad %int %x_224_phi
+               OpStore %x_224 %351
+        %352 = OpLoad %int %x_224
+               OpStore %x_223_phi %352
+               OpBranch %308
+        %309 = OpLabel
+        %353 = OpLoad %bool %x_251_phi
+               OpSelectionMerge %354 None
+               OpBranchConditional %353 %355 %354
+        %355 = OpLabel
+               OpBranch %306
+        %354 = OpLabel
+               OpBranch %306
+        %306 = OpLabel
+               OpSelectionMerge %358 None
+               OpSwitch %uint_0 %359
+        %359 = OpLabel
+               OpStore %x_256_phi %int_0
+               OpBranch %360
+        %360 = OpLabel
+               OpLoopMerge %361 %362 None
+               OpBranch %363
+        %363 = OpLabel
+        %368 = OpLoad %int %x_256_phi
+               OpStore %x_284_phi %false
+        %369 = OpSLessThanEqual %bool %368 %int_7
+               OpSelectionMerge %370 None
+               OpBranchConditional %369 %371 %372
+        %371 = OpLabel
+               OpBranch %370
+        %372 = OpLabel
+               OpBranch %361
+        %370 = OpLabel
+        %373 = OpAccessChain %_ptr_Function_int %tree %368 %uint_0
+        %374 = OpLoad %int %373
+        %375 = OpSLessThanEqual %bool %int_6 %374
+               OpSelectionMerge %376 None
+               OpBranchConditional %375 %377 %378
+        %377 = OpLabel
+        %379 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+        %380 = OpLoad %int %379
+        %381 = OpIEqual %bool %380 %int_n1
+               OpSelectionMerge %382 None
+               OpBranchConditional %381 %383 %384
+        %383 = OpLabel
+        %385 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+               OpStore %385 %int_7
+        %386 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %386 %387
+               OpStore %x_284_phi %true
+               OpBranch %361
+        %384 = OpLabel
+        %388 = OpAccessChain %_ptr_Function_int %tree %368 %uint_1
+        %389 = OpLoad %int %388
+               OpStore %x_282 %389
+        %390 = OpLoad %int %x_282
+               OpStore %x_257_phi %390
+               OpBranch %362
+        %382 = OpLabel
+               OpReturn
+        %378 = OpLabel
+        %391 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+        %392 = OpLoad %int %391
+        %393 = OpIEqual %bool %392 %int_n1
+               OpSelectionMerge %394 None
+               OpBranchConditional %393 %395 %396
+        %395 = OpLabel
+        %397 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+               OpStore %397 %int_7
+        %398 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %398 %387
+               OpStore %x_284_phi %true
+               OpBranch %361
+        %396 = OpLabel
+        %399 = OpAccessChain %_ptr_Function_int %tree %368 %uint_2
+        %400 = OpLoad %int %399
+               OpStore %x_274 %400
+        %401 = OpLoad %int %x_274
+               OpStore %x_257_phi %401
+               OpBranch %362
+        %394 = OpLabel
+               OpReturn
+        %376 = OpLabel
+               OpReturn
+        %362 = OpLabel
+        %402 = OpLoad %int %x_257_phi
+               OpStore %x_257 %402
+        %403 = OpLoad %int %x_257
+               OpStore %x_256_phi %403
+               OpBranch %360
+        %361 = OpLabel
+        %404 = OpLoad %bool %x_284_phi
+               OpSelectionMerge %405 None
+               OpBranchConditional %404 %406 %405
+        %406 = OpLabel
+               OpBranch %358
+        %405 = OpLabel
+               OpBranch %358
+        %358 = OpLabel
+               OpSelectionMerge %409 None
+               OpSwitch %uint_0 %410
+        %410 = OpLabel
+               OpStore %x_289_phi %int_0
+               OpBranch %411
+        %411 = OpLabel
+               OpLoopMerge %412 %413 None
+               OpBranch %414
+        %414 = OpLabel
+        %419 = OpLoad %int %x_289_phi
+               OpStore %x_317_phi %false
+        %420 = OpSLessThanEqual %bool %419 %int_8
+               OpSelectionMerge %421 None
+               OpBranchConditional %420 %422 %423
+        %422 = OpLabel
+               OpBranch %421
+        %423 = OpLabel
+               OpBranch %412
+        %421 = OpLabel
+        %424 = OpAccessChain %_ptr_Function_int %tree %419 %uint_0
+        %425 = OpLoad %int %424
+        %427 = OpSLessThanEqual %bool %int_17 %425
+               OpSelectionMerge %428 None
+               OpBranchConditional %427 %429 %430
+        %429 = OpLabel
+        %431 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+        %432 = OpLoad %int %431
+        %433 = OpIEqual %bool %432 %int_n1
+               OpSelectionMerge %434 None
+               OpBranchConditional %433 %435 %436
+        %435 = OpLabel
+        %437 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+               OpStore %437 %int_8
+        %438 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %438 %439
+               OpStore %x_317_phi %true
+               OpBranch %412
+        %436 = OpLabel
+        %440 = OpAccessChain %_ptr_Function_int %tree %419 %uint_1
+        %441 = OpLoad %int %440
+               OpStore %x_315 %441
+        %442 = OpLoad %int %x_315
+               OpStore %x_290_phi %442
+               OpBranch %413
+        %434 = OpLabel
+               OpReturn
+        %430 = OpLabel
+        %443 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+        %444 = OpLoad %int %443
+        %445 = OpIEqual %bool %444 %int_n1
+               OpSelectionMerge %446 None
+               OpBranchConditional %445 %447 %448
+        %447 = OpLabel
+        %449 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+               OpStore %449 %int_8
+        %450 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %450 %439
+               OpStore %x_317_phi %true
+               OpBranch %412
+        %448 = OpLabel
+        %451 = OpAccessChain %_ptr_Function_int %tree %419 %uint_2
+        %452 = OpLoad %int %451
+               OpStore %x_307 %452
+        %453 = OpLoad %int %x_307
+               OpStore %x_290_phi %453
+               OpBranch %413
+        %446 = OpLabel
+               OpReturn
+        %428 = OpLabel
+               OpReturn
+        %413 = OpLabel
+        %454 = OpLoad %int %x_290_phi
+               OpStore %x_290 %454
+        %455 = OpLoad %int %x_290
+               OpStore %x_289_phi %455
+               OpBranch %411
+        %412 = OpLabel
+        %456 = OpLoad %bool %x_317_phi
+               OpSelectionMerge %457 None
+               OpBranchConditional %456 %458 %457
+        %458 = OpLabel
+               OpBranch %409
+        %457 = OpLabel
+               OpBranch %409
+        %409 = OpLabel
+               OpSelectionMerge %461 None
+               OpSwitch %uint_0 %462
+        %462 = OpLabel
+               OpStore %x_322_phi %int_0
+               OpBranch %463
+        %463 = OpLabel
+               OpLoopMerge %464 %465 None
+               OpBranch %466
+        %466 = OpLabel
+        %471 = OpLoad %int %x_322_phi
+               OpStore %x_350_phi %false
+        %472 = OpSLessThanEqual %bool %471 %int_9
+               OpSelectionMerge %473 None
+               OpBranchConditional %472 %474 %475
+        %474 = OpLabel
+               OpBranch %473
+        %475 = OpLabel
+               OpBranch %464
+        %473 = OpLabel
+        %476 = OpAccessChain %_ptr_Function_int %tree %471 %uint_0
+        %477 = OpLoad %int %476
+        %479 = OpSLessThanEqual %bool %int_13 %477
+               OpSelectionMerge %480 None
+               OpBranchConditional %479 %481 %482
+        %481 = OpLabel
+        %483 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+        %484 = OpLoad %int %483
+        %485 = OpIEqual %bool %484 %int_n1
+               OpSelectionMerge %486 None
+               OpBranchConditional %485 %487 %488
+        %487 = OpLabel
+        %489 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+               OpStore %489 %int_9
+        %490 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %490 %491
+               OpStore %x_350_phi %true
+               OpBranch %464
+        %488 = OpLabel
+        %492 = OpAccessChain %_ptr_Function_int %tree %471 %uint_1
+        %493 = OpLoad %int %492
+               OpStore %x_348 %493
+        %494 = OpLoad %int %x_348
+               OpStore %x_323_phi %494
+               OpBranch %465
+        %486 = OpLabel
+               OpReturn
+        %482 = OpLabel
+        %495 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+        %496 = OpLoad %int %495
+        %497 = OpIEqual %bool %496 %int_n1
+               OpSelectionMerge %498 None
+               OpBranchConditional %497 %499 %500
+        %499 = OpLabel
+        %501 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+               OpStore %501 %int_9
+        %502 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %502 %491
+               OpStore %x_350_phi %true
+               OpBranch %464
+        %500 = OpLabel
+        %503 = OpAccessChain %_ptr_Function_int %tree %471 %uint_2
+        %504 = OpLoad %int %503
+               OpStore %x_340 %504
+        %505 = OpLoad %int %x_340
+               OpStore %x_323_phi %505
+               OpBranch %465
+        %498 = OpLabel
+               OpReturn
+        %480 = OpLabel
+               OpReturn
+        %465 = OpLabel
+        %506 = OpLoad %int %x_323_phi
+               OpStore %x_323 %506
+        %507 = OpLoad %int %x_323
+               OpStore %x_322_phi %507
+               OpBranch %463
+        %464 = OpLabel
+        %508 = OpLoad %bool %x_350_phi
+               OpSelectionMerge %509 None
+               OpBranchConditional %508 %510 %509
+        %510 = OpLabel
+               OpBranch %461
+        %509 = OpLabel
+               OpBranch %461
+        %461 = OpLabel
+               OpStore %x_353_phi %int_0
+               OpStore %x_356_phi %int_0
+               OpStore %x_358_phi %int_0
+               OpBranch %511
+        %511 = OpLabel
+               OpLoopMerge %512 %513 None
+               OpBranch %514
+        %514 = OpLabel
+        %521 = OpLoad %int %x_353_phi
+        %522 = OpLoad %int %x_356_phi
+               OpStore %x_356 %522
+        %523 = OpLoad %int %x_358_phi
+        %525 = OpSLessThan %bool %523 %int_20
+               OpSelectionMerge %526 None
+               OpBranchConditional %525 %527 %528
+        %527 = OpLabel
+               OpBranch %526
+        %528 = OpLabel
+               OpBranch %512
+        %526 = OpLabel
+               OpSelectionMerge %532 None
+               OpSwitch %uint_0 %533
+        %533 = OpLabel
+               OpStore %x_366_phi %int_0
+               OpBranch %534
+        %534 = OpLabel
+               OpLoopMerge %535 %536 None
+               OpBranch %537
+        %537 = OpLabel
+        %538 = OpLoad %int %x_366_phi
+               OpStore %x_381_phi %521
+               OpStore %x_382_phi %false
+        %539 = OpINotEqual %bool %538 %int_n1
+               OpSelectionMerge %540 None
+               OpBranchConditional %539 %541 %542
+        %541 = OpLabel
+               OpBranch %540
+        %542 = OpLabel
+               OpBranch %535
+        %540 = OpLabel
+        %543 = OpAccessChain %_ptr_Function_BST %tree %538
+        %544 = OpLoad %BST %543
+        %545 = OpCompositeExtract %int %544 0
+        %546 = OpCompositeExtract %int %544 1
+        %547 = OpCompositeExtract %int %544 2
+        %548 = OpIEqual %bool %545 %523
+               OpSelectionMerge %549 None
+               OpBranchConditional %548 %550 %549
+        %550 = OpLabel
+               OpStore %x_381_phi %523
+               OpStore %x_382_phi %true
+               OpBranch %535
+        %549 = OpLabel
+               OpBranch %536
+        %536 = OpLabel
+        %552 = OpSGreaterThan %bool %523 %545
+        %551 = OpSelect %int %552 %547 %546
+               OpStore %x_366_phi %551
+               OpBranch %534
+        %535 = OpLabel
+        %553 = OpLoad %int %x_381_phi
+               OpStore %x_381 %553
+        %554 = OpLoad %bool %x_382_phi
+        %555 = OpLoad %int %x_381
+               OpStore %x_354_phi %555
+               OpSelectionMerge %556 None
+               OpBranchConditional %554 %557 %556
+        %557 = OpLabel
+               OpBranch %532
+        %556 = OpLabel
+               OpStore %x_354_phi %int_n1
+               OpBranch %532
+        %532 = OpLabel
+        %563 = OpLoad %int %x_354_phi
+               OpStore %x_354 %563
+               OpSelectionMerge %564 None
+               OpSwitch %523 %565 2 %566 5 %566 6 %566 7 %566 8 %566 9 %566 12 %566 13 %566 15 %566 17 %566
+        %566 = OpLabel
+        %567 = OpLoad %int %x_356
+               OpStore %x_391_phi %567
+        %568 = OpLoad %int %x_354
+        %569 = OpCopyObject %int %523
+        %570 = OpIEqual %bool %568 %569
+               OpSelectionMerge %571 None
+               OpBranchConditional %570 %572 %571
+        %572 = OpLabel
+        %574 = OpLoad %int %x_356
+        %575 = OpCopyObject %int %int_1
+        %576 = OpIAdd %int %574 %575
+        %573 = OpCopyObject %int %576
+               OpStore %x_390 %573
+        %577 = OpLoad %int %x_390
+               OpStore %x_391_phi %577
+               OpBranch %571
+        %571 = OpLabel
+        %578 = OpLoad %int %x_391_phi
+               OpStore %x_391 %578
+        %579 = OpLoad %int %x_391
+               OpStore %x_357_phi %579
+               OpBranch %564
+        %565 = OpLabel
+        %580 = OpLoad %int %x_356
+               OpStore %x_396_phi %580
+        %581 = OpLoad %int %x_354
+        %582 = OpCopyObject %int %int_n1
+        %583 = OpIEqual %bool %581 %582
+               OpSelectionMerge %584 None
+               OpBranchConditional %583 %585 %584
+        %585 = OpLabel
+        %587 = OpLoad %int %x_356
+        %588 = OpCopyObject %int %int_1
+        %589 = OpIAdd %int %587 %588
+        %586 = OpCopyObject %int %589
+               OpStore %x_395 %586
+        %590 = OpLoad %int %x_395
+               OpStore %x_396_phi %590
+               OpBranch %584
+        %584 = OpLabel
+        %591 = OpLoad %int %x_396_phi
+               OpStore %x_396 %591
+        %592 = OpLoad %int %x_396
+               OpStore %x_357_phi %592
+               OpBranch %564
+        %564 = OpLabel
+        %593 = OpLoad %int %x_357_phi
+               OpBranch %513
+        %513 = OpLabel
+        %594 = OpIAdd %int %523 %int_1
+               OpStore %x_359 %594
+        %595 = OpLoad %int %x_354
+               OpStore %x_353_phi %595
+               OpStore %x_356_phi %593
+        %596 = OpLoad %int %x_359
+               OpStore %x_358_phi %596
+               OpBranch %511
+        %512 = OpLabel
+        %597 = OpLoad %int %x_356
+        %598 = OpCopyObject %int %int_20
+        %599 = OpIEqual %bool %597 %598
+               OpSelectionMerge %600 None
+               OpBranchConditional %599 %601 %602
+        %601 = OpLabel
+               OpStore %x_GLF_color %605
+               OpBranch %600
+        %602 = OpLabel
+               OpStore %x_GLF_color %606
+               OpBranch %600
+        %600 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %607
+%tint_symbol = OpFunctionParameter %main_out
+        %611 = OpLabel
+        %612 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %612
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+        %614 = OpLabel
+        %615 = OpFunctionCall %void %main_1
+        %617 = OpLoad %v4float %x_GLF_color
+        %618 = OpCompositeConstruct %main_out %617
+        %616 = OpFunctionCall %void %tint_symbol_2 %618
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..76d569e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.wgsl
@@ -0,0 +1,653 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var tree : array<BST, 10>;
+  var x_356 : i32;
+  var x_58_phi : i32;
+  var x_86_phi : bool;
+  var x_353_phi : i32;
+  var x_356_phi : i32;
+  var x_358_phi : i32;
+  tree[0] = BST(9, -1, -1);
+  switch(0u) {
+    default: {
+      x_58_phi = 0;
+      loop {
+        var x_84 : i32;
+        var x_76 : i32;
+        var x_59 : i32;
+        var x_59_phi : i32;
+        let x_58 : i32 = x_58_phi;
+        x_86_phi = false;
+        if ((x_58 <= 1)) {
+        } else {
+          break;
+        }
+        let x_65 : i32 = tree[x_58].data;
+        if ((5 <= x_65)) {
+          let x_78 : ptr<function, i32> = &(tree[x_58].leftIndex);
+          let x_79 : i32 = *(x_78);
+          if ((x_79 == -1)) {
+            *(x_78) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_86_phi = true;
+            break;
+          } else {
+            x_84 = *(x_78);
+            x_59_phi = x_84;
+            continue;
+          }
+          return;
+        } else {
+          let x_70 : ptr<function, i32> = &(tree[x_58].rightIndex);
+          let x_71 : i32 = *(x_70);
+          if ((x_71 == -1)) {
+            *(x_70) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_86_phi = true;
+            break;
+          } else {
+            x_76 = *(x_70);
+            x_59_phi = x_76;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_59 = x_59_phi;
+          x_58_phi = x_59;
+        }
+      }
+      let x_86 : bool = x_86_phi;
+      if (x_86) {
+        break;
+      }
+    }
+  }
+  var x_91_phi : i32;
+  var x_119_phi : bool;
+  switch(0u) {
+    default: {
+      x_91_phi = 0;
+      loop {
+        var x_117 : i32;
+        var x_109 : i32;
+        var x_92 : i32;
+        var x_92_phi : i32;
+        let x_91 : i32 = x_91_phi;
+        x_119_phi = false;
+        if ((x_91 <= 2)) {
+        } else {
+          break;
+        }
+        let x_98 : i32 = tree[x_91].data;
+        if ((12 <= x_98)) {
+          let x_111 : ptr<function, i32> = &(tree[x_91].leftIndex);
+          let x_112 : i32 = *(x_111);
+          if ((x_112 == -1)) {
+            *(x_111) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_119_phi = true;
+            break;
+          } else {
+            x_117 = *(x_111);
+            x_92_phi = x_117;
+            continue;
+          }
+          return;
+        } else {
+          let x_103 : ptr<function, i32> = &(tree[x_91].rightIndex);
+          let x_104 : i32 = *(x_103);
+          if ((x_104 == -1)) {
+            *(x_103) = 2;
+            tree[2] = BST(12, -1, -1);
+            x_119_phi = true;
+            break;
+          } else {
+            x_109 = *(x_103);
+            x_92_phi = x_109;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_92 = x_92_phi;
+          x_91_phi = x_92;
+        }
+      }
+      let x_119 : bool = x_119_phi;
+      if (x_119) {
+        break;
+      }
+    }
+  }
+  var x_124_phi : i32;
+  var x_152_phi : bool;
+  switch(0u) {
+    default: {
+      x_124_phi = 0;
+      loop {
+        var x_150 : i32;
+        var x_142 : i32;
+        var x_125 : i32;
+        var x_125_phi : i32;
+        let x_124 : i32 = x_124_phi;
+        x_152_phi = false;
+        if ((x_124 <= 3)) {
+        } else {
+          break;
+        }
+        let x_131 : i32 = tree[x_124].data;
+        if ((15 <= x_131)) {
+          let x_144 : ptr<function, i32> = &(tree[x_124].leftIndex);
+          let x_145 : i32 = *(x_144);
+          if ((x_145 == -1)) {
+            *(x_144) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_152_phi = true;
+            break;
+          } else {
+            x_150 = *(x_144);
+            x_125_phi = x_150;
+            continue;
+          }
+          return;
+        } else {
+          let x_136 : ptr<function, i32> = &(tree[x_124].rightIndex);
+          let x_137 : i32 = *(x_136);
+          if ((x_137 == -1)) {
+            *(x_136) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_152_phi = true;
+            break;
+          } else {
+            x_142 = *(x_136);
+            x_125_phi = x_142;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_125 = x_125_phi;
+          x_124_phi = x_125;
+        }
+      }
+      let x_152 : bool = x_152_phi;
+      if (x_152) {
+        break;
+      }
+    }
+  }
+  var x_157_phi : i32;
+  var x_185_phi : bool;
+  switch(0u) {
+    default: {
+      x_157_phi = 0;
+      loop {
+        var x_183 : i32;
+        var x_175 : i32;
+        var x_158 : i32;
+        var x_158_phi : i32;
+        let x_157 : i32 = x_157_phi;
+        x_185_phi = false;
+        if ((x_157 <= 4)) {
+        } else {
+          break;
+        }
+        let x_164 : i32 = tree[x_157].data;
+        if ((7 <= x_164)) {
+          let x_177 : ptr<function, i32> = &(tree[x_157].leftIndex);
+          let x_178 : i32 = *(x_177);
+          if ((x_178 == -1)) {
+            *(x_177) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_185_phi = true;
+            break;
+          } else {
+            x_183 = *(x_177);
+            x_158_phi = x_183;
+            continue;
+          }
+          return;
+        } else {
+          let x_169 : ptr<function, i32> = &(tree[x_157].rightIndex);
+          let x_170 : i32 = *(x_169);
+          if ((x_170 == -1)) {
+            *(x_169) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_185_phi = true;
+            break;
+          } else {
+            x_175 = *(x_169);
+            x_158_phi = x_175;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_158 = x_158_phi;
+          x_157_phi = x_158;
+        }
+      }
+      let x_185 : bool = x_185_phi;
+      if (x_185) {
+        break;
+      }
+    }
+  }
+  var x_190_phi : i32;
+  var x_218_phi : bool;
+  switch(0u) {
+    default: {
+      x_190_phi = 0;
+      loop {
+        var x_216 : i32;
+        var x_208 : i32;
+        var x_191 : i32;
+        var x_191_phi : i32;
+        let x_190 : i32 = x_190_phi;
+        x_218_phi = false;
+        if ((x_190 <= 5)) {
+        } else {
+          break;
+        }
+        let x_197 : i32 = tree[x_190].data;
+        if ((8 <= x_197)) {
+          let x_210 : ptr<function, i32> = &(tree[x_190].leftIndex);
+          let x_211 : i32 = *(x_210);
+          if ((x_211 == -1)) {
+            *(x_210) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_218_phi = true;
+            break;
+          } else {
+            x_216 = *(x_210);
+            x_191_phi = x_216;
+            continue;
+          }
+          return;
+        } else {
+          let x_202 : ptr<function, i32> = &(tree[x_190].rightIndex);
+          let x_203 : i32 = *(x_202);
+          if ((x_203 == -1)) {
+            *(x_202) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_218_phi = true;
+            break;
+          } else {
+            x_208 = *(x_202);
+            x_191_phi = x_208;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_191 = x_191_phi;
+          x_190_phi = x_191;
+        }
+      }
+      let x_218 : bool = x_218_phi;
+      if (x_218) {
+        break;
+      }
+    }
+  }
+  var x_223_phi : i32;
+  var x_251_phi : bool;
+  switch(0u) {
+    default: {
+      x_223_phi = 0;
+      loop {
+        var x_249 : i32;
+        var x_241 : i32;
+        var x_224 : i32;
+        var x_224_phi : i32;
+        let x_223 : i32 = x_223_phi;
+        x_251_phi = false;
+        if ((x_223 <= 6)) {
+        } else {
+          break;
+        }
+        let x_230 : i32 = tree[x_223].data;
+        if ((2 <= x_230)) {
+          let x_243 : ptr<function, i32> = &(tree[x_223].leftIndex);
+          let x_244 : i32 = *(x_243);
+          if ((x_244 == -1)) {
+            *(x_243) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_251_phi = true;
+            break;
+          } else {
+            x_249 = *(x_243);
+            x_224_phi = x_249;
+            continue;
+          }
+          return;
+        } else {
+          let x_235 : ptr<function, i32> = &(tree[x_223].rightIndex);
+          let x_236 : i32 = *(x_235);
+          if ((x_236 == -1)) {
+            *(x_235) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_251_phi = true;
+            break;
+          } else {
+            x_241 = *(x_235);
+            x_224_phi = x_241;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_224 = x_224_phi;
+          x_223_phi = x_224;
+        }
+      }
+      let x_251 : bool = x_251_phi;
+      if (x_251) {
+        break;
+      }
+    }
+  }
+  var x_256_phi : i32;
+  var x_284_phi : bool;
+  switch(0u) {
+    default: {
+      x_256_phi = 0;
+      loop {
+        var x_282 : i32;
+        var x_274 : i32;
+        var x_257 : i32;
+        var x_257_phi : i32;
+        let x_256 : i32 = x_256_phi;
+        x_284_phi = false;
+        if ((x_256 <= 7)) {
+        } else {
+          break;
+        }
+        let x_263 : i32 = tree[x_256].data;
+        if ((6 <= x_263)) {
+          let x_276 : ptr<function, i32> = &(tree[x_256].leftIndex);
+          let x_277 : i32 = *(x_276);
+          if ((x_277 == -1)) {
+            *(x_276) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_284_phi = true;
+            break;
+          } else {
+            x_282 = *(x_276);
+            x_257_phi = x_282;
+            continue;
+          }
+          return;
+        } else {
+          let x_268 : ptr<function, i32> = &(tree[x_256].rightIndex);
+          let x_269 : i32 = *(x_268);
+          if ((x_269 == -1)) {
+            *(x_268) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_284_phi = true;
+            break;
+          } else {
+            x_274 = *(x_268);
+            x_257_phi = x_274;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_257 = x_257_phi;
+          x_256_phi = x_257;
+        }
+      }
+      let x_284 : bool = x_284_phi;
+      if (x_284) {
+        break;
+      }
+    }
+  }
+  var x_289_phi : i32;
+  var x_317_phi : bool;
+  switch(0u) {
+    default: {
+      x_289_phi = 0;
+      loop {
+        var x_315 : i32;
+        var x_307 : i32;
+        var x_290 : i32;
+        var x_290_phi : i32;
+        let x_289 : i32 = x_289_phi;
+        x_317_phi = false;
+        if ((x_289 <= 8)) {
+        } else {
+          break;
+        }
+        let x_296 : i32 = tree[x_289].data;
+        if ((17 <= x_296)) {
+          let x_309 : ptr<function, i32> = &(tree[x_289].leftIndex);
+          let x_310 : i32 = *(x_309);
+          if ((x_310 == -1)) {
+            *(x_309) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_317_phi = true;
+            break;
+          } else {
+            x_315 = *(x_309);
+            x_290_phi = x_315;
+            continue;
+          }
+          return;
+        } else {
+          let x_301 : ptr<function, i32> = &(tree[x_289].rightIndex);
+          let x_302 : i32 = *(x_301);
+          if ((x_302 == -1)) {
+            *(x_301) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_317_phi = true;
+            break;
+          } else {
+            x_307 = *(x_301);
+            x_290_phi = x_307;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_290 = x_290_phi;
+          x_289_phi = x_290;
+        }
+      }
+      let x_317 : bool = x_317_phi;
+      if (x_317) {
+        break;
+      }
+    }
+  }
+  var x_322_phi : i32;
+  var x_350_phi : bool;
+  switch(0u) {
+    default: {
+      x_322_phi = 0;
+      loop {
+        var x_348 : i32;
+        var x_340 : i32;
+        var x_323 : i32;
+        var x_323_phi : i32;
+        let x_322 : i32 = x_322_phi;
+        x_350_phi = false;
+        if ((x_322 <= 9)) {
+        } else {
+          break;
+        }
+        let x_329 : i32 = tree[x_322].data;
+        if ((13 <= x_329)) {
+          let x_342 : ptr<function, i32> = &(tree[x_322].leftIndex);
+          let x_343 : i32 = *(x_342);
+          if ((x_343 == -1)) {
+            *(x_342) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_350_phi = true;
+            break;
+          } else {
+            x_348 = *(x_342);
+            x_323_phi = x_348;
+            continue;
+          }
+          return;
+        } else {
+          let x_334 : ptr<function, i32> = &(tree[x_322].rightIndex);
+          let x_335 : i32 = *(x_334);
+          if ((x_335 == -1)) {
+            *(x_334) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_350_phi = true;
+            break;
+          } else {
+            x_340 = *(x_334);
+            x_323_phi = x_340;
+            continue;
+          }
+          return;
+        }
+        return;
+
+        continuing {
+          x_323 = x_323_phi;
+          x_322_phi = x_323;
+        }
+      }
+      let x_350 : bool = x_350_phi;
+      if (x_350) {
+        break;
+      }
+    }
+  }
+  x_353_phi = 0;
+  x_356_phi = 0;
+  x_358_phi = 0;
+  loop {
+    var x_381 : i32;
+    var x_391 : i32;
+    var x_396 : i32;
+    var x_359 : i32;
+    var x_354_phi : i32;
+    var x_357_phi : i32;
+    let x_353 : i32 = x_353_phi;
+    x_356 = x_356_phi;
+    let x_358 : i32 = x_358_phi;
+    if ((x_358 < 20)) {
+    } else {
+      break;
+    }
+    var x_366_phi : i32;
+    var x_381_phi : i32;
+    var x_382_phi : bool;
+    switch(0u) {
+      default: {
+        x_366_phi = 0;
+        loop {
+          let x_366 : i32 = x_366_phi;
+          x_381_phi = x_353;
+          x_382_phi = false;
+          if ((x_366 != -1)) {
+          } else {
+            break;
+          }
+          let x_373 : BST = tree[x_366];
+          let x_374 : i32 = x_373.data;
+          let x_375 : i32 = x_373.leftIndex;
+          let x_376 : i32 = x_373.rightIndex;
+          if ((x_374 == x_358)) {
+            x_381_phi = x_358;
+            x_382_phi = true;
+            break;
+          }
+
+          continuing {
+            x_366_phi = select(x_375, x_376, (x_358 > x_374));
+          }
+        }
+        x_381 = x_381_phi;
+        let x_382 : bool = x_382_phi;
+        x_354_phi = x_381;
+        if (x_382) {
+          break;
+        }
+        x_354_phi = -1;
+      }
+    }
+    var x_354 : i32;
+    var x_390 : i32;
+    var x_395 : i32;
+    var x_391_phi : i32;
+    var x_396_phi : i32;
+    x_354 = x_354_phi;
+    switch(x_358) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        x_391_phi = x_356;
+        if ((x_354 == bitcast<i32>(x_358))) {
+          x_390 = bitcast<i32>((x_356 + bitcast<i32>(1)));
+          x_391_phi = x_390;
+        }
+        x_391 = x_391_phi;
+        x_357_phi = x_391;
+      }
+      default: {
+        x_396_phi = x_356;
+        if ((x_354 == bitcast<i32>(-1))) {
+          x_395 = bitcast<i32>((x_356 + bitcast<i32>(1)));
+          x_396_phi = x_395;
+        }
+        x_396 = x_396_phi;
+        x_357_phi = x_396;
+      }
+    }
+    let x_357 : i32 = x_357_phi;
+
+    continuing {
+      x_359 = (x_358 + 1);
+      x_353_phi = x_354;
+      x_356_phi = x_357;
+      x_358_phi = x_359;
+    }
+  }
+  if ((x_356 == bitcast<i32>(20))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm
new file mode 100644
index 0000000..235ec03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm
@@ -0,0 +1,1053 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_0 = OpConstant %uint 0
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %49 = OpUndef %int
+         %50 = OpConstantComposite %BST %int_9 %int_n1 %int_n1
+         %51 = OpConstantComposite %BST %int_5 %int_n1 %int_n1
+      %int_3 = OpConstant %int 3
+         %53 = OpConstantComposite %BST %int_12 %int_n1 %int_n1
+         %54 = OpConstantComposite %BST %int_15 %int_n1 %int_n1
+      %int_4 = OpConstant %int 4
+         %56 = OpConstantComposite %BST %int_7 %int_n1 %int_n1
+         %57 = OpConstantComposite %BST %int_8 %int_n1 %int_n1
+         %58 = OpConstantComposite %BST %int_2 %int_n1 %int_n1
+         %59 = OpConstantComposite %BST %int_6 %int_n1 %int_n1
+         %60 = OpConstantComposite %BST %int_17 %int_n1 %int_n1
+         %61 = OpConstantComposite %BST %int_13 %int_n1 %int_n1
+       %main = OpFunction %void None %10
+         %62 = OpLabel
+       %tree = OpVariable %_ptr_Function__arr_BST_uint_10 Function
+         %63 = OpAccessChain %_ptr_Function_BST %tree %int_0
+               OpStore %63 %50
+               OpSelectionMerge %64 None
+               OpSwitch %uint_0 %65
+         %65 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpPhi %bool %false %65 %68 %69
+         %70 = OpPhi %int %int_0 %65 %71 %69
+         %72 = OpSLessThanEqual %bool %70 %int_1
+               OpLoopMerge %73 %69 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_int %tree %70 %int_0
+         %76 = OpLoad %int %75
+         %77 = OpSLessThanEqual %bool %int_5 %76
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %80 = OpLabel
+         %81 = OpAccessChain %_ptr_Function_int %tree %70 %int_2
+         %82 = OpLoad %int %81
+         %83 = OpIEqual %bool %82 %int_n1
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %86 = OpLabel
+         %87 = OpLoad %int %81
+               OpBranch %69
+         %85 = OpLabel
+               OpStore %81 %int_1
+         %88 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %88 %51
+               OpBranch %73
+         %84 = OpLabel
+               OpUnreachable
+         %79 = OpLabel
+         %89 = OpAccessChain %_ptr_Function_int %tree %70 %int_1
+         %90 = OpLoad %int %89
+         %91 = OpIEqual %bool %90 %int_n1
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %94
+         %94 = OpLabel
+         %95 = OpLoad %int %89
+               OpBranch %69
+         %93 = OpLabel
+         %96 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %97 = OpLoad %float %96
+         %98 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpFOrdLessThan %bool %97 %99
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+               OpBranch %103
+        %103 = OpLabel
+               OpLoopMerge %104 %105 None
+               OpBranch %106
+        %106 = OpLabel
+               OpKill
+        %105 = OpLabel
+               OpBranch %103
+        %104 = OpLabel
+               OpUnreachable
+        %101 = OpLabel
+               OpStore %89 %int_1
+        %107 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %107 %51
+               OpBranch %108
+        %108 = OpLabel
+        %109 = OpConvertFToS %int %97
+        %110 = OpSLessThan %bool %int_0 %109
+               OpLoopMerge %111 %112 None
+               OpBranchConditional %110 %113 %111
+        %113 = OpLabel
+               OpBranch %111
+        %112 = OpLabel
+               OpBranch %108
+        %111 = OpLabel
+        %114 = OpPhi %bool %67 %108 %true %113
+               OpSelectionMerge %115 None
+               OpBranchConditional %114 %73 %115
+        %115 = OpLabel
+               OpBranch %92
+         %92 = OpLabel
+               OpBranch %78
+         %78 = OpLabel
+               OpBranch %69
+         %69 = OpLabel
+         %68 = OpPhi %bool %67 %94 %67 %86 %114 %78
+         %71 = OpPhi %int %95 %94 %87 %86 %70 %78
+               OpBranch %66
+         %73 = OpLabel
+        %116 = OpPhi %bool %67 %66 %114 %111 %true %85
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %64 %117
+        %117 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+               OpBranch %118
+        %118 = OpLabel
+        %119 = OpPhi %int %int_0 %64 %120 %121
+               OpLoopMerge %122 %121 None
+               OpBranch %123
+        %123 = OpLabel
+        %124 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %125 = OpLoad %float %124
+        %126 = OpFOrdLessThan %bool %125 %float_0
+        %127 = OpLogicalNot %bool %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+        %130 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %131 = OpLoad %float %130
+        %132 = OpConvertFToS %int %131
+        %133 = OpINotEqual %bool %119 %132
+               OpBranch %128
+        %128 = OpLabel
+        %134 = OpPhi %bool %126 %123 %133 %129
+               OpBranchConditional %134 %135 %122
+        %135 = OpLabel
+               OpSelectionMerge %136 None
+               OpSwitch %uint_0 %137
+        %137 = OpLabel
+               OpBranch %138
+        %138 = OpLabel
+        %139 = OpPhi %bool %false %137 %140 %141
+        %142 = OpPhi %int %int_0 %137 %143 %141
+        %144 = OpSLessThanEqual %bool %142 %int_2
+               OpLoopMerge %145 %141 None
+               OpBranchConditional %144 %146 %145
+        %146 = OpLabel
+        %147 = OpAccessChain %_ptr_Function_int %tree %142 %int_0
+        %148 = OpLoad %int %147
+        %149 = OpSLessThanEqual %bool %int_12 %148
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %152
+        %152 = OpLabel
+        %153 = OpAccessChain %_ptr_Function_int %tree %142 %int_2
+        %154 = OpLoad %int %153
+        %155 = OpIEqual %bool %154 %int_n1
+               OpSelectionMerge %156 None
+               OpBranchConditional %155 %157 %158
+        %158 = OpLabel
+        %159 = OpLoad %int %153
+               OpBranch %141
+        %157 = OpLabel
+               OpStore %153 %int_2
+        %160 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %160 %53
+               OpBranch %145
+        %156 = OpLabel
+               OpUnreachable
+        %151 = OpLabel
+        %161 = OpAccessChain %_ptr_Function_int %tree %142 %int_1
+        %162 = OpLoad %int %161
+        %163 = OpIEqual %bool %162 %int_n1
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %166
+        %166 = OpLabel
+        %167 = OpLoad %int %161
+               OpBranch %141
+        %165 = OpLabel
+        %168 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %169 = OpLoad %float %168
+        %170 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %171 = OpLoad %float %170
+        %172 = OpFOrdLessThan %bool %169 %171
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+               OpBranch %175
+        %175 = OpLabel
+               OpLoopMerge %176 %177 None
+               OpBranch %178
+        %178 = OpLabel
+               OpKill
+        %177 = OpLabel
+               OpBranch %175
+        %176 = OpLabel
+               OpUnreachable
+        %173 = OpLabel
+               OpStore %161 %int_2
+        %179 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %179 %53
+               OpBranch %180
+        %180 = OpLabel
+        %181 = OpConvertFToS %int %169
+        %182 = OpSLessThan %bool %int_0 %181
+               OpLoopMerge %183 %184 None
+               OpBranchConditional %182 %185 %183
+        %185 = OpLabel
+               OpBranch %183
+        %184 = OpLabel
+               OpBranch %180
+        %183 = OpLabel
+        %186 = OpPhi %bool %139 %180 %true %185
+               OpSelectionMerge %187 None
+               OpBranchConditional %186 %145 %187
+        %187 = OpLabel
+               OpBranch %164
+        %164 = OpLabel
+               OpBranch %150
+        %150 = OpLabel
+               OpBranch %141
+        %141 = OpLabel
+        %140 = OpPhi %bool %139 %166 %139 %158 %186 %150
+        %143 = OpPhi %int %167 %166 %159 %158 %142 %150
+               OpBranch %138
+        %145 = OpLabel
+        %188 = OpPhi %bool %139 %138 %186 %183 %true %157
+               OpSelectionMerge %189 None
+               OpBranchConditional %188 %136 %189
+        %189 = OpLabel
+               OpBranch %136
+        %136 = OpLabel
+               OpBranch %121
+        %121 = OpLabel
+        %120 = OpIAdd %int %119 %int_1
+               OpBranch %118
+        %122 = OpLabel
+               OpSelectionMerge %190 None
+               OpSwitch %uint_0 %191
+        %191 = OpLabel
+               OpBranch %192
+        %192 = OpLabel
+        %193 = OpPhi %bool %false %191 %194 %195
+        %196 = OpPhi %int %int_0 %191 %197 %195
+        %198 = OpSLessThanEqual %bool %196 %int_3
+               OpLoopMerge %199 %195 None
+               OpBranchConditional %198 %200 %199
+        %200 = OpLabel
+        %201 = OpAccessChain %_ptr_Function_int %tree %196 %int_0
+        %202 = OpLoad %int %201
+        %203 = OpSLessThanEqual %bool %int_15 %202
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %206
+        %206 = OpLabel
+        %207 = OpAccessChain %_ptr_Function_int %tree %196 %int_2
+        %208 = OpLoad %int %207
+        %209 = OpIEqual %bool %208 %int_n1
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %212
+        %212 = OpLabel
+        %213 = OpLoad %int %207
+               OpBranch %195
+        %211 = OpLabel
+               OpStore %207 %int_3
+        %214 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %214 %54
+               OpBranch %199
+        %210 = OpLabel
+               OpUnreachable
+        %205 = OpLabel
+        %215 = OpAccessChain %_ptr_Function_int %tree %196 %int_1
+        %216 = OpLoad %int %215
+        %217 = OpIEqual %bool %216 %int_n1
+               OpSelectionMerge %218 None
+               OpBranchConditional %217 %219 %220
+        %220 = OpLabel
+        %221 = OpLoad %int %215
+               OpBranch %195
+        %219 = OpLabel
+        %222 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %223 = OpLoad %float %222
+        %224 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %225 = OpLoad %float %224
+        %226 = OpFOrdLessThan %bool %223 %225
+               OpSelectionMerge %227 None
+               OpBranchConditional %226 %228 %227
+        %228 = OpLabel
+               OpBranch %229
+        %229 = OpLabel
+               OpLoopMerge %230 %231 None
+               OpBranch %232
+        %232 = OpLabel
+               OpKill
+        %231 = OpLabel
+               OpBranch %229
+        %230 = OpLabel
+               OpUnreachable
+        %227 = OpLabel
+               OpStore %215 %int_3
+        %233 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %233 %54
+               OpBranch %234
+        %234 = OpLabel
+        %235 = OpConvertFToS %int %223
+        %236 = OpSLessThan %bool %int_0 %235
+               OpLoopMerge %237 %238 None
+               OpBranchConditional %236 %239 %237
+        %239 = OpLabel
+               OpBranch %237
+        %238 = OpLabel
+               OpBranch %234
+        %237 = OpLabel
+        %240 = OpPhi %bool %193 %234 %true %239
+               OpSelectionMerge %241 None
+               OpBranchConditional %240 %199 %241
+        %241 = OpLabel
+               OpBranch %218
+        %218 = OpLabel
+               OpBranch %204
+        %204 = OpLabel
+               OpBranch %195
+        %195 = OpLabel
+        %194 = OpPhi %bool %193 %220 %193 %212 %240 %204
+        %197 = OpPhi %int %221 %220 %213 %212 %196 %204
+               OpBranch %192
+        %199 = OpLabel
+        %242 = OpPhi %bool %193 %192 %240 %237 %true %211
+               OpSelectionMerge %243 None
+               OpBranchConditional %242 %190 %243
+        %243 = OpLabel
+               OpBranch %190
+        %190 = OpLabel
+               OpSelectionMerge %244 None
+               OpSwitch %uint_0 %245
+        %245 = OpLabel
+               OpBranch %246
+        %246 = OpLabel
+        %247 = OpPhi %bool %false %245 %248 %249
+        %250 = OpPhi %int %int_0 %245 %251 %249
+        %252 = OpSLessThanEqual %bool %250 %int_4
+               OpLoopMerge %253 %249 None
+               OpBranchConditional %252 %254 %253
+        %254 = OpLabel
+        %255 = OpAccessChain %_ptr_Function_int %tree %250 %int_0
+        %256 = OpLoad %int %255
+        %257 = OpSLessThanEqual %bool %int_7 %256
+               OpSelectionMerge %258 None
+               OpBranchConditional %257 %259 %260
+        %260 = OpLabel
+        %261 = OpAccessChain %_ptr_Function_int %tree %250 %int_2
+        %262 = OpLoad %int %261
+        %263 = OpIEqual %bool %262 %int_n1
+               OpSelectionMerge %264 None
+               OpBranchConditional %263 %265 %266
+        %266 = OpLabel
+        %267 = OpLoad %int %261
+               OpBranch %249
+        %265 = OpLabel
+               OpStore %261 %int_4
+        %268 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %268 %56
+               OpBranch %253
+        %264 = OpLabel
+               OpUnreachable
+        %259 = OpLabel
+        %269 = OpAccessChain %_ptr_Function_int %tree %250 %int_1
+        %270 = OpLoad %int %269
+        %271 = OpIEqual %bool %270 %int_n1
+               OpSelectionMerge %272 None
+               OpBranchConditional %271 %273 %274
+        %274 = OpLabel
+        %275 = OpLoad %int %269
+               OpBranch %249
+        %273 = OpLabel
+        %276 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %277 = OpLoad %float %276
+        %278 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %279 = OpLoad %float %278
+        %280 = OpFOrdLessThan %bool %277 %279
+               OpSelectionMerge %281 None
+               OpBranchConditional %280 %282 %281
+        %282 = OpLabel
+               OpBranch %283
+        %283 = OpLabel
+               OpLoopMerge %284 %285 None
+               OpBranch %286
+        %286 = OpLabel
+               OpKill
+        %285 = OpLabel
+               OpBranch %283
+        %284 = OpLabel
+               OpUnreachable
+        %281 = OpLabel
+               OpStore %269 %int_4
+        %287 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %287 %56
+               OpBranch %288
+        %288 = OpLabel
+        %289 = OpConvertFToS %int %277
+        %290 = OpSLessThan %bool %int_0 %289
+               OpLoopMerge %291 %292 None
+               OpBranchConditional %290 %293 %291
+        %293 = OpLabel
+               OpBranch %291
+        %292 = OpLabel
+               OpBranch %288
+        %291 = OpLabel
+        %294 = OpPhi %bool %247 %288 %true %293
+               OpSelectionMerge %295 None
+               OpBranchConditional %294 %253 %295
+        %295 = OpLabel
+               OpBranch %272
+        %272 = OpLabel
+               OpBranch %258
+        %258 = OpLabel
+               OpBranch %249
+        %249 = OpLabel
+        %248 = OpPhi %bool %247 %274 %247 %266 %294 %258
+        %251 = OpPhi %int %275 %274 %267 %266 %250 %258
+               OpBranch %246
+        %253 = OpLabel
+        %296 = OpPhi %bool %247 %246 %294 %291 %true %265
+               OpSelectionMerge %297 None
+               OpBranchConditional %296 %244 %297
+        %297 = OpLabel
+               OpBranch %244
+        %244 = OpLabel
+               OpSelectionMerge %298 None
+               OpSwitch %uint_0 %299
+        %299 = OpLabel
+               OpBranch %300
+        %300 = OpLabel
+        %301 = OpPhi %bool %false %299 %302 %303
+        %304 = OpPhi %int %int_0 %299 %305 %303
+        %306 = OpSLessThanEqual %bool %304 %int_5
+               OpLoopMerge %307 %303 None
+               OpBranchConditional %306 %308 %307
+        %308 = OpLabel
+        %309 = OpAccessChain %_ptr_Function_int %tree %304 %int_0
+        %310 = OpLoad %int %309
+        %311 = OpSLessThanEqual %bool %int_8 %310
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %314
+        %314 = OpLabel
+        %315 = OpAccessChain %_ptr_Function_int %tree %304 %int_2
+        %316 = OpLoad %int %315
+        %317 = OpIEqual %bool %316 %int_n1
+               OpSelectionMerge %318 None
+               OpBranchConditional %317 %319 %320
+        %320 = OpLabel
+        %321 = OpLoad %int %315
+               OpBranch %303
+        %319 = OpLabel
+               OpStore %315 %int_5
+        %322 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %322 %57
+               OpBranch %307
+        %318 = OpLabel
+               OpUnreachable
+        %313 = OpLabel
+        %323 = OpAccessChain %_ptr_Function_int %tree %304 %int_1
+        %324 = OpLoad %int %323
+        %325 = OpIEqual %bool %324 %int_n1
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %328
+        %328 = OpLabel
+        %329 = OpLoad %int %323
+               OpBranch %303
+        %327 = OpLabel
+        %330 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %331 = OpLoad %float %330
+        %332 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %333 = OpLoad %float %332
+        %334 = OpFOrdLessThan %bool %331 %333
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %335
+        %336 = OpLabel
+               OpBranch %337
+        %337 = OpLabel
+               OpLoopMerge %338 %339 None
+               OpBranch %340
+        %340 = OpLabel
+               OpKill
+        %339 = OpLabel
+               OpBranch %337
+        %338 = OpLabel
+               OpUnreachable
+        %335 = OpLabel
+               OpStore %323 %int_5
+        %341 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %341 %57
+               OpBranch %342
+        %342 = OpLabel
+        %343 = OpConvertFToS %int %331
+        %344 = OpSLessThan %bool %int_0 %343
+               OpLoopMerge %345 %346 None
+               OpBranchConditional %344 %347 %345
+        %347 = OpLabel
+               OpBranch %345
+        %346 = OpLabel
+               OpBranch %342
+        %345 = OpLabel
+        %348 = OpPhi %bool %301 %342 %true %347
+               OpSelectionMerge %349 None
+               OpBranchConditional %348 %307 %349
+        %349 = OpLabel
+               OpBranch %326
+        %326 = OpLabel
+               OpBranch %312
+        %312 = OpLabel
+               OpBranch %303
+        %303 = OpLabel
+        %302 = OpPhi %bool %301 %328 %301 %320 %348 %312
+        %305 = OpPhi %int %329 %328 %321 %320 %304 %312
+               OpBranch %300
+        %307 = OpLabel
+        %350 = OpPhi %bool %301 %300 %348 %345 %true %319
+               OpSelectionMerge %351 None
+               OpBranchConditional %350 %298 %351
+        %351 = OpLabel
+               OpBranch %298
+        %298 = OpLabel
+               OpSelectionMerge %352 None
+               OpSwitch %uint_0 %353
+        %353 = OpLabel
+               OpBranch %354
+        %354 = OpLabel
+        %355 = OpPhi %bool %false %353 %356 %357
+        %358 = OpPhi %int %int_0 %353 %359 %357
+        %360 = OpSLessThanEqual %bool %358 %int_6
+               OpLoopMerge %361 %357 None
+               OpBranchConditional %360 %362 %361
+        %362 = OpLabel
+        %363 = OpAccessChain %_ptr_Function_int %tree %358 %int_0
+        %364 = OpLoad %int %363
+        %365 = OpSLessThanEqual %bool %int_2 %364
+               OpSelectionMerge %366 None
+               OpBranchConditional %365 %367 %368
+        %368 = OpLabel
+        %369 = OpAccessChain %_ptr_Function_int %tree %358 %int_2
+        %370 = OpLoad %int %369
+        %371 = OpIEqual %bool %370 %int_n1
+               OpSelectionMerge %372 None
+               OpBranchConditional %371 %373 %374
+        %374 = OpLabel
+        %375 = OpLoad %int %369
+               OpBranch %357
+        %373 = OpLabel
+               OpStore %369 %int_6
+        %376 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %376 %58
+               OpBranch %361
+        %372 = OpLabel
+               OpUnreachable
+        %367 = OpLabel
+        %377 = OpAccessChain %_ptr_Function_int %tree %358 %int_1
+        %378 = OpLoad %int %377
+        %379 = OpIEqual %bool %378 %int_n1
+               OpSelectionMerge %380 None
+               OpBranchConditional %379 %381 %382
+        %382 = OpLabel
+        %383 = OpLoad %int %377
+               OpBranch %357
+        %381 = OpLabel
+        %384 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %385 = OpLoad %float %384
+        %386 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %387 = OpLoad %float %386
+        %388 = OpFOrdLessThan %bool %385 %387
+               OpSelectionMerge %389 None
+               OpBranchConditional %388 %390 %389
+        %390 = OpLabel
+               OpBranch %391
+        %391 = OpLabel
+               OpLoopMerge %392 %393 None
+               OpBranch %394
+        %394 = OpLabel
+               OpKill
+        %393 = OpLabel
+               OpBranch %391
+        %392 = OpLabel
+               OpUnreachable
+        %389 = OpLabel
+               OpStore %377 %int_6
+        %395 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %395 %58
+               OpBranch %396
+        %396 = OpLabel
+        %397 = OpConvertFToS %int %385
+        %398 = OpSLessThan %bool %int_0 %397
+               OpLoopMerge %399 %400 None
+               OpBranchConditional %398 %401 %399
+        %401 = OpLabel
+               OpBranch %399
+        %400 = OpLabel
+               OpBranch %396
+        %399 = OpLabel
+        %402 = OpPhi %bool %355 %396 %true %401
+               OpSelectionMerge %403 None
+               OpBranchConditional %402 %361 %403
+        %403 = OpLabel
+               OpBranch %380
+        %380 = OpLabel
+               OpBranch %366
+        %366 = OpLabel
+               OpBranch %357
+        %357 = OpLabel
+        %356 = OpPhi %bool %355 %382 %355 %374 %402 %366
+        %359 = OpPhi %int %383 %382 %375 %374 %358 %366
+               OpBranch %354
+        %361 = OpLabel
+        %404 = OpPhi %bool %355 %354 %402 %399 %true %373
+               OpSelectionMerge %405 None
+               OpBranchConditional %404 %352 %405
+        %405 = OpLabel
+               OpBranch %352
+        %352 = OpLabel
+               OpSelectionMerge %406 None
+               OpSwitch %uint_0 %407
+        %407 = OpLabel
+               OpBranch %408
+        %408 = OpLabel
+        %409 = OpPhi %bool %false %407 %410 %411
+        %412 = OpPhi %int %int_0 %407 %413 %411
+        %414 = OpSLessThanEqual %bool %412 %int_7
+               OpLoopMerge %415 %411 None
+               OpBranchConditional %414 %416 %415
+        %416 = OpLabel
+        %417 = OpAccessChain %_ptr_Function_int %tree %412 %int_0
+        %418 = OpLoad %int %417
+        %419 = OpSLessThanEqual %bool %int_6 %418
+               OpSelectionMerge %420 None
+               OpBranchConditional %419 %421 %422
+        %422 = OpLabel
+        %423 = OpAccessChain %_ptr_Function_int %tree %412 %int_2
+        %424 = OpLoad %int %423
+        %425 = OpIEqual %bool %424 %int_n1
+               OpSelectionMerge %426 None
+               OpBranchConditional %425 %427 %428
+        %428 = OpLabel
+        %429 = OpLoad %int %423
+               OpBranch %411
+        %427 = OpLabel
+               OpStore %423 %int_7
+        %430 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %430 %59
+               OpBranch %415
+        %426 = OpLabel
+               OpUnreachable
+        %421 = OpLabel
+        %431 = OpAccessChain %_ptr_Function_int %tree %412 %int_1
+        %432 = OpLoad %int %431
+        %433 = OpIEqual %bool %432 %int_n1
+               OpSelectionMerge %434 None
+               OpBranchConditional %433 %435 %436
+        %436 = OpLabel
+        %437 = OpLoad %int %431
+               OpBranch %411
+        %435 = OpLabel
+        %438 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %439 = OpLoad %float %438
+        %440 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %441 = OpLoad %float %440
+        %442 = OpFOrdLessThan %bool %439 %441
+               OpSelectionMerge %443 None
+               OpBranchConditional %442 %444 %443
+        %444 = OpLabel
+               OpBranch %445
+        %445 = OpLabel
+               OpLoopMerge %446 %447 None
+               OpBranch %448
+        %448 = OpLabel
+               OpKill
+        %447 = OpLabel
+               OpBranch %445
+        %446 = OpLabel
+               OpUnreachable
+        %443 = OpLabel
+               OpStore %431 %int_7
+        %449 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %449 %59
+               OpBranch %450
+        %450 = OpLabel
+        %451 = OpConvertFToS %int %439
+        %452 = OpSLessThan %bool %int_0 %451
+               OpLoopMerge %453 %454 None
+               OpBranchConditional %452 %455 %453
+        %455 = OpLabel
+               OpBranch %453
+        %454 = OpLabel
+               OpBranch %450
+        %453 = OpLabel
+        %456 = OpPhi %bool %409 %450 %true %455
+               OpSelectionMerge %457 None
+               OpBranchConditional %456 %415 %457
+        %457 = OpLabel
+               OpBranch %434
+        %434 = OpLabel
+               OpBranch %420
+        %420 = OpLabel
+               OpBranch %411
+        %411 = OpLabel
+        %410 = OpPhi %bool %409 %436 %409 %428 %456 %420
+        %413 = OpPhi %int %437 %436 %429 %428 %412 %420
+               OpBranch %408
+        %415 = OpLabel
+        %458 = OpPhi %bool %409 %408 %456 %453 %true %427
+               OpSelectionMerge %459 None
+               OpBranchConditional %458 %406 %459
+        %459 = OpLabel
+               OpBranch %406
+        %406 = OpLabel
+               OpSelectionMerge %460 None
+               OpSwitch %uint_0 %461
+        %461 = OpLabel
+               OpBranch %462
+        %462 = OpLabel
+        %463 = OpPhi %bool %false %461 %464 %465
+        %466 = OpPhi %int %int_0 %461 %467 %465
+        %468 = OpSLessThanEqual %bool %466 %int_8
+               OpLoopMerge %469 %465 None
+               OpBranchConditional %468 %470 %469
+        %470 = OpLabel
+        %471 = OpAccessChain %_ptr_Function_int %tree %466 %int_0
+        %472 = OpLoad %int %471
+        %473 = OpSLessThanEqual %bool %int_17 %472
+               OpSelectionMerge %474 None
+               OpBranchConditional %473 %475 %476
+        %476 = OpLabel
+        %477 = OpAccessChain %_ptr_Function_int %tree %466 %int_2
+        %478 = OpLoad %int %477
+        %479 = OpIEqual %bool %478 %int_n1
+               OpSelectionMerge %480 None
+               OpBranchConditional %479 %481 %482
+        %482 = OpLabel
+        %483 = OpLoad %int %477
+               OpBranch %465
+        %481 = OpLabel
+               OpStore %477 %int_8
+        %484 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %484 %60
+               OpBranch %469
+        %480 = OpLabel
+               OpUnreachable
+        %475 = OpLabel
+        %485 = OpAccessChain %_ptr_Function_int %tree %466 %int_1
+        %486 = OpLoad %int %485
+        %487 = OpIEqual %bool %486 %int_n1
+               OpSelectionMerge %488 None
+               OpBranchConditional %487 %489 %490
+        %490 = OpLabel
+        %491 = OpLoad %int %485
+               OpBranch %465
+        %489 = OpLabel
+        %492 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %493 = OpLoad %float %492
+        %494 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %495 = OpLoad %float %494
+        %496 = OpFOrdLessThan %bool %493 %495
+               OpSelectionMerge %497 None
+               OpBranchConditional %496 %498 %497
+        %498 = OpLabel
+               OpBranch %499
+        %499 = OpLabel
+               OpLoopMerge %500 %501 None
+               OpBranch %502
+        %502 = OpLabel
+               OpKill
+        %501 = OpLabel
+               OpBranch %499
+        %500 = OpLabel
+               OpUnreachable
+        %497 = OpLabel
+               OpStore %485 %int_8
+        %503 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %503 %60
+               OpBranch %504
+        %504 = OpLabel
+        %505 = OpConvertFToS %int %493
+        %506 = OpSLessThan %bool %int_0 %505
+               OpLoopMerge %507 %508 None
+               OpBranchConditional %506 %509 %507
+        %509 = OpLabel
+               OpBranch %507
+        %508 = OpLabel
+               OpBranch %504
+        %507 = OpLabel
+        %510 = OpPhi %bool %463 %504 %true %509
+               OpSelectionMerge %511 None
+               OpBranchConditional %510 %469 %511
+        %511 = OpLabel
+               OpBranch %488
+        %488 = OpLabel
+               OpBranch %474
+        %474 = OpLabel
+               OpBranch %465
+        %465 = OpLabel
+        %464 = OpPhi %bool %463 %490 %463 %482 %510 %474
+        %467 = OpPhi %int %491 %490 %483 %482 %466 %474
+               OpBranch %462
+        %469 = OpLabel
+        %512 = OpPhi %bool %463 %462 %510 %507 %true %481
+               OpSelectionMerge %513 None
+               OpBranchConditional %512 %460 %513
+        %513 = OpLabel
+               OpBranch %460
+        %460 = OpLabel
+               OpSelectionMerge %514 None
+               OpSwitch %uint_0 %515
+        %515 = OpLabel
+               OpBranch %516
+        %516 = OpLabel
+        %517 = OpPhi %bool %false %515 %518 %519
+        %520 = OpPhi %int %int_0 %515 %521 %519
+        %522 = OpSLessThanEqual %bool %520 %int_9
+               OpLoopMerge %523 %519 None
+               OpBranchConditional %522 %524 %523
+        %524 = OpLabel
+        %525 = OpAccessChain %_ptr_Function_int %tree %520 %int_0
+        %526 = OpLoad %int %525
+        %527 = OpSLessThanEqual %bool %int_13 %526
+               OpSelectionMerge %528 None
+               OpBranchConditional %527 %529 %530
+        %530 = OpLabel
+        %531 = OpAccessChain %_ptr_Function_int %tree %520 %int_2
+        %532 = OpLoad %int %531
+        %533 = OpIEqual %bool %532 %int_n1
+               OpSelectionMerge %534 None
+               OpBranchConditional %533 %535 %536
+        %536 = OpLabel
+        %537 = OpLoad %int %531
+               OpBranch %519
+        %535 = OpLabel
+               OpStore %531 %int_9
+        %538 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %538 %61
+               OpBranch %523
+        %534 = OpLabel
+               OpUnreachable
+        %529 = OpLabel
+        %539 = OpAccessChain %_ptr_Function_int %tree %520 %int_1
+        %540 = OpLoad %int %539
+        %541 = OpIEqual %bool %540 %int_n1
+               OpSelectionMerge %542 None
+               OpBranchConditional %541 %543 %544
+        %544 = OpLabel
+        %545 = OpLoad %int %539
+               OpBranch %519
+        %543 = OpLabel
+        %546 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %547 = OpLoad %float %546
+        %548 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %549 = OpLoad %float %548
+        %550 = OpFOrdLessThan %bool %547 %549
+               OpSelectionMerge %551 None
+               OpBranchConditional %550 %552 %551
+        %552 = OpLabel
+               OpBranch %553
+        %553 = OpLabel
+               OpLoopMerge %554 %555 None
+               OpBranch %556
+        %556 = OpLabel
+               OpKill
+        %555 = OpLabel
+               OpBranch %553
+        %554 = OpLabel
+               OpUnreachable
+        %551 = OpLabel
+               OpStore %539 %int_9
+        %557 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %557 %61
+               OpBranch %558
+        %558 = OpLabel
+        %559 = OpConvertFToS %int %547
+        %560 = OpSLessThan %bool %int_0 %559
+               OpLoopMerge %561 %562 None
+               OpBranchConditional %560 %563 %561
+        %563 = OpLabel
+               OpBranch %561
+        %562 = OpLabel
+               OpBranch %558
+        %561 = OpLabel
+        %564 = OpPhi %bool %517 %558 %true %563
+               OpSelectionMerge %565 None
+               OpBranchConditional %564 %523 %565
+        %565 = OpLabel
+               OpBranch %542
+        %542 = OpLabel
+               OpBranch %528
+        %528 = OpLabel
+               OpBranch %519
+        %519 = OpLabel
+        %518 = OpPhi %bool %517 %544 %517 %536 %564 %528
+        %521 = OpPhi %int %545 %544 %537 %536 %520 %528
+               OpBranch %516
+        %523 = OpLabel
+        %566 = OpPhi %bool %517 %516 %564 %561 %true %535
+               OpSelectionMerge %567 None
+               OpBranchConditional %566 %514 %567
+        %567 = OpLabel
+               OpBranch %514
+        %514 = OpLabel
+               OpBranch %568
+        %568 = OpLabel
+        %569 = OpPhi %int %49 %514 %570 %571
+        %572 = OpPhi %int %int_0 %514 %573 %571
+        %574 = OpPhi %int %int_0 %514 %575 %571
+        %576 = OpSLessThan %bool %574 %int_20
+               OpLoopMerge %577 %571 None
+               OpBranchConditional %576 %578 %577
+        %578 = OpLabel
+               OpSelectionMerge %579 None
+               OpSwitch %uint_0 %580
+        %580 = OpLabel
+               OpBranch %581
+        %581 = OpLabel
+        %582 = OpPhi %int %int_0 %580 %583 %584
+        %585 = OpINotEqual %bool %582 %int_n1
+               OpLoopMerge %586 %584 None
+               OpBranchConditional %585 %587 %586
+        %587 = OpLabel
+        %588 = OpAccessChain %_ptr_Function_BST %tree %582
+        %589 = OpLoad %BST %588
+        %590 = OpCompositeExtract %int %589 0
+        %591 = OpCompositeExtract %int %589 1
+        %592 = OpCompositeExtract %int %589 2
+        %593 = OpIEqual %bool %590 %574
+               OpSelectionMerge %594 None
+               OpBranchConditional %593 %595 %594
+        %595 = OpLabel
+               OpBranch %586
+        %594 = OpLabel
+        %596 = OpSGreaterThan %bool %574 %590
+        %583 = OpSelect %int %596 %592 %591
+               OpBranch %584
+        %584 = OpLabel
+               OpBranch %581
+        %586 = OpLabel
+        %597 = OpPhi %int %569 %581 %574 %595
+        %598 = OpPhi %bool %false %581 %true %595
+               OpSelectionMerge %599 None
+               OpBranchConditional %598 %579 %599
+        %599 = OpLabel
+               OpBranch %579
+        %579 = OpLabel
+        %570 = OpPhi %int %597 %586 %int_n1 %599
+               OpSelectionMerge %600 None
+               OpSwitch %574 %601 9 %602 5 %602 12 %602 15 %602 7 %602 8 %602 2 %602 6 %602 17 %602 13 %602
+        %602 = OpLabel
+        %603 = OpIEqual %bool %570 %574
+               OpSelectionMerge %604 None
+               OpBranchConditional %603 %605 %604
+        %605 = OpLabel
+        %606 = OpIAdd %int %572 %int_1
+               OpBranch %604
+        %604 = OpLabel
+        %607 = OpPhi %int %572 %602 %606 %605
+               OpBranch %600
+        %601 = OpLabel
+        %608 = OpIEqual %bool %570 %int_n1
+               OpSelectionMerge %609 None
+               OpBranchConditional %608 %610 %609
+        %610 = OpLabel
+        %611 = OpIAdd %int %572 %int_1
+               OpBranch %609
+        %609 = OpLabel
+        %612 = OpPhi %int %572 %601 %611 %610
+               OpBranch %600
+        %600 = OpLabel
+        %573 = OpPhi %int %612 %609 %607 %604
+               OpBranch %571
+        %571 = OpLabel
+        %575 = OpIAdd %int %574 %int_1
+               OpBranch %568
+        %577 = OpLabel
+        %613 = OpIEqual %bool %572 %int_20
+               OpSelectionMerge %614 None
+               OpBranchConditional %613 %615 %616
+        %616 = OpLabel
+               OpStore %_GLF_color %45
+               OpBranch %614
+        %615 = OpLabel
+               OpStore %_GLF_color %44
+               OpBranch %614
+        %614 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.hlsl
new file mode 100755
index 0000000..5e07bc7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.hlsl
@@ -0,0 +1,1151 @@
+SKIP: FAILED
+
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+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() {
+  BST tree[10] = (BST[10])0;
+  bool x_67 = false;
+  bool x_114 = false;
+  int x_572 = 0;
+  bool x_67_phi = false;
+  int x_70_phi = 0;
+  bool x_116_phi = false;
+  int x_119_phi = 0;
+  int x_569_phi = 0;
+  int x_572_phi = 0;
+  int x_574_phi = 0;
+  const BST tint_symbol_5 = {9, -1, -1};
+  tree[0] = tint_symbol_5;
+  switch(0u) {
+    default: {
+      x_67_phi = false;
+      x_70_phi = 0;
+      while (true) {
+        int x_95 = 0;
+        int x_87 = 0;
+        bool x_68 = false;
+        int x_71 = 0;
+        bool x_68_phi = false;
+        int x_71_phi = 0;
+        x_67 = x_67_phi;
+        const int x_70 = x_70_phi;
+        x_116_phi = x_67;
+        if ((x_70 <= 1)) {
+        } else {
+          break;
+        }
+        const int x_76 = tree[x_70].data;
+        if ((5 <= x_76)) {
+          bool x_114_phi = false;
+          const int x_89_save = x_70;
+          const int x_90 = tree[x_89_save].leftIndex;
+          if ((x_90 == -1)) {
+            const float x_97 = asfloat(x_8[0].y);
+            const float x_99 = asfloat(x_8[0].x);
+            if ((x_97 < x_99)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_89_save].leftIndex = 1;
+            const BST tint_symbol_6 = {5, -1, -1};
+            tree[1] = tint_symbol_6;
+            while (true) {
+              x_114_phi = x_67;
+              if ((0 < int(x_97))) {
+              } else {
+                break;
+              }
+              x_114_phi = true;
+              break;
+            }
+            x_114 = x_114_phi;
+            x_116_phi = x_114;
+            if (x_114) {
+              break;
+            }
+          } else {
+            x_95 = tree[x_89_save].leftIndex;
+            x_68_phi = x_67;
+            x_71_phi = x_95;
+            {
+              x_68 = x_68_phi;
+              x_71 = x_71_phi;
+              x_67_phi = x_68;
+              x_70_phi = x_71;
+            }
+            continue;
+          }
+        } else {
+          const int x_81_save = x_70;
+          const int x_82 = tree[x_81_save].rightIndex;
+          if ((x_82 == -1)) {
+            tree[x_81_save].rightIndex = 1;
+            const BST tint_symbol_7 = {5, -1, -1};
+            tree[1] = tint_symbol_7;
+            x_116_phi = true;
+            break;
+          } else {
+            x_87 = tree[x_81_save].rightIndex;
+            x_68_phi = x_67;
+            x_71_phi = x_87;
+            {
+              x_68 = x_68_phi;
+              x_71 = x_71_phi;
+              x_67_phi = x_68;
+              x_70_phi = x_71;
+            }
+            continue;
+          }
+          return;
+        }
+        x_68_phi = x_114;
+        x_71_phi = x_70;
+        {
+          x_68 = x_68_phi;
+          x_71 = x_71_phi;
+          x_67_phi = x_68;
+          x_70_phi = x_71;
+        }
+      }
+      if (x_116_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  x_119_phi = 0;
+  while (true) {
+    bool x_133 = false;
+    int x_120 = 0;
+    bool x_134_phi = false;
+    const int x_119 = x_119_phi;
+    const float x_125 = gl_FragCoord.y;
+    const bool x_126 = (x_125 < 0.0f);
+    x_134_phi = x_126;
+    if (!(x_126)) {
+      const float x_131 = asfloat(x_8[0].y);
+      x_133 = (x_119 != int(x_131));
+      x_134_phi = x_133;
+    }
+    if (x_134_phi) {
+    } else {
+      break;
+    }
+    bool x_139 = false;
+    bool x_186 = false;
+    bool x_139_phi = false;
+    int x_142_phi = 0;
+    bool x_188_phi = false;
+    switch(0u) {
+      default: {
+        x_139_phi = false;
+        x_142_phi = 0;
+        while (true) {
+          int x_167 = 0;
+          int x_159 = 0;
+          bool x_140 = false;
+          int x_143 = 0;
+          bool x_140_phi = false;
+          int x_143_phi = 0;
+          x_139 = x_139_phi;
+          const int x_142 = x_142_phi;
+          x_188_phi = x_139;
+          if ((x_142 <= 2)) {
+          } else {
+            break;
+          }
+          const int x_148 = tree[x_142].data;
+          if ((12 <= x_148)) {
+            bool x_186_phi = false;
+            const int x_161_save = x_142;
+            const int x_162 = tree[x_161_save].leftIndex;
+            if ((x_162 == -1)) {
+              const float x_169 = asfloat(x_8[0].y);
+              const float x_171 = asfloat(x_8[0].x);
+              if ((x_169 < x_171)) {
+                while (true) {
+                  discard;
+                }
+                return;
+              }
+              tree[x_161_save].leftIndex = 2;
+              const BST tint_symbol_8 = {12, -1, -1};
+              tree[2] = tint_symbol_8;
+              while (true) {
+                x_186_phi = x_139;
+                if ((0 < int(x_169))) {
+                } else {
+                  break;
+                }
+                x_186_phi = true;
+                break;
+              }
+              x_186 = x_186_phi;
+              x_188_phi = x_186;
+              if (x_186) {
+                break;
+              }
+            } else {
+              x_167 = tree[x_161_save].leftIndex;
+              x_140_phi = x_139;
+              x_143_phi = x_167;
+              {
+                x_140 = x_140_phi;
+                x_143 = x_143_phi;
+                x_139_phi = x_140;
+                x_142_phi = x_143;
+              }
+              continue;
+            }
+          } else {
+            const int x_153_save = x_142;
+            const int x_154 = tree[x_153_save].rightIndex;
+            if ((x_154 == -1)) {
+              tree[x_153_save].rightIndex = 2;
+              const BST tint_symbol_9 = {12, -1, -1};
+              tree[2] = tint_symbol_9;
+              x_188_phi = true;
+              break;
+            } else {
+              x_159 = tree[x_153_save].rightIndex;
+              x_140_phi = x_139;
+              x_143_phi = x_159;
+              {
+                x_140 = x_140_phi;
+                x_143 = x_143_phi;
+                x_139_phi = x_140;
+                x_142_phi = x_143;
+              }
+              continue;
+            }
+            return;
+          }
+          x_140_phi = x_186;
+          x_143_phi = x_142;
+          {
+            x_140 = x_140_phi;
+            x_143 = x_143_phi;
+            x_139_phi = x_140;
+            x_142_phi = x_143;
+          }
+        }
+        if (x_188_phi) {
+          break;
+        }
+        break;
+      }
+    }
+    {
+      x_120 = (x_119 + 1);
+      x_119_phi = x_120;
+    }
+  }
+  bool x_193 = false;
+  bool x_240 = false;
+  bool x_193_phi = false;
+  int x_196_phi = 0;
+  bool x_242_phi = false;
+  switch(0u) {
+    default: {
+      x_193_phi = false;
+      x_196_phi = 0;
+      while (true) {
+        int x_221 = 0;
+        int x_213 = 0;
+        bool x_194 = false;
+        int x_197 = 0;
+        bool x_194_phi = false;
+        int x_197_phi = 0;
+        x_193 = x_193_phi;
+        const int x_196 = x_196_phi;
+        x_242_phi = x_193;
+        if ((x_196 <= 3)) {
+        } else {
+          break;
+        }
+        const int x_202 = tree[x_196].data;
+        if ((15 <= x_202)) {
+          bool x_240_phi = false;
+          const int x_215_save = x_196;
+          const int x_216 = tree[x_215_save].leftIndex;
+          if ((x_216 == -1)) {
+            const float x_223 = asfloat(x_8[0].y);
+            const float x_225 = asfloat(x_8[0].x);
+            if ((x_223 < x_225)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_215_save].leftIndex = 3;
+            const BST tint_symbol_10 = {15, -1, -1};
+            tree[3] = tint_symbol_10;
+            while (true) {
+              x_240_phi = x_193;
+              if ((0 < int(x_223))) {
+              } else {
+                break;
+              }
+              x_240_phi = true;
+              break;
+            }
+            x_240 = x_240_phi;
+            x_242_phi = x_240;
+            if (x_240) {
+              break;
+            }
+          } else {
+            x_221 = tree[x_215_save].leftIndex;
+            x_194_phi = x_193;
+            x_197_phi = x_221;
+            {
+              x_194 = x_194_phi;
+              x_197 = x_197_phi;
+              x_193_phi = x_194;
+              x_196_phi = x_197;
+            }
+            continue;
+          }
+        } else {
+          const int x_207_save = x_196;
+          const int x_208 = tree[x_207_save].rightIndex;
+          if ((x_208 == -1)) {
+            tree[x_207_save].rightIndex = 3;
+            const BST tint_symbol_11 = {15, -1, -1};
+            tree[3] = tint_symbol_11;
+            x_242_phi = true;
+            break;
+          } else {
+            x_213 = tree[x_207_save].rightIndex;
+            x_194_phi = x_193;
+            x_197_phi = x_213;
+            {
+              x_194 = x_194_phi;
+              x_197 = x_197_phi;
+              x_193_phi = x_194;
+              x_196_phi = x_197;
+            }
+            continue;
+          }
+          return;
+        }
+        x_194_phi = x_240;
+        x_197_phi = x_196;
+        {
+          x_194 = x_194_phi;
+          x_197 = x_197_phi;
+          x_193_phi = x_194;
+          x_196_phi = x_197;
+        }
+      }
+      if (x_242_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_247 = false;
+  bool x_294 = false;
+  bool x_247_phi = false;
+  int x_250_phi = 0;
+  bool x_296_phi = false;
+  switch(0u) {
+    default: {
+      x_247_phi = false;
+      x_250_phi = 0;
+      while (true) {
+        int x_275 = 0;
+        int x_267 = 0;
+        bool x_248 = false;
+        int x_251 = 0;
+        bool x_248_phi = false;
+        int x_251_phi = 0;
+        x_247 = x_247_phi;
+        const int x_250 = x_250_phi;
+        x_296_phi = x_247;
+        if ((x_250 <= 4)) {
+        } else {
+          break;
+        }
+        const int x_256 = tree[x_250].data;
+        if ((7 <= x_256)) {
+          bool x_294_phi = false;
+          const int x_269_save = x_250;
+          const int x_270 = tree[x_269_save].leftIndex;
+          if ((x_270 == -1)) {
+            const float x_277 = asfloat(x_8[0].y);
+            const float x_279 = asfloat(x_8[0].x);
+            if ((x_277 < x_279)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_269_save].leftIndex = 4;
+            const BST tint_symbol_12 = {7, -1, -1};
+            tree[4] = tint_symbol_12;
+            while (true) {
+              x_294_phi = x_247;
+              if ((0 < int(x_277))) {
+              } else {
+                break;
+              }
+              x_294_phi = true;
+              break;
+            }
+            x_294 = x_294_phi;
+            x_296_phi = x_294;
+            if (x_294) {
+              break;
+            }
+          } else {
+            x_275 = tree[x_269_save].leftIndex;
+            x_248_phi = x_247;
+            x_251_phi = x_275;
+            {
+              x_248 = x_248_phi;
+              x_251 = x_251_phi;
+              x_247_phi = x_248;
+              x_250_phi = x_251;
+            }
+            continue;
+          }
+        } else {
+          const int x_261_save = x_250;
+          const int x_262 = tree[x_261_save].rightIndex;
+          if ((x_262 == -1)) {
+            tree[x_261_save].rightIndex = 4;
+            const BST tint_symbol_13 = {7, -1, -1};
+            tree[4] = tint_symbol_13;
+            x_296_phi = true;
+            break;
+          } else {
+            x_267 = tree[x_261_save].rightIndex;
+            x_248_phi = x_247;
+            x_251_phi = x_267;
+            {
+              x_248 = x_248_phi;
+              x_251 = x_251_phi;
+              x_247_phi = x_248;
+              x_250_phi = x_251;
+            }
+            continue;
+          }
+          return;
+        }
+        x_248_phi = x_294;
+        x_251_phi = x_250;
+        {
+          x_248 = x_248_phi;
+          x_251 = x_251_phi;
+          x_247_phi = x_248;
+          x_250_phi = x_251;
+        }
+      }
+      if (x_296_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_301 = false;
+  bool x_348 = false;
+  bool x_301_phi = false;
+  int x_304_phi = 0;
+  bool x_350_phi = false;
+  switch(0u) {
+    default: {
+      x_301_phi = false;
+      x_304_phi = 0;
+      while (true) {
+        int x_329 = 0;
+        int x_321 = 0;
+        bool x_302 = false;
+        int x_305 = 0;
+        bool x_302_phi = false;
+        int x_305_phi = 0;
+        x_301 = x_301_phi;
+        const int x_304 = x_304_phi;
+        x_350_phi = x_301;
+        if ((x_304 <= 5)) {
+        } else {
+          break;
+        }
+        const int x_310 = tree[x_304].data;
+        if ((8 <= x_310)) {
+          bool x_348_phi = false;
+          const int x_323_save = x_304;
+          const int x_324 = tree[x_323_save].leftIndex;
+          if ((x_324 == -1)) {
+            const float x_331 = asfloat(x_8[0].y);
+            const float x_333 = asfloat(x_8[0].x);
+            if ((x_331 < x_333)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_323_save].leftIndex = 5;
+            const BST tint_symbol_14 = {8, -1, -1};
+            tree[5] = tint_symbol_14;
+            while (true) {
+              x_348_phi = x_301;
+              if ((0 < int(x_331))) {
+              } else {
+                break;
+              }
+              x_348_phi = true;
+              break;
+            }
+            x_348 = x_348_phi;
+            x_350_phi = x_348;
+            if (x_348) {
+              break;
+            }
+          } else {
+            x_329 = tree[x_323_save].leftIndex;
+            x_302_phi = x_301;
+            x_305_phi = x_329;
+            {
+              x_302 = x_302_phi;
+              x_305 = x_305_phi;
+              x_301_phi = x_302;
+              x_304_phi = x_305;
+            }
+            continue;
+          }
+        } else {
+          const int x_315_save = x_304;
+          const int x_316 = tree[x_315_save].rightIndex;
+          if ((x_316 == -1)) {
+            tree[x_315_save].rightIndex = 5;
+            const BST tint_symbol_15 = {8, -1, -1};
+            tree[5] = tint_symbol_15;
+            x_350_phi = true;
+            break;
+          } else {
+            x_321 = tree[x_315_save].rightIndex;
+            x_302_phi = x_301;
+            x_305_phi = x_321;
+            {
+              x_302 = x_302_phi;
+              x_305 = x_305_phi;
+              x_301_phi = x_302;
+              x_304_phi = x_305;
+            }
+            continue;
+          }
+          return;
+        }
+        x_302_phi = x_348;
+        x_305_phi = x_304;
+        {
+          x_302 = x_302_phi;
+          x_305 = x_305_phi;
+          x_301_phi = x_302;
+          x_304_phi = x_305;
+        }
+      }
+      if (x_350_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_355 = false;
+  bool x_402 = false;
+  bool x_355_phi = false;
+  int x_358_phi = 0;
+  bool x_404_phi = false;
+  switch(0u) {
+    default: {
+      x_355_phi = false;
+      x_358_phi = 0;
+      while (true) {
+        int x_383 = 0;
+        int x_375 = 0;
+        bool x_356 = false;
+        int x_359 = 0;
+        bool x_356_phi = false;
+        int x_359_phi = 0;
+        x_355 = x_355_phi;
+        const int x_358 = x_358_phi;
+        x_404_phi = x_355;
+        if ((x_358 <= 6)) {
+        } else {
+          break;
+        }
+        const int x_364 = tree[x_358].data;
+        if ((2 <= x_364)) {
+          bool x_402_phi = false;
+          const int x_377_save = x_358;
+          const int x_378 = tree[x_377_save].leftIndex;
+          if ((x_378 == -1)) {
+            const float x_385 = asfloat(x_8[0].y);
+            const float x_387 = asfloat(x_8[0].x);
+            if ((x_385 < x_387)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_377_save].leftIndex = 6;
+            const BST tint_symbol_16 = {2, -1, -1};
+            tree[6] = tint_symbol_16;
+            while (true) {
+              x_402_phi = x_355;
+              if ((0 < int(x_385))) {
+              } else {
+                break;
+              }
+              x_402_phi = true;
+              break;
+            }
+            x_402 = x_402_phi;
+            x_404_phi = x_402;
+            if (x_402) {
+              break;
+            }
+          } else {
+            x_383 = tree[x_377_save].leftIndex;
+            x_356_phi = x_355;
+            x_359_phi = x_383;
+            {
+              x_356 = x_356_phi;
+              x_359 = x_359_phi;
+              x_355_phi = x_356;
+              x_358_phi = x_359;
+            }
+            continue;
+          }
+        } else {
+          const int x_369_save = x_358;
+          const int x_370 = tree[x_369_save].rightIndex;
+          if ((x_370 == -1)) {
+            tree[x_369_save].rightIndex = 6;
+            const BST tint_symbol_17 = {2, -1, -1};
+            tree[6] = tint_symbol_17;
+            x_404_phi = true;
+            break;
+          } else {
+            x_375 = tree[x_369_save].rightIndex;
+            x_356_phi = x_355;
+            x_359_phi = x_375;
+            {
+              x_356 = x_356_phi;
+              x_359 = x_359_phi;
+              x_355_phi = x_356;
+              x_358_phi = x_359;
+            }
+            continue;
+          }
+          return;
+        }
+        x_356_phi = x_402;
+        x_359_phi = x_358;
+        {
+          x_356 = x_356_phi;
+          x_359 = x_359_phi;
+          x_355_phi = x_356;
+          x_358_phi = x_359;
+        }
+      }
+      if (x_404_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_409 = false;
+  bool x_456 = false;
+  bool x_409_phi = false;
+  int x_412_phi = 0;
+  bool x_458_phi = false;
+  switch(0u) {
+    default: {
+      x_409_phi = false;
+      x_412_phi = 0;
+      while (true) {
+        int x_437 = 0;
+        int x_429 = 0;
+        bool x_410 = false;
+        int x_413 = 0;
+        bool x_410_phi = false;
+        int x_413_phi = 0;
+        x_409 = x_409_phi;
+        const int x_412 = x_412_phi;
+        x_458_phi = x_409;
+        if ((x_412 <= 7)) {
+        } else {
+          break;
+        }
+        const int x_418 = tree[x_412].data;
+        if ((6 <= x_418)) {
+          bool x_456_phi = false;
+          const int x_431_save = x_412;
+          const int x_432 = tree[x_431_save].leftIndex;
+          if ((x_432 == -1)) {
+            const float x_439 = asfloat(x_8[0].y);
+            const float x_441 = asfloat(x_8[0].x);
+            if ((x_439 < x_441)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_431_save].leftIndex = 7;
+            const BST tint_symbol_18 = {6, -1, -1};
+            tree[7] = tint_symbol_18;
+            while (true) {
+              x_456_phi = x_409;
+              if ((0 < int(x_439))) {
+              } else {
+                break;
+              }
+              x_456_phi = true;
+              break;
+            }
+            x_456 = x_456_phi;
+            x_458_phi = x_456;
+            if (x_456) {
+              break;
+            }
+          } else {
+            x_437 = tree[x_431_save].leftIndex;
+            x_410_phi = x_409;
+            x_413_phi = x_437;
+            {
+              x_410 = x_410_phi;
+              x_413 = x_413_phi;
+              x_409_phi = x_410;
+              x_412_phi = x_413;
+            }
+            continue;
+          }
+        } else {
+          const int x_423_save = x_412;
+          const int x_424 = tree[x_423_save].rightIndex;
+          if ((x_424 == -1)) {
+            tree[x_423_save].rightIndex = 7;
+            const BST tint_symbol_19 = {6, -1, -1};
+            tree[7] = tint_symbol_19;
+            x_458_phi = true;
+            break;
+          } else {
+            x_429 = tree[x_423_save].rightIndex;
+            x_410_phi = x_409;
+            x_413_phi = x_429;
+            {
+              x_410 = x_410_phi;
+              x_413 = x_413_phi;
+              x_409_phi = x_410;
+              x_412_phi = x_413;
+            }
+            continue;
+          }
+          return;
+        }
+        x_410_phi = x_456;
+        x_413_phi = x_412;
+        {
+          x_410 = x_410_phi;
+          x_413 = x_413_phi;
+          x_409_phi = x_410;
+          x_412_phi = x_413;
+        }
+      }
+      if (x_458_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_463 = false;
+  bool x_510 = false;
+  bool x_463_phi = false;
+  int x_466_phi = 0;
+  bool x_512_phi = false;
+  switch(0u) {
+    default: {
+      x_463_phi = false;
+      x_466_phi = 0;
+      while (true) {
+        int x_491 = 0;
+        int x_483 = 0;
+        bool x_464 = false;
+        int x_467 = 0;
+        bool x_464_phi = false;
+        int x_467_phi = 0;
+        x_463 = x_463_phi;
+        const int x_466 = x_466_phi;
+        x_512_phi = x_463;
+        if ((x_466 <= 8)) {
+        } else {
+          break;
+        }
+        const int x_472 = tree[x_466].data;
+        if ((17 <= x_472)) {
+          bool x_510_phi = false;
+          const int x_485_save = x_466;
+          const int x_486 = tree[x_485_save].leftIndex;
+          if ((x_486 == -1)) {
+            const float x_493 = asfloat(x_8[0].y);
+            const float x_495 = asfloat(x_8[0].x);
+            if ((x_493 < x_495)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_485_save].leftIndex = 8;
+            const BST tint_symbol_20 = {17, -1, -1};
+            tree[8] = tint_symbol_20;
+            while (true) {
+              x_510_phi = x_463;
+              if ((0 < int(x_493))) {
+              } else {
+                break;
+              }
+              x_510_phi = true;
+              break;
+            }
+            x_510 = x_510_phi;
+            x_512_phi = x_510;
+            if (x_510) {
+              break;
+            }
+          } else {
+            x_491 = tree[x_485_save].leftIndex;
+            x_464_phi = x_463;
+            x_467_phi = x_491;
+            {
+              x_464 = x_464_phi;
+              x_467 = x_467_phi;
+              x_463_phi = x_464;
+              x_466_phi = x_467;
+            }
+            continue;
+          }
+        } else {
+          const int x_477_save = x_466;
+          const int x_478 = tree[x_477_save].rightIndex;
+          if ((x_478 == -1)) {
+            tree[x_477_save].rightIndex = 8;
+            const BST tint_symbol_21 = {17, -1, -1};
+            tree[8] = tint_symbol_21;
+            x_512_phi = true;
+            break;
+          } else {
+            x_483 = tree[x_477_save].rightIndex;
+            x_464_phi = x_463;
+            x_467_phi = x_483;
+            {
+              x_464 = x_464_phi;
+              x_467 = x_467_phi;
+              x_463_phi = x_464;
+              x_466_phi = x_467;
+            }
+            continue;
+          }
+          return;
+        }
+        x_464_phi = x_510;
+        x_467_phi = x_466;
+        {
+          x_464 = x_464_phi;
+          x_467 = x_467_phi;
+          x_463_phi = x_464;
+          x_466_phi = x_467;
+        }
+      }
+      if (x_512_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_517 = false;
+  bool x_564 = false;
+  bool x_517_phi = false;
+  int x_520_phi = 0;
+  bool x_566_phi = false;
+  switch(0u) {
+    default: {
+      x_517_phi = false;
+      x_520_phi = 0;
+      while (true) {
+        int x_545 = 0;
+        int x_537 = 0;
+        bool x_518 = false;
+        int x_521 = 0;
+        bool x_518_phi = false;
+        int x_521_phi = 0;
+        x_517 = x_517_phi;
+        const int x_520 = x_520_phi;
+        x_566_phi = x_517;
+        if ((x_520 <= 9)) {
+        } else {
+          break;
+        }
+        const int x_526 = tree[x_520].data;
+        if ((13 <= x_526)) {
+          bool x_564_phi = false;
+          const int x_539_save = x_520;
+          const int x_540 = tree[x_539_save].leftIndex;
+          if ((x_540 == -1)) {
+            const float x_547 = asfloat(x_8[0].y);
+            const float x_549 = asfloat(x_8[0].x);
+            if ((x_547 < x_549)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_539_save].leftIndex = 9;
+            const BST tint_symbol_22 = {13, -1, -1};
+            tree[9] = tint_symbol_22;
+            while (true) {
+              x_564_phi = x_517;
+              if ((0 < int(x_547))) {
+              } else {
+                break;
+              }
+              x_564_phi = true;
+              break;
+            }
+            x_564 = x_564_phi;
+            x_566_phi = x_564;
+            if (x_564) {
+              break;
+            }
+          } else {
+            x_545 = tree[x_539_save].leftIndex;
+            x_518_phi = x_517;
+            x_521_phi = x_545;
+            {
+              x_518 = x_518_phi;
+              x_521 = x_521_phi;
+              x_517_phi = x_518;
+              x_520_phi = x_521;
+            }
+            continue;
+          }
+        } else {
+          const int x_531_save = x_520;
+          const int x_532 = tree[x_531_save].rightIndex;
+          if ((x_532 == -1)) {
+            tree[x_531_save].rightIndex = 9;
+            const BST tint_symbol_23 = {13, -1, -1};
+            tree[9] = tint_symbol_23;
+            x_566_phi = true;
+            break;
+          } else {
+            x_537 = tree[x_531_save].rightIndex;
+            x_518_phi = x_517;
+            x_521_phi = x_537;
+            {
+              x_518 = x_518_phi;
+              x_521 = x_521_phi;
+              x_517_phi = x_518;
+              x_520_phi = x_521;
+            }
+            continue;
+          }
+          return;
+        }
+        x_518_phi = x_564;
+        x_521_phi = x_520;
+        {
+          x_518 = x_518_phi;
+          x_521 = x_521_phi;
+          x_517_phi = x_518;
+          x_520_phi = x_521;
+        }
+      }
+      if (x_566_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  x_569_phi = 0;
+  x_572_phi = 0;
+  x_574_phi = 0;
+  while (true) {
+    int x_597 = 0;
+    int x_607 = 0;
+    int x_612 = 0;
+    int x_575 = 0;
+    int x_570_phi = 0;
+    int x_573_phi = 0;
+    const int x_569 = x_569_phi;
+    x_572 = x_572_phi;
+    const int x_574 = x_574_phi;
+    if ((x_574 < 20)) {
+    } else {
+      break;
+    }
+    int x_582_phi = 0;
+    int x_597_phi = 0;
+    bool x_598_phi = false;
+    switch(0u) {
+      default: {
+        x_582_phi = 0;
+        while (true) {
+          const int x_582 = x_582_phi;
+          x_597_phi = x_569;
+          x_598_phi = false;
+          if ((x_582 != -1)) {
+          } else {
+            break;
+          }
+          const BST x_589 = tree[x_582];
+          const int x_590 = x_589.data;
+          const int x_591 = x_589.leftIndex;
+          const int x_592 = x_589.rightIndex;
+          if ((x_590 == x_574)) {
+            x_597_phi = x_574;
+            x_598_phi = true;
+            break;
+          }
+          {
+            x_582_phi = ((x_574 > x_590) ? x_592 : x_591);
+          }
+        }
+        x_597 = x_597_phi;
+        const bool x_598 = x_598_phi;
+        x_570_phi = x_597;
+        if (x_598) {
+          break;
+        }
+        x_570_phi = -1;
+        break;
+      }
+    }
+    int x_570 = 0;
+    int x_606 = 0;
+    int x_611 = 0;
+    int x_607_phi = 0;
+    int x_612_phi = 0;
+    x_570 = x_570_phi;
+    switch(x_574) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_607_phi = x_572;
+        if ((x_570 == asint(x_574))) {
+          x_606 = asint((x_572 + asint(1)));
+          x_607_phi = x_606;
+        }
+        x_607 = x_607_phi;
+        x_573_phi = x_607;
+        break;
+      }
+      default: {
+        x_612_phi = x_572;
+        if ((x_570 == asint(-1))) {
+          x_611 = asint((x_572 + asint(1)));
+          x_612_phi = x_611;
+        }
+        x_612 = x_612_phi;
+        x_573_phi = x_612;
+        break;
+      }
+    }
+    const int x_573 = x_573_phi;
+    {
+      x_575 = (x_574 + 1);
+      x_569_phi = x_570;
+      x_572_phi = x_573;
+      x_574_phi = x_575;
+    }
+  }
+  if ((x_572 == asint(20))) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_24 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_24;
+}
+T:\tmp\ulw.0:1053:20: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
+        if ((x_570 == asint(x_574))) {
+             ~~~~~~^~~~~~~~~~~~~~~
+T:\tmp\ulw.0:1053:20: note: remove extraneous parentheses around the comparison to silence this warning
+        if ((x_570 == asint(x_574))) {
+            ~      ^              ~
+T:\tmp\ulw.0:1053:20: note: use '=' to turn this equality comparison into an assignment
+        if ((x_570 == asint(x_574))) {
+                   ^~
+                   =
+T:\tmp\ulw.0:1063:20: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
+        if ((x_570 == asint(-1))) {
+             ~~~~~~^~~~~~~~~~~~
+T:\tmp\ulw.0:1063:20: note: remove extraneous parentheses around the comparison to silence this warning
+        if ((x_570 == asint(-1))) {
+            ~      ^           ~
+T:\tmp\ulw.0:1063:20: note: use '=' to turn this equality comparison into an assignment
+        if ((x_570 == asint(-1))) {
+                   ^~
+                   =
+T:\tmp\ulw.0:1080:14: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
+  if ((x_572 == asint(20))) {
+       ~~~~~~^~~~~~~~~~~~
+T:\tmp\ulw.0:1080:14: note: remove extraneous parentheses around the comparison to silence this warning
+  if ((x_572 == asint(20))) {
+      ~      ^           ~
+T:\tmp\ulw.0:1080:14: note: use '=' to turn this equality comparison into an assignment
+  if ((x_572 == asint(20))) {
+             ^~
+             =
+error: validation errors
+T:\tmp\ulw.0:1098: error: Loop must have break.
+T:\tmp\ulw.0:1098: error: Loop must have break.
+T:\tmp\ulw.0:1098: error: Loop must have break.
+T:\tmp\ulw.0:1098: error: Loop must have break.
+T:\tmp\ulw.0:1098: error: Loop must have break.
+T:\tmp\ulw.0:1098: error: Loop must have break.
+T:\tmp\ulw.0:1098: error: Loop must have break.
+T:\tmp\ulw.0:1098: error: Loop must have break.
+T:\tmp\ulw.0:1098: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.msl
new file mode 100644
index 0000000..5025022
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.msl
@@ -0,0 +1,1116 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_24, thread float4* const tint_symbol_25) {
+  tint_array_wrapper tree = {};
+  bool x_67 = false;
+  bool x_114 = false;
+  int x_572 = 0;
+  bool x_67_phi = false;
+  int x_70_phi = 0;
+  bool x_116_phi = false;
+  int x_119_phi = 0;
+  int x_569_phi = 0;
+  int x_572_phi = 0;
+  int x_574_phi = 0;
+  BST const tint_symbol_4 = {.data=9, .leftIndex=-1, .rightIndex=-1};
+  tree.arr[0] = tint_symbol_4;
+  switch(0u) {
+    default: {
+      x_67_phi = false;
+      x_70_phi = 0;
+      while (true) {
+        int x_95 = 0;
+        int x_87 = 0;
+        bool x_68 = false;
+        int x_71 = 0;
+        bool x_68_phi = false;
+        int x_71_phi = 0;
+        x_67 = x_67_phi;
+        int const x_70 = x_70_phi;
+        x_116_phi = x_67;
+        if ((x_70 <= 1)) {
+        } else {
+          break;
+        }
+        int const x_76 = tree.arr[x_70].data;
+        if ((5 <= x_76)) {
+          bool x_114_phi = false;
+          int const x_89_save = x_70;
+          int const x_90 = tree.arr[x_89_save].leftIndex;
+          if ((x_90 == -1)) {
+            float const x_97 = x_8.injectionSwitch.y;
+            float const x_99 = x_8.injectionSwitch.x;
+            if ((x_97 < x_99)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_89_save].leftIndex = 1;
+            BST const tint_symbol_5 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_5;
+            while (true) {
+              x_114_phi = x_67;
+              if ((0 < int(x_97))) {
+              } else {
+                break;
+              }
+              x_114_phi = true;
+              break;
+            }
+            x_114 = x_114_phi;
+            x_116_phi = x_114;
+            if (x_114) {
+              break;
+            }
+          } else {
+            x_95 = tree.arr[x_89_save].leftIndex;
+            x_68_phi = x_67;
+            x_71_phi = x_95;
+            {
+              x_68 = x_68_phi;
+              x_71 = x_71_phi;
+              x_67_phi = x_68;
+              x_70_phi = x_71;
+            }
+            continue;
+          }
+        } else {
+          int const x_81_save = x_70;
+          int const x_82 = tree.arr[x_81_save].rightIndex;
+          if ((x_82 == -1)) {
+            tree.arr[x_81_save].rightIndex = 1;
+            BST const tint_symbol_6 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_6;
+            x_116_phi = true;
+            break;
+          } else {
+            x_87 = tree.arr[x_81_save].rightIndex;
+            x_68_phi = x_67;
+            x_71_phi = x_87;
+            {
+              x_68 = x_68_phi;
+              x_71 = x_71_phi;
+              x_67_phi = x_68;
+              x_70_phi = x_71;
+            }
+            continue;
+          }
+          return;
+        }
+        x_68_phi = x_114;
+        x_71_phi = x_70;
+        {
+          x_68 = x_68_phi;
+          x_71 = x_71_phi;
+          x_67_phi = x_68;
+          x_70_phi = x_71;
+        }
+      }
+      bool const x_116 = x_116_phi;
+      if (x_116) {
+        break;
+      }
+      break;
+    }
+  }
+  x_119_phi = 0;
+  while (true) {
+    bool x_133 = false;
+    int x_120 = 0;
+    bool x_134_phi = false;
+    int const x_119 = x_119_phi;
+    float const x_125 = (*(tint_symbol_24)).y;
+    bool const x_126 = (x_125 < 0.0f);
+    x_134_phi = x_126;
+    if (!(x_126)) {
+      float const x_131 = x_8.injectionSwitch.y;
+      x_133 = (x_119 != int(x_131));
+      x_134_phi = x_133;
+    }
+    bool const x_134 = x_134_phi;
+    if (x_134) {
+    } else {
+      break;
+    }
+    bool x_139 = false;
+    bool x_186 = false;
+    bool x_139_phi = false;
+    int x_142_phi = 0;
+    bool x_188_phi = false;
+    switch(0u) {
+      default: {
+        x_139_phi = false;
+        x_142_phi = 0;
+        while (true) {
+          int x_167 = 0;
+          int x_159 = 0;
+          bool x_140 = false;
+          int x_143 = 0;
+          bool x_140_phi = false;
+          int x_143_phi = 0;
+          x_139 = x_139_phi;
+          int const x_142 = x_142_phi;
+          x_188_phi = x_139;
+          if ((x_142 <= 2)) {
+          } else {
+            break;
+          }
+          int const x_148 = tree.arr[x_142].data;
+          if ((12 <= x_148)) {
+            bool x_186_phi = false;
+            int const x_161_save = x_142;
+            int const x_162 = tree.arr[x_161_save].leftIndex;
+            if ((x_162 == -1)) {
+              float const x_169 = x_8.injectionSwitch.y;
+              float const x_171 = x_8.injectionSwitch.x;
+              if ((x_169 < x_171)) {
+                while (true) {
+                  discard_fragment();
+                }
+                return;
+              }
+              tree.arr[x_161_save].leftIndex = 2;
+              BST const tint_symbol_7 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+              tree.arr[2] = tint_symbol_7;
+              while (true) {
+                x_186_phi = x_139;
+                if ((0 < int(x_169))) {
+                } else {
+                  break;
+                }
+                x_186_phi = true;
+                break;
+              }
+              x_186 = x_186_phi;
+              x_188_phi = x_186;
+              if (x_186) {
+                break;
+              }
+            } else {
+              x_167 = tree.arr[x_161_save].leftIndex;
+              x_140_phi = x_139;
+              x_143_phi = x_167;
+              {
+                x_140 = x_140_phi;
+                x_143 = x_143_phi;
+                x_139_phi = x_140;
+                x_142_phi = x_143;
+              }
+              continue;
+            }
+          } else {
+            int const x_153_save = x_142;
+            int const x_154 = tree.arr[x_153_save].rightIndex;
+            if ((x_154 == -1)) {
+              tree.arr[x_153_save].rightIndex = 2;
+              BST const tint_symbol_8 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+              tree.arr[2] = tint_symbol_8;
+              x_188_phi = true;
+              break;
+            } else {
+              x_159 = tree.arr[x_153_save].rightIndex;
+              x_140_phi = x_139;
+              x_143_phi = x_159;
+              {
+                x_140 = x_140_phi;
+                x_143 = x_143_phi;
+                x_139_phi = x_140;
+                x_142_phi = x_143;
+              }
+              continue;
+            }
+            return;
+          }
+          x_140_phi = x_186;
+          x_143_phi = x_142;
+          {
+            x_140 = x_140_phi;
+            x_143 = x_143_phi;
+            x_139_phi = x_140;
+            x_142_phi = x_143;
+          }
+        }
+        bool const x_188 = x_188_phi;
+        if (x_188) {
+          break;
+        }
+        break;
+      }
+    }
+    {
+      x_120 = (x_119 + 1);
+      x_119_phi = x_120;
+    }
+  }
+  bool x_193 = false;
+  bool x_240 = false;
+  bool x_193_phi = false;
+  int x_196_phi = 0;
+  bool x_242_phi = false;
+  switch(0u) {
+    default: {
+      x_193_phi = false;
+      x_196_phi = 0;
+      while (true) {
+        int x_221 = 0;
+        int x_213 = 0;
+        bool x_194 = false;
+        int x_197 = 0;
+        bool x_194_phi = false;
+        int x_197_phi = 0;
+        x_193 = x_193_phi;
+        int const x_196 = x_196_phi;
+        x_242_phi = x_193;
+        if ((x_196 <= 3)) {
+        } else {
+          break;
+        }
+        int const x_202 = tree.arr[x_196].data;
+        if ((15 <= x_202)) {
+          bool x_240_phi = false;
+          int const x_215_save = x_196;
+          int const x_216 = tree.arr[x_215_save].leftIndex;
+          if ((x_216 == -1)) {
+            float const x_223 = x_8.injectionSwitch.y;
+            float const x_225 = x_8.injectionSwitch.x;
+            if ((x_223 < x_225)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_215_save].leftIndex = 3;
+            BST const tint_symbol_9 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_9;
+            while (true) {
+              x_240_phi = x_193;
+              if ((0 < int(x_223))) {
+              } else {
+                break;
+              }
+              x_240_phi = true;
+              break;
+            }
+            x_240 = x_240_phi;
+            x_242_phi = x_240;
+            if (x_240) {
+              break;
+            }
+          } else {
+            x_221 = tree.arr[x_215_save].leftIndex;
+            x_194_phi = x_193;
+            x_197_phi = x_221;
+            {
+              x_194 = x_194_phi;
+              x_197 = x_197_phi;
+              x_193_phi = x_194;
+              x_196_phi = x_197;
+            }
+            continue;
+          }
+        } else {
+          int const x_207_save = x_196;
+          int const x_208 = tree.arr[x_207_save].rightIndex;
+          if ((x_208 == -1)) {
+            tree.arr[x_207_save].rightIndex = 3;
+            BST const tint_symbol_10 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_10;
+            x_242_phi = true;
+            break;
+          } else {
+            x_213 = tree.arr[x_207_save].rightIndex;
+            x_194_phi = x_193;
+            x_197_phi = x_213;
+            {
+              x_194 = x_194_phi;
+              x_197 = x_197_phi;
+              x_193_phi = x_194;
+              x_196_phi = x_197;
+            }
+            continue;
+          }
+          return;
+        }
+        x_194_phi = x_240;
+        x_197_phi = x_196;
+        {
+          x_194 = x_194_phi;
+          x_197 = x_197_phi;
+          x_193_phi = x_194;
+          x_196_phi = x_197;
+        }
+      }
+      bool const x_242 = x_242_phi;
+      if (x_242) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_247 = false;
+  bool x_294 = false;
+  bool x_247_phi = false;
+  int x_250_phi = 0;
+  bool x_296_phi = false;
+  switch(0u) {
+    default: {
+      x_247_phi = false;
+      x_250_phi = 0;
+      while (true) {
+        int x_275 = 0;
+        int x_267 = 0;
+        bool x_248 = false;
+        int x_251 = 0;
+        bool x_248_phi = false;
+        int x_251_phi = 0;
+        x_247 = x_247_phi;
+        int const x_250 = x_250_phi;
+        x_296_phi = x_247;
+        if ((x_250 <= 4)) {
+        } else {
+          break;
+        }
+        int const x_256 = tree.arr[x_250].data;
+        if ((7 <= x_256)) {
+          bool x_294_phi = false;
+          int const x_269_save = x_250;
+          int const x_270 = tree.arr[x_269_save].leftIndex;
+          if ((x_270 == -1)) {
+            float const x_277 = x_8.injectionSwitch.y;
+            float const x_279 = x_8.injectionSwitch.x;
+            if ((x_277 < x_279)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_269_save].leftIndex = 4;
+            BST const tint_symbol_11 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_11;
+            while (true) {
+              x_294_phi = x_247;
+              if ((0 < int(x_277))) {
+              } else {
+                break;
+              }
+              x_294_phi = true;
+              break;
+            }
+            x_294 = x_294_phi;
+            x_296_phi = x_294;
+            if (x_294) {
+              break;
+            }
+          } else {
+            x_275 = tree.arr[x_269_save].leftIndex;
+            x_248_phi = x_247;
+            x_251_phi = x_275;
+            {
+              x_248 = x_248_phi;
+              x_251 = x_251_phi;
+              x_247_phi = x_248;
+              x_250_phi = x_251;
+            }
+            continue;
+          }
+        } else {
+          int const x_261_save = x_250;
+          int const x_262 = tree.arr[x_261_save].rightIndex;
+          if ((x_262 == -1)) {
+            tree.arr[x_261_save].rightIndex = 4;
+            BST const tint_symbol_12 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_12;
+            x_296_phi = true;
+            break;
+          } else {
+            x_267 = tree.arr[x_261_save].rightIndex;
+            x_248_phi = x_247;
+            x_251_phi = x_267;
+            {
+              x_248 = x_248_phi;
+              x_251 = x_251_phi;
+              x_247_phi = x_248;
+              x_250_phi = x_251;
+            }
+            continue;
+          }
+          return;
+        }
+        x_248_phi = x_294;
+        x_251_phi = x_250;
+        {
+          x_248 = x_248_phi;
+          x_251 = x_251_phi;
+          x_247_phi = x_248;
+          x_250_phi = x_251;
+        }
+      }
+      bool const x_296 = x_296_phi;
+      if (x_296) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_301 = false;
+  bool x_348 = false;
+  bool x_301_phi = false;
+  int x_304_phi = 0;
+  bool x_350_phi = false;
+  switch(0u) {
+    default: {
+      x_301_phi = false;
+      x_304_phi = 0;
+      while (true) {
+        int x_329 = 0;
+        int x_321 = 0;
+        bool x_302 = false;
+        int x_305 = 0;
+        bool x_302_phi = false;
+        int x_305_phi = 0;
+        x_301 = x_301_phi;
+        int const x_304 = x_304_phi;
+        x_350_phi = x_301;
+        if ((x_304 <= 5)) {
+        } else {
+          break;
+        }
+        int const x_310 = tree.arr[x_304].data;
+        if ((8 <= x_310)) {
+          bool x_348_phi = false;
+          int const x_323_save = x_304;
+          int const x_324 = tree.arr[x_323_save].leftIndex;
+          if ((x_324 == -1)) {
+            float const x_331 = x_8.injectionSwitch.y;
+            float const x_333 = x_8.injectionSwitch.x;
+            if ((x_331 < x_333)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_323_save].leftIndex = 5;
+            BST const tint_symbol_13 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_13;
+            while (true) {
+              x_348_phi = x_301;
+              if ((0 < int(x_331))) {
+              } else {
+                break;
+              }
+              x_348_phi = true;
+              break;
+            }
+            x_348 = x_348_phi;
+            x_350_phi = x_348;
+            if (x_348) {
+              break;
+            }
+          } else {
+            x_329 = tree.arr[x_323_save].leftIndex;
+            x_302_phi = x_301;
+            x_305_phi = x_329;
+            {
+              x_302 = x_302_phi;
+              x_305 = x_305_phi;
+              x_301_phi = x_302;
+              x_304_phi = x_305;
+            }
+            continue;
+          }
+        } else {
+          int const x_315_save = x_304;
+          int const x_316 = tree.arr[x_315_save].rightIndex;
+          if ((x_316 == -1)) {
+            tree.arr[x_315_save].rightIndex = 5;
+            BST const tint_symbol_14 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_14;
+            x_350_phi = true;
+            break;
+          } else {
+            x_321 = tree.arr[x_315_save].rightIndex;
+            x_302_phi = x_301;
+            x_305_phi = x_321;
+            {
+              x_302 = x_302_phi;
+              x_305 = x_305_phi;
+              x_301_phi = x_302;
+              x_304_phi = x_305;
+            }
+            continue;
+          }
+          return;
+        }
+        x_302_phi = x_348;
+        x_305_phi = x_304;
+        {
+          x_302 = x_302_phi;
+          x_305 = x_305_phi;
+          x_301_phi = x_302;
+          x_304_phi = x_305;
+        }
+      }
+      bool const x_350 = x_350_phi;
+      if (x_350) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_355 = false;
+  bool x_402 = false;
+  bool x_355_phi = false;
+  int x_358_phi = 0;
+  bool x_404_phi = false;
+  switch(0u) {
+    default: {
+      x_355_phi = false;
+      x_358_phi = 0;
+      while (true) {
+        int x_383 = 0;
+        int x_375 = 0;
+        bool x_356 = false;
+        int x_359 = 0;
+        bool x_356_phi = false;
+        int x_359_phi = 0;
+        x_355 = x_355_phi;
+        int const x_358 = x_358_phi;
+        x_404_phi = x_355;
+        if ((x_358 <= 6)) {
+        } else {
+          break;
+        }
+        int const x_364 = tree.arr[x_358].data;
+        if ((2 <= x_364)) {
+          bool x_402_phi = false;
+          int const x_377_save = x_358;
+          int const x_378 = tree.arr[x_377_save].leftIndex;
+          if ((x_378 == -1)) {
+            float const x_385 = x_8.injectionSwitch.y;
+            float const x_387 = x_8.injectionSwitch.x;
+            if ((x_385 < x_387)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_377_save].leftIndex = 6;
+            BST const tint_symbol_15 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_15;
+            while (true) {
+              x_402_phi = x_355;
+              if ((0 < int(x_385))) {
+              } else {
+                break;
+              }
+              x_402_phi = true;
+              break;
+            }
+            x_402 = x_402_phi;
+            x_404_phi = x_402;
+            if (x_402) {
+              break;
+            }
+          } else {
+            x_383 = tree.arr[x_377_save].leftIndex;
+            x_356_phi = x_355;
+            x_359_phi = x_383;
+            {
+              x_356 = x_356_phi;
+              x_359 = x_359_phi;
+              x_355_phi = x_356;
+              x_358_phi = x_359;
+            }
+            continue;
+          }
+        } else {
+          int const x_369_save = x_358;
+          int const x_370 = tree.arr[x_369_save].rightIndex;
+          if ((x_370 == -1)) {
+            tree.arr[x_369_save].rightIndex = 6;
+            BST const tint_symbol_16 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_16;
+            x_404_phi = true;
+            break;
+          } else {
+            x_375 = tree.arr[x_369_save].rightIndex;
+            x_356_phi = x_355;
+            x_359_phi = x_375;
+            {
+              x_356 = x_356_phi;
+              x_359 = x_359_phi;
+              x_355_phi = x_356;
+              x_358_phi = x_359;
+            }
+            continue;
+          }
+          return;
+        }
+        x_356_phi = x_402;
+        x_359_phi = x_358;
+        {
+          x_356 = x_356_phi;
+          x_359 = x_359_phi;
+          x_355_phi = x_356;
+          x_358_phi = x_359;
+        }
+      }
+      bool const x_404 = x_404_phi;
+      if (x_404) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_409 = false;
+  bool x_456 = false;
+  bool x_409_phi = false;
+  int x_412_phi = 0;
+  bool x_458_phi = false;
+  switch(0u) {
+    default: {
+      x_409_phi = false;
+      x_412_phi = 0;
+      while (true) {
+        int x_437 = 0;
+        int x_429 = 0;
+        bool x_410 = false;
+        int x_413 = 0;
+        bool x_410_phi = false;
+        int x_413_phi = 0;
+        x_409 = x_409_phi;
+        int const x_412 = x_412_phi;
+        x_458_phi = x_409;
+        if ((x_412 <= 7)) {
+        } else {
+          break;
+        }
+        int const x_418 = tree.arr[x_412].data;
+        if ((6 <= x_418)) {
+          bool x_456_phi = false;
+          int const x_431_save = x_412;
+          int const x_432 = tree.arr[x_431_save].leftIndex;
+          if ((x_432 == -1)) {
+            float const x_439 = x_8.injectionSwitch.y;
+            float const x_441 = x_8.injectionSwitch.x;
+            if ((x_439 < x_441)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_431_save].leftIndex = 7;
+            BST const tint_symbol_17 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_17;
+            while (true) {
+              x_456_phi = x_409;
+              if ((0 < int(x_439))) {
+              } else {
+                break;
+              }
+              x_456_phi = true;
+              break;
+            }
+            x_456 = x_456_phi;
+            x_458_phi = x_456;
+            if (x_456) {
+              break;
+            }
+          } else {
+            x_437 = tree.arr[x_431_save].leftIndex;
+            x_410_phi = x_409;
+            x_413_phi = x_437;
+            {
+              x_410 = x_410_phi;
+              x_413 = x_413_phi;
+              x_409_phi = x_410;
+              x_412_phi = x_413;
+            }
+            continue;
+          }
+        } else {
+          int const x_423_save = x_412;
+          int const x_424 = tree.arr[x_423_save].rightIndex;
+          if ((x_424 == -1)) {
+            tree.arr[x_423_save].rightIndex = 7;
+            BST const tint_symbol_18 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_18;
+            x_458_phi = true;
+            break;
+          } else {
+            x_429 = tree.arr[x_423_save].rightIndex;
+            x_410_phi = x_409;
+            x_413_phi = x_429;
+            {
+              x_410 = x_410_phi;
+              x_413 = x_413_phi;
+              x_409_phi = x_410;
+              x_412_phi = x_413;
+            }
+            continue;
+          }
+          return;
+        }
+        x_410_phi = x_456;
+        x_413_phi = x_412;
+        {
+          x_410 = x_410_phi;
+          x_413 = x_413_phi;
+          x_409_phi = x_410;
+          x_412_phi = x_413;
+        }
+      }
+      bool const x_458 = x_458_phi;
+      if (x_458) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_463 = false;
+  bool x_510 = false;
+  bool x_463_phi = false;
+  int x_466_phi = 0;
+  bool x_512_phi = false;
+  switch(0u) {
+    default: {
+      x_463_phi = false;
+      x_466_phi = 0;
+      while (true) {
+        int x_491 = 0;
+        int x_483 = 0;
+        bool x_464 = false;
+        int x_467 = 0;
+        bool x_464_phi = false;
+        int x_467_phi = 0;
+        x_463 = x_463_phi;
+        int const x_466 = x_466_phi;
+        x_512_phi = x_463;
+        if ((x_466 <= 8)) {
+        } else {
+          break;
+        }
+        int const x_472 = tree.arr[x_466].data;
+        if ((17 <= x_472)) {
+          bool x_510_phi = false;
+          int const x_485_save = x_466;
+          int const x_486 = tree.arr[x_485_save].leftIndex;
+          if ((x_486 == -1)) {
+            float const x_493 = x_8.injectionSwitch.y;
+            float const x_495 = x_8.injectionSwitch.x;
+            if ((x_493 < x_495)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_485_save].leftIndex = 8;
+            BST const tint_symbol_19 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_19;
+            while (true) {
+              x_510_phi = x_463;
+              if ((0 < int(x_493))) {
+              } else {
+                break;
+              }
+              x_510_phi = true;
+              break;
+            }
+            x_510 = x_510_phi;
+            x_512_phi = x_510;
+            if (x_510) {
+              break;
+            }
+          } else {
+            x_491 = tree.arr[x_485_save].leftIndex;
+            x_464_phi = x_463;
+            x_467_phi = x_491;
+            {
+              x_464 = x_464_phi;
+              x_467 = x_467_phi;
+              x_463_phi = x_464;
+              x_466_phi = x_467;
+            }
+            continue;
+          }
+        } else {
+          int const x_477_save = x_466;
+          int const x_478 = tree.arr[x_477_save].rightIndex;
+          if ((x_478 == -1)) {
+            tree.arr[x_477_save].rightIndex = 8;
+            BST const tint_symbol_20 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_20;
+            x_512_phi = true;
+            break;
+          } else {
+            x_483 = tree.arr[x_477_save].rightIndex;
+            x_464_phi = x_463;
+            x_467_phi = x_483;
+            {
+              x_464 = x_464_phi;
+              x_467 = x_467_phi;
+              x_463_phi = x_464;
+              x_466_phi = x_467;
+            }
+            continue;
+          }
+          return;
+        }
+        x_464_phi = x_510;
+        x_467_phi = x_466;
+        {
+          x_464 = x_464_phi;
+          x_467 = x_467_phi;
+          x_463_phi = x_464;
+          x_466_phi = x_467;
+        }
+      }
+      bool const x_512 = x_512_phi;
+      if (x_512) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_517 = false;
+  bool x_564 = false;
+  bool x_517_phi = false;
+  int x_520_phi = 0;
+  bool x_566_phi = false;
+  switch(0u) {
+    default: {
+      x_517_phi = false;
+      x_520_phi = 0;
+      while (true) {
+        int x_545 = 0;
+        int x_537 = 0;
+        bool x_518 = false;
+        int x_521 = 0;
+        bool x_518_phi = false;
+        int x_521_phi = 0;
+        x_517 = x_517_phi;
+        int const x_520 = x_520_phi;
+        x_566_phi = x_517;
+        if ((x_520 <= 9)) {
+        } else {
+          break;
+        }
+        int const x_526 = tree.arr[x_520].data;
+        if ((13 <= x_526)) {
+          bool x_564_phi = false;
+          int const x_539_save = x_520;
+          int const x_540 = tree.arr[x_539_save].leftIndex;
+          if ((x_540 == -1)) {
+            float const x_547 = x_8.injectionSwitch.y;
+            float const x_549 = x_8.injectionSwitch.x;
+            if ((x_547 < x_549)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_539_save].leftIndex = 9;
+            BST const tint_symbol_21 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_21;
+            while (true) {
+              x_564_phi = x_517;
+              if ((0 < int(x_547))) {
+              } else {
+                break;
+              }
+              x_564_phi = true;
+              break;
+            }
+            x_564 = x_564_phi;
+            x_566_phi = x_564;
+            if (x_564) {
+              break;
+            }
+          } else {
+            x_545 = tree.arr[x_539_save].leftIndex;
+            x_518_phi = x_517;
+            x_521_phi = x_545;
+            {
+              x_518 = x_518_phi;
+              x_521 = x_521_phi;
+              x_517_phi = x_518;
+              x_520_phi = x_521;
+            }
+            continue;
+          }
+        } else {
+          int const x_531_save = x_520;
+          int const x_532 = tree.arr[x_531_save].rightIndex;
+          if ((x_532 == -1)) {
+            tree.arr[x_531_save].rightIndex = 9;
+            BST const tint_symbol_22 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_22;
+            x_566_phi = true;
+            break;
+          } else {
+            x_537 = tree.arr[x_531_save].rightIndex;
+            x_518_phi = x_517;
+            x_521_phi = x_537;
+            {
+              x_518 = x_518_phi;
+              x_521 = x_521_phi;
+              x_517_phi = x_518;
+              x_520_phi = x_521;
+            }
+            continue;
+          }
+          return;
+        }
+        x_518_phi = x_564;
+        x_521_phi = x_520;
+        {
+          x_518 = x_518_phi;
+          x_521 = x_521_phi;
+          x_517_phi = x_518;
+          x_520_phi = x_521;
+        }
+      }
+      bool const x_566 = x_566_phi;
+      if (x_566) {
+        break;
+      }
+      break;
+    }
+  }
+  x_569_phi = 0;
+  x_572_phi = 0;
+  x_574_phi = 0;
+  while (true) {
+    int x_597 = 0;
+    int x_607 = 0;
+    int x_612 = 0;
+    int x_575 = 0;
+    int x_570_phi = 0;
+    int x_573_phi = 0;
+    int const x_569 = x_569_phi;
+    x_572 = x_572_phi;
+    int const x_574 = x_574_phi;
+    if ((x_574 < 20)) {
+    } else {
+      break;
+    }
+    int x_582_phi = 0;
+    int x_597_phi = 0;
+    bool x_598_phi = false;
+    switch(0u) {
+      default: {
+        x_582_phi = 0;
+        while (true) {
+          int const x_582 = x_582_phi;
+          x_597_phi = x_569;
+          x_598_phi = false;
+          if ((x_582 != -1)) {
+          } else {
+            break;
+          }
+          BST const x_589 = tree.arr[x_582];
+          int const x_590 = x_589.data;
+          int const x_591 = x_589.leftIndex;
+          int const x_592 = x_589.rightIndex;
+          if ((x_590 == x_574)) {
+            x_597_phi = x_574;
+            x_598_phi = true;
+            break;
+          }
+          {
+            x_582_phi = select(x_591, x_592, (x_574 > x_590));
+          }
+        }
+        x_597 = x_597_phi;
+        bool const x_598 = x_598_phi;
+        x_570_phi = x_597;
+        if (x_598) {
+          break;
+        }
+        x_570_phi = -1;
+        break;
+      }
+    }
+    int x_570 = 0;
+    int x_606 = 0;
+    int x_611 = 0;
+    int x_607_phi = 0;
+    int x_612_phi = 0;
+    x_570 = x_570_phi;
+    switch(x_574) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_607_phi = x_572;
+        if ((x_570 == as_type<int>(x_574))) {
+          x_606 = as_type<int>((x_572 + as_type<int>(1)));
+          x_607_phi = x_606;
+        }
+        x_607 = x_607_phi;
+        x_573_phi = x_607;
+        break;
+      }
+      default: {
+        x_612_phi = x_572;
+        if ((x_570 == as_type<int>(-1))) {
+          x_611 = as_type<int>((x_572 + as_type<int>(1)));
+          x_612_phi = x_611;
+        }
+        x_612 = x_612_phi;
+        x_573_phi = x_612;
+        break;
+      }
+    }
+    int const x_573 = x_573_phi;
+    {
+      x_575 = (x_574 + 1);
+      x_569_phi = x_570;
+      x_572_phi = x_573;
+      x_574_phi = x_575;
+    }
+  }
+  if ((x_572 == as_type<int>(20))) {
+    *(tint_symbol_25) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_25) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_26 = 0.0f;
+  thread float4 tint_symbol_27 = 0.0f;
+  tint_symbol_26 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_26), &(tint_symbol_27));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_27};
+  tint_symbol_2 const tint_symbol_23 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_23;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..41d75a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.spvasm
@@ -0,0 +1,1920 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 1006
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %x_67 "x_67"
+               OpName %x_114 "x_114"
+               OpName %x_572 "x_572"
+               OpName %x_67_phi "x_67_phi"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_116_phi "x_116_phi"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_569_phi "x_569_phi"
+               OpName %x_572_phi "x_572_phi"
+               OpName %x_574_phi "x_574_phi"
+               OpName %x_95 "x_95"
+               OpName %x_87 "x_87"
+               OpName %x_68 "x_68"
+               OpName %x_71 "x_71"
+               OpName %x_68_phi "x_68_phi"
+               OpName %x_71_phi "x_71_phi"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_133 "x_133"
+               OpName %x_120 "x_120"
+               OpName %x_134_phi "x_134_phi"
+               OpName %x_139 "x_139"
+               OpName %x_186 "x_186"
+               OpName %x_139_phi "x_139_phi"
+               OpName %x_142_phi "x_142_phi"
+               OpName %x_188_phi "x_188_phi"
+               OpName %x_167 "x_167"
+               OpName %x_159 "x_159"
+               OpName %x_140 "x_140"
+               OpName %x_143 "x_143"
+               OpName %x_140_phi "x_140_phi"
+               OpName %x_143_phi "x_143_phi"
+               OpName %x_186_phi "x_186_phi"
+               OpName %x_193 "x_193"
+               OpName %x_240 "x_240"
+               OpName %x_193_phi "x_193_phi"
+               OpName %x_196_phi "x_196_phi"
+               OpName %x_242_phi "x_242_phi"
+               OpName %x_221 "x_221"
+               OpName %x_213 "x_213"
+               OpName %x_194 "x_194"
+               OpName %x_197 "x_197"
+               OpName %x_194_phi "x_194_phi"
+               OpName %x_197_phi "x_197_phi"
+               OpName %x_240_phi "x_240_phi"
+               OpName %x_247 "x_247"
+               OpName %x_294 "x_294"
+               OpName %x_247_phi "x_247_phi"
+               OpName %x_250_phi "x_250_phi"
+               OpName %x_296_phi "x_296_phi"
+               OpName %x_275 "x_275"
+               OpName %x_267 "x_267"
+               OpName %x_248 "x_248"
+               OpName %x_251 "x_251"
+               OpName %x_248_phi "x_248_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_294_phi "x_294_phi"
+               OpName %x_301 "x_301"
+               OpName %x_348 "x_348"
+               OpName %x_301_phi "x_301_phi"
+               OpName %x_304_phi "x_304_phi"
+               OpName %x_350_phi "x_350_phi"
+               OpName %x_329 "x_329"
+               OpName %x_321 "x_321"
+               OpName %x_302 "x_302"
+               OpName %x_305 "x_305"
+               OpName %x_302_phi "x_302_phi"
+               OpName %x_305_phi "x_305_phi"
+               OpName %x_348_phi "x_348_phi"
+               OpName %x_355 "x_355"
+               OpName %x_402 "x_402"
+               OpName %x_355_phi "x_355_phi"
+               OpName %x_358_phi "x_358_phi"
+               OpName %x_404_phi "x_404_phi"
+               OpName %x_383 "x_383"
+               OpName %x_375 "x_375"
+               OpName %x_356 "x_356"
+               OpName %x_359 "x_359"
+               OpName %x_356_phi "x_356_phi"
+               OpName %x_359_phi "x_359_phi"
+               OpName %x_402_phi "x_402_phi"
+               OpName %x_409 "x_409"
+               OpName %x_456 "x_456"
+               OpName %x_409_phi "x_409_phi"
+               OpName %x_412_phi "x_412_phi"
+               OpName %x_458_phi "x_458_phi"
+               OpName %x_437 "x_437"
+               OpName %x_429 "x_429"
+               OpName %x_410 "x_410"
+               OpName %x_413 "x_413"
+               OpName %x_410_phi "x_410_phi"
+               OpName %x_413_phi "x_413_phi"
+               OpName %x_456_phi "x_456_phi"
+               OpName %x_463 "x_463"
+               OpName %x_510 "x_510"
+               OpName %x_463_phi "x_463_phi"
+               OpName %x_466_phi "x_466_phi"
+               OpName %x_512_phi "x_512_phi"
+               OpName %x_491 "x_491"
+               OpName %x_483 "x_483"
+               OpName %x_464 "x_464"
+               OpName %x_467 "x_467"
+               OpName %x_464_phi "x_464_phi"
+               OpName %x_467_phi "x_467_phi"
+               OpName %x_510_phi "x_510_phi"
+               OpName %x_517 "x_517"
+               OpName %x_564 "x_564"
+               OpName %x_517_phi "x_517_phi"
+               OpName %x_520_phi "x_520_phi"
+               OpName %x_566_phi "x_566_phi"
+               OpName %x_545 "x_545"
+               OpName %x_537 "x_537"
+               OpName %x_518 "x_518"
+               OpName %x_521 "x_521"
+               OpName %x_518_phi "x_518_phi"
+               OpName %x_521_phi "x_521_phi"
+               OpName %x_564_phi "x_564_phi"
+               OpName %x_597 "x_597"
+               OpName %x_607 "x_607"
+               OpName %x_612 "x_612"
+               OpName %x_575 "x_575"
+               OpName %x_570_phi "x_570_phi"
+               OpName %x_573_phi "x_573_phi"
+               OpName %x_582_phi "x_582_phi"
+               OpName %x_597_phi "x_597_phi"
+               OpName %x_598_phi "x_598_phi"
+               OpName %x_570 "x_570"
+               OpName %x_606 "x_606"
+               OpName %x_611 "x_611"
+               OpName %x_607_phi "x_607_phi"
+               OpName %x_612_phi "x_612_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %26 = OpConstantNull %_arr_BST_uint_10
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+%_ptr_Function_BST = OpTypePointer Function %BST
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+         %47 = OpConstantComposite %BST %int_9 %int_n1 %int_n1
+     %uint_0 = OpConstant %uint 0
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+         %99 = OpConstantComposite %BST %int_5 %int_n1 %int_n1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+     %int_12 = OpConstant %int 12
+        %218 = OpConstantComposite %BST %int_12 %int_n1 %int_n1
+      %int_3 = OpConstant %int 3
+     %int_15 = OpConstant %int 15
+        %312 = OpConstantComposite %BST %int_15 %int_n1 %int_n1
+      %int_4 = OpConstant %int 4
+      %int_7 = OpConstant %int 7
+        %404 = OpConstantComposite %BST %int_7 %int_n1 %int_n1
+      %int_8 = OpConstant %int 8
+        %495 = OpConstantComposite %BST %int_8 %int_n1 %int_n1
+      %int_6 = OpConstant %int 6
+        %586 = OpConstantComposite %BST %int_2 %int_n1 %int_n1
+        %676 = OpConstantComposite %BST %int_6 %int_n1 %int_n1
+     %int_17 = OpConstant %int 17
+        %767 = OpConstantComposite %BST %int_17 %int_n1 %int_n1
+     %int_13 = OpConstant %int 13
+        %858 = OpConstantComposite %BST %int_13 %int_n1 %int_n1
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+        %991 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %992 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %993 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %tree = OpVariable %_ptr_Function__arr_BST_uint_10 Function %26
+       %x_67 = OpVariable %_ptr_Function_bool Function %30
+      %x_114 = OpVariable %_ptr_Function_bool Function %30
+      %x_572 = OpVariable %_ptr_Function_int Function %34
+   %x_67_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_70_phi = OpVariable %_ptr_Function_int Function %34
+  %x_116_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_119_phi = OpVariable %_ptr_Function_int Function %34
+  %x_569_phi = OpVariable %_ptr_Function_int Function %34
+  %x_572_phi = OpVariable %_ptr_Function_int Function %34
+  %x_574_phi = OpVariable %_ptr_Function_int Function %34
+       %x_95 = OpVariable %_ptr_Function_int Function %34
+       %x_87 = OpVariable %_ptr_Function_int Function %34
+       %x_68 = OpVariable %_ptr_Function_bool Function %30
+       %x_71 = OpVariable %_ptr_Function_int Function %34
+   %x_68_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_71_phi = OpVariable %_ptr_Function_int Function %34
+  %x_114_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_133 = OpVariable %_ptr_Function_bool Function %30
+      %x_120 = OpVariable %_ptr_Function_int Function %34
+  %x_134_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_139 = OpVariable %_ptr_Function_bool Function %30
+      %x_186 = OpVariable %_ptr_Function_bool Function %30
+  %x_139_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_142_phi = OpVariable %_ptr_Function_int Function %34
+  %x_188_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_167 = OpVariable %_ptr_Function_int Function %34
+      %x_159 = OpVariable %_ptr_Function_int Function %34
+      %x_140 = OpVariable %_ptr_Function_bool Function %30
+      %x_143 = OpVariable %_ptr_Function_int Function %34
+  %x_140_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_143_phi = OpVariable %_ptr_Function_int Function %34
+  %x_186_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_193 = OpVariable %_ptr_Function_bool Function %30
+      %x_240 = OpVariable %_ptr_Function_bool Function %30
+  %x_193_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_196_phi = OpVariable %_ptr_Function_int Function %34
+  %x_242_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_221 = OpVariable %_ptr_Function_int Function %34
+      %x_213 = OpVariable %_ptr_Function_int Function %34
+      %x_194 = OpVariable %_ptr_Function_bool Function %30
+      %x_197 = OpVariable %_ptr_Function_int Function %34
+  %x_194_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_197_phi = OpVariable %_ptr_Function_int Function %34
+  %x_240_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_247 = OpVariable %_ptr_Function_bool Function %30
+      %x_294 = OpVariable %_ptr_Function_bool Function %30
+  %x_247_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_250_phi = OpVariable %_ptr_Function_int Function %34
+  %x_296_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_275 = OpVariable %_ptr_Function_int Function %34
+      %x_267 = OpVariable %_ptr_Function_int Function %34
+      %x_248 = OpVariable %_ptr_Function_bool Function %30
+      %x_251 = OpVariable %_ptr_Function_int Function %34
+  %x_248_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_251_phi = OpVariable %_ptr_Function_int Function %34
+  %x_294_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_301 = OpVariable %_ptr_Function_bool Function %30
+      %x_348 = OpVariable %_ptr_Function_bool Function %30
+  %x_301_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_304_phi = OpVariable %_ptr_Function_int Function %34
+  %x_350_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_329 = OpVariable %_ptr_Function_int Function %34
+      %x_321 = OpVariable %_ptr_Function_int Function %34
+      %x_302 = OpVariable %_ptr_Function_bool Function %30
+      %x_305 = OpVariable %_ptr_Function_int Function %34
+  %x_302_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_305_phi = OpVariable %_ptr_Function_int Function %34
+  %x_348_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_355 = OpVariable %_ptr_Function_bool Function %30
+      %x_402 = OpVariable %_ptr_Function_bool Function %30
+  %x_355_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_358_phi = OpVariable %_ptr_Function_int Function %34
+  %x_404_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_383 = OpVariable %_ptr_Function_int Function %34
+      %x_375 = OpVariable %_ptr_Function_int Function %34
+      %x_356 = OpVariable %_ptr_Function_bool Function %30
+      %x_359 = OpVariable %_ptr_Function_int Function %34
+  %x_356_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_359_phi = OpVariable %_ptr_Function_int Function %34
+  %x_402_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_409 = OpVariable %_ptr_Function_bool Function %30
+      %x_456 = OpVariable %_ptr_Function_bool Function %30
+  %x_409_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_412_phi = OpVariable %_ptr_Function_int Function %34
+  %x_458_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_437 = OpVariable %_ptr_Function_int Function %34
+      %x_429 = OpVariable %_ptr_Function_int Function %34
+      %x_410 = OpVariable %_ptr_Function_bool Function %30
+      %x_413 = OpVariable %_ptr_Function_int Function %34
+  %x_410_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_413_phi = OpVariable %_ptr_Function_int Function %34
+  %x_456_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_463 = OpVariable %_ptr_Function_bool Function %30
+      %x_510 = OpVariable %_ptr_Function_bool Function %30
+  %x_463_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_466_phi = OpVariable %_ptr_Function_int Function %34
+  %x_512_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_491 = OpVariable %_ptr_Function_int Function %34
+      %x_483 = OpVariable %_ptr_Function_int Function %34
+      %x_464 = OpVariable %_ptr_Function_bool Function %30
+      %x_467 = OpVariable %_ptr_Function_int Function %34
+  %x_464_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_467_phi = OpVariable %_ptr_Function_int Function %34
+  %x_510_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_517 = OpVariable %_ptr_Function_bool Function %30
+      %x_564 = OpVariable %_ptr_Function_bool Function %30
+  %x_517_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_520_phi = OpVariable %_ptr_Function_int Function %34
+  %x_566_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_545 = OpVariable %_ptr_Function_int Function %34
+      %x_537 = OpVariable %_ptr_Function_int Function %34
+      %x_518 = OpVariable %_ptr_Function_bool Function %30
+      %x_521 = OpVariable %_ptr_Function_int Function %34
+  %x_518_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_521_phi = OpVariable %_ptr_Function_int Function %34
+  %x_564_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_597 = OpVariable %_ptr_Function_int Function %34
+      %x_607 = OpVariable %_ptr_Function_int Function %34
+      %x_612 = OpVariable %_ptr_Function_int Function %34
+      %x_575 = OpVariable %_ptr_Function_int Function %34
+  %x_570_phi = OpVariable %_ptr_Function_int Function %34
+  %x_573_phi = OpVariable %_ptr_Function_int Function %34
+  %x_582_phi = OpVariable %_ptr_Function_int Function %34
+  %x_597_phi = OpVariable %_ptr_Function_int Function %34
+  %x_598_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_570 = OpVariable %_ptr_Function_int Function %34
+      %x_606 = OpVariable %_ptr_Function_int Function %34
+      %x_611 = OpVariable %_ptr_Function_int Function %34
+  %x_607_phi = OpVariable %_ptr_Function_int Function %34
+  %x_612_phi = OpVariable %_ptr_Function_int Function %34
+         %44 = OpAccessChain %_ptr_Function_BST %tree %int_0
+               OpStore %44 %47
+               OpSelectionMerge %48 None
+               OpSwitch %uint_0 %50
+         %50 = OpLabel
+               OpStore %x_67_phi %false
+               OpStore %x_70_phi %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %62 = OpLoad %bool %x_67_phi
+               OpStore %x_67 %62
+         %63 = OpLoad %int %x_70_phi
+         %64 = OpLoad %bool %x_67
+               OpStore %x_116_phi %64
+         %66 = OpSLessThanEqual %bool %63 %int_1
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %53
+         %67 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_int %tree %63 %uint_0
+         %71 = OpLoad %int %70
+         %73 = OpSLessThanEqual %bool %int_5 %71
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_int %tree %63 %uint_1
+         %80 = OpLoad %int %79
+         %81 = OpIEqual %bool %80 %int_n1
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %89 = OpLoad %float %88
+         %90 = OpFOrdLessThan %bool %87 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+               OpLoopMerge %94 %95 None
+               OpBranch %96
+         %96 = OpLabel
+               OpKill
+         %95 = OpLabel
+               OpBranch %93
+         %94 = OpLabel
+               OpReturn
+         %91 = OpLabel
+         %97 = OpAccessChain %_ptr_Function_int %tree %63 %uint_1
+               OpStore %97 %int_1
+         %98 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %98 %99
+               OpBranch %100
+        %100 = OpLabel
+               OpLoopMerge %101 %102 None
+               OpBranch %103
+        %103 = OpLabel
+        %104 = OpLoad %bool %x_67
+               OpStore %x_114_phi %104
+        %105 = OpConvertFToS %int %87
+        %106 = OpSLessThan %bool %int_0 %105
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %109
+        %108 = OpLabel
+               OpBranch %107
+        %109 = OpLabel
+               OpBranch %101
+        %107 = OpLabel
+               OpStore %x_114_phi %true
+               OpBranch %101
+        %102 = OpLabel
+               OpBranch %100
+        %101 = OpLabel
+        %111 = OpLoad %bool %x_114_phi
+               OpStore %x_114 %111
+        %112 = OpLoad %bool %x_114
+               OpStore %x_116_phi %112
+        %113 = OpLoad %bool %x_114
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+               OpBranch %53
+        %114 = OpLabel
+               OpBranch %82
+         %84 = OpLabel
+        %116 = OpAccessChain %_ptr_Function_int %tree %63 %uint_1
+        %117 = OpLoad %int %116
+               OpStore %x_95 %117
+        %118 = OpLoad %bool %x_67
+               OpStore %x_68_phi %118
+        %119 = OpLoad %int %x_95
+               OpStore %x_71_phi %119
+               OpBranch %54
+         %82 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+        %121 = OpAccessChain %_ptr_Function_int %tree %63 %uint_2
+        %122 = OpLoad %int %121
+        %123 = OpIEqual %bool %122 %int_n1
+               OpSelectionMerge %124 None
+               OpBranchConditional %123 %125 %126
+        %125 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %tree %63 %uint_2
+               OpStore %127 %int_1
+        %128 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %128 %99
+               OpStore %x_116_phi %true
+               OpBranch %53
+        %126 = OpLabel
+        %129 = OpAccessChain %_ptr_Function_int %tree %63 %uint_2
+        %130 = OpLoad %int %129
+               OpStore %x_87 %130
+        %131 = OpLoad %bool %x_67
+               OpStore %x_68_phi %131
+        %132 = OpLoad %int %x_87
+               OpStore %x_71_phi %132
+               OpBranch %54
+        %124 = OpLabel
+               OpReturn
+         %74 = OpLabel
+        %133 = OpLoad %bool %x_114
+               OpStore %x_68_phi %133
+               OpStore %x_71_phi %63
+               OpBranch %54
+         %54 = OpLabel
+        %134 = OpLoad %bool %x_68_phi
+               OpStore %x_68 %134
+        %135 = OpLoad %int %x_71_phi
+               OpStore %x_71 %135
+        %136 = OpLoad %bool %x_68
+               OpStore %x_67_phi %136
+        %137 = OpLoad %int %x_71
+               OpStore %x_70_phi %137
+               OpBranch %52
+         %53 = OpLabel
+        %138 = OpLoad %bool %x_116_phi
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+               OpBranch %48
+        %139 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpStore %x_119_phi %int_0
+               OpBranch %141
+        %141 = OpLabel
+               OpLoopMerge %142 %143 None
+               OpBranch %144
+        %144 = OpLabel
+        %148 = OpLoad %int %x_119_phi
+        %150 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %151 = OpLoad %float %150
+        %153 = OpFOrdLessThan %bool %151 %float_0
+               OpStore %x_134_phi %153
+        %154 = OpLogicalNot %bool %153
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %158 = OpLoad %float %157
+        %159 = OpConvertFToS %int %158
+        %160 = OpINotEqual %bool %148 %159
+               OpStore %x_133 %160
+        %161 = OpLoad %bool %x_133
+               OpStore %x_134_phi %161
+               OpBranch %155
+        %155 = OpLabel
+        %162 = OpLoad %bool %x_134_phi
+               OpSelectionMerge %163 None
+               OpBranchConditional %162 %164 %165
+        %164 = OpLabel
+               OpBranch %163
+        %165 = OpLabel
+               OpBranch %142
+        %163 = OpLabel
+               OpSelectionMerge %171 None
+               OpSwitch %uint_0 %172
+        %172 = OpLabel
+               OpStore %x_139_phi %false
+               OpStore %x_142_phi %int_0
+               OpBranch %173
+        %173 = OpLabel
+               OpLoopMerge %174 %175 None
+               OpBranch %176
+        %176 = OpLabel
+        %183 = OpLoad %bool %x_139_phi
+               OpStore %x_139 %183
+        %184 = OpLoad %int %x_142_phi
+        %185 = OpLoad %bool %x_139
+               OpStore %x_188_phi %185
+        %187 = OpSLessThanEqual %bool %184 %int_2
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %190
+        %189 = OpLabel
+               OpBranch %188
+        %190 = OpLabel
+               OpBranch %174
+        %188 = OpLabel
+        %191 = OpAccessChain %_ptr_Function_int %tree %184 %uint_0
+        %192 = OpLoad %int %191
+        %194 = OpSLessThanEqual %bool %int_12 %192
+               OpSelectionMerge %195 None
+               OpBranchConditional %194 %196 %197
+        %196 = OpLabel
+        %199 = OpAccessChain %_ptr_Function_int %tree %184 %uint_1
+        %200 = OpLoad %int %199
+        %201 = OpIEqual %bool %200 %int_n1
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %204
+        %203 = OpLabel
+        %205 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %206 = OpLoad %float %205
+        %207 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %208 = OpLoad %float %207
+        %209 = OpFOrdLessThan %bool %206 %208
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %210
+        %211 = OpLabel
+               OpBranch %212
+        %212 = OpLabel
+               OpLoopMerge %213 %214 None
+               OpBranch %215
+        %215 = OpLabel
+               OpKill
+        %214 = OpLabel
+               OpBranch %212
+        %213 = OpLabel
+               OpReturn
+        %210 = OpLabel
+        %216 = OpAccessChain %_ptr_Function_int %tree %184 %uint_1
+               OpStore %216 %int_2
+        %217 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %217 %218
+               OpBranch %219
+        %219 = OpLabel
+               OpLoopMerge %220 %221 None
+               OpBranch %222
+        %222 = OpLabel
+        %223 = OpLoad %bool %x_139
+               OpStore %x_186_phi %223
+        %224 = OpConvertFToS %int %206
+        %225 = OpSLessThan %bool %int_0 %224
+               OpSelectionMerge %226 None
+               OpBranchConditional %225 %227 %228
+        %227 = OpLabel
+               OpBranch %226
+        %228 = OpLabel
+               OpBranch %220
+        %226 = OpLabel
+               OpStore %x_186_phi %true
+               OpBranch %220
+        %221 = OpLabel
+               OpBranch %219
+        %220 = OpLabel
+        %229 = OpLoad %bool %x_186_phi
+               OpStore %x_186 %229
+        %230 = OpLoad %bool %x_186
+               OpStore %x_188_phi %230
+        %231 = OpLoad %bool %x_186
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %232
+        %233 = OpLabel
+               OpBranch %174
+        %232 = OpLabel
+               OpBranch %202
+        %204 = OpLabel
+        %234 = OpAccessChain %_ptr_Function_int %tree %184 %uint_1
+        %235 = OpLoad %int %234
+               OpStore %x_167 %235
+        %236 = OpLoad %bool %x_139
+               OpStore %x_140_phi %236
+        %237 = OpLoad %int %x_167
+               OpStore %x_143_phi %237
+               OpBranch %175
+        %202 = OpLabel
+               OpBranch %195
+        %197 = OpLabel
+        %238 = OpAccessChain %_ptr_Function_int %tree %184 %uint_2
+        %239 = OpLoad %int %238
+        %240 = OpIEqual %bool %239 %int_n1
+               OpSelectionMerge %241 None
+               OpBranchConditional %240 %242 %243
+        %242 = OpLabel
+        %244 = OpAccessChain %_ptr_Function_int %tree %184 %uint_2
+               OpStore %244 %int_2
+        %245 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %245 %218
+               OpStore %x_188_phi %true
+               OpBranch %174
+        %243 = OpLabel
+        %246 = OpAccessChain %_ptr_Function_int %tree %184 %uint_2
+        %247 = OpLoad %int %246
+               OpStore %x_159 %247
+        %248 = OpLoad %bool %x_139
+               OpStore %x_140_phi %248
+        %249 = OpLoad %int %x_159
+               OpStore %x_143_phi %249
+               OpBranch %175
+        %241 = OpLabel
+               OpReturn
+        %195 = OpLabel
+        %250 = OpLoad %bool %x_186
+               OpStore %x_140_phi %250
+               OpStore %x_143_phi %184
+               OpBranch %175
+        %175 = OpLabel
+        %251 = OpLoad %bool %x_140_phi
+               OpStore %x_140 %251
+        %252 = OpLoad %int %x_143_phi
+               OpStore %x_143 %252
+        %253 = OpLoad %bool %x_140
+               OpStore %x_139_phi %253
+        %254 = OpLoad %int %x_143
+               OpStore %x_142_phi %254
+               OpBranch %173
+        %174 = OpLabel
+        %255 = OpLoad %bool %x_188_phi
+               OpSelectionMerge %256 None
+               OpBranchConditional %255 %257 %256
+        %257 = OpLabel
+               OpBranch %171
+        %256 = OpLabel
+               OpBranch %171
+        %171 = OpLabel
+               OpBranch %143
+        %143 = OpLabel
+        %258 = OpIAdd %int %148 %int_1
+               OpStore %x_120 %258
+        %259 = OpLoad %int %x_120
+               OpStore %x_119_phi %259
+               OpBranch %141
+        %142 = OpLabel
+               OpSelectionMerge %265 None
+               OpSwitch %uint_0 %266
+        %266 = OpLabel
+               OpStore %x_193_phi %false
+               OpStore %x_196_phi %int_0
+               OpBranch %267
+        %267 = OpLabel
+               OpLoopMerge %268 %269 None
+               OpBranch %270
+        %270 = OpLabel
+        %277 = OpLoad %bool %x_193_phi
+               OpStore %x_193 %277
+        %278 = OpLoad %int %x_196_phi
+        %279 = OpLoad %bool %x_193
+               OpStore %x_242_phi %279
+        %281 = OpSLessThanEqual %bool %278 %int_3
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %284
+        %283 = OpLabel
+               OpBranch %282
+        %284 = OpLabel
+               OpBranch %268
+        %282 = OpLabel
+        %285 = OpAccessChain %_ptr_Function_int %tree %278 %uint_0
+        %286 = OpLoad %int %285
+        %288 = OpSLessThanEqual %bool %int_15 %286
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %291
+        %290 = OpLabel
+        %293 = OpAccessChain %_ptr_Function_int %tree %278 %uint_1
+        %294 = OpLoad %int %293
+        %295 = OpIEqual %bool %294 %int_n1
+               OpSelectionMerge %296 None
+               OpBranchConditional %295 %297 %298
+        %297 = OpLabel
+        %299 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %300 = OpLoad %float %299
+        %301 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %302 = OpLoad %float %301
+        %303 = OpFOrdLessThan %bool %300 %302
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %304
+        %305 = OpLabel
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+               OpKill
+        %308 = OpLabel
+               OpBranch %306
+        %307 = OpLabel
+               OpReturn
+        %304 = OpLabel
+        %310 = OpAccessChain %_ptr_Function_int %tree %278 %uint_1
+               OpStore %310 %int_3
+        %311 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %311 %312
+               OpBranch %313
+        %313 = OpLabel
+               OpLoopMerge %314 %315 None
+               OpBranch %316
+        %316 = OpLabel
+        %317 = OpLoad %bool %x_193
+               OpStore %x_240_phi %317
+        %318 = OpConvertFToS %int %300
+        %319 = OpSLessThan %bool %int_0 %318
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %322
+        %321 = OpLabel
+               OpBranch %320
+        %322 = OpLabel
+               OpBranch %314
+        %320 = OpLabel
+               OpStore %x_240_phi %true
+               OpBranch %314
+        %315 = OpLabel
+               OpBranch %313
+        %314 = OpLabel
+        %323 = OpLoad %bool %x_240_phi
+               OpStore %x_240 %323
+        %324 = OpLoad %bool %x_240
+               OpStore %x_242_phi %324
+        %325 = OpLoad %bool %x_240
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %326
+        %327 = OpLabel
+               OpBranch %268
+        %326 = OpLabel
+               OpBranch %296
+        %298 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_int %tree %278 %uint_1
+        %329 = OpLoad %int %328
+               OpStore %x_221 %329
+        %330 = OpLoad %bool %x_193
+               OpStore %x_194_phi %330
+        %331 = OpLoad %int %x_221
+               OpStore %x_197_phi %331
+               OpBranch %269
+        %296 = OpLabel
+               OpBranch %289
+        %291 = OpLabel
+        %332 = OpAccessChain %_ptr_Function_int %tree %278 %uint_2
+        %333 = OpLoad %int %332
+        %334 = OpIEqual %bool %333 %int_n1
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %337
+        %336 = OpLabel
+        %338 = OpAccessChain %_ptr_Function_int %tree %278 %uint_2
+               OpStore %338 %int_3
+        %339 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %339 %312
+               OpStore %x_242_phi %true
+               OpBranch %268
+        %337 = OpLabel
+        %340 = OpAccessChain %_ptr_Function_int %tree %278 %uint_2
+        %341 = OpLoad %int %340
+               OpStore %x_213 %341
+        %342 = OpLoad %bool %x_193
+               OpStore %x_194_phi %342
+        %343 = OpLoad %int %x_213
+               OpStore %x_197_phi %343
+               OpBranch %269
+        %335 = OpLabel
+               OpReturn
+        %289 = OpLabel
+        %344 = OpLoad %bool %x_240
+               OpStore %x_194_phi %344
+               OpStore %x_197_phi %278
+               OpBranch %269
+        %269 = OpLabel
+        %345 = OpLoad %bool %x_194_phi
+               OpStore %x_194 %345
+        %346 = OpLoad %int %x_197_phi
+               OpStore %x_197 %346
+        %347 = OpLoad %bool %x_194
+               OpStore %x_193_phi %347
+        %348 = OpLoad %int %x_197
+               OpStore %x_196_phi %348
+               OpBranch %267
+        %268 = OpLabel
+        %349 = OpLoad %bool %x_242_phi
+               OpSelectionMerge %350 None
+               OpBranchConditional %349 %351 %350
+        %351 = OpLabel
+               OpBranch %265
+        %350 = OpLabel
+               OpBranch %265
+        %265 = OpLabel
+               OpSelectionMerge %357 None
+               OpSwitch %uint_0 %358
+        %358 = OpLabel
+               OpStore %x_247_phi %false
+               OpStore %x_250_phi %int_0
+               OpBranch %359
+        %359 = OpLabel
+               OpLoopMerge %360 %361 None
+               OpBranch %362
+        %362 = OpLabel
+        %369 = OpLoad %bool %x_247_phi
+               OpStore %x_247 %369
+        %370 = OpLoad %int %x_250_phi
+        %371 = OpLoad %bool %x_247
+               OpStore %x_296_phi %371
+        %373 = OpSLessThanEqual %bool %370 %int_4
+               OpSelectionMerge %374 None
+               OpBranchConditional %373 %375 %376
+        %375 = OpLabel
+               OpBranch %374
+        %376 = OpLabel
+               OpBranch %360
+        %374 = OpLabel
+        %377 = OpAccessChain %_ptr_Function_int %tree %370 %uint_0
+        %378 = OpLoad %int %377
+        %380 = OpSLessThanEqual %bool %int_7 %378
+               OpSelectionMerge %381 None
+               OpBranchConditional %380 %382 %383
+        %382 = OpLabel
+        %385 = OpAccessChain %_ptr_Function_int %tree %370 %uint_1
+        %386 = OpLoad %int %385
+        %387 = OpIEqual %bool %386 %int_n1
+               OpSelectionMerge %388 None
+               OpBranchConditional %387 %389 %390
+        %389 = OpLabel
+        %391 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %392 = OpLoad %float %391
+        %393 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %394 = OpLoad %float %393
+        %395 = OpFOrdLessThan %bool %392 %394
+               OpSelectionMerge %396 None
+               OpBranchConditional %395 %397 %396
+        %397 = OpLabel
+               OpBranch %398
+        %398 = OpLabel
+               OpLoopMerge %399 %400 None
+               OpBranch %401
+        %401 = OpLabel
+               OpKill
+        %400 = OpLabel
+               OpBranch %398
+        %399 = OpLabel
+               OpReturn
+        %396 = OpLabel
+        %402 = OpAccessChain %_ptr_Function_int %tree %370 %uint_1
+               OpStore %402 %int_4
+        %403 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %403 %404
+               OpBranch %405
+        %405 = OpLabel
+               OpLoopMerge %406 %407 None
+               OpBranch %408
+        %408 = OpLabel
+        %409 = OpLoad %bool %x_247
+               OpStore %x_294_phi %409
+        %410 = OpConvertFToS %int %392
+        %411 = OpSLessThan %bool %int_0 %410
+               OpSelectionMerge %412 None
+               OpBranchConditional %411 %413 %414
+        %413 = OpLabel
+               OpBranch %412
+        %414 = OpLabel
+               OpBranch %406
+        %412 = OpLabel
+               OpStore %x_294_phi %true
+               OpBranch %406
+        %407 = OpLabel
+               OpBranch %405
+        %406 = OpLabel
+        %415 = OpLoad %bool %x_294_phi
+               OpStore %x_294 %415
+        %416 = OpLoad %bool %x_294
+               OpStore %x_296_phi %416
+        %417 = OpLoad %bool %x_294
+               OpSelectionMerge %418 None
+               OpBranchConditional %417 %419 %418
+        %419 = OpLabel
+               OpBranch %360
+        %418 = OpLabel
+               OpBranch %388
+        %390 = OpLabel
+        %420 = OpAccessChain %_ptr_Function_int %tree %370 %uint_1
+        %421 = OpLoad %int %420
+               OpStore %x_275 %421
+        %422 = OpLoad %bool %x_247
+               OpStore %x_248_phi %422
+        %423 = OpLoad %int %x_275
+               OpStore %x_251_phi %423
+               OpBranch %361
+        %388 = OpLabel
+               OpBranch %381
+        %383 = OpLabel
+        %424 = OpAccessChain %_ptr_Function_int %tree %370 %uint_2
+        %425 = OpLoad %int %424
+        %426 = OpIEqual %bool %425 %int_n1
+               OpSelectionMerge %427 None
+               OpBranchConditional %426 %428 %429
+        %428 = OpLabel
+        %430 = OpAccessChain %_ptr_Function_int %tree %370 %uint_2
+               OpStore %430 %int_4
+        %431 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %431 %404
+               OpStore %x_296_phi %true
+               OpBranch %360
+        %429 = OpLabel
+        %432 = OpAccessChain %_ptr_Function_int %tree %370 %uint_2
+        %433 = OpLoad %int %432
+               OpStore %x_267 %433
+        %434 = OpLoad %bool %x_247
+               OpStore %x_248_phi %434
+        %435 = OpLoad %int %x_267
+               OpStore %x_251_phi %435
+               OpBranch %361
+        %427 = OpLabel
+               OpReturn
+        %381 = OpLabel
+        %436 = OpLoad %bool %x_294
+               OpStore %x_248_phi %436
+               OpStore %x_251_phi %370
+               OpBranch %361
+        %361 = OpLabel
+        %437 = OpLoad %bool %x_248_phi
+               OpStore %x_248 %437
+        %438 = OpLoad %int %x_251_phi
+               OpStore %x_251 %438
+        %439 = OpLoad %bool %x_248
+               OpStore %x_247_phi %439
+        %440 = OpLoad %int %x_251
+               OpStore %x_250_phi %440
+               OpBranch %359
+        %360 = OpLabel
+        %441 = OpLoad %bool %x_296_phi
+               OpSelectionMerge %442 None
+               OpBranchConditional %441 %443 %442
+        %443 = OpLabel
+               OpBranch %357
+        %442 = OpLabel
+               OpBranch %357
+        %357 = OpLabel
+               OpSelectionMerge %449 None
+               OpSwitch %uint_0 %450
+        %450 = OpLabel
+               OpStore %x_301_phi %false
+               OpStore %x_304_phi %int_0
+               OpBranch %451
+        %451 = OpLabel
+               OpLoopMerge %452 %453 None
+               OpBranch %454
+        %454 = OpLabel
+        %461 = OpLoad %bool %x_301_phi
+               OpStore %x_301 %461
+        %462 = OpLoad %int %x_304_phi
+        %463 = OpLoad %bool %x_301
+               OpStore %x_350_phi %463
+        %464 = OpSLessThanEqual %bool %462 %int_5
+               OpSelectionMerge %465 None
+               OpBranchConditional %464 %466 %467
+        %466 = OpLabel
+               OpBranch %465
+        %467 = OpLabel
+               OpBranch %452
+        %465 = OpLabel
+        %468 = OpAccessChain %_ptr_Function_int %tree %462 %uint_0
+        %469 = OpLoad %int %468
+        %471 = OpSLessThanEqual %bool %int_8 %469
+               OpSelectionMerge %472 None
+               OpBranchConditional %471 %473 %474
+        %473 = OpLabel
+        %476 = OpAccessChain %_ptr_Function_int %tree %462 %uint_1
+        %477 = OpLoad %int %476
+        %478 = OpIEqual %bool %477 %int_n1
+               OpSelectionMerge %479 None
+               OpBranchConditional %478 %480 %481
+        %480 = OpLabel
+        %482 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %483 = OpLoad %float %482
+        %484 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %485 = OpLoad %float %484
+        %486 = OpFOrdLessThan %bool %483 %485
+               OpSelectionMerge %487 None
+               OpBranchConditional %486 %488 %487
+        %488 = OpLabel
+               OpBranch %489
+        %489 = OpLabel
+               OpLoopMerge %490 %491 None
+               OpBranch %492
+        %492 = OpLabel
+               OpKill
+        %491 = OpLabel
+               OpBranch %489
+        %490 = OpLabel
+               OpReturn
+        %487 = OpLabel
+        %493 = OpAccessChain %_ptr_Function_int %tree %462 %uint_1
+               OpStore %493 %int_5
+        %494 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %494 %495
+               OpBranch %496
+        %496 = OpLabel
+               OpLoopMerge %497 %498 None
+               OpBranch %499
+        %499 = OpLabel
+        %500 = OpLoad %bool %x_301
+               OpStore %x_348_phi %500
+        %501 = OpConvertFToS %int %483
+        %502 = OpSLessThan %bool %int_0 %501
+               OpSelectionMerge %503 None
+               OpBranchConditional %502 %504 %505
+        %504 = OpLabel
+               OpBranch %503
+        %505 = OpLabel
+               OpBranch %497
+        %503 = OpLabel
+               OpStore %x_348_phi %true
+               OpBranch %497
+        %498 = OpLabel
+               OpBranch %496
+        %497 = OpLabel
+        %506 = OpLoad %bool %x_348_phi
+               OpStore %x_348 %506
+        %507 = OpLoad %bool %x_348
+               OpStore %x_350_phi %507
+        %508 = OpLoad %bool %x_348
+               OpSelectionMerge %509 None
+               OpBranchConditional %508 %510 %509
+        %510 = OpLabel
+               OpBranch %452
+        %509 = OpLabel
+               OpBranch %479
+        %481 = OpLabel
+        %511 = OpAccessChain %_ptr_Function_int %tree %462 %uint_1
+        %512 = OpLoad %int %511
+               OpStore %x_329 %512
+        %513 = OpLoad %bool %x_301
+               OpStore %x_302_phi %513
+        %514 = OpLoad %int %x_329
+               OpStore %x_305_phi %514
+               OpBranch %453
+        %479 = OpLabel
+               OpBranch %472
+        %474 = OpLabel
+        %515 = OpAccessChain %_ptr_Function_int %tree %462 %uint_2
+        %516 = OpLoad %int %515
+        %517 = OpIEqual %bool %516 %int_n1
+               OpSelectionMerge %518 None
+               OpBranchConditional %517 %519 %520
+        %519 = OpLabel
+        %521 = OpAccessChain %_ptr_Function_int %tree %462 %uint_2
+               OpStore %521 %int_5
+        %522 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %522 %495
+               OpStore %x_350_phi %true
+               OpBranch %452
+        %520 = OpLabel
+        %523 = OpAccessChain %_ptr_Function_int %tree %462 %uint_2
+        %524 = OpLoad %int %523
+               OpStore %x_321 %524
+        %525 = OpLoad %bool %x_301
+               OpStore %x_302_phi %525
+        %526 = OpLoad %int %x_321
+               OpStore %x_305_phi %526
+               OpBranch %453
+        %518 = OpLabel
+               OpReturn
+        %472 = OpLabel
+        %527 = OpLoad %bool %x_348
+               OpStore %x_302_phi %527
+               OpStore %x_305_phi %462
+               OpBranch %453
+        %453 = OpLabel
+        %528 = OpLoad %bool %x_302_phi
+               OpStore %x_302 %528
+        %529 = OpLoad %int %x_305_phi
+               OpStore %x_305 %529
+        %530 = OpLoad %bool %x_302
+               OpStore %x_301_phi %530
+        %531 = OpLoad %int %x_305
+               OpStore %x_304_phi %531
+               OpBranch %451
+        %452 = OpLabel
+        %532 = OpLoad %bool %x_350_phi
+               OpSelectionMerge %533 None
+               OpBranchConditional %532 %534 %533
+        %534 = OpLabel
+               OpBranch %449
+        %533 = OpLabel
+               OpBranch %449
+        %449 = OpLabel
+               OpSelectionMerge %540 None
+               OpSwitch %uint_0 %541
+        %541 = OpLabel
+               OpStore %x_355_phi %false
+               OpStore %x_358_phi %int_0
+               OpBranch %542
+        %542 = OpLabel
+               OpLoopMerge %543 %544 None
+               OpBranch %545
+        %545 = OpLabel
+        %552 = OpLoad %bool %x_355_phi
+               OpStore %x_355 %552
+        %553 = OpLoad %int %x_358_phi
+        %554 = OpLoad %bool %x_355
+               OpStore %x_404_phi %554
+        %556 = OpSLessThanEqual %bool %553 %int_6
+               OpSelectionMerge %557 None
+               OpBranchConditional %556 %558 %559
+        %558 = OpLabel
+               OpBranch %557
+        %559 = OpLabel
+               OpBranch %543
+        %557 = OpLabel
+        %560 = OpAccessChain %_ptr_Function_int %tree %553 %uint_0
+        %561 = OpLoad %int %560
+        %562 = OpSLessThanEqual %bool %int_2 %561
+               OpSelectionMerge %563 None
+               OpBranchConditional %562 %564 %565
+        %564 = OpLabel
+        %567 = OpAccessChain %_ptr_Function_int %tree %553 %uint_1
+        %568 = OpLoad %int %567
+        %569 = OpIEqual %bool %568 %int_n1
+               OpSelectionMerge %570 None
+               OpBranchConditional %569 %571 %572
+        %571 = OpLabel
+        %573 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %574 = OpLoad %float %573
+        %575 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %576 = OpLoad %float %575
+        %577 = OpFOrdLessThan %bool %574 %576
+               OpSelectionMerge %578 None
+               OpBranchConditional %577 %579 %578
+        %579 = OpLabel
+               OpBranch %580
+        %580 = OpLabel
+               OpLoopMerge %581 %582 None
+               OpBranch %583
+        %583 = OpLabel
+               OpKill
+        %582 = OpLabel
+               OpBranch %580
+        %581 = OpLabel
+               OpReturn
+        %578 = OpLabel
+        %584 = OpAccessChain %_ptr_Function_int %tree %553 %uint_1
+               OpStore %584 %int_6
+        %585 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %585 %586
+               OpBranch %587
+        %587 = OpLabel
+               OpLoopMerge %588 %589 None
+               OpBranch %590
+        %590 = OpLabel
+        %591 = OpLoad %bool %x_355
+               OpStore %x_402_phi %591
+        %592 = OpConvertFToS %int %574
+        %593 = OpSLessThan %bool %int_0 %592
+               OpSelectionMerge %594 None
+               OpBranchConditional %593 %595 %596
+        %595 = OpLabel
+               OpBranch %594
+        %596 = OpLabel
+               OpBranch %588
+        %594 = OpLabel
+               OpStore %x_402_phi %true
+               OpBranch %588
+        %589 = OpLabel
+               OpBranch %587
+        %588 = OpLabel
+        %597 = OpLoad %bool %x_402_phi
+               OpStore %x_402 %597
+        %598 = OpLoad %bool %x_402
+               OpStore %x_404_phi %598
+        %599 = OpLoad %bool %x_402
+               OpSelectionMerge %600 None
+               OpBranchConditional %599 %601 %600
+        %601 = OpLabel
+               OpBranch %543
+        %600 = OpLabel
+               OpBranch %570
+        %572 = OpLabel
+        %602 = OpAccessChain %_ptr_Function_int %tree %553 %uint_1
+        %603 = OpLoad %int %602
+               OpStore %x_383 %603
+        %604 = OpLoad %bool %x_355
+               OpStore %x_356_phi %604
+        %605 = OpLoad %int %x_383
+               OpStore %x_359_phi %605
+               OpBranch %544
+        %570 = OpLabel
+               OpBranch %563
+        %565 = OpLabel
+        %606 = OpAccessChain %_ptr_Function_int %tree %553 %uint_2
+        %607 = OpLoad %int %606
+        %608 = OpIEqual %bool %607 %int_n1
+               OpSelectionMerge %609 None
+               OpBranchConditional %608 %610 %611
+        %610 = OpLabel
+        %612 = OpAccessChain %_ptr_Function_int %tree %553 %uint_2
+               OpStore %612 %int_6
+        %613 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %613 %586
+               OpStore %x_404_phi %true
+               OpBranch %543
+        %611 = OpLabel
+        %614 = OpAccessChain %_ptr_Function_int %tree %553 %uint_2
+        %615 = OpLoad %int %614
+               OpStore %x_375 %615
+        %616 = OpLoad %bool %x_355
+               OpStore %x_356_phi %616
+        %617 = OpLoad %int %x_375
+               OpStore %x_359_phi %617
+               OpBranch %544
+        %609 = OpLabel
+               OpReturn
+        %563 = OpLabel
+        %618 = OpLoad %bool %x_402
+               OpStore %x_356_phi %618
+               OpStore %x_359_phi %553
+               OpBranch %544
+        %544 = OpLabel
+        %619 = OpLoad %bool %x_356_phi
+               OpStore %x_356 %619
+        %620 = OpLoad %int %x_359_phi
+               OpStore %x_359 %620
+        %621 = OpLoad %bool %x_356
+               OpStore %x_355_phi %621
+        %622 = OpLoad %int %x_359
+               OpStore %x_358_phi %622
+               OpBranch %542
+        %543 = OpLabel
+        %623 = OpLoad %bool %x_404_phi
+               OpSelectionMerge %624 None
+               OpBranchConditional %623 %625 %624
+        %625 = OpLabel
+               OpBranch %540
+        %624 = OpLabel
+               OpBranch %540
+        %540 = OpLabel
+               OpSelectionMerge %631 None
+               OpSwitch %uint_0 %632
+        %632 = OpLabel
+               OpStore %x_409_phi %false
+               OpStore %x_412_phi %int_0
+               OpBranch %633
+        %633 = OpLabel
+               OpLoopMerge %634 %635 None
+               OpBranch %636
+        %636 = OpLabel
+        %643 = OpLoad %bool %x_409_phi
+               OpStore %x_409 %643
+        %644 = OpLoad %int %x_412_phi
+        %645 = OpLoad %bool %x_409
+               OpStore %x_458_phi %645
+        %646 = OpSLessThanEqual %bool %644 %int_7
+               OpSelectionMerge %647 None
+               OpBranchConditional %646 %648 %649
+        %648 = OpLabel
+               OpBranch %647
+        %649 = OpLabel
+               OpBranch %634
+        %647 = OpLabel
+        %650 = OpAccessChain %_ptr_Function_int %tree %644 %uint_0
+        %651 = OpLoad %int %650
+        %652 = OpSLessThanEqual %bool %int_6 %651
+               OpSelectionMerge %653 None
+               OpBranchConditional %652 %654 %655
+        %654 = OpLabel
+        %657 = OpAccessChain %_ptr_Function_int %tree %644 %uint_1
+        %658 = OpLoad %int %657
+        %659 = OpIEqual %bool %658 %int_n1
+               OpSelectionMerge %660 None
+               OpBranchConditional %659 %661 %662
+        %661 = OpLabel
+        %663 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %664 = OpLoad %float %663
+        %665 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %666 = OpLoad %float %665
+        %667 = OpFOrdLessThan %bool %664 %666
+               OpSelectionMerge %668 None
+               OpBranchConditional %667 %669 %668
+        %669 = OpLabel
+               OpBranch %670
+        %670 = OpLabel
+               OpLoopMerge %671 %672 None
+               OpBranch %673
+        %673 = OpLabel
+               OpKill
+        %672 = OpLabel
+               OpBranch %670
+        %671 = OpLabel
+               OpReturn
+        %668 = OpLabel
+        %674 = OpAccessChain %_ptr_Function_int %tree %644 %uint_1
+               OpStore %674 %int_7
+        %675 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %675 %676
+               OpBranch %677
+        %677 = OpLabel
+               OpLoopMerge %678 %679 None
+               OpBranch %680
+        %680 = OpLabel
+        %681 = OpLoad %bool %x_409
+               OpStore %x_456_phi %681
+        %682 = OpConvertFToS %int %664
+        %683 = OpSLessThan %bool %int_0 %682
+               OpSelectionMerge %684 None
+               OpBranchConditional %683 %685 %686
+        %685 = OpLabel
+               OpBranch %684
+        %686 = OpLabel
+               OpBranch %678
+        %684 = OpLabel
+               OpStore %x_456_phi %true
+               OpBranch %678
+        %679 = OpLabel
+               OpBranch %677
+        %678 = OpLabel
+        %687 = OpLoad %bool %x_456_phi
+               OpStore %x_456 %687
+        %688 = OpLoad %bool %x_456
+               OpStore %x_458_phi %688
+        %689 = OpLoad %bool %x_456
+               OpSelectionMerge %690 None
+               OpBranchConditional %689 %691 %690
+        %691 = OpLabel
+               OpBranch %634
+        %690 = OpLabel
+               OpBranch %660
+        %662 = OpLabel
+        %692 = OpAccessChain %_ptr_Function_int %tree %644 %uint_1
+        %693 = OpLoad %int %692
+               OpStore %x_437 %693
+        %694 = OpLoad %bool %x_409
+               OpStore %x_410_phi %694
+        %695 = OpLoad %int %x_437
+               OpStore %x_413_phi %695
+               OpBranch %635
+        %660 = OpLabel
+               OpBranch %653
+        %655 = OpLabel
+        %696 = OpAccessChain %_ptr_Function_int %tree %644 %uint_2
+        %697 = OpLoad %int %696
+        %698 = OpIEqual %bool %697 %int_n1
+               OpSelectionMerge %699 None
+               OpBranchConditional %698 %700 %701
+        %700 = OpLabel
+        %702 = OpAccessChain %_ptr_Function_int %tree %644 %uint_2
+               OpStore %702 %int_7
+        %703 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %703 %676
+               OpStore %x_458_phi %true
+               OpBranch %634
+        %701 = OpLabel
+        %704 = OpAccessChain %_ptr_Function_int %tree %644 %uint_2
+        %705 = OpLoad %int %704
+               OpStore %x_429 %705
+        %706 = OpLoad %bool %x_409
+               OpStore %x_410_phi %706
+        %707 = OpLoad %int %x_429
+               OpStore %x_413_phi %707
+               OpBranch %635
+        %699 = OpLabel
+               OpReturn
+        %653 = OpLabel
+        %708 = OpLoad %bool %x_456
+               OpStore %x_410_phi %708
+               OpStore %x_413_phi %644
+               OpBranch %635
+        %635 = OpLabel
+        %709 = OpLoad %bool %x_410_phi
+               OpStore %x_410 %709
+        %710 = OpLoad %int %x_413_phi
+               OpStore %x_413 %710
+        %711 = OpLoad %bool %x_410
+               OpStore %x_409_phi %711
+        %712 = OpLoad %int %x_413
+               OpStore %x_412_phi %712
+               OpBranch %633
+        %634 = OpLabel
+        %713 = OpLoad %bool %x_458_phi
+               OpSelectionMerge %714 None
+               OpBranchConditional %713 %715 %714
+        %715 = OpLabel
+               OpBranch %631
+        %714 = OpLabel
+               OpBranch %631
+        %631 = OpLabel
+               OpSelectionMerge %721 None
+               OpSwitch %uint_0 %722
+        %722 = OpLabel
+               OpStore %x_463_phi %false
+               OpStore %x_466_phi %int_0
+               OpBranch %723
+        %723 = OpLabel
+               OpLoopMerge %724 %725 None
+               OpBranch %726
+        %726 = OpLabel
+        %733 = OpLoad %bool %x_463_phi
+               OpStore %x_463 %733
+        %734 = OpLoad %int %x_466_phi
+        %735 = OpLoad %bool %x_463
+               OpStore %x_512_phi %735
+        %736 = OpSLessThanEqual %bool %734 %int_8
+               OpSelectionMerge %737 None
+               OpBranchConditional %736 %738 %739
+        %738 = OpLabel
+               OpBranch %737
+        %739 = OpLabel
+               OpBranch %724
+        %737 = OpLabel
+        %740 = OpAccessChain %_ptr_Function_int %tree %734 %uint_0
+        %741 = OpLoad %int %740
+        %743 = OpSLessThanEqual %bool %int_17 %741
+               OpSelectionMerge %744 None
+               OpBranchConditional %743 %745 %746
+        %745 = OpLabel
+        %748 = OpAccessChain %_ptr_Function_int %tree %734 %uint_1
+        %749 = OpLoad %int %748
+        %750 = OpIEqual %bool %749 %int_n1
+               OpSelectionMerge %751 None
+               OpBranchConditional %750 %752 %753
+        %752 = OpLabel
+        %754 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %755 = OpLoad %float %754
+        %756 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %757 = OpLoad %float %756
+        %758 = OpFOrdLessThan %bool %755 %757
+               OpSelectionMerge %759 None
+               OpBranchConditional %758 %760 %759
+        %760 = OpLabel
+               OpBranch %761
+        %761 = OpLabel
+               OpLoopMerge %762 %763 None
+               OpBranch %764
+        %764 = OpLabel
+               OpKill
+        %763 = OpLabel
+               OpBranch %761
+        %762 = OpLabel
+               OpReturn
+        %759 = OpLabel
+        %765 = OpAccessChain %_ptr_Function_int %tree %734 %uint_1
+               OpStore %765 %int_8
+        %766 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %766 %767
+               OpBranch %768
+        %768 = OpLabel
+               OpLoopMerge %769 %770 None
+               OpBranch %771
+        %771 = OpLabel
+        %772 = OpLoad %bool %x_463
+               OpStore %x_510_phi %772
+        %773 = OpConvertFToS %int %755
+        %774 = OpSLessThan %bool %int_0 %773
+               OpSelectionMerge %775 None
+               OpBranchConditional %774 %776 %777
+        %776 = OpLabel
+               OpBranch %775
+        %777 = OpLabel
+               OpBranch %769
+        %775 = OpLabel
+               OpStore %x_510_phi %true
+               OpBranch %769
+        %770 = OpLabel
+               OpBranch %768
+        %769 = OpLabel
+        %778 = OpLoad %bool %x_510_phi
+               OpStore %x_510 %778
+        %779 = OpLoad %bool %x_510
+               OpStore %x_512_phi %779
+        %780 = OpLoad %bool %x_510
+               OpSelectionMerge %781 None
+               OpBranchConditional %780 %782 %781
+        %782 = OpLabel
+               OpBranch %724
+        %781 = OpLabel
+               OpBranch %751
+        %753 = OpLabel
+        %783 = OpAccessChain %_ptr_Function_int %tree %734 %uint_1
+        %784 = OpLoad %int %783
+               OpStore %x_491 %784
+        %785 = OpLoad %bool %x_463
+               OpStore %x_464_phi %785
+        %786 = OpLoad %int %x_491
+               OpStore %x_467_phi %786
+               OpBranch %725
+        %751 = OpLabel
+               OpBranch %744
+        %746 = OpLabel
+        %787 = OpAccessChain %_ptr_Function_int %tree %734 %uint_2
+        %788 = OpLoad %int %787
+        %789 = OpIEqual %bool %788 %int_n1
+               OpSelectionMerge %790 None
+               OpBranchConditional %789 %791 %792
+        %791 = OpLabel
+        %793 = OpAccessChain %_ptr_Function_int %tree %734 %uint_2
+               OpStore %793 %int_8
+        %794 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %794 %767
+               OpStore %x_512_phi %true
+               OpBranch %724
+        %792 = OpLabel
+        %795 = OpAccessChain %_ptr_Function_int %tree %734 %uint_2
+        %796 = OpLoad %int %795
+               OpStore %x_483 %796
+        %797 = OpLoad %bool %x_463
+               OpStore %x_464_phi %797
+        %798 = OpLoad %int %x_483
+               OpStore %x_467_phi %798
+               OpBranch %725
+        %790 = OpLabel
+               OpReturn
+        %744 = OpLabel
+        %799 = OpLoad %bool %x_510
+               OpStore %x_464_phi %799
+               OpStore %x_467_phi %734
+               OpBranch %725
+        %725 = OpLabel
+        %800 = OpLoad %bool %x_464_phi
+               OpStore %x_464 %800
+        %801 = OpLoad %int %x_467_phi
+               OpStore %x_467 %801
+        %802 = OpLoad %bool %x_464
+               OpStore %x_463_phi %802
+        %803 = OpLoad %int %x_467
+               OpStore %x_466_phi %803
+               OpBranch %723
+        %724 = OpLabel
+        %804 = OpLoad %bool %x_512_phi
+               OpSelectionMerge %805 None
+               OpBranchConditional %804 %806 %805
+        %806 = OpLabel
+               OpBranch %721
+        %805 = OpLabel
+               OpBranch %721
+        %721 = OpLabel
+               OpSelectionMerge %812 None
+               OpSwitch %uint_0 %813
+        %813 = OpLabel
+               OpStore %x_517_phi %false
+               OpStore %x_520_phi %int_0
+               OpBranch %814
+        %814 = OpLabel
+               OpLoopMerge %815 %816 None
+               OpBranch %817
+        %817 = OpLabel
+        %824 = OpLoad %bool %x_517_phi
+               OpStore %x_517 %824
+        %825 = OpLoad %int %x_520_phi
+        %826 = OpLoad %bool %x_517
+               OpStore %x_566_phi %826
+        %827 = OpSLessThanEqual %bool %825 %int_9
+               OpSelectionMerge %828 None
+               OpBranchConditional %827 %829 %830
+        %829 = OpLabel
+               OpBranch %828
+        %830 = OpLabel
+               OpBranch %815
+        %828 = OpLabel
+        %831 = OpAccessChain %_ptr_Function_int %tree %825 %uint_0
+        %832 = OpLoad %int %831
+        %834 = OpSLessThanEqual %bool %int_13 %832
+               OpSelectionMerge %835 None
+               OpBranchConditional %834 %836 %837
+        %836 = OpLabel
+        %839 = OpAccessChain %_ptr_Function_int %tree %825 %uint_1
+        %840 = OpLoad %int %839
+        %841 = OpIEqual %bool %840 %int_n1
+               OpSelectionMerge %842 None
+               OpBranchConditional %841 %843 %844
+        %843 = OpLabel
+        %845 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %846 = OpLoad %float %845
+        %847 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %848 = OpLoad %float %847
+        %849 = OpFOrdLessThan %bool %846 %848
+               OpSelectionMerge %850 None
+               OpBranchConditional %849 %851 %850
+        %851 = OpLabel
+               OpBranch %852
+        %852 = OpLabel
+               OpLoopMerge %853 %854 None
+               OpBranch %855
+        %855 = OpLabel
+               OpKill
+        %854 = OpLabel
+               OpBranch %852
+        %853 = OpLabel
+               OpReturn
+        %850 = OpLabel
+        %856 = OpAccessChain %_ptr_Function_int %tree %825 %uint_1
+               OpStore %856 %int_9
+        %857 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %857 %858
+               OpBranch %859
+        %859 = OpLabel
+               OpLoopMerge %860 %861 None
+               OpBranch %862
+        %862 = OpLabel
+        %863 = OpLoad %bool %x_517
+               OpStore %x_564_phi %863
+        %864 = OpConvertFToS %int %846
+        %865 = OpSLessThan %bool %int_0 %864
+               OpSelectionMerge %866 None
+               OpBranchConditional %865 %867 %868
+        %867 = OpLabel
+               OpBranch %866
+        %868 = OpLabel
+               OpBranch %860
+        %866 = OpLabel
+               OpStore %x_564_phi %true
+               OpBranch %860
+        %861 = OpLabel
+               OpBranch %859
+        %860 = OpLabel
+        %869 = OpLoad %bool %x_564_phi
+               OpStore %x_564 %869
+        %870 = OpLoad %bool %x_564
+               OpStore %x_566_phi %870
+        %871 = OpLoad %bool %x_564
+               OpSelectionMerge %872 None
+               OpBranchConditional %871 %873 %872
+        %873 = OpLabel
+               OpBranch %815
+        %872 = OpLabel
+               OpBranch %842
+        %844 = OpLabel
+        %874 = OpAccessChain %_ptr_Function_int %tree %825 %uint_1
+        %875 = OpLoad %int %874
+               OpStore %x_545 %875
+        %876 = OpLoad %bool %x_517
+               OpStore %x_518_phi %876
+        %877 = OpLoad %int %x_545
+               OpStore %x_521_phi %877
+               OpBranch %816
+        %842 = OpLabel
+               OpBranch %835
+        %837 = OpLabel
+        %878 = OpAccessChain %_ptr_Function_int %tree %825 %uint_2
+        %879 = OpLoad %int %878
+        %880 = OpIEqual %bool %879 %int_n1
+               OpSelectionMerge %881 None
+               OpBranchConditional %880 %882 %883
+        %882 = OpLabel
+        %884 = OpAccessChain %_ptr_Function_int %tree %825 %uint_2
+               OpStore %884 %int_9
+        %885 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %885 %858
+               OpStore %x_566_phi %true
+               OpBranch %815
+        %883 = OpLabel
+        %886 = OpAccessChain %_ptr_Function_int %tree %825 %uint_2
+        %887 = OpLoad %int %886
+               OpStore %x_537 %887
+        %888 = OpLoad %bool %x_517
+               OpStore %x_518_phi %888
+        %889 = OpLoad %int %x_537
+               OpStore %x_521_phi %889
+               OpBranch %816
+        %881 = OpLabel
+               OpReturn
+        %835 = OpLabel
+        %890 = OpLoad %bool %x_564
+               OpStore %x_518_phi %890
+               OpStore %x_521_phi %825
+               OpBranch %816
+        %816 = OpLabel
+        %891 = OpLoad %bool %x_518_phi
+               OpStore %x_518 %891
+        %892 = OpLoad %int %x_521_phi
+               OpStore %x_521 %892
+        %893 = OpLoad %bool %x_518
+               OpStore %x_517_phi %893
+        %894 = OpLoad %int %x_521
+               OpStore %x_520_phi %894
+               OpBranch %814
+        %815 = OpLabel
+        %895 = OpLoad %bool %x_566_phi
+               OpSelectionMerge %896 None
+               OpBranchConditional %895 %897 %896
+        %897 = OpLabel
+               OpBranch %812
+        %896 = OpLabel
+               OpBranch %812
+        %812 = OpLabel
+               OpStore %x_569_phi %int_0
+               OpStore %x_572_phi %int_0
+               OpStore %x_574_phi %int_0
+               OpBranch %898
+        %898 = OpLabel
+               OpLoopMerge %899 %900 None
+               OpBranch %901
+        %901 = OpLabel
+        %908 = OpLoad %int %x_569_phi
+        %909 = OpLoad %int %x_572_phi
+               OpStore %x_572 %909
+        %910 = OpLoad %int %x_574_phi
+        %912 = OpSLessThan %bool %910 %int_20
+               OpSelectionMerge %913 None
+               OpBranchConditional %912 %914 %915
+        %914 = OpLabel
+               OpBranch %913
+        %915 = OpLabel
+               OpBranch %899
+        %913 = OpLabel
+               OpSelectionMerge %919 None
+               OpSwitch %uint_0 %920
+        %920 = OpLabel
+               OpStore %x_582_phi %int_0
+               OpBranch %921
+        %921 = OpLabel
+               OpLoopMerge %922 %923 None
+               OpBranch %924
+        %924 = OpLabel
+        %925 = OpLoad %int %x_582_phi
+               OpStore %x_597_phi %908
+               OpStore %x_598_phi %false
+        %926 = OpINotEqual %bool %925 %int_n1
+               OpSelectionMerge %927 None
+               OpBranchConditional %926 %928 %929
+        %928 = OpLabel
+               OpBranch %927
+        %929 = OpLabel
+               OpBranch %922
+        %927 = OpLabel
+        %930 = OpAccessChain %_ptr_Function_BST %tree %925
+        %931 = OpLoad %BST %930
+        %932 = OpCompositeExtract %int %931 0
+        %933 = OpCompositeExtract %int %931 1
+        %934 = OpCompositeExtract %int %931 2
+        %935 = OpIEqual %bool %932 %910
+               OpSelectionMerge %936 None
+               OpBranchConditional %935 %937 %936
+        %937 = OpLabel
+               OpStore %x_597_phi %910
+               OpStore %x_598_phi %true
+               OpBranch %922
+        %936 = OpLabel
+               OpBranch %923
+        %923 = OpLabel
+        %939 = OpSGreaterThan %bool %910 %932
+        %938 = OpSelect %int %939 %934 %933
+               OpStore %x_582_phi %938
+               OpBranch %921
+        %922 = OpLabel
+        %940 = OpLoad %int %x_597_phi
+               OpStore %x_597 %940
+        %941 = OpLoad %bool %x_598_phi
+        %942 = OpLoad %int %x_597
+               OpStore %x_570_phi %942
+               OpSelectionMerge %943 None
+               OpBranchConditional %941 %944 %943
+        %944 = OpLabel
+               OpBranch %919
+        %943 = OpLabel
+               OpStore %x_570_phi %int_n1
+               OpBranch %919
+        %919 = OpLabel
+        %950 = OpLoad %int %x_570_phi
+               OpStore %x_570 %950
+               OpSelectionMerge %951 None
+               OpSwitch %910 %952 2 %953 5 %953 6 %953 7 %953 8 %953 9 %953 12 %953 13 %953 15 %953 17 %953
+        %953 = OpLabel
+        %954 = OpLoad %int %x_572
+               OpStore %x_607_phi %954
+        %955 = OpLoad %int %x_570
+        %956 = OpCopyObject %int %910
+        %957 = OpIEqual %bool %955 %956
+               OpSelectionMerge %958 None
+               OpBranchConditional %957 %959 %958
+        %959 = OpLabel
+        %961 = OpLoad %int %x_572
+        %962 = OpCopyObject %int %int_1
+        %963 = OpIAdd %int %961 %962
+        %960 = OpCopyObject %int %963
+               OpStore %x_606 %960
+        %964 = OpLoad %int %x_606
+               OpStore %x_607_phi %964
+               OpBranch %958
+        %958 = OpLabel
+        %965 = OpLoad %int %x_607_phi
+               OpStore %x_607 %965
+        %966 = OpLoad %int %x_607
+               OpStore %x_573_phi %966
+               OpBranch %951
+        %952 = OpLabel
+        %967 = OpLoad %int %x_572
+               OpStore %x_612_phi %967
+        %968 = OpLoad %int %x_570
+        %969 = OpCopyObject %int %int_n1
+        %970 = OpIEqual %bool %968 %969
+               OpSelectionMerge %971 None
+               OpBranchConditional %970 %972 %971
+        %972 = OpLabel
+        %974 = OpLoad %int %x_572
+        %975 = OpCopyObject %int %int_1
+        %976 = OpIAdd %int %974 %975
+        %973 = OpCopyObject %int %976
+               OpStore %x_611 %973
+        %977 = OpLoad %int %x_611
+               OpStore %x_612_phi %977
+               OpBranch %971
+        %971 = OpLabel
+        %978 = OpLoad %int %x_612_phi
+               OpStore %x_612 %978
+        %979 = OpLoad %int %x_612
+               OpStore %x_573_phi %979
+               OpBranch %951
+        %951 = OpLabel
+        %980 = OpLoad %int %x_573_phi
+               OpBranch %900
+        %900 = OpLabel
+        %981 = OpIAdd %int %910 %int_1
+               OpStore %x_575 %981
+        %982 = OpLoad %int %x_570
+               OpStore %x_569_phi %982
+               OpStore %x_572_phi %980
+        %983 = OpLoad %int %x_575
+               OpStore %x_574_phi %983
+               OpBranch %898
+        %899 = OpLabel
+        %984 = OpLoad %int %x_572
+        %985 = OpCopyObject %int %int_20
+        %986 = OpIEqual %bool %984 %985
+               OpSelectionMerge %987 None
+               OpBranchConditional %986 %988 %989
+        %988 = OpLabel
+               OpStore %x_GLF_color %991
+               OpBranch %987
+        %989 = OpLabel
+               OpStore %x_GLF_color %992
+               OpBranch %987
+        %987 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %993
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %997 = OpLabel
+        %998 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %998
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+       %1000 = OpLabel
+       %1001 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %1001
+       %1002 = OpFunctionCall %void %main_1
+       %1004 = OpLoad %v4float %x_GLF_color
+       %1005 = OpCompositeConstruct %main_out %1004
+       %1003 = OpFunctionCall %void %tint_symbol_3 %1005
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..c4e135a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.spvasm.expected.wgsl
@@ -0,0 +1,977 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var tree : array<BST, 10>;
+  var x_67 : bool;
+  var x_114 : bool;
+  var x_572 : i32;
+  var x_67_phi : bool;
+  var x_70_phi : i32;
+  var x_116_phi : bool;
+  var x_119_phi : i32;
+  var x_569_phi : i32;
+  var x_572_phi : i32;
+  var x_574_phi : i32;
+  tree[0] = BST(9, -1, -1);
+  switch(0u) {
+    default: {
+      x_67_phi = false;
+      x_70_phi = 0;
+      loop {
+        var x_95 : i32;
+        var x_87 : i32;
+        var x_68 : bool;
+        var x_71 : i32;
+        var x_68_phi : bool;
+        var x_71_phi : i32;
+        x_67 = x_67_phi;
+        let x_70 : i32 = x_70_phi;
+        x_116_phi = x_67;
+        if ((x_70 <= 1)) {
+        } else {
+          break;
+        }
+        let x_76 : i32 = tree[x_70].data;
+        if ((5 <= x_76)) {
+          var x_114_phi : bool;
+          let x_89 : ptr<function, i32> = &(tree[x_70].leftIndex);
+          let x_90 : i32 = *(x_89);
+          if ((x_90 == -1)) {
+            let x_97 : f32 = x_8.injectionSwitch.y;
+            let x_99 : f32 = x_8.injectionSwitch.x;
+            if ((x_97 < x_99)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_89) = 1;
+            tree[1] = BST(5, -1, -1);
+            loop {
+              x_114_phi = x_67;
+              if ((0 < i32(x_97))) {
+              } else {
+                break;
+              }
+              x_114_phi = true;
+              break;
+            }
+            x_114 = x_114_phi;
+            x_116_phi = x_114;
+            if (x_114) {
+              break;
+            }
+          } else {
+            x_95 = *(x_89);
+            x_68_phi = x_67;
+            x_71_phi = x_95;
+            continue;
+          }
+        } else {
+          let x_81 : ptr<function, i32> = &(tree[x_70].rightIndex);
+          let x_82 : i32 = *(x_81);
+          if ((x_82 == -1)) {
+            *(x_81) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_116_phi = true;
+            break;
+          } else {
+            x_87 = *(x_81);
+            x_68_phi = x_67;
+            x_71_phi = x_87;
+            continue;
+          }
+          return;
+        }
+        x_68_phi = x_114;
+        x_71_phi = x_70;
+
+        continuing {
+          x_68 = x_68_phi;
+          x_71 = x_71_phi;
+          x_67_phi = x_68;
+          x_70_phi = x_71;
+        }
+      }
+      let x_116 : bool = x_116_phi;
+      if (x_116) {
+        break;
+      }
+    }
+  }
+  x_119_phi = 0;
+  loop {
+    var x_133 : bool;
+    var x_120 : i32;
+    var x_134_phi : bool;
+    let x_119 : i32 = x_119_phi;
+    let x_125 : f32 = gl_FragCoord.y;
+    let x_126 : bool = (x_125 < 0.0);
+    x_134_phi = x_126;
+    if (!(x_126)) {
+      let x_131 : f32 = x_8.injectionSwitch.y;
+      x_133 = (x_119 != i32(x_131));
+      x_134_phi = x_133;
+    }
+    let x_134 : bool = x_134_phi;
+    if (x_134) {
+    } else {
+      break;
+    }
+    var x_139 : bool;
+    var x_186 : bool;
+    var x_139_phi : bool;
+    var x_142_phi : i32;
+    var x_188_phi : bool;
+    switch(0u) {
+      default: {
+        x_139_phi = false;
+        x_142_phi = 0;
+        loop {
+          var x_167 : i32;
+          var x_159 : i32;
+          var x_140 : bool;
+          var x_143 : i32;
+          var x_140_phi : bool;
+          var x_143_phi : i32;
+          x_139 = x_139_phi;
+          let x_142 : i32 = x_142_phi;
+          x_188_phi = x_139;
+          if ((x_142 <= 2)) {
+          } else {
+            break;
+          }
+          let x_148 : i32 = tree[x_142].data;
+          if ((12 <= x_148)) {
+            var x_186_phi : bool;
+            let x_161 : ptr<function, i32> = &(tree[x_142].leftIndex);
+            let x_162 : i32 = *(x_161);
+            if ((x_162 == -1)) {
+              let x_169 : f32 = x_8.injectionSwitch.y;
+              let x_171 : f32 = x_8.injectionSwitch.x;
+              if ((x_169 < x_171)) {
+                loop {
+                  discard;
+                }
+                return;
+              }
+              *(x_161) = 2;
+              tree[2] = BST(12, -1, -1);
+              loop {
+                x_186_phi = x_139;
+                if ((0 < i32(x_169))) {
+                } else {
+                  break;
+                }
+                x_186_phi = true;
+                break;
+              }
+              x_186 = x_186_phi;
+              x_188_phi = x_186;
+              if (x_186) {
+                break;
+              }
+            } else {
+              x_167 = *(x_161);
+              x_140_phi = x_139;
+              x_143_phi = x_167;
+              continue;
+            }
+          } else {
+            let x_153 : ptr<function, i32> = &(tree[x_142].rightIndex);
+            let x_154 : i32 = *(x_153);
+            if ((x_154 == -1)) {
+              *(x_153) = 2;
+              tree[2] = BST(12, -1, -1);
+              x_188_phi = true;
+              break;
+            } else {
+              x_159 = *(x_153);
+              x_140_phi = x_139;
+              x_143_phi = x_159;
+              continue;
+            }
+            return;
+          }
+          x_140_phi = x_186;
+          x_143_phi = x_142;
+
+          continuing {
+            x_140 = x_140_phi;
+            x_143 = x_143_phi;
+            x_139_phi = x_140;
+            x_142_phi = x_143;
+          }
+        }
+        let x_188 : bool = x_188_phi;
+        if (x_188) {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      x_120 = (x_119 + 1);
+      x_119_phi = x_120;
+    }
+  }
+  var x_193 : bool;
+  var x_240 : bool;
+  var x_193_phi : bool;
+  var x_196_phi : i32;
+  var x_242_phi : bool;
+  switch(0u) {
+    default: {
+      x_193_phi = false;
+      x_196_phi = 0;
+      loop {
+        var x_221 : i32;
+        var x_213 : i32;
+        var x_194 : bool;
+        var x_197 : i32;
+        var x_194_phi : bool;
+        var x_197_phi : i32;
+        x_193 = x_193_phi;
+        let x_196 : i32 = x_196_phi;
+        x_242_phi = x_193;
+        if ((x_196 <= 3)) {
+        } else {
+          break;
+        }
+        let x_202 : i32 = tree[x_196].data;
+        if ((15 <= x_202)) {
+          var x_240_phi : bool;
+          let x_215 : ptr<function, i32> = &(tree[x_196].leftIndex);
+          let x_216 : i32 = *(x_215);
+          if ((x_216 == -1)) {
+            let x_223 : f32 = x_8.injectionSwitch.y;
+            let x_225 : f32 = x_8.injectionSwitch.x;
+            if ((x_223 < x_225)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_215) = 3;
+            tree[3] = BST(15, -1, -1);
+            loop {
+              x_240_phi = x_193;
+              if ((0 < i32(x_223))) {
+              } else {
+                break;
+              }
+              x_240_phi = true;
+              break;
+            }
+            x_240 = x_240_phi;
+            x_242_phi = x_240;
+            if (x_240) {
+              break;
+            }
+          } else {
+            x_221 = *(x_215);
+            x_194_phi = x_193;
+            x_197_phi = x_221;
+            continue;
+          }
+        } else {
+          let x_207 : ptr<function, i32> = &(tree[x_196].rightIndex);
+          let x_208 : i32 = *(x_207);
+          if ((x_208 == -1)) {
+            *(x_207) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_242_phi = true;
+            break;
+          } else {
+            x_213 = *(x_207);
+            x_194_phi = x_193;
+            x_197_phi = x_213;
+            continue;
+          }
+          return;
+        }
+        x_194_phi = x_240;
+        x_197_phi = x_196;
+
+        continuing {
+          x_194 = x_194_phi;
+          x_197 = x_197_phi;
+          x_193_phi = x_194;
+          x_196_phi = x_197;
+        }
+      }
+      let x_242 : bool = x_242_phi;
+      if (x_242) {
+        break;
+      }
+    }
+  }
+  var x_247 : bool;
+  var x_294 : bool;
+  var x_247_phi : bool;
+  var x_250_phi : i32;
+  var x_296_phi : bool;
+  switch(0u) {
+    default: {
+      x_247_phi = false;
+      x_250_phi = 0;
+      loop {
+        var x_275 : i32;
+        var x_267 : i32;
+        var x_248 : bool;
+        var x_251 : i32;
+        var x_248_phi : bool;
+        var x_251_phi : i32;
+        x_247 = x_247_phi;
+        let x_250 : i32 = x_250_phi;
+        x_296_phi = x_247;
+        if ((x_250 <= 4)) {
+        } else {
+          break;
+        }
+        let x_256 : i32 = tree[x_250].data;
+        if ((7 <= x_256)) {
+          var x_294_phi : bool;
+          let x_269 : ptr<function, i32> = &(tree[x_250].leftIndex);
+          let x_270 : i32 = *(x_269);
+          if ((x_270 == -1)) {
+            let x_277 : f32 = x_8.injectionSwitch.y;
+            let x_279 : f32 = x_8.injectionSwitch.x;
+            if ((x_277 < x_279)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_269) = 4;
+            tree[4] = BST(7, -1, -1);
+            loop {
+              x_294_phi = x_247;
+              if ((0 < i32(x_277))) {
+              } else {
+                break;
+              }
+              x_294_phi = true;
+              break;
+            }
+            x_294 = x_294_phi;
+            x_296_phi = x_294;
+            if (x_294) {
+              break;
+            }
+          } else {
+            x_275 = *(x_269);
+            x_248_phi = x_247;
+            x_251_phi = x_275;
+            continue;
+          }
+        } else {
+          let x_261 : ptr<function, i32> = &(tree[x_250].rightIndex);
+          let x_262 : i32 = *(x_261);
+          if ((x_262 == -1)) {
+            *(x_261) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_296_phi = true;
+            break;
+          } else {
+            x_267 = *(x_261);
+            x_248_phi = x_247;
+            x_251_phi = x_267;
+            continue;
+          }
+          return;
+        }
+        x_248_phi = x_294;
+        x_251_phi = x_250;
+
+        continuing {
+          x_248 = x_248_phi;
+          x_251 = x_251_phi;
+          x_247_phi = x_248;
+          x_250_phi = x_251;
+        }
+      }
+      let x_296 : bool = x_296_phi;
+      if (x_296) {
+        break;
+      }
+    }
+  }
+  var x_301 : bool;
+  var x_348 : bool;
+  var x_301_phi : bool;
+  var x_304_phi : i32;
+  var x_350_phi : bool;
+  switch(0u) {
+    default: {
+      x_301_phi = false;
+      x_304_phi = 0;
+      loop {
+        var x_329 : i32;
+        var x_321 : i32;
+        var x_302 : bool;
+        var x_305 : i32;
+        var x_302_phi : bool;
+        var x_305_phi : i32;
+        x_301 = x_301_phi;
+        let x_304 : i32 = x_304_phi;
+        x_350_phi = x_301;
+        if ((x_304 <= 5)) {
+        } else {
+          break;
+        }
+        let x_310 : i32 = tree[x_304].data;
+        if ((8 <= x_310)) {
+          var x_348_phi : bool;
+          let x_323 : ptr<function, i32> = &(tree[x_304].leftIndex);
+          let x_324 : i32 = *(x_323);
+          if ((x_324 == -1)) {
+            let x_331 : f32 = x_8.injectionSwitch.y;
+            let x_333 : f32 = x_8.injectionSwitch.x;
+            if ((x_331 < x_333)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_323) = 5;
+            tree[5] = BST(8, -1, -1);
+            loop {
+              x_348_phi = x_301;
+              if ((0 < i32(x_331))) {
+              } else {
+                break;
+              }
+              x_348_phi = true;
+              break;
+            }
+            x_348 = x_348_phi;
+            x_350_phi = x_348;
+            if (x_348) {
+              break;
+            }
+          } else {
+            x_329 = *(x_323);
+            x_302_phi = x_301;
+            x_305_phi = x_329;
+            continue;
+          }
+        } else {
+          let x_315 : ptr<function, i32> = &(tree[x_304].rightIndex);
+          let x_316 : i32 = *(x_315);
+          if ((x_316 == -1)) {
+            *(x_315) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_350_phi = true;
+            break;
+          } else {
+            x_321 = *(x_315);
+            x_302_phi = x_301;
+            x_305_phi = x_321;
+            continue;
+          }
+          return;
+        }
+        x_302_phi = x_348;
+        x_305_phi = x_304;
+
+        continuing {
+          x_302 = x_302_phi;
+          x_305 = x_305_phi;
+          x_301_phi = x_302;
+          x_304_phi = x_305;
+        }
+      }
+      let x_350 : bool = x_350_phi;
+      if (x_350) {
+        break;
+      }
+    }
+  }
+  var x_355 : bool;
+  var x_402 : bool;
+  var x_355_phi : bool;
+  var x_358_phi : i32;
+  var x_404_phi : bool;
+  switch(0u) {
+    default: {
+      x_355_phi = false;
+      x_358_phi = 0;
+      loop {
+        var x_383 : i32;
+        var x_375 : i32;
+        var x_356 : bool;
+        var x_359 : i32;
+        var x_356_phi : bool;
+        var x_359_phi : i32;
+        x_355 = x_355_phi;
+        let x_358 : i32 = x_358_phi;
+        x_404_phi = x_355;
+        if ((x_358 <= 6)) {
+        } else {
+          break;
+        }
+        let x_364 : i32 = tree[x_358].data;
+        if ((2 <= x_364)) {
+          var x_402_phi : bool;
+          let x_377 : ptr<function, i32> = &(tree[x_358].leftIndex);
+          let x_378 : i32 = *(x_377);
+          if ((x_378 == -1)) {
+            let x_385 : f32 = x_8.injectionSwitch.y;
+            let x_387 : f32 = x_8.injectionSwitch.x;
+            if ((x_385 < x_387)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_377) = 6;
+            tree[6] = BST(2, -1, -1);
+            loop {
+              x_402_phi = x_355;
+              if ((0 < i32(x_385))) {
+              } else {
+                break;
+              }
+              x_402_phi = true;
+              break;
+            }
+            x_402 = x_402_phi;
+            x_404_phi = x_402;
+            if (x_402) {
+              break;
+            }
+          } else {
+            x_383 = *(x_377);
+            x_356_phi = x_355;
+            x_359_phi = x_383;
+            continue;
+          }
+        } else {
+          let x_369 : ptr<function, i32> = &(tree[x_358].rightIndex);
+          let x_370 : i32 = *(x_369);
+          if ((x_370 == -1)) {
+            *(x_369) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_404_phi = true;
+            break;
+          } else {
+            x_375 = *(x_369);
+            x_356_phi = x_355;
+            x_359_phi = x_375;
+            continue;
+          }
+          return;
+        }
+        x_356_phi = x_402;
+        x_359_phi = x_358;
+
+        continuing {
+          x_356 = x_356_phi;
+          x_359 = x_359_phi;
+          x_355_phi = x_356;
+          x_358_phi = x_359;
+        }
+      }
+      let x_404 : bool = x_404_phi;
+      if (x_404) {
+        break;
+      }
+    }
+  }
+  var x_409 : bool;
+  var x_456 : bool;
+  var x_409_phi : bool;
+  var x_412_phi : i32;
+  var x_458_phi : bool;
+  switch(0u) {
+    default: {
+      x_409_phi = false;
+      x_412_phi = 0;
+      loop {
+        var x_437 : i32;
+        var x_429 : i32;
+        var x_410 : bool;
+        var x_413 : i32;
+        var x_410_phi : bool;
+        var x_413_phi : i32;
+        x_409 = x_409_phi;
+        let x_412 : i32 = x_412_phi;
+        x_458_phi = x_409;
+        if ((x_412 <= 7)) {
+        } else {
+          break;
+        }
+        let x_418 : i32 = tree[x_412].data;
+        if ((6 <= x_418)) {
+          var x_456_phi : bool;
+          let x_431 : ptr<function, i32> = &(tree[x_412].leftIndex);
+          let x_432 : i32 = *(x_431);
+          if ((x_432 == -1)) {
+            let x_439 : f32 = x_8.injectionSwitch.y;
+            let x_441 : f32 = x_8.injectionSwitch.x;
+            if ((x_439 < x_441)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_431) = 7;
+            tree[7] = BST(6, -1, -1);
+            loop {
+              x_456_phi = x_409;
+              if ((0 < i32(x_439))) {
+              } else {
+                break;
+              }
+              x_456_phi = true;
+              break;
+            }
+            x_456 = x_456_phi;
+            x_458_phi = x_456;
+            if (x_456) {
+              break;
+            }
+          } else {
+            x_437 = *(x_431);
+            x_410_phi = x_409;
+            x_413_phi = x_437;
+            continue;
+          }
+        } else {
+          let x_423 : ptr<function, i32> = &(tree[x_412].rightIndex);
+          let x_424 : i32 = *(x_423);
+          if ((x_424 == -1)) {
+            *(x_423) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_458_phi = true;
+            break;
+          } else {
+            x_429 = *(x_423);
+            x_410_phi = x_409;
+            x_413_phi = x_429;
+            continue;
+          }
+          return;
+        }
+        x_410_phi = x_456;
+        x_413_phi = x_412;
+
+        continuing {
+          x_410 = x_410_phi;
+          x_413 = x_413_phi;
+          x_409_phi = x_410;
+          x_412_phi = x_413;
+        }
+      }
+      let x_458 : bool = x_458_phi;
+      if (x_458) {
+        break;
+      }
+    }
+  }
+  var x_463 : bool;
+  var x_510 : bool;
+  var x_463_phi : bool;
+  var x_466_phi : i32;
+  var x_512_phi : bool;
+  switch(0u) {
+    default: {
+      x_463_phi = false;
+      x_466_phi = 0;
+      loop {
+        var x_491 : i32;
+        var x_483 : i32;
+        var x_464 : bool;
+        var x_467 : i32;
+        var x_464_phi : bool;
+        var x_467_phi : i32;
+        x_463 = x_463_phi;
+        let x_466 : i32 = x_466_phi;
+        x_512_phi = x_463;
+        if ((x_466 <= 8)) {
+        } else {
+          break;
+        }
+        let x_472 : i32 = tree[x_466].data;
+        if ((17 <= x_472)) {
+          var x_510_phi : bool;
+          let x_485 : ptr<function, i32> = &(tree[x_466].leftIndex);
+          let x_486 : i32 = *(x_485);
+          if ((x_486 == -1)) {
+            let x_493 : f32 = x_8.injectionSwitch.y;
+            let x_495 : f32 = x_8.injectionSwitch.x;
+            if ((x_493 < x_495)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_485) = 8;
+            tree[8] = BST(17, -1, -1);
+            loop {
+              x_510_phi = x_463;
+              if ((0 < i32(x_493))) {
+              } else {
+                break;
+              }
+              x_510_phi = true;
+              break;
+            }
+            x_510 = x_510_phi;
+            x_512_phi = x_510;
+            if (x_510) {
+              break;
+            }
+          } else {
+            x_491 = *(x_485);
+            x_464_phi = x_463;
+            x_467_phi = x_491;
+            continue;
+          }
+        } else {
+          let x_477 : ptr<function, i32> = &(tree[x_466].rightIndex);
+          let x_478 : i32 = *(x_477);
+          if ((x_478 == -1)) {
+            *(x_477) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_512_phi = true;
+            break;
+          } else {
+            x_483 = *(x_477);
+            x_464_phi = x_463;
+            x_467_phi = x_483;
+            continue;
+          }
+          return;
+        }
+        x_464_phi = x_510;
+        x_467_phi = x_466;
+
+        continuing {
+          x_464 = x_464_phi;
+          x_467 = x_467_phi;
+          x_463_phi = x_464;
+          x_466_phi = x_467;
+        }
+      }
+      let x_512 : bool = x_512_phi;
+      if (x_512) {
+        break;
+      }
+    }
+  }
+  var x_517 : bool;
+  var x_564 : bool;
+  var x_517_phi : bool;
+  var x_520_phi : i32;
+  var x_566_phi : bool;
+  switch(0u) {
+    default: {
+      x_517_phi = false;
+      x_520_phi = 0;
+      loop {
+        var x_545 : i32;
+        var x_537 : i32;
+        var x_518 : bool;
+        var x_521 : i32;
+        var x_518_phi : bool;
+        var x_521_phi : i32;
+        x_517 = x_517_phi;
+        let x_520 : i32 = x_520_phi;
+        x_566_phi = x_517;
+        if ((x_520 <= 9)) {
+        } else {
+          break;
+        }
+        let x_526 : i32 = tree[x_520].data;
+        if ((13 <= x_526)) {
+          var x_564_phi : bool;
+          let x_539 : ptr<function, i32> = &(tree[x_520].leftIndex);
+          let x_540 : i32 = *(x_539);
+          if ((x_540 == -1)) {
+            let x_547 : f32 = x_8.injectionSwitch.y;
+            let x_549 : f32 = x_8.injectionSwitch.x;
+            if ((x_547 < x_549)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_539) = 9;
+            tree[9] = BST(13, -1, -1);
+            loop {
+              x_564_phi = x_517;
+              if ((0 < i32(x_547))) {
+              } else {
+                break;
+              }
+              x_564_phi = true;
+              break;
+            }
+            x_564 = x_564_phi;
+            x_566_phi = x_564;
+            if (x_564) {
+              break;
+            }
+          } else {
+            x_545 = *(x_539);
+            x_518_phi = x_517;
+            x_521_phi = x_545;
+            continue;
+          }
+        } else {
+          let x_531 : ptr<function, i32> = &(tree[x_520].rightIndex);
+          let x_532 : i32 = *(x_531);
+          if ((x_532 == -1)) {
+            *(x_531) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_566_phi = true;
+            break;
+          } else {
+            x_537 = *(x_531);
+            x_518_phi = x_517;
+            x_521_phi = x_537;
+            continue;
+          }
+          return;
+        }
+        x_518_phi = x_564;
+        x_521_phi = x_520;
+
+        continuing {
+          x_518 = x_518_phi;
+          x_521 = x_521_phi;
+          x_517_phi = x_518;
+          x_520_phi = x_521;
+        }
+      }
+      let x_566 : bool = x_566_phi;
+      if (x_566) {
+        break;
+      }
+    }
+  }
+  x_569_phi = 0;
+  x_572_phi = 0;
+  x_574_phi = 0;
+  loop {
+    var x_597 : i32;
+    var x_607 : i32;
+    var x_612 : i32;
+    var x_575 : i32;
+    var x_570_phi : i32;
+    var x_573_phi : i32;
+    let x_569 : i32 = x_569_phi;
+    x_572 = x_572_phi;
+    let x_574 : i32 = x_574_phi;
+    if ((x_574 < 20)) {
+    } else {
+      break;
+    }
+    var x_582_phi : i32;
+    var x_597_phi : i32;
+    var x_598_phi : bool;
+    switch(0u) {
+      default: {
+        x_582_phi = 0;
+        loop {
+          let x_582 : i32 = x_582_phi;
+          x_597_phi = x_569;
+          x_598_phi = false;
+          if ((x_582 != -1)) {
+          } else {
+            break;
+          }
+          let x_589 : BST = tree[x_582];
+          let x_590 : i32 = x_589.data;
+          let x_591 : i32 = x_589.leftIndex;
+          let x_592 : i32 = x_589.rightIndex;
+          if ((x_590 == x_574)) {
+            x_597_phi = x_574;
+            x_598_phi = true;
+            break;
+          }
+
+          continuing {
+            x_582_phi = select(x_591, x_592, (x_574 > x_590));
+          }
+        }
+        x_597 = x_597_phi;
+        let x_598 : bool = x_598_phi;
+        x_570_phi = x_597;
+        if (x_598) {
+          break;
+        }
+        x_570_phi = -1;
+      }
+    }
+    var x_570 : i32;
+    var x_606 : i32;
+    var x_611 : i32;
+    var x_607_phi : i32;
+    var x_612_phi : i32;
+    x_570 = x_570_phi;
+    switch(x_574) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        x_607_phi = x_572;
+        if ((x_570 == bitcast<i32>(x_574))) {
+          x_606 = bitcast<i32>((x_572 + bitcast<i32>(1)));
+          x_607_phi = x_606;
+        }
+        x_607 = x_607_phi;
+        x_573_phi = x_607;
+      }
+      default: {
+        x_612_phi = x_572;
+        if ((x_570 == bitcast<i32>(-1))) {
+          x_611 = bitcast<i32>((x_572 + bitcast<i32>(1)));
+          x_612_phi = x_611;
+        }
+        x_612 = x_612_phi;
+        x_573_phi = x_612;
+      }
+    }
+    let x_573 : i32 = x_573_phi;
+
+    continuing {
+      x_575 = (x_574 + 1);
+      x_569_phi = x_570;
+      x_572_phi = x_573;
+      x_574_phi = x_575;
+    }
+  }
+  if ((x_572 == bitcast<i32>(20))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
new file mode 100644
index 0000000..c4e135a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
@@ -0,0 +1,977 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var tree : array<BST, 10>;
+  var x_67 : bool;
+  var x_114 : bool;
+  var x_572 : i32;
+  var x_67_phi : bool;
+  var x_70_phi : i32;
+  var x_116_phi : bool;
+  var x_119_phi : i32;
+  var x_569_phi : i32;
+  var x_572_phi : i32;
+  var x_574_phi : i32;
+  tree[0] = BST(9, -1, -1);
+  switch(0u) {
+    default: {
+      x_67_phi = false;
+      x_70_phi = 0;
+      loop {
+        var x_95 : i32;
+        var x_87 : i32;
+        var x_68 : bool;
+        var x_71 : i32;
+        var x_68_phi : bool;
+        var x_71_phi : i32;
+        x_67 = x_67_phi;
+        let x_70 : i32 = x_70_phi;
+        x_116_phi = x_67;
+        if ((x_70 <= 1)) {
+        } else {
+          break;
+        }
+        let x_76 : i32 = tree[x_70].data;
+        if ((5 <= x_76)) {
+          var x_114_phi : bool;
+          let x_89 : ptr<function, i32> = &(tree[x_70].leftIndex);
+          let x_90 : i32 = *(x_89);
+          if ((x_90 == -1)) {
+            let x_97 : f32 = x_8.injectionSwitch.y;
+            let x_99 : f32 = x_8.injectionSwitch.x;
+            if ((x_97 < x_99)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_89) = 1;
+            tree[1] = BST(5, -1, -1);
+            loop {
+              x_114_phi = x_67;
+              if ((0 < i32(x_97))) {
+              } else {
+                break;
+              }
+              x_114_phi = true;
+              break;
+            }
+            x_114 = x_114_phi;
+            x_116_phi = x_114;
+            if (x_114) {
+              break;
+            }
+          } else {
+            x_95 = *(x_89);
+            x_68_phi = x_67;
+            x_71_phi = x_95;
+            continue;
+          }
+        } else {
+          let x_81 : ptr<function, i32> = &(tree[x_70].rightIndex);
+          let x_82 : i32 = *(x_81);
+          if ((x_82 == -1)) {
+            *(x_81) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_116_phi = true;
+            break;
+          } else {
+            x_87 = *(x_81);
+            x_68_phi = x_67;
+            x_71_phi = x_87;
+            continue;
+          }
+          return;
+        }
+        x_68_phi = x_114;
+        x_71_phi = x_70;
+
+        continuing {
+          x_68 = x_68_phi;
+          x_71 = x_71_phi;
+          x_67_phi = x_68;
+          x_70_phi = x_71;
+        }
+      }
+      let x_116 : bool = x_116_phi;
+      if (x_116) {
+        break;
+      }
+    }
+  }
+  x_119_phi = 0;
+  loop {
+    var x_133 : bool;
+    var x_120 : i32;
+    var x_134_phi : bool;
+    let x_119 : i32 = x_119_phi;
+    let x_125 : f32 = gl_FragCoord.y;
+    let x_126 : bool = (x_125 < 0.0);
+    x_134_phi = x_126;
+    if (!(x_126)) {
+      let x_131 : f32 = x_8.injectionSwitch.y;
+      x_133 = (x_119 != i32(x_131));
+      x_134_phi = x_133;
+    }
+    let x_134 : bool = x_134_phi;
+    if (x_134) {
+    } else {
+      break;
+    }
+    var x_139 : bool;
+    var x_186 : bool;
+    var x_139_phi : bool;
+    var x_142_phi : i32;
+    var x_188_phi : bool;
+    switch(0u) {
+      default: {
+        x_139_phi = false;
+        x_142_phi = 0;
+        loop {
+          var x_167 : i32;
+          var x_159 : i32;
+          var x_140 : bool;
+          var x_143 : i32;
+          var x_140_phi : bool;
+          var x_143_phi : i32;
+          x_139 = x_139_phi;
+          let x_142 : i32 = x_142_phi;
+          x_188_phi = x_139;
+          if ((x_142 <= 2)) {
+          } else {
+            break;
+          }
+          let x_148 : i32 = tree[x_142].data;
+          if ((12 <= x_148)) {
+            var x_186_phi : bool;
+            let x_161 : ptr<function, i32> = &(tree[x_142].leftIndex);
+            let x_162 : i32 = *(x_161);
+            if ((x_162 == -1)) {
+              let x_169 : f32 = x_8.injectionSwitch.y;
+              let x_171 : f32 = x_8.injectionSwitch.x;
+              if ((x_169 < x_171)) {
+                loop {
+                  discard;
+                }
+                return;
+              }
+              *(x_161) = 2;
+              tree[2] = BST(12, -1, -1);
+              loop {
+                x_186_phi = x_139;
+                if ((0 < i32(x_169))) {
+                } else {
+                  break;
+                }
+                x_186_phi = true;
+                break;
+              }
+              x_186 = x_186_phi;
+              x_188_phi = x_186;
+              if (x_186) {
+                break;
+              }
+            } else {
+              x_167 = *(x_161);
+              x_140_phi = x_139;
+              x_143_phi = x_167;
+              continue;
+            }
+          } else {
+            let x_153 : ptr<function, i32> = &(tree[x_142].rightIndex);
+            let x_154 : i32 = *(x_153);
+            if ((x_154 == -1)) {
+              *(x_153) = 2;
+              tree[2] = BST(12, -1, -1);
+              x_188_phi = true;
+              break;
+            } else {
+              x_159 = *(x_153);
+              x_140_phi = x_139;
+              x_143_phi = x_159;
+              continue;
+            }
+            return;
+          }
+          x_140_phi = x_186;
+          x_143_phi = x_142;
+
+          continuing {
+            x_140 = x_140_phi;
+            x_143 = x_143_phi;
+            x_139_phi = x_140;
+            x_142_phi = x_143;
+          }
+        }
+        let x_188 : bool = x_188_phi;
+        if (x_188) {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      x_120 = (x_119 + 1);
+      x_119_phi = x_120;
+    }
+  }
+  var x_193 : bool;
+  var x_240 : bool;
+  var x_193_phi : bool;
+  var x_196_phi : i32;
+  var x_242_phi : bool;
+  switch(0u) {
+    default: {
+      x_193_phi = false;
+      x_196_phi = 0;
+      loop {
+        var x_221 : i32;
+        var x_213 : i32;
+        var x_194 : bool;
+        var x_197 : i32;
+        var x_194_phi : bool;
+        var x_197_phi : i32;
+        x_193 = x_193_phi;
+        let x_196 : i32 = x_196_phi;
+        x_242_phi = x_193;
+        if ((x_196 <= 3)) {
+        } else {
+          break;
+        }
+        let x_202 : i32 = tree[x_196].data;
+        if ((15 <= x_202)) {
+          var x_240_phi : bool;
+          let x_215 : ptr<function, i32> = &(tree[x_196].leftIndex);
+          let x_216 : i32 = *(x_215);
+          if ((x_216 == -1)) {
+            let x_223 : f32 = x_8.injectionSwitch.y;
+            let x_225 : f32 = x_8.injectionSwitch.x;
+            if ((x_223 < x_225)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_215) = 3;
+            tree[3] = BST(15, -1, -1);
+            loop {
+              x_240_phi = x_193;
+              if ((0 < i32(x_223))) {
+              } else {
+                break;
+              }
+              x_240_phi = true;
+              break;
+            }
+            x_240 = x_240_phi;
+            x_242_phi = x_240;
+            if (x_240) {
+              break;
+            }
+          } else {
+            x_221 = *(x_215);
+            x_194_phi = x_193;
+            x_197_phi = x_221;
+            continue;
+          }
+        } else {
+          let x_207 : ptr<function, i32> = &(tree[x_196].rightIndex);
+          let x_208 : i32 = *(x_207);
+          if ((x_208 == -1)) {
+            *(x_207) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_242_phi = true;
+            break;
+          } else {
+            x_213 = *(x_207);
+            x_194_phi = x_193;
+            x_197_phi = x_213;
+            continue;
+          }
+          return;
+        }
+        x_194_phi = x_240;
+        x_197_phi = x_196;
+
+        continuing {
+          x_194 = x_194_phi;
+          x_197 = x_197_phi;
+          x_193_phi = x_194;
+          x_196_phi = x_197;
+        }
+      }
+      let x_242 : bool = x_242_phi;
+      if (x_242) {
+        break;
+      }
+    }
+  }
+  var x_247 : bool;
+  var x_294 : bool;
+  var x_247_phi : bool;
+  var x_250_phi : i32;
+  var x_296_phi : bool;
+  switch(0u) {
+    default: {
+      x_247_phi = false;
+      x_250_phi = 0;
+      loop {
+        var x_275 : i32;
+        var x_267 : i32;
+        var x_248 : bool;
+        var x_251 : i32;
+        var x_248_phi : bool;
+        var x_251_phi : i32;
+        x_247 = x_247_phi;
+        let x_250 : i32 = x_250_phi;
+        x_296_phi = x_247;
+        if ((x_250 <= 4)) {
+        } else {
+          break;
+        }
+        let x_256 : i32 = tree[x_250].data;
+        if ((7 <= x_256)) {
+          var x_294_phi : bool;
+          let x_269 : ptr<function, i32> = &(tree[x_250].leftIndex);
+          let x_270 : i32 = *(x_269);
+          if ((x_270 == -1)) {
+            let x_277 : f32 = x_8.injectionSwitch.y;
+            let x_279 : f32 = x_8.injectionSwitch.x;
+            if ((x_277 < x_279)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_269) = 4;
+            tree[4] = BST(7, -1, -1);
+            loop {
+              x_294_phi = x_247;
+              if ((0 < i32(x_277))) {
+              } else {
+                break;
+              }
+              x_294_phi = true;
+              break;
+            }
+            x_294 = x_294_phi;
+            x_296_phi = x_294;
+            if (x_294) {
+              break;
+            }
+          } else {
+            x_275 = *(x_269);
+            x_248_phi = x_247;
+            x_251_phi = x_275;
+            continue;
+          }
+        } else {
+          let x_261 : ptr<function, i32> = &(tree[x_250].rightIndex);
+          let x_262 : i32 = *(x_261);
+          if ((x_262 == -1)) {
+            *(x_261) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_296_phi = true;
+            break;
+          } else {
+            x_267 = *(x_261);
+            x_248_phi = x_247;
+            x_251_phi = x_267;
+            continue;
+          }
+          return;
+        }
+        x_248_phi = x_294;
+        x_251_phi = x_250;
+
+        continuing {
+          x_248 = x_248_phi;
+          x_251 = x_251_phi;
+          x_247_phi = x_248;
+          x_250_phi = x_251;
+        }
+      }
+      let x_296 : bool = x_296_phi;
+      if (x_296) {
+        break;
+      }
+    }
+  }
+  var x_301 : bool;
+  var x_348 : bool;
+  var x_301_phi : bool;
+  var x_304_phi : i32;
+  var x_350_phi : bool;
+  switch(0u) {
+    default: {
+      x_301_phi = false;
+      x_304_phi = 0;
+      loop {
+        var x_329 : i32;
+        var x_321 : i32;
+        var x_302 : bool;
+        var x_305 : i32;
+        var x_302_phi : bool;
+        var x_305_phi : i32;
+        x_301 = x_301_phi;
+        let x_304 : i32 = x_304_phi;
+        x_350_phi = x_301;
+        if ((x_304 <= 5)) {
+        } else {
+          break;
+        }
+        let x_310 : i32 = tree[x_304].data;
+        if ((8 <= x_310)) {
+          var x_348_phi : bool;
+          let x_323 : ptr<function, i32> = &(tree[x_304].leftIndex);
+          let x_324 : i32 = *(x_323);
+          if ((x_324 == -1)) {
+            let x_331 : f32 = x_8.injectionSwitch.y;
+            let x_333 : f32 = x_8.injectionSwitch.x;
+            if ((x_331 < x_333)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_323) = 5;
+            tree[5] = BST(8, -1, -1);
+            loop {
+              x_348_phi = x_301;
+              if ((0 < i32(x_331))) {
+              } else {
+                break;
+              }
+              x_348_phi = true;
+              break;
+            }
+            x_348 = x_348_phi;
+            x_350_phi = x_348;
+            if (x_348) {
+              break;
+            }
+          } else {
+            x_329 = *(x_323);
+            x_302_phi = x_301;
+            x_305_phi = x_329;
+            continue;
+          }
+        } else {
+          let x_315 : ptr<function, i32> = &(tree[x_304].rightIndex);
+          let x_316 : i32 = *(x_315);
+          if ((x_316 == -1)) {
+            *(x_315) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_350_phi = true;
+            break;
+          } else {
+            x_321 = *(x_315);
+            x_302_phi = x_301;
+            x_305_phi = x_321;
+            continue;
+          }
+          return;
+        }
+        x_302_phi = x_348;
+        x_305_phi = x_304;
+
+        continuing {
+          x_302 = x_302_phi;
+          x_305 = x_305_phi;
+          x_301_phi = x_302;
+          x_304_phi = x_305;
+        }
+      }
+      let x_350 : bool = x_350_phi;
+      if (x_350) {
+        break;
+      }
+    }
+  }
+  var x_355 : bool;
+  var x_402 : bool;
+  var x_355_phi : bool;
+  var x_358_phi : i32;
+  var x_404_phi : bool;
+  switch(0u) {
+    default: {
+      x_355_phi = false;
+      x_358_phi = 0;
+      loop {
+        var x_383 : i32;
+        var x_375 : i32;
+        var x_356 : bool;
+        var x_359 : i32;
+        var x_356_phi : bool;
+        var x_359_phi : i32;
+        x_355 = x_355_phi;
+        let x_358 : i32 = x_358_phi;
+        x_404_phi = x_355;
+        if ((x_358 <= 6)) {
+        } else {
+          break;
+        }
+        let x_364 : i32 = tree[x_358].data;
+        if ((2 <= x_364)) {
+          var x_402_phi : bool;
+          let x_377 : ptr<function, i32> = &(tree[x_358].leftIndex);
+          let x_378 : i32 = *(x_377);
+          if ((x_378 == -1)) {
+            let x_385 : f32 = x_8.injectionSwitch.y;
+            let x_387 : f32 = x_8.injectionSwitch.x;
+            if ((x_385 < x_387)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_377) = 6;
+            tree[6] = BST(2, -1, -1);
+            loop {
+              x_402_phi = x_355;
+              if ((0 < i32(x_385))) {
+              } else {
+                break;
+              }
+              x_402_phi = true;
+              break;
+            }
+            x_402 = x_402_phi;
+            x_404_phi = x_402;
+            if (x_402) {
+              break;
+            }
+          } else {
+            x_383 = *(x_377);
+            x_356_phi = x_355;
+            x_359_phi = x_383;
+            continue;
+          }
+        } else {
+          let x_369 : ptr<function, i32> = &(tree[x_358].rightIndex);
+          let x_370 : i32 = *(x_369);
+          if ((x_370 == -1)) {
+            *(x_369) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_404_phi = true;
+            break;
+          } else {
+            x_375 = *(x_369);
+            x_356_phi = x_355;
+            x_359_phi = x_375;
+            continue;
+          }
+          return;
+        }
+        x_356_phi = x_402;
+        x_359_phi = x_358;
+
+        continuing {
+          x_356 = x_356_phi;
+          x_359 = x_359_phi;
+          x_355_phi = x_356;
+          x_358_phi = x_359;
+        }
+      }
+      let x_404 : bool = x_404_phi;
+      if (x_404) {
+        break;
+      }
+    }
+  }
+  var x_409 : bool;
+  var x_456 : bool;
+  var x_409_phi : bool;
+  var x_412_phi : i32;
+  var x_458_phi : bool;
+  switch(0u) {
+    default: {
+      x_409_phi = false;
+      x_412_phi = 0;
+      loop {
+        var x_437 : i32;
+        var x_429 : i32;
+        var x_410 : bool;
+        var x_413 : i32;
+        var x_410_phi : bool;
+        var x_413_phi : i32;
+        x_409 = x_409_phi;
+        let x_412 : i32 = x_412_phi;
+        x_458_phi = x_409;
+        if ((x_412 <= 7)) {
+        } else {
+          break;
+        }
+        let x_418 : i32 = tree[x_412].data;
+        if ((6 <= x_418)) {
+          var x_456_phi : bool;
+          let x_431 : ptr<function, i32> = &(tree[x_412].leftIndex);
+          let x_432 : i32 = *(x_431);
+          if ((x_432 == -1)) {
+            let x_439 : f32 = x_8.injectionSwitch.y;
+            let x_441 : f32 = x_8.injectionSwitch.x;
+            if ((x_439 < x_441)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_431) = 7;
+            tree[7] = BST(6, -1, -1);
+            loop {
+              x_456_phi = x_409;
+              if ((0 < i32(x_439))) {
+              } else {
+                break;
+              }
+              x_456_phi = true;
+              break;
+            }
+            x_456 = x_456_phi;
+            x_458_phi = x_456;
+            if (x_456) {
+              break;
+            }
+          } else {
+            x_437 = *(x_431);
+            x_410_phi = x_409;
+            x_413_phi = x_437;
+            continue;
+          }
+        } else {
+          let x_423 : ptr<function, i32> = &(tree[x_412].rightIndex);
+          let x_424 : i32 = *(x_423);
+          if ((x_424 == -1)) {
+            *(x_423) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_458_phi = true;
+            break;
+          } else {
+            x_429 = *(x_423);
+            x_410_phi = x_409;
+            x_413_phi = x_429;
+            continue;
+          }
+          return;
+        }
+        x_410_phi = x_456;
+        x_413_phi = x_412;
+
+        continuing {
+          x_410 = x_410_phi;
+          x_413 = x_413_phi;
+          x_409_phi = x_410;
+          x_412_phi = x_413;
+        }
+      }
+      let x_458 : bool = x_458_phi;
+      if (x_458) {
+        break;
+      }
+    }
+  }
+  var x_463 : bool;
+  var x_510 : bool;
+  var x_463_phi : bool;
+  var x_466_phi : i32;
+  var x_512_phi : bool;
+  switch(0u) {
+    default: {
+      x_463_phi = false;
+      x_466_phi = 0;
+      loop {
+        var x_491 : i32;
+        var x_483 : i32;
+        var x_464 : bool;
+        var x_467 : i32;
+        var x_464_phi : bool;
+        var x_467_phi : i32;
+        x_463 = x_463_phi;
+        let x_466 : i32 = x_466_phi;
+        x_512_phi = x_463;
+        if ((x_466 <= 8)) {
+        } else {
+          break;
+        }
+        let x_472 : i32 = tree[x_466].data;
+        if ((17 <= x_472)) {
+          var x_510_phi : bool;
+          let x_485 : ptr<function, i32> = &(tree[x_466].leftIndex);
+          let x_486 : i32 = *(x_485);
+          if ((x_486 == -1)) {
+            let x_493 : f32 = x_8.injectionSwitch.y;
+            let x_495 : f32 = x_8.injectionSwitch.x;
+            if ((x_493 < x_495)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_485) = 8;
+            tree[8] = BST(17, -1, -1);
+            loop {
+              x_510_phi = x_463;
+              if ((0 < i32(x_493))) {
+              } else {
+                break;
+              }
+              x_510_phi = true;
+              break;
+            }
+            x_510 = x_510_phi;
+            x_512_phi = x_510;
+            if (x_510) {
+              break;
+            }
+          } else {
+            x_491 = *(x_485);
+            x_464_phi = x_463;
+            x_467_phi = x_491;
+            continue;
+          }
+        } else {
+          let x_477 : ptr<function, i32> = &(tree[x_466].rightIndex);
+          let x_478 : i32 = *(x_477);
+          if ((x_478 == -1)) {
+            *(x_477) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_512_phi = true;
+            break;
+          } else {
+            x_483 = *(x_477);
+            x_464_phi = x_463;
+            x_467_phi = x_483;
+            continue;
+          }
+          return;
+        }
+        x_464_phi = x_510;
+        x_467_phi = x_466;
+
+        continuing {
+          x_464 = x_464_phi;
+          x_467 = x_467_phi;
+          x_463_phi = x_464;
+          x_466_phi = x_467;
+        }
+      }
+      let x_512 : bool = x_512_phi;
+      if (x_512) {
+        break;
+      }
+    }
+  }
+  var x_517 : bool;
+  var x_564 : bool;
+  var x_517_phi : bool;
+  var x_520_phi : i32;
+  var x_566_phi : bool;
+  switch(0u) {
+    default: {
+      x_517_phi = false;
+      x_520_phi = 0;
+      loop {
+        var x_545 : i32;
+        var x_537 : i32;
+        var x_518 : bool;
+        var x_521 : i32;
+        var x_518_phi : bool;
+        var x_521_phi : i32;
+        x_517 = x_517_phi;
+        let x_520 : i32 = x_520_phi;
+        x_566_phi = x_517;
+        if ((x_520 <= 9)) {
+        } else {
+          break;
+        }
+        let x_526 : i32 = tree[x_520].data;
+        if ((13 <= x_526)) {
+          var x_564_phi : bool;
+          let x_539 : ptr<function, i32> = &(tree[x_520].leftIndex);
+          let x_540 : i32 = *(x_539);
+          if ((x_540 == -1)) {
+            let x_547 : f32 = x_8.injectionSwitch.y;
+            let x_549 : f32 = x_8.injectionSwitch.x;
+            if ((x_547 < x_549)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_539) = 9;
+            tree[9] = BST(13, -1, -1);
+            loop {
+              x_564_phi = x_517;
+              if ((0 < i32(x_547))) {
+              } else {
+                break;
+              }
+              x_564_phi = true;
+              break;
+            }
+            x_564 = x_564_phi;
+            x_566_phi = x_564;
+            if (x_564) {
+              break;
+            }
+          } else {
+            x_545 = *(x_539);
+            x_518_phi = x_517;
+            x_521_phi = x_545;
+            continue;
+          }
+        } else {
+          let x_531 : ptr<function, i32> = &(tree[x_520].rightIndex);
+          let x_532 : i32 = *(x_531);
+          if ((x_532 == -1)) {
+            *(x_531) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_566_phi = true;
+            break;
+          } else {
+            x_537 = *(x_531);
+            x_518_phi = x_517;
+            x_521_phi = x_537;
+            continue;
+          }
+          return;
+        }
+        x_518_phi = x_564;
+        x_521_phi = x_520;
+
+        continuing {
+          x_518 = x_518_phi;
+          x_521 = x_521_phi;
+          x_517_phi = x_518;
+          x_520_phi = x_521;
+        }
+      }
+      let x_566 : bool = x_566_phi;
+      if (x_566) {
+        break;
+      }
+    }
+  }
+  x_569_phi = 0;
+  x_572_phi = 0;
+  x_574_phi = 0;
+  loop {
+    var x_597 : i32;
+    var x_607 : i32;
+    var x_612 : i32;
+    var x_575 : i32;
+    var x_570_phi : i32;
+    var x_573_phi : i32;
+    let x_569 : i32 = x_569_phi;
+    x_572 = x_572_phi;
+    let x_574 : i32 = x_574_phi;
+    if ((x_574 < 20)) {
+    } else {
+      break;
+    }
+    var x_582_phi : i32;
+    var x_597_phi : i32;
+    var x_598_phi : bool;
+    switch(0u) {
+      default: {
+        x_582_phi = 0;
+        loop {
+          let x_582 : i32 = x_582_phi;
+          x_597_phi = x_569;
+          x_598_phi = false;
+          if ((x_582 != -1)) {
+          } else {
+            break;
+          }
+          let x_589 : BST = tree[x_582];
+          let x_590 : i32 = x_589.data;
+          let x_591 : i32 = x_589.leftIndex;
+          let x_592 : i32 = x_589.rightIndex;
+          if ((x_590 == x_574)) {
+            x_597_phi = x_574;
+            x_598_phi = true;
+            break;
+          }
+
+          continuing {
+            x_582_phi = select(x_591, x_592, (x_574 > x_590));
+          }
+        }
+        x_597 = x_597_phi;
+        let x_598 : bool = x_598_phi;
+        x_570_phi = x_597;
+        if (x_598) {
+          break;
+        }
+        x_570_phi = -1;
+      }
+    }
+    var x_570 : i32;
+    var x_606 : i32;
+    var x_611 : i32;
+    var x_607_phi : i32;
+    var x_612_phi : i32;
+    x_570 = x_570_phi;
+    switch(x_574) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        x_607_phi = x_572;
+        if ((x_570 == bitcast<i32>(x_574))) {
+          x_606 = bitcast<i32>((x_572 + bitcast<i32>(1)));
+          x_607_phi = x_606;
+        }
+        x_607 = x_607_phi;
+        x_573_phi = x_607;
+      }
+      default: {
+        x_612_phi = x_572;
+        if ((x_570 == bitcast<i32>(-1))) {
+          x_611 = bitcast<i32>((x_572 + bitcast<i32>(1)));
+          x_612_phi = x_611;
+        }
+        x_612 = x_612_phi;
+        x_573_phi = x_612;
+      }
+    }
+    let x_573 : i32 = x_573_phi;
+
+    continuing {
+      x_575 = (x_574 + 1);
+      x_569_phi = x_570;
+      x_572_phi = x_573;
+      x_574_phi = x_575;
+    }
+  }
+  if ((x_572 == bitcast<i32>(20))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.hlsl
new file mode 100755
index 0000000..46480e1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.hlsl
@@ -0,0 +1,1151 @@
+SKIP: FAILED
+
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+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() {
+  BST tree[10] = (BST[10])0;
+  bool x_67 = false;
+  bool x_114 = false;
+  int x_572 = 0;
+  bool x_67_phi = false;
+  int x_70_phi = 0;
+  bool x_116_phi = false;
+  int x_119_phi = 0;
+  int x_569_phi = 0;
+  int x_572_phi = 0;
+  int x_574_phi = 0;
+  const BST tint_symbol_5 = {9, -1, -1};
+  tree[0] = tint_symbol_5;
+  switch(0u) {
+    default: {
+      x_67_phi = false;
+      x_70_phi = 0;
+      while (true) {
+        int x_95 = 0;
+        int x_87 = 0;
+        bool x_68 = false;
+        int x_71 = 0;
+        bool x_68_phi = false;
+        int x_71_phi = 0;
+        x_67 = x_67_phi;
+        const int x_70 = x_70_phi;
+        x_116_phi = x_67;
+        if ((x_70 <= 1)) {
+        } else {
+          break;
+        }
+        const int x_76 = tree[x_70].data;
+        if ((5 <= x_76)) {
+          bool x_114_phi = false;
+          const int x_89_save = x_70;
+          const int x_90 = tree[x_89_save].leftIndex;
+          if ((x_90 == -1)) {
+            const float x_97 = asfloat(x_8[0].y);
+            const float x_99 = asfloat(x_8[0].x);
+            if ((x_97 < x_99)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_89_save].leftIndex = 1;
+            const BST tint_symbol_6 = {5, -1, -1};
+            tree[1] = tint_symbol_6;
+            while (true) {
+              x_114_phi = x_67;
+              if ((0 < int(x_97))) {
+              } else {
+                break;
+              }
+              x_114_phi = true;
+              break;
+            }
+            x_114 = x_114_phi;
+            x_116_phi = x_114;
+            if (x_114) {
+              break;
+            }
+          } else {
+            x_95 = tree[x_89_save].leftIndex;
+            x_68_phi = x_67;
+            x_71_phi = x_95;
+            {
+              x_68 = x_68_phi;
+              x_71 = x_71_phi;
+              x_67_phi = x_68;
+              x_70_phi = x_71;
+            }
+            continue;
+          }
+        } else {
+          const int x_81_save = x_70;
+          const int x_82 = tree[x_81_save].rightIndex;
+          if ((x_82 == -1)) {
+            tree[x_81_save].rightIndex = 1;
+            const BST tint_symbol_7 = {5, -1, -1};
+            tree[1] = tint_symbol_7;
+            x_116_phi = true;
+            break;
+          } else {
+            x_87 = tree[x_81_save].rightIndex;
+            x_68_phi = x_67;
+            x_71_phi = x_87;
+            {
+              x_68 = x_68_phi;
+              x_71 = x_71_phi;
+              x_67_phi = x_68;
+              x_70_phi = x_71;
+            }
+            continue;
+          }
+          return;
+        }
+        x_68_phi = x_114;
+        x_71_phi = x_70;
+        {
+          x_68 = x_68_phi;
+          x_71 = x_71_phi;
+          x_67_phi = x_68;
+          x_70_phi = x_71;
+        }
+      }
+      if (x_116_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  x_119_phi = 0;
+  while (true) {
+    bool x_133 = false;
+    int x_120 = 0;
+    bool x_134_phi = false;
+    const int x_119 = x_119_phi;
+    const float x_125 = gl_FragCoord.y;
+    const bool x_126 = (x_125 < 0.0f);
+    x_134_phi = x_126;
+    if (!(x_126)) {
+      const float x_131 = asfloat(x_8[0].y);
+      x_133 = (x_119 != int(x_131));
+      x_134_phi = x_133;
+    }
+    if (x_134_phi) {
+    } else {
+      break;
+    }
+    bool x_139 = false;
+    bool x_186 = false;
+    bool x_139_phi = false;
+    int x_142_phi = 0;
+    bool x_188_phi = false;
+    switch(0u) {
+      default: {
+        x_139_phi = false;
+        x_142_phi = 0;
+        while (true) {
+          int x_167 = 0;
+          int x_159 = 0;
+          bool x_140 = false;
+          int x_143 = 0;
+          bool x_140_phi = false;
+          int x_143_phi = 0;
+          x_139 = x_139_phi;
+          const int x_142 = x_142_phi;
+          x_188_phi = x_139;
+          if ((x_142 <= 2)) {
+          } else {
+            break;
+          }
+          const int x_148 = tree[x_142].data;
+          if ((12 <= x_148)) {
+            bool x_186_phi = false;
+            const int x_161_save = x_142;
+            const int x_162 = tree[x_161_save].leftIndex;
+            if ((x_162 == -1)) {
+              const float x_169 = asfloat(x_8[0].y);
+              const float x_171 = asfloat(x_8[0].x);
+              if ((x_169 < x_171)) {
+                while (true) {
+                  discard;
+                }
+                return;
+              }
+              tree[x_161_save].leftIndex = 2;
+              const BST tint_symbol_8 = {12, -1, -1};
+              tree[2] = tint_symbol_8;
+              while (true) {
+                x_186_phi = x_139;
+                if ((0 < int(x_169))) {
+                } else {
+                  break;
+                }
+                x_186_phi = true;
+                break;
+              }
+              x_186 = x_186_phi;
+              x_188_phi = x_186;
+              if (x_186) {
+                break;
+              }
+            } else {
+              x_167 = tree[x_161_save].leftIndex;
+              x_140_phi = x_139;
+              x_143_phi = x_167;
+              {
+                x_140 = x_140_phi;
+                x_143 = x_143_phi;
+                x_139_phi = x_140;
+                x_142_phi = x_143;
+              }
+              continue;
+            }
+          } else {
+            const int x_153_save = x_142;
+            const int x_154 = tree[x_153_save].rightIndex;
+            if ((x_154 == -1)) {
+              tree[x_153_save].rightIndex = 2;
+              const BST tint_symbol_9 = {12, -1, -1};
+              tree[2] = tint_symbol_9;
+              x_188_phi = true;
+              break;
+            } else {
+              x_159 = tree[x_153_save].rightIndex;
+              x_140_phi = x_139;
+              x_143_phi = x_159;
+              {
+                x_140 = x_140_phi;
+                x_143 = x_143_phi;
+                x_139_phi = x_140;
+                x_142_phi = x_143;
+              }
+              continue;
+            }
+            return;
+          }
+          x_140_phi = x_186;
+          x_143_phi = x_142;
+          {
+            x_140 = x_140_phi;
+            x_143 = x_143_phi;
+            x_139_phi = x_140;
+            x_142_phi = x_143;
+          }
+        }
+        if (x_188_phi) {
+          break;
+        }
+        break;
+      }
+    }
+    {
+      x_120 = (x_119 + 1);
+      x_119_phi = x_120;
+    }
+  }
+  bool x_193 = false;
+  bool x_240 = false;
+  bool x_193_phi = false;
+  int x_196_phi = 0;
+  bool x_242_phi = false;
+  switch(0u) {
+    default: {
+      x_193_phi = false;
+      x_196_phi = 0;
+      while (true) {
+        int x_221 = 0;
+        int x_213 = 0;
+        bool x_194 = false;
+        int x_197 = 0;
+        bool x_194_phi = false;
+        int x_197_phi = 0;
+        x_193 = x_193_phi;
+        const int x_196 = x_196_phi;
+        x_242_phi = x_193;
+        if ((x_196 <= 3)) {
+        } else {
+          break;
+        }
+        const int x_202 = tree[x_196].data;
+        if ((15 <= x_202)) {
+          bool x_240_phi = false;
+          const int x_215_save = x_196;
+          const int x_216 = tree[x_215_save].leftIndex;
+          if ((x_216 == -1)) {
+            const float x_223 = asfloat(x_8[0].y);
+            const float x_225 = asfloat(x_8[0].x);
+            if ((x_223 < x_225)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_215_save].leftIndex = 3;
+            const BST tint_symbol_10 = {15, -1, -1};
+            tree[3] = tint_symbol_10;
+            while (true) {
+              x_240_phi = x_193;
+              if ((0 < int(x_223))) {
+              } else {
+                break;
+              }
+              x_240_phi = true;
+              break;
+            }
+            x_240 = x_240_phi;
+            x_242_phi = x_240;
+            if (x_240) {
+              break;
+            }
+          } else {
+            x_221 = tree[x_215_save].leftIndex;
+            x_194_phi = x_193;
+            x_197_phi = x_221;
+            {
+              x_194 = x_194_phi;
+              x_197 = x_197_phi;
+              x_193_phi = x_194;
+              x_196_phi = x_197;
+            }
+            continue;
+          }
+        } else {
+          const int x_207_save = x_196;
+          const int x_208 = tree[x_207_save].rightIndex;
+          if ((x_208 == -1)) {
+            tree[x_207_save].rightIndex = 3;
+            const BST tint_symbol_11 = {15, -1, -1};
+            tree[3] = tint_symbol_11;
+            x_242_phi = true;
+            break;
+          } else {
+            x_213 = tree[x_207_save].rightIndex;
+            x_194_phi = x_193;
+            x_197_phi = x_213;
+            {
+              x_194 = x_194_phi;
+              x_197 = x_197_phi;
+              x_193_phi = x_194;
+              x_196_phi = x_197;
+            }
+            continue;
+          }
+          return;
+        }
+        x_194_phi = x_240;
+        x_197_phi = x_196;
+        {
+          x_194 = x_194_phi;
+          x_197 = x_197_phi;
+          x_193_phi = x_194;
+          x_196_phi = x_197;
+        }
+      }
+      if (x_242_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_247 = false;
+  bool x_294 = false;
+  bool x_247_phi = false;
+  int x_250_phi = 0;
+  bool x_296_phi = false;
+  switch(0u) {
+    default: {
+      x_247_phi = false;
+      x_250_phi = 0;
+      while (true) {
+        int x_275 = 0;
+        int x_267 = 0;
+        bool x_248 = false;
+        int x_251 = 0;
+        bool x_248_phi = false;
+        int x_251_phi = 0;
+        x_247 = x_247_phi;
+        const int x_250 = x_250_phi;
+        x_296_phi = x_247;
+        if ((x_250 <= 4)) {
+        } else {
+          break;
+        }
+        const int x_256 = tree[x_250].data;
+        if ((7 <= x_256)) {
+          bool x_294_phi = false;
+          const int x_269_save = x_250;
+          const int x_270 = tree[x_269_save].leftIndex;
+          if ((x_270 == -1)) {
+            const float x_277 = asfloat(x_8[0].y);
+            const float x_279 = asfloat(x_8[0].x);
+            if ((x_277 < x_279)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_269_save].leftIndex = 4;
+            const BST tint_symbol_12 = {7, -1, -1};
+            tree[4] = tint_symbol_12;
+            while (true) {
+              x_294_phi = x_247;
+              if ((0 < int(x_277))) {
+              } else {
+                break;
+              }
+              x_294_phi = true;
+              break;
+            }
+            x_294 = x_294_phi;
+            x_296_phi = x_294;
+            if (x_294) {
+              break;
+            }
+          } else {
+            x_275 = tree[x_269_save].leftIndex;
+            x_248_phi = x_247;
+            x_251_phi = x_275;
+            {
+              x_248 = x_248_phi;
+              x_251 = x_251_phi;
+              x_247_phi = x_248;
+              x_250_phi = x_251;
+            }
+            continue;
+          }
+        } else {
+          const int x_261_save = x_250;
+          const int x_262 = tree[x_261_save].rightIndex;
+          if ((x_262 == -1)) {
+            tree[x_261_save].rightIndex = 4;
+            const BST tint_symbol_13 = {7, -1, -1};
+            tree[4] = tint_symbol_13;
+            x_296_phi = true;
+            break;
+          } else {
+            x_267 = tree[x_261_save].rightIndex;
+            x_248_phi = x_247;
+            x_251_phi = x_267;
+            {
+              x_248 = x_248_phi;
+              x_251 = x_251_phi;
+              x_247_phi = x_248;
+              x_250_phi = x_251;
+            }
+            continue;
+          }
+          return;
+        }
+        x_248_phi = x_294;
+        x_251_phi = x_250;
+        {
+          x_248 = x_248_phi;
+          x_251 = x_251_phi;
+          x_247_phi = x_248;
+          x_250_phi = x_251;
+        }
+      }
+      if (x_296_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_301 = false;
+  bool x_348 = false;
+  bool x_301_phi = false;
+  int x_304_phi = 0;
+  bool x_350_phi = false;
+  switch(0u) {
+    default: {
+      x_301_phi = false;
+      x_304_phi = 0;
+      while (true) {
+        int x_329 = 0;
+        int x_321 = 0;
+        bool x_302 = false;
+        int x_305 = 0;
+        bool x_302_phi = false;
+        int x_305_phi = 0;
+        x_301 = x_301_phi;
+        const int x_304 = x_304_phi;
+        x_350_phi = x_301;
+        if ((x_304 <= 5)) {
+        } else {
+          break;
+        }
+        const int x_310 = tree[x_304].data;
+        if ((8 <= x_310)) {
+          bool x_348_phi = false;
+          const int x_323_save = x_304;
+          const int x_324 = tree[x_323_save].leftIndex;
+          if ((x_324 == -1)) {
+            const float x_331 = asfloat(x_8[0].y);
+            const float x_333 = asfloat(x_8[0].x);
+            if ((x_331 < x_333)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_323_save].leftIndex = 5;
+            const BST tint_symbol_14 = {8, -1, -1};
+            tree[5] = tint_symbol_14;
+            while (true) {
+              x_348_phi = x_301;
+              if ((0 < int(x_331))) {
+              } else {
+                break;
+              }
+              x_348_phi = true;
+              break;
+            }
+            x_348 = x_348_phi;
+            x_350_phi = x_348;
+            if (x_348) {
+              break;
+            }
+          } else {
+            x_329 = tree[x_323_save].leftIndex;
+            x_302_phi = x_301;
+            x_305_phi = x_329;
+            {
+              x_302 = x_302_phi;
+              x_305 = x_305_phi;
+              x_301_phi = x_302;
+              x_304_phi = x_305;
+            }
+            continue;
+          }
+        } else {
+          const int x_315_save = x_304;
+          const int x_316 = tree[x_315_save].rightIndex;
+          if ((x_316 == -1)) {
+            tree[x_315_save].rightIndex = 5;
+            const BST tint_symbol_15 = {8, -1, -1};
+            tree[5] = tint_symbol_15;
+            x_350_phi = true;
+            break;
+          } else {
+            x_321 = tree[x_315_save].rightIndex;
+            x_302_phi = x_301;
+            x_305_phi = x_321;
+            {
+              x_302 = x_302_phi;
+              x_305 = x_305_phi;
+              x_301_phi = x_302;
+              x_304_phi = x_305;
+            }
+            continue;
+          }
+          return;
+        }
+        x_302_phi = x_348;
+        x_305_phi = x_304;
+        {
+          x_302 = x_302_phi;
+          x_305 = x_305_phi;
+          x_301_phi = x_302;
+          x_304_phi = x_305;
+        }
+      }
+      if (x_350_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_355 = false;
+  bool x_402 = false;
+  bool x_355_phi = false;
+  int x_358_phi = 0;
+  bool x_404_phi = false;
+  switch(0u) {
+    default: {
+      x_355_phi = false;
+      x_358_phi = 0;
+      while (true) {
+        int x_383 = 0;
+        int x_375 = 0;
+        bool x_356 = false;
+        int x_359 = 0;
+        bool x_356_phi = false;
+        int x_359_phi = 0;
+        x_355 = x_355_phi;
+        const int x_358 = x_358_phi;
+        x_404_phi = x_355;
+        if ((x_358 <= 6)) {
+        } else {
+          break;
+        }
+        const int x_364 = tree[x_358].data;
+        if ((2 <= x_364)) {
+          bool x_402_phi = false;
+          const int x_377_save = x_358;
+          const int x_378 = tree[x_377_save].leftIndex;
+          if ((x_378 == -1)) {
+            const float x_385 = asfloat(x_8[0].y);
+            const float x_387 = asfloat(x_8[0].x);
+            if ((x_385 < x_387)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_377_save].leftIndex = 6;
+            const BST tint_symbol_16 = {2, -1, -1};
+            tree[6] = tint_symbol_16;
+            while (true) {
+              x_402_phi = x_355;
+              if ((0 < int(x_385))) {
+              } else {
+                break;
+              }
+              x_402_phi = true;
+              break;
+            }
+            x_402 = x_402_phi;
+            x_404_phi = x_402;
+            if (x_402) {
+              break;
+            }
+          } else {
+            x_383 = tree[x_377_save].leftIndex;
+            x_356_phi = x_355;
+            x_359_phi = x_383;
+            {
+              x_356 = x_356_phi;
+              x_359 = x_359_phi;
+              x_355_phi = x_356;
+              x_358_phi = x_359;
+            }
+            continue;
+          }
+        } else {
+          const int x_369_save = x_358;
+          const int x_370 = tree[x_369_save].rightIndex;
+          if ((x_370 == -1)) {
+            tree[x_369_save].rightIndex = 6;
+            const BST tint_symbol_17 = {2, -1, -1};
+            tree[6] = tint_symbol_17;
+            x_404_phi = true;
+            break;
+          } else {
+            x_375 = tree[x_369_save].rightIndex;
+            x_356_phi = x_355;
+            x_359_phi = x_375;
+            {
+              x_356 = x_356_phi;
+              x_359 = x_359_phi;
+              x_355_phi = x_356;
+              x_358_phi = x_359;
+            }
+            continue;
+          }
+          return;
+        }
+        x_356_phi = x_402;
+        x_359_phi = x_358;
+        {
+          x_356 = x_356_phi;
+          x_359 = x_359_phi;
+          x_355_phi = x_356;
+          x_358_phi = x_359;
+        }
+      }
+      if (x_404_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_409 = false;
+  bool x_456 = false;
+  bool x_409_phi = false;
+  int x_412_phi = 0;
+  bool x_458_phi = false;
+  switch(0u) {
+    default: {
+      x_409_phi = false;
+      x_412_phi = 0;
+      while (true) {
+        int x_437 = 0;
+        int x_429 = 0;
+        bool x_410 = false;
+        int x_413 = 0;
+        bool x_410_phi = false;
+        int x_413_phi = 0;
+        x_409 = x_409_phi;
+        const int x_412 = x_412_phi;
+        x_458_phi = x_409;
+        if ((x_412 <= 7)) {
+        } else {
+          break;
+        }
+        const int x_418 = tree[x_412].data;
+        if ((6 <= x_418)) {
+          bool x_456_phi = false;
+          const int x_431_save = x_412;
+          const int x_432 = tree[x_431_save].leftIndex;
+          if ((x_432 == -1)) {
+            const float x_439 = asfloat(x_8[0].y);
+            const float x_441 = asfloat(x_8[0].x);
+            if ((x_439 < x_441)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_431_save].leftIndex = 7;
+            const BST tint_symbol_18 = {6, -1, -1};
+            tree[7] = tint_symbol_18;
+            while (true) {
+              x_456_phi = x_409;
+              if ((0 < int(x_439))) {
+              } else {
+                break;
+              }
+              x_456_phi = true;
+              break;
+            }
+            x_456 = x_456_phi;
+            x_458_phi = x_456;
+            if (x_456) {
+              break;
+            }
+          } else {
+            x_437 = tree[x_431_save].leftIndex;
+            x_410_phi = x_409;
+            x_413_phi = x_437;
+            {
+              x_410 = x_410_phi;
+              x_413 = x_413_phi;
+              x_409_phi = x_410;
+              x_412_phi = x_413;
+            }
+            continue;
+          }
+        } else {
+          const int x_423_save = x_412;
+          const int x_424 = tree[x_423_save].rightIndex;
+          if ((x_424 == -1)) {
+            tree[x_423_save].rightIndex = 7;
+            const BST tint_symbol_19 = {6, -1, -1};
+            tree[7] = tint_symbol_19;
+            x_458_phi = true;
+            break;
+          } else {
+            x_429 = tree[x_423_save].rightIndex;
+            x_410_phi = x_409;
+            x_413_phi = x_429;
+            {
+              x_410 = x_410_phi;
+              x_413 = x_413_phi;
+              x_409_phi = x_410;
+              x_412_phi = x_413;
+            }
+            continue;
+          }
+          return;
+        }
+        x_410_phi = x_456;
+        x_413_phi = x_412;
+        {
+          x_410 = x_410_phi;
+          x_413 = x_413_phi;
+          x_409_phi = x_410;
+          x_412_phi = x_413;
+        }
+      }
+      if (x_458_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_463 = false;
+  bool x_510 = false;
+  bool x_463_phi = false;
+  int x_466_phi = 0;
+  bool x_512_phi = false;
+  switch(0u) {
+    default: {
+      x_463_phi = false;
+      x_466_phi = 0;
+      while (true) {
+        int x_491 = 0;
+        int x_483 = 0;
+        bool x_464 = false;
+        int x_467 = 0;
+        bool x_464_phi = false;
+        int x_467_phi = 0;
+        x_463 = x_463_phi;
+        const int x_466 = x_466_phi;
+        x_512_phi = x_463;
+        if ((x_466 <= 8)) {
+        } else {
+          break;
+        }
+        const int x_472 = tree[x_466].data;
+        if ((17 <= x_472)) {
+          bool x_510_phi = false;
+          const int x_485_save = x_466;
+          const int x_486 = tree[x_485_save].leftIndex;
+          if ((x_486 == -1)) {
+            const float x_493 = asfloat(x_8[0].y);
+            const float x_495 = asfloat(x_8[0].x);
+            if ((x_493 < x_495)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_485_save].leftIndex = 8;
+            const BST tint_symbol_20 = {17, -1, -1};
+            tree[8] = tint_symbol_20;
+            while (true) {
+              x_510_phi = x_463;
+              if ((0 < int(x_493))) {
+              } else {
+                break;
+              }
+              x_510_phi = true;
+              break;
+            }
+            x_510 = x_510_phi;
+            x_512_phi = x_510;
+            if (x_510) {
+              break;
+            }
+          } else {
+            x_491 = tree[x_485_save].leftIndex;
+            x_464_phi = x_463;
+            x_467_phi = x_491;
+            {
+              x_464 = x_464_phi;
+              x_467 = x_467_phi;
+              x_463_phi = x_464;
+              x_466_phi = x_467;
+            }
+            continue;
+          }
+        } else {
+          const int x_477_save = x_466;
+          const int x_478 = tree[x_477_save].rightIndex;
+          if ((x_478 == -1)) {
+            tree[x_477_save].rightIndex = 8;
+            const BST tint_symbol_21 = {17, -1, -1};
+            tree[8] = tint_symbol_21;
+            x_512_phi = true;
+            break;
+          } else {
+            x_483 = tree[x_477_save].rightIndex;
+            x_464_phi = x_463;
+            x_467_phi = x_483;
+            {
+              x_464 = x_464_phi;
+              x_467 = x_467_phi;
+              x_463_phi = x_464;
+              x_466_phi = x_467;
+            }
+            continue;
+          }
+          return;
+        }
+        x_464_phi = x_510;
+        x_467_phi = x_466;
+        {
+          x_464 = x_464_phi;
+          x_467 = x_467_phi;
+          x_463_phi = x_464;
+          x_466_phi = x_467;
+        }
+      }
+      if (x_512_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_517 = false;
+  bool x_564 = false;
+  bool x_517_phi = false;
+  int x_520_phi = 0;
+  bool x_566_phi = false;
+  switch(0u) {
+    default: {
+      x_517_phi = false;
+      x_520_phi = 0;
+      while (true) {
+        int x_545 = 0;
+        int x_537 = 0;
+        bool x_518 = false;
+        int x_521 = 0;
+        bool x_518_phi = false;
+        int x_521_phi = 0;
+        x_517 = x_517_phi;
+        const int x_520 = x_520_phi;
+        x_566_phi = x_517;
+        if ((x_520 <= 9)) {
+        } else {
+          break;
+        }
+        const int x_526 = tree[x_520].data;
+        if ((13 <= x_526)) {
+          bool x_564_phi = false;
+          const int x_539_save = x_520;
+          const int x_540 = tree[x_539_save].leftIndex;
+          if ((x_540 == -1)) {
+            const float x_547 = asfloat(x_8[0].y);
+            const float x_549 = asfloat(x_8[0].x);
+            if ((x_547 < x_549)) {
+              while (true) {
+                discard;
+              }
+              return;
+            }
+            tree[x_539_save].leftIndex = 9;
+            const BST tint_symbol_22 = {13, -1, -1};
+            tree[9] = tint_symbol_22;
+            while (true) {
+              x_564_phi = x_517;
+              if ((0 < int(x_547))) {
+              } else {
+                break;
+              }
+              x_564_phi = true;
+              break;
+            }
+            x_564 = x_564_phi;
+            x_566_phi = x_564;
+            if (x_564) {
+              break;
+            }
+          } else {
+            x_545 = tree[x_539_save].leftIndex;
+            x_518_phi = x_517;
+            x_521_phi = x_545;
+            {
+              x_518 = x_518_phi;
+              x_521 = x_521_phi;
+              x_517_phi = x_518;
+              x_520_phi = x_521;
+            }
+            continue;
+          }
+        } else {
+          const int x_531_save = x_520;
+          const int x_532 = tree[x_531_save].rightIndex;
+          if ((x_532 == -1)) {
+            tree[x_531_save].rightIndex = 9;
+            const BST tint_symbol_23 = {13, -1, -1};
+            tree[9] = tint_symbol_23;
+            x_566_phi = true;
+            break;
+          } else {
+            x_537 = tree[x_531_save].rightIndex;
+            x_518_phi = x_517;
+            x_521_phi = x_537;
+            {
+              x_518 = x_518_phi;
+              x_521 = x_521_phi;
+              x_517_phi = x_518;
+              x_520_phi = x_521;
+            }
+            continue;
+          }
+          return;
+        }
+        x_518_phi = x_564;
+        x_521_phi = x_520;
+        {
+          x_518 = x_518_phi;
+          x_521 = x_521_phi;
+          x_517_phi = x_518;
+          x_520_phi = x_521;
+        }
+      }
+      if (x_566_phi) {
+        break;
+      }
+      break;
+    }
+  }
+  x_569_phi = 0;
+  x_572_phi = 0;
+  x_574_phi = 0;
+  while (true) {
+    int x_597 = 0;
+    int x_607 = 0;
+    int x_612 = 0;
+    int x_575 = 0;
+    int x_570_phi = 0;
+    int x_573_phi = 0;
+    const int x_569 = x_569_phi;
+    x_572 = x_572_phi;
+    const int x_574 = x_574_phi;
+    if ((x_574 < 20)) {
+    } else {
+      break;
+    }
+    int x_582_phi = 0;
+    int x_597_phi = 0;
+    bool x_598_phi = false;
+    switch(0u) {
+      default: {
+        x_582_phi = 0;
+        while (true) {
+          const int x_582 = x_582_phi;
+          x_597_phi = x_569;
+          x_598_phi = false;
+          if ((x_582 != -1)) {
+          } else {
+            break;
+          }
+          const BST x_589 = tree[x_582];
+          const int x_590 = x_589.data;
+          const int x_591 = x_589.leftIndex;
+          const int x_592 = x_589.rightIndex;
+          if ((x_590 == x_574)) {
+            x_597_phi = x_574;
+            x_598_phi = true;
+            break;
+          }
+          {
+            x_582_phi = ((x_574 > x_590) ? x_592 : x_591);
+          }
+        }
+        x_597 = x_597_phi;
+        const bool x_598 = x_598_phi;
+        x_570_phi = x_597;
+        if (x_598) {
+          break;
+        }
+        x_570_phi = -1;
+        break;
+      }
+    }
+    int x_570 = 0;
+    int x_606 = 0;
+    int x_611 = 0;
+    int x_607_phi = 0;
+    int x_612_phi = 0;
+    x_570 = x_570_phi;
+    switch(x_574) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_607_phi = x_572;
+        if ((x_570 == asint(x_574))) {
+          x_606 = asint((x_572 + asint(1)));
+          x_607_phi = x_606;
+        }
+        x_607 = x_607_phi;
+        x_573_phi = x_607;
+        break;
+      }
+      default: {
+        x_612_phi = x_572;
+        if ((x_570 == asint(-1))) {
+          x_611 = asint((x_572 + asint(1)));
+          x_612_phi = x_611;
+        }
+        x_612 = x_612_phi;
+        x_573_phi = x_612;
+        break;
+      }
+    }
+    const int x_573 = x_573_phi;
+    {
+      x_575 = (x_574 + 1);
+      x_569_phi = x_570;
+      x_572_phi = x_573;
+      x_574_phi = x_575;
+    }
+  }
+  if ((x_572 == asint(20))) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_24 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_24;
+}
+T:\tmp\uq0.0:1053:20: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
+        if ((x_570 == asint(x_574))) {
+             ~~~~~~^~~~~~~~~~~~~~~
+T:\tmp\uq0.0:1053:20: note: remove extraneous parentheses around the comparison to silence this warning
+        if ((x_570 == asint(x_574))) {
+            ~      ^              ~
+T:\tmp\uq0.0:1053:20: note: use '=' to turn this equality comparison into an assignment
+        if ((x_570 == asint(x_574))) {
+                   ^~
+                   =
+T:\tmp\uq0.0:1063:20: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
+        if ((x_570 == asint(-1))) {
+             ~~~~~~^~~~~~~~~~~~
+T:\tmp\uq0.0:1063:20: note: remove extraneous parentheses around the comparison to silence this warning
+        if ((x_570 == asint(-1))) {
+            ~      ^           ~
+T:\tmp\uq0.0:1063:20: note: use '=' to turn this equality comparison into an assignment
+        if ((x_570 == asint(-1))) {
+                   ^~
+                   =
+T:\tmp\uq0.0:1080:14: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
+  if ((x_572 == asint(20))) {
+       ~~~~~~^~~~~~~~~~~~
+T:\tmp\uq0.0:1080:14: note: remove extraneous parentheses around the comparison to silence this warning
+  if ((x_572 == asint(20))) {
+      ~      ^           ~
+T:\tmp\uq0.0:1080:14: note: use '=' to turn this equality comparison into an assignment
+  if ((x_572 == asint(20))) {
+             ^~
+             =
+error: validation errors
+T:\tmp\uq0.0:1098: error: Loop must have break.
+T:\tmp\uq0.0:1098: error: Loop must have break.
+T:\tmp\uq0.0:1098: error: Loop must have break.
+T:\tmp\uq0.0:1098: error: Loop must have break.
+T:\tmp\uq0.0:1098: error: Loop must have break.
+T:\tmp\uq0.0:1098: error: Loop must have break.
+T:\tmp\uq0.0:1098: error: Loop must have break.
+T:\tmp\uq0.0:1098: error: Loop must have break.
+T:\tmp\uq0.0:1098: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.msl
new file mode 100644
index 0000000..5025022
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.msl
@@ -0,0 +1,1116 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_24, thread float4* const tint_symbol_25) {
+  tint_array_wrapper tree = {};
+  bool x_67 = false;
+  bool x_114 = false;
+  int x_572 = 0;
+  bool x_67_phi = false;
+  int x_70_phi = 0;
+  bool x_116_phi = false;
+  int x_119_phi = 0;
+  int x_569_phi = 0;
+  int x_572_phi = 0;
+  int x_574_phi = 0;
+  BST const tint_symbol_4 = {.data=9, .leftIndex=-1, .rightIndex=-1};
+  tree.arr[0] = tint_symbol_4;
+  switch(0u) {
+    default: {
+      x_67_phi = false;
+      x_70_phi = 0;
+      while (true) {
+        int x_95 = 0;
+        int x_87 = 0;
+        bool x_68 = false;
+        int x_71 = 0;
+        bool x_68_phi = false;
+        int x_71_phi = 0;
+        x_67 = x_67_phi;
+        int const x_70 = x_70_phi;
+        x_116_phi = x_67;
+        if ((x_70 <= 1)) {
+        } else {
+          break;
+        }
+        int const x_76 = tree.arr[x_70].data;
+        if ((5 <= x_76)) {
+          bool x_114_phi = false;
+          int const x_89_save = x_70;
+          int const x_90 = tree.arr[x_89_save].leftIndex;
+          if ((x_90 == -1)) {
+            float const x_97 = x_8.injectionSwitch.y;
+            float const x_99 = x_8.injectionSwitch.x;
+            if ((x_97 < x_99)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_89_save].leftIndex = 1;
+            BST const tint_symbol_5 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_5;
+            while (true) {
+              x_114_phi = x_67;
+              if ((0 < int(x_97))) {
+              } else {
+                break;
+              }
+              x_114_phi = true;
+              break;
+            }
+            x_114 = x_114_phi;
+            x_116_phi = x_114;
+            if (x_114) {
+              break;
+            }
+          } else {
+            x_95 = tree.arr[x_89_save].leftIndex;
+            x_68_phi = x_67;
+            x_71_phi = x_95;
+            {
+              x_68 = x_68_phi;
+              x_71 = x_71_phi;
+              x_67_phi = x_68;
+              x_70_phi = x_71;
+            }
+            continue;
+          }
+        } else {
+          int const x_81_save = x_70;
+          int const x_82 = tree.arr[x_81_save].rightIndex;
+          if ((x_82 == -1)) {
+            tree.arr[x_81_save].rightIndex = 1;
+            BST const tint_symbol_6 = {.data=5, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[1] = tint_symbol_6;
+            x_116_phi = true;
+            break;
+          } else {
+            x_87 = tree.arr[x_81_save].rightIndex;
+            x_68_phi = x_67;
+            x_71_phi = x_87;
+            {
+              x_68 = x_68_phi;
+              x_71 = x_71_phi;
+              x_67_phi = x_68;
+              x_70_phi = x_71;
+            }
+            continue;
+          }
+          return;
+        }
+        x_68_phi = x_114;
+        x_71_phi = x_70;
+        {
+          x_68 = x_68_phi;
+          x_71 = x_71_phi;
+          x_67_phi = x_68;
+          x_70_phi = x_71;
+        }
+      }
+      bool const x_116 = x_116_phi;
+      if (x_116) {
+        break;
+      }
+      break;
+    }
+  }
+  x_119_phi = 0;
+  while (true) {
+    bool x_133 = false;
+    int x_120 = 0;
+    bool x_134_phi = false;
+    int const x_119 = x_119_phi;
+    float const x_125 = (*(tint_symbol_24)).y;
+    bool const x_126 = (x_125 < 0.0f);
+    x_134_phi = x_126;
+    if (!(x_126)) {
+      float const x_131 = x_8.injectionSwitch.y;
+      x_133 = (x_119 != int(x_131));
+      x_134_phi = x_133;
+    }
+    bool const x_134 = x_134_phi;
+    if (x_134) {
+    } else {
+      break;
+    }
+    bool x_139 = false;
+    bool x_186 = false;
+    bool x_139_phi = false;
+    int x_142_phi = 0;
+    bool x_188_phi = false;
+    switch(0u) {
+      default: {
+        x_139_phi = false;
+        x_142_phi = 0;
+        while (true) {
+          int x_167 = 0;
+          int x_159 = 0;
+          bool x_140 = false;
+          int x_143 = 0;
+          bool x_140_phi = false;
+          int x_143_phi = 0;
+          x_139 = x_139_phi;
+          int const x_142 = x_142_phi;
+          x_188_phi = x_139;
+          if ((x_142 <= 2)) {
+          } else {
+            break;
+          }
+          int const x_148 = tree.arr[x_142].data;
+          if ((12 <= x_148)) {
+            bool x_186_phi = false;
+            int const x_161_save = x_142;
+            int const x_162 = tree.arr[x_161_save].leftIndex;
+            if ((x_162 == -1)) {
+              float const x_169 = x_8.injectionSwitch.y;
+              float const x_171 = x_8.injectionSwitch.x;
+              if ((x_169 < x_171)) {
+                while (true) {
+                  discard_fragment();
+                }
+                return;
+              }
+              tree.arr[x_161_save].leftIndex = 2;
+              BST const tint_symbol_7 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+              tree.arr[2] = tint_symbol_7;
+              while (true) {
+                x_186_phi = x_139;
+                if ((0 < int(x_169))) {
+                } else {
+                  break;
+                }
+                x_186_phi = true;
+                break;
+              }
+              x_186 = x_186_phi;
+              x_188_phi = x_186;
+              if (x_186) {
+                break;
+              }
+            } else {
+              x_167 = tree.arr[x_161_save].leftIndex;
+              x_140_phi = x_139;
+              x_143_phi = x_167;
+              {
+                x_140 = x_140_phi;
+                x_143 = x_143_phi;
+                x_139_phi = x_140;
+                x_142_phi = x_143;
+              }
+              continue;
+            }
+          } else {
+            int const x_153_save = x_142;
+            int const x_154 = tree.arr[x_153_save].rightIndex;
+            if ((x_154 == -1)) {
+              tree.arr[x_153_save].rightIndex = 2;
+              BST const tint_symbol_8 = {.data=12, .leftIndex=-1, .rightIndex=-1};
+              tree.arr[2] = tint_symbol_8;
+              x_188_phi = true;
+              break;
+            } else {
+              x_159 = tree.arr[x_153_save].rightIndex;
+              x_140_phi = x_139;
+              x_143_phi = x_159;
+              {
+                x_140 = x_140_phi;
+                x_143 = x_143_phi;
+                x_139_phi = x_140;
+                x_142_phi = x_143;
+              }
+              continue;
+            }
+            return;
+          }
+          x_140_phi = x_186;
+          x_143_phi = x_142;
+          {
+            x_140 = x_140_phi;
+            x_143 = x_143_phi;
+            x_139_phi = x_140;
+            x_142_phi = x_143;
+          }
+        }
+        bool const x_188 = x_188_phi;
+        if (x_188) {
+          break;
+        }
+        break;
+      }
+    }
+    {
+      x_120 = (x_119 + 1);
+      x_119_phi = x_120;
+    }
+  }
+  bool x_193 = false;
+  bool x_240 = false;
+  bool x_193_phi = false;
+  int x_196_phi = 0;
+  bool x_242_phi = false;
+  switch(0u) {
+    default: {
+      x_193_phi = false;
+      x_196_phi = 0;
+      while (true) {
+        int x_221 = 0;
+        int x_213 = 0;
+        bool x_194 = false;
+        int x_197 = 0;
+        bool x_194_phi = false;
+        int x_197_phi = 0;
+        x_193 = x_193_phi;
+        int const x_196 = x_196_phi;
+        x_242_phi = x_193;
+        if ((x_196 <= 3)) {
+        } else {
+          break;
+        }
+        int const x_202 = tree.arr[x_196].data;
+        if ((15 <= x_202)) {
+          bool x_240_phi = false;
+          int const x_215_save = x_196;
+          int const x_216 = tree.arr[x_215_save].leftIndex;
+          if ((x_216 == -1)) {
+            float const x_223 = x_8.injectionSwitch.y;
+            float const x_225 = x_8.injectionSwitch.x;
+            if ((x_223 < x_225)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_215_save].leftIndex = 3;
+            BST const tint_symbol_9 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_9;
+            while (true) {
+              x_240_phi = x_193;
+              if ((0 < int(x_223))) {
+              } else {
+                break;
+              }
+              x_240_phi = true;
+              break;
+            }
+            x_240 = x_240_phi;
+            x_242_phi = x_240;
+            if (x_240) {
+              break;
+            }
+          } else {
+            x_221 = tree.arr[x_215_save].leftIndex;
+            x_194_phi = x_193;
+            x_197_phi = x_221;
+            {
+              x_194 = x_194_phi;
+              x_197 = x_197_phi;
+              x_193_phi = x_194;
+              x_196_phi = x_197;
+            }
+            continue;
+          }
+        } else {
+          int const x_207_save = x_196;
+          int const x_208 = tree.arr[x_207_save].rightIndex;
+          if ((x_208 == -1)) {
+            tree.arr[x_207_save].rightIndex = 3;
+            BST const tint_symbol_10 = {.data=15, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[3] = tint_symbol_10;
+            x_242_phi = true;
+            break;
+          } else {
+            x_213 = tree.arr[x_207_save].rightIndex;
+            x_194_phi = x_193;
+            x_197_phi = x_213;
+            {
+              x_194 = x_194_phi;
+              x_197 = x_197_phi;
+              x_193_phi = x_194;
+              x_196_phi = x_197;
+            }
+            continue;
+          }
+          return;
+        }
+        x_194_phi = x_240;
+        x_197_phi = x_196;
+        {
+          x_194 = x_194_phi;
+          x_197 = x_197_phi;
+          x_193_phi = x_194;
+          x_196_phi = x_197;
+        }
+      }
+      bool const x_242 = x_242_phi;
+      if (x_242) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_247 = false;
+  bool x_294 = false;
+  bool x_247_phi = false;
+  int x_250_phi = 0;
+  bool x_296_phi = false;
+  switch(0u) {
+    default: {
+      x_247_phi = false;
+      x_250_phi = 0;
+      while (true) {
+        int x_275 = 0;
+        int x_267 = 0;
+        bool x_248 = false;
+        int x_251 = 0;
+        bool x_248_phi = false;
+        int x_251_phi = 0;
+        x_247 = x_247_phi;
+        int const x_250 = x_250_phi;
+        x_296_phi = x_247;
+        if ((x_250 <= 4)) {
+        } else {
+          break;
+        }
+        int const x_256 = tree.arr[x_250].data;
+        if ((7 <= x_256)) {
+          bool x_294_phi = false;
+          int const x_269_save = x_250;
+          int const x_270 = tree.arr[x_269_save].leftIndex;
+          if ((x_270 == -1)) {
+            float const x_277 = x_8.injectionSwitch.y;
+            float const x_279 = x_8.injectionSwitch.x;
+            if ((x_277 < x_279)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_269_save].leftIndex = 4;
+            BST const tint_symbol_11 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_11;
+            while (true) {
+              x_294_phi = x_247;
+              if ((0 < int(x_277))) {
+              } else {
+                break;
+              }
+              x_294_phi = true;
+              break;
+            }
+            x_294 = x_294_phi;
+            x_296_phi = x_294;
+            if (x_294) {
+              break;
+            }
+          } else {
+            x_275 = tree.arr[x_269_save].leftIndex;
+            x_248_phi = x_247;
+            x_251_phi = x_275;
+            {
+              x_248 = x_248_phi;
+              x_251 = x_251_phi;
+              x_247_phi = x_248;
+              x_250_phi = x_251;
+            }
+            continue;
+          }
+        } else {
+          int const x_261_save = x_250;
+          int const x_262 = tree.arr[x_261_save].rightIndex;
+          if ((x_262 == -1)) {
+            tree.arr[x_261_save].rightIndex = 4;
+            BST const tint_symbol_12 = {.data=7, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[4] = tint_symbol_12;
+            x_296_phi = true;
+            break;
+          } else {
+            x_267 = tree.arr[x_261_save].rightIndex;
+            x_248_phi = x_247;
+            x_251_phi = x_267;
+            {
+              x_248 = x_248_phi;
+              x_251 = x_251_phi;
+              x_247_phi = x_248;
+              x_250_phi = x_251;
+            }
+            continue;
+          }
+          return;
+        }
+        x_248_phi = x_294;
+        x_251_phi = x_250;
+        {
+          x_248 = x_248_phi;
+          x_251 = x_251_phi;
+          x_247_phi = x_248;
+          x_250_phi = x_251;
+        }
+      }
+      bool const x_296 = x_296_phi;
+      if (x_296) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_301 = false;
+  bool x_348 = false;
+  bool x_301_phi = false;
+  int x_304_phi = 0;
+  bool x_350_phi = false;
+  switch(0u) {
+    default: {
+      x_301_phi = false;
+      x_304_phi = 0;
+      while (true) {
+        int x_329 = 0;
+        int x_321 = 0;
+        bool x_302 = false;
+        int x_305 = 0;
+        bool x_302_phi = false;
+        int x_305_phi = 0;
+        x_301 = x_301_phi;
+        int const x_304 = x_304_phi;
+        x_350_phi = x_301;
+        if ((x_304 <= 5)) {
+        } else {
+          break;
+        }
+        int const x_310 = tree.arr[x_304].data;
+        if ((8 <= x_310)) {
+          bool x_348_phi = false;
+          int const x_323_save = x_304;
+          int const x_324 = tree.arr[x_323_save].leftIndex;
+          if ((x_324 == -1)) {
+            float const x_331 = x_8.injectionSwitch.y;
+            float const x_333 = x_8.injectionSwitch.x;
+            if ((x_331 < x_333)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_323_save].leftIndex = 5;
+            BST const tint_symbol_13 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_13;
+            while (true) {
+              x_348_phi = x_301;
+              if ((0 < int(x_331))) {
+              } else {
+                break;
+              }
+              x_348_phi = true;
+              break;
+            }
+            x_348 = x_348_phi;
+            x_350_phi = x_348;
+            if (x_348) {
+              break;
+            }
+          } else {
+            x_329 = tree.arr[x_323_save].leftIndex;
+            x_302_phi = x_301;
+            x_305_phi = x_329;
+            {
+              x_302 = x_302_phi;
+              x_305 = x_305_phi;
+              x_301_phi = x_302;
+              x_304_phi = x_305;
+            }
+            continue;
+          }
+        } else {
+          int const x_315_save = x_304;
+          int const x_316 = tree.arr[x_315_save].rightIndex;
+          if ((x_316 == -1)) {
+            tree.arr[x_315_save].rightIndex = 5;
+            BST const tint_symbol_14 = {.data=8, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[5] = tint_symbol_14;
+            x_350_phi = true;
+            break;
+          } else {
+            x_321 = tree.arr[x_315_save].rightIndex;
+            x_302_phi = x_301;
+            x_305_phi = x_321;
+            {
+              x_302 = x_302_phi;
+              x_305 = x_305_phi;
+              x_301_phi = x_302;
+              x_304_phi = x_305;
+            }
+            continue;
+          }
+          return;
+        }
+        x_302_phi = x_348;
+        x_305_phi = x_304;
+        {
+          x_302 = x_302_phi;
+          x_305 = x_305_phi;
+          x_301_phi = x_302;
+          x_304_phi = x_305;
+        }
+      }
+      bool const x_350 = x_350_phi;
+      if (x_350) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_355 = false;
+  bool x_402 = false;
+  bool x_355_phi = false;
+  int x_358_phi = 0;
+  bool x_404_phi = false;
+  switch(0u) {
+    default: {
+      x_355_phi = false;
+      x_358_phi = 0;
+      while (true) {
+        int x_383 = 0;
+        int x_375 = 0;
+        bool x_356 = false;
+        int x_359 = 0;
+        bool x_356_phi = false;
+        int x_359_phi = 0;
+        x_355 = x_355_phi;
+        int const x_358 = x_358_phi;
+        x_404_phi = x_355;
+        if ((x_358 <= 6)) {
+        } else {
+          break;
+        }
+        int const x_364 = tree.arr[x_358].data;
+        if ((2 <= x_364)) {
+          bool x_402_phi = false;
+          int const x_377_save = x_358;
+          int const x_378 = tree.arr[x_377_save].leftIndex;
+          if ((x_378 == -1)) {
+            float const x_385 = x_8.injectionSwitch.y;
+            float const x_387 = x_8.injectionSwitch.x;
+            if ((x_385 < x_387)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_377_save].leftIndex = 6;
+            BST const tint_symbol_15 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_15;
+            while (true) {
+              x_402_phi = x_355;
+              if ((0 < int(x_385))) {
+              } else {
+                break;
+              }
+              x_402_phi = true;
+              break;
+            }
+            x_402 = x_402_phi;
+            x_404_phi = x_402;
+            if (x_402) {
+              break;
+            }
+          } else {
+            x_383 = tree.arr[x_377_save].leftIndex;
+            x_356_phi = x_355;
+            x_359_phi = x_383;
+            {
+              x_356 = x_356_phi;
+              x_359 = x_359_phi;
+              x_355_phi = x_356;
+              x_358_phi = x_359;
+            }
+            continue;
+          }
+        } else {
+          int const x_369_save = x_358;
+          int const x_370 = tree.arr[x_369_save].rightIndex;
+          if ((x_370 == -1)) {
+            tree.arr[x_369_save].rightIndex = 6;
+            BST const tint_symbol_16 = {.data=2, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[6] = tint_symbol_16;
+            x_404_phi = true;
+            break;
+          } else {
+            x_375 = tree.arr[x_369_save].rightIndex;
+            x_356_phi = x_355;
+            x_359_phi = x_375;
+            {
+              x_356 = x_356_phi;
+              x_359 = x_359_phi;
+              x_355_phi = x_356;
+              x_358_phi = x_359;
+            }
+            continue;
+          }
+          return;
+        }
+        x_356_phi = x_402;
+        x_359_phi = x_358;
+        {
+          x_356 = x_356_phi;
+          x_359 = x_359_phi;
+          x_355_phi = x_356;
+          x_358_phi = x_359;
+        }
+      }
+      bool const x_404 = x_404_phi;
+      if (x_404) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_409 = false;
+  bool x_456 = false;
+  bool x_409_phi = false;
+  int x_412_phi = 0;
+  bool x_458_phi = false;
+  switch(0u) {
+    default: {
+      x_409_phi = false;
+      x_412_phi = 0;
+      while (true) {
+        int x_437 = 0;
+        int x_429 = 0;
+        bool x_410 = false;
+        int x_413 = 0;
+        bool x_410_phi = false;
+        int x_413_phi = 0;
+        x_409 = x_409_phi;
+        int const x_412 = x_412_phi;
+        x_458_phi = x_409;
+        if ((x_412 <= 7)) {
+        } else {
+          break;
+        }
+        int const x_418 = tree.arr[x_412].data;
+        if ((6 <= x_418)) {
+          bool x_456_phi = false;
+          int const x_431_save = x_412;
+          int const x_432 = tree.arr[x_431_save].leftIndex;
+          if ((x_432 == -1)) {
+            float const x_439 = x_8.injectionSwitch.y;
+            float const x_441 = x_8.injectionSwitch.x;
+            if ((x_439 < x_441)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_431_save].leftIndex = 7;
+            BST const tint_symbol_17 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_17;
+            while (true) {
+              x_456_phi = x_409;
+              if ((0 < int(x_439))) {
+              } else {
+                break;
+              }
+              x_456_phi = true;
+              break;
+            }
+            x_456 = x_456_phi;
+            x_458_phi = x_456;
+            if (x_456) {
+              break;
+            }
+          } else {
+            x_437 = tree.arr[x_431_save].leftIndex;
+            x_410_phi = x_409;
+            x_413_phi = x_437;
+            {
+              x_410 = x_410_phi;
+              x_413 = x_413_phi;
+              x_409_phi = x_410;
+              x_412_phi = x_413;
+            }
+            continue;
+          }
+        } else {
+          int const x_423_save = x_412;
+          int const x_424 = tree.arr[x_423_save].rightIndex;
+          if ((x_424 == -1)) {
+            tree.arr[x_423_save].rightIndex = 7;
+            BST const tint_symbol_18 = {.data=6, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[7] = tint_symbol_18;
+            x_458_phi = true;
+            break;
+          } else {
+            x_429 = tree.arr[x_423_save].rightIndex;
+            x_410_phi = x_409;
+            x_413_phi = x_429;
+            {
+              x_410 = x_410_phi;
+              x_413 = x_413_phi;
+              x_409_phi = x_410;
+              x_412_phi = x_413;
+            }
+            continue;
+          }
+          return;
+        }
+        x_410_phi = x_456;
+        x_413_phi = x_412;
+        {
+          x_410 = x_410_phi;
+          x_413 = x_413_phi;
+          x_409_phi = x_410;
+          x_412_phi = x_413;
+        }
+      }
+      bool const x_458 = x_458_phi;
+      if (x_458) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_463 = false;
+  bool x_510 = false;
+  bool x_463_phi = false;
+  int x_466_phi = 0;
+  bool x_512_phi = false;
+  switch(0u) {
+    default: {
+      x_463_phi = false;
+      x_466_phi = 0;
+      while (true) {
+        int x_491 = 0;
+        int x_483 = 0;
+        bool x_464 = false;
+        int x_467 = 0;
+        bool x_464_phi = false;
+        int x_467_phi = 0;
+        x_463 = x_463_phi;
+        int const x_466 = x_466_phi;
+        x_512_phi = x_463;
+        if ((x_466 <= 8)) {
+        } else {
+          break;
+        }
+        int const x_472 = tree.arr[x_466].data;
+        if ((17 <= x_472)) {
+          bool x_510_phi = false;
+          int const x_485_save = x_466;
+          int const x_486 = tree.arr[x_485_save].leftIndex;
+          if ((x_486 == -1)) {
+            float const x_493 = x_8.injectionSwitch.y;
+            float const x_495 = x_8.injectionSwitch.x;
+            if ((x_493 < x_495)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_485_save].leftIndex = 8;
+            BST const tint_symbol_19 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_19;
+            while (true) {
+              x_510_phi = x_463;
+              if ((0 < int(x_493))) {
+              } else {
+                break;
+              }
+              x_510_phi = true;
+              break;
+            }
+            x_510 = x_510_phi;
+            x_512_phi = x_510;
+            if (x_510) {
+              break;
+            }
+          } else {
+            x_491 = tree.arr[x_485_save].leftIndex;
+            x_464_phi = x_463;
+            x_467_phi = x_491;
+            {
+              x_464 = x_464_phi;
+              x_467 = x_467_phi;
+              x_463_phi = x_464;
+              x_466_phi = x_467;
+            }
+            continue;
+          }
+        } else {
+          int const x_477_save = x_466;
+          int const x_478 = tree.arr[x_477_save].rightIndex;
+          if ((x_478 == -1)) {
+            tree.arr[x_477_save].rightIndex = 8;
+            BST const tint_symbol_20 = {.data=17, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[8] = tint_symbol_20;
+            x_512_phi = true;
+            break;
+          } else {
+            x_483 = tree.arr[x_477_save].rightIndex;
+            x_464_phi = x_463;
+            x_467_phi = x_483;
+            {
+              x_464 = x_464_phi;
+              x_467 = x_467_phi;
+              x_463_phi = x_464;
+              x_466_phi = x_467;
+            }
+            continue;
+          }
+          return;
+        }
+        x_464_phi = x_510;
+        x_467_phi = x_466;
+        {
+          x_464 = x_464_phi;
+          x_467 = x_467_phi;
+          x_463_phi = x_464;
+          x_466_phi = x_467;
+        }
+      }
+      bool const x_512 = x_512_phi;
+      if (x_512) {
+        break;
+      }
+      break;
+    }
+  }
+  bool x_517 = false;
+  bool x_564 = false;
+  bool x_517_phi = false;
+  int x_520_phi = 0;
+  bool x_566_phi = false;
+  switch(0u) {
+    default: {
+      x_517_phi = false;
+      x_520_phi = 0;
+      while (true) {
+        int x_545 = 0;
+        int x_537 = 0;
+        bool x_518 = false;
+        int x_521 = 0;
+        bool x_518_phi = false;
+        int x_521_phi = 0;
+        x_517 = x_517_phi;
+        int const x_520 = x_520_phi;
+        x_566_phi = x_517;
+        if ((x_520 <= 9)) {
+        } else {
+          break;
+        }
+        int const x_526 = tree.arr[x_520].data;
+        if ((13 <= x_526)) {
+          bool x_564_phi = false;
+          int const x_539_save = x_520;
+          int const x_540 = tree.arr[x_539_save].leftIndex;
+          if ((x_540 == -1)) {
+            float const x_547 = x_8.injectionSwitch.y;
+            float const x_549 = x_8.injectionSwitch.x;
+            if ((x_547 < x_549)) {
+              while (true) {
+                discard_fragment();
+              }
+              return;
+            }
+            tree.arr[x_539_save].leftIndex = 9;
+            BST const tint_symbol_21 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_21;
+            while (true) {
+              x_564_phi = x_517;
+              if ((0 < int(x_547))) {
+              } else {
+                break;
+              }
+              x_564_phi = true;
+              break;
+            }
+            x_564 = x_564_phi;
+            x_566_phi = x_564;
+            if (x_564) {
+              break;
+            }
+          } else {
+            x_545 = tree.arr[x_539_save].leftIndex;
+            x_518_phi = x_517;
+            x_521_phi = x_545;
+            {
+              x_518 = x_518_phi;
+              x_521 = x_521_phi;
+              x_517_phi = x_518;
+              x_520_phi = x_521;
+            }
+            continue;
+          }
+        } else {
+          int const x_531_save = x_520;
+          int const x_532 = tree.arr[x_531_save].rightIndex;
+          if ((x_532 == -1)) {
+            tree.arr[x_531_save].rightIndex = 9;
+            BST const tint_symbol_22 = {.data=13, .leftIndex=-1, .rightIndex=-1};
+            tree.arr[9] = tint_symbol_22;
+            x_566_phi = true;
+            break;
+          } else {
+            x_537 = tree.arr[x_531_save].rightIndex;
+            x_518_phi = x_517;
+            x_521_phi = x_537;
+            {
+              x_518 = x_518_phi;
+              x_521 = x_521_phi;
+              x_517_phi = x_518;
+              x_520_phi = x_521;
+            }
+            continue;
+          }
+          return;
+        }
+        x_518_phi = x_564;
+        x_521_phi = x_520;
+        {
+          x_518 = x_518_phi;
+          x_521 = x_521_phi;
+          x_517_phi = x_518;
+          x_520_phi = x_521;
+        }
+      }
+      bool const x_566 = x_566_phi;
+      if (x_566) {
+        break;
+      }
+      break;
+    }
+  }
+  x_569_phi = 0;
+  x_572_phi = 0;
+  x_574_phi = 0;
+  while (true) {
+    int x_597 = 0;
+    int x_607 = 0;
+    int x_612 = 0;
+    int x_575 = 0;
+    int x_570_phi = 0;
+    int x_573_phi = 0;
+    int const x_569 = x_569_phi;
+    x_572 = x_572_phi;
+    int const x_574 = x_574_phi;
+    if ((x_574 < 20)) {
+    } else {
+      break;
+    }
+    int x_582_phi = 0;
+    int x_597_phi = 0;
+    bool x_598_phi = false;
+    switch(0u) {
+      default: {
+        x_582_phi = 0;
+        while (true) {
+          int const x_582 = x_582_phi;
+          x_597_phi = x_569;
+          x_598_phi = false;
+          if ((x_582 != -1)) {
+          } else {
+            break;
+          }
+          BST const x_589 = tree.arr[x_582];
+          int const x_590 = x_589.data;
+          int const x_591 = x_589.leftIndex;
+          int const x_592 = x_589.rightIndex;
+          if ((x_590 == x_574)) {
+            x_597_phi = x_574;
+            x_598_phi = true;
+            break;
+          }
+          {
+            x_582_phi = select(x_591, x_592, (x_574 > x_590));
+          }
+        }
+        x_597 = x_597_phi;
+        bool const x_598 = x_598_phi;
+        x_570_phi = x_597;
+        if (x_598) {
+          break;
+        }
+        x_570_phi = -1;
+        break;
+      }
+    }
+    int x_570 = 0;
+    int x_606 = 0;
+    int x_611 = 0;
+    int x_607_phi = 0;
+    int x_612_phi = 0;
+    x_570 = x_570_phi;
+    switch(x_574) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        x_607_phi = x_572;
+        if ((x_570 == as_type<int>(x_574))) {
+          x_606 = as_type<int>((x_572 + as_type<int>(1)));
+          x_607_phi = x_606;
+        }
+        x_607 = x_607_phi;
+        x_573_phi = x_607;
+        break;
+      }
+      default: {
+        x_612_phi = x_572;
+        if ((x_570 == as_type<int>(-1))) {
+          x_611 = as_type<int>((x_572 + as_type<int>(1)));
+          x_612_phi = x_611;
+        }
+        x_612 = x_612_phi;
+        x_573_phi = x_612;
+        break;
+      }
+    }
+    int const x_573 = x_573_phi;
+    {
+      x_575 = (x_574 + 1);
+      x_569_phi = x_570;
+      x_572_phi = x_573;
+      x_574_phi = x_575;
+    }
+  }
+  if ((x_572 == as_type<int>(20))) {
+    *(tint_symbol_25) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_25) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_26 = 0.0f;
+  thread float4 tint_symbol_27 = 0.0f;
+  tint_symbol_26 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_26), &(tint_symbol_27));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_27};
+  tint_symbol_2 const tint_symbol_23 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_23;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..41d75a5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.spvasm
@@ -0,0 +1,1920 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 1006
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %x_67 "x_67"
+               OpName %x_114 "x_114"
+               OpName %x_572 "x_572"
+               OpName %x_67_phi "x_67_phi"
+               OpName %x_70_phi "x_70_phi"
+               OpName %x_116_phi "x_116_phi"
+               OpName %x_119_phi "x_119_phi"
+               OpName %x_569_phi "x_569_phi"
+               OpName %x_572_phi "x_572_phi"
+               OpName %x_574_phi "x_574_phi"
+               OpName %x_95 "x_95"
+               OpName %x_87 "x_87"
+               OpName %x_68 "x_68"
+               OpName %x_71 "x_71"
+               OpName %x_68_phi "x_68_phi"
+               OpName %x_71_phi "x_71_phi"
+               OpName %x_114_phi "x_114_phi"
+               OpName %x_133 "x_133"
+               OpName %x_120 "x_120"
+               OpName %x_134_phi "x_134_phi"
+               OpName %x_139 "x_139"
+               OpName %x_186 "x_186"
+               OpName %x_139_phi "x_139_phi"
+               OpName %x_142_phi "x_142_phi"
+               OpName %x_188_phi "x_188_phi"
+               OpName %x_167 "x_167"
+               OpName %x_159 "x_159"
+               OpName %x_140 "x_140"
+               OpName %x_143 "x_143"
+               OpName %x_140_phi "x_140_phi"
+               OpName %x_143_phi "x_143_phi"
+               OpName %x_186_phi "x_186_phi"
+               OpName %x_193 "x_193"
+               OpName %x_240 "x_240"
+               OpName %x_193_phi "x_193_phi"
+               OpName %x_196_phi "x_196_phi"
+               OpName %x_242_phi "x_242_phi"
+               OpName %x_221 "x_221"
+               OpName %x_213 "x_213"
+               OpName %x_194 "x_194"
+               OpName %x_197 "x_197"
+               OpName %x_194_phi "x_194_phi"
+               OpName %x_197_phi "x_197_phi"
+               OpName %x_240_phi "x_240_phi"
+               OpName %x_247 "x_247"
+               OpName %x_294 "x_294"
+               OpName %x_247_phi "x_247_phi"
+               OpName %x_250_phi "x_250_phi"
+               OpName %x_296_phi "x_296_phi"
+               OpName %x_275 "x_275"
+               OpName %x_267 "x_267"
+               OpName %x_248 "x_248"
+               OpName %x_251 "x_251"
+               OpName %x_248_phi "x_248_phi"
+               OpName %x_251_phi "x_251_phi"
+               OpName %x_294_phi "x_294_phi"
+               OpName %x_301 "x_301"
+               OpName %x_348 "x_348"
+               OpName %x_301_phi "x_301_phi"
+               OpName %x_304_phi "x_304_phi"
+               OpName %x_350_phi "x_350_phi"
+               OpName %x_329 "x_329"
+               OpName %x_321 "x_321"
+               OpName %x_302 "x_302"
+               OpName %x_305 "x_305"
+               OpName %x_302_phi "x_302_phi"
+               OpName %x_305_phi "x_305_phi"
+               OpName %x_348_phi "x_348_phi"
+               OpName %x_355 "x_355"
+               OpName %x_402 "x_402"
+               OpName %x_355_phi "x_355_phi"
+               OpName %x_358_phi "x_358_phi"
+               OpName %x_404_phi "x_404_phi"
+               OpName %x_383 "x_383"
+               OpName %x_375 "x_375"
+               OpName %x_356 "x_356"
+               OpName %x_359 "x_359"
+               OpName %x_356_phi "x_356_phi"
+               OpName %x_359_phi "x_359_phi"
+               OpName %x_402_phi "x_402_phi"
+               OpName %x_409 "x_409"
+               OpName %x_456 "x_456"
+               OpName %x_409_phi "x_409_phi"
+               OpName %x_412_phi "x_412_phi"
+               OpName %x_458_phi "x_458_phi"
+               OpName %x_437 "x_437"
+               OpName %x_429 "x_429"
+               OpName %x_410 "x_410"
+               OpName %x_413 "x_413"
+               OpName %x_410_phi "x_410_phi"
+               OpName %x_413_phi "x_413_phi"
+               OpName %x_456_phi "x_456_phi"
+               OpName %x_463 "x_463"
+               OpName %x_510 "x_510"
+               OpName %x_463_phi "x_463_phi"
+               OpName %x_466_phi "x_466_phi"
+               OpName %x_512_phi "x_512_phi"
+               OpName %x_491 "x_491"
+               OpName %x_483 "x_483"
+               OpName %x_464 "x_464"
+               OpName %x_467 "x_467"
+               OpName %x_464_phi "x_464_phi"
+               OpName %x_467_phi "x_467_phi"
+               OpName %x_510_phi "x_510_phi"
+               OpName %x_517 "x_517"
+               OpName %x_564 "x_564"
+               OpName %x_517_phi "x_517_phi"
+               OpName %x_520_phi "x_520_phi"
+               OpName %x_566_phi "x_566_phi"
+               OpName %x_545 "x_545"
+               OpName %x_537 "x_537"
+               OpName %x_518 "x_518"
+               OpName %x_521 "x_521"
+               OpName %x_518_phi "x_518_phi"
+               OpName %x_521_phi "x_521_phi"
+               OpName %x_564_phi "x_564_phi"
+               OpName %x_597 "x_597"
+               OpName %x_607 "x_607"
+               OpName %x_612 "x_612"
+               OpName %x_575 "x_575"
+               OpName %x_570_phi "x_570_phi"
+               OpName %x_573_phi "x_573_phi"
+               OpName %x_582_phi "x_582_phi"
+               OpName %x_597_phi "x_597_phi"
+               OpName %x_598_phi "x_598_phi"
+               OpName %x_570 "x_570"
+               OpName %x_606 "x_606"
+               OpName %x_611 "x_611"
+               OpName %x_607_phi "x_607_phi"
+               OpName %x_612_phi "x_612_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %26 = OpConstantNull %_arr_BST_uint_10
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %30 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %34 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+%_ptr_Function_BST = OpTypePointer Function %BST
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+         %47 = OpConstantComposite %BST %int_9 %int_n1 %int_n1
+     %uint_0 = OpConstant %uint 0
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+         %99 = OpConstantComposite %BST %int_5 %int_n1 %int_n1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+     %int_12 = OpConstant %int 12
+        %218 = OpConstantComposite %BST %int_12 %int_n1 %int_n1
+      %int_3 = OpConstant %int 3
+     %int_15 = OpConstant %int 15
+        %312 = OpConstantComposite %BST %int_15 %int_n1 %int_n1
+      %int_4 = OpConstant %int 4
+      %int_7 = OpConstant %int 7
+        %404 = OpConstantComposite %BST %int_7 %int_n1 %int_n1
+      %int_8 = OpConstant %int 8
+        %495 = OpConstantComposite %BST %int_8 %int_n1 %int_n1
+      %int_6 = OpConstant %int 6
+        %586 = OpConstantComposite %BST %int_2 %int_n1 %int_n1
+        %676 = OpConstantComposite %BST %int_6 %int_n1 %int_n1
+     %int_17 = OpConstant %int 17
+        %767 = OpConstantComposite %BST %int_17 %int_n1 %int_n1
+     %int_13 = OpConstant %int 13
+        %858 = OpConstantComposite %BST %int_13 %int_n1 %int_n1
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+        %991 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %992 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %993 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %tree = OpVariable %_ptr_Function__arr_BST_uint_10 Function %26
+       %x_67 = OpVariable %_ptr_Function_bool Function %30
+      %x_114 = OpVariable %_ptr_Function_bool Function %30
+      %x_572 = OpVariable %_ptr_Function_int Function %34
+   %x_67_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_70_phi = OpVariable %_ptr_Function_int Function %34
+  %x_116_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_119_phi = OpVariable %_ptr_Function_int Function %34
+  %x_569_phi = OpVariable %_ptr_Function_int Function %34
+  %x_572_phi = OpVariable %_ptr_Function_int Function %34
+  %x_574_phi = OpVariable %_ptr_Function_int Function %34
+       %x_95 = OpVariable %_ptr_Function_int Function %34
+       %x_87 = OpVariable %_ptr_Function_int Function %34
+       %x_68 = OpVariable %_ptr_Function_bool Function %30
+       %x_71 = OpVariable %_ptr_Function_int Function %34
+   %x_68_phi = OpVariable %_ptr_Function_bool Function %30
+   %x_71_phi = OpVariable %_ptr_Function_int Function %34
+  %x_114_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_133 = OpVariable %_ptr_Function_bool Function %30
+      %x_120 = OpVariable %_ptr_Function_int Function %34
+  %x_134_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_139 = OpVariable %_ptr_Function_bool Function %30
+      %x_186 = OpVariable %_ptr_Function_bool Function %30
+  %x_139_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_142_phi = OpVariable %_ptr_Function_int Function %34
+  %x_188_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_167 = OpVariable %_ptr_Function_int Function %34
+      %x_159 = OpVariable %_ptr_Function_int Function %34
+      %x_140 = OpVariable %_ptr_Function_bool Function %30
+      %x_143 = OpVariable %_ptr_Function_int Function %34
+  %x_140_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_143_phi = OpVariable %_ptr_Function_int Function %34
+  %x_186_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_193 = OpVariable %_ptr_Function_bool Function %30
+      %x_240 = OpVariable %_ptr_Function_bool Function %30
+  %x_193_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_196_phi = OpVariable %_ptr_Function_int Function %34
+  %x_242_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_221 = OpVariable %_ptr_Function_int Function %34
+      %x_213 = OpVariable %_ptr_Function_int Function %34
+      %x_194 = OpVariable %_ptr_Function_bool Function %30
+      %x_197 = OpVariable %_ptr_Function_int Function %34
+  %x_194_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_197_phi = OpVariable %_ptr_Function_int Function %34
+  %x_240_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_247 = OpVariable %_ptr_Function_bool Function %30
+      %x_294 = OpVariable %_ptr_Function_bool Function %30
+  %x_247_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_250_phi = OpVariable %_ptr_Function_int Function %34
+  %x_296_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_275 = OpVariable %_ptr_Function_int Function %34
+      %x_267 = OpVariable %_ptr_Function_int Function %34
+      %x_248 = OpVariable %_ptr_Function_bool Function %30
+      %x_251 = OpVariable %_ptr_Function_int Function %34
+  %x_248_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_251_phi = OpVariable %_ptr_Function_int Function %34
+  %x_294_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_301 = OpVariable %_ptr_Function_bool Function %30
+      %x_348 = OpVariable %_ptr_Function_bool Function %30
+  %x_301_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_304_phi = OpVariable %_ptr_Function_int Function %34
+  %x_350_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_329 = OpVariable %_ptr_Function_int Function %34
+      %x_321 = OpVariable %_ptr_Function_int Function %34
+      %x_302 = OpVariable %_ptr_Function_bool Function %30
+      %x_305 = OpVariable %_ptr_Function_int Function %34
+  %x_302_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_305_phi = OpVariable %_ptr_Function_int Function %34
+  %x_348_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_355 = OpVariable %_ptr_Function_bool Function %30
+      %x_402 = OpVariable %_ptr_Function_bool Function %30
+  %x_355_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_358_phi = OpVariable %_ptr_Function_int Function %34
+  %x_404_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_383 = OpVariable %_ptr_Function_int Function %34
+      %x_375 = OpVariable %_ptr_Function_int Function %34
+      %x_356 = OpVariable %_ptr_Function_bool Function %30
+      %x_359 = OpVariable %_ptr_Function_int Function %34
+  %x_356_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_359_phi = OpVariable %_ptr_Function_int Function %34
+  %x_402_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_409 = OpVariable %_ptr_Function_bool Function %30
+      %x_456 = OpVariable %_ptr_Function_bool Function %30
+  %x_409_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_412_phi = OpVariable %_ptr_Function_int Function %34
+  %x_458_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_437 = OpVariable %_ptr_Function_int Function %34
+      %x_429 = OpVariable %_ptr_Function_int Function %34
+      %x_410 = OpVariable %_ptr_Function_bool Function %30
+      %x_413 = OpVariable %_ptr_Function_int Function %34
+  %x_410_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_413_phi = OpVariable %_ptr_Function_int Function %34
+  %x_456_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_463 = OpVariable %_ptr_Function_bool Function %30
+      %x_510 = OpVariable %_ptr_Function_bool Function %30
+  %x_463_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_466_phi = OpVariable %_ptr_Function_int Function %34
+  %x_512_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_491 = OpVariable %_ptr_Function_int Function %34
+      %x_483 = OpVariable %_ptr_Function_int Function %34
+      %x_464 = OpVariable %_ptr_Function_bool Function %30
+      %x_467 = OpVariable %_ptr_Function_int Function %34
+  %x_464_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_467_phi = OpVariable %_ptr_Function_int Function %34
+  %x_510_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_517 = OpVariable %_ptr_Function_bool Function %30
+      %x_564 = OpVariable %_ptr_Function_bool Function %30
+  %x_517_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_520_phi = OpVariable %_ptr_Function_int Function %34
+  %x_566_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_545 = OpVariable %_ptr_Function_int Function %34
+      %x_537 = OpVariable %_ptr_Function_int Function %34
+      %x_518 = OpVariable %_ptr_Function_bool Function %30
+      %x_521 = OpVariable %_ptr_Function_int Function %34
+  %x_518_phi = OpVariable %_ptr_Function_bool Function %30
+  %x_521_phi = OpVariable %_ptr_Function_int Function %34
+  %x_564_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_597 = OpVariable %_ptr_Function_int Function %34
+      %x_607 = OpVariable %_ptr_Function_int Function %34
+      %x_612 = OpVariable %_ptr_Function_int Function %34
+      %x_575 = OpVariable %_ptr_Function_int Function %34
+  %x_570_phi = OpVariable %_ptr_Function_int Function %34
+  %x_573_phi = OpVariable %_ptr_Function_int Function %34
+  %x_582_phi = OpVariable %_ptr_Function_int Function %34
+  %x_597_phi = OpVariable %_ptr_Function_int Function %34
+  %x_598_phi = OpVariable %_ptr_Function_bool Function %30
+      %x_570 = OpVariable %_ptr_Function_int Function %34
+      %x_606 = OpVariable %_ptr_Function_int Function %34
+      %x_611 = OpVariable %_ptr_Function_int Function %34
+  %x_607_phi = OpVariable %_ptr_Function_int Function %34
+  %x_612_phi = OpVariable %_ptr_Function_int Function %34
+         %44 = OpAccessChain %_ptr_Function_BST %tree %int_0
+               OpStore %44 %47
+               OpSelectionMerge %48 None
+               OpSwitch %uint_0 %50
+         %50 = OpLabel
+               OpStore %x_67_phi %false
+               OpStore %x_70_phi %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %62 = OpLoad %bool %x_67_phi
+               OpStore %x_67 %62
+         %63 = OpLoad %int %x_70_phi
+         %64 = OpLoad %bool %x_67
+               OpStore %x_116_phi %64
+         %66 = OpSLessThanEqual %bool %63 %int_1
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %53
+         %67 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_int %tree %63 %uint_0
+         %71 = OpLoad %int %70
+         %73 = OpSLessThanEqual %bool %int_5 %71
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %79 = OpAccessChain %_ptr_Function_int %tree %63 %uint_1
+         %80 = OpLoad %int %79
+         %81 = OpIEqual %bool %80 %int_n1
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+         %86 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %89 = OpLoad %float %88
+         %90 = OpFOrdLessThan %bool %87 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+               OpLoopMerge %94 %95 None
+               OpBranch %96
+         %96 = OpLabel
+               OpKill
+         %95 = OpLabel
+               OpBranch %93
+         %94 = OpLabel
+               OpReturn
+         %91 = OpLabel
+         %97 = OpAccessChain %_ptr_Function_int %tree %63 %uint_1
+               OpStore %97 %int_1
+         %98 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %98 %99
+               OpBranch %100
+        %100 = OpLabel
+               OpLoopMerge %101 %102 None
+               OpBranch %103
+        %103 = OpLabel
+        %104 = OpLoad %bool %x_67
+               OpStore %x_114_phi %104
+        %105 = OpConvertFToS %int %87
+        %106 = OpSLessThan %bool %int_0 %105
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %109
+        %108 = OpLabel
+               OpBranch %107
+        %109 = OpLabel
+               OpBranch %101
+        %107 = OpLabel
+               OpStore %x_114_phi %true
+               OpBranch %101
+        %102 = OpLabel
+               OpBranch %100
+        %101 = OpLabel
+        %111 = OpLoad %bool %x_114_phi
+               OpStore %x_114 %111
+        %112 = OpLoad %bool %x_114
+               OpStore %x_116_phi %112
+        %113 = OpLoad %bool %x_114
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+               OpBranch %53
+        %114 = OpLabel
+               OpBranch %82
+         %84 = OpLabel
+        %116 = OpAccessChain %_ptr_Function_int %tree %63 %uint_1
+        %117 = OpLoad %int %116
+               OpStore %x_95 %117
+        %118 = OpLoad %bool %x_67
+               OpStore %x_68_phi %118
+        %119 = OpLoad %int %x_95
+               OpStore %x_71_phi %119
+               OpBranch %54
+         %82 = OpLabel
+               OpBranch %74
+         %76 = OpLabel
+        %121 = OpAccessChain %_ptr_Function_int %tree %63 %uint_2
+        %122 = OpLoad %int %121
+        %123 = OpIEqual %bool %122 %int_n1
+               OpSelectionMerge %124 None
+               OpBranchConditional %123 %125 %126
+        %125 = OpLabel
+        %127 = OpAccessChain %_ptr_Function_int %tree %63 %uint_2
+               OpStore %127 %int_1
+        %128 = OpAccessChain %_ptr_Function_BST %tree %int_1
+               OpStore %128 %99
+               OpStore %x_116_phi %true
+               OpBranch %53
+        %126 = OpLabel
+        %129 = OpAccessChain %_ptr_Function_int %tree %63 %uint_2
+        %130 = OpLoad %int %129
+               OpStore %x_87 %130
+        %131 = OpLoad %bool %x_67
+               OpStore %x_68_phi %131
+        %132 = OpLoad %int %x_87
+               OpStore %x_71_phi %132
+               OpBranch %54
+        %124 = OpLabel
+               OpReturn
+         %74 = OpLabel
+        %133 = OpLoad %bool %x_114
+               OpStore %x_68_phi %133
+               OpStore %x_71_phi %63
+               OpBranch %54
+         %54 = OpLabel
+        %134 = OpLoad %bool %x_68_phi
+               OpStore %x_68 %134
+        %135 = OpLoad %int %x_71_phi
+               OpStore %x_71 %135
+        %136 = OpLoad %bool %x_68
+               OpStore %x_67_phi %136
+        %137 = OpLoad %int %x_71
+               OpStore %x_70_phi %137
+               OpBranch %52
+         %53 = OpLabel
+        %138 = OpLoad %bool %x_116_phi
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+               OpBranch %48
+        %139 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpStore %x_119_phi %int_0
+               OpBranch %141
+        %141 = OpLabel
+               OpLoopMerge %142 %143 None
+               OpBranch %144
+        %144 = OpLabel
+        %148 = OpLoad %int %x_119_phi
+        %150 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %151 = OpLoad %float %150
+        %153 = OpFOrdLessThan %bool %151 %float_0
+               OpStore %x_134_phi %153
+        %154 = OpLogicalNot %bool %153
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %158 = OpLoad %float %157
+        %159 = OpConvertFToS %int %158
+        %160 = OpINotEqual %bool %148 %159
+               OpStore %x_133 %160
+        %161 = OpLoad %bool %x_133
+               OpStore %x_134_phi %161
+               OpBranch %155
+        %155 = OpLabel
+        %162 = OpLoad %bool %x_134_phi
+               OpSelectionMerge %163 None
+               OpBranchConditional %162 %164 %165
+        %164 = OpLabel
+               OpBranch %163
+        %165 = OpLabel
+               OpBranch %142
+        %163 = OpLabel
+               OpSelectionMerge %171 None
+               OpSwitch %uint_0 %172
+        %172 = OpLabel
+               OpStore %x_139_phi %false
+               OpStore %x_142_phi %int_0
+               OpBranch %173
+        %173 = OpLabel
+               OpLoopMerge %174 %175 None
+               OpBranch %176
+        %176 = OpLabel
+        %183 = OpLoad %bool %x_139_phi
+               OpStore %x_139 %183
+        %184 = OpLoad %int %x_142_phi
+        %185 = OpLoad %bool %x_139
+               OpStore %x_188_phi %185
+        %187 = OpSLessThanEqual %bool %184 %int_2
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %190
+        %189 = OpLabel
+               OpBranch %188
+        %190 = OpLabel
+               OpBranch %174
+        %188 = OpLabel
+        %191 = OpAccessChain %_ptr_Function_int %tree %184 %uint_0
+        %192 = OpLoad %int %191
+        %194 = OpSLessThanEqual %bool %int_12 %192
+               OpSelectionMerge %195 None
+               OpBranchConditional %194 %196 %197
+        %196 = OpLabel
+        %199 = OpAccessChain %_ptr_Function_int %tree %184 %uint_1
+        %200 = OpLoad %int %199
+        %201 = OpIEqual %bool %200 %int_n1
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %204
+        %203 = OpLabel
+        %205 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %206 = OpLoad %float %205
+        %207 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %208 = OpLoad %float %207
+        %209 = OpFOrdLessThan %bool %206 %208
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %210
+        %211 = OpLabel
+               OpBranch %212
+        %212 = OpLabel
+               OpLoopMerge %213 %214 None
+               OpBranch %215
+        %215 = OpLabel
+               OpKill
+        %214 = OpLabel
+               OpBranch %212
+        %213 = OpLabel
+               OpReturn
+        %210 = OpLabel
+        %216 = OpAccessChain %_ptr_Function_int %tree %184 %uint_1
+               OpStore %216 %int_2
+        %217 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %217 %218
+               OpBranch %219
+        %219 = OpLabel
+               OpLoopMerge %220 %221 None
+               OpBranch %222
+        %222 = OpLabel
+        %223 = OpLoad %bool %x_139
+               OpStore %x_186_phi %223
+        %224 = OpConvertFToS %int %206
+        %225 = OpSLessThan %bool %int_0 %224
+               OpSelectionMerge %226 None
+               OpBranchConditional %225 %227 %228
+        %227 = OpLabel
+               OpBranch %226
+        %228 = OpLabel
+               OpBranch %220
+        %226 = OpLabel
+               OpStore %x_186_phi %true
+               OpBranch %220
+        %221 = OpLabel
+               OpBranch %219
+        %220 = OpLabel
+        %229 = OpLoad %bool %x_186_phi
+               OpStore %x_186 %229
+        %230 = OpLoad %bool %x_186
+               OpStore %x_188_phi %230
+        %231 = OpLoad %bool %x_186
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %232
+        %233 = OpLabel
+               OpBranch %174
+        %232 = OpLabel
+               OpBranch %202
+        %204 = OpLabel
+        %234 = OpAccessChain %_ptr_Function_int %tree %184 %uint_1
+        %235 = OpLoad %int %234
+               OpStore %x_167 %235
+        %236 = OpLoad %bool %x_139
+               OpStore %x_140_phi %236
+        %237 = OpLoad %int %x_167
+               OpStore %x_143_phi %237
+               OpBranch %175
+        %202 = OpLabel
+               OpBranch %195
+        %197 = OpLabel
+        %238 = OpAccessChain %_ptr_Function_int %tree %184 %uint_2
+        %239 = OpLoad %int %238
+        %240 = OpIEqual %bool %239 %int_n1
+               OpSelectionMerge %241 None
+               OpBranchConditional %240 %242 %243
+        %242 = OpLabel
+        %244 = OpAccessChain %_ptr_Function_int %tree %184 %uint_2
+               OpStore %244 %int_2
+        %245 = OpAccessChain %_ptr_Function_BST %tree %int_2
+               OpStore %245 %218
+               OpStore %x_188_phi %true
+               OpBranch %174
+        %243 = OpLabel
+        %246 = OpAccessChain %_ptr_Function_int %tree %184 %uint_2
+        %247 = OpLoad %int %246
+               OpStore %x_159 %247
+        %248 = OpLoad %bool %x_139
+               OpStore %x_140_phi %248
+        %249 = OpLoad %int %x_159
+               OpStore %x_143_phi %249
+               OpBranch %175
+        %241 = OpLabel
+               OpReturn
+        %195 = OpLabel
+        %250 = OpLoad %bool %x_186
+               OpStore %x_140_phi %250
+               OpStore %x_143_phi %184
+               OpBranch %175
+        %175 = OpLabel
+        %251 = OpLoad %bool %x_140_phi
+               OpStore %x_140 %251
+        %252 = OpLoad %int %x_143_phi
+               OpStore %x_143 %252
+        %253 = OpLoad %bool %x_140
+               OpStore %x_139_phi %253
+        %254 = OpLoad %int %x_143
+               OpStore %x_142_phi %254
+               OpBranch %173
+        %174 = OpLabel
+        %255 = OpLoad %bool %x_188_phi
+               OpSelectionMerge %256 None
+               OpBranchConditional %255 %257 %256
+        %257 = OpLabel
+               OpBranch %171
+        %256 = OpLabel
+               OpBranch %171
+        %171 = OpLabel
+               OpBranch %143
+        %143 = OpLabel
+        %258 = OpIAdd %int %148 %int_1
+               OpStore %x_120 %258
+        %259 = OpLoad %int %x_120
+               OpStore %x_119_phi %259
+               OpBranch %141
+        %142 = OpLabel
+               OpSelectionMerge %265 None
+               OpSwitch %uint_0 %266
+        %266 = OpLabel
+               OpStore %x_193_phi %false
+               OpStore %x_196_phi %int_0
+               OpBranch %267
+        %267 = OpLabel
+               OpLoopMerge %268 %269 None
+               OpBranch %270
+        %270 = OpLabel
+        %277 = OpLoad %bool %x_193_phi
+               OpStore %x_193 %277
+        %278 = OpLoad %int %x_196_phi
+        %279 = OpLoad %bool %x_193
+               OpStore %x_242_phi %279
+        %281 = OpSLessThanEqual %bool %278 %int_3
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %284
+        %283 = OpLabel
+               OpBranch %282
+        %284 = OpLabel
+               OpBranch %268
+        %282 = OpLabel
+        %285 = OpAccessChain %_ptr_Function_int %tree %278 %uint_0
+        %286 = OpLoad %int %285
+        %288 = OpSLessThanEqual %bool %int_15 %286
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %291
+        %290 = OpLabel
+        %293 = OpAccessChain %_ptr_Function_int %tree %278 %uint_1
+        %294 = OpLoad %int %293
+        %295 = OpIEqual %bool %294 %int_n1
+               OpSelectionMerge %296 None
+               OpBranchConditional %295 %297 %298
+        %297 = OpLabel
+        %299 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %300 = OpLoad %float %299
+        %301 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %302 = OpLoad %float %301
+        %303 = OpFOrdLessThan %bool %300 %302
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %304
+        %305 = OpLabel
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+               OpKill
+        %308 = OpLabel
+               OpBranch %306
+        %307 = OpLabel
+               OpReturn
+        %304 = OpLabel
+        %310 = OpAccessChain %_ptr_Function_int %tree %278 %uint_1
+               OpStore %310 %int_3
+        %311 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %311 %312
+               OpBranch %313
+        %313 = OpLabel
+               OpLoopMerge %314 %315 None
+               OpBranch %316
+        %316 = OpLabel
+        %317 = OpLoad %bool %x_193
+               OpStore %x_240_phi %317
+        %318 = OpConvertFToS %int %300
+        %319 = OpSLessThan %bool %int_0 %318
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %322
+        %321 = OpLabel
+               OpBranch %320
+        %322 = OpLabel
+               OpBranch %314
+        %320 = OpLabel
+               OpStore %x_240_phi %true
+               OpBranch %314
+        %315 = OpLabel
+               OpBranch %313
+        %314 = OpLabel
+        %323 = OpLoad %bool %x_240_phi
+               OpStore %x_240 %323
+        %324 = OpLoad %bool %x_240
+               OpStore %x_242_phi %324
+        %325 = OpLoad %bool %x_240
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %326
+        %327 = OpLabel
+               OpBranch %268
+        %326 = OpLabel
+               OpBranch %296
+        %298 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_int %tree %278 %uint_1
+        %329 = OpLoad %int %328
+               OpStore %x_221 %329
+        %330 = OpLoad %bool %x_193
+               OpStore %x_194_phi %330
+        %331 = OpLoad %int %x_221
+               OpStore %x_197_phi %331
+               OpBranch %269
+        %296 = OpLabel
+               OpBranch %289
+        %291 = OpLabel
+        %332 = OpAccessChain %_ptr_Function_int %tree %278 %uint_2
+        %333 = OpLoad %int %332
+        %334 = OpIEqual %bool %333 %int_n1
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %337
+        %336 = OpLabel
+        %338 = OpAccessChain %_ptr_Function_int %tree %278 %uint_2
+               OpStore %338 %int_3
+        %339 = OpAccessChain %_ptr_Function_BST %tree %int_3
+               OpStore %339 %312
+               OpStore %x_242_phi %true
+               OpBranch %268
+        %337 = OpLabel
+        %340 = OpAccessChain %_ptr_Function_int %tree %278 %uint_2
+        %341 = OpLoad %int %340
+               OpStore %x_213 %341
+        %342 = OpLoad %bool %x_193
+               OpStore %x_194_phi %342
+        %343 = OpLoad %int %x_213
+               OpStore %x_197_phi %343
+               OpBranch %269
+        %335 = OpLabel
+               OpReturn
+        %289 = OpLabel
+        %344 = OpLoad %bool %x_240
+               OpStore %x_194_phi %344
+               OpStore %x_197_phi %278
+               OpBranch %269
+        %269 = OpLabel
+        %345 = OpLoad %bool %x_194_phi
+               OpStore %x_194 %345
+        %346 = OpLoad %int %x_197_phi
+               OpStore %x_197 %346
+        %347 = OpLoad %bool %x_194
+               OpStore %x_193_phi %347
+        %348 = OpLoad %int %x_197
+               OpStore %x_196_phi %348
+               OpBranch %267
+        %268 = OpLabel
+        %349 = OpLoad %bool %x_242_phi
+               OpSelectionMerge %350 None
+               OpBranchConditional %349 %351 %350
+        %351 = OpLabel
+               OpBranch %265
+        %350 = OpLabel
+               OpBranch %265
+        %265 = OpLabel
+               OpSelectionMerge %357 None
+               OpSwitch %uint_0 %358
+        %358 = OpLabel
+               OpStore %x_247_phi %false
+               OpStore %x_250_phi %int_0
+               OpBranch %359
+        %359 = OpLabel
+               OpLoopMerge %360 %361 None
+               OpBranch %362
+        %362 = OpLabel
+        %369 = OpLoad %bool %x_247_phi
+               OpStore %x_247 %369
+        %370 = OpLoad %int %x_250_phi
+        %371 = OpLoad %bool %x_247
+               OpStore %x_296_phi %371
+        %373 = OpSLessThanEqual %bool %370 %int_4
+               OpSelectionMerge %374 None
+               OpBranchConditional %373 %375 %376
+        %375 = OpLabel
+               OpBranch %374
+        %376 = OpLabel
+               OpBranch %360
+        %374 = OpLabel
+        %377 = OpAccessChain %_ptr_Function_int %tree %370 %uint_0
+        %378 = OpLoad %int %377
+        %380 = OpSLessThanEqual %bool %int_7 %378
+               OpSelectionMerge %381 None
+               OpBranchConditional %380 %382 %383
+        %382 = OpLabel
+        %385 = OpAccessChain %_ptr_Function_int %tree %370 %uint_1
+        %386 = OpLoad %int %385
+        %387 = OpIEqual %bool %386 %int_n1
+               OpSelectionMerge %388 None
+               OpBranchConditional %387 %389 %390
+        %389 = OpLabel
+        %391 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %392 = OpLoad %float %391
+        %393 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %394 = OpLoad %float %393
+        %395 = OpFOrdLessThan %bool %392 %394
+               OpSelectionMerge %396 None
+               OpBranchConditional %395 %397 %396
+        %397 = OpLabel
+               OpBranch %398
+        %398 = OpLabel
+               OpLoopMerge %399 %400 None
+               OpBranch %401
+        %401 = OpLabel
+               OpKill
+        %400 = OpLabel
+               OpBranch %398
+        %399 = OpLabel
+               OpReturn
+        %396 = OpLabel
+        %402 = OpAccessChain %_ptr_Function_int %tree %370 %uint_1
+               OpStore %402 %int_4
+        %403 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %403 %404
+               OpBranch %405
+        %405 = OpLabel
+               OpLoopMerge %406 %407 None
+               OpBranch %408
+        %408 = OpLabel
+        %409 = OpLoad %bool %x_247
+               OpStore %x_294_phi %409
+        %410 = OpConvertFToS %int %392
+        %411 = OpSLessThan %bool %int_0 %410
+               OpSelectionMerge %412 None
+               OpBranchConditional %411 %413 %414
+        %413 = OpLabel
+               OpBranch %412
+        %414 = OpLabel
+               OpBranch %406
+        %412 = OpLabel
+               OpStore %x_294_phi %true
+               OpBranch %406
+        %407 = OpLabel
+               OpBranch %405
+        %406 = OpLabel
+        %415 = OpLoad %bool %x_294_phi
+               OpStore %x_294 %415
+        %416 = OpLoad %bool %x_294
+               OpStore %x_296_phi %416
+        %417 = OpLoad %bool %x_294
+               OpSelectionMerge %418 None
+               OpBranchConditional %417 %419 %418
+        %419 = OpLabel
+               OpBranch %360
+        %418 = OpLabel
+               OpBranch %388
+        %390 = OpLabel
+        %420 = OpAccessChain %_ptr_Function_int %tree %370 %uint_1
+        %421 = OpLoad %int %420
+               OpStore %x_275 %421
+        %422 = OpLoad %bool %x_247
+               OpStore %x_248_phi %422
+        %423 = OpLoad %int %x_275
+               OpStore %x_251_phi %423
+               OpBranch %361
+        %388 = OpLabel
+               OpBranch %381
+        %383 = OpLabel
+        %424 = OpAccessChain %_ptr_Function_int %tree %370 %uint_2
+        %425 = OpLoad %int %424
+        %426 = OpIEqual %bool %425 %int_n1
+               OpSelectionMerge %427 None
+               OpBranchConditional %426 %428 %429
+        %428 = OpLabel
+        %430 = OpAccessChain %_ptr_Function_int %tree %370 %uint_2
+               OpStore %430 %int_4
+        %431 = OpAccessChain %_ptr_Function_BST %tree %int_4
+               OpStore %431 %404
+               OpStore %x_296_phi %true
+               OpBranch %360
+        %429 = OpLabel
+        %432 = OpAccessChain %_ptr_Function_int %tree %370 %uint_2
+        %433 = OpLoad %int %432
+               OpStore %x_267 %433
+        %434 = OpLoad %bool %x_247
+               OpStore %x_248_phi %434
+        %435 = OpLoad %int %x_267
+               OpStore %x_251_phi %435
+               OpBranch %361
+        %427 = OpLabel
+               OpReturn
+        %381 = OpLabel
+        %436 = OpLoad %bool %x_294
+               OpStore %x_248_phi %436
+               OpStore %x_251_phi %370
+               OpBranch %361
+        %361 = OpLabel
+        %437 = OpLoad %bool %x_248_phi
+               OpStore %x_248 %437
+        %438 = OpLoad %int %x_251_phi
+               OpStore %x_251 %438
+        %439 = OpLoad %bool %x_248
+               OpStore %x_247_phi %439
+        %440 = OpLoad %int %x_251
+               OpStore %x_250_phi %440
+               OpBranch %359
+        %360 = OpLabel
+        %441 = OpLoad %bool %x_296_phi
+               OpSelectionMerge %442 None
+               OpBranchConditional %441 %443 %442
+        %443 = OpLabel
+               OpBranch %357
+        %442 = OpLabel
+               OpBranch %357
+        %357 = OpLabel
+               OpSelectionMerge %449 None
+               OpSwitch %uint_0 %450
+        %450 = OpLabel
+               OpStore %x_301_phi %false
+               OpStore %x_304_phi %int_0
+               OpBranch %451
+        %451 = OpLabel
+               OpLoopMerge %452 %453 None
+               OpBranch %454
+        %454 = OpLabel
+        %461 = OpLoad %bool %x_301_phi
+               OpStore %x_301 %461
+        %462 = OpLoad %int %x_304_phi
+        %463 = OpLoad %bool %x_301
+               OpStore %x_350_phi %463
+        %464 = OpSLessThanEqual %bool %462 %int_5
+               OpSelectionMerge %465 None
+               OpBranchConditional %464 %466 %467
+        %466 = OpLabel
+               OpBranch %465
+        %467 = OpLabel
+               OpBranch %452
+        %465 = OpLabel
+        %468 = OpAccessChain %_ptr_Function_int %tree %462 %uint_0
+        %469 = OpLoad %int %468
+        %471 = OpSLessThanEqual %bool %int_8 %469
+               OpSelectionMerge %472 None
+               OpBranchConditional %471 %473 %474
+        %473 = OpLabel
+        %476 = OpAccessChain %_ptr_Function_int %tree %462 %uint_1
+        %477 = OpLoad %int %476
+        %478 = OpIEqual %bool %477 %int_n1
+               OpSelectionMerge %479 None
+               OpBranchConditional %478 %480 %481
+        %480 = OpLabel
+        %482 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %483 = OpLoad %float %482
+        %484 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %485 = OpLoad %float %484
+        %486 = OpFOrdLessThan %bool %483 %485
+               OpSelectionMerge %487 None
+               OpBranchConditional %486 %488 %487
+        %488 = OpLabel
+               OpBranch %489
+        %489 = OpLabel
+               OpLoopMerge %490 %491 None
+               OpBranch %492
+        %492 = OpLabel
+               OpKill
+        %491 = OpLabel
+               OpBranch %489
+        %490 = OpLabel
+               OpReturn
+        %487 = OpLabel
+        %493 = OpAccessChain %_ptr_Function_int %tree %462 %uint_1
+               OpStore %493 %int_5
+        %494 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %494 %495
+               OpBranch %496
+        %496 = OpLabel
+               OpLoopMerge %497 %498 None
+               OpBranch %499
+        %499 = OpLabel
+        %500 = OpLoad %bool %x_301
+               OpStore %x_348_phi %500
+        %501 = OpConvertFToS %int %483
+        %502 = OpSLessThan %bool %int_0 %501
+               OpSelectionMerge %503 None
+               OpBranchConditional %502 %504 %505
+        %504 = OpLabel
+               OpBranch %503
+        %505 = OpLabel
+               OpBranch %497
+        %503 = OpLabel
+               OpStore %x_348_phi %true
+               OpBranch %497
+        %498 = OpLabel
+               OpBranch %496
+        %497 = OpLabel
+        %506 = OpLoad %bool %x_348_phi
+               OpStore %x_348 %506
+        %507 = OpLoad %bool %x_348
+               OpStore %x_350_phi %507
+        %508 = OpLoad %bool %x_348
+               OpSelectionMerge %509 None
+               OpBranchConditional %508 %510 %509
+        %510 = OpLabel
+               OpBranch %452
+        %509 = OpLabel
+               OpBranch %479
+        %481 = OpLabel
+        %511 = OpAccessChain %_ptr_Function_int %tree %462 %uint_1
+        %512 = OpLoad %int %511
+               OpStore %x_329 %512
+        %513 = OpLoad %bool %x_301
+               OpStore %x_302_phi %513
+        %514 = OpLoad %int %x_329
+               OpStore %x_305_phi %514
+               OpBranch %453
+        %479 = OpLabel
+               OpBranch %472
+        %474 = OpLabel
+        %515 = OpAccessChain %_ptr_Function_int %tree %462 %uint_2
+        %516 = OpLoad %int %515
+        %517 = OpIEqual %bool %516 %int_n1
+               OpSelectionMerge %518 None
+               OpBranchConditional %517 %519 %520
+        %519 = OpLabel
+        %521 = OpAccessChain %_ptr_Function_int %tree %462 %uint_2
+               OpStore %521 %int_5
+        %522 = OpAccessChain %_ptr_Function_BST %tree %int_5
+               OpStore %522 %495
+               OpStore %x_350_phi %true
+               OpBranch %452
+        %520 = OpLabel
+        %523 = OpAccessChain %_ptr_Function_int %tree %462 %uint_2
+        %524 = OpLoad %int %523
+               OpStore %x_321 %524
+        %525 = OpLoad %bool %x_301
+               OpStore %x_302_phi %525
+        %526 = OpLoad %int %x_321
+               OpStore %x_305_phi %526
+               OpBranch %453
+        %518 = OpLabel
+               OpReturn
+        %472 = OpLabel
+        %527 = OpLoad %bool %x_348
+               OpStore %x_302_phi %527
+               OpStore %x_305_phi %462
+               OpBranch %453
+        %453 = OpLabel
+        %528 = OpLoad %bool %x_302_phi
+               OpStore %x_302 %528
+        %529 = OpLoad %int %x_305_phi
+               OpStore %x_305 %529
+        %530 = OpLoad %bool %x_302
+               OpStore %x_301_phi %530
+        %531 = OpLoad %int %x_305
+               OpStore %x_304_phi %531
+               OpBranch %451
+        %452 = OpLabel
+        %532 = OpLoad %bool %x_350_phi
+               OpSelectionMerge %533 None
+               OpBranchConditional %532 %534 %533
+        %534 = OpLabel
+               OpBranch %449
+        %533 = OpLabel
+               OpBranch %449
+        %449 = OpLabel
+               OpSelectionMerge %540 None
+               OpSwitch %uint_0 %541
+        %541 = OpLabel
+               OpStore %x_355_phi %false
+               OpStore %x_358_phi %int_0
+               OpBranch %542
+        %542 = OpLabel
+               OpLoopMerge %543 %544 None
+               OpBranch %545
+        %545 = OpLabel
+        %552 = OpLoad %bool %x_355_phi
+               OpStore %x_355 %552
+        %553 = OpLoad %int %x_358_phi
+        %554 = OpLoad %bool %x_355
+               OpStore %x_404_phi %554
+        %556 = OpSLessThanEqual %bool %553 %int_6
+               OpSelectionMerge %557 None
+               OpBranchConditional %556 %558 %559
+        %558 = OpLabel
+               OpBranch %557
+        %559 = OpLabel
+               OpBranch %543
+        %557 = OpLabel
+        %560 = OpAccessChain %_ptr_Function_int %tree %553 %uint_0
+        %561 = OpLoad %int %560
+        %562 = OpSLessThanEqual %bool %int_2 %561
+               OpSelectionMerge %563 None
+               OpBranchConditional %562 %564 %565
+        %564 = OpLabel
+        %567 = OpAccessChain %_ptr_Function_int %tree %553 %uint_1
+        %568 = OpLoad %int %567
+        %569 = OpIEqual %bool %568 %int_n1
+               OpSelectionMerge %570 None
+               OpBranchConditional %569 %571 %572
+        %571 = OpLabel
+        %573 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %574 = OpLoad %float %573
+        %575 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %576 = OpLoad %float %575
+        %577 = OpFOrdLessThan %bool %574 %576
+               OpSelectionMerge %578 None
+               OpBranchConditional %577 %579 %578
+        %579 = OpLabel
+               OpBranch %580
+        %580 = OpLabel
+               OpLoopMerge %581 %582 None
+               OpBranch %583
+        %583 = OpLabel
+               OpKill
+        %582 = OpLabel
+               OpBranch %580
+        %581 = OpLabel
+               OpReturn
+        %578 = OpLabel
+        %584 = OpAccessChain %_ptr_Function_int %tree %553 %uint_1
+               OpStore %584 %int_6
+        %585 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %585 %586
+               OpBranch %587
+        %587 = OpLabel
+               OpLoopMerge %588 %589 None
+               OpBranch %590
+        %590 = OpLabel
+        %591 = OpLoad %bool %x_355
+               OpStore %x_402_phi %591
+        %592 = OpConvertFToS %int %574
+        %593 = OpSLessThan %bool %int_0 %592
+               OpSelectionMerge %594 None
+               OpBranchConditional %593 %595 %596
+        %595 = OpLabel
+               OpBranch %594
+        %596 = OpLabel
+               OpBranch %588
+        %594 = OpLabel
+               OpStore %x_402_phi %true
+               OpBranch %588
+        %589 = OpLabel
+               OpBranch %587
+        %588 = OpLabel
+        %597 = OpLoad %bool %x_402_phi
+               OpStore %x_402 %597
+        %598 = OpLoad %bool %x_402
+               OpStore %x_404_phi %598
+        %599 = OpLoad %bool %x_402
+               OpSelectionMerge %600 None
+               OpBranchConditional %599 %601 %600
+        %601 = OpLabel
+               OpBranch %543
+        %600 = OpLabel
+               OpBranch %570
+        %572 = OpLabel
+        %602 = OpAccessChain %_ptr_Function_int %tree %553 %uint_1
+        %603 = OpLoad %int %602
+               OpStore %x_383 %603
+        %604 = OpLoad %bool %x_355
+               OpStore %x_356_phi %604
+        %605 = OpLoad %int %x_383
+               OpStore %x_359_phi %605
+               OpBranch %544
+        %570 = OpLabel
+               OpBranch %563
+        %565 = OpLabel
+        %606 = OpAccessChain %_ptr_Function_int %tree %553 %uint_2
+        %607 = OpLoad %int %606
+        %608 = OpIEqual %bool %607 %int_n1
+               OpSelectionMerge %609 None
+               OpBranchConditional %608 %610 %611
+        %610 = OpLabel
+        %612 = OpAccessChain %_ptr_Function_int %tree %553 %uint_2
+               OpStore %612 %int_6
+        %613 = OpAccessChain %_ptr_Function_BST %tree %int_6
+               OpStore %613 %586
+               OpStore %x_404_phi %true
+               OpBranch %543
+        %611 = OpLabel
+        %614 = OpAccessChain %_ptr_Function_int %tree %553 %uint_2
+        %615 = OpLoad %int %614
+               OpStore %x_375 %615
+        %616 = OpLoad %bool %x_355
+               OpStore %x_356_phi %616
+        %617 = OpLoad %int %x_375
+               OpStore %x_359_phi %617
+               OpBranch %544
+        %609 = OpLabel
+               OpReturn
+        %563 = OpLabel
+        %618 = OpLoad %bool %x_402
+               OpStore %x_356_phi %618
+               OpStore %x_359_phi %553
+               OpBranch %544
+        %544 = OpLabel
+        %619 = OpLoad %bool %x_356_phi
+               OpStore %x_356 %619
+        %620 = OpLoad %int %x_359_phi
+               OpStore %x_359 %620
+        %621 = OpLoad %bool %x_356
+               OpStore %x_355_phi %621
+        %622 = OpLoad %int %x_359
+               OpStore %x_358_phi %622
+               OpBranch %542
+        %543 = OpLabel
+        %623 = OpLoad %bool %x_404_phi
+               OpSelectionMerge %624 None
+               OpBranchConditional %623 %625 %624
+        %625 = OpLabel
+               OpBranch %540
+        %624 = OpLabel
+               OpBranch %540
+        %540 = OpLabel
+               OpSelectionMerge %631 None
+               OpSwitch %uint_0 %632
+        %632 = OpLabel
+               OpStore %x_409_phi %false
+               OpStore %x_412_phi %int_0
+               OpBranch %633
+        %633 = OpLabel
+               OpLoopMerge %634 %635 None
+               OpBranch %636
+        %636 = OpLabel
+        %643 = OpLoad %bool %x_409_phi
+               OpStore %x_409 %643
+        %644 = OpLoad %int %x_412_phi
+        %645 = OpLoad %bool %x_409
+               OpStore %x_458_phi %645
+        %646 = OpSLessThanEqual %bool %644 %int_7
+               OpSelectionMerge %647 None
+               OpBranchConditional %646 %648 %649
+        %648 = OpLabel
+               OpBranch %647
+        %649 = OpLabel
+               OpBranch %634
+        %647 = OpLabel
+        %650 = OpAccessChain %_ptr_Function_int %tree %644 %uint_0
+        %651 = OpLoad %int %650
+        %652 = OpSLessThanEqual %bool %int_6 %651
+               OpSelectionMerge %653 None
+               OpBranchConditional %652 %654 %655
+        %654 = OpLabel
+        %657 = OpAccessChain %_ptr_Function_int %tree %644 %uint_1
+        %658 = OpLoad %int %657
+        %659 = OpIEqual %bool %658 %int_n1
+               OpSelectionMerge %660 None
+               OpBranchConditional %659 %661 %662
+        %661 = OpLabel
+        %663 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %664 = OpLoad %float %663
+        %665 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %666 = OpLoad %float %665
+        %667 = OpFOrdLessThan %bool %664 %666
+               OpSelectionMerge %668 None
+               OpBranchConditional %667 %669 %668
+        %669 = OpLabel
+               OpBranch %670
+        %670 = OpLabel
+               OpLoopMerge %671 %672 None
+               OpBranch %673
+        %673 = OpLabel
+               OpKill
+        %672 = OpLabel
+               OpBranch %670
+        %671 = OpLabel
+               OpReturn
+        %668 = OpLabel
+        %674 = OpAccessChain %_ptr_Function_int %tree %644 %uint_1
+               OpStore %674 %int_7
+        %675 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %675 %676
+               OpBranch %677
+        %677 = OpLabel
+               OpLoopMerge %678 %679 None
+               OpBranch %680
+        %680 = OpLabel
+        %681 = OpLoad %bool %x_409
+               OpStore %x_456_phi %681
+        %682 = OpConvertFToS %int %664
+        %683 = OpSLessThan %bool %int_0 %682
+               OpSelectionMerge %684 None
+               OpBranchConditional %683 %685 %686
+        %685 = OpLabel
+               OpBranch %684
+        %686 = OpLabel
+               OpBranch %678
+        %684 = OpLabel
+               OpStore %x_456_phi %true
+               OpBranch %678
+        %679 = OpLabel
+               OpBranch %677
+        %678 = OpLabel
+        %687 = OpLoad %bool %x_456_phi
+               OpStore %x_456 %687
+        %688 = OpLoad %bool %x_456
+               OpStore %x_458_phi %688
+        %689 = OpLoad %bool %x_456
+               OpSelectionMerge %690 None
+               OpBranchConditional %689 %691 %690
+        %691 = OpLabel
+               OpBranch %634
+        %690 = OpLabel
+               OpBranch %660
+        %662 = OpLabel
+        %692 = OpAccessChain %_ptr_Function_int %tree %644 %uint_1
+        %693 = OpLoad %int %692
+               OpStore %x_437 %693
+        %694 = OpLoad %bool %x_409
+               OpStore %x_410_phi %694
+        %695 = OpLoad %int %x_437
+               OpStore %x_413_phi %695
+               OpBranch %635
+        %660 = OpLabel
+               OpBranch %653
+        %655 = OpLabel
+        %696 = OpAccessChain %_ptr_Function_int %tree %644 %uint_2
+        %697 = OpLoad %int %696
+        %698 = OpIEqual %bool %697 %int_n1
+               OpSelectionMerge %699 None
+               OpBranchConditional %698 %700 %701
+        %700 = OpLabel
+        %702 = OpAccessChain %_ptr_Function_int %tree %644 %uint_2
+               OpStore %702 %int_7
+        %703 = OpAccessChain %_ptr_Function_BST %tree %int_7
+               OpStore %703 %676
+               OpStore %x_458_phi %true
+               OpBranch %634
+        %701 = OpLabel
+        %704 = OpAccessChain %_ptr_Function_int %tree %644 %uint_2
+        %705 = OpLoad %int %704
+               OpStore %x_429 %705
+        %706 = OpLoad %bool %x_409
+               OpStore %x_410_phi %706
+        %707 = OpLoad %int %x_429
+               OpStore %x_413_phi %707
+               OpBranch %635
+        %699 = OpLabel
+               OpReturn
+        %653 = OpLabel
+        %708 = OpLoad %bool %x_456
+               OpStore %x_410_phi %708
+               OpStore %x_413_phi %644
+               OpBranch %635
+        %635 = OpLabel
+        %709 = OpLoad %bool %x_410_phi
+               OpStore %x_410 %709
+        %710 = OpLoad %int %x_413_phi
+               OpStore %x_413 %710
+        %711 = OpLoad %bool %x_410
+               OpStore %x_409_phi %711
+        %712 = OpLoad %int %x_413
+               OpStore %x_412_phi %712
+               OpBranch %633
+        %634 = OpLabel
+        %713 = OpLoad %bool %x_458_phi
+               OpSelectionMerge %714 None
+               OpBranchConditional %713 %715 %714
+        %715 = OpLabel
+               OpBranch %631
+        %714 = OpLabel
+               OpBranch %631
+        %631 = OpLabel
+               OpSelectionMerge %721 None
+               OpSwitch %uint_0 %722
+        %722 = OpLabel
+               OpStore %x_463_phi %false
+               OpStore %x_466_phi %int_0
+               OpBranch %723
+        %723 = OpLabel
+               OpLoopMerge %724 %725 None
+               OpBranch %726
+        %726 = OpLabel
+        %733 = OpLoad %bool %x_463_phi
+               OpStore %x_463 %733
+        %734 = OpLoad %int %x_466_phi
+        %735 = OpLoad %bool %x_463
+               OpStore %x_512_phi %735
+        %736 = OpSLessThanEqual %bool %734 %int_8
+               OpSelectionMerge %737 None
+               OpBranchConditional %736 %738 %739
+        %738 = OpLabel
+               OpBranch %737
+        %739 = OpLabel
+               OpBranch %724
+        %737 = OpLabel
+        %740 = OpAccessChain %_ptr_Function_int %tree %734 %uint_0
+        %741 = OpLoad %int %740
+        %743 = OpSLessThanEqual %bool %int_17 %741
+               OpSelectionMerge %744 None
+               OpBranchConditional %743 %745 %746
+        %745 = OpLabel
+        %748 = OpAccessChain %_ptr_Function_int %tree %734 %uint_1
+        %749 = OpLoad %int %748
+        %750 = OpIEqual %bool %749 %int_n1
+               OpSelectionMerge %751 None
+               OpBranchConditional %750 %752 %753
+        %752 = OpLabel
+        %754 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %755 = OpLoad %float %754
+        %756 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %757 = OpLoad %float %756
+        %758 = OpFOrdLessThan %bool %755 %757
+               OpSelectionMerge %759 None
+               OpBranchConditional %758 %760 %759
+        %760 = OpLabel
+               OpBranch %761
+        %761 = OpLabel
+               OpLoopMerge %762 %763 None
+               OpBranch %764
+        %764 = OpLabel
+               OpKill
+        %763 = OpLabel
+               OpBranch %761
+        %762 = OpLabel
+               OpReturn
+        %759 = OpLabel
+        %765 = OpAccessChain %_ptr_Function_int %tree %734 %uint_1
+               OpStore %765 %int_8
+        %766 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %766 %767
+               OpBranch %768
+        %768 = OpLabel
+               OpLoopMerge %769 %770 None
+               OpBranch %771
+        %771 = OpLabel
+        %772 = OpLoad %bool %x_463
+               OpStore %x_510_phi %772
+        %773 = OpConvertFToS %int %755
+        %774 = OpSLessThan %bool %int_0 %773
+               OpSelectionMerge %775 None
+               OpBranchConditional %774 %776 %777
+        %776 = OpLabel
+               OpBranch %775
+        %777 = OpLabel
+               OpBranch %769
+        %775 = OpLabel
+               OpStore %x_510_phi %true
+               OpBranch %769
+        %770 = OpLabel
+               OpBranch %768
+        %769 = OpLabel
+        %778 = OpLoad %bool %x_510_phi
+               OpStore %x_510 %778
+        %779 = OpLoad %bool %x_510
+               OpStore %x_512_phi %779
+        %780 = OpLoad %bool %x_510
+               OpSelectionMerge %781 None
+               OpBranchConditional %780 %782 %781
+        %782 = OpLabel
+               OpBranch %724
+        %781 = OpLabel
+               OpBranch %751
+        %753 = OpLabel
+        %783 = OpAccessChain %_ptr_Function_int %tree %734 %uint_1
+        %784 = OpLoad %int %783
+               OpStore %x_491 %784
+        %785 = OpLoad %bool %x_463
+               OpStore %x_464_phi %785
+        %786 = OpLoad %int %x_491
+               OpStore %x_467_phi %786
+               OpBranch %725
+        %751 = OpLabel
+               OpBranch %744
+        %746 = OpLabel
+        %787 = OpAccessChain %_ptr_Function_int %tree %734 %uint_2
+        %788 = OpLoad %int %787
+        %789 = OpIEqual %bool %788 %int_n1
+               OpSelectionMerge %790 None
+               OpBranchConditional %789 %791 %792
+        %791 = OpLabel
+        %793 = OpAccessChain %_ptr_Function_int %tree %734 %uint_2
+               OpStore %793 %int_8
+        %794 = OpAccessChain %_ptr_Function_BST %tree %int_8
+               OpStore %794 %767
+               OpStore %x_512_phi %true
+               OpBranch %724
+        %792 = OpLabel
+        %795 = OpAccessChain %_ptr_Function_int %tree %734 %uint_2
+        %796 = OpLoad %int %795
+               OpStore %x_483 %796
+        %797 = OpLoad %bool %x_463
+               OpStore %x_464_phi %797
+        %798 = OpLoad %int %x_483
+               OpStore %x_467_phi %798
+               OpBranch %725
+        %790 = OpLabel
+               OpReturn
+        %744 = OpLabel
+        %799 = OpLoad %bool %x_510
+               OpStore %x_464_phi %799
+               OpStore %x_467_phi %734
+               OpBranch %725
+        %725 = OpLabel
+        %800 = OpLoad %bool %x_464_phi
+               OpStore %x_464 %800
+        %801 = OpLoad %int %x_467_phi
+               OpStore %x_467 %801
+        %802 = OpLoad %bool %x_464
+               OpStore %x_463_phi %802
+        %803 = OpLoad %int %x_467
+               OpStore %x_466_phi %803
+               OpBranch %723
+        %724 = OpLabel
+        %804 = OpLoad %bool %x_512_phi
+               OpSelectionMerge %805 None
+               OpBranchConditional %804 %806 %805
+        %806 = OpLabel
+               OpBranch %721
+        %805 = OpLabel
+               OpBranch %721
+        %721 = OpLabel
+               OpSelectionMerge %812 None
+               OpSwitch %uint_0 %813
+        %813 = OpLabel
+               OpStore %x_517_phi %false
+               OpStore %x_520_phi %int_0
+               OpBranch %814
+        %814 = OpLabel
+               OpLoopMerge %815 %816 None
+               OpBranch %817
+        %817 = OpLabel
+        %824 = OpLoad %bool %x_517_phi
+               OpStore %x_517 %824
+        %825 = OpLoad %int %x_520_phi
+        %826 = OpLoad %bool %x_517
+               OpStore %x_566_phi %826
+        %827 = OpSLessThanEqual %bool %825 %int_9
+               OpSelectionMerge %828 None
+               OpBranchConditional %827 %829 %830
+        %829 = OpLabel
+               OpBranch %828
+        %830 = OpLabel
+               OpBranch %815
+        %828 = OpLabel
+        %831 = OpAccessChain %_ptr_Function_int %tree %825 %uint_0
+        %832 = OpLoad %int %831
+        %834 = OpSLessThanEqual %bool %int_13 %832
+               OpSelectionMerge %835 None
+               OpBranchConditional %834 %836 %837
+        %836 = OpLabel
+        %839 = OpAccessChain %_ptr_Function_int %tree %825 %uint_1
+        %840 = OpLoad %int %839
+        %841 = OpIEqual %bool %840 %int_n1
+               OpSelectionMerge %842 None
+               OpBranchConditional %841 %843 %844
+        %843 = OpLabel
+        %845 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %846 = OpLoad %float %845
+        %847 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %848 = OpLoad %float %847
+        %849 = OpFOrdLessThan %bool %846 %848
+               OpSelectionMerge %850 None
+               OpBranchConditional %849 %851 %850
+        %851 = OpLabel
+               OpBranch %852
+        %852 = OpLabel
+               OpLoopMerge %853 %854 None
+               OpBranch %855
+        %855 = OpLabel
+               OpKill
+        %854 = OpLabel
+               OpBranch %852
+        %853 = OpLabel
+               OpReturn
+        %850 = OpLabel
+        %856 = OpAccessChain %_ptr_Function_int %tree %825 %uint_1
+               OpStore %856 %int_9
+        %857 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %857 %858
+               OpBranch %859
+        %859 = OpLabel
+               OpLoopMerge %860 %861 None
+               OpBranch %862
+        %862 = OpLabel
+        %863 = OpLoad %bool %x_517
+               OpStore %x_564_phi %863
+        %864 = OpConvertFToS %int %846
+        %865 = OpSLessThan %bool %int_0 %864
+               OpSelectionMerge %866 None
+               OpBranchConditional %865 %867 %868
+        %867 = OpLabel
+               OpBranch %866
+        %868 = OpLabel
+               OpBranch %860
+        %866 = OpLabel
+               OpStore %x_564_phi %true
+               OpBranch %860
+        %861 = OpLabel
+               OpBranch %859
+        %860 = OpLabel
+        %869 = OpLoad %bool %x_564_phi
+               OpStore %x_564 %869
+        %870 = OpLoad %bool %x_564
+               OpStore %x_566_phi %870
+        %871 = OpLoad %bool %x_564
+               OpSelectionMerge %872 None
+               OpBranchConditional %871 %873 %872
+        %873 = OpLabel
+               OpBranch %815
+        %872 = OpLabel
+               OpBranch %842
+        %844 = OpLabel
+        %874 = OpAccessChain %_ptr_Function_int %tree %825 %uint_1
+        %875 = OpLoad %int %874
+               OpStore %x_545 %875
+        %876 = OpLoad %bool %x_517
+               OpStore %x_518_phi %876
+        %877 = OpLoad %int %x_545
+               OpStore %x_521_phi %877
+               OpBranch %816
+        %842 = OpLabel
+               OpBranch %835
+        %837 = OpLabel
+        %878 = OpAccessChain %_ptr_Function_int %tree %825 %uint_2
+        %879 = OpLoad %int %878
+        %880 = OpIEqual %bool %879 %int_n1
+               OpSelectionMerge %881 None
+               OpBranchConditional %880 %882 %883
+        %882 = OpLabel
+        %884 = OpAccessChain %_ptr_Function_int %tree %825 %uint_2
+               OpStore %884 %int_9
+        %885 = OpAccessChain %_ptr_Function_BST %tree %int_9
+               OpStore %885 %858
+               OpStore %x_566_phi %true
+               OpBranch %815
+        %883 = OpLabel
+        %886 = OpAccessChain %_ptr_Function_int %tree %825 %uint_2
+        %887 = OpLoad %int %886
+               OpStore %x_537 %887
+        %888 = OpLoad %bool %x_517
+               OpStore %x_518_phi %888
+        %889 = OpLoad %int %x_537
+               OpStore %x_521_phi %889
+               OpBranch %816
+        %881 = OpLabel
+               OpReturn
+        %835 = OpLabel
+        %890 = OpLoad %bool %x_564
+               OpStore %x_518_phi %890
+               OpStore %x_521_phi %825
+               OpBranch %816
+        %816 = OpLabel
+        %891 = OpLoad %bool %x_518_phi
+               OpStore %x_518 %891
+        %892 = OpLoad %int %x_521_phi
+               OpStore %x_521 %892
+        %893 = OpLoad %bool %x_518
+               OpStore %x_517_phi %893
+        %894 = OpLoad %int %x_521
+               OpStore %x_520_phi %894
+               OpBranch %814
+        %815 = OpLabel
+        %895 = OpLoad %bool %x_566_phi
+               OpSelectionMerge %896 None
+               OpBranchConditional %895 %897 %896
+        %897 = OpLabel
+               OpBranch %812
+        %896 = OpLabel
+               OpBranch %812
+        %812 = OpLabel
+               OpStore %x_569_phi %int_0
+               OpStore %x_572_phi %int_0
+               OpStore %x_574_phi %int_0
+               OpBranch %898
+        %898 = OpLabel
+               OpLoopMerge %899 %900 None
+               OpBranch %901
+        %901 = OpLabel
+        %908 = OpLoad %int %x_569_phi
+        %909 = OpLoad %int %x_572_phi
+               OpStore %x_572 %909
+        %910 = OpLoad %int %x_574_phi
+        %912 = OpSLessThan %bool %910 %int_20
+               OpSelectionMerge %913 None
+               OpBranchConditional %912 %914 %915
+        %914 = OpLabel
+               OpBranch %913
+        %915 = OpLabel
+               OpBranch %899
+        %913 = OpLabel
+               OpSelectionMerge %919 None
+               OpSwitch %uint_0 %920
+        %920 = OpLabel
+               OpStore %x_582_phi %int_0
+               OpBranch %921
+        %921 = OpLabel
+               OpLoopMerge %922 %923 None
+               OpBranch %924
+        %924 = OpLabel
+        %925 = OpLoad %int %x_582_phi
+               OpStore %x_597_phi %908
+               OpStore %x_598_phi %false
+        %926 = OpINotEqual %bool %925 %int_n1
+               OpSelectionMerge %927 None
+               OpBranchConditional %926 %928 %929
+        %928 = OpLabel
+               OpBranch %927
+        %929 = OpLabel
+               OpBranch %922
+        %927 = OpLabel
+        %930 = OpAccessChain %_ptr_Function_BST %tree %925
+        %931 = OpLoad %BST %930
+        %932 = OpCompositeExtract %int %931 0
+        %933 = OpCompositeExtract %int %931 1
+        %934 = OpCompositeExtract %int %931 2
+        %935 = OpIEqual %bool %932 %910
+               OpSelectionMerge %936 None
+               OpBranchConditional %935 %937 %936
+        %937 = OpLabel
+               OpStore %x_597_phi %910
+               OpStore %x_598_phi %true
+               OpBranch %922
+        %936 = OpLabel
+               OpBranch %923
+        %923 = OpLabel
+        %939 = OpSGreaterThan %bool %910 %932
+        %938 = OpSelect %int %939 %934 %933
+               OpStore %x_582_phi %938
+               OpBranch %921
+        %922 = OpLabel
+        %940 = OpLoad %int %x_597_phi
+               OpStore %x_597 %940
+        %941 = OpLoad %bool %x_598_phi
+        %942 = OpLoad %int %x_597
+               OpStore %x_570_phi %942
+               OpSelectionMerge %943 None
+               OpBranchConditional %941 %944 %943
+        %944 = OpLabel
+               OpBranch %919
+        %943 = OpLabel
+               OpStore %x_570_phi %int_n1
+               OpBranch %919
+        %919 = OpLabel
+        %950 = OpLoad %int %x_570_phi
+               OpStore %x_570 %950
+               OpSelectionMerge %951 None
+               OpSwitch %910 %952 2 %953 5 %953 6 %953 7 %953 8 %953 9 %953 12 %953 13 %953 15 %953 17 %953
+        %953 = OpLabel
+        %954 = OpLoad %int %x_572
+               OpStore %x_607_phi %954
+        %955 = OpLoad %int %x_570
+        %956 = OpCopyObject %int %910
+        %957 = OpIEqual %bool %955 %956
+               OpSelectionMerge %958 None
+               OpBranchConditional %957 %959 %958
+        %959 = OpLabel
+        %961 = OpLoad %int %x_572
+        %962 = OpCopyObject %int %int_1
+        %963 = OpIAdd %int %961 %962
+        %960 = OpCopyObject %int %963
+               OpStore %x_606 %960
+        %964 = OpLoad %int %x_606
+               OpStore %x_607_phi %964
+               OpBranch %958
+        %958 = OpLabel
+        %965 = OpLoad %int %x_607_phi
+               OpStore %x_607 %965
+        %966 = OpLoad %int %x_607
+               OpStore %x_573_phi %966
+               OpBranch %951
+        %952 = OpLabel
+        %967 = OpLoad %int %x_572
+               OpStore %x_612_phi %967
+        %968 = OpLoad %int %x_570
+        %969 = OpCopyObject %int %int_n1
+        %970 = OpIEqual %bool %968 %969
+               OpSelectionMerge %971 None
+               OpBranchConditional %970 %972 %971
+        %972 = OpLabel
+        %974 = OpLoad %int %x_572
+        %975 = OpCopyObject %int %int_1
+        %976 = OpIAdd %int %974 %975
+        %973 = OpCopyObject %int %976
+               OpStore %x_611 %973
+        %977 = OpLoad %int %x_611
+               OpStore %x_612_phi %977
+               OpBranch %971
+        %971 = OpLabel
+        %978 = OpLoad %int %x_612_phi
+               OpStore %x_612 %978
+        %979 = OpLoad %int %x_612
+               OpStore %x_573_phi %979
+               OpBranch %951
+        %951 = OpLabel
+        %980 = OpLoad %int %x_573_phi
+               OpBranch %900
+        %900 = OpLabel
+        %981 = OpIAdd %int %910 %int_1
+               OpStore %x_575 %981
+        %982 = OpLoad %int %x_570
+               OpStore %x_569_phi %982
+               OpStore %x_572_phi %980
+        %983 = OpLoad %int %x_575
+               OpStore %x_574_phi %983
+               OpBranch %898
+        %899 = OpLabel
+        %984 = OpLoad %int %x_572
+        %985 = OpCopyObject %int %int_20
+        %986 = OpIEqual %bool %984 %985
+               OpSelectionMerge %987 None
+               OpBranchConditional %986 %988 %989
+        %988 = OpLabel
+               OpStore %x_GLF_color %991
+               OpBranch %987
+        %989 = OpLabel
+               OpStore %x_GLF_color %992
+               OpBranch %987
+        %987 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %993
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %997 = OpLabel
+        %998 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %998
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+       %1000 = OpLabel
+       %1001 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %1001
+       %1002 = OpFunctionCall %void %main_1
+       %1004 = OpLoad %v4float %x_GLF_color
+       %1005 = OpCompositeConstruct %main_out %1004
+       %1003 = OpFunctionCall %void %tint_symbol_3 %1005
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..c4e135a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl.expected.wgsl
@@ -0,0 +1,977 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var tree : array<BST, 10>;
+  var x_67 : bool;
+  var x_114 : bool;
+  var x_572 : i32;
+  var x_67_phi : bool;
+  var x_70_phi : i32;
+  var x_116_phi : bool;
+  var x_119_phi : i32;
+  var x_569_phi : i32;
+  var x_572_phi : i32;
+  var x_574_phi : i32;
+  tree[0] = BST(9, -1, -1);
+  switch(0u) {
+    default: {
+      x_67_phi = false;
+      x_70_phi = 0;
+      loop {
+        var x_95 : i32;
+        var x_87 : i32;
+        var x_68 : bool;
+        var x_71 : i32;
+        var x_68_phi : bool;
+        var x_71_phi : i32;
+        x_67 = x_67_phi;
+        let x_70 : i32 = x_70_phi;
+        x_116_phi = x_67;
+        if ((x_70 <= 1)) {
+        } else {
+          break;
+        }
+        let x_76 : i32 = tree[x_70].data;
+        if ((5 <= x_76)) {
+          var x_114_phi : bool;
+          let x_89 : ptr<function, i32> = &(tree[x_70].leftIndex);
+          let x_90 : i32 = *(x_89);
+          if ((x_90 == -1)) {
+            let x_97 : f32 = x_8.injectionSwitch.y;
+            let x_99 : f32 = x_8.injectionSwitch.x;
+            if ((x_97 < x_99)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_89) = 1;
+            tree[1] = BST(5, -1, -1);
+            loop {
+              x_114_phi = x_67;
+              if ((0 < i32(x_97))) {
+              } else {
+                break;
+              }
+              x_114_phi = true;
+              break;
+            }
+            x_114 = x_114_phi;
+            x_116_phi = x_114;
+            if (x_114) {
+              break;
+            }
+          } else {
+            x_95 = *(x_89);
+            x_68_phi = x_67;
+            x_71_phi = x_95;
+            continue;
+          }
+        } else {
+          let x_81 : ptr<function, i32> = &(tree[x_70].rightIndex);
+          let x_82 : i32 = *(x_81);
+          if ((x_82 == -1)) {
+            *(x_81) = 1;
+            tree[1] = BST(5, -1, -1);
+            x_116_phi = true;
+            break;
+          } else {
+            x_87 = *(x_81);
+            x_68_phi = x_67;
+            x_71_phi = x_87;
+            continue;
+          }
+          return;
+        }
+        x_68_phi = x_114;
+        x_71_phi = x_70;
+
+        continuing {
+          x_68 = x_68_phi;
+          x_71 = x_71_phi;
+          x_67_phi = x_68;
+          x_70_phi = x_71;
+        }
+      }
+      let x_116 : bool = x_116_phi;
+      if (x_116) {
+        break;
+      }
+    }
+  }
+  x_119_phi = 0;
+  loop {
+    var x_133 : bool;
+    var x_120 : i32;
+    var x_134_phi : bool;
+    let x_119 : i32 = x_119_phi;
+    let x_125 : f32 = gl_FragCoord.y;
+    let x_126 : bool = (x_125 < 0.0);
+    x_134_phi = x_126;
+    if (!(x_126)) {
+      let x_131 : f32 = x_8.injectionSwitch.y;
+      x_133 = (x_119 != i32(x_131));
+      x_134_phi = x_133;
+    }
+    let x_134 : bool = x_134_phi;
+    if (x_134) {
+    } else {
+      break;
+    }
+    var x_139 : bool;
+    var x_186 : bool;
+    var x_139_phi : bool;
+    var x_142_phi : i32;
+    var x_188_phi : bool;
+    switch(0u) {
+      default: {
+        x_139_phi = false;
+        x_142_phi = 0;
+        loop {
+          var x_167 : i32;
+          var x_159 : i32;
+          var x_140 : bool;
+          var x_143 : i32;
+          var x_140_phi : bool;
+          var x_143_phi : i32;
+          x_139 = x_139_phi;
+          let x_142 : i32 = x_142_phi;
+          x_188_phi = x_139;
+          if ((x_142 <= 2)) {
+          } else {
+            break;
+          }
+          let x_148 : i32 = tree[x_142].data;
+          if ((12 <= x_148)) {
+            var x_186_phi : bool;
+            let x_161 : ptr<function, i32> = &(tree[x_142].leftIndex);
+            let x_162 : i32 = *(x_161);
+            if ((x_162 == -1)) {
+              let x_169 : f32 = x_8.injectionSwitch.y;
+              let x_171 : f32 = x_8.injectionSwitch.x;
+              if ((x_169 < x_171)) {
+                loop {
+                  discard;
+                }
+                return;
+              }
+              *(x_161) = 2;
+              tree[2] = BST(12, -1, -1);
+              loop {
+                x_186_phi = x_139;
+                if ((0 < i32(x_169))) {
+                } else {
+                  break;
+                }
+                x_186_phi = true;
+                break;
+              }
+              x_186 = x_186_phi;
+              x_188_phi = x_186;
+              if (x_186) {
+                break;
+              }
+            } else {
+              x_167 = *(x_161);
+              x_140_phi = x_139;
+              x_143_phi = x_167;
+              continue;
+            }
+          } else {
+            let x_153 : ptr<function, i32> = &(tree[x_142].rightIndex);
+            let x_154 : i32 = *(x_153);
+            if ((x_154 == -1)) {
+              *(x_153) = 2;
+              tree[2] = BST(12, -1, -1);
+              x_188_phi = true;
+              break;
+            } else {
+              x_159 = *(x_153);
+              x_140_phi = x_139;
+              x_143_phi = x_159;
+              continue;
+            }
+            return;
+          }
+          x_140_phi = x_186;
+          x_143_phi = x_142;
+
+          continuing {
+            x_140 = x_140_phi;
+            x_143 = x_143_phi;
+            x_139_phi = x_140;
+            x_142_phi = x_143;
+          }
+        }
+        let x_188 : bool = x_188_phi;
+        if (x_188) {
+          break;
+        }
+      }
+    }
+
+    continuing {
+      x_120 = (x_119 + 1);
+      x_119_phi = x_120;
+    }
+  }
+  var x_193 : bool;
+  var x_240 : bool;
+  var x_193_phi : bool;
+  var x_196_phi : i32;
+  var x_242_phi : bool;
+  switch(0u) {
+    default: {
+      x_193_phi = false;
+      x_196_phi = 0;
+      loop {
+        var x_221 : i32;
+        var x_213 : i32;
+        var x_194 : bool;
+        var x_197 : i32;
+        var x_194_phi : bool;
+        var x_197_phi : i32;
+        x_193 = x_193_phi;
+        let x_196 : i32 = x_196_phi;
+        x_242_phi = x_193;
+        if ((x_196 <= 3)) {
+        } else {
+          break;
+        }
+        let x_202 : i32 = tree[x_196].data;
+        if ((15 <= x_202)) {
+          var x_240_phi : bool;
+          let x_215 : ptr<function, i32> = &(tree[x_196].leftIndex);
+          let x_216 : i32 = *(x_215);
+          if ((x_216 == -1)) {
+            let x_223 : f32 = x_8.injectionSwitch.y;
+            let x_225 : f32 = x_8.injectionSwitch.x;
+            if ((x_223 < x_225)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_215) = 3;
+            tree[3] = BST(15, -1, -1);
+            loop {
+              x_240_phi = x_193;
+              if ((0 < i32(x_223))) {
+              } else {
+                break;
+              }
+              x_240_phi = true;
+              break;
+            }
+            x_240 = x_240_phi;
+            x_242_phi = x_240;
+            if (x_240) {
+              break;
+            }
+          } else {
+            x_221 = *(x_215);
+            x_194_phi = x_193;
+            x_197_phi = x_221;
+            continue;
+          }
+        } else {
+          let x_207 : ptr<function, i32> = &(tree[x_196].rightIndex);
+          let x_208 : i32 = *(x_207);
+          if ((x_208 == -1)) {
+            *(x_207) = 3;
+            tree[3] = BST(15, -1, -1);
+            x_242_phi = true;
+            break;
+          } else {
+            x_213 = *(x_207);
+            x_194_phi = x_193;
+            x_197_phi = x_213;
+            continue;
+          }
+          return;
+        }
+        x_194_phi = x_240;
+        x_197_phi = x_196;
+
+        continuing {
+          x_194 = x_194_phi;
+          x_197 = x_197_phi;
+          x_193_phi = x_194;
+          x_196_phi = x_197;
+        }
+      }
+      let x_242 : bool = x_242_phi;
+      if (x_242) {
+        break;
+      }
+    }
+  }
+  var x_247 : bool;
+  var x_294 : bool;
+  var x_247_phi : bool;
+  var x_250_phi : i32;
+  var x_296_phi : bool;
+  switch(0u) {
+    default: {
+      x_247_phi = false;
+      x_250_phi = 0;
+      loop {
+        var x_275 : i32;
+        var x_267 : i32;
+        var x_248 : bool;
+        var x_251 : i32;
+        var x_248_phi : bool;
+        var x_251_phi : i32;
+        x_247 = x_247_phi;
+        let x_250 : i32 = x_250_phi;
+        x_296_phi = x_247;
+        if ((x_250 <= 4)) {
+        } else {
+          break;
+        }
+        let x_256 : i32 = tree[x_250].data;
+        if ((7 <= x_256)) {
+          var x_294_phi : bool;
+          let x_269 : ptr<function, i32> = &(tree[x_250].leftIndex);
+          let x_270 : i32 = *(x_269);
+          if ((x_270 == -1)) {
+            let x_277 : f32 = x_8.injectionSwitch.y;
+            let x_279 : f32 = x_8.injectionSwitch.x;
+            if ((x_277 < x_279)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_269) = 4;
+            tree[4] = BST(7, -1, -1);
+            loop {
+              x_294_phi = x_247;
+              if ((0 < i32(x_277))) {
+              } else {
+                break;
+              }
+              x_294_phi = true;
+              break;
+            }
+            x_294 = x_294_phi;
+            x_296_phi = x_294;
+            if (x_294) {
+              break;
+            }
+          } else {
+            x_275 = *(x_269);
+            x_248_phi = x_247;
+            x_251_phi = x_275;
+            continue;
+          }
+        } else {
+          let x_261 : ptr<function, i32> = &(tree[x_250].rightIndex);
+          let x_262 : i32 = *(x_261);
+          if ((x_262 == -1)) {
+            *(x_261) = 4;
+            tree[4] = BST(7, -1, -1);
+            x_296_phi = true;
+            break;
+          } else {
+            x_267 = *(x_261);
+            x_248_phi = x_247;
+            x_251_phi = x_267;
+            continue;
+          }
+          return;
+        }
+        x_248_phi = x_294;
+        x_251_phi = x_250;
+
+        continuing {
+          x_248 = x_248_phi;
+          x_251 = x_251_phi;
+          x_247_phi = x_248;
+          x_250_phi = x_251;
+        }
+      }
+      let x_296 : bool = x_296_phi;
+      if (x_296) {
+        break;
+      }
+    }
+  }
+  var x_301 : bool;
+  var x_348 : bool;
+  var x_301_phi : bool;
+  var x_304_phi : i32;
+  var x_350_phi : bool;
+  switch(0u) {
+    default: {
+      x_301_phi = false;
+      x_304_phi = 0;
+      loop {
+        var x_329 : i32;
+        var x_321 : i32;
+        var x_302 : bool;
+        var x_305 : i32;
+        var x_302_phi : bool;
+        var x_305_phi : i32;
+        x_301 = x_301_phi;
+        let x_304 : i32 = x_304_phi;
+        x_350_phi = x_301;
+        if ((x_304 <= 5)) {
+        } else {
+          break;
+        }
+        let x_310 : i32 = tree[x_304].data;
+        if ((8 <= x_310)) {
+          var x_348_phi : bool;
+          let x_323 : ptr<function, i32> = &(tree[x_304].leftIndex);
+          let x_324 : i32 = *(x_323);
+          if ((x_324 == -1)) {
+            let x_331 : f32 = x_8.injectionSwitch.y;
+            let x_333 : f32 = x_8.injectionSwitch.x;
+            if ((x_331 < x_333)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_323) = 5;
+            tree[5] = BST(8, -1, -1);
+            loop {
+              x_348_phi = x_301;
+              if ((0 < i32(x_331))) {
+              } else {
+                break;
+              }
+              x_348_phi = true;
+              break;
+            }
+            x_348 = x_348_phi;
+            x_350_phi = x_348;
+            if (x_348) {
+              break;
+            }
+          } else {
+            x_329 = *(x_323);
+            x_302_phi = x_301;
+            x_305_phi = x_329;
+            continue;
+          }
+        } else {
+          let x_315 : ptr<function, i32> = &(tree[x_304].rightIndex);
+          let x_316 : i32 = *(x_315);
+          if ((x_316 == -1)) {
+            *(x_315) = 5;
+            tree[5] = BST(8, -1, -1);
+            x_350_phi = true;
+            break;
+          } else {
+            x_321 = *(x_315);
+            x_302_phi = x_301;
+            x_305_phi = x_321;
+            continue;
+          }
+          return;
+        }
+        x_302_phi = x_348;
+        x_305_phi = x_304;
+
+        continuing {
+          x_302 = x_302_phi;
+          x_305 = x_305_phi;
+          x_301_phi = x_302;
+          x_304_phi = x_305;
+        }
+      }
+      let x_350 : bool = x_350_phi;
+      if (x_350) {
+        break;
+      }
+    }
+  }
+  var x_355 : bool;
+  var x_402 : bool;
+  var x_355_phi : bool;
+  var x_358_phi : i32;
+  var x_404_phi : bool;
+  switch(0u) {
+    default: {
+      x_355_phi = false;
+      x_358_phi = 0;
+      loop {
+        var x_383 : i32;
+        var x_375 : i32;
+        var x_356 : bool;
+        var x_359 : i32;
+        var x_356_phi : bool;
+        var x_359_phi : i32;
+        x_355 = x_355_phi;
+        let x_358 : i32 = x_358_phi;
+        x_404_phi = x_355;
+        if ((x_358 <= 6)) {
+        } else {
+          break;
+        }
+        let x_364 : i32 = tree[x_358].data;
+        if ((2 <= x_364)) {
+          var x_402_phi : bool;
+          let x_377 : ptr<function, i32> = &(tree[x_358].leftIndex);
+          let x_378 : i32 = *(x_377);
+          if ((x_378 == -1)) {
+            let x_385 : f32 = x_8.injectionSwitch.y;
+            let x_387 : f32 = x_8.injectionSwitch.x;
+            if ((x_385 < x_387)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_377) = 6;
+            tree[6] = BST(2, -1, -1);
+            loop {
+              x_402_phi = x_355;
+              if ((0 < i32(x_385))) {
+              } else {
+                break;
+              }
+              x_402_phi = true;
+              break;
+            }
+            x_402 = x_402_phi;
+            x_404_phi = x_402;
+            if (x_402) {
+              break;
+            }
+          } else {
+            x_383 = *(x_377);
+            x_356_phi = x_355;
+            x_359_phi = x_383;
+            continue;
+          }
+        } else {
+          let x_369 : ptr<function, i32> = &(tree[x_358].rightIndex);
+          let x_370 : i32 = *(x_369);
+          if ((x_370 == -1)) {
+            *(x_369) = 6;
+            tree[6] = BST(2, -1, -1);
+            x_404_phi = true;
+            break;
+          } else {
+            x_375 = *(x_369);
+            x_356_phi = x_355;
+            x_359_phi = x_375;
+            continue;
+          }
+          return;
+        }
+        x_356_phi = x_402;
+        x_359_phi = x_358;
+
+        continuing {
+          x_356 = x_356_phi;
+          x_359 = x_359_phi;
+          x_355_phi = x_356;
+          x_358_phi = x_359;
+        }
+      }
+      let x_404 : bool = x_404_phi;
+      if (x_404) {
+        break;
+      }
+    }
+  }
+  var x_409 : bool;
+  var x_456 : bool;
+  var x_409_phi : bool;
+  var x_412_phi : i32;
+  var x_458_phi : bool;
+  switch(0u) {
+    default: {
+      x_409_phi = false;
+      x_412_phi = 0;
+      loop {
+        var x_437 : i32;
+        var x_429 : i32;
+        var x_410 : bool;
+        var x_413 : i32;
+        var x_410_phi : bool;
+        var x_413_phi : i32;
+        x_409 = x_409_phi;
+        let x_412 : i32 = x_412_phi;
+        x_458_phi = x_409;
+        if ((x_412 <= 7)) {
+        } else {
+          break;
+        }
+        let x_418 : i32 = tree[x_412].data;
+        if ((6 <= x_418)) {
+          var x_456_phi : bool;
+          let x_431 : ptr<function, i32> = &(tree[x_412].leftIndex);
+          let x_432 : i32 = *(x_431);
+          if ((x_432 == -1)) {
+            let x_439 : f32 = x_8.injectionSwitch.y;
+            let x_441 : f32 = x_8.injectionSwitch.x;
+            if ((x_439 < x_441)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_431) = 7;
+            tree[7] = BST(6, -1, -1);
+            loop {
+              x_456_phi = x_409;
+              if ((0 < i32(x_439))) {
+              } else {
+                break;
+              }
+              x_456_phi = true;
+              break;
+            }
+            x_456 = x_456_phi;
+            x_458_phi = x_456;
+            if (x_456) {
+              break;
+            }
+          } else {
+            x_437 = *(x_431);
+            x_410_phi = x_409;
+            x_413_phi = x_437;
+            continue;
+          }
+        } else {
+          let x_423 : ptr<function, i32> = &(tree[x_412].rightIndex);
+          let x_424 : i32 = *(x_423);
+          if ((x_424 == -1)) {
+            *(x_423) = 7;
+            tree[7] = BST(6, -1, -1);
+            x_458_phi = true;
+            break;
+          } else {
+            x_429 = *(x_423);
+            x_410_phi = x_409;
+            x_413_phi = x_429;
+            continue;
+          }
+          return;
+        }
+        x_410_phi = x_456;
+        x_413_phi = x_412;
+
+        continuing {
+          x_410 = x_410_phi;
+          x_413 = x_413_phi;
+          x_409_phi = x_410;
+          x_412_phi = x_413;
+        }
+      }
+      let x_458 : bool = x_458_phi;
+      if (x_458) {
+        break;
+      }
+    }
+  }
+  var x_463 : bool;
+  var x_510 : bool;
+  var x_463_phi : bool;
+  var x_466_phi : i32;
+  var x_512_phi : bool;
+  switch(0u) {
+    default: {
+      x_463_phi = false;
+      x_466_phi = 0;
+      loop {
+        var x_491 : i32;
+        var x_483 : i32;
+        var x_464 : bool;
+        var x_467 : i32;
+        var x_464_phi : bool;
+        var x_467_phi : i32;
+        x_463 = x_463_phi;
+        let x_466 : i32 = x_466_phi;
+        x_512_phi = x_463;
+        if ((x_466 <= 8)) {
+        } else {
+          break;
+        }
+        let x_472 : i32 = tree[x_466].data;
+        if ((17 <= x_472)) {
+          var x_510_phi : bool;
+          let x_485 : ptr<function, i32> = &(tree[x_466].leftIndex);
+          let x_486 : i32 = *(x_485);
+          if ((x_486 == -1)) {
+            let x_493 : f32 = x_8.injectionSwitch.y;
+            let x_495 : f32 = x_8.injectionSwitch.x;
+            if ((x_493 < x_495)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_485) = 8;
+            tree[8] = BST(17, -1, -1);
+            loop {
+              x_510_phi = x_463;
+              if ((0 < i32(x_493))) {
+              } else {
+                break;
+              }
+              x_510_phi = true;
+              break;
+            }
+            x_510 = x_510_phi;
+            x_512_phi = x_510;
+            if (x_510) {
+              break;
+            }
+          } else {
+            x_491 = *(x_485);
+            x_464_phi = x_463;
+            x_467_phi = x_491;
+            continue;
+          }
+        } else {
+          let x_477 : ptr<function, i32> = &(tree[x_466].rightIndex);
+          let x_478 : i32 = *(x_477);
+          if ((x_478 == -1)) {
+            *(x_477) = 8;
+            tree[8] = BST(17, -1, -1);
+            x_512_phi = true;
+            break;
+          } else {
+            x_483 = *(x_477);
+            x_464_phi = x_463;
+            x_467_phi = x_483;
+            continue;
+          }
+          return;
+        }
+        x_464_phi = x_510;
+        x_467_phi = x_466;
+
+        continuing {
+          x_464 = x_464_phi;
+          x_467 = x_467_phi;
+          x_463_phi = x_464;
+          x_466_phi = x_467;
+        }
+      }
+      let x_512 : bool = x_512_phi;
+      if (x_512) {
+        break;
+      }
+    }
+  }
+  var x_517 : bool;
+  var x_564 : bool;
+  var x_517_phi : bool;
+  var x_520_phi : i32;
+  var x_566_phi : bool;
+  switch(0u) {
+    default: {
+      x_517_phi = false;
+      x_520_phi = 0;
+      loop {
+        var x_545 : i32;
+        var x_537 : i32;
+        var x_518 : bool;
+        var x_521 : i32;
+        var x_518_phi : bool;
+        var x_521_phi : i32;
+        x_517 = x_517_phi;
+        let x_520 : i32 = x_520_phi;
+        x_566_phi = x_517;
+        if ((x_520 <= 9)) {
+        } else {
+          break;
+        }
+        let x_526 : i32 = tree[x_520].data;
+        if ((13 <= x_526)) {
+          var x_564_phi : bool;
+          let x_539 : ptr<function, i32> = &(tree[x_520].leftIndex);
+          let x_540 : i32 = *(x_539);
+          if ((x_540 == -1)) {
+            let x_547 : f32 = x_8.injectionSwitch.y;
+            let x_549 : f32 = x_8.injectionSwitch.x;
+            if ((x_547 < x_549)) {
+              loop {
+                discard;
+              }
+              return;
+            }
+            *(x_539) = 9;
+            tree[9] = BST(13, -1, -1);
+            loop {
+              x_564_phi = x_517;
+              if ((0 < i32(x_547))) {
+              } else {
+                break;
+              }
+              x_564_phi = true;
+              break;
+            }
+            x_564 = x_564_phi;
+            x_566_phi = x_564;
+            if (x_564) {
+              break;
+            }
+          } else {
+            x_545 = *(x_539);
+            x_518_phi = x_517;
+            x_521_phi = x_545;
+            continue;
+          }
+        } else {
+          let x_531 : ptr<function, i32> = &(tree[x_520].rightIndex);
+          let x_532 : i32 = *(x_531);
+          if ((x_532 == -1)) {
+            *(x_531) = 9;
+            tree[9] = BST(13, -1, -1);
+            x_566_phi = true;
+            break;
+          } else {
+            x_537 = *(x_531);
+            x_518_phi = x_517;
+            x_521_phi = x_537;
+            continue;
+          }
+          return;
+        }
+        x_518_phi = x_564;
+        x_521_phi = x_520;
+
+        continuing {
+          x_518 = x_518_phi;
+          x_521 = x_521_phi;
+          x_517_phi = x_518;
+          x_520_phi = x_521;
+        }
+      }
+      let x_566 : bool = x_566_phi;
+      if (x_566) {
+        break;
+      }
+    }
+  }
+  x_569_phi = 0;
+  x_572_phi = 0;
+  x_574_phi = 0;
+  loop {
+    var x_597 : i32;
+    var x_607 : i32;
+    var x_612 : i32;
+    var x_575 : i32;
+    var x_570_phi : i32;
+    var x_573_phi : i32;
+    let x_569 : i32 = x_569_phi;
+    x_572 = x_572_phi;
+    let x_574 : i32 = x_574_phi;
+    if ((x_574 < 20)) {
+    } else {
+      break;
+    }
+    var x_582_phi : i32;
+    var x_597_phi : i32;
+    var x_598_phi : bool;
+    switch(0u) {
+      default: {
+        x_582_phi = 0;
+        loop {
+          let x_582 : i32 = x_582_phi;
+          x_597_phi = x_569;
+          x_598_phi = false;
+          if ((x_582 != -1)) {
+          } else {
+            break;
+          }
+          let x_589 : BST = tree[x_582];
+          let x_590 : i32 = x_589.data;
+          let x_591 : i32 = x_589.leftIndex;
+          let x_592 : i32 = x_589.rightIndex;
+          if ((x_590 == x_574)) {
+            x_597_phi = x_574;
+            x_598_phi = true;
+            break;
+          }
+
+          continuing {
+            x_582_phi = select(x_591, x_592, (x_574 > x_590));
+          }
+        }
+        x_597 = x_597_phi;
+        let x_598 : bool = x_598_phi;
+        x_570_phi = x_597;
+        if (x_598) {
+          break;
+        }
+        x_570_phi = -1;
+      }
+    }
+    var x_570 : i32;
+    var x_606 : i32;
+    var x_611 : i32;
+    var x_607_phi : i32;
+    var x_612_phi : i32;
+    x_570 = x_570_phi;
+    switch(x_574) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        x_607_phi = x_572;
+        if ((x_570 == bitcast<i32>(x_574))) {
+          x_606 = bitcast<i32>((x_572 + bitcast<i32>(1)));
+          x_607_phi = x_606;
+        }
+        x_607 = x_607_phi;
+        x_573_phi = x_607;
+      }
+      default: {
+        x_612_phi = x_572;
+        if ((x_570 == bitcast<i32>(-1))) {
+          x_611 = bitcast<i32>((x_572 + bitcast<i32>(1)));
+          x_612_phi = x_611;
+        }
+        x_612 = x_612_phi;
+        x_573_phi = x_612;
+      }
+    }
+    let x_573 : i32 = x_573_phi;
+
+    continuing {
+      x_575 = (x_574 + 1);
+      x_569_phi = x_570;
+      x_572_phi = x_573;
+      x_574_phi = x_575;
+    }
+  }
+  if ((x_572 == bitcast<i32>(20))) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm
new file mode 100644
index 0000000..bcde2cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm
@@ -0,0 +1,420 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode(struct-BST-i1-i1-i11;i1;"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert(i1;i1;"
+               OpName %treeIndex "treeIndex"
+               OpName %data_0 "data"
+               OpName %search_i1_ "search(i1;"
+               OpName %target "target"
+               OpName %baseIndex "baseIndex"
+               OpName %tree_0 "tree"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %treeIndex_0 "treeIndex"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %param_9 "param"
+               OpName %param_10 "param"
+               OpName %param_11 "param"
+               OpName %param_12 "param"
+               OpName %param_13 "param"
+               OpName %param_14 "param"
+               OpName %param_15 "param"
+               OpName %param_16 "param"
+               OpName %param_17 "param"
+               OpName %param_18 "param"
+               OpName %param_19 "param"
+               OpName %param_20 "param"
+               OpName %param_21 "param"
+               OpName %param_22 "param"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_23 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %47 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %51 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+         %52 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %53 = OpTypeFunction %int %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+     %tree_0 = OpVariable %_ptr_Private__arr_BST_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %80 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+       %main = OpFunction %void None %47
+         %82 = OpLabel
+%treeIndex_0 = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_BST Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+    %param_5 = OpVariable %_ptr_Function_int Function
+    %param_6 = OpVariable %_ptr_Function_int Function
+    %param_7 = OpVariable %_ptr_Function_int Function
+    %param_8 = OpVariable %_ptr_Function_int Function
+    %param_9 = OpVariable %_ptr_Function_int Function
+   %param_10 = OpVariable %_ptr_Function_int Function
+   %param_11 = OpVariable %_ptr_Function_int Function
+   %param_12 = OpVariable %_ptr_Function_int Function
+   %param_13 = OpVariable %_ptr_Function_int Function
+   %param_14 = OpVariable %_ptr_Function_int Function
+   %param_15 = OpVariable %_ptr_Function_int Function
+   %param_16 = OpVariable %_ptr_Function_int Function
+   %param_17 = OpVariable %_ptr_Function_int Function
+   %param_18 = OpVariable %_ptr_Function_int Function
+   %param_19 = OpVariable %_ptr_Function_int Function
+   %param_20 = OpVariable %_ptr_Function_int Function
+   %param_21 = OpVariable %_ptr_Function_int Function
+   %param_22 = OpVariable %_ptr_Function_int Function
+      %count = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+     %result = OpVariable %_ptr_Function_int Function
+   %param_23 = OpVariable %_ptr_Function_int Function
+               OpStore %treeIndex_0 %int_0
+         %83 = OpAccessChain %_ptr_Private_BST %tree_0 %int_0
+         %84 = OpLoad %BST %83
+               OpStore %param_3 %84
+               OpStore %param_4 %int_9
+         %85 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_3 %param_4
+         %86 = OpLoad %BST %param_3
+         %87 = OpAccessChain %_ptr_Private_BST %tree_0 %int_0
+               OpStore %87 %86
+         %88 = OpLoad %int %treeIndex_0
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %treeIndex_0 %89
+         %90 = OpLoad %int %treeIndex_0
+               OpStore %param_5 %90
+               OpStore %param_6 %int_5
+         %91 = OpFunctionCall %void %insert_i1_i1_ %param_5 %param_6
+         %92 = OpLoad %int %treeIndex_0
+         %93 = OpIAdd %int %92 %int_1
+               OpStore %treeIndex_0 %93
+         %94 = OpLoad %int %treeIndex_0
+               OpStore %param_7 %94
+               OpStore %param_8 %int_12
+         %95 = OpFunctionCall %void %insert_i1_i1_ %param_7 %param_8
+         %96 = OpLoad %int %treeIndex_0
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %treeIndex_0 %97
+         %98 = OpLoad %int %treeIndex_0
+               OpStore %param_9 %98
+               OpStore %param_10 %int_15
+         %99 = OpFunctionCall %void %insert_i1_i1_ %param_9 %param_10
+        %100 = OpLoad %int %treeIndex_0
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %treeIndex_0 %101
+        %102 = OpLoad %int %treeIndex_0
+               OpStore %param_11 %102
+               OpStore %param_12 %int_7
+        %103 = OpFunctionCall %void %insert_i1_i1_ %param_11 %param_12
+        %104 = OpLoad %int %treeIndex_0
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %treeIndex_0 %105
+        %106 = OpLoad %int %treeIndex_0
+               OpStore %param_13 %106
+               OpStore %param_14 %int_8
+        %107 = OpFunctionCall %void %insert_i1_i1_ %param_13 %param_14
+        %108 = OpLoad %int %treeIndex_0
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %treeIndex_0 %109
+        %110 = OpLoad %int %treeIndex_0
+               OpStore %param_15 %110
+               OpStore %param_16 %int_2
+        %111 = OpFunctionCall %void %insert_i1_i1_ %param_15 %param_16
+        %112 = OpLoad %int %treeIndex_0
+        %113 = OpIAdd %int %112 %int_1
+               OpStore %treeIndex_0 %113
+        %114 = OpLoad %int %treeIndex_0
+               OpStore %param_17 %114
+               OpStore %param_18 %int_6
+        %115 = OpFunctionCall %void %insert_i1_i1_ %param_17 %param_18
+        %116 = OpLoad %int %treeIndex_0
+        %117 = OpIAdd %int %116 %int_1
+               OpStore %treeIndex_0 %117
+        %118 = OpLoad %int %treeIndex_0
+               OpStore %param_19 %118
+               OpStore %param_20 %int_17
+        %119 = OpFunctionCall %void %insert_i1_i1_ %param_19 %param_20
+        %120 = OpLoad %int %treeIndex_0
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %treeIndex_0 %121
+        %122 = OpLoad %int %treeIndex_0
+               OpStore %param_21 %122
+               OpStore %param_22 %int_13
+        %123 = OpFunctionCall %void %insert_i1_i1_ %param_21 %param_22
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %124
+        %124 = OpLabel
+               OpLoopMerge %125 %126 None
+               OpBranch %127
+        %127 = OpLabel
+        %128 = OpLoad %int %i
+        %129 = OpSLessThan %bool %128 %int_20
+               OpBranchConditional %129 %130 %125
+        %130 = OpLabel
+        %131 = OpLoad %int %i
+               OpStore %param_23 %131
+        %132 = OpFunctionCall %int %search_i1_ %param_23
+               OpStore %result %132
+        %133 = OpLoad %int %i
+               OpSelectionMerge %134 None
+               OpSwitch %133 %135 9 %136 5 %136 12 %136 15 %136 7 %136 8 %136 2 %136 6 %136 17 %136 13 %136
+        %135 = OpLabel
+        %137 = OpLoad %int %result
+        %138 = OpIEqual %bool %137 %int_n1
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %count
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %count %142
+               OpBranch %139
+        %139 = OpLabel
+               OpBranch %134
+        %136 = OpLabel
+        %143 = OpLoad %int %result
+        %144 = OpLoad %int %i
+        %145 = OpIEqual %bool %143 %144
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpLoad %int %count
+        %149 = OpIAdd %int %148 %int_1
+               OpStore %count %149
+               OpBranch %146
+        %146 = OpLabel
+               OpBranch %134
+        %134 = OpLabel
+               OpBranch %126
+        %126 = OpLabel
+        %150 = OpLoad %int %i
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %i %151
+               OpBranch %124
+        %125 = OpLabel
+        %152 = OpLoad %int %count
+        %153 = OpIEqual %bool %152 %int_20
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpStore %_GLF_color %80
+               OpBranch %154
+        %156 = OpLabel
+               OpStore %_GLF_color %81
+               OpBranch %154
+        %154 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %51
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+        %157 = OpLabel
+        %158 = OpLoad %int %data
+        %159 = OpAccessChain %_ptr_Function_int %tree %int_0
+               OpStore %159 %158
+        %160 = OpAccessChain %_ptr_Function_int %tree %int_1
+               OpStore %160 %int_n1
+        %161 = OpAccessChain %_ptr_Function_int %tree %int_2
+               OpStore %161 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %52
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_0 = OpFunctionParameter %_ptr_Function_int
+        %162 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_BST Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_BST Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+               OpStore %baseIndex %int_0
+               OpBranch %163
+        %163 = OpLabel
+               OpLoopMerge %164 %165 None
+               OpBranch %166
+        %166 = OpLabel
+        %167 = OpLoad %int %baseIndex
+        %168 = OpLoad %int %treeIndex
+        %169 = OpSLessThanEqual %bool %167 %168
+               OpBranchConditional %169 %170 %164
+        %170 = OpLabel
+        %171 = OpLoad %int %data_0
+        %172 = OpLoad %int %baseIndex
+        %173 = OpAccessChain %_ptr_Private_int %tree_0 %172 %int_0
+        %174 = OpLoad %int %173
+        %175 = OpSLessThanEqual %bool %171 %174
+               OpSelectionMerge %176 None
+               OpBranchConditional %175 %177 %178
+        %177 = OpLabel
+        %179 = OpLoad %int %baseIndex
+        %180 = OpAccessChain %_ptr_Private_int %tree_0 %179 %int_1
+        %181 = OpLoad %int %180
+        %182 = OpIEqual %bool %181 %int_n1
+               OpSelectionMerge %183 None
+               OpBranchConditional %182 %184 %185
+        %184 = OpLabel
+        %186 = OpLoad %int %baseIndex
+        %187 = OpLoad %int %treeIndex
+        %188 = OpAccessChain %_ptr_Private_int %tree_0 %186 %int_1
+               OpStore %188 %187
+        %189 = OpLoad %int %treeIndex
+        %190 = OpAccessChain %_ptr_Private_BST %tree_0 %189
+        %191 = OpLoad %BST %190
+               OpStore %param %191
+        %192 = OpLoad %int %data_0
+               OpStore %param_0 %192
+        %193 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_0
+        %194 = OpLoad %BST %param
+        %195 = OpAccessChain %_ptr_Private_BST %tree_0 %189
+               OpStore %195 %194
+               OpReturn
+        %185 = OpLabel
+        %196 = OpLoad %int %baseIndex
+        %197 = OpAccessChain %_ptr_Private_int %tree_0 %196 %int_1
+        %198 = OpLoad %int %197
+               OpStore %baseIndex %198
+               OpBranch %165
+        %183 = OpLabel
+               OpUnreachable
+        %178 = OpLabel
+        %199 = OpLoad %int %baseIndex
+        %200 = OpAccessChain %_ptr_Private_int %tree_0 %199 %int_2
+        %201 = OpLoad %int %200
+        %202 = OpIEqual %bool %201 %int_n1
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %205
+        %204 = OpLabel
+        %206 = OpLoad %int %baseIndex
+        %207 = OpLoad %int %treeIndex
+        %208 = OpAccessChain %_ptr_Private_int %tree_0 %206 %int_2
+               OpStore %208 %207
+        %209 = OpLoad %int %treeIndex
+        %210 = OpAccessChain %_ptr_Private_BST %tree_0 %209
+        %211 = OpLoad %BST %210
+               OpStore %param_1 %211
+        %212 = OpLoad %int %data_0
+               OpStore %param_2 %212
+        %213 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_1 %param_2
+        %214 = OpLoad %BST %param_1
+        %215 = OpAccessChain %_ptr_Private_BST %tree_0 %209
+               OpStore %215 %214
+               OpReturn
+        %205 = OpLabel
+        %216 = OpLoad %int %baseIndex
+        %217 = OpAccessChain %_ptr_Private_int %tree_0 %216 %int_2
+        %218 = OpLoad %int %217
+               OpStore %baseIndex %218
+               OpBranch %165
+        %203 = OpLabel
+               OpUnreachable
+        %176 = OpLabel
+               OpUnreachable
+        %165 = OpLabel
+               OpBranch %163
+        %164 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %53
+     %target = OpFunctionParameter %_ptr_Function_int
+        %219 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function
+%currentNode = OpVariable %_ptr_Function_BST Function
+        %220 = OpVariable %_ptr_Function_int Function
+               OpStore %index %int_0
+               OpBranch %221
+        %221 = OpLabel
+               OpLoopMerge %222 %223 None
+               OpBranch %224
+        %224 = OpLabel
+        %225 = OpLoad %int %index
+        %226 = OpINotEqual %bool %225 %int_n1
+               OpBranchConditional %226 %227 %222
+        %227 = OpLabel
+        %228 = OpLoad %int %index
+        %229 = OpAccessChain %_ptr_Private_BST %tree_0 %228
+        %230 = OpLoad %BST %229
+               OpStore %currentNode %230
+        %231 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %232 = OpLoad %int %231
+        %233 = OpLoad %int %target
+        %234 = OpIEqual %bool %232 %233
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %237 = OpLoad %int %target
+               OpReturnValue %237
+        %235 = OpLabel
+        %238 = OpLoad %int %target
+        %239 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %240 = OpLoad %int %239
+        %241 = OpSGreaterThan %bool %238 %240
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %244
+        %243 = OpLabel
+        %245 = OpAccessChain %_ptr_Function_int %currentNode %int_2
+        %246 = OpLoad %int %245
+               OpStore %220 %246
+               OpBranch %242
+        %244 = OpLabel
+        %247 = OpAccessChain %_ptr_Function_int %currentNode %int_1
+        %248 = OpLoad %int %247
+               OpStore %220 %248
+               OpBranch %242
+        %242 = OpLabel
+        %249 = OpLoad %int %220
+               OpStore %index %249
+               OpBranch %223
+        %223 = OpLabel
+               OpBranch %221
+        %222 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..bc5fdac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.hlsl
@@ -0,0 +1,232 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static BST tree_1[10] = (BST[10])0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST tree, inout int data) {
+  const int x_158 = data;
+  tree.data = x_158;
+  tree.leftIndex = -1;
+  tree.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_167 = baseIndex;
+    const int x_168 = treeIndex;
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    const int x_171 = data_1;
+    const int x_174 = tree_1[baseIndex].data;
+    if ((x_171 <= x_174)) {
+      const int x_181 = tree_1[baseIndex].leftIndex;
+      if ((x_181 == -1)) {
+        const int x_186 = baseIndex;
+        const int x_187 = treeIndex;
+        tree_1[x_186].leftIndex = x_187;
+        const int x_189 = treeIndex;
+        const BST x_191 = tree_1[x_189];
+        param = x_191;
+        const int x_192 = data_1;
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree_1[x_189] = param;
+        return;
+      } else {
+        const int x_198 = tree_1[baseIndex].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      const int x_201 = tree_1[baseIndex].rightIndex;
+      if ((x_201 == -1)) {
+        const int x_206 = baseIndex;
+        const int x_207 = treeIndex;
+        tree_1[x_206].rightIndex = x_207;
+        const int x_209 = treeIndex;
+        const BST x_211 = tree_1[x_209];
+        param_2 = x_211;
+        const int x_212 = data_1;
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree_1[x_209] = param_2;
+        return;
+      } else {
+        const int x_218 = tree_1[baseIndex].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_220 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_230 = tree_1[index];
+    currentNode = x_230;
+    const int x_232 = currentNode.data;
+    const int x_233 = target;
+    if ((x_232 == x_233)) {
+      const int x_237 = target;
+      return x_237;
+    }
+    const int x_238 = target;
+    const int x_240 = currentNode.data;
+    if ((x_238 > x_240)) {
+      const int x_246 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      const int x_248 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    index = x_220;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  const BST x_84 = tree_1[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree_1[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  count = 0;
+  i = 0;
+  {
+    for(; (i < 20); i = (i + 1)) {
+      param_24 = i;
+      const int x_132 = search_i1_(param_24);
+      result = x_132;
+      switch(i) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          if ((result == i)) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.msl
new file mode 100644
index 0000000..f509724
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.msl
@@ -0,0 +1,281 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const tree, thread int* const data) {
+  int const x_158 = *(data);
+  (*(tree)).data = x_158;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper* const tint_symbol_4) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_167 = baseIndex;
+    int const x_168 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    int const x_171 = *(data_1);
+    int const x_172 = baseIndex;
+    int const x_174 = (*(tint_symbol_4)).arr[x_172].data;
+    if ((x_171 <= x_174)) {
+      int const x_179 = baseIndex;
+      int const x_181 = (*(tint_symbol_4)).arr[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        int const x_186 = baseIndex;
+        int const x_187 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_186].leftIndex = x_187;
+        int const x_189 = *(treeIndex);
+        BST const x_191 = (*(tint_symbol_4)).arr[x_189];
+        param = x_191;
+        int const x_192 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_194 = param;
+        (*(tint_symbol_4)).arr[x_189] = x_194;
+        return;
+      } else {
+        int const x_196 = baseIndex;
+        int const x_198 = (*(tint_symbol_4)).arr[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      int const x_199 = baseIndex;
+      int const x_201 = (*(tint_symbol_4)).arr[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        int const x_206 = baseIndex;
+        int const x_207 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_206].rightIndex = x_207;
+        int const x_209 = *(treeIndex);
+        BST const x_211 = (*(tint_symbol_4)).arr[x_209];
+        param_2 = x_211;
+        int const x_212 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_214 = param_2;
+        (*(tint_symbol_4)).arr[x_209] = x_214;
+        return;
+      } else {
+        int const x_216 = baseIndex;
+        int const x_218 = (*(tint_symbol_4)).arr[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper* const tint_symbol_5) {
+  int index = 0;
+  BST currentNode = {};
+  int x_220 = 0;
+  index = 0;
+  while (true) {
+    int const x_225 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    int const x_228 = index;
+    BST const x_230 = (*(tint_symbol_5)).arr[x_228];
+    currentNode = x_230;
+    int const x_232 = currentNode.data;
+    int const x_233 = *(target);
+    if ((x_232 == x_233)) {
+      int const x_237 = *(target);
+      return x_237;
+    }
+    int const x_238 = *(target);
+    int const x_240 = currentNode.data;
+    if ((x_238 > x_240)) {
+      int const x_246 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      int const x_248 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    int const x_249 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+void main_1(thread tint_array_wrapper* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  BST const x_84 = (*(tint_symbol_6)).arr[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_86 = param_4;
+  (*(tint_symbol_6)).arr[0] = x_86;
+  int const x_88 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  int const x_90 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7), tint_symbol_6);
+  int const x_92 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  int const x_94 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9), tint_symbol_6);
+  int const x_96 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  int const x_98 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11), tint_symbol_6);
+  int const x_100 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  int const x_102 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13), tint_symbol_6);
+  int const x_104 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  int const x_106 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15), tint_symbol_6);
+  int const x_108 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  int const x_110 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17), tint_symbol_6);
+  int const x_112 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  int const x_114 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19), tint_symbol_6);
+  int const x_116 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  int const x_118 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21), tint_symbol_6);
+  int const x_120 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  int const x_122 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23), tint_symbol_6);
+  count = 0;
+  i = 0;
+  while (true) {
+    int const x_128 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    int const x_131 = i;
+    param_24 = x_131;
+    int const x_132 = search_i1_(&(param_24), tint_symbol_6);
+    result = x_132;
+    int const x_133 = i;
+    switch(x_133) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_143 = result;
+        int const x_144 = i;
+        if ((x_143 == x_144)) {
+          int const x_148 = count;
+          count = (x_148 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_137 = result;
+        if ((x_137 == -1)) {
+          int const x_141 = count;
+          count = (x_141 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_150 = i;
+      i = (x_150 + 1);
+    }
+  }
+  int const x_152 = count;
+  if ((x_152 == 20)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread tint_array_wrapper tint_symbol_8 = {};
+  thread float4 tint_symbol_9 = 0.0f;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..3d85c3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.spvasm
@@ -0,0 +1,476 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 316
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree_1 "tree_1"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_220 "x_220"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_24 "param_24"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+     %tree_1 = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %16 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %36 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %42 = OpConstantNull %int
+         %44 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %122 = OpTypeFunction %int %_ptr_Function_int
+        %163 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %302 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %303 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %304 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %16
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %23 = OpLabel
+         %25 = OpLoad %int %data
+         %28 = OpAccessChain %_ptr_Function_int %tree %uint_0
+               OpStore %28 %25
+         %31 = OpAccessChain %_ptr_Function_int %tree %uint_1
+               OpStore %31 %int_n1
+         %35 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %35 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %36
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %40 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %42
+      %param = OpVariable %_ptr_Function_BST Function %44
+    %param_1 = OpVariable %_ptr_Function_int Function %42
+    %param_2 = OpVariable %_ptr_Function_BST Function %44
+    %param_3 = OpVariable %_ptr_Function_int Function %42
+               OpStore %baseIndex %int_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %baseIndex
+         %55 = OpLoad %int %treeIndex
+         %56 = OpSLessThanEqual %bool %53 %55
+               OpSelectionMerge %58 None
+               OpBranchConditional %56 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %50
+         %58 = OpLabel
+         %62 = OpLoad %int %data_1
+         %63 = OpLoad %int %baseIndex
+         %65 = OpAccessChain %_ptr_Private_int %tree_1 %63 %uint_0
+         %66 = OpLoad %int %65
+         %67 = OpSLessThanEqual %bool %62 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpLoad %int %baseIndex
+         %72 = OpAccessChain %_ptr_Private_int %tree_1 %71 %uint_1
+         %73 = OpLoad %int %72
+         %74 = OpIEqual %bool %73 %int_n1
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpLoad %int %baseIndex
+         %80 = OpLoad %int %treeIndex
+         %81 = OpAccessChain %_ptr_Private_int %tree_1 %78 %uint_1
+               OpStore %81 %80
+         %83 = OpLoad %int %treeIndex
+         %85 = OpAccessChain %_ptr_Private_BST %tree_1 %83
+         %86 = OpLoad %BST %85
+               OpStore %param %86
+         %88 = OpLoad %int %data_1
+               OpStore %param_1 %88
+         %89 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+         %92 = OpLoad %BST %param
+         %93 = OpAccessChain %_ptr_Private_BST %tree_1 %83
+               OpStore %93 %92
+               OpReturn
+         %77 = OpLabel
+         %94 = OpLoad %int %baseIndex
+         %95 = OpAccessChain %_ptr_Private_int %tree_1 %94 %uint_1
+         %96 = OpLoad %int %95
+               OpStore %baseIndex %96
+               OpBranch %51
+         %75 = OpLabel
+               OpReturn
+         %70 = OpLabel
+         %97 = OpLoad %int %baseIndex
+         %98 = OpAccessChain %_ptr_Private_int %tree_1 %97 %uint_2
+         %99 = OpLoad %int %98
+        %100 = OpIEqual %bool %99 %int_n1
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %103
+        %102 = OpLabel
+        %104 = OpLoad %int %baseIndex
+        %106 = OpLoad %int %treeIndex
+        %107 = OpAccessChain %_ptr_Private_int %tree_1 %104 %uint_2
+               OpStore %107 %106
+        %109 = OpLoad %int %treeIndex
+        %110 = OpAccessChain %_ptr_Private_BST %tree_1 %109
+        %111 = OpLoad %BST %110
+               OpStore %param_2 %111
+        %113 = OpLoad %int %data_1
+               OpStore %param_3 %113
+        %114 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %117 = OpLoad %BST %param_2
+        %118 = OpAccessChain %_ptr_Private_BST %tree_1 %109
+               OpStore %118 %117
+               OpReturn
+        %103 = OpLabel
+        %119 = OpLoad %int %baseIndex
+        %120 = OpAccessChain %_ptr_Private_int %tree_1 %119 %uint_2
+        %121 = OpLoad %int %120
+               OpStore %baseIndex %121
+               OpBranch %51
+        %101 = OpLabel
+               OpReturn
+         %68 = OpLabel
+               OpReturn
+         %51 = OpLabel
+               OpBranch %49
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %122
+     %target = OpFunctionParameter %_ptr_Function_int
+        %125 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %42
+%currentNode = OpVariable %_ptr_Function_BST Function %44
+      %x_220 = OpVariable %_ptr_Function_int Function %42
+               OpStore %index %int_0
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %index
+        %134 = OpINotEqual %bool %133 %int_n1
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %130
+        %135 = OpLabel
+        %138 = OpLoad %int %index
+        %139 = OpAccessChain %_ptr_Private_BST %tree_1 %138
+        %140 = OpLoad %BST %139
+               OpStore %currentNode %140
+        %141 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %142 = OpLoad %int %141
+        %144 = OpLoad %int %target
+        %145 = OpIEqual %bool %142 %144
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %149 = OpLoad %int %target
+               OpReturnValue %149
+        %146 = OpLabel
+        %151 = OpLoad %int %target
+        %152 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %153 = OpLoad %int %152
+        %154 = OpSGreaterThan %bool %151 %153
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+        %158 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %159 = OpLoad %int %158
+               OpStore %x_220 %159
+               OpBranch %155
+        %157 = OpLabel
+        %160 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %161 = OpLoad %int %160
+               OpStore %x_220 %161
+               OpBranch %155
+        %155 = OpLabel
+        %162 = OpLoad %int %x_220
+               OpStore %index %162
+               OpBranch %131
+        %131 = OpLabel
+               OpBranch %129
+        %130 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %163
+        %165 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %42
+    %param_4 = OpVariable %_ptr_Function_BST Function %44
+    %param_5 = OpVariable %_ptr_Function_int Function %42
+    %param_6 = OpVariable %_ptr_Function_int Function %42
+    %param_7 = OpVariable %_ptr_Function_int Function %42
+    %param_8 = OpVariable %_ptr_Function_int Function %42
+    %param_9 = OpVariable %_ptr_Function_int Function %42
+   %param_10 = OpVariable %_ptr_Function_int Function %42
+   %param_11 = OpVariable %_ptr_Function_int Function %42
+   %param_12 = OpVariable %_ptr_Function_int Function %42
+   %param_13 = OpVariable %_ptr_Function_int Function %42
+   %param_14 = OpVariable %_ptr_Function_int Function %42
+   %param_15 = OpVariable %_ptr_Function_int Function %42
+   %param_16 = OpVariable %_ptr_Function_int Function %42
+   %param_17 = OpVariable %_ptr_Function_int Function %42
+   %param_18 = OpVariable %_ptr_Function_int Function %42
+   %param_19 = OpVariable %_ptr_Function_int Function %42
+   %param_20 = OpVariable %_ptr_Function_int Function %42
+   %param_21 = OpVariable %_ptr_Function_int Function %42
+   %param_22 = OpVariable %_ptr_Function_int Function %42
+   %param_23 = OpVariable %_ptr_Function_int Function %42
+      %count = OpVariable %_ptr_Function_int Function %42
+          %i = OpVariable %_ptr_Function_int Function %42
+     %result = OpVariable %_ptr_Function_int Function %42
+   %param_24 = OpVariable %_ptr_Function_int Function %42
+               OpStore %treeIndex_1 %int_0
+        %191 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+        %192 = OpLoad %BST %191
+               OpStore %param_4 %192
+               OpStore %param_5 %int_9
+        %194 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %197 = OpLoad %BST %param_4
+        %198 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+               OpStore %198 %197
+        %199 = OpLoad %int %treeIndex_1
+        %201 = OpIAdd %int %199 %int_1
+               OpStore %treeIndex_1 %201
+        %202 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %202
+               OpStore %param_7 %int_5
+        %204 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %207 = OpLoad %int %treeIndex_1
+        %208 = OpIAdd %int %207 %int_1
+               OpStore %treeIndex_1 %208
+        %209 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %209
+               OpStore %param_9 %int_12
+        %211 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %214 = OpLoad %int %treeIndex_1
+        %215 = OpIAdd %int %214 %int_1
+               OpStore %treeIndex_1 %215
+        %216 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %216
+               OpStore %param_11 %int_15
+        %218 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %221 = OpLoad %int %treeIndex_1
+        %222 = OpIAdd %int %221 %int_1
+               OpStore %treeIndex_1 %222
+        %223 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %223
+               OpStore %param_13 %int_7
+        %225 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %228 = OpLoad %int %treeIndex_1
+        %229 = OpIAdd %int %228 %int_1
+               OpStore %treeIndex_1 %229
+        %230 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %230
+               OpStore %param_15 %int_8
+        %232 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %235 = OpLoad %int %treeIndex_1
+        %236 = OpIAdd %int %235 %int_1
+               OpStore %treeIndex_1 %236
+        %237 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %237
+               OpStore %param_17 %int_2
+        %239 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %242 = OpLoad %int %treeIndex_1
+        %243 = OpIAdd %int %242 %int_1
+               OpStore %treeIndex_1 %243
+        %244 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %244
+               OpStore %param_19 %int_6
+        %246 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %249 = OpLoad %int %treeIndex_1
+        %250 = OpIAdd %int %249 %int_1
+               OpStore %treeIndex_1 %250
+        %251 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %251
+               OpStore %param_21 %int_17
+        %253 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %256 = OpLoad %int %treeIndex_1
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %treeIndex_1 %257
+        %258 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %258
+               OpStore %param_23 %int_13
+        %260 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %263
+        %263 = OpLabel
+               OpLoopMerge %264 %265 None
+               OpBranch %266
+        %266 = OpLabel
+        %267 = OpLoad %int %i
+        %269 = OpSLessThan %bool %267 %int_20
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %272
+        %271 = OpLabel
+               OpBranch %270
+        %272 = OpLabel
+               OpBranch %264
+        %270 = OpLabel
+        %273 = OpLoad %int %i
+               OpStore %param_24 %273
+        %274 = OpFunctionCall %int %search_i1_ %param_24
+               OpStore %result %274
+        %276 = OpLoad %int %i
+               OpSelectionMerge %277 None
+               OpSwitch %276 %278 2 %279 5 %279 6 %279 7 %279 8 %279 9 %279 12 %279 13 %279 15 %279 17 %279
+        %279 = OpLabel
+        %280 = OpLoad %int %result
+        %281 = OpLoad %int %i
+        %282 = OpIEqual %bool %280 %281
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %283
+        %284 = OpLabel
+        %285 = OpLoad %int %count
+        %286 = OpIAdd %int %285 %int_1
+               OpStore %count %286
+               OpBranch %283
+        %283 = OpLabel
+               OpBranch %277
+        %278 = OpLabel
+        %287 = OpLoad %int %result
+        %288 = OpIEqual %bool %287 %int_n1
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %289
+        %290 = OpLabel
+        %291 = OpLoad %int %count
+        %292 = OpIAdd %int %291 %int_1
+               OpStore %count %292
+               OpBranch %289
+        %289 = OpLabel
+               OpBranch %277
+        %277 = OpLabel
+               OpBranch %265
+        %265 = OpLabel
+        %293 = OpLoad %int %i
+        %294 = OpIAdd %int %293 %int_1
+               OpStore %i %294
+               OpBranch %263
+        %264 = OpLabel
+        %295 = OpLoad %int %count
+        %296 = OpIEqual %bool %295 %int_20
+               OpSelectionMerge %297 None
+               OpBranchConditional %296 %298 %299
+        %298 = OpLabel
+               OpStore %x_GLF_color %302
+               OpBranch %297
+        %299 = OpLabel
+               OpStore %x_GLF_color %303
+               OpBranch %297
+        %297 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %304
+%tint_symbol = OpFunctionParameter %main_out
+        %308 = OpLabel
+        %309 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %309
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %163
+        %311 = OpLabel
+        %312 = OpFunctionCall %void %main_1
+        %314 = OpLoad %v4float %x_GLF_color
+        %315 = OpCompositeConstruct %main_out %314
+        %313 = OpFunctionCall %void %tint_symbol_2 %315
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..0016d4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.wgsl
@@ -0,0 +1,264 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_158 : i32 = *(data);
+  (*(tree)).data = x_158;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_167 : i32 = baseIndex;
+    let x_168 : i32 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    let x_171 : i32 = *(data_1);
+    let x_172 : i32 = baseIndex;
+    let x_174 : i32 = tree_1[x_172].data;
+    if ((x_171 <= x_174)) {
+      let x_179 : i32 = baseIndex;
+      let x_181 : i32 = tree_1[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        let x_186 : i32 = baseIndex;
+        let x_187 : i32 = *(treeIndex);
+        tree_1[x_186].leftIndex = x_187;
+        let x_189 : i32 = *(treeIndex);
+        let x_191 : BST = tree_1[x_189];
+        param = x_191;
+        let x_192 : i32 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_194 : BST = param;
+        tree_1[x_189] = x_194;
+        return;
+      } else {
+        let x_196 : i32 = baseIndex;
+        let x_198 : i32 = tree_1[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      let x_199 : i32 = baseIndex;
+      let x_201 : i32 = tree_1[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        let x_206 : i32 = baseIndex;
+        let x_207 : i32 = *(treeIndex);
+        tree_1[x_206].rightIndex = x_207;
+        let x_209 : i32 = *(treeIndex);
+        let x_211 : BST = tree_1[x_209];
+        param_2 = x_211;
+        let x_212 : i32 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_214 : BST = param_2;
+        tree_1[x_209] = x_214;
+        return;
+      } else {
+        let x_216 : i32 = baseIndex;
+        let x_218 : i32 = tree_1[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_220 : i32;
+  index = 0;
+  loop {
+    let x_225 : i32 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    let x_228 : i32 = index;
+    let x_230 : BST = tree_1[x_228];
+    currentNode = x_230;
+    let x_232 : i32 = currentNode.data;
+    let x_233 : i32 = *(target);
+    if ((x_232 == x_233)) {
+      let x_237 : i32 = *(target);
+      return x_237;
+    }
+    let x_238 : i32 = *(target);
+    let x_240 : i32 = currentNode.data;
+    if ((x_238 > x_240)) {
+      let x_246 : i32 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      let x_248 : i32 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    let x_249 : i32 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_84 : BST = tree_1[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_86 : BST = param_4;
+  tree_1[0] = x_86;
+  let x_88 : i32 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  let x_90 : i32 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_92 : i32 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  let x_94 : i32 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_96 : i32 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  let x_98 : i32 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_100 : i32 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  let x_102 : i32 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_104 : i32 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  let x_106 : i32 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_108 : i32 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  let x_110 : i32 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_112 : i32 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  let x_114 : i32 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  let x_118 : i32 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_120 : i32 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  let x_122 : i32 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_128 : i32 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    let x_131 : i32 = i;
+    param_24 = x_131;
+    let x_132 : i32 = search_i1_(&(param_24));
+    result = x_132;
+    let x_133 : i32 = i;
+    switch(x_133) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_143 : i32 = result;
+        let x_144 : i32 = i;
+        if ((x_143 == x_144)) {
+          let x_148 : i32 = count;
+          count = (x_148 + 1);
+        }
+      }
+      default: {
+        let x_137 : i32 = result;
+        if ((x_137 == -1)) {
+          let x_141 : i32 = count;
+          count = (x_141 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_150 : i32 = i;
+      i = (x_150 + 1);
+    }
+  }
+  let x_152 : i32 = count;
+  if ((x_152 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
new file mode 100644
index 0000000..0016d4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
@@ -0,0 +1,264 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_158 : i32 = *(data);
+  (*(tree)).data = x_158;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_167 : i32 = baseIndex;
+    let x_168 : i32 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    let x_171 : i32 = *(data_1);
+    let x_172 : i32 = baseIndex;
+    let x_174 : i32 = tree_1[x_172].data;
+    if ((x_171 <= x_174)) {
+      let x_179 : i32 = baseIndex;
+      let x_181 : i32 = tree_1[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        let x_186 : i32 = baseIndex;
+        let x_187 : i32 = *(treeIndex);
+        tree_1[x_186].leftIndex = x_187;
+        let x_189 : i32 = *(treeIndex);
+        let x_191 : BST = tree_1[x_189];
+        param = x_191;
+        let x_192 : i32 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_194 : BST = param;
+        tree_1[x_189] = x_194;
+        return;
+      } else {
+        let x_196 : i32 = baseIndex;
+        let x_198 : i32 = tree_1[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      let x_199 : i32 = baseIndex;
+      let x_201 : i32 = tree_1[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        let x_206 : i32 = baseIndex;
+        let x_207 : i32 = *(treeIndex);
+        tree_1[x_206].rightIndex = x_207;
+        let x_209 : i32 = *(treeIndex);
+        let x_211 : BST = tree_1[x_209];
+        param_2 = x_211;
+        let x_212 : i32 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_214 : BST = param_2;
+        tree_1[x_209] = x_214;
+        return;
+      } else {
+        let x_216 : i32 = baseIndex;
+        let x_218 : i32 = tree_1[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_220 : i32;
+  index = 0;
+  loop {
+    let x_225 : i32 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    let x_228 : i32 = index;
+    let x_230 : BST = tree_1[x_228];
+    currentNode = x_230;
+    let x_232 : i32 = currentNode.data;
+    let x_233 : i32 = *(target);
+    if ((x_232 == x_233)) {
+      let x_237 : i32 = *(target);
+      return x_237;
+    }
+    let x_238 : i32 = *(target);
+    let x_240 : i32 = currentNode.data;
+    if ((x_238 > x_240)) {
+      let x_246 : i32 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      let x_248 : i32 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    let x_249 : i32 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_84 : BST = tree_1[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_86 : BST = param_4;
+  tree_1[0] = x_86;
+  let x_88 : i32 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  let x_90 : i32 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_92 : i32 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  let x_94 : i32 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_96 : i32 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  let x_98 : i32 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_100 : i32 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  let x_102 : i32 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_104 : i32 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  let x_106 : i32 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_108 : i32 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  let x_110 : i32 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_112 : i32 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  let x_114 : i32 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  let x_118 : i32 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_120 : i32 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  let x_122 : i32 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_128 : i32 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    let x_131 : i32 = i;
+    param_24 = x_131;
+    let x_132 : i32 = search_i1_(&(param_24));
+    result = x_132;
+    let x_133 : i32 = i;
+    switch(x_133) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_143 : i32 = result;
+        let x_144 : i32 = i;
+        if ((x_143 == x_144)) {
+          let x_148 : i32 = count;
+          count = (x_148 + 1);
+        }
+      }
+      default: {
+        let x_137 : i32 = result;
+        if ((x_137 == -1)) {
+          let x_141 : i32 = count;
+          count = (x_141 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_150 : i32 = i;
+      i = (x_150 + 1);
+    }
+  }
+  let x_152 : i32 = count;
+  if ((x_152 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..bc5fdac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.hlsl
@@ -0,0 +1,232 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static BST tree_1[10] = (BST[10])0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST tree, inout int data) {
+  const int x_158 = data;
+  tree.data = x_158;
+  tree.leftIndex = -1;
+  tree.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_167 = baseIndex;
+    const int x_168 = treeIndex;
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    const int x_171 = data_1;
+    const int x_174 = tree_1[baseIndex].data;
+    if ((x_171 <= x_174)) {
+      const int x_181 = tree_1[baseIndex].leftIndex;
+      if ((x_181 == -1)) {
+        const int x_186 = baseIndex;
+        const int x_187 = treeIndex;
+        tree_1[x_186].leftIndex = x_187;
+        const int x_189 = treeIndex;
+        const BST x_191 = tree_1[x_189];
+        param = x_191;
+        const int x_192 = data_1;
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree_1[x_189] = param;
+        return;
+      } else {
+        const int x_198 = tree_1[baseIndex].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      const int x_201 = tree_1[baseIndex].rightIndex;
+      if ((x_201 == -1)) {
+        const int x_206 = baseIndex;
+        const int x_207 = treeIndex;
+        tree_1[x_206].rightIndex = x_207;
+        const int x_209 = treeIndex;
+        const BST x_211 = tree_1[x_209];
+        param_2 = x_211;
+        const int x_212 = data_1;
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree_1[x_209] = param_2;
+        return;
+      } else {
+        const int x_218 = tree_1[baseIndex].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_220 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_230 = tree_1[index];
+    currentNode = x_230;
+    const int x_232 = currentNode.data;
+    const int x_233 = target;
+    if ((x_232 == x_233)) {
+      const int x_237 = target;
+      return x_237;
+    }
+    const int x_238 = target;
+    const int x_240 = currentNode.data;
+    if ((x_238 > x_240)) {
+      const int x_246 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      const int x_248 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    index = x_220;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  const BST x_84 = tree_1[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree_1[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  count = 0;
+  i = 0;
+  {
+    for(; (i < 20); i = (i + 1)) {
+      param_24 = i;
+      const int x_132 = search_i1_(param_24);
+      result = x_132;
+      switch(i) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          if ((result == i)) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.msl
new file mode 100644
index 0000000..f509724
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.msl
@@ -0,0 +1,281 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const tree, thread int* const data) {
+  int const x_158 = *(data);
+  (*(tree)).data = x_158;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper* const tint_symbol_4) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_167 = baseIndex;
+    int const x_168 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    int const x_171 = *(data_1);
+    int const x_172 = baseIndex;
+    int const x_174 = (*(tint_symbol_4)).arr[x_172].data;
+    if ((x_171 <= x_174)) {
+      int const x_179 = baseIndex;
+      int const x_181 = (*(tint_symbol_4)).arr[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        int const x_186 = baseIndex;
+        int const x_187 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_186].leftIndex = x_187;
+        int const x_189 = *(treeIndex);
+        BST const x_191 = (*(tint_symbol_4)).arr[x_189];
+        param = x_191;
+        int const x_192 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_194 = param;
+        (*(tint_symbol_4)).arr[x_189] = x_194;
+        return;
+      } else {
+        int const x_196 = baseIndex;
+        int const x_198 = (*(tint_symbol_4)).arr[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      int const x_199 = baseIndex;
+      int const x_201 = (*(tint_symbol_4)).arr[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        int const x_206 = baseIndex;
+        int const x_207 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_206].rightIndex = x_207;
+        int const x_209 = *(treeIndex);
+        BST const x_211 = (*(tint_symbol_4)).arr[x_209];
+        param_2 = x_211;
+        int const x_212 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_214 = param_2;
+        (*(tint_symbol_4)).arr[x_209] = x_214;
+        return;
+      } else {
+        int const x_216 = baseIndex;
+        int const x_218 = (*(tint_symbol_4)).arr[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper* const tint_symbol_5) {
+  int index = 0;
+  BST currentNode = {};
+  int x_220 = 0;
+  index = 0;
+  while (true) {
+    int const x_225 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    int const x_228 = index;
+    BST const x_230 = (*(tint_symbol_5)).arr[x_228];
+    currentNode = x_230;
+    int const x_232 = currentNode.data;
+    int const x_233 = *(target);
+    if ((x_232 == x_233)) {
+      int const x_237 = *(target);
+      return x_237;
+    }
+    int const x_238 = *(target);
+    int const x_240 = currentNode.data;
+    if ((x_238 > x_240)) {
+      int const x_246 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      int const x_248 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    int const x_249 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+void main_1(thread tint_array_wrapper* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  BST const x_84 = (*(tint_symbol_6)).arr[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_86 = param_4;
+  (*(tint_symbol_6)).arr[0] = x_86;
+  int const x_88 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  int const x_90 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7), tint_symbol_6);
+  int const x_92 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  int const x_94 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9), tint_symbol_6);
+  int const x_96 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  int const x_98 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11), tint_symbol_6);
+  int const x_100 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  int const x_102 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13), tint_symbol_6);
+  int const x_104 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  int const x_106 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15), tint_symbol_6);
+  int const x_108 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  int const x_110 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17), tint_symbol_6);
+  int const x_112 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  int const x_114 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19), tint_symbol_6);
+  int const x_116 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  int const x_118 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21), tint_symbol_6);
+  int const x_120 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  int const x_122 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23), tint_symbol_6);
+  count = 0;
+  i = 0;
+  while (true) {
+    int const x_128 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    int const x_131 = i;
+    param_24 = x_131;
+    int const x_132 = search_i1_(&(param_24), tint_symbol_6);
+    result = x_132;
+    int const x_133 = i;
+    switch(x_133) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_143 = result;
+        int const x_144 = i;
+        if ((x_143 == x_144)) {
+          int const x_148 = count;
+          count = (x_148 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_137 = result;
+        if ((x_137 == -1)) {
+          int const x_141 = count;
+          count = (x_141 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_150 = i;
+      i = (x_150 + 1);
+    }
+  }
+  int const x_152 = count;
+  if ((x_152 == 20)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread tint_array_wrapper tint_symbol_8 = {};
+  thread float4 tint_symbol_9 = 0.0f;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..3d85c3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.spvasm
@@ -0,0 +1,476 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 316
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree_1 "tree_1"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_220 "x_220"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_24 "param_24"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+     %tree_1 = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %16 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %36 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %42 = OpConstantNull %int
+         %44 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %122 = OpTypeFunction %int %_ptr_Function_int
+        %163 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %302 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %303 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %304 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %16
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %23 = OpLabel
+         %25 = OpLoad %int %data
+         %28 = OpAccessChain %_ptr_Function_int %tree %uint_0
+               OpStore %28 %25
+         %31 = OpAccessChain %_ptr_Function_int %tree %uint_1
+               OpStore %31 %int_n1
+         %35 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %35 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %36
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %40 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %42
+      %param = OpVariable %_ptr_Function_BST Function %44
+    %param_1 = OpVariable %_ptr_Function_int Function %42
+    %param_2 = OpVariable %_ptr_Function_BST Function %44
+    %param_3 = OpVariable %_ptr_Function_int Function %42
+               OpStore %baseIndex %int_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %baseIndex
+         %55 = OpLoad %int %treeIndex
+         %56 = OpSLessThanEqual %bool %53 %55
+               OpSelectionMerge %58 None
+               OpBranchConditional %56 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %50
+         %58 = OpLabel
+         %62 = OpLoad %int %data_1
+         %63 = OpLoad %int %baseIndex
+         %65 = OpAccessChain %_ptr_Private_int %tree_1 %63 %uint_0
+         %66 = OpLoad %int %65
+         %67 = OpSLessThanEqual %bool %62 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpLoad %int %baseIndex
+         %72 = OpAccessChain %_ptr_Private_int %tree_1 %71 %uint_1
+         %73 = OpLoad %int %72
+         %74 = OpIEqual %bool %73 %int_n1
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpLoad %int %baseIndex
+         %80 = OpLoad %int %treeIndex
+         %81 = OpAccessChain %_ptr_Private_int %tree_1 %78 %uint_1
+               OpStore %81 %80
+         %83 = OpLoad %int %treeIndex
+         %85 = OpAccessChain %_ptr_Private_BST %tree_1 %83
+         %86 = OpLoad %BST %85
+               OpStore %param %86
+         %88 = OpLoad %int %data_1
+               OpStore %param_1 %88
+         %89 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+         %92 = OpLoad %BST %param
+         %93 = OpAccessChain %_ptr_Private_BST %tree_1 %83
+               OpStore %93 %92
+               OpReturn
+         %77 = OpLabel
+         %94 = OpLoad %int %baseIndex
+         %95 = OpAccessChain %_ptr_Private_int %tree_1 %94 %uint_1
+         %96 = OpLoad %int %95
+               OpStore %baseIndex %96
+               OpBranch %51
+         %75 = OpLabel
+               OpReturn
+         %70 = OpLabel
+         %97 = OpLoad %int %baseIndex
+         %98 = OpAccessChain %_ptr_Private_int %tree_1 %97 %uint_2
+         %99 = OpLoad %int %98
+        %100 = OpIEqual %bool %99 %int_n1
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %103
+        %102 = OpLabel
+        %104 = OpLoad %int %baseIndex
+        %106 = OpLoad %int %treeIndex
+        %107 = OpAccessChain %_ptr_Private_int %tree_1 %104 %uint_2
+               OpStore %107 %106
+        %109 = OpLoad %int %treeIndex
+        %110 = OpAccessChain %_ptr_Private_BST %tree_1 %109
+        %111 = OpLoad %BST %110
+               OpStore %param_2 %111
+        %113 = OpLoad %int %data_1
+               OpStore %param_3 %113
+        %114 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %117 = OpLoad %BST %param_2
+        %118 = OpAccessChain %_ptr_Private_BST %tree_1 %109
+               OpStore %118 %117
+               OpReturn
+        %103 = OpLabel
+        %119 = OpLoad %int %baseIndex
+        %120 = OpAccessChain %_ptr_Private_int %tree_1 %119 %uint_2
+        %121 = OpLoad %int %120
+               OpStore %baseIndex %121
+               OpBranch %51
+        %101 = OpLabel
+               OpReturn
+         %68 = OpLabel
+               OpReturn
+         %51 = OpLabel
+               OpBranch %49
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %122
+     %target = OpFunctionParameter %_ptr_Function_int
+        %125 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %42
+%currentNode = OpVariable %_ptr_Function_BST Function %44
+      %x_220 = OpVariable %_ptr_Function_int Function %42
+               OpStore %index %int_0
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %index
+        %134 = OpINotEqual %bool %133 %int_n1
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %130
+        %135 = OpLabel
+        %138 = OpLoad %int %index
+        %139 = OpAccessChain %_ptr_Private_BST %tree_1 %138
+        %140 = OpLoad %BST %139
+               OpStore %currentNode %140
+        %141 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %142 = OpLoad %int %141
+        %144 = OpLoad %int %target
+        %145 = OpIEqual %bool %142 %144
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %149 = OpLoad %int %target
+               OpReturnValue %149
+        %146 = OpLabel
+        %151 = OpLoad %int %target
+        %152 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %153 = OpLoad %int %152
+        %154 = OpSGreaterThan %bool %151 %153
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+        %158 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %159 = OpLoad %int %158
+               OpStore %x_220 %159
+               OpBranch %155
+        %157 = OpLabel
+        %160 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %161 = OpLoad %int %160
+               OpStore %x_220 %161
+               OpBranch %155
+        %155 = OpLabel
+        %162 = OpLoad %int %x_220
+               OpStore %index %162
+               OpBranch %131
+        %131 = OpLabel
+               OpBranch %129
+        %130 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %163
+        %165 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %42
+    %param_4 = OpVariable %_ptr_Function_BST Function %44
+    %param_5 = OpVariable %_ptr_Function_int Function %42
+    %param_6 = OpVariable %_ptr_Function_int Function %42
+    %param_7 = OpVariable %_ptr_Function_int Function %42
+    %param_8 = OpVariable %_ptr_Function_int Function %42
+    %param_9 = OpVariable %_ptr_Function_int Function %42
+   %param_10 = OpVariable %_ptr_Function_int Function %42
+   %param_11 = OpVariable %_ptr_Function_int Function %42
+   %param_12 = OpVariable %_ptr_Function_int Function %42
+   %param_13 = OpVariable %_ptr_Function_int Function %42
+   %param_14 = OpVariable %_ptr_Function_int Function %42
+   %param_15 = OpVariable %_ptr_Function_int Function %42
+   %param_16 = OpVariable %_ptr_Function_int Function %42
+   %param_17 = OpVariable %_ptr_Function_int Function %42
+   %param_18 = OpVariable %_ptr_Function_int Function %42
+   %param_19 = OpVariable %_ptr_Function_int Function %42
+   %param_20 = OpVariable %_ptr_Function_int Function %42
+   %param_21 = OpVariable %_ptr_Function_int Function %42
+   %param_22 = OpVariable %_ptr_Function_int Function %42
+   %param_23 = OpVariable %_ptr_Function_int Function %42
+      %count = OpVariable %_ptr_Function_int Function %42
+          %i = OpVariable %_ptr_Function_int Function %42
+     %result = OpVariable %_ptr_Function_int Function %42
+   %param_24 = OpVariable %_ptr_Function_int Function %42
+               OpStore %treeIndex_1 %int_0
+        %191 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+        %192 = OpLoad %BST %191
+               OpStore %param_4 %192
+               OpStore %param_5 %int_9
+        %194 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %197 = OpLoad %BST %param_4
+        %198 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+               OpStore %198 %197
+        %199 = OpLoad %int %treeIndex_1
+        %201 = OpIAdd %int %199 %int_1
+               OpStore %treeIndex_1 %201
+        %202 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %202
+               OpStore %param_7 %int_5
+        %204 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %207 = OpLoad %int %treeIndex_1
+        %208 = OpIAdd %int %207 %int_1
+               OpStore %treeIndex_1 %208
+        %209 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %209
+               OpStore %param_9 %int_12
+        %211 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %214 = OpLoad %int %treeIndex_1
+        %215 = OpIAdd %int %214 %int_1
+               OpStore %treeIndex_1 %215
+        %216 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %216
+               OpStore %param_11 %int_15
+        %218 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %221 = OpLoad %int %treeIndex_1
+        %222 = OpIAdd %int %221 %int_1
+               OpStore %treeIndex_1 %222
+        %223 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %223
+               OpStore %param_13 %int_7
+        %225 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %228 = OpLoad %int %treeIndex_1
+        %229 = OpIAdd %int %228 %int_1
+               OpStore %treeIndex_1 %229
+        %230 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %230
+               OpStore %param_15 %int_8
+        %232 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %235 = OpLoad %int %treeIndex_1
+        %236 = OpIAdd %int %235 %int_1
+               OpStore %treeIndex_1 %236
+        %237 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %237
+               OpStore %param_17 %int_2
+        %239 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %242 = OpLoad %int %treeIndex_1
+        %243 = OpIAdd %int %242 %int_1
+               OpStore %treeIndex_1 %243
+        %244 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %244
+               OpStore %param_19 %int_6
+        %246 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %249 = OpLoad %int %treeIndex_1
+        %250 = OpIAdd %int %249 %int_1
+               OpStore %treeIndex_1 %250
+        %251 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %251
+               OpStore %param_21 %int_17
+        %253 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %256 = OpLoad %int %treeIndex_1
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %treeIndex_1 %257
+        %258 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %258
+               OpStore %param_23 %int_13
+        %260 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %263
+        %263 = OpLabel
+               OpLoopMerge %264 %265 None
+               OpBranch %266
+        %266 = OpLabel
+        %267 = OpLoad %int %i
+        %269 = OpSLessThan %bool %267 %int_20
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %272
+        %271 = OpLabel
+               OpBranch %270
+        %272 = OpLabel
+               OpBranch %264
+        %270 = OpLabel
+        %273 = OpLoad %int %i
+               OpStore %param_24 %273
+        %274 = OpFunctionCall %int %search_i1_ %param_24
+               OpStore %result %274
+        %276 = OpLoad %int %i
+               OpSelectionMerge %277 None
+               OpSwitch %276 %278 2 %279 5 %279 6 %279 7 %279 8 %279 9 %279 12 %279 13 %279 15 %279 17 %279
+        %279 = OpLabel
+        %280 = OpLoad %int %result
+        %281 = OpLoad %int %i
+        %282 = OpIEqual %bool %280 %281
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %283
+        %284 = OpLabel
+        %285 = OpLoad %int %count
+        %286 = OpIAdd %int %285 %int_1
+               OpStore %count %286
+               OpBranch %283
+        %283 = OpLabel
+               OpBranch %277
+        %278 = OpLabel
+        %287 = OpLoad %int %result
+        %288 = OpIEqual %bool %287 %int_n1
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %289
+        %290 = OpLabel
+        %291 = OpLoad %int %count
+        %292 = OpIAdd %int %291 %int_1
+               OpStore %count %292
+               OpBranch %289
+        %289 = OpLabel
+               OpBranch %277
+        %277 = OpLabel
+               OpBranch %265
+        %265 = OpLabel
+        %293 = OpLoad %int %i
+        %294 = OpIAdd %int %293 %int_1
+               OpStore %i %294
+               OpBranch %263
+        %264 = OpLabel
+        %295 = OpLoad %int %count
+        %296 = OpIEqual %bool %295 %int_20
+               OpSelectionMerge %297 None
+               OpBranchConditional %296 %298 %299
+        %298 = OpLabel
+               OpStore %x_GLF_color %302
+               OpBranch %297
+        %299 = OpLabel
+               OpStore %x_GLF_color %303
+               OpBranch %297
+        %297 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %304
+%tint_symbol = OpFunctionParameter %main_out
+        %308 = OpLabel
+        %309 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %309
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %163
+        %311 = OpLabel
+        %312 = OpFunctionCall %void %main_1
+        %314 = OpLoad %v4float %x_GLF_color
+        %315 = OpCompositeConstruct %main_out %314
+        %313 = OpFunctionCall %void %tint_symbol_2 %315
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..0016d4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.wgsl
@@ -0,0 +1,264 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_158 : i32 = *(data);
+  (*(tree)).data = x_158;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_167 : i32 = baseIndex;
+    let x_168 : i32 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    let x_171 : i32 = *(data_1);
+    let x_172 : i32 = baseIndex;
+    let x_174 : i32 = tree_1[x_172].data;
+    if ((x_171 <= x_174)) {
+      let x_179 : i32 = baseIndex;
+      let x_181 : i32 = tree_1[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        let x_186 : i32 = baseIndex;
+        let x_187 : i32 = *(treeIndex);
+        tree_1[x_186].leftIndex = x_187;
+        let x_189 : i32 = *(treeIndex);
+        let x_191 : BST = tree_1[x_189];
+        param = x_191;
+        let x_192 : i32 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_194 : BST = param;
+        tree_1[x_189] = x_194;
+        return;
+      } else {
+        let x_196 : i32 = baseIndex;
+        let x_198 : i32 = tree_1[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      let x_199 : i32 = baseIndex;
+      let x_201 : i32 = tree_1[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        let x_206 : i32 = baseIndex;
+        let x_207 : i32 = *(treeIndex);
+        tree_1[x_206].rightIndex = x_207;
+        let x_209 : i32 = *(treeIndex);
+        let x_211 : BST = tree_1[x_209];
+        param_2 = x_211;
+        let x_212 : i32 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_214 : BST = param_2;
+        tree_1[x_209] = x_214;
+        return;
+      } else {
+        let x_216 : i32 = baseIndex;
+        let x_218 : i32 = tree_1[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_220 : i32;
+  index = 0;
+  loop {
+    let x_225 : i32 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    let x_228 : i32 = index;
+    let x_230 : BST = tree_1[x_228];
+    currentNode = x_230;
+    let x_232 : i32 = currentNode.data;
+    let x_233 : i32 = *(target);
+    if ((x_232 == x_233)) {
+      let x_237 : i32 = *(target);
+      return x_237;
+    }
+    let x_238 : i32 = *(target);
+    let x_240 : i32 = currentNode.data;
+    if ((x_238 > x_240)) {
+      let x_246 : i32 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      let x_248 : i32 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    let x_249 : i32 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_84 : BST = tree_1[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_86 : BST = param_4;
+  tree_1[0] = x_86;
+  let x_88 : i32 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  let x_90 : i32 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_92 : i32 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  let x_94 : i32 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_96 : i32 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  let x_98 : i32 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_100 : i32 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  let x_102 : i32 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_104 : i32 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  let x_106 : i32 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_108 : i32 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  let x_110 : i32 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_112 : i32 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  let x_114 : i32 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  let x_118 : i32 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_120 : i32 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  let x_122 : i32 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_128 : i32 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    let x_131 : i32 = i;
+    param_24 = x_131;
+    let x_132 : i32 = search_i1_(&(param_24));
+    result = x_132;
+    let x_133 : i32 = i;
+    switch(x_133) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_143 : i32 = result;
+        let x_144 : i32 = i;
+        if ((x_143 == x_144)) {
+          let x_148 : i32 = count;
+          count = (x_148 + 1);
+        }
+      }
+      default: {
+        let x_137 : i32 = result;
+        if ((x_137 == -1)) {
+          let x_141 : i32 = count;
+          count = (x_141 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_150 : i32 = i;
+      i = (x_150 + 1);
+    }
+  }
+  let x_152 : i32 = count;
+  if ((x_152 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm
new file mode 100644
index 0000000..e38765c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm
@@ -0,0 +1,436 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode(struct-BST-i1-i1-i11;i1;"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert(i1;i1;"
+               OpName %treeIndex "treeIndex"
+               OpName %data_0 "data"
+               OpName %search_i1_ "search(i1;"
+               OpName %target "target"
+               OpName %baseIndex "baseIndex"
+               OpName %tree_0 "tree"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %treeIndex_0 "treeIndex"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %param_9 "param"
+               OpName %param_10 "param"
+               OpName %param_11 "param"
+               OpName %param_12 "param"
+               OpName %param_13 "param"
+               OpName %param_14 "param"
+               OpName %param_15 "param"
+               OpName %param_16 "param"
+               OpName %param_17 "param"
+               OpName %param_18 "param"
+               OpName %param_19 "param"
+               OpName %param_20 "param"
+               OpName %param_21 "param"
+               OpName %param_22 "param"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_23 "param"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %48 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %52 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+         %53 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %54 = OpTypeFunction %int %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+     %tree_0 = OpVariable %_ptr_Private__arr_BST_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %84 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %85 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+       %main = OpFunction %void None %48
+         %86 = OpLabel
+%treeIndex_0 = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_BST Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+    %param_5 = OpVariable %_ptr_Function_int Function
+    %param_6 = OpVariable %_ptr_Function_int Function
+    %param_7 = OpVariable %_ptr_Function_int Function
+    %param_8 = OpVariable %_ptr_Function_int Function
+    %param_9 = OpVariable %_ptr_Function_int Function
+   %param_10 = OpVariable %_ptr_Function_int Function
+   %param_11 = OpVariable %_ptr_Function_int Function
+   %param_12 = OpVariable %_ptr_Function_int Function
+   %param_13 = OpVariable %_ptr_Function_int Function
+   %param_14 = OpVariable %_ptr_Function_int Function
+   %param_15 = OpVariable %_ptr_Function_int Function
+   %param_16 = OpVariable %_ptr_Function_int Function
+   %param_17 = OpVariable %_ptr_Function_int Function
+   %param_18 = OpVariable %_ptr_Function_int Function
+   %param_19 = OpVariable %_ptr_Function_int Function
+   %param_20 = OpVariable %_ptr_Function_int Function
+   %param_21 = OpVariable %_ptr_Function_int Function
+   %param_22 = OpVariable %_ptr_Function_int Function
+      %count = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+     %result = OpVariable %_ptr_Function_int Function
+   %param_23 = OpVariable %_ptr_Function_int Function
+               OpStore %treeIndex_0 %int_0
+         %87 = OpAccessChain %_ptr_Private_BST %tree_0 %int_0
+         %88 = OpLoad %BST %87
+               OpStore %param_3 %88
+               OpStore %param_4 %int_9
+         %89 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_3 %param_4
+         %90 = OpLoad %BST %param_3
+         %91 = OpAccessChain %_ptr_Private_BST %tree_0 %int_0
+               OpStore %91 %90
+         %92 = OpLoad %int %treeIndex_0
+         %93 = OpIAdd %int %92 %int_1
+               OpStore %treeIndex_0 %93
+         %94 = OpLoad %int %treeIndex_0
+               OpStore %param_5 %94
+               OpStore %param_6 %int_5
+         %95 = OpFunctionCall %void %insert_i1_i1_ %param_5 %param_6
+         %96 = OpLoad %int %treeIndex_0
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %treeIndex_0 %97
+         %98 = OpLoad %int %treeIndex_0
+               OpStore %param_7 %98
+               OpStore %param_8 %int_12
+         %99 = OpFunctionCall %void %insert_i1_i1_ %param_7 %param_8
+        %100 = OpLoad %int %treeIndex_0
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %treeIndex_0 %101
+        %102 = OpLoad %int %treeIndex_0
+               OpStore %param_9 %102
+               OpStore %param_10 %int_15
+        %103 = OpFunctionCall %void %insert_i1_i1_ %param_9 %param_10
+        %104 = OpLoad %int %treeIndex_0
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %treeIndex_0 %105
+        %106 = OpLoad %int %treeIndex_0
+               OpStore %param_11 %106
+               OpStore %param_12 %int_7
+        %107 = OpFunctionCall %void %insert_i1_i1_ %param_11 %param_12
+        %108 = OpLoad %int %treeIndex_0
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %treeIndex_0 %109
+        %110 = OpLoad %int %treeIndex_0
+               OpStore %param_13 %110
+               OpStore %param_14 %int_8
+        %111 = OpFunctionCall %void %insert_i1_i1_ %param_13 %param_14
+        %112 = OpLoad %int %treeIndex_0
+        %113 = OpIAdd %int %112 %int_1
+               OpStore %treeIndex_0 %113
+        %114 = OpLoad %int %treeIndex_0
+               OpStore %param_15 %114
+               OpStore %param_16 %int_2
+        %115 = OpFunctionCall %void %insert_i1_i1_ %param_15 %param_16
+        %116 = OpLoad %int %treeIndex_0
+        %117 = OpIAdd %int %116 %int_1
+               OpStore %treeIndex_0 %117
+        %118 = OpLoad %int %treeIndex_0
+               OpStore %param_17 %118
+               OpStore %param_18 %int_6
+        %119 = OpFunctionCall %void %insert_i1_i1_ %param_17 %param_18
+        %120 = OpLoad %int %treeIndex_0
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %treeIndex_0 %121
+        %122 = OpLoad %int %treeIndex_0
+               OpStore %param_19 %122
+               OpStore %param_20 %int_17
+        %123 = OpFunctionCall %void %insert_i1_i1_ %param_19 %param_20
+        %124 = OpLoad %int %treeIndex_0
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %treeIndex_0 %125
+        %126 = OpLoad %int %treeIndex_0
+               OpStore %param_21 %126
+               OpStore %param_22 %int_13
+        %127 = OpFunctionCall %void %insert_i1_i1_ %param_21 %param_22
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %132 = OpLoad %int %i
+        %133 = OpSLessThan %bool %132 %int_20
+               OpBranchConditional %133 %134 %129
+        %134 = OpLabel
+        %135 = OpLoad %int %i
+               OpStore %param_23 %135
+        %136 = OpFunctionCall %int %search_i1_ %param_23
+               OpStore %result %136
+        %137 = OpLoad %int %i
+               OpSelectionMerge %138 None
+               OpSwitch %137 %139 9 %140 5 %140 12 %140 15 %140 7 %140 8 %140 2 %140 6 %140 17 %140 13 %140
+        %139 = OpLabel
+        %141 = OpLoad %int %result
+        %142 = OpIEqual %bool %141 %int_n1
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %143
+        %144 = OpLabel
+        %145 = OpLoad %int %count
+        %146 = OpIAdd %int %145 %int_1
+               OpStore %count %146
+               OpBranch %143
+        %143 = OpLabel
+               OpBranch %138
+        %140 = OpLabel
+        %147 = OpLoad %int %result
+        %148 = OpLoad %int %i
+        %149 = OpIEqual %bool %147 %148
+        %150 = OpLogicalNot %bool %149
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %151
+        %152 = OpLabel
+        %153 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %154 = OpLoad %float %153
+        %155 = OpFOrdLessThan %bool %154 %float_0
+               OpBranch %151
+        %151 = OpLabel
+        %156 = OpPhi %bool %149 %140 %155 %152
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %157
+        %158 = OpLabel
+        %159 = OpLoad %int %count
+        %160 = OpIAdd %int %159 %int_1
+               OpStore %count %160
+               OpBranch %157
+        %157 = OpLabel
+               OpBranch %138
+        %138 = OpLabel
+               OpBranch %130
+        %130 = OpLabel
+        %161 = OpLoad %int %i
+        %162 = OpIAdd %int %161 %int_1
+               OpStore %i %162
+               OpBranch %128
+        %129 = OpLabel
+        %163 = OpLoad %int %count
+        %164 = OpIEqual %bool %163 %int_20
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %167
+        %166 = OpLabel
+               OpStore %_GLF_color %84
+               OpBranch %165
+        %167 = OpLabel
+               OpStore %_GLF_color %85
+               OpBranch %165
+        %165 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %52
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+        %168 = OpLabel
+        %169 = OpLoad %int %data
+        %170 = OpAccessChain %_ptr_Function_int %tree %int_0
+               OpStore %170 %169
+        %171 = OpAccessChain %_ptr_Function_int %tree %int_1
+               OpStore %171 %int_n1
+        %172 = OpAccessChain %_ptr_Function_int %tree %int_2
+               OpStore %172 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %53
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_0 = OpFunctionParameter %_ptr_Function_int
+        %173 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_BST Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_BST Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+               OpStore %baseIndex %int_0
+               OpBranch %174
+        %174 = OpLabel
+               OpLoopMerge %175 %176 None
+               OpBranch %177
+        %177 = OpLabel
+        %178 = OpLoad %int %baseIndex
+        %179 = OpLoad %int %treeIndex
+        %180 = OpSLessThanEqual %bool %178 %179
+               OpBranchConditional %180 %181 %175
+        %181 = OpLabel
+        %182 = OpLoad %int %data_0
+        %183 = OpLoad %int %baseIndex
+        %184 = OpAccessChain %_ptr_Private_int %tree_0 %183 %int_0
+        %185 = OpLoad %int %184
+        %186 = OpSLessThanEqual %bool %182 %185
+               OpSelectionMerge %187 None
+               OpBranchConditional %186 %188 %189
+        %188 = OpLabel
+        %190 = OpLoad %int %baseIndex
+        %191 = OpAccessChain %_ptr_Private_int %tree_0 %190 %int_1
+        %192 = OpLoad %int %191
+        %193 = OpIEqual %bool %192 %int_n1
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %196
+        %195 = OpLabel
+        %197 = OpLoad %int %baseIndex
+        %198 = OpLoad %int %treeIndex
+        %199 = OpAccessChain %_ptr_Private_int %tree_0 %197 %int_1
+               OpStore %199 %198
+        %200 = OpLoad %int %treeIndex
+        %201 = OpAccessChain %_ptr_Private_BST %tree_0 %200
+        %202 = OpLoad %BST %201
+               OpStore %param %202
+        %203 = OpLoad %int %data_0
+               OpStore %param_0 %203
+        %204 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_0
+        %205 = OpLoad %BST %param
+        %206 = OpAccessChain %_ptr_Private_BST %tree_0 %200
+               OpStore %206 %205
+               OpReturn
+        %196 = OpLabel
+        %207 = OpLoad %int %baseIndex
+        %208 = OpAccessChain %_ptr_Private_int %tree_0 %207 %int_1
+        %209 = OpLoad %int %208
+               OpStore %baseIndex %209
+               OpBranch %176
+        %194 = OpLabel
+               OpUnreachable
+        %189 = OpLabel
+        %210 = OpLoad %int %baseIndex
+        %211 = OpAccessChain %_ptr_Private_int %tree_0 %210 %int_2
+        %212 = OpLoad %int %211
+        %213 = OpIEqual %bool %212 %int_n1
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+        %217 = OpLoad %int %baseIndex
+        %218 = OpLoad %int %treeIndex
+        %219 = OpAccessChain %_ptr_Private_int %tree_0 %217 %int_2
+               OpStore %219 %218
+        %220 = OpLoad %int %treeIndex
+        %221 = OpAccessChain %_ptr_Private_BST %tree_0 %220
+        %222 = OpLoad %BST %221
+               OpStore %param_1 %222
+        %223 = OpLoad %int %data_0
+               OpStore %param_2 %223
+        %224 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_1 %param_2
+        %225 = OpLoad %BST %param_1
+        %226 = OpAccessChain %_ptr_Private_BST %tree_0 %220
+               OpStore %226 %225
+               OpReturn
+        %216 = OpLabel
+        %227 = OpLoad %int %baseIndex
+        %228 = OpAccessChain %_ptr_Private_int %tree_0 %227 %int_2
+        %229 = OpLoad %int %228
+               OpStore %baseIndex %229
+               OpBranch %176
+        %214 = OpLabel
+               OpUnreachable
+        %187 = OpLabel
+               OpUnreachable
+        %176 = OpLabel
+               OpBranch %174
+        %175 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %54
+     %target = OpFunctionParameter %_ptr_Function_int
+        %230 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function
+%currentNode = OpVariable %_ptr_Function_BST Function
+        %231 = OpVariable %_ptr_Function_int Function
+               OpStore %index %int_0
+               OpBranch %232
+        %232 = OpLabel
+               OpLoopMerge %233 %234 None
+               OpBranch %235
+        %235 = OpLabel
+        %236 = OpLoad %int %index
+        %237 = OpINotEqual %bool %236 %int_n1
+               OpBranchConditional %237 %238 %233
+        %238 = OpLabel
+        %239 = OpLoad %int %index
+        %240 = OpAccessChain %_ptr_Private_BST %tree_0 %239
+        %241 = OpLoad %BST %240
+               OpStore %currentNode %241
+        %242 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %243 = OpLoad %int %242
+        %244 = OpLoad %int %target
+        %245 = OpIEqual %bool %243 %244
+               OpSelectionMerge %246 None
+               OpBranchConditional %245 %247 %246
+        %247 = OpLabel
+        %248 = OpLoad %int %target
+               OpReturnValue %248
+        %246 = OpLabel
+        %249 = OpLoad %int %target
+        %250 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %251 = OpLoad %int %250
+        %252 = OpSGreaterThan %bool %249 %251
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %254 %255
+        %254 = OpLabel
+        %256 = OpAccessChain %_ptr_Function_int %currentNode %int_2
+        %257 = OpLoad %int %256
+               OpStore %231 %257
+               OpBranch %253
+        %255 = OpLabel
+        %258 = OpAccessChain %_ptr_Function_int %currentNode %int_1
+        %259 = OpLoad %int %258
+               OpStore %231 %259
+               OpBranch %253
+        %253 = OpLabel
+        %260 = OpLoad %int %231
+               OpStore %index %260
+               OpBranch %234
+        %234 = OpLabel
+               OpBranch %232
+        %233 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..d3b022e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.hlsl
@@ -0,0 +1,247 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static BST tree_1[10] = (BST[10])0;
+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 makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST tree, inout int data) {
+  const int x_169 = data;
+  tree.data = x_169;
+  tree.leftIndex = -1;
+  tree.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_178 = baseIndex;
+    const int x_179 = treeIndex;
+    if ((x_178 <= x_179)) {
+    } else {
+      break;
+    }
+    const int x_182 = data_1;
+    const int x_185 = tree_1[baseIndex].data;
+    if ((x_182 <= x_185)) {
+      const int x_192 = tree_1[baseIndex].leftIndex;
+      if ((x_192 == -1)) {
+        const int x_197 = baseIndex;
+        const int x_198 = treeIndex;
+        tree_1[x_197].leftIndex = x_198;
+        const int x_200 = treeIndex;
+        const BST x_202 = tree_1[x_200];
+        param = x_202;
+        const int x_203 = data_1;
+        param_1 = x_203;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree_1[x_200] = param;
+        return;
+      } else {
+        const int x_209 = tree_1[baseIndex].leftIndex;
+        baseIndex = x_209;
+        continue;
+      }
+      return;
+    } else {
+      const int x_212 = tree_1[baseIndex].rightIndex;
+      if ((x_212 == -1)) {
+        const int x_217 = baseIndex;
+        const int x_218 = treeIndex;
+        tree_1[x_217].rightIndex = x_218;
+        const int x_220 = treeIndex;
+        const BST x_222 = tree_1[x_220];
+        param_2 = x_222;
+        const int x_223 = data_1;
+        param_3 = x_223;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree_1[x_220] = param_2;
+        return;
+      } else {
+        const int x_229 = tree_1[baseIndex].rightIndex;
+        baseIndex = x_229;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_231 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_241 = tree_1[index];
+    currentNode = x_241;
+    const int x_243 = currentNode.data;
+    const int x_244 = target;
+    if ((x_243 == x_244)) {
+      const int x_248 = target;
+      return x_248;
+    }
+    const int x_249 = target;
+    const int x_251 = currentNode.data;
+    if ((x_249 > x_251)) {
+      const int x_257 = currentNode.rightIndex;
+      x_231 = x_257;
+    } else {
+      const int x_259 = currentNode.leftIndex;
+      x_231 = x_259;
+    }
+    index = x_231;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  const BST x_88 = tree_1[0];
+  param_4 = x_88;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree_1[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  count = 0;
+  i = 0;
+  {
+    for(; (i < 20); i = (i + 1)) {
+      bool x_155 = false;
+      bool x_156_phi = false;
+      param_24 = i;
+      const int x_136 = search_i1_(param_24);
+      result = x_136;
+      switch(i) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          const bool x_149 = (result == i);
+          x_156_phi = x_149;
+          if (!(x_149)) {
+            const float x_154 = gl_FragCoord.x;
+            x_155 = (x_154 < 0.0f);
+            x_156_phi = x_155;
+          }
+          if (x_156_phi) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.msl
new file mode 100644
index 0000000..80d83c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.msl
@@ -0,0 +1,293 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const tree, thread int* const data) {
+  int const x_169 = *(data);
+  (*(tree)).data = x_169;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper* const tint_symbol_5) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_178 = baseIndex;
+    int const x_179 = *(treeIndex);
+    if ((x_178 <= x_179)) {
+    } else {
+      break;
+    }
+    int const x_182 = *(data_1);
+    int const x_183 = baseIndex;
+    int const x_185 = (*(tint_symbol_5)).arr[x_183].data;
+    if ((x_182 <= x_185)) {
+      int const x_190 = baseIndex;
+      int const x_192 = (*(tint_symbol_5)).arr[x_190].leftIndex;
+      if ((x_192 == -1)) {
+        int const x_197 = baseIndex;
+        int const x_198 = *(treeIndex);
+        (*(tint_symbol_5)).arr[x_197].leftIndex = x_198;
+        int const x_200 = *(treeIndex);
+        BST const x_202 = (*(tint_symbol_5)).arr[x_200];
+        param = x_202;
+        int const x_203 = *(data_1);
+        param_1 = x_203;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_205 = param;
+        (*(tint_symbol_5)).arr[x_200] = x_205;
+        return;
+      } else {
+        int const x_207 = baseIndex;
+        int const x_209 = (*(tint_symbol_5)).arr[x_207].leftIndex;
+        baseIndex = x_209;
+        continue;
+      }
+      return;
+    } else {
+      int const x_210 = baseIndex;
+      int const x_212 = (*(tint_symbol_5)).arr[x_210].rightIndex;
+      if ((x_212 == -1)) {
+        int const x_217 = baseIndex;
+        int const x_218 = *(treeIndex);
+        (*(tint_symbol_5)).arr[x_217].rightIndex = x_218;
+        int const x_220 = *(treeIndex);
+        BST const x_222 = (*(tint_symbol_5)).arr[x_220];
+        param_2 = x_222;
+        int const x_223 = *(data_1);
+        param_3 = x_223;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_225 = param_2;
+        (*(tint_symbol_5)).arr[x_220] = x_225;
+        return;
+      } else {
+        int const x_227 = baseIndex;
+        int const x_229 = (*(tint_symbol_5)).arr[x_227].rightIndex;
+        baseIndex = x_229;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper* const tint_symbol_6) {
+  int index = 0;
+  BST currentNode = {};
+  int x_231 = 0;
+  index = 0;
+  while (true) {
+    int const x_236 = index;
+    if ((x_236 != -1)) {
+    } else {
+      break;
+    }
+    int const x_239 = index;
+    BST const x_241 = (*(tint_symbol_6)).arr[x_239];
+    currentNode = x_241;
+    int const x_243 = currentNode.data;
+    int const x_244 = *(target);
+    if ((x_243 == x_244)) {
+      int const x_248 = *(target);
+      return x_248;
+    }
+    int const x_249 = *(target);
+    int const x_251 = currentNode.data;
+    if ((x_249 > x_251)) {
+      int const x_257 = currentNode.rightIndex;
+      x_231 = x_257;
+    } else {
+      int const x_259 = currentNode.leftIndex;
+      x_231 = x_259;
+    }
+    int const x_260 = x_231;
+    index = x_260;
+  }
+  return -1;
+}
+
+void main_1(thread tint_array_wrapper* const tint_symbol_7, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  BST const x_88 = (*(tint_symbol_7)).arr[0];
+  param_4 = x_88;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_90 = param_4;
+  (*(tint_symbol_7)).arr[0] = x_90;
+  int const x_92 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  int const x_94 = treeIndex_1;
+  param_6 = x_94;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7), tint_symbol_7);
+  int const x_96 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  int const x_98 = treeIndex_1;
+  param_8 = x_98;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9), tint_symbol_7);
+  int const x_100 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  int const x_102 = treeIndex_1;
+  param_10 = x_102;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11), tint_symbol_7);
+  int const x_104 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  int const x_106 = treeIndex_1;
+  param_12 = x_106;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13), tint_symbol_7);
+  int const x_108 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  int const x_110 = treeIndex_1;
+  param_14 = x_110;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15), tint_symbol_7);
+  int const x_112 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  int const x_114 = treeIndex_1;
+  param_16 = x_114;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17), tint_symbol_7);
+  int const x_116 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  int const x_118 = treeIndex_1;
+  param_18 = x_118;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19), tint_symbol_7);
+  int const x_120 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  int const x_122 = treeIndex_1;
+  param_20 = x_122;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21), tint_symbol_7);
+  int const x_124 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  int const x_126 = treeIndex_1;
+  param_22 = x_126;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23), tint_symbol_7);
+  count = 0;
+  i = 0;
+  while (true) {
+    int const x_132 = i;
+    if ((x_132 < 20)) {
+    } else {
+      break;
+    }
+    bool x_155 = false;
+    bool x_156_phi = false;
+    int const x_135 = i;
+    param_24 = x_135;
+    int const x_136 = search_i1_(&(param_24), tint_symbol_7);
+    result = x_136;
+    int const x_137 = i;
+    switch(x_137) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_147 = result;
+        int const x_148 = i;
+        bool const x_149 = (x_147 == x_148);
+        x_156_phi = x_149;
+        if (!(x_149)) {
+          float const x_154 = (*(tint_symbol_8)).x;
+          x_155 = (x_154 < 0.0f);
+          x_156_phi = x_155;
+        }
+        bool const x_156 = x_156_phi;
+        if (x_156) {
+          int const x_159 = count;
+          count = (x_159 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_141 = result;
+        if ((x_141 == -1)) {
+          int const x_145 = count;
+          count = (x_145 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_161 = i;
+      i = (x_161 + 1);
+    }
+  }
+  int const x_163 = count;
+  if ((x_163 == 20)) {
+    *(tint_symbol_9) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_9) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread tint_array_wrapper tint_symbol_11 = {};
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(&(tint_symbol_11), &(tint_symbol_10), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..b62cb2f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.spvasm
@@ -0,0 +1,505 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 333
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree_1 "tree_1"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_231 "x_231"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_24 "param_24"
+               OpName %x_155 "x_155"
+               OpName %x_156_phi "x_156_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+     %tree_1 = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %39 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %45 = OpConstantNull %int
+         %47 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %125 = OpTypeFunction %int %_ptr_Function_int
+        %166 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+%_ptr_Function_bool = OpTypePointer Function %bool
+        %278 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %318 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %319 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %320 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %19
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %26 = OpLabel
+         %28 = OpLoad %int %data
+         %31 = OpAccessChain %_ptr_Function_int %tree %uint_0
+               OpStore %31 %28
+         %34 = OpAccessChain %_ptr_Function_int %tree %uint_1
+               OpStore %34 %int_n1
+         %38 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %38 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %39
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %43 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %45
+      %param = OpVariable %_ptr_Function_BST Function %47
+    %param_1 = OpVariable %_ptr_Function_int Function %45
+    %param_2 = OpVariable %_ptr_Function_BST Function %47
+    %param_3 = OpVariable %_ptr_Function_int Function %45
+               OpStore %baseIndex %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %baseIndex
+         %58 = OpLoad %int %treeIndex
+         %59 = OpSLessThanEqual %bool %56 %58
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %53
+         %61 = OpLabel
+         %65 = OpLoad %int %data_1
+         %66 = OpLoad %int %baseIndex
+         %68 = OpAccessChain %_ptr_Private_int %tree_1 %66 %uint_0
+         %69 = OpLoad %int %68
+         %70 = OpSLessThanEqual %bool %65 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %baseIndex
+         %75 = OpAccessChain %_ptr_Private_int %tree_1 %74 %uint_1
+         %76 = OpLoad %int %75
+         %77 = OpIEqual %bool %76 %int_n1
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpLoad %int %baseIndex
+         %83 = OpLoad %int %treeIndex
+         %84 = OpAccessChain %_ptr_Private_int %tree_1 %81 %uint_1
+               OpStore %84 %83
+         %86 = OpLoad %int %treeIndex
+         %88 = OpAccessChain %_ptr_Private_BST %tree_1 %86
+         %89 = OpLoad %BST %88
+               OpStore %param %89
+         %91 = OpLoad %int %data_1
+               OpStore %param_1 %91
+         %92 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+         %95 = OpLoad %BST %param
+         %96 = OpAccessChain %_ptr_Private_BST %tree_1 %86
+               OpStore %96 %95
+               OpReturn
+         %80 = OpLabel
+         %97 = OpLoad %int %baseIndex
+         %98 = OpAccessChain %_ptr_Private_int %tree_1 %97 %uint_1
+         %99 = OpLoad %int %98
+               OpStore %baseIndex %99
+               OpBranch %54
+         %78 = OpLabel
+               OpReturn
+         %73 = OpLabel
+        %100 = OpLoad %int %baseIndex
+        %101 = OpAccessChain %_ptr_Private_int %tree_1 %100 %uint_2
+        %102 = OpLoad %int %101
+        %103 = OpIEqual %bool %102 %int_n1
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+        %107 = OpLoad %int %baseIndex
+        %109 = OpLoad %int %treeIndex
+        %110 = OpAccessChain %_ptr_Private_int %tree_1 %107 %uint_2
+               OpStore %110 %109
+        %112 = OpLoad %int %treeIndex
+        %113 = OpAccessChain %_ptr_Private_BST %tree_1 %112
+        %114 = OpLoad %BST %113
+               OpStore %param_2 %114
+        %116 = OpLoad %int %data_1
+               OpStore %param_3 %116
+        %117 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %120 = OpLoad %BST %param_2
+        %121 = OpAccessChain %_ptr_Private_BST %tree_1 %112
+               OpStore %121 %120
+               OpReturn
+        %106 = OpLabel
+        %122 = OpLoad %int %baseIndex
+        %123 = OpAccessChain %_ptr_Private_int %tree_1 %122 %uint_2
+        %124 = OpLoad %int %123
+               OpStore %baseIndex %124
+               OpBranch %54
+        %104 = OpLabel
+               OpReturn
+         %71 = OpLabel
+               OpReturn
+         %54 = OpLabel
+               OpBranch %52
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %125
+     %target = OpFunctionParameter %_ptr_Function_int
+        %128 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %45
+%currentNode = OpVariable %_ptr_Function_BST Function %47
+      %x_231 = OpVariable %_ptr_Function_int Function %45
+               OpStore %index %int_0
+               OpBranch %132
+        %132 = OpLabel
+               OpLoopMerge %133 %134 None
+               OpBranch %135
+        %135 = OpLabel
+        %136 = OpLoad %int %index
+        %137 = OpINotEqual %bool %136 %int_n1
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %140
+        %139 = OpLabel
+               OpBranch %138
+        %140 = OpLabel
+               OpBranch %133
+        %138 = OpLabel
+        %141 = OpLoad %int %index
+        %142 = OpAccessChain %_ptr_Private_BST %tree_1 %141
+        %143 = OpLoad %BST %142
+               OpStore %currentNode %143
+        %144 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %145 = OpLoad %int %144
+        %147 = OpLoad %int %target
+        %148 = OpIEqual %bool %145 %147
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %149
+        %150 = OpLabel
+        %152 = OpLoad %int %target
+               OpReturnValue %152
+        %149 = OpLabel
+        %154 = OpLoad %int %target
+        %155 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %156 = OpLoad %int %155
+        %157 = OpSGreaterThan %bool %154 %156
+               OpSelectionMerge %158 None
+               OpBranchConditional %157 %159 %160
+        %159 = OpLabel
+        %161 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %162 = OpLoad %int %161
+               OpStore %x_231 %162
+               OpBranch %158
+        %160 = OpLabel
+        %163 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %164 = OpLoad %int %163
+               OpStore %x_231 %164
+               OpBranch %158
+        %158 = OpLabel
+        %165 = OpLoad %int %x_231
+               OpStore %index %165
+               OpBranch %134
+        %134 = OpLabel
+               OpBranch %132
+        %133 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %166
+        %168 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %45
+    %param_4 = OpVariable %_ptr_Function_BST Function %47
+    %param_5 = OpVariable %_ptr_Function_int Function %45
+    %param_6 = OpVariable %_ptr_Function_int Function %45
+    %param_7 = OpVariable %_ptr_Function_int Function %45
+    %param_8 = OpVariable %_ptr_Function_int Function %45
+    %param_9 = OpVariable %_ptr_Function_int Function %45
+   %param_10 = OpVariable %_ptr_Function_int Function %45
+   %param_11 = OpVariable %_ptr_Function_int Function %45
+   %param_12 = OpVariable %_ptr_Function_int Function %45
+   %param_13 = OpVariable %_ptr_Function_int Function %45
+   %param_14 = OpVariable %_ptr_Function_int Function %45
+   %param_15 = OpVariable %_ptr_Function_int Function %45
+   %param_16 = OpVariable %_ptr_Function_int Function %45
+   %param_17 = OpVariable %_ptr_Function_int Function %45
+   %param_18 = OpVariable %_ptr_Function_int Function %45
+   %param_19 = OpVariable %_ptr_Function_int Function %45
+   %param_20 = OpVariable %_ptr_Function_int Function %45
+   %param_21 = OpVariable %_ptr_Function_int Function %45
+   %param_22 = OpVariable %_ptr_Function_int Function %45
+   %param_23 = OpVariable %_ptr_Function_int Function %45
+      %count = OpVariable %_ptr_Function_int Function %45
+          %i = OpVariable %_ptr_Function_int Function %45
+     %result = OpVariable %_ptr_Function_int Function %45
+   %param_24 = OpVariable %_ptr_Function_int Function %45
+      %x_155 = OpVariable %_ptr_Function_bool Function %278
+  %x_156_phi = OpVariable %_ptr_Function_bool Function %278
+               OpStore %treeIndex_1 %int_0
+        %194 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+        %195 = OpLoad %BST %194
+               OpStore %param_4 %195
+               OpStore %param_5 %int_9
+        %197 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %200 = OpLoad %BST %param_4
+        %201 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+               OpStore %201 %200
+        %202 = OpLoad %int %treeIndex_1
+        %204 = OpIAdd %int %202 %int_1
+               OpStore %treeIndex_1 %204
+        %205 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %205
+               OpStore %param_7 %int_5
+        %207 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %210 = OpLoad %int %treeIndex_1
+        %211 = OpIAdd %int %210 %int_1
+               OpStore %treeIndex_1 %211
+        %212 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %212
+               OpStore %param_9 %int_12
+        %214 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %217 = OpLoad %int %treeIndex_1
+        %218 = OpIAdd %int %217 %int_1
+               OpStore %treeIndex_1 %218
+        %219 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %219
+               OpStore %param_11 %int_15
+        %221 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %224 = OpLoad %int %treeIndex_1
+        %225 = OpIAdd %int %224 %int_1
+               OpStore %treeIndex_1 %225
+        %226 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %226
+               OpStore %param_13 %int_7
+        %228 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %231 = OpLoad %int %treeIndex_1
+        %232 = OpIAdd %int %231 %int_1
+               OpStore %treeIndex_1 %232
+        %233 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %233
+               OpStore %param_15 %int_8
+        %235 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %238 = OpLoad %int %treeIndex_1
+        %239 = OpIAdd %int %238 %int_1
+               OpStore %treeIndex_1 %239
+        %240 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %240
+               OpStore %param_17 %int_2
+        %242 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %245 = OpLoad %int %treeIndex_1
+        %246 = OpIAdd %int %245 %int_1
+               OpStore %treeIndex_1 %246
+        %247 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %247
+               OpStore %param_19 %int_6
+        %249 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %252 = OpLoad %int %treeIndex_1
+        %253 = OpIAdd %int %252 %int_1
+               OpStore %treeIndex_1 %253
+        %254 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %254
+               OpStore %param_21 %int_17
+        %256 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %259 = OpLoad %int %treeIndex_1
+        %260 = OpIAdd %int %259 %int_1
+               OpStore %treeIndex_1 %260
+        %261 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %261
+               OpStore %param_23 %int_13
+        %263 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %266
+        %266 = OpLabel
+               OpLoopMerge %267 %268 None
+               OpBranch %269
+        %269 = OpLabel
+        %270 = OpLoad %int %i
+        %272 = OpSLessThan %bool %270 %int_20
+               OpSelectionMerge %273 None
+               OpBranchConditional %272 %274 %275
+        %274 = OpLabel
+               OpBranch %273
+        %275 = OpLabel
+               OpBranch %267
+        %273 = OpLabel
+        %280 = OpLoad %int %i
+               OpStore %param_24 %280
+        %281 = OpFunctionCall %int %search_i1_ %param_24
+               OpStore %result %281
+        %283 = OpLoad %int %i
+               OpSelectionMerge %284 None
+               OpSwitch %283 %285 2 %286 5 %286 6 %286 7 %286 8 %286 9 %286 12 %286 13 %286 15 %286 17 %286
+        %286 = OpLabel
+        %287 = OpLoad %int %result
+        %288 = OpLoad %int %i
+        %289 = OpIEqual %bool %287 %288
+               OpStore %x_156_phi %289
+        %290 = OpLogicalNot %bool %289
+               OpSelectionMerge %291 None
+               OpBranchConditional %290 %292 %291
+        %292 = OpLabel
+        %294 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %295 = OpLoad %float %294
+        %297 = OpFOrdLessThan %bool %295 %float_0
+               OpStore %x_155 %297
+        %298 = OpLoad %bool %x_155
+               OpStore %x_156_phi %298
+               OpBranch %291
+        %291 = OpLabel
+        %299 = OpLoad %bool %x_156_phi
+               OpSelectionMerge %300 None
+               OpBranchConditional %299 %301 %300
+        %301 = OpLabel
+        %302 = OpLoad %int %count
+        %303 = OpIAdd %int %302 %int_1
+               OpStore %count %303
+               OpBranch %300
+        %300 = OpLabel
+               OpBranch %284
+        %285 = OpLabel
+        %304 = OpLoad %int %result
+        %305 = OpIEqual %bool %304 %int_n1
+               OpSelectionMerge %306 None
+               OpBranchConditional %305 %307 %306
+        %307 = OpLabel
+        %308 = OpLoad %int %count
+        %309 = OpIAdd %int %308 %int_1
+               OpStore %count %309
+               OpBranch %306
+        %306 = OpLabel
+               OpBranch %284
+        %284 = OpLabel
+               OpBranch %268
+        %268 = OpLabel
+        %310 = OpLoad %int %i
+        %311 = OpIAdd %int %310 %int_1
+               OpStore %i %311
+               OpBranch %266
+        %267 = OpLabel
+        %312 = OpLoad %int %count
+        %313 = OpIEqual %bool %312 %int_20
+               OpSelectionMerge %314 None
+               OpBranchConditional %313 %315 %316
+        %315 = OpLabel
+               OpStore %x_GLF_color %318
+               OpBranch %314
+        %316 = OpLabel
+               OpStore %x_GLF_color %319
+               OpBranch %314
+        %314 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %320
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %324 = OpLabel
+        %325 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %325
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %166
+        %327 = OpLabel
+        %328 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %328
+        %329 = OpFunctionCall %void %main_1
+        %331 = OpLoad %v4float %x_GLF_color
+        %332 = OpCompositeConstruct %main_out %331
+        %330 = OpFunctionCall %void %tint_symbol_3 %332
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..4d268f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.wgsl
@@ -0,0 +1,277 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_169 : i32 = *(data);
+  (*(tree)).data = x_169;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_178 : i32 = baseIndex;
+    let x_179 : i32 = *(treeIndex);
+    if ((x_178 <= x_179)) {
+    } else {
+      break;
+    }
+    let x_182 : i32 = *(data_1);
+    let x_183 : i32 = baseIndex;
+    let x_185 : i32 = tree_1[x_183].data;
+    if ((x_182 <= x_185)) {
+      let x_190 : i32 = baseIndex;
+      let x_192 : i32 = tree_1[x_190].leftIndex;
+      if ((x_192 == -1)) {
+        let x_197 : i32 = baseIndex;
+        let x_198 : i32 = *(treeIndex);
+        tree_1[x_197].leftIndex = x_198;
+        let x_200 : i32 = *(treeIndex);
+        let x_202 : BST = tree_1[x_200];
+        param = x_202;
+        let x_203 : i32 = *(data_1);
+        param_1 = x_203;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_205 : BST = param;
+        tree_1[x_200] = x_205;
+        return;
+      } else {
+        let x_207 : i32 = baseIndex;
+        let x_209 : i32 = tree_1[x_207].leftIndex;
+        baseIndex = x_209;
+        continue;
+      }
+      return;
+    } else {
+      let x_210 : i32 = baseIndex;
+      let x_212 : i32 = tree_1[x_210].rightIndex;
+      if ((x_212 == -1)) {
+        let x_217 : i32 = baseIndex;
+        let x_218 : i32 = *(treeIndex);
+        tree_1[x_217].rightIndex = x_218;
+        let x_220 : i32 = *(treeIndex);
+        let x_222 : BST = tree_1[x_220];
+        param_2 = x_222;
+        let x_223 : i32 = *(data_1);
+        param_3 = x_223;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_225 : BST = param_2;
+        tree_1[x_220] = x_225;
+        return;
+      } else {
+        let x_227 : i32 = baseIndex;
+        let x_229 : i32 = tree_1[x_227].rightIndex;
+        baseIndex = x_229;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_231 : i32;
+  index = 0;
+  loop {
+    let x_236 : i32 = index;
+    if ((x_236 != -1)) {
+    } else {
+      break;
+    }
+    let x_239 : i32 = index;
+    let x_241 : BST = tree_1[x_239];
+    currentNode = x_241;
+    let x_243 : i32 = currentNode.data;
+    let x_244 : i32 = *(target);
+    if ((x_243 == x_244)) {
+      let x_248 : i32 = *(target);
+      return x_248;
+    }
+    let x_249 : i32 = *(target);
+    let x_251 : i32 = currentNode.data;
+    if ((x_249 > x_251)) {
+      let x_257 : i32 = currentNode.rightIndex;
+      x_231 = x_257;
+    } else {
+      let x_259 : i32 = currentNode.leftIndex;
+      x_231 = x_259;
+    }
+    let x_260 : i32 = x_231;
+    index = x_260;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_88 : BST = tree_1[0];
+  param_4 = x_88;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_90 : BST = param_4;
+  tree_1[0] = x_90;
+  let x_92 : i32 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  let x_94 : i32 = treeIndex_1;
+  param_6 = x_94;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_96 : i32 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  let x_98 : i32 = treeIndex_1;
+  param_8 = x_98;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_100 : i32 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  let x_102 : i32 = treeIndex_1;
+  param_10 = x_102;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_104 : i32 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  let x_106 : i32 = treeIndex_1;
+  param_12 = x_106;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_108 : i32 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  let x_110 : i32 = treeIndex_1;
+  param_14 = x_110;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_112 : i32 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  let x_114 : i32 = treeIndex_1;
+  param_16 = x_114;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  let x_118 : i32 = treeIndex_1;
+  param_18 = x_118;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_120 : i32 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  let x_122 : i32 = treeIndex_1;
+  param_20 = x_122;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_124 : i32 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  let x_126 : i32 = treeIndex_1;
+  param_22 = x_126;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_132 : i32 = i;
+    if ((x_132 < 20)) {
+    } else {
+      break;
+    }
+    var x_155 : bool;
+    var x_156_phi : bool;
+    let x_135 : i32 = i;
+    param_24 = x_135;
+    let x_136 : i32 = search_i1_(&(param_24));
+    result = x_136;
+    let x_137 : i32 = i;
+    switch(x_137) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_147 : i32 = result;
+        let x_148 : i32 = i;
+        let x_149 : bool = (x_147 == x_148);
+        x_156_phi = x_149;
+        if (!(x_149)) {
+          let x_154 : f32 = gl_FragCoord.x;
+          x_155 = (x_154 < 0.0);
+          x_156_phi = x_155;
+        }
+        let x_156 : bool = x_156_phi;
+        if (x_156) {
+          let x_159 : i32 = count;
+          count = (x_159 + 1);
+        }
+      }
+      default: {
+        let x_141 : i32 = result;
+        if ((x_141 == -1)) {
+          let x_145 : i32 = count;
+          count = (x_145 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_161 : i32 = i;
+      i = (x_161 + 1);
+    }
+  }
+  let x_163 : i32 = count;
+  if ((x_163 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
new file mode 100644
index 0000000..4d268f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
@@ -0,0 +1,277 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_169 : i32 = *(data);
+  (*(tree)).data = x_169;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_178 : i32 = baseIndex;
+    let x_179 : i32 = *(treeIndex);
+    if ((x_178 <= x_179)) {
+    } else {
+      break;
+    }
+    let x_182 : i32 = *(data_1);
+    let x_183 : i32 = baseIndex;
+    let x_185 : i32 = tree_1[x_183].data;
+    if ((x_182 <= x_185)) {
+      let x_190 : i32 = baseIndex;
+      let x_192 : i32 = tree_1[x_190].leftIndex;
+      if ((x_192 == -1)) {
+        let x_197 : i32 = baseIndex;
+        let x_198 : i32 = *(treeIndex);
+        tree_1[x_197].leftIndex = x_198;
+        let x_200 : i32 = *(treeIndex);
+        let x_202 : BST = tree_1[x_200];
+        param = x_202;
+        let x_203 : i32 = *(data_1);
+        param_1 = x_203;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_205 : BST = param;
+        tree_1[x_200] = x_205;
+        return;
+      } else {
+        let x_207 : i32 = baseIndex;
+        let x_209 : i32 = tree_1[x_207].leftIndex;
+        baseIndex = x_209;
+        continue;
+      }
+      return;
+    } else {
+      let x_210 : i32 = baseIndex;
+      let x_212 : i32 = tree_1[x_210].rightIndex;
+      if ((x_212 == -1)) {
+        let x_217 : i32 = baseIndex;
+        let x_218 : i32 = *(treeIndex);
+        tree_1[x_217].rightIndex = x_218;
+        let x_220 : i32 = *(treeIndex);
+        let x_222 : BST = tree_1[x_220];
+        param_2 = x_222;
+        let x_223 : i32 = *(data_1);
+        param_3 = x_223;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_225 : BST = param_2;
+        tree_1[x_220] = x_225;
+        return;
+      } else {
+        let x_227 : i32 = baseIndex;
+        let x_229 : i32 = tree_1[x_227].rightIndex;
+        baseIndex = x_229;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_231 : i32;
+  index = 0;
+  loop {
+    let x_236 : i32 = index;
+    if ((x_236 != -1)) {
+    } else {
+      break;
+    }
+    let x_239 : i32 = index;
+    let x_241 : BST = tree_1[x_239];
+    currentNode = x_241;
+    let x_243 : i32 = currentNode.data;
+    let x_244 : i32 = *(target);
+    if ((x_243 == x_244)) {
+      let x_248 : i32 = *(target);
+      return x_248;
+    }
+    let x_249 : i32 = *(target);
+    let x_251 : i32 = currentNode.data;
+    if ((x_249 > x_251)) {
+      let x_257 : i32 = currentNode.rightIndex;
+      x_231 = x_257;
+    } else {
+      let x_259 : i32 = currentNode.leftIndex;
+      x_231 = x_259;
+    }
+    let x_260 : i32 = x_231;
+    index = x_260;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_88 : BST = tree_1[0];
+  param_4 = x_88;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_90 : BST = param_4;
+  tree_1[0] = x_90;
+  let x_92 : i32 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  let x_94 : i32 = treeIndex_1;
+  param_6 = x_94;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_96 : i32 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  let x_98 : i32 = treeIndex_1;
+  param_8 = x_98;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_100 : i32 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  let x_102 : i32 = treeIndex_1;
+  param_10 = x_102;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_104 : i32 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  let x_106 : i32 = treeIndex_1;
+  param_12 = x_106;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_108 : i32 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  let x_110 : i32 = treeIndex_1;
+  param_14 = x_110;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_112 : i32 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  let x_114 : i32 = treeIndex_1;
+  param_16 = x_114;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  let x_118 : i32 = treeIndex_1;
+  param_18 = x_118;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_120 : i32 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  let x_122 : i32 = treeIndex_1;
+  param_20 = x_122;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_124 : i32 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  let x_126 : i32 = treeIndex_1;
+  param_22 = x_126;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_132 : i32 = i;
+    if ((x_132 < 20)) {
+    } else {
+      break;
+    }
+    var x_155 : bool;
+    var x_156_phi : bool;
+    let x_135 : i32 = i;
+    param_24 = x_135;
+    let x_136 : i32 = search_i1_(&(param_24));
+    result = x_136;
+    let x_137 : i32 = i;
+    switch(x_137) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_147 : i32 = result;
+        let x_148 : i32 = i;
+        let x_149 : bool = (x_147 == x_148);
+        x_156_phi = x_149;
+        if (!(x_149)) {
+          let x_154 : f32 = gl_FragCoord.x;
+          x_155 = (x_154 < 0.0);
+          x_156_phi = x_155;
+        }
+        let x_156 : bool = x_156_phi;
+        if (x_156) {
+          let x_159 : i32 = count;
+          count = (x_159 + 1);
+        }
+      }
+      default: {
+        let x_141 : i32 = result;
+        if ((x_141 == -1)) {
+          let x_145 : i32 = count;
+          count = (x_145 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_161 : i32 = i;
+      i = (x_161 + 1);
+    }
+  }
+  let x_163 : i32 = count;
+  if ((x_163 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..d3b022e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.hlsl
@@ -0,0 +1,247 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static BST tree_1[10] = (BST[10])0;
+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 makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST tree, inout int data) {
+  const int x_169 = data;
+  tree.data = x_169;
+  tree.leftIndex = -1;
+  tree.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_178 = baseIndex;
+    const int x_179 = treeIndex;
+    if ((x_178 <= x_179)) {
+    } else {
+      break;
+    }
+    const int x_182 = data_1;
+    const int x_185 = tree_1[baseIndex].data;
+    if ((x_182 <= x_185)) {
+      const int x_192 = tree_1[baseIndex].leftIndex;
+      if ((x_192 == -1)) {
+        const int x_197 = baseIndex;
+        const int x_198 = treeIndex;
+        tree_1[x_197].leftIndex = x_198;
+        const int x_200 = treeIndex;
+        const BST x_202 = tree_1[x_200];
+        param = x_202;
+        const int x_203 = data_1;
+        param_1 = x_203;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree_1[x_200] = param;
+        return;
+      } else {
+        const int x_209 = tree_1[baseIndex].leftIndex;
+        baseIndex = x_209;
+        continue;
+      }
+      return;
+    } else {
+      const int x_212 = tree_1[baseIndex].rightIndex;
+      if ((x_212 == -1)) {
+        const int x_217 = baseIndex;
+        const int x_218 = treeIndex;
+        tree_1[x_217].rightIndex = x_218;
+        const int x_220 = treeIndex;
+        const BST x_222 = tree_1[x_220];
+        param_2 = x_222;
+        const int x_223 = data_1;
+        param_3 = x_223;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree_1[x_220] = param_2;
+        return;
+      } else {
+        const int x_229 = tree_1[baseIndex].rightIndex;
+        baseIndex = x_229;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_231 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_241 = tree_1[index];
+    currentNode = x_241;
+    const int x_243 = currentNode.data;
+    const int x_244 = target;
+    if ((x_243 == x_244)) {
+      const int x_248 = target;
+      return x_248;
+    }
+    const int x_249 = target;
+    const int x_251 = currentNode.data;
+    if ((x_249 > x_251)) {
+      const int x_257 = currentNode.rightIndex;
+      x_231 = x_257;
+    } else {
+      const int x_259 = currentNode.leftIndex;
+      x_231 = x_259;
+    }
+    index = x_231;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  const BST x_88 = tree_1[0];
+  param_4 = x_88;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree_1[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  count = 0;
+  i = 0;
+  {
+    for(; (i < 20); i = (i + 1)) {
+      bool x_155 = false;
+      bool x_156_phi = false;
+      param_24 = i;
+      const int x_136 = search_i1_(param_24);
+      result = x_136;
+      switch(i) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          const bool x_149 = (result == i);
+          x_156_phi = x_149;
+          if (!(x_149)) {
+            const float x_154 = gl_FragCoord.x;
+            x_155 = (x_154 < 0.0f);
+            x_156_phi = x_155;
+          }
+          if (x_156_phi) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.msl
new file mode 100644
index 0000000..80d83c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.msl
@@ -0,0 +1,293 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const tree, thread int* const data) {
+  int const x_169 = *(data);
+  (*(tree)).data = x_169;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper* const tint_symbol_5) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_178 = baseIndex;
+    int const x_179 = *(treeIndex);
+    if ((x_178 <= x_179)) {
+    } else {
+      break;
+    }
+    int const x_182 = *(data_1);
+    int const x_183 = baseIndex;
+    int const x_185 = (*(tint_symbol_5)).arr[x_183].data;
+    if ((x_182 <= x_185)) {
+      int const x_190 = baseIndex;
+      int const x_192 = (*(tint_symbol_5)).arr[x_190].leftIndex;
+      if ((x_192 == -1)) {
+        int const x_197 = baseIndex;
+        int const x_198 = *(treeIndex);
+        (*(tint_symbol_5)).arr[x_197].leftIndex = x_198;
+        int const x_200 = *(treeIndex);
+        BST const x_202 = (*(tint_symbol_5)).arr[x_200];
+        param = x_202;
+        int const x_203 = *(data_1);
+        param_1 = x_203;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_205 = param;
+        (*(tint_symbol_5)).arr[x_200] = x_205;
+        return;
+      } else {
+        int const x_207 = baseIndex;
+        int const x_209 = (*(tint_symbol_5)).arr[x_207].leftIndex;
+        baseIndex = x_209;
+        continue;
+      }
+      return;
+    } else {
+      int const x_210 = baseIndex;
+      int const x_212 = (*(tint_symbol_5)).arr[x_210].rightIndex;
+      if ((x_212 == -1)) {
+        int const x_217 = baseIndex;
+        int const x_218 = *(treeIndex);
+        (*(tint_symbol_5)).arr[x_217].rightIndex = x_218;
+        int const x_220 = *(treeIndex);
+        BST const x_222 = (*(tint_symbol_5)).arr[x_220];
+        param_2 = x_222;
+        int const x_223 = *(data_1);
+        param_3 = x_223;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_225 = param_2;
+        (*(tint_symbol_5)).arr[x_220] = x_225;
+        return;
+      } else {
+        int const x_227 = baseIndex;
+        int const x_229 = (*(tint_symbol_5)).arr[x_227].rightIndex;
+        baseIndex = x_229;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper* const tint_symbol_6) {
+  int index = 0;
+  BST currentNode = {};
+  int x_231 = 0;
+  index = 0;
+  while (true) {
+    int const x_236 = index;
+    if ((x_236 != -1)) {
+    } else {
+      break;
+    }
+    int const x_239 = index;
+    BST const x_241 = (*(tint_symbol_6)).arr[x_239];
+    currentNode = x_241;
+    int const x_243 = currentNode.data;
+    int const x_244 = *(target);
+    if ((x_243 == x_244)) {
+      int const x_248 = *(target);
+      return x_248;
+    }
+    int const x_249 = *(target);
+    int const x_251 = currentNode.data;
+    if ((x_249 > x_251)) {
+      int const x_257 = currentNode.rightIndex;
+      x_231 = x_257;
+    } else {
+      int const x_259 = currentNode.leftIndex;
+      x_231 = x_259;
+    }
+    int const x_260 = x_231;
+    index = x_260;
+  }
+  return -1;
+}
+
+void main_1(thread tint_array_wrapper* const tint_symbol_7, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  BST const x_88 = (*(tint_symbol_7)).arr[0];
+  param_4 = x_88;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_90 = param_4;
+  (*(tint_symbol_7)).arr[0] = x_90;
+  int const x_92 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  int const x_94 = treeIndex_1;
+  param_6 = x_94;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7), tint_symbol_7);
+  int const x_96 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  int const x_98 = treeIndex_1;
+  param_8 = x_98;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9), tint_symbol_7);
+  int const x_100 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  int const x_102 = treeIndex_1;
+  param_10 = x_102;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11), tint_symbol_7);
+  int const x_104 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  int const x_106 = treeIndex_1;
+  param_12 = x_106;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13), tint_symbol_7);
+  int const x_108 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  int const x_110 = treeIndex_1;
+  param_14 = x_110;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15), tint_symbol_7);
+  int const x_112 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  int const x_114 = treeIndex_1;
+  param_16 = x_114;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17), tint_symbol_7);
+  int const x_116 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  int const x_118 = treeIndex_1;
+  param_18 = x_118;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19), tint_symbol_7);
+  int const x_120 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  int const x_122 = treeIndex_1;
+  param_20 = x_122;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21), tint_symbol_7);
+  int const x_124 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  int const x_126 = treeIndex_1;
+  param_22 = x_126;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23), tint_symbol_7);
+  count = 0;
+  i = 0;
+  while (true) {
+    int const x_132 = i;
+    if ((x_132 < 20)) {
+    } else {
+      break;
+    }
+    bool x_155 = false;
+    bool x_156_phi = false;
+    int const x_135 = i;
+    param_24 = x_135;
+    int const x_136 = search_i1_(&(param_24), tint_symbol_7);
+    result = x_136;
+    int const x_137 = i;
+    switch(x_137) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_147 = result;
+        int const x_148 = i;
+        bool const x_149 = (x_147 == x_148);
+        x_156_phi = x_149;
+        if (!(x_149)) {
+          float const x_154 = (*(tint_symbol_8)).x;
+          x_155 = (x_154 < 0.0f);
+          x_156_phi = x_155;
+        }
+        bool const x_156 = x_156_phi;
+        if (x_156) {
+          int const x_159 = count;
+          count = (x_159 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_141 = result;
+        if ((x_141 == -1)) {
+          int const x_145 = count;
+          count = (x_145 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_161 = i;
+      i = (x_161 + 1);
+    }
+  }
+  int const x_163 = count;
+  if ((x_163 == 20)) {
+    *(tint_symbol_9) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_9) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread tint_array_wrapper tint_symbol_11 = {};
+  thread float4 tint_symbol_12 = 0.0f;
+  tint_symbol_10 = gl_FragCoord_param;
+  main_1(&(tint_symbol_11), &(tint_symbol_10), &(tint_symbol_12));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..b62cb2f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.spvasm
@@ -0,0 +1,505 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 333
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree_1 "tree_1"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_231 "x_231"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_24 "param_24"
+               OpName %x_155 "x_155"
+               OpName %x_156_phi "x_156_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+     %tree_1 = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %39 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %45 = OpConstantNull %int
+         %47 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %125 = OpTypeFunction %int %_ptr_Function_int
+        %166 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+%_ptr_Function_bool = OpTypePointer Function %bool
+        %278 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %318 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %319 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %320 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %19
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %26 = OpLabel
+         %28 = OpLoad %int %data
+         %31 = OpAccessChain %_ptr_Function_int %tree %uint_0
+               OpStore %31 %28
+         %34 = OpAccessChain %_ptr_Function_int %tree %uint_1
+               OpStore %34 %int_n1
+         %38 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %38 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %39
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %43 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %45
+      %param = OpVariable %_ptr_Function_BST Function %47
+    %param_1 = OpVariable %_ptr_Function_int Function %45
+    %param_2 = OpVariable %_ptr_Function_BST Function %47
+    %param_3 = OpVariable %_ptr_Function_int Function %45
+               OpStore %baseIndex %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %baseIndex
+         %58 = OpLoad %int %treeIndex
+         %59 = OpSLessThanEqual %bool %56 %58
+               OpSelectionMerge %61 None
+               OpBranchConditional %59 %62 %63
+         %62 = OpLabel
+               OpBranch %61
+         %63 = OpLabel
+               OpBranch %53
+         %61 = OpLabel
+         %65 = OpLoad %int %data_1
+         %66 = OpLoad %int %baseIndex
+         %68 = OpAccessChain %_ptr_Private_int %tree_1 %66 %uint_0
+         %69 = OpLoad %int %68
+         %70 = OpSLessThanEqual %bool %65 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %baseIndex
+         %75 = OpAccessChain %_ptr_Private_int %tree_1 %74 %uint_1
+         %76 = OpLoad %int %75
+         %77 = OpIEqual %bool %76 %int_n1
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+         %81 = OpLoad %int %baseIndex
+         %83 = OpLoad %int %treeIndex
+         %84 = OpAccessChain %_ptr_Private_int %tree_1 %81 %uint_1
+               OpStore %84 %83
+         %86 = OpLoad %int %treeIndex
+         %88 = OpAccessChain %_ptr_Private_BST %tree_1 %86
+         %89 = OpLoad %BST %88
+               OpStore %param %89
+         %91 = OpLoad %int %data_1
+               OpStore %param_1 %91
+         %92 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+         %95 = OpLoad %BST %param
+         %96 = OpAccessChain %_ptr_Private_BST %tree_1 %86
+               OpStore %96 %95
+               OpReturn
+         %80 = OpLabel
+         %97 = OpLoad %int %baseIndex
+         %98 = OpAccessChain %_ptr_Private_int %tree_1 %97 %uint_1
+         %99 = OpLoad %int %98
+               OpStore %baseIndex %99
+               OpBranch %54
+         %78 = OpLabel
+               OpReturn
+         %73 = OpLabel
+        %100 = OpLoad %int %baseIndex
+        %101 = OpAccessChain %_ptr_Private_int %tree_1 %100 %uint_2
+        %102 = OpLoad %int %101
+        %103 = OpIEqual %bool %102 %int_n1
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %106
+        %105 = OpLabel
+        %107 = OpLoad %int %baseIndex
+        %109 = OpLoad %int %treeIndex
+        %110 = OpAccessChain %_ptr_Private_int %tree_1 %107 %uint_2
+               OpStore %110 %109
+        %112 = OpLoad %int %treeIndex
+        %113 = OpAccessChain %_ptr_Private_BST %tree_1 %112
+        %114 = OpLoad %BST %113
+               OpStore %param_2 %114
+        %116 = OpLoad %int %data_1
+               OpStore %param_3 %116
+        %117 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %120 = OpLoad %BST %param_2
+        %121 = OpAccessChain %_ptr_Private_BST %tree_1 %112
+               OpStore %121 %120
+               OpReturn
+        %106 = OpLabel
+        %122 = OpLoad %int %baseIndex
+        %123 = OpAccessChain %_ptr_Private_int %tree_1 %122 %uint_2
+        %124 = OpLoad %int %123
+               OpStore %baseIndex %124
+               OpBranch %54
+        %104 = OpLabel
+               OpReturn
+         %71 = OpLabel
+               OpReturn
+         %54 = OpLabel
+               OpBranch %52
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %125
+     %target = OpFunctionParameter %_ptr_Function_int
+        %128 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %45
+%currentNode = OpVariable %_ptr_Function_BST Function %47
+      %x_231 = OpVariable %_ptr_Function_int Function %45
+               OpStore %index %int_0
+               OpBranch %132
+        %132 = OpLabel
+               OpLoopMerge %133 %134 None
+               OpBranch %135
+        %135 = OpLabel
+        %136 = OpLoad %int %index
+        %137 = OpINotEqual %bool %136 %int_n1
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %140
+        %139 = OpLabel
+               OpBranch %138
+        %140 = OpLabel
+               OpBranch %133
+        %138 = OpLabel
+        %141 = OpLoad %int %index
+        %142 = OpAccessChain %_ptr_Private_BST %tree_1 %141
+        %143 = OpLoad %BST %142
+               OpStore %currentNode %143
+        %144 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %145 = OpLoad %int %144
+        %147 = OpLoad %int %target
+        %148 = OpIEqual %bool %145 %147
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %149
+        %150 = OpLabel
+        %152 = OpLoad %int %target
+               OpReturnValue %152
+        %149 = OpLabel
+        %154 = OpLoad %int %target
+        %155 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %156 = OpLoad %int %155
+        %157 = OpSGreaterThan %bool %154 %156
+               OpSelectionMerge %158 None
+               OpBranchConditional %157 %159 %160
+        %159 = OpLabel
+        %161 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %162 = OpLoad %int %161
+               OpStore %x_231 %162
+               OpBranch %158
+        %160 = OpLabel
+        %163 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %164 = OpLoad %int %163
+               OpStore %x_231 %164
+               OpBranch %158
+        %158 = OpLabel
+        %165 = OpLoad %int %x_231
+               OpStore %index %165
+               OpBranch %134
+        %134 = OpLabel
+               OpBranch %132
+        %133 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %166
+        %168 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %45
+    %param_4 = OpVariable %_ptr_Function_BST Function %47
+    %param_5 = OpVariable %_ptr_Function_int Function %45
+    %param_6 = OpVariable %_ptr_Function_int Function %45
+    %param_7 = OpVariable %_ptr_Function_int Function %45
+    %param_8 = OpVariable %_ptr_Function_int Function %45
+    %param_9 = OpVariable %_ptr_Function_int Function %45
+   %param_10 = OpVariable %_ptr_Function_int Function %45
+   %param_11 = OpVariable %_ptr_Function_int Function %45
+   %param_12 = OpVariable %_ptr_Function_int Function %45
+   %param_13 = OpVariable %_ptr_Function_int Function %45
+   %param_14 = OpVariable %_ptr_Function_int Function %45
+   %param_15 = OpVariable %_ptr_Function_int Function %45
+   %param_16 = OpVariable %_ptr_Function_int Function %45
+   %param_17 = OpVariable %_ptr_Function_int Function %45
+   %param_18 = OpVariable %_ptr_Function_int Function %45
+   %param_19 = OpVariable %_ptr_Function_int Function %45
+   %param_20 = OpVariable %_ptr_Function_int Function %45
+   %param_21 = OpVariable %_ptr_Function_int Function %45
+   %param_22 = OpVariable %_ptr_Function_int Function %45
+   %param_23 = OpVariable %_ptr_Function_int Function %45
+      %count = OpVariable %_ptr_Function_int Function %45
+          %i = OpVariable %_ptr_Function_int Function %45
+     %result = OpVariable %_ptr_Function_int Function %45
+   %param_24 = OpVariable %_ptr_Function_int Function %45
+      %x_155 = OpVariable %_ptr_Function_bool Function %278
+  %x_156_phi = OpVariable %_ptr_Function_bool Function %278
+               OpStore %treeIndex_1 %int_0
+        %194 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+        %195 = OpLoad %BST %194
+               OpStore %param_4 %195
+               OpStore %param_5 %int_9
+        %197 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %200 = OpLoad %BST %param_4
+        %201 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+               OpStore %201 %200
+        %202 = OpLoad %int %treeIndex_1
+        %204 = OpIAdd %int %202 %int_1
+               OpStore %treeIndex_1 %204
+        %205 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %205
+               OpStore %param_7 %int_5
+        %207 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %210 = OpLoad %int %treeIndex_1
+        %211 = OpIAdd %int %210 %int_1
+               OpStore %treeIndex_1 %211
+        %212 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %212
+               OpStore %param_9 %int_12
+        %214 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %217 = OpLoad %int %treeIndex_1
+        %218 = OpIAdd %int %217 %int_1
+               OpStore %treeIndex_1 %218
+        %219 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %219
+               OpStore %param_11 %int_15
+        %221 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %224 = OpLoad %int %treeIndex_1
+        %225 = OpIAdd %int %224 %int_1
+               OpStore %treeIndex_1 %225
+        %226 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %226
+               OpStore %param_13 %int_7
+        %228 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %231 = OpLoad %int %treeIndex_1
+        %232 = OpIAdd %int %231 %int_1
+               OpStore %treeIndex_1 %232
+        %233 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %233
+               OpStore %param_15 %int_8
+        %235 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %238 = OpLoad %int %treeIndex_1
+        %239 = OpIAdd %int %238 %int_1
+               OpStore %treeIndex_1 %239
+        %240 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %240
+               OpStore %param_17 %int_2
+        %242 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %245 = OpLoad %int %treeIndex_1
+        %246 = OpIAdd %int %245 %int_1
+               OpStore %treeIndex_1 %246
+        %247 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %247
+               OpStore %param_19 %int_6
+        %249 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %252 = OpLoad %int %treeIndex_1
+        %253 = OpIAdd %int %252 %int_1
+               OpStore %treeIndex_1 %253
+        %254 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %254
+               OpStore %param_21 %int_17
+        %256 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %259 = OpLoad %int %treeIndex_1
+        %260 = OpIAdd %int %259 %int_1
+               OpStore %treeIndex_1 %260
+        %261 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %261
+               OpStore %param_23 %int_13
+        %263 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %266
+        %266 = OpLabel
+               OpLoopMerge %267 %268 None
+               OpBranch %269
+        %269 = OpLabel
+        %270 = OpLoad %int %i
+        %272 = OpSLessThan %bool %270 %int_20
+               OpSelectionMerge %273 None
+               OpBranchConditional %272 %274 %275
+        %274 = OpLabel
+               OpBranch %273
+        %275 = OpLabel
+               OpBranch %267
+        %273 = OpLabel
+        %280 = OpLoad %int %i
+               OpStore %param_24 %280
+        %281 = OpFunctionCall %int %search_i1_ %param_24
+               OpStore %result %281
+        %283 = OpLoad %int %i
+               OpSelectionMerge %284 None
+               OpSwitch %283 %285 2 %286 5 %286 6 %286 7 %286 8 %286 9 %286 12 %286 13 %286 15 %286 17 %286
+        %286 = OpLabel
+        %287 = OpLoad %int %result
+        %288 = OpLoad %int %i
+        %289 = OpIEqual %bool %287 %288
+               OpStore %x_156_phi %289
+        %290 = OpLogicalNot %bool %289
+               OpSelectionMerge %291 None
+               OpBranchConditional %290 %292 %291
+        %292 = OpLabel
+        %294 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %295 = OpLoad %float %294
+        %297 = OpFOrdLessThan %bool %295 %float_0
+               OpStore %x_155 %297
+        %298 = OpLoad %bool %x_155
+               OpStore %x_156_phi %298
+               OpBranch %291
+        %291 = OpLabel
+        %299 = OpLoad %bool %x_156_phi
+               OpSelectionMerge %300 None
+               OpBranchConditional %299 %301 %300
+        %301 = OpLabel
+        %302 = OpLoad %int %count
+        %303 = OpIAdd %int %302 %int_1
+               OpStore %count %303
+               OpBranch %300
+        %300 = OpLabel
+               OpBranch %284
+        %285 = OpLabel
+        %304 = OpLoad %int %result
+        %305 = OpIEqual %bool %304 %int_n1
+               OpSelectionMerge %306 None
+               OpBranchConditional %305 %307 %306
+        %307 = OpLabel
+        %308 = OpLoad %int %count
+        %309 = OpIAdd %int %308 %int_1
+               OpStore %count %309
+               OpBranch %306
+        %306 = OpLabel
+               OpBranch %284
+        %284 = OpLabel
+               OpBranch %268
+        %268 = OpLabel
+        %310 = OpLoad %int %i
+        %311 = OpIAdd %int %310 %int_1
+               OpStore %i %311
+               OpBranch %266
+        %267 = OpLabel
+        %312 = OpLoad %int %count
+        %313 = OpIEqual %bool %312 %int_20
+               OpSelectionMerge %314 None
+               OpBranchConditional %313 %315 %316
+        %315 = OpLabel
+               OpStore %x_GLF_color %318
+               OpBranch %314
+        %316 = OpLabel
+               OpStore %x_GLF_color %319
+               OpBranch %314
+        %314 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %320
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %324 = OpLabel
+        %325 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %325
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %166
+        %327 = OpLabel
+        %328 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %328
+        %329 = OpFunctionCall %void %main_1
+        %331 = OpLoad %v4float %x_GLF_color
+        %332 = OpCompositeConstruct %main_out %331
+        %330 = OpFunctionCall %void %tint_symbol_3 %332
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..4d268f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.wgsl
@@ -0,0 +1,277 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_169 : i32 = *(data);
+  (*(tree)).data = x_169;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_178 : i32 = baseIndex;
+    let x_179 : i32 = *(treeIndex);
+    if ((x_178 <= x_179)) {
+    } else {
+      break;
+    }
+    let x_182 : i32 = *(data_1);
+    let x_183 : i32 = baseIndex;
+    let x_185 : i32 = tree_1[x_183].data;
+    if ((x_182 <= x_185)) {
+      let x_190 : i32 = baseIndex;
+      let x_192 : i32 = tree_1[x_190].leftIndex;
+      if ((x_192 == -1)) {
+        let x_197 : i32 = baseIndex;
+        let x_198 : i32 = *(treeIndex);
+        tree_1[x_197].leftIndex = x_198;
+        let x_200 : i32 = *(treeIndex);
+        let x_202 : BST = tree_1[x_200];
+        param = x_202;
+        let x_203 : i32 = *(data_1);
+        param_1 = x_203;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_205 : BST = param;
+        tree_1[x_200] = x_205;
+        return;
+      } else {
+        let x_207 : i32 = baseIndex;
+        let x_209 : i32 = tree_1[x_207].leftIndex;
+        baseIndex = x_209;
+        continue;
+      }
+      return;
+    } else {
+      let x_210 : i32 = baseIndex;
+      let x_212 : i32 = tree_1[x_210].rightIndex;
+      if ((x_212 == -1)) {
+        let x_217 : i32 = baseIndex;
+        let x_218 : i32 = *(treeIndex);
+        tree_1[x_217].rightIndex = x_218;
+        let x_220 : i32 = *(treeIndex);
+        let x_222 : BST = tree_1[x_220];
+        param_2 = x_222;
+        let x_223 : i32 = *(data_1);
+        param_3 = x_223;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_225 : BST = param_2;
+        tree_1[x_220] = x_225;
+        return;
+      } else {
+        let x_227 : i32 = baseIndex;
+        let x_229 : i32 = tree_1[x_227].rightIndex;
+        baseIndex = x_229;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_231 : i32;
+  index = 0;
+  loop {
+    let x_236 : i32 = index;
+    if ((x_236 != -1)) {
+    } else {
+      break;
+    }
+    let x_239 : i32 = index;
+    let x_241 : BST = tree_1[x_239];
+    currentNode = x_241;
+    let x_243 : i32 = currentNode.data;
+    let x_244 : i32 = *(target);
+    if ((x_243 == x_244)) {
+      let x_248 : i32 = *(target);
+      return x_248;
+    }
+    let x_249 : i32 = *(target);
+    let x_251 : i32 = currentNode.data;
+    if ((x_249 > x_251)) {
+      let x_257 : i32 = currentNode.rightIndex;
+      x_231 = x_257;
+    } else {
+      let x_259 : i32 = currentNode.leftIndex;
+      x_231 = x_259;
+    }
+    let x_260 : i32 = x_231;
+    index = x_260;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_88 : BST = tree_1[0];
+  param_4 = x_88;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_90 : BST = param_4;
+  tree_1[0] = x_90;
+  let x_92 : i32 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  let x_94 : i32 = treeIndex_1;
+  param_6 = x_94;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_96 : i32 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  let x_98 : i32 = treeIndex_1;
+  param_8 = x_98;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_100 : i32 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  let x_102 : i32 = treeIndex_1;
+  param_10 = x_102;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_104 : i32 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  let x_106 : i32 = treeIndex_1;
+  param_12 = x_106;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_108 : i32 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  let x_110 : i32 = treeIndex_1;
+  param_14 = x_110;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_112 : i32 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  let x_114 : i32 = treeIndex_1;
+  param_16 = x_114;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  let x_118 : i32 = treeIndex_1;
+  param_18 = x_118;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_120 : i32 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  let x_122 : i32 = treeIndex_1;
+  param_20 = x_122;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_124 : i32 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  let x_126 : i32 = treeIndex_1;
+  param_22 = x_126;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_132 : i32 = i;
+    if ((x_132 < 20)) {
+    } else {
+      break;
+    }
+    var x_155 : bool;
+    var x_156_phi : bool;
+    let x_135 : i32 = i;
+    param_24 = x_135;
+    let x_136 : i32 = search_i1_(&(param_24));
+    result = x_136;
+    let x_137 : i32 = i;
+    switch(x_137) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_147 : i32 = result;
+        let x_148 : i32 = i;
+        let x_149 : bool = (x_147 == x_148);
+        x_156_phi = x_149;
+        if (!(x_149)) {
+          let x_154 : f32 = gl_FragCoord.x;
+          x_155 = (x_154 < 0.0);
+          x_156_phi = x_155;
+        }
+        let x_156 : bool = x_156_phi;
+        if (x_156) {
+          let x_159 : i32 = count;
+          count = (x_159 + 1);
+        }
+      }
+      default: {
+        let x_141 : i32 = result;
+        if ((x_141 == -1)) {
+          let x_145 : i32 = count;
+          count = (x_145 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_161 : i32 = i;
+      i = (x_161 + 1);
+    }
+  }
+  let x_163 : i32 = count;
+  if ((x_163 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm
new file mode 100644
index 0000000..be49363
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm
@@ -0,0 +1,483 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode(struct-BST-i1-i1-i11;i1;"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert(i1;i1;"
+               OpName %treeIndex "treeIndex"
+               OpName %data_0 "data"
+               OpName %search_i1_ "search(i1;"
+               OpName %target "target"
+               OpName %baseIndex "baseIndex"
+               OpName %tree_0 "tree"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %treeIndex_0 "treeIndex"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %param_9 "param"
+               OpName %param_10 "param"
+               OpName %param_11 "param"
+               OpName %param_12 "param"
+               OpName %param_13 "param"
+               OpName %param_14 "param"
+               OpName %param_15 "param"
+               OpName %param_16 "param"
+               OpName %param_17 "param"
+               OpName %param_18 "param"
+               OpName %param_19 "param"
+               OpName %param_20 "param"
+               OpName %param_21 "param"
+               OpName %param_22 "param"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_23 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %49 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %53 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+         %54 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %55 = OpTypeFunction %int %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+     %tree_0 = OpVariable %_ptr_Private__arr_BST_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_BST = OpTypePointer Private %BST
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %87 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %88 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+       %main = OpFunction %void None %49
+         %89 = OpLabel
+%treeIndex_0 = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_BST Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+    %param_5 = OpVariable %_ptr_Function_int Function
+    %param_6 = OpVariable %_ptr_Function_int Function
+    %param_7 = OpVariable %_ptr_Function_int Function
+    %param_8 = OpVariable %_ptr_Function_int Function
+    %param_9 = OpVariable %_ptr_Function_int Function
+   %param_10 = OpVariable %_ptr_Function_int Function
+   %param_11 = OpVariable %_ptr_Function_int Function
+   %param_12 = OpVariable %_ptr_Function_int Function
+   %param_13 = OpVariable %_ptr_Function_int Function
+   %param_14 = OpVariable %_ptr_Function_int Function
+   %param_15 = OpVariable %_ptr_Function_int Function
+   %param_16 = OpVariable %_ptr_Function_int Function
+   %param_17 = OpVariable %_ptr_Function_int Function
+   %param_18 = OpVariable %_ptr_Function_int Function
+   %param_19 = OpVariable %_ptr_Function_int Function
+   %param_20 = OpVariable %_ptr_Function_int Function
+   %param_21 = OpVariable %_ptr_Function_int Function
+   %param_22 = OpVariable %_ptr_Function_int Function
+      %count = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+     %result = OpVariable %_ptr_Function_int Function
+   %param_23 = OpVariable %_ptr_Function_int Function
+               OpStore %treeIndex_0 %int_0
+         %90 = OpAccessChain %_ptr_Private_BST %tree_0 %int_0
+         %91 = OpLoad %BST %90
+               OpStore %param_3 %91
+               OpStore %param_4 %int_9
+         %92 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_3 %param_4
+         %93 = OpLoad %BST %param_3
+         %94 = OpAccessChain %_ptr_Private_BST %tree_0 %int_0
+               OpStore %94 %93
+         %95 = OpLoad %int %treeIndex_0
+         %96 = OpIAdd %int %95 %int_1
+               OpStore %treeIndex_0 %96
+         %97 = OpLoad %int %treeIndex_0
+               OpStore %param_5 %97
+               OpStore %param_6 %int_5
+         %98 = OpFunctionCall %void %insert_i1_i1_ %param_5 %param_6
+         %99 = OpLoad %int %treeIndex_0
+        %100 = OpIAdd %int %99 %int_1
+               OpStore %treeIndex_0 %100
+        %101 = OpLoad %int %treeIndex_0
+               OpStore %param_7 %101
+               OpStore %param_8 %int_12
+        %102 = OpFunctionCall %void %insert_i1_i1_ %param_7 %param_8
+        %103 = OpLoad %int %treeIndex_0
+        %104 = OpIAdd %int %103 %int_1
+               OpStore %treeIndex_0 %104
+        %105 = OpLoad %int %treeIndex_0
+               OpStore %param_9 %105
+               OpStore %param_10 %int_15
+        %106 = OpFunctionCall %void %insert_i1_i1_ %param_9 %param_10
+        %107 = OpLoad %int %treeIndex_0
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %treeIndex_0 %108
+        %109 = OpLoad %int %treeIndex_0
+               OpStore %param_11 %109
+               OpStore %param_12 %int_7
+        %110 = OpFunctionCall %void %insert_i1_i1_ %param_11 %param_12
+        %111 = OpLoad %int %treeIndex_0
+        %112 = OpIAdd %int %111 %int_1
+               OpStore %treeIndex_0 %112
+        %113 = OpLoad %int %treeIndex_0
+               OpStore %param_13 %113
+               OpStore %param_14 %int_8
+        %114 = OpFunctionCall %void %insert_i1_i1_ %param_13 %param_14
+        %115 = OpLoad %int %treeIndex_0
+        %116 = OpIAdd %int %115 %int_1
+               OpStore %treeIndex_0 %116
+        %117 = OpLoad %int %treeIndex_0
+               OpStore %param_15 %117
+               OpStore %param_16 %int_2
+        %118 = OpFunctionCall %void %insert_i1_i1_ %param_15 %param_16
+        %119 = OpLoad %int %treeIndex_0
+        %120 = OpIAdd %int %119 %int_1
+               OpStore %treeIndex_0 %120
+        %121 = OpLoad %int %treeIndex_0
+               OpStore %param_17 %121
+               OpStore %param_18 %int_6
+        %122 = OpFunctionCall %void %insert_i1_i1_ %param_17 %param_18
+        %123 = OpLoad %int %treeIndex_0
+        %124 = OpIAdd %int %123 %int_1
+               OpStore %treeIndex_0 %124
+        %125 = OpLoad %int %treeIndex_0
+               OpStore %param_19 %125
+               OpStore %param_20 %int_17
+        %126 = OpFunctionCall %void %insert_i1_i1_ %param_19 %param_20
+        %127 = OpLoad %int %treeIndex_0
+        %128 = OpIAdd %int %127 %int_1
+               OpStore %treeIndex_0 %128
+        %129 = OpLoad %int %treeIndex_0
+               OpStore %param_21 %129
+               OpStore %param_22 %int_13
+        %130 = OpFunctionCall %void %insert_i1_i1_ %param_21 %param_22
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %131
+        %131 = OpLabel
+               OpLoopMerge %132 %133 None
+               OpBranch %134
+        %134 = OpLabel
+        %135 = OpLoad %int %i
+        %136 = OpSLessThan %bool %135 %int_20
+               OpBranchConditional %136 %137 %132
+        %137 = OpLabel
+        %138 = OpLoad %int %i
+               OpStore %param_23 %138
+        %139 = OpFunctionCall %int %search_i1_ %param_23
+               OpStore %result %139
+        %140 = OpLoad %int %i
+               OpSelectionMerge %141 None
+               OpSwitch %140 %142 9 %143 5 %143 12 %143 15 %143 7 %143 8 %143 2 %143 6 %143 17 %143 13 %143
+        %142 = OpLabel
+        %144 = OpLoad %int %result
+        %145 = OpIEqual %bool %144 %int_n1
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpLoad %int %count
+        %149 = OpIAdd %int %148 %int_1
+               OpStore %count %149
+               OpBranch %146
+        %146 = OpLabel
+               OpBranch %141
+        %143 = OpLabel
+        %150 = OpLoad %int %result
+        %151 = OpLoad %int %i
+        %152 = OpIEqual %bool %150 %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+        %155 = OpLoad %int %count
+        %156 = OpIAdd %int %155 %int_1
+               OpStore %count %156
+               OpBranch %153
+        %153 = OpLabel
+               OpBranch %141
+        %141 = OpLabel
+               OpBranch %133
+        %133 = OpLabel
+        %157 = OpLoad %int %i
+        %158 = OpIAdd %int %157 %int_1
+               OpStore %i %158
+               OpBranch %131
+        %132 = OpLabel
+        %159 = OpLoad %int %count
+        %160 = OpIEqual %bool %159 %int_20
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+               OpStore %_GLF_color %87
+               OpBranch %161
+        %163 = OpLabel
+               OpStore %_GLF_color %88
+               OpBranch %161
+        %161 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %53
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+        %164 = OpLabel
+        %165 = OpLoad %int %data
+        %166 = OpAccessChain %_ptr_Function_int %tree %int_0
+               OpStore %166 %165
+        %167 = OpAccessChain %_ptr_Function_int %tree %int_1
+               OpStore %167 %int_n1
+        %168 = OpAccessChain %_ptr_Function_int %tree %int_2
+               OpStore %168 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %54
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_0 = OpFunctionParameter %_ptr_Function_int
+        %169 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_BST Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+        %170 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_BST Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+               OpStore %baseIndex %int_0
+               OpBranch %171
+        %171 = OpLabel
+               OpLoopMerge %172 %173 None
+               OpBranch %174
+        %174 = OpLabel
+        %175 = OpLoad %int %baseIndex
+        %176 = OpLoad %int %treeIndex
+        %177 = OpSLessThanEqual %bool %175 %176
+               OpBranchConditional %177 %178 %172
+        %178 = OpLabel
+        %179 = OpLoad %int %data_0
+        %180 = OpLoad %int %baseIndex
+        %181 = OpAccessChain %_ptr_Private_int %tree_0 %180 %int_0
+        %182 = OpLoad %int %181
+        %183 = OpSLessThanEqual %bool %179 %182
+               OpSelectionMerge %184 None
+               OpBranchConditional %183 %185 %186
+        %185 = OpLabel
+        %187 = OpLoad %int %baseIndex
+        %188 = OpAccessChain %_ptr_Private_int %tree_0 %187 %int_1
+        %189 = OpLoad %int %188
+        %190 = OpIEqual %bool %189 %int_n1
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %193
+        %192 = OpLabel
+        %194 = OpLoad %int %baseIndex
+        %195 = OpLoad %int %treeIndex
+        %196 = OpAccessChain %_ptr_Private_int %tree_0 %194 %int_1
+               OpStore %196 %195
+        %197 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %198 = OpLoad %float %197
+        %199 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %200 = OpLoad %float %199
+        %201 = OpFOrdLessThan %bool %198 %200
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %202
+        %203 = OpLabel
+        %204 = OpLoad %int %treeIndex
+        %205 = OpAccessChain %_ptr_Private_BST %tree_0 %204
+        %206 = OpLoad %BST %205
+               OpStore %param %206
+        %207 = OpLoad %int %data_0
+               OpStore %param_0 %207
+        %208 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_0
+        %209 = OpLoad %BST %param
+        %210 = OpAccessChain %_ptr_Private_BST %tree_0 %204
+               OpStore %210 %209
+               OpBranch %202
+        %202 = OpLabel
+        %211 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %212 = OpLoad %float %211
+        %213 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %214 = OpLoad %float %213
+        %215 = OpFOrdLessThan %bool %212 %214
+               OpSelectionMerge %216 None
+               OpBranchConditional %215 %217 %216
+        %217 = OpLabel
+               OpReturn
+        %216 = OpLabel
+               OpBranch %191
+        %193 = OpLabel
+        %218 = OpLoad %int %baseIndex
+        %219 = OpAccessChain %_ptr_Private_int %tree_0 %218 %int_1
+        %220 = OpLoad %int %219
+               OpStore %baseIndex %220
+               OpBranch %173
+        %191 = OpLabel
+               OpBranch %184
+        %186 = OpLabel
+        %221 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %222 = OpLoad %float %221
+        %223 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %224 = OpLoad %float %223
+        %225 = OpFOrdLessThan %bool %222 %224
+               OpSelectionMerge %226 None
+               OpBranchConditional %225 %227 %228
+        %227 = OpLabel
+        %229 = OpLoad %int %baseIndex
+        %230 = OpAccessChain %_ptr_Private_int %tree_0 %229 %int_2
+        %231 = OpLoad %int %230
+               OpStore %170 %231
+               OpBranch %226
+        %228 = OpLabel
+        %232 = OpLoad %int %baseIndex
+        %233 = OpAccessChain %_ptr_Private_int %tree_0 %232 %int_2
+        %234 = OpLoad %int %233
+               OpStore %170 %234
+               OpBranch %226
+        %226 = OpLabel
+        %235 = OpLoad %int %170
+        %236 = OpIEqual %bool %235 %int_n1
+               OpSelectionMerge %237 None
+               OpBranchConditional %236 %238 %239
+        %238 = OpLabel
+        %240 = OpLoad %int %baseIndex
+        %241 = OpLoad %int %treeIndex
+        %242 = OpAccessChain %_ptr_Private_int %tree_0 %240 %int_2
+               OpStore %242 %241
+        %243 = OpLoad %int %treeIndex
+        %244 = OpAccessChain %_ptr_Private_BST %tree_0 %243
+        %245 = OpLoad %BST %244
+               OpStore %param_1 %245
+        %246 = OpLoad %int %data_0
+               OpStore %param_2 %246
+        %247 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_1 %param_2
+        %248 = OpLoad %BST %param_1
+        %249 = OpAccessChain %_ptr_Private_BST %tree_0 %243
+               OpStore %249 %248
+               OpReturn
+        %239 = OpLabel
+        %250 = OpLoad %int %baseIndex
+        %251 = OpAccessChain %_ptr_Private_int %tree_0 %250 %int_2
+        %252 = OpLoad %int %251
+               OpStore %baseIndex %252
+               OpBranch %173
+        %237 = OpLabel
+               OpUnreachable
+        %184 = OpLabel
+        %253 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %254 = OpLoad %float %253
+        %255 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %256 = OpLoad %float %255
+        %257 = OpFOrdGreaterThan %bool %254 %256
+               OpSelectionMerge %258 None
+               OpBranchConditional %257 %259 %258
+        %259 = OpLabel
+               OpReturn
+        %258 = OpLabel
+               OpBranch %173
+        %173 = OpLabel
+               OpBranch %171
+        %172 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %55
+     %target = OpFunctionParameter %_ptr_Function_int
+        %260 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function
+%currentNode = OpVariable %_ptr_Function_BST Function
+        %261 = OpVariable %_ptr_Function_int Function
+               OpStore %index %int_0
+               OpBranch %262
+        %262 = OpLabel
+               OpLoopMerge %263 %264 None
+               OpBranch %265
+        %265 = OpLabel
+        %266 = OpLoad %int %index
+        %267 = OpINotEqual %bool %266 %int_n1
+               OpBranchConditional %267 %268 %263
+        %268 = OpLabel
+        %269 = OpLoad %int %index
+        %270 = OpAccessChain %_ptr_Private_BST %tree_0 %269
+        %271 = OpLoad %BST %270
+               OpStore %currentNode %271
+        %272 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %273 = OpLoad %int %272
+        %274 = OpLoad %int %target
+        %275 = OpIEqual %bool %273 %274
+               OpSelectionMerge %276 None
+               OpBranchConditional %275 %277 %276
+        %277 = OpLabel
+        %278 = OpLoad %int %target
+               OpReturnValue %278
+        %276 = OpLabel
+        %279 = OpLoad %int %target
+        %280 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %281 = OpLoad %int %280
+        %282 = OpSGreaterThan %bool %279 %281
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %285
+        %284 = OpLabel
+        %286 = OpAccessChain %_ptr_Function_int %currentNode %int_2
+        %287 = OpLoad %int %286
+               OpStore %261 %287
+               OpBranch %283
+        %285 = OpLabel
+        %288 = OpAccessChain %_ptr_Function_int %currentNode %int_1
+        %289 = OpLoad %int %288
+               OpStore %261 %289
+               OpBranch %283
+        %283 = OpLabel
+        %290 = OpLoad %int %261
+               OpStore %index %290
+               OpBranch %264
+        %264 = OpLabel
+               OpBranch %262
+        %263 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..11cdc01
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.hlsl
@@ -0,0 +1,255 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static BST tree_1[10] = (BST[10])0;
+cbuffer cbuffer_x_16 : register(b0, space0) {
+  uint4 x_16[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST tree, inout int data) {
+  const int x_165 = data;
+  tree.data = x_165;
+  tree.leftIndex = -1;
+  tree.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  int x_170 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_175 = baseIndex;
+    const int x_176 = treeIndex;
+    if ((x_175 <= x_176)) {
+    } else {
+      break;
+    }
+    const int x_179 = data_1;
+    const int x_182 = tree_1[baseIndex].data;
+    if ((x_179 <= x_182)) {
+      const int x_189 = tree_1[baseIndex].leftIndex;
+      if ((x_189 == -1)) {
+        const int x_194 = baseIndex;
+        const int x_195 = treeIndex;
+        tree_1[x_194].leftIndex = x_195;
+        const float x_198 = asfloat(x_16[0].x);
+        const float x_200 = asfloat(x_16[0].y);
+        if ((x_198 < x_200)) {
+          const int x_204 = treeIndex;
+          const BST x_206 = tree_1[x_204];
+          param = x_206;
+          const int x_207 = data_1;
+          param_1 = x_207;
+          makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+          tree_1[x_204] = param;
+        }
+        const float x_212 = asfloat(x_16[0].x);
+        const float x_214 = asfloat(x_16[0].y);
+        if ((x_212 < x_214)) {
+          return;
+        }
+      } else {
+        const int x_220 = tree_1[baseIndex].leftIndex;
+        baseIndex = x_220;
+        continue;
+      }
+    } else {
+      const float x_222 = asfloat(x_16[0].x);
+      const float x_224 = asfloat(x_16[0].y);
+      if ((x_222 < x_224)) {
+        const int x_231 = tree_1[baseIndex].rightIndex;
+        x_170 = x_231;
+      } else {
+        const int x_234 = tree_1[baseIndex].rightIndex;
+        x_170 = x_234;
+      }
+      if ((x_170 == -1)) {
+        const int x_240 = baseIndex;
+        const int x_241 = treeIndex;
+        tree_1[x_240].rightIndex = x_241;
+        const int x_243 = treeIndex;
+        const BST x_245 = tree_1[x_243];
+        param_2 = x_245;
+        const int x_246 = data_1;
+        param_3 = x_246;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree_1[x_243] = param_2;
+        return;
+      } else {
+        const int x_252 = tree_1[baseIndex].rightIndex;
+        baseIndex = x_252;
+        continue;
+      }
+      return;
+    }
+    const float x_254 = asfloat(x_16[0].x);
+    const float x_256 = asfloat(x_16[0].y);
+    if ((x_254 > x_256)) {
+      return;
+    }
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_261 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_271 = tree_1[index];
+    currentNode = x_271;
+    const int x_273 = currentNode.data;
+    const int x_274 = target;
+    if ((x_273 == x_274)) {
+      const int x_278 = target;
+      return x_278;
+    }
+    const int x_279 = target;
+    const int x_281 = currentNode.data;
+    if ((x_279 > x_281)) {
+      const int x_287 = currentNode.rightIndex;
+      x_261 = x_287;
+    } else {
+      const int x_289 = currentNode.leftIndex;
+      x_261 = x_289;
+    }
+    index = x_261;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  const BST x_91 = tree_1[0];
+  param_4 = x_91;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree_1[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  count = 0;
+  i = 0;
+  {
+    for(; (i < 20); i = (i + 1)) {
+      param_24 = i;
+      const int x_139 = search_i1_(param_24);
+      result = x_139;
+      switch(i) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          if ((result == i)) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.msl
new file mode 100644
index 0000000..17bc280
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.msl
@@ -0,0 +1,306 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const tree, thread int* const data) {
+  int const x_165 = *(data);
+  (*(tree)).data = x_165;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(constant buf0& x_16, thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper* const tint_symbol_4) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  int x_170 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_175 = baseIndex;
+    int const x_176 = *(treeIndex);
+    if ((x_175 <= x_176)) {
+    } else {
+      break;
+    }
+    int const x_179 = *(data_1);
+    int const x_180 = baseIndex;
+    int const x_182 = (*(tint_symbol_4)).arr[x_180].data;
+    if ((x_179 <= x_182)) {
+      int const x_187 = baseIndex;
+      int const x_189 = (*(tint_symbol_4)).arr[x_187].leftIndex;
+      if ((x_189 == -1)) {
+        int const x_194 = baseIndex;
+        int const x_195 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_194].leftIndex = x_195;
+        float const x_198 = x_16.injectionSwitch.x;
+        float const x_200 = x_16.injectionSwitch.y;
+        if ((x_198 < x_200)) {
+          int const x_204 = *(treeIndex);
+          BST const x_206 = (*(tint_symbol_4)).arr[x_204];
+          param = x_206;
+          int const x_207 = *(data_1);
+          param_1 = x_207;
+          makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+          BST const x_209 = param;
+          (*(tint_symbol_4)).arr[x_204] = x_209;
+        }
+        float const x_212 = x_16.injectionSwitch.x;
+        float const x_214 = x_16.injectionSwitch.y;
+        if ((x_212 < x_214)) {
+          return;
+        }
+      } else {
+        int const x_218 = baseIndex;
+        int const x_220 = (*(tint_symbol_4)).arr[x_218].leftIndex;
+        baseIndex = x_220;
+        continue;
+      }
+    } else {
+      float const x_222 = x_16.injectionSwitch.x;
+      float const x_224 = x_16.injectionSwitch.y;
+      if ((x_222 < x_224)) {
+        int const x_229 = baseIndex;
+        int const x_231 = (*(tint_symbol_4)).arr[x_229].rightIndex;
+        x_170 = x_231;
+      } else {
+        int const x_232 = baseIndex;
+        int const x_234 = (*(tint_symbol_4)).arr[x_232].rightIndex;
+        x_170 = x_234;
+      }
+      int const x_235 = x_170;
+      if ((x_235 == -1)) {
+        int const x_240 = baseIndex;
+        int const x_241 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_240].rightIndex = x_241;
+        int const x_243 = *(treeIndex);
+        BST const x_245 = (*(tint_symbol_4)).arr[x_243];
+        param_2 = x_245;
+        int const x_246 = *(data_1);
+        param_3 = x_246;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_248 = param_2;
+        (*(tint_symbol_4)).arr[x_243] = x_248;
+        return;
+      } else {
+        int const x_250 = baseIndex;
+        int const x_252 = (*(tint_symbol_4)).arr[x_250].rightIndex;
+        baseIndex = x_252;
+        continue;
+      }
+      return;
+    }
+    float const x_254 = x_16.injectionSwitch.x;
+    float const x_256 = x_16.injectionSwitch.y;
+    if ((x_254 > x_256)) {
+      return;
+    }
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper* const tint_symbol_5) {
+  int index = 0;
+  BST currentNode = {};
+  int x_261 = 0;
+  index = 0;
+  while (true) {
+    int const x_266 = index;
+    if ((x_266 != -1)) {
+    } else {
+      break;
+    }
+    int const x_269 = index;
+    BST const x_271 = (*(tint_symbol_5)).arr[x_269];
+    currentNode = x_271;
+    int const x_273 = currentNode.data;
+    int const x_274 = *(target);
+    if ((x_273 == x_274)) {
+      int const x_278 = *(target);
+      return x_278;
+    }
+    int const x_279 = *(target);
+    int const x_281 = currentNode.data;
+    if ((x_279 > x_281)) {
+      int const x_287 = currentNode.rightIndex;
+      x_261 = x_287;
+    } else {
+      int const x_289 = currentNode.leftIndex;
+      x_261 = x_289;
+    }
+    int const x_290 = x_261;
+    index = x_290;
+  }
+  return -1;
+}
+
+void main_1(constant buf0& x_16, thread tint_array_wrapper* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  BST const x_91 = (*(tint_symbol_6)).arr[0];
+  param_4 = x_91;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_93 = param_4;
+  (*(tint_symbol_6)).arr[0] = x_93;
+  int const x_95 = treeIndex_1;
+  treeIndex_1 = (x_95 + 1);
+  int const x_97 = treeIndex_1;
+  param_6 = x_97;
+  param_7 = 5;
+  insert_i1_i1_(x_16, &(param_6), &(param_7), tint_symbol_6);
+  int const x_99 = treeIndex_1;
+  treeIndex_1 = (x_99 + 1);
+  int const x_101 = treeIndex_1;
+  param_8 = x_101;
+  param_9 = 12;
+  insert_i1_i1_(x_16, &(param_8), &(param_9), tint_symbol_6);
+  int const x_103 = treeIndex_1;
+  treeIndex_1 = (x_103 + 1);
+  int const x_105 = treeIndex_1;
+  param_10 = x_105;
+  param_11 = 15;
+  insert_i1_i1_(x_16, &(param_10), &(param_11), tint_symbol_6);
+  int const x_107 = treeIndex_1;
+  treeIndex_1 = (x_107 + 1);
+  int const x_109 = treeIndex_1;
+  param_12 = x_109;
+  param_13 = 7;
+  insert_i1_i1_(x_16, &(param_12), &(param_13), tint_symbol_6);
+  int const x_111 = treeIndex_1;
+  treeIndex_1 = (x_111 + 1);
+  int const x_113 = treeIndex_1;
+  param_14 = x_113;
+  param_15 = 8;
+  insert_i1_i1_(x_16, &(param_14), &(param_15), tint_symbol_6);
+  int const x_115 = treeIndex_1;
+  treeIndex_1 = (x_115 + 1);
+  int const x_117 = treeIndex_1;
+  param_16 = x_117;
+  param_17 = 2;
+  insert_i1_i1_(x_16, &(param_16), &(param_17), tint_symbol_6);
+  int const x_119 = treeIndex_1;
+  treeIndex_1 = (x_119 + 1);
+  int const x_121 = treeIndex_1;
+  param_18 = x_121;
+  param_19 = 6;
+  insert_i1_i1_(x_16, &(param_18), &(param_19), tint_symbol_6);
+  int const x_123 = treeIndex_1;
+  treeIndex_1 = (x_123 + 1);
+  int const x_125 = treeIndex_1;
+  param_20 = x_125;
+  param_21 = 17;
+  insert_i1_i1_(x_16, &(param_20), &(param_21), tint_symbol_6);
+  int const x_127 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  int const x_129 = treeIndex_1;
+  param_22 = x_129;
+  param_23 = 13;
+  insert_i1_i1_(x_16, &(param_22), &(param_23), tint_symbol_6);
+  count = 0;
+  i = 0;
+  while (true) {
+    int const x_135 = i;
+    if ((x_135 < 20)) {
+    } else {
+      break;
+    }
+    int const x_138 = i;
+    param_24 = x_138;
+    int const x_139 = search_i1_(&(param_24), tint_symbol_6);
+    result = x_139;
+    int const x_140 = i;
+    switch(x_140) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_150 = result;
+        int const x_151 = i;
+        if ((x_150 == x_151)) {
+          int const x_155 = count;
+          count = (x_155 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_144 = result;
+        if ((x_144 == -1)) {
+          int const x_148 = count;
+          count = (x_148 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_157 = i;
+      i = (x_157 + 1);
+    }
+  }
+  int const x_159 = count;
+  if ((x_159 == 20)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_16 [[buffer(0)]]) {
+  thread tint_array_wrapper tint_symbol_8 = {};
+  thread float4 tint_symbol_9 = 0.0f;
+  main_1(x_16, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..990bb9a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.spvasm
@@ -0,0 +1,539 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 355
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree_1 "tree_1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_16 "x_16"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %x_170 "x_170"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_261 "x_261"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_24 "param_24"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_16 NonWritable
+               OpDecorate %x_16 DescriptorSet 0
+               OpDecorate %x_16 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+     %tree_1 = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_16 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %40 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %46 = OpConstantNull %int
+         %48 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %161 = OpTypeFunction %int %_ptr_Function_int
+        %202 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %341 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %342 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %343 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %20
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %27 = OpLabel
+         %29 = OpLoad %int %data
+         %32 = OpAccessChain %_ptr_Function_int %tree %uint_0
+               OpStore %32 %29
+         %35 = OpAccessChain %_ptr_Function_int %tree %uint_1
+               OpStore %35 %int_n1
+         %39 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %39 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %40
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %44 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %46
+      %param = OpVariable %_ptr_Function_BST Function %48
+    %param_1 = OpVariable %_ptr_Function_int Function %46
+      %x_170 = OpVariable %_ptr_Function_int Function %46
+    %param_2 = OpVariable %_ptr_Function_BST Function %48
+    %param_3 = OpVariable %_ptr_Function_int Function %46
+               OpStore %baseIndex %int_0
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %baseIndex
+         %60 = OpLoad %int %treeIndex
+         %61 = OpSLessThanEqual %bool %58 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %61 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %55
+         %63 = OpLabel
+         %67 = OpLoad %int %data_1
+         %68 = OpLoad %int %baseIndex
+         %70 = OpAccessChain %_ptr_Private_int %tree_1 %68 %uint_0
+         %71 = OpLoad %int %70
+         %72 = OpSLessThanEqual %bool %67 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpLoad %int %baseIndex
+         %77 = OpAccessChain %_ptr_Private_int %tree_1 %76 %uint_1
+         %78 = OpLoad %int %77
+         %79 = OpIEqual %bool %78 %int_n1
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpLoad %int %baseIndex
+         %85 = OpLoad %int %treeIndex
+         %86 = OpAccessChain %_ptr_Private_int %tree_1 %83 %uint_1
+               OpStore %86 %85
+         %88 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+         %91 = OpLoad %float %90
+         %92 = OpFOrdLessThan %bool %89 %91
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+         %96 = OpLoad %int %treeIndex
+         %98 = OpAccessChain %_ptr_Private_BST %tree_1 %96
+         %99 = OpLoad %BST %98
+               OpStore %param %99
+        %101 = OpLoad %int %data_1
+               OpStore %param_1 %101
+        %102 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+        %105 = OpLoad %BST %param
+        %106 = OpAccessChain %_ptr_Private_BST %tree_1 %96
+               OpStore %106 %105
+               OpBranch %93
+         %93 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+        %108 = OpLoad %float %107
+        %109 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+        %110 = OpLoad %float %109
+        %111 = OpFOrdLessThan %bool %108 %110
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %112
+        %113 = OpLabel
+               OpReturn
+        %112 = OpLabel
+               OpBranch %80
+         %82 = OpLabel
+        %114 = OpLoad %int %baseIndex
+        %115 = OpAccessChain %_ptr_Private_int %tree_1 %114 %uint_1
+        %116 = OpLoad %int %115
+               OpStore %baseIndex %116
+               OpBranch %56
+         %80 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+        %120 = OpLoad %float %119
+        %121 = OpFOrdLessThan %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+        %125 = OpLoad %int %baseIndex
+        %126 = OpAccessChain %_ptr_Private_int %tree_1 %125 %uint_2
+        %127 = OpLoad %int %126
+               OpStore %x_170 %127
+               OpBranch %122
+        %124 = OpLabel
+        %128 = OpLoad %int %baseIndex
+        %129 = OpAccessChain %_ptr_Private_int %tree_1 %128 %uint_2
+        %130 = OpLoad %int %129
+               OpStore %x_170 %130
+               OpBranch %122
+        %122 = OpLabel
+        %131 = OpLoad %int %x_170
+        %132 = OpIEqual %bool %131 %int_n1
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %134 = OpLabel
+        %136 = OpLoad %int %baseIndex
+        %138 = OpLoad %int %treeIndex
+        %139 = OpAccessChain %_ptr_Private_int %tree_1 %136 %uint_2
+               OpStore %139 %138
+        %141 = OpLoad %int %treeIndex
+        %142 = OpAccessChain %_ptr_Private_BST %tree_1 %141
+        %143 = OpLoad %BST %142
+               OpStore %param_2 %143
+        %145 = OpLoad %int %data_1
+               OpStore %param_3 %145
+        %146 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %149 = OpLoad %BST %param_2
+        %150 = OpAccessChain %_ptr_Private_BST %tree_1 %141
+               OpStore %150 %149
+               OpReturn
+        %135 = OpLabel
+        %151 = OpLoad %int %baseIndex
+        %152 = OpAccessChain %_ptr_Private_int %tree_1 %151 %uint_2
+        %153 = OpLoad %int %152
+               OpStore %baseIndex %153
+               OpBranch %56
+        %133 = OpLabel
+               OpReturn
+         %73 = OpLabel
+        %154 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+        %155 = OpLoad %float %154
+        %156 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+        %157 = OpLoad %float %156
+        %158 = OpFOrdGreaterThan %bool %155 %157
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %159
+        %160 = OpLabel
+               OpReturn
+        %159 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %54
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %161
+     %target = OpFunctionParameter %_ptr_Function_int
+        %164 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %46
+%currentNode = OpVariable %_ptr_Function_BST Function %48
+      %x_261 = OpVariable %_ptr_Function_int Function %46
+               OpStore %index %int_0
+               OpBranch %168
+        %168 = OpLabel
+               OpLoopMerge %169 %170 None
+               OpBranch %171
+        %171 = OpLabel
+        %172 = OpLoad %int %index
+        %173 = OpINotEqual %bool %172 %int_n1
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+               OpBranch %174
+        %176 = OpLabel
+               OpBranch %169
+        %174 = OpLabel
+        %177 = OpLoad %int %index
+        %178 = OpAccessChain %_ptr_Private_BST %tree_1 %177
+        %179 = OpLoad %BST %178
+               OpStore %currentNode %179
+        %180 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %181 = OpLoad %int %180
+        %183 = OpLoad %int %target
+        %184 = OpIEqual %bool %181 %183
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %185
+        %186 = OpLabel
+        %188 = OpLoad %int %target
+               OpReturnValue %188
+        %185 = OpLabel
+        %190 = OpLoad %int %target
+        %191 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %192 = OpLoad %int %191
+        %193 = OpSGreaterThan %bool %190 %192
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %196
+        %195 = OpLabel
+        %197 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %198 = OpLoad %int %197
+               OpStore %x_261 %198
+               OpBranch %194
+        %196 = OpLabel
+        %199 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %200 = OpLoad %int %199
+               OpStore %x_261 %200
+               OpBranch %194
+        %194 = OpLabel
+        %201 = OpLoad %int %x_261
+               OpStore %index %201
+               OpBranch %170
+        %170 = OpLabel
+               OpBranch %168
+        %169 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %202
+        %204 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %46
+    %param_4 = OpVariable %_ptr_Function_BST Function %48
+    %param_5 = OpVariable %_ptr_Function_int Function %46
+    %param_6 = OpVariable %_ptr_Function_int Function %46
+    %param_7 = OpVariable %_ptr_Function_int Function %46
+    %param_8 = OpVariable %_ptr_Function_int Function %46
+    %param_9 = OpVariable %_ptr_Function_int Function %46
+   %param_10 = OpVariable %_ptr_Function_int Function %46
+   %param_11 = OpVariable %_ptr_Function_int Function %46
+   %param_12 = OpVariable %_ptr_Function_int Function %46
+   %param_13 = OpVariable %_ptr_Function_int Function %46
+   %param_14 = OpVariable %_ptr_Function_int Function %46
+   %param_15 = OpVariable %_ptr_Function_int Function %46
+   %param_16 = OpVariable %_ptr_Function_int Function %46
+   %param_17 = OpVariable %_ptr_Function_int Function %46
+   %param_18 = OpVariable %_ptr_Function_int Function %46
+   %param_19 = OpVariable %_ptr_Function_int Function %46
+   %param_20 = OpVariable %_ptr_Function_int Function %46
+   %param_21 = OpVariable %_ptr_Function_int Function %46
+   %param_22 = OpVariable %_ptr_Function_int Function %46
+   %param_23 = OpVariable %_ptr_Function_int Function %46
+      %count = OpVariable %_ptr_Function_int Function %46
+          %i = OpVariable %_ptr_Function_int Function %46
+     %result = OpVariable %_ptr_Function_int Function %46
+   %param_24 = OpVariable %_ptr_Function_int Function %46
+               OpStore %treeIndex_1 %int_0
+        %230 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+        %231 = OpLoad %BST %230
+               OpStore %param_4 %231
+               OpStore %param_5 %int_9
+        %233 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %236 = OpLoad %BST %param_4
+        %237 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+               OpStore %237 %236
+        %238 = OpLoad %int %treeIndex_1
+        %240 = OpIAdd %int %238 %int_1
+               OpStore %treeIndex_1 %240
+        %241 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %241
+               OpStore %param_7 %int_5
+        %243 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %246 = OpLoad %int %treeIndex_1
+        %247 = OpIAdd %int %246 %int_1
+               OpStore %treeIndex_1 %247
+        %248 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %248
+               OpStore %param_9 %int_12
+        %250 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %253 = OpLoad %int %treeIndex_1
+        %254 = OpIAdd %int %253 %int_1
+               OpStore %treeIndex_1 %254
+        %255 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %255
+               OpStore %param_11 %int_15
+        %257 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %260 = OpLoad %int %treeIndex_1
+        %261 = OpIAdd %int %260 %int_1
+               OpStore %treeIndex_1 %261
+        %262 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %262
+               OpStore %param_13 %int_7
+        %264 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %267 = OpLoad %int %treeIndex_1
+        %268 = OpIAdd %int %267 %int_1
+               OpStore %treeIndex_1 %268
+        %269 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %269
+               OpStore %param_15 %int_8
+        %271 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %274 = OpLoad %int %treeIndex_1
+        %275 = OpIAdd %int %274 %int_1
+               OpStore %treeIndex_1 %275
+        %276 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %276
+               OpStore %param_17 %int_2
+        %278 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %281 = OpLoad %int %treeIndex_1
+        %282 = OpIAdd %int %281 %int_1
+               OpStore %treeIndex_1 %282
+        %283 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %283
+               OpStore %param_19 %int_6
+        %285 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %288 = OpLoad %int %treeIndex_1
+        %289 = OpIAdd %int %288 %int_1
+               OpStore %treeIndex_1 %289
+        %290 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %290
+               OpStore %param_21 %int_17
+        %292 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %295 = OpLoad %int %treeIndex_1
+        %296 = OpIAdd %int %295 %int_1
+               OpStore %treeIndex_1 %296
+        %297 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %297
+               OpStore %param_23 %int_13
+        %299 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %302
+        %302 = OpLabel
+               OpLoopMerge %303 %304 None
+               OpBranch %305
+        %305 = OpLabel
+        %306 = OpLoad %int %i
+        %308 = OpSLessThan %bool %306 %int_20
+               OpSelectionMerge %309 None
+               OpBranchConditional %308 %310 %311
+        %310 = OpLabel
+               OpBranch %309
+        %311 = OpLabel
+               OpBranch %303
+        %309 = OpLabel
+        %312 = OpLoad %int %i
+               OpStore %param_24 %312
+        %313 = OpFunctionCall %int %search_i1_ %param_24
+               OpStore %result %313
+        %315 = OpLoad %int %i
+               OpSelectionMerge %316 None
+               OpSwitch %315 %317 2 %318 5 %318 6 %318 7 %318 8 %318 9 %318 12 %318 13 %318 15 %318 17 %318
+        %318 = OpLabel
+        %319 = OpLoad %int %result
+        %320 = OpLoad %int %i
+        %321 = OpIEqual %bool %319 %320
+               OpSelectionMerge %322 None
+               OpBranchConditional %321 %323 %322
+        %323 = OpLabel
+        %324 = OpLoad %int %count
+        %325 = OpIAdd %int %324 %int_1
+               OpStore %count %325
+               OpBranch %322
+        %322 = OpLabel
+               OpBranch %316
+        %317 = OpLabel
+        %326 = OpLoad %int %result
+        %327 = OpIEqual %bool %326 %int_n1
+               OpSelectionMerge %328 None
+               OpBranchConditional %327 %329 %328
+        %329 = OpLabel
+        %330 = OpLoad %int %count
+        %331 = OpIAdd %int %330 %int_1
+               OpStore %count %331
+               OpBranch %328
+        %328 = OpLabel
+               OpBranch %316
+        %316 = OpLabel
+               OpBranch %304
+        %304 = OpLabel
+        %332 = OpLoad %int %i
+        %333 = OpIAdd %int %332 %int_1
+               OpStore %i %333
+               OpBranch %302
+        %303 = OpLabel
+        %334 = OpLoad %int %count
+        %335 = OpIEqual %bool %334 %int_20
+               OpSelectionMerge %336 None
+               OpBranchConditional %335 %337 %338
+        %337 = OpLabel
+               OpStore %x_GLF_color %341
+               OpBranch %336
+        %338 = OpLabel
+               OpStore %x_GLF_color %342
+               OpBranch %336
+        %336 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %343
+%tint_symbol = OpFunctionParameter %main_out
+        %347 = OpLabel
+        %348 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %348
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %202
+        %350 = OpLabel
+        %351 = OpFunctionCall %void %main_1
+        %353 = OpLoad %v4float %x_GLF_color
+        %354 = OpCompositeConstruct %main_out %353
+        %352 = OpFunctionCall %void %tint_symbol_2 %354
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..06f95bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.spvasm.expected.wgsl
@@ -0,0 +1,293 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_165 : i32 = *(data);
+  (*(tree)).data = x_165;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var x_170 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_175 : i32 = baseIndex;
+    let x_176 : i32 = *(treeIndex);
+    if ((x_175 <= x_176)) {
+    } else {
+      break;
+    }
+    let x_179 : i32 = *(data_1);
+    let x_180 : i32 = baseIndex;
+    let x_182 : i32 = tree_1[x_180].data;
+    if ((x_179 <= x_182)) {
+      let x_187 : i32 = baseIndex;
+      let x_189 : i32 = tree_1[x_187].leftIndex;
+      if ((x_189 == -1)) {
+        let x_194 : i32 = baseIndex;
+        let x_195 : i32 = *(treeIndex);
+        tree_1[x_194].leftIndex = x_195;
+        let x_198 : f32 = x_16.injectionSwitch.x;
+        let x_200 : f32 = x_16.injectionSwitch.y;
+        if ((x_198 < x_200)) {
+          let x_204 : i32 = *(treeIndex);
+          let x_206 : BST = tree_1[x_204];
+          param = x_206;
+          let x_207 : i32 = *(data_1);
+          param_1 = x_207;
+          makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+          let x_209 : BST = param;
+          tree_1[x_204] = x_209;
+        }
+        let x_212 : f32 = x_16.injectionSwitch.x;
+        let x_214 : f32 = x_16.injectionSwitch.y;
+        if ((x_212 < x_214)) {
+          return;
+        }
+      } else {
+        let x_218 : i32 = baseIndex;
+        let x_220 : i32 = tree_1[x_218].leftIndex;
+        baseIndex = x_220;
+        continue;
+      }
+    } else {
+      let x_222 : f32 = x_16.injectionSwitch.x;
+      let x_224 : f32 = x_16.injectionSwitch.y;
+      if ((x_222 < x_224)) {
+        let x_229 : i32 = baseIndex;
+        let x_231 : i32 = tree_1[x_229].rightIndex;
+        x_170 = x_231;
+      } else {
+        let x_232 : i32 = baseIndex;
+        let x_234 : i32 = tree_1[x_232].rightIndex;
+        x_170 = x_234;
+      }
+      let x_235 : i32 = x_170;
+      if ((x_235 == -1)) {
+        let x_240 : i32 = baseIndex;
+        let x_241 : i32 = *(treeIndex);
+        tree_1[x_240].rightIndex = x_241;
+        let x_243 : i32 = *(treeIndex);
+        let x_245 : BST = tree_1[x_243];
+        param_2 = x_245;
+        let x_246 : i32 = *(data_1);
+        param_3 = x_246;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_248 : BST = param_2;
+        tree_1[x_243] = x_248;
+        return;
+      } else {
+        let x_250 : i32 = baseIndex;
+        let x_252 : i32 = tree_1[x_250].rightIndex;
+        baseIndex = x_252;
+        continue;
+      }
+      return;
+    }
+    let x_254 : f32 = x_16.injectionSwitch.x;
+    let x_256 : f32 = x_16.injectionSwitch.y;
+    if ((x_254 > x_256)) {
+      return;
+    }
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_261 : i32;
+  index = 0;
+  loop {
+    let x_266 : i32 = index;
+    if ((x_266 != -1)) {
+    } else {
+      break;
+    }
+    let x_269 : i32 = index;
+    let x_271 : BST = tree_1[x_269];
+    currentNode = x_271;
+    let x_273 : i32 = currentNode.data;
+    let x_274 : i32 = *(target);
+    if ((x_273 == x_274)) {
+      let x_278 : i32 = *(target);
+      return x_278;
+    }
+    let x_279 : i32 = *(target);
+    let x_281 : i32 = currentNode.data;
+    if ((x_279 > x_281)) {
+      let x_287 : i32 = currentNode.rightIndex;
+      x_261 = x_287;
+    } else {
+      let x_289 : i32 = currentNode.leftIndex;
+      x_261 = x_289;
+    }
+    let x_290 : i32 = x_261;
+    index = x_290;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_91 : BST = tree_1[0];
+  param_4 = x_91;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_93 : BST = param_4;
+  tree_1[0] = x_93;
+  let x_95 : i32 = treeIndex_1;
+  treeIndex_1 = (x_95 + 1);
+  let x_97 : i32 = treeIndex_1;
+  param_6 = x_97;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_99 : i32 = treeIndex_1;
+  treeIndex_1 = (x_99 + 1);
+  let x_101 : i32 = treeIndex_1;
+  param_8 = x_101;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_103 : i32 = treeIndex_1;
+  treeIndex_1 = (x_103 + 1);
+  let x_105 : i32 = treeIndex_1;
+  param_10 = x_105;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_107 : i32 = treeIndex_1;
+  treeIndex_1 = (x_107 + 1);
+  let x_109 : i32 = treeIndex_1;
+  param_12 = x_109;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_111 : i32 = treeIndex_1;
+  treeIndex_1 = (x_111 + 1);
+  let x_113 : i32 = treeIndex_1;
+  param_14 = x_113;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_115 : i32 = treeIndex_1;
+  treeIndex_1 = (x_115 + 1);
+  let x_117 : i32 = treeIndex_1;
+  param_16 = x_117;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_119 : i32 = treeIndex_1;
+  treeIndex_1 = (x_119 + 1);
+  let x_121 : i32 = treeIndex_1;
+  param_18 = x_121;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_123 : i32 = treeIndex_1;
+  treeIndex_1 = (x_123 + 1);
+  let x_125 : i32 = treeIndex_1;
+  param_20 = x_125;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_127 : i32 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  let x_129 : i32 = treeIndex_1;
+  param_22 = x_129;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_135 : i32 = i;
+    if ((x_135 < 20)) {
+    } else {
+      break;
+    }
+    let x_138 : i32 = i;
+    param_24 = x_138;
+    let x_139 : i32 = search_i1_(&(param_24));
+    result = x_139;
+    let x_140 : i32 = i;
+    switch(x_140) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_150 : i32 = result;
+        let x_151 : i32 = i;
+        if ((x_150 == x_151)) {
+          let x_155 : i32 = count;
+          count = (x_155 + 1);
+        }
+      }
+      default: {
+        let x_144 : i32 = result;
+        if ((x_144 == -1)) {
+          let x_148 : i32 = count;
+          count = (x_148 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_157 : i32 = i;
+      i = (x_157 + 1);
+    }
+  }
+  let x_159 : i32 = count;
+  if ((x_159 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
new file mode 100644
index 0000000..06f95bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
@@ -0,0 +1,293 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_165 : i32 = *(data);
+  (*(tree)).data = x_165;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var x_170 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_175 : i32 = baseIndex;
+    let x_176 : i32 = *(treeIndex);
+    if ((x_175 <= x_176)) {
+    } else {
+      break;
+    }
+    let x_179 : i32 = *(data_1);
+    let x_180 : i32 = baseIndex;
+    let x_182 : i32 = tree_1[x_180].data;
+    if ((x_179 <= x_182)) {
+      let x_187 : i32 = baseIndex;
+      let x_189 : i32 = tree_1[x_187].leftIndex;
+      if ((x_189 == -1)) {
+        let x_194 : i32 = baseIndex;
+        let x_195 : i32 = *(treeIndex);
+        tree_1[x_194].leftIndex = x_195;
+        let x_198 : f32 = x_16.injectionSwitch.x;
+        let x_200 : f32 = x_16.injectionSwitch.y;
+        if ((x_198 < x_200)) {
+          let x_204 : i32 = *(treeIndex);
+          let x_206 : BST = tree_1[x_204];
+          param = x_206;
+          let x_207 : i32 = *(data_1);
+          param_1 = x_207;
+          makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+          let x_209 : BST = param;
+          tree_1[x_204] = x_209;
+        }
+        let x_212 : f32 = x_16.injectionSwitch.x;
+        let x_214 : f32 = x_16.injectionSwitch.y;
+        if ((x_212 < x_214)) {
+          return;
+        }
+      } else {
+        let x_218 : i32 = baseIndex;
+        let x_220 : i32 = tree_1[x_218].leftIndex;
+        baseIndex = x_220;
+        continue;
+      }
+    } else {
+      let x_222 : f32 = x_16.injectionSwitch.x;
+      let x_224 : f32 = x_16.injectionSwitch.y;
+      if ((x_222 < x_224)) {
+        let x_229 : i32 = baseIndex;
+        let x_231 : i32 = tree_1[x_229].rightIndex;
+        x_170 = x_231;
+      } else {
+        let x_232 : i32 = baseIndex;
+        let x_234 : i32 = tree_1[x_232].rightIndex;
+        x_170 = x_234;
+      }
+      let x_235 : i32 = x_170;
+      if ((x_235 == -1)) {
+        let x_240 : i32 = baseIndex;
+        let x_241 : i32 = *(treeIndex);
+        tree_1[x_240].rightIndex = x_241;
+        let x_243 : i32 = *(treeIndex);
+        let x_245 : BST = tree_1[x_243];
+        param_2 = x_245;
+        let x_246 : i32 = *(data_1);
+        param_3 = x_246;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_248 : BST = param_2;
+        tree_1[x_243] = x_248;
+        return;
+      } else {
+        let x_250 : i32 = baseIndex;
+        let x_252 : i32 = tree_1[x_250].rightIndex;
+        baseIndex = x_252;
+        continue;
+      }
+      return;
+    }
+    let x_254 : f32 = x_16.injectionSwitch.x;
+    let x_256 : f32 = x_16.injectionSwitch.y;
+    if ((x_254 > x_256)) {
+      return;
+    }
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_261 : i32;
+  index = 0;
+  loop {
+    let x_266 : i32 = index;
+    if ((x_266 != -1)) {
+    } else {
+      break;
+    }
+    let x_269 : i32 = index;
+    let x_271 : BST = tree_1[x_269];
+    currentNode = x_271;
+    let x_273 : i32 = currentNode.data;
+    let x_274 : i32 = *(target);
+    if ((x_273 == x_274)) {
+      let x_278 : i32 = *(target);
+      return x_278;
+    }
+    let x_279 : i32 = *(target);
+    let x_281 : i32 = currentNode.data;
+    if ((x_279 > x_281)) {
+      let x_287 : i32 = currentNode.rightIndex;
+      x_261 = x_287;
+    } else {
+      let x_289 : i32 = currentNode.leftIndex;
+      x_261 = x_289;
+    }
+    let x_290 : i32 = x_261;
+    index = x_290;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_91 : BST = tree_1[0];
+  param_4 = x_91;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_93 : BST = param_4;
+  tree_1[0] = x_93;
+  let x_95 : i32 = treeIndex_1;
+  treeIndex_1 = (x_95 + 1);
+  let x_97 : i32 = treeIndex_1;
+  param_6 = x_97;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_99 : i32 = treeIndex_1;
+  treeIndex_1 = (x_99 + 1);
+  let x_101 : i32 = treeIndex_1;
+  param_8 = x_101;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_103 : i32 = treeIndex_1;
+  treeIndex_1 = (x_103 + 1);
+  let x_105 : i32 = treeIndex_1;
+  param_10 = x_105;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_107 : i32 = treeIndex_1;
+  treeIndex_1 = (x_107 + 1);
+  let x_109 : i32 = treeIndex_1;
+  param_12 = x_109;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_111 : i32 = treeIndex_1;
+  treeIndex_1 = (x_111 + 1);
+  let x_113 : i32 = treeIndex_1;
+  param_14 = x_113;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_115 : i32 = treeIndex_1;
+  treeIndex_1 = (x_115 + 1);
+  let x_117 : i32 = treeIndex_1;
+  param_16 = x_117;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_119 : i32 = treeIndex_1;
+  treeIndex_1 = (x_119 + 1);
+  let x_121 : i32 = treeIndex_1;
+  param_18 = x_121;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_123 : i32 = treeIndex_1;
+  treeIndex_1 = (x_123 + 1);
+  let x_125 : i32 = treeIndex_1;
+  param_20 = x_125;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_127 : i32 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  let x_129 : i32 = treeIndex_1;
+  param_22 = x_129;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_135 : i32 = i;
+    if ((x_135 < 20)) {
+    } else {
+      break;
+    }
+    let x_138 : i32 = i;
+    param_24 = x_138;
+    let x_139 : i32 = search_i1_(&(param_24));
+    result = x_139;
+    let x_140 : i32 = i;
+    switch(x_140) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_150 : i32 = result;
+        let x_151 : i32 = i;
+        if ((x_150 == x_151)) {
+          let x_155 : i32 = count;
+          count = (x_155 + 1);
+        }
+      }
+      default: {
+        let x_144 : i32 = result;
+        if ((x_144 == -1)) {
+          let x_148 : i32 = count;
+          count = (x_148 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_157 : i32 = i;
+      i = (x_157 + 1);
+    }
+  }
+  let x_159 : i32 = count;
+  if ((x_159 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..11cdc01
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.hlsl
@@ -0,0 +1,255 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static BST tree_1[10] = (BST[10])0;
+cbuffer cbuffer_x_16 : register(b0, space0) {
+  uint4 x_16[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST tree, inout int data) {
+  const int x_165 = data;
+  tree.data = x_165;
+  tree.leftIndex = -1;
+  tree.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  int x_170 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_175 = baseIndex;
+    const int x_176 = treeIndex;
+    if ((x_175 <= x_176)) {
+    } else {
+      break;
+    }
+    const int x_179 = data_1;
+    const int x_182 = tree_1[baseIndex].data;
+    if ((x_179 <= x_182)) {
+      const int x_189 = tree_1[baseIndex].leftIndex;
+      if ((x_189 == -1)) {
+        const int x_194 = baseIndex;
+        const int x_195 = treeIndex;
+        tree_1[x_194].leftIndex = x_195;
+        const float x_198 = asfloat(x_16[0].x);
+        const float x_200 = asfloat(x_16[0].y);
+        if ((x_198 < x_200)) {
+          const int x_204 = treeIndex;
+          const BST x_206 = tree_1[x_204];
+          param = x_206;
+          const int x_207 = data_1;
+          param_1 = x_207;
+          makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+          tree_1[x_204] = param;
+        }
+        const float x_212 = asfloat(x_16[0].x);
+        const float x_214 = asfloat(x_16[0].y);
+        if ((x_212 < x_214)) {
+          return;
+        }
+      } else {
+        const int x_220 = tree_1[baseIndex].leftIndex;
+        baseIndex = x_220;
+        continue;
+      }
+    } else {
+      const float x_222 = asfloat(x_16[0].x);
+      const float x_224 = asfloat(x_16[0].y);
+      if ((x_222 < x_224)) {
+        const int x_231 = tree_1[baseIndex].rightIndex;
+        x_170 = x_231;
+      } else {
+        const int x_234 = tree_1[baseIndex].rightIndex;
+        x_170 = x_234;
+      }
+      if ((x_170 == -1)) {
+        const int x_240 = baseIndex;
+        const int x_241 = treeIndex;
+        tree_1[x_240].rightIndex = x_241;
+        const int x_243 = treeIndex;
+        const BST x_245 = tree_1[x_243];
+        param_2 = x_245;
+        const int x_246 = data_1;
+        param_3 = x_246;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree_1[x_243] = param_2;
+        return;
+      } else {
+        const int x_252 = tree_1[baseIndex].rightIndex;
+        baseIndex = x_252;
+        continue;
+      }
+      return;
+    }
+    const float x_254 = asfloat(x_16[0].x);
+    const float x_256 = asfloat(x_16[0].y);
+    if ((x_254 > x_256)) {
+      return;
+    }
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_261 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_271 = tree_1[index];
+    currentNode = x_271;
+    const int x_273 = currentNode.data;
+    const int x_274 = target;
+    if ((x_273 == x_274)) {
+      const int x_278 = target;
+      return x_278;
+    }
+    const int x_279 = target;
+    const int x_281 = currentNode.data;
+    if ((x_279 > x_281)) {
+      const int x_287 = currentNode.rightIndex;
+      x_261 = x_287;
+    } else {
+      const int x_289 = currentNode.leftIndex;
+      x_261 = x_289;
+    }
+    index = x_261;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  const BST x_91 = tree_1[0];
+  param_4 = x_91;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree_1[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  count = 0;
+  i = 0;
+  {
+    for(; (i < 20); i = (i + 1)) {
+      param_24 = i;
+      const int x_139 = search_i1_(param_24);
+      result = x_139;
+      switch(i) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          if ((result == i)) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.msl
new file mode 100644
index 0000000..17bc280
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.msl
@@ -0,0 +1,306 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const tree, thread int* const data) {
+  int const x_165 = *(data);
+  (*(tree)).data = x_165;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(constant buf0& x_16, thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper* const tint_symbol_4) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  int x_170 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_175 = baseIndex;
+    int const x_176 = *(treeIndex);
+    if ((x_175 <= x_176)) {
+    } else {
+      break;
+    }
+    int const x_179 = *(data_1);
+    int const x_180 = baseIndex;
+    int const x_182 = (*(tint_symbol_4)).arr[x_180].data;
+    if ((x_179 <= x_182)) {
+      int const x_187 = baseIndex;
+      int const x_189 = (*(tint_symbol_4)).arr[x_187].leftIndex;
+      if ((x_189 == -1)) {
+        int const x_194 = baseIndex;
+        int const x_195 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_194].leftIndex = x_195;
+        float const x_198 = x_16.injectionSwitch.x;
+        float const x_200 = x_16.injectionSwitch.y;
+        if ((x_198 < x_200)) {
+          int const x_204 = *(treeIndex);
+          BST const x_206 = (*(tint_symbol_4)).arr[x_204];
+          param = x_206;
+          int const x_207 = *(data_1);
+          param_1 = x_207;
+          makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+          BST const x_209 = param;
+          (*(tint_symbol_4)).arr[x_204] = x_209;
+        }
+        float const x_212 = x_16.injectionSwitch.x;
+        float const x_214 = x_16.injectionSwitch.y;
+        if ((x_212 < x_214)) {
+          return;
+        }
+      } else {
+        int const x_218 = baseIndex;
+        int const x_220 = (*(tint_symbol_4)).arr[x_218].leftIndex;
+        baseIndex = x_220;
+        continue;
+      }
+    } else {
+      float const x_222 = x_16.injectionSwitch.x;
+      float const x_224 = x_16.injectionSwitch.y;
+      if ((x_222 < x_224)) {
+        int const x_229 = baseIndex;
+        int const x_231 = (*(tint_symbol_4)).arr[x_229].rightIndex;
+        x_170 = x_231;
+      } else {
+        int const x_232 = baseIndex;
+        int const x_234 = (*(tint_symbol_4)).arr[x_232].rightIndex;
+        x_170 = x_234;
+      }
+      int const x_235 = x_170;
+      if ((x_235 == -1)) {
+        int const x_240 = baseIndex;
+        int const x_241 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_240].rightIndex = x_241;
+        int const x_243 = *(treeIndex);
+        BST const x_245 = (*(tint_symbol_4)).arr[x_243];
+        param_2 = x_245;
+        int const x_246 = *(data_1);
+        param_3 = x_246;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_248 = param_2;
+        (*(tint_symbol_4)).arr[x_243] = x_248;
+        return;
+      } else {
+        int const x_250 = baseIndex;
+        int const x_252 = (*(tint_symbol_4)).arr[x_250].rightIndex;
+        baseIndex = x_252;
+        continue;
+      }
+      return;
+    }
+    float const x_254 = x_16.injectionSwitch.x;
+    float const x_256 = x_16.injectionSwitch.y;
+    if ((x_254 > x_256)) {
+      return;
+    }
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper* const tint_symbol_5) {
+  int index = 0;
+  BST currentNode = {};
+  int x_261 = 0;
+  index = 0;
+  while (true) {
+    int const x_266 = index;
+    if ((x_266 != -1)) {
+    } else {
+      break;
+    }
+    int const x_269 = index;
+    BST const x_271 = (*(tint_symbol_5)).arr[x_269];
+    currentNode = x_271;
+    int const x_273 = currentNode.data;
+    int const x_274 = *(target);
+    if ((x_273 == x_274)) {
+      int const x_278 = *(target);
+      return x_278;
+    }
+    int const x_279 = *(target);
+    int const x_281 = currentNode.data;
+    if ((x_279 > x_281)) {
+      int const x_287 = currentNode.rightIndex;
+      x_261 = x_287;
+    } else {
+      int const x_289 = currentNode.leftIndex;
+      x_261 = x_289;
+    }
+    int const x_290 = x_261;
+    index = x_290;
+  }
+  return -1;
+}
+
+void main_1(constant buf0& x_16, thread tint_array_wrapper* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  BST const x_91 = (*(tint_symbol_6)).arr[0];
+  param_4 = x_91;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_93 = param_4;
+  (*(tint_symbol_6)).arr[0] = x_93;
+  int const x_95 = treeIndex_1;
+  treeIndex_1 = (x_95 + 1);
+  int const x_97 = treeIndex_1;
+  param_6 = x_97;
+  param_7 = 5;
+  insert_i1_i1_(x_16, &(param_6), &(param_7), tint_symbol_6);
+  int const x_99 = treeIndex_1;
+  treeIndex_1 = (x_99 + 1);
+  int const x_101 = treeIndex_1;
+  param_8 = x_101;
+  param_9 = 12;
+  insert_i1_i1_(x_16, &(param_8), &(param_9), tint_symbol_6);
+  int const x_103 = treeIndex_1;
+  treeIndex_1 = (x_103 + 1);
+  int const x_105 = treeIndex_1;
+  param_10 = x_105;
+  param_11 = 15;
+  insert_i1_i1_(x_16, &(param_10), &(param_11), tint_symbol_6);
+  int const x_107 = treeIndex_1;
+  treeIndex_1 = (x_107 + 1);
+  int const x_109 = treeIndex_1;
+  param_12 = x_109;
+  param_13 = 7;
+  insert_i1_i1_(x_16, &(param_12), &(param_13), tint_symbol_6);
+  int const x_111 = treeIndex_1;
+  treeIndex_1 = (x_111 + 1);
+  int const x_113 = treeIndex_1;
+  param_14 = x_113;
+  param_15 = 8;
+  insert_i1_i1_(x_16, &(param_14), &(param_15), tint_symbol_6);
+  int const x_115 = treeIndex_1;
+  treeIndex_1 = (x_115 + 1);
+  int const x_117 = treeIndex_1;
+  param_16 = x_117;
+  param_17 = 2;
+  insert_i1_i1_(x_16, &(param_16), &(param_17), tint_symbol_6);
+  int const x_119 = treeIndex_1;
+  treeIndex_1 = (x_119 + 1);
+  int const x_121 = treeIndex_1;
+  param_18 = x_121;
+  param_19 = 6;
+  insert_i1_i1_(x_16, &(param_18), &(param_19), tint_symbol_6);
+  int const x_123 = treeIndex_1;
+  treeIndex_1 = (x_123 + 1);
+  int const x_125 = treeIndex_1;
+  param_20 = x_125;
+  param_21 = 17;
+  insert_i1_i1_(x_16, &(param_20), &(param_21), tint_symbol_6);
+  int const x_127 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  int const x_129 = treeIndex_1;
+  param_22 = x_129;
+  param_23 = 13;
+  insert_i1_i1_(x_16, &(param_22), &(param_23), tint_symbol_6);
+  count = 0;
+  i = 0;
+  while (true) {
+    int const x_135 = i;
+    if ((x_135 < 20)) {
+    } else {
+      break;
+    }
+    int const x_138 = i;
+    param_24 = x_138;
+    int const x_139 = search_i1_(&(param_24), tint_symbol_6);
+    result = x_139;
+    int const x_140 = i;
+    switch(x_140) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_150 = result;
+        int const x_151 = i;
+        if ((x_150 == x_151)) {
+          int const x_155 = count;
+          count = (x_155 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_144 = result;
+        if ((x_144 == -1)) {
+          int const x_148 = count;
+          count = (x_148 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_157 = i;
+      i = (x_157 + 1);
+    }
+  }
+  int const x_159 = count;
+  if ((x_159 == 20)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_16 [[buffer(0)]]) {
+  thread tint_array_wrapper tint_symbol_8 = {};
+  thread float4 tint_symbol_9 = 0.0f;
+  main_1(x_16, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..990bb9a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.spvasm
@@ -0,0 +1,539 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 355
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree_1 "tree_1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_16 "x_16"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %x_170 "x_170"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_261 "x_261"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_24 "param_24"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_16 NonWritable
+               OpDecorate %x_16 DescriptorSet 0
+               OpDecorate %x_16 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+     %tree_1 = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_16 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %40 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %46 = OpConstantNull %int
+         %48 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %161 = OpTypeFunction %int %_ptr_Function_int
+        %202 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %341 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %342 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %343 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %20
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %27 = OpLabel
+         %29 = OpLoad %int %data
+         %32 = OpAccessChain %_ptr_Function_int %tree %uint_0
+               OpStore %32 %29
+         %35 = OpAccessChain %_ptr_Function_int %tree %uint_1
+               OpStore %35 %int_n1
+         %39 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %39 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %40
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %44 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %46
+      %param = OpVariable %_ptr_Function_BST Function %48
+    %param_1 = OpVariable %_ptr_Function_int Function %46
+      %x_170 = OpVariable %_ptr_Function_int Function %46
+    %param_2 = OpVariable %_ptr_Function_BST Function %48
+    %param_3 = OpVariable %_ptr_Function_int Function %46
+               OpStore %baseIndex %int_0
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %baseIndex
+         %60 = OpLoad %int %treeIndex
+         %61 = OpSLessThanEqual %bool %58 %60
+               OpSelectionMerge %63 None
+               OpBranchConditional %61 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %55
+         %63 = OpLabel
+         %67 = OpLoad %int %data_1
+         %68 = OpLoad %int %baseIndex
+         %70 = OpAccessChain %_ptr_Private_int %tree_1 %68 %uint_0
+         %71 = OpLoad %int %70
+         %72 = OpSLessThanEqual %bool %67 %71
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpLoad %int %baseIndex
+         %77 = OpAccessChain %_ptr_Private_int %tree_1 %76 %uint_1
+         %78 = OpLoad %int %77
+         %79 = OpIEqual %bool %78 %int_n1
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpLoad %int %baseIndex
+         %85 = OpLoad %int %treeIndex
+         %86 = OpAccessChain %_ptr_Private_int %tree_1 %83 %uint_1
+               OpStore %86 %85
+         %88 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+         %89 = OpLoad %float %88
+         %90 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+         %91 = OpLoad %float %90
+         %92 = OpFOrdLessThan %bool %89 %91
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %93
+         %94 = OpLabel
+         %96 = OpLoad %int %treeIndex
+         %98 = OpAccessChain %_ptr_Private_BST %tree_1 %96
+         %99 = OpLoad %BST %98
+               OpStore %param %99
+        %101 = OpLoad %int %data_1
+               OpStore %param_1 %101
+        %102 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+        %105 = OpLoad %BST %param
+        %106 = OpAccessChain %_ptr_Private_BST %tree_1 %96
+               OpStore %106 %105
+               OpBranch %93
+         %93 = OpLabel
+        %107 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+        %108 = OpLoad %float %107
+        %109 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+        %110 = OpLoad %float %109
+        %111 = OpFOrdLessThan %bool %108 %110
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %112
+        %113 = OpLabel
+               OpReturn
+        %112 = OpLabel
+               OpBranch %80
+         %82 = OpLabel
+        %114 = OpLoad %int %baseIndex
+        %115 = OpAccessChain %_ptr_Private_int %tree_1 %114 %uint_1
+        %116 = OpLoad %int %115
+               OpStore %baseIndex %116
+               OpBranch %56
+         %80 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+        %120 = OpLoad %float %119
+        %121 = OpFOrdLessThan %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+        %125 = OpLoad %int %baseIndex
+        %126 = OpAccessChain %_ptr_Private_int %tree_1 %125 %uint_2
+        %127 = OpLoad %int %126
+               OpStore %x_170 %127
+               OpBranch %122
+        %124 = OpLabel
+        %128 = OpLoad %int %baseIndex
+        %129 = OpAccessChain %_ptr_Private_int %tree_1 %128 %uint_2
+        %130 = OpLoad %int %129
+               OpStore %x_170 %130
+               OpBranch %122
+        %122 = OpLabel
+        %131 = OpLoad %int %x_170
+        %132 = OpIEqual %bool %131 %int_n1
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %135
+        %134 = OpLabel
+        %136 = OpLoad %int %baseIndex
+        %138 = OpLoad %int %treeIndex
+        %139 = OpAccessChain %_ptr_Private_int %tree_1 %136 %uint_2
+               OpStore %139 %138
+        %141 = OpLoad %int %treeIndex
+        %142 = OpAccessChain %_ptr_Private_BST %tree_1 %141
+        %143 = OpLoad %BST %142
+               OpStore %param_2 %143
+        %145 = OpLoad %int %data_1
+               OpStore %param_3 %145
+        %146 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %149 = OpLoad %BST %param_2
+        %150 = OpAccessChain %_ptr_Private_BST %tree_1 %141
+               OpStore %150 %149
+               OpReturn
+        %135 = OpLabel
+        %151 = OpLoad %int %baseIndex
+        %152 = OpAccessChain %_ptr_Private_int %tree_1 %151 %uint_2
+        %153 = OpLoad %int %152
+               OpStore %baseIndex %153
+               OpBranch %56
+        %133 = OpLabel
+               OpReturn
+         %73 = OpLabel
+        %154 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+        %155 = OpLoad %float %154
+        %156 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+        %157 = OpLoad %float %156
+        %158 = OpFOrdGreaterThan %bool %155 %157
+               OpSelectionMerge %159 None
+               OpBranchConditional %158 %160 %159
+        %160 = OpLabel
+               OpReturn
+        %159 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranch %54
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %161
+     %target = OpFunctionParameter %_ptr_Function_int
+        %164 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %46
+%currentNode = OpVariable %_ptr_Function_BST Function %48
+      %x_261 = OpVariable %_ptr_Function_int Function %46
+               OpStore %index %int_0
+               OpBranch %168
+        %168 = OpLabel
+               OpLoopMerge %169 %170 None
+               OpBranch %171
+        %171 = OpLabel
+        %172 = OpLoad %int %index
+        %173 = OpINotEqual %bool %172 %int_n1
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+               OpBranch %174
+        %176 = OpLabel
+               OpBranch %169
+        %174 = OpLabel
+        %177 = OpLoad %int %index
+        %178 = OpAccessChain %_ptr_Private_BST %tree_1 %177
+        %179 = OpLoad %BST %178
+               OpStore %currentNode %179
+        %180 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %181 = OpLoad %int %180
+        %183 = OpLoad %int %target
+        %184 = OpIEqual %bool %181 %183
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %185
+        %186 = OpLabel
+        %188 = OpLoad %int %target
+               OpReturnValue %188
+        %185 = OpLabel
+        %190 = OpLoad %int %target
+        %191 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %192 = OpLoad %int %191
+        %193 = OpSGreaterThan %bool %190 %192
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %196
+        %195 = OpLabel
+        %197 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %198 = OpLoad %int %197
+               OpStore %x_261 %198
+               OpBranch %194
+        %196 = OpLabel
+        %199 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %200 = OpLoad %int %199
+               OpStore %x_261 %200
+               OpBranch %194
+        %194 = OpLabel
+        %201 = OpLoad %int %x_261
+               OpStore %index %201
+               OpBranch %170
+        %170 = OpLabel
+               OpBranch %168
+        %169 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %202
+        %204 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %46
+    %param_4 = OpVariable %_ptr_Function_BST Function %48
+    %param_5 = OpVariable %_ptr_Function_int Function %46
+    %param_6 = OpVariable %_ptr_Function_int Function %46
+    %param_7 = OpVariable %_ptr_Function_int Function %46
+    %param_8 = OpVariable %_ptr_Function_int Function %46
+    %param_9 = OpVariable %_ptr_Function_int Function %46
+   %param_10 = OpVariable %_ptr_Function_int Function %46
+   %param_11 = OpVariable %_ptr_Function_int Function %46
+   %param_12 = OpVariable %_ptr_Function_int Function %46
+   %param_13 = OpVariable %_ptr_Function_int Function %46
+   %param_14 = OpVariable %_ptr_Function_int Function %46
+   %param_15 = OpVariable %_ptr_Function_int Function %46
+   %param_16 = OpVariable %_ptr_Function_int Function %46
+   %param_17 = OpVariable %_ptr_Function_int Function %46
+   %param_18 = OpVariable %_ptr_Function_int Function %46
+   %param_19 = OpVariable %_ptr_Function_int Function %46
+   %param_20 = OpVariable %_ptr_Function_int Function %46
+   %param_21 = OpVariable %_ptr_Function_int Function %46
+   %param_22 = OpVariable %_ptr_Function_int Function %46
+   %param_23 = OpVariable %_ptr_Function_int Function %46
+      %count = OpVariable %_ptr_Function_int Function %46
+          %i = OpVariable %_ptr_Function_int Function %46
+     %result = OpVariable %_ptr_Function_int Function %46
+   %param_24 = OpVariable %_ptr_Function_int Function %46
+               OpStore %treeIndex_1 %int_0
+        %230 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+        %231 = OpLoad %BST %230
+               OpStore %param_4 %231
+               OpStore %param_5 %int_9
+        %233 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %236 = OpLoad %BST %param_4
+        %237 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+               OpStore %237 %236
+        %238 = OpLoad %int %treeIndex_1
+        %240 = OpIAdd %int %238 %int_1
+               OpStore %treeIndex_1 %240
+        %241 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %241
+               OpStore %param_7 %int_5
+        %243 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %246 = OpLoad %int %treeIndex_1
+        %247 = OpIAdd %int %246 %int_1
+               OpStore %treeIndex_1 %247
+        %248 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %248
+               OpStore %param_9 %int_12
+        %250 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %253 = OpLoad %int %treeIndex_1
+        %254 = OpIAdd %int %253 %int_1
+               OpStore %treeIndex_1 %254
+        %255 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %255
+               OpStore %param_11 %int_15
+        %257 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %260 = OpLoad %int %treeIndex_1
+        %261 = OpIAdd %int %260 %int_1
+               OpStore %treeIndex_1 %261
+        %262 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %262
+               OpStore %param_13 %int_7
+        %264 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %267 = OpLoad %int %treeIndex_1
+        %268 = OpIAdd %int %267 %int_1
+               OpStore %treeIndex_1 %268
+        %269 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %269
+               OpStore %param_15 %int_8
+        %271 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %274 = OpLoad %int %treeIndex_1
+        %275 = OpIAdd %int %274 %int_1
+               OpStore %treeIndex_1 %275
+        %276 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %276
+               OpStore %param_17 %int_2
+        %278 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %281 = OpLoad %int %treeIndex_1
+        %282 = OpIAdd %int %281 %int_1
+               OpStore %treeIndex_1 %282
+        %283 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %283
+               OpStore %param_19 %int_6
+        %285 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %288 = OpLoad %int %treeIndex_1
+        %289 = OpIAdd %int %288 %int_1
+               OpStore %treeIndex_1 %289
+        %290 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %290
+               OpStore %param_21 %int_17
+        %292 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %295 = OpLoad %int %treeIndex_1
+        %296 = OpIAdd %int %295 %int_1
+               OpStore %treeIndex_1 %296
+        %297 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %297
+               OpStore %param_23 %int_13
+        %299 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %302
+        %302 = OpLabel
+               OpLoopMerge %303 %304 None
+               OpBranch %305
+        %305 = OpLabel
+        %306 = OpLoad %int %i
+        %308 = OpSLessThan %bool %306 %int_20
+               OpSelectionMerge %309 None
+               OpBranchConditional %308 %310 %311
+        %310 = OpLabel
+               OpBranch %309
+        %311 = OpLabel
+               OpBranch %303
+        %309 = OpLabel
+        %312 = OpLoad %int %i
+               OpStore %param_24 %312
+        %313 = OpFunctionCall %int %search_i1_ %param_24
+               OpStore %result %313
+        %315 = OpLoad %int %i
+               OpSelectionMerge %316 None
+               OpSwitch %315 %317 2 %318 5 %318 6 %318 7 %318 8 %318 9 %318 12 %318 13 %318 15 %318 17 %318
+        %318 = OpLabel
+        %319 = OpLoad %int %result
+        %320 = OpLoad %int %i
+        %321 = OpIEqual %bool %319 %320
+               OpSelectionMerge %322 None
+               OpBranchConditional %321 %323 %322
+        %323 = OpLabel
+        %324 = OpLoad %int %count
+        %325 = OpIAdd %int %324 %int_1
+               OpStore %count %325
+               OpBranch %322
+        %322 = OpLabel
+               OpBranch %316
+        %317 = OpLabel
+        %326 = OpLoad %int %result
+        %327 = OpIEqual %bool %326 %int_n1
+               OpSelectionMerge %328 None
+               OpBranchConditional %327 %329 %328
+        %329 = OpLabel
+        %330 = OpLoad %int %count
+        %331 = OpIAdd %int %330 %int_1
+               OpStore %count %331
+               OpBranch %328
+        %328 = OpLabel
+               OpBranch %316
+        %316 = OpLabel
+               OpBranch %304
+        %304 = OpLabel
+        %332 = OpLoad %int %i
+        %333 = OpIAdd %int %332 %int_1
+               OpStore %i %333
+               OpBranch %302
+        %303 = OpLabel
+        %334 = OpLoad %int %count
+        %335 = OpIEqual %bool %334 %int_20
+               OpSelectionMerge %336 None
+               OpBranchConditional %335 %337 %338
+        %337 = OpLabel
+               OpStore %x_GLF_color %341
+               OpBranch %336
+        %338 = OpLabel
+               OpStore %x_GLF_color %342
+               OpBranch %336
+        %336 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %343
+%tint_symbol = OpFunctionParameter %main_out
+        %347 = OpLabel
+        %348 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %348
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %202
+        %350 = OpLabel
+        %351 = OpFunctionCall %void %main_1
+        %353 = OpLoad %v4float %x_GLF_color
+        %354 = OpCompositeConstruct %main_out %353
+        %352 = OpFunctionCall %void %tint_symbol_2 %354
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..06f95bb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl.expected.wgsl
@@ -0,0 +1,293 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_165 : i32 = *(data);
+  (*(tree)).data = x_165;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var x_170 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_175 : i32 = baseIndex;
+    let x_176 : i32 = *(treeIndex);
+    if ((x_175 <= x_176)) {
+    } else {
+      break;
+    }
+    let x_179 : i32 = *(data_1);
+    let x_180 : i32 = baseIndex;
+    let x_182 : i32 = tree_1[x_180].data;
+    if ((x_179 <= x_182)) {
+      let x_187 : i32 = baseIndex;
+      let x_189 : i32 = tree_1[x_187].leftIndex;
+      if ((x_189 == -1)) {
+        let x_194 : i32 = baseIndex;
+        let x_195 : i32 = *(treeIndex);
+        tree_1[x_194].leftIndex = x_195;
+        let x_198 : f32 = x_16.injectionSwitch.x;
+        let x_200 : f32 = x_16.injectionSwitch.y;
+        if ((x_198 < x_200)) {
+          let x_204 : i32 = *(treeIndex);
+          let x_206 : BST = tree_1[x_204];
+          param = x_206;
+          let x_207 : i32 = *(data_1);
+          param_1 = x_207;
+          makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+          let x_209 : BST = param;
+          tree_1[x_204] = x_209;
+        }
+        let x_212 : f32 = x_16.injectionSwitch.x;
+        let x_214 : f32 = x_16.injectionSwitch.y;
+        if ((x_212 < x_214)) {
+          return;
+        }
+      } else {
+        let x_218 : i32 = baseIndex;
+        let x_220 : i32 = tree_1[x_218].leftIndex;
+        baseIndex = x_220;
+        continue;
+      }
+    } else {
+      let x_222 : f32 = x_16.injectionSwitch.x;
+      let x_224 : f32 = x_16.injectionSwitch.y;
+      if ((x_222 < x_224)) {
+        let x_229 : i32 = baseIndex;
+        let x_231 : i32 = tree_1[x_229].rightIndex;
+        x_170 = x_231;
+      } else {
+        let x_232 : i32 = baseIndex;
+        let x_234 : i32 = tree_1[x_232].rightIndex;
+        x_170 = x_234;
+      }
+      let x_235 : i32 = x_170;
+      if ((x_235 == -1)) {
+        let x_240 : i32 = baseIndex;
+        let x_241 : i32 = *(treeIndex);
+        tree_1[x_240].rightIndex = x_241;
+        let x_243 : i32 = *(treeIndex);
+        let x_245 : BST = tree_1[x_243];
+        param_2 = x_245;
+        let x_246 : i32 = *(data_1);
+        param_3 = x_246;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_248 : BST = param_2;
+        tree_1[x_243] = x_248;
+        return;
+      } else {
+        let x_250 : i32 = baseIndex;
+        let x_252 : i32 = tree_1[x_250].rightIndex;
+        baseIndex = x_252;
+        continue;
+      }
+      return;
+    }
+    let x_254 : f32 = x_16.injectionSwitch.x;
+    let x_256 : f32 = x_16.injectionSwitch.y;
+    if ((x_254 > x_256)) {
+      return;
+    }
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_261 : i32;
+  index = 0;
+  loop {
+    let x_266 : i32 = index;
+    if ((x_266 != -1)) {
+    } else {
+      break;
+    }
+    let x_269 : i32 = index;
+    let x_271 : BST = tree_1[x_269];
+    currentNode = x_271;
+    let x_273 : i32 = currentNode.data;
+    let x_274 : i32 = *(target);
+    if ((x_273 == x_274)) {
+      let x_278 : i32 = *(target);
+      return x_278;
+    }
+    let x_279 : i32 = *(target);
+    let x_281 : i32 = currentNode.data;
+    if ((x_279 > x_281)) {
+      let x_287 : i32 = currentNode.rightIndex;
+      x_261 = x_287;
+    } else {
+      let x_289 : i32 = currentNode.leftIndex;
+      x_261 = x_289;
+    }
+    let x_290 : i32 = x_261;
+    index = x_290;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_91 : BST = tree_1[0];
+  param_4 = x_91;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_93 : BST = param_4;
+  tree_1[0] = x_93;
+  let x_95 : i32 = treeIndex_1;
+  treeIndex_1 = (x_95 + 1);
+  let x_97 : i32 = treeIndex_1;
+  param_6 = x_97;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_99 : i32 = treeIndex_1;
+  treeIndex_1 = (x_99 + 1);
+  let x_101 : i32 = treeIndex_1;
+  param_8 = x_101;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_103 : i32 = treeIndex_1;
+  treeIndex_1 = (x_103 + 1);
+  let x_105 : i32 = treeIndex_1;
+  param_10 = x_105;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_107 : i32 = treeIndex_1;
+  treeIndex_1 = (x_107 + 1);
+  let x_109 : i32 = treeIndex_1;
+  param_12 = x_109;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_111 : i32 = treeIndex_1;
+  treeIndex_1 = (x_111 + 1);
+  let x_113 : i32 = treeIndex_1;
+  param_14 = x_113;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_115 : i32 = treeIndex_1;
+  treeIndex_1 = (x_115 + 1);
+  let x_117 : i32 = treeIndex_1;
+  param_16 = x_117;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_119 : i32 = treeIndex_1;
+  treeIndex_1 = (x_119 + 1);
+  let x_121 : i32 = treeIndex_1;
+  param_18 = x_121;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_123 : i32 = treeIndex_1;
+  treeIndex_1 = (x_123 + 1);
+  let x_125 : i32 = treeIndex_1;
+  param_20 = x_125;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_127 : i32 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  let x_129 : i32 = treeIndex_1;
+  param_22 = x_129;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_135 : i32 = i;
+    if ((x_135 < 20)) {
+    } else {
+      break;
+    }
+    let x_138 : i32 = i;
+    param_24 = x_138;
+    let x_139 : i32 = search_i1_(&(param_24));
+    result = x_139;
+    let x_140 : i32 = i;
+    switch(x_140) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_150 : i32 = result;
+        let x_151 : i32 = i;
+        if ((x_150 == x_151)) {
+          let x_155 : i32 = count;
+          count = (x_155 + 1);
+        }
+      }
+      default: {
+        let x_144 : i32 = result;
+        if ((x_144 == -1)) {
+          let x_148 : i32 = count;
+          count = (x_148 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_157 : i32 = i;
+      i = (x_157 + 1);
+    }
+  }
+  let x_159 : i32 = count;
+  if ((x_159 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm
new file mode 100644
index 0000000..6c9029f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm
@@ -0,0 +1,420 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode(struct-BST-i1-i1-i11;i1;"
+               OpName %node "node"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert(i1;i1;"
+               OpName %treeIndex "treeIndex"
+               OpName %data_0 "data"
+               OpName %search_i1_ "search(i1;"
+               OpName %target "target"
+               OpName %baseIndex "baseIndex"
+               OpName %tree "tree"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %treeIndex_0 "treeIndex"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %param_9 "param"
+               OpName %param_10 "param"
+               OpName %param_11 "param"
+               OpName %param_12 "param"
+               OpName %param_13 "param"
+               OpName %param_14 "param"
+               OpName %param_15 "param"
+               OpName %param_16 "param"
+               OpName %param_17 "param"
+               OpName %param_18 "param"
+               OpName %param_19 "param"
+               OpName %param_20 "param"
+               OpName %param_21 "param"
+               OpName %param_22 "param"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_23 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %47 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %51 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+         %52 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %53 = OpTypeFunction %int %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+       %tree = OpVariable %_ptr_Private__arr_BST_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %80 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %81 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+       %main = OpFunction %void None %47
+         %82 = OpLabel
+%treeIndex_0 = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_BST Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+    %param_5 = OpVariable %_ptr_Function_int Function
+    %param_6 = OpVariable %_ptr_Function_int Function
+    %param_7 = OpVariable %_ptr_Function_int Function
+    %param_8 = OpVariable %_ptr_Function_int Function
+    %param_9 = OpVariable %_ptr_Function_int Function
+   %param_10 = OpVariable %_ptr_Function_int Function
+   %param_11 = OpVariable %_ptr_Function_int Function
+   %param_12 = OpVariable %_ptr_Function_int Function
+   %param_13 = OpVariable %_ptr_Function_int Function
+   %param_14 = OpVariable %_ptr_Function_int Function
+   %param_15 = OpVariable %_ptr_Function_int Function
+   %param_16 = OpVariable %_ptr_Function_int Function
+   %param_17 = OpVariable %_ptr_Function_int Function
+   %param_18 = OpVariable %_ptr_Function_int Function
+   %param_19 = OpVariable %_ptr_Function_int Function
+   %param_20 = OpVariable %_ptr_Function_int Function
+   %param_21 = OpVariable %_ptr_Function_int Function
+   %param_22 = OpVariable %_ptr_Function_int Function
+      %count = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+     %result = OpVariable %_ptr_Function_int Function
+   %param_23 = OpVariable %_ptr_Function_int Function
+               OpStore %treeIndex_0 %int_0
+         %83 = OpAccessChain %_ptr_Private_BST %tree %int_0
+         %84 = OpLoad %BST %83
+               OpStore %param_3 %84
+               OpStore %param_4 %int_9
+         %85 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_3 %param_4
+         %86 = OpLoad %BST %param_3
+         %87 = OpAccessChain %_ptr_Private_BST %tree %int_0
+               OpStore %87 %86
+         %88 = OpLoad %int %treeIndex_0
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %treeIndex_0 %89
+         %90 = OpLoad %int %treeIndex_0
+               OpStore %param_5 %90
+               OpStore %param_6 %int_5
+         %91 = OpFunctionCall %void %insert_i1_i1_ %param_5 %param_6
+         %92 = OpLoad %int %treeIndex_0
+         %93 = OpIAdd %int %92 %int_1
+               OpStore %treeIndex_0 %93
+         %94 = OpLoad %int %treeIndex_0
+               OpStore %param_7 %94
+               OpStore %param_8 %int_12
+         %95 = OpFunctionCall %void %insert_i1_i1_ %param_7 %param_8
+         %96 = OpLoad %int %treeIndex_0
+         %97 = OpIAdd %int %96 %int_1
+               OpStore %treeIndex_0 %97
+         %98 = OpLoad %int %treeIndex_0
+               OpStore %param_9 %98
+               OpStore %param_10 %int_15
+         %99 = OpFunctionCall %void %insert_i1_i1_ %param_9 %param_10
+        %100 = OpLoad %int %treeIndex_0
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %treeIndex_0 %101
+        %102 = OpLoad %int %treeIndex_0
+               OpStore %param_11 %102
+               OpStore %param_12 %int_7
+        %103 = OpFunctionCall %void %insert_i1_i1_ %param_11 %param_12
+        %104 = OpLoad %int %treeIndex_0
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %treeIndex_0 %105
+        %106 = OpLoad %int %treeIndex_0
+               OpStore %param_13 %106
+               OpStore %param_14 %int_8
+        %107 = OpFunctionCall %void %insert_i1_i1_ %param_13 %param_14
+        %108 = OpLoad %int %treeIndex_0
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %treeIndex_0 %109
+        %110 = OpLoad %int %treeIndex_0
+               OpStore %param_15 %110
+               OpStore %param_16 %int_2
+        %111 = OpFunctionCall %void %insert_i1_i1_ %param_15 %param_16
+        %112 = OpLoad %int %treeIndex_0
+        %113 = OpIAdd %int %112 %int_1
+               OpStore %treeIndex_0 %113
+        %114 = OpLoad %int %treeIndex_0
+               OpStore %param_17 %114
+               OpStore %param_18 %int_6
+        %115 = OpFunctionCall %void %insert_i1_i1_ %param_17 %param_18
+        %116 = OpLoad %int %treeIndex_0
+        %117 = OpIAdd %int %116 %int_1
+               OpStore %treeIndex_0 %117
+        %118 = OpLoad %int %treeIndex_0
+               OpStore %param_19 %118
+               OpStore %param_20 %int_17
+        %119 = OpFunctionCall %void %insert_i1_i1_ %param_19 %param_20
+        %120 = OpLoad %int %treeIndex_0
+        %121 = OpIAdd %int %120 %int_1
+               OpStore %treeIndex_0 %121
+        %122 = OpLoad %int %treeIndex_0
+               OpStore %param_21 %122
+               OpStore %param_22 %int_13
+        %123 = OpFunctionCall %void %insert_i1_i1_ %param_21 %param_22
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %124
+        %124 = OpLabel
+               OpLoopMerge %125 %126 None
+               OpBranch %127
+        %127 = OpLabel
+        %128 = OpLoad %int %i
+        %129 = OpSLessThan %bool %128 %int_20
+               OpBranchConditional %129 %130 %125
+        %130 = OpLabel
+        %131 = OpLoad %int %i
+               OpStore %param_23 %131
+        %132 = OpFunctionCall %int %search_i1_ %param_23
+               OpStore %result %132
+        %133 = OpLoad %int %i
+               OpSelectionMerge %134 None
+               OpSwitch %133 %135 9 %136 5 %136 12 %136 15 %136 7 %136 8 %136 2 %136 6 %136 17 %136 13 %136
+        %135 = OpLabel
+        %137 = OpLoad %int %result
+        %138 = OpIEqual %bool %137 %int_n1
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %count
+        %142 = OpIAdd %int %141 %int_1
+               OpStore %count %142
+               OpBranch %139
+        %139 = OpLabel
+               OpBranch %134
+        %136 = OpLabel
+        %143 = OpLoad %int %result
+        %144 = OpLoad %int %i
+        %145 = OpIEqual %bool %143 %144
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpLoad %int %count
+        %149 = OpIAdd %int %148 %int_1
+               OpStore %count %149
+               OpBranch %146
+        %146 = OpLabel
+               OpBranch %134
+        %134 = OpLabel
+               OpBranch %126
+        %126 = OpLabel
+        %150 = OpLoad %int %i
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %i %151
+               OpBranch %124
+        %125 = OpLabel
+        %152 = OpLoad %int %count
+        %153 = OpIEqual %bool %152 %int_20
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpStore %_GLF_color %80
+               OpBranch %154
+        %156 = OpLabel
+               OpStore %_GLF_color %81
+               OpBranch %154
+        %154 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %51
+       %node = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+        %157 = OpLabel
+        %158 = OpLoad %int %data
+        %159 = OpAccessChain %_ptr_Function_int %node %int_0
+               OpStore %159 %158
+        %160 = OpAccessChain %_ptr_Function_int %node %int_1
+               OpStore %160 %int_n1
+        %161 = OpAccessChain %_ptr_Function_int %node %int_2
+               OpStore %161 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %52
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_0 = OpFunctionParameter %_ptr_Function_int
+        %162 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_BST Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_BST Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+               OpStore %baseIndex %int_0
+               OpBranch %163
+        %163 = OpLabel
+               OpLoopMerge %164 %165 None
+               OpBranch %166
+        %166 = OpLabel
+        %167 = OpLoad %int %baseIndex
+        %168 = OpLoad %int %treeIndex
+        %169 = OpSLessThanEqual %bool %167 %168
+               OpBranchConditional %169 %170 %164
+        %170 = OpLabel
+        %171 = OpLoad %int %data_0
+        %172 = OpLoad %int %baseIndex
+        %173 = OpAccessChain %_ptr_Private_int %tree %172 %int_0
+        %174 = OpLoad %int %173
+        %175 = OpSLessThanEqual %bool %171 %174
+               OpSelectionMerge %176 None
+               OpBranchConditional %175 %177 %178
+        %177 = OpLabel
+        %179 = OpLoad %int %baseIndex
+        %180 = OpAccessChain %_ptr_Private_int %tree %179 %int_1
+        %181 = OpLoad %int %180
+        %182 = OpIEqual %bool %181 %int_n1
+               OpSelectionMerge %183 None
+               OpBranchConditional %182 %184 %185
+        %184 = OpLabel
+        %186 = OpLoad %int %baseIndex
+        %187 = OpLoad %int %treeIndex
+        %188 = OpAccessChain %_ptr_Private_int %tree %186 %int_1
+               OpStore %188 %187
+        %189 = OpLoad %int %treeIndex
+        %190 = OpAccessChain %_ptr_Private_BST %tree %189
+        %191 = OpLoad %BST %190
+               OpStore %param %191
+        %192 = OpLoad %int %data_0
+               OpStore %param_0 %192
+        %193 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_0
+        %194 = OpLoad %BST %param
+        %195 = OpAccessChain %_ptr_Private_BST %tree %189
+               OpStore %195 %194
+               OpReturn
+        %185 = OpLabel
+        %196 = OpLoad %int %baseIndex
+        %197 = OpAccessChain %_ptr_Private_int %tree %196 %int_1
+        %198 = OpLoad %int %197
+               OpStore %baseIndex %198
+               OpBranch %165
+        %183 = OpLabel
+               OpUnreachable
+        %178 = OpLabel
+        %199 = OpLoad %int %baseIndex
+        %200 = OpAccessChain %_ptr_Private_int %tree %199 %int_2
+        %201 = OpLoad %int %200
+        %202 = OpIEqual %bool %201 %int_n1
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %205
+        %204 = OpLabel
+        %206 = OpLoad %int %baseIndex
+        %207 = OpLoad %int %treeIndex
+        %208 = OpAccessChain %_ptr_Private_int %tree %206 %int_2
+               OpStore %208 %207
+        %209 = OpLoad %int %treeIndex
+        %210 = OpAccessChain %_ptr_Private_BST %tree %209
+        %211 = OpLoad %BST %210
+               OpStore %param_1 %211
+        %212 = OpLoad %int %data_0
+               OpStore %param_2 %212
+        %213 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_1 %param_2
+        %214 = OpLoad %BST %param_1
+        %215 = OpAccessChain %_ptr_Private_BST %tree %209
+               OpStore %215 %214
+               OpReturn
+        %205 = OpLabel
+        %216 = OpLoad %int %baseIndex
+        %217 = OpAccessChain %_ptr_Private_int %tree %216 %int_2
+        %218 = OpLoad %int %217
+               OpStore %baseIndex %218
+               OpBranch %165
+        %203 = OpLabel
+               OpUnreachable
+        %176 = OpLabel
+               OpUnreachable
+        %165 = OpLabel
+               OpBranch %163
+        %164 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %53
+     %target = OpFunctionParameter %_ptr_Function_int
+        %219 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function
+%currentNode = OpVariable %_ptr_Function_BST Function
+        %220 = OpVariable %_ptr_Function_int Function
+               OpStore %index %int_0
+               OpBranch %221
+        %221 = OpLabel
+               OpLoopMerge %222 %223 None
+               OpBranch %224
+        %224 = OpLabel
+        %225 = OpLoad %int %index
+        %226 = OpINotEqual %bool %225 %int_n1
+               OpBranchConditional %226 %227 %222
+        %227 = OpLabel
+        %228 = OpLoad %int %index
+        %229 = OpAccessChain %_ptr_Private_BST %tree %228
+        %230 = OpLoad %BST %229
+               OpStore %currentNode %230
+        %231 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %232 = OpLoad %int %231
+        %233 = OpLoad %int %target
+        %234 = OpIEqual %bool %232 %233
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %237 = OpLoad %int %target
+               OpReturnValue %237
+        %235 = OpLabel
+        %238 = OpLoad %int %target
+        %239 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %240 = OpLoad %int %239
+        %241 = OpSGreaterThan %bool %238 %240
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %244
+        %243 = OpLabel
+        %245 = OpAccessChain %_ptr_Function_int %currentNode %int_2
+        %246 = OpLoad %int %245
+               OpStore %220 %246
+               OpBranch %242
+        %244 = OpLabel
+        %247 = OpAccessChain %_ptr_Function_int %currentNode %int_1
+        %248 = OpLoad %int %247
+               OpStore %220 %248
+               OpBranch %242
+        %242 = OpLabel
+        %249 = OpLoad %int %220
+               OpStore %index %249
+               OpBranch %223
+        %223 = OpLabel
+               OpBranch %221
+        %222 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1a82ba8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,232 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static BST tree[10] = (BST[10])0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST node, inout int data) {
+  const int x_158 = data;
+  node.data = x_158;
+  node.leftIndex = -1;
+  node.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_167 = baseIndex;
+    const int x_168 = treeIndex;
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    const int x_171 = data_1;
+    const int x_174 = tree[baseIndex].data;
+    if ((x_171 <= x_174)) {
+      const int x_181 = tree[baseIndex].leftIndex;
+      if ((x_181 == -1)) {
+        const int x_186 = baseIndex;
+        const int x_187 = treeIndex;
+        tree[x_186].leftIndex = x_187;
+        const int x_189 = treeIndex;
+        const BST x_191 = tree[x_189];
+        param = x_191;
+        const int x_192 = data_1;
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree[x_189] = param;
+        return;
+      } else {
+        const int x_198 = tree[baseIndex].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      const int x_201 = tree[baseIndex].rightIndex;
+      if ((x_201 == -1)) {
+        const int x_206 = baseIndex;
+        const int x_207 = treeIndex;
+        tree[x_206].rightIndex = x_207;
+        const int x_209 = treeIndex;
+        const BST x_211 = tree[x_209];
+        param_2 = x_211;
+        const int x_212 = data_1;
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree[x_209] = param_2;
+        return;
+      } else {
+        const int x_218 = tree[baseIndex].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_220 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_230 = tree[index];
+    currentNode = x_230;
+    const int x_232 = currentNode.data;
+    const int x_233 = target;
+    if ((x_232 == x_233)) {
+      const int x_237 = target;
+      return x_237;
+    }
+    const int x_238 = target;
+    const int x_240 = currentNode.data;
+    if ((x_238 > x_240)) {
+      const int x_246 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      const int x_248 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    index = x_220;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  const BST x_84 = tree[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  count = 0;
+  i = 0;
+  {
+    for(; (i < 20); i = (i + 1)) {
+      param_24 = i;
+      const int x_132 = search_i1_(param_24);
+      result = x_132;
+      switch(i) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          if ((result == i)) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..02ef450
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.msl
@@ -0,0 +1,281 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const node, thread int* const data) {
+  int const x_158 = *(data);
+  (*(node)).data = x_158;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper* const tint_symbol_4) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_167 = baseIndex;
+    int const x_168 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    int const x_171 = *(data_1);
+    int const x_172 = baseIndex;
+    int const x_174 = (*(tint_symbol_4)).arr[x_172].data;
+    if ((x_171 <= x_174)) {
+      int const x_179 = baseIndex;
+      int const x_181 = (*(tint_symbol_4)).arr[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        int const x_186 = baseIndex;
+        int const x_187 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_186].leftIndex = x_187;
+        int const x_189 = *(treeIndex);
+        BST const x_191 = (*(tint_symbol_4)).arr[x_189];
+        param = x_191;
+        int const x_192 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_194 = param;
+        (*(tint_symbol_4)).arr[x_189] = x_194;
+        return;
+      } else {
+        int const x_196 = baseIndex;
+        int const x_198 = (*(tint_symbol_4)).arr[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      int const x_199 = baseIndex;
+      int const x_201 = (*(tint_symbol_4)).arr[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        int const x_206 = baseIndex;
+        int const x_207 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_206].rightIndex = x_207;
+        int const x_209 = *(treeIndex);
+        BST const x_211 = (*(tint_symbol_4)).arr[x_209];
+        param_2 = x_211;
+        int const x_212 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_214 = param_2;
+        (*(tint_symbol_4)).arr[x_209] = x_214;
+        return;
+      } else {
+        int const x_216 = baseIndex;
+        int const x_218 = (*(tint_symbol_4)).arr[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper* const tint_symbol_5) {
+  int index = 0;
+  BST currentNode = {};
+  int x_220 = 0;
+  index = 0;
+  while (true) {
+    int const x_225 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    int const x_228 = index;
+    BST const x_230 = (*(tint_symbol_5)).arr[x_228];
+    currentNode = x_230;
+    int const x_232 = currentNode.data;
+    int const x_233 = *(target);
+    if ((x_232 == x_233)) {
+      int const x_237 = *(target);
+      return x_237;
+    }
+    int const x_238 = *(target);
+    int const x_240 = currentNode.data;
+    if ((x_238 > x_240)) {
+      int const x_246 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      int const x_248 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    int const x_249 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+void main_1(thread tint_array_wrapper* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  BST const x_84 = (*(tint_symbol_6)).arr[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_86 = param_4;
+  (*(tint_symbol_6)).arr[0] = x_86;
+  int const x_88 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  int const x_90 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7), tint_symbol_6);
+  int const x_92 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  int const x_94 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9), tint_symbol_6);
+  int const x_96 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  int const x_98 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11), tint_symbol_6);
+  int const x_100 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  int const x_102 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13), tint_symbol_6);
+  int const x_104 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  int const x_106 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15), tint_symbol_6);
+  int const x_108 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  int const x_110 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17), tint_symbol_6);
+  int const x_112 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  int const x_114 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19), tint_symbol_6);
+  int const x_116 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  int const x_118 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21), tint_symbol_6);
+  int const x_120 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  int const x_122 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23), tint_symbol_6);
+  count = 0;
+  i = 0;
+  while (true) {
+    int const x_128 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    int const x_131 = i;
+    param_24 = x_131;
+    int const x_132 = search_i1_(&(param_24), tint_symbol_6);
+    result = x_132;
+    int const x_133 = i;
+    switch(x_133) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_143 = result;
+        int const x_144 = i;
+        if ((x_143 == x_144)) {
+          int const x_148 = count;
+          count = (x_148 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_137 = result;
+        if ((x_137 == -1)) {
+          int const x_141 = count;
+          count = (x_141 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_150 = i;
+      i = (x_150 + 1);
+    }
+  }
+  int const x_152 = count;
+  if ((x_152 == 20)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread tint_array_wrapper tint_symbol_8 = {};
+  thread float4 tint_symbol_9 = 0.0f;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..68b226d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,476 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 316
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %node "node"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_220 "x_220"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_24 "param_24"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+       %tree = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %16 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %36 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %42 = OpConstantNull %int
+         %44 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %122 = OpTypeFunction %int %_ptr_Function_int
+        %163 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %302 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %303 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %304 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %16
+       %node = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %23 = OpLabel
+         %25 = OpLoad %int %data
+         %28 = OpAccessChain %_ptr_Function_int %node %uint_0
+               OpStore %28 %25
+         %31 = OpAccessChain %_ptr_Function_int %node %uint_1
+               OpStore %31 %int_n1
+         %35 = OpAccessChain %_ptr_Function_int %node %uint_2
+               OpStore %35 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %36
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %40 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %42
+      %param = OpVariable %_ptr_Function_BST Function %44
+    %param_1 = OpVariable %_ptr_Function_int Function %42
+    %param_2 = OpVariable %_ptr_Function_BST Function %44
+    %param_3 = OpVariable %_ptr_Function_int Function %42
+               OpStore %baseIndex %int_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %baseIndex
+         %55 = OpLoad %int %treeIndex
+         %56 = OpSLessThanEqual %bool %53 %55
+               OpSelectionMerge %58 None
+               OpBranchConditional %56 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %50
+         %58 = OpLabel
+         %62 = OpLoad %int %data_1
+         %63 = OpLoad %int %baseIndex
+         %65 = OpAccessChain %_ptr_Private_int %tree %63 %uint_0
+         %66 = OpLoad %int %65
+         %67 = OpSLessThanEqual %bool %62 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpLoad %int %baseIndex
+         %72 = OpAccessChain %_ptr_Private_int %tree %71 %uint_1
+         %73 = OpLoad %int %72
+         %74 = OpIEqual %bool %73 %int_n1
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpLoad %int %baseIndex
+         %80 = OpLoad %int %treeIndex
+         %81 = OpAccessChain %_ptr_Private_int %tree %78 %uint_1
+               OpStore %81 %80
+         %83 = OpLoad %int %treeIndex
+         %85 = OpAccessChain %_ptr_Private_BST %tree %83
+         %86 = OpLoad %BST %85
+               OpStore %param %86
+         %88 = OpLoad %int %data_1
+               OpStore %param_1 %88
+         %89 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+         %92 = OpLoad %BST %param
+         %93 = OpAccessChain %_ptr_Private_BST %tree %83
+               OpStore %93 %92
+               OpReturn
+         %77 = OpLabel
+         %94 = OpLoad %int %baseIndex
+         %95 = OpAccessChain %_ptr_Private_int %tree %94 %uint_1
+         %96 = OpLoad %int %95
+               OpStore %baseIndex %96
+               OpBranch %51
+         %75 = OpLabel
+               OpReturn
+         %70 = OpLabel
+         %97 = OpLoad %int %baseIndex
+         %98 = OpAccessChain %_ptr_Private_int %tree %97 %uint_2
+         %99 = OpLoad %int %98
+        %100 = OpIEqual %bool %99 %int_n1
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %103
+        %102 = OpLabel
+        %104 = OpLoad %int %baseIndex
+        %106 = OpLoad %int %treeIndex
+        %107 = OpAccessChain %_ptr_Private_int %tree %104 %uint_2
+               OpStore %107 %106
+        %109 = OpLoad %int %treeIndex
+        %110 = OpAccessChain %_ptr_Private_BST %tree %109
+        %111 = OpLoad %BST %110
+               OpStore %param_2 %111
+        %113 = OpLoad %int %data_1
+               OpStore %param_3 %113
+        %114 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %117 = OpLoad %BST %param_2
+        %118 = OpAccessChain %_ptr_Private_BST %tree %109
+               OpStore %118 %117
+               OpReturn
+        %103 = OpLabel
+        %119 = OpLoad %int %baseIndex
+        %120 = OpAccessChain %_ptr_Private_int %tree %119 %uint_2
+        %121 = OpLoad %int %120
+               OpStore %baseIndex %121
+               OpBranch %51
+        %101 = OpLabel
+               OpReturn
+         %68 = OpLabel
+               OpReturn
+         %51 = OpLabel
+               OpBranch %49
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %122
+     %target = OpFunctionParameter %_ptr_Function_int
+        %125 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %42
+%currentNode = OpVariable %_ptr_Function_BST Function %44
+      %x_220 = OpVariable %_ptr_Function_int Function %42
+               OpStore %index %int_0
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %index
+        %134 = OpINotEqual %bool %133 %int_n1
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %130
+        %135 = OpLabel
+        %138 = OpLoad %int %index
+        %139 = OpAccessChain %_ptr_Private_BST %tree %138
+        %140 = OpLoad %BST %139
+               OpStore %currentNode %140
+        %141 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %142 = OpLoad %int %141
+        %144 = OpLoad %int %target
+        %145 = OpIEqual %bool %142 %144
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %149 = OpLoad %int %target
+               OpReturnValue %149
+        %146 = OpLabel
+        %151 = OpLoad %int %target
+        %152 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %153 = OpLoad %int %152
+        %154 = OpSGreaterThan %bool %151 %153
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+        %158 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %159 = OpLoad %int %158
+               OpStore %x_220 %159
+               OpBranch %155
+        %157 = OpLabel
+        %160 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %161 = OpLoad %int %160
+               OpStore %x_220 %161
+               OpBranch %155
+        %155 = OpLabel
+        %162 = OpLoad %int %x_220
+               OpStore %index %162
+               OpBranch %131
+        %131 = OpLabel
+               OpBranch %129
+        %130 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %163
+        %165 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %42
+    %param_4 = OpVariable %_ptr_Function_BST Function %44
+    %param_5 = OpVariable %_ptr_Function_int Function %42
+    %param_6 = OpVariable %_ptr_Function_int Function %42
+    %param_7 = OpVariable %_ptr_Function_int Function %42
+    %param_8 = OpVariable %_ptr_Function_int Function %42
+    %param_9 = OpVariable %_ptr_Function_int Function %42
+   %param_10 = OpVariable %_ptr_Function_int Function %42
+   %param_11 = OpVariable %_ptr_Function_int Function %42
+   %param_12 = OpVariable %_ptr_Function_int Function %42
+   %param_13 = OpVariable %_ptr_Function_int Function %42
+   %param_14 = OpVariable %_ptr_Function_int Function %42
+   %param_15 = OpVariable %_ptr_Function_int Function %42
+   %param_16 = OpVariable %_ptr_Function_int Function %42
+   %param_17 = OpVariable %_ptr_Function_int Function %42
+   %param_18 = OpVariable %_ptr_Function_int Function %42
+   %param_19 = OpVariable %_ptr_Function_int Function %42
+   %param_20 = OpVariable %_ptr_Function_int Function %42
+   %param_21 = OpVariable %_ptr_Function_int Function %42
+   %param_22 = OpVariable %_ptr_Function_int Function %42
+   %param_23 = OpVariable %_ptr_Function_int Function %42
+      %count = OpVariable %_ptr_Function_int Function %42
+          %i = OpVariable %_ptr_Function_int Function %42
+     %result = OpVariable %_ptr_Function_int Function %42
+   %param_24 = OpVariable %_ptr_Function_int Function %42
+               OpStore %treeIndex_1 %int_0
+        %191 = OpAccessChain %_ptr_Private_BST %tree %int_0
+        %192 = OpLoad %BST %191
+               OpStore %param_4 %192
+               OpStore %param_5 %int_9
+        %194 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %197 = OpLoad %BST %param_4
+        %198 = OpAccessChain %_ptr_Private_BST %tree %int_0
+               OpStore %198 %197
+        %199 = OpLoad %int %treeIndex_1
+        %201 = OpIAdd %int %199 %int_1
+               OpStore %treeIndex_1 %201
+        %202 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %202
+               OpStore %param_7 %int_5
+        %204 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %207 = OpLoad %int %treeIndex_1
+        %208 = OpIAdd %int %207 %int_1
+               OpStore %treeIndex_1 %208
+        %209 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %209
+               OpStore %param_9 %int_12
+        %211 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %214 = OpLoad %int %treeIndex_1
+        %215 = OpIAdd %int %214 %int_1
+               OpStore %treeIndex_1 %215
+        %216 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %216
+               OpStore %param_11 %int_15
+        %218 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %221 = OpLoad %int %treeIndex_1
+        %222 = OpIAdd %int %221 %int_1
+               OpStore %treeIndex_1 %222
+        %223 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %223
+               OpStore %param_13 %int_7
+        %225 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %228 = OpLoad %int %treeIndex_1
+        %229 = OpIAdd %int %228 %int_1
+               OpStore %treeIndex_1 %229
+        %230 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %230
+               OpStore %param_15 %int_8
+        %232 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %235 = OpLoad %int %treeIndex_1
+        %236 = OpIAdd %int %235 %int_1
+               OpStore %treeIndex_1 %236
+        %237 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %237
+               OpStore %param_17 %int_2
+        %239 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %242 = OpLoad %int %treeIndex_1
+        %243 = OpIAdd %int %242 %int_1
+               OpStore %treeIndex_1 %243
+        %244 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %244
+               OpStore %param_19 %int_6
+        %246 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %249 = OpLoad %int %treeIndex_1
+        %250 = OpIAdd %int %249 %int_1
+               OpStore %treeIndex_1 %250
+        %251 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %251
+               OpStore %param_21 %int_17
+        %253 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %256 = OpLoad %int %treeIndex_1
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %treeIndex_1 %257
+        %258 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %258
+               OpStore %param_23 %int_13
+        %260 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %263
+        %263 = OpLabel
+               OpLoopMerge %264 %265 None
+               OpBranch %266
+        %266 = OpLabel
+        %267 = OpLoad %int %i
+        %269 = OpSLessThan %bool %267 %int_20
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %272
+        %271 = OpLabel
+               OpBranch %270
+        %272 = OpLabel
+               OpBranch %264
+        %270 = OpLabel
+        %273 = OpLoad %int %i
+               OpStore %param_24 %273
+        %274 = OpFunctionCall %int %search_i1_ %param_24
+               OpStore %result %274
+        %276 = OpLoad %int %i
+               OpSelectionMerge %277 None
+               OpSwitch %276 %278 2 %279 5 %279 6 %279 7 %279 8 %279 9 %279 12 %279 13 %279 15 %279 17 %279
+        %279 = OpLabel
+        %280 = OpLoad %int %result
+        %281 = OpLoad %int %i
+        %282 = OpIEqual %bool %280 %281
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %283
+        %284 = OpLabel
+        %285 = OpLoad %int %count
+        %286 = OpIAdd %int %285 %int_1
+               OpStore %count %286
+               OpBranch %283
+        %283 = OpLabel
+               OpBranch %277
+        %278 = OpLabel
+        %287 = OpLoad %int %result
+        %288 = OpIEqual %bool %287 %int_n1
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %289
+        %290 = OpLabel
+        %291 = OpLoad %int %count
+        %292 = OpIAdd %int %291 %int_1
+               OpStore %count %292
+               OpBranch %289
+        %289 = OpLabel
+               OpBranch %277
+        %277 = OpLabel
+               OpBranch %265
+        %265 = OpLabel
+        %293 = OpLoad %int %i
+        %294 = OpIAdd %int %293 %int_1
+               OpStore %i %294
+               OpBranch %263
+        %264 = OpLabel
+        %295 = OpLoad %int %count
+        %296 = OpIEqual %bool %295 %int_20
+               OpSelectionMerge %297 None
+               OpBranchConditional %296 %298 %299
+        %298 = OpLabel
+               OpStore %x_GLF_color %302
+               OpBranch %297
+        %299 = OpLabel
+               OpStore %x_GLF_color %303
+               OpBranch %297
+        %297 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %304
+%tint_symbol = OpFunctionParameter %main_out
+        %308 = OpLabel
+        %309 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %309
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %163
+        %311 = OpLabel
+        %312 = OpFunctionCall %void %main_1
+        %314 = OpLoad %v4float %x_GLF_color
+        %315 = OpCompositeConstruct %main_out %314
+        %313 = OpFunctionCall %void %tint_symbol_2 %315
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..19d6c9d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,264 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> tree : array<BST, 10>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(node : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_158 : i32 = *(data);
+  (*(node)).data = x_158;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_167 : i32 = baseIndex;
+    let x_168 : i32 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    let x_171 : i32 = *(data_1);
+    let x_172 : i32 = baseIndex;
+    let x_174 : i32 = tree[x_172].data;
+    if ((x_171 <= x_174)) {
+      let x_179 : i32 = baseIndex;
+      let x_181 : i32 = tree[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        let x_186 : i32 = baseIndex;
+        let x_187 : i32 = *(treeIndex);
+        tree[x_186].leftIndex = x_187;
+        let x_189 : i32 = *(treeIndex);
+        let x_191 : BST = tree[x_189];
+        param = x_191;
+        let x_192 : i32 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_194 : BST = param;
+        tree[x_189] = x_194;
+        return;
+      } else {
+        let x_196 : i32 = baseIndex;
+        let x_198 : i32 = tree[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      let x_199 : i32 = baseIndex;
+      let x_201 : i32 = tree[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        let x_206 : i32 = baseIndex;
+        let x_207 : i32 = *(treeIndex);
+        tree[x_206].rightIndex = x_207;
+        let x_209 : i32 = *(treeIndex);
+        let x_211 : BST = tree[x_209];
+        param_2 = x_211;
+        let x_212 : i32 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_214 : BST = param_2;
+        tree[x_209] = x_214;
+        return;
+      } else {
+        let x_216 : i32 = baseIndex;
+        let x_218 : i32 = tree[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_220 : i32;
+  index = 0;
+  loop {
+    let x_225 : i32 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    let x_228 : i32 = index;
+    let x_230 : BST = tree[x_228];
+    currentNode = x_230;
+    let x_232 : i32 = currentNode.data;
+    let x_233 : i32 = *(target);
+    if ((x_232 == x_233)) {
+      let x_237 : i32 = *(target);
+      return x_237;
+    }
+    let x_238 : i32 = *(target);
+    let x_240 : i32 = currentNode.data;
+    if ((x_238 > x_240)) {
+      let x_246 : i32 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      let x_248 : i32 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    let x_249 : i32 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_84 : BST = tree[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_86 : BST = param_4;
+  tree[0] = x_86;
+  let x_88 : i32 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  let x_90 : i32 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_92 : i32 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  let x_94 : i32 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_96 : i32 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  let x_98 : i32 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_100 : i32 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  let x_102 : i32 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_104 : i32 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  let x_106 : i32 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_108 : i32 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  let x_110 : i32 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_112 : i32 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  let x_114 : i32 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  let x_118 : i32 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_120 : i32 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  let x_122 : i32 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_128 : i32 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    let x_131 : i32 = i;
+    param_24 = x_131;
+    let x_132 : i32 = search_i1_(&(param_24));
+    result = x_132;
+    let x_133 : i32 = i;
+    switch(x_133) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_143 : i32 = result;
+        let x_144 : i32 = i;
+        if ((x_143 == x_144)) {
+          let x_148 : i32 = count;
+          count = (x_148 + 1);
+        }
+      }
+      default: {
+        let x_137 : i32 = result;
+        if ((x_137 == -1)) {
+          let x_141 : i32 = count;
+          count = (x_141 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_150 : i32 = i;
+      i = (x_150 + 1);
+    }
+  }
+  let x_152 : i32 = count;
+  if ((x_152 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
new file mode 100644
index 0000000..19d6c9d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
@@ -0,0 +1,264 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> tree : array<BST, 10>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(node : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_158 : i32 = *(data);
+  (*(node)).data = x_158;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_167 : i32 = baseIndex;
+    let x_168 : i32 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    let x_171 : i32 = *(data_1);
+    let x_172 : i32 = baseIndex;
+    let x_174 : i32 = tree[x_172].data;
+    if ((x_171 <= x_174)) {
+      let x_179 : i32 = baseIndex;
+      let x_181 : i32 = tree[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        let x_186 : i32 = baseIndex;
+        let x_187 : i32 = *(treeIndex);
+        tree[x_186].leftIndex = x_187;
+        let x_189 : i32 = *(treeIndex);
+        let x_191 : BST = tree[x_189];
+        param = x_191;
+        let x_192 : i32 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_194 : BST = param;
+        tree[x_189] = x_194;
+        return;
+      } else {
+        let x_196 : i32 = baseIndex;
+        let x_198 : i32 = tree[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      let x_199 : i32 = baseIndex;
+      let x_201 : i32 = tree[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        let x_206 : i32 = baseIndex;
+        let x_207 : i32 = *(treeIndex);
+        tree[x_206].rightIndex = x_207;
+        let x_209 : i32 = *(treeIndex);
+        let x_211 : BST = tree[x_209];
+        param_2 = x_211;
+        let x_212 : i32 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_214 : BST = param_2;
+        tree[x_209] = x_214;
+        return;
+      } else {
+        let x_216 : i32 = baseIndex;
+        let x_218 : i32 = tree[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_220 : i32;
+  index = 0;
+  loop {
+    let x_225 : i32 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    let x_228 : i32 = index;
+    let x_230 : BST = tree[x_228];
+    currentNode = x_230;
+    let x_232 : i32 = currentNode.data;
+    let x_233 : i32 = *(target);
+    if ((x_232 == x_233)) {
+      let x_237 : i32 = *(target);
+      return x_237;
+    }
+    let x_238 : i32 = *(target);
+    let x_240 : i32 = currentNode.data;
+    if ((x_238 > x_240)) {
+      let x_246 : i32 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      let x_248 : i32 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    let x_249 : i32 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_84 : BST = tree[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_86 : BST = param_4;
+  tree[0] = x_86;
+  let x_88 : i32 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  let x_90 : i32 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_92 : i32 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  let x_94 : i32 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_96 : i32 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  let x_98 : i32 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_100 : i32 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  let x_102 : i32 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_104 : i32 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  let x_106 : i32 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_108 : i32 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  let x_110 : i32 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_112 : i32 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  let x_114 : i32 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  let x_118 : i32 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_120 : i32 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  let x_122 : i32 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_128 : i32 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    let x_131 : i32 = i;
+    param_24 = x_131;
+    let x_132 : i32 = search_i1_(&(param_24));
+    result = x_132;
+    let x_133 : i32 = i;
+    switch(x_133) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_143 : i32 = result;
+        let x_144 : i32 = i;
+        if ((x_143 == x_144)) {
+          let x_148 : i32 = count;
+          count = (x_148 + 1);
+        }
+      }
+      default: {
+        let x_137 : i32 = result;
+        if ((x_137 == -1)) {
+          let x_141 : i32 = count;
+          count = (x_141 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_150 : i32 = i;
+      i = (x_150 + 1);
+    }
+  }
+  let x_152 : i32 = count;
+  if ((x_152 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1a82ba8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,232 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static BST tree[10] = (BST[10])0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST node, inout int data) {
+  const int x_158 = data;
+  node.data = x_158;
+  node.leftIndex = -1;
+  node.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_167 = baseIndex;
+    const int x_168 = treeIndex;
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    const int x_171 = data_1;
+    const int x_174 = tree[baseIndex].data;
+    if ((x_171 <= x_174)) {
+      const int x_181 = tree[baseIndex].leftIndex;
+      if ((x_181 == -1)) {
+        const int x_186 = baseIndex;
+        const int x_187 = treeIndex;
+        tree[x_186].leftIndex = x_187;
+        const int x_189 = treeIndex;
+        const BST x_191 = tree[x_189];
+        param = x_191;
+        const int x_192 = data_1;
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree[x_189] = param;
+        return;
+      } else {
+        const int x_198 = tree[baseIndex].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      const int x_201 = tree[baseIndex].rightIndex;
+      if ((x_201 == -1)) {
+        const int x_206 = baseIndex;
+        const int x_207 = treeIndex;
+        tree[x_206].rightIndex = x_207;
+        const int x_209 = treeIndex;
+        const BST x_211 = tree[x_209];
+        param_2 = x_211;
+        const int x_212 = data_1;
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree[x_209] = param_2;
+        return;
+      } else {
+        const int x_218 = tree[baseIndex].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_220 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_230 = tree[index];
+    currentNode = x_230;
+    const int x_232 = currentNode.data;
+    const int x_233 = target;
+    if ((x_232 == x_233)) {
+      const int x_237 = target;
+      return x_237;
+    }
+    const int x_238 = target;
+    const int x_240 = currentNode.data;
+    if ((x_238 > x_240)) {
+      const int x_246 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      const int x_248 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    index = x_220;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  const BST x_84 = tree[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  count = 0;
+  i = 0;
+  {
+    for(; (i < 20); i = (i + 1)) {
+      param_24 = i;
+      const int x_132 = search_i1_(param_24);
+      result = x_132;
+      switch(i) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          if ((result == i)) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..02ef450
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.msl
@@ -0,0 +1,281 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const node, thread int* const data) {
+  int const x_158 = *(data);
+  (*(node)).data = x_158;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper* const tint_symbol_4) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_167 = baseIndex;
+    int const x_168 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    int const x_171 = *(data_1);
+    int const x_172 = baseIndex;
+    int const x_174 = (*(tint_symbol_4)).arr[x_172].data;
+    if ((x_171 <= x_174)) {
+      int const x_179 = baseIndex;
+      int const x_181 = (*(tint_symbol_4)).arr[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        int const x_186 = baseIndex;
+        int const x_187 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_186].leftIndex = x_187;
+        int const x_189 = *(treeIndex);
+        BST const x_191 = (*(tint_symbol_4)).arr[x_189];
+        param = x_191;
+        int const x_192 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_194 = param;
+        (*(tint_symbol_4)).arr[x_189] = x_194;
+        return;
+      } else {
+        int const x_196 = baseIndex;
+        int const x_198 = (*(tint_symbol_4)).arr[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      int const x_199 = baseIndex;
+      int const x_201 = (*(tint_symbol_4)).arr[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        int const x_206 = baseIndex;
+        int const x_207 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_206].rightIndex = x_207;
+        int const x_209 = *(treeIndex);
+        BST const x_211 = (*(tint_symbol_4)).arr[x_209];
+        param_2 = x_211;
+        int const x_212 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_214 = param_2;
+        (*(tint_symbol_4)).arr[x_209] = x_214;
+        return;
+      } else {
+        int const x_216 = baseIndex;
+        int const x_218 = (*(tint_symbol_4)).arr[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper* const tint_symbol_5) {
+  int index = 0;
+  BST currentNode = {};
+  int x_220 = 0;
+  index = 0;
+  while (true) {
+    int const x_225 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    int const x_228 = index;
+    BST const x_230 = (*(tint_symbol_5)).arr[x_228];
+    currentNode = x_230;
+    int const x_232 = currentNode.data;
+    int const x_233 = *(target);
+    if ((x_232 == x_233)) {
+      int const x_237 = *(target);
+      return x_237;
+    }
+    int const x_238 = *(target);
+    int const x_240 = currentNode.data;
+    if ((x_238 > x_240)) {
+      int const x_246 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      int const x_248 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    int const x_249 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+void main_1(thread tint_array_wrapper* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int count = 0;
+  int i = 0;
+  int result = 0;
+  int param_24 = 0;
+  treeIndex_1 = 0;
+  BST const x_84 = (*(tint_symbol_6)).arr[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_86 = param_4;
+  (*(tint_symbol_6)).arr[0] = x_86;
+  int const x_88 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  int const x_90 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7), tint_symbol_6);
+  int const x_92 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  int const x_94 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9), tint_symbol_6);
+  int const x_96 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  int const x_98 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11), tint_symbol_6);
+  int const x_100 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  int const x_102 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13), tint_symbol_6);
+  int const x_104 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  int const x_106 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15), tint_symbol_6);
+  int const x_108 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  int const x_110 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17), tint_symbol_6);
+  int const x_112 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  int const x_114 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19), tint_symbol_6);
+  int const x_116 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  int const x_118 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21), tint_symbol_6);
+  int const x_120 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  int const x_122 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23), tint_symbol_6);
+  count = 0;
+  i = 0;
+  while (true) {
+    int const x_128 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    int const x_131 = i;
+    param_24 = x_131;
+    int const x_132 = search_i1_(&(param_24), tint_symbol_6);
+    result = x_132;
+    int const x_133 = i;
+    switch(x_133) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_143 = result;
+        int const x_144 = i;
+        if ((x_143 == x_144)) {
+          int const x_148 = count;
+          count = (x_148 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_137 = result;
+        if ((x_137 == -1)) {
+          int const x_141 = count;
+          count = (x_141 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_150 = i;
+      i = (x_150 + 1);
+    }
+  }
+  int const x_152 = count;
+  if ((x_152 == 20)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread tint_array_wrapper tint_symbol_8 = {};
+  thread float4 tint_symbol_9 = 0.0f;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..68b226d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,476 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 316
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %node "node"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_220 "x_220"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %count "count"
+               OpName %i "i"
+               OpName %result "result"
+               OpName %param_24 "param_24"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+       %tree = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %16 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %36 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %42 = OpConstantNull %int
+         %44 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %122 = OpTypeFunction %int %_ptr_Function_int
+        %163 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %302 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %303 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %304 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %16
+       %node = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %23 = OpLabel
+         %25 = OpLoad %int %data
+         %28 = OpAccessChain %_ptr_Function_int %node %uint_0
+               OpStore %28 %25
+         %31 = OpAccessChain %_ptr_Function_int %node %uint_1
+               OpStore %31 %int_n1
+         %35 = OpAccessChain %_ptr_Function_int %node %uint_2
+               OpStore %35 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %36
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %40 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %42
+      %param = OpVariable %_ptr_Function_BST Function %44
+    %param_1 = OpVariable %_ptr_Function_int Function %42
+    %param_2 = OpVariable %_ptr_Function_BST Function %44
+    %param_3 = OpVariable %_ptr_Function_int Function %42
+               OpStore %baseIndex %int_0
+               OpBranch %49
+         %49 = OpLabel
+               OpLoopMerge %50 %51 None
+               OpBranch %52
+         %52 = OpLabel
+         %53 = OpLoad %int %baseIndex
+         %55 = OpLoad %int %treeIndex
+         %56 = OpSLessThanEqual %bool %53 %55
+               OpSelectionMerge %58 None
+               OpBranchConditional %56 %59 %60
+         %59 = OpLabel
+               OpBranch %58
+         %60 = OpLabel
+               OpBranch %50
+         %58 = OpLabel
+         %62 = OpLoad %int %data_1
+         %63 = OpLoad %int %baseIndex
+         %65 = OpAccessChain %_ptr_Private_int %tree %63 %uint_0
+         %66 = OpLoad %int %65
+         %67 = OpSLessThanEqual %bool %62 %66
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpLoad %int %baseIndex
+         %72 = OpAccessChain %_ptr_Private_int %tree %71 %uint_1
+         %73 = OpLoad %int %72
+         %74 = OpIEqual %bool %73 %int_n1
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpLoad %int %baseIndex
+         %80 = OpLoad %int %treeIndex
+         %81 = OpAccessChain %_ptr_Private_int %tree %78 %uint_1
+               OpStore %81 %80
+         %83 = OpLoad %int %treeIndex
+         %85 = OpAccessChain %_ptr_Private_BST %tree %83
+         %86 = OpLoad %BST %85
+               OpStore %param %86
+         %88 = OpLoad %int %data_1
+               OpStore %param_1 %88
+         %89 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+         %92 = OpLoad %BST %param
+         %93 = OpAccessChain %_ptr_Private_BST %tree %83
+               OpStore %93 %92
+               OpReturn
+         %77 = OpLabel
+         %94 = OpLoad %int %baseIndex
+         %95 = OpAccessChain %_ptr_Private_int %tree %94 %uint_1
+         %96 = OpLoad %int %95
+               OpStore %baseIndex %96
+               OpBranch %51
+         %75 = OpLabel
+               OpReturn
+         %70 = OpLabel
+         %97 = OpLoad %int %baseIndex
+         %98 = OpAccessChain %_ptr_Private_int %tree %97 %uint_2
+         %99 = OpLoad %int %98
+        %100 = OpIEqual %bool %99 %int_n1
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %103
+        %102 = OpLabel
+        %104 = OpLoad %int %baseIndex
+        %106 = OpLoad %int %treeIndex
+        %107 = OpAccessChain %_ptr_Private_int %tree %104 %uint_2
+               OpStore %107 %106
+        %109 = OpLoad %int %treeIndex
+        %110 = OpAccessChain %_ptr_Private_BST %tree %109
+        %111 = OpLoad %BST %110
+               OpStore %param_2 %111
+        %113 = OpLoad %int %data_1
+               OpStore %param_3 %113
+        %114 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %117 = OpLoad %BST %param_2
+        %118 = OpAccessChain %_ptr_Private_BST %tree %109
+               OpStore %118 %117
+               OpReturn
+        %103 = OpLabel
+        %119 = OpLoad %int %baseIndex
+        %120 = OpAccessChain %_ptr_Private_int %tree %119 %uint_2
+        %121 = OpLoad %int %120
+               OpStore %baseIndex %121
+               OpBranch %51
+        %101 = OpLabel
+               OpReturn
+         %68 = OpLabel
+               OpReturn
+         %51 = OpLabel
+               OpBranch %49
+         %50 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %122
+     %target = OpFunctionParameter %_ptr_Function_int
+        %125 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %42
+%currentNode = OpVariable %_ptr_Function_BST Function %44
+      %x_220 = OpVariable %_ptr_Function_int Function %42
+               OpStore %index %int_0
+               OpBranch %129
+        %129 = OpLabel
+               OpLoopMerge %130 %131 None
+               OpBranch %132
+        %132 = OpLabel
+        %133 = OpLoad %int %index
+        %134 = OpINotEqual %bool %133 %int_n1
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %130
+        %135 = OpLabel
+        %138 = OpLoad %int %index
+        %139 = OpAccessChain %_ptr_Private_BST %tree %138
+        %140 = OpLoad %BST %139
+               OpStore %currentNode %140
+        %141 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %142 = OpLoad %int %141
+        %144 = OpLoad %int %target
+        %145 = OpIEqual %bool %142 %144
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %149 = OpLoad %int %target
+               OpReturnValue %149
+        %146 = OpLabel
+        %151 = OpLoad %int %target
+        %152 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %153 = OpLoad %int %152
+        %154 = OpSGreaterThan %bool %151 %153
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+        %158 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %159 = OpLoad %int %158
+               OpStore %x_220 %159
+               OpBranch %155
+        %157 = OpLabel
+        %160 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %161 = OpLoad %int %160
+               OpStore %x_220 %161
+               OpBranch %155
+        %155 = OpLabel
+        %162 = OpLoad %int %x_220
+               OpStore %index %162
+               OpBranch %131
+        %131 = OpLabel
+               OpBranch %129
+        %130 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %163
+        %165 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %42
+    %param_4 = OpVariable %_ptr_Function_BST Function %44
+    %param_5 = OpVariable %_ptr_Function_int Function %42
+    %param_6 = OpVariable %_ptr_Function_int Function %42
+    %param_7 = OpVariable %_ptr_Function_int Function %42
+    %param_8 = OpVariable %_ptr_Function_int Function %42
+    %param_9 = OpVariable %_ptr_Function_int Function %42
+   %param_10 = OpVariable %_ptr_Function_int Function %42
+   %param_11 = OpVariable %_ptr_Function_int Function %42
+   %param_12 = OpVariable %_ptr_Function_int Function %42
+   %param_13 = OpVariable %_ptr_Function_int Function %42
+   %param_14 = OpVariable %_ptr_Function_int Function %42
+   %param_15 = OpVariable %_ptr_Function_int Function %42
+   %param_16 = OpVariable %_ptr_Function_int Function %42
+   %param_17 = OpVariable %_ptr_Function_int Function %42
+   %param_18 = OpVariable %_ptr_Function_int Function %42
+   %param_19 = OpVariable %_ptr_Function_int Function %42
+   %param_20 = OpVariable %_ptr_Function_int Function %42
+   %param_21 = OpVariable %_ptr_Function_int Function %42
+   %param_22 = OpVariable %_ptr_Function_int Function %42
+   %param_23 = OpVariable %_ptr_Function_int Function %42
+      %count = OpVariable %_ptr_Function_int Function %42
+          %i = OpVariable %_ptr_Function_int Function %42
+     %result = OpVariable %_ptr_Function_int Function %42
+   %param_24 = OpVariable %_ptr_Function_int Function %42
+               OpStore %treeIndex_1 %int_0
+        %191 = OpAccessChain %_ptr_Private_BST %tree %int_0
+        %192 = OpLoad %BST %191
+               OpStore %param_4 %192
+               OpStore %param_5 %int_9
+        %194 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %197 = OpLoad %BST %param_4
+        %198 = OpAccessChain %_ptr_Private_BST %tree %int_0
+               OpStore %198 %197
+        %199 = OpLoad %int %treeIndex_1
+        %201 = OpIAdd %int %199 %int_1
+               OpStore %treeIndex_1 %201
+        %202 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %202
+               OpStore %param_7 %int_5
+        %204 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %207 = OpLoad %int %treeIndex_1
+        %208 = OpIAdd %int %207 %int_1
+               OpStore %treeIndex_1 %208
+        %209 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %209
+               OpStore %param_9 %int_12
+        %211 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %214 = OpLoad %int %treeIndex_1
+        %215 = OpIAdd %int %214 %int_1
+               OpStore %treeIndex_1 %215
+        %216 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %216
+               OpStore %param_11 %int_15
+        %218 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %221 = OpLoad %int %treeIndex_1
+        %222 = OpIAdd %int %221 %int_1
+               OpStore %treeIndex_1 %222
+        %223 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %223
+               OpStore %param_13 %int_7
+        %225 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %228 = OpLoad %int %treeIndex_1
+        %229 = OpIAdd %int %228 %int_1
+               OpStore %treeIndex_1 %229
+        %230 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %230
+               OpStore %param_15 %int_8
+        %232 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %235 = OpLoad %int %treeIndex_1
+        %236 = OpIAdd %int %235 %int_1
+               OpStore %treeIndex_1 %236
+        %237 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %237
+               OpStore %param_17 %int_2
+        %239 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %242 = OpLoad %int %treeIndex_1
+        %243 = OpIAdd %int %242 %int_1
+               OpStore %treeIndex_1 %243
+        %244 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %244
+               OpStore %param_19 %int_6
+        %246 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %249 = OpLoad %int %treeIndex_1
+        %250 = OpIAdd %int %249 %int_1
+               OpStore %treeIndex_1 %250
+        %251 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %251
+               OpStore %param_21 %int_17
+        %253 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %256 = OpLoad %int %treeIndex_1
+        %257 = OpIAdd %int %256 %int_1
+               OpStore %treeIndex_1 %257
+        %258 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %258
+               OpStore %param_23 %int_13
+        %260 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %count %int_0
+               OpStore %i %int_0
+               OpBranch %263
+        %263 = OpLabel
+               OpLoopMerge %264 %265 None
+               OpBranch %266
+        %266 = OpLabel
+        %267 = OpLoad %int %i
+        %269 = OpSLessThan %bool %267 %int_20
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %272
+        %271 = OpLabel
+               OpBranch %270
+        %272 = OpLabel
+               OpBranch %264
+        %270 = OpLabel
+        %273 = OpLoad %int %i
+               OpStore %param_24 %273
+        %274 = OpFunctionCall %int %search_i1_ %param_24
+               OpStore %result %274
+        %276 = OpLoad %int %i
+               OpSelectionMerge %277 None
+               OpSwitch %276 %278 2 %279 5 %279 6 %279 7 %279 8 %279 9 %279 12 %279 13 %279 15 %279 17 %279
+        %279 = OpLabel
+        %280 = OpLoad %int %result
+        %281 = OpLoad %int %i
+        %282 = OpIEqual %bool %280 %281
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %283
+        %284 = OpLabel
+        %285 = OpLoad %int %count
+        %286 = OpIAdd %int %285 %int_1
+               OpStore %count %286
+               OpBranch %283
+        %283 = OpLabel
+               OpBranch %277
+        %278 = OpLabel
+        %287 = OpLoad %int %result
+        %288 = OpIEqual %bool %287 %int_n1
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %289
+        %290 = OpLabel
+        %291 = OpLoad %int %count
+        %292 = OpIAdd %int %291 %int_1
+               OpStore %count %292
+               OpBranch %289
+        %289 = OpLabel
+               OpBranch %277
+        %277 = OpLabel
+               OpBranch %265
+        %265 = OpLabel
+        %293 = OpLoad %int %i
+        %294 = OpIAdd %int %293 %int_1
+               OpStore %i %294
+               OpBranch %263
+        %264 = OpLabel
+        %295 = OpLoad %int %count
+        %296 = OpIEqual %bool %295 %int_20
+               OpSelectionMerge %297 None
+               OpBranchConditional %296 %298 %299
+        %298 = OpLabel
+               OpStore %x_GLF_color %302
+               OpBranch %297
+        %299 = OpLabel
+               OpStore %x_GLF_color %303
+               OpBranch %297
+        %297 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %304
+%tint_symbol = OpFunctionParameter %main_out
+        %308 = OpLabel
+        %309 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %309
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %163
+        %311 = OpLabel
+        %312 = OpFunctionCall %void %main_1
+        %314 = OpLoad %v4float %x_GLF_color
+        %315 = OpCompositeConstruct %main_out %314
+        %313 = OpFunctionCall %void %tint_symbol_2 %315
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..19d6c9d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,264 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> tree : array<BST, 10>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(node : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_158 : i32 = *(data);
+  (*(node)).data = x_158;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_167 : i32 = baseIndex;
+    let x_168 : i32 = *(treeIndex);
+    if ((x_167 <= x_168)) {
+    } else {
+      break;
+    }
+    let x_171 : i32 = *(data_1);
+    let x_172 : i32 = baseIndex;
+    let x_174 : i32 = tree[x_172].data;
+    if ((x_171 <= x_174)) {
+      let x_179 : i32 = baseIndex;
+      let x_181 : i32 = tree[x_179].leftIndex;
+      if ((x_181 == -1)) {
+        let x_186 : i32 = baseIndex;
+        let x_187 : i32 = *(treeIndex);
+        tree[x_186].leftIndex = x_187;
+        let x_189 : i32 = *(treeIndex);
+        let x_191 : BST = tree[x_189];
+        param = x_191;
+        let x_192 : i32 = *(data_1);
+        param_1 = x_192;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_194 : BST = param;
+        tree[x_189] = x_194;
+        return;
+      } else {
+        let x_196 : i32 = baseIndex;
+        let x_198 : i32 = tree[x_196].leftIndex;
+        baseIndex = x_198;
+        continue;
+      }
+      return;
+    } else {
+      let x_199 : i32 = baseIndex;
+      let x_201 : i32 = tree[x_199].rightIndex;
+      if ((x_201 == -1)) {
+        let x_206 : i32 = baseIndex;
+        let x_207 : i32 = *(treeIndex);
+        tree[x_206].rightIndex = x_207;
+        let x_209 : i32 = *(treeIndex);
+        let x_211 : BST = tree[x_209];
+        param_2 = x_211;
+        let x_212 : i32 = *(data_1);
+        param_3 = x_212;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_214 : BST = param_2;
+        tree[x_209] = x_214;
+        return;
+      } else {
+        let x_216 : i32 = baseIndex;
+        let x_218 : i32 = tree[x_216].rightIndex;
+        baseIndex = x_218;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_220 : i32;
+  index = 0;
+  loop {
+    let x_225 : i32 = index;
+    if ((x_225 != -1)) {
+    } else {
+      break;
+    }
+    let x_228 : i32 = index;
+    let x_230 : BST = tree[x_228];
+    currentNode = x_230;
+    let x_232 : i32 = currentNode.data;
+    let x_233 : i32 = *(target);
+    if ((x_232 == x_233)) {
+      let x_237 : i32 = *(target);
+      return x_237;
+    }
+    let x_238 : i32 = *(target);
+    let x_240 : i32 = currentNode.data;
+    if ((x_238 > x_240)) {
+      let x_246 : i32 = currentNode.rightIndex;
+      x_220 = x_246;
+    } else {
+      let x_248 : i32 = currentNode.leftIndex;
+      x_220 = x_248;
+    }
+    let x_249 : i32 = x_220;
+    index = x_249;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var count : i32;
+  var i : i32;
+  var result : i32;
+  var param_24 : i32;
+  treeIndex_1 = 0;
+  let x_84 : BST = tree[0];
+  param_4 = x_84;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_86 : BST = param_4;
+  tree[0] = x_86;
+  let x_88 : i32 = treeIndex_1;
+  treeIndex_1 = (x_88 + 1);
+  let x_90 : i32 = treeIndex_1;
+  param_6 = x_90;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_92 : i32 = treeIndex_1;
+  treeIndex_1 = (x_92 + 1);
+  let x_94 : i32 = treeIndex_1;
+  param_8 = x_94;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_96 : i32 = treeIndex_1;
+  treeIndex_1 = (x_96 + 1);
+  let x_98 : i32 = treeIndex_1;
+  param_10 = x_98;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_100 : i32 = treeIndex_1;
+  treeIndex_1 = (x_100 + 1);
+  let x_102 : i32 = treeIndex_1;
+  param_12 = x_102;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_104 : i32 = treeIndex_1;
+  treeIndex_1 = (x_104 + 1);
+  let x_106 : i32 = treeIndex_1;
+  param_14 = x_106;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_108 : i32 = treeIndex_1;
+  treeIndex_1 = (x_108 + 1);
+  let x_110 : i32 = treeIndex_1;
+  param_16 = x_110;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_112 : i32 = treeIndex_1;
+  treeIndex_1 = (x_112 + 1);
+  let x_114 : i32 = treeIndex_1;
+  param_18 = x_114;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  let x_118 : i32 = treeIndex_1;
+  param_20 = x_118;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_120 : i32 = treeIndex_1;
+  treeIndex_1 = (x_120 + 1);
+  let x_122 : i32 = treeIndex_1;
+  param_22 = x_122;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  count = 0;
+  i = 0;
+  loop {
+    let x_128 : i32 = i;
+    if ((x_128 < 20)) {
+    } else {
+      break;
+    }
+    let x_131 : i32 = i;
+    param_24 = x_131;
+    let x_132 : i32 = search_i1_(&(param_24));
+    result = x_132;
+    let x_133 : i32 = i;
+    switch(x_133) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_143 : i32 = result;
+        let x_144 : i32 = i;
+        if ((x_143 == x_144)) {
+          let x_148 : i32 = count;
+          count = (x_148 + 1);
+        }
+      }
+      default: {
+        let x_137 : i32 = result;
+        if ((x_137 == -1)) {
+          let x_141 : i32 = count;
+          count = (x_141 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_150 : i32 = i;
+      i = (x_150 + 1);
+    }
+  }
+  let x_152 : i32 = count;
+  if ((x_152 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm
new file mode 100644
index 0000000..ef62d6c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm
@@ -0,0 +1,508 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %identity_i1_ "identity(i1;"
+               OpName %a "a"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode(struct-BST-i1-i1-i11;i1;"
+               OpName %node "node"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert(i1;i1;"
+               OpName %treeIndex "treeIndex"
+               OpName %data_0 "data"
+               OpName %search_i1_ "search(i1;"
+               OpName %target "target"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %baseIndex "baseIndex"
+               OpName %tree "tree"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %treeIndex_0 "treeIndex"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %param_9 "param"
+               OpName %param_10 "param"
+               OpName %param_11 "param"
+               OpName %param_12 "param"
+               OpName %param_13 "param"
+               OpName %param_14 "param"
+               OpName %param_15 "param"
+               OpName %param_16 "param"
+               OpName %param_17 "param"
+               OpName %param_18 "param"
+               OpName %param_19 "param"
+               OpName %param_20 "param"
+               OpName %param_21 "param"
+               OpName %param_22 "param"
+               OpName %pp "pp"
+               OpName %looplimiter0 "looplimiter0"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %param_23 "param"
+               OpName %count "count"
+               OpName %i_0 "i"
+               OpName %result "result"
+               OpName %param_24 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %57 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %60 = OpTypeFunction %int %_ptr_Function_int
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+         %62 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+         %63 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+       %bool = OpTypeBool
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+       %tree = OpVariable %_ptr_Private__arr_BST_uint_10 Private
+%_ptr_Private_BST = OpTypePointer Private %BST
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+  %int_10000 = OpConstant %int 10000
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_20 = OpConstant %int 20
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %97 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %98 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+       %main = OpFunction %void None %57
+         %99 = OpLabel
+%treeIndex_0 = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_BST Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+    %param_5 = OpVariable %_ptr_Function_int Function
+    %param_6 = OpVariable %_ptr_Function_int Function
+    %param_7 = OpVariable %_ptr_Function_int Function
+    %param_8 = OpVariable %_ptr_Function_int Function
+    %param_9 = OpVariable %_ptr_Function_int Function
+   %param_10 = OpVariable %_ptr_Function_int Function
+   %param_11 = OpVariable %_ptr_Function_int Function
+   %param_12 = OpVariable %_ptr_Function_int Function
+   %param_13 = OpVariable %_ptr_Function_int Function
+   %param_14 = OpVariable %_ptr_Function_int Function
+   %param_15 = OpVariable %_ptr_Function_int Function
+   %param_16 = OpVariable %_ptr_Function_int Function
+   %param_17 = OpVariable %_ptr_Function_int Function
+   %param_18 = OpVariable %_ptr_Function_int Function
+   %param_19 = OpVariable %_ptr_Function_int Function
+   %param_20 = OpVariable %_ptr_Function_int Function
+   %param_21 = OpVariable %_ptr_Function_int Function
+   %param_22 = OpVariable %_ptr_Function_int Function
+         %pp = OpVariable %_ptr_Function_int Function
+%looplimiter0 = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+   %param_23 = OpVariable %_ptr_Function_int Function
+      %count = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+     %result = OpVariable %_ptr_Function_int Function
+   %param_24 = OpVariable %_ptr_Function_int Function
+               OpStore %treeIndex_0 %int_0
+        %100 = OpAccessChain %_ptr_Private_BST %tree %int_0
+        %101 = OpLoad %BST %100
+               OpStore %param_3 %101
+               OpStore %param_4 %int_9
+        %102 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_3 %param_4
+        %103 = OpLoad %BST %param_3
+        %104 = OpAccessChain %_ptr_Private_BST %tree %int_0
+               OpStore %104 %103
+        %105 = OpLoad %int %treeIndex_0
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %treeIndex_0 %106
+        %107 = OpLoad %int %treeIndex_0
+               OpStore %param_5 %107
+               OpStore %param_6 %int_5
+        %108 = OpFunctionCall %void %insert_i1_i1_ %param_5 %param_6
+        %109 = OpLoad %int %treeIndex_0
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %treeIndex_0 %110
+        %111 = OpLoad %int %treeIndex_0
+               OpStore %param_7 %111
+               OpStore %param_8 %int_12
+        %112 = OpFunctionCall %void %insert_i1_i1_ %param_7 %param_8
+        %113 = OpLoad %int %treeIndex_0
+        %114 = OpIAdd %int %113 %int_1
+               OpStore %treeIndex_0 %114
+        %115 = OpLoad %int %treeIndex_0
+               OpStore %param_9 %115
+               OpStore %param_10 %int_15
+        %116 = OpFunctionCall %void %insert_i1_i1_ %param_9 %param_10
+        %117 = OpLoad %int %treeIndex_0
+        %118 = OpIAdd %int %117 %int_1
+               OpStore %treeIndex_0 %118
+        %119 = OpLoad %int %treeIndex_0
+               OpStore %param_11 %119
+               OpStore %param_12 %int_7
+        %120 = OpFunctionCall %void %insert_i1_i1_ %param_11 %param_12
+        %121 = OpLoad %int %treeIndex_0
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %treeIndex_0 %122
+        %123 = OpLoad %int %treeIndex_0
+               OpStore %param_13 %123
+               OpStore %param_14 %int_8
+        %124 = OpFunctionCall %void %insert_i1_i1_ %param_13 %param_14
+        %125 = OpLoad %int %treeIndex_0
+        %126 = OpIAdd %int %125 %int_1
+               OpStore %treeIndex_0 %126
+        %127 = OpLoad %int %treeIndex_0
+               OpStore %param_15 %127
+               OpStore %param_16 %int_2
+        %128 = OpFunctionCall %void %insert_i1_i1_ %param_15 %param_16
+        %129 = OpLoad %int %treeIndex_0
+        %130 = OpIAdd %int %129 %int_1
+               OpStore %treeIndex_0 %130
+        %131 = OpLoad %int %treeIndex_0
+               OpStore %param_17 %131
+               OpStore %param_18 %int_6
+        %132 = OpFunctionCall %void %insert_i1_i1_ %param_17 %param_18
+        %133 = OpLoad %int %treeIndex_0
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %treeIndex_0 %134
+        %135 = OpLoad %int %treeIndex_0
+               OpStore %param_19 %135
+               OpStore %param_20 %int_17
+        %136 = OpFunctionCall %void %insert_i1_i1_ %param_19 %param_20
+        %137 = OpLoad %int %treeIndex_0
+        %138 = OpIAdd %int %137 %int_1
+               OpStore %treeIndex_0 %138
+        %139 = OpLoad %int %treeIndex_0
+               OpStore %param_21 %139
+               OpStore %param_22 %int_13
+        %140 = OpFunctionCall %void %insert_i1_i1_ %param_21 %param_22
+               OpStore %pp %int_0
+               OpStore %looplimiter0 %int_0
+               OpStore %i %int_0
+               OpBranch %141
+        %141 = OpLabel
+               OpLoopMerge %142 %143 None
+               OpBranch %144
+        %144 = OpLabel
+        %145 = OpLoad %int %i
+        %146 = OpSLessThan %bool %145 %int_10000
+               OpBranchConditional %146 %147 %142
+        %147 = OpLabel
+        %148 = OpLoad %int %looplimiter0
+        %149 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %150 = OpLoad %float %149
+        %151 = OpConvertFToS %int %150
+        %152 = OpSGreaterThanEqual %bool %148 %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+        %155 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %156 = OpLoad %float %155
+        %157 = OpConvertFToS %int %156
+        %158 = OpIAdd %int %int_1 %157
+               OpStore %param_23 %158
+        %159 = OpFunctionCall %int %identity_i1_ %param_23
+               OpStore %pp %159
+               OpBranch %142
+        %153 = OpLabel
+        %160 = OpLoad %int %looplimiter0
+        %161 = OpIAdd %int %160 %int_1
+               OpStore %looplimiter0 %161
+               OpBranch %143
+        %143 = OpLabel
+        %162 = OpLoad %int %i
+        %163 = OpIAdd %int %162 %int_1
+               OpStore %i %163
+               OpBranch %141
+        %142 = OpLabel
+        %164 = OpLoad %int %pp
+        %165 = OpINotEqual %bool %164 %int_2
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %166
+        %167 = OpLabel
+               OpReturn
+        %166 = OpLabel
+               OpStore %count %int_0
+               OpStore %i_0 %int_0
+               OpBranch %168
+        %168 = OpLabel
+               OpLoopMerge %169 %170 None
+               OpBranch %171
+        %171 = OpLabel
+        %172 = OpLoad %int %i_0
+        %173 = OpSLessThan %bool %172 %int_20
+               OpBranchConditional %173 %174 %169
+        %174 = OpLabel
+        %175 = OpLoad %int %i_0
+               OpStore %param_24 %175
+        %176 = OpFunctionCall %int %search_i1_ %param_24
+               OpStore %result %176
+        %177 = OpLoad %int %i_0
+               OpSelectionMerge %178 None
+               OpSwitch %177 %179 9 %180 5 %180 12 %180 15 %180 7 %180 8 %180 2 %180 6 %180 17 %180 13 %180
+        %179 = OpLabel
+        %181 = OpLoad %int %result
+        %182 = OpIEqual %bool %181 %int_n1
+               OpSelectionMerge %183 None
+               OpBranchConditional %182 %184 %183
+        %184 = OpLabel
+        %185 = OpLoad %int %count
+        %186 = OpIAdd %int %185 %int_1
+               OpStore %count %186
+               OpBranch %183
+        %183 = OpLabel
+               OpBranch %178
+        %180 = OpLabel
+        %187 = OpLoad %int %result
+        %188 = OpLoad %int %i_0
+        %189 = OpIEqual %bool %187 %188
+               OpSelectionMerge %190 None
+               OpBranchConditional %189 %191 %190
+        %191 = OpLabel
+        %192 = OpLoad %int %count
+        %193 = OpIAdd %int %192 %int_1
+               OpStore %count %193
+               OpBranch %190
+        %190 = OpLabel
+               OpBranch %178
+        %178 = OpLabel
+               OpBranch %170
+        %170 = OpLabel
+        %194 = OpLoad %int %i_0
+        %195 = OpIAdd %int %194 %int_1
+               OpStore %i_0 %195
+               OpBranch %168
+        %169 = OpLabel
+        %196 = OpLoad %int %count
+        %197 = OpIEqual %bool %196 %int_20
+               OpSelectionMerge %198 None
+               OpBranchConditional %197 %199 %200
+        %199 = OpLabel
+               OpStore %_GLF_color %97
+               OpBranch %198
+        %200 = OpLabel
+               OpStore %_GLF_color %98
+               OpBranch %198
+        %198 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%identity_i1_ = OpFunction %int None %60
+          %a = OpFunctionParameter %_ptr_Function_int
+        %201 = OpLabel
+        %202 = OpLoad %int %a
+        %203 = OpLoad %int %a
+        %204 = OpAccessChain %_ptr_Private_int %obj %int_0 %202
+               OpStore %204 %203
+        %205 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
+        %206 = OpLoad %int %205
+               OpReturnValue %206
+               OpFunctionEnd
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %62
+       %node = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+        %207 = OpLabel
+        %208 = OpLoad %int %data
+        %209 = OpAccessChain %_ptr_Function_int %node %int_0
+               OpStore %209 %208
+        %210 = OpAccessChain %_ptr_Function_int %node %int_1
+               OpStore %210 %int_n1
+        %211 = OpAccessChain %_ptr_Function_int %node %int_2
+               OpStore %211 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %63
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_0 = OpFunctionParameter %_ptr_Function_int
+        %212 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_BST Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_BST Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+               OpStore %baseIndex %int_0
+               OpBranch %213
+        %213 = OpLabel
+               OpLoopMerge %214 %215 None
+               OpBranch %216
+        %216 = OpLabel
+        %217 = OpLoad %int %baseIndex
+        %218 = OpLoad %int %treeIndex
+        %219 = OpSLessThanEqual %bool %217 %218
+               OpBranchConditional %219 %220 %214
+        %220 = OpLabel
+        %221 = OpLoad %int %data_0
+        %222 = OpLoad %int %baseIndex
+        %223 = OpAccessChain %_ptr_Private_int %tree %222 %int_0
+        %224 = OpLoad %int %223
+        %225 = OpSLessThanEqual %bool %221 %224
+               OpSelectionMerge %226 None
+               OpBranchConditional %225 %227 %228
+        %227 = OpLabel
+        %229 = OpLoad %int %baseIndex
+        %230 = OpAccessChain %_ptr_Private_int %tree %229 %int_1
+        %231 = OpLoad %int %230
+        %232 = OpIEqual %bool %231 %int_n1
+               OpSelectionMerge %233 None
+               OpBranchConditional %232 %234 %235
+        %234 = OpLabel
+        %236 = OpLoad %int %baseIndex
+        %237 = OpLoad %int %treeIndex
+        %238 = OpAccessChain %_ptr_Private_int %tree %236 %int_1
+               OpStore %238 %237
+        %239 = OpLoad %int %treeIndex
+        %240 = OpAccessChain %_ptr_Private_BST %tree %239
+        %241 = OpLoad %BST %240
+               OpStore %param %241
+        %242 = OpLoad %int %data_0
+               OpStore %param_0 %242
+        %243 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_0
+        %244 = OpLoad %BST %param
+        %245 = OpAccessChain %_ptr_Private_BST %tree %239
+               OpStore %245 %244
+               OpReturn
+        %235 = OpLabel
+        %246 = OpLoad %int %baseIndex
+        %247 = OpAccessChain %_ptr_Private_int %tree %246 %int_1
+        %248 = OpLoad %int %247
+               OpStore %baseIndex %248
+               OpBranch %215
+        %233 = OpLabel
+               OpUnreachable
+        %228 = OpLabel
+        %249 = OpLoad %int %baseIndex
+        %250 = OpAccessChain %_ptr_Private_int %tree %249 %int_2
+        %251 = OpLoad %int %250
+        %252 = OpIEqual %bool %251 %int_n1
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %254 %255
+        %254 = OpLabel
+        %256 = OpLoad %int %baseIndex
+        %257 = OpLoad %int %treeIndex
+        %258 = OpAccessChain %_ptr_Private_int %tree %256 %int_2
+               OpStore %258 %257
+        %259 = OpLoad %int %treeIndex
+        %260 = OpAccessChain %_ptr_Private_BST %tree %259
+        %261 = OpLoad %BST %260
+               OpStore %param_1 %261
+        %262 = OpLoad %int %data_0
+               OpStore %param_2 %262
+        %263 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_1 %param_2
+        %264 = OpLoad %BST %param_1
+        %265 = OpAccessChain %_ptr_Private_BST %tree %259
+               OpStore %265 %264
+               OpReturn
+        %255 = OpLabel
+        %266 = OpLoad %int %baseIndex
+        %267 = OpAccessChain %_ptr_Private_int %tree %266 %int_2
+        %268 = OpLoad %int %267
+               OpStore %baseIndex %268
+               OpBranch %215
+        %253 = OpLabel
+               OpUnreachable
+        %226 = OpLabel
+               OpUnreachable
+        %215 = OpLabel
+               OpBranch %213
+        %214 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %60
+     %target = OpFunctionParameter %_ptr_Function_int
+        %269 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function
+%currentNode = OpVariable %_ptr_Function_BST Function
+        %270 = OpVariable %_ptr_Function_int Function
+               OpStore %index %int_0
+               OpBranch %271
+        %271 = OpLabel
+               OpLoopMerge %272 %273 None
+               OpBranch %274
+        %274 = OpLabel
+        %275 = OpLoad %int %index
+        %276 = OpINotEqual %bool %275 %int_n1
+               OpBranchConditional %276 %277 %272
+        %277 = OpLabel
+        %278 = OpLoad %int %index
+        %279 = OpAccessChain %_ptr_Private_BST %tree %278
+        %280 = OpLoad %BST %279
+               OpStore %currentNode %280
+        %281 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %282 = OpLoad %int %281
+        %283 = OpLoad %int %target
+        %284 = OpIEqual %bool %282 %283
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %285
+        %286 = OpLabel
+        %287 = OpLoad %int %target
+               OpReturnValue %287
+        %285 = OpLabel
+        %288 = OpLoad %int %target
+        %289 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %290 = OpLoad %int %289
+        %291 = OpSGreaterThan %bool %288 %290
+               OpSelectionMerge %292 None
+               OpBranchConditional %291 %293 %294
+        %293 = OpLabel
+        %295 = OpAccessChain %_ptr_Function_int %currentNode %int_2
+        %296 = OpLoad %int %295
+               OpStore %270 %296
+               OpBranch %292
+        %294 = OpLabel
+        %297 = OpAccessChain %_ptr_Function_int %currentNode %int_1
+        %298 = OpLoad %int %297
+               OpStore %270 %298
+               OpBranch %292
+        %292 = OpLabel
+        %299 = OpLoad %int %270
+               OpStore %index %299
+               OpBranch %273
+        %273 = OpLabel
+               OpBranch %271
+        %272 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..ece942a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.hlsl
@@ -0,0 +1,271 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static BST tree[10] = (BST[10])0;
+cbuffer cbuffer_x_50 : register(b0, space0) {
+  uint4 x_50[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST node, inout int data) {
+  const int x_208 = data;
+  node.data = x_208;
+  node.leftIndex = -1;
+  node.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_217 = baseIndex;
+    const int x_218 = treeIndex;
+    if ((x_217 <= x_218)) {
+    } else {
+      break;
+    }
+    const int x_221 = data_1;
+    const int x_224 = tree[baseIndex].data;
+    if ((x_221 <= x_224)) {
+      const int x_231 = tree[baseIndex].leftIndex;
+      if ((x_231 == -1)) {
+        const int x_236 = baseIndex;
+        const int x_237 = treeIndex;
+        tree[x_236].leftIndex = x_237;
+        const int x_239 = treeIndex;
+        const BST x_241 = tree[x_239];
+        param = x_241;
+        const int x_242 = data_1;
+        param_1 = x_242;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree[x_239] = param;
+        return;
+      } else {
+        const int x_248 = tree[baseIndex].leftIndex;
+        baseIndex = x_248;
+        continue;
+      }
+      return;
+    } else {
+      const int x_251 = tree[baseIndex].rightIndex;
+      if ((x_251 == -1)) {
+        const int x_256 = baseIndex;
+        const int x_257 = treeIndex;
+        tree[x_256].rightIndex = x_257;
+        const int x_259 = treeIndex;
+        const BST x_261 = tree[x_259];
+        param_2 = x_261;
+        const int x_262 = data_1;
+        param_3 = x_262;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree[x_259] = param_2;
+        return;
+      } else {
+        const int x_268 = tree[baseIndex].rightIndex;
+        baseIndex = x_268;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int identity_i1_(inout int a) {
+  const int x_202 = a;
+  const int x_203 = a;
+  obj.numbers[x_202] = x_203;
+  const int x_206 = obj.numbers[2];
+  return x_206;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_270 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_280 = tree[index];
+    currentNode = x_280;
+    const int x_282 = currentNode.data;
+    const int x_283 = target;
+    if ((x_282 == x_283)) {
+      const int x_287 = target;
+      return x_287;
+    }
+    const int x_288 = target;
+    const int x_290 = currentNode.data;
+    if ((x_288 > x_290)) {
+      const int x_296 = currentNode.rightIndex;
+      x_270 = x_296;
+    } else {
+      const int x_298 = currentNode.leftIndex;
+      x_270 = x_298;
+    }
+    index = x_270;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int pp = 0;
+  int looplimiter0 = 0;
+  int i = 0;
+  int param_24 = 0;
+  int count = 0;
+  int i_1 = 0;
+  int result = 0;
+  int param_25 = 0;
+  treeIndex_1 = 0;
+  const BST x_101 = tree[0];
+  param_4 = x_101;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  pp = 0;
+  looplimiter0 = 0;
+  i = 0;
+  {
+    for(; (i < 10000); i = (i + 1)) {
+      const int x_148 = looplimiter0;
+      const float x_150 = asfloat(x_50[0].y);
+      if ((x_148 >= int(x_150))) {
+        const float x_156 = asfloat(x_50[0].y);
+        param_24 = (1 + int(x_156));
+        const int x_159 = identity_i1_(param_24);
+        pp = x_159;
+        break;
+      }
+      looplimiter0 = (looplimiter0 + 1);
+    }
+  }
+  if ((pp != 2)) {
+    return;
+  }
+  count = 0;
+  i_1 = 0;
+  {
+    for(; (i_1 < 20); i_1 = (i_1 + 1)) {
+      param_25 = i_1;
+      const int x_176 = search_i1_(param_25);
+      result = x_176;
+      switch(i_1) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          if ((result == i_1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.msl
new file mode 100644
index 0000000..c0e8e43
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.msl
@@ -0,0 +1,332 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper_1 {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const node, thread int* const data) {
+  int const x_208 = *(data);
+  (*(node)).data = x_208;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper_1* const tint_symbol_4) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_217 = baseIndex;
+    int const x_218 = *(treeIndex);
+    if ((x_217 <= x_218)) {
+    } else {
+      break;
+    }
+    int const x_221 = *(data_1);
+    int const x_222 = baseIndex;
+    int const x_224 = (*(tint_symbol_4)).arr[x_222].data;
+    if ((x_221 <= x_224)) {
+      int const x_229 = baseIndex;
+      int const x_231 = (*(tint_symbol_4)).arr[x_229].leftIndex;
+      if ((x_231 == -1)) {
+        int const x_236 = baseIndex;
+        int const x_237 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_236].leftIndex = x_237;
+        int const x_239 = *(treeIndex);
+        BST const x_241 = (*(tint_symbol_4)).arr[x_239];
+        param = x_241;
+        int const x_242 = *(data_1);
+        param_1 = x_242;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_244 = param;
+        (*(tint_symbol_4)).arr[x_239] = x_244;
+        return;
+      } else {
+        int const x_246 = baseIndex;
+        int const x_248 = (*(tint_symbol_4)).arr[x_246].leftIndex;
+        baseIndex = x_248;
+        continue;
+      }
+      return;
+    } else {
+      int const x_249 = baseIndex;
+      int const x_251 = (*(tint_symbol_4)).arr[x_249].rightIndex;
+      if ((x_251 == -1)) {
+        int const x_256 = baseIndex;
+        int const x_257 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_256].rightIndex = x_257;
+        int const x_259 = *(treeIndex);
+        BST const x_261 = (*(tint_symbol_4)).arr[x_259];
+        param_2 = x_261;
+        int const x_262 = *(data_1);
+        param_3 = x_262;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_264 = param_2;
+        (*(tint_symbol_4)).arr[x_259] = x_264;
+        return;
+      } else {
+        int const x_266 = baseIndex;
+        int const x_268 = (*(tint_symbol_4)).arr[x_266].rightIndex;
+        baseIndex = x_268;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int identity_i1_(thread int* const a, thread QuicksortObject* const tint_symbol_5) {
+  int const x_202 = *(a);
+  int const x_203 = *(a);
+  (*(tint_symbol_5)).numbers.arr[x_202] = x_203;
+  int const x_206 = (*(tint_symbol_5)).numbers.arr[2];
+  return x_206;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper_1* const tint_symbol_6) {
+  int index = 0;
+  BST currentNode = {};
+  int x_270 = 0;
+  index = 0;
+  while (true) {
+    int const x_275 = index;
+    if ((x_275 != -1)) {
+    } else {
+      break;
+    }
+    int const x_278 = index;
+    BST const x_280 = (*(tint_symbol_6)).arr[x_278];
+    currentNode = x_280;
+    int const x_282 = currentNode.data;
+    int const x_283 = *(target);
+    if ((x_282 == x_283)) {
+      int const x_287 = *(target);
+      return x_287;
+    }
+    int const x_288 = *(target);
+    int const x_290 = currentNode.data;
+    if ((x_288 > x_290)) {
+      int const x_296 = currentNode.rightIndex;
+      x_270 = x_296;
+    } else {
+      int const x_298 = currentNode.leftIndex;
+      x_270 = x_298;
+    }
+    int const x_299 = x_270;
+    index = x_299;
+  }
+  return -1;
+}
+
+void main_1(constant buf0& x_50, thread tint_array_wrapper_1* const tint_symbol_7, thread QuicksortObject* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int pp = 0;
+  int looplimiter0 = 0;
+  int i = 0;
+  int param_24 = 0;
+  int count = 0;
+  int i_1 = 0;
+  int result = 0;
+  int param_25 = 0;
+  treeIndex_1 = 0;
+  BST const x_101 = (*(tint_symbol_7)).arr[0];
+  param_4 = x_101;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_103 = param_4;
+  (*(tint_symbol_7)).arr[0] = x_103;
+  int const x_105 = treeIndex_1;
+  treeIndex_1 = (x_105 + 1);
+  int const x_107 = treeIndex_1;
+  param_6 = x_107;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7), tint_symbol_7);
+  int const x_109 = treeIndex_1;
+  treeIndex_1 = (x_109 + 1);
+  int const x_111 = treeIndex_1;
+  param_8 = x_111;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9), tint_symbol_7);
+  int const x_113 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  int const x_115 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11), tint_symbol_7);
+  int const x_117 = treeIndex_1;
+  treeIndex_1 = (x_117 + 1);
+  int const x_119 = treeIndex_1;
+  param_12 = x_119;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13), tint_symbol_7);
+  int const x_121 = treeIndex_1;
+  treeIndex_1 = (x_121 + 1);
+  int const x_123 = treeIndex_1;
+  param_14 = x_123;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15), tint_symbol_7);
+  int const x_125 = treeIndex_1;
+  treeIndex_1 = (x_125 + 1);
+  int const x_127 = treeIndex_1;
+  param_16 = x_127;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17), tint_symbol_7);
+  int const x_129 = treeIndex_1;
+  treeIndex_1 = (x_129 + 1);
+  int const x_131 = treeIndex_1;
+  param_18 = x_131;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19), tint_symbol_7);
+  int const x_133 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  int const x_135 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21), tint_symbol_7);
+  int const x_137 = treeIndex_1;
+  treeIndex_1 = (x_137 + 1);
+  int const x_139 = treeIndex_1;
+  param_22 = x_139;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23), tint_symbol_7);
+  pp = 0;
+  looplimiter0 = 0;
+  i = 0;
+  while (true) {
+    int const x_145 = i;
+    if ((x_145 < 10000)) {
+    } else {
+      break;
+    }
+    int const x_148 = looplimiter0;
+    float const x_150 = x_50.injectionSwitch.y;
+    if ((x_148 >= int(x_150))) {
+      float const x_156 = x_50.injectionSwitch.y;
+      param_24 = (1 + int(x_156));
+      int const x_159 = identity_i1_(&(param_24), tint_symbol_8);
+      pp = x_159;
+      break;
+    }
+    int const x_160 = looplimiter0;
+    looplimiter0 = (x_160 + 1);
+    {
+      int const x_162 = i;
+      i = (x_162 + 1);
+    }
+  }
+  int const x_164 = pp;
+  if ((x_164 != 2)) {
+    return;
+  }
+  count = 0;
+  i_1 = 0;
+  while (true) {
+    int const x_172 = i_1;
+    if ((x_172 < 20)) {
+    } else {
+      break;
+    }
+    int const x_175 = i_1;
+    param_25 = x_175;
+    int const x_176 = search_i1_(&(param_25), tint_symbol_7);
+    result = x_176;
+    int const x_177 = i_1;
+    switch(x_177) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_187 = result;
+        int const x_188 = i_1;
+        if ((x_187 == x_188)) {
+          int const x_192 = count;
+          count = (x_192 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_181 = result;
+        if ((x_181 == -1)) {
+          int const x_185 = count;
+          count = (x_185 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_194 = i_1;
+      i_1 = (x_194 + 1);
+    }
+  }
+  int const x_196 = count;
+  if ((x_196 == 20)) {
+    *(tint_symbol_9) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_9) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_50 [[buffer(0)]]) {
+  thread tint_array_wrapper_1 tint_symbol_10 = {};
+  thread QuicksortObject tint_symbol_11 = {};
+  thread float4 tint_symbol_12 = 0.0f;
+  main_1(x_50, &(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..885a0ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.spvasm
@@ -0,0 +1,572 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 371
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_50 "x_50"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %node "node"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %identity_i1_ "identity_i1_"
+               OpName %a "a"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_270 "x_270"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %pp "pp"
+               OpName %looplimiter0 "looplimiter0"
+               OpName %i "i"
+               OpName %param_24 "param_24"
+               OpName %count "count"
+               OpName %i_1 "i_1"
+               OpName %result "result"
+               OpName %param_25 "param_25"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_50 NonWritable
+               OpDecorate %x_50 DescriptorSet 0
+               OpDecorate %x_50 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+        %BST = OpTypeStruct %int %int %int
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+         %13 = OpConstantNull %_arr_BST_uint_10
+       %tree = OpVariable %_ptr_Private__arr_BST_uint_10 Private %13
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_50 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %22 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %22
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %22
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %45 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %51 = OpConstantNull %int
+         %53 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %131 = OpTypeFunction %int %_ptr_Function_int
+      %int_2 = OpConstant %int 2
+        %183 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+  %int_10000 = OpConstant %int 10000
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %357 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %358 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %359 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %25
+       %node = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %32 = OpLabel
+         %34 = OpLoad %int %data
+         %37 = OpAccessChain %_ptr_Function_int %node %uint_0
+               OpStore %37 %34
+         %40 = OpAccessChain %_ptr_Function_int %node %uint_1
+               OpStore %40 %int_n1
+         %44 = OpAccessChain %_ptr_Function_int %node %uint_2
+               OpStore %44 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %45
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %49 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %51
+      %param = OpVariable %_ptr_Function_BST Function %53
+    %param_1 = OpVariable %_ptr_Function_int Function %51
+    %param_2 = OpVariable %_ptr_Function_BST Function %53
+    %param_3 = OpVariable %_ptr_Function_int Function %51
+               OpStore %baseIndex %int_0
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpLoad %int %baseIndex
+         %64 = OpLoad %int %treeIndex
+         %65 = OpSLessThanEqual %bool %62 %64
+               OpSelectionMerge %67 None
+               OpBranchConditional %65 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %59
+         %67 = OpLabel
+         %71 = OpLoad %int %data_1
+         %72 = OpLoad %int %baseIndex
+         %74 = OpAccessChain %_ptr_Private_int %tree %72 %uint_0
+         %75 = OpLoad %int %74
+         %76 = OpSLessThanEqual %bool %71 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+         %80 = OpLoad %int %baseIndex
+         %81 = OpAccessChain %_ptr_Private_int %tree %80 %uint_1
+         %82 = OpLoad %int %81
+         %83 = OpIEqual %bool %82 %int_n1
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+         %87 = OpLoad %int %baseIndex
+         %89 = OpLoad %int %treeIndex
+         %90 = OpAccessChain %_ptr_Private_int %tree %87 %uint_1
+               OpStore %90 %89
+         %92 = OpLoad %int %treeIndex
+         %94 = OpAccessChain %_ptr_Private_BST %tree %92
+         %95 = OpLoad %BST %94
+               OpStore %param %95
+         %97 = OpLoad %int %data_1
+               OpStore %param_1 %97
+         %98 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+        %101 = OpLoad %BST %param
+        %102 = OpAccessChain %_ptr_Private_BST %tree %92
+               OpStore %102 %101
+               OpReturn
+         %86 = OpLabel
+        %103 = OpLoad %int %baseIndex
+        %104 = OpAccessChain %_ptr_Private_int %tree %103 %uint_1
+        %105 = OpLoad %int %104
+               OpStore %baseIndex %105
+               OpBranch %60
+         %84 = OpLabel
+               OpReturn
+         %79 = OpLabel
+        %106 = OpLoad %int %baseIndex
+        %107 = OpAccessChain %_ptr_Private_int %tree %106 %uint_2
+        %108 = OpLoad %int %107
+        %109 = OpIEqual %bool %108 %int_n1
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %112
+        %111 = OpLabel
+        %113 = OpLoad %int %baseIndex
+        %115 = OpLoad %int %treeIndex
+        %116 = OpAccessChain %_ptr_Private_int %tree %113 %uint_2
+               OpStore %116 %115
+        %118 = OpLoad %int %treeIndex
+        %119 = OpAccessChain %_ptr_Private_BST %tree %118
+        %120 = OpLoad %BST %119
+               OpStore %param_2 %120
+        %122 = OpLoad %int %data_1
+               OpStore %param_3 %122
+        %123 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %126 = OpLoad %BST %param_2
+        %127 = OpAccessChain %_ptr_Private_BST %tree %118
+               OpStore %127 %126
+               OpReturn
+        %112 = OpLabel
+        %128 = OpLoad %int %baseIndex
+        %129 = OpAccessChain %_ptr_Private_int %tree %128 %uint_2
+        %130 = OpLoad %int %129
+               OpStore %baseIndex %130
+               OpBranch %60
+        %110 = OpLabel
+               OpReturn
+         %77 = OpLabel
+               OpReturn
+         %60 = OpLabel
+               OpBranch %58
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%identity_i1_ = OpFunction %int None %131
+          %a = OpFunctionParameter %_ptr_Function_int
+        %134 = OpLabel
+        %136 = OpLoad %int %a
+        %138 = OpLoad %int %a
+        %139 = OpAccessChain %_ptr_Private_int %obj %uint_0 %136
+               OpStore %139 %138
+        %141 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %142 = OpLoad %int %141
+               OpReturnValue %142
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %131
+     %target = OpFunctionParameter %_ptr_Function_int
+        %145 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %51
+%currentNode = OpVariable %_ptr_Function_BST Function %53
+      %x_270 = OpVariable %_ptr_Function_int Function %51
+               OpStore %index %int_0
+               OpBranch %149
+        %149 = OpLabel
+               OpLoopMerge %150 %151 None
+               OpBranch %152
+        %152 = OpLabel
+        %153 = OpLoad %int %index
+        %154 = OpINotEqual %bool %153 %int_n1
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+               OpBranch %155
+        %157 = OpLabel
+               OpBranch %150
+        %155 = OpLabel
+        %158 = OpLoad %int %index
+        %159 = OpAccessChain %_ptr_Private_BST %tree %158
+        %160 = OpLoad %BST %159
+               OpStore %currentNode %160
+        %161 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %162 = OpLoad %int %161
+        %164 = OpLoad %int %target
+        %165 = OpIEqual %bool %162 %164
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %166
+        %167 = OpLabel
+        %169 = OpLoad %int %target
+               OpReturnValue %169
+        %166 = OpLabel
+        %171 = OpLoad %int %target
+        %172 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %173 = OpLoad %int %172
+        %174 = OpSGreaterThan %bool %171 %173
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %177
+        %176 = OpLabel
+        %178 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %179 = OpLoad %int %178
+               OpStore %x_270 %179
+               OpBranch %175
+        %177 = OpLabel
+        %180 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %181 = OpLoad %int %180
+               OpStore %x_270 %181
+               OpBranch %175
+        %175 = OpLabel
+        %182 = OpLoad %int %x_270
+               OpStore %index %182
+               OpBranch %151
+        %151 = OpLabel
+               OpBranch %149
+        %150 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %183
+        %185 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %51
+    %param_4 = OpVariable %_ptr_Function_BST Function %53
+    %param_5 = OpVariable %_ptr_Function_int Function %51
+    %param_6 = OpVariable %_ptr_Function_int Function %51
+    %param_7 = OpVariable %_ptr_Function_int Function %51
+    %param_8 = OpVariable %_ptr_Function_int Function %51
+    %param_9 = OpVariable %_ptr_Function_int Function %51
+   %param_10 = OpVariable %_ptr_Function_int Function %51
+   %param_11 = OpVariable %_ptr_Function_int Function %51
+   %param_12 = OpVariable %_ptr_Function_int Function %51
+   %param_13 = OpVariable %_ptr_Function_int Function %51
+   %param_14 = OpVariable %_ptr_Function_int Function %51
+   %param_15 = OpVariable %_ptr_Function_int Function %51
+   %param_16 = OpVariable %_ptr_Function_int Function %51
+   %param_17 = OpVariable %_ptr_Function_int Function %51
+   %param_18 = OpVariable %_ptr_Function_int Function %51
+   %param_19 = OpVariable %_ptr_Function_int Function %51
+   %param_20 = OpVariable %_ptr_Function_int Function %51
+   %param_21 = OpVariable %_ptr_Function_int Function %51
+   %param_22 = OpVariable %_ptr_Function_int Function %51
+   %param_23 = OpVariable %_ptr_Function_int Function %51
+         %pp = OpVariable %_ptr_Function_int Function %51
+%looplimiter0 = OpVariable %_ptr_Function_int Function %51
+          %i = OpVariable %_ptr_Function_int Function %51
+   %param_24 = OpVariable %_ptr_Function_int Function %51
+      %count = OpVariable %_ptr_Function_int Function %51
+        %i_1 = OpVariable %_ptr_Function_int Function %51
+     %result = OpVariable %_ptr_Function_int Function %51
+   %param_25 = OpVariable %_ptr_Function_int Function %51
+               OpStore %treeIndex_1 %int_0
+        %215 = OpAccessChain %_ptr_Private_BST %tree %int_0
+        %216 = OpLoad %BST %215
+               OpStore %param_4 %216
+               OpStore %param_5 %int_9
+        %218 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %221 = OpLoad %BST %param_4
+        %222 = OpAccessChain %_ptr_Private_BST %tree %int_0
+               OpStore %222 %221
+        %223 = OpLoad %int %treeIndex_1
+        %225 = OpIAdd %int %223 %int_1
+               OpStore %treeIndex_1 %225
+        %226 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %226
+               OpStore %param_7 %int_5
+        %228 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %231 = OpLoad %int %treeIndex_1
+        %232 = OpIAdd %int %231 %int_1
+               OpStore %treeIndex_1 %232
+        %233 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %233
+               OpStore %param_9 %int_12
+        %235 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %238 = OpLoad %int %treeIndex_1
+        %239 = OpIAdd %int %238 %int_1
+               OpStore %treeIndex_1 %239
+        %240 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %240
+               OpStore %param_11 %int_15
+        %242 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %245 = OpLoad %int %treeIndex_1
+        %246 = OpIAdd %int %245 %int_1
+               OpStore %treeIndex_1 %246
+        %247 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %247
+               OpStore %param_13 %int_7
+        %249 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %252 = OpLoad %int %treeIndex_1
+        %253 = OpIAdd %int %252 %int_1
+               OpStore %treeIndex_1 %253
+        %254 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %254
+               OpStore %param_15 %int_8
+        %256 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %259 = OpLoad %int %treeIndex_1
+        %260 = OpIAdd %int %259 %int_1
+               OpStore %treeIndex_1 %260
+        %261 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %261
+               OpStore %param_17 %int_2
+        %262 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %265 = OpLoad %int %treeIndex_1
+        %266 = OpIAdd %int %265 %int_1
+               OpStore %treeIndex_1 %266
+        %267 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %267
+               OpStore %param_19 %int_6
+        %269 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %272 = OpLoad %int %treeIndex_1
+        %273 = OpIAdd %int %272 %int_1
+               OpStore %treeIndex_1 %273
+        %274 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %274
+               OpStore %param_21 %int_17
+        %276 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %279 = OpLoad %int %treeIndex_1
+        %280 = OpIAdd %int %279 %int_1
+               OpStore %treeIndex_1 %280
+        %281 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %281
+               OpStore %param_23 %int_13
+        %283 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %pp %int_0
+               OpStore %looplimiter0 %int_0
+               OpStore %i %int_0
+               OpBranch %286
+        %286 = OpLabel
+               OpLoopMerge %287 %288 None
+               OpBranch %289
+        %289 = OpLabel
+        %290 = OpLoad %int %i
+        %292 = OpSLessThan %bool %290 %int_10000
+               OpSelectionMerge %293 None
+               OpBranchConditional %292 %294 %295
+        %294 = OpLabel
+               OpBranch %293
+        %295 = OpLabel
+               OpBranch %287
+        %293 = OpLabel
+        %296 = OpLoad %int %looplimiter0
+        %298 = OpAccessChain %_ptr_Uniform_float %x_50 %uint_0 %uint_1
+        %299 = OpLoad %float %298
+        %300 = OpConvertFToS %int %299
+        %301 = OpSGreaterThanEqual %bool %296 %300
+               OpSelectionMerge %302 None
+               OpBranchConditional %301 %303 %302
+        %303 = OpLabel
+        %304 = OpAccessChain %_ptr_Uniform_float %x_50 %uint_0 %uint_1
+        %305 = OpLoad %float %304
+        %306 = OpConvertFToS %int %305
+        %307 = OpIAdd %int %int_1 %306
+               OpStore %param_24 %307
+        %308 = OpFunctionCall %int %identity_i1_ %param_24
+               OpStore %pp %308
+               OpBranch %287
+        %302 = OpLabel
+        %310 = OpLoad %int %looplimiter0
+        %311 = OpIAdd %int %310 %int_1
+               OpStore %looplimiter0 %311
+               OpBranch %288
+        %288 = OpLabel
+        %312 = OpLoad %int %i
+        %313 = OpIAdd %int %312 %int_1
+               OpStore %i %313
+               OpBranch %286
+        %287 = OpLabel
+        %314 = OpLoad %int %pp
+        %315 = OpINotEqual %bool %314 %int_2
+               OpSelectionMerge %316 None
+               OpBranchConditional %315 %317 %316
+        %317 = OpLabel
+               OpReturn
+        %316 = OpLabel
+               OpStore %count %int_0
+               OpStore %i_1 %int_0
+               OpBranch %318
+        %318 = OpLabel
+               OpLoopMerge %319 %320 None
+               OpBranch %321
+        %321 = OpLabel
+        %322 = OpLoad %int %i_1
+        %324 = OpSLessThan %bool %322 %int_20
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %327
+        %326 = OpLabel
+               OpBranch %325
+        %327 = OpLabel
+               OpBranch %319
+        %325 = OpLabel
+        %328 = OpLoad %int %i_1
+               OpStore %param_25 %328
+        %329 = OpFunctionCall %int %search_i1_ %param_25
+               OpStore %result %329
+        %331 = OpLoad %int %i_1
+               OpSelectionMerge %332 None
+               OpSwitch %331 %333 2 %334 5 %334 6 %334 7 %334 8 %334 9 %334 12 %334 13 %334 15 %334 17 %334
+        %334 = OpLabel
+        %335 = OpLoad %int %result
+        %336 = OpLoad %int %i_1
+        %337 = OpIEqual %bool %335 %336
+               OpSelectionMerge %338 None
+               OpBranchConditional %337 %339 %338
+        %339 = OpLabel
+        %340 = OpLoad %int %count
+        %341 = OpIAdd %int %340 %int_1
+               OpStore %count %341
+               OpBranch %338
+        %338 = OpLabel
+               OpBranch %332
+        %333 = OpLabel
+        %342 = OpLoad %int %result
+        %343 = OpIEqual %bool %342 %int_n1
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %344
+        %345 = OpLabel
+        %346 = OpLoad %int %count
+        %347 = OpIAdd %int %346 %int_1
+               OpStore %count %347
+               OpBranch %344
+        %344 = OpLabel
+               OpBranch %332
+        %332 = OpLabel
+               OpBranch %320
+        %320 = OpLabel
+        %348 = OpLoad %int %i_1
+        %349 = OpIAdd %int %348 %int_1
+               OpStore %i_1 %349
+               OpBranch %318
+        %319 = OpLabel
+        %350 = OpLoad %int %count
+        %351 = OpIEqual %bool %350 %int_20
+               OpSelectionMerge %352 None
+               OpBranchConditional %351 %353 %354
+        %353 = OpLabel
+               OpStore %x_GLF_color %357
+               OpBranch %352
+        %354 = OpLabel
+               OpStore %x_GLF_color %358
+               OpBranch %352
+        %352 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %359
+%tint_symbol = OpFunctionParameter %main_out
+        %363 = OpLabel
+        %364 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %364
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %183
+        %366 = OpLabel
+        %367 = OpFunctionCall %void %main_1
+        %369 = OpLoad %v4float %x_GLF_color
+        %370 = OpCompositeConstruct %main_out %369
+        %368 = OpFunctionCall %void %tint_symbol_2 %370
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..cd61e29
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.wgsl
@@ -0,0 +1,319 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> tree : array<BST, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_50 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(node : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_208 : i32 = *(data);
+  (*(node)).data = x_208;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_217 : i32 = baseIndex;
+    let x_218 : i32 = *(treeIndex);
+    if ((x_217 <= x_218)) {
+    } else {
+      break;
+    }
+    let x_221 : i32 = *(data_1);
+    let x_222 : i32 = baseIndex;
+    let x_224 : i32 = tree[x_222].data;
+    if ((x_221 <= x_224)) {
+      let x_229 : i32 = baseIndex;
+      let x_231 : i32 = tree[x_229].leftIndex;
+      if ((x_231 == -1)) {
+        let x_236 : i32 = baseIndex;
+        let x_237 : i32 = *(treeIndex);
+        tree[x_236].leftIndex = x_237;
+        let x_239 : i32 = *(treeIndex);
+        let x_241 : BST = tree[x_239];
+        param = x_241;
+        let x_242 : i32 = *(data_1);
+        param_1 = x_242;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_244 : BST = param;
+        tree[x_239] = x_244;
+        return;
+      } else {
+        let x_246 : i32 = baseIndex;
+        let x_248 : i32 = tree[x_246].leftIndex;
+        baseIndex = x_248;
+        continue;
+      }
+      return;
+    } else {
+      let x_249 : i32 = baseIndex;
+      let x_251 : i32 = tree[x_249].rightIndex;
+      if ((x_251 == -1)) {
+        let x_256 : i32 = baseIndex;
+        let x_257 : i32 = *(treeIndex);
+        tree[x_256].rightIndex = x_257;
+        let x_259 : i32 = *(treeIndex);
+        let x_261 : BST = tree[x_259];
+        param_2 = x_261;
+        let x_262 : i32 = *(data_1);
+        param_3 = x_262;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_264 : BST = param_2;
+        tree[x_259] = x_264;
+        return;
+      } else {
+        let x_266 : i32 = baseIndex;
+        let x_268 : i32 = tree[x_266].rightIndex;
+        baseIndex = x_268;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn identity_i1_(a : ptr<function, i32>) -> i32 {
+  let x_202 : i32 = *(a);
+  let x_203 : i32 = *(a);
+  obj.numbers[x_202] = x_203;
+  let x_206 : i32 = obj.numbers[2];
+  return x_206;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_270 : i32;
+  index = 0;
+  loop {
+    let x_275 : i32 = index;
+    if ((x_275 != -1)) {
+    } else {
+      break;
+    }
+    let x_278 : i32 = index;
+    let x_280 : BST = tree[x_278];
+    currentNode = x_280;
+    let x_282 : i32 = currentNode.data;
+    let x_283 : i32 = *(target);
+    if ((x_282 == x_283)) {
+      let x_287 : i32 = *(target);
+      return x_287;
+    }
+    let x_288 : i32 = *(target);
+    let x_290 : i32 = currentNode.data;
+    if ((x_288 > x_290)) {
+      let x_296 : i32 = currentNode.rightIndex;
+      x_270 = x_296;
+    } else {
+      let x_298 : i32 = currentNode.leftIndex;
+      x_270 = x_298;
+    }
+    let x_299 : i32 = x_270;
+    index = x_299;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var pp : i32;
+  var looplimiter0 : i32;
+  var i : i32;
+  var param_24 : i32;
+  var count : i32;
+  var i_1 : i32;
+  var result : i32;
+  var param_25 : i32;
+  treeIndex_1 = 0;
+  let x_101 : BST = tree[0];
+  param_4 = x_101;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_103 : BST = param_4;
+  tree[0] = x_103;
+  let x_105 : i32 = treeIndex_1;
+  treeIndex_1 = (x_105 + 1);
+  let x_107 : i32 = treeIndex_1;
+  param_6 = x_107;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_109 : i32 = treeIndex_1;
+  treeIndex_1 = (x_109 + 1);
+  let x_111 : i32 = treeIndex_1;
+  param_8 = x_111;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_113 : i32 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  let x_115 : i32 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_117 : i32 = treeIndex_1;
+  treeIndex_1 = (x_117 + 1);
+  let x_119 : i32 = treeIndex_1;
+  param_12 = x_119;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_121 : i32 = treeIndex_1;
+  treeIndex_1 = (x_121 + 1);
+  let x_123 : i32 = treeIndex_1;
+  param_14 = x_123;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_125 : i32 = treeIndex_1;
+  treeIndex_1 = (x_125 + 1);
+  let x_127 : i32 = treeIndex_1;
+  param_16 = x_127;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_129 : i32 = treeIndex_1;
+  treeIndex_1 = (x_129 + 1);
+  let x_131 : i32 = treeIndex_1;
+  param_18 = x_131;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_133 : i32 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  let x_135 : i32 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_137 : i32 = treeIndex_1;
+  treeIndex_1 = (x_137 + 1);
+  let x_139 : i32 = treeIndex_1;
+  param_22 = x_139;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  pp = 0;
+  looplimiter0 = 0;
+  i = 0;
+  loop {
+    let x_145 : i32 = i;
+    if ((x_145 < 10000)) {
+    } else {
+      break;
+    }
+    let x_148 : i32 = looplimiter0;
+    let x_150 : f32 = x_50.injectionSwitch.y;
+    if ((x_148 >= i32(x_150))) {
+      let x_156 : f32 = x_50.injectionSwitch.y;
+      param_24 = (1 + i32(x_156));
+      let x_159 : i32 = identity_i1_(&(param_24));
+      pp = x_159;
+      break;
+    }
+    let x_160 : i32 = looplimiter0;
+    looplimiter0 = (x_160 + 1);
+
+    continuing {
+      let x_162 : i32 = i;
+      i = (x_162 + 1);
+    }
+  }
+  let x_164 : i32 = pp;
+  if ((x_164 != 2)) {
+    return;
+  }
+  count = 0;
+  i_1 = 0;
+  loop {
+    let x_172 : i32 = i_1;
+    if ((x_172 < 20)) {
+    } else {
+      break;
+    }
+    let x_175 : i32 = i_1;
+    param_25 = x_175;
+    let x_176 : i32 = search_i1_(&(param_25));
+    result = x_176;
+    let x_177 : i32 = i_1;
+    switch(x_177) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_187 : i32 = result;
+        let x_188 : i32 = i_1;
+        if ((x_187 == x_188)) {
+          let x_192 : i32 = count;
+          count = (x_192 + 1);
+        }
+      }
+      default: {
+        let x_181 : i32 = result;
+        if ((x_181 == -1)) {
+          let x_185 : i32 = count;
+          count = (x_185 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_194 : i32 = i_1;
+      i_1 = (x_194 + 1);
+    }
+  }
+  let x_196 : i32 = count;
+  if ((x_196 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
new file mode 100644
index 0000000..cd61e29
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
@@ -0,0 +1,319 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> tree : array<BST, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_50 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(node : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_208 : i32 = *(data);
+  (*(node)).data = x_208;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_217 : i32 = baseIndex;
+    let x_218 : i32 = *(treeIndex);
+    if ((x_217 <= x_218)) {
+    } else {
+      break;
+    }
+    let x_221 : i32 = *(data_1);
+    let x_222 : i32 = baseIndex;
+    let x_224 : i32 = tree[x_222].data;
+    if ((x_221 <= x_224)) {
+      let x_229 : i32 = baseIndex;
+      let x_231 : i32 = tree[x_229].leftIndex;
+      if ((x_231 == -1)) {
+        let x_236 : i32 = baseIndex;
+        let x_237 : i32 = *(treeIndex);
+        tree[x_236].leftIndex = x_237;
+        let x_239 : i32 = *(treeIndex);
+        let x_241 : BST = tree[x_239];
+        param = x_241;
+        let x_242 : i32 = *(data_1);
+        param_1 = x_242;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_244 : BST = param;
+        tree[x_239] = x_244;
+        return;
+      } else {
+        let x_246 : i32 = baseIndex;
+        let x_248 : i32 = tree[x_246].leftIndex;
+        baseIndex = x_248;
+        continue;
+      }
+      return;
+    } else {
+      let x_249 : i32 = baseIndex;
+      let x_251 : i32 = tree[x_249].rightIndex;
+      if ((x_251 == -1)) {
+        let x_256 : i32 = baseIndex;
+        let x_257 : i32 = *(treeIndex);
+        tree[x_256].rightIndex = x_257;
+        let x_259 : i32 = *(treeIndex);
+        let x_261 : BST = tree[x_259];
+        param_2 = x_261;
+        let x_262 : i32 = *(data_1);
+        param_3 = x_262;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_264 : BST = param_2;
+        tree[x_259] = x_264;
+        return;
+      } else {
+        let x_266 : i32 = baseIndex;
+        let x_268 : i32 = tree[x_266].rightIndex;
+        baseIndex = x_268;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn identity_i1_(a : ptr<function, i32>) -> i32 {
+  let x_202 : i32 = *(a);
+  let x_203 : i32 = *(a);
+  obj.numbers[x_202] = x_203;
+  let x_206 : i32 = obj.numbers[2];
+  return x_206;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_270 : i32;
+  index = 0;
+  loop {
+    let x_275 : i32 = index;
+    if ((x_275 != -1)) {
+    } else {
+      break;
+    }
+    let x_278 : i32 = index;
+    let x_280 : BST = tree[x_278];
+    currentNode = x_280;
+    let x_282 : i32 = currentNode.data;
+    let x_283 : i32 = *(target);
+    if ((x_282 == x_283)) {
+      let x_287 : i32 = *(target);
+      return x_287;
+    }
+    let x_288 : i32 = *(target);
+    let x_290 : i32 = currentNode.data;
+    if ((x_288 > x_290)) {
+      let x_296 : i32 = currentNode.rightIndex;
+      x_270 = x_296;
+    } else {
+      let x_298 : i32 = currentNode.leftIndex;
+      x_270 = x_298;
+    }
+    let x_299 : i32 = x_270;
+    index = x_299;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var pp : i32;
+  var looplimiter0 : i32;
+  var i : i32;
+  var param_24 : i32;
+  var count : i32;
+  var i_1 : i32;
+  var result : i32;
+  var param_25 : i32;
+  treeIndex_1 = 0;
+  let x_101 : BST = tree[0];
+  param_4 = x_101;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_103 : BST = param_4;
+  tree[0] = x_103;
+  let x_105 : i32 = treeIndex_1;
+  treeIndex_1 = (x_105 + 1);
+  let x_107 : i32 = treeIndex_1;
+  param_6 = x_107;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_109 : i32 = treeIndex_1;
+  treeIndex_1 = (x_109 + 1);
+  let x_111 : i32 = treeIndex_1;
+  param_8 = x_111;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_113 : i32 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  let x_115 : i32 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_117 : i32 = treeIndex_1;
+  treeIndex_1 = (x_117 + 1);
+  let x_119 : i32 = treeIndex_1;
+  param_12 = x_119;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_121 : i32 = treeIndex_1;
+  treeIndex_1 = (x_121 + 1);
+  let x_123 : i32 = treeIndex_1;
+  param_14 = x_123;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_125 : i32 = treeIndex_1;
+  treeIndex_1 = (x_125 + 1);
+  let x_127 : i32 = treeIndex_1;
+  param_16 = x_127;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_129 : i32 = treeIndex_1;
+  treeIndex_1 = (x_129 + 1);
+  let x_131 : i32 = treeIndex_1;
+  param_18 = x_131;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_133 : i32 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  let x_135 : i32 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_137 : i32 = treeIndex_1;
+  treeIndex_1 = (x_137 + 1);
+  let x_139 : i32 = treeIndex_1;
+  param_22 = x_139;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  pp = 0;
+  looplimiter0 = 0;
+  i = 0;
+  loop {
+    let x_145 : i32 = i;
+    if ((x_145 < 10000)) {
+    } else {
+      break;
+    }
+    let x_148 : i32 = looplimiter0;
+    let x_150 : f32 = x_50.injectionSwitch.y;
+    if ((x_148 >= i32(x_150))) {
+      let x_156 : f32 = x_50.injectionSwitch.y;
+      param_24 = (1 + i32(x_156));
+      let x_159 : i32 = identity_i1_(&(param_24));
+      pp = x_159;
+      break;
+    }
+    let x_160 : i32 = looplimiter0;
+    looplimiter0 = (x_160 + 1);
+
+    continuing {
+      let x_162 : i32 = i;
+      i = (x_162 + 1);
+    }
+  }
+  let x_164 : i32 = pp;
+  if ((x_164 != 2)) {
+    return;
+  }
+  count = 0;
+  i_1 = 0;
+  loop {
+    let x_172 : i32 = i_1;
+    if ((x_172 < 20)) {
+    } else {
+      break;
+    }
+    let x_175 : i32 = i_1;
+    param_25 = x_175;
+    let x_176 : i32 = search_i1_(&(param_25));
+    result = x_176;
+    let x_177 : i32 = i_1;
+    switch(x_177) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_187 : i32 = result;
+        let x_188 : i32 = i_1;
+        if ((x_187 == x_188)) {
+          let x_192 : i32 = count;
+          count = (x_192 + 1);
+        }
+      }
+      default: {
+        let x_181 : i32 = result;
+        if ((x_181 == -1)) {
+          let x_185 : i32 = count;
+          count = (x_185 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_194 : i32 = i_1;
+      i_1 = (x_194 + 1);
+    }
+  }
+  let x_196 : i32 = count;
+  if ((x_196 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..ece942a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.hlsl
@@ -0,0 +1,271 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static BST tree[10] = (BST[10])0;
+cbuffer cbuffer_x_50 : register(b0, space0) {
+  uint4 x_50[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST node, inout int data) {
+  const int x_208 = data;
+  node.data = x_208;
+  node.leftIndex = -1;
+  node.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    const int x_217 = baseIndex;
+    const int x_218 = treeIndex;
+    if ((x_217 <= x_218)) {
+    } else {
+      break;
+    }
+    const int x_221 = data_1;
+    const int x_224 = tree[baseIndex].data;
+    if ((x_221 <= x_224)) {
+      const int x_231 = tree[baseIndex].leftIndex;
+      if ((x_231 == -1)) {
+        const int x_236 = baseIndex;
+        const int x_237 = treeIndex;
+        tree[x_236].leftIndex = x_237;
+        const int x_239 = treeIndex;
+        const BST x_241 = tree[x_239];
+        param = x_241;
+        const int x_242 = data_1;
+        param_1 = x_242;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree[x_239] = param;
+        return;
+      } else {
+        const int x_248 = tree[baseIndex].leftIndex;
+        baseIndex = x_248;
+        continue;
+      }
+      return;
+    } else {
+      const int x_251 = tree[baseIndex].rightIndex;
+      if ((x_251 == -1)) {
+        const int x_256 = baseIndex;
+        const int x_257 = treeIndex;
+        tree[x_256].rightIndex = x_257;
+        const int x_259 = treeIndex;
+        const BST x_261 = tree[x_259];
+        param_2 = x_261;
+        const int x_262 = data_1;
+        param_3 = x_262;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree[x_259] = param_2;
+        return;
+      } else {
+        const int x_268 = tree[baseIndex].rightIndex;
+        baseIndex = x_268;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int identity_i1_(inout int a) {
+  const int x_202 = a;
+  const int x_203 = a;
+  obj.numbers[x_202] = x_203;
+  const int x_206 = obj.numbers[2];
+  return x_206;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_270 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_280 = tree[index];
+    currentNode = x_280;
+    const int x_282 = currentNode.data;
+    const int x_283 = target;
+    if ((x_282 == x_283)) {
+      const int x_287 = target;
+      return x_287;
+    }
+    const int x_288 = target;
+    const int x_290 = currentNode.data;
+    if ((x_288 > x_290)) {
+      const int x_296 = currentNode.rightIndex;
+      x_270 = x_296;
+    } else {
+      const int x_298 = currentNode.leftIndex;
+      x_270 = x_298;
+    }
+    index = x_270;
+  }
+  return -1;
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_4 = (BST)0;
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int pp = 0;
+  int looplimiter0 = 0;
+  int i = 0;
+  int param_24 = 0;
+  int count = 0;
+  int i_1 = 0;
+  int result = 0;
+  int param_25 = 0;
+  treeIndex_1 = 0;
+  const BST x_101 = tree[0];
+  param_4 = x_101;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_4, param_5);
+  tree[0] = param_4;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_6 = treeIndex_1;
+  param_7 = 5;
+  insert_i1_i1_(param_6, param_7);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_8 = treeIndex_1;
+  param_9 = 12;
+  insert_i1_i1_(param_8, param_9);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 15;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_12 = treeIndex_1;
+  param_13 = 7;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 8;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 2;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 6;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 17;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 13;
+  insert_i1_i1_(param_22, param_23);
+  pp = 0;
+  looplimiter0 = 0;
+  i = 0;
+  {
+    for(; (i < 10000); i = (i + 1)) {
+      const int x_148 = looplimiter0;
+      const float x_150 = asfloat(x_50[0].y);
+      if ((x_148 >= int(x_150))) {
+        const float x_156 = asfloat(x_50[0].y);
+        param_24 = (1 + int(x_156));
+        const int x_159 = identity_i1_(param_24);
+        pp = x_159;
+        break;
+      }
+      looplimiter0 = (looplimiter0 + 1);
+    }
+  }
+  if ((pp != 2)) {
+    return;
+  }
+  count = 0;
+  i_1 = 0;
+  {
+    for(; (i_1 < 20); i_1 = (i_1 + 1)) {
+      param_25 = i_1;
+      const int x_176 = search_i1_(param_25);
+      result = x_176;
+      switch(i_1) {
+        case 2:
+        case 5:
+        case 6:
+        case 7:
+        case 8:
+        case 9:
+        case 12:
+        case 13:
+        case 15:
+        case 17: {
+          if ((result == i_1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+        default: {
+          if ((result == -1)) {
+            count = (count + 1);
+          }
+          break;
+        }
+      }
+    }
+  }
+  if ((count == 20)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.msl
new file mode 100644
index 0000000..c0e8e43
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.msl
@@ -0,0 +1,332 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper_1 {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const node, thread int* const data) {
+  int const x_208 = *(data);
+  (*(node)).data = x_208;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper_1* const tint_symbol_4) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  baseIndex = 0;
+  while (true) {
+    int const x_217 = baseIndex;
+    int const x_218 = *(treeIndex);
+    if ((x_217 <= x_218)) {
+    } else {
+      break;
+    }
+    int const x_221 = *(data_1);
+    int const x_222 = baseIndex;
+    int const x_224 = (*(tint_symbol_4)).arr[x_222].data;
+    if ((x_221 <= x_224)) {
+      int const x_229 = baseIndex;
+      int const x_231 = (*(tint_symbol_4)).arr[x_229].leftIndex;
+      if ((x_231 == -1)) {
+        int const x_236 = baseIndex;
+        int const x_237 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_236].leftIndex = x_237;
+        int const x_239 = *(treeIndex);
+        BST const x_241 = (*(tint_symbol_4)).arr[x_239];
+        param = x_241;
+        int const x_242 = *(data_1);
+        param_1 = x_242;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_244 = param;
+        (*(tint_symbol_4)).arr[x_239] = x_244;
+        return;
+      } else {
+        int const x_246 = baseIndex;
+        int const x_248 = (*(tint_symbol_4)).arr[x_246].leftIndex;
+        baseIndex = x_248;
+        continue;
+      }
+      return;
+    } else {
+      int const x_249 = baseIndex;
+      int const x_251 = (*(tint_symbol_4)).arr[x_249].rightIndex;
+      if ((x_251 == -1)) {
+        int const x_256 = baseIndex;
+        int const x_257 = *(treeIndex);
+        (*(tint_symbol_4)).arr[x_256].rightIndex = x_257;
+        int const x_259 = *(treeIndex);
+        BST const x_261 = (*(tint_symbol_4)).arr[x_259];
+        param_2 = x_261;
+        int const x_262 = *(data_1);
+        param_3 = x_262;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_264 = param_2;
+        (*(tint_symbol_4)).arr[x_259] = x_264;
+        return;
+      } else {
+        int const x_266 = baseIndex;
+        int const x_268 = (*(tint_symbol_4)).arr[x_266].rightIndex;
+        baseIndex = x_268;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+int identity_i1_(thread int* const a, thread QuicksortObject* const tint_symbol_5) {
+  int const x_202 = *(a);
+  int const x_203 = *(a);
+  (*(tint_symbol_5)).numbers.arr[x_202] = x_203;
+  int const x_206 = (*(tint_symbol_5)).numbers.arr[2];
+  return x_206;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper_1* const tint_symbol_6) {
+  int index = 0;
+  BST currentNode = {};
+  int x_270 = 0;
+  index = 0;
+  while (true) {
+    int const x_275 = index;
+    if ((x_275 != -1)) {
+    } else {
+      break;
+    }
+    int const x_278 = index;
+    BST const x_280 = (*(tint_symbol_6)).arr[x_278];
+    currentNode = x_280;
+    int const x_282 = currentNode.data;
+    int const x_283 = *(target);
+    if ((x_282 == x_283)) {
+      int const x_287 = *(target);
+      return x_287;
+    }
+    int const x_288 = *(target);
+    int const x_290 = currentNode.data;
+    if ((x_288 > x_290)) {
+      int const x_296 = currentNode.rightIndex;
+      x_270 = x_296;
+    } else {
+      int const x_298 = currentNode.leftIndex;
+      x_270 = x_298;
+    }
+    int const x_299 = x_270;
+    index = x_299;
+  }
+  return -1;
+}
+
+void main_1(constant buf0& x_50, thread tint_array_wrapper_1* const tint_symbol_7, thread QuicksortObject* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  int treeIndex_1 = 0;
+  BST param_4 = {};
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  int param_8 = 0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int pp = 0;
+  int looplimiter0 = 0;
+  int i = 0;
+  int param_24 = 0;
+  int count = 0;
+  int i_1 = 0;
+  int result = 0;
+  int param_25 = 0;
+  treeIndex_1 = 0;
+  BST const x_101 = (*(tint_symbol_7)).arr[0];
+  param_4 = x_101;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  BST const x_103 = param_4;
+  (*(tint_symbol_7)).arr[0] = x_103;
+  int const x_105 = treeIndex_1;
+  treeIndex_1 = (x_105 + 1);
+  int const x_107 = treeIndex_1;
+  param_6 = x_107;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7), tint_symbol_7);
+  int const x_109 = treeIndex_1;
+  treeIndex_1 = (x_109 + 1);
+  int const x_111 = treeIndex_1;
+  param_8 = x_111;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9), tint_symbol_7);
+  int const x_113 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  int const x_115 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11), tint_symbol_7);
+  int const x_117 = treeIndex_1;
+  treeIndex_1 = (x_117 + 1);
+  int const x_119 = treeIndex_1;
+  param_12 = x_119;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13), tint_symbol_7);
+  int const x_121 = treeIndex_1;
+  treeIndex_1 = (x_121 + 1);
+  int const x_123 = treeIndex_1;
+  param_14 = x_123;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15), tint_symbol_7);
+  int const x_125 = treeIndex_1;
+  treeIndex_1 = (x_125 + 1);
+  int const x_127 = treeIndex_1;
+  param_16 = x_127;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17), tint_symbol_7);
+  int const x_129 = treeIndex_1;
+  treeIndex_1 = (x_129 + 1);
+  int const x_131 = treeIndex_1;
+  param_18 = x_131;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19), tint_symbol_7);
+  int const x_133 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  int const x_135 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21), tint_symbol_7);
+  int const x_137 = treeIndex_1;
+  treeIndex_1 = (x_137 + 1);
+  int const x_139 = treeIndex_1;
+  param_22 = x_139;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23), tint_symbol_7);
+  pp = 0;
+  looplimiter0 = 0;
+  i = 0;
+  while (true) {
+    int const x_145 = i;
+    if ((x_145 < 10000)) {
+    } else {
+      break;
+    }
+    int const x_148 = looplimiter0;
+    float const x_150 = x_50.injectionSwitch.y;
+    if ((x_148 >= int(x_150))) {
+      float const x_156 = x_50.injectionSwitch.y;
+      param_24 = (1 + int(x_156));
+      int const x_159 = identity_i1_(&(param_24), tint_symbol_8);
+      pp = x_159;
+      break;
+    }
+    int const x_160 = looplimiter0;
+    looplimiter0 = (x_160 + 1);
+    {
+      int const x_162 = i;
+      i = (x_162 + 1);
+    }
+  }
+  int const x_164 = pp;
+  if ((x_164 != 2)) {
+    return;
+  }
+  count = 0;
+  i_1 = 0;
+  while (true) {
+    int const x_172 = i_1;
+    if ((x_172 < 20)) {
+    } else {
+      break;
+    }
+    int const x_175 = i_1;
+    param_25 = x_175;
+    int const x_176 = search_i1_(&(param_25), tint_symbol_7);
+    result = x_176;
+    int const x_177 = i_1;
+    switch(x_177) {
+      case 2:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 12:
+      case 13:
+      case 15:
+      case 17: {
+        int const x_187 = result;
+        int const x_188 = i_1;
+        if ((x_187 == x_188)) {
+          int const x_192 = count;
+          count = (x_192 + 1);
+        }
+        break;
+      }
+      default: {
+        int const x_181 = result;
+        if ((x_181 == -1)) {
+          int const x_185 = count;
+          count = (x_185 + 1);
+        }
+        break;
+      }
+    }
+    {
+      int const x_194 = i_1;
+      i_1 = (x_194 + 1);
+    }
+  }
+  int const x_196 = count;
+  if ((x_196 == 20)) {
+    *(tint_symbol_9) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_9) = float4(0.0f, 0.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_50 [[buffer(0)]]) {
+  thread tint_array_wrapper_1 tint_symbol_10 = {};
+  thread QuicksortObject tint_symbol_11 = {};
+  thread float4 tint_symbol_12 = 0.0f;
+  main_1(x_50, &(tint_symbol_10), &(tint_symbol_11), &(tint_symbol_12));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_12};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..885a0ba
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.spvasm
@@ -0,0 +1,572 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 371
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree "tree"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_50 "x_50"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %node "node"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %identity_i1_ "identity_i1_"
+               OpName %a "a"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_270 "x_270"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %pp "pp"
+               OpName %looplimiter0 "looplimiter0"
+               OpName %i "i"
+               OpName %param_24 "param_24"
+               OpName %count "count"
+               OpName %i_1 "i_1"
+               OpName %result "result"
+               OpName %param_25 "param_25"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_50 NonWritable
+               OpDecorate %x_50 DescriptorSet 0
+               OpDecorate %x_50 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+        %BST = OpTypeStruct %int %int %int
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+         %13 = OpConstantNull %_arr_BST_uint_10
+       %tree = OpVariable %_ptr_Private__arr_BST_uint_10 Private %13
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_50 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %22 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %22
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %22
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %25 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %45 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %51 = OpConstantNull %int
+         %53 = OpConstantNull %BST
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+        %131 = OpTypeFunction %int %_ptr_Function_int
+      %int_2 = OpConstant %int 2
+        %183 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+     %int_12 = OpConstant %int 12
+     %int_15 = OpConstant %int 15
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+      %int_6 = OpConstant %int 6
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+  %int_10000 = OpConstant %int 10000
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %357 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %358 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %359 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %25
+       %node = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %32 = OpLabel
+         %34 = OpLoad %int %data
+         %37 = OpAccessChain %_ptr_Function_int %node %uint_0
+               OpStore %37 %34
+         %40 = OpAccessChain %_ptr_Function_int %node %uint_1
+               OpStore %40 %int_n1
+         %44 = OpAccessChain %_ptr_Function_int %node %uint_2
+               OpStore %44 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %45
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %49 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %51
+      %param = OpVariable %_ptr_Function_BST Function %53
+    %param_1 = OpVariable %_ptr_Function_int Function %51
+    %param_2 = OpVariable %_ptr_Function_BST Function %53
+    %param_3 = OpVariable %_ptr_Function_int Function %51
+               OpStore %baseIndex %int_0
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+         %62 = OpLoad %int %baseIndex
+         %64 = OpLoad %int %treeIndex
+         %65 = OpSLessThanEqual %bool %62 %64
+               OpSelectionMerge %67 None
+               OpBranchConditional %65 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %59
+         %67 = OpLabel
+         %71 = OpLoad %int %data_1
+         %72 = OpLoad %int %baseIndex
+         %74 = OpAccessChain %_ptr_Private_int %tree %72 %uint_0
+         %75 = OpLoad %int %74
+         %76 = OpSLessThanEqual %bool %71 %75
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %79
+         %78 = OpLabel
+         %80 = OpLoad %int %baseIndex
+         %81 = OpAccessChain %_ptr_Private_int %tree %80 %uint_1
+         %82 = OpLoad %int %81
+         %83 = OpIEqual %bool %82 %int_n1
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+         %87 = OpLoad %int %baseIndex
+         %89 = OpLoad %int %treeIndex
+         %90 = OpAccessChain %_ptr_Private_int %tree %87 %uint_1
+               OpStore %90 %89
+         %92 = OpLoad %int %treeIndex
+         %94 = OpAccessChain %_ptr_Private_BST %tree %92
+         %95 = OpLoad %BST %94
+               OpStore %param %95
+         %97 = OpLoad %int %data_1
+               OpStore %param_1 %97
+         %98 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+        %101 = OpLoad %BST %param
+        %102 = OpAccessChain %_ptr_Private_BST %tree %92
+               OpStore %102 %101
+               OpReturn
+         %86 = OpLabel
+        %103 = OpLoad %int %baseIndex
+        %104 = OpAccessChain %_ptr_Private_int %tree %103 %uint_1
+        %105 = OpLoad %int %104
+               OpStore %baseIndex %105
+               OpBranch %60
+         %84 = OpLabel
+               OpReturn
+         %79 = OpLabel
+        %106 = OpLoad %int %baseIndex
+        %107 = OpAccessChain %_ptr_Private_int %tree %106 %uint_2
+        %108 = OpLoad %int %107
+        %109 = OpIEqual %bool %108 %int_n1
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %112
+        %111 = OpLabel
+        %113 = OpLoad %int %baseIndex
+        %115 = OpLoad %int %treeIndex
+        %116 = OpAccessChain %_ptr_Private_int %tree %113 %uint_2
+               OpStore %116 %115
+        %118 = OpLoad %int %treeIndex
+        %119 = OpAccessChain %_ptr_Private_BST %tree %118
+        %120 = OpLoad %BST %119
+               OpStore %param_2 %120
+        %122 = OpLoad %int %data_1
+               OpStore %param_3 %122
+        %123 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %126 = OpLoad %BST %param_2
+        %127 = OpAccessChain %_ptr_Private_BST %tree %118
+               OpStore %127 %126
+               OpReturn
+        %112 = OpLabel
+        %128 = OpLoad %int %baseIndex
+        %129 = OpAccessChain %_ptr_Private_int %tree %128 %uint_2
+        %130 = OpLoad %int %129
+               OpStore %baseIndex %130
+               OpBranch %60
+        %110 = OpLabel
+               OpReturn
+         %77 = OpLabel
+               OpReturn
+         %60 = OpLabel
+               OpBranch %58
+         %59 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%identity_i1_ = OpFunction %int None %131
+          %a = OpFunctionParameter %_ptr_Function_int
+        %134 = OpLabel
+        %136 = OpLoad %int %a
+        %138 = OpLoad %int %a
+        %139 = OpAccessChain %_ptr_Private_int %obj %uint_0 %136
+               OpStore %139 %138
+        %141 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %142 = OpLoad %int %141
+               OpReturnValue %142
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %131
+     %target = OpFunctionParameter %_ptr_Function_int
+        %145 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %51
+%currentNode = OpVariable %_ptr_Function_BST Function %53
+      %x_270 = OpVariable %_ptr_Function_int Function %51
+               OpStore %index %int_0
+               OpBranch %149
+        %149 = OpLabel
+               OpLoopMerge %150 %151 None
+               OpBranch %152
+        %152 = OpLabel
+        %153 = OpLoad %int %index
+        %154 = OpINotEqual %bool %153 %int_n1
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+               OpBranch %155
+        %157 = OpLabel
+               OpBranch %150
+        %155 = OpLabel
+        %158 = OpLoad %int %index
+        %159 = OpAccessChain %_ptr_Private_BST %tree %158
+        %160 = OpLoad %BST %159
+               OpStore %currentNode %160
+        %161 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %162 = OpLoad %int %161
+        %164 = OpLoad %int %target
+        %165 = OpIEqual %bool %162 %164
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %166
+        %167 = OpLabel
+        %169 = OpLoad %int %target
+               OpReturnValue %169
+        %166 = OpLabel
+        %171 = OpLoad %int %target
+        %172 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %173 = OpLoad %int %172
+        %174 = OpSGreaterThan %bool %171 %173
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %177
+        %176 = OpLabel
+        %178 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %179 = OpLoad %int %178
+               OpStore %x_270 %179
+               OpBranch %175
+        %177 = OpLabel
+        %180 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %181 = OpLoad %int %180
+               OpStore %x_270 %181
+               OpBranch %175
+        %175 = OpLabel
+        %182 = OpLoad %int %x_270
+               OpStore %index %182
+               OpBranch %151
+        %151 = OpLabel
+               OpBranch %149
+        %150 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %183
+        %185 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %51
+    %param_4 = OpVariable %_ptr_Function_BST Function %53
+    %param_5 = OpVariable %_ptr_Function_int Function %51
+    %param_6 = OpVariable %_ptr_Function_int Function %51
+    %param_7 = OpVariable %_ptr_Function_int Function %51
+    %param_8 = OpVariable %_ptr_Function_int Function %51
+    %param_9 = OpVariable %_ptr_Function_int Function %51
+   %param_10 = OpVariable %_ptr_Function_int Function %51
+   %param_11 = OpVariable %_ptr_Function_int Function %51
+   %param_12 = OpVariable %_ptr_Function_int Function %51
+   %param_13 = OpVariable %_ptr_Function_int Function %51
+   %param_14 = OpVariable %_ptr_Function_int Function %51
+   %param_15 = OpVariable %_ptr_Function_int Function %51
+   %param_16 = OpVariable %_ptr_Function_int Function %51
+   %param_17 = OpVariable %_ptr_Function_int Function %51
+   %param_18 = OpVariable %_ptr_Function_int Function %51
+   %param_19 = OpVariable %_ptr_Function_int Function %51
+   %param_20 = OpVariable %_ptr_Function_int Function %51
+   %param_21 = OpVariable %_ptr_Function_int Function %51
+   %param_22 = OpVariable %_ptr_Function_int Function %51
+   %param_23 = OpVariable %_ptr_Function_int Function %51
+         %pp = OpVariable %_ptr_Function_int Function %51
+%looplimiter0 = OpVariable %_ptr_Function_int Function %51
+          %i = OpVariable %_ptr_Function_int Function %51
+   %param_24 = OpVariable %_ptr_Function_int Function %51
+      %count = OpVariable %_ptr_Function_int Function %51
+        %i_1 = OpVariable %_ptr_Function_int Function %51
+     %result = OpVariable %_ptr_Function_int Function %51
+   %param_25 = OpVariable %_ptr_Function_int Function %51
+               OpStore %treeIndex_1 %int_0
+        %215 = OpAccessChain %_ptr_Private_BST %tree %int_0
+        %216 = OpLoad %BST %215
+               OpStore %param_4 %216
+               OpStore %param_5 %int_9
+        %218 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_4 %param_5
+        %221 = OpLoad %BST %param_4
+        %222 = OpAccessChain %_ptr_Private_BST %tree %int_0
+               OpStore %222 %221
+        %223 = OpLoad %int %treeIndex_1
+        %225 = OpIAdd %int %223 %int_1
+               OpStore %treeIndex_1 %225
+        %226 = OpLoad %int %treeIndex_1
+               OpStore %param_6 %226
+               OpStore %param_7 %int_5
+        %228 = OpFunctionCall %void %insert_i1_i1_ %param_6 %param_7
+        %231 = OpLoad %int %treeIndex_1
+        %232 = OpIAdd %int %231 %int_1
+               OpStore %treeIndex_1 %232
+        %233 = OpLoad %int %treeIndex_1
+               OpStore %param_8 %233
+               OpStore %param_9 %int_12
+        %235 = OpFunctionCall %void %insert_i1_i1_ %param_8 %param_9
+        %238 = OpLoad %int %treeIndex_1
+        %239 = OpIAdd %int %238 %int_1
+               OpStore %treeIndex_1 %239
+        %240 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %240
+               OpStore %param_11 %int_15
+        %242 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %245 = OpLoad %int %treeIndex_1
+        %246 = OpIAdd %int %245 %int_1
+               OpStore %treeIndex_1 %246
+        %247 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %247
+               OpStore %param_13 %int_7
+        %249 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %252 = OpLoad %int %treeIndex_1
+        %253 = OpIAdd %int %252 %int_1
+               OpStore %treeIndex_1 %253
+        %254 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %254
+               OpStore %param_15 %int_8
+        %256 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %259 = OpLoad %int %treeIndex_1
+        %260 = OpIAdd %int %259 %int_1
+               OpStore %treeIndex_1 %260
+        %261 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %261
+               OpStore %param_17 %int_2
+        %262 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %265 = OpLoad %int %treeIndex_1
+        %266 = OpIAdd %int %265 %int_1
+               OpStore %treeIndex_1 %266
+        %267 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %267
+               OpStore %param_19 %int_6
+        %269 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %272 = OpLoad %int %treeIndex_1
+        %273 = OpIAdd %int %272 %int_1
+               OpStore %treeIndex_1 %273
+        %274 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %274
+               OpStore %param_21 %int_17
+        %276 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %279 = OpLoad %int %treeIndex_1
+        %280 = OpIAdd %int %279 %int_1
+               OpStore %treeIndex_1 %280
+        %281 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %281
+               OpStore %param_23 %int_13
+        %283 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+               OpStore %pp %int_0
+               OpStore %looplimiter0 %int_0
+               OpStore %i %int_0
+               OpBranch %286
+        %286 = OpLabel
+               OpLoopMerge %287 %288 None
+               OpBranch %289
+        %289 = OpLabel
+        %290 = OpLoad %int %i
+        %292 = OpSLessThan %bool %290 %int_10000
+               OpSelectionMerge %293 None
+               OpBranchConditional %292 %294 %295
+        %294 = OpLabel
+               OpBranch %293
+        %295 = OpLabel
+               OpBranch %287
+        %293 = OpLabel
+        %296 = OpLoad %int %looplimiter0
+        %298 = OpAccessChain %_ptr_Uniform_float %x_50 %uint_0 %uint_1
+        %299 = OpLoad %float %298
+        %300 = OpConvertFToS %int %299
+        %301 = OpSGreaterThanEqual %bool %296 %300
+               OpSelectionMerge %302 None
+               OpBranchConditional %301 %303 %302
+        %303 = OpLabel
+        %304 = OpAccessChain %_ptr_Uniform_float %x_50 %uint_0 %uint_1
+        %305 = OpLoad %float %304
+        %306 = OpConvertFToS %int %305
+        %307 = OpIAdd %int %int_1 %306
+               OpStore %param_24 %307
+        %308 = OpFunctionCall %int %identity_i1_ %param_24
+               OpStore %pp %308
+               OpBranch %287
+        %302 = OpLabel
+        %310 = OpLoad %int %looplimiter0
+        %311 = OpIAdd %int %310 %int_1
+               OpStore %looplimiter0 %311
+               OpBranch %288
+        %288 = OpLabel
+        %312 = OpLoad %int %i
+        %313 = OpIAdd %int %312 %int_1
+               OpStore %i %313
+               OpBranch %286
+        %287 = OpLabel
+        %314 = OpLoad %int %pp
+        %315 = OpINotEqual %bool %314 %int_2
+               OpSelectionMerge %316 None
+               OpBranchConditional %315 %317 %316
+        %317 = OpLabel
+               OpReturn
+        %316 = OpLabel
+               OpStore %count %int_0
+               OpStore %i_1 %int_0
+               OpBranch %318
+        %318 = OpLabel
+               OpLoopMerge %319 %320 None
+               OpBranch %321
+        %321 = OpLabel
+        %322 = OpLoad %int %i_1
+        %324 = OpSLessThan %bool %322 %int_20
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %327
+        %326 = OpLabel
+               OpBranch %325
+        %327 = OpLabel
+               OpBranch %319
+        %325 = OpLabel
+        %328 = OpLoad %int %i_1
+               OpStore %param_25 %328
+        %329 = OpFunctionCall %int %search_i1_ %param_25
+               OpStore %result %329
+        %331 = OpLoad %int %i_1
+               OpSelectionMerge %332 None
+               OpSwitch %331 %333 2 %334 5 %334 6 %334 7 %334 8 %334 9 %334 12 %334 13 %334 15 %334 17 %334
+        %334 = OpLabel
+        %335 = OpLoad %int %result
+        %336 = OpLoad %int %i_1
+        %337 = OpIEqual %bool %335 %336
+               OpSelectionMerge %338 None
+               OpBranchConditional %337 %339 %338
+        %339 = OpLabel
+        %340 = OpLoad %int %count
+        %341 = OpIAdd %int %340 %int_1
+               OpStore %count %341
+               OpBranch %338
+        %338 = OpLabel
+               OpBranch %332
+        %333 = OpLabel
+        %342 = OpLoad %int %result
+        %343 = OpIEqual %bool %342 %int_n1
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %344
+        %345 = OpLabel
+        %346 = OpLoad %int %count
+        %347 = OpIAdd %int %346 %int_1
+               OpStore %count %347
+               OpBranch %344
+        %344 = OpLabel
+               OpBranch %332
+        %332 = OpLabel
+               OpBranch %320
+        %320 = OpLabel
+        %348 = OpLoad %int %i_1
+        %349 = OpIAdd %int %348 %int_1
+               OpStore %i_1 %349
+               OpBranch %318
+        %319 = OpLabel
+        %350 = OpLoad %int %count
+        %351 = OpIEqual %bool %350 %int_20
+               OpSelectionMerge %352 None
+               OpBranchConditional %351 %353 %354
+        %353 = OpLabel
+               OpStore %x_GLF_color %357
+               OpBranch %352
+        %354 = OpLabel
+               OpStore %x_GLF_color %358
+               OpBranch %352
+        %352 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %359
+%tint_symbol = OpFunctionParameter %main_out
+        %363 = OpLabel
+        %364 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %364
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %183
+        %366 = OpLabel
+        %367 = OpFunctionCall %void %main_1
+        %369 = OpLoad %v4float %x_GLF_color
+        %370 = OpCompositeConstruct %main_out %369
+        %368 = OpFunctionCall %void %tint_symbol_2 %370
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..cd61e29
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.wgsl
@@ -0,0 +1,319 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> tree : array<BST, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_50 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(node : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_208 : i32 = *(data);
+  (*(node)).data = x_208;
+  (*(node)).leftIndex = -1;
+  (*(node)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  baseIndex = 0;
+  loop {
+    let x_217 : i32 = baseIndex;
+    let x_218 : i32 = *(treeIndex);
+    if ((x_217 <= x_218)) {
+    } else {
+      break;
+    }
+    let x_221 : i32 = *(data_1);
+    let x_222 : i32 = baseIndex;
+    let x_224 : i32 = tree[x_222].data;
+    if ((x_221 <= x_224)) {
+      let x_229 : i32 = baseIndex;
+      let x_231 : i32 = tree[x_229].leftIndex;
+      if ((x_231 == -1)) {
+        let x_236 : i32 = baseIndex;
+        let x_237 : i32 = *(treeIndex);
+        tree[x_236].leftIndex = x_237;
+        let x_239 : i32 = *(treeIndex);
+        let x_241 : BST = tree[x_239];
+        param = x_241;
+        let x_242 : i32 = *(data_1);
+        param_1 = x_242;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_244 : BST = param;
+        tree[x_239] = x_244;
+        return;
+      } else {
+        let x_246 : i32 = baseIndex;
+        let x_248 : i32 = tree[x_246].leftIndex;
+        baseIndex = x_248;
+        continue;
+      }
+      return;
+    } else {
+      let x_249 : i32 = baseIndex;
+      let x_251 : i32 = tree[x_249].rightIndex;
+      if ((x_251 == -1)) {
+        let x_256 : i32 = baseIndex;
+        let x_257 : i32 = *(treeIndex);
+        tree[x_256].rightIndex = x_257;
+        let x_259 : i32 = *(treeIndex);
+        let x_261 : BST = tree[x_259];
+        param_2 = x_261;
+        let x_262 : i32 = *(data_1);
+        param_3 = x_262;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_264 : BST = param_2;
+        tree[x_259] = x_264;
+        return;
+      } else {
+        let x_266 : i32 = baseIndex;
+        let x_268 : i32 = tree[x_266].rightIndex;
+        baseIndex = x_268;
+        continue;
+      }
+      return;
+    }
+    return;
+  }
+  return;
+}
+
+fn identity_i1_(a : ptr<function, i32>) -> i32 {
+  let x_202 : i32 = *(a);
+  let x_203 : i32 = *(a);
+  obj.numbers[x_202] = x_203;
+  let x_206 : i32 = obj.numbers[2];
+  return x_206;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_270 : i32;
+  index = 0;
+  loop {
+    let x_275 : i32 = index;
+    if ((x_275 != -1)) {
+    } else {
+      break;
+    }
+    let x_278 : i32 = index;
+    let x_280 : BST = tree[x_278];
+    currentNode = x_280;
+    let x_282 : i32 = currentNode.data;
+    let x_283 : i32 = *(target);
+    if ((x_282 == x_283)) {
+      let x_287 : i32 = *(target);
+      return x_287;
+    }
+    let x_288 : i32 = *(target);
+    let x_290 : i32 = currentNode.data;
+    if ((x_288 > x_290)) {
+      let x_296 : i32 = currentNode.rightIndex;
+      x_270 = x_296;
+    } else {
+      let x_298 : i32 = currentNode.leftIndex;
+      x_270 = x_298;
+    }
+    let x_299 : i32 = x_270;
+    index = x_299;
+  }
+  return -1;
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_4 : BST;
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  var param_8 : i32;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var pp : i32;
+  var looplimiter0 : i32;
+  var i : i32;
+  var param_24 : i32;
+  var count : i32;
+  var i_1 : i32;
+  var result : i32;
+  var param_25 : i32;
+  treeIndex_1 = 0;
+  let x_101 : BST = tree[0];
+  param_4 = x_101;
+  param_5 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
+  let x_103 : BST = param_4;
+  tree[0] = x_103;
+  let x_105 : i32 = treeIndex_1;
+  treeIndex_1 = (x_105 + 1);
+  let x_107 : i32 = treeIndex_1;
+  param_6 = x_107;
+  param_7 = 5;
+  insert_i1_i1_(&(param_6), &(param_7));
+  let x_109 : i32 = treeIndex_1;
+  treeIndex_1 = (x_109 + 1);
+  let x_111 : i32 = treeIndex_1;
+  param_8 = x_111;
+  param_9 = 12;
+  insert_i1_i1_(&(param_8), &(param_9));
+  let x_113 : i32 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  let x_115 : i32 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 15;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_117 : i32 = treeIndex_1;
+  treeIndex_1 = (x_117 + 1);
+  let x_119 : i32 = treeIndex_1;
+  param_12 = x_119;
+  param_13 = 7;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_121 : i32 = treeIndex_1;
+  treeIndex_1 = (x_121 + 1);
+  let x_123 : i32 = treeIndex_1;
+  param_14 = x_123;
+  param_15 = 8;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_125 : i32 = treeIndex_1;
+  treeIndex_1 = (x_125 + 1);
+  let x_127 : i32 = treeIndex_1;
+  param_16 = x_127;
+  param_17 = 2;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_129 : i32 = treeIndex_1;
+  treeIndex_1 = (x_129 + 1);
+  let x_131 : i32 = treeIndex_1;
+  param_18 = x_131;
+  param_19 = 6;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_133 : i32 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  let x_135 : i32 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 17;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_137 : i32 = treeIndex_1;
+  treeIndex_1 = (x_137 + 1);
+  let x_139 : i32 = treeIndex_1;
+  param_22 = x_139;
+  param_23 = 13;
+  insert_i1_i1_(&(param_22), &(param_23));
+  pp = 0;
+  looplimiter0 = 0;
+  i = 0;
+  loop {
+    let x_145 : i32 = i;
+    if ((x_145 < 10000)) {
+    } else {
+      break;
+    }
+    let x_148 : i32 = looplimiter0;
+    let x_150 : f32 = x_50.injectionSwitch.y;
+    if ((x_148 >= i32(x_150))) {
+      let x_156 : f32 = x_50.injectionSwitch.y;
+      param_24 = (1 + i32(x_156));
+      let x_159 : i32 = identity_i1_(&(param_24));
+      pp = x_159;
+      break;
+    }
+    let x_160 : i32 = looplimiter0;
+    looplimiter0 = (x_160 + 1);
+
+    continuing {
+      let x_162 : i32 = i;
+      i = (x_162 + 1);
+    }
+  }
+  let x_164 : i32 = pp;
+  if ((x_164 != 2)) {
+    return;
+  }
+  count = 0;
+  i_1 = 0;
+  loop {
+    let x_172 : i32 = i_1;
+    if ((x_172 < 20)) {
+    } else {
+      break;
+    }
+    let x_175 : i32 = i_1;
+    param_25 = x_175;
+    let x_176 : i32 = search_i1_(&(param_25));
+    result = x_176;
+    let x_177 : i32 = i_1;
+    switch(x_177) {
+      case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
+        let x_187 : i32 = result;
+        let x_188 : i32 = i_1;
+        if ((x_187 == x_188)) {
+          let x_192 : i32 = count;
+          count = (x_192 + 1);
+        }
+      }
+      default: {
+        let x_181 : i32 = result;
+        if ((x_181 == -1)) {
+          let x_185 : i32 = count;
+          count = (x_185 + 1);
+        }
+      }
+    }
+
+    continuing {
+      let x_194 : i32 = i_1;
+      i_1 = (x_194 + 1);
+    }
+  }
+  let x_196 : i32 = count;
+  if ((x_196 == 20)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm
new file mode 100644
index 0000000..d5a25f6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm
@@ -0,0 +1,153 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %collatz_i1_ "collatz(i1;"
+               OpName %v "v"
+               OpName %count "count"
+               OpName %lin "lin"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %v_0 "v"
+               OpName %_GLF_color "_GLF_color"
+               OpName %param "param"
+               OpName %indexable "indexable"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpTypeFunction %int %_ptr_Function_int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_8 = OpConstant %int 8
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+         %44 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %46 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %48 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %49 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %50 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %51 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %52 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %53 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %56 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %57 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %58 = OpConstantComposite %_arr_v4float_uint_16 %42 %44 %45 %46 %47 %48 %49 %50 %42 %51 %52 %53 %54 %55 %56 %57
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %main = OpFunction %void None %15
+         %62 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function
+        %v_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+         %63 = OpLoad %v4float %gl_FragCoord
+         %64 = OpVectorShuffle %v2float %63 %63 0 1
+         %65 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %66 = OpLoad %v2float %65
+         %67 = OpFDiv %v2float %64 %66
+               OpStore %lin %67
+         %68 = OpLoad %v2float %lin
+         %69 = OpVectorTimesScalar %v2float %68 %float_8
+         %70 = OpExtInst %v2float %1 Floor %69
+               OpStore %lin %70
+         %71 = OpAccessChain %_ptr_Function_float %lin %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpConvertFToS %int %72
+         %74 = OpIMul %int %73 %int_8
+         %75 = OpAccessChain %_ptr_Function_float %lin %uint_1
+         %76 = OpLoad %float %75
+         %77 = OpConvertFToS %int %76
+         %78 = OpIAdd %int %74 %77
+               OpStore %v_0 %78
+         %79 = OpLoad %int %v_0
+               OpStore %param %79
+         %80 = OpFunctionCall %int %collatz_i1_ %param
+         %81 = OpSMod %int %80 %int_16
+               OpStore %indexable %58
+         %82 = OpAccessChain %_ptr_Function_v4float %indexable %81
+         %83 = OpLoad %v4float %82
+               OpStore %_GLF_color %83
+               OpReturn
+               OpFunctionEnd
+%collatz_i1_ = OpFunction %int None %18
+          %v = OpFunctionParameter %_ptr_Function_int
+         %84 = OpLabel
+      %count = OpVariable %_ptr_Function_int Function
+               OpStore %count %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %89 = OpLoad %int %v
+         %90 = OpSGreaterThan %bool %89 %int_1
+               OpBranchConditional %90 %91 %86
+         %91 = OpLabel
+         %92 = OpLoad %int %v
+         %93 = OpBitwiseAnd %int %92 %int_1
+         %94 = OpIEqual %bool %93 %int_1
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %97
+         %96 = OpLabel
+         %98 = OpLoad %int %v
+         %99 = OpIMul %int %int_3 %98
+        %100 = OpIAdd %int %99 %int_1
+               OpStore %v %100
+               OpBranch %95
+         %97 = OpLabel
+        %101 = OpLoad %int %v
+        %102 = OpSDiv %int %101 %int_2
+               OpStore %v %102
+               OpBranch %95
+         %95 = OpLabel
+        %103 = OpLoad %int %count
+        %104 = OpIAdd %int %103 %int_1
+               OpStore %count %104
+               OpBranch %87
+         %87 = OpLabel
+               OpBranch %85
+         %86 = OpLabel
+        %105 = OpLoad %int %count
+               OpReturnValue %105
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..b305371
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.hlsl
@@ -0,0 +1,67 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int collatz_i1_(inout int v) {
+  int count = 0;
+  count = 0;
+  while (true) {
+    const int x_89 = v;
+    if ((x_89 > 1)) {
+    } else {
+      break;
+    }
+    const int x_92 = v;
+    if (((x_92 & 1) == 1)) {
+      const int x_98 = v;
+      v = ((3 * x_98) + 1);
+    } else {
+      const int x_101 = v;
+      v = (x_101 / 2);
+    }
+    count = (count + 1);
+  }
+  return count;
+}
+
+void main_1() {
+  float2 lin = float2(0.0f, 0.0f);
+  int v_1 = 0;
+  int param = 0;
+  float4 indexable[16] = (float4[16])0;
+  const float4 x_63 = gl_FragCoord;
+  const float2 x_66 = asfloat(x_10[0].xy);
+  lin = (float2(x_63.x, x_63.y) / x_66);
+  lin = floor((lin * 8.0f));
+  const float x_72 = lin.x;
+  const float x_76 = lin.y;
+  v_1 = ((int(x_72) * 8) + int(x_76));
+  param = v_1;
+  const int x_80 = collatz_i1_(param);
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_83 = indexable[(x_80 % 16)];
+  x_GLF_color = x_83;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.msl
new file mode 100644
index 0000000..94420a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.msl
@@ -0,0 +1,73 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int collatz_i1_(thread int* const v) {
+  int count = 0;
+  count = 0;
+  while (true) {
+    int const x_89 = *(v);
+    if ((x_89 > 1)) {
+    } else {
+      break;
+    }
+    int const x_92 = *(v);
+    if (((x_92 & 1) == 1)) {
+      int const x_98 = *(v);
+      *(v) = ((3 * x_98) + 1);
+    } else {
+      int const x_101 = *(v);
+      *(v) = (x_101 / 2);
+    }
+    int const x_103 = count;
+    count = (x_103 + 1);
+  }
+  int const x_105 = count;
+  return x_105;
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float2 lin = 0.0f;
+  int v_1 = 0;
+  int param = 0;
+  tint_array_wrapper indexable = {};
+  float4 const x_63 = *(tint_symbol_6);
+  float2 const x_66 = x_10.resolution;
+  lin = (float2(x_63.x, x_63.y) / x_66);
+  float2 const x_68 = lin;
+  lin = floor((x_68 * 8.0f));
+  float const x_72 = lin.x;
+  float const x_76 = lin.y;
+  v_1 = ((int(x_72) * 8) + int(x_76));
+  int const x_79 = v_1;
+  param = x_79;
+  int const x_80 = collatz_i1_(&(param));
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_83 = indexable.arr[(x_80 % 16)];
+  *(tint_symbol_7) = x_83;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_10, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..d892d09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.spvasm
@@ -0,0 +1,200 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 137
+; Schema: 0
+               OpCapability Shader
+         %83 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %collatz_i1_ "collatz_i1_"
+               OpName %v "v"
+               OpName %count "count"
+               OpName %main_1 "main_1"
+               OpName %lin "lin"
+               OpName %v_1 "v_1"
+               OpName %param "param"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpTypeFunction %int %_ptr_Function_int
+         %22 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %57 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %63 = OpConstantNull %v2float
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %71 = OpConstantNull %_arr_v4float_uint_16
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+      %int_8 = OpConstant %int 8
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %102 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %104 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %105 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %106 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %107 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %108 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %109 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %110 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %111 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %112 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %113 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %114 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %115 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %116 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %117 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %118 = OpConstantComposite %_arr_v4float_uint_16 %102 %104 %105 %106 %107 %108 %109 %110 %102 %111 %112 %113 %114 %115 %116 %117
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %124 = OpTypeFunction %void %main_out
+%collatz_i1_ = OpFunction %int None %15
+          %v = OpFunctionParameter %_ptr_Function_int
+         %20 = OpLabel
+      %count = OpVariable %_ptr_Function_int Function %22
+               OpStore %count %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %29 = OpLoad %int %v
+         %31 = OpSGreaterThan %bool %29 %int_1
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %35
+         %34 = OpLabel
+               OpBranch %33
+         %35 = OpLabel
+               OpBranch %25
+         %33 = OpLabel
+         %37 = OpLoad %int %v
+         %38 = OpBitwiseAnd %int %37 %int_1
+         %39 = OpIEqual %bool %38 %int_1
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %42
+         %41 = OpLabel
+         %44 = OpLoad %int %v
+         %47 = OpIMul %int %int_3 %44
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %v %48
+               OpBranch %40
+         %42 = OpLabel
+         %50 = OpLoad %int %v
+         %53 = OpSDiv %int %50 %int_2
+               OpStore %v %53
+               OpBranch %40
+         %40 = OpLabel
+         %54 = OpLoad %int %count
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %count %55
+               OpBranch %26
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+         %56 = OpLoad %int %count
+               OpReturnValue %56
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %57
+         %60 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function %63
+        %v_1 = OpVariable %_ptr_Function_int Function %22
+      %param = OpVariable %_ptr_Function_int Function %22
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %71
+         %72 = OpLoad %v4float %gl_FragCoord
+         %75 = OpAccessChain %_ptr_Uniform_v2float %x_10 %uint_0
+         %76 = OpLoad %v2float %75
+         %77 = OpCompositeExtract %float %72 0
+         %78 = OpCompositeExtract %float %72 1
+         %79 = OpCompositeConstruct %v2float %77 %78
+         %80 = OpFDiv %v2float %79 %76
+               OpStore %lin %80
+         %81 = OpLoad %v2float %lin
+         %85 = OpVectorTimesScalar %v2float %81 %float_8
+         %82 = OpExtInst %v2float %83 Floor %85
+               OpStore %lin %82
+         %87 = OpAccessChain %_ptr_Function_float %lin %uint_0
+         %88 = OpLoad %float %87
+         %90 = OpAccessChain %_ptr_Function_float %lin %uint_1
+         %91 = OpLoad %float %90
+         %92 = OpConvertFToS %int %88
+         %94 = OpIMul %int %92 %int_8
+         %95 = OpConvertFToS %int %91
+         %96 = OpIAdd %int %94 %95
+               OpStore %v_1 %96
+         %97 = OpLoad %int %v_1
+               OpStore %param %97
+         %98 = OpFunctionCall %int %collatz_i1_ %param
+               OpStore %indexable %118
+        %120 = OpSMod %int %98 %int_16
+        %122 = OpAccessChain %_ptr_Function_v4float %indexable %120
+        %123 = OpLoad %v4float %122
+               OpStore %x_GLF_color %123
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %124
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %128 = OpLabel
+        %129 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %129
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %57
+        %131 = OpLabel
+        %132 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %132
+        %133 = OpFunctionCall %void %main_1
+        %135 = OpLoad %v4float %x_GLF_color
+        %136 = OpCompositeConstruct %main_out %135
+        %134 = OpFunctionCall %void %tint_symbol_3 %136
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..10f5505
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.spvasm.expected.wgsl
@@ -0,0 +1,68 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn collatz_i1_(v : ptr<function, i32>) -> i32 {
+  var count : i32;
+  count = 0;
+  loop {
+    let x_89 : i32 = *(v);
+    if ((x_89 > 1)) {
+    } else {
+      break;
+    }
+    let x_92 : i32 = *(v);
+    if (((x_92 & 1) == 1)) {
+      let x_98 : i32 = *(v);
+      *(v) = ((3 * x_98) + 1);
+    } else {
+      let x_101 : i32 = *(v);
+      *(v) = (x_101 / 2);
+    }
+    let x_103 : i32 = count;
+    count = (x_103 + 1);
+  }
+  let x_105 : i32 = count;
+  return x_105;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var v_1 : i32;
+  var param : i32;
+  var indexable : array<vec4<f32>, 16>;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_66 : vec2<f32> = x_10.resolution;
+  lin = (vec2<f32>(x_63.x, x_63.y) / x_66);
+  let x_68 : vec2<f32> = lin;
+  lin = floor((x_68 * 8.0));
+  let x_72 : f32 = lin.x;
+  let x_76 : f32 = lin.y;
+  v_1 = ((i32(x_72) * 8) + i32(x_76));
+  let x_79 : i32 = v_1;
+  param = x_79;
+  let x_80 : i32 = collatz_i1_(&(param));
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_83 : vec4<f32> = indexable[(x_80 % 16)];
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
new file mode 100644
index 0000000..10f5505
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
@@ -0,0 +1,68 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn collatz_i1_(v : ptr<function, i32>) -> i32 {
+  var count : i32;
+  count = 0;
+  loop {
+    let x_89 : i32 = *(v);
+    if ((x_89 > 1)) {
+    } else {
+      break;
+    }
+    let x_92 : i32 = *(v);
+    if (((x_92 & 1) == 1)) {
+      let x_98 : i32 = *(v);
+      *(v) = ((3 * x_98) + 1);
+    } else {
+      let x_101 : i32 = *(v);
+      *(v) = (x_101 / 2);
+    }
+    let x_103 : i32 = count;
+    count = (x_103 + 1);
+  }
+  let x_105 : i32 = count;
+  return x_105;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var v_1 : i32;
+  var param : i32;
+  var indexable : array<vec4<f32>, 16>;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_66 : vec2<f32> = x_10.resolution;
+  lin = (vec2<f32>(x_63.x, x_63.y) / x_66);
+  let x_68 : vec2<f32> = lin;
+  lin = floor((x_68 * 8.0));
+  let x_72 : f32 = lin.x;
+  let x_76 : f32 = lin.y;
+  v_1 = ((i32(x_72) * 8) + i32(x_76));
+  let x_79 : i32 = v_1;
+  param = x_79;
+  let x_80 : i32 = collatz_i1_(&(param));
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_83 : vec4<f32> = indexable[(x_80 % 16)];
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..b305371
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.hlsl
@@ -0,0 +1,67 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int collatz_i1_(inout int v) {
+  int count = 0;
+  count = 0;
+  while (true) {
+    const int x_89 = v;
+    if ((x_89 > 1)) {
+    } else {
+      break;
+    }
+    const int x_92 = v;
+    if (((x_92 & 1) == 1)) {
+      const int x_98 = v;
+      v = ((3 * x_98) + 1);
+    } else {
+      const int x_101 = v;
+      v = (x_101 / 2);
+    }
+    count = (count + 1);
+  }
+  return count;
+}
+
+void main_1() {
+  float2 lin = float2(0.0f, 0.0f);
+  int v_1 = 0;
+  int param = 0;
+  float4 indexable[16] = (float4[16])0;
+  const float4 x_63 = gl_FragCoord;
+  const float2 x_66 = asfloat(x_10[0].xy);
+  lin = (float2(x_63.x, x_63.y) / x_66);
+  lin = floor((lin * 8.0f));
+  const float x_72 = lin.x;
+  const float x_76 = lin.y;
+  v_1 = ((int(x_72) * 8) + int(x_76));
+  param = v_1;
+  const int x_80 = collatz_i1_(param);
+  const float4 tint_symbol_5[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  indexable = tint_symbol_5;
+  const float4 x_83 = indexable[(x_80 % 16)];
+  x_GLF_color = x_83;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.msl
new file mode 100644
index 0000000..94420a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.msl
@@ -0,0 +1,73 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int collatz_i1_(thread int* const v) {
+  int count = 0;
+  count = 0;
+  while (true) {
+    int const x_89 = *(v);
+    if ((x_89 > 1)) {
+    } else {
+      break;
+    }
+    int const x_92 = *(v);
+    if (((x_92 & 1) == 1)) {
+      int const x_98 = *(v);
+      *(v) = ((3 * x_98) + 1);
+    } else {
+      int const x_101 = *(v);
+      *(v) = (x_101 / 2);
+    }
+    int const x_103 = count;
+    count = (x_103 + 1);
+  }
+  int const x_105 = count;
+  return x_105;
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float2 lin = 0.0f;
+  int v_1 = 0;
+  int param = 0;
+  tint_array_wrapper indexable = {};
+  float4 const x_63 = *(tint_symbol_6);
+  float2 const x_66 = x_10.resolution;
+  lin = (float2(x_63.x, x_63.y) / x_66);
+  float2 const x_68 = lin;
+  lin = floor((x_68 * 8.0f));
+  float const x_72 = lin.x;
+  float const x_76 = lin.y;
+  v_1 = ((int(x_72) * 8) + int(x_76));
+  int const x_79 = v_1;
+  param = x_79;
+  int const x_80 = collatz_i1_(&(param));
+  tint_array_wrapper const tint_symbol_4 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+  indexable = tint_symbol_4;
+  float4 const x_83 = indexable.arr[(x_80 % 16)];
+  *(tint_symbol_7) = x_83;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_10, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..d892d09
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.spvasm
@@ -0,0 +1,200 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 137
+; Schema: 0
+               OpCapability Shader
+         %83 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %collatz_i1_ "collatz_i1_"
+               OpName %v "v"
+               OpName %count "count"
+               OpName %main_1 "main_1"
+               OpName %lin "lin"
+               OpName %v_1 "v_1"
+               OpName %param "param"
+               OpName %indexable "indexable"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpTypeFunction %int %_ptr_Function_int
+         %22 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %int_2 = OpConstant %int 2
+       %void = OpTypeVoid
+         %57 = OpTypeFunction %void
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %63 = OpConstantNull %v2float
+       %uint = OpTypeInt 32 0
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+         %71 = OpConstantNull %_arr_v4float_uint_16
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_8 = OpConstant %float 8
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+      %int_8 = OpConstant %int 8
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+        %102 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+        %104 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %105 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %106 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %107 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %108 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %109 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %110 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %111 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %112 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %113 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %114 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %115 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %116 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %117 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %118 = OpConstantComposite %_arr_v4float_uint_16 %102 %104 %105 %106 %107 %108 %109 %110 %102 %111 %112 %113 %114 %115 %116 %117
+     %int_16 = OpConstant %int 16
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+        %124 = OpTypeFunction %void %main_out
+%collatz_i1_ = OpFunction %int None %15
+          %v = OpFunctionParameter %_ptr_Function_int
+         %20 = OpLabel
+      %count = OpVariable %_ptr_Function_int Function %22
+               OpStore %count %int_0
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %29 = OpLoad %int %v
+         %31 = OpSGreaterThan %bool %29 %int_1
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %35
+         %34 = OpLabel
+               OpBranch %33
+         %35 = OpLabel
+               OpBranch %25
+         %33 = OpLabel
+         %37 = OpLoad %int %v
+         %38 = OpBitwiseAnd %int %37 %int_1
+         %39 = OpIEqual %bool %38 %int_1
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %42
+         %41 = OpLabel
+         %44 = OpLoad %int %v
+         %47 = OpIMul %int %int_3 %44
+         %48 = OpIAdd %int %47 %int_1
+               OpStore %v %48
+               OpBranch %40
+         %42 = OpLabel
+         %50 = OpLoad %int %v
+         %53 = OpSDiv %int %50 %int_2
+               OpStore %v %53
+               OpBranch %40
+         %40 = OpLabel
+         %54 = OpLoad %int %count
+         %55 = OpIAdd %int %54 %int_1
+               OpStore %count %55
+               OpBranch %26
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+         %56 = OpLoad %int %count
+               OpReturnValue %56
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %57
+         %60 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function %63
+        %v_1 = OpVariable %_ptr_Function_int Function %22
+      %param = OpVariable %_ptr_Function_int Function %22
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %71
+         %72 = OpLoad %v4float %gl_FragCoord
+         %75 = OpAccessChain %_ptr_Uniform_v2float %x_10 %uint_0
+         %76 = OpLoad %v2float %75
+         %77 = OpCompositeExtract %float %72 0
+         %78 = OpCompositeExtract %float %72 1
+         %79 = OpCompositeConstruct %v2float %77 %78
+         %80 = OpFDiv %v2float %79 %76
+               OpStore %lin %80
+         %81 = OpLoad %v2float %lin
+         %85 = OpVectorTimesScalar %v2float %81 %float_8
+         %82 = OpExtInst %v2float %83 Floor %85
+               OpStore %lin %82
+         %87 = OpAccessChain %_ptr_Function_float %lin %uint_0
+         %88 = OpLoad %float %87
+         %90 = OpAccessChain %_ptr_Function_float %lin %uint_1
+         %91 = OpLoad %float %90
+         %92 = OpConvertFToS %int %88
+         %94 = OpIMul %int %92 %int_8
+         %95 = OpConvertFToS %int %91
+         %96 = OpIAdd %int %94 %95
+               OpStore %v_1 %96
+         %97 = OpLoad %int %v_1
+               OpStore %param %97
+         %98 = OpFunctionCall %int %collatz_i1_ %param
+               OpStore %indexable %118
+        %120 = OpSMod %int %98 %int_16
+        %122 = OpAccessChain %_ptr_Function_v4float %indexable %120
+        %123 = OpLoad %v4float %122
+               OpStore %x_GLF_color %123
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %124
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %128 = OpLabel
+        %129 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %129
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %57
+        %131 = OpLabel
+        %132 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %132
+        %133 = OpFunctionCall %void %main_1
+        %135 = OpLoad %v4float %x_GLF_color
+        %136 = OpCompositeConstruct %main_out %135
+        %134 = OpFunctionCall %void %tint_symbol_3 %136
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..10f5505
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl.expected.wgsl
@@ -0,0 +1,68 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn collatz_i1_(v : ptr<function, i32>) -> i32 {
+  var count : i32;
+  count = 0;
+  loop {
+    let x_89 : i32 = *(v);
+    if ((x_89 > 1)) {
+    } else {
+      break;
+    }
+    let x_92 : i32 = *(v);
+    if (((x_92 & 1) == 1)) {
+      let x_98 : i32 = *(v);
+      *(v) = ((3 * x_98) + 1);
+    } else {
+      let x_101 : i32 = *(v);
+      *(v) = (x_101 / 2);
+    }
+    let x_103 : i32 = count;
+    count = (x_103 + 1);
+  }
+  let x_105 : i32 = count;
+  return x_105;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var v_1 : i32;
+  var param : i32;
+  var indexable : array<vec4<f32>, 16>;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_66 : vec2<f32> = x_10.resolution;
+  lin = (vec2<f32>(x_63.x, x_63.y) / x_66);
+  let x_68 : vec2<f32> = lin;
+  lin = floor((x_68 * 8.0));
+  let x_72 : f32 = lin.x;
+  let x_76 : f32 = lin.y;
+  v_1 = ((i32(x_72) * 8) + i32(x_76));
+  let x_79 : i32 = v_1;
+  param = x_79;
+  let x_80 : i32 = collatz_i1_(&(param));
+  indexable = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+  let x_83 : vec4<f32> = indexable[(x_80 % 16)];
+  x_GLF_color = x_83;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm
new file mode 100644
index 0000000..9c84386
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm
@@ -0,0 +1,263 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %c "c"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %__0 ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %35 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+         %46 = OpUndef %float
+%float_0_125 = OpConstant %float 0.125
+       %main = OpFunction %void None %11
+         %48 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+               OpStore %c %35
+         %49 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %50 = OpLoad %float %49
+         %51 = OpFMul %float %50 %float_0_125
+         %52 = OpExtInst %float %1 Round %51
+         %53 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %54 = OpLoad %float %53
+               OpSelectionMerge %55 None
+               OpSwitch %uint_0 %56
+         %56 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpPhi %float %float_n0_5 %56 %59 %60
+         %61 = OpPhi %int %int_1 %56 %62 %60
+         %63 = OpSLessThan %bool %61 %int_800
+               OpLoopMerge %64 %60 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+         %66 = OpSMod %int %61 %int_32
+         %67 = OpIEqual %bool %66 %int_0
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+         %71 = OpFAdd %float %58 %float_0_400000006
+               OpBranch %68
+         %70 = OpLabel
+         %72 = OpConvertSToF %float %61
+         %73 = OpExtInst %float %1 Round %52
+         %74 = OpFMod %float %72 %73
+         %75 = OpFOrdLessThanEqual %bool %74 %float_0_00999999978
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+         %78 = OpFAdd %float %58 %float_100
+               OpBranch %76
+         %76 = OpLabel
+         %79 = OpPhi %float %58 %70 %78 %77
+         %80 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %83 = OpLoad %float %82
+         %84 = OpFOrdGreaterThan %bool %81 %83
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+               OpKill
+         %85 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+         %59 = OpPhi %float %71 %69 %79 %85
+         %87 = OpConvertSToF %float %61
+         %88 = OpFOrdGreaterThanEqual %bool %87 %54
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+               OpBranch %64
+         %89 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+         %62 = OpIAdd %int %61 %int_1
+               OpBranch %57
+         %64 = OpLabel
+         %91 = OpPhi %float %46 %57 %59 %90
+         %92 = OpPhi %float %58 %57 %59 %90
+         %93 = OpPhi %bool %false %57 %true %90
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %55 %94
+         %94 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %95 = OpPhi %float %91 %64 %92 %94
+         %96 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %96 %95
+         %97 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %98 = OpLoad %float %97
+               OpSelectionMerge %99 None
+               OpSwitch %uint_0 %100
+        %100 = OpLabel
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpPhi %float %float_n0_5 %100 %103 %104
+        %105 = OpPhi %int %int_1 %100 %106 %104
+        %107 = OpSLessThan %bool %105 %int_800
+               OpLoopMerge %108 %104 None
+               OpBranchConditional %107 %109 %108
+        %109 = OpLabel
+        %110 = OpSMod %int %105 %int_32
+        %111 = OpIEqual %bool %110 %int_0
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %114
+        %113 = OpLabel
+        %115 = OpFAdd %float %102 %float_0_400000006
+               OpBranch %112
+        %114 = OpLabel
+        %116 = OpConvertSToF %float %105
+        %117 = OpExtInst %float %1 Round %52
+        %118 = OpFMod %float %116 %117
+        %119 = OpFOrdLessThanEqual %bool %118 %float_0_00999999978
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %120
+        %121 = OpLabel
+        %122 = OpFAdd %float %102 %float_100
+               OpBranch %120
+        %120 = OpLabel
+        %123 = OpPhi %float %102 %114 %122 %121
+        %124 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %127 = OpLoad %float %126
+        %128 = OpFOrdGreaterThan %bool %125 %127
+               OpSelectionMerge %129 None
+               OpBranchConditional %128 %130 %129
+        %130 = OpLabel
+               OpKill
+        %129 = OpLabel
+               OpBranch %112
+        %112 = OpLabel
+        %103 = OpPhi %float %115 %113 %123 %129
+        %131 = OpConvertSToF %float %105
+        %132 = OpFOrdGreaterThanEqual %bool %131 %98
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %133
+        %134 = OpLabel
+               OpBranch %108
+        %133 = OpLabel
+               OpBranch %104
+        %104 = OpLabel
+        %106 = OpIAdd %int %105 %int_1
+               OpBranch %101
+        %108 = OpLabel
+        %135 = OpPhi %float %46 %101 %103 %134
+        %136 = OpPhi %float %102 %101 %103 %134
+        %137 = OpPhi %bool %false %101 %true %134
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %99 %138
+        %138 = OpLabel
+               OpBranch %99
+         %99 = OpLabel
+        %139 = OpPhi %float %135 %108 %136 %138
+        %140 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %140 %139
+        %141 = OpLoad %float %96
+        %142 = OpLoad %float %140
+        %143 = OpFAdd %float %141 %142
+        %144 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %144 %143
+               OpBranch %145
+        %145 = OpLabel
+        %146 = OpPhi %int %int_0 %99 %147 %148
+        %149 = OpSLessThan %bool %146 %int_3
+               OpLoopMerge %150 %148 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %152 = OpAccessChain %_ptr_Function_float %c %146
+        %153 = OpLoad %float %152
+        %154 = OpFOrdGreaterThanEqual %bool %153 %float_1
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpLoad %float %152
+        %158 = OpLoad %float %152
+        %159 = OpFMul %float %157 %158
+               OpStore %152 %159
+        %160 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %161 = OpLoad %float %160
+        %162 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %163 = OpLoad %float %162
+        %164 = OpFOrdGreaterThan %bool %161 %163
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %165
+        %166 = OpLabel
+               OpKill
+        %165 = OpLabel
+               OpBranch %155
+        %155 = OpLabel
+               OpBranch %148
+        %148 = OpLabel
+        %147 = OpIAdd %int %146 %int_1
+               OpBranch %145
+        %150 = OpLabel
+        %167 = OpLoad %v3float %c
+        %168 = OpExtInst %v3float %1 FAbs %167
+        %169 = OpExtInst %v3float %1 Normalize %168
+        %170 = OpCompositeExtract %float %169 0
+        %171 = OpCompositeExtract %float %169 1
+        %172 = OpCompositeExtract %float %169 2
+        %173 = OpCompositeConstruct %v4float %170 %171 %172 %float_1
+               OpStore %_GLF_color %173
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..1b409b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.hlsl
@@ -0,0 +1,220 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+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() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float x_54 = 0.0f;
+  float x_58 = 0.0f;
+  float x_59 = 0.0f;
+  float x_91 = 0.0f;
+  float x_92 = 0.0f;
+  float x_135 = 0.0f;
+  float x_136 = 0.0f;
+  float x_58_phi = 0.0f;
+  int x_61_phi = 0;
+  float x_91_phi = 0.0f;
+  float x_92_phi = 0.0f;
+  bool x_93_phi = false;
+  float x_95_phi = 0.0f;
+  float x_139_phi = 0.0f;
+  int x_146_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_50 = asfloat(x_9[0].x);
+  const float x_52 = round((x_50 * 0.125f));
+  x_54 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_58_phi = -0.5f;
+      x_61_phi = 1;
+      while (true) {
+        float x_71 = 0.0f;
+        float x_79 = 0.0f;
+        int x_62 = 0;
+        float x_59_phi = 0.0f;
+        x_58 = x_58_phi;
+        const int x_61 = x_61_phi;
+        x_91_phi = 0.0f;
+        x_92_phi = x_58;
+        x_93_phi = false;
+        if ((x_61 < 800)) {
+        } else {
+          break;
+        }
+        float x_78 = 0.0f;
+        float x_79_phi = 0.0f;
+        if (((x_61 % 32) == 0)) {
+          x_71 = (x_58 + 0.400000006f);
+          x_59_phi = x_71;
+        } else {
+          x_79_phi = x_58;
+          if (((float(x_61) % round(x_52)) <= 0.01f)) {
+            x_78 = (x_58 + 100.0f);
+            x_79_phi = x_78;
+          }
+          x_79 = x_79_phi;
+          const float x_81 = asfloat(x_6[0].x);
+          const float x_83 = asfloat(x_6[0].y);
+          if ((x_81 > x_83)) {
+            discard;
+          }
+          x_59_phi = x_79;
+        }
+        x_59 = x_59_phi;
+        if ((float(x_61) >= x_54)) {
+          x_91_phi = x_59;
+          x_92_phi = x_59;
+          x_93_phi = true;
+          break;
+        }
+        {
+          x_62 = (x_61 + 1);
+          x_58_phi = x_59;
+          x_61_phi = x_62;
+        }
+      }
+      x_91 = x_91_phi;
+      x_92 = x_92_phi;
+      const bool x_93 = x_93_phi;
+      x_95_phi = x_91;
+      if (x_93) {
+        break;
+      }
+      x_95_phi = x_92;
+      break;
+    }
+  }
+  float x_98 = 0.0f;
+  float x_102 = 0.0f;
+  float x_103 = 0.0f;
+  float x_102_phi = 0.0f;
+  int x_105_phi = 0;
+  float x_135_phi = 0.0f;
+  float x_136_phi = 0.0f;
+  bool x_137_phi = false;
+  const float x_95 = x_95_phi;
+  c.x = x_95;
+  x_98 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_102_phi = -0.5f;
+      x_105_phi = 1;
+      while (true) {
+        float x_115 = 0.0f;
+        float x_123 = 0.0f;
+        int x_106 = 0;
+        float x_103_phi = 0.0f;
+        x_102 = x_102_phi;
+        const int x_105 = x_105_phi;
+        x_135_phi = 0.0f;
+        x_136_phi = x_102;
+        x_137_phi = false;
+        if ((x_105 < 800)) {
+        } else {
+          break;
+        }
+        float x_122 = 0.0f;
+        float x_123_phi = 0.0f;
+        if (((x_105 % 32) == 0)) {
+          x_115 = (x_102 + 0.400000006f);
+          x_103_phi = x_115;
+        } else {
+          x_123_phi = x_102;
+          if (((float(x_105) % round(x_52)) <= 0.01f)) {
+            x_122 = (x_102 + 100.0f);
+            x_123_phi = x_122;
+          }
+          x_123 = x_123_phi;
+          const float x_125 = asfloat(x_6[0].x);
+          const float x_127 = asfloat(x_6[0].y);
+          if ((x_125 > x_127)) {
+            discard;
+          }
+          x_103_phi = x_123;
+        }
+        x_103 = x_103_phi;
+        if ((float(x_105) >= x_98)) {
+          x_135_phi = x_103;
+          x_136_phi = x_103;
+          x_137_phi = true;
+          break;
+        }
+        {
+          x_106 = (x_105 + 1);
+          x_102_phi = x_103;
+          x_105_phi = x_106;
+        }
+      }
+      x_135 = x_135_phi;
+      x_136 = x_136_phi;
+      const bool x_137 = x_137_phi;
+      x_139_phi = x_135;
+      if (x_137) {
+        break;
+      }
+      x_139_phi = x_136;
+      break;
+    }
+  }
+  const float x_139 = x_139_phi;
+  c.y = x_139;
+  const float x_141 = c.x;
+  const float x_142 = c.y;
+  c.z = (x_141 + x_142);
+  x_146_phi = 0;
+  while (true) {
+    int x_147 = 0;
+    const int x_146 = x_146_phi;
+    if ((x_146 < 3)) {
+    } else {
+      break;
+    }
+    const int x_152_save = x_146;
+    const float x_153 = c[x_152_save];
+    if ((x_153 >= 1.0f)) {
+      const float x_157 = c[x_152_save];
+      const float x_158 = c[x_152_save];
+      set_float3(c, x_152_save, (x_157 * x_158));
+      const float x_161 = asfloat(x_6[0].x);
+      const float x_163 = asfloat(x_6[0].y);
+      if ((x_161 > x_163)) {
+        discard;
+      }
+    }
+    {
+      x_147 = (x_146 + 1);
+      x_146_phi = x_147;
+    }
+  }
+  const float3 x_169 = normalize(abs(c));
+  x_GLF_color = float4(x_169.x, x_169.y, x_169.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.msl
new file mode 100755
index 0000000..81d5bd8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.msl
@@ -0,0 +1,226 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, constant buf1& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float x_54 = 0.0f;
+  float x_58 = 0.0f;
+  float x_59 = 0.0f;
+  float x_91 = 0.0f;
+  float x_92 = 0.0f;
+  float x_135 = 0.0f;
+  float x_136 = 0.0f;
+  float x_58_phi = 0.0f;
+  int x_61_phi = 0;
+  float x_91_phi = 0.0f;
+  float x_92_phi = 0.0f;
+  bool x_93_phi = false;
+  float x_95_phi = 0.0f;
+  float x_139_phi = 0.0f;
+  int x_146_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_50 = x_9.resolution.x;
+  float const x_52 = rint((x_50 * 0.125f));
+  x_54 = (*(tint_symbol_5)).x;
+  switch(0u) {
+    default: {
+      x_58_phi = -0.5f;
+      x_61_phi = 1;
+      while (true) {
+        float x_71 = 0.0f;
+        float x_79 = 0.0f;
+        int x_62 = 0;
+        float x_59_phi = 0.0f;
+        x_58 = x_58_phi;
+        int const x_61 = x_61_phi;
+        x_91_phi = 0.0f;
+        x_92_phi = x_58;
+        x_93_phi = false;
+        if ((x_61 < 800)) {
+        } else {
+          break;
+        }
+        float x_78 = 0.0f;
+        float x_79_phi = 0.0f;
+        if (((x_61 % 32) == 0)) {
+          x_71 = (x_58 + 0.400000006f);
+          x_59_phi = x_71;
+        } else {
+          x_79_phi = x_58;
+          if (((float(x_61) % rint(x_52)) <= 0.01f)) {
+            x_78 = (x_58 + 100.0f);
+            x_79_phi = x_78;
+          }
+          x_79 = x_79_phi;
+          float const x_81 = x_6.injectionSwitch.x;
+          float const x_83 = x_6.injectionSwitch.y;
+          if ((x_81 > x_83)) {
+            discard_fragment();
+          }
+          x_59_phi = x_79;
+        }
+        x_59 = x_59_phi;
+        if ((float(x_61) >= x_54)) {
+          x_91_phi = x_59;
+          x_92_phi = x_59;
+          x_93_phi = true;
+          break;
+        }
+        {
+          x_62 = (x_61 + 1);
+          x_58_phi = x_59;
+          x_61_phi = x_62;
+        }
+      }
+      x_91 = x_91_phi;
+      x_92 = x_92_phi;
+      bool const x_93 = x_93_phi;
+      x_95_phi = x_91;
+      if (x_93) {
+        break;
+      }
+      x_95_phi = x_92;
+      break;
+    }
+  }
+  float x_98 = 0.0f;
+  float x_102 = 0.0f;
+  float x_103 = 0.0f;
+  float x_102_phi = 0.0f;
+  int x_105_phi = 0;
+  float x_135_phi = 0.0f;
+  float x_136_phi = 0.0f;
+  bool x_137_phi = false;
+  float const x_95 = x_95_phi;
+  c.x = x_95;
+  x_98 = (*(tint_symbol_5)).y;
+  switch(0u) {
+    default: {
+      x_102_phi = -0.5f;
+      x_105_phi = 1;
+      while (true) {
+        float x_115 = 0.0f;
+        float x_123 = 0.0f;
+        int x_106 = 0;
+        float x_103_phi = 0.0f;
+        x_102 = x_102_phi;
+        int const x_105 = x_105_phi;
+        x_135_phi = 0.0f;
+        x_136_phi = x_102;
+        x_137_phi = false;
+        if ((x_105 < 800)) {
+        } else {
+          break;
+        }
+        float x_122 = 0.0f;
+        float x_123_phi = 0.0f;
+        if (((x_105 % 32) == 0)) {
+          x_115 = (x_102 + 0.400000006f);
+          x_103_phi = x_115;
+        } else {
+          x_123_phi = x_102;
+          if (((float(x_105) % rint(x_52)) <= 0.01f)) {
+            x_122 = (x_102 + 100.0f);
+            x_123_phi = x_122;
+          }
+          x_123 = x_123_phi;
+          float const x_125 = x_6.injectionSwitch.x;
+          float const x_127 = x_6.injectionSwitch.y;
+          if ((x_125 > x_127)) {
+            discard_fragment();
+          }
+          x_103_phi = x_123;
+        }
+        x_103 = x_103_phi;
+        if ((float(x_105) >= x_98)) {
+          x_135_phi = x_103;
+          x_136_phi = x_103;
+          x_137_phi = true;
+          break;
+        }
+        {
+          x_106 = (x_105 + 1);
+          x_102_phi = x_103;
+          x_105_phi = x_106;
+        }
+      }
+      x_135 = x_135_phi;
+      x_136 = x_136_phi;
+      bool const x_137 = x_137_phi;
+      x_139_phi = x_135;
+      if (x_137) {
+        break;
+      }
+      x_139_phi = x_136;
+      break;
+    }
+  }
+  float const x_139 = x_139_phi;
+  c.y = x_139;
+  float const x_141 = c.x;
+  float const x_142 = c.y;
+  c.z = (x_141 + x_142);
+  x_146_phi = 0;
+  while (true) {
+    int x_147 = 0;
+    int const x_146 = x_146_phi;
+    if ((x_146 < 3)) {
+    } else {
+      break;
+    }
+    int const x_152_save = x_146;
+    float const x_153 = c[x_152_save];
+    if ((x_153 >= 1.0f)) {
+      float const x_157 = c[x_152_save];
+      float const x_158 = c[x_152_save];
+      c[x_152_save] = (x_157 * x_158);
+      float const x_161 = x_6.injectionSwitch.x;
+      float const x_163 = x_6.injectionSwitch.y;
+      if ((x_161 > x_163)) {
+        discard_fragment();
+      }
+    }
+    {
+      x_147 = (x_146 + 1);
+      x_146_phi = x_147;
+    }
+  }
+  float3 const x_167 = c;
+  float3 const x_169 = normalize(fabs(x_167));
+  *(tint_symbol_6) = float4(x_169.x, x_169.y, x_169.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]], constant buf1& x_6 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u4dc.0.metal:63:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_61) % rint(x_52)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+T:\tmp\u4dc.0.metal:135:30: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_105) % rint(x_52)) <= 0.01f)) {
+                ~~~~~~~~~~~~ ^ ~~~~~~~~~~
+2 errors generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..585bfcd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.spvasm
@@ -0,0 +1,490 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 278
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_9 "x_9"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %x_54 "x_54"
+               OpName %x_58 "x_58"
+               OpName %x_59 "x_59"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_135 "x_135"
+               OpName %x_136 "x_136"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_61_phi "x_61_phi"
+               OpName %x_91_phi "x_91_phi"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_139_phi "x_139_phi"
+               OpName %x_146_phi "x_146_phi"
+               OpName %x_71 "x_71"
+               OpName %x_79 "x_79"
+               OpName %x_62 "x_62"
+               OpName %x_59_phi "x_59_phi"
+               OpName %x_78 "x_78"
+               OpName %x_79_phi "x_79_phi"
+               OpName %x_98 "x_98"
+               OpName %x_102 "x_102"
+               OpName %x_103 "x_103"
+               OpName %x_102_phi "x_102_phi"
+               OpName %x_105_phi "x_105_phi"
+               OpName %x_135_phi "x_135_phi"
+               OpName %x_136_phi "x_136_phi"
+               OpName %x_137_phi "x_137_phi"
+               OpName %x_115 "x_115"
+               OpName %x_123 "x_123"
+               OpName %x_106 "x_106"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_122 "x_122"
+               OpName %x_123_phi "x_123_phi"
+               OpName %x_147 "x_147"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %25 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %39 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %45 = OpConstantNull %bool
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %52 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+    %int_800 = OpConstant %int 800
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+     %uint_1 = OpConstant %uint 1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %265 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %25
+       %x_54 = OpVariable %_ptr_Function_float Function %28
+       %x_58 = OpVariable %_ptr_Function_float Function %28
+       %x_59 = OpVariable %_ptr_Function_float Function %28
+       %x_91 = OpVariable %_ptr_Function_float Function %28
+       %x_92 = OpVariable %_ptr_Function_float Function %28
+      %x_135 = OpVariable %_ptr_Function_float Function %28
+      %x_136 = OpVariable %_ptr_Function_float Function %28
+   %x_58_phi = OpVariable %_ptr_Function_float Function %28
+   %x_61_phi = OpVariable %_ptr_Function_int Function %39
+   %x_91_phi = OpVariable %_ptr_Function_float Function %28
+   %x_92_phi = OpVariable %_ptr_Function_float Function %28
+   %x_93_phi = OpVariable %_ptr_Function_bool Function %45
+   %x_95_phi = OpVariable %_ptr_Function_float Function %28
+  %x_139_phi = OpVariable %_ptr_Function_float Function %28
+  %x_146_phi = OpVariable %_ptr_Function_int Function %39
+       %x_71 = OpVariable %_ptr_Function_float Function %28
+       %x_79 = OpVariable %_ptr_Function_float Function %28
+       %x_62 = OpVariable %_ptr_Function_int Function %39
+   %x_59_phi = OpVariable %_ptr_Function_float Function %28
+       %x_78 = OpVariable %_ptr_Function_float Function %28
+   %x_79_phi = OpVariable %_ptr_Function_float Function %28
+       %x_98 = OpVariable %_ptr_Function_float Function %28
+      %x_102 = OpVariable %_ptr_Function_float Function %28
+      %x_103 = OpVariable %_ptr_Function_float Function %28
+  %x_102_phi = OpVariable %_ptr_Function_float Function %28
+  %x_105_phi = OpVariable %_ptr_Function_int Function %39
+  %x_135_phi = OpVariable %_ptr_Function_float Function %28
+  %x_136_phi = OpVariable %_ptr_Function_float Function %28
+  %x_137_phi = OpVariable %_ptr_Function_bool Function %45
+      %x_115 = OpVariable %_ptr_Function_float Function %28
+      %x_123 = OpVariable %_ptr_Function_float Function %28
+      %x_106 = OpVariable %_ptr_Function_int Function %39
+  %x_103_phi = OpVariable %_ptr_Function_float Function %28
+      %x_122 = OpVariable %_ptr_Function_float Function %28
+  %x_123_phi = OpVariable %_ptr_Function_float Function %28
+      %x_147 = OpVariable %_ptr_Function_int Function %39
+               OpStore %c %52
+         %56 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %57 = OpLoad %float %56
+         %61 = OpFMul %float %57 %float_0_125
+         %58 = OpExtInst %float %59 RoundEven %61
+         %63 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %64 = OpLoad %float %63
+               OpStore %x_54 %64
+               OpSelectionMerge %65 None
+               OpSwitch %uint_0 %66
+         %66 = OpLabel
+               OpStore %x_58_phi %float_n0_5
+               OpStore %x_61_phi %int_1
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %77 = OpLoad %float %x_58_phi
+               OpStore %x_58 %77
+         %78 = OpLoad %int %x_61_phi
+               OpStore %x_91_phi %float_0
+         %80 = OpLoad %float %x_58
+               OpStore %x_92_phi %80
+               OpStore %x_93_phi %false
+         %83 = OpSLessThan %bool %78 %int_800
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %70
+         %84 = OpLabel
+         %90 = OpSMod %int %78 %int_32
+         %92 = OpIEqual %bool %90 %int_0
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+         %96 = OpLoad %float %x_58
+         %98 = OpFAdd %float %96 %float_0_400000006
+               OpStore %x_71 %98
+         %99 = OpLoad %float %x_71
+               OpStore %x_59_phi %99
+               OpBranch %93
+         %95 = OpLabel
+        %100 = OpLoad %float %x_58
+               OpStore %x_79_phi %100
+        %101 = OpConvertSToF %float %78
+        %102 = OpExtInst %float %59 RoundEven %58
+        %103 = OpFMod %float %101 %102
+        %105 = OpFOrdLessThanEqual %bool %103 %float_0_00999999978
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+        %108 = OpLoad %float %x_58
+        %110 = OpFAdd %float %108 %float_100
+               OpStore %x_78 %110
+        %111 = OpLoad %float %x_78
+               OpStore %x_79_phi %111
+               OpBranch %106
+        %106 = OpLabel
+        %112 = OpLoad %float %x_79_phi
+               OpStore %x_79 %112
+        %113 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %114 = OpLoad %float %113
+        %116 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %117 = OpLoad %float %116
+        %118 = OpFOrdGreaterThan %bool %114 %117
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpKill
+        %119 = OpLabel
+        %121 = OpLoad %float %x_79
+               OpStore %x_59_phi %121
+               OpBranch %93
+         %93 = OpLabel
+        %122 = OpLoad %float %x_59_phi
+               OpStore %x_59 %122
+        %123 = OpConvertSToF %float %78
+        %124 = OpLoad %float %x_54
+        %125 = OpFOrdGreaterThanEqual %bool %123 %124
+               OpSelectionMerge %126 None
+               OpBranchConditional %125 %127 %126
+        %127 = OpLabel
+        %128 = OpLoad %float %x_59
+               OpStore %x_91_phi %128
+        %129 = OpLoad %float %x_59
+               OpStore %x_92_phi %129
+               OpStore %x_93_phi %true
+               OpBranch %70
+        %126 = OpLabel
+               OpBranch %71
+         %71 = OpLabel
+        %131 = OpIAdd %int %78 %int_1
+               OpStore %x_62 %131
+        %132 = OpLoad %float %x_59
+               OpStore %x_58_phi %132
+        %133 = OpLoad %int %x_62
+               OpStore %x_61_phi %133
+               OpBranch %69
+         %70 = OpLabel
+        %134 = OpLoad %float %x_91_phi
+               OpStore %x_91 %134
+        %135 = OpLoad %float %x_92_phi
+               OpStore %x_92 %135
+        %136 = OpLoad %bool %x_93_phi
+        %137 = OpLoad %float %x_91
+               OpStore %x_95_phi %137
+               OpSelectionMerge %138 None
+               OpBranchConditional %136 %139 %138
+        %139 = OpLabel
+               OpBranch %65
+        %138 = OpLabel
+        %140 = OpLoad %float %x_92
+               OpStore %x_95_phi %140
+               OpBranch %65
+         %65 = OpLabel
+        %149 = OpLoad %float %x_95_phi
+        %150 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %150 %149
+        %151 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %152 = OpLoad %float %151
+               OpStore %x_98 %152
+               OpSelectionMerge %153 None
+               OpSwitch %uint_0 %154
+        %154 = OpLabel
+               OpStore %x_102_phi %float_n0_5
+               OpStore %x_105_phi %int_1
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+        %163 = OpLoad %float %x_102_phi
+               OpStore %x_102 %163
+        %164 = OpLoad %int %x_105_phi
+               OpStore %x_135_phi %float_0
+        %165 = OpLoad %float %x_102
+               OpStore %x_136_phi %165
+               OpStore %x_137_phi %false
+        %166 = OpSLessThan %bool %164 %int_800
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %169
+        %168 = OpLabel
+               OpBranch %167
+        %169 = OpLabel
+               OpBranch %156
+        %167 = OpLabel
+        %172 = OpSMod %int %164 %int_32
+        %173 = OpIEqual %bool %172 %int_0
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+        %177 = OpLoad %float %x_102
+        %178 = OpFAdd %float %177 %float_0_400000006
+               OpStore %x_115 %178
+        %179 = OpLoad %float %x_115
+               OpStore %x_103_phi %179
+               OpBranch %174
+        %176 = OpLabel
+        %180 = OpLoad %float %x_102
+               OpStore %x_123_phi %180
+        %181 = OpConvertSToF %float %164
+        %182 = OpExtInst %float %59 RoundEven %58
+        %183 = OpFMod %float %181 %182
+        %184 = OpFOrdLessThanEqual %bool %183 %float_0_00999999978
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %185
+        %186 = OpLabel
+        %187 = OpLoad %float %x_102
+        %188 = OpFAdd %float %187 %float_100
+               OpStore %x_122 %188
+        %189 = OpLoad %float %x_122
+               OpStore %x_123_phi %189
+               OpBranch %185
+        %185 = OpLabel
+        %190 = OpLoad %float %x_123_phi
+               OpStore %x_123 %190
+        %191 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %192 = OpLoad %float %191
+        %193 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %194 = OpLoad %float %193
+        %195 = OpFOrdGreaterThan %bool %192 %194
+               OpSelectionMerge %196 None
+               OpBranchConditional %195 %197 %196
+        %197 = OpLabel
+               OpKill
+        %196 = OpLabel
+        %198 = OpLoad %float %x_123
+               OpStore %x_103_phi %198
+               OpBranch %174
+        %174 = OpLabel
+        %199 = OpLoad %float %x_103_phi
+               OpStore %x_103 %199
+        %200 = OpConvertSToF %float %164
+        %201 = OpLoad %float %x_98
+        %202 = OpFOrdGreaterThanEqual %bool %200 %201
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %203
+        %204 = OpLabel
+        %205 = OpLoad %float %x_103
+               OpStore %x_135_phi %205
+        %206 = OpLoad %float %x_103
+               OpStore %x_136_phi %206
+               OpStore %x_137_phi %true
+               OpBranch %156
+        %203 = OpLabel
+               OpBranch %157
+        %157 = OpLabel
+        %207 = OpIAdd %int %164 %int_1
+               OpStore %x_106 %207
+        %208 = OpLoad %float %x_103
+               OpStore %x_102_phi %208
+        %209 = OpLoad %int %x_106
+               OpStore %x_105_phi %209
+               OpBranch %155
+        %156 = OpLabel
+        %210 = OpLoad %float %x_135_phi
+               OpStore %x_135 %210
+        %211 = OpLoad %float %x_136_phi
+               OpStore %x_136 %211
+        %212 = OpLoad %bool %x_137_phi
+        %213 = OpLoad %float %x_135
+               OpStore %x_139_phi %213
+               OpSelectionMerge %214 None
+               OpBranchConditional %212 %215 %214
+        %215 = OpLabel
+               OpBranch %153
+        %214 = OpLabel
+        %216 = OpLoad %float %x_136
+               OpStore %x_139_phi %216
+               OpBranch %153
+        %153 = OpLabel
+        %217 = OpLoad %float %x_139_phi
+        %218 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %218 %217
+        %219 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %220 = OpLoad %float %219
+        %221 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %222 = OpLoad %float %221
+        %224 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %225 = OpFAdd %float %220 %222
+               OpStore %224 %225
+               OpStore %x_146_phi %int_0
+               OpBranch %226
+        %226 = OpLabel
+               OpLoopMerge %227 %228 None
+               OpBranch %229
+        %229 = OpLabel
+        %231 = OpLoad %int %x_146_phi
+        %233 = OpSLessThan %bool %231 %int_3
+               OpSelectionMerge %234 None
+               OpBranchConditional %233 %235 %236
+        %235 = OpLabel
+               OpBranch %234
+        %236 = OpLabel
+               OpBranch %227
+        %234 = OpLabel
+        %237 = OpAccessChain %_ptr_Function_float %c %231
+        %238 = OpLoad %float %237
+        %240 = OpFOrdGreaterThanEqual %bool %238 %float_1
+               OpSelectionMerge %241 None
+               OpBranchConditional %240 %242 %241
+        %242 = OpLabel
+        %243 = OpAccessChain %_ptr_Function_float %c %231
+        %244 = OpLoad %float %243
+        %245 = OpAccessChain %_ptr_Function_float %c %231
+        %246 = OpLoad %float %245
+        %247 = OpAccessChain %_ptr_Function_float %c %231
+        %248 = OpFMul %float %244 %246
+               OpStore %247 %248
+        %249 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %250 = OpLoad %float %249
+        %251 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %252 = OpLoad %float %251
+        %253 = OpFOrdGreaterThan %bool %250 %252
+               OpSelectionMerge %254 None
+               OpBranchConditional %253 %255 %254
+        %255 = OpLabel
+               OpKill
+        %254 = OpLabel
+               OpBranch %241
+        %241 = OpLabel
+               OpBranch %228
+        %228 = OpLabel
+        %256 = OpIAdd %int %231 %int_1
+               OpStore %x_147 %256
+        %257 = OpLoad %int %x_147
+               OpStore %x_146_phi %257
+               OpBranch %226
+        %227 = OpLabel
+        %258 = OpLoad %v3float %c
+        %260 = OpExtInst %v3float %59 FAbs %258
+        %259 = OpExtInst %v3float %59 Normalize %260
+        %261 = OpCompositeExtract %float %259 0
+        %262 = OpCompositeExtract %float %259 1
+        %263 = OpCompositeExtract %float %259 2
+        %264 = OpCompositeConstruct %v4float %261 %262 %263 %float_1
+               OpStore %x_GLF_color %264
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %265
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %269 = OpLabel
+        %270 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %270
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %272 = OpLabel
+        %273 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %273
+        %274 = OpFunctionCall %void %main_1
+        %276 = OpLoad %v4float %x_GLF_color
+        %277 = OpCompositeConstruct %main_out %276
+        %275 = OpFunctionCall %void %tint_symbol_3 %277
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..5688188
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.spvasm.expected.wgsl
@@ -0,0 +1,222 @@
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_54 : f32;
+  var x_58 : f32;
+  var x_59 : f32;
+  var x_91 : f32;
+  var x_92 : f32;
+  var x_135 : f32;
+  var x_136 : f32;
+  var x_58_phi : f32;
+  var x_61_phi : i32;
+  var x_91_phi : f32;
+  var x_92_phi : f32;
+  var x_93_phi : bool;
+  var x_95_phi : f32;
+  var x_139_phi : f32;
+  var x_146_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_50 : f32 = x_9.resolution.x;
+  let x_52 : f32 = round((x_50 * 0.125));
+  x_54 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_58_phi = -0.5;
+      x_61_phi = 1;
+      loop {
+        var x_71 : f32;
+        var x_79 : f32;
+        var x_62 : i32;
+        var x_59_phi : f32;
+        x_58 = x_58_phi;
+        let x_61 : i32 = x_61_phi;
+        x_91_phi = 0.0;
+        x_92_phi = x_58;
+        x_93_phi = false;
+        if ((x_61 < 800)) {
+        } else {
+          break;
+        }
+        var x_78 : f32;
+        var x_79_phi : f32;
+        if (((x_61 % 32) == 0)) {
+          x_71 = (x_58 + 0.400000006);
+          x_59_phi = x_71;
+        } else {
+          x_79_phi = x_58;
+          if (((f32(x_61) % round(x_52)) <= 0.01)) {
+            x_78 = (x_58 + 100.0);
+            x_79_phi = x_78;
+          }
+          x_79 = x_79_phi;
+          let x_81 : f32 = x_6.injectionSwitch.x;
+          let x_83 : f32 = x_6.injectionSwitch.y;
+          if ((x_81 > x_83)) {
+            discard;
+          }
+          x_59_phi = x_79;
+        }
+        x_59 = x_59_phi;
+        if ((f32(x_61) >= x_54)) {
+          x_91_phi = x_59;
+          x_92_phi = x_59;
+          x_93_phi = true;
+          break;
+        }
+
+        continuing {
+          x_62 = (x_61 + 1);
+          x_58_phi = x_59;
+          x_61_phi = x_62;
+        }
+      }
+      x_91 = x_91_phi;
+      x_92 = x_92_phi;
+      let x_93 : bool = x_93_phi;
+      x_95_phi = x_91;
+      if (x_93) {
+        break;
+      }
+      x_95_phi = x_92;
+    }
+  }
+  var x_98 : f32;
+  var x_102 : f32;
+  var x_103 : f32;
+  var x_102_phi : f32;
+  var x_105_phi : i32;
+  var x_135_phi : f32;
+  var x_136_phi : f32;
+  var x_137_phi : bool;
+  let x_95 : f32 = x_95_phi;
+  let x_96 : ptr<function, f32> = &(c.x);
+  *(x_96) = x_95;
+  x_98 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_102_phi = -0.5;
+      x_105_phi = 1;
+      loop {
+        var x_115 : f32;
+        var x_123 : f32;
+        var x_106 : i32;
+        var x_103_phi : f32;
+        x_102 = x_102_phi;
+        let x_105 : i32 = x_105_phi;
+        x_135_phi = 0.0;
+        x_136_phi = x_102;
+        x_137_phi = false;
+        if ((x_105 < 800)) {
+        } else {
+          break;
+        }
+        var x_122 : f32;
+        var x_123_phi : f32;
+        if (((x_105 % 32) == 0)) {
+          x_115 = (x_102 + 0.400000006);
+          x_103_phi = x_115;
+        } else {
+          x_123_phi = x_102;
+          if (((f32(x_105) % round(x_52)) <= 0.01)) {
+            x_122 = (x_102 + 100.0);
+            x_123_phi = x_122;
+          }
+          x_123 = x_123_phi;
+          let x_125 : f32 = x_6.injectionSwitch.x;
+          let x_127 : f32 = x_6.injectionSwitch.y;
+          if ((x_125 > x_127)) {
+            discard;
+          }
+          x_103_phi = x_123;
+        }
+        x_103 = x_103_phi;
+        if ((f32(x_105) >= x_98)) {
+          x_135_phi = x_103;
+          x_136_phi = x_103;
+          x_137_phi = true;
+          break;
+        }
+
+        continuing {
+          x_106 = (x_105 + 1);
+          x_102_phi = x_103;
+          x_105_phi = x_106;
+        }
+      }
+      x_135 = x_135_phi;
+      x_136 = x_136_phi;
+      let x_137 : bool = x_137_phi;
+      x_139_phi = x_135;
+      if (x_137) {
+        break;
+      }
+      x_139_phi = x_136;
+    }
+  }
+  let x_139 : f32 = x_139_phi;
+  let x_140 : ptr<function, f32> = &(c.y);
+  *(x_140) = x_139;
+  let x_141 : f32 = *(x_96);
+  let x_142 : f32 = *(x_140);
+  c.z = (x_141 + x_142);
+  x_146_phi = 0;
+  loop {
+    var x_147 : i32;
+    let x_146 : i32 = x_146_phi;
+    if ((x_146 < 3)) {
+    } else {
+      break;
+    }
+    let x_152 : ptr<function, f32> = &(c[x_146]);
+    let x_153 : f32 = *(x_152);
+    if ((x_153 >= 1.0)) {
+      let x_157 : f32 = *(x_152);
+      let x_158 : f32 = *(x_152);
+      *(x_152) = (x_157 * x_158);
+      let x_161 : f32 = x_6.injectionSwitch.x;
+      let x_163 : f32 = x_6.injectionSwitch.y;
+      if ((x_161 > x_163)) {
+        discard;
+      }
+    }
+
+    continuing {
+      x_147 = (x_146 + 1);
+      x_146_phi = x_147;
+    }
+  }
+  let x_167 : vec3<f32> = c;
+  let x_169 : vec3<f32> = normalize(abs(x_167));
+  x_GLF_color = vec4<f32>(x_169.x, x_169.y, x_169.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
new file mode 100644
index 0000000..5688188
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
@@ -0,0 +1,222 @@
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_54 : f32;
+  var x_58 : f32;
+  var x_59 : f32;
+  var x_91 : f32;
+  var x_92 : f32;
+  var x_135 : f32;
+  var x_136 : f32;
+  var x_58_phi : f32;
+  var x_61_phi : i32;
+  var x_91_phi : f32;
+  var x_92_phi : f32;
+  var x_93_phi : bool;
+  var x_95_phi : f32;
+  var x_139_phi : f32;
+  var x_146_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_50 : f32 = x_9.resolution.x;
+  let x_52 : f32 = round((x_50 * 0.125));
+  x_54 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_58_phi = -0.5;
+      x_61_phi = 1;
+      loop {
+        var x_71 : f32;
+        var x_79 : f32;
+        var x_62 : i32;
+        var x_59_phi : f32;
+        x_58 = x_58_phi;
+        let x_61 : i32 = x_61_phi;
+        x_91_phi = 0.0;
+        x_92_phi = x_58;
+        x_93_phi = false;
+        if ((x_61 < 800)) {
+        } else {
+          break;
+        }
+        var x_78 : f32;
+        var x_79_phi : f32;
+        if (((x_61 % 32) == 0)) {
+          x_71 = (x_58 + 0.400000006);
+          x_59_phi = x_71;
+        } else {
+          x_79_phi = x_58;
+          if (((f32(x_61) % round(x_52)) <= 0.01)) {
+            x_78 = (x_58 + 100.0);
+            x_79_phi = x_78;
+          }
+          x_79 = x_79_phi;
+          let x_81 : f32 = x_6.injectionSwitch.x;
+          let x_83 : f32 = x_6.injectionSwitch.y;
+          if ((x_81 > x_83)) {
+            discard;
+          }
+          x_59_phi = x_79;
+        }
+        x_59 = x_59_phi;
+        if ((f32(x_61) >= x_54)) {
+          x_91_phi = x_59;
+          x_92_phi = x_59;
+          x_93_phi = true;
+          break;
+        }
+
+        continuing {
+          x_62 = (x_61 + 1);
+          x_58_phi = x_59;
+          x_61_phi = x_62;
+        }
+      }
+      x_91 = x_91_phi;
+      x_92 = x_92_phi;
+      let x_93 : bool = x_93_phi;
+      x_95_phi = x_91;
+      if (x_93) {
+        break;
+      }
+      x_95_phi = x_92;
+    }
+  }
+  var x_98 : f32;
+  var x_102 : f32;
+  var x_103 : f32;
+  var x_102_phi : f32;
+  var x_105_phi : i32;
+  var x_135_phi : f32;
+  var x_136_phi : f32;
+  var x_137_phi : bool;
+  let x_95 : f32 = x_95_phi;
+  let x_96 : ptr<function, f32> = &(c.x);
+  *(x_96) = x_95;
+  x_98 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_102_phi = -0.5;
+      x_105_phi = 1;
+      loop {
+        var x_115 : f32;
+        var x_123 : f32;
+        var x_106 : i32;
+        var x_103_phi : f32;
+        x_102 = x_102_phi;
+        let x_105 : i32 = x_105_phi;
+        x_135_phi = 0.0;
+        x_136_phi = x_102;
+        x_137_phi = false;
+        if ((x_105 < 800)) {
+        } else {
+          break;
+        }
+        var x_122 : f32;
+        var x_123_phi : f32;
+        if (((x_105 % 32) == 0)) {
+          x_115 = (x_102 + 0.400000006);
+          x_103_phi = x_115;
+        } else {
+          x_123_phi = x_102;
+          if (((f32(x_105) % round(x_52)) <= 0.01)) {
+            x_122 = (x_102 + 100.0);
+            x_123_phi = x_122;
+          }
+          x_123 = x_123_phi;
+          let x_125 : f32 = x_6.injectionSwitch.x;
+          let x_127 : f32 = x_6.injectionSwitch.y;
+          if ((x_125 > x_127)) {
+            discard;
+          }
+          x_103_phi = x_123;
+        }
+        x_103 = x_103_phi;
+        if ((f32(x_105) >= x_98)) {
+          x_135_phi = x_103;
+          x_136_phi = x_103;
+          x_137_phi = true;
+          break;
+        }
+
+        continuing {
+          x_106 = (x_105 + 1);
+          x_102_phi = x_103;
+          x_105_phi = x_106;
+        }
+      }
+      x_135 = x_135_phi;
+      x_136 = x_136_phi;
+      let x_137 : bool = x_137_phi;
+      x_139_phi = x_135;
+      if (x_137) {
+        break;
+      }
+      x_139_phi = x_136;
+    }
+  }
+  let x_139 : f32 = x_139_phi;
+  let x_140 : ptr<function, f32> = &(c.y);
+  *(x_140) = x_139;
+  let x_141 : f32 = *(x_96);
+  let x_142 : f32 = *(x_140);
+  c.z = (x_141 + x_142);
+  x_146_phi = 0;
+  loop {
+    var x_147 : i32;
+    let x_146 : i32 = x_146_phi;
+    if ((x_146 < 3)) {
+    } else {
+      break;
+    }
+    let x_152 : ptr<function, f32> = &(c[x_146]);
+    let x_153 : f32 = *(x_152);
+    if ((x_153 >= 1.0)) {
+      let x_157 : f32 = *(x_152);
+      let x_158 : f32 = *(x_152);
+      *(x_152) = (x_157 * x_158);
+      let x_161 : f32 = x_6.injectionSwitch.x;
+      let x_163 : f32 = x_6.injectionSwitch.y;
+      if ((x_161 > x_163)) {
+        discard;
+      }
+    }
+
+    continuing {
+      x_147 = (x_146 + 1);
+      x_146_phi = x_147;
+    }
+  }
+  let x_167 : vec3<f32> = c;
+  let x_169 : vec3<f32> = normalize(abs(x_167));
+  x_GLF_color = vec4<f32>(x_169.x, x_169.y, x_169.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..1b409b0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.hlsl
@@ -0,0 +1,220 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_6 : register(b1, space0) {
+  uint4 x_6[1];
+};
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+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() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float x_54 = 0.0f;
+  float x_58 = 0.0f;
+  float x_59 = 0.0f;
+  float x_91 = 0.0f;
+  float x_92 = 0.0f;
+  float x_135 = 0.0f;
+  float x_136 = 0.0f;
+  float x_58_phi = 0.0f;
+  int x_61_phi = 0;
+  float x_91_phi = 0.0f;
+  float x_92_phi = 0.0f;
+  bool x_93_phi = false;
+  float x_95_phi = 0.0f;
+  float x_139_phi = 0.0f;
+  int x_146_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_50 = asfloat(x_9[0].x);
+  const float x_52 = round((x_50 * 0.125f));
+  x_54 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_58_phi = -0.5f;
+      x_61_phi = 1;
+      while (true) {
+        float x_71 = 0.0f;
+        float x_79 = 0.0f;
+        int x_62 = 0;
+        float x_59_phi = 0.0f;
+        x_58 = x_58_phi;
+        const int x_61 = x_61_phi;
+        x_91_phi = 0.0f;
+        x_92_phi = x_58;
+        x_93_phi = false;
+        if ((x_61 < 800)) {
+        } else {
+          break;
+        }
+        float x_78 = 0.0f;
+        float x_79_phi = 0.0f;
+        if (((x_61 % 32) == 0)) {
+          x_71 = (x_58 + 0.400000006f);
+          x_59_phi = x_71;
+        } else {
+          x_79_phi = x_58;
+          if (((float(x_61) % round(x_52)) <= 0.01f)) {
+            x_78 = (x_58 + 100.0f);
+            x_79_phi = x_78;
+          }
+          x_79 = x_79_phi;
+          const float x_81 = asfloat(x_6[0].x);
+          const float x_83 = asfloat(x_6[0].y);
+          if ((x_81 > x_83)) {
+            discard;
+          }
+          x_59_phi = x_79;
+        }
+        x_59 = x_59_phi;
+        if ((float(x_61) >= x_54)) {
+          x_91_phi = x_59;
+          x_92_phi = x_59;
+          x_93_phi = true;
+          break;
+        }
+        {
+          x_62 = (x_61 + 1);
+          x_58_phi = x_59;
+          x_61_phi = x_62;
+        }
+      }
+      x_91 = x_91_phi;
+      x_92 = x_92_phi;
+      const bool x_93 = x_93_phi;
+      x_95_phi = x_91;
+      if (x_93) {
+        break;
+      }
+      x_95_phi = x_92;
+      break;
+    }
+  }
+  float x_98 = 0.0f;
+  float x_102 = 0.0f;
+  float x_103 = 0.0f;
+  float x_102_phi = 0.0f;
+  int x_105_phi = 0;
+  float x_135_phi = 0.0f;
+  float x_136_phi = 0.0f;
+  bool x_137_phi = false;
+  const float x_95 = x_95_phi;
+  c.x = x_95;
+  x_98 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_102_phi = -0.5f;
+      x_105_phi = 1;
+      while (true) {
+        float x_115 = 0.0f;
+        float x_123 = 0.0f;
+        int x_106 = 0;
+        float x_103_phi = 0.0f;
+        x_102 = x_102_phi;
+        const int x_105 = x_105_phi;
+        x_135_phi = 0.0f;
+        x_136_phi = x_102;
+        x_137_phi = false;
+        if ((x_105 < 800)) {
+        } else {
+          break;
+        }
+        float x_122 = 0.0f;
+        float x_123_phi = 0.0f;
+        if (((x_105 % 32) == 0)) {
+          x_115 = (x_102 + 0.400000006f);
+          x_103_phi = x_115;
+        } else {
+          x_123_phi = x_102;
+          if (((float(x_105) % round(x_52)) <= 0.01f)) {
+            x_122 = (x_102 + 100.0f);
+            x_123_phi = x_122;
+          }
+          x_123 = x_123_phi;
+          const float x_125 = asfloat(x_6[0].x);
+          const float x_127 = asfloat(x_6[0].y);
+          if ((x_125 > x_127)) {
+            discard;
+          }
+          x_103_phi = x_123;
+        }
+        x_103 = x_103_phi;
+        if ((float(x_105) >= x_98)) {
+          x_135_phi = x_103;
+          x_136_phi = x_103;
+          x_137_phi = true;
+          break;
+        }
+        {
+          x_106 = (x_105 + 1);
+          x_102_phi = x_103;
+          x_105_phi = x_106;
+        }
+      }
+      x_135 = x_135_phi;
+      x_136 = x_136_phi;
+      const bool x_137 = x_137_phi;
+      x_139_phi = x_135;
+      if (x_137) {
+        break;
+      }
+      x_139_phi = x_136;
+      break;
+    }
+  }
+  const float x_139 = x_139_phi;
+  c.y = x_139;
+  const float x_141 = c.x;
+  const float x_142 = c.y;
+  c.z = (x_141 + x_142);
+  x_146_phi = 0;
+  while (true) {
+    int x_147 = 0;
+    const int x_146 = x_146_phi;
+    if ((x_146 < 3)) {
+    } else {
+      break;
+    }
+    const int x_152_save = x_146;
+    const float x_153 = c[x_152_save];
+    if ((x_153 >= 1.0f)) {
+      const float x_157 = c[x_152_save];
+      const float x_158 = c[x_152_save];
+      set_float3(c, x_152_save, (x_157 * x_158));
+      const float x_161 = asfloat(x_6[0].x);
+      const float x_163 = asfloat(x_6[0].y);
+      if ((x_161 > x_163)) {
+        discard;
+      }
+    }
+    {
+      x_147 = (x_146 + 1);
+      x_146_phi = x_147;
+    }
+  }
+  const float3 x_169 = normalize(abs(c));
+  x_GLF_color = float4(x_169.x, x_169.y, x_169.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.msl
new file mode 100755
index 0000000..1f4f528
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.msl
@@ -0,0 +1,226 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, constant buf1& x_6, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float x_54 = 0.0f;
+  float x_58 = 0.0f;
+  float x_59 = 0.0f;
+  float x_91 = 0.0f;
+  float x_92 = 0.0f;
+  float x_135 = 0.0f;
+  float x_136 = 0.0f;
+  float x_58_phi = 0.0f;
+  int x_61_phi = 0;
+  float x_91_phi = 0.0f;
+  float x_92_phi = 0.0f;
+  bool x_93_phi = false;
+  float x_95_phi = 0.0f;
+  float x_139_phi = 0.0f;
+  int x_146_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_50 = x_9.resolution.x;
+  float const x_52 = rint((x_50 * 0.125f));
+  x_54 = (*(tint_symbol_5)).x;
+  switch(0u) {
+    default: {
+      x_58_phi = -0.5f;
+      x_61_phi = 1;
+      while (true) {
+        float x_71 = 0.0f;
+        float x_79 = 0.0f;
+        int x_62 = 0;
+        float x_59_phi = 0.0f;
+        x_58 = x_58_phi;
+        int const x_61 = x_61_phi;
+        x_91_phi = 0.0f;
+        x_92_phi = x_58;
+        x_93_phi = false;
+        if ((x_61 < 800)) {
+        } else {
+          break;
+        }
+        float x_78 = 0.0f;
+        float x_79_phi = 0.0f;
+        if (((x_61 % 32) == 0)) {
+          x_71 = (x_58 + 0.400000006f);
+          x_59_phi = x_71;
+        } else {
+          x_79_phi = x_58;
+          if (((float(x_61) % rint(x_52)) <= 0.01f)) {
+            x_78 = (x_58 + 100.0f);
+            x_79_phi = x_78;
+          }
+          x_79 = x_79_phi;
+          float const x_81 = x_6.injectionSwitch.x;
+          float const x_83 = x_6.injectionSwitch.y;
+          if ((x_81 > x_83)) {
+            discard_fragment();
+          }
+          x_59_phi = x_79;
+        }
+        x_59 = x_59_phi;
+        if ((float(x_61) >= x_54)) {
+          x_91_phi = x_59;
+          x_92_phi = x_59;
+          x_93_phi = true;
+          break;
+        }
+        {
+          x_62 = (x_61 + 1);
+          x_58_phi = x_59;
+          x_61_phi = x_62;
+        }
+      }
+      x_91 = x_91_phi;
+      x_92 = x_92_phi;
+      bool const x_93 = x_93_phi;
+      x_95_phi = x_91;
+      if (x_93) {
+        break;
+      }
+      x_95_phi = x_92;
+      break;
+    }
+  }
+  float x_98 = 0.0f;
+  float x_102 = 0.0f;
+  float x_103 = 0.0f;
+  float x_102_phi = 0.0f;
+  int x_105_phi = 0;
+  float x_135_phi = 0.0f;
+  float x_136_phi = 0.0f;
+  bool x_137_phi = false;
+  float const x_95 = x_95_phi;
+  c.x = x_95;
+  x_98 = (*(tint_symbol_5)).y;
+  switch(0u) {
+    default: {
+      x_102_phi = -0.5f;
+      x_105_phi = 1;
+      while (true) {
+        float x_115 = 0.0f;
+        float x_123 = 0.0f;
+        int x_106 = 0;
+        float x_103_phi = 0.0f;
+        x_102 = x_102_phi;
+        int const x_105 = x_105_phi;
+        x_135_phi = 0.0f;
+        x_136_phi = x_102;
+        x_137_phi = false;
+        if ((x_105 < 800)) {
+        } else {
+          break;
+        }
+        float x_122 = 0.0f;
+        float x_123_phi = 0.0f;
+        if (((x_105 % 32) == 0)) {
+          x_115 = (x_102 + 0.400000006f);
+          x_103_phi = x_115;
+        } else {
+          x_123_phi = x_102;
+          if (((float(x_105) % rint(x_52)) <= 0.01f)) {
+            x_122 = (x_102 + 100.0f);
+            x_123_phi = x_122;
+          }
+          x_123 = x_123_phi;
+          float const x_125 = x_6.injectionSwitch.x;
+          float const x_127 = x_6.injectionSwitch.y;
+          if ((x_125 > x_127)) {
+            discard_fragment();
+          }
+          x_103_phi = x_123;
+        }
+        x_103 = x_103_phi;
+        if ((float(x_105) >= x_98)) {
+          x_135_phi = x_103;
+          x_136_phi = x_103;
+          x_137_phi = true;
+          break;
+        }
+        {
+          x_106 = (x_105 + 1);
+          x_102_phi = x_103;
+          x_105_phi = x_106;
+        }
+      }
+      x_135 = x_135_phi;
+      x_136 = x_136_phi;
+      bool const x_137 = x_137_phi;
+      x_139_phi = x_135;
+      if (x_137) {
+        break;
+      }
+      x_139_phi = x_136;
+      break;
+    }
+  }
+  float const x_139 = x_139_phi;
+  c.y = x_139;
+  float const x_141 = c.x;
+  float const x_142 = c.y;
+  c.z = (x_141 + x_142);
+  x_146_phi = 0;
+  while (true) {
+    int x_147 = 0;
+    int const x_146 = x_146_phi;
+    if ((x_146 < 3)) {
+    } else {
+      break;
+    }
+    int const x_152_save = x_146;
+    float const x_153 = c[x_152_save];
+    if ((x_153 >= 1.0f)) {
+      float const x_157 = c[x_152_save];
+      float const x_158 = c[x_152_save];
+      c[x_152_save] = (x_157 * x_158);
+      float const x_161 = x_6.injectionSwitch.x;
+      float const x_163 = x_6.injectionSwitch.y;
+      if ((x_161 > x_163)) {
+        discard_fragment();
+      }
+    }
+    {
+      x_147 = (x_146 + 1);
+      x_146_phi = x_147;
+    }
+  }
+  float3 const x_167 = c;
+  float3 const x_169 = normalize(fabs(x_167));
+  *(tint_symbol_6) = float4(x_169.x, x_169.y, x_169.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_9 [[buffer(0)]], constant buf1& x_6 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_9, x_6, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\ucz4.0.metal:63:29: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_61) % rint(x_52)) <= 0.01f)) {
+                ~~~~~~~~~~~ ^ ~~~~~~~~~~
+T:\tmp\ucz4.0.metal:135:30: error: invalid operands to binary expression ('float' and 'float')
+          if (((float(x_105) % rint(x_52)) <= 0.01f)) {
+                ~~~~~~~~~~~~ ^ ~~~~~~~~~~
+2 errors generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..585bfcd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.spvasm
@@ -0,0 +1,490 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 278
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_9 "x_9"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %x_54 "x_54"
+               OpName %x_58 "x_58"
+               OpName %x_59 "x_59"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_135 "x_135"
+               OpName %x_136 "x_136"
+               OpName %x_58_phi "x_58_phi"
+               OpName %x_61_phi "x_61_phi"
+               OpName %x_91_phi "x_91_phi"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_95_phi "x_95_phi"
+               OpName %x_139_phi "x_139_phi"
+               OpName %x_146_phi "x_146_phi"
+               OpName %x_71 "x_71"
+               OpName %x_79 "x_79"
+               OpName %x_62 "x_62"
+               OpName %x_59_phi "x_59_phi"
+               OpName %x_78 "x_78"
+               OpName %x_79_phi "x_79_phi"
+               OpName %x_98 "x_98"
+               OpName %x_102 "x_102"
+               OpName %x_103 "x_103"
+               OpName %x_102_phi "x_102_phi"
+               OpName %x_105_phi "x_105_phi"
+               OpName %x_135_phi "x_135_phi"
+               OpName %x_136_phi "x_136_phi"
+               OpName %x_137_phi "x_137_phi"
+               OpName %x_115 "x_115"
+               OpName %x_123 "x_123"
+               OpName %x_106 "x_106"
+               OpName %x_103_phi "x_103_phi"
+               OpName %x_122 "x_122"
+               OpName %x_123_phi "x_123_phi"
+               OpName %x_147 "x_147"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %x_6 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %12
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %25 = OpConstantNull %v3float
+%_ptr_Function_float = OpTypePointer Function %float
+         %28 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %39 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %45 = OpConstantNull %bool
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %52 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+    %int_800 = OpConstant %int 800
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+     %uint_1 = OpConstant %uint 1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %265 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %18
+         %21 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %25
+       %x_54 = OpVariable %_ptr_Function_float Function %28
+       %x_58 = OpVariable %_ptr_Function_float Function %28
+       %x_59 = OpVariable %_ptr_Function_float Function %28
+       %x_91 = OpVariable %_ptr_Function_float Function %28
+       %x_92 = OpVariable %_ptr_Function_float Function %28
+      %x_135 = OpVariable %_ptr_Function_float Function %28
+      %x_136 = OpVariable %_ptr_Function_float Function %28
+   %x_58_phi = OpVariable %_ptr_Function_float Function %28
+   %x_61_phi = OpVariable %_ptr_Function_int Function %39
+   %x_91_phi = OpVariable %_ptr_Function_float Function %28
+   %x_92_phi = OpVariable %_ptr_Function_float Function %28
+   %x_93_phi = OpVariable %_ptr_Function_bool Function %45
+   %x_95_phi = OpVariable %_ptr_Function_float Function %28
+  %x_139_phi = OpVariable %_ptr_Function_float Function %28
+  %x_146_phi = OpVariable %_ptr_Function_int Function %39
+       %x_71 = OpVariable %_ptr_Function_float Function %28
+       %x_79 = OpVariable %_ptr_Function_float Function %28
+       %x_62 = OpVariable %_ptr_Function_int Function %39
+   %x_59_phi = OpVariable %_ptr_Function_float Function %28
+       %x_78 = OpVariable %_ptr_Function_float Function %28
+   %x_79_phi = OpVariable %_ptr_Function_float Function %28
+       %x_98 = OpVariable %_ptr_Function_float Function %28
+      %x_102 = OpVariable %_ptr_Function_float Function %28
+      %x_103 = OpVariable %_ptr_Function_float Function %28
+  %x_102_phi = OpVariable %_ptr_Function_float Function %28
+  %x_105_phi = OpVariable %_ptr_Function_int Function %39
+  %x_135_phi = OpVariable %_ptr_Function_float Function %28
+  %x_136_phi = OpVariable %_ptr_Function_float Function %28
+  %x_137_phi = OpVariable %_ptr_Function_bool Function %45
+      %x_115 = OpVariable %_ptr_Function_float Function %28
+      %x_123 = OpVariable %_ptr_Function_float Function %28
+      %x_106 = OpVariable %_ptr_Function_int Function %39
+  %x_103_phi = OpVariable %_ptr_Function_float Function %28
+      %x_122 = OpVariable %_ptr_Function_float Function %28
+  %x_123_phi = OpVariable %_ptr_Function_float Function %28
+      %x_147 = OpVariable %_ptr_Function_int Function %39
+               OpStore %c %52
+         %56 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %57 = OpLoad %float %56
+         %61 = OpFMul %float %57 %float_0_125
+         %58 = OpExtInst %float %59 RoundEven %61
+         %63 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %64 = OpLoad %float %63
+               OpStore %x_54 %64
+               OpSelectionMerge %65 None
+               OpSwitch %uint_0 %66
+         %66 = OpLabel
+               OpStore %x_58_phi %float_n0_5
+               OpStore %x_61_phi %int_1
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %77 = OpLoad %float %x_58_phi
+               OpStore %x_58 %77
+         %78 = OpLoad %int %x_61_phi
+               OpStore %x_91_phi %float_0
+         %80 = OpLoad %float %x_58
+               OpStore %x_92_phi %80
+               OpStore %x_93_phi %false
+         %83 = OpSLessThan %bool %78 %int_800
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %70
+         %84 = OpLabel
+         %90 = OpSMod %int %78 %int_32
+         %92 = OpIEqual %bool %90 %int_0
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+         %96 = OpLoad %float %x_58
+         %98 = OpFAdd %float %96 %float_0_400000006
+               OpStore %x_71 %98
+         %99 = OpLoad %float %x_71
+               OpStore %x_59_phi %99
+               OpBranch %93
+         %95 = OpLabel
+        %100 = OpLoad %float %x_58
+               OpStore %x_79_phi %100
+        %101 = OpConvertSToF %float %78
+        %102 = OpExtInst %float %59 RoundEven %58
+        %103 = OpFMod %float %101 %102
+        %105 = OpFOrdLessThanEqual %bool %103 %float_0_00999999978
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+        %108 = OpLoad %float %x_58
+        %110 = OpFAdd %float %108 %float_100
+               OpStore %x_78 %110
+        %111 = OpLoad %float %x_78
+               OpStore %x_79_phi %111
+               OpBranch %106
+        %106 = OpLabel
+        %112 = OpLoad %float %x_79_phi
+               OpStore %x_79 %112
+        %113 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %114 = OpLoad %float %113
+        %116 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %117 = OpLoad %float %116
+        %118 = OpFOrdGreaterThan %bool %114 %117
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpKill
+        %119 = OpLabel
+        %121 = OpLoad %float %x_79
+               OpStore %x_59_phi %121
+               OpBranch %93
+         %93 = OpLabel
+        %122 = OpLoad %float %x_59_phi
+               OpStore %x_59 %122
+        %123 = OpConvertSToF %float %78
+        %124 = OpLoad %float %x_54
+        %125 = OpFOrdGreaterThanEqual %bool %123 %124
+               OpSelectionMerge %126 None
+               OpBranchConditional %125 %127 %126
+        %127 = OpLabel
+        %128 = OpLoad %float %x_59
+               OpStore %x_91_phi %128
+        %129 = OpLoad %float %x_59
+               OpStore %x_92_phi %129
+               OpStore %x_93_phi %true
+               OpBranch %70
+        %126 = OpLabel
+               OpBranch %71
+         %71 = OpLabel
+        %131 = OpIAdd %int %78 %int_1
+               OpStore %x_62 %131
+        %132 = OpLoad %float %x_59
+               OpStore %x_58_phi %132
+        %133 = OpLoad %int %x_62
+               OpStore %x_61_phi %133
+               OpBranch %69
+         %70 = OpLabel
+        %134 = OpLoad %float %x_91_phi
+               OpStore %x_91 %134
+        %135 = OpLoad %float %x_92_phi
+               OpStore %x_92 %135
+        %136 = OpLoad %bool %x_93_phi
+        %137 = OpLoad %float %x_91
+               OpStore %x_95_phi %137
+               OpSelectionMerge %138 None
+               OpBranchConditional %136 %139 %138
+        %139 = OpLabel
+               OpBranch %65
+        %138 = OpLabel
+        %140 = OpLoad %float %x_92
+               OpStore %x_95_phi %140
+               OpBranch %65
+         %65 = OpLabel
+        %149 = OpLoad %float %x_95_phi
+        %150 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %150 %149
+        %151 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %152 = OpLoad %float %151
+               OpStore %x_98 %152
+               OpSelectionMerge %153 None
+               OpSwitch %uint_0 %154
+        %154 = OpLabel
+               OpStore %x_102_phi %float_n0_5
+               OpStore %x_105_phi %int_1
+               OpBranch %155
+        %155 = OpLabel
+               OpLoopMerge %156 %157 None
+               OpBranch %158
+        %158 = OpLabel
+        %163 = OpLoad %float %x_102_phi
+               OpStore %x_102 %163
+        %164 = OpLoad %int %x_105_phi
+               OpStore %x_135_phi %float_0
+        %165 = OpLoad %float %x_102
+               OpStore %x_136_phi %165
+               OpStore %x_137_phi %false
+        %166 = OpSLessThan %bool %164 %int_800
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %169
+        %168 = OpLabel
+               OpBranch %167
+        %169 = OpLabel
+               OpBranch %156
+        %167 = OpLabel
+        %172 = OpSMod %int %164 %int_32
+        %173 = OpIEqual %bool %172 %int_0
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+        %177 = OpLoad %float %x_102
+        %178 = OpFAdd %float %177 %float_0_400000006
+               OpStore %x_115 %178
+        %179 = OpLoad %float %x_115
+               OpStore %x_103_phi %179
+               OpBranch %174
+        %176 = OpLabel
+        %180 = OpLoad %float %x_102
+               OpStore %x_123_phi %180
+        %181 = OpConvertSToF %float %164
+        %182 = OpExtInst %float %59 RoundEven %58
+        %183 = OpFMod %float %181 %182
+        %184 = OpFOrdLessThanEqual %bool %183 %float_0_00999999978
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %185
+        %186 = OpLabel
+        %187 = OpLoad %float %x_102
+        %188 = OpFAdd %float %187 %float_100
+               OpStore %x_122 %188
+        %189 = OpLoad %float %x_122
+               OpStore %x_123_phi %189
+               OpBranch %185
+        %185 = OpLabel
+        %190 = OpLoad %float %x_123_phi
+               OpStore %x_123 %190
+        %191 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %192 = OpLoad %float %191
+        %193 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %194 = OpLoad %float %193
+        %195 = OpFOrdGreaterThan %bool %192 %194
+               OpSelectionMerge %196 None
+               OpBranchConditional %195 %197 %196
+        %197 = OpLabel
+               OpKill
+        %196 = OpLabel
+        %198 = OpLoad %float %x_123
+               OpStore %x_103_phi %198
+               OpBranch %174
+        %174 = OpLabel
+        %199 = OpLoad %float %x_103_phi
+               OpStore %x_103 %199
+        %200 = OpConvertSToF %float %164
+        %201 = OpLoad %float %x_98
+        %202 = OpFOrdGreaterThanEqual %bool %200 %201
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %203
+        %204 = OpLabel
+        %205 = OpLoad %float %x_103
+               OpStore %x_135_phi %205
+        %206 = OpLoad %float %x_103
+               OpStore %x_136_phi %206
+               OpStore %x_137_phi %true
+               OpBranch %156
+        %203 = OpLabel
+               OpBranch %157
+        %157 = OpLabel
+        %207 = OpIAdd %int %164 %int_1
+               OpStore %x_106 %207
+        %208 = OpLoad %float %x_103
+               OpStore %x_102_phi %208
+        %209 = OpLoad %int %x_106
+               OpStore %x_105_phi %209
+               OpBranch %155
+        %156 = OpLabel
+        %210 = OpLoad %float %x_135_phi
+               OpStore %x_135 %210
+        %211 = OpLoad %float %x_136_phi
+               OpStore %x_136 %211
+        %212 = OpLoad %bool %x_137_phi
+        %213 = OpLoad %float %x_135
+               OpStore %x_139_phi %213
+               OpSelectionMerge %214 None
+               OpBranchConditional %212 %215 %214
+        %215 = OpLabel
+               OpBranch %153
+        %214 = OpLabel
+        %216 = OpLoad %float %x_136
+               OpStore %x_139_phi %216
+               OpBranch %153
+        %153 = OpLabel
+        %217 = OpLoad %float %x_139_phi
+        %218 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %218 %217
+        %219 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %220 = OpLoad %float %219
+        %221 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %222 = OpLoad %float %221
+        %224 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %225 = OpFAdd %float %220 %222
+               OpStore %224 %225
+               OpStore %x_146_phi %int_0
+               OpBranch %226
+        %226 = OpLabel
+               OpLoopMerge %227 %228 None
+               OpBranch %229
+        %229 = OpLabel
+        %231 = OpLoad %int %x_146_phi
+        %233 = OpSLessThan %bool %231 %int_3
+               OpSelectionMerge %234 None
+               OpBranchConditional %233 %235 %236
+        %235 = OpLabel
+               OpBranch %234
+        %236 = OpLabel
+               OpBranch %227
+        %234 = OpLabel
+        %237 = OpAccessChain %_ptr_Function_float %c %231
+        %238 = OpLoad %float %237
+        %240 = OpFOrdGreaterThanEqual %bool %238 %float_1
+               OpSelectionMerge %241 None
+               OpBranchConditional %240 %242 %241
+        %242 = OpLabel
+        %243 = OpAccessChain %_ptr_Function_float %c %231
+        %244 = OpLoad %float %243
+        %245 = OpAccessChain %_ptr_Function_float %c %231
+        %246 = OpLoad %float %245
+        %247 = OpAccessChain %_ptr_Function_float %c %231
+        %248 = OpFMul %float %244 %246
+               OpStore %247 %248
+        %249 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+        %250 = OpLoad %float %249
+        %251 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+        %252 = OpLoad %float %251
+        %253 = OpFOrdGreaterThan %bool %250 %252
+               OpSelectionMerge %254 None
+               OpBranchConditional %253 %255 %254
+        %255 = OpLabel
+               OpKill
+        %254 = OpLabel
+               OpBranch %241
+        %241 = OpLabel
+               OpBranch %228
+        %228 = OpLabel
+        %256 = OpIAdd %int %231 %int_1
+               OpStore %x_147 %256
+        %257 = OpLoad %int %x_147
+               OpStore %x_146_phi %257
+               OpBranch %226
+        %227 = OpLabel
+        %258 = OpLoad %v3float %c
+        %260 = OpExtInst %v3float %59 FAbs %258
+        %259 = OpExtInst %v3float %59 Normalize %260
+        %261 = OpCompositeExtract %float %259 0
+        %262 = OpCompositeExtract %float %259 1
+        %263 = OpCompositeExtract %float %259 2
+        %264 = OpCompositeConstruct %v4float %261 %262 %263 %float_1
+               OpStore %x_GLF_color %264
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %265
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %269 = OpLabel
+        %270 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %270
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+        %272 = OpLabel
+        %273 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %273
+        %274 = OpFunctionCall %void %main_1
+        %276 = OpLoad %v4float %x_GLF_color
+        %277 = OpCompositeConstruct %main_out %276
+        %275 = OpFunctionCall %void %tint_symbol_3 %277
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..5688188
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl.expected.wgsl
@@ -0,0 +1,222 @@
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c : vec3<f32>;
+  var x_54 : f32;
+  var x_58 : f32;
+  var x_59 : f32;
+  var x_91 : f32;
+  var x_92 : f32;
+  var x_135 : f32;
+  var x_136 : f32;
+  var x_58_phi : f32;
+  var x_61_phi : i32;
+  var x_91_phi : f32;
+  var x_92_phi : f32;
+  var x_93_phi : bool;
+  var x_95_phi : f32;
+  var x_139_phi : f32;
+  var x_146_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_50 : f32 = x_9.resolution.x;
+  let x_52 : f32 = round((x_50 * 0.125));
+  x_54 = gl_FragCoord.x;
+  switch(0u) {
+    default: {
+      x_58_phi = -0.5;
+      x_61_phi = 1;
+      loop {
+        var x_71 : f32;
+        var x_79 : f32;
+        var x_62 : i32;
+        var x_59_phi : f32;
+        x_58 = x_58_phi;
+        let x_61 : i32 = x_61_phi;
+        x_91_phi = 0.0;
+        x_92_phi = x_58;
+        x_93_phi = false;
+        if ((x_61 < 800)) {
+        } else {
+          break;
+        }
+        var x_78 : f32;
+        var x_79_phi : f32;
+        if (((x_61 % 32) == 0)) {
+          x_71 = (x_58 + 0.400000006);
+          x_59_phi = x_71;
+        } else {
+          x_79_phi = x_58;
+          if (((f32(x_61) % round(x_52)) <= 0.01)) {
+            x_78 = (x_58 + 100.0);
+            x_79_phi = x_78;
+          }
+          x_79 = x_79_phi;
+          let x_81 : f32 = x_6.injectionSwitch.x;
+          let x_83 : f32 = x_6.injectionSwitch.y;
+          if ((x_81 > x_83)) {
+            discard;
+          }
+          x_59_phi = x_79;
+        }
+        x_59 = x_59_phi;
+        if ((f32(x_61) >= x_54)) {
+          x_91_phi = x_59;
+          x_92_phi = x_59;
+          x_93_phi = true;
+          break;
+        }
+
+        continuing {
+          x_62 = (x_61 + 1);
+          x_58_phi = x_59;
+          x_61_phi = x_62;
+        }
+      }
+      x_91 = x_91_phi;
+      x_92 = x_92_phi;
+      let x_93 : bool = x_93_phi;
+      x_95_phi = x_91;
+      if (x_93) {
+        break;
+      }
+      x_95_phi = x_92;
+    }
+  }
+  var x_98 : f32;
+  var x_102 : f32;
+  var x_103 : f32;
+  var x_102_phi : f32;
+  var x_105_phi : i32;
+  var x_135_phi : f32;
+  var x_136_phi : f32;
+  var x_137_phi : bool;
+  let x_95 : f32 = x_95_phi;
+  let x_96 : ptr<function, f32> = &(c.x);
+  *(x_96) = x_95;
+  x_98 = gl_FragCoord.y;
+  switch(0u) {
+    default: {
+      x_102_phi = -0.5;
+      x_105_phi = 1;
+      loop {
+        var x_115 : f32;
+        var x_123 : f32;
+        var x_106 : i32;
+        var x_103_phi : f32;
+        x_102 = x_102_phi;
+        let x_105 : i32 = x_105_phi;
+        x_135_phi = 0.0;
+        x_136_phi = x_102;
+        x_137_phi = false;
+        if ((x_105 < 800)) {
+        } else {
+          break;
+        }
+        var x_122 : f32;
+        var x_123_phi : f32;
+        if (((x_105 % 32) == 0)) {
+          x_115 = (x_102 + 0.400000006);
+          x_103_phi = x_115;
+        } else {
+          x_123_phi = x_102;
+          if (((f32(x_105) % round(x_52)) <= 0.01)) {
+            x_122 = (x_102 + 100.0);
+            x_123_phi = x_122;
+          }
+          x_123 = x_123_phi;
+          let x_125 : f32 = x_6.injectionSwitch.x;
+          let x_127 : f32 = x_6.injectionSwitch.y;
+          if ((x_125 > x_127)) {
+            discard;
+          }
+          x_103_phi = x_123;
+        }
+        x_103 = x_103_phi;
+        if ((f32(x_105) >= x_98)) {
+          x_135_phi = x_103;
+          x_136_phi = x_103;
+          x_137_phi = true;
+          break;
+        }
+
+        continuing {
+          x_106 = (x_105 + 1);
+          x_102_phi = x_103;
+          x_105_phi = x_106;
+        }
+      }
+      x_135 = x_135_phi;
+      x_136 = x_136_phi;
+      let x_137 : bool = x_137_phi;
+      x_139_phi = x_135;
+      if (x_137) {
+        break;
+      }
+      x_139_phi = x_136;
+    }
+  }
+  let x_139 : f32 = x_139_phi;
+  let x_140 : ptr<function, f32> = &(c.y);
+  *(x_140) = x_139;
+  let x_141 : f32 = *(x_96);
+  let x_142 : f32 = *(x_140);
+  c.z = (x_141 + x_142);
+  x_146_phi = 0;
+  loop {
+    var x_147 : i32;
+    let x_146 : i32 = x_146_phi;
+    if ((x_146 < 3)) {
+    } else {
+      break;
+    }
+    let x_152 : ptr<function, f32> = &(c[x_146]);
+    let x_153 : f32 = *(x_152);
+    if ((x_153 >= 1.0)) {
+      let x_157 : f32 = *(x_152);
+      let x_158 : f32 = *(x_152);
+      *(x_152) = (x_157 * x_158);
+      let x_161 : f32 = x_6.injectionSwitch.x;
+      let x_163 : f32 = x_6.injectionSwitch.y;
+      if ((x_161 > x_163)) {
+        discard;
+      }
+    }
+
+    continuing {
+      x_147 = (x_146 + 1);
+      x_146_phi = x_147;
+    }
+  }
+  let x_167 : vec3<f32> = c;
+  let x_169 : vec3<f32> = normalize(abs(x_167));
+  x_GLF_color = vec4<f32>(x_169.x, x_169.y, x_169.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm
new file mode 100644
index 0000000..ff93ffd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm
@@ -0,0 +1,217 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %compute_value_f1_f1_ "compute_value(f1;f1;"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %c "c"
+               OpName %thirty_two_0 "thirty_two"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %i_0 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %23 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %40 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %20
+         %54 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+%thirty_two_0 = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_float Function
+    %param_2 = OpVariable %_ptr_Function_float Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+               OpStore %c %40
+         %55 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %56 = OpLoad %float %55
+         %57 = OpFDiv %float %56 %float_8
+         %58 = OpExtInst %float %1 Round %57
+               OpStore %thirty_two_0 %58
+         %59 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %60 = OpLoad %float %59
+               OpStore %param %60
+         %61 = OpLoad %float %thirty_two_0
+               OpStore %param_0 %61
+         %62 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_0
+         %63 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %63 %62
+         %64 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %65 = OpLoad %float %64
+               OpStore %param_1 %65
+         %66 = OpLoad %float %thirty_two_0
+               OpStore %param_2 %66
+         %67 = OpFunctionCall %float %compute_value_f1_f1_ %param_1 %param_2
+         %68 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %68 %67
+         %69 = OpAccessChain %_ptr_Function_float %c %uint_0
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Function_float %c %uint_1
+         %72 = OpLoad %float %71
+         %73 = OpFAdd %float %70 %72
+         %74 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %74 %73
+               OpStore %i_0 %int_0
+               OpBranch %75
+         %75 = OpLabel
+               OpLoopMerge %76 %77 None
+               OpBranch %78
+         %78 = OpLabel
+         %79 = OpLoad %int %i_0
+         %80 = OpSLessThan %bool %79 %int_3
+               OpBranchConditional %80 %81 %76
+         %81 = OpLabel
+         %82 = OpLoad %int %i_0
+         %83 = OpAccessChain %_ptr_Function_float %c %82
+         %84 = OpLoad %float %83
+         %85 = OpFOrdGreaterThanEqual %bool %84 %float_1
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %86
+         %87 = OpLabel
+         %88 = OpLoad %int %i_0
+         %89 = OpLoad %int %i_0
+         %90 = OpAccessChain %_ptr_Function_float %c %89
+         %91 = OpLoad %float %90
+         %92 = OpLoad %int %i_0
+         %93 = OpAccessChain %_ptr_Function_float %c %92
+         %94 = OpLoad %float %93
+         %95 = OpFMul %float %91 %94
+         %96 = OpAccessChain %_ptr_Function_float %c %88
+               OpStore %96 %95
+               OpBranch %86
+         %86 = OpLabel
+               OpBranch %77
+         %77 = OpLabel
+         %97 = OpLoad %int %i_0
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %i_0 %98
+               OpBranch %75
+         %76 = OpLabel
+         %99 = OpLoad %v3float %c
+        %100 = OpExtInst %v3float %1 FAbs %99
+        %101 = OpExtInst %v3float %1 Normalize %100
+        %102 = OpCompositeExtract %float %101 0
+        %103 = OpCompositeExtract %float %101 1
+        %104 = OpCompositeExtract %float %101 2
+        %105 = OpCompositeConstruct %v4float %102 %103 %104 %float_1
+               OpStore %_GLF_color %105
+               OpReturn
+               OpFunctionEnd
+%compute_value_f1_f1_ = OpFunction %float None %23
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+        %106 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %107
+        %107 = OpLabel
+               OpLoopMerge %108 %109 None
+               OpBranch %110
+        %110 = OpLabel
+        %111 = OpLoad %int %i
+        %112 = OpSLessThan %bool %111 %int_800
+               OpBranchConditional %112 %113 %108
+        %113 = OpLabel
+        %114 = OpLoad %int %i
+        %115 = OpSMod %int %114 %int_32
+        %116 = OpIEqual %bool %115 %int_0
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %119
+        %118 = OpLabel
+        %120 = OpLoad %float %result
+        %121 = OpFAdd %float %120 %float_0_400000006
+               OpStore %result %121
+               OpBranch %117
+        %119 = OpLabel
+        %122 = OpLoad %int %i
+        %123 = OpConvertSToF %float %122
+        %124 = OpLoad %float %thirty_two
+        %125 = OpExtInst %float %1 Round %124
+        %126 = OpFMod %float %123 %125
+        %127 = OpFOrdLessThanEqual %bool %126 %float_0_00999999978
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+        %130 = OpLoad %float %result
+        %131 = OpFAdd %float %130 %float_100
+               OpStore %result %131
+               OpBranch %128
+        %128 = OpLabel
+               OpBranch %117
+        %117 = OpLabel
+        %132 = OpLoad %int %i
+        %133 = OpConvertSToF %float %132
+        %134 = OpLoad %float %limit
+        %135 = OpFOrdGreaterThanEqual %bool %133 %134
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %136
+        %137 = OpLabel
+        %138 = OpLoad %float %result
+               OpReturnValue %138
+        %136 = OpLabel
+               OpBranch %109
+        %109 = OpLabel
+        %139 = OpLoad %int %i
+        %140 = OpIAdd %int %139 %int_1
+               OpStore %i %140
+               OpBranch %107
+        %108 = OpLabel
+        %141 = OpLoad %float %result
+               OpReturnValue %141
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..7295dbb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.hlsl
@@ -0,0 +1,95 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+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);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  {
+    for(; (i < 800); i = (i + 1)) {
+      if (((i % 32) == 0)) {
+        result = (result + 0.400000006f);
+      } else {
+        const int x_122 = i;
+        const float x_124 = thirty_two;
+        if (((float(x_122) % round(x_124)) <= 0.01f)) {
+          result = (result + 100.0f);
+        }
+      }
+      const int x_132 = i;
+      const float x_134 = limit;
+      if ((float(x_132) >= x_134)) {
+        return result;
+      }
+    }
+  }
+  return result;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_56 = asfloat(x_13[0].x);
+  thirty_two_1 = round((x_56 / 8.0f));
+  const float x_60 = gl_FragCoord.x;
+  param = x_60;
+  param_1 = thirty_two_1;
+  const float x_62 = compute_value_f1_f1_(param, param_1);
+  c.x = x_62;
+  const float x_65 = gl_FragCoord.y;
+  param_2 = x_65;
+  param_3 = thirty_two_1;
+  const float x_67 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_67;
+  const float x_70 = c.x;
+  const float x_72 = c.y;
+  c.z = (x_70 + x_72);
+  i_1 = 0;
+  {
+    for(; (i_1 < 3); i_1 = (i_1 + 1)) {
+      const float x_84 = c[i_1];
+      if ((x_84 >= 1.0f)) {
+        const int x_88 = i_1;
+        const float x_91 = c[i_1];
+        const float x_94 = c[i_1];
+        set_float3(c, x_88, (x_91 * x_94));
+      }
+    }
+  }
+  const float3 x_101 = normalize(abs(c));
+  x_GLF_color = float4(x_101.x, x_101.y, x_101.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.msl
new file mode 100755
index 0000000..51d7aa0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.msl
@@ -0,0 +1,122 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  while (true) {
+    int const x_111 = i;
+    if ((x_111 < 800)) {
+    } else {
+      break;
+    }
+    int const x_114 = i;
+    if (((x_114 % 32) == 0)) {
+      float const x_120 = result;
+      result = (x_120 + 0.400000006f);
+    } else {
+      int const x_122 = i;
+      float const x_124 = *(thirty_two);
+      if (((float(x_122) % rint(x_124)) <= 0.01f)) {
+        float const x_130 = result;
+        result = (x_130 + 100.0f);
+      }
+    }
+    int const x_132 = i;
+    float const x_134 = *(limit);
+    if ((float(x_132) >= x_134)) {
+      float const x_138 = result;
+      return x_138;
+    }
+    {
+      int const x_139 = i;
+      i = (x_139 + 1);
+    }
+  }
+  float const x_141 = result;
+  return x_141;
+}
+
+void main_1(constant buf0& x_13, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_56 = x_13.resolution.x;
+  thirty_two_1 = rint((x_56 / 8.0f));
+  float const x_60 = (*(tint_symbol_5)).x;
+  param = x_60;
+  float const x_61 = thirty_two_1;
+  param_1 = x_61;
+  float const x_62 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_62;
+  float const x_65 = (*(tint_symbol_5)).y;
+  param_2 = x_65;
+  float const x_66 = thirty_two_1;
+  param_3 = x_66;
+  float const x_67 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_67;
+  float const x_70 = c.x;
+  float const x_72 = c.y;
+  c.z = (x_70 + x_72);
+  i_1 = 0;
+  while (true) {
+    int const x_79 = i_1;
+    if ((x_79 < 3)) {
+    } else {
+      break;
+    }
+    int const x_82 = i_1;
+    float const x_84 = c[x_82];
+    if ((x_84 >= 1.0f)) {
+      int const x_88 = i_1;
+      int const x_89 = i_1;
+      float const x_91 = c[x_89];
+      int const x_92 = i_1;
+      float const x_94 = c[x_92];
+      c[x_88] = (x_91 * x_94);
+    }
+    {
+      int const x_97 = i_1;
+      i_1 = (x_97 + 1);
+    }
+  }
+  float3 const x_99 = c;
+  float3 const x_101 = normalize(fabs(x_99));
+  *(tint_symbol_6) = float4(x_101.x, x_101.y, x_101.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_13, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\ufic.0.metal:32:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_122) % rint(x_124)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..15ed885
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.spvasm
@@ -0,0 +1,266 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 172
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %thirty_two_1 "thirty_two_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %22 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %76 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %83 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %93 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %159 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %15
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %20 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function %22
+          %i = OpVariable %_ptr_Function_int Function %26
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %35 = OpSLessThan %bool %33 %int_800
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %30
+         %37 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpSMod %int %40 %int_32
+         %44 = OpIEqual %bool %42 %int_0
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+         %48 = OpLoad %float %result
+         %50 = OpFAdd %float %48 %float_0_400000006
+               OpStore %result %50
+               OpBranch %45
+         %47 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %float %thirty_two
+         %54 = OpConvertSToF %float %51
+         %55 = OpExtInst %float %56 RoundEven %53
+         %57 = OpFMod %float %54 %55
+         %59 = OpFOrdLessThanEqual %bool %57 %float_0_00999999978
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpLoad %float %result
+         %64 = OpFAdd %float %62 %float_100
+               OpStore %result %64
+               OpBranch %60
+         %60 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+         %65 = OpLoad %int %i
+         %67 = OpLoad %float %limit
+         %68 = OpConvertSToF %float %65
+         %69 = OpFOrdGreaterThanEqual %bool %68 %67
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %float %result
+               OpReturnValue %72
+         %70 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %73 = OpLoad %int %i
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %i %74
+               OpBranch %29
+         %30 = OpLabel
+         %75 = OpLoad %float %result
+               OpReturnValue %75
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %76
+         %79 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %83
+%thirty_two_1 = OpVariable %_ptr_Function_float Function %22
+      %param = OpVariable %_ptr_Function_float Function %22
+    %param_1 = OpVariable %_ptr_Function_float Function %22
+    %param_2 = OpVariable %_ptr_Function_float Function %22
+    %param_3 = OpVariable %_ptr_Function_float Function %22
+        %i_1 = OpVariable %_ptr_Function_int Function %26
+               OpStore %c %93
+         %97 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+         %98 = OpLoad %float %97
+        %100 = OpFDiv %float %98 %float_8
+         %99 = OpExtInst %float %56 RoundEven %100
+               OpStore %thirty_two_1 %99
+        %102 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %103 = OpLoad %float %102
+               OpStore %param %103
+        %104 = OpLoad %float %thirty_two_1
+               OpStore %param_1 %104
+        %105 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %108 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %108 %105
+        %110 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %111 = OpLoad %float %110
+               OpStore %param_2 %111
+        %112 = OpLoad %float %thirty_two_1
+               OpStore %param_3 %112
+        %113 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %116 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %116 %113
+        %117 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %120 = OpLoad %float %119
+        %122 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %123 = OpFAdd %float %118 %120
+               OpStore %122 %123
+               OpStore %i_1 %int_0
+               OpBranch %124
+        %124 = OpLabel
+               OpLoopMerge %125 %126 None
+               OpBranch %127
+        %127 = OpLabel
+        %128 = OpLoad %int %i_1
+        %130 = OpSLessThan %bool %128 %int_3
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+               OpBranch %131
+        %133 = OpLabel
+               OpBranch %125
+        %131 = OpLabel
+        %134 = OpLoad %int %i_1
+        %135 = OpAccessChain %_ptr_Function_float %c %134
+        %136 = OpLoad %float %135
+        %138 = OpFOrdGreaterThanEqual %bool %136 %float_1
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %i_1
+        %142 = OpLoad %int %i_1
+        %143 = OpAccessChain %_ptr_Function_float %c %142
+        %144 = OpLoad %float %143
+        %145 = OpLoad %int %i_1
+        %146 = OpAccessChain %_ptr_Function_float %c %145
+        %147 = OpLoad %float %146
+        %148 = OpAccessChain %_ptr_Function_float %c %141
+        %149 = OpFMul %float %144 %147
+               OpStore %148 %149
+               OpBranch %139
+        %139 = OpLabel
+               OpBranch %126
+        %126 = OpLabel
+        %150 = OpLoad %int %i_1
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %i_1 %151
+               OpBranch %124
+        %125 = OpLabel
+        %152 = OpLoad %v3float %c
+        %154 = OpExtInst %v3float %56 FAbs %152
+        %153 = OpExtInst %v3float %56 Normalize %154
+        %155 = OpCompositeExtract %float %153 0
+        %156 = OpCompositeExtract %float %153 1
+        %157 = OpCompositeExtract %float %153 2
+        %158 = OpCompositeConstruct %v4float %155 %156 %157 %float_1
+               OpStore %x_GLF_color %158
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %159
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %163 = OpLabel
+        %164 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %164
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %76
+        %166 = OpLabel
+        %167 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %167
+        %168 = OpFunctionCall %void %main_1
+        %170 = OpLoad %v4float %x_GLF_color
+        %171 = OpCompositeConstruct %main_out %170
+        %169 = OpFunctionCall %void %tint_symbol_3 %171
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..82eab45
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.spvasm.expected.wgsl
@@ -0,0 +1,116 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_111 : i32 = i;
+    if ((x_111 < 800)) {
+    } else {
+      break;
+    }
+    let x_114 : i32 = i;
+    if (((x_114 % 32) == 0)) {
+      let x_120 : f32 = result;
+      result = (x_120 + 0.400000006);
+    } else {
+      let x_122 : i32 = i;
+      let x_124 : f32 = *(thirty_two);
+      if (((f32(x_122) % round(x_124)) <= 0.01)) {
+        let x_130 : f32 = result;
+        result = (x_130 + 100.0);
+      }
+    }
+    let x_132 : i32 = i;
+    let x_134 : f32 = *(limit);
+    if ((f32(x_132) >= x_134)) {
+      let x_138 : f32 = result;
+      return x_138;
+    }
+
+    continuing {
+      let x_139 : i32 = i;
+      i = (x_139 + 1);
+    }
+  }
+  let x_141 : f32 = result;
+  return x_141;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var i_1 : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_56 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_56 / 8.0));
+  let x_60 : f32 = gl_FragCoord.x;
+  param = x_60;
+  let x_61 : f32 = thirty_two_1;
+  param_1 = x_61;
+  let x_62 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_62;
+  let x_65 : f32 = gl_FragCoord.y;
+  param_2 = x_65;
+  let x_66 : f32 = thirty_two_1;
+  param_3 = x_66;
+  let x_67 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_67;
+  let x_70 : f32 = c.x;
+  let x_72 : f32 = c.y;
+  c.z = (x_70 + x_72);
+  i_1 = 0;
+  loop {
+    let x_79 : i32 = i_1;
+    if ((x_79 < 3)) {
+    } else {
+      break;
+    }
+    let x_82 : i32 = i_1;
+    let x_84 : f32 = c[x_82];
+    if ((x_84 >= 1.0)) {
+      let x_88 : i32 = i_1;
+      let x_89 : i32 = i_1;
+      let x_91 : f32 = c[x_89];
+      let x_92 : i32 = i_1;
+      let x_94 : f32 = c[x_92];
+      c[x_88] = (x_91 * x_94);
+    }
+
+    continuing {
+      let x_97 : i32 = i_1;
+      i_1 = (x_97 + 1);
+    }
+  }
+  let x_99 : vec3<f32> = c;
+  let x_101 : vec3<f32> = normalize(abs(x_99));
+  x_GLF_color = vec4<f32>(x_101.x, x_101.y, x_101.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
new file mode 100644
index 0000000..82eab45
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
@@ -0,0 +1,116 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_111 : i32 = i;
+    if ((x_111 < 800)) {
+    } else {
+      break;
+    }
+    let x_114 : i32 = i;
+    if (((x_114 % 32) == 0)) {
+      let x_120 : f32 = result;
+      result = (x_120 + 0.400000006);
+    } else {
+      let x_122 : i32 = i;
+      let x_124 : f32 = *(thirty_two);
+      if (((f32(x_122) % round(x_124)) <= 0.01)) {
+        let x_130 : f32 = result;
+        result = (x_130 + 100.0);
+      }
+    }
+    let x_132 : i32 = i;
+    let x_134 : f32 = *(limit);
+    if ((f32(x_132) >= x_134)) {
+      let x_138 : f32 = result;
+      return x_138;
+    }
+
+    continuing {
+      let x_139 : i32 = i;
+      i = (x_139 + 1);
+    }
+  }
+  let x_141 : f32 = result;
+  return x_141;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var i_1 : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_56 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_56 / 8.0));
+  let x_60 : f32 = gl_FragCoord.x;
+  param = x_60;
+  let x_61 : f32 = thirty_two_1;
+  param_1 = x_61;
+  let x_62 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_62;
+  let x_65 : f32 = gl_FragCoord.y;
+  param_2 = x_65;
+  let x_66 : f32 = thirty_two_1;
+  param_3 = x_66;
+  let x_67 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_67;
+  let x_70 : f32 = c.x;
+  let x_72 : f32 = c.y;
+  c.z = (x_70 + x_72);
+  i_1 = 0;
+  loop {
+    let x_79 : i32 = i_1;
+    if ((x_79 < 3)) {
+    } else {
+      break;
+    }
+    let x_82 : i32 = i_1;
+    let x_84 : f32 = c[x_82];
+    if ((x_84 >= 1.0)) {
+      let x_88 : i32 = i_1;
+      let x_89 : i32 = i_1;
+      let x_91 : f32 = c[x_89];
+      let x_92 : i32 = i_1;
+      let x_94 : f32 = c[x_92];
+      c[x_88] = (x_91 * x_94);
+    }
+
+    continuing {
+      let x_97 : i32 = i_1;
+      i_1 = (x_97 + 1);
+    }
+  }
+  let x_99 : vec3<f32> = c;
+  let x_101 : vec3<f32> = normalize(abs(x_99));
+  x_GLF_color = vec4<f32>(x_101.x, x_101.y, x_101.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..7295dbb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.hlsl
@@ -0,0 +1,95 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+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);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  {
+    for(; (i < 800); i = (i + 1)) {
+      if (((i % 32) == 0)) {
+        result = (result + 0.400000006f);
+      } else {
+        const int x_122 = i;
+        const float x_124 = thirty_two;
+        if (((float(x_122) % round(x_124)) <= 0.01f)) {
+          result = (result + 100.0f);
+        }
+      }
+      const int x_132 = i;
+      const float x_134 = limit;
+      if ((float(x_132) >= x_134)) {
+        return result;
+      }
+    }
+  }
+  return result;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_56 = asfloat(x_13[0].x);
+  thirty_two_1 = round((x_56 / 8.0f));
+  const float x_60 = gl_FragCoord.x;
+  param = x_60;
+  param_1 = thirty_two_1;
+  const float x_62 = compute_value_f1_f1_(param, param_1);
+  c.x = x_62;
+  const float x_65 = gl_FragCoord.y;
+  param_2 = x_65;
+  param_3 = thirty_two_1;
+  const float x_67 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_67;
+  const float x_70 = c.x;
+  const float x_72 = c.y;
+  c.z = (x_70 + x_72);
+  i_1 = 0;
+  {
+    for(; (i_1 < 3); i_1 = (i_1 + 1)) {
+      const float x_84 = c[i_1];
+      if ((x_84 >= 1.0f)) {
+        const int x_88 = i_1;
+        const float x_91 = c[i_1];
+        const float x_94 = c[i_1];
+        set_float3(c, x_88, (x_91 * x_94));
+      }
+    }
+  }
+  const float3 x_101 = normalize(abs(c));
+  x_GLF_color = float4(x_101.x, x_101.y, x_101.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.msl
new file mode 100755
index 0000000..e209f72
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.msl
@@ -0,0 +1,122 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  while (true) {
+    int const x_111 = i;
+    if ((x_111 < 800)) {
+    } else {
+      break;
+    }
+    int const x_114 = i;
+    if (((x_114 % 32) == 0)) {
+      float const x_120 = result;
+      result = (x_120 + 0.400000006f);
+    } else {
+      int const x_122 = i;
+      float const x_124 = *(thirty_two);
+      if (((float(x_122) % rint(x_124)) <= 0.01f)) {
+        float const x_130 = result;
+        result = (x_130 + 100.0f);
+      }
+    }
+    int const x_132 = i;
+    float const x_134 = *(limit);
+    if ((float(x_132) >= x_134)) {
+      float const x_138 = result;
+      return x_138;
+    }
+    {
+      int const x_139 = i;
+      i = (x_139 + 1);
+    }
+  }
+  float const x_141 = result;
+  return x_141;
+}
+
+void main_1(constant buf0& x_13, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_56 = x_13.resolution.x;
+  thirty_two_1 = rint((x_56 / 8.0f));
+  float const x_60 = (*(tint_symbol_5)).x;
+  param = x_60;
+  float const x_61 = thirty_two_1;
+  param_1 = x_61;
+  float const x_62 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_62;
+  float const x_65 = (*(tint_symbol_5)).y;
+  param_2 = x_65;
+  float const x_66 = thirty_two_1;
+  param_3 = x_66;
+  float const x_67 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_67;
+  float const x_70 = c.x;
+  float const x_72 = c.y;
+  c.z = (x_70 + x_72);
+  i_1 = 0;
+  while (true) {
+    int const x_79 = i_1;
+    if ((x_79 < 3)) {
+    } else {
+      break;
+    }
+    int const x_82 = i_1;
+    float const x_84 = c[x_82];
+    if ((x_84 >= 1.0f)) {
+      int const x_88 = i_1;
+      int const x_89 = i_1;
+      float const x_91 = c[x_89];
+      int const x_92 = i_1;
+      float const x_94 = c[x_92];
+      c[x_88] = (x_91 * x_94);
+    }
+    {
+      int const x_97 = i_1;
+      i_1 = (x_97 + 1);
+    }
+  }
+  float3 const x_99 = c;
+  float3 const x_101 = normalize(fabs(x_99));
+  *(tint_symbol_6) = float4(x_101.x, x_101.y, x_101.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_13, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u2a4.0.metal:32:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_122) % rint(x_124)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..15ed885
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.spvasm
@@ -0,0 +1,266 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 172
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %thirty_two_1 "thirty_two_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %22 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %76 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %83 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %93 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %159 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %15
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %20 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function %22
+          %i = OpVariable %_ptr_Function_int Function %26
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %35 = OpSLessThan %bool %33 %int_800
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %30
+         %37 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpSMod %int %40 %int_32
+         %44 = OpIEqual %bool %42 %int_0
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+         %48 = OpLoad %float %result
+         %50 = OpFAdd %float %48 %float_0_400000006
+               OpStore %result %50
+               OpBranch %45
+         %47 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %float %thirty_two
+         %54 = OpConvertSToF %float %51
+         %55 = OpExtInst %float %56 RoundEven %53
+         %57 = OpFMod %float %54 %55
+         %59 = OpFOrdLessThanEqual %bool %57 %float_0_00999999978
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpLoad %float %result
+         %64 = OpFAdd %float %62 %float_100
+               OpStore %result %64
+               OpBranch %60
+         %60 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+         %65 = OpLoad %int %i
+         %67 = OpLoad %float %limit
+         %68 = OpConvertSToF %float %65
+         %69 = OpFOrdGreaterThanEqual %bool %68 %67
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %float %result
+               OpReturnValue %72
+         %70 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %73 = OpLoad %int %i
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %i %74
+               OpBranch %29
+         %30 = OpLabel
+         %75 = OpLoad %float %result
+               OpReturnValue %75
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %76
+         %79 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %83
+%thirty_two_1 = OpVariable %_ptr_Function_float Function %22
+      %param = OpVariable %_ptr_Function_float Function %22
+    %param_1 = OpVariable %_ptr_Function_float Function %22
+    %param_2 = OpVariable %_ptr_Function_float Function %22
+    %param_3 = OpVariable %_ptr_Function_float Function %22
+        %i_1 = OpVariable %_ptr_Function_int Function %26
+               OpStore %c %93
+         %97 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+         %98 = OpLoad %float %97
+        %100 = OpFDiv %float %98 %float_8
+         %99 = OpExtInst %float %56 RoundEven %100
+               OpStore %thirty_two_1 %99
+        %102 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %103 = OpLoad %float %102
+               OpStore %param %103
+        %104 = OpLoad %float %thirty_two_1
+               OpStore %param_1 %104
+        %105 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %108 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %108 %105
+        %110 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %111 = OpLoad %float %110
+               OpStore %param_2 %111
+        %112 = OpLoad %float %thirty_two_1
+               OpStore %param_3 %112
+        %113 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %116 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %116 %113
+        %117 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %120 = OpLoad %float %119
+        %122 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %123 = OpFAdd %float %118 %120
+               OpStore %122 %123
+               OpStore %i_1 %int_0
+               OpBranch %124
+        %124 = OpLabel
+               OpLoopMerge %125 %126 None
+               OpBranch %127
+        %127 = OpLabel
+        %128 = OpLoad %int %i_1
+        %130 = OpSLessThan %bool %128 %int_3
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+               OpBranch %131
+        %133 = OpLabel
+               OpBranch %125
+        %131 = OpLabel
+        %134 = OpLoad %int %i_1
+        %135 = OpAccessChain %_ptr_Function_float %c %134
+        %136 = OpLoad %float %135
+        %138 = OpFOrdGreaterThanEqual %bool %136 %float_1
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %int %i_1
+        %142 = OpLoad %int %i_1
+        %143 = OpAccessChain %_ptr_Function_float %c %142
+        %144 = OpLoad %float %143
+        %145 = OpLoad %int %i_1
+        %146 = OpAccessChain %_ptr_Function_float %c %145
+        %147 = OpLoad %float %146
+        %148 = OpAccessChain %_ptr_Function_float %c %141
+        %149 = OpFMul %float %144 %147
+               OpStore %148 %149
+               OpBranch %139
+        %139 = OpLabel
+               OpBranch %126
+        %126 = OpLabel
+        %150 = OpLoad %int %i_1
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %i_1 %151
+               OpBranch %124
+        %125 = OpLabel
+        %152 = OpLoad %v3float %c
+        %154 = OpExtInst %v3float %56 FAbs %152
+        %153 = OpExtInst %v3float %56 Normalize %154
+        %155 = OpCompositeExtract %float %153 0
+        %156 = OpCompositeExtract %float %153 1
+        %157 = OpCompositeExtract %float %153 2
+        %158 = OpCompositeConstruct %v4float %155 %156 %157 %float_1
+               OpStore %x_GLF_color %158
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %159
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %163 = OpLabel
+        %164 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %164
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %76
+        %166 = OpLabel
+        %167 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %167
+        %168 = OpFunctionCall %void %main_1
+        %170 = OpLoad %v4float %x_GLF_color
+        %171 = OpCompositeConstruct %main_out %170
+        %169 = OpFunctionCall %void %tint_symbol_3 %171
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..82eab45
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl.expected.wgsl
@@ -0,0 +1,116 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_111 : i32 = i;
+    if ((x_111 < 800)) {
+    } else {
+      break;
+    }
+    let x_114 : i32 = i;
+    if (((x_114 % 32) == 0)) {
+      let x_120 : f32 = result;
+      result = (x_120 + 0.400000006);
+    } else {
+      let x_122 : i32 = i;
+      let x_124 : f32 = *(thirty_two);
+      if (((f32(x_122) % round(x_124)) <= 0.01)) {
+        let x_130 : f32 = result;
+        result = (x_130 + 100.0);
+      }
+    }
+    let x_132 : i32 = i;
+    let x_134 : f32 = *(limit);
+    if ((f32(x_132) >= x_134)) {
+      let x_138 : f32 = result;
+      return x_138;
+    }
+
+    continuing {
+      let x_139 : i32 = i;
+      i = (x_139 + 1);
+    }
+  }
+  let x_141 : f32 = result;
+  return x_141;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var i_1 : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_56 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_56 / 8.0));
+  let x_60 : f32 = gl_FragCoord.x;
+  param = x_60;
+  let x_61 : f32 = thirty_two_1;
+  param_1 = x_61;
+  let x_62 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_62;
+  let x_65 : f32 = gl_FragCoord.y;
+  param_2 = x_65;
+  let x_66 : f32 = thirty_two_1;
+  param_3 = x_66;
+  let x_67 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_67;
+  let x_70 : f32 = c.x;
+  let x_72 : f32 = c.y;
+  c.z = (x_70 + x_72);
+  i_1 = 0;
+  loop {
+    let x_79 : i32 = i_1;
+    if ((x_79 < 3)) {
+    } else {
+      break;
+    }
+    let x_82 : i32 = i_1;
+    let x_84 : f32 = c[x_82];
+    if ((x_84 >= 1.0)) {
+      let x_88 : i32 = i_1;
+      let x_89 : i32 = i_1;
+      let x_91 : f32 = c[x_89];
+      let x_92 : i32 = i_1;
+      let x_94 : f32 = c[x_92];
+      c[x_88] = (x_91 * x_94);
+    }
+
+    continuing {
+      let x_97 : i32 = i_1;
+      i_1 = (x_97 + 1);
+    }
+  }
+  let x_99 : vec3<f32> = c;
+  let x_101 : vec3<f32> = normalize(abs(x_99));
+  x_GLF_color = vec4<f32>(x_101.x, x_101.y, x_101.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm
new file mode 100644
index 0000000..7200b4f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm
@@ -0,0 +1,244 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %compute_value_f1_f1_ "compute_value(f1;f1;"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %c "c"
+               OpName %thirty_two_0 "thirty_two"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %i_0 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %__0 ""
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %25 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %42 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %main = OpFunction %void None %22
+         %57 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+%thirty_two_0 = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_float Function
+    %param_2 = OpVariable %_ptr_Function_float Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+         %58 = OpVariable %_ptr_Function_v3float Function
+               OpStore %c %42
+         %59 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %60 = OpLoad %float %59
+         %61 = OpFDiv %float %60 %float_8
+         %62 = OpExtInst %float %1 Round %61
+               OpStore %thirty_two_0 %62
+         %63 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %64 = OpLoad %float %63
+               OpStore %param %64
+         %65 = OpLoad %float %thirty_two_0
+               OpStore %param_0 %65
+         %66 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_0
+         %67 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %67 %66
+         %68 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %69 = OpLoad %float %68
+               OpStore %param_1 %69
+         %70 = OpLoad %float %thirty_two_0
+               OpStore %param_2 %70
+         %71 = OpFunctionCall %float %compute_value_f1_f1_ %param_1 %param_2
+         %72 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %72 %71
+         %73 = OpAccessChain %_ptr_Function_float %c %uint_0
+         %74 = OpLoad %float %73
+         %75 = OpAccessChain %_ptr_Function_float %c %uint_1
+         %76 = OpLoad %float %75
+         %77 = OpFAdd %float %74 %76
+         %78 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %78 %77
+               OpStore %i_0 %int_0
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %83 = OpLoad %int %i_0
+         %84 = OpSLessThan %bool %83 %int_3
+               OpBranchConditional %84 %85 %80
+         %85 = OpLabel
+         %86 = OpLoad %int %i_0
+         %87 = OpAccessChain %_ptr_Function_float %c %86
+         %88 = OpLoad %float %87
+         %89 = OpFOrdGreaterThanEqual %bool %88 %float_1
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+         %92 = OpLoad %int %i_0
+         %93 = OpLoad %int %i_0
+         %94 = OpAccessChain %_ptr_Function_float %c %93
+         %95 = OpLoad %float %94
+         %96 = OpLoad %int %i_0
+         %97 = OpAccessChain %_ptr_Function_float %c %96
+         %98 = OpLoad %float %97
+         %99 = OpFMul %float %95 %98
+        %100 = OpAccessChain %_ptr_Function_float %c %92
+               OpStore %100 %99
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+        %101 = OpLoad %int %i_0
+        %102 = OpIAdd %int %101 %int_1
+               OpStore %i_0 %102
+               OpBranch %79
+         %80 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+        %106 = OpLoad %float %105
+        %107 = OpFOrdLessThan %bool %104 %106
+               OpSelectionMerge %108 None
+               OpBranchConditional %107 %109 %110
+        %109 = OpLabel
+        %111 = OpLoad %v3float %c
+        %112 = OpExtInst %v3float %1 FAbs %111
+               OpStore %58 %112
+               OpBranch %108
+        %110 = OpLabel
+        %113 = OpLoad %v3float %c
+               OpStore %58 %113
+               OpBranch %108
+        %108 = OpLabel
+        %114 = OpLoad %v3float %58
+        %115 = OpExtInst %v3float %1 Normalize %114
+        %116 = OpCompositeExtract %float %115 0
+        %117 = OpCompositeExtract %float %115 1
+        %118 = OpCompositeExtract %float %115 2
+        %119 = OpCompositeConstruct %v4float %116 %117 %118 %float_1
+               OpStore %_GLF_color %119
+               OpReturn
+               OpFunctionEnd
+%compute_value_f1_f1_ = OpFunction %float None %25
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+        %120 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %121
+        %121 = OpLabel
+               OpLoopMerge %122 %123 None
+               OpBranch %124
+        %124 = OpLabel
+        %125 = OpLoad %int %i
+        %126 = OpSLessThan %bool %125 %int_800
+               OpBranchConditional %126 %127 %122
+        %127 = OpLabel
+        %128 = OpLoad %int %i
+        %129 = OpSMod %int %128 %int_32
+        %130 = OpIEqual %bool %129 %int_0
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %133
+        %132 = OpLabel
+        %134 = OpLoad %float %result
+        %135 = OpFAdd %float %134 %float_0_400000006
+               OpStore %result %135
+               OpBranch %131
+        %133 = OpLabel
+        %136 = OpLoad %int %i
+        %137 = OpConvertSToF %float %136
+        %138 = OpLoad %float %thirty_two
+        %139 = OpExtInst %float %1 Round %138
+        %140 = OpFMod %float %137 %139
+        %141 = OpFOrdLessThanEqual %bool %140 %float_0_00999999978
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %142
+        %143 = OpLabel
+        %144 = OpLoad %float %result
+        %145 = OpFAdd %float %144 %float_100
+               OpStore %result %145
+               OpBranch %142
+        %142 = OpLabel
+               OpBranch %131
+        %131 = OpLabel
+        %146 = OpLoad %int %i
+        %147 = OpConvertSToF %float %146
+        %148 = OpLoad %float %limit
+        %149 = OpFOrdGreaterThanEqual %bool %147 %148
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %152 = OpLoad %float %result
+               OpReturnValue %152
+        %150 = OpLabel
+               OpBranch %123
+        %123 = OpLabel
+        %153 = OpLoad %int %i
+        %154 = OpIAdd %int %153 %int_1
+               OpStore %i %154
+               OpBranch %121
+        %122 = OpLabel
+        %155 = OpLoad %float %result
+               OpReturnValue %155
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..91938cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.hlsl
@@ -0,0 +1,106 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+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);
+cbuffer cbuffer_x_20 : register(b1, space0) {
+  uint4 x_20[1];
+};
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  {
+    for(; (i < 800); i = (i + 1)) {
+      if (((i % 32) == 0)) {
+        result = (result + 0.400000006f);
+      } else {
+        const int x_136 = i;
+        const float x_138 = thirty_two;
+        if (((float(x_136) % round(x_138)) <= 0.01f)) {
+          result = (result + 100.0f);
+        }
+      }
+      const int x_146 = i;
+      const float x_148 = limit;
+      if ((float(x_146) >= x_148)) {
+        return result;
+      }
+    }
+  }
+  return result;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  float3 x_58 = float3(0.0f, 0.0f, 0.0f);
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_60 = asfloat(x_13[0].x);
+  thirty_two_1 = round((x_60 / 8.0f));
+  const float x_64 = gl_FragCoord.x;
+  param = x_64;
+  param_1 = thirty_two_1;
+  const float x_66 = compute_value_f1_f1_(param, param_1);
+  c.x = x_66;
+  const float x_69 = gl_FragCoord.y;
+  param_2 = x_69;
+  param_3 = thirty_two_1;
+  const float x_71 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_71;
+  const float x_74 = c.x;
+  const float x_76 = c.y;
+  c.z = (x_74 + x_76);
+  i_1 = 0;
+  {
+    for(; (i_1 < 3); i_1 = (i_1 + 1)) {
+      const float x_88 = c[i_1];
+      if ((x_88 >= 1.0f)) {
+        const int x_92 = i_1;
+        const float x_95 = c[i_1];
+        const float x_98 = c[i_1];
+        set_float3(c, x_92, (x_95 * x_98));
+      }
+    }
+  }
+  const float x_104 = asfloat(x_20[0].x);
+  const float x_106 = asfloat(x_20[0].y);
+  if ((x_104 < x_106)) {
+    x_58 = abs(c);
+  } else {
+    x_58 = c;
+  }
+  const float3 x_115 = normalize(x_58);
+  x_GLF_color = float4(x_115.x, x_115.y, x_115.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.msl
new file mode 100755
index 0000000..6f17012
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.msl
@@ -0,0 +1,135 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  while (true) {
+    int const x_125 = i;
+    if ((x_125 < 800)) {
+    } else {
+      break;
+    }
+    int const x_128 = i;
+    if (((x_128 % 32) == 0)) {
+      float const x_134 = result;
+      result = (x_134 + 0.400000006f);
+    } else {
+      int const x_136 = i;
+      float const x_138 = *(thirty_two);
+      if (((float(x_136) % rint(x_138)) <= 0.01f)) {
+        float const x_144 = result;
+        result = (x_144 + 100.0f);
+      }
+    }
+    int const x_146 = i;
+    float const x_148 = *(limit);
+    if ((float(x_146) >= x_148)) {
+      float const x_152 = result;
+      return x_152;
+    }
+    {
+      int const x_153 = i;
+      i = (x_153 + 1);
+    }
+  }
+  float const x_155 = result;
+  return x_155;
+}
+
+void main_1(constant buf0& x_13, constant buf1& x_20, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  float3 x_58 = 0.0f;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_60 = x_13.resolution.x;
+  thirty_two_1 = rint((x_60 / 8.0f));
+  float const x_64 = (*(tint_symbol_5)).x;
+  param = x_64;
+  float const x_65 = thirty_two_1;
+  param_1 = x_65;
+  float const x_66 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_66;
+  float const x_69 = (*(tint_symbol_5)).y;
+  param_2 = x_69;
+  float const x_70 = thirty_two_1;
+  param_3 = x_70;
+  float const x_71 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_71;
+  float const x_74 = c.x;
+  float const x_76 = c.y;
+  c.z = (x_74 + x_76);
+  i_1 = 0;
+  while (true) {
+    int const x_83 = i_1;
+    if ((x_83 < 3)) {
+    } else {
+      break;
+    }
+    int const x_86 = i_1;
+    float const x_88 = c[x_86];
+    if ((x_88 >= 1.0f)) {
+      int const x_92 = i_1;
+      int const x_93 = i_1;
+      float const x_95 = c[x_93];
+      int const x_96 = i_1;
+      float const x_98 = c[x_96];
+      c[x_92] = (x_95 * x_98);
+    }
+    {
+      int const x_101 = i_1;
+      i_1 = (x_101 + 1);
+    }
+  }
+  float const x_104 = x_20.injectionSwitch.x;
+  float const x_106 = x_20.injectionSwitch.y;
+  if ((x_104 < x_106)) {
+    float3 const x_111 = c;
+    x_58 = fabs(x_111);
+  } else {
+    float3 const x_113 = c;
+    x_58 = x_113;
+  }
+  float3 const x_114 = x_58;
+  float3 const x_115 = normalize(x_114);
+  *(tint_symbol_6) = float4(x_115.x, x_115.y, x_115.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]], constant buf1& x_20 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_13, x_20, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u8uo.0.metal:35:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_136) % rint(x_138)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..91ba40f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.spvasm
@@ -0,0 +1,295 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 186
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_20 "x_20"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %thirty_two_1 "thirty_two_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %i_1 "i_1"
+               OpName %x_58 "x_58"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_20 NonWritable
+               OpDecorate %x_20 DescriptorSet 0
+               OpDecorate %x_20 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_20 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %79 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %86 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %97 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %173 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %18
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %23 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function %25
+          %i = OpVariable %_ptr_Function_int Function %29
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %38 = OpSLessThan %bool %36 %int_800
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %33
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpSMod %int %43 %int_32
+         %47 = OpIEqual %bool %45 %int_0
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+         %51 = OpLoad %float %result
+         %53 = OpFAdd %float %51 %float_0_400000006
+               OpStore %result %53
+               OpBranch %48
+         %50 = OpLabel
+         %54 = OpLoad %int %i
+         %56 = OpLoad %float %thirty_two
+         %57 = OpConvertSToF %float %54
+         %58 = OpExtInst %float %59 RoundEven %56
+         %60 = OpFMod %float %57 %58
+         %62 = OpFOrdLessThanEqual %bool %60 %float_0_00999999978
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+         %65 = OpLoad %float %result
+         %67 = OpFAdd %float %65 %float_100
+               OpStore %result %67
+               OpBranch %63
+         %63 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+         %68 = OpLoad %int %i
+         %70 = OpLoad %float %limit
+         %71 = OpConvertSToF %float %68
+         %72 = OpFOrdGreaterThanEqual %bool %71 %70
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpLoad %float %result
+               OpReturnValue %75
+         %73 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+               OpBranch %32
+         %33 = OpLabel
+         %78 = OpLoad %float %result
+               OpReturnValue %78
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %79
+         %82 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %86
+%thirty_two_1 = OpVariable %_ptr_Function_float Function %25
+      %param = OpVariable %_ptr_Function_float Function %25
+    %param_1 = OpVariable %_ptr_Function_float Function %25
+    %param_2 = OpVariable %_ptr_Function_float Function %25
+    %param_3 = OpVariable %_ptr_Function_float Function %25
+        %i_1 = OpVariable %_ptr_Function_int Function %29
+       %x_58 = OpVariable %_ptr_Function_v3float Function %86
+               OpStore %c %97
+        %101 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+        %102 = OpLoad %float %101
+        %104 = OpFDiv %float %102 %float_8
+        %103 = OpExtInst %float %59 RoundEven %104
+               OpStore %thirty_two_1 %103
+        %106 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %107 = OpLoad %float %106
+               OpStore %param %107
+        %108 = OpLoad %float %thirty_two_1
+               OpStore %param_1 %108
+        %109 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %112 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %112 %109
+        %114 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %115 = OpLoad %float %114
+               OpStore %param_2 %115
+        %116 = OpLoad %float %thirty_two_1
+               OpStore %param_3 %116
+        %117 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %120 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %120 %117
+        %121 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %122 = OpLoad %float %121
+        %123 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %124 = OpLoad %float %123
+        %126 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %127 = OpFAdd %float %122 %124
+               OpStore %126 %127
+               OpStore %i_1 %int_0
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %132 = OpLoad %int %i_1
+        %134 = OpSLessThan %bool %132 %int_3
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %129
+        %135 = OpLabel
+        %138 = OpLoad %int %i_1
+        %139 = OpAccessChain %_ptr_Function_float %c %138
+        %140 = OpLoad %float %139
+        %142 = OpFOrdGreaterThanEqual %bool %140 %float_1
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %143
+        %144 = OpLabel
+        %145 = OpLoad %int %i_1
+        %146 = OpLoad %int %i_1
+        %147 = OpAccessChain %_ptr_Function_float %c %146
+        %148 = OpLoad %float %147
+        %149 = OpLoad %int %i_1
+        %150 = OpAccessChain %_ptr_Function_float %c %149
+        %151 = OpLoad %float %150
+        %152 = OpAccessChain %_ptr_Function_float %c %145
+        %153 = OpFMul %float %148 %151
+               OpStore %152 %153
+               OpBranch %143
+        %143 = OpLabel
+               OpBranch %130
+        %130 = OpLabel
+        %154 = OpLoad %int %i_1
+        %155 = OpIAdd %int %154 %int_1
+               OpStore %i_1 %155
+               OpBranch %128
+        %129 = OpLabel
+        %156 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0 %uint_0
+        %157 = OpLoad %float %156
+        %158 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0 %uint_1
+        %159 = OpLoad %float %158
+        %160 = OpFOrdLessThan %bool %157 %159
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+        %164 = OpLoad %v3float %c
+        %165 = OpExtInst %v3float %59 FAbs %164
+               OpStore %x_58 %165
+               OpBranch %161
+        %163 = OpLabel
+        %166 = OpLoad %v3float %c
+               OpStore %x_58 %166
+               OpBranch %161
+        %161 = OpLabel
+        %167 = OpLoad %v3float %x_58
+        %168 = OpExtInst %v3float %59 Normalize %167
+        %169 = OpCompositeExtract %float %168 0
+        %170 = OpCompositeExtract %float %168 1
+        %171 = OpCompositeExtract %float %168 2
+        %172 = OpCompositeConstruct %v4float %169 %170 %171 %float_1
+               OpStore %x_GLF_color %172
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %173
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %177 = OpLabel
+        %178 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %178
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %79
+        %180 = OpLabel
+        %181 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %181
+        %182 = OpFunctionCall %void %main_1
+        %184 = OpLoad %v4float %x_GLF_color
+        %185 = OpCompositeConstruct %main_out %184
+        %183 = OpFunctionCall %void %tint_symbol_3 %185
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..60de1ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.spvasm.expected.wgsl
@@ -0,0 +1,133 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_20 : buf1;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_125 : i32 = i;
+    if ((x_125 < 800)) {
+    } else {
+      break;
+    }
+    let x_128 : i32 = i;
+    if (((x_128 % 32) == 0)) {
+      let x_134 : f32 = result;
+      result = (x_134 + 0.400000006);
+    } else {
+      let x_136 : i32 = i;
+      let x_138 : f32 = *(thirty_two);
+      if (((f32(x_136) % round(x_138)) <= 0.01)) {
+        let x_144 : f32 = result;
+        result = (x_144 + 100.0);
+      }
+    }
+    let x_146 : i32 = i;
+    let x_148 : f32 = *(limit);
+    if ((f32(x_146) >= x_148)) {
+      let x_152 : f32 = result;
+      return x_152;
+    }
+
+    continuing {
+      let x_153 : i32 = i;
+      i = (x_153 + 1);
+    }
+  }
+  let x_155 : f32 = result;
+  return x_155;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var i_1 : i32;
+  var x_58 : vec3<f32>;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_60 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_60 / 8.0));
+  let x_64 : f32 = gl_FragCoord.x;
+  param = x_64;
+  let x_65 : f32 = thirty_two_1;
+  param_1 = x_65;
+  let x_66 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_66;
+  let x_69 : f32 = gl_FragCoord.y;
+  param_2 = x_69;
+  let x_70 : f32 = thirty_two_1;
+  param_3 = x_70;
+  let x_71 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_71;
+  let x_74 : f32 = c.x;
+  let x_76 : f32 = c.y;
+  c.z = (x_74 + x_76);
+  i_1 = 0;
+  loop {
+    let x_83 : i32 = i_1;
+    if ((x_83 < 3)) {
+    } else {
+      break;
+    }
+    let x_86 : i32 = i_1;
+    let x_88 : f32 = c[x_86];
+    if ((x_88 >= 1.0)) {
+      let x_92 : i32 = i_1;
+      let x_93 : i32 = i_1;
+      let x_95 : f32 = c[x_93];
+      let x_96 : i32 = i_1;
+      let x_98 : f32 = c[x_96];
+      c[x_92] = (x_95 * x_98);
+    }
+
+    continuing {
+      let x_101 : i32 = i_1;
+      i_1 = (x_101 + 1);
+    }
+  }
+  let x_104 : f32 = x_20.injectionSwitch.x;
+  let x_106 : f32 = x_20.injectionSwitch.y;
+  if ((x_104 < x_106)) {
+    let x_111 : vec3<f32> = c;
+    x_58 = abs(x_111);
+  } else {
+    let x_113 : vec3<f32> = c;
+    x_58 = x_113;
+  }
+  let x_114 : vec3<f32> = x_58;
+  let x_115 : vec3<f32> = normalize(x_114);
+  x_GLF_color = vec4<f32>(x_115.x, x_115.y, x_115.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
new file mode 100644
index 0000000..60de1ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
@@ -0,0 +1,133 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_20 : buf1;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_125 : i32 = i;
+    if ((x_125 < 800)) {
+    } else {
+      break;
+    }
+    let x_128 : i32 = i;
+    if (((x_128 % 32) == 0)) {
+      let x_134 : f32 = result;
+      result = (x_134 + 0.400000006);
+    } else {
+      let x_136 : i32 = i;
+      let x_138 : f32 = *(thirty_two);
+      if (((f32(x_136) % round(x_138)) <= 0.01)) {
+        let x_144 : f32 = result;
+        result = (x_144 + 100.0);
+      }
+    }
+    let x_146 : i32 = i;
+    let x_148 : f32 = *(limit);
+    if ((f32(x_146) >= x_148)) {
+      let x_152 : f32 = result;
+      return x_152;
+    }
+
+    continuing {
+      let x_153 : i32 = i;
+      i = (x_153 + 1);
+    }
+  }
+  let x_155 : f32 = result;
+  return x_155;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var i_1 : i32;
+  var x_58 : vec3<f32>;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_60 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_60 / 8.0));
+  let x_64 : f32 = gl_FragCoord.x;
+  param = x_64;
+  let x_65 : f32 = thirty_two_1;
+  param_1 = x_65;
+  let x_66 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_66;
+  let x_69 : f32 = gl_FragCoord.y;
+  param_2 = x_69;
+  let x_70 : f32 = thirty_two_1;
+  param_3 = x_70;
+  let x_71 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_71;
+  let x_74 : f32 = c.x;
+  let x_76 : f32 = c.y;
+  c.z = (x_74 + x_76);
+  i_1 = 0;
+  loop {
+    let x_83 : i32 = i_1;
+    if ((x_83 < 3)) {
+    } else {
+      break;
+    }
+    let x_86 : i32 = i_1;
+    let x_88 : f32 = c[x_86];
+    if ((x_88 >= 1.0)) {
+      let x_92 : i32 = i_1;
+      let x_93 : i32 = i_1;
+      let x_95 : f32 = c[x_93];
+      let x_96 : i32 = i_1;
+      let x_98 : f32 = c[x_96];
+      c[x_92] = (x_95 * x_98);
+    }
+
+    continuing {
+      let x_101 : i32 = i_1;
+      i_1 = (x_101 + 1);
+    }
+  }
+  let x_104 : f32 = x_20.injectionSwitch.x;
+  let x_106 : f32 = x_20.injectionSwitch.y;
+  if ((x_104 < x_106)) {
+    let x_111 : vec3<f32> = c;
+    x_58 = abs(x_111);
+  } else {
+    let x_113 : vec3<f32> = c;
+    x_58 = x_113;
+  }
+  let x_114 : vec3<f32> = x_58;
+  let x_115 : vec3<f32> = normalize(x_114);
+  x_GLF_color = vec4<f32>(x_115.x, x_115.y, x_115.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..91938cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.hlsl
@@ -0,0 +1,106 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+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);
+cbuffer cbuffer_x_20 : register(b1, space0) {
+  uint4 x_20[1];
+};
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  {
+    for(; (i < 800); i = (i + 1)) {
+      if (((i % 32) == 0)) {
+        result = (result + 0.400000006f);
+      } else {
+        const int x_136 = i;
+        const float x_138 = thirty_two;
+        if (((float(x_136) % round(x_138)) <= 0.01f)) {
+          result = (result + 100.0f);
+        }
+      }
+      const int x_146 = i;
+      const float x_148 = limit;
+      if ((float(x_146) >= x_148)) {
+        return result;
+      }
+    }
+  }
+  return result;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  float3 x_58 = float3(0.0f, 0.0f, 0.0f);
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_60 = asfloat(x_13[0].x);
+  thirty_two_1 = round((x_60 / 8.0f));
+  const float x_64 = gl_FragCoord.x;
+  param = x_64;
+  param_1 = thirty_two_1;
+  const float x_66 = compute_value_f1_f1_(param, param_1);
+  c.x = x_66;
+  const float x_69 = gl_FragCoord.y;
+  param_2 = x_69;
+  param_3 = thirty_two_1;
+  const float x_71 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_71;
+  const float x_74 = c.x;
+  const float x_76 = c.y;
+  c.z = (x_74 + x_76);
+  i_1 = 0;
+  {
+    for(; (i_1 < 3); i_1 = (i_1 + 1)) {
+      const float x_88 = c[i_1];
+      if ((x_88 >= 1.0f)) {
+        const int x_92 = i_1;
+        const float x_95 = c[i_1];
+        const float x_98 = c[i_1];
+        set_float3(c, x_92, (x_95 * x_98));
+      }
+    }
+  }
+  const float x_104 = asfloat(x_20[0].x);
+  const float x_106 = asfloat(x_20[0].y);
+  if ((x_104 < x_106)) {
+    x_58 = abs(c);
+  } else {
+    x_58 = c;
+  }
+  const float3 x_115 = normalize(x_58);
+  x_GLF_color = float4(x_115.x, x_115.y, x_115.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.msl
new file mode 100755
index 0000000..d03ce1e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.msl
@@ -0,0 +1,135 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  while (true) {
+    int const x_125 = i;
+    if ((x_125 < 800)) {
+    } else {
+      break;
+    }
+    int const x_128 = i;
+    if (((x_128 % 32) == 0)) {
+      float const x_134 = result;
+      result = (x_134 + 0.400000006f);
+    } else {
+      int const x_136 = i;
+      float const x_138 = *(thirty_two);
+      if (((float(x_136) % rint(x_138)) <= 0.01f)) {
+        float const x_144 = result;
+        result = (x_144 + 100.0f);
+      }
+    }
+    int const x_146 = i;
+    float const x_148 = *(limit);
+    if ((float(x_146) >= x_148)) {
+      float const x_152 = result;
+      return x_152;
+    }
+    {
+      int const x_153 = i;
+      i = (x_153 + 1);
+    }
+  }
+  float const x_155 = result;
+  return x_155;
+}
+
+void main_1(constant buf0& x_13, constant buf1& x_20, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  float3 x_58 = 0.0f;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_60 = x_13.resolution.x;
+  thirty_two_1 = rint((x_60 / 8.0f));
+  float const x_64 = (*(tint_symbol_5)).x;
+  param = x_64;
+  float const x_65 = thirty_two_1;
+  param_1 = x_65;
+  float const x_66 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_66;
+  float const x_69 = (*(tint_symbol_5)).y;
+  param_2 = x_69;
+  float const x_70 = thirty_two_1;
+  param_3 = x_70;
+  float const x_71 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_71;
+  float const x_74 = c.x;
+  float const x_76 = c.y;
+  c.z = (x_74 + x_76);
+  i_1 = 0;
+  while (true) {
+    int const x_83 = i_1;
+    if ((x_83 < 3)) {
+    } else {
+      break;
+    }
+    int const x_86 = i_1;
+    float const x_88 = c[x_86];
+    if ((x_88 >= 1.0f)) {
+      int const x_92 = i_1;
+      int const x_93 = i_1;
+      float const x_95 = c[x_93];
+      int const x_96 = i_1;
+      float const x_98 = c[x_96];
+      c[x_92] = (x_95 * x_98);
+    }
+    {
+      int const x_101 = i_1;
+      i_1 = (x_101 + 1);
+    }
+  }
+  float const x_104 = x_20.injectionSwitch.x;
+  float const x_106 = x_20.injectionSwitch.y;
+  if ((x_104 < x_106)) {
+    float3 const x_111 = c;
+    x_58 = fabs(x_111);
+  } else {
+    float3 const x_113 = c;
+    x_58 = x_113;
+  }
+  float3 const x_114 = x_58;
+  float3 const x_115 = normalize(x_114);
+  *(tint_symbol_6) = float4(x_115.x, x_115.y, x_115.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]], constant buf1& x_20 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_13, x_20, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\uf2s.0.metal:35:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_136) % rint(x_138)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..91ba40f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.spvasm
@@ -0,0 +1,295 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 186
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_20 "x_20"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %thirty_two_1 "thirty_two_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %i_1 "i_1"
+               OpName %x_58 "x_58"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_20 NonWritable
+               OpDecorate %x_20 DescriptorSet 0
+               OpDecorate %x_20 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_20 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %79 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %86 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %97 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %173 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %18
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %23 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function %25
+          %i = OpVariable %_ptr_Function_int Function %29
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %38 = OpSLessThan %bool %36 %int_800
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %33
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpSMod %int %43 %int_32
+         %47 = OpIEqual %bool %45 %int_0
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+         %51 = OpLoad %float %result
+         %53 = OpFAdd %float %51 %float_0_400000006
+               OpStore %result %53
+               OpBranch %48
+         %50 = OpLabel
+         %54 = OpLoad %int %i
+         %56 = OpLoad %float %thirty_two
+         %57 = OpConvertSToF %float %54
+         %58 = OpExtInst %float %59 RoundEven %56
+         %60 = OpFMod %float %57 %58
+         %62 = OpFOrdLessThanEqual %bool %60 %float_0_00999999978
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+         %65 = OpLoad %float %result
+         %67 = OpFAdd %float %65 %float_100
+               OpStore %result %67
+               OpBranch %63
+         %63 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+         %68 = OpLoad %int %i
+         %70 = OpLoad %float %limit
+         %71 = OpConvertSToF %float %68
+         %72 = OpFOrdGreaterThanEqual %bool %71 %70
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpLoad %float %result
+               OpReturnValue %75
+         %73 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+               OpBranch %32
+         %33 = OpLabel
+         %78 = OpLoad %float %result
+               OpReturnValue %78
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %79
+         %82 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %86
+%thirty_two_1 = OpVariable %_ptr_Function_float Function %25
+      %param = OpVariable %_ptr_Function_float Function %25
+    %param_1 = OpVariable %_ptr_Function_float Function %25
+    %param_2 = OpVariable %_ptr_Function_float Function %25
+    %param_3 = OpVariable %_ptr_Function_float Function %25
+        %i_1 = OpVariable %_ptr_Function_int Function %29
+       %x_58 = OpVariable %_ptr_Function_v3float Function %86
+               OpStore %c %97
+        %101 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+        %102 = OpLoad %float %101
+        %104 = OpFDiv %float %102 %float_8
+        %103 = OpExtInst %float %59 RoundEven %104
+               OpStore %thirty_two_1 %103
+        %106 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %107 = OpLoad %float %106
+               OpStore %param %107
+        %108 = OpLoad %float %thirty_two_1
+               OpStore %param_1 %108
+        %109 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %112 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %112 %109
+        %114 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %115 = OpLoad %float %114
+               OpStore %param_2 %115
+        %116 = OpLoad %float %thirty_two_1
+               OpStore %param_3 %116
+        %117 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %120 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %120 %117
+        %121 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %122 = OpLoad %float %121
+        %123 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %124 = OpLoad %float %123
+        %126 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %127 = OpFAdd %float %122 %124
+               OpStore %126 %127
+               OpStore %i_1 %int_0
+               OpBranch %128
+        %128 = OpLabel
+               OpLoopMerge %129 %130 None
+               OpBranch %131
+        %131 = OpLabel
+        %132 = OpLoad %int %i_1
+        %134 = OpSLessThan %bool %132 %int_3
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %137
+        %136 = OpLabel
+               OpBranch %135
+        %137 = OpLabel
+               OpBranch %129
+        %135 = OpLabel
+        %138 = OpLoad %int %i_1
+        %139 = OpAccessChain %_ptr_Function_float %c %138
+        %140 = OpLoad %float %139
+        %142 = OpFOrdGreaterThanEqual %bool %140 %float_1
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %143
+        %144 = OpLabel
+        %145 = OpLoad %int %i_1
+        %146 = OpLoad %int %i_1
+        %147 = OpAccessChain %_ptr_Function_float %c %146
+        %148 = OpLoad %float %147
+        %149 = OpLoad %int %i_1
+        %150 = OpAccessChain %_ptr_Function_float %c %149
+        %151 = OpLoad %float %150
+        %152 = OpAccessChain %_ptr_Function_float %c %145
+        %153 = OpFMul %float %148 %151
+               OpStore %152 %153
+               OpBranch %143
+        %143 = OpLabel
+               OpBranch %130
+        %130 = OpLabel
+        %154 = OpLoad %int %i_1
+        %155 = OpIAdd %int %154 %int_1
+               OpStore %i_1 %155
+               OpBranch %128
+        %129 = OpLabel
+        %156 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0 %uint_0
+        %157 = OpLoad %float %156
+        %158 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0 %uint_1
+        %159 = OpLoad %float %158
+        %160 = OpFOrdLessThan %bool %157 %159
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %163
+        %162 = OpLabel
+        %164 = OpLoad %v3float %c
+        %165 = OpExtInst %v3float %59 FAbs %164
+               OpStore %x_58 %165
+               OpBranch %161
+        %163 = OpLabel
+        %166 = OpLoad %v3float %c
+               OpStore %x_58 %166
+               OpBranch %161
+        %161 = OpLabel
+        %167 = OpLoad %v3float %x_58
+        %168 = OpExtInst %v3float %59 Normalize %167
+        %169 = OpCompositeExtract %float %168 0
+        %170 = OpCompositeExtract %float %168 1
+        %171 = OpCompositeExtract %float %168 2
+        %172 = OpCompositeConstruct %v4float %169 %170 %171 %float_1
+               OpStore %x_GLF_color %172
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %173
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %177 = OpLabel
+        %178 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %178
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %79
+        %180 = OpLabel
+        %181 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %181
+        %182 = OpFunctionCall %void %main_1
+        %184 = OpLoad %v4float %x_GLF_color
+        %185 = OpCompositeConstruct %main_out %184
+        %183 = OpFunctionCall %void %tint_symbol_3 %185
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..60de1ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl.expected.wgsl
@@ -0,0 +1,133 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_20 : buf1;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_125 : i32 = i;
+    if ((x_125 < 800)) {
+    } else {
+      break;
+    }
+    let x_128 : i32 = i;
+    if (((x_128 % 32) == 0)) {
+      let x_134 : f32 = result;
+      result = (x_134 + 0.400000006);
+    } else {
+      let x_136 : i32 = i;
+      let x_138 : f32 = *(thirty_two);
+      if (((f32(x_136) % round(x_138)) <= 0.01)) {
+        let x_144 : f32 = result;
+        result = (x_144 + 100.0);
+      }
+    }
+    let x_146 : i32 = i;
+    let x_148 : f32 = *(limit);
+    if ((f32(x_146) >= x_148)) {
+      let x_152 : f32 = result;
+      return x_152;
+    }
+
+    continuing {
+      let x_153 : i32 = i;
+      i = (x_153 + 1);
+    }
+  }
+  let x_155 : f32 = result;
+  return x_155;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var i_1 : i32;
+  var x_58 : vec3<f32>;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_60 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_60 / 8.0));
+  let x_64 : f32 = gl_FragCoord.x;
+  param = x_64;
+  let x_65 : f32 = thirty_two_1;
+  param_1 = x_65;
+  let x_66 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_66;
+  let x_69 : f32 = gl_FragCoord.y;
+  param_2 = x_69;
+  let x_70 : f32 = thirty_two_1;
+  param_3 = x_70;
+  let x_71 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_71;
+  let x_74 : f32 = c.x;
+  let x_76 : f32 = c.y;
+  c.z = (x_74 + x_76);
+  i_1 = 0;
+  loop {
+    let x_83 : i32 = i_1;
+    if ((x_83 < 3)) {
+    } else {
+      break;
+    }
+    let x_86 : i32 = i_1;
+    let x_88 : f32 = c[x_86];
+    if ((x_88 >= 1.0)) {
+      let x_92 : i32 = i_1;
+      let x_93 : i32 = i_1;
+      let x_95 : f32 = c[x_93];
+      let x_96 : i32 = i_1;
+      let x_98 : f32 = c[x_96];
+      c[x_92] = (x_95 * x_98);
+    }
+
+    continuing {
+      let x_101 : i32 = i_1;
+      i_1 = (x_101 + 1);
+    }
+  }
+  let x_104 : f32 = x_20.injectionSwitch.x;
+  let x_106 : f32 = x_20.injectionSwitch.y;
+  if ((x_104 < x_106)) {
+    let x_111 : vec3<f32> = c;
+    x_58 = abs(x_111);
+  } else {
+    let x_113 : vec3<f32> = c;
+    x_58 = x_113;
+  }
+  let x_114 : vec3<f32> = x_58;
+  let x_115 : vec3<f32> = normalize(x_114);
+  x_GLF_color = vec4<f32>(x_115.x, x_115.y, x_115.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm
new file mode 100644
index 0000000..b936413
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm
@@ -0,0 +1,180 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %compute_value_f1_f1_ "compute_value(f1;f1;"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %c "c"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %19 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %35 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%float_0_125 = OpConstant %float 0.125
+       %main = OpFunction %void None %16
+         %50 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_float Function
+    %param_2 = OpVariable %_ptr_Function_float Function
+               OpStore %c %35
+         %51 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %52 = OpLoad %float %51
+         %53 = OpFMul %float %52 %float_0_125
+         %54 = OpExtInst %float %1 Round %53
+         %55 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %56 = OpLoad %float %55
+               OpStore %param %56
+               OpStore %param_0 %54
+         %57 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_0
+         %58 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %58 %57
+         %59 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %60 = OpLoad %float %59
+               OpStore %param_1 %60
+               OpStore %param_2 %54
+         %61 = OpFunctionCall %float %compute_value_f1_f1_ %param_1 %param_2
+         %62 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %62 %61
+         %63 = OpLoad %float %58
+         %64 = OpLoad %float %62
+         %65 = OpFAdd %float %63 %64
+         %66 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %66 %65
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpPhi %int %int_0 %50 %69 %70
+         %71 = OpSLessThan %bool %68 %int_3
+               OpLoopMerge %72 %70 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+         %74 = OpAccessChain %_ptr_Function_float %c %68
+         %75 = OpLoad %float %74
+         %76 = OpFOrdGreaterThanEqual %bool %75 %float_1
+               OpSelectionMerge %77 None
+               OpBranchConditional %76 %78 %77
+         %78 = OpLabel
+         %79 = OpLoad %float %74
+         %80 = OpLoad %float %74
+         %81 = OpFMul %float %79 %80
+               OpStore %74 %81
+               OpBranch %77
+         %77 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+         %69 = OpIAdd %int %68 %int_1
+               OpBranch %67
+         %72 = OpLabel
+         %82 = OpLoad %v3float %c
+         %83 = OpExtInst %v3float %1 FAbs %82
+         %84 = OpExtInst %v3float %1 Normalize %83
+         %85 = OpCompositeExtract %float %84 0
+         %86 = OpCompositeExtract %float %84 1
+         %87 = OpCompositeExtract %float %84 2
+         %88 = OpCompositeConstruct %v4float %85 %86 %87 %float_1
+               OpStore %_GLF_color %88
+               OpReturn
+               OpFunctionEnd
+%compute_value_f1_f1_ = OpFunction %float None %19
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %89 = OpLabel
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpPhi %float %float_n0_5 %89 %92 %93
+         %94 = OpPhi %int %int_1 %89 %95 %93
+         %96 = OpSLessThan %bool %94 %int_800
+               OpLoopMerge %97 %93 None
+               OpBranchConditional %96 %98 %97
+         %98 = OpLabel
+         %99 = OpSMod %int %94 %int_32
+        %100 = OpIEqual %bool %99 %int_0
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %103
+        %102 = OpLabel
+        %104 = OpFAdd %float %91 %float_0_400000006
+               OpBranch %101
+        %103 = OpLabel
+        %105 = OpConvertSToF %float %94
+        %106 = OpLoad %float %thirty_two
+        %107 = OpExtInst %float %1 Round %106
+        %108 = OpFMod %float %105 %107
+        %109 = OpFOrdLessThanEqual %bool %108 %float_0_00999999978
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpFAdd %float %91 %float_100
+               OpBranch %110
+        %110 = OpLabel
+        %113 = OpPhi %float %91 %103 %112 %111
+               OpBranch %101
+        %101 = OpLabel
+         %92 = OpPhi %float %104 %102 %113 %110
+        %114 = OpConvertSToF %float %94
+        %115 = OpLoad %float %limit
+        %116 = OpFOrdGreaterThanEqual %bool %114 %115
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %117
+        %118 = OpLabel
+               OpReturnValue %92
+        %117 = OpLabel
+               OpBranch %93
+         %93 = OpLabel
+         %95 = OpIAdd %int %94 %int_1
+               OpBranch %90
+         %97 = OpLabel
+               OpReturnValue %91
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..125f7d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,123 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+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);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float x_91 = 0.0f;
+  float x_91_phi = 0.0f;
+  int x_94_phi = 0;
+  x_91_phi = -0.5f;
+  x_94_phi = 1;
+  while (true) {
+    float x_104 = 0.0f;
+    float x_113 = 0.0f;
+    int x_95 = 0;
+    float x_92_phi = 0.0f;
+    x_91 = x_91_phi;
+    const int x_94 = x_94_phi;
+    if ((x_94 < 800)) {
+    } else {
+      break;
+    }
+    float x_112 = 0.0f;
+    float x_113_phi = 0.0f;
+    if (((x_94 % 32) == 0)) {
+      x_104 = (x_91 + 0.400000006f);
+      x_92_phi = x_104;
+    } else {
+      const float x_106 = thirty_two;
+      x_113_phi = x_91;
+      if (((float(x_94) % round(x_106)) <= 0.01f)) {
+        x_112 = (x_91 + 100.0f);
+        x_113_phi = x_112;
+      }
+      x_113 = x_113_phi;
+      x_92_phi = x_113;
+    }
+    float x_92 = 0.0f;
+    x_92 = x_92_phi;
+    const float x_115 = limit;
+    if ((float(x_94) >= x_115)) {
+      return x_92;
+    }
+    {
+      x_95 = (x_94 + 1);
+      x_91_phi = x_92;
+      x_94_phi = x_95;
+    }
+  }
+  return x_91;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int x_68_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_52 = asfloat(x_10[0].x);
+  const float x_54 = round((x_52 * 0.125f));
+  const float x_56 = gl_FragCoord.x;
+  param = x_56;
+  param_1 = x_54;
+  const float x_57 = compute_value_f1_f1_(param, param_1);
+  c.x = x_57;
+  const float x_60 = gl_FragCoord.y;
+  param_2 = x_60;
+  param_3 = x_54;
+  const float x_61 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_61;
+  const float x_63 = c.x;
+  const float x_64 = c.y;
+  c.z = (x_63 + x_64);
+  x_68_phi = 0;
+  while (true) {
+    int x_69 = 0;
+    const int x_68 = x_68_phi;
+    if ((x_68 < 3)) {
+    } else {
+      break;
+    }
+    const int x_74_save = x_68;
+    const float x_75 = c[x_74_save];
+    if ((x_75 >= 1.0f)) {
+      const float x_79 = c[x_74_save];
+      const float x_80 = c[x_74_save];
+      set_float3(c, x_74_save, (x_79 * x_80));
+    }
+    {
+      x_69 = (x_68 + 1);
+      x_68_phi = x_69;
+    }
+  }
+  const float3 x_84 = normalize(abs(c));
+  x_GLF_color = float4(x_84.x, x_84.y, x_84.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.msl
new file mode 100755
index 0000000..798c221
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.msl
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float x_91 = 0.0f;
+  float x_91_phi = 0.0f;
+  int x_94_phi = 0;
+  x_91_phi = -0.5f;
+  x_94_phi = 1;
+  while (true) {
+    float x_104 = 0.0f;
+    float x_113 = 0.0f;
+    int x_95 = 0;
+    float x_92_phi = 0.0f;
+    x_91 = x_91_phi;
+    int const x_94 = x_94_phi;
+    if ((x_94 < 800)) {
+    } else {
+      break;
+    }
+    float x_112 = 0.0f;
+    float x_113_phi = 0.0f;
+    if (((x_94 % 32) == 0)) {
+      x_104 = (x_91 + 0.400000006f);
+      x_92_phi = x_104;
+    } else {
+      float const x_106 = *(thirty_two);
+      x_113_phi = x_91;
+      if (((float(x_94) % rint(x_106)) <= 0.01f)) {
+        x_112 = (x_91 + 100.0f);
+        x_113_phi = x_112;
+      }
+      x_113 = x_113_phi;
+      x_92_phi = x_113;
+    }
+    float x_92 = 0.0f;
+    x_92 = x_92_phi;
+    float const x_115 = *(limit);
+    if ((float(x_94) >= x_115)) {
+      return x_92;
+    }
+    {
+      x_95 = (x_94 + 1);
+      x_91_phi = x_92;
+      x_94_phi = x_95;
+    }
+  }
+  return x_91;
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int x_68_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_52 = x_10.resolution.x;
+  float const x_54 = rint((x_52 * 0.125f));
+  float const x_56 = (*(tint_symbol_5)).x;
+  param = x_56;
+  param_1 = x_54;
+  float const x_57 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_57;
+  float const x_60 = (*(tint_symbol_5)).y;
+  param_2 = x_60;
+  param_3 = x_54;
+  float const x_61 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_61;
+  float const x_63 = c.x;
+  float const x_64 = c.y;
+  c.z = (x_63 + x_64);
+  x_68_phi = 0;
+  while (true) {
+    int x_69 = 0;
+    int const x_68 = x_68_phi;
+    if ((x_68 < 3)) {
+    } else {
+      break;
+    }
+    int const x_74_save = x_68;
+    float const x_75 = c[x_74_save];
+    if ((x_75 >= 1.0f)) {
+      float const x_79 = c[x_74_save];
+      float const x_80 = c[x_74_save];
+      c[x_74_save] = (x_79 * x_80);
+    }
+    {
+      x_69 = (x_68 + 1);
+      x_68_phi = x_69;
+    }
+  }
+  float3 const x_82 = c;
+  float3 const x_84 = normalize(fabs(x_82));
+  *(tint_symbol_6) = float4(x_84.x, x_84.y, x_84.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_10, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u26w.0.metal:39:25: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_94) % rint(x_106)) <= 0.01f)) {
+            ~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..42303b9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,291 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 180
+; Schema: 0
+               OpCapability Shader
+         %64 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %x_91 "x_91"
+               OpName %x_91_phi "x_91_phi"
+               OpName %x_94_phi "x_94_phi"
+               OpName %x_104 "x_104"
+               OpName %x_113 "x_113"
+               OpName %x_95 "x_95"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_112 "x_112"
+               OpName %x_113_phi "x_113_phi"
+               OpName %x_92 "x_92"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %x_68_phi "x_68_phi"
+               OpName %x_69 "x_69"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %22 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %89 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %96 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+        %105 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %167 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %15
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %20 = OpLabel
+       %x_91 = OpVariable %_ptr_Function_float Function %22
+   %x_91_phi = OpVariable %_ptr_Function_float Function %22
+   %x_94_phi = OpVariable %_ptr_Function_int Function %27
+      %x_104 = OpVariable %_ptr_Function_float Function %22
+      %x_113 = OpVariable %_ptr_Function_float Function %22
+       %x_95 = OpVariable %_ptr_Function_int Function %27
+   %x_92_phi = OpVariable %_ptr_Function_float Function %22
+      %x_112 = OpVariable %_ptr_Function_float Function %22
+  %x_113_phi = OpVariable %_ptr_Function_float Function %22
+       %x_92 = OpVariable %_ptr_Function_float Function %22
+               OpStore %x_91_phi %float_n0_5
+               OpStore %x_94_phi %int_1
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %38 = OpLoad %float %x_91_phi
+               OpStore %x_91 %38
+         %39 = OpLoad %int %x_94_phi
+         %41 = OpSLessThan %bool %39 %int_800
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %31
+         %43 = OpLabel
+         %49 = OpSMod %int %39 %int_32
+         %51 = OpIEqual %bool %49 %int_0
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+         %55 = OpLoad %float %x_91
+         %57 = OpFAdd %float %55 %float_0_400000006
+               OpStore %x_104 %57
+         %58 = OpLoad %float %x_104
+               OpStore %x_92_phi %58
+               OpBranch %52
+         %54 = OpLabel
+         %60 = OpLoad %float %thirty_two
+         %61 = OpLoad %float %x_91
+               OpStore %x_113_phi %61
+         %62 = OpConvertSToF %float %39
+         %63 = OpExtInst %float %64 RoundEven %60
+         %65 = OpFMod %float %62 %63
+         %67 = OpFOrdLessThanEqual %bool %65 %float_0_00999999978
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpLoad %float %x_91
+         %72 = OpFAdd %float %70 %float_100
+               OpStore %x_112 %72
+         %73 = OpLoad %float %x_112
+               OpStore %x_113_phi %73
+               OpBranch %68
+         %68 = OpLabel
+         %74 = OpLoad %float %x_113_phi
+               OpStore %x_113 %74
+         %75 = OpLoad %float %x_113
+               OpStore %x_92_phi %75
+               OpBranch %52
+         %52 = OpLabel
+         %77 = OpLoad %float %x_92_phi
+               OpStore %x_92 %77
+         %79 = OpLoad %float %limit
+         %80 = OpConvertSToF %float %39
+         %81 = OpFOrdGreaterThanEqual %bool %80 %79
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+         %84 = OpLoad %float %x_92
+               OpReturnValue %84
+         %82 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %85 = OpIAdd %int %39 %int_1
+               OpStore %x_95 %85
+         %86 = OpLoad %float %x_92
+               OpStore %x_91_phi %86
+         %87 = OpLoad %int %x_95
+               OpStore %x_94_phi %87
+               OpBranch %30
+         %31 = OpLabel
+         %88 = OpLoad %float %x_91
+               OpReturnValue %88
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %89
+         %92 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %96
+      %param = OpVariable %_ptr_Function_float Function %22
+    %param_1 = OpVariable %_ptr_Function_float Function %22
+    %param_2 = OpVariable %_ptr_Function_float Function %22
+    %param_3 = OpVariable %_ptr_Function_float Function %22
+   %x_68_phi = OpVariable %_ptr_Function_int Function %27
+       %x_69 = OpVariable %_ptr_Function_int Function %27
+               OpStore %c %105
+        %109 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %110 = OpLoad %float %109
+        %113 = OpFMul %float %110 %float_0_125
+        %111 = OpExtInst %float %64 RoundEven %113
+        %115 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %116 = OpLoad %float %115
+               OpStore %param %116
+               OpStore %param_1 %111
+        %117 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %120 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %120 %117
+        %122 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %123 = OpLoad %float %122
+               OpStore %param_2 %123
+               OpStore %param_3 %111
+        %124 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %127 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %127 %124
+        %128 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %129 = OpLoad %float %128
+        %130 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %131 = OpLoad %float %130
+        %133 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %134 = OpFAdd %float %129 %131
+               OpStore %133 %134
+               OpStore %x_68_phi %int_0
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %140 = OpLoad %int %x_68_phi
+        %142 = OpSLessThan %bool %140 %int_3
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %145
+        %144 = OpLabel
+               OpBranch %143
+        %145 = OpLabel
+               OpBranch %136
+        %143 = OpLabel
+        %146 = OpAccessChain %_ptr_Function_float %c %140
+        %147 = OpLoad %float %146
+        %149 = OpFOrdGreaterThanEqual %bool %147 %float_1
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %152 = OpAccessChain %_ptr_Function_float %c %140
+        %153 = OpLoad %float %152
+        %154 = OpAccessChain %_ptr_Function_float %c %140
+        %155 = OpLoad %float %154
+        %156 = OpAccessChain %_ptr_Function_float %c %140
+        %157 = OpFMul %float %153 %155
+               OpStore %156 %157
+               OpBranch %150
+        %150 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %158 = OpIAdd %int %140 %int_1
+               OpStore %x_69 %158
+        %159 = OpLoad %int %x_69
+               OpStore %x_68_phi %159
+               OpBranch %135
+        %136 = OpLabel
+        %160 = OpLoad %v3float %c
+        %162 = OpExtInst %v3float %64 FAbs %160
+        %161 = OpExtInst %v3float %64 Normalize %162
+        %163 = OpCompositeExtract %float %161 0
+        %164 = OpCompositeExtract %float %161 1
+        %165 = OpCompositeExtract %float %161 2
+        %166 = OpCompositeConstruct %v4float %163 %164 %165 %float_1
+               OpStore %x_GLF_color %166
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %167
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %171 = OpLabel
+        %172 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %172
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %89
+        %174 = OpLabel
+        %175 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %175
+        %176 = OpFunctionCall %void %main_1
+        %178 = OpLoad %v4float %x_GLF_color
+        %179 = OpCompositeConstruct %main_out %178
+        %177 = OpFunctionCall %void %tint_symbol_3 %179
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ba37d91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,122 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var x_91 : f32;
+  var x_91_phi : f32;
+  var x_94_phi : i32;
+  x_91_phi = -0.5;
+  x_94_phi = 1;
+  loop {
+    var x_104 : f32;
+    var x_113 : f32;
+    var x_95 : i32;
+    var x_92_phi : f32;
+    x_91 = x_91_phi;
+    let x_94 : i32 = x_94_phi;
+    if ((x_94 < 800)) {
+    } else {
+      break;
+    }
+    var x_112 : f32;
+    var x_113_phi : f32;
+    if (((x_94 % 32) == 0)) {
+      x_104 = (x_91 + 0.400000006);
+      x_92_phi = x_104;
+    } else {
+      let x_106 : f32 = *(thirty_two);
+      x_113_phi = x_91;
+      if (((f32(x_94) % round(x_106)) <= 0.01)) {
+        x_112 = (x_91 + 100.0);
+        x_113_phi = x_112;
+      }
+      x_113 = x_113_phi;
+      x_92_phi = x_113;
+    }
+    var x_92 : f32;
+    x_92 = x_92_phi;
+    let x_115 : f32 = *(limit);
+    if ((f32(x_94) >= x_115)) {
+      return x_92;
+    }
+
+    continuing {
+      x_95 = (x_94 + 1);
+      x_91_phi = x_92;
+      x_94_phi = x_95;
+    }
+  }
+  return x_91;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var x_68_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_52 : f32 = x_10.resolution.x;
+  let x_54 : f32 = round((x_52 * 0.125));
+  let x_56 : f32 = gl_FragCoord.x;
+  param = x_56;
+  param_1 = x_54;
+  let x_57 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  let x_58 : ptr<function, f32> = &(c.x);
+  *(x_58) = x_57;
+  let x_60 : f32 = gl_FragCoord.y;
+  param_2 = x_60;
+  param_3 = x_54;
+  let x_61 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  let x_62 : ptr<function, f32> = &(c.y);
+  *(x_62) = x_61;
+  let x_63 : f32 = *(x_58);
+  let x_64 : f32 = *(x_62);
+  c.z = (x_63 + x_64);
+  x_68_phi = 0;
+  loop {
+    var x_69 : i32;
+    let x_68 : i32 = x_68_phi;
+    if ((x_68 < 3)) {
+    } else {
+      break;
+    }
+    let x_74 : ptr<function, f32> = &(c[x_68]);
+    let x_75 : f32 = *(x_74);
+    if ((x_75 >= 1.0)) {
+      let x_79 : f32 = *(x_74);
+      let x_80 : f32 = *(x_74);
+      *(x_74) = (x_79 * x_80);
+    }
+
+    continuing {
+      x_69 = (x_68 + 1);
+      x_68_phi = x_69;
+    }
+  }
+  let x_82 : vec3<f32> = c;
+  let x_84 : vec3<f32> = normalize(abs(x_82));
+  x_GLF_color = vec4<f32>(x_84.x, x_84.y, x_84.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
new file mode 100644
index 0000000..ba37d91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
@@ -0,0 +1,122 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var x_91 : f32;
+  var x_91_phi : f32;
+  var x_94_phi : i32;
+  x_91_phi = -0.5;
+  x_94_phi = 1;
+  loop {
+    var x_104 : f32;
+    var x_113 : f32;
+    var x_95 : i32;
+    var x_92_phi : f32;
+    x_91 = x_91_phi;
+    let x_94 : i32 = x_94_phi;
+    if ((x_94 < 800)) {
+    } else {
+      break;
+    }
+    var x_112 : f32;
+    var x_113_phi : f32;
+    if (((x_94 % 32) == 0)) {
+      x_104 = (x_91 + 0.400000006);
+      x_92_phi = x_104;
+    } else {
+      let x_106 : f32 = *(thirty_two);
+      x_113_phi = x_91;
+      if (((f32(x_94) % round(x_106)) <= 0.01)) {
+        x_112 = (x_91 + 100.0);
+        x_113_phi = x_112;
+      }
+      x_113 = x_113_phi;
+      x_92_phi = x_113;
+    }
+    var x_92 : f32;
+    x_92 = x_92_phi;
+    let x_115 : f32 = *(limit);
+    if ((f32(x_94) >= x_115)) {
+      return x_92;
+    }
+
+    continuing {
+      x_95 = (x_94 + 1);
+      x_91_phi = x_92;
+      x_94_phi = x_95;
+    }
+  }
+  return x_91;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var x_68_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_52 : f32 = x_10.resolution.x;
+  let x_54 : f32 = round((x_52 * 0.125));
+  let x_56 : f32 = gl_FragCoord.x;
+  param = x_56;
+  param_1 = x_54;
+  let x_57 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  let x_58 : ptr<function, f32> = &(c.x);
+  *(x_58) = x_57;
+  let x_60 : f32 = gl_FragCoord.y;
+  param_2 = x_60;
+  param_3 = x_54;
+  let x_61 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  let x_62 : ptr<function, f32> = &(c.y);
+  *(x_62) = x_61;
+  let x_63 : f32 = *(x_58);
+  let x_64 : f32 = *(x_62);
+  c.z = (x_63 + x_64);
+  x_68_phi = 0;
+  loop {
+    var x_69 : i32;
+    let x_68 : i32 = x_68_phi;
+    if ((x_68 < 3)) {
+    } else {
+      break;
+    }
+    let x_74 : ptr<function, f32> = &(c[x_68]);
+    let x_75 : f32 = *(x_74);
+    if ((x_75 >= 1.0)) {
+      let x_79 : f32 = *(x_74);
+      let x_80 : f32 = *(x_74);
+      *(x_74) = (x_79 * x_80);
+    }
+
+    continuing {
+      x_69 = (x_68 + 1);
+      x_68_phi = x_69;
+    }
+  }
+  let x_82 : vec3<f32> = c;
+  let x_84 : vec3<f32> = normalize(abs(x_82));
+  x_GLF_color = vec4<f32>(x_84.x, x_84.y, x_84.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..125f7d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,123 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+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);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float x_91 = 0.0f;
+  float x_91_phi = 0.0f;
+  int x_94_phi = 0;
+  x_91_phi = -0.5f;
+  x_94_phi = 1;
+  while (true) {
+    float x_104 = 0.0f;
+    float x_113 = 0.0f;
+    int x_95 = 0;
+    float x_92_phi = 0.0f;
+    x_91 = x_91_phi;
+    const int x_94 = x_94_phi;
+    if ((x_94 < 800)) {
+    } else {
+      break;
+    }
+    float x_112 = 0.0f;
+    float x_113_phi = 0.0f;
+    if (((x_94 % 32) == 0)) {
+      x_104 = (x_91 + 0.400000006f);
+      x_92_phi = x_104;
+    } else {
+      const float x_106 = thirty_two;
+      x_113_phi = x_91;
+      if (((float(x_94) % round(x_106)) <= 0.01f)) {
+        x_112 = (x_91 + 100.0f);
+        x_113_phi = x_112;
+      }
+      x_113 = x_113_phi;
+      x_92_phi = x_113;
+    }
+    float x_92 = 0.0f;
+    x_92 = x_92_phi;
+    const float x_115 = limit;
+    if ((float(x_94) >= x_115)) {
+      return x_92;
+    }
+    {
+      x_95 = (x_94 + 1);
+      x_91_phi = x_92;
+      x_94_phi = x_95;
+    }
+  }
+  return x_91;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int x_68_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_52 = asfloat(x_10[0].x);
+  const float x_54 = round((x_52 * 0.125f));
+  const float x_56 = gl_FragCoord.x;
+  param = x_56;
+  param_1 = x_54;
+  const float x_57 = compute_value_f1_f1_(param, param_1);
+  c.x = x_57;
+  const float x_60 = gl_FragCoord.y;
+  param_2 = x_60;
+  param_3 = x_54;
+  const float x_61 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_61;
+  const float x_63 = c.x;
+  const float x_64 = c.y;
+  c.z = (x_63 + x_64);
+  x_68_phi = 0;
+  while (true) {
+    int x_69 = 0;
+    const int x_68 = x_68_phi;
+    if ((x_68 < 3)) {
+    } else {
+      break;
+    }
+    const int x_74_save = x_68;
+    const float x_75 = c[x_74_save];
+    if ((x_75 >= 1.0f)) {
+      const float x_79 = c[x_74_save];
+      const float x_80 = c[x_74_save];
+      set_float3(c, x_74_save, (x_79 * x_80));
+    }
+    {
+      x_69 = (x_68 + 1);
+      x_68_phi = x_69;
+    }
+  }
+  const float3 x_84 = normalize(abs(c));
+  x_GLF_color = float4(x_84.x, x_84.y, x_84.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.msl
new file mode 100755
index 0000000..5ee750f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.msl
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float x_91 = 0.0f;
+  float x_91_phi = 0.0f;
+  int x_94_phi = 0;
+  x_91_phi = -0.5f;
+  x_94_phi = 1;
+  while (true) {
+    float x_104 = 0.0f;
+    float x_113 = 0.0f;
+    int x_95 = 0;
+    float x_92_phi = 0.0f;
+    x_91 = x_91_phi;
+    int const x_94 = x_94_phi;
+    if ((x_94 < 800)) {
+    } else {
+      break;
+    }
+    float x_112 = 0.0f;
+    float x_113_phi = 0.0f;
+    if (((x_94 % 32) == 0)) {
+      x_104 = (x_91 + 0.400000006f);
+      x_92_phi = x_104;
+    } else {
+      float const x_106 = *(thirty_two);
+      x_113_phi = x_91;
+      if (((float(x_94) % rint(x_106)) <= 0.01f)) {
+        x_112 = (x_91 + 100.0f);
+        x_113_phi = x_112;
+      }
+      x_113 = x_113_phi;
+      x_92_phi = x_113;
+    }
+    float x_92 = 0.0f;
+    x_92 = x_92_phi;
+    float const x_115 = *(limit);
+    if ((float(x_94) >= x_115)) {
+      return x_92;
+    }
+    {
+      x_95 = (x_94 + 1);
+      x_91_phi = x_92;
+      x_94_phi = x_95;
+    }
+  }
+  return x_91;
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int x_68_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_52 = x_10.resolution.x;
+  float const x_54 = rint((x_52 * 0.125f));
+  float const x_56 = (*(tint_symbol_5)).x;
+  param = x_56;
+  param_1 = x_54;
+  float const x_57 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_57;
+  float const x_60 = (*(tint_symbol_5)).y;
+  param_2 = x_60;
+  param_3 = x_54;
+  float const x_61 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_61;
+  float const x_63 = c.x;
+  float const x_64 = c.y;
+  c.z = (x_63 + x_64);
+  x_68_phi = 0;
+  while (true) {
+    int x_69 = 0;
+    int const x_68 = x_68_phi;
+    if ((x_68 < 3)) {
+    } else {
+      break;
+    }
+    int const x_74_save = x_68;
+    float const x_75 = c[x_74_save];
+    if ((x_75 >= 1.0f)) {
+      float const x_79 = c[x_74_save];
+      float const x_80 = c[x_74_save];
+      c[x_74_save] = (x_79 * x_80);
+    }
+    {
+      x_69 = (x_68 + 1);
+      x_68_phi = x_69;
+    }
+  }
+  float3 const x_82 = c;
+  float3 const x_84 = normalize(fabs(x_82));
+  *(tint_symbol_6) = float4(x_84.x, x_84.y, x_84.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_10, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u8cs.0.metal:39:25: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_94) % rint(x_106)) <= 0.01f)) {
+            ~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..42303b9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,291 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 180
+; Schema: 0
+               OpCapability Shader
+         %64 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %x_91 "x_91"
+               OpName %x_91_phi "x_91_phi"
+               OpName %x_94_phi "x_94_phi"
+               OpName %x_104 "x_104"
+               OpName %x_113 "x_113"
+               OpName %x_95 "x_95"
+               OpName %x_92_phi "x_92_phi"
+               OpName %x_112 "x_112"
+               OpName %x_113_phi "x_113_phi"
+               OpName %x_92 "x_92"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %x_68_phi "x_68_phi"
+               OpName %x_69 "x_69"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %22 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %27 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %89 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %96 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+        %105 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %167 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %15
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %20 = OpLabel
+       %x_91 = OpVariable %_ptr_Function_float Function %22
+   %x_91_phi = OpVariable %_ptr_Function_float Function %22
+   %x_94_phi = OpVariable %_ptr_Function_int Function %27
+      %x_104 = OpVariable %_ptr_Function_float Function %22
+      %x_113 = OpVariable %_ptr_Function_float Function %22
+       %x_95 = OpVariable %_ptr_Function_int Function %27
+   %x_92_phi = OpVariable %_ptr_Function_float Function %22
+      %x_112 = OpVariable %_ptr_Function_float Function %22
+  %x_113_phi = OpVariable %_ptr_Function_float Function %22
+       %x_92 = OpVariable %_ptr_Function_float Function %22
+               OpStore %x_91_phi %float_n0_5
+               OpStore %x_94_phi %int_1
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %38 = OpLoad %float %x_91_phi
+               OpStore %x_91 %38
+         %39 = OpLoad %int %x_94_phi
+         %41 = OpSLessThan %bool %39 %int_800
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %31
+         %43 = OpLabel
+         %49 = OpSMod %int %39 %int_32
+         %51 = OpIEqual %bool %49 %int_0
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+         %55 = OpLoad %float %x_91
+         %57 = OpFAdd %float %55 %float_0_400000006
+               OpStore %x_104 %57
+         %58 = OpLoad %float %x_104
+               OpStore %x_92_phi %58
+               OpBranch %52
+         %54 = OpLabel
+         %60 = OpLoad %float %thirty_two
+         %61 = OpLoad %float %x_91
+               OpStore %x_113_phi %61
+         %62 = OpConvertSToF %float %39
+         %63 = OpExtInst %float %64 RoundEven %60
+         %65 = OpFMod %float %62 %63
+         %67 = OpFOrdLessThanEqual %bool %65 %float_0_00999999978
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpLoad %float %x_91
+         %72 = OpFAdd %float %70 %float_100
+               OpStore %x_112 %72
+         %73 = OpLoad %float %x_112
+               OpStore %x_113_phi %73
+               OpBranch %68
+         %68 = OpLabel
+         %74 = OpLoad %float %x_113_phi
+               OpStore %x_113 %74
+         %75 = OpLoad %float %x_113
+               OpStore %x_92_phi %75
+               OpBranch %52
+         %52 = OpLabel
+         %77 = OpLoad %float %x_92_phi
+               OpStore %x_92 %77
+         %79 = OpLoad %float %limit
+         %80 = OpConvertSToF %float %39
+         %81 = OpFOrdGreaterThanEqual %bool %80 %79
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %82
+         %83 = OpLabel
+         %84 = OpLoad %float %x_92
+               OpReturnValue %84
+         %82 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %85 = OpIAdd %int %39 %int_1
+               OpStore %x_95 %85
+         %86 = OpLoad %float %x_92
+               OpStore %x_91_phi %86
+         %87 = OpLoad %int %x_95
+               OpStore %x_94_phi %87
+               OpBranch %30
+         %31 = OpLabel
+         %88 = OpLoad %float %x_91
+               OpReturnValue %88
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %89
+         %92 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %96
+      %param = OpVariable %_ptr_Function_float Function %22
+    %param_1 = OpVariable %_ptr_Function_float Function %22
+    %param_2 = OpVariable %_ptr_Function_float Function %22
+    %param_3 = OpVariable %_ptr_Function_float Function %22
+   %x_68_phi = OpVariable %_ptr_Function_int Function %27
+       %x_69 = OpVariable %_ptr_Function_int Function %27
+               OpStore %c %105
+        %109 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %110 = OpLoad %float %109
+        %113 = OpFMul %float %110 %float_0_125
+        %111 = OpExtInst %float %64 RoundEven %113
+        %115 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %116 = OpLoad %float %115
+               OpStore %param %116
+               OpStore %param_1 %111
+        %117 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %120 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %120 %117
+        %122 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %123 = OpLoad %float %122
+               OpStore %param_2 %123
+               OpStore %param_3 %111
+        %124 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %127 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %127 %124
+        %128 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %129 = OpLoad %float %128
+        %130 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %131 = OpLoad %float %130
+        %133 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %134 = OpFAdd %float %129 %131
+               OpStore %133 %134
+               OpStore %x_68_phi %int_0
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %140 = OpLoad %int %x_68_phi
+        %142 = OpSLessThan %bool %140 %int_3
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %145
+        %144 = OpLabel
+               OpBranch %143
+        %145 = OpLabel
+               OpBranch %136
+        %143 = OpLabel
+        %146 = OpAccessChain %_ptr_Function_float %c %140
+        %147 = OpLoad %float %146
+        %149 = OpFOrdGreaterThanEqual %bool %147 %float_1
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %152 = OpAccessChain %_ptr_Function_float %c %140
+        %153 = OpLoad %float %152
+        %154 = OpAccessChain %_ptr_Function_float %c %140
+        %155 = OpLoad %float %154
+        %156 = OpAccessChain %_ptr_Function_float %c %140
+        %157 = OpFMul %float %153 %155
+               OpStore %156 %157
+               OpBranch %150
+        %150 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %158 = OpIAdd %int %140 %int_1
+               OpStore %x_69 %158
+        %159 = OpLoad %int %x_69
+               OpStore %x_68_phi %159
+               OpBranch %135
+        %136 = OpLabel
+        %160 = OpLoad %v3float %c
+        %162 = OpExtInst %v3float %64 FAbs %160
+        %161 = OpExtInst %v3float %64 Normalize %162
+        %163 = OpCompositeExtract %float %161 0
+        %164 = OpCompositeExtract %float %161 1
+        %165 = OpCompositeExtract %float %161 2
+        %166 = OpCompositeConstruct %v4float %163 %164 %165 %float_1
+               OpStore %x_GLF_color %166
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %167
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %171 = OpLabel
+        %172 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %172
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %89
+        %174 = OpLabel
+        %175 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %175
+        %176 = OpFunctionCall %void %main_1
+        %178 = OpLoad %v4float %x_GLF_color
+        %179 = OpCompositeConstruct %main_out %178
+        %177 = OpFunctionCall %void %tint_symbol_3 %179
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ba37d91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,122 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var x_91 : f32;
+  var x_91_phi : f32;
+  var x_94_phi : i32;
+  x_91_phi = -0.5;
+  x_94_phi = 1;
+  loop {
+    var x_104 : f32;
+    var x_113 : f32;
+    var x_95 : i32;
+    var x_92_phi : f32;
+    x_91 = x_91_phi;
+    let x_94 : i32 = x_94_phi;
+    if ((x_94 < 800)) {
+    } else {
+      break;
+    }
+    var x_112 : f32;
+    var x_113_phi : f32;
+    if (((x_94 % 32) == 0)) {
+      x_104 = (x_91 + 0.400000006);
+      x_92_phi = x_104;
+    } else {
+      let x_106 : f32 = *(thirty_two);
+      x_113_phi = x_91;
+      if (((f32(x_94) % round(x_106)) <= 0.01)) {
+        x_112 = (x_91 + 100.0);
+        x_113_phi = x_112;
+      }
+      x_113 = x_113_phi;
+      x_92_phi = x_113;
+    }
+    var x_92 : f32;
+    x_92 = x_92_phi;
+    let x_115 : f32 = *(limit);
+    if ((f32(x_94) >= x_115)) {
+      return x_92;
+    }
+
+    continuing {
+      x_95 = (x_94 + 1);
+      x_91_phi = x_92;
+      x_94_phi = x_95;
+    }
+  }
+  return x_91;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var x_68_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_52 : f32 = x_10.resolution.x;
+  let x_54 : f32 = round((x_52 * 0.125));
+  let x_56 : f32 = gl_FragCoord.x;
+  param = x_56;
+  param_1 = x_54;
+  let x_57 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  let x_58 : ptr<function, f32> = &(c.x);
+  *(x_58) = x_57;
+  let x_60 : f32 = gl_FragCoord.y;
+  param_2 = x_60;
+  param_3 = x_54;
+  let x_61 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  let x_62 : ptr<function, f32> = &(c.y);
+  *(x_62) = x_61;
+  let x_63 : f32 = *(x_58);
+  let x_64 : f32 = *(x_62);
+  c.z = (x_63 + x_64);
+  x_68_phi = 0;
+  loop {
+    var x_69 : i32;
+    let x_68 : i32 = x_68_phi;
+    if ((x_68 < 3)) {
+    } else {
+      break;
+    }
+    let x_74 : ptr<function, f32> = &(c[x_68]);
+    let x_75 : f32 = *(x_74);
+    if ((x_75 >= 1.0)) {
+      let x_79 : f32 = *(x_74);
+      let x_80 : f32 = *(x_74);
+      *(x_74) = (x_79 * x_80);
+    }
+
+    continuing {
+      x_69 = (x_68 + 1);
+      x_68_phi = x_69;
+    }
+  }
+  let x_82 : vec3<f32> = c;
+  let x_84 : vec3<f32> = normalize(abs(x_82));
+  x_GLF_color = vec4<f32>(x_84.x, x_84.y, x_84.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm
new file mode 100644
index 0000000..6ff67b1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm
@@ -0,0 +1,204 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %compute_value_f1_f1_ "compute_value(f1;f1;"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %c "c"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %__0 ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %21 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %37 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%float_0_125 = OpConstant %float 0.125
+       %main = OpFunction %void None %18
+         %53 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_float Function
+    %param_2 = OpVariable %_ptr_Function_float Function
+         %54 = OpVariable %_ptr_Function_v3float Function
+               OpStore %c %37
+         %55 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %56 = OpLoad %float %55
+         %57 = OpFMul %float %56 %float_0_125
+         %58 = OpExtInst %float %1 Round %57
+         %59 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %60 = OpLoad %float %59
+               OpStore %param %60
+               OpStore %param_0 %58
+         %61 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_0
+         %62 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %62 %61
+         %63 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %64 = OpLoad %float %63
+               OpStore %param_1 %64
+               OpStore %param_2 %58
+         %65 = OpFunctionCall %float %compute_value_f1_f1_ %param_1 %param_2
+         %66 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %66 %65
+         %67 = OpLoad %float %62
+         %68 = OpLoad %v3float %c
+               OpStore %54 %68
+         %69 = OpAccessChain %_ptr_Function_float %54 %uint_1
+         %70 = OpLoad %float %69
+         %71 = OpFAdd %float %67 %70
+         %72 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %72 %71
+               OpBranch %73
+         %73 = OpLabel
+         %74 = OpPhi %int %int_0 %53 %75 %76
+         %77 = OpSLessThan %bool %74 %int_3
+               OpLoopMerge %78 %76 None
+               OpBranchConditional %77 %79 %78
+         %79 = OpLabel
+         %80 = OpAccessChain %_ptr_Function_float %c %74
+         %81 = OpLoad %float %80
+         %82 = OpFOrdGreaterThanEqual %bool %81 %float_1
+               OpSelectionMerge %83 None
+               OpBranchConditional %82 %84 %83
+         %84 = OpLabel
+         %85 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %86 = OpLoad %float %85
+         %87 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+         %88 = OpLoad %float %87
+         %89 = OpFOrdGreaterThan %bool %86 %88
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+               OpKill
+         %90 = OpLabel
+         %92 = OpLoad %float %80
+         %93 = OpLoad %float %80
+         %94 = OpFMul %float %92 %93
+               OpStore %80 %94
+               OpBranch %83
+         %83 = OpLabel
+               OpBranch %76
+         %76 = OpLabel
+         %75 = OpIAdd %int %74 %int_1
+               OpBranch %73
+         %78 = OpLabel
+         %95 = OpLoad %v3float %c
+         %96 = OpExtInst %v3float %1 FAbs %95
+         %97 = OpExtInst %v3float %1 Normalize %96
+         %98 = OpCompositeExtract %float %97 0
+         %99 = OpCompositeExtract %float %97 1
+        %100 = OpCompositeExtract %float %97 2
+        %101 = OpCompositeConstruct %v4float %98 %99 %100 %float_1
+               OpStore %_GLF_color %101
+               OpReturn
+               OpFunctionEnd
+%compute_value_f1_f1_ = OpFunction %float None %21
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+        %102 = OpLabel
+               OpBranch %103
+        %103 = OpLabel
+        %104 = OpPhi %float %float_n0_5 %102 %105 %106
+        %107 = OpPhi %int %int_1 %102 %108 %106
+        %109 = OpSLessThan %bool %107 %int_800
+               OpLoopMerge %110 %106 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+        %112 = OpSMod %int %107 %int_32
+        %113 = OpIEqual %bool %112 %int_0
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %116 = OpLabel
+        %117 = OpConvertSToF %float %107
+        %118 = OpLoad %float %thirty_two
+        %119 = OpExtInst %float %1 Round %118
+        %120 = OpFMod %float %117 %119
+        %121 = OpFOrdLessThanEqual %bool %120 %float_0_00999999978
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+        %124 = OpFAdd %float %104 %float_100
+               OpBranch %122
+        %122 = OpLabel
+        %125 = OpPhi %float %104 %116 %124 %123
+               OpBranch %114
+        %115 = OpLabel
+        %126 = OpFAdd %float %104 %float_0_400000006
+               OpBranch %114
+        %114 = OpLabel
+        %105 = OpPhi %float %126 %115 %125 %122
+        %127 = OpConvertSToF %float %107
+        %128 = OpLoad %float %limit
+        %129 = OpFOrdGreaterThanEqual %bool %127 %128
+               OpSelectionMerge %130 None
+               OpBranchConditional %129 %131 %130
+        %131 = OpLabel
+               OpReturnValue %105
+        %130 = OpLabel
+               OpBranch %106
+        %106 = OpLabel
+        %108 = OpIAdd %int %107 %int_1
+               OpBranch %103
+        %110 = OpLabel
+               OpReturnValue %104
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..3a417df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.hlsl
@@ -0,0 +1,133 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_16 : register(b1, space0) {
+  uint4 x_16[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float x_104 = 0.0f;
+  float x_104_phi = 0.0f;
+  int x_107_phi = 0;
+  x_104_phi = -0.5f;
+  x_107_phi = 1;
+  while (true) {
+    float x_126 = 0.0f;
+    float x_125 = 0.0f;
+    int x_108 = 0;
+    float x_105_phi = 0.0f;
+    x_104 = x_104_phi;
+    const int x_107 = x_107_phi;
+    if ((x_107 < 800)) {
+    } else {
+      break;
+    }
+    float x_124 = 0.0f;
+    float x_125_phi = 0.0f;
+    if (((x_107 % 32) == 0)) {
+      x_126 = (x_104 + 0.400000006f);
+      x_105_phi = x_126;
+    } else {
+      const float x_118 = thirty_two;
+      x_125_phi = x_104;
+      if (((float(x_107) % round(x_118)) <= 0.01f)) {
+        x_124 = (x_104 + 100.0f);
+        x_125_phi = x_124;
+      }
+      x_125 = x_125_phi;
+      x_105_phi = x_125;
+    }
+    float x_105 = 0.0f;
+    x_105 = x_105_phi;
+    const float x_128 = limit;
+    if ((float(x_107) >= x_128)) {
+      return x_105;
+    }
+    {
+      x_108 = (x_107 + 1);
+      x_104_phi = x_105;
+      x_107_phi = x_108;
+    }
+  }
+  return x_104;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  float3 x_54 = float3(0.0f, 0.0f, 0.0f);
+  int x_74_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_56 = asfloat(x_10[0].x);
+  const float x_58 = round((x_56 * 0.125f));
+  const float x_60 = gl_FragCoord.x;
+  param = x_60;
+  param_1 = x_58;
+  const float x_61 = compute_value_f1_f1_(param, param_1);
+  c.x = x_61;
+  const float x_64 = gl_FragCoord.y;
+  param_2 = x_64;
+  param_3 = x_58;
+  const float x_65 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_65;
+  const float x_67 = c.x;
+  x_54 = c;
+  const float x_70 = x_54.y;
+  c.z = (x_67 + x_70);
+  x_74_phi = 0;
+  while (true) {
+    int x_75 = 0;
+    const int x_74 = x_74_phi;
+    if ((x_74 < 3)) {
+    } else {
+      break;
+    }
+    const int x_80_save = x_74;
+    const float x_81 = c[x_80_save];
+    if ((x_81 >= 1.0f)) {
+      const float x_86 = asfloat(x_16[0].x);
+      const float x_88 = asfloat(x_16[0].y);
+      if ((x_86 > x_88)) {
+        discard;
+      }
+      const float x_92 = c[x_80_save];
+      const float x_93 = c[x_80_save];
+      set_float3(c, x_80_save, (x_92 * x_93));
+    }
+    {
+      x_75 = (x_74 + 1);
+      x_74_phi = x_75;
+    }
+  }
+  const float3 x_97 = normalize(abs(c));
+  x_GLF_color = float4(x_97.x, x_97.y, x_97.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.msl
new file mode 100755
index 0000000..45c08ae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.msl
@@ -0,0 +1,137 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float x_104 = 0.0f;
+  float x_104_phi = 0.0f;
+  int x_107_phi = 0;
+  x_104_phi = -0.5f;
+  x_107_phi = 1;
+  while (true) {
+    float x_126 = 0.0f;
+    float x_125 = 0.0f;
+    int x_108 = 0;
+    float x_105_phi = 0.0f;
+    x_104 = x_104_phi;
+    int const x_107 = x_107_phi;
+    if ((x_107 < 800)) {
+    } else {
+      break;
+    }
+    float x_124 = 0.0f;
+    float x_125_phi = 0.0f;
+    if (((x_107 % 32) == 0)) {
+      x_126 = (x_104 + 0.400000006f);
+      x_105_phi = x_126;
+    } else {
+      float const x_118 = *(thirty_two);
+      x_125_phi = x_104;
+      if (((float(x_107) % rint(x_118)) <= 0.01f)) {
+        x_124 = (x_104 + 100.0f);
+        x_125_phi = x_124;
+      }
+      x_125 = x_125_phi;
+      x_105_phi = x_125;
+    }
+    float x_105 = 0.0f;
+    x_105 = x_105_phi;
+    float const x_128 = *(limit);
+    if ((float(x_107) >= x_128)) {
+      return x_105;
+    }
+    {
+      x_108 = (x_107 + 1);
+      x_104_phi = x_105;
+      x_107_phi = x_108;
+    }
+  }
+  return x_104;
+}
+
+void main_1(constant buf0& x_10, constant buf1& x_16, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  float3 x_54 = 0.0f;
+  int x_74_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_56 = x_10.resolution.x;
+  float const x_58 = rint((x_56 * 0.125f));
+  float const x_60 = (*(tint_symbol_5)).x;
+  param = x_60;
+  param_1 = x_58;
+  float const x_61 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_61;
+  float const x_64 = (*(tint_symbol_5)).y;
+  param_2 = x_64;
+  param_3 = x_58;
+  float const x_65 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_65;
+  float const x_67 = c.x;
+  float3 const x_68 = c;
+  x_54 = x_68;
+  float const x_70 = x_54.y;
+  c.z = (x_67 + x_70);
+  x_74_phi = 0;
+  while (true) {
+    int x_75 = 0;
+    int const x_74 = x_74_phi;
+    if ((x_74 < 3)) {
+    } else {
+      break;
+    }
+    int const x_80_save = x_74;
+    float const x_81 = c[x_80_save];
+    if ((x_81 >= 1.0f)) {
+      float const x_86 = x_16.injectionSwitch.x;
+      float const x_88 = x_16.injectionSwitch.y;
+      if ((x_86 > x_88)) {
+        discard_fragment();
+      }
+      float const x_92 = c[x_80_save];
+      float const x_93 = c[x_80_save];
+      c[x_80_save] = (x_92 * x_93);
+    }
+    {
+      x_75 = (x_74 + 1);
+      x_74_phi = x_75;
+    }
+  }
+  float3 const x_95 = c;
+  float3 const x_97 = normalize(fabs(x_95));
+  *(tint_symbol_6) = float4(x_97.x, x_97.y, x_97.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]], constant buf1& x_16 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_10, x_16, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\ufno.0.metal:42:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_107) % rint(x_118)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..d622545
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.spvasm
@@ -0,0 +1,316 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 192
+; Schema: 0
+               OpCapability Shader
+         %67 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_16 "x_16"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %x_104 "x_104"
+               OpName %x_104_phi "x_104_phi"
+               OpName %x_107_phi "x_107_phi"
+               OpName %x_126 "x_126"
+               OpName %x_125 "x_125"
+               OpName %x_108 "x_108"
+               OpName %x_105_phi "x_105_phi"
+               OpName %x_124 "x_124"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_105 "x_105"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %x_54 "x_54"
+               OpName %x_74_phi "x_74_phi"
+               OpName %x_75 "x_75"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_16 NonWritable
+               OpDecorate %x_16 DescriptorSet 0
+               OpDecorate %x_16 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_16 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %92 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %99 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+        %109 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %179 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %18
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %23 = OpLabel
+      %x_104 = OpVariable %_ptr_Function_float Function %25
+  %x_104_phi = OpVariable %_ptr_Function_float Function %25
+  %x_107_phi = OpVariable %_ptr_Function_int Function %30
+      %x_126 = OpVariable %_ptr_Function_float Function %25
+      %x_125 = OpVariable %_ptr_Function_float Function %25
+      %x_108 = OpVariable %_ptr_Function_int Function %30
+  %x_105_phi = OpVariable %_ptr_Function_float Function %25
+      %x_124 = OpVariable %_ptr_Function_float Function %25
+  %x_125_phi = OpVariable %_ptr_Function_float Function %25
+      %x_105 = OpVariable %_ptr_Function_float Function %25
+               OpStore %x_104_phi %float_n0_5
+               OpStore %x_107_phi %int_1
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %41 = OpLoad %float %x_104_phi
+               OpStore %x_104 %41
+         %42 = OpLoad %int %x_107_phi
+         %44 = OpSLessThan %bool %42 %int_800
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %34
+         %46 = OpLabel
+         %52 = OpSMod %int %42 %int_32
+         %54 = OpIEqual %bool %52 %int_0
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+         %58 = OpLoad %float %x_104
+         %60 = OpFAdd %float %58 %float_0_400000006
+               OpStore %x_126 %60
+         %61 = OpLoad %float %x_126
+               OpStore %x_105_phi %61
+               OpBranch %55
+         %57 = OpLabel
+         %63 = OpLoad %float %thirty_two
+         %64 = OpLoad %float %x_104
+               OpStore %x_125_phi %64
+         %65 = OpConvertSToF %float %42
+         %66 = OpExtInst %float %67 RoundEven %63
+         %68 = OpFMod %float %65 %66
+         %70 = OpFOrdLessThanEqual %bool %68 %float_0_00999999978
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpLoad %float %x_104
+         %75 = OpFAdd %float %73 %float_100
+               OpStore %x_124 %75
+         %76 = OpLoad %float %x_124
+               OpStore %x_125_phi %76
+               OpBranch %71
+         %71 = OpLabel
+         %77 = OpLoad %float %x_125_phi
+               OpStore %x_125 %77
+         %78 = OpLoad %float %x_125
+               OpStore %x_105_phi %78
+               OpBranch %55
+         %55 = OpLabel
+         %80 = OpLoad %float %x_105_phi
+               OpStore %x_105 %80
+         %82 = OpLoad %float %limit
+         %83 = OpConvertSToF %float %42
+         %84 = OpFOrdGreaterThanEqual %bool %83 %82
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpLoad %float %x_105
+               OpReturnValue %87
+         %85 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+         %88 = OpIAdd %int %42 %int_1
+               OpStore %x_108 %88
+         %89 = OpLoad %float %x_105
+               OpStore %x_104_phi %89
+         %90 = OpLoad %int %x_108
+               OpStore %x_107_phi %90
+               OpBranch %33
+         %34 = OpLabel
+         %91 = OpLoad %float %x_104
+               OpReturnValue %91
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %92
+         %95 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %99
+      %param = OpVariable %_ptr_Function_float Function %25
+    %param_1 = OpVariable %_ptr_Function_float Function %25
+    %param_2 = OpVariable %_ptr_Function_float Function %25
+    %param_3 = OpVariable %_ptr_Function_float Function %25
+       %x_54 = OpVariable %_ptr_Function_v3float Function %99
+   %x_74_phi = OpVariable %_ptr_Function_int Function %30
+       %x_75 = OpVariable %_ptr_Function_int Function %30
+               OpStore %c %109
+        %113 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %114 = OpLoad %float %113
+        %117 = OpFMul %float %114 %float_0_125
+        %115 = OpExtInst %float %67 RoundEven %117
+        %119 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %120 = OpLoad %float %119
+               OpStore %param %120
+               OpStore %param_1 %115
+        %121 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %124 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %124 %121
+        %126 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %127 = OpLoad %float %126
+               OpStore %param_2 %127
+               OpStore %param_3 %115
+        %128 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %131 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %131 %128
+        %132 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %133 = OpLoad %float %132
+        %134 = OpLoad %v3float %c
+               OpStore %x_54 %134
+        %135 = OpAccessChain %_ptr_Function_float %x_54 %uint_1
+        %136 = OpLoad %float %135
+        %138 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %139 = OpFAdd %float %133 %136
+               OpStore %138 %139
+               OpStore %x_74_phi %int_0
+               OpBranch %140
+        %140 = OpLabel
+               OpLoopMerge %141 %142 None
+               OpBranch %143
+        %143 = OpLabel
+        %145 = OpLoad %int %x_74_phi
+        %147 = OpSLessThan %bool %145 %int_3
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %150
+        %149 = OpLabel
+               OpBranch %148
+        %150 = OpLabel
+               OpBranch %141
+        %148 = OpLabel
+        %151 = OpAccessChain %_ptr_Function_float %c %145
+        %152 = OpLoad %float %151
+        %154 = OpFOrdGreaterThanEqual %bool %152 %float_1
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+        %158 = OpLoad %float %157
+        %159 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+        %160 = OpLoad %float %159
+        %161 = OpFOrdGreaterThan %bool %158 %160
+               OpSelectionMerge %162 None
+               OpBranchConditional %161 %163 %162
+        %163 = OpLabel
+               OpKill
+        %162 = OpLabel
+        %164 = OpAccessChain %_ptr_Function_float %c %145
+        %165 = OpLoad %float %164
+        %166 = OpAccessChain %_ptr_Function_float %c %145
+        %167 = OpLoad %float %166
+        %168 = OpAccessChain %_ptr_Function_float %c %145
+        %169 = OpFMul %float %165 %167
+               OpStore %168 %169
+               OpBranch %155
+        %155 = OpLabel
+               OpBranch %142
+        %142 = OpLabel
+        %170 = OpIAdd %int %145 %int_1
+               OpStore %x_75 %170
+        %171 = OpLoad %int %x_75
+               OpStore %x_74_phi %171
+               OpBranch %140
+        %141 = OpLabel
+        %172 = OpLoad %v3float %c
+        %174 = OpExtInst %v3float %67 FAbs %172
+        %173 = OpExtInst %v3float %67 Normalize %174
+        %175 = OpCompositeExtract %float %173 0
+        %176 = OpCompositeExtract %float %173 1
+        %177 = OpCompositeExtract %float %173 2
+        %178 = OpCompositeConstruct %v4float %175 %176 %177 %float_1
+               OpStore %x_GLF_color %178
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %179
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %183 = OpLabel
+        %184 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %184
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %92
+        %186 = OpLabel
+        %187 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %187
+        %188 = OpFunctionCall %void %main_1
+        %190 = OpLoad %v4float %x_GLF_color
+        %191 = OpCompositeConstruct %main_out %190
+        %189 = OpFunctionCall %void %tint_symbol_3 %191
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..57edb9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.spvasm.expected.wgsl
@@ -0,0 +1,136 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var x_104 : f32;
+  var x_104_phi : f32;
+  var x_107_phi : i32;
+  x_104_phi = -0.5;
+  x_107_phi = 1;
+  loop {
+    var x_126 : f32;
+    var x_125 : f32;
+    var x_108 : i32;
+    var x_105_phi : f32;
+    x_104 = x_104_phi;
+    let x_107 : i32 = x_107_phi;
+    if ((x_107 < 800)) {
+    } else {
+      break;
+    }
+    var x_124 : f32;
+    var x_125_phi : f32;
+    if (((x_107 % 32) == 0)) {
+      x_126 = (x_104 + 0.400000006);
+      x_105_phi = x_126;
+    } else {
+      let x_118 : f32 = *(thirty_two);
+      x_125_phi = x_104;
+      if (((f32(x_107) % round(x_118)) <= 0.01)) {
+        x_124 = (x_104 + 100.0);
+        x_125_phi = x_124;
+      }
+      x_125 = x_125_phi;
+      x_105_phi = x_125;
+    }
+    var x_105 : f32;
+    x_105 = x_105_phi;
+    let x_128 : f32 = *(limit);
+    if ((f32(x_107) >= x_128)) {
+      return x_105;
+    }
+
+    continuing {
+      x_108 = (x_107 + 1);
+      x_104_phi = x_105;
+      x_107_phi = x_108;
+    }
+  }
+  return x_104;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var x_54 : vec3<f32>;
+  var x_74_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_56 : f32 = x_10.resolution.x;
+  let x_58 : f32 = round((x_56 * 0.125));
+  let x_60 : f32 = gl_FragCoord.x;
+  param = x_60;
+  param_1 = x_58;
+  let x_61 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  let x_62 : ptr<function, f32> = &(c.x);
+  *(x_62) = x_61;
+  let x_64 : f32 = gl_FragCoord.y;
+  param_2 = x_64;
+  param_3 = x_58;
+  let x_65 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_65;
+  let x_67 : f32 = *(x_62);
+  let x_68 : vec3<f32> = c;
+  x_54 = x_68;
+  let x_70 : f32 = x_54.y;
+  c.z = (x_67 + x_70);
+  x_74_phi = 0;
+  loop {
+    var x_75 : i32;
+    let x_74 : i32 = x_74_phi;
+    if ((x_74 < 3)) {
+    } else {
+      break;
+    }
+    let x_80 : ptr<function, f32> = &(c[x_74]);
+    let x_81 : f32 = *(x_80);
+    if ((x_81 >= 1.0)) {
+      let x_86 : f32 = x_16.injectionSwitch.x;
+      let x_88 : f32 = x_16.injectionSwitch.y;
+      if ((x_86 > x_88)) {
+        discard;
+      }
+      let x_92 : f32 = *(x_80);
+      let x_93 : f32 = *(x_80);
+      *(x_80) = (x_92 * x_93);
+    }
+
+    continuing {
+      x_75 = (x_74 + 1);
+      x_74_phi = x_75;
+    }
+  }
+  let x_95 : vec3<f32> = c;
+  let x_97 : vec3<f32> = normalize(abs(x_95));
+  x_GLF_color = vec4<f32>(x_97.x, x_97.y, x_97.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
new file mode 100644
index 0000000..57edb9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
@@ -0,0 +1,136 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var x_104 : f32;
+  var x_104_phi : f32;
+  var x_107_phi : i32;
+  x_104_phi = -0.5;
+  x_107_phi = 1;
+  loop {
+    var x_126 : f32;
+    var x_125 : f32;
+    var x_108 : i32;
+    var x_105_phi : f32;
+    x_104 = x_104_phi;
+    let x_107 : i32 = x_107_phi;
+    if ((x_107 < 800)) {
+    } else {
+      break;
+    }
+    var x_124 : f32;
+    var x_125_phi : f32;
+    if (((x_107 % 32) == 0)) {
+      x_126 = (x_104 + 0.400000006);
+      x_105_phi = x_126;
+    } else {
+      let x_118 : f32 = *(thirty_two);
+      x_125_phi = x_104;
+      if (((f32(x_107) % round(x_118)) <= 0.01)) {
+        x_124 = (x_104 + 100.0);
+        x_125_phi = x_124;
+      }
+      x_125 = x_125_phi;
+      x_105_phi = x_125;
+    }
+    var x_105 : f32;
+    x_105 = x_105_phi;
+    let x_128 : f32 = *(limit);
+    if ((f32(x_107) >= x_128)) {
+      return x_105;
+    }
+
+    continuing {
+      x_108 = (x_107 + 1);
+      x_104_phi = x_105;
+      x_107_phi = x_108;
+    }
+  }
+  return x_104;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var x_54 : vec3<f32>;
+  var x_74_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_56 : f32 = x_10.resolution.x;
+  let x_58 : f32 = round((x_56 * 0.125));
+  let x_60 : f32 = gl_FragCoord.x;
+  param = x_60;
+  param_1 = x_58;
+  let x_61 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  let x_62 : ptr<function, f32> = &(c.x);
+  *(x_62) = x_61;
+  let x_64 : f32 = gl_FragCoord.y;
+  param_2 = x_64;
+  param_3 = x_58;
+  let x_65 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_65;
+  let x_67 : f32 = *(x_62);
+  let x_68 : vec3<f32> = c;
+  x_54 = x_68;
+  let x_70 : f32 = x_54.y;
+  c.z = (x_67 + x_70);
+  x_74_phi = 0;
+  loop {
+    var x_75 : i32;
+    let x_74 : i32 = x_74_phi;
+    if ((x_74 < 3)) {
+    } else {
+      break;
+    }
+    let x_80 : ptr<function, f32> = &(c[x_74]);
+    let x_81 : f32 = *(x_80);
+    if ((x_81 >= 1.0)) {
+      let x_86 : f32 = x_16.injectionSwitch.x;
+      let x_88 : f32 = x_16.injectionSwitch.y;
+      if ((x_86 > x_88)) {
+        discard;
+      }
+      let x_92 : f32 = *(x_80);
+      let x_93 : f32 = *(x_80);
+      *(x_80) = (x_92 * x_93);
+    }
+
+    continuing {
+      x_75 = (x_74 + 1);
+      x_74_phi = x_75;
+    }
+  }
+  let x_95 : vec3<f32> = c;
+  let x_97 : vec3<f32> = normalize(abs(x_95));
+  x_GLF_color = vec4<f32>(x_97.x, x_97.y, x_97.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..3a417df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.hlsl
@@ -0,0 +1,133 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_16 : register(b1, space0) {
+  uint4 x_16[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float x_104 = 0.0f;
+  float x_104_phi = 0.0f;
+  int x_107_phi = 0;
+  x_104_phi = -0.5f;
+  x_107_phi = 1;
+  while (true) {
+    float x_126 = 0.0f;
+    float x_125 = 0.0f;
+    int x_108 = 0;
+    float x_105_phi = 0.0f;
+    x_104 = x_104_phi;
+    const int x_107 = x_107_phi;
+    if ((x_107 < 800)) {
+    } else {
+      break;
+    }
+    float x_124 = 0.0f;
+    float x_125_phi = 0.0f;
+    if (((x_107 % 32) == 0)) {
+      x_126 = (x_104 + 0.400000006f);
+      x_105_phi = x_126;
+    } else {
+      const float x_118 = thirty_two;
+      x_125_phi = x_104;
+      if (((float(x_107) % round(x_118)) <= 0.01f)) {
+        x_124 = (x_104 + 100.0f);
+        x_125_phi = x_124;
+      }
+      x_125 = x_125_phi;
+      x_105_phi = x_125;
+    }
+    float x_105 = 0.0f;
+    x_105 = x_105_phi;
+    const float x_128 = limit;
+    if ((float(x_107) >= x_128)) {
+      return x_105;
+    }
+    {
+      x_108 = (x_107 + 1);
+      x_104_phi = x_105;
+      x_107_phi = x_108;
+    }
+  }
+  return x_104;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  float3 x_54 = float3(0.0f, 0.0f, 0.0f);
+  int x_74_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_56 = asfloat(x_10[0].x);
+  const float x_58 = round((x_56 * 0.125f));
+  const float x_60 = gl_FragCoord.x;
+  param = x_60;
+  param_1 = x_58;
+  const float x_61 = compute_value_f1_f1_(param, param_1);
+  c.x = x_61;
+  const float x_64 = gl_FragCoord.y;
+  param_2 = x_64;
+  param_3 = x_58;
+  const float x_65 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_65;
+  const float x_67 = c.x;
+  x_54 = c;
+  const float x_70 = x_54.y;
+  c.z = (x_67 + x_70);
+  x_74_phi = 0;
+  while (true) {
+    int x_75 = 0;
+    const int x_74 = x_74_phi;
+    if ((x_74 < 3)) {
+    } else {
+      break;
+    }
+    const int x_80_save = x_74;
+    const float x_81 = c[x_80_save];
+    if ((x_81 >= 1.0f)) {
+      const float x_86 = asfloat(x_16[0].x);
+      const float x_88 = asfloat(x_16[0].y);
+      if ((x_86 > x_88)) {
+        discard;
+      }
+      const float x_92 = c[x_80_save];
+      const float x_93 = c[x_80_save];
+      set_float3(c, x_80_save, (x_92 * x_93));
+    }
+    {
+      x_75 = (x_74 + 1);
+      x_74_phi = x_75;
+    }
+  }
+  const float3 x_97 = normalize(abs(c));
+  x_GLF_color = float4(x_97.x, x_97.y, x_97.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.msl
new file mode 100755
index 0000000..12d7016
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.msl
@@ -0,0 +1,137 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float x_104 = 0.0f;
+  float x_104_phi = 0.0f;
+  int x_107_phi = 0;
+  x_104_phi = -0.5f;
+  x_107_phi = 1;
+  while (true) {
+    float x_126 = 0.0f;
+    float x_125 = 0.0f;
+    int x_108 = 0;
+    float x_105_phi = 0.0f;
+    x_104 = x_104_phi;
+    int const x_107 = x_107_phi;
+    if ((x_107 < 800)) {
+    } else {
+      break;
+    }
+    float x_124 = 0.0f;
+    float x_125_phi = 0.0f;
+    if (((x_107 % 32) == 0)) {
+      x_126 = (x_104 + 0.400000006f);
+      x_105_phi = x_126;
+    } else {
+      float const x_118 = *(thirty_two);
+      x_125_phi = x_104;
+      if (((float(x_107) % rint(x_118)) <= 0.01f)) {
+        x_124 = (x_104 + 100.0f);
+        x_125_phi = x_124;
+      }
+      x_125 = x_125_phi;
+      x_105_phi = x_125;
+    }
+    float x_105 = 0.0f;
+    x_105 = x_105_phi;
+    float const x_128 = *(limit);
+    if ((float(x_107) >= x_128)) {
+      return x_105;
+    }
+    {
+      x_108 = (x_107 + 1);
+      x_104_phi = x_105;
+      x_107_phi = x_108;
+    }
+  }
+  return x_104;
+}
+
+void main_1(constant buf0& x_10, constant buf1& x_16, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  float3 x_54 = 0.0f;
+  int x_74_phi = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_56 = x_10.resolution.x;
+  float const x_58 = rint((x_56 * 0.125f));
+  float const x_60 = (*(tint_symbol_5)).x;
+  param = x_60;
+  param_1 = x_58;
+  float const x_61 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_61;
+  float const x_64 = (*(tint_symbol_5)).y;
+  param_2 = x_64;
+  param_3 = x_58;
+  float const x_65 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_65;
+  float const x_67 = c.x;
+  float3 const x_68 = c;
+  x_54 = x_68;
+  float const x_70 = x_54.y;
+  c.z = (x_67 + x_70);
+  x_74_phi = 0;
+  while (true) {
+    int x_75 = 0;
+    int const x_74 = x_74_phi;
+    if ((x_74 < 3)) {
+    } else {
+      break;
+    }
+    int const x_80_save = x_74;
+    float const x_81 = c[x_80_save];
+    if ((x_81 >= 1.0f)) {
+      float const x_86 = x_16.injectionSwitch.x;
+      float const x_88 = x_16.injectionSwitch.y;
+      if ((x_86 > x_88)) {
+        discard_fragment();
+      }
+      float const x_92 = c[x_80_save];
+      float const x_93 = c[x_80_save];
+      c[x_80_save] = (x_92 * x_93);
+    }
+    {
+      x_75 = (x_74 + 1);
+      x_74_phi = x_75;
+    }
+  }
+  float3 const x_95 = c;
+  float3 const x_97 = normalize(fabs(x_95));
+  *(tint_symbol_6) = float4(x_97.x, x_97.y, x_97.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]], constant buf1& x_16 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_10, x_16, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\uq0.0.metal:42:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_107) % rint(x_118)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..d622545
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.spvasm
@@ -0,0 +1,316 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 192
+; Schema: 0
+               OpCapability Shader
+         %67 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_10 "x_10"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_16 "x_16"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %x_104 "x_104"
+               OpName %x_104_phi "x_104_phi"
+               OpName %x_107_phi "x_107_phi"
+               OpName %x_126 "x_126"
+               OpName %x_125 "x_125"
+               OpName %x_108 "x_108"
+               OpName %x_105_phi "x_105_phi"
+               OpName %x_124 "x_124"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_105 "x_105"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %x_54 "x_54"
+               OpName %x_74_phi "x_74_phi"
+               OpName %x_75 "x_75"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_16 NonWritable
+               OpDecorate %x_16 DescriptorSet 0
+               OpDecorate %x_16 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_16 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %92 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %99 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+        %109 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%float_0_125 = OpConstant %float 0.125
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %179 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %18
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %23 = OpLabel
+      %x_104 = OpVariable %_ptr_Function_float Function %25
+  %x_104_phi = OpVariable %_ptr_Function_float Function %25
+  %x_107_phi = OpVariable %_ptr_Function_int Function %30
+      %x_126 = OpVariable %_ptr_Function_float Function %25
+      %x_125 = OpVariable %_ptr_Function_float Function %25
+      %x_108 = OpVariable %_ptr_Function_int Function %30
+  %x_105_phi = OpVariable %_ptr_Function_float Function %25
+      %x_124 = OpVariable %_ptr_Function_float Function %25
+  %x_125_phi = OpVariable %_ptr_Function_float Function %25
+      %x_105 = OpVariable %_ptr_Function_float Function %25
+               OpStore %x_104_phi %float_n0_5
+               OpStore %x_107_phi %int_1
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %41 = OpLoad %float %x_104_phi
+               OpStore %x_104 %41
+         %42 = OpLoad %int %x_107_phi
+         %44 = OpSLessThan %bool %42 %int_800
+               OpSelectionMerge %46 None
+               OpBranchConditional %44 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %34
+         %46 = OpLabel
+         %52 = OpSMod %int %42 %int_32
+         %54 = OpIEqual %bool %52 %int_0
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+         %58 = OpLoad %float %x_104
+         %60 = OpFAdd %float %58 %float_0_400000006
+               OpStore %x_126 %60
+         %61 = OpLoad %float %x_126
+               OpStore %x_105_phi %61
+               OpBranch %55
+         %57 = OpLabel
+         %63 = OpLoad %float %thirty_two
+         %64 = OpLoad %float %x_104
+               OpStore %x_125_phi %64
+         %65 = OpConvertSToF %float %42
+         %66 = OpExtInst %float %67 RoundEven %63
+         %68 = OpFMod %float %65 %66
+         %70 = OpFOrdLessThanEqual %bool %68 %float_0_00999999978
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %71
+         %72 = OpLabel
+         %73 = OpLoad %float %x_104
+         %75 = OpFAdd %float %73 %float_100
+               OpStore %x_124 %75
+         %76 = OpLoad %float %x_124
+               OpStore %x_125_phi %76
+               OpBranch %71
+         %71 = OpLabel
+         %77 = OpLoad %float %x_125_phi
+               OpStore %x_125 %77
+         %78 = OpLoad %float %x_125
+               OpStore %x_105_phi %78
+               OpBranch %55
+         %55 = OpLabel
+         %80 = OpLoad %float %x_105_phi
+               OpStore %x_105 %80
+         %82 = OpLoad %float %limit
+         %83 = OpConvertSToF %float %42
+         %84 = OpFOrdGreaterThanEqual %bool %83 %82
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+         %87 = OpLoad %float %x_105
+               OpReturnValue %87
+         %85 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+         %88 = OpIAdd %int %42 %int_1
+               OpStore %x_108 %88
+         %89 = OpLoad %float %x_105
+               OpStore %x_104_phi %89
+         %90 = OpLoad %int %x_108
+               OpStore %x_107_phi %90
+               OpBranch %33
+         %34 = OpLabel
+         %91 = OpLoad %float %x_104
+               OpReturnValue %91
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %92
+         %95 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %99
+      %param = OpVariable %_ptr_Function_float Function %25
+    %param_1 = OpVariable %_ptr_Function_float Function %25
+    %param_2 = OpVariable %_ptr_Function_float Function %25
+    %param_3 = OpVariable %_ptr_Function_float Function %25
+       %x_54 = OpVariable %_ptr_Function_v3float Function %99
+   %x_74_phi = OpVariable %_ptr_Function_int Function %30
+       %x_75 = OpVariable %_ptr_Function_int Function %30
+               OpStore %c %109
+        %113 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %114 = OpLoad %float %113
+        %117 = OpFMul %float %114 %float_0_125
+        %115 = OpExtInst %float %67 RoundEven %117
+        %119 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %120 = OpLoad %float %119
+               OpStore %param %120
+               OpStore %param_1 %115
+        %121 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %124 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %124 %121
+        %126 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %127 = OpLoad %float %126
+               OpStore %param_2 %127
+               OpStore %param_3 %115
+        %128 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %131 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %131 %128
+        %132 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %133 = OpLoad %float %132
+        %134 = OpLoad %v3float %c
+               OpStore %x_54 %134
+        %135 = OpAccessChain %_ptr_Function_float %x_54 %uint_1
+        %136 = OpLoad %float %135
+        %138 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %139 = OpFAdd %float %133 %136
+               OpStore %138 %139
+               OpStore %x_74_phi %int_0
+               OpBranch %140
+        %140 = OpLabel
+               OpLoopMerge %141 %142 None
+               OpBranch %143
+        %143 = OpLabel
+        %145 = OpLoad %int %x_74_phi
+        %147 = OpSLessThan %bool %145 %int_3
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %150
+        %149 = OpLabel
+               OpBranch %148
+        %150 = OpLabel
+               OpBranch %141
+        %148 = OpLabel
+        %151 = OpAccessChain %_ptr_Function_float %c %145
+        %152 = OpLoad %float %151
+        %154 = OpFOrdGreaterThanEqual %bool %152 %float_1
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_0
+        %158 = OpLoad %float %157
+        %159 = OpAccessChain %_ptr_Uniform_float %x_16 %uint_0 %uint_1
+        %160 = OpLoad %float %159
+        %161 = OpFOrdGreaterThan %bool %158 %160
+               OpSelectionMerge %162 None
+               OpBranchConditional %161 %163 %162
+        %163 = OpLabel
+               OpKill
+        %162 = OpLabel
+        %164 = OpAccessChain %_ptr_Function_float %c %145
+        %165 = OpLoad %float %164
+        %166 = OpAccessChain %_ptr_Function_float %c %145
+        %167 = OpLoad %float %166
+        %168 = OpAccessChain %_ptr_Function_float %c %145
+        %169 = OpFMul %float %165 %167
+               OpStore %168 %169
+               OpBranch %155
+        %155 = OpLabel
+               OpBranch %142
+        %142 = OpLabel
+        %170 = OpIAdd %int %145 %int_1
+               OpStore %x_75 %170
+        %171 = OpLoad %int %x_75
+               OpStore %x_74_phi %171
+               OpBranch %140
+        %141 = OpLabel
+        %172 = OpLoad %v3float %c
+        %174 = OpExtInst %v3float %67 FAbs %172
+        %173 = OpExtInst %v3float %67 Normalize %174
+        %175 = OpCompositeExtract %float %173 0
+        %176 = OpCompositeExtract %float %173 1
+        %177 = OpCompositeExtract %float %173 2
+        %178 = OpCompositeConstruct %v4float %175 %176 %177 %float_1
+               OpStore %x_GLF_color %178
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %179
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %183 = OpLabel
+        %184 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %184
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %92
+        %186 = OpLabel
+        %187 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %187
+        %188 = OpFunctionCall %void %main_1
+        %190 = OpLoad %v4float %x_GLF_color
+        %191 = OpCompositeConstruct %main_out %190
+        %189 = OpFunctionCall %void %tint_symbol_3 %191
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..57edb9b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl.expected.wgsl
@@ -0,0 +1,136 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var x_104 : f32;
+  var x_104_phi : f32;
+  var x_107_phi : i32;
+  x_104_phi = -0.5;
+  x_107_phi = 1;
+  loop {
+    var x_126 : f32;
+    var x_125 : f32;
+    var x_108 : i32;
+    var x_105_phi : f32;
+    x_104 = x_104_phi;
+    let x_107 : i32 = x_107_phi;
+    if ((x_107 < 800)) {
+    } else {
+      break;
+    }
+    var x_124 : f32;
+    var x_125_phi : f32;
+    if (((x_107 % 32) == 0)) {
+      x_126 = (x_104 + 0.400000006);
+      x_105_phi = x_126;
+    } else {
+      let x_118 : f32 = *(thirty_two);
+      x_125_phi = x_104;
+      if (((f32(x_107) % round(x_118)) <= 0.01)) {
+        x_124 = (x_104 + 100.0);
+        x_125_phi = x_124;
+      }
+      x_125 = x_125_phi;
+      x_105_phi = x_125;
+    }
+    var x_105 : f32;
+    x_105 = x_105_phi;
+    let x_128 : f32 = *(limit);
+    if ((f32(x_107) >= x_128)) {
+      return x_105;
+    }
+
+    continuing {
+      x_108 = (x_107 + 1);
+      x_104_phi = x_105;
+      x_107_phi = x_108;
+    }
+  }
+  return x_104;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var x_54 : vec3<f32>;
+  var x_74_phi : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_56 : f32 = x_10.resolution.x;
+  let x_58 : f32 = round((x_56 * 0.125));
+  let x_60 : f32 = gl_FragCoord.x;
+  param = x_60;
+  param_1 = x_58;
+  let x_61 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  let x_62 : ptr<function, f32> = &(c.x);
+  *(x_62) = x_61;
+  let x_64 : f32 = gl_FragCoord.y;
+  param_2 = x_64;
+  param_3 = x_58;
+  let x_65 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_65;
+  let x_67 : f32 = *(x_62);
+  let x_68 : vec3<f32> = c;
+  x_54 = x_68;
+  let x_70 : f32 = x_54.y;
+  c.z = (x_67 + x_70);
+  x_74_phi = 0;
+  loop {
+    var x_75 : i32;
+    let x_74 : i32 = x_74_phi;
+    if ((x_74 < 3)) {
+    } else {
+      break;
+    }
+    let x_80 : ptr<function, f32> = &(c[x_74]);
+    let x_81 : f32 = *(x_80);
+    if ((x_81 >= 1.0)) {
+      let x_86 : f32 = x_16.injectionSwitch.x;
+      let x_88 : f32 = x_16.injectionSwitch.y;
+      if ((x_86 > x_88)) {
+        discard;
+      }
+      let x_92 : f32 = *(x_80);
+      let x_93 : f32 = *(x_80);
+      *(x_80) = (x_92 * x_93);
+    }
+
+    continuing {
+      x_75 = (x_74 + 1);
+      x_74_phi = x_75;
+    }
+  }
+  let x_95 : vec3<f32> = c;
+  let x_97 : vec3<f32> = normalize(abs(x_95));
+  x_GLF_color = vec4<f32>(x_97.x, x_97.y, x_97.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm
new file mode 100644
index 0000000..9ae0514
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm
@@ -0,0 +1,275 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %compute_value_f1_f1_ "compute_value(f1;f1;"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %c "c"
+               OpName %thirty_two_0 "thirty_two"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %__0 ""
+               OpName %i_0 "i"
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %43 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+       %true = OpConstantTrue %bool
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %23
+         %60 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+%thirty_two_0 = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_float Function
+    %param_2 = OpVariable %_ptr_Function_float Function
+         %61 = OpVariable %_ptr_Function_v3float Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_float Function
+               OpStore %c %43
+         %62 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %63 = OpLoad %float %62
+         %64 = OpFDiv %float %63 %float_8
+         %65 = OpExtInst %float %1 Round %64
+               OpStore %thirty_two_0 %65
+         %66 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %67 = OpLoad %float %66
+               OpStore %param %67
+         %68 = OpLoad %float %thirty_two_0
+               OpStore %param_0 %68
+         %69 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_0
+         %70 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %70 %69
+         %71 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %72 = OpLoad %float %71
+               OpStore %param_1 %72
+         %73 = OpLoad %float %thirty_two_0
+               OpStore %param_2 %73
+         %74 = OpFunctionCall %float %compute_value_f1_f1_ %param_1 %param_2
+         %75 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %75 %74
+         %76 = OpAccessChain %_ptr_Function_float %c %uint_0
+         %77 = OpLoad %float %76
+               OpSelectionMerge %78 None
+               OpBranchConditional %true %79 %80
+         %79 = OpLabel
+         %81 = OpLoad %v3float %c
+               OpStore %61 %81
+               OpBranch %78
+         %80 = OpLabel
+         %82 = OpLoad %v3float %c
+         %83 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpVectorTimesScalar %v3float %82 %84
+               OpStore %61 %85
+               OpBranch %78
+         %78 = OpLabel
+         %86 = OpAccessChain %_ptr_Function_float %61 %uint_1
+         %87 = OpLoad %float %86
+         %88 = OpFAdd %float %77 %87
+         %89 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %89 %88
+               OpStore %i_0 %int_0
+               OpBranch %90
+         %90 = OpLabel
+               OpLoopMerge %91 %92 None
+               OpBranch %93
+         %93 = OpLabel
+         %94 = OpLoad %int %i_0
+         %95 = OpSLessThan %bool %94 %int_3
+               OpBranchConditional %95 %96 %91
+         %96 = OpLabel
+         %97 = OpLoad %int %i_0
+         %98 = OpAccessChain %_ptr_Function_float %c %97
+         %99 = OpLoad %float %98
+        %100 = OpFOrdGreaterThanEqual %bool %99 %float_1
+               OpSelectionMerge %101 None
+               OpBranchConditional %100 %102 %101
+        %102 = OpLabel
+        %103 = OpLoad %int %i_0
+        %104 = OpLoad %int %i_0
+        %105 = OpAccessChain %_ptr_Function_float %c %104
+        %106 = OpLoad %float %105
+        %107 = OpLoad %int %i_0
+        %108 = OpAccessChain %_ptr_Function_float %c %107
+        %109 = OpLoad %float %108
+        %110 = OpFMul %float %106 %109
+        %111 = OpAccessChain %_ptr_Function_float %c %103
+               OpStore %111 %110
+               OpBranch %101
+        %101 = OpLabel
+               OpStore %j %float_0
+               OpBranch %112
+        %112 = OpLabel
+               OpLoopMerge %113 %114 None
+               OpBranch %115
+        %115 = OpLabel
+        %116 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+        %117 = OpLoad %float %116
+        %118 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+        %119 = OpLoad %float %118
+        %120 = OpFOrdGreaterThan %bool %117 %119
+               OpBranchConditional %120 %121 %113
+        %121 = OpLabel
+        %122 = OpLoad %float %j
+        %123 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpFOrdGreaterThanEqual %bool %122 %124
+               OpSelectionMerge %126 None
+               OpBranchConditional %125 %127 %126
+        %127 = OpLabel
+               OpBranch %113
+        %126 = OpLabel
+        %128 = OpLoad %float %j
+        %129 = OpFAdd %float %128 %float_1
+               OpStore %j %129
+               OpBranch %114
+        %114 = OpLabel
+               OpBranch %112
+        %113 = OpLabel
+               OpBranch %92
+         %92 = OpLabel
+        %130 = OpLoad %int %i_0
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_0 %131
+               OpBranch %90
+         %91 = OpLabel
+        %132 = OpLoad %v3float %c
+        %133 = OpExtInst %v3float %1 FAbs %132
+        %134 = OpExtInst %v3float %1 Normalize %133
+        %135 = OpCompositeExtract %float %134 0
+        %136 = OpCompositeExtract %float %134 1
+        %137 = OpCompositeExtract %float %134 2
+        %138 = OpCompositeConstruct %v4float %135 %136 %137 %float_1
+               OpStore %_GLF_color %138
+               OpReturn
+               OpFunctionEnd
+%compute_value_f1_f1_ = OpFunction %float None %26
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+        %139 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %140
+        %140 = OpLabel
+               OpLoopMerge %141 %142 None
+               OpBranch %143
+        %143 = OpLabel
+        %144 = OpLoad %int %i
+        %145 = OpSLessThan %bool %144 %int_800
+               OpBranchConditional %145 %146 %141
+        %146 = OpLabel
+        %147 = OpLoad %int %i
+        %148 = OpSMod %int %147 %int_32
+        %149 = OpIEqual %bool %148 %int_0
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %152
+        %151 = OpLabel
+        %153 = OpLoad %float %result
+        %154 = OpFAdd %float %153 %float_0_400000006
+               OpStore %result %154
+               OpBranch %150
+        %152 = OpLabel
+        %155 = OpLoad %int %i
+        %156 = OpConvertSToF %float %155
+        %157 = OpLoad %float %thirty_two
+        %158 = OpExtInst %float %1 Round %157
+        %159 = OpFMod %float %156 %158
+        %160 = OpFOrdLessThanEqual %bool %159 %float_0_00999999978
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %float %result
+        %164 = OpFAdd %float %163 %float_100
+               OpStore %result %164
+               OpBranch %161
+        %161 = OpLabel
+               OpBranch %150
+        %150 = OpLabel
+        %165 = OpLoad %int %i
+        %166 = OpConvertSToF %float %165
+        %167 = OpLoad %float %limit
+        %168 = OpFOrdGreaterThanEqual %bool %166 %167
+               OpSelectionMerge %169 None
+               OpBranchConditional %168 %170 %169
+        %170 = OpLabel
+        %171 = OpLoad %float %result
+               OpReturnValue %171
+        %169 = OpLabel
+               OpBranch %142
+        %142 = OpLabel
+        %172 = OpLoad %int %i
+        %173 = OpIAdd %int %172 %int_1
+               OpStore %i %173
+               OpBranch %140
+        %141 = OpLabel
+        %174 = OpLoad %float %result
+               OpReturnValue %174
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..8f3bad1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.hlsl
@@ -0,0 +1,122 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_19 : register(b1, space0) {
+  uint4 x_19[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  {
+    for(; (i < 800); i = (i + 1)) {
+      if (((i % 32) == 0)) {
+        result = (result + 0.400000006f);
+      } else {
+        const int x_155 = i;
+        const float x_157 = thirty_two;
+        if (((float(x_155) % round(x_157)) <= 0.01f)) {
+          result = (result + 100.0f);
+        }
+      }
+      const int x_165 = i;
+      const float x_167 = limit;
+      if ((float(x_165) >= x_167)) {
+        return result;
+      }
+    }
+  }
+  return result;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  float3 x_61 = float3(0.0f, 0.0f, 0.0f);
+  int i_1 = 0;
+  float j = 0.0f;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_63 = asfloat(x_13[0].x);
+  thirty_two_1 = round((x_63 / 8.0f));
+  const float x_67 = gl_FragCoord.x;
+  param = x_67;
+  param_1 = thirty_two_1;
+  const float x_69 = compute_value_f1_f1_(param, param_1);
+  c.x = x_69;
+  const float x_72 = gl_FragCoord.y;
+  param_2 = x_72;
+  param_3 = thirty_two_1;
+  const float x_74 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_74;
+  const float x_77 = c.x;
+  if (true) {
+    x_61 = c;
+  } else {
+    const float3 x_82 = c;
+    const float x_84 = asfloat(x_19[0].x);
+    x_61 = (x_82 * x_84);
+  }
+  const float x_87 = x_61.y;
+  c.z = (x_77 + x_87);
+  i_1 = 0;
+  {
+    for(; (i_1 < 3); i_1 = (i_1 + 1)) {
+      const float x_99 = c[i_1];
+      if ((x_99 >= 1.0f)) {
+        const int x_103 = i_1;
+        const float x_106 = c[i_1];
+        const float x_109 = c[i_1];
+        set_float3(c, x_103, (x_106 * x_109));
+      }
+      j = 0.0f;
+      while (true) {
+        const float x_117 = asfloat(x_19[0].x);
+        const float x_119 = asfloat(x_19[0].y);
+        if ((x_117 > x_119)) {
+        } else {
+          break;
+        }
+        const float x_122 = j;
+        const float x_124 = asfloat(x_19[0].x);
+        if ((x_122 >= x_124)) {
+          break;
+        }
+        j = (j + 1.0f);
+      }
+    }
+  }
+  const float3 x_134 = normalize(abs(c));
+  x_GLF_color = float4(x_134.x, x_134.y, x_134.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.msl
new file mode 100755
index 0000000..721f3ab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.msl
@@ -0,0 +1,151 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  while (true) {
+    int const x_144 = i;
+    if ((x_144 < 800)) {
+    } else {
+      break;
+    }
+    int const x_147 = i;
+    if (((x_147 % 32) == 0)) {
+      float const x_153 = result;
+      result = (x_153 + 0.400000006f);
+    } else {
+      int const x_155 = i;
+      float const x_157 = *(thirty_two);
+      if (((float(x_155) % rint(x_157)) <= 0.01f)) {
+        float const x_163 = result;
+        result = (x_163 + 100.0f);
+      }
+    }
+    int const x_165 = i;
+    float const x_167 = *(limit);
+    if ((float(x_165) >= x_167)) {
+      float const x_171 = result;
+      return x_171;
+    }
+    {
+      int const x_172 = i;
+      i = (x_172 + 1);
+    }
+  }
+  float const x_174 = result;
+  return x_174;
+}
+
+void main_1(constant buf0& x_13, constant buf1& x_19, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  float3 x_61 = 0.0f;
+  int i_1 = 0;
+  float j = 0.0f;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_63 = x_13.resolution.x;
+  thirty_two_1 = rint((x_63 / 8.0f));
+  float const x_67 = (*(tint_symbol_5)).x;
+  param = x_67;
+  float const x_68 = thirty_two_1;
+  param_1 = x_68;
+  float const x_69 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  float const x_72 = (*(tint_symbol_5)).y;
+  param_2 = x_72;
+  float const x_73 = thirty_two_1;
+  param_3 = x_73;
+  float const x_74 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  float const x_77 = c.x;
+  if (true) {
+    float3 const x_81 = c;
+    x_61 = x_81;
+  } else {
+    float3 const x_82 = c;
+    float const x_84 = x_19.injectionSwitch.x;
+    x_61 = (x_82 * x_84);
+  }
+  float const x_87 = x_61.y;
+  c.z = (x_77 + x_87);
+  i_1 = 0;
+  while (true) {
+    int const x_94 = i_1;
+    if ((x_94 < 3)) {
+    } else {
+      break;
+    }
+    int const x_97 = i_1;
+    float const x_99 = c[x_97];
+    if ((x_99 >= 1.0f)) {
+      int const x_103 = i_1;
+      int const x_104 = i_1;
+      float const x_106 = c[x_104];
+      int const x_107 = i_1;
+      float const x_109 = c[x_107];
+      c[x_103] = (x_106 * x_109);
+    }
+    j = 0.0f;
+    while (true) {
+      float const x_117 = x_19.injectionSwitch.x;
+      float const x_119 = x_19.injectionSwitch.y;
+      if ((x_117 > x_119)) {
+      } else {
+        break;
+      }
+      float const x_122 = j;
+      float const x_124 = x_19.injectionSwitch.x;
+      if ((x_122 >= x_124)) {
+        break;
+      }
+      float const x_128 = j;
+      j = (x_128 + 1.0f);
+    }
+    {
+      int const x_130 = i_1;
+      i_1 = (x_130 + 1);
+    }
+  }
+  float3 const x_132 = c;
+  float3 const x_134 = normalize(fabs(x_132));
+  *(tint_symbol_6) = float4(x_134.x, x_134.y, x_134.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]], constant buf1& x_19 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_13, x_19, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\ufhc.0.metal:35:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_155) % rint(x_157)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..304913e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.spvasm
@@ -0,0 +1,331 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 207
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_19 "x_19"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %thirty_two_1 "thirty_two_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %x_61 "x_61"
+               OpName %i_1 "i_1"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_19 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %79 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %86 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %98 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+        %194 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %18
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %23 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function %25
+          %i = OpVariable %_ptr_Function_int Function %29
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %38 = OpSLessThan %bool %36 %int_800
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %33
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpSMod %int %43 %int_32
+         %47 = OpIEqual %bool %45 %int_0
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+         %51 = OpLoad %float %result
+         %53 = OpFAdd %float %51 %float_0_400000006
+               OpStore %result %53
+               OpBranch %48
+         %50 = OpLabel
+         %54 = OpLoad %int %i
+         %56 = OpLoad %float %thirty_two
+         %57 = OpConvertSToF %float %54
+         %58 = OpExtInst %float %59 RoundEven %56
+         %60 = OpFMod %float %57 %58
+         %62 = OpFOrdLessThanEqual %bool %60 %float_0_00999999978
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+         %65 = OpLoad %float %result
+         %67 = OpFAdd %float %65 %float_100
+               OpStore %result %67
+               OpBranch %63
+         %63 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+         %68 = OpLoad %int %i
+         %70 = OpLoad %float %limit
+         %71 = OpConvertSToF %float %68
+         %72 = OpFOrdGreaterThanEqual %bool %71 %70
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpLoad %float %result
+               OpReturnValue %75
+         %73 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+               OpBranch %32
+         %33 = OpLabel
+         %78 = OpLoad %float %result
+               OpReturnValue %78
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %79
+         %82 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %86
+%thirty_two_1 = OpVariable %_ptr_Function_float Function %25
+      %param = OpVariable %_ptr_Function_float Function %25
+    %param_1 = OpVariable %_ptr_Function_float Function %25
+    %param_2 = OpVariable %_ptr_Function_float Function %25
+    %param_3 = OpVariable %_ptr_Function_float Function %25
+       %x_61 = OpVariable %_ptr_Function_v3float Function %86
+        %i_1 = OpVariable %_ptr_Function_int Function %29
+          %j = OpVariable %_ptr_Function_float Function %25
+               OpStore %c %98
+        %102 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+        %103 = OpLoad %float %102
+        %105 = OpFDiv %float %103 %float_8
+        %104 = OpExtInst %float %59 RoundEven %105
+               OpStore %thirty_two_1 %104
+        %107 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %108 = OpLoad %float %107
+               OpStore %param %108
+        %109 = OpLoad %float %thirty_two_1
+               OpStore %param_1 %109
+        %110 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %113 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %113 %110
+        %115 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %116 = OpLoad %float %115
+               OpStore %param_2 %116
+        %117 = OpLoad %float %thirty_two_1
+               OpStore %param_3 %117
+        %118 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %121 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %121 %118
+        %122 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %123 = OpLoad %float %122
+               OpSelectionMerge %125 None
+               OpBranchConditional %true %126 %127
+        %126 = OpLabel
+        %128 = OpLoad %v3float %c
+               OpStore %x_61 %128
+               OpBranch %125
+        %127 = OpLabel
+        %129 = OpLoad %v3float %c
+        %130 = OpAccessChain %_ptr_Uniform_float %x_19 %uint_0 %uint_0
+        %131 = OpLoad %float %130
+        %132 = OpVectorTimesScalar %v3float %129 %131
+               OpStore %x_61 %132
+               OpBranch %125
+        %125 = OpLabel
+        %133 = OpAccessChain %_ptr_Function_float %x_61 %uint_1
+        %134 = OpLoad %float %133
+        %136 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %137 = OpFAdd %float %123 %134
+               OpStore %136 %137
+               OpStore %i_1 %int_0
+               OpBranch %138
+        %138 = OpLabel
+               OpLoopMerge %139 %140 None
+               OpBranch %141
+        %141 = OpLabel
+        %142 = OpLoad %int %i_1
+        %144 = OpSLessThan %bool %142 %int_3
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %147
+        %146 = OpLabel
+               OpBranch %145
+        %147 = OpLabel
+               OpBranch %139
+        %145 = OpLabel
+        %148 = OpLoad %int %i_1
+        %149 = OpAccessChain %_ptr_Function_float %c %148
+        %150 = OpLoad %float %149
+        %152 = OpFOrdGreaterThanEqual %bool %150 %float_1
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+        %155 = OpLoad %int %i_1
+        %156 = OpLoad %int %i_1
+        %157 = OpAccessChain %_ptr_Function_float %c %156
+        %158 = OpLoad %float %157
+        %159 = OpLoad %int %i_1
+        %160 = OpAccessChain %_ptr_Function_float %c %159
+        %161 = OpLoad %float %160
+        %162 = OpAccessChain %_ptr_Function_float %c %155
+        %163 = OpFMul %float %158 %161
+               OpStore %162 %163
+               OpBranch %153
+        %153 = OpLabel
+               OpStore %j %float_0
+               OpBranch %165
+        %165 = OpLabel
+               OpLoopMerge %166 %167 None
+               OpBranch %168
+        %168 = OpLabel
+        %169 = OpAccessChain %_ptr_Uniform_float %x_19 %uint_0 %uint_0
+        %170 = OpLoad %float %169
+        %171 = OpAccessChain %_ptr_Uniform_float %x_19 %uint_0 %uint_1
+        %172 = OpLoad %float %171
+        %173 = OpFOrdGreaterThan %bool %170 %172
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+               OpBranch %174
+        %176 = OpLabel
+               OpBranch %166
+        %174 = OpLabel
+        %177 = OpLoad %float %j
+        %178 = OpAccessChain %_ptr_Uniform_float %x_19 %uint_0 %uint_0
+        %179 = OpLoad %float %178
+        %180 = OpFOrdGreaterThanEqual %bool %177 %179
+               OpSelectionMerge %181 None
+               OpBranchConditional %180 %182 %181
+        %182 = OpLabel
+               OpBranch %166
+        %181 = OpLabel
+        %183 = OpLoad %float %j
+        %184 = OpFAdd %float %183 %float_1
+               OpStore %j %184
+               OpBranch %167
+        %167 = OpLabel
+               OpBranch %165
+        %166 = OpLabel
+               OpBranch %140
+        %140 = OpLabel
+        %185 = OpLoad %int %i_1
+        %186 = OpIAdd %int %185 %int_1
+               OpStore %i_1 %186
+               OpBranch %138
+        %139 = OpLabel
+        %187 = OpLoad %v3float %c
+        %189 = OpExtInst %v3float %59 FAbs %187
+        %188 = OpExtInst %v3float %59 Normalize %189
+        %190 = OpCompositeExtract %float %188 0
+        %191 = OpCompositeExtract %float %188 1
+        %192 = OpCompositeExtract %float %188 2
+        %193 = OpCompositeConstruct %v4float %190 %191 %192 %float_1
+               OpStore %x_GLF_color %193
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %194
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %198 = OpLabel
+        %199 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %199
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %79
+        %201 = OpLabel
+        %202 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %202
+        %203 = OpFunctionCall %void %main_1
+        %205 = OpLoad %v4float %x_GLF_color
+        %206 = OpCompositeConstruct %main_out %205
+        %204 = OpFunctionCall %void %tint_symbol_3 %206
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..97ffaf9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.spvasm.expected.wgsl
@@ -0,0 +1,149 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_144 : i32 = i;
+    if ((x_144 < 800)) {
+    } else {
+      break;
+    }
+    let x_147 : i32 = i;
+    if (((x_147 % 32) == 0)) {
+      let x_153 : f32 = result;
+      result = (x_153 + 0.400000006);
+    } else {
+      let x_155 : i32 = i;
+      let x_157 : f32 = *(thirty_two);
+      if (((f32(x_155) % round(x_157)) <= 0.01)) {
+        let x_163 : f32 = result;
+        result = (x_163 + 100.0);
+      }
+    }
+    let x_165 : i32 = i;
+    let x_167 : f32 = *(limit);
+    if ((f32(x_165) >= x_167)) {
+      let x_171 : f32 = result;
+      return x_171;
+    }
+
+    continuing {
+      let x_172 : i32 = i;
+      i = (x_172 + 1);
+    }
+  }
+  let x_174 : f32 = result;
+  return x_174;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var x_61 : vec3<f32>;
+  var i_1 : i32;
+  var j : f32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_63 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_63 / 8.0));
+  let x_67 : f32 = gl_FragCoord.x;
+  param = x_67;
+  let x_68 : f32 = thirty_two_1;
+  param_1 = x_68;
+  let x_69 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  let x_72 : f32 = gl_FragCoord.y;
+  param_2 = x_72;
+  let x_73 : f32 = thirty_two_1;
+  param_3 = x_73;
+  let x_74 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  let x_77 : f32 = c.x;
+  if (true) {
+    let x_81 : vec3<f32> = c;
+    x_61 = x_81;
+  } else {
+    let x_82 : vec3<f32> = c;
+    let x_84 : f32 = x_19.injectionSwitch.x;
+    x_61 = (x_82 * x_84);
+  }
+  let x_87 : f32 = x_61.y;
+  c.z = (x_77 + x_87);
+  i_1 = 0;
+  loop {
+    let x_94 : i32 = i_1;
+    if ((x_94 < 3)) {
+    } else {
+      break;
+    }
+    let x_97 : i32 = i_1;
+    let x_99 : f32 = c[x_97];
+    if ((x_99 >= 1.0)) {
+      let x_103 : i32 = i_1;
+      let x_104 : i32 = i_1;
+      let x_106 : f32 = c[x_104];
+      let x_107 : i32 = i_1;
+      let x_109 : f32 = c[x_107];
+      c[x_103] = (x_106 * x_109);
+    }
+    j = 0.0;
+    loop {
+      let x_117 : f32 = x_19.injectionSwitch.x;
+      let x_119 : f32 = x_19.injectionSwitch.y;
+      if ((x_117 > x_119)) {
+      } else {
+        break;
+      }
+      let x_122 : f32 = j;
+      let x_124 : f32 = x_19.injectionSwitch.x;
+      if ((x_122 >= x_124)) {
+        break;
+      }
+      let x_128 : f32 = j;
+      j = (x_128 + 1.0);
+    }
+
+    continuing {
+      let x_130 : i32 = i_1;
+      i_1 = (x_130 + 1);
+    }
+  }
+  let x_132 : vec3<f32> = c;
+  let x_134 : vec3<f32> = normalize(abs(x_132));
+  x_GLF_color = vec4<f32>(x_134.x, x_134.y, x_134.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
new file mode 100644
index 0000000..97ffaf9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
@@ -0,0 +1,149 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_144 : i32 = i;
+    if ((x_144 < 800)) {
+    } else {
+      break;
+    }
+    let x_147 : i32 = i;
+    if (((x_147 % 32) == 0)) {
+      let x_153 : f32 = result;
+      result = (x_153 + 0.400000006);
+    } else {
+      let x_155 : i32 = i;
+      let x_157 : f32 = *(thirty_two);
+      if (((f32(x_155) % round(x_157)) <= 0.01)) {
+        let x_163 : f32 = result;
+        result = (x_163 + 100.0);
+      }
+    }
+    let x_165 : i32 = i;
+    let x_167 : f32 = *(limit);
+    if ((f32(x_165) >= x_167)) {
+      let x_171 : f32 = result;
+      return x_171;
+    }
+
+    continuing {
+      let x_172 : i32 = i;
+      i = (x_172 + 1);
+    }
+  }
+  let x_174 : f32 = result;
+  return x_174;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var x_61 : vec3<f32>;
+  var i_1 : i32;
+  var j : f32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_63 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_63 / 8.0));
+  let x_67 : f32 = gl_FragCoord.x;
+  param = x_67;
+  let x_68 : f32 = thirty_two_1;
+  param_1 = x_68;
+  let x_69 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  let x_72 : f32 = gl_FragCoord.y;
+  param_2 = x_72;
+  let x_73 : f32 = thirty_two_1;
+  param_3 = x_73;
+  let x_74 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  let x_77 : f32 = c.x;
+  if (true) {
+    let x_81 : vec3<f32> = c;
+    x_61 = x_81;
+  } else {
+    let x_82 : vec3<f32> = c;
+    let x_84 : f32 = x_19.injectionSwitch.x;
+    x_61 = (x_82 * x_84);
+  }
+  let x_87 : f32 = x_61.y;
+  c.z = (x_77 + x_87);
+  i_1 = 0;
+  loop {
+    let x_94 : i32 = i_1;
+    if ((x_94 < 3)) {
+    } else {
+      break;
+    }
+    let x_97 : i32 = i_1;
+    let x_99 : f32 = c[x_97];
+    if ((x_99 >= 1.0)) {
+      let x_103 : i32 = i_1;
+      let x_104 : i32 = i_1;
+      let x_106 : f32 = c[x_104];
+      let x_107 : i32 = i_1;
+      let x_109 : f32 = c[x_107];
+      c[x_103] = (x_106 * x_109);
+    }
+    j = 0.0;
+    loop {
+      let x_117 : f32 = x_19.injectionSwitch.x;
+      let x_119 : f32 = x_19.injectionSwitch.y;
+      if ((x_117 > x_119)) {
+      } else {
+        break;
+      }
+      let x_122 : f32 = j;
+      let x_124 : f32 = x_19.injectionSwitch.x;
+      if ((x_122 >= x_124)) {
+        break;
+      }
+      let x_128 : f32 = j;
+      j = (x_128 + 1.0);
+    }
+
+    continuing {
+      let x_130 : i32 = i_1;
+      i_1 = (x_130 + 1);
+    }
+  }
+  let x_132 : vec3<f32> = c;
+  let x_134 : vec3<f32> = normalize(abs(x_132));
+  x_GLF_color = vec4<f32>(x_134.x, x_134.y, x_134.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..8f3bad1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.hlsl
@@ -0,0 +1,122 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_19 : register(b1, space0) {
+  uint4 x_19[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  {
+    for(; (i < 800); i = (i + 1)) {
+      if (((i % 32) == 0)) {
+        result = (result + 0.400000006f);
+      } else {
+        const int x_155 = i;
+        const float x_157 = thirty_two;
+        if (((float(x_155) % round(x_157)) <= 0.01f)) {
+          result = (result + 100.0f);
+        }
+      }
+      const int x_165 = i;
+      const float x_167 = limit;
+      if ((float(x_165) >= x_167)) {
+        return result;
+      }
+    }
+  }
+  return result;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  float3 x_61 = float3(0.0f, 0.0f, 0.0f);
+  int i_1 = 0;
+  float j = 0.0f;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_63 = asfloat(x_13[0].x);
+  thirty_two_1 = round((x_63 / 8.0f));
+  const float x_67 = gl_FragCoord.x;
+  param = x_67;
+  param_1 = thirty_two_1;
+  const float x_69 = compute_value_f1_f1_(param, param_1);
+  c.x = x_69;
+  const float x_72 = gl_FragCoord.y;
+  param_2 = x_72;
+  param_3 = thirty_two_1;
+  const float x_74 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_74;
+  const float x_77 = c.x;
+  if (true) {
+    x_61 = c;
+  } else {
+    const float3 x_82 = c;
+    const float x_84 = asfloat(x_19[0].x);
+    x_61 = (x_82 * x_84);
+  }
+  const float x_87 = x_61.y;
+  c.z = (x_77 + x_87);
+  i_1 = 0;
+  {
+    for(; (i_1 < 3); i_1 = (i_1 + 1)) {
+      const float x_99 = c[i_1];
+      if ((x_99 >= 1.0f)) {
+        const int x_103 = i_1;
+        const float x_106 = c[i_1];
+        const float x_109 = c[i_1];
+        set_float3(c, x_103, (x_106 * x_109));
+      }
+      j = 0.0f;
+      while (true) {
+        const float x_117 = asfloat(x_19[0].x);
+        const float x_119 = asfloat(x_19[0].y);
+        if ((x_117 > x_119)) {
+        } else {
+          break;
+        }
+        const float x_122 = j;
+        const float x_124 = asfloat(x_19[0].x);
+        if ((x_122 >= x_124)) {
+          break;
+        }
+        j = (j + 1.0f);
+      }
+    }
+  }
+  const float3 x_134 = normalize(abs(c));
+  x_GLF_color = float4(x_134.x, x_134.y, x_134.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.msl
new file mode 100755
index 0000000..2641e75
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.msl
@@ -0,0 +1,151 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  while (true) {
+    int const x_144 = i;
+    if ((x_144 < 800)) {
+    } else {
+      break;
+    }
+    int const x_147 = i;
+    if (((x_147 % 32) == 0)) {
+      float const x_153 = result;
+      result = (x_153 + 0.400000006f);
+    } else {
+      int const x_155 = i;
+      float const x_157 = *(thirty_two);
+      if (((float(x_155) % rint(x_157)) <= 0.01f)) {
+        float const x_163 = result;
+        result = (x_163 + 100.0f);
+      }
+    }
+    int const x_165 = i;
+    float const x_167 = *(limit);
+    if ((float(x_165) >= x_167)) {
+      float const x_171 = result;
+      return x_171;
+    }
+    {
+      int const x_172 = i;
+      i = (x_172 + 1);
+    }
+  }
+  float const x_174 = result;
+  return x_174;
+}
+
+void main_1(constant buf0& x_13, constant buf1& x_19, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  float3 x_61 = 0.0f;
+  int i_1 = 0;
+  float j = 0.0f;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_63 = x_13.resolution.x;
+  thirty_two_1 = rint((x_63 / 8.0f));
+  float const x_67 = (*(tint_symbol_5)).x;
+  param = x_67;
+  float const x_68 = thirty_two_1;
+  param_1 = x_68;
+  float const x_69 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  float const x_72 = (*(tint_symbol_5)).y;
+  param_2 = x_72;
+  float const x_73 = thirty_two_1;
+  param_3 = x_73;
+  float const x_74 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  float const x_77 = c.x;
+  if (true) {
+    float3 const x_81 = c;
+    x_61 = x_81;
+  } else {
+    float3 const x_82 = c;
+    float const x_84 = x_19.injectionSwitch.x;
+    x_61 = (x_82 * x_84);
+  }
+  float const x_87 = x_61.y;
+  c.z = (x_77 + x_87);
+  i_1 = 0;
+  while (true) {
+    int const x_94 = i_1;
+    if ((x_94 < 3)) {
+    } else {
+      break;
+    }
+    int const x_97 = i_1;
+    float const x_99 = c[x_97];
+    if ((x_99 >= 1.0f)) {
+      int const x_103 = i_1;
+      int const x_104 = i_1;
+      float const x_106 = c[x_104];
+      int const x_107 = i_1;
+      float const x_109 = c[x_107];
+      c[x_103] = (x_106 * x_109);
+    }
+    j = 0.0f;
+    while (true) {
+      float const x_117 = x_19.injectionSwitch.x;
+      float const x_119 = x_19.injectionSwitch.y;
+      if ((x_117 > x_119)) {
+      } else {
+        break;
+      }
+      float const x_122 = j;
+      float const x_124 = x_19.injectionSwitch.x;
+      if ((x_122 >= x_124)) {
+        break;
+      }
+      float const x_128 = j;
+      j = (x_128 + 1.0f);
+    }
+    {
+      int const x_130 = i_1;
+      i_1 = (x_130 + 1);
+    }
+  }
+  float3 const x_132 = c;
+  float3 const x_134 = normalize(fabs(x_132));
+  *(tint_symbol_6) = float4(x_134.x, x_134.y, x_134.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]], constant buf1& x_19 [[buffer(1)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_13, x_19, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\u7k8.0.metal:35:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_155) % rint(x_157)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..304913e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.spvasm
@@ -0,0 +1,331 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 207
+; Schema: 0
+               OpCapability Shader
+         %59 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_19 "x_19"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %thirty_two_1 "thirty_two_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %x_61 "x_61"
+               OpName %i_1 "i_1"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 1
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_19 = OpVariable %_ptr_Uniform_buf1 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %25 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %79 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %86 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %98 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+       %true = OpConstantTrue %bool
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+        %194 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %18
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %23 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function %25
+          %i = OpVariable %_ptr_Function_int Function %29
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %32
+         %32 = OpLabel
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpLoad %int %i
+         %38 = OpSLessThan %bool %36 %int_800
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %33
+         %40 = OpLabel
+         %43 = OpLoad %int %i
+         %45 = OpSMod %int %43 %int_32
+         %47 = OpIEqual %bool %45 %int_0
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %50
+         %49 = OpLabel
+         %51 = OpLoad %float %result
+         %53 = OpFAdd %float %51 %float_0_400000006
+               OpStore %result %53
+               OpBranch %48
+         %50 = OpLabel
+         %54 = OpLoad %int %i
+         %56 = OpLoad %float %thirty_two
+         %57 = OpConvertSToF %float %54
+         %58 = OpExtInst %float %59 RoundEven %56
+         %60 = OpFMod %float %57 %58
+         %62 = OpFOrdLessThanEqual %bool %60 %float_0_00999999978
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %63
+         %64 = OpLabel
+         %65 = OpLoad %float %result
+         %67 = OpFAdd %float %65 %float_100
+               OpStore %result %67
+               OpBranch %63
+         %63 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+         %68 = OpLoad %int %i
+         %70 = OpLoad %float %limit
+         %71 = OpConvertSToF %float %68
+         %72 = OpFOrdGreaterThanEqual %bool %71 %70
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %73
+         %74 = OpLabel
+         %75 = OpLoad %float %result
+               OpReturnValue %75
+         %73 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+               OpBranch %32
+         %33 = OpLabel
+         %78 = OpLoad %float %result
+               OpReturnValue %78
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %79
+         %82 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %86
+%thirty_two_1 = OpVariable %_ptr_Function_float Function %25
+      %param = OpVariable %_ptr_Function_float Function %25
+    %param_1 = OpVariable %_ptr_Function_float Function %25
+    %param_2 = OpVariable %_ptr_Function_float Function %25
+    %param_3 = OpVariable %_ptr_Function_float Function %25
+       %x_61 = OpVariable %_ptr_Function_v3float Function %86
+        %i_1 = OpVariable %_ptr_Function_int Function %29
+          %j = OpVariable %_ptr_Function_float Function %25
+               OpStore %c %98
+        %102 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+        %103 = OpLoad %float %102
+        %105 = OpFDiv %float %103 %float_8
+        %104 = OpExtInst %float %59 RoundEven %105
+               OpStore %thirty_two_1 %104
+        %107 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %108 = OpLoad %float %107
+               OpStore %param %108
+        %109 = OpLoad %float %thirty_two_1
+               OpStore %param_1 %109
+        %110 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %113 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %113 %110
+        %115 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %116 = OpLoad %float %115
+               OpStore %param_2 %116
+        %117 = OpLoad %float %thirty_two_1
+               OpStore %param_3 %117
+        %118 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %121 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %121 %118
+        %122 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %123 = OpLoad %float %122
+               OpSelectionMerge %125 None
+               OpBranchConditional %true %126 %127
+        %126 = OpLabel
+        %128 = OpLoad %v3float %c
+               OpStore %x_61 %128
+               OpBranch %125
+        %127 = OpLabel
+        %129 = OpLoad %v3float %c
+        %130 = OpAccessChain %_ptr_Uniform_float %x_19 %uint_0 %uint_0
+        %131 = OpLoad %float %130
+        %132 = OpVectorTimesScalar %v3float %129 %131
+               OpStore %x_61 %132
+               OpBranch %125
+        %125 = OpLabel
+        %133 = OpAccessChain %_ptr_Function_float %x_61 %uint_1
+        %134 = OpLoad %float %133
+        %136 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %137 = OpFAdd %float %123 %134
+               OpStore %136 %137
+               OpStore %i_1 %int_0
+               OpBranch %138
+        %138 = OpLabel
+               OpLoopMerge %139 %140 None
+               OpBranch %141
+        %141 = OpLabel
+        %142 = OpLoad %int %i_1
+        %144 = OpSLessThan %bool %142 %int_3
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %147
+        %146 = OpLabel
+               OpBranch %145
+        %147 = OpLabel
+               OpBranch %139
+        %145 = OpLabel
+        %148 = OpLoad %int %i_1
+        %149 = OpAccessChain %_ptr_Function_float %c %148
+        %150 = OpLoad %float %149
+        %152 = OpFOrdGreaterThanEqual %bool %150 %float_1
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+        %155 = OpLoad %int %i_1
+        %156 = OpLoad %int %i_1
+        %157 = OpAccessChain %_ptr_Function_float %c %156
+        %158 = OpLoad %float %157
+        %159 = OpLoad %int %i_1
+        %160 = OpAccessChain %_ptr_Function_float %c %159
+        %161 = OpLoad %float %160
+        %162 = OpAccessChain %_ptr_Function_float %c %155
+        %163 = OpFMul %float %158 %161
+               OpStore %162 %163
+               OpBranch %153
+        %153 = OpLabel
+               OpStore %j %float_0
+               OpBranch %165
+        %165 = OpLabel
+               OpLoopMerge %166 %167 None
+               OpBranch %168
+        %168 = OpLabel
+        %169 = OpAccessChain %_ptr_Uniform_float %x_19 %uint_0 %uint_0
+        %170 = OpLoad %float %169
+        %171 = OpAccessChain %_ptr_Uniform_float %x_19 %uint_0 %uint_1
+        %172 = OpLoad %float %171
+        %173 = OpFOrdGreaterThan %bool %170 %172
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %176
+        %175 = OpLabel
+               OpBranch %174
+        %176 = OpLabel
+               OpBranch %166
+        %174 = OpLabel
+        %177 = OpLoad %float %j
+        %178 = OpAccessChain %_ptr_Uniform_float %x_19 %uint_0 %uint_0
+        %179 = OpLoad %float %178
+        %180 = OpFOrdGreaterThanEqual %bool %177 %179
+               OpSelectionMerge %181 None
+               OpBranchConditional %180 %182 %181
+        %182 = OpLabel
+               OpBranch %166
+        %181 = OpLabel
+        %183 = OpLoad %float %j
+        %184 = OpFAdd %float %183 %float_1
+               OpStore %j %184
+               OpBranch %167
+        %167 = OpLabel
+               OpBranch %165
+        %166 = OpLabel
+               OpBranch %140
+        %140 = OpLabel
+        %185 = OpLoad %int %i_1
+        %186 = OpIAdd %int %185 %int_1
+               OpStore %i_1 %186
+               OpBranch %138
+        %139 = OpLabel
+        %187 = OpLoad %v3float %c
+        %189 = OpExtInst %v3float %59 FAbs %187
+        %188 = OpExtInst %v3float %59 Normalize %189
+        %190 = OpCompositeExtract %float %188 0
+        %191 = OpCompositeExtract %float %188 1
+        %192 = OpCompositeExtract %float %188 2
+        %193 = OpCompositeConstruct %v4float %190 %191 %192 %float_1
+               OpStore %x_GLF_color %193
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %194
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %198 = OpLabel
+        %199 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %199
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %79
+        %201 = OpLabel
+        %202 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %202
+        %203 = OpFunctionCall %void %main_1
+        %205 = OpLoad %v4float %x_GLF_color
+        %206 = OpCompositeConstruct %main_out %205
+        %204 = OpFunctionCall %void %tint_symbol_3 %206
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..97ffaf9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl.expected.wgsl
@@ -0,0 +1,149 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_144 : i32 = i;
+    if ((x_144 < 800)) {
+    } else {
+      break;
+    }
+    let x_147 : i32 = i;
+    if (((x_147 % 32) == 0)) {
+      let x_153 : f32 = result;
+      result = (x_153 + 0.400000006);
+    } else {
+      let x_155 : i32 = i;
+      let x_157 : f32 = *(thirty_two);
+      if (((f32(x_155) % round(x_157)) <= 0.01)) {
+        let x_163 : f32 = result;
+        result = (x_163 + 100.0);
+      }
+    }
+    let x_165 : i32 = i;
+    let x_167 : f32 = *(limit);
+    if ((f32(x_165) >= x_167)) {
+      let x_171 : f32 = result;
+      return x_171;
+    }
+
+    continuing {
+      let x_172 : i32 = i;
+      i = (x_172 + 1);
+    }
+  }
+  let x_174 : f32 = result;
+  return x_174;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var x_61 : vec3<f32>;
+  var i_1 : i32;
+  var j : f32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_63 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_63 / 8.0));
+  let x_67 : f32 = gl_FragCoord.x;
+  param = x_67;
+  let x_68 : f32 = thirty_two_1;
+  param_1 = x_68;
+  let x_69 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  let x_72 : f32 = gl_FragCoord.y;
+  param_2 = x_72;
+  let x_73 : f32 = thirty_two_1;
+  param_3 = x_73;
+  let x_74 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  let x_77 : f32 = c.x;
+  if (true) {
+    let x_81 : vec3<f32> = c;
+    x_61 = x_81;
+  } else {
+    let x_82 : vec3<f32> = c;
+    let x_84 : f32 = x_19.injectionSwitch.x;
+    x_61 = (x_82 * x_84);
+  }
+  let x_87 : f32 = x_61.y;
+  c.z = (x_77 + x_87);
+  i_1 = 0;
+  loop {
+    let x_94 : i32 = i_1;
+    if ((x_94 < 3)) {
+    } else {
+      break;
+    }
+    let x_97 : i32 = i_1;
+    let x_99 : f32 = c[x_97];
+    if ((x_99 >= 1.0)) {
+      let x_103 : i32 = i_1;
+      let x_104 : i32 = i_1;
+      let x_106 : f32 = c[x_104];
+      let x_107 : i32 = i_1;
+      let x_109 : f32 = c[x_107];
+      c[x_103] = (x_106 * x_109);
+    }
+    j = 0.0;
+    loop {
+      let x_117 : f32 = x_19.injectionSwitch.x;
+      let x_119 : f32 = x_19.injectionSwitch.y;
+      if ((x_117 > x_119)) {
+      } else {
+        break;
+      }
+      let x_122 : f32 = j;
+      let x_124 : f32 = x_19.injectionSwitch.x;
+      if ((x_122 >= x_124)) {
+        break;
+      }
+      let x_128 : f32 = j;
+      j = (x_128 + 1.0);
+    }
+
+    continuing {
+      let x_130 : i32 = i_1;
+      i_1 = (x_130 + 1);
+    }
+  }
+  let x_132 : vec3<f32> = c;
+  let x_134 : vec3<f32> = normalize(abs(x_132));
+  x_GLF_color = vec4<f32>(x_134.x, x_134.y, x_134.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm
new file mode 100644
index 0000000..5b2b65b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm
@@ -0,0 +1,245 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %compute_value_f1_f1_ "compute_value(f1;f1;"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %c "c"
+               OpName %thirty_two_0 "thirty_two"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %i_0 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+         %23 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+ %float_n0_5 = OpConstant %float -0.5
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %40 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+     %uint_1 = OpConstant %uint 1
+%mat3v3float = OpTypeMatrix %v3float 3
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %53 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %54 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %55 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %56 = OpConstantComposite %mat3v3float %53 %54 %55
+%mat4v2float = OpTypeMatrix %v2float 4
+     %uint_2 = OpConstant %uint 2
+      %int_3 = OpConstant %int 3
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %20
+         %61 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function
+%thirty_two_0 = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_float Function
+    %param_0 = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_float Function
+    %param_2 = OpVariable %_ptr_Function_float Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+               OpStore %c %40
+         %62 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %63 = OpLoad %float %62
+         %64 = OpFDiv %float %63 %float_8
+         %65 = OpExtInst %float %1 Round %64
+               OpStore %thirty_two_0 %65
+         %66 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %67 = OpLoad %float %66
+               OpStore %param %67
+         %68 = OpLoad %float %thirty_two_0
+               OpStore %param_0 %68
+         %69 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_0
+         %70 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %70 %69
+         %71 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %72 = OpLoad %float %71
+               OpStore %param_1 %72
+         %73 = OpLoad %float %thirty_two_0
+               OpStore %param_2 %73
+         %74 = OpFunctionCall %float %compute_value_f1_f1_ %param_1 %param_2
+         %75 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %75 %74
+         %76 = OpLoad %v3float %c
+         %77 = OpVectorTimesMatrix %v3float %76 %56
+         %78 = OpCompositeExtract %float %77 0
+         %79 = OpLoad %v3float %c
+         %80 = OpCompositeExtract %float %79 0
+         %81 = OpCompositeExtract %float %79 1
+         %82 = OpCompositeExtract %float %79 2
+         %83 = OpCompositeConstruct %v2float %80 %81
+         %84 = OpCompositeConstruct %v2float %82 %float_1
+         %85 = OpCompositeConstruct %v2float %float_1 %float_0
+         %86 = OpCompositeConstruct %v2float %float_1 %float_0
+         %87 = OpCompositeConstruct %mat4v2float %83 %84 %85 %86
+         %88 = OpCompositeExtract %float %87 0 0
+         %89 = OpCompositeExtract %float %87 0 1
+         %90 = OpCompositeExtract %float %87 1 0
+         %91 = OpCompositeConstruct %v3float %88 %89 %90
+         %92 = OpCompositeExtract %float %91 1
+         %93 = OpFAdd %float %78 %92
+         %94 = OpAccessChain %_ptr_Function_float %c %uint_2
+               OpStore %94 %93
+               OpStore %i_0 %int_0
+               OpBranch %95
+         %95 = OpLabel
+               OpLoopMerge %96 %97 None
+               OpBranch %98
+         %98 = OpLabel
+         %99 = OpLoad %int %i_0
+        %100 = OpSLessThan %bool %99 %int_3
+               OpBranchConditional %100 %101 %96
+        %101 = OpLabel
+        %102 = OpLoad %int %i_0
+        %103 = OpAccessChain %_ptr_Function_float %c %102
+        %104 = OpLoad %float %103
+        %105 = OpFOrdGreaterThanEqual %bool %104 %float_1
+               OpSelectionMerge %106 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+        %108 = OpLoad %int %i_0
+        %109 = OpLoad %int %i_0
+        %110 = OpAccessChain %_ptr_Function_float %c %109
+        %111 = OpLoad %float %110
+        %112 = OpLoad %int %i_0
+        %113 = OpAccessChain %_ptr_Function_float %c %112
+        %114 = OpLoad %float %113
+        %115 = OpFMul %float %111 %114
+        %116 = OpAccessChain %_ptr_Function_float %c %108
+               OpStore %116 %115
+        %117 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %118 = OpLoad %float %117
+        %119 = OpFOrdLessThan %bool %118 %float_0
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %120
+        %121 = OpLabel
+               OpBranch %96
+        %120 = OpLabel
+               OpBranch %106
+        %106 = OpLabel
+               OpBranch %97
+         %97 = OpLabel
+        %122 = OpLoad %int %i_0
+        %123 = OpIAdd %int %122 %int_1
+               OpStore %i_0 %123
+               OpBranch %95
+         %96 = OpLabel
+        %124 = OpLoad %v3float %c
+        %125 = OpExtInst %v3float %1 FAbs %124
+        %126 = OpExtInst %v3float %1 Normalize %125
+        %127 = OpCompositeExtract %float %126 0
+        %128 = OpCompositeExtract %float %126 1
+        %129 = OpCompositeExtract %float %126 2
+        %130 = OpCompositeConstruct %v4float %127 %128 %129 %float_1
+               OpStore %_GLF_color %130
+               OpReturn
+               OpFunctionEnd
+%compute_value_f1_f1_ = OpFunction %float None %23
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+        %131 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %132
+        %132 = OpLabel
+               OpLoopMerge %133 %134 None
+               OpBranch %135
+        %135 = OpLabel
+        %136 = OpLoad %int %i
+        %137 = OpSLessThan %bool %136 %int_800
+               OpBranchConditional %137 %138 %133
+        %138 = OpLabel
+        %139 = OpLoad %int %i
+        %140 = OpSMod %int %139 %int_32
+        %141 = OpIEqual %bool %140 %int_0
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %144
+        %143 = OpLabel
+        %145 = OpLoad %float %result
+        %146 = OpFAdd %float %145 %float_0_400000006
+               OpStore %result %146
+               OpBranch %142
+        %144 = OpLabel
+        %147 = OpLoad %int %i
+        %148 = OpConvertSToF %float %147
+        %149 = OpLoad %float %thirty_two
+        %150 = OpExtInst %float %1 Round %149
+        %151 = OpFMod %float %148 %150
+        %152 = OpFOrdLessThanEqual %bool %151 %float_0_00999999978
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+        %155 = OpLoad %float %result
+        %156 = OpFAdd %float %155 %float_100
+               OpStore %result %156
+               OpBranch %153
+        %153 = OpLabel
+               OpBranch %142
+        %142 = OpLabel
+        %157 = OpLoad %int %i
+        %158 = OpConvertSToF %float %157
+        %159 = OpLoad %float %limit
+        %160 = OpFOrdGreaterThanEqual %bool %158 %159
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %float %result
+               OpReturnValue %163
+        %161 = OpLabel
+               OpBranch %134
+        %134 = OpLabel
+        %164 = OpLoad %int %i
+        %165 = OpIAdd %int %164 %int_1
+               OpStore %i %165
+               OpBranch %132
+        %133 = OpLabel
+        %166 = OpLoad %float %result
+               OpReturnValue %166
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..20808b2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.hlsl
@@ -0,0 +1,100 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+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);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  {
+    for(; (i < 800); i = (i + 1)) {
+      if (((i % 32) == 0)) {
+        result = (result + 0.400000006f);
+      } else {
+        const int x_147 = i;
+        const float x_149 = thirty_two;
+        if (((float(x_147) % round(x_149)) <= 0.01f)) {
+          result = (result + 100.0f);
+        }
+      }
+      const int x_157 = i;
+      const float x_159 = limit;
+      if ((float(x_157) >= x_159)) {
+        return result;
+      }
+    }
+  }
+  return result;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_63 = asfloat(x_13[0].x);
+  thirty_two_1 = round((x_63 / 8.0f));
+  const float x_67 = gl_FragCoord.x;
+  param = x_67;
+  param_1 = thirty_two_1;
+  const float x_69 = compute_value_f1_f1_(param, param_1);
+  c.x = x_69;
+  const float x_72 = gl_FragCoord.y;
+  param_2 = x_72;
+  param_3 = thirty_two_1;
+  const float x_74 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_74;
+  const float3 x_76 = c;
+  const float3 x_79 = c;
+  const float4x2 x_87 = float4x2(float2(x_79.x, x_79.y), float2(x_79.z, 1.0f), float2(1.0f, 0.0f), float2(1.0f, 0.0f));
+  c.z = (mul(float3x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f)), x_76).x + float3(x_87[0u].x, x_87[0u].y, x_87[1u].x).y);
+  i_1 = 0;
+  {
+    for(; (i_1 < 3); i_1 = (i_1 + 1)) {
+      const float x_104 = c[i_1];
+      if ((x_104 >= 1.0f)) {
+        const int x_108 = i_1;
+        const float x_111 = c[i_1];
+        const float x_114 = c[i_1];
+        set_float3(c, x_108, (x_111 * x_114));
+        const float x_118 = gl_FragCoord.y;
+        if ((x_118 < 0.0f)) {
+          break;
+        }
+      }
+    }
+  }
+  const float3 x_126 = normalize(abs(c));
+  x_GLF_color = float4(x_126.x, x_126.y, x_126.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.msl
new file mode 100755
index 0000000..223b0b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.msl
@@ -0,0 +1,127 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  while (true) {
+    int const x_136 = i;
+    if ((x_136 < 800)) {
+    } else {
+      break;
+    }
+    int const x_139 = i;
+    if (((x_139 % 32) == 0)) {
+      float const x_145 = result;
+      result = (x_145 + 0.400000006f);
+    } else {
+      int const x_147 = i;
+      float const x_149 = *(thirty_two);
+      if (((float(x_147) % rint(x_149)) <= 0.01f)) {
+        float const x_155 = result;
+        result = (x_155 + 100.0f);
+      }
+    }
+    int const x_157 = i;
+    float const x_159 = *(limit);
+    if ((float(x_157) >= x_159)) {
+      float const x_163 = result;
+      return x_163;
+    }
+    {
+      int const x_164 = i;
+      i = (x_164 + 1);
+    }
+  }
+  float const x_166 = result;
+  return x_166;
+}
+
+void main_1(constant buf0& x_13, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_63 = x_13.resolution.x;
+  thirty_two_1 = rint((x_63 / 8.0f));
+  float const x_67 = (*(tint_symbol_5)).x;
+  param = x_67;
+  float const x_68 = thirty_two_1;
+  param_1 = x_68;
+  float const x_69 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  float const x_72 = (*(tint_symbol_5)).y;
+  param_2 = x_72;
+  float const x_73 = thirty_two_1;
+  param_3 = x_73;
+  float const x_74 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  float3 const x_76 = c;
+  float3 const x_79 = c;
+  float4x2 const x_87 = float4x2(float2(x_79.x, x_79.y), float2(x_79.z, 1.0f), float2(1.0f, 0.0f), float2(1.0f, 0.0f));
+  c.z = (((x_76 * float3x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f)))).x + float3(x_87[0u].x, x_87[0u].y, x_87[1u].x).y);
+  i_1 = 0;
+  while (true) {
+    int const x_99 = i_1;
+    if ((x_99 < 3)) {
+    } else {
+      break;
+    }
+    int const x_102 = i_1;
+    float const x_104 = c[x_102];
+    if ((x_104 >= 1.0f)) {
+      int const x_108 = i_1;
+      int const x_109 = i_1;
+      float const x_111 = c[x_109];
+      int const x_112 = i_1;
+      float const x_114 = c[x_112];
+      c[x_108] = (x_111 * x_114);
+      float const x_118 = (*(tint_symbol_5)).y;
+      if ((x_118 < 0.0f)) {
+        break;
+      }
+    }
+    {
+      int const x_122 = i_1;
+      i_1 = (x_122 + 1);
+    }
+  }
+  float3 const x_124 = c;
+  float3 const x_126 = normalize(fabs(x_124));
+  *(tint_symbol_6) = float4(x_126.x, x_126.y, x_126.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_13, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\uajw.0.metal:32:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_147) % rint(x_149)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..8feef9e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.spvasm
@@ -0,0 +1,296 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 199
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %thirty_two_1 "thirty_two_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %22 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %76 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %83 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %93 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+%mat4v2float = OpTypeMatrix %v2float 4
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %127 = OpConstantComposite %v2float %float_1 %float_0
+     %uint_2 = OpConstant %uint 2
+%mat3v3float = OpTypeMatrix %v3float 3
+        %132 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+        %133 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+        %134 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+        %135 = OpConstantComposite %mat3v3float %132 %133 %134
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %186 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %15
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %20 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function %22
+          %i = OpVariable %_ptr_Function_int Function %26
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %35 = OpSLessThan %bool %33 %int_800
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %30
+         %37 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpSMod %int %40 %int_32
+         %44 = OpIEqual %bool %42 %int_0
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+         %48 = OpLoad %float %result
+         %50 = OpFAdd %float %48 %float_0_400000006
+               OpStore %result %50
+               OpBranch %45
+         %47 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %float %thirty_two
+         %54 = OpConvertSToF %float %51
+         %55 = OpExtInst %float %56 RoundEven %53
+         %57 = OpFMod %float %54 %55
+         %59 = OpFOrdLessThanEqual %bool %57 %float_0_00999999978
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpLoad %float %result
+         %64 = OpFAdd %float %62 %float_100
+               OpStore %result %64
+               OpBranch %60
+         %60 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+         %65 = OpLoad %int %i
+         %67 = OpLoad %float %limit
+         %68 = OpConvertSToF %float %65
+         %69 = OpFOrdGreaterThanEqual %bool %68 %67
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %float %result
+               OpReturnValue %72
+         %70 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %73 = OpLoad %int %i
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %i %74
+               OpBranch %29
+         %30 = OpLabel
+         %75 = OpLoad %float %result
+               OpReturnValue %75
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %76
+         %79 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %83
+%thirty_two_1 = OpVariable %_ptr_Function_float Function %22
+      %param = OpVariable %_ptr_Function_float Function %22
+    %param_1 = OpVariable %_ptr_Function_float Function %22
+    %param_2 = OpVariable %_ptr_Function_float Function %22
+    %param_3 = OpVariable %_ptr_Function_float Function %22
+        %i_1 = OpVariable %_ptr_Function_int Function %26
+               OpStore %c %93
+         %97 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+         %98 = OpLoad %float %97
+        %100 = OpFDiv %float %98 %float_8
+         %99 = OpExtInst %float %56 RoundEven %100
+               OpStore %thirty_two_1 %99
+        %102 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %103 = OpLoad %float %102
+               OpStore %param %103
+        %104 = OpLoad %float %thirty_two_1
+               OpStore %param_1 %104
+        %105 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %108 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %108 %105
+        %110 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %111 = OpLoad %float %110
+               OpStore %param_2 %111
+        %112 = OpLoad %float %thirty_two_1
+               OpStore %param_3 %112
+        %113 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %116 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %116 %113
+        %117 = OpLoad %v3float %c
+        %118 = OpLoad %v3float %c
+        %120 = OpCompositeExtract %float %118 0
+        %121 = OpCompositeExtract %float %118 1
+        %122 = OpCompositeConstruct %v2float %120 %121
+        %123 = OpCompositeExtract %float %118 2
+        %125 = OpCompositeConstruct %v2float %123 %float_1
+        %128 = OpCompositeConstruct %mat4v2float %122 %125 %127 %127
+        %130 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %136 = OpVectorTimesMatrix %v3float %117 %135
+        %137 = OpCompositeExtract %float %136 0
+        %138 = OpCompositeExtract %v2float %128 0
+        %139 = OpCompositeExtract %float %138 0
+        %140 = OpCompositeExtract %v2float %128 0
+        %141 = OpCompositeExtract %float %140 1
+        %142 = OpCompositeExtract %v2float %128 1
+        %143 = OpCompositeExtract %float %142 0
+        %144 = OpCompositeConstruct %v3float %139 %141 %143
+        %145 = OpCompositeExtract %float %144 1
+        %146 = OpFAdd %float %137 %145
+               OpStore %130 %146
+               OpStore %i_1 %int_0
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %i_1
+        %153 = OpSLessThan %bool %151 %int_3
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %148
+        %154 = OpLabel
+        %157 = OpLoad %int %i_1
+        %158 = OpAccessChain %_ptr_Function_float %c %157
+        %159 = OpLoad %float %158
+        %160 = OpFOrdGreaterThanEqual %bool %159 %float_1
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %int %i_1
+        %164 = OpLoad %int %i_1
+        %165 = OpAccessChain %_ptr_Function_float %c %164
+        %166 = OpLoad %float %165
+        %167 = OpLoad %int %i_1
+        %168 = OpAccessChain %_ptr_Function_float %c %167
+        %169 = OpLoad %float %168
+        %170 = OpAccessChain %_ptr_Function_float %c %163
+        %171 = OpFMul %float %166 %169
+               OpStore %170 %171
+        %172 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %173 = OpLoad %float %172
+        %174 = OpFOrdLessThan %bool %173 %float_0
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %175
+        %176 = OpLabel
+               OpBranch %148
+        %175 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %177 = OpLoad %int %i_1
+        %178 = OpIAdd %int %177 %int_1
+               OpStore %i_1 %178
+               OpBranch %147
+        %148 = OpLabel
+        %179 = OpLoad %v3float %c
+        %181 = OpExtInst %v3float %56 FAbs %179
+        %180 = OpExtInst %v3float %56 Normalize %181
+        %182 = OpCompositeExtract %float %180 0
+        %183 = OpCompositeExtract %float %180 1
+        %184 = OpCompositeExtract %float %180 2
+        %185 = OpCompositeConstruct %v4float %182 %183 %184 %float_1
+               OpStore %x_GLF_color %185
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %186
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %190 = OpLabel
+        %191 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %191
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %76
+        %193 = OpLabel
+        %194 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %194
+        %195 = OpFunctionCall %void %main_1
+        %197 = OpLoad %v4float %x_GLF_color
+        %198 = OpCompositeConstruct %main_out %197
+        %196 = OpFunctionCall %void %tint_symbol_3 %198
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..ee16548
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.wgsl
@@ -0,0 +1,121 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_136 : i32 = i;
+    if ((x_136 < 800)) {
+    } else {
+      break;
+    }
+    let x_139 : i32 = i;
+    if (((x_139 % 32) == 0)) {
+      let x_145 : f32 = result;
+      result = (x_145 + 0.400000006);
+    } else {
+      let x_147 : i32 = i;
+      let x_149 : f32 = *(thirty_two);
+      if (((f32(x_147) % round(x_149)) <= 0.01)) {
+        let x_155 : f32 = result;
+        result = (x_155 + 100.0);
+      }
+    }
+    let x_157 : i32 = i;
+    let x_159 : f32 = *(limit);
+    if ((f32(x_157) >= x_159)) {
+      let x_163 : f32 = result;
+      return x_163;
+    }
+
+    continuing {
+      let x_164 : i32 = i;
+      i = (x_164 + 1);
+    }
+  }
+  let x_166 : f32 = result;
+  return x_166;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var i_1 : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_63 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_63 / 8.0));
+  let x_67 : f32 = gl_FragCoord.x;
+  param = x_67;
+  let x_68 : f32 = thirty_two_1;
+  param_1 = x_68;
+  let x_69 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  let x_72 : f32 = gl_FragCoord.y;
+  param_2 = x_72;
+  let x_73 : f32 = thirty_two_1;
+  param_3 = x_73;
+  let x_74 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  let x_76 : vec3<f32> = c;
+  let x_79 : vec3<f32> = c;
+  let x_87 : mat4x2<f32> = mat4x2<f32>(vec2<f32>(x_79.x, x_79.y), vec2<f32>(x_79.z, 1.0), vec2<f32>(1.0, 0.0), vec2<f32>(1.0, 0.0));
+  c.z = (((x_76 * mat3x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0)))).x + vec3<f32>(x_87[0u].x, x_87[0u].y, x_87[1u].x).y);
+  i_1 = 0;
+  loop {
+    let x_99 : i32 = i_1;
+    if ((x_99 < 3)) {
+    } else {
+      break;
+    }
+    let x_102 : i32 = i_1;
+    let x_104 : f32 = c[x_102];
+    if ((x_104 >= 1.0)) {
+      let x_108 : i32 = i_1;
+      let x_109 : i32 = i_1;
+      let x_111 : f32 = c[x_109];
+      let x_112 : i32 = i_1;
+      let x_114 : f32 = c[x_112];
+      c[x_108] = (x_111 * x_114);
+      let x_118 : f32 = gl_FragCoord.y;
+      if ((x_118 < 0.0)) {
+        break;
+      }
+    }
+
+    continuing {
+      let x_122 : i32 = i_1;
+      i_1 = (x_122 + 1);
+    }
+  }
+  let x_124 : vec3<f32> = c;
+  let x_126 : vec3<f32> = normalize(abs(x_124));
+  x_GLF_color = vec4<f32>(x_126.x, x_126.y, x_126.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
new file mode 100644
index 0000000..ee16548
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
@@ -0,0 +1,121 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_136 : i32 = i;
+    if ((x_136 < 800)) {
+    } else {
+      break;
+    }
+    let x_139 : i32 = i;
+    if (((x_139 % 32) == 0)) {
+      let x_145 : f32 = result;
+      result = (x_145 + 0.400000006);
+    } else {
+      let x_147 : i32 = i;
+      let x_149 : f32 = *(thirty_two);
+      if (((f32(x_147) % round(x_149)) <= 0.01)) {
+        let x_155 : f32 = result;
+        result = (x_155 + 100.0);
+      }
+    }
+    let x_157 : i32 = i;
+    let x_159 : f32 = *(limit);
+    if ((f32(x_157) >= x_159)) {
+      let x_163 : f32 = result;
+      return x_163;
+    }
+
+    continuing {
+      let x_164 : i32 = i;
+      i = (x_164 + 1);
+    }
+  }
+  let x_166 : f32 = result;
+  return x_166;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var i_1 : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_63 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_63 / 8.0));
+  let x_67 : f32 = gl_FragCoord.x;
+  param = x_67;
+  let x_68 : f32 = thirty_two_1;
+  param_1 = x_68;
+  let x_69 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  let x_72 : f32 = gl_FragCoord.y;
+  param_2 = x_72;
+  let x_73 : f32 = thirty_two_1;
+  param_3 = x_73;
+  let x_74 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  let x_76 : vec3<f32> = c;
+  let x_79 : vec3<f32> = c;
+  let x_87 : mat4x2<f32> = mat4x2<f32>(vec2<f32>(x_79.x, x_79.y), vec2<f32>(x_79.z, 1.0), vec2<f32>(1.0, 0.0), vec2<f32>(1.0, 0.0));
+  c.z = (((x_76 * mat3x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0)))).x + vec3<f32>(x_87[0u].x, x_87[0u].y, x_87[1u].x).y);
+  i_1 = 0;
+  loop {
+    let x_99 : i32 = i_1;
+    if ((x_99 < 3)) {
+    } else {
+      break;
+    }
+    let x_102 : i32 = i_1;
+    let x_104 : f32 = c[x_102];
+    if ((x_104 >= 1.0)) {
+      let x_108 : i32 = i_1;
+      let x_109 : i32 = i_1;
+      let x_111 : f32 = c[x_109];
+      let x_112 : i32 = i_1;
+      let x_114 : f32 = c[x_112];
+      c[x_108] = (x_111 * x_114);
+      let x_118 : f32 = gl_FragCoord.y;
+      if ((x_118 < 0.0)) {
+        break;
+      }
+    }
+
+    continuing {
+      let x_122 : i32 = i_1;
+      i_1 = (x_122 + 1);
+    }
+  }
+  let x_124 : vec3<f32> = c;
+  let x_126 : vec3<f32> = normalize(abs(x_124));
+  x_GLF_color = vec4<f32>(x_126.x, x_126.y, x_126.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..20808b2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.hlsl
@@ -0,0 +1,100 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_13 : register(b0, space0) {
+  uint4 x_13[1];
+};
+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);
+
+float compute_value_f1_f1_(inout float limit, inout float thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  {
+    for(; (i < 800); i = (i + 1)) {
+      if (((i % 32) == 0)) {
+        result = (result + 0.400000006f);
+      } else {
+        const int x_147 = i;
+        const float x_149 = thirty_two;
+        if (((float(x_147) % round(x_149)) <= 0.01f)) {
+          result = (result + 100.0f);
+        }
+      }
+      const int x_157 = i;
+      const float x_159 = limit;
+      if ((float(x_157) >= x_159)) {
+        return result;
+      }
+    }
+  }
+  return result;
+}
+
+void main_1() {
+  float3 c = float3(0.0f, 0.0f, 0.0f);
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  const float x_63 = asfloat(x_13[0].x);
+  thirty_two_1 = round((x_63 / 8.0f));
+  const float x_67 = gl_FragCoord.x;
+  param = x_67;
+  param_1 = thirty_two_1;
+  const float x_69 = compute_value_f1_f1_(param, param_1);
+  c.x = x_69;
+  const float x_72 = gl_FragCoord.y;
+  param_2 = x_72;
+  param_3 = thirty_two_1;
+  const float x_74 = compute_value_f1_f1_(param_2, param_3);
+  c.y = x_74;
+  const float3 x_76 = c;
+  const float3 x_79 = c;
+  const float4x2 x_87 = float4x2(float2(x_79.x, x_79.y), float2(x_79.z, 1.0f), float2(1.0f, 0.0f), float2(1.0f, 0.0f));
+  c.z = (mul(float3x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f)), x_76).x + float3(x_87[0u].x, x_87[0u].y, x_87[1u].x).y);
+  i_1 = 0;
+  {
+    for(; (i_1 < 3); i_1 = (i_1 + 1)) {
+      const float x_104 = c[i_1];
+      if ((x_104 >= 1.0f)) {
+        const int x_108 = i_1;
+        const float x_111 = c[i_1];
+        const float x_114 = c[i_1];
+        set_float3(c, x_108, (x_111 * x_114));
+        const float x_118 = gl_FragCoord.y;
+        if ((x_118 < 0.0f)) {
+          break;
+        }
+      }
+    }
+  }
+  const float3 x_126 = normalize(abs(c));
+  x_GLF_color = float4(x_126.x, x_126.y, x_126.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.msl
new file mode 100755
index 0000000..4db0bfd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.msl
@@ -0,0 +1,127 @@
+SKIP: FAILED
+
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float compute_value_f1_f1_(thread float* const limit, thread float* const thirty_two) {
+  float result = 0.0f;
+  int i = 0;
+  result = -0.5f;
+  i = 1;
+  while (true) {
+    int const x_136 = i;
+    if ((x_136 < 800)) {
+    } else {
+      break;
+    }
+    int const x_139 = i;
+    if (((x_139 % 32) == 0)) {
+      float const x_145 = result;
+      result = (x_145 + 0.400000006f);
+    } else {
+      int const x_147 = i;
+      float const x_149 = *(thirty_two);
+      if (((float(x_147) % rint(x_149)) <= 0.01f)) {
+        float const x_155 = result;
+        result = (x_155 + 100.0f);
+      }
+    }
+    int const x_157 = i;
+    float const x_159 = *(limit);
+    if ((float(x_157) >= x_159)) {
+      float const x_163 = result;
+      return x_163;
+    }
+    {
+      int const x_164 = i;
+      i = (x_164 + 1);
+    }
+  }
+  float const x_166 = result;
+  return x_166;
+}
+
+void main_1(constant buf0& x_13, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float3 c = 0.0f;
+  float thirty_two_1 = 0.0f;
+  float param = 0.0f;
+  float param_1 = 0.0f;
+  float param_2 = 0.0f;
+  float param_3 = 0.0f;
+  int i_1 = 0;
+  c = float3(7.0f, 8.0f, 9.0f);
+  float const x_63 = x_13.resolution.x;
+  thirty_two_1 = rint((x_63 / 8.0f));
+  float const x_67 = (*(tint_symbol_5)).x;
+  param = x_67;
+  float const x_68 = thirty_two_1;
+  param_1 = x_68;
+  float const x_69 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  float const x_72 = (*(tint_symbol_5)).y;
+  param_2 = x_72;
+  float const x_73 = thirty_two_1;
+  param_3 = x_73;
+  float const x_74 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  float3 const x_76 = c;
+  float3 const x_79 = c;
+  float4x2 const x_87 = float4x2(float2(x_79.x, x_79.y), float2(x_79.z, 1.0f), float2(1.0f, 0.0f), float2(1.0f, 0.0f));
+  c.z = (((x_76 * float3x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f)))).x + float3(x_87[0u].x, x_87[0u].y, x_87[1u].x).y);
+  i_1 = 0;
+  while (true) {
+    int const x_99 = i_1;
+    if ((x_99 < 3)) {
+    } else {
+      break;
+    }
+    int const x_102 = i_1;
+    float const x_104 = c[x_102];
+    if ((x_104 >= 1.0f)) {
+      int const x_108 = i_1;
+      int const x_109 = i_1;
+      float const x_111 = c[x_109];
+      int const x_112 = i_1;
+      float const x_114 = c[x_112];
+      c[x_108] = (x_111 * x_114);
+      float const x_118 = (*(tint_symbol_5)).y;
+      if ((x_118 < 0.0f)) {
+        break;
+      }
+    }
+    {
+      int const x_122 = i_1;
+      i_1 = (x_122 + 1);
+    }
+  }
+  float3 const x_124 = c;
+  float3 const x_126 = normalize(fabs(x_124));
+  *(tint_symbol_6) = float4(x_126.x, x_126.y, x_126.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_13 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_13, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
+T:\tmp\uet8.0.metal:32:26: error: invalid operands to binary expression ('float' and 'float')
+      if (((float(x_147) % rint(x_149)) <= 0.01f)) {
+            ~~~~~~~~~~~~ ^ ~~~~~~~~~~~
+1 error generated.
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..8feef9e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.spvasm
@@ -0,0 +1,296 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 199
+; Schema: 0
+               OpCapability Shader
+         %56 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %compute_value_f1_f1_ "compute_value_f1_f1_"
+               OpName %limit "limit"
+               OpName %thirty_two "thirty_two"
+               OpName %result "result"
+               OpName %i "i"
+               OpName %main_1 "main_1"
+               OpName %c "c"
+               OpName %thirty_two_1 "thirty_two_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_13 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_float = OpTypePointer Function %float
+         %15 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
+         %22 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+ %float_n0_5 = OpConstant %float -0.5
+      %int_1 = OpConstant %int 1
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+     %int_32 = OpConstant %int 32
+      %int_0 = OpConstant %int 0
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_00999999978 = OpConstant %float 0.00999999978
+  %float_100 = OpConstant %float 100
+       %void = OpTypeVoid
+         %76 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %83 = OpConstantNull %v3float
+    %float_7 = OpConstant %float 7
+    %float_8 = OpConstant %float 8
+    %float_9 = OpConstant %float 9
+         %93 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+%mat4v2float = OpTypeMatrix %v2float 4
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %127 = OpConstantComposite %v2float %float_1 %float_0
+     %uint_2 = OpConstant %uint 2
+%mat3v3float = OpTypeMatrix %v3float 3
+        %132 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+        %133 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+        %134 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+        %135 = OpConstantComposite %mat3v3float %132 %133 %134
+      %int_3 = OpConstant %int 3
+   %main_out = OpTypeStruct %v4float
+        %186 = OpTypeFunction %void %main_out
+%compute_value_f1_f1_ = OpFunction %float None %15
+      %limit = OpFunctionParameter %_ptr_Function_float
+ %thirty_two = OpFunctionParameter %_ptr_Function_float
+         %20 = OpLabel
+     %result = OpVariable %_ptr_Function_float Function %22
+          %i = OpVariable %_ptr_Function_int Function %26
+               OpStore %result %float_n0_5
+               OpStore %i %int_1
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %i
+         %35 = OpSLessThan %bool %33 %int_800
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+               OpBranch %30
+         %37 = OpLabel
+         %40 = OpLoad %int %i
+         %42 = OpSMod %int %40 %int_32
+         %44 = OpIEqual %bool %42 %int_0
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %47
+         %46 = OpLabel
+         %48 = OpLoad %float %result
+         %50 = OpFAdd %float %48 %float_0_400000006
+               OpStore %result %50
+               OpBranch %45
+         %47 = OpLabel
+         %51 = OpLoad %int %i
+         %53 = OpLoad %float %thirty_two
+         %54 = OpConvertSToF %float %51
+         %55 = OpExtInst %float %56 RoundEven %53
+         %57 = OpFMod %float %54 %55
+         %59 = OpFOrdLessThanEqual %bool %57 %float_0_00999999978
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %60
+         %61 = OpLabel
+         %62 = OpLoad %float %result
+         %64 = OpFAdd %float %62 %float_100
+               OpStore %result %64
+               OpBranch %60
+         %60 = OpLabel
+               OpBranch %45
+         %45 = OpLabel
+         %65 = OpLoad %int %i
+         %67 = OpLoad %float %limit
+         %68 = OpConvertSToF %float %65
+         %69 = OpFOrdGreaterThanEqual %bool %68 %67
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %70
+         %71 = OpLabel
+         %72 = OpLoad %float %result
+               OpReturnValue %72
+         %70 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %73 = OpLoad %int %i
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %i %74
+               OpBranch %29
+         %30 = OpLabel
+         %75 = OpLoad %float %result
+               OpReturnValue %75
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %76
+         %79 = OpLabel
+          %c = OpVariable %_ptr_Function_v3float Function %83
+%thirty_two_1 = OpVariable %_ptr_Function_float Function %22
+      %param = OpVariable %_ptr_Function_float Function %22
+    %param_1 = OpVariable %_ptr_Function_float Function %22
+    %param_2 = OpVariable %_ptr_Function_float Function %22
+    %param_3 = OpVariable %_ptr_Function_float Function %22
+        %i_1 = OpVariable %_ptr_Function_int Function %26
+               OpStore %c %93
+         %97 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+         %98 = OpLoad %float %97
+        %100 = OpFDiv %float %98 %float_8
+         %99 = OpExtInst %float %56 RoundEven %100
+               OpStore %thirty_two_1 %99
+        %102 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %103 = OpLoad %float %102
+               OpStore %param %103
+        %104 = OpLoad %float %thirty_two_1
+               OpStore %param_1 %104
+        %105 = OpFunctionCall %float %compute_value_f1_f1_ %param %param_1
+        %108 = OpAccessChain %_ptr_Function_float %c %uint_0
+               OpStore %108 %105
+        %110 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %111 = OpLoad %float %110
+               OpStore %param_2 %111
+        %112 = OpLoad %float %thirty_two_1
+               OpStore %param_3 %112
+        %113 = OpFunctionCall %float %compute_value_f1_f1_ %param_2 %param_3
+        %116 = OpAccessChain %_ptr_Function_float %c %uint_1
+               OpStore %116 %113
+        %117 = OpLoad %v3float %c
+        %118 = OpLoad %v3float %c
+        %120 = OpCompositeExtract %float %118 0
+        %121 = OpCompositeExtract %float %118 1
+        %122 = OpCompositeConstruct %v2float %120 %121
+        %123 = OpCompositeExtract %float %118 2
+        %125 = OpCompositeConstruct %v2float %123 %float_1
+        %128 = OpCompositeConstruct %mat4v2float %122 %125 %127 %127
+        %130 = OpAccessChain %_ptr_Function_float %c %uint_2
+        %136 = OpVectorTimesMatrix %v3float %117 %135
+        %137 = OpCompositeExtract %float %136 0
+        %138 = OpCompositeExtract %v2float %128 0
+        %139 = OpCompositeExtract %float %138 0
+        %140 = OpCompositeExtract %v2float %128 0
+        %141 = OpCompositeExtract %float %140 1
+        %142 = OpCompositeExtract %v2float %128 1
+        %143 = OpCompositeExtract %float %142 0
+        %144 = OpCompositeConstruct %v3float %139 %141 %143
+        %145 = OpCompositeExtract %float %144 1
+        %146 = OpFAdd %float %137 %145
+               OpStore %130 %146
+               OpStore %i_1 %int_0
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %i_1
+        %153 = OpSLessThan %bool %151 %int_3
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %148
+        %154 = OpLabel
+        %157 = OpLoad %int %i_1
+        %158 = OpAccessChain %_ptr_Function_float %c %157
+        %159 = OpLoad %float %158
+        %160 = OpFOrdGreaterThanEqual %bool %159 %float_1
+               OpSelectionMerge %161 None
+               OpBranchConditional %160 %162 %161
+        %162 = OpLabel
+        %163 = OpLoad %int %i_1
+        %164 = OpLoad %int %i_1
+        %165 = OpAccessChain %_ptr_Function_float %c %164
+        %166 = OpLoad %float %165
+        %167 = OpLoad %int %i_1
+        %168 = OpAccessChain %_ptr_Function_float %c %167
+        %169 = OpLoad %float %168
+        %170 = OpAccessChain %_ptr_Function_float %c %163
+        %171 = OpFMul %float %166 %169
+               OpStore %170 %171
+        %172 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %173 = OpLoad %float %172
+        %174 = OpFOrdLessThan %bool %173 %float_0
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %175
+        %176 = OpLabel
+               OpBranch %148
+        %175 = OpLabel
+               OpBranch %161
+        %161 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %177 = OpLoad %int %i_1
+        %178 = OpIAdd %int %177 %int_1
+               OpStore %i_1 %178
+               OpBranch %147
+        %148 = OpLabel
+        %179 = OpLoad %v3float %c
+        %181 = OpExtInst %v3float %56 FAbs %179
+        %180 = OpExtInst %v3float %56 Normalize %181
+        %182 = OpCompositeExtract %float %180 0
+        %183 = OpCompositeExtract %float %180 1
+        %184 = OpCompositeExtract %float %180 2
+        %185 = OpCompositeConstruct %v4float %182 %183 %184 %float_1
+               OpStore %x_GLF_color %185
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %186
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %190 = OpLabel
+        %191 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %191
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %76
+        %193 = OpLabel
+        %194 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %194
+        %195 = OpFunctionCall %void %main_1
+        %197 = OpLoad %v4float %x_GLF_color
+        %198 = OpCompositeConstruct %main_out %197
+        %196 = OpFunctionCall %void %tint_symbol_3 %198
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..ee16548
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.wgsl
@@ -0,0 +1,121 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
+  var result : f32;
+  var i : i32;
+  result = -0.5;
+  i = 1;
+  loop {
+    let x_136 : i32 = i;
+    if ((x_136 < 800)) {
+    } else {
+      break;
+    }
+    let x_139 : i32 = i;
+    if (((x_139 % 32) == 0)) {
+      let x_145 : f32 = result;
+      result = (x_145 + 0.400000006);
+    } else {
+      let x_147 : i32 = i;
+      let x_149 : f32 = *(thirty_two);
+      if (((f32(x_147) % round(x_149)) <= 0.01)) {
+        let x_155 : f32 = result;
+        result = (x_155 + 100.0);
+      }
+    }
+    let x_157 : i32 = i;
+    let x_159 : f32 = *(limit);
+    if ((f32(x_157) >= x_159)) {
+      let x_163 : f32 = result;
+      return x_163;
+    }
+
+    continuing {
+      let x_164 : i32 = i;
+      i = (x_164 + 1);
+    }
+  }
+  let x_166 : f32 = result;
+  return x_166;
+}
+
+fn main_1() {
+  var c : vec3<f32>;
+  var thirty_two_1 : f32;
+  var param : f32;
+  var param_1 : f32;
+  var param_2 : f32;
+  var param_3 : f32;
+  var i_1 : i32;
+  c = vec3<f32>(7.0, 8.0, 9.0);
+  let x_63 : f32 = x_13.resolution.x;
+  thirty_two_1 = round((x_63 / 8.0));
+  let x_67 : f32 = gl_FragCoord.x;
+  param = x_67;
+  let x_68 : f32 = thirty_two_1;
+  param_1 = x_68;
+  let x_69 : f32 = compute_value_f1_f1_(&(param), &(param_1));
+  c.x = x_69;
+  let x_72 : f32 = gl_FragCoord.y;
+  param_2 = x_72;
+  let x_73 : f32 = thirty_two_1;
+  param_3 = x_73;
+  let x_74 : f32 = compute_value_f1_f1_(&(param_2), &(param_3));
+  c.y = x_74;
+  let x_76 : vec3<f32> = c;
+  let x_79 : vec3<f32> = c;
+  let x_87 : mat4x2<f32> = mat4x2<f32>(vec2<f32>(x_79.x, x_79.y), vec2<f32>(x_79.z, 1.0), vec2<f32>(1.0, 0.0), vec2<f32>(1.0, 0.0));
+  c.z = (((x_76 * mat3x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0)))).x + vec3<f32>(x_87[0u].x, x_87[0u].y, x_87[1u].x).y);
+  i_1 = 0;
+  loop {
+    let x_99 : i32 = i_1;
+    if ((x_99 < 3)) {
+    } else {
+      break;
+    }
+    let x_102 : i32 = i_1;
+    let x_104 : f32 = c[x_102];
+    if ((x_104 >= 1.0)) {
+      let x_108 : i32 = i_1;
+      let x_109 : i32 = i_1;
+      let x_111 : f32 = c[x_109];
+      let x_112 : i32 = i_1;
+      let x_114 : f32 = c[x_112];
+      c[x_108] = (x_111 * x_114);
+      let x_118 : f32 = gl_FragCoord.y;
+      if ((x_118 < 0.0)) {
+        break;
+      }
+    }
+
+    continuing {
+      let x_122 : i32 = i_1;
+      i_1 = (x_122 + 1);
+    }
+  }
+  let x_124 : vec3<f32> = c;
+  let x_126 : vec3<f32> = normalize(abs(x_124));
+  x_GLF_color = vec4<f32>(x_126.x, x_126.y, x_126.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm
new file mode 100644
index 0000000..9408cfa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm
@@ -0,0 +1,617 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %func_i1_i1_ "func(i1;i1;"
+               OpName %m "m"
+               OpName %high "high"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %x "x"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %low "low"
+               OpName %high_0 "high"
+               OpName %m_0 "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %param_3 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %grey "grey"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %38 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %41 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %42 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+      %int_2 = OpConstant %int 2
+      %int_9 = OpConstant %int 9
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+     %uint_1 = OpConstant %uint 1
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+       %main = OpFunction %void None %38
+         %91 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+         %92 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %93 = OpLoad %float %92
+         %94 = OpConvertFToS %int %93
+               OpStore %i_2 %94
+               OpBranch %95
+         %95 = OpLabel
+               OpLoopMerge %96 %97 None
+               OpBranch %98
+         %98 = OpLabel
+         %99 = OpLoad %int %i_2
+               OpSelectionMerge %100 None
+               OpSwitch %99 %100 0 %101 1 %102 2 %103 3 %104 4 %105 5 %106 6 %107 7 %108 8 %109 9 %110
+        %101 = OpLabel
+        %111 = OpLoad %int %i_2
+        %112 = OpAccessChain %_ptr_Private_int %data %111
+               OpStore %112 %int_4
+               OpBranch %100
+        %102 = OpLabel
+        %113 = OpLoad %int %i_2
+        %114 = OpAccessChain %_ptr_Private_int %data %113
+               OpStore %114 %int_3
+               OpBranch %100
+        %103 = OpLabel
+        %115 = OpLoad %int %i_2
+        %116 = OpAccessChain %_ptr_Private_int %data %115
+               OpStore %116 %int_2
+               OpBranch %100
+        %104 = OpLabel
+        %117 = OpLoad %int %i_2
+        %118 = OpAccessChain %_ptr_Private_int %data %117
+               OpStore %118 %int_1
+               OpBranch %100
+        %105 = OpLabel
+        %119 = OpLoad %int %i_2
+        %120 = OpAccessChain %_ptr_Private_int %data %119
+               OpStore %120 %int_0
+               OpBranch %100
+        %106 = OpLabel
+        %121 = OpLoad %int %i_2
+        %122 = OpAccessChain %_ptr_Private_int %data %121
+               OpStore %122 %int_n1
+               OpBranch %100
+        %107 = OpLabel
+        %123 = OpLoad %int %i_2
+        %124 = OpAccessChain %_ptr_Private_int %data %123
+               OpStore %124 %int_n2
+               OpBranch %100
+        %108 = OpLabel
+        %125 = OpLoad %int %i_2
+        %126 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %126 %int_n3
+               OpBranch %100
+        %109 = OpLabel
+        %127 = OpLoad %int %i_2
+        %128 = OpAccessChain %_ptr_Private_int %data %127
+               OpStore %128 %int_n4
+               OpBranch %100
+        %110 = OpLabel
+        %129 = OpLoad %int %i_2
+        %130 = OpAccessChain %_ptr_Private_int %data %129
+               OpStore %130 %int_n5
+               OpBranch %100
+        %100 = OpLabel
+        %131 = OpLoad %int %i_2
+        %132 = OpIAdd %int %131 %int_1
+               OpStore %i_2 %132
+               OpBranch %97
+         %97 = OpLabel
+        %133 = OpLoad %int %i_2
+        %134 = OpSLessThan %bool %133 %int_10
+               OpBranchConditional %134 %95 %96
+         %96 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %139 = OpLoad %int %j_0
+        %140 = OpSLessThan %bool %139 %int_10
+               OpBranchConditional %140 %141 %136
+        %141 = OpLabel
+        %142 = OpLoad %int %j_0
+        %143 = OpLoad %int %j_0
+        %144 = OpAccessChain %_ptr_Private_int %data %143
+        %145 = OpLoad %int %144
+        %146 = OpAccessChain %_ptr_Private_int %temp %142
+               OpStore %146 %145
+               OpBranch %137
+        %137 = OpLabel
+        %147 = OpLoad %int %j_0
+        %148 = OpIAdd %int %147 %int_1
+               OpStore %j_0 %148
+               OpBranch %135
+        %136 = OpLabel
+        %149 = OpFunctionCall %void %mergeSort_
+        %150 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %151 = OpLoad %float %150
+        %152 = OpConvertFToS %int %151
+        %153 = OpSLessThan %bool %152 %int_30
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+        %157 = OpAccessChain %_ptr_Private_int %data %int_0
+        %158 = OpLoad %int %157
+        %159 = OpConvertSToF %float %158
+        %160 = OpFDiv %float %159 %float_10
+        %161 = OpFAdd %float %float_0_5 %160
+               OpStore %grey %161
+               OpBranch %154
+        %156 = OpLabel
+        %162 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %163 = OpLoad %float %162
+        %164 = OpConvertFToS %int %163
+        %165 = OpSLessThan %bool %164 %int_60
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %168
+        %167 = OpLabel
+        %169 = OpAccessChain %_ptr_Private_int %data %int_1
+        %170 = OpLoad %int %169
+        %171 = OpConvertSToF %float %170
+        %172 = OpFDiv %float %171 %float_10
+        %173 = OpFAdd %float %float_0_5 %172
+               OpStore %grey %173
+               OpBranch %166
+        %168 = OpLabel
+        %174 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %175 = OpLoad %float %174
+        %176 = OpConvertFToS %int %175
+        %177 = OpSLessThan %bool %176 %int_90
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %180
+        %179 = OpLabel
+        %181 = OpAccessChain %_ptr_Private_int %data %int_2
+        %182 = OpLoad %int %181
+        %183 = OpConvertSToF %float %182
+        %184 = OpFDiv %float %183 %float_10
+        %185 = OpFAdd %float %float_0_5 %184
+               OpStore %grey %185
+               OpBranch %178
+        %180 = OpLabel
+        %186 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %187 = OpLoad %float %186
+        %188 = OpConvertFToS %int %187
+        %189 = OpSLessThan %bool %188 %int_120
+               OpSelectionMerge %190 None
+               OpBranchConditional %189 %191 %192
+        %191 = OpLabel
+        %193 = OpAccessChain %_ptr_Private_int %data %int_3
+        %194 = OpLoad %int %193
+        %195 = OpConvertSToF %float %194
+        %196 = OpFDiv %float %195 %float_10
+        %197 = OpFAdd %float %float_0_5 %196
+               OpStore %grey %197
+               OpBranch %190
+        %192 = OpLabel
+        %198 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %199 = OpLoad %float %198
+        %200 = OpConvertFToS %int %199
+        %201 = OpSLessThan %bool %200 %int_150
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %204
+        %203 = OpLabel
+               OpKill
+        %204 = OpLabel
+        %205 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %206 = OpLoad %float %205
+        %207 = OpConvertFToS %int %206
+        %208 = OpSLessThan %bool %207 %int_180
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %211
+        %210 = OpLabel
+        %212 = OpAccessChain %_ptr_Private_int %data %int_5
+        %213 = OpLoad %int %212
+        %214 = OpConvertSToF %float %213
+        %215 = OpFDiv %float %214 %float_10
+        %216 = OpFAdd %float %float_0_5 %215
+               OpStore %grey %216
+               OpBranch %209
+        %211 = OpLabel
+        %217 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %218 = OpLoad %float %217
+        %219 = OpConvertFToS %int %218
+        %220 = OpSLessThan %bool %219 %int_210
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %223
+        %222 = OpLabel
+        %224 = OpAccessChain %_ptr_Private_int %data %int_6
+        %225 = OpLoad %int %224
+        %226 = OpConvertSToF %float %225
+        %227 = OpFDiv %float %226 %float_10
+        %228 = OpFAdd %float %float_0_5 %227
+               OpStore %grey %228
+               OpBranch %221
+        %223 = OpLabel
+        %229 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %230 = OpLoad %float %229
+        %231 = OpConvertFToS %int %230
+        %232 = OpSLessThan %bool %231 %int_240
+               OpSelectionMerge %233 None
+               OpBranchConditional %232 %234 %235
+        %234 = OpLabel
+        %236 = OpAccessChain %_ptr_Private_int %data %int_7
+        %237 = OpLoad %int %236
+        %238 = OpConvertSToF %float %237
+        %239 = OpFDiv %float %238 %float_10
+        %240 = OpFAdd %float %float_0_5 %239
+               OpStore %grey %240
+               OpBranch %233
+        %235 = OpLabel
+        %241 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %242 = OpLoad %float %241
+        %243 = OpConvertFToS %int %242
+        %244 = OpSLessThan %bool %243 %int_270
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %247
+        %246 = OpLabel
+        %248 = OpAccessChain %_ptr_Private_int %data %int_8
+        %249 = OpLoad %int %248
+        %250 = OpConvertSToF %float %249
+        %251 = OpFDiv %float %250 %float_10
+        %252 = OpFAdd %float %float_0_5 %251
+               OpStore %grey %252
+               OpBranch %245
+        %247 = OpLabel
+               OpKill
+        %245 = OpLabel
+               OpBranch %233
+        %233 = OpLabel
+               OpBranch %221
+        %221 = OpLabel
+               OpBranch %209
+        %209 = OpLabel
+               OpBranch %202
+        %202 = OpLabel
+               OpBranch %190
+        %190 = OpLabel
+               OpBranch %178
+        %178 = OpLabel
+               OpBranch %166
+        %166 = OpLabel
+               OpBranch %154
+        %154 = OpLabel
+        %253 = OpLoad %float %grey
+        %254 = OpCompositeConstruct %v3float %253 %253 %253
+        %255 = OpCompositeExtract %float %254 0
+        %256 = OpCompositeExtract %float %254 1
+        %257 = OpCompositeExtract %float %254 2
+        %258 = OpCompositeConstruct %v4float %255 %256 %257 %float_1
+               OpStore %_GLF_color %258
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %41
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %259 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %260 = OpLoad %int %from
+               OpStore %k %260
+        %261 = OpLoad %int %from
+               OpStore %i %261
+        %262 = OpLoad %int %mid
+        %263 = OpIAdd %int %262 %int_1
+               OpStore %j %263
+               OpBranch %264
+        %264 = OpLabel
+               OpLoopMerge %265 %266 None
+               OpBranch %267
+        %267 = OpLabel
+        %268 = OpLoad %int %i
+        %269 = OpLoad %int %mid
+        %270 = OpSLessThanEqual %bool %268 %269
+        %271 = OpLoad %int %j
+        %272 = OpLoad %int %to
+        %273 = OpSLessThanEqual %bool %271 %272
+        %274 = OpLogicalAnd %bool %270 %273
+               OpBranchConditional %274 %275 %265
+        %275 = OpLabel
+        %276 = OpLoad %int %i
+        %277 = OpAccessChain %_ptr_Private_int %data %276
+        %278 = OpLoad %int %277
+        %279 = OpLoad %int %j
+        %280 = OpAccessChain %_ptr_Private_int %data %279
+        %281 = OpLoad %int %280
+        %282 = OpSLessThan %bool %278 %281
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %285
+        %284 = OpLabel
+        %286 = OpLoad %int %k
+        %287 = OpIAdd %int %286 %int_1
+               OpStore %k %287
+        %288 = OpLoad %int %i
+        %289 = OpIAdd %int %288 %int_1
+               OpStore %i %289
+        %290 = OpAccessChain %_ptr_Private_int %data %288
+        %291 = OpLoad %int %290
+        %292 = OpAccessChain %_ptr_Private_int %temp %286
+               OpStore %292 %291
+               OpBranch %283
+        %285 = OpLabel
+        %293 = OpLoad %int %k
+        %294 = OpIAdd %int %293 %int_1
+               OpStore %k %294
+        %295 = OpLoad %int %j
+        %296 = OpIAdd %int %295 %int_1
+               OpStore %j %296
+        %297 = OpAccessChain %_ptr_Private_int %data %295
+        %298 = OpLoad %int %297
+        %299 = OpAccessChain %_ptr_Private_int %temp %293
+               OpStore %299 %298
+               OpBranch %283
+        %283 = OpLabel
+               OpBranch %266
+        %266 = OpLabel
+               OpBranch %264
+        %265 = OpLabel
+               OpBranch %300
+        %300 = OpLabel
+               OpLoopMerge %301 %302 None
+               OpBranch %303
+        %303 = OpLabel
+        %304 = OpLoad %int %i
+        %305 = OpSLessThan %bool %304 %int_10
+        %306 = OpLoad %int %i
+        %307 = OpLoad %int %mid
+        %308 = OpSLessThanEqual %bool %306 %307
+        %309 = OpLogicalAnd %bool %305 %308
+               OpBranchConditional %309 %310 %301
+        %310 = OpLabel
+        %311 = OpLoad %int %k
+        %312 = OpIAdd %int %311 %int_1
+               OpStore %k %312
+        %313 = OpLoad %int %i
+        %314 = OpIAdd %int %313 %int_1
+               OpStore %i %314
+        %315 = OpAccessChain %_ptr_Private_int %data %313
+        %316 = OpLoad %int %315
+        %317 = OpAccessChain %_ptr_Private_int %temp %311
+               OpStore %317 %316
+               OpBranch %302
+        %302 = OpLabel
+               OpBranch %300
+        %301 = OpLabel
+        %318 = OpLoad %int %from
+               OpStore %i_0 %318
+               OpBranch %319
+        %319 = OpLabel
+               OpLoopMerge %320 %321 None
+               OpBranch %322
+        %322 = OpLabel
+        %323 = OpLoad %int %i_0
+        %324 = OpLoad %int %to
+        %325 = OpSLessThanEqual %bool %323 %324
+               OpBranchConditional %325 %326 %320
+        %326 = OpLabel
+        %327 = OpLoad %int %i_0
+        %328 = OpLoad %int %i_0
+        %329 = OpAccessChain %_ptr_Private_int %temp %328
+        %330 = OpLoad %int %329
+        %331 = OpAccessChain %_ptr_Private_int %data %327
+               OpStore %331 %330
+               OpBranch %321
+        %321 = OpLabel
+        %332 = OpLoad %int %i_0
+        %333 = OpIAdd %int %332 %int_1
+               OpStore %i_0 %333
+               OpBranch %319
+        %320 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_i1_i1_ = OpFunction %int None %42
+          %m = OpFunctionParameter %_ptr_Function_int
+       %high = OpFunctionParameter %_ptr_Function_int
+        %334 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function
+        %335 = OpVariable %_ptr_Function_int Function
+        %336 = OpVariable %_ptr_Function_int Function
+        %337 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %338 = OpLoad %float %337
+        %339 = OpFOrdGreaterThanEqual %bool %338 %float_0
+               OpSelectionMerge %340 None
+               OpBranchConditional %339 %341 %342
+        %341 = OpLabel
+               OpSelectionMerge %343 None
+               OpBranchConditional %false %344 %345
+        %344 = OpLabel
+        %346 = OpLoad %int %high
+        %347 = OpShiftLeftLogical %int %346 %int_0
+               OpStore %336 %347
+               OpBranch %343
+        %345 = OpLabel
+               OpStore %336 %int_4
+               OpBranch %343
+        %343 = OpLabel
+        %348 = OpLoad %int %336
+        %349 = OpShiftLeftLogical %int %int_1 %348
+               OpStore %335 %349
+               OpBranch %340
+        %342 = OpLabel
+               OpStore %335 %int_1
+               OpBranch %340
+        %340 = OpLabel
+        %350 = OpLoad %int %335
+               OpStore %x %350
+        %351 = OpLoad %int %x
+        %352 = OpShiftRightArithmetic %int %351 %int_4
+               OpStore %x %352
+        %353 = OpLoad %int %m
+        %354 = OpIMul %int %int_2 %353
+        %355 = OpLoad %int %m
+        %356 = OpIMul %int %int_2 %355
+        %357 = OpLoad %int %m
+        %358 = OpIMul %int %int_2 %357
+        %359 = OpLoad %int %x
+        %360 = OpSDiv %int %358 %359
+        %361 = OpExtInst %int %1 SClamp %354 %356 %360
+               OpReturnValue %361
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %38
+        %362 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+     %high_0 = OpVariable %_ptr_Function_int Function
+        %m_0 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high_0 %int_9
+               OpStore %m_0 %int_1
+               OpBranch %363
+        %363 = OpLabel
+               OpLoopMerge %364 %365 None
+               OpBranch %366
+        %366 = OpLabel
+        %367 = OpLoad %int %m_0
+        %368 = OpLoad %int %high_0
+        %369 = OpSLessThanEqual %bool %367 %368
+               OpBranchConditional %369 %370 %364
+        %370 = OpLabel
+        %371 = OpLoad %int %low
+               OpStore %i_1 %371
+               OpBranch %372
+        %372 = OpLabel
+               OpLoopMerge %373 %374 None
+               OpBranch %375
+        %375 = OpLabel
+        %376 = OpLoad %int %i_1
+        %377 = OpLoad %int %high_0
+        %378 = OpSLessThan %bool %376 %377
+               OpBranchConditional %378 %379 %373
+        %379 = OpLabel
+        %380 = OpLoad %int %i_1
+               OpStore %from_0 %380
+        %381 = OpLoad %int %i_1
+        %382 = OpLoad %int %m_0
+        %383 = OpIAdd %int %381 %382
+        %384 = OpISub %int %383 %int_1
+               OpStore %mid_0 %384
+        %385 = OpLoad %int %i_1
+        %386 = OpLoad %int %m_0
+        %387 = OpIMul %int %int_2 %386
+        %388 = OpIAdd %int %385 %387
+        %389 = OpISub %int %388 %int_1
+        %390 = OpLoad %int %high_0
+        %391 = OpExtInst %int %1 SMin %389 %390
+               OpStore %to_0 %391
+        %392 = OpLoad %int %from_0
+               OpStore %param %392
+        %393 = OpLoad %int %mid_0
+               OpStore %param_0 %393
+        %394 = OpLoad %int %to_0
+               OpStore %param_1 %394
+        %395 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %374
+        %374 = OpLabel
+        %396 = OpLoad %int %m_0
+               OpStore %param_2 %396
+        %397 = OpLoad %int %high_0
+               OpStore %param_3 %397
+        %398 = OpFunctionCall %int %func_i1_i1_ %param_2 %param_3
+        %399 = OpLoad %int %i_1
+        %400 = OpIAdd %int %399 %398
+               OpStore %i_1 %400
+               OpBranch %372
+        %373 = OpLabel
+               OpBranch %365
+        %365 = OpLabel
+        %401 = OpLoad %int %m_0
+        %402 = OpIMul %int %int_2 %401
+               OpStore %m_0 %402
+               OpBranch %363
+        %364 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..edd60f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.hlsl
@@ -0,0 +1,302 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_260 = from;
+  k = x_260;
+  const int x_261 = from;
+  i = x_261;
+  const int x_262 = mid;
+  j = (x_262 + 1);
+  while (true) {
+    const int x_268 = i;
+    const int x_269 = mid;
+    const int x_271 = j;
+    const int x_272 = to;
+    bool tint_tmp = (x_268 <= x_269);
+    if (tint_tmp) {
+      tint_tmp = (x_271 <= x_272);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_278 = data[i];
+    const int x_281 = data[j];
+    if ((x_278 < x_281)) {
+      const int x_286 = k;
+      k = (x_286 + 1);
+      const int x_288 = i;
+      i = (x_288 + 1);
+      const int x_291 = data[x_288];
+      temp[x_286] = x_291;
+    } else {
+      const int x_293 = k;
+      k = (x_293 + 1);
+      const int x_295 = j;
+      j = (x_295 + 1);
+      const int x_298 = data[x_295];
+      temp[x_293] = x_298;
+    }
+  }
+  while (true) {
+    const int x_304 = i;
+    const int x_306 = i;
+    const int x_307 = mid;
+    bool tint_tmp_1 = (x_304 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_306 <= x_307);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_311 = k;
+    k = (x_311 + 1);
+    const int x_313 = i;
+    i = (x_313 + 1);
+    const int x_316 = data[x_313];
+    temp[x_311] = x_316;
+  }
+  const int x_318 = from;
+  i_1 = x_318;
+  while (true) {
+    const int x_323 = i_1;
+    const int x_324 = to;
+    if ((x_323 <= x_324)) {
+    } else {
+      break;
+    }
+    const int x_327 = i_1;
+    const int x_330 = temp[i_1];
+    data[x_327] = x_330;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+int func_i1_i1_(inout int m, inout int high) {
+  int x = 0;
+  int x_335 = 0;
+  int x_336 = 0;
+  const float x_338 = gl_FragCoord.x;
+  if ((x_338 >= 0.0f)) {
+    if (false) {
+      const int x_346 = high;
+      x_336 = (x_346 << asuint(0));
+    } else {
+      x_336 = 4;
+    }
+    x_335 = (1 << asuint(x_336));
+  } else {
+    x_335 = 1;
+  }
+  x = x_335;
+  x = (x >> asuint(4));
+  const int x_353 = m;
+  const int x_355 = m;
+  const int x_357 = m;
+  return clamp((2 * x_353), (2 * x_355), ((2 * x_357) / x));
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high_1 = 0;
+  int m_1 = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int param_4 = 0;
+  low = 0;
+  high_1 = 9;
+  m_1 = 1;
+  {
+    for(; (m_1 <= high_1); m_1 = (2 * m_1)) {
+      i_2 = low;
+      while (true) {
+        if ((i_2 < high_1)) {
+        } else {
+          break;
+        }
+        from_1 = i_2;
+        mid_1 = ((i_2 + m_1) - 1);
+        to_1 = min(((i_2 + (2 * m_1)) - 1), high_1);
+        param = from_1;
+        param_1 = mid_1;
+        param_2 = to_1;
+        merge_i1_i1_i1_(param, param_1, param_2);
+        {
+          param_3 = m_1;
+          param_4 = high_1;
+          const int x_398 = func_i1_i1_(param_3, param_4);
+          i_2 = (i_2 + x_398);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_93 = asfloat(x_34[0].x);
+  i_3 = int(x_93);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_142 = j_1;
+      const int x_145 = data[j_1];
+      temp[x_142] = x_145;
+    }
+  }
+  mergeSort_();
+  const float x_151 = gl_FragCoord.y;
+  if ((int(x_151) < 30)) {
+    const int x_158 = data[0];
+    grey = (0.5f + (float(x_158) / 10.0f));
+  } else {
+    const float x_163 = gl_FragCoord.y;
+    if ((int(x_163) < 60)) {
+      const int x_170 = data[1];
+      grey = (0.5f + (float(x_170) / 10.0f));
+    } else {
+      const float x_175 = gl_FragCoord.y;
+      if ((int(x_175) < 90)) {
+        const int x_182 = data[2];
+        grey = (0.5f + (float(x_182) / 10.0f));
+      } else {
+        const float x_187 = gl_FragCoord.y;
+        if ((int(x_187) < 120)) {
+          const int x_194 = data[3];
+          grey = (0.5f + (float(x_194) / 10.0f));
+        } else {
+          const float x_199 = gl_FragCoord.y;
+          if ((int(x_199) < 150)) {
+            discard;
+          } else {
+            const float x_206 = gl_FragCoord.y;
+            if ((int(x_206) < 180)) {
+              const int x_213 = data[5];
+              grey = (0.5f + (float(x_213) / 10.0f));
+            } else {
+              const float x_218 = gl_FragCoord.y;
+              if ((int(x_218) < 210)) {
+                const int x_225 = data[6];
+                grey = (0.5f + (float(x_225) / 10.0f));
+              } else {
+                const float x_230 = gl_FragCoord.y;
+                if ((int(x_230) < 240)) {
+                  const int x_237 = data[7];
+                  grey = (0.5f + (float(x_237) / 10.0f));
+                } else {
+                  const float x_242 = gl_FragCoord.y;
+                  if ((int(x_242) < 270)) {
+                    const int x_249 = data[8];
+                    grey = (0.5f + (float(x_249) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_253 = grey;
+  const float3 x_254 = float3(x_253, x_253, x_253);
+  x_GLF_color = float4(x_254.x, x_254.y, x_254.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.msl
new file mode 100644
index 0000000..eb075ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.msl
@@ -0,0 +1,348 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_260 = *(from);
+  k = x_260;
+  int const x_261 = *(from);
+  i = x_261;
+  int const x_262 = *(mid);
+  j = (x_262 + 1);
+  while (true) {
+    int const x_268 = i;
+    int const x_269 = *(mid);
+    int const x_271 = j;
+    int const x_272 = *(to);
+    if (((x_268 <= x_269) && (x_271 <= x_272))) {
+    } else {
+      break;
+    }
+    int const x_276 = i;
+    int const x_278 = (*(tint_symbol_5)).arr[x_276];
+    int const x_279 = j;
+    int const x_281 = (*(tint_symbol_5)).arr[x_279];
+    if ((x_278 < x_281)) {
+      int const x_286 = k;
+      k = (x_286 + 1);
+      int const x_288 = i;
+      i = (x_288 + 1);
+      int const x_291 = (*(tint_symbol_5)).arr[x_288];
+      (*(tint_symbol_6)).arr[x_286] = x_291;
+    } else {
+      int const x_293 = k;
+      k = (x_293 + 1);
+      int const x_295 = j;
+      j = (x_295 + 1);
+      int const x_298 = (*(tint_symbol_5)).arr[x_295];
+      (*(tint_symbol_6)).arr[x_293] = x_298;
+    }
+  }
+  while (true) {
+    int const x_304 = i;
+    int const x_306 = i;
+    int const x_307 = *(mid);
+    if (((x_304 < 10) && (x_306 <= x_307))) {
+    } else {
+      break;
+    }
+    int const x_311 = k;
+    k = (x_311 + 1);
+    int const x_313 = i;
+    i = (x_313 + 1);
+    int const x_316 = (*(tint_symbol_5)).arr[x_313];
+    (*(tint_symbol_6)).arr[x_311] = x_316;
+  }
+  int const x_318 = *(from);
+  i_1 = x_318;
+  while (true) {
+    int const x_323 = i_1;
+    int const x_324 = *(to);
+    if ((x_323 <= x_324)) {
+    } else {
+      break;
+    }
+    int const x_327 = i_1;
+    int const x_328 = i_1;
+    int const x_330 = (*(tint_symbol_6)).arr[x_328];
+    (*(tint_symbol_5)).arr[x_327] = x_330;
+    {
+      int const x_332 = i_1;
+      i_1 = (x_332 + 1);
+    }
+  }
+  return;
+}
+
+int func_i1_i1_(thread int* const m, thread int* const high, thread float4* const tint_symbol_7) {
+  int x = 0;
+  int x_335 = 0;
+  int x_336 = 0;
+  float const x_338 = (*(tint_symbol_7)).x;
+  if ((x_338 >= 0.0f)) {
+    if (false) {
+      int const x_346 = *(high);
+      x_336 = (x_346 << as_type<uint>(0));
+    } else {
+      x_336 = 4;
+    }
+    int const x_348 = x_336;
+    x_335 = (1 << as_type<uint>(x_348));
+  } else {
+    x_335 = 1;
+  }
+  int const x_350 = x_335;
+  x = x_350;
+  int const x_351 = x;
+  x = (x_351 >> as_type<uint>(4));
+  int const x_353 = *(m);
+  int const x_355 = *(m);
+  int const x_357 = *(m);
+  int const x_359 = x;
+  return clamp((2 * x_353), (2 * x_355), ((2 * x_357) / x_359));
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_8, thread tint_array_wrapper* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int low = 0;
+  int high_1 = 0;
+  int m_1 = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int param_4 = 0;
+  low = 0;
+  high_1 = 9;
+  m_1 = 1;
+  while (true) {
+    int const x_367 = m_1;
+    int const x_368 = high_1;
+    if ((x_367 <= x_368)) {
+    } else {
+      break;
+    }
+    int const x_371 = low;
+    i_2 = x_371;
+    while (true) {
+      int const x_376 = i_2;
+      int const x_377 = high_1;
+      if ((x_376 < x_377)) {
+      } else {
+        break;
+      }
+      int const x_380 = i_2;
+      from_1 = x_380;
+      int const x_381 = i_2;
+      int const x_382 = m_1;
+      mid_1 = ((x_381 + x_382) - 1);
+      int const x_385 = i_2;
+      int const x_386 = m_1;
+      int const x_390 = high_1;
+      to_1 = min(((x_385 + (2 * x_386)) - 1), x_390);
+      int const x_392 = from_1;
+      param = x_392;
+      int const x_393 = mid_1;
+      param_1 = x_393;
+      int const x_394 = to_1;
+      param_2 = x_394;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_8, tint_symbol_9);
+      {
+        int const x_396 = m_1;
+        param_3 = x_396;
+        int const x_397 = high_1;
+        param_4 = x_397;
+        int const x_398 = func_i1_i1_(&(param_3), &(param_4), tint_symbol_10);
+        int const x_399 = i_2;
+        i_2 = (x_399 + x_398);
+      }
+    }
+    {
+      int const x_401 = m_1;
+      m_1 = (2 * x_401);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_34, thread tint_array_wrapper* const tint_symbol_11, thread tint_array_wrapper* const tint_symbol_12, thread float4* const tint_symbol_13, thread float4* const tint_symbol_14) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_93 = x_34.injectionSwitch.x;
+  i_3 = int(x_93);
+  while (true) {
+    int const x_99 = i_3;
+    switch(x_99) {
+      case 9: {
+        int const x_129 = i_3;
+        (*(tint_symbol_11)).arr[x_129] = -5;
+        break;
+      }
+      case 8: {
+        int const x_127 = i_3;
+        (*(tint_symbol_11)).arr[x_127] = -4;
+        break;
+      }
+      case 7: {
+        int const x_125 = i_3;
+        (*(tint_symbol_11)).arr[x_125] = -3;
+        break;
+      }
+      case 6: {
+        int const x_123 = i_3;
+        (*(tint_symbol_11)).arr[x_123] = -2;
+        break;
+      }
+      case 5: {
+        int const x_121 = i_3;
+        (*(tint_symbol_11)).arr[x_121] = -1;
+        break;
+      }
+      case 4: {
+        int const x_119 = i_3;
+        (*(tint_symbol_11)).arr[x_119] = 0;
+        break;
+      }
+      case 3: {
+        int const x_117 = i_3;
+        (*(tint_symbol_11)).arr[x_117] = 1;
+        break;
+      }
+      case 2: {
+        int const x_115 = i_3;
+        (*(tint_symbol_11)).arr[x_115] = 2;
+        break;
+      }
+      case 1: {
+        int const x_113 = i_3;
+        (*(tint_symbol_11)).arr[x_113] = 3;
+        break;
+      }
+      case 0: {
+        int const x_111 = i_3;
+        (*(tint_symbol_11)).arr[x_111] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_131 = i_3;
+    i_3 = (x_131 + 1);
+    {
+      int const x_133 = i_3;
+      if ((x_133 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_139 = j_1;
+    if ((x_139 < 10)) {
+    } else {
+      break;
+    }
+    int const x_142 = j_1;
+    int const x_143 = j_1;
+    int const x_145 = (*(tint_symbol_11)).arr[x_143];
+    (*(tint_symbol_12)).arr[x_142] = x_145;
+    {
+      int const x_147 = j_1;
+      j_1 = (x_147 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_11, tint_symbol_12, tint_symbol_13);
+  float const x_151 = (*(tint_symbol_13)).y;
+  if ((int(x_151) < 30)) {
+    int const x_158 = (*(tint_symbol_11)).arr[0];
+    grey = (0.5f + (float(x_158) / 10.0f));
+  } else {
+    float const x_163 = (*(tint_symbol_13)).y;
+    if ((int(x_163) < 60)) {
+      int const x_170 = (*(tint_symbol_11)).arr[1];
+      grey = (0.5f + (float(x_170) / 10.0f));
+    } else {
+      float const x_175 = (*(tint_symbol_13)).y;
+      if ((int(x_175) < 90)) {
+        int const x_182 = (*(tint_symbol_11)).arr[2];
+        grey = (0.5f + (float(x_182) / 10.0f));
+      } else {
+        float const x_187 = (*(tint_symbol_13)).y;
+        if ((int(x_187) < 120)) {
+          int const x_194 = (*(tint_symbol_11)).arr[3];
+          grey = (0.5f + (float(x_194) / 10.0f));
+        } else {
+          float const x_199 = (*(tint_symbol_13)).y;
+          if ((int(x_199) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_206 = (*(tint_symbol_13)).y;
+            if ((int(x_206) < 180)) {
+              int const x_213 = (*(tint_symbol_11)).arr[5];
+              grey = (0.5f + (float(x_213) / 10.0f));
+            } else {
+              float const x_218 = (*(tint_symbol_13)).y;
+              if ((int(x_218) < 210)) {
+                int const x_225 = (*(tint_symbol_11)).arr[6];
+                grey = (0.5f + (float(x_225) / 10.0f));
+              } else {
+                float const x_230 = (*(tint_symbol_13)).y;
+                if ((int(x_230) < 240)) {
+                  int const x_237 = (*(tint_symbol_11)).arr[7];
+                  grey = (0.5f + (float(x_237) / 10.0f));
+                } else {
+                  float const x_242 = (*(tint_symbol_13)).y;
+                  if ((int(x_242) < 270)) {
+                    int const x_249 = (*(tint_symbol_11)).arr[8];
+                    grey = (0.5f + (float(x_249) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_253 = grey;
+  float3 const x_254 = float3(x_253, x_253, x_253);
+  *(tint_symbol_14) = float4(x_254.x, x_254.y, x_254.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_15 = 0.0f;
+  thread tint_array_wrapper tint_symbol_16 = {};
+  thread tint_array_wrapper tint_symbol_17 = {};
+  thread float4 tint_symbol_18 = 0.0f;
+  tint_symbol_15 = gl_FragCoord_param;
+  main_1(x_34, &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_15), &(tint_symbol_18));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_18};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..6248b33
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.spvasm
@@ -0,0 +1,716 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 463
+; Schema: 0
+               OpCapability Shader
+        %174 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_34 "x_34"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %func_i1_i1_ "func_i1_i1_"
+               OpName %m "m"
+               OpName %high "high"
+               OpName %x "x"
+               OpName %x_335 "x_335"
+               OpName %x_336 "x_336"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high_1 "high_1"
+               OpName %m_1 "m_1"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %param_4 "param_4"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+      %int_2 = OpConstant %int 2
+        %180 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+%_ptr_Function_float = OpTypePointer Function %float
+        %251 = OpConstantNull %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+     %uint_1 = OpConstant %uint 1
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %450 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_i1_i1_ = OpFunction %int None %132
+          %m = OpFunctionParameter %_ptr_Function_int
+       %high = OpFunctionParameter %_ptr_Function_int
+        %136 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %32
+      %x_335 = OpVariable %_ptr_Function_int Function %32
+      %x_336 = OpVariable %_ptr_Function_int Function %32
+        %142 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %143 = OpLoad %float %142
+        %145 = OpFOrdGreaterThanEqual %bool %143 %float_0
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %148
+        %147 = OpLabel
+               OpSelectionMerge %150 None
+               OpBranchConditional %false %151 %152
+        %151 = OpLabel
+        %154 = OpLoad %int %high
+        %155 = OpBitcast %uint %int_0
+        %157 = OpShiftLeftLogical %int %154 %155
+               OpStore %x_336 %157
+               OpBranch %150
+        %152 = OpLabel
+               OpStore %x_336 %int_4
+               OpBranch %150
+        %150 = OpLabel
+        %159 = OpLoad %int %x_336
+        %160 = OpBitcast %uint %159
+        %161 = OpShiftLeftLogical %int %int_1 %160
+               OpStore %x_335 %161
+               OpBranch %146
+        %148 = OpLabel
+               OpStore %x_335 %int_1
+               OpBranch %146
+        %146 = OpLabel
+        %162 = OpLoad %int %x_335
+               OpStore %x %162
+        %163 = OpLoad %int %x
+        %164 = OpBitcast %uint %int_4
+        %165 = OpShiftRightArithmetic %int %163 %164
+               OpStore %x %165
+        %167 = OpLoad %int %m
+        %169 = OpLoad %int %m
+        %171 = OpLoad %int %m
+        %172 = OpLoad %int %x
+        %176 = OpIMul %int %int_2 %167
+        %177 = OpIMul %int %int_2 %169
+        %178 = OpIMul %int %int_2 %171
+        %179 = OpSDiv %int %178 %172
+        %173 = OpExtInst %int %174 SClamp %176 %177 %179
+               OpReturnValue %173
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %180
+        %182 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+     %high_1 = OpVariable %_ptr_Function_int Function %32
+        %m_1 = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+    %param_3 = OpVariable %_ptr_Function_int Function %32
+    %param_4 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high_1 %int_9
+               OpStore %m_1 %int_1
+               OpBranch %196
+        %196 = OpLabel
+               OpLoopMerge %197 %198 None
+               OpBranch %199
+        %199 = OpLabel
+        %200 = OpLoad %int %m_1
+        %201 = OpLoad %int %high_1
+        %202 = OpSLessThanEqual %bool %200 %201
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %205
+        %204 = OpLabel
+               OpBranch %203
+        %205 = OpLabel
+               OpBranch %197
+        %203 = OpLabel
+        %206 = OpLoad %int %low
+               OpStore %i_2 %206
+               OpBranch %207
+        %207 = OpLabel
+               OpLoopMerge %208 %209 None
+               OpBranch %210
+        %210 = OpLabel
+        %211 = OpLoad %int %i_2
+        %212 = OpLoad %int %high_1
+        %213 = OpSLessThan %bool %211 %212
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %208
+        %214 = OpLabel
+        %217 = OpLoad %int %i_2
+               OpStore %from_1 %217
+        %218 = OpLoad %int %i_2
+        %219 = OpLoad %int %m_1
+        %220 = OpIAdd %int %218 %219
+        %221 = OpISub %int %220 %int_1
+               OpStore %mid_1 %221
+        %222 = OpLoad %int %i_2
+        %223 = OpLoad %int %m_1
+        %224 = OpLoad %int %high_1
+        %226 = OpIMul %int %int_2 %223
+        %227 = OpIAdd %int %222 %226
+        %228 = OpISub %int %227 %int_1
+        %225 = OpExtInst %int %174 SMin %228 %224
+               OpStore %to_1 %225
+        %229 = OpLoad %int %from_1
+               OpStore %param %229
+        %230 = OpLoad %int %mid_1
+               OpStore %param_1 %230
+        %231 = OpLoad %int %to_1
+               OpStore %param_2 %231
+        %232 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %209
+        %209 = OpLabel
+        %236 = OpLoad %int %m_1
+               OpStore %param_3 %236
+        %237 = OpLoad %int %high_1
+               OpStore %param_4 %237
+        %238 = OpFunctionCall %int %func_i1_i1_ %param_3 %param_4
+        %241 = OpLoad %int %i_2
+        %242 = OpIAdd %int %241 %238
+               OpStore %i_2 %242
+               OpBranch %207
+        %208 = OpLabel
+               OpBranch %198
+        %198 = OpLabel
+        %243 = OpLoad %int %m_1
+        %244 = OpIMul %int %int_2 %243
+               OpStore %m_1 %244
+               OpBranch %196
+        %197 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %180
+        %246 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %251
+        %253 = OpAccessChain %_ptr_Uniform_float %x_34 %uint_0 %uint_0
+        %254 = OpLoad %float %253
+        %255 = OpConvertFToS %int %254
+               OpStore %i_3 %255
+               OpBranch %256
+        %256 = OpLabel
+               OpLoopMerge %257 %258 None
+               OpBranch %259
+        %259 = OpLabel
+        %260 = OpLoad %int %i_3
+               OpSelectionMerge %261 None
+               OpSwitch %260 %262 9 %263 8 %264 7 %265 6 %266 5 %267 4 %268 3 %269 2 %270 1 %271 0 %272
+        %263 = OpLabel
+        %273 = OpLoad %int %i_3
+        %274 = OpAccessChain %_ptr_Private_int %data %273
+               OpStore %274 %int_n5
+               OpBranch %261
+        %264 = OpLabel
+        %276 = OpLoad %int %i_3
+        %277 = OpAccessChain %_ptr_Private_int %data %276
+               OpStore %277 %int_n4
+               OpBranch %261
+        %265 = OpLabel
+        %279 = OpLoad %int %i_3
+        %280 = OpAccessChain %_ptr_Private_int %data %279
+               OpStore %280 %int_n3
+               OpBranch %261
+        %266 = OpLabel
+        %282 = OpLoad %int %i_3
+        %283 = OpAccessChain %_ptr_Private_int %data %282
+               OpStore %283 %int_n2
+               OpBranch %261
+        %267 = OpLabel
+        %285 = OpLoad %int %i_3
+        %286 = OpAccessChain %_ptr_Private_int %data %285
+               OpStore %286 %int_n1
+               OpBranch %261
+        %268 = OpLabel
+        %288 = OpLoad %int %i_3
+        %289 = OpAccessChain %_ptr_Private_int %data %288
+               OpStore %289 %int_0
+               OpBranch %261
+        %269 = OpLabel
+        %290 = OpLoad %int %i_3
+        %291 = OpAccessChain %_ptr_Private_int %data %290
+               OpStore %291 %int_1
+               OpBranch %261
+        %270 = OpLabel
+        %292 = OpLoad %int %i_3
+        %293 = OpAccessChain %_ptr_Private_int %data %292
+               OpStore %293 %int_2
+               OpBranch %261
+        %271 = OpLabel
+        %294 = OpLoad %int %i_3
+        %295 = OpAccessChain %_ptr_Private_int %data %294
+               OpStore %295 %int_3
+               OpBranch %261
+        %272 = OpLabel
+        %297 = OpLoad %int %i_3
+        %298 = OpAccessChain %_ptr_Private_int %data %297
+               OpStore %298 %int_4
+               OpBranch %261
+        %262 = OpLabel
+               OpBranch %261
+        %261 = OpLabel
+        %299 = OpLoad %int %i_3
+        %300 = OpIAdd %int %299 %int_1
+               OpStore %i_3 %300
+               OpBranch %258
+        %258 = OpLabel
+        %301 = OpLoad %int %i_3
+        %302 = OpSLessThan %bool %301 %int_10
+               OpSelectionMerge %303 None
+               OpBranchConditional %302 %304 %305
+        %304 = OpLabel
+               OpBranch %303
+        %305 = OpLabel
+               OpBranch %257
+        %303 = OpLabel
+               OpBranch %256
+        %257 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+        %310 = OpLoad %int %j_1
+        %311 = OpSLessThan %bool %310 %int_10
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %314
+        %313 = OpLabel
+               OpBranch %312
+        %314 = OpLabel
+               OpBranch %307
+        %312 = OpLabel
+        %315 = OpLoad %int %j_1
+        %316 = OpLoad %int %j_1
+        %317 = OpAccessChain %_ptr_Private_int %data %316
+        %318 = OpLoad %int %317
+        %319 = OpAccessChain %_ptr_Private_int %temp %315
+               OpStore %319 %318
+               OpBranch %308
+        %308 = OpLabel
+        %320 = OpLoad %int %j_1
+        %321 = OpIAdd %int %320 %int_1
+               OpStore %j_1 %321
+               OpBranch %306
+        %307 = OpLabel
+        %322 = OpFunctionCall %void %mergeSort_
+        %324 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %325 = OpLoad %float %324
+        %326 = OpConvertFToS %int %325
+        %328 = OpSLessThan %bool %326 %int_30
+               OpSelectionMerge %329 None
+               OpBranchConditional %328 %330 %331
+        %330 = OpLabel
+        %332 = OpAccessChain %_ptr_Private_int %data %int_0
+        %333 = OpLoad %int %332
+        %335 = OpConvertSToF %float %333
+        %337 = OpFDiv %float %335 %float_10
+        %338 = OpFAdd %float %float_0_5 %337
+               OpStore %grey %338
+               OpBranch %329
+        %331 = OpLabel
+        %339 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %340 = OpLoad %float %339
+        %341 = OpConvertFToS %int %340
+        %343 = OpSLessThan %bool %341 %int_60
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %346
+        %345 = OpLabel
+        %347 = OpAccessChain %_ptr_Private_int %data %int_1
+        %348 = OpLoad %int %347
+        %349 = OpConvertSToF %float %348
+        %350 = OpFDiv %float %349 %float_10
+        %351 = OpFAdd %float %float_0_5 %350
+               OpStore %grey %351
+               OpBranch %344
+        %346 = OpLabel
+        %352 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %353 = OpLoad %float %352
+        %354 = OpConvertFToS %int %353
+        %356 = OpSLessThan %bool %354 %int_90
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %359
+        %358 = OpLabel
+        %360 = OpAccessChain %_ptr_Private_int %data %int_2
+        %361 = OpLoad %int %360
+        %362 = OpConvertSToF %float %361
+        %363 = OpFDiv %float %362 %float_10
+        %364 = OpFAdd %float %float_0_5 %363
+               OpStore %grey %364
+               OpBranch %357
+        %359 = OpLabel
+        %365 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %366 = OpLoad %float %365
+        %367 = OpConvertFToS %int %366
+        %369 = OpSLessThan %bool %367 %int_120
+               OpSelectionMerge %370 None
+               OpBranchConditional %369 %371 %372
+        %371 = OpLabel
+        %373 = OpAccessChain %_ptr_Private_int %data %int_3
+        %374 = OpLoad %int %373
+        %375 = OpConvertSToF %float %374
+        %376 = OpFDiv %float %375 %float_10
+        %377 = OpFAdd %float %float_0_5 %376
+               OpStore %grey %377
+               OpBranch %370
+        %372 = OpLabel
+        %378 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %379 = OpLoad %float %378
+        %380 = OpConvertFToS %int %379
+        %382 = OpSLessThan %bool %380 %int_150
+               OpSelectionMerge %383 None
+               OpBranchConditional %382 %384 %385
+        %384 = OpLabel
+               OpKill
+        %385 = OpLabel
+        %386 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %387 = OpLoad %float %386
+        %388 = OpConvertFToS %int %387
+        %390 = OpSLessThan %bool %388 %int_180
+               OpSelectionMerge %391 None
+               OpBranchConditional %390 %392 %393
+        %392 = OpLabel
+        %395 = OpAccessChain %_ptr_Private_int %data %int_5
+        %396 = OpLoad %int %395
+        %397 = OpConvertSToF %float %396
+        %398 = OpFDiv %float %397 %float_10
+        %399 = OpFAdd %float %float_0_5 %398
+               OpStore %grey %399
+               OpBranch %391
+        %393 = OpLabel
+        %400 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %401 = OpLoad %float %400
+        %402 = OpConvertFToS %int %401
+        %404 = OpSLessThan %bool %402 %int_210
+               OpSelectionMerge %405 None
+               OpBranchConditional %404 %406 %407
+        %406 = OpLabel
+        %409 = OpAccessChain %_ptr_Private_int %data %int_6
+        %410 = OpLoad %int %409
+        %411 = OpConvertSToF %float %410
+        %412 = OpFDiv %float %411 %float_10
+        %413 = OpFAdd %float %float_0_5 %412
+               OpStore %grey %413
+               OpBranch %405
+        %407 = OpLabel
+        %414 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %415 = OpLoad %float %414
+        %416 = OpConvertFToS %int %415
+        %418 = OpSLessThan %bool %416 %int_240
+               OpSelectionMerge %419 None
+               OpBranchConditional %418 %420 %421
+        %420 = OpLabel
+        %423 = OpAccessChain %_ptr_Private_int %data %int_7
+        %424 = OpLoad %int %423
+        %425 = OpConvertSToF %float %424
+        %426 = OpFDiv %float %425 %float_10
+        %427 = OpFAdd %float %float_0_5 %426
+               OpStore %grey %427
+               OpBranch %419
+        %421 = OpLabel
+        %428 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %429 = OpLoad %float %428
+        %430 = OpConvertFToS %int %429
+        %432 = OpSLessThan %bool %430 %int_270
+               OpSelectionMerge %433 None
+               OpBranchConditional %432 %434 %435
+        %434 = OpLabel
+        %437 = OpAccessChain %_ptr_Private_int %data %int_8
+        %438 = OpLoad %int %437
+        %439 = OpConvertSToF %float %438
+        %440 = OpFDiv %float %439 %float_10
+        %441 = OpFAdd %float %float_0_5 %440
+               OpStore %grey %441
+               OpBranch %433
+        %435 = OpLabel
+               OpKill
+        %433 = OpLabel
+               OpBranch %419
+        %419 = OpLabel
+               OpBranch %405
+        %405 = OpLabel
+               OpBranch %391
+        %391 = OpLabel
+               OpBranch %383
+        %383 = OpLabel
+               OpBranch %370
+        %370 = OpLabel
+               OpBranch %357
+        %357 = OpLabel
+               OpBranch %344
+        %344 = OpLabel
+               OpBranch %329
+        %329 = OpLabel
+        %442 = OpLoad %float %grey
+        %444 = OpCompositeConstruct %v3float %442 %442 %442
+        %445 = OpCompositeExtract %float %444 0
+        %446 = OpCompositeExtract %float %444 1
+        %447 = OpCompositeExtract %float %444 2
+        %449 = OpCompositeConstruct %v4float %445 %446 %447 %float_1
+               OpStore %x_GLF_color %449
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %450
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %454 = OpLabel
+        %455 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %455
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %180
+        %457 = OpLabel
+        %458 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %458
+        %459 = OpFunctionCall %void %main_1
+        %461 = OpLoad %v4float %x_GLF_color
+        %462 = OpCompositeConstruct %main_out %461
+        %460 = OpFunctionCall %void %tint_symbol_3 %462
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 258[%258] is not post dominated by the back-edge block 303[%303]
+  %303 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..460ad4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.spvasm.expected.wgsl
@@ -0,0 +1,340 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_260 : i32 = *(from);
+  k = x_260;
+  let x_261 : i32 = *(from);
+  i = x_261;
+  let x_262 : i32 = *(mid);
+  j = (x_262 + 1);
+  loop {
+    let x_268 : i32 = i;
+    let x_269 : i32 = *(mid);
+    let x_271 : i32 = j;
+    let x_272 : i32 = *(to);
+    if (((x_268 <= x_269) && (x_271 <= x_272))) {
+    } else {
+      break;
+    }
+    let x_276 : i32 = i;
+    let x_278 : i32 = data[x_276];
+    let x_279 : i32 = j;
+    let x_281 : i32 = data[x_279];
+    if ((x_278 < x_281)) {
+      let x_286 : i32 = k;
+      k = (x_286 + 1);
+      let x_288 : i32 = i;
+      i = (x_288 + 1);
+      let x_291 : i32 = data[x_288];
+      temp[x_286] = x_291;
+    } else {
+      let x_293 : i32 = k;
+      k = (x_293 + 1);
+      let x_295 : i32 = j;
+      j = (x_295 + 1);
+      let x_298 : i32 = data[x_295];
+      temp[x_293] = x_298;
+    }
+  }
+  loop {
+    let x_304 : i32 = i;
+    let x_306 : i32 = i;
+    let x_307 : i32 = *(mid);
+    if (((x_304 < 10) && (x_306 <= x_307))) {
+    } else {
+      break;
+    }
+    let x_311 : i32 = k;
+    k = (x_311 + 1);
+    let x_313 : i32 = i;
+    i = (x_313 + 1);
+    let x_316 : i32 = data[x_313];
+    temp[x_311] = x_316;
+  }
+  let x_318 : i32 = *(from);
+  i_1 = x_318;
+  loop {
+    let x_323 : i32 = i_1;
+    let x_324 : i32 = *(to);
+    if ((x_323 <= x_324)) {
+    } else {
+      break;
+    }
+    let x_327 : i32 = i_1;
+    let x_328 : i32 = i_1;
+    let x_330 : i32 = temp[x_328];
+    data[x_327] = x_330;
+
+    continuing {
+      let x_332 : i32 = i_1;
+      i_1 = (x_332 + 1);
+    }
+  }
+  return;
+}
+
+fn func_i1_i1_(m : ptr<function, i32>, high : ptr<function, i32>) -> i32 {
+  var x : i32;
+  var x_335 : i32;
+  var x_336 : i32;
+  let x_338 : f32 = gl_FragCoord.x;
+  if ((x_338 >= 0.0)) {
+    if (false) {
+      let x_346 : i32 = *(high);
+      x_336 = (x_346 << bitcast<u32>(0));
+    } else {
+      x_336 = 4;
+    }
+    let x_348 : i32 = x_336;
+    x_335 = (1 << bitcast<u32>(x_348));
+  } else {
+    x_335 = 1;
+  }
+  let x_350 : i32 = x_335;
+  x = x_350;
+  let x_351 : i32 = x;
+  x = (x_351 >> bitcast<u32>(4));
+  let x_353 : i32 = *(m);
+  let x_355 : i32 = *(m);
+  let x_357 : i32 = *(m);
+  let x_359 : i32 = x;
+  return clamp((2 * x_353), (2 * x_355), ((2 * x_357) / x_359));
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high_1 : i32;
+  var m_1 : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  var param_4 : i32;
+  low = 0;
+  high_1 = 9;
+  m_1 = 1;
+  loop {
+    let x_367 : i32 = m_1;
+    let x_368 : i32 = high_1;
+    if ((x_367 <= x_368)) {
+    } else {
+      break;
+    }
+    let x_371 : i32 = low;
+    i_2 = x_371;
+    loop {
+      let x_376 : i32 = i_2;
+      let x_377 : i32 = high_1;
+      if ((x_376 < x_377)) {
+      } else {
+        break;
+      }
+      let x_380 : i32 = i_2;
+      from_1 = x_380;
+      let x_381 : i32 = i_2;
+      let x_382 : i32 = m_1;
+      mid_1 = ((x_381 + x_382) - 1);
+      let x_385 : i32 = i_2;
+      let x_386 : i32 = m_1;
+      let x_390 : i32 = high_1;
+      to_1 = min(((x_385 + (2 * x_386)) - 1), x_390);
+      let x_392 : i32 = from_1;
+      param = x_392;
+      let x_393 : i32 = mid_1;
+      param_1 = x_393;
+      let x_394 : i32 = to_1;
+      param_2 = x_394;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_396 : i32 = m_1;
+        param_3 = x_396;
+        let x_397 : i32 = high_1;
+        param_4 = x_397;
+        let x_398 : i32 = func_i1_i1_(&(param_3), &(param_4));
+        let x_399 : i32 = i_2;
+        i_2 = (x_399 + x_398);
+      }
+    }
+
+    continuing {
+      let x_401 : i32 = m_1;
+      m_1 = (2 * x_401);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_93 : f32 = x_34.injectionSwitch.x;
+  i_3 = i32(x_93);
+  loop {
+    let x_99 : i32 = i_3;
+    switch(x_99) {
+      case 9: {
+        let x_129 : i32 = i_3;
+        data[x_129] = -5;
+      }
+      case 8: {
+        let x_127 : i32 = i_3;
+        data[x_127] = -4;
+      }
+      case 7: {
+        let x_125 : i32 = i_3;
+        data[x_125] = -3;
+      }
+      case 6: {
+        let x_123 : i32 = i_3;
+        data[x_123] = -2;
+      }
+      case 5: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -1;
+      }
+      case 4: {
+        let x_119 : i32 = i_3;
+        data[x_119] = 0;
+      }
+      case 3: {
+        let x_117 : i32 = i_3;
+        data[x_117] = 1;
+      }
+      case 2: {
+        let x_115 : i32 = i_3;
+        data[x_115] = 2;
+      }
+      case 1: {
+        let x_113 : i32 = i_3;
+        data[x_113] = 3;
+      }
+      case 0: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 4;
+      }
+      default: {
+      }
+    }
+    let x_131 : i32 = i_3;
+    i_3 = (x_131 + 1);
+
+    continuing {
+      let x_133 : i32 = i_3;
+      if ((x_133 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_139 : i32 = j_1;
+    if ((x_139 < 10)) {
+    } else {
+      break;
+    }
+    let x_142 : i32 = j_1;
+    let x_143 : i32 = j_1;
+    let x_145 : i32 = data[x_143];
+    temp[x_142] = x_145;
+
+    continuing {
+      let x_147 : i32 = j_1;
+      j_1 = (x_147 + 1);
+    }
+  }
+  mergeSort_();
+  let x_151 : f32 = gl_FragCoord.y;
+  if ((i32(x_151) < 30)) {
+    let x_158 : i32 = data[0];
+    grey = (0.5 + (f32(x_158) / 10.0));
+  } else {
+    let x_163 : f32 = gl_FragCoord.y;
+    if ((i32(x_163) < 60)) {
+      let x_170 : i32 = data[1];
+      grey = (0.5 + (f32(x_170) / 10.0));
+    } else {
+      let x_175 : f32 = gl_FragCoord.y;
+      if ((i32(x_175) < 90)) {
+        let x_182 : i32 = data[2];
+        grey = (0.5 + (f32(x_182) / 10.0));
+      } else {
+        let x_187 : f32 = gl_FragCoord.y;
+        if ((i32(x_187) < 120)) {
+          let x_194 : i32 = data[3];
+          grey = (0.5 + (f32(x_194) / 10.0));
+        } else {
+          let x_199 : f32 = gl_FragCoord.y;
+          if ((i32(x_199) < 150)) {
+            discard;
+          } else {
+            let x_206 : f32 = gl_FragCoord.y;
+            if ((i32(x_206) < 180)) {
+              let x_213 : i32 = data[5];
+              grey = (0.5 + (f32(x_213) / 10.0));
+            } else {
+              let x_218 : f32 = gl_FragCoord.y;
+              if ((i32(x_218) < 210)) {
+                let x_225 : i32 = data[6];
+                grey = (0.5 + (f32(x_225) / 10.0));
+              } else {
+                let x_230 : f32 = gl_FragCoord.y;
+                if ((i32(x_230) < 240)) {
+                  let x_237 : i32 = data[7];
+                  grey = (0.5 + (f32(x_237) / 10.0));
+                } else {
+                  let x_242 : f32 = gl_FragCoord.y;
+                  if ((i32(x_242) < 270)) {
+                    let x_249 : i32 = data[8];
+                    grey = (0.5 + (f32(x_249) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_253 : f32 = grey;
+  let x_254 : vec3<f32> = vec3<f32>(x_253, x_253, x_253);
+  x_GLF_color = vec4<f32>(x_254.x, x_254.y, x_254.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
new file mode 100644
index 0000000..460ad4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
@@ -0,0 +1,340 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_260 : i32 = *(from);
+  k = x_260;
+  let x_261 : i32 = *(from);
+  i = x_261;
+  let x_262 : i32 = *(mid);
+  j = (x_262 + 1);
+  loop {
+    let x_268 : i32 = i;
+    let x_269 : i32 = *(mid);
+    let x_271 : i32 = j;
+    let x_272 : i32 = *(to);
+    if (((x_268 <= x_269) && (x_271 <= x_272))) {
+    } else {
+      break;
+    }
+    let x_276 : i32 = i;
+    let x_278 : i32 = data[x_276];
+    let x_279 : i32 = j;
+    let x_281 : i32 = data[x_279];
+    if ((x_278 < x_281)) {
+      let x_286 : i32 = k;
+      k = (x_286 + 1);
+      let x_288 : i32 = i;
+      i = (x_288 + 1);
+      let x_291 : i32 = data[x_288];
+      temp[x_286] = x_291;
+    } else {
+      let x_293 : i32 = k;
+      k = (x_293 + 1);
+      let x_295 : i32 = j;
+      j = (x_295 + 1);
+      let x_298 : i32 = data[x_295];
+      temp[x_293] = x_298;
+    }
+  }
+  loop {
+    let x_304 : i32 = i;
+    let x_306 : i32 = i;
+    let x_307 : i32 = *(mid);
+    if (((x_304 < 10) && (x_306 <= x_307))) {
+    } else {
+      break;
+    }
+    let x_311 : i32 = k;
+    k = (x_311 + 1);
+    let x_313 : i32 = i;
+    i = (x_313 + 1);
+    let x_316 : i32 = data[x_313];
+    temp[x_311] = x_316;
+  }
+  let x_318 : i32 = *(from);
+  i_1 = x_318;
+  loop {
+    let x_323 : i32 = i_1;
+    let x_324 : i32 = *(to);
+    if ((x_323 <= x_324)) {
+    } else {
+      break;
+    }
+    let x_327 : i32 = i_1;
+    let x_328 : i32 = i_1;
+    let x_330 : i32 = temp[x_328];
+    data[x_327] = x_330;
+
+    continuing {
+      let x_332 : i32 = i_1;
+      i_1 = (x_332 + 1);
+    }
+  }
+  return;
+}
+
+fn func_i1_i1_(m : ptr<function, i32>, high : ptr<function, i32>) -> i32 {
+  var x : i32;
+  var x_335 : i32;
+  var x_336 : i32;
+  let x_338 : f32 = gl_FragCoord.x;
+  if ((x_338 >= 0.0)) {
+    if (false) {
+      let x_346 : i32 = *(high);
+      x_336 = (x_346 << bitcast<u32>(0));
+    } else {
+      x_336 = 4;
+    }
+    let x_348 : i32 = x_336;
+    x_335 = (1 << bitcast<u32>(x_348));
+  } else {
+    x_335 = 1;
+  }
+  let x_350 : i32 = x_335;
+  x = x_350;
+  let x_351 : i32 = x;
+  x = (x_351 >> bitcast<u32>(4));
+  let x_353 : i32 = *(m);
+  let x_355 : i32 = *(m);
+  let x_357 : i32 = *(m);
+  let x_359 : i32 = x;
+  return clamp((2 * x_353), (2 * x_355), ((2 * x_357) / x_359));
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high_1 : i32;
+  var m_1 : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  var param_4 : i32;
+  low = 0;
+  high_1 = 9;
+  m_1 = 1;
+  loop {
+    let x_367 : i32 = m_1;
+    let x_368 : i32 = high_1;
+    if ((x_367 <= x_368)) {
+    } else {
+      break;
+    }
+    let x_371 : i32 = low;
+    i_2 = x_371;
+    loop {
+      let x_376 : i32 = i_2;
+      let x_377 : i32 = high_1;
+      if ((x_376 < x_377)) {
+      } else {
+        break;
+      }
+      let x_380 : i32 = i_2;
+      from_1 = x_380;
+      let x_381 : i32 = i_2;
+      let x_382 : i32 = m_1;
+      mid_1 = ((x_381 + x_382) - 1);
+      let x_385 : i32 = i_2;
+      let x_386 : i32 = m_1;
+      let x_390 : i32 = high_1;
+      to_1 = min(((x_385 + (2 * x_386)) - 1), x_390);
+      let x_392 : i32 = from_1;
+      param = x_392;
+      let x_393 : i32 = mid_1;
+      param_1 = x_393;
+      let x_394 : i32 = to_1;
+      param_2 = x_394;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_396 : i32 = m_1;
+        param_3 = x_396;
+        let x_397 : i32 = high_1;
+        param_4 = x_397;
+        let x_398 : i32 = func_i1_i1_(&(param_3), &(param_4));
+        let x_399 : i32 = i_2;
+        i_2 = (x_399 + x_398);
+      }
+    }
+
+    continuing {
+      let x_401 : i32 = m_1;
+      m_1 = (2 * x_401);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_93 : f32 = x_34.injectionSwitch.x;
+  i_3 = i32(x_93);
+  loop {
+    let x_99 : i32 = i_3;
+    switch(x_99) {
+      case 9: {
+        let x_129 : i32 = i_3;
+        data[x_129] = -5;
+      }
+      case 8: {
+        let x_127 : i32 = i_3;
+        data[x_127] = -4;
+      }
+      case 7: {
+        let x_125 : i32 = i_3;
+        data[x_125] = -3;
+      }
+      case 6: {
+        let x_123 : i32 = i_3;
+        data[x_123] = -2;
+      }
+      case 5: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -1;
+      }
+      case 4: {
+        let x_119 : i32 = i_3;
+        data[x_119] = 0;
+      }
+      case 3: {
+        let x_117 : i32 = i_3;
+        data[x_117] = 1;
+      }
+      case 2: {
+        let x_115 : i32 = i_3;
+        data[x_115] = 2;
+      }
+      case 1: {
+        let x_113 : i32 = i_3;
+        data[x_113] = 3;
+      }
+      case 0: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 4;
+      }
+      default: {
+      }
+    }
+    let x_131 : i32 = i_3;
+    i_3 = (x_131 + 1);
+
+    continuing {
+      let x_133 : i32 = i_3;
+      if ((x_133 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_139 : i32 = j_1;
+    if ((x_139 < 10)) {
+    } else {
+      break;
+    }
+    let x_142 : i32 = j_1;
+    let x_143 : i32 = j_1;
+    let x_145 : i32 = data[x_143];
+    temp[x_142] = x_145;
+
+    continuing {
+      let x_147 : i32 = j_1;
+      j_1 = (x_147 + 1);
+    }
+  }
+  mergeSort_();
+  let x_151 : f32 = gl_FragCoord.y;
+  if ((i32(x_151) < 30)) {
+    let x_158 : i32 = data[0];
+    grey = (0.5 + (f32(x_158) / 10.0));
+  } else {
+    let x_163 : f32 = gl_FragCoord.y;
+    if ((i32(x_163) < 60)) {
+      let x_170 : i32 = data[1];
+      grey = (0.5 + (f32(x_170) / 10.0));
+    } else {
+      let x_175 : f32 = gl_FragCoord.y;
+      if ((i32(x_175) < 90)) {
+        let x_182 : i32 = data[2];
+        grey = (0.5 + (f32(x_182) / 10.0));
+      } else {
+        let x_187 : f32 = gl_FragCoord.y;
+        if ((i32(x_187) < 120)) {
+          let x_194 : i32 = data[3];
+          grey = (0.5 + (f32(x_194) / 10.0));
+        } else {
+          let x_199 : f32 = gl_FragCoord.y;
+          if ((i32(x_199) < 150)) {
+            discard;
+          } else {
+            let x_206 : f32 = gl_FragCoord.y;
+            if ((i32(x_206) < 180)) {
+              let x_213 : i32 = data[5];
+              grey = (0.5 + (f32(x_213) / 10.0));
+            } else {
+              let x_218 : f32 = gl_FragCoord.y;
+              if ((i32(x_218) < 210)) {
+                let x_225 : i32 = data[6];
+                grey = (0.5 + (f32(x_225) / 10.0));
+              } else {
+                let x_230 : f32 = gl_FragCoord.y;
+                if ((i32(x_230) < 240)) {
+                  let x_237 : i32 = data[7];
+                  grey = (0.5 + (f32(x_237) / 10.0));
+                } else {
+                  let x_242 : f32 = gl_FragCoord.y;
+                  if ((i32(x_242) < 270)) {
+                    let x_249 : i32 = data[8];
+                    grey = (0.5 + (f32(x_249) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_253 : f32 = grey;
+  let x_254 : vec3<f32> = vec3<f32>(x_253, x_253, x_253);
+  x_GLF_color = vec4<f32>(x_254.x, x_254.y, x_254.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..edd60f7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.hlsl
@@ -0,0 +1,302 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_260 = from;
+  k = x_260;
+  const int x_261 = from;
+  i = x_261;
+  const int x_262 = mid;
+  j = (x_262 + 1);
+  while (true) {
+    const int x_268 = i;
+    const int x_269 = mid;
+    const int x_271 = j;
+    const int x_272 = to;
+    bool tint_tmp = (x_268 <= x_269);
+    if (tint_tmp) {
+      tint_tmp = (x_271 <= x_272);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_278 = data[i];
+    const int x_281 = data[j];
+    if ((x_278 < x_281)) {
+      const int x_286 = k;
+      k = (x_286 + 1);
+      const int x_288 = i;
+      i = (x_288 + 1);
+      const int x_291 = data[x_288];
+      temp[x_286] = x_291;
+    } else {
+      const int x_293 = k;
+      k = (x_293 + 1);
+      const int x_295 = j;
+      j = (x_295 + 1);
+      const int x_298 = data[x_295];
+      temp[x_293] = x_298;
+    }
+  }
+  while (true) {
+    const int x_304 = i;
+    const int x_306 = i;
+    const int x_307 = mid;
+    bool tint_tmp_1 = (x_304 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_306 <= x_307);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_311 = k;
+    k = (x_311 + 1);
+    const int x_313 = i;
+    i = (x_313 + 1);
+    const int x_316 = data[x_313];
+    temp[x_311] = x_316;
+  }
+  const int x_318 = from;
+  i_1 = x_318;
+  while (true) {
+    const int x_323 = i_1;
+    const int x_324 = to;
+    if ((x_323 <= x_324)) {
+    } else {
+      break;
+    }
+    const int x_327 = i_1;
+    const int x_330 = temp[i_1];
+    data[x_327] = x_330;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+int func_i1_i1_(inout int m, inout int high) {
+  int x = 0;
+  int x_335 = 0;
+  int x_336 = 0;
+  const float x_338 = gl_FragCoord.x;
+  if ((x_338 >= 0.0f)) {
+    if (false) {
+      const int x_346 = high;
+      x_336 = (x_346 << asuint(0));
+    } else {
+      x_336 = 4;
+    }
+    x_335 = (1 << asuint(x_336));
+  } else {
+    x_335 = 1;
+  }
+  x = x_335;
+  x = (x >> asuint(4));
+  const int x_353 = m;
+  const int x_355 = m;
+  const int x_357 = m;
+  return clamp((2 * x_353), (2 * x_355), ((2 * x_357) / x));
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high_1 = 0;
+  int m_1 = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int param_4 = 0;
+  low = 0;
+  high_1 = 9;
+  m_1 = 1;
+  {
+    for(; (m_1 <= high_1); m_1 = (2 * m_1)) {
+      i_2 = low;
+      while (true) {
+        if ((i_2 < high_1)) {
+        } else {
+          break;
+        }
+        from_1 = i_2;
+        mid_1 = ((i_2 + m_1) - 1);
+        to_1 = min(((i_2 + (2 * m_1)) - 1), high_1);
+        param = from_1;
+        param_1 = mid_1;
+        param_2 = to_1;
+        merge_i1_i1_i1_(param, param_1, param_2);
+        {
+          param_3 = m_1;
+          param_4 = high_1;
+          const int x_398 = func_i1_i1_(param_3, param_4);
+          i_2 = (i_2 + x_398);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  const float x_93 = asfloat(x_34[0].x);
+  i_3 = int(x_93);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_142 = j_1;
+      const int x_145 = data[j_1];
+      temp[x_142] = x_145;
+    }
+  }
+  mergeSort_();
+  const float x_151 = gl_FragCoord.y;
+  if ((int(x_151) < 30)) {
+    const int x_158 = data[0];
+    grey = (0.5f + (float(x_158) / 10.0f));
+  } else {
+    const float x_163 = gl_FragCoord.y;
+    if ((int(x_163) < 60)) {
+      const int x_170 = data[1];
+      grey = (0.5f + (float(x_170) / 10.0f));
+    } else {
+      const float x_175 = gl_FragCoord.y;
+      if ((int(x_175) < 90)) {
+        const int x_182 = data[2];
+        grey = (0.5f + (float(x_182) / 10.0f));
+      } else {
+        const float x_187 = gl_FragCoord.y;
+        if ((int(x_187) < 120)) {
+          const int x_194 = data[3];
+          grey = (0.5f + (float(x_194) / 10.0f));
+        } else {
+          const float x_199 = gl_FragCoord.y;
+          if ((int(x_199) < 150)) {
+            discard;
+          } else {
+            const float x_206 = gl_FragCoord.y;
+            if ((int(x_206) < 180)) {
+              const int x_213 = data[5];
+              grey = (0.5f + (float(x_213) / 10.0f));
+            } else {
+              const float x_218 = gl_FragCoord.y;
+              if ((int(x_218) < 210)) {
+                const int x_225 = data[6];
+                grey = (0.5f + (float(x_225) / 10.0f));
+              } else {
+                const float x_230 = gl_FragCoord.y;
+                if ((int(x_230) < 240)) {
+                  const int x_237 = data[7];
+                  grey = (0.5f + (float(x_237) / 10.0f));
+                } else {
+                  const float x_242 = gl_FragCoord.y;
+                  if ((int(x_242) < 270)) {
+                    const int x_249 = data[8];
+                    grey = (0.5f + (float(x_249) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_253 = grey;
+  const float3 x_254 = float3(x_253, x_253, x_253);
+  x_GLF_color = float4(x_254.x, x_254.y, x_254.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.msl
new file mode 100644
index 0000000..eb075ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.msl
@@ -0,0 +1,348 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_260 = *(from);
+  k = x_260;
+  int const x_261 = *(from);
+  i = x_261;
+  int const x_262 = *(mid);
+  j = (x_262 + 1);
+  while (true) {
+    int const x_268 = i;
+    int const x_269 = *(mid);
+    int const x_271 = j;
+    int const x_272 = *(to);
+    if (((x_268 <= x_269) && (x_271 <= x_272))) {
+    } else {
+      break;
+    }
+    int const x_276 = i;
+    int const x_278 = (*(tint_symbol_5)).arr[x_276];
+    int const x_279 = j;
+    int const x_281 = (*(tint_symbol_5)).arr[x_279];
+    if ((x_278 < x_281)) {
+      int const x_286 = k;
+      k = (x_286 + 1);
+      int const x_288 = i;
+      i = (x_288 + 1);
+      int const x_291 = (*(tint_symbol_5)).arr[x_288];
+      (*(tint_symbol_6)).arr[x_286] = x_291;
+    } else {
+      int const x_293 = k;
+      k = (x_293 + 1);
+      int const x_295 = j;
+      j = (x_295 + 1);
+      int const x_298 = (*(tint_symbol_5)).arr[x_295];
+      (*(tint_symbol_6)).arr[x_293] = x_298;
+    }
+  }
+  while (true) {
+    int const x_304 = i;
+    int const x_306 = i;
+    int const x_307 = *(mid);
+    if (((x_304 < 10) && (x_306 <= x_307))) {
+    } else {
+      break;
+    }
+    int const x_311 = k;
+    k = (x_311 + 1);
+    int const x_313 = i;
+    i = (x_313 + 1);
+    int const x_316 = (*(tint_symbol_5)).arr[x_313];
+    (*(tint_symbol_6)).arr[x_311] = x_316;
+  }
+  int const x_318 = *(from);
+  i_1 = x_318;
+  while (true) {
+    int const x_323 = i_1;
+    int const x_324 = *(to);
+    if ((x_323 <= x_324)) {
+    } else {
+      break;
+    }
+    int const x_327 = i_1;
+    int const x_328 = i_1;
+    int const x_330 = (*(tint_symbol_6)).arr[x_328];
+    (*(tint_symbol_5)).arr[x_327] = x_330;
+    {
+      int const x_332 = i_1;
+      i_1 = (x_332 + 1);
+    }
+  }
+  return;
+}
+
+int func_i1_i1_(thread int* const m, thread int* const high, thread float4* const tint_symbol_7) {
+  int x = 0;
+  int x_335 = 0;
+  int x_336 = 0;
+  float const x_338 = (*(tint_symbol_7)).x;
+  if ((x_338 >= 0.0f)) {
+    if (false) {
+      int const x_346 = *(high);
+      x_336 = (x_346 << as_type<uint>(0));
+    } else {
+      x_336 = 4;
+    }
+    int const x_348 = x_336;
+    x_335 = (1 << as_type<uint>(x_348));
+  } else {
+    x_335 = 1;
+  }
+  int const x_350 = x_335;
+  x = x_350;
+  int const x_351 = x;
+  x = (x_351 >> as_type<uint>(4));
+  int const x_353 = *(m);
+  int const x_355 = *(m);
+  int const x_357 = *(m);
+  int const x_359 = x;
+  return clamp((2 * x_353), (2 * x_355), ((2 * x_357) / x_359));
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_8, thread tint_array_wrapper* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int low = 0;
+  int high_1 = 0;
+  int m_1 = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int param_4 = 0;
+  low = 0;
+  high_1 = 9;
+  m_1 = 1;
+  while (true) {
+    int const x_367 = m_1;
+    int const x_368 = high_1;
+    if ((x_367 <= x_368)) {
+    } else {
+      break;
+    }
+    int const x_371 = low;
+    i_2 = x_371;
+    while (true) {
+      int const x_376 = i_2;
+      int const x_377 = high_1;
+      if ((x_376 < x_377)) {
+      } else {
+        break;
+      }
+      int const x_380 = i_2;
+      from_1 = x_380;
+      int const x_381 = i_2;
+      int const x_382 = m_1;
+      mid_1 = ((x_381 + x_382) - 1);
+      int const x_385 = i_2;
+      int const x_386 = m_1;
+      int const x_390 = high_1;
+      to_1 = min(((x_385 + (2 * x_386)) - 1), x_390);
+      int const x_392 = from_1;
+      param = x_392;
+      int const x_393 = mid_1;
+      param_1 = x_393;
+      int const x_394 = to_1;
+      param_2 = x_394;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_8, tint_symbol_9);
+      {
+        int const x_396 = m_1;
+        param_3 = x_396;
+        int const x_397 = high_1;
+        param_4 = x_397;
+        int const x_398 = func_i1_i1_(&(param_3), &(param_4), tint_symbol_10);
+        int const x_399 = i_2;
+        i_2 = (x_399 + x_398);
+      }
+    }
+    {
+      int const x_401 = m_1;
+      m_1 = (2 * x_401);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_34, thread tint_array_wrapper* const tint_symbol_11, thread tint_array_wrapper* const tint_symbol_12, thread float4* const tint_symbol_13, thread float4* const tint_symbol_14) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  float const x_93 = x_34.injectionSwitch.x;
+  i_3 = int(x_93);
+  while (true) {
+    int const x_99 = i_3;
+    switch(x_99) {
+      case 9: {
+        int const x_129 = i_3;
+        (*(tint_symbol_11)).arr[x_129] = -5;
+        break;
+      }
+      case 8: {
+        int const x_127 = i_3;
+        (*(tint_symbol_11)).arr[x_127] = -4;
+        break;
+      }
+      case 7: {
+        int const x_125 = i_3;
+        (*(tint_symbol_11)).arr[x_125] = -3;
+        break;
+      }
+      case 6: {
+        int const x_123 = i_3;
+        (*(tint_symbol_11)).arr[x_123] = -2;
+        break;
+      }
+      case 5: {
+        int const x_121 = i_3;
+        (*(tint_symbol_11)).arr[x_121] = -1;
+        break;
+      }
+      case 4: {
+        int const x_119 = i_3;
+        (*(tint_symbol_11)).arr[x_119] = 0;
+        break;
+      }
+      case 3: {
+        int const x_117 = i_3;
+        (*(tint_symbol_11)).arr[x_117] = 1;
+        break;
+      }
+      case 2: {
+        int const x_115 = i_3;
+        (*(tint_symbol_11)).arr[x_115] = 2;
+        break;
+      }
+      case 1: {
+        int const x_113 = i_3;
+        (*(tint_symbol_11)).arr[x_113] = 3;
+        break;
+      }
+      case 0: {
+        int const x_111 = i_3;
+        (*(tint_symbol_11)).arr[x_111] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_131 = i_3;
+    i_3 = (x_131 + 1);
+    {
+      int const x_133 = i_3;
+      if ((x_133 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_139 = j_1;
+    if ((x_139 < 10)) {
+    } else {
+      break;
+    }
+    int const x_142 = j_1;
+    int const x_143 = j_1;
+    int const x_145 = (*(tint_symbol_11)).arr[x_143];
+    (*(tint_symbol_12)).arr[x_142] = x_145;
+    {
+      int const x_147 = j_1;
+      j_1 = (x_147 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_11, tint_symbol_12, tint_symbol_13);
+  float const x_151 = (*(tint_symbol_13)).y;
+  if ((int(x_151) < 30)) {
+    int const x_158 = (*(tint_symbol_11)).arr[0];
+    grey = (0.5f + (float(x_158) / 10.0f));
+  } else {
+    float const x_163 = (*(tint_symbol_13)).y;
+    if ((int(x_163) < 60)) {
+      int const x_170 = (*(tint_symbol_11)).arr[1];
+      grey = (0.5f + (float(x_170) / 10.0f));
+    } else {
+      float const x_175 = (*(tint_symbol_13)).y;
+      if ((int(x_175) < 90)) {
+        int const x_182 = (*(tint_symbol_11)).arr[2];
+        grey = (0.5f + (float(x_182) / 10.0f));
+      } else {
+        float const x_187 = (*(tint_symbol_13)).y;
+        if ((int(x_187) < 120)) {
+          int const x_194 = (*(tint_symbol_11)).arr[3];
+          grey = (0.5f + (float(x_194) / 10.0f));
+        } else {
+          float const x_199 = (*(tint_symbol_13)).y;
+          if ((int(x_199) < 150)) {
+            discard_fragment();
+          } else {
+            float const x_206 = (*(tint_symbol_13)).y;
+            if ((int(x_206) < 180)) {
+              int const x_213 = (*(tint_symbol_11)).arr[5];
+              grey = (0.5f + (float(x_213) / 10.0f));
+            } else {
+              float const x_218 = (*(tint_symbol_13)).y;
+              if ((int(x_218) < 210)) {
+                int const x_225 = (*(tint_symbol_11)).arr[6];
+                grey = (0.5f + (float(x_225) / 10.0f));
+              } else {
+                float const x_230 = (*(tint_symbol_13)).y;
+                if ((int(x_230) < 240)) {
+                  int const x_237 = (*(tint_symbol_11)).arr[7];
+                  grey = (0.5f + (float(x_237) / 10.0f));
+                } else {
+                  float const x_242 = (*(tint_symbol_13)).y;
+                  if ((int(x_242) < 270)) {
+                    int const x_249 = (*(tint_symbol_11)).arr[8];
+                    grey = (0.5f + (float(x_249) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_253 = grey;
+  float3 const x_254 = float3(x_253, x_253, x_253);
+  *(tint_symbol_14) = float4(x_254.x, x_254.y, x_254.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_15 = 0.0f;
+  thread tint_array_wrapper tint_symbol_16 = {};
+  thread tint_array_wrapper tint_symbol_17 = {};
+  thread float4 tint_symbol_18 = 0.0f;
+  tint_symbol_15 = gl_FragCoord_param;
+  main_1(x_34, &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_15), &(tint_symbol_18));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_18};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..6248b33
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.spvasm
@@ -0,0 +1,716 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 463
+; Schema: 0
+               OpCapability Shader
+        %174 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_34 "x_34"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %func_i1_i1_ "func_i1_i1_"
+               OpName %m "m"
+               OpName %high "high"
+               OpName %x "x"
+               OpName %x_335 "x_335"
+               OpName %x_336 "x_336"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high_1 "high_1"
+               OpName %m_1 "m_1"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %param_4 "param_4"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+      %int_2 = OpConstant %int 2
+        %180 = OpTypeFunction %void
+      %int_9 = OpConstant %int 9
+%_ptr_Function_float = OpTypePointer Function %float
+        %251 = OpConstantNull %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+     %uint_1 = OpConstant %uint 1
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %450 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%func_i1_i1_ = OpFunction %int None %132
+          %m = OpFunctionParameter %_ptr_Function_int
+       %high = OpFunctionParameter %_ptr_Function_int
+        %136 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %32
+      %x_335 = OpVariable %_ptr_Function_int Function %32
+      %x_336 = OpVariable %_ptr_Function_int Function %32
+        %142 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %143 = OpLoad %float %142
+        %145 = OpFOrdGreaterThanEqual %bool %143 %float_0
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %148
+        %147 = OpLabel
+               OpSelectionMerge %150 None
+               OpBranchConditional %false %151 %152
+        %151 = OpLabel
+        %154 = OpLoad %int %high
+        %155 = OpBitcast %uint %int_0
+        %157 = OpShiftLeftLogical %int %154 %155
+               OpStore %x_336 %157
+               OpBranch %150
+        %152 = OpLabel
+               OpStore %x_336 %int_4
+               OpBranch %150
+        %150 = OpLabel
+        %159 = OpLoad %int %x_336
+        %160 = OpBitcast %uint %159
+        %161 = OpShiftLeftLogical %int %int_1 %160
+               OpStore %x_335 %161
+               OpBranch %146
+        %148 = OpLabel
+               OpStore %x_335 %int_1
+               OpBranch %146
+        %146 = OpLabel
+        %162 = OpLoad %int %x_335
+               OpStore %x %162
+        %163 = OpLoad %int %x
+        %164 = OpBitcast %uint %int_4
+        %165 = OpShiftRightArithmetic %int %163 %164
+               OpStore %x %165
+        %167 = OpLoad %int %m
+        %169 = OpLoad %int %m
+        %171 = OpLoad %int %m
+        %172 = OpLoad %int %x
+        %176 = OpIMul %int %int_2 %167
+        %177 = OpIMul %int %int_2 %169
+        %178 = OpIMul %int %int_2 %171
+        %179 = OpSDiv %int %178 %172
+        %173 = OpExtInst %int %174 SClamp %176 %177 %179
+               OpReturnValue %173
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %180
+        %182 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+     %high_1 = OpVariable %_ptr_Function_int Function %32
+        %m_1 = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+    %param_3 = OpVariable %_ptr_Function_int Function %32
+    %param_4 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high_1 %int_9
+               OpStore %m_1 %int_1
+               OpBranch %196
+        %196 = OpLabel
+               OpLoopMerge %197 %198 None
+               OpBranch %199
+        %199 = OpLabel
+        %200 = OpLoad %int %m_1
+        %201 = OpLoad %int %high_1
+        %202 = OpSLessThanEqual %bool %200 %201
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %205
+        %204 = OpLabel
+               OpBranch %203
+        %205 = OpLabel
+               OpBranch %197
+        %203 = OpLabel
+        %206 = OpLoad %int %low
+               OpStore %i_2 %206
+               OpBranch %207
+        %207 = OpLabel
+               OpLoopMerge %208 %209 None
+               OpBranch %210
+        %210 = OpLabel
+        %211 = OpLoad %int %i_2
+        %212 = OpLoad %int %high_1
+        %213 = OpSLessThan %bool %211 %212
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %216
+        %215 = OpLabel
+               OpBranch %214
+        %216 = OpLabel
+               OpBranch %208
+        %214 = OpLabel
+        %217 = OpLoad %int %i_2
+               OpStore %from_1 %217
+        %218 = OpLoad %int %i_2
+        %219 = OpLoad %int %m_1
+        %220 = OpIAdd %int %218 %219
+        %221 = OpISub %int %220 %int_1
+               OpStore %mid_1 %221
+        %222 = OpLoad %int %i_2
+        %223 = OpLoad %int %m_1
+        %224 = OpLoad %int %high_1
+        %226 = OpIMul %int %int_2 %223
+        %227 = OpIAdd %int %222 %226
+        %228 = OpISub %int %227 %int_1
+        %225 = OpExtInst %int %174 SMin %228 %224
+               OpStore %to_1 %225
+        %229 = OpLoad %int %from_1
+               OpStore %param %229
+        %230 = OpLoad %int %mid_1
+               OpStore %param_1 %230
+        %231 = OpLoad %int %to_1
+               OpStore %param_2 %231
+        %232 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %209
+        %209 = OpLabel
+        %236 = OpLoad %int %m_1
+               OpStore %param_3 %236
+        %237 = OpLoad %int %high_1
+               OpStore %param_4 %237
+        %238 = OpFunctionCall %int %func_i1_i1_ %param_3 %param_4
+        %241 = OpLoad %int %i_2
+        %242 = OpIAdd %int %241 %238
+               OpStore %i_2 %242
+               OpBranch %207
+        %208 = OpLabel
+               OpBranch %198
+        %198 = OpLabel
+        %243 = OpLoad %int %m_1
+        %244 = OpIMul %int %int_2 %243
+               OpStore %m_1 %244
+               OpBranch %196
+        %197 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %180
+        %246 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %251
+        %253 = OpAccessChain %_ptr_Uniform_float %x_34 %uint_0 %uint_0
+        %254 = OpLoad %float %253
+        %255 = OpConvertFToS %int %254
+               OpStore %i_3 %255
+               OpBranch %256
+        %256 = OpLabel
+               OpLoopMerge %257 %258 None
+               OpBranch %259
+        %259 = OpLabel
+        %260 = OpLoad %int %i_3
+               OpSelectionMerge %261 None
+               OpSwitch %260 %262 9 %263 8 %264 7 %265 6 %266 5 %267 4 %268 3 %269 2 %270 1 %271 0 %272
+        %263 = OpLabel
+        %273 = OpLoad %int %i_3
+        %274 = OpAccessChain %_ptr_Private_int %data %273
+               OpStore %274 %int_n5
+               OpBranch %261
+        %264 = OpLabel
+        %276 = OpLoad %int %i_3
+        %277 = OpAccessChain %_ptr_Private_int %data %276
+               OpStore %277 %int_n4
+               OpBranch %261
+        %265 = OpLabel
+        %279 = OpLoad %int %i_3
+        %280 = OpAccessChain %_ptr_Private_int %data %279
+               OpStore %280 %int_n3
+               OpBranch %261
+        %266 = OpLabel
+        %282 = OpLoad %int %i_3
+        %283 = OpAccessChain %_ptr_Private_int %data %282
+               OpStore %283 %int_n2
+               OpBranch %261
+        %267 = OpLabel
+        %285 = OpLoad %int %i_3
+        %286 = OpAccessChain %_ptr_Private_int %data %285
+               OpStore %286 %int_n1
+               OpBranch %261
+        %268 = OpLabel
+        %288 = OpLoad %int %i_3
+        %289 = OpAccessChain %_ptr_Private_int %data %288
+               OpStore %289 %int_0
+               OpBranch %261
+        %269 = OpLabel
+        %290 = OpLoad %int %i_3
+        %291 = OpAccessChain %_ptr_Private_int %data %290
+               OpStore %291 %int_1
+               OpBranch %261
+        %270 = OpLabel
+        %292 = OpLoad %int %i_3
+        %293 = OpAccessChain %_ptr_Private_int %data %292
+               OpStore %293 %int_2
+               OpBranch %261
+        %271 = OpLabel
+        %294 = OpLoad %int %i_3
+        %295 = OpAccessChain %_ptr_Private_int %data %294
+               OpStore %295 %int_3
+               OpBranch %261
+        %272 = OpLabel
+        %297 = OpLoad %int %i_3
+        %298 = OpAccessChain %_ptr_Private_int %data %297
+               OpStore %298 %int_4
+               OpBranch %261
+        %262 = OpLabel
+               OpBranch %261
+        %261 = OpLabel
+        %299 = OpLoad %int %i_3
+        %300 = OpIAdd %int %299 %int_1
+               OpStore %i_3 %300
+               OpBranch %258
+        %258 = OpLabel
+        %301 = OpLoad %int %i_3
+        %302 = OpSLessThan %bool %301 %int_10
+               OpSelectionMerge %303 None
+               OpBranchConditional %302 %304 %305
+        %304 = OpLabel
+               OpBranch %303
+        %305 = OpLabel
+               OpBranch %257
+        %303 = OpLabel
+               OpBranch %256
+        %257 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+        %310 = OpLoad %int %j_1
+        %311 = OpSLessThan %bool %310 %int_10
+               OpSelectionMerge %312 None
+               OpBranchConditional %311 %313 %314
+        %313 = OpLabel
+               OpBranch %312
+        %314 = OpLabel
+               OpBranch %307
+        %312 = OpLabel
+        %315 = OpLoad %int %j_1
+        %316 = OpLoad %int %j_1
+        %317 = OpAccessChain %_ptr_Private_int %data %316
+        %318 = OpLoad %int %317
+        %319 = OpAccessChain %_ptr_Private_int %temp %315
+               OpStore %319 %318
+               OpBranch %308
+        %308 = OpLabel
+        %320 = OpLoad %int %j_1
+        %321 = OpIAdd %int %320 %int_1
+               OpStore %j_1 %321
+               OpBranch %306
+        %307 = OpLabel
+        %322 = OpFunctionCall %void %mergeSort_
+        %324 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %325 = OpLoad %float %324
+        %326 = OpConvertFToS %int %325
+        %328 = OpSLessThan %bool %326 %int_30
+               OpSelectionMerge %329 None
+               OpBranchConditional %328 %330 %331
+        %330 = OpLabel
+        %332 = OpAccessChain %_ptr_Private_int %data %int_0
+        %333 = OpLoad %int %332
+        %335 = OpConvertSToF %float %333
+        %337 = OpFDiv %float %335 %float_10
+        %338 = OpFAdd %float %float_0_5 %337
+               OpStore %grey %338
+               OpBranch %329
+        %331 = OpLabel
+        %339 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %340 = OpLoad %float %339
+        %341 = OpConvertFToS %int %340
+        %343 = OpSLessThan %bool %341 %int_60
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %346
+        %345 = OpLabel
+        %347 = OpAccessChain %_ptr_Private_int %data %int_1
+        %348 = OpLoad %int %347
+        %349 = OpConvertSToF %float %348
+        %350 = OpFDiv %float %349 %float_10
+        %351 = OpFAdd %float %float_0_5 %350
+               OpStore %grey %351
+               OpBranch %344
+        %346 = OpLabel
+        %352 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %353 = OpLoad %float %352
+        %354 = OpConvertFToS %int %353
+        %356 = OpSLessThan %bool %354 %int_90
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %359
+        %358 = OpLabel
+        %360 = OpAccessChain %_ptr_Private_int %data %int_2
+        %361 = OpLoad %int %360
+        %362 = OpConvertSToF %float %361
+        %363 = OpFDiv %float %362 %float_10
+        %364 = OpFAdd %float %float_0_5 %363
+               OpStore %grey %364
+               OpBranch %357
+        %359 = OpLabel
+        %365 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %366 = OpLoad %float %365
+        %367 = OpConvertFToS %int %366
+        %369 = OpSLessThan %bool %367 %int_120
+               OpSelectionMerge %370 None
+               OpBranchConditional %369 %371 %372
+        %371 = OpLabel
+        %373 = OpAccessChain %_ptr_Private_int %data %int_3
+        %374 = OpLoad %int %373
+        %375 = OpConvertSToF %float %374
+        %376 = OpFDiv %float %375 %float_10
+        %377 = OpFAdd %float %float_0_5 %376
+               OpStore %grey %377
+               OpBranch %370
+        %372 = OpLabel
+        %378 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %379 = OpLoad %float %378
+        %380 = OpConvertFToS %int %379
+        %382 = OpSLessThan %bool %380 %int_150
+               OpSelectionMerge %383 None
+               OpBranchConditional %382 %384 %385
+        %384 = OpLabel
+               OpKill
+        %385 = OpLabel
+        %386 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %387 = OpLoad %float %386
+        %388 = OpConvertFToS %int %387
+        %390 = OpSLessThan %bool %388 %int_180
+               OpSelectionMerge %391 None
+               OpBranchConditional %390 %392 %393
+        %392 = OpLabel
+        %395 = OpAccessChain %_ptr_Private_int %data %int_5
+        %396 = OpLoad %int %395
+        %397 = OpConvertSToF %float %396
+        %398 = OpFDiv %float %397 %float_10
+        %399 = OpFAdd %float %float_0_5 %398
+               OpStore %grey %399
+               OpBranch %391
+        %393 = OpLabel
+        %400 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %401 = OpLoad %float %400
+        %402 = OpConvertFToS %int %401
+        %404 = OpSLessThan %bool %402 %int_210
+               OpSelectionMerge %405 None
+               OpBranchConditional %404 %406 %407
+        %406 = OpLabel
+        %409 = OpAccessChain %_ptr_Private_int %data %int_6
+        %410 = OpLoad %int %409
+        %411 = OpConvertSToF %float %410
+        %412 = OpFDiv %float %411 %float_10
+        %413 = OpFAdd %float %float_0_5 %412
+               OpStore %grey %413
+               OpBranch %405
+        %407 = OpLabel
+        %414 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %415 = OpLoad %float %414
+        %416 = OpConvertFToS %int %415
+        %418 = OpSLessThan %bool %416 %int_240
+               OpSelectionMerge %419 None
+               OpBranchConditional %418 %420 %421
+        %420 = OpLabel
+        %423 = OpAccessChain %_ptr_Private_int %data %int_7
+        %424 = OpLoad %int %423
+        %425 = OpConvertSToF %float %424
+        %426 = OpFDiv %float %425 %float_10
+        %427 = OpFAdd %float %float_0_5 %426
+               OpStore %grey %427
+               OpBranch %419
+        %421 = OpLabel
+        %428 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %429 = OpLoad %float %428
+        %430 = OpConvertFToS %int %429
+        %432 = OpSLessThan %bool %430 %int_270
+               OpSelectionMerge %433 None
+               OpBranchConditional %432 %434 %435
+        %434 = OpLabel
+        %437 = OpAccessChain %_ptr_Private_int %data %int_8
+        %438 = OpLoad %int %437
+        %439 = OpConvertSToF %float %438
+        %440 = OpFDiv %float %439 %float_10
+        %441 = OpFAdd %float %float_0_5 %440
+               OpStore %grey %441
+               OpBranch %433
+        %435 = OpLabel
+               OpKill
+        %433 = OpLabel
+               OpBranch %419
+        %419 = OpLabel
+               OpBranch %405
+        %405 = OpLabel
+               OpBranch %391
+        %391 = OpLabel
+               OpBranch %383
+        %383 = OpLabel
+               OpBranch %370
+        %370 = OpLabel
+               OpBranch %357
+        %357 = OpLabel
+               OpBranch %344
+        %344 = OpLabel
+               OpBranch %329
+        %329 = OpLabel
+        %442 = OpLoad %float %grey
+        %444 = OpCompositeConstruct %v3float %442 %442 %442
+        %445 = OpCompositeExtract %float %444 0
+        %446 = OpCompositeExtract %float %444 1
+        %447 = OpCompositeExtract %float %444 2
+        %449 = OpCompositeConstruct %v4float %445 %446 %447 %float_1
+               OpStore %x_GLF_color %449
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %450
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %454 = OpLabel
+        %455 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %455
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %180
+        %457 = OpLabel
+        %458 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %458
+        %459 = OpFunctionCall %void %main_1
+        %461 = OpLoad %v4float %x_GLF_color
+        %462 = OpCompositeConstruct %main_out %461
+        %460 = OpFunctionCall %void %tint_symbol_3 %462
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 258[%258] is not post dominated by the back-edge block 303[%303]
+  %303 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..460ad4b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl.expected.wgsl
@@ -0,0 +1,340 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_260 : i32 = *(from);
+  k = x_260;
+  let x_261 : i32 = *(from);
+  i = x_261;
+  let x_262 : i32 = *(mid);
+  j = (x_262 + 1);
+  loop {
+    let x_268 : i32 = i;
+    let x_269 : i32 = *(mid);
+    let x_271 : i32 = j;
+    let x_272 : i32 = *(to);
+    if (((x_268 <= x_269) && (x_271 <= x_272))) {
+    } else {
+      break;
+    }
+    let x_276 : i32 = i;
+    let x_278 : i32 = data[x_276];
+    let x_279 : i32 = j;
+    let x_281 : i32 = data[x_279];
+    if ((x_278 < x_281)) {
+      let x_286 : i32 = k;
+      k = (x_286 + 1);
+      let x_288 : i32 = i;
+      i = (x_288 + 1);
+      let x_291 : i32 = data[x_288];
+      temp[x_286] = x_291;
+    } else {
+      let x_293 : i32 = k;
+      k = (x_293 + 1);
+      let x_295 : i32 = j;
+      j = (x_295 + 1);
+      let x_298 : i32 = data[x_295];
+      temp[x_293] = x_298;
+    }
+  }
+  loop {
+    let x_304 : i32 = i;
+    let x_306 : i32 = i;
+    let x_307 : i32 = *(mid);
+    if (((x_304 < 10) && (x_306 <= x_307))) {
+    } else {
+      break;
+    }
+    let x_311 : i32 = k;
+    k = (x_311 + 1);
+    let x_313 : i32 = i;
+    i = (x_313 + 1);
+    let x_316 : i32 = data[x_313];
+    temp[x_311] = x_316;
+  }
+  let x_318 : i32 = *(from);
+  i_1 = x_318;
+  loop {
+    let x_323 : i32 = i_1;
+    let x_324 : i32 = *(to);
+    if ((x_323 <= x_324)) {
+    } else {
+      break;
+    }
+    let x_327 : i32 = i_1;
+    let x_328 : i32 = i_1;
+    let x_330 : i32 = temp[x_328];
+    data[x_327] = x_330;
+
+    continuing {
+      let x_332 : i32 = i_1;
+      i_1 = (x_332 + 1);
+    }
+  }
+  return;
+}
+
+fn func_i1_i1_(m : ptr<function, i32>, high : ptr<function, i32>) -> i32 {
+  var x : i32;
+  var x_335 : i32;
+  var x_336 : i32;
+  let x_338 : f32 = gl_FragCoord.x;
+  if ((x_338 >= 0.0)) {
+    if (false) {
+      let x_346 : i32 = *(high);
+      x_336 = (x_346 << bitcast<u32>(0));
+    } else {
+      x_336 = 4;
+    }
+    let x_348 : i32 = x_336;
+    x_335 = (1 << bitcast<u32>(x_348));
+  } else {
+    x_335 = 1;
+  }
+  let x_350 : i32 = x_335;
+  x = x_350;
+  let x_351 : i32 = x;
+  x = (x_351 >> bitcast<u32>(4));
+  let x_353 : i32 = *(m);
+  let x_355 : i32 = *(m);
+  let x_357 : i32 = *(m);
+  let x_359 : i32 = x;
+  return clamp((2 * x_353), (2 * x_355), ((2 * x_357) / x_359));
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high_1 : i32;
+  var m_1 : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  var param_4 : i32;
+  low = 0;
+  high_1 = 9;
+  m_1 = 1;
+  loop {
+    let x_367 : i32 = m_1;
+    let x_368 : i32 = high_1;
+    if ((x_367 <= x_368)) {
+    } else {
+      break;
+    }
+    let x_371 : i32 = low;
+    i_2 = x_371;
+    loop {
+      let x_376 : i32 = i_2;
+      let x_377 : i32 = high_1;
+      if ((x_376 < x_377)) {
+      } else {
+        break;
+      }
+      let x_380 : i32 = i_2;
+      from_1 = x_380;
+      let x_381 : i32 = i_2;
+      let x_382 : i32 = m_1;
+      mid_1 = ((x_381 + x_382) - 1);
+      let x_385 : i32 = i_2;
+      let x_386 : i32 = m_1;
+      let x_390 : i32 = high_1;
+      to_1 = min(((x_385 + (2 * x_386)) - 1), x_390);
+      let x_392 : i32 = from_1;
+      param = x_392;
+      let x_393 : i32 = mid_1;
+      param_1 = x_393;
+      let x_394 : i32 = to_1;
+      param_2 = x_394;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_396 : i32 = m_1;
+        param_3 = x_396;
+        let x_397 : i32 = high_1;
+        param_4 = x_397;
+        let x_398 : i32 = func_i1_i1_(&(param_3), &(param_4));
+        let x_399 : i32 = i_2;
+        i_2 = (x_399 + x_398);
+      }
+    }
+
+    continuing {
+      let x_401 : i32 = m_1;
+      m_1 = (2 * x_401);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  let x_93 : f32 = x_34.injectionSwitch.x;
+  i_3 = i32(x_93);
+  loop {
+    let x_99 : i32 = i_3;
+    switch(x_99) {
+      case 9: {
+        let x_129 : i32 = i_3;
+        data[x_129] = -5;
+      }
+      case 8: {
+        let x_127 : i32 = i_3;
+        data[x_127] = -4;
+      }
+      case 7: {
+        let x_125 : i32 = i_3;
+        data[x_125] = -3;
+      }
+      case 6: {
+        let x_123 : i32 = i_3;
+        data[x_123] = -2;
+      }
+      case 5: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -1;
+      }
+      case 4: {
+        let x_119 : i32 = i_3;
+        data[x_119] = 0;
+      }
+      case 3: {
+        let x_117 : i32 = i_3;
+        data[x_117] = 1;
+      }
+      case 2: {
+        let x_115 : i32 = i_3;
+        data[x_115] = 2;
+      }
+      case 1: {
+        let x_113 : i32 = i_3;
+        data[x_113] = 3;
+      }
+      case 0: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 4;
+      }
+      default: {
+      }
+    }
+    let x_131 : i32 = i_3;
+    i_3 = (x_131 + 1);
+
+    continuing {
+      let x_133 : i32 = i_3;
+      if ((x_133 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_139 : i32 = j_1;
+    if ((x_139 < 10)) {
+    } else {
+      break;
+    }
+    let x_142 : i32 = j_1;
+    let x_143 : i32 = j_1;
+    let x_145 : i32 = data[x_143];
+    temp[x_142] = x_145;
+
+    continuing {
+      let x_147 : i32 = j_1;
+      j_1 = (x_147 + 1);
+    }
+  }
+  mergeSort_();
+  let x_151 : f32 = gl_FragCoord.y;
+  if ((i32(x_151) < 30)) {
+    let x_158 : i32 = data[0];
+    grey = (0.5 + (f32(x_158) / 10.0));
+  } else {
+    let x_163 : f32 = gl_FragCoord.y;
+    if ((i32(x_163) < 60)) {
+      let x_170 : i32 = data[1];
+      grey = (0.5 + (f32(x_170) / 10.0));
+    } else {
+      let x_175 : f32 = gl_FragCoord.y;
+      if ((i32(x_175) < 90)) {
+        let x_182 : i32 = data[2];
+        grey = (0.5 + (f32(x_182) / 10.0));
+      } else {
+        let x_187 : f32 = gl_FragCoord.y;
+        if ((i32(x_187) < 120)) {
+          let x_194 : i32 = data[3];
+          grey = (0.5 + (f32(x_194) / 10.0));
+        } else {
+          let x_199 : f32 = gl_FragCoord.y;
+          if ((i32(x_199) < 150)) {
+            discard;
+          } else {
+            let x_206 : f32 = gl_FragCoord.y;
+            if ((i32(x_206) < 180)) {
+              let x_213 : i32 = data[5];
+              grey = (0.5 + (f32(x_213) / 10.0));
+            } else {
+              let x_218 : f32 = gl_FragCoord.y;
+              if ((i32(x_218) < 210)) {
+                let x_225 : i32 = data[6];
+                grey = (0.5 + (f32(x_225) / 10.0));
+              } else {
+                let x_230 : f32 = gl_FragCoord.y;
+                if ((i32(x_230) < 240)) {
+                  let x_237 : i32 = data[7];
+                  grey = (0.5 + (f32(x_237) / 10.0));
+                } else {
+                  let x_242 : f32 = gl_FragCoord.y;
+                  if ((i32(x_242) < 270)) {
+                    let x_249 : i32 = data[8];
+                    grey = (0.5 + (f32(x_249) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_253 : f32 = grey;
+  let x_254 : vec3<f32> = vec3<f32>(x_253, x_253, x_253);
+  x_GLF_color = vec4<f32>(x_254.x, x_254.y, x_254.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm
new file mode 100644
index 0000000..ed5aa40
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm
@@ -0,0 +1,416 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %54 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %55 = OpConstantComposite %v2float %float_1 %float_1
+     %int_32 = OpConstant %int 32
+    %float_0 = OpConstant %float 0
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+%float_0_100000001 = OpConstant %float 0.100000001
+       %main = OpFunction %void None %10
+         %60 = OpLabel
+       %temp = OpVariable %_ptr_Function__arr_int_uint_10 Function
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function
+         %61 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %62 = OpLoad %float %61
+         %63 = OpConvertFToS %int %62
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpPhi %int %63 %60 %66 %67
+               OpLoopMerge %68 %67 None
+               OpBranch %69
+         %69 = OpLabel
+               OpSelectionMerge %70 None
+               OpSwitch %65 %70 0 %71 1 %72 2 %73 3 %74 4 %75 5 %76 6 %77 7 %78 8 %79 9 %80
+         %71 = OpLabel
+         %81 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %81 %int_4
+               OpBranch %70
+         %72 = OpLabel
+         %82 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %82 %int_3
+               OpBranch %70
+         %73 = OpLabel
+         %83 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %83 %int_2
+               OpBranch %70
+         %74 = OpLabel
+         %84 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %84 %int_1
+               OpBranch %70
+         %75 = OpLabel
+         %85 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %85 %int_0
+               OpBranch %70
+         %76 = OpLabel
+         %86 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %86 %int_n1
+               OpBranch %70
+         %77 = OpLabel
+         %87 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %87 %int_n2
+               OpBranch %70
+         %78 = OpLabel
+         %88 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %88 %int_n3
+               OpBranch %70
+         %79 = OpLabel
+         %89 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %89 %int_n4
+               OpBranch %70
+         %80 = OpLabel
+         %90 = OpAccessChain %_ptr_Function_int %data %65
+               OpStore %90 %int_n5
+               OpBranch %70
+         %70 = OpLabel
+         %66 = OpIAdd %int %65 %int_1
+               OpBranch %67
+         %67 = OpLabel
+         %91 = OpSLessThan %bool %66 %int_10
+               OpBranchConditional %91 %64 %68
+         %68 = OpLabel
+               OpBranch %92
+         %92 = OpLabel
+         %93 = OpPhi %int %int_0 %68 %94 %95
+         %96 = OpSLessThan %bool %93 %int_10
+               OpLoopMerge %97 %95 None
+               OpBranchConditional %96 %95 %97
+         %95 = OpLabel
+         %98 = OpAccessChain %_ptr_Function_int %data %93
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_Function_int %temp %93
+               OpStore %100 %99
+         %94 = OpIAdd %int %93 %int_1
+               OpBranch %92
+         %97 = OpLabel
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpPhi %int %int_1 %97 %103 %104
+        %105 = OpSLessThanEqual %bool %102 %int_9
+               OpLoopMerge %106 %104 None
+               OpBranchConditional %105 %107 %106
+        %107 = OpLabel
+               OpBranch %108
+        %108 = OpLabel
+        %109 = OpPhi %int %int_0 %107 %110 %111
+        %112 = OpSLessThan %bool %109 %int_9
+               OpLoopMerge %113 %111 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+        %115 = OpIAdd %int %109 %102
+        %116 = OpISub %int %115 %int_1
+        %117 = OpIMul %int %int_2 %102
+        %110 = OpIAdd %int %109 %117
+        %118 = OpISub %int %110 %int_1
+        %119 = OpExtInst %int %1 SMin %118 %int_9
+               OpBranch %120
+        %120 = OpLabel
+        %121 = OpPhi %int %109 %114 %122 %123
+        %124 = OpPhi %int %115 %114 %125 %123
+        %126 = OpPhi %int %109 %114 %127 %123
+        %128 = OpSLessThanEqual %bool %126 %116
+        %129 = OpSLessThanEqual %bool %124 %119
+        %130 = OpLogicalAnd %bool %128 %129
+               OpLoopMerge %131 %123 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+        %133 = OpAccessChain %_ptr_Function_int %data %126
+        %134 = OpLoad %int %133
+        %135 = OpAccessChain %_ptr_Function_int %data %124
+        %136 = OpLoad %int %135
+        %137 = OpSLessThan %bool %134 %136
+        %122 = OpIAdd %int %121 %int_1
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %140
+        %139 = OpLabel
+        %141 = OpIAdd %int %126 %int_1
+        %142 = OpLoad %int %133
+        %143 = OpAccessChain %_ptr_Function_int %temp %121
+               OpStore %143 %142
+               OpBranch %138
+        %140 = OpLabel
+        %144 = OpIAdd %int %124 %int_1
+        %145 = OpLoad %int %135
+        %146 = OpAccessChain %_ptr_Function_int %temp %121
+               OpStore %146 %145
+               OpBranch %138
+        %138 = OpLabel
+        %125 = OpPhi %int %124 %139 %144 %140
+        %127 = OpPhi %int %141 %139 %126 %140
+               OpBranch %123
+        %123 = OpLabel
+               OpBranch %120
+        %131 = OpLabel
+               OpBranch %147
+        %147 = OpLabel
+        %148 = OpPhi %int %121 %131 %149 %150
+        %151 = OpPhi %int %126 %131 %152 %150
+        %153 = OpSLessThan %bool %151 %int_10
+        %154 = OpSLessThanEqual %bool %151 %116
+        %155 = OpLogicalAnd %bool %153 %154
+               OpLoopMerge %156 %150 None
+               OpBranchConditional %155 %150 %156
+        %150 = OpLabel
+        %149 = OpIAdd %int %148 %int_1
+        %152 = OpIAdd %int %151 %int_1
+        %157 = OpAccessChain %_ptr_Function_int %data %151
+        %158 = OpLoad %int %157
+        %159 = OpAccessChain %_ptr_Function_int %temp %148
+               OpStore %159 %158
+               OpBranch %147
+        %156 = OpLabel
+               OpBranch %160
+        %160 = OpLabel
+        %161 = OpPhi %int %109 %156 %162 %163
+        %164 = OpSLessThanEqual %bool %161 %119
+               OpLoopMerge %165 %163 None
+               OpBranchConditional %164 %163 %165
+        %163 = OpLabel
+        %166 = OpAccessChain %_ptr_Function_int %temp %161
+        %167 = OpLoad %int %166
+        %168 = OpAccessChain %_ptr_Function_int %data %161
+               OpStore %168 %167
+        %162 = OpIAdd %int %161 %int_1
+               OpBranch %160
+        %165 = OpLabel
+               OpBranch %111
+        %111 = OpLabel
+               OpBranch %108
+        %113 = OpLabel
+               OpBranch %104
+        %104 = OpLabel
+        %103 = OpIMul %int %int_2 %102
+               OpBranch %101
+        %106 = OpLabel
+        %169 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %170 = OpLoad %float %169
+        %171 = OpConvertFToS %int %170
+        %172 = OpSLessThan %bool %171 %int_30
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %175
+        %174 = OpLabel
+        %176 = OpAccessChain %_ptr_Function_int %data %int_0
+        %177 = OpLoad %int %176
+        %178 = OpConvertSToF %float %177
+        %179 = OpFMul %float %178 %float_0_100000001
+        %180 = OpFAdd %float %float_0_5 %179
+               OpBranch %173
+        %175 = OpLabel
+        %181 = OpSLessThan %bool %171 %int_60
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %184
+        %183 = OpLabel
+        %185 = OpAccessChain %_ptr_Function_int %data %int_1
+        %186 = OpLoad %int %185
+        %187 = OpConvertSToF %float %186
+        %188 = OpFMul %float %187 %float_0_100000001
+        %189 = OpFAdd %float %float_0_5 %188
+               OpBranch %182
+        %184 = OpLabel
+        %190 = OpSLessThan %bool %171 %int_90
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %193
+        %192 = OpLabel
+        %194 = OpAccessChain %_ptr_Function_int %data %int_2
+        %195 = OpLoad %int %194
+        %196 = OpConvertSToF %float %195
+        %197 = OpFMul %float %196 %float_0_100000001
+        %198 = OpFAdd %float %float_0_5 %197
+               OpBranch %191
+        %193 = OpLabel
+        %199 = OpSLessThan %bool %171 %int_120
+               OpSelectionMerge %200 None
+               OpBranchConditional %199 %201 %202
+        %201 = OpLabel
+        %203 = OpAccessChain %_ptr_Function_int %data %int_3
+        %204 = OpLoad %int %203
+        %205 = OpConvertSToF %float %204
+        %206 = OpFMul %float %205 %float_0_100000001
+        %207 = OpFAdd %float %float_0_5 %206
+               OpBranch %200
+        %202 = OpLabel
+        %208 = OpSLessThan %bool %171 %int_150
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %211
+        %210 = OpLabel
+               OpKill
+        %211 = OpLabel
+        %212 = OpSLessThan %bool %171 %int_180
+               OpSelectionMerge %213 None
+               OpBranchConditional %212 %214 %215
+        %214 = OpLabel
+        %216 = OpAccessChain %_ptr_Function_int %data %int_5
+        %217 = OpLoad %int %216
+        %218 = OpConvertSToF %float %217
+        %219 = OpFMul %float %218 %float_0_100000001
+        %220 = OpFAdd %float %float_0_5 %219
+               OpBranch %213
+        %215 = OpLabel
+        %221 = OpSLessThan %bool %171 %int_210
+               OpSelectionMerge %222 None
+               OpBranchConditional %221 %223 %224
+        %223 = OpLabel
+        %225 = OpAccessChain %_ptr_Function_int %data %int_6
+        %226 = OpLoad %int %225
+        %227 = OpConvertSToF %float %226
+        %228 = OpFMul %float %227 %float_0_100000001
+        %229 = OpFAdd %float %float_0_5 %228
+               OpBranch %222
+        %224 = OpLabel
+        %230 = OpSLessThan %bool %171 %int_240
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %233
+        %232 = OpLabel
+        %234 = OpAccessChain %_ptr_Function_int %data %int_7
+        %235 = OpLoad %int %234
+        %236 = OpConvertSToF %float %235
+        %237 = OpFMul %float %236 %float_0_100000001
+        %238 = OpFAdd %float %float_0_5 %237
+               OpBranch %231
+        %233 = OpLabel
+        %239 = OpSLessThan %bool %171 %int_270
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %240 %241
+        %240 = OpLabel
+        %242 = OpAccessChain %_ptr_Function_int %data %int_8
+        %243 = OpLoad %int %242
+        %244 = OpConvertSToF %float %243
+        %245 = OpFMul %float %244 %float_0_100000001
+        %246 = OpFAdd %float %float_0_5 %245
+               OpBranch %231
+        %241 = OpLabel
+               OpKill
+        %231 = OpLabel
+        %247 = OpPhi %float %238 %232 %246 %240
+               OpBranch %222
+        %222 = OpLabel
+        %248 = OpPhi %float %229 %223 %247 %231
+               OpBranch %213
+        %213 = OpLabel
+        %249 = OpPhi %float %220 %214 %248 %222
+        %250 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %251 = OpLoad %float %250
+        %252 = OpFOrdGreaterThan %bool %62 %251
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %254 %253
+        %254 = OpLabel
+               OpStore %_GLF_color %54
+               OpBranch %253
+        %253 = OpLabel
+               OpBranch %255
+        %255 = OpLabel
+        %256 = OpPhi %v2float %55 %253 %257 %258
+        %259 = OpPhi %int %int_0 %253 %260 %258
+        %261 = OpSLessThanEqual %bool %259 %int_32
+               OpLoopMerge %262 %258 None
+               OpBranchConditional %261 %263 %262
+        %263 = OpLabel
+        %264 = OpCompositeExtract %float %256 0
+        %265 = OpFOrdLessThan %bool %264 %float_0
+               OpSelectionMerge %266 None
+               OpBranchConditional %265 %267 %266
+        %267 = OpLabel
+               OpSelectionMerge %268 None
+               OpBranchConditional %252 %269 %268
+        %269 = OpLabel
+               OpKill
+        %268 = OpLabel
+        %270 = OpCompositeExtract %float %256 1
+        %271 = OpFAdd %float %270 %float_1
+        %272 = OpCompositeInsert %v2float %271 %256 1
+               OpBranch %266
+        %266 = OpLabel
+        %273 = OpPhi %v2float %256 %263 %272 %268
+        %274 = OpCompositeExtract %float %273 1
+        %275 = OpCompositeExtract %float %273 0
+        %276 = OpFAdd %float %275 %274
+        %257 = OpCompositeInsert %v2float %276 %273 0
+               OpBranch %258
+        %258 = OpLabel
+        %260 = OpIAdd %int %259 %int_1
+               OpBranch %255
+        %262 = OpLabel
+               OpBranch %209
+        %209 = OpLabel
+               OpBranch %200
+        %200 = OpLabel
+        %277 = OpPhi %float %207 %201 %249 %209
+               OpBranch %191
+        %191 = OpLabel
+        %278 = OpPhi %float %198 %192 %277 %200
+               OpBranch %182
+        %182 = OpLabel
+        %279 = OpPhi %float %189 %183 %278 %191
+               OpBranch %173
+        %173 = OpLabel
+        %280 = OpPhi %float %180 %174 %279 %182
+        %281 = OpCompositeConstruct %v4float %280 %280 %280 %float_1
+               OpStore %_GLF_color %281
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..d8b974e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.hlsl
@@ -0,0 +1,357 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+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() {
+  int temp[10] = (int[10])0;
+  int data[10] = (int[10])0;
+  float x_180 = 0.0f;
+  float x_279 = 0.0f;
+  int x_65_phi = 0;
+  int x_93_phi = 0;
+  int x_102_phi = 0;
+  float x_280_phi = 0.0f;
+  const float x_62 = asfloat(x_8[0].x);
+  const int x_63 = int(x_62);
+  x_65_phi = x_63;
+  while (true) {
+    const int x_65 = x_65_phi;
+    switch(x_65) {
+      case 9: {
+        data[x_65] = -5;
+        break;
+      }
+      case 8: {
+        data[x_65] = -4;
+        break;
+      }
+      case 7: {
+        data[x_65] = -3;
+        break;
+      }
+      case 6: {
+        data[x_65] = -2;
+        break;
+      }
+      case 5: {
+        data[x_65] = -1;
+        break;
+      }
+      case 4: {
+        data[x_65] = 0;
+        break;
+      }
+      case 3: {
+        data[x_65] = 1;
+        break;
+      }
+      case 2: {
+        data[x_65] = 2;
+        break;
+      }
+      case 1: {
+        data[x_65] = 3;
+        break;
+      }
+      case 0: {
+        data[x_65] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    const int x_66 = (x_65 + 1);
+    {
+      x_65_phi = x_66;
+      if ((x_66 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_93_phi = 0;
+  while (true) {
+    int x_94 = 0;
+    const int x_93 = x_93_phi;
+    if ((x_93 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const int x_99 = data[x_93];
+      temp[x_93] = x_99;
+      x_94 = (x_93 + 1);
+      x_93_phi = x_94;
+    }
+  }
+  x_102_phi = 1;
+  while (true) {
+    int x_103 = 0;
+    int x_109_phi = 0;
+    const int x_102 = x_102_phi;
+    if ((x_102 <= 9)) {
+    } else {
+      break;
+    }
+    x_109_phi = 0;
+    while (true) {
+      int x_121 = 0;
+      int x_126 = 0;
+      int x_121_phi = 0;
+      int x_124_phi = 0;
+      int x_126_phi = 0;
+      int x_148_phi = 0;
+      int x_151_phi = 0;
+      int x_161_phi = 0;
+      const int x_109 = x_109_phi;
+      if ((x_109 < 9)) {
+      } else {
+        break;
+      }
+      const int x_115 = (x_109 + x_102);
+      const int x_116 = (x_115 - 1);
+      const int x_110 = (x_109 + (2 * x_102));
+      const int x_119 = min((x_110 - 1), 9);
+      x_121_phi = x_109;
+      x_124_phi = x_115;
+      x_126_phi = x_109;
+      while (true) {
+        int x_141 = 0;
+        int x_144 = 0;
+        int x_125_phi = 0;
+        int x_127_phi = 0;
+        x_121 = x_121_phi;
+        const int x_124 = x_124_phi;
+        x_126 = x_126_phi;
+        bool tint_tmp = (x_126 <= x_116);
+        if (tint_tmp) {
+          tint_tmp = (x_124 <= x_119);
+        }
+        if ((tint_tmp)) {
+        } else {
+          break;
+        }
+        const int x_133_save = x_126;
+        const int x_134 = data[x_133_save];
+        const int x_135_save = x_124;
+        const int x_136 = data[x_135_save];
+        const int x_122 = asint((x_121 + asint(1)));
+        if ((x_134 < x_136)) {
+          x_141 = asint((x_126 + asint(1)));
+          const int x_142 = data[x_133_save];
+          temp[x_121] = x_142;
+          x_125_phi = x_124;
+          x_127_phi = x_141;
+        } else {
+          x_144 = (x_124 + 1);
+          const int x_145 = data[x_135_save];
+          temp[x_121] = x_145;
+          x_125_phi = x_144;
+          x_127_phi = x_126;
+        }
+        const int x_125 = x_125_phi;
+        const int x_127 = x_127_phi;
+        {
+          x_121_phi = x_122;
+          x_124_phi = x_125;
+          x_126_phi = x_127;
+        }
+      }
+      x_148_phi = x_121;
+      x_151_phi = x_126;
+      while (true) {
+        int x_149 = 0;
+        int x_152 = 0;
+        const int x_148 = x_148_phi;
+        const int x_151 = x_151_phi;
+        bool tint_tmp_1 = (x_151 < 10);
+        if (tint_tmp_1) {
+          tint_tmp_1 = (x_151 <= x_116);
+        }
+        if ((tint_tmp_1)) {
+        } else {
+          break;
+        }
+        {
+          x_149 = (x_148 + 1);
+          x_152 = (x_151 + 1);
+          const int x_158 = data[x_151];
+          temp[x_148] = x_158;
+          x_148_phi = x_149;
+          x_151_phi = x_152;
+        }
+      }
+      x_161_phi = x_109;
+      while (true) {
+        int x_162 = 0;
+        const int x_161 = x_161_phi;
+        if ((x_161 <= x_119)) {
+        } else {
+          break;
+        }
+        {
+          const int x_167 = temp[x_161];
+          data[x_161] = x_167;
+          x_162 = (x_161 + 1);
+          x_161_phi = x_162;
+        }
+      }
+      {
+        x_109_phi = x_110;
+      }
+    }
+    {
+      x_103 = (2 * x_102);
+      x_102_phi = x_103;
+    }
+  }
+  int x_171 = 0;
+  float x_189 = 0.0f;
+  float x_278 = 0.0f;
+  float x_279_phi = 0.0f;
+  const float x_170 = gl_FragCoord.y;
+  x_171 = int(x_170);
+  if ((x_171 < 30)) {
+    const int x_177 = data[0];
+    x_180 = (0.5f + (float(x_177) * 0.100000001f));
+    x_280_phi = x_180;
+  } else {
+    float x_198 = 0.0f;
+    float x_277 = 0.0f;
+    float x_278_phi = 0.0f;
+    if ((x_171 < 60)) {
+      const int x_186 = data[1];
+      x_189 = (0.5f + (float(x_186) * 0.100000001f));
+      x_279_phi = x_189;
+    } else {
+      float x_207 = 0.0f;
+      float x_249 = 0.0f;
+      float x_277_phi = 0.0f;
+      if ((x_171 < 90)) {
+        const int x_195 = data[2];
+        x_198 = (0.5f + (float(x_195) * 0.100000001f));
+        x_278_phi = x_198;
+      } else {
+        if ((x_171 < 120)) {
+          const int x_204 = data[3];
+          x_207 = (0.5f + (float(x_204) * 0.100000001f));
+          x_277_phi = x_207;
+        } else {
+          float x_220 = 0.0f;
+          float x_248 = 0.0f;
+          float x_249_phi = 0.0f;
+          float2 x_256_phi = float2(0.0f, 0.0f);
+          int x_259_phi = 0;
+          if ((x_171 < 150)) {
+            discard;
+          } else {
+            float x_229 = 0.0f;
+            float x_247 = 0.0f;
+            float x_248_phi = 0.0f;
+            if ((x_171 < 180)) {
+              const int x_217 = data[5];
+              x_220 = (0.5f + (float(x_217) * 0.100000001f));
+              x_249_phi = x_220;
+            } else {
+              float x_238 = 0.0f;
+              float x_246 = 0.0f;
+              float x_247_phi = 0.0f;
+              if ((x_171 < 210)) {
+                const int x_226 = data[6];
+                x_229 = (0.5f + (float(x_226) * 0.100000001f));
+                x_248_phi = x_229;
+              } else {
+                if ((x_171 < 240)) {
+                  const int x_235 = data[7];
+                  x_238 = (0.5f + (float(x_235) * 0.100000001f));
+                  x_247_phi = x_238;
+                } else {
+                  if ((x_171 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  const int x_243 = data[8];
+                  x_246 = (0.5f + (float(x_243) * 0.100000001f));
+                  x_247_phi = x_246;
+                }
+                x_247 = x_247_phi;
+                x_248_phi = x_247;
+              }
+              x_248 = x_248_phi;
+              x_249_phi = x_248;
+            }
+            x_249 = x_249_phi;
+            const float x_251 = asfloat(x_8[0].y);
+            const bool x_252 = (x_62 > x_251);
+            if (x_252) {
+              x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+            }
+            x_256_phi = float2(1.0f, 1.0f);
+            x_259_phi = 0;
+            while (true) {
+              float2 x_272 = float2(0.0f, 0.0f);
+              int x_260 = 0;
+              float2 x_273_phi = float2(0.0f, 0.0f);
+              const float2 x_256 = x_256_phi;
+              const int x_259 = x_259_phi;
+              if ((x_259 <= 32)) {
+              } else {
+                break;
+              }
+              x_273_phi = x_256;
+              if ((x_256.x < 0.0f)) {
+                if (x_252) {
+                  discard;
+                }
+                x_272 = x_256;
+                x_272.y = (x_256.y + 1.0f);
+                x_273_phi = x_272;
+              }
+              const float2 x_273 = x_273_phi;
+              float2 x_257_1 = x_273;
+              x_257_1.x = (x_273.x + x_273.y);
+              const float2 x_257 = x_257_1;
+              {
+                x_260 = (x_259 + 1);
+                x_256_phi = x_257;
+                x_259_phi = x_260;
+              }
+            }
+          }
+          x_277_phi = x_249;
+        }
+        x_277 = x_277_phi;
+        x_278_phi = x_277;
+      }
+      x_278 = x_278_phi;
+      x_279_phi = x_278;
+    }
+    x_279 = x_279_phi;
+    x_280_phi = x_279;
+  }
+  const float x_280 = x_280_phi;
+  x_GLF_color = float4(x_280, x_280, x_280, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.msl
new file mode 100644
index 0000000..ae3ef06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.msl
@@ -0,0 +1,351 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  tint_array_wrapper temp = {};
+  tint_array_wrapper data = {};
+  float x_180 = 0.0f;
+  float x_279 = 0.0f;
+  int x_65_phi = 0;
+  int x_93_phi = 0;
+  int x_102_phi = 0;
+  float x_280_phi = 0.0f;
+  float const x_62 = x_8.injectionSwitch.x;
+  int const x_63 = int(x_62);
+  x_65_phi = x_63;
+  while (true) {
+    int const x_65 = x_65_phi;
+    switch(x_65) {
+      case 9: {
+        data.arr[x_65] = -5;
+        break;
+      }
+      case 8: {
+        data.arr[x_65] = -4;
+        break;
+      }
+      case 7: {
+        data.arr[x_65] = -3;
+        break;
+      }
+      case 6: {
+        data.arr[x_65] = -2;
+        break;
+      }
+      case 5: {
+        data.arr[x_65] = -1;
+        break;
+      }
+      case 4: {
+        data.arr[x_65] = 0;
+        break;
+      }
+      case 3: {
+        data.arr[x_65] = 1;
+        break;
+      }
+      case 2: {
+        data.arr[x_65] = 2;
+        break;
+      }
+      case 1: {
+        data.arr[x_65] = 3;
+        break;
+      }
+      case 0: {
+        data.arr[x_65] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_66 = (x_65 + 1);
+    {
+      x_65_phi = x_66;
+      if ((x_66 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_93_phi = 0;
+  while (true) {
+    int x_94 = 0;
+    int const x_93 = x_93_phi;
+    if ((x_93 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_99 = data.arr[x_93];
+      temp.arr[x_93] = x_99;
+      x_94 = (x_93 + 1);
+      x_93_phi = x_94;
+    }
+  }
+  x_102_phi = 1;
+  while (true) {
+    int x_103 = 0;
+    int x_109_phi = 0;
+    int const x_102 = x_102_phi;
+    if ((x_102 <= 9)) {
+    } else {
+      break;
+    }
+    x_109_phi = 0;
+    while (true) {
+      int x_121 = 0;
+      int x_126 = 0;
+      int x_121_phi = 0;
+      int x_124_phi = 0;
+      int x_126_phi = 0;
+      int x_148_phi = 0;
+      int x_151_phi = 0;
+      int x_161_phi = 0;
+      int const x_109 = x_109_phi;
+      if ((x_109 < 9)) {
+      } else {
+        break;
+      }
+      int const x_115 = (x_109 + x_102);
+      int const x_116 = (x_115 - 1);
+      int const x_110 = (x_109 + (2 * x_102));
+      int const x_119 = min((x_110 - 1), 9);
+      x_121_phi = x_109;
+      x_124_phi = x_115;
+      x_126_phi = x_109;
+      while (true) {
+        int x_141 = 0;
+        int x_144 = 0;
+        int x_125_phi = 0;
+        int x_127_phi = 0;
+        x_121 = x_121_phi;
+        int const x_124 = x_124_phi;
+        x_126 = x_126_phi;
+        if (((x_126 <= x_116) && (x_124 <= x_119))) {
+        } else {
+          break;
+        }
+        int const x_133_save = x_126;
+        int const x_134 = data.arr[x_133_save];
+        int const x_135_save = x_124;
+        int const x_136 = data.arr[x_135_save];
+        int const x_122 = as_type<int>((x_121 + as_type<int>(1)));
+        if ((x_134 < x_136)) {
+          x_141 = as_type<int>((x_126 + as_type<int>(1)));
+          int const x_142 = data.arr[x_133_save];
+          temp.arr[x_121] = x_142;
+          x_125_phi = x_124;
+          x_127_phi = x_141;
+        } else {
+          x_144 = (x_124 + 1);
+          int const x_145 = data.arr[x_135_save];
+          temp.arr[x_121] = x_145;
+          x_125_phi = x_144;
+          x_127_phi = x_126;
+        }
+        int const x_125 = x_125_phi;
+        int const x_127 = x_127_phi;
+        {
+          x_121_phi = x_122;
+          x_124_phi = x_125;
+          x_126_phi = x_127;
+        }
+      }
+      x_148_phi = x_121;
+      x_151_phi = x_126;
+      while (true) {
+        int x_149 = 0;
+        int x_152 = 0;
+        int const x_148 = x_148_phi;
+        int const x_151 = x_151_phi;
+        if (((x_151 < 10) && (x_151 <= x_116))) {
+        } else {
+          break;
+        }
+        {
+          x_149 = (x_148 + 1);
+          x_152 = (x_151 + 1);
+          int const x_158 = data.arr[x_151];
+          temp.arr[x_148] = x_158;
+          x_148_phi = x_149;
+          x_151_phi = x_152;
+        }
+      }
+      x_161_phi = x_109;
+      while (true) {
+        int x_162 = 0;
+        int const x_161 = x_161_phi;
+        if ((x_161 <= x_119)) {
+        } else {
+          break;
+        }
+        {
+          int const x_167 = temp.arr[x_161];
+          data.arr[x_161] = x_167;
+          x_162 = (x_161 + 1);
+          x_161_phi = x_162;
+        }
+      }
+      {
+        x_109_phi = x_110;
+      }
+    }
+    {
+      x_103 = (2 * x_102);
+      x_102_phi = x_103;
+    }
+  }
+  int x_171 = 0;
+  float x_189 = 0.0f;
+  float x_278 = 0.0f;
+  float x_279_phi = 0.0f;
+  float const x_170 = (*(tint_symbol_5)).y;
+  x_171 = int(x_170);
+  if ((x_171 < 30)) {
+    int const x_177 = data.arr[0];
+    x_180 = (0.5f + (float(x_177) * 0.100000001f));
+    x_280_phi = x_180;
+  } else {
+    float x_198 = 0.0f;
+    float x_277 = 0.0f;
+    float x_278_phi = 0.0f;
+    if ((x_171 < 60)) {
+      int const x_186 = data.arr[1];
+      x_189 = (0.5f + (float(x_186) * 0.100000001f));
+      x_279_phi = x_189;
+    } else {
+      float x_207 = 0.0f;
+      float x_249 = 0.0f;
+      float x_277_phi = 0.0f;
+      if ((x_171 < 90)) {
+        int const x_195 = data.arr[2];
+        x_198 = (0.5f + (float(x_195) * 0.100000001f));
+        x_278_phi = x_198;
+      } else {
+        if ((x_171 < 120)) {
+          int const x_204 = data.arr[3];
+          x_207 = (0.5f + (float(x_204) * 0.100000001f));
+          x_277_phi = x_207;
+        } else {
+          float x_220 = 0.0f;
+          float x_248 = 0.0f;
+          float x_249_phi = 0.0f;
+          float2 x_256_phi = 0.0f;
+          int x_259_phi = 0;
+          if ((x_171 < 150)) {
+            discard_fragment();
+          } else {
+            float x_229 = 0.0f;
+            float x_247 = 0.0f;
+            float x_248_phi = 0.0f;
+            if ((x_171 < 180)) {
+              int const x_217 = data.arr[5];
+              x_220 = (0.5f + (float(x_217) * 0.100000001f));
+              x_249_phi = x_220;
+            } else {
+              float x_238 = 0.0f;
+              float x_246 = 0.0f;
+              float x_247_phi = 0.0f;
+              if ((x_171 < 210)) {
+                int const x_226 = data.arr[6];
+                x_229 = (0.5f + (float(x_226) * 0.100000001f));
+                x_248_phi = x_229;
+              } else {
+                if ((x_171 < 240)) {
+                  int const x_235 = data.arr[7];
+                  x_238 = (0.5f + (float(x_235) * 0.100000001f));
+                  x_247_phi = x_238;
+                } else {
+                  if ((x_171 < 270)) {
+                  } else {
+                    discard_fragment();
+                  }
+                  int const x_243 = data.arr[8];
+                  x_246 = (0.5f + (float(x_243) * 0.100000001f));
+                  x_247_phi = x_246;
+                }
+                x_247 = x_247_phi;
+                x_248_phi = x_247;
+              }
+              x_248 = x_248_phi;
+              x_249_phi = x_248;
+            }
+            x_249 = x_249_phi;
+            float const x_251 = x_8.injectionSwitch.y;
+            bool const x_252 = (x_62 > x_251);
+            if (x_252) {
+              *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+            }
+            x_256_phi = float2(1.0f, 1.0f);
+            x_259_phi = 0;
+            while (true) {
+              float2 x_272 = 0.0f;
+              int x_260 = 0;
+              float2 x_273_phi = 0.0f;
+              float2 const x_256 = x_256_phi;
+              int const x_259 = x_259_phi;
+              if ((x_259 <= 32)) {
+              } else {
+                break;
+              }
+              x_273_phi = x_256;
+              if ((x_256.x < 0.0f)) {
+                if (x_252) {
+                  discard_fragment();
+                }
+                x_272 = x_256;
+                x_272.y = (x_256.y + 1.0f);
+                x_273_phi = x_272;
+              }
+              float2 const x_273 = x_273_phi;
+              float2 x_257_1 = x_273;
+              x_257_1.x = (x_273.x + x_273.y);
+              float2 const x_257 = x_257_1;
+              {
+                x_260 = (x_259 + 1);
+                x_256_phi = x_257;
+                x_259_phi = x_260;
+              }
+            }
+          }
+          x_277_phi = x_249;
+        }
+        x_277 = x_277_phi;
+        x_278_phi = x_277;
+      }
+      x_278 = x_278_phi;
+      x_279_phi = x_278;
+    }
+    x_279 = x_279_phi;
+    x_280_phi = x_279;
+  }
+  float const x_280 = x_280_phi;
+  *(tint_symbol_6) = float4(x_280, x_280, x_280, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..9831f2b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.spvasm
@@ -0,0 +1,759 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 435
+; Schema: 0
+               OpCapability Shader
+        %135 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %temp "temp"
+               OpName %data "data"
+               OpName %x_180 "x_180"
+               OpName %x_279 "x_279"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %x_280_phi "x_280_phi"
+               OpName %x_94 "x_94"
+               OpName %x_103 "x_103"
+               OpName %x_109_phi "x_109_phi"
+               OpName %x_121 "x_121"
+               OpName %x_126 "x_126"
+               OpName %x_121_phi "x_121_phi"
+               OpName %x_124_phi "x_124_phi"
+               OpName %x_126_phi "x_126_phi"
+               OpName %x_148_phi "x_148_phi"
+               OpName %x_151_phi "x_151_phi"
+               OpName %x_161_phi "x_161_phi"
+               OpName %x_141 "x_141"
+               OpName %x_144 "x_144"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_127_phi "x_127_phi"
+               OpName %x_149 "x_149"
+               OpName %x_152 "x_152"
+               OpName %x_162 "x_162"
+               OpName %x_171 "x_171"
+               OpName %x_189 "x_189"
+               OpName %x_278 "x_278"
+               OpName %x_279_phi "x_279_phi"
+               OpName %x_198 "x_198"
+               OpName %x_277 "x_277"
+               OpName %x_278_phi "x_278_phi"
+               OpName %x_207 "x_207"
+               OpName %x_249 "x_249"
+               OpName %x_277_phi "x_277_phi"
+               OpName %x_220 "x_220"
+               OpName %x_248 "x_248"
+               OpName %x_249_phi "x_249_phi"
+               OpName %x_256_phi "x_256_phi"
+               OpName %x_259_phi "x_259_phi"
+               OpName %x_229 "x_229"
+               OpName %x_247 "x_247"
+               OpName %x_248_phi "x_248_phi"
+               OpName %x_238 "x_238"
+               OpName %x_246 "x_246"
+               OpName %x_247_phi "x_247_phi"
+               OpName %x_272 "x_272"
+               OpName %x_260 "x_260"
+               OpName %x_273_phi "x_273_phi"
+               OpName %x_257_1 "x_257_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %25 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+%float_0_100000001 = OpConstant %float 0.100000001
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %300 = OpConstantNull %v2float
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+        %377 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %378 = OpConstantComposite %v2float %float_1 %float_1
+     %int_32 = OpConstant %int 32
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+        %422 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %temp = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+      %x_180 = OpVariable %_ptr_Function_float Function %29
+      %x_279 = OpVariable %_ptr_Function_float Function %29
+   %x_65_phi = OpVariable %_ptr_Function_int Function %33
+   %x_93_phi = OpVariable %_ptr_Function_int Function %33
+  %x_102_phi = OpVariable %_ptr_Function_int Function %33
+  %x_280_phi = OpVariable %_ptr_Function_float Function %29
+       %x_94 = OpVariable %_ptr_Function_int Function %33
+      %x_103 = OpVariable %_ptr_Function_int Function %33
+  %x_109_phi = OpVariable %_ptr_Function_int Function %33
+      %x_121 = OpVariable %_ptr_Function_int Function %33
+      %x_126 = OpVariable %_ptr_Function_int Function %33
+  %x_121_phi = OpVariable %_ptr_Function_int Function %33
+  %x_124_phi = OpVariable %_ptr_Function_int Function %33
+  %x_126_phi = OpVariable %_ptr_Function_int Function %33
+  %x_148_phi = OpVariable %_ptr_Function_int Function %33
+  %x_151_phi = OpVariable %_ptr_Function_int Function %33
+  %x_161_phi = OpVariable %_ptr_Function_int Function %33
+      %x_141 = OpVariable %_ptr_Function_int Function %33
+      %x_144 = OpVariable %_ptr_Function_int Function %33
+  %x_125_phi = OpVariable %_ptr_Function_int Function %33
+  %x_127_phi = OpVariable %_ptr_Function_int Function %33
+      %x_149 = OpVariable %_ptr_Function_int Function %33
+      %x_152 = OpVariable %_ptr_Function_int Function %33
+      %x_162 = OpVariable %_ptr_Function_int Function %33
+      %x_171 = OpVariable %_ptr_Function_int Function %33
+      %x_189 = OpVariable %_ptr_Function_float Function %29
+      %x_278 = OpVariable %_ptr_Function_float Function %29
+  %x_279_phi = OpVariable %_ptr_Function_float Function %29
+      %x_198 = OpVariable %_ptr_Function_float Function %29
+      %x_277 = OpVariable %_ptr_Function_float Function %29
+  %x_278_phi = OpVariable %_ptr_Function_float Function %29
+      %x_207 = OpVariable %_ptr_Function_float Function %29
+      %x_249 = OpVariable %_ptr_Function_float Function %29
+  %x_277_phi = OpVariable %_ptr_Function_float Function %29
+      %x_220 = OpVariable %_ptr_Function_float Function %29
+      %x_248 = OpVariable %_ptr_Function_float Function %29
+  %x_249_phi = OpVariable %_ptr_Function_float Function %29
+  %x_256_phi = OpVariable %_ptr_Function_v2float Function %300
+  %x_259_phi = OpVariable %_ptr_Function_int Function %33
+      %x_229 = OpVariable %_ptr_Function_float Function %29
+      %x_247 = OpVariable %_ptr_Function_float Function %29
+  %x_248_phi = OpVariable %_ptr_Function_float Function %29
+      %x_238 = OpVariable %_ptr_Function_float Function %29
+      %x_246 = OpVariable %_ptr_Function_float Function %29
+  %x_247_phi = OpVariable %_ptr_Function_float Function %29
+      %x_272 = OpVariable %_ptr_Function_v2float Function %300
+      %x_260 = OpVariable %_ptr_Function_int Function %33
+  %x_273_phi = OpVariable %_ptr_Function_v2float Function %300
+    %x_257_1 = OpVariable %_ptr_Function_v2float Function %300
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+               OpStore %x_65_phi %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %x_65_phi
+               OpSelectionMerge %47 None
+               OpSwitch %46 %48 9 %49 8 %50 7 %51 6 %52 5 %53 4 %54 3 %55 2 %56 1 %57 0 %58
+         %49 = OpLabel
+         %59 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %59 %int_n5
+               OpBranch %47
+         %50 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %61 %int_n4
+               OpBranch %47
+         %51 = OpLabel
+         %63 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %63 %int_n3
+               OpBranch %47
+         %52 = OpLabel
+         %65 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %65 %int_n2
+               OpBranch %47
+         %53 = OpLabel
+         %67 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %67 %int_n1
+               OpBranch %47
+         %54 = OpLabel
+         %69 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %69 %int_0
+               OpBranch %47
+         %55 = OpLabel
+         %71 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %71 %int_1
+               OpBranch %47
+         %56 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %73 %int_2
+               OpBranch %47
+         %57 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %75 %int_3
+               OpBranch %47
+         %58 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %77 %int_4
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+         %79 = OpIAdd %int %46 %int_1
+               OpBranch %44
+         %44 = OpLabel
+               OpStore %x_65_phi %79
+         %81 = OpSLessThan %bool %79 %int_10
+               OpSelectionMerge %83 None
+               OpBranchConditional %81 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %43
+         %83 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpStore %x_93_phi %int_0
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %91 = OpLoad %int %x_93_phi
+         %92 = OpSLessThan %bool %91 %int_10
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpBranch %93
+         %95 = OpLabel
+               OpBranch %87
+         %93 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+         %96 = OpAccessChain %_ptr_Function_int %data %91
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Function_int %temp %91
+               OpStore %98 %97
+         %99 = OpIAdd %int %91 %int_1
+               OpStore %x_94 %99
+        %100 = OpLoad %int %x_94
+               OpStore %x_93_phi %100
+               OpBranch %86
+         %87 = OpLabel
+               OpStore %x_102_phi %int_1
+               OpBranch %101
+        %101 = OpLabel
+               OpLoopMerge %102 %103 None
+               OpBranch %104
+        %104 = OpLabel
+        %107 = OpLoad %int %x_102_phi
+        %109 = OpSLessThanEqual %bool %107 %int_9
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %112
+        %111 = OpLabel
+               OpBranch %110
+        %112 = OpLabel
+               OpBranch %102
+        %110 = OpLabel
+               OpStore %x_109_phi %int_0
+               OpBranch %113
+        %113 = OpLabel
+               OpLoopMerge %114 %115 None
+               OpBranch %116
+        %116 = OpLabel
+        %125 = OpLoad %int %x_109_phi
+        %126 = OpSLessThan %bool %125 %int_9
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %129
+        %128 = OpLabel
+               OpBranch %127
+        %129 = OpLabel
+               OpBranch %114
+        %127 = OpLabel
+        %130 = OpIAdd %int %125 %107
+        %131 = OpISub %int %130 %int_1
+        %132 = OpIMul %int %int_2 %107
+        %133 = OpIAdd %int %125 %132
+        %136 = OpISub %int %133 %int_1
+        %134 = OpExtInst %int %135 SMin %136 %int_9
+               OpStore %x_121_phi %125
+               OpStore %x_124_phi %130
+               OpStore %x_126_phi %125
+               OpBranch %137
+        %137 = OpLabel
+               OpLoopMerge %138 %139 None
+               OpBranch %140
+        %140 = OpLabel
+        %145 = OpLoad %int %x_121_phi
+               OpStore %x_121 %145
+        %146 = OpLoad %int %x_124_phi
+        %147 = OpLoad %int %x_126_phi
+               OpStore %x_126 %147
+        %148 = OpLoad %int %x_126
+        %149 = OpSLessThanEqual %bool %148 %131
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %152 = OpSLessThanEqual %bool %146 %134
+               OpBranch %150
+        %150 = OpLabel
+        %153 = OpPhi %bool %149 %140 %152 %151
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %138
+        %154 = OpLabel
+        %157 = OpLoad %int %x_126
+        %158 = OpAccessChain %_ptr_Function_int %data %157
+        %159 = OpLoad %int %158
+        %160 = OpAccessChain %_ptr_Function_int %data %146
+        %161 = OpLoad %int %160
+        %163 = OpLoad %int %x_121
+        %164 = OpCopyObject %int %int_1
+        %165 = OpIAdd %int %163 %164
+        %162 = OpCopyObject %int %165
+        %166 = OpSLessThan %bool %159 %161
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %169
+        %168 = OpLabel
+        %171 = OpLoad %int %x_126
+        %172 = OpCopyObject %int %int_1
+        %173 = OpIAdd %int %171 %172
+        %170 = OpCopyObject %int %173
+               OpStore %x_141 %170
+        %174 = OpAccessChain %_ptr_Function_int %data %157
+        %175 = OpLoad %int %174
+        %176 = OpLoad %int %x_121
+        %177 = OpAccessChain %_ptr_Function_int %temp %176
+               OpStore %177 %175
+               OpStore %x_125_phi %146
+        %178 = OpLoad %int %x_141
+               OpStore %x_127_phi %178
+               OpBranch %167
+        %169 = OpLabel
+        %179 = OpIAdd %int %146 %int_1
+               OpStore %x_144 %179
+        %180 = OpAccessChain %_ptr_Function_int %data %146
+        %181 = OpLoad %int %180
+        %182 = OpLoad %int %x_121
+        %183 = OpAccessChain %_ptr_Function_int %temp %182
+               OpStore %183 %181
+        %184 = OpLoad %int %x_144
+               OpStore %x_125_phi %184
+        %185 = OpLoad %int %x_126
+               OpStore %x_127_phi %185
+               OpBranch %167
+        %167 = OpLabel
+        %186 = OpLoad %int %x_125_phi
+        %187 = OpLoad %int %x_127_phi
+               OpBranch %139
+        %139 = OpLabel
+               OpStore %x_121_phi %162
+               OpStore %x_124_phi %186
+               OpStore %x_126_phi %187
+               OpBranch %137
+        %138 = OpLabel
+        %188 = OpLoad %int %x_121
+               OpStore %x_148_phi %188
+        %189 = OpLoad %int %x_126
+               OpStore %x_151_phi %189
+               OpBranch %190
+        %190 = OpLabel
+               OpLoopMerge %191 %192 None
+               OpBranch %193
+        %193 = OpLabel
+        %196 = OpLoad %int %x_148_phi
+        %197 = OpLoad %int %x_151_phi
+        %198 = OpSLessThan %bool %197 %int_10
+               OpSelectionMerge %199 None
+               OpBranchConditional %198 %200 %199
+        %200 = OpLabel
+        %201 = OpSLessThanEqual %bool %197 %131
+               OpBranch %199
+        %199 = OpLabel
+        %202 = OpPhi %bool %198 %193 %201 %200
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %205
+        %204 = OpLabel
+               OpBranch %203
+        %205 = OpLabel
+               OpBranch %191
+        %203 = OpLabel
+               OpBranch %192
+        %192 = OpLabel
+        %206 = OpIAdd %int %196 %int_1
+               OpStore %x_149 %206
+        %207 = OpIAdd %int %197 %int_1
+               OpStore %x_152 %207
+        %208 = OpAccessChain %_ptr_Function_int %data %197
+        %209 = OpLoad %int %208
+        %210 = OpAccessChain %_ptr_Function_int %temp %196
+               OpStore %210 %209
+        %211 = OpLoad %int %x_149
+               OpStore %x_148_phi %211
+        %212 = OpLoad %int %x_152
+               OpStore %x_151_phi %212
+               OpBranch %190
+        %191 = OpLabel
+               OpStore %x_161_phi %125
+               OpBranch %213
+        %213 = OpLabel
+               OpLoopMerge %214 %215 None
+               OpBranch %216
+        %216 = OpLabel
+        %218 = OpLoad %int %x_161_phi
+        %219 = OpSLessThanEqual %bool %218 %134
+               OpSelectionMerge %220 None
+               OpBranchConditional %219 %221 %222
+        %221 = OpLabel
+               OpBranch %220
+        %222 = OpLabel
+               OpBranch %214
+        %220 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %223 = OpAccessChain %_ptr_Function_int %temp %218
+        %224 = OpLoad %int %223
+        %225 = OpAccessChain %_ptr_Function_int %data %218
+               OpStore %225 %224
+        %226 = OpIAdd %int %218 %int_1
+               OpStore %x_162 %226
+        %227 = OpLoad %int %x_162
+               OpStore %x_161_phi %227
+               OpBranch %213
+        %214 = OpLabel
+               OpBranch %115
+        %115 = OpLabel
+               OpStore %x_109_phi %133
+               OpBranch %113
+        %114 = OpLabel
+               OpBranch %103
+        %103 = OpLabel
+        %228 = OpIMul %int %int_2 %107
+               OpStore %x_103 %228
+        %229 = OpLoad %int %x_103
+               OpStore %x_102_phi %229
+               OpBranch %101
+        %102 = OpLabel
+        %236 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %237 = OpLoad %float %236
+        %238 = OpConvertFToS %int %237
+               OpStore %x_171 %238
+        %239 = OpLoad %int %x_171
+        %241 = OpSLessThan %bool %239 %int_30
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %244
+        %243 = OpLabel
+        %245 = OpAccessChain %_ptr_Function_int %data %int_0
+        %246 = OpLoad %int %245
+        %248 = OpConvertSToF %float %246
+        %250 = OpFMul %float %248 %float_0_100000001
+        %251 = OpFAdd %float %float_0_5 %250
+               OpStore %x_180 %251
+        %252 = OpLoad %float %x_180
+               OpStore %x_280_phi %252
+               OpBranch %242
+        %244 = OpLabel
+        %256 = OpLoad %int %x_171
+        %258 = OpSLessThan %bool %256 %int_60
+               OpSelectionMerge %259 None
+               OpBranchConditional %258 %260 %261
+        %260 = OpLabel
+        %262 = OpAccessChain %_ptr_Function_int %data %int_1
+        %263 = OpLoad %int %262
+        %264 = OpConvertSToF %float %263
+        %265 = OpFMul %float %264 %float_0_100000001
+        %266 = OpFAdd %float %float_0_5 %265
+               OpStore %x_189 %266
+        %267 = OpLoad %float %x_189
+               OpStore %x_279_phi %267
+               OpBranch %259
+        %261 = OpLabel
+        %271 = OpLoad %int %x_171
+        %273 = OpSLessThan %bool %271 %int_90
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %276
+        %275 = OpLabel
+        %277 = OpAccessChain %_ptr_Function_int %data %int_2
+        %278 = OpLoad %int %277
+        %279 = OpConvertSToF %float %278
+        %280 = OpFMul %float %279 %float_0_100000001
+        %281 = OpFAdd %float %float_0_5 %280
+               OpStore %x_198 %281
+        %282 = OpLoad %float %x_198
+               OpStore %x_278_phi %282
+               OpBranch %274
+        %276 = OpLabel
+        %283 = OpLoad %int %x_171
+        %285 = OpSLessThan %bool %283 %int_120
+               OpSelectionMerge %286 None
+               OpBranchConditional %285 %287 %288
+        %287 = OpLabel
+        %289 = OpAccessChain %_ptr_Function_int %data %int_3
+        %290 = OpLoad %int %289
+        %291 = OpConvertSToF %float %290
+        %292 = OpFMul %float %291 %float_0_100000001
+        %293 = OpFAdd %float %float_0_5 %292
+               OpStore %x_207 %293
+        %294 = OpLoad %float %x_207
+               OpStore %x_277_phi %294
+               OpBranch %286
+        %288 = OpLabel
+        %302 = OpLoad %int %x_171
+        %304 = OpSLessThan %bool %302 %int_150
+               OpSelectionMerge %305 None
+               OpBranchConditional %304 %306 %307
+        %306 = OpLabel
+               OpKill
+        %307 = OpLabel
+        %311 = OpLoad %int %x_171
+        %313 = OpSLessThan %bool %311 %int_180
+               OpSelectionMerge %314 None
+               OpBranchConditional %313 %315 %316
+        %315 = OpLabel
+        %318 = OpAccessChain %_ptr_Function_int %data %int_5
+        %319 = OpLoad %int %318
+        %320 = OpConvertSToF %float %319
+        %321 = OpFMul %float %320 %float_0_100000001
+        %322 = OpFAdd %float %float_0_5 %321
+               OpStore %x_220 %322
+        %323 = OpLoad %float %x_220
+               OpStore %x_249_phi %323
+               OpBranch %314
+        %316 = OpLabel
+        %327 = OpLoad %int %x_171
+        %329 = OpSLessThan %bool %327 %int_210
+               OpSelectionMerge %330 None
+               OpBranchConditional %329 %331 %332
+        %331 = OpLabel
+        %334 = OpAccessChain %_ptr_Function_int %data %int_6
+        %335 = OpLoad %int %334
+        %336 = OpConvertSToF %float %335
+        %337 = OpFMul %float %336 %float_0_100000001
+        %338 = OpFAdd %float %float_0_5 %337
+               OpStore %x_229 %338
+        %339 = OpLoad %float %x_229
+               OpStore %x_248_phi %339
+               OpBranch %330
+        %332 = OpLabel
+        %340 = OpLoad %int %x_171
+        %342 = OpSLessThan %bool %340 %int_240
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+        %347 = OpAccessChain %_ptr_Function_int %data %int_7
+        %348 = OpLoad %int %347
+        %349 = OpConvertSToF %float %348
+        %350 = OpFMul %float %349 %float_0_100000001
+        %351 = OpFAdd %float %float_0_5 %350
+               OpStore %x_238 %351
+        %352 = OpLoad %float %x_238
+               OpStore %x_247_phi %352
+               OpBranch %343
+        %345 = OpLabel
+        %353 = OpLoad %int %x_171
+        %355 = OpSLessThan %bool %353 %int_270
+               OpSelectionMerge %356 None
+               OpBranchConditional %355 %357 %358
+        %357 = OpLabel
+               OpBranch %356
+        %358 = OpLabel
+               OpKill
+        %356 = OpLabel
+        %360 = OpAccessChain %_ptr_Function_int %data %int_8
+        %361 = OpLoad %int %360
+        %362 = OpConvertSToF %float %361
+        %363 = OpFMul %float %362 %float_0_100000001
+        %364 = OpFAdd %float %float_0_5 %363
+               OpStore %x_246 %364
+        %365 = OpLoad %float %x_246
+               OpStore %x_247_phi %365
+               OpBranch %343
+        %343 = OpLabel
+        %366 = OpLoad %float %x_247_phi
+               OpStore %x_247 %366
+        %367 = OpLoad %float %x_247
+               OpStore %x_248_phi %367
+               OpBranch %330
+        %330 = OpLabel
+        %368 = OpLoad %float %x_248_phi
+               OpStore %x_248 %368
+        %369 = OpLoad %float %x_248
+               OpStore %x_249_phi %369
+               OpBranch %314
+        %314 = OpLabel
+        %370 = OpLoad %float %x_249_phi
+               OpStore %x_249 %370
+        %371 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %372 = OpLoad %float %371
+        %373 = OpFOrdGreaterThan %bool %40 %372
+               OpSelectionMerge %374 None
+               OpBranchConditional %373 %375 %374
+        %375 = OpLabel
+               OpStore %x_GLF_color %377
+               OpBranch %374
+        %374 = OpLabel
+               OpStore %x_256_phi %378
+               OpStore %x_259_phi %int_0
+               OpBranch %379
+        %379 = OpLabel
+               OpLoopMerge %380 %381 None
+               OpBranch %382
+        %382 = OpLabel
+        %386 = OpLoad %v2float %x_256_phi
+        %387 = OpLoad %int %x_259_phi
+        %389 = OpSLessThanEqual %bool %387 %int_32
+               OpSelectionMerge %390 None
+               OpBranchConditional %389 %391 %392
+        %391 = OpLabel
+               OpBranch %390
+        %392 = OpLabel
+               OpBranch %380
+        %390 = OpLabel
+               OpStore %x_273_phi %386
+        %393 = OpCompositeExtract %float %386 0
+        %395 = OpFOrdLessThan %bool %393 %float_0
+               OpSelectionMerge %396 None
+               OpBranchConditional %395 %397 %396
+        %397 = OpLabel
+               OpSelectionMerge %398 None
+               OpBranchConditional %373 %399 %398
+        %399 = OpLabel
+               OpKill
+        %398 = OpLabel
+               OpStore %x_272 %386
+        %400 = OpAccessChain %_ptr_Function_float %x_272 %uint_1
+        %401 = OpCompositeExtract %float %386 1
+        %402 = OpFAdd %float %401 %float_1
+               OpStore %400 %402
+        %403 = OpLoad %v2float %x_272
+               OpStore %x_273_phi %403
+               OpBranch %396
+        %396 = OpLabel
+        %404 = OpLoad %v2float %x_273_phi
+               OpStore %x_257_1 %404
+        %406 = OpAccessChain %_ptr_Function_float %x_257_1 %uint_0
+        %407 = OpCompositeExtract %float %404 0
+        %408 = OpCompositeExtract %float %404 1
+        %409 = OpFAdd %float %407 %408
+               OpStore %406 %409
+        %410 = OpLoad %v2float %x_257_1
+               OpBranch %381
+        %381 = OpLabel
+        %411 = OpIAdd %int %387 %int_1
+               OpStore %x_260 %411
+               OpStore %x_256_phi %410
+        %412 = OpLoad %int %x_260
+               OpStore %x_259_phi %412
+               OpBranch %379
+        %380 = OpLabel
+               OpBranch %305
+        %305 = OpLabel
+        %413 = OpLoad %float %x_249
+               OpStore %x_277_phi %413
+               OpBranch %286
+        %286 = OpLabel
+        %414 = OpLoad %float %x_277_phi
+               OpStore %x_277 %414
+        %415 = OpLoad %float %x_277
+               OpStore %x_278_phi %415
+               OpBranch %274
+        %274 = OpLabel
+        %416 = OpLoad %float %x_278_phi
+               OpStore %x_278 %416
+        %417 = OpLoad %float %x_278
+               OpStore %x_279_phi %417
+               OpBranch %259
+        %259 = OpLabel
+        %418 = OpLoad %float %x_279_phi
+               OpStore %x_279 %418
+        %419 = OpLoad %float %x_279
+               OpStore %x_280_phi %419
+               OpBranch %242
+        %242 = OpLabel
+        %420 = OpLoad %float %x_280_phi
+        %421 = OpCompositeConstruct %v4float %420 %420 %420 %float_1
+               OpStore %x_GLF_color %421
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %422
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %426 = OpLabel
+        %427 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %427
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %429 = OpLabel
+        %430 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %430
+        %431 = OpFunctionCall %void %main_1
+        %433 = OpLoad %v4float %x_GLF_color
+        %434 = OpCompositeConstruct %main_out %433
+        %432 = OpFunctionCall %void %tint_symbol_3 %434
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 44[%44] is not post dominated by the back-edge block 83[%83]
+  %83 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..eb23a41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.spvasm.expected.wgsl
@@ -0,0 +1,344 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : array<i32, 10>;
+  var data : array<i32, 10>;
+  var x_180 : f32;
+  var x_279 : f32;
+  var x_65_phi : i32;
+  var x_93_phi : i32;
+  var x_102_phi : i32;
+  var x_280_phi : f32;
+  let x_62 : f32 = x_8.injectionSwitch.x;
+  let x_63 : i32 = i32(x_62);
+  x_65_phi = x_63;
+  loop {
+    let x_65 : i32 = x_65_phi;
+    switch(x_65) {
+      case 9: {
+        data[x_65] = -5;
+      }
+      case 8: {
+        data[x_65] = -4;
+      }
+      case 7: {
+        data[x_65] = -3;
+      }
+      case 6: {
+        data[x_65] = -2;
+      }
+      case 5: {
+        data[x_65] = -1;
+      }
+      case 4: {
+        data[x_65] = 0;
+      }
+      case 3: {
+        data[x_65] = 1;
+      }
+      case 2: {
+        data[x_65] = 2;
+      }
+      case 1: {
+        data[x_65] = 3;
+      }
+      case 0: {
+        data[x_65] = 4;
+      }
+      default: {
+      }
+    }
+    let x_66 : i32 = (x_65 + 1);
+
+    continuing {
+      x_65_phi = x_66;
+      if ((x_66 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_93_phi = 0;
+  loop {
+    var x_94 : i32;
+    let x_93 : i32 = x_93_phi;
+    if ((x_93 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_99 : i32 = data[x_93];
+      temp[x_93] = x_99;
+      x_94 = (x_93 + 1);
+      x_93_phi = x_94;
+    }
+  }
+  x_102_phi = 1;
+  loop {
+    var x_103 : i32;
+    var x_109_phi : i32;
+    let x_102 : i32 = x_102_phi;
+    if ((x_102 <= 9)) {
+    } else {
+      break;
+    }
+    x_109_phi = 0;
+    loop {
+      var x_121 : i32;
+      var x_126 : i32;
+      var x_121_phi : i32;
+      var x_124_phi : i32;
+      var x_126_phi : i32;
+      var x_148_phi : i32;
+      var x_151_phi : i32;
+      var x_161_phi : i32;
+      let x_109 : i32 = x_109_phi;
+      if ((x_109 < 9)) {
+      } else {
+        break;
+      }
+      let x_115 : i32 = (x_109 + x_102);
+      let x_116 : i32 = (x_115 - 1);
+      let x_110 : i32 = (x_109 + (2 * x_102));
+      let x_119 : i32 = min((x_110 - 1), 9);
+      x_121_phi = x_109;
+      x_124_phi = x_115;
+      x_126_phi = x_109;
+      loop {
+        var x_141 : i32;
+        var x_144 : i32;
+        var x_125_phi : i32;
+        var x_127_phi : i32;
+        x_121 = x_121_phi;
+        let x_124 : i32 = x_124_phi;
+        x_126 = x_126_phi;
+        if (((x_126 <= x_116) && (x_124 <= x_119))) {
+        } else {
+          break;
+        }
+        let x_133 : ptr<function, i32> = &(data[x_126]);
+        let x_134 : i32 = *(x_133);
+        let x_135 : ptr<function, i32> = &(data[x_124]);
+        let x_136 : i32 = *(x_135);
+        let x_122 : i32 = bitcast<i32>((x_121 + bitcast<i32>(1)));
+        if ((x_134 < x_136)) {
+          x_141 = bitcast<i32>((x_126 + bitcast<i32>(1)));
+          let x_142 : i32 = *(x_133);
+          temp[x_121] = x_142;
+          x_125_phi = x_124;
+          x_127_phi = x_141;
+        } else {
+          x_144 = (x_124 + 1);
+          let x_145 : i32 = *(x_135);
+          temp[x_121] = x_145;
+          x_125_phi = x_144;
+          x_127_phi = x_126;
+        }
+        let x_125 : i32 = x_125_phi;
+        let x_127 : i32 = x_127_phi;
+
+        continuing {
+          x_121_phi = x_122;
+          x_124_phi = x_125;
+          x_126_phi = x_127;
+        }
+      }
+      x_148_phi = x_121;
+      x_151_phi = x_126;
+      loop {
+        var x_149 : i32;
+        var x_152 : i32;
+        let x_148 : i32 = x_148_phi;
+        let x_151 : i32 = x_151_phi;
+        if (((x_151 < 10) && (x_151 <= x_116))) {
+        } else {
+          break;
+        }
+
+        continuing {
+          x_149 = (x_148 + 1);
+          x_152 = (x_151 + 1);
+          let x_158 : i32 = data[x_151];
+          temp[x_148] = x_158;
+          x_148_phi = x_149;
+          x_151_phi = x_152;
+        }
+      }
+      x_161_phi = x_109;
+      loop {
+        var x_162 : i32;
+        let x_161 : i32 = x_161_phi;
+        if ((x_161 <= x_119)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_167 : i32 = temp[x_161];
+          data[x_161] = x_167;
+          x_162 = (x_161 + 1);
+          x_161_phi = x_162;
+        }
+      }
+
+      continuing {
+        x_109_phi = x_110;
+      }
+    }
+
+    continuing {
+      x_103 = (2 * x_102);
+      x_102_phi = x_103;
+    }
+  }
+  var x_171 : i32;
+  var x_189 : f32;
+  var x_278 : f32;
+  var x_279_phi : f32;
+  let x_170 : f32 = gl_FragCoord.y;
+  x_171 = i32(x_170);
+  if ((x_171 < 30)) {
+    let x_177 : i32 = data[0];
+    x_180 = (0.5 + (f32(x_177) * 0.100000001));
+    x_280_phi = x_180;
+  } else {
+    var x_198 : f32;
+    var x_277 : f32;
+    var x_278_phi : f32;
+    if ((x_171 < 60)) {
+      let x_186 : i32 = data[1];
+      x_189 = (0.5 + (f32(x_186) * 0.100000001));
+      x_279_phi = x_189;
+    } else {
+      var x_207 : f32;
+      var x_249 : f32;
+      var x_277_phi : f32;
+      if ((x_171 < 90)) {
+        let x_195 : i32 = data[2];
+        x_198 = (0.5 + (f32(x_195) * 0.100000001));
+        x_278_phi = x_198;
+      } else {
+        if ((x_171 < 120)) {
+          let x_204 : i32 = data[3];
+          x_207 = (0.5 + (f32(x_204) * 0.100000001));
+          x_277_phi = x_207;
+        } else {
+          var x_220 : f32;
+          var x_248 : f32;
+          var x_249_phi : f32;
+          var x_256_phi : vec2<f32>;
+          var x_259_phi : i32;
+          if ((x_171 < 150)) {
+            discard;
+          } else {
+            var x_229 : f32;
+            var x_247 : f32;
+            var x_248_phi : f32;
+            if ((x_171 < 180)) {
+              let x_217 : i32 = data[5];
+              x_220 = (0.5 + (f32(x_217) * 0.100000001));
+              x_249_phi = x_220;
+            } else {
+              var x_238 : f32;
+              var x_246 : f32;
+              var x_247_phi : f32;
+              if ((x_171 < 210)) {
+                let x_226 : i32 = data[6];
+                x_229 = (0.5 + (f32(x_226) * 0.100000001));
+                x_248_phi = x_229;
+              } else {
+                if ((x_171 < 240)) {
+                  let x_235 : i32 = data[7];
+                  x_238 = (0.5 + (f32(x_235) * 0.100000001));
+                  x_247_phi = x_238;
+                } else {
+                  if ((x_171 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  let x_243 : i32 = data[8];
+                  x_246 = (0.5 + (f32(x_243) * 0.100000001));
+                  x_247_phi = x_246;
+                }
+                x_247 = x_247_phi;
+                x_248_phi = x_247;
+              }
+              x_248 = x_248_phi;
+              x_249_phi = x_248;
+            }
+            x_249 = x_249_phi;
+            let x_251 : f32 = x_8.injectionSwitch.y;
+            let x_252 : bool = (x_62 > x_251);
+            if (x_252) {
+              x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+            }
+            x_256_phi = vec2<f32>(1.0, 1.0);
+            x_259_phi = 0;
+            loop {
+              var x_272 : vec2<f32>;
+              var x_260 : i32;
+              var x_273_phi : vec2<f32>;
+              let x_256 : vec2<f32> = x_256_phi;
+              let x_259 : i32 = x_259_phi;
+              if ((x_259 <= 32)) {
+              } else {
+                break;
+              }
+              x_273_phi = x_256;
+              if ((x_256.x < 0.0)) {
+                if (x_252) {
+                  discard;
+                }
+                x_272 = x_256;
+                x_272.y = (x_256.y + 1.0);
+                x_273_phi = x_272;
+              }
+              let x_273 : vec2<f32> = x_273_phi;
+              var x_257_1 : vec2<f32> = x_273;
+              x_257_1.x = (x_273.x + x_273.y);
+              let x_257 : vec2<f32> = x_257_1;
+
+              continuing {
+                x_260 = (x_259 + 1);
+                x_256_phi = x_257;
+                x_259_phi = x_260;
+              }
+            }
+          }
+          x_277_phi = x_249;
+        }
+        x_277 = x_277_phi;
+        x_278_phi = x_277;
+      }
+      x_278 = x_278_phi;
+      x_279_phi = x_278;
+    }
+    x_279 = x_279_phi;
+    x_280_phi = x_279;
+  }
+  let x_280 : f32 = x_280_phi;
+  x_GLF_color = vec4<f32>(x_280, x_280, x_280, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
new file mode 100644
index 0000000..eb23a41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
@@ -0,0 +1,344 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : array<i32, 10>;
+  var data : array<i32, 10>;
+  var x_180 : f32;
+  var x_279 : f32;
+  var x_65_phi : i32;
+  var x_93_phi : i32;
+  var x_102_phi : i32;
+  var x_280_phi : f32;
+  let x_62 : f32 = x_8.injectionSwitch.x;
+  let x_63 : i32 = i32(x_62);
+  x_65_phi = x_63;
+  loop {
+    let x_65 : i32 = x_65_phi;
+    switch(x_65) {
+      case 9: {
+        data[x_65] = -5;
+      }
+      case 8: {
+        data[x_65] = -4;
+      }
+      case 7: {
+        data[x_65] = -3;
+      }
+      case 6: {
+        data[x_65] = -2;
+      }
+      case 5: {
+        data[x_65] = -1;
+      }
+      case 4: {
+        data[x_65] = 0;
+      }
+      case 3: {
+        data[x_65] = 1;
+      }
+      case 2: {
+        data[x_65] = 2;
+      }
+      case 1: {
+        data[x_65] = 3;
+      }
+      case 0: {
+        data[x_65] = 4;
+      }
+      default: {
+      }
+    }
+    let x_66 : i32 = (x_65 + 1);
+
+    continuing {
+      x_65_phi = x_66;
+      if ((x_66 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_93_phi = 0;
+  loop {
+    var x_94 : i32;
+    let x_93 : i32 = x_93_phi;
+    if ((x_93 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_99 : i32 = data[x_93];
+      temp[x_93] = x_99;
+      x_94 = (x_93 + 1);
+      x_93_phi = x_94;
+    }
+  }
+  x_102_phi = 1;
+  loop {
+    var x_103 : i32;
+    var x_109_phi : i32;
+    let x_102 : i32 = x_102_phi;
+    if ((x_102 <= 9)) {
+    } else {
+      break;
+    }
+    x_109_phi = 0;
+    loop {
+      var x_121 : i32;
+      var x_126 : i32;
+      var x_121_phi : i32;
+      var x_124_phi : i32;
+      var x_126_phi : i32;
+      var x_148_phi : i32;
+      var x_151_phi : i32;
+      var x_161_phi : i32;
+      let x_109 : i32 = x_109_phi;
+      if ((x_109 < 9)) {
+      } else {
+        break;
+      }
+      let x_115 : i32 = (x_109 + x_102);
+      let x_116 : i32 = (x_115 - 1);
+      let x_110 : i32 = (x_109 + (2 * x_102));
+      let x_119 : i32 = min((x_110 - 1), 9);
+      x_121_phi = x_109;
+      x_124_phi = x_115;
+      x_126_phi = x_109;
+      loop {
+        var x_141 : i32;
+        var x_144 : i32;
+        var x_125_phi : i32;
+        var x_127_phi : i32;
+        x_121 = x_121_phi;
+        let x_124 : i32 = x_124_phi;
+        x_126 = x_126_phi;
+        if (((x_126 <= x_116) && (x_124 <= x_119))) {
+        } else {
+          break;
+        }
+        let x_133 : ptr<function, i32> = &(data[x_126]);
+        let x_134 : i32 = *(x_133);
+        let x_135 : ptr<function, i32> = &(data[x_124]);
+        let x_136 : i32 = *(x_135);
+        let x_122 : i32 = bitcast<i32>((x_121 + bitcast<i32>(1)));
+        if ((x_134 < x_136)) {
+          x_141 = bitcast<i32>((x_126 + bitcast<i32>(1)));
+          let x_142 : i32 = *(x_133);
+          temp[x_121] = x_142;
+          x_125_phi = x_124;
+          x_127_phi = x_141;
+        } else {
+          x_144 = (x_124 + 1);
+          let x_145 : i32 = *(x_135);
+          temp[x_121] = x_145;
+          x_125_phi = x_144;
+          x_127_phi = x_126;
+        }
+        let x_125 : i32 = x_125_phi;
+        let x_127 : i32 = x_127_phi;
+
+        continuing {
+          x_121_phi = x_122;
+          x_124_phi = x_125;
+          x_126_phi = x_127;
+        }
+      }
+      x_148_phi = x_121;
+      x_151_phi = x_126;
+      loop {
+        var x_149 : i32;
+        var x_152 : i32;
+        let x_148 : i32 = x_148_phi;
+        let x_151 : i32 = x_151_phi;
+        if (((x_151 < 10) && (x_151 <= x_116))) {
+        } else {
+          break;
+        }
+
+        continuing {
+          x_149 = (x_148 + 1);
+          x_152 = (x_151 + 1);
+          let x_158 : i32 = data[x_151];
+          temp[x_148] = x_158;
+          x_148_phi = x_149;
+          x_151_phi = x_152;
+        }
+      }
+      x_161_phi = x_109;
+      loop {
+        var x_162 : i32;
+        let x_161 : i32 = x_161_phi;
+        if ((x_161 <= x_119)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_167 : i32 = temp[x_161];
+          data[x_161] = x_167;
+          x_162 = (x_161 + 1);
+          x_161_phi = x_162;
+        }
+      }
+
+      continuing {
+        x_109_phi = x_110;
+      }
+    }
+
+    continuing {
+      x_103 = (2 * x_102);
+      x_102_phi = x_103;
+    }
+  }
+  var x_171 : i32;
+  var x_189 : f32;
+  var x_278 : f32;
+  var x_279_phi : f32;
+  let x_170 : f32 = gl_FragCoord.y;
+  x_171 = i32(x_170);
+  if ((x_171 < 30)) {
+    let x_177 : i32 = data[0];
+    x_180 = (0.5 + (f32(x_177) * 0.100000001));
+    x_280_phi = x_180;
+  } else {
+    var x_198 : f32;
+    var x_277 : f32;
+    var x_278_phi : f32;
+    if ((x_171 < 60)) {
+      let x_186 : i32 = data[1];
+      x_189 = (0.5 + (f32(x_186) * 0.100000001));
+      x_279_phi = x_189;
+    } else {
+      var x_207 : f32;
+      var x_249 : f32;
+      var x_277_phi : f32;
+      if ((x_171 < 90)) {
+        let x_195 : i32 = data[2];
+        x_198 = (0.5 + (f32(x_195) * 0.100000001));
+        x_278_phi = x_198;
+      } else {
+        if ((x_171 < 120)) {
+          let x_204 : i32 = data[3];
+          x_207 = (0.5 + (f32(x_204) * 0.100000001));
+          x_277_phi = x_207;
+        } else {
+          var x_220 : f32;
+          var x_248 : f32;
+          var x_249_phi : f32;
+          var x_256_phi : vec2<f32>;
+          var x_259_phi : i32;
+          if ((x_171 < 150)) {
+            discard;
+          } else {
+            var x_229 : f32;
+            var x_247 : f32;
+            var x_248_phi : f32;
+            if ((x_171 < 180)) {
+              let x_217 : i32 = data[5];
+              x_220 = (0.5 + (f32(x_217) * 0.100000001));
+              x_249_phi = x_220;
+            } else {
+              var x_238 : f32;
+              var x_246 : f32;
+              var x_247_phi : f32;
+              if ((x_171 < 210)) {
+                let x_226 : i32 = data[6];
+                x_229 = (0.5 + (f32(x_226) * 0.100000001));
+                x_248_phi = x_229;
+              } else {
+                if ((x_171 < 240)) {
+                  let x_235 : i32 = data[7];
+                  x_238 = (0.5 + (f32(x_235) * 0.100000001));
+                  x_247_phi = x_238;
+                } else {
+                  if ((x_171 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  let x_243 : i32 = data[8];
+                  x_246 = (0.5 + (f32(x_243) * 0.100000001));
+                  x_247_phi = x_246;
+                }
+                x_247 = x_247_phi;
+                x_248_phi = x_247;
+              }
+              x_248 = x_248_phi;
+              x_249_phi = x_248;
+            }
+            x_249 = x_249_phi;
+            let x_251 : f32 = x_8.injectionSwitch.y;
+            let x_252 : bool = (x_62 > x_251);
+            if (x_252) {
+              x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+            }
+            x_256_phi = vec2<f32>(1.0, 1.0);
+            x_259_phi = 0;
+            loop {
+              var x_272 : vec2<f32>;
+              var x_260 : i32;
+              var x_273_phi : vec2<f32>;
+              let x_256 : vec2<f32> = x_256_phi;
+              let x_259 : i32 = x_259_phi;
+              if ((x_259 <= 32)) {
+              } else {
+                break;
+              }
+              x_273_phi = x_256;
+              if ((x_256.x < 0.0)) {
+                if (x_252) {
+                  discard;
+                }
+                x_272 = x_256;
+                x_272.y = (x_256.y + 1.0);
+                x_273_phi = x_272;
+              }
+              let x_273 : vec2<f32> = x_273_phi;
+              var x_257_1 : vec2<f32> = x_273;
+              x_257_1.x = (x_273.x + x_273.y);
+              let x_257 : vec2<f32> = x_257_1;
+
+              continuing {
+                x_260 = (x_259 + 1);
+                x_256_phi = x_257;
+                x_259_phi = x_260;
+              }
+            }
+          }
+          x_277_phi = x_249;
+        }
+        x_277 = x_277_phi;
+        x_278_phi = x_277;
+      }
+      x_278 = x_278_phi;
+      x_279_phi = x_278;
+    }
+    x_279 = x_279_phi;
+    x_280_phi = x_279;
+  }
+  let x_280 : f32 = x_280_phi;
+  x_GLF_color = vec4<f32>(x_280, x_280, x_280, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..d8b974e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.hlsl
@@ -0,0 +1,357 @@
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+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() {
+  int temp[10] = (int[10])0;
+  int data[10] = (int[10])0;
+  float x_180 = 0.0f;
+  float x_279 = 0.0f;
+  int x_65_phi = 0;
+  int x_93_phi = 0;
+  int x_102_phi = 0;
+  float x_280_phi = 0.0f;
+  const float x_62 = asfloat(x_8[0].x);
+  const int x_63 = int(x_62);
+  x_65_phi = x_63;
+  while (true) {
+    const int x_65 = x_65_phi;
+    switch(x_65) {
+      case 9: {
+        data[x_65] = -5;
+        break;
+      }
+      case 8: {
+        data[x_65] = -4;
+        break;
+      }
+      case 7: {
+        data[x_65] = -3;
+        break;
+      }
+      case 6: {
+        data[x_65] = -2;
+        break;
+      }
+      case 5: {
+        data[x_65] = -1;
+        break;
+      }
+      case 4: {
+        data[x_65] = 0;
+        break;
+      }
+      case 3: {
+        data[x_65] = 1;
+        break;
+      }
+      case 2: {
+        data[x_65] = 2;
+        break;
+      }
+      case 1: {
+        data[x_65] = 3;
+        break;
+      }
+      case 0: {
+        data[x_65] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    const int x_66 = (x_65 + 1);
+    {
+      x_65_phi = x_66;
+      if ((x_66 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_93_phi = 0;
+  while (true) {
+    int x_94 = 0;
+    const int x_93 = x_93_phi;
+    if ((x_93 < 10)) {
+    } else {
+      break;
+    }
+    {
+      const int x_99 = data[x_93];
+      temp[x_93] = x_99;
+      x_94 = (x_93 + 1);
+      x_93_phi = x_94;
+    }
+  }
+  x_102_phi = 1;
+  while (true) {
+    int x_103 = 0;
+    int x_109_phi = 0;
+    const int x_102 = x_102_phi;
+    if ((x_102 <= 9)) {
+    } else {
+      break;
+    }
+    x_109_phi = 0;
+    while (true) {
+      int x_121 = 0;
+      int x_126 = 0;
+      int x_121_phi = 0;
+      int x_124_phi = 0;
+      int x_126_phi = 0;
+      int x_148_phi = 0;
+      int x_151_phi = 0;
+      int x_161_phi = 0;
+      const int x_109 = x_109_phi;
+      if ((x_109 < 9)) {
+      } else {
+        break;
+      }
+      const int x_115 = (x_109 + x_102);
+      const int x_116 = (x_115 - 1);
+      const int x_110 = (x_109 + (2 * x_102));
+      const int x_119 = min((x_110 - 1), 9);
+      x_121_phi = x_109;
+      x_124_phi = x_115;
+      x_126_phi = x_109;
+      while (true) {
+        int x_141 = 0;
+        int x_144 = 0;
+        int x_125_phi = 0;
+        int x_127_phi = 0;
+        x_121 = x_121_phi;
+        const int x_124 = x_124_phi;
+        x_126 = x_126_phi;
+        bool tint_tmp = (x_126 <= x_116);
+        if (tint_tmp) {
+          tint_tmp = (x_124 <= x_119);
+        }
+        if ((tint_tmp)) {
+        } else {
+          break;
+        }
+        const int x_133_save = x_126;
+        const int x_134 = data[x_133_save];
+        const int x_135_save = x_124;
+        const int x_136 = data[x_135_save];
+        const int x_122 = asint((x_121 + asint(1)));
+        if ((x_134 < x_136)) {
+          x_141 = asint((x_126 + asint(1)));
+          const int x_142 = data[x_133_save];
+          temp[x_121] = x_142;
+          x_125_phi = x_124;
+          x_127_phi = x_141;
+        } else {
+          x_144 = (x_124 + 1);
+          const int x_145 = data[x_135_save];
+          temp[x_121] = x_145;
+          x_125_phi = x_144;
+          x_127_phi = x_126;
+        }
+        const int x_125 = x_125_phi;
+        const int x_127 = x_127_phi;
+        {
+          x_121_phi = x_122;
+          x_124_phi = x_125;
+          x_126_phi = x_127;
+        }
+      }
+      x_148_phi = x_121;
+      x_151_phi = x_126;
+      while (true) {
+        int x_149 = 0;
+        int x_152 = 0;
+        const int x_148 = x_148_phi;
+        const int x_151 = x_151_phi;
+        bool tint_tmp_1 = (x_151 < 10);
+        if (tint_tmp_1) {
+          tint_tmp_1 = (x_151 <= x_116);
+        }
+        if ((tint_tmp_1)) {
+        } else {
+          break;
+        }
+        {
+          x_149 = (x_148 + 1);
+          x_152 = (x_151 + 1);
+          const int x_158 = data[x_151];
+          temp[x_148] = x_158;
+          x_148_phi = x_149;
+          x_151_phi = x_152;
+        }
+      }
+      x_161_phi = x_109;
+      while (true) {
+        int x_162 = 0;
+        const int x_161 = x_161_phi;
+        if ((x_161 <= x_119)) {
+        } else {
+          break;
+        }
+        {
+          const int x_167 = temp[x_161];
+          data[x_161] = x_167;
+          x_162 = (x_161 + 1);
+          x_161_phi = x_162;
+        }
+      }
+      {
+        x_109_phi = x_110;
+      }
+    }
+    {
+      x_103 = (2 * x_102);
+      x_102_phi = x_103;
+    }
+  }
+  int x_171 = 0;
+  float x_189 = 0.0f;
+  float x_278 = 0.0f;
+  float x_279_phi = 0.0f;
+  const float x_170 = gl_FragCoord.y;
+  x_171 = int(x_170);
+  if ((x_171 < 30)) {
+    const int x_177 = data[0];
+    x_180 = (0.5f + (float(x_177) * 0.100000001f));
+    x_280_phi = x_180;
+  } else {
+    float x_198 = 0.0f;
+    float x_277 = 0.0f;
+    float x_278_phi = 0.0f;
+    if ((x_171 < 60)) {
+      const int x_186 = data[1];
+      x_189 = (0.5f + (float(x_186) * 0.100000001f));
+      x_279_phi = x_189;
+    } else {
+      float x_207 = 0.0f;
+      float x_249 = 0.0f;
+      float x_277_phi = 0.0f;
+      if ((x_171 < 90)) {
+        const int x_195 = data[2];
+        x_198 = (0.5f + (float(x_195) * 0.100000001f));
+        x_278_phi = x_198;
+      } else {
+        if ((x_171 < 120)) {
+          const int x_204 = data[3];
+          x_207 = (0.5f + (float(x_204) * 0.100000001f));
+          x_277_phi = x_207;
+        } else {
+          float x_220 = 0.0f;
+          float x_248 = 0.0f;
+          float x_249_phi = 0.0f;
+          float2 x_256_phi = float2(0.0f, 0.0f);
+          int x_259_phi = 0;
+          if ((x_171 < 150)) {
+            discard;
+          } else {
+            float x_229 = 0.0f;
+            float x_247 = 0.0f;
+            float x_248_phi = 0.0f;
+            if ((x_171 < 180)) {
+              const int x_217 = data[5];
+              x_220 = (0.5f + (float(x_217) * 0.100000001f));
+              x_249_phi = x_220;
+            } else {
+              float x_238 = 0.0f;
+              float x_246 = 0.0f;
+              float x_247_phi = 0.0f;
+              if ((x_171 < 210)) {
+                const int x_226 = data[6];
+                x_229 = (0.5f + (float(x_226) * 0.100000001f));
+                x_248_phi = x_229;
+              } else {
+                if ((x_171 < 240)) {
+                  const int x_235 = data[7];
+                  x_238 = (0.5f + (float(x_235) * 0.100000001f));
+                  x_247_phi = x_238;
+                } else {
+                  if ((x_171 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  const int x_243 = data[8];
+                  x_246 = (0.5f + (float(x_243) * 0.100000001f));
+                  x_247_phi = x_246;
+                }
+                x_247 = x_247_phi;
+                x_248_phi = x_247;
+              }
+              x_248 = x_248_phi;
+              x_249_phi = x_248;
+            }
+            x_249 = x_249_phi;
+            const float x_251 = asfloat(x_8[0].y);
+            const bool x_252 = (x_62 > x_251);
+            if (x_252) {
+              x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+            }
+            x_256_phi = float2(1.0f, 1.0f);
+            x_259_phi = 0;
+            while (true) {
+              float2 x_272 = float2(0.0f, 0.0f);
+              int x_260 = 0;
+              float2 x_273_phi = float2(0.0f, 0.0f);
+              const float2 x_256 = x_256_phi;
+              const int x_259 = x_259_phi;
+              if ((x_259 <= 32)) {
+              } else {
+                break;
+              }
+              x_273_phi = x_256;
+              if ((x_256.x < 0.0f)) {
+                if (x_252) {
+                  discard;
+                }
+                x_272 = x_256;
+                x_272.y = (x_256.y + 1.0f);
+                x_273_phi = x_272;
+              }
+              const float2 x_273 = x_273_phi;
+              float2 x_257_1 = x_273;
+              x_257_1.x = (x_273.x + x_273.y);
+              const float2 x_257 = x_257_1;
+              {
+                x_260 = (x_259 + 1);
+                x_256_phi = x_257;
+                x_259_phi = x_260;
+              }
+            }
+          }
+          x_277_phi = x_249;
+        }
+        x_277 = x_277_phi;
+        x_278_phi = x_277;
+      }
+      x_278 = x_278_phi;
+      x_279_phi = x_278;
+    }
+    x_279 = x_279_phi;
+    x_280_phi = x_279;
+  }
+  const float x_280 = x_280_phi;
+  x_GLF_color = float4(x_280, x_280, x_280, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.msl
new file mode 100644
index 0000000..ae3ef06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.msl
@@ -0,0 +1,351 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  tint_array_wrapper temp = {};
+  tint_array_wrapper data = {};
+  float x_180 = 0.0f;
+  float x_279 = 0.0f;
+  int x_65_phi = 0;
+  int x_93_phi = 0;
+  int x_102_phi = 0;
+  float x_280_phi = 0.0f;
+  float const x_62 = x_8.injectionSwitch.x;
+  int const x_63 = int(x_62);
+  x_65_phi = x_63;
+  while (true) {
+    int const x_65 = x_65_phi;
+    switch(x_65) {
+      case 9: {
+        data.arr[x_65] = -5;
+        break;
+      }
+      case 8: {
+        data.arr[x_65] = -4;
+        break;
+      }
+      case 7: {
+        data.arr[x_65] = -3;
+        break;
+      }
+      case 6: {
+        data.arr[x_65] = -2;
+        break;
+      }
+      case 5: {
+        data.arr[x_65] = -1;
+        break;
+      }
+      case 4: {
+        data.arr[x_65] = 0;
+        break;
+      }
+      case 3: {
+        data.arr[x_65] = 1;
+        break;
+      }
+      case 2: {
+        data.arr[x_65] = 2;
+        break;
+      }
+      case 1: {
+        data.arr[x_65] = 3;
+        break;
+      }
+      case 0: {
+        data.arr[x_65] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_66 = (x_65 + 1);
+    {
+      x_65_phi = x_66;
+      if ((x_66 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_93_phi = 0;
+  while (true) {
+    int x_94 = 0;
+    int const x_93 = x_93_phi;
+    if ((x_93 < 10)) {
+    } else {
+      break;
+    }
+    {
+      int const x_99 = data.arr[x_93];
+      temp.arr[x_93] = x_99;
+      x_94 = (x_93 + 1);
+      x_93_phi = x_94;
+    }
+  }
+  x_102_phi = 1;
+  while (true) {
+    int x_103 = 0;
+    int x_109_phi = 0;
+    int const x_102 = x_102_phi;
+    if ((x_102 <= 9)) {
+    } else {
+      break;
+    }
+    x_109_phi = 0;
+    while (true) {
+      int x_121 = 0;
+      int x_126 = 0;
+      int x_121_phi = 0;
+      int x_124_phi = 0;
+      int x_126_phi = 0;
+      int x_148_phi = 0;
+      int x_151_phi = 0;
+      int x_161_phi = 0;
+      int const x_109 = x_109_phi;
+      if ((x_109 < 9)) {
+      } else {
+        break;
+      }
+      int const x_115 = (x_109 + x_102);
+      int const x_116 = (x_115 - 1);
+      int const x_110 = (x_109 + (2 * x_102));
+      int const x_119 = min((x_110 - 1), 9);
+      x_121_phi = x_109;
+      x_124_phi = x_115;
+      x_126_phi = x_109;
+      while (true) {
+        int x_141 = 0;
+        int x_144 = 0;
+        int x_125_phi = 0;
+        int x_127_phi = 0;
+        x_121 = x_121_phi;
+        int const x_124 = x_124_phi;
+        x_126 = x_126_phi;
+        if (((x_126 <= x_116) && (x_124 <= x_119))) {
+        } else {
+          break;
+        }
+        int const x_133_save = x_126;
+        int const x_134 = data.arr[x_133_save];
+        int const x_135_save = x_124;
+        int const x_136 = data.arr[x_135_save];
+        int const x_122 = as_type<int>((x_121 + as_type<int>(1)));
+        if ((x_134 < x_136)) {
+          x_141 = as_type<int>((x_126 + as_type<int>(1)));
+          int const x_142 = data.arr[x_133_save];
+          temp.arr[x_121] = x_142;
+          x_125_phi = x_124;
+          x_127_phi = x_141;
+        } else {
+          x_144 = (x_124 + 1);
+          int const x_145 = data.arr[x_135_save];
+          temp.arr[x_121] = x_145;
+          x_125_phi = x_144;
+          x_127_phi = x_126;
+        }
+        int const x_125 = x_125_phi;
+        int const x_127 = x_127_phi;
+        {
+          x_121_phi = x_122;
+          x_124_phi = x_125;
+          x_126_phi = x_127;
+        }
+      }
+      x_148_phi = x_121;
+      x_151_phi = x_126;
+      while (true) {
+        int x_149 = 0;
+        int x_152 = 0;
+        int const x_148 = x_148_phi;
+        int const x_151 = x_151_phi;
+        if (((x_151 < 10) && (x_151 <= x_116))) {
+        } else {
+          break;
+        }
+        {
+          x_149 = (x_148 + 1);
+          x_152 = (x_151 + 1);
+          int const x_158 = data.arr[x_151];
+          temp.arr[x_148] = x_158;
+          x_148_phi = x_149;
+          x_151_phi = x_152;
+        }
+      }
+      x_161_phi = x_109;
+      while (true) {
+        int x_162 = 0;
+        int const x_161 = x_161_phi;
+        if ((x_161 <= x_119)) {
+        } else {
+          break;
+        }
+        {
+          int const x_167 = temp.arr[x_161];
+          data.arr[x_161] = x_167;
+          x_162 = (x_161 + 1);
+          x_161_phi = x_162;
+        }
+      }
+      {
+        x_109_phi = x_110;
+      }
+    }
+    {
+      x_103 = (2 * x_102);
+      x_102_phi = x_103;
+    }
+  }
+  int x_171 = 0;
+  float x_189 = 0.0f;
+  float x_278 = 0.0f;
+  float x_279_phi = 0.0f;
+  float const x_170 = (*(tint_symbol_5)).y;
+  x_171 = int(x_170);
+  if ((x_171 < 30)) {
+    int const x_177 = data.arr[0];
+    x_180 = (0.5f + (float(x_177) * 0.100000001f));
+    x_280_phi = x_180;
+  } else {
+    float x_198 = 0.0f;
+    float x_277 = 0.0f;
+    float x_278_phi = 0.0f;
+    if ((x_171 < 60)) {
+      int const x_186 = data.arr[1];
+      x_189 = (0.5f + (float(x_186) * 0.100000001f));
+      x_279_phi = x_189;
+    } else {
+      float x_207 = 0.0f;
+      float x_249 = 0.0f;
+      float x_277_phi = 0.0f;
+      if ((x_171 < 90)) {
+        int const x_195 = data.arr[2];
+        x_198 = (0.5f + (float(x_195) * 0.100000001f));
+        x_278_phi = x_198;
+      } else {
+        if ((x_171 < 120)) {
+          int const x_204 = data.arr[3];
+          x_207 = (0.5f + (float(x_204) * 0.100000001f));
+          x_277_phi = x_207;
+        } else {
+          float x_220 = 0.0f;
+          float x_248 = 0.0f;
+          float x_249_phi = 0.0f;
+          float2 x_256_phi = 0.0f;
+          int x_259_phi = 0;
+          if ((x_171 < 150)) {
+            discard_fragment();
+          } else {
+            float x_229 = 0.0f;
+            float x_247 = 0.0f;
+            float x_248_phi = 0.0f;
+            if ((x_171 < 180)) {
+              int const x_217 = data.arr[5];
+              x_220 = (0.5f + (float(x_217) * 0.100000001f));
+              x_249_phi = x_220;
+            } else {
+              float x_238 = 0.0f;
+              float x_246 = 0.0f;
+              float x_247_phi = 0.0f;
+              if ((x_171 < 210)) {
+                int const x_226 = data.arr[6];
+                x_229 = (0.5f + (float(x_226) * 0.100000001f));
+                x_248_phi = x_229;
+              } else {
+                if ((x_171 < 240)) {
+                  int const x_235 = data.arr[7];
+                  x_238 = (0.5f + (float(x_235) * 0.100000001f));
+                  x_247_phi = x_238;
+                } else {
+                  if ((x_171 < 270)) {
+                  } else {
+                    discard_fragment();
+                  }
+                  int const x_243 = data.arr[8];
+                  x_246 = (0.5f + (float(x_243) * 0.100000001f));
+                  x_247_phi = x_246;
+                }
+                x_247 = x_247_phi;
+                x_248_phi = x_247;
+              }
+              x_248 = x_248_phi;
+              x_249_phi = x_248;
+            }
+            x_249 = x_249_phi;
+            float const x_251 = x_8.injectionSwitch.y;
+            bool const x_252 = (x_62 > x_251);
+            if (x_252) {
+              *(tint_symbol_6) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+            }
+            x_256_phi = float2(1.0f, 1.0f);
+            x_259_phi = 0;
+            while (true) {
+              float2 x_272 = 0.0f;
+              int x_260 = 0;
+              float2 x_273_phi = 0.0f;
+              float2 const x_256 = x_256_phi;
+              int const x_259 = x_259_phi;
+              if ((x_259 <= 32)) {
+              } else {
+                break;
+              }
+              x_273_phi = x_256;
+              if ((x_256.x < 0.0f)) {
+                if (x_252) {
+                  discard_fragment();
+                }
+                x_272 = x_256;
+                x_272.y = (x_256.y + 1.0f);
+                x_273_phi = x_272;
+              }
+              float2 const x_273 = x_273_phi;
+              float2 x_257_1 = x_273;
+              x_257_1.x = (x_273.x + x_273.y);
+              float2 const x_257 = x_257_1;
+              {
+                x_260 = (x_259 + 1);
+                x_256_phi = x_257;
+                x_259_phi = x_260;
+              }
+            }
+          }
+          x_277_phi = x_249;
+        }
+        x_277 = x_277_phi;
+        x_278_phi = x_277;
+      }
+      x_278 = x_278_phi;
+      x_279_phi = x_278;
+    }
+    x_279 = x_279_phi;
+    x_280_phi = x_279;
+  }
+  float const x_280 = x_280_phi;
+  *(tint_symbol_6) = float4(x_280, x_280, x_280, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..9831f2b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.spvasm
@@ -0,0 +1,759 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 435
+; Schema: 0
+               OpCapability Shader
+        %135 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %temp "temp"
+               OpName %data "data"
+               OpName %x_180 "x_180"
+               OpName %x_279 "x_279"
+               OpName %x_65_phi "x_65_phi"
+               OpName %x_93_phi "x_93_phi"
+               OpName %x_102_phi "x_102_phi"
+               OpName %x_280_phi "x_280_phi"
+               OpName %x_94 "x_94"
+               OpName %x_103 "x_103"
+               OpName %x_109_phi "x_109_phi"
+               OpName %x_121 "x_121"
+               OpName %x_126 "x_126"
+               OpName %x_121_phi "x_121_phi"
+               OpName %x_124_phi "x_124_phi"
+               OpName %x_126_phi "x_126_phi"
+               OpName %x_148_phi "x_148_phi"
+               OpName %x_151_phi "x_151_phi"
+               OpName %x_161_phi "x_161_phi"
+               OpName %x_141 "x_141"
+               OpName %x_144 "x_144"
+               OpName %x_125_phi "x_125_phi"
+               OpName %x_127_phi "x_127_phi"
+               OpName %x_149 "x_149"
+               OpName %x_152 "x_152"
+               OpName %x_162 "x_162"
+               OpName %x_171 "x_171"
+               OpName %x_189 "x_189"
+               OpName %x_278 "x_278"
+               OpName %x_279_phi "x_279_phi"
+               OpName %x_198 "x_198"
+               OpName %x_277 "x_277"
+               OpName %x_278_phi "x_278_phi"
+               OpName %x_207 "x_207"
+               OpName %x_249 "x_249"
+               OpName %x_277_phi "x_277_phi"
+               OpName %x_220 "x_220"
+               OpName %x_248 "x_248"
+               OpName %x_249_phi "x_249_phi"
+               OpName %x_256_phi "x_256_phi"
+               OpName %x_259_phi "x_259_phi"
+               OpName %x_229 "x_229"
+               OpName %x_247 "x_247"
+               OpName %x_248_phi "x_248_phi"
+               OpName %x_238 "x_238"
+               OpName %x_246 "x_246"
+               OpName %x_247_phi "x_247_phi"
+               OpName %x_272 "x_272"
+               OpName %x_260 "x_260"
+               OpName %x_273_phi "x_273_phi"
+               OpName %x_257_1 "x_257_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %25 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+%_ptr_Function_int = OpTypePointer Function %int
+         %33 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+%float_0_100000001 = OpConstant %float 0.100000001
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %300 = OpConstantNull %v2float
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %float_1 = OpConstant %float 1
+        %377 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %378 = OpConstantComposite %v2float %float_1 %float_1
+     %int_32 = OpConstant %int 32
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+        %422 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+       %temp = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+       %data = OpVariable %_ptr_Function__arr_int_uint_10 Function %25
+      %x_180 = OpVariable %_ptr_Function_float Function %29
+      %x_279 = OpVariable %_ptr_Function_float Function %29
+   %x_65_phi = OpVariable %_ptr_Function_int Function %33
+   %x_93_phi = OpVariable %_ptr_Function_int Function %33
+  %x_102_phi = OpVariable %_ptr_Function_int Function %33
+  %x_280_phi = OpVariable %_ptr_Function_float Function %29
+       %x_94 = OpVariable %_ptr_Function_int Function %33
+      %x_103 = OpVariable %_ptr_Function_int Function %33
+  %x_109_phi = OpVariable %_ptr_Function_int Function %33
+      %x_121 = OpVariable %_ptr_Function_int Function %33
+      %x_126 = OpVariable %_ptr_Function_int Function %33
+  %x_121_phi = OpVariable %_ptr_Function_int Function %33
+  %x_124_phi = OpVariable %_ptr_Function_int Function %33
+  %x_126_phi = OpVariable %_ptr_Function_int Function %33
+  %x_148_phi = OpVariable %_ptr_Function_int Function %33
+  %x_151_phi = OpVariable %_ptr_Function_int Function %33
+  %x_161_phi = OpVariable %_ptr_Function_int Function %33
+      %x_141 = OpVariable %_ptr_Function_int Function %33
+      %x_144 = OpVariable %_ptr_Function_int Function %33
+  %x_125_phi = OpVariable %_ptr_Function_int Function %33
+  %x_127_phi = OpVariable %_ptr_Function_int Function %33
+      %x_149 = OpVariable %_ptr_Function_int Function %33
+      %x_152 = OpVariable %_ptr_Function_int Function %33
+      %x_162 = OpVariable %_ptr_Function_int Function %33
+      %x_171 = OpVariable %_ptr_Function_int Function %33
+      %x_189 = OpVariable %_ptr_Function_float Function %29
+      %x_278 = OpVariable %_ptr_Function_float Function %29
+  %x_279_phi = OpVariable %_ptr_Function_float Function %29
+      %x_198 = OpVariable %_ptr_Function_float Function %29
+      %x_277 = OpVariable %_ptr_Function_float Function %29
+  %x_278_phi = OpVariable %_ptr_Function_float Function %29
+      %x_207 = OpVariable %_ptr_Function_float Function %29
+      %x_249 = OpVariable %_ptr_Function_float Function %29
+  %x_277_phi = OpVariable %_ptr_Function_float Function %29
+      %x_220 = OpVariable %_ptr_Function_float Function %29
+      %x_248 = OpVariable %_ptr_Function_float Function %29
+  %x_249_phi = OpVariable %_ptr_Function_float Function %29
+  %x_256_phi = OpVariable %_ptr_Function_v2float Function %300
+  %x_259_phi = OpVariable %_ptr_Function_int Function %33
+      %x_229 = OpVariable %_ptr_Function_float Function %29
+      %x_247 = OpVariable %_ptr_Function_float Function %29
+  %x_248_phi = OpVariable %_ptr_Function_float Function %29
+      %x_238 = OpVariable %_ptr_Function_float Function %29
+      %x_246 = OpVariable %_ptr_Function_float Function %29
+  %x_247_phi = OpVariable %_ptr_Function_float Function %29
+      %x_272 = OpVariable %_ptr_Function_v2float Function %300
+      %x_260 = OpVariable %_ptr_Function_int Function %33
+  %x_273_phi = OpVariable %_ptr_Function_v2float Function %300
+    %x_257_1 = OpVariable %_ptr_Function_v2float Function %300
+         %39 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %40 = OpLoad %float %39
+         %41 = OpConvertFToS %int %40
+               OpStore %x_65_phi %41
+               OpBranch %42
+         %42 = OpLabel
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+         %46 = OpLoad %int %x_65_phi
+               OpSelectionMerge %47 None
+               OpSwitch %46 %48 9 %49 8 %50 7 %51 6 %52 5 %53 4 %54 3 %55 2 %56 1 %57 0 %58
+         %49 = OpLabel
+         %59 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %59 %int_n5
+               OpBranch %47
+         %50 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %61 %int_n4
+               OpBranch %47
+         %51 = OpLabel
+         %63 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %63 %int_n3
+               OpBranch %47
+         %52 = OpLabel
+         %65 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %65 %int_n2
+               OpBranch %47
+         %53 = OpLabel
+         %67 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %67 %int_n1
+               OpBranch %47
+         %54 = OpLabel
+         %69 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %69 %int_0
+               OpBranch %47
+         %55 = OpLabel
+         %71 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %71 %int_1
+               OpBranch %47
+         %56 = OpLabel
+         %73 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %73 %int_2
+               OpBranch %47
+         %57 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %75 %int_3
+               OpBranch %47
+         %58 = OpLabel
+         %77 = OpAccessChain %_ptr_Function_int %data %46
+               OpStore %77 %int_4
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+         %79 = OpIAdd %int %46 %int_1
+               OpBranch %44
+         %44 = OpLabel
+               OpStore %x_65_phi %79
+         %81 = OpSLessThan %bool %79 %int_10
+               OpSelectionMerge %83 None
+               OpBranchConditional %81 %84 %85
+         %84 = OpLabel
+               OpBranch %83
+         %85 = OpLabel
+               OpBranch %43
+         %83 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpStore %x_93_phi %int_0
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %91 = OpLoad %int %x_93_phi
+         %92 = OpSLessThan %bool %91 %int_10
+               OpSelectionMerge %93 None
+               OpBranchConditional %92 %94 %95
+         %94 = OpLabel
+               OpBranch %93
+         %95 = OpLabel
+               OpBranch %87
+         %93 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+         %96 = OpAccessChain %_ptr_Function_int %data %91
+         %97 = OpLoad %int %96
+         %98 = OpAccessChain %_ptr_Function_int %temp %91
+               OpStore %98 %97
+         %99 = OpIAdd %int %91 %int_1
+               OpStore %x_94 %99
+        %100 = OpLoad %int %x_94
+               OpStore %x_93_phi %100
+               OpBranch %86
+         %87 = OpLabel
+               OpStore %x_102_phi %int_1
+               OpBranch %101
+        %101 = OpLabel
+               OpLoopMerge %102 %103 None
+               OpBranch %104
+        %104 = OpLabel
+        %107 = OpLoad %int %x_102_phi
+        %109 = OpSLessThanEqual %bool %107 %int_9
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %112
+        %111 = OpLabel
+               OpBranch %110
+        %112 = OpLabel
+               OpBranch %102
+        %110 = OpLabel
+               OpStore %x_109_phi %int_0
+               OpBranch %113
+        %113 = OpLabel
+               OpLoopMerge %114 %115 None
+               OpBranch %116
+        %116 = OpLabel
+        %125 = OpLoad %int %x_109_phi
+        %126 = OpSLessThan %bool %125 %int_9
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %129
+        %128 = OpLabel
+               OpBranch %127
+        %129 = OpLabel
+               OpBranch %114
+        %127 = OpLabel
+        %130 = OpIAdd %int %125 %107
+        %131 = OpISub %int %130 %int_1
+        %132 = OpIMul %int %int_2 %107
+        %133 = OpIAdd %int %125 %132
+        %136 = OpISub %int %133 %int_1
+        %134 = OpExtInst %int %135 SMin %136 %int_9
+               OpStore %x_121_phi %125
+               OpStore %x_124_phi %130
+               OpStore %x_126_phi %125
+               OpBranch %137
+        %137 = OpLabel
+               OpLoopMerge %138 %139 None
+               OpBranch %140
+        %140 = OpLabel
+        %145 = OpLoad %int %x_121_phi
+               OpStore %x_121 %145
+        %146 = OpLoad %int %x_124_phi
+        %147 = OpLoad %int %x_126_phi
+               OpStore %x_126 %147
+        %148 = OpLoad %int %x_126
+        %149 = OpSLessThanEqual %bool %148 %131
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %152 = OpSLessThanEqual %bool %146 %134
+               OpBranch %150
+        %150 = OpLabel
+        %153 = OpPhi %bool %149 %140 %152 %151
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %138
+        %154 = OpLabel
+        %157 = OpLoad %int %x_126
+        %158 = OpAccessChain %_ptr_Function_int %data %157
+        %159 = OpLoad %int %158
+        %160 = OpAccessChain %_ptr_Function_int %data %146
+        %161 = OpLoad %int %160
+        %163 = OpLoad %int %x_121
+        %164 = OpCopyObject %int %int_1
+        %165 = OpIAdd %int %163 %164
+        %162 = OpCopyObject %int %165
+        %166 = OpSLessThan %bool %159 %161
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %169
+        %168 = OpLabel
+        %171 = OpLoad %int %x_126
+        %172 = OpCopyObject %int %int_1
+        %173 = OpIAdd %int %171 %172
+        %170 = OpCopyObject %int %173
+               OpStore %x_141 %170
+        %174 = OpAccessChain %_ptr_Function_int %data %157
+        %175 = OpLoad %int %174
+        %176 = OpLoad %int %x_121
+        %177 = OpAccessChain %_ptr_Function_int %temp %176
+               OpStore %177 %175
+               OpStore %x_125_phi %146
+        %178 = OpLoad %int %x_141
+               OpStore %x_127_phi %178
+               OpBranch %167
+        %169 = OpLabel
+        %179 = OpIAdd %int %146 %int_1
+               OpStore %x_144 %179
+        %180 = OpAccessChain %_ptr_Function_int %data %146
+        %181 = OpLoad %int %180
+        %182 = OpLoad %int %x_121
+        %183 = OpAccessChain %_ptr_Function_int %temp %182
+               OpStore %183 %181
+        %184 = OpLoad %int %x_144
+               OpStore %x_125_phi %184
+        %185 = OpLoad %int %x_126
+               OpStore %x_127_phi %185
+               OpBranch %167
+        %167 = OpLabel
+        %186 = OpLoad %int %x_125_phi
+        %187 = OpLoad %int %x_127_phi
+               OpBranch %139
+        %139 = OpLabel
+               OpStore %x_121_phi %162
+               OpStore %x_124_phi %186
+               OpStore %x_126_phi %187
+               OpBranch %137
+        %138 = OpLabel
+        %188 = OpLoad %int %x_121
+               OpStore %x_148_phi %188
+        %189 = OpLoad %int %x_126
+               OpStore %x_151_phi %189
+               OpBranch %190
+        %190 = OpLabel
+               OpLoopMerge %191 %192 None
+               OpBranch %193
+        %193 = OpLabel
+        %196 = OpLoad %int %x_148_phi
+        %197 = OpLoad %int %x_151_phi
+        %198 = OpSLessThan %bool %197 %int_10
+               OpSelectionMerge %199 None
+               OpBranchConditional %198 %200 %199
+        %200 = OpLabel
+        %201 = OpSLessThanEqual %bool %197 %131
+               OpBranch %199
+        %199 = OpLabel
+        %202 = OpPhi %bool %198 %193 %201 %200
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %205
+        %204 = OpLabel
+               OpBranch %203
+        %205 = OpLabel
+               OpBranch %191
+        %203 = OpLabel
+               OpBranch %192
+        %192 = OpLabel
+        %206 = OpIAdd %int %196 %int_1
+               OpStore %x_149 %206
+        %207 = OpIAdd %int %197 %int_1
+               OpStore %x_152 %207
+        %208 = OpAccessChain %_ptr_Function_int %data %197
+        %209 = OpLoad %int %208
+        %210 = OpAccessChain %_ptr_Function_int %temp %196
+               OpStore %210 %209
+        %211 = OpLoad %int %x_149
+               OpStore %x_148_phi %211
+        %212 = OpLoad %int %x_152
+               OpStore %x_151_phi %212
+               OpBranch %190
+        %191 = OpLabel
+               OpStore %x_161_phi %125
+               OpBranch %213
+        %213 = OpLabel
+               OpLoopMerge %214 %215 None
+               OpBranch %216
+        %216 = OpLabel
+        %218 = OpLoad %int %x_161_phi
+        %219 = OpSLessThanEqual %bool %218 %134
+               OpSelectionMerge %220 None
+               OpBranchConditional %219 %221 %222
+        %221 = OpLabel
+               OpBranch %220
+        %222 = OpLabel
+               OpBranch %214
+        %220 = OpLabel
+               OpBranch %215
+        %215 = OpLabel
+        %223 = OpAccessChain %_ptr_Function_int %temp %218
+        %224 = OpLoad %int %223
+        %225 = OpAccessChain %_ptr_Function_int %data %218
+               OpStore %225 %224
+        %226 = OpIAdd %int %218 %int_1
+               OpStore %x_162 %226
+        %227 = OpLoad %int %x_162
+               OpStore %x_161_phi %227
+               OpBranch %213
+        %214 = OpLabel
+               OpBranch %115
+        %115 = OpLabel
+               OpStore %x_109_phi %133
+               OpBranch %113
+        %114 = OpLabel
+               OpBranch %103
+        %103 = OpLabel
+        %228 = OpIMul %int %int_2 %107
+               OpStore %x_103 %228
+        %229 = OpLoad %int %x_103
+               OpStore %x_102_phi %229
+               OpBranch %101
+        %102 = OpLabel
+        %236 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %237 = OpLoad %float %236
+        %238 = OpConvertFToS %int %237
+               OpStore %x_171 %238
+        %239 = OpLoad %int %x_171
+        %241 = OpSLessThan %bool %239 %int_30
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %244
+        %243 = OpLabel
+        %245 = OpAccessChain %_ptr_Function_int %data %int_0
+        %246 = OpLoad %int %245
+        %248 = OpConvertSToF %float %246
+        %250 = OpFMul %float %248 %float_0_100000001
+        %251 = OpFAdd %float %float_0_5 %250
+               OpStore %x_180 %251
+        %252 = OpLoad %float %x_180
+               OpStore %x_280_phi %252
+               OpBranch %242
+        %244 = OpLabel
+        %256 = OpLoad %int %x_171
+        %258 = OpSLessThan %bool %256 %int_60
+               OpSelectionMerge %259 None
+               OpBranchConditional %258 %260 %261
+        %260 = OpLabel
+        %262 = OpAccessChain %_ptr_Function_int %data %int_1
+        %263 = OpLoad %int %262
+        %264 = OpConvertSToF %float %263
+        %265 = OpFMul %float %264 %float_0_100000001
+        %266 = OpFAdd %float %float_0_5 %265
+               OpStore %x_189 %266
+        %267 = OpLoad %float %x_189
+               OpStore %x_279_phi %267
+               OpBranch %259
+        %261 = OpLabel
+        %271 = OpLoad %int %x_171
+        %273 = OpSLessThan %bool %271 %int_90
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %276
+        %275 = OpLabel
+        %277 = OpAccessChain %_ptr_Function_int %data %int_2
+        %278 = OpLoad %int %277
+        %279 = OpConvertSToF %float %278
+        %280 = OpFMul %float %279 %float_0_100000001
+        %281 = OpFAdd %float %float_0_5 %280
+               OpStore %x_198 %281
+        %282 = OpLoad %float %x_198
+               OpStore %x_278_phi %282
+               OpBranch %274
+        %276 = OpLabel
+        %283 = OpLoad %int %x_171
+        %285 = OpSLessThan %bool %283 %int_120
+               OpSelectionMerge %286 None
+               OpBranchConditional %285 %287 %288
+        %287 = OpLabel
+        %289 = OpAccessChain %_ptr_Function_int %data %int_3
+        %290 = OpLoad %int %289
+        %291 = OpConvertSToF %float %290
+        %292 = OpFMul %float %291 %float_0_100000001
+        %293 = OpFAdd %float %float_0_5 %292
+               OpStore %x_207 %293
+        %294 = OpLoad %float %x_207
+               OpStore %x_277_phi %294
+               OpBranch %286
+        %288 = OpLabel
+        %302 = OpLoad %int %x_171
+        %304 = OpSLessThan %bool %302 %int_150
+               OpSelectionMerge %305 None
+               OpBranchConditional %304 %306 %307
+        %306 = OpLabel
+               OpKill
+        %307 = OpLabel
+        %311 = OpLoad %int %x_171
+        %313 = OpSLessThan %bool %311 %int_180
+               OpSelectionMerge %314 None
+               OpBranchConditional %313 %315 %316
+        %315 = OpLabel
+        %318 = OpAccessChain %_ptr_Function_int %data %int_5
+        %319 = OpLoad %int %318
+        %320 = OpConvertSToF %float %319
+        %321 = OpFMul %float %320 %float_0_100000001
+        %322 = OpFAdd %float %float_0_5 %321
+               OpStore %x_220 %322
+        %323 = OpLoad %float %x_220
+               OpStore %x_249_phi %323
+               OpBranch %314
+        %316 = OpLabel
+        %327 = OpLoad %int %x_171
+        %329 = OpSLessThan %bool %327 %int_210
+               OpSelectionMerge %330 None
+               OpBranchConditional %329 %331 %332
+        %331 = OpLabel
+        %334 = OpAccessChain %_ptr_Function_int %data %int_6
+        %335 = OpLoad %int %334
+        %336 = OpConvertSToF %float %335
+        %337 = OpFMul %float %336 %float_0_100000001
+        %338 = OpFAdd %float %float_0_5 %337
+               OpStore %x_229 %338
+        %339 = OpLoad %float %x_229
+               OpStore %x_248_phi %339
+               OpBranch %330
+        %332 = OpLabel
+        %340 = OpLoad %int %x_171
+        %342 = OpSLessThan %bool %340 %int_240
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %345
+        %344 = OpLabel
+        %347 = OpAccessChain %_ptr_Function_int %data %int_7
+        %348 = OpLoad %int %347
+        %349 = OpConvertSToF %float %348
+        %350 = OpFMul %float %349 %float_0_100000001
+        %351 = OpFAdd %float %float_0_5 %350
+               OpStore %x_238 %351
+        %352 = OpLoad %float %x_238
+               OpStore %x_247_phi %352
+               OpBranch %343
+        %345 = OpLabel
+        %353 = OpLoad %int %x_171
+        %355 = OpSLessThan %bool %353 %int_270
+               OpSelectionMerge %356 None
+               OpBranchConditional %355 %357 %358
+        %357 = OpLabel
+               OpBranch %356
+        %358 = OpLabel
+               OpKill
+        %356 = OpLabel
+        %360 = OpAccessChain %_ptr_Function_int %data %int_8
+        %361 = OpLoad %int %360
+        %362 = OpConvertSToF %float %361
+        %363 = OpFMul %float %362 %float_0_100000001
+        %364 = OpFAdd %float %float_0_5 %363
+               OpStore %x_246 %364
+        %365 = OpLoad %float %x_246
+               OpStore %x_247_phi %365
+               OpBranch %343
+        %343 = OpLabel
+        %366 = OpLoad %float %x_247_phi
+               OpStore %x_247 %366
+        %367 = OpLoad %float %x_247
+               OpStore %x_248_phi %367
+               OpBranch %330
+        %330 = OpLabel
+        %368 = OpLoad %float %x_248_phi
+               OpStore %x_248 %368
+        %369 = OpLoad %float %x_248
+               OpStore %x_249_phi %369
+               OpBranch %314
+        %314 = OpLabel
+        %370 = OpLoad %float %x_249_phi
+               OpStore %x_249 %370
+        %371 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %372 = OpLoad %float %371
+        %373 = OpFOrdGreaterThan %bool %40 %372
+               OpSelectionMerge %374 None
+               OpBranchConditional %373 %375 %374
+        %375 = OpLabel
+               OpStore %x_GLF_color %377
+               OpBranch %374
+        %374 = OpLabel
+               OpStore %x_256_phi %378
+               OpStore %x_259_phi %int_0
+               OpBranch %379
+        %379 = OpLabel
+               OpLoopMerge %380 %381 None
+               OpBranch %382
+        %382 = OpLabel
+        %386 = OpLoad %v2float %x_256_phi
+        %387 = OpLoad %int %x_259_phi
+        %389 = OpSLessThanEqual %bool %387 %int_32
+               OpSelectionMerge %390 None
+               OpBranchConditional %389 %391 %392
+        %391 = OpLabel
+               OpBranch %390
+        %392 = OpLabel
+               OpBranch %380
+        %390 = OpLabel
+               OpStore %x_273_phi %386
+        %393 = OpCompositeExtract %float %386 0
+        %395 = OpFOrdLessThan %bool %393 %float_0
+               OpSelectionMerge %396 None
+               OpBranchConditional %395 %397 %396
+        %397 = OpLabel
+               OpSelectionMerge %398 None
+               OpBranchConditional %373 %399 %398
+        %399 = OpLabel
+               OpKill
+        %398 = OpLabel
+               OpStore %x_272 %386
+        %400 = OpAccessChain %_ptr_Function_float %x_272 %uint_1
+        %401 = OpCompositeExtract %float %386 1
+        %402 = OpFAdd %float %401 %float_1
+               OpStore %400 %402
+        %403 = OpLoad %v2float %x_272
+               OpStore %x_273_phi %403
+               OpBranch %396
+        %396 = OpLabel
+        %404 = OpLoad %v2float %x_273_phi
+               OpStore %x_257_1 %404
+        %406 = OpAccessChain %_ptr_Function_float %x_257_1 %uint_0
+        %407 = OpCompositeExtract %float %404 0
+        %408 = OpCompositeExtract %float %404 1
+        %409 = OpFAdd %float %407 %408
+               OpStore %406 %409
+        %410 = OpLoad %v2float %x_257_1
+               OpBranch %381
+        %381 = OpLabel
+        %411 = OpIAdd %int %387 %int_1
+               OpStore %x_260 %411
+               OpStore %x_256_phi %410
+        %412 = OpLoad %int %x_260
+               OpStore %x_259_phi %412
+               OpBranch %379
+        %380 = OpLabel
+               OpBranch %305
+        %305 = OpLabel
+        %413 = OpLoad %float %x_249
+               OpStore %x_277_phi %413
+               OpBranch %286
+        %286 = OpLabel
+        %414 = OpLoad %float %x_277_phi
+               OpStore %x_277 %414
+        %415 = OpLoad %float %x_277
+               OpStore %x_278_phi %415
+               OpBranch %274
+        %274 = OpLabel
+        %416 = OpLoad %float %x_278_phi
+               OpStore %x_278 %416
+        %417 = OpLoad %float %x_278
+               OpStore %x_279_phi %417
+               OpBranch %259
+        %259 = OpLabel
+        %418 = OpLoad %float %x_279_phi
+               OpStore %x_279 %418
+        %419 = OpLoad %float %x_279
+               OpStore %x_280_phi %419
+               OpBranch %242
+        %242 = OpLabel
+        %420 = OpLoad %float %x_280_phi
+        %421 = OpCompositeConstruct %v4float %420 %420 %420 %float_1
+               OpStore %x_GLF_color %421
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %422
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %426 = OpLabel
+        %427 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %427
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %429 = OpLabel
+        %430 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %430
+        %431 = OpFunctionCall %void %main_1
+        %433 = OpLoad %v4float %x_GLF_color
+        %434 = OpCompositeConstruct %main_out %433
+        %432 = OpFunctionCall %void %tint_symbol_3 %434
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 44[%44] is not post dominated by the back-edge block 83[%83]
+  %83 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..eb23a41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl.expected.wgsl
@@ -0,0 +1,344 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var temp : array<i32, 10>;
+  var data : array<i32, 10>;
+  var x_180 : f32;
+  var x_279 : f32;
+  var x_65_phi : i32;
+  var x_93_phi : i32;
+  var x_102_phi : i32;
+  var x_280_phi : f32;
+  let x_62 : f32 = x_8.injectionSwitch.x;
+  let x_63 : i32 = i32(x_62);
+  x_65_phi = x_63;
+  loop {
+    let x_65 : i32 = x_65_phi;
+    switch(x_65) {
+      case 9: {
+        data[x_65] = -5;
+      }
+      case 8: {
+        data[x_65] = -4;
+      }
+      case 7: {
+        data[x_65] = -3;
+      }
+      case 6: {
+        data[x_65] = -2;
+      }
+      case 5: {
+        data[x_65] = -1;
+      }
+      case 4: {
+        data[x_65] = 0;
+      }
+      case 3: {
+        data[x_65] = 1;
+      }
+      case 2: {
+        data[x_65] = 2;
+      }
+      case 1: {
+        data[x_65] = 3;
+      }
+      case 0: {
+        data[x_65] = 4;
+      }
+      default: {
+      }
+    }
+    let x_66 : i32 = (x_65 + 1);
+
+    continuing {
+      x_65_phi = x_66;
+      if ((x_66 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_93_phi = 0;
+  loop {
+    var x_94 : i32;
+    let x_93 : i32 = x_93_phi;
+    if ((x_93 < 10)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_99 : i32 = data[x_93];
+      temp[x_93] = x_99;
+      x_94 = (x_93 + 1);
+      x_93_phi = x_94;
+    }
+  }
+  x_102_phi = 1;
+  loop {
+    var x_103 : i32;
+    var x_109_phi : i32;
+    let x_102 : i32 = x_102_phi;
+    if ((x_102 <= 9)) {
+    } else {
+      break;
+    }
+    x_109_phi = 0;
+    loop {
+      var x_121 : i32;
+      var x_126 : i32;
+      var x_121_phi : i32;
+      var x_124_phi : i32;
+      var x_126_phi : i32;
+      var x_148_phi : i32;
+      var x_151_phi : i32;
+      var x_161_phi : i32;
+      let x_109 : i32 = x_109_phi;
+      if ((x_109 < 9)) {
+      } else {
+        break;
+      }
+      let x_115 : i32 = (x_109 + x_102);
+      let x_116 : i32 = (x_115 - 1);
+      let x_110 : i32 = (x_109 + (2 * x_102));
+      let x_119 : i32 = min((x_110 - 1), 9);
+      x_121_phi = x_109;
+      x_124_phi = x_115;
+      x_126_phi = x_109;
+      loop {
+        var x_141 : i32;
+        var x_144 : i32;
+        var x_125_phi : i32;
+        var x_127_phi : i32;
+        x_121 = x_121_phi;
+        let x_124 : i32 = x_124_phi;
+        x_126 = x_126_phi;
+        if (((x_126 <= x_116) && (x_124 <= x_119))) {
+        } else {
+          break;
+        }
+        let x_133 : ptr<function, i32> = &(data[x_126]);
+        let x_134 : i32 = *(x_133);
+        let x_135 : ptr<function, i32> = &(data[x_124]);
+        let x_136 : i32 = *(x_135);
+        let x_122 : i32 = bitcast<i32>((x_121 + bitcast<i32>(1)));
+        if ((x_134 < x_136)) {
+          x_141 = bitcast<i32>((x_126 + bitcast<i32>(1)));
+          let x_142 : i32 = *(x_133);
+          temp[x_121] = x_142;
+          x_125_phi = x_124;
+          x_127_phi = x_141;
+        } else {
+          x_144 = (x_124 + 1);
+          let x_145 : i32 = *(x_135);
+          temp[x_121] = x_145;
+          x_125_phi = x_144;
+          x_127_phi = x_126;
+        }
+        let x_125 : i32 = x_125_phi;
+        let x_127 : i32 = x_127_phi;
+
+        continuing {
+          x_121_phi = x_122;
+          x_124_phi = x_125;
+          x_126_phi = x_127;
+        }
+      }
+      x_148_phi = x_121;
+      x_151_phi = x_126;
+      loop {
+        var x_149 : i32;
+        var x_152 : i32;
+        let x_148 : i32 = x_148_phi;
+        let x_151 : i32 = x_151_phi;
+        if (((x_151 < 10) && (x_151 <= x_116))) {
+        } else {
+          break;
+        }
+
+        continuing {
+          x_149 = (x_148 + 1);
+          x_152 = (x_151 + 1);
+          let x_158 : i32 = data[x_151];
+          temp[x_148] = x_158;
+          x_148_phi = x_149;
+          x_151_phi = x_152;
+        }
+      }
+      x_161_phi = x_109;
+      loop {
+        var x_162 : i32;
+        let x_161 : i32 = x_161_phi;
+        if ((x_161 <= x_119)) {
+        } else {
+          break;
+        }
+
+        continuing {
+          let x_167 : i32 = temp[x_161];
+          data[x_161] = x_167;
+          x_162 = (x_161 + 1);
+          x_161_phi = x_162;
+        }
+      }
+
+      continuing {
+        x_109_phi = x_110;
+      }
+    }
+
+    continuing {
+      x_103 = (2 * x_102);
+      x_102_phi = x_103;
+    }
+  }
+  var x_171 : i32;
+  var x_189 : f32;
+  var x_278 : f32;
+  var x_279_phi : f32;
+  let x_170 : f32 = gl_FragCoord.y;
+  x_171 = i32(x_170);
+  if ((x_171 < 30)) {
+    let x_177 : i32 = data[0];
+    x_180 = (0.5 + (f32(x_177) * 0.100000001));
+    x_280_phi = x_180;
+  } else {
+    var x_198 : f32;
+    var x_277 : f32;
+    var x_278_phi : f32;
+    if ((x_171 < 60)) {
+      let x_186 : i32 = data[1];
+      x_189 = (0.5 + (f32(x_186) * 0.100000001));
+      x_279_phi = x_189;
+    } else {
+      var x_207 : f32;
+      var x_249 : f32;
+      var x_277_phi : f32;
+      if ((x_171 < 90)) {
+        let x_195 : i32 = data[2];
+        x_198 = (0.5 + (f32(x_195) * 0.100000001));
+        x_278_phi = x_198;
+      } else {
+        if ((x_171 < 120)) {
+          let x_204 : i32 = data[3];
+          x_207 = (0.5 + (f32(x_204) * 0.100000001));
+          x_277_phi = x_207;
+        } else {
+          var x_220 : f32;
+          var x_248 : f32;
+          var x_249_phi : f32;
+          var x_256_phi : vec2<f32>;
+          var x_259_phi : i32;
+          if ((x_171 < 150)) {
+            discard;
+          } else {
+            var x_229 : f32;
+            var x_247 : f32;
+            var x_248_phi : f32;
+            if ((x_171 < 180)) {
+              let x_217 : i32 = data[5];
+              x_220 = (0.5 + (f32(x_217) * 0.100000001));
+              x_249_phi = x_220;
+            } else {
+              var x_238 : f32;
+              var x_246 : f32;
+              var x_247_phi : f32;
+              if ((x_171 < 210)) {
+                let x_226 : i32 = data[6];
+                x_229 = (0.5 + (f32(x_226) * 0.100000001));
+                x_248_phi = x_229;
+              } else {
+                if ((x_171 < 240)) {
+                  let x_235 : i32 = data[7];
+                  x_238 = (0.5 + (f32(x_235) * 0.100000001));
+                  x_247_phi = x_238;
+                } else {
+                  if ((x_171 < 270)) {
+                  } else {
+                    discard;
+                  }
+                  let x_243 : i32 = data[8];
+                  x_246 = (0.5 + (f32(x_243) * 0.100000001));
+                  x_247_phi = x_246;
+                }
+                x_247 = x_247_phi;
+                x_248_phi = x_247;
+              }
+              x_248 = x_248_phi;
+              x_249_phi = x_248;
+            }
+            x_249 = x_249_phi;
+            let x_251 : f32 = x_8.injectionSwitch.y;
+            let x_252 : bool = (x_62 > x_251);
+            if (x_252) {
+              x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+            }
+            x_256_phi = vec2<f32>(1.0, 1.0);
+            x_259_phi = 0;
+            loop {
+              var x_272 : vec2<f32>;
+              var x_260 : i32;
+              var x_273_phi : vec2<f32>;
+              let x_256 : vec2<f32> = x_256_phi;
+              let x_259 : i32 = x_259_phi;
+              if ((x_259 <= 32)) {
+              } else {
+                break;
+              }
+              x_273_phi = x_256;
+              if ((x_256.x < 0.0)) {
+                if (x_252) {
+                  discard;
+                }
+                x_272 = x_256;
+                x_272.y = (x_256.y + 1.0);
+                x_273_phi = x_272;
+              }
+              let x_273 : vec2<f32> = x_273_phi;
+              var x_257_1 : vec2<f32> = x_273;
+              x_257_1.x = (x_273.x + x_273.y);
+              let x_257 : vec2<f32> = x_257_1;
+
+              continuing {
+                x_260 = (x_259 + 1);
+                x_256_phi = x_257;
+                x_259_phi = x_260;
+              }
+            }
+          }
+          x_277_phi = x_249;
+        }
+        x_277 = x_277_phi;
+        x_278_phi = x_277;
+      }
+      x_278 = x_278_phi;
+      x_279_phi = x_278;
+    }
+    x_279 = x_279_phi;
+    x_280_phi = x_279;
+  }
+  let x_280 : f32 = x_280_phi;
+  x_GLF_color = vec4<f32>(x_280, x_280, x_280, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm
new file mode 100644
index 0000000..a853052
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm
@@ -0,0 +1,574 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %merge_i1_i1_i1_ "merge(i1;i1;i1;"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %mergeSort_ "mergeSort("
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %i_0 "i"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_1 "i"
+               OpName %from_0 "from"
+               OpName %mid_0 "mid"
+               OpName %to_0 "to"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %i_2 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j_0 "j"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %grey "grey"
+               OpName %int_i "int_i"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %33 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %36 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private
+     %int_10 = OpConstant %int 10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+     %int_n1 = OpConstant %int -1
+     %int_n2 = OpConstant %int -2
+     %int_n3 = OpConstant %int -3
+     %int_n4 = OpConstant %int -4
+     %int_n5 = OpConstant %int -5
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+     %int_30 = OpConstant %int 30
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+       %main = OpFunction %void None %33
+         %83 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+       %grey = OpVariable %_ptr_Function_float Function
+      %int_i = OpVariable %_ptr_Function_int Function
+         %84 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %85 = OpLoad %float %84
+         %86 = OpConvertFToS %int %85
+               OpStore %i_2 %86
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpLoad %int %i_2
+               OpSelectionMerge %92 None
+               OpSwitch %91 %92 0 %93 1 %94 2 %95 3 %96 4 %97 5 %98 6 %99 7 %100 8 %101 9 %102
+         %93 = OpLabel
+        %103 = OpLoad %int %i_2
+        %104 = OpAccessChain %_ptr_Private_int %data %103
+               OpStore %104 %int_4
+               OpBranch %92
+         %94 = OpLabel
+        %105 = OpLoad %int %i_2
+        %106 = OpAccessChain %_ptr_Private_int %data %105
+               OpStore %106 %int_3
+               OpBranch %92
+         %95 = OpLabel
+        %107 = OpLoad %int %i_2
+        %108 = OpAccessChain %_ptr_Private_int %data %107
+               OpStore %108 %int_2
+               OpBranch %92
+         %96 = OpLabel
+        %109 = OpLoad %int %i_2
+        %110 = OpAccessChain %_ptr_Private_int %data %109
+               OpStore %110 %int_1
+               OpBranch %92
+         %97 = OpLabel
+        %111 = OpLoad %int %i_2
+        %112 = OpAccessChain %_ptr_Private_int %data %111
+               OpStore %112 %int_0
+               OpBranch %92
+         %98 = OpLabel
+        %113 = OpLoad %int %i_2
+        %114 = OpAccessChain %_ptr_Private_int %data %113
+               OpStore %114 %int_n1
+               OpBranch %92
+         %99 = OpLabel
+        %115 = OpLoad %int %i_2
+        %116 = OpAccessChain %_ptr_Private_int %data %115
+               OpStore %116 %int_n2
+               OpBranch %92
+        %100 = OpLabel
+        %117 = OpLoad %int %i_2
+        %118 = OpAccessChain %_ptr_Private_int %data %117
+               OpStore %118 %int_n3
+               OpBranch %92
+        %101 = OpLabel
+        %119 = OpLoad %int %i_2
+        %120 = OpAccessChain %_ptr_Private_int %data %119
+               OpStore %120 %int_n4
+               OpBranch %92
+        %102 = OpLabel
+        %121 = OpLoad %int %i_2
+        %122 = OpAccessChain %_ptr_Private_int %data %121
+               OpStore %122 %int_n5
+               OpBranch %92
+         %92 = OpLabel
+        %123 = OpLoad %int %i_2
+        %124 = OpIAdd %int %123 %int_1
+               OpStore %i_2 %124
+               OpBranch %89
+         %89 = OpLabel
+        %125 = OpLoad %int %i_2
+        %126 = OpSLessThan %bool %125 %int_10
+               OpBranchConditional %126 %87 %88
+         %88 = OpLabel
+               OpStore %j_0 %int_0
+               OpBranch %127
+        %127 = OpLabel
+               OpLoopMerge %128 %129 None
+               OpBranch %130
+        %130 = OpLabel
+        %131 = OpLoad %int %j_0
+        %132 = OpSLessThan %bool %131 %int_10
+               OpBranchConditional %132 %133 %128
+        %133 = OpLabel
+        %134 = OpLoad %int %j_0
+        %135 = OpLoad %int %j_0
+        %136 = OpAccessChain %_ptr_Private_int %data %135
+        %137 = OpLoad %int %136
+        %138 = OpAccessChain %_ptr_Private_int %temp %134
+               OpStore %138 %137
+               OpBranch %129
+        %129 = OpLabel
+        %139 = OpLoad %int %j_0
+        %140 = OpIAdd %int %139 %int_1
+               OpStore %j_0 %140
+               OpBranch %127
+        %128 = OpLabel
+        %141 = OpFunctionCall %void %mergeSort_
+        %142 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %143 = OpLoad %float %142
+        %144 = OpConvertFToS %int %143
+        %145 = OpSLessThan %bool %144 %int_30
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %148
+        %147 = OpLabel
+        %149 = OpAccessChain %_ptr_Private_int %data %int_0
+        %150 = OpLoad %int %149
+        %151 = OpConvertSToF %float %150
+        %152 = OpFDiv %float %151 %float_10
+        %153 = OpFAdd %float %float_0_5 %152
+               OpStore %grey %153
+               OpBranch %146
+        %148 = OpLabel
+        %154 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %155 = OpLoad %float %154
+        %156 = OpConvertFToS %int %155
+        %157 = OpSLessThan %bool %156 %int_60
+               OpSelectionMerge %158 None
+               OpBranchConditional %157 %159 %160
+        %159 = OpLabel
+        %161 = OpAccessChain %_ptr_Private_int %data %int_1
+        %162 = OpLoad %int %161
+        %163 = OpConvertSToF %float %162
+        %164 = OpFDiv %float %163 %float_10
+        %165 = OpFAdd %float %float_0_5 %164
+               OpStore %grey %165
+               OpBranch %158
+        %160 = OpLabel
+        %166 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %167 = OpLoad %float %166
+        %168 = OpConvertFToS %int %167
+        %169 = OpSLessThan %bool %168 %int_90
+               OpSelectionMerge %170 None
+               OpBranchConditional %169 %171 %172
+        %171 = OpLabel
+        %173 = OpAccessChain %_ptr_Private_int %data %int_2
+        %174 = OpLoad %int %173
+        %175 = OpConvertSToF %float %174
+        %176 = OpFDiv %float %175 %float_10
+        %177 = OpFAdd %float %float_0_5 %176
+               OpStore %grey %177
+               OpBranch %170
+        %172 = OpLabel
+        %178 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %179 = OpLoad %float %178
+        %180 = OpConvertFToS %int %179
+        %181 = OpSLessThan %bool %180 %int_120
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %184
+        %183 = OpLabel
+        %185 = OpAccessChain %_ptr_Private_int %data %int_3
+        %186 = OpLoad %int %185
+        %187 = OpConvertSToF %float %186
+        %188 = OpFDiv %float %187 %float_10
+        %189 = OpFAdd %float %float_0_5 %188
+               OpStore %grey %189
+               OpBranch %182
+        %184 = OpLabel
+        %190 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %191 = OpLoad %float %190
+        %192 = OpConvertFToS %int %191
+        %193 = OpSLessThan %bool %192 %int_150
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %196
+        %195 = OpLabel
+               OpStore %int_i %int_1
+               OpBranch %197
+        %197 = OpLabel
+               OpLoopMerge %198 %199 None
+               OpBranch %200
+        %200 = OpLabel
+        %201 = OpLoad %int %int_i
+        %202 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %203 = OpLoad %float %202
+        %204 = OpConvertFToS %int %203
+        %205 = OpSGreaterThan %bool %201 %204
+               OpBranchConditional %205 %206 %198
+        %206 = OpLabel
+               OpKill
+        %199 = OpLabel
+               OpBranch %197
+        %198 = OpLabel
+               OpBranch %194
+        %196 = OpLabel
+        %207 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %208 = OpLoad %float %207
+        %209 = OpConvertFToS %int %208
+        %210 = OpSLessThan %bool %209 %int_180
+               OpSelectionMerge %211 None
+               OpBranchConditional %210 %212 %213
+        %212 = OpLabel
+        %214 = OpAccessChain %_ptr_Private_int %data %int_5
+        %215 = OpLoad %int %214
+        %216 = OpConvertSToF %float %215
+        %217 = OpFDiv %float %216 %float_10
+        %218 = OpFAdd %float %float_0_5 %217
+               OpStore %grey %218
+               OpBranch %211
+        %213 = OpLabel
+        %219 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %220 = OpLoad %float %219
+        %221 = OpConvertFToS %int %220
+        %222 = OpSLessThan %bool %221 %int_210
+               OpSelectionMerge %223 None
+               OpBranchConditional %222 %224 %225
+        %224 = OpLabel
+        %226 = OpAccessChain %_ptr_Private_int %data %int_6
+        %227 = OpLoad %int %226
+        %228 = OpConvertSToF %float %227
+        %229 = OpFDiv %float %228 %float_10
+        %230 = OpFAdd %float %float_0_5 %229
+               OpStore %grey %230
+               OpBranch %223
+        %225 = OpLabel
+        %231 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %232 = OpLoad %float %231
+        %233 = OpConvertFToS %int %232
+        %234 = OpSLessThan %bool %233 %int_240
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %237
+        %236 = OpLabel
+        %238 = OpAccessChain %_ptr_Private_int %data %int_7
+        %239 = OpLoad %int %238
+        %240 = OpConvertSToF %float %239
+        %241 = OpFDiv %float %240 %float_10
+        %242 = OpFAdd %float %float_0_5 %241
+               OpStore %grey %242
+               OpBranch %235
+        %237 = OpLabel
+        %243 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %244 = OpLoad %float %243
+        %245 = OpConvertFToS %int %244
+        %246 = OpSLessThan %bool %245 %int_270
+               OpSelectionMerge %247 None
+               OpBranchConditional %246 %248 %249
+        %248 = OpLabel
+        %250 = OpAccessChain %_ptr_Private_int %data %int_8
+        %251 = OpLoad %int %250
+        %252 = OpConvertSToF %float %251
+        %253 = OpFDiv %float %252 %float_10
+        %254 = OpFAdd %float %float_0_5 %253
+               OpStore %grey %254
+               OpBranch %247
+        %249 = OpLabel
+               OpKill
+        %247 = OpLabel
+               OpBranch %235
+        %235 = OpLabel
+               OpBranch %223
+        %223 = OpLabel
+               OpBranch %211
+        %211 = OpLabel
+               OpBranch %194
+        %194 = OpLabel
+               OpBranch %182
+        %182 = OpLabel
+               OpBranch %170
+        %170 = OpLabel
+               OpBranch %158
+        %158 = OpLabel
+               OpBranch %146
+        %146 = OpLabel
+        %255 = OpLoad %float %grey
+        %256 = OpCompositeConstruct %v3float %255 %255 %255
+        %257 = OpCompositeExtract %float %256 0
+        %258 = OpCompositeExtract %float %256 1
+        %259 = OpCompositeExtract %float %256 2
+        %260 = OpCompositeConstruct %v4float %257 %258 %259 %float_1
+               OpStore %_GLF_color %260
+               OpReturn
+               OpFunctionEnd
+%merge_i1_i1_i1_ = OpFunction %void None %36
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+        %261 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %262 = OpLoad %int %from
+               OpStore %k %262
+        %263 = OpLoad %int %from
+               OpStore %i %263
+        %264 = OpLoad %int %mid
+        %265 = OpIAdd %int %264 %int_1
+               OpStore %j %265
+               OpBranch %266
+        %266 = OpLabel
+               OpLoopMerge %267 %268 None
+               OpBranch %269
+        %269 = OpLabel
+        %270 = OpLoad %int %i
+        %271 = OpLoad %int %mid
+        %272 = OpSLessThanEqual %bool %270 %271
+        %273 = OpLoad %int %j
+        %274 = OpLoad %int %to
+        %275 = OpSLessThanEqual %bool %273 %274
+        %276 = OpLogicalAnd %bool %272 %275
+               OpBranchConditional %276 %277 %267
+        %277 = OpLabel
+        %278 = OpLoad %int %i
+        %279 = OpAccessChain %_ptr_Private_int %data %278
+        %280 = OpLoad %int %279
+        %281 = OpLoad %int %j
+        %282 = OpAccessChain %_ptr_Private_int %data %281
+        %283 = OpLoad %int %282
+        %284 = OpSLessThan %bool %280 %283
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %287
+        %286 = OpLabel
+        %288 = OpLoad %int %k
+        %289 = OpIAdd %int %288 %int_1
+               OpStore %k %289
+        %290 = OpLoad %int %i
+        %291 = OpIAdd %int %290 %int_1
+               OpStore %i %291
+        %292 = OpAccessChain %_ptr_Private_int %data %290
+        %293 = OpLoad %int %292
+        %294 = OpAccessChain %_ptr_Private_int %temp %288
+               OpStore %294 %293
+               OpBranch %285
+        %287 = OpLabel
+        %295 = OpLoad %int %k
+        %296 = OpIAdd %int %295 %int_1
+               OpStore %k %296
+        %297 = OpLoad %int %j
+        %298 = OpIAdd %int %297 %int_1
+               OpStore %j %298
+        %299 = OpAccessChain %_ptr_Private_int %data %297
+        %300 = OpLoad %int %299
+        %301 = OpAccessChain %_ptr_Private_int %temp %295
+               OpStore %301 %300
+               OpBranch %285
+        %285 = OpLabel
+               OpBranch %268
+        %268 = OpLabel
+               OpBranch %266
+        %267 = OpLabel
+               OpBranch %302
+        %302 = OpLabel
+               OpLoopMerge %303 %304 None
+               OpBranch %305
+        %305 = OpLabel
+        %306 = OpLoad %int %i
+        %307 = OpSLessThan %bool %306 %int_10
+        %308 = OpLoad %int %i
+        %309 = OpLoad %int %mid
+        %310 = OpSLessThanEqual %bool %308 %309
+        %311 = OpLogicalAnd %bool %307 %310
+               OpBranchConditional %311 %312 %303
+        %312 = OpLabel
+        %313 = OpLoad %int %k
+        %314 = OpIAdd %int %313 %int_1
+               OpStore %k %314
+        %315 = OpLoad %int %i
+        %316 = OpIAdd %int %315 %int_1
+               OpStore %i %316
+        %317 = OpAccessChain %_ptr_Private_int %data %315
+        %318 = OpLoad %int %317
+        %319 = OpAccessChain %_ptr_Private_int %temp %313
+               OpStore %319 %318
+               OpBranch %304
+        %304 = OpLabel
+               OpBranch %302
+        %303 = OpLabel
+        %320 = OpLoad %int %from
+               OpStore %i_0 %320
+               OpBranch %321
+        %321 = OpLabel
+               OpLoopMerge %322 %323 None
+               OpBranch %324
+        %324 = OpLabel
+        %325 = OpLoad %int %i_0
+        %326 = OpLoad %int %to
+        %327 = OpSLessThanEqual %bool %325 %326
+               OpBranchConditional %327 %328 %322
+        %328 = OpLabel
+        %329 = OpLoad %int %i_0
+        %330 = OpLoad %int %i_0
+        %331 = OpAccessChain %_ptr_Private_int %temp %330
+        %332 = OpLoad %int %331
+        %333 = OpAccessChain %_ptr_Private_int %data %329
+               OpStore %333 %332
+               OpBranch %323
+        %323 = OpLabel
+        %334 = OpLoad %int %i_0
+        %335 = OpIAdd %int %334 %int_1
+               OpStore %i_0 %335
+               OpBranch %321
+        %322 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %33
+        %336 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function
+       %high = OpVariable %_ptr_Function_int Function
+          %m = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+     %from_0 = OpVariable %_ptr_Function_int Function
+      %mid_0 = OpVariable %_ptr_Function_int Function
+       %to_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %337
+        %337 = OpLabel
+               OpLoopMerge %338 %339 None
+               OpBranch %340
+        %340 = OpLabel
+        %341 = OpLoad %int %m
+        %342 = OpLoad %int %high
+        %343 = OpSLessThanEqual %bool %341 %342
+               OpBranchConditional %343 %344 %338
+        %344 = OpLabel
+        %345 = OpLoad %int %low
+               OpStore %i_1 %345
+               OpBranch %346
+        %346 = OpLabel
+               OpLoopMerge %347 %348 None
+               OpBranch %349
+        %349 = OpLabel
+        %350 = OpLoad %int %i_1
+        %351 = OpLoad %int %high
+        %352 = OpSLessThan %bool %350 %351
+               OpBranchConditional %352 %353 %347
+        %353 = OpLabel
+        %354 = OpLoad %int %i_1
+               OpStore %from_0 %354
+        %355 = OpLoad %int %i_1
+        %356 = OpLoad %int %m
+        %357 = OpIAdd %int %355 %356
+        %358 = OpISub %int %357 %int_1
+               OpStore %mid_0 %358
+        %359 = OpLoad %int %i_1
+        %360 = OpLoad %int %m
+        %361 = OpIMul %int %int_2 %360
+        %362 = OpIAdd %int %359 %361
+        %363 = OpISub %int %362 %int_1
+        %364 = OpLoad %int %high
+        %365 = OpExtInst %int %1 SMin %363 %364
+               OpStore %to_0 %365
+        %366 = OpLoad %int %from_0
+               OpStore %param %366
+        %367 = OpLoad %int %mid_0
+               OpStore %param_0 %367
+        %368 = OpLoad %int %to_0
+               OpStore %param_1 %368
+        %369 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_0 %param_1
+               OpBranch %348
+        %348 = OpLabel
+        %370 = OpLoad %int %m
+        %371 = OpIMul %int %int_2 %370
+        %372 = OpLoad %int %i_1
+        %373 = OpIAdd %int %372 %371
+               OpStore %i_1 %373
+               OpBranch %346
+        %347 = OpLabel
+               OpBranch %339
+        %339 = OpLabel
+        %374 = OpLoad %int %m
+        %375 = OpIMul %int %int_2 %374
+               OpStore %m %375
+               OpBranch %337
+        %338 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..347df10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.hlsl
@@ -0,0 +1,278 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_262 = from;
+  k = x_262;
+  const int x_263 = from;
+  i = x_263;
+  const int x_264 = mid;
+  j = (x_264 + 1);
+  while (true) {
+    const int x_270 = i;
+    const int x_271 = mid;
+    const int x_273 = j;
+    const int x_274 = to;
+    bool tint_tmp = (x_270 <= x_271);
+    if (tint_tmp) {
+      tint_tmp = (x_273 <= x_274);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_280 = data[i];
+    const int x_283 = data[j];
+    if ((x_280 < x_283)) {
+      const int x_288 = k;
+      k = (x_288 + 1);
+      const int x_290 = i;
+      i = (x_290 + 1);
+      const int x_293 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      const int x_295 = k;
+      k = (x_295 + 1);
+      const int x_297 = j;
+      j = (x_297 + 1);
+      const int x_300 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  while (true) {
+    const int x_306 = i;
+    const int x_308 = i;
+    const int x_309 = mid;
+    bool tint_tmp_1 = (x_306 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_308 <= x_309);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_313 = k;
+    k = (x_313 + 1);
+    const int x_315 = i;
+    i = (x_315 + 1);
+    const int x_318 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  const int x_320 = from;
+  i_1 = x_320;
+  while (true) {
+    const int x_325 = i_1;
+    const int x_326 = to;
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    const int x_329 = i_1;
+    const int x_332 = temp[i_1];
+    data[x_329] = x_332;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  int int_i = 0;
+  const float x_85 = asfloat(x_28[0].x);
+  i_3 = int(x_85);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_134 = j_1;
+      const int x_137 = data[j_1];
+      temp[x_134] = x_137;
+    }
+  }
+  mergeSort_();
+  const float x_143 = gl_FragCoord.y;
+  if ((int(x_143) < 30)) {
+    const int x_150 = data[0];
+    grey = (0.5f + (float(x_150) / 10.0f));
+  } else {
+    const float x_155 = gl_FragCoord.y;
+    if ((int(x_155) < 60)) {
+      const int x_162 = data[1];
+      grey = (0.5f + (float(x_162) / 10.0f));
+    } else {
+      const float x_167 = gl_FragCoord.y;
+      if ((int(x_167) < 90)) {
+        const int x_174 = data[2];
+        grey = (0.5f + (float(x_174) / 10.0f));
+      } else {
+        const float x_179 = gl_FragCoord.y;
+        if ((int(x_179) < 120)) {
+          const int x_186 = data[3];
+          grey = (0.5f + (float(x_186) / 10.0f));
+        } else {
+          const float x_191 = gl_FragCoord.y;
+          if ((int(x_191) < 150)) {
+            int_i = 1;
+            while (true) {
+              const int x_201 = int_i;
+              const float x_203 = asfloat(x_28[0].x);
+              if ((x_201 > int(x_203))) {
+              } else {
+                break;
+              }
+              discard;
+            }
+          } else {
+            const float x_208 = gl_FragCoord.y;
+            if ((int(x_208) < 180)) {
+              const int x_215 = data[5];
+              grey = (0.5f + (float(x_215) / 10.0f));
+            } else {
+              const float x_220 = gl_FragCoord.y;
+              if ((int(x_220) < 210)) {
+                const int x_227 = data[6];
+                grey = (0.5f + (float(x_227) / 10.0f));
+              } else {
+                const float x_232 = gl_FragCoord.y;
+                if ((int(x_232) < 240)) {
+                  const int x_239 = data[7];
+                  grey = (0.5f + (float(x_239) / 10.0f));
+                } else {
+                  const float x_244 = gl_FragCoord.y;
+                  if ((int(x_244) < 270)) {
+                    const int x_251 = data[8];
+                    grey = (0.5f + (float(x_251) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_255 = grey;
+  const float3 x_256 = float3(x_255, x_255, x_255);
+  x_GLF_color = float4(x_256.x, x_256.y, x_256.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.msl
new file mode 100644
index 0000000..23be1b2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.msl
@@ -0,0 +1,324 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_262 = *(from);
+  k = x_262;
+  int const x_263 = *(from);
+  i = x_263;
+  int const x_264 = *(mid);
+  j = (x_264 + 1);
+  while (true) {
+    int const x_270 = i;
+    int const x_271 = *(mid);
+    int const x_273 = j;
+    int const x_274 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    int const x_278 = i;
+    int const x_280 = (*(tint_symbol_5)).arr[x_278];
+    int const x_281 = j;
+    int const x_283 = (*(tint_symbol_5)).arr[x_281];
+    if ((x_280 < x_283)) {
+      int const x_288 = k;
+      k = (x_288 + 1);
+      int const x_290 = i;
+      i = (x_290 + 1);
+      int const x_293 = (*(tint_symbol_5)).arr[x_290];
+      (*(tint_symbol_6)).arr[x_288] = x_293;
+    } else {
+      int const x_295 = k;
+      k = (x_295 + 1);
+      int const x_297 = j;
+      j = (x_297 + 1);
+      int const x_300 = (*(tint_symbol_5)).arr[x_297];
+      (*(tint_symbol_6)).arr[x_295] = x_300;
+    }
+  }
+  while (true) {
+    int const x_306 = i;
+    int const x_308 = i;
+    int const x_309 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    int const x_313 = k;
+    k = (x_313 + 1);
+    int const x_315 = i;
+    i = (x_315 + 1);
+    int const x_318 = (*(tint_symbol_5)).arr[x_315];
+    (*(tint_symbol_6)).arr[x_313] = x_318;
+  }
+  int const x_320 = *(from);
+  i_1 = x_320;
+  while (true) {
+    int const x_325 = i_1;
+    int const x_326 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    int const x_329 = i_1;
+    int const x_330 = i_1;
+    int const x_332 = (*(tint_symbol_6)).arr[x_330];
+    (*(tint_symbol_5)).arr[x_329] = x_332;
+    {
+      int const x_334 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_341 = m;
+    int const x_342 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    int const x_345 = low;
+    i_2 = x_345;
+    while (true) {
+      int const x_350 = i_2;
+      int const x_351 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      int const x_354 = i_2;
+      from_1 = x_354;
+      int const x_355 = i_2;
+      int const x_356 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      int const x_359 = i_2;
+      int const x_360 = m;
+      int const x_364 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      int const x_366 = from_1;
+      param = x_366;
+      int const x_367 = mid_1;
+      param_1 = x_367;
+      int const x_368 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_370 = m;
+        int const x_372 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+    {
+      int const x_374 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  int int_i = 0;
+  float const x_85 = x_28.injectionSwitch.x;
+  i_3 = int(x_85);
+  while (true) {
+    int const x_91 = i_3;
+    switch(x_91) {
+      case 9: {
+        int const x_121 = i_3;
+        (*(tint_symbol_9)).arr[x_121] = -5;
+        break;
+      }
+      case 8: {
+        int const x_119 = i_3;
+        (*(tint_symbol_9)).arr[x_119] = -4;
+        break;
+      }
+      case 7: {
+        int const x_117 = i_3;
+        (*(tint_symbol_9)).arr[x_117] = -3;
+        break;
+      }
+      case 6: {
+        int const x_115 = i_3;
+        (*(tint_symbol_9)).arr[x_115] = -2;
+        break;
+      }
+      case 5: {
+        int const x_113 = i_3;
+        (*(tint_symbol_9)).arr[x_113] = -1;
+        break;
+      }
+      case 4: {
+        int const x_111 = i_3;
+        (*(tint_symbol_9)).arr[x_111] = 0;
+        break;
+      }
+      case 3: {
+        int const x_109 = i_3;
+        (*(tint_symbol_9)).arr[x_109] = 1;
+        break;
+      }
+      case 2: {
+        int const x_107 = i_3;
+        (*(tint_symbol_9)).arr[x_107] = 2;
+        break;
+      }
+      case 1: {
+        int const x_105 = i_3;
+        (*(tint_symbol_9)).arr[x_105] = 3;
+        break;
+      }
+      case 0: {
+        int const x_103 = i_3;
+        (*(tint_symbol_9)).arr[x_103] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_123 = i_3;
+    i_3 = (x_123 + 1);
+    {
+      int const x_125 = i_3;
+      if ((x_125 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_131 = j_1;
+    if ((x_131 < 10)) {
+    } else {
+      break;
+    }
+    int const x_134 = j_1;
+    int const x_135 = j_1;
+    int const x_137 = (*(tint_symbol_9)).arr[x_135];
+    (*(tint_symbol_10)).arr[x_134] = x_137;
+    {
+      int const x_139 = j_1;
+      j_1 = (x_139 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_143 = (*(tint_symbol_11)).y;
+  if ((int(x_143) < 30)) {
+    int const x_150 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_150) / 10.0f));
+  } else {
+    float const x_155 = (*(tint_symbol_11)).y;
+    if ((int(x_155) < 60)) {
+      int const x_162 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_162) / 10.0f));
+    } else {
+      float const x_167 = (*(tint_symbol_11)).y;
+      if ((int(x_167) < 90)) {
+        int const x_174 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_174) / 10.0f));
+      } else {
+        float const x_179 = (*(tint_symbol_11)).y;
+        if ((int(x_179) < 120)) {
+          int const x_186 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_186) / 10.0f));
+        } else {
+          float const x_191 = (*(tint_symbol_11)).y;
+          if ((int(x_191) < 150)) {
+            int_i = 1;
+            while (true) {
+              int const x_201 = int_i;
+              float const x_203 = x_28.injectionSwitch.x;
+              if ((x_201 > int(x_203))) {
+              } else {
+                break;
+              }
+              discard_fragment();
+            }
+          } else {
+            float const x_208 = (*(tint_symbol_11)).y;
+            if ((int(x_208) < 180)) {
+              int const x_215 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_215) / 10.0f));
+            } else {
+              float const x_220 = (*(tint_symbol_11)).y;
+              if ((int(x_220) < 210)) {
+                int const x_227 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_227) / 10.0f));
+              } else {
+                float const x_232 = (*(tint_symbol_11)).y;
+                if ((int(x_232) < 240)) {
+                  int const x_239 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_239) / 10.0f));
+                } else {
+                  float const x_244 = (*(tint_symbol_11)).y;
+                  if ((int(x_244) < 270)) {
+                    int const x_251 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_251) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_255 = grey;
+  float3 const x_256 = float3(x_255, x_255, x_255);
+  *(tint_symbol_12) = float4(x_256.x, x_256.y, x_256.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..6b57991
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.spvasm
@@ -0,0 +1,673 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 429
+; Schema: 0
+               OpCapability Shader
+        %177 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %int_i "int_i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %201 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %416 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %134 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %m
+        %152 = OpLoad %int %high
+        %153 = OpSLessThanEqual %bool %151 %152
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %148
+        %154 = OpLabel
+        %157 = OpLoad %int %low
+               OpStore %i_2 %157
+               OpBranch %158
+        %158 = OpLabel
+               OpLoopMerge %159 %160 None
+               OpBranch %161
+        %161 = OpLabel
+        %162 = OpLoad %int %i_2
+        %163 = OpLoad %int %high
+        %164 = OpSLessThan %bool %162 %163
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %167
+        %166 = OpLabel
+               OpBranch %165
+        %167 = OpLabel
+               OpBranch %159
+        %165 = OpLabel
+        %168 = OpLoad %int %i_2
+               OpStore %from_1 %168
+        %169 = OpLoad %int %i_2
+        %170 = OpLoad %int %m
+        %171 = OpIAdd %int %169 %170
+        %172 = OpISub %int %171 %int_1
+               OpStore %mid_1 %172
+        %173 = OpLoad %int %i_2
+        %174 = OpLoad %int %m
+        %175 = OpLoad %int %high
+        %179 = OpIMul %int %int_2 %174
+        %180 = OpIAdd %int %173 %179
+        %181 = OpISub %int %180 %int_1
+        %176 = OpExtInst %int %177 SMin %181 %175
+               OpStore %to_1 %176
+        %182 = OpLoad %int %from_1
+               OpStore %param %182
+        %183 = OpLoad %int %mid_1
+               OpStore %param_1 %183
+        %184 = OpLoad %int %to_1
+               OpStore %param_2 %184
+        %185 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %160
+        %160 = OpLabel
+        %189 = OpLoad %int %m
+        %190 = OpLoad %int %i_2
+        %191 = OpIMul %int %int_2 %189
+        %192 = OpIAdd %int %190 %191
+               OpStore %i_2 %192
+               OpBranch %158
+        %159 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %193 = OpLoad %int %m
+        %194 = OpIMul %int %int_2 %193
+               OpStore %m %194
+               OpBranch %147
+        %148 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %196 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %201
+      %int_i = OpVariable %_ptr_Function_int Function %32
+        %205 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %206 = OpLoad %float %205
+        %207 = OpConvertFToS %int %206
+               OpStore %i_3 %207
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %i_3
+               OpSelectionMerge %213 None
+               OpSwitch %212 %214 9 %215 8 %216 7 %217 6 %218 5 %219 4 %220 3 %221 2 %222 1 %223 0 %224
+        %215 = OpLabel
+        %225 = OpLoad %int %i_3
+        %226 = OpAccessChain %_ptr_Private_int %data %225
+               OpStore %226 %int_n5
+               OpBranch %213
+        %216 = OpLabel
+        %228 = OpLoad %int %i_3
+        %229 = OpAccessChain %_ptr_Private_int %data %228
+               OpStore %229 %int_n4
+               OpBranch %213
+        %217 = OpLabel
+        %231 = OpLoad %int %i_3
+        %232 = OpAccessChain %_ptr_Private_int %data %231
+               OpStore %232 %int_n3
+               OpBranch %213
+        %218 = OpLabel
+        %234 = OpLoad %int %i_3
+        %235 = OpAccessChain %_ptr_Private_int %data %234
+               OpStore %235 %int_n2
+               OpBranch %213
+        %219 = OpLabel
+        %237 = OpLoad %int %i_3
+        %238 = OpAccessChain %_ptr_Private_int %data %237
+               OpStore %238 %int_n1
+               OpBranch %213
+        %220 = OpLabel
+        %240 = OpLoad %int %i_3
+        %241 = OpAccessChain %_ptr_Private_int %data %240
+               OpStore %241 %int_0
+               OpBranch %213
+        %221 = OpLabel
+        %242 = OpLoad %int %i_3
+        %243 = OpAccessChain %_ptr_Private_int %data %242
+               OpStore %243 %int_1
+               OpBranch %213
+        %222 = OpLabel
+        %244 = OpLoad %int %i_3
+        %245 = OpAccessChain %_ptr_Private_int %data %244
+               OpStore %245 %int_2
+               OpBranch %213
+        %223 = OpLabel
+        %246 = OpLoad %int %i_3
+        %247 = OpAccessChain %_ptr_Private_int %data %246
+               OpStore %247 %int_3
+               OpBranch %213
+        %224 = OpLabel
+        %249 = OpLoad %int %i_3
+        %250 = OpAccessChain %_ptr_Private_int %data %249
+               OpStore %250 %int_4
+               OpBranch %213
+        %214 = OpLabel
+               OpBranch %213
+        %213 = OpLabel
+        %252 = OpLoad %int %i_3
+        %253 = OpIAdd %int %252 %int_1
+               OpStore %i_3 %253
+               OpBranch %210
+        %210 = OpLabel
+        %254 = OpLoad %int %i_3
+        %255 = OpSLessThan %bool %254 %int_10
+               OpSelectionMerge %256 None
+               OpBranchConditional %255 %257 %258
+        %257 = OpLabel
+               OpBranch %256
+        %258 = OpLabel
+               OpBranch %209
+        %256 = OpLabel
+               OpBranch %208
+        %209 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %259
+        %259 = OpLabel
+               OpLoopMerge %260 %261 None
+               OpBranch %262
+        %262 = OpLabel
+        %263 = OpLoad %int %j_1
+        %264 = OpSLessThan %bool %263 %int_10
+               OpSelectionMerge %265 None
+               OpBranchConditional %264 %266 %267
+        %266 = OpLabel
+               OpBranch %265
+        %267 = OpLabel
+               OpBranch %260
+        %265 = OpLabel
+        %268 = OpLoad %int %j_1
+        %269 = OpLoad %int %j_1
+        %270 = OpAccessChain %_ptr_Private_int %data %269
+        %271 = OpLoad %int %270
+        %272 = OpAccessChain %_ptr_Private_int %temp %268
+               OpStore %272 %271
+               OpBranch %261
+        %261 = OpLabel
+        %273 = OpLoad %int %j_1
+        %274 = OpIAdd %int %273 %int_1
+               OpStore %j_1 %274
+               OpBranch %259
+        %260 = OpLabel
+        %275 = OpFunctionCall %void %mergeSort_
+        %278 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %279 = OpLoad %float %278
+        %280 = OpConvertFToS %int %279
+        %282 = OpSLessThan %bool %280 %int_30
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %285
+        %284 = OpLabel
+        %286 = OpAccessChain %_ptr_Private_int %data %int_0
+        %287 = OpLoad %int %286
+        %289 = OpConvertSToF %float %287
+        %291 = OpFDiv %float %289 %float_10
+        %292 = OpFAdd %float %float_0_5 %291
+               OpStore %grey %292
+               OpBranch %283
+        %285 = OpLabel
+        %293 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %294 = OpLoad %float %293
+        %295 = OpConvertFToS %int %294
+        %297 = OpSLessThan %bool %295 %int_60
+               OpSelectionMerge %298 None
+               OpBranchConditional %297 %299 %300
+        %299 = OpLabel
+        %301 = OpAccessChain %_ptr_Private_int %data %int_1
+        %302 = OpLoad %int %301
+        %303 = OpConvertSToF %float %302
+        %304 = OpFDiv %float %303 %float_10
+        %305 = OpFAdd %float %float_0_5 %304
+               OpStore %grey %305
+               OpBranch %298
+        %300 = OpLabel
+        %306 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %307 = OpLoad %float %306
+        %308 = OpConvertFToS %int %307
+        %310 = OpSLessThan %bool %308 %int_90
+               OpSelectionMerge %311 None
+               OpBranchConditional %310 %312 %313
+        %312 = OpLabel
+        %314 = OpAccessChain %_ptr_Private_int %data %int_2
+        %315 = OpLoad %int %314
+        %316 = OpConvertSToF %float %315
+        %317 = OpFDiv %float %316 %float_10
+        %318 = OpFAdd %float %float_0_5 %317
+               OpStore %grey %318
+               OpBranch %311
+        %313 = OpLabel
+        %319 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %320 = OpLoad %float %319
+        %321 = OpConvertFToS %int %320
+        %323 = OpSLessThan %bool %321 %int_120
+               OpSelectionMerge %324 None
+               OpBranchConditional %323 %325 %326
+        %325 = OpLabel
+        %327 = OpAccessChain %_ptr_Private_int %data %int_3
+        %328 = OpLoad %int %327
+        %329 = OpConvertSToF %float %328
+        %330 = OpFDiv %float %329 %float_10
+        %331 = OpFAdd %float %float_0_5 %330
+               OpStore %grey %331
+               OpBranch %324
+        %326 = OpLabel
+        %332 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %333 = OpLoad %float %332
+        %334 = OpConvertFToS %int %333
+        %336 = OpSLessThan %bool %334 %int_150
+               OpSelectionMerge %337 None
+               OpBranchConditional %336 %338 %339
+        %338 = OpLabel
+               OpStore %int_i %int_1
+               OpBranch %340
+        %340 = OpLabel
+               OpLoopMerge %341 %342 None
+               OpBranch %343
+        %343 = OpLabel
+        %344 = OpLoad %int %int_i
+        %345 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %346 = OpLoad %float %345
+        %347 = OpConvertFToS %int %346
+        %348 = OpSGreaterThan %bool %344 %347
+               OpSelectionMerge %349 None
+               OpBranchConditional %348 %350 %351
+        %350 = OpLabel
+               OpBranch %349
+        %351 = OpLabel
+               OpBranch %341
+        %349 = OpLabel
+               OpKill
+        %342 = OpLabel
+               OpBranch %340
+        %341 = OpLabel
+               OpBranch %337
+        %339 = OpLabel
+        %352 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %353 = OpLoad %float %352
+        %354 = OpConvertFToS %int %353
+        %356 = OpSLessThan %bool %354 %int_180
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %359
+        %358 = OpLabel
+        %361 = OpAccessChain %_ptr_Private_int %data %int_5
+        %362 = OpLoad %int %361
+        %363 = OpConvertSToF %float %362
+        %364 = OpFDiv %float %363 %float_10
+        %365 = OpFAdd %float %float_0_5 %364
+               OpStore %grey %365
+               OpBranch %357
+        %359 = OpLabel
+        %366 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %367 = OpLoad %float %366
+        %368 = OpConvertFToS %int %367
+        %370 = OpSLessThan %bool %368 %int_210
+               OpSelectionMerge %371 None
+               OpBranchConditional %370 %372 %373
+        %372 = OpLabel
+        %375 = OpAccessChain %_ptr_Private_int %data %int_6
+        %376 = OpLoad %int %375
+        %377 = OpConvertSToF %float %376
+        %378 = OpFDiv %float %377 %float_10
+        %379 = OpFAdd %float %float_0_5 %378
+               OpStore %grey %379
+               OpBranch %371
+        %373 = OpLabel
+        %380 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %381 = OpLoad %float %380
+        %382 = OpConvertFToS %int %381
+        %384 = OpSLessThan %bool %382 %int_240
+               OpSelectionMerge %385 None
+               OpBranchConditional %384 %386 %387
+        %386 = OpLabel
+        %389 = OpAccessChain %_ptr_Private_int %data %int_7
+        %390 = OpLoad %int %389
+        %391 = OpConvertSToF %float %390
+        %392 = OpFDiv %float %391 %float_10
+        %393 = OpFAdd %float %float_0_5 %392
+               OpStore %grey %393
+               OpBranch %385
+        %387 = OpLabel
+        %394 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %395 = OpLoad %float %394
+        %396 = OpConvertFToS %int %395
+        %398 = OpSLessThan %bool %396 %int_270
+               OpSelectionMerge %399 None
+               OpBranchConditional %398 %400 %401
+        %400 = OpLabel
+        %403 = OpAccessChain %_ptr_Private_int %data %int_8
+        %404 = OpLoad %int %403
+        %405 = OpConvertSToF %float %404
+        %406 = OpFDiv %float %405 %float_10
+        %407 = OpFAdd %float %float_0_5 %406
+               OpStore %grey %407
+               OpBranch %399
+        %401 = OpLabel
+               OpKill
+        %399 = OpLabel
+               OpBranch %385
+        %385 = OpLabel
+               OpBranch %371
+        %371 = OpLabel
+               OpBranch %357
+        %357 = OpLabel
+               OpBranch %337
+        %337 = OpLabel
+               OpBranch %324
+        %324 = OpLabel
+               OpBranch %311
+        %311 = OpLabel
+               OpBranch %298
+        %298 = OpLabel
+               OpBranch %283
+        %283 = OpLabel
+        %408 = OpLoad %float %grey
+        %410 = OpCompositeConstruct %v3float %408 %408 %408
+        %411 = OpCompositeExtract %float %410 0
+        %412 = OpCompositeExtract %float %410 1
+        %413 = OpCompositeExtract %float %410 2
+        %415 = OpCompositeConstruct %v4float %411 %412 %413 %float_1
+               OpStore %x_GLF_color %415
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %416
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %420 = OpLabel
+        %421 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %421
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %423 = OpLabel
+        %424 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %424
+        %425 = OpFunctionCall %void %main_1
+        %427 = OpLoad %v4float %x_GLF_color
+        %428 = OpCompositeConstruct %main_out %427
+        %426 = OpFunctionCall %void %tint_symbol_3 %428
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 210[%210] is not post dominated by the back-edge block 256[%256]
+  %256 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..c64c646
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.spvasm.expected.wgsl
@@ -0,0 +1,316 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_262 : i32 = *(from);
+  k = x_262;
+  let x_263 : i32 = *(from);
+  i = x_263;
+  let x_264 : i32 = *(mid);
+  j = (x_264 + 1);
+  loop {
+    let x_270 : i32 = i;
+    let x_271 : i32 = *(mid);
+    let x_273 : i32 = j;
+    let x_274 : i32 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    let x_278 : i32 = i;
+    let x_280 : i32 = data[x_278];
+    let x_281 : i32 = j;
+    let x_283 : i32 = data[x_281];
+    if ((x_280 < x_283)) {
+      let x_288 : i32 = k;
+      k = (x_288 + 1);
+      let x_290 : i32 = i;
+      i = (x_290 + 1);
+      let x_293 : i32 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      let x_295 : i32 = k;
+      k = (x_295 + 1);
+      let x_297 : i32 = j;
+      j = (x_297 + 1);
+      let x_300 : i32 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  loop {
+    let x_306 : i32 = i;
+    let x_308 : i32 = i;
+    let x_309 : i32 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    let x_313 : i32 = k;
+    k = (x_313 + 1);
+    let x_315 : i32 = i;
+    i = (x_315 + 1);
+    let x_318 : i32 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  let x_320 : i32 = *(from);
+  i_1 = x_320;
+  loop {
+    let x_325 : i32 = i_1;
+    let x_326 : i32 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    let x_329 : i32 = i_1;
+    let x_330 : i32 = i_1;
+    let x_332 : i32 = temp[x_330];
+    data[x_329] = x_332;
+
+    continuing {
+      let x_334 : i32 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_341 : i32 = m;
+    let x_342 : i32 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    let x_345 : i32 = low;
+    i_2 = x_345;
+    loop {
+      let x_350 : i32 = i_2;
+      let x_351 : i32 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      let x_354 : i32 = i_2;
+      from_1 = x_354;
+      let x_355 : i32 = i_2;
+      let x_356 : i32 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      let x_359 : i32 = i_2;
+      let x_360 : i32 = m;
+      let x_364 : i32 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      let x_366 : i32 = from_1;
+      param = x_366;
+      let x_367 : i32 = mid_1;
+      param_1 = x_367;
+      let x_368 : i32 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_370 : i32 = m;
+        let x_372 : i32 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+
+    continuing {
+      let x_374 : i32 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  var int_i : i32;
+  let x_85 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_85);
+  loop {
+    let x_91 : i32 = i_3;
+    switch(x_91) {
+      case 9: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -5;
+      }
+      case 8: {
+        let x_119 : i32 = i_3;
+        data[x_119] = -4;
+      }
+      case 7: {
+        let x_117 : i32 = i_3;
+        data[x_117] = -3;
+      }
+      case 6: {
+        let x_115 : i32 = i_3;
+        data[x_115] = -2;
+      }
+      case 5: {
+        let x_113 : i32 = i_3;
+        data[x_113] = -1;
+      }
+      case 4: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 0;
+      }
+      case 3: {
+        let x_109 : i32 = i_3;
+        data[x_109] = 1;
+      }
+      case 2: {
+        let x_107 : i32 = i_3;
+        data[x_107] = 2;
+      }
+      case 1: {
+        let x_105 : i32 = i_3;
+        data[x_105] = 3;
+      }
+      case 0: {
+        let x_103 : i32 = i_3;
+        data[x_103] = 4;
+      }
+      default: {
+      }
+    }
+    let x_123 : i32 = i_3;
+    i_3 = (x_123 + 1);
+
+    continuing {
+      let x_125 : i32 = i_3;
+      if ((x_125 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_131 : i32 = j_1;
+    if ((x_131 < 10)) {
+    } else {
+      break;
+    }
+    let x_134 : i32 = j_1;
+    let x_135 : i32 = j_1;
+    let x_137 : i32 = data[x_135];
+    temp[x_134] = x_137;
+
+    continuing {
+      let x_139 : i32 = j_1;
+      j_1 = (x_139 + 1);
+    }
+  }
+  mergeSort_();
+  let x_143 : f32 = gl_FragCoord.y;
+  if ((i32(x_143) < 30)) {
+    let x_150 : i32 = data[0];
+    grey = (0.5 + (f32(x_150) / 10.0));
+  } else {
+    let x_155 : f32 = gl_FragCoord.y;
+    if ((i32(x_155) < 60)) {
+      let x_162 : i32 = data[1];
+      grey = (0.5 + (f32(x_162) / 10.0));
+    } else {
+      let x_167 : f32 = gl_FragCoord.y;
+      if ((i32(x_167) < 90)) {
+        let x_174 : i32 = data[2];
+        grey = (0.5 + (f32(x_174) / 10.0));
+      } else {
+        let x_179 : f32 = gl_FragCoord.y;
+        if ((i32(x_179) < 120)) {
+          let x_186 : i32 = data[3];
+          grey = (0.5 + (f32(x_186) / 10.0));
+        } else {
+          let x_191 : f32 = gl_FragCoord.y;
+          if ((i32(x_191) < 150)) {
+            int_i = 1;
+            loop {
+              let x_201 : i32 = int_i;
+              let x_203 : f32 = x_28.injectionSwitch.x;
+              if ((x_201 > i32(x_203))) {
+              } else {
+                break;
+              }
+              discard;
+            }
+          } else {
+            let x_208 : f32 = gl_FragCoord.y;
+            if ((i32(x_208) < 180)) {
+              let x_215 : i32 = data[5];
+              grey = (0.5 + (f32(x_215) / 10.0));
+            } else {
+              let x_220 : f32 = gl_FragCoord.y;
+              if ((i32(x_220) < 210)) {
+                let x_227 : i32 = data[6];
+                grey = (0.5 + (f32(x_227) / 10.0));
+              } else {
+                let x_232 : f32 = gl_FragCoord.y;
+                if ((i32(x_232) < 240)) {
+                  let x_239 : i32 = data[7];
+                  grey = (0.5 + (f32(x_239) / 10.0));
+                } else {
+                  let x_244 : f32 = gl_FragCoord.y;
+                  if ((i32(x_244) < 270)) {
+                    let x_251 : i32 = data[8];
+                    grey = (0.5 + (f32(x_251) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_255 : f32 = grey;
+  let x_256 : vec3<f32> = vec3<f32>(x_255, x_255, x_255);
+  x_GLF_color = vec4<f32>(x_256.x, x_256.y, x_256.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
new file mode 100644
index 0000000..c64c646
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
@@ -0,0 +1,316 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_262 : i32 = *(from);
+  k = x_262;
+  let x_263 : i32 = *(from);
+  i = x_263;
+  let x_264 : i32 = *(mid);
+  j = (x_264 + 1);
+  loop {
+    let x_270 : i32 = i;
+    let x_271 : i32 = *(mid);
+    let x_273 : i32 = j;
+    let x_274 : i32 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    let x_278 : i32 = i;
+    let x_280 : i32 = data[x_278];
+    let x_281 : i32 = j;
+    let x_283 : i32 = data[x_281];
+    if ((x_280 < x_283)) {
+      let x_288 : i32 = k;
+      k = (x_288 + 1);
+      let x_290 : i32 = i;
+      i = (x_290 + 1);
+      let x_293 : i32 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      let x_295 : i32 = k;
+      k = (x_295 + 1);
+      let x_297 : i32 = j;
+      j = (x_297 + 1);
+      let x_300 : i32 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  loop {
+    let x_306 : i32 = i;
+    let x_308 : i32 = i;
+    let x_309 : i32 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    let x_313 : i32 = k;
+    k = (x_313 + 1);
+    let x_315 : i32 = i;
+    i = (x_315 + 1);
+    let x_318 : i32 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  let x_320 : i32 = *(from);
+  i_1 = x_320;
+  loop {
+    let x_325 : i32 = i_1;
+    let x_326 : i32 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    let x_329 : i32 = i_1;
+    let x_330 : i32 = i_1;
+    let x_332 : i32 = temp[x_330];
+    data[x_329] = x_332;
+
+    continuing {
+      let x_334 : i32 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_341 : i32 = m;
+    let x_342 : i32 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    let x_345 : i32 = low;
+    i_2 = x_345;
+    loop {
+      let x_350 : i32 = i_2;
+      let x_351 : i32 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      let x_354 : i32 = i_2;
+      from_1 = x_354;
+      let x_355 : i32 = i_2;
+      let x_356 : i32 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      let x_359 : i32 = i_2;
+      let x_360 : i32 = m;
+      let x_364 : i32 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      let x_366 : i32 = from_1;
+      param = x_366;
+      let x_367 : i32 = mid_1;
+      param_1 = x_367;
+      let x_368 : i32 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_370 : i32 = m;
+        let x_372 : i32 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+
+    continuing {
+      let x_374 : i32 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  var int_i : i32;
+  let x_85 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_85);
+  loop {
+    let x_91 : i32 = i_3;
+    switch(x_91) {
+      case 9: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -5;
+      }
+      case 8: {
+        let x_119 : i32 = i_3;
+        data[x_119] = -4;
+      }
+      case 7: {
+        let x_117 : i32 = i_3;
+        data[x_117] = -3;
+      }
+      case 6: {
+        let x_115 : i32 = i_3;
+        data[x_115] = -2;
+      }
+      case 5: {
+        let x_113 : i32 = i_3;
+        data[x_113] = -1;
+      }
+      case 4: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 0;
+      }
+      case 3: {
+        let x_109 : i32 = i_3;
+        data[x_109] = 1;
+      }
+      case 2: {
+        let x_107 : i32 = i_3;
+        data[x_107] = 2;
+      }
+      case 1: {
+        let x_105 : i32 = i_3;
+        data[x_105] = 3;
+      }
+      case 0: {
+        let x_103 : i32 = i_3;
+        data[x_103] = 4;
+      }
+      default: {
+      }
+    }
+    let x_123 : i32 = i_3;
+    i_3 = (x_123 + 1);
+
+    continuing {
+      let x_125 : i32 = i_3;
+      if ((x_125 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_131 : i32 = j_1;
+    if ((x_131 < 10)) {
+    } else {
+      break;
+    }
+    let x_134 : i32 = j_1;
+    let x_135 : i32 = j_1;
+    let x_137 : i32 = data[x_135];
+    temp[x_134] = x_137;
+
+    continuing {
+      let x_139 : i32 = j_1;
+      j_1 = (x_139 + 1);
+    }
+  }
+  mergeSort_();
+  let x_143 : f32 = gl_FragCoord.y;
+  if ((i32(x_143) < 30)) {
+    let x_150 : i32 = data[0];
+    grey = (0.5 + (f32(x_150) / 10.0));
+  } else {
+    let x_155 : f32 = gl_FragCoord.y;
+    if ((i32(x_155) < 60)) {
+      let x_162 : i32 = data[1];
+      grey = (0.5 + (f32(x_162) / 10.0));
+    } else {
+      let x_167 : f32 = gl_FragCoord.y;
+      if ((i32(x_167) < 90)) {
+        let x_174 : i32 = data[2];
+        grey = (0.5 + (f32(x_174) / 10.0));
+      } else {
+        let x_179 : f32 = gl_FragCoord.y;
+        if ((i32(x_179) < 120)) {
+          let x_186 : i32 = data[3];
+          grey = (0.5 + (f32(x_186) / 10.0));
+        } else {
+          let x_191 : f32 = gl_FragCoord.y;
+          if ((i32(x_191) < 150)) {
+            int_i = 1;
+            loop {
+              let x_201 : i32 = int_i;
+              let x_203 : f32 = x_28.injectionSwitch.x;
+              if ((x_201 > i32(x_203))) {
+              } else {
+                break;
+              }
+              discard;
+            }
+          } else {
+            let x_208 : f32 = gl_FragCoord.y;
+            if ((i32(x_208) < 180)) {
+              let x_215 : i32 = data[5];
+              grey = (0.5 + (f32(x_215) / 10.0));
+            } else {
+              let x_220 : f32 = gl_FragCoord.y;
+              if ((i32(x_220) < 210)) {
+                let x_227 : i32 = data[6];
+                grey = (0.5 + (f32(x_227) / 10.0));
+              } else {
+                let x_232 : f32 = gl_FragCoord.y;
+                if ((i32(x_232) < 240)) {
+                  let x_239 : i32 = data[7];
+                  grey = (0.5 + (f32(x_239) / 10.0));
+                } else {
+                  let x_244 : f32 = gl_FragCoord.y;
+                  if ((i32(x_244) < 270)) {
+                    let x_251 : i32 = data[8];
+                    grey = (0.5 + (f32(x_251) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_255 : f32 = grey;
+  let x_256 : vec3<f32> = vec3<f32>(x_255, x_255, x_255);
+  x_GLF_color = vec4<f32>(x_256.x, x_256.y, x_256.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..347df10
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.hlsl
@@ -0,0 +1,278 @@
+static int data[10] = (int[10])0;
+static int temp[10] = (int[10])0;
+cbuffer cbuffer_x_28 : register(b0, space0) {
+  uint4 x_28[1];
+};
+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 merge_i1_i1_i1_(inout int from, inout int mid, inout int to) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  const int x_262 = from;
+  k = x_262;
+  const int x_263 = from;
+  i = x_263;
+  const int x_264 = mid;
+  j = (x_264 + 1);
+  while (true) {
+    const int x_270 = i;
+    const int x_271 = mid;
+    const int x_273 = j;
+    const int x_274 = to;
+    bool tint_tmp = (x_270 <= x_271);
+    if (tint_tmp) {
+      tint_tmp = (x_273 <= x_274);
+    }
+    if ((tint_tmp)) {
+    } else {
+      break;
+    }
+    const int x_280 = data[i];
+    const int x_283 = data[j];
+    if ((x_280 < x_283)) {
+      const int x_288 = k;
+      k = (x_288 + 1);
+      const int x_290 = i;
+      i = (x_290 + 1);
+      const int x_293 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      const int x_295 = k;
+      k = (x_295 + 1);
+      const int x_297 = j;
+      j = (x_297 + 1);
+      const int x_300 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  while (true) {
+    const int x_306 = i;
+    const int x_308 = i;
+    const int x_309 = mid;
+    bool tint_tmp_1 = (x_306 < 10);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_308 <= x_309);
+    }
+    if ((tint_tmp_1)) {
+    } else {
+      break;
+    }
+    const int x_313 = k;
+    k = (x_313 + 1);
+    const int x_315 = i;
+    i = (x_315 + 1);
+    const int x_318 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  const int x_320 = from;
+  i_1 = x_320;
+  while (true) {
+    const int x_325 = i_1;
+    const int x_326 = to;
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    const int x_329 = i_1;
+    const int x_332 = temp[i_1];
+    data[x_329] = x_332;
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_() {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  {
+    for(; (m <= high); m = (2 * m)) {
+      i_2 = low;
+      {
+        for(; (i_2 < high); i_2 = (i_2 + (2 * m))) {
+          from_1 = i_2;
+          mid_1 = ((i_2 + m) - 1);
+          to_1 = min(((i_2 + (2 * m)) - 1), high);
+          param = from_1;
+          param_1 = mid_1;
+          param_2 = to_1;
+          merge_i1_i1_i1_(param, param_1, param_2);
+        }
+      }
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  int int_i = 0;
+  const float x_85 = asfloat(x_28[0].x);
+  i_3 = int(x_85);
+  while (true) {
+    switch(i_3) {
+      case 9: {
+        data[i_3] = -5;
+        break;
+      }
+      case 8: {
+        data[i_3] = -4;
+        break;
+      }
+      case 7: {
+        data[i_3] = -3;
+        break;
+      }
+      case 6: {
+        data[i_3] = -2;
+        break;
+      }
+      case 5: {
+        data[i_3] = -1;
+        break;
+      }
+      case 4: {
+        data[i_3] = 0;
+        break;
+      }
+      case 3: {
+        data[i_3] = 1;
+        break;
+      }
+      case 2: {
+        data[i_3] = 2;
+        break;
+      }
+      case 1: {
+        data[i_3] = 3;
+        break;
+      }
+      case 0: {
+        data[i_3] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    i_3 = (i_3 + 1);
+    {
+      if ((i_3 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  {
+    for(; (j_1 < 10); j_1 = (j_1 + 1)) {
+      const int x_134 = j_1;
+      const int x_137 = data[j_1];
+      temp[x_134] = x_137;
+    }
+  }
+  mergeSort_();
+  const float x_143 = gl_FragCoord.y;
+  if ((int(x_143) < 30)) {
+    const int x_150 = data[0];
+    grey = (0.5f + (float(x_150) / 10.0f));
+  } else {
+    const float x_155 = gl_FragCoord.y;
+    if ((int(x_155) < 60)) {
+      const int x_162 = data[1];
+      grey = (0.5f + (float(x_162) / 10.0f));
+    } else {
+      const float x_167 = gl_FragCoord.y;
+      if ((int(x_167) < 90)) {
+        const int x_174 = data[2];
+        grey = (0.5f + (float(x_174) / 10.0f));
+      } else {
+        const float x_179 = gl_FragCoord.y;
+        if ((int(x_179) < 120)) {
+          const int x_186 = data[3];
+          grey = (0.5f + (float(x_186) / 10.0f));
+        } else {
+          const float x_191 = gl_FragCoord.y;
+          if ((int(x_191) < 150)) {
+            int_i = 1;
+            while (true) {
+              const int x_201 = int_i;
+              const float x_203 = asfloat(x_28[0].x);
+              if ((x_201 > int(x_203))) {
+              } else {
+                break;
+              }
+              discard;
+            }
+          } else {
+            const float x_208 = gl_FragCoord.y;
+            if ((int(x_208) < 180)) {
+              const int x_215 = data[5];
+              grey = (0.5f + (float(x_215) / 10.0f));
+            } else {
+              const float x_220 = gl_FragCoord.y;
+              if ((int(x_220) < 210)) {
+                const int x_227 = data[6];
+                grey = (0.5f + (float(x_227) / 10.0f));
+              } else {
+                const float x_232 = gl_FragCoord.y;
+                if ((int(x_232) < 240)) {
+                  const int x_239 = data[7];
+                  grey = (0.5f + (float(x_239) / 10.0f));
+                } else {
+                  const float x_244 = gl_FragCoord.y;
+                  if ((int(x_244) < 270)) {
+                    const int x_251 = data[8];
+                    grey = (0.5f + (float(x_251) / 10.0f));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  const float x_255 = grey;
+  const float3 x_256 = float3(x_255, x_255, x_255);
+  x_GLF_color = float4(x_256.x, x_256.y, x_256.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.msl
new file mode 100644
index 0000000..23be1b2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.msl
@@ -0,0 +1,324 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void merge_i1_i1_i1_(thread int* const from, thread int* const mid, thread int* const to, thread tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6) {
+  int k = 0;
+  int i = 0;
+  int j = 0;
+  int i_1 = 0;
+  int const x_262 = *(from);
+  k = x_262;
+  int const x_263 = *(from);
+  i = x_263;
+  int const x_264 = *(mid);
+  j = (x_264 + 1);
+  while (true) {
+    int const x_270 = i;
+    int const x_271 = *(mid);
+    int const x_273 = j;
+    int const x_274 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    int const x_278 = i;
+    int const x_280 = (*(tint_symbol_5)).arr[x_278];
+    int const x_281 = j;
+    int const x_283 = (*(tint_symbol_5)).arr[x_281];
+    if ((x_280 < x_283)) {
+      int const x_288 = k;
+      k = (x_288 + 1);
+      int const x_290 = i;
+      i = (x_290 + 1);
+      int const x_293 = (*(tint_symbol_5)).arr[x_290];
+      (*(tint_symbol_6)).arr[x_288] = x_293;
+    } else {
+      int const x_295 = k;
+      k = (x_295 + 1);
+      int const x_297 = j;
+      j = (x_297 + 1);
+      int const x_300 = (*(tint_symbol_5)).arr[x_297];
+      (*(tint_symbol_6)).arr[x_295] = x_300;
+    }
+  }
+  while (true) {
+    int const x_306 = i;
+    int const x_308 = i;
+    int const x_309 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    int const x_313 = k;
+    k = (x_313 + 1);
+    int const x_315 = i;
+    i = (x_315 + 1);
+    int const x_318 = (*(tint_symbol_5)).arr[x_315];
+    (*(tint_symbol_6)).arr[x_313] = x_318;
+  }
+  int const x_320 = *(from);
+  i_1 = x_320;
+  while (true) {
+    int const x_325 = i_1;
+    int const x_326 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    int const x_329 = i_1;
+    int const x_330 = i_1;
+    int const x_332 = (*(tint_symbol_6)).arr[x_330];
+    (*(tint_symbol_5)).arr[x_329] = x_332;
+    {
+      int const x_334 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+void mergeSort_(thread tint_array_wrapper* const tint_symbol_7, thread tint_array_wrapper* const tint_symbol_8) {
+  int low = 0;
+  int high = 0;
+  int m = 0;
+  int i_2 = 0;
+  int from_1 = 0;
+  int mid_1 = 0;
+  int to_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  low = 0;
+  high = 9;
+  m = 1;
+  while (true) {
+    int const x_341 = m;
+    int const x_342 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    int const x_345 = low;
+    i_2 = x_345;
+    while (true) {
+      int const x_350 = i_2;
+      int const x_351 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      int const x_354 = i_2;
+      from_1 = x_354;
+      int const x_355 = i_2;
+      int const x_356 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      int const x_359 = i_2;
+      int const x_360 = m;
+      int const x_364 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      int const x_366 = from_1;
+      param = x_366;
+      int const x_367 = mid_1;
+      param_1 = x_367;
+      int const x_368 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2), tint_symbol_7, tint_symbol_8);
+      {
+        int const x_370 = m;
+        int const x_372 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+    {
+      int const x_374 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_28, thread tint_array_wrapper* const tint_symbol_9, thread tint_array_wrapper* const tint_symbol_10, thread float4* const tint_symbol_11, thread float4* const tint_symbol_12) {
+  int i_3 = 0;
+  int j_1 = 0;
+  float grey = 0.0f;
+  int int_i = 0;
+  float const x_85 = x_28.injectionSwitch.x;
+  i_3 = int(x_85);
+  while (true) {
+    int const x_91 = i_3;
+    switch(x_91) {
+      case 9: {
+        int const x_121 = i_3;
+        (*(tint_symbol_9)).arr[x_121] = -5;
+        break;
+      }
+      case 8: {
+        int const x_119 = i_3;
+        (*(tint_symbol_9)).arr[x_119] = -4;
+        break;
+      }
+      case 7: {
+        int const x_117 = i_3;
+        (*(tint_symbol_9)).arr[x_117] = -3;
+        break;
+      }
+      case 6: {
+        int const x_115 = i_3;
+        (*(tint_symbol_9)).arr[x_115] = -2;
+        break;
+      }
+      case 5: {
+        int const x_113 = i_3;
+        (*(tint_symbol_9)).arr[x_113] = -1;
+        break;
+      }
+      case 4: {
+        int const x_111 = i_3;
+        (*(tint_symbol_9)).arr[x_111] = 0;
+        break;
+      }
+      case 3: {
+        int const x_109 = i_3;
+        (*(tint_symbol_9)).arr[x_109] = 1;
+        break;
+      }
+      case 2: {
+        int const x_107 = i_3;
+        (*(tint_symbol_9)).arr[x_107] = 2;
+        break;
+      }
+      case 1: {
+        int const x_105 = i_3;
+        (*(tint_symbol_9)).arr[x_105] = 3;
+        break;
+      }
+      case 0: {
+        int const x_103 = i_3;
+        (*(tint_symbol_9)).arr[x_103] = 4;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    int const x_123 = i_3;
+    i_3 = (x_123 + 1);
+    {
+      int const x_125 = i_3;
+      if ((x_125 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  while (true) {
+    int const x_131 = j_1;
+    if ((x_131 < 10)) {
+    } else {
+      break;
+    }
+    int const x_134 = j_1;
+    int const x_135 = j_1;
+    int const x_137 = (*(tint_symbol_9)).arr[x_135];
+    (*(tint_symbol_10)).arr[x_134] = x_137;
+    {
+      int const x_139 = j_1;
+      j_1 = (x_139 + 1);
+    }
+  }
+  mergeSort_(tint_symbol_9, tint_symbol_10);
+  float const x_143 = (*(tint_symbol_11)).y;
+  if ((int(x_143) < 30)) {
+    int const x_150 = (*(tint_symbol_9)).arr[0];
+    grey = (0.5f + (float(x_150) / 10.0f));
+  } else {
+    float const x_155 = (*(tint_symbol_11)).y;
+    if ((int(x_155) < 60)) {
+      int const x_162 = (*(tint_symbol_9)).arr[1];
+      grey = (0.5f + (float(x_162) / 10.0f));
+    } else {
+      float const x_167 = (*(tint_symbol_11)).y;
+      if ((int(x_167) < 90)) {
+        int const x_174 = (*(tint_symbol_9)).arr[2];
+        grey = (0.5f + (float(x_174) / 10.0f));
+      } else {
+        float const x_179 = (*(tint_symbol_11)).y;
+        if ((int(x_179) < 120)) {
+          int const x_186 = (*(tint_symbol_9)).arr[3];
+          grey = (0.5f + (float(x_186) / 10.0f));
+        } else {
+          float const x_191 = (*(tint_symbol_11)).y;
+          if ((int(x_191) < 150)) {
+            int_i = 1;
+            while (true) {
+              int const x_201 = int_i;
+              float const x_203 = x_28.injectionSwitch.x;
+              if ((x_201 > int(x_203))) {
+              } else {
+                break;
+              }
+              discard_fragment();
+            }
+          } else {
+            float const x_208 = (*(tint_symbol_11)).y;
+            if ((int(x_208) < 180)) {
+              int const x_215 = (*(tint_symbol_9)).arr[5];
+              grey = (0.5f + (float(x_215) / 10.0f));
+            } else {
+              float const x_220 = (*(tint_symbol_11)).y;
+              if ((int(x_220) < 210)) {
+                int const x_227 = (*(tint_symbol_9)).arr[6];
+                grey = (0.5f + (float(x_227) / 10.0f));
+              } else {
+                float const x_232 = (*(tint_symbol_11)).y;
+                if ((int(x_232) < 240)) {
+                  int const x_239 = (*(tint_symbol_9)).arr[7];
+                  grey = (0.5f + (float(x_239) / 10.0f));
+                } else {
+                  float const x_244 = (*(tint_symbol_11)).y;
+                  if ((int(x_244) < 270)) {
+                    int const x_251 = (*(tint_symbol_9)).arr[8];
+                    grey = (0.5f + (float(x_251) / 10.0f));
+                  } else {
+                    discard_fragment();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  float const x_255 = grey;
+  float3 const x_256 = float3(x_255, x_255, x_255);
+  *(tint_symbol_12) = float4(x_256.x, x_256.y, x_256.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_28 [[buffer(0)]]) {
+  thread float4 tint_symbol_13 = 0.0f;
+  thread tint_array_wrapper tint_symbol_14 = {};
+  thread tint_array_wrapper tint_symbol_15 = {};
+  thread float4 tint_symbol_16 = 0.0f;
+  tint_symbol_13 = gl_FragCoord_param;
+  main_1(x_28, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_13), &(tint_symbol_16));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_16};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..6b57991
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.spvasm
@@ -0,0 +1,673 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 429
+; Schema: 0
+               OpCapability Shader
+        %177 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %data "data"
+               OpName %temp "temp"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_28 "x_28"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %merge_i1_i1_i1_ "merge_i1_i1_i1_"
+               OpName %from "from"
+               OpName %mid "mid"
+               OpName %to "to"
+               OpName %k "k"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %i_1 "i_1"
+               OpName %mergeSort_ "mergeSort_"
+               OpName %low "low"
+               OpName %high "high"
+               OpName %m "m"
+               OpName %i_2 "i_2"
+               OpName %from_1 "from_1"
+               OpName %mid_1 "mid_1"
+               OpName %to_1 "to_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %main_1 "main_1"
+               OpName %i_3 "i_3"
+               OpName %j_1 "j_1"
+               OpName %grey "grey"
+               OpName %int_i "int_i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_28 NonWritable
+               OpDecorate %x_28 DescriptorSet 0
+               OpDecorate %x_28 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%_ptr_Private__arr_int_uint_10 = OpTypePointer Private %_arr_int_uint_10
+          %7 = OpConstantNull %_arr_int_uint_10
+       %data = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+       %temp = OpVariable %_ptr_Private__arr_int_uint_10 Private %7
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_28 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
+         %32 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+     %int_10 = OpConstant %int 10
+        %132 = OpTypeFunction %void
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+      %int_2 = OpConstant %int 2
+%_ptr_Function_float = OpTypePointer Function %float
+        %201 = OpConstantNull %float
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %int_n5 = OpConstant %int -5
+     %int_n4 = OpConstant %int -4
+     %int_n3 = OpConstant %int -3
+     %int_n2 = OpConstant %int -2
+     %int_n1 = OpConstant %int -1
+      %int_3 = OpConstant %int 3
+      %int_4 = OpConstant %int 4
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+     %int_30 = OpConstant %int 30
+  %float_0_5 = OpConstant %float 0.5
+   %float_10 = OpConstant %float 10
+     %int_60 = OpConstant %int 60
+     %int_90 = OpConstant %int 90
+    %int_120 = OpConstant %int 120
+    %int_150 = OpConstant %int 150
+    %int_180 = OpConstant %int 180
+      %int_5 = OpConstant %int 5
+    %int_210 = OpConstant %int 210
+      %int_6 = OpConstant %int 6
+    %int_240 = OpConstant %int 240
+      %int_7 = OpConstant %int 7
+    %int_270 = OpConstant %int 270
+      %int_8 = OpConstant %int 8
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+        %416 = OpTypeFunction %void %main_out
+%merge_i1_i1_i1_ = OpFunction %void None %23
+       %from = OpFunctionParameter %_ptr_Function_int
+        %mid = OpFunctionParameter %_ptr_Function_int
+         %to = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %32
+          %i = OpVariable %_ptr_Function_int Function %32
+          %j = OpVariable %_ptr_Function_int Function %32
+        %i_1 = OpVariable %_ptr_Function_int Function %32
+         %37 = OpLoad %int %from
+               OpStore %k %37
+         %39 = OpLoad %int %from
+               OpStore %i %39
+         %41 = OpLoad %int %mid
+         %43 = OpIAdd %int %41 %int_1
+               OpStore %j %43
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %mid
+         %51 = OpLoad %int %j
+         %53 = OpLoad %int %to
+         %54 = OpSLessThanEqual %bool %48 %50
+               OpSelectionMerge %56 None
+               OpBranchConditional %54 %57 %56
+         %57 = OpLabel
+         %58 = OpSLessThanEqual %bool %51 %53
+               OpBranch %56
+         %56 = OpLabel
+         %59 = OpPhi %bool %54 %47 %58 %57
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %45
+         %60 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpAccessChain %_ptr_Private_int %data %63
+         %66 = OpLoad %int %65
+         %67 = OpLoad %int %j
+         %68 = OpAccessChain %_ptr_Private_int %data %67
+         %69 = OpLoad %int %68
+         %70 = OpSLessThan %bool %66 %69
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+         %74 = OpLoad %int %k
+         %75 = OpIAdd %int %74 %int_1
+               OpStore %k %75
+         %76 = OpLoad %int %i
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %i %77
+         %78 = OpAccessChain %_ptr_Private_int %data %76
+         %79 = OpLoad %int %78
+         %80 = OpAccessChain %_ptr_Private_int %temp %74
+               OpStore %80 %79
+               OpBranch %71
+         %73 = OpLabel
+         %81 = OpLoad %int %k
+         %82 = OpIAdd %int %81 %int_1
+               OpStore %k %82
+         %83 = OpLoad %int %j
+         %84 = OpIAdd %int %83 %int_1
+               OpStore %j %84
+         %85 = OpAccessChain %_ptr_Private_int %data %83
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_Private_int %temp %81
+               OpStore %87 %86
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %92 = OpLoad %int %i
+         %93 = OpLoad %int %i
+         %95 = OpLoad %int %mid
+         %97 = OpSLessThan %bool %92 %int_10
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpSLessThanEqual %bool %93 %95
+               OpBranch %98
+         %98 = OpLabel
+        %101 = OpPhi %bool %97 %91 %100 %99
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %104
+        %103 = OpLabel
+               OpBranch %102
+        %104 = OpLabel
+               OpBranch %89
+        %102 = OpLabel
+        %105 = OpLoad %int %k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %k %106
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+        %109 = OpAccessChain %_ptr_Private_int %data %107
+        %110 = OpLoad %int %109
+        %111 = OpAccessChain %_ptr_Private_int %temp %105
+               OpStore %111 %110
+               OpBranch %90
+         %90 = OpLabel
+               OpBranch %88
+         %89 = OpLabel
+        %113 = OpLoad %int %from
+               OpStore %i_1 %113
+               OpBranch %114
+        %114 = OpLabel
+               OpLoopMerge %115 %116 None
+               OpBranch %117
+        %117 = OpLabel
+        %118 = OpLoad %int %i_1
+        %120 = OpLoad %int %to
+        %121 = OpSLessThanEqual %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %124
+        %123 = OpLabel
+               OpBranch %122
+        %124 = OpLabel
+               OpBranch %115
+        %122 = OpLabel
+        %125 = OpLoad %int %i_1
+        %126 = OpLoad %int %i_1
+        %127 = OpAccessChain %_ptr_Private_int %temp %126
+        %128 = OpLoad %int %127
+        %129 = OpAccessChain %_ptr_Private_int %data %125
+               OpStore %129 %128
+               OpBranch %116
+        %116 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %114
+        %115 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %mergeSort_ = OpFunction %void None %132
+        %134 = OpLabel
+        %low = OpVariable %_ptr_Function_int Function %32
+       %high = OpVariable %_ptr_Function_int Function %32
+          %m = OpVariable %_ptr_Function_int Function %32
+        %i_2 = OpVariable %_ptr_Function_int Function %32
+     %from_1 = OpVariable %_ptr_Function_int Function %32
+      %mid_1 = OpVariable %_ptr_Function_int Function %32
+       %to_1 = OpVariable %_ptr_Function_int Function %32
+      %param = OpVariable %_ptr_Function_int Function %32
+    %param_1 = OpVariable %_ptr_Function_int Function %32
+    %param_2 = OpVariable %_ptr_Function_int Function %32
+               OpStore %low %int_0
+               OpStore %high %int_9
+               OpStore %m %int_1
+               OpBranch %147
+        %147 = OpLabel
+               OpLoopMerge %148 %149 None
+               OpBranch %150
+        %150 = OpLabel
+        %151 = OpLoad %int %m
+        %152 = OpLoad %int %high
+        %153 = OpSLessThanEqual %bool %151 %152
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %156
+        %155 = OpLabel
+               OpBranch %154
+        %156 = OpLabel
+               OpBranch %148
+        %154 = OpLabel
+        %157 = OpLoad %int %low
+               OpStore %i_2 %157
+               OpBranch %158
+        %158 = OpLabel
+               OpLoopMerge %159 %160 None
+               OpBranch %161
+        %161 = OpLabel
+        %162 = OpLoad %int %i_2
+        %163 = OpLoad %int %high
+        %164 = OpSLessThan %bool %162 %163
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %167
+        %166 = OpLabel
+               OpBranch %165
+        %167 = OpLabel
+               OpBranch %159
+        %165 = OpLabel
+        %168 = OpLoad %int %i_2
+               OpStore %from_1 %168
+        %169 = OpLoad %int %i_2
+        %170 = OpLoad %int %m
+        %171 = OpIAdd %int %169 %170
+        %172 = OpISub %int %171 %int_1
+               OpStore %mid_1 %172
+        %173 = OpLoad %int %i_2
+        %174 = OpLoad %int %m
+        %175 = OpLoad %int %high
+        %179 = OpIMul %int %int_2 %174
+        %180 = OpIAdd %int %173 %179
+        %181 = OpISub %int %180 %int_1
+        %176 = OpExtInst %int %177 SMin %181 %175
+               OpStore %to_1 %176
+        %182 = OpLoad %int %from_1
+               OpStore %param %182
+        %183 = OpLoad %int %mid_1
+               OpStore %param_1 %183
+        %184 = OpLoad %int %to_1
+               OpStore %param_2 %184
+        %185 = OpFunctionCall %void %merge_i1_i1_i1_ %param %param_1 %param_2
+               OpBranch %160
+        %160 = OpLabel
+        %189 = OpLoad %int %m
+        %190 = OpLoad %int %i_2
+        %191 = OpIMul %int %int_2 %189
+        %192 = OpIAdd %int %190 %191
+               OpStore %i_2 %192
+               OpBranch %158
+        %159 = OpLabel
+               OpBranch %149
+        %149 = OpLabel
+        %193 = OpLoad %int %m
+        %194 = OpIMul %int %int_2 %193
+               OpStore %m %194
+               OpBranch %147
+        %148 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %132
+        %196 = OpLabel
+        %i_3 = OpVariable %_ptr_Function_int Function %32
+        %j_1 = OpVariable %_ptr_Function_int Function %32
+       %grey = OpVariable %_ptr_Function_float Function %201
+      %int_i = OpVariable %_ptr_Function_int Function %32
+        %205 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %206 = OpLoad %float %205
+        %207 = OpConvertFToS %int %206
+               OpStore %i_3 %207
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %i_3
+               OpSelectionMerge %213 None
+               OpSwitch %212 %214 9 %215 8 %216 7 %217 6 %218 5 %219 4 %220 3 %221 2 %222 1 %223 0 %224
+        %215 = OpLabel
+        %225 = OpLoad %int %i_3
+        %226 = OpAccessChain %_ptr_Private_int %data %225
+               OpStore %226 %int_n5
+               OpBranch %213
+        %216 = OpLabel
+        %228 = OpLoad %int %i_3
+        %229 = OpAccessChain %_ptr_Private_int %data %228
+               OpStore %229 %int_n4
+               OpBranch %213
+        %217 = OpLabel
+        %231 = OpLoad %int %i_3
+        %232 = OpAccessChain %_ptr_Private_int %data %231
+               OpStore %232 %int_n3
+               OpBranch %213
+        %218 = OpLabel
+        %234 = OpLoad %int %i_3
+        %235 = OpAccessChain %_ptr_Private_int %data %234
+               OpStore %235 %int_n2
+               OpBranch %213
+        %219 = OpLabel
+        %237 = OpLoad %int %i_3
+        %238 = OpAccessChain %_ptr_Private_int %data %237
+               OpStore %238 %int_n1
+               OpBranch %213
+        %220 = OpLabel
+        %240 = OpLoad %int %i_3
+        %241 = OpAccessChain %_ptr_Private_int %data %240
+               OpStore %241 %int_0
+               OpBranch %213
+        %221 = OpLabel
+        %242 = OpLoad %int %i_3
+        %243 = OpAccessChain %_ptr_Private_int %data %242
+               OpStore %243 %int_1
+               OpBranch %213
+        %222 = OpLabel
+        %244 = OpLoad %int %i_3
+        %245 = OpAccessChain %_ptr_Private_int %data %244
+               OpStore %245 %int_2
+               OpBranch %213
+        %223 = OpLabel
+        %246 = OpLoad %int %i_3
+        %247 = OpAccessChain %_ptr_Private_int %data %246
+               OpStore %247 %int_3
+               OpBranch %213
+        %224 = OpLabel
+        %249 = OpLoad %int %i_3
+        %250 = OpAccessChain %_ptr_Private_int %data %249
+               OpStore %250 %int_4
+               OpBranch %213
+        %214 = OpLabel
+               OpBranch %213
+        %213 = OpLabel
+        %252 = OpLoad %int %i_3
+        %253 = OpIAdd %int %252 %int_1
+               OpStore %i_3 %253
+               OpBranch %210
+        %210 = OpLabel
+        %254 = OpLoad %int %i_3
+        %255 = OpSLessThan %bool %254 %int_10
+               OpSelectionMerge %256 None
+               OpBranchConditional %255 %257 %258
+        %257 = OpLabel
+               OpBranch %256
+        %258 = OpLabel
+               OpBranch %209
+        %256 = OpLabel
+               OpBranch %208
+        %209 = OpLabel
+               OpStore %j_1 %int_0
+               OpBranch %259
+        %259 = OpLabel
+               OpLoopMerge %260 %261 None
+               OpBranch %262
+        %262 = OpLabel
+        %263 = OpLoad %int %j_1
+        %264 = OpSLessThan %bool %263 %int_10
+               OpSelectionMerge %265 None
+               OpBranchConditional %264 %266 %267
+        %266 = OpLabel
+               OpBranch %265
+        %267 = OpLabel
+               OpBranch %260
+        %265 = OpLabel
+        %268 = OpLoad %int %j_1
+        %269 = OpLoad %int %j_1
+        %270 = OpAccessChain %_ptr_Private_int %data %269
+        %271 = OpLoad %int %270
+        %272 = OpAccessChain %_ptr_Private_int %temp %268
+               OpStore %272 %271
+               OpBranch %261
+        %261 = OpLabel
+        %273 = OpLoad %int %j_1
+        %274 = OpIAdd %int %273 %int_1
+               OpStore %j_1 %274
+               OpBranch %259
+        %260 = OpLabel
+        %275 = OpFunctionCall %void %mergeSort_
+        %278 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %279 = OpLoad %float %278
+        %280 = OpConvertFToS %int %279
+        %282 = OpSLessThan %bool %280 %int_30
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %285
+        %284 = OpLabel
+        %286 = OpAccessChain %_ptr_Private_int %data %int_0
+        %287 = OpLoad %int %286
+        %289 = OpConvertSToF %float %287
+        %291 = OpFDiv %float %289 %float_10
+        %292 = OpFAdd %float %float_0_5 %291
+               OpStore %grey %292
+               OpBranch %283
+        %285 = OpLabel
+        %293 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %294 = OpLoad %float %293
+        %295 = OpConvertFToS %int %294
+        %297 = OpSLessThan %bool %295 %int_60
+               OpSelectionMerge %298 None
+               OpBranchConditional %297 %299 %300
+        %299 = OpLabel
+        %301 = OpAccessChain %_ptr_Private_int %data %int_1
+        %302 = OpLoad %int %301
+        %303 = OpConvertSToF %float %302
+        %304 = OpFDiv %float %303 %float_10
+        %305 = OpFAdd %float %float_0_5 %304
+               OpStore %grey %305
+               OpBranch %298
+        %300 = OpLabel
+        %306 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %307 = OpLoad %float %306
+        %308 = OpConvertFToS %int %307
+        %310 = OpSLessThan %bool %308 %int_90
+               OpSelectionMerge %311 None
+               OpBranchConditional %310 %312 %313
+        %312 = OpLabel
+        %314 = OpAccessChain %_ptr_Private_int %data %int_2
+        %315 = OpLoad %int %314
+        %316 = OpConvertSToF %float %315
+        %317 = OpFDiv %float %316 %float_10
+        %318 = OpFAdd %float %float_0_5 %317
+               OpStore %grey %318
+               OpBranch %311
+        %313 = OpLabel
+        %319 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %320 = OpLoad %float %319
+        %321 = OpConvertFToS %int %320
+        %323 = OpSLessThan %bool %321 %int_120
+               OpSelectionMerge %324 None
+               OpBranchConditional %323 %325 %326
+        %325 = OpLabel
+        %327 = OpAccessChain %_ptr_Private_int %data %int_3
+        %328 = OpLoad %int %327
+        %329 = OpConvertSToF %float %328
+        %330 = OpFDiv %float %329 %float_10
+        %331 = OpFAdd %float %float_0_5 %330
+               OpStore %grey %331
+               OpBranch %324
+        %326 = OpLabel
+        %332 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %333 = OpLoad %float %332
+        %334 = OpConvertFToS %int %333
+        %336 = OpSLessThan %bool %334 %int_150
+               OpSelectionMerge %337 None
+               OpBranchConditional %336 %338 %339
+        %338 = OpLabel
+               OpStore %int_i %int_1
+               OpBranch %340
+        %340 = OpLabel
+               OpLoopMerge %341 %342 None
+               OpBranch %343
+        %343 = OpLabel
+        %344 = OpLoad %int %int_i
+        %345 = OpAccessChain %_ptr_Uniform_float %x_28 %uint_0 %uint_0
+        %346 = OpLoad %float %345
+        %347 = OpConvertFToS %int %346
+        %348 = OpSGreaterThan %bool %344 %347
+               OpSelectionMerge %349 None
+               OpBranchConditional %348 %350 %351
+        %350 = OpLabel
+               OpBranch %349
+        %351 = OpLabel
+               OpBranch %341
+        %349 = OpLabel
+               OpKill
+        %342 = OpLabel
+               OpBranch %340
+        %341 = OpLabel
+               OpBranch %337
+        %339 = OpLabel
+        %352 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %353 = OpLoad %float %352
+        %354 = OpConvertFToS %int %353
+        %356 = OpSLessThan %bool %354 %int_180
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %359
+        %358 = OpLabel
+        %361 = OpAccessChain %_ptr_Private_int %data %int_5
+        %362 = OpLoad %int %361
+        %363 = OpConvertSToF %float %362
+        %364 = OpFDiv %float %363 %float_10
+        %365 = OpFAdd %float %float_0_5 %364
+               OpStore %grey %365
+               OpBranch %357
+        %359 = OpLabel
+        %366 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %367 = OpLoad %float %366
+        %368 = OpConvertFToS %int %367
+        %370 = OpSLessThan %bool %368 %int_210
+               OpSelectionMerge %371 None
+               OpBranchConditional %370 %372 %373
+        %372 = OpLabel
+        %375 = OpAccessChain %_ptr_Private_int %data %int_6
+        %376 = OpLoad %int %375
+        %377 = OpConvertSToF %float %376
+        %378 = OpFDiv %float %377 %float_10
+        %379 = OpFAdd %float %float_0_5 %378
+               OpStore %grey %379
+               OpBranch %371
+        %373 = OpLabel
+        %380 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %381 = OpLoad %float %380
+        %382 = OpConvertFToS %int %381
+        %384 = OpSLessThan %bool %382 %int_240
+               OpSelectionMerge %385 None
+               OpBranchConditional %384 %386 %387
+        %386 = OpLabel
+        %389 = OpAccessChain %_ptr_Private_int %data %int_7
+        %390 = OpLoad %int %389
+        %391 = OpConvertSToF %float %390
+        %392 = OpFDiv %float %391 %float_10
+        %393 = OpFAdd %float %float_0_5 %392
+               OpStore %grey %393
+               OpBranch %385
+        %387 = OpLabel
+        %394 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %395 = OpLoad %float %394
+        %396 = OpConvertFToS %int %395
+        %398 = OpSLessThan %bool %396 %int_270
+               OpSelectionMerge %399 None
+               OpBranchConditional %398 %400 %401
+        %400 = OpLabel
+        %403 = OpAccessChain %_ptr_Private_int %data %int_8
+        %404 = OpLoad %int %403
+        %405 = OpConvertSToF %float %404
+        %406 = OpFDiv %float %405 %float_10
+        %407 = OpFAdd %float %float_0_5 %406
+               OpStore %grey %407
+               OpBranch %399
+        %401 = OpLabel
+               OpKill
+        %399 = OpLabel
+               OpBranch %385
+        %385 = OpLabel
+               OpBranch %371
+        %371 = OpLabel
+               OpBranch %357
+        %357 = OpLabel
+               OpBranch %337
+        %337 = OpLabel
+               OpBranch %324
+        %324 = OpLabel
+               OpBranch %311
+        %311 = OpLabel
+               OpBranch %298
+        %298 = OpLabel
+               OpBranch %283
+        %283 = OpLabel
+        %408 = OpLoad %float %grey
+        %410 = OpCompositeConstruct %v3float %408 %408 %408
+        %411 = OpCompositeExtract %float %410 0
+        %412 = OpCompositeExtract %float %410 1
+        %413 = OpCompositeExtract %float %410 2
+        %415 = OpCompositeConstruct %v4float %411 %412 %413 %float_1
+               OpStore %x_GLF_color %415
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %416
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %420 = OpLabel
+        %421 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %421
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %132
+        %423 = OpLabel
+        %424 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %424
+        %425 = OpFunctionCall %void %main_1
+        %427 = OpLoad %v4float %x_GLF_color
+        %428 = OpCompositeConstruct %main_out %427
+        %426 = OpFunctionCall %void %tint_symbol_3 %428
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 210[%210] is not post dominated by the back-edge block 256[%256]
+  %256 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..c64c646
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl.expected.wgsl
@@ -0,0 +1,316 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> data : array<i32, 10>;
+
+var<private> temp : array<i32, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
+  var k : i32;
+  var i : i32;
+  var j : i32;
+  var i_1 : i32;
+  let x_262 : i32 = *(from);
+  k = x_262;
+  let x_263 : i32 = *(from);
+  i = x_263;
+  let x_264 : i32 = *(mid);
+  j = (x_264 + 1);
+  loop {
+    let x_270 : i32 = i;
+    let x_271 : i32 = *(mid);
+    let x_273 : i32 = j;
+    let x_274 : i32 = *(to);
+    if (((x_270 <= x_271) && (x_273 <= x_274))) {
+    } else {
+      break;
+    }
+    let x_278 : i32 = i;
+    let x_280 : i32 = data[x_278];
+    let x_281 : i32 = j;
+    let x_283 : i32 = data[x_281];
+    if ((x_280 < x_283)) {
+      let x_288 : i32 = k;
+      k = (x_288 + 1);
+      let x_290 : i32 = i;
+      i = (x_290 + 1);
+      let x_293 : i32 = data[x_290];
+      temp[x_288] = x_293;
+    } else {
+      let x_295 : i32 = k;
+      k = (x_295 + 1);
+      let x_297 : i32 = j;
+      j = (x_297 + 1);
+      let x_300 : i32 = data[x_297];
+      temp[x_295] = x_300;
+    }
+  }
+  loop {
+    let x_306 : i32 = i;
+    let x_308 : i32 = i;
+    let x_309 : i32 = *(mid);
+    if (((x_306 < 10) && (x_308 <= x_309))) {
+    } else {
+      break;
+    }
+    let x_313 : i32 = k;
+    k = (x_313 + 1);
+    let x_315 : i32 = i;
+    i = (x_315 + 1);
+    let x_318 : i32 = data[x_315];
+    temp[x_313] = x_318;
+  }
+  let x_320 : i32 = *(from);
+  i_1 = x_320;
+  loop {
+    let x_325 : i32 = i_1;
+    let x_326 : i32 = *(to);
+    if ((x_325 <= x_326)) {
+    } else {
+      break;
+    }
+    let x_329 : i32 = i_1;
+    let x_330 : i32 = i_1;
+    let x_332 : i32 = temp[x_330];
+    data[x_329] = x_332;
+
+    continuing {
+      let x_334 : i32 = i_1;
+      i_1 = (x_334 + 1);
+    }
+  }
+  return;
+}
+
+fn mergeSort_() {
+  var low : i32;
+  var high : i32;
+  var m : i32;
+  var i_2 : i32;
+  var from_1 : i32;
+  var mid_1 : i32;
+  var to_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  low = 0;
+  high = 9;
+  m = 1;
+  loop {
+    let x_341 : i32 = m;
+    let x_342 : i32 = high;
+    if ((x_341 <= x_342)) {
+    } else {
+      break;
+    }
+    let x_345 : i32 = low;
+    i_2 = x_345;
+    loop {
+      let x_350 : i32 = i_2;
+      let x_351 : i32 = high;
+      if ((x_350 < x_351)) {
+      } else {
+        break;
+      }
+      let x_354 : i32 = i_2;
+      from_1 = x_354;
+      let x_355 : i32 = i_2;
+      let x_356 : i32 = m;
+      mid_1 = ((x_355 + x_356) - 1);
+      let x_359 : i32 = i_2;
+      let x_360 : i32 = m;
+      let x_364 : i32 = high;
+      to_1 = min(((x_359 + (2 * x_360)) - 1), x_364);
+      let x_366 : i32 = from_1;
+      param = x_366;
+      let x_367 : i32 = mid_1;
+      param_1 = x_367;
+      let x_368 : i32 = to_1;
+      param_2 = x_368;
+      merge_i1_i1_i1_(&(param), &(param_1), &(param_2));
+
+      continuing {
+        let x_370 : i32 = m;
+        let x_372 : i32 = i_2;
+        i_2 = (x_372 + (2 * x_370));
+      }
+    }
+
+    continuing {
+      let x_374 : i32 = m;
+      m = (2 * x_374);
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_3 : i32;
+  var j_1 : i32;
+  var grey : f32;
+  var int_i : i32;
+  let x_85 : f32 = x_28.injectionSwitch.x;
+  i_3 = i32(x_85);
+  loop {
+    let x_91 : i32 = i_3;
+    switch(x_91) {
+      case 9: {
+        let x_121 : i32 = i_3;
+        data[x_121] = -5;
+      }
+      case 8: {
+        let x_119 : i32 = i_3;
+        data[x_119] = -4;
+      }
+      case 7: {
+        let x_117 : i32 = i_3;
+        data[x_117] = -3;
+      }
+      case 6: {
+        let x_115 : i32 = i_3;
+        data[x_115] = -2;
+      }
+      case 5: {
+        let x_113 : i32 = i_3;
+        data[x_113] = -1;
+      }
+      case 4: {
+        let x_111 : i32 = i_3;
+        data[x_111] = 0;
+      }
+      case 3: {
+        let x_109 : i32 = i_3;
+        data[x_109] = 1;
+      }
+      case 2: {
+        let x_107 : i32 = i_3;
+        data[x_107] = 2;
+      }
+      case 1: {
+        let x_105 : i32 = i_3;
+        data[x_105] = 3;
+      }
+      case 0: {
+        let x_103 : i32 = i_3;
+        data[x_103] = 4;
+      }
+      default: {
+      }
+    }
+    let x_123 : i32 = i_3;
+    i_3 = (x_123 + 1);
+
+    continuing {
+      let x_125 : i32 = i_3;
+      if ((x_125 < 10)) {
+      } else {
+        break;
+      }
+    }
+  }
+  j_1 = 0;
+  loop {
+    let x_131 : i32 = j_1;
+    if ((x_131 < 10)) {
+    } else {
+      break;
+    }
+    let x_134 : i32 = j_1;
+    let x_135 : i32 = j_1;
+    let x_137 : i32 = data[x_135];
+    temp[x_134] = x_137;
+
+    continuing {
+      let x_139 : i32 = j_1;
+      j_1 = (x_139 + 1);
+    }
+  }
+  mergeSort_();
+  let x_143 : f32 = gl_FragCoord.y;
+  if ((i32(x_143) < 30)) {
+    let x_150 : i32 = data[0];
+    grey = (0.5 + (f32(x_150) / 10.0));
+  } else {
+    let x_155 : f32 = gl_FragCoord.y;
+    if ((i32(x_155) < 60)) {
+      let x_162 : i32 = data[1];
+      grey = (0.5 + (f32(x_162) / 10.0));
+    } else {
+      let x_167 : f32 = gl_FragCoord.y;
+      if ((i32(x_167) < 90)) {
+        let x_174 : i32 = data[2];
+        grey = (0.5 + (f32(x_174) / 10.0));
+      } else {
+        let x_179 : f32 = gl_FragCoord.y;
+        if ((i32(x_179) < 120)) {
+          let x_186 : i32 = data[3];
+          grey = (0.5 + (f32(x_186) / 10.0));
+        } else {
+          let x_191 : f32 = gl_FragCoord.y;
+          if ((i32(x_191) < 150)) {
+            int_i = 1;
+            loop {
+              let x_201 : i32 = int_i;
+              let x_203 : f32 = x_28.injectionSwitch.x;
+              if ((x_201 > i32(x_203))) {
+              } else {
+                break;
+              }
+              discard;
+            }
+          } else {
+            let x_208 : f32 = gl_FragCoord.y;
+            if ((i32(x_208) < 180)) {
+              let x_215 : i32 = data[5];
+              grey = (0.5 + (f32(x_215) / 10.0));
+            } else {
+              let x_220 : f32 = gl_FragCoord.y;
+              if ((i32(x_220) < 210)) {
+                let x_227 : i32 = data[6];
+                grey = (0.5 + (f32(x_227) / 10.0));
+              } else {
+                let x_232 : f32 = gl_FragCoord.y;
+                if ((i32(x_232) < 240)) {
+                  let x_239 : i32 = data[7];
+                  grey = (0.5 + (f32(x_239) / 10.0));
+                } else {
+                  let x_244 : f32 = gl_FragCoord.y;
+                  if ((i32(x_244) < 270)) {
+                    let x_251 : i32 = data[8];
+                    grey = (0.5 + (f32(x_251) / 10.0));
+                  } else {
+                    discard;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  let x_255 : f32 = grey;
+  let x_256 : vec3<f32> = vec3<f32>(x_255, x_255, x_255);
+  x_GLF_color = vec4<f32>(x_256.x, x_256.y, x_256.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm
new file mode 100644
index 0000000..c523797
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm
@@ -0,0 +1,524 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap(i1;i1;"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %quicksort_ "quicksort("
+               OpName %temp "temp"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %pivot "pivot"
+               OpName %i_0 "i"
+               OpName %j_0 "j"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %l_0 "l"
+               OpName %h_0 "h"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %int_a "int_a"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %clamp_a "clamp_a"
+               OpName %p "p"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %i_1 "i"
+               OpName %uv "uv"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %color "color"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %37 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %40 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %41 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+     %int_10 = OpConstant %int 10
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %70 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %37
+         %85 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function
+         %uv = OpVariable %_ptr_Function_v2float Function
+      %color = OpVariable %_ptr_Function_v3float Function
+               OpStore %i_1 %int_0
+               OpBranch %86
+         %86 = OpLabel
+               OpLoopMerge %87 %88 None
+               OpBranch %89
+         %89 = OpLabel
+         %90 = OpLoad %int %i_1
+         %91 = OpSLessThan %bool %90 %int_10
+               OpBranchConditional %91 %92 %87
+         %92 = OpLabel
+         %93 = OpLoad %int %i_1
+         %94 = OpLoad %int %i_1
+         %95 = OpISub %int %int_10 %94
+         %96 = OpAccessChain %_ptr_Private_int %obj %int_0 %93
+               OpStore %96 %95
+         %97 = OpLoad %int %i_1
+         %98 = OpLoad %int %i_1
+         %99 = OpAccessChain %_ptr_Private_int %obj %int_0 %98
+        %100 = OpLoad %int %99
+        %101 = OpLoad %int %i_1
+        %102 = OpAccessChain %_ptr_Private_int %obj %int_0 %101
+        %103 = OpLoad %int %102
+        %104 = OpIMul %int %100 %103
+        %105 = OpAccessChain %_ptr_Private_int %obj %int_0 %97
+               OpStore %105 %104
+               OpBranch %88
+         %88 = OpLabel
+        %106 = OpLoad %int %i_1
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %i_1 %107
+               OpBranch %86
+         %87 = OpLabel
+        %108 = OpFunctionCall %void %quicksort_
+        %109 = OpLoad %v4float %gl_FragCoord
+        %110 = OpVectorShuffle %v2float %109 %109 0 1
+        %111 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %112 = OpLoad %v2float %111
+        %113 = OpFDiv %v2float %110 %112
+               OpStore %uv %113
+               OpStore %color %70
+        %114 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
+        %115 = OpLoad %int %114
+        %116 = OpConvertSToF %float %115
+        %117 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpFAdd %float %118 %116
+        %120 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %120 %119
+        %121 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %122 = OpLoad %float %121
+        %123 = OpFOrdGreaterThan %bool %122 %float_0_25
+               OpSelectionMerge %124 None
+               OpBranchConditional %123 %125 %124
+        %125 = OpLabel
+        %126 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
+        %127 = OpLoad %int %126
+        %128 = OpConvertSToF %float %127
+        %129 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %130 = OpLoad %float %129
+        %131 = OpFAdd %float %130 %128
+        %132 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %132 %131
+               OpBranch %124
+        %124 = OpLabel
+        %133 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %134 = OpLoad %float %133
+        %135 = OpFOrdGreaterThan %bool %134 %float_0_5
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %136
+        %137 = OpLabel
+        %138 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
+        %139 = OpLoad %int %138
+        %140 = OpConvertSToF %float %139
+        %141 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %142 = OpLoad %float %141
+        %143 = OpFAdd %float %142 %140
+        %144 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %144 %143
+               OpBranch %136
+        %136 = OpLabel
+        %145 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %146 = OpLoad %float %145
+        %147 = OpFOrdGreaterThan %bool %146 %float_0_75
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %148
+        %149 = OpLabel
+        %150 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
+        %151 = OpLoad %int %150
+        %152 = OpConvertSToF %float %151
+        %153 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %154 = OpLoad %float %153
+        %155 = OpFAdd %float %154 %152
+        %156 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %156 %155
+               OpBranch %148
+        %148 = OpLabel
+        %157 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
+        %158 = OpLoad %int %157
+        %159 = OpConvertSToF %float %158
+        %160 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %161 = OpLoad %float %160
+        %162 = OpFAdd %float %161 %159
+        %163 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %163 %162
+        %164 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %165 = OpLoad %float %164
+        %166 = OpFOrdGreaterThan %bool %165 %float_0_25
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %167
+        %168 = OpLabel
+        %169 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
+        %170 = OpLoad %int %169
+        %171 = OpConvertSToF %float %170
+        %172 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %173 = OpLoad %float %172
+        %174 = OpFAdd %float %173 %171
+        %175 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %175 %174
+               OpBranch %167
+        %167 = OpLabel
+        %176 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %177 = OpLoad %float %176
+        %178 = OpFOrdGreaterThan %bool %177 %float_0_5
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %179
+        %180 = OpLabel
+        %181 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
+        %182 = OpLoad %int %181
+        %183 = OpConvertSToF %float %182
+        %184 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %185 = OpLoad %float %184
+        %186 = OpFAdd %float %185 %183
+        %187 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %187 %186
+               OpBranch %179
+        %179 = OpLabel
+        %188 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %189 = OpLoad %float %188
+        %190 = OpFOrdGreaterThan %bool %189 %float_0_75
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %191
+        %192 = OpLabel
+        %193 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
+        %194 = OpLoad %int %193
+        %195 = OpConvertSToF %float %194
+        %196 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %197 = OpLoad %float %196
+        %198 = OpFAdd %float %197 %195
+        %199 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %199 %198
+               OpBranch %191
+        %191 = OpLabel
+        %200 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
+        %201 = OpLoad %int %200
+        %202 = OpConvertSToF %float %201
+        %203 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %204 = OpLoad %float %203
+        %205 = OpFAdd %float %204 %202
+        %206 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %206 %205
+        %207 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %208 = OpLoad %float %207
+        %209 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %210 = OpLoad %float %209
+        %211 = OpFSub %float %208 %210
+        %212 = OpExtInst %float %1 FAbs %211
+        %213 = OpFOrdLessThan %bool %212 %float_0_25
+               OpSelectionMerge %214 None
+               OpBranchConditional %213 %215 %214
+        %215 = OpLabel
+        %216 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
+        %217 = OpLoad %int %216
+        %218 = OpConvertSToF %float %217
+        %219 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %220 = OpLoad %float %219
+        %221 = OpFAdd %float %220 %218
+        %222 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %222 %221
+               OpBranch %214
+        %214 = OpLabel
+        %223 = OpLoad %v3float %color
+        %224 = OpExtInst %v3float %1 Normalize %223
+        %225 = OpCompositeExtract %float %224 0
+        %226 = OpCompositeExtract %float %224 1
+        %227 = OpCompositeExtract %float %224 2
+        %228 = OpCompositeConstruct %v4float %225 %226 %227 %float_1
+               OpStore %_GLF_color %228
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %40
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %229 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+        %230 = OpLoad %int %i
+        %231 = OpAccessChain %_ptr_Private_int %obj %int_0 %230
+        %232 = OpLoad %int %231
+               OpStore %temp %232
+        %233 = OpLoad %int %i
+        %234 = OpLoad %int %j
+        %235 = OpAccessChain %_ptr_Private_int %obj %int_0 %234
+        %236 = OpLoad %int %235
+        %237 = OpAccessChain %_ptr_Private_int %obj %int_0 %233
+               OpStore %237 %236
+        %238 = OpLoad %int %j
+        %239 = OpLoad %int %temp
+        %240 = OpAccessChain %_ptr_Private_int %obj %int_0 %238
+               OpStore %240 %239
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %41
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %241 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+        %242 = OpLoad %int %h
+        %243 = OpAccessChain %_ptr_Private_int %obj %int_0 %242
+        %244 = OpLoad %int %243
+               OpStore %pivot %244
+        %245 = OpLoad %int %l
+        %246 = OpISub %int %245 %int_1
+               OpStore %i_0 %246
+        %247 = OpLoad %int %l
+               OpStore %j_0 %247
+               OpBranch %248
+        %248 = OpLabel
+               OpLoopMerge %249 %250 None
+               OpBranch %251
+        %251 = OpLabel
+        %252 = OpLoad %int %j_0
+        %253 = OpLoad %int %h
+        %254 = OpISub %int %253 %int_1
+        %255 = OpSLessThanEqual %bool %252 %254
+               OpBranchConditional %255 %256 %249
+        %256 = OpLabel
+        %257 = OpLoad %int %j_0
+        %258 = OpAccessChain %_ptr_Private_int %obj %int_0 %257
+        %259 = OpLoad %int %258
+        %260 = OpLoad %int %pivot
+        %261 = OpSLessThanEqual %bool %259 %260
+               OpSelectionMerge %262 None
+               OpBranchConditional %261 %263 %262
+        %263 = OpLabel
+        %264 = OpLoad %int %i_0
+        %265 = OpIAdd %int %264 %int_1
+               OpStore %i_0 %265
+        %266 = OpLoad %int %i_0
+               OpStore %param %266
+        %267 = OpLoad %int %j_0
+               OpStore %param_0 %267
+        %268 = OpFunctionCall %void %swap_i1_i1_ %param %param_0
+               OpBranch %262
+        %262 = OpLabel
+               OpBranch %250
+        %250 = OpLabel
+        %269 = OpLoad %int %j_0
+        %270 = OpIAdd %int %269 %int_1
+               OpStore %j_0 %270
+               OpBranch %248
+        %249 = OpLabel
+        %271 = OpLoad %int %i_0
+        %272 = OpIAdd %int %271 %int_1
+               OpStore %i_0 %272
+        %273 = OpLoad %int %i_0
+               OpStore %param_1 %273
+        %274 = OpLoad %int %h
+               OpStore %param_2 %274
+        %275 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2
+        %276 = OpLoad %int %i_0
+               OpReturnValue %276
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %37
+        %277 = OpLabel
+        %l_0 = OpVariable %_ptr_Function_int Function
+        %h_0 = OpVariable %_ptr_Function_int Function
+        %top = OpVariable %_ptr_Function_int Function
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+      %int_a = OpVariable %_ptr_Function_int Function
+        %278 = OpVariable %_ptr_Function_int Function
+        %279 = OpVariable %_ptr_Function_int Function
+    %clamp_a = OpVariable %_ptr_Function_int Function
+          %p = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+               OpStore %l_0 %int_0
+               OpStore %h_0 %int_9
+               OpStore %top %int_n1
+        %280 = OpLoad %int %top
+        %281 = OpIAdd %int %280 %int_1
+               OpStore %top %281
+        %282 = OpLoad %int %l_0
+        %283 = OpAccessChain %_ptr_Function_int %stack %281
+               OpStore %283 %282
+        %284 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+        %285 = OpLoad %float %284
+        %286 = OpFOrdGreaterThanEqual %bool %285 %float_0
+               OpSelectionMerge %287 None
+               OpBranchConditional %286 %288 %289
+        %288 = OpLabel
+        %290 = OpLoad %int %h_0
+               OpSelectionMerge %291 None
+               OpBranchConditional %false %292 %293
+        %292 = OpLabel
+               OpStore %279 %int_1
+               OpBranch %291
+        %293 = OpLabel
+        %294 = OpLoad %int %h_0
+        %295 = OpShiftLeftLogical %int %294 %int_0
+               OpStore %279 %295
+               OpBranch %291
+        %291 = OpLabel
+        %296 = OpLoad %int %279
+        %297 = OpBitwiseOr %int %290 %296
+               OpStore %278 %297
+               OpBranch %287
+        %289 = OpLabel
+               OpStore %278 %int_1
+               OpBranch %287
+        %287 = OpLabel
+        %298 = OpLoad %int %278
+               OpStore %int_a %298
+        %299 = OpLoad %int %h_0
+        %300 = OpLoad %int %h_0
+        %301 = OpLoad %int %int_a
+        %302 = OpExtInst %int %1 SClamp %299 %300 %301
+               OpStore %clamp_a %302
+        %303 = OpLoad %int %top
+        %304 = OpIAdd %int %303 %int_1
+               OpStore %top %304
+        %305 = OpLoad %int %clamp_a
+        %306 = OpSDiv %int %305 %int_1
+        %307 = OpAccessChain %_ptr_Function_int %stack %304
+               OpStore %307 %306
+               OpBranch %308
+        %308 = OpLabel
+               OpLoopMerge %309 %310 None
+               OpBranch %311
+        %311 = OpLabel
+        %312 = OpLoad %int %top
+        %313 = OpSGreaterThanEqual %bool %312 %int_0
+               OpBranchConditional %313 %314 %309
+        %314 = OpLabel
+        %315 = OpLoad %int %top
+        %316 = OpISub %int %315 %int_1
+               OpStore %top %316
+        %317 = OpAccessChain %_ptr_Function_int %stack %315
+        %318 = OpLoad %int %317
+               OpStore %h_0 %318
+        %319 = OpLoad %int %top
+        %320 = OpISub %int %319 %int_1
+               OpStore %top %320
+        %321 = OpAccessChain %_ptr_Function_int %stack %319
+        %322 = OpLoad %int %321
+               OpStore %l_0 %322
+        %323 = OpLoad %int %l_0
+               OpStore %param_3 %323
+        %324 = OpLoad %int %h_0
+               OpStore %param_4 %324
+        %325 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
+               OpStore %p %325
+        %326 = OpLoad %int %p
+        %327 = OpISub %int %326 %int_1
+        %328 = OpLoad %int %l_0
+        %329 = OpSGreaterThan %bool %327 %328
+               OpSelectionMerge %330 None
+               OpBranchConditional %329 %331 %330
+        %331 = OpLabel
+        %332 = OpLoad %int %top
+        %333 = OpIAdd %int %332 %int_1
+               OpStore %top %333
+        %334 = OpLoad %int %l_0
+        %335 = OpAccessChain %_ptr_Function_int %stack %333
+               OpStore %335 %334
+        %336 = OpLoad %int %top
+        %337 = OpIAdd %int %336 %int_1
+               OpStore %top %337
+        %338 = OpLoad %int %p
+        %339 = OpISub %int %338 %int_1
+        %340 = OpAccessChain %_ptr_Function_int %stack %337
+               OpStore %340 %339
+               OpBranch %330
+        %330 = OpLabel
+        %341 = OpLoad %int %p
+        %342 = OpIAdd %int %341 %int_1
+        %343 = OpLoad %int %h_0
+        %344 = OpSLessThan %bool %342 %343
+               OpSelectionMerge %345 None
+               OpBranchConditional %344 %346 %345
+        %346 = OpLabel
+        %347 = OpLoad %int %top
+        %348 = OpIAdd %int %347 %int_1
+               OpStore %top %348
+        %349 = OpLoad %int %p
+        %350 = OpIAdd %int %349 %int_1
+        %351 = OpAccessChain %_ptr_Function_int %stack %348
+               OpStore %351 %350
+        %352 = OpLoad %int %top
+        %353 = OpIAdd %int %352 %int_1
+               OpStore %top %353
+        %354 = OpLoad %int %h_0
+        %355 = OpAccessChain %_ptr_Function_int %stack %353
+               OpStore %355 %354
+               OpBranch %345
+        %345 = OpLabel
+               OpBranch %310
+        %310 = OpLabel
+               OpBranch %308
+        %309 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..7c36066
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.hlsl
@@ -0,0 +1,232 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_230 = i;
+  const int x_232 = obj.numbers[x_230];
+  temp = x_232;
+  const int x_233 = i;
+  const int x_234 = j;
+  const int x_236 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  const int x_238 = j;
+  obj.numbers[x_238] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_242 = h;
+  const int x_244 = obj.numbers[x_242];
+  pivot = x_244;
+  const int x_245 = l;
+  i_1 = (x_245 - 1);
+  const int x_247 = l;
+  j_1 = x_247;
+  while (true) {
+    const int x_252 = j_1;
+    const int x_253 = h;
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    const int x_259 = obj.numbers[j_1];
+    if ((x_259 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  i_1 = (i_1 + 1);
+  param_2 = i_1;
+  const int x_274 = h;
+  param_3 = x_274;
+  swap_i1_i1_(param_2, param_3);
+  return i_1;
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int int_a = 0;
+  int x_278 = 0;
+  int x_279 = 0;
+  int clamp_a = 0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_281 = (top + 1);
+  top = x_281;
+  stack[x_281] = l_1;
+  const float x_285 = gl_FragCoord.y;
+  if ((x_285 >= 0.0f)) {
+    const int x_290 = h_1;
+    if (false) {
+      x_279 = 1;
+    } else {
+      x_279 = (h_1 << asuint(0));
+    }
+    x_278 = (x_290 | x_279);
+  } else {
+    x_278 = 1;
+  }
+  int_a = x_278;
+  clamp_a = clamp(h_1, h_1, int_a);
+  const int x_304 = (top + 1);
+  top = x_304;
+  stack[x_304] = (clamp_a / 1);
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_315 = top;
+    top = (x_315 - 1);
+    const int x_318 = stack[x_315];
+    h_1 = x_318;
+    const int x_319 = top;
+    top = (x_319 - 1);
+    const int x_322 = stack[x_319];
+    l_1 = x_322;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_325 = performPartition_i1_i1_(param_4, param_5);
+    p = x_325;
+    if (((p - 1) > l_1)) {
+      const int x_333 = (top + 1);
+      top = x_333;
+      stack[x_333] = l_1;
+      const int x_337 = (top + 1);
+      top = x_337;
+      stack[x_337] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_348 = (top + 1);
+      top = x_348;
+      stack[x_348] = (p + 1);
+      const int x_353 = (top + 1);
+      top = x_353;
+      stack[x_353] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_97 = i_2;
+      const int x_100 = obj.numbers[i_2];
+      const int x_103 = obj.numbers[i_2];
+      obj.numbers[x_97] = (x_100 * x_103);
+    }
+  }
+  quicksort_();
+  const float4 x_109 = gl_FragCoord;
+  const float2 x_112 = asfloat(x_34[0].xy);
+  uv = (float2(x_109.x, x_109.y) / x_112);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_115 = obj.numbers[0];
+  const float x_118 = color.x;
+  color.x = (x_118 + float(x_115));
+  const float x_122 = uv.x;
+  if ((x_122 > 0.25f)) {
+    const int x_127 = obj.numbers[1];
+    const float x_130 = color.x;
+    color.x = (x_130 + float(x_127));
+  }
+  const float x_134 = uv.x;
+  if ((x_134 > 0.5f)) {
+    const int x_139 = obj.numbers[2];
+    const float x_142 = color.y;
+    color.y = (x_142 + float(x_139));
+  }
+  const float x_146 = uv.x;
+  if ((x_146 > 0.75f)) {
+    const int x_151 = obj.numbers[3];
+    const float x_154 = color.z;
+    color.z = (x_154 + float(x_151));
+  }
+  const int x_158 = obj.numbers[4];
+  const float x_161 = color.y;
+  color.y = (x_161 + float(x_158));
+  const float x_165 = uv.y;
+  if ((x_165 > 0.25f)) {
+    const int x_170 = obj.numbers[5];
+    const float x_173 = color.x;
+    color.x = (x_173 + float(x_170));
+  }
+  const float x_177 = uv.y;
+  if ((x_177 > 0.5f)) {
+    const int x_182 = obj.numbers[6];
+    const float x_185 = color.y;
+    color.y = (x_185 + float(x_182));
+  }
+  const float x_189 = uv.y;
+  if ((x_189 > 0.75f)) {
+    const int x_194 = obj.numbers[7];
+    const float x_197 = color.z;
+    color.z = (x_197 + float(x_194));
+  }
+  const int x_201 = obj.numbers[8];
+  const float x_204 = color.z;
+  color.z = (x_204 + float(x_201));
+  const float x_208 = uv.x;
+  const float x_210 = uv.y;
+  if ((abs((x_208 - x_210)) < 0.25f)) {
+    const int x_217 = obj.numbers[9];
+    const float x_220 = color.x;
+    color.x = (x_220 + float(x_217));
+  }
+  const float3 x_224 = normalize(color);
+  x_GLF_color = float4(x_224.x, x_224.y, x_224.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.msl
new file mode 100644
index 0000000..825cedb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.msl
@@ -0,0 +1,280 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_5) {
+  int temp = 0;
+  int const x_230 = *(i);
+  int const x_232 = (*(tint_symbol_5)).numbers.arr[x_230];
+  temp = x_232;
+  int const x_233 = *(i);
+  int const x_234 = *(j);
+  int const x_236 = (*(tint_symbol_5)).numbers.arr[x_234];
+  (*(tint_symbol_5)).numbers.arr[x_233] = x_236;
+  int const x_238 = *(j);
+  int const x_239 = temp;
+  (*(tint_symbol_5)).numbers.arr[x_238] = x_239;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_6) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_242 = *(h);
+  int const x_244 = (*(tint_symbol_6)).numbers.arr[x_242];
+  pivot = x_244;
+  int const x_245 = *(l);
+  i_1 = (x_245 - 1);
+  int const x_247 = *(l);
+  j_1 = x_247;
+  while (true) {
+    int const x_252 = j_1;
+    int const x_253 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    int const x_257 = j_1;
+    int const x_259 = (*(tint_symbol_6)).numbers.arr[x_257];
+    int const x_260 = pivot;
+    if ((x_259 <= x_260)) {
+      int const x_264 = i_1;
+      i_1 = (x_264 + 1);
+      int const x_266 = i_1;
+      param = x_266;
+      int const x_267 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_6);
+    }
+    {
+      int const x_269 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  int const x_271 = i_1;
+  i_1 = (x_271 + 1);
+  int const x_273 = i_1;
+  param_2 = x_273;
+  int const x_274 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_6);
+  int const x_276 = i_1;
+  return x_276;
+}
+
+void quicksort_(thread float4* const tint_symbol_7, thread QuicksortObject* const tint_symbol_8) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int int_a = 0;
+  int x_278 = 0;
+  int x_279 = 0;
+  int clamp_a = 0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_280 = top;
+  int const x_281 = (x_280 + 1);
+  top = x_281;
+  int const x_282 = l_1;
+  stack.arr[x_281] = x_282;
+  float const x_285 = (*(tint_symbol_7)).y;
+  if ((x_285 >= 0.0f)) {
+    int const x_290 = h_1;
+    if (false) {
+      x_279 = 1;
+    } else {
+      int const x_294 = h_1;
+      x_279 = (x_294 << as_type<uint>(0));
+    }
+    int const x_296 = x_279;
+    x_278 = (x_290 | x_296);
+  } else {
+    x_278 = 1;
+  }
+  int const x_298 = x_278;
+  int_a = x_298;
+  int const x_299 = h_1;
+  int const x_300 = h_1;
+  int const x_301 = int_a;
+  clamp_a = clamp(x_299, x_300, x_301);
+  int const x_303 = top;
+  int const x_304 = (x_303 + 1);
+  top = x_304;
+  int const x_305 = clamp_a;
+  stack.arr[x_304] = (x_305 / 1);
+  while (true) {
+    int const x_312 = top;
+    if ((x_312 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_315 = top;
+    top = (x_315 - 1);
+    int const x_318 = stack.arr[x_315];
+    h_1 = x_318;
+    int const x_319 = top;
+    top = (x_319 - 1);
+    int const x_322 = stack.arr[x_319];
+    l_1 = x_322;
+    int const x_323 = l_1;
+    param_4 = x_323;
+    int const x_324 = h_1;
+    param_5 = x_324;
+    int const x_325 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_8);
+    p = x_325;
+    int const x_326 = p;
+    int const x_328 = l_1;
+    if (((x_326 - 1) > x_328)) {
+      int const x_332 = top;
+      int const x_333 = (x_332 + 1);
+      top = x_333;
+      int const x_334 = l_1;
+      stack.arr[x_333] = x_334;
+      int const x_336 = top;
+      int const x_337 = (x_336 + 1);
+      top = x_337;
+      int const x_338 = p;
+      stack.arr[x_337] = (x_338 - 1);
+    }
+    int const x_341 = p;
+    int const x_343 = h_1;
+    if (((x_341 + 1) < x_343)) {
+      int const x_347 = top;
+      int const x_348 = (x_347 + 1);
+      top = x_348;
+      int const x_349 = p;
+      stack.arr[x_348] = (x_349 + 1);
+      int const x_352 = top;
+      int const x_353 = (x_352 + 1);
+      top = x_353;
+      int const x_354 = h_1;
+      stack.arr[x_353] = x_354;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_34, thread QuicksortObject* const tint_symbol_9, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  i_2 = 0;
+  while (true) {
+    int const x_90 = i_2;
+    if ((x_90 < 10)) {
+    } else {
+      break;
+    }
+    int const x_93 = i_2;
+    int const x_94 = i_2;
+    (*(tint_symbol_9)).numbers.arr[x_93] = (10 - x_94);
+    int const x_97 = i_2;
+    int const x_98 = i_2;
+    int const x_100 = (*(tint_symbol_9)).numbers.arr[x_98];
+    int const x_101 = i_2;
+    int const x_103 = (*(tint_symbol_9)).numbers.arr[x_101];
+    (*(tint_symbol_9)).numbers.arr[x_97] = (x_100 * x_103);
+    {
+      int const x_106 = i_2;
+      i_2 = (x_106 + 1);
+    }
+  }
+  quicksort_(tint_symbol_10, tint_symbol_9);
+  float4 const x_109 = *(tint_symbol_10);
+  float2 const x_112 = x_34.resolution;
+  uv = (float2(x_109.x, x_109.y) / x_112);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_115 = (*(tint_symbol_9)).numbers.arr[0];
+  float const x_118 = color.x;
+  color.x = (x_118 + float(x_115));
+  float const x_122 = uv.x;
+  if ((x_122 > 0.25f)) {
+    int const x_127 = (*(tint_symbol_9)).numbers.arr[1];
+    float const x_130 = color.x;
+    color.x = (x_130 + float(x_127));
+  }
+  float const x_134 = uv.x;
+  if ((x_134 > 0.5f)) {
+    int const x_139 = (*(tint_symbol_9)).numbers.arr[2];
+    float const x_142 = color.y;
+    color.y = (x_142 + float(x_139));
+  }
+  float const x_146 = uv.x;
+  if ((x_146 > 0.75f)) {
+    int const x_151 = (*(tint_symbol_9)).numbers.arr[3];
+    float const x_154 = color.z;
+    color.z = (x_154 + float(x_151));
+  }
+  int const x_158 = (*(tint_symbol_9)).numbers.arr[4];
+  float const x_161 = color.y;
+  color.y = (x_161 + float(x_158));
+  float const x_165 = uv.y;
+  if ((x_165 > 0.25f)) {
+    int const x_170 = (*(tint_symbol_9)).numbers.arr[5];
+    float const x_173 = color.x;
+    color.x = (x_173 + float(x_170));
+  }
+  float const x_177 = uv.y;
+  if ((x_177 > 0.5f)) {
+    int const x_182 = (*(tint_symbol_9)).numbers.arr[6];
+    float const x_185 = color.y;
+    color.y = (x_185 + float(x_182));
+  }
+  float const x_189 = uv.y;
+  if ((x_189 > 0.75f)) {
+    int const x_194 = (*(tint_symbol_9)).numbers.arr[7];
+    float const x_197 = color.z;
+    color.z = (x_197 + float(x_194));
+  }
+  int const x_201 = (*(tint_symbol_9)).numbers.arr[8];
+  float const x_204 = color.z;
+  color.z = (x_204 + float(x_201));
+  float const x_208 = uv.x;
+  float const x_210 = uv.y;
+  if ((fabs((x_208 - x_210)) < 0.25f)) {
+    int const x_217 = (*(tint_symbol_9)).numbers.arr[9];
+    float const x_220 = color.x;
+    color.x = (x_220 + float(x_217));
+  }
+  float3 const x_223 = color;
+  float3 const x_224 = normalize(x_223);
+  *(tint_symbol_11) = float4(x_224.x, x_224.y, x_224.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread QuicksortObject tint_symbol_13 = {};
+  thread float4 tint_symbol_14 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_34, &(tint_symbol_13), &(tint_symbol_12), &(tint_symbol_14));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_14};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..003a32d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.spvasm
@@ -0,0 +1,587 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 402
+; Schema: 0
+               OpCapability Shader
+        %156 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %int_a "int_a"
+               OpName %x_278 "x_278"
+               OpName %x_279 "x_279"
+               OpName %clamp_a "clamp_a"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %31 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %49 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %109 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %117 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %219 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %223 = OpConstantNull %v3float
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %261 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float
+        %389 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %23
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %29 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %31
+         %33 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Private_int %obj %uint_0 %33
+         %37 = OpLoad %int %36
+               OpStore %temp %37
+         %39 = OpLoad %int %i
+         %41 = OpLoad %int %j
+         %42 = OpAccessChain %_ptr_Private_int %obj %uint_0 %41
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Private_int %obj %uint_0 %39
+               OpStore %44 %43
+         %46 = OpLoad %int %j
+         %47 = OpLoad %int %temp
+         %48 = OpAccessChain %_ptr_Private_int %obj %uint_0 %46
+               OpStore %48 %47
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %49
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %53 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %31
+        %i_1 = OpVariable %_ptr_Function_int Function %31
+        %j_1 = OpVariable %_ptr_Function_int Function %31
+      %param = OpVariable %_ptr_Function_int Function %31
+    %param_1 = OpVariable %_ptr_Function_int Function %31
+    %param_2 = OpVariable %_ptr_Function_int Function %31
+    %param_3 = OpVariable %_ptr_Function_int Function %31
+         %62 = OpLoad %int %h
+         %63 = OpAccessChain %_ptr_Private_int %obj %uint_0 %62
+         %64 = OpLoad %int %63
+               OpStore %pivot %64
+         %66 = OpLoad %int %l
+         %68 = OpISub %int %66 %int_1
+               OpStore %i_1 %68
+         %70 = OpLoad %int %l
+               OpStore %j_1 %70
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %j_1
+         %77 = OpLoad %int %h
+         %78 = OpISub %int %77 %int_1
+         %79 = OpSLessThanEqual %bool %75 %78
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %72
+         %81 = OpLabel
+         %84 = OpLoad %int %j_1
+         %85 = OpAccessChain %_ptr_Private_int %obj %uint_0 %84
+         %86 = OpLoad %int %85
+         %87 = OpLoad %int %pivot
+         %88 = OpSLessThanEqual %bool %86 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+         %91 = OpLoad %int %i_1
+         %92 = OpIAdd %int %91 %int_1
+               OpStore %i_1 %92
+         %93 = OpLoad %int %i_1
+               OpStore %param %93
+         %94 = OpLoad %int %j_1
+               OpStore %param_1 %94
+         %95 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %89
+         %89 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+         %98 = OpLoad %int %j_1
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %j_1 %99
+               OpBranch %71
+         %72 = OpLabel
+        %100 = OpLoad %int %i_1
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %i_1 %101
+        %102 = OpLoad %int %i_1
+               OpStore %param_2 %102
+        %104 = OpLoad %int %h
+               OpStore %param_3 %104
+        %105 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %108 = OpLoad %int %i_1
+               OpReturnValue %108
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %109
+        %111 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %31
+        %h_1 = OpVariable %_ptr_Function_int Function %31
+        %top = OpVariable %_ptr_Function_int Function %31
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %117
+      %int_a = OpVariable %_ptr_Function_int Function %31
+      %x_278 = OpVariable %_ptr_Function_int Function %31
+      %x_279 = OpVariable %_ptr_Function_int Function %31
+    %clamp_a = OpVariable %_ptr_Function_int Function %31
+          %p = OpVariable %_ptr_Function_int Function %31
+    %param_4 = OpVariable %_ptr_Function_int Function %31
+    %param_5 = OpVariable %_ptr_Function_int Function %31
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %128 = OpLoad %int %top
+        %129 = OpIAdd %int %128 %int_1
+               OpStore %top %129
+        %130 = OpLoad %int %l_1
+        %131 = OpAccessChain %_ptr_Function_int %stack %129
+               OpStore %131 %130
+        %134 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %135 = OpLoad %float %134
+        %137 = OpFOrdGreaterThanEqual %bool %135 %float_0
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %140
+        %139 = OpLabel
+        %141 = OpLoad %int %h_1
+               OpSelectionMerge %143 None
+               OpBranchConditional %false %144 %145
+        %144 = OpLabel
+               OpStore %x_279 %int_1
+               OpBranch %143
+        %145 = OpLabel
+        %146 = OpLoad %int %h_1
+        %147 = OpBitcast %uint %int_0
+        %148 = OpShiftLeftLogical %int %146 %147
+               OpStore %x_279 %148
+               OpBranch %143
+        %143 = OpLabel
+        %149 = OpLoad %int %x_279
+        %150 = OpBitwiseOr %int %141 %149
+               OpStore %x_278 %150
+               OpBranch %138
+        %140 = OpLabel
+               OpStore %x_278 %int_1
+               OpBranch %138
+        %138 = OpLabel
+        %151 = OpLoad %int %x_278
+               OpStore %int_a %151
+        %152 = OpLoad %int %h_1
+        %153 = OpLoad %int %h_1
+        %154 = OpLoad %int %int_a
+        %155 = OpExtInst %int %156 SClamp %152 %153 %154
+               OpStore %clamp_a %155
+        %157 = OpLoad %int %top
+        %158 = OpIAdd %int %157 %int_1
+               OpStore %top %158
+        %159 = OpLoad %int %clamp_a
+        %160 = OpAccessChain %_ptr_Function_int %stack %158
+        %161 = OpSDiv %int %159 %int_1
+               OpStore %160 %161
+               OpBranch %162
+        %162 = OpLabel
+               OpLoopMerge %163 %164 None
+               OpBranch %165
+        %165 = OpLabel
+        %166 = OpLoad %int %top
+        %167 = OpSGreaterThanEqual %bool %166 %int_0
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %163
+        %168 = OpLabel
+        %171 = OpLoad %int %top
+        %172 = OpISub %int %171 %int_1
+               OpStore %top %172
+        %173 = OpAccessChain %_ptr_Function_int %stack %171
+        %174 = OpLoad %int %173
+               OpStore %h_1 %174
+        %175 = OpLoad %int %top
+        %176 = OpISub %int %175 %int_1
+               OpStore %top %176
+        %177 = OpAccessChain %_ptr_Function_int %stack %175
+        %178 = OpLoad %int %177
+               OpStore %l_1 %178
+        %179 = OpLoad %int %l_1
+               OpStore %param_4 %179
+        %180 = OpLoad %int %h_1
+               OpStore %param_5 %180
+        %181 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %181
+        %184 = OpLoad %int %p
+        %185 = OpLoad %int %l_1
+        %186 = OpISub %int %184 %int_1
+        %187 = OpSGreaterThan %bool %186 %185
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %188
+        %189 = OpLabel
+        %190 = OpLoad %int %top
+        %191 = OpIAdd %int %190 %int_1
+               OpStore %top %191
+        %192 = OpLoad %int %l_1
+        %193 = OpAccessChain %_ptr_Function_int %stack %191
+               OpStore %193 %192
+        %194 = OpLoad %int %top
+        %195 = OpIAdd %int %194 %int_1
+               OpStore %top %195
+        %196 = OpLoad %int %p
+        %197 = OpAccessChain %_ptr_Function_int %stack %195
+        %198 = OpISub %int %196 %int_1
+               OpStore %197 %198
+               OpBranch %188
+        %188 = OpLabel
+        %199 = OpLoad %int %p
+        %200 = OpLoad %int %h_1
+        %201 = OpIAdd %int %199 %int_1
+        %202 = OpSLessThan %bool %201 %200
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %203
+        %204 = OpLabel
+        %205 = OpLoad %int %top
+        %206 = OpIAdd %int %205 %int_1
+               OpStore %top %206
+        %207 = OpLoad %int %p
+        %208 = OpAccessChain %_ptr_Function_int %stack %206
+        %209 = OpIAdd %int %207 %int_1
+               OpStore %208 %209
+        %210 = OpLoad %int %top
+        %211 = OpIAdd %int %210 %int_1
+               OpStore %top %211
+        %212 = OpLoad %int %h_1
+        %213 = OpAccessChain %_ptr_Function_int %stack %211
+               OpStore %213 %212
+               OpBranch %203
+        %203 = OpLabel
+               OpBranch %164
+        %164 = OpLabel
+               OpBranch %162
+        %163 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %109
+        %215 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %31
+         %uv = OpVariable %_ptr_Function_v2float Function %219
+      %color = OpVariable %_ptr_Function_v3float Function %223
+               OpStore %i_2 %int_0
+               OpBranch %224
+        %224 = OpLabel
+               OpLoopMerge %225 %226 None
+               OpBranch %227
+        %227 = OpLabel
+        %228 = OpLoad %int %i_2
+        %230 = OpSLessThan %bool %228 %int_10
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %233
+        %232 = OpLabel
+               OpBranch %231
+        %233 = OpLabel
+               OpBranch %225
+        %231 = OpLabel
+        %234 = OpLoad %int %i_2
+        %235 = OpLoad %int %i_2
+        %236 = OpAccessChain %_ptr_Private_int %obj %uint_0 %234
+        %237 = OpISub %int %int_10 %235
+               OpStore %236 %237
+        %238 = OpLoad %int %i_2
+        %239 = OpLoad %int %i_2
+        %240 = OpAccessChain %_ptr_Private_int %obj %uint_0 %239
+        %241 = OpLoad %int %240
+        %242 = OpLoad %int %i_2
+        %243 = OpAccessChain %_ptr_Private_int %obj %uint_0 %242
+        %244 = OpLoad %int %243
+        %245 = OpAccessChain %_ptr_Private_int %obj %uint_0 %238
+        %246 = OpIMul %int %241 %244
+               OpStore %245 %246
+               OpBranch %226
+        %226 = OpLabel
+        %247 = OpLoad %int %i_2
+        %248 = OpIAdd %int %247 %int_1
+               OpStore %i_2 %248
+               OpBranch %224
+        %225 = OpLabel
+        %249 = OpFunctionCall %void %quicksort_
+        %250 = OpLoad %v4float %gl_FragCoord
+        %252 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %253 = OpLoad %v2float %252
+        %254 = OpCompositeExtract %float %250 0
+        %255 = OpCompositeExtract %float %250 1
+        %256 = OpCompositeConstruct %v2float %254 %255
+        %257 = OpFDiv %v2float %256 %253
+               OpStore %uv %257
+               OpStore %color %261
+        %262 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %263 = OpLoad %int %262
+        %265 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %266 = OpLoad %float %265
+        %267 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %268 = OpConvertSToF %float %263
+        %269 = OpFAdd %float %266 %268
+               OpStore %267 %269
+        %270 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %271 = OpLoad %float %270
+        %273 = OpFOrdGreaterThan %bool %271 %float_0_25
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %274
+        %275 = OpLabel
+        %276 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %277 = OpLoad %int %276
+        %278 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %279 = OpLoad %float %278
+        %280 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %281 = OpConvertSToF %float %277
+        %282 = OpFAdd %float %279 %281
+               OpStore %280 %282
+               OpBranch %274
+        %274 = OpLabel
+        %283 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %284 = OpLoad %float %283
+        %286 = OpFOrdGreaterThan %bool %284 %float_0_5
+               OpSelectionMerge %287 None
+               OpBranchConditional %286 %288 %287
+        %288 = OpLabel
+        %290 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %291 = OpLoad %int %290
+        %292 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %293 = OpLoad %float %292
+        %294 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %295 = OpConvertSToF %float %291
+        %296 = OpFAdd %float %293 %295
+               OpStore %294 %296
+               OpBranch %287
+        %287 = OpLabel
+        %297 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %298 = OpLoad %float %297
+        %300 = OpFOrdGreaterThan %bool %298 %float_0_75
+               OpSelectionMerge %301 None
+               OpBranchConditional %300 %302 %301
+        %302 = OpLabel
+        %304 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %305 = OpLoad %int %304
+        %307 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %308 = OpLoad %float %307
+        %309 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %310 = OpConvertSToF %float %305
+        %311 = OpFAdd %float %308 %310
+               OpStore %309 %311
+               OpBranch %301
+        %301 = OpLabel
+        %313 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %314 = OpLoad %int %313
+        %315 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %318 = OpConvertSToF %float %314
+        %319 = OpFAdd %float %316 %318
+               OpStore %317 %319
+        %320 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %321 = OpLoad %float %320
+        %322 = OpFOrdGreaterThan %bool %321 %float_0_25
+               OpSelectionMerge %323 None
+               OpBranchConditional %322 %324 %323
+        %324 = OpLabel
+        %326 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %327 = OpLoad %int %326
+        %328 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %329 = OpLoad %float %328
+        %330 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %331 = OpConvertSToF %float %327
+        %332 = OpFAdd %float %329 %331
+               OpStore %330 %332
+               OpBranch %323
+        %323 = OpLabel
+        %333 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %334 = OpLoad %float %333
+        %335 = OpFOrdGreaterThan %bool %334 %float_0_5
+               OpSelectionMerge %336 None
+               OpBranchConditional %335 %337 %336
+        %337 = OpLabel
+        %339 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %340 = OpLoad %int %339
+        %341 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %342 = OpLoad %float %341
+        %343 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %344 = OpConvertSToF %float %340
+        %345 = OpFAdd %float %342 %344
+               OpStore %343 %345
+               OpBranch %336
+        %336 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %347 = OpLoad %float %346
+        %348 = OpFOrdGreaterThan %bool %347 %float_0_75
+               OpSelectionMerge %349 None
+               OpBranchConditional %348 %350 %349
+        %350 = OpLabel
+        %352 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %353 = OpLoad %int %352
+        %354 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %355 = OpLoad %float %354
+        %356 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %357 = OpConvertSToF %float %353
+        %358 = OpFAdd %float %355 %357
+               OpStore %356 %358
+               OpBranch %349
+        %349 = OpLabel
+        %360 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %361 = OpLoad %int %360
+        %362 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %363 = OpLoad %float %362
+        %364 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %365 = OpConvertSToF %float %361
+        %366 = OpFAdd %float %363 %365
+               OpStore %364 %366
+        %367 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %368 = OpLoad %float %367
+        %369 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %370 = OpLoad %float %369
+        %372 = OpFSub %float %368 %370
+        %371 = OpExtInst %float %156 FAbs %372
+        %373 = OpFOrdLessThan %bool %371 %float_0_25
+               OpSelectionMerge %374 None
+               OpBranchConditional %373 %375 %374
+        %375 = OpLabel
+        %376 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %377 = OpLoad %int %376
+        %378 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %379 = OpLoad %float %378
+        %380 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %381 = OpConvertSToF %float %377
+        %382 = OpFAdd %float %379 %381
+               OpStore %380 %382
+               OpBranch %374
+        %374 = OpLabel
+        %383 = OpLoad %v3float %color
+        %384 = OpExtInst %v3float %156 Normalize %383
+        %385 = OpCompositeExtract %float %384 0
+        %386 = OpCompositeExtract %float %384 1
+        %387 = OpCompositeExtract %float %384 2
+        %388 = OpCompositeConstruct %v4float %385 %386 %387 %float_1
+               OpStore %x_GLF_color %388
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %389
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %393 = OpLabel
+        %394 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %394
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %109
+        %396 = OpLabel
+        %397 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %397
+        %398 = OpFunctionCall %void %main_1
+        %400 = OpLoad %v4float %x_GLF_color
+        %401 = OpCompositeConstruct %main_out %400
+        %399 = OpFunctionCall %void %tint_symbol_3 %401
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..68052db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.wgsl
@@ -0,0 +1,280 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_230 : i32 = *(i);
+  let x_232 : i32 = obj.numbers[x_230];
+  temp = x_232;
+  let x_233 : i32 = *(i);
+  let x_234 : i32 = *(j);
+  let x_236 : i32 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  let x_238 : i32 = *(j);
+  let x_239 : i32 = temp;
+  obj.numbers[x_238] = x_239;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_242 : i32 = *(h);
+  let x_244 : i32 = obj.numbers[x_242];
+  pivot = x_244;
+  let x_245 : i32 = *(l);
+  i_1 = (x_245 - 1);
+  let x_247 : i32 = *(l);
+  j_1 = x_247;
+  loop {
+    let x_252 : i32 = j_1;
+    let x_253 : i32 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    let x_257 : i32 = j_1;
+    let x_259 : i32 = obj.numbers[x_257];
+    let x_260 : i32 = pivot;
+    if ((x_259 <= x_260)) {
+      let x_264 : i32 = i_1;
+      i_1 = (x_264 + 1);
+      let x_266 : i32 = i_1;
+      param = x_266;
+      let x_267 : i32 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_269 : i32 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  let x_271 : i32 = i_1;
+  i_1 = (x_271 + 1);
+  let x_273 : i32 = i_1;
+  param_2 = x_273;
+  let x_274 : i32 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_276 : i32 = i_1;
+  return x_276;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var int_a : i32;
+  var x_278 : i32;
+  var x_279 : i32;
+  var clamp_a : i32;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_280 : i32 = top;
+  let x_281 : i32 = (x_280 + 1);
+  top = x_281;
+  let x_282 : i32 = l_1;
+  stack[x_281] = x_282;
+  let x_285 : f32 = gl_FragCoord.y;
+  if ((x_285 >= 0.0)) {
+    let x_290 : i32 = h_1;
+    if (false) {
+      x_279 = 1;
+    } else {
+      let x_294 : i32 = h_1;
+      x_279 = (x_294 << bitcast<u32>(0));
+    }
+    let x_296 : i32 = x_279;
+    x_278 = (x_290 | x_296);
+  } else {
+    x_278 = 1;
+  }
+  let x_298 : i32 = x_278;
+  int_a = x_298;
+  let x_299 : i32 = h_1;
+  let x_300 : i32 = h_1;
+  let x_301 : i32 = int_a;
+  clamp_a = clamp(x_299, x_300, x_301);
+  let x_303 : i32 = top;
+  let x_304 : i32 = (x_303 + 1);
+  top = x_304;
+  let x_305 : i32 = clamp_a;
+  stack[x_304] = (x_305 / 1);
+  loop {
+    let x_312 : i32 = top;
+    if ((x_312 >= 0)) {
+    } else {
+      break;
+    }
+    let x_315 : i32 = top;
+    top = (x_315 - 1);
+    let x_318 : i32 = stack[x_315];
+    h_1 = x_318;
+    let x_319 : i32 = top;
+    top = (x_319 - 1);
+    let x_322 : i32 = stack[x_319];
+    l_1 = x_322;
+    let x_323 : i32 = l_1;
+    param_4 = x_323;
+    let x_324 : i32 = h_1;
+    param_5 = x_324;
+    let x_325 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_325;
+    let x_326 : i32 = p;
+    let x_328 : i32 = l_1;
+    if (((x_326 - 1) > x_328)) {
+      let x_332 : i32 = top;
+      let x_333 : i32 = (x_332 + 1);
+      top = x_333;
+      let x_334 : i32 = l_1;
+      stack[x_333] = x_334;
+      let x_336 : i32 = top;
+      let x_337 : i32 = (x_336 + 1);
+      top = x_337;
+      let x_338 : i32 = p;
+      stack[x_337] = (x_338 - 1);
+    }
+    let x_341 : i32 = p;
+    let x_343 : i32 = h_1;
+    if (((x_341 + 1) < x_343)) {
+      let x_347 : i32 = top;
+      let x_348 : i32 = (x_347 + 1);
+      top = x_348;
+      let x_349 : i32 = p;
+      stack[x_348] = (x_349 + 1);
+      let x_352 : i32 = top;
+      let x_353 : i32 = (x_352 + 1);
+      top = x_353;
+      let x_354 : i32 = h_1;
+      stack[x_353] = x_354;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  i_2 = 0;
+  loop {
+    let x_90 : i32 = i_2;
+    if ((x_90 < 10)) {
+    } else {
+      break;
+    }
+    let x_93 : i32 = i_2;
+    let x_94 : i32 = i_2;
+    obj.numbers[x_93] = (10 - x_94);
+    let x_97 : i32 = i_2;
+    let x_98 : i32 = i_2;
+    let x_100 : i32 = obj.numbers[x_98];
+    let x_101 : i32 = i_2;
+    let x_103 : i32 = obj.numbers[x_101];
+    obj.numbers[x_97] = (x_100 * x_103);
+
+    continuing {
+      let x_106 : i32 = i_2;
+      i_2 = (x_106 + 1);
+    }
+  }
+  quicksort_();
+  let x_109 : vec4<f32> = gl_FragCoord;
+  let x_112 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_109.x, x_109.y) / x_112);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_115 : i32 = obj.numbers[0];
+  let x_118 : f32 = color.x;
+  color.x = (x_118 + f32(x_115));
+  let x_122 : f32 = uv.x;
+  if ((x_122 > 0.25)) {
+    let x_127 : i32 = obj.numbers[1];
+    let x_130 : f32 = color.x;
+    color.x = (x_130 + f32(x_127));
+  }
+  let x_134 : f32 = uv.x;
+  if ((x_134 > 0.5)) {
+    let x_139 : i32 = obj.numbers[2];
+    let x_142 : f32 = color.y;
+    color.y = (x_142 + f32(x_139));
+  }
+  let x_146 : f32 = uv.x;
+  if ((x_146 > 0.75)) {
+    let x_151 : i32 = obj.numbers[3];
+    let x_154 : f32 = color.z;
+    color.z = (x_154 + f32(x_151));
+  }
+  let x_158 : i32 = obj.numbers[4];
+  let x_161 : f32 = color.y;
+  color.y = (x_161 + f32(x_158));
+  let x_165 : f32 = uv.y;
+  if ((x_165 > 0.25)) {
+    let x_170 : i32 = obj.numbers[5];
+    let x_173 : f32 = color.x;
+    color.x = (x_173 + f32(x_170));
+  }
+  let x_177 : f32 = uv.y;
+  if ((x_177 > 0.5)) {
+    let x_182 : i32 = obj.numbers[6];
+    let x_185 : f32 = color.y;
+    color.y = (x_185 + f32(x_182));
+  }
+  let x_189 : f32 = uv.y;
+  if ((x_189 > 0.75)) {
+    let x_194 : i32 = obj.numbers[7];
+    let x_197 : f32 = color.z;
+    color.z = (x_197 + f32(x_194));
+  }
+  let x_201 : i32 = obj.numbers[8];
+  let x_204 : f32 = color.z;
+  color.z = (x_204 + f32(x_201));
+  let x_208 : f32 = uv.x;
+  let x_210 : f32 = uv.y;
+  if ((abs((x_208 - x_210)) < 0.25)) {
+    let x_217 : i32 = obj.numbers[9];
+    let x_220 : f32 = color.x;
+    color.x = (x_220 + f32(x_217));
+  }
+  let x_223 : vec3<f32> = color;
+  let x_224 : vec3<f32> = normalize(x_223);
+  x_GLF_color = vec4<f32>(x_224.x, x_224.y, x_224.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
new file mode 100644
index 0000000..68052db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
@@ -0,0 +1,280 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_230 : i32 = *(i);
+  let x_232 : i32 = obj.numbers[x_230];
+  temp = x_232;
+  let x_233 : i32 = *(i);
+  let x_234 : i32 = *(j);
+  let x_236 : i32 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  let x_238 : i32 = *(j);
+  let x_239 : i32 = temp;
+  obj.numbers[x_238] = x_239;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_242 : i32 = *(h);
+  let x_244 : i32 = obj.numbers[x_242];
+  pivot = x_244;
+  let x_245 : i32 = *(l);
+  i_1 = (x_245 - 1);
+  let x_247 : i32 = *(l);
+  j_1 = x_247;
+  loop {
+    let x_252 : i32 = j_1;
+    let x_253 : i32 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    let x_257 : i32 = j_1;
+    let x_259 : i32 = obj.numbers[x_257];
+    let x_260 : i32 = pivot;
+    if ((x_259 <= x_260)) {
+      let x_264 : i32 = i_1;
+      i_1 = (x_264 + 1);
+      let x_266 : i32 = i_1;
+      param = x_266;
+      let x_267 : i32 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_269 : i32 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  let x_271 : i32 = i_1;
+  i_1 = (x_271 + 1);
+  let x_273 : i32 = i_1;
+  param_2 = x_273;
+  let x_274 : i32 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_276 : i32 = i_1;
+  return x_276;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var int_a : i32;
+  var x_278 : i32;
+  var x_279 : i32;
+  var clamp_a : i32;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_280 : i32 = top;
+  let x_281 : i32 = (x_280 + 1);
+  top = x_281;
+  let x_282 : i32 = l_1;
+  stack[x_281] = x_282;
+  let x_285 : f32 = gl_FragCoord.y;
+  if ((x_285 >= 0.0)) {
+    let x_290 : i32 = h_1;
+    if (false) {
+      x_279 = 1;
+    } else {
+      let x_294 : i32 = h_1;
+      x_279 = (x_294 << bitcast<u32>(0));
+    }
+    let x_296 : i32 = x_279;
+    x_278 = (x_290 | x_296);
+  } else {
+    x_278 = 1;
+  }
+  let x_298 : i32 = x_278;
+  int_a = x_298;
+  let x_299 : i32 = h_1;
+  let x_300 : i32 = h_1;
+  let x_301 : i32 = int_a;
+  clamp_a = clamp(x_299, x_300, x_301);
+  let x_303 : i32 = top;
+  let x_304 : i32 = (x_303 + 1);
+  top = x_304;
+  let x_305 : i32 = clamp_a;
+  stack[x_304] = (x_305 / 1);
+  loop {
+    let x_312 : i32 = top;
+    if ((x_312 >= 0)) {
+    } else {
+      break;
+    }
+    let x_315 : i32 = top;
+    top = (x_315 - 1);
+    let x_318 : i32 = stack[x_315];
+    h_1 = x_318;
+    let x_319 : i32 = top;
+    top = (x_319 - 1);
+    let x_322 : i32 = stack[x_319];
+    l_1 = x_322;
+    let x_323 : i32 = l_1;
+    param_4 = x_323;
+    let x_324 : i32 = h_1;
+    param_5 = x_324;
+    let x_325 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_325;
+    let x_326 : i32 = p;
+    let x_328 : i32 = l_1;
+    if (((x_326 - 1) > x_328)) {
+      let x_332 : i32 = top;
+      let x_333 : i32 = (x_332 + 1);
+      top = x_333;
+      let x_334 : i32 = l_1;
+      stack[x_333] = x_334;
+      let x_336 : i32 = top;
+      let x_337 : i32 = (x_336 + 1);
+      top = x_337;
+      let x_338 : i32 = p;
+      stack[x_337] = (x_338 - 1);
+    }
+    let x_341 : i32 = p;
+    let x_343 : i32 = h_1;
+    if (((x_341 + 1) < x_343)) {
+      let x_347 : i32 = top;
+      let x_348 : i32 = (x_347 + 1);
+      top = x_348;
+      let x_349 : i32 = p;
+      stack[x_348] = (x_349 + 1);
+      let x_352 : i32 = top;
+      let x_353 : i32 = (x_352 + 1);
+      top = x_353;
+      let x_354 : i32 = h_1;
+      stack[x_353] = x_354;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  i_2 = 0;
+  loop {
+    let x_90 : i32 = i_2;
+    if ((x_90 < 10)) {
+    } else {
+      break;
+    }
+    let x_93 : i32 = i_2;
+    let x_94 : i32 = i_2;
+    obj.numbers[x_93] = (10 - x_94);
+    let x_97 : i32 = i_2;
+    let x_98 : i32 = i_2;
+    let x_100 : i32 = obj.numbers[x_98];
+    let x_101 : i32 = i_2;
+    let x_103 : i32 = obj.numbers[x_101];
+    obj.numbers[x_97] = (x_100 * x_103);
+
+    continuing {
+      let x_106 : i32 = i_2;
+      i_2 = (x_106 + 1);
+    }
+  }
+  quicksort_();
+  let x_109 : vec4<f32> = gl_FragCoord;
+  let x_112 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_109.x, x_109.y) / x_112);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_115 : i32 = obj.numbers[0];
+  let x_118 : f32 = color.x;
+  color.x = (x_118 + f32(x_115));
+  let x_122 : f32 = uv.x;
+  if ((x_122 > 0.25)) {
+    let x_127 : i32 = obj.numbers[1];
+    let x_130 : f32 = color.x;
+    color.x = (x_130 + f32(x_127));
+  }
+  let x_134 : f32 = uv.x;
+  if ((x_134 > 0.5)) {
+    let x_139 : i32 = obj.numbers[2];
+    let x_142 : f32 = color.y;
+    color.y = (x_142 + f32(x_139));
+  }
+  let x_146 : f32 = uv.x;
+  if ((x_146 > 0.75)) {
+    let x_151 : i32 = obj.numbers[3];
+    let x_154 : f32 = color.z;
+    color.z = (x_154 + f32(x_151));
+  }
+  let x_158 : i32 = obj.numbers[4];
+  let x_161 : f32 = color.y;
+  color.y = (x_161 + f32(x_158));
+  let x_165 : f32 = uv.y;
+  if ((x_165 > 0.25)) {
+    let x_170 : i32 = obj.numbers[5];
+    let x_173 : f32 = color.x;
+    color.x = (x_173 + f32(x_170));
+  }
+  let x_177 : f32 = uv.y;
+  if ((x_177 > 0.5)) {
+    let x_182 : i32 = obj.numbers[6];
+    let x_185 : f32 = color.y;
+    color.y = (x_185 + f32(x_182));
+  }
+  let x_189 : f32 = uv.y;
+  if ((x_189 > 0.75)) {
+    let x_194 : i32 = obj.numbers[7];
+    let x_197 : f32 = color.z;
+    color.z = (x_197 + f32(x_194));
+  }
+  let x_201 : i32 = obj.numbers[8];
+  let x_204 : f32 = color.z;
+  color.z = (x_204 + f32(x_201));
+  let x_208 : f32 = uv.x;
+  let x_210 : f32 = uv.y;
+  if ((abs((x_208 - x_210)) < 0.25)) {
+    let x_217 : i32 = obj.numbers[9];
+    let x_220 : f32 = color.x;
+    color.x = (x_220 + f32(x_217));
+  }
+  let x_223 : vec3<f32> = color;
+  let x_224 : vec3<f32> = normalize(x_223);
+  x_GLF_color = vec4<f32>(x_224.x, x_224.y, x_224.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..7c36066
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.hlsl
@@ -0,0 +1,232 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_230 = i;
+  const int x_232 = obj.numbers[x_230];
+  temp = x_232;
+  const int x_233 = i;
+  const int x_234 = j;
+  const int x_236 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  const int x_238 = j;
+  obj.numbers[x_238] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_242 = h;
+  const int x_244 = obj.numbers[x_242];
+  pivot = x_244;
+  const int x_245 = l;
+  i_1 = (x_245 - 1);
+  const int x_247 = l;
+  j_1 = x_247;
+  while (true) {
+    const int x_252 = j_1;
+    const int x_253 = h;
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    const int x_259 = obj.numbers[j_1];
+    if ((x_259 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  i_1 = (i_1 + 1);
+  param_2 = i_1;
+  const int x_274 = h;
+  param_3 = x_274;
+  swap_i1_i1_(param_2, param_3);
+  return i_1;
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int int_a = 0;
+  int x_278 = 0;
+  int x_279 = 0;
+  int clamp_a = 0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_281 = (top + 1);
+  top = x_281;
+  stack[x_281] = l_1;
+  const float x_285 = gl_FragCoord.y;
+  if ((x_285 >= 0.0f)) {
+    const int x_290 = h_1;
+    if (false) {
+      x_279 = 1;
+    } else {
+      x_279 = (h_1 << asuint(0));
+    }
+    x_278 = (x_290 | x_279);
+  } else {
+    x_278 = 1;
+  }
+  int_a = x_278;
+  clamp_a = clamp(h_1, h_1, int_a);
+  const int x_304 = (top + 1);
+  top = x_304;
+  stack[x_304] = (clamp_a / 1);
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_315 = top;
+    top = (x_315 - 1);
+    const int x_318 = stack[x_315];
+    h_1 = x_318;
+    const int x_319 = top;
+    top = (x_319 - 1);
+    const int x_322 = stack[x_319];
+    l_1 = x_322;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_325 = performPartition_i1_i1_(param_4, param_5);
+    p = x_325;
+    if (((p - 1) > l_1)) {
+      const int x_333 = (top + 1);
+      top = x_333;
+      stack[x_333] = l_1;
+      const int x_337 = (top + 1);
+      top = x_337;
+      stack[x_337] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_348 = (top + 1);
+      top = x_348;
+      stack[x_348] = (p + 1);
+      const int x_353 = (top + 1);
+      top = x_353;
+      stack[x_353] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_97 = i_2;
+      const int x_100 = obj.numbers[i_2];
+      const int x_103 = obj.numbers[i_2];
+      obj.numbers[x_97] = (x_100 * x_103);
+    }
+  }
+  quicksort_();
+  const float4 x_109 = gl_FragCoord;
+  const float2 x_112 = asfloat(x_34[0].xy);
+  uv = (float2(x_109.x, x_109.y) / x_112);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_115 = obj.numbers[0];
+  const float x_118 = color.x;
+  color.x = (x_118 + float(x_115));
+  const float x_122 = uv.x;
+  if ((x_122 > 0.25f)) {
+    const int x_127 = obj.numbers[1];
+    const float x_130 = color.x;
+    color.x = (x_130 + float(x_127));
+  }
+  const float x_134 = uv.x;
+  if ((x_134 > 0.5f)) {
+    const int x_139 = obj.numbers[2];
+    const float x_142 = color.y;
+    color.y = (x_142 + float(x_139));
+  }
+  const float x_146 = uv.x;
+  if ((x_146 > 0.75f)) {
+    const int x_151 = obj.numbers[3];
+    const float x_154 = color.z;
+    color.z = (x_154 + float(x_151));
+  }
+  const int x_158 = obj.numbers[4];
+  const float x_161 = color.y;
+  color.y = (x_161 + float(x_158));
+  const float x_165 = uv.y;
+  if ((x_165 > 0.25f)) {
+    const int x_170 = obj.numbers[5];
+    const float x_173 = color.x;
+    color.x = (x_173 + float(x_170));
+  }
+  const float x_177 = uv.y;
+  if ((x_177 > 0.5f)) {
+    const int x_182 = obj.numbers[6];
+    const float x_185 = color.y;
+    color.y = (x_185 + float(x_182));
+  }
+  const float x_189 = uv.y;
+  if ((x_189 > 0.75f)) {
+    const int x_194 = obj.numbers[7];
+    const float x_197 = color.z;
+    color.z = (x_197 + float(x_194));
+  }
+  const int x_201 = obj.numbers[8];
+  const float x_204 = color.z;
+  color.z = (x_204 + float(x_201));
+  const float x_208 = uv.x;
+  const float x_210 = uv.y;
+  if ((abs((x_208 - x_210)) < 0.25f)) {
+    const int x_217 = obj.numbers[9];
+    const float x_220 = color.x;
+    color.x = (x_220 + float(x_217));
+  }
+  const float3 x_224 = normalize(color);
+  x_GLF_color = float4(x_224.x, x_224.y, x_224.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.msl
new file mode 100644
index 0000000..825cedb
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.msl
@@ -0,0 +1,280 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_5) {
+  int temp = 0;
+  int const x_230 = *(i);
+  int const x_232 = (*(tint_symbol_5)).numbers.arr[x_230];
+  temp = x_232;
+  int const x_233 = *(i);
+  int const x_234 = *(j);
+  int const x_236 = (*(tint_symbol_5)).numbers.arr[x_234];
+  (*(tint_symbol_5)).numbers.arr[x_233] = x_236;
+  int const x_238 = *(j);
+  int const x_239 = temp;
+  (*(tint_symbol_5)).numbers.arr[x_238] = x_239;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_6) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_242 = *(h);
+  int const x_244 = (*(tint_symbol_6)).numbers.arr[x_242];
+  pivot = x_244;
+  int const x_245 = *(l);
+  i_1 = (x_245 - 1);
+  int const x_247 = *(l);
+  j_1 = x_247;
+  while (true) {
+    int const x_252 = j_1;
+    int const x_253 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    int const x_257 = j_1;
+    int const x_259 = (*(tint_symbol_6)).numbers.arr[x_257];
+    int const x_260 = pivot;
+    if ((x_259 <= x_260)) {
+      int const x_264 = i_1;
+      i_1 = (x_264 + 1);
+      int const x_266 = i_1;
+      param = x_266;
+      int const x_267 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_6);
+    }
+    {
+      int const x_269 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  int const x_271 = i_1;
+  i_1 = (x_271 + 1);
+  int const x_273 = i_1;
+  param_2 = x_273;
+  int const x_274 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_6);
+  int const x_276 = i_1;
+  return x_276;
+}
+
+void quicksort_(thread float4* const tint_symbol_7, thread QuicksortObject* const tint_symbol_8) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int int_a = 0;
+  int x_278 = 0;
+  int x_279 = 0;
+  int clamp_a = 0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_280 = top;
+  int const x_281 = (x_280 + 1);
+  top = x_281;
+  int const x_282 = l_1;
+  stack.arr[x_281] = x_282;
+  float const x_285 = (*(tint_symbol_7)).y;
+  if ((x_285 >= 0.0f)) {
+    int const x_290 = h_1;
+    if (false) {
+      x_279 = 1;
+    } else {
+      int const x_294 = h_1;
+      x_279 = (x_294 << as_type<uint>(0));
+    }
+    int const x_296 = x_279;
+    x_278 = (x_290 | x_296);
+  } else {
+    x_278 = 1;
+  }
+  int const x_298 = x_278;
+  int_a = x_298;
+  int const x_299 = h_1;
+  int const x_300 = h_1;
+  int const x_301 = int_a;
+  clamp_a = clamp(x_299, x_300, x_301);
+  int const x_303 = top;
+  int const x_304 = (x_303 + 1);
+  top = x_304;
+  int const x_305 = clamp_a;
+  stack.arr[x_304] = (x_305 / 1);
+  while (true) {
+    int const x_312 = top;
+    if ((x_312 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_315 = top;
+    top = (x_315 - 1);
+    int const x_318 = stack.arr[x_315];
+    h_1 = x_318;
+    int const x_319 = top;
+    top = (x_319 - 1);
+    int const x_322 = stack.arr[x_319];
+    l_1 = x_322;
+    int const x_323 = l_1;
+    param_4 = x_323;
+    int const x_324 = h_1;
+    param_5 = x_324;
+    int const x_325 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_8);
+    p = x_325;
+    int const x_326 = p;
+    int const x_328 = l_1;
+    if (((x_326 - 1) > x_328)) {
+      int const x_332 = top;
+      int const x_333 = (x_332 + 1);
+      top = x_333;
+      int const x_334 = l_1;
+      stack.arr[x_333] = x_334;
+      int const x_336 = top;
+      int const x_337 = (x_336 + 1);
+      top = x_337;
+      int const x_338 = p;
+      stack.arr[x_337] = (x_338 - 1);
+    }
+    int const x_341 = p;
+    int const x_343 = h_1;
+    if (((x_341 + 1) < x_343)) {
+      int const x_347 = top;
+      int const x_348 = (x_347 + 1);
+      top = x_348;
+      int const x_349 = p;
+      stack.arr[x_348] = (x_349 + 1);
+      int const x_352 = top;
+      int const x_353 = (x_352 + 1);
+      top = x_353;
+      int const x_354 = h_1;
+      stack.arr[x_353] = x_354;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_34, thread QuicksortObject* const tint_symbol_9, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  i_2 = 0;
+  while (true) {
+    int const x_90 = i_2;
+    if ((x_90 < 10)) {
+    } else {
+      break;
+    }
+    int const x_93 = i_2;
+    int const x_94 = i_2;
+    (*(tint_symbol_9)).numbers.arr[x_93] = (10 - x_94);
+    int const x_97 = i_2;
+    int const x_98 = i_2;
+    int const x_100 = (*(tint_symbol_9)).numbers.arr[x_98];
+    int const x_101 = i_2;
+    int const x_103 = (*(tint_symbol_9)).numbers.arr[x_101];
+    (*(tint_symbol_9)).numbers.arr[x_97] = (x_100 * x_103);
+    {
+      int const x_106 = i_2;
+      i_2 = (x_106 + 1);
+    }
+  }
+  quicksort_(tint_symbol_10, tint_symbol_9);
+  float4 const x_109 = *(tint_symbol_10);
+  float2 const x_112 = x_34.resolution;
+  uv = (float2(x_109.x, x_109.y) / x_112);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_115 = (*(tint_symbol_9)).numbers.arr[0];
+  float const x_118 = color.x;
+  color.x = (x_118 + float(x_115));
+  float const x_122 = uv.x;
+  if ((x_122 > 0.25f)) {
+    int const x_127 = (*(tint_symbol_9)).numbers.arr[1];
+    float const x_130 = color.x;
+    color.x = (x_130 + float(x_127));
+  }
+  float const x_134 = uv.x;
+  if ((x_134 > 0.5f)) {
+    int const x_139 = (*(tint_symbol_9)).numbers.arr[2];
+    float const x_142 = color.y;
+    color.y = (x_142 + float(x_139));
+  }
+  float const x_146 = uv.x;
+  if ((x_146 > 0.75f)) {
+    int const x_151 = (*(tint_symbol_9)).numbers.arr[3];
+    float const x_154 = color.z;
+    color.z = (x_154 + float(x_151));
+  }
+  int const x_158 = (*(tint_symbol_9)).numbers.arr[4];
+  float const x_161 = color.y;
+  color.y = (x_161 + float(x_158));
+  float const x_165 = uv.y;
+  if ((x_165 > 0.25f)) {
+    int const x_170 = (*(tint_symbol_9)).numbers.arr[5];
+    float const x_173 = color.x;
+    color.x = (x_173 + float(x_170));
+  }
+  float const x_177 = uv.y;
+  if ((x_177 > 0.5f)) {
+    int const x_182 = (*(tint_symbol_9)).numbers.arr[6];
+    float const x_185 = color.y;
+    color.y = (x_185 + float(x_182));
+  }
+  float const x_189 = uv.y;
+  if ((x_189 > 0.75f)) {
+    int const x_194 = (*(tint_symbol_9)).numbers.arr[7];
+    float const x_197 = color.z;
+    color.z = (x_197 + float(x_194));
+  }
+  int const x_201 = (*(tint_symbol_9)).numbers.arr[8];
+  float const x_204 = color.z;
+  color.z = (x_204 + float(x_201));
+  float const x_208 = uv.x;
+  float const x_210 = uv.y;
+  if ((fabs((x_208 - x_210)) < 0.25f)) {
+    int const x_217 = (*(tint_symbol_9)).numbers.arr[9];
+    float const x_220 = color.x;
+    color.x = (x_220 + float(x_217));
+  }
+  float3 const x_223 = color;
+  float3 const x_224 = normalize(x_223);
+  *(tint_symbol_11) = float4(x_224.x, x_224.y, x_224.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread QuicksortObject tint_symbol_13 = {};
+  thread float4 tint_symbol_14 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_34, &(tint_symbol_13), &(tint_symbol_12), &(tint_symbol_14));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_14};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..003a32d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.spvasm
@@ -0,0 +1,587 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 402
+; Schema: 0
+               OpCapability Shader
+        %156 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %int_a "int_a"
+               OpName %x_278 "x_278"
+               OpName %x_279 "x_279"
+               OpName %clamp_a "clamp_a"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+          %8 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %13 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %13
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %13
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %13
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %31 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %49 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %109 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %117 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+      %false = OpConstantFalse %bool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %219 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %223 = OpConstantNull %v3float
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %261 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float
+        %389 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %23
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %29 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %31
+         %33 = OpLoad %int %i
+         %36 = OpAccessChain %_ptr_Private_int %obj %uint_0 %33
+         %37 = OpLoad %int %36
+               OpStore %temp %37
+         %39 = OpLoad %int %i
+         %41 = OpLoad %int %j
+         %42 = OpAccessChain %_ptr_Private_int %obj %uint_0 %41
+         %43 = OpLoad %int %42
+         %44 = OpAccessChain %_ptr_Private_int %obj %uint_0 %39
+               OpStore %44 %43
+         %46 = OpLoad %int %j
+         %47 = OpLoad %int %temp
+         %48 = OpAccessChain %_ptr_Private_int %obj %uint_0 %46
+               OpStore %48 %47
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %49
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %53 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %31
+        %i_1 = OpVariable %_ptr_Function_int Function %31
+        %j_1 = OpVariable %_ptr_Function_int Function %31
+      %param = OpVariable %_ptr_Function_int Function %31
+    %param_1 = OpVariable %_ptr_Function_int Function %31
+    %param_2 = OpVariable %_ptr_Function_int Function %31
+    %param_3 = OpVariable %_ptr_Function_int Function %31
+         %62 = OpLoad %int %h
+         %63 = OpAccessChain %_ptr_Private_int %obj %uint_0 %62
+         %64 = OpLoad %int %63
+               OpStore %pivot %64
+         %66 = OpLoad %int %l
+         %68 = OpISub %int %66 %int_1
+               OpStore %i_1 %68
+         %70 = OpLoad %int %l
+               OpStore %j_1 %70
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %j_1
+         %77 = OpLoad %int %h
+         %78 = OpISub %int %77 %int_1
+         %79 = OpSLessThanEqual %bool %75 %78
+               OpSelectionMerge %81 None
+               OpBranchConditional %79 %82 %83
+         %82 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+               OpBranch %72
+         %81 = OpLabel
+         %84 = OpLoad %int %j_1
+         %85 = OpAccessChain %_ptr_Private_int %obj %uint_0 %84
+         %86 = OpLoad %int %85
+         %87 = OpLoad %int %pivot
+         %88 = OpSLessThanEqual %bool %86 %87
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+         %91 = OpLoad %int %i_1
+         %92 = OpIAdd %int %91 %int_1
+               OpStore %i_1 %92
+         %93 = OpLoad %int %i_1
+               OpStore %param %93
+         %94 = OpLoad %int %j_1
+               OpStore %param_1 %94
+         %95 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %89
+         %89 = OpLabel
+               OpBranch %73
+         %73 = OpLabel
+         %98 = OpLoad %int %j_1
+         %99 = OpIAdd %int %98 %int_1
+               OpStore %j_1 %99
+               OpBranch %71
+         %72 = OpLabel
+        %100 = OpLoad %int %i_1
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %i_1 %101
+        %102 = OpLoad %int %i_1
+               OpStore %param_2 %102
+        %104 = OpLoad %int %h
+               OpStore %param_3 %104
+        %105 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %108 = OpLoad %int %i_1
+               OpReturnValue %108
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %109
+        %111 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %31
+        %h_1 = OpVariable %_ptr_Function_int Function %31
+        %top = OpVariable %_ptr_Function_int Function %31
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %117
+      %int_a = OpVariable %_ptr_Function_int Function %31
+      %x_278 = OpVariable %_ptr_Function_int Function %31
+      %x_279 = OpVariable %_ptr_Function_int Function %31
+    %clamp_a = OpVariable %_ptr_Function_int Function %31
+          %p = OpVariable %_ptr_Function_int Function %31
+    %param_4 = OpVariable %_ptr_Function_int Function %31
+    %param_5 = OpVariable %_ptr_Function_int Function %31
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %128 = OpLoad %int %top
+        %129 = OpIAdd %int %128 %int_1
+               OpStore %top %129
+        %130 = OpLoad %int %l_1
+        %131 = OpAccessChain %_ptr_Function_int %stack %129
+               OpStore %131 %130
+        %134 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+        %135 = OpLoad %float %134
+        %137 = OpFOrdGreaterThanEqual %bool %135 %float_0
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %140
+        %139 = OpLabel
+        %141 = OpLoad %int %h_1
+               OpSelectionMerge %143 None
+               OpBranchConditional %false %144 %145
+        %144 = OpLabel
+               OpStore %x_279 %int_1
+               OpBranch %143
+        %145 = OpLabel
+        %146 = OpLoad %int %h_1
+        %147 = OpBitcast %uint %int_0
+        %148 = OpShiftLeftLogical %int %146 %147
+               OpStore %x_279 %148
+               OpBranch %143
+        %143 = OpLabel
+        %149 = OpLoad %int %x_279
+        %150 = OpBitwiseOr %int %141 %149
+               OpStore %x_278 %150
+               OpBranch %138
+        %140 = OpLabel
+               OpStore %x_278 %int_1
+               OpBranch %138
+        %138 = OpLabel
+        %151 = OpLoad %int %x_278
+               OpStore %int_a %151
+        %152 = OpLoad %int %h_1
+        %153 = OpLoad %int %h_1
+        %154 = OpLoad %int %int_a
+        %155 = OpExtInst %int %156 SClamp %152 %153 %154
+               OpStore %clamp_a %155
+        %157 = OpLoad %int %top
+        %158 = OpIAdd %int %157 %int_1
+               OpStore %top %158
+        %159 = OpLoad %int %clamp_a
+        %160 = OpAccessChain %_ptr_Function_int %stack %158
+        %161 = OpSDiv %int %159 %int_1
+               OpStore %160 %161
+               OpBranch %162
+        %162 = OpLabel
+               OpLoopMerge %163 %164 None
+               OpBranch %165
+        %165 = OpLabel
+        %166 = OpLoad %int %top
+        %167 = OpSGreaterThanEqual %bool %166 %int_0
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %170
+        %169 = OpLabel
+               OpBranch %168
+        %170 = OpLabel
+               OpBranch %163
+        %168 = OpLabel
+        %171 = OpLoad %int %top
+        %172 = OpISub %int %171 %int_1
+               OpStore %top %172
+        %173 = OpAccessChain %_ptr_Function_int %stack %171
+        %174 = OpLoad %int %173
+               OpStore %h_1 %174
+        %175 = OpLoad %int %top
+        %176 = OpISub %int %175 %int_1
+               OpStore %top %176
+        %177 = OpAccessChain %_ptr_Function_int %stack %175
+        %178 = OpLoad %int %177
+               OpStore %l_1 %178
+        %179 = OpLoad %int %l_1
+               OpStore %param_4 %179
+        %180 = OpLoad %int %h_1
+               OpStore %param_5 %180
+        %181 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %181
+        %184 = OpLoad %int %p
+        %185 = OpLoad %int %l_1
+        %186 = OpISub %int %184 %int_1
+        %187 = OpSGreaterThan %bool %186 %185
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %188
+        %189 = OpLabel
+        %190 = OpLoad %int %top
+        %191 = OpIAdd %int %190 %int_1
+               OpStore %top %191
+        %192 = OpLoad %int %l_1
+        %193 = OpAccessChain %_ptr_Function_int %stack %191
+               OpStore %193 %192
+        %194 = OpLoad %int %top
+        %195 = OpIAdd %int %194 %int_1
+               OpStore %top %195
+        %196 = OpLoad %int %p
+        %197 = OpAccessChain %_ptr_Function_int %stack %195
+        %198 = OpISub %int %196 %int_1
+               OpStore %197 %198
+               OpBranch %188
+        %188 = OpLabel
+        %199 = OpLoad %int %p
+        %200 = OpLoad %int %h_1
+        %201 = OpIAdd %int %199 %int_1
+        %202 = OpSLessThan %bool %201 %200
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %203
+        %204 = OpLabel
+        %205 = OpLoad %int %top
+        %206 = OpIAdd %int %205 %int_1
+               OpStore %top %206
+        %207 = OpLoad %int %p
+        %208 = OpAccessChain %_ptr_Function_int %stack %206
+        %209 = OpIAdd %int %207 %int_1
+               OpStore %208 %209
+        %210 = OpLoad %int %top
+        %211 = OpIAdd %int %210 %int_1
+               OpStore %top %211
+        %212 = OpLoad %int %h_1
+        %213 = OpAccessChain %_ptr_Function_int %stack %211
+               OpStore %213 %212
+               OpBranch %203
+        %203 = OpLabel
+               OpBranch %164
+        %164 = OpLabel
+               OpBranch %162
+        %163 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %109
+        %215 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %31
+         %uv = OpVariable %_ptr_Function_v2float Function %219
+      %color = OpVariable %_ptr_Function_v3float Function %223
+               OpStore %i_2 %int_0
+               OpBranch %224
+        %224 = OpLabel
+               OpLoopMerge %225 %226 None
+               OpBranch %227
+        %227 = OpLabel
+        %228 = OpLoad %int %i_2
+        %230 = OpSLessThan %bool %228 %int_10
+               OpSelectionMerge %231 None
+               OpBranchConditional %230 %232 %233
+        %232 = OpLabel
+               OpBranch %231
+        %233 = OpLabel
+               OpBranch %225
+        %231 = OpLabel
+        %234 = OpLoad %int %i_2
+        %235 = OpLoad %int %i_2
+        %236 = OpAccessChain %_ptr_Private_int %obj %uint_0 %234
+        %237 = OpISub %int %int_10 %235
+               OpStore %236 %237
+        %238 = OpLoad %int %i_2
+        %239 = OpLoad %int %i_2
+        %240 = OpAccessChain %_ptr_Private_int %obj %uint_0 %239
+        %241 = OpLoad %int %240
+        %242 = OpLoad %int %i_2
+        %243 = OpAccessChain %_ptr_Private_int %obj %uint_0 %242
+        %244 = OpLoad %int %243
+        %245 = OpAccessChain %_ptr_Private_int %obj %uint_0 %238
+        %246 = OpIMul %int %241 %244
+               OpStore %245 %246
+               OpBranch %226
+        %226 = OpLabel
+        %247 = OpLoad %int %i_2
+        %248 = OpIAdd %int %247 %int_1
+               OpStore %i_2 %248
+               OpBranch %224
+        %225 = OpLabel
+        %249 = OpFunctionCall %void %quicksort_
+        %250 = OpLoad %v4float %gl_FragCoord
+        %252 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %253 = OpLoad %v2float %252
+        %254 = OpCompositeExtract %float %250 0
+        %255 = OpCompositeExtract %float %250 1
+        %256 = OpCompositeConstruct %v2float %254 %255
+        %257 = OpFDiv %v2float %256 %253
+               OpStore %uv %257
+               OpStore %color %261
+        %262 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %263 = OpLoad %int %262
+        %265 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %266 = OpLoad %float %265
+        %267 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %268 = OpConvertSToF %float %263
+        %269 = OpFAdd %float %266 %268
+               OpStore %267 %269
+        %270 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %271 = OpLoad %float %270
+        %273 = OpFOrdGreaterThan %bool %271 %float_0_25
+               OpSelectionMerge %274 None
+               OpBranchConditional %273 %275 %274
+        %275 = OpLabel
+        %276 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %277 = OpLoad %int %276
+        %278 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %279 = OpLoad %float %278
+        %280 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %281 = OpConvertSToF %float %277
+        %282 = OpFAdd %float %279 %281
+               OpStore %280 %282
+               OpBranch %274
+        %274 = OpLabel
+        %283 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %284 = OpLoad %float %283
+        %286 = OpFOrdGreaterThan %bool %284 %float_0_5
+               OpSelectionMerge %287 None
+               OpBranchConditional %286 %288 %287
+        %288 = OpLabel
+        %290 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %291 = OpLoad %int %290
+        %292 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %293 = OpLoad %float %292
+        %294 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %295 = OpConvertSToF %float %291
+        %296 = OpFAdd %float %293 %295
+               OpStore %294 %296
+               OpBranch %287
+        %287 = OpLabel
+        %297 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %298 = OpLoad %float %297
+        %300 = OpFOrdGreaterThan %bool %298 %float_0_75
+               OpSelectionMerge %301 None
+               OpBranchConditional %300 %302 %301
+        %302 = OpLabel
+        %304 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %305 = OpLoad %int %304
+        %307 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %308 = OpLoad %float %307
+        %309 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %310 = OpConvertSToF %float %305
+        %311 = OpFAdd %float %308 %310
+               OpStore %309 %311
+               OpBranch %301
+        %301 = OpLabel
+        %313 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %314 = OpLoad %int %313
+        %315 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %318 = OpConvertSToF %float %314
+        %319 = OpFAdd %float %316 %318
+               OpStore %317 %319
+        %320 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %321 = OpLoad %float %320
+        %322 = OpFOrdGreaterThan %bool %321 %float_0_25
+               OpSelectionMerge %323 None
+               OpBranchConditional %322 %324 %323
+        %324 = OpLabel
+        %326 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %327 = OpLoad %int %326
+        %328 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %329 = OpLoad %float %328
+        %330 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %331 = OpConvertSToF %float %327
+        %332 = OpFAdd %float %329 %331
+               OpStore %330 %332
+               OpBranch %323
+        %323 = OpLabel
+        %333 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %334 = OpLoad %float %333
+        %335 = OpFOrdGreaterThan %bool %334 %float_0_5
+               OpSelectionMerge %336 None
+               OpBranchConditional %335 %337 %336
+        %337 = OpLabel
+        %339 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %340 = OpLoad %int %339
+        %341 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %342 = OpLoad %float %341
+        %343 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %344 = OpConvertSToF %float %340
+        %345 = OpFAdd %float %342 %344
+               OpStore %343 %345
+               OpBranch %336
+        %336 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %347 = OpLoad %float %346
+        %348 = OpFOrdGreaterThan %bool %347 %float_0_75
+               OpSelectionMerge %349 None
+               OpBranchConditional %348 %350 %349
+        %350 = OpLabel
+        %352 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %353 = OpLoad %int %352
+        %354 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %355 = OpLoad %float %354
+        %356 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %357 = OpConvertSToF %float %353
+        %358 = OpFAdd %float %355 %357
+               OpStore %356 %358
+               OpBranch %349
+        %349 = OpLabel
+        %360 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %361 = OpLoad %int %360
+        %362 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %363 = OpLoad %float %362
+        %364 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %365 = OpConvertSToF %float %361
+        %366 = OpFAdd %float %363 %365
+               OpStore %364 %366
+        %367 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %368 = OpLoad %float %367
+        %369 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %370 = OpLoad %float %369
+        %372 = OpFSub %float %368 %370
+        %371 = OpExtInst %float %156 FAbs %372
+        %373 = OpFOrdLessThan %bool %371 %float_0_25
+               OpSelectionMerge %374 None
+               OpBranchConditional %373 %375 %374
+        %375 = OpLabel
+        %376 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %377 = OpLoad %int %376
+        %378 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %379 = OpLoad %float %378
+        %380 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %381 = OpConvertSToF %float %377
+        %382 = OpFAdd %float %379 %381
+               OpStore %380 %382
+               OpBranch %374
+        %374 = OpLabel
+        %383 = OpLoad %v3float %color
+        %384 = OpExtInst %v3float %156 Normalize %383
+        %385 = OpCompositeExtract %float %384 0
+        %386 = OpCompositeExtract %float %384 1
+        %387 = OpCompositeExtract %float %384 2
+        %388 = OpCompositeConstruct %v4float %385 %386 %387 %float_1
+               OpStore %x_GLF_color %388
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %389
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %393 = OpLabel
+        %394 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %394
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %109
+        %396 = OpLabel
+        %397 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %397
+        %398 = OpFunctionCall %void %main_1
+        %400 = OpLoad %v4float %x_GLF_color
+        %401 = OpCompositeConstruct %main_out %400
+        %399 = OpFunctionCall %void %tint_symbol_3 %401
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..68052db
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.wgsl
@@ -0,0 +1,280 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_230 : i32 = *(i);
+  let x_232 : i32 = obj.numbers[x_230];
+  temp = x_232;
+  let x_233 : i32 = *(i);
+  let x_234 : i32 = *(j);
+  let x_236 : i32 = obj.numbers[x_234];
+  obj.numbers[x_233] = x_236;
+  let x_238 : i32 = *(j);
+  let x_239 : i32 = temp;
+  obj.numbers[x_238] = x_239;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_242 : i32 = *(h);
+  let x_244 : i32 = obj.numbers[x_242];
+  pivot = x_244;
+  let x_245 : i32 = *(l);
+  i_1 = (x_245 - 1);
+  let x_247 : i32 = *(l);
+  j_1 = x_247;
+  loop {
+    let x_252 : i32 = j_1;
+    let x_253 : i32 = *(h);
+    if ((x_252 <= (x_253 - 1))) {
+    } else {
+      break;
+    }
+    let x_257 : i32 = j_1;
+    let x_259 : i32 = obj.numbers[x_257];
+    let x_260 : i32 = pivot;
+    if ((x_259 <= x_260)) {
+      let x_264 : i32 = i_1;
+      i_1 = (x_264 + 1);
+      let x_266 : i32 = i_1;
+      param = x_266;
+      let x_267 : i32 = j_1;
+      param_1 = x_267;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_269 : i32 = j_1;
+      j_1 = (x_269 + 1);
+    }
+  }
+  let x_271 : i32 = i_1;
+  i_1 = (x_271 + 1);
+  let x_273 : i32 = i_1;
+  param_2 = x_273;
+  let x_274 : i32 = *(h);
+  param_3 = x_274;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_276 : i32 = i_1;
+  return x_276;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var int_a : i32;
+  var x_278 : i32;
+  var x_279 : i32;
+  var clamp_a : i32;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_280 : i32 = top;
+  let x_281 : i32 = (x_280 + 1);
+  top = x_281;
+  let x_282 : i32 = l_1;
+  stack[x_281] = x_282;
+  let x_285 : f32 = gl_FragCoord.y;
+  if ((x_285 >= 0.0)) {
+    let x_290 : i32 = h_1;
+    if (false) {
+      x_279 = 1;
+    } else {
+      let x_294 : i32 = h_1;
+      x_279 = (x_294 << bitcast<u32>(0));
+    }
+    let x_296 : i32 = x_279;
+    x_278 = (x_290 | x_296);
+  } else {
+    x_278 = 1;
+  }
+  let x_298 : i32 = x_278;
+  int_a = x_298;
+  let x_299 : i32 = h_1;
+  let x_300 : i32 = h_1;
+  let x_301 : i32 = int_a;
+  clamp_a = clamp(x_299, x_300, x_301);
+  let x_303 : i32 = top;
+  let x_304 : i32 = (x_303 + 1);
+  top = x_304;
+  let x_305 : i32 = clamp_a;
+  stack[x_304] = (x_305 / 1);
+  loop {
+    let x_312 : i32 = top;
+    if ((x_312 >= 0)) {
+    } else {
+      break;
+    }
+    let x_315 : i32 = top;
+    top = (x_315 - 1);
+    let x_318 : i32 = stack[x_315];
+    h_1 = x_318;
+    let x_319 : i32 = top;
+    top = (x_319 - 1);
+    let x_322 : i32 = stack[x_319];
+    l_1 = x_322;
+    let x_323 : i32 = l_1;
+    param_4 = x_323;
+    let x_324 : i32 = h_1;
+    param_5 = x_324;
+    let x_325 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_325;
+    let x_326 : i32 = p;
+    let x_328 : i32 = l_1;
+    if (((x_326 - 1) > x_328)) {
+      let x_332 : i32 = top;
+      let x_333 : i32 = (x_332 + 1);
+      top = x_333;
+      let x_334 : i32 = l_1;
+      stack[x_333] = x_334;
+      let x_336 : i32 = top;
+      let x_337 : i32 = (x_336 + 1);
+      top = x_337;
+      let x_338 : i32 = p;
+      stack[x_337] = (x_338 - 1);
+    }
+    let x_341 : i32 = p;
+    let x_343 : i32 = h_1;
+    if (((x_341 + 1) < x_343)) {
+      let x_347 : i32 = top;
+      let x_348 : i32 = (x_347 + 1);
+      top = x_348;
+      let x_349 : i32 = p;
+      stack[x_348] = (x_349 + 1);
+      let x_352 : i32 = top;
+      let x_353 : i32 = (x_352 + 1);
+      top = x_353;
+      let x_354 : i32 = h_1;
+      stack[x_353] = x_354;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  i_2 = 0;
+  loop {
+    let x_90 : i32 = i_2;
+    if ((x_90 < 10)) {
+    } else {
+      break;
+    }
+    let x_93 : i32 = i_2;
+    let x_94 : i32 = i_2;
+    obj.numbers[x_93] = (10 - x_94);
+    let x_97 : i32 = i_2;
+    let x_98 : i32 = i_2;
+    let x_100 : i32 = obj.numbers[x_98];
+    let x_101 : i32 = i_2;
+    let x_103 : i32 = obj.numbers[x_101];
+    obj.numbers[x_97] = (x_100 * x_103);
+
+    continuing {
+      let x_106 : i32 = i_2;
+      i_2 = (x_106 + 1);
+    }
+  }
+  quicksort_();
+  let x_109 : vec4<f32> = gl_FragCoord;
+  let x_112 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_109.x, x_109.y) / x_112);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_115 : i32 = obj.numbers[0];
+  let x_118 : f32 = color.x;
+  color.x = (x_118 + f32(x_115));
+  let x_122 : f32 = uv.x;
+  if ((x_122 > 0.25)) {
+    let x_127 : i32 = obj.numbers[1];
+    let x_130 : f32 = color.x;
+    color.x = (x_130 + f32(x_127));
+  }
+  let x_134 : f32 = uv.x;
+  if ((x_134 > 0.5)) {
+    let x_139 : i32 = obj.numbers[2];
+    let x_142 : f32 = color.y;
+    color.y = (x_142 + f32(x_139));
+  }
+  let x_146 : f32 = uv.x;
+  if ((x_146 > 0.75)) {
+    let x_151 : i32 = obj.numbers[3];
+    let x_154 : f32 = color.z;
+    color.z = (x_154 + f32(x_151));
+  }
+  let x_158 : i32 = obj.numbers[4];
+  let x_161 : f32 = color.y;
+  color.y = (x_161 + f32(x_158));
+  let x_165 : f32 = uv.y;
+  if ((x_165 > 0.25)) {
+    let x_170 : i32 = obj.numbers[5];
+    let x_173 : f32 = color.x;
+    color.x = (x_173 + f32(x_170));
+  }
+  let x_177 : f32 = uv.y;
+  if ((x_177 > 0.5)) {
+    let x_182 : i32 = obj.numbers[6];
+    let x_185 : f32 = color.y;
+    color.y = (x_185 + f32(x_182));
+  }
+  let x_189 : f32 = uv.y;
+  if ((x_189 > 0.75)) {
+    let x_194 : i32 = obj.numbers[7];
+    let x_197 : f32 = color.z;
+    color.z = (x_197 + f32(x_194));
+  }
+  let x_201 : i32 = obj.numbers[8];
+  let x_204 : f32 = color.z;
+  color.z = (x_204 + f32(x_201));
+  let x_208 : f32 = uv.x;
+  let x_210 : f32 = uv.y;
+  if ((abs((x_208 - x_210)) < 0.25)) {
+    let x_217 : i32 = obj.numbers[9];
+    let x_220 : f32 = color.x;
+    color.x = (x_220 + f32(x_217));
+  }
+  let x_223 : vec3<f32> = color;
+  let x_224 : vec3<f32> = normalize(x_223);
+  x_GLF_color = vec4<f32>(x_224.x, x_224.y, x_224.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm
new file mode 100644
index 0000000..b93bfe7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm
@@ -0,0 +1,503 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_GLF_pos %frag_color %__0
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap(i1;i1;"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %quicksort_ "quicksort("
+               OpName %temp "temp"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %pivot "pivot"
+               OpName %i_0 "i"
+               OpName %j_0 "j"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %l_0 "l"
+               OpName %h_0 "h"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %_GLF_FragCoord "_GLF_FragCoord"
+               OpName %_GLF_pos "_GLF_pos"
+               OpName %i_1 "i"
+               OpName %uv "uv"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %color "color"
+               OpName %frag_color "frag_color"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpName %__0 ""
+               OpDecorate %_GLF_pos Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %frag_color Location 0
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpDecorate %gl_PerVertex Block
+       %void = OpTypeVoid
+         %38 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %41 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %42 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+%_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %_GLF_pos = OpVariable %_ptr_Input_v4float Input
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %60 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+         %62 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %72 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %frag_color = OpVariable %_ptr_Output_v4float Output
+%gl_PerVertex = OpTypeStruct %v4float %float
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+        %__0 = OpVariable %_ptr_Output_gl_PerVertex Output
+       %main = OpFunction %void None %38
+         %89 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function
+         %uv = OpVariable %_ptr_Function_v2float Function
+      %color = OpVariable %_ptr_Function_v3float Function
+         %90 = OpLoad %v4float %_GLF_pos
+         %91 = OpFAdd %v4float %90 %60
+         %92 = OpFMul %v4float %91 %62
+               OpStore %_GLF_FragCoord %92
+               OpStore %i_1 %int_0
+               OpBranch %93
+         %93 = OpLabel
+               OpLoopMerge %94 %95 None
+               OpBranch %96
+         %96 = OpLabel
+         %97 = OpLoad %int %i_1
+         %98 = OpSLessThan %bool %97 %int_10
+               OpBranchConditional %98 %99 %94
+         %99 = OpLabel
+        %100 = OpLoad %int %i_1
+        %101 = OpLoad %int %i_1
+        %102 = OpISub %int %int_10 %101
+        %103 = OpAccessChain %_ptr_Private_int %obj %int_0 %100
+               OpStore %103 %102
+        %104 = OpLoad %int %i_1
+        %105 = OpLoad %int %i_1
+        %106 = OpAccessChain %_ptr_Private_int %obj %int_0 %105
+        %107 = OpLoad %int %106
+        %108 = OpLoad %int %i_1
+        %109 = OpAccessChain %_ptr_Private_int %obj %int_0 %108
+        %110 = OpLoad %int %109
+        %111 = OpIMul %int %107 %110
+        %112 = OpAccessChain %_ptr_Private_int %obj %int_0 %104
+               OpStore %112 %111
+               OpBranch %95
+         %95 = OpLabel
+        %113 = OpLoad %int %i_1
+        %114 = OpIAdd %int %113 %int_1
+               OpStore %i_1 %114
+               OpBranch %93
+         %94 = OpLabel
+        %115 = OpFunctionCall %void %quicksort_
+        %116 = OpLoad %v4float %_GLF_FragCoord
+        %117 = OpVectorShuffle %v2float %116 %116 0 1
+        %118 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %119 = OpLoad %v2float %118
+        %120 = OpFDiv %v2float %117 %119
+               OpStore %uv %120
+               OpStore %color %72
+        %121 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
+        %122 = OpLoad %int %121
+        %123 = OpConvertSToF %float %122
+        %124 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpFAdd %float %125 %123
+        %127 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %127 %126
+        %128 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %129 = OpLoad %float %128
+        %130 = OpFOrdGreaterThan %bool %129 %float_0_25
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+        %133 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
+        %134 = OpLoad %int %133
+        %135 = OpConvertSToF %float %134
+        %136 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %137 = OpLoad %float %136
+        %138 = OpFAdd %float %137 %135
+        %139 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %139 %138
+               OpBranch %131
+        %131 = OpLabel
+        %140 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %141 = OpLoad %float %140
+        %142 = OpFOrdGreaterThan %bool %141 %float_0_5
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %143
+        %144 = OpLabel
+        %145 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
+        %146 = OpLoad %int %145
+        %147 = OpConvertSToF %float %146
+        %148 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %149 = OpLoad %float %148
+        %150 = OpFAdd %float %149 %147
+        %151 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %151 %150
+               OpBranch %143
+        %143 = OpLabel
+        %152 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpFOrdGreaterThan %bool %153 %float_0_75
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %155
+        %156 = OpLabel
+        %157 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
+        %158 = OpLoad %int %157
+        %159 = OpConvertSToF %float %158
+        %160 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %161 = OpLoad %float %160
+        %162 = OpFAdd %float %161 %159
+        %163 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %163 %162
+               OpBranch %155
+        %155 = OpLabel
+        %164 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
+        %165 = OpLoad %int %164
+        %166 = OpConvertSToF %float %165
+        %167 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %168 = OpLoad %float %167
+        %169 = OpFAdd %float %168 %166
+        %170 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %170 %169
+        %171 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %172 = OpLoad %float %171
+        %173 = OpFOrdGreaterThan %bool %172 %float_0_25
+               OpSelectionMerge %174 None
+               OpBranchConditional %173 %175 %174
+        %175 = OpLabel
+        %176 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
+        %177 = OpLoad %int %176
+        %178 = OpConvertSToF %float %177
+        %179 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %180 = OpLoad %float %179
+        %181 = OpFAdd %float %180 %178
+        %182 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %182 %181
+               OpBranch %174
+        %174 = OpLabel
+        %183 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %184 = OpLoad %float %183
+        %185 = OpFOrdGreaterThan %bool %184 %float_0_5
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %186
+        %187 = OpLabel
+        %188 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
+        %189 = OpLoad %int %188
+        %190 = OpConvertSToF %float %189
+        %191 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %192 = OpLoad %float %191
+        %193 = OpFAdd %float %192 %190
+        %194 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %194 %193
+               OpBranch %186
+        %186 = OpLabel
+        %195 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %196 = OpLoad %float %195
+        %197 = OpFOrdGreaterThan %bool %196 %float_0_75
+               OpSelectionMerge %198 None
+               OpBranchConditional %197 %199 %198
+        %199 = OpLabel
+        %200 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
+        %201 = OpLoad %int %200
+        %202 = OpConvertSToF %float %201
+        %203 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %204 = OpLoad %float %203
+        %205 = OpFAdd %float %204 %202
+        %206 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %206 %205
+               OpBranch %198
+        %198 = OpLabel
+        %207 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
+        %208 = OpLoad %int %207
+        %209 = OpConvertSToF %float %208
+        %210 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %211 = OpLoad %float %210
+        %212 = OpFAdd %float %211 %209
+        %213 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %213 %212
+        %214 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %215 = OpLoad %float %214
+        %216 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %217 = OpLoad %float %216
+        %218 = OpFSub %float %215 %217
+        %219 = OpExtInst %float %1 FAbs %218
+        %220 = OpFOrdLessThan %bool %219 %float_0_25
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %221
+        %222 = OpLabel
+        %223 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
+        %224 = OpLoad %int %223
+        %225 = OpConvertSToF %float %224
+        %226 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %227 = OpLoad %float %226
+        %228 = OpFAdd %float %227 %225
+        %229 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %229 %228
+               OpBranch %221
+        %221 = OpLabel
+        %230 = OpLoad %v3float %color
+        %231 = OpExtInst %v3float %1 Normalize %230
+        %232 = OpCompositeExtract %float %231 0
+        %233 = OpCompositeExtract %float %231 1
+        %234 = OpCompositeExtract %float %231 2
+        %235 = OpCompositeConstruct %v4float %232 %233 %234 %float_1
+               OpStore %frag_color %235
+        %236 = OpLoad %v4float %_GLF_pos
+        %237 = OpAccessChain %_ptr_Output_v4float %__0 %int_0
+               OpStore %237 %236
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %41
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %238 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+        %239 = OpLoad %int %i
+        %240 = OpAccessChain %_ptr_Private_int %obj %int_0 %239
+        %241 = OpLoad %int %240
+               OpStore %temp %241
+        %242 = OpLoad %int %i
+        %243 = OpLoad %int %j
+        %244 = OpAccessChain %_ptr_Private_int %obj %int_0 %243
+        %245 = OpLoad %int %244
+        %246 = OpAccessChain %_ptr_Private_int %obj %int_0 %242
+               OpStore %246 %245
+        %247 = OpLoad %int %j
+        %248 = OpLoad %int %temp
+        %249 = OpAccessChain %_ptr_Private_int %obj %int_0 %247
+               OpStore %249 %248
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %42
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %250 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+        %251 = OpLoad %int %h
+        %252 = OpAccessChain %_ptr_Private_int %obj %int_0 %251
+        %253 = OpLoad %int %252
+               OpStore %pivot %253
+        %254 = OpLoad %int %l
+        %255 = OpISub %int %254 %int_1
+               OpStore %i_0 %255
+        %256 = OpLoad %int %l
+               OpStore %j_0 %256
+               OpBranch %257
+        %257 = OpLabel
+               OpLoopMerge %258 %259 None
+               OpBranch %260
+        %260 = OpLabel
+        %261 = OpLoad %int %j_0
+        %262 = OpLoad %int %h
+        %263 = OpISub %int %262 %int_1
+        %264 = OpSLessThanEqual %bool %261 %263
+               OpBranchConditional %264 %265 %258
+        %265 = OpLabel
+        %266 = OpLoad %int %j_0
+        %267 = OpAccessChain %_ptr_Private_int %obj %int_0 %266
+        %268 = OpLoad %int %267
+        %269 = OpLoad %int %pivot
+        %270 = OpSLessThanEqual %bool %268 %269
+               OpSelectionMerge %271 None
+               OpBranchConditional %270 %272 %271
+        %272 = OpLabel
+        %273 = OpLoad %int %i_0
+        %274 = OpIAdd %int %273 %int_1
+               OpStore %i_0 %274
+        %275 = OpLoad %int %i_0
+               OpStore %param %275
+        %276 = OpLoad %int %j_0
+               OpStore %param_0 %276
+        %277 = OpFunctionCall %void %swap_i1_i1_ %param %param_0
+               OpBranch %271
+        %271 = OpLabel
+               OpBranch %259
+        %259 = OpLabel
+        %278 = OpLoad %int %j_0
+        %279 = OpIAdd %int %278 %int_1
+               OpStore %j_0 %279
+               OpBranch %257
+        %258 = OpLabel
+        %280 = OpLoad %int %i_0
+        %281 = OpIAdd %int %280 %int_1
+               OpStore %param_1 %281
+        %282 = OpLoad %int %h
+               OpStore %param_2 %282
+        %283 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2
+        %284 = OpLoad %int %i_0
+        %285 = OpIAdd %int %284 %int_1
+               OpReturnValue %285
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %38
+        %286 = OpLabel
+        %l_0 = OpVariable %_ptr_Function_int Function
+        %h_0 = OpVariable %_ptr_Function_int Function
+        %top = OpVariable %_ptr_Function_int Function
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %p = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+               OpStore %l_0 %int_0
+               OpStore %h_0 %int_9
+               OpStore %top %int_n1
+        %287 = OpLoad %int %top
+        %288 = OpIAdd %int %287 %int_1
+               OpStore %top %288
+        %289 = OpLoad %int %l_0
+        %290 = OpAccessChain %_ptr_Function_int %stack %288
+               OpStore %290 %289
+        %291 = OpLoad %int %top
+        %292 = OpIAdd %int %291 %int_1
+               OpStore %top %292
+        %293 = OpLoad %int %h_0
+        %294 = OpAccessChain %_ptr_Function_int %stack %292
+               OpStore %294 %293
+               OpBranch %295
+        %295 = OpLabel
+               OpLoopMerge %296 %297 None
+               OpBranch %298
+        %298 = OpLabel
+        %299 = OpLoad %int %top
+        %300 = OpSGreaterThanEqual %bool %299 %int_0
+               OpBranchConditional %300 %301 %296
+        %301 = OpLabel
+        %302 = OpLoad %int %top
+        %303 = OpISub %int %302 %int_1
+               OpStore %top %303
+        %304 = OpAccessChain %_ptr_Function_int %stack %302
+        %305 = OpLoad %int %304
+               OpStore %h_0 %305
+        %306 = OpLoad %int %top
+        %307 = OpISub %int %306 %int_1
+               OpStore %top %307
+        %308 = OpAccessChain %_ptr_Function_int %stack %306
+        %309 = OpLoad %int %308
+               OpStore %l_0 %309
+        %310 = OpLoad %int %l_0
+               OpStore %param_3 %310
+        %311 = OpLoad %int %h_0
+               OpStore %param_4 %311
+        %312 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
+               OpStore %p %312
+        %313 = OpLoad %int %p
+        %314 = OpISub %int %313 %int_1
+        %315 = OpLoad %int %l_0
+        %316 = OpSGreaterThan %bool %314 %315
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %317
+        %318 = OpLabel
+        %319 = OpLoad %int %top
+        %320 = OpIAdd %int %319 %int_1
+               OpStore %top %320
+        %321 = OpLoad %int %l_0
+        %322 = OpAccessChain %_ptr_Function_int %stack %320
+               OpStore %322 %321
+        %323 = OpLoad %int %top
+        %324 = OpIAdd %int %323 %int_1
+               OpStore %top %324
+        %325 = OpLoad %int %p
+        %326 = OpISub %int %325 %int_1
+        %327 = OpAccessChain %_ptr_Function_int %stack %324
+               OpStore %327 %326
+               OpBranch %317
+        %317 = OpLabel
+        %328 = OpLoad %int %p
+        %329 = OpIAdd %int %328 %int_1
+        %330 = OpLoad %int %h_0
+        %331 = OpSLessThan %bool %329 %330
+               OpSelectionMerge %332 None
+               OpBranchConditional %331 %333 %332
+        %333 = OpLabel
+        %334 = OpLoad %int %top
+        %335 = OpIAdd %int %334 %int_1
+               OpStore %top %335
+        %336 = OpLoad %int %p
+        %337 = OpIAdd %int %336 %int_1
+        %338 = OpAccessChain %_ptr_Function_int %stack %335
+               OpStore %338 %337
+        %339 = OpLoad %int %top
+        %340 = OpIAdd %int %339 %int_1
+               OpStore %top %340
+        %341 = OpLoad %int %h_0
+        %342 = OpAccessChain %_ptr_Function_int %stack %340
+               OpStore %342 %341
+               OpBranch %332
+        %332 = OpLabel
+               OpBranch %297
+        %297 = OpLabel
+               OpBranch %295
+        %296 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..a320629
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,219 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_239 = i;
+  const int x_241 = obj.numbers[x_239];
+  temp = x_241;
+  const int x_242 = i;
+  const int x_243 = j;
+  const int x_245 = obj.numbers[x_243];
+  obj.numbers[x_242] = x_245;
+  const int x_247 = j;
+  obj.numbers[x_247] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_251 = h;
+  const int x_253 = obj.numbers[x_251];
+  pivot = x_253;
+  const int x_254 = l;
+  i_1 = (x_254 - 1);
+  const int x_256 = l;
+  j_1 = x_256;
+  while (true) {
+    const int x_261 = j_1;
+    const int x_262 = h;
+    if ((x_261 <= (x_262 - 1))) {
+    } else {
+      break;
+    }
+    const int x_268 = obj.numbers[j_1];
+    if ((x_268 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_282 = h;
+  param_3 = x_282;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_288 = (top + 1);
+  top = x_288;
+  stack[x_288] = l_1;
+  const int x_292 = (top + 1);
+  top = x_292;
+  stack[x_292] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_302 = top;
+    top = (x_302 - 1);
+    const int x_305 = stack[x_302];
+    h_1 = x_305;
+    const int x_306 = top;
+    top = (x_306 - 1);
+    const int x_309 = stack[x_306];
+    l_1 = x_309;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_312 = performPartition_i1_i1_(param_4, param_5);
+    p = x_312;
+    if (((p - 1) > l_1)) {
+      const int x_320 = (top + 1);
+      top = x_320;
+      stack[x_320] = l_1;
+      const int x_324 = (top + 1);
+      top = x_324;
+      stack[x_324] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_335 = (top + 1);
+      top = x_335;
+      stack[x_335] = (p + 1);
+      const int x_340 = (top + 1);
+      top = x_340;
+      stack[x_340] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_104 = i_2;
+      const int x_107 = obj.numbers[i_2];
+      const int x_110 = obj.numbers[i_2];
+      obj.numbers[x_104] = (x_107 * x_110);
+    }
+  }
+  quicksort_();
+  const float4 x_116 = x_GLF_FragCoord;
+  const float2 x_119 = asfloat(x_34[0].xy);
+  uv = (float2(x_116.x, x_116.y) / x_119);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_122 = obj.numbers[0];
+  const float x_125 = color.x;
+  color.x = (x_125 + float(x_122));
+  const float x_129 = uv.x;
+  if ((x_129 > 0.25f)) {
+    const int x_134 = obj.numbers[1];
+    const float x_137 = color.x;
+    color.x = (x_137 + float(x_134));
+  }
+  const float x_141 = uv.x;
+  if ((x_141 > 0.5f)) {
+    const int x_146 = obj.numbers[2];
+    const float x_149 = color.y;
+    color.y = (x_149 + float(x_146));
+  }
+  const float x_153 = uv.x;
+  if ((x_153 > 0.75f)) {
+    const int x_158 = obj.numbers[3];
+    const float x_161 = color.z;
+    color.z = (x_161 + float(x_158));
+  }
+  const int x_165 = obj.numbers[4];
+  const float x_168 = color.y;
+  color.y = (x_168 + float(x_165));
+  const float x_172 = uv.y;
+  if ((x_172 > 0.25f)) {
+    const int x_177 = obj.numbers[5];
+    const float x_180 = color.x;
+    color.x = (x_180 + float(x_177));
+  }
+  const float x_184 = uv.y;
+  if ((x_184 > 0.5f)) {
+    const int x_189 = obj.numbers[6];
+    const float x_192 = color.y;
+    color.y = (x_192 + float(x_189));
+  }
+  const float x_196 = uv.y;
+  if ((x_196 > 0.75f)) {
+    const int x_201 = obj.numbers[7];
+    const float x_204 = color.z;
+    color.z = (x_204 + float(x_201));
+  }
+  const int x_208 = obj.numbers[8];
+  const float x_211 = color.z;
+  color.z = (x_211 + float(x_208));
+  const float x_215 = uv.x;
+  const float x_217 = uv.y;
+  if ((abs((x_215 - x_217)) < 0.25f)) {
+    const int x_224 = obj.numbers[9];
+    const float x_227 = color.x;
+    color.x = (x_227 + float(x_224));
+  }
+  const float3 x_231 = normalize(color);
+  frag_color = float4(x_231.x, x_231.y, x_231.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f82023b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.msl
@@ -0,0 +1,266 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_6) {
+  int temp = 0;
+  int const x_239 = *(i);
+  int const x_241 = (*(tint_symbol_6)).numbers.arr[x_239];
+  temp = x_241;
+  int const x_242 = *(i);
+  int const x_243 = *(j);
+  int const x_245 = (*(tint_symbol_6)).numbers.arr[x_243];
+  (*(tint_symbol_6)).numbers.arr[x_242] = x_245;
+  int const x_247 = *(j);
+  int const x_248 = temp;
+  (*(tint_symbol_6)).numbers.arr[x_247] = x_248;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_7) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_251 = *(h);
+  int const x_253 = (*(tint_symbol_7)).numbers.arr[x_251];
+  pivot = x_253;
+  int const x_254 = *(l);
+  i_1 = (x_254 - 1);
+  int const x_256 = *(l);
+  j_1 = x_256;
+  while (true) {
+    int const x_261 = j_1;
+    int const x_262 = *(h);
+    if ((x_261 <= (x_262 - 1))) {
+    } else {
+      break;
+    }
+    int const x_266 = j_1;
+    int const x_268 = (*(tint_symbol_7)).numbers.arr[x_266];
+    int const x_269 = pivot;
+    if ((x_268 <= x_269)) {
+      int const x_273 = i_1;
+      i_1 = (x_273 + 1);
+      int const x_275 = i_1;
+      param = x_275;
+      int const x_276 = j_1;
+      param_1 = x_276;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_7);
+    }
+    {
+      int const x_278 = j_1;
+      j_1 = (x_278 + 1);
+    }
+  }
+  int const x_280 = i_1;
+  param_2 = (x_280 + 1);
+  int const x_282 = *(h);
+  param_3 = x_282;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_7);
+  int const x_284 = i_1;
+  return (x_284 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_8) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_287 = top;
+  int const x_288 = (x_287 + 1);
+  top = x_288;
+  int const x_289 = l_1;
+  stack.arr[x_288] = x_289;
+  int const x_291 = top;
+  int const x_292 = (x_291 + 1);
+  top = x_292;
+  int const x_293 = h_1;
+  stack.arr[x_292] = x_293;
+  while (true) {
+    int const x_299 = top;
+    if ((x_299 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_302 = top;
+    top = (x_302 - 1);
+    int const x_305 = stack.arr[x_302];
+    h_1 = x_305;
+    int const x_306 = top;
+    top = (x_306 - 1);
+    int const x_309 = stack.arr[x_306];
+    l_1 = x_309;
+    int const x_310 = l_1;
+    param_4 = x_310;
+    int const x_311 = h_1;
+    param_5 = x_311;
+    int const x_312 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_8);
+    p = x_312;
+    int const x_313 = p;
+    int const x_315 = l_1;
+    if (((x_313 - 1) > x_315)) {
+      int const x_319 = top;
+      int const x_320 = (x_319 + 1);
+      top = x_320;
+      int const x_321 = l_1;
+      stack.arr[x_320] = x_321;
+      int const x_323 = top;
+      int const x_324 = (x_323 + 1);
+      top = x_324;
+      int const x_325 = p;
+      stack.arr[x_324] = (x_325 - 1);
+    }
+    int const x_328 = p;
+    int const x_330 = h_1;
+    if (((x_328 + 1) < x_330)) {
+      int const x_334 = top;
+      int const x_335 = (x_334 + 1);
+      top = x_335;
+      int const x_336 = p;
+      stack.arr[x_335] = (x_336 + 1);
+      int const x_339 = top;
+      int const x_340 = (x_339 + 1);
+      top = x_340;
+      int const x_341 = h_1;
+      stack.arr[x_340] = x_341;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_34, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10, thread QuicksortObject* const tint_symbol_11, thread float4* const tint_symbol_12, thread float4* const tint_symbol_13) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_90 = *(tint_symbol_9);
+  *(tint_symbol_10) = ((x_90 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_97 = i_2;
+    if ((x_97 < 10)) {
+    } else {
+      break;
+    }
+    int const x_100 = i_2;
+    int const x_101 = i_2;
+    (*(tint_symbol_11)).numbers.arr[x_100] = (10 - x_101);
+    int const x_104 = i_2;
+    int const x_105 = i_2;
+    int const x_107 = (*(tint_symbol_11)).numbers.arr[x_105];
+    int const x_108 = i_2;
+    int const x_110 = (*(tint_symbol_11)).numbers.arr[x_108];
+    (*(tint_symbol_11)).numbers.arr[x_104] = (x_107 * x_110);
+    {
+      int const x_113 = i_2;
+      i_2 = (x_113 + 1);
+    }
+  }
+  quicksort_(tint_symbol_11);
+  float4 const x_116 = *(tint_symbol_10);
+  float2 const x_119 = x_34.resolution;
+  uv = (float2(x_116.x, x_116.y) / x_119);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_122 = (*(tint_symbol_11)).numbers.arr[0];
+  float const x_125 = color.x;
+  color.x = (x_125 + float(x_122));
+  float const x_129 = uv.x;
+  if ((x_129 > 0.25f)) {
+    int const x_134 = (*(tint_symbol_11)).numbers.arr[1];
+    float const x_137 = color.x;
+    color.x = (x_137 + float(x_134));
+  }
+  float const x_141 = uv.x;
+  if ((x_141 > 0.5f)) {
+    int const x_146 = (*(tint_symbol_11)).numbers.arr[2];
+    float const x_149 = color.y;
+    color.y = (x_149 + float(x_146));
+  }
+  float const x_153 = uv.x;
+  if ((x_153 > 0.75f)) {
+    int const x_158 = (*(tint_symbol_11)).numbers.arr[3];
+    float const x_161 = color.z;
+    color.z = (x_161 + float(x_158));
+  }
+  int const x_165 = (*(tint_symbol_11)).numbers.arr[4];
+  float const x_168 = color.y;
+  color.y = (x_168 + float(x_165));
+  float const x_172 = uv.y;
+  if ((x_172 > 0.25f)) {
+    int const x_177 = (*(tint_symbol_11)).numbers.arr[5];
+    float const x_180 = color.x;
+    color.x = (x_180 + float(x_177));
+  }
+  float const x_184 = uv.y;
+  if ((x_184 > 0.5f)) {
+    int const x_189 = (*(tint_symbol_11)).numbers.arr[6];
+    float const x_192 = color.y;
+    color.y = (x_192 + float(x_189));
+  }
+  float const x_196 = uv.y;
+  if ((x_196 > 0.75f)) {
+    int const x_201 = (*(tint_symbol_11)).numbers.arr[7];
+    float const x_204 = color.z;
+    color.z = (x_204 + float(x_201));
+  }
+  int const x_208 = (*(tint_symbol_11)).numbers.arr[8];
+  float const x_211 = color.z;
+  color.z = (x_211 + float(x_208));
+  float const x_215 = uv.x;
+  float const x_217 = uv.y;
+  if ((fabs((x_215 - x_217)) < 0.25f)) {
+    int const x_224 = (*(tint_symbol_11)).numbers.arr[9];
+    float const x_227 = color.x;
+    color.x = (x_227 + float(x_224));
+  }
+  float3 const x_230 = color;
+  float3 const x_231 = normalize(x_230);
+  *(tint_symbol_12) = float4(x_231.x, x_231.y, x_231.z, 1.0f);
+  float4 const x_236 = *(tint_symbol_9);
+  *(tint_symbol_13) = x_236;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_14 = 0.0f;
+  thread float4 tint_symbol_15 = 0.0f;
+  thread QuicksortObject tint_symbol_16 = {};
+  thread float4 tint_symbol_17 = 0.0f;
+  thread float4 tint_symbol_18 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_14 = x_GLF_pos_param;
+  main_1(x_34, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_18));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_17, .gl_Position=tint_symbol_18};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..db05970
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,567 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 390
+; Schema: 0
+               OpCapability Shader
+        %356 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %37 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %55 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %115 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %123 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %195 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %199 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %203 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+        %206 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %244 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %375 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %29
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %35 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %37
+         %39 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Private_int %obj %uint_0 %39
+         %43 = OpLoad %int %42
+               OpStore %temp %43
+         %45 = OpLoad %int %i
+         %47 = OpLoad %int %j
+         %48 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Private_int %obj %uint_0 %45
+               OpStore %50 %49
+         %52 = OpLoad %int %j
+         %53 = OpLoad %int %temp
+         %54 = OpAccessChain %_ptr_Private_int %obj %uint_0 %52
+               OpStore %54 %53
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %55
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %59 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %37
+        %i_1 = OpVariable %_ptr_Function_int Function %37
+        %j_1 = OpVariable %_ptr_Function_int Function %37
+      %param = OpVariable %_ptr_Function_int Function %37
+    %param_1 = OpVariable %_ptr_Function_int Function %37
+    %param_2 = OpVariable %_ptr_Function_int Function %37
+    %param_3 = OpVariable %_ptr_Function_int Function %37
+         %68 = OpLoad %int %h
+         %69 = OpAccessChain %_ptr_Private_int %obj %uint_0 %68
+         %70 = OpLoad %int %69
+               OpStore %pivot %70
+         %72 = OpLoad %int %l
+         %74 = OpISub %int %72 %int_1
+               OpStore %i_1 %74
+         %76 = OpLoad %int %l
+               OpStore %j_1 %76
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+         %81 = OpLoad %int %j_1
+         %83 = OpLoad %int %h
+         %84 = OpISub %int %83 %int_1
+         %85 = OpSLessThanEqual %bool %81 %84
+               OpSelectionMerge %87 None
+               OpBranchConditional %85 %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %78
+         %87 = OpLabel
+         %90 = OpLoad %int %j_1
+         %91 = OpAccessChain %_ptr_Private_int %obj %uint_0 %90
+         %92 = OpLoad %int %91
+         %93 = OpLoad %int %pivot
+         %94 = OpSLessThanEqual %bool %92 %93
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+         %97 = OpLoad %int %i_1
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %i_1 %98
+         %99 = OpLoad %int %i_1
+               OpStore %param %99
+        %100 = OpLoad %int %j_1
+               OpStore %param_1 %100
+        %101 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %95
+         %95 = OpLabel
+               OpBranch %79
+         %79 = OpLabel
+        %104 = OpLoad %int %j_1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %j_1 %105
+               OpBranch %77
+         %78 = OpLabel
+        %106 = OpLoad %int %i_1
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %param_2 %107
+        %109 = OpLoad %int %h
+               OpStore %param_3 %109
+        %110 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %113 = OpLoad %int %i_1
+        %114 = OpIAdd %int %113 %int_1
+               OpReturnValue %114
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %115
+        %117 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %37
+        %h_1 = OpVariable %_ptr_Function_int Function %37
+        %top = OpVariable %_ptr_Function_int Function %37
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %123
+          %p = OpVariable %_ptr_Function_int Function %37
+    %param_4 = OpVariable %_ptr_Function_int Function %37
+    %param_5 = OpVariable %_ptr_Function_int Function %37
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %130 = OpLoad %int %top
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %top %131
+        %132 = OpLoad %int %l_1
+        %133 = OpAccessChain %_ptr_Function_int %stack %131
+               OpStore %133 %132
+        %134 = OpLoad %int %top
+        %135 = OpIAdd %int %134 %int_1
+               OpStore %top %135
+        %136 = OpLoad %int %h_1
+        %137 = OpAccessChain %_ptr_Function_int %stack %135
+               OpStore %137 %136
+               OpBranch %138
+        %138 = OpLabel
+               OpLoopMerge %139 %140 None
+               OpBranch %141
+        %141 = OpLabel
+        %142 = OpLoad %int %top
+        %143 = OpSGreaterThanEqual %bool %142 %int_0
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %139
+        %144 = OpLabel
+        %147 = OpLoad %int %top
+        %148 = OpISub %int %147 %int_1
+               OpStore %top %148
+        %149 = OpAccessChain %_ptr_Function_int %stack %147
+        %150 = OpLoad %int %149
+               OpStore %h_1 %150
+        %151 = OpLoad %int %top
+        %152 = OpISub %int %151 %int_1
+               OpStore %top %152
+        %153 = OpAccessChain %_ptr_Function_int %stack %151
+        %154 = OpLoad %int %153
+               OpStore %l_1 %154
+        %155 = OpLoad %int %l_1
+               OpStore %param_4 %155
+        %156 = OpLoad %int %h_1
+               OpStore %param_5 %156
+        %157 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %157
+        %160 = OpLoad %int %p
+        %161 = OpLoad %int %l_1
+        %162 = OpISub %int %160 %int_1
+        %163 = OpSGreaterThan %bool %162 %161
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %164
+        %165 = OpLabel
+        %166 = OpLoad %int %top
+        %167 = OpIAdd %int %166 %int_1
+               OpStore %top %167
+        %168 = OpLoad %int %l_1
+        %169 = OpAccessChain %_ptr_Function_int %stack %167
+               OpStore %169 %168
+        %170 = OpLoad %int %top
+        %171 = OpIAdd %int %170 %int_1
+               OpStore %top %171
+        %172 = OpLoad %int %p
+        %173 = OpAccessChain %_ptr_Function_int %stack %171
+        %174 = OpISub %int %172 %int_1
+               OpStore %173 %174
+               OpBranch %164
+        %164 = OpLabel
+        %175 = OpLoad %int %p
+        %176 = OpLoad %int %h_1
+        %177 = OpIAdd %int %175 %int_1
+        %178 = OpSLessThan %bool %177 %176
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %179
+        %180 = OpLabel
+        %181 = OpLoad %int %top
+        %182 = OpIAdd %int %181 %int_1
+               OpStore %top %182
+        %183 = OpLoad %int %p
+        %184 = OpAccessChain %_ptr_Function_int %stack %182
+        %185 = OpIAdd %int %183 %int_1
+               OpStore %184 %185
+        %186 = OpLoad %int %top
+        %187 = OpIAdd %int %186 %int_1
+               OpStore %top %187
+        %188 = OpLoad %int %h_1
+        %189 = OpAccessChain %_ptr_Function_int %stack %187
+               OpStore %189 %188
+               OpBranch %179
+        %179 = OpLabel
+               OpBranch %140
+        %140 = OpLabel
+               OpBranch %138
+        %139 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %115
+        %191 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %37
+         %uv = OpVariable %_ptr_Function_v2float Function %195
+      %color = OpVariable %_ptr_Function_v3float Function %199
+        %200 = OpLoad %v4float %x_GLF_pos
+        %204 = OpFAdd %v4float %200 %203
+        %207 = OpFMul %v4float %204 %206
+               OpStore %x_GLF_FragCoord %207
+               OpStore %i_2 %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %i_2
+        %214 = OpSLessThan %bool %212 %int_10
+               OpSelectionMerge %215 None
+               OpBranchConditional %214 %216 %217
+        %216 = OpLabel
+               OpBranch %215
+        %217 = OpLabel
+               OpBranch %209
+        %215 = OpLabel
+        %218 = OpLoad %int %i_2
+        %219 = OpLoad %int %i_2
+        %220 = OpAccessChain %_ptr_Private_int %obj %uint_0 %218
+        %221 = OpISub %int %int_10 %219
+               OpStore %220 %221
+        %222 = OpLoad %int %i_2
+        %223 = OpLoad %int %i_2
+        %224 = OpAccessChain %_ptr_Private_int %obj %uint_0 %223
+        %225 = OpLoad %int %224
+        %226 = OpLoad %int %i_2
+        %227 = OpAccessChain %_ptr_Private_int %obj %uint_0 %226
+        %228 = OpLoad %int %227
+        %229 = OpAccessChain %_ptr_Private_int %obj %uint_0 %222
+        %230 = OpIMul %int %225 %228
+               OpStore %229 %230
+               OpBranch %210
+        %210 = OpLabel
+        %231 = OpLoad %int %i_2
+        %232 = OpIAdd %int %231 %int_1
+               OpStore %i_2 %232
+               OpBranch %208
+        %209 = OpLabel
+        %233 = OpFunctionCall %void %quicksort_
+        %234 = OpLoad %v4float %x_GLF_FragCoord
+        %236 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %237 = OpLoad %v2float %236
+        %238 = OpCompositeExtract %float %234 0
+        %239 = OpCompositeExtract %float %234 1
+        %240 = OpCompositeConstruct %v2float %238 %239
+        %241 = OpFDiv %v2float %240 %237
+               OpStore %uv %241
+               OpStore %color %244
+        %245 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %246 = OpLoad %int %245
+        %248 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %249 = OpLoad %float %248
+        %250 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %251 = OpConvertSToF %float %246
+        %252 = OpFAdd %float %249 %251
+               OpStore %250 %252
+        %253 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %254 = OpLoad %float %253
+        %256 = OpFOrdGreaterThan %bool %254 %float_0_25
+               OpSelectionMerge %257 None
+               OpBranchConditional %256 %258 %257
+        %258 = OpLabel
+        %259 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %260 = OpLoad %int %259
+        %261 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %262 = OpLoad %float %261
+        %263 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %264 = OpConvertSToF %float %260
+        %265 = OpFAdd %float %262 %264
+               OpStore %263 %265
+               OpBranch %257
+        %257 = OpLabel
+        %266 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %267 = OpLoad %float %266
+        %269 = OpFOrdGreaterThan %bool %267 %float_0_5
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %270
+        %271 = OpLabel
+        %273 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %274 = OpLoad %int %273
+        %276 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %277 = OpLoad %float %276
+        %278 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %279 = OpConvertSToF %float %274
+        %280 = OpFAdd %float %277 %279
+               OpStore %278 %280
+               OpBranch %270
+        %270 = OpLabel
+        %281 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %282 = OpLoad %float %281
+        %284 = OpFOrdGreaterThan %bool %282 %float_0_75
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %285
+        %286 = OpLabel
+        %288 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %289 = OpLoad %int %288
+        %291 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %292 = OpLoad %float %291
+        %293 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %294 = OpConvertSToF %float %289
+        %295 = OpFAdd %float %292 %294
+               OpStore %293 %295
+               OpBranch %285
+        %285 = OpLabel
+        %297 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %298 = OpLoad %int %297
+        %299 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %300 = OpLoad %float %299
+        %301 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %302 = OpConvertSToF %float %298
+        %303 = OpFAdd %float %300 %302
+               OpStore %301 %303
+        %304 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %305 = OpLoad %float %304
+        %306 = OpFOrdGreaterThan %bool %305 %float_0_25
+               OpSelectionMerge %307 None
+               OpBranchConditional %306 %308 %307
+        %308 = OpLabel
+        %310 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %311 = OpLoad %int %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %313 = OpLoad %float %312
+        %314 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %315 = OpConvertSToF %float %311
+        %316 = OpFAdd %float %313 %315
+               OpStore %314 %316
+               OpBranch %307
+        %307 = OpLabel
+        %317 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %318 = OpLoad %float %317
+        %319 = OpFOrdGreaterThan %bool %318 %float_0_5
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %320
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %324 = OpLoad %int %323
+        %325 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %326 = OpLoad %float %325
+        %327 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %328 = OpConvertSToF %float %324
+        %329 = OpFAdd %float %326 %328
+               OpStore %327 %329
+               OpBranch %320
+        %320 = OpLabel
+        %330 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %331 = OpLoad %float %330
+        %332 = OpFOrdGreaterThan %bool %331 %float_0_75
+               OpSelectionMerge %333 None
+               OpBranchConditional %332 %334 %333
+        %334 = OpLabel
+        %336 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %337 = OpLoad %int %336
+        %338 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %339 = OpLoad %float %338
+        %340 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %341 = OpConvertSToF %float %337
+        %342 = OpFAdd %float %339 %341
+               OpStore %340 %342
+               OpBranch %333
+        %333 = OpLabel
+        %344 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %345 = OpLoad %int %344
+        %346 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %347 = OpLoad %float %346
+        %348 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %349 = OpConvertSToF %float %345
+        %350 = OpFAdd %float %347 %349
+               OpStore %348 %350
+        %351 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %352 = OpLoad %float %351
+        %353 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %354 = OpLoad %float %353
+        %357 = OpFSub %float %352 %354
+        %355 = OpExtInst %float %356 FAbs %357
+        %358 = OpFOrdLessThan %bool %355 %float_0_25
+               OpSelectionMerge %359 None
+               OpBranchConditional %358 %360 %359
+        %360 = OpLabel
+        %361 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %362 = OpLoad %int %361
+        %363 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %364 = OpLoad %float %363
+        %365 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %366 = OpConvertSToF %float %362
+        %367 = OpFAdd %float %364 %366
+               OpStore %365 %367
+               OpBranch %359
+        %359 = OpLabel
+        %368 = OpLoad %v3float %color
+        %369 = OpExtInst %v3float %356 Normalize %368
+        %370 = OpCompositeExtract %float %369 0
+        %371 = OpCompositeExtract %float %369 1
+        %372 = OpCompositeExtract %float %369 2
+        %373 = OpCompositeConstruct %v4float %370 %371 %372 %float_1
+               OpStore %frag_color %373
+        %374 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %374
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %375
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %379 = OpLabel
+        %380 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %380
+        %381 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %381
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %115
+        %383 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %384 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %384
+        %385 = OpFunctionCall %void %main_1
+        %387 = OpLoad %v4float %frag_color
+        %388 = OpLoad %v4float %gl_Position
+        %389 = OpCompositeConstruct %main_out %387 %388
+        %386 = OpFunctionCall %void %tint_symbol_4 %389
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..134b77f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,264 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_239 : i32 = *(i);
+  let x_241 : i32 = obj.numbers[x_239];
+  temp = x_241;
+  let x_242 : i32 = *(i);
+  let x_243 : i32 = *(j);
+  let x_245 : i32 = obj.numbers[x_243];
+  obj.numbers[x_242] = x_245;
+  let x_247 : i32 = *(j);
+  let x_248 : i32 = temp;
+  obj.numbers[x_247] = x_248;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_251 : i32 = *(h);
+  let x_253 : i32 = obj.numbers[x_251];
+  pivot = x_253;
+  let x_254 : i32 = *(l);
+  i_1 = (x_254 - 1);
+  let x_256 : i32 = *(l);
+  j_1 = x_256;
+  loop {
+    let x_261 : i32 = j_1;
+    let x_262 : i32 = *(h);
+    if ((x_261 <= (x_262 - 1))) {
+    } else {
+      break;
+    }
+    let x_266 : i32 = j_1;
+    let x_268 : i32 = obj.numbers[x_266];
+    let x_269 : i32 = pivot;
+    if ((x_268 <= x_269)) {
+      let x_273 : i32 = i_1;
+      i_1 = (x_273 + 1);
+      let x_275 : i32 = i_1;
+      param = x_275;
+      let x_276 : i32 = j_1;
+      param_1 = x_276;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_278 : i32 = j_1;
+      j_1 = (x_278 + 1);
+    }
+  }
+  let x_280 : i32 = i_1;
+  param_2 = (x_280 + 1);
+  let x_282 : i32 = *(h);
+  param_3 = x_282;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_284 : i32 = i_1;
+  return (x_284 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_287 : i32 = top;
+  let x_288 : i32 = (x_287 + 1);
+  top = x_288;
+  let x_289 : i32 = l_1;
+  stack[x_288] = x_289;
+  let x_291 : i32 = top;
+  let x_292 : i32 = (x_291 + 1);
+  top = x_292;
+  let x_293 : i32 = h_1;
+  stack[x_292] = x_293;
+  loop {
+    let x_299 : i32 = top;
+    if ((x_299 >= 0)) {
+    } else {
+      break;
+    }
+    let x_302 : i32 = top;
+    top = (x_302 - 1);
+    let x_305 : i32 = stack[x_302];
+    h_1 = x_305;
+    let x_306 : i32 = top;
+    top = (x_306 - 1);
+    let x_309 : i32 = stack[x_306];
+    l_1 = x_309;
+    let x_310 : i32 = l_1;
+    param_4 = x_310;
+    let x_311 : i32 = h_1;
+    param_5 = x_311;
+    let x_312 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_312;
+    let x_313 : i32 = p;
+    let x_315 : i32 = l_1;
+    if (((x_313 - 1) > x_315)) {
+      let x_319 : i32 = top;
+      let x_320 : i32 = (x_319 + 1);
+      top = x_320;
+      let x_321 : i32 = l_1;
+      stack[x_320] = x_321;
+      let x_323 : i32 = top;
+      let x_324 : i32 = (x_323 + 1);
+      top = x_324;
+      let x_325 : i32 = p;
+      stack[x_324] = (x_325 - 1);
+    }
+    let x_328 : i32 = p;
+    let x_330 : i32 = h_1;
+    if (((x_328 + 1) < x_330)) {
+      let x_334 : i32 = top;
+      let x_335 : i32 = (x_334 + 1);
+      top = x_335;
+      let x_336 : i32 = p;
+      stack[x_335] = (x_336 + 1);
+      let x_339 : i32 = top;
+      let x_340 : i32 = (x_339 + 1);
+      top = x_340;
+      let x_341 : i32 = h_1;
+      stack[x_340] = x_341;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_90 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_90 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_97 : i32 = i_2;
+    if ((x_97 < 10)) {
+    } else {
+      break;
+    }
+    let x_100 : i32 = i_2;
+    let x_101 : i32 = i_2;
+    obj.numbers[x_100] = (10 - x_101);
+    let x_104 : i32 = i_2;
+    let x_105 : i32 = i_2;
+    let x_107 : i32 = obj.numbers[x_105];
+    let x_108 : i32 = i_2;
+    let x_110 : i32 = obj.numbers[x_108];
+    obj.numbers[x_104] = (x_107 * x_110);
+
+    continuing {
+      let x_113 : i32 = i_2;
+      i_2 = (x_113 + 1);
+    }
+  }
+  quicksort_();
+  let x_116 : vec4<f32> = x_GLF_FragCoord;
+  let x_119 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_116.x, x_116.y) / x_119);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_122 : i32 = obj.numbers[0];
+  let x_125 : f32 = color.x;
+  color.x = (x_125 + f32(x_122));
+  let x_129 : f32 = uv.x;
+  if ((x_129 > 0.25)) {
+    let x_134 : i32 = obj.numbers[1];
+    let x_137 : f32 = color.x;
+    color.x = (x_137 + f32(x_134));
+  }
+  let x_141 : f32 = uv.x;
+  if ((x_141 > 0.5)) {
+    let x_146 : i32 = obj.numbers[2];
+    let x_149 : f32 = color.y;
+    color.y = (x_149 + f32(x_146));
+  }
+  let x_153 : f32 = uv.x;
+  if ((x_153 > 0.75)) {
+    let x_158 : i32 = obj.numbers[3];
+    let x_161 : f32 = color.z;
+    color.z = (x_161 + f32(x_158));
+  }
+  let x_165 : i32 = obj.numbers[4];
+  let x_168 : f32 = color.y;
+  color.y = (x_168 + f32(x_165));
+  let x_172 : f32 = uv.y;
+  if ((x_172 > 0.25)) {
+    let x_177 : i32 = obj.numbers[5];
+    let x_180 : f32 = color.x;
+    color.x = (x_180 + f32(x_177));
+  }
+  let x_184 : f32 = uv.y;
+  if ((x_184 > 0.5)) {
+    let x_189 : i32 = obj.numbers[6];
+    let x_192 : f32 = color.y;
+    color.y = (x_192 + f32(x_189));
+  }
+  let x_196 : f32 = uv.y;
+  if ((x_196 > 0.75)) {
+    let x_201 : i32 = obj.numbers[7];
+    let x_204 : f32 = color.z;
+    color.z = (x_204 + f32(x_201));
+  }
+  let x_208 : i32 = obj.numbers[8];
+  let x_211 : f32 = color.z;
+  color.z = (x_211 + f32(x_208));
+  let x_215 : f32 = uv.x;
+  let x_217 : f32 = uv.y;
+  if ((abs((x_215 - x_217)) < 0.25)) {
+    let x_224 : i32 = obj.numbers[9];
+    let x_227 : f32 = color.x;
+    color.x = (x_227 + f32(x_224));
+  }
+  let x_230 : vec3<f32> = color;
+  let x_231 : vec3<f32> = normalize(x_230);
+  frag_color = vec4<f32>(x_231.x, x_231.y, x_231.z, 1.0);
+  let x_236 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_236;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
new file mode 100644
index 0000000..134b77f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
@@ -0,0 +1,264 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_239 : i32 = *(i);
+  let x_241 : i32 = obj.numbers[x_239];
+  temp = x_241;
+  let x_242 : i32 = *(i);
+  let x_243 : i32 = *(j);
+  let x_245 : i32 = obj.numbers[x_243];
+  obj.numbers[x_242] = x_245;
+  let x_247 : i32 = *(j);
+  let x_248 : i32 = temp;
+  obj.numbers[x_247] = x_248;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_251 : i32 = *(h);
+  let x_253 : i32 = obj.numbers[x_251];
+  pivot = x_253;
+  let x_254 : i32 = *(l);
+  i_1 = (x_254 - 1);
+  let x_256 : i32 = *(l);
+  j_1 = x_256;
+  loop {
+    let x_261 : i32 = j_1;
+    let x_262 : i32 = *(h);
+    if ((x_261 <= (x_262 - 1))) {
+    } else {
+      break;
+    }
+    let x_266 : i32 = j_1;
+    let x_268 : i32 = obj.numbers[x_266];
+    let x_269 : i32 = pivot;
+    if ((x_268 <= x_269)) {
+      let x_273 : i32 = i_1;
+      i_1 = (x_273 + 1);
+      let x_275 : i32 = i_1;
+      param = x_275;
+      let x_276 : i32 = j_1;
+      param_1 = x_276;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_278 : i32 = j_1;
+      j_1 = (x_278 + 1);
+    }
+  }
+  let x_280 : i32 = i_1;
+  param_2 = (x_280 + 1);
+  let x_282 : i32 = *(h);
+  param_3 = x_282;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_284 : i32 = i_1;
+  return (x_284 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_287 : i32 = top;
+  let x_288 : i32 = (x_287 + 1);
+  top = x_288;
+  let x_289 : i32 = l_1;
+  stack[x_288] = x_289;
+  let x_291 : i32 = top;
+  let x_292 : i32 = (x_291 + 1);
+  top = x_292;
+  let x_293 : i32 = h_1;
+  stack[x_292] = x_293;
+  loop {
+    let x_299 : i32 = top;
+    if ((x_299 >= 0)) {
+    } else {
+      break;
+    }
+    let x_302 : i32 = top;
+    top = (x_302 - 1);
+    let x_305 : i32 = stack[x_302];
+    h_1 = x_305;
+    let x_306 : i32 = top;
+    top = (x_306 - 1);
+    let x_309 : i32 = stack[x_306];
+    l_1 = x_309;
+    let x_310 : i32 = l_1;
+    param_4 = x_310;
+    let x_311 : i32 = h_1;
+    param_5 = x_311;
+    let x_312 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_312;
+    let x_313 : i32 = p;
+    let x_315 : i32 = l_1;
+    if (((x_313 - 1) > x_315)) {
+      let x_319 : i32 = top;
+      let x_320 : i32 = (x_319 + 1);
+      top = x_320;
+      let x_321 : i32 = l_1;
+      stack[x_320] = x_321;
+      let x_323 : i32 = top;
+      let x_324 : i32 = (x_323 + 1);
+      top = x_324;
+      let x_325 : i32 = p;
+      stack[x_324] = (x_325 - 1);
+    }
+    let x_328 : i32 = p;
+    let x_330 : i32 = h_1;
+    if (((x_328 + 1) < x_330)) {
+      let x_334 : i32 = top;
+      let x_335 : i32 = (x_334 + 1);
+      top = x_335;
+      let x_336 : i32 = p;
+      stack[x_335] = (x_336 + 1);
+      let x_339 : i32 = top;
+      let x_340 : i32 = (x_339 + 1);
+      top = x_340;
+      let x_341 : i32 = h_1;
+      stack[x_340] = x_341;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_90 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_90 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_97 : i32 = i_2;
+    if ((x_97 < 10)) {
+    } else {
+      break;
+    }
+    let x_100 : i32 = i_2;
+    let x_101 : i32 = i_2;
+    obj.numbers[x_100] = (10 - x_101);
+    let x_104 : i32 = i_2;
+    let x_105 : i32 = i_2;
+    let x_107 : i32 = obj.numbers[x_105];
+    let x_108 : i32 = i_2;
+    let x_110 : i32 = obj.numbers[x_108];
+    obj.numbers[x_104] = (x_107 * x_110);
+
+    continuing {
+      let x_113 : i32 = i_2;
+      i_2 = (x_113 + 1);
+    }
+  }
+  quicksort_();
+  let x_116 : vec4<f32> = x_GLF_FragCoord;
+  let x_119 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_116.x, x_116.y) / x_119);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_122 : i32 = obj.numbers[0];
+  let x_125 : f32 = color.x;
+  color.x = (x_125 + f32(x_122));
+  let x_129 : f32 = uv.x;
+  if ((x_129 > 0.25)) {
+    let x_134 : i32 = obj.numbers[1];
+    let x_137 : f32 = color.x;
+    color.x = (x_137 + f32(x_134));
+  }
+  let x_141 : f32 = uv.x;
+  if ((x_141 > 0.5)) {
+    let x_146 : i32 = obj.numbers[2];
+    let x_149 : f32 = color.y;
+    color.y = (x_149 + f32(x_146));
+  }
+  let x_153 : f32 = uv.x;
+  if ((x_153 > 0.75)) {
+    let x_158 : i32 = obj.numbers[3];
+    let x_161 : f32 = color.z;
+    color.z = (x_161 + f32(x_158));
+  }
+  let x_165 : i32 = obj.numbers[4];
+  let x_168 : f32 = color.y;
+  color.y = (x_168 + f32(x_165));
+  let x_172 : f32 = uv.y;
+  if ((x_172 > 0.25)) {
+    let x_177 : i32 = obj.numbers[5];
+    let x_180 : f32 = color.x;
+    color.x = (x_180 + f32(x_177));
+  }
+  let x_184 : f32 = uv.y;
+  if ((x_184 > 0.5)) {
+    let x_189 : i32 = obj.numbers[6];
+    let x_192 : f32 = color.y;
+    color.y = (x_192 + f32(x_189));
+  }
+  let x_196 : f32 = uv.y;
+  if ((x_196 > 0.75)) {
+    let x_201 : i32 = obj.numbers[7];
+    let x_204 : f32 = color.z;
+    color.z = (x_204 + f32(x_201));
+  }
+  let x_208 : i32 = obj.numbers[8];
+  let x_211 : f32 = color.z;
+  color.z = (x_211 + f32(x_208));
+  let x_215 : f32 = uv.x;
+  let x_217 : f32 = uv.y;
+  if ((abs((x_215 - x_217)) < 0.25)) {
+    let x_224 : i32 = obj.numbers[9];
+    let x_227 : f32 = color.x;
+    color.x = (x_227 + f32(x_224));
+  }
+  let x_230 : vec3<f32> = color;
+  let x_231 : vec3<f32> = normalize(x_230);
+  frag_color = vec4<f32>(x_231.x, x_231.y, x_231.z, 1.0);
+  let x_236 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_236;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..a320629
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,219 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_239 = i;
+  const int x_241 = obj.numbers[x_239];
+  temp = x_241;
+  const int x_242 = i;
+  const int x_243 = j;
+  const int x_245 = obj.numbers[x_243];
+  obj.numbers[x_242] = x_245;
+  const int x_247 = j;
+  obj.numbers[x_247] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_251 = h;
+  const int x_253 = obj.numbers[x_251];
+  pivot = x_253;
+  const int x_254 = l;
+  i_1 = (x_254 - 1);
+  const int x_256 = l;
+  j_1 = x_256;
+  while (true) {
+    const int x_261 = j_1;
+    const int x_262 = h;
+    if ((x_261 <= (x_262 - 1))) {
+    } else {
+      break;
+    }
+    const int x_268 = obj.numbers[j_1];
+    if ((x_268 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_282 = h;
+  param_3 = x_282;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_288 = (top + 1);
+  top = x_288;
+  stack[x_288] = l_1;
+  const int x_292 = (top + 1);
+  top = x_292;
+  stack[x_292] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_302 = top;
+    top = (x_302 - 1);
+    const int x_305 = stack[x_302];
+    h_1 = x_305;
+    const int x_306 = top;
+    top = (x_306 - 1);
+    const int x_309 = stack[x_306];
+    l_1 = x_309;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_312 = performPartition_i1_i1_(param_4, param_5);
+    p = x_312;
+    if (((p - 1) > l_1)) {
+      const int x_320 = (top + 1);
+      top = x_320;
+      stack[x_320] = l_1;
+      const int x_324 = (top + 1);
+      top = x_324;
+      stack[x_324] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_335 = (top + 1);
+      top = x_335;
+      stack[x_335] = (p + 1);
+      const int x_340 = (top + 1);
+      top = x_340;
+      stack[x_340] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_104 = i_2;
+      const int x_107 = obj.numbers[i_2];
+      const int x_110 = obj.numbers[i_2];
+      obj.numbers[x_104] = (x_107 * x_110);
+    }
+  }
+  quicksort_();
+  const float4 x_116 = x_GLF_FragCoord;
+  const float2 x_119 = asfloat(x_34[0].xy);
+  uv = (float2(x_116.x, x_116.y) / x_119);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_122 = obj.numbers[0];
+  const float x_125 = color.x;
+  color.x = (x_125 + float(x_122));
+  const float x_129 = uv.x;
+  if ((x_129 > 0.25f)) {
+    const int x_134 = obj.numbers[1];
+    const float x_137 = color.x;
+    color.x = (x_137 + float(x_134));
+  }
+  const float x_141 = uv.x;
+  if ((x_141 > 0.5f)) {
+    const int x_146 = obj.numbers[2];
+    const float x_149 = color.y;
+    color.y = (x_149 + float(x_146));
+  }
+  const float x_153 = uv.x;
+  if ((x_153 > 0.75f)) {
+    const int x_158 = obj.numbers[3];
+    const float x_161 = color.z;
+    color.z = (x_161 + float(x_158));
+  }
+  const int x_165 = obj.numbers[4];
+  const float x_168 = color.y;
+  color.y = (x_168 + float(x_165));
+  const float x_172 = uv.y;
+  if ((x_172 > 0.25f)) {
+    const int x_177 = obj.numbers[5];
+    const float x_180 = color.x;
+    color.x = (x_180 + float(x_177));
+  }
+  const float x_184 = uv.y;
+  if ((x_184 > 0.5f)) {
+    const int x_189 = obj.numbers[6];
+    const float x_192 = color.y;
+    color.y = (x_192 + float(x_189));
+  }
+  const float x_196 = uv.y;
+  if ((x_196 > 0.75f)) {
+    const int x_201 = obj.numbers[7];
+    const float x_204 = color.z;
+    color.z = (x_204 + float(x_201));
+  }
+  const int x_208 = obj.numbers[8];
+  const float x_211 = color.z;
+  color.z = (x_211 + float(x_208));
+  const float x_215 = uv.x;
+  const float x_217 = uv.y;
+  if ((abs((x_215 - x_217)) < 0.25f)) {
+    const int x_224 = obj.numbers[9];
+    const float x_227 = color.x;
+    color.x = (x_227 + float(x_224));
+  }
+  const float3 x_231 = normalize(color);
+  frag_color = float4(x_231.x, x_231.y, x_231.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f82023b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.msl
@@ -0,0 +1,266 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_6) {
+  int temp = 0;
+  int const x_239 = *(i);
+  int const x_241 = (*(tint_symbol_6)).numbers.arr[x_239];
+  temp = x_241;
+  int const x_242 = *(i);
+  int const x_243 = *(j);
+  int const x_245 = (*(tint_symbol_6)).numbers.arr[x_243];
+  (*(tint_symbol_6)).numbers.arr[x_242] = x_245;
+  int const x_247 = *(j);
+  int const x_248 = temp;
+  (*(tint_symbol_6)).numbers.arr[x_247] = x_248;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_7) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_251 = *(h);
+  int const x_253 = (*(tint_symbol_7)).numbers.arr[x_251];
+  pivot = x_253;
+  int const x_254 = *(l);
+  i_1 = (x_254 - 1);
+  int const x_256 = *(l);
+  j_1 = x_256;
+  while (true) {
+    int const x_261 = j_1;
+    int const x_262 = *(h);
+    if ((x_261 <= (x_262 - 1))) {
+    } else {
+      break;
+    }
+    int const x_266 = j_1;
+    int const x_268 = (*(tint_symbol_7)).numbers.arr[x_266];
+    int const x_269 = pivot;
+    if ((x_268 <= x_269)) {
+      int const x_273 = i_1;
+      i_1 = (x_273 + 1);
+      int const x_275 = i_1;
+      param = x_275;
+      int const x_276 = j_1;
+      param_1 = x_276;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_7);
+    }
+    {
+      int const x_278 = j_1;
+      j_1 = (x_278 + 1);
+    }
+  }
+  int const x_280 = i_1;
+  param_2 = (x_280 + 1);
+  int const x_282 = *(h);
+  param_3 = x_282;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_7);
+  int const x_284 = i_1;
+  return (x_284 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_8) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_287 = top;
+  int const x_288 = (x_287 + 1);
+  top = x_288;
+  int const x_289 = l_1;
+  stack.arr[x_288] = x_289;
+  int const x_291 = top;
+  int const x_292 = (x_291 + 1);
+  top = x_292;
+  int const x_293 = h_1;
+  stack.arr[x_292] = x_293;
+  while (true) {
+    int const x_299 = top;
+    if ((x_299 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_302 = top;
+    top = (x_302 - 1);
+    int const x_305 = stack.arr[x_302];
+    h_1 = x_305;
+    int const x_306 = top;
+    top = (x_306 - 1);
+    int const x_309 = stack.arr[x_306];
+    l_1 = x_309;
+    int const x_310 = l_1;
+    param_4 = x_310;
+    int const x_311 = h_1;
+    param_5 = x_311;
+    int const x_312 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_8);
+    p = x_312;
+    int const x_313 = p;
+    int const x_315 = l_1;
+    if (((x_313 - 1) > x_315)) {
+      int const x_319 = top;
+      int const x_320 = (x_319 + 1);
+      top = x_320;
+      int const x_321 = l_1;
+      stack.arr[x_320] = x_321;
+      int const x_323 = top;
+      int const x_324 = (x_323 + 1);
+      top = x_324;
+      int const x_325 = p;
+      stack.arr[x_324] = (x_325 - 1);
+    }
+    int const x_328 = p;
+    int const x_330 = h_1;
+    if (((x_328 + 1) < x_330)) {
+      int const x_334 = top;
+      int const x_335 = (x_334 + 1);
+      top = x_335;
+      int const x_336 = p;
+      stack.arr[x_335] = (x_336 + 1);
+      int const x_339 = top;
+      int const x_340 = (x_339 + 1);
+      top = x_340;
+      int const x_341 = h_1;
+      stack.arr[x_340] = x_341;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_34, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10, thread QuicksortObject* const tint_symbol_11, thread float4* const tint_symbol_12, thread float4* const tint_symbol_13) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_90 = *(tint_symbol_9);
+  *(tint_symbol_10) = ((x_90 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_97 = i_2;
+    if ((x_97 < 10)) {
+    } else {
+      break;
+    }
+    int const x_100 = i_2;
+    int const x_101 = i_2;
+    (*(tint_symbol_11)).numbers.arr[x_100] = (10 - x_101);
+    int const x_104 = i_2;
+    int const x_105 = i_2;
+    int const x_107 = (*(tint_symbol_11)).numbers.arr[x_105];
+    int const x_108 = i_2;
+    int const x_110 = (*(tint_symbol_11)).numbers.arr[x_108];
+    (*(tint_symbol_11)).numbers.arr[x_104] = (x_107 * x_110);
+    {
+      int const x_113 = i_2;
+      i_2 = (x_113 + 1);
+    }
+  }
+  quicksort_(tint_symbol_11);
+  float4 const x_116 = *(tint_symbol_10);
+  float2 const x_119 = x_34.resolution;
+  uv = (float2(x_116.x, x_116.y) / x_119);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_122 = (*(tint_symbol_11)).numbers.arr[0];
+  float const x_125 = color.x;
+  color.x = (x_125 + float(x_122));
+  float const x_129 = uv.x;
+  if ((x_129 > 0.25f)) {
+    int const x_134 = (*(tint_symbol_11)).numbers.arr[1];
+    float const x_137 = color.x;
+    color.x = (x_137 + float(x_134));
+  }
+  float const x_141 = uv.x;
+  if ((x_141 > 0.5f)) {
+    int const x_146 = (*(tint_symbol_11)).numbers.arr[2];
+    float const x_149 = color.y;
+    color.y = (x_149 + float(x_146));
+  }
+  float const x_153 = uv.x;
+  if ((x_153 > 0.75f)) {
+    int const x_158 = (*(tint_symbol_11)).numbers.arr[3];
+    float const x_161 = color.z;
+    color.z = (x_161 + float(x_158));
+  }
+  int const x_165 = (*(tint_symbol_11)).numbers.arr[4];
+  float const x_168 = color.y;
+  color.y = (x_168 + float(x_165));
+  float const x_172 = uv.y;
+  if ((x_172 > 0.25f)) {
+    int const x_177 = (*(tint_symbol_11)).numbers.arr[5];
+    float const x_180 = color.x;
+    color.x = (x_180 + float(x_177));
+  }
+  float const x_184 = uv.y;
+  if ((x_184 > 0.5f)) {
+    int const x_189 = (*(tint_symbol_11)).numbers.arr[6];
+    float const x_192 = color.y;
+    color.y = (x_192 + float(x_189));
+  }
+  float const x_196 = uv.y;
+  if ((x_196 > 0.75f)) {
+    int const x_201 = (*(tint_symbol_11)).numbers.arr[7];
+    float const x_204 = color.z;
+    color.z = (x_204 + float(x_201));
+  }
+  int const x_208 = (*(tint_symbol_11)).numbers.arr[8];
+  float const x_211 = color.z;
+  color.z = (x_211 + float(x_208));
+  float const x_215 = uv.x;
+  float const x_217 = uv.y;
+  if ((fabs((x_215 - x_217)) < 0.25f)) {
+    int const x_224 = (*(tint_symbol_11)).numbers.arr[9];
+    float const x_227 = color.x;
+    color.x = (x_227 + float(x_224));
+  }
+  float3 const x_230 = color;
+  float3 const x_231 = normalize(x_230);
+  *(tint_symbol_12) = float4(x_231.x, x_231.y, x_231.z, 1.0f);
+  float4 const x_236 = *(tint_symbol_9);
+  *(tint_symbol_13) = x_236;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_14 = 0.0f;
+  thread float4 tint_symbol_15 = 0.0f;
+  thread QuicksortObject tint_symbol_16 = {};
+  thread float4 tint_symbol_17 = 0.0f;
+  thread float4 tint_symbol_18 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_14 = x_GLF_pos_param;
+  main_1(x_34, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_18));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_17, .gl_Position=tint_symbol_18};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..db05970
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,567 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 390
+; Schema: 0
+               OpCapability Shader
+        %356 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %37 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %55 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %115 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %123 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %195 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %199 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %203 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+        %206 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %244 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %375 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %29
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %35 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %37
+         %39 = OpLoad %int %i
+         %42 = OpAccessChain %_ptr_Private_int %obj %uint_0 %39
+         %43 = OpLoad %int %42
+               OpStore %temp %43
+         %45 = OpLoad %int %i
+         %47 = OpLoad %int %j
+         %48 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47
+         %49 = OpLoad %int %48
+         %50 = OpAccessChain %_ptr_Private_int %obj %uint_0 %45
+               OpStore %50 %49
+         %52 = OpLoad %int %j
+         %53 = OpLoad %int %temp
+         %54 = OpAccessChain %_ptr_Private_int %obj %uint_0 %52
+               OpStore %54 %53
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %55
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %59 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %37
+        %i_1 = OpVariable %_ptr_Function_int Function %37
+        %j_1 = OpVariable %_ptr_Function_int Function %37
+      %param = OpVariable %_ptr_Function_int Function %37
+    %param_1 = OpVariable %_ptr_Function_int Function %37
+    %param_2 = OpVariable %_ptr_Function_int Function %37
+    %param_3 = OpVariable %_ptr_Function_int Function %37
+         %68 = OpLoad %int %h
+         %69 = OpAccessChain %_ptr_Private_int %obj %uint_0 %68
+         %70 = OpLoad %int %69
+               OpStore %pivot %70
+         %72 = OpLoad %int %l
+         %74 = OpISub %int %72 %int_1
+               OpStore %i_1 %74
+         %76 = OpLoad %int %l
+               OpStore %j_1 %76
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %79 None
+               OpBranch %80
+         %80 = OpLabel
+         %81 = OpLoad %int %j_1
+         %83 = OpLoad %int %h
+         %84 = OpISub %int %83 %int_1
+         %85 = OpSLessThanEqual %bool %81 %84
+               OpSelectionMerge %87 None
+               OpBranchConditional %85 %88 %89
+         %88 = OpLabel
+               OpBranch %87
+         %89 = OpLabel
+               OpBranch %78
+         %87 = OpLabel
+         %90 = OpLoad %int %j_1
+         %91 = OpAccessChain %_ptr_Private_int %obj %uint_0 %90
+         %92 = OpLoad %int %91
+         %93 = OpLoad %int %pivot
+         %94 = OpSLessThanEqual %bool %92 %93
+               OpSelectionMerge %95 None
+               OpBranchConditional %94 %96 %95
+         %96 = OpLabel
+         %97 = OpLoad %int %i_1
+         %98 = OpIAdd %int %97 %int_1
+               OpStore %i_1 %98
+         %99 = OpLoad %int %i_1
+               OpStore %param %99
+        %100 = OpLoad %int %j_1
+               OpStore %param_1 %100
+        %101 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %95
+         %95 = OpLabel
+               OpBranch %79
+         %79 = OpLabel
+        %104 = OpLoad %int %j_1
+        %105 = OpIAdd %int %104 %int_1
+               OpStore %j_1 %105
+               OpBranch %77
+         %78 = OpLabel
+        %106 = OpLoad %int %i_1
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %param_2 %107
+        %109 = OpLoad %int %h
+               OpStore %param_3 %109
+        %110 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %113 = OpLoad %int %i_1
+        %114 = OpIAdd %int %113 %int_1
+               OpReturnValue %114
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %115
+        %117 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %37
+        %h_1 = OpVariable %_ptr_Function_int Function %37
+        %top = OpVariable %_ptr_Function_int Function %37
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %123
+          %p = OpVariable %_ptr_Function_int Function %37
+    %param_4 = OpVariable %_ptr_Function_int Function %37
+    %param_5 = OpVariable %_ptr_Function_int Function %37
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %130 = OpLoad %int %top
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %top %131
+        %132 = OpLoad %int %l_1
+        %133 = OpAccessChain %_ptr_Function_int %stack %131
+               OpStore %133 %132
+        %134 = OpLoad %int %top
+        %135 = OpIAdd %int %134 %int_1
+               OpStore %top %135
+        %136 = OpLoad %int %h_1
+        %137 = OpAccessChain %_ptr_Function_int %stack %135
+               OpStore %137 %136
+               OpBranch %138
+        %138 = OpLabel
+               OpLoopMerge %139 %140 None
+               OpBranch %141
+        %141 = OpLabel
+        %142 = OpLoad %int %top
+        %143 = OpSGreaterThanEqual %bool %142 %int_0
+               OpSelectionMerge %144 None
+               OpBranchConditional %143 %145 %146
+        %145 = OpLabel
+               OpBranch %144
+        %146 = OpLabel
+               OpBranch %139
+        %144 = OpLabel
+        %147 = OpLoad %int %top
+        %148 = OpISub %int %147 %int_1
+               OpStore %top %148
+        %149 = OpAccessChain %_ptr_Function_int %stack %147
+        %150 = OpLoad %int %149
+               OpStore %h_1 %150
+        %151 = OpLoad %int %top
+        %152 = OpISub %int %151 %int_1
+               OpStore %top %152
+        %153 = OpAccessChain %_ptr_Function_int %stack %151
+        %154 = OpLoad %int %153
+               OpStore %l_1 %154
+        %155 = OpLoad %int %l_1
+               OpStore %param_4 %155
+        %156 = OpLoad %int %h_1
+               OpStore %param_5 %156
+        %157 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %157
+        %160 = OpLoad %int %p
+        %161 = OpLoad %int %l_1
+        %162 = OpISub %int %160 %int_1
+        %163 = OpSGreaterThan %bool %162 %161
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %164
+        %165 = OpLabel
+        %166 = OpLoad %int %top
+        %167 = OpIAdd %int %166 %int_1
+               OpStore %top %167
+        %168 = OpLoad %int %l_1
+        %169 = OpAccessChain %_ptr_Function_int %stack %167
+               OpStore %169 %168
+        %170 = OpLoad %int %top
+        %171 = OpIAdd %int %170 %int_1
+               OpStore %top %171
+        %172 = OpLoad %int %p
+        %173 = OpAccessChain %_ptr_Function_int %stack %171
+        %174 = OpISub %int %172 %int_1
+               OpStore %173 %174
+               OpBranch %164
+        %164 = OpLabel
+        %175 = OpLoad %int %p
+        %176 = OpLoad %int %h_1
+        %177 = OpIAdd %int %175 %int_1
+        %178 = OpSLessThan %bool %177 %176
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %179
+        %180 = OpLabel
+        %181 = OpLoad %int %top
+        %182 = OpIAdd %int %181 %int_1
+               OpStore %top %182
+        %183 = OpLoad %int %p
+        %184 = OpAccessChain %_ptr_Function_int %stack %182
+        %185 = OpIAdd %int %183 %int_1
+               OpStore %184 %185
+        %186 = OpLoad %int %top
+        %187 = OpIAdd %int %186 %int_1
+               OpStore %top %187
+        %188 = OpLoad %int %h_1
+        %189 = OpAccessChain %_ptr_Function_int %stack %187
+               OpStore %189 %188
+               OpBranch %179
+        %179 = OpLabel
+               OpBranch %140
+        %140 = OpLabel
+               OpBranch %138
+        %139 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %115
+        %191 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %37
+         %uv = OpVariable %_ptr_Function_v2float Function %195
+      %color = OpVariable %_ptr_Function_v3float Function %199
+        %200 = OpLoad %v4float %x_GLF_pos
+        %204 = OpFAdd %v4float %200 %203
+        %207 = OpFMul %v4float %204 %206
+               OpStore %x_GLF_FragCoord %207
+               OpStore %i_2 %int_0
+               OpBranch %208
+        %208 = OpLabel
+               OpLoopMerge %209 %210 None
+               OpBranch %211
+        %211 = OpLabel
+        %212 = OpLoad %int %i_2
+        %214 = OpSLessThan %bool %212 %int_10
+               OpSelectionMerge %215 None
+               OpBranchConditional %214 %216 %217
+        %216 = OpLabel
+               OpBranch %215
+        %217 = OpLabel
+               OpBranch %209
+        %215 = OpLabel
+        %218 = OpLoad %int %i_2
+        %219 = OpLoad %int %i_2
+        %220 = OpAccessChain %_ptr_Private_int %obj %uint_0 %218
+        %221 = OpISub %int %int_10 %219
+               OpStore %220 %221
+        %222 = OpLoad %int %i_2
+        %223 = OpLoad %int %i_2
+        %224 = OpAccessChain %_ptr_Private_int %obj %uint_0 %223
+        %225 = OpLoad %int %224
+        %226 = OpLoad %int %i_2
+        %227 = OpAccessChain %_ptr_Private_int %obj %uint_0 %226
+        %228 = OpLoad %int %227
+        %229 = OpAccessChain %_ptr_Private_int %obj %uint_0 %222
+        %230 = OpIMul %int %225 %228
+               OpStore %229 %230
+               OpBranch %210
+        %210 = OpLabel
+        %231 = OpLoad %int %i_2
+        %232 = OpIAdd %int %231 %int_1
+               OpStore %i_2 %232
+               OpBranch %208
+        %209 = OpLabel
+        %233 = OpFunctionCall %void %quicksort_
+        %234 = OpLoad %v4float %x_GLF_FragCoord
+        %236 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %237 = OpLoad %v2float %236
+        %238 = OpCompositeExtract %float %234 0
+        %239 = OpCompositeExtract %float %234 1
+        %240 = OpCompositeConstruct %v2float %238 %239
+        %241 = OpFDiv %v2float %240 %237
+               OpStore %uv %241
+               OpStore %color %244
+        %245 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %246 = OpLoad %int %245
+        %248 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %249 = OpLoad %float %248
+        %250 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %251 = OpConvertSToF %float %246
+        %252 = OpFAdd %float %249 %251
+               OpStore %250 %252
+        %253 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %254 = OpLoad %float %253
+        %256 = OpFOrdGreaterThan %bool %254 %float_0_25
+               OpSelectionMerge %257 None
+               OpBranchConditional %256 %258 %257
+        %258 = OpLabel
+        %259 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %260 = OpLoad %int %259
+        %261 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %262 = OpLoad %float %261
+        %263 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %264 = OpConvertSToF %float %260
+        %265 = OpFAdd %float %262 %264
+               OpStore %263 %265
+               OpBranch %257
+        %257 = OpLabel
+        %266 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %267 = OpLoad %float %266
+        %269 = OpFOrdGreaterThan %bool %267 %float_0_5
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %270
+        %271 = OpLabel
+        %273 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %274 = OpLoad %int %273
+        %276 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %277 = OpLoad %float %276
+        %278 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %279 = OpConvertSToF %float %274
+        %280 = OpFAdd %float %277 %279
+               OpStore %278 %280
+               OpBranch %270
+        %270 = OpLabel
+        %281 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %282 = OpLoad %float %281
+        %284 = OpFOrdGreaterThan %bool %282 %float_0_75
+               OpSelectionMerge %285 None
+               OpBranchConditional %284 %286 %285
+        %286 = OpLabel
+        %288 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %289 = OpLoad %int %288
+        %291 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %292 = OpLoad %float %291
+        %293 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %294 = OpConvertSToF %float %289
+        %295 = OpFAdd %float %292 %294
+               OpStore %293 %295
+               OpBranch %285
+        %285 = OpLabel
+        %297 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %298 = OpLoad %int %297
+        %299 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %300 = OpLoad %float %299
+        %301 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %302 = OpConvertSToF %float %298
+        %303 = OpFAdd %float %300 %302
+               OpStore %301 %303
+        %304 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %305 = OpLoad %float %304
+        %306 = OpFOrdGreaterThan %bool %305 %float_0_25
+               OpSelectionMerge %307 None
+               OpBranchConditional %306 %308 %307
+        %308 = OpLabel
+        %310 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %311 = OpLoad %int %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %313 = OpLoad %float %312
+        %314 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %315 = OpConvertSToF %float %311
+        %316 = OpFAdd %float %313 %315
+               OpStore %314 %316
+               OpBranch %307
+        %307 = OpLabel
+        %317 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %318 = OpLoad %float %317
+        %319 = OpFOrdGreaterThan %bool %318 %float_0_5
+               OpSelectionMerge %320 None
+               OpBranchConditional %319 %321 %320
+        %321 = OpLabel
+        %323 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %324 = OpLoad %int %323
+        %325 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %326 = OpLoad %float %325
+        %327 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %328 = OpConvertSToF %float %324
+        %329 = OpFAdd %float %326 %328
+               OpStore %327 %329
+               OpBranch %320
+        %320 = OpLabel
+        %330 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %331 = OpLoad %float %330
+        %332 = OpFOrdGreaterThan %bool %331 %float_0_75
+               OpSelectionMerge %333 None
+               OpBranchConditional %332 %334 %333
+        %334 = OpLabel
+        %336 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %337 = OpLoad %int %336
+        %338 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %339 = OpLoad %float %338
+        %340 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %341 = OpConvertSToF %float %337
+        %342 = OpFAdd %float %339 %341
+               OpStore %340 %342
+               OpBranch %333
+        %333 = OpLabel
+        %344 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %345 = OpLoad %int %344
+        %346 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %347 = OpLoad %float %346
+        %348 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %349 = OpConvertSToF %float %345
+        %350 = OpFAdd %float %347 %349
+               OpStore %348 %350
+        %351 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %352 = OpLoad %float %351
+        %353 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %354 = OpLoad %float %353
+        %357 = OpFSub %float %352 %354
+        %355 = OpExtInst %float %356 FAbs %357
+        %358 = OpFOrdLessThan %bool %355 %float_0_25
+               OpSelectionMerge %359 None
+               OpBranchConditional %358 %360 %359
+        %360 = OpLabel
+        %361 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %362 = OpLoad %int %361
+        %363 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %364 = OpLoad %float %363
+        %365 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %366 = OpConvertSToF %float %362
+        %367 = OpFAdd %float %364 %366
+               OpStore %365 %367
+               OpBranch %359
+        %359 = OpLabel
+        %368 = OpLoad %v3float %color
+        %369 = OpExtInst %v3float %356 Normalize %368
+        %370 = OpCompositeExtract %float %369 0
+        %371 = OpCompositeExtract %float %369 1
+        %372 = OpCompositeExtract %float %369 2
+        %373 = OpCompositeConstruct %v4float %370 %371 %372 %float_1
+               OpStore %frag_color %373
+        %374 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %374
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %375
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %379 = OpLabel
+        %380 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %380
+        %381 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %381
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %115
+        %383 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %384 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %384
+        %385 = OpFunctionCall %void %main_1
+        %387 = OpLoad %v4float %frag_color
+        %388 = OpLoad %v4float %gl_Position
+        %389 = OpCompositeConstruct %main_out %387 %388
+        %386 = OpFunctionCall %void %tint_symbol_4 %389
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..134b77f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,264 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_239 : i32 = *(i);
+  let x_241 : i32 = obj.numbers[x_239];
+  temp = x_241;
+  let x_242 : i32 = *(i);
+  let x_243 : i32 = *(j);
+  let x_245 : i32 = obj.numbers[x_243];
+  obj.numbers[x_242] = x_245;
+  let x_247 : i32 = *(j);
+  let x_248 : i32 = temp;
+  obj.numbers[x_247] = x_248;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_251 : i32 = *(h);
+  let x_253 : i32 = obj.numbers[x_251];
+  pivot = x_253;
+  let x_254 : i32 = *(l);
+  i_1 = (x_254 - 1);
+  let x_256 : i32 = *(l);
+  j_1 = x_256;
+  loop {
+    let x_261 : i32 = j_1;
+    let x_262 : i32 = *(h);
+    if ((x_261 <= (x_262 - 1))) {
+    } else {
+      break;
+    }
+    let x_266 : i32 = j_1;
+    let x_268 : i32 = obj.numbers[x_266];
+    let x_269 : i32 = pivot;
+    if ((x_268 <= x_269)) {
+      let x_273 : i32 = i_1;
+      i_1 = (x_273 + 1);
+      let x_275 : i32 = i_1;
+      param = x_275;
+      let x_276 : i32 = j_1;
+      param_1 = x_276;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_278 : i32 = j_1;
+      j_1 = (x_278 + 1);
+    }
+  }
+  let x_280 : i32 = i_1;
+  param_2 = (x_280 + 1);
+  let x_282 : i32 = *(h);
+  param_3 = x_282;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_284 : i32 = i_1;
+  return (x_284 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_287 : i32 = top;
+  let x_288 : i32 = (x_287 + 1);
+  top = x_288;
+  let x_289 : i32 = l_1;
+  stack[x_288] = x_289;
+  let x_291 : i32 = top;
+  let x_292 : i32 = (x_291 + 1);
+  top = x_292;
+  let x_293 : i32 = h_1;
+  stack[x_292] = x_293;
+  loop {
+    let x_299 : i32 = top;
+    if ((x_299 >= 0)) {
+    } else {
+      break;
+    }
+    let x_302 : i32 = top;
+    top = (x_302 - 1);
+    let x_305 : i32 = stack[x_302];
+    h_1 = x_305;
+    let x_306 : i32 = top;
+    top = (x_306 - 1);
+    let x_309 : i32 = stack[x_306];
+    l_1 = x_309;
+    let x_310 : i32 = l_1;
+    param_4 = x_310;
+    let x_311 : i32 = h_1;
+    param_5 = x_311;
+    let x_312 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_312;
+    let x_313 : i32 = p;
+    let x_315 : i32 = l_1;
+    if (((x_313 - 1) > x_315)) {
+      let x_319 : i32 = top;
+      let x_320 : i32 = (x_319 + 1);
+      top = x_320;
+      let x_321 : i32 = l_1;
+      stack[x_320] = x_321;
+      let x_323 : i32 = top;
+      let x_324 : i32 = (x_323 + 1);
+      top = x_324;
+      let x_325 : i32 = p;
+      stack[x_324] = (x_325 - 1);
+    }
+    let x_328 : i32 = p;
+    let x_330 : i32 = h_1;
+    if (((x_328 + 1) < x_330)) {
+      let x_334 : i32 = top;
+      let x_335 : i32 = (x_334 + 1);
+      top = x_335;
+      let x_336 : i32 = p;
+      stack[x_335] = (x_336 + 1);
+      let x_339 : i32 = top;
+      let x_340 : i32 = (x_339 + 1);
+      top = x_340;
+      let x_341 : i32 = h_1;
+      stack[x_340] = x_341;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_90 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_90 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_97 : i32 = i_2;
+    if ((x_97 < 10)) {
+    } else {
+      break;
+    }
+    let x_100 : i32 = i_2;
+    let x_101 : i32 = i_2;
+    obj.numbers[x_100] = (10 - x_101);
+    let x_104 : i32 = i_2;
+    let x_105 : i32 = i_2;
+    let x_107 : i32 = obj.numbers[x_105];
+    let x_108 : i32 = i_2;
+    let x_110 : i32 = obj.numbers[x_108];
+    obj.numbers[x_104] = (x_107 * x_110);
+
+    continuing {
+      let x_113 : i32 = i_2;
+      i_2 = (x_113 + 1);
+    }
+  }
+  quicksort_();
+  let x_116 : vec4<f32> = x_GLF_FragCoord;
+  let x_119 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_116.x, x_116.y) / x_119);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_122 : i32 = obj.numbers[0];
+  let x_125 : f32 = color.x;
+  color.x = (x_125 + f32(x_122));
+  let x_129 : f32 = uv.x;
+  if ((x_129 > 0.25)) {
+    let x_134 : i32 = obj.numbers[1];
+    let x_137 : f32 = color.x;
+    color.x = (x_137 + f32(x_134));
+  }
+  let x_141 : f32 = uv.x;
+  if ((x_141 > 0.5)) {
+    let x_146 : i32 = obj.numbers[2];
+    let x_149 : f32 = color.y;
+    color.y = (x_149 + f32(x_146));
+  }
+  let x_153 : f32 = uv.x;
+  if ((x_153 > 0.75)) {
+    let x_158 : i32 = obj.numbers[3];
+    let x_161 : f32 = color.z;
+    color.z = (x_161 + f32(x_158));
+  }
+  let x_165 : i32 = obj.numbers[4];
+  let x_168 : f32 = color.y;
+  color.y = (x_168 + f32(x_165));
+  let x_172 : f32 = uv.y;
+  if ((x_172 > 0.25)) {
+    let x_177 : i32 = obj.numbers[5];
+    let x_180 : f32 = color.x;
+    color.x = (x_180 + f32(x_177));
+  }
+  let x_184 : f32 = uv.y;
+  if ((x_184 > 0.5)) {
+    let x_189 : i32 = obj.numbers[6];
+    let x_192 : f32 = color.y;
+    color.y = (x_192 + f32(x_189));
+  }
+  let x_196 : f32 = uv.y;
+  if ((x_196 > 0.75)) {
+    let x_201 : i32 = obj.numbers[7];
+    let x_204 : f32 = color.z;
+    color.z = (x_204 + f32(x_201));
+  }
+  let x_208 : i32 = obj.numbers[8];
+  let x_211 : f32 = color.z;
+  color.z = (x_211 + f32(x_208));
+  let x_215 : f32 = uv.x;
+  let x_217 : f32 = uv.y;
+  if ((abs((x_215 - x_217)) < 0.25)) {
+    let x_224 : i32 = obj.numbers[9];
+    let x_227 : f32 = color.x;
+    color.x = (x_227 + f32(x_224));
+  }
+  let x_230 : vec3<f32> = color;
+  let x_231 : vec3<f32> = normalize(x_230);
+  frag_color = vec4<f32>(x_231.x, x_231.y, x_231.z, 1.0);
+  let x_236 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_236;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm
new file mode 100644
index 0000000..90b4e34
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm
@@ -0,0 +1,25 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %frag_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %frag_color "frag_color"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %frag_color Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+ %frag_color = OpVariable %_ptr_Input_v4float Input
+       %main = OpFunction %void None %6
+         %11 = OpLabel
+         %12 = OpLoad %v4float %frag_color
+               OpStore %_GLF_color %12
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..266b98a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  x_GLF_color = frag_color;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 frag_color_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 frag_color_param = tint_symbol.frag_color_param;
+  frag_color = frag_color_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.msl
new file mode 100644
index 0000000..bd94fa8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 frag_color_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_12 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_12;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const frag_color_param = tint_symbol_1.frag_color_param;
+  tint_symbol_8 = frag_color_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_4.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..834d21f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.spvasm
@@ -0,0 +1,59 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %frag_color "frag_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+ %frag_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %16 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %15 = OpLoad %v4float %frag_color
+               OpStore %x_GLF_color %15
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %16
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %20 = OpLabel
+         %21 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %21
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %23 = OpLabel
+         %24 = OpLoad %v4float %tint_symbol
+               OpStore %frag_color %24
+         %25 = OpFunctionCall %void %main_1
+         %27 = OpLoad %v4float %x_GLF_color
+         %28 = OpCompositeConstruct %main_out %27
+         %26 = OpFunctionCall %void %tint_symbol_3 %28
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..b7d3ed1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.spvasm.expected.wgsl
@@ -0,0 +1,21 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+fn main_1() {
+  let x_12 : vec4<f32> = frag_color;
+  x_GLF_color = x_12;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+  frag_color = frag_color_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
new file mode 100644
index 0000000..b7d3ed1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
@@ -0,0 +1,21 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+fn main_1() {
+  let x_12 : vec4<f32> = frag_color;
+  x_GLF_color = x_12;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+  frag_color = frag_color_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..266b98a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  x_GLF_color = frag_color;
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 frag_color_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 frag_color_param = tint_symbol.frag_color_param;
+  frag_color = frag_color_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.msl
new file mode 100644
index 0000000..bd94fa8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 frag_color_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_12 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_12;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const frag_color_param = tint_symbol_1.frag_color_param;
+  tint_symbol_8 = frag_color_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.x_GLF_color_1=tint_symbol_4.x_GLF_color_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..834d21f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.spvasm
@@ -0,0 +1,59 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %frag_color "frag_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+ %frag_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %16 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %15 = OpLoad %v4float %frag_color
+               OpStore %x_GLF_color %15
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %16
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %20 = OpLabel
+         %21 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %21
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %23 = OpLabel
+         %24 = OpLoad %v4float %tint_symbol
+               OpStore %frag_color %24
+         %25 = OpFunctionCall %void %main_1
+         %27 = OpLoad %v4float %x_GLF_color
+         %28 = OpCompositeConstruct %main_out %27
+         %26 = OpFunctionCall %void %tint_symbol_3 %28
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..b7d3ed1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> frag_color : vec4<f32>;
+
+fn main_1() {
+  let x_12 : vec4<f32> = frag_color;
+  x_GLF_color = x_12;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+  frag_color = frag_color_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm
new file mode 100644
index 0000000..9b0be33
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm
@@ -0,0 +1,524 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_GLF_pos %frag_color %__1
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap(i1;i1;"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %quicksort_ "quicksort("
+               OpName %temp "temp"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %pivot "pivot"
+               OpName %i_0 "i"
+               OpName %j_0 "j"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %l_0 "l"
+               OpName %h_0 "h"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %_GLF_FragCoord "_GLF_FragCoord"
+               OpName %_GLF_pos "_GLF_pos"
+               OpName %i_1 "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %uv "uv"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %__0 ""
+               OpName %color "color"
+               OpName %frag_color "frag_color"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpName %__1 ""
+               OpDecorate %_GLF_pos Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 1
+               OpDecorate %frag_color Location 0
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpDecorate %gl_PerVertex Block
+       %void = OpTypeVoid
+         %40 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %43 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %44 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+%_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %_GLF_pos = OpVariable %_ptr_Input_v4float Input
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %62 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+         %64 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+        %__0 = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %78 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %frag_color = OpVariable %_ptr_Output_v4float Output
+%gl_PerVertex = OpTypeStruct %v4float %float
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+        %__1 = OpVariable %_ptr_Output_gl_PerVertex Output
+       %main = OpFunction %void None %40
+         %93 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function
+         %uv = OpVariable %_ptr_Function_v2float Function
+      %color = OpVariable %_ptr_Function_v3float Function
+         %94 = OpLoad %v4float %_GLF_pos
+         %95 = OpFAdd %v4float %94 %62
+         %96 = OpFMul %v4float %95 %64
+               OpStore %_GLF_FragCoord %96
+               OpStore %i_1 %int_0
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %101 = OpLoad %int %i_1
+        %102 = OpSLessThan %bool %101 %int_10
+               OpBranchConditional %102 %103 %98
+        %103 = OpLabel
+        %104 = OpLoad %int %i_1
+        %105 = OpLoad %int %i_1
+        %106 = OpISub %int %int_10 %105
+        %107 = OpAccessChain %_ptr_Private_int %obj %int_0 %104
+               OpStore %107 %106
+        %108 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %109 = OpLoad %float %108
+        %110 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %111 = OpLoad %float %110
+        %112 = OpFOrdGreaterThan %bool %109 %111
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+               OpBranch %98
+        %113 = OpLabel
+        %115 = OpLoad %int %i_1
+        %116 = OpLoad %int %i_1
+        %117 = OpAccessChain %_ptr_Private_int %obj %int_0 %116
+        %118 = OpLoad %int %117
+        %119 = OpLoad %int %i_1
+        %120 = OpAccessChain %_ptr_Private_int %obj %int_0 %119
+        %121 = OpLoad %int %120
+        %122 = OpIMul %int %118 %121
+        %123 = OpAccessChain %_ptr_Private_int %obj %int_0 %115
+               OpStore %123 %122
+               OpBranch %99
+         %99 = OpLabel
+        %124 = OpLoad %int %i_1
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %i_1 %125
+               OpBranch %97
+         %98 = OpLabel
+        %126 = OpFunctionCall %void %quicksort_
+        %127 = OpLoad %v4float %_GLF_FragCoord
+        %128 = OpVectorShuffle %v2float %127 %127 0 1
+        %129 = OpAccessChain %_ptr_Uniform_v2float %__0 %int_0
+        %130 = OpLoad %v2float %129
+        %131 = OpFDiv %v2float %128 %130
+               OpStore %uv %131
+               OpStore %color %78
+        %132 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
+        %133 = OpLoad %int %132
+        %134 = OpConvertSToF %float %133
+        %135 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %136 = OpLoad %float %135
+        %137 = OpFAdd %float %136 %134
+        %138 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %138 %137
+        %139 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %140 = OpLoad %float %139
+        %141 = OpFOrdGreaterThan %bool %140 %float_0_25
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %142
+        %143 = OpLabel
+        %144 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
+        %145 = OpLoad %int %144
+        %146 = OpConvertSToF %float %145
+        %147 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %148 = OpLoad %float %147
+        %149 = OpFAdd %float %148 %146
+        %150 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %150 %149
+               OpBranch %142
+        %142 = OpLabel
+        %151 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %152 = OpLoad %float %151
+        %153 = OpFOrdGreaterThan %bool %152 %float_0_5
+               OpSelectionMerge %154 None
+               OpBranchConditional %153 %155 %154
+        %155 = OpLabel
+        %156 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
+        %157 = OpLoad %int %156
+        %158 = OpConvertSToF %float %157
+        %159 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %160 = OpLoad %float %159
+        %161 = OpFAdd %float %160 %158
+        %162 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %162 %161
+               OpBranch %154
+        %154 = OpLabel
+        %163 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %164 = OpLoad %float %163
+        %165 = OpFOrdGreaterThan %bool %164 %float_0_75
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %166
+        %167 = OpLabel
+        %168 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
+        %169 = OpLoad %int %168
+        %170 = OpConvertSToF %float %169
+        %171 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %172 = OpLoad %float %171
+        %173 = OpFAdd %float %172 %170
+        %174 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %174 %173
+               OpBranch %166
+        %166 = OpLabel
+        %175 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
+        %176 = OpLoad %int %175
+        %177 = OpConvertSToF %float %176
+        %178 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %179 = OpLoad %float %178
+        %180 = OpFAdd %float %179 %177
+        %181 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %181 %180
+        %182 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %183 = OpLoad %float %182
+        %184 = OpFOrdGreaterThan %bool %183 %float_0_25
+               OpSelectionMerge %185 None
+               OpBranchConditional %184 %186 %185
+        %186 = OpLabel
+        %187 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
+        %188 = OpLoad %int %187
+        %189 = OpConvertSToF %float %188
+        %190 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %191 = OpLoad %float %190
+        %192 = OpFAdd %float %191 %189
+        %193 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %193 %192
+               OpBranch %185
+        %185 = OpLabel
+        %194 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %195 = OpLoad %float %194
+        %196 = OpFOrdGreaterThan %bool %195 %float_0_5
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+        %199 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
+        %200 = OpLoad %int %199
+        %201 = OpConvertSToF %float %200
+        %202 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %203 = OpLoad %float %202
+        %204 = OpFAdd %float %203 %201
+        %205 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %205 %204
+               OpBranch %197
+        %197 = OpLabel
+        %206 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %207 = OpLoad %float %206
+        %208 = OpFOrdGreaterThan %bool %207 %float_0_75
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %209
+        %210 = OpLabel
+        %211 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
+        %212 = OpLoad %int %211
+        %213 = OpConvertSToF %float %212
+        %214 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %215 = OpLoad %float %214
+        %216 = OpFAdd %float %215 %213
+        %217 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %217 %216
+               OpBranch %209
+        %209 = OpLabel
+        %218 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
+        %219 = OpLoad %int %218
+        %220 = OpConvertSToF %float %219
+        %221 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %222 = OpLoad %float %221
+        %223 = OpFAdd %float %222 %220
+        %224 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %224 %223
+        %225 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %226 = OpLoad %float %225
+        %227 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %228 = OpLoad %float %227
+        %229 = OpFSub %float %226 %228
+        %230 = OpExtInst %float %1 FAbs %229
+        %231 = OpFOrdLessThan %bool %230 %float_0_25
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %232
+        %233 = OpLabel
+        %234 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
+        %235 = OpLoad %int %234
+        %236 = OpConvertSToF %float %235
+        %237 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %238 = OpLoad %float %237
+        %239 = OpFAdd %float %238 %236
+        %240 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %240 %239
+               OpBranch %232
+        %232 = OpLabel
+        %241 = OpLoad %v3float %color
+        %242 = OpExtInst %v3float %1 Normalize %241
+        %243 = OpCompositeExtract %float %242 0
+        %244 = OpCompositeExtract %float %242 1
+        %245 = OpCompositeExtract %float %242 2
+        %246 = OpCompositeConstruct %v4float %243 %244 %245 %float_1
+               OpStore %frag_color %246
+        %247 = OpLoad %v4float %_GLF_pos
+        %248 = OpAccessChain %_ptr_Output_v4float %__1 %int_0
+               OpStore %248 %247
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %43
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %249 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+        %250 = OpLoad %int %i
+        %251 = OpAccessChain %_ptr_Private_int %obj %int_0 %250
+        %252 = OpLoad %int %251
+               OpStore %temp %252
+        %253 = OpLoad %int %i
+        %254 = OpLoad %int %j
+        %255 = OpAccessChain %_ptr_Private_int %obj %int_0 %254
+        %256 = OpLoad %int %255
+        %257 = OpAccessChain %_ptr_Private_int %obj %int_0 %253
+               OpStore %257 %256
+        %258 = OpLoad %int %j
+        %259 = OpLoad %int %temp
+        %260 = OpAccessChain %_ptr_Private_int %obj %int_0 %258
+               OpStore %260 %259
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %44
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %261 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+        %262 = OpLoad %int %h
+        %263 = OpAccessChain %_ptr_Private_int %obj %int_0 %262
+        %264 = OpLoad %int %263
+               OpStore %pivot %264
+        %265 = OpLoad %int %l
+        %266 = OpISub %int %265 %int_1
+               OpStore %i_0 %266
+        %267 = OpLoad %int %l
+               OpStore %j_0 %267
+               OpBranch %268
+        %268 = OpLabel
+               OpLoopMerge %269 %270 None
+               OpBranch %271
+        %271 = OpLabel
+        %272 = OpLoad %int %j_0
+        %273 = OpLoad %int %h
+        %274 = OpISub %int %273 %int_1
+        %275 = OpSLessThanEqual %bool %272 %274
+               OpBranchConditional %275 %276 %269
+        %276 = OpLabel
+        %277 = OpLoad %int %j_0
+        %278 = OpAccessChain %_ptr_Private_int %obj %int_0 %277
+        %279 = OpLoad %int %278
+        %280 = OpLoad %int %pivot
+        %281 = OpSLessThanEqual %bool %279 %280
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %282
+        %283 = OpLabel
+        %284 = OpLoad %int %i_0
+        %285 = OpIAdd %int %284 %int_1
+               OpStore %i_0 %285
+        %286 = OpLoad %int %i_0
+               OpStore %param %286
+        %287 = OpLoad %int %j_0
+               OpStore %param_0 %287
+        %288 = OpFunctionCall %void %swap_i1_i1_ %param %param_0
+               OpBranch %282
+        %282 = OpLabel
+               OpBranch %270
+        %270 = OpLabel
+        %289 = OpLoad %int %j_0
+        %290 = OpIAdd %int %289 %int_1
+               OpStore %j_0 %290
+               OpBranch %268
+        %269 = OpLabel
+        %291 = OpLoad %int %i_0
+        %292 = OpIAdd %int %291 %int_1
+               OpStore %param_1 %292
+        %293 = OpLoad %int %h
+               OpStore %param_2 %293
+        %294 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2
+        %295 = OpLoad %int %i_0
+        %296 = OpIAdd %int %295 %int_1
+               OpReturnValue %296
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %40
+        %297 = OpLabel
+        %l_0 = OpVariable %_ptr_Function_int Function
+        %h_0 = OpVariable %_ptr_Function_int Function
+        %top = OpVariable %_ptr_Function_int Function
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %p = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+               OpStore %l_0 %int_0
+               OpStore %h_0 %int_9
+               OpStore %top %int_n1
+        %298 = OpLoad %int %top
+        %299 = OpIAdd %int %298 %int_1
+               OpStore %top %299
+        %300 = OpLoad %int %l_0
+        %301 = OpAccessChain %_ptr_Function_int %stack %299
+               OpStore %301 %300
+        %302 = OpLoad %int %top
+        %303 = OpIAdd %int %302 %int_1
+               OpStore %top %303
+        %304 = OpLoad %int %h_0
+        %305 = OpAccessChain %_ptr_Function_int %stack %303
+               OpStore %305 %304
+               OpBranch %306
+        %306 = OpLabel
+               OpLoopMerge %307 %308 None
+               OpBranch %309
+        %309 = OpLabel
+        %310 = OpLoad %int %top
+        %311 = OpSGreaterThanEqual %bool %310 %int_0
+               OpBranchConditional %311 %312 %307
+        %312 = OpLabel
+        %313 = OpLoad %int %top
+        %314 = OpISub %int %313 %int_1
+               OpStore %top %314
+        %315 = OpAccessChain %_ptr_Function_int %stack %313
+        %316 = OpLoad %int %315
+               OpStore %h_0 %316
+        %317 = OpLoad %int %top
+        %318 = OpISub %int %317 %int_1
+               OpStore %top %318
+        %319 = OpAccessChain %_ptr_Function_int %stack %317
+        %320 = OpLoad %int %319
+               OpStore %l_0 %320
+        %321 = OpLoad %int %l_0
+               OpStore %param_3 %321
+        %322 = OpLoad %int %h_0
+               OpStore %param_4 %322
+        %323 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
+               OpStore %p %323
+        %324 = OpLoad %int %p
+        %325 = OpISub %int %324 %int_1
+        %326 = OpLoad %int %l_0
+        %327 = OpSGreaterThan %bool %325 %326
+               OpSelectionMerge %328 None
+               OpBranchConditional %327 %329 %328
+        %329 = OpLabel
+        %330 = OpLoad %int %top
+        %331 = OpIAdd %int %330 %int_1
+               OpStore %top %331
+        %332 = OpLoad %int %l_0
+        %333 = OpAccessChain %_ptr_Function_int %stack %331
+               OpStore %333 %332
+        %334 = OpLoad %int %top
+        %335 = OpIAdd %int %334 %int_1
+               OpStore %top %335
+        %336 = OpLoad %int %p
+        %337 = OpISub %int %336 %int_1
+        %338 = OpAccessChain %_ptr_Function_int %stack %335
+               OpStore %338 %337
+               OpBranch %328
+        %328 = OpLabel
+        %339 = OpLoad %int %p
+        %340 = OpIAdd %int %339 %int_1
+        %341 = OpLoad %int %h_0
+        %342 = OpSLessThan %bool %340 %341
+               OpSelectionMerge %343 None
+               OpBranchConditional %342 %344 %343
+        %344 = OpLabel
+        %345 = OpLoad %int %top
+        %346 = OpIAdd %int %345 %int_1
+               OpStore %top %346
+        %347 = OpLoad %int %p
+        %348 = OpIAdd %int %347 %int_1
+        %349 = OpAccessChain %_ptr_Function_int %stack %346
+               OpStore %349 %348
+        %350 = OpLoad %int %top
+        %351 = OpIAdd %int %350 %int_1
+               OpStore %top %351
+        %352 = OpLoad %int %h_0
+        %353 = OpAccessChain %_ptr_Function_int %stack %351
+               OpStore %353 %352
+               OpBranch %343
+        %343 = OpLabel
+               OpBranch %308
+        %308 = OpLabel
+               OpBranch %306
+        %307 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..017bbe6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.hlsl
@@ -0,0 +1,227 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_33 : register(b0, space0) {
+  uint4 x_33[1];
+};
+cbuffer cbuffer_x_36 : register(b1, space0) {
+  uint4 x_36[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_250 = i;
+  const int x_252 = obj.numbers[x_250];
+  temp = x_252;
+  const int x_253 = i;
+  const int x_254 = j;
+  const int x_256 = obj.numbers[x_254];
+  obj.numbers[x_253] = x_256;
+  const int x_258 = j;
+  obj.numbers[x_258] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_262 = h;
+  const int x_264 = obj.numbers[x_262];
+  pivot = x_264;
+  const int x_265 = l;
+  i_1 = (x_265 - 1);
+  const int x_267 = l;
+  j_1 = x_267;
+  while (true) {
+    const int x_272 = j_1;
+    const int x_273 = h;
+    if ((x_272 <= (x_273 - 1))) {
+    } else {
+      break;
+    }
+    const int x_279 = obj.numbers[j_1];
+    if ((x_279 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_293 = h;
+  param_3 = x_293;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_299 = (top + 1);
+  top = x_299;
+  stack[x_299] = l_1;
+  const int x_303 = (top + 1);
+  top = x_303;
+  stack[x_303] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_313 = top;
+    top = (x_313 - 1);
+    const int x_316 = stack[x_313];
+    h_1 = x_316;
+    const int x_317 = top;
+    top = (x_317 - 1);
+    const int x_320 = stack[x_317];
+    l_1 = x_320;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_323 = performPartition_i1_i1_(param_4, param_5);
+    p = x_323;
+    if (((p - 1) > l_1)) {
+      const int x_331 = (top + 1);
+      top = x_331;
+      stack[x_331] = l_1;
+      const int x_335 = (top + 1);
+      top = x_335;
+      stack[x_335] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_346 = (top + 1);
+      top = x_346;
+      stack[x_346] = (p + 1);
+      const int x_351 = (top + 1);
+      top = x_351;
+      stack[x_351] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const float x_109 = asfloat(x_33[0].x);
+      const float x_111 = asfloat(x_33[0].y);
+      if ((x_109 > x_111)) {
+        break;
+      }
+      const int x_115 = i_2;
+      const int x_118 = obj.numbers[i_2];
+      const int x_121 = obj.numbers[i_2];
+      obj.numbers[x_115] = (x_118 * x_121);
+    }
+  }
+  quicksort_();
+  const float4 x_127 = x_GLF_FragCoord;
+  const float2 x_130 = asfloat(x_36[0].xy);
+  uv = (float2(x_127.x, x_127.y) / x_130);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_133 = obj.numbers[0];
+  const float x_136 = color.x;
+  color.x = (x_136 + float(x_133));
+  const float x_140 = uv.x;
+  if ((x_140 > 0.25f)) {
+    const int x_145 = obj.numbers[1];
+    const float x_148 = color.x;
+    color.x = (x_148 + float(x_145));
+  }
+  const float x_152 = uv.x;
+  if ((x_152 > 0.5f)) {
+    const int x_157 = obj.numbers[2];
+    const float x_160 = color.y;
+    color.y = (x_160 + float(x_157));
+  }
+  const float x_164 = uv.x;
+  if ((x_164 > 0.75f)) {
+    const int x_169 = obj.numbers[3];
+    const float x_172 = color.z;
+    color.z = (x_172 + float(x_169));
+  }
+  const int x_176 = obj.numbers[4];
+  const float x_179 = color.y;
+  color.y = (x_179 + float(x_176));
+  const float x_183 = uv.y;
+  if ((x_183 > 0.25f)) {
+    const int x_188 = obj.numbers[5];
+    const float x_191 = color.x;
+    color.x = (x_191 + float(x_188));
+  }
+  const float x_195 = uv.y;
+  if ((x_195 > 0.5f)) {
+    const int x_200 = obj.numbers[6];
+    const float x_203 = color.y;
+    color.y = (x_203 + float(x_200));
+  }
+  const float x_207 = uv.y;
+  if ((x_207 > 0.75f)) {
+    const int x_212 = obj.numbers[7];
+    const float x_215 = color.z;
+    color.z = (x_215 + float(x_212));
+  }
+  const int x_219 = obj.numbers[8];
+  const float x_222 = color.z;
+  color.z = (x_222 + float(x_219));
+  const float x_226 = uv.x;
+  const float x_228 = uv.y;
+  if ((abs((x_226 - x_228)) < 0.25f)) {
+    const int x_235 = obj.numbers[9];
+    const float x_238 = color.x;
+    color.x = (x_238 + float(x_235));
+  }
+  const float3 x_242 = normalize(color);
+  frag_color = float4(x_242.x, x_242.y, x_242.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.msl
new file mode 100644
index 0000000..fae0fc6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.msl
@@ -0,0 +1,274 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_6) {
+  int temp = 0;
+  int const x_250 = *(i);
+  int const x_252 = (*(tint_symbol_6)).numbers.arr[x_250];
+  temp = x_252;
+  int const x_253 = *(i);
+  int const x_254 = *(j);
+  int const x_256 = (*(tint_symbol_6)).numbers.arr[x_254];
+  (*(tint_symbol_6)).numbers.arr[x_253] = x_256;
+  int const x_258 = *(j);
+  int const x_259 = temp;
+  (*(tint_symbol_6)).numbers.arr[x_258] = x_259;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_7) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_262 = *(h);
+  int const x_264 = (*(tint_symbol_7)).numbers.arr[x_262];
+  pivot = x_264;
+  int const x_265 = *(l);
+  i_1 = (x_265 - 1);
+  int const x_267 = *(l);
+  j_1 = x_267;
+  while (true) {
+    int const x_272 = j_1;
+    int const x_273 = *(h);
+    if ((x_272 <= (x_273 - 1))) {
+    } else {
+      break;
+    }
+    int const x_277 = j_1;
+    int const x_279 = (*(tint_symbol_7)).numbers.arr[x_277];
+    int const x_280 = pivot;
+    if ((x_279 <= x_280)) {
+      int const x_284 = i_1;
+      i_1 = (x_284 + 1);
+      int const x_286 = i_1;
+      param = x_286;
+      int const x_287 = j_1;
+      param_1 = x_287;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_7);
+    }
+    {
+      int const x_289 = j_1;
+      j_1 = (x_289 + 1);
+    }
+  }
+  int const x_291 = i_1;
+  param_2 = (x_291 + 1);
+  int const x_293 = *(h);
+  param_3 = x_293;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_7);
+  int const x_295 = i_1;
+  return (x_295 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_8) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_298 = top;
+  int const x_299 = (x_298 + 1);
+  top = x_299;
+  int const x_300 = l_1;
+  stack.arr[x_299] = x_300;
+  int const x_302 = top;
+  int const x_303 = (x_302 + 1);
+  top = x_303;
+  int const x_304 = h_1;
+  stack.arr[x_303] = x_304;
+  while (true) {
+    int const x_310 = top;
+    if ((x_310 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_313 = top;
+    top = (x_313 - 1);
+    int const x_316 = stack.arr[x_313];
+    h_1 = x_316;
+    int const x_317 = top;
+    top = (x_317 - 1);
+    int const x_320 = stack.arr[x_317];
+    l_1 = x_320;
+    int const x_321 = l_1;
+    param_4 = x_321;
+    int const x_322 = h_1;
+    param_5 = x_322;
+    int const x_323 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_8);
+    p = x_323;
+    int const x_324 = p;
+    int const x_326 = l_1;
+    if (((x_324 - 1) > x_326)) {
+      int const x_330 = top;
+      int const x_331 = (x_330 + 1);
+      top = x_331;
+      int const x_332 = l_1;
+      stack.arr[x_331] = x_332;
+      int const x_334 = top;
+      int const x_335 = (x_334 + 1);
+      top = x_335;
+      int const x_336 = p;
+      stack.arr[x_335] = (x_336 - 1);
+    }
+    int const x_339 = p;
+    int const x_341 = h_1;
+    if (((x_339 + 1) < x_341)) {
+      int const x_345 = top;
+      int const x_346 = (x_345 + 1);
+      top = x_346;
+      int const x_347 = p;
+      stack.arr[x_346] = (x_347 + 1);
+      int const x_350 = top;
+      int const x_351 = (x_350 + 1);
+      top = x_351;
+      int const x_352 = h_1;
+      stack.arr[x_351] = x_352;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_33, constant buf1& x_36, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10, thread QuicksortObject* const tint_symbol_11, thread float4* const tint_symbol_12, thread float4* const tint_symbol_13) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_94 = *(tint_symbol_9);
+  *(tint_symbol_10) = ((x_94 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_101 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    int const x_104 = i_2;
+    int const x_105 = i_2;
+    (*(tint_symbol_11)).numbers.arr[x_104] = (10 - x_105);
+    float const x_109 = x_33.injectionSwitch.x;
+    float const x_111 = x_33.injectionSwitch.y;
+    if ((x_109 > x_111)) {
+      break;
+    }
+    int const x_115 = i_2;
+    int const x_116 = i_2;
+    int const x_118 = (*(tint_symbol_11)).numbers.arr[x_116];
+    int const x_119 = i_2;
+    int const x_121 = (*(tint_symbol_11)).numbers.arr[x_119];
+    (*(tint_symbol_11)).numbers.arr[x_115] = (x_118 * x_121);
+    {
+      int const x_124 = i_2;
+      i_2 = (x_124 + 1);
+    }
+  }
+  quicksort_(tint_symbol_11);
+  float4 const x_127 = *(tint_symbol_10);
+  float2 const x_130 = x_36.resolution;
+  uv = (float2(x_127.x, x_127.y) / x_130);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_133 = (*(tint_symbol_11)).numbers.arr[0];
+  float const x_136 = color.x;
+  color.x = (x_136 + float(x_133));
+  float const x_140 = uv.x;
+  if ((x_140 > 0.25f)) {
+    int const x_145 = (*(tint_symbol_11)).numbers.arr[1];
+    float const x_148 = color.x;
+    color.x = (x_148 + float(x_145));
+  }
+  float const x_152 = uv.x;
+  if ((x_152 > 0.5f)) {
+    int const x_157 = (*(tint_symbol_11)).numbers.arr[2];
+    float const x_160 = color.y;
+    color.y = (x_160 + float(x_157));
+  }
+  float const x_164 = uv.x;
+  if ((x_164 > 0.75f)) {
+    int const x_169 = (*(tint_symbol_11)).numbers.arr[3];
+    float const x_172 = color.z;
+    color.z = (x_172 + float(x_169));
+  }
+  int const x_176 = (*(tint_symbol_11)).numbers.arr[4];
+  float const x_179 = color.y;
+  color.y = (x_179 + float(x_176));
+  float const x_183 = uv.y;
+  if ((x_183 > 0.25f)) {
+    int const x_188 = (*(tint_symbol_11)).numbers.arr[5];
+    float const x_191 = color.x;
+    color.x = (x_191 + float(x_188));
+  }
+  float const x_195 = uv.y;
+  if ((x_195 > 0.5f)) {
+    int const x_200 = (*(tint_symbol_11)).numbers.arr[6];
+    float const x_203 = color.y;
+    color.y = (x_203 + float(x_200));
+  }
+  float const x_207 = uv.y;
+  if ((x_207 > 0.75f)) {
+    int const x_212 = (*(tint_symbol_11)).numbers.arr[7];
+    float const x_215 = color.z;
+    color.z = (x_215 + float(x_212));
+  }
+  int const x_219 = (*(tint_symbol_11)).numbers.arr[8];
+  float const x_222 = color.z;
+  color.z = (x_222 + float(x_219));
+  float const x_226 = uv.x;
+  float const x_228 = uv.y;
+  if ((fabs((x_226 - x_228)) < 0.25f)) {
+    int const x_235 = (*(tint_symbol_11)).numbers.arr[9];
+    float const x_238 = color.x;
+    color.x = (x_238 + float(x_235));
+  }
+  float3 const x_241 = color;
+  float3 const x_242 = normalize(x_241);
+  *(tint_symbol_12) = float4(x_242.x, x_242.y, x_242.z, 1.0f);
+  float4 const x_247 = *(tint_symbol_9);
+  *(tint_symbol_13) = x_247;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf0& x_33 [[buffer(0)]], constant buf1& x_36 [[buffer(1)]]) {
+  thread float4 tint_symbol_14 = 0.0f;
+  thread float4 tint_symbol_15 = 0.0f;
+  thread QuicksortObject tint_symbol_16 = {};
+  thread float4 tint_symbol_17 = 0.0f;
+  thread float4 tint_symbol_18 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_14 = x_GLF_pos_param;
+  main_1(x_33, x_36, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_18));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_17, .gl_Position=tint_symbol_18};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..e0c2ca0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.spvasm
@@ -0,0 +1,589 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 401
+; Schema: 0
+               OpCapability Shader
+        %367 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_33 "x_33"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_36 "x_36"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_33 NonWritable
+               OpDecorate %x_33 DescriptorSet 0
+               OpDecorate %x_33 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_36 NonWritable
+               OpDecorate %x_36 DescriptorSet 0
+               OpDecorate %x_36 Binding 1
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_33 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_36 = OpVariable %_ptr_Uniform_buf1 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %40 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %58 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %118 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %126 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %198 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %202 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %206 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+        %209 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %256 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %386 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %32
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %38 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %40
+         %42 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42
+         %46 = OpLoad %int %45
+               OpStore %temp %46
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %j
+         %51 = OpAccessChain %_ptr_Private_int %obj %uint_0 %50
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Private_int %obj %uint_0 %48
+               OpStore %53 %52
+         %55 = OpLoad %int %j
+         %56 = OpLoad %int %temp
+         %57 = OpAccessChain %_ptr_Private_int %obj %uint_0 %55
+               OpStore %57 %56
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %58
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %62 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %40
+        %i_1 = OpVariable %_ptr_Function_int Function %40
+        %j_1 = OpVariable %_ptr_Function_int Function %40
+      %param = OpVariable %_ptr_Function_int Function %40
+    %param_1 = OpVariable %_ptr_Function_int Function %40
+    %param_2 = OpVariable %_ptr_Function_int Function %40
+    %param_3 = OpVariable %_ptr_Function_int Function %40
+         %71 = OpLoad %int %h
+         %72 = OpAccessChain %_ptr_Private_int %obj %uint_0 %71
+         %73 = OpLoad %int %72
+               OpStore %pivot %73
+         %75 = OpLoad %int %l
+         %77 = OpISub %int %75 %int_1
+               OpStore %i_1 %77
+         %79 = OpLoad %int %l
+               OpStore %j_1 %79
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %j_1
+         %86 = OpLoad %int %h
+         %87 = OpISub %int %86 %int_1
+         %88 = OpSLessThanEqual %bool %84 %87
+               OpSelectionMerge %90 None
+               OpBranchConditional %88 %91 %92
+         %91 = OpLabel
+               OpBranch %90
+         %92 = OpLabel
+               OpBranch %81
+         %90 = OpLabel
+         %93 = OpLoad %int %j_1
+         %94 = OpAccessChain %_ptr_Private_int %obj %uint_0 %93
+         %95 = OpLoad %int %94
+         %96 = OpLoad %int %pivot
+         %97 = OpSLessThanEqual %bool %95 %96
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpLoad %int %i_1
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %i_1 %101
+        %102 = OpLoad %int %i_1
+               OpStore %param %102
+        %103 = OpLoad %int %j_1
+               OpStore %param_1 %103
+        %104 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %98
+         %98 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+        %107 = OpLoad %int %j_1
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %j_1 %108
+               OpBranch %80
+         %81 = OpLabel
+        %109 = OpLoad %int %i_1
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %param_2 %110
+        %112 = OpLoad %int %h
+               OpStore %param_3 %112
+        %113 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %116 = OpLoad %int %i_1
+        %117 = OpIAdd %int %116 %int_1
+               OpReturnValue %117
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %118
+        %120 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %40
+        %h_1 = OpVariable %_ptr_Function_int Function %40
+        %top = OpVariable %_ptr_Function_int Function %40
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %126
+          %p = OpVariable %_ptr_Function_int Function %40
+    %param_4 = OpVariable %_ptr_Function_int Function %40
+    %param_5 = OpVariable %_ptr_Function_int Function %40
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %133 = OpLoad %int %top
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %top %134
+        %135 = OpLoad %int %l_1
+        %136 = OpAccessChain %_ptr_Function_int %stack %134
+               OpStore %136 %135
+        %137 = OpLoad %int %top
+        %138 = OpIAdd %int %137 %int_1
+               OpStore %top %138
+        %139 = OpLoad %int %h_1
+        %140 = OpAccessChain %_ptr_Function_int %stack %138
+               OpStore %140 %139
+               OpBranch %141
+        %141 = OpLabel
+               OpLoopMerge %142 %143 None
+               OpBranch %144
+        %144 = OpLabel
+        %145 = OpLoad %int %top
+        %146 = OpSGreaterThanEqual %bool %145 %int_0
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %149
+        %148 = OpLabel
+               OpBranch %147
+        %149 = OpLabel
+               OpBranch %142
+        %147 = OpLabel
+        %150 = OpLoad %int %top
+        %151 = OpISub %int %150 %int_1
+               OpStore %top %151
+        %152 = OpAccessChain %_ptr_Function_int %stack %150
+        %153 = OpLoad %int %152
+               OpStore %h_1 %153
+        %154 = OpLoad %int %top
+        %155 = OpISub %int %154 %int_1
+               OpStore %top %155
+        %156 = OpAccessChain %_ptr_Function_int %stack %154
+        %157 = OpLoad %int %156
+               OpStore %l_1 %157
+        %158 = OpLoad %int %l_1
+               OpStore %param_4 %158
+        %159 = OpLoad %int %h_1
+               OpStore %param_5 %159
+        %160 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %160
+        %163 = OpLoad %int %p
+        %164 = OpLoad %int %l_1
+        %165 = OpISub %int %163 %int_1
+        %166 = OpSGreaterThan %bool %165 %164
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %167
+        %168 = OpLabel
+        %169 = OpLoad %int %top
+        %170 = OpIAdd %int %169 %int_1
+               OpStore %top %170
+        %171 = OpLoad %int %l_1
+        %172 = OpAccessChain %_ptr_Function_int %stack %170
+               OpStore %172 %171
+        %173 = OpLoad %int %top
+        %174 = OpIAdd %int %173 %int_1
+               OpStore %top %174
+        %175 = OpLoad %int %p
+        %176 = OpAccessChain %_ptr_Function_int %stack %174
+        %177 = OpISub %int %175 %int_1
+               OpStore %176 %177
+               OpBranch %167
+        %167 = OpLabel
+        %178 = OpLoad %int %p
+        %179 = OpLoad %int %h_1
+        %180 = OpIAdd %int %178 %int_1
+        %181 = OpSLessThan %bool %180 %179
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %top
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %top %185
+        %186 = OpLoad %int %p
+        %187 = OpAccessChain %_ptr_Function_int %stack %185
+        %188 = OpIAdd %int %186 %int_1
+               OpStore %187 %188
+        %189 = OpLoad %int %top
+        %190 = OpIAdd %int %189 %int_1
+               OpStore %top %190
+        %191 = OpLoad %int %h_1
+        %192 = OpAccessChain %_ptr_Function_int %stack %190
+               OpStore %192 %191
+               OpBranch %182
+        %182 = OpLabel
+               OpBranch %143
+        %143 = OpLabel
+               OpBranch %141
+        %142 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %118
+        %194 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %40
+         %uv = OpVariable %_ptr_Function_v2float Function %198
+      %color = OpVariable %_ptr_Function_v3float Function %202
+        %203 = OpLoad %v4float %x_GLF_pos
+        %207 = OpFAdd %v4float %203 %206
+        %210 = OpFMul %v4float %207 %209
+               OpStore %x_GLF_FragCoord %210
+               OpStore %i_2 %int_0
+               OpBranch %211
+        %211 = OpLabel
+               OpLoopMerge %212 %213 None
+               OpBranch %214
+        %214 = OpLabel
+        %215 = OpLoad %int %i_2
+        %217 = OpSLessThan %bool %215 %int_10
+               OpSelectionMerge %218 None
+               OpBranchConditional %217 %219 %220
+        %219 = OpLabel
+               OpBranch %218
+        %220 = OpLabel
+               OpBranch %212
+        %218 = OpLabel
+        %221 = OpLoad %int %i_2
+        %222 = OpLoad %int %i_2
+        %223 = OpAccessChain %_ptr_Private_int %obj %uint_0 %221
+        %224 = OpISub %int %int_10 %222
+               OpStore %223 %224
+        %226 = OpAccessChain %_ptr_Uniform_float %x_33 %uint_0 %uint_0
+        %227 = OpLoad %float %226
+        %229 = OpAccessChain %_ptr_Uniform_float %x_33 %uint_0 %uint_1
+        %230 = OpLoad %float %229
+        %231 = OpFOrdGreaterThan %bool %227 %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %232
+        %233 = OpLabel
+               OpBranch %212
+        %232 = OpLabel
+        %234 = OpLoad %int %i_2
+        %235 = OpLoad %int %i_2
+        %236 = OpAccessChain %_ptr_Private_int %obj %uint_0 %235
+        %237 = OpLoad %int %236
+        %238 = OpLoad %int %i_2
+        %239 = OpAccessChain %_ptr_Private_int %obj %uint_0 %238
+        %240 = OpLoad %int %239
+        %241 = OpAccessChain %_ptr_Private_int %obj %uint_0 %234
+        %242 = OpIMul %int %237 %240
+               OpStore %241 %242
+               OpBranch %213
+        %213 = OpLabel
+        %243 = OpLoad %int %i_2
+        %244 = OpIAdd %int %243 %int_1
+               OpStore %i_2 %244
+               OpBranch %211
+        %212 = OpLabel
+        %245 = OpFunctionCall %void %quicksort_
+        %246 = OpLoad %v4float %x_GLF_FragCoord
+        %248 = OpAccessChain %_ptr_Uniform_v2float %x_36 %uint_0
+        %249 = OpLoad %v2float %248
+        %250 = OpCompositeExtract %float %246 0
+        %251 = OpCompositeExtract %float %246 1
+        %252 = OpCompositeConstruct %v2float %250 %251
+        %253 = OpFDiv %v2float %252 %249
+               OpStore %uv %253
+               OpStore %color %256
+        %257 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %258 = OpLoad %int %257
+        %260 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %261 = OpLoad %float %260
+        %262 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %263 = OpConvertSToF %float %258
+        %264 = OpFAdd %float %261 %263
+               OpStore %262 %264
+        %265 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %266 = OpLoad %float %265
+        %268 = OpFOrdGreaterThan %bool %266 %float_0_25
+               OpSelectionMerge %269 None
+               OpBranchConditional %268 %270 %269
+        %270 = OpLabel
+        %271 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %272 = OpLoad %int %271
+        %273 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %274 = OpLoad %float %273
+        %275 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %276 = OpConvertSToF %float %272
+        %277 = OpFAdd %float %274 %276
+               OpStore %275 %277
+               OpBranch %269
+        %269 = OpLabel
+        %278 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %279 = OpLoad %float %278
+        %281 = OpFOrdGreaterThan %bool %279 %float_0_5
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %282
+        %283 = OpLabel
+        %285 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %286 = OpLoad %int %285
+        %287 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %288 = OpLoad %float %287
+        %289 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %290 = OpConvertSToF %float %286
+        %291 = OpFAdd %float %288 %290
+               OpStore %289 %291
+               OpBranch %282
+        %282 = OpLabel
+        %292 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %293 = OpLoad %float %292
+        %295 = OpFOrdGreaterThan %bool %293 %float_0_75
+               OpSelectionMerge %296 None
+               OpBranchConditional %295 %297 %296
+        %297 = OpLabel
+        %299 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %300 = OpLoad %int %299
+        %302 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %303 = OpLoad %float %302
+        %304 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %305 = OpConvertSToF %float %300
+        %306 = OpFAdd %float %303 %305
+               OpStore %304 %306
+               OpBranch %296
+        %296 = OpLabel
+        %308 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %309 = OpLoad %int %308
+        %310 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %311 = OpLoad %float %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %313 = OpConvertSToF %float %309
+        %314 = OpFAdd %float %311 %313
+               OpStore %312 %314
+        %315 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpFOrdGreaterThan %bool %316 %float_0_25
+               OpSelectionMerge %318 None
+               OpBranchConditional %317 %319 %318
+        %319 = OpLabel
+        %321 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %322 = OpLoad %int %321
+        %323 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %324 = OpLoad %float %323
+        %325 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %326 = OpConvertSToF %float %322
+        %327 = OpFAdd %float %324 %326
+               OpStore %325 %327
+               OpBranch %318
+        %318 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %329 = OpLoad %float %328
+        %330 = OpFOrdGreaterThan %bool %329 %float_0_5
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %331
+        %332 = OpLabel
+        %334 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %335 = OpLoad %int %334
+        %336 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %337 = OpLoad %float %336
+        %338 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %339 = OpConvertSToF %float %335
+        %340 = OpFAdd %float %337 %339
+               OpStore %338 %340
+               OpBranch %331
+        %331 = OpLabel
+        %341 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %342 = OpLoad %float %341
+        %343 = OpFOrdGreaterThan %bool %342 %float_0_75
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %344
+        %345 = OpLabel
+        %347 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %348 = OpLoad %int %347
+        %349 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %350 = OpLoad %float %349
+        %351 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %352 = OpConvertSToF %float %348
+        %353 = OpFAdd %float %350 %352
+               OpStore %351 %353
+               OpBranch %344
+        %344 = OpLabel
+        %355 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %356 = OpLoad %int %355
+        %357 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %358 = OpLoad %float %357
+        %359 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %360 = OpConvertSToF %float %356
+        %361 = OpFAdd %float %358 %360
+               OpStore %359 %361
+        %362 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %363 = OpLoad %float %362
+        %364 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %365 = OpLoad %float %364
+        %368 = OpFSub %float %363 %365
+        %366 = OpExtInst %float %367 FAbs %368
+        %369 = OpFOrdLessThan %bool %366 %float_0_25
+               OpSelectionMerge %370 None
+               OpBranchConditional %369 %371 %370
+        %371 = OpLabel
+        %372 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %373 = OpLoad %int %372
+        %374 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %375 = OpLoad %float %374
+        %376 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %377 = OpConvertSToF %float %373
+        %378 = OpFAdd %float %375 %377
+               OpStore %376 %378
+               OpBranch %370
+        %370 = OpLabel
+        %379 = OpLoad %v3float %color
+        %380 = OpExtInst %v3float %367 Normalize %379
+        %381 = OpCompositeExtract %float %380 0
+        %382 = OpCompositeExtract %float %380 1
+        %383 = OpCompositeExtract %float %380 2
+        %384 = OpCompositeConstruct %v4float %381 %382 %383 %float_1
+               OpStore %frag_color %384
+        %385 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %385
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %386
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %390 = OpLabel
+        %391 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %391
+        %392 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %392
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %118
+        %394 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %395 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %395
+        %396 = OpFunctionCall %void %main_1
+        %398 = OpLoad %v4float %frag_color
+        %399 = OpLoad %v4float %gl_Position
+        %400 = OpCompositeConstruct %main_out %398 %399
+        %397 = OpFunctionCall %void %tint_symbol_4 %400
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b0ecbc4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.wgsl
@@ -0,0 +1,276 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_33 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_36 : buf1;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_250 : i32 = *(i);
+  let x_252 : i32 = obj.numbers[x_250];
+  temp = x_252;
+  let x_253 : i32 = *(i);
+  let x_254 : i32 = *(j);
+  let x_256 : i32 = obj.numbers[x_254];
+  obj.numbers[x_253] = x_256;
+  let x_258 : i32 = *(j);
+  let x_259 : i32 = temp;
+  obj.numbers[x_258] = x_259;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_262 : i32 = *(h);
+  let x_264 : i32 = obj.numbers[x_262];
+  pivot = x_264;
+  let x_265 : i32 = *(l);
+  i_1 = (x_265 - 1);
+  let x_267 : i32 = *(l);
+  j_1 = x_267;
+  loop {
+    let x_272 : i32 = j_1;
+    let x_273 : i32 = *(h);
+    if ((x_272 <= (x_273 - 1))) {
+    } else {
+      break;
+    }
+    let x_277 : i32 = j_1;
+    let x_279 : i32 = obj.numbers[x_277];
+    let x_280 : i32 = pivot;
+    if ((x_279 <= x_280)) {
+      let x_284 : i32 = i_1;
+      i_1 = (x_284 + 1);
+      let x_286 : i32 = i_1;
+      param = x_286;
+      let x_287 : i32 = j_1;
+      param_1 = x_287;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_289 : i32 = j_1;
+      j_1 = (x_289 + 1);
+    }
+  }
+  let x_291 : i32 = i_1;
+  param_2 = (x_291 + 1);
+  let x_293 : i32 = *(h);
+  param_3 = x_293;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_295 : i32 = i_1;
+  return (x_295 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_298 : i32 = top;
+  let x_299 : i32 = (x_298 + 1);
+  top = x_299;
+  let x_300 : i32 = l_1;
+  stack[x_299] = x_300;
+  let x_302 : i32 = top;
+  let x_303 : i32 = (x_302 + 1);
+  top = x_303;
+  let x_304 : i32 = h_1;
+  stack[x_303] = x_304;
+  loop {
+    let x_310 : i32 = top;
+    if ((x_310 >= 0)) {
+    } else {
+      break;
+    }
+    let x_313 : i32 = top;
+    top = (x_313 - 1);
+    let x_316 : i32 = stack[x_313];
+    h_1 = x_316;
+    let x_317 : i32 = top;
+    top = (x_317 - 1);
+    let x_320 : i32 = stack[x_317];
+    l_1 = x_320;
+    let x_321 : i32 = l_1;
+    param_4 = x_321;
+    let x_322 : i32 = h_1;
+    param_5 = x_322;
+    let x_323 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_323;
+    let x_324 : i32 = p;
+    let x_326 : i32 = l_1;
+    if (((x_324 - 1) > x_326)) {
+      let x_330 : i32 = top;
+      let x_331 : i32 = (x_330 + 1);
+      top = x_331;
+      let x_332 : i32 = l_1;
+      stack[x_331] = x_332;
+      let x_334 : i32 = top;
+      let x_335 : i32 = (x_334 + 1);
+      top = x_335;
+      let x_336 : i32 = p;
+      stack[x_335] = (x_336 - 1);
+    }
+    let x_339 : i32 = p;
+    let x_341 : i32 = h_1;
+    if (((x_339 + 1) < x_341)) {
+      let x_345 : i32 = top;
+      let x_346 : i32 = (x_345 + 1);
+      top = x_346;
+      let x_347 : i32 = p;
+      stack[x_346] = (x_347 + 1);
+      let x_350 : i32 = top;
+      let x_351 : i32 = (x_350 + 1);
+      top = x_351;
+      let x_352 : i32 = h_1;
+      stack[x_351] = x_352;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_94 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_94 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_101 : i32 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    let x_104 : i32 = i_2;
+    let x_105 : i32 = i_2;
+    obj.numbers[x_104] = (10 - x_105);
+    let x_109 : f32 = x_33.injectionSwitch.x;
+    let x_111 : f32 = x_33.injectionSwitch.y;
+    if ((x_109 > x_111)) {
+      break;
+    }
+    let x_115 : i32 = i_2;
+    let x_116 : i32 = i_2;
+    let x_118 : i32 = obj.numbers[x_116];
+    let x_119 : i32 = i_2;
+    let x_121 : i32 = obj.numbers[x_119];
+    obj.numbers[x_115] = (x_118 * x_121);
+
+    continuing {
+      let x_124 : i32 = i_2;
+      i_2 = (x_124 + 1);
+    }
+  }
+  quicksort_();
+  let x_127 : vec4<f32> = x_GLF_FragCoord;
+  let x_130 : vec2<f32> = x_36.resolution;
+  uv = (vec2<f32>(x_127.x, x_127.y) / x_130);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_133 : i32 = obj.numbers[0];
+  let x_136 : f32 = color.x;
+  color.x = (x_136 + f32(x_133));
+  let x_140 : f32 = uv.x;
+  if ((x_140 > 0.25)) {
+    let x_145 : i32 = obj.numbers[1];
+    let x_148 : f32 = color.x;
+    color.x = (x_148 + f32(x_145));
+  }
+  let x_152 : f32 = uv.x;
+  if ((x_152 > 0.5)) {
+    let x_157 : i32 = obj.numbers[2];
+    let x_160 : f32 = color.y;
+    color.y = (x_160 + f32(x_157));
+  }
+  let x_164 : f32 = uv.x;
+  if ((x_164 > 0.75)) {
+    let x_169 : i32 = obj.numbers[3];
+    let x_172 : f32 = color.z;
+    color.z = (x_172 + f32(x_169));
+  }
+  let x_176 : i32 = obj.numbers[4];
+  let x_179 : f32 = color.y;
+  color.y = (x_179 + f32(x_176));
+  let x_183 : f32 = uv.y;
+  if ((x_183 > 0.25)) {
+    let x_188 : i32 = obj.numbers[5];
+    let x_191 : f32 = color.x;
+    color.x = (x_191 + f32(x_188));
+  }
+  let x_195 : f32 = uv.y;
+  if ((x_195 > 0.5)) {
+    let x_200 : i32 = obj.numbers[6];
+    let x_203 : f32 = color.y;
+    color.y = (x_203 + f32(x_200));
+  }
+  let x_207 : f32 = uv.y;
+  if ((x_207 > 0.75)) {
+    let x_212 : i32 = obj.numbers[7];
+    let x_215 : f32 = color.z;
+    color.z = (x_215 + f32(x_212));
+  }
+  let x_219 : i32 = obj.numbers[8];
+  let x_222 : f32 = color.z;
+  color.z = (x_222 + f32(x_219));
+  let x_226 : f32 = uv.x;
+  let x_228 : f32 = uv.y;
+  if ((abs((x_226 - x_228)) < 0.25)) {
+    let x_235 : i32 = obj.numbers[9];
+    let x_238 : f32 = color.x;
+    color.x = (x_238 + f32(x_235));
+  }
+  let x_241 : vec3<f32> = color;
+  let x_242 : vec3<f32> = normalize(x_241);
+  frag_color = vec4<f32>(x_242.x, x_242.y, x_242.z, 1.0);
+  let x_247 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_247;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
new file mode 100644
index 0000000..b0ecbc4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
@@ -0,0 +1,276 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_33 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_36 : buf1;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_250 : i32 = *(i);
+  let x_252 : i32 = obj.numbers[x_250];
+  temp = x_252;
+  let x_253 : i32 = *(i);
+  let x_254 : i32 = *(j);
+  let x_256 : i32 = obj.numbers[x_254];
+  obj.numbers[x_253] = x_256;
+  let x_258 : i32 = *(j);
+  let x_259 : i32 = temp;
+  obj.numbers[x_258] = x_259;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_262 : i32 = *(h);
+  let x_264 : i32 = obj.numbers[x_262];
+  pivot = x_264;
+  let x_265 : i32 = *(l);
+  i_1 = (x_265 - 1);
+  let x_267 : i32 = *(l);
+  j_1 = x_267;
+  loop {
+    let x_272 : i32 = j_1;
+    let x_273 : i32 = *(h);
+    if ((x_272 <= (x_273 - 1))) {
+    } else {
+      break;
+    }
+    let x_277 : i32 = j_1;
+    let x_279 : i32 = obj.numbers[x_277];
+    let x_280 : i32 = pivot;
+    if ((x_279 <= x_280)) {
+      let x_284 : i32 = i_1;
+      i_1 = (x_284 + 1);
+      let x_286 : i32 = i_1;
+      param = x_286;
+      let x_287 : i32 = j_1;
+      param_1 = x_287;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_289 : i32 = j_1;
+      j_1 = (x_289 + 1);
+    }
+  }
+  let x_291 : i32 = i_1;
+  param_2 = (x_291 + 1);
+  let x_293 : i32 = *(h);
+  param_3 = x_293;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_295 : i32 = i_1;
+  return (x_295 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_298 : i32 = top;
+  let x_299 : i32 = (x_298 + 1);
+  top = x_299;
+  let x_300 : i32 = l_1;
+  stack[x_299] = x_300;
+  let x_302 : i32 = top;
+  let x_303 : i32 = (x_302 + 1);
+  top = x_303;
+  let x_304 : i32 = h_1;
+  stack[x_303] = x_304;
+  loop {
+    let x_310 : i32 = top;
+    if ((x_310 >= 0)) {
+    } else {
+      break;
+    }
+    let x_313 : i32 = top;
+    top = (x_313 - 1);
+    let x_316 : i32 = stack[x_313];
+    h_1 = x_316;
+    let x_317 : i32 = top;
+    top = (x_317 - 1);
+    let x_320 : i32 = stack[x_317];
+    l_1 = x_320;
+    let x_321 : i32 = l_1;
+    param_4 = x_321;
+    let x_322 : i32 = h_1;
+    param_5 = x_322;
+    let x_323 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_323;
+    let x_324 : i32 = p;
+    let x_326 : i32 = l_1;
+    if (((x_324 - 1) > x_326)) {
+      let x_330 : i32 = top;
+      let x_331 : i32 = (x_330 + 1);
+      top = x_331;
+      let x_332 : i32 = l_1;
+      stack[x_331] = x_332;
+      let x_334 : i32 = top;
+      let x_335 : i32 = (x_334 + 1);
+      top = x_335;
+      let x_336 : i32 = p;
+      stack[x_335] = (x_336 - 1);
+    }
+    let x_339 : i32 = p;
+    let x_341 : i32 = h_1;
+    if (((x_339 + 1) < x_341)) {
+      let x_345 : i32 = top;
+      let x_346 : i32 = (x_345 + 1);
+      top = x_346;
+      let x_347 : i32 = p;
+      stack[x_346] = (x_347 + 1);
+      let x_350 : i32 = top;
+      let x_351 : i32 = (x_350 + 1);
+      top = x_351;
+      let x_352 : i32 = h_1;
+      stack[x_351] = x_352;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_94 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_94 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_101 : i32 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    let x_104 : i32 = i_2;
+    let x_105 : i32 = i_2;
+    obj.numbers[x_104] = (10 - x_105);
+    let x_109 : f32 = x_33.injectionSwitch.x;
+    let x_111 : f32 = x_33.injectionSwitch.y;
+    if ((x_109 > x_111)) {
+      break;
+    }
+    let x_115 : i32 = i_2;
+    let x_116 : i32 = i_2;
+    let x_118 : i32 = obj.numbers[x_116];
+    let x_119 : i32 = i_2;
+    let x_121 : i32 = obj.numbers[x_119];
+    obj.numbers[x_115] = (x_118 * x_121);
+
+    continuing {
+      let x_124 : i32 = i_2;
+      i_2 = (x_124 + 1);
+    }
+  }
+  quicksort_();
+  let x_127 : vec4<f32> = x_GLF_FragCoord;
+  let x_130 : vec2<f32> = x_36.resolution;
+  uv = (vec2<f32>(x_127.x, x_127.y) / x_130);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_133 : i32 = obj.numbers[0];
+  let x_136 : f32 = color.x;
+  color.x = (x_136 + f32(x_133));
+  let x_140 : f32 = uv.x;
+  if ((x_140 > 0.25)) {
+    let x_145 : i32 = obj.numbers[1];
+    let x_148 : f32 = color.x;
+    color.x = (x_148 + f32(x_145));
+  }
+  let x_152 : f32 = uv.x;
+  if ((x_152 > 0.5)) {
+    let x_157 : i32 = obj.numbers[2];
+    let x_160 : f32 = color.y;
+    color.y = (x_160 + f32(x_157));
+  }
+  let x_164 : f32 = uv.x;
+  if ((x_164 > 0.75)) {
+    let x_169 : i32 = obj.numbers[3];
+    let x_172 : f32 = color.z;
+    color.z = (x_172 + f32(x_169));
+  }
+  let x_176 : i32 = obj.numbers[4];
+  let x_179 : f32 = color.y;
+  color.y = (x_179 + f32(x_176));
+  let x_183 : f32 = uv.y;
+  if ((x_183 > 0.25)) {
+    let x_188 : i32 = obj.numbers[5];
+    let x_191 : f32 = color.x;
+    color.x = (x_191 + f32(x_188));
+  }
+  let x_195 : f32 = uv.y;
+  if ((x_195 > 0.5)) {
+    let x_200 : i32 = obj.numbers[6];
+    let x_203 : f32 = color.y;
+    color.y = (x_203 + f32(x_200));
+  }
+  let x_207 : f32 = uv.y;
+  if ((x_207 > 0.75)) {
+    let x_212 : i32 = obj.numbers[7];
+    let x_215 : f32 = color.z;
+    color.z = (x_215 + f32(x_212));
+  }
+  let x_219 : i32 = obj.numbers[8];
+  let x_222 : f32 = color.z;
+  color.z = (x_222 + f32(x_219));
+  let x_226 : f32 = uv.x;
+  let x_228 : f32 = uv.y;
+  if ((abs((x_226 - x_228)) < 0.25)) {
+    let x_235 : i32 = obj.numbers[9];
+    let x_238 : f32 = color.x;
+    color.x = (x_238 + f32(x_235));
+  }
+  let x_241 : vec3<f32> = color;
+  let x_242 : vec3<f32> = normalize(x_241);
+  frag_color = vec4<f32>(x_242.x, x_242.y, x_242.z, 1.0);
+  let x_247 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_247;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..017bbe6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.hlsl
@@ -0,0 +1,227 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_33 : register(b0, space0) {
+  uint4 x_33[1];
+};
+cbuffer cbuffer_x_36 : register(b1, space0) {
+  uint4 x_36[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_250 = i;
+  const int x_252 = obj.numbers[x_250];
+  temp = x_252;
+  const int x_253 = i;
+  const int x_254 = j;
+  const int x_256 = obj.numbers[x_254];
+  obj.numbers[x_253] = x_256;
+  const int x_258 = j;
+  obj.numbers[x_258] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_262 = h;
+  const int x_264 = obj.numbers[x_262];
+  pivot = x_264;
+  const int x_265 = l;
+  i_1 = (x_265 - 1);
+  const int x_267 = l;
+  j_1 = x_267;
+  while (true) {
+    const int x_272 = j_1;
+    const int x_273 = h;
+    if ((x_272 <= (x_273 - 1))) {
+    } else {
+      break;
+    }
+    const int x_279 = obj.numbers[j_1];
+    if ((x_279 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_293 = h;
+  param_3 = x_293;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_299 = (top + 1);
+  top = x_299;
+  stack[x_299] = l_1;
+  const int x_303 = (top + 1);
+  top = x_303;
+  stack[x_303] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_313 = top;
+    top = (x_313 - 1);
+    const int x_316 = stack[x_313];
+    h_1 = x_316;
+    const int x_317 = top;
+    top = (x_317 - 1);
+    const int x_320 = stack[x_317];
+    l_1 = x_320;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_323 = performPartition_i1_i1_(param_4, param_5);
+    p = x_323;
+    if (((p - 1) > l_1)) {
+      const int x_331 = (top + 1);
+      top = x_331;
+      stack[x_331] = l_1;
+      const int x_335 = (top + 1);
+      top = x_335;
+      stack[x_335] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_346 = (top + 1);
+      top = x_346;
+      stack[x_346] = (p + 1);
+      const int x_351 = (top + 1);
+      top = x_351;
+      stack[x_351] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const float x_109 = asfloat(x_33[0].x);
+      const float x_111 = asfloat(x_33[0].y);
+      if ((x_109 > x_111)) {
+        break;
+      }
+      const int x_115 = i_2;
+      const int x_118 = obj.numbers[i_2];
+      const int x_121 = obj.numbers[i_2];
+      obj.numbers[x_115] = (x_118 * x_121);
+    }
+  }
+  quicksort_();
+  const float4 x_127 = x_GLF_FragCoord;
+  const float2 x_130 = asfloat(x_36[0].xy);
+  uv = (float2(x_127.x, x_127.y) / x_130);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_133 = obj.numbers[0];
+  const float x_136 = color.x;
+  color.x = (x_136 + float(x_133));
+  const float x_140 = uv.x;
+  if ((x_140 > 0.25f)) {
+    const int x_145 = obj.numbers[1];
+    const float x_148 = color.x;
+    color.x = (x_148 + float(x_145));
+  }
+  const float x_152 = uv.x;
+  if ((x_152 > 0.5f)) {
+    const int x_157 = obj.numbers[2];
+    const float x_160 = color.y;
+    color.y = (x_160 + float(x_157));
+  }
+  const float x_164 = uv.x;
+  if ((x_164 > 0.75f)) {
+    const int x_169 = obj.numbers[3];
+    const float x_172 = color.z;
+    color.z = (x_172 + float(x_169));
+  }
+  const int x_176 = obj.numbers[4];
+  const float x_179 = color.y;
+  color.y = (x_179 + float(x_176));
+  const float x_183 = uv.y;
+  if ((x_183 > 0.25f)) {
+    const int x_188 = obj.numbers[5];
+    const float x_191 = color.x;
+    color.x = (x_191 + float(x_188));
+  }
+  const float x_195 = uv.y;
+  if ((x_195 > 0.5f)) {
+    const int x_200 = obj.numbers[6];
+    const float x_203 = color.y;
+    color.y = (x_203 + float(x_200));
+  }
+  const float x_207 = uv.y;
+  if ((x_207 > 0.75f)) {
+    const int x_212 = obj.numbers[7];
+    const float x_215 = color.z;
+    color.z = (x_215 + float(x_212));
+  }
+  const int x_219 = obj.numbers[8];
+  const float x_222 = color.z;
+  color.z = (x_222 + float(x_219));
+  const float x_226 = uv.x;
+  const float x_228 = uv.y;
+  if ((abs((x_226 - x_228)) < 0.25f)) {
+    const int x_235 = obj.numbers[9];
+    const float x_238 = color.x;
+    color.x = (x_238 + float(x_235));
+  }
+  const float3 x_242 = normalize(color);
+  frag_color = float4(x_242.x, x_242.y, x_242.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.msl
new file mode 100644
index 0000000..fae0fc6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.msl
@@ -0,0 +1,274 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_6) {
+  int temp = 0;
+  int const x_250 = *(i);
+  int const x_252 = (*(tint_symbol_6)).numbers.arr[x_250];
+  temp = x_252;
+  int const x_253 = *(i);
+  int const x_254 = *(j);
+  int const x_256 = (*(tint_symbol_6)).numbers.arr[x_254];
+  (*(tint_symbol_6)).numbers.arr[x_253] = x_256;
+  int const x_258 = *(j);
+  int const x_259 = temp;
+  (*(tint_symbol_6)).numbers.arr[x_258] = x_259;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_7) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_262 = *(h);
+  int const x_264 = (*(tint_symbol_7)).numbers.arr[x_262];
+  pivot = x_264;
+  int const x_265 = *(l);
+  i_1 = (x_265 - 1);
+  int const x_267 = *(l);
+  j_1 = x_267;
+  while (true) {
+    int const x_272 = j_1;
+    int const x_273 = *(h);
+    if ((x_272 <= (x_273 - 1))) {
+    } else {
+      break;
+    }
+    int const x_277 = j_1;
+    int const x_279 = (*(tint_symbol_7)).numbers.arr[x_277];
+    int const x_280 = pivot;
+    if ((x_279 <= x_280)) {
+      int const x_284 = i_1;
+      i_1 = (x_284 + 1);
+      int const x_286 = i_1;
+      param = x_286;
+      int const x_287 = j_1;
+      param_1 = x_287;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_7);
+    }
+    {
+      int const x_289 = j_1;
+      j_1 = (x_289 + 1);
+    }
+  }
+  int const x_291 = i_1;
+  param_2 = (x_291 + 1);
+  int const x_293 = *(h);
+  param_3 = x_293;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_7);
+  int const x_295 = i_1;
+  return (x_295 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_8) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_298 = top;
+  int const x_299 = (x_298 + 1);
+  top = x_299;
+  int const x_300 = l_1;
+  stack.arr[x_299] = x_300;
+  int const x_302 = top;
+  int const x_303 = (x_302 + 1);
+  top = x_303;
+  int const x_304 = h_1;
+  stack.arr[x_303] = x_304;
+  while (true) {
+    int const x_310 = top;
+    if ((x_310 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_313 = top;
+    top = (x_313 - 1);
+    int const x_316 = stack.arr[x_313];
+    h_1 = x_316;
+    int const x_317 = top;
+    top = (x_317 - 1);
+    int const x_320 = stack.arr[x_317];
+    l_1 = x_320;
+    int const x_321 = l_1;
+    param_4 = x_321;
+    int const x_322 = h_1;
+    param_5 = x_322;
+    int const x_323 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_8);
+    p = x_323;
+    int const x_324 = p;
+    int const x_326 = l_1;
+    if (((x_324 - 1) > x_326)) {
+      int const x_330 = top;
+      int const x_331 = (x_330 + 1);
+      top = x_331;
+      int const x_332 = l_1;
+      stack.arr[x_331] = x_332;
+      int const x_334 = top;
+      int const x_335 = (x_334 + 1);
+      top = x_335;
+      int const x_336 = p;
+      stack.arr[x_335] = (x_336 - 1);
+    }
+    int const x_339 = p;
+    int const x_341 = h_1;
+    if (((x_339 + 1) < x_341)) {
+      int const x_345 = top;
+      int const x_346 = (x_345 + 1);
+      top = x_346;
+      int const x_347 = p;
+      stack.arr[x_346] = (x_347 + 1);
+      int const x_350 = top;
+      int const x_351 = (x_350 + 1);
+      top = x_351;
+      int const x_352 = h_1;
+      stack.arr[x_351] = x_352;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf0& x_33, constant buf1& x_36, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10, thread QuicksortObject* const tint_symbol_11, thread float4* const tint_symbol_12, thread float4* const tint_symbol_13) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_94 = *(tint_symbol_9);
+  *(tint_symbol_10) = ((x_94 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_101 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    int const x_104 = i_2;
+    int const x_105 = i_2;
+    (*(tint_symbol_11)).numbers.arr[x_104] = (10 - x_105);
+    float const x_109 = x_33.injectionSwitch.x;
+    float const x_111 = x_33.injectionSwitch.y;
+    if ((x_109 > x_111)) {
+      break;
+    }
+    int const x_115 = i_2;
+    int const x_116 = i_2;
+    int const x_118 = (*(tint_symbol_11)).numbers.arr[x_116];
+    int const x_119 = i_2;
+    int const x_121 = (*(tint_symbol_11)).numbers.arr[x_119];
+    (*(tint_symbol_11)).numbers.arr[x_115] = (x_118 * x_121);
+    {
+      int const x_124 = i_2;
+      i_2 = (x_124 + 1);
+    }
+  }
+  quicksort_(tint_symbol_11);
+  float4 const x_127 = *(tint_symbol_10);
+  float2 const x_130 = x_36.resolution;
+  uv = (float2(x_127.x, x_127.y) / x_130);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_133 = (*(tint_symbol_11)).numbers.arr[0];
+  float const x_136 = color.x;
+  color.x = (x_136 + float(x_133));
+  float const x_140 = uv.x;
+  if ((x_140 > 0.25f)) {
+    int const x_145 = (*(tint_symbol_11)).numbers.arr[1];
+    float const x_148 = color.x;
+    color.x = (x_148 + float(x_145));
+  }
+  float const x_152 = uv.x;
+  if ((x_152 > 0.5f)) {
+    int const x_157 = (*(tint_symbol_11)).numbers.arr[2];
+    float const x_160 = color.y;
+    color.y = (x_160 + float(x_157));
+  }
+  float const x_164 = uv.x;
+  if ((x_164 > 0.75f)) {
+    int const x_169 = (*(tint_symbol_11)).numbers.arr[3];
+    float const x_172 = color.z;
+    color.z = (x_172 + float(x_169));
+  }
+  int const x_176 = (*(tint_symbol_11)).numbers.arr[4];
+  float const x_179 = color.y;
+  color.y = (x_179 + float(x_176));
+  float const x_183 = uv.y;
+  if ((x_183 > 0.25f)) {
+    int const x_188 = (*(tint_symbol_11)).numbers.arr[5];
+    float const x_191 = color.x;
+    color.x = (x_191 + float(x_188));
+  }
+  float const x_195 = uv.y;
+  if ((x_195 > 0.5f)) {
+    int const x_200 = (*(tint_symbol_11)).numbers.arr[6];
+    float const x_203 = color.y;
+    color.y = (x_203 + float(x_200));
+  }
+  float const x_207 = uv.y;
+  if ((x_207 > 0.75f)) {
+    int const x_212 = (*(tint_symbol_11)).numbers.arr[7];
+    float const x_215 = color.z;
+    color.z = (x_215 + float(x_212));
+  }
+  int const x_219 = (*(tint_symbol_11)).numbers.arr[8];
+  float const x_222 = color.z;
+  color.z = (x_222 + float(x_219));
+  float const x_226 = uv.x;
+  float const x_228 = uv.y;
+  if ((fabs((x_226 - x_228)) < 0.25f)) {
+    int const x_235 = (*(tint_symbol_11)).numbers.arr[9];
+    float const x_238 = color.x;
+    color.x = (x_238 + float(x_235));
+  }
+  float3 const x_241 = color;
+  float3 const x_242 = normalize(x_241);
+  *(tint_symbol_12) = float4(x_242.x, x_242.y, x_242.z, 1.0f);
+  float4 const x_247 = *(tint_symbol_9);
+  *(tint_symbol_13) = x_247;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf0& x_33 [[buffer(0)]], constant buf1& x_36 [[buffer(1)]]) {
+  thread float4 tint_symbol_14 = 0.0f;
+  thread float4 tint_symbol_15 = 0.0f;
+  thread QuicksortObject tint_symbol_16 = {};
+  thread float4 tint_symbol_17 = 0.0f;
+  thread float4 tint_symbol_18 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_14 = x_GLF_pos_param;
+  main_1(x_33, x_36, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_18));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_17, .gl_Position=tint_symbol_18};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..e0c2ca0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.spvasm
@@ -0,0 +1,589 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 401
+; Schema: 0
+               OpCapability Shader
+        %367 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_33 "x_33"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_36 "x_36"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_33 NonWritable
+               OpDecorate %x_33 DescriptorSet 0
+               OpDecorate %x_33 Binding 0
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_36 NonWritable
+               OpDecorate %x_36 DescriptorSet 0
+               OpDecorate %x_36 Binding 1
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_33 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_36 = OpVariable %_ptr_Uniform_buf1 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %40 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %58 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %118 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %126 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %198 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %202 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %206 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+        %209 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %256 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %386 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %32
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %38 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %40
+         %42 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42
+         %46 = OpLoad %int %45
+               OpStore %temp %46
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %j
+         %51 = OpAccessChain %_ptr_Private_int %obj %uint_0 %50
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Private_int %obj %uint_0 %48
+               OpStore %53 %52
+         %55 = OpLoad %int %j
+         %56 = OpLoad %int %temp
+         %57 = OpAccessChain %_ptr_Private_int %obj %uint_0 %55
+               OpStore %57 %56
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %58
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %62 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %40
+        %i_1 = OpVariable %_ptr_Function_int Function %40
+        %j_1 = OpVariable %_ptr_Function_int Function %40
+      %param = OpVariable %_ptr_Function_int Function %40
+    %param_1 = OpVariable %_ptr_Function_int Function %40
+    %param_2 = OpVariable %_ptr_Function_int Function %40
+    %param_3 = OpVariable %_ptr_Function_int Function %40
+         %71 = OpLoad %int %h
+         %72 = OpAccessChain %_ptr_Private_int %obj %uint_0 %71
+         %73 = OpLoad %int %72
+               OpStore %pivot %73
+         %75 = OpLoad %int %l
+         %77 = OpISub %int %75 %int_1
+               OpStore %i_1 %77
+         %79 = OpLoad %int %l
+               OpStore %j_1 %79
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %j_1
+         %86 = OpLoad %int %h
+         %87 = OpISub %int %86 %int_1
+         %88 = OpSLessThanEqual %bool %84 %87
+               OpSelectionMerge %90 None
+               OpBranchConditional %88 %91 %92
+         %91 = OpLabel
+               OpBranch %90
+         %92 = OpLabel
+               OpBranch %81
+         %90 = OpLabel
+         %93 = OpLoad %int %j_1
+         %94 = OpAccessChain %_ptr_Private_int %obj %uint_0 %93
+         %95 = OpLoad %int %94
+         %96 = OpLoad %int %pivot
+         %97 = OpSLessThanEqual %bool %95 %96
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpLoad %int %i_1
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %i_1 %101
+        %102 = OpLoad %int %i_1
+               OpStore %param %102
+        %103 = OpLoad %int %j_1
+               OpStore %param_1 %103
+        %104 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %98
+         %98 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+        %107 = OpLoad %int %j_1
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %j_1 %108
+               OpBranch %80
+         %81 = OpLabel
+        %109 = OpLoad %int %i_1
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %param_2 %110
+        %112 = OpLoad %int %h
+               OpStore %param_3 %112
+        %113 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %116 = OpLoad %int %i_1
+        %117 = OpIAdd %int %116 %int_1
+               OpReturnValue %117
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %118
+        %120 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %40
+        %h_1 = OpVariable %_ptr_Function_int Function %40
+        %top = OpVariable %_ptr_Function_int Function %40
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %126
+          %p = OpVariable %_ptr_Function_int Function %40
+    %param_4 = OpVariable %_ptr_Function_int Function %40
+    %param_5 = OpVariable %_ptr_Function_int Function %40
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %133 = OpLoad %int %top
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %top %134
+        %135 = OpLoad %int %l_1
+        %136 = OpAccessChain %_ptr_Function_int %stack %134
+               OpStore %136 %135
+        %137 = OpLoad %int %top
+        %138 = OpIAdd %int %137 %int_1
+               OpStore %top %138
+        %139 = OpLoad %int %h_1
+        %140 = OpAccessChain %_ptr_Function_int %stack %138
+               OpStore %140 %139
+               OpBranch %141
+        %141 = OpLabel
+               OpLoopMerge %142 %143 None
+               OpBranch %144
+        %144 = OpLabel
+        %145 = OpLoad %int %top
+        %146 = OpSGreaterThanEqual %bool %145 %int_0
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %149
+        %148 = OpLabel
+               OpBranch %147
+        %149 = OpLabel
+               OpBranch %142
+        %147 = OpLabel
+        %150 = OpLoad %int %top
+        %151 = OpISub %int %150 %int_1
+               OpStore %top %151
+        %152 = OpAccessChain %_ptr_Function_int %stack %150
+        %153 = OpLoad %int %152
+               OpStore %h_1 %153
+        %154 = OpLoad %int %top
+        %155 = OpISub %int %154 %int_1
+               OpStore %top %155
+        %156 = OpAccessChain %_ptr_Function_int %stack %154
+        %157 = OpLoad %int %156
+               OpStore %l_1 %157
+        %158 = OpLoad %int %l_1
+               OpStore %param_4 %158
+        %159 = OpLoad %int %h_1
+               OpStore %param_5 %159
+        %160 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %160
+        %163 = OpLoad %int %p
+        %164 = OpLoad %int %l_1
+        %165 = OpISub %int %163 %int_1
+        %166 = OpSGreaterThan %bool %165 %164
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %167
+        %168 = OpLabel
+        %169 = OpLoad %int %top
+        %170 = OpIAdd %int %169 %int_1
+               OpStore %top %170
+        %171 = OpLoad %int %l_1
+        %172 = OpAccessChain %_ptr_Function_int %stack %170
+               OpStore %172 %171
+        %173 = OpLoad %int %top
+        %174 = OpIAdd %int %173 %int_1
+               OpStore %top %174
+        %175 = OpLoad %int %p
+        %176 = OpAccessChain %_ptr_Function_int %stack %174
+        %177 = OpISub %int %175 %int_1
+               OpStore %176 %177
+               OpBranch %167
+        %167 = OpLabel
+        %178 = OpLoad %int %p
+        %179 = OpLoad %int %h_1
+        %180 = OpIAdd %int %178 %int_1
+        %181 = OpSLessThan %bool %180 %179
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %top
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %top %185
+        %186 = OpLoad %int %p
+        %187 = OpAccessChain %_ptr_Function_int %stack %185
+        %188 = OpIAdd %int %186 %int_1
+               OpStore %187 %188
+        %189 = OpLoad %int %top
+        %190 = OpIAdd %int %189 %int_1
+               OpStore %top %190
+        %191 = OpLoad %int %h_1
+        %192 = OpAccessChain %_ptr_Function_int %stack %190
+               OpStore %192 %191
+               OpBranch %182
+        %182 = OpLabel
+               OpBranch %143
+        %143 = OpLabel
+               OpBranch %141
+        %142 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %118
+        %194 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %40
+         %uv = OpVariable %_ptr_Function_v2float Function %198
+      %color = OpVariable %_ptr_Function_v3float Function %202
+        %203 = OpLoad %v4float %x_GLF_pos
+        %207 = OpFAdd %v4float %203 %206
+        %210 = OpFMul %v4float %207 %209
+               OpStore %x_GLF_FragCoord %210
+               OpStore %i_2 %int_0
+               OpBranch %211
+        %211 = OpLabel
+               OpLoopMerge %212 %213 None
+               OpBranch %214
+        %214 = OpLabel
+        %215 = OpLoad %int %i_2
+        %217 = OpSLessThan %bool %215 %int_10
+               OpSelectionMerge %218 None
+               OpBranchConditional %217 %219 %220
+        %219 = OpLabel
+               OpBranch %218
+        %220 = OpLabel
+               OpBranch %212
+        %218 = OpLabel
+        %221 = OpLoad %int %i_2
+        %222 = OpLoad %int %i_2
+        %223 = OpAccessChain %_ptr_Private_int %obj %uint_0 %221
+        %224 = OpISub %int %int_10 %222
+               OpStore %223 %224
+        %226 = OpAccessChain %_ptr_Uniform_float %x_33 %uint_0 %uint_0
+        %227 = OpLoad %float %226
+        %229 = OpAccessChain %_ptr_Uniform_float %x_33 %uint_0 %uint_1
+        %230 = OpLoad %float %229
+        %231 = OpFOrdGreaterThan %bool %227 %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %232
+        %233 = OpLabel
+               OpBranch %212
+        %232 = OpLabel
+        %234 = OpLoad %int %i_2
+        %235 = OpLoad %int %i_2
+        %236 = OpAccessChain %_ptr_Private_int %obj %uint_0 %235
+        %237 = OpLoad %int %236
+        %238 = OpLoad %int %i_2
+        %239 = OpAccessChain %_ptr_Private_int %obj %uint_0 %238
+        %240 = OpLoad %int %239
+        %241 = OpAccessChain %_ptr_Private_int %obj %uint_0 %234
+        %242 = OpIMul %int %237 %240
+               OpStore %241 %242
+               OpBranch %213
+        %213 = OpLabel
+        %243 = OpLoad %int %i_2
+        %244 = OpIAdd %int %243 %int_1
+               OpStore %i_2 %244
+               OpBranch %211
+        %212 = OpLabel
+        %245 = OpFunctionCall %void %quicksort_
+        %246 = OpLoad %v4float %x_GLF_FragCoord
+        %248 = OpAccessChain %_ptr_Uniform_v2float %x_36 %uint_0
+        %249 = OpLoad %v2float %248
+        %250 = OpCompositeExtract %float %246 0
+        %251 = OpCompositeExtract %float %246 1
+        %252 = OpCompositeConstruct %v2float %250 %251
+        %253 = OpFDiv %v2float %252 %249
+               OpStore %uv %253
+               OpStore %color %256
+        %257 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %258 = OpLoad %int %257
+        %260 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %261 = OpLoad %float %260
+        %262 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %263 = OpConvertSToF %float %258
+        %264 = OpFAdd %float %261 %263
+               OpStore %262 %264
+        %265 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %266 = OpLoad %float %265
+        %268 = OpFOrdGreaterThan %bool %266 %float_0_25
+               OpSelectionMerge %269 None
+               OpBranchConditional %268 %270 %269
+        %270 = OpLabel
+        %271 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %272 = OpLoad %int %271
+        %273 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %274 = OpLoad %float %273
+        %275 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %276 = OpConvertSToF %float %272
+        %277 = OpFAdd %float %274 %276
+               OpStore %275 %277
+               OpBranch %269
+        %269 = OpLabel
+        %278 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %279 = OpLoad %float %278
+        %281 = OpFOrdGreaterThan %bool %279 %float_0_5
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %282
+        %283 = OpLabel
+        %285 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %286 = OpLoad %int %285
+        %287 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %288 = OpLoad %float %287
+        %289 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %290 = OpConvertSToF %float %286
+        %291 = OpFAdd %float %288 %290
+               OpStore %289 %291
+               OpBranch %282
+        %282 = OpLabel
+        %292 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %293 = OpLoad %float %292
+        %295 = OpFOrdGreaterThan %bool %293 %float_0_75
+               OpSelectionMerge %296 None
+               OpBranchConditional %295 %297 %296
+        %297 = OpLabel
+        %299 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %300 = OpLoad %int %299
+        %302 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %303 = OpLoad %float %302
+        %304 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %305 = OpConvertSToF %float %300
+        %306 = OpFAdd %float %303 %305
+               OpStore %304 %306
+               OpBranch %296
+        %296 = OpLabel
+        %308 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %309 = OpLoad %int %308
+        %310 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %311 = OpLoad %float %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %313 = OpConvertSToF %float %309
+        %314 = OpFAdd %float %311 %313
+               OpStore %312 %314
+        %315 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpFOrdGreaterThan %bool %316 %float_0_25
+               OpSelectionMerge %318 None
+               OpBranchConditional %317 %319 %318
+        %319 = OpLabel
+        %321 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %322 = OpLoad %int %321
+        %323 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %324 = OpLoad %float %323
+        %325 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %326 = OpConvertSToF %float %322
+        %327 = OpFAdd %float %324 %326
+               OpStore %325 %327
+               OpBranch %318
+        %318 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %329 = OpLoad %float %328
+        %330 = OpFOrdGreaterThan %bool %329 %float_0_5
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %331
+        %332 = OpLabel
+        %334 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %335 = OpLoad %int %334
+        %336 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %337 = OpLoad %float %336
+        %338 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %339 = OpConvertSToF %float %335
+        %340 = OpFAdd %float %337 %339
+               OpStore %338 %340
+               OpBranch %331
+        %331 = OpLabel
+        %341 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %342 = OpLoad %float %341
+        %343 = OpFOrdGreaterThan %bool %342 %float_0_75
+               OpSelectionMerge %344 None
+               OpBranchConditional %343 %345 %344
+        %345 = OpLabel
+        %347 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %348 = OpLoad %int %347
+        %349 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %350 = OpLoad %float %349
+        %351 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %352 = OpConvertSToF %float %348
+        %353 = OpFAdd %float %350 %352
+               OpStore %351 %353
+               OpBranch %344
+        %344 = OpLabel
+        %355 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %356 = OpLoad %int %355
+        %357 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %358 = OpLoad %float %357
+        %359 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %360 = OpConvertSToF %float %356
+        %361 = OpFAdd %float %358 %360
+               OpStore %359 %361
+        %362 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %363 = OpLoad %float %362
+        %364 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %365 = OpLoad %float %364
+        %368 = OpFSub %float %363 %365
+        %366 = OpExtInst %float %367 FAbs %368
+        %369 = OpFOrdLessThan %bool %366 %float_0_25
+               OpSelectionMerge %370 None
+               OpBranchConditional %369 %371 %370
+        %371 = OpLabel
+        %372 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %373 = OpLoad %int %372
+        %374 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %375 = OpLoad %float %374
+        %376 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %377 = OpConvertSToF %float %373
+        %378 = OpFAdd %float %375 %377
+               OpStore %376 %378
+               OpBranch %370
+        %370 = OpLabel
+        %379 = OpLoad %v3float %color
+        %380 = OpExtInst %v3float %367 Normalize %379
+        %381 = OpCompositeExtract %float %380 0
+        %382 = OpCompositeExtract %float %380 1
+        %383 = OpCompositeExtract %float %380 2
+        %384 = OpCompositeConstruct %v4float %381 %382 %383 %float_1
+               OpStore %frag_color %384
+        %385 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %385
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %386
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %390 = OpLabel
+        %391 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %391
+        %392 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %392
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %118
+        %394 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %395 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %395
+        %396 = OpFunctionCall %void %main_1
+        %398 = OpLoad %v4float %frag_color
+        %399 = OpLoad %v4float %gl_Position
+        %400 = OpCompositeConstruct %main_out %398 %399
+        %397 = OpFunctionCall %void %tint_symbol_4 %400
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b0ecbc4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.wgsl
@@ -0,0 +1,276 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_33 : buf0;
+
+[[group(0), binding(1)]] var<uniform> x_36 : buf1;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_250 : i32 = *(i);
+  let x_252 : i32 = obj.numbers[x_250];
+  temp = x_252;
+  let x_253 : i32 = *(i);
+  let x_254 : i32 = *(j);
+  let x_256 : i32 = obj.numbers[x_254];
+  obj.numbers[x_253] = x_256;
+  let x_258 : i32 = *(j);
+  let x_259 : i32 = temp;
+  obj.numbers[x_258] = x_259;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_262 : i32 = *(h);
+  let x_264 : i32 = obj.numbers[x_262];
+  pivot = x_264;
+  let x_265 : i32 = *(l);
+  i_1 = (x_265 - 1);
+  let x_267 : i32 = *(l);
+  j_1 = x_267;
+  loop {
+    let x_272 : i32 = j_1;
+    let x_273 : i32 = *(h);
+    if ((x_272 <= (x_273 - 1))) {
+    } else {
+      break;
+    }
+    let x_277 : i32 = j_1;
+    let x_279 : i32 = obj.numbers[x_277];
+    let x_280 : i32 = pivot;
+    if ((x_279 <= x_280)) {
+      let x_284 : i32 = i_1;
+      i_1 = (x_284 + 1);
+      let x_286 : i32 = i_1;
+      param = x_286;
+      let x_287 : i32 = j_1;
+      param_1 = x_287;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_289 : i32 = j_1;
+      j_1 = (x_289 + 1);
+    }
+  }
+  let x_291 : i32 = i_1;
+  param_2 = (x_291 + 1);
+  let x_293 : i32 = *(h);
+  param_3 = x_293;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_295 : i32 = i_1;
+  return (x_295 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_298 : i32 = top;
+  let x_299 : i32 = (x_298 + 1);
+  top = x_299;
+  let x_300 : i32 = l_1;
+  stack[x_299] = x_300;
+  let x_302 : i32 = top;
+  let x_303 : i32 = (x_302 + 1);
+  top = x_303;
+  let x_304 : i32 = h_1;
+  stack[x_303] = x_304;
+  loop {
+    let x_310 : i32 = top;
+    if ((x_310 >= 0)) {
+    } else {
+      break;
+    }
+    let x_313 : i32 = top;
+    top = (x_313 - 1);
+    let x_316 : i32 = stack[x_313];
+    h_1 = x_316;
+    let x_317 : i32 = top;
+    top = (x_317 - 1);
+    let x_320 : i32 = stack[x_317];
+    l_1 = x_320;
+    let x_321 : i32 = l_1;
+    param_4 = x_321;
+    let x_322 : i32 = h_1;
+    param_5 = x_322;
+    let x_323 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_323;
+    let x_324 : i32 = p;
+    let x_326 : i32 = l_1;
+    if (((x_324 - 1) > x_326)) {
+      let x_330 : i32 = top;
+      let x_331 : i32 = (x_330 + 1);
+      top = x_331;
+      let x_332 : i32 = l_1;
+      stack[x_331] = x_332;
+      let x_334 : i32 = top;
+      let x_335 : i32 = (x_334 + 1);
+      top = x_335;
+      let x_336 : i32 = p;
+      stack[x_335] = (x_336 - 1);
+    }
+    let x_339 : i32 = p;
+    let x_341 : i32 = h_1;
+    if (((x_339 + 1) < x_341)) {
+      let x_345 : i32 = top;
+      let x_346 : i32 = (x_345 + 1);
+      top = x_346;
+      let x_347 : i32 = p;
+      stack[x_346] = (x_347 + 1);
+      let x_350 : i32 = top;
+      let x_351 : i32 = (x_350 + 1);
+      top = x_351;
+      let x_352 : i32 = h_1;
+      stack[x_351] = x_352;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_94 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_94 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_101 : i32 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    let x_104 : i32 = i_2;
+    let x_105 : i32 = i_2;
+    obj.numbers[x_104] = (10 - x_105);
+    let x_109 : f32 = x_33.injectionSwitch.x;
+    let x_111 : f32 = x_33.injectionSwitch.y;
+    if ((x_109 > x_111)) {
+      break;
+    }
+    let x_115 : i32 = i_2;
+    let x_116 : i32 = i_2;
+    let x_118 : i32 = obj.numbers[x_116];
+    let x_119 : i32 = i_2;
+    let x_121 : i32 = obj.numbers[x_119];
+    obj.numbers[x_115] = (x_118 * x_121);
+
+    continuing {
+      let x_124 : i32 = i_2;
+      i_2 = (x_124 + 1);
+    }
+  }
+  quicksort_();
+  let x_127 : vec4<f32> = x_GLF_FragCoord;
+  let x_130 : vec2<f32> = x_36.resolution;
+  uv = (vec2<f32>(x_127.x, x_127.y) / x_130);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_133 : i32 = obj.numbers[0];
+  let x_136 : f32 = color.x;
+  color.x = (x_136 + f32(x_133));
+  let x_140 : f32 = uv.x;
+  if ((x_140 > 0.25)) {
+    let x_145 : i32 = obj.numbers[1];
+    let x_148 : f32 = color.x;
+    color.x = (x_148 + f32(x_145));
+  }
+  let x_152 : f32 = uv.x;
+  if ((x_152 > 0.5)) {
+    let x_157 : i32 = obj.numbers[2];
+    let x_160 : f32 = color.y;
+    color.y = (x_160 + f32(x_157));
+  }
+  let x_164 : f32 = uv.x;
+  if ((x_164 > 0.75)) {
+    let x_169 : i32 = obj.numbers[3];
+    let x_172 : f32 = color.z;
+    color.z = (x_172 + f32(x_169));
+  }
+  let x_176 : i32 = obj.numbers[4];
+  let x_179 : f32 = color.y;
+  color.y = (x_179 + f32(x_176));
+  let x_183 : f32 = uv.y;
+  if ((x_183 > 0.25)) {
+    let x_188 : i32 = obj.numbers[5];
+    let x_191 : f32 = color.x;
+    color.x = (x_191 + f32(x_188));
+  }
+  let x_195 : f32 = uv.y;
+  if ((x_195 > 0.5)) {
+    let x_200 : i32 = obj.numbers[6];
+    let x_203 : f32 = color.y;
+    color.y = (x_203 + f32(x_200));
+  }
+  let x_207 : f32 = uv.y;
+  if ((x_207 > 0.75)) {
+    let x_212 : i32 = obj.numbers[7];
+    let x_215 : f32 = color.z;
+    color.z = (x_215 + f32(x_212));
+  }
+  let x_219 : i32 = obj.numbers[8];
+  let x_222 : f32 = color.z;
+  color.z = (x_222 + f32(x_219));
+  let x_226 : f32 = uv.x;
+  let x_228 : f32 = uv.y;
+  if ((abs((x_226 - x_228)) < 0.25)) {
+    let x_235 : i32 = obj.numbers[9];
+    let x_238 : f32 = color.x;
+    color.x = (x_238 + f32(x_235));
+  }
+  let x_241 : vec3<f32> = color;
+  let x_242 : vec3<f32> = normalize(x_241);
+  frag_color = vec4<f32>(x_242.x, x_242.y, x_242.z, 1.0);
+  let x_247 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_247;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm
new file mode 100644
index 0000000..fa20c31
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm
@@ -0,0 +1,689 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_GLF_pos %frag_color %__0
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap(i1;i1;"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %quicksort_ "quicksort("
+               OpName %temp "temp"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %pivot "pivot"
+               OpName %i_0 "i"
+               OpName %j_0 "j"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %l_0 "l"
+               OpName %h_0 "h"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %_GLF_FragCoord "_GLF_FragCoord"
+               OpName %_GLF_pos "_GLF_pos"
+               OpName %i_1 "i"
+               OpName %uv "uv"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %color "color"
+               OpName %frag_color "frag_color"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpName %__0 ""
+               OpDecorate %_GLF_pos Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %frag_color Location 0
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpDecorate %gl_PerVertex Block
+       %void = OpTypeVoid
+         %38 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %41 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %42 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+%_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %_GLF_pos = OpVariable %_ptr_Input_v4float Input
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %60 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+         %62 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %72 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %frag_color = OpVariable %_ptr_Output_v4float Output
+%gl_PerVertex = OpTypeStruct %v4float %float
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+        %__0 = OpVariable %_ptr_Output_gl_PerVertex Output
+       %main = OpFunction %void None %38
+         %89 = OpLabel
+         %90 = OpVariable %_ptr_Function_int Function
+         %91 = OpVariable %_ptr_Function_int Function
+         %92 = OpVariable %_ptr_Function_int Function
+         %93 = OpVariable %_ptr_Function_int Function
+         %94 = OpVariable %_ptr_Function_int Function
+         %95 = OpVariable %_ptr_Function_int Function
+         %96 = OpVariable %_ptr_Function_int Function
+         %97 = OpVariable %_ptr_Function_int Function
+         %98 = OpVariable %_ptr_Function_int Function
+         %99 = OpVariable %_ptr_Function_int Function
+        %100 = OpVariable %_ptr_Function_int Function
+        %101 = OpVariable %_ptr_Function_int Function
+        %102 = OpVariable %_ptr_Function_int Function
+        %103 = OpVariable %_ptr_Function__arr_int_uint_10 Function
+        %104 = OpVariable %_ptr_Function_int Function
+        %105 = OpVariable %_ptr_Function_int Function
+        %106 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+         %uv = OpVariable %_ptr_Function_v2float Function
+      %color = OpVariable %_ptr_Function_v3float Function
+        %107 = OpLoad %v4float %_GLF_pos
+        %108 = OpFAdd %v4float %107 %60
+        %109 = OpFMul %v4float %108 %62
+               OpStore %_GLF_FragCoord %109
+               OpStore %i_1 %int_0
+               OpBranch %110
+        %110 = OpLabel
+               OpLoopMerge %111 %112 None
+               OpBranch %113
+        %113 = OpLabel
+        %114 = OpLoad %int %i_1
+        %115 = OpSLessThan %bool %114 %int_10
+               OpBranchConditional %115 %116 %111
+        %116 = OpLabel
+        %117 = OpLoad %int %i_1
+        %118 = OpLoad %int %i_1
+        %119 = OpISub %int %int_10 %118
+        %120 = OpAccessChain %_ptr_Private_int %obj %int_0 %117
+               OpStore %120 %119
+        %121 = OpLoad %int %i_1
+        %122 = OpLoad %int %i_1
+        %123 = OpAccessChain %_ptr_Private_int %obj %int_0 %122
+        %124 = OpLoad %int %123
+        %125 = OpLoad %int %i_1
+        %126 = OpAccessChain %_ptr_Private_int %obj %int_0 %125
+        %127 = OpLoad %int %126
+        %128 = OpIMul %int %124 %127
+        %129 = OpAccessChain %_ptr_Private_int %obj %int_0 %121
+               OpStore %129 %128
+               OpBranch %112
+        %112 = OpLabel
+        %130 = OpLoad %int %i_1
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %i_1 %131
+               OpBranch %110
+        %111 = OpLabel
+               OpStore %100 %int_0
+               OpStore %101 %int_9
+               OpStore %102 %int_n1
+        %132 = OpLoad %int %102
+        %133 = OpIAdd %int %132 %int_1
+               OpStore %102 %133
+        %134 = OpLoad %int %100
+        %135 = OpAccessChain %_ptr_Function_int %103 %133
+               OpStore %135 %134
+        %136 = OpLoad %int %102
+        %137 = OpIAdd %int %136 %int_1
+               OpStore %102 %137
+        %138 = OpLoad %int %101
+        %139 = OpAccessChain %_ptr_Function_int %103 %137
+               OpStore %139 %138
+               OpBranch %140
+        %140 = OpLabel
+               OpLoopMerge %141 %142 None
+               OpBranch %143
+        %143 = OpLabel
+        %144 = OpLoad %int %102
+        %145 = OpSGreaterThanEqual %bool %144 %int_0
+               OpBranchConditional %145 %146 %141
+        %146 = OpLabel
+        %147 = OpLoad %int %102
+        %148 = OpISub %int %147 %int_1
+               OpStore %102 %148
+        %149 = OpAccessChain %_ptr_Function_int %103 %147
+        %150 = OpLoad %int %149
+               OpStore %101 %150
+        %151 = OpLoad %int %102
+        %152 = OpISub %int %151 %int_1
+               OpStore %102 %152
+        %153 = OpAccessChain %_ptr_Function_int %103 %151
+        %154 = OpLoad %int %153
+               OpStore %100 %154
+        %155 = OpLoad %int %100
+               OpStore %105 %155
+        %156 = OpLoad %int %101
+               OpStore %106 %156
+        %157 = OpLoad %int %106
+        %158 = OpAccessChain %_ptr_Private_int %obj %int_0 %157
+        %159 = OpLoad %int %158
+               OpStore %92 %159
+        %160 = OpLoad %int %105
+        %161 = OpISub %int %160 %int_1
+               OpStore %93 %161
+        %162 = OpLoad %int %105
+               OpStore %94 %162
+               OpBranch %163
+        %163 = OpLabel
+               OpLoopMerge %164 %165 None
+               OpBranch %166
+        %166 = OpLabel
+        %167 = OpLoad %int %94
+        %168 = OpLoad %int %106
+        %169 = OpISub %int %168 %int_1
+        %170 = OpSLessThanEqual %bool %167 %169
+               OpBranchConditional %170 %171 %164
+        %171 = OpLabel
+        %172 = OpLoad %int %94
+        %173 = OpAccessChain %_ptr_Private_int %obj %int_0 %172
+        %174 = OpLoad %int %173
+        %175 = OpLoad %int %92
+        %176 = OpSLessThanEqual %bool %174 %175
+               OpSelectionMerge %177 None
+               OpBranchConditional %176 %178 %177
+        %178 = OpLabel
+        %179 = OpLoad %int %93
+        %180 = OpIAdd %int %179 %int_1
+               OpStore %93 %180
+        %181 = OpLoad %int %93
+               OpStore %95 %181
+        %182 = OpLoad %int %94
+               OpStore %96 %182
+        %183 = OpLoad %int %95
+        %184 = OpAccessChain %_ptr_Private_int %obj %int_0 %183
+        %185 = OpLoad %int %184
+               OpStore %91 %185
+        %186 = OpLoad %int %95
+        %187 = OpLoad %int %96
+        %188 = OpAccessChain %_ptr_Private_int %obj %int_0 %187
+        %189 = OpLoad %int %188
+        %190 = OpAccessChain %_ptr_Private_int %obj %int_0 %186
+               OpStore %190 %189
+        %191 = OpLoad %int %96
+        %192 = OpLoad %int %91
+        %193 = OpAccessChain %_ptr_Private_int %obj %int_0 %191
+               OpStore %193 %192
+               OpBranch %177
+        %177 = OpLabel
+               OpBranch %165
+        %165 = OpLabel
+        %194 = OpLoad %int %94
+        %195 = OpIAdd %int %194 %int_1
+               OpStore %94 %195
+               OpBranch %163
+        %164 = OpLabel
+        %196 = OpLoad %int %93
+        %197 = OpIAdd %int %196 %int_1
+               OpStore %97 %197
+        %198 = OpLoad %int %106
+               OpStore %98 %198
+        %199 = OpLoad %int %97
+        %200 = OpAccessChain %_ptr_Private_int %obj %int_0 %199
+        %201 = OpLoad %int %200
+               OpStore %90 %201
+        %202 = OpLoad %int %97
+        %203 = OpLoad %int %98
+        %204 = OpAccessChain %_ptr_Private_int %obj %int_0 %203
+        %205 = OpLoad %int %204
+        %206 = OpAccessChain %_ptr_Private_int %obj %int_0 %202
+               OpStore %206 %205
+        %207 = OpLoad %int %98
+        %208 = OpLoad %int %90
+        %209 = OpAccessChain %_ptr_Private_int %obj %int_0 %207
+               OpStore %209 %208
+        %210 = OpLoad %int %93
+        %211 = OpIAdd %int %210 %int_1
+               OpStore %99 %211
+        %212 = OpLoad %int %99
+               OpStore %104 %212
+        %213 = OpLoad %int %104
+        %214 = OpISub %int %213 %int_1
+        %215 = OpLoad %int %100
+        %216 = OpSGreaterThan %bool %214 %215
+               OpSelectionMerge %217 None
+               OpBranchConditional %216 %218 %217
+        %218 = OpLabel
+        %219 = OpLoad %int %102
+        %220 = OpIAdd %int %219 %int_1
+               OpStore %102 %220
+        %221 = OpLoad %int %100
+        %222 = OpAccessChain %_ptr_Function_int %103 %220
+               OpStore %222 %221
+        %223 = OpLoad %int %102
+        %224 = OpIAdd %int %223 %int_1
+               OpStore %102 %224
+        %225 = OpLoad %int %104
+        %226 = OpISub %int %225 %int_1
+        %227 = OpAccessChain %_ptr_Function_int %103 %224
+               OpStore %227 %226
+               OpBranch %217
+        %217 = OpLabel
+        %228 = OpLoad %int %104
+        %229 = OpIAdd %int %228 %int_1
+        %230 = OpLoad %int %101
+        %231 = OpSLessThan %bool %229 %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %232
+        %233 = OpLabel
+        %234 = OpLoad %int %102
+        %235 = OpIAdd %int %234 %int_1
+               OpStore %102 %235
+        %236 = OpLoad %int %104
+        %237 = OpIAdd %int %236 %int_1
+        %238 = OpAccessChain %_ptr_Function_int %103 %235
+               OpStore %238 %237
+        %239 = OpLoad %int %102
+        %240 = OpIAdd %int %239 %int_1
+               OpStore %102 %240
+        %241 = OpLoad %int %101
+        %242 = OpAccessChain %_ptr_Function_int %103 %240
+               OpStore %242 %241
+               OpBranch %232
+        %232 = OpLabel
+               OpBranch %142
+        %142 = OpLabel
+               OpBranch %140
+        %141 = OpLabel
+        %243 = OpLoad %v4float %_GLF_FragCoord
+        %244 = OpVectorShuffle %v2float %243 %243 0 1
+        %245 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %246 = OpLoad %v2float %245
+        %247 = OpFDiv %v2float %244 %246
+               OpStore %uv %247
+               OpStore %color %72
+        %248 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
+        %249 = OpLoad %int %248
+        %250 = OpConvertSToF %float %249
+        %251 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %252 = OpLoad %float %251
+        %253 = OpFAdd %float %252 %250
+        %254 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %254 %253
+        %255 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %256 = OpLoad %float %255
+        %257 = OpFOrdGreaterThan %bool %256 %float_0_25
+               OpSelectionMerge %258 None
+               OpBranchConditional %257 %259 %258
+        %259 = OpLabel
+        %260 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
+        %261 = OpLoad %int %260
+        %262 = OpConvertSToF %float %261
+        %263 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %264 = OpLoad %float %263
+        %265 = OpFAdd %float %264 %262
+        %266 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %266 %265
+               OpBranch %258
+        %258 = OpLabel
+        %267 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %268 = OpLoad %float %267
+        %269 = OpFOrdGreaterThan %bool %268 %float_0_5
+               OpSelectionMerge %270 None
+               OpBranchConditional %269 %271 %270
+        %271 = OpLabel
+        %272 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
+        %273 = OpLoad %int %272
+        %274 = OpConvertSToF %float %273
+        %275 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %276 = OpLoad %float %275
+        %277 = OpFAdd %float %276 %274
+        %278 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %278 %277
+               OpBranch %270
+        %270 = OpLabel
+        %279 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %280 = OpLoad %float %279
+        %281 = OpFOrdGreaterThan %bool %280 %float_0_75
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %282
+        %283 = OpLabel
+        %284 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
+        %285 = OpLoad %int %284
+        %286 = OpConvertSToF %float %285
+        %287 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %288 = OpLoad %float %287
+        %289 = OpFAdd %float %288 %286
+        %290 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %290 %289
+               OpBranch %282
+        %282 = OpLabel
+        %291 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
+        %292 = OpLoad %int %291
+        %293 = OpConvertSToF %float %292
+        %294 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %295 = OpLoad %float %294
+        %296 = OpFAdd %float %295 %293
+        %297 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %297 %296
+        %298 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %299 = OpLoad %float %298
+        %300 = OpFOrdGreaterThan %bool %299 %float_0_25
+               OpSelectionMerge %301 None
+               OpBranchConditional %300 %302 %301
+        %302 = OpLabel
+        %303 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
+        %304 = OpLoad %int %303
+        %305 = OpConvertSToF %float %304
+        %306 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %307 = OpLoad %float %306
+        %308 = OpFAdd %float %307 %305
+        %309 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %309 %308
+               OpBranch %301
+        %301 = OpLabel
+        %310 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %311 = OpLoad %float %310
+        %312 = OpFOrdGreaterThan %bool %311 %float_0_5
+               OpSelectionMerge %313 None
+               OpBranchConditional %312 %314 %313
+        %314 = OpLabel
+        %315 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
+        %316 = OpLoad %int %315
+        %317 = OpConvertSToF %float %316
+        %318 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %319 = OpLoad %float %318
+        %320 = OpFAdd %float %319 %317
+        %321 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %321 %320
+               OpBranch %313
+        %313 = OpLabel
+        %322 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %323 = OpLoad %float %322
+        %324 = OpFOrdGreaterThan %bool %323 %float_0_75
+               OpSelectionMerge %325 None
+               OpBranchConditional %324 %326 %325
+        %326 = OpLabel
+        %327 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
+        %328 = OpLoad %int %327
+        %329 = OpConvertSToF %float %328
+        %330 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %331 = OpLoad %float %330
+        %332 = OpFAdd %float %331 %329
+        %333 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %333 %332
+               OpBranch %325
+        %325 = OpLabel
+        %334 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
+        %335 = OpLoad %int %334
+        %336 = OpConvertSToF %float %335
+        %337 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %338 = OpLoad %float %337
+        %339 = OpFAdd %float %338 %336
+        %340 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %340 %339
+        %341 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %342 = OpLoad %float %341
+        %343 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %344 = OpLoad %float %343
+        %345 = OpFSub %float %342 %344
+        %346 = OpExtInst %float %1 FAbs %345
+        %347 = OpFOrdLessThan %bool %346 %float_0_25
+               OpSelectionMerge %348 None
+               OpBranchConditional %347 %349 %348
+        %349 = OpLabel
+        %350 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
+        %351 = OpLoad %int %350
+        %352 = OpConvertSToF %float %351
+        %353 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %354 = OpLoad %float %353
+        %355 = OpFAdd %float %354 %352
+        %356 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %356 %355
+               OpBranch %348
+        %348 = OpLabel
+        %357 = OpLoad %v3float %color
+        %358 = OpExtInst %v3float %1 Normalize %357
+        %359 = OpCompositeExtract %float %358 0
+        %360 = OpCompositeExtract %float %358 1
+        %361 = OpCompositeExtract %float %358 2
+        %362 = OpCompositeConstruct %v4float %359 %360 %361 %float_1
+               OpStore %frag_color %362
+        %363 = OpLoad %v4float %_GLF_pos
+        %364 = OpAccessChain %_ptr_Output_v4float %__0 %int_0
+               OpStore %364 %363
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %41
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %365 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+        %366 = OpLoad %int %i
+        %367 = OpAccessChain %_ptr_Private_int %obj %int_0 %366
+        %368 = OpLoad %int %367
+               OpStore %temp %368
+        %369 = OpLoad %int %i
+        %370 = OpLoad %int %j
+        %371 = OpAccessChain %_ptr_Private_int %obj %int_0 %370
+        %372 = OpLoad %int %371
+        %373 = OpAccessChain %_ptr_Private_int %obj %int_0 %369
+               OpStore %373 %372
+        %374 = OpLoad %int %j
+        %375 = OpLoad %int %temp
+        %376 = OpAccessChain %_ptr_Private_int %obj %int_0 %374
+               OpStore %376 %375
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %42
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %377 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+        %378 = OpLoad %int %h
+        %379 = OpAccessChain %_ptr_Private_int %obj %int_0 %378
+        %380 = OpLoad %int %379
+               OpStore %pivot %380
+        %381 = OpLoad %int %l
+        %382 = OpISub %int %381 %int_1
+               OpStore %i_0 %382
+        %383 = OpLoad %int %l
+               OpStore %j_0 %383
+               OpBranch %384
+        %384 = OpLabel
+               OpLoopMerge %385 %386 None
+               OpBranch %387
+        %387 = OpLabel
+        %388 = OpLoad %int %j_0
+        %389 = OpLoad %int %h
+        %390 = OpISub %int %389 %int_1
+        %391 = OpSLessThanEqual %bool %388 %390
+               OpBranchConditional %391 %392 %385
+        %392 = OpLabel
+        %393 = OpLoad %int %j_0
+        %394 = OpAccessChain %_ptr_Private_int %obj %int_0 %393
+        %395 = OpLoad %int %394
+        %396 = OpLoad %int %pivot
+        %397 = OpSLessThanEqual %bool %395 %396
+               OpSelectionMerge %398 None
+               OpBranchConditional %397 %399 %398
+        %399 = OpLabel
+        %400 = OpLoad %int %i_0
+        %401 = OpIAdd %int %400 %int_1
+               OpStore %i_0 %401
+        %402 = OpLoad %int %i_0
+               OpStore %param %402
+        %403 = OpLoad %int %j_0
+               OpStore %param_0 %403
+        %404 = OpFunctionCall %void %swap_i1_i1_ %param %param_0
+               OpBranch %398
+        %398 = OpLabel
+               OpBranch %386
+        %386 = OpLabel
+        %405 = OpLoad %int %j_0
+        %406 = OpIAdd %int %405 %int_1
+               OpStore %j_0 %406
+               OpBranch %384
+        %385 = OpLabel
+        %407 = OpLoad %int %i_0
+        %408 = OpIAdd %int %407 %int_1
+               OpStore %param_1 %408
+        %409 = OpLoad %int %h
+               OpStore %param_2 %409
+        %410 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2
+        %411 = OpLoad %int %i_0
+        %412 = OpIAdd %int %411 %int_1
+               OpReturnValue %412
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %38
+        %413 = OpLabel
+        %l_0 = OpVariable %_ptr_Function_int Function
+        %h_0 = OpVariable %_ptr_Function_int Function
+        %top = OpVariable %_ptr_Function_int Function
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %p = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+               OpStore %l_0 %int_0
+               OpStore %h_0 %int_9
+               OpStore %top %int_n1
+        %414 = OpLoad %int %top
+        %415 = OpIAdd %int %414 %int_1
+               OpStore %top %415
+        %416 = OpLoad %int %l_0
+        %417 = OpAccessChain %_ptr_Function_int %stack %415
+               OpStore %417 %416
+        %418 = OpLoad %int %top
+        %419 = OpIAdd %int %418 %int_1
+               OpStore %top %419
+        %420 = OpLoad %int %h_0
+        %421 = OpAccessChain %_ptr_Function_int %stack %419
+               OpStore %421 %420
+               OpBranch %422
+        %422 = OpLabel
+               OpLoopMerge %423 %424 None
+               OpBranch %425
+        %425 = OpLabel
+        %426 = OpLoad %int %top
+        %427 = OpSGreaterThanEqual %bool %426 %int_0
+               OpBranchConditional %427 %428 %423
+        %428 = OpLabel
+        %429 = OpLoad %int %top
+        %430 = OpISub %int %429 %int_1
+               OpStore %top %430
+        %431 = OpAccessChain %_ptr_Function_int %stack %429
+        %432 = OpLoad %int %431
+               OpStore %h_0 %432
+        %433 = OpLoad %int %top
+        %434 = OpISub %int %433 %int_1
+               OpStore %top %434
+        %435 = OpAccessChain %_ptr_Function_int %stack %433
+        %436 = OpLoad %int %435
+               OpStore %l_0 %436
+        %437 = OpLoad %int %l_0
+               OpStore %param_3 %437
+        %438 = OpLoad %int %h_0
+               OpStore %param_4 %438
+        %439 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
+               OpStore %p %439
+        %440 = OpLoad %int %p
+        %441 = OpISub %int %440 %int_1
+        %442 = OpLoad %int %l_0
+        %443 = OpSGreaterThan %bool %441 %442
+               OpSelectionMerge %444 None
+               OpBranchConditional %443 %445 %444
+        %445 = OpLabel
+        %446 = OpLoad %int %top
+        %447 = OpIAdd %int %446 %int_1
+               OpStore %top %447
+        %448 = OpLoad %int %l_0
+        %449 = OpAccessChain %_ptr_Function_int %stack %447
+               OpStore %449 %448
+        %450 = OpLoad %int %top
+        %451 = OpIAdd %int %450 %int_1
+               OpStore %top %451
+        %452 = OpLoad %int %p
+        %453 = OpISub %int %452 %int_1
+        %454 = OpAccessChain %_ptr_Function_int %stack %451
+               OpStore %454 %453
+               OpBranch %444
+        %444 = OpLabel
+        %455 = OpLoad %int %p
+        %456 = OpIAdd %int %455 %int_1
+        %457 = OpLoad %int %h_0
+        %458 = OpSLessThan %bool %456 %457
+               OpSelectionMerge %459 None
+               OpBranchConditional %458 %460 %459
+        %460 = OpLabel
+        %461 = OpLoad %int %top
+        %462 = OpIAdd %int %461 %int_1
+               OpStore %top %462
+        %463 = OpLoad %int %p
+        %464 = OpIAdd %int %463 %int_1
+        %465 = OpAccessChain %_ptr_Function_int %stack %462
+               OpStore %465 %464
+        %466 = OpLoad %int %top
+        %467 = OpIAdd %int %466 %int_1
+               OpStore %top %467
+        %468 = OpLoad %int %h_0
+        %469 = OpAccessChain %_ptr_Function_int %stack %467
+               OpStore %469 %468
+               OpBranch %459
+        %459 = OpLabel
+               OpBranch %424
+        %424 = OpLabel
+               OpBranch %422
+        %423 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..99862c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.hlsl
@@ -0,0 +1,306 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int x_95 = 0;
+  int x_96 = 0;
+  int x_97 = 0;
+  int x_98 = 0;
+  int x_99 = 0;
+  int x_100 = 0;
+  int x_101 = 0;
+  int x_102 = 0;
+  int x_103[10] = (int[10])0;
+  int x_104 = 0;
+  int x_105 = 0;
+  int x_106 = 0;
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_121 = i_2;
+      const int x_124 = obj.numbers[i_2];
+      const int x_127 = obj.numbers[i_2];
+      obj.numbers[x_121] = (x_124 * x_127);
+    }
+  }
+  x_100 = 0;
+  x_101 = 9;
+  x_102 = -1;
+  const int x_133 = (x_102 + 1);
+  x_102 = x_133;
+  x_103[x_133] = x_100;
+  const int x_137 = (x_102 + 1);
+  x_102 = x_137;
+  x_103[x_137] = x_101;
+  while (true) {
+    if ((x_102 >= 0)) {
+    } else {
+      break;
+    }
+    const int x_147 = x_102;
+    x_102 = (x_147 - 1);
+    const int x_150 = x_103[x_147];
+    x_101 = x_150;
+    const int x_151 = x_102;
+    x_102 = (x_151 - 1);
+    const int x_154 = x_103[x_151];
+    x_100 = x_154;
+    x_105 = x_100;
+    x_106 = x_101;
+    const int x_159 = obj.numbers[x_106];
+    x_92 = x_159;
+    x_93 = (x_105 - 1);
+    x_94 = x_105;
+    {
+      for(; (x_94 <= (x_106 - 1)); x_94 = (x_94 + 1)) {
+        const int x_174 = obj.numbers[x_94];
+        if ((x_174 <= x_92)) {
+          x_93 = (x_93 + 1);
+          x_95 = x_93;
+          x_96 = x_94;
+          const int x_185 = obj.numbers[x_95];
+          x_91 = x_185;
+          const int x_186 = x_95;
+          const int x_189 = obj.numbers[x_96];
+          obj.numbers[x_186] = x_189;
+          obj.numbers[x_96] = x_91;
+        }
+      }
+    }
+    x_97 = (x_93 + 1);
+    x_98 = x_106;
+    const int x_201 = obj.numbers[x_97];
+    x_90 = x_201;
+    const int x_202 = x_97;
+    const int x_205 = obj.numbers[x_98];
+    obj.numbers[x_202] = x_205;
+    obj.numbers[x_98] = x_90;
+    x_99 = (x_93 + 1);
+    x_104 = x_99;
+    if (((x_104 - 1) > x_100)) {
+      const int x_220 = (x_102 + 1);
+      x_102 = x_220;
+      x_103[x_220] = x_100;
+      const int x_224 = (x_102 + 1);
+      x_102 = x_224;
+      x_103[x_224] = (x_104 - 1);
+    }
+    if (((x_104 + 1) < x_101)) {
+      const int x_235 = (x_102 + 1);
+      x_102 = x_235;
+      x_103[x_235] = (x_104 + 1);
+      const int x_240 = (x_102 + 1);
+      x_102 = x_240;
+      x_103[x_240] = x_101;
+    }
+  }
+  const float4 x_243 = x_GLF_FragCoord;
+  const float2 x_246 = asfloat(x_34[0].xy);
+  uv = (float2(x_243.x, x_243.y) / x_246);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_249 = obj.numbers[0];
+  const float x_252 = color.x;
+  color.x = (x_252 + float(x_249));
+  const float x_256 = uv.x;
+  if ((x_256 > 0.25f)) {
+    const int x_261 = obj.numbers[1];
+    const float x_264 = color.x;
+    color.x = (x_264 + float(x_261));
+  }
+  const float x_268 = uv.x;
+  if ((x_268 > 0.5f)) {
+    const int x_273 = obj.numbers[2];
+    const float x_276 = color.y;
+    color.y = (x_276 + float(x_273));
+  }
+  const float x_280 = uv.x;
+  if ((x_280 > 0.75f)) {
+    const int x_285 = obj.numbers[3];
+    const float x_288 = color.z;
+    color.z = (x_288 + float(x_285));
+  }
+  const int x_292 = obj.numbers[4];
+  const float x_295 = color.y;
+  color.y = (x_295 + float(x_292));
+  const float x_299 = uv.y;
+  if ((x_299 > 0.25f)) {
+    const int x_304 = obj.numbers[5];
+    const float x_307 = color.x;
+    color.x = (x_307 + float(x_304));
+  }
+  const float x_311 = uv.y;
+  if ((x_311 > 0.5f)) {
+    const int x_316 = obj.numbers[6];
+    const float x_319 = color.y;
+    color.y = (x_319 + float(x_316));
+  }
+  const float x_323 = uv.y;
+  if ((x_323 > 0.75f)) {
+    const int x_328 = obj.numbers[7];
+    const float x_331 = color.z;
+    color.z = (x_331 + float(x_328));
+  }
+  const int x_335 = obj.numbers[8];
+  const float x_338 = color.z;
+  color.z = (x_338 + float(x_335));
+  const float x_342 = uv.x;
+  const float x_344 = uv.y;
+  if ((abs((x_342 - x_344)) < 0.25f)) {
+    const int x_351 = obj.numbers[9];
+    const float x_354 = color.x;
+    color.x = (x_354 + float(x_351));
+  }
+  const float3 x_358 = normalize(color);
+  frag_color = float4(x_358.x, x_358.y, x_358.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_5;
+}
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_366 = i;
+  const int x_368 = obj.numbers[x_366];
+  temp = x_368;
+  const int x_369 = i;
+  const int x_370 = j;
+  const int x_372 = obj.numbers[x_370];
+  obj.numbers[x_369] = x_372;
+  const int x_374 = j;
+  obj.numbers[x_374] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_378 = h;
+  const int x_380 = obj.numbers[x_378];
+  pivot = x_380;
+  const int x_381 = l;
+  i_1 = (x_381 - 1);
+  const int x_383 = l;
+  j_1 = x_383;
+  while (true) {
+    const int x_388 = j_1;
+    const int x_389 = h;
+    if ((x_388 <= (x_389 - 1))) {
+    } else {
+      break;
+    }
+    const int x_395 = obj.numbers[j_1];
+    if ((x_395 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_409 = h;
+  param_3 = x_409;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_415 = (top + 1);
+  top = x_415;
+  stack[x_415] = l_1;
+  const int x_419 = (top + 1);
+  top = x_419;
+  stack[x_419] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_429 = top;
+    top = (x_429 - 1);
+    const int x_432 = stack[x_429];
+    h_1 = x_432;
+    const int x_433 = top;
+    top = (x_433 - 1);
+    const int x_436 = stack[x_433];
+    l_1 = x_436;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_439 = performPartition_i1_i1_(param_4, param_5);
+    p = x_439;
+    if (((p - 1) > l_1)) {
+      const int x_447 = (top + 1);
+      top = x_447;
+      stack[x_447] = l_1;
+      const int x_451 = (top + 1);
+      top = x_451;
+      stack[x_451] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_462 = (top + 1);
+      top = x_462;
+      stack[x_462] = (p + 1);
+      const int x_467 = (top + 1);
+      top = x_467;
+      stack[x_467] = h_1;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.msl
new file mode 100644
index 0000000..45ba09a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.msl
@@ -0,0 +1,400 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(constant buf0& x_34, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7, thread QuicksortObject* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int x_95 = 0;
+  int x_96 = 0;
+  int x_97 = 0;
+  int x_98 = 0;
+  int x_99 = 0;
+  int x_100 = 0;
+  int x_101 = 0;
+  int x_102 = 0;
+  tint_array_wrapper x_103 = {};
+  int x_104 = 0;
+  int x_105 = 0;
+  int x_106 = 0;
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_107 = *(tint_symbol_6);
+  *(tint_symbol_7) = ((x_107 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_114 = i_2;
+    if ((x_114 < 10)) {
+    } else {
+      break;
+    }
+    int const x_117 = i_2;
+    int const x_118 = i_2;
+    (*(tint_symbol_8)).numbers.arr[x_117] = (10 - x_118);
+    int const x_121 = i_2;
+    int const x_122 = i_2;
+    int const x_124 = (*(tint_symbol_8)).numbers.arr[x_122];
+    int const x_125 = i_2;
+    int const x_127 = (*(tint_symbol_8)).numbers.arr[x_125];
+    (*(tint_symbol_8)).numbers.arr[x_121] = (x_124 * x_127);
+    {
+      int const x_130 = i_2;
+      i_2 = (x_130 + 1);
+    }
+  }
+  x_100 = 0;
+  x_101 = 9;
+  x_102 = -1;
+  int const x_132 = x_102;
+  int const x_133 = (x_132 + 1);
+  x_102 = x_133;
+  int const x_134 = x_100;
+  x_103.arr[x_133] = x_134;
+  int const x_136 = x_102;
+  int const x_137 = (x_136 + 1);
+  x_102 = x_137;
+  int const x_138 = x_101;
+  x_103.arr[x_137] = x_138;
+  while (true) {
+    int const x_144 = x_102;
+    if ((x_144 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_147 = x_102;
+    x_102 = (x_147 - 1);
+    int const x_150 = x_103.arr[x_147];
+    x_101 = x_150;
+    int const x_151 = x_102;
+    x_102 = (x_151 - 1);
+    int const x_154 = x_103.arr[x_151];
+    x_100 = x_154;
+    int const x_155 = x_100;
+    x_105 = x_155;
+    int const x_156 = x_101;
+    x_106 = x_156;
+    int const x_157 = x_106;
+    int const x_159 = (*(tint_symbol_8)).numbers.arr[x_157];
+    x_92 = x_159;
+    int const x_160 = x_105;
+    x_93 = (x_160 - 1);
+    int const x_162 = x_105;
+    x_94 = x_162;
+    while (true) {
+      int const x_167 = x_94;
+      int const x_168 = x_106;
+      if ((x_167 <= (x_168 - 1))) {
+      } else {
+        break;
+      }
+      int const x_172 = x_94;
+      int const x_174 = (*(tint_symbol_8)).numbers.arr[x_172];
+      int const x_175 = x_92;
+      if ((x_174 <= x_175)) {
+        int const x_179 = x_93;
+        x_93 = (x_179 + 1);
+        int const x_181 = x_93;
+        x_95 = x_181;
+        int const x_182 = x_94;
+        x_96 = x_182;
+        int const x_183 = x_95;
+        int const x_185 = (*(tint_symbol_8)).numbers.arr[x_183];
+        x_91 = x_185;
+        int const x_186 = x_95;
+        int const x_187 = x_96;
+        int const x_189 = (*(tint_symbol_8)).numbers.arr[x_187];
+        (*(tint_symbol_8)).numbers.arr[x_186] = x_189;
+        int const x_191 = x_96;
+        int const x_192 = x_91;
+        (*(tint_symbol_8)).numbers.arr[x_191] = x_192;
+      }
+      {
+        int const x_194 = x_94;
+        x_94 = (x_194 + 1);
+      }
+    }
+    int const x_196 = x_93;
+    x_97 = (x_196 + 1);
+    int const x_198 = x_106;
+    x_98 = x_198;
+    int const x_199 = x_97;
+    int const x_201 = (*(tint_symbol_8)).numbers.arr[x_199];
+    x_90 = x_201;
+    int const x_202 = x_97;
+    int const x_203 = x_98;
+    int const x_205 = (*(tint_symbol_8)).numbers.arr[x_203];
+    (*(tint_symbol_8)).numbers.arr[x_202] = x_205;
+    int const x_207 = x_98;
+    int const x_208 = x_90;
+    (*(tint_symbol_8)).numbers.arr[x_207] = x_208;
+    int const x_210 = x_93;
+    x_99 = (x_210 + 1);
+    int const x_212 = x_99;
+    x_104 = x_212;
+    int const x_213 = x_104;
+    int const x_215 = x_100;
+    if (((x_213 - 1) > x_215)) {
+      int const x_219 = x_102;
+      int const x_220 = (x_219 + 1);
+      x_102 = x_220;
+      int const x_221 = x_100;
+      x_103.arr[x_220] = x_221;
+      int const x_223 = x_102;
+      int const x_224 = (x_223 + 1);
+      x_102 = x_224;
+      int const x_225 = x_104;
+      x_103.arr[x_224] = (x_225 - 1);
+    }
+    int const x_228 = x_104;
+    int const x_230 = x_101;
+    if (((x_228 + 1) < x_230)) {
+      int const x_234 = x_102;
+      int const x_235 = (x_234 + 1);
+      x_102 = x_235;
+      int const x_236 = x_104;
+      x_103.arr[x_235] = (x_236 + 1);
+      int const x_239 = x_102;
+      int const x_240 = (x_239 + 1);
+      x_102 = x_240;
+      int const x_241 = x_101;
+      x_103.arr[x_240] = x_241;
+    }
+  }
+  float4 const x_243 = *(tint_symbol_7);
+  float2 const x_246 = x_34.resolution;
+  uv = (float2(x_243.x, x_243.y) / x_246);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_249 = (*(tint_symbol_8)).numbers.arr[0];
+  float const x_252 = color.x;
+  color.x = (x_252 + float(x_249));
+  float const x_256 = uv.x;
+  if ((x_256 > 0.25f)) {
+    int const x_261 = (*(tint_symbol_8)).numbers.arr[1];
+    float const x_264 = color.x;
+    color.x = (x_264 + float(x_261));
+  }
+  float const x_268 = uv.x;
+  if ((x_268 > 0.5f)) {
+    int const x_273 = (*(tint_symbol_8)).numbers.arr[2];
+    float const x_276 = color.y;
+    color.y = (x_276 + float(x_273));
+  }
+  float const x_280 = uv.x;
+  if ((x_280 > 0.75f)) {
+    int const x_285 = (*(tint_symbol_8)).numbers.arr[3];
+    float const x_288 = color.z;
+    color.z = (x_288 + float(x_285));
+  }
+  int const x_292 = (*(tint_symbol_8)).numbers.arr[4];
+  float const x_295 = color.y;
+  color.y = (x_295 + float(x_292));
+  float const x_299 = uv.y;
+  if ((x_299 > 0.25f)) {
+    int const x_304 = (*(tint_symbol_8)).numbers.arr[5];
+    float const x_307 = color.x;
+    color.x = (x_307 + float(x_304));
+  }
+  float const x_311 = uv.y;
+  if ((x_311 > 0.5f)) {
+    int const x_316 = (*(tint_symbol_8)).numbers.arr[6];
+    float const x_319 = color.y;
+    color.y = (x_319 + float(x_316));
+  }
+  float const x_323 = uv.y;
+  if ((x_323 > 0.75f)) {
+    int const x_328 = (*(tint_symbol_8)).numbers.arr[7];
+    float const x_331 = color.z;
+    color.z = (x_331 + float(x_328));
+  }
+  int const x_335 = (*(tint_symbol_8)).numbers.arr[8];
+  float const x_338 = color.z;
+  color.z = (x_338 + float(x_335));
+  float const x_342 = uv.x;
+  float const x_344 = uv.y;
+  if ((fabs((x_342 - x_344)) < 0.25f)) {
+    int const x_351 = (*(tint_symbol_8)).numbers.arr[9];
+    float const x_354 = color.x;
+    color.x = (x_354 + float(x_351));
+  }
+  float3 const x_357 = color;
+  float3 const x_358 = normalize(x_357);
+  *(tint_symbol_9) = float4(x_358.x, x_358.y, x_358.z, 1.0f);
+  float4 const x_363 = *(tint_symbol_6);
+  *(tint_symbol_10) = x_363;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  thread QuicksortObject tint_symbol_13 = {};
+  thread float4 tint_symbol_14 = 0.0f;
+  thread float4 tint_symbol_15 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_11 = x_GLF_pos_param;
+  main_1(x_34, &(tint_symbol_11), &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_14), &(tint_symbol_15));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_14, .gl_Position=tint_symbol_15};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_16) {
+  int temp = 0;
+  int const x_366 = *(i);
+  int const x_368 = (*(tint_symbol_16)).numbers.arr[x_366];
+  temp = x_368;
+  int const x_369 = *(i);
+  int const x_370 = *(j);
+  int const x_372 = (*(tint_symbol_16)).numbers.arr[x_370];
+  (*(tint_symbol_16)).numbers.arr[x_369] = x_372;
+  int const x_374 = *(j);
+  int const x_375 = temp;
+  (*(tint_symbol_16)).numbers.arr[x_374] = x_375;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_17) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_378 = *(h);
+  int const x_380 = (*(tint_symbol_17)).numbers.arr[x_378];
+  pivot = x_380;
+  int const x_381 = *(l);
+  i_1 = (x_381 - 1);
+  int const x_383 = *(l);
+  j_1 = x_383;
+  while (true) {
+    int const x_388 = j_1;
+    int const x_389 = *(h);
+    if ((x_388 <= (x_389 - 1))) {
+    } else {
+      break;
+    }
+    int const x_393 = j_1;
+    int const x_395 = (*(tint_symbol_17)).numbers.arr[x_393];
+    int const x_396 = pivot;
+    if ((x_395 <= x_396)) {
+      int const x_400 = i_1;
+      i_1 = (x_400 + 1);
+      int const x_402 = i_1;
+      param = x_402;
+      int const x_403 = j_1;
+      param_1 = x_403;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_17);
+    }
+    {
+      int const x_405 = j_1;
+      j_1 = (x_405 + 1);
+    }
+  }
+  int const x_407 = i_1;
+  param_2 = (x_407 + 1);
+  int const x_409 = *(h);
+  param_3 = x_409;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_17);
+  int const x_411 = i_1;
+  return (x_411 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_18) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_414 = top;
+  int const x_415 = (x_414 + 1);
+  top = x_415;
+  int const x_416 = l_1;
+  stack.arr[x_415] = x_416;
+  int const x_418 = top;
+  int const x_419 = (x_418 + 1);
+  top = x_419;
+  int const x_420 = h_1;
+  stack.arr[x_419] = x_420;
+  while (true) {
+    int const x_426 = top;
+    if ((x_426 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_429 = top;
+    top = (x_429 - 1);
+    int const x_432 = stack.arr[x_429];
+    h_1 = x_432;
+    int const x_433 = top;
+    top = (x_433 - 1);
+    int const x_436 = stack.arr[x_433];
+    l_1 = x_436;
+    int const x_437 = l_1;
+    param_4 = x_437;
+    int const x_438 = h_1;
+    param_5 = x_438;
+    int const x_439 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_18);
+    p = x_439;
+    int const x_440 = p;
+    int const x_442 = l_1;
+    if (((x_440 - 1) > x_442)) {
+      int const x_446 = top;
+      int const x_447 = (x_446 + 1);
+      top = x_447;
+      int const x_448 = l_1;
+      stack.arr[x_447] = x_448;
+      int const x_450 = top;
+      int const x_451 = (x_450 + 1);
+      top = x_451;
+      int const x_452 = p;
+      stack.arr[x_451] = (x_452 - 1);
+    }
+    int const x_455 = p;
+    int const x_457 = h_1;
+    if (((x_455 + 1) < x_457)) {
+      int const x_461 = top;
+      int const x_462 = (x_461 + 1);
+      top = x_462;
+      int const x_463 = p;
+      stack.arr[x_462] = (x_463 + 1);
+      int const x_466 = top;
+      int const x_467 = (x_466 + 1);
+      top = x_467;
+      int const x_468 = h_1;
+      stack.arr[x_467] = x_468;
+    }
+  }
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..6f5c5f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.spvasm
@@ -0,0 +1,780 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 521
+; Schema: 0
+               OpCapability Shader
+        %339 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %x_90 "x_90"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %x_95 "x_95"
+               OpName %x_96 "x_96"
+               OpName %x_97 "x_97"
+               OpName %x_98 "x_98"
+               OpName %x_99 "x_99"
+               OpName %x_100 "x_100"
+               OpName %x_101 "x_101"
+               OpName %x_102 "x_102"
+               OpName %x_103 "x_103"
+               OpName %x_104 "x_104"
+               OpName %x_105 "x_105"
+               OpName %x_106 "x_106"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %29 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %50 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %57 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %61 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %65 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+         %68 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %227 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %358 = OpTypeFunction %void %main_out
+        %373 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+        %394 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+     %main_1 = OpFunction %void None %29
+         %32 = OpLabel
+       %x_90 = OpVariable %_ptr_Function_int Function %35
+       %x_91 = OpVariable %_ptr_Function_int Function %35
+       %x_92 = OpVariable %_ptr_Function_int Function %35
+       %x_93 = OpVariable %_ptr_Function_int Function %35
+       %x_94 = OpVariable %_ptr_Function_int Function %35
+       %x_95 = OpVariable %_ptr_Function_int Function %35
+       %x_96 = OpVariable %_ptr_Function_int Function %35
+       %x_97 = OpVariable %_ptr_Function_int Function %35
+       %x_98 = OpVariable %_ptr_Function_int Function %35
+       %x_99 = OpVariable %_ptr_Function_int Function %35
+      %x_100 = OpVariable %_ptr_Function_int Function %35
+      %x_101 = OpVariable %_ptr_Function_int Function %35
+      %x_102 = OpVariable %_ptr_Function_int Function %35
+      %x_103 = OpVariable %_ptr_Function__arr_int_uint_10 Function %50
+      %x_104 = OpVariable %_ptr_Function_int Function %35
+      %x_105 = OpVariable %_ptr_Function_int Function %35
+      %x_106 = OpVariable %_ptr_Function_int Function %35
+        %i_2 = OpVariable %_ptr_Function_int Function %35
+         %uv = OpVariable %_ptr_Function_v2float Function %57
+      %color = OpVariable %_ptr_Function_v3float Function %61
+         %62 = OpLoad %v4float %x_GLF_pos
+         %66 = OpFAdd %v4float %62 %65
+         %69 = OpFMul %v4float %66 %68
+               OpStore %x_GLF_FragCoord %69
+               OpStore %i_2 %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %i_2
+         %77 = OpSLessThan %bool %75 %int_10
+               OpSelectionMerge %79 None
+               OpBranchConditional %77 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %72
+         %79 = OpLabel
+         %82 = OpLoad %int %i_2
+         %83 = OpLoad %int %i_2
+         %86 = OpAccessChain %_ptr_Private_int %obj %uint_0 %82
+         %87 = OpISub %int %int_10 %83
+               OpStore %86 %87
+         %88 = OpLoad %int %i_2
+         %89 = OpLoad %int %i_2
+         %90 = OpAccessChain %_ptr_Private_int %obj %uint_0 %89
+         %91 = OpLoad %int %90
+         %92 = OpLoad %int %i_2
+         %93 = OpAccessChain %_ptr_Private_int %obj %uint_0 %92
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Private_int %obj %uint_0 %88
+         %96 = OpIMul %int %91 %94
+               OpStore %95 %96
+               OpBranch %73
+         %73 = OpLabel
+         %97 = OpLoad %int %i_2
+         %99 = OpIAdd %int %97 %int_1
+               OpStore %i_2 %99
+               OpBranch %71
+         %72 = OpLabel
+               OpStore %x_100 %int_0
+               OpStore %x_101 %int_9
+               OpStore %x_102 %int_n1
+        %102 = OpLoad %int %x_102
+        %103 = OpIAdd %int %102 %int_1
+               OpStore %x_102 %103
+        %104 = OpLoad %int %x_100
+        %105 = OpAccessChain %_ptr_Function_int %x_103 %103
+               OpStore %105 %104
+        %106 = OpLoad %int %x_102
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %x_102 %107
+        %108 = OpLoad %int %x_101
+        %109 = OpAccessChain %_ptr_Function_int %x_103 %107
+               OpStore %109 %108
+               OpBranch %110
+        %110 = OpLabel
+               OpLoopMerge %111 %112 None
+               OpBranch %113
+        %113 = OpLabel
+        %114 = OpLoad %int %x_102
+        %115 = OpSGreaterThanEqual %bool %114 %int_0
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+               OpBranch %116
+        %118 = OpLabel
+               OpBranch %111
+        %116 = OpLabel
+        %119 = OpLoad %int %x_102
+        %120 = OpISub %int %119 %int_1
+               OpStore %x_102 %120
+        %121 = OpAccessChain %_ptr_Function_int %x_103 %119
+        %122 = OpLoad %int %121
+               OpStore %x_101 %122
+        %123 = OpLoad %int %x_102
+        %124 = OpISub %int %123 %int_1
+               OpStore %x_102 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_103 %123
+        %126 = OpLoad %int %125
+               OpStore %x_100 %126
+        %127 = OpLoad %int %x_100
+               OpStore %x_105 %127
+        %128 = OpLoad %int %x_101
+               OpStore %x_106 %128
+        %129 = OpLoad %int %x_106
+        %130 = OpAccessChain %_ptr_Private_int %obj %uint_0 %129
+        %131 = OpLoad %int %130
+               OpStore %x_92 %131
+        %132 = OpLoad %int %x_105
+        %133 = OpISub %int %132 %int_1
+               OpStore %x_93 %133
+        %134 = OpLoad %int %x_105
+               OpStore %x_94 %134
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %139 = OpLoad %int %x_94
+        %140 = OpLoad %int %x_106
+        %141 = OpISub %int %140 %int_1
+        %142 = OpSLessThanEqual %bool %139 %141
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %145
+        %144 = OpLabel
+               OpBranch %143
+        %145 = OpLabel
+               OpBranch %136
+        %143 = OpLabel
+        %146 = OpLoad %int %x_94
+        %147 = OpAccessChain %_ptr_Private_int %obj %uint_0 %146
+        %148 = OpLoad %int %147
+        %149 = OpLoad %int %x_92
+        %150 = OpSLessThanEqual %bool %148 %149
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %151
+        %152 = OpLabel
+        %153 = OpLoad %int %x_93
+        %154 = OpIAdd %int %153 %int_1
+               OpStore %x_93 %154
+        %155 = OpLoad %int %x_93
+               OpStore %x_95 %155
+        %156 = OpLoad %int %x_94
+               OpStore %x_96 %156
+        %157 = OpLoad %int %x_95
+        %158 = OpAccessChain %_ptr_Private_int %obj %uint_0 %157
+        %159 = OpLoad %int %158
+               OpStore %x_91 %159
+        %160 = OpLoad %int %x_95
+        %161 = OpLoad %int %x_96
+        %162 = OpAccessChain %_ptr_Private_int %obj %uint_0 %161
+        %163 = OpLoad %int %162
+        %164 = OpAccessChain %_ptr_Private_int %obj %uint_0 %160
+               OpStore %164 %163
+        %165 = OpLoad %int %x_96
+        %166 = OpLoad %int %x_91
+        %167 = OpAccessChain %_ptr_Private_int %obj %uint_0 %165
+               OpStore %167 %166
+               OpBranch %151
+        %151 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %168 = OpLoad %int %x_94
+        %169 = OpIAdd %int %168 %int_1
+               OpStore %x_94 %169
+               OpBranch %135
+        %136 = OpLabel
+        %170 = OpLoad %int %x_93
+        %171 = OpIAdd %int %170 %int_1
+               OpStore %x_97 %171
+        %172 = OpLoad %int %x_106
+               OpStore %x_98 %172
+        %173 = OpLoad %int %x_97
+        %174 = OpAccessChain %_ptr_Private_int %obj %uint_0 %173
+        %175 = OpLoad %int %174
+               OpStore %x_90 %175
+        %176 = OpLoad %int %x_97
+        %177 = OpLoad %int %x_98
+        %178 = OpAccessChain %_ptr_Private_int %obj %uint_0 %177
+        %179 = OpLoad %int %178
+        %180 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176
+               OpStore %180 %179
+        %181 = OpLoad %int %x_98
+        %182 = OpLoad %int %x_90
+        %183 = OpAccessChain %_ptr_Private_int %obj %uint_0 %181
+               OpStore %183 %182
+        %184 = OpLoad %int %x_93
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %x_99 %185
+        %186 = OpLoad %int %x_99
+               OpStore %x_104 %186
+        %187 = OpLoad %int %x_104
+        %188 = OpLoad %int %x_100
+        %189 = OpISub %int %187 %int_1
+        %190 = OpSGreaterThan %bool %189 %188
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %191
+        %192 = OpLabel
+        %193 = OpLoad %int %x_102
+        %194 = OpIAdd %int %193 %int_1
+               OpStore %x_102 %194
+        %195 = OpLoad %int %x_100
+        %196 = OpAccessChain %_ptr_Function_int %x_103 %194
+               OpStore %196 %195
+        %197 = OpLoad %int %x_102
+        %198 = OpIAdd %int %197 %int_1
+               OpStore %x_102 %198
+        %199 = OpLoad %int %x_104
+        %200 = OpAccessChain %_ptr_Function_int %x_103 %198
+        %201 = OpISub %int %199 %int_1
+               OpStore %200 %201
+               OpBranch %191
+        %191 = OpLabel
+        %202 = OpLoad %int %x_104
+        %203 = OpLoad %int %x_101
+        %204 = OpIAdd %int %202 %int_1
+        %205 = OpSLessThan %bool %204 %203
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %206
+        %207 = OpLabel
+        %208 = OpLoad %int %x_102
+        %209 = OpIAdd %int %208 %int_1
+               OpStore %x_102 %209
+        %210 = OpLoad %int %x_104
+        %211 = OpAccessChain %_ptr_Function_int %x_103 %209
+        %212 = OpIAdd %int %210 %int_1
+               OpStore %211 %212
+        %213 = OpLoad %int %x_102
+        %214 = OpIAdd %int %213 %int_1
+               OpStore %x_102 %214
+        %215 = OpLoad %int %x_101
+        %216 = OpAccessChain %_ptr_Function_int %x_103 %214
+               OpStore %216 %215
+               OpBranch %206
+        %206 = OpLabel
+               OpBranch %112
+        %112 = OpLabel
+               OpBranch %110
+        %111 = OpLabel
+        %217 = OpLoad %v4float %x_GLF_FragCoord
+        %219 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %220 = OpLoad %v2float %219
+        %221 = OpCompositeExtract %float %217 0
+        %222 = OpCompositeExtract %float %217 1
+        %223 = OpCompositeConstruct %v2float %221 %222
+        %224 = OpFDiv %v2float %223 %220
+               OpStore %uv %224
+               OpStore %color %227
+        %228 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %229 = OpLoad %int %228
+        %231 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %232 = OpLoad %float %231
+        %233 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %234 = OpConvertSToF %float %229
+        %235 = OpFAdd %float %232 %234
+               OpStore %233 %235
+        %236 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %237 = OpLoad %float %236
+        %239 = OpFOrdGreaterThan %bool %237 %float_0_25
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %240
+        %241 = OpLabel
+        %242 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %243 = OpLoad %int %242
+        %244 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %245 = OpLoad %float %244
+        %246 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %247 = OpConvertSToF %float %243
+        %248 = OpFAdd %float %245 %247
+               OpStore %246 %248
+               OpBranch %240
+        %240 = OpLabel
+        %249 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %250 = OpLoad %float %249
+        %252 = OpFOrdGreaterThan %bool %250 %float_0_5
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %254 %253
+        %254 = OpLabel
+        %256 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %257 = OpLoad %int %256
+        %259 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %260 = OpLoad %float %259
+        %261 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %262 = OpConvertSToF %float %257
+        %263 = OpFAdd %float %260 %262
+               OpStore %261 %263
+               OpBranch %253
+        %253 = OpLabel
+        %264 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %265 = OpLoad %float %264
+        %267 = OpFOrdGreaterThan %bool %265 %float_0_75
+               OpSelectionMerge %268 None
+               OpBranchConditional %267 %269 %268
+        %269 = OpLabel
+        %271 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %272 = OpLoad %int %271
+        %274 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %275 = OpLoad %float %274
+        %276 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %277 = OpConvertSToF %float %272
+        %278 = OpFAdd %float %275 %277
+               OpStore %276 %278
+               OpBranch %268
+        %268 = OpLabel
+        %280 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %281 = OpLoad %int %280
+        %282 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %283 = OpLoad %float %282
+        %284 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %285 = OpConvertSToF %float %281
+        %286 = OpFAdd %float %283 %285
+               OpStore %284 %286
+        %287 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %288 = OpLoad %float %287
+        %289 = OpFOrdGreaterThan %bool %288 %float_0_25
+               OpSelectionMerge %290 None
+               OpBranchConditional %289 %291 %290
+        %291 = OpLabel
+        %293 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %294 = OpLoad %int %293
+        %295 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %296 = OpLoad %float %295
+        %297 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %298 = OpConvertSToF %float %294
+        %299 = OpFAdd %float %296 %298
+               OpStore %297 %299
+               OpBranch %290
+        %290 = OpLabel
+        %300 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %301 = OpLoad %float %300
+        %302 = OpFOrdGreaterThan %bool %301 %float_0_5
+               OpSelectionMerge %303 None
+               OpBranchConditional %302 %304 %303
+        %304 = OpLabel
+        %306 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %307 = OpLoad %int %306
+        %308 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %309 = OpLoad %float %308
+        %310 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %311 = OpConvertSToF %float %307
+        %312 = OpFAdd %float %309 %311
+               OpStore %310 %312
+               OpBranch %303
+        %303 = OpLabel
+        %313 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %314 = OpLoad %float %313
+        %315 = OpFOrdGreaterThan %bool %314 %float_0_75
+               OpSelectionMerge %316 None
+               OpBranchConditional %315 %317 %316
+        %317 = OpLabel
+        %319 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %320 = OpLoad %int %319
+        %321 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %322 = OpLoad %float %321
+        %323 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %324 = OpConvertSToF %float %320
+        %325 = OpFAdd %float %322 %324
+               OpStore %323 %325
+               OpBranch %316
+        %316 = OpLabel
+        %327 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %328 = OpLoad %int %327
+        %329 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %330 = OpLoad %float %329
+        %331 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %332 = OpConvertSToF %float %328
+        %333 = OpFAdd %float %330 %332
+               OpStore %331 %333
+        %334 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %335 = OpLoad %float %334
+        %336 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %337 = OpLoad %float %336
+        %340 = OpFSub %float %335 %337
+        %338 = OpExtInst %float %339 FAbs %340
+        %341 = OpFOrdLessThan %bool %338 %float_0_25
+               OpSelectionMerge %342 None
+               OpBranchConditional %341 %343 %342
+        %343 = OpLabel
+        %344 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %345 = OpLoad %int %344
+        %346 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %347 = OpLoad %float %346
+        %348 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %349 = OpConvertSToF %float %345
+        %350 = OpFAdd %float %347 %349
+               OpStore %348 %350
+               OpBranch %342
+        %342 = OpLabel
+        %351 = OpLoad %v3float %color
+        %352 = OpExtInst %v3float %339 Normalize %351
+        %353 = OpCompositeExtract %float %352 0
+        %354 = OpCompositeExtract %float %352 1
+        %355 = OpCompositeExtract %float %352 2
+        %356 = OpCompositeConstruct %v4float %353 %354 %355 %float_1
+               OpStore %frag_color %356
+        %357 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %357
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %358
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %362 = OpLabel
+        %363 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %363
+        %364 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %364
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %29
+        %366 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %367 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %367
+        %368 = OpFunctionCall %void %main_1
+        %370 = OpLoad %v4float %frag_color
+        %371 = OpLoad %v4float %gl_Position
+        %372 = OpCompositeConstruct %main_out %370 %371
+        %369 = OpFunctionCall %void %tint_symbol_4 %372
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %373
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %377 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %35
+        %380 = OpLoad %int %i
+        %381 = OpAccessChain %_ptr_Private_int %obj %uint_0 %380
+        %382 = OpLoad %int %381
+               OpStore %temp %382
+        %384 = OpLoad %int %i
+        %386 = OpLoad %int %j
+        %387 = OpAccessChain %_ptr_Private_int %obj %uint_0 %386
+        %388 = OpLoad %int %387
+        %389 = OpAccessChain %_ptr_Private_int %obj %uint_0 %384
+               OpStore %389 %388
+        %391 = OpLoad %int %j
+        %392 = OpLoad %int %temp
+        %393 = OpAccessChain %_ptr_Private_int %obj %uint_0 %391
+               OpStore %393 %392
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %394
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %398 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %35
+        %i_1 = OpVariable %_ptr_Function_int Function %35
+        %j_1 = OpVariable %_ptr_Function_int Function %35
+      %param = OpVariable %_ptr_Function_int Function %35
+    %param_1 = OpVariable %_ptr_Function_int Function %35
+    %param_2 = OpVariable %_ptr_Function_int Function %35
+    %param_3 = OpVariable %_ptr_Function_int Function %35
+        %407 = OpLoad %int %h
+        %408 = OpAccessChain %_ptr_Private_int %obj %uint_0 %407
+        %409 = OpLoad %int %408
+               OpStore %pivot %409
+        %411 = OpLoad %int %l
+        %412 = OpISub %int %411 %int_1
+               OpStore %i_1 %412
+        %414 = OpLoad %int %l
+               OpStore %j_1 %414
+               OpBranch %415
+        %415 = OpLabel
+               OpLoopMerge %416 %417 None
+               OpBranch %418
+        %418 = OpLabel
+        %419 = OpLoad %int %j_1
+        %421 = OpLoad %int %h
+        %422 = OpISub %int %421 %int_1
+        %423 = OpSLessThanEqual %bool %419 %422
+               OpSelectionMerge %424 None
+               OpBranchConditional %423 %425 %426
+        %425 = OpLabel
+               OpBranch %424
+        %426 = OpLabel
+               OpBranch %416
+        %424 = OpLabel
+        %427 = OpLoad %int %j_1
+        %428 = OpAccessChain %_ptr_Private_int %obj %uint_0 %427
+        %429 = OpLoad %int %428
+        %430 = OpLoad %int %pivot
+        %431 = OpSLessThanEqual %bool %429 %430
+               OpSelectionMerge %432 None
+               OpBranchConditional %431 %433 %432
+        %433 = OpLabel
+        %434 = OpLoad %int %i_1
+        %435 = OpIAdd %int %434 %int_1
+               OpStore %i_1 %435
+        %436 = OpLoad %int %i_1
+               OpStore %param %436
+        %437 = OpLoad %int %j_1
+               OpStore %param_1 %437
+        %438 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %432
+        %432 = OpLabel
+               OpBranch %417
+        %417 = OpLabel
+        %441 = OpLoad %int %j_1
+        %442 = OpIAdd %int %441 %int_1
+               OpStore %j_1 %442
+               OpBranch %415
+        %416 = OpLabel
+        %443 = OpLoad %int %i_1
+        %444 = OpIAdd %int %443 %int_1
+               OpStore %param_2 %444
+        %446 = OpLoad %int %h
+               OpStore %param_3 %446
+        %447 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %450 = OpLoad %int %i_1
+        %451 = OpIAdd %int %450 %int_1
+               OpReturnValue %451
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %29
+        %453 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %35
+        %h_1 = OpVariable %_ptr_Function_int Function %35
+        %top = OpVariable %_ptr_Function_int Function %35
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %50
+          %p = OpVariable %_ptr_Function_int Function %35
+    %param_4 = OpVariable %_ptr_Function_int Function %35
+    %param_5 = OpVariable %_ptr_Function_int Function %35
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %461 = OpLoad %int %top
+        %462 = OpIAdd %int %461 %int_1
+               OpStore %top %462
+        %463 = OpLoad %int %l_1
+        %464 = OpAccessChain %_ptr_Function_int %stack %462
+               OpStore %464 %463
+        %465 = OpLoad %int %top
+        %466 = OpIAdd %int %465 %int_1
+               OpStore %top %466
+        %467 = OpLoad %int %h_1
+        %468 = OpAccessChain %_ptr_Function_int %stack %466
+               OpStore %468 %467
+               OpBranch %469
+        %469 = OpLabel
+               OpLoopMerge %470 %471 None
+               OpBranch %472
+        %472 = OpLabel
+        %473 = OpLoad %int %top
+        %474 = OpSGreaterThanEqual %bool %473 %int_0
+               OpSelectionMerge %475 None
+               OpBranchConditional %474 %476 %477
+        %476 = OpLabel
+               OpBranch %475
+        %477 = OpLabel
+               OpBranch %470
+        %475 = OpLabel
+        %478 = OpLoad %int %top
+        %479 = OpISub %int %478 %int_1
+               OpStore %top %479
+        %480 = OpAccessChain %_ptr_Function_int %stack %478
+        %481 = OpLoad %int %480
+               OpStore %h_1 %481
+        %482 = OpLoad %int %top
+        %483 = OpISub %int %482 %int_1
+               OpStore %top %483
+        %484 = OpAccessChain %_ptr_Function_int %stack %482
+        %485 = OpLoad %int %484
+               OpStore %l_1 %485
+        %486 = OpLoad %int %l_1
+               OpStore %param_4 %486
+        %487 = OpLoad %int %h_1
+               OpStore %param_5 %487
+        %488 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %488
+        %491 = OpLoad %int %p
+        %492 = OpLoad %int %l_1
+        %493 = OpISub %int %491 %int_1
+        %494 = OpSGreaterThan %bool %493 %492
+               OpSelectionMerge %495 None
+               OpBranchConditional %494 %496 %495
+        %496 = OpLabel
+        %497 = OpLoad %int %top
+        %498 = OpIAdd %int %497 %int_1
+               OpStore %top %498
+        %499 = OpLoad %int %l_1
+        %500 = OpAccessChain %_ptr_Function_int %stack %498
+               OpStore %500 %499
+        %501 = OpLoad %int %top
+        %502 = OpIAdd %int %501 %int_1
+               OpStore %top %502
+        %503 = OpLoad %int %p
+        %504 = OpAccessChain %_ptr_Function_int %stack %502
+        %505 = OpISub %int %503 %int_1
+               OpStore %504 %505
+               OpBranch %495
+        %495 = OpLabel
+        %506 = OpLoad %int %p
+        %507 = OpLoad %int %h_1
+        %508 = OpIAdd %int %506 %int_1
+        %509 = OpSLessThan %bool %508 %507
+               OpSelectionMerge %510 None
+               OpBranchConditional %509 %511 %510
+        %511 = OpLabel
+        %512 = OpLoad %int %top
+        %513 = OpIAdd %int %512 %int_1
+               OpStore %top %513
+        %514 = OpLoad %int %p
+        %515 = OpAccessChain %_ptr_Function_int %stack %513
+        %516 = OpIAdd %int %514 %int_1
+               OpStore %515 %516
+        %517 = OpLoad %int %top
+        %518 = OpIAdd %int %517 %int_1
+               OpStore %top %518
+        %519 = OpLoad %int %h_1
+        %520 = OpAccessChain %_ptr_Function_int %stack %518
+               OpStore %520 %519
+               OpBranch %510
+        %510 = OpLabel
+               OpBranch %471
+        %471 = OpLabel
+               OpBranch %469
+        %470 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..dcc0835
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.wgsl
@@ -0,0 +1,399 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  var x_90 : i32;
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : i32;
+  var x_95 : i32;
+  var x_96 : i32;
+  var x_97 : i32;
+  var x_98 : i32;
+  var x_99 : i32;
+  var x_100 : i32;
+  var x_101 : i32;
+  var x_102 : i32;
+  var x_103 : array<i32, 10>;
+  var x_104 : i32;
+  var x_105 : i32;
+  var x_106 : i32;
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_107 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_107 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_114 : i32 = i_2;
+    if ((x_114 < 10)) {
+    } else {
+      break;
+    }
+    let x_117 : i32 = i_2;
+    let x_118 : i32 = i_2;
+    obj.numbers[x_117] = (10 - x_118);
+    let x_121 : i32 = i_2;
+    let x_122 : i32 = i_2;
+    let x_124 : i32 = obj.numbers[x_122];
+    let x_125 : i32 = i_2;
+    let x_127 : i32 = obj.numbers[x_125];
+    obj.numbers[x_121] = (x_124 * x_127);
+
+    continuing {
+      let x_130 : i32 = i_2;
+      i_2 = (x_130 + 1);
+    }
+  }
+  x_100 = 0;
+  x_101 = 9;
+  x_102 = -1;
+  let x_132 : i32 = x_102;
+  let x_133 : i32 = (x_132 + 1);
+  x_102 = x_133;
+  let x_134 : i32 = x_100;
+  x_103[x_133] = x_134;
+  let x_136 : i32 = x_102;
+  let x_137 : i32 = (x_136 + 1);
+  x_102 = x_137;
+  let x_138 : i32 = x_101;
+  x_103[x_137] = x_138;
+  loop {
+    let x_144 : i32 = x_102;
+    if ((x_144 >= 0)) {
+    } else {
+      break;
+    }
+    let x_147 : i32 = x_102;
+    x_102 = (x_147 - 1);
+    let x_150 : i32 = x_103[x_147];
+    x_101 = x_150;
+    let x_151 : i32 = x_102;
+    x_102 = (x_151 - 1);
+    let x_154 : i32 = x_103[x_151];
+    x_100 = x_154;
+    let x_155 : i32 = x_100;
+    x_105 = x_155;
+    let x_156 : i32 = x_101;
+    x_106 = x_156;
+    let x_157 : i32 = x_106;
+    let x_159 : i32 = obj.numbers[x_157];
+    x_92 = x_159;
+    let x_160 : i32 = x_105;
+    x_93 = (x_160 - 1);
+    let x_162 : i32 = x_105;
+    x_94 = x_162;
+    loop {
+      let x_167 : i32 = x_94;
+      let x_168 : i32 = x_106;
+      if ((x_167 <= (x_168 - 1))) {
+      } else {
+        break;
+      }
+      let x_172 : i32 = x_94;
+      let x_174 : i32 = obj.numbers[x_172];
+      let x_175 : i32 = x_92;
+      if ((x_174 <= x_175)) {
+        let x_179 : i32 = x_93;
+        x_93 = (x_179 + 1);
+        let x_181 : i32 = x_93;
+        x_95 = x_181;
+        let x_182 : i32 = x_94;
+        x_96 = x_182;
+        let x_183 : i32 = x_95;
+        let x_185 : i32 = obj.numbers[x_183];
+        x_91 = x_185;
+        let x_186 : i32 = x_95;
+        let x_187 : i32 = x_96;
+        let x_189 : i32 = obj.numbers[x_187];
+        obj.numbers[x_186] = x_189;
+        let x_191 : i32 = x_96;
+        let x_192 : i32 = x_91;
+        obj.numbers[x_191] = x_192;
+      }
+
+      continuing {
+        let x_194 : i32 = x_94;
+        x_94 = (x_194 + 1);
+      }
+    }
+    let x_196 : i32 = x_93;
+    x_97 = (x_196 + 1);
+    let x_198 : i32 = x_106;
+    x_98 = x_198;
+    let x_199 : i32 = x_97;
+    let x_201 : i32 = obj.numbers[x_199];
+    x_90 = x_201;
+    let x_202 : i32 = x_97;
+    let x_203 : i32 = x_98;
+    let x_205 : i32 = obj.numbers[x_203];
+    obj.numbers[x_202] = x_205;
+    let x_207 : i32 = x_98;
+    let x_208 : i32 = x_90;
+    obj.numbers[x_207] = x_208;
+    let x_210 : i32 = x_93;
+    x_99 = (x_210 + 1);
+    let x_212 : i32 = x_99;
+    x_104 = x_212;
+    let x_213 : i32 = x_104;
+    let x_215 : i32 = x_100;
+    if (((x_213 - 1) > x_215)) {
+      let x_219 : i32 = x_102;
+      let x_220 : i32 = (x_219 + 1);
+      x_102 = x_220;
+      let x_221 : i32 = x_100;
+      x_103[x_220] = x_221;
+      let x_223 : i32 = x_102;
+      let x_224 : i32 = (x_223 + 1);
+      x_102 = x_224;
+      let x_225 : i32 = x_104;
+      x_103[x_224] = (x_225 - 1);
+    }
+    let x_228 : i32 = x_104;
+    let x_230 : i32 = x_101;
+    if (((x_228 + 1) < x_230)) {
+      let x_234 : i32 = x_102;
+      let x_235 : i32 = (x_234 + 1);
+      x_102 = x_235;
+      let x_236 : i32 = x_104;
+      x_103[x_235] = (x_236 + 1);
+      let x_239 : i32 = x_102;
+      let x_240 : i32 = (x_239 + 1);
+      x_102 = x_240;
+      let x_241 : i32 = x_101;
+      x_103[x_240] = x_241;
+    }
+  }
+  let x_243 : vec4<f32> = x_GLF_FragCoord;
+  let x_246 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_243.x, x_243.y) / x_246);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_249 : i32 = obj.numbers[0];
+  let x_252 : f32 = color.x;
+  color.x = (x_252 + f32(x_249));
+  let x_256 : f32 = uv.x;
+  if ((x_256 > 0.25)) {
+    let x_261 : i32 = obj.numbers[1];
+    let x_264 : f32 = color.x;
+    color.x = (x_264 + f32(x_261));
+  }
+  let x_268 : f32 = uv.x;
+  if ((x_268 > 0.5)) {
+    let x_273 : i32 = obj.numbers[2];
+    let x_276 : f32 = color.y;
+    color.y = (x_276 + f32(x_273));
+  }
+  let x_280 : f32 = uv.x;
+  if ((x_280 > 0.75)) {
+    let x_285 : i32 = obj.numbers[3];
+    let x_288 : f32 = color.z;
+    color.z = (x_288 + f32(x_285));
+  }
+  let x_292 : i32 = obj.numbers[4];
+  let x_295 : f32 = color.y;
+  color.y = (x_295 + f32(x_292));
+  let x_299 : f32 = uv.y;
+  if ((x_299 > 0.25)) {
+    let x_304 : i32 = obj.numbers[5];
+    let x_307 : f32 = color.x;
+    color.x = (x_307 + f32(x_304));
+  }
+  let x_311 : f32 = uv.y;
+  if ((x_311 > 0.5)) {
+    let x_316 : i32 = obj.numbers[6];
+    let x_319 : f32 = color.y;
+    color.y = (x_319 + f32(x_316));
+  }
+  let x_323 : f32 = uv.y;
+  if ((x_323 > 0.75)) {
+    let x_328 : i32 = obj.numbers[7];
+    let x_331 : f32 = color.z;
+    color.z = (x_331 + f32(x_328));
+  }
+  let x_335 : i32 = obj.numbers[8];
+  let x_338 : f32 = color.z;
+  color.z = (x_338 + f32(x_335));
+  let x_342 : f32 = uv.x;
+  let x_344 : f32 = uv.y;
+  if ((abs((x_342 - x_344)) < 0.25)) {
+    let x_351 : i32 = obj.numbers[9];
+    let x_354 : f32 = color.x;
+    color.x = (x_354 + f32(x_351));
+  }
+  let x_357 : vec3<f32> = color;
+  let x_358 : vec3<f32> = normalize(x_357);
+  frag_color = vec4<f32>(x_358.x, x_358.y, x_358.z, 1.0);
+  let x_363 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_363;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_366 : i32 = *(i);
+  let x_368 : i32 = obj.numbers[x_366];
+  temp = x_368;
+  let x_369 : i32 = *(i);
+  let x_370 : i32 = *(j);
+  let x_372 : i32 = obj.numbers[x_370];
+  obj.numbers[x_369] = x_372;
+  let x_374 : i32 = *(j);
+  let x_375 : i32 = temp;
+  obj.numbers[x_374] = x_375;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_378 : i32 = *(h);
+  let x_380 : i32 = obj.numbers[x_378];
+  pivot = x_380;
+  let x_381 : i32 = *(l);
+  i_1 = (x_381 - 1);
+  let x_383 : i32 = *(l);
+  j_1 = x_383;
+  loop {
+    let x_388 : i32 = j_1;
+    let x_389 : i32 = *(h);
+    if ((x_388 <= (x_389 - 1))) {
+    } else {
+      break;
+    }
+    let x_393 : i32 = j_1;
+    let x_395 : i32 = obj.numbers[x_393];
+    let x_396 : i32 = pivot;
+    if ((x_395 <= x_396)) {
+      let x_400 : i32 = i_1;
+      i_1 = (x_400 + 1);
+      let x_402 : i32 = i_1;
+      param = x_402;
+      let x_403 : i32 = j_1;
+      param_1 = x_403;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_405 : i32 = j_1;
+      j_1 = (x_405 + 1);
+    }
+  }
+  let x_407 : i32 = i_1;
+  param_2 = (x_407 + 1);
+  let x_409 : i32 = *(h);
+  param_3 = x_409;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_411 : i32 = i_1;
+  return (x_411 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_414 : i32 = top;
+  let x_415 : i32 = (x_414 + 1);
+  top = x_415;
+  let x_416 : i32 = l_1;
+  stack[x_415] = x_416;
+  let x_418 : i32 = top;
+  let x_419 : i32 = (x_418 + 1);
+  top = x_419;
+  let x_420 : i32 = h_1;
+  stack[x_419] = x_420;
+  loop {
+    let x_426 : i32 = top;
+    if ((x_426 >= 0)) {
+    } else {
+      break;
+    }
+    let x_429 : i32 = top;
+    top = (x_429 - 1);
+    let x_432 : i32 = stack[x_429];
+    h_1 = x_432;
+    let x_433 : i32 = top;
+    top = (x_433 - 1);
+    let x_436 : i32 = stack[x_433];
+    l_1 = x_436;
+    let x_437 : i32 = l_1;
+    param_4 = x_437;
+    let x_438 : i32 = h_1;
+    param_5 = x_438;
+    let x_439 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_439;
+    let x_440 : i32 = p;
+    let x_442 : i32 = l_1;
+    if (((x_440 - 1) > x_442)) {
+      let x_446 : i32 = top;
+      let x_447 : i32 = (x_446 + 1);
+      top = x_447;
+      let x_448 : i32 = l_1;
+      stack[x_447] = x_448;
+      let x_450 : i32 = top;
+      let x_451 : i32 = (x_450 + 1);
+      top = x_451;
+      let x_452 : i32 = p;
+      stack[x_451] = (x_452 - 1);
+    }
+    let x_455 : i32 = p;
+    let x_457 : i32 = h_1;
+    if (((x_455 + 1) < x_457)) {
+      let x_461 : i32 = top;
+      let x_462 : i32 = (x_461 + 1);
+      top = x_462;
+      let x_463 : i32 = p;
+      stack[x_462] = (x_463 + 1);
+      let x_466 : i32 = top;
+      let x_467 : i32 = (x_466 + 1);
+      top = x_467;
+      let x_468 : i32 = h_1;
+      stack[x_467] = x_468;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
new file mode 100644
index 0000000..dcc0835
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
@@ -0,0 +1,399 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  var x_90 : i32;
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : i32;
+  var x_95 : i32;
+  var x_96 : i32;
+  var x_97 : i32;
+  var x_98 : i32;
+  var x_99 : i32;
+  var x_100 : i32;
+  var x_101 : i32;
+  var x_102 : i32;
+  var x_103 : array<i32, 10>;
+  var x_104 : i32;
+  var x_105 : i32;
+  var x_106 : i32;
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_107 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_107 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_114 : i32 = i_2;
+    if ((x_114 < 10)) {
+    } else {
+      break;
+    }
+    let x_117 : i32 = i_2;
+    let x_118 : i32 = i_2;
+    obj.numbers[x_117] = (10 - x_118);
+    let x_121 : i32 = i_2;
+    let x_122 : i32 = i_2;
+    let x_124 : i32 = obj.numbers[x_122];
+    let x_125 : i32 = i_2;
+    let x_127 : i32 = obj.numbers[x_125];
+    obj.numbers[x_121] = (x_124 * x_127);
+
+    continuing {
+      let x_130 : i32 = i_2;
+      i_2 = (x_130 + 1);
+    }
+  }
+  x_100 = 0;
+  x_101 = 9;
+  x_102 = -1;
+  let x_132 : i32 = x_102;
+  let x_133 : i32 = (x_132 + 1);
+  x_102 = x_133;
+  let x_134 : i32 = x_100;
+  x_103[x_133] = x_134;
+  let x_136 : i32 = x_102;
+  let x_137 : i32 = (x_136 + 1);
+  x_102 = x_137;
+  let x_138 : i32 = x_101;
+  x_103[x_137] = x_138;
+  loop {
+    let x_144 : i32 = x_102;
+    if ((x_144 >= 0)) {
+    } else {
+      break;
+    }
+    let x_147 : i32 = x_102;
+    x_102 = (x_147 - 1);
+    let x_150 : i32 = x_103[x_147];
+    x_101 = x_150;
+    let x_151 : i32 = x_102;
+    x_102 = (x_151 - 1);
+    let x_154 : i32 = x_103[x_151];
+    x_100 = x_154;
+    let x_155 : i32 = x_100;
+    x_105 = x_155;
+    let x_156 : i32 = x_101;
+    x_106 = x_156;
+    let x_157 : i32 = x_106;
+    let x_159 : i32 = obj.numbers[x_157];
+    x_92 = x_159;
+    let x_160 : i32 = x_105;
+    x_93 = (x_160 - 1);
+    let x_162 : i32 = x_105;
+    x_94 = x_162;
+    loop {
+      let x_167 : i32 = x_94;
+      let x_168 : i32 = x_106;
+      if ((x_167 <= (x_168 - 1))) {
+      } else {
+        break;
+      }
+      let x_172 : i32 = x_94;
+      let x_174 : i32 = obj.numbers[x_172];
+      let x_175 : i32 = x_92;
+      if ((x_174 <= x_175)) {
+        let x_179 : i32 = x_93;
+        x_93 = (x_179 + 1);
+        let x_181 : i32 = x_93;
+        x_95 = x_181;
+        let x_182 : i32 = x_94;
+        x_96 = x_182;
+        let x_183 : i32 = x_95;
+        let x_185 : i32 = obj.numbers[x_183];
+        x_91 = x_185;
+        let x_186 : i32 = x_95;
+        let x_187 : i32 = x_96;
+        let x_189 : i32 = obj.numbers[x_187];
+        obj.numbers[x_186] = x_189;
+        let x_191 : i32 = x_96;
+        let x_192 : i32 = x_91;
+        obj.numbers[x_191] = x_192;
+      }
+
+      continuing {
+        let x_194 : i32 = x_94;
+        x_94 = (x_194 + 1);
+      }
+    }
+    let x_196 : i32 = x_93;
+    x_97 = (x_196 + 1);
+    let x_198 : i32 = x_106;
+    x_98 = x_198;
+    let x_199 : i32 = x_97;
+    let x_201 : i32 = obj.numbers[x_199];
+    x_90 = x_201;
+    let x_202 : i32 = x_97;
+    let x_203 : i32 = x_98;
+    let x_205 : i32 = obj.numbers[x_203];
+    obj.numbers[x_202] = x_205;
+    let x_207 : i32 = x_98;
+    let x_208 : i32 = x_90;
+    obj.numbers[x_207] = x_208;
+    let x_210 : i32 = x_93;
+    x_99 = (x_210 + 1);
+    let x_212 : i32 = x_99;
+    x_104 = x_212;
+    let x_213 : i32 = x_104;
+    let x_215 : i32 = x_100;
+    if (((x_213 - 1) > x_215)) {
+      let x_219 : i32 = x_102;
+      let x_220 : i32 = (x_219 + 1);
+      x_102 = x_220;
+      let x_221 : i32 = x_100;
+      x_103[x_220] = x_221;
+      let x_223 : i32 = x_102;
+      let x_224 : i32 = (x_223 + 1);
+      x_102 = x_224;
+      let x_225 : i32 = x_104;
+      x_103[x_224] = (x_225 - 1);
+    }
+    let x_228 : i32 = x_104;
+    let x_230 : i32 = x_101;
+    if (((x_228 + 1) < x_230)) {
+      let x_234 : i32 = x_102;
+      let x_235 : i32 = (x_234 + 1);
+      x_102 = x_235;
+      let x_236 : i32 = x_104;
+      x_103[x_235] = (x_236 + 1);
+      let x_239 : i32 = x_102;
+      let x_240 : i32 = (x_239 + 1);
+      x_102 = x_240;
+      let x_241 : i32 = x_101;
+      x_103[x_240] = x_241;
+    }
+  }
+  let x_243 : vec4<f32> = x_GLF_FragCoord;
+  let x_246 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_243.x, x_243.y) / x_246);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_249 : i32 = obj.numbers[0];
+  let x_252 : f32 = color.x;
+  color.x = (x_252 + f32(x_249));
+  let x_256 : f32 = uv.x;
+  if ((x_256 > 0.25)) {
+    let x_261 : i32 = obj.numbers[1];
+    let x_264 : f32 = color.x;
+    color.x = (x_264 + f32(x_261));
+  }
+  let x_268 : f32 = uv.x;
+  if ((x_268 > 0.5)) {
+    let x_273 : i32 = obj.numbers[2];
+    let x_276 : f32 = color.y;
+    color.y = (x_276 + f32(x_273));
+  }
+  let x_280 : f32 = uv.x;
+  if ((x_280 > 0.75)) {
+    let x_285 : i32 = obj.numbers[3];
+    let x_288 : f32 = color.z;
+    color.z = (x_288 + f32(x_285));
+  }
+  let x_292 : i32 = obj.numbers[4];
+  let x_295 : f32 = color.y;
+  color.y = (x_295 + f32(x_292));
+  let x_299 : f32 = uv.y;
+  if ((x_299 > 0.25)) {
+    let x_304 : i32 = obj.numbers[5];
+    let x_307 : f32 = color.x;
+    color.x = (x_307 + f32(x_304));
+  }
+  let x_311 : f32 = uv.y;
+  if ((x_311 > 0.5)) {
+    let x_316 : i32 = obj.numbers[6];
+    let x_319 : f32 = color.y;
+    color.y = (x_319 + f32(x_316));
+  }
+  let x_323 : f32 = uv.y;
+  if ((x_323 > 0.75)) {
+    let x_328 : i32 = obj.numbers[7];
+    let x_331 : f32 = color.z;
+    color.z = (x_331 + f32(x_328));
+  }
+  let x_335 : i32 = obj.numbers[8];
+  let x_338 : f32 = color.z;
+  color.z = (x_338 + f32(x_335));
+  let x_342 : f32 = uv.x;
+  let x_344 : f32 = uv.y;
+  if ((abs((x_342 - x_344)) < 0.25)) {
+    let x_351 : i32 = obj.numbers[9];
+    let x_354 : f32 = color.x;
+    color.x = (x_354 + f32(x_351));
+  }
+  let x_357 : vec3<f32> = color;
+  let x_358 : vec3<f32> = normalize(x_357);
+  frag_color = vec4<f32>(x_358.x, x_358.y, x_358.z, 1.0);
+  let x_363 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_363;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_366 : i32 = *(i);
+  let x_368 : i32 = obj.numbers[x_366];
+  temp = x_368;
+  let x_369 : i32 = *(i);
+  let x_370 : i32 = *(j);
+  let x_372 : i32 = obj.numbers[x_370];
+  obj.numbers[x_369] = x_372;
+  let x_374 : i32 = *(j);
+  let x_375 : i32 = temp;
+  obj.numbers[x_374] = x_375;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_378 : i32 = *(h);
+  let x_380 : i32 = obj.numbers[x_378];
+  pivot = x_380;
+  let x_381 : i32 = *(l);
+  i_1 = (x_381 - 1);
+  let x_383 : i32 = *(l);
+  j_1 = x_383;
+  loop {
+    let x_388 : i32 = j_1;
+    let x_389 : i32 = *(h);
+    if ((x_388 <= (x_389 - 1))) {
+    } else {
+      break;
+    }
+    let x_393 : i32 = j_1;
+    let x_395 : i32 = obj.numbers[x_393];
+    let x_396 : i32 = pivot;
+    if ((x_395 <= x_396)) {
+      let x_400 : i32 = i_1;
+      i_1 = (x_400 + 1);
+      let x_402 : i32 = i_1;
+      param = x_402;
+      let x_403 : i32 = j_1;
+      param_1 = x_403;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_405 : i32 = j_1;
+      j_1 = (x_405 + 1);
+    }
+  }
+  let x_407 : i32 = i_1;
+  param_2 = (x_407 + 1);
+  let x_409 : i32 = *(h);
+  param_3 = x_409;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_411 : i32 = i_1;
+  return (x_411 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_414 : i32 = top;
+  let x_415 : i32 = (x_414 + 1);
+  top = x_415;
+  let x_416 : i32 = l_1;
+  stack[x_415] = x_416;
+  let x_418 : i32 = top;
+  let x_419 : i32 = (x_418 + 1);
+  top = x_419;
+  let x_420 : i32 = h_1;
+  stack[x_419] = x_420;
+  loop {
+    let x_426 : i32 = top;
+    if ((x_426 >= 0)) {
+    } else {
+      break;
+    }
+    let x_429 : i32 = top;
+    top = (x_429 - 1);
+    let x_432 : i32 = stack[x_429];
+    h_1 = x_432;
+    let x_433 : i32 = top;
+    top = (x_433 - 1);
+    let x_436 : i32 = stack[x_433];
+    l_1 = x_436;
+    let x_437 : i32 = l_1;
+    param_4 = x_437;
+    let x_438 : i32 = h_1;
+    param_5 = x_438;
+    let x_439 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_439;
+    let x_440 : i32 = p;
+    let x_442 : i32 = l_1;
+    if (((x_440 - 1) > x_442)) {
+      let x_446 : i32 = top;
+      let x_447 : i32 = (x_446 + 1);
+      top = x_447;
+      let x_448 : i32 = l_1;
+      stack[x_447] = x_448;
+      let x_450 : i32 = top;
+      let x_451 : i32 = (x_450 + 1);
+      top = x_451;
+      let x_452 : i32 = p;
+      stack[x_451] = (x_452 - 1);
+    }
+    let x_455 : i32 = p;
+    let x_457 : i32 = h_1;
+    if (((x_455 + 1) < x_457)) {
+      let x_461 : i32 = top;
+      let x_462 : i32 = (x_461 + 1);
+      top = x_462;
+      let x_463 : i32 = p;
+      stack[x_462] = (x_463 + 1);
+      let x_466 : i32 = top;
+      let x_467 : i32 = (x_466 + 1);
+      top = x_467;
+      let x_468 : i32 = h_1;
+      stack[x_467] = x_468;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..99862c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.hlsl
@@ -0,0 +1,306 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int x_95 = 0;
+  int x_96 = 0;
+  int x_97 = 0;
+  int x_98 = 0;
+  int x_99 = 0;
+  int x_100 = 0;
+  int x_101 = 0;
+  int x_102 = 0;
+  int x_103[10] = (int[10])0;
+  int x_104 = 0;
+  int x_105 = 0;
+  int x_106 = 0;
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_121 = i_2;
+      const int x_124 = obj.numbers[i_2];
+      const int x_127 = obj.numbers[i_2];
+      obj.numbers[x_121] = (x_124 * x_127);
+    }
+  }
+  x_100 = 0;
+  x_101 = 9;
+  x_102 = -1;
+  const int x_133 = (x_102 + 1);
+  x_102 = x_133;
+  x_103[x_133] = x_100;
+  const int x_137 = (x_102 + 1);
+  x_102 = x_137;
+  x_103[x_137] = x_101;
+  while (true) {
+    if ((x_102 >= 0)) {
+    } else {
+      break;
+    }
+    const int x_147 = x_102;
+    x_102 = (x_147 - 1);
+    const int x_150 = x_103[x_147];
+    x_101 = x_150;
+    const int x_151 = x_102;
+    x_102 = (x_151 - 1);
+    const int x_154 = x_103[x_151];
+    x_100 = x_154;
+    x_105 = x_100;
+    x_106 = x_101;
+    const int x_159 = obj.numbers[x_106];
+    x_92 = x_159;
+    x_93 = (x_105 - 1);
+    x_94 = x_105;
+    {
+      for(; (x_94 <= (x_106 - 1)); x_94 = (x_94 + 1)) {
+        const int x_174 = obj.numbers[x_94];
+        if ((x_174 <= x_92)) {
+          x_93 = (x_93 + 1);
+          x_95 = x_93;
+          x_96 = x_94;
+          const int x_185 = obj.numbers[x_95];
+          x_91 = x_185;
+          const int x_186 = x_95;
+          const int x_189 = obj.numbers[x_96];
+          obj.numbers[x_186] = x_189;
+          obj.numbers[x_96] = x_91;
+        }
+      }
+    }
+    x_97 = (x_93 + 1);
+    x_98 = x_106;
+    const int x_201 = obj.numbers[x_97];
+    x_90 = x_201;
+    const int x_202 = x_97;
+    const int x_205 = obj.numbers[x_98];
+    obj.numbers[x_202] = x_205;
+    obj.numbers[x_98] = x_90;
+    x_99 = (x_93 + 1);
+    x_104 = x_99;
+    if (((x_104 - 1) > x_100)) {
+      const int x_220 = (x_102 + 1);
+      x_102 = x_220;
+      x_103[x_220] = x_100;
+      const int x_224 = (x_102 + 1);
+      x_102 = x_224;
+      x_103[x_224] = (x_104 - 1);
+    }
+    if (((x_104 + 1) < x_101)) {
+      const int x_235 = (x_102 + 1);
+      x_102 = x_235;
+      x_103[x_235] = (x_104 + 1);
+      const int x_240 = (x_102 + 1);
+      x_102 = x_240;
+      x_103[x_240] = x_101;
+    }
+  }
+  const float4 x_243 = x_GLF_FragCoord;
+  const float2 x_246 = asfloat(x_34[0].xy);
+  uv = (float2(x_243.x, x_243.y) / x_246);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_249 = obj.numbers[0];
+  const float x_252 = color.x;
+  color.x = (x_252 + float(x_249));
+  const float x_256 = uv.x;
+  if ((x_256 > 0.25f)) {
+    const int x_261 = obj.numbers[1];
+    const float x_264 = color.x;
+    color.x = (x_264 + float(x_261));
+  }
+  const float x_268 = uv.x;
+  if ((x_268 > 0.5f)) {
+    const int x_273 = obj.numbers[2];
+    const float x_276 = color.y;
+    color.y = (x_276 + float(x_273));
+  }
+  const float x_280 = uv.x;
+  if ((x_280 > 0.75f)) {
+    const int x_285 = obj.numbers[3];
+    const float x_288 = color.z;
+    color.z = (x_288 + float(x_285));
+  }
+  const int x_292 = obj.numbers[4];
+  const float x_295 = color.y;
+  color.y = (x_295 + float(x_292));
+  const float x_299 = uv.y;
+  if ((x_299 > 0.25f)) {
+    const int x_304 = obj.numbers[5];
+    const float x_307 = color.x;
+    color.x = (x_307 + float(x_304));
+  }
+  const float x_311 = uv.y;
+  if ((x_311 > 0.5f)) {
+    const int x_316 = obj.numbers[6];
+    const float x_319 = color.y;
+    color.y = (x_319 + float(x_316));
+  }
+  const float x_323 = uv.y;
+  if ((x_323 > 0.75f)) {
+    const int x_328 = obj.numbers[7];
+    const float x_331 = color.z;
+    color.z = (x_331 + float(x_328));
+  }
+  const int x_335 = obj.numbers[8];
+  const float x_338 = color.z;
+  color.z = (x_338 + float(x_335));
+  const float x_342 = uv.x;
+  const float x_344 = uv.y;
+  if ((abs((x_342 - x_344)) < 0.25f)) {
+    const int x_351 = obj.numbers[9];
+    const float x_354 = color.x;
+    color.x = (x_354 + float(x_351));
+  }
+  const float3 x_358 = normalize(color);
+  frag_color = float4(x_358.x, x_358.y, x_358.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_5;
+}
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_366 = i;
+  const int x_368 = obj.numbers[x_366];
+  temp = x_368;
+  const int x_369 = i;
+  const int x_370 = j;
+  const int x_372 = obj.numbers[x_370];
+  obj.numbers[x_369] = x_372;
+  const int x_374 = j;
+  obj.numbers[x_374] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_378 = h;
+  const int x_380 = obj.numbers[x_378];
+  pivot = x_380;
+  const int x_381 = l;
+  i_1 = (x_381 - 1);
+  const int x_383 = l;
+  j_1 = x_383;
+  while (true) {
+    const int x_388 = j_1;
+    const int x_389 = h;
+    if ((x_388 <= (x_389 - 1))) {
+    } else {
+      break;
+    }
+    const int x_395 = obj.numbers[j_1];
+    if ((x_395 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_409 = h;
+  param_3 = x_409;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_415 = (top + 1);
+  top = x_415;
+  stack[x_415] = l_1;
+  const int x_419 = (top + 1);
+  top = x_419;
+  stack[x_419] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_429 = top;
+    top = (x_429 - 1);
+    const int x_432 = stack[x_429];
+    h_1 = x_432;
+    const int x_433 = top;
+    top = (x_433 - 1);
+    const int x_436 = stack[x_433];
+    l_1 = x_436;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_439 = performPartition_i1_i1_(param_4, param_5);
+    p = x_439;
+    if (((p - 1) > l_1)) {
+      const int x_447 = (top + 1);
+      top = x_447;
+      stack[x_447] = l_1;
+      const int x_451 = (top + 1);
+      top = x_451;
+      stack[x_451] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_462 = (top + 1);
+      top = x_462;
+      stack[x_462] = (p + 1);
+      const int x_467 = (top + 1);
+      top = x_467;
+      stack[x_467] = h_1;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.msl
new file mode 100644
index 0000000..45ba09a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.msl
@@ -0,0 +1,400 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(constant buf0& x_34, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7, thread QuicksortObject* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10) {
+  int x_90 = 0;
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94 = 0;
+  int x_95 = 0;
+  int x_96 = 0;
+  int x_97 = 0;
+  int x_98 = 0;
+  int x_99 = 0;
+  int x_100 = 0;
+  int x_101 = 0;
+  int x_102 = 0;
+  tint_array_wrapper x_103 = {};
+  int x_104 = 0;
+  int x_105 = 0;
+  int x_106 = 0;
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_107 = *(tint_symbol_6);
+  *(tint_symbol_7) = ((x_107 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_114 = i_2;
+    if ((x_114 < 10)) {
+    } else {
+      break;
+    }
+    int const x_117 = i_2;
+    int const x_118 = i_2;
+    (*(tint_symbol_8)).numbers.arr[x_117] = (10 - x_118);
+    int const x_121 = i_2;
+    int const x_122 = i_2;
+    int const x_124 = (*(tint_symbol_8)).numbers.arr[x_122];
+    int const x_125 = i_2;
+    int const x_127 = (*(tint_symbol_8)).numbers.arr[x_125];
+    (*(tint_symbol_8)).numbers.arr[x_121] = (x_124 * x_127);
+    {
+      int const x_130 = i_2;
+      i_2 = (x_130 + 1);
+    }
+  }
+  x_100 = 0;
+  x_101 = 9;
+  x_102 = -1;
+  int const x_132 = x_102;
+  int const x_133 = (x_132 + 1);
+  x_102 = x_133;
+  int const x_134 = x_100;
+  x_103.arr[x_133] = x_134;
+  int const x_136 = x_102;
+  int const x_137 = (x_136 + 1);
+  x_102 = x_137;
+  int const x_138 = x_101;
+  x_103.arr[x_137] = x_138;
+  while (true) {
+    int const x_144 = x_102;
+    if ((x_144 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_147 = x_102;
+    x_102 = (x_147 - 1);
+    int const x_150 = x_103.arr[x_147];
+    x_101 = x_150;
+    int const x_151 = x_102;
+    x_102 = (x_151 - 1);
+    int const x_154 = x_103.arr[x_151];
+    x_100 = x_154;
+    int const x_155 = x_100;
+    x_105 = x_155;
+    int const x_156 = x_101;
+    x_106 = x_156;
+    int const x_157 = x_106;
+    int const x_159 = (*(tint_symbol_8)).numbers.arr[x_157];
+    x_92 = x_159;
+    int const x_160 = x_105;
+    x_93 = (x_160 - 1);
+    int const x_162 = x_105;
+    x_94 = x_162;
+    while (true) {
+      int const x_167 = x_94;
+      int const x_168 = x_106;
+      if ((x_167 <= (x_168 - 1))) {
+      } else {
+        break;
+      }
+      int const x_172 = x_94;
+      int const x_174 = (*(tint_symbol_8)).numbers.arr[x_172];
+      int const x_175 = x_92;
+      if ((x_174 <= x_175)) {
+        int const x_179 = x_93;
+        x_93 = (x_179 + 1);
+        int const x_181 = x_93;
+        x_95 = x_181;
+        int const x_182 = x_94;
+        x_96 = x_182;
+        int const x_183 = x_95;
+        int const x_185 = (*(tint_symbol_8)).numbers.arr[x_183];
+        x_91 = x_185;
+        int const x_186 = x_95;
+        int const x_187 = x_96;
+        int const x_189 = (*(tint_symbol_8)).numbers.arr[x_187];
+        (*(tint_symbol_8)).numbers.arr[x_186] = x_189;
+        int const x_191 = x_96;
+        int const x_192 = x_91;
+        (*(tint_symbol_8)).numbers.arr[x_191] = x_192;
+      }
+      {
+        int const x_194 = x_94;
+        x_94 = (x_194 + 1);
+      }
+    }
+    int const x_196 = x_93;
+    x_97 = (x_196 + 1);
+    int const x_198 = x_106;
+    x_98 = x_198;
+    int const x_199 = x_97;
+    int const x_201 = (*(tint_symbol_8)).numbers.arr[x_199];
+    x_90 = x_201;
+    int const x_202 = x_97;
+    int const x_203 = x_98;
+    int const x_205 = (*(tint_symbol_8)).numbers.arr[x_203];
+    (*(tint_symbol_8)).numbers.arr[x_202] = x_205;
+    int const x_207 = x_98;
+    int const x_208 = x_90;
+    (*(tint_symbol_8)).numbers.arr[x_207] = x_208;
+    int const x_210 = x_93;
+    x_99 = (x_210 + 1);
+    int const x_212 = x_99;
+    x_104 = x_212;
+    int const x_213 = x_104;
+    int const x_215 = x_100;
+    if (((x_213 - 1) > x_215)) {
+      int const x_219 = x_102;
+      int const x_220 = (x_219 + 1);
+      x_102 = x_220;
+      int const x_221 = x_100;
+      x_103.arr[x_220] = x_221;
+      int const x_223 = x_102;
+      int const x_224 = (x_223 + 1);
+      x_102 = x_224;
+      int const x_225 = x_104;
+      x_103.arr[x_224] = (x_225 - 1);
+    }
+    int const x_228 = x_104;
+    int const x_230 = x_101;
+    if (((x_228 + 1) < x_230)) {
+      int const x_234 = x_102;
+      int const x_235 = (x_234 + 1);
+      x_102 = x_235;
+      int const x_236 = x_104;
+      x_103.arr[x_235] = (x_236 + 1);
+      int const x_239 = x_102;
+      int const x_240 = (x_239 + 1);
+      x_102 = x_240;
+      int const x_241 = x_101;
+      x_103.arr[x_240] = x_241;
+    }
+  }
+  float4 const x_243 = *(tint_symbol_7);
+  float2 const x_246 = x_34.resolution;
+  uv = (float2(x_243.x, x_243.y) / x_246);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_249 = (*(tint_symbol_8)).numbers.arr[0];
+  float const x_252 = color.x;
+  color.x = (x_252 + float(x_249));
+  float const x_256 = uv.x;
+  if ((x_256 > 0.25f)) {
+    int const x_261 = (*(tint_symbol_8)).numbers.arr[1];
+    float const x_264 = color.x;
+    color.x = (x_264 + float(x_261));
+  }
+  float const x_268 = uv.x;
+  if ((x_268 > 0.5f)) {
+    int const x_273 = (*(tint_symbol_8)).numbers.arr[2];
+    float const x_276 = color.y;
+    color.y = (x_276 + float(x_273));
+  }
+  float const x_280 = uv.x;
+  if ((x_280 > 0.75f)) {
+    int const x_285 = (*(tint_symbol_8)).numbers.arr[3];
+    float const x_288 = color.z;
+    color.z = (x_288 + float(x_285));
+  }
+  int const x_292 = (*(tint_symbol_8)).numbers.arr[4];
+  float const x_295 = color.y;
+  color.y = (x_295 + float(x_292));
+  float const x_299 = uv.y;
+  if ((x_299 > 0.25f)) {
+    int const x_304 = (*(tint_symbol_8)).numbers.arr[5];
+    float const x_307 = color.x;
+    color.x = (x_307 + float(x_304));
+  }
+  float const x_311 = uv.y;
+  if ((x_311 > 0.5f)) {
+    int const x_316 = (*(tint_symbol_8)).numbers.arr[6];
+    float const x_319 = color.y;
+    color.y = (x_319 + float(x_316));
+  }
+  float const x_323 = uv.y;
+  if ((x_323 > 0.75f)) {
+    int const x_328 = (*(tint_symbol_8)).numbers.arr[7];
+    float const x_331 = color.z;
+    color.z = (x_331 + float(x_328));
+  }
+  int const x_335 = (*(tint_symbol_8)).numbers.arr[8];
+  float const x_338 = color.z;
+  color.z = (x_338 + float(x_335));
+  float const x_342 = uv.x;
+  float const x_344 = uv.y;
+  if ((fabs((x_342 - x_344)) < 0.25f)) {
+    int const x_351 = (*(tint_symbol_8)).numbers.arr[9];
+    float const x_354 = color.x;
+    color.x = (x_354 + float(x_351));
+  }
+  float3 const x_357 = color;
+  float3 const x_358 = normalize(x_357);
+  *(tint_symbol_9) = float4(x_358.x, x_358.y, x_358.z, 1.0f);
+  float4 const x_363 = *(tint_symbol_6);
+  *(tint_symbol_10) = x_363;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_11 = 0.0f;
+  thread float4 tint_symbol_12 = 0.0f;
+  thread QuicksortObject tint_symbol_13 = {};
+  thread float4 tint_symbol_14 = 0.0f;
+  thread float4 tint_symbol_15 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_11 = x_GLF_pos_param;
+  main_1(x_34, &(tint_symbol_11), &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_14), &(tint_symbol_15));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_14, .gl_Position=tint_symbol_15};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_16) {
+  int temp = 0;
+  int const x_366 = *(i);
+  int const x_368 = (*(tint_symbol_16)).numbers.arr[x_366];
+  temp = x_368;
+  int const x_369 = *(i);
+  int const x_370 = *(j);
+  int const x_372 = (*(tint_symbol_16)).numbers.arr[x_370];
+  (*(tint_symbol_16)).numbers.arr[x_369] = x_372;
+  int const x_374 = *(j);
+  int const x_375 = temp;
+  (*(tint_symbol_16)).numbers.arr[x_374] = x_375;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_17) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_378 = *(h);
+  int const x_380 = (*(tint_symbol_17)).numbers.arr[x_378];
+  pivot = x_380;
+  int const x_381 = *(l);
+  i_1 = (x_381 - 1);
+  int const x_383 = *(l);
+  j_1 = x_383;
+  while (true) {
+    int const x_388 = j_1;
+    int const x_389 = *(h);
+    if ((x_388 <= (x_389 - 1))) {
+    } else {
+      break;
+    }
+    int const x_393 = j_1;
+    int const x_395 = (*(tint_symbol_17)).numbers.arr[x_393];
+    int const x_396 = pivot;
+    if ((x_395 <= x_396)) {
+      int const x_400 = i_1;
+      i_1 = (x_400 + 1);
+      int const x_402 = i_1;
+      param = x_402;
+      int const x_403 = j_1;
+      param_1 = x_403;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_17);
+    }
+    {
+      int const x_405 = j_1;
+      j_1 = (x_405 + 1);
+    }
+  }
+  int const x_407 = i_1;
+  param_2 = (x_407 + 1);
+  int const x_409 = *(h);
+  param_3 = x_409;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_17);
+  int const x_411 = i_1;
+  return (x_411 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_18) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_414 = top;
+  int const x_415 = (x_414 + 1);
+  top = x_415;
+  int const x_416 = l_1;
+  stack.arr[x_415] = x_416;
+  int const x_418 = top;
+  int const x_419 = (x_418 + 1);
+  top = x_419;
+  int const x_420 = h_1;
+  stack.arr[x_419] = x_420;
+  while (true) {
+    int const x_426 = top;
+    if ((x_426 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_429 = top;
+    top = (x_429 - 1);
+    int const x_432 = stack.arr[x_429];
+    h_1 = x_432;
+    int const x_433 = top;
+    top = (x_433 - 1);
+    int const x_436 = stack.arr[x_433];
+    l_1 = x_436;
+    int const x_437 = l_1;
+    param_4 = x_437;
+    int const x_438 = h_1;
+    param_5 = x_438;
+    int const x_439 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_18);
+    p = x_439;
+    int const x_440 = p;
+    int const x_442 = l_1;
+    if (((x_440 - 1) > x_442)) {
+      int const x_446 = top;
+      int const x_447 = (x_446 + 1);
+      top = x_447;
+      int const x_448 = l_1;
+      stack.arr[x_447] = x_448;
+      int const x_450 = top;
+      int const x_451 = (x_450 + 1);
+      top = x_451;
+      int const x_452 = p;
+      stack.arr[x_451] = (x_452 - 1);
+    }
+    int const x_455 = p;
+    int const x_457 = h_1;
+    if (((x_455 + 1) < x_457)) {
+      int const x_461 = top;
+      int const x_462 = (x_461 + 1);
+      top = x_462;
+      int const x_463 = p;
+      stack.arr[x_462] = (x_463 + 1);
+      int const x_466 = top;
+      int const x_467 = (x_466 + 1);
+      top = x_467;
+      int const x_468 = h_1;
+      stack.arr[x_467] = x_468;
+    }
+  }
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..6f5c5f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.spvasm
@@ -0,0 +1,780 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 521
+; Schema: 0
+               OpCapability Shader
+        %339 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %x_90 "x_90"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %x_95 "x_95"
+               OpName %x_96 "x_96"
+               OpName %x_97 "x_97"
+               OpName %x_98 "x_98"
+               OpName %x_99 "x_99"
+               OpName %x_100 "x_100"
+               OpName %x_101 "x_101"
+               OpName %x_102 "x_102"
+               OpName %x_103 "x_103"
+               OpName %x_104 "x_104"
+               OpName %x_105 "x_105"
+               OpName %x_106 "x_106"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %29 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %35 = OpConstantNull %int
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+         %50 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %57 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %61 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %65 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+         %68 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+     %int_10 = OpConstant %int 10
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %227 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %358 = OpTypeFunction %void %main_out
+        %373 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+        %394 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+     %main_1 = OpFunction %void None %29
+         %32 = OpLabel
+       %x_90 = OpVariable %_ptr_Function_int Function %35
+       %x_91 = OpVariable %_ptr_Function_int Function %35
+       %x_92 = OpVariable %_ptr_Function_int Function %35
+       %x_93 = OpVariable %_ptr_Function_int Function %35
+       %x_94 = OpVariable %_ptr_Function_int Function %35
+       %x_95 = OpVariable %_ptr_Function_int Function %35
+       %x_96 = OpVariable %_ptr_Function_int Function %35
+       %x_97 = OpVariable %_ptr_Function_int Function %35
+       %x_98 = OpVariable %_ptr_Function_int Function %35
+       %x_99 = OpVariable %_ptr_Function_int Function %35
+      %x_100 = OpVariable %_ptr_Function_int Function %35
+      %x_101 = OpVariable %_ptr_Function_int Function %35
+      %x_102 = OpVariable %_ptr_Function_int Function %35
+      %x_103 = OpVariable %_ptr_Function__arr_int_uint_10 Function %50
+      %x_104 = OpVariable %_ptr_Function_int Function %35
+      %x_105 = OpVariable %_ptr_Function_int Function %35
+      %x_106 = OpVariable %_ptr_Function_int Function %35
+        %i_2 = OpVariable %_ptr_Function_int Function %35
+         %uv = OpVariable %_ptr_Function_v2float Function %57
+      %color = OpVariable %_ptr_Function_v3float Function %61
+         %62 = OpLoad %v4float %x_GLF_pos
+         %66 = OpFAdd %v4float %62 %65
+         %69 = OpFMul %v4float %66 %68
+               OpStore %x_GLF_FragCoord %69
+               OpStore %i_2 %int_0
+               OpBranch %71
+         %71 = OpLabel
+               OpLoopMerge %72 %73 None
+               OpBranch %74
+         %74 = OpLabel
+         %75 = OpLoad %int %i_2
+         %77 = OpSLessThan %bool %75 %int_10
+               OpSelectionMerge %79 None
+               OpBranchConditional %77 %80 %81
+         %80 = OpLabel
+               OpBranch %79
+         %81 = OpLabel
+               OpBranch %72
+         %79 = OpLabel
+         %82 = OpLoad %int %i_2
+         %83 = OpLoad %int %i_2
+         %86 = OpAccessChain %_ptr_Private_int %obj %uint_0 %82
+         %87 = OpISub %int %int_10 %83
+               OpStore %86 %87
+         %88 = OpLoad %int %i_2
+         %89 = OpLoad %int %i_2
+         %90 = OpAccessChain %_ptr_Private_int %obj %uint_0 %89
+         %91 = OpLoad %int %90
+         %92 = OpLoad %int %i_2
+         %93 = OpAccessChain %_ptr_Private_int %obj %uint_0 %92
+         %94 = OpLoad %int %93
+         %95 = OpAccessChain %_ptr_Private_int %obj %uint_0 %88
+         %96 = OpIMul %int %91 %94
+               OpStore %95 %96
+               OpBranch %73
+         %73 = OpLabel
+         %97 = OpLoad %int %i_2
+         %99 = OpIAdd %int %97 %int_1
+               OpStore %i_2 %99
+               OpBranch %71
+         %72 = OpLabel
+               OpStore %x_100 %int_0
+               OpStore %x_101 %int_9
+               OpStore %x_102 %int_n1
+        %102 = OpLoad %int %x_102
+        %103 = OpIAdd %int %102 %int_1
+               OpStore %x_102 %103
+        %104 = OpLoad %int %x_100
+        %105 = OpAccessChain %_ptr_Function_int %x_103 %103
+               OpStore %105 %104
+        %106 = OpLoad %int %x_102
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %x_102 %107
+        %108 = OpLoad %int %x_101
+        %109 = OpAccessChain %_ptr_Function_int %x_103 %107
+               OpStore %109 %108
+               OpBranch %110
+        %110 = OpLabel
+               OpLoopMerge %111 %112 None
+               OpBranch %113
+        %113 = OpLabel
+        %114 = OpLoad %int %x_102
+        %115 = OpSGreaterThanEqual %bool %114 %int_0
+               OpSelectionMerge %116 None
+               OpBranchConditional %115 %117 %118
+        %117 = OpLabel
+               OpBranch %116
+        %118 = OpLabel
+               OpBranch %111
+        %116 = OpLabel
+        %119 = OpLoad %int %x_102
+        %120 = OpISub %int %119 %int_1
+               OpStore %x_102 %120
+        %121 = OpAccessChain %_ptr_Function_int %x_103 %119
+        %122 = OpLoad %int %121
+               OpStore %x_101 %122
+        %123 = OpLoad %int %x_102
+        %124 = OpISub %int %123 %int_1
+               OpStore %x_102 %124
+        %125 = OpAccessChain %_ptr_Function_int %x_103 %123
+        %126 = OpLoad %int %125
+               OpStore %x_100 %126
+        %127 = OpLoad %int %x_100
+               OpStore %x_105 %127
+        %128 = OpLoad %int %x_101
+               OpStore %x_106 %128
+        %129 = OpLoad %int %x_106
+        %130 = OpAccessChain %_ptr_Private_int %obj %uint_0 %129
+        %131 = OpLoad %int %130
+               OpStore %x_92 %131
+        %132 = OpLoad %int %x_105
+        %133 = OpISub %int %132 %int_1
+               OpStore %x_93 %133
+        %134 = OpLoad %int %x_105
+               OpStore %x_94 %134
+               OpBranch %135
+        %135 = OpLabel
+               OpLoopMerge %136 %137 None
+               OpBranch %138
+        %138 = OpLabel
+        %139 = OpLoad %int %x_94
+        %140 = OpLoad %int %x_106
+        %141 = OpISub %int %140 %int_1
+        %142 = OpSLessThanEqual %bool %139 %141
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %145
+        %144 = OpLabel
+               OpBranch %143
+        %145 = OpLabel
+               OpBranch %136
+        %143 = OpLabel
+        %146 = OpLoad %int %x_94
+        %147 = OpAccessChain %_ptr_Private_int %obj %uint_0 %146
+        %148 = OpLoad %int %147
+        %149 = OpLoad %int %x_92
+        %150 = OpSLessThanEqual %bool %148 %149
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %151
+        %152 = OpLabel
+        %153 = OpLoad %int %x_93
+        %154 = OpIAdd %int %153 %int_1
+               OpStore %x_93 %154
+        %155 = OpLoad %int %x_93
+               OpStore %x_95 %155
+        %156 = OpLoad %int %x_94
+               OpStore %x_96 %156
+        %157 = OpLoad %int %x_95
+        %158 = OpAccessChain %_ptr_Private_int %obj %uint_0 %157
+        %159 = OpLoad %int %158
+               OpStore %x_91 %159
+        %160 = OpLoad %int %x_95
+        %161 = OpLoad %int %x_96
+        %162 = OpAccessChain %_ptr_Private_int %obj %uint_0 %161
+        %163 = OpLoad %int %162
+        %164 = OpAccessChain %_ptr_Private_int %obj %uint_0 %160
+               OpStore %164 %163
+        %165 = OpLoad %int %x_96
+        %166 = OpLoad %int %x_91
+        %167 = OpAccessChain %_ptr_Private_int %obj %uint_0 %165
+               OpStore %167 %166
+               OpBranch %151
+        %151 = OpLabel
+               OpBranch %137
+        %137 = OpLabel
+        %168 = OpLoad %int %x_94
+        %169 = OpIAdd %int %168 %int_1
+               OpStore %x_94 %169
+               OpBranch %135
+        %136 = OpLabel
+        %170 = OpLoad %int %x_93
+        %171 = OpIAdd %int %170 %int_1
+               OpStore %x_97 %171
+        %172 = OpLoad %int %x_106
+               OpStore %x_98 %172
+        %173 = OpLoad %int %x_97
+        %174 = OpAccessChain %_ptr_Private_int %obj %uint_0 %173
+        %175 = OpLoad %int %174
+               OpStore %x_90 %175
+        %176 = OpLoad %int %x_97
+        %177 = OpLoad %int %x_98
+        %178 = OpAccessChain %_ptr_Private_int %obj %uint_0 %177
+        %179 = OpLoad %int %178
+        %180 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176
+               OpStore %180 %179
+        %181 = OpLoad %int %x_98
+        %182 = OpLoad %int %x_90
+        %183 = OpAccessChain %_ptr_Private_int %obj %uint_0 %181
+               OpStore %183 %182
+        %184 = OpLoad %int %x_93
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %x_99 %185
+        %186 = OpLoad %int %x_99
+               OpStore %x_104 %186
+        %187 = OpLoad %int %x_104
+        %188 = OpLoad %int %x_100
+        %189 = OpISub %int %187 %int_1
+        %190 = OpSGreaterThan %bool %189 %188
+               OpSelectionMerge %191 None
+               OpBranchConditional %190 %192 %191
+        %192 = OpLabel
+        %193 = OpLoad %int %x_102
+        %194 = OpIAdd %int %193 %int_1
+               OpStore %x_102 %194
+        %195 = OpLoad %int %x_100
+        %196 = OpAccessChain %_ptr_Function_int %x_103 %194
+               OpStore %196 %195
+        %197 = OpLoad %int %x_102
+        %198 = OpIAdd %int %197 %int_1
+               OpStore %x_102 %198
+        %199 = OpLoad %int %x_104
+        %200 = OpAccessChain %_ptr_Function_int %x_103 %198
+        %201 = OpISub %int %199 %int_1
+               OpStore %200 %201
+               OpBranch %191
+        %191 = OpLabel
+        %202 = OpLoad %int %x_104
+        %203 = OpLoad %int %x_101
+        %204 = OpIAdd %int %202 %int_1
+        %205 = OpSLessThan %bool %204 %203
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %206
+        %207 = OpLabel
+        %208 = OpLoad %int %x_102
+        %209 = OpIAdd %int %208 %int_1
+               OpStore %x_102 %209
+        %210 = OpLoad %int %x_104
+        %211 = OpAccessChain %_ptr_Function_int %x_103 %209
+        %212 = OpIAdd %int %210 %int_1
+               OpStore %211 %212
+        %213 = OpLoad %int %x_102
+        %214 = OpIAdd %int %213 %int_1
+               OpStore %x_102 %214
+        %215 = OpLoad %int %x_101
+        %216 = OpAccessChain %_ptr_Function_int %x_103 %214
+               OpStore %216 %215
+               OpBranch %206
+        %206 = OpLabel
+               OpBranch %112
+        %112 = OpLabel
+               OpBranch %110
+        %111 = OpLabel
+        %217 = OpLoad %v4float %x_GLF_FragCoord
+        %219 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %220 = OpLoad %v2float %219
+        %221 = OpCompositeExtract %float %217 0
+        %222 = OpCompositeExtract %float %217 1
+        %223 = OpCompositeConstruct %v2float %221 %222
+        %224 = OpFDiv %v2float %223 %220
+               OpStore %uv %224
+               OpStore %color %227
+        %228 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %229 = OpLoad %int %228
+        %231 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %232 = OpLoad %float %231
+        %233 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %234 = OpConvertSToF %float %229
+        %235 = OpFAdd %float %232 %234
+               OpStore %233 %235
+        %236 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %237 = OpLoad %float %236
+        %239 = OpFOrdGreaterThan %bool %237 %float_0_25
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %240
+        %241 = OpLabel
+        %242 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %243 = OpLoad %int %242
+        %244 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %245 = OpLoad %float %244
+        %246 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %247 = OpConvertSToF %float %243
+        %248 = OpFAdd %float %245 %247
+               OpStore %246 %248
+               OpBranch %240
+        %240 = OpLabel
+        %249 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %250 = OpLoad %float %249
+        %252 = OpFOrdGreaterThan %bool %250 %float_0_5
+               OpSelectionMerge %253 None
+               OpBranchConditional %252 %254 %253
+        %254 = OpLabel
+        %256 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %257 = OpLoad %int %256
+        %259 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %260 = OpLoad %float %259
+        %261 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %262 = OpConvertSToF %float %257
+        %263 = OpFAdd %float %260 %262
+               OpStore %261 %263
+               OpBranch %253
+        %253 = OpLabel
+        %264 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %265 = OpLoad %float %264
+        %267 = OpFOrdGreaterThan %bool %265 %float_0_75
+               OpSelectionMerge %268 None
+               OpBranchConditional %267 %269 %268
+        %269 = OpLabel
+        %271 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %272 = OpLoad %int %271
+        %274 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %275 = OpLoad %float %274
+        %276 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %277 = OpConvertSToF %float %272
+        %278 = OpFAdd %float %275 %277
+               OpStore %276 %278
+               OpBranch %268
+        %268 = OpLabel
+        %280 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %281 = OpLoad %int %280
+        %282 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %283 = OpLoad %float %282
+        %284 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %285 = OpConvertSToF %float %281
+        %286 = OpFAdd %float %283 %285
+               OpStore %284 %286
+        %287 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %288 = OpLoad %float %287
+        %289 = OpFOrdGreaterThan %bool %288 %float_0_25
+               OpSelectionMerge %290 None
+               OpBranchConditional %289 %291 %290
+        %291 = OpLabel
+        %293 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %294 = OpLoad %int %293
+        %295 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %296 = OpLoad %float %295
+        %297 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %298 = OpConvertSToF %float %294
+        %299 = OpFAdd %float %296 %298
+               OpStore %297 %299
+               OpBranch %290
+        %290 = OpLabel
+        %300 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %301 = OpLoad %float %300
+        %302 = OpFOrdGreaterThan %bool %301 %float_0_5
+               OpSelectionMerge %303 None
+               OpBranchConditional %302 %304 %303
+        %304 = OpLabel
+        %306 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %307 = OpLoad %int %306
+        %308 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %309 = OpLoad %float %308
+        %310 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %311 = OpConvertSToF %float %307
+        %312 = OpFAdd %float %309 %311
+               OpStore %310 %312
+               OpBranch %303
+        %303 = OpLabel
+        %313 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %314 = OpLoad %float %313
+        %315 = OpFOrdGreaterThan %bool %314 %float_0_75
+               OpSelectionMerge %316 None
+               OpBranchConditional %315 %317 %316
+        %317 = OpLabel
+        %319 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %320 = OpLoad %int %319
+        %321 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %322 = OpLoad %float %321
+        %323 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %324 = OpConvertSToF %float %320
+        %325 = OpFAdd %float %322 %324
+               OpStore %323 %325
+               OpBranch %316
+        %316 = OpLabel
+        %327 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %328 = OpLoad %int %327
+        %329 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %330 = OpLoad %float %329
+        %331 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %332 = OpConvertSToF %float %328
+        %333 = OpFAdd %float %330 %332
+               OpStore %331 %333
+        %334 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %335 = OpLoad %float %334
+        %336 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %337 = OpLoad %float %336
+        %340 = OpFSub %float %335 %337
+        %338 = OpExtInst %float %339 FAbs %340
+        %341 = OpFOrdLessThan %bool %338 %float_0_25
+               OpSelectionMerge %342 None
+               OpBranchConditional %341 %343 %342
+        %343 = OpLabel
+        %344 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %345 = OpLoad %int %344
+        %346 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %347 = OpLoad %float %346
+        %348 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %349 = OpConvertSToF %float %345
+        %350 = OpFAdd %float %347 %349
+               OpStore %348 %350
+               OpBranch %342
+        %342 = OpLabel
+        %351 = OpLoad %v3float %color
+        %352 = OpExtInst %v3float %339 Normalize %351
+        %353 = OpCompositeExtract %float %352 0
+        %354 = OpCompositeExtract %float %352 1
+        %355 = OpCompositeExtract %float %352 2
+        %356 = OpCompositeConstruct %v4float %353 %354 %355 %float_1
+               OpStore %frag_color %356
+        %357 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %357
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %358
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %362 = OpLabel
+        %363 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %363
+        %364 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %364
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %29
+        %366 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %367 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %367
+        %368 = OpFunctionCall %void %main_1
+        %370 = OpLoad %v4float %frag_color
+        %371 = OpLoad %v4float %gl_Position
+        %372 = OpCompositeConstruct %main_out %370 %371
+        %369 = OpFunctionCall %void %tint_symbol_4 %372
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %373
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %377 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %35
+        %380 = OpLoad %int %i
+        %381 = OpAccessChain %_ptr_Private_int %obj %uint_0 %380
+        %382 = OpLoad %int %381
+               OpStore %temp %382
+        %384 = OpLoad %int %i
+        %386 = OpLoad %int %j
+        %387 = OpAccessChain %_ptr_Private_int %obj %uint_0 %386
+        %388 = OpLoad %int %387
+        %389 = OpAccessChain %_ptr_Private_int %obj %uint_0 %384
+               OpStore %389 %388
+        %391 = OpLoad %int %j
+        %392 = OpLoad %int %temp
+        %393 = OpAccessChain %_ptr_Private_int %obj %uint_0 %391
+               OpStore %393 %392
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %394
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %398 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %35
+        %i_1 = OpVariable %_ptr_Function_int Function %35
+        %j_1 = OpVariable %_ptr_Function_int Function %35
+      %param = OpVariable %_ptr_Function_int Function %35
+    %param_1 = OpVariable %_ptr_Function_int Function %35
+    %param_2 = OpVariable %_ptr_Function_int Function %35
+    %param_3 = OpVariable %_ptr_Function_int Function %35
+        %407 = OpLoad %int %h
+        %408 = OpAccessChain %_ptr_Private_int %obj %uint_0 %407
+        %409 = OpLoad %int %408
+               OpStore %pivot %409
+        %411 = OpLoad %int %l
+        %412 = OpISub %int %411 %int_1
+               OpStore %i_1 %412
+        %414 = OpLoad %int %l
+               OpStore %j_1 %414
+               OpBranch %415
+        %415 = OpLabel
+               OpLoopMerge %416 %417 None
+               OpBranch %418
+        %418 = OpLabel
+        %419 = OpLoad %int %j_1
+        %421 = OpLoad %int %h
+        %422 = OpISub %int %421 %int_1
+        %423 = OpSLessThanEqual %bool %419 %422
+               OpSelectionMerge %424 None
+               OpBranchConditional %423 %425 %426
+        %425 = OpLabel
+               OpBranch %424
+        %426 = OpLabel
+               OpBranch %416
+        %424 = OpLabel
+        %427 = OpLoad %int %j_1
+        %428 = OpAccessChain %_ptr_Private_int %obj %uint_0 %427
+        %429 = OpLoad %int %428
+        %430 = OpLoad %int %pivot
+        %431 = OpSLessThanEqual %bool %429 %430
+               OpSelectionMerge %432 None
+               OpBranchConditional %431 %433 %432
+        %433 = OpLabel
+        %434 = OpLoad %int %i_1
+        %435 = OpIAdd %int %434 %int_1
+               OpStore %i_1 %435
+        %436 = OpLoad %int %i_1
+               OpStore %param %436
+        %437 = OpLoad %int %j_1
+               OpStore %param_1 %437
+        %438 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %432
+        %432 = OpLabel
+               OpBranch %417
+        %417 = OpLabel
+        %441 = OpLoad %int %j_1
+        %442 = OpIAdd %int %441 %int_1
+               OpStore %j_1 %442
+               OpBranch %415
+        %416 = OpLabel
+        %443 = OpLoad %int %i_1
+        %444 = OpIAdd %int %443 %int_1
+               OpStore %param_2 %444
+        %446 = OpLoad %int %h
+               OpStore %param_3 %446
+        %447 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %450 = OpLoad %int %i_1
+        %451 = OpIAdd %int %450 %int_1
+               OpReturnValue %451
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %29
+        %453 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %35
+        %h_1 = OpVariable %_ptr_Function_int Function %35
+        %top = OpVariable %_ptr_Function_int Function %35
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %50
+          %p = OpVariable %_ptr_Function_int Function %35
+    %param_4 = OpVariable %_ptr_Function_int Function %35
+    %param_5 = OpVariable %_ptr_Function_int Function %35
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %461 = OpLoad %int %top
+        %462 = OpIAdd %int %461 %int_1
+               OpStore %top %462
+        %463 = OpLoad %int %l_1
+        %464 = OpAccessChain %_ptr_Function_int %stack %462
+               OpStore %464 %463
+        %465 = OpLoad %int %top
+        %466 = OpIAdd %int %465 %int_1
+               OpStore %top %466
+        %467 = OpLoad %int %h_1
+        %468 = OpAccessChain %_ptr_Function_int %stack %466
+               OpStore %468 %467
+               OpBranch %469
+        %469 = OpLabel
+               OpLoopMerge %470 %471 None
+               OpBranch %472
+        %472 = OpLabel
+        %473 = OpLoad %int %top
+        %474 = OpSGreaterThanEqual %bool %473 %int_0
+               OpSelectionMerge %475 None
+               OpBranchConditional %474 %476 %477
+        %476 = OpLabel
+               OpBranch %475
+        %477 = OpLabel
+               OpBranch %470
+        %475 = OpLabel
+        %478 = OpLoad %int %top
+        %479 = OpISub %int %478 %int_1
+               OpStore %top %479
+        %480 = OpAccessChain %_ptr_Function_int %stack %478
+        %481 = OpLoad %int %480
+               OpStore %h_1 %481
+        %482 = OpLoad %int %top
+        %483 = OpISub %int %482 %int_1
+               OpStore %top %483
+        %484 = OpAccessChain %_ptr_Function_int %stack %482
+        %485 = OpLoad %int %484
+               OpStore %l_1 %485
+        %486 = OpLoad %int %l_1
+               OpStore %param_4 %486
+        %487 = OpLoad %int %h_1
+               OpStore %param_5 %487
+        %488 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %488
+        %491 = OpLoad %int %p
+        %492 = OpLoad %int %l_1
+        %493 = OpISub %int %491 %int_1
+        %494 = OpSGreaterThan %bool %493 %492
+               OpSelectionMerge %495 None
+               OpBranchConditional %494 %496 %495
+        %496 = OpLabel
+        %497 = OpLoad %int %top
+        %498 = OpIAdd %int %497 %int_1
+               OpStore %top %498
+        %499 = OpLoad %int %l_1
+        %500 = OpAccessChain %_ptr_Function_int %stack %498
+               OpStore %500 %499
+        %501 = OpLoad %int %top
+        %502 = OpIAdd %int %501 %int_1
+               OpStore %top %502
+        %503 = OpLoad %int %p
+        %504 = OpAccessChain %_ptr_Function_int %stack %502
+        %505 = OpISub %int %503 %int_1
+               OpStore %504 %505
+               OpBranch %495
+        %495 = OpLabel
+        %506 = OpLoad %int %p
+        %507 = OpLoad %int %h_1
+        %508 = OpIAdd %int %506 %int_1
+        %509 = OpSLessThan %bool %508 %507
+               OpSelectionMerge %510 None
+               OpBranchConditional %509 %511 %510
+        %511 = OpLabel
+        %512 = OpLoad %int %top
+        %513 = OpIAdd %int %512 %int_1
+               OpStore %top %513
+        %514 = OpLoad %int %p
+        %515 = OpAccessChain %_ptr_Function_int %stack %513
+        %516 = OpIAdd %int %514 %int_1
+               OpStore %515 %516
+        %517 = OpLoad %int %top
+        %518 = OpIAdd %int %517 %int_1
+               OpStore %top %518
+        %519 = OpLoad %int %h_1
+        %520 = OpAccessChain %_ptr_Function_int %stack %518
+               OpStore %520 %519
+               OpBranch %510
+        %510 = OpLabel
+               OpBranch %471
+        %471 = OpLabel
+               OpBranch %469
+        %470 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..dcc0835
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.wgsl
@@ -0,0 +1,399 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  var x_90 : i32;
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : i32;
+  var x_95 : i32;
+  var x_96 : i32;
+  var x_97 : i32;
+  var x_98 : i32;
+  var x_99 : i32;
+  var x_100 : i32;
+  var x_101 : i32;
+  var x_102 : i32;
+  var x_103 : array<i32, 10>;
+  var x_104 : i32;
+  var x_105 : i32;
+  var x_106 : i32;
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_107 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_107 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_114 : i32 = i_2;
+    if ((x_114 < 10)) {
+    } else {
+      break;
+    }
+    let x_117 : i32 = i_2;
+    let x_118 : i32 = i_2;
+    obj.numbers[x_117] = (10 - x_118);
+    let x_121 : i32 = i_2;
+    let x_122 : i32 = i_2;
+    let x_124 : i32 = obj.numbers[x_122];
+    let x_125 : i32 = i_2;
+    let x_127 : i32 = obj.numbers[x_125];
+    obj.numbers[x_121] = (x_124 * x_127);
+
+    continuing {
+      let x_130 : i32 = i_2;
+      i_2 = (x_130 + 1);
+    }
+  }
+  x_100 = 0;
+  x_101 = 9;
+  x_102 = -1;
+  let x_132 : i32 = x_102;
+  let x_133 : i32 = (x_132 + 1);
+  x_102 = x_133;
+  let x_134 : i32 = x_100;
+  x_103[x_133] = x_134;
+  let x_136 : i32 = x_102;
+  let x_137 : i32 = (x_136 + 1);
+  x_102 = x_137;
+  let x_138 : i32 = x_101;
+  x_103[x_137] = x_138;
+  loop {
+    let x_144 : i32 = x_102;
+    if ((x_144 >= 0)) {
+    } else {
+      break;
+    }
+    let x_147 : i32 = x_102;
+    x_102 = (x_147 - 1);
+    let x_150 : i32 = x_103[x_147];
+    x_101 = x_150;
+    let x_151 : i32 = x_102;
+    x_102 = (x_151 - 1);
+    let x_154 : i32 = x_103[x_151];
+    x_100 = x_154;
+    let x_155 : i32 = x_100;
+    x_105 = x_155;
+    let x_156 : i32 = x_101;
+    x_106 = x_156;
+    let x_157 : i32 = x_106;
+    let x_159 : i32 = obj.numbers[x_157];
+    x_92 = x_159;
+    let x_160 : i32 = x_105;
+    x_93 = (x_160 - 1);
+    let x_162 : i32 = x_105;
+    x_94 = x_162;
+    loop {
+      let x_167 : i32 = x_94;
+      let x_168 : i32 = x_106;
+      if ((x_167 <= (x_168 - 1))) {
+      } else {
+        break;
+      }
+      let x_172 : i32 = x_94;
+      let x_174 : i32 = obj.numbers[x_172];
+      let x_175 : i32 = x_92;
+      if ((x_174 <= x_175)) {
+        let x_179 : i32 = x_93;
+        x_93 = (x_179 + 1);
+        let x_181 : i32 = x_93;
+        x_95 = x_181;
+        let x_182 : i32 = x_94;
+        x_96 = x_182;
+        let x_183 : i32 = x_95;
+        let x_185 : i32 = obj.numbers[x_183];
+        x_91 = x_185;
+        let x_186 : i32 = x_95;
+        let x_187 : i32 = x_96;
+        let x_189 : i32 = obj.numbers[x_187];
+        obj.numbers[x_186] = x_189;
+        let x_191 : i32 = x_96;
+        let x_192 : i32 = x_91;
+        obj.numbers[x_191] = x_192;
+      }
+
+      continuing {
+        let x_194 : i32 = x_94;
+        x_94 = (x_194 + 1);
+      }
+    }
+    let x_196 : i32 = x_93;
+    x_97 = (x_196 + 1);
+    let x_198 : i32 = x_106;
+    x_98 = x_198;
+    let x_199 : i32 = x_97;
+    let x_201 : i32 = obj.numbers[x_199];
+    x_90 = x_201;
+    let x_202 : i32 = x_97;
+    let x_203 : i32 = x_98;
+    let x_205 : i32 = obj.numbers[x_203];
+    obj.numbers[x_202] = x_205;
+    let x_207 : i32 = x_98;
+    let x_208 : i32 = x_90;
+    obj.numbers[x_207] = x_208;
+    let x_210 : i32 = x_93;
+    x_99 = (x_210 + 1);
+    let x_212 : i32 = x_99;
+    x_104 = x_212;
+    let x_213 : i32 = x_104;
+    let x_215 : i32 = x_100;
+    if (((x_213 - 1) > x_215)) {
+      let x_219 : i32 = x_102;
+      let x_220 : i32 = (x_219 + 1);
+      x_102 = x_220;
+      let x_221 : i32 = x_100;
+      x_103[x_220] = x_221;
+      let x_223 : i32 = x_102;
+      let x_224 : i32 = (x_223 + 1);
+      x_102 = x_224;
+      let x_225 : i32 = x_104;
+      x_103[x_224] = (x_225 - 1);
+    }
+    let x_228 : i32 = x_104;
+    let x_230 : i32 = x_101;
+    if (((x_228 + 1) < x_230)) {
+      let x_234 : i32 = x_102;
+      let x_235 : i32 = (x_234 + 1);
+      x_102 = x_235;
+      let x_236 : i32 = x_104;
+      x_103[x_235] = (x_236 + 1);
+      let x_239 : i32 = x_102;
+      let x_240 : i32 = (x_239 + 1);
+      x_102 = x_240;
+      let x_241 : i32 = x_101;
+      x_103[x_240] = x_241;
+    }
+  }
+  let x_243 : vec4<f32> = x_GLF_FragCoord;
+  let x_246 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_243.x, x_243.y) / x_246);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_249 : i32 = obj.numbers[0];
+  let x_252 : f32 = color.x;
+  color.x = (x_252 + f32(x_249));
+  let x_256 : f32 = uv.x;
+  if ((x_256 > 0.25)) {
+    let x_261 : i32 = obj.numbers[1];
+    let x_264 : f32 = color.x;
+    color.x = (x_264 + f32(x_261));
+  }
+  let x_268 : f32 = uv.x;
+  if ((x_268 > 0.5)) {
+    let x_273 : i32 = obj.numbers[2];
+    let x_276 : f32 = color.y;
+    color.y = (x_276 + f32(x_273));
+  }
+  let x_280 : f32 = uv.x;
+  if ((x_280 > 0.75)) {
+    let x_285 : i32 = obj.numbers[3];
+    let x_288 : f32 = color.z;
+    color.z = (x_288 + f32(x_285));
+  }
+  let x_292 : i32 = obj.numbers[4];
+  let x_295 : f32 = color.y;
+  color.y = (x_295 + f32(x_292));
+  let x_299 : f32 = uv.y;
+  if ((x_299 > 0.25)) {
+    let x_304 : i32 = obj.numbers[5];
+    let x_307 : f32 = color.x;
+    color.x = (x_307 + f32(x_304));
+  }
+  let x_311 : f32 = uv.y;
+  if ((x_311 > 0.5)) {
+    let x_316 : i32 = obj.numbers[6];
+    let x_319 : f32 = color.y;
+    color.y = (x_319 + f32(x_316));
+  }
+  let x_323 : f32 = uv.y;
+  if ((x_323 > 0.75)) {
+    let x_328 : i32 = obj.numbers[7];
+    let x_331 : f32 = color.z;
+    color.z = (x_331 + f32(x_328));
+  }
+  let x_335 : i32 = obj.numbers[8];
+  let x_338 : f32 = color.z;
+  color.z = (x_338 + f32(x_335));
+  let x_342 : f32 = uv.x;
+  let x_344 : f32 = uv.y;
+  if ((abs((x_342 - x_344)) < 0.25)) {
+    let x_351 : i32 = obj.numbers[9];
+    let x_354 : f32 = color.x;
+    color.x = (x_354 + f32(x_351));
+  }
+  let x_357 : vec3<f32> = color;
+  let x_358 : vec3<f32> = normalize(x_357);
+  frag_color = vec4<f32>(x_358.x, x_358.y, x_358.z, 1.0);
+  let x_363 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_363;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_366 : i32 = *(i);
+  let x_368 : i32 = obj.numbers[x_366];
+  temp = x_368;
+  let x_369 : i32 = *(i);
+  let x_370 : i32 = *(j);
+  let x_372 : i32 = obj.numbers[x_370];
+  obj.numbers[x_369] = x_372;
+  let x_374 : i32 = *(j);
+  let x_375 : i32 = temp;
+  obj.numbers[x_374] = x_375;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_378 : i32 = *(h);
+  let x_380 : i32 = obj.numbers[x_378];
+  pivot = x_380;
+  let x_381 : i32 = *(l);
+  i_1 = (x_381 - 1);
+  let x_383 : i32 = *(l);
+  j_1 = x_383;
+  loop {
+    let x_388 : i32 = j_1;
+    let x_389 : i32 = *(h);
+    if ((x_388 <= (x_389 - 1))) {
+    } else {
+      break;
+    }
+    let x_393 : i32 = j_1;
+    let x_395 : i32 = obj.numbers[x_393];
+    let x_396 : i32 = pivot;
+    if ((x_395 <= x_396)) {
+      let x_400 : i32 = i_1;
+      i_1 = (x_400 + 1);
+      let x_402 : i32 = i_1;
+      param = x_402;
+      let x_403 : i32 = j_1;
+      param_1 = x_403;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_405 : i32 = j_1;
+      j_1 = (x_405 + 1);
+    }
+  }
+  let x_407 : i32 = i_1;
+  param_2 = (x_407 + 1);
+  let x_409 : i32 = *(h);
+  param_3 = x_409;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_411 : i32 = i_1;
+  return (x_411 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_414 : i32 = top;
+  let x_415 : i32 = (x_414 + 1);
+  top = x_415;
+  let x_416 : i32 = l_1;
+  stack[x_415] = x_416;
+  let x_418 : i32 = top;
+  let x_419 : i32 = (x_418 + 1);
+  top = x_419;
+  let x_420 : i32 = h_1;
+  stack[x_419] = x_420;
+  loop {
+    let x_426 : i32 = top;
+    if ((x_426 >= 0)) {
+    } else {
+      break;
+    }
+    let x_429 : i32 = top;
+    top = (x_429 - 1);
+    let x_432 : i32 = stack[x_429];
+    h_1 = x_432;
+    let x_433 : i32 = top;
+    top = (x_433 - 1);
+    let x_436 : i32 = stack[x_433];
+    l_1 = x_436;
+    let x_437 : i32 = l_1;
+    param_4 = x_437;
+    let x_438 : i32 = h_1;
+    param_5 = x_438;
+    let x_439 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_439;
+    let x_440 : i32 = p;
+    let x_442 : i32 = l_1;
+    if (((x_440 - 1) > x_442)) {
+      let x_446 : i32 = top;
+      let x_447 : i32 = (x_446 + 1);
+      top = x_447;
+      let x_448 : i32 = l_1;
+      stack[x_447] = x_448;
+      let x_450 : i32 = top;
+      let x_451 : i32 = (x_450 + 1);
+      top = x_451;
+      let x_452 : i32 = p;
+      stack[x_451] = (x_452 - 1);
+    }
+    let x_455 : i32 = p;
+    let x_457 : i32 = h_1;
+    if (((x_455 + 1) < x_457)) {
+      let x_461 : i32 = top;
+      let x_462 : i32 = (x_461 + 1);
+      top = x_462;
+      let x_463 : i32 = p;
+      stack[x_462] = (x_463 + 1);
+      let x_466 : i32 = top;
+      let x_467 : i32 = (x_466 + 1);
+      top = x_467;
+      let x_468 : i32 = h_1;
+      stack[x_467] = x_468;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm
new file mode 100644
index 0000000..2355739
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm
@@ -0,0 +1,636 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_GLF_pos %frag_color %__0
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap(i1;i1;"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %quicksort_ "quicksort("
+               OpName %temp "temp"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %pivot "pivot"
+               OpName %i_0 "i"
+               OpName %j_0 "j"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %l_0 "l"
+               OpName %h_0 "h"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %_GLF_FragCoord "_GLF_FragCoord"
+               OpName %_GLF_pos "_GLF_pos"
+               OpName %i_1 "i"
+               OpName %uv "uv"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %color "color"
+               OpName %frag_color "frag_color"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpName %__0 ""
+               OpDecorate %_GLF_pos Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %frag_color Location 0
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpDecorate %gl_PerVertex Block
+       %void = OpTypeVoid
+         %38 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %41 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %42 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+%_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %_GLF_pos = OpVariable %_ptr_Input_v4float Input
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %61 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+         %63 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %73 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %frag_color = OpVariable %_ptr_Output_v4float Output
+%gl_PerVertex = OpTypeStruct %v4float %float
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+        %__0 = OpVariable %_ptr_Output_gl_PerVertex Output
+       %main = OpFunction %void None %38
+         %90 = OpLabel
+         %91 = OpVariable %_ptr_Function_int Function
+         %92 = OpVariable %_ptr_Function_int Function
+         %93 = OpVariable %_ptr_Function_int Function
+         %94 = OpVariable %_ptr_Function__arr_int_uint_10 Function
+         %95 = OpVariable %_ptr_Function_int Function
+         %96 = OpVariable %_ptr_Function_int Function
+         %97 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+         %uv = OpVariable %_ptr_Function_v2float Function
+      %color = OpVariable %_ptr_Function_v3float Function
+         %98 = OpLoad %v4float %_GLF_pos
+         %99 = OpFAdd %v4float %98 %61
+        %100 = OpFMul %v4float %99 %63
+               OpStore %_GLF_FragCoord %100
+               OpStore %i_1 %int_0
+               OpBranch %101
+        %101 = OpLabel
+               OpLoopMerge %102 %103 None
+               OpBranch %104
+        %104 = OpLabel
+        %105 = OpLoad %int %i_1
+        %106 = OpSLessThan %bool %105 %int_10
+               OpBranchConditional %106 %107 %102
+        %107 = OpLabel
+        %108 = OpLoad %int %i_1
+        %109 = OpLoad %int %i_1
+        %110 = OpISub %int %int_10 %109
+        %111 = OpAccessChain %_ptr_Private_int %obj %int_0 %108
+               OpStore %111 %110
+        %112 = OpLoad %int %i_1
+        %113 = OpLoad %int %i_1
+        %114 = OpAccessChain %_ptr_Private_int %obj %int_0 %113
+        %115 = OpLoad %int %114
+        %116 = OpLoad %int %i_1
+        %117 = OpAccessChain %_ptr_Private_int %obj %int_0 %116
+        %118 = OpLoad %int %117
+        %119 = OpIMul %int %115 %118
+        %120 = OpAccessChain %_ptr_Private_int %obj %int_0 %112
+               OpStore %120 %119
+               OpBranch %103
+        %103 = OpLabel
+        %121 = OpLoad %int %i_1
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %i_1 %122
+               OpBranch %101
+        %102 = OpLabel
+               OpStore %91 %int_0
+               OpStore %92 %int_9
+               OpStore %93 %int_n1
+        %123 = OpLoad %int %93
+        %124 = OpIAdd %int %123 %int_1
+               OpStore %93 %124
+        %125 = OpLoad %int %91
+        %126 = OpAccessChain %_ptr_Function_int %94 %124
+               OpStore %126 %125
+        %127 = OpLoad %int %93
+        %128 = OpIAdd %int %127 %int_1
+               OpStore %93 %128
+        %129 = OpLoad %int %92
+        %130 = OpAccessChain %_ptr_Function_int %94 %128
+               OpStore %130 %129
+               OpBranch %131
+        %131 = OpLabel
+               OpLoopMerge %132 %133 None
+               OpBranch %134
+        %134 = OpLabel
+        %135 = OpLoad %int %93
+        %136 = OpSGreaterThanEqual %bool %135 %int_0
+               OpBranchConditional %136 %137 %132
+        %137 = OpLabel
+        %138 = OpLoad %int %93
+        %139 = OpISub %int %138 %int_1
+               OpStore %93 %139
+        %140 = OpAccessChain %_ptr_Function_int %94 %138
+        %141 = OpLoad %int %140
+               OpStore %92 %141
+        %142 = OpLoad %int %93
+        %143 = OpISub %int %142 %int_1
+               OpStore %93 %143
+        %144 = OpAccessChain %_ptr_Function_int %94 %142
+        %145 = OpLoad %int %144
+               OpStore %91 %145
+        %146 = OpLoad %int %91
+               OpStore %96 %146
+        %147 = OpLoad %int %92
+               OpStore %97 %147
+        %148 = OpFunctionCall %int %performPartition_i1_i1_ %96 %97
+               OpStore %95 %148
+        %149 = OpLoad %int %95
+        %150 = OpISub %int %149 %int_1
+        %151 = OpLoad %int %91
+        %152 = OpSGreaterThan %bool %150 %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+        %155 = OpLoad %int %93
+        %156 = OpIAdd %int %155 %int_1
+               OpStore %93 %156
+        %157 = OpLoad %int %91
+        %158 = OpAccessChain %_ptr_Function_int %94 %156
+               OpStore %158 %157
+        %159 = OpLoad %int %93
+        %160 = OpIAdd %int %159 %int_1
+               OpStore %93 %160
+        %161 = OpLoad %int %95
+        %162 = OpISub %int %161 %int_1
+        %163 = OpAccessChain %_ptr_Function_int %94 %160
+               OpStore %163 %162
+               OpBranch %153
+        %153 = OpLabel
+        %164 = OpLoad %int %95
+        %165 = OpIAdd %int %164 %int_1
+        %166 = OpLoad %int %92
+        %167 = OpSLessThan %bool %165 %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %168
+        %169 = OpLabel
+        %170 = OpLoad %int %93
+        %171 = OpIAdd %int %170 %int_1
+               OpStore %93 %171
+        %172 = OpLoad %int %95
+        %173 = OpIAdd %int %172 %int_1
+        %174 = OpAccessChain %_ptr_Function_int %94 %171
+               OpStore %174 %173
+        %175 = OpLoad %int %93
+        %176 = OpIAdd %int %175 %int_1
+               OpStore %93 %176
+        %177 = OpLoad %int %92
+        %178 = OpAccessChain %_ptr_Function_int %94 %176
+               OpStore %178 %177
+               OpBranch %168
+        %168 = OpLabel
+               OpBranch %133
+        %133 = OpLabel
+               OpBranch %131
+        %132 = OpLabel
+        %179 = OpLoad %v4float %_GLF_FragCoord
+        %180 = OpVectorShuffle %v2float %179 %179 0 1
+        %181 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %182 = OpLoad %v2float %181
+        %183 = OpFDiv %v2float %180 %182
+               OpStore %uv %183
+               OpStore %color %73
+        %184 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
+        %185 = OpLoad %int %184
+        %186 = OpConvertSToF %float %185
+        %187 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %188 = OpLoad %float %187
+        %189 = OpFAdd %float %188 %186
+        %190 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %190 %189
+        %191 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %192 = OpLoad %float %191
+        %193 = OpFOrdGreaterThan %bool %192 %float_0_25
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %194
+        %195 = OpLabel
+        %196 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
+        %197 = OpLoad %int %196
+        %198 = OpConvertSToF %float %197
+        %199 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %200 = OpLoad %float %199
+        %201 = OpFAdd %float %200 %198
+        %202 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %202 %201
+               OpBranch %194
+        %194 = OpLabel
+        %203 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %204 = OpLoad %float %203
+        %205 = OpFOrdGreaterThan %bool %204 %float_0_5
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %206
+        %207 = OpLabel
+        %208 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_2
+        %209 = OpLoad %int %208
+        %210 = OpConvertSToF %float %209
+        %211 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %212 = OpLoad %float %211
+        %213 = OpFAdd %float %212 %210
+        %214 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %214 %213
+               OpBranch %206
+        %206 = OpLabel
+        %215 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %216 = OpLoad %float %215
+        %217 = OpFOrdGreaterThan %bool %216 %float_0_75
+               OpSelectionMerge %218 None
+               OpBranchConditional %217 %219 %218
+        %219 = OpLabel
+        %220 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
+        %221 = OpLoad %int %220
+        %222 = OpConvertSToF %float %221
+        %223 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %224 = OpLoad %float %223
+        %225 = OpFAdd %float %224 %222
+        %226 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %226 %225
+               OpBranch %218
+        %218 = OpLabel
+        %227 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
+        %228 = OpLoad %int %227
+        %229 = OpConvertSToF %float %228
+        %230 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %231 = OpLoad %float %230
+        %232 = OpFAdd %float %231 %229
+        %233 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %233 %232
+        %234 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %235 = OpLoad %float %234
+        %236 = OpFOrdGreaterThan %bool %235 %float_0_25
+               OpSelectionMerge %237 None
+               OpBranchConditional %236 %238 %237
+        %238 = OpLabel
+        %239 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
+        %240 = OpLoad %int %239
+        %241 = OpConvertSToF %float %240
+        %242 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %243 = OpLoad %float %242
+        %244 = OpFAdd %float %243 %241
+        %245 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %245 %244
+               OpBranch %237
+        %237 = OpLabel
+        %246 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %247 = OpLoad %float %246
+        %248 = OpFOrdGreaterThan %bool %247 %float_0_5
+               OpSelectionMerge %249 None
+               OpBranchConditional %248 %250 %249
+        %250 = OpLabel
+        %251 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
+        %252 = OpLoad %int %251
+        %253 = OpConvertSToF %float %252
+        %254 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %255 = OpLoad %float %254
+        %256 = OpFAdd %float %255 %253
+        %257 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %257 %256
+               OpBranch %249
+        %249 = OpLabel
+        %258 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %259 = OpLoad %float %258
+        %260 = OpFOrdGreaterThan %bool %259 %float_0_75
+               OpSelectionMerge %261 None
+               OpBranchConditional %260 %262 %261
+        %262 = OpLabel
+        %263 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
+        %264 = OpLoad %int %263
+        %265 = OpConvertSToF %float %264
+        %266 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %267 = OpLoad %float %266
+        %268 = OpFAdd %float %267 %265
+        %269 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %269 %268
+               OpBranch %261
+        %261 = OpLabel
+        %270 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
+        %271 = OpLoad %int %270
+        %272 = OpConvertSToF %float %271
+        %273 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %274 = OpLoad %float %273
+        %275 = OpFAdd %float %274 %272
+        %276 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %276 %275
+        %277 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %278 = OpLoad %float %277
+        %279 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %280 = OpLoad %float %279
+        %281 = OpFSub %float %278 %280
+        %282 = OpExtInst %float %1 FAbs %281
+        %283 = OpFOrdLessThan %bool %282 %float_0_25
+               OpSelectionMerge %284 None
+               OpBranchConditional %283 %285 %284
+        %285 = OpLabel
+        %286 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
+        %287 = OpLoad %int %286
+        %288 = OpConvertSToF %float %287
+        %289 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %290 = OpLoad %float %289
+        %291 = OpFAdd %float %290 %288
+        %292 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %292 %291
+               OpBranch %284
+        %284 = OpLabel
+        %293 = OpLoad %v3float %color
+        %294 = OpExtInst %v3float %1 Normalize %293
+        %295 = OpCompositeExtract %float %294 0
+        %296 = OpCompositeExtract %float %294 1
+        %297 = OpCompositeExtract %float %294 2
+        %298 = OpCompositeConstruct %v4float %295 %296 %297 %float_1
+               OpStore %frag_color %298
+        %299 = OpLoad %v4float %_GLF_pos
+        %300 = OpAccessChain %_ptr_Output_v4float %__0 %int_0
+               OpStore %300 %299
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %41
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %301 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+        %302 = OpLoad %int %i
+        %303 = OpAccessChain %_ptr_Private_int %obj %int_0 %302
+        %304 = OpLoad %int %303
+               OpStore %temp %304
+        %305 = OpLoad %int %i
+        %306 = OpLoad %int %j
+        %307 = OpAccessChain %_ptr_Private_int %obj %int_0 %306
+        %308 = OpLoad %int %307
+        %309 = OpAccessChain %_ptr_Private_int %obj %int_0 %305
+               OpStore %309 %308
+        %310 = OpLoad %int %j
+        %311 = OpLoad %int %temp
+        %312 = OpAccessChain %_ptr_Private_int %obj %int_0 %310
+               OpStore %312 %311
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %42
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %313 = OpLabel
+        %314 = OpVariable %_ptr_Function_int Function
+        %315 = OpVariable %_ptr_Function_int Function
+      %pivot = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+        %316 = OpLoad %int %h
+        %317 = OpAccessChain %_ptr_Private_int %obj %int_0 %316
+        %318 = OpLoad %int %317
+               OpStore %pivot %318
+        %319 = OpLoad %int %l
+        %320 = OpISub %int %319 %int_1
+               OpStore %i_0 %320
+        %321 = OpLoad %int %l
+               OpStore %j_0 %321
+               OpBranch %322
+        %322 = OpLabel
+               OpLoopMerge %323 %324 None
+               OpBranch %325
+        %325 = OpLabel
+        %326 = OpLoad %int %j_0
+        %327 = OpLoad %int %h
+        %328 = OpISub %int %327 %int_1
+        %329 = OpSLessThanEqual %bool %326 %328
+               OpBranchConditional %329 %330 %323
+        %330 = OpLabel
+        %331 = OpLoad %int %j_0
+        %332 = OpAccessChain %_ptr_Private_int %obj %int_0 %331
+        %333 = OpLoad %int %332
+        %334 = OpLoad %int %pivot
+        %335 = OpSLessThanEqual %bool %333 %334
+               OpSelectionMerge %336 None
+               OpBranchConditional %335 %337 %336
+        %337 = OpLabel
+        %338 = OpLoad %int %i_0
+        %339 = OpIAdd %int %338 %int_1
+               OpStore %i_0 %339
+        %340 = OpLoad %int %i_0
+               OpStore %param %340
+        %341 = OpLoad %int %j_0
+               OpStore %param_0 %341
+        %342 = OpLoad %int %param
+        %343 = OpAccessChain %_ptr_Private_int %obj %int_0 %342
+        %344 = OpLoad %int %343
+               OpStore %315 %344
+        %345 = OpLoad %int %param
+        %346 = OpLoad %int %param_0
+        %347 = OpAccessChain %_ptr_Private_int %obj %int_0 %346
+        %348 = OpLoad %int %347
+        %349 = OpAccessChain %_ptr_Private_int %obj %int_0 %345
+               OpStore %349 %348
+        %350 = OpLoad %int %param_0
+        %351 = OpLoad %int %315
+        %352 = OpAccessChain %_ptr_Private_int %obj %int_0 %350
+               OpStore %352 %351
+               OpBranch %336
+        %336 = OpLabel
+               OpBranch %324
+        %324 = OpLabel
+        %353 = OpLoad %int %j_0
+        %354 = OpIAdd %int %353 %int_1
+               OpStore %j_0 %354
+               OpBranch %322
+        %323 = OpLabel
+        %355 = OpLoad %int %i_0
+        %356 = OpIAdd %int %355 %int_1
+               OpStore %param_1 %356
+        %357 = OpLoad %int %h
+               OpStore %param_2 %357
+        %358 = OpLoad %int %param_1
+        %359 = OpAccessChain %_ptr_Private_int %obj %int_0 %358
+        %360 = OpLoad %int %359
+               OpStore %314 %360
+        %361 = OpLoad %int %param_1
+        %362 = OpLoad %int %param_2
+        %363 = OpAccessChain %_ptr_Private_int %obj %int_0 %362
+        %364 = OpLoad %int %363
+        %365 = OpAccessChain %_ptr_Private_int %obj %int_0 %361
+               OpStore %365 %364
+        %366 = OpLoad %int %param_2
+        %367 = OpLoad %int %314
+        %368 = OpAccessChain %_ptr_Private_int %obj %int_0 %366
+               OpStore %368 %367
+               OpSelectionMerge %369 None
+               OpBranchConditional %false %370 %371
+        %370 = OpLabel
+               OpBranch %369
+        %371 = OpLabel
+        %372 = OpLoad %int %i_0
+        %373 = OpIAdd %int %372 %int_1
+               OpReturnValue %373
+        %369 = OpLabel
+        %374 = OpUndef %int
+               OpReturnValue %374
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %38
+        %375 = OpLabel
+        %l_0 = OpVariable %_ptr_Function_int Function
+        %h_0 = OpVariable %_ptr_Function_int Function
+        %top = OpVariable %_ptr_Function_int Function
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %p = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+               OpStore %l_0 %int_0
+               OpStore %h_0 %int_9
+               OpStore %top %int_n1
+        %376 = OpLoad %int %top
+        %377 = OpIAdd %int %376 %int_1
+               OpStore %top %377
+        %378 = OpLoad %int %l_0
+        %379 = OpAccessChain %_ptr_Function_int %stack %377
+               OpStore %379 %378
+        %380 = OpLoad %int %top
+        %381 = OpIAdd %int %380 %int_1
+               OpStore %top %381
+        %382 = OpLoad %int %h_0
+        %383 = OpAccessChain %_ptr_Function_int %stack %381
+               OpStore %383 %382
+               OpBranch %384
+        %384 = OpLabel
+               OpLoopMerge %385 %386 None
+               OpBranch %387
+        %387 = OpLabel
+        %388 = OpLoad %int %top
+        %389 = OpSGreaterThanEqual %bool %388 %int_0
+               OpBranchConditional %389 %390 %385
+        %390 = OpLabel
+        %391 = OpLoad %int %top
+        %392 = OpISub %int %391 %int_1
+               OpStore %top %392
+        %393 = OpAccessChain %_ptr_Function_int %stack %391
+        %394 = OpLoad %int %393
+               OpStore %h_0 %394
+        %395 = OpLoad %int %top
+        %396 = OpISub %int %395 %int_1
+               OpStore %top %396
+        %397 = OpAccessChain %_ptr_Function_int %stack %395
+        %398 = OpLoad %int %397
+               OpStore %l_0 %398
+        %399 = OpLoad %int %l_0
+               OpStore %param_3 %399
+        %400 = OpLoad %int %h_0
+               OpStore %param_4 %400
+        %401 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
+               OpStore %p %401
+        %402 = OpLoad %int %p
+        %403 = OpISub %int %402 %int_1
+        %404 = OpLoad %int %l_0
+        %405 = OpSGreaterThan %bool %403 %404
+               OpSelectionMerge %406 None
+               OpBranchConditional %405 %407 %406
+        %407 = OpLabel
+        %408 = OpLoad %int %top
+        %409 = OpIAdd %int %408 %int_1
+               OpStore %top %409
+        %410 = OpLoad %int %l_0
+        %411 = OpAccessChain %_ptr_Function_int %stack %409
+               OpStore %411 %410
+        %412 = OpLoad %int %top
+        %413 = OpIAdd %int %412 %int_1
+               OpStore %top %413
+        %414 = OpLoad %int %p
+        %415 = OpISub %int %414 %int_1
+        %416 = OpAccessChain %_ptr_Function_int %stack %413
+               OpStore %416 %415
+               OpBranch %406
+        %406 = OpLabel
+        %417 = OpLoad %int %p
+        %418 = OpIAdd %int %417 %int_1
+        %419 = OpLoad %int %h_0
+        %420 = OpSLessThan %bool %418 %419
+               OpSelectionMerge %421 None
+               OpBranchConditional %420 %422 %421
+        %422 = OpLabel
+        %423 = OpLoad %int %top
+        %424 = OpIAdd %int %423 %int_1
+               OpStore %top %424
+        %425 = OpLoad %int %p
+        %426 = OpIAdd %int %425 %int_1
+        %427 = OpAccessChain %_ptr_Function_int %stack %424
+               OpStore %427 %426
+        %428 = OpLoad %int %top
+        %429 = OpIAdd %int %428 %int_1
+               OpStore %top %429
+        %430 = OpLoad %int %h_0
+        %431 = OpAccessChain %_ptr_Function_int %stack %429
+               OpStore %431 %430
+               OpBranch %421
+        %421 = OpLabel
+               OpBranch %386
+        %386 = OpLabel
+               OpBranch %384
+        %385 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.hlsl
new file mode 100644
index 0000000..dd128c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.hlsl
@@ -0,0 +1,284 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int x_314 = 0;
+  int x_315 = 0;
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_316 = h;
+  const int x_318 = obj.numbers[x_316];
+  pivot = x_318;
+  const int x_319 = l;
+  i_1 = (x_319 - 1);
+  const int x_321 = l;
+  j_1 = x_321;
+  while (true) {
+    const int x_326 = j_1;
+    const int x_327 = h;
+    if ((x_326 <= (x_327 - 1))) {
+    } else {
+      break;
+    }
+    const int x_333 = obj.numbers[j_1];
+    if ((x_333 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      const int x_344 = obj.numbers[param];
+      x_315 = x_344;
+      const int x_345 = param;
+      const int x_348 = obj.numbers[param_1];
+      obj.numbers[x_345] = x_348;
+      obj.numbers[param_1] = x_315;
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_357 = h;
+  param_3 = x_357;
+  const int x_360 = obj.numbers[param_2];
+  x_314 = x_360;
+  const int x_361 = param_2;
+  const int x_364 = obj.numbers[param_3];
+  obj.numbers[x_361] = x_364;
+  obj.numbers[param_3] = x_314;
+  if (false) {
+  } else {
+    return (i_1 + 1);
+  }
+  return 0;
+}
+
+void main_1() {
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94[10] = (int[10])0;
+  int x_95 = 0;
+  int x_96 = 0;
+  int x_97 = 0;
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_112 = i_2;
+      const int x_115 = obj.numbers[i_2];
+      const int x_118 = obj.numbers[i_2];
+      obj.numbers[x_112] = (x_115 * x_118);
+    }
+  }
+  x_91 = 0;
+  x_92 = 9;
+  x_93 = -1;
+  const int x_124 = (x_93 + 1);
+  x_93 = x_124;
+  x_94[x_124] = x_91;
+  const int x_128 = (x_93 + 1);
+  x_93 = x_128;
+  x_94[x_128] = x_92;
+  while (true) {
+    if ((x_93 >= 0)) {
+    } else {
+      break;
+    }
+    const int x_138 = x_93;
+    x_93 = (x_138 - 1);
+    const int x_141 = x_94[x_138];
+    x_92 = x_141;
+    const int x_142 = x_93;
+    x_93 = (x_142 - 1);
+    const int x_145 = x_94[x_142];
+    x_91 = x_145;
+    x_96 = x_91;
+    x_97 = x_92;
+    const int x_148 = performPartition_i1_i1_(x_96, x_97);
+    x_95 = x_148;
+    if (((x_95 - 1) > x_91)) {
+      const int x_156 = (x_93 + 1);
+      x_93 = x_156;
+      x_94[x_156] = x_91;
+      const int x_160 = (x_93 + 1);
+      x_93 = x_160;
+      x_94[x_160] = (x_95 - 1);
+    }
+    if (((x_95 + 1) < x_92)) {
+      const int x_171 = (x_93 + 1);
+      x_93 = x_171;
+      x_94[x_171] = (x_95 + 1);
+      const int x_176 = (x_93 + 1);
+      x_93 = x_176;
+      x_94[x_176] = x_92;
+    }
+  }
+  const float4 x_179 = x_GLF_FragCoord;
+  const float2 x_182 = asfloat(x_34[0].xy);
+  uv = (float2(x_179.x, x_179.y) / x_182);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_185 = obj.numbers[0];
+  const float x_188 = color.x;
+  color.x = (x_188 + float(x_185));
+  const float x_192 = uv.x;
+  if ((x_192 > 0.25f)) {
+    const int x_197 = obj.numbers[1];
+    const float x_200 = color.x;
+    color.x = (x_200 + float(x_197));
+  }
+  const float x_204 = uv.x;
+  if ((x_204 > 0.5f)) {
+    const int x_209 = obj.numbers[2];
+    const float x_212 = color.y;
+    color.y = (x_212 + float(x_209));
+  }
+  const float x_216 = uv.x;
+  if ((x_216 > 0.75f)) {
+    const int x_221 = obj.numbers[3];
+    const float x_224 = color.z;
+    color.z = (x_224 + float(x_221));
+  }
+  const int x_228 = obj.numbers[4];
+  const float x_231 = color.y;
+  color.y = (x_231 + float(x_228));
+  const float x_235 = uv.y;
+  if ((x_235 > 0.25f)) {
+    const int x_240 = obj.numbers[5];
+    const float x_243 = color.x;
+    color.x = (x_243 + float(x_240));
+  }
+  const float x_247 = uv.y;
+  if ((x_247 > 0.5f)) {
+    const int x_252 = obj.numbers[6];
+    const float x_255 = color.y;
+    color.y = (x_255 + float(x_252));
+  }
+  const float x_259 = uv.y;
+  if ((x_259 > 0.75f)) {
+    const int x_264 = obj.numbers[7];
+    const float x_267 = color.z;
+    color.z = (x_267 + float(x_264));
+  }
+  const int x_271 = obj.numbers[8];
+  const float x_274 = color.z;
+  color.z = (x_274 + float(x_271));
+  const float x_278 = uv.x;
+  const float x_280 = uv.y;
+  if ((abs((x_278 - x_280)) < 0.25f)) {
+    const int x_287 = obj.numbers[9];
+    const float x_290 = color.x;
+    color.x = (x_290 + float(x_287));
+  }
+  const float3 x_294 = normalize(color);
+  frag_color = float4(x_294.x, x_294.y, x_294.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_5;
+}
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_302 = i;
+  const int x_304 = obj.numbers[x_302];
+  temp = x_304;
+  const int x_305 = i;
+  const int x_306 = j;
+  const int x_308 = obj.numbers[x_306];
+  obj.numbers[x_305] = x_308;
+  const int x_310 = j;
+  obj.numbers[x_310] = temp;
+  return;
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_377 = (top + 1);
+  top = x_377;
+  stack[x_377] = l_1;
+  const int x_381 = (top + 1);
+  top = x_381;
+  stack[x_381] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_391 = top;
+    top = (x_391 - 1);
+    const int x_394 = stack[x_391];
+    h_1 = x_394;
+    const int x_395 = top;
+    top = (x_395 - 1);
+    const int x_398 = stack[x_395];
+    l_1 = x_398;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_401 = performPartition_i1_i1_(param_4, param_5);
+    p = x_401;
+    if (((p - 1) > l_1)) {
+      const int x_409 = (top + 1);
+      top = x_409;
+      stack[x_409] = l_1;
+      const int x_413 = (top + 1);
+      top = x_413;
+      stack[x_413] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_424 = (top + 1);
+      top = x_424;
+      stack[x_424] = (p + 1);
+      const int x_429 = (top + 1);
+      top = x_429;
+      stack[x_429] = h_1;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.msl
new file mode 100644
index 0000000..f6f5a8a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.msl
@@ -0,0 +1,358 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_6) {
+  int x_314 = 0;
+  int x_315 = 0;
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_316 = *(h);
+  int const x_318 = (*(tint_symbol_6)).numbers.arr[x_316];
+  pivot = x_318;
+  int const x_319 = *(l);
+  i_1 = (x_319 - 1);
+  int const x_321 = *(l);
+  j_1 = x_321;
+  while (true) {
+    int const x_326 = j_1;
+    int const x_327 = *(h);
+    if ((x_326 <= (x_327 - 1))) {
+    } else {
+      break;
+    }
+    int const x_331 = j_1;
+    int const x_333 = (*(tint_symbol_6)).numbers.arr[x_331];
+    int const x_334 = pivot;
+    if ((x_333 <= x_334)) {
+      int const x_338 = i_1;
+      i_1 = (x_338 + 1);
+      int const x_340 = i_1;
+      param = x_340;
+      int const x_341 = j_1;
+      param_1 = x_341;
+      int const x_342 = param;
+      int const x_344 = (*(tint_symbol_6)).numbers.arr[x_342];
+      x_315 = x_344;
+      int const x_345 = param;
+      int const x_346 = param_1;
+      int const x_348 = (*(tint_symbol_6)).numbers.arr[x_346];
+      (*(tint_symbol_6)).numbers.arr[x_345] = x_348;
+      int const x_350 = param_1;
+      int const x_351 = x_315;
+      (*(tint_symbol_6)).numbers.arr[x_350] = x_351;
+    }
+    {
+      int const x_353 = j_1;
+      j_1 = (x_353 + 1);
+    }
+  }
+  int const x_355 = i_1;
+  param_2 = (x_355 + 1);
+  int const x_357 = *(h);
+  param_3 = x_357;
+  int const x_358 = param_2;
+  int const x_360 = (*(tint_symbol_6)).numbers.arr[x_358];
+  x_314 = x_360;
+  int const x_361 = param_2;
+  int const x_362 = param_3;
+  int const x_364 = (*(tint_symbol_6)).numbers.arr[x_362];
+  (*(tint_symbol_6)).numbers.arr[x_361] = x_364;
+  int const x_366 = param_3;
+  int const x_367 = x_314;
+  (*(tint_symbol_6)).numbers.arr[x_366] = x_367;
+  if (false) {
+  } else {
+    int const x_372 = i_1;
+    return (x_372 + 1);
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_34, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8, thread QuicksortObject* const tint_symbol_9, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  tint_array_wrapper x_94 = {};
+  int x_95 = 0;
+  int x_96 = 0;
+  int x_97 = 0;
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_98 = *(tint_symbol_7);
+  *(tint_symbol_8) = ((x_98 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_105 = i_2;
+    if ((x_105 < 10)) {
+    } else {
+      break;
+    }
+    int const x_108 = i_2;
+    int const x_109 = i_2;
+    (*(tint_symbol_9)).numbers.arr[x_108] = (10 - x_109);
+    int const x_112 = i_2;
+    int const x_113 = i_2;
+    int const x_115 = (*(tint_symbol_9)).numbers.arr[x_113];
+    int const x_116 = i_2;
+    int const x_118 = (*(tint_symbol_9)).numbers.arr[x_116];
+    (*(tint_symbol_9)).numbers.arr[x_112] = (x_115 * x_118);
+    {
+      int const x_121 = i_2;
+      i_2 = (x_121 + 1);
+    }
+  }
+  x_91 = 0;
+  x_92 = 9;
+  x_93 = -1;
+  int const x_123 = x_93;
+  int const x_124 = (x_123 + 1);
+  x_93 = x_124;
+  int const x_125 = x_91;
+  x_94.arr[x_124] = x_125;
+  int const x_127 = x_93;
+  int const x_128 = (x_127 + 1);
+  x_93 = x_128;
+  int const x_129 = x_92;
+  x_94.arr[x_128] = x_129;
+  while (true) {
+    int const x_135 = x_93;
+    if ((x_135 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_138 = x_93;
+    x_93 = (x_138 - 1);
+    int const x_141 = x_94.arr[x_138];
+    x_92 = x_141;
+    int const x_142 = x_93;
+    x_93 = (x_142 - 1);
+    int const x_145 = x_94.arr[x_142];
+    x_91 = x_145;
+    int const x_146 = x_91;
+    x_96 = x_146;
+    int const x_147 = x_92;
+    x_97 = x_147;
+    int const x_148 = performPartition_i1_i1_(&(x_96), &(x_97), tint_symbol_9);
+    x_95 = x_148;
+    int const x_149 = x_95;
+    int const x_151 = x_91;
+    if (((x_149 - 1) > x_151)) {
+      int const x_155 = x_93;
+      int const x_156 = (x_155 + 1);
+      x_93 = x_156;
+      int const x_157 = x_91;
+      x_94.arr[x_156] = x_157;
+      int const x_159 = x_93;
+      int const x_160 = (x_159 + 1);
+      x_93 = x_160;
+      int const x_161 = x_95;
+      x_94.arr[x_160] = (x_161 - 1);
+    }
+    int const x_164 = x_95;
+    int const x_166 = x_92;
+    if (((x_164 + 1) < x_166)) {
+      int const x_170 = x_93;
+      int const x_171 = (x_170 + 1);
+      x_93 = x_171;
+      int const x_172 = x_95;
+      x_94.arr[x_171] = (x_172 + 1);
+      int const x_175 = x_93;
+      int const x_176 = (x_175 + 1);
+      x_93 = x_176;
+      int const x_177 = x_92;
+      x_94.arr[x_176] = x_177;
+    }
+  }
+  float4 const x_179 = *(tint_symbol_8);
+  float2 const x_182 = x_34.resolution;
+  uv = (float2(x_179.x, x_179.y) / x_182);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_185 = (*(tint_symbol_9)).numbers.arr[0];
+  float const x_188 = color.x;
+  color.x = (x_188 + float(x_185));
+  float const x_192 = uv.x;
+  if ((x_192 > 0.25f)) {
+    int const x_197 = (*(tint_symbol_9)).numbers.arr[1];
+    float const x_200 = color.x;
+    color.x = (x_200 + float(x_197));
+  }
+  float const x_204 = uv.x;
+  if ((x_204 > 0.5f)) {
+    int const x_209 = (*(tint_symbol_9)).numbers.arr[2];
+    float const x_212 = color.y;
+    color.y = (x_212 + float(x_209));
+  }
+  float const x_216 = uv.x;
+  if ((x_216 > 0.75f)) {
+    int const x_221 = (*(tint_symbol_9)).numbers.arr[3];
+    float const x_224 = color.z;
+    color.z = (x_224 + float(x_221));
+  }
+  int const x_228 = (*(tint_symbol_9)).numbers.arr[4];
+  float const x_231 = color.y;
+  color.y = (x_231 + float(x_228));
+  float const x_235 = uv.y;
+  if ((x_235 > 0.25f)) {
+    int const x_240 = (*(tint_symbol_9)).numbers.arr[5];
+    float const x_243 = color.x;
+    color.x = (x_243 + float(x_240));
+  }
+  float const x_247 = uv.y;
+  if ((x_247 > 0.5f)) {
+    int const x_252 = (*(tint_symbol_9)).numbers.arr[6];
+    float const x_255 = color.y;
+    color.y = (x_255 + float(x_252));
+  }
+  float const x_259 = uv.y;
+  if ((x_259 > 0.75f)) {
+    int const x_264 = (*(tint_symbol_9)).numbers.arr[7];
+    float const x_267 = color.z;
+    color.z = (x_267 + float(x_264));
+  }
+  int const x_271 = (*(tint_symbol_9)).numbers.arr[8];
+  float const x_274 = color.z;
+  color.z = (x_274 + float(x_271));
+  float const x_278 = uv.x;
+  float const x_280 = uv.y;
+  if ((fabs((x_278 - x_280)) < 0.25f)) {
+    int const x_287 = (*(tint_symbol_9)).numbers.arr[9];
+    float const x_290 = color.x;
+    color.x = (x_290 + float(x_287));
+  }
+  float3 const x_293 = color;
+  float3 const x_294 = normalize(x_293);
+  *(tint_symbol_10) = float4(x_294.x, x_294.y, x_294.z, 1.0f);
+  float4 const x_299 = *(tint_symbol_7);
+  *(tint_symbol_11) = x_299;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread float4 tint_symbol_13 = 0.0f;
+  thread QuicksortObject tint_symbol_14 = {};
+  thread float4 tint_symbol_15 = 0.0f;
+  thread float4 tint_symbol_16 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_12 = x_GLF_pos_param;
+  main_1(x_34, &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_15, .gl_Position=tint_symbol_16};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_17) {
+  int temp = 0;
+  int const x_302 = *(i);
+  int const x_304 = (*(tint_symbol_17)).numbers.arr[x_302];
+  temp = x_304;
+  int const x_305 = *(i);
+  int const x_306 = *(j);
+  int const x_308 = (*(tint_symbol_17)).numbers.arr[x_306];
+  (*(tint_symbol_17)).numbers.arr[x_305] = x_308;
+  int const x_310 = *(j);
+  int const x_311 = temp;
+  (*(tint_symbol_17)).numbers.arr[x_310] = x_311;
+  return;
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_18) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_376 = top;
+  int const x_377 = (x_376 + 1);
+  top = x_377;
+  int const x_378 = l_1;
+  stack.arr[x_377] = x_378;
+  int const x_380 = top;
+  int const x_381 = (x_380 + 1);
+  top = x_381;
+  int const x_382 = h_1;
+  stack.arr[x_381] = x_382;
+  while (true) {
+    int const x_388 = top;
+    if ((x_388 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_391 = top;
+    top = (x_391 - 1);
+    int const x_394 = stack.arr[x_391];
+    h_1 = x_394;
+    int const x_395 = top;
+    top = (x_395 - 1);
+    int const x_398 = stack.arr[x_395];
+    l_1 = x_398;
+    int const x_399 = l_1;
+    param_4 = x_399;
+    int const x_400 = h_1;
+    param_5 = x_400;
+    int const x_401 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_18);
+    p = x_401;
+    int const x_402 = p;
+    int const x_404 = l_1;
+    if (((x_402 - 1) > x_404)) {
+      int const x_408 = top;
+      int const x_409 = (x_408 + 1);
+      top = x_409;
+      int const x_410 = l_1;
+      stack.arr[x_409] = x_410;
+      int const x_412 = top;
+      int const x_413 = (x_412 + 1);
+      top = x_413;
+      int const x_414 = p;
+      stack.arr[x_413] = (x_414 - 1);
+    }
+    int const x_417 = p;
+    int const x_419 = h_1;
+    if (((x_417 + 1) < x_419)) {
+      int const x_423 = top;
+      int const x_424 = (x_423 + 1);
+      top = x_424;
+      int const x_425 = p;
+      stack.arr[x_424] = (x_425 + 1);
+      int const x_428 = top;
+      int const x_429 = (x_428 + 1);
+      top = x_429;
+      int const x_430 = h_1;
+      stack.arr[x_429] = x_430;
+    }
+  }
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.spvasm
new file mode 100644
index 0000000..01d7e03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.spvasm
@@ -0,0 +1,713 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 478
+; Schema: 0
+               OpCapability Shader
+        %354 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %x_314 "x_314"
+               OpName %x_315 "x_315"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %main_1 "main_1"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %x_95 "x_95"
+               OpName %x_96 "x_96"
+               OpName %x_97 "x_97"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+         %36 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+        %116 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %125 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %132 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %136 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %140 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+        %143 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %242 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %373 = OpTypeFunction %void %main_out
+        %388 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+%performPartition_i1_i1_ = OpFunction %int None %29
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %34 = OpLabel
+      %x_314 = OpVariable %_ptr_Function_int Function %36
+      %x_315 = OpVariable %_ptr_Function_int Function %36
+      %pivot = OpVariable %_ptr_Function_int Function %36
+        %i_1 = OpVariable %_ptr_Function_int Function %36
+        %j_1 = OpVariable %_ptr_Function_int Function %36
+      %param = OpVariable %_ptr_Function_int Function %36
+    %param_1 = OpVariable %_ptr_Function_int Function %36
+    %param_2 = OpVariable %_ptr_Function_int Function %36
+    %param_3 = OpVariable %_ptr_Function_int Function %36
+         %46 = OpLoad %int %h
+         %49 = OpAccessChain %_ptr_Private_int %obj %uint_0 %46
+         %50 = OpLoad %int %49
+               OpStore %pivot %50
+         %52 = OpLoad %int %l
+         %54 = OpISub %int %52 %int_1
+               OpStore %i_1 %54
+         %56 = OpLoad %int %l
+               OpStore %j_1 %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %j_1
+         %63 = OpLoad %int %h
+         %64 = OpISub %int %63 %int_1
+         %65 = OpSLessThanEqual %bool %61 %64
+               OpSelectionMerge %67 None
+               OpBranchConditional %65 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %58
+         %67 = OpLabel
+         %70 = OpLoad %int %j_1
+         %71 = OpAccessChain %_ptr_Private_int %obj %uint_0 %70
+         %72 = OpLoad %int %71
+         %73 = OpLoad %int %pivot
+         %74 = OpSLessThanEqual %bool %72 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+         %77 = OpLoad %int %i_1
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %i_1 %78
+         %79 = OpLoad %int %i_1
+               OpStore %param %79
+         %80 = OpLoad %int %j_1
+               OpStore %param_1 %80
+         %81 = OpLoad %int %param
+         %82 = OpAccessChain %_ptr_Private_int %obj %uint_0 %81
+         %83 = OpLoad %int %82
+               OpStore %x_315 %83
+         %84 = OpLoad %int %param
+         %85 = OpLoad %int %param_1
+         %86 = OpAccessChain %_ptr_Private_int %obj %uint_0 %85
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Private_int %obj %uint_0 %84
+               OpStore %88 %87
+         %89 = OpLoad %int %param_1
+         %90 = OpLoad %int %x_315
+         %91 = OpAccessChain %_ptr_Private_int %obj %uint_0 %89
+               OpStore %91 %90
+               OpBranch %75
+         %75 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %92 = OpLoad %int %j_1
+         %93 = OpIAdd %int %92 %int_1
+               OpStore %j_1 %93
+               OpBranch %57
+         %58 = OpLabel
+         %94 = OpLoad %int %i_1
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %param_2 %95
+         %97 = OpLoad %int %h
+               OpStore %param_3 %97
+         %98 = OpLoad %int %param_2
+         %99 = OpAccessChain %_ptr_Private_int %obj %uint_0 %98
+        %100 = OpLoad %int %99
+               OpStore %x_314 %100
+        %101 = OpLoad %int %param_2
+        %102 = OpLoad %int %param_3
+        %103 = OpAccessChain %_ptr_Private_int %obj %uint_0 %102
+        %104 = OpLoad %int %103
+        %105 = OpAccessChain %_ptr_Private_int %obj %uint_0 %101
+               OpStore %105 %104
+        %106 = OpLoad %int %param_3
+        %107 = OpLoad %int %x_314
+        %108 = OpAccessChain %_ptr_Private_int %obj %uint_0 %106
+               OpStore %108 %107
+               OpSelectionMerge %110 None
+               OpBranchConditional %false %111 %112
+        %111 = OpLabel
+               OpBranch %110
+        %112 = OpLabel
+        %113 = OpLoad %int %i_1
+        %114 = OpIAdd %int %113 %int_1
+               OpReturnValue %114
+        %110 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %116
+        %119 = OpLabel
+       %x_91 = OpVariable %_ptr_Function_int Function %36
+       %x_92 = OpVariable %_ptr_Function_int Function %36
+       %x_93 = OpVariable %_ptr_Function_int Function %36
+       %x_94 = OpVariable %_ptr_Function__arr_int_uint_10 Function %125
+       %x_95 = OpVariable %_ptr_Function_int Function %36
+       %x_96 = OpVariable %_ptr_Function_int Function %36
+       %x_97 = OpVariable %_ptr_Function_int Function %36
+        %i_2 = OpVariable %_ptr_Function_int Function %36
+         %uv = OpVariable %_ptr_Function_v2float Function %132
+      %color = OpVariable %_ptr_Function_v3float Function %136
+        %137 = OpLoad %v4float %x_GLF_pos
+        %141 = OpFAdd %v4float %137 %140
+        %144 = OpFMul %v4float %141 %143
+               OpStore %x_GLF_FragCoord %144
+               OpStore %i_2 %int_0
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %149 = OpLoad %int %i_2
+        %151 = OpSLessThan %bool %149 %int_10
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %154
+        %153 = OpLabel
+               OpBranch %152
+        %154 = OpLabel
+               OpBranch %146
+        %152 = OpLabel
+        %155 = OpLoad %int %i_2
+        %156 = OpLoad %int %i_2
+        %157 = OpAccessChain %_ptr_Private_int %obj %uint_0 %155
+        %158 = OpISub %int %int_10 %156
+               OpStore %157 %158
+        %159 = OpLoad %int %i_2
+        %160 = OpLoad %int %i_2
+        %161 = OpAccessChain %_ptr_Private_int %obj %uint_0 %160
+        %162 = OpLoad %int %161
+        %163 = OpLoad %int %i_2
+        %164 = OpAccessChain %_ptr_Private_int %obj %uint_0 %163
+        %165 = OpLoad %int %164
+        %166 = OpAccessChain %_ptr_Private_int %obj %uint_0 %159
+        %167 = OpIMul %int %162 %165
+               OpStore %166 %167
+               OpBranch %147
+        %147 = OpLabel
+        %168 = OpLoad %int %i_2
+        %169 = OpIAdd %int %168 %int_1
+               OpStore %i_2 %169
+               OpBranch %145
+        %146 = OpLabel
+               OpStore %x_91 %int_0
+               OpStore %x_92 %int_9
+               OpStore %x_93 %int_n1
+        %172 = OpLoad %int %x_93
+        %173 = OpIAdd %int %172 %int_1
+               OpStore %x_93 %173
+        %174 = OpLoad %int %x_91
+        %175 = OpAccessChain %_ptr_Function_int %x_94 %173
+               OpStore %175 %174
+        %176 = OpLoad %int %x_93
+        %177 = OpIAdd %int %176 %int_1
+               OpStore %x_93 %177
+        %178 = OpLoad %int %x_92
+        %179 = OpAccessChain %_ptr_Function_int %x_94 %177
+               OpStore %179 %178
+               OpBranch %180
+        %180 = OpLabel
+               OpLoopMerge %181 %182 None
+               OpBranch %183
+        %183 = OpLabel
+        %184 = OpLoad %int %x_93
+        %185 = OpSGreaterThanEqual %bool %184 %int_0
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+               OpBranch %181
+        %186 = OpLabel
+        %189 = OpLoad %int %x_93
+        %190 = OpISub %int %189 %int_1
+               OpStore %x_93 %190
+        %191 = OpAccessChain %_ptr_Function_int %x_94 %189
+        %192 = OpLoad %int %191
+               OpStore %x_92 %192
+        %193 = OpLoad %int %x_93
+        %194 = OpISub %int %193 %int_1
+               OpStore %x_93 %194
+        %195 = OpAccessChain %_ptr_Function_int %x_94 %193
+        %196 = OpLoad %int %195
+               OpStore %x_91 %196
+        %197 = OpLoad %int %x_91
+               OpStore %x_96 %197
+        %198 = OpLoad %int %x_92
+               OpStore %x_97 %198
+        %199 = OpFunctionCall %int %performPartition_i1_i1_ %x_96 %x_97
+               OpStore %x_95 %199
+        %202 = OpLoad %int %x_95
+        %203 = OpLoad %int %x_91
+        %204 = OpISub %int %202 %int_1
+        %205 = OpSGreaterThan %bool %204 %203
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %206
+        %207 = OpLabel
+        %208 = OpLoad %int %x_93
+        %209 = OpIAdd %int %208 %int_1
+               OpStore %x_93 %209
+        %210 = OpLoad %int %x_91
+        %211 = OpAccessChain %_ptr_Function_int %x_94 %209
+               OpStore %211 %210
+        %212 = OpLoad %int %x_93
+        %213 = OpIAdd %int %212 %int_1
+               OpStore %x_93 %213
+        %214 = OpLoad %int %x_95
+        %215 = OpAccessChain %_ptr_Function_int %x_94 %213
+        %216 = OpISub %int %214 %int_1
+               OpStore %215 %216
+               OpBranch %206
+        %206 = OpLabel
+        %217 = OpLoad %int %x_95
+        %218 = OpLoad %int %x_92
+        %219 = OpIAdd %int %217 %int_1
+        %220 = OpSLessThan %bool %219 %218
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %221
+        %222 = OpLabel
+        %223 = OpLoad %int %x_93
+        %224 = OpIAdd %int %223 %int_1
+               OpStore %x_93 %224
+        %225 = OpLoad %int %x_95
+        %226 = OpAccessChain %_ptr_Function_int %x_94 %224
+        %227 = OpIAdd %int %225 %int_1
+               OpStore %226 %227
+        %228 = OpLoad %int %x_93
+        %229 = OpIAdd %int %228 %int_1
+               OpStore %x_93 %229
+        %230 = OpLoad %int %x_92
+        %231 = OpAccessChain %_ptr_Function_int %x_94 %229
+               OpStore %231 %230
+               OpBranch %221
+        %221 = OpLabel
+               OpBranch %182
+        %182 = OpLabel
+               OpBranch %180
+        %181 = OpLabel
+        %232 = OpLoad %v4float %x_GLF_FragCoord
+        %234 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %235 = OpLoad %v2float %234
+        %236 = OpCompositeExtract %float %232 0
+        %237 = OpCompositeExtract %float %232 1
+        %238 = OpCompositeConstruct %v2float %236 %237
+        %239 = OpFDiv %v2float %238 %235
+               OpStore %uv %239
+               OpStore %color %242
+        %243 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %244 = OpLoad %int %243
+        %246 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %247 = OpLoad %float %246
+        %248 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %249 = OpConvertSToF %float %244
+        %250 = OpFAdd %float %247 %249
+               OpStore %248 %250
+        %251 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %252 = OpLoad %float %251
+        %254 = OpFOrdGreaterThan %bool %252 %float_0_25
+               OpSelectionMerge %255 None
+               OpBranchConditional %254 %256 %255
+        %256 = OpLabel
+        %257 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %258 = OpLoad %int %257
+        %259 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %260 = OpLoad %float %259
+        %261 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %262 = OpConvertSToF %float %258
+        %263 = OpFAdd %float %260 %262
+               OpStore %261 %263
+               OpBranch %255
+        %255 = OpLabel
+        %264 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %265 = OpLoad %float %264
+        %267 = OpFOrdGreaterThan %bool %265 %float_0_5
+               OpSelectionMerge %268 None
+               OpBranchConditional %267 %269 %268
+        %269 = OpLabel
+        %271 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %272 = OpLoad %int %271
+        %274 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %275 = OpLoad %float %274
+        %276 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %277 = OpConvertSToF %float %272
+        %278 = OpFAdd %float %275 %277
+               OpStore %276 %278
+               OpBranch %268
+        %268 = OpLabel
+        %279 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %280 = OpLoad %float %279
+        %282 = OpFOrdGreaterThan %bool %280 %float_0_75
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %283
+        %284 = OpLabel
+        %286 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %287 = OpLoad %int %286
+        %289 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %290 = OpLoad %float %289
+        %291 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %292 = OpConvertSToF %float %287
+        %293 = OpFAdd %float %290 %292
+               OpStore %291 %293
+               OpBranch %283
+        %283 = OpLabel
+        %295 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %296 = OpLoad %int %295
+        %297 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %298 = OpLoad %float %297
+        %299 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %300 = OpConvertSToF %float %296
+        %301 = OpFAdd %float %298 %300
+               OpStore %299 %301
+        %302 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %303 = OpLoad %float %302
+        %304 = OpFOrdGreaterThan %bool %303 %float_0_25
+               OpSelectionMerge %305 None
+               OpBranchConditional %304 %306 %305
+        %306 = OpLabel
+        %308 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %309 = OpLoad %int %308
+        %310 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %311 = OpLoad %float %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %313 = OpConvertSToF %float %309
+        %314 = OpFAdd %float %311 %313
+               OpStore %312 %314
+               OpBranch %305
+        %305 = OpLabel
+        %315 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpFOrdGreaterThan %bool %316 %float_0_5
+               OpSelectionMerge %318 None
+               OpBranchConditional %317 %319 %318
+        %319 = OpLabel
+        %321 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %322 = OpLoad %int %321
+        %323 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %324 = OpLoad %float %323
+        %325 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %326 = OpConvertSToF %float %322
+        %327 = OpFAdd %float %324 %326
+               OpStore %325 %327
+               OpBranch %318
+        %318 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %329 = OpLoad %float %328
+        %330 = OpFOrdGreaterThan %bool %329 %float_0_75
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %331
+        %332 = OpLabel
+        %334 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %335 = OpLoad %int %334
+        %336 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %337 = OpLoad %float %336
+        %338 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %339 = OpConvertSToF %float %335
+        %340 = OpFAdd %float %337 %339
+               OpStore %338 %340
+               OpBranch %331
+        %331 = OpLabel
+        %342 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %343 = OpLoad %int %342
+        %344 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %345 = OpLoad %float %344
+        %346 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %347 = OpConvertSToF %float %343
+        %348 = OpFAdd %float %345 %347
+               OpStore %346 %348
+        %349 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %350 = OpLoad %float %349
+        %351 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %352 = OpLoad %float %351
+        %355 = OpFSub %float %350 %352
+        %353 = OpExtInst %float %354 FAbs %355
+        %356 = OpFOrdLessThan %bool %353 %float_0_25
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %357
+        %358 = OpLabel
+        %359 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %360 = OpLoad %int %359
+        %361 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %362 = OpLoad %float %361
+        %363 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %364 = OpConvertSToF %float %360
+        %365 = OpFAdd %float %362 %364
+               OpStore %363 %365
+               OpBranch %357
+        %357 = OpLabel
+        %366 = OpLoad %v3float %color
+        %367 = OpExtInst %v3float %354 Normalize %366
+        %368 = OpCompositeExtract %float %367 0
+        %369 = OpCompositeExtract %float %367 1
+        %370 = OpCompositeExtract %float %367 2
+        %371 = OpCompositeConstruct %v4float %368 %369 %370 %float_1
+               OpStore %frag_color %371
+        %372 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %372
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %373
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %377 = OpLabel
+        %378 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %378
+        %379 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %379
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %116
+        %381 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %382 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %382
+        %383 = OpFunctionCall %void %main_1
+        %385 = OpLoad %v4float %frag_color
+        %386 = OpLoad %v4float %gl_Position
+        %387 = OpCompositeConstruct %main_out %385 %386
+        %384 = OpFunctionCall %void %tint_symbol_4 %387
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %388
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %392 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %36
+        %395 = OpLoad %int %i
+        %396 = OpAccessChain %_ptr_Private_int %obj %uint_0 %395
+        %397 = OpLoad %int %396
+               OpStore %temp %397
+        %399 = OpLoad %int %i
+        %401 = OpLoad %int %j
+        %402 = OpAccessChain %_ptr_Private_int %obj %uint_0 %401
+        %403 = OpLoad %int %402
+        %404 = OpAccessChain %_ptr_Private_int %obj %uint_0 %399
+               OpStore %404 %403
+        %406 = OpLoad %int %j
+        %407 = OpLoad %int %temp
+        %408 = OpAccessChain %_ptr_Private_int %obj %uint_0 %406
+               OpStore %408 %407
+               OpReturn
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %116
+        %410 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %36
+        %h_1 = OpVariable %_ptr_Function_int Function %36
+        %top = OpVariable %_ptr_Function_int Function %36
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %125
+          %p = OpVariable %_ptr_Function_int Function %36
+    %param_4 = OpVariable %_ptr_Function_int Function %36
+    %param_5 = OpVariable %_ptr_Function_int Function %36
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %418 = OpLoad %int %top
+        %419 = OpIAdd %int %418 %int_1
+               OpStore %top %419
+        %420 = OpLoad %int %l_1
+        %421 = OpAccessChain %_ptr_Function_int %stack %419
+               OpStore %421 %420
+        %422 = OpLoad %int %top
+        %423 = OpIAdd %int %422 %int_1
+               OpStore %top %423
+        %424 = OpLoad %int %h_1
+        %425 = OpAccessChain %_ptr_Function_int %stack %423
+               OpStore %425 %424
+               OpBranch %426
+        %426 = OpLabel
+               OpLoopMerge %427 %428 None
+               OpBranch %429
+        %429 = OpLabel
+        %430 = OpLoad %int %top
+        %431 = OpSGreaterThanEqual %bool %430 %int_0
+               OpSelectionMerge %432 None
+               OpBranchConditional %431 %433 %434
+        %433 = OpLabel
+               OpBranch %432
+        %434 = OpLabel
+               OpBranch %427
+        %432 = OpLabel
+        %435 = OpLoad %int %top
+        %436 = OpISub %int %435 %int_1
+               OpStore %top %436
+        %437 = OpAccessChain %_ptr_Function_int %stack %435
+        %438 = OpLoad %int %437
+               OpStore %h_1 %438
+        %439 = OpLoad %int %top
+        %440 = OpISub %int %439 %int_1
+               OpStore %top %440
+        %441 = OpAccessChain %_ptr_Function_int %stack %439
+        %442 = OpLoad %int %441
+               OpStore %l_1 %442
+        %443 = OpLoad %int %l_1
+               OpStore %param_4 %443
+        %444 = OpLoad %int %h_1
+               OpStore %param_5 %444
+        %445 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %445
+        %448 = OpLoad %int %p
+        %449 = OpLoad %int %l_1
+        %450 = OpISub %int %448 %int_1
+        %451 = OpSGreaterThan %bool %450 %449
+               OpSelectionMerge %452 None
+               OpBranchConditional %451 %453 %452
+        %453 = OpLabel
+        %454 = OpLoad %int %top
+        %455 = OpIAdd %int %454 %int_1
+               OpStore %top %455
+        %456 = OpLoad %int %l_1
+        %457 = OpAccessChain %_ptr_Function_int %stack %455
+               OpStore %457 %456
+        %458 = OpLoad %int %top
+        %459 = OpIAdd %int %458 %int_1
+               OpStore %top %459
+        %460 = OpLoad %int %p
+        %461 = OpAccessChain %_ptr_Function_int %stack %459
+        %462 = OpISub %int %460 %int_1
+               OpStore %461 %462
+               OpBranch %452
+        %452 = OpLabel
+        %463 = OpLoad %int %p
+        %464 = OpLoad %int %h_1
+        %465 = OpIAdd %int %463 %int_1
+        %466 = OpSLessThan %bool %465 %464
+               OpSelectionMerge %467 None
+               OpBranchConditional %466 %468 %467
+        %468 = OpLabel
+        %469 = OpLoad %int %top
+        %470 = OpIAdd %int %469 %int_1
+               OpStore %top %470
+        %471 = OpLoad %int %p
+        %472 = OpAccessChain %_ptr_Function_int %stack %470
+        %473 = OpIAdd %int %471 %int_1
+               OpStore %472 %473
+        %474 = OpLoad %int %top
+        %475 = OpIAdd %int %474 %int_1
+               OpStore %top %475
+        %476 = OpLoad %int %h_1
+        %477 = OpAccessChain %_ptr_Function_int %stack %475
+               OpStore %477 %476
+               OpBranch %467
+        %467 = OpLabel
+               OpBranch %428
+        %428 = OpLabel
+               OpBranch %426
+        %427 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.wgsl
new file mode 100644
index 0000000..7c15a5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.wgsl
@@ -0,0 +1,356 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var x_314 : i32;
+  var x_315 : i32;
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_316 : i32 = *(h);
+  let x_318 : i32 = obj.numbers[x_316];
+  pivot = x_318;
+  let x_319 : i32 = *(l);
+  i_1 = (x_319 - 1);
+  let x_321 : i32 = *(l);
+  j_1 = x_321;
+  loop {
+    let x_326 : i32 = j_1;
+    let x_327 : i32 = *(h);
+    if ((x_326 <= (x_327 - 1))) {
+    } else {
+      break;
+    }
+    let x_331 : i32 = j_1;
+    let x_333 : i32 = obj.numbers[x_331];
+    let x_334 : i32 = pivot;
+    if ((x_333 <= x_334)) {
+      let x_338 : i32 = i_1;
+      i_1 = (x_338 + 1);
+      let x_340 : i32 = i_1;
+      param = x_340;
+      let x_341 : i32 = j_1;
+      param_1 = x_341;
+      let x_342 : i32 = param;
+      let x_344 : i32 = obj.numbers[x_342];
+      x_315 = x_344;
+      let x_345 : i32 = param;
+      let x_346 : i32 = param_1;
+      let x_348 : i32 = obj.numbers[x_346];
+      obj.numbers[x_345] = x_348;
+      let x_350 : i32 = param_1;
+      let x_351 : i32 = x_315;
+      obj.numbers[x_350] = x_351;
+    }
+
+    continuing {
+      let x_353 : i32 = j_1;
+      j_1 = (x_353 + 1);
+    }
+  }
+  let x_355 : i32 = i_1;
+  param_2 = (x_355 + 1);
+  let x_357 : i32 = *(h);
+  param_3 = x_357;
+  let x_358 : i32 = param_2;
+  let x_360 : i32 = obj.numbers[x_358];
+  x_314 = x_360;
+  let x_361 : i32 = param_2;
+  let x_362 : i32 = param_3;
+  let x_364 : i32 = obj.numbers[x_362];
+  obj.numbers[x_361] = x_364;
+  let x_366 : i32 = param_3;
+  let x_367 : i32 = x_314;
+  obj.numbers[x_366] = x_367;
+  if (false) {
+  } else {
+    let x_372 : i32 = i_1;
+    return (x_372 + 1);
+  }
+  return 0;
+}
+
+fn main_1() {
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : array<i32, 10>;
+  var x_95 : i32;
+  var x_96 : i32;
+  var x_97 : i32;
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_98 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_98 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_105 : i32 = i_2;
+    if ((x_105 < 10)) {
+    } else {
+      break;
+    }
+    let x_108 : i32 = i_2;
+    let x_109 : i32 = i_2;
+    obj.numbers[x_108] = (10 - x_109);
+    let x_112 : i32 = i_2;
+    let x_113 : i32 = i_2;
+    let x_115 : i32 = obj.numbers[x_113];
+    let x_116 : i32 = i_2;
+    let x_118 : i32 = obj.numbers[x_116];
+    obj.numbers[x_112] = (x_115 * x_118);
+
+    continuing {
+      let x_121 : i32 = i_2;
+      i_2 = (x_121 + 1);
+    }
+  }
+  x_91 = 0;
+  x_92 = 9;
+  x_93 = -1;
+  let x_123 : i32 = x_93;
+  let x_124 : i32 = (x_123 + 1);
+  x_93 = x_124;
+  let x_125 : i32 = x_91;
+  x_94[x_124] = x_125;
+  let x_127 : i32 = x_93;
+  let x_128 : i32 = (x_127 + 1);
+  x_93 = x_128;
+  let x_129 : i32 = x_92;
+  x_94[x_128] = x_129;
+  loop {
+    let x_135 : i32 = x_93;
+    if ((x_135 >= 0)) {
+    } else {
+      break;
+    }
+    let x_138 : i32 = x_93;
+    x_93 = (x_138 - 1);
+    let x_141 : i32 = x_94[x_138];
+    x_92 = x_141;
+    let x_142 : i32 = x_93;
+    x_93 = (x_142 - 1);
+    let x_145 : i32 = x_94[x_142];
+    x_91 = x_145;
+    let x_146 : i32 = x_91;
+    x_96 = x_146;
+    let x_147 : i32 = x_92;
+    x_97 = x_147;
+    let x_148 : i32 = performPartition_i1_i1_(&(x_96), &(x_97));
+    x_95 = x_148;
+    let x_149 : i32 = x_95;
+    let x_151 : i32 = x_91;
+    if (((x_149 - 1) > x_151)) {
+      let x_155 : i32 = x_93;
+      let x_156 : i32 = (x_155 + 1);
+      x_93 = x_156;
+      let x_157 : i32 = x_91;
+      x_94[x_156] = x_157;
+      let x_159 : i32 = x_93;
+      let x_160 : i32 = (x_159 + 1);
+      x_93 = x_160;
+      let x_161 : i32 = x_95;
+      x_94[x_160] = (x_161 - 1);
+    }
+    let x_164 : i32 = x_95;
+    let x_166 : i32 = x_92;
+    if (((x_164 + 1) < x_166)) {
+      let x_170 : i32 = x_93;
+      let x_171 : i32 = (x_170 + 1);
+      x_93 = x_171;
+      let x_172 : i32 = x_95;
+      x_94[x_171] = (x_172 + 1);
+      let x_175 : i32 = x_93;
+      let x_176 : i32 = (x_175 + 1);
+      x_93 = x_176;
+      let x_177 : i32 = x_92;
+      x_94[x_176] = x_177;
+    }
+  }
+  let x_179 : vec4<f32> = x_GLF_FragCoord;
+  let x_182 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_179.x, x_179.y) / x_182);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_185 : i32 = obj.numbers[0];
+  let x_188 : f32 = color.x;
+  color.x = (x_188 + f32(x_185));
+  let x_192 : f32 = uv.x;
+  if ((x_192 > 0.25)) {
+    let x_197 : i32 = obj.numbers[1];
+    let x_200 : f32 = color.x;
+    color.x = (x_200 + f32(x_197));
+  }
+  let x_204 : f32 = uv.x;
+  if ((x_204 > 0.5)) {
+    let x_209 : i32 = obj.numbers[2];
+    let x_212 : f32 = color.y;
+    color.y = (x_212 + f32(x_209));
+  }
+  let x_216 : f32 = uv.x;
+  if ((x_216 > 0.75)) {
+    let x_221 : i32 = obj.numbers[3];
+    let x_224 : f32 = color.z;
+    color.z = (x_224 + f32(x_221));
+  }
+  let x_228 : i32 = obj.numbers[4];
+  let x_231 : f32 = color.y;
+  color.y = (x_231 + f32(x_228));
+  let x_235 : f32 = uv.y;
+  if ((x_235 > 0.25)) {
+    let x_240 : i32 = obj.numbers[5];
+    let x_243 : f32 = color.x;
+    color.x = (x_243 + f32(x_240));
+  }
+  let x_247 : f32 = uv.y;
+  if ((x_247 > 0.5)) {
+    let x_252 : i32 = obj.numbers[6];
+    let x_255 : f32 = color.y;
+    color.y = (x_255 + f32(x_252));
+  }
+  let x_259 : f32 = uv.y;
+  if ((x_259 > 0.75)) {
+    let x_264 : i32 = obj.numbers[7];
+    let x_267 : f32 = color.z;
+    color.z = (x_267 + f32(x_264));
+  }
+  let x_271 : i32 = obj.numbers[8];
+  let x_274 : f32 = color.z;
+  color.z = (x_274 + f32(x_271));
+  let x_278 : f32 = uv.x;
+  let x_280 : f32 = uv.y;
+  if ((abs((x_278 - x_280)) < 0.25)) {
+    let x_287 : i32 = obj.numbers[9];
+    let x_290 : f32 = color.x;
+    color.x = (x_290 + f32(x_287));
+  }
+  let x_293 : vec3<f32> = color;
+  let x_294 : vec3<f32> = normalize(x_293);
+  frag_color = vec4<f32>(x_294.x, x_294.y, x_294.z, 1.0);
+  let x_299 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_299;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_302 : i32 = *(i);
+  let x_304 : i32 = obj.numbers[x_302];
+  temp = x_304;
+  let x_305 : i32 = *(i);
+  let x_306 : i32 = *(j);
+  let x_308 : i32 = obj.numbers[x_306];
+  obj.numbers[x_305] = x_308;
+  let x_310 : i32 = *(j);
+  let x_311 : i32 = temp;
+  obj.numbers[x_310] = x_311;
+  return;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_376 : i32 = top;
+  let x_377 : i32 = (x_376 + 1);
+  top = x_377;
+  let x_378 : i32 = l_1;
+  stack[x_377] = x_378;
+  let x_380 : i32 = top;
+  let x_381 : i32 = (x_380 + 1);
+  top = x_381;
+  let x_382 : i32 = h_1;
+  stack[x_381] = x_382;
+  loop {
+    let x_388 : i32 = top;
+    if ((x_388 >= 0)) {
+    } else {
+      break;
+    }
+    let x_391 : i32 = top;
+    top = (x_391 - 1);
+    let x_394 : i32 = stack[x_391];
+    h_1 = x_394;
+    let x_395 : i32 = top;
+    top = (x_395 - 1);
+    let x_398 : i32 = stack[x_395];
+    l_1 = x_398;
+    let x_399 : i32 = l_1;
+    param_4 = x_399;
+    let x_400 : i32 = h_1;
+    param_5 = x_400;
+    let x_401 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_401;
+    let x_402 : i32 = p;
+    let x_404 : i32 = l_1;
+    if (((x_402 - 1) > x_404)) {
+      let x_408 : i32 = top;
+      let x_409 : i32 = (x_408 + 1);
+      top = x_409;
+      let x_410 : i32 = l_1;
+      stack[x_409] = x_410;
+      let x_412 : i32 = top;
+      let x_413 : i32 = (x_412 + 1);
+      top = x_413;
+      let x_414 : i32 = p;
+      stack[x_413] = (x_414 - 1);
+    }
+    let x_417 : i32 = p;
+    let x_419 : i32 = h_1;
+    if (((x_417 + 1) < x_419)) {
+      let x_423 : i32 = top;
+      let x_424 : i32 = (x_423 + 1);
+      top = x_424;
+      let x_425 : i32 = p;
+      stack[x_424] = (x_425 + 1);
+      let x_428 : i32 = top;
+      let x_429 : i32 = (x_428 + 1);
+      top = x_429;
+      let x_430 : i32 = h_1;
+      stack[x_429] = x_430;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
new file mode 100644
index 0000000..7c15a5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
@@ -0,0 +1,356 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var x_314 : i32;
+  var x_315 : i32;
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_316 : i32 = *(h);
+  let x_318 : i32 = obj.numbers[x_316];
+  pivot = x_318;
+  let x_319 : i32 = *(l);
+  i_1 = (x_319 - 1);
+  let x_321 : i32 = *(l);
+  j_1 = x_321;
+  loop {
+    let x_326 : i32 = j_1;
+    let x_327 : i32 = *(h);
+    if ((x_326 <= (x_327 - 1))) {
+    } else {
+      break;
+    }
+    let x_331 : i32 = j_1;
+    let x_333 : i32 = obj.numbers[x_331];
+    let x_334 : i32 = pivot;
+    if ((x_333 <= x_334)) {
+      let x_338 : i32 = i_1;
+      i_1 = (x_338 + 1);
+      let x_340 : i32 = i_1;
+      param = x_340;
+      let x_341 : i32 = j_1;
+      param_1 = x_341;
+      let x_342 : i32 = param;
+      let x_344 : i32 = obj.numbers[x_342];
+      x_315 = x_344;
+      let x_345 : i32 = param;
+      let x_346 : i32 = param_1;
+      let x_348 : i32 = obj.numbers[x_346];
+      obj.numbers[x_345] = x_348;
+      let x_350 : i32 = param_1;
+      let x_351 : i32 = x_315;
+      obj.numbers[x_350] = x_351;
+    }
+
+    continuing {
+      let x_353 : i32 = j_1;
+      j_1 = (x_353 + 1);
+    }
+  }
+  let x_355 : i32 = i_1;
+  param_2 = (x_355 + 1);
+  let x_357 : i32 = *(h);
+  param_3 = x_357;
+  let x_358 : i32 = param_2;
+  let x_360 : i32 = obj.numbers[x_358];
+  x_314 = x_360;
+  let x_361 : i32 = param_2;
+  let x_362 : i32 = param_3;
+  let x_364 : i32 = obj.numbers[x_362];
+  obj.numbers[x_361] = x_364;
+  let x_366 : i32 = param_3;
+  let x_367 : i32 = x_314;
+  obj.numbers[x_366] = x_367;
+  if (false) {
+  } else {
+    let x_372 : i32 = i_1;
+    return (x_372 + 1);
+  }
+  return 0;
+}
+
+fn main_1() {
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : array<i32, 10>;
+  var x_95 : i32;
+  var x_96 : i32;
+  var x_97 : i32;
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_98 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_98 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_105 : i32 = i_2;
+    if ((x_105 < 10)) {
+    } else {
+      break;
+    }
+    let x_108 : i32 = i_2;
+    let x_109 : i32 = i_2;
+    obj.numbers[x_108] = (10 - x_109);
+    let x_112 : i32 = i_2;
+    let x_113 : i32 = i_2;
+    let x_115 : i32 = obj.numbers[x_113];
+    let x_116 : i32 = i_2;
+    let x_118 : i32 = obj.numbers[x_116];
+    obj.numbers[x_112] = (x_115 * x_118);
+
+    continuing {
+      let x_121 : i32 = i_2;
+      i_2 = (x_121 + 1);
+    }
+  }
+  x_91 = 0;
+  x_92 = 9;
+  x_93 = -1;
+  let x_123 : i32 = x_93;
+  let x_124 : i32 = (x_123 + 1);
+  x_93 = x_124;
+  let x_125 : i32 = x_91;
+  x_94[x_124] = x_125;
+  let x_127 : i32 = x_93;
+  let x_128 : i32 = (x_127 + 1);
+  x_93 = x_128;
+  let x_129 : i32 = x_92;
+  x_94[x_128] = x_129;
+  loop {
+    let x_135 : i32 = x_93;
+    if ((x_135 >= 0)) {
+    } else {
+      break;
+    }
+    let x_138 : i32 = x_93;
+    x_93 = (x_138 - 1);
+    let x_141 : i32 = x_94[x_138];
+    x_92 = x_141;
+    let x_142 : i32 = x_93;
+    x_93 = (x_142 - 1);
+    let x_145 : i32 = x_94[x_142];
+    x_91 = x_145;
+    let x_146 : i32 = x_91;
+    x_96 = x_146;
+    let x_147 : i32 = x_92;
+    x_97 = x_147;
+    let x_148 : i32 = performPartition_i1_i1_(&(x_96), &(x_97));
+    x_95 = x_148;
+    let x_149 : i32 = x_95;
+    let x_151 : i32 = x_91;
+    if (((x_149 - 1) > x_151)) {
+      let x_155 : i32 = x_93;
+      let x_156 : i32 = (x_155 + 1);
+      x_93 = x_156;
+      let x_157 : i32 = x_91;
+      x_94[x_156] = x_157;
+      let x_159 : i32 = x_93;
+      let x_160 : i32 = (x_159 + 1);
+      x_93 = x_160;
+      let x_161 : i32 = x_95;
+      x_94[x_160] = (x_161 - 1);
+    }
+    let x_164 : i32 = x_95;
+    let x_166 : i32 = x_92;
+    if (((x_164 + 1) < x_166)) {
+      let x_170 : i32 = x_93;
+      let x_171 : i32 = (x_170 + 1);
+      x_93 = x_171;
+      let x_172 : i32 = x_95;
+      x_94[x_171] = (x_172 + 1);
+      let x_175 : i32 = x_93;
+      let x_176 : i32 = (x_175 + 1);
+      x_93 = x_176;
+      let x_177 : i32 = x_92;
+      x_94[x_176] = x_177;
+    }
+  }
+  let x_179 : vec4<f32> = x_GLF_FragCoord;
+  let x_182 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_179.x, x_179.y) / x_182);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_185 : i32 = obj.numbers[0];
+  let x_188 : f32 = color.x;
+  color.x = (x_188 + f32(x_185));
+  let x_192 : f32 = uv.x;
+  if ((x_192 > 0.25)) {
+    let x_197 : i32 = obj.numbers[1];
+    let x_200 : f32 = color.x;
+    color.x = (x_200 + f32(x_197));
+  }
+  let x_204 : f32 = uv.x;
+  if ((x_204 > 0.5)) {
+    let x_209 : i32 = obj.numbers[2];
+    let x_212 : f32 = color.y;
+    color.y = (x_212 + f32(x_209));
+  }
+  let x_216 : f32 = uv.x;
+  if ((x_216 > 0.75)) {
+    let x_221 : i32 = obj.numbers[3];
+    let x_224 : f32 = color.z;
+    color.z = (x_224 + f32(x_221));
+  }
+  let x_228 : i32 = obj.numbers[4];
+  let x_231 : f32 = color.y;
+  color.y = (x_231 + f32(x_228));
+  let x_235 : f32 = uv.y;
+  if ((x_235 > 0.25)) {
+    let x_240 : i32 = obj.numbers[5];
+    let x_243 : f32 = color.x;
+    color.x = (x_243 + f32(x_240));
+  }
+  let x_247 : f32 = uv.y;
+  if ((x_247 > 0.5)) {
+    let x_252 : i32 = obj.numbers[6];
+    let x_255 : f32 = color.y;
+    color.y = (x_255 + f32(x_252));
+  }
+  let x_259 : f32 = uv.y;
+  if ((x_259 > 0.75)) {
+    let x_264 : i32 = obj.numbers[7];
+    let x_267 : f32 = color.z;
+    color.z = (x_267 + f32(x_264));
+  }
+  let x_271 : i32 = obj.numbers[8];
+  let x_274 : f32 = color.z;
+  color.z = (x_274 + f32(x_271));
+  let x_278 : f32 = uv.x;
+  let x_280 : f32 = uv.y;
+  if ((abs((x_278 - x_280)) < 0.25)) {
+    let x_287 : i32 = obj.numbers[9];
+    let x_290 : f32 = color.x;
+    color.x = (x_290 + f32(x_287));
+  }
+  let x_293 : vec3<f32> = color;
+  let x_294 : vec3<f32> = normalize(x_293);
+  frag_color = vec4<f32>(x_294.x, x_294.y, x_294.z, 1.0);
+  let x_299 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_299;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_302 : i32 = *(i);
+  let x_304 : i32 = obj.numbers[x_302];
+  temp = x_304;
+  let x_305 : i32 = *(i);
+  let x_306 : i32 = *(j);
+  let x_308 : i32 = obj.numbers[x_306];
+  obj.numbers[x_305] = x_308;
+  let x_310 : i32 = *(j);
+  let x_311 : i32 = temp;
+  obj.numbers[x_310] = x_311;
+  return;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_376 : i32 = top;
+  let x_377 : i32 = (x_376 + 1);
+  top = x_377;
+  let x_378 : i32 = l_1;
+  stack[x_377] = x_378;
+  let x_380 : i32 = top;
+  let x_381 : i32 = (x_380 + 1);
+  top = x_381;
+  let x_382 : i32 = h_1;
+  stack[x_381] = x_382;
+  loop {
+    let x_388 : i32 = top;
+    if ((x_388 >= 0)) {
+    } else {
+      break;
+    }
+    let x_391 : i32 = top;
+    top = (x_391 - 1);
+    let x_394 : i32 = stack[x_391];
+    h_1 = x_394;
+    let x_395 : i32 = top;
+    top = (x_395 - 1);
+    let x_398 : i32 = stack[x_395];
+    l_1 = x_398;
+    let x_399 : i32 = l_1;
+    param_4 = x_399;
+    let x_400 : i32 = h_1;
+    param_5 = x_400;
+    let x_401 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_401;
+    let x_402 : i32 = p;
+    let x_404 : i32 = l_1;
+    if (((x_402 - 1) > x_404)) {
+      let x_408 : i32 = top;
+      let x_409 : i32 = (x_408 + 1);
+      top = x_409;
+      let x_410 : i32 = l_1;
+      stack[x_409] = x_410;
+      let x_412 : i32 = top;
+      let x_413 : i32 = (x_412 + 1);
+      top = x_413;
+      let x_414 : i32 = p;
+      stack[x_413] = (x_414 - 1);
+    }
+    let x_417 : i32 = p;
+    let x_419 : i32 = h_1;
+    if (((x_417 + 1) < x_419)) {
+      let x_423 : i32 = top;
+      let x_424 : i32 = (x_423 + 1);
+      top = x_424;
+      let x_425 : i32 = p;
+      stack[x_424] = (x_425 + 1);
+      let x_428 : i32 = top;
+      let x_429 : i32 = (x_428 + 1);
+      top = x_429;
+      let x_430 : i32 = h_1;
+      stack[x_429] = x_430;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.hlsl
new file mode 100644
index 0000000..dd128c4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.hlsl
@@ -0,0 +1,284 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b0, space0) {
+  uint4 x_34[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int x_314 = 0;
+  int x_315 = 0;
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_316 = h;
+  const int x_318 = obj.numbers[x_316];
+  pivot = x_318;
+  const int x_319 = l;
+  i_1 = (x_319 - 1);
+  const int x_321 = l;
+  j_1 = x_321;
+  while (true) {
+    const int x_326 = j_1;
+    const int x_327 = h;
+    if ((x_326 <= (x_327 - 1))) {
+    } else {
+      break;
+    }
+    const int x_333 = obj.numbers[j_1];
+    if ((x_333 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      const int x_344 = obj.numbers[param];
+      x_315 = x_344;
+      const int x_345 = param;
+      const int x_348 = obj.numbers[param_1];
+      obj.numbers[x_345] = x_348;
+      obj.numbers[param_1] = x_315;
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_357 = h;
+  param_3 = x_357;
+  const int x_360 = obj.numbers[param_2];
+  x_314 = x_360;
+  const int x_361 = param_2;
+  const int x_364 = obj.numbers[param_3];
+  obj.numbers[x_361] = x_364;
+  obj.numbers[param_3] = x_314;
+  if (false) {
+  } else {
+    return (i_1 + 1);
+  }
+  return 0;
+}
+
+void main_1() {
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  int x_94[10] = (int[10])0;
+  int x_95 = 0;
+  int x_96 = 0;
+  int x_97 = 0;
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_112 = i_2;
+      const int x_115 = obj.numbers[i_2];
+      const int x_118 = obj.numbers[i_2];
+      obj.numbers[x_112] = (x_115 * x_118);
+    }
+  }
+  x_91 = 0;
+  x_92 = 9;
+  x_93 = -1;
+  const int x_124 = (x_93 + 1);
+  x_93 = x_124;
+  x_94[x_124] = x_91;
+  const int x_128 = (x_93 + 1);
+  x_93 = x_128;
+  x_94[x_128] = x_92;
+  while (true) {
+    if ((x_93 >= 0)) {
+    } else {
+      break;
+    }
+    const int x_138 = x_93;
+    x_93 = (x_138 - 1);
+    const int x_141 = x_94[x_138];
+    x_92 = x_141;
+    const int x_142 = x_93;
+    x_93 = (x_142 - 1);
+    const int x_145 = x_94[x_142];
+    x_91 = x_145;
+    x_96 = x_91;
+    x_97 = x_92;
+    const int x_148 = performPartition_i1_i1_(x_96, x_97);
+    x_95 = x_148;
+    if (((x_95 - 1) > x_91)) {
+      const int x_156 = (x_93 + 1);
+      x_93 = x_156;
+      x_94[x_156] = x_91;
+      const int x_160 = (x_93 + 1);
+      x_93 = x_160;
+      x_94[x_160] = (x_95 - 1);
+    }
+    if (((x_95 + 1) < x_92)) {
+      const int x_171 = (x_93 + 1);
+      x_93 = x_171;
+      x_94[x_171] = (x_95 + 1);
+      const int x_176 = (x_93 + 1);
+      x_93 = x_176;
+      x_94[x_176] = x_92;
+    }
+  }
+  const float4 x_179 = x_GLF_FragCoord;
+  const float2 x_182 = asfloat(x_34[0].xy);
+  uv = (float2(x_179.x, x_179.y) / x_182);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_185 = obj.numbers[0];
+  const float x_188 = color.x;
+  color.x = (x_188 + float(x_185));
+  const float x_192 = uv.x;
+  if ((x_192 > 0.25f)) {
+    const int x_197 = obj.numbers[1];
+    const float x_200 = color.x;
+    color.x = (x_200 + float(x_197));
+  }
+  const float x_204 = uv.x;
+  if ((x_204 > 0.5f)) {
+    const int x_209 = obj.numbers[2];
+    const float x_212 = color.y;
+    color.y = (x_212 + float(x_209));
+  }
+  const float x_216 = uv.x;
+  if ((x_216 > 0.75f)) {
+    const int x_221 = obj.numbers[3];
+    const float x_224 = color.z;
+    color.z = (x_224 + float(x_221));
+  }
+  const int x_228 = obj.numbers[4];
+  const float x_231 = color.y;
+  color.y = (x_231 + float(x_228));
+  const float x_235 = uv.y;
+  if ((x_235 > 0.25f)) {
+    const int x_240 = obj.numbers[5];
+    const float x_243 = color.x;
+    color.x = (x_243 + float(x_240));
+  }
+  const float x_247 = uv.y;
+  if ((x_247 > 0.5f)) {
+    const int x_252 = obj.numbers[6];
+    const float x_255 = color.y;
+    color.y = (x_255 + float(x_252));
+  }
+  const float x_259 = uv.y;
+  if ((x_259 > 0.75f)) {
+    const int x_264 = obj.numbers[7];
+    const float x_267 = color.z;
+    color.z = (x_267 + float(x_264));
+  }
+  const int x_271 = obj.numbers[8];
+  const float x_274 = color.z;
+  color.z = (x_274 + float(x_271));
+  const float x_278 = uv.x;
+  const float x_280 = uv.y;
+  if ((abs((x_278 - x_280)) < 0.25f)) {
+    const int x_287 = obj.numbers[9];
+    const float x_290 = color.x;
+    color.x = (x_290 + float(x_287));
+  }
+  const float3 x_294 = normalize(color);
+  frag_color = float4(x_294.x, x_294.y, x_294.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_5;
+}
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_302 = i;
+  const int x_304 = obj.numbers[x_302];
+  temp = x_304;
+  const int x_305 = i;
+  const int x_306 = j;
+  const int x_308 = obj.numbers[x_306];
+  obj.numbers[x_305] = x_308;
+  const int x_310 = j;
+  obj.numbers[x_310] = temp;
+  return;
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_377 = (top + 1);
+  top = x_377;
+  stack[x_377] = l_1;
+  const int x_381 = (top + 1);
+  top = x_381;
+  stack[x_381] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_391 = top;
+    top = (x_391 - 1);
+    const int x_394 = stack[x_391];
+    h_1 = x_394;
+    const int x_395 = top;
+    top = (x_395 - 1);
+    const int x_398 = stack[x_395];
+    l_1 = x_398;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_401 = performPartition_i1_i1_(param_4, param_5);
+    p = x_401;
+    if (((p - 1) > l_1)) {
+      const int x_409 = (top + 1);
+      top = x_409;
+      stack[x_409] = l_1;
+      const int x_413 = (top + 1);
+      top = x_413;
+      stack[x_413] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_424 = (top + 1);
+      top = x_424;
+      stack[x_424] = (p + 1);
+      const int x_429 = (top + 1);
+      top = x_429;
+      stack[x_429] = h_1;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.msl
new file mode 100644
index 0000000..f6f5a8a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.msl
@@ -0,0 +1,358 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_6) {
+  int x_314 = 0;
+  int x_315 = 0;
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_316 = *(h);
+  int const x_318 = (*(tint_symbol_6)).numbers.arr[x_316];
+  pivot = x_318;
+  int const x_319 = *(l);
+  i_1 = (x_319 - 1);
+  int const x_321 = *(l);
+  j_1 = x_321;
+  while (true) {
+    int const x_326 = j_1;
+    int const x_327 = *(h);
+    if ((x_326 <= (x_327 - 1))) {
+    } else {
+      break;
+    }
+    int const x_331 = j_1;
+    int const x_333 = (*(tint_symbol_6)).numbers.arr[x_331];
+    int const x_334 = pivot;
+    if ((x_333 <= x_334)) {
+      int const x_338 = i_1;
+      i_1 = (x_338 + 1);
+      int const x_340 = i_1;
+      param = x_340;
+      int const x_341 = j_1;
+      param_1 = x_341;
+      int const x_342 = param;
+      int const x_344 = (*(tint_symbol_6)).numbers.arr[x_342];
+      x_315 = x_344;
+      int const x_345 = param;
+      int const x_346 = param_1;
+      int const x_348 = (*(tint_symbol_6)).numbers.arr[x_346];
+      (*(tint_symbol_6)).numbers.arr[x_345] = x_348;
+      int const x_350 = param_1;
+      int const x_351 = x_315;
+      (*(tint_symbol_6)).numbers.arr[x_350] = x_351;
+    }
+    {
+      int const x_353 = j_1;
+      j_1 = (x_353 + 1);
+    }
+  }
+  int const x_355 = i_1;
+  param_2 = (x_355 + 1);
+  int const x_357 = *(h);
+  param_3 = x_357;
+  int const x_358 = param_2;
+  int const x_360 = (*(tint_symbol_6)).numbers.arr[x_358];
+  x_314 = x_360;
+  int const x_361 = param_2;
+  int const x_362 = param_3;
+  int const x_364 = (*(tint_symbol_6)).numbers.arr[x_362];
+  (*(tint_symbol_6)).numbers.arr[x_361] = x_364;
+  int const x_366 = param_3;
+  int const x_367 = x_314;
+  (*(tint_symbol_6)).numbers.arr[x_366] = x_367;
+  if (false) {
+  } else {
+    int const x_372 = i_1;
+    return (x_372 + 1);
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_34, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8, thread QuicksortObject* const tint_symbol_9, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int x_91 = 0;
+  int x_92 = 0;
+  int x_93 = 0;
+  tint_array_wrapper x_94 = {};
+  int x_95 = 0;
+  int x_96 = 0;
+  int x_97 = 0;
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_98 = *(tint_symbol_7);
+  *(tint_symbol_8) = ((x_98 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_105 = i_2;
+    if ((x_105 < 10)) {
+    } else {
+      break;
+    }
+    int const x_108 = i_2;
+    int const x_109 = i_2;
+    (*(tint_symbol_9)).numbers.arr[x_108] = (10 - x_109);
+    int const x_112 = i_2;
+    int const x_113 = i_2;
+    int const x_115 = (*(tint_symbol_9)).numbers.arr[x_113];
+    int const x_116 = i_2;
+    int const x_118 = (*(tint_symbol_9)).numbers.arr[x_116];
+    (*(tint_symbol_9)).numbers.arr[x_112] = (x_115 * x_118);
+    {
+      int const x_121 = i_2;
+      i_2 = (x_121 + 1);
+    }
+  }
+  x_91 = 0;
+  x_92 = 9;
+  x_93 = -1;
+  int const x_123 = x_93;
+  int const x_124 = (x_123 + 1);
+  x_93 = x_124;
+  int const x_125 = x_91;
+  x_94.arr[x_124] = x_125;
+  int const x_127 = x_93;
+  int const x_128 = (x_127 + 1);
+  x_93 = x_128;
+  int const x_129 = x_92;
+  x_94.arr[x_128] = x_129;
+  while (true) {
+    int const x_135 = x_93;
+    if ((x_135 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_138 = x_93;
+    x_93 = (x_138 - 1);
+    int const x_141 = x_94.arr[x_138];
+    x_92 = x_141;
+    int const x_142 = x_93;
+    x_93 = (x_142 - 1);
+    int const x_145 = x_94.arr[x_142];
+    x_91 = x_145;
+    int const x_146 = x_91;
+    x_96 = x_146;
+    int const x_147 = x_92;
+    x_97 = x_147;
+    int const x_148 = performPartition_i1_i1_(&(x_96), &(x_97), tint_symbol_9);
+    x_95 = x_148;
+    int const x_149 = x_95;
+    int const x_151 = x_91;
+    if (((x_149 - 1) > x_151)) {
+      int const x_155 = x_93;
+      int const x_156 = (x_155 + 1);
+      x_93 = x_156;
+      int const x_157 = x_91;
+      x_94.arr[x_156] = x_157;
+      int const x_159 = x_93;
+      int const x_160 = (x_159 + 1);
+      x_93 = x_160;
+      int const x_161 = x_95;
+      x_94.arr[x_160] = (x_161 - 1);
+    }
+    int const x_164 = x_95;
+    int const x_166 = x_92;
+    if (((x_164 + 1) < x_166)) {
+      int const x_170 = x_93;
+      int const x_171 = (x_170 + 1);
+      x_93 = x_171;
+      int const x_172 = x_95;
+      x_94.arr[x_171] = (x_172 + 1);
+      int const x_175 = x_93;
+      int const x_176 = (x_175 + 1);
+      x_93 = x_176;
+      int const x_177 = x_92;
+      x_94.arr[x_176] = x_177;
+    }
+  }
+  float4 const x_179 = *(tint_symbol_8);
+  float2 const x_182 = x_34.resolution;
+  uv = (float2(x_179.x, x_179.y) / x_182);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_185 = (*(tint_symbol_9)).numbers.arr[0];
+  float const x_188 = color.x;
+  color.x = (x_188 + float(x_185));
+  float const x_192 = uv.x;
+  if ((x_192 > 0.25f)) {
+    int const x_197 = (*(tint_symbol_9)).numbers.arr[1];
+    float const x_200 = color.x;
+    color.x = (x_200 + float(x_197));
+  }
+  float const x_204 = uv.x;
+  if ((x_204 > 0.5f)) {
+    int const x_209 = (*(tint_symbol_9)).numbers.arr[2];
+    float const x_212 = color.y;
+    color.y = (x_212 + float(x_209));
+  }
+  float const x_216 = uv.x;
+  if ((x_216 > 0.75f)) {
+    int const x_221 = (*(tint_symbol_9)).numbers.arr[3];
+    float const x_224 = color.z;
+    color.z = (x_224 + float(x_221));
+  }
+  int const x_228 = (*(tint_symbol_9)).numbers.arr[4];
+  float const x_231 = color.y;
+  color.y = (x_231 + float(x_228));
+  float const x_235 = uv.y;
+  if ((x_235 > 0.25f)) {
+    int const x_240 = (*(tint_symbol_9)).numbers.arr[5];
+    float const x_243 = color.x;
+    color.x = (x_243 + float(x_240));
+  }
+  float const x_247 = uv.y;
+  if ((x_247 > 0.5f)) {
+    int const x_252 = (*(tint_symbol_9)).numbers.arr[6];
+    float const x_255 = color.y;
+    color.y = (x_255 + float(x_252));
+  }
+  float const x_259 = uv.y;
+  if ((x_259 > 0.75f)) {
+    int const x_264 = (*(tint_symbol_9)).numbers.arr[7];
+    float const x_267 = color.z;
+    color.z = (x_267 + float(x_264));
+  }
+  int const x_271 = (*(tint_symbol_9)).numbers.arr[8];
+  float const x_274 = color.z;
+  color.z = (x_274 + float(x_271));
+  float const x_278 = uv.x;
+  float const x_280 = uv.y;
+  if ((fabs((x_278 - x_280)) < 0.25f)) {
+    int const x_287 = (*(tint_symbol_9)).numbers.arr[9];
+    float const x_290 = color.x;
+    color.x = (x_290 + float(x_287));
+  }
+  float3 const x_293 = color;
+  float3 const x_294 = normalize(x_293);
+  *(tint_symbol_10) = float4(x_294.x, x_294.y, x_294.z, 1.0f);
+  float4 const x_299 = *(tint_symbol_7);
+  *(tint_symbol_11) = x_299;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf0& x_34 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread float4 tint_symbol_13 = 0.0f;
+  thread QuicksortObject tint_symbol_14 = {};
+  thread float4 tint_symbol_15 = 0.0f;
+  thread float4 tint_symbol_16 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_12 = x_GLF_pos_param;
+  main_1(x_34, &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_15, .gl_Position=tint_symbol_16};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_17) {
+  int temp = 0;
+  int const x_302 = *(i);
+  int const x_304 = (*(tint_symbol_17)).numbers.arr[x_302];
+  temp = x_304;
+  int const x_305 = *(i);
+  int const x_306 = *(j);
+  int const x_308 = (*(tint_symbol_17)).numbers.arr[x_306];
+  (*(tint_symbol_17)).numbers.arr[x_305] = x_308;
+  int const x_310 = *(j);
+  int const x_311 = temp;
+  (*(tint_symbol_17)).numbers.arr[x_310] = x_311;
+  return;
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_18) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_376 = top;
+  int const x_377 = (x_376 + 1);
+  top = x_377;
+  int const x_378 = l_1;
+  stack.arr[x_377] = x_378;
+  int const x_380 = top;
+  int const x_381 = (x_380 + 1);
+  top = x_381;
+  int const x_382 = h_1;
+  stack.arr[x_381] = x_382;
+  while (true) {
+    int const x_388 = top;
+    if ((x_388 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_391 = top;
+    top = (x_391 - 1);
+    int const x_394 = stack.arr[x_391];
+    h_1 = x_394;
+    int const x_395 = top;
+    top = (x_395 - 1);
+    int const x_398 = stack.arr[x_395];
+    l_1 = x_398;
+    int const x_399 = l_1;
+    param_4 = x_399;
+    int const x_400 = h_1;
+    param_5 = x_400;
+    int const x_401 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_18);
+    p = x_401;
+    int const x_402 = p;
+    int const x_404 = l_1;
+    if (((x_402 - 1) > x_404)) {
+      int const x_408 = top;
+      int const x_409 = (x_408 + 1);
+      top = x_409;
+      int const x_410 = l_1;
+      stack.arr[x_409] = x_410;
+      int const x_412 = top;
+      int const x_413 = (x_412 + 1);
+      top = x_413;
+      int const x_414 = p;
+      stack.arr[x_413] = (x_414 - 1);
+    }
+    int const x_417 = p;
+    int const x_419 = h_1;
+    if (((x_417 + 1) < x_419)) {
+      int const x_423 = top;
+      int const x_424 = (x_423 + 1);
+      top = x_424;
+      int const x_425 = p;
+      stack.arr[x_424] = (x_425 + 1);
+      int const x_428 = top;
+      int const x_429 = (x_428 + 1);
+      top = x_429;
+      int const x_430 = h_1;
+      stack.arr[x_429] = x_430;
+    }
+  }
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.spvasm
new file mode 100644
index 0000000..01d7e03
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.spvasm
@@ -0,0 +1,713 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 478
+; Schema: 0
+               OpCapability Shader
+        %354 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %x_314 "x_314"
+               OpName %x_315 "x_315"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %main_1 "main_1"
+               OpName %x_91 "x_91"
+               OpName %x_92 "x_92"
+               OpName %x_93 "x_93"
+               OpName %x_94 "x_94"
+               OpName %x_95 "x_95"
+               OpName %x_96 "x_96"
+               OpName %x_97 "x_97"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 0
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_34 = OpVariable %_ptr_Uniform_buf0 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+%_ptr_Function_int = OpTypePointer Function %int
+         %29 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+         %36 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+        %116 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %125 = OpConstantNull %_arr_int_uint_10
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %132 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %136 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %140 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+        %143 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %242 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+     %uint_1 = OpConstant %uint 1
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %373 = OpTypeFunction %void %main_out
+        %388 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+%performPartition_i1_i1_ = OpFunction %int None %29
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %34 = OpLabel
+      %x_314 = OpVariable %_ptr_Function_int Function %36
+      %x_315 = OpVariable %_ptr_Function_int Function %36
+      %pivot = OpVariable %_ptr_Function_int Function %36
+        %i_1 = OpVariable %_ptr_Function_int Function %36
+        %j_1 = OpVariable %_ptr_Function_int Function %36
+      %param = OpVariable %_ptr_Function_int Function %36
+    %param_1 = OpVariable %_ptr_Function_int Function %36
+    %param_2 = OpVariable %_ptr_Function_int Function %36
+    %param_3 = OpVariable %_ptr_Function_int Function %36
+         %46 = OpLoad %int %h
+         %49 = OpAccessChain %_ptr_Private_int %obj %uint_0 %46
+         %50 = OpLoad %int %49
+               OpStore %pivot %50
+         %52 = OpLoad %int %l
+         %54 = OpISub %int %52 %int_1
+               OpStore %i_1 %54
+         %56 = OpLoad %int %l
+               OpStore %j_1 %56
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %j_1
+         %63 = OpLoad %int %h
+         %64 = OpISub %int %63 %int_1
+         %65 = OpSLessThanEqual %bool %61 %64
+               OpSelectionMerge %67 None
+               OpBranchConditional %65 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %58
+         %67 = OpLabel
+         %70 = OpLoad %int %j_1
+         %71 = OpAccessChain %_ptr_Private_int %obj %uint_0 %70
+         %72 = OpLoad %int %71
+         %73 = OpLoad %int %pivot
+         %74 = OpSLessThanEqual %bool %72 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+         %77 = OpLoad %int %i_1
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %i_1 %78
+         %79 = OpLoad %int %i_1
+               OpStore %param %79
+         %80 = OpLoad %int %j_1
+               OpStore %param_1 %80
+         %81 = OpLoad %int %param
+         %82 = OpAccessChain %_ptr_Private_int %obj %uint_0 %81
+         %83 = OpLoad %int %82
+               OpStore %x_315 %83
+         %84 = OpLoad %int %param
+         %85 = OpLoad %int %param_1
+         %86 = OpAccessChain %_ptr_Private_int %obj %uint_0 %85
+         %87 = OpLoad %int %86
+         %88 = OpAccessChain %_ptr_Private_int %obj %uint_0 %84
+               OpStore %88 %87
+         %89 = OpLoad %int %param_1
+         %90 = OpLoad %int %x_315
+         %91 = OpAccessChain %_ptr_Private_int %obj %uint_0 %89
+               OpStore %91 %90
+               OpBranch %75
+         %75 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+         %92 = OpLoad %int %j_1
+         %93 = OpIAdd %int %92 %int_1
+               OpStore %j_1 %93
+               OpBranch %57
+         %58 = OpLabel
+         %94 = OpLoad %int %i_1
+         %95 = OpIAdd %int %94 %int_1
+               OpStore %param_2 %95
+         %97 = OpLoad %int %h
+               OpStore %param_3 %97
+         %98 = OpLoad %int %param_2
+         %99 = OpAccessChain %_ptr_Private_int %obj %uint_0 %98
+        %100 = OpLoad %int %99
+               OpStore %x_314 %100
+        %101 = OpLoad %int %param_2
+        %102 = OpLoad %int %param_3
+        %103 = OpAccessChain %_ptr_Private_int %obj %uint_0 %102
+        %104 = OpLoad %int %103
+        %105 = OpAccessChain %_ptr_Private_int %obj %uint_0 %101
+               OpStore %105 %104
+        %106 = OpLoad %int %param_3
+        %107 = OpLoad %int %x_314
+        %108 = OpAccessChain %_ptr_Private_int %obj %uint_0 %106
+               OpStore %108 %107
+               OpSelectionMerge %110 None
+               OpBranchConditional %false %111 %112
+        %111 = OpLabel
+               OpBranch %110
+        %112 = OpLabel
+        %113 = OpLoad %int %i_1
+        %114 = OpIAdd %int %113 %int_1
+               OpReturnValue %114
+        %110 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %116
+        %119 = OpLabel
+       %x_91 = OpVariable %_ptr_Function_int Function %36
+       %x_92 = OpVariable %_ptr_Function_int Function %36
+       %x_93 = OpVariable %_ptr_Function_int Function %36
+       %x_94 = OpVariable %_ptr_Function__arr_int_uint_10 Function %125
+       %x_95 = OpVariable %_ptr_Function_int Function %36
+       %x_96 = OpVariable %_ptr_Function_int Function %36
+       %x_97 = OpVariable %_ptr_Function_int Function %36
+        %i_2 = OpVariable %_ptr_Function_int Function %36
+         %uv = OpVariable %_ptr_Function_v2float Function %132
+      %color = OpVariable %_ptr_Function_v3float Function %136
+        %137 = OpLoad %v4float %x_GLF_pos
+        %141 = OpFAdd %v4float %137 %140
+        %144 = OpFMul %v4float %141 %143
+               OpStore %x_GLF_FragCoord %144
+               OpStore %i_2 %int_0
+               OpBranch %145
+        %145 = OpLabel
+               OpLoopMerge %146 %147 None
+               OpBranch %148
+        %148 = OpLabel
+        %149 = OpLoad %int %i_2
+        %151 = OpSLessThan %bool %149 %int_10
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %154
+        %153 = OpLabel
+               OpBranch %152
+        %154 = OpLabel
+               OpBranch %146
+        %152 = OpLabel
+        %155 = OpLoad %int %i_2
+        %156 = OpLoad %int %i_2
+        %157 = OpAccessChain %_ptr_Private_int %obj %uint_0 %155
+        %158 = OpISub %int %int_10 %156
+               OpStore %157 %158
+        %159 = OpLoad %int %i_2
+        %160 = OpLoad %int %i_2
+        %161 = OpAccessChain %_ptr_Private_int %obj %uint_0 %160
+        %162 = OpLoad %int %161
+        %163 = OpLoad %int %i_2
+        %164 = OpAccessChain %_ptr_Private_int %obj %uint_0 %163
+        %165 = OpLoad %int %164
+        %166 = OpAccessChain %_ptr_Private_int %obj %uint_0 %159
+        %167 = OpIMul %int %162 %165
+               OpStore %166 %167
+               OpBranch %147
+        %147 = OpLabel
+        %168 = OpLoad %int %i_2
+        %169 = OpIAdd %int %168 %int_1
+               OpStore %i_2 %169
+               OpBranch %145
+        %146 = OpLabel
+               OpStore %x_91 %int_0
+               OpStore %x_92 %int_9
+               OpStore %x_93 %int_n1
+        %172 = OpLoad %int %x_93
+        %173 = OpIAdd %int %172 %int_1
+               OpStore %x_93 %173
+        %174 = OpLoad %int %x_91
+        %175 = OpAccessChain %_ptr_Function_int %x_94 %173
+               OpStore %175 %174
+        %176 = OpLoad %int %x_93
+        %177 = OpIAdd %int %176 %int_1
+               OpStore %x_93 %177
+        %178 = OpLoad %int %x_92
+        %179 = OpAccessChain %_ptr_Function_int %x_94 %177
+               OpStore %179 %178
+               OpBranch %180
+        %180 = OpLabel
+               OpLoopMerge %181 %182 None
+               OpBranch %183
+        %183 = OpLabel
+        %184 = OpLoad %int %x_93
+        %185 = OpSGreaterThanEqual %bool %184 %int_0
+               OpSelectionMerge %186 None
+               OpBranchConditional %185 %187 %188
+        %187 = OpLabel
+               OpBranch %186
+        %188 = OpLabel
+               OpBranch %181
+        %186 = OpLabel
+        %189 = OpLoad %int %x_93
+        %190 = OpISub %int %189 %int_1
+               OpStore %x_93 %190
+        %191 = OpAccessChain %_ptr_Function_int %x_94 %189
+        %192 = OpLoad %int %191
+               OpStore %x_92 %192
+        %193 = OpLoad %int %x_93
+        %194 = OpISub %int %193 %int_1
+               OpStore %x_93 %194
+        %195 = OpAccessChain %_ptr_Function_int %x_94 %193
+        %196 = OpLoad %int %195
+               OpStore %x_91 %196
+        %197 = OpLoad %int %x_91
+               OpStore %x_96 %197
+        %198 = OpLoad %int %x_92
+               OpStore %x_97 %198
+        %199 = OpFunctionCall %int %performPartition_i1_i1_ %x_96 %x_97
+               OpStore %x_95 %199
+        %202 = OpLoad %int %x_95
+        %203 = OpLoad %int %x_91
+        %204 = OpISub %int %202 %int_1
+        %205 = OpSGreaterThan %bool %204 %203
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %206
+        %207 = OpLabel
+        %208 = OpLoad %int %x_93
+        %209 = OpIAdd %int %208 %int_1
+               OpStore %x_93 %209
+        %210 = OpLoad %int %x_91
+        %211 = OpAccessChain %_ptr_Function_int %x_94 %209
+               OpStore %211 %210
+        %212 = OpLoad %int %x_93
+        %213 = OpIAdd %int %212 %int_1
+               OpStore %x_93 %213
+        %214 = OpLoad %int %x_95
+        %215 = OpAccessChain %_ptr_Function_int %x_94 %213
+        %216 = OpISub %int %214 %int_1
+               OpStore %215 %216
+               OpBranch %206
+        %206 = OpLabel
+        %217 = OpLoad %int %x_95
+        %218 = OpLoad %int %x_92
+        %219 = OpIAdd %int %217 %int_1
+        %220 = OpSLessThan %bool %219 %218
+               OpSelectionMerge %221 None
+               OpBranchConditional %220 %222 %221
+        %222 = OpLabel
+        %223 = OpLoad %int %x_93
+        %224 = OpIAdd %int %223 %int_1
+               OpStore %x_93 %224
+        %225 = OpLoad %int %x_95
+        %226 = OpAccessChain %_ptr_Function_int %x_94 %224
+        %227 = OpIAdd %int %225 %int_1
+               OpStore %226 %227
+        %228 = OpLoad %int %x_93
+        %229 = OpIAdd %int %228 %int_1
+               OpStore %x_93 %229
+        %230 = OpLoad %int %x_92
+        %231 = OpAccessChain %_ptr_Function_int %x_94 %229
+               OpStore %231 %230
+               OpBranch %221
+        %221 = OpLabel
+               OpBranch %182
+        %182 = OpLabel
+               OpBranch %180
+        %181 = OpLabel
+        %232 = OpLoad %v4float %x_GLF_FragCoord
+        %234 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %235 = OpLoad %v2float %234
+        %236 = OpCompositeExtract %float %232 0
+        %237 = OpCompositeExtract %float %232 1
+        %238 = OpCompositeConstruct %v2float %236 %237
+        %239 = OpFDiv %v2float %238 %235
+               OpStore %uv %239
+               OpStore %color %242
+        %243 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %244 = OpLoad %int %243
+        %246 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %247 = OpLoad %float %246
+        %248 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %249 = OpConvertSToF %float %244
+        %250 = OpFAdd %float %247 %249
+               OpStore %248 %250
+        %251 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %252 = OpLoad %float %251
+        %254 = OpFOrdGreaterThan %bool %252 %float_0_25
+               OpSelectionMerge %255 None
+               OpBranchConditional %254 %256 %255
+        %256 = OpLabel
+        %257 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %258 = OpLoad %int %257
+        %259 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %260 = OpLoad %float %259
+        %261 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %262 = OpConvertSToF %float %258
+        %263 = OpFAdd %float %260 %262
+               OpStore %261 %263
+               OpBranch %255
+        %255 = OpLabel
+        %264 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %265 = OpLoad %float %264
+        %267 = OpFOrdGreaterThan %bool %265 %float_0_5
+               OpSelectionMerge %268 None
+               OpBranchConditional %267 %269 %268
+        %269 = OpLabel
+        %271 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_2
+        %272 = OpLoad %int %271
+        %274 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %275 = OpLoad %float %274
+        %276 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %277 = OpConvertSToF %float %272
+        %278 = OpFAdd %float %275 %277
+               OpStore %276 %278
+               OpBranch %268
+        %268 = OpLabel
+        %279 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %280 = OpLoad %float %279
+        %282 = OpFOrdGreaterThan %bool %280 %float_0_75
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %283
+        %284 = OpLabel
+        %286 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %287 = OpLoad %int %286
+        %289 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %290 = OpLoad %float %289
+        %291 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %292 = OpConvertSToF %float %287
+        %293 = OpFAdd %float %290 %292
+               OpStore %291 %293
+               OpBranch %283
+        %283 = OpLabel
+        %295 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %296 = OpLoad %int %295
+        %297 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %298 = OpLoad %float %297
+        %299 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %300 = OpConvertSToF %float %296
+        %301 = OpFAdd %float %298 %300
+               OpStore %299 %301
+        %302 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %303 = OpLoad %float %302
+        %304 = OpFOrdGreaterThan %bool %303 %float_0_25
+               OpSelectionMerge %305 None
+               OpBranchConditional %304 %306 %305
+        %306 = OpLabel
+        %308 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %309 = OpLoad %int %308
+        %310 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %311 = OpLoad %float %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %313 = OpConvertSToF %float %309
+        %314 = OpFAdd %float %311 %313
+               OpStore %312 %314
+               OpBranch %305
+        %305 = OpLabel
+        %315 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %316 = OpLoad %float %315
+        %317 = OpFOrdGreaterThan %bool %316 %float_0_5
+               OpSelectionMerge %318 None
+               OpBranchConditional %317 %319 %318
+        %319 = OpLabel
+        %321 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %322 = OpLoad %int %321
+        %323 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %324 = OpLoad %float %323
+        %325 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %326 = OpConvertSToF %float %322
+        %327 = OpFAdd %float %324 %326
+               OpStore %325 %327
+               OpBranch %318
+        %318 = OpLabel
+        %328 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %329 = OpLoad %float %328
+        %330 = OpFOrdGreaterThan %bool %329 %float_0_75
+               OpSelectionMerge %331 None
+               OpBranchConditional %330 %332 %331
+        %332 = OpLabel
+        %334 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %335 = OpLoad %int %334
+        %336 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %337 = OpLoad %float %336
+        %338 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %339 = OpConvertSToF %float %335
+        %340 = OpFAdd %float %337 %339
+               OpStore %338 %340
+               OpBranch %331
+        %331 = OpLabel
+        %342 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %343 = OpLoad %int %342
+        %344 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %345 = OpLoad %float %344
+        %346 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %347 = OpConvertSToF %float %343
+        %348 = OpFAdd %float %345 %347
+               OpStore %346 %348
+        %349 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %350 = OpLoad %float %349
+        %351 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %352 = OpLoad %float %351
+        %355 = OpFSub %float %350 %352
+        %353 = OpExtInst %float %354 FAbs %355
+        %356 = OpFOrdLessThan %bool %353 %float_0_25
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %357
+        %358 = OpLabel
+        %359 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %360 = OpLoad %int %359
+        %361 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %362 = OpLoad %float %361
+        %363 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %364 = OpConvertSToF %float %360
+        %365 = OpFAdd %float %362 %364
+               OpStore %363 %365
+               OpBranch %357
+        %357 = OpLabel
+        %366 = OpLoad %v3float %color
+        %367 = OpExtInst %v3float %354 Normalize %366
+        %368 = OpCompositeExtract %float %367 0
+        %369 = OpCompositeExtract %float %367 1
+        %370 = OpCompositeExtract %float %367 2
+        %371 = OpCompositeConstruct %v4float %368 %369 %370 %float_1
+               OpStore %frag_color %371
+        %372 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %372
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %373
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %377 = OpLabel
+        %378 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %378
+        %379 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %379
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %116
+        %381 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %382 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %382
+        %383 = OpFunctionCall %void %main_1
+        %385 = OpLoad %v4float %frag_color
+        %386 = OpLoad %v4float %gl_Position
+        %387 = OpCompositeConstruct %main_out %385 %386
+        %384 = OpFunctionCall %void %tint_symbol_4 %387
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %388
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %392 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %36
+        %395 = OpLoad %int %i
+        %396 = OpAccessChain %_ptr_Private_int %obj %uint_0 %395
+        %397 = OpLoad %int %396
+               OpStore %temp %397
+        %399 = OpLoad %int %i
+        %401 = OpLoad %int %j
+        %402 = OpAccessChain %_ptr_Private_int %obj %uint_0 %401
+        %403 = OpLoad %int %402
+        %404 = OpAccessChain %_ptr_Private_int %obj %uint_0 %399
+               OpStore %404 %403
+        %406 = OpLoad %int %j
+        %407 = OpLoad %int %temp
+        %408 = OpAccessChain %_ptr_Private_int %obj %uint_0 %406
+               OpStore %408 %407
+               OpReturn
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %116
+        %410 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %36
+        %h_1 = OpVariable %_ptr_Function_int Function %36
+        %top = OpVariable %_ptr_Function_int Function %36
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %125
+          %p = OpVariable %_ptr_Function_int Function %36
+    %param_4 = OpVariable %_ptr_Function_int Function %36
+    %param_5 = OpVariable %_ptr_Function_int Function %36
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %418 = OpLoad %int %top
+        %419 = OpIAdd %int %418 %int_1
+               OpStore %top %419
+        %420 = OpLoad %int %l_1
+        %421 = OpAccessChain %_ptr_Function_int %stack %419
+               OpStore %421 %420
+        %422 = OpLoad %int %top
+        %423 = OpIAdd %int %422 %int_1
+               OpStore %top %423
+        %424 = OpLoad %int %h_1
+        %425 = OpAccessChain %_ptr_Function_int %stack %423
+               OpStore %425 %424
+               OpBranch %426
+        %426 = OpLabel
+               OpLoopMerge %427 %428 None
+               OpBranch %429
+        %429 = OpLabel
+        %430 = OpLoad %int %top
+        %431 = OpSGreaterThanEqual %bool %430 %int_0
+               OpSelectionMerge %432 None
+               OpBranchConditional %431 %433 %434
+        %433 = OpLabel
+               OpBranch %432
+        %434 = OpLabel
+               OpBranch %427
+        %432 = OpLabel
+        %435 = OpLoad %int %top
+        %436 = OpISub %int %435 %int_1
+               OpStore %top %436
+        %437 = OpAccessChain %_ptr_Function_int %stack %435
+        %438 = OpLoad %int %437
+               OpStore %h_1 %438
+        %439 = OpLoad %int %top
+        %440 = OpISub %int %439 %int_1
+               OpStore %top %440
+        %441 = OpAccessChain %_ptr_Function_int %stack %439
+        %442 = OpLoad %int %441
+               OpStore %l_1 %442
+        %443 = OpLoad %int %l_1
+               OpStore %param_4 %443
+        %444 = OpLoad %int %h_1
+               OpStore %param_5 %444
+        %445 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %445
+        %448 = OpLoad %int %p
+        %449 = OpLoad %int %l_1
+        %450 = OpISub %int %448 %int_1
+        %451 = OpSGreaterThan %bool %450 %449
+               OpSelectionMerge %452 None
+               OpBranchConditional %451 %453 %452
+        %453 = OpLabel
+        %454 = OpLoad %int %top
+        %455 = OpIAdd %int %454 %int_1
+               OpStore %top %455
+        %456 = OpLoad %int %l_1
+        %457 = OpAccessChain %_ptr_Function_int %stack %455
+               OpStore %457 %456
+        %458 = OpLoad %int %top
+        %459 = OpIAdd %int %458 %int_1
+               OpStore %top %459
+        %460 = OpLoad %int %p
+        %461 = OpAccessChain %_ptr_Function_int %stack %459
+        %462 = OpISub %int %460 %int_1
+               OpStore %461 %462
+               OpBranch %452
+        %452 = OpLabel
+        %463 = OpLoad %int %p
+        %464 = OpLoad %int %h_1
+        %465 = OpIAdd %int %463 %int_1
+        %466 = OpSLessThan %bool %465 %464
+               OpSelectionMerge %467 None
+               OpBranchConditional %466 %468 %467
+        %468 = OpLabel
+        %469 = OpLoad %int %top
+        %470 = OpIAdd %int %469 %int_1
+               OpStore %top %470
+        %471 = OpLoad %int %p
+        %472 = OpAccessChain %_ptr_Function_int %stack %470
+        %473 = OpIAdd %int %471 %int_1
+               OpStore %472 %473
+        %474 = OpLoad %int %top
+        %475 = OpIAdd %int %474 %int_1
+               OpStore %top %475
+        %476 = OpLoad %int %h_1
+        %477 = OpAccessChain %_ptr_Function_int %stack %475
+               OpStore %477 %476
+               OpBranch %467
+        %467 = OpLabel
+               OpBranch %428
+        %428 = OpLabel
+               OpBranch %426
+        %427 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.wgsl
new file mode 100644
index 0000000..7c15a5c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.wgsl
@@ -0,0 +1,356 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var x_314 : i32;
+  var x_315 : i32;
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_316 : i32 = *(h);
+  let x_318 : i32 = obj.numbers[x_316];
+  pivot = x_318;
+  let x_319 : i32 = *(l);
+  i_1 = (x_319 - 1);
+  let x_321 : i32 = *(l);
+  j_1 = x_321;
+  loop {
+    let x_326 : i32 = j_1;
+    let x_327 : i32 = *(h);
+    if ((x_326 <= (x_327 - 1))) {
+    } else {
+      break;
+    }
+    let x_331 : i32 = j_1;
+    let x_333 : i32 = obj.numbers[x_331];
+    let x_334 : i32 = pivot;
+    if ((x_333 <= x_334)) {
+      let x_338 : i32 = i_1;
+      i_1 = (x_338 + 1);
+      let x_340 : i32 = i_1;
+      param = x_340;
+      let x_341 : i32 = j_1;
+      param_1 = x_341;
+      let x_342 : i32 = param;
+      let x_344 : i32 = obj.numbers[x_342];
+      x_315 = x_344;
+      let x_345 : i32 = param;
+      let x_346 : i32 = param_1;
+      let x_348 : i32 = obj.numbers[x_346];
+      obj.numbers[x_345] = x_348;
+      let x_350 : i32 = param_1;
+      let x_351 : i32 = x_315;
+      obj.numbers[x_350] = x_351;
+    }
+
+    continuing {
+      let x_353 : i32 = j_1;
+      j_1 = (x_353 + 1);
+    }
+  }
+  let x_355 : i32 = i_1;
+  param_2 = (x_355 + 1);
+  let x_357 : i32 = *(h);
+  param_3 = x_357;
+  let x_358 : i32 = param_2;
+  let x_360 : i32 = obj.numbers[x_358];
+  x_314 = x_360;
+  let x_361 : i32 = param_2;
+  let x_362 : i32 = param_3;
+  let x_364 : i32 = obj.numbers[x_362];
+  obj.numbers[x_361] = x_364;
+  let x_366 : i32 = param_3;
+  let x_367 : i32 = x_314;
+  obj.numbers[x_366] = x_367;
+  if (false) {
+  } else {
+    let x_372 : i32 = i_1;
+    return (x_372 + 1);
+  }
+  return 0;
+}
+
+fn main_1() {
+  var x_91 : i32;
+  var x_92 : i32;
+  var x_93 : i32;
+  var x_94 : array<i32, 10>;
+  var x_95 : i32;
+  var x_96 : i32;
+  var x_97 : i32;
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_98 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_98 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_105 : i32 = i_2;
+    if ((x_105 < 10)) {
+    } else {
+      break;
+    }
+    let x_108 : i32 = i_2;
+    let x_109 : i32 = i_2;
+    obj.numbers[x_108] = (10 - x_109);
+    let x_112 : i32 = i_2;
+    let x_113 : i32 = i_2;
+    let x_115 : i32 = obj.numbers[x_113];
+    let x_116 : i32 = i_2;
+    let x_118 : i32 = obj.numbers[x_116];
+    obj.numbers[x_112] = (x_115 * x_118);
+
+    continuing {
+      let x_121 : i32 = i_2;
+      i_2 = (x_121 + 1);
+    }
+  }
+  x_91 = 0;
+  x_92 = 9;
+  x_93 = -1;
+  let x_123 : i32 = x_93;
+  let x_124 : i32 = (x_123 + 1);
+  x_93 = x_124;
+  let x_125 : i32 = x_91;
+  x_94[x_124] = x_125;
+  let x_127 : i32 = x_93;
+  let x_128 : i32 = (x_127 + 1);
+  x_93 = x_128;
+  let x_129 : i32 = x_92;
+  x_94[x_128] = x_129;
+  loop {
+    let x_135 : i32 = x_93;
+    if ((x_135 >= 0)) {
+    } else {
+      break;
+    }
+    let x_138 : i32 = x_93;
+    x_93 = (x_138 - 1);
+    let x_141 : i32 = x_94[x_138];
+    x_92 = x_141;
+    let x_142 : i32 = x_93;
+    x_93 = (x_142 - 1);
+    let x_145 : i32 = x_94[x_142];
+    x_91 = x_145;
+    let x_146 : i32 = x_91;
+    x_96 = x_146;
+    let x_147 : i32 = x_92;
+    x_97 = x_147;
+    let x_148 : i32 = performPartition_i1_i1_(&(x_96), &(x_97));
+    x_95 = x_148;
+    let x_149 : i32 = x_95;
+    let x_151 : i32 = x_91;
+    if (((x_149 - 1) > x_151)) {
+      let x_155 : i32 = x_93;
+      let x_156 : i32 = (x_155 + 1);
+      x_93 = x_156;
+      let x_157 : i32 = x_91;
+      x_94[x_156] = x_157;
+      let x_159 : i32 = x_93;
+      let x_160 : i32 = (x_159 + 1);
+      x_93 = x_160;
+      let x_161 : i32 = x_95;
+      x_94[x_160] = (x_161 - 1);
+    }
+    let x_164 : i32 = x_95;
+    let x_166 : i32 = x_92;
+    if (((x_164 + 1) < x_166)) {
+      let x_170 : i32 = x_93;
+      let x_171 : i32 = (x_170 + 1);
+      x_93 = x_171;
+      let x_172 : i32 = x_95;
+      x_94[x_171] = (x_172 + 1);
+      let x_175 : i32 = x_93;
+      let x_176 : i32 = (x_175 + 1);
+      x_93 = x_176;
+      let x_177 : i32 = x_92;
+      x_94[x_176] = x_177;
+    }
+  }
+  let x_179 : vec4<f32> = x_GLF_FragCoord;
+  let x_182 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_179.x, x_179.y) / x_182);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_185 : i32 = obj.numbers[0];
+  let x_188 : f32 = color.x;
+  color.x = (x_188 + f32(x_185));
+  let x_192 : f32 = uv.x;
+  if ((x_192 > 0.25)) {
+    let x_197 : i32 = obj.numbers[1];
+    let x_200 : f32 = color.x;
+    color.x = (x_200 + f32(x_197));
+  }
+  let x_204 : f32 = uv.x;
+  if ((x_204 > 0.5)) {
+    let x_209 : i32 = obj.numbers[2];
+    let x_212 : f32 = color.y;
+    color.y = (x_212 + f32(x_209));
+  }
+  let x_216 : f32 = uv.x;
+  if ((x_216 > 0.75)) {
+    let x_221 : i32 = obj.numbers[3];
+    let x_224 : f32 = color.z;
+    color.z = (x_224 + f32(x_221));
+  }
+  let x_228 : i32 = obj.numbers[4];
+  let x_231 : f32 = color.y;
+  color.y = (x_231 + f32(x_228));
+  let x_235 : f32 = uv.y;
+  if ((x_235 > 0.25)) {
+    let x_240 : i32 = obj.numbers[5];
+    let x_243 : f32 = color.x;
+    color.x = (x_243 + f32(x_240));
+  }
+  let x_247 : f32 = uv.y;
+  if ((x_247 > 0.5)) {
+    let x_252 : i32 = obj.numbers[6];
+    let x_255 : f32 = color.y;
+    color.y = (x_255 + f32(x_252));
+  }
+  let x_259 : f32 = uv.y;
+  if ((x_259 > 0.75)) {
+    let x_264 : i32 = obj.numbers[7];
+    let x_267 : f32 = color.z;
+    color.z = (x_267 + f32(x_264));
+  }
+  let x_271 : i32 = obj.numbers[8];
+  let x_274 : f32 = color.z;
+  color.z = (x_274 + f32(x_271));
+  let x_278 : f32 = uv.x;
+  let x_280 : f32 = uv.y;
+  if ((abs((x_278 - x_280)) < 0.25)) {
+    let x_287 : i32 = obj.numbers[9];
+    let x_290 : f32 = color.x;
+    color.x = (x_290 + f32(x_287));
+  }
+  let x_293 : vec3<f32> = color;
+  let x_294 : vec3<f32> = normalize(x_293);
+  frag_color = vec4<f32>(x_294.x, x_294.y, x_294.z, 1.0);
+  let x_299 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_299;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_302 : i32 = *(i);
+  let x_304 : i32 = obj.numbers[x_302];
+  temp = x_304;
+  let x_305 : i32 = *(i);
+  let x_306 : i32 = *(j);
+  let x_308 : i32 = obj.numbers[x_306];
+  obj.numbers[x_305] = x_308;
+  let x_310 : i32 = *(j);
+  let x_311 : i32 = temp;
+  obj.numbers[x_310] = x_311;
+  return;
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_376 : i32 = top;
+  let x_377 : i32 = (x_376 + 1);
+  top = x_377;
+  let x_378 : i32 = l_1;
+  stack[x_377] = x_378;
+  let x_380 : i32 = top;
+  let x_381 : i32 = (x_380 + 1);
+  top = x_381;
+  let x_382 : i32 = h_1;
+  stack[x_381] = x_382;
+  loop {
+    let x_388 : i32 = top;
+    if ((x_388 >= 0)) {
+    } else {
+      break;
+    }
+    let x_391 : i32 = top;
+    top = (x_391 - 1);
+    let x_394 : i32 = stack[x_391];
+    h_1 = x_394;
+    let x_395 : i32 = top;
+    top = (x_395 - 1);
+    let x_398 : i32 = stack[x_395];
+    l_1 = x_398;
+    let x_399 : i32 = l_1;
+    param_4 = x_399;
+    let x_400 : i32 = h_1;
+    param_5 = x_400;
+    let x_401 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_401;
+    let x_402 : i32 = p;
+    let x_404 : i32 = l_1;
+    if (((x_402 - 1) > x_404)) {
+      let x_408 : i32 = top;
+      let x_409 : i32 = (x_408 + 1);
+      top = x_409;
+      let x_410 : i32 = l_1;
+      stack[x_409] = x_410;
+      let x_412 : i32 = top;
+      let x_413 : i32 = (x_412 + 1);
+      top = x_413;
+      let x_414 : i32 = p;
+      stack[x_413] = (x_414 - 1);
+    }
+    let x_417 : i32 = p;
+    let x_419 : i32 = h_1;
+    if (((x_417 + 1) < x_419)) {
+      let x_423 : i32 = top;
+      let x_424 : i32 = (x_423 + 1);
+      top = x_424;
+      let x_425 : i32 = p;
+      stack[x_424] = (x_425 + 1);
+      let x_428 : i32 = top;
+      let x_429 : i32 = (x_428 + 1);
+      top = x_429;
+      let x_430 : i32 = h_1;
+      stack[x_429] = x_430;
+    }
+  }
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm
new file mode 100644
index 0000000..2426da3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm
@@ -0,0 +1,528 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_GLF_pos %frag_color %__1
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %swap_i1_i1_ "swap(i1;i1;"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %performPartition_i1_i1_ "performPartition(i1;i1;"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %quicksort_ "quicksort("
+               OpName %temp "temp"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %pivot "pivot"
+               OpName %i_0 "i"
+               OpName %j_0 "j"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %l_0 "l"
+               OpName %h_0 "h"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %_GLF_FragCoord "_GLF_FragCoord"
+               OpName %_GLF_pos "_GLF_pos"
+               OpName %i_1 "i"
+               OpName %uv "uv"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %_ ""
+               OpName %color "color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %__0 ""
+               OpName %frag_color "frag_color"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpName %__1 ""
+               OpDecorate %_GLF_pos Location 0
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %frag_color Location 0
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpDecorate %gl_PerVertex Block
+       %void = OpTypeVoid
+         %40 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %43 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %44 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private
+      %int_0 = OpConstant %int 0
+%_ptr_Private_int = OpTypePointer Private %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+%_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %_GLF_pos = OpVariable %_ptr_Input_v4float Input
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %62 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+         %64 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+         %74 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+      %int_2 = OpConstant %int 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %frag_color = OpVariable %_ptr_Output_v4float Output
+%gl_PerVertex = OpTypeStruct %v4float %float
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+        %__1 = OpVariable %_ptr_Output_gl_PerVertex Output
+       %main = OpFunction %void None %40
+         %93 = OpLabel
+        %i_1 = OpVariable %_ptr_Function_int Function
+         %uv = OpVariable %_ptr_Function_v2float Function
+      %color = OpVariable %_ptr_Function_v3float Function
+         %94 = OpLoad %v4float %_GLF_pos
+         %95 = OpFAdd %v4float %94 %62
+         %96 = OpFMul %v4float %95 %64
+               OpStore %_GLF_FragCoord %96
+               OpStore %i_1 %int_0
+               OpBranch %97
+         %97 = OpLabel
+               OpLoopMerge %98 %99 None
+               OpBranch %100
+        %100 = OpLabel
+        %101 = OpLoad %int %i_1
+        %102 = OpSLessThan %bool %101 %int_10
+               OpBranchConditional %102 %103 %98
+        %103 = OpLabel
+        %104 = OpLoad %int %i_1
+        %105 = OpLoad %int %i_1
+        %106 = OpISub %int %int_10 %105
+        %107 = OpAccessChain %_ptr_Private_int %obj %int_0 %104
+               OpStore %107 %106
+        %108 = OpLoad %int %i_1
+        %109 = OpLoad %int %i_1
+        %110 = OpAccessChain %_ptr_Private_int %obj %int_0 %109
+        %111 = OpLoad %int %110
+        %112 = OpLoad %int %i_1
+        %113 = OpAccessChain %_ptr_Private_int %obj %int_0 %112
+        %114 = OpLoad %int %113
+        %115 = OpIMul %int %111 %114
+        %116 = OpAccessChain %_ptr_Private_int %obj %int_0 %108
+               OpStore %116 %115
+               OpBranch %99
+         %99 = OpLabel
+        %117 = OpLoad %int %i_1
+        %118 = OpIAdd %int %117 %int_1
+               OpStore %i_1 %118
+               OpBranch %97
+         %98 = OpLabel
+        %119 = OpFunctionCall %void %quicksort_
+        %120 = OpLoad %v4float %_GLF_FragCoord
+        %121 = OpVectorShuffle %v2float %120 %120 0 1
+        %122 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %123 = OpLoad %v2float %122
+        %124 = OpFDiv %v2float %121 %123
+               OpStore %uv %124
+               OpStore %color %74
+        %125 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_0
+        %126 = OpLoad %int %125
+        %127 = OpConvertSToF %float %126
+        %128 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %129 = OpLoad %float %128
+        %130 = OpFAdd %float %129 %127
+        %131 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %131 %130
+        %132 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %133 = OpLoad %float %132
+        %134 = OpFOrdGreaterThan %bool %133 %float_0_25
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %135
+        %136 = OpLabel
+        %137 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_1
+        %138 = OpLoad %int %137
+        %139 = OpConvertSToF %float %138
+        %140 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %141 = OpLoad %float %140
+        %142 = OpFAdd %float %141 %139
+        %143 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %143 %142
+               OpBranch %135
+        %135 = OpLabel
+        %144 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %145 = OpLoad %float %144
+        %146 = OpFOrdGreaterThan %bool %145 %float_0_5
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+        %150 = OpLoad %float %149
+        %151 = OpConvertFToS %int %150
+        %152 = OpIMul %int %int_2 %151
+        %153 = OpExtInst %int %1 SMax %152 %int_2
+        %154 = OpAccessChain %_ptr_Private_int %obj %int_0 %153
+        %155 = OpLoad %int %154
+        %156 = OpConvertSToF %float %155
+        %157 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+        %158 = OpLoad %float %157
+        %159 = OpConvertFToS %int %158
+        %160 = OpIMul %int %int_2 %159
+        %161 = OpExtInst %int %1 SMax %160 %int_2
+        %162 = OpAccessChain %_ptr_Private_int %obj %int_0 %161
+        %163 = OpLoad %int %162
+        %164 = OpConvertSToF %float %163
+        %165 = OpExtInst %float %1 FMax %156 %164
+        %166 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %167 = OpLoad %float %166
+        %168 = OpFAdd %float %167 %165
+        %169 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %169 %168
+               OpBranch %147
+        %147 = OpLabel
+        %170 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %171 = OpLoad %float %170
+        %172 = OpFOrdGreaterThan %bool %171 %float_0_75
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+        %175 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_3
+        %176 = OpLoad %int %175
+        %177 = OpConvertSToF %float %176
+        %178 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %179 = OpLoad %float %178
+        %180 = OpFAdd %float %179 %177
+        %181 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %181 %180
+               OpBranch %173
+        %173 = OpLabel
+        %182 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_4
+        %183 = OpLoad %int %182
+        %184 = OpConvertSToF %float %183
+        %185 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %186 = OpLoad %float %185
+        %187 = OpFAdd %float %186 %184
+        %188 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %188 %187
+        %189 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %190 = OpLoad %float %189
+        %191 = OpFOrdGreaterThan %bool %190 %float_0_25
+               OpSelectionMerge %192 None
+               OpBranchConditional %191 %193 %192
+        %193 = OpLabel
+        %194 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_5
+        %195 = OpLoad %int %194
+        %196 = OpConvertSToF %float %195
+        %197 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %198 = OpLoad %float %197
+        %199 = OpFAdd %float %198 %196
+        %200 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %200 %199
+               OpBranch %192
+        %192 = OpLabel
+        %201 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %202 = OpLoad %float %201
+        %203 = OpFOrdGreaterThan %bool %202 %float_0_5
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %204
+        %205 = OpLabel
+        %206 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_6
+        %207 = OpLoad %int %206
+        %208 = OpConvertSToF %float %207
+        %209 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %210 = OpLoad %float %209
+        %211 = OpFAdd %float %210 %208
+        %212 = OpAccessChain %_ptr_Function_float %color %uint_1
+               OpStore %212 %211
+               OpBranch %204
+        %204 = OpLabel
+        %213 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %214 = OpLoad %float %213
+        %215 = OpFOrdGreaterThan %bool %214 %float_0_75
+               OpSelectionMerge %216 None
+               OpBranchConditional %215 %217 %216
+        %217 = OpLabel
+        %218 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_7
+        %219 = OpLoad %int %218
+        %220 = OpConvertSToF %float %219
+        %221 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %222 = OpLoad %float %221
+        %223 = OpFAdd %float %222 %220
+        %224 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %224 %223
+               OpBranch %216
+        %216 = OpLabel
+        %225 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_8
+        %226 = OpLoad %int %225
+        %227 = OpConvertSToF %float %226
+        %228 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %229 = OpLoad %float %228
+        %230 = OpFAdd %float %229 %227
+        %231 = OpAccessChain %_ptr_Function_float %color %uint_2
+               OpStore %231 %230
+        %232 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %233 = OpLoad %float %232
+        %234 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %235 = OpLoad %float %234
+        %236 = OpFSub %float %233 %235
+        %237 = OpExtInst %float %1 FAbs %236
+        %238 = OpFOrdLessThan %bool %237 %float_0_25
+               OpSelectionMerge %239 None
+               OpBranchConditional %238 %240 %239
+        %240 = OpLabel
+        %241 = OpAccessChain %_ptr_Private_int %obj %int_0 %int_9
+        %242 = OpLoad %int %241
+        %243 = OpConvertSToF %float %242
+        %244 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %245 = OpLoad %float %244
+        %246 = OpFAdd %float %245 %243
+        %247 = OpAccessChain %_ptr_Function_float %color %uint_0
+               OpStore %247 %246
+               OpBranch %239
+        %239 = OpLabel
+        %248 = OpLoad %v3float %color
+        %249 = OpExtInst %v3float %1 Normalize %248
+        %250 = OpCompositeExtract %float %249 0
+        %251 = OpCompositeExtract %float %249 1
+        %252 = OpCompositeExtract %float %249 2
+        %253 = OpCompositeConstruct %v4float %250 %251 %252 %float_1
+               OpStore %frag_color %253
+        %254 = OpLoad %v4float %_GLF_pos
+        %255 = OpAccessChain %_ptr_Output_v4float %__1 %int_0
+               OpStore %255 %254
+               OpReturn
+               OpFunctionEnd
+%swap_i1_i1_ = OpFunction %void None %43
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+        %256 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function
+        %257 = OpLoad %int %i
+        %258 = OpAccessChain %_ptr_Private_int %obj %int_0 %257
+        %259 = OpLoad %int %258
+               OpStore %temp %259
+        %260 = OpLoad %int %i
+        %261 = OpLoad %int %j
+        %262 = OpAccessChain %_ptr_Private_int %obj %int_0 %261
+        %263 = OpLoad %int %262
+        %264 = OpAccessChain %_ptr_Private_int %obj %int_0 %260
+               OpStore %264 %263
+        %265 = OpLoad %int %j
+        %266 = OpLoad %int %temp
+        %267 = OpAccessChain %_ptr_Private_int %obj %int_0 %265
+               OpStore %267 %266
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %44
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+        %268 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %j_0 = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_int Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_int Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+        %269 = OpLoad %int %h
+        %270 = OpAccessChain %_ptr_Private_int %obj %int_0 %269
+        %271 = OpLoad %int %270
+               OpStore %pivot %271
+        %272 = OpLoad %int %l
+        %273 = OpISub %int %272 %int_1
+               OpStore %i_0 %273
+        %274 = OpLoad %int %l
+               OpStore %j_0 %274
+               OpBranch %275
+        %275 = OpLabel
+               OpLoopMerge %276 %277 None
+               OpBranch %278
+        %278 = OpLabel
+        %279 = OpLoad %int %j_0
+        %280 = OpLoad %int %h
+        %281 = OpISub %int %280 %int_1
+        %282 = OpSLessThanEqual %bool %279 %281
+               OpBranchConditional %282 %283 %276
+        %283 = OpLabel
+        %284 = OpLoad %int %j_0
+        %285 = OpAccessChain %_ptr_Private_int %obj %int_0 %284
+        %286 = OpLoad %int %285
+        %287 = OpLoad %int %pivot
+        %288 = OpSLessThanEqual %bool %286 %287
+               OpSelectionMerge %289 None
+               OpBranchConditional %288 %290 %289
+        %290 = OpLabel
+        %291 = OpLoad %int %i_0
+        %292 = OpIAdd %int %291 %int_1
+               OpStore %i_0 %292
+        %293 = OpLoad %int %i_0
+               OpStore %param %293
+        %294 = OpLoad %int %j_0
+               OpStore %param_0 %294
+        %295 = OpFunctionCall %void %swap_i1_i1_ %param %param_0
+               OpBranch %289
+        %289 = OpLabel
+               OpBranch %277
+        %277 = OpLabel
+        %296 = OpLoad %int %j_0
+        %297 = OpIAdd %int %296 %int_1
+               OpStore %j_0 %297
+               OpBranch %275
+        %276 = OpLabel
+        %298 = OpLoad %int %i_0
+        %299 = OpIAdd %int %298 %int_1
+               OpStore %param_1 %299
+        %300 = OpLoad %int %h
+               OpStore %param_2 %300
+        %301 = OpFunctionCall %void %swap_i1_i1_ %param_1 %param_2
+        %302 = OpLoad %int %i_0
+        %303 = OpIAdd %int %302 %int_1
+               OpReturnValue %303
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %40
+        %304 = OpLabel
+        %l_0 = OpVariable %_ptr_Function_int Function
+        %h_0 = OpVariable %_ptr_Function_int Function
+        %top = OpVariable %_ptr_Function_int Function
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function
+          %p = OpVariable %_ptr_Function_int Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+    %param_4 = OpVariable %_ptr_Function_int Function
+               OpStore %l_0 %int_0
+               OpStore %h_0 %int_9
+               OpStore %top %int_n1
+        %305 = OpLoad %int %top
+        %306 = OpIAdd %int %305 %int_1
+               OpStore %top %306
+        %307 = OpLoad %int %l_0
+        %308 = OpAccessChain %_ptr_Function_int %stack %306
+               OpStore %308 %307
+        %309 = OpLoad %int %top
+        %310 = OpIAdd %int %309 %int_1
+               OpStore %top %310
+        %311 = OpLoad %int %h_0
+        %312 = OpAccessChain %_ptr_Function_int %stack %310
+               OpStore %312 %311
+               OpBranch %313
+        %313 = OpLabel
+               OpLoopMerge %314 %315 None
+               OpBranch %316
+        %316 = OpLabel
+        %317 = OpLoad %int %top
+        %318 = OpSGreaterThanEqual %bool %317 %int_0
+               OpBranchConditional %318 %319 %314
+        %319 = OpLabel
+        %320 = OpLoad %int %top
+        %321 = OpISub %int %320 %int_1
+               OpStore %top %321
+        %322 = OpAccessChain %_ptr_Function_int %stack %320
+        %323 = OpLoad %int %322
+               OpStore %h_0 %323
+        %324 = OpLoad %int %top
+        %325 = OpISub %int %324 %int_1
+               OpStore %top %325
+        %326 = OpAccessChain %_ptr_Function_int %stack %324
+        %327 = OpLoad %int %326
+               OpStore %l_0 %327
+        %328 = OpLoad %int %l_0
+               OpStore %param_3 %328
+        %329 = OpLoad %int %h_0
+               OpStore %param_4 %329
+        %330 = OpFunctionCall %int %performPartition_i1_i1_ %param_3 %param_4
+               OpStore %p %330
+        %331 = OpLoad %int %p
+        %332 = OpISub %int %331 %int_1
+        %333 = OpLoad %int %l_0
+        %334 = OpSGreaterThan %bool %332 %333
+               OpSelectionMerge %335 None
+               OpBranchConditional %334 %336 %335
+        %336 = OpLabel
+        %337 = OpLoad %int %top
+        %338 = OpIAdd %int %337 %int_1
+               OpStore %top %338
+        %339 = OpLoad %int %l_0
+        %340 = OpAccessChain %_ptr_Function_int %stack %338
+               OpStore %340 %339
+        %341 = OpLoad %int %top
+        %342 = OpIAdd %int %341 %int_1
+               OpStore %top %342
+        %343 = OpLoad %int %p
+        %344 = OpISub %int %343 %int_1
+        %345 = OpAccessChain %_ptr_Function_int %stack %342
+               OpStore %345 %344
+               OpBranch %335
+        %335 = OpLabel
+        %346 = OpLoad %int %p
+        %347 = OpIAdd %int %346 %int_1
+        %348 = OpLoad %int %h_0
+        %349 = OpSLessThan %bool %347 %348
+               OpSelectionMerge %350 None
+               OpBranchConditional %349 %351 %350
+        %351 = OpLabel
+        %352 = OpLoad %int %top
+        %353 = OpIAdd %int %352 %int_1
+               OpStore %top %353
+        %354 = OpLoad %int %p
+        %355 = OpIAdd %int %354 %int_1
+        %356 = OpAccessChain %_ptr_Function_int %stack %353
+               OpStore %356 %355
+        %357 = OpLoad %int %top
+        %358 = OpIAdd %int %357 %int_1
+               OpStore %top %358
+        %359 = OpLoad %int %h_0
+        %360 = OpAccessChain %_ptr_Function_int %stack %358
+               OpStore %360 %359
+               OpBranch %350
+        %350 = OpLabel
+               OpBranch %315
+        %315 = OpLabel
+               OpBranch %313
+        %314 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..231fdaf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.hlsl
@@ -0,0 +1,225 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b1, space0) {
+  uint4 x_34[1];
+};
+cbuffer cbuffer_x_37 : register(b0, space0) {
+  uint4 x_37[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_257 = i;
+  const int x_259 = obj.numbers[x_257];
+  temp = x_259;
+  const int x_260 = i;
+  const int x_261 = j;
+  const int x_263 = obj.numbers[x_261];
+  obj.numbers[x_260] = x_263;
+  const int x_265 = j;
+  obj.numbers[x_265] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_269 = h;
+  const int x_271 = obj.numbers[x_269];
+  pivot = x_271;
+  const int x_272 = l;
+  i_1 = (x_272 - 1);
+  const int x_274 = l;
+  j_1 = x_274;
+  while (true) {
+    const int x_279 = j_1;
+    const int x_280 = h;
+    if ((x_279 <= (x_280 - 1))) {
+    } else {
+      break;
+    }
+    const int x_286 = obj.numbers[j_1];
+    if ((x_286 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_300 = h;
+  param_3 = x_300;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_306 = (top + 1);
+  top = x_306;
+  stack[x_306] = l_1;
+  const int x_310 = (top + 1);
+  top = x_310;
+  stack[x_310] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_320 = top;
+    top = (x_320 - 1);
+    const int x_323 = stack[x_320];
+    h_1 = x_323;
+    const int x_324 = top;
+    top = (x_324 - 1);
+    const int x_327 = stack[x_324];
+    l_1 = x_327;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_330 = performPartition_i1_i1_(param_4, param_5);
+    p = x_330;
+    if (((p - 1) > l_1)) {
+      const int x_338 = (top + 1);
+      top = x_338;
+      stack[x_338] = l_1;
+      const int x_342 = (top + 1);
+      top = x_342;
+      stack[x_342] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_353 = (top + 1);
+      top = x_353;
+      stack[x_353] = (p + 1);
+      const int x_358 = (top + 1);
+      top = x_358;
+      stack[x_358] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_108 = i_2;
+      const int x_111 = obj.numbers[i_2];
+      const int x_114 = obj.numbers[i_2];
+      obj.numbers[x_108] = (x_111 * x_114);
+    }
+  }
+  quicksort_();
+  const float4 x_120 = x_GLF_FragCoord;
+  const float2 x_123 = asfloat(x_34[0].xy);
+  uv = (float2(x_120.x, x_120.y) / x_123);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_126 = obj.numbers[0];
+  const float x_129 = color.x;
+  color.x = (x_129 + float(x_126));
+  const float x_133 = uv.x;
+  if ((x_133 > 0.25f)) {
+    const int x_138 = obj.numbers[1];
+    const float x_141 = color.x;
+    color.x = (x_141 + float(x_138));
+  }
+  const float x_145 = uv.x;
+  if ((x_145 > 0.5f)) {
+    const float x_150 = asfloat(x_37[0].y);
+    const int x_155 = obj.numbers[max((2 * int(x_150)), 2)];
+    const float x_158 = asfloat(x_37[0].y);
+    const int x_163 = obj.numbers[max((2 * int(x_158)), 2)];
+    const float x_167 = color.y;
+    color.y = (x_167 + max(float(x_155), float(x_163)));
+  }
+  const float x_171 = uv.x;
+  if ((x_171 > 0.75f)) {
+    const int x_176 = obj.numbers[3];
+    const float x_179 = color.z;
+    color.z = (x_179 + float(x_176));
+  }
+  const int x_183 = obj.numbers[4];
+  const float x_186 = color.y;
+  color.y = (x_186 + float(x_183));
+  const float x_190 = uv.y;
+  if ((x_190 > 0.25f)) {
+    const int x_195 = obj.numbers[5];
+    const float x_198 = color.x;
+    color.x = (x_198 + float(x_195));
+  }
+  const float x_202 = uv.y;
+  if ((x_202 > 0.5f)) {
+    const int x_207 = obj.numbers[6];
+    const float x_210 = color.y;
+    color.y = (x_210 + float(x_207));
+  }
+  const float x_214 = uv.y;
+  if ((x_214 > 0.75f)) {
+    const int x_219 = obj.numbers[7];
+    const float x_222 = color.z;
+    color.z = (x_222 + float(x_219));
+  }
+  const int x_226 = obj.numbers[8];
+  const float x_229 = color.z;
+  color.z = (x_229 + float(x_226));
+  const float x_233 = uv.x;
+  const float x_235 = uv.y;
+  if ((abs((x_233 - x_235)) < 0.25f)) {
+    const int x_242 = obj.numbers[9];
+    const float x_245 = color.x;
+    color.x = (x_245 + float(x_242));
+  }
+  const float3 x_249 = normalize(color);
+  frag_color = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.msl
new file mode 100644
index 0000000..99d5039
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.msl
@@ -0,0 +1,272 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_6) {
+  int temp = 0;
+  int const x_257 = *(i);
+  int const x_259 = (*(tint_symbol_6)).numbers.arr[x_257];
+  temp = x_259;
+  int const x_260 = *(i);
+  int const x_261 = *(j);
+  int const x_263 = (*(tint_symbol_6)).numbers.arr[x_261];
+  (*(tint_symbol_6)).numbers.arr[x_260] = x_263;
+  int const x_265 = *(j);
+  int const x_266 = temp;
+  (*(tint_symbol_6)).numbers.arr[x_265] = x_266;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_7) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_269 = *(h);
+  int const x_271 = (*(tint_symbol_7)).numbers.arr[x_269];
+  pivot = x_271;
+  int const x_272 = *(l);
+  i_1 = (x_272 - 1);
+  int const x_274 = *(l);
+  j_1 = x_274;
+  while (true) {
+    int const x_279 = j_1;
+    int const x_280 = *(h);
+    if ((x_279 <= (x_280 - 1))) {
+    } else {
+      break;
+    }
+    int const x_284 = j_1;
+    int const x_286 = (*(tint_symbol_7)).numbers.arr[x_284];
+    int const x_287 = pivot;
+    if ((x_286 <= x_287)) {
+      int const x_291 = i_1;
+      i_1 = (x_291 + 1);
+      int const x_293 = i_1;
+      param = x_293;
+      int const x_294 = j_1;
+      param_1 = x_294;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_7);
+    }
+    {
+      int const x_296 = j_1;
+      j_1 = (x_296 + 1);
+    }
+  }
+  int const x_298 = i_1;
+  param_2 = (x_298 + 1);
+  int const x_300 = *(h);
+  param_3 = x_300;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_7);
+  int const x_302 = i_1;
+  return (x_302 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_8) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_305 = top;
+  int const x_306 = (x_305 + 1);
+  top = x_306;
+  int const x_307 = l_1;
+  stack.arr[x_306] = x_307;
+  int const x_309 = top;
+  int const x_310 = (x_309 + 1);
+  top = x_310;
+  int const x_311 = h_1;
+  stack.arr[x_310] = x_311;
+  while (true) {
+    int const x_317 = top;
+    if ((x_317 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_320 = top;
+    top = (x_320 - 1);
+    int const x_323 = stack.arr[x_320];
+    h_1 = x_323;
+    int const x_324 = top;
+    top = (x_324 - 1);
+    int const x_327 = stack.arr[x_324];
+    l_1 = x_327;
+    int const x_328 = l_1;
+    param_4 = x_328;
+    int const x_329 = h_1;
+    param_5 = x_329;
+    int const x_330 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_8);
+    p = x_330;
+    int const x_331 = p;
+    int const x_333 = l_1;
+    if (((x_331 - 1) > x_333)) {
+      int const x_337 = top;
+      int const x_338 = (x_337 + 1);
+      top = x_338;
+      int const x_339 = l_1;
+      stack.arr[x_338] = x_339;
+      int const x_341 = top;
+      int const x_342 = (x_341 + 1);
+      top = x_342;
+      int const x_343 = p;
+      stack.arr[x_342] = (x_343 - 1);
+    }
+    int const x_346 = p;
+    int const x_348 = h_1;
+    if (((x_346 + 1) < x_348)) {
+      int const x_352 = top;
+      int const x_353 = (x_352 + 1);
+      top = x_353;
+      int const x_354 = p;
+      stack.arr[x_353] = (x_354 + 1);
+      int const x_357 = top;
+      int const x_358 = (x_357 + 1);
+      top = x_358;
+      int const x_359 = h_1;
+      stack.arr[x_358] = x_359;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf1& x_34, constant buf0& x_37, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10, thread QuicksortObject* const tint_symbol_11, thread float4* const tint_symbol_12, thread float4* const tint_symbol_13) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_94 = *(tint_symbol_9);
+  *(tint_symbol_10) = ((x_94 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_101 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    int const x_104 = i_2;
+    int const x_105 = i_2;
+    (*(tint_symbol_11)).numbers.arr[x_104] = (10 - x_105);
+    int const x_108 = i_2;
+    int const x_109 = i_2;
+    int const x_111 = (*(tint_symbol_11)).numbers.arr[x_109];
+    int const x_112 = i_2;
+    int const x_114 = (*(tint_symbol_11)).numbers.arr[x_112];
+    (*(tint_symbol_11)).numbers.arr[x_108] = (x_111 * x_114);
+    {
+      int const x_117 = i_2;
+      i_2 = (x_117 + 1);
+    }
+  }
+  quicksort_(tint_symbol_11);
+  float4 const x_120 = *(tint_symbol_10);
+  float2 const x_123 = x_34.resolution;
+  uv = (float2(x_120.x, x_120.y) / x_123);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_126 = (*(tint_symbol_11)).numbers.arr[0];
+  float const x_129 = color.x;
+  color.x = (x_129 + float(x_126));
+  float const x_133 = uv.x;
+  if ((x_133 > 0.25f)) {
+    int const x_138 = (*(tint_symbol_11)).numbers.arr[1];
+    float const x_141 = color.x;
+    color.x = (x_141 + float(x_138));
+  }
+  float const x_145 = uv.x;
+  if ((x_145 > 0.5f)) {
+    float const x_150 = x_37.injectionSwitch.y;
+    int const x_155 = (*(tint_symbol_11)).numbers.arr[max((2 * int(x_150)), 2)];
+    float const x_158 = x_37.injectionSwitch.y;
+    int const x_163 = (*(tint_symbol_11)).numbers.arr[max((2 * int(x_158)), 2)];
+    float const x_167 = color.y;
+    color.y = (x_167 + fmax(float(x_155), float(x_163)));
+  }
+  float const x_171 = uv.x;
+  if ((x_171 > 0.75f)) {
+    int const x_176 = (*(tint_symbol_11)).numbers.arr[3];
+    float const x_179 = color.z;
+    color.z = (x_179 + float(x_176));
+  }
+  int const x_183 = (*(tint_symbol_11)).numbers.arr[4];
+  float const x_186 = color.y;
+  color.y = (x_186 + float(x_183));
+  float const x_190 = uv.y;
+  if ((x_190 > 0.25f)) {
+    int const x_195 = (*(tint_symbol_11)).numbers.arr[5];
+    float const x_198 = color.x;
+    color.x = (x_198 + float(x_195));
+  }
+  float const x_202 = uv.y;
+  if ((x_202 > 0.5f)) {
+    int const x_207 = (*(tint_symbol_11)).numbers.arr[6];
+    float const x_210 = color.y;
+    color.y = (x_210 + float(x_207));
+  }
+  float const x_214 = uv.y;
+  if ((x_214 > 0.75f)) {
+    int const x_219 = (*(tint_symbol_11)).numbers.arr[7];
+    float const x_222 = color.z;
+    color.z = (x_222 + float(x_219));
+  }
+  int const x_226 = (*(tint_symbol_11)).numbers.arr[8];
+  float const x_229 = color.z;
+  color.z = (x_229 + float(x_226));
+  float const x_233 = uv.x;
+  float const x_235 = uv.y;
+  if ((fabs((x_233 - x_235)) < 0.25f)) {
+    int const x_242 = (*(tint_symbol_11)).numbers.arr[9];
+    float const x_245 = color.x;
+    color.x = (x_245 + float(x_242));
+  }
+  float3 const x_248 = color;
+  float3 const x_249 = normalize(x_248);
+  *(tint_symbol_12) = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  float4 const x_254 = *(tint_symbol_9);
+  *(tint_symbol_13) = x_254;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf1& x_34 [[buffer(1)]], constant buf0& x_37 [[buffer(0)]]) {
+  thread float4 tint_symbol_14 = 0.0f;
+  thread float4 tint_symbol_15 = 0.0f;
+  thread QuicksortObject tint_symbol_16 = {};
+  thread float4 tint_symbol_17 = 0.0f;
+  thread float4 tint_symbol_18 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_14 = x_GLF_pos_param;
+  main_1(x_34, x_37, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_18));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_17, .gl_Position=tint_symbol_18};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..f53a11b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.spvasm
@@ -0,0 +1,593 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 408
+; Schema: 0
+               OpCapability Shader
+        %280 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_37 "x_37"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_37 NonWritable
+               OpDecorate %x_37 DescriptorSet 0
+               OpDecorate %x_37 Binding 0
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_34 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_37 = OpVariable %_ptr_Uniform_buf0 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %40 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %58 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %118 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %126 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %198 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %202 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %206 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+        %209 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %247 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %393 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %32
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %38 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %40
+         %42 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42
+         %46 = OpLoad %int %45
+               OpStore %temp %46
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %j
+         %51 = OpAccessChain %_ptr_Private_int %obj %uint_0 %50
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Private_int %obj %uint_0 %48
+               OpStore %53 %52
+         %55 = OpLoad %int %j
+         %56 = OpLoad %int %temp
+         %57 = OpAccessChain %_ptr_Private_int %obj %uint_0 %55
+               OpStore %57 %56
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %58
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %62 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %40
+        %i_1 = OpVariable %_ptr_Function_int Function %40
+        %j_1 = OpVariable %_ptr_Function_int Function %40
+      %param = OpVariable %_ptr_Function_int Function %40
+    %param_1 = OpVariable %_ptr_Function_int Function %40
+    %param_2 = OpVariable %_ptr_Function_int Function %40
+    %param_3 = OpVariable %_ptr_Function_int Function %40
+         %71 = OpLoad %int %h
+         %72 = OpAccessChain %_ptr_Private_int %obj %uint_0 %71
+         %73 = OpLoad %int %72
+               OpStore %pivot %73
+         %75 = OpLoad %int %l
+         %77 = OpISub %int %75 %int_1
+               OpStore %i_1 %77
+         %79 = OpLoad %int %l
+               OpStore %j_1 %79
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %j_1
+         %86 = OpLoad %int %h
+         %87 = OpISub %int %86 %int_1
+         %88 = OpSLessThanEqual %bool %84 %87
+               OpSelectionMerge %90 None
+               OpBranchConditional %88 %91 %92
+         %91 = OpLabel
+               OpBranch %90
+         %92 = OpLabel
+               OpBranch %81
+         %90 = OpLabel
+         %93 = OpLoad %int %j_1
+         %94 = OpAccessChain %_ptr_Private_int %obj %uint_0 %93
+         %95 = OpLoad %int %94
+         %96 = OpLoad %int %pivot
+         %97 = OpSLessThanEqual %bool %95 %96
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpLoad %int %i_1
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %i_1 %101
+        %102 = OpLoad %int %i_1
+               OpStore %param %102
+        %103 = OpLoad %int %j_1
+               OpStore %param_1 %103
+        %104 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %98
+         %98 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+        %107 = OpLoad %int %j_1
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %j_1 %108
+               OpBranch %80
+         %81 = OpLabel
+        %109 = OpLoad %int %i_1
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %param_2 %110
+        %112 = OpLoad %int %h
+               OpStore %param_3 %112
+        %113 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %116 = OpLoad %int %i_1
+        %117 = OpIAdd %int %116 %int_1
+               OpReturnValue %117
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %118
+        %120 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %40
+        %h_1 = OpVariable %_ptr_Function_int Function %40
+        %top = OpVariable %_ptr_Function_int Function %40
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %126
+          %p = OpVariable %_ptr_Function_int Function %40
+    %param_4 = OpVariable %_ptr_Function_int Function %40
+    %param_5 = OpVariable %_ptr_Function_int Function %40
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %133 = OpLoad %int %top
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %top %134
+        %135 = OpLoad %int %l_1
+        %136 = OpAccessChain %_ptr_Function_int %stack %134
+               OpStore %136 %135
+        %137 = OpLoad %int %top
+        %138 = OpIAdd %int %137 %int_1
+               OpStore %top %138
+        %139 = OpLoad %int %h_1
+        %140 = OpAccessChain %_ptr_Function_int %stack %138
+               OpStore %140 %139
+               OpBranch %141
+        %141 = OpLabel
+               OpLoopMerge %142 %143 None
+               OpBranch %144
+        %144 = OpLabel
+        %145 = OpLoad %int %top
+        %146 = OpSGreaterThanEqual %bool %145 %int_0
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %149
+        %148 = OpLabel
+               OpBranch %147
+        %149 = OpLabel
+               OpBranch %142
+        %147 = OpLabel
+        %150 = OpLoad %int %top
+        %151 = OpISub %int %150 %int_1
+               OpStore %top %151
+        %152 = OpAccessChain %_ptr_Function_int %stack %150
+        %153 = OpLoad %int %152
+               OpStore %h_1 %153
+        %154 = OpLoad %int %top
+        %155 = OpISub %int %154 %int_1
+               OpStore %top %155
+        %156 = OpAccessChain %_ptr_Function_int %stack %154
+        %157 = OpLoad %int %156
+               OpStore %l_1 %157
+        %158 = OpLoad %int %l_1
+               OpStore %param_4 %158
+        %159 = OpLoad %int %h_1
+               OpStore %param_5 %159
+        %160 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %160
+        %163 = OpLoad %int %p
+        %164 = OpLoad %int %l_1
+        %165 = OpISub %int %163 %int_1
+        %166 = OpSGreaterThan %bool %165 %164
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %167
+        %168 = OpLabel
+        %169 = OpLoad %int %top
+        %170 = OpIAdd %int %169 %int_1
+               OpStore %top %170
+        %171 = OpLoad %int %l_1
+        %172 = OpAccessChain %_ptr_Function_int %stack %170
+               OpStore %172 %171
+        %173 = OpLoad %int %top
+        %174 = OpIAdd %int %173 %int_1
+               OpStore %top %174
+        %175 = OpLoad %int %p
+        %176 = OpAccessChain %_ptr_Function_int %stack %174
+        %177 = OpISub %int %175 %int_1
+               OpStore %176 %177
+               OpBranch %167
+        %167 = OpLabel
+        %178 = OpLoad %int %p
+        %179 = OpLoad %int %h_1
+        %180 = OpIAdd %int %178 %int_1
+        %181 = OpSLessThan %bool %180 %179
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %top
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %top %185
+        %186 = OpLoad %int %p
+        %187 = OpAccessChain %_ptr_Function_int %stack %185
+        %188 = OpIAdd %int %186 %int_1
+               OpStore %187 %188
+        %189 = OpLoad %int %top
+        %190 = OpIAdd %int %189 %int_1
+               OpStore %top %190
+        %191 = OpLoad %int %h_1
+        %192 = OpAccessChain %_ptr_Function_int %stack %190
+               OpStore %192 %191
+               OpBranch %182
+        %182 = OpLabel
+               OpBranch %143
+        %143 = OpLabel
+               OpBranch %141
+        %142 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %118
+        %194 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %40
+         %uv = OpVariable %_ptr_Function_v2float Function %198
+      %color = OpVariable %_ptr_Function_v3float Function %202
+        %203 = OpLoad %v4float %x_GLF_pos
+        %207 = OpFAdd %v4float %203 %206
+        %210 = OpFMul %v4float %207 %209
+               OpStore %x_GLF_FragCoord %210
+               OpStore %i_2 %int_0
+               OpBranch %211
+        %211 = OpLabel
+               OpLoopMerge %212 %213 None
+               OpBranch %214
+        %214 = OpLabel
+        %215 = OpLoad %int %i_2
+        %217 = OpSLessThan %bool %215 %int_10
+               OpSelectionMerge %218 None
+               OpBranchConditional %217 %219 %220
+        %219 = OpLabel
+               OpBranch %218
+        %220 = OpLabel
+               OpBranch %212
+        %218 = OpLabel
+        %221 = OpLoad %int %i_2
+        %222 = OpLoad %int %i_2
+        %223 = OpAccessChain %_ptr_Private_int %obj %uint_0 %221
+        %224 = OpISub %int %int_10 %222
+               OpStore %223 %224
+        %225 = OpLoad %int %i_2
+        %226 = OpLoad %int %i_2
+        %227 = OpAccessChain %_ptr_Private_int %obj %uint_0 %226
+        %228 = OpLoad %int %227
+        %229 = OpLoad %int %i_2
+        %230 = OpAccessChain %_ptr_Private_int %obj %uint_0 %229
+        %231 = OpLoad %int %230
+        %232 = OpAccessChain %_ptr_Private_int %obj %uint_0 %225
+        %233 = OpIMul %int %228 %231
+               OpStore %232 %233
+               OpBranch %213
+        %213 = OpLabel
+        %234 = OpLoad %int %i_2
+        %235 = OpIAdd %int %234 %int_1
+               OpStore %i_2 %235
+               OpBranch %211
+        %212 = OpLabel
+        %236 = OpFunctionCall %void %quicksort_
+        %237 = OpLoad %v4float %x_GLF_FragCoord
+        %239 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %240 = OpLoad %v2float %239
+        %241 = OpCompositeExtract %float %237 0
+        %242 = OpCompositeExtract %float %237 1
+        %243 = OpCompositeConstruct %v2float %241 %242
+        %244 = OpFDiv %v2float %243 %240
+               OpStore %uv %244
+               OpStore %color %247
+        %248 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %249 = OpLoad %int %248
+        %251 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %252 = OpLoad %float %251
+        %253 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %254 = OpConvertSToF %float %249
+        %255 = OpFAdd %float %252 %254
+               OpStore %253 %255
+        %256 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %257 = OpLoad %float %256
+        %259 = OpFOrdGreaterThan %bool %257 %float_0_25
+               OpSelectionMerge %260 None
+               OpBranchConditional %259 %261 %260
+        %261 = OpLabel
+        %262 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %263 = OpLoad %int %262
+        %264 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %265 = OpLoad %float %264
+        %266 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %267 = OpConvertSToF %float %263
+        %268 = OpFAdd %float %265 %267
+               OpStore %266 %268
+               OpBranch %260
+        %260 = OpLabel
+        %269 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %270 = OpLoad %float %269
+        %272 = OpFOrdGreaterThan %bool %270 %float_0_5
+               OpSelectionMerge %273 None
+               OpBranchConditional %272 %274 %273
+        %274 = OpLabel
+        %277 = OpAccessChain %_ptr_Uniform_float %x_37 %uint_0 %uint_1
+        %278 = OpLoad %float %277
+        %282 = OpConvertFToS %int %278
+        %283 = OpIMul %int %int_2 %282
+        %279 = OpExtInst %int %280 SMax %283 %int_2
+        %284 = OpAccessChain %_ptr_Private_int %obj %uint_0 %279
+        %285 = OpLoad %int %284
+        %286 = OpAccessChain %_ptr_Uniform_float %x_37 %uint_0 %uint_1
+        %287 = OpLoad %float %286
+        %289 = OpConvertFToS %int %287
+        %290 = OpIMul %int %int_2 %289
+        %288 = OpExtInst %int %280 SMax %290 %int_2
+        %291 = OpAccessChain %_ptr_Private_int %obj %uint_0 %288
+        %292 = OpLoad %int %291
+        %293 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %294 = OpLoad %float %293
+        %295 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %297 = OpConvertSToF %float %285
+        %298 = OpConvertSToF %float %292
+        %296 = OpExtInst %float %280 NMax %297 %298
+        %299 = OpFAdd %float %294 %296
+               OpStore %295 %299
+               OpBranch %273
+        %273 = OpLabel
+        %300 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %301 = OpLoad %float %300
+        %303 = OpFOrdGreaterThan %bool %301 %float_0_75
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %304
+        %305 = OpLabel
+        %307 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %308 = OpLoad %int %307
+        %310 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %311 = OpLoad %float %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %313 = OpConvertSToF %float %308
+        %314 = OpFAdd %float %311 %313
+               OpStore %312 %314
+               OpBranch %304
+        %304 = OpLabel
+        %316 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %317 = OpLoad %int %316
+        %318 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %319 = OpLoad %float %318
+        %320 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %321 = OpConvertSToF %float %317
+        %322 = OpFAdd %float %319 %321
+               OpStore %320 %322
+        %323 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %324 = OpLoad %float %323
+        %325 = OpFOrdGreaterThan %bool %324 %float_0_25
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %326
+        %327 = OpLabel
+        %329 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %330 = OpLoad %int %329
+        %331 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %332 = OpLoad %float %331
+        %333 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %334 = OpConvertSToF %float %330
+        %335 = OpFAdd %float %332 %334
+               OpStore %333 %335
+               OpBranch %326
+        %326 = OpLabel
+        %336 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %337 = OpLoad %float %336
+        %338 = OpFOrdGreaterThan %bool %337 %float_0_5
+               OpSelectionMerge %339 None
+               OpBranchConditional %338 %340 %339
+        %340 = OpLabel
+        %342 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %343 = OpLoad %int %342
+        %344 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %345 = OpLoad %float %344
+        %346 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %347 = OpConvertSToF %float %343
+        %348 = OpFAdd %float %345 %347
+               OpStore %346 %348
+               OpBranch %339
+        %339 = OpLabel
+        %349 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %350 = OpLoad %float %349
+        %351 = OpFOrdGreaterThan %bool %350 %float_0_75
+               OpSelectionMerge %352 None
+               OpBranchConditional %351 %353 %352
+        %353 = OpLabel
+        %355 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %356 = OpLoad %int %355
+        %357 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %358 = OpLoad %float %357
+        %359 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %360 = OpConvertSToF %float %356
+        %361 = OpFAdd %float %358 %360
+               OpStore %359 %361
+               OpBranch %352
+        %352 = OpLabel
+        %363 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %364 = OpLoad %int %363
+        %365 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %366 = OpLoad %float %365
+        %367 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %368 = OpConvertSToF %float %364
+        %369 = OpFAdd %float %366 %368
+               OpStore %367 %369
+        %370 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %371 = OpLoad %float %370
+        %372 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %373 = OpLoad %float %372
+        %375 = OpFSub %float %371 %373
+        %374 = OpExtInst %float %280 FAbs %375
+        %376 = OpFOrdLessThan %bool %374 %float_0_25
+               OpSelectionMerge %377 None
+               OpBranchConditional %376 %378 %377
+        %378 = OpLabel
+        %379 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %380 = OpLoad %int %379
+        %381 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %382 = OpLoad %float %381
+        %383 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %384 = OpConvertSToF %float %380
+        %385 = OpFAdd %float %382 %384
+               OpStore %383 %385
+               OpBranch %377
+        %377 = OpLabel
+        %386 = OpLoad %v3float %color
+        %387 = OpExtInst %v3float %280 Normalize %386
+        %388 = OpCompositeExtract %float %387 0
+        %389 = OpCompositeExtract %float %387 1
+        %390 = OpCompositeExtract %float %387 2
+        %391 = OpCompositeConstruct %v4float %388 %389 %390 %float_1
+               OpStore %frag_color %391
+        %392 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %392
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %393
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %397 = OpLabel
+        %398 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %398
+        %399 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %399
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %118
+        %401 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %402 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %402
+        %403 = OpFunctionCall %void %main_1
+        %405 = OpLoad %v4float %frag_color
+        %406 = OpLoad %v4float %gl_Position
+        %407 = OpCompositeConstruct %main_out %405 %406
+        %404 = OpFunctionCall %void %tint_symbol_4 %407
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3d6cec0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.spvasm.expected.wgsl
@@ -0,0 +1,274 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_34 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_37 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_257 : i32 = *(i);
+  let x_259 : i32 = obj.numbers[x_257];
+  temp = x_259;
+  let x_260 : i32 = *(i);
+  let x_261 : i32 = *(j);
+  let x_263 : i32 = obj.numbers[x_261];
+  obj.numbers[x_260] = x_263;
+  let x_265 : i32 = *(j);
+  let x_266 : i32 = temp;
+  obj.numbers[x_265] = x_266;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_269 : i32 = *(h);
+  let x_271 : i32 = obj.numbers[x_269];
+  pivot = x_271;
+  let x_272 : i32 = *(l);
+  i_1 = (x_272 - 1);
+  let x_274 : i32 = *(l);
+  j_1 = x_274;
+  loop {
+    let x_279 : i32 = j_1;
+    let x_280 : i32 = *(h);
+    if ((x_279 <= (x_280 - 1))) {
+    } else {
+      break;
+    }
+    let x_284 : i32 = j_1;
+    let x_286 : i32 = obj.numbers[x_284];
+    let x_287 : i32 = pivot;
+    if ((x_286 <= x_287)) {
+      let x_291 : i32 = i_1;
+      i_1 = (x_291 + 1);
+      let x_293 : i32 = i_1;
+      param = x_293;
+      let x_294 : i32 = j_1;
+      param_1 = x_294;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_296 : i32 = j_1;
+      j_1 = (x_296 + 1);
+    }
+  }
+  let x_298 : i32 = i_1;
+  param_2 = (x_298 + 1);
+  let x_300 : i32 = *(h);
+  param_3 = x_300;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_302 : i32 = i_1;
+  return (x_302 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_305 : i32 = top;
+  let x_306 : i32 = (x_305 + 1);
+  top = x_306;
+  let x_307 : i32 = l_1;
+  stack[x_306] = x_307;
+  let x_309 : i32 = top;
+  let x_310 : i32 = (x_309 + 1);
+  top = x_310;
+  let x_311 : i32 = h_1;
+  stack[x_310] = x_311;
+  loop {
+    let x_317 : i32 = top;
+    if ((x_317 >= 0)) {
+    } else {
+      break;
+    }
+    let x_320 : i32 = top;
+    top = (x_320 - 1);
+    let x_323 : i32 = stack[x_320];
+    h_1 = x_323;
+    let x_324 : i32 = top;
+    top = (x_324 - 1);
+    let x_327 : i32 = stack[x_324];
+    l_1 = x_327;
+    let x_328 : i32 = l_1;
+    param_4 = x_328;
+    let x_329 : i32 = h_1;
+    param_5 = x_329;
+    let x_330 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_330;
+    let x_331 : i32 = p;
+    let x_333 : i32 = l_1;
+    if (((x_331 - 1) > x_333)) {
+      let x_337 : i32 = top;
+      let x_338 : i32 = (x_337 + 1);
+      top = x_338;
+      let x_339 : i32 = l_1;
+      stack[x_338] = x_339;
+      let x_341 : i32 = top;
+      let x_342 : i32 = (x_341 + 1);
+      top = x_342;
+      let x_343 : i32 = p;
+      stack[x_342] = (x_343 - 1);
+    }
+    let x_346 : i32 = p;
+    let x_348 : i32 = h_1;
+    if (((x_346 + 1) < x_348)) {
+      let x_352 : i32 = top;
+      let x_353 : i32 = (x_352 + 1);
+      top = x_353;
+      let x_354 : i32 = p;
+      stack[x_353] = (x_354 + 1);
+      let x_357 : i32 = top;
+      let x_358 : i32 = (x_357 + 1);
+      top = x_358;
+      let x_359 : i32 = h_1;
+      stack[x_358] = x_359;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_94 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_94 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_101 : i32 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    let x_104 : i32 = i_2;
+    let x_105 : i32 = i_2;
+    obj.numbers[x_104] = (10 - x_105);
+    let x_108 : i32 = i_2;
+    let x_109 : i32 = i_2;
+    let x_111 : i32 = obj.numbers[x_109];
+    let x_112 : i32 = i_2;
+    let x_114 : i32 = obj.numbers[x_112];
+    obj.numbers[x_108] = (x_111 * x_114);
+
+    continuing {
+      let x_117 : i32 = i_2;
+      i_2 = (x_117 + 1);
+    }
+  }
+  quicksort_();
+  let x_120 : vec4<f32> = x_GLF_FragCoord;
+  let x_123 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_120.x, x_120.y) / x_123);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_126 : i32 = obj.numbers[0];
+  let x_129 : f32 = color.x;
+  color.x = (x_129 + f32(x_126));
+  let x_133 : f32 = uv.x;
+  if ((x_133 > 0.25)) {
+    let x_138 : i32 = obj.numbers[1];
+    let x_141 : f32 = color.x;
+    color.x = (x_141 + f32(x_138));
+  }
+  let x_145 : f32 = uv.x;
+  if ((x_145 > 0.5)) {
+    let x_150 : f32 = x_37.injectionSwitch.y;
+    let x_155 : i32 = obj.numbers[max((2 * i32(x_150)), 2)];
+    let x_158 : f32 = x_37.injectionSwitch.y;
+    let x_163 : i32 = obj.numbers[max((2 * i32(x_158)), 2)];
+    let x_167 : f32 = color.y;
+    color.y = (x_167 + max(f32(x_155), f32(x_163)));
+  }
+  let x_171 : f32 = uv.x;
+  if ((x_171 > 0.75)) {
+    let x_176 : i32 = obj.numbers[3];
+    let x_179 : f32 = color.z;
+    color.z = (x_179 + f32(x_176));
+  }
+  let x_183 : i32 = obj.numbers[4];
+  let x_186 : f32 = color.y;
+  color.y = (x_186 + f32(x_183));
+  let x_190 : f32 = uv.y;
+  if ((x_190 > 0.25)) {
+    let x_195 : i32 = obj.numbers[5];
+    let x_198 : f32 = color.x;
+    color.x = (x_198 + f32(x_195));
+  }
+  let x_202 : f32 = uv.y;
+  if ((x_202 > 0.5)) {
+    let x_207 : i32 = obj.numbers[6];
+    let x_210 : f32 = color.y;
+    color.y = (x_210 + f32(x_207));
+  }
+  let x_214 : f32 = uv.y;
+  if ((x_214 > 0.75)) {
+    let x_219 : i32 = obj.numbers[7];
+    let x_222 : f32 = color.z;
+    color.z = (x_222 + f32(x_219));
+  }
+  let x_226 : i32 = obj.numbers[8];
+  let x_229 : f32 = color.z;
+  color.z = (x_229 + f32(x_226));
+  let x_233 : f32 = uv.x;
+  let x_235 : f32 = uv.y;
+  if ((abs((x_233 - x_235)) < 0.25)) {
+    let x_242 : i32 = obj.numbers[9];
+    let x_245 : f32 = color.x;
+    color.x = (x_245 + f32(x_242));
+  }
+  let x_248 : vec3<f32> = color;
+  let x_249 : vec3<f32> = normalize(x_248);
+  frag_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  let x_254 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_254;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
new file mode 100644
index 0000000..3d6cec0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
@@ -0,0 +1,274 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_34 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_37 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_257 : i32 = *(i);
+  let x_259 : i32 = obj.numbers[x_257];
+  temp = x_259;
+  let x_260 : i32 = *(i);
+  let x_261 : i32 = *(j);
+  let x_263 : i32 = obj.numbers[x_261];
+  obj.numbers[x_260] = x_263;
+  let x_265 : i32 = *(j);
+  let x_266 : i32 = temp;
+  obj.numbers[x_265] = x_266;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_269 : i32 = *(h);
+  let x_271 : i32 = obj.numbers[x_269];
+  pivot = x_271;
+  let x_272 : i32 = *(l);
+  i_1 = (x_272 - 1);
+  let x_274 : i32 = *(l);
+  j_1 = x_274;
+  loop {
+    let x_279 : i32 = j_1;
+    let x_280 : i32 = *(h);
+    if ((x_279 <= (x_280 - 1))) {
+    } else {
+      break;
+    }
+    let x_284 : i32 = j_1;
+    let x_286 : i32 = obj.numbers[x_284];
+    let x_287 : i32 = pivot;
+    if ((x_286 <= x_287)) {
+      let x_291 : i32 = i_1;
+      i_1 = (x_291 + 1);
+      let x_293 : i32 = i_1;
+      param = x_293;
+      let x_294 : i32 = j_1;
+      param_1 = x_294;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_296 : i32 = j_1;
+      j_1 = (x_296 + 1);
+    }
+  }
+  let x_298 : i32 = i_1;
+  param_2 = (x_298 + 1);
+  let x_300 : i32 = *(h);
+  param_3 = x_300;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_302 : i32 = i_1;
+  return (x_302 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_305 : i32 = top;
+  let x_306 : i32 = (x_305 + 1);
+  top = x_306;
+  let x_307 : i32 = l_1;
+  stack[x_306] = x_307;
+  let x_309 : i32 = top;
+  let x_310 : i32 = (x_309 + 1);
+  top = x_310;
+  let x_311 : i32 = h_1;
+  stack[x_310] = x_311;
+  loop {
+    let x_317 : i32 = top;
+    if ((x_317 >= 0)) {
+    } else {
+      break;
+    }
+    let x_320 : i32 = top;
+    top = (x_320 - 1);
+    let x_323 : i32 = stack[x_320];
+    h_1 = x_323;
+    let x_324 : i32 = top;
+    top = (x_324 - 1);
+    let x_327 : i32 = stack[x_324];
+    l_1 = x_327;
+    let x_328 : i32 = l_1;
+    param_4 = x_328;
+    let x_329 : i32 = h_1;
+    param_5 = x_329;
+    let x_330 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_330;
+    let x_331 : i32 = p;
+    let x_333 : i32 = l_1;
+    if (((x_331 - 1) > x_333)) {
+      let x_337 : i32 = top;
+      let x_338 : i32 = (x_337 + 1);
+      top = x_338;
+      let x_339 : i32 = l_1;
+      stack[x_338] = x_339;
+      let x_341 : i32 = top;
+      let x_342 : i32 = (x_341 + 1);
+      top = x_342;
+      let x_343 : i32 = p;
+      stack[x_342] = (x_343 - 1);
+    }
+    let x_346 : i32 = p;
+    let x_348 : i32 = h_1;
+    if (((x_346 + 1) < x_348)) {
+      let x_352 : i32 = top;
+      let x_353 : i32 = (x_352 + 1);
+      top = x_353;
+      let x_354 : i32 = p;
+      stack[x_353] = (x_354 + 1);
+      let x_357 : i32 = top;
+      let x_358 : i32 = (x_357 + 1);
+      top = x_358;
+      let x_359 : i32 = h_1;
+      stack[x_358] = x_359;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_94 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_94 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_101 : i32 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    let x_104 : i32 = i_2;
+    let x_105 : i32 = i_2;
+    obj.numbers[x_104] = (10 - x_105);
+    let x_108 : i32 = i_2;
+    let x_109 : i32 = i_2;
+    let x_111 : i32 = obj.numbers[x_109];
+    let x_112 : i32 = i_2;
+    let x_114 : i32 = obj.numbers[x_112];
+    obj.numbers[x_108] = (x_111 * x_114);
+
+    continuing {
+      let x_117 : i32 = i_2;
+      i_2 = (x_117 + 1);
+    }
+  }
+  quicksort_();
+  let x_120 : vec4<f32> = x_GLF_FragCoord;
+  let x_123 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_120.x, x_120.y) / x_123);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_126 : i32 = obj.numbers[0];
+  let x_129 : f32 = color.x;
+  color.x = (x_129 + f32(x_126));
+  let x_133 : f32 = uv.x;
+  if ((x_133 > 0.25)) {
+    let x_138 : i32 = obj.numbers[1];
+    let x_141 : f32 = color.x;
+    color.x = (x_141 + f32(x_138));
+  }
+  let x_145 : f32 = uv.x;
+  if ((x_145 > 0.5)) {
+    let x_150 : f32 = x_37.injectionSwitch.y;
+    let x_155 : i32 = obj.numbers[max((2 * i32(x_150)), 2)];
+    let x_158 : f32 = x_37.injectionSwitch.y;
+    let x_163 : i32 = obj.numbers[max((2 * i32(x_158)), 2)];
+    let x_167 : f32 = color.y;
+    color.y = (x_167 + max(f32(x_155), f32(x_163)));
+  }
+  let x_171 : f32 = uv.x;
+  if ((x_171 > 0.75)) {
+    let x_176 : i32 = obj.numbers[3];
+    let x_179 : f32 = color.z;
+    color.z = (x_179 + f32(x_176));
+  }
+  let x_183 : i32 = obj.numbers[4];
+  let x_186 : f32 = color.y;
+  color.y = (x_186 + f32(x_183));
+  let x_190 : f32 = uv.y;
+  if ((x_190 > 0.25)) {
+    let x_195 : i32 = obj.numbers[5];
+    let x_198 : f32 = color.x;
+    color.x = (x_198 + f32(x_195));
+  }
+  let x_202 : f32 = uv.y;
+  if ((x_202 > 0.5)) {
+    let x_207 : i32 = obj.numbers[6];
+    let x_210 : f32 = color.y;
+    color.y = (x_210 + f32(x_207));
+  }
+  let x_214 : f32 = uv.y;
+  if ((x_214 > 0.75)) {
+    let x_219 : i32 = obj.numbers[7];
+    let x_222 : f32 = color.z;
+    color.z = (x_222 + f32(x_219));
+  }
+  let x_226 : i32 = obj.numbers[8];
+  let x_229 : f32 = color.z;
+  color.z = (x_229 + f32(x_226));
+  let x_233 : f32 = uv.x;
+  let x_235 : f32 = uv.y;
+  if ((abs((x_233 - x_235)) < 0.25)) {
+    let x_242 : i32 = obj.numbers[9];
+    let x_245 : f32 = color.x;
+    color.x = (x_245 + f32(x_242));
+  }
+  let x_248 : vec3<f32> = color;
+  let x_249 : vec3<f32> = normalize(x_248);
+  frag_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  let x_254 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_254;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..231fdaf
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.hlsl
@@ -0,0 +1,225 @@
+struct QuicksortObject {
+  int numbers[10];
+};
+
+static QuicksortObject obj = (QuicksortObject)0;
+static float4 x_GLF_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 x_GLF_pos = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_34 : register(b1, space0) {
+  uint4 x_34[1];
+};
+cbuffer cbuffer_x_37 : register(b0, space0) {
+  uint4 x_37[1];
+};
+static float4 frag_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void swap_i1_i1_(inout int i, inout int j) {
+  int temp = 0;
+  const int x_257 = i;
+  const int x_259 = obj.numbers[x_257];
+  temp = x_259;
+  const int x_260 = i;
+  const int x_261 = j;
+  const int x_263 = obj.numbers[x_261];
+  obj.numbers[x_260] = x_263;
+  const int x_265 = j;
+  obj.numbers[x_265] = temp;
+  return;
+}
+
+int performPartition_i1_i1_(inout int l, inout int h) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  const int x_269 = h;
+  const int x_271 = obj.numbers[x_269];
+  pivot = x_271;
+  const int x_272 = l;
+  i_1 = (x_272 - 1);
+  const int x_274 = l;
+  j_1 = x_274;
+  while (true) {
+    const int x_279 = j_1;
+    const int x_280 = h;
+    if ((x_279 <= (x_280 - 1))) {
+    } else {
+      break;
+    }
+    const int x_286 = obj.numbers[j_1];
+    if ((x_286 <= pivot)) {
+      i_1 = (i_1 + 1);
+      param = i_1;
+      param_1 = j_1;
+      swap_i1_i1_(param, param_1);
+    }
+    {
+      j_1 = (j_1 + 1);
+    }
+  }
+  param_2 = (i_1 + 1);
+  const int x_300 = h;
+  param_3 = x_300;
+  swap_i1_i1_(param_2, param_3);
+  return (i_1 + 1);
+}
+
+void quicksort_() {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  int stack[10] = (int[10])0;
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  const int x_306 = (top + 1);
+  top = x_306;
+  stack[x_306] = l_1;
+  const int x_310 = (top + 1);
+  top = x_310;
+  stack[x_310] = h_1;
+  while (true) {
+    if ((top >= 0)) {
+    } else {
+      break;
+    }
+    const int x_320 = top;
+    top = (x_320 - 1);
+    const int x_323 = stack[x_320];
+    h_1 = x_323;
+    const int x_324 = top;
+    top = (x_324 - 1);
+    const int x_327 = stack[x_324];
+    l_1 = x_327;
+    param_4 = l_1;
+    param_5 = h_1;
+    const int x_330 = performPartition_i1_i1_(param_4, param_5);
+    p = x_330;
+    if (((p - 1) > l_1)) {
+      const int x_338 = (top + 1);
+      top = x_338;
+      stack[x_338] = l_1;
+      const int x_342 = (top + 1);
+      top = x_342;
+      stack[x_342] = (p - 1);
+    }
+    if (((p + 1) < h_1)) {
+      const int x_353 = (top + 1);
+      top = x_353;
+      stack[x_353] = (p + 1);
+      const int x_358 = (top + 1);
+      top = x_358;
+      stack[x_358] = h_1;
+    }
+  }
+  return;
+}
+
+void main_1() {
+  int i_2 = 0;
+  float2 uv = float2(0.0f, 0.0f);
+  float3 color = float3(0.0f, 0.0f, 0.0f);
+  x_GLF_FragCoord = ((x_GLF_pos + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  {
+    for(; (i_2 < 10); i_2 = (i_2 + 1)) {
+      obj.numbers[i_2] = (10 - i_2);
+      const int x_108 = i_2;
+      const int x_111 = obj.numbers[i_2];
+      const int x_114 = obj.numbers[i_2];
+      obj.numbers[x_108] = (x_111 * x_114);
+    }
+  }
+  quicksort_();
+  const float4 x_120 = x_GLF_FragCoord;
+  const float2 x_123 = asfloat(x_34[0].xy);
+  uv = (float2(x_120.x, x_120.y) / x_123);
+  color = float3(1.0f, 2.0f, 3.0f);
+  const int x_126 = obj.numbers[0];
+  const float x_129 = color.x;
+  color.x = (x_129 + float(x_126));
+  const float x_133 = uv.x;
+  if ((x_133 > 0.25f)) {
+    const int x_138 = obj.numbers[1];
+    const float x_141 = color.x;
+    color.x = (x_141 + float(x_138));
+  }
+  const float x_145 = uv.x;
+  if ((x_145 > 0.5f)) {
+    const float x_150 = asfloat(x_37[0].y);
+    const int x_155 = obj.numbers[max((2 * int(x_150)), 2)];
+    const float x_158 = asfloat(x_37[0].y);
+    const int x_163 = obj.numbers[max((2 * int(x_158)), 2)];
+    const float x_167 = color.y;
+    color.y = (x_167 + max(float(x_155), float(x_163)));
+  }
+  const float x_171 = uv.x;
+  if ((x_171 > 0.75f)) {
+    const int x_176 = obj.numbers[3];
+    const float x_179 = color.z;
+    color.z = (x_179 + float(x_176));
+  }
+  const int x_183 = obj.numbers[4];
+  const float x_186 = color.y;
+  color.y = (x_186 + float(x_183));
+  const float x_190 = uv.y;
+  if ((x_190 > 0.25f)) {
+    const int x_195 = obj.numbers[5];
+    const float x_198 = color.x;
+    color.x = (x_198 + float(x_195));
+  }
+  const float x_202 = uv.y;
+  if ((x_202 > 0.5f)) {
+    const int x_207 = obj.numbers[6];
+    const float x_210 = color.y;
+    color.y = (x_210 + float(x_207));
+  }
+  const float x_214 = uv.y;
+  if ((x_214 > 0.75f)) {
+    const int x_219 = obj.numbers[7];
+    const float x_222 = color.z;
+    color.z = (x_222 + float(x_219));
+  }
+  const int x_226 = obj.numbers[8];
+  const float x_229 = color.z;
+  color.z = (x_229 + float(x_226));
+  const float x_233 = uv.x;
+  const float x_235 = uv.y;
+  if ((abs((x_233 - x_235)) < 0.25f)) {
+    const int x_242 = obj.numbers[9];
+    const float x_245 = color.x;
+    color.x = (x_245 + float(x_242));
+  }
+  const float3 x_249 = normalize(color);
+  frag_color = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  gl_Position = x_GLF_pos;
+  return;
+}
+
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_pos_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 frag_color_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_GLF_pos_param = tint_symbol.x_GLF_pos_param;
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  const main_out tint_symbol_3 = {frag_color, gl_Position};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.frag_color_1, tint_symbol_3.gl_Position};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.msl
new file mode 100644
index 0000000..99d5039
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.msl
@@ -0,0 +1,272 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  int arr[10];
+};
+struct QuicksortObject {
+  tint_array_wrapper numbers;
+};
+struct buf1 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 frag_color_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_pos_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 frag_color_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObject* const tint_symbol_6) {
+  int temp = 0;
+  int const x_257 = *(i);
+  int const x_259 = (*(tint_symbol_6)).numbers.arr[x_257];
+  temp = x_259;
+  int const x_260 = *(i);
+  int const x_261 = *(j);
+  int const x_263 = (*(tint_symbol_6)).numbers.arr[x_261];
+  (*(tint_symbol_6)).numbers.arr[x_260] = x_263;
+  int const x_265 = *(j);
+  int const x_266 = temp;
+  (*(tint_symbol_6)).numbers.arr[x_265] = x_266;
+  return;
+}
+
+int performPartition_i1_i1_(thread int* const l, thread int* const h, thread QuicksortObject* const tint_symbol_7) {
+  int pivot = 0;
+  int i_1 = 0;
+  int j_1 = 0;
+  int param = 0;
+  int param_1 = 0;
+  int param_2 = 0;
+  int param_3 = 0;
+  int const x_269 = *(h);
+  int const x_271 = (*(tint_symbol_7)).numbers.arr[x_269];
+  pivot = x_271;
+  int const x_272 = *(l);
+  i_1 = (x_272 - 1);
+  int const x_274 = *(l);
+  j_1 = x_274;
+  while (true) {
+    int const x_279 = j_1;
+    int const x_280 = *(h);
+    if ((x_279 <= (x_280 - 1))) {
+    } else {
+      break;
+    }
+    int const x_284 = j_1;
+    int const x_286 = (*(tint_symbol_7)).numbers.arr[x_284];
+    int const x_287 = pivot;
+    if ((x_286 <= x_287)) {
+      int const x_291 = i_1;
+      i_1 = (x_291 + 1);
+      int const x_293 = i_1;
+      param = x_293;
+      int const x_294 = j_1;
+      param_1 = x_294;
+      swap_i1_i1_(&(param), &(param_1), tint_symbol_7);
+    }
+    {
+      int const x_296 = j_1;
+      j_1 = (x_296 + 1);
+    }
+  }
+  int const x_298 = i_1;
+  param_2 = (x_298 + 1);
+  int const x_300 = *(h);
+  param_3 = x_300;
+  swap_i1_i1_(&(param_2), &(param_3), tint_symbol_7);
+  int const x_302 = i_1;
+  return (x_302 + 1);
+}
+
+void quicksort_(thread QuicksortObject* const tint_symbol_8) {
+  int l_1 = 0;
+  int h_1 = 0;
+  int top = 0;
+  tint_array_wrapper stack = {};
+  int p = 0;
+  int param_4 = 0;
+  int param_5 = 0;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  int const x_305 = top;
+  int const x_306 = (x_305 + 1);
+  top = x_306;
+  int const x_307 = l_1;
+  stack.arr[x_306] = x_307;
+  int const x_309 = top;
+  int const x_310 = (x_309 + 1);
+  top = x_310;
+  int const x_311 = h_1;
+  stack.arr[x_310] = x_311;
+  while (true) {
+    int const x_317 = top;
+    if ((x_317 >= 0)) {
+    } else {
+      break;
+    }
+    int const x_320 = top;
+    top = (x_320 - 1);
+    int const x_323 = stack.arr[x_320];
+    h_1 = x_323;
+    int const x_324 = top;
+    top = (x_324 - 1);
+    int const x_327 = stack.arr[x_324];
+    l_1 = x_327;
+    int const x_328 = l_1;
+    param_4 = x_328;
+    int const x_329 = h_1;
+    param_5 = x_329;
+    int const x_330 = performPartition_i1_i1_(&(param_4), &(param_5), tint_symbol_8);
+    p = x_330;
+    int const x_331 = p;
+    int const x_333 = l_1;
+    if (((x_331 - 1) > x_333)) {
+      int const x_337 = top;
+      int const x_338 = (x_337 + 1);
+      top = x_338;
+      int const x_339 = l_1;
+      stack.arr[x_338] = x_339;
+      int const x_341 = top;
+      int const x_342 = (x_341 + 1);
+      top = x_342;
+      int const x_343 = p;
+      stack.arr[x_342] = (x_343 - 1);
+    }
+    int const x_346 = p;
+    int const x_348 = h_1;
+    if (((x_346 + 1) < x_348)) {
+      int const x_352 = top;
+      int const x_353 = (x_352 + 1);
+      top = x_353;
+      int const x_354 = p;
+      stack.arr[x_353] = (x_354 + 1);
+      int const x_357 = top;
+      int const x_358 = (x_357 + 1);
+      top = x_358;
+      int const x_359 = h_1;
+      stack.arr[x_358] = x_359;
+    }
+  }
+  return;
+}
+
+void main_1(constant buf1& x_34, constant buf0& x_37, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10, thread QuicksortObject* const tint_symbol_11, thread float4* const tint_symbol_12, thread float4* const tint_symbol_13) {
+  int i_2 = 0;
+  float2 uv = 0.0f;
+  float3 color = 0.0f;
+  float4 const x_94 = *(tint_symbol_9);
+  *(tint_symbol_10) = ((x_94 + float4(1.0f, 1.0f, 0.0f, 0.0f)) * float4(128.0f, 128.0f, 1.0f, 1.0f));
+  i_2 = 0;
+  while (true) {
+    int const x_101 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    int const x_104 = i_2;
+    int const x_105 = i_2;
+    (*(tint_symbol_11)).numbers.arr[x_104] = (10 - x_105);
+    int const x_108 = i_2;
+    int const x_109 = i_2;
+    int const x_111 = (*(tint_symbol_11)).numbers.arr[x_109];
+    int const x_112 = i_2;
+    int const x_114 = (*(tint_symbol_11)).numbers.arr[x_112];
+    (*(tint_symbol_11)).numbers.arr[x_108] = (x_111 * x_114);
+    {
+      int const x_117 = i_2;
+      i_2 = (x_117 + 1);
+    }
+  }
+  quicksort_(tint_symbol_11);
+  float4 const x_120 = *(tint_symbol_10);
+  float2 const x_123 = x_34.resolution;
+  uv = (float2(x_120.x, x_120.y) / x_123);
+  color = float3(1.0f, 2.0f, 3.0f);
+  int const x_126 = (*(tint_symbol_11)).numbers.arr[0];
+  float const x_129 = color.x;
+  color.x = (x_129 + float(x_126));
+  float const x_133 = uv.x;
+  if ((x_133 > 0.25f)) {
+    int const x_138 = (*(tint_symbol_11)).numbers.arr[1];
+    float const x_141 = color.x;
+    color.x = (x_141 + float(x_138));
+  }
+  float const x_145 = uv.x;
+  if ((x_145 > 0.5f)) {
+    float const x_150 = x_37.injectionSwitch.y;
+    int const x_155 = (*(tint_symbol_11)).numbers.arr[max((2 * int(x_150)), 2)];
+    float const x_158 = x_37.injectionSwitch.y;
+    int const x_163 = (*(tint_symbol_11)).numbers.arr[max((2 * int(x_158)), 2)];
+    float const x_167 = color.y;
+    color.y = (x_167 + fmax(float(x_155), float(x_163)));
+  }
+  float const x_171 = uv.x;
+  if ((x_171 > 0.75f)) {
+    int const x_176 = (*(tint_symbol_11)).numbers.arr[3];
+    float const x_179 = color.z;
+    color.z = (x_179 + float(x_176));
+  }
+  int const x_183 = (*(tint_symbol_11)).numbers.arr[4];
+  float const x_186 = color.y;
+  color.y = (x_186 + float(x_183));
+  float const x_190 = uv.y;
+  if ((x_190 > 0.25f)) {
+    int const x_195 = (*(tint_symbol_11)).numbers.arr[5];
+    float const x_198 = color.x;
+    color.x = (x_198 + float(x_195));
+  }
+  float const x_202 = uv.y;
+  if ((x_202 > 0.5f)) {
+    int const x_207 = (*(tint_symbol_11)).numbers.arr[6];
+    float const x_210 = color.y;
+    color.y = (x_210 + float(x_207));
+  }
+  float const x_214 = uv.y;
+  if ((x_214 > 0.75f)) {
+    int const x_219 = (*(tint_symbol_11)).numbers.arr[7];
+    float const x_222 = color.z;
+    color.z = (x_222 + float(x_219));
+  }
+  int const x_226 = (*(tint_symbol_11)).numbers.arr[8];
+  float const x_229 = color.z;
+  color.z = (x_229 + float(x_226));
+  float const x_233 = uv.x;
+  float const x_235 = uv.y;
+  if ((fabs((x_233 - x_235)) < 0.25f)) {
+    int const x_242 = (*(tint_symbol_11)).numbers.arr[9];
+    float const x_245 = color.x;
+    color.x = (x_245 + float(x_242));
+  }
+  float3 const x_248 = color;
+  float3 const x_249 = normalize(x_248);
+  *(tint_symbol_12) = float4(x_249.x, x_249.y, x_249.z, 1.0f);
+  float4 const x_254 = *(tint_symbol_9);
+  *(tint_symbol_13) = x_254;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant buf1& x_34 [[buffer(1)]], constant buf0& x_37 [[buffer(0)]]) {
+  thread float4 tint_symbol_14 = 0.0f;
+  thread float4 tint_symbol_15 = 0.0f;
+  thread QuicksortObject tint_symbol_16 = {};
+  thread float4 tint_symbol_17 = 0.0f;
+  thread float4 tint_symbol_18 = 0.0f;
+  float4 const x_GLF_pos_param = tint_symbol_1.x_GLF_pos_param;
+  tint_symbol_14 = x_GLF_pos_param;
+  main_1(x_34, x_37, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_18));
+  main_out const tint_symbol_4 = {.frag_color_1=tint_symbol_17, .gl_Position=tint_symbol_18};
+  tint_symbol_3 const tint_symbol_5 = {.frag_color_1=tint_symbol_4.frag_color_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..f53a11b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.spvasm
@@ -0,0 +1,593 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 408
+; Schema: 0
+               OpCapability Shader
+        %280 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %QuicksortObject "QuicksortObject"
+               OpMemberName %QuicksortObject 0 "numbers"
+               OpName %obj "obj"
+               OpName %x_GLF_FragCoord "x_GLF_FragCoord"
+               OpName %x_GLF_pos "x_GLF_pos"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "resolution"
+               OpName %x_34 "x_34"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_37 "x_37"
+               OpName %frag_color "frag_color"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %swap_i1_i1_ "swap_i1_i1_"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %temp "temp"
+               OpName %performPartition_i1_i1_ "performPartition_i1_i1_"
+               OpName %l "l"
+               OpName %h "h"
+               OpName %pivot "pivot"
+               OpName %i_1 "i_1"
+               OpName %j_1 "j_1"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %quicksort_ "quicksort_"
+               OpName %l_1 "l_1"
+               OpName %h_1 "h_1"
+               OpName %top "top"
+               OpName %stack "stack"
+               OpName %p "p"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %main_1 "main_1"
+               OpName %i_2 "i_2"
+               OpName %uv "uv"
+               OpName %color "color"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "frag_color_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpMemberDecorate %QuicksortObject 0 Offset 0
+               OpDecorate %_arr_int_uint_10 ArrayStride 4
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_34 NonWritable
+               OpDecorate %x_34 DescriptorSet 0
+               OpDecorate %x_34 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_37 NonWritable
+               OpDecorate %x_37 DescriptorSet 0
+               OpDecorate %x_37 Binding 0
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_int_uint_10 = OpTypeArray %int %uint_10
+%QuicksortObject = OpTypeStruct %_arr_int_uint_10
+%_ptr_Private_QuicksortObject = OpTypePointer Private %QuicksortObject
+         %12 = OpConstantNull %QuicksortObject
+        %obj = OpVariable %_ptr_Private_QuicksortObject Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%x_GLF_FragCoord = OpVariable %_ptr_Private_v4float Private %16
+  %x_GLF_pos = OpVariable %_ptr_Private_v4float Private %16
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_34 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_37 = OpVariable %_ptr_Uniform_buf0 Uniform
+ %frag_color = OpVariable %_ptr_Private_v4float Private %16
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %16
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %40 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_int = OpTypePointer Private %int
+         %58 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+        %118 = OpTypeFunction %void
+%_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10
+        %126 = OpConstantNull %_arr_int_uint_10
+      %int_0 = OpConstant %int 0
+      %int_9 = OpConstant %int 9
+     %int_n1 = OpConstant %int -1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %198 = OpConstantNull %v2float
+    %v3float = OpTypeVector %float 3
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %202 = OpConstantNull %v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+        %206 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
+  %float_128 = OpConstant %float 128
+        %209 = OpConstantComposite %v4float %float_128 %float_128 %float_1 %float_1
+     %int_10 = OpConstant %int 10
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+        %247 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+  %float_0_5 = OpConstant %float 0.5
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+ %float_0_75 = OpConstant %float 0.75
+      %int_3 = OpConstant %int 3
+     %uint_2 = OpConstant %uint 2
+      %int_4 = OpConstant %int 4
+      %int_5 = OpConstant %int 5
+      %int_6 = OpConstant %int 6
+      %int_7 = OpConstant %int 7
+      %int_8 = OpConstant %int 8
+   %main_out = OpTypeStruct %v4float %v4float
+        %393 = OpTypeFunction %void %main_out
+%swap_i1_i1_ = OpFunction %void None %32
+          %i = OpFunctionParameter %_ptr_Function_int
+          %j = OpFunctionParameter %_ptr_Function_int
+         %38 = OpLabel
+       %temp = OpVariable %_ptr_Function_int Function %40
+         %42 = OpLoad %int %i
+         %45 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42
+         %46 = OpLoad %int %45
+               OpStore %temp %46
+         %48 = OpLoad %int %i
+         %50 = OpLoad %int %j
+         %51 = OpAccessChain %_ptr_Private_int %obj %uint_0 %50
+         %52 = OpLoad %int %51
+         %53 = OpAccessChain %_ptr_Private_int %obj %uint_0 %48
+               OpStore %53 %52
+         %55 = OpLoad %int %j
+         %56 = OpLoad %int %temp
+         %57 = OpAccessChain %_ptr_Private_int %obj %uint_0 %55
+               OpStore %57 %56
+               OpReturn
+               OpFunctionEnd
+%performPartition_i1_i1_ = OpFunction %int None %58
+          %l = OpFunctionParameter %_ptr_Function_int
+          %h = OpFunctionParameter %_ptr_Function_int
+         %62 = OpLabel
+      %pivot = OpVariable %_ptr_Function_int Function %40
+        %i_1 = OpVariable %_ptr_Function_int Function %40
+        %j_1 = OpVariable %_ptr_Function_int Function %40
+      %param = OpVariable %_ptr_Function_int Function %40
+    %param_1 = OpVariable %_ptr_Function_int Function %40
+    %param_2 = OpVariable %_ptr_Function_int Function %40
+    %param_3 = OpVariable %_ptr_Function_int Function %40
+         %71 = OpLoad %int %h
+         %72 = OpAccessChain %_ptr_Private_int %obj %uint_0 %71
+         %73 = OpLoad %int %72
+               OpStore %pivot %73
+         %75 = OpLoad %int %l
+         %77 = OpISub %int %75 %int_1
+               OpStore %i_1 %77
+         %79 = OpLoad %int %l
+               OpStore %j_1 %79
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %j_1
+         %86 = OpLoad %int %h
+         %87 = OpISub %int %86 %int_1
+         %88 = OpSLessThanEqual %bool %84 %87
+               OpSelectionMerge %90 None
+               OpBranchConditional %88 %91 %92
+         %91 = OpLabel
+               OpBranch %90
+         %92 = OpLabel
+               OpBranch %81
+         %90 = OpLabel
+         %93 = OpLoad %int %j_1
+         %94 = OpAccessChain %_ptr_Private_int %obj %uint_0 %93
+         %95 = OpLoad %int %94
+         %96 = OpLoad %int %pivot
+         %97 = OpSLessThanEqual %bool %95 %96
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+        %100 = OpLoad %int %i_1
+        %101 = OpIAdd %int %100 %int_1
+               OpStore %i_1 %101
+        %102 = OpLoad %int %i_1
+               OpStore %param %102
+        %103 = OpLoad %int %j_1
+               OpStore %param_1 %103
+        %104 = OpFunctionCall %void %swap_i1_i1_ %param %param_1
+               OpBranch %98
+         %98 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+        %107 = OpLoad %int %j_1
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %j_1 %108
+               OpBranch %80
+         %81 = OpLabel
+        %109 = OpLoad %int %i_1
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %param_2 %110
+        %112 = OpLoad %int %h
+               OpStore %param_3 %112
+        %113 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3
+        %116 = OpLoad %int %i_1
+        %117 = OpIAdd %int %116 %int_1
+               OpReturnValue %117
+               OpFunctionEnd
+ %quicksort_ = OpFunction %void None %118
+        %120 = OpLabel
+        %l_1 = OpVariable %_ptr_Function_int Function %40
+        %h_1 = OpVariable %_ptr_Function_int Function %40
+        %top = OpVariable %_ptr_Function_int Function %40
+      %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %126
+          %p = OpVariable %_ptr_Function_int Function %40
+    %param_4 = OpVariable %_ptr_Function_int Function %40
+    %param_5 = OpVariable %_ptr_Function_int Function %40
+               OpStore %l_1 %int_0
+               OpStore %h_1 %int_9
+               OpStore %top %int_n1
+        %133 = OpLoad %int %top
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %top %134
+        %135 = OpLoad %int %l_1
+        %136 = OpAccessChain %_ptr_Function_int %stack %134
+               OpStore %136 %135
+        %137 = OpLoad %int %top
+        %138 = OpIAdd %int %137 %int_1
+               OpStore %top %138
+        %139 = OpLoad %int %h_1
+        %140 = OpAccessChain %_ptr_Function_int %stack %138
+               OpStore %140 %139
+               OpBranch %141
+        %141 = OpLabel
+               OpLoopMerge %142 %143 None
+               OpBranch %144
+        %144 = OpLabel
+        %145 = OpLoad %int %top
+        %146 = OpSGreaterThanEqual %bool %145 %int_0
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %149
+        %148 = OpLabel
+               OpBranch %147
+        %149 = OpLabel
+               OpBranch %142
+        %147 = OpLabel
+        %150 = OpLoad %int %top
+        %151 = OpISub %int %150 %int_1
+               OpStore %top %151
+        %152 = OpAccessChain %_ptr_Function_int %stack %150
+        %153 = OpLoad %int %152
+               OpStore %h_1 %153
+        %154 = OpLoad %int %top
+        %155 = OpISub %int %154 %int_1
+               OpStore %top %155
+        %156 = OpAccessChain %_ptr_Function_int %stack %154
+        %157 = OpLoad %int %156
+               OpStore %l_1 %157
+        %158 = OpLoad %int %l_1
+               OpStore %param_4 %158
+        %159 = OpLoad %int %h_1
+               OpStore %param_5 %159
+        %160 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5
+               OpStore %p %160
+        %163 = OpLoad %int %p
+        %164 = OpLoad %int %l_1
+        %165 = OpISub %int %163 %int_1
+        %166 = OpSGreaterThan %bool %165 %164
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %167
+        %168 = OpLabel
+        %169 = OpLoad %int %top
+        %170 = OpIAdd %int %169 %int_1
+               OpStore %top %170
+        %171 = OpLoad %int %l_1
+        %172 = OpAccessChain %_ptr_Function_int %stack %170
+               OpStore %172 %171
+        %173 = OpLoad %int %top
+        %174 = OpIAdd %int %173 %int_1
+               OpStore %top %174
+        %175 = OpLoad %int %p
+        %176 = OpAccessChain %_ptr_Function_int %stack %174
+        %177 = OpISub %int %175 %int_1
+               OpStore %176 %177
+               OpBranch %167
+        %167 = OpLabel
+        %178 = OpLoad %int %p
+        %179 = OpLoad %int %h_1
+        %180 = OpIAdd %int %178 %int_1
+        %181 = OpSLessThan %bool %180 %179
+               OpSelectionMerge %182 None
+               OpBranchConditional %181 %183 %182
+        %183 = OpLabel
+        %184 = OpLoad %int %top
+        %185 = OpIAdd %int %184 %int_1
+               OpStore %top %185
+        %186 = OpLoad %int %p
+        %187 = OpAccessChain %_ptr_Function_int %stack %185
+        %188 = OpIAdd %int %186 %int_1
+               OpStore %187 %188
+        %189 = OpLoad %int %top
+        %190 = OpIAdd %int %189 %int_1
+               OpStore %top %190
+        %191 = OpLoad %int %h_1
+        %192 = OpAccessChain %_ptr_Function_int %stack %190
+               OpStore %192 %191
+               OpBranch %182
+        %182 = OpLabel
+               OpBranch %143
+        %143 = OpLabel
+               OpBranch %141
+        %142 = OpLabel
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %118
+        %194 = OpLabel
+        %i_2 = OpVariable %_ptr_Function_int Function %40
+         %uv = OpVariable %_ptr_Function_v2float Function %198
+      %color = OpVariable %_ptr_Function_v3float Function %202
+        %203 = OpLoad %v4float %x_GLF_pos
+        %207 = OpFAdd %v4float %203 %206
+        %210 = OpFMul %v4float %207 %209
+               OpStore %x_GLF_FragCoord %210
+               OpStore %i_2 %int_0
+               OpBranch %211
+        %211 = OpLabel
+               OpLoopMerge %212 %213 None
+               OpBranch %214
+        %214 = OpLabel
+        %215 = OpLoad %int %i_2
+        %217 = OpSLessThan %bool %215 %int_10
+               OpSelectionMerge %218 None
+               OpBranchConditional %217 %219 %220
+        %219 = OpLabel
+               OpBranch %218
+        %220 = OpLabel
+               OpBranch %212
+        %218 = OpLabel
+        %221 = OpLoad %int %i_2
+        %222 = OpLoad %int %i_2
+        %223 = OpAccessChain %_ptr_Private_int %obj %uint_0 %221
+        %224 = OpISub %int %int_10 %222
+               OpStore %223 %224
+        %225 = OpLoad %int %i_2
+        %226 = OpLoad %int %i_2
+        %227 = OpAccessChain %_ptr_Private_int %obj %uint_0 %226
+        %228 = OpLoad %int %227
+        %229 = OpLoad %int %i_2
+        %230 = OpAccessChain %_ptr_Private_int %obj %uint_0 %229
+        %231 = OpLoad %int %230
+        %232 = OpAccessChain %_ptr_Private_int %obj %uint_0 %225
+        %233 = OpIMul %int %228 %231
+               OpStore %232 %233
+               OpBranch %213
+        %213 = OpLabel
+        %234 = OpLoad %int %i_2
+        %235 = OpIAdd %int %234 %int_1
+               OpStore %i_2 %235
+               OpBranch %211
+        %212 = OpLabel
+        %236 = OpFunctionCall %void %quicksort_
+        %237 = OpLoad %v4float %x_GLF_FragCoord
+        %239 = OpAccessChain %_ptr_Uniform_v2float %x_34 %uint_0
+        %240 = OpLoad %v2float %239
+        %241 = OpCompositeExtract %float %237 0
+        %242 = OpCompositeExtract %float %237 1
+        %243 = OpCompositeConstruct %v2float %241 %242
+        %244 = OpFDiv %v2float %243 %240
+               OpStore %uv %244
+               OpStore %color %247
+        %248 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_0
+        %249 = OpLoad %int %248
+        %251 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %252 = OpLoad %float %251
+        %253 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %254 = OpConvertSToF %float %249
+        %255 = OpFAdd %float %252 %254
+               OpStore %253 %255
+        %256 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %257 = OpLoad %float %256
+        %259 = OpFOrdGreaterThan %bool %257 %float_0_25
+               OpSelectionMerge %260 None
+               OpBranchConditional %259 %261 %260
+        %261 = OpLabel
+        %262 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1
+        %263 = OpLoad %int %262
+        %264 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %265 = OpLoad %float %264
+        %266 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %267 = OpConvertSToF %float %263
+        %268 = OpFAdd %float %265 %267
+               OpStore %266 %268
+               OpBranch %260
+        %260 = OpLabel
+        %269 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %270 = OpLoad %float %269
+        %272 = OpFOrdGreaterThan %bool %270 %float_0_5
+               OpSelectionMerge %273 None
+               OpBranchConditional %272 %274 %273
+        %274 = OpLabel
+        %277 = OpAccessChain %_ptr_Uniform_float %x_37 %uint_0 %uint_1
+        %278 = OpLoad %float %277
+        %282 = OpConvertFToS %int %278
+        %283 = OpIMul %int %int_2 %282
+        %279 = OpExtInst %int %280 SMax %283 %int_2
+        %284 = OpAccessChain %_ptr_Private_int %obj %uint_0 %279
+        %285 = OpLoad %int %284
+        %286 = OpAccessChain %_ptr_Uniform_float %x_37 %uint_0 %uint_1
+        %287 = OpLoad %float %286
+        %289 = OpConvertFToS %int %287
+        %290 = OpIMul %int %int_2 %289
+        %288 = OpExtInst %int %280 SMax %290 %int_2
+        %291 = OpAccessChain %_ptr_Private_int %obj %uint_0 %288
+        %292 = OpLoad %int %291
+        %293 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %294 = OpLoad %float %293
+        %295 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %297 = OpConvertSToF %float %285
+        %298 = OpConvertSToF %float %292
+        %296 = OpExtInst %float %280 NMax %297 %298
+        %299 = OpFAdd %float %294 %296
+               OpStore %295 %299
+               OpBranch %273
+        %273 = OpLabel
+        %300 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %301 = OpLoad %float %300
+        %303 = OpFOrdGreaterThan %bool %301 %float_0_75
+               OpSelectionMerge %304 None
+               OpBranchConditional %303 %305 %304
+        %305 = OpLabel
+        %307 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3
+        %308 = OpLoad %int %307
+        %310 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %311 = OpLoad %float %310
+        %312 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %313 = OpConvertSToF %float %308
+        %314 = OpFAdd %float %311 %313
+               OpStore %312 %314
+               OpBranch %304
+        %304 = OpLabel
+        %316 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4
+        %317 = OpLoad %int %316
+        %318 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %319 = OpLoad %float %318
+        %320 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %321 = OpConvertSToF %float %317
+        %322 = OpFAdd %float %319 %321
+               OpStore %320 %322
+        %323 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %324 = OpLoad %float %323
+        %325 = OpFOrdGreaterThan %bool %324 %float_0_25
+               OpSelectionMerge %326 None
+               OpBranchConditional %325 %327 %326
+        %327 = OpLabel
+        %329 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_5
+        %330 = OpLoad %int %329
+        %331 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %332 = OpLoad %float %331
+        %333 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %334 = OpConvertSToF %float %330
+        %335 = OpFAdd %float %332 %334
+               OpStore %333 %335
+               OpBranch %326
+        %326 = OpLabel
+        %336 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %337 = OpLoad %float %336
+        %338 = OpFOrdGreaterThan %bool %337 %float_0_5
+               OpSelectionMerge %339 None
+               OpBranchConditional %338 %340 %339
+        %340 = OpLabel
+        %342 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_6
+        %343 = OpLoad %int %342
+        %344 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %345 = OpLoad %float %344
+        %346 = OpAccessChain %_ptr_Function_float %color %uint_1
+        %347 = OpConvertSToF %float %343
+        %348 = OpFAdd %float %345 %347
+               OpStore %346 %348
+               OpBranch %339
+        %339 = OpLabel
+        %349 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %350 = OpLoad %float %349
+        %351 = OpFOrdGreaterThan %bool %350 %float_0_75
+               OpSelectionMerge %352 None
+               OpBranchConditional %351 %353 %352
+        %353 = OpLabel
+        %355 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7
+        %356 = OpLoad %int %355
+        %357 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %358 = OpLoad %float %357
+        %359 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %360 = OpConvertSToF %float %356
+        %361 = OpFAdd %float %358 %360
+               OpStore %359 %361
+               OpBranch %352
+        %352 = OpLabel
+        %363 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8
+        %364 = OpLoad %int %363
+        %365 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %366 = OpLoad %float %365
+        %367 = OpAccessChain %_ptr_Function_float %color %uint_2
+        %368 = OpConvertSToF %float %364
+        %369 = OpFAdd %float %366 %368
+               OpStore %367 %369
+        %370 = OpAccessChain %_ptr_Function_float %uv %uint_0
+        %371 = OpLoad %float %370
+        %372 = OpAccessChain %_ptr_Function_float %uv %uint_1
+        %373 = OpLoad %float %372
+        %375 = OpFSub %float %371 %373
+        %374 = OpExtInst %float %280 FAbs %375
+        %376 = OpFOrdLessThan %bool %374 %float_0_25
+               OpSelectionMerge %377 None
+               OpBranchConditional %376 %378 %377
+        %378 = OpLabel
+        %379 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_9
+        %380 = OpLoad %int %379
+        %381 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %382 = OpLoad %float %381
+        %383 = OpAccessChain %_ptr_Function_float %color %uint_0
+        %384 = OpConvertSToF %float %380
+        %385 = OpFAdd %float %382 %384
+               OpStore %383 %385
+               OpBranch %377
+        %377 = OpLabel
+        %386 = OpLoad %v3float %color
+        %387 = OpExtInst %v3float %280 Normalize %386
+        %388 = OpCompositeExtract %float %387 0
+        %389 = OpCompositeExtract %float %387 1
+        %390 = OpCompositeExtract %float %387 2
+        %391 = OpCompositeConstruct %v4float %388 %389 %390 %float_1
+               OpStore %frag_color %391
+        %392 = OpLoad %v4float %x_GLF_pos
+               OpStore %gl_Position %392
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %393
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %397 = OpLabel
+        %398 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %398
+        %399 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %399
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %118
+        %401 = OpLabel
+               OpStore %tint_pointsize %float_1
+        %402 = OpLoad %v4float %tint_symbol
+               OpStore %x_GLF_pos %402
+        %403 = OpFunctionCall %void %main_1
+        %405 = OpLoad %v4float %frag_color
+        %406 = OpLoad %v4float %gl_Position
+        %407 = OpCompositeConstruct %main_out %405 %406
+        %404 = OpFunctionCall %void %tint_symbol_4 %407
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3d6cec0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl.expected.wgsl
@@ -0,0 +1,274 @@
+struct QuicksortObject {
+  numbers : array<i32, 10>;
+};
+
+[[block]]
+struct buf1 {
+  resolution : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> obj : QuicksortObject;
+
+var<private> x_GLF_FragCoord : vec4<f32>;
+
+var<private> x_GLF_pos : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_34 : buf1;
+
+[[group(0), binding(0)]] var<uniform> x_37 : buf0;
+
+var<private> frag_color : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
+  var temp : i32;
+  let x_257 : i32 = *(i);
+  let x_259 : i32 = obj.numbers[x_257];
+  temp = x_259;
+  let x_260 : i32 = *(i);
+  let x_261 : i32 = *(j);
+  let x_263 : i32 = obj.numbers[x_261];
+  obj.numbers[x_260] = x_263;
+  let x_265 : i32 = *(j);
+  let x_266 : i32 = temp;
+  obj.numbers[x_265] = x_266;
+  return;
+}
+
+fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
+  var pivot : i32;
+  var i_1 : i32;
+  var j_1 : i32;
+  var param : i32;
+  var param_1 : i32;
+  var param_2 : i32;
+  var param_3 : i32;
+  let x_269 : i32 = *(h);
+  let x_271 : i32 = obj.numbers[x_269];
+  pivot = x_271;
+  let x_272 : i32 = *(l);
+  i_1 = (x_272 - 1);
+  let x_274 : i32 = *(l);
+  j_1 = x_274;
+  loop {
+    let x_279 : i32 = j_1;
+    let x_280 : i32 = *(h);
+    if ((x_279 <= (x_280 - 1))) {
+    } else {
+      break;
+    }
+    let x_284 : i32 = j_1;
+    let x_286 : i32 = obj.numbers[x_284];
+    let x_287 : i32 = pivot;
+    if ((x_286 <= x_287)) {
+      let x_291 : i32 = i_1;
+      i_1 = (x_291 + 1);
+      let x_293 : i32 = i_1;
+      param = x_293;
+      let x_294 : i32 = j_1;
+      param_1 = x_294;
+      swap_i1_i1_(&(param), &(param_1));
+    }
+
+    continuing {
+      let x_296 : i32 = j_1;
+      j_1 = (x_296 + 1);
+    }
+  }
+  let x_298 : i32 = i_1;
+  param_2 = (x_298 + 1);
+  let x_300 : i32 = *(h);
+  param_3 = x_300;
+  swap_i1_i1_(&(param_2), &(param_3));
+  let x_302 : i32 = i_1;
+  return (x_302 + 1);
+}
+
+fn quicksort_() {
+  var l_1 : i32;
+  var h_1 : i32;
+  var top : i32;
+  var stack : array<i32, 10>;
+  var p : i32;
+  var param_4 : i32;
+  var param_5 : i32;
+  l_1 = 0;
+  h_1 = 9;
+  top = -1;
+  let x_305 : i32 = top;
+  let x_306 : i32 = (x_305 + 1);
+  top = x_306;
+  let x_307 : i32 = l_1;
+  stack[x_306] = x_307;
+  let x_309 : i32 = top;
+  let x_310 : i32 = (x_309 + 1);
+  top = x_310;
+  let x_311 : i32 = h_1;
+  stack[x_310] = x_311;
+  loop {
+    let x_317 : i32 = top;
+    if ((x_317 >= 0)) {
+    } else {
+      break;
+    }
+    let x_320 : i32 = top;
+    top = (x_320 - 1);
+    let x_323 : i32 = stack[x_320];
+    h_1 = x_323;
+    let x_324 : i32 = top;
+    top = (x_324 - 1);
+    let x_327 : i32 = stack[x_324];
+    l_1 = x_327;
+    let x_328 : i32 = l_1;
+    param_4 = x_328;
+    let x_329 : i32 = h_1;
+    param_5 = x_329;
+    let x_330 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
+    p = x_330;
+    let x_331 : i32 = p;
+    let x_333 : i32 = l_1;
+    if (((x_331 - 1) > x_333)) {
+      let x_337 : i32 = top;
+      let x_338 : i32 = (x_337 + 1);
+      top = x_338;
+      let x_339 : i32 = l_1;
+      stack[x_338] = x_339;
+      let x_341 : i32 = top;
+      let x_342 : i32 = (x_341 + 1);
+      top = x_342;
+      let x_343 : i32 = p;
+      stack[x_342] = (x_343 - 1);
+    }
+    let x_346 : i32 = p;
+    let x_348 : i32 = h_1;
+    if (((x_346 + 1) < x_348)) {
+      let x_352 : i32 = top;
+      let x_353 : i32 = (x_352 + 1);
+      top = x_353;
+      let x_354 : i32 = p;
+      stack[x_353] = (x_354 + 1);
+      let x_357 : i32 = top;
+      let x_358 : i32 = (x_357 + 1);
+      top = x_358;
+      let x_359 : i32 = h_1;
+      stack[x_358] = x_359;
+    }
+  }
+  return;
+}
+
+fn main_1() {
+  var i_2 : i32;
+  var uv : vec2<f32>;
+  var color : vec3<f32>;
+  let x_94 : vec4<f32> = x_GLF_pos;
+  x_GLF_FragCoord = ((x_94 + vec4<f32>(1.0, 1.0, 0.0, 0.0)) * vec4<f32>(128.0, 128.0, 1.0, 1.0));
+  i_2 = 0;
+  loop {
+    let x_101 : i32 = i_2;
+    if ((x_101 < 10)) {
+    } else {
+      break;
+    }
+    let x_104 : i32 = i_2;
+    let x_105 : i32 = i_2;
+    obj.numbers[x_104] = (10 - x_105);
+    let x_108 : i32 = i_2;
+    let x_109 : i32 = i_2;
+    let x_111 : i32 = obj.numbers[x_109];
+    let x_112 : i32 = i_2;
+    let x_114 : i32 = obj.numbers[x_112];
+    obj.numbers[x_108] = (x_111 * x_114);
+
+    continuing {
+      let x_117 : i32 = i_2;
+      i_2 = (x_117 + 1);
+    }
+  }
+  quicksort_();
+  let x_120 : vec4<f32> = x_GLF_FragCoord;
+  let x_123 : vec2<f32> = x_34.resolution;
+  uv = (vec2<f32>(x_120.x, x_120.y) / x_123);
+  color = vec3<f32>(1.0, 2.0, 3.0);
+  let x_126 : i32 = obj.numbers[0];
+  let x_129 : f32 = color.x;
+  color.x = (x_129 + f32(x_126));
+  let x_133 : f32 = uv.x;
+  if ((x_133 > 0.25)) {
+    let x_138 : i32 = obj.numbers[1];
+    let x_141 : f32 = color.x;
+    color.x = (x_141 + f32(x_138));
+  }
+  let x_145 : f32 = uv.x;
+  if ((x_145 > 0.5)) {
+    let x_150 : f32 = x_37.injectionSwitch.y;
+    let x_155 : i32 = obj.numbers[max((2 * i32(x_150)), 2)];
+    let x_158 : f32 = x_37.injectionSwitch.y;
+    let x_163 : i32 = obj.numbers[max((2 * i32(x_158)), 2)];
+    let x_167 : f32 = color.y;
+    color.y = (x_167 + max(f32(x_155), f32(x_163)));
+  }
+  let x_171 : f32 = uv.x;
+  if ((x_171 > 0.75)) {
+    let x_176 : i32 = obj.numbers[3];
+    let x_179 : f32 = color.z;
+    color.z = (x_179 + f32(x_176));
+  }
+  let x_183 : i32 = obj.numbers[4];
+  let x_186 : f32 = color.y;
+  color.y = (x_186 + f32(x_183));
+  let x_190 : f32 = uv.y;
+  if ((x_190 > 0.25)) {
+    let x_195 : i32 = obj.numbers[5];
+    let x_198 : f32 = color.x;
+    color.x = (x_198 + f32(x_195));
+  }
+  let x_202 : f32 = uv.y;
+  if ((x_202 > 0.5)) {
+    let x_207 : i32 = obj.numbers[6];
+    let x_210 : f32 = color.y;
+    color.y = (x_210 + f32(x_207));
+  }
+  let x_214 : f32 = uv.y;
+  if ((x_214 > 0.75)) {
+    let x_219 : i32 = obj.numbers[7];
+    let x_222 : f32 = color.z;
+    color.z = (x_222 + f32(x_219));
+  }
+  let x_226 : i32 = obj.numbers[8];
+  let x_229 : f32 = color.z;
+  color.z = (x_229 + f32(x_226));
+  let x_233 : f32 = uv.x;
+  let x_235 : f32 = uv.y;
+  if ((abs((x_233 - x_235)) < 0.25)) {
+    let x_242 : i32 = obj.numbers[9];
+    let x_245 : f32 = color.x;
+    color.x = (x_245 + f32(x_242));
+  }
+  let x_248 : vec3<f32> = color;
+  let x_249 : vec3<f32> = normalize(x_248);
+  frag_color = vec4<f32>(x_249.x, x_249.y, x_249.z, 1.0);
+  let x_254 : vec4<f32> = x_GLF_pos;
+  gl_Position = x_254;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  frag_color_1 : vec4<f32>;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+  x_GLF_pos = x_GLF_pos_param;
+  main_1();
+  return main_out(frag_color, gl_Position);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm
new file mode 100644
index 0000000..f72cf88
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm
@@ -0,0 +1,284 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %collision_vf2_vf4_ "collision(vf2;vf4;"
+               OpName %pos "pos"
+               OpName %quad "quad"
+               OpName %match_vf2_ "match(vf2;"
+               OpName %pos_0 "pos"
+               OpName %res "res"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %indexable "indexable"
+               OpName %indexable_0 "indexable"
+               OpName %indexable_1 "indexable"
+               OpName %indexable_2 "indexable"
+               OpName %lin "lin"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %param_1 "param"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+       %bool = OpTypeBool
+         %30 = OpTypeFunction %bool %_ptr_Function_v2float %_ptr_Function_v4float
+         %31 = OpTypeFunction %v4float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+  %float_0_5 = OpConstant %float 0.5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+   %float_n1 = OpConstant %float -1
+    %float_1 = OpConstant %float 1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+         %54 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+         %55 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+         %56 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+         %58 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+         %61 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+         %63 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+         %65 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+         %67 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+         %68 = OpConstantComposite %_arr_v4float_uint_8 %54 %55 %56 %58 %61 %63 %65 %67
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+         %72 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %73 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+         %74 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+         %75 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+         %76 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+         %77 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+         %78 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+         %79 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+         %80 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %81 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+         %82 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+         %83 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+         %84 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+         %85 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+         %86 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+         %87 = OpConstantComposite %_arr_v4float_uint_16 %72 %73 %74 %75 %76 %77 %78 %79 %72 %80 %81 %82 %83 %84 %85 %86
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+      %int_1 = OpConstant %int 1
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+       %main = OpFunction %void None %23
+         %97 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+         %98 = OpLoad %v4float %gl_FragCoord
+         %99 = OpVectorShuffle %v2float %98 %98 0 1
+        %100 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+        %101 = OpLoad %v2float %100
+        %102 = OpFDiv %v2float %99 %101
+               OpStore %lin %102
+        %103 = OpLoad %v2float %lin
+        %104 = OpVectorTimesScalar %v2float %103 %float_32
+        %105 = OpExtInst %v2float %1 Floor %104
+               OpStore %lin %105
+        %106 = OpLoad %v2float %lin
+               OpStore %param_1 %106
+        %107 = OpFunctionCall %v4float %match_vf2_ %param_1
+               OpStore %_GLF_color %107
+               OpReturn
+               OpFunctionEnd
+%collision_vf2_vf4_ = OpFunction %bool None %30
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+       %quad = OpFunctionParameter %_ptr_Function_v4float
+        %108 = OpLabel
+        %109 = OpAccessChain %_ptr_Function_float %pos %uint_0
+        %110 = OpLoad %float %109
+        %111 = OpAccessChain %_ptr_Function_float %quad %uint_0
+        %112 = OpLoad %float %111
+        %113 = OpFOrdLessThan %bool %110 %112
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %114
+        %115 = OpLabel
+               OpReturnValue %false
+        %114 = OpLabel
+        %116 = OpAccessChain %_ptr_Function_float %pos %uint_1
+        %117 = OpLoad %float %116
+        %118 = OpAccessChain %_ptr_Function_float %quad %uint_1
+        %119 = OpLoad %float %118
+        %120 = OpFOrdLessThan %bool %117 %119
+               OpSelectionMerge %121 None
+               OpBranchConditional %120 %122 %121
+        %122 = OpLabel
+               OpReturnValue %false
+        %121 = OpLabel
+        %123 = OpAccessChain %_ptr_Function_float %pos %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpAccessChain %_ptr_Function_float %quad %uint_0
+        %126 = OpLoad %float %125
+        %127 = OpAccessChain %_ptr_Function_float %quad %uint_2
+        %128 = OpLoad %float %127
+        %129 = OpFAdd %float %126 %128
+        %130 = OpFOrdGreaterThan %bool %124 %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+               OpReturnValue %false
+        %131 = OpLabel
+        %133 = OpAccessChain %_ptr_Function_float %pos %uint_1
+        %134 = OpLoad %float %133
+        %135 = OpAccessChain %_ptr_Function_float %quad %uint_1
+        %136 = OpLoad %float %135
+        %137 = OpAccessChain %_ptr_Function_float %quad %uint_3
+        %138 = OpLoad %float %137
+        %139 = OpFAdd %float %136 %138
+        %140 = OpFOrdGreaterThan %bool %134 %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+               OpReturnValue %false
+        %141 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+ %match_vf2_ = OpFunction %v4float None %31
+      %pos_0 = OpFunctionParameter %_ptr_Function_v2float
+        %143 = OpLabel
+        %res = OpVariable %_ptr_Function_v4float Function
+        %144 = OpVariable %_ptr_Function_float Function
+        %145 = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v4float Function
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+%indexable_0 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function
+%indexable_2 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
+        %146 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %147 = OpLoad %float %146
+        %148 = OpFOrdLessThan %bool %147 %float_0
+               OpSelectionMerge %149 None
+               OpBranchConditional %148 %150 %151
+        %150 = OpLabel
+               OpStore %144 %float_n1
+               OpBranch %149
+        %151 = OpLabel
+        %152 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpFOrdGreaterThanEqual %bool %153 %float_0
+               OpSelectionMerge %155 None
+               OpBranchConditional %154 %156 %157
+        %156 = OpLabel
+        %158 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+        %159 = OpLoad %float %158
+        %160 = OpFOrdGreaterThanEqual %bool %159 %float_0
+        %161 = OpSelect %float %160 %float_0_5 %float_1
+               OpStore %145 %161
+               OpBranch %155
+        %157 = OpLabel
+               OpStore %145 %float_1
+               OpBranch %155
+        %155 = OpLabel
+        %162 = OpLoad %float %145
+        %163 = OpExtInst %float %1 FMin %162 %float_0_5
+               OpStore %144 %163
+               OpBranch %149
+        %149 = OpLabel
+        %164 = OpLoad %float %144
+        %165 = OpExtInst %float %1 FClamp %float_0_5 %float_0_5 %164
+        %166 = OpCompositeConstruct %v4float %165 %float_0_5 %float_1 %float_1
+               OpStore %res %166
+               OpStore %i %int_0
+               OpBranch %167
+        %167 = OpLabel
+               OpLoopMerge %168 %169 None
+               OpBranch %170
+        %170 = OpLabel
+        %171 = OpLoad %int %i
+        %172 = OpSLessThan %bool %171 %int_8
+               OpBranchConditional %172 %173 %168
+        %173 = OpLabel
+        %174 = OpLoad %int %i
+        %175 = OpLoad %v2float %pos_0
+               OpStore %param %175
+               OpStore %indexable %68
+        %176 = OpAccessChain %_ptr_Function_v4float %indexable %174
+        %177 = OpLoad %v4float %176
+               OpStore %param_0 %177
+        %178 = OpFunctionCall %bool %collision_vf2_vf4_ %param %param_0
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %179
+        %180 = OpLabel
+        %181 = OpLoad %int %i
+               OpStore %indexable_0 %68
+        %182 = OpAccessChain %_ptr_Function_float %indexable_0 %181 %uint_0
+        %183 = OpLoad %float %182
+        %184 = OpConvertFToS %int %183
+        %185 = OpLoad %int %i
+               OpStore %indexable_1 %68
+        %186 = OpAccessChain %_ptr_Function_float %indexable_1 %185 %uint_1
+        %187 = OpLoad %float %186
+        %188 = OpConvertFToS %int %187
+        %189 = OpIMul %int %184 %188
+        %190 = OpLoad %int %i
+        %191 = OpIMul %int %190 %int_9
+        %192 = OpIAdd %int %189 %191
+        %193 = OpIAdd %int %192 %int_11
+        %194 = OpSMod %int %193 %int_16
+               OpStore %indexable_2 %87
+        %195 = OpAccessChain %_ptr_Function_v4float %indexable_2 %194
+        %196 = OpLoad %v4float %195
+               OpStore %res %196
+               OpBranch %179
+        %179 = OpLabel
+               OpBranch %169
+        %169 = OpLabel
+        %197 = OpLoad %int %i
+        %198 = OpIAdd %int %197 %int_1
+               OpStore %i %198
+               OpBranch %167
+        %168 = OpLabel
+        %199 = OpLoad %v4float %res
+               OpReturnValue %199
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..69f3fe6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.hlsl
@@ -0,0 +1,119 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_20 : register(b0, space0) {
+  uint4 x_20[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+bool collision_vf2_vf4_(inout float2 pos, inout float4 quad) {
+  const float x_110 = pos.x;
+  const float x_112 = quad.x;
+  if ((x_110 < x_112)) {
+    return false;
+  }
+  const float x_117 = pos.y;
+  const float x_119 = quad.y;
+  if ((x_117 < x_119)) {
+    return false;
+  }
+  const float x_124 = pos.x;
+  const float x_126 = quad.x;
+  const float x_128 = quad.z;
+  if ((x_124 > (x_126 + x_128))) {
+    return false;
+  }
+  const float x_134 = pos.y;
+  const float x_136 = quad.y;
+  const float x_138 = quad.w;
+  if ((x_134 > (x_136 + x_138))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(inout float2 pos_1) {
+  float4 res = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float x_144 = 0.0f;
+  float x_145 = 0.0f;
+  int i = 0;
+  float2 param = float2(0.0f, 0.0f);
+  float4 param_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 indexable[8] = (float4[8])0;
+  float4 indexable_1[8] = (float4[8])0;
+  float4 indexable_2[8] = (float4[8])0;
+  float4 indexable_3[16] = (float4[16])0;
+  const float x_147 = gl_FragCoord.x;
+  if ((x_147 < 0.0f)) {
+    x_144 = -1.0f;
+  } else {
+    const float x_153 = gl_FragCoord.x;
+    if ((x_153 >= 0.0f)) {
+      const float x_159 = gl_FragCoord.x;
+      x_145 = ((x_159 >= 0.0f) ? 0.5f : 1.0f);
+    } else {
+      x_145 = 1.0f;
+    }
+    x_144 = min(x_145, 0.5f);
+  }
+  res = float4(clamp(0.5f, 0.5f, x_144), 0.5f, 1.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 8); i = (i + 1)) {
+      const int x_174 = i;
+      const float2 x_175 = pos_1;
+      param = x_175;
+      const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      indexable = tint_symbol_5;
+      const float4 x_177 = indexable[x_174];
+      param_1 = x_177;
+      const bool x_178 = collision_vf2_vf4_(param, param_1);
+      if (x_178) {
+        const int x_181 = i;
+        const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_1 = tint_symbol_6;
+        const float x_183 = indexable_1[x_181].x;
+        const int x_185 = i;
+        const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_2 = tint_symbol_7;
+        const float x_187 = indexable_2[x_185].y;
+        const int x_190 = i;
+        const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+        indexable_3 = tint_symbol_8;
+        const float4 x_196 = indexable_3[((((int(x_183) * int(x_187)) + (x_190 * 9)) + 11) % 16)];
+        res = x_196;
+      }
+    }
+  }
+  return res;
+}
+
+void main_1() {
+  float2 lin = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  const float4 x_98 = gl_FragCoord;
+  const float2 x_101 = asfloat(x_20[0].xy);
+  lin = (float2(x_98.x, x_98.y) / x_101);
+  lin = floor((lin * 32.0f));
+  param_2 = lin;
+  const float4 x_107 = match_vf2_(param_2);
+  x_GLF_color = x_107;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.msl
new file mode 100644
index 0000000..840a67c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.msl
@@ -0,0 +1,136 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[8];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool collision_vf2_vf4_(thread float2* const pos, thread float4* const quad) {
+  float const x_110 = (*(pos)).x;
+  float const x_112 = (*(quad)).x;
+  if ((x_110 < x_112)) {
+    return false;
+  }
+  float const x_117 = (*(pos)).y;
+  float const x_119 = (*(quad)).y;
+  if ((x_117 < x_119)) {
+    return false;
+  }
+  float const x_124 = (*(pos)).x;
+  float const x_126 = (*(quad)).x;
+  float const x_128 = (*(quad)).z;
+  if ((x_124 > (x_126 + x_128))) {
+    return false;
+  }
+  float const x_134 = (*(pos)).y;
+  float const x_136 = (*(quad)).y;
+  float const x_138 = (*(quad)).w;
+  if ((x_134 > (x_136 + x_138))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(thread float2* const pos_1, thread float4* const tint_symbol_9) {
+  float4 res = 0.0f;
+  float x_144 = 0.0f;
+  float x_145 = 0.0f;
+  int i = 0;
+  float2 param = 0.0f;
+  float4 param_1 = 0.0f;
+  tint_array_wrapper indexable = {};
+  tint_array_wrapper indexable_1 = {};
+  tint_array_wrapper indexable_2 = {};
+  tint_array_wrapper_1 indexable_3 = {};
+  float const x_147 = (*(tint_symbol_9)).x;
+  if ((x_147 < 0.0f)) {
+    x_144 = -1.0f;
+  } else {
+    float const x_153 = (*(tint_symbol_9)).x;
+    if ((x_153 >= 0.0f)) {
+      float const x_159 = (*(tint_symbol_9)).x;
+      x_145 = select(1.0f, 0.5f, (x_159 >= 0.0f));
+    } else {
+      x_145 = 1.0f;
+    }
+    float const x_162 = x_145;
+    x_144 = fmin(x_162, 0.5f);
+  }
+  float const x_164 = x_144;
+  res = float4(clamp(0.5f, 0.5f, x_164), 0.5f, 1.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_171 = i;
+    if ((x_171 < 8)) {
+    } else {
+      break;
+    }
+    int const x_174 = i;
+    float2 const x_175 = *(pos_1);
+    param = x_175;
+    tint_array_wrapper const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+    indexable = tint_symbol_4;
+    float4 const x_177 = indexable.arr[x_174];
+    param_1 = x_177;
+    bool const x_178 = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_178) {
+      int const x_181 = i;
+      tint_array_wrapper const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_1 = tint_symbol_5;
+      float const x_183 = indexable_1.arr[x_181].x;
+      int const x_185 = i;
+      tint_array_wrapper const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_2 = tint_symbol_6;
+      float const x_187 = indexable_2.arr[x_185].y;
+      int const x_190 = i;
+      tint_array_wrapper_1 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      indexable_3 = tint_symbol_7;
+      float4 const x_196 = indexable_3.arr[((((int(x_183) * int(x_187)) + (x_190 * 9)) + 11) % 16)];
+      res = x_196;
+    }
+    {
+      int const x_197 = i;
+      i = (x_197 + 1);
+    }
+  }
+  float4 const x_199 = res;
+  return x_199;
+}
+
+void main_1(constant buf0& x_20, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  float2 lin = 0.0f;
+  float2 param_2 = 0.0f;
+  float4 const x_98 = *(tint_symbol_10);
+  float2 const x_101 = x_20.resolution;
+  lin = (float2(x_98.x, x_98.y) / x_101);
+  float2 const x_103 = lin;
+  lin = floor((x_103 * 32.0f));
+  float2 const x_106 = lin;
+  param_2 = x_106;
+  float4 const x_107 = match_vf2_(&(param_2), tint_symbol_10);
+  *(tint_symbol_11) = x_107;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_20 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_20, &(tint_symbol_12), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..5d8773e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.spvasm
@@ -0,0 +1,336 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 240
+; Schema: 0
+               OpCapability Shader
+        %125 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_20 "x_20"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %collision_vf2_vf4_ "collision_vf2_vf4_"
+               OpName %pos "pos"
+               OpName %quad "quad"
+               OpName %match_vf2_ "match_vf2_"
+               OpName %pos_1 "pos_1"
+               OpName %res "res"
+               OpName %x_144 "x_144"
+               OpName %x_145 "x_145"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %indexable_2 "indexable_2"
+               OpName %indexable_3 "indexable_3"
+               OpName %main_1 "main_1"
+               OpName %lin "lin"
+               OpName %param_2 "param_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_20 NonWritable
+               OpDecorate %x_20 DescriptorSet 0
+               OpDecorate %x_20 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_20 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %15 = OpTypeFunction %bool %_ptr_Function_v2float %_ptr_Function_v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+         %75 = OpTypeFunction %v4float %_ptr_Function_v2float
+         %81 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %86 = OpConstantNull %int
+         %88 = OpConstantNull %v2float
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %94 = OpConstantNull %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+        %101 = OpConstantNull %_arr_v4float_uint_16
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+   %float_n1 = OpConstant %float -1
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+        %145 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+        %146 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+        %147 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+        %149 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+        %152 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+        %154 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+        %156 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+        %158 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+        %159 = OpConstantComposite %_arr_v4float_uint_8 %145 %146 %147 %149 %152 %154 %156 %158
+        %174 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %175 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %176 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %177 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %178 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %179 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %180 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %181 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %182 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %183 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %184 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %185 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %186 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %187 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %188 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %189 = OpConstantComposite %_arr_v4float_uint_16 %174 %175 %176 %177 %178 %179 %180 %181 %174 %182 %183 %184 %185 %186 %187 %188
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %206 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+   %main_out = OpTypeStruct %v4float
+        %227 = OpTypeFunction %void %main_out
+%collision_vf2_vf4_ = OpFunction %bool None %15
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+       %quad = OpFunctionParameter %_ptr_Function_v4float
+         %22 = OpLabel
+         %27 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %28 = OpLoad %float %27
+         %30 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %31 = OpLoad %float %30
+         %32 = OpFOrdLessThan %bool %28 %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+               OpReturnValue %false
+         %33 = OpLabel
+         %38 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %39 = OpLoad %float %38
+         %41 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %42 = OpLoad %float %41
+         %43 = OpFOrdLessThan %bool %39 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpReturnValue %false
+         %44 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %48 = OpLoad %float %47
+         %50 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %51 = OpLoad %float %50
+         %54 = OpAccessChain %_ptr_Function_float %quad %uint_2
+         %55 = OpLoad %float %54
+         %56 = OpFAdd %float %51 %55
+         %57 = OpFOrdGreaterThan %bool %48 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpReturnValue %false
+         %58 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %62 = OpLoad %float %61
+         %64 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %65 = OpLoad %float %64
+         %68 = OpAccessChain %_ptr_Function_float %quad %uint_3
+         %69 = OpLoad %float %68
+         %70 = OpFAdd %float %65 %69
+         %71 = OpFOrdGreaterThan %bool %62 %70
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpReturnValue %false
+         %72 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+ %match_vf2_ = OpFunction %v4float None %75
+      %pos_1 = OpFunctionParameter %_ptr_Function_v2float
+         %78 = OpLabel
+        %res = OpVariable %_ptr_Function_v4float Function %5
+      %x_144 = OpVariable %_ptr_Function_float Function %81
+      %x_145 = OpVariable %_ptr_Function_float Function %81
+          %i = OpVariable %_ptr_Function_int Function %86
+      %param = OpVariable %_ptr_Function_v2float Function %88
+    %param_1 = OpVariable %_ptr_Function_v4float Function %5
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %94
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %94
+%indexable_2 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %94
+%indexable_3 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %101
+        %103 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpFOrdLessThan %bool %104 %float_0
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %109
+        %108 = OpLabel
+               OpStore %x_144 %float_n1
+               OpBranch %107
+        %109 = OpLabel
+        %111 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %112 = OpLoad %float %111
+        %113 = OpFOrdGreaterThanEqual %bool %112 %float_0
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %115 = OpLabel
+        %117 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %118 = OpLoad %float %117
+        %120 = OpFOrdGreaterThanEqual %bool %118 %float_0
+        %119 = OpSelect %float %120 %float_0_5 %float_1
+               OpStore %x_145 %119
+               OpBranch %114
+        %116 = OpLabel
+               OpStore %x_145 %float_1
+               OpBranch %114
+        %114 = OpLabel
+        %123 = OpLoad %float %x_145
+        %124 = OpExtInst %float %125 NMin %123 %float_0_5
+               OpStore %x_144 %124
+               OpBranch %107
+        %107 = OpLabel
+        %126 = OpLoad %float %x_144
+        %127 = OpExtInst %float %125 NClamp %float_0_5 %float_0_5 %126
+        %128 = OpCompositeConstruct %v4float %127 %float_0_5 %float_1 %float_1
+               OpStore %res %128
+               OpStore %i %int_0
+               OpBranch %130
+        %130 = OpLabel
+               OpLoopMerge %131 %132 None
+               OpBranch %133
+        %133 = OpLabel
+        %134 = OpLoad %int %i
+        %136 = OpSLessThan %bool %134 %int_8
+               OpSelectionMerge %137 None
+               OpBranchConditional %136 %138 %139
+        %138 = OpLabel
+               OpBranch %137
+        %139 = OpLabel
+               OpBranch %131
+        %137 = OpLabel
+        %140 = OpLoad %int %i
+        %142 = OpLoad %v2float %pos_1
+               OpStore %param %142
+               OpStore %indexable %159
+        %160 = OpAccessChain %_ptr_Function_v4float %indexable %140
+        %161 = OpLoad %v4float %160
+               OpStore %param_1 %161
+        %162 = OpFunctionCall %bool %collision_vf2_vf4_ %param %param_1
+               OpSelectionMerge %165 None
+               OpBranchConditional %162 %166 %165
+        %166 = OpLabel
+        %167 = OpLoad %int %i
+               OpStore %indexable_1 %159
+        %168 = OpAccessChain %_ptr_Function_float %indexable_1 %167 %uint_0
+        %169 = OpLoad %float %168
+        %170 = OpLoad %int %i
+               OpStore %indexable_2 %159
+        %171 = OpAccessChain %_ptr_Function_float %indexable_2 %170 %uint_1
+        %172 = OpLoad %float %171
+        %173 = OpLoad %int %i
+               OpStore %indexable_3 %189
+        %190 = OpConvertFToS %int %169
+        %191 = OpConvertFToS %int %172
+        %192 = OpIMul %int %190 %191
+        %194 = OpIMul %int %173 %int_9
+        %195 = OpIAdd %int %192 %194
+        %197 = OpIAdd %int %195 %int_11
+        %199 = OpSMod %int %197 %int_16
+        %200 = OpAccessChain %_ptr_Function_v4float %indexable_3 %199
+        %201 = OpLoad %v4float %200
+               OpStore %res %201
+               OpBranch %165
+        %165 = OpLabel
+               OpBranch %132
+        %132 = OpLabel
+        %202 = OpLoad %int %i
+        %204 = OpIAdd %int %202 %int_1
+               OpStore %i %204
+               OpBranch %130
+        %131 = OpLabel
+        %205 = OpLoad %v4float %res
+               OpReturnValue %205
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %206
+        %209 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function %88
+    %param_2 = OpVariable %_ptr_Function_v2float Function %88
+        %212 = OpLoad %v4float %gl_FragCoord
+        %214 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_0
+        %215 = OpLoad %v2float %214
+        %216 = OpCompositeExtract %float %212 0
+        %217 = OpCompositeExtract %float %212 1
+        %218 = OpCompositeConstruct %v2float %216 %217
+        %219 = OpFDiv %v2float %218 %215
+               OpStore %lin %219
+        %220 = OpLoad %v2float %lin
+        %223 = OpVectorTimesScalar %v2float %220 %float_32
+        %221 = OpExtInst %v2float %125 Floor %223
+               OpStore %lin %221
+        %224 = OpLoad %v2float %lin
+               OpStore %param_2 %224
+        %225 = OpFunctionCall %v4float %match_vf2_ %param_2
+               OpStore %x_GLF_color %225
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %227
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %231 = OpLabel
+        %232 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %232
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %206
+        %234 = OpLabel
+        %235 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %235
+        %236 = OpFunctionCall %void %main_1
+        %238 = OpLoad %v4float %x_GLF_color
+        %239 = OpCompositeConstruct %main_out %238
+        %237 = OpFunctionCall %void %tint_symbol_3 %239
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..4b3b3b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.spvasm.expected.wgsl
@@ -0,0 +1,126 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn collision_vf2_vf4_(pos : ptr<function, vec2<f32>>, quad : ptr<function, vec4<f32>>) -> bool {
+  let x_110 : f32 = (*(pos)).x;
+  let x_112 : f32 = (*(quad)).x;
+  if ((x_110 < x_112)) {
+    return false;
+  }
+  let x_117 : f32 = (*(pos)).y;
+  let x_119 : f32 = (*(quad)).y;
+  if ((x_117 < x_119)) {
+    return false;
+  }
+  let x_124 : f32 = (*(pos)).x;
+  let x_126 : f32 = (*(quad)).x;
+  let x_128 : f32 = (*(quad)).z;
+  if ((x_124 > (x_126 + x_128))) {
+    return false;
+  }
+  let x_134 : f32 = (*(pos)).y;
+  let x_136 : f32 = (*(quad)).y;
+  let x_138 : f32 = (*(quad)).w;
+  if ((x_134 > (x_136 + x_138))) {
+    return false;
+  }
+  return true;
+}
+
+fn match_vf2_(pos_1 : ptr<function, vec2<f32>>) -> vec4<f32> {
+  var res : vec4<f32>;
+  var x_144 : f32;
+  var x_145 : f32;
+  var i : i32;
+  var param : vec2<f32>;
+  var param_1 : vec4<f32>;
+  var indexable : array<vec4<f32>, 8>;
+  var indexable_1 : array<vec4<f32>, 8>;
+  var indexable_2 : array<vec4<f32>, 8>;
+  var indexable_3 : array<vec4<f32>, 16>;
+  let x_147 : f32 = gl_FragCoord.x;
+  if ((x_147 < 0.0)) {
+    x_144 = -1.0;
+  } else {
+    let x_153 : f32 = gl_FragCoord.x;
+    if ((x_153 >= 0.0)) {
+      let x_159 : f32 = gl_FragCoord.x;
+      x_145 = select(1.0, 0.5, (x_159 >= 0.0));
+    } else {
+      x_145 = 1.0;
+    }
+    let x_162 : f32 = x_145;
+    x_144 = min(x_162, 0.5);
+  }
+  let x_164 : f32 = x_144;
+  res = vec4<f32>(clamp(0.5, 0.5, x_164), 0.5, 1.0, 1.0);
+  i = 0;
+  loop {
+    let x_171 : i32 = i;
+    if ((x_171 < 8)) {
+    } else {
+      break;
+    }
+    let x_174 : i32 = i;
+    let x_175 : vec2<f32> = *(pos_1);
+    param = x_175;
+    indexable = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    let x_177 : vec4<f32> = indexable[x_174];
+    param_1 = x_177;
+    let x_178 : bool = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_178) {
+      let x_181 : i32 = i;
+      indexable_1 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_183 : f32 = indexable_1[x_181].x;
+      let x_185 : i32 = i;
+      indexable_2 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_187 : f32 = indexable_2[x_185].y;
+      let x_190 : i32 = i;
+      indexable_3 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      let x_196 : vec4<f32> = indexable_3[((((i32(x_183) * i32(x_187)) + (x_190 * 9)) + 11) % 16)];
+      res = x_196;
+    }
+
+    continuing {
+      let x_197 : i32 = i;
+      i = (x_197 + 1);
+    }
+  }
+  let x_199 : vec4<f32> = res;
+  return x_199;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var param_2 : vec2<f32>;
+  let x_98 : vec4<f32> = gl_FragCoord;
+  let x_101 : vec2<f32> = x_20.resolution;
+  lin = (vec2<f32>(x_98.x, x_98.y) / x_101);
+  let x_103 : vec2<f32> = lin;
+  lin = floor((x_103 * 32.0));
+  let x_106 : vec2<f32> = lin;
+  param_2 = x_106;
+  let x_107 : vec4<f32> = match_vf2_(&(param_2));
+  x_GLF_color = x_107;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
new file mode 100644
index 0000000..4b3b3b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
@@ -0,0 +1,126 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn collision_vf2_vf4_(pos : ptr<function, vec2<f32>>, quad : ptr<function, vec4<f32>>) -> bool {
+  let x_110 : f32 = (*(pos)).x;
+  let x_112 : f32 = (*(quad)).x;
+  if ((x_110 < x_112)) {
+    return false;
+  }
+  let x_117 : f32 = (*(pos)).y;
+  let x_119 : f32 = (*(quad)).y;
+  if ((x_117 < x_119)) {
+    return false;
+  }
+  let x_124 : f32 = (*(pos)).x;
+  let x_126 : f32 = (*(quad)).x;
+  let x_128 : f32 = (*(quad)).z;
+  if ((x_124 > (x_126 + x_128))) {
+    return false;
+  }
+  let x_134 : f32 = (*(pos)).y;
+  let x_136 : f32 = (*(quad)).y;
+  let x_138 : f32 = (*(quad)).w;
+  if ((x_134 > (x_136 + x_138))) {
+    return false;
+  }
+  return true;
+}
+
+fn match_vf2_(pos_1 : ptr<function, vec2<f32>>) -> vec4<f32> {
+  var res : vec4<f32>;
+  var x_144 : f32;
+  var x_145 : f32;
+  var i : i32;
+  var param : vec2<f32>;
+  var param_1 : vec4<f32>;
+  var indexable : array<vec4<f32>, 8>;
+  var indexable_1 : array<vec4<f32>, 8>;
+  var indexable_2 : array<vec4<f32>, 8>;
+  var indexable_3 : array<vec4<f32>, 16>;
+  let x_147 : f32 = gl_FragCoord.x;
+  if ((x_147 < 0.0)) {
+    x_144 = -1.0;
+  } else {
+    let x_153 : f32 = gl_FragCoord.x;
+    if ((x_153 >= 0.0)) {
+      let x_159 : f32 = gl_FragCoord.x;
+      x_145 = select(1.0, 0.5, (x_159 >= 0.0));
+    } else {
+      x_145 = 1.0;
+    }
+    let x_162 : f32 = x_145;
+    x_144 = min(x_162, 0.5);
+  }
+  let x_164 : f32 = x_144;
+  res = vec4<f32>(clamp(0.5, 0.5, x_164), 0.5, 1.0, 1.0);
+  i = 0;
+  loop {
+    let x_171 : i32 = i;
+    if ((x_171 < 8)) {
+    } else {
+      break;
+    }
+    let x_174 : i32 = i;
+    let x_175 : vec2<f32> = *(pos_1);
+    param = x_175;
+    indexable = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    let x_177 : vec4<f32> = indexable[x_174];
+    param_1 = x_177;
+    let x_178 : bool = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_178) {
+      let x_181 : i32 = i;
+      indexable_1 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_183 : f32 = indexable_1[x_181].x;
+      let x_185 : i32 = i;
+      indexable_2 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_187 : f32 = indexable_2[x_185].y;
+      let x_190 : i32 = i;
+      indexable_3 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      let x_196 : vec4<f32> = indexable_3[((((i32(x_183) * i32(x_187)) + (x_190 * 9)) + 11) % 16)];
+      res = x_196;
+    }
+
+    continuing {
+      let x_197 : i32 = i;
+      i = (x_197 + 1);
+    }
+  }
+  let x_199 : vec4<f32> = res;
+  return x_199;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var param_2 : vec2<f32>;
+  let x_98 : vec4<f32> = gl_FragCoord;
+  let x_101 : vec2<f32> = x_20.resolution;
+  lin = (vec2<f32>(x_98.x, x_98.y) / x_101);
+  let x_103 : vec2<f32> = lin;
+  lin = floor((x_103 * 32.0));
+  let x_106 : vec2<f32> = lin;
+  param_2 = x_106;
+  let x_107 : vec4<f32> = match_vf2_(&(param_2));
+  x_GLF_color = x_107;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..69f3fe6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.hlsl
@@ -0,0 +1,119 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_20 : register(b0, space0) {
+  uint4 x_20[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+bool collision_vf2_vf4_(inout float2 pos, inout float4 quad) {
+  const float x_110 = pos.x;
+  const float x_112 = quad.x;
+  if ((x_110 < x_112)) {
+    return false;
+  }
+  const float x_117 = pos.y;
+  const float x_119 = quad.y;
+  if ((x_117 < x_119)) {
+    return false;
+  }
+  const float x_124 = pos.x;
+  const float x_126 = quad.x;
+  const float x_128 = quad.z;
+  if ((x_124 > (x_126 + x_128))) {
+    return false;
+  }
+  const float x_134 = pos.y;
+  const float x_136 = quad.y;
+  const float x_138 = quad.w;
+  if ((x_134 > (x_136 + x_138))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(inout float2 pos_1) {
+  float4 res = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float x_144 = 0.0f;
+  float x_145 = 0.0f;
+  int i = 0;
+  float2 param = float2(0.0f, 0.0f);
+  float4 param_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 indexable[8] = (float4[8])0;
+  float4 indexable_1[8] = (float4[8])0;
+  float4 indexable_2[8] = (float4[8])0;
+  float4 indexable_3[16] = (float4[16])0;
+  const float x_147 = gl_FragCoord.x;
+  if ((x_147 < 0.0f)) {
+    x_144 = -1.0f;
+  } else {
+    const float x_153 = gl_FragCoord.x;
+    if ((x_153 >= 0.0f)) {
+      const float x_159 = gl_FragCoord.x;
+      x_145 = ((x_159 >= 0.0f) ? 0.5f : 1.0f);
+    } else {
+      x_145 = 1.0f;
+    }
+    x_144 = min(x_145, 0.5f);
+  }
+  res = float4(clamp(0.5f, 0.5f, x_144), 0.5f, 1.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 8); i = (i + 1)) {
+      const int x_174 = i;
+      const float2 x_175 = pos_1;
+      param = x_175;
+      const float4 tint_symbol_5[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+      indexable = tint_symbol_5;
+      const float4 x_177 = indexable[x_174];
+      param_1 = x_177;
+      const bool x_178 = collision_vf2_vf4_(param, param_1);
+      if (x_178) {
+        const int x_181 = i;
+        const float4 tint_symbol_6[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_1 = tint_symbol_6;
+        const float x_183 = indexable_1[x_181].x;
+        const int x_185 = i;
+        const float4 tint_symbol_7[8] = {float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)};
+        indexable_2 = tint_symbol_7;
+        const float x_187 = indexable_2[x_185].y;
+        const int x_190 = i;
+        const float4 tint_symbol_8[16] = {float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+        indexable_3 = tint_symbol_8;
+        const float4 x_196 = indexable_3[((((int(x_183) * int(x_187)) + (x_190 * 9)) + 11) % 16)];
+        res = x_196;
+      }
+    }
+  }
+  return res;
+}
+
+void main_1() {
+  float2 lin = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  const float4 x_98 = gl_FragCoord;
+  const float2 x_101 = asfloat(x_20[0].xy);
+  lin = (float2(x_98.x, x_98.y) / x_101);
+  lin = floor((lin * 32.0f));
+  param_2 = lin;
+  const float4 x_107 = match_vf2_(param_2);
+  x_GLF_color = x_107;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_9 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_9;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.msl
new file mode 100644
index 0000000..840a67c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.msl
@@ -0,0 +1,136 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct tint_array_wrapper {
+  float4 arr[8];
+};
+struct tint_array_wrapper_1 {
+  float4 arr[16];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+bool collision_vf2_vf4_(thread float2* const pos, thread float4* const quad) {
+  float const x_110 = (*(pos)).x;
+  float const x_112 = (*(quad)).x;
+  if ((x_110 < x_112)) {
+    return false;
+  }
+  float const x_117 = (*(pos)).y;
+  float const x_119 = (*(quad)).y;
+  if ((x_117 < x_119)) {
+    return false;
+  }
+  float const x_124 = (*(pos)).x;
+  float const x_126 = (*(quad)).x;
+  float const x_128 = (*(quad)).z;
+  if ((x_124 > (x_126 + x_128))) {
+    return false;
+  }
+  float const x_134 = (*(pos)).y;
+  float const x_136 = (*(quad)).y;
+  float const x_138 = (*(quad)).w;
+  if ((x_134 > (x_136 + x_138))) {
+    return false;
+  }
+  return true;
+}
+
+float4 match_vf2_(thread float2* const pos_1, thread float4* const tint_symbol_9) {
+  float4 res = 0.0f;
+  float x_144 = 0.0f;
+  float x_145 = 0.0f;
+  int i = 0;
+  float2 param = 0.0f;
+  float4 param_1 = 0.0f;
+  tint_array_wrapper indexable = {};
+  tint_array_wrapper indexable_1 = {};
+  tint_array_wrapper indexable_2 = {};
+  tint_array_wrapper_1 indexable_3 = {};
+  float const x_147 = (*(tint_symbol_9)).x;
+  if ((x_147 < 0.0f)) {
+    x_144 = -1.0f;
+  } else {
+    float const x_153 = (*(tint_symbol_9)).x;
+    if ((x_153 >= 0.0f)) {
+      float const x_159 = (*(tint_symbol_9)).x;
+      x_145 = select(1.0f, 0.5f, (x_159 >= 0.0f));
+    } else {
+      x_145 = 1.0f;
+    }
+    float const x_162 = x_145;
+    x_144 = fmin(x_162, 0.5f);
+  }
+  float const x_164 = x_144;
+  res = float4(clamp(0.5f, 0.5f, x_164), 0.5f, 1.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_171 = i;
+    if ((x_171 < 8)) {
+    } else {
+      break;
+    }
+    int const x_174 = i;
+    float2 const x_175 = *(pos_1);
+    param = x_175;
+    tint_array_wrapper const tint_symbol_4 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+    indexable = tint_symbol_4;
+    float4 const x_177 = indexable.arr[x_174];
+    param_1 = x_177;
+    bool const x_178 = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_178) {
+      int const x_181 = i;
+      tint_array_wrapper const tint_symbol_5 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_1 = tint_symbol_5;
+      float const x_183 = indexable_1.arr[x_181].x;
+      int const x_185 = i;
+      tint_array_wrapper const tint_symbol_6 = {.arr={float4(4.0f, 4.0f, 20.0f, 4.0f), float4(4.0f, 4.0f, 4.0f, 20.0f), float4(4.0f, 20.0f, 20.0f, 4.0f), float4(20.0f, 4.0f, 4.0f, 8.0f), float4(8.0f, 6.0f, 4.0f, 2.0f), float4(2.0f, 12.0f, 2.0f, 4.0f), float4(16.0f, 2.0f, 4.0f, 4.0f), float4(12.0f, 22.0f, 4.0f, 4.0f)}};
+      indexable_2 = tint_symbol_6;
+      float const x_187 = indexable_2.arr[x_185].y;
+      int const x_190 = i;
+      tint_array_wrapper_1 const tint_symbol_7 = {.arr={float4(0.0f, 0.0f, 0.0f, 1.0f), float4(0.5f, 0.0f, 0.0f, 1.0f), float4(0.0f, 0.5f, 0.0f, 1.0f), float4(0.5f, 0.5f, 0.0f, 1.0f), float4(0.0f, 0.0f, 0.5f, 1.0f), float4(0.5f, 0.0f, 0.5f, 1.0f), float4(0.0f, 0.5f, 0.5f, 1.0f), float4(0.5f, 0.5f, 0.5f, 1.0f), float4(0.0f, 0.0f, 0.0f, 1.0f), float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(1.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 0.0f, 1.0f, 1.0f), float4(0.0f, 1.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
+      indexable_3 = tint_symbol_7;
+      float4 const x_196 = indexable_3.arr[((((int(x_183) * int(x_187)) + (x_190 * 9)) + 11) % 16)];
+      res = x_196;
+    }
+    {
+      int const x_197 = i;
+      i = (x_197 + 1);
+    }
+  }
+  float4 const x_199 = res;
+  return x_199;
+}
+
+void main_1(constant buf0& x_20, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  float2 lin = 0.0f;
+  float2 param_2 = 0.0f;
+  float4 const x_98 = *(tint_symbol_10);
+  float2 const x_101 = x_20.resolution;
+  lin = (float2(x_98.x, x_98.y) / x_101);
+  float2 const x_103 = lin;
+  lin = floor((x_103 * 32.0f));
+  float2 const x_106 = lin;
+  param_2 = x_106;
+  float4 const x_107 = match_vf2_(&(param_2), tint_symbol_10);
+  *(tint_symbol_11) = x_107;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_20 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread float4 tint_symbol_13 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_20, &(tint_symbol_12), &(tint_symbol_13));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_13};
+  tint_symbol_2 const tint_symbol_8 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_8;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..5d8773e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.spvasm
@@ -0,0 +1,336 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 240
+; Schema: 0
+               OpCapability Shader
+        %125 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_20 "x_20"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %collision_vf2_vf4_ "collision_vf2_vf4_"
+               OpName %pos "pos"
+               OpName %quad "quad"
+               OpName %match_vf2_ "match_vf2_"
+               OpName %pos_1 "pos_1"
+               OpName %res "res"
+               OpName %x_144 "x_144"
+               OpName %x_145 "x_145"
+               OpName %i "i"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %indexable "indexable"
+               OpName %indexable_1 "indexable_1"
+               OpName %indexable_2 "indexable_2"
+               OpName %indexable_3 "indexable_3"
+               OpName %main_1 "main_1"
+               OpName %lin "lin"
+               OpName %param_2 "param_2"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_20 NonWritable
+               OpDecorate %x_20 DescriptorSet 0
+               OpDecorate %x_20 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_v4float_uint_8 ArrayStride 16
+               OpDecorate %_arr_v4float_uint_16 ArrayStride 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_20 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %bool = OpTypeBool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %15 = OpTypeFunction %bool %_ptr_Function_v2float %_ptr_Function_v4float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+     %uint_1 = OpConstant %uint 1
+     %uint_2 = OpConstant %uint 2
+     %uint_3 = OpConstant %uint 3
+       %true = OpConstantTrue %bool
+         %75 = OpTypeFunction %v4float %_ptr_Function_v2float
+         %81 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %86 = OpConstantNull %int
+         %88 = OpConstantNull %v2float
+     %uint_8 = OpConstant %uint 8
+%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
+%_ptr_Function__arr_v4float_uint_8 = OpTypePointer Function %_arr_v4float_uint_8
+         %94 = OpConstantNull %_arr_v4float_uint_8
+    %uint_16 = OpConstant %uint 16
+%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
+%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
+        %101 = OpConstantNull %_arr_v4float_uint_16
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_0 = OpConstant %float 0
+   %float_n1 = OpConstant %float -1
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+      %int_0 = OpConstant %int 0
+      %int_8 = OpConstant %int 8
+    %float_4 = OpConstant %float 4
+   %float_20 = OpConstant %float 20
+        %145 = OpConstantComposite %v4float %float_4 %float_4 %float_20 %float_4
+        %146 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_20
+        %147 = OpConstantComposite %v4float %float_4 %float_20 %float_20 %float_4
+    %float_8 = OpConstant %float 8
+        %149 = OpConstantComposite %v4float %float_20 %float_4 %float_4 %float_8
+    %float_6 = OpConstant %float 6
+    %float_2 = OpConstant %float 2
+        %152 = OpConstantComposite %v4float %float_8 %float_6 %float_4 %float_2
+   %float_12 = OpConstant %float 12
+        %154 = OpConstantComposite %v4float %float_2 %float_12 %float_2 %float_4
+   %float_16 = OpConstant %float 16
+        %156 = OpConstantComposite %v4float %float_16 %float_2 %float_4 %float_4
+   %float_22 = OpConstant %float 22
+        %158 = OpConstantComposite %v4float %float_12 %float_22 %float_4 %float_4
+        %159 = OpConstantComposite %_arr_v4float_uint_8 %145 %146 %147 %149 %152 %154 %156 %158
+        %174 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+        %175 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
+        %176 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
+        %177 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
+        %178 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
+        %179 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
+        %180 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
+        %181 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
+        %182 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %183 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
+        %184 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
+        %185 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
+        %186 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
+        %187 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
+        %188 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %189 = OpConstantComposite %_arr_v4float_uint_16 %174 %175 %176 %177 %178 %179 %180 %181 %174 %182 %183 %184 %185 %186 %187 %188
+      %int_9 = OpConstant %int 9
+     %int_11 = OpConstant %int 11
+     %int_16 = OpConstant %int 16
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %206 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+   %float_32 = OpConstant %float 32
+   %main_out = OpTypeStruct %v4float
+        %227 = OpTypeFunction %void %main_out
+%collision_vf2_vf4_ = OpFunction %bool None %15
+        %pos = OpFunctionParameter %_ptr_Function_v2float
+       %quad = OpFunctionParameter %_ptr_Function_v4float
+         %22 = OpLabel
+         %27 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %28 = OpLoad %float %27
+         %30 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %31 = OpLoad %float %30
+         %32 = OpFOrdLessThan %bool %28 %31
+               OpSelectionMerge %33 None
+               OpBranchConditional %32 %34 %33
+         %34 = OpLabel
+               OpReturnValue %false
+         %33 = OpLabel
+         %38 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %39 = OpLoad %float %38
+         %41 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %42 = OpLoad %float %41
+         %43 = OpFOrdLessThan %bool %39 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpReturnValue %false
+         %44 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %pos %uint_0
+         %48 = OpLoad %float %47
+         %50 = OpAccessChain %_ptr_Function_float %quad %uint_0
+         %51 = OpLoad %float %50
+         %54 = OpAccessChain %_ptr_Function_float %quad %uint_2
+         %55 = OpLoad %float %54
+         %56 = OpFAdd %float %51 %55
+         %57 = OpFOrdGreaterThan %bool %48 %56
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpReturnValue %false
+         %58 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_float %pos %uint_1
+         %62 = OpLoad %float %61
+         %64 = OpAccessChain %_ptr_Function_float %quad %uint_1
+         %65 = OpLoad %float %64
+         %68 = OpAccessChain %_ptr_Function_float %quad %uint_3
+         %69 = OpLoad %float %68
+         %70 = OpFAdd %float %65 %69
+         %71 = OpFOrdGreaterThan %bool %62 %70
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %72
+         %73 = OpLabel
+               OpReturnValue %false
+         %72 = OpLabel
+               OpReturnValue %true
+               OpFunctionEnd
+ %match_vf2_ = OpFunction %v4float None %75
+      %pos_1 = OpFunctionParameter %_ptr_Function_v2float
+         %78 = OpLabel
+        %res = OpVariable %_ptr_Function_v4float Function %5
+      %x_144 = OpVariable %_ptr_Function_float Function %81
+      %x_145 = OpVariable %_ptr_Function_float Function %81
+          %i = OpVariable %_ptr_Function_int Function %86
+      %param = OpVariable %_ptr_Function_v2float Function %88
+    %param_1 = OpVariable %_ptr_Function_v4float Function %5
+  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %94
+%indexable_1 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %94
+%indexable_2 = OpVariable %_ptr_Function__arr_v4float_uint_8 Function %94
+%indexable_3 = OpVariable %_ptr_Function__arr_v4float_uint_16 Function %101
+        %103 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpFOrdLessThan %bool %104 %float_0
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %109
+        %108 = OpLabel
+               OpStore %x_144 %float_n1
+               OpBranch %107
+        %109 = OpLabel
+        %111 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %112 = OpLoad %float %111
+        %113 = OpFOrdGreaterThanEqual %bool %112 %float_0
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %115 = OpLabel
+        %117 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+        %118 = OpLoad %float %117
+        %120 = OpFOrdGreaterThanEqual %bool %118 %float_0
+        %119 = OpSelect %float %120 %float_0_5 %float_1
+               OpStore %x_145 %119
+               OpBranch %114
+        %116 = OpLabel
+               OpStore %x_145 %float_1
+               OpBranch %114
+        %114 = OpLabel
+        %123 = OpLoad %float %x_145
+        %124 = OpExtInst %float %125 NMin %123 %float_0_5
+               OpStore %x_144 %124
+               OpBranch %107
+        %107 = OpLabel
+        %126 = OpLoad %float %x_144
+        %127 = OpExtInst %float %125 NClamp %float_0_5 %float_0_5 %126
+        %128 = OpCompositeConstruct %v4float %127 %float_0_5 %float_1 %float_1
+               OpStore %res %128
+               OpStore %i %int_0
+               OpBranch %130
+        %130 = OpLabel
+               OpLoopMerge %131 %132 None
+               OpBranch %133
+        %133 = OpLabel
+        %134 = OpLoad %int %i
+        %136 = OpSLessThan %bool %134 %int_8
+               OpSelectionMerge %137 None
+               OpBranchConditional %136 %138 %139
+        %138 = OpLabel
+               OpBranch %137
+        %139 = OpLabel
+               OpBranch %131
+        %137 = OpLabel
+        %140 = OpLoad %int %i
+        %142 = OpLoad %v2float %pos_1
+               OpStore %param %142
+               OpStore %indexable %159
+        %160 = OpAccessChain %_ptr_Function_v4float %indexable %140
+        %161 = OpLoad %v4float %160
+               OpStore %param_1 %161
+        %162 = OpFunctionCall %bool %collision_vf2_vf4_ %param %param_1
+               OpSelectionMerge %165 None
+               OpBranchConditional %162 %166 %165
+        %166 = OpLabel
+        %167 = OpLoad %int %i
+               OpStore %indexable_1 %159
+        %168 = OpAccessChain %_ptr_Function_float %indexable_1 %167 %uint_0
+        %169 = OpLoad %float %168
+        %170 = OpLoad %int %i
+               OpStore %indexable_2 %159
+        %171 = OpAccessChain %_ptr_Function_float %indexable_2 %170 %uint_1
+        %172 = OpLoad %float %171
+        %173 = OpLoad %int %i
+               OpStore %indexable_3 %189
+        %190 = OpConvertFToS %int %169
+        %191 = OpConvertFToS %int %172
+        %192 = OpIMul %int %190 %191
+        %194 = OpIMul %int %173 %int_9
+        %195 = OpIAdd %int %192 %194
+        %197 = OpIAdd %int %195 %int_11
+        %199 = OpSMod %int %197 %int_16
+        %200 = OpAccessChain %_ptr_Function_v4float %indexable_3 %199
+        %201 = OpLoad %v4float %200
+               OpStore %res %201
+               OpBranch %165
+        %165 = OpLabel
+               OpBranch %132
+        %132 = OpLabel
+        %202 = OpLoad %int %i
+        %204 = OpIAdd %int %202 %int_1
+               OpStore %i %204
+               OpBranch %130
+        %131 = OpLabel
+        %205 = OpLoad %v4float %res
+               OpReturnValue %205
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %206
+        %209 = OpLabel
+        %lin = OpVariable %_ptr_Function_v2float Function %88
+    %param_2 = OpVariable %_ptr_Function_v2float Function %88
+        %212 = OpLoad %v4float %gl_FragCoord
+        %214 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_0
+        %215 = OpLoad %v2float %214
+        %216 = OpCompositeExtract %float %212 0
+        %217 = OpCompositeExtract %float %212 1
+        %218 = OpCompositeConstruct %v2float %216 %217
+        %219 = OpFDiv %v2float %218 %215
+               OpStore %lin %219
+        %220 = OpLoad %v2float %lin
+        %223 = OpVectorTimesScalar %v2float %220 %float_32
+        %221 = OpExtInst %v2float %125 Floor %223
+               OpStore %lin %221
+        %224 = OpLoad %v2float %lin
+               OpStore %param_2 %224
+        %225 = OpFunctionCall %v4float %match_vf2_ %param_2
+               OpStore %x_GLF_color %225
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %227
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %231 = OpLabel
+        %232 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %232
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %206
+        %234 = OpLabel
+        %235 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %235
+        %236 = OpFunctionCall %void %main_1
+        %238 = OpLoad %v4float %x_GLF_color
+        %239 = OpCompositeConstruct %main_out %238
+        %237 = OpFunctionCall %void %tint_symbol_3 %239
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..4b3b3b5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl.expected.wgsl
@@ -0,0 +1,126 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn collision_vf2_vf4_(pos : ptr<function, vec2<f32>>, quad : ptr<function, vec4<f32>>) -> bool {
+  let x_110 : f32 = (*(pos)).x;
+  let x_112 : f32 = (*(quad)).x;
+  if ((x_110 < x_112)) {
+    return false;
+  }
+  let x_117 : f32 = (*(pos)).y;
+  let x_119 : f32 = (*(quad)).y;
+  if ((x_117 < x_119)) {
+    return false;
+  }
+  let x_124 : f32 = (*(pos)).x;
+  let x_126 : f32 = (*(quad)).x;
+  let x_128 : f32 = (*(quad)).z;
+  if ((x_124 > (x_126 + x_128))) {
+    return false;
+  }
+  let x_134 : f32 = (*(pos)).y;
+  let x_136 : f32 = (*(quad)).y;
+  let x_138 : f32 = (*(quad)).w;
+  if ((x_134 > (x_136 + x_138))) {
+    return false;
+  }
+  return true;
+}
+
+fn match_vf2_(pos_1 : ptr<function, vec2<f32>>) -> vec4<f32> {
+  var res : vec4<f32>;
+  var x_144 : f32;
+  var x_145 : f32;
+  var i : i32;
+  var param : vec2<f32>;
+  var param_1 : vec4<f32>;
+  var indexable : array<vec4<f32>, 8>;
+  var indexable_1 : array<vec4<f32>, 8>;
+  var indexable_2 : array<vec4<f32>, 8>;
+  var indexable_3 : array<vec4<f32>, 16>;
+  let x_147 : f32 = gl_FragCoord.x;
+  if ((x_147 < 0.0)) {
+    x_144 = -1.0;
+  } else {
+    let x_153 : f32 = gl_FragCoord.x;
+    if ((x_153 >= 0.0)) {
+      let x_159 : f32 = gl_FragCoord.x;
+      x_145 = select(1.0, 0.5, (x_159 >= 0.0));
+    } else {
+      x_145 = 1.0;
+    }
+    let x_162 : f32 = x_145;
+    x_144 = min(x_162, 0.5);
+  }
+  let x_164 : f32 = x_144;
+  res = vec4<f32>(clamp(0.5, 0.5, x_164), 0.5, 1.0, 1.0);
+  i = 0;
+  loop {
+    let x_171 : i32 = i;
+    if ((x_171 < 8)) {
+    } else {
+      break;
+    }
+    let x_174 : i32 = i;
+    let x_175 : vec2<f32> = *(pos_1);
+    param = x_175;
+    indexable = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+    let x_177 : vec4<f32> = indexable[x_174];
+    param_1 = x_177;
+    let x_178 : bool = collision_vf2_vf4_(&(param), &(param_1));
+    if (x_178) {
+      let x_181 : i32 = i;
+      indexable_1 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_183 : f32 = indexable_1[x_181].x;
+      let x_185 : i32 = i;
+      indexable_2 = array<vec4<f32>, 8>(vec4<f32>(4.0, 4.0, 20.0, 4.0), vec4<f32>(4.0, 4.0, 4.0, 20.0), vec4<f32>(4.0, 20.0, 20.0, 4.0), vec4<f32>(20.0, 4.0, 4.0, 8.0), vec4<f32>(8.0, 6.0, 4.0, 2.0), vec4<f32>(2.0, 12.0, 2.0, 4.0), vec4<f32>(16.0, 2.0, 4.0, 4.0), vec4<f32>(12.0, 22.0, 4.0, 4.0));
+      let x_187 : f32 = indexable_2[x_185].y;
+      let x_190 : i32 = i;
+      indexable_3 = array<vec4<f32>, 16>(vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(0.5, 0.0, 0.0, 1.0), vec4<f32>(0.0, 0.5, 0.0, 1.0), vec4<f32>(0.5, 0.5, 0.0, 1.0), vec4<f32>(0.0, 0.0, 0.5, 1.0), vec4<f32>(0.5, 0.0, 0.5, 1.0), vec4<f32>(0.0, 0.5, 0.5, 1.0), vec4<f32>(0.5, 0.5, 0.5, 1.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec4<f32>(1.0, 0.0, 0.0, 1.0), vec4<f32>(0.0, 1.0, 0.0, 1.0), vec4<f32>(1.0, 1.0, 0.0, 1.0), vec4<f32>(0.0, 0.0, 1.0, 1.0), vec4<f32>(1.0, 0.0, 1.0, 1.0), vec4<f32>(0.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
+      let x_196 : vec4<f32> = indexable_3[((((i32(x_183) * i32(x_187)) + (x_190 * 9)) + 11) % 16)];
+      res = x_196;
+    }
+
+    continuing {
+      let x_197 : i32 = i;
+      i = (x_197 + 1);
+    }
+  }
+  let x_199 : vec4<f32> = res;
+  return x_199;
+}
+
+fn main_1() {
+  var lin : vec2<f32>;
+  var param_2 : vec2<f32>;
+  let x_98 : vec4<f32> = gl_FragCoord;
+  let x_101 : vec2<f32> = x_20.resolution;
+  lin = (vec2<f32>(x_98.x, x_98.y) / x_101);
+  let x_103 : vec2<f32> = lin;
+  lin = floor((x_103 * 32.0));
+  let x_106 : vec2<f32> = lin;
+  param_2 = x_106;
+  let x_107 : vec4<f32> = match_vf2_(&(param_2));
+  x_GLF_color = x_107;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm
new file mode 100644
index 0000000..b885c18
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm
@@ -0,0 +1,259 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %cross2d_vf2_vf2_ "cross2d(vf2;vf2;"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle(vf2;vf2;vf2;vf2;"
+               OpName %p "p"
+               OpName %a_0 "a"
+               OpName %b_0 "b"
+               OpName %c "c"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %pbc "pbc"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %pca "pca"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %pos "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %34 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+        %int = OpTypeInt 32 1
+         %36 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+         %51 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+         %54 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+         %57 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %60 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %61 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+%_ptr_Function_int = OpTypePointer Function %int
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %30
+         %66 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function
+    %param_5 = OpVariable %_ptr_Function_v2float Function
+    %param_6 = OpVariable %_ptr_Function_v2float Function
+    %param_7 = OpVariable %_ptr_Function_v2float Function
+    %param_8 = OpVariable %_ptr_Function_v2float Function
+         %67 = OpLoad %v4float %gl_FragCoord
+         %68 = OpVectorShuffle %v2float %67 %67 0 1
+         %69 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %70 = OpLoad %v2float %69
+         %71 = OpFDiv %v2float %68 %70
+               OpStore %pos %71
+               OpStore %param_5 %71
+               OpStore %param_6 %51
+               OpStore %param_7 %54
+               OpStore %param_8 %57
+         %72 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_5 %param_6 %param_7 %param_8
+         %73 = OpIEqual %bool %72 %int_1
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+               OpStore %_GLF_color %60
+               OpBranch %74
+         %76 = OpLabel
+               OpStore %_GLF_color %61
+               OpBranch %74
+         %74 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%cross2d_vf2_vf2_ = OpFunction %float None %34
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %77 = OpLabel
+         %78 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %81 = OpLoad %float %80
+         %82 = OpFMul %float %79 %81
+         %83 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFMul %float %84 %86
+         %88 = OpFSub %float %82 %87
+               OpReturnValue %88
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %36
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_0 = OpFunctionParameter %_ptr_Function_v2float
+        %b_0 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %89 = OpLabel
+         %90 = OpVariable %_ptr_Function_bool Function %false
+         %91 = OpVariable %_ptr_Function_int Function
+        %pab = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v2float Function
+        %pbc = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+    %param_2 = OpVariable %_ptr_Function_v2float Function
+        %pca = OpVariable %_ptr_Function_float Function
+    %param_3 = OpVariable %_ptr_Function_v2float Function
+    %param_4 = OpVariable %_ptr_Function_v2float Function
+               OpSelectionMerge %92 None
+               OpSwitch %uint_0 %93
+         %93 = OpLabel
+         %94 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %95 = OpLoad %float %94
+         %96 = OpAccessChain %_ptr_Function_float %a_0 %uint_0
+         %97 = OpLoad %float %96
+         %98 = OpFSub %float %95 %97
+         %99 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %100 = OpLoad %float %99
+        %101 = OpAccessChain %_ptr_Function_float %a_0 %uint_1
+        %102 = OpLoad %float %101
+        %103 = OpFSub %float %100 %102
+        %104 = OpCompositeConstruct %v2float %98 %103
+        %105 = OpAccessChain %_ptr_Function_float %b_0 %uint_0
+        %106 = OpLoad %float %105
+        %107 = OpLoad %float %96
+        %108 = OpFSub %float %106 %107
+        %109 = OpAccessChain %_ptr_Function_float %b_0 %uint_1
+        %110 = OpLoad %float %109
+        %111 = OpLoad %float %101
+        %112 = OpFSub %float %110 %111
+        %113 = OpCompositeConstruct %v2float %108 %112
+               OpStore %param %104
+               OpStore %param_0 %113
+        %114 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_0
+               OpStore %pab %114
+        %115 = OpLoad %float %94
+        %116 = OpLoad %float %105
+        %117 = OpFSub %float %115 %116
+        %118 = OpLoad %float %99
+        %119 = OpLoad %float %109
+        %120 = OpFSub %float %118 %119
+        %121 = OpCompositeConstruct %v2float %117 %120
+        %122 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %123 = OpLoad %float %122
+        %124 = OpLoad %float %105
+        %125 = OpFSub %float %123 %124
+        %126 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %127 = OpLoad %float %126
+        %128 = OpLoad %float %109
+        %129 = OpFSub %float %127 %128
+        %130 = OpCompositeConstruct %v2float %125 %129
+               OpStore %param_1 %121
+               OpStore %param_2 %130
+        %131 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_1 %param_2
+               OpStore %pbc %131
+        %132 = OpFOrdLessThan %bool %114 %float_0
+        %133 = OpFOrdLessThan %bool %131 %float_0
+        %134 = OpLogicalAnd %bool %132 %133
+        %135 = OpLogicalNot %bool %134
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %136
+        %137 = OpLabel
+        %138 = OpFOrdGreaterThanEqual %bool %114 %float_0
+        %139 = OpFOrdGreaterThanEqual %bool %131 %float_0
+        %140 = OpLogicalAnd %bool %138 %139
+               OpBranch %136
+        %136 = OpLabel
+        %141 = OpPhi %bool %134 %93 %140 %137
+        %142 = OpLogicalNot %bool %141
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %143
+        %144 = OpLabel
+               OpStore %90 %true
+               OpStore %91 %int_0
+               OpBranch %92
+        %143 = OpLabel
+        %145 = OpLoad %float %94
+        %146 = OpLoad %float %122
+        %147 = OpFSub %float %145 %146
+        %148 = OpLoad %float %99
+        %149 = OpLoad %float %126
+        %150 = OpFSub %float %148 %149
+        %151 = OpCompositeConstruct %v2float %147 %150
+        %152 = OpLoad %float %96
+        %153 = OpLoad %float %122
+        %154 = OpFSub %float %152 %153
+        %155 = OpLoad %float %101
+        %156 = OpLoad %float %126
+        %157 = OpFSub %float %155 %156
+        %158 = OpCompositeConstruct %v2float %154 %157
+               OpStore %param_3 %151
+               OpStore %param_4 %158
+        %159 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_3 %param_4
+               OpStore %pca %159
+        %160 = OpFOrdLessThan %bool %114 %float_0
+        %161 = OpFOrdLessThan %bool %159 %float_0
+        %162 = OpLogicalAnd %bool %160 %161
+        %163 = OpLogicalNot %bool %162
+               OpSelectionMerge %164 None
+               OpBranchConditional %163 %165 %164
+        %165 = OpLabel
+        %166 = OpFOrdGreaterThanEqual %bool %114 %float_0
+        %167 = OpFOrdGreaterThanEqual %bool %159 %float_0
+        %168 = OpLogicalAnd %bool %166 %167
+               OpBranch %164
+        %164 = OpLabel
+        %169 = OpPhi %bool %162 %143 %168 %165
+        %170 = OpLogicalNot %bool %169
+               OpSelectionMerge %171 None
+               OpBranchConditional %170 %172 %171
+        %172 = OpLabel
+               OpStore %90 %true
+               OpStore %91 %int_0
+               OpBranch %92
+        %171 = OpLabel
+               OpStore %90 %true
+               OpStore %91 %int_1
+               OpBranch %92
+         %92 = OpLabel
+        %173 = OpPhi %int %int_0 %144 %int_0 %172 %int_1 %171
+               OpReturnValue %173
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..fd9d668
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,159 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_24 : register(b0, space0) {
+  uint4 x_24[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float cross2d_vf2_vf2_(inout float2 a, inout float2 b) {
+  const float x_79 = a.x;
+  const float x_81 = b.y;
+  const float x_84 = b.x;
+  const float x_86 = a.y;
+  return ((x_79 * x_81) - (x_84 * x_86));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a_1, inout float2 b_1, inout float2 c) {
+  bool x_90 = false;
+  int x_91 = 0;
+  float pab = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float pbc = 0.0f;
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float pca = 0.0f;
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_140 = false;
+  bool x_168 = false;
+  bool x_141_phi = false;
+  bool x_169_phi = false;
+  int x_173_phi = 0;
+  switch(0u) {
+    default: {
+      const float x_95 = p.x;
+      const float x_97 = a_1.x;
+      const float x_100 = p.y;
+      const float x_102 = a_1.y;
+      const float x_106 = b_1.x;
+      const float x_107 = a_1.x;
+      const float x_110 = b_1.y;
+      const float x_111 = a_1.y;
+      param = float2((x_95 - x_97), (x_100 - x_102));
+      param_1 = float2((x_106 - x_107), (x_110 - x_111));
+      const float x_114 = cross2d_vf2_vf2_(param, param_1);
+      pab = x_114;
+      const float x_115 = p.x;
+      const float x_116 = b_1.x;
+      const float x_118 = p.y;
+      const float x_119 = b_1.y;
+      const float x_123 = c.x;
+      const float x_124 = b_1.x;
+      const float x_127 = c.y;
+      const float x_128 = b_1.y;
+      param_2 = float2((x_115 - x_116), (x_118 - x_119));
+      param_3 = float2((x_123 - x_124), (x_127 - x_128));
+      const float x_131 = cross2d_vf2_vf2_(param_2, param_3);
+      pbc = x_131;
+      bool tint_tmp = (x_114 < 0.0f);
+      if (tint_tmp) {
+        tint_tmp = (x_131 < 0.0f);
+      }
+      const bool x_134 = (tint_tmp);
+      x_141_phi = x_134;
+      if (!(x_134)) {
+        bool tint_tmp_1 = (x_114 >= 0.0f);
+        if (tint_tmp_1) {
+          tint_tmp_1 = (x_131 >= 0.0f);
+        }
+        x_140 = (tint_tmp_1);
+        x_141_phi = x_140;
+      }
+      if (!(x_141_phi)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      const float x_145 = p.x;
+      const float x_146 = c.x;
+      const float x_148 = p.y;
+      const float x_149 = c.y;
+      const float x_152 = a_1.x;
+      const float x_153 = c.x;
+      const float x_155 = a_1.y;
+      const float x_156 = c.y;
+      param_4 = float2((x_145 - x_146), (x_148 - x_149));
+      param_5 = float2((x_152 - x_153), (x_155 - x_156));
+      const float x_159 = cross2d_vf2_vf2_(param_4, param_5);
+      pca = x_159;
+      bool tint_tmp_2 = (x_114 < 0.0f);
+      if (tint_tmp_2) {
+        tint_tmp_2 = (x_159 < 0.0f);
+      }
+      const bool x_162 = (tint_tmp_2);
+      x_169_phi = x_162;
+      if (!(x_162)) {
+        bool tint_tmp_3 = (x_114 >= 0.0f);
+        if (tint_tmp_3) {
+          tint_tmp_3 = (x_159 >= 0.0f);
+        }
+        x_168 = (tint_tmp_3);
+        x_169_phi = x_168;
+      }
+      if (!(x_169_phi)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      x_90 = true;
+      x_91 = 1;
+      x_173_phi = 1;
+      break;
+    }
+  }
+  return x_173_phi;
+}
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_67 = gl_FragCoord;
+  const float2 x_70 = asfloat(x_24[0].xy);
+  const float2 x_71 = (float2(x_67.x, x_67.y) / x_70);
+  pos = x_71;
+  param_6 = x_71;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_72 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_72 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..c8cbf19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,145 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float cross2d_vf2_vf2_(thread float2* const a, thread float2* const b) {
+  float const x_79 = (*(a)).x;
+  float const x_81 = (*(b)).y;
+  float const x_84 = (*(b)).x;
+  float const x_86 = (*(a)).y;
+  return ((x_79 * x_81) - (x_84 * x_86));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(thread float2* const p, thread float2* const a_1, thread float2* const b_1, thread float2* const c) {
+  bool x_90 = false;
+  int x_91 = 0;
+  float pab = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float pbc = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float pca = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_140 = false;
+  bool x_168 = false;
+  bool x_141_phi = false;
+  bool x_169_phi = false;
+  int x_173_phi = 0;
+  switch(0u) {
+    default: {
+      float const x_95 = (*(p)).x;
+      float const x_97 = (*(a_1)).x;
+      float const x_100 = (*(p)).y;
+      float const x_102 = (*(a_1)).y;
+      float const x_106 = (*(b_1)).x;
+      float const x_107 = (*(a_1)).x;
+      float const x_110 = (*(b_1)).y;
+      float const x_111 = (*(a_1)).y;
+      param = float2((x_95 - x_97), (x_100 - x_102));
+      param_1 = float2((x_106 - x_107), (x_110 - x_111));
+      float const x_114 = cross2d_vf2_vf2_(&(param), &(param_1));
+      pab = x_114;
+      float const x_115 = (*(p)).x;
+      float const x_116 = (*(b_1)).x;
+      float const x_118 = (*(p)).y;
+      float const x_119 = (*(b_1)).y;
+      float const x_123 = (*(c)).x;
+      float const x_124 = (*(b_1)).x;
+      float const x_127 = (*(c)).y;
+      float const x_128 = (*(b_1)).y;
+      param_2 = float2((x_115 - x_116), (x_118 - x_119));
+      param_3 = float2((x_123 - x_124), (x_127 - x_128));
+      float const x_131 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+      pbc = x_131;
+      bool const x_134 = ((x_114 < 0.0f) && (x_131 < 0.0f));
+      x_141_phi = x_134;
+      if (!(x_134)) {
+        x_140 = ((x_114 >= 0.0f) && (x_131 >= 0.0f));
+        x_141_phi = x_140;
+      }
+      bool const x_141 = x_141_phi;
+      if (!(x_141)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      float const x_145 = (*(p)).x;
+      float const x_146 = (*(c)).x;
+      float const x_148 = (*(p)).y;
+      float const x_149 = (*(c)).y;
+      float const x_152 = (*(a_1)).x;
+      float const x_153 = (*(c)).x;
+      float const x_155 = (*(a_1)).y;
+      float const x_156 = (*(c)).y;
+      param_4 = float2((x_145 - x_146), (x_148 - x_149));
+      param_5 = float2((x_152 - x_153), (x_155 - x_156));
+      float const x_159 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+      pca = x_159;
+      bool const x_162 = ((x_114 < 0.0f) && (x_159 < 0.0f));
+      x_169_phi = x_162;
+      if (!(x_162)) {
+        x_168 = ((x_114 >= 0.0f) && (x_159 >= 0.0f));
+        x_169_phi = x_168;
+      }
+      bool const x_169 = x_169_phi;
+      if (!(x_169)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      x_90 = true;
+      x_91 = 1;
+      x_173_phi = 1;
+      break;
+    }
+  }
+  int const x_173 = x_173_phi;
+  return x_173;
+}
+
+void main_1(constant buf0& x_24, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 pos = 0.0f;
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_67 = *(tint_symbol_5);
+  float2 const x_70 = x_24.resolution;
+  float2 const x_71 = (float2(x_67.x, x_67.y) / x_70);
+  pos = x_71;
+  param_6 = x_71;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_72 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_72 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_24 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_24, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..59e04f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,360 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 265
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_24 "x_24"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %cross2d_vf2_vf2_ "cross2d_vf2_vf2_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a_1 "a_1"
+               OpName %b_1 "b_1"
+               OpName %c "c"
+               OpName %x_90 "x_90"
+               OpName %x_91 "x_91"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %pbc "pbc"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %pca "pca"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_140 "x_140"
+               OpName %x_168 "x_168"
+               OpName %x_141_phi "x_141_phi"
+               OpName %x_169_phi "x_169_phi"
+               OpName %x_173_phi "x_173_phi"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_24 NonWritable
+               OpDecorate %x_24 DescriptorSet 0
+               OpDecorate %x_24 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_24 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+         %40 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %52 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %55 = OpConstantNull %int
+         %57 = OpConstantNull %float
+         %59 = OpConstantNull %v2float
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %214 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %233 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %236 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %239 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+    %float_1 = OpConstant %float 1
+        %250 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %251 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %252 = OpTypeFunction %void %main_out
+%cross2d_vf2_vf2_ = OpFunction %float None %15
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %25 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpLoad %float %25
+         %29 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFMul %float %26 %30
+         %38 = OpFMul %float %33 %36
+         %39 = OpFSub %float %37 %38
+               OpReturnValue %39
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %40
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_1 = OpFunctionParameter %_ptr_Function_v2float
+        %b_1 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %47 = OpLabel
+       %x_90 = OpVariable %_ptr_Function_bool Function %52
+       %x_91 = OpVariable %_ptr_Function_int Function %55
+        %pab = OpVariable %_ptr_Function_float Function %57
+      %param = OpVariable %_ptr_Function_v2float Function %59
+    %param_1 = OpVariable %_ptr_Function_v2float Function %59
+        %pbc = OpVariable %_ptr_Function_float Function %57
+    %param_2 = OpVariable %_ptr_Function_v2float Function %59
+    %param_3 = OpVariable %_ptr_Function_v2float Function %59
+        %pca = OpVariable %_ptr_Function_float Function %57
+    %param_4 = OpVariable %_ptr_Function_v2float Function %59
+    %param_5 = OpVariable %_ptr_Function_v2float Function %59
+      %x_140 = OpVariable %_ptr_Function_bool Function %52
+      %x_168 = OpVariable %_ptr_Function_bool Function %52
+  %x_141_phi = OpVariable %_ptr_Function_bool Function %52
+  %x_169_phi = OpVariable %_ptr_Function_bool Function %52
+  %x_173_phi = OpVariable %_ptr_Function_int Function %55
+               OpStore %x_90 %false
+               OpSelectionMerge %72 None
+               OpSwitch %uint_0 %73
+         %73 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %76 = OpLoad %float %75
+         %78 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %79 = OpLoad %float %78
+         %81 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %82 = OpLoad %float %81
+         %84 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %85 = OpLoad %float %84
+         %87 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+         %88 = OpLoad %float %87
+         %90 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %91 = OpLoad %float %90
+         %93 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+         %94 = OpLoad %float %93
+         %96 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %97 = OpLoad %float %96
+         %98 = OpFSub %float %76 %79
+         %99 = OpFSub %float %82 %85
+        %100 = OpCompositeConstruct %v2float %98 %99
+               OpStore %param %100
+        %101 = OpFSub %float %88 %91
+        %102 = OpFSub %float %94 %97
+        %103 = OpCompositeConstruct %v2float %101 %102
+               OpStore %param_1 %103
+        %104 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_1
+               OpStore %pab %104
+        %108 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %109 = OpLoad %float %108
+        %111 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %112 = OpLoad %float %111
+        %114 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %115 = OpLoad %float %114
+        %117 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %118 = OpLoad %float %117
+        %120 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %121 = OpLoad %float %120
+        %123 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %124 = OpLoad %float %123
+        %126 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %127 = OpLoad %float %126
+        %129 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %130 = OpLoad %float %129
+        %131 = OpFSub %float %109 %112
+        %132 = OpFSub %float %115 %118
+        %133 = OpCompositeConstruct %v2float %131 %132
+               OpStore %param_2 %133
+        %134 = OpFSub %float %121 %124
+        %135 = OpFSub %float %127 %130
+        %136 = OpCompositeConstruct %v2float %134 %135
+               OpStore %param_3 %136
+        %137 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_2 %param_3
+               OpStore %pbc %137
+        %141 = OpFOrdLessThan %bool %104 %float_0
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %142
+        %143 = OpLabel
+        %144 = OpFOrdLessThan %bool %137 %float_0
+               OpBranch %142
+        %142 = OpLabel
+        %145 = OpPhi %bool %141 %73 %144 %143
+               OpStore %x_141_phi %145
+        %146 = OpLogicalNot %bool %145
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpFOrdGreaterThanEqual %bool %104 %float_0
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %152 = OpFOrdGreaterThanEqual %bool %137 %float_0
+               OpBranch %150
+        %150 = OpLabel
+        %153 = OpPhi %bool %149 %148 %152 %151
+               OpStore %x_140 %153
+        %154 = OpLoad %bool %x_140
+               OpStore %x_141_phi %154
+               OpBranch %147
+        %147 = OpLabel
+        %155 = OpLoad %bool %x_141_phi
+        %156 = OpLogicalNot %bool %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %157
+        %158 = OpLabel
+               OpStore %x_90 %true
+               OpStore %x_91 %int_0
+               OpStore %x_173_phi %int_0
+               OpBranch %72
+        %157 = OpLabel
+        %162 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %163 = OpLoad %float %162
+        %165 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %166 = OpLoad %float %165
+        %168 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %169 = OpLoad %float %168
+        %171 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %172 = OpLoad %float %171
+        %174 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %175 = OpLoad %float %174
+        %177 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %178 = OpLoad %float %177
+        %180 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %181 = OpLoad %float %180
+        %183 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %184 = OpLoad %float %183
+        %185 = OpFSub %float %163 %166
+        %186 = OpFSub %float %169 %172
+        %187 = OpCompositeConstruct %v2float %185 %186
+               OpStore %param_4 %187
+        %188 = OpFSub %float %175 %178
+        %189 = OpFSub %float %181 %184
+        %190 = OpCompositeConstruct %v2float %188 %189
+               OpStore %param_5 %190
+        %191 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_4 %param_5
+               OpStore %pca %191
+        %194 = OpFOrdLessThan %bool %104 %float_0
+               OpSelectionMerge %195 None
+               OpBranchConditional %194 %196 %195
+        %196 = OpLabel
+        %197 = OpFOrdLessThan %bool %191 %float_0
+               OpBranch %195
+        %195 = OpLabel
+        %198 = OpPhi %bool %194 %157 %197 %196
+               OpStore %x_169_phi %198
+        %199 = OpLogicalNot %bool %198
+               OpSelectionMerge %200 None
+               OpBranchConditional %199 %201 %200
+        %201 = OpLabel
+        %202 = OpFOrdGreaterThanEqual %bool %104 %float_0
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %203
+        %204 = OpLabel
+        %205 = OpFOrdGreaterThanEqual %bool %191 %float_0
+               OpBranch %203
+        %203 = OpLabel
+        %206 = OpPhi %bool %202 %201 %205 %204
+               OpStore %x_168 %206
+        %207 = OpLoad %bool %x_168
+               OpStore %x_169_phi %207
+               OpBranch %200
+        %200 = OpLabel
+        %208 = OpLoad %bool %x_169_phi
+        %209 = OpLogicalNot %bool %208
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %210
+        %211 = OpLabel
+               OpStore %x_90 %true
+               OpStore %x_91 %int_0
+               OpStore %x_173_phi %int_0
+               OpBranch %72
+        %210 = OpLabel
+               OpStore %x_90 %true
+               OpStore %x_91 %int_1
+               OpStore %x_173_phi %int_1
+               OpBranch %72
+         %72 = OpLabel
+        %213 = OpLoad %int %x_173_phi
+               OpReturnValue %213
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %214
+        %217 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %59
+    %param_6 = OpVariable %_ptr_Function_v2float Function %59
+    %param_7 = OpVariable %_ptr_Function_v2float Function %59
+    %param_8 = OpVariable %_ptr_Function_v2float Function %59
+    %param_9 = OpVariable %_ptr_Function_v2float Function %59
+        %223 = OpLoad %v4float %gl_FragCoord
+        %225 = OpAccessChain %_ptr_Uniform_v2float %x_24 %uint_0
+        %226 = OpLoad %v2float %225
+        %227 = OpCompositeExtract %float %223 0
+        %228 = OpCompositeExtract %float %223 1
+        %229 = OpCompositeConstruct %v2float %227 %228
+        %230 = OpFDiv %v2float %229 %226
+               OpStore %pos %230
+               OpStore %param_6 %230
+               OpStore %param_7 %233
+               OpStore %param_8 %236
+               OpStore %param_9 %239
+        %240 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %245 = OpIEqual %bool %240 %int_1
+               OpSelectionMerge %246 None
+               OpBranchConditional %245 %247 %248
+        %247 = OpLabel
+               OpStore %x_GLF_color %250
+               OpBranch %246
+        %248 = OpLabel
+               OpStore %x_GLF_color %251
+               OpBranch %246
+        %246 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %252
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %256 = OpLabel
+        %257 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %257
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %214
+        %259 = OpLabel
+        %260 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %260
+        %261 = OpFunctionCall %void %main_1
+        %263 = OpLoad %v4float %x_GLF_color
+        %264 = OpCompositeConstruct %main_out %263
+        %262 = OpFunctionCall %void %tint_symbol_3 %264
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d2eec41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,151 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_79 : f32 = (*(a)).x;
+  let x_81 : f32 = (*(b)).y;
+  let x_84 : f32 = (*(b)).x;
+  let x_86 : f32 = (*(a)).y;
+  return ((x_79 * x_81) - (x_84 * x_86));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var x_90 : bool = false;
+  var x_91 : i32;
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_140 : bool;
+  var x_168 : bool;
+  var x_141_phi : bool;
+  var x_169_phi : bool;
+  var x_173_phi : i32;
+  switch(0u) {
+    default: {
+      let x_94 : ptr<function, f32> = &((*(p)).x);
+      let x_95 : f32 = *(x_94);
+      let x_96 : ptr<function, f32> = &((*(a_1)).x);
+      let x_97 : f32 = *(x_96);
+      let x_99 : ptr<function, f32> = &((*(p)).y);
+      let x_100 : f32 = *(x_99);
+      let x_101 : ptr<function, f32> = &((*(a_1)).y);
+      let x_102 : f32 = *(x_101);
+      let x_105 : ptr<function, f32> = &((*(b_1)).x);
+      let x_106 : f32 = *(x_105);
+      let x_107 : f32 = *(x_96);
+      let x_109 : ptr<function, f32> = &((*(b_1)).y);
+      let x_110 : f32 = *(x_109);
+      let x_111 : f32 = *(x_101);
+      param = vec2<f32>((x_95 - x_97), (x_100 - x_102));
+      param_1 = vec2<f32>((x_106 - x_107), (x_110 - x_111));
+      let x_114 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+      pab = x_114;
+      let x_115 : f32 = *(x_94);
+      let x_116 : f32 = *(x_105);
+      let x_118 : f32 = *(x_99);
+      let x_119 : f32 = *(x_109);
+      let x_122 : ptr<function, f32> = &((*(c)).x);
+      let x_123 : f32 = *(x_122);
+      let x_124 : f32 = *(x_105);
+      let x_126 : ptr<function, f32> = &((*(c)).y);
+      let x_127 : f32 = *(x_126);
+      let x_128 : f32 = *(x_109);
+      param_2 = vec2<f32>((x_115 - x_116), (x_118 - x_119));
+      param_3 = vec2<f32>((x_123 - x_124), (x_127 - x_128));
+      let x_131 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+      pbc = x_131;
+      let x_134 : bool = ((x_114 < 0.0) && (x_131 < 0.0));
+      x_141_phi = x_134;
+      if (!(x_134)) {
+        x_140 = ((x_114 >= 0.0) && (x_131 >= 0.0));
+        x_141_phi = x_140;
+      }
+      let x_141 : bool = x_141_phi;
+      if (!(x_141)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      let x_145 : f32 = *(x_94);
+      let x_146 : f32 = *(x_122);
+      let x_148 : f32 = *(x_99);
+      let x_149 : f32 = *(x_126);
+      let x_152 : f32 = *(x_96);
+      let x_153 : f32 = *(x_122);
+      let x_155 : f32 = *(x_101);
+      let x_156 : f32 = *(x_126);
+      param_4 = vec2<f32>((x_145 - x_146), (x_148 - x_149));
+      param_5 = vec2<f32>((x_152 - x_153), (x_155 - x_156));
+      let x_159 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+      pca = x_159;
+      let x_162 : bool = ((x_114 < 0.0) && (x_159 < 0.0));
+      x_169_phi = x_162;
+      if (!(x_162)) {
+        x_168 = ((x_114 >= 0.0) && (x_159 >= 0.0));
+        x_169_phi = x_168;
+      }
+      let x_169 : bool = x_169_phi;
+      if (!(x_169)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      x_90 = true;
+      x_91 = 1;
+      x_173_phi = 1;
+    }
+  }
+  let x_173 : i32 = x_173_phi;
+  return x_173;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_67 : vec4<f32> = gl_FragCoord;
+  let x_70 : vec2<f32> = x_24.resolution;
+  let x_71 : vec2<f32> = (vec2<f32>(x_67.x, x_67.y) / x_70);
+  pos = x_71;
+  param_6 = x_71;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_72 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_72 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
new file mode 100644
index 0000000..d2eec41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
@@ -0,0 +1,151 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_79 : f32 = (*(a)).x;
+  let x_81 : f32 = (*(b)).y;
+  let x_84 : f32 = (*(b)).x;
+  let x_86 : f32 = (*(a)).y;
+  return ((x_79 * x_81) - (x_84 * x_86));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var x_90 : bool = false;
+  var x_91 : i32;
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_140 : bool;
+  var x_168 : bool;
+  var x_141_phi : bool;
+  var x_169_phi : bool;
+  var x_173_phi : i32;
+  switch(0u) {
+    default: {
+      let x_94 : ptr<function, f32> = &((*(p)).x);
+      let x_95 : f32 = *(x_94);
+      let x_96 : ptr<function, f32> = &((*(a_1)).x);
+      let x_97 : f32 = *(x_96);
+      let x_99 : ptr<function, f32> = &((*(p)).y);
+      let x_100 : f32 = *(x_99);
+      let x_101 : ptr<function, f32> = &((*(a_1)).y);
+      let x_102 : f32 = *(x_101);
+      let x_105 : ptr<function, f32> = &((*(b_1)).x);
+      let x_106 : f32 = *(x_105);
+      let x_107 : f32 = *(x_96);
+      let x_109 : ptr<function, f32> = &((*(b_1)).y);
+      let x_110 : f32 = *(x_109);
+      let x_111 : f32 = *(x_101);
+      param = vec2<f32>((x_95 - x_97), (x_100 - x_102));
+      param_1 = vec2<f32>((x_106 - x_107), (x_110 - x_111));
+      let x_114 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+      pab = x_114;
+      let x_115 : f32 = *(x_94);
+      let x_116 : f32 = *(x_105);
+      let x_118 : f32 = *(x_99);
+      let x_119 : f32 = *(x_109);
+      let x_122 : ptr<function, f32> = &((*(c)).x);
+      let x_123 : f32 = *(x_122);
+      let x_124 : f32 = *(x_105);
+      let x_126 : ptr<function, f32> = &((*(c)).y);
+      let x_127 : f32 = *(x_126);
+      let x_128 : f32 = *(x_109);
+      param_2 = vec2<f32>((x_115 - x_116), (x_118 - x_119));
+      param_3 = vec2<f32>((x_123 - x_124), (x_127 - x_128));
+      let x_131 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+      pbc = x_131;
+      let x_134 : bool = ((x_114 < 0.0) && (x_131 < 0.0));
+      x_141_phi = x_134;
+      if (!(x_134)) {
+        x_140 = ((x_114 >= 0.0) && (x_131 >= 0.0));
+        x_141_phi = x_140;
+      }
+      let x_141 : bool = x_141_phi;
+      if (!(x_141)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      let x_145 : f32 = *(x_94);
+      let x_146 : f32 = *(x_122);
+      let x_148 : f32 = *(x_99);
+      let x_149 : f32 = *(x_126);
+      let x_152 : f32 = *(x_96);
+      let x_153 : f32 = *(x_122);
+      let x_155 : f32 = *(x_101);
+      let x_156 : f32 = *(x_126);
+      param_4 = vec2<f32>((x_145 - x_146), (x_148 - x_149));
+      param_5 = vec2<f32>((x_152 - x_153), (x_155 - x_156));
+      let x_159 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+      pca = x_159;
+      let x_162 : bool = ((x_114 < 0.0) && (x_159 < 0.0));
+      x_169_phi = x_162;
+      if (!(x_162)) {
+        x_168 = ((x_114 >= 0.0) && (x_159 >= 0.0));
+        x_169_phi = x_168;
+      }
+      let x_169 : bool = x_169_phi;
+      if (!(x_169)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      x_90 = true;
+      x_91 = 1;
+      x_173_phi = 1;
+    }
+  }
+  let x_173 : i32 = x_173_phi;
+  return x_173;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_67 : vec4<f32> = gl_FragCoord;
+  let x_70 : vec2<f32> = x_24.resolution;
+  let x_71 : vec2<f32> = (vec2<f32>(x_67.x, x_67.y) / x_70);
+  pos = x_71;
+  param_6 = x_71;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_72 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_72 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..fd9d668
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,159 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_24 : register(b0, space0) {
+  uint4 x_24[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float cross2d_vf2_vf2_(inout float2 a, inout float2 b) {
+  const float x_79 = a.x;
+  const float x_81 = b.y;
+  const float x_84 = b.x;
+  const float x_86 = a.y;
+  return ((x_79 * x_81) - (x_84 * x_86));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a_1, inout float2 b_1, inout float2 c) {
+  bool x_90 = false;
+  int x_91 = 0;
+  float pab = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float pbc = 0.0f;
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float pca = 0.0f;
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_140 = false;
+  bool x_168 = false;
+  bool x_141_phi = false;
+  bool x_169_phi = false;
+  int x_173_phi = 0;
+  switch(0u) {
+    default: {
+      const float x_95 = p.x;
+      const float x_97 = a_1.x;
+      const float x_100 = p.y;
+      const float x_102 = a_1.y;
+      const float x_106 = b_1.x;
+      const float x_107 = a_1.x;
+      const float x_110 = b_1.y;
+      const float x_111 = a_1.y;
+      param = float2((x_95 - x_97), (x_100 - x_102));
+      param_1 = float2((x_106 - x_107), (x_110 - x_111));
+      const float x_114 = cross2d_vf2_vf2_(param, param_1);
+      pab = x_114;
+      const float x_115 = p.x;
+      const float x_116 = b_1.x;
+      const float x_118 = p.y;
+      const float x_119 = b_1.y;
+      const float x_123 = c.x;
+      const float x_124 = b_1.x;
+      const float x_127 = c.y;
+      const float x_128 = b_1.y;
+      param_2 = float2((x_115 - x_116), (x_118 - x_119));
+      param_3 = float2((x_123 - x_124), (x_127 - x_128));
+      const float x_131 = cross2d_vf2_vf2_(param_2, param_3);
+      pbc = x_131;
+      bool tint_tmp = (x_114 < 0.0f);
+      if (tint_tmp) {
+        tint_tmp = (x_131 < 0.0f);
+      }
+      const bool x_134 = (tint_tmp);
+      x_141_phi = x_134;
+      if (!(x_134)) {
+        bool tint_tmp_1 = (x_114 >= 0.0f);
+        if (tint_tmp_1) {
+          tint_tmp_1 = (x_131 >= 0.0f);
+        }
+        x_140 = (tint_tmp_1);
+        x_141_phi = x_140;
+      }
+      if (!(x_141_phi)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      const float x_145 = p.x;
+      const float x_146 = c.x;
+      const float x_148 = p.y;
+      const float x_149 = c.y;
+      const float x_152 = a_1.x;
+      const float x_153 = c.x;
+      const float x_155 = a_1.y;
+      const float x_156 = c.y;
+      param_4 = float2((x_145 - x_146), (x_148 - x_149));
+      param_5 = float2((x_152 - x_153), (x_155 - x_156));
+      const float x_159 = cross2d_vf2_vf2_(param_4, param_5);
+      pca = x_159;
+      bool tint_tmp_2 = (x_114 < 0.0f);
+      if (tint_tmp_2) {
+        tint_tmp_2 = (x_159 < 0.0f);
+      }
+      const bool x_162 = (tint_tmp_2);
+      x_169_phi = x_162;
+      if (!(x_162)) {
+        bool tint_tmp_3 = (x_114 >= 0.0f);
+        if (tint_tmp_3) {
+          tint_tmp_3 = (x_159 >= 0.0f);
+        }
+        x_168 = (tint_tmp_3);
+        x_169_phi = x_168;
+      }
+      if (!(x_169_phi)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      x_90 = true;
+      x_91 = 1;
+      x_173_phi = 1;
+      break;
+    }
+  }
+  return x_173_phi;
+}
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_67 = gl_FragCoord;
+  const float2 x_70 = asfloat(x_24[0].xy);
+  const float2 x_71 = (float2(x_67.x, x_67.y) / x_70);
+  pos = x_71;
+  param_6 = x_71;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_72 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_72 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..c8cbf19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,145 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float cross2d_vf2_vf2_(thread float2* const a, thread float2* const b) {
+  float const x_79 = (*(a)).x;
+  float const x_81 = (*(b)).y;
+  float const x_84 = (*(b)).x;
+  float const x_86 = (*(a)).y;
+  return ((x_79 * x_81) - (x_84 * x_86));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(thread float2* const p, thread float2* const a_1, thread float2* const b_1, thread float2* const c) {
+  bool x_90 = false;
+  int x_91 = 0;
+  float pab = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float pbc = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float pca = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_140 = false;
+  bool x_168 = false;
+  bool x_141_phi = false;
+  bool x_169_phi = false;
+  int x_173_phi = 0;
+  switch(0u) {
+    default: {
+      float const x_95 = (*(p)).x;
+      float const x_97 = (*(a_1)).x;
+      float const x_100 = (*(p)).y;
+      float const x_102 = (*(a_1)).y;
+      float const x_106 = (*(b_1)).x;
+      float const x_107 = (*(a_1)).x;
+      float const x_110 = (*(b_1)).y;
+      float const x_111 = (*(a_1)).y;
+      param = float2((x_95 - x_97), (x_100 - x_102));
+      param_1 = float2((x_106 - x_107), (x_110 - x_111));
+      float const x_114 = cross2d_vf2_vf2_(&(param), &(param_1));
+      pab = x_114;
+      float const x_115 = (*(p)).x;
+      float const x_116 = (*(b_1)).x;
+      float const x_118 = (*(p)).y;
+      float const x_119 = (*(b_1)).y;
+      float const x_123 = (*(c)).x;
+      float const x_124 = (*(b_1)).x;
+      float const x_127 = (*(c)).y;
+      float const x_128 = (*(b_1)).y;
+      param_2 = float2((x_115 - x_116), (x_118 - x_119));
+      param_3 = float2((x_123 - x_124), (x_127 - x_128));
+      float const x_131 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+      pbc = x_131;
+      bool const x_134 = ((x_114 < 0.0f) && (x_131 < 0.0f));
+      x_141_phi = x_134;
+      if (!(x_134)) {
+        x_140 = ((x_114 >= 0.0f) && (x_131 >= 0.0f));
+        x_141_phi = x_140;
+      }
+      bool const x_141 = x_141_phi;
+      if (!(x_141)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      float const x_145 = (*(p)).x;
+      float const x_146 = (*(c)).x;
+      float const x_148 = (*(p)).y;
+      float const x_149 = (*(c)).y;
+      float const x_152 = (*(a_1)).x;
+      float const x_153 = (*(c)).x;
+      float const x_155 = (*(a_1)).y;
+      float const x_156 = (*(c)).y;
+      param_4 = float2((x_145 - x_146), (x_148 - x_149));
+      param_5 = float2((x_152 - x_153), (x_155 - x_156));
+      float const x_159 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+      pca = x_159;
+      bool const x_162 = ((x_114 < 0.0f) && (x_159 < 0.0f));
+      x_169_phi = x_162;
+      if (!(x_162)) {
+        x_168 = ((x_114 >= 0.0f) && (x_159 >= 0.0f));
+        x_169_phi = x_168;
+      }
+      bool const x_169 = x_169_phi;
+      if (!(x_169)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      x_90 = true;
+      x_91 = 1;
+      x_173_phi = 1;
+      break;
+    }
+  }
+  int const x_173 = x_173_phi;
+  return x_173;
+}
+
+void main_1(constant buf0& x_24, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 pos = 0.0f;
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_67 = *(tint_symbol_5);
+  float2 const x_70 = x_24.resolution;
+  float2 const x_71 = (float2(x_67.x, x_67.y) / x_70);
+  pos = x_71;
+  param_6 = x_71;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_72 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_72 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_24 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_24, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..59e04f8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,360 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 265
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_24 "x_24"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %cross2d_vf2_vf2_ "cross2d_vf2_vf2_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a_1 "a_1"
+               OpName %b_1 "b_1"
+               OpName %c "c"
+               OpName %x_90 "x_90"
+               OpName %x_91 "x_91"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %pbc "pbc"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %pca "pca"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_140 "x_140"
+               OpName %x_168 "x_168"
+               OpName %x_141_phi "x_141_phi"
+               OpName %x_169_phi "x_169_phi"
+               OpName %x_173_phi "x_173_phi"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_24 NonWritable
+               OpDecorate %x_24 DescriptorSet 0
+               OpDecorate %x_24 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_24 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+         %40 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %52 = OpConstantNull %bool
+%_ptr_Function_int = OpTypePointer Function %int
+         %55 = OpConstantNull %int
+         %57 = OpConstantNull %float
+         %59 = OpConstantNull %v2float
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %214 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %233 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %236 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %239 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+    %float_1 = OpConstant %float 1
+        %250 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %251 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %252 = OpTypeFunction %void %main_out
+%cross2d_vf2_vf2_ = OpFunction %float None %15
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %25 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpLoad %float %25
+         %29 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFMul %float %26 %30
+         %38 = OpFMul %float %33 %36
+         %39 = OpFSub %float %37 %38
+               OpReturnValue %39
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %40
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_1 = OpFunctionParameter %_ptr_Function_v2float
+        %b_1 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %47 = OpLabel
+       %x_90 = OpVariable %_ptr_Function_bool Function %52
+       %x_91 = OpVariable %_ptr_Function_int Function %55
+        %pab = OpVariable %_ptr_Function_float Function %57
+      %param = OpVariable %_ptr_Function_v2float Function %59
+    %param_1 = OpVariable %_ptr_Function_v2float Function %59
+        %pbc = OpVariable %_ptr_Function_float Function %57
+    %param_2 = OpVariable %_ptr_Function_v2float Function %59
+    %param_3 = OpVariable %_ptr_Function_v2float Function %59
+        %pca = OpVariable %_ptr_Function_float Function %57
+    %param_4 = OpVariable %_ptr_Function_v2float Function %59
+    %param_5 = OpVariable %_ptr_Function_v2float Function %59
+      %x_140 = OpVariable %_ptr_Function_bool Function %52
+      %x_168 = OpVariable %_ptr_Function_bool Function %52
+  %x_141_phi = OpVariable %_ptr_Function_bool Function %52
+  %x_169_phi = OpVariable %_ptr_Function_bool Function %52
+  %x_173_phi = OpVariable %_ptr_Function_int Function %55
+               OpStore %x_90 %false
+               OpSelectionMerge %72 None
+               OpSwitch %uint_0 %73
+         %73 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %76 = OpLoad %float %75
+         %78 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %79 = OpLoad %float %78
+         %81 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %82 = OpLoad %float %81
+         %84 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %85 = OpLoad %float %84
+         %87 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+         %88 = OpLoad %float %87
+         %90 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %91 = OpLoad %float %90
+         %93 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+         %94 = OpLoad %float %93
+         %96 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %97 = OpLoad %float %96
+         %98 = OpFSub %float %76 %79
+         %99 = OpFSub %float %82 %85
+        %100 = OpCompositeConstruct %v2float %98 %99
+               OpStore %param %100
+        %101 = OpFSub %float %88 %91
+        %102 = OpFSub %float %94 %97
+        %103 = OpCompositeConstruct %v2float %101 %102
+               OpStore %param_1 %103
+        %104 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_1
+               OpStore %pab %104
+        %108 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %109 = OpLoad %float %108
+        %111 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %112 = OpLoad %float %111
+        %114 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %115 = OpLoad %float %114
+        %117 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %118 = OpLoad %float %117
+        %120 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %121 = OpLoad %float %120
+        %123 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %124 = OpLoad %float %123
+        %126 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %127 = OpLoad %float %126
+        %129 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %130 = OpLoad %float %129
+        %131 = OpFSub %float %109 %112
+        %132 = OpFSub %float %115 %118
+        %133 = OpCompositeConstruct %v2float %131 %132
+               OpStore %param_2 %133
+        %134 = OpFSub %float %121 %124
+        %135 = OpFSub %float %127 %130
+        %136 = OpCompositeConstruct %v2float %134 %135
+               OpStore %param_3 %136
+        %137 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_2 %param_3
+               OpStore %pbc %137
+        %141 = OpFOrdLessThan %bool %104 %float_0
+               OpSelectionMerge %142 None
+               OpBranchConditional %141 %143 %142
+        %143 = OpLabel
+        %144 = OpFOrdLessThan %bool %137 %float_0
+               OpBranch %142
+        %142 = OpLabel
+        %145 = OpPhi %bool %141 %73 %144 %143
+               OpStore %x_141_phi %145
+        %146 = OpLogicalNot %bool %145
+               OpSelectionMerge %147 None
+               OpBranchConditional %146 %148 %147
+        %148 = OpLabel
+        %149 = OpFOrdGreaterThanEqual %bool %104 %float_0
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+        %152 = OpFOrdGreaterThanEqual %bool %137 %float_0
+               OpBranch %150
+        %150 = OpLabel
+        %153 = OpPhi %bool %149 %148 %152 %151
+               OpStore %x_140 %153
+        %154 = OpLoad %bool %x_140
+               OpStore %x_141_phi %154
+               OpBranch %147
+        %147 = OpLabel
+        %155 = OpLoad %bool %x_141_phi
+        %156 = OpLogicalNot %bool %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %157
+        %158 = OpLabel
+               OpStore %x_90 %true
+               OpStore %x_91 %int_0
+               OpStore %x_173_phi %int_0
+               OpBranch %72
+        %157 = OpLabel
+        %162 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %163 = OpLoad %float %162
+        %165 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %166 = OpLoad %float %165
+        %168 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %169 = OpLoad %float %168
+        %171 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %172 = OpLoad %float %171
+        %174 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %175 = OpLoad %float %174
+        %177 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %178 = OpLoad %float %177
+        %180 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %181 = OpLoad %float %180
+        %183 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %184 = OpLoad %float %183
+        %185 = OpFSub %float %163 %166
+        %186 = OpFSub %float %169 %172
+        %187 = OpCompositeConstruct %v2float %185 %186
+               OpStore %param_4 %187
+        %188 = OpFSub %float %175 %178
+        %189 = OpFSub %float %181 %184
+        %190 = OpCompositeConstruct %v2float %188 %189
+               OpStore %param_5 %190
+        %191 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_4 %param_5
+               OpStore %pca %191
+        %194 = OpFOrdLessThan %bool %104 %float_0
+               OpSelectionMerge %195 None
+               OpBranchConditional %194 %196 %195
+        %196 = OpLabel
+        %197 = OpFOrdLessThan %bool %191 %float_0
+               OpBranch %195
+        %195 = OpLabel
+        %198 = OpPhi %bool %194 %157 %197 %196
+               OpStore %x_169_phi %198
+        %199 = OpLogicalNot %bool %198
+               OpSelectionMerge %200 None
+               OpBranchConditional %199 %201 %200
+        %201 = OpLabel
+        %202 = OpFOrdGreaterThanEqual %bool %104 %float_0
+               OpSelectionMerge %203 None
+               OpBranchConditional %202 %204 %203
+        %204 = OpLabel
+        %205 = OpFOrdGreaterThanEqual %bool %191 %float_0
+               OpBranch %203
+        %203 = OpLabel
+        %206 = OpPhi %bool %202 %201 %205 %204
+               OpStore %x_168 %206
+        %207 = OpLoad %bool %x_168
+               OpStore %x_169_phi %207
+               OpBranch %200
+        %200 = OpLabel
+        %208 = OpLoad %bool %x_169_phi
+        %209 = OpLogicalNot %bool %208
+               OpSelectionMerge %210 None
+               OpBranchConditional %209 %211 %210
+        %211 = OpLabel
+               OpStore %x_90 %true
+               OpStore %x_91 %int_0
+               OpStore %x_173_phi %int_0
+               OpBranch %72
+        %210 = OpLabel
+               OpStore %x_90 %true
+               OpStore %x_91 %int_1
+               OpStore %x_173_phi %int_1
+               OpBranch %72
+         %72 = OpLabel
+        %213 = OpLoad %int %x_173_phi
+               OpReturnValue %213
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %214
+        %217 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %59
+    %param_6 = OpVariable %_ptr_Function_v2float Function %59
+    %param_7 = OpVariable %_ptr_Function_v2float Function %59
+    %param_8 = OpVariable %_ptr_Function_v2float Function %59
+    %param_9 = OpVariable %_ptr_Function_v2float Function %59
+        %223 = OpLoad %v4float %gl_FragCoord
+        %225 = OpAccessChain %_ptr_Uniform_v2float %x_24 %uint_0
+        %226 = OpLoad %v2float %225
+        %227 = OpCompositeExtract %float %223 0
+        %228 = OpCompositeExtract %float %223 1
+        %229 = OpCompositeConstruct %v2float %227 %228
+        %230 = OpFDiv %v2float %229 %226
+               OpStore %pos %230
+               OpStore %param_6 %230
+               OpStore %param_7 %233
+               OpStore %param_8 %236
+               OpStore %param_9 %239
+        %240 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %245 = OpIEqual %bool %240 %int_1
+               OpSelectionMerge %246 None
+               OpBranchConditional %245 %247 %248
+        %247 = OpLabel
+               OpStore %x_GLF_color %250
+               OpBranch %246
+        %248 = OpLabel
+               OpStore %x_GLF_color %251
+               OpBranch %246
+        %246 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %252
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %256 = OpLabel
+        %257 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %257
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %214
+        %259 = OpLabel
+        %260 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %260
+        %261 = OpFunctionCall %void %main_1
+        %263 = OpLoad %v4float %x_GLF_color
+        %264 = OpCompositeConstruct %main_out %263
+        %262 = OpFunctionCall %void %tint_symbol_3 %264
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d2eec41
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,151 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_79 : f32 = (*(a)).x;
+  let x_81 : f32 = (*(b)).y;
+  let x_84 : f32 = (*(b)).x;
+  let x_86 : f32 = (*(a)).y;
+  return ((x_79 * x_81) - (x_84 * x_86));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var x_90 : bool = false;
+  var x_91 : i32;
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_140 : bool;
+  var x_168 : bool;
+  var x_141_phi : bool;
+  var x_169_phi : bool;
+  var x_173_phi : i32;
+  switch(0u) {
+    default: {
+      let x_94 : ptr<function, f32> = &((*(p)).x);
+      let x_95 : f32 = *(x_94);
+      let x_96 : ptr<function, f32> = &((*(a_1)).x);
+      let x_97 : f32 = *(x_96);
+      let x_99 : ptr<function, f32> = &((*(p)).y);
+      let x_100 : f32 = *(x_99);
+      let x_101 : ptr<function, f32> = &((*(a_1)).y);
+      let x_102 : f32 = *(x_101);
+      let x_105 : ptr<function, f32> = &((*(b_1)).x);
+      let x_106 : f32 = *(x_105);
+      let x_107 : f32 = *(x_96);
+      let x_109 : ptr<function, f32> = &((*(b_1)).y);
+      let x_110 : f32 = *(x_109);
+      let x_111 : f32 = *(x_101);
+      param = vec2<f32>((x_95 - x_97), (x_100 - x_102));
+      param_1 = vec2<f32>((x_106 - x_107), (x_110 - x_111));
+      let x_114 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+      pab = x_114;
+      let x_115 : f32 = *(x_94);
+      let x_116 : f32 = *(x_105);
+      let x_118 : f32 = *(x_99);
+      let x_119 : f32 = *(x_109);
+      let x_122 : ptr<function, f32> = &((*(c)).x);
+      let x_123 : f32 = *(x_122);
+      let x_124 : f32 = *(x_105);
+      let x_126 : ptr<function, f32> = &((*(c)).y);
+      let x_127 : f32 = *(x_126);
+      let x_128 : f32 = *(x_109);
+      param_2 = vec2<f32>((x_115 - x_116), (x_118 - x_119));
+      param_3 = vec2<f32>((x_123 - x_124), (x_127 - x_128));
+      let x_131 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+      pbc = x_131;
+      let x_134 : bool = ((x_114 < 0.0) && (x_131 < 0.0));
+      x_141_phi = x_134;
+      if (!(x_134)) {
+        x_140 = ((x_114 >= 0.0) && (x_131 >= 0.0));
+        x_141_phi = x_140;
+      }
+      let x_141 : bool = x_141_phi;
+      if (!(x_141)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      let x_145 : f32 = *(x_94);
+      let x_146 : f32 = *(x_122);
+      let x_148 : f32 = *(x_99);
+      let x_149 : f32 = *(x_126);
+      let x_152 : f32 = *(x_96);
+      let x_153 : f32 = *(x_122);
+      let x_155 : f32 = *(x_101);
+      let x_156 : f32 = *(x_126);
+      param_4 = vec2<f32>((x_145 - x_146), (x_148 - x_149));
+      param_5 = vec2<f32>((x_152 - x_153), (x_155 - x_156));
+      let x_159 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+      pca = x_159;
+      let x_162 : bool = ((x_114 < 0.0) && (x_159 < 0.0));
+      x_169_phi = x_162;
+      if (!(x_162)) {
+        x_168 = ((x_114 >= 0.0) && (x_159 >= 0.0));
+        x_169_phi = x_168;
+      }
+      let x_169 : bool = x_169_phi;
+      if (!(x_169)) {
+        x_90 = true;
+        x_91 = 0;
+        x_173_phi = 0;
+        break;
+      }
+      x_90 = true;
+      x_91 = 1;
+      x_173_phi = 1;
+    }
+  }
+  let x_173 : i32 = x_173_phi;
+  return x_173;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_67 : vec4<f32> = gl_FragCoord;
+  let x_70 : vec2<f32> = x_24.resolution;
+  let x_71 : vec2<f32> = (vec2<f32>(x_67.x, x_67.y) / x_70);
+  pos = x_71;
+  param_6 = x_71;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_72 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_72 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm
new file mode 100644
index 0000000..43c7e0b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm
@@ -0,0 +1,250 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %cross2d_vf2_vf2_ "cross2d(vf2;vf2;"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle(vf2;vf2;vf2;vf2;"
+               OpName %p "p"
+               OpName %a_0 "a"
+               OpName %b_0 "b"
+               OpName %c "c"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %pbc "pbc"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %pca "pca"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %pos "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %34 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+        %int = OpTypeInt 32 1
+         %36 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+         %51 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+         %54 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+         %57 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %60 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %61 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %30
+         %62 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function
+    %param_5 = OpVariable %_ptr_Function_v2float Function
+    %param_6 = OpVariable %_ptr_Function_v2float Function
+    %param_7 = OpVariable %_ptr_Function_v2float Function
+    %param_8 = OpVariable %_ptr_Function_v2float Function
+         %63 = OpLoad %v4float %gl_FragCoord
+         %64 = OpVectorShuffle %v2float %63 %63 0 1
+         %65 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %66 = OpLoad %v2float %65
+         %67 = OpFDiv %v2float %64 %66
+               OpStore %pos %67
+         %68 = OpLoad %v2float %pos
+               OpStore %param_5 %68
+               OpStore %param_6 %51
+               OpStore %param_7 %54
+               OpStore %param_8 %57
+         %69 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_5 %param_6 %param_7 %param_8
+         %70 = OpIEqual %bool %69 %int_1
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpStore %_GLF_color %60
+               OpBranch %71
+         %73 = OpLabel
+               OpStore %_GLF_color %61
+               OpBranch %71
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%cross2d_vf2_vf2_ = OpFunction %float None %34
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %74 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpFMul %float %76 %78
+         %80 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %83 = OpLoad %float %82
+         %84 = OpFMul %float %81 %83
+         %85 = OpFSub %float %79 %84
+               OpReturnValue %85
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %36
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_0 = OpFunctionParameter %_ptr_Function_v2float
+        %b_0 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %86 = OpLabel
+        %pab = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v2float Function
+        %pbc = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+    %param_2 = OpVariable %_ptr_Function_v2float Function
+        %pca = OpVariable %_ptr_Function_float Function
+    %param_3 = OpVariable %_ptr_Function_v2float Function
+    %param_4 = OpVariable %_ptr_Function_v2float Function
+         %87 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Function_float %a_0 %uint_0
+         %90 = OpLoad %float %89
+         %91 = OpFSub %float %88 %90
+         %92 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Function_float %a_0 %uint_1
+         %95 = OpLoad %float %94
+         %96 = OpFSub %float %93 %95
+         %97 = OpCompositeConstruct %v2float %91 %96
+         %98 = OpAccessChain %_ptr_Function_float %b_0 %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpLoad %float %89
+        %101 = OpFSub %float %99 %100
+        %102 = OpAccessChain %_ptr_Function_float %b_0 %uint_1
+        %103 = OpLoad %float %102
+        %104 = OpLoad %float %94
+        %105 = OpFSub %float %103 %104
+        %106 = OpCompositeConstruct %v2float %101 %105
+               OpStore %param %97
+               OpStore %param_0 %106
+        %107 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_0
+               OpStore %pab %107
+        %108 = OpLoad %float %87
+        %109 = OpLoad %float %98
+        %110 = OpFSub %float %108 %109
+        %111 = OpLoad %float %92
+        %112 = OpLoad %float %102
+        %113 = OpFSub %float %111 %112
+        %114 = OpCompositeConstruct %v2float %110 %113
+        %115 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %116 = OpLoad %float %115
+        %117 = OpLoad %float %98
+        %118 = OpFSub %float %116 %117
+        %119 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %120 = OpLoad %float %119
+        %121 = OpLoad %float %102
+        %122 = OpFSub %float %120 %121
+        %123 = OpCompositeConstruct %v2float %118 %122
+               OpStore %param_1 %114
+               OpStore %param_2 %123
+        %124 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_1 %param_2
+               OpStore %pbc %124
+        %125 = OpLoad %float %pab
+        %126 = OpFOrdLessThan %bool %125 %float_0
+        %127 = OpLoad %float %pbc
+        %128 = OpFOrdLessThan %bool %127 %float_0
+        %129 = OpLogicalAnd %bool %126 %128
+        %130 = OpLogicalNot %bool %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+        %133 = OpLoad %float %pab
+        %134 = OpFOrdGreaterThanEqual %bool %133 %float_0
+        %135 = OpLoad %float %pbc
+        %136 = OpFOrdGreaterThanEqual %bool %135 %float_0
+        %137 = OpLogicalAnd %bool %134 %136
+               OpBranch %131
+        %131 = OpLabel
+        %138 = OpPhi %bool %129 %86 %137 %132
+        %139 = OpLogicalNot %bool %138
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %140
+        %141 = OpLabel
+               OpReturnValue %int_0
+        %140 = OpLabel
+        %142 = OpLoad %float %87
+        %143 = OpLoad %float %115
+        %144 = OpFSub %float %142 %143
+        %145 = OpLoad %float %92
+        %146 = OpLoad %float %119
+        %147 = OpFSub %float %145 %146
+        %148 = OpCompositeConstruct %v2float %144 %147
+        %149 = OpLoad %float %89
+        %150 = OpLoad %float %115
+        %151 = OpFSub %float %149 %150
+        %152 = OpLoad %float %94
+        %153 = OpLoad %float %119
+        %154 = OpFSub %float %152 %153
+        %155 = OpCompositeConstruct %v2float %151 %154
+               OpStore %param_3 %148
+               OpStore %param_4 %155
+        %156 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_3 %param_4
+               OpStore %pca %156
+        %157 = OpLoad %float %pab
+        %158 = OpFOrdLessThan %bool %157 %float_0
+        %159 = OpLoad %float %pca
+        %160 = OpFOrdLessThan %bool %159 %float_0
+        %161 = OpLogicalAnd %bool %158 %160
+        %162 = OpLogicalNot %bool %161
+               OpSelectionMerge %163 None
+               OpBranchConditional %162 %164 %163
+        %164 = OpLabel
+        %165 = OpLoad %float %pab
+        %166 = OpFOrdGreaterThanEqual %bool %165 %float_0
+        %167 = OpLoad %float %pca
+        %168 = OpFOrdGreaterThanEqual %bool %167 %float_0
+        %169 = OpLogicalAnd %bool %166 %168
+               OpBranch %163
+        %163 = OpLabel
+        %170 = OpPhi %bool %161 %140 %169 %164
+        %171 = OpLogicalNot %bool %170
+               OpSelectionMerge %172 None
+               OpBranchConditional %171 %173 %172
+        %173 = OpLabel
+               OpReturnValue %int_0
+        %172 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..421b7ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.hlsl
@@ -0,0 +1,141 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_24 : register(b0, space0) {
+  uint4 x_24[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float cross2d_vf2_vf2_(inout float2 a, inout float2 b) {
+  const float x_76 = a.x;
+  const float x_78 = b.y;
+  const float x_81 = b.x;
+  const float x_83 = a.y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a_1, inout float2 b_1, inout float2 c) {
+  float pab = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float pbc = 0.0f;
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float pca = 0.0f;
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_137 = false;
+  bool x_169 = false;
+  bool x_138_phi = false;
+  bool x_170_phi = false;
+  const float x_88 = p.x;
+  const float x_90 = a_1.x;
+  const float x_93 = p.y;
+  const float x_95 = a_1.y;
+  const float x_99 = b_1.x;
+  const float x_100 = a_1.x;
+  const float x_103 = b_1.y;
+  const float x_104 = a_1.y;
+  param = float2((x_88 - x_90), (x_93 - x_95));
+  param_1 = float2((x_99 - x_100), (x_103 - x_104));
+  const float x_107 = cross2d_vf2_vf2_(param, param_1);
+  pab = x_107;
+  const float x_108 = p.x;
+  const float x_109 = b_1.x;
+  const float x_111 = p.y;
+  const float x_112 = b_1.y;
+  const float x_116 = c.x;
+  const float x_117 = b_1.x;
+  const float x_120 = c.y;
+  const float x_121 = b_1.y;
+  param_2 = float2((x_108 - x_109), (x_111 - x_112));
+  param_3 = float2((x_116 - x_117), (x_120 - x_121));
+  const float x_124 = cross2d_vf2_vf2_(param_2, param_3);
+  pbc = x_124;
+  bool tint_tmp = (pab < 0.0f);
+  if (tint_tmp) {
+    tint_tmp = (pbc < 0.0f);
+  }
+  const bool x_129 = (tint_tmp);
+  x_138_phi = x_129;
+  if (!(x_129)) {
+    bool tint_tmp_1 = (pab >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (pbc >= 0.0f);
+    }
+    x_137 = (tint_tmp_1);
+    x_138_phi = x_137;
+  }
+  if (!(x_138_phi)) {
+    return 0;
+  }
+  const float x_142 = p.x;
+  const float x_143 = c.x;
+  const float x_145 = p.y;
+  const float x_146 = c.y;
+  const float x_149 = a_1.x;
+  const float x_150 = c.x;
+  const float x_152 = a_1.y;
+  const float x_153 = c.y;
+  param_4 = float2((x_142 - x_143), (x_145 - x_146));
+  param_5 = float2((x_149 - x_150), (x_152 - x_153));
+  const float x_156 = cross2d_vf2_vf2_(param_4, param_5);
+  pca = x_156;
+  bool tint_tmp_2 = (pab < 0.0f);
+  if (tint_tmp_2) {
+    tint_tmp_2 = (pca < 0.0f);
+  }
+  const bool x_161 = (tint_tmp_2);
+  x_170_phi = x_161;
+  if (!(x_161)) {
+    bool tint_tmp_3 = (pab >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (pca >= 0.0f);
+    }
+    x_169 = (tint_tmp_3);
+    x_170_phi = x_169;
+  }
+  if (!(x_170_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_63 = gl_FragCoord;
+  const float2 x_66 = asfloat(x_24[0].xy);
+  pos = (float2(x_63.x, x_63.y) / x_66);
+  param_6 = pos;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_69 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_69 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.msl
new file mode 100644
index 0000000..ed7f078
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.msl
@@ -0,0 +1,135 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float cross2d_vf2_vf2_(thread float2* const a, thread float2* const b) {
+  float const x_76 = (*(a)).x;
+  float const x_78 = (*(b)).y;
+  float const x_81 = (*(b)).x;
+  float const x_83 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(thread float2* const p, thread float2* const a_1, thread float2* const b_1, thread float2* const c) {
+  float pab = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float pbc = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float pca = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_137 = false;
+  bool x_169 = false;
+  bool x_138_phi = false;
+  bool x_170_phi = false;
+  float const x_88 = (*(p)).x;
+  float const x_90 = (*(a_1)).x;
+  float const x_93 = (*(p)).y;
+  float const x_95 = (*(a_1)).y;
+  float const x_99 = (*(b_1)).x;
+  float const x_100 = (*(a_1)).x;
+  float const x_103 = (*(b_1)).y;
+  float const x_104 = (*(a_1)).y;
+  param = float2((x_88 - x_90), (x_93 - x_95));
+  param_1 = float2((x_99 - x_100), (x_103 - x_104));
+  float const x_107 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_107;
+  float const x_108 = (*(p)).x;
+  float const x_109 = (*(b_1)).x;
+  float const x_111 = (*(p)).y;
+  float const x_112 = (*(b_1)).y;
+  float const x_116 = (*(c)).x;
+  float const x_117 = (*(b_1)).x;
+  float const x_120 = (*(c)).y;
+  float const x_121 = (*(b_1)).y;
+  param_2 = float2((x_108 - x_109), (x_111 - x_112));
+  param_3 = float2((x_116 - x_117), (x_120 - x_121));
+  float const x_124 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_124;
+  float const x_125 = pab;
+  float const x_127 = pbc;
+  bool const x_129 = ((x_125 < 0.0f) && (x_127 < 0.0f));
+  x_138_phi = x_129;
+  if (!(x_129)) {
+    float const x_133 = pab;
+    float const x_135 = pbc;
+    x_137 = ((x_133 >= 0.0f) && (x_135 >= 0.0f));
+    x_138_phi = x_137;
+  }
+  bool const x_138 = x_138_phi;
+  if (!(x_138)) {
+    return 0;
+  }
+  float const x_142 = (*(p)).x;
+  float const x_143 = (*(c)).x;
+  float const x_145 = (*(p)).y;
+  float const x_146 = (*(c)).y;
+  float const x_149 = (*(a_1)).x;
+  float const x_150 = (*(c)).x;
+  float const x_152 = (*(a_1)).y;
+  float const x_153 = (*(c)).y;
+  param_4 = float2((x_142 - x_143), (x_145 - x_146));
+  param_5 = float2((x_149 - x_150), (x_152 - x_153));
+  float const x_156 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_156;
+  float const x_157 = pab;
+  float const x_159 = pca;
+  bool const x_161 = ((x_157 < 0.0f) && (x_159 < 0.0f));
+  x_170_phi = x_161;
+  if (!(x_161)) {
+    float const x_165 = pab;
+    float const x_167 = pca;
+    x_169 = ((x_165 >= 0.0f) && (x_167 >= 0.0f));
+    x_170_phi = x_169;
+  }
+  bool const x_170 = x_170_phi;
+  if (!(x_170)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_24, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 pos = 0.0f;
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_63 = *(tint_symbol_5);
+  float2 const x_66 = x_24.resolution;
+  pos = (float2(x_63.x, x_63.y) / x_66);
+  float2 const x_68 = pos;
+  param_6 = x_68;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_69 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_24 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_24, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..dadcc8e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.spvasm
@@ -0,0 +1,343 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 264
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_24 "x_24"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %cross2d_vf2_vf2_ "cross2d_vf2_vf2_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a_1 "a_1"
+               OpName %b_1 "b_1"
+               OpName %c "c"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %pbc "pbc"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %pca "pca"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_137 "x_137"
+               OpName %x_169 "x_169"
+               OpName %x_138_phi "x_138_phi"
+               OpName %x_170_phi "x_170_phi"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_24 NonWritable
+               OpDecorate %x_24 DescriptorSet 0
+               OpDecorate %x_24 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_24 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+         %40 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+         %49 = OpConstantNull %float
+         %51 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %62 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %212 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %232 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %235 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %238 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+    %float_1 = OpConstant %float 1
+        %249 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %250 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %251 = OpTypeFunction %void %main_out
+%cross2d_vf2_vf2_ = OpFunction %float None %15
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %25 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpLoad %float %25
+         %29 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFMul %float %26 %30
+         %38 = OpFMul %float %33 %36
+         %39 = OpFSub %float %37 %38
+               OpReturnValue %39
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %40
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_1 = OpFunctionParameter %_ptr_Function_v2float
+        %b_1 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %47 = OpLabel
+        %pab = OpVariable %_ptr_Function_float Function %49
+      %param = OpVariable %_ptr_Function_v2float Function %51
+    %param_1 = OpVariable %_ptr_Function_v2float Function %51
+        %pbc = OpVariable %_ptr_Function_float Function %49
+    %param_2 = OpVariable %_ptr_Function_v2float Function %51
+    %param_3 = OpVariable %_ptr_Function_v2float Function %51
+        %pca = OpVariable %_ptr_Function_float Function %49
+    %param_4 = OpVariable %_ptr_Function_v2float Function %51
+    %param_5 = OpVariable %_ptr_Function_v2float Function %51
+      %x_137 = OpVariable %_ptr_Function_bool Function %62
+      %x_169 = OpVariable %_ptr_Function_bool Function %62
+  %x_138_phi = OpVariable %_ptr_Function_bool Function %62
+  %x_170_phi = OpVariable %_ptr_Function_bool Function %62
+         %67 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %68 = OpLoad %float %67
+         %70 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %74 = OpLoad %float %73
+         %76 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %77 = OpLoad %float %76
+         %79 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+         %80 = OpLoad %float %79
+         %82 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %83 = OpLoad %float %82
+         %85 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+         %86 = OpLoad %float %85
+         %88 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpFSub %float %68 %71
+         %91 = OpFSub %float %74 %77
+         %92 = OpCompositeConstruct %v2float %90 %91
+               OpStore %param %92
+         %93 = OpFSub %float %80 %83
+         %94 = OpFSub %float %86 %89
+         %95 = OpCompositeConstruct %v2float %93 %94
+               OpStore %param_1 %95
+         %96 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_1
+               OpStore %pab %96
+        %100 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %101 = OpLoad %float %100
+        %103 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %107 = OpLoad %float %106
+        %109 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %110 = OpLoad %float %109
+        %112 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %113 = OpLoad %float %112
+        %115 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %116 = OpLoad %float %115
+        %118 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %119 = OpLoad %float %118
+        %121 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %122 = OpLoad %float %121
+        %123 = OpFSub %float %101 %104
+        %124 = OpFSub %float %107 %110
+        %125 = OpCompositeConstruct %v2float %123 %124
+               OpStore %param_2 %125
+        %126 = OpFSub %float %113 %116
+        %127 = OpFSub %float %119 %122
+        %128 = OpCompositeConstruct %v2float %126 %127
+               OpStore %param_3 %128
+        %129 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_2 %param_3
+               OpStore %pbc %129
+        %132 = OpLoad %float %pab
+        %133 = OpLoad %float %pbc
+        %135 = OpFOrdLessThan %bool %132 %float_0
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %136
+        %137 = OpLabel
+        %138 = OpFOrdLessThan %bool %133 %float_0
+               OpBranch %136
+        %136 = OpLabel
+        %139 = OpPhi %bool %135 %47 %138 %137
+               OpStore %x_138_phi %139
+        %140 = OpLogicalNot %bool %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+        %143 = OpLoad %float %pab
+        %144 = OpLoad %float %pbc
+        %145 = OpFOrdGreaterThanEqual %bool %143 %float_0
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpFOrdGreaterThanEqual %bool %144 %float_0
+               OpBranch %146
+        %146 = OpLabel
+        %149 = OpPhi %bool %145 %142 %148 %147
+               OpStore %x_137 %149
+        %150 = OpLoad %bool %x_137
+               OpStore %x_138_phi %150
+               OpBranch %141
+        %141 = OpLabel
+        %151 = OpLoad %bool %x_138_phi
+        %152 = OpLogicalNot %bool %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+               OpReturnValue %int_0
+        %153 = OpLabel
+        %157 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %158 = OpLoad %float %157
+        %160 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %161 = OpLoad %float %160
+        %163 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %164 = OpLoad %float %163
+        %166 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %167 = OpLoad %float %166
+        %169 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %170 = OpLoad %float %169
+        %172 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %173 = OpLoad %float %172
+        %175 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %176 = OpLoad %float %175
+        %178 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %179 = OpLoad %float %178
+        %180 = OpFSub %float %158 %161
+        %181 = OpFSub %float %164 %167
+        %182 = OpCompositeConstruct %v2float %180 %181
+               OpStore %param_4 %182
+        %183 = OpFSub %float %170 %173
+        %184 = OpFSub %float %176 %179
+        %185 = OpCompositeConstruct %v2float %183 %184
+               OpStore %param_5 %185
+        %186 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_4 %param_5
+               OpStore %pca %186
+        %189 = OpLoad %float %pab
+        %190 = OpLoad %float %pca
+        %191 = OpFOrdLessThan %bool %189 %float_0
+               OpSelectionMerge %192 None
+               OpBranchConditional %191 %193 %192
+        %193 = OpLabel
+        %194 = OpFOrdLessThan %bool %190 %float_0
+               OpBranch %192
+        %192 = OpLabel
+        %195 = OpPhi %bool %191 %153 %194 %193
+               OpStore %x_170_phi %195
+        %196 = OpLogicalNot %bool %195
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+        %199 = OpLoad %float %pab
+        %200 = OpLoad %float %pca
+        %201 = OpFOrdGreaterThanEqual %bool %199 %float_0
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %202
+        %203 = OpLabel
+        %204 = OpFOrdGreaterThanEqual %bool %200 %float_0
+               OpBranch %202
+        %202 = OpLabel
+        %205 = OpPhi %bool %201 %198 %204 %203
+               OpStore %x_169 %205
+        %206 = OpLoad %bool %x_169
+               OpStore %x_170_phi %206
+               OpBranch %197
+        %197 = OpLabel
+        %207 = OpLoad %bool %x_170_phi
+        %208 = OpLogicalNot %bool %207
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %209
+        %210 = OpLabel
+               OpReturnValue %int_0
+        %209 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %212
+        %215 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %51
+    %param_6 = OpVariable %_ptr_Function_v2float Function %51
+    %param_7 = OpVariable %_ptr_Function_v2float Function %51
+    %param_8 = OpVariable %_ptr_Function_v2float Function %51
+    %param_9 = OpVariable %_ptr_Function_v2float Function %51
+        %221 = OpLoad %v4float %gl_FragCoord
+        %223 = OpAccessChain %_ptr_Uniform_v2float %x_24 %uint_0
+        %224 = OpLoad %v2float %223
+        %225 = OpCompositeExtract %float %221 0
+        %226 = OpCompositeExtract %float %221 1
+        %227 = OpCompositeConstruct %v2float %225 %226
+        %228 = OpFDiv %v2float %227 %224
+               OpStore %pos %228
+        %229 = OpLoad %v2float %pos
+               OpStore %param_6 %229
+               OpStore %param_7 %232
+               OpStore %param_8 %235
+               OpStore %param_9 %238
+        %239 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %244 = OpIEqual %bool %239 %int_1
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %247
+        %246 = OpLabel
+               OpStore %x_GLF_color %249
+               OpBranch %245
+        %247 = OpLabel
+               OpStore %x_GLF_color %250
+               OpBranch %245
+        %245 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %251
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %255 = OpLabel
+        %256 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %256
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %212
+        %258 = OpLabel
+        %259 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %259
+        %260 = OpFunctionCall %void %main_1
+        %262 = OpLoad %v4float %x_GLF_color
+        %263 = OpCompositeConstruct %main_out %262
+        %261 = OpFunctionCall %void %tint_symbol_3 %263
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..11cfd54
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.spvasm.expected.wgsl
@@ -0,0 +1,142 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_76 : f32 = (*(a)).x;
+  let x_78 : f32 = (*(b)).y;
+  let x_81 : f32 = (*(b)).x;
+  let x_83 : f32 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_137 : bool;
+  var x_169 : bool;
+  var x_138_phi : bool;
+  var x_170_phi : bool;
+  let x_87 : ptr<function, f32> = &((*(p)).x);
+  let x_88 : f32 = *(x_87);
+  let x_89 : ptr<function, f32> = &((*(a_1)).x);
+  let x_90 : f32 = *(x_89);
+  let x_92 : ptr<function, f32> = &((*(p)).y);
+  let x_93 : f32 = *(x_92);
+  let x_94 : ptr<function, f32> = &((*(a_1)).y);
+  let x_95 : f32 = *(x_94);
+  let x_98 : ptr<function, f32> = &((*(b_1)).x);
+  let x_99 : f32 = *(x_98);
+  let x_100 : f32 = *(x_89);
+  let x_102 : ptr<function, f32> = &((*(b_1)).y);
+  let x_103 : f32 = *(x_102);
+  let x_104 : f32 = *(x_94);
+  param = vec2<f32>((x_88 - x_90), (x_93 - x_95));
+  param_1 = vec2<f32>((x_99 - x_100), (x_103 - x_104));
+  let x_107 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_107;
+  let x_108 : f32 = *(x_87);
+  let x_109 : f32 = *(x_98);
+  let x_111 : f32 = *(x_92);
+  let x_112 : f32 = *(x_102);
+  let x_115 : ptr<function, f32> = &((*(c)).x);
+  let x_116 : f32 = *(x_115);
+  let x_117 : f32 = *(x_98);
+  let x_119 : ptr<function, f32> = &((*(c)).y);
+  let x_120 : f32 = *(x_119);
+  let x_121 : f32 = *(x_102);
+  param_2 = vec2<f32>((x_108 - x_109), (x_111 - x_112));
+  param_3 = vec2<f32>((x_116 - x_117), (x_120 - x_121));
+  let x_124 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_124;
+  let x_125 : f32 = pab;
+  let x_127 : f32 = pbc;
+  let x_129 : bool = ((x_125 < 0.0) && (x_127 < 0.0));
+  x_138_phi = x_129;
+  if (!(x_129)) {
+    let x_133 : f32 = pab;
+    let x_135 : f32 = pbc;
+    x_137 = ((x_133 >= 0.0) && (x_135 >= 0.0));
+    x_138_phi = x_137;
+  }
+  let x_138 : bool = x_138_phi;
+  if (!(x_138)) {
+    return 0;
+  }
+  let x_142 : f32 = *(x_87);
+  let x_143 : f32 = *(x_115);
+  let x_145 : f32 = *(x_92);
+  let x_146 : f32 = *(x_119);
+  let x_149 : f32 = *(x_89);
+  let x_150 : f32 = *(x_115);
+  let x_152 : f32 = *(x_94);
+  let x_153 : f32 = *(x_119);
+  param_4 = vec2<f32>((x_142 - x_143), (x_145 - x_146));
+  param_5 = vec2<f32>((x_149 - x_150), (x_152 - x_153));
+  let x_156 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_156;
+  let x_157 : f32 = pab;
+  let x_159 : f32 = pca;
+  let x_161 : bool = ((x_157 < 0.0) && (x_159 < 0.0));
+  x_170_phi = x_161;
+  if (!(x_161)) {
+    let x_165 : f32 = pab;
+    let x_167 : f32 = pca;
+    x_169 = ((x_165 >= 0.0) && (x_167 >= 0.0));
+    x_170_phi = x_169;
+  }
+  let x_170 : bool = x_170_phi;
+  if (!(x_170)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_66 : vec2<f32> = x_24.resolution;
+  pos = (vec2<f32>(x_63.x, x_63.y) / x_66);
+  let x_68 : vec2<f32> = pos;
+  param_6 = x_68;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_69 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
new file mode 100644
index 0000000..11cfd54
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
@@ -0,0 +1,142 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_76 : f32 = (*(a)).x;
+  let x_78 : f32 = (*(b)).y;
+  let x_81 : f32 = (*(b)).x;
+  let x_83 : f32 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_137 : bool;
+  var x_169 : bool;
+  var x_138_phi : bool;
+  var x_170_phi : bool;
+  let x_87 : ptr<function, f32> = &((*(p)).x);
+  let x_88 : f32 = *(x_87);
+  let x_89 : ptr<function, f32> = &((*(a_1)).x);
+  let x_90 : f32 = *(x_89);
+  let x_92 : ptr<function, f32> = &((*(p)).y);
+  let x_93 : f32 = *(x_92);
+  let x_94 : ptr<function, f32> = &((*(a_1)).y);
+  let x_95 : f32 = *(x_94);
+  let x_98 : ptr<function, f32> = &((*(b_1)).x);
+  let x_99 : f32 = *(x_98);
+  let x_100 : f32 = *(x_89);
+  let x_102 : ptr<function, f32> = &((*(b_1)).y);
+  let x_103 : f32 = *(x_102);
+  let x_104 : f32 = *(x_94);
+  param = vec2<f32>((x_88 - x_90), (x_93 - x_95));
+  param_1 = vec2<f32>((x_99 - x_100), (x_103 - x_104));
+  let x_107 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_107;
+  let x_108 : f32 = *(x_87);
+  let x_109 : f32 = *(x_98);
+  let x_111 : f32 = *(x_92);
+  let x_112 : f32 = *(x_102);
+  let x_115 : ptr<function, f32> = &((*(c)).x);
+  let x_116 : f32 = *(x_115);
+  let x_117 : f32 = *(x_98);
+  let x_119 : ptr<function, f32> = &((*(c)).y);
+  let x_120 : f32 = *(x_119);
+  let x_121 : f32 = *(x_102);
+  param_2 = vec2<f32>((x_108 - x_109), (x_111 - x_112));
+  param_3 = vec2<f32>((x_116 - x_117), (x_120 - x_121));
+  let x_124 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_124;
+  let x_125 : f32 = pab;
+  let x_127 : f32 = pbc;
+  let x_129 : bool = ((x_125 < 0.0) && (x_127 < 0.0));
+  x_138_phi = x_129;
+  if (!(x_129)) {
+    let x_133 : f32 = pab;
+    let x_135 : f32 = pbc;
+    x_137 = ((x_133 >= 0.0) && (x_135 >= 0.0));
+    x_138_phi = x_137;
+  }
+  let x_138 : bool = x_138_phi;
+  if (!(x_138)) {
+    return 0;
+  }
+  let x_142 : f32 = *(x_87);
+  let x_143 : f32 = *(x_115);
+  let x_145 : f32 = *(x_92);
+  let x_146 : f32 = *(x_119);
+  let x_149 : f32 = *(x_89);
+  let x_150 : f32 = *(x_115);
+  let x_152 : f32 = *(x_94);
+  let x_153 : f32 = *(x_119);
+  param_4 = vec2<f32>((x_142 - x_143), (x_145 - x_146));
+  param_5 = vec2<f32>((x_149 - x_150), (x_152 - x_153));
+  let x_156 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_156;
+  let x_157 : f32 = pab;
+  let x_159 : f32 = pca;
+  let x_161 : bool = ((x_157 < 0.0) && (x_159 < 0.0));
+  x_170_phi = x_161;
+  if (!(x_161)) {
+    let x_165 : f32 = pab;
+    let x_167 : f32 = pca;
+    x_169 = ((x_165 >= 0.0) && (x_167 >= 0.0));
+    x_170_phi = x_169;
+  }
+  let x_170 : bool = x_170_phi;
+  if (!(x_170)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_66 : vec2<f32> = x_24.resolution;
+  pos = (vec2<f32>(x_63.x, x_63.y) / x_66);
+  let x_68 : vec2<f32> = pos;
+  param_6 = x_68;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_69 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..421b7ed
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.hlsl
@@ -0,0 +1,141 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_24 : register(b0, space0) {
+  uint4 x_24[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float cross2d_vf2_vf2_(inout float2 a, inout float2 b) {
+  const float x_76 = a.x;
+  const float x_78 = b.y;
+  const float x_81 = b.x;
+  const float x_83 = a.y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a_1, inout float2 b_1, inout float2 c) {
+  float pab = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float pbc = 0.0f;
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float pca = 0.0f;
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_137 = false;
+  bool x_169 = false;
+  bool x_138_phi = false;
+  bool x_170_phi = false;
+  const float x_88 = p.x;
+  const float x_90 = a_1.x;
+  const float x_93 = p.y;
+  const float x_95 = a_1.y;
+  const float x_99 = b_1.x;
+  const float x_100 = a_1.x;
+  const float x_103 = b_1.y;
+  const float x_104 = a_1.y;
+  param = float2((x_88 - x_90), (x_93 - x_95));
+  param_1 = float2((x_99 - x_100), (x_103 - x_104));
+  const float x_107 = cross2d_vf2_vf2_(param, param_1);
+  pab = x_107;
+  const float x_108 = p.x;
+  const float x_109 = b_1.x;
+  const float x_111 = p.y;
+  const float x_112 = b_1.y;
+  const float x_116 = c.x;
+  const float x_117 = b_1.x;
+  const float x_120 = c.y;
+  const float x_121 = b_1.y;
+  param_2 = float2((x_108 - x_109), (x_111 - x_112));
+  param_3 = float2((x_116 - x_117), (x_120 - x_121));
+  const float x_124 = cross2d_vf2_vf2_(param_2, param_3);
+  pbc = x_124;
+  bool tint_tmp = (pab < 0.0f);
+  if (tint_tmp) {
+    tint_tmp = (pbc < 0.0f);
+  }
+  const bool x_129 = (tint_tmp);
+  x_138_phi = x_129;
+  if (!(x_129)) {
+    bool tint_tmp_1 = (pab >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (pbc >= 0.0f);
+    }
+    x_137 = (tint_tmp_1);
+    x_138_phi = x_137;
+  }
+  if (!(x_138_phi)) {
+    return 0;
+  }
+  const float x_142 = p.x;
+  const float x_143 = c.x;
+  const float x_145 = p.y;
+  const float x_146 = c.y;
+  const float x_149 = a_1.x;
+  const float x_150 = c.x;
+  const float x_152 = a_1.y;
+  const float x_153 = c.y;
+  param_4 = float2((x_142 - x_143), (x_145 - x_146));
+  param_5 = float2((x_149 - x_150), (x_152 - x_153));
+  const float x_156 = cross2d_vf2_vf2_(param_4, param_5);
+  pca = x_156;
+  bool tint_tmp_2 = (pab < 0.0f);
+  if (tint_tmp_2) {
+    tint_tmp_2 = (pca < 0.0f);
+  }
+  const bool x_161 = (tint_tmp_2);
+  x_170_phi = x_161;
+  if (!(x_161)) {
+    bool tint_tmp_3 = (pab >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (pca >= 0.0f);
+    }
+    x_169 = (tint_tmp_3);
+    x_170_phi = x_169;
+  }
+  if (!(x_170_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_63 = gl_FragCoord;
+  const float2 x_66 = asfloat(x_24[0].xy);
+  pos = (float2(x_63.x, x_63.y) / x_66);
+  param_6 = pos;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_69 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_69 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.msl
new file mode 100644
index 0000000..ed7f078
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.msl
@@ -0,0 +1,135 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float cross2d_vf2_vf2_(thread float2* const a, thread float2* const b) {
+  float const x_76 = (*(a)).x;
+  float const x_78 = (*(b)).y;
+  float const x_81 = (*(b)).x;
+  float const x_83 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(thread float2* const p, thread float2* const a_1, thread float2* const b_1, thread float2* const c) {
+  float pab = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float pbc = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float pca = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_137 = false;
+  bool x_169 = false;
+  bool x_138_phi = false;
+  bool x_170_phi = false;
+  float const x_88 = (*(p)).x;
+  float const x_90 = (*(a_1)).x;
+  float const x_93 = (*(p)).y;
+  float const x_95 = (*(a_1)).y;
+  float const x_99 = (*(b_1)).x;
+  float const x_100 = (*(a_1)).x;
+  float const x_103 = (*(b_1)).y;
+  float const x_104 = (*(a_1)).y;
+  param = float2((x_88 - x_90), (x_93 - x_95));
+  param_1 = float2((x_99 - x_100), (x_103 - x_104));
+  float const x_107 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_107;
+  float const x_108 = (*(p)).x;
+  float const x_109 = (*(b_1)).x;
+  float const x_111 = (*(p)).y;
+  float const x_112 = (*(b_1)).y;
+  float const x_116 = (*(c)).x;
+  float const x_117 = (*(b_1)).x;
+  float const x_120 = (*(c)).y;
+  float const x_121 = (*(b_1)).y;
+  param_2 = float2((x_108 - x_109), (x_111 - x_112));
+  param_3 = float2((x_116 - x_117), (x_120 - x_121));
+  float const x_124 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_124;
+  float const x_125 = pab;
+  float const x_127 = pbc;
+  bool const x_129 = ((x_125 < 0.0f) && (x_127 < 0.0f));
+  x_138_phi = x_129;
+  if (!(x_129)) {
+    float const x_133 = pab;
+    float const x_135 = pbc;
+    x_137 = ((x_133 >= 0.0f) && (x_135 >= 0.0f));
+    x_138_phi = x_137;
+  }
+  bool const x_138 = x_138_phi;
+  if (!(x_138)) {
+    return 0;
+  }
+  float const x_142 = (*(p)).x;
+  float const x_143 = (*(c)).x;
+  float const x_145 = (*(p)).y;
+  float const x_146 = (*(c)).y;
+  float const x_149 = (*(a_1)).x;
+  float const x_150 = (*(c)).x;
+  float const x_152 = (*(a_1)).y;
+  float const x_153 = (*(c)).y;
+  param_4 = float2((x_142 - x_143), (x_145 - x_146));
+  param_5 = float2((x_149 - x_150), (x_152 - x_153));
+  float const x_156 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_156;
+  float const x_157 = pab;
+  float const x_159 = pca;
+  bool const x_161 = ((x_157 < 0.0f) && (x_159 < 0.0f));
+  x_170_phi = x_161;
+  if (!(x_161)) {
+    float const x_165 = pab;
+    float const x_167 = pca;
+    x_169 = ((x_165 >= 0.0f) && (x_167 >= 0.0f));
+    x_170_phi = x_169;
+  }
+  bool const x_170 = x_170_phi;
+  if (!(x_170)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_24, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 pos = 0.0f;
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_63 = *(tint_symbol_5);
+  float2 const x_66 = x_24.resolution;
+  pos = (float2(x_63.x, x_63.y) / x_66);
+  float2 const x_68 = pos;
+  param_6 = x_68;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_69 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_24 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_24, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..dadcc8e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.spvasm
@@ -0,0 +1,343 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 264
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_24 "x_24"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %cross2d_vf2_vf2_ "cross2d_vf2_vf2_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a_1 "a_1"
+               OpName %b_1 "b_1"
+               OpName %c "c"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %pbc "pbc"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %pca "pca"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_137 "x_137"
+               OpName %x_169 "x_169"
+               OpName %x_138_phi "x_138_phi"
+               OpName %x_170_phi "x_170_phi"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_24 NonWritable
+               OpDecorate %x_24 DescriptorSet 0
+               OpDecorate %x_24 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_24 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+         %40 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+         %49 = OpConstantNull %float
+         %51 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %62 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %212 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %232 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %235 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %238 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+    %float_1 = OpConstant %float 1
+        %249 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %250 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %251 = OpTypeFunction %void %main_out
+%cross2d_vf2_vf2_ = OpFunction %float None %15
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %25 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpLoad %float %25
+         %29 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFMul %float %26 %30
+         %38 = OpFMul %float %33 %36
+         %39 = OpFSub %float %37 %38
+               OpReturnValue %39
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %40
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_1 = OpFunctionParameter %_ptr_Function_v2float
+        %b_1 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %47 = OpLabel
+        %pab = OpVariable %_ptr_Function_float Function %49
+      %param = OpVariable %_ptr_Function_v2float Function %51
+    %param_1 = OpVariable %_ptr_Function_v2float Function %51
+        %pbc = OpVariable %_ptr_Function_float Function %49
+    %param_2 = OpVariable %_ptr_Function_v2float Function %51
+    %param_3 = OpVariable %_ptr_Function_v2float Function %51
+        %pca = OpVariable %_ptr_Function_float Function %49
+    %param_4 = OpVariable %_ptr_Function_v2float Function %51
+    %param_5 = OpVariable %_ptr_Function_v2float Function %51
+      %x_137 = OpVariable %_ptr_Function_bool Function %62
+      %x_169 = OpVariable %_ptr_Function_bool Function %62
+  %x_138_phi = OpVariable %_ptr_Function_bool Function %62
+  %x_170_phi = OpVariable %_ptr_Function_bool Function %62
+         %67 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %68 = OpLoad %float %67
+         %70 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %74 = OpLoad %float %73
+         %76 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %77 = OpLoad %float %76
+         %79 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+         %80 = OpLoad %float %79
+         %82 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %83 = OpLoad %float %82
+         %85 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+         %86 = OpLoad %float %85
+         %88 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpFSub %float %68 %71
+         %91 = OpFSub %float %74 %77
+         %92 = OpCompositeConstruct %v2float %90 %91
+               OpStore %param %92
+         %93 = OpFSub %float %80 %83
+         %94 = OpFSub %float %86 %89
+         %95 = OpCompositeConstruct %v2float %93 %94
+               OpStore %param_1 %95
+         %96 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_1
+               OpStore %pab %96
+        %100 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %101 = OpLoad %float %100
+        %103 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %107 = OpLoad %float %106
+        %109 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %110 = OpLoad %float %109
+        %112 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %113 = OpLoad %float %112
+        %115 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %116 = OpLoad %float %115
+        %118 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %119 = OpLoad %float %118
+        %121 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %122 = OpLoad %float %121
+        %123 = OpFSub %float %101 %104
+        %124 = OpFSub %float %107 %110
+        %125 = OpCompositeConstruct %v2float %123 %124
+               OpStore %param_2 %125
+        %126 = OpFSub %float %113 %116
+        %127 = OpFSub %float %119 %122
+        %128 = OpCompositeConstruct %v2float %126 %127
+               OpStore %param_3 %128
+        %129 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_2 %param_3
+               OpStore %pbc %129
+        %132 = OpLoad %float %pab
+        %133 = OpLoad %float %pbc
+        %135 = OpFOrdLessThan %bool %132 %float_0
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %136
+        %137 = OpLabel
+        %138 = OpFOrdLessThan %bool %133 %float_0
+               OpBranch %136
+        %136 = OpLabel
+        %139 = OpPhi %bool %135 %47 %138 %137
+               OpStore %x_138_phi %139
+        %140 = OpLogicalNot %bool %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+        %143 = OpLoad %float %pab
+        %144 = OpLoad %float %pbc
+        %145 = OpFOrdGreaterThanEqual %bool %143 %float_0
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpFOrdGreaterThanEqual %bool %144 %float_0
+               OpBranch %146
+        %146 = OpLabel
+        %149 = OpPhi %bool %145 %142 %148 %147
+               OpStore %x_137 %149
+        %150 = OpLoad %bool %x_137
+               OpStore %x_138_phi %150
+               OpBranch %141
+        %141 = OpLabel
+        %151 = OpLoad %bool %x_138_phi
+        %152 = OpLogicalNot %bool %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+               OpReturnValue %int_0
+        %153 = OpLabel
+        %157 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %158 = OpLoad %float %157
+        %160 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %161 = OpLoad %float %160
+        %163 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %164 = OpLoad %float %163
+        %166 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %167 = OpLoad %float %166
+        %169 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %170 = OpLoad %float %169
+        %172 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %173 = OpLoad %float %172
+        %175 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %176 = OpLoad %float %175
+        %178 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %179 = OpLoad %float %178
+        %180 = OpFSub %float %158 %161
+        %181 = OpFSub %float %164 %167
+        %182 = OpCompositeConstruct %v2float %180 %181
+               OpStore %param_4 %182
+        %183 = OpFSub %float %170 %173
+        %184 = OpFSub %float %176 %179
+        %185 = OpCompositeConstruct %v2float %183 %184
+               OpStore %param_5 %185
+        %186 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_4 %param_5
+               OpStore %pca %186
+        %189 = OpLoad %float %pab
+        %190 = OpLoad %float %pca
+        %191 = OpFOrdLessThan %bool %189 %float_0
+               OpSelectionMerge %192 None
+               OpBranchConditional %191 %193 %192
+        %193 = OpLabel
+        %194 = OpFOrdLessThan %bool %190 %float_0
+               OpBranch %192
+        %192 = OpLabel
+        %195 = OpPhi %bool %191 %153 %194 %193
+               OpStore %x_170_phi %195
+        %196 = OpLogicalNot %bool %195
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+        %199 = OpLoad %float %pab
+        %200 = OpLoad %float %pca
+        %201 = OpFOrdGreaterThanEqual %bool %199 %float_0
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %202
+        %203 = OpLabel
+        %204 = OpFOrdGreaterThanEqual %bool %200 %float_0
+               OpBranch %202
+        %202 = OpLabel
+        %205 = OpPhi %bool %201 %198 %204 %203
+               OpStore %x_169 %205
+        %206 = OpLoad %bool %x_169
+               OpStore %x_170_phi %206
+               OpBranch %197
+        %197 = OpLabel
+        %207 = OpLoad %bool %x_170_phi
+        %208 = OpLogicalNot %bool %207
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %209
+        %210 = OpLabel
+               OpReturnValue %int_0
+        %209 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %212
+        %215 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %51
+    %param_6 = OpVariable %_ptr_Function_v2float Function %51
+    %param_7 = OpVariable %_ptr_Function_v2float Function %51
+    %param_8 = OpVariable %_ptr_Function_v2float Function %51
+    %param_9 = OpVariable %_ptr_Function_v2float Function %51
+        %221 = OpLoad %v4float %gl_FragCoord
+        %223 = OpAccessChain %_ptr_Uniform_v2float %x_24 %uint_0
+        %224 = OpLoad %v2float %223
+        %225 = OpCompositeExtract %float %221 0
+        %226 = OpCompositeExtract %float %221 1
+        %227 = OpCompositeConstruct %v2float %225 %226
+        %228 = OpFDiv %v2float %227 %224
+               OpStore %pos %228
+        %229 = OpLoad %v2float %pos
+               OpStore %param_6 %229
+               OpStore %param_7 %232
+               OpStore %param_8 %235
+               OpStore %param_9 %238
+        %239 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %244 = OpIEqual %bool %239 %int_1
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %247
+        %246 = OpLabel
+               OpStore %x_GLF_color %249
+               OpBranch %245
+        %247 = OpLabel
+               OpStore %x_GLF_color %250
+               OpBranch %245
+        %245 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %251
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %255 = OpLabel
+        %256 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %256
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %212
+        %258 = OpLabel
+        %259 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %259
+        %260 = OpFunctionCall %void %main_1
+        %262 = OpLoad %v4float %x_GLF_color
+        %263 = OpCompositeConstruct %main_out %262
+        %261 = OpFunctionCall %void %tint_symbol_3 %263
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..11cfd54
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl.expected.wgsl
@@ -0,0 +1,142 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_76 : f32 = (*(a)).x;
+  let x_78 : f32 = (*(b)).y;
+  let x_81 : f32 = (*(b)).x;
+  let x_83 : f32 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_137 : bool;
+  var x_169 : bool;
+  var x_138_phi : bool;
+  var x_170_phi : bool;
+  let x_87 : ptr<function, f32> = &((*(p)).x);
+  let x_88 : f32 = *(x_87);
+  let x_89 : ptr<function, f32> = &((*(a_1)).x);
+  let x_90 : f32 = *(x_89);
+  let x_92 : ptr<function, f32> = &((*(p)).y);
+  let x_93 : f32 = *(x_92);
+  let x_94 : ptr<function, f32> = &((*(a_1)).y);
+  let x_95 : f32 = *(x_94);
+  let x_98 : ptr<function, f32> = &((*(b_1)).x);
+  let x_99 : f32 = *(x_98);
+  let x_100 : f32 = *(x_89);
+  let x_102 : ptr<function, f32> = &((*(b_1)).y);
+  let x_103 : f32 = *(x_102);
+  let x_104 : f32 = *(x_94);
+  param = vec2<f32>((x_88 - x_90), (x_93 - x_95));
+  param_1 = vec2<f32>((x_99 - x_100), (x_103 - x_104));
+  let x_107 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_107;
+  let x_108 : f32 = *(x_87);
+  let x_109 : f32 = *(x_98);
+  let x_111 : f32 = *(x_92);
+  let x_112 : f32 = *(x_102);
+  let x_115 : ptr<function, f32> = &((*(c)).x);
+  let x_116 : f32 = *(x_115);
+  let x_117 : f32 = *(x_98);
+  let x_119 : ptr<function, f32> = &((*(c)).y);
+  let x_120 : f32 = *(x_119);
+  let x_121 : f32 = *(x_102);
+  param_2 = vec2<f32>((x_108 - x_109), (x_111 - x_112));
+  param_3 = vec2<f32>((x_116 - x_117), (x_120 - x_121));
+  let x_124 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_124;
+  let x_125 : f32 = pab;
+  let x_127 : f32 = pbc;
+  let x_129 : bool = ((x_125 < 0.0) && (x_127 < 0.0));
+  x_138_phi = x_129;
+  if (!(x_129)) {
+    let x_133 : f32 = pab;
+    let x_135 : f32 = pbc;
+    x_137 = ((x_133 >= 0.0) && (x_135 >= 0.0));
+    x_138_phi = x_137;
+  }
+  let x_138 : bool = x_138_phi;
+  if (!(x_138)) {
+    return 0;
+  }
+  let x_142 : f32 = *(x_87);
+  let x_143 : f32 = *(x_115);
+  let x_145 : f32 = *(x_92);
+  let x_146 : f32 = *(x_119);
+  let x_149 : f32 = *(x_89);
+  let x_150 : f32 = *(x_115);
+  let x_152 : f32 = *(x_94);
+  let x_153 : f32 = *(x_119);
+  param_4 = vec2<f32>((x_142 - x_143), (x_145 - x_146));
+  param_5 = vec2<f32>((x_149 - x_150), (x_152 - x_153));
+  let x_156 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_156;
+  let x_157 : f32 = pab;
+  let x_159 : f32 = pca;
+  let x_161 : bool = ((x_157 < 0.0) && (x_159 < 0.0));
+  x_170_phi = x_161;
+  if (!(x_161)) {
+    let x_165 : f32 = pab;
+    let x_167 : f32 = pca;
+    x_169 = ((x_165 >= 0.0) && (x_167 >= 0.0));
+    x_170_phi = x_169;
+  }
+  let x_170 : bool = x_170_phi;
+  if (!(x_170)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_66 : vec2<f32> = x_24.resolution;
+  pos = (vec2<f32>(x_63.x, x_63.y) / x_66);
+  let x_68 : vec2<f32> = pos;
+  param_6 = x_68;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_69 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm
new file mode 100644
index 0000000..8a7252f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm
@@ -0,0 +1,302 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %cross2d_vf2_vf2_ "cross2d(vf2;vf2;"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle(vf2;vf2;vf2;vf2;"
+               OpName %p "p"
+               OpName %a_0 "a"
+               OpName %b_0 "b"
+               OpName %c "c"
+               OpName %var_y "var_y"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %clamp_y "clamp_y"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %pbc "pbc"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %pca "pca"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %pos "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %36 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+        %int = OpTypeInt 32 1
+         %38 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+       %true = OpConstantTrue %bool
+     %v2bool = OpTypeVector %bool 2
+      %false = OpConstantFalse %bool
+         %51 = OpConstantComposite %v2bool %false %false
+   %float_n1 = OpConstant %float -1
+    %float_0 = OpConstant %float 0
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+         %60 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+         %63 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+         %66 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %68 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %69 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+         %70 = OpUndef %float
+       %main = OpFunction %void None %32
+         %71 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function
+    %param_5 = OpVariable %_ptr_Function_v2float Function
+    %param_6 = OpVariable %_ptr_Function_v2float Function
+    %param_7 = OpVariable %_ptr_Function_v2float Function
+    %param_8 = OpVariable %_ptr_Function_v2float Function
+         %72 = OpLoad %v4float %gl_FragCoord
+         %73 = OpVectorShuffle %v2float %72 %72 0 1
+         %74 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %75 = OpLoad %v2float %74
+         %76 = OpFDiv %v2float %73 %75
+               OpStore %pos %76
+         %77 = OpLoad %v2float %pos
+               OpStore %param_5 %77
+               OpStore %param_6 %60
+               OpStore %param_7 %63
+               OpStore %param_8 %66
+         %78 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_5 %param_6 %param_7 %param_8
+         %79 = OpIEqual %bool %78 %int_1
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+               OpStore %_GLF_color %68
+               OpBranch %80
+         %82 = OpLabel
+               OpStore %_GLF_color %69
+               OpBranch %80
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%cross2d_vf2_vf2_ = OpFunction %float None %36
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %83 = OpLabel
+         %84 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %85 = OpLoad %float %84
+         %86 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %87 = OpLoad %float %86
+         %88 = OpFMul %float %85 %87
+         %89 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %92 = OpLoad %float %91
+         %93 = OpFMul %float %90 %92
+         %94 = OpFSub %float %88 %93
+               OpReturnValue %94
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %38
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_0 = OpFunctionParameter %_ptr_Function_v2float
+        %b_0 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %95 = OpLabel
+      %var_y = OpVariable %_ptr_Function_float Function
+         %96 = OpVariable %_ptr_Function_float Function
+         %97 = OpVariable %_ptr_Function_float Function
+    %clamp_y = OpVariable %_ptr_Function_float Function
+        %pab = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v2float Function
+        %pbc = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+    %param_2 = OpVariable %_ptr_Function_v2float Function
+        %pca = OpVariable %_ptr_Function_float Function
+    %param_3 = OpVariable %_ptr_Function_v2float Function
+    %param_4 = OpVariable %_ptr_Function_v2float Function
+         %98 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %101 = OpLoad %float %100
+        %102 = OpFOrdEqual %bool %99 %101
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %105
+        %104 = OpLabel
+        %106 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %107 = OpLoad %float %106
+        %108 = OpCompositeConstruct %v2float %70 %107
+               OpSelectionMerge %109 None
+               OpBranchConditional %true %110 %111
+        %110 = OpLabel
+        %112 = OpLoad %float %106
+               OpStore %97 %112
+               OpBranch %109
+        %111 = OpLabel
+               OpStore %97 %float_1
+               OpBranch %109
+        %109 = OpLabel
+        %113 = OpLoad %float %97
+        %114 = OpLoad %float %106
+        %115 = OpExtInst %float %1 FMax %113 %114
+        %116 = OpCompositeConstruct %v2float %float_1 %115
+        %117 = OpVectorShuffle %v2float %116 %108 2 3
+               OpStore %96 %107
+               OpBranch %103
+        %105 = OpLabel
+               OpStore %96 %float_n1
+               OpBranch %103
+        %103 = OpLabel
+        %118 = OpLoad %float %96
+               OpStore %var_y %118
+        %119 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %120 = OpLoad %float %119
+        %121 = OpLoad %float %119
+        %122 = OpLoad %float %var_y
+        %123 = OpExtInst %float %1 FClamp %120 %121 %122
+               OpStore %clamp_y %123
+        %124 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpAccessChain %_ptr_Function_float %a_0 %uint_0
+        %127 = OpLoad %float %126
+        %128 = OpFSub %float %125 %127
+        %129 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %130 = OpLoad %float %129
+        %131 = OpAccessChain %_ptr_Function_float %a_0 %uint_1
+        %132 = OpLoad %float %131
+        %133 = OpFSub %float %130 %132
+        %134 = OpCompositeConstruct %v2float %128 %133
+        %135 = OpAccessChain %_ptr_Function_float %b_0 %uint_0
+        %136 = OpLoad %float %135
+        %137 = OpLoad %float %126
+        %138 = OpFSub %float %136 %137
+        %139 = OpAccessChain %_ptr_Function_float %b_0 %uint_1
+        %140 = OpLoad %float %139
+        %141 = OpLoad %float %131
+        %142 = OpFSub %float %140 %141
+        %143 = OpCompositeConstruct %v2float %138 %142
+               OpStore %param %134
+               OpStore %param_0 %143
+        %144 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_0
+               OpStore %pab %144
+        %145 = OpLoad %float %124
+        %146 = OpLoad %float %135
+        %147 = OpFSub %float %145 %146
+        %148 = OpLoad %float %129
+        %149 = OpLoad %float %139
+        %150 = OpFSub %float %148 %149
+        %151 = OpCompositeConstruct %v2float %147 %150
+        %152 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpLoad %float %135
+        %155 = OpFSub %float %153 %154
+        %156 = OpLoad %float %clamp_y
+        %157 = OpLoad %float %139
+        %158 = OpFSub %float %156 %157
+        %159 = OpCompositeConstruct %v2float %155 %158
+               OpStore %param_1 %151
+               OpStore %param_2 %159
+        %160 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_1 %param_2
+               OpStore %pbc %160
+        %161 = OpLoad %float %pab
+        %162 = OpFOrdLessThan %bool %161 %float_0
+        %163 = OpLoad %float %pbc
+        %164 = OpFOrdLessThan %bool %163 %float_0
+        %165 = OpLogicalAnd %bool %162 %164
+        %166 = OpLogicalNot %bool %165
+               OpSelectionMerge %167 None
+               OpBranchConditional %166 %168 %167
+        %168 = OpLabel
+        %169 = OpLoad %float %pab
+        %170 = OpFOrdGreaterThanEqual %bool %169 %float_0
+        %171 = OpLoad %float %pbc
+        %172 = OpFOrdGreaterThanEqual %bool %171 %float_0
+        %173 = OpLogicalAnd %bool %170 %172
+               OpBranch %167
+        %167 = OpLabel
+        %174 = OpPhi %bool %165 %103 %173 %168
+        %175 = OpLogicalNot %bool %174
+               OpSelectionMerge %176 None
+               OpBranchConditional %175 %177 %176
+        %177 = OpLabel
+               OpReturnValue %int_0
+        %176 = OpLabel
+        %178 = OpLoad %float %124
+        %179 = OpLoad %float %152
+        %180 = OpFSub %float %178 %179
+        %181 = OpLoad %float %129
+        %182 = OpLoad %float %119
+        %183 = OpFSub %float %181 %182
+        %184 = OpCompositeConstruct %v2float %180 %183
+        %185 = OpLoad %float %126
+        %186 = OpLoad %float %152
+        %187 = OpFSub %float %185 %186
+        %188 = OpLoad %float %131
+        %189 = OpLoad %float %119
+        %190 = OpFSub %float %188 %189
+        %191 = OpCompositeConstruct %v2float %187 %190
+               OpStore %param_3 %184
+               OpStore %param_4 %191
+        %192 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_3 %param_4
+               OpStore %pca %192
+        %193 = OpLoad %float %pab
+        %194 = OpFOrdLessThan %bool %193 %float_0
+        %195 = OpLoad %float %pca
+        %196 = OpFOrdLessThan %bool %195 %float_0
+        %197 = OpLogicalAnd %bool %194 %196
+        %198 = OpLogicalNot %bool %197
+               OpSelectionMerge %199 None
+               OpBranchConditional %198 %200 %199
+        %200 = OpLabel
+        %201 = OpLoad %float %pab
+        %202 = OpFOrdGreaterThanEqual %bool %201 %float_0
+        %203 = OpLoad %float %pca
+        %204 = OpFOrdGreaterThanEqual %bool %203 %float_0
+        %205 = OpLogicalAnd %bool %202 %204
+               OpBranch %199
+        %199 = OpLabel
+        %206 = OpPhi %bool %197 %176 %205 %200
+        %207 = OpLogicalNot %bool %206
+               OpSelectionMerge %208 None
+               OpBranchConditional %207 %209 %208
+        %209 = OpLabel
+               OpReturnValue %int_0
+        %208 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..75aaaf6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.hlsl
@@ -0,0 +1,168 @@
+cbuffer cbuffer_x_15 : register(b0, space0) {
+  uint4 x_15[1];
+};
+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);
+
+float cross2d_vf2_vf2_(inout float2 a, inout float2 b) {
+  const float x_85 = a.x;
+  const float x_87 = b.y;
+  const float x_90 = b.x;
+  const float x_92 = a.y;
+  return ((x_85 * x_87) - (x_90 * x_92));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a_1, inout float2 b_1, inout float2 c) {
+  float var_y = 0.0f;
+  float x_96 = 0.0f;
+  float x_97 = 0.0f;
+  float clamp_y = 0.0f;
+  float pab = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float pbc = 0.0f;
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float pca = 0.0f;
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_173 = false;
+  bool x_205 = false;
+  bool x_174_phi = false;
+  bool x_206_phi = false;
+  const float x_99 = asfloat(x_15[0].x);
+  const float x_101 = asfloat(x_15[0].y);
+  if ((x_99 == x_101)) {
+    const float x_107 = c.y;
+    const float2 x_108 = float2(0.0f, x_107);
+    if (true) {
+      const float x_112 = c.y;
+      x_97 = x_112;
+    } else {
+      x_97 = 1.0f;
+    }
+    const float x_113 = x_97;
+    const float x_114 = c.y;
+    const float2 x_116 = float2(1.0f, max(x_113, x_114));
+    const float2 x_117 = float2(x_108.x, x_108.y);
+    x_96 = x_107;
+  } else {
+    x_96 = -1.0f;
+  }
+  var_y = x_96;
+  const float x_120 = c.y;
+  const float x_121 = c.y;
+  clamp_y = clamp(x_120, x_121, var_y);
+  const float x_125 = p.x;
+  const float x_127 = a_1.x;
+  const float x_130 = p.y;
+  const float x_132 = a_1.y;
+  const float x_136 = b_1.x;
+  const float x_137 = a_1.x;
+  const float x_140 = b_1.y;
+  const float x_141 = a_1.y;
+  param = float2((x_125 - x_127), (x_130 - x_132));
+  param_1 = float2((x_136 - x_137), (x_140 - x_141));
+  const float x_144 = cross2d_vf2_vf2_(param, param_1);
+  pab = x_144;
+  const float x_145 = p.x;
+  const float x_146 = b_1.x;
+  const float x_148 = p.y;
+  const float x_149 = b_1.y;
+  const float x_153 = c.x;
+  const float x_154 = b_1.x;
+  const float x_156 = clamp_y;
+  const float x_157 = b_1.y;
+  param_2 = float2((x_145 - x_146), (x_148 - x_149));
+  param_3 = float2((x_153 - x_154), (x_156 - x_157));
+  const float x_160 = cross2d_vf2_vf2_(param_2, param_3);
+  pbc = x_160;
+  bool tint_tmp = (pab < 0.0f);
+  if (tint_tmp) {
+    tint_tmp = (pbc < 0.0f);
+  }
+  const bool x_165 = (tint_tmp);
+  x_174_phi = x_165;
+  if (!(x_165)) {
+    bool tint_tmp_1 = (pab >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (pbc >= 0.0f);
+    }
+    x_173 = (tint_tmp_1);
+    x_174_phi = x_173;
+  }
+  if (!(x_174_phi)) {
+    return 0;
+  }
+  const float x_178 = p.x;
+  const float x_179 = c.x;
+  const float x_181 = p.y;
+  const float x_182 = c.y;
+  const float x_185 = a_1.x;
+  const float x_186 = c.x;
+  const float x_188 = a_1.y;
+  const float x_189 = c.y;
+  param_4 = float2((x_178 - x_179), (x_181 - x_182));
+  param_5 = float2((x_185 - x_186), (x_188 - x_189));
+  const float x_192 = cross2d_vf2_vf2_(param_4, param_5);
+  pca = x_192;
+  bool tint_tmp_2 = (pab < 0.0f);
+  if (tint_tmp_2) {
+    tint_tmp_2 = (pca < 0.0f);
+  }
+  const bool x_197 = (tint_tmp_2);
+  x_206_phi = x_197;
+  if (!(x_197)) {
+    bool tint_tmp_3 = (pab >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (pca >= 0.0f);
+    }
+    x_205 = (tint_tmp_3);
+    x_206_phi = x_205;
+  }
+  if (!(x_206_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_72 = gl_FragCoord;
+  const float2 x_75 = asfloat(x_15[0].xy);
+  pos = (float2(x_72.x, x_72.y) / x_75);
+  param_6 = pos;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_78 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_78 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.msl
new file mode 100644
index 0000000..d0400d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.msl
@@ -0,0 +1,164 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float cross2d_vf2_vf2_(thread float2* const a, thread float2* const b) {
+  float const x_85 = (*(a)).x;
+  float const x_87 = (*(b)).y;
+  float const x_90 = (*(b)).x;
+  float const x_92 = (*(a)).y;
+  return ((x_85 * x_87) - (x_90 * x_92));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(constant buf0& x_15, thread float2* const p, thread float2* const a_1, thread float2* const b_1, thread float2* const c) {
+  float var_y = 0.0f;
+  float x_96 = 0.0f;
+  float x_97 = 0.0f;
+  float clamp_y = 0.0f;
+  float pab = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float pbc = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float pca = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_173 = false;
+  bool x_205 = false;
+  bool x_174_phi = false;
+  bool x_206_phi = false;
+  float const x_99 = x_15.resolution.x;
+  float const x_101 = x_15.resolution.y;
+  if ((x_99 == x_101)) {
+    float const x_107 = (*(c)).y;
+    float2 const x_108 = float2(0.0f, x_107);
+    if (true) {
+      float const x_112 = (*(c)).y;
+      x_97 = x_112;
+    } else {
+      x_97 = 1.0f;
+    }
+    float const x_113 = x_97;
+    float const x_114 = (*(c)).y;
+    float2 const x_116 = float2(1.0f, fmax(x_113, x_114));
+    float2 const x_117 = float2(x_108.x, x_108.y);
+    x_96 = x_107;
+  } else {
+    x_96 = -1.0f;
+  }
+  float const x_118 = x_96;
+  var_y = x_118;
+  float const x_120 = (*(c)).y;
+  float const x_121 = (*(c)).y;
+  float const x_122 = var_y;
+  clamp_y = clamp(x_120, x_121, x_122);
+  float const x_125 = (*(p)).x;
+  float const x_127 = (*(a_1)).x;
+  float const x_130 = (*(p)).y;
+  float const x_132 = (*(a_1)).y;
+  float const x_136 = (*(b_1)).x;
+  float const x_137 = (*(a_1)).x;
+  float const x_140 = (*(b_1)).y;
+  float const x_141 = (*(a_1)).y;
+  param = float2((x_125 - x_127), (x_130 - x_132));
+  param_1 = float2((x_136 - x_137), (x_140 - x_141));
+  float const x_144 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_144;
+  float const x_145 = (*(p)).x;
+  float const x_146 = (*(b_1)).x;
+  float const x_148 = (*(p)).y;
+  float const x_149 = (*(b_1)).y;
+  float const x_153 = (*(c)).x;
+  float const x_154 = (*(b_1)).x;
+  float const x_156 = clamp_y;
+  float const x_157 = (*(b_1)).y;
+  param_2 = float2((x_145 - x_146), (x_148 - x_149));
+  param_3 = float2((x_153 - x_154), (x_156 - x_157));
+  float const x_160 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_160;
+  float const x_161 = pab;
+  float const x_163 = pbc;
+  bool const x_165 = ((x_161 < 0.0f) && (x_163 < 0.0f));
+  x_174_phi = x_165;
+  if (!(x_165)) {
+    float const x_169 = pab;
+    float const x_171 = pbc;
+    x_173 = ((x_169 >= 0.0f) && (x_171 >= 0.0f));
+    x_174_phi = x_173;
+  }
+  bool const x_174 = x_174_phi;
+  if (!(x_174)) {
+    return 0;
+  }
+  float const x_178 = (*(p)).x;
+  float const x_179 = (*(c)).x;
+  float const x_181 = (*(p)).y;
+  float const x_182 = (*(c)).y;
+  float const x_185 = (*(a_1)).x;
+  float const x_186 = (*(c)).x;
+  float const x_188 = (*(a_1)).y;
+  float const x_189 = (*(c)).y;
+  param_4 = float2((x_178 - x_179), (x_181 - x_182));
+  param_5 = float2((x_185 - x_186), (x_188 - x_189));
+  float const x_192 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_192;
+  float const x_193 = pab;
+  float const x_195 = pca;
+  bool const x_197 = ((x_193 < 0.0f) && (x_195 < 0.0f));
+  x_206_phi = x_197;
+  if (!(x_197)) {
+    float const x_201 = pab;
+    float const x_203 = pca;
+    x_205 = ((x_201 >= 0.0f) && (x_203 >= 0.0f));
+    x_206_phi = x_205;
+  }
+  bool const x_206 = x_206_phi;
+  if (!(x_206)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_15, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 pos = 0.0f;
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_72 = *(tint_symbol_5);
+  float2 const x_75 = x_15.resolution;
+  pos = (float2(x_72.x, x_72.y) / x_75);
+  float2 const x_77 = pos;
+  param_6 = x_77;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_78 = pointInTriangle_vf2_vf2_vf2_vf2_(x_15, &(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_78 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_15 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_15, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..98ab5e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.spvasm
@@ -0,0 +1,399 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 306
+; Schema: 0
+               OpCapability Shader
+         %97 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_15 "x_15"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %cross2d_vf2_vf2_ "cross2d_vf2_vf2_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a_1 "a_1"
+               OpName %b_1 "b_1"
+               OpName %c "c"
+               OpName %var_y "var_y"
+               OpName %x_96 "x_96"
+               OpName %x_97 "x_97"
+               OpName %clamp_y "clamp_y"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %pbc "pbc"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %pca "pca"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_173 "x_173"
+               OpName %x_205 "x_205"
+               OpName %x_174_phi "x_174_phi"
+               OpName %x_206_phi "x_206_phi"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_15 NonWritable
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_15 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+         %40 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+         %49 = OpConstantNull %float
+         %55 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %66 = OpConstantNull %bool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+   %float_n1 = OpConstant %float -1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %255 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %275 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %278 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %281 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+        %291 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %292 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %293 = OpTypeFunction %void %main_out
+%cross2d_vf2_vf2_ = OpFunction %float None %15
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %25 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpLoad %float %25
+         %29 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFMul %float %26 %30
+         %38 = OpFMul %float %33 %36
+         %39 = OpFSub %float %37 %38
+               OpReturnValue %39
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %40
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_1 = OpFunctionParameter %_ptr_Function_v2float
+        %b_1 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %47 = OpLabel
+      %var_y = OpVariable %_ptr_Function_float Function %49
+       %x_96 = OpVariable %_ptr_Function_float Function %49
+       %x_97 = OpVariable %_ptr_Function_float Function %49
+    %clamp_y = OpVariable %_ptr_Function_float Function %49
+        %pab = OpVariable %_ptr_Function_float Function %49
+      %param = OpVariable %_ptr_Function_v2float Function %55
+    %param_1 = OpVariable %_ptr_Function_v2float Function %55
+        %pbc = OpVariable %_ptr_Function_float Function %49
+    %param_2 = OpVariable %_ptr_Function_v2float Function %55
+    %param_3 = OpVariable %_ptr_Function_v2float Function %55
+        %pca = OpVariable %_ptr_Function_float Function %49
+    %param_4 = OpVariable %_ptr_Function_v2float Function %55
+    %param_5 = OpVariable %_ptr_Function_v2float Function %55
+      %x_173 = OpVariable %_ptr_Function_bool Function %66
+      %x_205 = OpVariable %_ptr_Function_bool Function %66
+  %x_174_phi = OpVariable %_ptr_Function_bool Function %66
+  %x_206_phi = OpVariable %_ptr_Function_bool Function %66
+         %71 = OpAccessChain %_ptr_Uniform_float %x_15 %uint_0 %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Uniform_float %x_15 %uint_0 %uint_1
+         %74 = OpLoad %float %73
+         %75 = OpFOrdEqual %bool %72 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+         %80 = OpAccessChain %_ptr_Function_float %c %uint_1
+         %81 = OpLoad %float %80
+         %83 = OpCompositeConstruct %v2float %float_0 %81
+               OpSelectionMerge %85 None
+               OpBranchConditional %true %86 %87
+         %86 = OpLabel
+         %89 = OpAccessChain %_ptr_Function_float %c %uint_1
+         %90 = OpLoad %float %89
+               OpStore %x_97 %90
+               OpBranch %85
+         %87 = OpLabel
+               OpStore %x_97 %float_1
+               OpBranch %85
+         %85 = OpLabel
+         %92 = OpLoad %float %x_97
+         %94 = OpAccessChain %_ptr_Function_float %c %uint_1
+         %95 = OpLoad %float %94
+         %96 = OpExtInst %float %97 NMax %92 %95
+         %98 = OpCompositeConstruct %v2float %float_1 %96
+         %99 = OpCompositeExtract %float %83 0
+        %100 = OpCompositeExtract %float %83 1
+        %101 = OpCompositeConstruct %v2float %99 %100
+               OpStore %x_96 %81
+               OpBranch %76
+         %78 = OpLabel
+               OpStore %x_96 %float_n1
+               OpBranch %76
+         %76 = OpLabel
+        %103 = OpLoad %float %x_96
+               OpStore %var_y %103
+        %105 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %106 = OpLoad %float %105
+        %108 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %109 = OpLoad %float %108
+        %110 = OpLoad %float %var_y
+        %111 = OpExtInst %float %97 NClamp %106 %109 %110
+               OpStore %clamp_y %111
+        %113 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %114 = OpLoad %float %113
+        %116 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %117 = OpLoad %float %116
+        %119 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %120 = OpLoad %float %119
+        %122 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %123 = OpLoad %float %122
+        %125 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %126 = OpLoad %float %125
+        %128 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %129 = OpLoad %float %128
+        %131 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %132 = OpLoad %float %131
+        %134 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %135 = OpLoad %float %134
+        %136 = OpFSub %float %114 %117
+        %137 = OpFSub %float %120 %123
+        %138 = OpCompositeConstruct %v2float %136 %137
+               OpStore %param %138
+        %139 = OpFSub %float %126 %129
+        %140 = OpFSub %float %132 %135
+        %141 = OpCompositeConstruct %v2float %139 %140
+               OpStore %param_1 %141
+        %142 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_1
+               OpStore %pab %142
+        %146 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %147 = OpLoad %float %146
+        %149 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %150 = OpLoad %float %149
+        %152 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %153 = OpLoad %float %152
+        %155 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %156 = OpLoad %float %155
+        %158 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %159 = OpLoad %float %158
+        %161 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %162 = OpLoad %float %161
+        %163 = OpLoad %float %clamp_y
+        %165 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %166 = OpLoad %float %165
+        %167 = OpFSub %float %147 %150
+        %168 = OpFSub %float %153 %156
+        %169 = OpCompositeConstruct %v2float %167 %168
+               OpStore %param_2 %169
+        %170 = OpFSub %float %159 %162
+        %171 = OpFSub %float %163 %166
+        %172 = OpCompositeConstruct %v2float %170 %171
+               OpStore %param_3 %172
+        %173 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_2 %param_3
+               OpStore %pbc %173
+        %176 = OpLoad %float %pab
+        %177 = OpLoad %float %pbc
+        %178 = OpFOrdLessThan %bool %176 %float_0
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %179
+        %180 = OpLabel
+        %181 = OpFOrdLessThan %bool %177 %float_0
+               OpBranch %179
+        %179 = OpLabel
+        %182 = OpPhi %bool %178 %76 %181 %180
+               OpStore %x_174_phi %182
+        %183 = OpLogicalNot %bool %182
+               OpSelectionMerge %184 None
+               OpBranchConditional %183 %185 %184
+        %185 = OpLabel
+        %186 = OpLoad %float %pab
+        %187 = OpLoad %float %pbc
+        %188 = OpFOrdGreaterThanEqual %bool %186 %float_0
+               OpSelectionMerge %189 None
+               OpBranchConditional %188 %190 %189
+        %190 = OpLabel
+        %191 = OpFOrdGreaterThanEqual %bool %187 %float_0
+               OpBranch %189
+        %189 = OpLabel
+        %192 = OpPhi %bool %188 %185 %191 %190
+               OpStore %x_173 %192
+        %193 = OpLoad %bool %x_173
+               OpStore %x_174_phi %193
+               OpBranch %184
+        %184 = OpLabel
+        %194 = OpLoad %bool %x_174_phi
+        %195 = OpLogicalNot %bool %194
+               OpSelectionMerge %196 None
+               OpBranchConditional %195 %197 %196
+        %197 = OpLabel
+               OpReturnValue %int_0
+        %196 = OpLabel
+        %200 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %201 = OpLoad %float %200
+        %203 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %204 = OpLoad %float %203
+        %206 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %207 = OpLoad %float %206
+        %209 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %210 = OpLoad %float %209
+        %212 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %213 = OpLoad %float %212
+        %215 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %216 = OpLoad %float %215
+        %218 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %219 = OpLoad %float %218
+        %221 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %222 = OpLoad %float %221
+        %223 = OpFSub %float %201 %204
+        %224 = OpFSub %float %207 %210
+        %225 = OpCompositeConstruct %v2float %223 %224
+               OpStore %param_4 %225
+        %226 = OpFSub %float %213 %216
+        %227 = OpFSub %float %219 %222
+        %228 = OpCompositeConstruct %v2float %226 %227
+               OpStore %param_5 %228
+        %229 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_4 %param_5
+               OpStore %pca %229
+        %232 = OpLoad %float %pab
+        %233 = OpLoad %float %pca
+        %234 = OpFOrdLessThan %bool %232 %float_0
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %237 = OpFOrdLessThan %bool %233 %float_0
+               OpBranch %235
+        %235 = OpLabel
+        %238 = OpPhi %bool %234 %196 %237 %236
+               OpStore %x_206_phi %238
+        %239 = OpLogicalNot %bool %238
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %240
+        %241 = OpLabel
+        %242 = OpLoad %float %pab
+        %243 = OpLoad %float %pca
+        %244 = OpFOrdGreaterThanEqual %bool %242 %float_0
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %245
+        %246 = OpLabel
+        %247 = OpFOrdGreaterThanEqual %bool %243 %float_0
+               OpBranch %245
+        %245 = OpLabel
+        %248 = OpPhi %bool %244 %241 %247 %246
+               OpStore %x_205 %248
+        %249 = OpLoad %bool %x_205
+               OpStore %x_206_phi %249
+               OpBranch %240
+        %240 = OpLabel
+        %250 = OpLoad %bool %x_206_phi
+        %251 = OpLogicalNot %bool %250
+               OpSelectionMerge %252 None
+               OpBranchConditional %251 %253 %252
+        %253 = OpLabel
+               OpReturnValue %int_0
+        %252 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %255
+        %258 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %55
+    %param_6 = OpVariable %_ptr_Function_v2float Function %55
+    %param_7 = OpVariable %_ptr_Function_v2float Function %55
+    %param_8 = OpVariable %_ptr_Function_v2float Function %55
+    %param_9 = OpVariable %_ptr_Function_v2float Function %55
+        %264 = OpLoad %v4float %gl_FragCoord
+        %266 = OpAccessChain %_ptr_Uniform_v2float %x_15 %uint_0
+        %267 = OpLoad %v2float %266
+        %268 = OpCompositeExtract %float %264 0
+        %269 = OpCompositeExtract %float %264 1
+        %270 = OpCompositeConstruct %v2float %268 %269
+        %271 = OpFDiv %v2float %270 %267
+               OpStore %pos %271
+        %272 = OpLoad %v2float %pos
+               OpStore %param_6 %272
+               OpStore %param_7 %275
+               OpStore %param_8 %278
+               OpStore %param_9 %281
+        %282 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %287 = OpIEqual %bool %282 %int_1
+               OpSelectionMerge %288 None
+               OpBranchConditional %287 %289 %290
+        %289 = OpLabel
+               OpStore %x_GLF_color %291
+               OpBranch %288
+        %290 = OpLabel
+               OpStore %x_GLF_color %292
+               OpBranch %288
+        %288 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %293
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %297 = OpLabel
+        %298 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %298
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %255
+        %300 = OpLabel
+        %301 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %301
+        %302 = OpFunctionCall %void %main_1
+        %304 = OpLoad %v4float %x_GLF_color
+        %305 = OpCompositeConstruct %main_out %304
+        %303 = OpFunctionCall %void %tint_symbol_3 %305
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..d58c35b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.spvasm.expected.wgsl
@@ -0,0 +1,172 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_85 : f32 = (*(a)).x;
+  let x_87 : f32 = (*(b)).y;
+  let x_90 : f32 = (*(b)).x;
+  let x_92 : f32 = (*(a)).y;
+  return ((x_85 * x_87) - (x_90 * x_92));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var var_y : f32;
+  var x_96 : f32;
+  var x_97 : f32;
+  var clamp_y : f32;
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_173 : bool;
+  var x_205 : bool;
+  var x_174_phi : bool;
+  var x_206_phi : bool;
+  let x_99 : f32 = x_15.resolution.x;
+  let x_101 : f32 = x_15.resolution.y;
+  if ((x_99 == x_101)) {
+    let x_106 : ptr<function, f32> = &((*(c)).y);
+    let x_107 : f32 = *(x_106);
+    let x_108 : vec2<f32> = vec2<f32>(0.0, x_107);
+    if (true) {
+      let x_112 : f32 = *(x_106);
+      x_97 = x_112;
+    } else {
+      x_97 = 1.0;
+    }
+    let x_113 : f32 = x_97;
+    let x_114 : f32 = *(x_106);
+    let x_116 : vec2<f32> = vec2<f32>(1.0, max(x_113, x_114));
+    let x_117 : vec2<f32> = vec2<f32>(x_108.x, x_108.y);
+    x_96 = x_107;
+  } else {
+    x_96 = -1.0;
+  }
+  let x_118 : f32 = x_96;
+  var_y = x_118;
+  let x_119 : ptr<function, f32> = &((*(c)).y);
+  let x_120 : f32 = *(x_119);
+  let x_121 : f32 = *(x_119);
+  let x_122 : f32 = var_y;
+  clamp_y = clamp(x_120, x_121, x_122);
+  let x_124 : ptr<function, f32> = &((*(p)).x);
+  let x_125 : f32 = *(x_124);
+  let x_126 : ptr<function, f32> = &((*(a_1)).x);
+  let x_127 : f32 = *(x_126);
+  let x_129 : ptr<function, f32> = &((*(p)).y);
+  let x_130 : f32 = *(x_129);
+  let x_131 : ptr<function, f32> = &((*(a_1)).y);
+  let x_132 : f32 = *(x_131);
+  let x_135 : ptr<function, f32> = &((*(b_1)).x);
+  let x_136 : f32 = *(x_135);
+  let x_137 : f32 = *(x_126);
+  let x_139 : ptr<function, f32> = &((*(b_1)).y);
+  let x_140 : f32 = *(x_139);
+  let x_141 : f32 = *(x_131);
+  param = vec2<f32>((x_125 - x_127), (x_130 - x_132));
+  param_1 = vec2<f32>((x_136 - x_137), (x_140 - x_141));
+  let x_144 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_144;
+  let x_145 : f32 = *(x_124);
+  let x_146 : f32 = *(x_135);
+  let x_148 : f32 = *(x_129);
+  let x_149 : f32 = *(x_139);
+  let x_152 : ptr<function, f32> = &((*(c)).x);
+  let x_153 : f32 = *(x_152);
+  let x_154 : f32 = *(x_135);
+  let x_156 : f32 = clamp_y;
+  let x_157 : f32 = *(x_139);
+  param_2 = vec2<f32>((x_145 - x_146), (x_148 - x_149));
+  param_3 = vec2<f32>((x_153 - x_154), (x_156 - x_157));
+  let x_160 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_160;
+  let x_161 : f32 = pab;
+  let x_163 : f32 = pbc;
+  let x_165 : bool = ((x_161 < 0.0) && (x_163 < 0.0));
+  x_174_phi = x_165;
+  if (!(x_165)) {
+    let x_169 : f32 = pab;
+    let x_171 : f32 = pbc;
+    x_173 = ((x_169 >= 0.0) && (x_171 >= 0.0));
+    x_174_phi = x_173;
+  }
+  let x_174 : bool = x_174_phi;
+  if (!(x_174)) {
+    return 0;
+  }
+  let x_178 : f32 = *(x_124);
+  let x_179 : f32 = *(x_152);
+  let x_181 : f32 = *(x_129);
+  let x_182 : f32 = *(x_119);
+  let x_185 : f32 = *(x_126);
+  let x_186 : f32 = *(x_152);
+  let x_188 : f32 = *(x_131);
+  let x_189 : f32 = *(x_119);
+  param_4 = vec2<f32>((x_178 - x_179), (x_181 - x_182));
+  param_5 = vec2<f32>((x_185 - x_186), (x_188 - x_189));
+  let x_192 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_192;
+  let x_193 : f32 = pab;
+  let x_195 : f32 = pca;
+  let x_197 : bool = ((x_193 < 0.0) && (x_195 < 0.0));
+  x_206_phi = x_197;
+  if (!(x_197)) {
+    let x_201 : f32 = pab;
+    let x_203 : f32 = pca;
+    x_205 = ((x_201 >= 0.0) && (x_203 >= 0.0));
+    x_206_phi = x_205;
+  }
+  let x_206 : bool = x_206_phi;
+  if (!(x_206)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_72 : vec4<f32> = gl_FragCoord;
+  let x_75 : vec2<f32> = x_15.resolution;
+  pos = (vec2<f32>(x_72.x, x_72.y) / x_75);
+  let x_77 : vec2<f32> = pos;
+  param_6 = x_77;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_78 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_78 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
new file mode 100644
index 0000000..d58c35b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
@@ -0,0 +1,172 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_85 : f32 = (*(a)).x;
+  let x_87 : f32 = (*(b)).y;
+  let x_90 : f32 = (*(b)).x;
+  let x_92 : f32 = (*(a)).y;
+  return ((x_85 * x_87) - (x_90 * x_92));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var var_y : f32;
+  var x_96 : f32;
+  var x_97 : f32;
+  var clamp_y : f32;
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_173 : bool;
+  var x_205 : bool;
+  var x_174_phi : bool;
+  var x_206_phi : bool;
+  let x_99 : f32 = x_15.resolution.x;
+  let x_101 : f32 = x_15.resolution.y;
+  if ((x_99 == x_101)) {
+    let x_106 : ptr<function, f32> = &((*(c)).y);
+    let x_107 : f32 = *(x_106);
+    let x_108 : vec2<f32> = vec2<f32>(0.0, x_107);
+    if (true) {
+      let x_112 : f32 = *(x_106);
+      x_97 = x_112;
+    } else {
+      x_97 = 1.0;
+    }
+    let x_113 : f32 = x_97;
+    let x_114 : f32 = *(x_106);
+    let x_116 : vec2<f32> = vec2<f32>(1.0, max(x_113, x_114));
+    let x_117 : vec2<f32> = vec2<f32>(x_108.x, x_108.y);
+    x_96 = x_107;
+  } else {
+    x_96 = -1.0;
+  }
+  let x_118 : f32 = x_96;
+  var_y = x_118;
+  let x_119 : ptr<function, f32> = &((*(c)).y);
+  let x_120 : f32 = *(x_119);
+  let x_121 : f32 = *(x_119);
+  let x_122 : f32 = var_y;
+  clamp_y = clamp(x_120, x_121, x_122);
+  let x_124 : ptr<function, f32> = &((*(p)).x);
+  let x_125 : f32 = *(x_124);
+  let x_126 : ptr<function, f32> = &((*(a_1)).x);
+  let x_127 : f32 = *(x_126);
+  let x_129 : ptr<function, f32> = &((*(p)).y);
+  let x_130 : f32 = *(x_129);
+  let x_131 : ptr<function, f32> = &((*(a_1)).y);
+  let x_132 : f32 = *(x_131);
+  let x_135 : ptr<function, f32> = &((*(b_1)).x);
+  let x_136 : f32 = *(x_135);
+  let x_137 : f32 = *(x_126);
+  let x_139 : ptr<function, f32> = &((*(b_1)).y);
+  let x_140 : f32 = *(x_139);
+  let x_141 : f32 = *(x_131);
+  param = vec2<f32>((x_125 - x_127), (x_130 - x_132));
+  param_1 = vec2<f32>((x_136 - x_137), (x_140 - x_141));
+  let x_144 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_144;
+  let x_145 : f32 = *(x_124);
+  let x_146 : f32 = *(x_135);
+  let x_148 : f32 = *(x_129);
+  let x_149 : f32 = *(x_139);
+  let x_152 : ptr<function, f32> = &((*(c)).x);
+  let x_153 : f32 = *(x_152);
+  let x_154 : f32 = *(x_135);
+  let x_156 : f32 = clamp_y;
+  let x_157 : f32 = *(x_139);
+  param_2 = vec2<f32>((x_145 - x_146), (x_148 - x_149));
+  param_3 = vec2<f32>((x_153 - x_154), (x_156 - x_157));
+  let x_160 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_160;
+  let x_161 : f32 = pab;
+  let x_163 : f32 = pbc;
+  let x_165 : bool = ((x_161 < 0.0) && (x_163 < 0.0));
+  x_174_phi = x_165;
+  if (!(x_165)) {
+    let x_169 : f32 = pab;
+    let x_171 : f32 = pbc;
+    x_173 = ((x_169 >= 0.0) && (x_171 >= 0.0));
+    x_174_phi = x_173;
+  }
+  let x_174 : bool = x_174_phi;
+  if (!(x_174)) {
+    return 0;
+  }
+  let x_178 : f32 = *(x_124);
+  let x_179 : f32 = *(x_152);
+  let x_181 : f32 = *(x_129);
+  let x_182 : f32 = *(x_119);
+  let x_185 : f32 = *(x_126);
+  let x_186 : f32 = *(x_152);
+  let x_188 : f32 = *(x_131);
+  let x_189 : f32 = *(x_119);
+  param_4 = vec2<f32>((x_178 - x_179), (x_181 - x_182));
+  param_5 = vec2<f32>((x_185 - x_186), (x_188 - x_189));
+  let x_192 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_192;
+  let x_193 : f32 = pab;
+  let x_195 : f32 = pca;
+  let x_197 : bool = ((x_193 < 0.0) && (x_195 < 0.0));
+  x_206_phi = x_197;
+  if (!(x_197)) {
+    let x_201 : f32 = pab;
+    let x_203 : f32 = pca;
+    x_205 = ((x_201 >= 0.0) && (x_203 >= 0.0));
+    x_206_phi = x_205;
+  }
+  let x_206 : bool = x_206_phi;
+  if (!(x_206)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_72 : vec4<f32> = gl_FragCoord;
+  let x_75 : vec2<f32> = x_15.resolution;
+  pos = (vec2<f32>(x_72.x, x_72.y) / x_75);
+  let x_77 : vec2<f32> = pos;
+  param_6 = x_77;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_78 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_78 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..75aaaf6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.hlsl
@@ -0,0 +1,168 @@
+cbuffer cbuffer_x_15 : register(b0, space0) {
+  uint4 x_15[1];
+};
+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);
+
+float cross2d_vf2_vf2_(inout float2 a, inout float2 b) {
+  const float x_85 = a.x;
+  const float x_87 = b.y;
+  const float x_90 = b.x;
+  const float x_92 = a.y;
+  return ((x_85 * x_87) - (x_90 * x_92));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a_1, inout float2 b_1, inout float2 c) {
+  float var_y = 0.0f;
+  float x_96 = 0.0f;
+  float x_97 = 0.0f;
+  float clamp_y = 0.0f;
+  float pab = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float pbc = 0.0f;
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float pca = 0.0f;
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_173 = false;
+  bool x_205 = false;
+  bool x_174_phi = false;
+  bool x_206_phi = false;
+  const float x_99 = asfloat(x_15[0].x);
+  const float x_101 = asfloat(x_15[0].y);
+  if ((x_99 == x_101)) {
+    const float x_107 = c.y;
+    const float2 x_108 = float2(0.0f, x_107);
+    if (true) {
+      const float x_112 = c.y;
+      x_97 = x_112;
+    } else {
+      x_97 = 1.0f;
+    }
+    const float x_113 = x_97;
+    const float x_114 = c.y;
+    const float2 x_116 = float2(1.0f, max(x_113, x_114));
+    const float2 x_117 = float2(x_108.x, x_108.y);
+    x_96 = x_107;
+  } else {
+    x_96 = -1.0f;
+  }
+  var_y = x_96;
+  const float x_120 = c.y;
+  const float x_121 = c.y;
+  clamp_y = clamp(x_120, x_121, var_y);
+  const float x_125 = p.x;
+  const float x_127 = a_1.x;
+  const float x_130 = p.y;
+  const float x_132 = a_1.y;
+  const float x_136 = b_1.x;
+  const float x_137 = a_1.x;
+  const float x_140 = b_1.y;
+  const float x_141 = a_1.y;
+  param = float2((x_125 - x_127), (x_130 - x_132));
+  param_1 = float2((x_136 - x_137), (x_140 - x_141));
+  const float x_144 = cross2d_vf2_vf2_(param, param_1);
+  pab = x_144;
+  const float x_145 = p.x;
+  const float x_146 = b_1.x;
+  const float x_148 = p.y;
+  const float x_149 = b_1.y;
+  const float x_153 = c.x;
+  const float x_154 = b_1.x;
+  const float x_156 = clamp_y;
+  const float x_157 = b_1.y;
+  param_2 = float2((x_145 - x_146), (x_148 - x_149));
+  param_3 = float2((x_153 - x_154), (x_156 - x_157));
+  const float x_160 = cross2d_vf2_vf2_(param_2, param_3);
+  pbc = x_160;
+  bool tint_tmp = (pab < 0.0f);
+  if (tint_tmp) {
+    tint_tmp = (pbc < 0.0f);
+  }
+  const bool x_165 = (tint_tmp);
+  x_174_phi = x_165;
+  if (!(x_165)) {
+    bool tint_tmp_1 = (pab >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (pbc >= 0.0f);
+    }
+    x_173 = (tint_tmp_1);
+    x_174_phi = x_173;
+  }
+  if (!(x_174_phi)) {
+    return 0;
+  }
+  const float x_178 = p.x;
+  const float x_179 = c.x;
+  const float x_181 = p.y;
+  const float x_182 = c.y;
+  const float x_185 = a_1.x;
+  const float x_186 = c.x;
+  const float x_188 = a_1.y;
+  const float x_189 = c.y;
+  param_4 = float2((x_178 - x_179), (x_181 - x_182));
+  param_5 = float2((x_185 - x_186), (x_188 - x_189));
+  const float x_192 = cross2d_vf2_vf2_(param_4, param_5);
+  pca = x_192;
+  bool tint_tmp_2 = (pab < 0.0f);
+  if (tint_tmp_2) {
+    tint_tmp_2 = (pca < 0.0f);
+  }
+  const bool x_197 = (tint_tmp_2);
+  x_206_phi = x_197;
+  if (!(x_197)) {
+    bool tint_tmp_3 = (pab >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (pca >= 0.0f);
+    }
+    x_205 = (tint_tmp_3);
+    x_206_phi = x_205;
+  }
+  if (!(x_206_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_72 = gl_FragCoord;
+  const float2 x_75 = asfloat(x_15[0].xy);
+  pos = (float2(x_72.x, x_72.y) / x_75);
+  param_6 = pos;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_78 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_78 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.msl
new file mode 100644
index 0000000..d0400d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.msl
@@ -0,0 +1,164 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float cross2d_vf2_vf2_(thread float2* const a, thread float2* const b) {
+  float const x_85 = (*(a)).x;
+  float const x_87 = (*(b)).y;
+  float const x_90 = (*(b)).x;
+  float const x_92 = (*(a)).y;
+  return ((x_85 * x_87) - (x_90 * x_92));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(constant buf0& x_15, thread float2* const p, thread float2* const a_1, thread float2* const b_1, thread float2* const c) {
+  float var_y = 0.0f;
+  float x_96 = 0.0f;
+  float x_97 = 0.0f;
+  float clamp_y = 0.0f;
+  float pab = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float pbc = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float pca = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_173 = false;
+  bool x_205 = false;
+  bool x_174_phi = false;
+  bool x_206_phi = false;
+  float const x_99 = x_15.resolution.x;
+  float const x_101 = x_15.resolution.y;
+  if ((x_99 == x_101)) {
+    float const x_107 = (*(c)).y;
+    float2 const x_108 = float2(0.0f, x_107);
+    if (true) {
+      float const x_112 = (*(c)).y;
+      x_97 = x_112;
+    } else {
+      x_97 = 1.0f;
+    }
+    float const x_113 = x_97;
+    float const x_114 = (*(c)).y;
+    float2 const x_116 = float2(1.0f, fmax(x_113, x_114));
+    float2 const x_117 = float2(x_108.x, x_108.y);
+    x_96 = x_107;
+  } else {
+    x_96 = -1.0f;
+  }
+  float const x_118 = x_96;
+  var_y = x_118;
+  float const x_120 = (*(c)).y;
+  float const x_121 = (*(c)).y;
+  float const x_122 = var_y;
+  clamp_y = clamp(x_120, x_121, x_122);
+  float const x_125 = (*(p)).x;
+  float const x_127 = (*(a_1)).x;
+  float const x_130 = (*(p)).y;
+  float const x_132 = (*(a_1)).y;
+  float const x_136 = (*(b_1)).x;
+  float const x_137 = (*(a_1)).x;
+  float const x_140 = (*(b_1)).y;
+  float const x_141 = (*(a_1)).y;
+  param = float2((x_125 - x_127), (x_130 - x_132));
+  param_1 = float2((x_136 - x_137), (x_140 - x_141));
+  float const x_144 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_144;
+  float const x_145 = (*(p)).x;
+  float const x_146 = (*(b_1)).x;
+  float const x_148 = (*(p)).y;
+  float const x_149 = (*(b_1)).y;
+  float const x_153 = (*(c)).x;
+  float const x_154 = (*(b_1)).x;
+  float const x_156 = clamp_y;
+  float const x_157 = (*(b_1)).y;
+  param_2 = float2((x_145 - x_146), (x_148 - x_149));
+  param_3 = float2((x_153 - x_154), (x_156 - x_157));
+  float const x_160 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_160;
+  float const x_161 = pab;
+  float const x_163 = pbc;
+  bool const x_165 = ((x_161 < 0.0f) && (x_163 < 0.0f));
+  x_174_phi = x_165;
+  if (!(x_165)) {
+    float const x_169 = pab;
+    float const x_171 = pbc;
+    x_173 = ((x_169 >= 0.0f) && (x_171 >= 0.0f));
+    x_174_phi = x_173;
+  }
+  bool const x_174 = x_174_phi;
+  if (!(x_174)) {
+    return 0;
+  }
+  float const x_178 = (*(p)).x;
+  float const x_179 = (*(c)).x;
+  float const x_181 = (*(p)).y;
+  float const x_182 = (*(c)).y;
+  float const x_185 = (*(a_1)).x;
+  float const x_186 = (*(c)).x;
+  float const x_188 = (*(a_1)).y;
+  float const x_189 = (*(c)).y;
+  param_4 = float2((x_178 - x_179), (x_181 - x_182));
+  param_5 = float2((x_185 - x_186), (x_188 - x_189));
+  float const x_192 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_192;
+  float const x_193 = pab;
+  float const x_195 = pca;
+  bool const x_197 = ((x_193 < 0.0f) && (x_195 < 0.0f));
+  x_206_phi = x_197;
+  if (!(x_197)) {
+    float const x_201 = pab;
+    float const x_203 = pca;
+    x_205 = ((x_201 >= 0.0f) && (x_203 >= 0.0f));
+    x_206_phi = x_205;
+  }
+  bool const x_206 = x_206_phi;
+  if (!(x_206)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_15, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 pos = 0.0f;
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_72 = *(tint_symbol_5);
+  float2 const x_75 = x_15.resolution;
+  pos = (float2(x_72.x, x_72.y) / x_75);
+  float2 const x_77 = pos;
+  param_6 = x_77;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_78 = pointInTriangle_vf2_vf2_vf2_vf2_(x_15, &(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_78 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_15 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_15, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..98ab5e5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.spvasm
@@ -0,0 +1,399 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 306
+; Schema: 0
+               OpCapability Shader
+         %97 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_15 "x_15"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %cross2d_vf2_vf2_ "cross2d_vf2_vf2_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a_1 "a_1"
+               OpName %b_1 "b_1"
+               OpName %c "c"
+               OpName %var_y "var_y"
+               OpName %x_96 "x_96"
+               OpName %x_97 "x_97"
+               OpName %clamp_y "clamp_y"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %pbc "pbc"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %pca "pca"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_173 "x_173"
+               OpName %x_205 "x_205"
+               OpName %x_174_phi "x_174_phi"
+               OpName %x_206_phi "x_206_phi"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_15 NonWritable
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_15 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+         %40 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+         %49 = OpConstantNull %float
+         %55 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %66 = OpConstantNull %bool
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+   %float_n1 = OpConstant %float -1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %255 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %275 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %278 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %281 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+        %291 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %292 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %293 = OpTypeFunction %void %main_out
+%cross2d_vf2_vf2_ = OpFunction %float None %15
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %25 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpLoad %float %25
+         %29 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFMul %float %26 %30
+         %38 = OpFMul %float %33 %36
+         %39 = OpFSub %float %37 %38
+               OpReturnValue %39
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %40
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_1 = OpFunctionParameter %_ptr_Function_v2float
+        %b_1 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %47 = OpLabel
+      %var_y = OpVariable %_ptr_Function_float Function %49
+       %x_96 = OpVariable %_ptr_Function_float Function %49
+       %x_97 = OpVariable %_ptr_Function_float Function %49
+    %clamp_y = OpVariable %_ptr_Function_float Function %49
+        %pab = OpVariable %_ptr_Function_float Function %49
+      %param = OpVariable %_ptr_Function_v2float Function %55
+    %param_1 = OpVariable %_ptr_Function_v2float Function %55
+        %pbc = OpVariable %_ptr_Function_float Function %49
+    %param_2 = OpVariable %_ptr_Function_v2float Function %55
+    %param_3 = OpVariable %_ptr_Function_v2float Function %55
+        %pca = OpVariable %_ptr_Function_float Function %49
+    %param_4 = OpVariable %_ptr_Function_v2float Function %55
+    %param_5 = OpVariable %_ptr_Function_v2float Function %55
+      %x_173 = OpVariable %_ptr_Function_bool Function %66
+      %x_205 = OpVariable %_ptr_Function_bool Function %66
+  %x_174_phi = OpVariable %_ptr_Function_bool Function %66
+  %x_206_phi = OpVariable %_ptr_Function_bool Function %66
+         %71 = OpAccessChain %_ptr_Uniform_float %x_15 %uint_0 %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpAccessChain %_ptr_Uniform_float %x_15 %uint_0 %uint_1
+         %74 = OpLoad %float %73
+         %75 = OpFOrdEqual %bool %72 %74
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %78
+         %77 = OpLabel
+         %80 = OpAccessChain %_ptr_Function_float %c %uint_1
+         %81 = OpLoad %float %80
+         %83 = OpCompositeConstruct %v2float %float_0 %81
+               OpSelectionMerge %85 None
+               OpBranchConditional %true %86 %87
+         %86 = OpLabel
+         %89 = OpAccessChain %_ptr_Function_float %c %uint_1
+         %90 = OpLoad %float %89
+               OpStore %x_97 %90
+               OpBranch %85
+         %87 = OpLabel
+               OpStore %x_97 %float_1
+               OpBranch %85
+         %85 = OpLabel
+         %92 = OpLoad %float %x_97
+         %94 = OpAccessChain %_ptr_Function_float %c %uint_1
+         %95 = OpLoad %float %94
+         %96 = OpExtInst %float %97 NMax %92 %95
+         %98 = OpCompositeConstruct %v2float %float_1 %96
+         %99 = OpCompositeExtract %float %83 0
+        %100 = OpCompositeExtract %float %83 1
+        %101 = OpCompositeConstruct %v2float %99 %100
+               OpStore %x_96 %81
+               OpBranch %76
+         %78 = OpLabel
+               OpStore %x_96 %float_n1
+               OpBranch %76
+         %76 = OpLabel
+        %103 = OpLoad %float %x_96
+               OpStore %var_y %103
+        %105 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %106 = OpLoad %float %105
+        %108 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %109 = OpLoad %float %108
+        %110 = OpLoad %float %var_y
+        %111 = OpExtInst %float %97 NClamp %106 %109 %110
+               OpStore %clamp_y %111
+        %113 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %114 = OpLoad %float %113
+        %116 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %117 = OpLoad %float %116
+        %119 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %120 = OpLoad %float %119
+        %122 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %123 = OpLoad %float %122
+        %125 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %126 = OpLoad %float %125
+        %128 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %129 = OpLoad %float %128
+        %131 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %132 = OpLoad %float %131
+        %134 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %135 = OpLoad %float %134
+        %136 = OpFSub %float %114 %117
+        %137 = OpFSub %float %120 %123
+        %138 = OpCompositeConstruct %v2float %136 %137
+               OpStore %param %138
+        %139 = OpFSub %float %126 %129
+        %140 = OpFSub %float %132 %135
+        %141 = OpCompositeConstruct %v2float %139 %140
+               OpStore %param_1 %141
+        %142 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_1
+               OpStore %pab %142
+        %146 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %147 = OpLoad %float %146
+        %149 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %150 = OpLoad %float %149
+        %152 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %153 = OpLoad %float %152
+        %155 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %156 = OpLoad %float %155
+        %158 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %159 = OpLoad %float %158
+        %161 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %162 = OpLoad %float %161
+        %163 = OpLoad %float %clamp_y
+        %165 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %166 = OpLoad %float %165
+        %167 = OpFSub %float %147 %150
+        %168 = OpFSub %float %153 %156
+        %169 = OpCompositeConstruct %v2float %167 %168
+               OpStore %param_2 %169
+        %170 = OpFSub %float %159 %162
+        %171 = OpFSub %float %163 %166
+        %172 = OpCompositeConstruct %v2float %170 %171
+               OpStore %param_3 %172
+        %173 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_2 %param_3
+               OpStore %pbc %173
+        %176 = OpLoad %float %pab
+        %177 = OpLoad %float %pbc
+        %178 = OpFOrdLessThan %bool %176 %float_0
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %179
+        %180 = OpLabel
+        %181 = OpFOrdLessThan %bool %177 %float_0
+               OpBranch %179
+        %179 = OpLabel
+        %182 = OpPhi %bool %178 %76 %181 %180
+               OpStore %x_174_phi %182
+        %183 = OpLogicalNot %bool %182
+               OpSelectionMerge %184 None
+               OpBranchConditional %183 %185 %184
+        %185 = OpLabel
+        %186 = OpLoad %float %pab
+        %187 = OpLoad %float %pbc
+        %188 = OpFOrdGreaterThanEqual %bool %186 %float_0
+               OpSelectionMerge %189 None
+               OpBranchConditional %188 %190 %189
+        %190 = OpLabel
+        %191 = OpFOrdGreaterThanEqual %bool %187 %float_0
+               OpBranch %189
+        %189 = OpLabel
+        %192 = OpPhi %bool %188 %185 %191 %190
+               OpStore %x_173 %192
+        %193 = OpLoad %bool %x_173
+               OpStore %x_174_phi %193
+               OpBranch %184
+        %184 = OpLabel
+        %194 = OpLoad %bool %x_174_phi
+        %195 = OpLogicalNot %bool %194
+               OpSelectionMerge %196 None
+               OpBranchConditional %195 %197 %196
+        %197 = OpLabel
+               OpReturnValue %int_0
+        %196 = OpLabel
+        %200 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %201 = OpLoad %float %200
+        %203 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %204 = OpLoad %float %203
+        %206 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %207 = OpLoad %float %206
+        %209 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %210 = OpLoad %float %209
+        %212 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %213 = OpLoad %float %212
+        %215 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %216 = OpLoad %float %215
+        %218 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %219 = OpLoad %float %218
+        %221 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %222 = OpLoad %float %221
+        %223 = OpFSub %float %201 %204
+        %224 = OpFSub %float %207 %210
+        %225 = OpCompositeConstruct %v2float %223 %224
+               OpStore %param_4 %225
+        %226 = OpFSub %float %213 %216
+        %227 = OpFSub %float %219 %222
+        %228 = OpCompositeConstruct %v2float %226 %227
+               OpStore %param_5 %228
+        %229 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_4 %param_5
+               OpStore %pca %229
+        %232 = OpLoad %float %pab
+        %233 = OpLoad %float %pca
+        %234 = OpFOrdLessThan %bool %232 %float_0
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %237 = OpFOrdLessThan %bool %233 %float_0
+               OpBranch %235
+        %235 = OpLabel
+        %238 = OpPhi %bool %234 %196 %237 %236
+               OpStore %x_206_phi %238
+        %239 = OpLogicalNot %bool %238
+               OpSelectionMerge %240 None
+               OpBranchConditional %239 %241 %240
+        %241 = OpLabel
+        %242 = OpLoad %float %pab
+        %243 = OpLoad %float %pca
+        %244 = OpFOrdGreaterThanEqual %bool %242 %float_0
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %245
+        %246 = OpLabel
+        %247 = OpFOrdGreaterThanEqual %bool %243 %float_0
+               OpBranch %245
+        %245 = OpLabel
+        %248 = OpPhi %bool %244 %241 %247 %246
+               OpStore %x_205 %248
+        %249 = OpLoad %bool %x_205
+               OpStore %x_206_phi %249
+               OpBranch %240
+        %240 = OpLabel
+        %250 = OpLoad %bool %x_206_phi
+        %251 = OpLogicalNot %bool %250
+               OpSelectionMerge %252 None
+               OpBranchConditional %251 %253 %252
+        %253 = OpLabel
+               OpReturnValue %int_0
+        %252 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %255
+        %258 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %55
+    %param_6 = OpVariable %_ptr_Function_v2float Function %55
+    %param_7 = OpVariable %_ptr_Function_v2float Function %55
+    %param_8 = OpVariable %_ptr_Function_v2float Function %55
+    %param_9 = OpVariable %_ptr_Function_v2float Function %55
+        %264 = OpLoad %v4float %gl_FragCoord
+        %266 = OpAccessChain %_ptr_Uniform_v2float %x_15 %uint_0
+        %267 = OpLoad %v2float %266
+        %268 = OpCompositeExtract %float %264 0
+        %269 = OpCompositeExtract %float %264 1
+        %270 = OpCompositeConstruct %v2float %268 %269
+        %271 = OpFDiv %v2float %270 %267
+               OpStore %pos %271
+        %272 = OpLoad %v2float %pos
+               OpStore %param_6 %272
+               OpStore %param_7 %275
+               OpStore %param_8 %278
+               OpStore %param_9 %281
+        %282 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %287 = OpIEqual %bool %282 %int_1
+               OpSelectionMerge %288 None
+               OpBranchConditional %287 %289 %290
+        %289 = OpLabel
+               OpStore %x_GLF_color %291
+               OpBranch %288
+        %290 = OpLabel
+               OpStore %x_GLF_color %292
+               OpBranch %288
+        %288 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %293
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %297 = OpLabel
+        %298 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %298
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %255
+        %300 = OpLabel
+        %301 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %301
+        %302 = OpFunctionCall %void %main_1
+        %304 = OpLoad %v4float %x_GLF_color
+        %305 = OpCompositeConstruct %main_out %304
+        %303 = OpFunctionCall %void %tint_symbol_3 %305
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..d58c35b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl.expected.wgsl
@@ -0,0 +1,172 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_85 : f32 = (*(a)).x;
+  let x_87 : f32 = (*(b)).y;
+  let x_90 : f32 = (*(b)).x;
+  let x_92 : f32 = (*(a)).y;
+  return ((x_85 * x_87) - (x_90 * x_92));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var var_y : f32;
+  var x_96 : f32;
+  var x_97 : f32;
+  var clamp_y : f32;
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_173 : bool;
+  var x_205 : bool;
+  var x_174_phi : bool;
+  var x_206_phi : bool;
+  let x_99 : f32 = x_15.resolution.x;
+  let x_101 : f32 = x_15.resolution.y;
+  if ((x_99 == x_101)) {
+    let x_106 : ptr<function, f32> = &((*(c)).y);
+    let x_107 : f32 = *(x_106);
+    let x_108 : vec2<f32> = vec2<f32>(0.0, x_107);
+    if (true) {
+      let x_112 : f32 = *(x_106);
+      x_97 = x_112;
+    } else {
+      x_97 = 1.0;
+    }
+    let x_113 : f32 = x_97;
+    let x_114 : f32 = *(x_106);
+    let x_116 : vec2<f32> = vec2<f32>(1.0, max(x_113, x_114));
+    let x_117 : vec2<f32> = vec2<f32>(x_108.x, x_108.y);
+    x_96 = x_107;
+  } else {
+    x_96 = -1.0;
+  }
+  let x_118 : f32 = x_96;
+  var_y = x_118;
+  let x_119 : ptr<function, f32> = &((*(c)).y);
+  let x_120 : f32 = *(x_119);
+  let x_121 : f32 = *(x_119);
+  let x_122 : f32 = var_y;
+  clamp_y = clamp(x_120, x_121, x_122);
+  let x_124 : ptr<function, f32> = &((*(p)).x);
+  let x_125 : f32 = *(x_124);
+  let x_126 : ptr<function, f32> = &((*(a_1)).x);
+  let x_127 : f32 = *(x_126);
+  let x_129 : ptr<function, f32> = &((*(p)).y);
+  let x_130 : f32 = *(x_129);
+  let x_131 : ptr<function, f32> = &((*(a_1)).y);
+  let x_132 : f32 = *(x_131);
+  let x_135 : ptr<function, f32> = &((*(b_1)).x);
+  let x_136 : f32 = *(x_135);
+  let x_137 : f32 = *(x_126);
+  let x_139 : ptr<function, f32> = &((*(b_1)).y);
+  let x_140 : f32 = *(x_139);
+  let x_141 : f32 = *(x_131);
+  param = vec2<f32>((x_125 - x_127), (x_130 - x_132));
+  param_1 = vec2<f32>((x_136 - x_137), (x_140 - x_141));
+  let x_144 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_144;
+  let x_145 : f32 = *(x_124);
+  let x_146 : f32 = *(x_135);
+  let x_148 : f32 = *(x_129);
+  let x_149 : f32 = *(x_139);
+  let x_152 : ptr<function, f32> = &((*(c)).x);
+  let x_153 : f32 = *(x_152);
+  let x_154 : f32 = *(x_135);
+  let x_156 : f32 = clamp_y;
+  let x_157 : f32 = *(x_139);
+  param_2 = vec2<f32>((x_145 - x_146), (x_148 - x_149));
+  param_3 = vec2<f32>((x_153 - x_154), (x_156 - x_157));
+  let x_160 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_160;
+  let x_161 : f32 = pab;
+  let x_163 : f32 = pbc;
+  let x_165 : bool = ((x_161 < 0.0) && (x_163 < 0.0));
+  x_174_phi = x_165;
+  if (!(x_165)) {
+    let x_169 : f32 = pab;
+    let x_171 : f32 = pbc;
+    x_173 = ((x_169 >= 0.0) && (x_171 >= 0.0));
+    x_174_phi = x_173;
+  }
+  let x_174 : bool = x_174_phi;
+  if (!(x_174)) {
+    return 0;
+  }
+  let x_178 : f32 = *(x_124);
+  let x_179 : f32 = *(x_152);
+  let x_181 : f32 = *(x_129);
+  let x_182 : f32 = *(x_119);
+  let x_185 : f32 = *(x_126);
+  let x_186 : f32 = *(x_152);
+  let x_188 : f32 = *(x_131);
+  let x_189 : f32 = *(x_119);
+  param_4 = vec2<f32>((x_178 - x_179), (x_181 - x_182));
+  param_5 = vec2<f32>((x_185 - x_186), (x_188 - x_189));
+  let x_192 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_192;
+  let x_193 : f32 = pab;
+  let x_195 : f32 = pca;
+  let x_197 : bool = ((x_193 < 0.0) && (x_195 < 0.0));
+  x_206_phi = x_197;
+  if (!(x_197)) {
+    let x_201 : f32 = pab;
+    let x_203 : f32 = pca;
+    x_205 = ((x_201 >= 0.0) && (x_203 >= 0.0));
+    x_206_phi = x_205;
+  }
+  let x_206 : bool = x_206_phi;
+  if (!(x_206)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_72 : vec4<f32> = gl_FragCoord;
+  let x_75 : vec2<f32> = x_15.resolution;
+  pos = (vec2<f32>(x_72.x, x_72.y) / x_75);
+  let x_77 : vec2<f32> = pos;
+  param_6 = x_77;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_78 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_78 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm
new file mode 100644
index 0000000..7352728
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm
@@ -0,0 +1,266 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %cross2d_vf2_vf2_ "cross2d(vf2;vf2;"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle(vf2;vf2;vf2;vf2;"
+               OpName %p "p"
+               OpName %a_0 "a"
+               OpName %b_0 "b"
+               OpName %c "c"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %pbc "pbc"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %pca "pca"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %pos "pos"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %30 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %34 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+        %int = OpTypeInt 32 1
+         %36 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+         %51 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+         %54 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+         %57 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %60 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %61 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %30
+         %62 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function
+    %param_5 = OpVariable %_ptr_Function_v2float Function
+    %param_6 = OpVariable %_ptr_Function_v2float Function
+    %param_7 = OpVariable %_ptr_Function_v2float Function
+    %param_8 = OpVariable %_ptr_Function_v2float Function
+         %63 = OpLoad %v4float %gl_FragCoord
+         %64 = OpVectorShuffle %v2float %63 %63 0 1
+         %65 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %66 = OpLoad %v2float %65
+         %67 = OpFDiv %v2float %64 %66
+               OpStore %pos %67
+         %68 = OpLoad %v2float %pos
+               OpStore %param_5 %68
+               OpStore %param_6 %51
+               OpStore %param_7 %54
+               OpStore %param_8 %57
+         %69 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_5 %param_6 %param_7 %param_8
+         %70 = OpIEqual %bool %69 %int_1
+               OpSelectionMerge %71 None
+               OpBranchConditional %70 %72 %73
+         %72 = OpLabel
+               OpStore %_GLF_color %60
+               OpBranch %71
+         %73 = OpLabel
+               OpStore %_GLF_color %61
+               OpBranch %71
+         %71 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%cross2d_vf2_vf2_ = OpFunction %float None %34
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %74 = OpLabel
+         %75 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %76 = OpLoad %float %75
+         %77 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpFMul %float %76 %78
+         %80 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %83 = OpLoad %float %82
+         %84 = OpFMul %float %81 %83
+         %85 = OpFSub %float %79 %84
+               OpReturnValue %85
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %36
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_0 = OpFunctionParameter %_ptr_Function_v2float
+        %b_0 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %86 = OpLabel
+        %pab = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v2float Function
+        %pbc = OpVariable %_ptr_Function_float Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+    %param_2 = OpVariable %_ptr_Function_v2float Function
+        %pca = OpVariable %_ptr_Function_float Function
+    %param_3 = OpVariable %_ptr_Function_v2float Function
+    %param_4 = OpVariable %_ptr_Function_v2float Function
+         %87 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %88 = OpLoad %float %87
+         %89 = OpAccessChain %_ptr_Function_float %a_0 %uint_0
+         %90 = OpLoad %float %89
+         %91 = OpFSub %float %88 %90
+         %92 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %93 = OpLoad %float %92
+         %94 = OpAccessChain %_ptr_Function_float %a_0 %uint_1
+         %95 = OpLoad %float %94
+         %96 = OpFSub %float %93 %95
+         %97 = OpCompositeConstruct %v2float %91 %96
+         %98 = OpAccessChain %_ptr_Function_float %b_0 %uint_0
+         %99 = OpLoad %float %98
+        %100 = OpAccessChain %_ptr_Function_float %a_0 %uint_0
+        %101 = OpLoad %float %100
+        %102 = OpFSub %float %99 %101
+        %103 = OpAccessChain %_ptr_Function_float %b_0 %uint_1
+        %104 = OpLoad %float %103
+        %105 = OpAccessChain %_ptr_Function_float %a_0 %uint_1
+        %106 = OpLoad %float %105
+        %107 = OpFSub %float %104 %106
+        %108 = OpCompositeConstruct %v2float %102 %107
+               OpStore %param %97
+               OpStore %param_0 %108
+        %109 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_0
+               OpStore %pab %109
+        %110 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %111 = OpLoad %float %110
+        %112 = OpAccessChain %_ptr_Function_float %b_0 %uint_0
+        %113 = OpLoad %float %112
+        %114 = OpFSub %float %111 %113
+        %115 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %116 = OpLoad %float %115
+        %117 = OpAccessChain %_ptr_Function_float %b_0 %uint_1
+        %118 = OpLoad %float %117
+        %119 = OpFSub %float %116 %118
+        %120 = OpCompositeConstruct %v2float %114 %119
+        %121 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %122 = OpLoad %float %121
+        %123 = OpAccessChain %_ptr_Function_float %b_0 %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpFSub %float %122 %124
+        %126 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %127 = OpLoad %float %126
+        %128 = OpAccessChain %_ptr_Function_float %b_0 %uint_1
+        %129 = OpLoad %float %128
+        %130 = OpFSub %float %127 %129
+        %131 = OpCompositeConstruct %v2float %125 %130
+               OpStore %param_1 %120
+               OpStore %param_2 %131
+        %132 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_1 %param_2
+               OpStore %pbc %132
+        %133 = OpLoad %float %pab
+        %134 = OpFOrdLessThan %bool %133 %float_0
+        %135 = OpLoad %float %pbc
+        %136 = OpFOrdLessThan %bool %135 %float_0
+        %137 = OpLogicalAnd %bool %134 %136
+        %138 = OpLogicalNot %bool %137
+               OpSelectionMerge %139 None
+               OpBranchConditional %138 %140 %139
+        %140 = OpLabel
+        %141 = OpLoad %float %pab
+        %142 = OpFOrdGreaterThanEqual %bool %141 %float_0
+        %143 = OpLoad %float %pbc
+        %144 = OpFOrdGreaterThanEqual %bool %143 %float_0
+        %145 = OpLogicalAnd %bool %142 %144
+               OpBranch %139
+        %139 = OpLabel
+        %146 = OpPhi %bool %137 %86 %145 %140
+        %147 = OpLogicalNot %bool %146
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %148
+        %149 = OpLabel
+               OpReturnValue %int_0
+        %148 = OpLabel
+        %150 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %151 = OpLoad %float %150
+        %152 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpFSub %float %151 %153
+        %155 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %156 = OpLoad %float %155
+        %157 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %158 = OpLoad %float %157
+        %159 = OpFSub %float %156 %158
+        %160 = OpCompositeConstruct %v2float %154 %159
+        %161 = OpAccessChain %_ptr_Function_float %a_0 %uint_0
+        %162 = OpLoad %float %161
+        %163 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %164 = OpLoad %float %163
+        %165 = OpFSub %float %162 %164
+        %166 = OpAccessChain %_ptr_Function_float %a_0 %uint_1
+        %167 = OpLoad %float %166
+        %168 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %169 = OpLoad %float %168
+        %170 = OpFSub %float %167 %169
+        %171 = OpCompositeConstruct %v2float %165 %170
+               OpStore %param_3 %160
+               OpStore %param_4 %171
+        %172 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_3 %param_4
+               OpStore %pca %172
+        %173 = OpLoad %float %pab
+        %174 = OpFOrdLessThan %bool %173 %float_0
+        %175 = OpLoad %float %pca
+        %176 = OpFOrdLessThan %bool %175 %float_0
+        %177 = OpLogicalAnd %bool %174 %176
+        %178 = OpLogicalNot %bool %177
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %179
+        %180 = OpLabel
+        %181 = OpLoad %float %pab
+        %182 = OpFOrdGreaterThanEqual %bool %181 %float_0
+        %183 = OpLoad %float %pca
+        %184 = OpFOrdGreaterThanEqual %bool %183 %float_0
+        %185 = OpLogicalAnd %bool %182 %184
+               OpBranch %179
+        %179 = OpLabel
+        %186 = OpPhi %bool %177 %148 %185 %180
+        %187 = OpLogicalNot %bool %186
+               OpSelectionMerge %188 None
+               OpBranchConditional %187 %189 %188
+        %189 = OpLabel
+               OpReturnValue %int_0
+        %188 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..f228156
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.hlsl
@@ -0,0 +1,141 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_24 : register(b0, space0) {
+  uint4 x_24[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float cross2d_vf2_vf2_(inout float2 a, inout float2 b) {
+  const float x_76 = a.x;
+  const float x_78 = b.y;
+  const float x_81 = b.x;
+  const float x_83 = a.y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a_1, inout float2 b_1, inout float2 c) {
+  float pab = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float pbc = 0.0f;
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float pca = 0.0f;
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_145 = false;
+  bool x_185 = false;
+  bool x_146_phi = false;
+  bool x_186_phi = false;
+  const float x_88 = p.x;
+  const float x_90 = a_1.x;
+  const float x_93 = p.y;
+  const float x_95 = a_1.y;
+  const float x_99 = b_1.x;
+  const float x_101 = a_1.x;
+  const float x_104 = b_1.y;
+  const float x_106 = a_1.y;
+  param = float2((x_88 - x_90), (x_93 - x_95));
+  param_1 = float2((x_99 - x_101), (x_104 - x_106));
+  const float x_109 = cross2d_vf2_vf2_(param, param_1);
+  pab = x_109;
+  const float x_111 = p.x;
+  const float x_113 = b_1.x;
+  const float x_116 = p.y;
+  const float x_118 = b_1.y;
+  const float x_122 = c.x;
+  const float x_124 = b_1.x;
+  const float x_127 = c.y;
+  const float x_129 = b_1.y;
+  param_2 = float2((x_111 - x_113), (x_116 - x_118));
+  param_3 = float2((x_122 - x_124), (x_127 - x_129));
+  const float x_132 = cross2d_vf2_vf2_(param_2, param_3);
+  pbc = x_132;
+  bool tint_tmp = (pab < 0.0f);
+  if (tint_tmp) {
+    tint_tmp = (pbc < 0.0f);
+  }
+  const bool x_137 = (tint_tmp);
+  x_146_phi = x_137;
+  if (!(x_137)) {
+    bool tint_tmp_1 = (pab >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (pbc >= 0.0f);
+    }
+    x_145 = (tint_tmp_1);
+    x_146_phi = x_145;
+  }
+  if (!(x_146_phi)) {
+    return 0;
+  }
+  const float x_151 = p.x;
+  const float x_153 = c.x;
+  const float x_156 = p.y;
+  const float x_158 = c.y;
+  const float x_162 = a_1.x;
+  const float x_164 = c.x;
+  const float x_167 = a_1.y;
+  const float x_169 = c.y;
+  param_4 = float2((x_151 - x_153), (x_156 - x_158));
+  param_5 = float2((x_162 - x_164), (x_167 - x_169));
+  const float x_172 = cross2d_vf2_vf2_(param_4, param_5);
+  pca = x_172;
+  bool tint_tmp_2 = (pab < 0.0f);
+  if (tint_tmp_2) {
+    tint_tmp_2 = (pca < 0.0f);
+  }
+  const bool x_177 = (tint_tmp_2);
+  x_186_phi = x_177;
+  if (!(x_177)) {
+    bool tint_tmp_3 = (pab >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (pca >= 0.0f);
+    }
+    x_185 = (tint_tmp_3);
+    x_186_phi = x_185;
+  }
+  if (!(x_186_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_63 = gl_FragCoord;
+  const float2 x_66 = asfloat(x_24[0].xy);
+  pos = (float2(x_63.x, x_63.y) / x_66);
+  param_6 = pos;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_69 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_69 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.msl
new file mode 100644
index 0000000..8d1f7be
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.msl
@@ -0,0 +1,135 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float cross2d_vf2_vf2_(thread float2* const a, thread float2* const b) {
+  float const x_76 = (*(a)).x;
+  float const x_78 = (*(b)).y;
+  float const x_81 = (*(b)).x;
+  float const x_83 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(thread float2* const p, thread float2* const a_1, thread float2* const b_1, thread float2* const c) {
+  float pab = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float pbc = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float pca = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_145 = false;
+  bool x_185 = false;
+  bool x_146_phi = false;
+  bool x_186_phi = false;
+  float const x_88 = (*(p)).x;
+  float const x_90 = (*(a_1)).x;
+  float const x_93 = (*(p)).y;
+  float const x_95 = (*(a_1)).y;
+  float const x_99 = (*(b_1)).x;
+  float const x_101 = (*(a_1)).x;
+  float const x_104 = (*(b_1)).y;
+  float const x_106 = (*(a_1)).y;
+  param = float2((x_88 - x_90), (x_93 - x_95));
+  param_1 = float2((x_99 - x_101), (x_104 - x_106));
+  float const x_109 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_109;
+  float const x_111 = (*(p)).x;
+  float const x_113 = (*(b_1)).x;
+  float const x_116 = (*(p)).y;
+  float const x_118 = (*(b_1)).y;
+  float const x_122 = (*(c)).x;
+  float const x_124 = (*(b_1)).x;
+  float const x_127 = (*(c)).y;
+  float const x_129 = (*(b_1)).y;
+  param_2 = float2((x_111 - x_113), (x_116 - x_118));
+  param_3 = float2((x_122 - x_124), (x_127 - x_129));
+  float const x_132 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_132;
+  float const x_133 = pab;
+  float const x_135 = pbc;
+  bool const x_137 = ((x_133 < 0.0f) && (x_135 < 0.0f));
+  x_146_phi = x_137;
+  if (!(x_137)) {
+    float const x_141 = pab;
+    float const x_143 = pbc;
+    x_145 = ((x_141 >= 0.0f) && (x_143 >= 0.0f));
+    x_146_phi = x_145;
+  }
+  bool const x_146 = x_146_phi;
+  if (!(x_146)) {
+    return 0;
+  }
+  float const x_151 = (*(p)).x;
+  float const x_153 = (*(c)).x;
+  float const x_156 = (*(p)).y;
+  float const x_158 = (*(c)).y;
+  float const x_162 = (*(a_1)).x;
+  float const x_164 = (*(c)).x;
+  float const x_167 = (*(a_1)).y;
+  float const x_169 = (*(c)).y;
+  param_4 = float2((x_151 - x_153), (x_156 - x_158));
+  param_5 = float2((x_162 - x_164), (x_167 - x_169));
+  float const x_172 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_172;
+  float const x_173 = pab;
+  float const x_175 = pca;
+  bool const x_177 = ((x_173 < 0.0f) && (x_175 < 0.0f));
+  x_186_phi = x_177;
+  if (!(x_177)) {
+    float const x_181 = pab;
+    float const x_183 = pca;
+    x_185 = ((x_181 >= 0.0f) && (x_183 >= 0.0f));
+    x_186_phi = x_185;
+  }
+  bool const x_186 = x_186_phi;
+  if (!(x_186)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_24, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 pos = 0.0f;
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_63 = *(tint_symbol_5);
+  float2 const x_66 = x_24.resolution;
+  pos = (float2(x_63.x, x_63.y) / x_66);
+  float2 const x_68 = pos;
+  param_6 = x_68;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_69 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_24 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_24, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..0d3239b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.spvasm
@@ -0,0 +1,343 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 264
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_24 "x_24"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %cross2d_vf2_vf2_ "cross2d_vf2_vf2_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a_1 "a_1"
+               OpName %b_1 "b_1"
+               OpName %c "c"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %pbc "pbc"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %pca "pca"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_145 "x_145"
+               OpName %x_185 "x_185"
+               OpName %x_146_phi "x_146_phi"
+               OpName %x_186_phi "x_186_phi"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_24 NonWritable
+               OpDecorate %x_24 DescriptorSet 0
+               OpDecorate %x_24 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_24 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+         %40 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+         %49 = OpConstantNull %float
+         %51 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %62 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %212 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %232 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %235 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %238 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+    %float_1 = OpConstant %float 1
+        %249 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %250 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %251 = OpTypeFunction %void %main_out
+%cross2d_vf2_vf2_ = OpFunction %float None %15
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %25 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpLoad %float %25
+         %29 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFMul %float %26 %30
+         %38 = OpFMul %float %33 %36
+         %39 = OpFSub %float %37 %38
+               OpReturnValue %39
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %40
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_1 = OpFunctionParameter %_ptr_Function_v2float
+        %b_1 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %47 = OpLabel
+        %pab = OpVariable %_ptr_Function_float Function %49
+      %param = OpVariable %_ptr_Function_v2float Function %51
+    %param_1 = OpVariable %_ptr_Function_v2float Function %51
+        %pbc = OpVariable %_ptr_Function_float Function %49
+    %param_2 = OpVariable %_ptr_Function_v2float Function %51
+    %param_3 = OpVariable %_ptr_Function_v2float Function %51
+        %pca = OpVariable %_ptr_Function_float Function %49
+    %param_4 = OpVariable %_ptr_Function_v2float Function %51
+    %param_5 = OpVariable %_ptr_Function_v2float Function %51
+      %x_145 = OpVariable %_ptr_Function_bool Function %62
+      %x_185 = OpVariable %_ptr_Function_bool Function %62
+  %x_146_phi = OpVariable %_ptr_Function_bool Function %62
+  %x_186_phi = OpVariable %_ptr_Function_bool Function %62
+         %67 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %68 = OpLoad %float %67
+         %70 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %74 = OpLoad %float %73
+         %76 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %77 = OpLoad %float %76
+         %79 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+         %80 = OpLoad %float %79
+         %82 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %83 = OpLoad %float %82
+         %85 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+         %86 = OpLoad %float %85
+         %88 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpFSub %float %68 %71
+         %91 = OpFSub %float %74 %77
+         %92 = OpCompositeConstruct %v2float %90 %91
+               OpStore %param %92
+         %93 = OpFSub %float %80 %83
+         %94 = OpFSub %float %86 %89
+         %95 = OpCompositeConstruct %v2float %93 %94
+               OpStore %param_1 %95
+         %96 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_1
+               OpStore %pab %96
+        %100 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %101 = OpLoad %float %100
+        %103 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %107 = OpLoad %float %106
+        %109 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %110 = OpLoad %float %109
+        %112 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %113 = OpLoad %float %112
+        %115 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %116 = OpLoad %float %115
+        %118 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %119 = OpLoad %float %118
+        %121 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %122 = OpLoad %float %121
+        %123 = OpFSub %float %101 %104
+        %124 = OpFSub %float %107 %110
+        %125 = OpCompositeConstruct %v2float %123 %124
+               OpStore %param_2 %125
+        %126 = OpFSub %float %113 %116
+        %127 = OpFSub %float %119 %122
+        %128 = OpCompositeConstruct %v2float %126 %127
+               OpStore %param_3 %128
+        %129 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_2 %param_3
+               OpStore %pbc %129
+        %132 = OpLoad %float %pab
+        %133 = OpLoad %float %pbc
+        %135 = OpFOrdLessThan %bool %132 %float_0
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %136
+        %137 = OpLabel
+        %138 = OpFOrdLessThan %bool %133 %float_0
+               OpBranch %136
+        %136 = OpLabel
+        %139 = OpPhi %bool %135 %47 %138 %137
+               OpStore %x_146_phi %139
+        %140 = OpLogicalNot %bool %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+        %143 = OpLoad %float %pab
+        %144 = OpLoad %float %pbc
+        %145 = OpFOrdGreaterThanEqual %bool %143 %float_0
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpFOrdGreaterThanEqual %bool %144 %float_0
+               OpBranch %146
+        %146 = OpLabel
+        %149 = OpPhi %bool %145 %142 %148 %147
+               OpStore %x_145 %149
+        %150 = OpLoad %bool %x_145
+               OpStore %x_146_phi %150
+               OpBranch %141
+        %141 = OpLabel
+        %151 = OpLoad %bool %x_146_phi
+        %152 = OpLogicalNot %bool %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+               OpReturnValue %int_0
+        %153 = OpLabel
+        %157 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %158 = OpLoad %float %157
+        %160 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %161 = OpLoad %float %160
+        %163 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %164 = OpLoad %float %163
+        %166 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %167 = OpLoad %float %166
+        %169 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %170 = OpLoad %float %169
+        %172 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %173 = OpLoad %float %172
+        %175 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %176 = OpLoad %float %175
+        %178 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %179 = OpLoad %float %178
+        %180 = OpFSub %float %158 %161
+        %181 = OpFSub %float %164 %167
+        %182 = OpCompositeConstruct %v2float %180 %181
+               OpStore %param_4 %182
+        %183 = OpFSub %float %170 %173
+        %184 = OpFSub %float %176 %179
+        %185 = OpCompositeConstruct %v2float %183 %184
+               OpStore %param_5 %185
+        %186 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_4 %param_5
+               OpStore %pca %186
+        %189 = OpLoad %float %pab
+        %190 = OpLoad %float %pca
+        %191 = OpFOrdLessThan %bool %189 %float_0
+               OpSelectionMerge %192 None
+               OpBranchConditional %191 %193 %192
+        %193 = OpLabel
+        %194 = OpFOrdLessThan %bool %190 %float_0
+               OpBranch %192
+        %192 = OpLabel
+        %195 = OpPhi %bool %191 %153 %194 %193
+               OpStore %x_186_phi %195
+        %196 = OpLogicalNot %bool %195
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+        %199 = OpLoad %float %pab
+        %200 = OpLoad %float %pca
+        %201 = OpFOrdGreaterThanEqual %bool %199 %float_0
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %202
+        %203 = OpLabel
+        %204 = OpFOrdGreaterThanEqual %bool %200 %float_0
+               OpBranch %202
+        %202 = OpLabel
+        %205 = OpPhi %bool %201 %198 %204 %203
+               OpStore %x_185 %205
+        %206 = OpLoad %bool %x_185
+               OpStore %x_186_phi %206
+               OpBranch %197
+        %197 = OpLabel
+        %207 = OpLoad %bool %x_186_phi
+        %208 = OpLogicalNot %bool %207
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %209
+        %210 = OpLabel
+               OpReturnValue %int_0
+        %209 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %212
+        %215 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %51
+    %param_6 = OpVariable %_ptr_Function_v2float Function %51
+    %param_7 = OpVariable %_ptr_Function_v2float Function %51
+    %param_8 = OpVariable %_ptr_Function_v2float Function %51
+    %param_9 = OpVariable %_ptr_Function_v2float Function %51
+        %221 = OpLoad %v4float %gl_FragCoord
+        %223 = OpAccessChain %_ptr_Uniform_v2float %x_24 %uint_0
+        %224 = OpLoad %v2float %223
+        %225 = OpCompositeExtract %float %221 0
+        %226 = OpCompositeExtract %float %221 1
+        %227 = OpCompositeConstruct %v2float %225 %226
+        %228 = OpFDiv %v2float %227 %224
+               OpStore %pos %228
+        %229 = OpLoad %v2float %pos
+               OpStore %param_6 %229
+               OpStore %param_7 %232
+               OpStore %param_8 %235
+               OpStore %param_9 %238
+        %239 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %244 = OpIEqual %bool %239 %int_1
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %247
+        %246 = OpLabel
+               OpStore %x_GLF_color %249
+               OpBranch %245
+        %247 = OpLabel
+               OpStore %x_GLF_color %250
+               OpBranch %245
+        %245 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %251
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %255 = OpLabel
+        %256 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %256
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %212
+        %258 = OpLabel
+        %259 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %259
+        %260 = OpFunctionCall %void %main_1
+        %262 = OpLoad %v4float %x_GLF_color
+        %263 = OpCompositeConstruct %main_out %262
+        %261 = OpFunctionCall %void %tint_symbol_3 %263
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..33d8a7d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.spvasm.expected.wgsl
@@ -0,0 +1,134 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_76 : f32 = (*(a)).x;
+  let x_78 : f32 = (*(b)).y;
+  let x_81 : f32 = (*(b)).x;
+  let x_83 : f32 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_145 : bool;
+  var x_185 : bool;
+  var x_146_phi : bool;
+  var x_186_phi : bool;
+  let x_88 : f32 = (*(p)).x;
+  let x_90 : f32 = (*(a_1)).x;
+  let x_93 : f32 = (*(p)).y;
+  let x_95 : f32 = (*(a_1)).y;
+  let x_99 : f32 = (*(b_1)).x;
+  let x_101 : f32 = (*(a_1)).x;
+  let x_104 : f32 = (*(b_1)).y;
+  let x_106 : f32 = (*(a_1)).y;
+  param = vec2<f32>((x_88 - x_90), (x_93 - x_95));
+  param_1 = vec2<f32>((x_99 - x_101), (x_104 - x_106));
+  let x_109 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_109;
+  let x_111 : f32 = (*(p)).x;
+  let x_113 : f32 = (*(b_1)).x;
+  let x_116 : f32 = (*(p)).y;
+  let x_118 : f32 = (*(b_1)).y;
+  let x_122 : f32 = (*(c)).x;
+  let x_124 : f32 = (*(b_1)).x;
+  let x_127 : f32 = (*(c)).y;
+  let x_129 : f32 = (*(b_1)).y;
+  param_2 = vec2<f32>((x_111 - x_113), (x_116 - x_118));
+  param_3 = vec2<f32>((x_122 - x_124), (x_127 - x_129));
+  let x_132 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_132;
+  let x_133 : f32 = pab;
+  let x_135 : f32 = pbc;
+  let x_137 : bool = ((x_133 < 0.0) && (x_135 < 0.0));
+  x_146_phi = x_137;
+  if (!(x_137)) {
+    let x_141 : f32 = pab;
+    let x_143 : f32 = pbc;
+    x_145 = ((x_141 >= 0.0) && (x_143 >= 0.0));
+    x_146_phi = x_145;
+  }
+  let x_146 : bool = x_146_phi;
+  if (!(x_146)) {
+    return 0;
+  }
+  let x_151 : f32 = (*(p)).x;
+  let x_153 : f32 = (*(c)).x;
+  let x_156 : f32 = (*(p)).y;
+  let x_158 : f32 = (*(c)).y;
+  let x_162 : f32 = (*(a_1)).x;
+  let x_164 : f32 = (*(c)).x;
+  let x_167 : f32 = (*(a_1)).y;
+  let x_169 : f32 = (*(c)).y;
+  param_4 = vec2<f32>((x_151 - x_153), (x_156 - x_158));
+  param_5 = vec2<f32>((x_162 - x_164), (x_167 - x_169));
+  let x_172 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_172;
+  let x_173 : f32 = pab;
+  let x_175 : f32 = pca;
+  let x_177 : bool = ((x_173 < 0.0) && (x_175 < 0.0));
+  x_186_phi = x_177;
+  if (!(x_177)) {
+    let x_181 : f32 = pab;
+    let x_183 : f32 = pca;
+    x_185 = ((x_181 >= 0.0) && (x_183 >= 0.0));
+    x_186_phi = x_185;
+  }
+  let x_186 : bool = x_186_phi;
+  if (!(x_186)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_66 : vec2<f32> = x_24.resolution;
+  pos = (vec2<f32>(x_63.x, x_63.y) / x_66);
+  let x_68 : vec2<f32> = pos;
+  param_6 = x_68;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_69 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
new file mode 100644
index 0000000..33d8a7d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
@@ -0,0 +1,134 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_76 : f32 = (*(a)).x;
+  let x_78 : f32 = (*(b)).y;
+  let x_81 : f32 = (*(b)).x;
+  let x_83 : f32 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_145 : bool;
+  var x_185 : bool;
+  var x_146_phi : bool;
+  var x_186_phi : bool;
+  let x_88 : f32 = (*(p)).x;
+  let x_90 : f32 = (*(a_1)).x;
+  let x_93 : f32 = (*(p)).y;
+  let x_95 : f32 = (*(a_1)).y;
+  let x_99 : f32 = (*(b_1)).x;
+  let x_101 : f32 = (*(a_1)).x;
+  let x_104 : f32 = (*(b_1)).y;
+  let x_106 : f32 = (*(a_1)).y;
+  param = vec2<f32>((x_88 - x_90), (x_93 - x_95));
+  param_1 = vec2<f32>((x_99 - x_101), (x_104 - x_106));
+  let x_109 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_109;
+  let x_111 : f32 = (*(p)).x;
+  let x_113 : f32 = (*(b_1)).x;
+  let x_116 : f32 = (*(p)).y;
+  let x_118 : f32 = (*(b_1)).y;
+  let x_122 : f32 = (*(c)).x;
+  let x_124 : f32 = (*(b_1)).x;
+  let x_127 : f32 = (*(c)).y;
+  let x_129 : f32 = (*(b_1)).y;
+  param_2 = vec2<f32>((x_111 - x_113), (x_116 - x_118));
+  param_3 = vec2<f32>((x_122 - x_124), (x_127 - x_129));
+  let x_132 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_132;
+  let x_133 : f32 = pab;
+  let x_135 : f32 = pbc;
+  let x_137 : bool = ((x_133 < 0.0) && (x_135 < 0.0));
+  x_146_phi = x_137;
+  if (!(x_137)) {
+    let x_141 : f32 = pab;
+    let x_143 : f32 = pbc;
+    x_145 = ((x_141 >= 0.0) && (x_143 >= 0.0));
+    x_146_phi = x_145;
+  }
+  let x_146 : bool = x_146_phi;
+  if (!(x_146)) {
+    return 0;
+  }
+  let x_151 : f32 = (*(p)).x;
+  let x_153 : f32 = (*(c)).x;
+  let x_156 : f32 = (*(p)).y;
+  let x_158 : f32 = (*(c)).y;
+  let x_162 : f32 = (*(a_1)).x;
+  let x_164 : f32 = (*(c)).x;
+  let x_167 : f32 = (*(a_1)).y;
+  let x_169 : f32 = (*(c)).y;
+  param_4 = vec2<f32>((x_151 - x_153), (x_156 - x_158));
+  param_5 = vec2<f32>((x_162 - x_164), (x_167 - x_169));
+  let x_172 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_172;
+  let x_173 : f32 = pab;
+  let x_175 : f32 = pca;
+  let x_177 : bool = ((x_173 < 0.0) && (x_175 < 0.0));
+  x_186_phi = x_177;
+  if (!(x_177)) {
+    let x_181 : f32 = pab;
+    let x_183 : f32 = pca;
+    x_185 = ((x_181 >= 0.0) && (x_183 >= 0.0));
+    x_186_phi = x_185;
+  }
+  let x_186 : bool = x_186_phi;
+  if (!(x_186)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_66 : vec2<f32> = x_24.resolution;
+  pos = (vec2<f32>(x_63.x, x_63.y) / x_66);
+  let x_68 : vec2<f32> = pos;
+  param_6 = x_68;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_69 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..f228156
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.hlsl
@@ -0,0 +1,141 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_24 : register(b0, space0) {
+  uint4 x_24[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float cross2d_vf2_vf2_(inout float2 a, inout float2 b) {
+  const float x_76 = a.x;
+  const float x_78 = b.y;
+  const float x_81 = b.x;
+  const float x_83 = a.y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a_1, inout float2 b_1, inout float2 c) {
+  float pab = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float pbc = 0.0f;
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float pca = 0.0f;
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_145 = false;
+  bool x_185 = false;
+  bool x_146_phi = false;
+  bool x_186_phi = false;
+  const float x_88 = p.x;
+  const float x_90 = a_1.x;
+  const float x_93 = p.y;
+  const float x_95 = a_1.y;
+  const float x_99 = b_1.x;
+  const float x_101 = a_1.x;
+  const float x_104 = b_1.y;
+  const float x_106 = a_1.y;
+  param = float2((x_88 - x_90), (x_93 - x_95));
+  param_1 = float2((x_99 - x_101), (x_104 - x_106));
+  const float x_109 = cross2d_vf2_vf2_(param, param_1);
+  pab = x_109;
+  const float x_111 = p.x;
+  const float x_113 = b_1.x;
+  const float x_116 = p.y;
+  const float x_118 = b_1.y;
+  const float x_122 = c.x;
+  const float x_124 = b_1.x;
+  const float x_127 = c.y;
+  const float x_129 = b_1.y;
+  param_2 = float2((x_111 - x_113), (x_116 - x_118));
+  param_3 = float2((x_122 - x_124), (x_127 - x_129));
+  const float x_132 = cross2d_vf2_vf2_(param_2, param_3);
+  pbc = x_132;
+  bool tint_tmp = (pab < 0.0f);
+  if (tint_tmp) {
+    tint_tmp = (pbc < 0.0f);
+  }
+  const bool x_137 = (tint_tmp);
+  x_146_phi = x_137;
+  if (!(x_137)) {
+    bool tint_tmp_1 = (pab >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (pbc >= 0.0f);
+    }
+    x_145 = (tint_tmp_1);
+    x_146_phi = x_145;
+  }
+  if (!(x_146_phi)) {
+    return 0;
+  }
+  const float x_151 = p.x;
+  const float x_153 = c.x;
+  const float x_156 = p.y;
+  const float x_158 = c.y;
+  const float x_162 = a_1.x;
+  const float x_164 = c.x;
+  const float x_167 = a_1.y;
+  const float x_169 = c.y;
+  param_4 = float2((x_151 - x_153), (x_156 - x_158));
+  param_5 = float2((x_162 - x_164), (x_167 - x_169));
+  const float x_172 = cross2d_vf2_vf2_(param_4, param_5);
+  pca = x_172;
+  bool tint_tmp_2 = (pab < 0.0f);
+  if (tint_tmp_2) {
+    tint_tmp_2 = (pca < 0.0f);
+  }
+  const bool x_177 = (tint_tmp_2);
+  x_186_phi = x_177;
+  if (!(x_177)) {
+    bool tint_tmp_3 = (pab >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (pca >= 0.0f);
+    }
+    x_185 = (tint_tmp_3);
+    x_186_phi = x_185;
+  }
+  if (!(x_186_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_63 = gl_FragCoord;
+  const float2 x_66 = asfloat(x_24[0].xy);
+  pos = (float2(x_63.x, x_63.y) / x_66);
+  param_6 = pos;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_69 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_69 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.msl
new file mode 100644
index 0000000..8d1f7be
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.msl
@@ -0,0 +1,135 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float cross2d_vf2_vf2_(thread float2* const a, thread float2* const b) {
+  float const x_76 = (*(a)).x;
+  float const x_78 = (*(b)).y;
+  float const x_81 = (*(b)).x;
+  float const x_83 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(thread float2* const p, thread float2* const a_1, thread float2* const b_1, thread float2* const c) {
+  float pab = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float pbc = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float pca = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_145 = false;
+  bool x_185 = false;
+  bool x_146_phi = false;
+  bool x_186_phi = false;
+  float const x_88 = (*(p)).x;
+  float const x_90 = (*(a_1)).x;
+  float const x_93 = (*(p)).y;
+  float const x_95 = (*(a_1)).y;
+  float const x_99 = (*(b_1)).x;
+  float const x_101 = (*(a_1)).x;
+  float const x_104 = (*(b_1)).y;
+  float const x_106 = (*(a_1)).y;
+  param = float2((x_88 - x_90), (x_93 - x_95));
+  param_1 = float2((x_99 - x_101), (x_104 - x_106));
+  float const x_109 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_109;
+  float const x_111 = (*(p)).x;
+  float const x_113 = (*(b_1)).x;
+  float const x_116 = (*(p)).y;
+  float const x_118 = (*(b_1)).y;
+  float const x_122 = (*(c)).x;
+  float const x_124 = (*(b_1)).x;
+  float const x_127 = (*(c)).y;
+  float const x_129 = (*(b_1)).y;
+  param_2 = float2((x_111 - x_113), (x_116 - x_118));
+  param_3 = float2((x_122 - x_124), (x_127 - x_129));
+  float const x_132 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_132;
+  float const x_133 = pab;
+  float const x_135 = pbc;
+  bool const x_137 = ((x_133 < 0.0f) && (x_135 < 0.0f));
+  x_146_phi = x_137;
+  if (!(x_137)) {
+    float const x_141 = pab;
+    float const x_143 = pbc;
+    x_145 = ((x_141 >= 0.0f) && (x_143 >= 0.0f));
+    x_146_phi = x_145;
+  }
+  bool const x_146 = x_146_phi;
+  if (!(x_146)) {
+    return 0;
+  }
+  float const x_151 = (*(p)).x;
+  float const x_153 = (*(c)).x;
+  float const x_156 = (*(p)).y;
+  float const x_158 = (*(c)).y;
+  float const x_162 = (*(a_1)).x;
+  float const x_164 = (*(c)).x;
+  float const x_167 = (*(a_1)).y;
+  float const x_169 = (*(c)).y;
+  param_4 = float2((x_151 - x_153), (x_156 - x_158));
+  param_5 = float2((x_162 - x_164), (x_167 - x_169));
+  float const x_172 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_172;
+  float const x_173 = pab;
+  float const x_175 = pca;
+  bool const x_177 = ((x_173 < 0.0f) && (x_175 < 0.0f));
+  x_186_phi = x_177;
+  if (!(x_177)) {
+    float const x_181 = pab;
+    float const x_183 = pca;
+    x_185 = ((x_181 >= 0.0f) && (x_183 >= 0.0f));
+    x_186_phi = x_185;
+  }
+  bool const x_186 = x_186_phi;
+  if (!(x_186)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_24, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 pos = 0.0f;
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_63 = *(tint_symbol_5);
+  float2 const x_66 = x_24.resolution;
+  pos = (float2(x_63.x, x_63.y) / x_66);
+  float2 const x_68 = pos;
+  param_6 = x_68;
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_69 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_24 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_24, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..0d3239b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.spvasm
@@ -0,0 +1,343 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 264
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_24 "x_24"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %cross2d_vf2_vf2_ "cross2d_vf2_vf2_"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a_1 "a_1"
+               OpName %b_1 "b_1"
+               OpName %c "c"
+               OpName %pab "pab"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %pbc "pbc"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %pca "pca"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_145 "x_145"
+               OpName %x_185 "x_185"
+               OpName %x_146_phi "x_146_phi"
+               OpName %x_186_phi "x_186_phi"
+               OpName %main_1 "main_1"
+               OpName %pos "pos"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_24 NonWritable
+               OpDecorate %x_24 DescriptorSet 0
+               OpDecorate %x_24 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_24 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+         %40 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+         %49 = OpConstantNull %float
+         %51 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %62 = OpConstantNull %bool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %212 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %232 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %235 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %238 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+    %float_1 = OpConstant %float 1
+        %249 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %250 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %251 = OpTypeFunction %void %main_out
+%cross2d_vf2_vf2_ = OpFunction %float None %15
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+         %20 = OpLabel
+         %25 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %26 = OpLoad %float %25
+         %29 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %33 = OpLoad %float %32
+         %35 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFMul %float %26 %30
+         %38 = OpFMul %float %33 %36
+         %39 = OpFSub %float %37 %38
+               OpReturnValue %39
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %40
+          %p = OpFunctionParameter %_ptr_Function_v2float
+        %a_1 = OpFunctionParameter %_ptr_Function_v2float
+        %b_1 = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %47 = OpLabel
+        %pab = OpVariable %_ptr_Function_float Function %49
+      %param = OpVariable %_ptr_Function_v2float Function %51
+    %param_1 = OpVariable %_ptr_Function_v2float Function %51
+        %pbc = OpVariable %_ptr_Function_float Function %49
+    %param_2 = OpVariable %_ptr_Function_v2float Function %51
+    %param_3 = OpVariable %_ptr_Function_v2float Function %51
+        %pca = OpVariable %_ptr_Function_float Function %49
+    %param_4 = OpVariable %_ptr_Function_v2float Function %51
+    %param_5 = OpVariable %_ptr_Function_v2float Function %51
+      %x_145 = OpVariable %_ptr_Function_bool Function %62
+      %x_185 = OpVariable %_ptr_Function_bool Function %62
+  %x_146_phi = OpVariable %_ptr_Function_bool Function %62
+  %x_186_phi = OpVariable %_ptr_Function_bool Function %62
+         %67 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %68 = OpLoad %float %67
+         %70 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %71 = OpLoad %float %70
+         %73 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %74 = OpLoad %float %73
+         %76 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %77 = OpLoad %float %76
+         %79 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+         %80 = OpLoad %float %79
+         %82 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+         %83 = OpLoad %float %82
+         %85 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+         %86 = OpLoad %float %85
+         %88 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpFSub %float %68 %71
+         %91 = OpFSub %float %74 %77
+         %92 = OpCompositeConstruct %v2float %90 %91
+               OpStore %param %92
+         %93 = OpFSub %float %80 %83
+         %94 = OpFSub %float %86 %89
+         %95 = OpCompositeConstruct %v2float %93 %94
+               OpStore %param_1 %95
+         %96 = OpFunctionCall %float %cross2d_vf2_vf2_ %param %param_1
+               OpStore %pab %96
+        %100 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %101 = OpLoad %float %100
+        %103 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %107 = OpLoad %float %106
+        %109 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %110 = OpLoad %float %109
+        %112 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %113 = OpLoad %float %112
+        %115 = OpAccessChain %_ptr_Function_float %b_1 %uint_0
+        %116 = OpLoad %float %115
+        %118 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %119 = OpLoad %float %118
+        %121 = OpAccessChain %_ptr_Function_float %b_1 %uint_1
+        %122 = OpLoad %float %121
+        %123 = OpFSub %float %101 %104
+        %124 = OpFSub %float %107 %110
+        %125 = OpCompositeConstruct %v2float %123 %124
+               OpStore %param_2 %125
+        %126 = OpFSub %float %113 %116
+        %127 = OpFSub %float %119 %122
+        %128 = OpCompositeConstruct %v2float %126 %127
+               OpStore %param_3 %128
+        %129 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_2 %param_3
+               OpStore %pbc %129
+        %132 = OpLoad %float %pab
+        %133 = OpLoad %float %pbc
+        %135 = OpFOrdLessThan %bool %132 %float_0
+               OpSelectionMerge %136 None
+               OpBranchConditional %135 %137 %136
+        %137 = OpLabel
+        %138 = OpFOrdLessThan %bool %133 %float_0
+               OpBranch %136
+        %136 = OpLabel
+        %139 = OpPhi %bool %135 %47 %138 %137
+               OpStore %x_146_phi %139
+        %140 = OpLogicalNot %bool %139
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+        %143 = OpLoad %float %pab
+        %144 = OpLoad %float %pbc
+        %145 = OpFOrdGreaterThanEqual %bool %143 %float_0
+               OpSelectionMerge %146 None
+               OpBranchConditional %145 %147 %146
+        %147 = OpLabel
+        %148 = OpFOrdGreaterThanEqual %bool %144 %float_0
+               OpBranch %146
+        %146 = OpLabel
+        %149 = OpPhi %bool %145 %142 %148 %147
+               OpStore %x_145 %149
+        %150 = OpLoad %bool %x_145
+               OpStore %x_146_phi %150
+               OpBranch %141
+        %141 = OpLabel
+        %151 = OpLoad %bool %x_146_phi
+        %152 = OpLogicalNot %bool %151
+               OpSelectionMerge %153 None
+               OpBranchConditional %152 %154 %153
+        %154 = OpLabel
+               OpReturnValue %int_0
+        %153 = OpLabel
+        %157 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %158 = OpLoad %float %157
+        %160 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %161 = OpLoad %float %160
+        %163 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %164 = OpLoad %float %163
+        %166 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %167 = OpLoad %float %166
+        %169 = OpAccessChain %_ptr_Function_float %a_1 %uint_0
+        %170 = OpLoad %float %169
+        %172 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %173 = OpLoad %float %172
+        %175 = OpAccessChain %_ptr_Function_float %a_1 %uint_1
+        %176 = OpLoad %float %175
+        %178 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %179 = OpLoad %float %178
+        %180 = OpFSub %float %158 %161
+        %181 = OpFSub %float %164 %167
+        %182 = OpCompositeConstruct %v2float %180 %181
+               OpStore %param_4 %182
+        %183 = OpFSub %float %170 %173
+        %184 = OpFSub %float %176 %179
+        %185 = OpCompositeConstruct %v2float %183 %184
+               OpStore %param_5 %185
+        %186 = OpFunctionCall %float %cross2d_vf2_vf2_ %param_4 %param_5
+               OpStore %pca %186
+        %189 = OpLoad %float %pab
+        %190 = OpLoad %float %pca
+        %191 = OpFOrdLessThan %bool %189 %float_0
+               OpSelectionMerge %192 None
+               OpBranchConditional %191 %193 %192
+        %193 = OpLabel
+        %194 = OpFOrdLessThan %bool %190 %float_0
+               OpBranch %192
+        %192 = OpLabel
+        %195 = OpPhi %bool %191 %153 %194 %193
+               OpStore %x_186_phi %195
+        %196 = OpLogicalNot %bool %195
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+        %199 = OpLoad %float %pab
+        %200 = OpLoad %float %pca
+        %201 = OpFOrdGreaterThanEqual %bool %199 %float_0
+               OpSelectionMerge %202 None
+               OpBranchConditional %201 %203 %202
+        %203 = OpLabel
+        %204 = OpFOrdGreaterThanEqual %bool %200 %float_0
+               OpBranch %202
+        %202 = OpLabel
+        %205 = OpPhi %bool %201 %198 %204 %203
+               OpStore %x_185 %205
+        %206 = OpLoad %bool %x_185
+               OpStore %x_186_phi %206
+               OpBranch %197
+        %197 = OpLabel
+        %207 = OpLoad %bool %x_186_phi
+        %208 = OpLogicalNot %bool %207
+               OpSelectionMerge %209 None
+               OpBranchConditional %208 %210 %209
+        %210 = OpLabel
+               OpReturnValue %int_0
+        %209 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %212
+        %215 = OpLabel
+        %pos = OpVariable %_ptr_Function_v2float Function %51
+    %param_6 = OpVariable %_ptr_Function_v2float Function %51
+    %param_7 = OpVariable %_ptr_Function_v2float Function %51
+    %param_8 = OpVariable %_ptr_Function_v2float Function %51
+    %param_9 = OpVariable %_ptr_Function_v2float Function %51
+        %221 = OpLoad %v4float %gl_FragCoord
+        %223 = OpAccessChain %_ptr_Uniform_v2float %x_24 %uint_0
+        %224 = OpLoad %v2float %223
+        %225 = OpCompositeExtract %float %221 0
+        %226 = OpCompositeExtract %float %221 1
+        %227 = OpCompositeConstruct %v2float %225 %226
+        %228 = OpFDiv %v2float %227 %224
+               OpStore %pos %228
+        %229 = OpLoad %v2float %pos
+               OpStore %param_6 %229
+               OpStore %param_7 %232
+               OpStore %param_8 %235
+               OpStore %param_9 %238
+        %239 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %244 = OpIEqual %bool %239 %int_1
+               OpSelectionMerge %245 None
+               OpBranchConditional %244 %246 %247
+        %246 = OpLabel
+               OpStore %x_GLF_color %249
+               OpBranch %245
+        %247 = OpLabel
+               OpStore %x_GLF_color %250
+               OpBranch %245
+        %245 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %251
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %255 = OpLabel
+        %256 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %256
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %212
+        %258 = OpLabel
+        %259 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %259
+        %260 = OpFunctionCall %void %main_1
+        %262 = OpLoad %v4float %x_GLF_color
+        %263 = OpCompositeConstruct %main_out %262
+        %261 = OpFunctionCall %void %tint_symbol_3 %263
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..33d8a7d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl.expected.wgsl
@@ -0,0 +1,134 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn cross2d_vf2_vf2_(a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>) -> f32 {
+  let x_76 : f32 = (*(a)).x;
+  let x_78 : f32 = (*(b)).y;
+  let x_81 : f32 = (*(b)).x;
+  let x_83 : f32 = (*(a)).y;
+  return ((x_76 * x_78) - (x_81 * x_83));
+}
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a_1 : ptr<function, vec2<f32>>, b_1 : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var pab : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var pbc : f32;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var pca : f32;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_145 : bool;
+  var x_185 : bool;
+  var x_146_phi : bool;
+  var x_186_phi : bool;
+  let x_88 : f32 = (*(p)).x;
+  let x_90 : f32 = (*(a_1)).x;
+  let x_93 : f32 = (*(p)).y;
+  let x_95 : f32 = (*(a_1)).y;
+  let x_99 : f32 = (*(b_1)).x;
+  let x_101 : f32 = (*(a_1)).x;
+  let x_104 : f32 = (*(b_1)).y;
+  let x_106 : f32 = (*(a_1)).y;
+  param = vec2<f32>((x_88 - x_90), (x_93 - x_95));
+  param_1 = vec2<f32>((x_99 - x_101), (x_104 - x_106));
+  let x_109 : f32 = cross2d_vf2_vf2_(&(param), &(param_1));
+  pab = x_109;
+  let x_111 : f32 = (*(p)).x;
+  let x_113 : f32 = (*(b_1)).x;
+  let x_116 : f32 = (*(p)).y;
+  let x_118 : f32 = (*(b_1)).y;
+  let x_122 : f32 = (*(c)).x;
+  let x_124 : f32 = (*(b_1)).x;
+  let x_127 : f32 = (*(c)).y;
+  let x_129 : f32 = (*(b_1)).y;
+  param_2 = vec2<f32>((x_111 - x_113), (x_116 - x_118));
+  param_3 = vec2<f32>((x_122 - x_124), (x_127 - x_129));
+  let x_132 : f32 = cross2d_vf2_vf2_(&(param_2), &(param_3));
+  pbc = x_132;
+  let x_133 : f32 = pab;
+  let x_135 : f32 = pbc;
+  let x_137 : bool = ((x_133 < 0.0) && (x_135 < 0.0));
+  x_146_phi = x_137;
+  if (!(x_137)) {
+    let x_141 : f32 = pab;
+    let x_143 : f32 = pbc;
+    x_145 = ((x_141 >= 0.0) && (x_143 >= 0.0));
+    x_146_phi = x_145;
+  }
+  let x_146 : bool = x_146_phi;
+  if (!(x_146)) {
+    return 0;
+  }
+  let x_151 : f32 = (*(p)).x;
+  let x_153 : f32 = (*(c)).x;
+  let x_156 : f32 = (*(p)).y;
+  let x_158 : f32 = (*(c)).y;
+  let x_162 : f32 = (*(a_1)).x;
+  let x_164 : f32 = (*(c)).x;
+  let x_167 : f32 = (*(a_1)).y;
+  let x_169 : f32 = (*(c)).y;
+  param_4 = vec2<f32>((x_151 - x_153), (x_156 - x_158));
+  param_5 = vec2<f32>((x_162 - x_164), (x_167 - x_169));
+  let x_172 : f32 = cross2d_vf2_vf2_(&(param_4), &(param_5));
+  pca = x_172;
+  let x_173 : f32 = pab;
+  let x_175 : f32 = pca;
+  let x_177 : bool = ((x_173 < 0.0) && (x_175 < 0.0));
+  x_186_phi = x_177;
+  if (!(x_177)) {
+    let x_181 : f32 = pab;
+    let x_183 : f32 = pca;
+    x_185 = ((x_181 >= 0.0) && (x_183 >= 0.0));
+    x_186_phi = x_185;
+  }
+  let x_186 : bool = x_186_phi;
+  if (!(x_186)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var pos : vec2<f32>;
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_63 : vec4<f32> = gl_FragCoord;
+  let x_66 : vec2<f32> = x_24.resolution;
+  pos = (vec2<f32>(x_63.x, x_63.y) / x_66);
+  let x_68 : vec2<f32> = pos;
+  param_6 = x_68;
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_69 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_69 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm
new file mode 100644
index 0000000..6806bf0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm
@@ -0,0 +1,243 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle(vf2;vf2;vf2;vf2;"
+               OpName %p "p"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %_ ""
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %int = OpTypeInt 32 1
+         %28 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+         %43 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+         %46 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+         %49 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %53 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %23
+         %54 = OpLabel
+    %param_5 = OpVariable %_ptr_Function_v2float Function
+    %param_6 = OpVariable %_ptr_Function_v2float Function
+    %param_7 = OpVariable %_ptr_Function_v2float Function
+    %param_8 = OpVariable %_ptr_Function_v2float Function
+         %55 = OpLoad %v4float %gl_FragCoord
+         %56 = OpVectorShuffle %v2float %55 %55 0 1
+         %57 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %58 = OpLoad %v2float %57
+         %59 = OpFDiv %v2float %56 %58
+               OpStore %param_5 %59
+               OpStore %param_6 %43
+               OpStore %param_7 %46
+               OpStore %param_8 %49
+         %60 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_5 %param_6 %param_7 %param_8
+         %61 = OpIEqual %bool %60 %int_1
+               OpSelectionMerge %62 None
+               OpBranchConditional %61 %63 %64
+         %63 = OpLabel
+               OpStore %_GLF_color %52
+               OpBranch %62
+         %64 = OpLabel
+               OpStore %_GLF_color %53
+               OpBranch %62
+         %62 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %28
+          %p = OpFunctionParameter %_ptr_Function_v2float
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %65 = OpLabel
+         %66 = OpVariable %_ptr_Function_float Function
+         %67 = OpVariable %_ptr_Function_float Function
+         %68 = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v2float Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+    %param_2 = OpVariable %_ptr_Function_v2float Function
+    %param_3 = OpVariable %_ptr_Function_v2float Function
+    %param_4 = OpVariable %_ptr_Function_v2float Function
+         %69 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %70 = OpLoad %float %69
+         %71 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %72 = OpLoad %float %71
+         %73 = OpFSub %float %70 %72
+         %74 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %75 = OpLoad %float %74
+         %76 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %77 = OpLoad %float %76
+         %78 = OpFSub %float %75 %77
+         %79 = OpCompositeConstruct %v2float %73 %78
+         %80 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %81 = OpLoad %float %80
+         %82 = OpLoad %float %71
+         %83 = OpFSub %float %81 %82
+         %84 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %85 = OpLoad %float %84
+         %86 = OpLoad %float %76
+         %87 = OpFSub %float %85 %86
+         %88 = OpCompositeConstruct %v2float %83 %87
+               OpStore %param %79
+               OpStore %param_0 %88
+         %89 = OpAccessChain %_ptr_Function_float %param %uint_0
+         %90 = OpLoad %float %89
+         %91 = OpAccessChain %_ptr_Function_float %param_0 %uint_1
+         %92 = OpLoad %float %91
+         %93 = OpFMul %float %90 %92
+         %94 = OpAccessChain %_ptr_Function_float %param_0 %uint_0
+         %95 = OpLoad %float %94
+         %96 = OpAccessChain %_ptr_Function_float %param %uint_1
+         %97 = OpLoad %float %96
+         %98 = OpFMul %float %95 %97
+         %99 = OpFSub %float %93 %98
+               OpStore %68 %99
+        %100 = OpLoad %float %69
+        %101 = OpLoad %float %80
+        %102 = OpFSub %float %100 %101
+        %103 = OpLoad %float %74
+        %104 = OpLoad %float %84
+        %105 = OpFSub %float %103 %104
+        %106 = OpCompositeConstruct %v2float %102 %105
+        %107 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %108 = OpLoad %float %107
+        %109 = OpLoad %float %80
+        %110 = OpFSub %float %108 %109
+        %111 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %112 = OpLoad %float %111
+        %113 = OpLoad %float %84
+        %114 = OpFSub %float %112 %113
+        %115 = OpCompositeConstruct %v2float %110 %114
+               OpStore %param_1 %106
+               OpStore %param_2 %115
+        %116 = OpAccessChain %_ptr_Function_float %param_1 %uint_0
+        %117 = OpLoad %float %116
+        %118 = OpAccessChain %_ptr_Function_float %param_2 %uint_1
+        %119 = OpLoad %float %118
+        %120 = OpFMul %float %117 %119
+        %121 = OpAccessChain %_ptr_Function_float %param_2 %uint_0
+        %122 = OpLoad %float %121
+        %123 = OpAccessChain %_ptr_Function_float %param_1 %uint_1
+        %124 = OpLoad %float %123
+        %125 = OpFMul %float %122 %124
+        %126 = OpFSub %float %120 %125
+               OpStore %67 %126
+        %127 = OpFOrdLessThan %bool %99 %float_0
+        %128 = OpFOrdLessThan %bool %126 %float_0
+        %129 = OpLogicalAnd %bool %127 %128
+        %130 = OpLogicalNot %bool %129
+               OpSelectionMerge %131 None
+               OpBranchConditional %130 %132 %131
+        %132 = OpLabel
+        %133 = OpFOrdGreaterThanEqual %bool %99 %float_0
+        %134 = OpFOrdGreaterThanEqual %bool %126 %float_0
+        %135 = OpLogicalAnd %bool %133 %134
+               OpBranch %131
+        %131 = OpLabel
+        %136 = OpPhi %bool %129 %65 %135 %132
+        %137 = OpLogicalNot %bool %136
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+               OpReturnValue %int_0
+        %138 = OpLabel
+        %140 = OpLoad %float %69
+        %141 = OpLoad %float %107
+        %142 = OpFSub %float %140 %141
+        %143 = OpLoad %float %74
+        %144 = OpLoad %float %111
+        %145 = OpFSub %float %143 %144
+        %146 = OpCompositeConstruct %v2float %142 %145
+        %147 = OpLoad %float %71
+        %148 = OpLoad %float %107
+        %149 = OpFSub %float %147 %148
+        %150 = OpLoad %float %76
+        %151 = OpLoad %float %111
+        %152 = OpFSub %float %150 %151
+        %153 = OpCompositeConstruct %v2float %149 %152
+               OpStore %param_3 %146
+               OpStore %param_4 %153
+        %154 = OpAccessChain %_ptr_Function_float %param_3 %uint_0
+        %155 = OpLoad %float %154
+        %156 = OpAccessChain %_ptr_Function_float %param_4 %uint_1
+        %157 = OpLoad %float %156
+        %158 = OpFMul %float %155 %157
+        %159 = OpAccessChain %_ptr_Function_float %param_4 %uint_0
+        %160 = OpLoad %float %159
+        %161 = OpAccessChain %_ptr_Function_float %param_3 %uint_1
+        %162 = OpLoad %float %161
+        %163 = OpFMul %float %160 %162
+        %164 = OpFSub %float %158 %163
+               OpStore %66 %164
+        %165 = OpFOrdLessThan %bool %164 %float_0
+        %166 = OpLogicalAnd %bool %127 %165
+        %167 = OpLogicalNot %bool %166
+               OpSelectionMerge %168 None
+               OpBranchConditional %167 %169 %168
+        %169 = OpLabel
+        %170 = OpFOrdGreaterThanEqual %bool %99 %float_0
+        %171 = OpFOrdGreaterThanEqual %bool %164 %float_0
+        %172 = OpLogicalAnd %bool %170 %171
+               OpBranch %168
+        %168 = OpLabel
+        %173 = OpPhi %bool %166 %138 %172 %169
+        %174 = OpLogicalNot %bool %173
+               OpSelectionMerge %175 None
+               OpBranchConditional %174 %176 %175
+        %176 = OpLabel
+               OpReturnValue %int_0
+        %175 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..c32dae7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.hlsl
@@ -0,0 +1,144 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_17 : register(b0, space0) {
+  uint4 x_17[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a, inout float2 b, inout float2 c) {
+  float x_66 = 0.0f;
+  float x_67 = 0.0f;
+  float x_68 = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_135 = false;
+  bool x_172 = false;
+  bool x_136_phi = false;
+  bool x_173_phi = false;
+  const float x_70 = p.x;
+  const float x_72 = a.x;
+  const float x_75 = p.y;
+  const float x_77 = a.y;
+  const float x_81 = b.x;
+  const float x_82 = a.x;
+  const float x_85 = b.y;
+  const float x_86 = a.y;
+  param = float2((x_70 - x_72), (x_75 - x_77));
+  param_1 = float2((x_81 - x_82), (x_85 - x_86));
+  const float x_90 = param.x;
+  const float x_92 = param_1.y;
+  const float x_95 = param_1.x;
+  const float x_97 = param.y;
+  const float x_99 = ((x_90 * x_92) - (x_95 * x_97));
+  x_68 = x_99;
+  const float x_100 = p.x;
+  const float x_101 = b.x;
+  const float x_103 = p.y;
+  const float x_104 = b.y;
+  const float x_108 = c.x;
+  const float x_109 = b.x;
+  const float x_112 = c.y;
+  const float x_113 = b.y;
+  param_2 = float2((x_100 - x_101), (x_103 - x_104));
+  param_3 = float2((x_108 - x_109), (x_112 - x_113));
+  const float x_117 = param_2.x;
+  const float x_119 = param_3.y;
+  const float x_122 = param_3.x;
+  const float x_124 = param_2.y;
+  const float x_126 = ((x_117 * x_119) - (x_122 * x_124));
+  x_67 = x_126;
+  const bool x_127 = (x_99 < 0.0f);
+  bool tint_tmp = x_127;
+  if (tint_tmp) {
+    tint_tmp = (x_126 < 0.0f);
+  }
+  const bool x_129 = (tint_tmp);
+  x_136_phi = x_129;
+  if (!(x_129)) {
+    bool tint_tmp_1 = (x_99 >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_126 >= 0.0f);
+    }
+    x_135 = (tint_tmp_1);
+    x_136_phi = x_135;
+  }
+  if (!(x_136_phi)) {
+    return 0;
+  }
+  const float x_140 = p.x;
+  const float x_141 = c.x;
+  const float x_143 = p.y;
+  const float x_144 = c.y;
+  const float x_147 = a.x;
+  const float x_148 = c.x;
+  const float x_150 = a.y;
+  const float x_151 = c.y;
+  param_4 = float2((x_140 - x_141), (x_143 - x_144));
+  param_5 = float2((x_147 - x_148), (x_150 - x_151));
+  const float x_155 = param_4.x;
+  const float x_157 = param_5.y;
+  const float x_160 = param_5.x;
+  const float x_162 = param_4.y;
+  const float x_164 = ((x_155 * x_157) - (x_160 * x_162));
+  x_66 = x_164;
+  bool tint_tmp_2 = x_127;
+  if (tint_tmp_2) {
+    tint_tmp_2 = (x_164 < 0.0f);
+  }
+  const bool x_166 = (tint_tmp_2);
+  x_173_phi = x_166;
+  if (!(x_166)) {
+    bool tint_tmp_3 = (x_99 >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (x_164 >= 0.0f);
+    }
+    x_172 = (tint_tmp_3);
+    x_173_phi = x_172;
+  }
+  if (!(x_173_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_55 = gl_FragCoord;
+  const float2 x_58 = asfloat(x_17[0].xy);
+  param_6 = (float2(x_55.x, x_55.y) / x_58);
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_60 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_60 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.msl
new file mode 100644
index 0000000..fc78937
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.msl
@@ -0,0 +1,129 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(thread float2* const p, thread float2* const a, thread float2* const b, thread float2* const c) {
+  float x_66 = 0.0f;
+  float x_67 = 0.0f;
+  float x_68 = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_135 = false;
+  bool x_172 = false;
+  bool x_136_phi = false;
+  bool x_173_phi = false;
+  float const x_70 = (*(p)).x;
+  float const x_72 = (*(a)).x;
+  float const x_75 = (*(p)).y;
+  float const x_77 = (*(a)).y;
+  float const x_81 = (*(b)).x;
+  float const x_82 = (*(a)).x;
+  float const x_85 = (*(b)).y;
+  float const x_86 = (*(a)).y;
+  param = float2((x_70 - x_72), (x_75 - x_77));
+  param_1 = float2((x_81 - x_82), (x_85 - x_86));
+  float const x_90 = param.x;
+  float const x_92 = param_1.y;
+  float const x_95 = param_1.x;
+  float const x_97 = param.y;
+  float const x_99 = ((x_90 * x_92) - (x_95 * x_97));
+  x_68 = x_99;
+  float const x_100 = (*(p)).x;
+  float const x_101 = (*(b)).x;
+  float const x_103 = (*(p)).y;
+  float const x_104 = (*(b)).y;
+  float const x_108 = (*(c)).x;
+  float const x_109 = (*(b)).x;
+  float const x_112 = (*(c)).y;
+  float const x_113 = (*(b)).y;
+  param_2 = float2((x_100 - x_101), (x_103 - x_104));
+  param_3 = float2((x_108 - x_109), (x_112 - x_113));
+  float const x_117 = param_2.x;
+  float const x_119 = param_3.y;
+  float const x_122 = param_3.x;
+  float const x_124 = param_2.y;
+  float const x_126 = ((x_117 * x_119) - (x_122 * x_124));
+  x_67 = x_126;
+  bool const x_127 = (x_99 < 0.0f);
+  bool const x_129 = (x_127 && (x_126 < 0.0f));
+  x_136_phi = x_129;
+  if (!(x_129)) {
+    x_135 = ((x_99 >= 0.0f) && (x_126 >= 0.0f));
+    x_136_phi = x_135;
+  }
+  bool const x_136 = x_136_phi;
+  if (!(x_136)) {
+    return 0;
+  }
+  float const x_140 = (*(p)).x;
+  float const x_141 = (*(c)).x;
+  float const x_143 = (*(p)).y;
+  float const x_144 = (*(c)).y;
+  float const x_147 = (*(a)).x;
+  float const x_148 = (*(c)).x;
+  float const x_150 = (*(a)).y;
+  float const x_151 = (*(c)).y;
+  param_4 = float2((x_140 - x_141), (x_143 - x_144));
+  param_5 = float2((x_147 - x_148), (x_150 - x_151));
+  float const x_155 = param_4.x;
+  float const x_157 = param_5.y;
+  float const x_160 = param_5.x;
+  float const x_162 = param_4.y;
+  float const x_164 = ((x_155 * x_157) - (x_160 * x_162));
+  x_66 = x_164;
+  bool const x_166 = (x_127 && (x_164 < 0.0f));
+  x_173_phi = x_166;
+  if (!(x_166)) {
+    x_172 = ((x_99 >= 0.0f) && (x_164 >= 0.0f));
+    x_173_phi = x_172;
+  }
+  bool const x_173 = x_173_phi;
+  if (!(x_173)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_17, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_55 = *(tint_symbol_5);
+  float2 const x_58 = x_17.resolution;
+  param_6 = (float2(x_55.x, x_55.y) / x_58);
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_60 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_60 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_17 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_17, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..69ebf787
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.spvasm
@@ -0,0 +1,339 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 257
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_17 "x_17"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_66 "x_66"
+               OpName %x_67 "x_67"
+               OpName %x_68 "x_68"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_135 "x_135"
+               OpName %x_172 "x_172"
+               OpName %x_136_phi "x_136_phi"
+               OpName %x_173_phi "x_173_phi"
+               OpName %main_1 "main_1"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_17 NonWritable
+               OpDecorate %x_17 DescriptorSet 0
+               OpDecorate %x_17 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_17 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+         %30 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %39 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %207 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %225 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %228 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %231 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+    %float_1 = OpConstant %float 1
+        %242 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %243 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %244 = OpTypeFunction %void %main_out
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %15
+          %p = OpFunctionParameter %_ptr_Function_v2float
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %23 = OpLabel
+       %x_66 = OpVariable %_ptr_Function_float Function %26
+       %x_67 = OpVariable %_ptr_Function_float Function %26
+       %x_68 = OpVariable %_ptr_Function_float Function %26
+      %param = OpVariable %_ptr_Function_v2float Function %30
+    %param_1 = OpVariable %_ptr_Function_v2float Function %30
+    %param_2 = OpVariable %_ptr_Function_v2float Function %30
+    %param_3 = OpVariable %_ptr_Function_v2float Function %30
+    %param_4 = OpVariable %_ptr_Function_v2float Function %30
+    %param_5 = OpVariable %_ptr_Function_v2float Function %30
+      %x_135 = OpVariable %_ptr_Function_bool Function %39
+      %x_172 = OpVariable %_ptr_Function_bool Function %39
+  %x_136_phi = OpVariable %_ptr_Function_bool Function %39
+  %x_173_phi = OpVariable %_ptr_Function_bool Function %39
+         %46 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %47 = OpLoad %float %46
+         %49 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %50 = OpLoad %float %49
+         %53 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %54 = OpLoad %float %53
+         %56 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %60 = OpLoad %float %59
+         %62 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %66 = OpLoad %float %65
+         %68 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %69 = OpLoad %float %68
+         %70 = OpFSub %float %47 %50
+         %71 = OpFSub %float %54 %57
+         %72 = OpCompositeConstruct %v2float %70 %71
+               OpStore %param %72
+         %73 = OpFSub %float %60 %63
+         %74 = OpFSub %float %66 %69
+         %75 = OpCompositeConstruct %v2float %73 %74
+               OpStore %param_1 %75
+         %76 = OpAccessChain %_ptr_Function_float %param %uint_0
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Function_float %param_1 %uint_1
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Function_float %param_1 %uint_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Function_float %param %uint_1
+         %83 = OpLoad %float %82
+         %84 = OpFMul %float %77 %79
+         %85 = OpFMul %float %81 %83
+         %86 = OpFSub %float %84 %85
+               OpStore %x_68 %86
+         %88 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %89 = OpLoad %float %88
+         %91 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %92 = OpLoad %float %91
+         %94 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %95 = OpLoad %float %94
+         %97 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %98 = OpLoad %float %97
+        %100 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %101 = OpLoad %float %100
+        %103 = OpAccessChain %_ptr_Function_float %b %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %107 = OpLoad %float %106
+        %109 = OpAccessChain %_ptr_Function_float %b %uint_1
+        %110 = OpLoad %float %109
+        %111 = OpFSub %float %89 %92
+        %112 = OpFSub %float %95 %98
+        %113 = OpCompositeConstruct %v2float %111 %112
+               OpStore %param_2 %113
+        %114 = OpFSub %float %101 %104
+        %115 = OpFSub %float %107 %110
+        %116 = OpCompositeConstruct %v2float %114 %115
+               OpStore %param_3 %116
+        %117 = OpAccessChain %_ptr_Function_float %param_2 %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpAccessChain %_ptr_Function_float %param_3 %uint_1
+        %120 = OpLoad %float %119
+        %121 = OpAccessChain %_ptr_Function_float %param_3 %uint_0
+        %122 = OpLoad %float %121
+        %123 = OpAccessChain %_ptr_Function_float %param_2 %uint_1
+        %124 = OpLoad %float %123
+        %125 = OpFMul %float %118 %120
+        %126 = OpFMul %float %122 %124
+        %127 = OpFSub %float %125 %126
+               OpStore %x_67 %127
+        %129 = OpFOrdLessThan %bool %86 %float_0
+               OpSelectionMerge %130 None
+               OpBranchConditional %129 %131 %130
+        %131 = OpLabel
+        %132 = OpFOrdLessThan %bool %127 %float_0
+               OpBranch %130
+        %130 = OpLabel
+        %133 = OpPhi %bool %129 %23 %132 %131
+               OpStore %x_136_phi %133
+        %134 = OpLogicalNot %bool %133
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %135
+        %136 = OpLabel
+        %137 = OpFOrdGreaterThanEqual %bool %86 %float_0
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+        %140 = OpFOrdGreaterThanEqual %bool %127 %float_0
+               OpBranch %138
+        %138 = OpLabel
+        %141 = OpPhi %bool %137 %136 %140 %139
+               OpStore %x_135 %141
+        %142 = OpLoad %bool %x_135
+               OpStore %x_136_phi %142
+               OpBranch %135
+        %135 = OpLabel
+        %143 = OpLoad %bool %x_136_phi
+        %144 = OpLogicalNot %bool %143
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %145
+        %146 = OpLabel
+               OpReturnValue %int_0
+        %145 = OpLabel
+        %149 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %150 = OpLoad %float %149
+        %152 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %153 = OpLoad %float %152
+        %155 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %156 = OpLoad %float %155
+        %158 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %159 = OpLoad %float %158
+        %161 = OpAccessChain %_ptr_Function_float %a %uint_0
+        %162 = OpLoad %float %161
+        %164 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %165 = OpLoad %float %164
+        %167 = OpAccessChain %_ptr_Function_float %a %uint_1
+        %168 = OpLoad %float %167
+        %170 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %171 = OpLoad %float %170
+        %172 = OpFSub %float %150 %153
+        %173 = OpFSub %float %156 %159
+        %174 = OpCompositeConstruct %v2float %172 %173
+               OpStore %param_4 %174
+        %175 = OpFSub %float %162 %165
+        %176 = OpFSub %float %168 %171
+        %177 = OpCompositeConstruct %v2float %175 %176
+               OpStore %param_5 %177
+        %178 = OpAccessChain %_ptr_Function_float %param_4 %uint_0
+        %179 = OpLoad %float %178
+        %180 = OpAccessChain %_ptr_Function_float %param_5 %uint_1
+        %181 = OpLoad %float %180
+        %182 = OpAccessChain %_ptr_Function_float %param_5 %uint_0
+        %183 = OpLoad %float %182
+        %184 = OpAccessChain %_ptr_Function_float %param_4 %uint_1
+        %185 = OpLoad %float %184
+        %186 = OpFMul %float %179 %181
+        %187 = OpFMul %float %183 %185
+        %188 = OpFSub %float %186 %187
+               OpStore %x_66 %188
+               OpSelectionMerge %189 None
+               OpBranchConditional %129 %190 %189
+        %190 = OpLabel
+        %191 = OpFOrdLessThan %bool %188 %float_0
+               OpBranch %189
+        %189 = OpLabel
+        %192 = OpPhi %bool %129 %145 %191 %190
+               OpStore %x_173_phi %192
+        %193 = OpLogicalNot %bool %192
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %194
+        %195 = OpLabel
+        %196 = OpFOrdGreaterThanEqual %bool %86 %float_0
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+        %199 = OpFOrdGreaterThanEqual %bool %188 %float_0
+               OpBranch %197
+        %197 = OpLabel
+        %200 = OpPhi %bool %196 %195 %199 %198
+               OpStore %x_172 %200
+        %201 = OpLoad %bool %x_172
+               OpStore %x_173_phi %201
+               OpBranch %194
+        %194 = OpLabel
+        %202 = OpLoad %bool %x_173_phi
+        %203 = OpLogicalNot %bool %202
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %204
+        %205 = OpLabel
+               OpReturnValue %int_0
+        %204 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %207
+        %210 = OpLabel
+    %param_6 = OpVariable %_ptr_Function_v2float Function %30
+    %param_7 = OpVariable %_ptr_Function_v2float Function %30
+    %param_8 = OpVariable %_ptr_Function_v2float Function %30
+    %param_9 = OpVariable %_ptr_Function_v2float Function %30
+        %215 = OpLoad %v4float %gl_FragCoord
+        %217 = OpAccessChain %_ptr_Uniform_v2float %x_17 %uint_0
+        %218 = OpLoad %v2float %217
+        %219 = OpCompositeExtract %float %215 0
+        %220 = OpCompositeExtract %float %215 1
+        %221 = OpCompositeConstruct %v2float %219 %220
+        %222 = OpFDiv %v2float %221 %218
+               OpStore %param_6 %222
+               OpStore %param_7 %225
+               OpStore %param_8 %228
+               OpStore %param_9 %231
+        %232 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %237 = OpIEqual %bool %232 %int_1
+               OpSelectionMerge %238 None
+               OpBranchConditional %237 %239 %240
+        %239 = OpLabel
+               OpStore %x_GLF_color %242
+               OpBranch %238
+        %240 = OpLabel
+               OpStore %x_GLF_color %243
+               OpBranch %238
+        %238 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %244
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %248 = OpLabel
+        %249 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %249
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %207
+        %251 = OpLabel
+        %252 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %252
+        %253 = OpFunctionCall %void %main_1
+        %255 = OpLoad %v4float %x_GLF_color
+        %256 = OpCompositeConstruct %main_out %255
+        %254 = OpFunctionCall %void %tint_symbol_3 %256
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..414b559
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.spvasm.expected.wgsl
@@ -0,0 +1,136 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_17 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var x_66 : f32;
+  var x_67 : f32;
+  var x_68 : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_135 : bool;
+  var x_172 : bool;
+  var x_136_phi : bool;
+  var x_173_phi : bool;
+  let x_69 : ptr<function, f32> = &((*(p)).x);
+  let x_70 : f32 = *(x_69);
+  let x_71 : ptr<function, f32> = &((*(a)).x);
+  let x_72 : f32 = *(x_71);
+  let x_74 : ptr<function, f32> = &((*(p)).y);
+  let x_75 : f32 = *(x_74);
+  let x_76 : ptr<function, f32> = &((*(a)).y);
+  let x_77 : f32 = *(x_76);
+  let x_80 : ptr<function, f32> = &((*(b)).x);
+  let x_81 : f32 = *(x_80);
+  let x_82 : f32 = *(x_71);
+  let x_84 : ptr<function, f32> = &((*(b)).y);
+  let x_85 : f32 = *(x_84);
+  let x_86 : f32 = *(x_76);
+  param = vec2<f32>((x_70 - x_72), (x_75 - x_77));
+  param_1 = vec2<f32>((x_81 - x_82), (x_85 - x_86));
+  let x_90 : f32 = param.x;
+  let x_92 : f32 = param_1.y;
+  let x_95 : f32 = param_1.x;
+  let x_97 : f32 = param.y;
+  let x_99 : f32 = ((x_90 * x_92) - (x_95 * x_97));
+  x_68 = x_99;
+  let x_100 : f32 = *(x_69);
+  let x_101 : f32 = *(x_80);
+  let x_103 : f32 = *(x_74);
+  let x_104 : f32 = *(x_84);
+  let x_107 : ptr<function, f32> = &((*(c)).x);
+  let x_108 : f32 = *(x_107);
+  let x_109 : f32 = *(x_80);
+  let x_111 : ptr<function, f32> = &((*(c)).y);
+  let x_112 : f32 = *(x_111);
+  let x_113 : f32 = *(x_84);
+  param_2 = vec2<f32>((x_100 - x_101), (x_103 - x_104));
+  param_3 = vec2<f32>((x_108 - x_109), (x_112 - x_113));
+  let x_117 : f32 = param_2.x;
+  let x_119 : f32 = param_3.y;
+  let x_122 : f32 = param_3.x;
+  let x_124 : f32 = param_2.y;
+  let x_126 : f32 = ((x_117 * x_119) - (x_122 * x_124));
+  x_67 = x_126;
+  let x_127 : bool = (x_99 < 0.0);
+  let x_129 : bool = (x_127 && (x_126 < 0.0));
+  x_136_phi = x_129;
+  if (!(x_129)) {
+    x_135 = ((x_99 >= 0.0) && (x_126 >= 0.0));
+    x_136_phi = x_135;
+  }
+  let x_136 : bool = x_136_phi;
+  if (!(x_136)) {
+    return 0;
+  }
+  let x_140 : f32 = *(x_69);
+  let x_141 : f32 = *(x_107);
+  let x_143 : f32 = *(x_74);
+  let x_144 : f32 = *(x_111);
+  let x_147 : f32 = *(x_71);
+  let x_148 : f32 = *(x_107);
+  let x_150 : f32 = *(x_76);
+  let x_151 : f32 = *(x_111);
+  param_4 = vec2<f32>((x_140 - x_141), (x_143 - x_144));
+  param_5 = vec2<f32>((x_147 - x_148), (x_150 - x_151));
+  let x_155 : f32 = param_4.x;
+  let x_157 : f32 = param_5.y;
+  let x_160 : f32 = param_5.x;
+  let x_162 : f32 = param_4.y;
+  let x_164 : f32 = ((x_155 * x_157) - (x_160 * x_162));
+  x_66 = x_164;
+  let x_166 : bool = (x_127 && (x_164 < 0.0));
+  x_173_phi = x_166;
+  if (!(x_166)) {
+    x_172 = ((x_99 >= 0.0) && (x_164 >= 0.0));
+    x_173_phi = x_172;
+  }
+  let x_173 : bool = x_173_phi;
+  if (!(x_173)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_17.resolution;
+  param_6 = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_60 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_60 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
new file mode 100644
index 0000000..414b559
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
@@ -0,0 +1,136 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_17 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var x_66 : f32;
+  var x_67 : f32;
+  var x_68 : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_135 : bool;
+  var x_172 : bool;
+  var x_136_phi : bool;
+  var x_173_phi : bool;
+  let x_69 : ptr<function, f32> = &((*(p)).x);
+  let x_70 : f32 = *(x_69);
+  let x_71 : ptr<function, f32> = &((*(a)).x);
+  let x_72 : f32 = *(x_71);
+  let x_74 : ptr<function, f32> = &((*(p)).y);
+  let x_75 : f32 = *(x_74);
+  let x_76 : ptr<function, f32> = &((*(a)).y);
+  let x_77 : f32 = *(x_76);
+  let x_80 : ptr<function, f32> = &((*(b)).x);
+  let x_81 : f32 = *(x_80);
+  let x_82 : f32 = *(x_71);
+  let x_84 : ptr<function, f32> = &((*(b)).y);
+  let x_85 : f32 = *(x_84);
+  let x_86 : f32 = *(x_76);
+  param = vec2<f32>((x_70 - x_72), (x_75 - x_77));
+  param_1 = vec2<f32>((x_81 - x_82), (x_85 - x_86));
+  let x_90 : f32 = param.x;
+  let x_92 : f32 = param_1.y;
+  let x_95 : f32 = param_1.x;
+  let x_97 : f32 = param.y;
+  let x_99 : f32 = ((x_90 * x_92) - (x_95 * x_97));
+  x_68 = x_99;
+  let x_100 : f32 = *(x_69);
+  let x_101 : f32 = *(x_80);
+  let x_103 : f32 = *(x_74);
+  let x_104 : f32 = *(x_84);
+  let x_107 : ptr<function, f32> = &((*(c)).x);
+  let x_108 : f32 = *(x_107);
+  let x_109 : f32 = *(x_80);
+  let x_111 : ptr<function, f32> = &((*(c)).y);
+  let x_112 : f32 = *(x_111);
+  let x_113 : f32 = *(x_84);
+  param_2 = vec2<f32>((x_100 - x_101), (x_103 - x_104));
+  param_3 = vec2<f32>((x_108 - x_109), (x_112 - x_113));
+  let x_117 : f32 = param_2.x;
+  let x_119 : f32 = param_3.y;
+  let x_122 : f32 = param_3.x;
+  let x_124 : f32 = param_2.y;
+  let x_126 : f32 = ((x_117 * x_119) - (x_122 * x_124));
+  x_67 = x_126;
+  let x_127 : bool = (x_99 < 0.0);
+  let x_129 : bool = (x_127 && (x_126 < 0.0));
+  x_136_phi = x_129;
+  if (!(x_129)) {
+    x_135 = ((x_99 >= 0.0) && (x_126 >= 0.0));
+    x_136_phi = x_135;
+  }
+  let x_136 : bool = x_136_phi;
+  if (!(x_136)) {
+    return 0;
+  }
+  let x_140 : f32 = *(x_69);
+  let x_141 : f32 = *(x_107);
+  let x_143 : f32 = *(x_74);
+  let x_144 : f32 = *(x_111);
+  let x_147 : f32 = *(x_71);
+  let x_148 : f32 = *(x_107);
+  let x_150 : f32 = *(x_76);
+  let x_151 : f32 = *(x_111);
+  param_4 = vec2<f32>((x_140 - x_141), (x_143 - x_144));
+  param_5 = vec2<f32>((x_147 - x_148), (x_150 - x_151));
+  let x_155 : f32 = param_4.x;
+  let x_157 : f32 = param_5.y;
+  let x_160 : f32 = param_5.x;
+  let x_162 : f32 = param_4.y;
+  let x_164 : f32 = ((x_155 * x_157) - (x_160 * x_162));
+  x_66 = x_164;
+  let x_166 : bool = (x_127 && (x_164 < 0.0));
+  x_173_phi = x_166;
+  if (!(x_166)) {
+    x_172 = ((x_99 >= 0.0) && (x_164 >= 0.0));
+    x_173_phi = x_172;
+  }
+  let x_173 : bool = x_173_phi;
+  if (!(x_173)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_17.resolution;
+  param_6 = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_60 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_60 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..c32dae7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.hlsl
@@ -0,0 +1,144 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_17 : register(b0, space0) {
+  uint4 x_17[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a, inout float2 b, inout float2 c) {
+  float x_66 = 0.0f;
+  float x_67 = 0.0f;
+  float x_68 = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_135 = false;
+  bool x_172 = false;
+  bool x_136_phi = false;
+  bool x_173_phi = false;
+  const float x_70 = p.x;
+  const float x_72 = a.x;
+  const float x_75 = p.y;
+  const float x_77 = a.y;
+  const float x_81 = b.x;
+  const float x_82 = a.x;
+  const float x_85 = b.y;
+  const float x_86 = a.y;
+  param = float2((x_70 - x_72), (x_75 - x_77));
+  param_1 = float2((x_81 - x_82), (x_85 - x_86));
+  const float x_90 = param.x;
+  const float x_92 = param_1.y;
+  const float x_95 = param_1.x;
+  const float x_97 = param.y;
+  const float x_99 = ((x_90 * x_92) - (x_95 * x_97));
+  x_68 = x_99;
+  const float x_100 = p.x;
+  const float x_101 = b.x;
+  const float x_103 = p.y;
+  const float x_104 = b.y;
+  const float x_108 = c.x;
+  const float x_109 = b.x;
+  const float x_112 = c.y;
+  const float x_113 = b.y;
+  param_2 = float2((x_100 - x_101), (x_103 - x_104));
+  param_3 = float2((x_108 - x_109), (x_112 - x_113));
+  const float x_117 = param_2.x;
+  const float x_119 = param_3.y;
+  const float x_122 = param_3.x;
+  const float x_124 = param_2.y;
+  const float x_126 = ((x_117 * x_119) - (x_122 * x_124));
+  x_67 = x_126;
+  const bool x_127 = (x_99 < 0.0f);
+  bool tint_tmp = x_127;
+  if (tint_tmp) {
+    tint_tmp = (x_126 < 0.0f);
+  }
+  const bool x_129 = (tint_tmp);
+  x_136_phi = x_129;
+  if (!(x_129)) {
+    bool tint_tmp_1 = (x_99 >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_126 >= 0.0f);
+    }
+    x_135 = (tint_tmp_1);
+    x_136_phi = x_135;
+  }
+  if (!(x_136_phi)) {
+    return 0;
+  }
+  const float x_140 = p.x;
+  const float x_141 = c.x;
+  const float x_143 = p.y;
+  const float x_144 = c.y;
+  const float x_147 = a.x;
+  const float x_148 = c.x;
+  const float x_150 = a.y;
+  const float x_151 = c.y;
+  param_4 = float2((x_140 - x_141), (x_143 - x_144));
+  param_5 = float2((x_147 - x_148), (x_150 - x_151));
+  const float x_155 = param_4.x;
+  const float x_157 = param_5.y;
+  const float x_160 = param_5.x;
+  const float x_162 = param_4.y;
+  const float x_164 = ((x_155 * x_157) - (x_160 * x_162));
+  x_66 = x_164;
+  bool tint_tmp_2 = x_127;
+  if (tint_tmp_2) {
+    tint_tmp_2 = (x_164 < 0.0f);
+  }
+  const bool x_166 = (tint_tmp_2);
+  x_173_phi = x_166;
+  if (!(x_166)) {
+    bool tint_tmp_3 = (x_99 >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (x_164 >= 0.0f);
+    }
+    x_172 = (tint_tmp_3);
+    x_173_phi = x_172;
+  }
+  if (!(x_173_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_55 = gl_FragCoord;
+  const float2 x_58 = asfloat(x_17[0].xy);
+  param_6 = (float2(x_55.x, x_55.y) / x_58);
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_60 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_60 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.msl
new file mode 100644
index 0000000..fc78937
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.msl
@@ -0,0 +1,129 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(thread float2* const p, thread float2* const a, thread float2* const b, thread float2* const c) {
+  float x_66 = 0.0f;
+  float x_67 = 0.0f;
+  float x_68 = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_135 = false;
+  bool x_172 = false;
+  bool x_136_phi = false;
+  bool x_173_phi = false;
+  float const x_70 = (*(p)).x;
+  float const x_72 = (*(a)).x;
+  float const x_75 = (*(p)).y;
+  float const x_77 = (*(a)).y;
+  float const x_81 = (*(b)).x;
+  float const x_82 = (*(a)).x;
+  float const x_85 = (*(b)).y;
+  float const x_86 = (*(a)).y;
+  param = float2((x_70 - x_72), (x_75 - x_77));
+  param_1 = float2((x_81 - x_82), (x_85 - x_86));
+  float const x_90 = param.x;
+  float const x_92 = param_1.y;
+  float const x_95 = param_1.x;
+  float const x_97 = param.y;
+  float const x_99 = ((x_90 * x_92) - (x_95 * x_97));
+  x_68 = x_99;
+  float const x_100 = (*(p)).x;
+  float const x_101 = (*(b)).x;
+  float const x_103 = (*(p)).y;
+  float const x_104 = (*(b)).y;
+  float const x_108 = (*(c)).x;
+  float const x_109 = (*(b)).x;
+  float const x_112 = (*(c)).y;
+  float const x_113 = (*(b)).y;
+  param_2 = float2((x_100 - x_101), (x_103 - x_104));
+  param_3 = float2((x_108 - x_109), (x_112 - x_113));
+  float const x_117 = param_2.x;
+  float const x_119 = param_3.y;
+  float const x_122 = param_3.x;
+  float const x_124 = param_2.y;
+  float const x_126 = ((x_117 * x_119) - (x_122 * x_124));
+  x_67 = x_126;
+  bool const x_127 = (x_99 < 0.0f);
+  bool const x_129 = (x_127 && (x_126 < 0.0f));
+  x_136_phi = x_129;
+  if (!(x_129)) {
+    x_135 = ((x_99 >= 0.0f) && (x_126 >= 0.0f));
+    x_136_phi = x_135;
+  }
+  bool const x_136 = x_136_phi;
+  if (!(x_136)) {
+    return 0;
+  }
+  float const x_140 = (*(p)).x;
+  float const x_141 = (*(c)).x;
+  float const x_143 = (*(p)).y;
+  float const x_144 = (*(c)).y;
+  float const x_147 = (*(a)).x;
+  float const x_148 = (*(c)).x;
+  float const x_150 = (*(a)).y;
+  float const x_151 = (*(c)).y;
+  param_4 = float2((x_140 - x_141), (x_143 - x_144));
+  param_5 = float2((x_147 - x_148), (x_150 - x_151));
+  float const x_155 = param_4.x;
+  float const x_157 = param_5.y;
+  float const x_160 = param_5.x;
+  float const x_162 = param_4.y;
+  float const x_164 = ((x_155 * x_157) - (x_160 * x_162));
+  x_66 = x_164;
+  bool const x_166 = (x_127 && (x_164 < 0.0f));
+  x_173_phi = x_166;
+  if (!(x_166)) {
+    x_172 = ((x_99 >= 0.0f) && (x_164 >= 0.0f));
+    x_173_phi = x_172;
+  }
+  bool const x_173 = x_173_phi;
+  if (!(x_173)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_17, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_55 = *(tint_symbol_5);
+  float2 const x_58 = x_17.resolution;
+  param_6 = (float2(x_55.x, x_55.y) / x_58);
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_60 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_60 == 1)) {
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_6) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_17 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_17, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..69ebf787
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.spvasm
@@ -0,0 +1,339 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 257
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_17 "x_17"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_66 "x_66"
+               OpName %x_67 "x_67"
+               OpName %x_68 "x_68"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_135 "x_135"
+               OpName %x_172 "x_172"
+               OpName %x_136_phi "x_136_phi"
+               OpName %x_173_phi "x_173_phi"
+               OpName %main_1 "main_1"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_17 NonWritable
+               OpDecorate %x_17 DescriptorSet 0
+               OpDecorate %x_17 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_17 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %26 = OpConstantNull %float
+         %30 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %39 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %207 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %225 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %228 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %231 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+    %float_1 = OpConstant %float 1
+        %242 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %243 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %244 = OpTypeFunction %void %main_out
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %15
+          %p = OpFunctionParameter %_ptr_Function_v2float
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %23 = OpLabel
+       %x_66 = OpVariable %_ptr_Function_float Function %26
+       %x_67 = OpVariable %_ptr_Function_float Function %26
+       %x_68 = OpVariable %_ptr_Function_float Function %26
+      %param = OpVariable %_ptr_Function_v2float Function %30
+    %param_1 = OpVariable %_ptr_Function_v2float Function %30
+    %param_2 = OpVariable %_ptr_Function_v2float Function %30
+    %param_3 = OpVariable %_ptr_Function_v2float Function %30
+    %param_4 = OpVariable %_ptr_Function_v2float Function %30
+    %param_5 = OpVariable %_ptr_Function_v2float Function %30
+      %x_135 = OpVariable %_ptr_Function_bool Function %39
+      %x_172 = OpVariable %_ptr_Function_bool Function %39
+  %x_136_phi = OpVariable %_ptr_Function_bool Function %39
+  %x_173_phi = OpVariable %_ptr_Function_bool Function %39
+         %46 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %47 = OpLoad %float %46
+         %49 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %50 = OpLoad %float %49
+         %53 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %54 = OpLoad %float %53
+         %56 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %60 = OpLoad %float %59
+         %62 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %66 = OpLoad %float %65
+         %68 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %69 = OpLoad %float %68
+         %70 = OpFSub %float %47 %50
+         %71 = OpFSub %float %54 %57
+         %72 = OpCompositeConstruct %v2float %70 %71
+               OpStore %param %72
+         %73 = OpFSub %float %60 %63
+         %74 = OpFSub %float %66 %69
+         %75 = OpCompositeConstruct %v2float %73 %74
+               OpStore %param_1 %75
+         %76 = OpAccessChain %_ptr_Function_float %param %uint_0
+         %77 = OpLoad %float %76
+         %78 = OpAccessChain %_ptr_Function_float %param_1 %uint_1
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Function_float %param_1 %uint_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Function_float %param %uint_1
+         %83 = OpLoad %float %82
+         %84 = OpFMul %float %77 %79
+         %85 = OpFMul %float %81 %83
+         %86 = OpFSub %float %84 %85
+               OpStore %x_68 %86
+         %88 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %89 = OpLoad %float %88
+         %91 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %92 = OpLoad %float %91
+         %94 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %95 = OpLoad %float %94
+         %97 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %98 = OpLoad %float %97
+        %100 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %101 = OpLoad %float %100
+        %103 = OpAccessChain %_ptr_Function_float %b %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %107 = OpLoad %float %106
+        %109 = OpAccessChain %_ptr_Function_float %b %uint_1
+        %110 = OpLoad %float %109
+        %111 = OpFSub %float %89 %92
+        %112 = OpFSub %float %95 %98
+        %113 = OpCompositeConstruct %v2float %111 %112
+               OpStore %param_2 %113
+        %114 = OpFSub %float %101 %104
+        %115 = OpFSub %float %107 %110
+        %116 = OpCompositeConstruct %v2float %114 %115
+               OpStore %param_3 %116
+        %117 = OpAccessChain %_ptr_Function_float %param_2 %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpAccessChain %_ptr_Function_float %param_3 %uint_1
+        %120 = OpLoad %float %119
+        %121 = OpAccessChain %_ptr_Function_float %param_3 %uint_0
+        %122 = OpLoad %float %121
+        %123 = OpAccessChain %_ptr_Function_float %param_2 %uint_1
+        %124 = OpLoad %float %123
+        %125 = OpFMul %float %118 %120
+        %126 = OpFMul %float %122 %124
+        %127 = OpFSub %float %125 %126
+               OpStore %x_67 %127
+        %129 = OpFOrdLessThan %bool %86 %float_0
+               OpSelectionMerge %130 None
+               OpBranchConditional %129 %131 %130
+        %131 = OpLabel
+        %132 = OpFOrdLessThan %bool %127 %float_0
+               OpBranch %130
+        %130 = OpLabel
+        %133 = OpPhi %bool %129 %23 %132 %131
+               OpStore %x_136_phi %133
+        %134 = OpLogicalNot %bool %133
+               OpSelectionMerge %135 None
+               OpBranchConditional %134 %136 %135
+        %136 = OpLabel
+        %137 = OpFOrdGreaterThanEqual %bool %86 %float_0
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+        %140 = OpFOrdGreaterThanEqual %bool %127 %float_0
+               OpBranch %138
+        %138 = OpLabel
+        %141 = OpPhi %bool %137 %136 %140 %139
+               OpStore %x_135 %141
+        %142 = OpLoad %bool %x_135
+               OpStore %x_136_phi %142
+               OpBranch %135
+        %135 = OpLabel
+        %143 = OpLoad %bool %x_136_phi
+        %144 = OpLogicalNot %bool %143
+               OpSelectionMerge %145 None
+               OpBranchConditional %144 %146 %145
+        %146 = OpLabel
+               OpReturnValue %int_0
+        %145 = OpLabel
+        %149 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %150 = OpLoad %float %149
+        %152 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %153 = OpLoad %float %152
+        %155 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %156 = OpLoad %float %155
+        %158 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %159 = OpLoad %float %158
+        %161 = OpAccessChain %_ptr_Function_float %a %uint_0
+        %162 = OpLoad %float %161
+        %164 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %165 = OpLoad %float %164
+        %167 = OpAccessChain %_ptr_Function_float %a %uint_1
+        %168 = OpLoad %float %167
+        %170 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %171 = OpLoad %float %170
+        %172 = OpFSub %float %150 %153
+        %173 = OpFSub %float %156 %159
+        %174 = OpCompositeConstruct %v2float %172 %173
+               OpStore %param_4 %174
+        %175 = OpFSub %float %162 %165
+        %176 = OpFSub %float %168 %171
+        %177 = OpCompositeConstruct %v2float %175 %176
+               OpStore %param_5 %177
+        %178 = OpAccessChain %_ptr_Function_float %param_4 %uint_0
+        %179 = OpLoad %float %178
+        %180 = OpAccessChain %_ptr_Function_float %param_5 %uint_1
+        %181 = OpLoad %float %180
+        %182 = OpAccessChain %_ptr_Function_float %param_5 %uint_0
+        %183 = OpLoad %float %182
+        %184 = OpAccessChain %_ptr_Function_float %param_4 %uint_1
+        %185 = OpLoad %float %184
+        %186 = OpFMul %float %179 %181
+        %187 = OpFMul %float %183 %185
+        %188 = OpFSub %float %186 %187
+               OpStore %x_66 %188
+               OpSelectionMerge %189 None
+               OpBranchConditional %129 %190 %189
+        %190 = OpLabel
+        %191 = OpFOrdLessThan %bool %188 %float_0
+               OpBranch %189
+        %189 = OpLabel
+        %192 = OpPhi %bool %129 %145 %191 %190
+               OpStore %x_173_phi %192
+        %193 = OpLogicalNot %bool %192
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %194
+        %195 = OpLabel
+        %196 = OpFOrdGreaterThanEqual %bool %86 %float_0
+               OpSelectionMerge %197 None
+               OpBranchConditional %196 %198 %197
+        %198 = OpLabel
+        %199 = OpFOrdGreaterThanEqual %bool %188 %float_0
+               OpBranch %197
+        %197 = OpLabel
+        %200 = OpPhi %bool %196 %195 %199 %198
+               OpStore %x_172 %200
+        %201 = OpLoad %bool %x_172
+               OpStore %x_173_phi %201
+               OpBranch %194
+        %194 = OpLabel
+        %202 = OpLoad %bool %x_173_phi
+        %203 = OpLogicalNot %bool %202
+               OpSelectionMerge %204 None
+               OpBranchConditional %203 %205 %204
+        %205 = OpLabel
+               OpReturnValue %int_0
+        %204 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %207
+        %210 = OpLabel
+    %param_6 = OpVariable %_ptr_Function_v2float Function %30
+    %param_7 = OpVariable %_ptr_Function_v2float Function %30
+    %param_8 = OpVariable %_ptr_Function_v2float Function %30
+    %param_9 = OpVariable %_ptr_Function_v2float Function %30
+        %215 = OpLoad %v4float %gl_FragCoord
+        %217 = OpAccessChain %_ptr_Uniform_v2float %x_17 %uint_0
+        %218 = OpLoad %v2float %217
+        %219 = OpCompositeExtract %float %215 0
+        %220 = OpCompositeExtract %float %215 1
+        %221 = OpCompositeConstruct %v2float %219 %220
+        %222 = OpFDiv %v2float %221 %218
+               OpStore %param_6 %222
+               OpStore %param_7 %225
+               OpStore %param_8 %228
+               OpStore %param_9 %231
+        %232 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %237 = OpIEqual %bool %232 %int_1
+               OpSelectionMerge %238 None
+               OpBranchConditional %237 %239 %240
+        %239 = OpLabel
+               OpStore %x_GLF_color %242
+               OpBranch %238
+        %240 = OpLabel
+               OpStore %x_GLF_color %243
+               OpBranch %238
+        %238 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %244
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %248 = OpLabel
+        %249 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %249
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %207
+        %251 = OpLabel
+        %252 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %252
+        %253 = OpFunctionCall %void %main_1
+        %255 = OpLoad %v4float %x_GLF_color
+        %256 = OpCompositeConstruct %main_out %255
+        %254 = OpFunctionCall %void %tint_symbol_3 %256
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..414b559
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl.expected.wgsl
@@ -0,0 +1,136 @@
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_17 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var x_66 : f32;
+  var x_67 : f32;
+  var x_68 : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_135 : bool;
+  var x_172 : bool;
+  var x_136_phi : bool;
+  var x_173_phi : bool;
+  let x_69 : ptr<function, f32> = &((*(p)).x);
+  let x_70 : f32 = *(x_69);
+  let x_71 : ptr<function, f32> = &((*(a)).x);
+  let x_72 : f32 = *(x_71);
+  let x_74 : ptr<function, f32> = &((*(p)).y);
+  let x_75 : f32 = *(x_74);
+  let x_76 : ptr<function, f32> = &((*(a)).y);
+  let x_77 : f32 = *(x_76);
+  let x_80 : ptr<function, f32> = &((*(b)).x);
+  let x_81 : f32 = *(x_80);
+  let x_82 : f32 = *(x_71);
+  let x_84 : ptr<function, f32> = &((*(b)).y);
+  let x_85 : f32 = *(x_84);
+  let x_86 : f32 = *(x_76);
+  param = vec2<f32>((x_70 - x_72), (x_75 - x_77));
+  param_1 = vec2<f32>((x_81 - x_82), (x_85 - x_86));
+  let x_90 : f32 = param.x;
+  let x_92 : f32 = param_1.y;
+  let x_95 : f32 = param_1.x;
+  let x_97 : f32 = param.y;
+  let x_99 : f32 = ((x_90 * x_92) - (x_95 * x_97));
+  x_68 = x_99;
+  let x_100 : f32 = *(x_69);
+  let x_101 : f32 = *(x_80);
+  let x_103 : f32 = *(x_74);
+  let x_104 : f32 = *(x_84);
+  let x_107 : ptr<function, f32> = &((*(c)).x);
+  let x_108 : f32 = *(x_107);
+  let x_109 : f32 = *(x_80);
+  let x_111 : ptr<function, f32> = &((*(c)).y);
+  let x_112 : f32 = *(x_111);
+  let x_113 : f32 = *(x_84);
+  param_2 = vec2<f32>((x_100 - x_101), (x_103 - x_104));
+  param_3 = vec2<f32>((x_108 - x_109), (x_112 - x_113));
+  let x_117 : f32 = param_2.x;
+  let x_119 : f32 = param_3.y;
+  let x_122 : f32 = param_3.x;
+  let x_124 : f32 = param_2.y;
+  let x_126 : f32 = ((x_117 * x_119) - (x_122 * x_124));
+  x_67 = x_126;
+  let x_127 : bool = (x_99 < 0.0);
+  let x_129 : bool = (x_127 && (x_126 < 0.0));
+  x_136_phi = x_129;
+  if (!(x_129)) {
+    x_135 = ((x_99 >= 0.0) && (x_126 >= 0.0));
+    x_136_phi = x_135;
+  }
+  let x_136 : bool = x_136_phi;
+  if (!(x_136)) {
+    return 0;
+  }
+  let x_140 : f32 = *(x_69);
+  let x_141 : f32 = *(x_107);
+  let x_143 : f32 = *(x_74);
+  let x_144 : f32 = *(x_111);
+  let x_147 : f32 = *(x_71);
+  let x_148 : f32 = *(x_107);
+  let x_150 : f32 = *(x_76);
+  let x_151 : f32 = *(x_111);
+  param_4 = vec2<f32>((x_140 - x_141), (x_143 - x_144));
+  param_5 = vec2<f32>((x_147 - x_148), (x_150 - x_151));
+  let x_155 : f32 = param_4.x;
+  let x_157 : f32 = param_5.y;
+  let x_160 : f32 = param_5.x;
+  let x_162 : f32 = param_4.y;
+  let x_164 : f32 = ((x_155 * x_157) - (x_160 * x_162));
+  x_66 = x_164;
+  let x_166 : bool = (x_127 && (x_164 < 0.0));
+  x_173_phi = x_166;
+  if (!(x_166)) {
+    x_172 = ((x_99 >= 0.0) && (x_164 >= 0.0));
+    x_173_phi = x_172;
+  }
+  let x_173 : bool = x_173_phi;
+  if (!(x_173)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_55 : vec4<f32> = gl_FragCoord;
+  let x_58 : vec2<f32> = x_17.resolution;
+  param_6 = (vec2<f32>(x_55.x, x_55.y) / x_58);
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_60 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_60 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm
new file mode 100644
index 0000000..48966c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm
@@ -0,0 +1,298 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle(vf2;vf2;vf2;vf2;"
+               OpName %p "p"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %__0 ""
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+       %void = OpTypeVoid
+         %25 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %int = OpTypeInt 32 1
+         %30 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+    %v4float = OpTypeVector %float 4
+    %float_1 = OpConstant %float 1
+         %33 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+      %int_0 = OpConstant %int 0
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %__0 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+         %50 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+         %53 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+         %56 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %58 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %25
+         %59 = OpLabel
+    %param_5 = OpVariable %_ptr_Function_v2float Function
+    %param_6 = OpVariable %_ptr_Function_v2float Function
+    %param_7 = OpVariable %_ptr_Function_v2float Function
+    %param_8 = OpVariable %_ptr_Function_v2float Function
+         %60 = OpLoad %v4float %gl_FragCoord
+         %61 = OpVectorShuffle %v2float %60 %60 0 1
+         %62 = OpAccessChain %_ptr_Uniform_v2float %__0 %int_0
+         %63 = OpLoad %v2float %62
+         %64 = OpFDiv %v2float %61 %63
+               OpStore %param_5 %64
+               OpStore %param_6 %50
+               OpStore %param_7 %53
+               OpStore %param_8 %56
+         %65 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_5 %param_6 %param_7 %param_8
+         %66 = OpIEqual %bool %65 %int_1
+               OpSelectionMerge %67 None
+               OpBranchConditional %66 %68 %69
+         %68 = OpLabel
+         %70 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %73 = OpLoad %float %72
+         %74 = OpFOrdGreaterThanEqual %bool %71 %73
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+               OpStore %_GLF_color %57
+               OpBranch %75
+         %75 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpStore %_GLF_color %58
+               OpBranch %67
+         %67 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %30
+          %p = OpFunctionParameter %_ptr_Function_v2float
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %77 = OpLabel
+         %78 = OpVariable %_ptr_Function_float Function
+         %79 = OpVariable %_ptr_Function_float Function
+         %80 = OpVariable %_ptr_Function_float Function
+      %param = OpVariable %_ptr_Function_v2float Function
+    %param_0 = OpVariable %_ptr_Function_v2float Function
+    %param_1 = OpVariable %_ptr_Function_v2float Function
+    %param_2 = OpVariable %_ptr_Function_v2float Function
+    %param_3 = OpVariable %_ptr_Function_v2float Function
+    %param_4 = OpVariable %_ptr_Function_v2float Function
+         %81 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpFSub %float %82 %84
+         %86 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %87 = OpLoad %float %86
+         %88 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %89 = OpLoad %float %88
+         %90 = OpFSub %float %87 %89
+         %91 = OpCompositeConstruct %v2float %85 %90
+         %92 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %93 = OpLoad %float %92
+         %94 = OpLoad %float %83
+         %95 = OpFSub %float %93 %94
+         %96 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %97 = OpLoad %float %96
+         %98 = OpLoad %float %88
+         %99 = OpFSub %float %97 %98
+        %100 = OpCompositeConstruct %v2float %95 %99
+               OpStore %param %91
+               OpStore %param_0 %100
+        %101 = OpAccessChain %_ptr_Function_float %param %uint_0
+        %102 = OpLoad %float %101
+        %103 = OpAccessChain %_ptr_Function_float %param_0 %uint_1
+        %104 = OpLoad %float %103
+        %105 = OpFMul %float %102 %104
+        %106 = OpAccessChain %_ptr_Function_float %param_0 %uint_0
+        %107 = OpLoad %float %106
+        %108 = OpAccessChain %_ptr_Function_float %param %uint_1
+        %109 = OpLoad %float %108
+        %110 = OpFMul %float %107 %109
+        %111 = OpFSub %float %105 %110
+               OpStore %80 %111
+        %112 = OpLoad %float %81
+        %113 = OpLoad %float %92
+        %114 = OpFSub %float %112 %113
+        %115 = OpLoad %float %86
+        %116 = OpLoad %float %96
+        %117 = OpFSub %float %115 %116
+        %118 = OpCompositeConstruct %v2float %114 %117
+        %119 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %120 = OpLoad %float %119
+        %121 = OpLoad %float %92
+        %122 = OpFSub %float %120 %121
+        %123 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %124 = OpLoad %float %123
+        %125 = OpLoad %float %96
+        %126 = OpFSub %float %124 %125
+        %127 = OpCompositeConstruct %v2float %122 %126
+               OpStore %param_1 %118
+               OpStore %param_2 %127
+        %128 = OpAccessChain %_ptr_Function_float %param_1 %uint_0
+        %129 = OpLoad %float %128
+        %130 = OpAccessChain %_ptr_Function_float %param_2 %uint_1
+        %131 = OpLoad %float %130
+        %132 = OpFMul %float %129 %131
+        %133 = OpAccessChain %_ptr_Function_float %param_2 %uint_0
+        %134 = OpLoad %float %133
+        %135 = OpAccessChain %_ptr_Function_float %param_1 %uint_1
+        %136 = OpLoad %float %135
+        %137 = OpFMul %float %134 %136
+        %138 = OpFSub %float %132 %137
+               OpStore %79 %138
+        %139 = OpFOrdLessThan %bool %111 %float_0
+        %140 = OpFOrdLessThan %bool %138 %float_0
+        %141 = OpLogicalAnd %bool %139 %140
+        %142 = OpLogicalNot %bool %141
+               OpSelectionMerge %143 None
+               OpBranchConditional %142 %144 %143
+        %144 = OpLabel
+        %145 = OpFOrdGreaterThanEqual %bool %111 %float_0
+        %146 = OpFOrdGreaterThanEqual %bool %138 %float_0
+        %147 = OpLogicalAnd %bool %145 %146
+               OpBranch %143
+        %143 = OpLabel
+        %148 = OpPhi %bool %141 %77 %147 %144
+        %149 = OpLogicalNot %bool %148
+               OpSelectionMerge %150 None
+               OpBranchConditional %149 %151 %150
+        %151 = OpLabel
+               OpBranch %152
+        %152 = OpLabel
+        %153 = OpPhi %int %int_0 %151 %154 %155
+               OpLoopMerge %156 %155 None
+               OpBranch %157
+        %157 = OpLabel
+        %158 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %159 = OpLoad %float %158
+        %160 = OpConvertFToS %int %159
+        %161 = OpSLessThan %bool %153 %160
+               OpBranchConditional %161 %162 %156
+        %162 = OpLabel
+               OpStore %_GLF_color %33
+               OpBranch %163
+        %163 = OpLabel
+        %164 = OpPhi %int %int_0 %162 %165 %166
+               OpLoopMerge %167 %166 None
+               OpBranch %168
+        %168 = OpLabel
+        %169 = OpSLessThan %bool %164 %160
+               OpBranchConditional %169 %170 %167
+        %170 = OpLabel
+               OpStore %_GLF_color %33
+               OpBranch %166
+        %166 = OpLabel
+        %165 = OpIAdd %int %164 %int_1
+               OpBranch %163
+        %167 = OpLabel
+               OpBranch %155
+        %155 = OpLabel
+        %154 = OpIAdd %int %153 %int_1
+               OpBranch %152
+        %156 = OpLabel
+               OpReturnValue %int_0
+        %150 = OpLabel
+        %171 = OpLoad %float %81
+        %172 = OpLoad %float %119
+        %173 = OpFSub %float %171 %172
+        %174 = OpLoad %float %86
+        %175 = OpLoad %float %123
+        %176 = OpFSub %float %174 %175
+        %177 = OpCompositeConstruct %v2float %173 %176
+        %178 = OpLoad %float %83
+        %179 = OpLoad %float %119
+        %180 = OpFSub %float %178 %179
+        %181 = OpLoad %float %88
+        %182 = OpLoad %float %123
+        %183 = OpFSub %float %181 %182
+        %184 = OpCompositeConstruct %v2float %180 %183
+               OpStore %param_3 %177
+               OpStore %param_4 %184
+        %185 = OpAccessChain %_ptr_Function_float %param_3 %uint_0
+        %186 = OpLoad %float %185
+        %187 = OpAccessChain %_ptr_Function_float %param_4 %uint_1
+        %188 = OpLoad %float %187
+        %189 = OpFMul %float %186 %188
+        %190 = OpAccessChain %_ptr_Function_float %param_4 %uint_0
+        %191 = OpLoad %float %190
+        %192 = OpAccessChain %_ptr_Function_float %param_3 %uint_1
+        %193 = OpLoad %float %192
+        %194 = OpFMul %float %191 %193
+        %195 = OpFSub %float %189 %194
+               OpStore %78 %195
+        %196 = OpFOrdLessThan %bool %195 %float_0
+        %197 = OpLogicalAnd %bool %139 %196
+        %198 = OpLogicalNot %bool %197
+               OpSelectionMerge %199 None
+               OpBranchConditional %198 %200 %199
+        %200 = OpLabel
+        %201 = OpFOrdGreaterThanEqual %bool %111 %float_0
+        %202 = OpFOrdGreaterThanEqual %bool %195 %float_0
+        %203 = OpLogicalAnd %bool %201 %202
+               OpBranch %199
+        %199 = OpLabel
+        %204 = OpPhi %bool %197 %150 %203 %200
+        %205 = OpLogicalNot %bool %204
+               OpSelectionMerge %206 None
+               OpBranchConditional %205 %207 %206
+        %207 = OpLabel
+               OpReturnValue %int_0
+        %206 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..1e6b252
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.hlsl
@@ -0,0 +1,183 @@
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_19 : register(b0, space0) {
+  uint4 x_19[1];
+};
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a, inout float2 b, inout float2 c) {
+  float x_78 = 0.0f;
+  float x_79 = 0.0f;
+  float x_80 = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_147 = false;
+  bool x_203 = false;
+  bool x_148_phi = false;
+  bool x_204_phi = false;
+  const float x_82 = p.x;
+  const float x_84 = a.x;
+  const float x_87 = p.y;
+  const float x_89 = a.y;
+  const float x_93 = b.x;
+  const float x_94 = a.x;
+  const float x_97 = b.y;
+  const float x_98 = a.y;
+  param = float2((x_82 - x_84), (x_87 - x_89));
+  param_1 = float2((x_93 - x_94), (x_97 - x_98));
+  const float x_102 = param.x;
+  const float x_104 = param_1.y;
+  const float x_107 = param_1.x;
+  const float x_109 = param.y;
+  const float x_111 = ((x_102 * x_104) - (x_107 * x_109));
+  x_80 = x_111;
+  const float x_112 = p.x;
+  const float x_113 = b.x;
+  const float x_115 = p.y;
+  const float x_116 = b.y;
+  const float x_120 = c.x;
+  const float x_121 = b.x;
+  const float x_124 = c.y;
+  const float x_125 = b.y;
+  param_2 = float2((x_112 - x_113), (x_115 - x_116));
+  param_3 = float2((x_120 - x_121), (x_124 - x_125));
+  const float x_129 = param_2.x;
+  const float x_131 = param_3.y;
+  const float x_134 = param_3.x;
+  const float x_136 = param_2.y;
+  const float x_138 = ((x_129 * x_131) - (x_134 * x_136));
+  x_79 = x_138;
+  const bool x_139 = (x_111 < 0.0f);
+  bool tint_tmp = x_139;
+  if (tint_tmp) {
+    tint_tmp = (x_138 < 0.0f);
+  }
+  const bool x_141 = (tint_tmp);
+  x_148_phi = x_141;
+  if (!(x_141)) {
+    bool tint_tmp_1 = (x_111 >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_138 >= 0.0f);
+    }
+    x_147 = (tint_tmp_1);
+    x_148_phi = x_147;
+  }
+  int x_153_phi = 0;
+  if (!(x_148_phi)) {
+    x_153_phi = 0;
+    while (true) {
+      int x_154 = 0;
+      int x_164_phi = 0;
+      const int x_153 = x_153_phi;
+      const float x_159 = asfloat(x_11[0].y);
+      const int x_160 = int(x_159);
+      if ((x_153 < x_160)) {
+      } else {
+        break;
+      }
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      x_164_phi = 0;
+      while (true) {
+        int x_165 = 0;
+        const int x_164 = x_164_phi;
+        if ((x_164 < x_160)) {
+        } else {
+          break;
+        }
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        {
+          x_165 = (x_164 + 1);
+          x_164_phi = x_165;
+        }
+      }
+      {
+        x_154 = (x_153 + 1);
+        x_153_phi = x_154;
+      }
+    }
+    return 0;
+  }
+  const float x_171 = p.x;
+  const float x_172 = c.x;
+  const float x_174 = p.y;
+  const float x_175 = c.y;
+  const float x_178 = a.x;
+  const float x_179 = c.x;
+  const float x_181 = a.y;
+  const float x_182 = c.y;
+  param_4 = float2((x_171 - x_172), (x_174 - x_175));
+  param_5 = float2((x_178 - x_179), (x_181 - x_182));
+  const float x_186 = param_4.x;
+  const float x_188 = param_5.y;
+  const float x_191 = param_5.x;
+  const float x_193 = param_4.y;
+  const float x_195 = ((x_186 * x_188) - (x_191 * x_193));
+  x_78 = x_195;
+  bool tint_tmp_2 = x_139;
+  if (tint_tmp_2) {
+    tint_tmp_2 = (x_195 < 0.0f);
+  }
+  const bool x_197 = (tint_tmp_2);
+  x_204_phi = x_197;
+  if (!(x_197)) {
+    bool tint_tmp_3 = (x_111 >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (x_195 >= 0.0f);
+    }
+    x_203 = (tint_tmp_3);
+    x_204_phi = x_203;
+  }
+  if (!(x_204_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_60 = gl_FragCoord;
+  const float2 x_63 = asfloat(x_19[0].xy);
+  param_6 = (float2(x_60.x, x_60.y) / x_63);
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_65 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_65 == 1)) {
+    const float x_71 = asfloat(x_11[0].y);
+    const float x_73 = asfloat(x_11[0].x);
+    if ((x_71 >= x_73)) {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.msl
new file mode 100644
index 0000000..6537e89
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.msl
@@ -0,0 +1,168 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(constant buf1& x_11, thread float2* const p, thread float2* const a, thread float2* const b, thread float2* const c, thread float4* const tint_symbol_5) {
+  float x_78 = 0.0f;
+  float x_79 = 0.0f;
+  float x_80 = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_147 = false;
+  bool x_203 = false;
+  bool x_148_phi = false;
+  bool x_204_phi = false;
+  float const x_82 = (*(p)).x;
+  float const x_84 = (*(a)).x;
+  float const x_87 = (*(p)).y;
+  float const x_89 = (*(a)).y;
+  float const x_93 = (*(b)).x;
+  float const x_94 = (*(a)).x;
+  float const x_97 = (*(b)).y;
+  float const x_98 = (*(a)).y;
+  param = float2((x_82 - x_84), (x_87 - x_89));
+  param_1 = float2((x_93 - x_94), (x_97 - x_98));
+  float const x_102 = param.x;
+  float const x_104 = param_1.y;
+  float const x_107 = param_1.x;
+  float const x_109 = param.y;
+  float const x_111 = ((x_102 * x_104) - (x_107 * x_109));
+  x_80 = x_111;
+  float const x_112 = (*(p)).x;
+  float const x_113 = (*(b)).x;
+  float const x_115 = (*(p)).y;
+  float const x_116 = (*(b)).y;
+  float const x_120 = (*(c)).x;
+  float const x_121 = (*(b)).x;
+  float const x_124 = (*(c)).y;
+  float const x_125 = (*(b)).y;
+  param_2 = float2((x_112 - x_113), (x_115 - x_116));
+  param_3 = float2((x_120 - x_121), (x_124 - x_125));
+  float const x_129 = param_2.x;
+  float const x_131 = param_3.y;
+  float const x_134 = param_3.x;
+  float const x_136 = param_2.y;
+  float const x_138 = ((x_129 * x_131) - (x_134 * x_136));
+  x_79 = x_138;
+  bool const x_139 = (x_111 < 0.0f);
+  bool const x_141 = (x_139 && (x_138 < 0.0f));
+  x_148_phi = x_141;
+  if (!(x_141)) {
+    x_147 = ((x_111 >= 0.0f) && (x_138 >= 0.0f));
+    x_148_phi = x_147;
+  }
+  int x_153_phi = 0;
+  bool const x_148 = x_148_phi;
+  if (!(x_148)) {
+    x_153_phi = 0;
+    while (true) {
+      int x_154 = 0;
+      int x_164_phi = 0;
+      int const x_153 = x_153_phi;
+      float const x_159 = x_11.injectionSwitch.y;
+      int const x_160 = int(x_159);
+      if ((x_153 < x_160)) {
+      } else {
+        break;
+      }
+      *(tint_symbol_5) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      x_164_phi = 0;
+      while (true) {
+        int x_165 = 0;
+        int const x_164 = x_164_phi;
+        if ((x_164 < x_160)) {
+        } else {
+          break;
+        }
+        *(tint_symbol_5) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        {
+          x_165 = (x_164 + 1);
+          x_164_phi = x_165;
+        }
+      }
+      {
+        x_154 = (x_153 + 1);
+        x_153_phi = x_154;
+      }
+    }
+    return 0;
+  }
+  float const x_171 = (*(p)).x;
+  float const x_172 = (*(c)).x;
+  float const x_174 = (*(p)).y;
+  float const x_175 = (*(c)).y;
+  float const x_178 = (*(a)).x;
+  float const x_179 = (*(c)).x;
+  float const x_181 = (*(a)).y;
+  float const x_182 = (*(c)).y;
+  param_4 = float2((x_171 - x_172), (x_174 - x_175));
+  param_5 = float2((x_178 - x_179), (x_181 - x_182));
+  float const x_186 = param_4.x;
+  float const x_188 = param_5.y;
+  float const x_191 = param_5.x;
+  float const x_193 = param_4.y;
+  float const x_195 = ((x_186 * x_188) - (x_191 * x_193));
+  x_78 = x_195;
+  bool const x_197 = (x_139 && (x_195 < 0.0f));
+  x_204_phi = x_197;
+  if (!(x_197)) {
+    x_203 = ((x_111 >= 0.0f) && (x_195 >= 0.0f));
+    x_204_phi = x_203;
+  }
+  bool const x_204 = x_204_phi;
+  if (!(x_204)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_19, constant buf1& x_11, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_60 = *(tint_symbol_6);
+  float2 const x_63 = x_19.resolution;
+  param_6 = (float2(x_60.x, x_60.y) / x_63);
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_65 = pointInTriangle_vf2_vf2_vf2_vf2_(x_11, &(param_6), &(param_7), &(param_8), &(param_9), tint_symbol_7);
+  if ((x_65 == 1)) {
+    float const x_71 = x_11.injectionSwitch.y;
+    float const x_73 = x_11.injectionSwitch.x;
+    if ((x_71 >= x_73)) {
+      *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_19 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_19, x_11, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..8e4e6fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.spvasm
@@ -0,0 +1,423 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 300
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_19 "x_19"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_78 "x_78"
+               OpName %x_79 "x_79"
+               OpName %x_80 "x_80"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_147 "x_147"
+               OpName %x_203 "x_203"
+               OpName %x_148_phi "x_148_phi"
+               OpName %x_204_phi "x_204_phi"
+               OpName %x_153_phi "x_153_phi"
+               OpName %x_154 "x_154"
+               OpName %x_164_phi "x_164_phi"
+               OpName %x_165 "x_165"
+               OpName %main_1 "main_1"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_19 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+        %int = OpTypeInt 32 1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+         %33 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_int = OpTypePointer Function %int
+        %148 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+        %170 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %244 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %262 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %265 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %268 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+        %285 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %286 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %287 = OpTypeFunction %void %main_out
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %18
+          %p = OpFunctionParameter %_ptr_Function_v2float
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %26 = OpLabel
+       %x_78 = OpVariable %_ptr_Function_float Function %29
+       %x_79 = OpVariable %_ptr_Function_float Function %29
+       %x_80 = OpVariable %_ptr_Function_float Function %29
+      %param = OpVariable %_ptr_Function_v2float Function %33
+    %param_1 = OpVariable %_ptr_Function_v2float Function %33
+    %param_2 = OpVariable %_ptr_Function_v2float Function %33
+    %param_3 = OpVariable %_ptr_Function_v2float Function %33
+    %param_4 = OpVariable %_ptr_Function_v2float Function %33
+    %param_5 = OpVariable %_ptr_Function_v2float Function %33
+      %x_147 = OpVariable %_ptr_Function_bool Function %42
+      %x_203 = OpVariable %_ptr_Function_bool Function %42
+  %x_148_phi = OpVariable %_ptr_Function_bool Function %42
+  %x_204_phi = OpVariable %_ptr_Function_bool Function %42
+  %x_153_phi = OpVariable %_ptr_Function_int Function %148
+      %x_154 = OpVariable %_ptr_Function_int Function %148
+  %x_164_phi = OpVariable %_ptr_Function_int Function %148
+      %x_165 = OpVariable %_ptr_Function_int Function %148
+         %49 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %53 = OpLoad %float %52
+         %56 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %60 = OpLoad %float %59
+         %62 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %66 = OpLoad %float %65
+         %68 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %72 = OpLoad %float %71
+         %73 = OpFSub %float %50 %53
+         %74 = OpFSub %float %57 %60
+         %75 = OpCompositeConstruct %v2float %73 %74
+               OpStore %param %75
+         %76 = OpFSub %float %63 %66
+         %77 = OpFSub %float %69 %72
+         %78 = OpCompositeConstruct %v2float %76 %77
+               OpStore %param_1 %78
+         %79 = OpAccessChain %_ptr_Function_float %param %uint_0
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Function_float %param_1 %uint_1
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Function_float %param_1 %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Function_float %param %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFMul %float %80 %82
+         %88 = OpFMul %float %84 %86
+         %89 = OpFSub %float %87 %88
+               OpStore %x_80 %89
+         %91 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %92 = OpLoad %float %91
+         %94 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %95 = OpLoad %float %94
+         %97 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %98 = OpLoad %float %97
+        %100 = OpAccessChain %_ptr_Function_float %b %uint_1
+        %101 = OpLoad %float %100
+        %103 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Function_float %b %uint_0
+        %107 = OpLoad %float %106
+        %109 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %110 = OpLoad %float %109
+        %112 = OpAccessChain %_ptr_Function_float %b %uint_1
+        %113 = OpLoad %float %112
+        %114 = OpFSub %float %92 %95
+        %115 = OpFSub %float %98 %101
+        %116 = OpCompositeConstruct %v2float %114 %115
+               OpStore %param_2 %116
+        %117 = OpFSub %float %104 %107
+        %118 = OpFSub %float %110 %113
+        %119 = OpCompositeConstruct %v2float %117 %118
+               OpStore %param_3 %119
+        %120 = OpAccessChain %_ptr_Function_float %param_2 %uint_0
+        %121 = OpLoad %float %120
+        %122 = OpAccessChain %_ptr_Function_float %param_3 %uint_1
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Function_float %param_3 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpAccessChain %_ptr_Function_float %param_2 %uint_1
+        %127 = OpLoad %float %126
+        %128 = OpFMul %float %121 %123
+        %129 = OpFMul %float %125 %127
+        %130 = OpFSub %float %128 %129
+               OpStore %x_79 %130
+        %132 = OpFOrdLessThan %bool %89 %float_0
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %133
+        %134 = OpLabel
+        %135 = OpFOrdLessThan %bool %130 %float_0
+               OpBranch %133
+        %133 = OpLabel
+        %136 = OpPhi %bool %132 %26 %135 %134
+               OpStore %x_148_phi %136
+        %137 = OpLogicalNot %bool %136
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+        %140 = OpFOrdGreaterThanEqual %bool %89 %float_0
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+        %143 = OpFOrdGreaterThanEqual %bool %130 %float_0
+               OpBranch %141
+        %141 = OpLabel
+        %144 = OpPhi %bool %140 %139 %143 %142
+               OpStore %x_147 %144
+        %145 = OpLoad %bool %x_147
+               OpStore %x_148_phi %145
+               OpBranch %138
+        %138 = OpLabel
+        %149 = OpLoad %bool %x_148_phi
+        %150 = OpLogicalNot %bool %149
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %151
+        %152 = OpLabel
+               OpStore %x_153_phi %int_0
+               OpBranch %154
+        %154 = OpLabel
+               OpLoopMerge %155 %156 None
+               OpBranch %157
+        %157 = OpLabel
+        %160 = OpLoad %int %x_153_phi
+        %162 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_1
+        %163 = OpLoad %float %162
+        %164 = OpConvertFToS %int %163
+        %165 = OpSLessThan %bool %160 %164
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %168
+        %167 = OpLabel
+               OpBranch %166
+        %168 = OpLabel
+               OpBranch %155
+        %166 = OpLabel
+               OpStore %x_GLF_color %170
+               OpStore %x_164_phi %int_0
+               OpBranch %171
+        %171 = OpLabel
+               OpLoopMerge %172 %173 None
+               OpBranch %174
+        %174 = OpLabel
+        %176 = OpLoad %int %x_164_phi
+        %177 = OpSLessThan %bool %176 %164
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %180
+        %179 = OpLabel
+               OpBranch %178
+        %180 = OpLabel
+               OpBranch %172
+        %178 = OpLabel
+               OpStore %x_GLF_color %170
+               OpBranch %173
+        %173 = OpLabel
+        %182 = OpIAdd %int %176 %int_1
+               OpStore %x_165 %182
+        %183 = OpLoad %int %x_165
+               OpStore %x_164_phi %183
+               OpBranch %171
+        %172 = OpLabel
+               OpBranch %156
+        %156 = OpLabel
+        %184 = OpIAdd %int %160 %int_1
+               OpStore %x_154 %184
+        %185 = OpLoad %int %x_154
+               OpStore %x_153_phi %185
+               OpBranch %154
+        %155 = OpLabel
+               OpReturnValue %int_0
+        %151 = OpLabel
+        %187 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %188 = OpLoad %float %187
+        %190 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %191 = OpLoad %float %190
+        %193 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %194 = OpLoad %float %193
+        %196 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %197 = OpLoad %float %196
+        %199 = OpAccessChain %_ptr_Function_float %a %uint_0
+        %200 = OpLoad %float %199
+        %202 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %203 = OpLoad %float %202
+        %205 = OpAccessChain %_ptr_Function_float %a %uint_1
+        %206 = OpLoad %float %205
+        %208 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %209 = OpLoad %float %208
+        %210 = OpFSub %float %188 %191
+        %211 = OpFSub %float %194 %197
+        %212 = OpCompositeConstruct %v2float %210 %211
+               OpStore %param_4 %212
+        %213 = OpFSub %float %200 %203
+        %214 = OpFSub %float %206 %209
+        %215 = OpCompositeConstruct %v2float %213 %214
+               OpStore %param_5 %215
+        %216 = OpAccessChain %_ptr_Function_float %param_4 %uint_0
+        %217 = OpLoad %float %216
+        %218 = OpAccessChain %_ptr_Function_float %param_5 %uint_1
+        %219 = OpLoad %float %218
+        %220 = OpAccessChain %_ptr_Function_float %param_5 %uint_0
+        %221 = OpLoad %float %220
+        %222 = OpAccessChain %_ptr_Function_float %param_4 %uint_1
+        %223 = OpLoad %float %222
+        %224 = OpFMul %float %217 %219
+        %225 = OpFMul %float %221 %223
+        %226 = OpFSub %float %224 %225
+               OpStore %x_78 %226
+               OpSelectionMerge %227 None
+               OpBranchConditional %132 %228 %227
+        %228 = OpLabel
+        %229 = OpFOrdLessThan %bool %226 %float_0
+               OpBranch %227
+        %227 = OpLabel
+        %230 = OpPhi %bool %132 %151 %229 %228
+               OpStore %x_204_phi %230
+        %231 = OpLogicalNot %bool %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %232
+        %233 = OpLabel
+        %234 = OpFOrdGreaterThanEqual %bool %89 %float_0
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %237 = OpFOrdGreaterThanEqual %bool %226 %float_0
+               OpBranch %235
+        %235 = OpLabel
+        %238 = OpPhi %bool %234 %233 %237 %236
+               OpStore %x_203 %238
+        %239 = OpLoad %bool %x_203
+               OpStore %x_204_phi %239
+               OpBranch %232
+        %232 = OpLabel
+        %240 = OpLoad %bool %x_204_phi
+        %241 = OpLogicalNot %bool %240
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %242
+        %243 = OpLabel
+               OpReturnValue %int_0
+        %242 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %244
+        %247 = OpLabel
+    %param_6 = OpVariable %_ptr_Function_v2float Function %33
+    %param_7 = OpVariable %_ptr_Function_v2float Function %33
+    %param_8 = OpVariable %_ptr_Function_v2float Function %33
+    %param_9 = OpVariable %_ptr_Function_v2float Function %33
+        %252 = OpLoad %v4float %gl_FragCoord
+        %254 = OpAccessChain %_ptr_Uniform_v2float %x_19 %uint_0
+        %255 = OpLoad %v2float %254
+        %256 = OpCompositeExtract %float %252 0
+        %257 = OpCompositeExtract %float %252 1
+        %258 = OpCompositeConstruct %v2float %256 %257
+        %259 = OpFDiv %v2float %258 %255
+               OpStore %param_6 %259
+               OpStore %param_7 %262
+               OpStore %param_8 %265
+               OpStore %param_9 %268
+        %269 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %274 = OpIEqual %bool %269 %int_1
+               OpSelectionMerge %275 None
+               OpBranchConditional %274 %276 %277
+        %276 = OpLabel
+        %278 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_1
+        %279 = OpLoad %float %278
+        %280 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_0
+        %281 = OpLoad %float %280
+        %282 = OpFOrdGreaterThanEqual %bool %279 %281
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %283
+        %284 = OpLabel
+               OpStore %x_GLF_color %285
+               OpBranch %283
+        %283 = OpLabel
+               OpBranch %275
+        %277 = OpLabel
+               OpStore %x_GLF_color %286
+               OpBranch %275
+        %275 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %287
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %291 = OpLabel
+        %292 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %292
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %244
+        %294 = OpLabel
+        %295 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %295
+        %296 = OpFunctionCall %void %main_1
+        %298 = OpLoad %v4float %x_GLF_color
+        %299 = OpCompositeConstruct %main_out %298
+        %297 = OpFunctionCall %void %tint_symbol_3 %299
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..c9e248c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.spvasm.expected.wgsl
@@ -0,0 +1,181 @@
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_19 : buf0;
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var x_78 : f32;
+  var x_79 : f32;
+  var x_80 : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_147 : bool;
+  var x_203 : bool;
+  var x_148_phi : bool;
+  var x_204_phi : bool;
+  let x_81 : ptr<function, f32> = &((*(p)).x);
+  let x_82 : f32 = *(x_81);
+  let x_83 : ptr<function, f32> = &((*(a)).x);
+  let x_84 : f32 = *(x_83);
+  let x_86 : ptr<function, f32> = &((*(p)).y);
+  let x_87 : f32 = *(x_86);
+  let x_88 : ptr<function, f32> = &((*(a)).y);
+  let x_89 : f32 = *(x_88);
+  let x_92 : ptr<function, f32> = &((*(b)).x);
+  let x_93 : f32 = *(x_92);
+  let x_94 : f32 = *(x_83);
+  let x_96 : ptr<function, f32> = &((*(b)).y);
+  let x_97 : f32 = *(x_96);
+  let x_98 : f32 = *(x_88);
+  param = vec2<f32>((x_82 - x_84), (x_87 - x_89));
+  param_1 = vec2<f32>((x_93 - x_94), (x_97 - x_98));
+  let x_102 : f32 = param.x;
+  let x_104 : f32 = param_1.y;
+  let x_107 : f32 = param_1.x;
+  let x_109 : f32 = param.y;
+  let x_111 : f32 = ((x_102 * x_104) - (x_107 * x_109));
+  x_80 = x_111;
+  let x_112 : f32 = *(x_81);
+  let x_113 : f32 = *(x_92);
+  let x_115 : f32 = *(x_86);
+  let x_116 : f32 = *(x_96);
+  let x_119 : ptr<function, f32> = &((*(c)).x);
+  let x_120 : f32 = *(x_119);
+  let x_121 : f32 = *(x_92);
+  let x_123 : ptr<function, f32> = &((*(c)).y);
+  let x_124 : f32 = *(x_123);
+  let x_125 : f32 = *(x_96);
+  param_2 = vec2<f32>((x_112 - x_113), (x_115 - x_116));
+  param_3 = vec2<f32>((x_120 - x_121), (x_124 - x_125));
+  let x_129 : f32 = param_2.x;
+  let x_131 : f32 = param_3.y;
+  let x_134 : f32 = param_3.x;
+  let x_136 : f32 = param_2.y;
+  let x_138 : f32 = ((x_129 * x_131) - (x_134 * x_136));
+  x_79 = x_138;
+  let x_139 : bool = (x_111 < 0.0);
+  let x_141 : bool = (x_139 && (x_138 < 0.0));
+  x_148_phi = x_141;
+  if (!(x_141)) {
+    x_147 = ((x_111 >= 0.0) && (x_138 >= 0.0));
+    x_148_phi = x_147;
+  }
+  var x_153_phi : i32;
+  let x_148 : bool = x_148_phi;
+  if (!(x_148)) {
+    x_153_phi = 0;
+    loop {
+      var x_154 : i32;
+      var x_164_phi : i32;
+      let x_153 : i32 = x_153_phi;
+      let x_159 : f32 = x_11.injectionSwitch.y;
+      let x_160 : i32 = i32(x_159);
+      if ((x_153 < x_160)) {
+      } else {
+        break;
+      }
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      x_164_phi = 0;
+      loop {
+        var x_165 : i32;
+        let x_164 : i32 = x_164_phi;
+        if ((x_164 < x_160)) {
+        } else {
+          break;
+        }
+        x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+
+        continuing {
+          x_165 = (x_164 + 1);
+          x_164_phi = x_165;
+        }
+      }
+
+      continuing {
+        x_154 = (x_153 + 1);
+        x_153_phi = x_154;
+      }
+    }
+    return 0;
+  }
+  let x_171 : f32 = *(x_81);
+  let x_172 : f32 = *(x_119);
+  let x_174 : f32 = *(x_86);
+  let x_175 : f32 = *(x_123);
+  let x_178 : f32 = *(x_83);
+  let x_179 : f32 = *(x_119);
+  let x_181 : f32 = *(x_88);
+  let x_182 : f32 = *(x_123);
+  param_4 = vec2<f32>((x_171 - x_172), (x_174 - x_175));
+  param_5 = vec2<f32>((x_178 - x_179), (x_181 - x_182));
+  let x_186 : f32 = param_4.x;
+  let x_188 : f32 = param_5.y;
+  let x_191 : f32 = param_5.x;
+  let x_193 : f32 = param_4.y;
+  let x_195 : f32 = ((x_186 * x_188) - (x_191 * x_193));
+  x_78 = x_195;
+  let x_197 : bool = (x_139 && (x_195 < 0.0));
+  x_204_phi = x_197;
+  if (!(x_197)) {
+    x_203 = ((x_111 >= 0.0) && (x_195 >= 0.0));
+    x_204_phi = x_203;
+  }
+  let x_204 : bool = x_204_phi;
+  if (!(x_204)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_60 : vec4<f32> = gl_FragCoord;
+  let x_63 : vec2<f32> = x_19.resolution;
+  param_6 = (vec2<f32>(x_60.x, x_60.y) / x_63);
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_65 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_65 == 1)) {
+    let x_71 : f32 = x_11.injectionSwitch.y;
+    let x_73 : f32 = x_11.injectionSwitch.x;
+    if ((x_71 >= x_73)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
new file mode 100644
index 0000000..c9e248c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
@@ -0,0 +1,181 @@
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_19 : buf0;
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var x_78 : f32;
+  var x_79 : f32;
+  var x_80 : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_147 : bool;
+  var x_203 : bool;
+  var x_148_phi : bool;
+  var x_204_phi : bool;
+  let x_81 : ptr<function, f32> = &((*(p)).x);
+  let x_82 : f32 = *(x_81);
+  let x_83 : ptr<function, f32> = &((*(a)).x);
+  let x_84 : f32 = *(x_83);
+  let x_86 : ptr<function, f32> = &((*(p)).y);
+  let x_87 : f32 = *(x_86);
+  let x_88 : ptr<function, f32> = &((*(a)).y);
+  let x_89 : f32 = *(x_88);
+  let x_92 : ptr<function, f32> = &((*(b)).x);
+  let x_93 : f32 = *(x_92);
+  let x_94 : f32 = *(x_83);
+  let x_96 : ptr<function, f32> = &((*(b)).y);
+  let x_97 : f32 = *(x_96);
+  let x_98 : f32 = *(x_88);
+  param = vec2<f32>((x_82 - x_84), (x_87 - x_89));
+  param_1 = vec2<f32>((x_93 - x_94), (x_97 - x_98));
+  let x_102 : f32 = param.x;
+  let x_104 : f32 = param_1.y;
+  let x_107 : f32 = param_1.x;
+  let x_109 : f32 = param.y;
+  let x_111 : f32 = ((x_102 * x_104) - (x_107 * x_109));
+  x_80 = x_111;
+  let x_112 : f32 = *(x_81);
+  let x_113 : f32 = *(x_92);
+  let x_115 : f32 = *(x_86);
+  let x_116 : f32 = *(x_96);
+  let x_119 : ptr<function, f32> = &((*(c)).x);
+  let x_120 : f32 = *(x_119);
+  let x_121 : f32 = *(x_92);
+  let x_123 : ptr<function, f32> = &((*(c)).y);
+  let x_124 : f32 = *(x_123);
+  let x_125 : f32 = *(x_96);
+  param_2 = vec2<f32>((x_112 - x_113), (x_115 - x_116));
+  param_3 = vec2<f32>((x_120 - x_121), (x_124 - x_125));
+  let x_129 : f32 = param_2.x;
+  let x_131 : f32 = param_3.y;
+  let x_134 : f32 = param_3.x;
+  let x_136 : f32 = param_2.y;
+  let x_138 : f32 = ((x_129 * x_131) - (x_134 * x_136));
+  x_79 = x_138;
+  let x_139 : bool = (x_111 < 0.0);
+  let x_141 : bool = (x_139 && (x_138 < 0.0));
+  x_148_phi = x_141;
+  if (!(x_141)) {
+    x_147 = ((x_111 >= 0.0) && (x_138 >= 0.0));
+    x_148_phi = x_147;
+  }
+  var x_153_phi : i32;
+  let x_148 : bool = x_148_phi;
+  if (!(x_148)) {
+    x_153_phi = 0;
+    loop {
+      var x_154 : i32;
+      var x_164_phi : i32;
+      let x_153 : i32 = x_153_phi;
+      let x_159 : f32 = x_11.injectionSwitch.y;
+      let x_160 : i32 = i32(x_159);
+      if ((x_153 < x_160)) {
+      } else {
+        break;
+      }
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      x_164_phi = 0;
+      loop {
+        var x_165 : i32;
+        let x_164 : i32 = x_164_phi;
+        if ((x_164 < x_160)) {
+        } else {
+          break;
+        }
+        x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+
+        continuing {
+          x_165 = (x_164 + 1);
+          x_164_phi = x_165;
+        }
+      }
+
+      continuing {
+        x_154 = (x_153 + 1);
+        x_153_phi = x_154;
+      }
+    }
+    return 0;
+  }
+  let x_171 : f32 = *(x_81);
+  let x_172 : f32 = *(x_119);
+  let x_174 : f32 = *(x_86);
+  let x_175 : f32 = *(x_123);
+  let x_178 : f32 = *(x_83);
+  let x_179 : f32 = *(x_119);
+  let x_181 : f32 = *(x_88);
+  let x_182 : f32 = *(x_123);
+  param_4 = vec2<f32>((x_171 - x_172), (x_174 - x_175));
+  param_5 = vec2<f32>((x_178 - x_179), (x_181 - x_182));
+  let x_186 : f32 = param_4.x;
+  let x_188 : f32 = param_5.y;
+  let x_191 : f32 = param_5.x;
+  let x_193 : f32 = param_4.y;
+  let x_195 : f32 = ((x_186 * x_188) - (x_191 * x_193));
+  x_78 = x_195;
+  let x_197 : bool = (x_139 && (x_195 < 0.0));
+  x_204_phi = x_197;
+  if (!(x_197)) {
+    x_203 = ((x_111 >= 0.0) && (x_195 >= 0.0));
+    x_204_phi = x_203;
+  }
+  let x_204 : bool = x_204_phi;
+  if (!(x_204)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_60 : vec4<f32> = gl_FragCoord;
+  let x_63 : vec2<f32> = x_19.resolution;
+  param_6 = (vec2<f32>(x_60.x, x_60.y) / x_63);
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_65 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_65 == 1)) {
+    let x_71 : f32 = x_11.injectionSwitch.y;
+    let x_73 : f32 = x_11.injectionSwitch.x;
+    if ((x_71 >= x_73)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..1e6b252
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.hlsl
@@ -0,0 +1,183 @@
+cbuffer cbuffer_x_11 : register(b1, space0) {
+  uint4 x_11[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_19 : register(b0, space0) {
+  uint4 x_19[1];
+};
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(inout float2 p, inout float2 a, inout float2 b, inout float2 c) {
+  float x_78 = 0.0f;
+  float x_79 = 0.0f;
+  float x_80 = 0.0f;
+  float2 param = float2(0.0f, 0.0f);
+  float2 param_1 = float2(0.0f, 0.0f);
+  float2 param_2 = float2(0.0f, 0.0f);
+  float2 param_3 = float2(0.0f, 0.0f);
+  float2 param_4 = float2(0.0f, 0.0f);
+  float2 param_5 = float2(0.0f, 0.0f);
+  bool x_147 = false;
+  bool x_203 = false;
+  bool x_148_phi = false;
+  bool x_204_phi = false;
+  const float x_82 = p.x;
+  const float x_84 = a.x;
+  const float x_87 = p.y;
+  const float x_89 = a.y;
+  const float x_93 = b.x;
+  const float x_94 = a.x;
+  const float x_97 = b.y;
+  const float x_98 = a.y;
+  param = float2((x_82 - x_84), (x_87 - x_89));
+  param_1 = float2((x_93 - x_94), (x_97 - x_98));
+  const float x_102 = param.x;
+  const float x_104 = param_1.y;
+  const float x_107 = param_1.x;
+  const float x_109 = param.y;
+  const float x_111 = ((x_102 * x_104) - (x_107 * x_109));
+  x_80 = x_111;
+  const float x_112 = p.x;
+  const float x_113 = b.x;
+  const float x_115 = p.y;
+  const float x_116 = b.y;
+  const float x_120 = c.x;
+  const float x_121 = b.x;
+  const float x_124 = c.y;
+  const float x_125 = b.y;
+  param_2 = float2((x_112 - x_113), (x_115 - x_116));
+  param_3 = float2((x_120 - x_121), (x_124 - x_125));
+  const float x_129 = param_2.x;
+  const float x_131 = param_3.y;
+  const float x_134 = param_3.x;
+  const float x_136 = param_2.y;
+  const float x_138 = ((x_129 * x_131) - (x_134 * x_136));
+  x_79 = x_138;
+  const bool x_139 = (x_111 < 0.0f);
+  bool tint_tmp = x_139;
+  if (tint_tmp) {
+    tint_tmp = (x_138 < 0.0f);
+  }
+  const bool x_141 = (tint_tmp);
+  x_148_phi = x_141;
+  if (!(x_141)) {
+    bool tint_tmp_1 = (x_111 >= 0.0f);
+    if (tint_tmp_1) {
+      tint_tmp_1 = (x_138 >= 0.0f);
+    }
+    x_147 = (tint_tmp_1);
+    x_148_phi = x_147;
+  }
+  int x_153_phi = 0;
+  if (!(x_148_phi)) {
+    x_153_phi = 0;
+    while (true) {
+      int x_154 = 0;
+      int x_164_phi = 0;
+      const int x_153 = x_153_phi;
+      const float x_159 = asfloat(x_11[0].y);
+      const int x_160 = int(x_159);
+      if ((x_153 < x_160)) {
+      } else {
+        break;
+      }
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      x_164_phi = 0;
+      while (true) {
+        int x_165 = 0;
+        const int x_164 = x_164_phi;
+        if ((x_164 < x_160)) {
+        } else {
+          break;
+        }
+        x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        {
+          x_165 = (x_164 + 1);
+          x_164_phi = x_165;
+        }
+      }
+      {
+        x_154 = (x_153 + 1);
+        x_153_phi = x_154;
+      }
+    }
+    return 0;
+  }
+  const float x_171 = p.x;
+  const float x_172 = c.x;
+  const float x_174 = p.y;
+  const float x_175 = c.y;
+  const float x_178 = a.x;
+  const float x_179 = c.x;
+  const float x_181 = a.y;
+  const float x_182 = c.y;
+  param_4 = float2((x_171 - x_172), (x_174 - x_175));
+  param_5 = float2((x_178 - x_179), (x_181 - x_182));
+  const float x_186 = param_4.x;
+  const float x_188 = param_5.y;
+  const float x_191 = param_5.x;
+  const float x_193 = param_4.y;
+  const float x_195 = ((x_186 * x_188) - (x_191 * x_193));
+  x_78 = x_195;
+  bool tint_tmp_2 = x_139;
+  if (tint_tmp_2) {
+    tint_tmp_2 = (x_195 < 0.0f);
+  }
+  const bool x_197 = (tint_tmp_2);
+  x_204_phi = x_197;
+  if (!(x_197)) {
+    bool tint_tmp_3 = (x_111 >= 0.0f);
+    if (tint_tmp_3) {
+      tint_tmp_3 = (x_195 >= 0.0f);
+    }
+    x_203 = (tint_tmp_3);
+    x_204_phi = x_203;
+  }
+  if (!(x_204_phi)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1() {
+  float2 param_6 = float2(0.0f, 0.0f);
+  float2 param_7 = float2(0.0f, 0.0f);
+  float2 param_8 = float2(0.0f, 0.0f);
+  float2 param_9 = float2(0.0f, 0.0f);
+  const float4 x_60 = gl_FragCoord;
+  const float2 x_63 = asfloat(x_19[0].xy);
+  param_6 = (float2(x_60.x, x_60.y) / x_63);
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  const int x_65 = pointInTriangle_vf2_vf2_vf2_vf2_(param_6, param_7, param_8, param_9);
+  if ((x_65 == 1)) {
+    const float x_71 = asfloat(x_11[0].y);
+    const float x_73 = asfloat(x_11[0].x);
+    if ((x_71 >= x_73)) {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.msl
new file mode 100644
index 0000000..6537e89
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.msl
@@ -0,0 +1,168 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int pointInTriangle_vf2_vf2_vf2_vf2_(constant buf1& x_11, thread float2* const p, thread float2* const a, thread float2* const b, thread float2* const c, thread float4* const tint_symbol_5) {
+  float x_78 = 0.0f;
+  float x_79 = 0.0f;
+  float x_80 = 0.0f;
+  float2 param = 0.0f;
+  float2 param_1 = 0.0f;
+  float2 param_2 = 0.0f;
+  float2 param_3 = 0.0f;
+  float2 param_4 = 0.0f;
+  float2 param_5 = 0.0f;
+  bool x_147 = false;
+  bool x_203 = false;
+  bool x_148_phi = false;
+  bool x_204_phi = false;
+  float const x_82 = (*(p)).x;
+  float const x_84 = (*(a)).x;
+  float const x_87 = (*(p)).y;
+  float const x_89 = (*(a)).y;
+  float const x_93 = (*(b)).x;
+  float const x_94 = (*(a)).x;
+  float const x_97 = (*(b)).y;
+  float const x_98 = (*(a)).y;
+  param = float2((x_82 - x_84), (x_87 - x_89));
+  param_1 = float2((x_93 - x_94), (x_97 - x_98));
+  float const x_102 = param.x;
+  float const x_104 = param_1.y;
+  float const x_107 = param_1.x;
+  float const x_109 = param.y;
+  float const x_111 = ((x_102 * x_104) - (x_107 * x_109));
+  x_80 = x_111;
+  float const x_112 = (*(p)).x;
+  float const x_113 = (*(b)).x;
+  float const x_115 = (*(p)).y;
+  float const x_116 = (*(b)).y;
+  float const x_120 = (*(c)).x;
+  float const x_121 = (*(b)).x;
+  float const x_124 = (*(c)).y;
+  float const x_125 = (*(b)).y;
+  param_2 = float2((x_112 - x_113), (x_115 - x_116));
+  param_3 = float2((x_120 - x_121), (x_124 - x_125));
+  float const x_129 = param_2.x;
+  float const x_131 = param_3.y;
+  float const x_134 = param_3.x;
+  float const x_136 = param_2.y;
+  float const x_138 = ((x_129 * x_131) - (x_134 * x_136));
+  x_79 = x_138;
+  bool const x_139 = (x_111 < 0.0f);
+  bool const x_141 = (x_139 && (x_138 < 0.0f));
+  x_148_phi = x_141;
+  if (!(x_141)) {
+    x_147 = ((x_111 >= 0.0f) && (x_138 >= 0.0f));
+    x_148_phi = x_147;
+  }
+  int x_153_phi = 0;
+  bool const x_148 = x_148_phi;
+  if (!(x_148)) {
+    x_153_phi = 0;
+    while (true) {
+      int x_154 = 0;
+      int x_164_phi = 0;
+      int const x_153 = x_153_phi;
+      float const x_159 = x_11.injectionSwitch.y;
+      int const x_160 = int(x_159);
+      if ((x_153 < x_160)) {
+      } else {
+        break;
+      }
+      *(tint_symbol_5) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+      x_164_phi = 0;
+      while (true) {
+        int x_165 = 0;
+        int const x_164 = x_164_phi;
+        if ((x_164 < x_160)) {
+        } else {
+          break;
+        }
+        *(tint_symbol_5) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+        {
+          x_165 = (x_164 + 1);
+          x_164_phi = x_165;
+        }
+      }
+      {
+        x_154 = (x_153 + 1);
+        x_153_phi = x_154;
+      }
+    }
+    return 0;
+  }
+  float const x_171 = (*(p)).x;
+  float const x_172 = (*(c)).x;
+  float const x_174 = (*(p)).y;
+  float const x_175 = (*(c)).y;
+  float const x_178 = (*(a)).x;
+  float const x_179 = (*(c)).x;
+  float const x_181 = (*(a)).y;
+  float const x_182 = (*(c)).y;
+  param_4 = float2((x_171 - x_172), (x_174 - x_175));
+  param_5 = float2((x_178 - x_179), (x_181 - x_182));
+  float const x_186 = param_4.x;
+  float const x_188 = param_5.y;
+  float const x_191 = param_5.x;
+  float const x_193 = param_4.y;
+  float const x_195 = ((x_186 * x_188) - (x_191 * x_193));
+  x_78 = x_195;
+  bool const x_197 = (x_139 && (x_195 < 0.0f));
+  x_204_phi = x_197;
+  if (!(x_197)) {
+    x_203 = ((x_111 >= 0.0f) && (x_195 >= 0.0f));
+    x_204_phi = x_203;
+  }
+  bool const x_204 = x_204_phi;
+  if (!(x_204)) {
+    return 0;
+  }
+  return 1;
+}
+
+void main_1(constant buf0& x_19, constant buf1& x_11, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float2 param_6 = 0.0f;
+  float2 param_7 = 0.0f;
+  float2 param_8 = 0.0f;
+  float2 param_9 = 0.0f;
+  float4 const x_60 = *(tint_symbol_6);
+  float2 const x_63 = x_19.resolution;
+  param_6 = (float2(x_60.x, x_60.y) / x_63);
+  param_7 = float2(0.699999988f, 0.300000012f);
+  param_8 = float2(0.5f, 0.899999976f);
+  param_9 = float2(0.100000001f, 0.400000006f);
+  int const x_65 = pointInTriangle_vf2_vf2_vf2_vf2_(x_11, &(param_6), &(param_7), &(param_8), &(param_9), tint_symbol_7);
+  if ((x_65 == 1)) {
+    float const x_71 = x_11.injectionSwitch.y;
+    float const x_73 = x_11.injectionSwitch.x;
+    if ((x_71 >= x_73)) {
+      *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_19 [[buffer(0)]], constant buf1& x_11 [[buffer(1)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_19, x_11, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..8e4e6fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.spvasm
@@ -0,0 +1,423 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 300
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_11 "x_11"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "resolution"
+               OpName %x_19 "x_19"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %pointInTriangle_vf2_vf2_vf2_vf2_ "pointInTriangle_vf2_vf2_vf2_vf2_"
+               OpName %p "p"
+               OpName %a "a"
+               OpName %b "b"
+               OpName %c "c"
+               OpName %x_78 "x_78"
+               OpName %x_79 "x_79"
+               OpName %x_80 "x_80"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %param_4 "param_4"
+               OpName %param_5 "param_5"
+               OpName %x_147 "x_147"
+               OpName %x_203 "x_203"
+               OpName %x_148_phi "x_148_phi"
+               OpName %x_204_phi "x_204_phi"
+               OpName %x_153_phi "x_153_phi"
+               OpName %x_154 "x_154"
+               OpName %x_164_phi "x_164_phi"
+               OpName %x_165 "x_165"
+               OpName %main_1 "main_1"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_11 NonWritable
+               OpDecorate %x_11 DescriptorSet 0
+               OpDecorate %x_11 Binding 1
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_11 = OpVariable %_ptr_Uniform_buf1 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_19 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+        %int = OpTypeInt 32 1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpTypeFunction %int %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float %_ptr_Function_v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %29 = OpConstantNull %float
+         %33 = OpConstantNull %v2float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+%_ptr_Function_int = OpTypePointer Function %int
+        %148 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+        %170 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+        %244 = OpTypeFunction %void
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+%float_0_699999988 = OpConstant %float 0.699999988
+%float_0_300000012 = OpConstant %float 0.300000012
+        %262 = OpConstantComposite %v2float %float_0_699999988 %float_0_300000012
+  %float_0_5 = OpConstant %float 0.5
+%float_0_899999976 = OpConstant %float 0.899999976
+        %265 = OpConstantComposite %v2float %float_0_5 %float_0_899999976
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_0_400000006 = OpConstant %float 0.400000006
+        %268 = OpConstantComposite %v2float %float_0_100000001 %float_0_400000006
+        %285 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %286 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %287 = OpTypeFunction %void %main_out
+%pointInTriangle_vf2_vf2_vf2_vf2_ = OpFunction %int None %18
+          %p = OpFunctionParameter %_ptr_Function_v2float
+          %a = OpFunctionParameter %_ptr_Function_v2float
+          %b = OpFunctionParameter %_ptr_Function_v2float
+          %c = OpFunctionParameter %_ptr_Function_v2float
+         %26 = OpLabel
+       %x_78 = OpVariable %_ptr_Function_float Function %29
+       %x_79 = OpVariable %_ptr_Function_float Function %29
+       %x_80 = OpVariable %_ptr_Function_float Function %29
+      %param = OpVariable %_ptr_Function_v2float Function %33
+    %param_1 = OpVariable %_ptr_Function_v2float Function %33
+    %param_2 = OpVariable %_ptr_Function_v2float Function %33
+    %param_3 = OpVariable %_ptr_Function_v2float Function %33
+    %param_4 = OpVariable %_ptr_Function_v2float Function %33
+    %param_5 = OpVariable %_ptr_Function_v2float Function %33
+      %x_147 = OpVariable %_ptr_Function_bool Function %42
+      %x_203 = OpVariable %_ptr_Function_bool Function %42
+  %x_148_phi = OpVariable %_ptr_Function_bool Function %42
+  %x_204_phi = OpVariable %_ptr_Function_bool Function %42
+  %x_153_phi = OpVariable %_ptr_Function_int Function %148
+      %x_154 = OpVariable %_ptr_Function_int Function %148
+  %x_164_phi = OpVariable %_ptr_Function_int Function %148
+      %x_165 = OpVariable %_ptr_Function_int Function %148
+         %49 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %50 = OpLoad %float %49
+         %52 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %53 = OpLoad %float %52
+         %56 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %57 = OpLoad %float %56
+         %59 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %60 = OpLoad %float %59
+         %62 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %63 = OpLoad %float %62
+         %65 = OpAccessChain %_ptr_Function_float %a %uint_0
+         %66 = OpLoad %float %65
+         %68 = OpAccessChain %_ptr_Function_float %b %uint_1
+         %69 = OpLoad %float %68
+         %71 = OpAccessChain %_ptr_Function_float %a %uint_1
+         %72 = OpLoad %float %71
+         %73 = OpFSub %float %50 %53
+         %74 = OpFSub %float %57 %60
+         %75 = OpCompositeConstruct %v2float %73 %74
+               OpStore %param %75
+         %76 = OpFSub %float %63 %66
+         %77 = OpFSub %float %69 %72
+         %78 = OpCompositeConstruct %v2float %76 %77
+               OpStore %param_1 %78
+         %79 = OpAccessChain %_ptr_Function_float %param %uint_0
+         %80 = OpLoad %float %79
+         %81 = OpAccessChain %_ptr_Function_float %param_1 %uint_1
+         %82 = OpLoad %float %81
+         %83 = OpAccessChain %_ptr_Function_float %param_1 %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Function_float %param %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFMul %float %80 %82
+         %88 = OpFMul %float %84 %86
+         %89 = OpFSub %float %87 %88
+               OpStore %x_80 %89
+         %91 = OpAccessChain %_ptr_Function_float %p %uint_0
+         %92 = OpLoad %float %91
+         %94 = OpAccessChain %_ptr_Function_float %b %uint_0
+         %95 = OpLoad %float %94
+         %97 = OpAccessChain %_ptr_Function_float %p %uint_1
+         %98 = OpLoad %float %97
+        %100 = OpAccessChain %_ptr_Function_float %b %uint_1
+        %101 = OpLoad %float %100
+        %103 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %104 = OpLoad %float %103
+        %106 = OpAccessChain %_ptr_Function_float %b %uint_0
+        %107 = OpLoad %float %106
+        %109 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %110 = OpLoad %float %109
+        %112 = OpAccessChain %_ptr_Function_float %b %uint_1
+        %113 = OpLoad %float %112
+        %114 = OpFSub %float %92 %95
+        %115 = OpFSub %float %98 %101
+        %116 = OpCompositeConstruct %v2float %114 %115
+               OpStore %param_2 %116
+        %117 = OpFSub %float %104 %107
+        %118 = OpFSub %float %110 %113
+        %119 = OpCompositeConstruct %v2float %117 %118
+               OpStore %param_3 %119
+        %120 = OpAccessChain %_ptr_Function_float %param_2 %uint_0
+        %121 = OpLoad %float %120
+        %122 = OpAccessChain %_ptr_Function_float %param_3 %uint_1
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Function_float %param_3 %uint_0
+        %125 = OpLoad %float %124
+        %126 = OpAccessChain %_ptr_Function_float %param_2 %uint_1
+        %127 = OpLoad %float %126
+        %128 = OpFMul %float %121 %123
+        %129 = OpFMul %float %125 %127
+        %130 = OpFSub %float %128 %129
+               OpStore %x_79 %130
+        %132 = OpFOrdLessThan %bool %89 %float_0
+               OpSelectionMerge %133 None
+               OpBranchConditional %132 %134 %133
+        %134 = OpLabel
+        %135 = OpFOrdLessThan %bool %130 %float_0
+               OpBranch %133
+        %133 = OpLabel
+        %136 = OpPhi %bool %132 %26 %135 %134
+               OpStore %x_148_phi %136
+        %137 = OpLogicalNot %bool %136
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+        %140 = OpFOrdGreaterThanEqual %bool %89 %float_0
+               OpSelectionMerge %141 None
+               OpBranchConditional %140 %142 %141
+        %142 = OpLabel
+        %143 = OpFOrdGreaterThanEqual %bool %130 %float_0
+               OpBranch %141
+        %141 = OpLabel
+        %144 = OpPhi %bool %140 %139 %143 %142
+               OpStore %x_147 %144
+        %145 = OpLoad %bool %x_147
+               OpStore %x_148_phi %145
+               OpBranch %138
+        %138 = OpLabel
+        %149 = OpLoad %bool %x_148_phi
+        %150 = OpLogicalNot %bool %149
+               OpSelectionMerge %151 None
+               OpBranchConditional %150 %152 %151
+        %152 = OpLabel
+               OpStore %x_153_phi %int_0
+               OpBranch %154
+        %154 = OpLabel
+               OpLoopMerge %155 %156 None
+               OpBranch %157
+        %157 = OpLabel
+        %160 = OpLoad %int %x_153_phi
+        %162 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_1
+        %163 = OpLoad %float %162
+        %164 = OpConvertFToS %int %163
+        %165 = OpSLessThan %bool %160 %164
+               OpSelectionMerge %166 None
+               OpBranchConditional %165 %167 %168
+        %167 = OpLabel
+               OpBranch %166
+        %168 = OpLabel
+               OpBranch %155
+        %166 = OpLabel
+               OpStore %x_GLF_color %170
+               OpStore %x_164_phi %int_0
+               OpBranch %171
+        %171 = OpLabel
+               OpLoopMerge %172 %173 None
+               OpBranch %174
+        %174 = OpLabel
+        %176 = OpLoad %int %x_164_phi
+        %177 = OpSLessThan %bool %176 %164
+               OpSelectionMerge %178 None
+               OpBranchConditional %177 %179 %180
+        %179 = OpLabel
+               OpBranch %178
+        %180 = OpLabel
+               OpBranch %172
+        %178 = OpLabel
+               OpStore %x_GLF_color %170
+               OpBranch %173
+        %173 = OpLabel
+        %182 = OpIAdd %int %176 %int_1
+               OpStore %x_165 %182
+        %183 = OpLoad %int %x_165
+               OpStore %x_164_phi %183
+               OpBranch %171
+        %172 = OpLabel
+               OpBranch %156
+        %156 = OpLabel
+        %184 = OpIAdd %int %160 %int_1
+               OpStore %x_154 %184
+        %185 = OpLoad %int %x_154
+               OpStore %x_153_phi %185
+               OpBranch %154
+        %155 = OpLabel
+               OpReturnValue %int_0
+        %151 = OpLabel
+        %187 = OpAccessChain %_ptr_Function_float %p %uint_0
+        %188 = OpLoad %float %187
+        %190 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %191 = OpLoad %float %190
+        %193 = OpAccessChain %_ptr_Function_float %p %uint_1
+        %194 = OpLoad %float %193
+        %196 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %197 = OpLoad %float %196
+        %199 = OpAccessChain %_ptr_Function_float %a %uint_0
+        %200 = OpLoad %float %199
+        %202 = OpAccessChain %_ptr_Function_float %c %uint_0
+        %203 = OpLoad %float %202
+        %205 = OpAccessChain %_ptr_Function_float %a %uint_1
+        %206 = OpLoad %float %205
+        %208 = OpAccessChain %_ptr_Function_float %c %uint_1
+        %209 = OpLoad %float %208
+        %210 = OpFSub %float %188 %191
+        %211 = OpFSub %float %194 %197
+        %212 = OpCompositeConstruct %v2float %210 %211
+               OpStore %param_4 %212
+        %213 = OpFSub %float %200 %203
+        %214 = OpFSub %float %206 %209
+        %215 = OpCompositeConstruct %v2float %213 %214
+               OpStore %param_5 %215
+        %216 = OpAccessChain %_ptr_Function_float %param_4 %uint_0
+        %217 = OpLoad %float %216
+        %218 = OpAccessChain %_ptr_Function_float %param_5 %uint_1
+        %219 = OpLoad %float %218
+        %220 = OpAccessChain %_ptr_Function_float %param_5 %uint_0
+        %221 = OpLoad %float %220
+        %222 = OpAccessChain %_ptr_Function_float %param_4 %uint_1
+        %223 = OpLoad %float %222
+        %224 = OpFMul %float %217 %219
+        %225 = OpFMul %float %221 %223
+        %226 = OpFSub %float %224 %225
+               OpStore %x_78 %226
+               OpSelectionMerge %227 None
+               OpBranchConditional %132 %228 %227
+        %228 = OpLabel
+        %229 = OpFOrdLessThan %bool %226 %float_0
+               OpBranch %227
+        %227 = OpLabel
+        %230 = OpPhi %bool %132 %151 %229 %228
+               OpStore %x_204_phi %230
+        %231 = OpLogicalNot %bool %230
+               OpSelectionMerge %232 None
+               OpBranchConditional %231 %233 %232
+        %233 = OpLabel
+        %234 = OpFOrdGreaterThanEqual %bool %89 %float_0
+               OpSelectionMerge %235 None
+               OpBranchConditional %234 %236 %235
+        %236 = OpLabel
+        %237 = OpFOrdGreaterThanEqual %bool %226 %float_0
+               OpBranch %235
+        %235 = OpLabel
+        %238 = OpPhi %bool %234 %233 %237 %236
+               OpStore %x_203 %238
+        %239 = OpLoad %bool %x_203
+               OpStore %x_204_phi %239
+               OpBranch %232
+        %232 = OpLabel
+        %240 = OpLoad %bool %x_204_phi
+        %241 = OpLogicalNot %bool %240
+               OpSelectionMerge %242 None
+               OpBranchConditional %241 %243 %242
+        %243 = OpLabel
+               OpReturnValue %int_0
+        %242 = OpLabel
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %244
+        %247 = OpLabel
+    %param_6 = OpVariable %_ptr_Function_v2float Function %33
+    %param_7 = OpVariable %_ptr_Function_v2float Function %33
+    %param_8 = OpVariable %_ptr_Function_v2float Function %33
+    %param_9 = OpVariable %_ptr_Function_v2float Function %33
+        %252 = OpLoad %v4float %gl_FragCoord
+        %254 = OpAccessChain %_ptr_Uniform_v2float %x_19 %uint_0
+        %255 = OpLoad %v2float %254
+        %256 = OpCompositeExtract %float %252 0
+        %257 = OpCompositeExtract %float %252 1
+        %258 = OpCompositeConstruct %v2float %256 %257
+        %259 = OpFDiv %v2float %258 %255
+               OpStore %param_6 %259
+               OpStore %param_7 %262
+               OpStore %param_8 %265
+               OpStore %param_9 %268
+        %269 = OpFunctionCall %int %pointInTriangle_vf2_vf2_vf2_vf2_ %param_6 %param_7 %param_8 %param_9
+        %274 = OpIEqual %bool %269 %int_1
+               OpSelectionMerge %275 None
+               OpBranchConditional %274 %276 %277
+        %276 = OpLabel
+        %278 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_1
+        %279 = OpLoad %float %278
+        %280 = OpAccessChain %_ptr_Uniform_float %x_11 %uint_0 %uint_0
+        %281 = OpLoad %float %280
+        %282 = OpFOrdGreaterThanEqual %bool %279 %281
+               OpSelectionMerge %283 None
+               OpBranchConditional %282 %284 %283
+        %284 = OpLabel
+               OpStore %x_GLF_color %285
+               OpBranch %283
+        %283 = OpLabel
+               OpBranch %275
+        %277 = OpLabel
+               OpStore %x_GLF_color %286
+               OpBranch %275
+        %275 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %287
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %291 = OpLabel
+        %292 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %292
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %244
+        %294 = OpLabel
+        %295 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %295
+        %296 = OpFunctionCall %void %main_1
+        %298 = OpLoad %v4float %x_GLF_color
+        %299 = OpCompositeConstruct %main_out %298
+        %297 = OpFunctionCall %void %tint_symbol_3 %299
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..c9e248c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl.expected.wgsl
@@ -0,0 +1,181 @@
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf0 {
+  resolution : vec2<f32>;
+};
+
+[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_19 : buf0;
+
+fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
+  var x_78 : f32;
+  var x_79 : f32;
+  var x_80 : f32;
+  var param : vec2<f32>;
+  var param_1 : vec2<f32>;
+  var param_2 : vec2<f32>;
+  var param_3 : vec2<f32>;
+  var param_4 : vec2<f32>;
+  var param_5 : vec2<f32>;
+  var x_147 : bool;
+  var x_203 : bool;
+  var x_148_phi : bool;
+  var x_204_phi : bool;
+  let x_81 : ptr<function, f32> = &((*(p)).x);
+  let x_82 : f32 = *(x_81);
+  let x_83 : ptr<function, f32> = &((*(a)).x);
+  let x_84 : f32 = *(x_83);
+  let x_86 : ptr<function, f32> = &((*(p)).y);
+  let x_87 : f32 = *(x_86);
+  let x_88 : ptr<function, f32> = &((*(a)).y);
+  let x_89 : f32 = *(x_88);
+  let x_92 : ptr<function, f32> = &((*(b)).x);
+  let x_93 : f32 = *(x_92);
+  let x_94 : f32 = *(x_83);
+  let x_96 : ptr<function, f32> = &((*(b)).y);
+  let x_97 : f32 = *(x_96);
+  let x_98 : f32 = *(x_88);
+  param = vec2<f32>((x_82 - x_84), (x_87 - x_89));
+  param_1 = vec2<f32>((x_93 - x_94), (x_97 - x_98));
+  let x_102 : f32 = param.x;
+  let x_104 : f32 = param_1.y;
+  let x_107 : f32 = param_1.x;
+  let x_109 : f32 = param.y;
+  let x_111 : f32 = ((x_102 * x_104) - (x_107 * x_109));
+  x_80 = x_111;
+  let x_112 : f32 = *(x_81);
+  let x_113 : f32 = *(x_92);
+  let x_115 : f32 = *(x_86);
+  let x_116 : f32 = *(x_96);
+  let x_119 : ptr<function, f32> = &((*(c)).x);
+  let x_120 : f32 = *(x_119);
+  let x_121 : f32 = *(x_92);
+  let x_123 : ptr<function, f32> = &((*(c)).y);
+  let x_124 : f32 = *(x_123);
+  let x_125 : f32 = *(x_96);
+  param_2 = vec2<f32>((x_112 - x_113), (x_115 - x_116));
+  param_3 = vec2<f32>((x_120 - x_121), (x_124 - x_125));
+  let x_129 : f32 = param_2.x;
+  let x_131 : f32 = param_3.y;
+  let x_134 : f32 = param_3.x;
+  let x_136 : f32 = param_2.y;
+  let x_138 : f32 = ((x_129 * x_131) - (x_134 * x_136));
+  x_79 = x_138;
+  let x_139 : bool = (x_111 < 0.0);
+  let x_141 : bool = (x_139 && (x_138 < 0.0));
+  x_148_phi = x_141;
+  if (!(x_141)) {
+    x_147 = ((x_111 >= 0.0) && (x_138 >= 0.0));
+    x_148_phi = x_147;
+  }
+  var x_153_phi : i32;
+  let x_148 : bool = x_148_phi;
+  if (!(x_148)) {
+    x_153_phi = 0;
+    loop {
+      var x_154 : i32;
+      var x_164_phi : i32;
+      let x_153 : i32 = x_153_phi;
+      let x_159 : f32 = x_11.injectionSwitch.y;
+      let x_160 : i32 = i32(x_159);
+      if ((x_153 < x_160)) {
+      } else {
+        break;
+      }
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+      x_164_phi = 0;
+      loop {
+        var x_165 : i32;
+        let x_164 : i32 = x_164_phi;
+        if ((x_164 < x_160)) {
+        } else {
+          break;
+        }
+        x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+
+        continuing {
+          x_165 = (x_164 + 1);
+          x_164_phi = x_165;
+        }
+      }
+
+      continuing {
+        x_154 = (x_153 + 1);
+        x_153_phi = x_154;
+      }
+    }
+    return 0;
+  }
+  let x_171 : f32 = *(x_81);
+  let x_172 : f32 = *(x_119);
+  let x_174 : f32 = *(x_86);
+  let x_175 : f32 = *(x_123);
+  let x_178 : f32 = *(x_83);
+  let x_179 : f32 = *(x_119);
+  let x_181 : f32 = *(x_88);
+  let x_182 : f32 = *(x_123);
+  param_4 = vec2<f32>((x_171 - x_172), (x_174 - x_175));
+  param_5 = vec2<f32>((x_178 - x_179), (x_181 - x_182));
+  let x_186 : f32 = param_4.x;
+  let x_188 : f32 = param_5.y;
+  let x_191 : f32 = param_5.x;
+  let x_193 : f32 = param_4.y;
+  let x_195 : f32 = ((x_186 * x_188) - (x_191 * x_193));
+  x_78 = x_195;
+  let x_197 : bool = (x_139 && (x_195 < 0.0));
+  x_204_phi = x_197;
+  if (!(x_197)) {
+    x_203 = ((x_111 >= 0.0) && (x_195 >= 0.0));
+    x_204_phi = x_203;
+  }
+  let x_204 : bool = x_204_phi;
+  if (!(x_204)) {
+    return 0;
+  }
+  return 1;
+}
+
+fn main_1() {
+  var param_6 : vec2<f32>;
+  var param_7 : vec2<f32>;
+  var param_8 : vec2<f32>;
+  var param_9 : vec2<f32>;
+  let x_60 : vec4<f32> = gl_FragCoord;
+  let x_63 : vec2<f32> = x_19.resolution;
+  param_6 = (vec2<f32>(x_60.x, x_60.y) / x_63);
+  param_7 = vec2<f32>(0.699999988, 0.300000012);
+  param_8 = vec2<f32>(0.5, 0.899999976);
+  param_9 = vec2<f32>(0.100000001, 0.400000006);
+  let x_65 : i32 = pointInTriangle_vf2_vf2_vf2_vf2_(&(param_6), &(param_7), &(param_8), &(param_9));
+  if ((x_65 == 1)) {
+    let x_71 : f32 = x_11.injectionSwitch.y;
+    let x_73 : f32 = x_11.injectionSwitch.x;
+    if ((x_71 >= x_73)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm
new file mode 100644
index 0000000..cca8b7a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm
@@ -0,0 +1,89 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_ "makeTreeNode(struct-BST-i1-i1-i11;"
+               OpName %tree "tree"
+               OpName %tree_0 "tree"
+               OpName %param "param"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %BST 0 RelaxedPrecision
+               OpMemberDecorate %BST 1 RelaxedPrecision
+               OpMemberDecorate %BST 2 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+         %17 = OpTypeFunction %void %_ptr_Function_BST
+      %int_2 = OpConstant %int 2
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+      %int_0 = OpConstant %int 0
+%_ptr_Private_BST = OpTypePointer Private %BST
+%_ptr_Private_int = OpTypePointer Private %int
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+     %tree_0 = OpVariable %_ptr_Function__arr_BST_uint_10 Function
+      %param = OpVariable %_ptr_Function_BST Function
+         %37 = OpLoad %_arr_BST_uint_10 %tree_0
+         %38 = OpCompositeExtract %BST %37 0
+               OpStore %param %38
+         %39 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_ %param
+         %40 = OpLoad %BST %param
+         %41 = OpLoad %_arr_BST_uint_10 %tree_0
+         %42 = OpCompositeInsert %_arr_BST_uint_10 %40 %41 0
+               OpStore %tree_0 %42
+         %43 = OpAccessChain %_ptr_Function_int %tree_0 %int_0 %int_2
+         %11 = OpLoad %_arr_BST_uint_10 %tree_0
+          %9 = OpCompositeExtract %int %11 0 2
+         %44 = OpIEqual %bool %9 %int_0
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %47 None
+               OpBranch %47
+         %48 = OpLabel
+               OpUnreachable
+         %45 = OpLabel
+         %12 = OpLoad %_arr_BST_uint_10 %tree_0
+         %10 = OpCompositeExtract %int %12 0 2
+         %49 = OpConvertSToF %float %10
+         %50 = OpCompositeConstruct %v4float %49 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %50
+               OpReturn
+               OpFunctionEnd
+%makeTreeNode_struct_BST_i1_i1_i11_ = OpFunction %void None %17
+       %tree = OpFunctionParameter %_ptr_Function_BST
+         %51 = OpLabel
+         %52 = OpAccessChain %_ptr_Function_int %tree %int_2
+               OpStore %52 %int_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..f6f974f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.hlsl
@@ -0,0 +1,44 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_(inout BST tree) {
+  tree.rightIndex = 1;
+  return;
+}
+
+void main_1() {
+  BST tree_1[10] = (BST[10])0;
+  BST param = (BST)0;
+  param = tree_1[0u];
+  makeTreeNode_struct_BST_i1_i1_i11_(param);
+  const BST x_40 = param;
+  BST x_42_1[10] = tree_1;
+  x_42_1[0u] = x_40;
+  tree_1 = x_42_1;
+  if ((tree_1[0u].rightIndex == 0)) {
+    while (true) {
+    }
+    return;
+  }
+  x_GLF_color = float4(float(tree_1[0u].rightIndex), 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.msl
new file mode 100644
index 0000000..0c45980
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_(thread BST* const tree) {
+  (*(tree)).rightIndex = 1;
+  return;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  tint_array_wrapper tree_1 = {};
+  BST param = {};
+  tint_array_wrapper const x_37 = tree_1;
+  param = x_37.arr[0u];
+  makeTreeNode_struct_BST_i1_i1_i11_(&(param));
+  BST const x_40 = param;
+  tint_array_wrapper const x_41 = tree_1;
+  tint_array_wrapper x_42_1 = x_41;
+  x_42_1.arr[0u] = x_40;
+  tint_array_wrapper const x_42 = x_42_1;
+  tree_1 = x_42;
+  tint_array_wrapper const x_11 = tree_1;
+  if ((x_11.arr[0u].rightIndex == 0)) {
+    while (true) {
+    }
+    return;
+  }
+  tint_array_wrapper const x_12 = tree_1;
+  *(tint_symbol_4) = float4(float(x_12.arr[0u].rightIndex), 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..902b81d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 73
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_ "makeTreeNode_struct_BST_i1_i1_i11_"
+               OpName %tree "tree"
+               OpName %main_1 "main_1"
+               OpName %tree_1 "tree_1"
+               OpName %param "param"
+               OpName %x_42_1 "x_42_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+          %8 = OpTypeFunction %void %_ptr_Function_BST
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+         %22 = OpTypeFunction %void
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %29 = OpConstantNull %_arr_BST_uint_10
+         %31 = OpConstantNull %BST
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %61 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_ = OpFunction %void None %8
+       %tree = OpFunctionParameter %_ptr_Function_BST
+         %15 = OpLabel
+         %20 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %20 %int_1
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %22
+         %24 = OpLabel
+     %tree_1 = OpVariable %_ptr_Function__arr_BST_uint_10 Function %29
+      %param = OpVariable %_ptr_Function_BST Function %31
+     %x_42_1 = OpVariable %_ptr_Function__arr_BST_uint_10 Function %29
+         %32 = OpLoad %_arr_BST_uint_10 %tree_1
+         %34 = OpCompositeExtract %BST %32 0
+               OpStore %param %34
+         %35 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_ %param
+         %37 = OpLoad %BST %param
+         %38 = OpLoad %_arr_BST_uint_10 %tree_1
+               OpStore %x_42_1 %38
+         %40 = OpAccessChain %_ptr_Function_BST %x_42_1 %uint_0
+               OpStore %40 %37
+         %41 = OpLoad %_arr_BST_uint_10 %x_42_1
+               OpStore %tree_1 %41
+         %42 = OpLoad %_arr_BST_uint_10 %tree_1
+         %43 = OpCompositeExtract %BST %42 0
+         %44 = OpCompositeExtract %int %43 2
+         %46 = OpIEqual %bool %44 %int_0
+               OpSelectionMerge %48 None
+               OpBranchConditional %46 %49 %48
+         %49 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %50
+         %51 = OpLabel
+               OpReturn
+         %48 = OpLabel
+         %54 = OpLoad %_arr_BST_uint_10 %tree_1
+         %56 = OpCompositeExtract %BST %54 0
+         %57 = OpCompositeExtract %int %56 2
+         %55 = OpConvertSToF %float %57
+         %60 = OpCompositeConstruct %v4float %55 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %60
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %61
+%tint_symbol = OpFunctionParameter %main_out
+         %65 = OpLabel
+         %66 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %66
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %68 = OpLabel
+         %69 = OpFunctionCall %void %main_1
+         %71 = OpLoad %v4float %x_GLF_color
+         %72 = OpCompositeConstruct %main_out %71
+         %70 = OpFunctionCall %void %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..974581d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.spvasm.expected.wgsl
@@ -0,0 +1,47 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_(tree : ptr<function, BST>) {
+  (*(tree)).rightIndex = 1;
+  return;
+}
+
+fn main_1() {
+  var tree_1 : array<BST, 10>;
+  var param : BST;
+  let x_37 : array<BST, 10> = tree_1;
+  param = x_37[0u];
+  makeTreeNode_struct_BST_i1_i1_i11_(&(param));
+  let x_40 : BST = param;
+  let x_41 : array<BST, 10> = tree_1;
+  var x_42_1 : array<BST, 10> = x_41;
+  x_42_1[0u] = x_40;
+  let x_42 : array<BST, 10> = x_42_1;
+  tree_1 = x_42;
+  let x_43 : ptr<function, i32> = &(tree_1[0].rightIndex);
+  let x_11 : array<BST, 10> = tree_1;
+  if ((x_11[0u].rightIndex == 0)) {
+    loop {
+    }
+    return;
+  }
+  let x_12 : array<BST, 10> = tree_1;
+  x_GLF_color = vec4<f32>(f32(x_12[0u].rightIndex), 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl
new file mode 100644
index 0000000..974581d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl
@@ -0,0 +1,47 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_(tree : ptr<function, BST>) {
+  (*(tree)).rightIndex = 1;
+  return;
+}
+
+fn main_1() {
+  var tree_1 : array<BST, 10>;
+  var param : BST;
+  let x_37 : array<BST, 10> = tree_1;
+  param = x_37[0u];
+  makeTreeNode_struct_BST_i1_i1_i11_(&(param));
+  let x_40 : BST = param;
+  let x_41 : array<BST, 10> = tree_1;
+  var x_42_1 : array<BST, 10> = x_41;
+  x_42_1[0u] = x_40;
+  let x_42 : array<BST, 10> = x_42_1;
+  tree_1 = x_42;
+  let x_43 : ptr<function, i32> = &(tree_1[0].rightIndex);
+  let x_11 : array<BST, 10> = tree_1;
+  if ((x_11[0u].rightIndex == 0)) {
+    loop {
+    }
+    return;
+  }
+  let x_12 : array<BST, 10> = tree_1;
+  x_GLF_color = vec4<f32>(f32(x_12[0u].rightIndex), 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..f6f974f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.hlsl
@@ -0,0 +1,44 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void makeTreeNode_struct_BST_i1_i1_i11_(inout BST tree) {
+  tree.rightIndex = 1;
+  return;
+}
+
+void main_1() {
+  BST tree_1[10] = (BST[10])0;
+  BST param = (BST)0;
+  param = tree_1[0u];
+  makeTreeNode_struct_BST_i1_i1_i11_(param);
+  const BST x_40 = param;
+  BST x_42_1[10] = tree_1;
+  x_42_1[0u] = x_40;
+  tree_1 = x_42_1;
+  if ((tree_1[0u].rightIndex == 0)) {
+    while (true) {
+    }
+    return;
+  }
+  x_GLF_color = float4(float(tree_1[0u].rightIndex), 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.msl
new file mode 100644
index 0000000..0c45980
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct tint_array_wrapper {
+  BST arr[10];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_(thread BST* const tree) {
+  (*(tree)).rightIndex = 1;
+  return;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  tint_array_wrapper tree_1 = {};
+  BST param = {};
+  tint_array_wrapper const x_37 = tree_1;
+  param = x_37.arr[0u];
+  makeTreeNode_struct_BST_i1_i1_i11_(&(param));
+  BST const x_40 = param;
+  tint_array_wrapper const x_41 = tree_1;
+  tint_array_wrapper x_42_1 = x_41;
+  x_42_1.arr[0u] = x_40;
+  tint_array_wrapper const x_42 = x_42_1;
+  tree_1 = x_42;
+  tint_array_wrapper const x_11 = tree_1;
+  if ((x_11.arr[0u].rightIndex == 0)) {
+    while (true) {
+    }
+    return;
+  }
+  tint_array_wrapper const x_12 = tree_1;
+  *(tint_symbol_4) = float4(float(x_12.arr[0u].rightIndex), 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..902b81d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 73
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_ "makeTreeNode_struct_BST_i1_i1_i11_"
+               OpName %tree "tree"
+               OpName %main_1 "main_1"
+               OpName %tree_1 "tree_1"
+               OpName %param "param"
+               OpName %x_42_1 "x_42_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+          %8 = OpTypeFunction %void %_ptr_Function_BST
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+         %22 = OpTypeFunction %void
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Function__arr_BST_uint_10 = OpTypePointer Function %_arr_BST_uint_10
+         %29 = OpConstantNull %_arr_BST_uint_10
+         %31 = OpConstantNull %BST
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %61 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_ = OpFunction %void None %8
+       %tree = OpFunctionParameter %_ptr_Function_BST
+         %15 = OpLabel
+         %20 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %20 %int_1
+               OpReturn
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %22
+         %24 = OpLabel
+     %tree_1 = OpVariable %_ptr_Function__arr_BST_uint_10 Function %29
+      %param = OpVariable %_ptr_Function_BST Function %31
+     %x_42_1 = OpVariable %_ptr_Function__arr_BST_uint_10 Function %29
+         %32 = OpLoad %_arr_BST_uint_10 %tree_1
+         %34 = OpCompositeExtract %BST %32 0
+               OpStore %param %34
+         %35 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_ %param
+         %37 = OpLoad %BST %param
+         %38 = OpLoad %_arr_BST_uint_10 %tree_1
+               OpStore %x_42_1 %38
+         %40 = OpAccessChain %_ptr_Function_BST %x_42_1 %uint_0
+               OpStore %40 %37
+         %41 = OpLoad %_arr_BST_uint_10 %x_42_1
+               OpStore %tree_1 %41
+         %42 = OpLoad %_arr_BST_uint_10 %tree_1
+         %43 = OpCompositeExtract %BST %42 0
+         %44 = OpCompositeExtract %int %43 2
+         %46 = OpIEqual %bool %44 %int_0
+               OpSelectionMerge %48 None
+               OpBranchConditional %46 %49 %48
+         %49 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %50
+         %51 = OpLabel
+               OpReturn
+         %48 = OpLabel
+         %54 = OpLoad %_arr_BST_uint_10 %tree_1
+         %56 = OpCompositeExtract %BST %54 0
+         %57 = OpCompositeExtract %int %56 2
+         %55 = OpConvertSToF %float %57
+         %60 = OpCompositeConstruct %v4float %55 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %60
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %61
+%tint_symbol = OpFunctionParameter %main_out
+         %65 = OpLabel
+         %66 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %66
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %22
+         %68 = OpLabel
+         %69 = OpFunctionCall %void %main_1
+         %71 = OpLoad %v4float %x_GLF_color
+         %72 = OpCompositeConstruct %main_out %71
+         %70 = OpFunctionCall %void %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..974581d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-and-unreachable-infinite-loop/0.wgsl.expected.wgsl
@@ -0,0 +1,47 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_(tree : ptr<function, BST>) {
+  (*(tree)).rightIndex = 1;
+  return;
+}
+
+fn main_1() {
+  var tree_1 : array<BST, 10>;
+  var param : BST;
+  let x_37 : array<BST, 10> = tree_1;
+  param = x_37[0u];
+  makeTreeNode_struct_BST_i1_i1_i11_(&(param));
+  let x_40 : BST = param;
+  let x_41 : array<BST, 10> = tree_1;
+  var x_42_1 : array<BST, 10> = x_41;
+  x_42_1[0u] = x_40;
+  let x_42 : array<BST, 10> = x_42_1;
+  tree_1 = x_42;
+  let x_43 : ptr<function, i32> = &(tree_1[0].rightIndex);
+  let x_11 : array<BST, 10> = tree_1;
+  if ((x_11[0u].rightIndex == 0)) {
+    loop {
+    }
+    return;
+  }
+  let x_12 : array<BST, 10> = tree_1;
+  x_GLF_color = vec4<f32>(f32(x_12[0u].rightIndex), 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm
new file mode 100644
index 0000000..1091070
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm
@@ -0,0 +1,97 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %struct_base "struct_base"
+               OpMemberName %struct_base 0 "data"
+               OpMemberName %struct_base 1 "leftIndex"
+               OpMemberName %struct_base 2 "rightIndex"
+               OpName %struct_array "struct_array"
+               OpName %index "index"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%struct_base = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_struct_base_uint_3 = OpTypeArray %struct_base %uint_3
+%_ptr_Private__arr_struct_base_uint_3 = OpTypePointer Private %_arr_struct_base_uint_3
+%struct_array = OpVariable %_ptr_Private__arr_struct_base_uint_3 Private
+      %int_1 = OpConstant %int 1
+         %17 = OpConstantComposite %struct_base %int_1 %int_1 %int_1
+         %18 = OpConstantComposite %_arr_struct_base_uint_3 %17 %17 %17
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_2 = OpConstant %int 2
+%_ptr_Private_int = OpTypePointer Private %int
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %35 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %main = OpFunction %void None %10
+         %36 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function
+               OpStore %struct_array %18
+               OpStore %index %int_1
+         %37 = OpAccessChain %_ptr_Private_int %struct_array %int_1 %int_2
+               OpStore %37 %int_1
+         %38 = OpAccessChain %_ptr_Private_int %struct_array %int_1 %int_1
+         %39 = OpLoad %int %38
+         %40 = OpIEqual %bool %39 %int_1
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %45 = OpLoad %float %44
+         %46 = OpConvertFToS %int %45
+         %47 = OpAccessChain %_ptr_Private_int %struct_array %46 %int_2
+         %48 = OpLoad %int %47
+               OpStore %index %48
+               OpBranch %41
+         %43 = OpLabel
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %50 = OpLoad %float %49
+         %51 = OpConvertFToS %int %50
+         %52 = OpAccessChain %_ptr_Private_int %struct_array %51 %int_1
+         %53 = OpLoad %int %52
+               OpStore %index %53
+               OpBranch %41
+         %41 = OpLabel
+         %54 = OpAccessChain %_ptr_Private_int %struct_array %int_1 %int_1
+         %55 = OpLoad %int %54
+         %56 = OpIEqual %bool %55 %int_1
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %59
+         %58 = OpLabel
+               OpStore %_GLF_color %34
+               OpBranch %57
+         %59 = OpLabel
+               OpStore %_GLF_color %35
+               OpBranch %57
+         %57 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..a1dacbe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.hlsl
@@ -0,0 +1,53 @@
+struct struct_base {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static struct_base struct_array[3] = (struct_base[3])0;
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int index = 0;
+  const struct_base tint_symbol_3 = {1, 1, 1};
+  const struct_base tint_symbol_4 = {1, 1, 1};
+  const struct_base tint_symbol_5 = {1, 1, 1};
+  const struct_base tint_symbol_6[3] = {tint_symbol_3, tint_symbol_4, tint_symbol_5};
+  struct_array = tint_symbol_6;
+  index = 1;
+  struct_array[1].rightIndex = 1;
+  const int x_39 = struct_array[1].leftIndex;
+  if ((x_39 == 1)) {
+    const float x_45 = asfloat(x_8[0].x);
+    const int x_48 = struct_array[int(x_45)].rightIndex;
+    index = x_48;
+  } else {
+    const float x_50 = asfloat(x_8[0].y);
+    const int x_53 = struct_array[int(x_50)].leftIndex;
+    index = x_53;
+  }
+  const int x_55 = struct_array[1].leftIndex;
+  if ((x_55 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_7 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.msl
new file mode 100644
index 0000000..0f1196e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct struct_base {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  struct_base arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread tint_array_wrapper* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  int index = 0;
+  struct_base const tint_symbol_3 = {.data=1, .leftIndex=1, .rightIndex=1};
+  struct_base const tint_symbol_4 = {.data=1, .leftIndex=1, .rightIndex=1};
+  struct_base const tint_symbol_5 = {.data=1, .leftIndex=1, .rightIndex=1};
+  tint_array_wrapper const tint_symbol_6 = {.arr={tint_symbol_3, tint_symbol_4, tint_symbol_5}};
+  *(tint_symbol_8) = tint_symbol_6;
+  index = 1;
+  (*(tint_symbol_8)).arr[1].rightIndex = 1;
+  int const x_39 = (*(tint_symbol_8)).arr[1].leftIndex;
+  if ((x_39 == 1)) {
+    float const x_45 = x_8.injectionSwitch.x;
+    int const x_48 = (*(tint_symbol_8)).arr[int(x_45)].rightIndex;
+    index = x_48;
+  } else {
+    float const x_50 = x_8.injectionSwitch.y;
+    int const x_53 = (*(tint_symbol_8)).arr[int(x_50)].leftIndex;
+    index = x_53;
+  }
+  int const x_55 = (*(tint_symbol_8)).arr[1].leftIndex;
+  if ((x_55 == 1)) {
+    *(tint_symbol_9) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_9) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread tint_array_wrapper tint_symbol_10 = {};
+  thread float4 tint_symbol_11 = 0.0f;
+  main_1(x_8, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_1 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..cc8e8c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.spvasm
@@ -0,0 +1,133 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %struct_base "struct_base"
+               OpMemberName %struct_base 0 "data"
+               OpMemberName %struct_base 1 "leftIndex"
+               OpMemberName %struct_base 2 "rightIndex"
+               OpName %struct_array "struct_array"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %index "index"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %struct_base 0 Offset 0
+               OpMemberDecorate %struct_base 1 Offset 4
+               OpMemberDecorate %struct_base 2 Offset 8
+               OpDecorate %_arr_struct_base_uint_3 ArrayStride 12
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%struct_base = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_struct_base_uint_3 = OpTypeArray %struct_base %uint_3
+%_ptr_Private__arr_struct_base_uint_3 = OpTypePointer Private %_arr_struct_base_uint_3
+          %8 = OpConstantNull %_arr_struct_base_uint_3
+%struct_array = OpVariable %_ptr_Private__arr_struct_base_uint_3 Private %8
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+         %28 = OpConstantComposite %struct_base %int_1 %int_1 %int_1
+         %29 = OpConstantComposite %_arr_struct_base_uint_3 %28 %28 %28
+     %uint_2 = OpConstant %uint 2
+%_ptr_Private_int = OpTypePointer Private %int
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %61 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %62 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %63 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %26
+               OpStore %struct_array %29
+               OpStore %index %int_1
+         %32 = OpAccessChain %_ptr_Private_int %struct_array %int_1 %uint_2
+               OpStore %32 %int_1
+         %34 = OpAccessChain %_ptr_Private_int %struct_array %int_1 %uint_1
+         %35 = OpLoad %int %34
+         %36 = OpIEqual %bool %35 %int_1
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %44 = OpLoad %float %43
+         %45 = OpConvertFToS %int %44
+         %46 = OpAccessChain %_ptr_Private_int %struct_array %45 %uint_2
+         %47 = OpLoad %int %46
+               OpStore %index %47
+               OpBranch %38
+         %40 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %49 = OpLoad %float %48
+         %50 = OpConvertFToS %int %49
+         %51 = OpAccessChain %_ptr_Private_int %struct_array %50 %uint_1
+         %52 = OpLoad %int %51
+               OpStore %index %52
+               OpBranch %38
+         %38 = OpLabel
+         %53 = OpAccessChain %_ptr_Private_int %struct_array %int_1 %uint_1
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %54 %int_1
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpStore %x_GLF_color %61
+               OpBranch %56
+         %58 = OpLabel
+               OpStore %x_GLF_color %62
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %63
+%tint_symbol = OpFunctionParameter %main_out
+         %67 = OpLabel
+         %68 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %68
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..914402c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.spvasm.expected.wgsl
@@ -0,0 +1,51 @@
+struct struct_base {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> struct_array : array<struct_base, 3>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var index : i32;
+  struct_array = array<struct_base, 3>(struct_base(1, 1, 1), struct_base(1, 1, 1), struct_base(1, 1, 1));
+  index = 1;
+  struct_array[1].rightIndex = 1;
+  let x_39 : i32 = struct_array[1].leftIndex;
+  if ((x_39 == 1)) {
+    let x_45 : f32 = x_8.injectionSwitch.x;
+    let x_48 : i32 = struct_array[i32(x_45)].rightIndex;
+    index = x_48;
+  } else {
+    let x_50 : f32 = x_8.injectionSwitch.y;
+    let x_53 : i32 = struct_array[i32(x_50)].leftIndex;
+    index = x_53;
+  }
+  let x_55 : i32 = struct_array[1].leftIndex;
+  if ((x_55 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
new file mode 100644
index 0000000..914402c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
@@ -0,0 +1,51 @@
+struct struct_base {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> struct_array : array<struct_base, 3>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var index : i32;
+  struct_array = array<struct_base, 3>(struct_base(1, 1, 1), struct_base(1, 1, 1), struct_base(1, 1, 1));
+  index = 1;
+  struct_array[1].rightIndex = 1;
+  let x_39 : i32 = struct_array[1].leftIndex;
+  if ((x_39 == 1)) {
+    let x_45 : f32 = x_8.injectionSwitch.x;
+    let x_48 : i32 = struct_array[i32(x_45)].rightIndex;
+    index = x_48;
+  } else {
+    let x_50 : f32 = x_8.injectionSwitch.y;
+    let x_53 : i32 = struct_array[i32(x_50)].leftIndex;
+    index = x_53;
+  }
+  let x_55 : i32 = struct_array[1].leftIndex;
+  if ((x_55 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..a1dacbe
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.hlsl
@@ -0,0 +1,53 @@
+struct struct_base {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+
+static struct_base struct_array[3] = (struct_base[3])0;
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int index = 0;
+  const struct_base tint_symbol_3 = {1, 1, 1};
+  const struct_base tint_symbol_4 = {1, 1, 1};
+  const struct_base tint_symbol_5 = {1, 1, 1};
+  const struct_base tint_symbol_6[3] = {tint_symbol_3, tint_symbol_4, tint_symbol_5};
+  struct_array = tint_symbol_6;
+  index = 1;
+  struct_array[1].rightIndex = 1;
+  const int x_39 = struct_array[1].leftIndex;
+  if ((x_39 == 1)) {
+    const float x_45 = asfloat(x_8[0].x);
+    const int x_48 = struct_array[int(x_45)].rightIndex;
+    index = x_48;
+  } else {
+    const float x_50 = asfloat(x_8[0].y);
+    const int x_53 = struct_array[int(x_50)].leftIndex;
+    index = x_53;
+  }
+  const int x_55 = struct_array[1].leftIndex;
+  if ((x_55 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_7 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_7;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.msl
new file mode 100644
index 0000000..0f1196e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct struct_base {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  struct_base arr[3];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread tint_array_wrapper* const tint_symbol_8, thread float4* const tint_symbol_9) {
+  int index = 0;
+  struct_base const tint_symbol_3 = {.data=1, .leftIndex=1, .rightIndex=1};
+  struct_base const tint_symbol_4 = {.data=1, .leftIndex=1, .rightIndex=1};
+  struct_base const tint_symbol_5 = {.data=1, .leftIndex=1, .rightIndex=1};
+  tint_array_wrapper const tint_symbol_6 = {.arr={tint_symbol_3, tint_symbol_4, tint_symbol_5}};
+  *(tint_symbol_8) = tint_symbol_6;
+  index = 1;
+  (*(tint_symbol_8)).arr[1].rightIndex = 1;
+  int const x_39 = (*(tint_symbol_8)).arr[1].leftIndex;
+  if ((x_39 == 1)) {
+    float const x_45 = x_8.injectionSwitch.x;
+    int const x_48 = (*(tint_symbol_8)).arr[int(x_45)].rightIndex;
+    index = x_48;
+  } else {
+    float const x_50 = x_8.injectionSwitch.y;
+    int const x_53 = (*(tint_symbol_8)).arr[int(x_50)].leftIndex;
+    index = x_53;
+  }
+  int const x_55 = (*(tint_symbol_8)).arr[1].leftIndex;
+  if ((x_55 == 1)) {
+    *(tint_symbol_9) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_9) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread tint_array_wrapper tint_symbol_10 = {};
+  thread float4 tint_symbol_11 = 0.0f;
+  main_1(x_8, &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_11};
+  tint_symbol_1 const tint_symbol_7 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_7;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..cc8e8c1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.spvasm
@@ -0,0 +1,133 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %struct_base "struct_base"
+               OpMemberName %struct_base 0 "data"
+               OpMemberName %struct_base 1 "leftIndex"
+               OpMemberName %struct_base 2 "rightIndex"
+               OpName %struct_array "struct_array"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %index "index"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpMemberDecorate %struct_base 0 Offset 0
+               OpMemberDecorate %struct_base 1 Offset 4
+               OpMemberDecorate %struct_base 2 Offset 8
+               OpDecorate %_arr_struct_base_uint_3 ArrayStride 12
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+%struct_base = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+     %uint_3 = OpConstant %uint 3
+%_arr_struct_base_uint_3 = OpTypeArray %struct_base %uint_3
+%_ptr_Private__arr_struct_base_uint_3 = OpTypePointer Private %_arr_struct_base_uint_3
+          %8 = OpConstantNull %_arr_struct_base_uint_3
+%struct_array = OpVariable %_ptr_Private__arr_struct_base_uint_3 Private %8
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+      %int_1 = OpConstant %int 1
+         %28 = OpConstantComposite %struct_base %int_1 %int_1 %int_1
+         %29 = OpConstantComposite %_arr_struct_base_uint_3 %28 %28 %28
+     %uint_2 = OpConstant %uint 2
+%_ptr_Private_int = OpTypePointer Private %int
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %61 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %62 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %63 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %26
+               OpStore %struct_array %29
+               OpStore %index %int_1
+         %32 = OpAccessChain %_ptr_Private_int %struct_array %int_1 %uint_2
+               OpStore %32 %int_1
+         %34 = OpAccessChain %_ptr_Private_int %struct_array %int_1 %uint_1
+         %35 = OpLoad %int %34
+         %36 = OpIEqual %bool %35 %int_1
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+         %43 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %44 = OpLoad %float %43
+         %45 = OpConvertFToS %int %44
+         %46 = OpAccessChain %_ptr_Private_int %struct_array %45 %uint_2
+         %47 = OpLoad %int %46
+               OpStore %index %47
+               OpBranch %38
+         %40 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %49 = OpLoad %float %48
+         %50 = OpConvertFToS %int %49
+         %51 = OpAccessChain %_ptr_Private_int %struct_array %50 %uint_1
+         %52 = OpLoad %int %51
+               OpStore %index %52
+               OpBranch %38
+         %38 = OpLabel
+         %53 = OpAccessChain %_ptr_Private_int %struct_array %int_1 %uint_1
+         %54 = OpLoad %int %53
+         %55 = OpIEqual %bool %54 %int_1
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %58
+         %57 = OpLabel
+               OpStore %x_GLF_color %61
+               OpBranch %56
+         %58 = OpLabel
+               OpStore %x_GLF_color %62
+               OpBranch %56
+         %56 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %63
+%tint_symbol = OpFunctionParameter %main_out
+         %67 = OpLabel
+         %68 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %68
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+         %73 = OpLoad %v4float %x_GLF_color
+         %74 = OpCompositeConstruct %main_out %73
+         %72 = OpFunctionCall %void %tint_symbol_2 %74
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..914402c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl.expected.wgsl
@@ -0,0 +1,51 @@
+struct struct_base {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> struct_array : array<struct_base, 3>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var index : i32;
+  struct_array = array<struct_base, 3>(struct_base(1, 1, 1), struct_base(1, 1, 1), struct_base(1, 1, 1));
+  index = 1;
+  struct_array[1].rightIndex = 1;
+  let x_39 : i32 = struct_array[1].leftIndex;
+  if ((x_39 == 1)) {
+    let x_45 : f32 = x_8.injectionSwitch.x;
+    let x_48 : i32 = struct_array[i32(x_45)].rightIndex;
+    index = x_48;
+  } else {
+    let x_50 : f32 = x_8.injectionSwitch.y;
+    let x_53 : i32 = struct_array[i32(x_50)].leftIndex;
+    index = x_53;
+  }
+  let x_55 : i32 = struct_array[1].leftIndex;
+  if ((x_55 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm
new file mode 100644
index 0000000..0f3e409
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm
@@ -0,0 +1,95 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %S "S"
+               OpMemberName %S 0 "f0"
+               OpMemberName %S 1 "f1"
+               OpName %ll "ll"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %sums "sums"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %S 0 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %v3bool = OpTypeVector %bool 3
+          %S = OpTypeStruct %int %v3bool
+%_ptr_Function_S = OpTypePointer Function %S
+      %int_0 = OpConstant %int 0
+       %true = OpConstantTrue %bool
+         %22 = OpConstantComposite %v3bool %true %true %true
+         %23 = OpConstantComposite %S %int_0 %22
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+       %main = OpFunction %void None %15
+         %39 = OpLabel
+         %ll = OpVariable %_ptr_Function_S Function
+       %sums = OpVariable %_ptr_Function__arr_float_uint_9 Function
+               OpStore %ll %23
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+         %12 = OpLoad %S %ll
+          %9 = OpCompositeExtract %int %12 0
+         %44 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %45 = OpLoad %float %44
+         %46 = OpConvertFToS %int %45
+         %47 = OpINotEqual %bool %9 %46
+               OpBranchConditional %47 %48 %41
+         %48 = OpLabel
+         %49 = OpAccessChain %_ptr_Function_float %sums %int_0
+               OpStore %49 %float_0
+               OpBranch %42
+         %42 = OpLabel
+         %13 = OpLoad %S %ll
+         %10 = OpCompositeExtract %int %13 0
+         %11 = OpIAdd %int %10 %int_1
+         %50 = OpLoad %S %ll
+         %51 = OpCompositeInsert %S %11 %50 0
+               OpStore %ll %51
+               OpBranch %40
+         %41 = OpLabel
+         %52 = OpAccessChain %_ptr_Function_float %sums %int_0
+         %53 = OpLoad %float %52
+         %54 = OpCompositeConstruct %v2float %53 %53
+         %55 = OpCompositeExtract %float %54 0
+         %56 = OpCompositeExtract %float %54 1
+         %57 = OpCompositeConstruct %v4float %float_1 %55 %56 %float_1
+               OpStore %_GLF_color %57
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ba47317
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,49 @@
+struct S {
+  int f0;
+  bool3 f1;
+};
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  S ll = (S)0;
+  float sums[9] = (float[9])0;
+  const S tint_symbol_3 = {0, bool3(true, true, true)};
+  ll = tint_symbol_3;
+  while (true) {
+    const S x_12 = ll;
+    const float x_45 = asfloat(x_7[0].y);
+    if ((x_12.f0 != int(x_45))) {
+    } else {
+      break;
+    }
+    sums[0] = 0.0f;
+    {
+      const S x_13 = ll;
+      S x_51_1 = ll;
+      x_51_1.f0 = (x_13.f0 + 1);
+      ll = x_51_1;
+    }
+  }
+  const float x_53 = sums[0];
+  const float2 x_54 = float2(x_53, x_53);
+  x_GLF_color = float4(1.0f, x_54.x, x_54.y, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..c9860b9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,56 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int f0;
+  bool3 f1;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  S ll = {};
+  tint_array_wrapper sums = {};
+  S const tint_symbol_3 = {.f0=0, .f1=bool3(true, true, true)};
+  ll = tint_symbol_3;
+  while (true) {
+    S const x_12 = ll;
+    float const x_45 = x_7.injectionSwitch.y;
+    if ((x_12.f0 != int(x_45))) {
+    } else {
+      break;
+    }
+    sums.arr[0] = 0.0f;
+    {
+      S const x_13 = ll;
+      S const x_50 = ll;
+      S x_51_1 = x_50;
+      x_51_1.f0 = (x_13.f0 + 1);
+      S const x_51 = x_51_1;
+      ll = x_51;
+    }
+  }
+  float const x_53 = sums.arr[0];
+  float2 const x_54 = float2(x_53, x_53);
+  *(tint_symbol_5) = float4(1.0f, x_54.x, x_54.y, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1b17c76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,137 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 80
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %S "S"
+               OpMemberName %S 0 "f0"
+               OpMemberName %S 1 "f1"
+               OpName %ll "ll"
+               OpName %sums "sums"
+               OpName %x_51_1 "x_51_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 16
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %v3bool = OpTypeVector %bool 3
+          %S = OpTypeStruct %int %v3bool
+%_ptr_Function_S = OpTypePointer Function %S
+         %22 = OpConstantNull %S
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %28 = OpConstantNull %_arr_float_uint_9
+      %int_0 = OpConstant %int 0
+       %true = OpConstantTrue %bool
+         %31 = OpConstantComposite %v3bool %true %true %true
+         %32 = OpConstantComposite %S %int_0 %31
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %ll = OpVariable %_ptr_Function_S Function %22
+       %sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %28
+     %x_51_1 = OpVariable %_ptr_Function_S Function %22
+               OpStore %ll %32
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %S %ll
+         %41 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %42 = OpLoad %float %41
+         %43 = OpCompositeExtract %int %37 0
+         %44 = OpConvertFToS %int %42
+         %45 = OpINotEqual %bool %43 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %34
+         %46 = OpLabel
+         %50 = OpAccessChain %_ptr_Function_float %sums %int_0
+               OpStore %50 %float_0
+               OpBranch %35
+         %35 = OpLabel
+         %52 = OpLoad %S %ll
+         %53 = OpLoad %S %ll
+               OpStore %x_51_1 %53
+         %56 = OpAccessChain %_ptr_Function_int %x_51_1 %uint_0
+         %57 = OpCompositeExtract %int %52 0
+         %59 = OpIAdd %int %57 %int_1
+               OpStore %56 %59
+         %60 = OpLoad %S %x_51_1
+               OpStore %ll %60
+               OpBranch %33
+         %34 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_float %sums %int_0
+         %62 = OpLoad %float %61
+         %63 = OpCompositeConstruct %v2float %62 %62
+         %65 = OpCompositeExtract %float %63 0
+         %66 = OpCompositeExtract %float %63 1
+         %67 = OpCompositeConstruct %v4float %float_1 %65 %66 %float_1
+               OpStore %x_GLF_color %67
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %68
+%tint_symbol = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %75 = OpLabel
+         %76 = OpFunctionCall %void %main_1
+         %78 = OpLoad %v4float %x_GLF_color
+         %79 = OpCompositeConstruct %main_out %78
+         %77 = OpFunctionCall %void %tint_symbol_2 %79
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..863b10c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,52 @@
+struct S {
+  f0 : i32;
+  f1 : vec3<bool>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var ll : S;
+  var sums : array<f32, 9>;
+  ll = S(0, vec3<bool>(true, true, true));
+  loop {
+    let x_12 : S = ll;
+    let x_45 : f32 = x_7.injectionSwitch.y;
+    if ((x_12.f0 != i32(x_45))) {
+    } else {
+      break;
+    }
+    sums[0] = 0.0;
+
+    continuing {
+      let x_13 : S = ll;
+      let x_50 : S = ll;
+      var x_51_1 : S = x_50;
+      x_51_1.f0 = (x_13.f0 + 1);
+      let x_51 : S = x_51_1;
+      ll = x_51;
+    }
+  }
+  let x_53 : f32 = sums[0];
+  let x_54 : vec2<f32> = vec2<f32>(x_53, x_53);
+  x_GLF_color = vec4<f32>(1.0, x_54.x, x_54.y, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
new file mode 100644
index 0000000..863b10c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
@@ -0,0 +1,52 @@
+struct S {
+  f0 : i32;
+  f1 : vec3<bool>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var ll : S;
+  var sums : array<f32, 9>;
+  ll = S(0, vec3<bool>(true, true, true));
+  loop {
+    let x_12 : S = ll;
+    let x_45 : f32 = x_7.injectionSwitch.y;
+    if ((x_12.f0 != i32(x_45))) {
+    } else {
+      break;
+    }
+    sums[0] = 0.0;
+
+    continuing {
+      let x_13 : S = ll;
+      let x_50 : S = ll;
+      var x_51_1 : S = x_50;
+      x_51_1.f0 = (x_13.f0 + 1);
+      let x_51 : S = x_51_1;
+      ll = x_51;
+    }
+  }
+  let x_53 : f32 = sums[0];
+  let x_54 : vec2<f32> = vec2<f32>(x_53, x_53);
+  x_GLF_color = vec4<f32>(1.0, x_54.x, x_54.y, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ba47317
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,49 @@
+struct S {
+  int f0;
+  bool3 f1;
+};
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  S ll = (S)0;
+  float sums[9] = (float[9])0;
+  const S tint_symbol_3 = {0, bool3(true, true, true)};
+  ll = tint_symbol_3;
+  while (true) {
+    const S x_12 = ll;
+    const float x_45 = asfloat(x_7[0].y);
+    if ((x_12.f0 != int(x_45))) {
+    } else {
+      break;
+    }
+    sums[0] = 0.0f;
+    {
+      const S x_13 = ll;
+      S x_51_1 = ll;
+      x_51_1.f0 = (x_13.f0 + 1);
+      ll = x_51_1;
+    }
+  }
+  const float x_53 = sums[0];
+  const float2 x_54 = float2(x_53, x_53);
+  x_GLF_color = float4(1.0f, x_54.x, x_54.y, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..c9860b9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,56 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int f0;
+  bool3 f1;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  S ll = {};
+  tint_array_wrapper sums = {};
+  S const tint_symbol_3 = {.f0=0, .f1=bool3(true, true, true)};
+  ll = tint_symbol_3;
+  while (true) {
+    S const x_12 = ll;
+    float const x_45 = x_7.injectionSwitch.y;
+    if ((x_12.f0 != int(x_45))) {
+    } else {
+      break;
+    }
+    sums.arr[0] = 0.0f;
+    {
+      S const x_13 = ll;
+      S const x_50 = ll;
+      S x_51_1 = x_50;
+      x_51_1.f0 = (x_13.f0 + 1);
+      S const x_51 = x_51_1;
+      ll = x_51;
+    }
+  }
+  float const x_53 = sums.arr[0];
+  float2 const x_54 = float2(x_53, x_53);
+  *(tint_symbol_5) = float4(1.0f, x_54.x, x_54.y, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1b17c76
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,137 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 80
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %S "S"
+               OpMemberName %S 0 "f0"
+               OpMemberName %S 1 "f1"
+               OpName %ll "ll"
+               OpName %sums "sums"
+               OpName %x_51_1 "x_51_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 16
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %v3bool = OpTypeVector %bool 3
+          %S = OpTypeStruct %int %v3bool
+%_ptr_Function_S = OpTypePointer Function %S
+         %22 = OpConstantNull %S
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %28 = OpConstantNull %_arr_float_uint_9
+      %int_0 = OpConstant %int 0
+       %true = OpConstantTrue %bool
+         %31 = OpConstantComposite %v3bool %true %true %true
+         %32 = OpConstantComposite %S %int_0 %31
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %68 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %ll = OpVariable %_ptr_Function_S Function %22
+       %sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %28
+     %x_51_1 = OpVariable %_ptr_Function_S Function %22
+               OpStore %ll %32
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpLoad %S %ll
+         %41 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %42 = OpLoad %float %41
+         %43 = OpCompositeExtract %int %37 0
+         %44 = OpConvertFToS %int %42
+         %45 = OpINotEqual %bool %43 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %34
+         %46 = OpLabel
+         %50 = OpAccessChain %_ptr_Function_float %sums %int_0
+               OpStore %50 %float_0
+               OpBranch %35
+         %35 = OpLabel
+         %52 = OpLoad %S %ll
+         %53 = OpLoad %S %ll
+               OpStore %x_51_1 %53
+         %56 = OpAccessChain %_ptr_Function_int %x_51_1 %uint_0
+         %57 = OpCompositeExtract %int %52 0
+         %59 = OpIAdd %int %57 %int_1
+               OpStore %56 %59
+         %60 = OpLoad %S %x_51_1
+               OpStore %ll %60
+               OpBranch %33
+         %34 = OpLabel
+         %61 = OpAccessChain %_ptr_Function_float %sums %int_0
+         %62 = OpLoad %float %61
+         %63 = OpCompositeConstruct %v2float %62 %62
+         %65 = OpCompositeExtract %float %63 0
+         %66 = OpCompositeExtract %float %63 1
+         %67 = OpCompositeConstruct %v4float %float_1 %65 %66 %float_1
+               OpStore %x_GLF_color %67
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %68
+%tint_symbol = OpFunctionParameter %main_out
+         %72 = OpLabel
+         %73 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %73
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %75 = OpLabel
+         %76 = OpFunctionCall %void %main_1
+         %78 = OpLoad %v4float %x_GLF_color
+         %79 = OpCompositeConstruct %main_out %78
+         %77 = OpFunctionCall %void %tint_symbol_2 %79
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..863b10c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,52 @@
+struct S {
+  f0 : i32;
+  f1 : vec3<bool>;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var ll : S;
+  var sums : array<f32, 9>;
+  ll = S(0, vec3<bool>(true, true, true));
+  loop {
+    let x_12 : S = ll;
+    let x_45 : f32 = x_7.injectionSwitch.y;
+    if ((x_12.f0 != i32(x_45))) {
+    } else {
+      break;
+    }
+    sums[0] = 0.0;
+
+    continuing {
+      let x_13 : S = ll;
+      let x_50 : S = ll;
+      var x_51_1 : S = x_50;
+      x_51_1.f0 = (x_13.f0 + 1);
+      let x_51 : S = x_51_1;
+      ll = x_51;
+    }
+  }
+  let x_53 : f32 = sums[0];
+  let x_54 : vec2<f32> = vec2<f32>(x_53, x_53);
+  x_GLF_color = vec4<f32>(1.0, x_54.x, x_54.y, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm
new file mode 100644
index 0000000..e3788e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm
@@ -0,0 +1,35 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %2 "main" %3
+               OpExecutionMode %2 OriginUpperLeft
+               OpSource ESSL 310
+               OpDecorate %3 Location 0
+               OpMemberDecorate %_struct_4 0 Offset 0
+               OpDecorate %_struct_4 Block
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+               OpDecorate %6 RelaxedPrecision
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %3 = OpVariable %_ptr_Output_v4float Output
+  %_struct_4 = OpTypeStruct %v4float
+%_ptr_Uniform__struct_4 = OpTypePointer Uniform %_struct_4
+          %5 = OpVariable %_ptr_Uniform__struct_4 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
+ %_struct_16 = OpTypeStruct %v4float
+         %17 = OpUndef %_struct_16
+          %2 = OpFunction %void None %8
+         %18 = OpLabel
+         %19 = OpAccessChain %_ptr_Uniform_v4float %5 %int_0
+         %20 = OpLoad %v4float %19
+         %21 = OpCompositeInsert %_struct_16 %20 %17 0
+          %6 = OpCompositeExtract %v4float %21 0
+               OpStore %3 %6
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..82d98ae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+struct S_1 {
+  float4 field0;
+};
+
+static float4 x_3 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  const float4 x_20 = asfloat(x_5[0]);
+  S_1 x_21_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  x_21_1.field0 = x_20;
+  x_3 = x_21_1.field0;
+  return;
+}
+
+struct main_out {
+  float4 x_3_1;
+};
+struct tint_symbol {
+  float4 x_3_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_3};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_3_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..c193507
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ packed_float4 field0;
+};
+struct S_1 {
+  float4 field0;
+};
+struct main_out {
+  float4 x_3_1;
+};
+struct tint_symbol_1 {
+  float4 x_3_1 [[color(0)]];
+};
+
+void main_1(constant S& x_5, thread float4* const tint_symbol_4) {
+  float4 const x_20 = x_5.field0;
+  S_1 x_21_1 = {.field0=float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  x_21_1.field0 = x_20;
+  S_1 const x_21 = x_21_1;
+  *(tint_symbol_4) = x_21.field0;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant S& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_3_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_3_1=tint_symbol_2.x_3_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4cdb9e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 43
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %S_1 "S_1"
+               OpMemberName %S_1 0 "field0"
+               OpName %x_21_1 "x_21_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_3_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S_1 0 Offset 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_3 = OpVariable %_ptr_Private_v4float Private %5
+          %S = OpTypeStruct %v4float
+%_ptr_Uniform_S = OpTypePointer Uniform %S
+        %x_5 = OpVariable %_ptr_Uniform_S Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
+        %S_1 = OpTypeStruct %v4float
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %23 = OpConstantComposite %S_1 %22
+%_ptr_Function_S_1 = OpTypePointer Function %S_1
+         %26 = OpConstantNull %S_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+         %31 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+     %x_21_1 = OpVariable %_ptr_Function_S_1 Function %26
+         %18 = OpAccessChain %_ptr_Uniform_v4float %x_5 %uint_0
+         %19 = OpLoad %v4float %18
+               OpStore %x_21_1 %23
+         %28 = OpAccessChain %_ptr_Function_v4float %x_21_1 %uint_0
+               OpStore %28 %19
+         %29 = OpLoad %S_1 %x_21_1
+         %30 = OpCompositeExtract %v4float %29 0
+               OpStore %x_3 %30
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %31
+%tint_symbol = OpFunctionParameter %main_out
+         %35 = OpLabel
+         %36 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %36
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %main_1
+         %41 = OpLoad %v4float %x_3
+         %42 = OpCompositeConstruct %main_out %41
+         %40 = OpFunctionCall %void %tint_symbol_2 %42
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..de69a65
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct S {
+  field0 : vec4<f32>;
+};
+
+struct S_1 {
+  field0 : vec4<f32>;
+};
+
+var<private> x_3 : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : S;
+
+fn main_1() {
+  let x_20 : vec4<f32> = x_5.field0;
+  var x_21_1 : S_1 = S_1(vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  x_21_1.field0 = x_20;
+  let x_21 : S_1 = x_21_1;
+  x_3 = x_21.field0;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_3_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_3);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
new file mode 100644
index 0000000..de69a65
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct S {
+  field0 : vec4<f32>;
+};
+
+struct S_1 {
+  field0 : vec4<f32>;
+};
+
+var<private> x_3 : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : S;
+
+fn main_1() {
+  let x_20 : vec4<f32> = x_5.field0;
+  var x_21_1 : S_1 = S_1(vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  x_21_1.field0 = x_20;
+  let x_21 : S_1 = x_21_1;
+  x_3 = x_21.field0;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_3_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_3);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..82d98ae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+struct S_1 {
+  float4 field0;
+};
+
+static float4 x_3 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  const float4 x_20 = asfloat(x_5[0]);
+  S_1 x_21_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  x_21_1.field0 = x_20;
+  x_3 = x_21_1.field0;
+  return;
+}
+
+struct main_out {
+  float4 x_3_1;
+};
+struct tint_symbol {
+  float4 x_3_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_3};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_3_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..c193507
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ packed_float4 field0;
+};
+struct S_1 {
+  float4 field0;
+};
+struct main_out {
+  float4 x_3_1;
+};
+struct tint_symbol_1 {
+  float4 x_3_1 [[color(0)]];
+};
+
+void main_1(constant S& x_5, thread float4* const tint_symbol_4) {
+  float4 const x_20 = x_5.field0;
+  S_1 x_21_1 = {.field0=float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  x_21_1.field0 = x_20;
+  S_1 const x_21 = x_21_1;
+  *(tint_symbol_4) = x_21.field0;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant S& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_3_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_3_1=tint_symbol_2.x_3_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4cdb9e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,83 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 43
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %S_1 "S_1"
+               OpMemberName %S_1 0 "field0"
+               OpName %x_21_1 "x_21_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_3_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %S_1 0 Offset 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_3 = OpVariable %_ptr_Private_v4float Private %5
+          %S = OpTypeStruct %v4float
+%_ptr_Uniform_S = OpTypePointer Uniform %S
+        %x_5 = OpVariable %_ptr_Uniform_S Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
+        %S_1 = OpTypeStruct %v4float
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+         %23 = OpConstantComposite %S_1 %22
+%_ptr_Function_S_1 = OpTypePointer Function %S_1
+         %26 = OpConstantNull %S_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+   %main_out = OpTypeStruct %v4float
+         %31 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+     %x_21_1 = OpVariable %_ptr_Function_S_1 Function %26
+         %18 = OpAccessChain %_ptr_Uniform_v4float %x_5 %uint_0
+         %19 = OpLoad %v4float %18
+               OpStore %x_21_1 %23
+         %28 = OpAccessChain %_ptr_Function_v4float %x_21_1 %uint_0
+               OpStore %28 %19
+         %29 = OpLoad %S_1 %x_21_1
+         %30 = OpCompositeExtract %v4float %29 0
+               OpStore %x_3 %30
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %31
+%tint_symbol = OpFunctionParameter %main_out
+         %35 = OpLabel
+         %36 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %36
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %main_1
+         %41 = OpLoad %v4float %x_3
+         %42 = OpCompositeConstruct %main_out %41
+         %40 = OpFunctionCall %void %tint_symbol_2 %42
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..de69a65
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,32 @@
+[[block]]
+struct S {
+  field0 : vec4<f32>;
+};
+
+struct S_1 {
+  field0 : vec4<f32>;
+};
+
+var<private> x_3 : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : S;
+
+fn main_1() {
+  let x_20 : vec4<f32> = x_5.field0;
+  var x_21_1 : S_1 = S_1(vec4<f32>(0.0, 0.0, 0.0, 0.0));
+  x_21_1.field0 = x_20;
+  let x_21 : S_1 = x_21_1;
+  x_3 = x_21.field0;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_3_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_3);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm
new file mode 100644
index 0000000..2d47ed6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm
@@ -0,0 +1,59 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_0 = OpConstant %uint 0
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %7
+         %23 = OpLabel
+         %24 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %25 = OpLoad %float %24
+         %26 = OpConvertFToS %int %25
+               OpSelectionMerge %27 None
+               OpSwitch %26 %27 -1 %28
+         %28 = OpLabel
+         %29 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %30 = OpLoad %float %29
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %30 %32
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+               OpKill
+         %34 = OpLabel
+               OpBranch %27
+         %27 = OpLabel
+               OpStore %_GLF_color %22
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..89dad7e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,37 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_25 = asfloat(x_5[0].y);
+  switch(int(x_25)) {
+    case -1: {
+      const float x_30 = asfloat(x_5[0].y);
+      const float x_32 = asfloat(x_5[0].x);
+      if ((x_30 > x_32)) {
+        discard;
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e06f14d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.msl
@@ -0,0 +1,40 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_25 = x_5.injectionSwitch.y;
+  switch(int(x_25)) {
+    case -1: {
+      float const x_30 = x_5.injectionSwitch.y;
+      float const x_32 = x_5.injectionSwitch.x;
+      if ((x_30 > x_32)) {
+        discard_fragment();
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..33527de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,91 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %37 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %20 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %21 = OpLoad %float %20
+         %23 = OpConvertFToS %int %21
+               OpSelectionMerge %22 None
+               OpSwitch %23 %25 -1 %26
+         %26 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %28 = OpLoad %float %27
+         %29 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpFOrdGreaterThan %bool %28 %30
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %33
+         %34 = OpLabel
+               OpKill
+         %33 = OpLabel
+               OpBranch %22
+         %25 = OpLabel
+               OpBranch %22
+         %22 = OpLabel
+               OpStore %x_GLF_color %37
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2a93d7f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : f32 = x_5.injectionSwitch.y;
+  switch(i32(x_25)) {
+    case -1: {
+      let x_30 : f32 = x_5.injectionSwitch.y;
+      let x_32 : f32 = x_5.injectionSwitch.x;
+      if ((x_30 > x_32)) {
+        discard;
+      }
+    }
+    default: {
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
new file mode 100644
index 0000000..2a93d7f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : f32 = x_5.injectionSwitch.y;
+  switch(i32(x_25)) {
+    case -1: {
+      let x_30 : f32 = x_5.injectionSwitch.y;
+      let x_32 : f32 = x_5.injectionSwitch.x;
+      if ((x_30 > x_32)) {
+        discard;
+      }
+    }
+    default: {
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..89dad7e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,37 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_25 = asfloat(x_5[0].y);
+  switch(int(x_25)) {
+    case -1: {
+      const float x_30 = asfloat(x_5[0].y);
+      const float x_32 = asfloat(x_5[0].x);
+      if ((x_30 > x_32)) {
+        discard;
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e06f14d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.msl
@@ -0,0 +1,40 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float const x_25 = x_5.injectionSwitch.y;
+  switch(int(x_25)) {
+    case -1: {
+      float const x_30 = x_5.injectionSwitch.y;
+      float const x_32 = x_5.injectionSwitch.x;
+      if ((x_30 > x_32)) {
+        discard_fragment();
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..33527de
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,91 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %37 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+         %20 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %21 = OpLoad %float %20
+         %23 = OpConvertFToS %int %21
+               OpSelectionMerge %22 None
+               OpSwitch %23 %25 -1 %26
+         %26 = OpLabel
+         %27 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %28 = OpLoad %float %27
+         %29 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpFOrdGreaterThan %bool %28 %30
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %33
+         %34 = OpLabel
+               OpKill
+         %33 = OpLabel
+               OpBranch %22
+         %25 = OpLabel
+               OpBranch %22
+         %22 = OpLabel
+               OpStore %x_GLF_color %37
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %38
+%tint_symbol = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %main_1
+         %48 = OpLoad %v4float %x_GLF_color
+         %49 = OpCompositeConstruct %main_out %48
+         %47 = OpFunctionCall %void %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2a93d7f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,36 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  let x_25 : f32 = x_5.injectionSwitch.y;
+  switch(i32(x_25)) {
+    case -1: {
+      let x_30 : f32 = x_5.injectionSwitch.y;
+      let x_32 : f32 = x_5.injectionSwitch.x;
+      if ((x_30 > x_32)) {
+        discard;
+      }
+    }
+    default: {
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm
new file mode 100644
index 0000000..6f83ac1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm
@@ -0,0 +1,83 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %merge_ "merge("
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %res "res"
+               OpDecorate %merge_ RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %res RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %13 = OpTypeFunction %int
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+%_ptr_Function_int = OpTypePointer Function %int
+       %main = OpFunction %void None %11
+         %26 = OpLabel
+        %res = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %23
+               OpBranch %27
+         %27 = OpLabel
+               OpLoopMerge %28 %29 None
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %32 = OpLoad %float %31
+         %33 = OpConvertFToS %int %32
+               OpSelectionMerge %34 None
+               OpSwitch %33 %34 0 %35
+         %35 = OpLabel
+               OpReturn
+         %34 = OpLabel
+               OpBranch %29
+         %29 = OpLabel
+               OpBranchConditional %false %27 %28
+         %28 = OpLabel
+          %8 = OpFunctionCall %int %merge_
+               OpStore %res %8
+          %9 = OpLoad %int %res
+         %36 = OpConvertSToF %float %9
+         %37 = OpCompositeConstruct %v4float %36 %36 %36 %36
+               OpStore %_GLF_color %37
+               OpReturn
+               OpFunctionEnd
+     %merge_ = OpFunction %int None %13
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %40 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+               OpReturnValue %int_0
+         %42 = OpLabel
+         %44 = OpUndef %int
+               OpReturnValue %44
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..804140c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,54 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int merge_() {
+  const float x_40 = asfloat(x_6[0].x);
+  if ((x_40 < 0.0f)) {
+    return 0;
+  }
+  return 0;
+}
+
+void main_1() {
+  int res = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    const float x_32 = asfloat(x_6[0].x);
+    switch(int(x_32)) {
+      case 0: {
+        return;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_8 = merge_();
+  res = x_8;
+  const float x_36 = float(res);
+  x_GLF_color = float4(x_36, x_36, x_36, x_36);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e33cab5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int merge_(constant buf0& x_6) {
+  float const x_40 = x_6.zero;
+  if ((x_40 < 0.0f)) {
+    return 0;
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int res = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    float const x_32 = x_6.zero;
+    switch(int(x_32)) {
+      case 0: {
+        return;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_8 = merge_(x_6);
+  res = x_8;
+  int const x_9 = res;
+  float const x_36 = float(x_9);
+  *(tint_symbol_4) = float4(x_36, x_36, x_36, x_36);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..a32e26e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %merge_ "merge_"
+               OpName %main_1 "main_1"
+               OpName %res "res"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeFunction %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %26 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %merge_ = OpFunction %int None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %19 = OpLoad %float %18
+         %21 = OpFOrdLessThan %bool %19 %float_0
+               OpSelectionMerge %23 None
+               OpBranchConditional %21 %24 %23
+         %24 = OpLabel
+               OpReturnValue %int_0
+         %23 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %26
+         %29 = OpLabel
+        %res = OpVariable %_ptr_Function_int Function %32
+               OpStore %x_GLF_color %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %40 = OpLoad %float %39
+         %42 = OpConvertFToS %int %40
+               OpSelectionMerge %41 None
+               OpSwitch %42 %43 0 %44
+         %44 = OpLabel
+               OpReturn
+         %43 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpSelectionMerge %46 None
+               OpBranchConditional %false %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %36
+         %46 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+         %49 = OpFunctionCall %int %merge_
+               OpStore %res %49
+         %50 = OpLoad %int %res
+         %51 = OpConvertSToF %float %50
+         %52 = OpCompositeConstruct %v4float %51 %51 %51 %51
+               OpStore %x_GLF_color %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %26
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 37[%37] is not post dominated by the back-edge block 46[%46]
+  %46 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..546668a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,55 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_() -> i32 {
+  let x_40 : f32 = x_6.zero;
+  if ((x_40 < 0.0)) {
+    return 0;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var res : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  loop {
+    let x_32 : f32 = x_6.zero;
+    switch(i32(x_32)) {
+      case 0: {
+        return;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_8 : i32 = merge_();
+  res = x_8;
+  let x_9 : i32 = res;
+  let x_36 : f32 = f32(x_9);
+  x_GLF_color = vec4<f32>(x_36, x_36, x_36, x_36);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
new file mode 100644
index 0000000..546668a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
@@ -0,0 +1,55 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_() -> i32 {
+  let x_40 : f32 = x_6.zero;
+  if ((x_40 < 0.0)) {
+    return 0;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var res : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  loop {
+    let x_32 : f32 = x_6.zero;
+    switch(i32(x_32)) {
+      case 0: {
+        return;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_8 : i32 = merge_();
+  res = x_8;
+  let x_9 : i32 = res;
+  let x_36 : f32 = f32(x_9);
+  x_GLF_color = vec4<f32>(x_36, x_36, x_36, x_36);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..804140c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,54 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int merge_() {
+  const float x_40 = asfloat(x_6[0].x);
+  if ((x_40 < 0.0f)) {
+    return 0;
+  }
+  return 0;
+}
+
+void main_1() {
+  int res = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    const float x_32 = asfloat(x_6[0].x);
+    switch(int(x_32)) {
+      case 0: {
+        return;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_8 = merge_();
+  res = x_8;
+  const float x_36 = float(res);
+  x_GLF_color = float4(x_36, x_36, x_36, x_36);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e33cab5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.msl
@@ -0,0 +1,58 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float zero;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int merge_(constant buf0& x_6) {
+  float const x_40 = x_6.zero;
+  if ((x_40 < 0.0f)) {
+    return 0;
+  }
+  return 0;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int res = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    float const x_32 = x_6.zero;
+    switch(int(x_32)) {
+      case 0: {
+        return;
+        break;
+      }
+      default: {
+        break;
+      }
+    }
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_8 = merge_(x_6);
+  res = x_8;
+  int const x_9 = res;
+  float const x_36 = float(x_9);
+  *(tint_symbol_4) = float4(x_36, x_36, x_36, x_36);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..a32e26e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,126 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 65
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "zero"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %merge_ "merge_"
+               OpName %main_1 "main_1"
+               OpName %res "res"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+       %buf0 = OpTypeStruct %float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+        %int = OpTypeInt 32 1
+         %11 = OpTypeFunction %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+       %void = OpTypeVoid
+         %26 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %34 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %53 = OpTypeFunction %void %main_out
+     %merge_ = OpFunction %int None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %19 = OpLoad %float %18
+         %21 = OpFOrdLessThan %bool %19 %float_0
+               OpSelectionMerge %23 None
+               OpBranchConditional %21 %24 %23
+         %24 = OpLabel
+               OpReturnValue %int_0
+         %23 = OpLabel
+               OpReturnValue %int_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %26
+         %29 = OpLabel
+        %res = OpVariable %_ptr_Function_int Function %32
+               OpStore %x_GLF_color %34
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0
+         %40 = OpLoad %float %39
+         %42 = OpConvertFToS %int %40
+               OpSelectionMerge %41 None
+               OpSwitch %42 %43 0 %44
+         %44 = OpLabel
+               OpReturn
+         %43 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpSelectionMerge %46 None
+               OpBranchConditional %false %47 %48
+         %47 = OpLabel
+               OpBranch %46
+         %48 = OpLabel
+               OpBranch %36
+         %46 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+         %49 = OpFunctionCall %int %merge_
+               OpStore %res %49
+         %50 = OpLoad %int %res
+         %51 = OpConvertSToF %float %50
+         %52 = OpCompositeConstruct %v4float %51 %51 %51 %51
+               OpStore %x_GLF_color %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %53
+%tint_symbol = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %58
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %26
+         %60 = OpLabel
+         %61 = OpFunctionCall %void %main_1
+         %63 = OpLoad %v4float %x_GLF_color
+         %64 = OpCompositeConstruct %main_out %63
+         %62 = OpFunctionCall %void %tint_symbol_2 %64
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 37[%37] is not post dominated by the back-edge block 46[%46]
+  %46 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..546668a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,55 @@
+[[block]]
+struct buf0 {
+  zero : f32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn merge_() -> i32 {
+  let x_40 : f32 = x_6.zero;
+  if ((x_40 < 0.0)) {
+    return 0;
+  }
+  return 0;
+}
+
+fn main_1() {
+  var res : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  loop {
+    let x_32 : f32 = x_6.zero;
+    switch(i32(x_32)) {
+      case 0: {
+        return;
+      }
+      default: {
+      }
+    }
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_8 : i32 = merge_();
+  res = x_8;
+  let x_9 : i32 = res;
+  let x_36 : f32 = f32(x_9);
+  x_GLF_color = vec4<f32>(x_36, x_36, x_36, x_36);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm
new file mode 100644
index 0000000..099b620
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm
@@ -0,0 +1,134 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %24 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+      %int_7 = OpConstant %int 7
+    %int_200 = OpConstant %int 200
+       %bool = OpTypeBool
+    %int_100 = OpConstant %int 100
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %int_n2 = OpConstant %int -2
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %47 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %48 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %24
+         %49 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+         %50 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %51 = OpLoad %float %50
+          %7 = OpConvertFToS %int %51
+               OpStore %i %7
+          %8 = OpLoad %int %i
+               OpSelectionMerge %52 None
+               OpSwitch %8 %53 0 %54
+         %53 = OpLabel
+         %20 = OpLoad %int %i
+         %21 = OpISub %int %20 %int_3
+               OpStore %i %21
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+          %9 = OpLoad %int %i
+         %10 = OpIAdd %int %9 %int_1
+               OpStore %i %10
+         %11 = OpLoad %int %i
+               OpSelectionMerge %59 None
+               OpSwitch %11 %60 1 %61 2 %62
+         %60 = OpLabel
+         %14 = OpLoad %int %i
+         %15 = OpIAdd %int %14 %int_7
+               OpStore %i %15
+               OpBranch %59
+         %61 = OpLabel
+               OpBranch %57
+         %62 = OpLabel
+         %12 = OpLoad %int %i
+         %13 = OpIAdd %int %12 %int_5
+               OpStore %i %13
+               OpBranch %59
+         %59 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %16 = OpLoad %int %i
+         %63 = OpSGreaterThan %bool %16 %int_200
+               OpBranchConditional %63 %55 %56
+         %56 = OpLabel
+         %17 = OpLoad %int %i
+         %64 = OpSGreaterThan %bool %17 %int_100
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+         %18 = OpLoad %int %i
+         %19 = OpISub %int %18 %int_2
+               OpStore %i %19
+               OpBranch %52
+         %65 = OpLabel
+               OpBranch %53
+         %52 = OpLabel
+         %22 = OpLoad %int %i
+         %67 = OpIEqual %bool %22 %int_n2
+               OpSelectionMerge %68 None
+               OpBranchConditional %67 %69 %70
+         %69 = OpLabel
+               OpStore %_GLF_color %47
+               OpBranch %68
+         %70 = OpLabel
+               OpStore %_GLF_color %48
+               OpBranch %68
+         %68 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..68b63f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  const float x_51 = asfloat(x_6[0].x);
+  i = int(x_51);
+  switch(i) {
+    case 0: {
+      while (true) {
+        i = (i + 1);
+        switch(i) {
+          case 2: {
+            i = (i + 5);
+            break;
+          }
+          case 1: {
+            {
+              if ((i > 200)) {
+              } else {
+                break;
+              }
+            }
+            continue;
+            break;
+          }
+          default: {
+            i = (i + 7);
+            break;
+          }
+        }
+        {
+          if ((i > 200)) {
+          } else {
+            break;
+          }
+        }
+      }
+      if ((i > 100)) {
+        i = (i - 2);
+        break;
+      }
+      /* fallthrough */
+    }
+    default: {
+      i = (i - 3);
+      break;
+    }
+  }
+  if ((i == -2)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..dbb6a91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.msl
@@ -0,0 +1,86 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  float const x_51 = x_6.injectionSwitch.x;
+  i = int(x_51);
+  int const x_8 = i;
+  switch(x_8) {
+    case 0: {
+      while (true) {
+        int const x_9 = i;
+        i = (x_9 + 1);
+        int const x_11 = i;
+        switch(x_11) {
+          case 2: {
+            int const x_12 = i;
+            i = (x_12 + 5);
+            break;
+          }
+          case 1: {
+            {
+              int const x_16 = i;
+              if ((x_16 > 200)) {
+              } else {
+                break;
+              }
+            }
+            continue;
+            break;
+          }
+          default: {
+            int const x_14 = i;
+            i = (x_14 + 7);
+            break;
+          }
+        }
+        {
+          int const x_16 = i;
+          if ((x_16 > 200)) {
+          } else {
+            break;
+          }
+        }
+      }
+      int const x_17 = i;
+      if ((x_17 > 100)) {
+        int const x_18 = i;
+        i = (x_18 - 2);
+        break;
+      }
+      /* fallthrough */
+    }
+    default: {
+      int const x_20 = i;
+      i = (x_20 - 3);
+      break;
+    }
+  }
+  int const x_22 = i;
+  if ((x_22 == -2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8c6337d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,160 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 88
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+      %int_7 = OpConstant %int 7
+    %int_200 = OpConstant %int 200
+       %bool = OpTypeBool
+    %int_100 = OpConstant %int 100
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %int_n2 = OpConstant %int -2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %74 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %75 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %76 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %19
+         %23 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %24 = OpLoad %float %23
+         %25 = OpConvertFToS %int %24
+               OpStore %i %25
+         %26 = OpLoad %int %i
+               OpSelectionMerge %27 None
+               OpSwitch %26 %28 0 %29
+         %29 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpIAdd %int %34 %int_1
+               OpStore %i %36
+         %37 = OpLoad %int %i
+               OpSelectionMerge %38 None
+               OpSwitch %37 %39 2 %40 1 %41
+         %40 = OpLabel
+         %42 = OpLoad %int %i
+         %44 = OpIAdd %int %42 %int_5
+               OpStore %i %44
+               OpBranch %38
+         %41 = OpLabel
+               OpBranch %32
+         %39 = OpLabel
+         %45 = OpLoad %int %i
+         %47 = OpIAdd %int %45 %int_7
+               OpStore %i %47
+               OpBranch %38
+         %38 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpSGreaterThan %bool %48 %int_200
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %31
+         %52 = OpLabel
+               OpBranch %30
+         %31 = OpLabel
+         %55 = OpLoad %int %i
+         %57 = OpSGreaterThan %bool %55 %int_100
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpLoad %int %i
+         %62 = OpISub %int %60 %int_2
+               OpStore %i %62
+               OpBranch %27
+         %58 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpISub %int %63 %int_3
+               OpStore %i %65
+               OpBranch %27
+         %27 = OpLabel
+         %66 = OpLoad %int %i
+         %68 = OpIEqual %bool %66 %int_n2
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+               OpStore %x_GLF_color %74
+               OpBranch %69
+         %71 = OpLabel
+               OpStore %x_GLF_color %75
+               OpBranch %69
+         %69 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %76
+%tint_symbol = OpFunctionParameter %main_out
+         %80 = OpLabel
+         %81 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %81
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %83 = OpLabel
+         %84 = OpFunctionCall %void %main_1
+         %86 = OpLoad %v4float %x_GLF_color
+         %87 = OpCompositeConstruct %main_out %86
+         %85 = OpFunctionCall %void %tint_symbol_2 %87
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 32[%32] is not post dominated by the back-edge block 52[%52]
+  %52 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..8c6c5d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,74 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  let x_51 : f32 = x_6.injectionSwitch.x;
+  i = i32(x_51);
+  let x_8 : i32 = i;
+  switch(x_8) {
+    case 0: {
+      loop {
+        let x_9 : i32 = i;
+        i = (x_9 + 1);
+        let x_11 : i32 = i;
+        switch(x_11) {
+          case 2: {
+            let x_12 : i32 = i;
+            i = (x_12 + 5);
+          }
+          case 1: {
+            continue;
+          }
+          default: {
+            let x_14 : i32 = i;
+            i = (x_14 + 7);
+          }
+        }
+
+        continuing {
+          let x_16 : i32 = i;
+          if ((x_16 > 200)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_17 : i32 = i;
+      if ((x_17 > 100)) {
+        let x_18 : i32 = i;
+        i = (x_18 - 2);
+        break;
+      }
+      fallthrough;
+    }
+    default: {
+      let x_20 : i32 = i;
+      i = (x_20 - 3);
+    }
+  }
+  let x_22 : i32 = i;
+  if ((x_22 == -2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
new file mode 100644
index 0000000..8c6c5d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
@@ -0,0 +1,74 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  let x_51 : f32 = x_6.injectionSwitch.x;
+  i = i32(x_51);
+  let x_8 : i32 = i;
+  switch(x_8) {
+    case 0: {
+      loop {
+        let x_9 : i32 = i;
+        i = (x_9 + 1);
+        let x_11 : i32 = i;
+        switch(x_11) {
+          case 2: {
+            let x_12 : i32 = i;
+            i = (x_12 + 5);
+          }
+          case 1: {
+            continue;
+          }
+          default: {
+            let x_14 : i32 = i;
+            i = (x_14 + 7);
+          }
+        }
+
+        continuing {
+          let x_16 : i32 = i;
+          if ((x_16 > 200)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_17 : i32 = i;
+      if ((x_17 > 100)) {
+        let x_18 : i32 = i;
+        i = (x_18 - 2);
+        break;
+      }
+      fallthrough;
+    }
+    default: {
+      let x_20 : i32 = i;
+      i = (x_20 - 3);
+    }
+  }
+  let x_22 : i32 = i;
+  if ((x_22 == -2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..68b63f9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,72 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  const float x_51 = asfloat(x_6[0].x);
+  i = int(x_51);
+  switch(i) {
+    case 0: {
+      while (true) {
+        i = (i + 1);
+        switch(i) {
+          case 2: {
+            i = (i + 5);
+            break;
+          }
+          case 1: {
+            {
+              if ((i > 200)) {
+              } else {
+                break;
+              }
+            }
+            continue;
+            break;
+          }
+          default: {
+            i = (i + 7);
+            break;
+          }
+        }
+        {
+          if ((i > 200)) {
+          } else {
+            break;
+          }
+        }
+      }
+      if ((i > 100)) {
+        i = (i - 2);
+        break;
+      }
+      /* fallthrough */
+    }
+    default: {
+      i = (i - 3);
+      break;
+    }
+  }
+  if ((i == -2)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..dbb6a91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.msl
@@ -0,0 +1,86 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  float const x_51 = x_6.injectionSwitch.x;
+  i = int(x_51);
+  int const x_8 = i;
+  switch(x_8) {
+    case 0: {
+      while (true) {
+        int const x_9 = i;
+        i = (x_9 + 1);
+        int const x_11 = i;
+        switch(x_11) {
+          case 2: {
+            int const x_12 = i;
+            i = (x_12 + 5);
+            break;
+          }
+          case 1: {
+            {
+              int const x_16 = i;
+              if ((x_16 > 200)) {
+              } else {
+                break;
+              }
+            }
+            continue;
+            break;
+          }
+          default: {
+            int const x_14 = i;
+            i = (x_14 + 7);
+            break;
+          }
+        }
+        {
+          int const x_16 = i;
+          if ((x_16 > 200)) {
+          } else {
+            break;
+          }
+        }
+      }
+      int const x_17 = i;
+      if ((x_17 > 100)) {
+        int const x_18 = i;
+        i = (x_18 - 2);
+        break;
+      }
+      /* fallthrough */
+    }
+    default: {
+      int const x_20 = i;
+      i = (x_20 - 3);
+      break;
+    }
+  }
+  int const x_22 = i;
+  if ((x_22 == -2)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8c6337d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,160 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 88
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %int_5 = OpConstant %int 5
+      %int_7 = OpConstant %int 7
+    %int_200 = OpConstant %int 200
+       %bool = OpTypeBool
+    %int_100 = OpConstant %int 100
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %int_n2 = OpConstant %int -2
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %74 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %75 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %76 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %19
+         %23 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %24 = OpLoad %float %23
+         %25 = OpConvertFToS %int %24
+               OpStore %i %25
+         %26 = OpLoad %int %i
+               OpSelectionMerge %27 None
+               OpSwitch %26 %28 0 %29
+         %29 = OpLabel
+               OpBranch %30
+         %30 = OpLabel
+               OpLoopMerge %31 %32 None
+               OpBranch %33
+         %33 = OpLabel
+         %34 = OpLoad %int %i
+         %36 = OpIAdd %int %34 %int_1
+               OpStore %i %36
+         %37 = OpLoad %int %i
+               OpSelectionMerge %38 None
+               OpSwitch %37 %39 2 %40 1 %41
+         %40 = OpLabel
+         %42 = OpLoad %int %i
+         %44 = OpIAdd %int %42 %int_5
+               OpStore %i %44
+               OpBranch %38
+         %41 = OpLabel
+               OpBranch %32
+         %39 = OpLabel
+         %45 = OpLoad %int %i
+         %47 = OpIAdd %int %45 %int_7
+               OpStore %i %47
+               OpBranch %38
+         %38 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpSGreaterThan %bool %48 %int_200
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %31
+         %52 = OpLabel
+               OpBranch %30
+         %31 = OpLabel
+         %55 = OpLoad %int %i
+         %57 = OpSGreaterThan %bool %55 %int_100
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+         %60 = OpLoad %int %i
+         %62 = OpISub %int %60 %int_2
+               OpStore %i %62
+               OpBranch %27
+         %58 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpISub %int %63 %int_3
+               OpStore %i %65
+               OpBranch %27
+         %27 = OpLabel
+         %66 = OpLoad %int %i
+         %68 = OpIEqual %bool %66 %int_n2
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %71
+         %70 = OpLabel
+               OpStore %x_GLF_color %74
+               OpBranch %69
+         %71 = OpLabel
+               OpStore %x_GLF_color %75
+               OpBranch %69
+         %69 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %76
+%tint_symbol = OpFunctionParameter %main_out
+         %80 = OpLabel
+         %81 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %81
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %83 = OpLabel
+         %84 = OpFunctionCall %void %main_1
+         %86 = OpLoad %v4float %x_GLF_color
+         %87 = OpCompositeConstruct %main_out %86
+         %85 = OpFunctionCall %void %tint_symbol_2 %87
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 32[%32] is not post dominated by the back-edge block 52[%52]
+  %52 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..8c6c5d7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,74 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  let x_51 : f32 = x_6.injectionSwitch.x;
+  i = i32(x_51);
+  let x_8 : i32 = i;
+  switch(x_8) {
+    case 0: {
+      loop {
+        let x_9 : i32 = i;
+        i = (x_9 + 1);
+        let x_11 : i32 = i;
+        switch(x_11) {
+          case 2: {
+            let x_12 : i32 = i;
+            i = (x_12 + 5);
+          }
+          case 1: {
+            continue;
+          }
+          default: {
+            let x_14 : i32 = i;
+            i = (x_14 + 7);
+          }
+        }
+
+        continuing {
+          let x_16 : i32 = i;
+          if ((x_16 > 200)) {
+          } else {
+            break;
+          }
+        }
+      }
+      let x_17 : i32 = i;
+      if ((x_17 > 100)) {
+        let x_18 : i32 = i;
+        i = (x_18 - 2);
+        break;
+      }
+      fallthrough;
+    }
+    default: {
+      let x_20 : i32 = i;
+      i = (x_20 - 3);
+    }
+  }
+  let x_22 : i32 = i;
+  if ((x_22 == -2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm
new file mode 100644
index 0000000..87e0985
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm
@@ -0,0 +1,37 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %5 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %5
+         %16 = OpLabel
+               OpSelectionMerge %17 None
+               OpSwitch %int_0 %17 0 %18
+         %18 = OpLabel
+               OpSelectionMerge %19 None
+               OpBranchConditional %false %20 %19
+         %20 = OpLabel
+               OpBranch %19
+         %19 = OpLabel
+               OpBranch %17
+         %17 = OpLabel
+               OpStore %_GLF_color %15
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..3d10737
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  switch(0) {
+    case 0: {
+      if (false) {
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.msl
new file mode 100644
index 0000000..0c08cdc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  switch(0) {
+    case 0: {
+      if (false) {
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..f8108c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 36
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %24 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+               OpSelectionMerge %12 None
+               OpSwitch %int_0 %15 0 %16
+         %16 = OpLabel
+               OpSelectionMerge %19 None
+               OpBranchConditional %false %20 %19
+         %20 = OpLabel
+               OpBranch %19
+         %19 = OpLabel
+               OpBranch %12
+         %15 = OpLabel
+               OpBranch %12
+         %12 = OpLabel
+               OpStore %x_GLF_color %23
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %24
+%tint_symbol = OpFunctionParameter %main_out
+         %28 = OpLabel
+         %29 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %29
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %main_1
+         %34 = OpLoad %v4float %x_GLF_color
+         %35 = OpCompositeConstruct %main_out %34
+         %33 = OpFunctionCall %void %tint_symbol_2 %35
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..cdab78b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.spvasm.expected.wgsl
@@ -0,0 +1,25 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  switch(0) {
+    case 0: {
+      if (false) {
+      }
+    }
+    default: {
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
new file mode 100644
index 0000000..cdab78b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
@@ -0,0 +1,25 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  switch(0) {
+    case 0: {
+      if (false) {
+      }
+    }
+    default: {
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..3d10737
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  switch(0) {
+    case 0: {
+      if (false) {
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.msl
new file mode 100644
index 0000000..0c08cdc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  switch(0) {
+    case 0: {
+      if (false) {
+      }
+      break;
+    }
+    default: {
+      break;
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..f8108c8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 36
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %24 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+               OpSelectionMerge %12 None
+               OpSwitch %int_0 %15 0 %16
+         %16 = OpLabel
+               OpSelectionMerge %19 None
+               OpBranchConditional %false %20 %19
+         %20 = OpLabel
+               OpBranch %19
+         %19 = OpLabel
+               OpBranch %12
+         %15 = OpLabel
+               OpBranch %12
+         %12 = OpLabel
+               OpStore %x_GLF_color %23
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %24
+%tint_symbol = OpFunctionParameter %main_out
+         %28 = OpLabel
+         %29 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %29
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %main_1
+         %34 = OpLoad %v4float %x_GLF_color
+         %35 = OpCompositeConstruct %main_out %34
+         %33 = OpFunctionCall %void %tint_symbol_2 %35
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..cdab78b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  switch(0) {
+    case 0: {
+      if (false) {
+      }
+    }
+    default: {
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm
new file mode 100644
index 0000000..20a942d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm
@@ -0,0 +1,96 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %value "value"
+               OpName %y "y"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+       %main = OpFunction %void None %10
+         %29 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+      %value = OpVariable %_ptr_Function_int Function
+          %y = OpVariable %_ptr_Function_float Function
+               OpStore %i %int_0
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpPhi %int %int_0 %29 %32 %33
+               OpLoopMerge %34 %33 None
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %37 = OpLoad %float %36
+         %38 = OpConvertFToS %int %37
+         %39 = OpIAdd %int %int_2 %38
+         %40 = OpSLessThan %bool %31 %39
+               OpBranchConditional %40 %41 %34
+         %41 = OpLabel
+               OpStore %value %31
+               OpStore %y %float_0_5
+               OpSelectionMerge %42 None
+               OpSwitch %31 %43 0 %44 1 %45 2 %43
+         %43 = OpLabel
+         %46 = OpPhi %float %float_0_5 %41 %47 %45
+         %48 = OpFOrdEqual %bool %46 %float_1
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+         %51 = OpIAdd %int %31 %int_1
+         %52 = OpConvertSToF %float %51
+         %53 = OpCompositeConstruct %v4float %52 %float_0 %float_0 %float_1
+               OpStore %_GLF_color %53
+               OpReturn
+         %49 = OpLabel
+               OpBranch %42
+         %44 = OpLabel
+         %54 = OpFAdd %float %float_0_5 %float_0_5
+               OpStore %y %54
+               OpBranch %45
+         %45 = OpLabel
+         %55 = OpPhi %float %float_0_5 %41 %54 %44
+         %47 = OpExtInst %float %1 FClamp %float_1 %float_0_5 %55
+               OpStore %y %47
+               OpBranch %43
+         %42 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+         %32 = OpIAdd %int %31 %int_1
+               OpStore %i %32
+               OpBranch %30
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..437ce74
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int value = 0;
+  float y = 0.0f;
+  int x_31_phi = 0;
+  i = 0;
+  x_31_phi = 0;
+  while (true) {
+    const int x_31 = x_31_phi;
+    const float x_37 = asfloat(x_6[0].x);
+    if ((x_31 < (2 + int(x_37)))) {
+    } else {
+      break;
+    }
+    float x_55_phi = 0.0f;
+    float x_46_phi = 0.0f;
+    value = x_31;
+    y = 0.5f;
+    x_55_phi = 0.5f;
+    x_46_phi = 0.5f;
+    switch(x_31) {
+      case 0: {
+        const float x_54 = (0.5f + 0.5f);
+        y = x_54;
+        x_55_phi = x_54;
+        /* fallthrough */
+      }
+      case 1: {
+        const float x_47 = clamp(1.0f, 0.5f, x_55_phi);
+        y = x_47;
+        x_46_phi = x_47;
+        /* fallthrough */
+      }
+      default: {
+        /* fallthrough */
+      }
+      case 2: {
+        if ((x_46_phi == 1.0f)) {
+          x_GLF_color = float4(float((x_31 + 1)), 0.0f, 0.0f, 1.0f);
+          return;
+        }
+        break;
+      }
+    }
+    {
+      const int x_32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..084529b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.msl
@@ -0,0 +1,76 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int value = 0;
+  float y = 0.0f;
+  int x_31_phi = 0;
+  i = 0;
+  x_31_phi = 0;
+  while (true) {
+    int const x_31 = x_31_phi;
+    float const x_37 = x_6.injectionSwitch.x;
+    if ((x_31 < (2 + int(x_37)))) {
+    } else {
+      break;
+    }
+    float x_55_phi = 0.0f;
+    float x_46_phi = 0.0f;
+    value = x_31;
+    y = 0.5f;
+    x_55_phi = 0.5f;
+    x_46_phi = 0.5f;
+    switch(x_31) {
+      case 0: {
+        float const x_54 = (0.5f + 0.5f);
+        y = x_54;
+        x_55_phi = x_54;
+        /* fallthrough */
+      }
+      case 1: {
+        float const x_55 = x_55_phi;
+        float const x_47 = clamp(1.0f, 0.5f, x_55);
+        y = x_47;
+        x_46_phi = x_47;
+        /* fallthrough */
+      }
+      default: {
+        /* fallthrough */
+      }
+      case 2: {
+        float const x_46 = x_46_phi;
+        if ((x_46 == 1.0f)) {
+          *(tint_symbol_4) = float4(float((x_31 + 1)), 0.0f, 0.0f, 1.0f);
+          return;
+        }
+        break;
+      }
+    }
+    {
+      int const x_32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..387a26a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,149 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+         %55 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %value "value"
+               OpName %y "y"
+               OpName %x_31_phi "x_31_phi"
+               OpName %x_55_phi "x_55_phi"
+               OpName %x_46_phi "x_46_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %23 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %19
+      %value = OpVariable %_ptr_Function_int Function %19
+          %y = OpVariable %_ptr_Function_float Function %23
+   %x_31_phi = OpVariable %_ptr_Function_int Function %19
+   %x_55_phi = OpVariable %_ptr_Function_float Function %23
+   %x_46_phi = OpVariable %_ptr_Function_float Function %23
+               OpStore %i %int_0
+               OpStore %x_31_phi %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %x_31_phi
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %35 = OpLoad %float %34
+         %37 = OpConvertFToS %int %35
+         %38 = OpIAdd %int %int_2 %37
+         %39 = OpSLessThan %bool %30 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %27
+         %41 = OpLabel
+               OpStore %value %30
+               OpStore %y %float_0_5
+               OpStore %x_55_phi %float_0_5
+               OpStore %x_46_phi %float_0_5
+               OpSelectionMerge %47 None
+               OpSwitch %30 %48 0 %49 1 %50 2 %51
+         %49 = OpLabel
+         %52 = OpFAdd %float %float_0_5 %float_0_5
+               OpStore %y %52
+               OpStore %x_55_phi %52
+               OpBranch %50
+         %50 = OpLabel
+         %53 = OpLoad %float %x_55_phi
+         %54 = OpExtInst %float %55 NClamp %float_1 %float_0_5 %53
+               OpStore %y %54
+               OpStore %x_46_phi %54
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+         %57 = OpLoad %float %x_46_phi
+         %58 = OpFOrdEqual %bool %57 %float_1
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+         %63 = OpIAdd %int %30 %int_1
+         %61 = OpConvertSToF %float %63
+         %65 = OpCompositeConstruct %v4float %61 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %65
+               OpReturn
+         %59 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %66 = OpIAdd %int %30 %int_1
+               OpStore %i %66
+               OpStore %x_31_phi %66
+               OpBranch %26
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..b469ccc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,74 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var value : i32;
+  var y : f32;
+  var x_31_phi : i32;
+  i = 0;
+  x_31_phi = 0;
+  loop {
+    let x_31 : i32 = x_31_phi;
+    let x_37 : f32 = x_6.injectionSwitch.x;
+    if ((x_31 < (2 + i32(x_37)))) {
+    } else {
+      break;
+    }
+    var x_55_phi : f32;
+    var x_46_phi : f32;
+    value = x_31;
+    y = 0.5;
+    x_55_phi = 0.5;
+    x_46_phi = 0.5;
+    switch(x_31) {
+      case 0: {
+        let x_54 : f32 = (0.5 + 0.5);
+        y = x_54;
+        x_55_phi = x_54;
+        fallthrough;
+      }
+      case 1: {
+        let x_55 : f32 = x_55_phi;
+        let x_47 : f32 = clamp(1.0, 0.5, x_55);
+        y = x_47;
+        x_46_phi = x_47;
+        fallthrough;
+      }
+      default: {
+        fallthrough;
+      }
+      case 2: {
+        let x_46 : f32 = x_46_phi;
+        if ((x_46 == 1.0)) {
+          x_GLF_color = vec4<f32>(f32((x_31 + 1)), 0.0, 0.0, 1.0);
+          return;
+        }
+      }
+    }
+
+    continuing {
+      let x_32 : i32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
new file mode 100644
index 0000000..b469ccc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
@@ -0,0 +1,74 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var value : i32;
+  var y : f32;
+  var x_31_phi : i32;
+  i = 0;
+  x_31_phi = 0;
+  loop {
+    let x_31 : i32 = x_31_phi;
+    let x_37 : f32 = x_6.injectionSwitch.x;
+    if ((x_31 < (2 + i32(x_37)))) {
+    } else {
+      break;
+    }
+    var x_55_phi : f32;
+    var x_46_phi : f32;
+    value = x_31;
+    y = 0.5;
+    x_55_phi = 0.5;
+    x_46_phi = 0.5;
+    switch(x_31) {
+      case 0: {
+        let x_54 : f32 = (0.5 + 0.5);
+        y = x_54;
+        x_55_phi = x_54;
+        fallthrough;
+      }
+      case 1: {
+        let x_55 : f32 = x_55_phi;
+        let x_47 : f32 = clamp(1.0, 0.5, x_55);
+        y = x_47;
+        x_46_phi = x_47;
+        fallthrough;
+      }
+      default: {
+        fallthrough;
+      }
+      case 2: {
+        let x_46 : f32 = x_46_phi;
+        if ((x_46 == 1.0)) {
+          x_GLF_color = vec4<f32>(f32((x_31 + 1)), 0.0, 0.0, 1.0);
+          return;
+        }
+      }
+    }
+
+    continuing {
+      let x_32 : i32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..437ce74
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,71 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  int value = 0;
+  float y = 0.0f;
+  int x_31_phi = 0;
+  i = 0;
+  x_31_phi = 0;
+  while (true) {
+    const int x_31 = x_31_phi;
+    const float x_37 = asfloat(x_6[0].x);
+    if ((x_31 < (2 + int(x_37)))) {
+    } else {
+      break;
+    }
+    float x_55_phi = 0.0f;
+    float x_46_phi = 0.0f;
+    value = x_31;
+    y = 0.5f;
+    x_55_phi = 0.5f;
+    x_46_phi = 0.5f;
+    switch(x_31) {
+      case 0: {
+        const float x_54 = (0.5f + 0.5f);
+        y = x_54;
+        x_55_phi = x_54;
+        /* fallthrough */
+      }
+      case 1: {
+        const float x_47 = clamp(1.0f, 0.5f, x_55_phi);
+        y = x_47;
+        x_46_phi = x_47;
+        /* fallthrough */
+      }
+      default: {
+        /* fallthrough */
+      }
+      case 2: {
+        if ((x_46_phi == 1.0f)) {
+          x_GLF_color = float4(float((x_31 + 1)), 0.0f, 0.0f, 1.0f);
+          return;
+        }
+        break;
+      }
+    }
+    {
+      const int x_32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..084529b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.msl
@@ -0,0 +1,76 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int i = 0;
+  int value = 0;
+  float y = 0.0f;
+  int x_31_phi = 0;
+  i = 0;
+  x_31_phi = 0;
+  while (true) {
+    int const x_31 = x_31_phi;
+    float const x_37 = x_6.injectionSwitch.x;
+    if ((x_31 < (2 + int(x_37)))) {
+    } else {
+      break;
+    }
+    float x_55_phi = 0.0f;
+    float x_46_phi = 0.0f;
+    value = x_31;
+    y = 0.5f;
+    x_55_phi = 0.5f;
+    x_46_phi = 0.5f;
+    switch(x_31) {
+      case 0: {
+        float const x_54 = (0.5f + 0.5f);
+        y = x_54;
+        x_55_phi = x_54;
+        /* fallthrough */
+      }
+      case 1: {
+        float const x_55 = x_55_phi;
+        float const x_47 = clamp(1.0f, 0.5f, x_55);
+        y = x_47;
+        x_46_phi = x_47;
+        /* fallthrough */
+      }
+      default: {
+        /* fallthrough */
+      }
+      case 2: {
+        float const x_46 = x_46_phi;
+        if ((x_46 == 1.0f)) {
+          *(tint_symbol_4) = float4(float((x_31 + 1)), 0.0f, 0.0f, 1.0f);
+          return;
+        }
+        break;
+      }
+    }
+    {
+      int const x_32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..387a26a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,149 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+         %55 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %value "value"
+               OpName %y "y"
+               OpName %x_31_phi "x_31_phi"
+               OpName %x_55_phi "x_55_phi"
+               OpName %x_46_phi "x_46_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %23 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %19
+      %value = OpVariable %_ptr_Function_int Function %19
+          %y = OpVariable %_ptr_Function_float Function %23
+   %x_31_phi = OpVariable %_ptr_Function_int Function %19
+   %x_55_phi = OpVariable %_ptr_Function_float Function %23
+   %x_46_phi = OpVariable %_ptr_Function_float Function %23
+               OpStore %i %int_0
+               OpStore %x_31_phi %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %x_31_phi
+         %34 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %35 = OpLoad %float %34
+         %37 = OpConvertFToS %int %35
+         %38 = OpIAdd %int %int_2 %37
+         %39 = OpSLessThan %bool %30 %38
+               OpSelectionMerge %41 None
+               OpBranchConditional %39 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %27
+         %41 = OpLabel
+               OpStore %value %30
+               OpStore %y %float_0_5
+               OpStore %x_55_phi %float_0_5
+               OpStore %x_46_phi %float_0_5
+               OpSelectionMerge %47 None
+               OpSwitch %30 %48 0 %49 1 %50 2 %51
+         %49 = OpLabel
+         %52 = OpFAdd %float %float_0_5 %float_0_5
+               OpStore %y %52
+               OpStore %x_55_phi %52
+               OpBranch %50
+         %50 = OpLabel
+         %53 = OpLoad %float %x_55_phi
+         %54 = OpExtInst %float %55 NClamp %float_1 %float_0_5 %53
+               OpStore %y %54
+               OpStore %x_46_phi %54
+               OpBranch %48
+         %48 = OpLabel
+               OpBranch %51
+         %51 = OpLabel
+         %57 = OpLoad %float %x_46_phi
+         %58 = OpFOrdEqual %bool %57 %float_1
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+         %63 = OpIAdd %int %30 %int_1
+         %61 = OpConvertSToF %float %63
+         %65 = OpCompositeConstruct %v4float %61 %float_0 %float_0 %float_1
+               OpStore %x_GLF_color %65
+               OpReturn
+         %59 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %66 = OpIAdd %int %30 %int_1
+               OpStore %i %66
+               OpStore %x_31_phi %66
+               OpBranch %26
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..b469ccc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,74 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var value : i32;
+  var y : f32;
+  var x_31_phi : i32;
+  i = 0;
+  x_31_phi = 0;
+  loop {
+    let x_31 : i32 = x_31_phi;
+    let x_37 : f32 = x_6.injectionSwitch.x;
+    if ((x_31 < (2 + i32(x_37)))) {
+    } else {
+      break;
+    }
+    var x_55_phi : f32;
+    var x_46_phi : f32;
+    value = x_31;
+    y = 0.5;
+    x_55_phi = 0.5;
+    x_46_phi = 0.5;
+    switch(x_31) {
+      case 0: {
+        let x_54 : f32 = (0.5 + 0.5);
+        y = x_54;
+        x_55_phi = x_54;
+        fallthrough;
+      }
+      case 1: {
+        let x_55 : f32 = x_55_phi;
+        let x_47 : f32 = clamp(1.0, 0.5, x_55);
+        y = x_47;
+        x_46_phi = x_47;
+        fallthrough;
+      }
+      default: {
+        fallthrough;
+      }
+      case 2: {
+        let x_46 : f32 = x_46_phi;
+        if ((x_46 == 1.0)) {
+          x_GLF_color = vec4<f32>(f32((x_31 + 1)), 0.0, 0.0, 1.0);
+          return;
+        }
+      }
+    }
+
+    continuing {
+      let x_32 : i32 = (x_31 + 1);
+      i = x_32;
+      x_31_phi = x_32;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm
new file mode 100644
index 0000000..c5e0d32
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm
@@ -0,0 +1,77 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+%mat4v3float = OpTypeMatrix %v3float 4
+         %20 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %21 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %22 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %23 = OpConstantComposite %mat4v3float %14 %20 %21 %22
+%mat3v4float = OpTypeMatrix %v4float 3
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_0
+         %26 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_0
+         %27 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_0
+         %28 = OpConstantComposite %mat3v4float %25 %26 %27
+         %29 = OpUndef %v3float
+       %main = OpFunction %void None %6
+         %30 = OpLabel
+         %31 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFOrdLessThan %bool %32 %float_1
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %36
+         %35 = OpLabel
+               OpBranch %34
+         %36 = OpLabel
+         %37 = OpTranspose %mat4v3float %28
+               OpBranch %34
+         %34 = OpLabel
+         %38 = OpPhi %mat4v3float %23 %35 %37 %36
+         %39 = OpTranspose %mat3v4float %38
+         %40 = OpCompositeExtract %float %39 0 1
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpFOrdGreaterThan %bool %40 %float_1
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpBranch %42
+         %46 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+         %48 = OpPhi %v3float %29 %47 %14 %46
+         %49 = OpCompositeExtract %float %48 0
+         %50 = OpCompositeExtract %float %48 1
+         %51 = OpCompositeExtract %float %48 2
+         %52 = OpCompositeConstruct %v4float %49 %50 %51 %float_1
+               OpStore %_GLF_color %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..2999e7d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.hlsl
@@ -0,0 +1,46 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4x3 x_37 = 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);
+  float4x3 x_38_phi = 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);
+  float3 x_48_phi = float3(0.0f, 0.0f, 0.0f);
+  const float x_32 = gl_FragCoord.y;
+  if ((x_32 < 1.0f)) {
+    x_38_phi = 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));
+  } else {
+    x_37 = transpose(float3x4(float4(1.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 1.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 1.0f, 0.0f)));
+    x_38_phi = x_37;
+  }
+  const float x_40 = transpose(x_38_phi)[0u].y;
+  while (true) {
+    if ((x_40 > 1.0f)) {
+      x_48_phi = float3(0.0f, 0.0f, 0.0f);
+      break;
+    }
+    x_48_phi = float3(1.0f, 0.0f, 0.0f);
+    break;
+  }
+  const float3 x_48 = x_48_phi;
+  x_GLF_color = float4(x_48.x, x_48.y, x_48.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.msl
new file mode 100644
index 0000000..f58d0ac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4x3 x_37 = float4x3(0.0f);
+  float4x3 x_38_phi = float4x3(0.0f);
+  float3 x_48_phi = 0.0f;
+  float const x_32 = (*(tint_symbol_5)).y;
+  if ((x_32 < 1.0f)) {
+    x_38_phi = 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));
+  } else {
+    x_37 = transpose(float3x4(float4(1.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 1.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 1.0f, 0.0f)));
+    x_38_phi = x_37;
+  }
+  float4x3 const x_38 = x_38_phi;
+  float const x_40 = transpose(x_38)[0u].y;
+  while (true) {
+    if ((x_40 > 1.0f)) {
+      x_48_phi = float3(0.0f, 0.0f, 0.0f);
+      break;
+    }
+    x_48_phi = float3(1.0f, 0.0f, 0.0f);
+    break;
+  }
+  float3 const x_48 = x_48_phi;
+  *(tint_symbol_6) = float4(x_48.x, x_48.y, x_48.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..7ed4633
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_37 "x_37"
+               OpName %x_38_phi "x_38_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %19 = OpConstantNull %mat4v3float
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %23 = OpConstantNull %v3float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %37 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %38 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %40 = OpConstantComposite %mat4v3float %36 %37 %38 %39
+%mat3v4float = OpTypeMatrix %v4float 3
+         %43 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_0
+         %44 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_0
+         %45 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_0
+         %46 = OpConstantComposite %mat3v4float %43 %44 %45
+     %uint_0 = OpConstant %uint 0
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_37 = OpVariable %_ptr_Function_mat4v3float Function %19
+   %x_38_phi = OpVariable %_ptr_Function_mat4v3float Function %19
+   %x_48_phi = OpVariable %_ptr_Function_v3float Function %23
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %28 = OpLoad %float %27
+         %30 = OpFOrdLessThan %bool %28 %float_1
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpStore %x_38_phi %40
+               OpBranch %32
+         %34 = OpLabel
+         %41 = OpTranspose %mat4v3float %46
+               OpStore %x_37 %41
+         %47 = OpLoad %mat4v3float %x_37
+               OpStore %x_38_phi %47
+               OpBranch %32
+         %32 = OpLabel
+         %48 = OpLoad %mat4v3float %x_38_phi
+         %49 = OpTranspose %mat3v4float %48
+         %51 = OpCompositeExtract %v4float %49 0
+         %52 = OpCompositeExtract %float %51 1
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpFOrdGreaterThan %bool %52 %float_1
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpStore %x_48_phi %39
+               OpBranch %54
+         %58 = OpLabel
+               OpStore %x_48_phi %36
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+         %60 = OpLoad %v3float %x_48_phi
+         %61 = OpCompositeExtract %float %60 0
+         %62 = OpCompositeExtract %float %60 1
+         %63 = OpCompositeExtract %float %60 2
+         %64 = OpCompositeConstruct %v4float %61 %62 %63 %float_1
+               OpStore %x_GLF_color %64
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..cf0d932
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.spvasm.expected.wgsl
@@ -0,0 +1,41 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var x_37 : mat4x3<f32>;
+  var x_38_phi : mat4x3<f32>;
+  var x_48_phi : vec3<f32>;
+  let x_32 : f32 = gl_FragCoord.y;
+  if ((x_32 < 1.0)) {
+    x_38_phi = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
+  } else {
+    x_37 = transpose(mat3x4<f32>(vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 1.0, 0.0)));
+    x_38_phi = x_37;
+  }
+  let x_38 : mat4x3<f32> = x_38_phi;
+  let x_40 : f32 = transpose(x_38)[0u].y;
+  loop {
+    if ((x_40 > 1.0)) {
+      x_48_phi = vec3<f32>(0.0, 0.0, 0.0);
+      break;
+    }
+    x_48_phi = vec3<f32>(1.0, 0.0, 0.0);
+    break;
+  }
+  let x_48 : vec3<f32> = x_48_phi;
+  x_GLF_color = vec4<f32>(x_48.x, x_48.y, x_48.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
new file mode 100644
index 0000000..cf0d932
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
@@ -0,0 +1,41 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var x_37 : mat4x3<f32>;
+  var x_38_phi : mat4x3<f32>;
+  var x_48_phi : vec3<f32>;
+  let x_32 : f32 = gl_FragCoord.y;
+  if ((x_32 < 1.0)) {
+    x_38_phi = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
+  } else {
+    x_37 = transpose(mat3x4<f32>(vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 1.0, 0.0)));
+    x_38_phi = x_37;
+  }
+  let x_38 : mat4x3<f32> = x_38_phi;
+  let x_40 : f32 = transpose(x_38)[0u].y;
+  loop {
+    if ((x_40 > 1.0)) {
+      x_48_phi = vec3<f32>(0.0, 0.0, 0.0);
+      break;
+    }
+    x_48_phi = vec3<f32>(1.0, 0.0, 0.0);
+    break;
+  }
+  let x_48 : vec3<f32> = x_48_phi;
+  x_GLF_color = vec4<f32>(x_48.x, x_48.y, x_48.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..2999e7d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.hlsl
@@ -0,0 +1,46 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4x3 x_37 = 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);
+  float4x3 x_38_phi = 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);
+  float3 x_48_phi = float3(0.0f, 0.0f, 0.0f);
+  const float x_32 = gl_FragCoord.y;
+  if ((x_32 < 1.0f)) {
+    x_38_phi = 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));
+  } else {
+    x_37 = transpose(float3x4(float4(1.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 1.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 1.0f, 0.0f)));
+    x_38_phi = x_37;
+  }
+  const float x_40 = transpose(x_38_phi)[0u].y;
+  while (true) {
+    if ((x_40 > 1.0f)) {
+      x_48_phi = float3(0.0f, 0.0f, 0.0f);
+      break;
+    }
+    x_48_phi = float3(1.0f, 0.0f, 0.0f);
+    break;
+  }
+  const float3 x_48 = x_48_phi;
+  x_GLF_color = float4(x_48.x, x_48.y, x_48.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.msl
new file mode 100644
index 0000000..f58d0ac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float4x3 x_37 = float4x3(0.0f);
+  float4x3 x_38_phi = float4x3(0.0f);
+  float3 x_48_phi = 0.0f;
+  float const x_32 = (*(tint_symbol_5)).y;
+  if ((x_32 < 1.0f)) {
+    x_38_phi = 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));
+  } else {
+    x_37 = transpose(float3x4(float4(1.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 1.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 1.0f, 0.0f)));
+    x_38_phi = x_37;
+  }
+  float4x3 const x_38 = x_38_phi;
+  float const x_40 = transpose(x_38)[0u].y;
+  while (true) {
+    if ((x_40 > 1.0f)) {
+      x_48_phi = float3(0.0f, 0.0f, 0.0f);
+      break;
+    }
+    x_48_phi = float3(1.0f, 0.0f, 0.0f);
+    break;
+  }
+  float3 const x_48 = x_48_phi;
+  *(tint_symbol_6) = float4(x_48.x, x_48.y, x_48.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..7ed4633
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.spvasm
@@ -0,0 +1,128 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 78
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_37 "x_37"
+               OpName %x_38_phi "x_38_phi"
+               OpName %x_48_phi "x_48_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %19 = OpConstantNull %mat4v3float
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %23 = OpConstantNull %v3float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Private_float = OpTypePointer Private %float
+    %float_1 = OpConstant %float 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %36 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %37 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %38 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %39 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %40 = OpConstantComposite %mat4v3float %36 %37 %38 %39
+%mat3v4float = OpTypeMatrix %v4float 3
+         %43 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_0
+         %44 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_0
+         %45 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_0
+         %46 = OpConstantComposite %mat3v4float %43 %44 %45
+     %uint_0 = OpConstant %uint 0
+   %main_out = OpTypeStruct %v4float
+         %65 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_37 = OpVariable %_ptr_Function_mat4v3float Function %19
+   %x_38_phi = OpVariable %_ptr_Function_mat4v3float Function %19
+   %x_48_phi = OpVariable %_ptr_Function_v3float Function %23
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %28 = OpLoad %float %27
+         %30 = OpFOrdLessThan %bool %28 %float_1
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+               OpStore %x_38_phi %40
+               OpBranch %32
+         %34 = OpLabel
+         %41 = OpTranspose %mat4v3float %46
+               OpStore %x_37 %41
+         %47 = OpLoad %mat4v3float %x_37
+               OpStore %x_38_phi %47
+               OpBranch %32
+         %32 = OpLabel
+         %48 = OpLoad %mat4v3float %x_38_phi
+         %49 = OpTranspose %mat3v4float %48
+         %51 = OpCompositeExtract %v4float %49 0
+         %52 = OpCompositeExtract %float %51 1
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpFOrdGreaterThan %bool %52 %float_1
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpStore %x_48_phi %39
+               OpBranch %54
+         %58 = OpLabel
+               OpStore %x_48_phi %36
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %53
+         %54 = OpLabel
+         %60 = OpLoad %v3float %x_48_phi
+         %61 = OpCompositeExtract %float %60 0
+         %62 = OpCompositeExtract %float %60 1
+         %63 = OpCompositeExtract %float %60 2
+         %64 = OpCompositeConstruct %v4float %61 %62 %63 %float_1
+               OpStore %x_GLF_color %64
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %65
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %69 = OpLabel
+         %70 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %70
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %72 = OpLabel
+         %73 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %73
+         %74 = OpFunctionCall %void %main_1
+         %76 = OpLoad %v4float %x_GLF_color
+         %77 = OpCompositeConstruct %main_out %76
+         %75 = OpFunctionCall %void %tint_symbol_3 %77
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..cf0d932
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl.expected.wgsl
@@ -0,0 +1,41 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var x_37 : mat4x3<f32>;
+  var x_38_phi : mat4x3<f32>;
+  var x_48_phi : vec3<f32>;
+  let x_32 : f32 = gl_FragCoord.y;
+  if ((x_32 < 1.0)) {
+    x_38_phi = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
+  } else {
+    x_37 = transpose(mat3x4<f32>(vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 1.0, 0.0)));
+    x_38_phi = x_37;
+  }
+  let x_38 : mat4x3<f32> = x_38_phi;
+  let x_40 : f32 = transpose(x_38)[0u].y;
+  loop {
+    if ((x_40 > 1.0)) {
+      x_48_phi = vec3<f32>(0.0, 0.0, 0.0);
+      break;
+    }
+    x_48_phi = vec3<f32>(1.0, 0.0, 0.0);
+    break;
+  }
+  let x_48 : vec3<f32> = x_48_phi;
+  x_GLF_color = vec4<f32>(x_48.x, x_48.y, x_48.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm
new file mode 100644
index 0000000..489ba28
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm
@@ -0,0 +1,211 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %odd_index "odd_index"
+               OpName %even_index "even_index"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j "j"
+               OpName %ll "ll"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %odd_index RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %even_index RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %j RelaxedPrecision
+               OpDecorate %ll RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+       %void = OpTypeVoid
+         %25 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %31 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %bool = OpTypeBool
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+  %float_128 = OpConstant %float 128
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+ %float_0_25 = OpConstant %float 0.25
+%_ptr_Output_float = OpTypePointer Output %float
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+      %int_3 = OpConstant %int 3
+         %50 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %main = OpFunction %void None %25
+         %51 = OpLabel
+  %odd_index = OpVariable %_ptr_Function_int Function
+ %even_index = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+         %ll = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %31
+         %52 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %53 = OpLoad %float %52
+         %54 = OpFOrdLessThan %bool %53 %float_128
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %55
+         %56 = OpLabel
+         %57 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %58 = OpLoad %float %57
+         %59 = OpFOrdLessThan %bool %58 %float_128
+               OpBranch %55
+         %55 = OpLabel
+         %60 = OpPhi %bool %54 %51 %59 %56
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpReturn
+         %61 = OpLabel
+               OpStore %odd_index %int_0
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %11 = OpLoad %int %odd_index
+         %67 = OpSLessThanEqual %bool %11 %int_1
+               OpBranchConditional %67 %68 %64
+         %68 = OpLabel
+         %69 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_0
+         %70 = OpLoad %float %69
+         %71 = OpFAdd %float %70 %float_0_25
+         %72 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_0
+               OpStore %72 %71
+         %12 = OpLoad %int %odd_index
+         %13 = OpIAdd %int %12 %int_1
+               OpStore %odd_index %13
+               OpBranch %65
+         %65 = OpLabel
+               OpBranch %63
+         %64 = OpLabel
+               OpStore %even_index %int_1
+               OpBranch %73
+         %73 = OpLabel
+               OpLoopMerge %74 %75 None
+               OpBranch %76
+         %76 = OpLabel
+         %14 = OpLoad %int %even_index
+         %77 = OpSGreaterThanEqual %bool %14 %int_0
+               OpBranchConditional %77 %78 %74
+         %78 = OpLabel
+         %79 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_0
+         %80 = OpLoad %float %79
+         %81 = OpFAdd %float %80 %float_0_25
+         %82 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_0
+               OpStore %82 %81
+         %83 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFOrdGreaterThan %bool %84 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpBranch %75
+         %88 = OpLabel
+         %15 = OpLoad %int %even_index
+         %90 = OpSGreaterThanEqual %bool %15 %int_1
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %91
+         %92 = OpLabel
+               OpKill
+         %91 = OpLabel
+               OpStore %j %int_1
+               OpBranch %93
+         %93 = OpLabel
+               OpLoopMerge %94 %95 None
+               OpBranch %96
+         %96 = OpLabel
+               OpBranchConditional %true %97 %94
+         %97 = OpLabel
+         %16 = OpLoad %int %ll
+         %98 = OpSGreaterThanEqual %bool %16 %int_3
+               OpSelectionMerge %99 None
+               OpBranchConditional %98 %100 %99
+        %100 = OpLabel
+               OpBranch %94
+         %99 = OpLabel
+         %17 = OpLoad %int %ll
+         %18 = OpIAdd %int %17 %int_1
+               OpStore %ll %18
+         %19 = OpLoad %int %j
+        %101 = OpBitcast %uint %19
+        %102 = OpULessThan %bool %101 %uint_1
+               OpSelectionMerge %103 None
+               OpBranchConditional %102 %104 %103
+        %104 = OpLabel
+               OpBranch %95
+        %103 = OpLabel
+        %105 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %106 = OpLoad %float %105
+        %107 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %108 = OpLoad %float %107
+        %109 = OpFOrdGreaterThan %bool %106 %108
+               OpSelectionMerge %110 None
+               OpBranchConditional %109 %111 %110
+        %111 = OpLabel
+               OpBranch %94
+        %110 = OpLabel
+               OpBranch %95
+         %95 = OpLabel
+         %20 = OpLoad %int %j
+         %21 = OpIAdd %int %20 %int_1
+               OpStore %j %21
+               OpBranch %93
+         %94 = OpLabel
+        %112 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %113 = OpLoad %float %112
+        %114 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %115 = OpLoad %float %114
+        %116 = OpFOrdGreaterThan %bool %113 %115
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %117
+        %118 = OpLabel
+               OpStore %_GLF_color %50
+               OpBranch %117
+        %117 = OpLabel
+         %22 = OpLoad %int %even_index
+         %23 = OpISub %int %22 %int_1
+               OpStore %even_index %23
+               OpBranch %75
+         %75 = OpLabel
+               OpBranch %73
+         %74 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..e97beb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,96 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+
+void main_1() {
+  int odd_index = 0;
+  int even_index = 0;
+  int j = 0;
+  int ll = 0;
+  bool x_59 = false;
+  bool x_60_phi = false;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_53 = gl_FragCoord.x;
+  const bool x_54 = (x_53 < 128.0f);
+  x_60_phi = x_54;
+  if (x_54) {
+    const float x_58 = gl_FragCoord.y;
+    x_59 = (x_58 < 128.0f);
+    x_60_phi = x_59;
+  }
+  if (x_60_phi) {
+    return;
+  }
+  odd_index = 0;
+  while (true) {
+    if ((odd_index <= 1)) {
+    } else {
+      break;
+    }
+    const float x_70 = x_GLF_color.x;
+    x_GLF_color.x = (x_70 + 0.25f);
+    odd_index = (odd_index + 1);
+  }
+  even_index = 1;
+  while (true) {
+    if ((even_index >= 0)) {
+    } else {
+      break;
+    }
+    const float x_80 = x_GLF_color.x;
+    x_GLF_color.x = (x_80 + 0.25f);
+    const float x_84 = asfloat(x_8[0].x);
+    const float x_86 = asfloat(x_8[0].y);
+    if ((x_84 > x_86)) {
+      continue;
+    }
+    if ((even_index >= 1)) {
+      discard;
+    }
+    j = 1;
+    {
+      for(; true; j = (j + 1)) {
+        if ((ll >= 3)) {
+          break;
+        }
+        ll = (ll + 1);
+        if ((asuint(j) < 1u)) {
+          continue;
+        }
+        const float x_106 = asfloat(x_8[0].x);
+        const float x_108 = asfloat(x_8[0].y);
+        if ((x_106 > x_108)) {
+          break;
+        }
+      }
+    }
+    const float x_113 = asfloat(x_8[0].x);
+    const float x_115 = asfloat(x_8[0].y);
+    if ((x_113 > x_115)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    }
+    even_index = (even_index - 1);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..67500c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,114 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int odd_index = 0;
+  int even_index = 0;
+  int j = 0;
+  int ll = 0;
+  bool x_59 = false;
+  bool x_60_phi = false;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_53 = (*(tint_symbol_6)).x;
+  bool const x_54 = (x_53 < 128.0f);
+  x_60_phi = x_54;
+  if (x_54) {
+    float const x_58 = (*(tint_symbol_6)).y;
+    x_59 = (x_58 < 128.0f);
+    x_60_phi = x_59;
+  }
+  bool const x_60 = x_60_phi;
+  if (x_60) {
+    return;
+  }
+  odd_index = 0;
+  while (true) {
+    int const x_11 = odd_index;
+    if ((x_11 <= 1)) {
+    } else {
+      break;
+    }
+    float const x_70 = (*(tint_symbol_5)).x;
+    (*(tint_symbol_5)).x = (x_70 + 0.25f);
+    int const x_12 = odd_index;
+    odd_index = (x_12 + 1);
+  }
+  even_index = 1;
+  while (true) {
+    int const x_14 = even_index;
+    if ((x_14 >= 0)) {
+    } else {
+      break;
+    }
+    float const x_80 = (*(tint_symbol_5)).x;
+    (*(tint_symbol_5)).x = (x_80 + 0.25f);
+    float const x_84 = x_8.injectionSwitch.x;
+    float const x_86 = x_8.injectionSwitch.y;
+    if ((x_84 > x_86)) {
+      continue;
+    }
+    int const x_15 = even_index;
+    if ((x_15 >= 1)) {
+      discard_fragment();
+    }
+    j = 1;
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      int const x_16 = ll;
+      if ((x_16 >= 3)) {
+        break;
+      }
+      int const x_17 = ll;
+      ll = (x_17 + 1);
+      int const x_19 = j;
+      if ((as_type<uint>(x_19) < 1u)) {
+        {
+          int const x_20 = j;
+          j = (x_20 + 1);
+        }
+        continue;
+      }
+      float const x_106 = x_8.injectionSwitch.x;
+      float const x_108 = x_8.injectionSwitch.y;
+      if ((x_106 > x_108)) {
+        break;
+      }
+      {
+        int const x_20 = j;
+        j = (x_20 + 1);
+      }
+    }
+    float const x_113 = x_8.injectionSwitch.x;
+    float const x_115 = x_8.injectionSwitch.y;
+    if ((x_113 > x_115)) {
+      *(tint_symbol_5) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    }
+    int const x_22 = even_index;
+    even_index = (x_22 - 1);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8dcb827
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,254 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 146
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %odd_index "odd_index"
+               OpName %even_index "even_index"
+               OpName %j "j"
+               OpName %ll "ll"
+               OpName %x_59 "x_59"
+               OpName %x_60_phi "x_60_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %29 = OpConstantNull %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_128 = OpConstant %float 128
+     %uint_1 = OpConstant %uint 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+ %float_0_25 = OpConstant %float 0.25
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+      %int_3 = OpConstant %int 3
+        %130 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %133 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %odd_index = OpVariable %_ptr_Function_int Function %22
+ %even_index = OpVariable %_ptr_Function_int Function %22
+          %j = OpVariable %_ptr_Function_int Function %22
+         %ll = OpVariable %_ptr_Function_int Function %22
+       %x_59 = OpVariable %_ptr_Function_bool Function %29
+   %x_60_phi = OpVariable %_ptr_Function_bool Function %29
+               OpStore %x_GLF_color %33
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %40 = OpFOrdLessThan %bool %38 %float_128
+               OpStore %x_60_phi %40
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+         %44 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %45 = OpLoad %float %44
+         %46 = OpFOrdLessThan %bool %45 %float_128
+               OpStore %x_59 %46
+         %47 = OpLoad %bool %x_59
+               OpStore %x_60_phi %47
+               OpBranch %41
+         %41 = OpLabel
+         %48 = OpLoad %bool %x_60_phi
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+               OpReturn
+         %49 = OpLabel
+               OpStore %odd_index %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %odd_index
+         %58 = OpSLessThanEqual %bool %56 %int_1
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpBranch %59
+         %61 = OpLabel
+               OpBranch %53
+         %59 = OpLabel
+         %62 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %66 = OpFAdd %float %63 %float_0_25
+               OpStore %64 %66
+         %67 = OpLoad %int %odd_index
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %odd_index %68
+               OpBranch %54
+         %54 = OpLabel
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %even_index %int_1
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %even_index
+         %74 = OpSGreaterThanEqual %bool %73 %int_0
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %70
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %81 = OpFAdd %float %79 %float_0_25
+               OpStore %80 %81
+         %83 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFOrdGreaterThan %bool %84 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpBranch %71
+         %88 = OpLabel
+         %90 = OpLoad %int %even_index
+         %91 = OpSGreaterThanEqual %bool %90 %int_1
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %92
+         %93 = OpLabel
+               OpKill
+         %92 = OpLabel
+               OpStore %j %int_1
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+               OpSelectionMerge %99 None
+               OpBranchConditional %true %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %95
+         %99 = OpLabel
+        %102 = OpLoad %int %ll
+        %104 = OpSGreaterThanEqual %bool %102 %int_3
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %105
+        %106 = OpLabel
+               OpBranch %95
+        %105 = OpLabel
+        %107 = OpLoad %int %ll
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %ll %108
+        %109 = OpLoad %int %j
+        %110 = OpBitcast %uint %109
+        %111 = OpULessThan %bool %110 %uint_1
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %112
+        %113 = OpLabel
+               OpBranch %96
+        %112 = OpLabel
+        %114 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %115 = OpLoad %float %114
+        %116 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %117 = OpLoad %float %116
+        %118 = OpFOrdGreaterThan %bool %115 %117
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpBranch %95
+        %119 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+        %121 = OpLoad %int %j
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %j %122
+               OpBranch %94
+         %95 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %126 = OpLoad %float %125
+        %127 = OpFOrdGreaterThan %bool %124 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+               OpStore %x_GLF_color %130
+               OpBranch %128
+        %128 = OpLabel
+        %131 = OpLoad %int %even_index
+        %132 = OpISub %int %131 %int_1
+               OpStore %even_index %132
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %69
+         %70 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %133
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %137 = OpLabel
+        %138 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %138
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %140 = OpLabel
+        %141 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %141
+        %142 = OpFunctionCall %void %main_1
+        %144 = OpLoad %v4float %x_GLF_color
+        %145 = OpCompositeConstruct %main_out %144
+        %143 = OpFunctionCall %void %tint_symbol_3 %145
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..aec3b11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,110 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var odd_index : i32;
+  var even_index : i32;
+  var j : i32;
+  var ll : i32;
+  var x_59 : bool;
+  var x_60_phi : bool;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_53 : f32 = gl_FragCoord.x;
+  let x_54 : bool = (x_53 < 128.0);
+  x_60_phi = x_54;
+  if (x_54) {
+    let x_58 : f32 = gl_FragCoord.y;
+    x_59 = (x_58 < 128.0);
+    x_60_phi = x_59;
+  }
+  let x_60 : bool = x_60_phi;
+  if (x_60) {
+    return;
+  }
+  odd_index = 0;
+  loop {
+    let x_11 : i32 = odd_index;
+    if ((x_11 <= 1)) {
+    } else {
+      break;
+    }
+    let x_70 : f32 = x_GLF_color.x;
+    x_GLF_color.x = (x_70 + 0.25);
+    let x_12 : i32 = odd_index;
+    odd_index = (x_12 + 1);
+  }
+  even_index = 1;
+  loop {
+    let x_14 : i32 = even_index;
+    if ((x_14 >= 0)) {
+    } else {
+      break;
+    }
+    let x_80 : f32 = x_GLF_color.x;
+    x_GLF_color.x = (x_80 + 0.25);
+    let x_84 : f32 = x_8.injectionSwitch.x;
+    let x_86 : f32 = x_8.injectionSwitch.y;
+    if ((x_84 > x_86)) {
+      continue;
+    }
+    let x_15 : i32 = even_index;
+    if ((x_15 >= 1)) {
+      discard;
+    }
+    j = 1;
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+      let x_16 : i32 = ll;
+      if ((x_16 >= 3)) {
+        break;
+      }
+      let x_17 : i32 = ll;
+      ll = (x_17 + 1);
+      let x_19 : i32 = j;
+      if ((bitcast<u32>(x_19) < 1u)) {
+        continue;
+      }
+      let x_106 : f32 = x_8.injectionSwitch.x;
+      let x_108 : f32 = x_8.injectionSwitch.y;
+      if ((x_106 > x_108)) {
+        break;
+      }
+
+      continuing {
+        let x_20 : i32 = j;
+        j = (x_20 + 1);
+      }
+    }
+    let x_113 : f32 = x_8.injectionSwitch.x;
+    let x_115 : f32 = x_8.injectionSwitch.y;
+    if ((x_113 > x_115)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    }
+    let x_22 : i32 = even_index;
+    even_index = (x_22 - 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
new file mode 100644
index 0000000..aec3b11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
@@ -0,0 +1,110 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var odd_index : i32;
+  var even_index : i32;
+  var j : i32;
+  var ll : i32;
+  var x_59 : bool;
+  var x_60_phi : bool;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_53 : f32 = gl_FragCoord.x;
+  let x_54 : bool = (x_53 < 128.0);
+  x_60_phi = x_54;
+  if (x_54) {
+    let x_58 : f32 = gl_FragCoord.y;
+    x_59 = (x_58 < 128.0);
+    x_60_phi = x_59;
+  }
+  let x_60 : bool = x_60_phi;
+  if (x_60) {
+    return;
+  }
+  odd_index = 0;
+  loop {
+    let x_11 : i32 = odd_index;
+    if ((x_11 <= 1)) {
+    } else {
+      break;
+    }
+    let x_70 : f32 = x_GLF_color.x;
+    x_GLF_color.x = (x_70 + 0.25);
+    let x_12 : i32 = odd_index;
+    odd_index = (x_12 + 1);
+  }
+  even_index = 1;
+  loop {
+    let x_14 : i32 = even_index;
+    if ((x_14 >= 0)) {
+    } else {
+      break;
+    }
+    let x_80 : f32 = x_GLF_color.x;
+    x_GLF_color.x = (x_80 + 0.25);
+    let x_84 : f32 = x_8.injectionSwitch.x;
+    let x_86 : f32 = x_8.injectionSwitch.y;
+    if ((x_84 > x_86)) {
+      continue;
+    }
+    let x_15 : i32 = even_index;
+    if ((x_15 >= 1)) {
+      discard;
+    }
+    j = 1;
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+      let x_16 : i32 = ll;
+      if ((x_16 >= 3)) {
+        break;
+      }
+      let x_17 : i32 = ll;
+      ll = (x_17 + 1);
+      let x_19 : i32 = j;
+      if ((bitcast<u32>(x_19) < 1u)) {
+        continue;
+      }
+      let x_106 : f32 = x_8.injectionSwitch.x;
+      let x_108 : f32 = x_8.injectionSwitch.y;
+      if ((x_106 > x_108)) {
+        break;
+      }
+
+      continuing {
+        let x_20 : i32 = j;
+        j = (x_20 + 1);
+      }
+    }
+    let x_113 : f32 = x_8.injectionSwitch.x;
+    let x_115 : f32 = x_8.injectionSwitch.y;
+    if ((x_113 > x_115)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    }
+    let x_22 : i32 = even_index;
+    even_index = (x_22 - 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..e97beb7
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,96 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[1];
+};
+
+void main_1() {
+  int odd_index = 0;
+  int even_index = 0;
+  int j = 0;
+  int ll = 0;
+  bool x_59 = false;
+  bool x_60_phi = false;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_53 = gl_FragCoord.x;
+  const bool x_54 = (x_53 < 128.0f);
+  x_60_phi = x_54;
+  if (x_54) {
+    const float x_58 = gl_FragCoord.y;
+    x_59 = (x_58 < 128.0f);
+    x_60_phi = x_59;
+  }
+  if (x_60_phi) {
+    return;
+  }
+  odd_index = 0;
+  while (true) {
+    if ((odd_index <= 1)) {
+    } else {
+      break;
+    }
+    const float x_70 = x_GLF_color.x;
+    x_GLF_color.x = (x_70 + 0.25f);
+    odd_index = (odd_index + 1);
+  }
+  even_index = 1;
+  while (true) {
+    if ((even_index >= 0)) {
+    } else {
+      break;
+    }
+    const float x_80 = x_GLF_color.x;
+    x_GLF_color.x = (x_80 + 0.25f);
+    const float x_84 = asfloat(x_8[0].x);
+    const float x_86 = asfloat(x_8[0].y);
+    if ((x_84 > x_86)) {
+      continue;
+    }
+    if ((even_index >= 1)) {
+      discard;
+    }
+    j = 1;
+    {
+      for(; true; j = (j + 1)) {
+        if ((ll >= 3)) {
+          break;
+        }
+        ll = (ll + 1);
+        if ((asuint(j) < 1u)) {
+          continue;
+        }
+        const float x_106 = asfloat(x_8[0].x);
+        const float x_108 = asfloat(x_8[0].y);
+        if ((x_106 > x_108)) {
+          break;
+        }
+      }
+    }
+    const float x_113 = asfloat(x_8[0].x);
+    const float x_115 = asfloat(x_8[0].y);
+    if ((x_113 > x_115)) {
+      x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    }
+    even_index = (even_index - 1);
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..67500c5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,114 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int odd_index = 0;
+  int even_index = 0;
+  int j = 0;
+  int ll = 0;
+  bool x_59 = false;
+  bool x_60_phi = false;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_53 = (*(tint_symbol_6)).x;
+  bool const x_54 = (x_53 < 128.0f);
+  x_60_phi = x_54;
+  if (x_54) {
+    float const x_58 = (*(tint_symbol_6)).y;
+    x_59 = (x_58 < 128.0f);
+    x_60_phi = x_59;
+  }
+  bool const x_60 = x_60_phi;
+  if (x_60) {
+    return;
+  }
+  odd_index = 0;
+  while (true) {
+    int const x_11 = odd_index;
+    if ((x_11 <= 1)) {
+    } else {
+      break;
+    }
+    float const x_70 = (*(tint_symbol_5)).x;
+    (*(tint_symbol_5)).x = (x_70 + 0.25f);
+    int const x_12 = odd_index;
+    odd_index = (x_12 + 1);
+  }
+  even_index = 1;
+  while (true) {
+    int const x_14 = even_index;
+    if ((x_14 >= 0)) {
+    } else {
+      break;
+    }
+    float const x_80 = (*(tint_symbol_5)).x;
+    (*(tint_symbol_5)).x = (x_80 + 0.25f);
+    float const x_84 = x_8.injectionSwitch.x;
+    float const x_86 = x_8.injectionSwitch.y;
+    if ((x_84 > x_86)) {
+      continue;
+    }
+    int const x_15 = even_index;
+    if ((x_15 >= 1)) {
+      discard_fragment();
+    }
+    j = 1;
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      int const x_16 = ll;
+      if ((x_16 >= 3)) {
+        break;
+      }
+      int const x_17 = ll;
+      ll = (x_17 + 1);
+      int const x_19 = j;
+      if ((as_type<uint>(x_19) < 1u)) {
+        {
+          int const x_20 = j;
+          j = (x_20 + 1);
+        }
+        continue;
+      }
+      float const x_106 = x_8.injectionSwitch.x;
+      float const x_108 = x_8.injectionSwitch.y;
+      if ((x_106 > x_108)) {
+        break;
+      }
+      {
+        int const x_20 = j;
+        j = (x_20 + 1);
+      }
+    }
+    float const x_113 = x_8.injectionSwitch.x;
+    float const x_115 = x_8.injectionSwitch.y;
+    if ((x_113 > x_115)) {
+      *(tint_symbol_5) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    }
+    int const x_22 = even_index;
+    even_index = (x_22 - 1);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_8, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8dcb827
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,254 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 146
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %odd_index "odd_index"
+               OpName %even_index "even_index"
+               OpName %j "j"
+               OpName %ll "ll"
+               OpName %x_59 "x_59"
+               OpName %x_60_phi "x_60_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %29 = OpConstantNull %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_128 = OpConstant %float 128
+     %uint_1 = OpConstant %uint 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+ %float_0_25 = OpConstant %float 0.25
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %true = OpConstantTrue %bool
+      %int_3 = OpConstant %int 3
+        %130 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+        %133 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+  %odd_index = OpVariable %_ptr_Function_int Function %22
+ %even_index = OpVariable %_ptr_Function_int Function %22
+          %j = OpVariable %_ptr_Function_int Function %22
+         %ll = OpVariable %_ptr_Function_int Function %22
+       %x_59 = OpVariable %_ptr_Function_bool Function %29
+   %x_60_phi = OpVariable %_ptr_Function_bool Function %29
+               OpStore %x_GLF_color %33
+         %37 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %38 = OpLoad %float %37
+         %40 = OpFOrdLessThan %bool %38 %float_128
+               OpStore %x_60_phi %40
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+         %44 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %45 = OpLoad %float %44
+         %46 = OpFOrdLessThan %bool %45 %float_128
+               OpStore %x_59 %46
+         %47 = OpLoad %bool %x_59
+               OpStore %x_60_phi %47
+               OpBranch %41
+         %41 = OpLabel
+         %48 = OpLoad %bool %x_60_phi
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %49
+         %50 = OpLabel
+               OpReturn
+         %49 = OpLabel
+               OpStore %odd_index %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %odd_index
+         %58 = OpSLessThanEqual %bool %56 %int_1
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpBranch %59
+         %61 = OpLabel
+               OpBranch %53
+         %59 = OpLabel
+         %62 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %63 = OpLoad %float %62
+         %64 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %66 = OpFAdd %float %63 %float_0_25
+               OpStore %64 %66
+         %67 = OpLoad %int %odd_index
+         %68 = OpIAdd %int %67 %int_1
+               OpStore %odd_index %68
+               OpBranch %54
+         %54 = OpLabel
+               OpBranch %52
+         %53 = OpLabel
+               OpStore %even_index %int_1
+               OpBranch %69
+         %69 = OpLabel
+               OpLoopMerge %70 %71 None
+               OpBranch %72
+         %72 = OpLabel
+         %73 = OpLoad %int %even_index
+         %74 = OpSGreaterThanEqual %bool %73 %int_0
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+               OpBranch %75
+         %77 = OpLabel
+               OpBranch %70
+         %75 = OpLabel
+         %78 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %79 = OpLoad %float %78
+         %80 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %81 = OpFAdd %float %79 %float_0_25
+               OpStore %80 %81
+         %83 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+         %84 = OpLoad %float %83
+         %85 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+         %86 = OpLoad %float %85
+         %87 = OpFOrdGreaterThan %bool %84 %86
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %88
+         %89 = OpLabel
+               OpBranch %71
+         %88 = OpLabel
+         %90 = OpLoad %int %even_index
+         %91 = OpSGreaterThanEqual %bool %90 %int_1
+               OpSelectionMerge %92 None
+               OpBranchConditional %91 %93 %92
+         %93 = OpLabel
+               OpKill
+         %92 = OpLabel
+               OpStore %j %int_1
+               OpBranch %94
+         %94 = OpLabel
+               OpLoopMerge %95 %96 None
+               OpBranch %97
+         %97 = OpLabel
+               OpSelectionMerge %99 None
+               OpBranchConditional %true %100 %101
+        %100 = OpLabel
+               OpBranch %99
+        %101 = OpLabel
+               OpBranch %95
+         %99 = OpLabel
+        %102 = OpLoad %int %ll
+        %104 = OpSGreaterThanEqual %bool %102 %int_3
+               OpSelectionMerge %105 None
+               OpBranchConditional %104 %106 %105
+        %106 = OpLabel
+               OpBranch %95
+        %105 = OpLabel
+        %107 = OpLoad %int %ll
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %ll %108
+        %109 = OpLoad %int %j
+        %110 = OpBitcast %uint %109
+        %111 = OpULessThan %bool %110 %uint_1
+               OpSelectionMerge %112 None
+               OpBranchConditional %111 %113 %112
+        %113 = OpLabel
+               OpBranch %96
+        %112 = OpLabel
+        %114 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %115 = OpLoad %float %114
+        %116 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %117 = OpLoad %float %116
+        %118 = OpFOrdGreaterThan %bool %115 %117
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %119
+        %120 = OpLabel
+               OpBranch %95
+        %119 = OpLabel
+               OpBranch %96
+         %96 = OpLabel
+        %121 = OpLoad %int %j
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %j %122
+               OpBranch %94
+         %95 = OpLabel
+        %123 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_0
+        %124 = OpLoad %float %123
+        %125 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %uint_1
+        %126 = OpLoad %float %125
+        %127 = OpFOrdGreaterThan %bool %124 %126
+               OpSelectionMerge %128 None
+               OpBranchConditional %127 %129 %128
+        %129 = OpLabel
+               OpStore %x_GLF_color %130
+               OpBranch %128
+        %128 = OpLabel
+        %131 = OpLoad %int %even_index
+        %132 = OpISub %int %131 %int_1
+               OpStore %even_index %132
+               OpBranch %71
+         %71 = OpLabel
+               OpBranch %69
+         %70 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %133
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %137 = OpLabel
+        %138 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %138
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %140 = OpLabel
+        %141 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %141
+        %142 = OpFunctionCall %void %main_1
+        %144 = OpLoad %v4float %x_GLF_color
+        %145 = OpCompositeConstruct %main_out %144
+        %143 = OpFunctionCall %void %tint_symbol_3 %145
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..aec3b11
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,110 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+fn main_1() {
+  var odd_index : i32;
+  var even_index : i32;
+  var j : i32;
+  var ll : i32;
+  var x_59 : bool;
+  var x_60_phi : bool;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_53 : f32 = gl_FragCoord.x;
+  let x_54 : bool = (x_53 < 128.0);
+  x_60_phi = x_54;
+  if (x_54) {
+    let x_58 : f32 = gl_FragCoord.y;
+    x_59 = (x_58 < 128.0);
+    x_60_phi = x_59;
+  }
+  let x_60 : bool = x_60_phi;
+  if (x_60) {
+    return;
+  }
+  odd_index = 0;
+  loop {
+    let x_11 : i32 = odd_index;
+    if ((x_11 <= 1)) {
+    } else {
+      break;
+    }
+    let x_70 : f32 = x_GLF_color.x;
+    x_GLF_color.x = (x_70 + 0.25);
+    let x_12 : i32 = odd_index;
+    odd_index = (x_12 + 1);
+  }
+  even_index = 1;
+  loop {
+    let x_14 : i32 = even_index;
+    if ((x_14 >= 0)) {
+    } else {
+      break;
+    }
+    let x_80 : f32 = x_GLF_color.x;
+    x_GLF_color.x = (x_80 + 0.25);
+    let x_84 : f32 = x_8.injectionSwitch.x;
+    let x_86 : f32 = x_8.injectionSwitch.y;
+    if ((x_84 > x_86)) {
+      continue;
+    }
+    let x_15 : i32 = even_index;
+    if ((x_15 >= 1)) {
+      discard;
+    }
+    j = 1;
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+      let x_16 : i32 = ll;
+      if ((x_16 >= 3)) {
+        break;
+      }
+      let x_17 : i32 = ll;
+      ll = (x_17 + 1);
+      let x_19 : i32 = j;
+      if ((bitcast<u32>(x_19) < 1u)) {
+        continue;
+      }
+      let x_106 : f32 = x_8.injectionSwitch.x;
+      let x_108 : f32 = x_8.injectionSwitch.y;
+      if ((x_106 > x_108)) {
+        break;
+      }
+
+      continuing {
+        let x_20 : i32 = j;
+        j = (x_20 + 1);
+      }
+    }
+    let x_113 : f32 = x_8.injectionSwitch.x;
+    let x_115 : f32 = x_8.injectionSwitch.y;
+    if ((x_113 > x_115)) {
+      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+    }
+    let x_22 : i32 = even_index;
+    even_index = (x_22 - 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm
new file mode 100644
index 0000000..f4d1bab
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm
@@ -0,0 +1,184 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 18 6
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %GLF_live2_looplimiter1 "GLF_live2_looplimiter1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %GLF_live2gl_FragCoord "GLF_live2gl_FragCoord"
+               OpName %GLF_dead3x "GLF_dead3x"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %GLF_dead3k "GLF_dead3k"
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "_compute_data"
+               OpName %__0 ""
+               OpDecorate %GLF_live2gl_FragCoord RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpDecorate %doesNotMatter BufferBlock
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+%GLF_live2gl_FragCoord = OpVariable %_ptr_Private_v4float Private
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %int_120 = OpConstant %int 120
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+%_ptr_Function_float = OpTypePointer Function %float
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+    %float_4 = OpConstant %float 4
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%doesNotMatter = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform_doesNotMatter = OpTypePointer Uniform %doesNotMatter
+        %__0 = OpVariable %_ptr_Uniform_doesNotMatter Uniform
+    %uint_42 = OpConstant %uint 42
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+     %v3uint = OpTypeVector %uint 3
+    %uint_18 = OpConstant %uint 18
+     %uint_6 = OpConstant %uint 6
+%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_1 %uint_18 %uint_6
+       %main = OpFunction %void None %20
+         %50 = OpLabel
+%GLF_live2_looplimiter1 = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+          %j = OpVariable %_ptr_Function_int Function
+ %GLF_dead3x = OpVariable %_ptr_Function_float Function
+         %51 = OpVariable %_ptr_Function_float Function
+ %GLF_dead3k = OpVariable %_ptr_Function_int Function
+               OpStore %GLF_live2_looplimiter1 %int_0
+               OpStore %i %int_0
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %57 = OpSLessThan %bool %56 %int_1
+               OpBranchConditional %57 %58 %53
+         %58 = OpLabel
+         %59 = OpLoad %int %GLF_live2_looplimiter1
+         %60 = OpSGreaterThanEqual %bool %59 %int_3
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpStore %j %int_0
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpLoad %int %j
+         %68 = OpSLessThan %bool %67 %int_1
+               OpBranchConditional %68 %69 %64
+         %69 = OpLabel
+         %70 = OpAccessChain %_ptr_Private_float %GLF_live2gl_FragCoord %uint_0
+         %13 = OpLoad %float %70
+         %71 = OpConvertFToS %int %13
+         %72 = OpSLessThan %bool %71 %int_120
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %73
+         %73 = OpLabel
+               OpBranch %65
+         %65 = OpLabel
+         %76 = OpLoad %int %j
+         %77 = OpIAdd %int %76 %int_1
+               OpStore %j %77
+               OpBranch %63
+         %64 = OpLabel
+               OpBranch %53
+         %61 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %78 = OpLoad %int %i
+         %79 = OpIAdd %int %78 %int_1
+               OpStore %i %79
+               OpBranch %52
+         %53 = OpLabel
+         %80 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %81 = OpLoad %float %80
+         %82 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %83 = OpLoad %float %82
+         %84 = OpFOrdGreaterThan %bool %81 %83
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %87
+         %86 = OpLabel
+         %88 = OpAccessChain %_ptr_Private_float %GLF_live2gl_FragCoord %uint_0
+         %14 = OpLoad %float %88
+               OpStore %51 %14
+               OpBranch %85
+         %87 = OpLabel
+               OpStore %51 %float_0
+               OpBranch %85
+         %85 = OpLabel
+         %15 = OpLoad %float %51
+               OpStore %GLF_dead3x %15
+               OpStore %GLF_dead3k %int_0
+               OpBranch %89
+         %89 = OpLabel
+               OpLoopMerge %90 %91 None
+               OpBranch %92
+         %92 = OpLabel
+         %93 = OpLoad %int %GLF_dead3k
+         %94 = OpSLessThan %bool %93 %int_2
+               OpBranchConditional %94 %95 %90
+         %95 = OpLabel
+         %96 = OpLoad %float %GLF_dead3x
+         %97 = OpFOrdGreaterThan %bool %96 %float_4
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %98
+         %99 = OpLabel
+               OpBranch %90
+         %98 = OpLabel
+        %100 = OpAccessChain %_ptr_Private_float %GLF_live2gl_FragCoord %uint_0
+         %16 = OpLoad %float %100
+               OpStore %GLF_dead3x %16
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %91
+         %91 = OpLabel
+        %101 = OpLoad %int %GLF_dead3k
+        %102 = OpIAdd %int %101 %int_1
+               OpStore %GLF_dead3k %102
+               OpBranch %89
+         %90 = OpLabel
+        %103 = OpAccessChain %_ptr_Uniform_uint %__0 %int_0 %int_0
+               OpStore %103 %uint_42
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..054c863
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,61 @@
+static float4 GLF_live2gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+RWByteAddressBuffer x_12 : register(u0, space0);
+
+void main_1() {
+  int GLF_live2_looplimiter1 = 0;
+  int i = 0;
+  int j = 0;
+  float GLF_dead3x = 0.0f;
+  float x_51 = 0.0f;
+  int GLF_dead3k = 0;
+  GLF_live2_looplimiter1 = 0;
+  i = 0;
+  {
+    for(; (i < 1); i = (i + 1)) {
+      if ((GLF_live2_looplimiter1 >= 3)) {
+        j = 0;
+        {
+          for(; (j < 1); j = (j + 1)) {
+            const float x_13 = GLF_live2gl_FragCoord.x;
+            if ((int(x_13) < 120)) {
+            } else {
+              GroupMemoryBarrierWithGroupSync();
+            }
+          }
+        }
+        break;
+      }
+    }
+  }
+  const float x_81 = asfloat(x_9[0].x);
+  const float x_83 = asfloat(x_9[0].y);
+  if ((x_81 > x_83)) {
+    const float x_14 = GLF_live2gl_FragCoord.x;
+    x_51 = x_14;
+  } else {
+    x_51 = 0.0f;
+  }
+  GLF_dead3x = x_51;
+  GLF_dead3k = 0;
+  {
+    for(; (GLF_dead3k < 2); GLF_dead3k = (GLF_dead3k + 1)) {
+      if ((GLF_dead3x > 4.0f)) {
+        break;
+      }
+      const float x_16 = GLF_live2gl_FragCoord.x;
+      GLF_dead3x = x_16;
+      GroupMemoryBarrierWithGroupSync();
+    }
+  }
+  x_12.Store((4u * uint(0)), asuint(42u));
+  return;
+}
+
+[numthreads(1, 18, 6)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..e1b045e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.msl
@@ -0,0 +1,90 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct doesNotMatter {
+  /* 0x0000 */ uint x_compute_data[1];
+};
+
+void main_1(constant buf0& x_9, device doesNotMatter& x_12, thread float4* const tint_symbol_1) {
+  int GLF_live2_looplimiter1 = 0;
+  int i = 0;
+  int j = 0;
+  float GLF_dead3x = 0.0f;
+  float x_51 = 0.0f;
+  int GLF_dead3k = 0;
+  GLF_live2_looplimiter1 = 0;
+  i = 0;
+  while (true) {
+    int const x_56 = i;
+    if ((x_56 < 1)) {
+    } else {
+      break;
+    }
+    int const x_59 = GLF_live2_looplimiter1;
+    if ((x_59 >= 3)) {
+      j = 0;
+      while (true) {
+        int const x_67 = j;
+        if ((x_67 < 1)) {
+        } else {
+          break;
+        }
+        float const x_13 = (*(tint_symbol_1)).x;
+        if ((int(x_13) < 120)) {
+        } else {
+          threadgroup_barrier(mem_flags::mem_threadgroup);
+        }
+        {
+          int const x_76 = j;
+          j = (x_76 + 1);
+        }
+      }
+      break;
+    }
+    {
+      int const x_78 = i;
+      i = (x_78 + 1);
+    }
+  }
+  float const x_81 = x_9.injectionSwitch.x;
+  float const x_83 = x_9.injectionSwitch.y;
+  if ((x_81 > x_83)) {
+    float const x_14 = (*(tint_symbol_1)).x;
+    x_51 = x_14;
+  } else {
+    x_51 = 0.0f;
+  }
+  float const x_15 = x_51;
+  GLF_dead3x = x_15;
+  GLF_dead3k = 0;
+  while (true) {
+    int const x_93 = GLF_dead3k;
+    if ((x_93 < 2)) {
+    } else {
+      break;
+    }
+    float const x_96 = GLF_dead3x;
+    if ((x_96 > 4.0f)) {
+      break;
+    }
+    float const x_16 = (*(tint_symbol_1)).x;
+    GLF_dead3x = x_16;
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+    {
+      int const x_101 = GLF_dead3k;
+      GLF_dead3k = (x_101 + 1);
+    }
+  }
+  x_12.x_compute_data[0] = 42u;
+  return;
+}
+
+kernel void tint_symbol(constant buf0& x_9 [[buffer(1)]], device doesNotMatter& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_2 = 0.0f;
+  main_1(x_9, x_12, &(tint_symbol_2));
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8978ada
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,203 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 113
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 18 6
+               OpName %GLF_live2gl_FragCoord "GLF_live2gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "x_compute_data"
+               OpName %x_12 "x_12"
+               OpName %main_1 "main_1"
+               OpName %GLF_live2_looplimiter1 "GLF_live2_looplimiter1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %GLF_dead3x "GLF_dead3x"
+               OpName %x_51 "x_51"
+               OpName %GLF_dead3k "GLF_dead3k"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %doesNotMatter Block
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%GLF_live2gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%doesNotMatter = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_doesNotMatter = OpTypePointer StorageBuffer %doesNotMatter
+       %x_12 = OpVariable %_ptr_StorageBuffer_doesNotMatter StorageBuffer
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %27 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %int_120 = OpConstant %int 120
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+    %float_4 = OpConstant %float 4
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+    %uint_42 = OpConstant %uint 42
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+%GLF_live2_looplimiter1 = OpVariable %_ptr_Function_int Function %22
+          %i = OpVariable %_ptr_Function_int Function %22
+          %j = OpVariable %_ptr_Function_int Function %22
+ %GLF_dead3x = OpVariable %_ptr_Function_float Function %27
+       %x_51 = OpVariable %_ptr_Function_float Function %27
+ %GLF_dead3k = OpVariable %_ptr_Function_int Function %22
+               OpStore %GLF_live2_looplimiter1 %int_0
+               OpStore %i %int_0
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpSLessThan %bool %35 %int_1
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %32
+         %39 = OpLabel
+         %42 = OpLoad %int %GLF_live2_looplimiter1
+         %44 = OpSGreaterThanEqual %bool %42 %int_3
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+               OpStore %j %int_0
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %j
+         %52 = OpSLessThan %bool %51 %int_1
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %48
+         %53 = OpLabel
+         %58 = OpAccessChain %_ptr_Private_float %GLF_live2gl_FragCoord %uint_0
+         %59 = OpLoad %float %58
+         %60 = OpConvertFToS %int %59
+         %62 = OpSLessThan %bool %60 %int_120
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %63
+         %63 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+         %69 = OpLoad %int %j
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %j %70
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %32
+         %45 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+         %71 = OpLoad %int %i
+         %72 = OpIAdd %int %71 %int_1
+               OpStore %i %72
+               OpBranch %31
+         %32 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %75 = OpLoad %float %74
+         %77 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpFOrdGreaterThan %bool %75 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Private_float %GLF_live2gl_FragCoord %uint_0
+         %84 = OpLoad %float %83
+               OpStore %x_51 %84
+               OpBranch %80
+         %82 = OpLabel
+               OpStore %x_51 %float_0
+               OpBranch %80
+         %80 = OpLabel
+         %86 = OpLoad %float %x_51
+               OpStore %GLF_dead3x %86
+               OpStore %GLF_dead3k %int_0
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpLoad %int %GLF_dead3k
+         %93 = OpSLessThan %bool %91 %int_2
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %96
+         %95 = OpLabel
+               OpBranch %94
+         %96 = OpLabel
+               OpBranch %88
+         %94 = OpLabel
+         %97 = OpLoad %float %GLF_dead3x
+         %99 = OpFOrdGreaterThan %bool %97 %float_4
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %100
+        %101 = OpLabel
+               OpBranch %88
+        %100 = OpLabel
+        %102 = OpAccessChain %_ptr_Private_float %GLF_live2gl_FragCoord %uint_0
+        %103 = OpLoad %float %102
+               OpStore %GLF_dead3x %103
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %89
+         %89 = OpLabel
+        %105 = OpLoad %int %GLF_dead3k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %GLF_dead3k %106
+               OpBranch %87
+         %88 = OpLabel
+        %108 = OpAccessChain %_ptr_StorageBuffer_uint %x_12 %uint_0 %int_0
+               OpStore %108 %uint_42
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %111 = OpLabel
+        %112 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..bc88eb2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,99 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct doesNotMatter {
+  x_compute_data : RTArr;
+};
+
+var<private> GLF_live2gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf0;
+
+[[group(0), binding(0)]] var<storage, read_write> x_12 : doesNotMatter;
+
+fn main_1() {
+  var GLF_live2_looplimiter1 : i32;
+  var i : i32;
+  var j : i32;
+  var GLF_dead3x : f32;
+  var x_51 : f32;
+  var GLF_dead3k : i32;
+  GLF_live2_looplimiter1 = 0;
+  i = 0;
+  loop {
+    let x_56 : i32 = i;
+    if ((x_56 < 1)) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = GLF_live2_looplimiter1;
+    if ((x_59 >= 3)) {
+      j = 0;
+      loop {
+        let x_67 : i32 = j;
+        if ((x_67 < 1)) {
+        } else {
+          break;
+        }
+        let x_13 : f32 = GLF_live2gl_FragCoord.x;
+        if ((i32(x_13) < 120)) {
+        } else {
+          workgroupBarrier();
+        }
+
+        continuing {
+          let x_76 : i32 = j;
+          j = (x_76 + 1);
+        }
+      }
+      break;
+    }
+
+    continuing {
+      let x_78 : i32 = i;
+      i = (x_78 + 1);
+    }
+  }
+  let x_81 : f32 = x_9.injectionSwitch.x;
+  let x_83 : f32 = x_9.injectionSwitch.y;
+  if ((x_81 > x_83)) {
+    let x_14 : f32 = GLF_live2gl_FragCoord.x;
+    x_51 = x_14;
+  } else {
+    x_51 = 0.0;
+  }
+  let x_15 : f32 = x_51;
+  GLF_dead3x = x_15;
+  GLF_dead3k = 0;
+  loop {
+    let x_93 : i32 = GLF_dead3k;
+    if ((x_93 < 2)) {
+    } else {
+      break;
+    }
+    let x_96 : f32 = GLF_dead3x;
+    if ((x_96 > 4.0)) {
+      break;
+    }
+    let x_16 : f32 = GLF_live2gl_FragCoord.x;
+    GLF_dead3x = x_16;
+    workgroupBarrier();
+
+    continuing {
+      let x_101 : i32 = GLF_dead3k;
+      GLF_dead3k = (x_101 + 1);
+    }
+  }
+  x_12.x_compute_data[0] = 42u;
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 18, 6)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
new file mode 100644
index 0000000..bc88eb2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
@@ -0,0 +1,99 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct doesNotMatter {
+  x_compute_data : RTArr;
+};
+
+var<private> GLF_live2gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf0;
+
+[[group(0), binding(0)]] var<storage, read_write> x_12 : doesNotMatter;
+
+fn main_1() {
+  var GLF_live2_looplimiter1 : i32;
+  var i : i32;
+  var j : i32;
+  var GLF_dead3x : f32;
+  var x_51 : f32;
+  var GLF_dead3k : i32;
+  GLF_live2_looplimiter1 = 0;
+  i = 0;
+  loop {
+    let x_56 : i32 = i;
+    if ((x_56 < 1)) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = GLF_live2_looplimiter1;
+    if ((x_59 >= 3)) {
+      j = 0;
+      loop {
+        let x_67 : i32 = j;
+        if ((x_67 < 1)) {
+        } else {
+          break;
+        }
+        let x_13 : f32 = GLF_live2gl_FragCoord.x;
+        if ((i32(x_13) < 120)) {
+        } else {
+          workgroupBarrier();
+        }
+
+        continuing {
+          let x_76 : i32 = j;
+          j = (x_76 + 1);
+        }
+      }
+      break;
+    }
+
+    continuing {
+      let x_78 : i32 = i;
+      i = (x_78 + 1);
+    }
+  }
+  let x_81 : f32 = x_9.injectionSwitch.x;
+  let x_83 : f32 = x_9.injectionSwitch.y;
+  if ((x_81 > x_83)) {
+    let x_14 : f32 = GLF_live2gl_FragCoord.x;
+    x_51 = x_14;
+  } else {
+    x_51 = 0.0;
+  }
+  let x_15 : f32 = x_51;
+  GLF_dead3x = x_15;
+  GLF_dead3k = 0;
+  loop {
+    let x_93 : i32 = GLF_dead3k;
+    if ((x_93 < 2)) {
+    } else {
+      break;
+    }
+    let x_96 : f32 = GLF_dead3x;
+    if ((x_96 > 4.0)) {
+      break;
+    }
+    let x_16 : f32 = GLF_live2gl_FragCoord.x;
+    GLF_dead3x = x_16;
+    workgroupBarrier();
+
+    continuing {
+      let x_101 : i32 = GLF_dead3k;
+      GLF_dead3k = (x_101 + 1);
+    }
+  }
+  x_12.x_compute_data[0] = 42u;
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 18, 6)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..054c863
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,61 @@
+static float4 GLF_live2gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_9 : register(b1, space0) {
+  uint4 x_9[1];
+};
+RWByteAddressBuffer x_12 : register(u0, space0);
+
+void main_1() {
+  int GLF_live2_looplimiter1 = 0;
+  int i = 0;
+  int j = 0;
+  float GLF_dead3x = 0.0f;
+  float x_51 = 0.0f;
+  int GLF_dead3k = 0;
+  GLF_live2_looplimiter1 = 0;
+  i = 0;
+  {
+    for(; (i < 1); i = (i + 1)) {
+      if ((GLF_live2_looplimiter1 >= 3)) {
+        j = 0;
+        {
+          for(; (j < 1); j = (j + 1)) {
+            const float x_13 = GLF_live2gl_FragCoord.x;
+            if ((int(x_13) < 120)) {
+            } else {
+              GroupMemoryBarrierWithGroupSync();
+            }
+          }
+        }
+        break;
+      }
+    }
+  }
+  const float x_81 = asfloat(x_9[0].x);
+  const float x_83 = asfloat(x_9[0].y);
+  if ((x_81 > x_83)) {
+    const float x_14 = GLF_live2gl_FragCoord.x;
+    x_51 = x_14;
+  } else {
+    x_51 = 0.0f;
+  }
+  GLF_dead3x = x_51;
+  GLF_dead3k = 0;
+  {
+    for(; (GLF_dead3k < 2); GLF_dead3k = (GLF_dead3k + 1)) {
+      if ((GLF_dead3x > 4.0f)) {
+        break;
+      }
+      const float x_16 = GLF_live2gl_FragCoord.x;
+      GLF_dead3x = x_16;
+      GroupMemoryBarrierWithGroupSync();
+    }
+  }
+  x_12.Store((4u * uint(0)), asuint(42u));
+  return;
+}
+
+[numthreads(1, 18, 6)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..e1b045e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.msl
@@ -0,0 +1,90 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct doesNotMatter {
+  /* 0x0000 */ uint x_compute_data[1];
+};
+
+void main_1(constant buf0& x_9, device doesNotMatter& x_12, thread float4* const tint_symbol_1) {
+  int GLF_live2_looplimiter1 = 0;
+  int i = 0;
+  int j = 0;
+  float GLF_dead3x = 0.0f;
+  float x_51 = 0.0f;
+  int GLF_dead3k = 0;
+  GLF_live2_looplimiter1 = 0;
+  i = 0;
+  while (true) {
+    int const x_56 = i;
+    if ((x_56 < 1)) {
+    } else {
+      break;
+    }
+    int const x_59 = GLF_live2_looplimiter1;
+    if ((x_59 >= 3)) {
+      j = 0;
+      while (true) {
+        int const x_67 = j;
+        if ((x_67 < 1)) {
+        } else {
+          break;
+        }
+        float const x_13 = (*(tint_symbol_1)).x;
+        if ((int(x_13) < 120)) {
+        } else {
+          threadgroup_barrier(mem_flags::mem_threadgroup);
+        }
+        {
+          int const x_76 = j;
+          j = (x_76 + 1);
+        }
+      }
+      break;
+    }
+    {
+      int const x_78 = i;
+      i = (x_78 + 1);
+    }
+  }
+  float const x_81 = x_9.injectionSwitch.x;
+  float const x_83 = x_9.injectionSwitch.y;
+  if ((x_81 > x_83)) {
+    float const x_14 = (*(tint_symbol_1)).x;
+    x_51 = x_14;
+  } else {
+    x_51 = 0.0f;
+  }
+  float const x_15 = x_51;
+  GLF_dead3x = x_15;
+  GLF_dead3k = 0;
+  while (true) {
+    int const x_93 = GLF_dead3k;
+    if ((x_93 < 2)) {
+    } else {
+      break;
+    }
+    float const x_96 = GLF_dead3x;
+    if ((x_96 > 4.0f)) {
+      break;
+    }
+    float const x_16 = (*(tint_symbol_1)).x;
+    GLF_dead3x = x_16;
+    threadgroup_barrier(mem_flags::mem_threadgroup);
+    {
+      int const x_101 = GLF_dead3k;
+      GLF_dead3k = (x_101 + 1);
+    }
+  }
+  x_12.x_compute_data[0] = 42u;
+  return;
+}
+
+kernel void tint_symbol(constant buf0& x_9 [[buffer(1)]], device doesNotMatter& x_12 [[buffer(0)]]) {
+  thread float4 tint_symbol_2 = 0.0f;
+  main_1(x_9, x_12, &(tint_symbol_2));
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8978ada
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,203 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 113
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 18 6
+               OpName %GLF_live2gl_FragCoord "GLF_live2gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_9 "x_9"
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "x_compute_data"
+               OpName %x_12 "x_12"
+               OpName %main_1 "main_1"
+               OpName %GLF_live2_looplimiter1 "GLF_live2_looplimiter1"
+               OpName %i "i"
+               OpName %j "j"
+               OpName %GLF_dead3x "GLF_dead3x"
+               OpName %x_51 "x_51"
+               OpName %GLF_dead3k "GLF_dead3k"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 1
+               OpDecorate %doesNotMatter Block
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_12 DescriptorSet 0
+               OpDecorate %x_12 Binding 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%GLF_live2gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%doesNotMatter = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_doesNotMatter = OpTypePointer StorageBuffer %doesNotMatter
+       %x_12 = OpVariable %_ptr_StorageBuffer_doesNotMatter StorageBuffer
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %27 = OpConstantNull %float
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+    %int_120 = OpConstant %int 120
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+    %float_4 = OpConstant %float 4
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+    %uint_42 = OpConstant %uint 42
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+%GLF_live2_looplimiter1 = OpVariable %_ptr_Function_int Function %22
+          %i = OpVariable %_ptr_Function_int Function %22
+          %j = OpVariable %_ptr_Function_int Function %22
+ %GLF_dead3x = OpVariable %_ptr_Function_float Function %27
+       %x_51 = OpVariable %_ptr_Function_float Function %27
+ %GLF_dead3k = OpVariable %_ptr_Function_int Function %22
+               OpStore %GLF_live2_looplimiter1 %int_0
+               OpStore %i %int_0
+               OpBranch %31
+         %31 = OpLabel
+               OpLoopMerge %32 %33 None
+               OpBranch %34
+         %34 = OpLabel
+         %35 = OpLoad %int %i
+         %37 = OpSLessThan %bool %35 %int_1
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %41
+         %40 = OpLabel
+               OpBranch %39
+         %41 = OpLabel
+               OpBranch %32
+         %39 = OpLabel
+         %42 = OpLoad %int %GLF_live2_looplimiter1
+         %44 = OpSGreaterThanEqual %bool %42 %int_3
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+               OpStore %j %int_0
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %j
+         %52 = OpSLessThan %bool %51 %int_1
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %55
+         %54 = OpLabel
+               OpBranch %53
+         %55 = OpLabel
+               OpBranch %48
+         %53 = OpLabel
+         %58 = OpAccessChain %_ptr_Private_float %GLF_live2gl_FragCoord %uint_0
+         %59 = OpLoad %float %58
+         %60 = OpConvertFToS %int %59
+         %62 = OpSLessThan %bool %60 %int_120
+               OpSelectionMerge %63 None
+               OpBranchConditional %62 %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %63
+         %63 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+         %69 = OpLoad %int %j
+         %70 = OpIAdd %int %69 %int_1
+               OpStore %j %70
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %32
+         %45 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+         %71 = OpLoad %int %i
+         %72 = OpIAdd %int %71 %int_1
+               OpStore %i %72
+               OpBranch %31
+         %32 = OpLabel
+         %74 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_0
+         %75 = OpLoad %float %74
+         %77 = OpAccessChain %_ptr_Uniform_float %x_9 %uint_0 %uint_1
+         %78 = OpLoad %float %77
+         %79 = OpFOrdGreaterThan %bool %75 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %82
+         %81 = OpLabel
+         %83 = OpAccessChain %_ptr_Private_float %GLF_live2gl_FragCoord %uint_0
+         %84 = OpLoad %float %83
+               OpStore %x_51 %84
+               OpBranch %80
+         %82 = OpLabel
+               OpStore %x_51 %float_0
+               OpBranch %80
+         %80 = OpLabel
+         %86 = OpLoad %float %x_51
+               OpStore %GLF_dead3x %86
+               OpStore %GLF_dead3k %int_0
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpLoad %int %GLF_dead3k
+         %93 = OpSLessThan %bool %91 %int_2
+               OpSelectionMerge %94 None
+               OpBranchConditional %93 %95 %96
+         %95 = OpLabel
+               OpBranch %94
+         %96 = OpLabel
+               OpBranch %88
+         %94 = OpLabel
+         %97 = OpLoad %float %GLF_dead3x
+         %99 = OpFOrdGreaterThan %bool %97 %float_4
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %100
+        %101 = OpLabel
+               OpBranch %88
+        %100 = OpLabel
+        %102 = OpAccessChain %_ptr_Private_float %GLF_live2gl_FragCoord %uint_0
+        %103 = OpLoad %float %102
+               OpStore %GLF_dead3x %103
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %89
+         %89 = OpLabel
+        %105 = OpLoad %int %GLF_dead3k
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %GLF_dead3k %106
+               OpBranch %87
+         %88 = OpLabel
+        %108 = OpAccessChain %_ptr_StorageBuffer_uint %x_12 %uint_0 %int_0
+               OpStore %108 %uint_42
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %111 = OpLabel
+        %112 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..bc88eb2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,99 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct doesNotMatter {
+  x_compute_data : RTArr;
+};
+
+var<private> GLF_live2gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(1)]] var<uniform> x_9 : buf0;
+
+[[group(0), binding(0)]] var<storage, read_write> x_12 : doesNotMatter;
+
+fn main_1() {
+  var GLF_live2_looplimiter1 : i32;
+  var i : i32;
+  var j : i32;
+  var GLF_dead3x : f32;
+  var x_51 : f32;
+  var GLF_dead3k : i32;
+  GLF_live2_looplimiter1 = 0;
+  i = 0;
+  loop {
+    let x_56 : i32 = i;
+    if ((x_56 < 1)) {
+    } else {
+      break;
+    }
+    let x_59 : i32 = GLF_live2_looplimiter1;
+    if ((x_59 >= 3)) {
+      j = 0;
+      loop {
+        let x_67 : i32 = j;
+        if ((x_67 < 1)) {
+        } else {
+          break;
+        }
+        let x_13 : f32 = GLF_live2gl_FragCoord.x;
+        if ((i32(x_13) < 120)) {
+        } else {
+          workgroupBarrier();
+        }
+
+        continuing {
+          let x_76 : i32 = j;
+          j = (x_76 + 1);
+        }
+      }
+      break;
+    }
+
+    continuing {
+      let x_78 : i32 = i;
+      i = (x_78 + 1);
+    }
+  }
+  let x_81 : f32 = x_9.injectionSwitch.x;
+  let x_83 : f32 = x_9.injectionSwitch.y;
+  if ((x_81 > x_83)) {
+    let x_14 : f32 = GLF_live2gl_FragCoord.x;
+    x_51 = x_14;
+  } else {
+    x_51 = 0.0;
+  }
+  let x_15 : f32 = x_51;
+  GLF_dead3x = x_15;
+  GLF_dead3k = 0;
+  loop {
+    let x_93 : i32 = GLF_dead3k;
+    if ((x_93 < 2)) {
+    } else {
+      break;
+    }
+    let x_96 : f32 = GLF_dead3x;
+    if ((x_96 > 4.0)) {
+      break;
+    }
+    let x_16 : f32 = GLF_live2gl_FragCoord.x;
+    GLF_dead3x = x_16;
+    workgroupBarrier();
+
+    continuing {
+      let x_101 : i32 = GLF_dead3k;
+      GLF_dead3k = (x_101 + 1);
+    }
+  }
+  x_12.x_compute_data[0] = 42u;
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 18, 6)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm
new file mode 100644
index 0000000..7f00636
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm
@@ -0,0 +1,126 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %x "x"
+               OpName %matrix_u "matrix_u"
+               OpName %b "b"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "matrix_a_uni"
+               OpName %_ ""
+               OpName %matrix_b "matrix_b"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %x RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %b RelaxedPrecision
+               OpMemberDecorate %buf0 0 ColMajor
+               OpMemberDecorate %buf0 0 Offset 0
+               OpMemberDecorate %buf0 0 MatrixStride 16
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_4 = OpConstant %int 4
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+%mat4v4float = OpTypeMatrix %v4float 4
+       %buf0 = OpTypeStruct %mat4v4float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %40 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %19
+         %41 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function
+   %matrix_u = OpVariable %_ptr_Function_v4float Function
+          %b = OpVariable %_ptr_Function_int Function
+   %matrix_b = OpVariable %_ptr_Function_v4float Function
+         %42 = OpVariable %_ptr_Function_v4float Function
+               OpStore %x %int_4
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %10 = OpLoad %int %x
+         %47 = OpSGreaterThanEqual %bool %10 %int_1
+               OpBranchConditional %47 %48 %44
+         %48 = OpLabel
+         %11 = OpLoad %int %x
+         %49 = OpAccessChain %_ptr_Function_float %matrix_u %11
+               OpStore %49 %float_1
+               OpBranch %45
+         %45 = OpLabel
+         %12 = OpLoad %int %x
+         %13 = OpISub %int %12 %int_1
+               OpStore %x %13
+               OpBranch %43
+         %44 = OpLabel
+               OpStore %b %int_4
+               OpBranch %50
+         %50 = OpLabel
+               OpLoopMerge %51 %52 None
+               OpBranch %53
+         %53 = OpLabel
+         %54 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0 %uint_0
+         %55 = OpLoad %float %54
+         %56 = OpFOrdLessThan %bool %55 %float_n1
+               OpBranchConditional %56 %57 %51
+         %57 = OpLabel
+         %14 = OpLoad %int %b
+         %15 = OpLoad %int %b
+         %58 = OpSGreaterThan %bool %15 %int_1
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+         %62 = OpLoad %v4float %matrix_b
+         %63 = OpLoad %v4float %matrix_b
+         %64 = OpExtInst %v4float %1 FMin %62 %63
+               OpStore %42 %64
+               OpBranch %59
+         %61 = OpLabel
+         %65 = OpLoad %v4float %matrix_u
+               OpStore %42 %65
+               OpBranch %59
+         %59 = OpLabel
+         %66 = OpAccessChain %_ptr_Function_float %42 %uint_1
+         %67 = OpLoad %float %66
+         %68 = OpAccessChain %_ptr_Function_float %matrix_b %14
+               OpStore %68 %67
+               OpBranch %52
+         %52 = OpLabel
+         %16 = OpLoad %int %b
+         %17 = OpISub %int %16 %int_1
+               OpStore %b %17
+               OpBranch %50
+         %51 = OpLabel
+               OpStore %_GLF_color %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..807ea01
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.hlsl
@@ -0,0 +1,58 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x = 0;
+  float4 matrix_u = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int b = 0;
+  float4 matrix_b = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_42 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x = 4;
+  {
+    for(; (x >= 1); x = (x - 1)) {
+      set_float4(matrix_u, x, 1.0f);
+    }
+  }
+  b = 4;
+  while (true) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_55 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_55 < -1.0f)) {
+    } else {
+      break;
+    }
+    const int x_14 = b;
+    if ((b > 1)) {
+      x_42 = min(matrix_b, matrix_b);
+    } else {
+      x_42 = matrix_u;
+    }
+    const float x_67 = x_42.y;
+    set_float4(matrix_b, x_14, x_67);
+    {
+      b = (b - 1);
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.msl
new file mode 100644
index 0000000..3b8cbfc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float4x4 matrix_a_uni;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int x = 0;
+  float4 matrix_u = 0.0f;
+  int b = 0;
+  float4 matrix_b = 0.0f;
+  float4 x_42 = 0.0f;
+  x = 4;
+  while (true) {
+    int const x_10 = x;
+    if ((x_10 >= 1)) {
+    } else {
+      break;
+    }
+    int const x_11 = x;
+    matrix_u[x_11] = 1.0f;
+    {
+      int const x_12 = x;
+      x = (x_12 - 1);
+    }
+  }
+  b = 4;
+  while (true) {
+    float const x_55 = x_8.matrix_a_uni[0].x;
+    if ((x_55 < -1.0f)) {
+    } else {
+      break;
+    }
+    int const x_14 = b;
+    int const x_15 = b;
+    if ((x_15 > 1)) {
+      float4 const x_62 = matrix_b;
+      float4 const x_63 = matrix_b;
+      x_42 = fmin(x_62, x_63);
+    } else {
+      float4 const x_65 = matrix_u;
+      x_42 = x_65;
+    }
+    float const x_67 = x_42.y;
+    matrix_b[x_14] = x_67;
+    {
+      int const x_16 = b;
+      b = (x_16 - 1);
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..3f924a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.spvasm
@@ -0,0 +1,160 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+         %67 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "matrix_a_uni"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x "x"
+               OpName %matrix_u "matrix_u"
+               OpName %b "b"
+               OpName %matrix_b "matrix_b"
+               OpName %x_42 "x_42"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpMemberDecorate %buf0 0 ColMajor
+               OpMemberDecorate %buf0 0 MatrixStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%mat4v4float = OpTypeMatrix %v4float 4
+       %buf0 = OpTypeStruct %mat4v4float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %int_4 = OpConstant %int 4
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %76 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %19
+   %matrix_u = OpVariable %_ptr_Function_v4float Function %9
+          %b = OpVariable %_ptr_Function_int Function %19
+   %matrix_b = OpVariable %_ptr_Function_v4float Function %9
+       %x_42 = OpVariable %_ptr_Function_v4float Function %9
+               OpStore %x %int_4
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %x
+         %32 = OpSGreaterThanEqual %bool %30 %int_1
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpBranch %34
+         %36 = OpLabel
+               OpBranch %27
+         %34 = OpLabel
+         %37 = OpLoad %int %x
+         %39 = OpAccessChain %_ptr_Function_float %matrix_u %37
+               OpStore %39 %float_1
+               OpBranch %28
+         %28 = OpLabel
+         %41 = OpLoad %int %x
+         %42 = OpISub %int %41 %int_1
+               OpStore %x %42
+               OpBranch %26
+         %27 = OpLabel
+               OpStore %b %int_4
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0 %uint_0
+         %52 = OpLoad %float %51
+         %54 = OpFOrdLessThan %bool %52 %float_n1
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %44
+         %55 = OpLabel
+         %58 = OpLoad %int %b
+         %59 = OpLoad %int %b
+         %60 = OpSGreaterThan %bool %59 %int_1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+         %64 = OpLoad %v4float %matrix_b
+         %65 = OpLoad %v4float %matrix_b
+         %66 = OpExtInst %v4float %67 NMin %64 %65
+               OpStore %x_42 %66
+               OpBranch %61
+         %63 = OpLabel
+         %68 = OpLoad %v4float %matrix_u
+               OpStore %x_42 %68
+               OpBranch %61
+         %61 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %x_42 %uint_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Function_float %matrix_b %58
+               OpStore %72 %71
+               OpBranch %45
+         %45 = OpLabel
+         %73 = OpLoad %int %b
+         %74 = OpISub %int %73 %int_1
+               OpStore %b %74
+               OpBranch %43
+         %44 = OpLabel
+               OpStore %x_GLF_color %76
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..71733dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.wgsl
@@ -0,0 +1,69 @@
+[[block]]
+struct buf0 {
+  matrix_a_uni : mat4x4<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x : i32;
+  var matrix_u : vec4<f32>;
+  var b : i32;
+  var matrix_b : vec4<f32>;
+  var x_42 : vec4<f32>;
+  x = 4;
+  loop {
+    let x_10 : i32 = x;
+    if ((x_10 >= 1)) {
+    } else {
+      break;
+    }
+    let x_11 : i32 = x;
+    matrix_u[x_11] = 1.0;
+
+    continuing {
+      let x_12 : i32 = x;
+      x = (x_12 - 1);
+    }
+  }
+  b = 4;
+  loop {
+    let x_55 : f32 = x_8.matrix_a_uni[0].x;
+    if ((x_55 < -1.0)) {
+    } else {
+      break;
+    }
+    let x_14 : i32 = b;
+    let x_15 : i32 = b;
+    if ((x_15 > 1)) {
+      let x_62 : vec4<f32> = matrix_b;
+      let x_63 : vec4<f32> = matrix_b;
+      x_42 = min(x_62, x_63);
+    } else {
+      let x_65 : vec4<f32> = matrix_u;
+      x_42 = x_65;
+    }
+    let x_67 : f32 = x_42.y;
+    matrix_b[x_14] = x_67;
+
+    continuing {
+      let x_16 : i32 = b;
+      b = (x_16 - 1);
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
new file mode 100644
index 0000000..71733dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
@@ -0,0 +1,69 @@
+[[block]]
+struct buf0 {
+  matrix_a_uni : mat4x4<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x : i32;
+  var matrix_u : vec4<f32>;
+  var b : i32;
+  var matrix_b : vec4<f32>;
+  var x_42 : vec4<f32>;
+  x = 4;
+  loop {
+    let x_10 : i32 = x;
+    if ((x_10 >= 1)) {
+    } else {
+      break;
+    }
+    let x_11 : i32 = x;
+    matrix_u[x_11] = 1.0;
+
+    continuing {
+      let x_12 : i32 = x;
+      x = (x_12 - 1);
+    }
+  }
+  b = 4;
+  loop {
+    let x_55 : f32 = x_8.matrix_a_uni[0].x;
+    if ((x_55 < -1.0)) {
+    } else {
+      break;
+    }
+    let x_14 : i32 = b;
+    let x_15 : i32 = b;
+    if ((x_15 > 1)) {
+      let x_62 : vec4<f32> = matrix_b;
+      let x_63 : vec4<f32> = matrix_b;
+      x_42 = min(x_62, x_63);
+    } else {
+      let x_65 : vec4<f32> = matrix_u;
+      x_42 = x_65;
+    }
+    let x_67 : f32 = x_42.y;
+    matrix_b[x_14] = x_67;
+
+    continuing {
+      let x_16 : i32 = b;
+      b = (x_16 - 1);
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..807ea01
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.hlsl
@@ -0,0 +1,58 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+cbuffer cbuffer_x_8 : register(b0, space0) {
+  uint4 x_8[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int x = 0;
+  float4 matrix_u = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int b = 0;
+  float4 matrix_b = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float4 x_42 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  x = 4;
+  {
+    for(; (x >= 1); x = (x - 1)) {
+      set_float4(matrix_u, x, 1.0f);
+    }
+  }
+  b = 4;
+  while (true) {
+    const uint scalar_offset = ((16u * uint(0))) / 4;
+    const float x_55 = asfloat(x_8[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_55 < -1.0f)) {
+    } else {
+      break;
+    }
+    const int x_14 = b;
+    if ((b > 1)) {
+      x_42 = min(matrix_b, matrix_b);
+    } else {
+      x_42 = matrix_u;
+    }
+    const float x_67 = x_42.y;
+    set_float4(matrix_b, x_14, x_67);
+    {
+      b = (b - 1);
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.msl
new file mode 100644
index 0000000..3b8cbfc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.msl
@@ -0,0 +1,69 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ float4x4 matrix_a_uni;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_8, thread float4* const tint_symbol_4) {
+  int x = 0;
+  float4 matrix_u = 0.0f;
+  int b = 0;
+  float4 matrix_b = 0.0f;
+  float4 x_42 = 0.0f;
+  x = 4;
+  while (true) {
+    int const x_10 = x;
+    if ((x_10 >= 1)) {
+    } else {
+      break;
+    }
+    int const x_11 = x;
+    matrix_u[x_11] = 1.0f;
+    {
+      int const x_12 = x;
+      x = (x_12 - 1);
+    }
+  }
+  b = 4;
+  while (true) {
+    float const x_55 = x_8.matrix_a_uni[0].x;
+    if ((x_55 < -1.0f)) {
+    } else {
+      break;
+    }
+    int const x_14 = b;
+    int const x_15 = b;
+    if ((x_15 > 1)) {
+      float4 const x_62 = matrix_b;
+      float4 const x_63 = matrix_b;
+      x_42 = fmin(x_62, x_63);
+    } else {
+      float4 const x_65 = matrix_u;
+      x_42 = x_65;
+    }
+    float const x_67 = x_42.y;
+    matrix_b[x_14] = x_67;
+    {
+      int const x_16 = b;
+      b = (x_16 - 1);
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_8 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_8, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..3f924a6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.spvasm
@@ -0,0 +1,160 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 89
+; Schema: 0
+               OpCapability Shader
+         %67 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "matrix_a_uni"
+               OpName %x_8 "x_8"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x "x"
+               OpName %matrix_u "matrix_u"
+               OpName %b "b"
+               OpName %matrix_b "matrix_b"
+               OpName %x_42 "x_42"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpMemberDecorate %buf0 0 ColMajor
+               OpMemberDecorate %buf0 0 MatrixStride 16
+               OpDecorate %x_8 NonWritable
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%mat4v4float = OpTypeMatrix %v4float 4
+       %buf0 = OpTypeStruct %mat4v4float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_8 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %int_4 = OpConstant %int 4
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+   %float_n1 = OpConstant %float -1
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %76 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %77 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %x = OpVariable %_ptr_Function_int Function %19
+   %matrix_u = OpVariable %_ptr_Function_v4float Function %9
+          %b = OpVariable %_ptr_Function_int Function %19
+   %matrix_b = OpVariable %_ptr_Function_v4float Function %9
+       %x_42 = OpVariable %_ptr_Function_v4float Function %9
+               OpStore %x %int_4
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %x
+         %32 = OpSGreaterThanEqual %bool %30 %int_1
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpBranch %34
+         %36 = OpLabel
+               OpBranch %27
+         %34 = OpLabel
+         %37 = OpLoad %int %x
+         %39 = OpAccessChain %_ptr_Function_float %matrix_u %37
+               OpStore %39 %float_1
+               OpBranch %28
+         %28 = OpLabel
+         %41 = OpLoad %int %x
+         %42 = OpISub %int %41 %int_1
+               OpStore %x %42
+               OpBranch %26
+         %27 = OpLabel
+               OpStore %b %int_4
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranch %46
+         %46 = OpLabel
+         %51 = OpAccessChain %_ptr_Uniform_float %x_8 %uint_0 %int_0 %uint_0
+         %52 = OpLoad %float %51
+         %54 = OpFOrdLessThan %bool %52 %float_n1
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %44
+         %55 = OpLabel
+         %58 = OpLoad %int %b
+         %59 = OpLoad %int %b
+         %60 = OpSGreaterThan %bool %59 %int_1
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %63
+         %62 = OpLabel
+         %64 = OpLoad %v4float %matrix_b
+         %65 = OpLoad %v4float %matrix_b
+         %66 = OpExtInst %v4float %67 NMin %64 %65
+               OpStore %x_42 %66
+               OpBranch %61
+         %63 = OpLabel
+         %68 = OpLoad %v4float %matrix_u
+               OpStore %x_42 %68
+               OpBranch %61
+         %61 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %x_42 %uint_1
+         %71 = OpLoad %float %70
+         %72 = OpAccessChain %_ptr_Function_float %matrix_b %58
+               OpStore %72 %71
+               OpBranch %45
+         %45 = OpLabel
+         %73 = OpLoad %int %b
+         %74 = OpISub %int %73 %int_1
+               OpStore %b %74
+               OpBranch %43
+         %44 = OpLabel
+               OpStore %x_GLF_color %76
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %77
+%tint_symbol = OpFunctionParameter %main_out
+         %81 = OpLabel
+         %82 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %82
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %84 = OpLabel
+         %85 = OpFunctionCall %void %main_1
+         %87 = OpLoad %v4float %x_GLF_color
+         %88 = OpCompositeConstruct %main_out %87
+         %86 = OpFunctionCall %void %tint_symbol_2 %88
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..71733dd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.wgsl
@@ -0,0 +1,69 @@
+[[block]]
+struct buf0 {
+  matrix_a_uni : mat4x4<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x : i32;
+  var matrix_u : vec4<f32>;
+  var b : i32;
+  var matrix_b : vec4<f32>;
+  var x_42 : vec4<f32>;
+  x = 4;
+  loop {
+    let x_10 : i32 = x;
+    if ((x_10 >= 1)) {
+    } else {
+      break;
+    }
+    let x_11 : i32 = x;
+    matrix_u[x_11] = 1.0;
+
+    continuing {
+      let x_12 : i32 = x;
+      x = (x_12 - 1);
+    }
+  }
+  b = 4;
+  loop {
+    let x_55 : f32 = x_8.matrix_a_uni[0].x;
+    if ((x_55 < -1.0)) {
+    } else {
+      break;
+    }
+    let x_14 : i32 = b;
+    let x_15 : i32 = b;
+    if ((x_15 > 1)) {
+      let x_62 : vec4<f32> = matrix_b;
+      let x_63 : vec4<f32> = matrix_b;
+      x_42 = min(x_62, x_63);
+    } else {
+      let x_65 : vec4<f32> = matrix_u;
+      x_42 = x_65;
+    }
+    let x_67 : f32 = x_42.y;
+    matrix_b[x_14] = x_67;
+
+    continuing {
+      let x_16 : i32 = b;
+      b = (x_16 - 1);
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm
new file mode 100644
index 0000000..5657c00
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm
@@ -0,0 +1,84 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %StructType "StructType"
+               OpMemberName %StructType 0 "col"
+               OpMemberName %StructType 1 "bbbb"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+    %v3float = OpTypeVector %float 3
+     %v4bool = OpTypeVector %bool 4
+ %StructType = OpTypeStruct %v3float %v4bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %26 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %30 = OpUndef %StructType
+       %main = OpFunction %void None %12
+         %31 = OpLabel
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpPhi %StructType %30 %31 %34 %35
+          %9 = OpPhi %int %int_0 %31 %7 %35
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %37 = OpLoad %float %36
+         %38 = OpConvertFToS %int %37
+         %39 = OpSLessThan %bool %9 %38
+               OpLoopMerge %40 %35 None
+               OpBranchConditional %39 %35 %40
+         %35 = OpLabel
+         %34 = OpCompositeInsert %StructType %26 %33 0
+          %7 = OpIAdd %int %9 %int_1
+               OpBranch %32
+         %40 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %42 = OpPhi %StructType %33 %40 %43 %44
+         %10 = OpPhi %int %int_0 %40 %8 %44
+         %45 = OpSLessThan %bool %10 %38
+               OpLoopMerge %46 %44 None
+               OpBranchConditional %45 %44 %46
+         %44 = OpLabel
+         %43 = OpCompositeInsert %StructType %26 %42 0
+          %8 = OpIAdd %int %10 %int_1
+               OpBranch %41
+         %46 = OpLabel
+         %47 = OpCompositeExtract %v3float %42 0
+         %48 = OpCompositeExtract %float %47 0
+         %49 = OpCompositeExtract %float %47 1
+         %50 = OpCompositeExtract %float %47 2
+         %51 = OpCompositeConstruct %v4float %48 %49 %50 %float_1
+               OpStore %_GLF_color %51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..3a00c14
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.hlsl
@@ -0,0 +1,77 @@
+struct StructType {
+  float3 col;
+  bool4 bbbb;
+};
+
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  StructType x_33 = (StructType)0;
+  int x_38 = 0;
+  StructType x_42 = (StructType)0;
+  StructType x_33_phi = (StructType)0;
+  int x_9_phi = 0;
+  StructType x_42_phi = (StructType)0;
+  int x_10_phi = 0;
+  const StructType tint_symbol_3 = {float3(0.0f, 0.0f, 0.0f), bool4(false, false, false, false)};
+  x_33_phi = tint_symbol_3;
+  x_9_phi = 0;
+  while (true) {
+    StructType x_34 = (StructType)0;
+    int x_7 = 0;
+    x_33 = x_33_phi;
+    const int x_9 = x_9_phi;
+    const float x_37 = asfloat(x_5[0].y);
+    x_38 = int(x_37);
+    if ((x_9 < x_38)) {
+    } else {
+      break;
+    }
+    {
+      x_34 = x_33;
+      x_34.col = float3(1.0f, 0.0f, 0.0f);
+      x_7 = (x_9 + 1);
+      x_33_phi = x_34;
+      x_9_phi = x_7;
+    }
+  }
+  x_42_phi = x_33;
+  x_10_phi = 0;
+  while (true) {
+    StructType x_43 = (StructType)0;
+    int x_8 = 0;
+    x_42 = x_42_phi;
+    const int x_10 = x_10_phi;
+    if ((x_10 < x_38)) {
+    } else {
+      break;
+    }
+    {
+      x_43 = x_42;
+      x_43.col = float3(1.0f, 0.0f, 0.0f);
+      x_8 = (x_10 + 1);
+      x_42_phi = x_43;
+      x_10_phi = x_8;
+    }
+  }
+  const float3 x_47 = x_42.col;
+  x_GLF_color = float4(x_47.x, x_47.y, x_47.z, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.msl
new file mode 100644
index 0000000..51c44be
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct StructType {
+  float3 col;
+  bool4 bbbb;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_5) {
+  StructType x_33 = {};
+  int x_38 = 0;
+  StructType x_42 = {};
+  StructType x_33_phi = {};
+  int x_9_phi = 0;
+  StructType x_42_phi = {};
+  int x_10_phi = 0;
+  StructType const tint_symbol_3 = {.col=float3(0.0f, 0.0f, 0.0f), .bbbb=bool4(false, false, false, false)};
+  x_33_phi = tint_symbol_3;
+  x_9_phi = 0;
+  while (true) {
+    StructType x_34 = {};
+    int x_7 = 0;
+    x_33 = x_33_phi;
+    int const x_9 = x_9_phi;
+    float const x_37 = x_5.injectionSwitch.y;
+    x_38 = int(x_37);
+    if ((x_9 < x_38)) {
+    } else {
+      break;
+    }
+    {
+      x_34 = x_33;
+      x_34.col = float3(1.0f, 0.0f, 0.0f);
+      x_7 = (x_9 + 1);
+      x_33_phi = x_34;
+      x_9_phi = x_7;
+    }
+  }
+  x_42_phi = x_33;
+  x_10_phi = 0;
+  while (true) {
+    StructType x_43 = {};
+    int x_8 = 0;
+    x_42 = x_42_phi;
+    int const x_10 = x_10_phi;
+    if ((x_10 < x_38)) {
+    } else {
+      break;
+    }
+    {
+      x_43 = x_42;
+      x_43.col = float3(1.0f, 0.0f, 0.0f);
+      x_8 = (x_10 + 1);
+      x_42_phi = x_43;
+      x_10_phi = x_8;
+    }
+  }
+  float3 const x_47 = x_42.col;
+  *(tint_symbol_5) = float4(x_47.x, x_47.y, x_47.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_5, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..c14f116
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.spvasm
@@ -0,0 +1,189 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 104
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %StructType "StructType"
+               OpMemberName %StructType 0 "col"
+               OpMemberName %StructType 1 "bbbb"
+               OpName %x_33 "x_33"
+               OpName %x_38 "x_38"
+               OpName %x_42 "x_42"
+               OpName %x_33_phi "x_33_phi"
+               OpName %x_9_phi "x_9_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %x_10_phi "x_10_phi"
+               OpName %x_34 "x_34"
+               OpName %x_7 "x_7"
+               OpName %x_43 "x_43"
+               OpName %x_8 "x_8"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %StructType 0 Offset 0
+               OpMemberDecorate %StructType 1 Offset 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+       %bool = OpTypeBool
+     %v4bool = OpTypeVector %bool 4
+ %StructType = OpTypeStruct %v3float %v4bool
+%_ptr_Function_StructType = OpTypePointer Function %StructType
+         %22 = OpConstantNull %StructType
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+         %35 = OpConstantComposite %v4bool %false %false %false %false
+         %36 = OpConstantComposite %StructType %33 %35
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_1 = OpConstant %float 1
+         %62 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %92 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_33 = OpVariable %_ptr_Function_StructType Function %22
+       %x_38 = OpVariable %_ptr_Function_int Function %26
+       %x_42 = OpVariable %_ptr_Function_StructType Function %22
+   %x_33_phi = OpVariable %_ptr_Function_StructType Function %22
+    %x_9_phi = OpVariable %_ptr_Function_int Function %26
+   %x_42_phi = OpVariable %_ptr_Function_StructType Function %22
+   %x_10_phi = OpVariable %_ptr_Function_int Function %26
+       %x_34 = OpVariable %_ptr_Function_StructType Function %22
+        %x_7 = OpVariable %_ptr_Function_int Function %26
+       %x_43 = OpVariable %_ptr_Function_StructType Function %22
+        %x_8 = OpVariable %_ptr_Function_int Function %26
+               OpStore %x_33_phi %36
+               OpStore %x_9_phi %int_0
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %44 = OpLoad %StructType %x_33_phi
+               OpStore %x_33 %44
+         %45 = OpLoad %int %x_9_phi
+         %50 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %51 = OpLoad %float %50
+         %52 = OpConvertFToS %int %51
+               OpStore %x_38 %52
+         %53 = OpLoad %int %x_38
+         %54 = OpSLessThan %bool %45 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %39
+         %55 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %58 = OpLoad %StructType %x_33
+               OpStore %x_34 %58
+         %60 = OpAccessChain %_ptr_Function_v3float %x_34 %uint_0
+               OpStore %60 %62
+         %64 = OpIAdd %int %45 %int_1
+               OpStore %x_7 %64
+         %65 = OpLoad %StructType %x_34
+               OpStore %x_33_phi %65
+         %66 = OpLoad %int %x_7
+               OpStore %x_9_phi %66
+               OpBranch %38
+         %39 = OpLabel
+         %67 = OpLoad %StructType %x_33
+               OpStore %x_42_phi %67
+               OpStore %x_10_phi %int_0
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %74 = OpLoad %StructType %x_42_phi
+               OpStore %x_42 %74
+         %75 = OpLoad %int %x_10_phi
+         %76 = OpLoad %int %x_38
+         %77 = OpSLessThan %bool %75 %76
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %69
+         %78 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+         %81 = OpLoad %StructType %x_42
+               OpStore %x_43 %81
+         %82 = OpAccessChain %_ptr_Function_v3float %x_43 %uint_0
+               OpStore %82 %62
+         %83 = OpIAdd %int %75 %int_1
+               OpStore %x_8 %83
+         %84 = OpLoad %StructType %x_43
+               OpStore %x_42_phi %84
+         %85 = OpLoad %int %x_8
+               OpStore %x_10_phi %85
+               OpBranch %68
+         %69 = OpLabel
+         %86 = OpAccessChain %_ptr_Function_v3float %x_42 %uint_0
+         %87 = OpLoad %v3float %86
+         %88 = OpCompositeExtract %float %87 0
+         %89 = OpCompositeExtract %float %87 1
+         %90 = OpCompositeExtract %float %87 2
+         %91 = OpCompositeConstruct %v4float %88 %89 %90 %float_1
+               OpStore %x_GLF_color %91
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %92
+%tint_symbol = OpFunctionParameter %main_out
+         %96 = OpLabel
+         %97 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %97
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %99 = OpLabel
+        %100 = OpFunctionCall %void %main_1
+        %102 = OpLoad %v4float %x_GLF_color
+        %103 = OpCompositeConstruct %main_out %102
+        %101 = OpFunctionCall %void %tint_symbol_2 %103
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..187ea36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.spvasm.expected.wgsl
@@ -0,0 +1,79 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+struct StructType {
+  col : vec3<f32>;
+  bbbb : vec4<bool>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_33 : StructType;
+  var x_38 : i32;
+  var x_42 : StructType;
+  var x_33_phi : StructType;
+  var x_9_phi : i32;
+  var x_42_phi : StructType;
+  var x_10_phi : i32;
+  x_33_phi = StructType(vec3<f32>(0.0, 0.0, 0.0), vec4<bool>(false, false, false, false));
+  x_9_phi = 0;
+  loop {
+    var x_34 : StructType;
+    var x_7 : i32;
+    x_33 = x_33_phi;
+    let x_9 : i32 = x_9_phi;
+    let x_37 : f32 = x_5.injectionSwitch.y;
+    x_38 = i32(x_37);
+    if ((x_9 < x_38)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_34 = x_33;
+      x_34.col = vec3<f32>(1.0, 0.0, 0.0);
+      x_7 = (x_9 + 1);
+      x_33_phi = x_34;
+      x_9_phi = x_7;
+    }
+  }
+  x_42_phi = x_33;
+  x_10_phi = 0;
+  loop {
+    var x_43 : StructType;
+    var x_8 : i32;
+    x_42 = x_42_phi;
+    let x_10 : i32 = x_10_phi;
+    if ((x_10 < x_38)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_43 = x_42;
+      x_43.col = vec3<f32>(1.0, 0.0, 0.0);
+      x_8 = (x_10 + 1);
+      x_42_phi = x_43;
+      x_10_phi = x_8;
+    }
+  }
+  let x_47 : vec3<f32> = x_42.col;
+  x_GLF_color = vec4<f32>(x_47.x, x_47.y, x_47.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
new file mode 100644
index 0000000..187ea36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
@@ -0,0 +1,79 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+struct StructType {
+  col : vec3<f32>;
+  bbbb : vec4<bool>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_33 : StructType;
+  var x_38 : i32;
+  var x_42 : StructType;
+  var x_33_phi : StructType;
+  var x_9_phi : i32;
+  var x_42_phi : StructType;
+  var x_10_phi : i32;
+  x_33_phi = StructType(vec3<f32>(0.0, 0.0, 0.0), vec4<bool>(false, false, false, false));
+  x_9_phi = 0;
+  loop {
+    var x_34 : StructType;
+    var x_7 : i32;
+    x_33 = x_33_phi;
+    let x_9 : i32 = x_9_phi;
+    let x_37 : f32 = x_5.injectionSwitch.y;
+    x_38 = i32(x_37);
+    if ((x_9 < x_38)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_34 = x_33;
+      x_34.col = vec3<f32>(1.0, 0.0, 0.0);
+      x_7 = (x_9 + 1);
+      x_33_phi = x_34;
+      x_9_phi = x_7;
+    }
+  }
+  x_42_phi = x_33;
+  x_10_phi = 0;
+  loop {
+    var x_43 : StructType;
+    var x_8 : i32;
+    x_42 = x_42_phi;
+    let x_10 : i32 = x_10_phi;
+    if ((x_10 < x_38)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_43 = x_42;
+      x_43.col = vec3<f32>(1.0, 0.0, 0.0);
+      x_8 = (x_10 + 1);
+      x_42_phi = x_43;
+      x_10_phi = x_8;
+    }
+  }
+  let x_47 : vec3<f32> = x_42.col;
+  x_GLF_color = vec4<f32>(x_47.x, x_47.y, x_47.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..3a00c14
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.hlsl
@@ -0,0 +1,77 @@
+struct StructType {
+  float3 col;
+  bool4 bbbb;
+};
+
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  StructType x_33 = (StructType)0;
+  int x_38 = 0;
+  StructType x_42 = (StructType)0;
+  StructType x_33_phi = (StructType)0;
+  int x_9_phi = 0;
+  StructType x_42_phi = (StructType)0;
+  int x_10_phi = 0;
+  const StructType tint_symbol_3 = {float3(0.0f, 0.0f, 0.0f), bool4(false, false, false, false)};
+  x_33_phi = tint_symbol_3;
+  x_9_phi = 0;
+  while (true) {
+    StructType x_34 = (StructType)0;
+    int x_7 = 0;
+    x_33 = x_33_phi;
+    const int x_9 = x_9_phi;
+    const float x_37 = asfloat(x_5[0].y);
+    x_38 = int(x_37);
+    if ((x_9 < x_38)) {
+    } else {
+      break;
+    }
+    {
+      x_34 = x_33;
+      x_34.col = float3(1.0f, 0.0f, 0.0f);
+      x_7 = (x_9 + 1);
+      x_33_phi = x_34;
+      x_9_phi = x_7;
+    }
+  }
+  x_42_phi = x_33;
+  x_10_phi = 0;
+  while (true) {
+    StructType x_43 = (StructType)0;
+    int x_8 = 0;
+    x_42 = x_42_phi;
+    const int x_10 = x_10_phi;
+    if ((x_10 < x_38)) {
+    } else {
+      break;
+    }
+    {
+      x_43 = x_42;
+      x_43.col = float3(1.0f, 0.0f, 0.0f);
+      x_8 = (x_10 + 1);
+      x_42_phi = x_43;
+      x_10_phi = x_8;
+    }
+  }
+  const float3 x_47 = x_42.col;
+  x_GLF_color = float4(x_47.x, x_47.y, x_47.z, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.msl
new file mode 100644
index 0000000..51c44be
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.msl
@@ -0,0 +1,79 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct StructType {
+  float3 col;
+  bool4 bbbb;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_5) {
+  StructType x_33 = {};
+  int x_38 = 0;
+  StructType x_42 = {};
+  StructType x_33_phi = {};
+  int x_9_phi = 0;
+  StructType x_42_phi = {};
+  int x_10_phi = 0;
+  StructType const tint_symbol_3 = {.col=float3(0.0f, 0.0f, 0.0f), .bbbb=bool4(false, false, false, false)};
+  x_33_phi = tint_symbol_3;
+  x_9_phi = 0;
+  while (true) {
+    StructType x_34 = {};
+    int x_7 = 0;
+    x_33 = x_33_phi;
+    int const x_9 = x_9_phi;
+    float const x_37 = x_5.injectionSwitch.y;
+    x_38 = int(x_37);
+    if ((x_9 < x_38)) {
+    } else {
+      break;
+    }
+    {
+      x_34 = x_33;
+      x_34.col = float3(1.0f, 0.0f, 0.0f);
+      x_7 = (x_9 + 1);
+      x_33_phi = x_34;
+      x_9_phi = x_7;
+    }
+  }
+  x_42_phi = x_33;
+  x_10_phi = 0;
+  while (true) {
+    StructType x_43 = {};
+    int x_8 = 0;
+    x_42 = x_42_phi;
+    int const x_10 = x_10_phi;
+    if ((x_10 < x_38)) {
+    } else {
+      break;
+    }
+    {
+      x_43 = x_42;
+      x_43.col = float3(1.0f, 0.0f, 0.0f);
+      x_8 = (x_10 + 1);
+      x_42_phi = x_43;
+      x_10_phi = x_8;
+    }
+  }
+  float3 const x_47 = x_42.col;
+  *(tint_symbol_5) = float4(x_47.x, x_47.y, x_47.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_5, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..c14f116
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.spvasm
@@ -0,0 +1,189 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 104
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %StructType "StructType"
+               OpMemberName %StructType 0 "col"
+               OpMemberName %StructType 1 "bbbb"
+               OpName %x_33 "x_33"
+               OpName %x_38 "x_38"
+               OpName %x_42 "x_42"
+               OpName %x_33_phi "x_33_phi"
+               OpName %x_9_phi "x_9_phi"
+               OpName %x_42_phi "x_42_phi"
+               OpName %x_10_phi "x_10_phi"
+               OpName %x_34 "x_34"
+               OpName %x_7 "x_7"
+               OpName %x_43 "x_43"
+               OpName %x_8 "x_8"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %StructType 0 Offset 0
+               OpMemberDecorate %StructType 1 Offset 16
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+       %bool = OpTypeBool
+     %v4bool = OpTypeVector %bool 4
+ %StructType = OpTypeStruct %v3float %v4bool
+%_ptr_Function_StructType = OpTypePointer Function %StructType
+         %22 = OpConstantNull %StructType
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %26 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %33 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+      %false = OpConstantFalse %bool
+         %35 = OpConstantComposite %v4bool %false %false %false %false
+         %36 = OpConstantComposite %StructType %33 %35
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+    %float_1 = OpConstant %float 1
+         %62 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %92 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_33 = OpVariable %_ptr_Function_StructType Function %22
+       %x_38 = OpVariable %_ptr_Function_int Function %26
+       %x_42 = OpVariable %_ptr_Function_StructType Function %22
+   %x_33_phi = OpVariable %_ptr_Function_StructType Function %22
+    %x_9_phi = OpVariable %_ptr_Function_int Function %26
+   %x_42_phi = OpVariable %_ptr_Function_StructType Function %22
+   %x_10_phi = OpVariable %_ptr_Function_int Function %26
+       %x_34 = OpVariable %_ptr_Function_StructType Function %22
+        %x_7 = OpVariable %_ptr_Function_int Function %26
+       %x_43 = OpVariable %_ptr_Function_StructType Function %22
+        %x_8 = OpVariable %_ptr_Function_int Function %26
+               OpStore %x_33_phi %36
+               OpStore %x_9_phi %int_0
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+         %44 = OpLoad %StructType %x_33_phi
+               OpStore %x_33 %44
+         %45 = OpLoad %int %x_9_phi
+         %50 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %51 = OpLoad %float %50
+         %52 = OpConvertFToS %int %51
+               OpStore %x_38 %52
+         %53 = OpLoad %int %x_38
+         %54 = OpSLessThan %bool %45 %53
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpBranch %55
+         %57 = OpLabel
+               OpBranch %39
+         %55 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %58 = OpLoad %StructType %x_33
+               OpStore %x_34 %58
+         %60 = OpAccessChain %_ptr_Function_v3float %x_34 %uint_0
+               OpStore %60 %62
+         %64 = OpIAdd %int %45 %int_1
+               OpStore %x_7 %64
+         %65 = OpLoad %StructType %x_34
+               OpStore %x_33_phi %65
+         %66 = OpLoad %int %x_7
+               OpStore %x_9_phi %66
+               OpBranch %38
+         %39 = OpLabel
+         %67 = OpLoad %StructType %x_33
+               OpStore %x_42_phi %67
+               OpStore %x_10_phi %int_0
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %74 = OpLoad %StructType %x_42_phi
+               OpStore %x_42 %74
+         %75 = OpLoad %int %x_10_phi
+         %76 = OpLoad %int %x_38
+         %77 = OpSLessThan %bool %75 %76
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+               OpBranch %69
+         %78 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+         %81 = OpLoad %StructType %x_42
+               OpStore %x_43 %81
+         %82 = OpAccessChain %_ptr_Function_v3float %x_43 %uint_0
+               OpStore %82 %62
+         %83 = OpIAdd %int %75 %int_1
+               OpStore %x_8 %83
+         %84 = OpLoad %StructType %x_43
+               OpStore %x_42_phi %84
+         %85 = OpLoad %int %x_8
+               OpStore %x_10_phi %85
+               OpBranch %68
+         %69 = OpLabel
+         %86 = OpAccessChain %_ptr_Function_v3float %x_42 %uint_0
+         %87 = OpLoad %v3float %86
+         %88 = OpCompositeExtract %float %87 0
+         %89 = OpCompositeExtract %float %87 1
+         %90 = OpCompositeExtract %float %87 2
+         %91 = OpCompositeConstruct %v4float %88 %89 %90 %float_1
+               OpStore %x_GLF_color %91
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %92
+%tint_symbol = OpFunctionParameter %main_out
+         %96 = OpLabel
+         %97 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %97
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %99 = OpLabel
+        %100 = OpFunctionCall %void %main_1
+        %102 = OpLoad %v4float %x_GLF_color
+        %103 = OpCompositeConstruct %main_out %102
+        %101 = OpFunctionCall %void %tint_symbol_2 %103
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..187ea36
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl.expected.wgsl
@@ -0,0 +1,79 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+struct StructType {
+  col : vec3<f32>;
+  bbbb : vec4<bool>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_33 : StructType;
+  var x_38 : i32;
+  var x_42 : StructType;
+  var x_33_phi : StructType;
+  var x_9_phi : i32;
+  var x_42_phi : StructType;
+  var x_10_phi : i32;
+  x_33_phi = StructType(vec3<f32>(0.0, 0.0, 0.0), vec4<bool>(false, false, false, false));
+  x_9_phi = 0;
+  loop {
+    var x_34 : StructType;
+    var x_7 : i32;
+    x_33 = x_33_phi;
+    let x_9 : i32 = x_9_phi;
+    let x_37 : f32 = x_5.injectionSwitch.y;
+    x_38 = i32(x_37);
+    if ((x_9 < x_38)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_34 = x_33;
+      x_34.col = vec3<f32>(1.0, 0.0, 0.0);
+      x_7 = (x_9 + 1);
+      x_33_phi = x_34;
+      x_9_phi = x_7;
+    }
+  }
+  x_42_phi = x_33;
+  x_10_phi = 0;
+  loop {
+    var x_43 : StructType;
+    var x_8 : i32;
+    x_42 = x_42_phi;
+    let x_10 : i32 = x_10_phi;
+    if ((x_10 < x_38)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      x_43 = x_42;
+      x_43.col = vec3<f32>(1.0, 0.0, 0.0);
+      x_8 = (x_10 + 1);
+      x_42_phi = x_43;
+      x_10_phi = x_8;
+    }
+  }
+  let x_47 : vec3<f32> = x_42.col;
+  x_GLF_color = vec4<f32>(x_47.x, x_47.y, x_47.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm
new file mode 100644
index 0000000..f71423f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm
@@ -0,0 +1,127 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %GLF_live15c "GLF_live15c"
+               OpName %GLF_live15i "GLF_live15i"
+               OpName %GLF_live15d "GLF_live15d"
+               OpName %GLF_live15i_0 "GLF_live15i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %GLF_live15i RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %12 RelaxedPrecision
+               OpDecorate %GLF_live15i_0 RelaxedPrecision
+               OpDecorate %13 RelaxedPrecision
+               OpDecorate %14 RelaxedPrecision
+               OpDecorate %15 RelaxedPrecision
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %37 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %19
+         %38 = OpLabel
+%GLF_live15c = OpVariable %_ptr_Function_v4float Function
+%GLF_live15i = OpVariable %_ptr_Function_int Function
+%GLF_live15d = OpVariable %_ptr_Function_v4float Function
+%GLF_live15i_0 = OpVariable %_ptr_Function_int Function
+               OpStore %GLF_live15c %24
+               OpStore %GLF_live15i %int_0
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+          %8 = OpLoad %int %GLF_live15i
+         %43 = OpSLessThan %bool %8 %int_4
+               OpBranchConditional %43 %44 %40
+         %44 = OpLabel
+          %9 = OpLoad %int %GLF_live15i
+         %45 = OpSGreaterThanEqual %bool %9 %int_3
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpBranch %40
+         %46 = OpLabel
+         %48 = OpAccessChain %_ptr_Function_float %GLF_live15c %uint_1
+         %49 = OpLoad %float %48
+         %50 = OpFOrdGreaterThanEqual %bool %49 %float_1
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %52 %51
+         %52 = OpLabel
+         %10 = OpLoad %int %GLF_live15i
+         %53 = OpAccessChain %_ptr_Function_float %GLF_live15c %10
+               OpStore %53 %float_1
+               OpBranch %51
+         %51 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %11 = OpLoad %int %GLF_live15i
+         %12 = OpIAdd %int %11 %int_1
+               OpStore %GLF_live15i %12
+               OpBranch %39
+         %40 = OpLabel
+               OpStore %GLF_live15d %24
+               OpStore %GLF_live15i_0 %int_0
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %13 = OpLoad %int %GLF_live15i_0
+         %58 = OpSLessThan %bool %13 %int_4
+               OpBranchConditional %58 %59 %55
+         %59 = OpLabel
+         %14 = OpLoad %int %GLF_live15i_0
+         %60 = OpSGreaterThanEqual %bool %14 %int_3
+               OpSelectionMerge %61 None
+               OpBranchConditional %60 %62 %61
+         %62 = OpLabel
+               OpBranch %55
+         %61 = OpLabel
+         %63 = OpAccessChain %_ptr_Function_float %GLF_live15d %uint_1
+         %64 = OpLoad %float %63
+         %65 = OpFOrdGreaterThanEqual %bool %64 %float_1
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %66
+         %67 = OpLabel
+         %15 = OpLoad %int %GLF_live15i_0
+         %68 = OpAccessChain %_ptr_Function_float %GLF_live15d %15
+               OpStore %68 %float_1
+               OpBranch %66
+         %66 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+         %16 = OpLoad %int %GLF_live15i_0
+         %17 = OpIAdd %int %16 %int_1
+               OpStore %GLF_live15i_0 %17
+               OpBranch %54
+         %55 = OpLabel
+               OpStore %_GLF_color %37
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..55bac3a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,54 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 GLF_live15c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int GLF_live15i = 0;
+  float4 GLF_live15d = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int GLF_live15i_1 = 0;
+  GLF_live15c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  GLF_live15i = 0;
+  {
+    for(; (GLF_live15i < 4); GLF_live15i = (GLF_live15i + 1)) {
+      if ((GLF_live15i >= 3)) {
+        break;
+      }
+      const float x_49 = GLF_live15c.y;
+      if ((x_49 >= 1.0f)) {
+        set_float4(GLF_live15c, GLF_live15i, 1.0f);
+      }
+    }
+  }
+  GLF_live15d = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  GLF_live15i_1 = 0;
+  {
+    for(; (GLF_live15i_1 < 4); GLF_live15i_1 = (GLF_live15i_1 + 1)) {
+      if ((GLF_live15i_1 >= 3)) {
+        break;
+      }
+      const float x_64 = GLF_live15d.y;
+      if ((x_64 >= 1.0f)) {
+        set_float4(GLF_live15d, GLF_live15i_1, 1.0f);
+      }
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..afbd08f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4 GLF_live15c = 0.0f;
+  int GLF_live15i = 0;
+  float4 GLF_live15d = 0.0f;
+  int GLF_live15i_1 = 0;
+  GLF_live15c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  GLF_live15i = 0;
+  while (true) {
+    int const x_8 = GLF_live15i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+    int const x_9 = GLF_live15i;
+    if ((x_9 >= 3)) {
+      break;
+    }
+    float const x_49 = GLF_live15c.y;
+    if ((x_49 >= 1.0f)) {
+      int const x_10 = GLF_live15i;
+      GLF_live15c[x_10] = 1.0f;
+    }
+    {
+      int const x_11 = GLF_live15i;
+      GLF_live15i = (x_11 + 1);
+    }
+  }
+  GLF_live15d = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  GLF_live15i_1 = 0;
+  while (true) {
+    int const x_13 = GLF_live15i_1;
+    if ((x_13 < 4)) {
+    } else {
+      break;
+    }
+    int const x_14 = GLF_live15i_1;
+    if ((x_14 >= 3)) {
+      break;
+    }
+    float const x_64 = GLF_live15d.y;
+    if ((x_64 >= 1.0f)) {
+      int const x_15 = GLF_live15i_1;
+      GLF_live15d[x_15] = 1.0f;
+    }
+    {
+      int const x_16 = GLF_live15i_1;
+      GLF_live15i_1 = (x_16 + 1);
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9128fc2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,156 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 88
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %GLF_live15c "GLF_live15c"
+               OpName %GLF_live15i "GLF_live15i"
+               OpName %GLF_live15d "GLF_live15d"
+               OpName %GLF_live15i_1 "GLF_live15i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %17 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+         %75 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %76 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+%GLF_live15c = OpVariable %_ptr_Function_v4float Function %5
+%GLF_live15i = OpVariable %_ptr_Function_int Function %17
+%GLF_live15d = OpVariable %_ptr_Function_v4float Function %5
+%GLF_live15i_1 = OpVariable %_ptr_Function_int Function %17
+               OpStore %GLF_live15c %21
+               OpStore %GLF_live15i %int_0
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %GLF_live15i
+         %29 = OpSLessThan %bool %27 %int_4
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %24
+         %31 = OpLabel
+         %34 = OpLoad %int %GLF_live15i
+         %36 = OpSGreaterThanEqual %bool %34 %int_3
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+               OpBranch %24
+         %37 = OpLabel
+         %42 = OpAccessChain %_ptr_Function_float %GLF_live15c %uint_1
+         %43 = OpLoad %float %42
+         %45 = OpFOrdGreaterThanEqual %bool %43 %float_1
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+         %48 = OpLoad %int %GLF_live15i
+         %49 = OpAccessChain %_ptr_Function_float %GLF_live15c %48
+               OpStore %49 %float_1
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %25
+         %25 = OpLabel
+         %50 = OpLoad %int %GLF_live15i
+         %52 = OpIAdd %int %50 %int_1
+               OpStore %GLF_live15i %52
+               OpBranch %23
+         %24 = OpLabel
+               OpStore %GLF_live15d %21
+               OpStore %GLF_live15i_1 %int_0
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %int %GLF_live15i_1
+         %58 = OpSLessThan %bool %57 %int_4
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpBranch %59
+         %61 = OpLabel
+               OpBranch %54
+         %59 = OpLabel
+         %62 = OpLoad %int %GLF_live15i_1
+         %63 = OpSGreaterThanEqual %bool %62 %int_3
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %54
+         %64 = OpLabel
+         %66 = OpAccessChain %_ptr_Function_float %GLF_live15d %uint_1
+         %67 = OpLoad %float %66
+         %68 = OpFOrdGreaterThanEqual %bool %67 %float_1
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpLoad %int %GLF_live15i_1
+         %72 = OpAccessChain %_ptr_Function_float %GLF_live15d %71
+               OpStore %72 %float_1
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %73 = OpLoad %int %GLF_live15i_1
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %GLF_live15i_1 %74
+               OpBranch %53
+         %54 = OpLabel
+               OpStore %x_GLF_color %75
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %76
+%tint_symbol = OpFunctionParameter %main_out
+         %80 = OpLabel
+         %81 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %81
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %83 = OpLabel
+         %84 = OpFunctionCall %void %main_1
+         %86 = OpLoad %v4float %x_GLF_color
+         %87 = OpCompositeConstruct %main_out %86
+         %85 = OpFunctionCall %void %tint_symbol_2 %87
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a5541a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,67 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var GLF_live15c : vec4<f32>;
+  var GLF_live15i : i32;
+  var GLF_live15d : vec4<f32>;
+  var GLF_live15i_1 : i32;
+  GLF_live15c = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  GLF_live15i = 0;
+  loop {
+    let x_8 : i32 = GLF_live15i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+    let x_9 : i32 = GLF_live15i;
+    if ((x_9 >= 3)) {
+      break;
+    }
+    let x_49 : f32 = GLF_live15c.y;
+    if ((x_49 >= 1.0)) {
+      let x_10 : i32 = GLF_live15i;
+      GLF_live15c[x_10] = 1.0;
+    }
+
+    continuing {
+      let x_11 : i32 = GLF_live15i;
+      GLF_live15i = (x_11 + 1);
+    }
+  }
+  GLF_live15d = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  GLF_live15i_1 = 0;
+  loop {
+    let x_13 : i32 = GLF_live15i_1;
+    if ((x_13 < 4)) {
+    } else {
+      break;
+    }
+    let x_14 : i32 = GLF_live15i_1;
+    if ((x_14 >= 3)) {
+      break;
+    }
+    let x_64 : f32 = GLF_live15d.y;
+    if ((x_64 >= 1.0)) {
+      let x_15 : i32 = GLF_live15i_1;
+      GLF_live15d[x_15] = 1.0;
+    }
+
+    continuing {
+      let x_16 : i32 = GLF_live15i_1;
+      GLF_live15i_1 = (x_16 + 1);
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
new file mode 100644
index 0000000..a5541a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
@@ -0,0 +1,67 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var GLF_live15c : vec4<f32>;
+  var GLF_live15i : i32;
+  var GLF_live15d : vec4<f32>;
+  var GLF_live15i_1 : i32;
+  GLF_live15c = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  GLF_live15i = 0;
+  loop {
+    let x_8 : i32 = GLF_live15i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+    let x_9 : i32 = GLF_live15i;
+    if ((x_9 >= 3)) {
+      break;
+    }
+    let x_49 : f32 = GLF_live15c.y;
+    if ((x_49 >= 1.0)) {
+      let x_10 : i32 = GLF_live15i;
+      GLF_live15c[x_10] = 1.0;
+    }
+
+    continuing {
+      let x_11 : i32 = GLF_live15i;
+      GLF_live15i = (x_11 + 1);
+    }
+  }
+  GLF_live15d = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  GLF_live15i_1 = 0;
+  loop {
+    let x_13 : i32 = GLF_live15i_1;
+    if ((x_13 < 4)) {
+    } else {
+      break;
+    }
+    let x_14 : i32 = GLF_live15i_1;
+    if ((x_14 >= 3)) {
+      break;
+    }
+    let x_64 : f32 = GLF_live15d.y;
+    if ((x_64 >= 1.0)) {
+      let x_15 : i32 = GLF_live15i_1;
+      GLF_live15d[x_15] = 1.0;
+    }
+
+    continuing {
+      let x_16 : i32 = GLF_live15i_1;
+      GLF_live15i_1 = (x_16 + 1);
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..55bac3a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,54 @@
+void set_float4(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float4 GLF_live15c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int GLF_live15i = 0;
+  float4 GLF_live15d = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int GLF_live15i_1 = 0;
+  GLF_live15c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  GLF_live15i = 0;
+  {
+    for(; (GLF_live15i < 4); GLF_live15i = (GLF_live15i + 1)) {
+      if ((GLF_live15i >= 3)) {
+        break;
+      }
+      const float x_49 = GLF_live15c.y;
+      if ((x_49 >= 1.0f)) {
+        set_float4(GLF_live15c, GLF_live15i, 1.0f);
+      }
+    }
+  }
+  GLF_live15d = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  GLF_live15i_1 = 0;
+  {
+    for(; (GLF_live15i_1 < 4); GLF_live15i_1 = (GLF_live15i_1 + 1)) {
+      if ((GLF_live15i_1 >= 3)) {
+        break;
+      }
+      const float x_64 = GLF_live15d.y;
+      if ((x_64 >= 1.0f)) {
+        set_float4(GLF_live15d, GLF_live15i_1, 1.0f);
+      }
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..afbd08f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.msl
@@ -0,0 +1,71 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4 GLF_live15c = 0.0f;
+  int GLF_live15i = 0;
+  float4 GLF_live15d = 0.0f;
+  int GLF_live15i_1 = 0;
+  GLF_live15c = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  GLF_live15i = 0;
+  while (true) {
+    int const x_8 = GLF_live15i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+    int const x_9 = GLF_live15i;
+    if ((x_9 >= 3)) {
+      break;
+    }
+    float const x_49 = GLF_live15c.y;
+    if ((x_49 >= 1.0f)) {
+      int const x_10 = GLF_live15i;
+      GLF_live15c[x_10] = 1.0f;
+    }
+    {
+      int const x_11 = GLF_live15i;
+      GLF_live15i = (x_11 + 1);
+    }
+  }
+  GLF_live15d = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  GLF_live15i_1 = 0;
+  while (true) {
+    int const x_13 = GLF_live15i_1;
+    if ((x_13 < 4)) {
+    } else {
+      break;
+    }
+    int const x_14 = GLF_live15i_1;
+    if ((x_14 >= 3)) {
+      break;
+    }
+    float const x_64 = GLF_live15d.y;
+    if ((x_64 >= 1.0f)) {
+      int const x_15 = GLF_live15i_1;
+      GLF_live15d[x_15] = 1.0f;
+    }
+    {
+      int const x_16 = GLF_live15i_1;
+      GLF_live15i_1 = (x_16 + 1);
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9128fc2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,156 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 88
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %GLF_live15c "GLF_live15c"
+               OpName %GLF_live15i "GLF_live15i"
+               OpName %GLF_live15d "GLF_live15d"
+               OpName %GLF_live15i_1 "GLF_live15i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %17 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+      %int_0 = OpConstant %int 0
+      %int_4 = OpConstant %int 4
+       %bool = OpTypeBool
+      %int_3 = OpConstant %int 3
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+         %75 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %76 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+%GLF_live15c = OpVariable %_ptr_Function_v4float Function %5
+%GLF_live15i = OpVariable %_ptr_Function_int Function %17
+%GLF_live15d = OpVariable %_ptr_Function_v4float Function %5
+%GLF_live15i_1 = OpVariable %_ptr_Function_int Function %17
+               OpStore %GLF_live15c %21
+               OpStore %GLF_live15i %int_0
+               OpBranch %23
+         %23 = OpLabel
+               OpLoopMerge %24 %25 None
+               OpBranch %26
+         %26 = OpLabel
+         %27 = OpLoad %int %GLF_live15i
+         %29 = OpSLessThan %bool %27 %int_4
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %24
+         %31 = OpLabel
+         %34 = OpLoad %int %GLF_live15i
+         %36 = OpSGreaterThanEqual %bool %34 %int_3
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+               OpBranch %24
+         %37 = OpLabel
+         %42 = OpAccessChain %_ptr_Function_float %GLF_live15c %uint_1
+         %43 = OpLoad %float %42
+         %45 = OpFOrdGreaterThanEqual %bool %43 %float_1
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+         %48 = OpLoad %int %GLF_live15i
+         %49 = OpAccessChain %_ptr_Function_float %GLF_live15c %48
+               OpStore %49 %float_1
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %25
+         %25 = OpLabel
+         %50 = OpLoad %int %GLF_live15i
+         %52 = OpIAdd %int %50 %int_1
+               OpStore %GLF_live15i %52
+               OpBranch %23
+         %24 = OpLabel
+               OpStore %GLF_live15d %21
+               OpStore %GLF_live15i_1 %int_0
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %int %GLF_live15i_1
+         %58 = OpSLessThan %bool %57 %int_4
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %61
+         %60 = OpLabel
+               OpBranch %59
+         %61 = OpLabel
+               OpBranch %54
+         %59 = OpLabel
+         %62 = OpLoad %int %GLF_live15i_1
+         %63 = OpSGreaterThanEqual %bool %62 %int_3
+               OpSelectionMerge %64 None
+               OpBranchConditional %63 %65 %64
+         %65 = OpLabel
+               OpBranch %54
+         %64 = OpLabel
+         %66 = OpAccessChain %_ptr_Function_float %GLF_live15d %uint_1
+         %67 = OpLoad %float %66
+         %68 = OpFOrdGreaterThanEqual %bool %67 %float_1
+               OpSelectionMerge %69 None
+               OpBranchConditional %68 %70 %69
+         %70 = OpLabel
+         %71 = OpLoad %int %GLF_live15i_1
+         %72 = OpAccessChain %_ptr_Function_float %GLF_live15d %71
+               OpStore %72 %float_1
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %73 = OpLoad %int %GLF_live15i_1
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %GLF_live15i_1 %74
+               OpBranch %53
+         %54 = OpLabel
+               OpStore %x_GLF_color %75
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %76
+%tint_symbol = OpFunctionParameter %main_out
+         %80 = OpLabel
+         %81 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %81
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %83 = OpLabel
+         %84 = OpFunctionCall %void %main_1
+         %86 = OpLoad %v4float %x_GLF_color
+         %87 = OpCompositeConstruct %main_out %86
+         %85 = OpFunctionCall %void %tint_symbol_2 %87
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a5541a2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,67 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var GLF_live15c : vec4<f32>;
+  var GLF_live15i : i32;
+  var GLF_live15d : vec4<f32>;
+  var GLF_live15i_1 : i32;
+  GLF_live15c = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  GLF_live15i = 0;
+  loop {
+    let x_8 : i32 = GLF_live15i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+    let x_9 : i32 = GLF_live15i;
+    if ((x_9 >= 3)) {
+      break;
+    }
+    let x_49 : f32 = GLF_live15c.y;
+    if ((x_49 >= 1.0)) {
+      let x_10 : i32 = GLF_live15i;
+      GLF_live15c[x_10] = 1.0;
+    }
+
+    continuing {
+      let x_11 : i32 = GLF_live15i;
+      GLF_live15i = (x_11 + 1);
+    }
+  }
+  GLF_live15d = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  GLF_live15i_1 = 0;
+  loop {
+    let x_13 : i32 = GLF_live15i_1;
+    if ((x_13 < 4)) {
+    } else {
+      break;
+    }
+    let x_14 : i32 = GLF_live15i_1;
+    if ((x_14 >= 3)) {
+      break;
+    }
+    let x_64 : f32 = GLF_live15d.y;
+    if ((x_64 >= 1.0)) {
+      let x_15 : i32 = GLF_live15i_1;
+      GLF_live15d[x_15] = 1.0;
+    }
+
+    continuing {
+      let x_16 : i32 = GLF_live15i_1;
+      GLF_live15i_1 = (x_16 + 1);
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm
new file mode 100644
index 0000000..33f273e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm
@@ -0,0 +1,133 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %i_0 "i"
+               OpName %i_1 "i"
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %17 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+   %float_n1 = OpConstant %float -1
+    %int_256 = OpConstant %int 256
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+       %main = OpFunction %void None %11
+         %33 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+        %i_1 = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %17
+               OpStore %i %int_0
+         %34 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %35 = OpLoad %float %34
+         %36 = OpFOrdLessThan %bool %35 %float_0
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+         %40 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %41 %float_n1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpLoopMerge %47 %48 None
+               OpBranch %49
+         %49 = OpLabel
+         %50 = OpLoad %int %i
+         %51 = OpSGreaterThanEqual %bool %50 %int_256
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpBranch %47
+         %52 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpStore %i_0 %int_0
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+         %58 = OpLoad %int %i_0
+         %59 = OpSLessThan %bool %58 %int_1
+               OpLoopMerge %60 %61 None
+               OpBranchConditional %59 %62 %60
+         %62 = OpLabel
+               OpSelectionMerge %63 None
+               OpBranchConditional %42 %64 %63
+         %64 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %65
+         %65 = OpLabel
+         %66 = OpLoad %int %i_1
+         %67 = OpSLessThan %bool %66 %int_1
+               OpLoopMerge %68 %69 None
+               OpBranchConditional %67 %69 %68
+         %69 = OpLabel
+         %70 = OpLoad %int %i_1
+         %71 = OpIAdd %int %70 %int_1
+               OpStore %i_1 %71
+               OpBranch %65
+         %68 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+         %72 = OpLoad %int %i_0
+         %73 = OpIAdd %int %72 %int_1
+               OpStore %i_0 %73
+               OpBranch %57
+         %63 = OpLabel
+               OpReturn
+         %60 = OpLabel
+               OpBranch %56
+         %56 = OpLabel
+               OpBranchConditional %false %54 %55
+         %55 = OpLabel
+               OpBranch %48
+         %48 = OpLabel
+               OpBranchConditional %false %46 %47
+         %47 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..3f53893
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,98 @@
+SKIP: FAILED
+
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  let x_35 : f32 = x_7.injectionSwitch.y;
+  if ((x_35 < 0.0)) {
+  } else {
+    var x_42 : bool;
+    let x_41 : f32 = gl_FragCoord.y;
+    x_42 = (x_41 < -1.0);
+    if (x_42) {
+    } else {
+      loop {
+        let x_50 : i32 = i;
+        if ((x_50 >= 256)) {
+          break;
+        }
+        loop {
+          i_1 = 0;
+          loop {
+            let x_58 : i32 = i_1;
+            if ((x_58 < 1)) {
+            } else {
+              break;
+            }
+            if (x_42) {
+              i_2 = 0;
+              loop {
+                let x_66 : i32 = i_2;
+                if ((x_66 < 1)) {
+                } else {
+                  break;
+                }
+
+                continuing {
+                  let x_70 : i32 = i_2;
+                  i_2 = (x_70 + 1);
+                }
+              }
+              continue;
+            }
+            return;
+
+            continuing {
+              let x_72 : i32 = i_1;
+              i_1 = (x_72 + 1);
+            }
+          }
+
+          continuing {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+        }
+
+        continuing {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+Failed to generate: error: break statement must be in a loop or switch case
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4489a5b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.msl
@@ -0,0 +1,94 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  float const x_35 = x_7.injectionSwitch.y;
+  if ((x_35 < 0.0f)) {
+  } else {
+    bool x_42 = false;
+    float const x_41 = (*(tint_symbol_6)).y;
+    x_42 = (x_41 < -1.0f);
+    if (x_42) {
+    } else {
+      while (true) {
+        int const x_50 = i;
+        if ((x_50 >= 256)) {
+          break;
+        }
+        while (true) {
+          i_1 = 0;
+          while (true) {
+            int const x_58 = i_1;
+            if ((x_58 < 1)) {
+            } else {
+              break;
+            }
+            if (x_42) {
+              i_2 = 0;
+              while (true) {
+                int const x_66 = i_2;
+                if ((x_66 < 1)) {
+                } else {
+                  break;
+                }
+                {
+                  int const x_70 = i_2;
+                  i_2 = (x_70 + 1);
+                }
+              }
+              {
+                int const x_72 = i_1;
+                i_1 = (x_72 + 1);
+              }
+              continue;
+            }
+            return;
+            {
+              int const x_72 = i_1;
+              i_1 = (x_72 + 1);
+            }
+          }
+          {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+        }
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3fe30e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,214 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 111
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %x_42 "x_42"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n1 = OpConstant %float -1
+    %int_256 = OpConstant %int 256
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %22
+        %i_1 = OpVariable %_ptr_Function_int Function %22
+        %i_2 = OpVariable %_ptr_Function_int Function %22
+       %x_42 = OpVariable %_ptr_Function_bool Function %42
+               OpStore %x_GLF_color %27
+               OpStore %i %int_0
+         %33 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpFOrdLessThan %bool %34 %float_0
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+         %44 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %45 = OpLoad %float %44
+         %47 = OpFOrdLessThan %bool %45 %float_n1
+               OpStore %x_42 %47
+         %48 = OpLoad %bool %x_42
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpSGreaterThanEqual %bool %56 %int_256
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+               OpBranch %53
+         %59 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpLoad %int %i_1
+         %71 = OpSLessThan %bool %69 %int_1
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %74
+         %73 = OpLabel
+               OpBranch %72
+         %74 = OpLabel
+               OpBranch %66
+         %72 = OpLabel
+         %75 = OpLoad %bool %x_42
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+               OpStore %i_2 %int_0
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %82 = OpLoad %int %i_2
+         %83 = OpSLessThan %bool %82 %int_1
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %79
+         %84 = OpLabel
+               OpBranch %80
+         %80 = OpLabel
+         %87 = OpLoad %int %i_2
+         %88 = OpIAdd %int %87 %int_1
+               OpStore %i_2 %88
+               OpBranch %78
+         %79 = OpLabel
+               OpBranch %67
+         %76 = OpLabel
+               OpReturn
+         %67 = OpLabel
+         %89 = OpLoad %int %i_1
+         %90 = OpIAdd %int %89 %int_1
+               OpStore %i_1 %90
+               OpBranch %65
+         %66 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+               OpSelectionMerge %92 None
+               OpBranchConditional %false %93 %94
+         %93 = OpLabel
+               OpBranch %92
+         %94 = OpLabel
+               OpBranch %62
+         %92 = OpLabel
+               OpBranch %61
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpSelectionMerge %95 None
+               OpBranchConditional %false %96 %97
+         %96 = OpLabel
+               OpBranch %95
+         %97 = OpLabel
+               OpBranch %53
+         %95 = OpLabel
+               OpBranch %52
+         %53 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %98
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %105 = OpLabel
+        %106 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %106
+        %107 = OpFunctionCall %void %main_1
+        %109 = OpLoad %v4float %x_GLF_color
+        %110 = OpCompositeConstruct %main_out %109
+        %108 = OpFunctionCall %void %tint_symbol_3 %110
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 54[%54] is not post dominated by the back-edge block 95[%95]
+  %95 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a826fa8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,93 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  let x_35 : f32 = x_7.injectionSwitch.y;
+  if ((x_35 < 0.0)) {
+  } else {
+    var x_42 : bool;
+    let x_41 : f32 = gl_FragCoord.y;
+    x_42 = (x_41 < -1.0);
+    if (x_42) {
+    } else {
+      loop {
+        let x_50 : i32 = i;
+        if ((x_50 >= 256)) {
+          break;
+        }
+        loop {
+          i_1 = 0;
+          loop {
+            let x_58 : i32 = i_1;
+            if ((x_58 < 1)) {
+            } else {
+              break;
+            }
+            if (x_42) {
+              i_2 = 0;
+              loop {
+                let x_66 : i32 = i_2;
+                if ((x_66 < 1)) {
+                } else {
+                  break;
+                }
+
+                continuing {
+                  let x_70 : i32 = i_2;
+                  i_2 = (x_70 + 1);
+                }
+              }
+              continue;
+            }
+            return;
+
+            continuing {
+              let x_72 : i32 = i_1;
+              i_1 = (x_72 + 1);
+            }
+          }
+
+          continuing {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+        }
+
+        continuing {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
new file mode 100644
index 0000000..a826fa8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
@@ -0,0 +1,93 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  let x_35 : f32 = x_7.injectionSwitch.y;
+  if ((x_35 < 0.0)) {
+  } else {
+    var x_42 : bool;
+    let x_41 : f32 = gl_FragCoord.y;
+    x_42 = (x_41 < -1.0);
+    if (x_42) {
+    } else {
+      loop {
+        let x_50 : i32 = i;
+        if ((x_50 >= 256)) {
+          break;
+        }
+        loop {
+          i_1 = 0;
+          loop {
+            let x_58 : i32 = i_1;
+            if ((x_58 < 1)) {
+            } else {
+              break;
+            }
+            if (x_42) {
+              i_2 = 0;
+              loop {
+                let x_66 : i32 = i_2;
+                if ((x_66 < 1)) {
+                } else {
+                  break;
+                }
+
+                continuing {
+                  let x_70 : i32 = i_2;
+                  i_2 = (x_70 + 1);
+                }
+              }
+              continue;
+            }
+            return;
+
+            continuing {
+              let x_72 : i32 = i_1;
+              i_1 = (x_72 + 1);
+            }
+          }
+
+          continuing {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+        }
+
+        continuing {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..8a64f0c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,101 @@
+SKIP: FAILED
+
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  let x_35 : f32 = x_7.injectionSwitch.y;
+  if ((x_35 < 0.0)) {
+  } else {
+    var x_42 : bool;
+    let x_41 : f32 = gl_FragCoord.y;
+    x_42 = (x_41 < -1.0);
+    if (x_42) {
+    } else {
+      loop {
+        let x_50 : i32 = i;
+        if ((x_50 >= 256)) {
+          break;
+        }
+        loop {
+          i_1 = 0;
+          loop {
+            let x_58 : i32 = i_1;
+            if ((x_58 < 1)) {
+            } else {
+              break;
+            }
+            if (x_42) {
+              i_2 = 0;
+              loop {
+                let x_66 : i32 = i_2;
+                if ((x_66 < 1)) {
+                } else {
+                  break;
+                }
+
+                continuing {
+                  let x_70 : i32 = i_2;
+                  i_2 = (x_70 + 1);
+                }
+              }
+              continue;
+            }
+            return;
+
+            continuing {
+              let x_72 : i32 = i_1;
+              i_1 = (x_72 + 1);
+            }
+          }
+
+          continuing {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+        }
+
+        continuing {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
+
+Failed to generate: graphicsfuzz/two-nested-do-whiles/0-opt.wgsl:74:13 error: break statement must be in a loop or switch case
+            break;
+            ^^^^^
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4489a5b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.msl
@@ -0,0 +1,94 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  int i = 0;
+  int i_1 = 0;
+  int i_2 = 0;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  float const x_35 = x_7.injectionSwitch.y;
+  if ((x_35 < 0.0f)) {
+  } else {
+    bool x_42 = false;
+    float const x_41 = (*(tint_symbol_6)).y;
+    x_42 = (x_41 < -1.0f);
+    if (x_42) {
+    } else {
+      while (true) {
+        int const x_50 = i;
+        if ((x_50 >= 256)) {
+          break;
+        }
+        while (true) {
+          i_1 = 0;
+          while (true) {
+            int const x_58 = i_1;
+            if ((x_58 < 1)) {
+            } else {
+              break;
+            }
+            if (x_42) {
+              i_2 = 0;
+              while (true) {
+                int const x_66 = i_2;
+                if ((x_66 < 1)) {
+                } else {
+                  break;
+                }
+                {
+                  int const x_70 = i_2;
+                  i_2 = (x_70 + 1);
+                }
+              }
+              {
+                int const x_72 = i_1;
+                i_1 = (x_72 + 1);
+              }
+              continue;
+            }
+            return;
+            {
+              int const x_72 = i_1;
+              i_1 = (x_72 + 1);
+            }
+          }
+          {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+        }
+        {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3fe30e2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,214 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 111
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %i_1 "i_1"
+               OpName %i_2 "i_2"
+               OpName %x_42 "x_42"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %22 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %42 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n1 = OpConstant %float -1
+    %int_256 = OpConstant %int 256
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %98 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %22
+        %i_1 = OpVariable %_ptr_Function_int Function %22
+        %i_2 = OpVariable %_ptr_Function_int Function %22
+       %x_42 = OpVariable %_ptr_Function_bool Function %42
+               OpStore %x_GLF_color %27
+               OpStore %i %int_0
+         %33 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpFOrdLessThan %bool %34 %float_0
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %39
+         %38 = OpLabel
+               OpBranch %37
+         %39 = OpLabel
+         %44 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %45 = OpLoad %float %44
+         %47 = OpFOrdLessThan %bool %45 %float_n1
+               OpStore %x_42 %47
+         %48 = OpLoad %bool %x_42
+               OpSelectionMerge %49 None
+               OpBranchConditional %48 %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpLoopMerge %53 %54 None
+               OpBranch %55
+         %55 = OpLabel
+         %56 = OpLoad %int %i
+         %58 = OpSGreaterThanEqual %bool %56 %int_256
+               OpSelectionMerge %59 None
+               OpBranchConditional %58 %60 %59
+         %60 = OpLabel
+               OpBranch %53
+         %59 = OpLabel
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+               OpStore %i_1 %int_0
+               OpBranch %65
+         %65 = OpLabel
+               OpLoopMerge %66 %67 None
+               OpBranch %68
+         %68 = OpLabel
+         %69 = OpLoad %int %i_1
+         %71 = OpSLessThan %bool %69 %int_1
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %74
+         %73 = OpLabel
+               OpBranch %72
+         %74 = OpLabel
+               OpBranch %66
+         %72 = OpLabel
+         %75 = OpLoad %bool %x_42
+               OpSelectionMerge %76 None
+               OpBranchConditional %75 %77 %76
+         %77 = OpLabel
+               OpStore %i_2 %int_0
+               OpBranch %78
+         %78 = OpLabel
+               OpLoopMerge %79 %80 None
+               OpBranch %81
+         %81 = OpLabel
+         %82 = OpLoad %int %i_2
+         %83 = OpSLessThan %bool %82 %int_1
+               OpSelectionMerge %84 None
+               OpBranchConditional %83 %85 %86
+         %85 = OpLabel
+               OpBranch %84
+         %86 = OpLabel
+               OpBranch %79
+         %84 = OpLabel
+               OpBranch %80
+         %80 = OpLabel
+         %87 = OpLoad %int %i_2
+         %88 = OpIAdd %int %87 %int_1
+               OpStore %i_2 %88
+               OpBranch %78
+         %79 = OpLabel
+               OpBranch %67
+         %76 = OpLabel
+               OpReturn
+         %67 = OpLabel
+         %89 = OpLoad %int %i_1
+         %90 = OpIAdd %int %89 %int_1
+               OpStore %i_1 %90
+               OpBranch %65
+         %66 = OpLabel
+               OpBranch %63
+         %63 = OpLabel
+               OpSelectionMerge %92 None
+               OpBranchConditional %false %93 %94
+         %93 = OpLabel
+               OpBranch %92
+         %94 = OpLabel
+               OpBranch %62
+         %92 = OpLabel
+               OpBranch %61
+         %62 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpSelectionMerge %95 None
+               OpBranchConditional %false %96 %97
+         %96 = OpLabel
+               OpBranch %95
+         %97 = OpLabel
+               OpBranch %53
+         %95 = OpLabel
+               OpBranch %52
+         %53 = OpLabel
+               OpBranch %49
+         %49 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %98
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %102 = OpLabel
+        %103 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %103
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+        %105 = OpLabel
+        %106 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %106
+        %107 = OpFunctionCall %void %main_1
+        %109 = OpLoad %v4float %x_GLF_color
+        %110 = OpCompositeConstruct %main_out %109
+        %108 = OpFunctionCall %void %tint_symbol_3 %110
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 54[%54] is not post dominated by the back-edge block 95[%95]
+  %95 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a826fa8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,93 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var i_1 : i32;
+  var i_2 : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  let x_35 : f32 = x_7.injectionSwitch.y;
+  if ((x_35 < 0.0)) {
+  } else {
+    var x_42 : bool;
+    let x_41 : f32 = gl_FragCoord.y;
+    x_42 = (x_41 < -1.0);
+    if (x_42) {
+    } else {
+      loop {
+        let x_50 : i32 = i;
+        if ((x_50 >= 256)) {
+          break;
+        }
+        loop {
+          i_1 = 0;
+          loop {
+            let x_58 : i32 = i_1;
+            if ((x_58 < 1)) {
+            } else {
+              break;
+            }
+            if (x_42) {
+              i_2 = 0;
+              loop {
+                let x_66 : i32 = i_2;
+                if ((x_66 < 1)) {
+                } else {
+                  break;
+                }
+
+                continuing {
+                  let x_70 : i32 = i_2;
+                  i_2 = (x_70 + 1);
+                }
+              }
+              continue;
+            }
+            return;
+
+            continuing {
+              let x_72 : i32 = i_1;
+              i_1 = (x_72 + 1);
+            }
+          }
+
+          continuing {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+        }
+
+        continuing {
+          if (false) {
+          } else {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm
new file mode 100644
index 0000000..a49611f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm
@@ -0,0 +1,102 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %nb_mod_ "nb_mod("
+               OpName %s "s"
+               OpName %i "i"
+               OpName %GLF_live1i "GLF_live1i"
+               OpName %GLF_live1_looplimiter2 "GLF_live1_looplimiter2"
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "_compute_data"
+               OpName %_ ""
+               OpDecorate %_runtimearr_float ArrayStride 4
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpDecorate %doesNotMatter BufferBlock
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %14 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_5 = OpConstant %int 5
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+   %float_42 = OpConstant %float 42
+      %int_1 = OpConstant %int 1
+%_runtimearr_float = OpTypeRuntimeArray %float
+%doesNotMatter = OpTypeStruct %_runtimearr_float
+%_ptr_Uniform_doesNotMatter = OpTypePointer Uniform %doesNotMatter
+          %_ = OpVariable %_ptr_Uniform_doesNotMatter Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+         %29 = OpUndef %int
+         %30 = OpUndef %float
+       %main = OpFunction %void None %12
+         %31 = OpLabel
+         %32 = OpFunctionCall %float %nb_mod_
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_0
+               OpStore %33 %32
+               OpReturn
+               OpFunctionEnd
+    %nb_mod_ = OpFunction %float None %14
+         %34 = OpLabel
+          %s = OpVariable %_ptr_Function_float Function
+          %i = OpVariable %_ptr_Function_int Function
+ %GLF_live1i = OpVariable %_ptr_Function_int Function
+%GLF_live1_looplimiter2 = OpVariable %_ptr_Function_int Function
+               OpStore %s %float_0
+               OpStore %i %int_5
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpSLessThan %bool %int_5 %int_800
+               OpBranchConditional %39 %40 %36
+         %40 = OpLabel
+               OpStore %GLF_live1i %int_0
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpSLessThan %bool %int_0 %int_20
+               OpBranchConditional %45 %46 %42
+         %46 = OpLabel
+         %47 = OpSGreaterThanEqual %bool %29 %int_5
+               OpSelectionMerge %48 None
+               OpBranchConditional %47 %49 %48
+         %49 = OpLabel
+         %50 = OpFAdd %float %float_0 %float_1
+               OpStore %s %50
+               OpBranch %42
+         %48 = OpLabel
+               OpReturnValue %float_42
+         %43 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+         %51 = OpPhi %float %float_0 %44 %50 %49
+         %52 = OpConvertSToF %float %int_5
+         %53 = OpFOrdLessThanEqual %bool %52 %51
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpBranch %36
+         %54 = OpLabel
+               OpReturnValue %float_42
+         %37 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+         %56 = OpPhi %float %float_0 %38 %51 %55
+               OpReturnValue %56
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..522b92d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,55 @@
+RWByteAddressBuffer x_9 : register(u0, space0);
+
+float nb_mod_() {
+  float s = 0.0f;
+  int i = 0;
+  int GLF_live1i = 0;
+  int GLF_live1_looplimiter2 = 0;
+  float x_51 = 0.0f;
+  float x_56_phi = 0.0f;
+  s = 0.0f;
+  i = 5;
+  while (true) {
+    float x_50 = 0.0f;
+    float x_51_phi = 0.0f;
+    x_56_phi = 0.0f;
+    if ((5 < 800)) {
+    } else {
+      break;
+    }
+    GLF_live1i = 0;
+    while (true) {
+      x_51_phi = 0.0f;
+      if ((0 < 20)) {
+      } else {
+        break;
+      }
+      if ((0 >= 5)) {
+        x_50 = (0.0f + 1.0f);
+        s = x_50;
+        x_51_phi = x_50;
+        break;
+      }
+      return 42.0f;
+    }
+    x_51 = x_51_phi;
+    if ((float(5) <= x_51)) {
+      x_56_phi = x_51;
+      break;
+    }
+    return 42.0f;
+  }
+  return x_56_phi;
+}
+
+void main_1() {
+  const float x_32 = nb_mod_();
+  x_9.Store((4u * uint(0)), asuint(x_32));
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d1dd6df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct doesNotMatter {
+  /* 0x0000 */ float x_compute_data[1];
+};
+
+float nb_mod_() {
+  float s = 0.0f;
+  int i = 0;
+  int GLF_live1i = 0;
+  int GLF_live1_looplimiter2 = 0;
+  float x_51 = 0.0f;
+  float x_56_phi = 0.0f;
+  s = 0.0f;
+  i = 5;
+  while (true) {
+    float x_50 = 0.0f;
+    float x_51_phi = 0.0f;
+    x_56_phi = 0.0f;
+    if ((5 < 800)) {
+    } else {
+      break;
+    }
+    GLF_live1i = 0;
+    while (true) {
+      x_51_phi = 0.0f;
+      if ((0 < 20)) {
+      } else {
+        break;
+      }
+      if ((0 >= 5)) {
+        x_50 = (0.0f + 1.0f);
+        s = x_50;
+        x_51_phi = x_50;
+        break;
+      }
+      return 42.0f;
+    }
+    x_51 = x_51_phi;
+    if ((float(5) <= x_51)) {
+      x_56_phi = x_51;
+      break;
+    }
+    return 42.0f;
+  }
+  float const x_56 = x_56_phi;
+  return x_56;
+}
+
+void main_1(device doesNotMatter& x_9) {
+  float const x_32 = nb_mod_();
+  x_9.x_compute_data[0] = x_32;
+  return;
+}
+
+kernel void tint_symbol(device doesNotMatter& x_9 [[buffer(0)]]) {
+  main_1(x_9);
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..6f88948
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "x_compute_data"
+               OpName %x_9 "x_9"
+               OpName %nb_mod_ "nb_mod_"
+               OpName %s "s"
+               OpName %i "i"
+               OpName %GLF_live1i "GLF_live1i"
+               OpName %GLF_live1_looplimiter2 "GLF_live1_looplimiter2"
+               OpName %x_51 "x_51"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_50 "x_50"
+               OpName %x_51_phi "x_51_phi"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %doesNotMatter Block
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpDecorate %_runtimearr_float ArrayStride 4
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+      %float = OpTypeFloat 32
+%_runtimearr_float = OpTypeRuntimeArray %float
+%doesNotMatter = OpTypeStruct %_runtimearr_float
+%_ptr_StorageBuffer_doesNotMatter = OpTypePointer StorageBuffer %doesNotMatter
+        %x_9 = OpVariable %_ptr_StorageBuffer_doesNotMatter StorageBuffer
+          %6 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %11 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+      %int_5 = OpConstant %int 5
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+   %float_42 = OpConstant %float 42
+    %float_5 = OpConstant %float 5
+       %void = OpTypeVoid
+         %60 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
+    %nb_mod_ = OpFunction %float None %6
+          %8 = OpLabel
+          %s = OpVariable %_ptr_Function_float Function %11
+          %i = OpVariable %_ptr_Function_int Function %15
+ %GLF_live1i = OpVariable %_ptr_Function_int Function %15
+%GLF_live1_looplimiter2 = OpVariable %_ptr_Function_int Function %15
+       %x_51 = OpVariable %_ptr_Function_float Function %11
+   %x_56_phi = OpVariable %_ptr_Function_float Function %11
+       %x_50 = OpVariable %_ptr_Function_float Function %11
+   %x_51_phi = OpVariable %_ptr_Function_float Function %11
+               OpStore %s %float_0
+               OpStore %i %int_5
+               OpBranch %22
+         %22 = OpLabel
+               OpLoopMerge %23 %24 None
+               OpBranch %25
+         %25 = OpLabel
+               OpStore %x_56_phi %float_0
+         %29 = OpSLessThan %bool %int_5 %int_800
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %23
+         %31 = OpLabel
+               OpStore %GLF_live1i %int_0
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+               OpStore %x_51_phi %float_0
+         %40 = OpSLessThan %bool %int_0 %int_20
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %36
+         %41 = OpLabel
+         %44 = OpSGreaterThanEqual %bool %int_0 %int_5
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+         %48 = OpFAdd %float %float_0 %float_1
+               OpStore %x_50 %48
+         %49 = OpLoad %float %x_50
+               OpStore %s %49
+         %50 = OpLoad %float %x_50
+               OpStore %x_51_phi %50
+               OpBranch %36
+         %45 = OpLabel
+               OpReturnValue %float_42
+         %37 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+         %52 = OpLoad %float %x_51_phi
+               OpStore %x_51 %52
+         %54 = OpLoad %float %x_51
+         %55 = OpFOrdLessThanEqual %bool %float_5 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpLoad %float %x_51
+               OpStore %x_56_phi %58
+               OpBranch %23
+         %56 = OpLabel
+               OpReturnValue %float_42
+         %24 = OpLabel
+               OpBranch %22
+         %23 = OpLabel
+         %59 = OpLoad %float %x_56_phi
+               OpReturnValue %59
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %60
+         %63 = OpLabel
+         %64 = OpFunctionCall %float %nb_mod_
+         %68 = OpAccessChain %_ptr_StorageBuffer_float %x_9 %uint_0 %int_0
+               OpStore %68 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %60
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..01d9e68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,62 @@
+type RTArr = [[stride(4)]] array<f32>;
+
+[[block]]
+struct doesNotMatter {
+  x_compute_data : RTArr;
+};
+
+[[group(0), binding(0)]] var<storage, read_write> x_9 : doesNotMatter;
+
+fn nb_mod_() -> f32 {
+  var s : f32;
+  var i : i32;
+  var GLF_live1i : i32;
+  var GLF_live1_looplimiter2 : i32;
+  var x_51 : f32;
+  var x_56_phi : f32;
+  s = 0.0;
+  i = 5;
+  loop {
+    var x_50 : f32;
+    var x_51_phi : f32;
+    x_56_phi = 0.0;
+    if ((5 < 800)) {
+    } else {
+      break;
+    }
+    GLF_live1i = 0;
+    loop {
+      x_51_phi = 0.0;
+      if ((0 < 20)) {
+      } else {
+        break;
+      }
+      if ((0 >= 5)) {
+        x_50 = (0.0 + 1.0);
+        s = x_50;
+        x_51_phi = x_50;
+        break;
+      }
+      return 42.0;
+    }
+    x_51 = x_51_phi;
+    if ((f32(5) <= x_51)) {
+      x_56_phi = x_51;
+      break;
+    }
+    return 42.0;
+  }
+  let x_56 : f32 = x_56_phi;
+  return x_56;
+}
+
+fn main_1() {
+  let x_32 : f32 = nb_mod_();
+  x_9.x_compute_data[0] = x_32;
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
new file mode 100644
index 0000000..01d9e68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
@@ -0,0 +1,62 @@
+type RTArr = [[stride(4)]] array<f32>;
+
+[[block]]
+struct doesNotMatter {
+  x_compute_data : RTArr;
+};
+
+[[group(0), binding(0)]] var<storage, read_write> x_9 : doesNotMatter;
+
+fn nb_mod_() -> f32 {
+  var s : f32;
+  var i : i32;
+  var GLF_live1i : i32;
+  var GLF_live1_looplimiter2 : i32;
+  var x_51 : f32;
+  var x_56_phi : f32;
+  s = 0.0;
+  i = 5;
+  loop {
+    var x_50 : f32;
+    var x_51_phi : f32;
+    x_56_phi = 0.0;
+    if ((5 < 800)) {
+    } else {
+      break;
+    }
+    GLF_live1i = 0;
+    loop {
+      x_51_phi = 0.0;
+      if ((0 < 20)) {
+      } else {
+        break;
+      }
+      if ((0 >= 5)) {
+        x_50 = (0.0 + 1.0);
+        s = x_50;
+        x_51_phi = x_50;
+        break;
+      }
+      return 42.0;
+    }
+    x_51 = x_51_phi;
+    if ((f32(5) <= x_51)) {
+      x_56_phi = x_51;
+      break;
+    }
+    return 42.0;
+  }
+  let x_56 : f32 = x_56_phi;
+  return x_56;
+}
+
+fn main_1() {
+  let x_32 : f32 = nb_mod_();
+  x_9.x_compute_data[0] = x_32;
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..522b92d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,55 @@
+RWByteAddressBuffer x_9 : register(u0, space0);
+
+float nb_mod_() {
+  float s = 0.0f;
+  int i = 0;
+  int GLF_live1i = 0;
+  int GLF_live1_looplimiter2 = 0;
+  float x_51 = 0.0f;
+  float x_56_phi = 0.0f;
+  s = 0.0f;
+  i = 5;
+  while (true) {
+    float x_50 = 0.0f;
+    float x_51_phi = 0.0f;
+    x_56_phi = 0.0f;
+    if ((5 < 800)) {
+    } else {
+      break;
+    }
+    GLF_live1i = 0;
+    while (true) {
+      x_51_phi = 0.0f;
+      if ((0 < 20)) {
+      } else {
+        break;
+      }
+      if ((0 >= 5)) {
+        x_50 = (0.0f + 1.0f);
+        s = x_50;
+        x_51_phi = x_50;
+        break;
+      }
+      return 42.0f;
+    }
+    x_51 = x_51_phi;
+    if ((float(5) <= x_51)) {
+      x_56_phi = x_51;
+      break;
+    }
+    return 42.0f;
+  }
+  return x_56_phi;
+}
+
+void main_1() {
+  const float x_32 = nb_mod_();
+  x_9.Store((4u * uint(0)), asuint(x_32));
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d1dd6df
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.msl
@@ -0,0 +1,61 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct doesNotMatter {
+  /* 0x0000 */ float x_compute_data[1];
+};
+
+float nb_mod_() {
+  float s = 0.0f;
+  int i = 0;
+  int GLF_live1i = 0;
+  int GLF_live1_looplimiter2 = 0;
+  float x_51 = 0.0f;
+  float x_56_phi = 0.0f;
+  s = 0.0f;
+  i = 5;
+  while (true) {
+    float x_50 = 0.0f;
+    float x_51_phi = 0.0f;
+    x_56_phi = 0.0f;
+    if ((5 < 800)) {
+    } else {
+      break;
+    }
+    GLF_live1i = 0;
+    while (true) {
+      x_51_phi = 0.0f;
+      if ((0 < 20)) {
+      } else {
+        break;
+      }
+      if ((0 >= 5)) {
+        x_50 = (0.0f + 1.0f);
+        s = x_50;
+        x_51_phi = x_50;
+        break;
+      }
+      return 42.0f;
+    }
+    x_51 = x_51_phi;
+    if ((float(5) <= x_51)) {
+      x_56_phi = x_51;
+      break;
+    }
+    return 42.0f;
+  }
+  float const x_56 = x_56_phi;
+  return x_56;
+}
+
+void main_1(device doesNotMatter& x_9) {
+  float const x_32 = nb_mod_();
+  x_9.x_compute_data[0] = x_32;
+  return;
+}
+
+kernel void tint_symbol(device doesNotMatter& x_9 [[buffer(0)]]) {
+  main_1(x_9);
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..6f88948
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,140 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 72
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "x_compute_data"
+               OpName %x_9 "x_9"
+               OpName %nb_mod_ "nb_mod_"
+               OpName %s "s"
+               OpName %i "i"
+               OpName %GLF_live1i "GLF_live1i"
+               OpName %GLF_live1_looplimiter2 "GLF_live1_looplimiter2"
+               OpName %x_51 "x_51"
+               OpName %x_56_phi "x_56_phi"
+               OpName %x_50 "x_50"
+               OpName %x_51_phi "x_51_phi"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %doesNotMatter Block
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpDecorate %_runtimearr_float ArrayStride 4
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+      %float = OpTypeFloat 32
+%_runtimearr_float = OpTypeRuntimeArray %float
+%doesNotMatter = OpTypeStruct %_runtimearr_float
+%_ptr_StorageBuffer_doesNotMatter = OpTypePointer StorageBuffer %doesNotMatter
+        %x_9 = OpVariable %_ptr_StorageBuffer_doesNotMatter StorageBuffer
+          %6 = OpTypeFunction %float
+%_ptr_Function_float = OpTypePointer Function %float
+         %11 = OpConstantNull %float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+    %float_0 = OpConstant %float 0
+      %int_5 = OpConstant %int 5
+    %int_800 = OpConstant %int 800
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+     %int_20 = OpConstant %int 20
+    %float_1 = OpConstant %float 1
+   %float_42 = OpConstant %float 42
+    %float_5 = OpConstant %float 5
+       %void = OpTypeVoid
+         %60 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
+    %nb_mod_ = OpFunction %float None %6
+          %8 = OpLabel
+          %s = OpVariable %_ptr_Function_float Function %11
+          %i = OpVariable %_ptr_Function_int Function %15
+ %GLF_live1i = OpVariable %_ptr_Function_int Function %15
+%GLF_live1_looplimiter2 = OpVariable %_ptr_Function_int Function %15
+       %x_51 = OpVariable %_ptr_Function_float Function %11
+   %x_56_phi = OpVariable %_ptr_Function_float Function %11
+       %x_50 = OpVariable %_ptr_Function_float Function %11
+   %x_51_phi = OpVariable %_ptr_Function_float Function %11
+               OpStore %s %float_0
+               OpStore %i %int_5
+               OpBranch %22
+         %22 = OpLabel
+               OpLoopMerge %23 %24 None
+               OpBranch %25
+         %25 = OpLabel
+               OpStore %x_56_phi %float_0
+         %29 = OpSLessThan %bool %int_5 %int_800
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %33
+         %32 = OpLabel
+               OpBranch %31
+         %33 = OpLabel
+               OpBranch %23
+         %31 = OpLabel
+               OpStore %GLF_live1i %int_0
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+               OpStore %x_51_phi %float_0
+         %40 = OpSLessThan %bool %int_0 %int_20
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %43
+         %42 = OpLabel
+               OpBranch %41
+         %43 = OpLabel
+               OpBranch %36
+         %41 = OpLabel
+         %44 = OpSGreaterThanEqual %bool %int_0 %int_5
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %45
+         %46 = OpLabel
+         %48 = OpFAdd %float %float_0 %float_1
+               OpStore %x_50 %48
+         %49 = OpLoad %float %x_50
+               OpStore %s %49
+         %50 = OpLoad %float %x_50
+               OpStore %x_51_phi %50
+               OpBranch %36
+         %45 = OpLabel
+               OpReturnValue %float_42
+         %37 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+         %52 = OpLoad %float %x_51_phi
+               OpStore %x_51 %52
+         %54 = OpLoad %float %x_51
+         %55 = OpFOrdLessThanEqual %bool %float_5 %54
+               OpSelectionMerge %56 None
+               OpBranchConditional %55 %57 %56
+         %57 = OpLabel
+         %58 = OpLoad %float %x_51
+               OpStore %x_56_phi %58
+               OpBranch %23
+         %56 = OpLabel
+               OpReturnValue %float_42
+         %24 = OpLabel
+               OpBranch %22
+         %23 = OpLabel
+         %59 = OpLoad %float %x_56_phi
+               OpReturnValue %59
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %60
+         %63 = OpLabel
+         %64 = OpFunctionCall %float %nb_mod_
+         %68 = OpAccessChain %_ptr_StorageBuffer_float %x_9 %uint_0 %int_0
+               OpStore %68 %64
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %60
+         %70 = OpLabel
+         %71 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..01d9e68
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,62 @@
+type RTArr = [[stride(4)]] array<f32>;
+
+[[block]]
+struct doesNotMatter {
+  x_compute_data : RTArr;
+};
+
+[[group(0), binding(0)]] var<storage, read_write> x_9 : doesNotMatter;
+
+fn nb_mod_() -> f32 {
+  var s : f32;
+  var i : i32;
+  var GLF_live1i : i32;
+  var GLF_live1_looplimiter2 : i32;
+  var x_51 : f32;
+  var x_56_phi : f32;
+  s = 0.0;
+  i = 5;
+  loop {
+    var x_50 : f32;
+    var x_51_phi : f32;
+    x_56_phi = 0.0;
+    if ((5 < 800)) {
+    } else {
+      break;
+    }
+    GLF_live1i = 0;
+    loop {
+      x_51_phi = 0.0;
+      if ((0 < 20)) {
+      } else {
+        break;
+      }
+      if ((0 >= 5)) {
+        x_50 = (0.0 + 1.0);
+        s = x_50;
+        x_51_phi = x_50;
+        break;
+      }
+      return 42.0;
+    }
+    x_51 = x_51_phi;
+    if ((f32(5) <= x_51)) {
+      x_56_phi = x_51;
+      break;
+    }
+    return 42.0;
+  }
+  let x_56 : f32 = x_56_phi;
+  return x_56;
+}
+
+fn main_1() {
+  let x_32 : f32 = nb_mod_();
+  x_9.x_compute_data[0] = x_32;
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm
new file mode 100644
index 0000000..bfce82b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm
@@ -0,0 +1,91 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %mand_ "mand("
+               OpName %k "k"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %j "j"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %k RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %j RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %int_0 RelaxedPrecision
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+         %14 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+   %int_1000 = OpConstant %int 1000
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+         %21 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+      %int_4 = OpConstant %int 4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %33 = OpUndef %int
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %11
+         %35 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function
+         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %37 = OpLoad %float %36
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %39 = OpLoad %float %38
+         %40 = OpFOrdGreaterThan %bool %37 %39
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+               OpStore %j %int_0
+               OpBranch %43
+         %43 = OpLabel
+               OpLoopMerge %44 %45 None
+               OpBranchConditional %true %45 %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v3float %mand_
+               OpBranch %43
+         %44 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpStore %_GLF_color %32
+               OpReturn
+               OpFunctionEnd
+      %mand_ = OpFunction %v3float None %14
+         %47 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function
+               OpStore %k %int_0
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranchConditional %true %51 %49
+         %51 = OpLabel
+               OpKill
+         %50 = OpLabel
+               OpBranch %48
+         %49 = OpLabel
+               OpReturnValue %21
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.hlsl
new file mode 100755
index 0000000..6b19022
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 mand_() {
+  int k = 0;
+  k = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    discard;
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1() {
+  int j = 0;
+  const float x_37 = asfloat(x_7[0].x);
+  const float x_39 = asfloat(x_7[0].y);
+  if ((x_37 > x_39)) {
+    j = 0;
+    {
+      for(; true; const float3 x_46 = mand_()) {
+      }
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+T:\tmp\udpk.0:26:19: error: expected expression
+      for(; true; const float3 x_46 = mand_()) {
+                  ^
+T:\tmp\udpk.0:26:19: error: expected ')'
+T:\tmp\udpk.0:26:10: note: to match this '('
+      for(; true; const float3 x_46 = mand_()) {
+         ^
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..82947bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 mand_() {
+  int k = 0;
+  k = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    discard_fragment();
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int j = 0;
+  float const x_37 = x_7.injectionSwitch.x;
+  float const x_39 = x_7.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    j = 0;
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      {
+        float3 const x_46 = mand_();
+      }
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..8d1e068
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,132 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 70
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %mand_ "mand_"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+    %v3float = OpTypeVector %float 3
+         %12 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+      %mand_ = OpFunction %v3float None %12
+         %15 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %19
+               OpStore %k %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+               OpSelectionMerge %27 None
+               OpBranchConditional %true %28 %29
+         %28 = OpLabel
+               OpBranch %27
+         %29 = OpLabel
+               OpBranch %22
+         %27 = OpLabel
+               OpKill
+         %23 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+               OpReturnValue %31
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %32
+         %35 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %19
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %41 = OpLoad %float %40
+         %43 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %44 = OpLoad %float %43
+         %45 = OpFOrdGreaterThan %bool %41 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpStore %j %int_0
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+               OpSelectionMerge %52 None
+               OpBranchConditional %true %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %49
+         %52 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+         %55 = OpFunctionCall %v3float %mand_
+               OpBranch %48
+         %49 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpStore %x_GLF_color %57
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %58
+%tint_symbol = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %32
+         %65 = OpLabel
+         %66 = OpFunctionCall %void %main_1
+         %68 = OpLoad %v4float %x_GLF_color
+         %69 = OpCompositeConstruct %main_out %68
+         %67 = OpFunctionCall %void %tint_symbol_2 %69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..26e8226
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,53 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn mand_() -> vec3<f32> {
+  var k : i32;
+  k = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    discard;
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var j : i32;
+  let x_37 : f32 = x_7.injectionSwitch.x;
+  let x_39 : f32 = x_7.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    j = 0;
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_46 : vec3<f32> = mand_();
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl
new file mode 100644
index 0000000..26e8226
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl
@@ -0,0 +1,53 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn mand_() -> vec3<f32> {
+  var k : i32;
+  k = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    discard;
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var j : i32;
+  let x_37 : f32 = x_7.injectionSwitch.x;
+  let x_39 : f32 = x_7.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    j = 0;
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_46 : vec3<f32> = mand_();
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.hlsl
new file mode 100755
index 0000000..05c2717
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,57 @@
+SKIP: FAILED
+
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 mand_() {
+  int k = 0;
+  k = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    discard;
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1() {
+  int j = 0;
+  const float x_37 = asfloat(x_7[0].x);
+  const float x_39 = asfloat(x_7[0].y);
+  if ((x_37 > x_39)) {
+    j = 0;
+    {
+      for(; true; const float3 x_46 = mand_()) {
+      }
+    }
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+T:\tmp\ub0s.0:26:19: error: expected expression
+      for(; true; const float3 x_46 = mand_()) {
+                  ^
+T:\tmp\ub0s.0:26:19: error: expected ')'
+T:\tmp\ub0s.0:26:10: note: to match this '('
+      for(; true; const float3 x_46 = mand_()) {
+         ^
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..82947bc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.msl
@@ -0,0 +1,54 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 mand_() {
+  int k = 0;
+  k = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    discard_fragment();
+  }
+  return float3(1.0f, 1.0f, 1.0f);
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int j = 0;
+  float const x_37 = x_7.injectionSwitch.x;
+  float const x_39 = x_7.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    j = 0;
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      {
+        float3 const x_46 = mand_();
+      }
+    }
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_7, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..8d1e068
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,132 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 70
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %mand_ "mand_"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+    %v3float = OpTypeVector %float 3
+         %12 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %31 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+       %void = OpTypeVoid
+         %32 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+         %57 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %58 = OpTypeFunction %void %main_out
+      %mand_ = OpFunction %v3float None %12
+         %15 = OpLabel
+          %k = OpVariable %_ptr_Function_int Function %19
+               OpStore %k %int_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+               OpSelectionMerge %27 None
+               OpBranchConditional %true %28 %29
+         %28 = OpLabel
+               OpBranch %27
+         %29 = OpLabel
+               OpBranch %22
+         %27 = OpLabel
+               OpKill
+         %23 = OpLabel
+               OpBranch %21
+         %22 = OpLabel
+               OpReturnValue %31
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %32
+         %35 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %19
+         %40 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %41 = OpLoad %float %40
+         %43 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %44 = OpLoad %float %43
+         %45 = OpFOrdGreaterThan %bool %41 %44
+               OpSelectionMerge %46 None
+               OpBranchConditional %45 %47 %46
+         %47 = OpLabel
+               OpStore %j %int_0
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+               OpSelectionMerge %52 None
+               OpBranchConditional %true %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %49
+         %52 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+         %55 = OpFunctionCall %v3float %mand_
+               OpBranch %48
+         %49 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpStore %x_GLF_color %57
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %58
+%tint_symbol = OpFunctionParameter %main_out
+         %62 = OpLabel
+         %63 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %63
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %32
+         %65 = OpLabel
+         %66 = OpFunctionCall %void %main_1
+         %68 = OpLoad %v4float %x_GLF_color
+         %69 = OpCompositeConstruct %main_out %68
+         %67 = OpFunctionCall %void %tint_symbol_2 %69
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..26e8226
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-infinite-loops-discard/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,53 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn mand_() -> vec3<f32> {
+  var k : i32;
+  k = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    discard;
+  }
+  return vec3<f32>(1.0, 1.0, 1.0);
+}
+
+fn main_1() {
+  var j : i32;
+  let x_37 : f32 = x_7.injectionSwitch.x;
+  let x_39 : f32 = x_7.injectionSwitch.y;
+  if ((x_37 > x_39)) {
+    j = 0;
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+
+      continuing {
+        let x_46 : vec3<f32> = mand_();
+      }
+    }
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm
new file mode 100644
index 0000000..de10e0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm
@@ -0,0 +1,82 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %GLF_dead6index "GLF_dead6index"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %GLF_dead6currentNode "GLF_dead6currentNode"
+               OpName %donor_replacementGLF_dead6tree "donor_replacementGLF_dead6tree"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %GLF_dead6index RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %GLF_dead6currentNode RelaxedPrecision
+               OpDecorate %donor_replacementGLF_dead6tree RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+       %main = OpFunction %void None %13
+         %32 = OpLabel
+%GLF_dead6index = OpVariable %_ptr_Function_int Function
+%GLF_dead6currentNode = OpVariable %_ptr_Function_int Function
+%donor_replacementGLF_dead6tree = OpVariable %_ptr_Function__arr_int_uint_1 Function
+               OpStore %_GLF_color %19
+               OpStore %GLF_dead6index %int_0
+         %33 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpFOrdLessThan %bool %34 %float_0
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+               OpLoopMerge %39 %40 None
+               OpBranch %41
+         %41 = OpLabel
+               OpBranchConditional %true %42 %39
+         %42 = OpLabel
+          %9 = OpLoad %int %GLF_dead6index
+         %43 = OpAccessChain %_ptr_Function_int %donor_replacementGLF_dead6tree %9
+         %10 = OpLoad %int %43
+               OpStore %GLF_dead6currentNode %10
+         %11 = OpLoad %int %GLF_dead6currentNode
+               OpStore %GLF_dead6index %11
+               OpBranch %40
+         %40 = OpLabel
+               OpBranch %38
+         %39 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.hlsl
new file mode 100755
index 0000000..cd1e894
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.hlsl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  int GLF_dead6index = 0;
+  int GLF_dead6currentNode = 0;
+  int donor_replacementGLF_dead6tree[1] = (int[1])0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  GLF_dead6index = 0;
+  const float x_34 = asfloat(x_6[0].y);
+  if ((x_34 < 0.0f)) {
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      const int x_10 = donor_replacementGLF_dead6tree[GLF_dead6index];
+      GLF_dead6currentNode = x_10;
+      GLF_dead6index = GLF_dead6currentNode;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+error: validation errors
+T:\tmp\u4lc.0:34: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.msl
new file mode 100644
index 0000000..3986db2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.msl
@@ -0,0 +1,47 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int GLF_dead6index = 0;
+  int GLF_dead6currentNode = 0;
+  tint_array_wrapper donor_replacementGLF_dead6tree = {};
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  GLF_dead6index = 0;
+  float const x_34 = x_6.injectionSwitch.y;
+  if ((x_34 < 0.0f)) {
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      int const x_9 = GLF_dead6index;
+      int const x_10 = donor_replacementGLF_dead6tree.arr[x_9];
+      GLF_dead6currentNode = x_10;
+      int const x_11 = GLF_dead6currentNode;
+      GLF_dead6index = x_11;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..4f5ea06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.spvasm
@@ -0,0 +1,116 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %GLF_dead6index "GLF_dead6index"
+               OpName %GLF_dead6currentNode "GLF_dead6currentNode"
+               OpName %donor_replacementGLF_dead6tree "donor_replacementGLF_dead6tree"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+         %26 = OpConstantNull %_arr_int_uint_1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %51 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+%GLF_dead6index = OpVariable %_ptr_Function_int Function %19
+%GLF_dead6currentNode = OpVariable %_ptr_Function_int Function %19
+%donor_replacementGLF_dead6tree = OpVariable %_ptr_Function__arr_int_uint_1 Function %26
+               OpStore %x_GLF_color %29
+               OpStore %GLF_dead6index %int_0
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpFOrdLessThan %bool %34 %float_0
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %37
+         %38 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+               OpSelectionMerge %44 None
+               OpBranchConditional %true %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %40
+         %44 = OpLabel
+         %47 = OpLoad %int %GLF_dead6index
+         %48 = OpAccessChain %_ptr_Function_int %donor_replacementGLF_dead6tree %47
+         %49 = OpLoad %int %48
+               OpStore %GLF_dead6currentNode %49
+         %50 = OpLoad %int %GLF_dead6currentNode
+               OpStore %GLF_dead6index %50
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %51
+%tint_symbol = OpFunctionParameter %main_out
+         %55 = OpLabel
+         %56 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %56
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %58 = OpLabel
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %v4float %x_GLF_color
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_2 %62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..eec717f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var GLF_dead6index : i32;
+  var GLF_dead6currentNode : i32;
+  var donor_replacementGLF_dead6tree : array<i32, 1>;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  GLF_dead6index = 0;
+  let x_34 : f32 = x_6.injectionSwitch.y;
+  if ((x_34 < 0.0)) {
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+      let x_9 : i32 = GLF_dead6index;
+      let x_10 : i32 = donor_replacementGLF_dead6tree[x_9];
+      GLF_dead6currentNode = x_10;
+      let x_11 : i32 = GLF_dead6currentNode;
+      GLF_dead6index = x_11;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
new file mode 100644
index 0000000..eec717f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
@@ -0,0 +1,42 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var GLF_dead6index : i32;
+  var GLF_dead6currentNode : i32;
+  var donor_replacementGLF_dead6tree : array<i32, 1>;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  GLF_dead6index = 0;
+  let x_34 : f32 = x_6.injectionSwitch.y;
+  if ((x_34 < 0.0)) {
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+      let x_9 : i32 = GLF_dead6index;
+      let x_10 : i32 = donor_replacementGLF_dead6tree[x_9];
+      GLF_dead6currentNode = x_10;
+      let x_11 : i32 = GLF_dead6currentNode;
+      GLF_dead6index = x_11;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.hlsl
new file mode 100755
index 0000000..633f6e3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.hlsl
@@ -0,0 +1,47 @@
+SKIP: FAILED
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  int GLF_dead6index = 0;
+  int GLF_dead6currentNode = 0;
+  int donor_replacementGLF_dead6tree[1] = (int[1])0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  GLF_dead6index = 0;
+  const float x_34 = asfloat(x_6[0].y);
+  if ((x_34 < 0.0f)) {
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      const int x_10 = donor_replacementGLF_dead6tree[GLF_dead6index];
+      GLF_dead6currentNode = x_10;
+      GLF_dead6index = GLF_dead6currentNode;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+error: validation errors
+T:\tmp\u4wo.0:34: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.msl
new file mode 100644
index 0000000..3986db2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.msl
@@ -0,0 +1,47 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  int arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int GLF_dead6index = 0;
+  int GLF_dead6currentNode = 0;
+  tint_array_wrapper donor_replacementGLF_dead6tree = {};
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  GLF_dead6index = 0;
+  float const x_34 = x_6.injectionSwitch.y;
+  if ((x_34 < 0.0f)) {
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      int const x_9 = GLF_dead6index;
+      int const x_10 = donor_replacementGLF_dead6tree.arr[x_9];
+      GLF_dead6currentNode = x_10;
+      int const x_11 = GLF_dead6currentNode;
+      GLF_dead6index = x_11;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..4f5ea06
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.spvasm
@@ -0,0 +1,116 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %GLF_dead6index "GLF_dead6index"
+               OpName %GLF_dead6currentNode "GLF_dead6currentNode"
+               OpName %donor_replacementGLF_dead6tree "donor_replacementGLF_dead6tree"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_int_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_int_uint_1 = OpTypeArray %int %uint_1
+%_ptr_Function__arr_int_uint_1 = OpTypePointer Function %_arr_int_uint_1
+         %26 = OpConstantNull %_arr_int_uint_1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %51 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+%GLF_dead6index = OpVariable %_ptr_Function_int Function %19
+%GLF_dead6currentNode = OpVariable %_ptr_Function_int Function %19
+%donor_replacementGLF_dead6tree = OpVariable %_ptr_Function__arr_int_uint_1 Function %26
+               OpStore %x_GLF_color %29
+               OpStore %GLF_dead6index %int_0
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpFOrdLessThan %bool %34 %float_0
+               OpSelectionMerge %37 None
+               OpBranchConditional %35 %38 %37
+         %38 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+               OpLoopMerge %40 %41 None
+               OpBranch %42
+         %42 = OpLabel
+               OpSelectionMerge %44 None
+               OpBranchConditional %true %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %40
+         %44 = OpLabel
+         %47 = OpLoad %int %GLF_dead6index
+         %48 = OpAccessChain %_ptr_Function_int %donor_replacementGLF_dead6tree %47
+         %49 = OpLoad %int %48
+               OpStore %GLF_dead6currentNode %49
+         %50 = OpLoad %int %GLF_dead6currentNode
+               OpStore %GLF_dead6index %50
+               OpBranch %41
+         %41 = OpLabel
+               OpBranch %39
+         %40 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %51
+%tint_symbol = OpFunctionParameter %main_out
+         %55 = OpLabel
+         %56 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %56
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %58 = OpLabel
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %v4float %x_GLF_color
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_2 %62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..eec717f
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var GLF_dead6index : i32;
+  var GLF_dead6currentNode : i32;
+  var donor_replacementGLF_dead6tree : array<i32, 1>;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  GLF_dead6index = 0;
+  let x_34 : f32 = x_6.injectionSwitch.y;
+  if ((x_34 < 0.0)) {
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+      let x_9 : i32 = GLF_dead6index;
+      let x_10 : i32 = donor_replacementGLF_dead6tree[x_9];
+      GLF_dead6currentNode = x_10;
+      let x_11 : i32 = GLF_dead6currentNode;
+      GLF_dead6index = x_11;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm
new file mode 100644
index 0000000..180f484
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm
@@ -0,0 +1,113 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %performPartition_ "performPartition("
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %GLF_live0i "GLF_live0i"
+               OpName %i "i"
+               OpDecorate %performPartition_ RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %GLF_live0i RelaxedPrecision
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %11 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %15 = OpTypeFunction %int
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+         %32 = OpUndef %int
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %13
+         %34 = OpLabel
+          %9 = OpFunctionCall %int %performPartition_
+               OpReturn
+               OpFunctionEnd
+%performPartition_ = OpFunction %int None %15
+         %35 = OpLabel
+ %GLF_live0i = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %21
+               OpBranch %36
+         %36 = OpLabel
+         %10 = OpPhi %int %32 %35 %11 %37
+               OpLoopMerge %38 %37 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %41 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %45 = OpLabel
+               OpStore %GLF_live0i %int_0
+               OpBranch %46
+         %46 = OpLabel
+         %47 = OpSLessThan %bool %int_0 %int_1
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+               OpSelectionMerge %51 None
+               OpBranchConditional %42 %48 %51
+         %48 = OpLabel
+               OpSelectionMerge %52 None
+               OpBranchConditional %42 %53 %52
+         %51 = OpLabel
+               OpReturnValue %int_1
+         %49 = OpLabel
+               OpBranch %46
+         %53 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpLoopMerge %55 %56 None
+               OpBranch %57
+         %57 = OpLabel
+               OpReturnValue %int_1
+         %56 = OpLabel
+               OpBranch %54
+         %55 = OpLabel
+               OpUnreachable
+         %52 = OpLabel
+               OpBranch %37
+         %44 = OpLabel
+               OpBranch %37
+         %43 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+         %11 = OpPhi %int %10 %44 %10 %52 %int_0 %43
+               OpBranchConditional %false %36 %38
+         %38 = OpLabel
+               OpReturnValue %11
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..301c375
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,86 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+int performPartition_() {
+  int GLF_live0i = 0;
+  int i = 0;
+  int x_11 = 0;
+  int x_10_phi = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_10_phi = 0;
+  while (true) {
+    int x_11_phi = 0;
+    const int x_10 = x_10_phi;
+    bool x_42 = false;
+    const float x_41 = asfloat(x_6[0].y);
+    x_42 = (x_41 < 0.0f);
+    if (x_42) {
+      x_11_phi = x_10;
+      {
+        x_11 = x_11_phi;
+        x_10_phi = x_11;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    } else {
+      GLF_live0i = 0;
+      while (true) {
+        const bool x_47 = (0 < 1);
+        if (x_42) {
+          break;
+        }
+        return 1;
+      }
+      if (x_42) {
+        while (true) {
+          return 1;
+        }
+        return 0;
+      }
+      x_11_phi = x_10;
+      {
+        x_11 = x_11_phi;
+        x_10_phi = x_11;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    x_11_phi = 0;
+    {
+      x_11 = x_11_phi;
+      x_10_phi = x_11;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return x_11;
+}
+
+void main_1() {
+  const int x_9 = performPartition_();
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..4c1cf9d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.msl
@@ -0,0 +1,89 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int performPartition_(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int GLF_live0i = 0;
+  int i = 0;
+  int x_11 = 0;
+  int x_10_phi = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_10_phi = 0;
+  while (true) {
+    int x_11_phi = 0;
+    int const x_10 = x_10_phi;
+    bool x_42 = false;
+    float const x_41 = x_6.injectionSwitch.y;
+    x_42 = (x_41 < 0.0f);
+    if (x_42) {
+      x_11_phi = x_10;
+      {
+        x_11 = x_11_phi;
+        x_10_phi = x_11;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    } else {
+      GLF_live0i = 0;
+      while (true) {
+        bool const x_47 = (0 < 1);
+        if (x_42) {
+          break;
+        }
+        return 1;
+      }
+      if (x_42) {
+        while (true) {
+          return 1;
+        }
+        return 0;
+      }
+      x_11_phi = x_10;
+      {
+        x_11 = x_11_phi;
+        x_10_phi = x_11;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    x_11_phi = 0;
+    {
+      x_11 = x_11_phi;
+      x_10_phi = x_11;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return x_11;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  int const x_9 = performPartition_(x_6, tint_symbol_5);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b8befb6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,172 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 87
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %performPartition_ "performPartition_"
+               OpName %GLF_live0i "GLF_live0i"
+               OpName %i "i"
+               OpName %x_11 "x_11"
+               OpName %x_10_phi "x_10_phi"
+               OpName %x_11_phi "x_11_phi"
+               OpName %x_42 "x_42"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+         %12 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %35 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+       %void = OpTypeVoid
+         %70 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %75 = OpTypeFunction %void %main_out
+%performPartition_ = OpFunction %int None %12
+         %15 = OpLabel
+ %GLF_live0i = OpVariable %_ptr_Function_int Function %18
+          %i = OpVariable %_ptr_Function_int Function %18
+       %x_11 = OpVariable %_ptr_Function_int Function %18
+   %x_10_phi = OpVariable %_ptr_Function_int Function %18
+   %x_11_phi = OpVariable %_ptr_Function_int Function %18
+       %x_42 = OpVariable %_ptr_Function_bool Function %35
+               OpStore %x_GLF_color %24
+               OpStore %x_10_phi %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %31 = OpLoad %int %x_10_phi
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %41 %float_0
+               OpStore %x_42 %42
+         %43 = OpLoad %bool %x_42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+               OpStore %x_11_phi %31
+               OpBranch %28
+         %46 = OpLabel
+               OpStore %GLF_live0i %int_0
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %52 = OpSLessThan %bool %int_0 %int_1
+         %53 = OpLoad %bool %x_42
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpBranch %48
+         %54 = OpLabel
+               OpReturnValue %int_1
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+         %56 = OpLoad %bool %x_42
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+               OpReturnValue %int_1
+         %61 = OpLabel
+               OpBranch %59
+         %60 = OpLabel
+               OpReturnValue %int_0
+         %57 = OpLabel
+               OpStore %x_11_phi %31
+               OpBranch %28
+         %44 = OpLabel
+               OpStore %x_11_phi %int_0
+               OpBranch %28
+         %28 = OpLabel
+         %63 = OpLoad %int %x_11_phi
+               OpStore %x_11 %63
+         %64 = OpLoad %int %x_11
+               OpStore %x_10_phi %64
+               OpSelectionMerge %66 None
+               OpBranchConditional %false %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %27
+         %66 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %69 = OpLoad %int %x_11
+               OpReturnValue %69
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %70
+         %73 = OpLabel
+         %74 = OpFunctionCall %int %performPartition_
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %75
+%tint_symbol = OpFunctionParameter %main_out
+         %79 = OpLabel
+         %80 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %80
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %70
+         %82 = OpLabel
+         %83 = OpFunctionCall %void %main_1
+         %85 = OpLoad %v4float %x_GLF_color
+         %86 = OpCompositeConstruct %main_out %85
+         %84 = OpFunctionCall %void %tint_symbol_2 %86
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 28[%28] is not post dominated by the back-edge block 66[%66]
+  %66 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..0ddfab8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,72 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn performPartition_() -> i32 {
+  var GLF_live0i : i32;
+  var i : i32;
+  var x_11 : i32;
+  var x_10_phi : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_10_phi = 0;
+  loop {
+    var x_11_phi : i32;
+    let x_10 : i32 = x_10_phi;
+    var x_42 : bool;
+    let x_41 : f32 = x_6.injectionSwitch.y;
+    x_42 = (x_41 < 0.0);
+    if (x_42) {
+      x_11_phi = x_10;
+      continue;
+    } else {
+      GLF_live0i = 0;
+      loop {
+        let x_47 : bool = (0 < 1);
+        if (x_42) {
+          break;
+        }
+        return 1;
+      }
+      if (x_42) {
+        loop {
+          return 1;
+        }
+        return 0;
+      }
+      x_11_phi = x_10;
+      continue;
+    }
+    x_11_phi = 0;
+
+    continuing {
+      x_11 = x_11_phi;
+      x_10_phi = x_11;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return x_11;
+}
+
+fn main_1() {
+  let x_9 : i32 = performPartition_();
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
new file mode 100644
index 0000000..0ddfab8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
@@ -0,0 +1,72 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn performPartition_() -> i32 {
+  var GLF_live0i : i32;
+  var i : i32;
+  var x_11 : i32;
+  var x_10_phi : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_10_phi = 0;
+  loop {
+    var x_11_phi : i32;
+    let x_10 : i32 = x_10_phi;
+    var x_42 : bool;
+    let x_41 : f32 = x_6.injectionSwitch.y;
+    x_42 = (x_41 < 0.0);
+    if (x_42) {
+      x_11_phi = x_10;
+      continue;
+    } else {
+      GLF_live0i = 0;
+      loop {
+        let x_47 : bool = (0 < 1);
+        if (x_42) {
+          break;
+        }
+        return 1;
+      }
+      if (x_42) {
+        loop {
+          return 1;
+        }
+        return 0;
+      }
+      x_11_phi = x_10;
+      continue;
+    }
+    x_11_phi = 0;
+
+    continuing {
+      x_11 = x_11_phi;
+      x_10_phi = x_11;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return x_11;
+}
+
+fn main_1() {
+  let x_9 : i32 = performPartition_();
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..301c375
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,86 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+int performPartition_() {
+  int GLF_live0i = 0;
+  int i = 0;
+  int x_11 = 0;
+  int x_10_phi = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_10_phi = 0;
+  while (true) {
+    int x_11_phi = 0;
+    const int x_10 = x_10_phi;
+    bool x_42 = false;
+    const float x_41 = asfloat(x_6[0].y);
+    x_42 = (x_41 < 0.0f);
+    if (x_42) {
+      x_11_phi = x_10;
+      {
+        x_11 = x_11_phi;
+        x_10_phi = x_11;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    } else {
+      GLF_live0i = 0;
+      while (true) {
+        const bool x_47 = (0 < 1);
+        if (x_42) {
+          break;
+        }
+        return 1;
+      }
+      if (x_42) {
+        while (true) {
+          return 1;
+        }
+        return 0;
+      }
+      x_11_phi = x_10;
+      {
+        x_11 = x_11_phi;
+        x_10_phi = x_11;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    x_11_phi = 0;
+    {
+      x_11 = x_11_phi;
+      x_10_phi = x_11;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return x_11;
+}
+
+void main_1() {
+  const int x_9 = performPartition_();
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..4c1cf9d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.msl
@@ -0,0 +1,89 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int performPartition_(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int GLF_live0i = 0;
+  int i = 0;
+  int x_11 = 0;
+  int x_10_phi = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_10_phi = 0;
+  while (true) {
+    int x_11_phi = 0;
+    int const x_10 = x_10_phi;
+    bool x_42 = false;
+    float const x_41 = x_6.injectionSwitch.y;
+    x_42 = (x_41 < 0.0f);
+    if (x_42) {
+      x_11_phi = x_10;
+      {
+        x_11 = x_11_phi;
+        x_10_phi = x_11;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    } else {
+      GLF_live0i = 0;
+      while (true) {
+        bool const x_47 = (0 < 1);
+        if (x_42) {
+          break;
+        }
+        return 1;
+      }
+      if (x_42) {
+        while (true) {
+          return 1;
+        }
+        return 0;
+      }
+      x_11_phi = x_10;
+      {
+        x_11 = x_11_phi;
+        x_10_phi = x_11;
+        if (false) {
+        } else {
+          break;
+        }
+      }
+      continue;
+    }
+    x_11_phi = 0;
+    {
+      x_11 = x_11_phi;
+      x_10_phi = x_11;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return x_11;
+}
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_5) {
+  int const x_9 = performPartition_(x_6, tint_symbol_5);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_6, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b8befb6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,172 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 87
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %performPartition_ "performPartition_"
+               OpName %GLF_live0i "GLF_live0i"
+               OpName %i "i"
+               OpName %x_11 "x_11"
+               OpName %x_10_phi "x_10_phi"
+               OpName %x_11_phi "x_11_phi"
+               OpName %x_42 "x_42"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+         %12 = OpTypeFunction %int
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %35 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+      %false = OpConstantFalse %bool
+       %void = OpTypeVoid
+         %70 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %75 = OpTypeFunction %void %main_out
+%performPartition_ = OpFunction %int None %12
+         %15 = OpLabel
+ %GLF_live0i = OpVariable %_ptr_Function_int Function %18
+          %i = OpVariable %_ptr_Function_int Function %18
+       %x_11 = OpVariable %_ptr_Function_int Function %18
+   %x_10_phi = OpVariable %_ptr_Function_int Function %18
+   %x_11_phi = OpVariable %_ptr_Function_int Function %18
+       %x_42 = OpVariable %_ptr_Function_bool Function %35
+               OpStore %x_GLF_color %24
+               OpStore %x_10_phi %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %31 = OpLoad %int %x_10_phi
+         %40 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %41 %float_0
+               OpStore %x_42 %42
+         %43 = OpLoad %bool %x_42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+               OpStore %x_11_phi %31
+               OpBranch %28
+         %46 = OpLabel
+               OpStore %GLF_live0i %int_0
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %52 = OpSLessThan %bool %int_0 %int_1
+         %53 = OpLoad %bool %x_42
+               OpSelectionMerge %54 None
+               OpBranchConditional %53 %55 %54
+         %55 = OpLabel
+               OpBranch %48
+         %54 = OpLabel
+               OpReturnValue %int_1
+         %49 = OpLabel
+               OpBranch %47
+         %48 = OpLabel
+         %56 = OpLoad %bool %x_42
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+               OpReturnValue %int_1
+         %61 = OpLabel
+               OpBranch %59
+         %60 = OpLabel
+               OpReturnValue %int_0
+         %57 = OpLabel
+               OpStore %x_11_phi %31
+               OpBranch %28
+         %44 = OpLabel
+               OpStore %x_11_phi %int_0
+               OpBranch %28
+         %28 = OpLabel
+         %63 = OpLoad %int %x_11_phi
+               OpStore %x_11 %63
+         %64 = OpLoad %int %x_11
+               OpStore %x_10_phi %64
+               OpSelectionMerge %66 None
+               OpBranchConditional %false %67 %68
+         %67 = OpLabel
+               OpBranch %66
+         %68 = OpLabel
+               OpBranch %27
+         %66 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %69 = OpLoad %int %x_11
+               OpReturnValue %69
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %70
+         %73 = OpLabel
+         %74 = OpFunctionCall %int %performPartition_
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %75
+%tint_symbol = OpFunctionParameter %main_out
+         %79 = OpLabel
+         %80 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %80
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %70
+         %82 = OpLabel
+         %83 = OpFunctionCall %void %main_1
+         %85 = OpLoad %v4float %x_GLF_color
+         %86 = OpCompositeConstruct %main_out %85
+         %84 = OpFunctionCall %void %tint_symbol_2 %86
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 28[%28] is not post dominated by the back-edge block 66[%66]
+  %66 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..0ddfab8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,72 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn performPartition_() -> i32 {
+  var GLF_live0i : i32;
+  var i : i32;
+  var x_11 : i32;
+  var x_10_phi : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_10_phi = 0;
+  loop {
+    var x_11_phi : i32;
+    let x_10 : i32 = x_10_phi;
+    var x_42 : bool;
+    let x_41 : f32 = x_6.injectionSwitch.y;
+    x_42 = (x_41 < 0.0);
+    if (x_42) {
+      x_11_phi = x_10;
+      continue;
+    } else {
+      GLF_live0i = 0;
+      loop {
+        let x_47 : bool = (0 < 1);
+        if (x_42) {
+          break;
+        }
+        return 1;
+      }
+      if (x_42) {
+        loop {
+          return 1;
+        }
+        return 0;
+      }
+      x_11_phi = x_10;
+      continue;
+    }
+    x_11_phi = 0;
+
+    continuing {
+      x_11 = x_11_phi;
+      x_10_phi = x_11;
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  return x_11;
+}
+
+fn main_1() {
+  let x_9 : i32 = performPartition_();
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm
new file mode 100644
index 0000000..88da2e9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm
@@ -0,0 +1,71 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+      %false = OpConstantFalse %bool
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %28 = OpUndef %float
+       %main = OpFunction %void None %7
+         %29 = OpLabel
+         %30 = OpVariable %_ptr_Function_float Function
+               OpBranch %31
+         %31 = OpLabel
+         %32 = OpPhi %float %28 %29 %33 %34
+               OpLoopMerge %35 %34 None
+               OpBranch %36
+         %36 = OpLabel
+         %33 = OpPhi %float %32 %31 %28 %37
+         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %39 = OpLoad %float %38
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %39 %41
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %34
+         %37 = OpLabel
+               OpBranch %36
+         %44 = OpLabel
+               OpStore %_GLF_color %27
+               OpReturn
+         %43 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpBranch %31
+         %35 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..704ebff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float x_30 = 0.0f;
+  float x_32_phi = 0.0f;
+  x_32_phi = 0.0f;
+  while (true) {
+    float x_33_phi = 0.0f;
+    x_33_phi = x_32_phi;
+    const float x_33 = x_33_phi;
+    const float x_39 = asfloat(x_5[0].x);
+    const float x_41 = asfloat(x_5[0].y);
+    if ((x_39 < x_41)) {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      return;
+    } else {
+      {
+        x_32_phi = x_33;
+      }
+      continue;
+    }
+    {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f3bfdd2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float x_30 = 0.0f;
+  float x_32_phi = 0.0f;
+  x_32_phi = 0.0f;
+  while (true) {
+    float x_33_phi = 0.0f;
+    float const x_32 = x_32_phi;
+    x_33_phi = x_32;
+    float const x_33 = x_33_phi;
+    float const x_39 = x_5.injectionSwitch.x;
+    float const x_41 = x_5.injectionSwitch.y;
+    if ((x_39 < x_41)) {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      return;
+    } else {
+      {
+        x_32_phi = x_33;
+      }
+      continue;
+    }
+    {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2cc6d3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %x_32_phi "x_32_phi"
+               OpName %x_33_phi "x_33_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+    %float_0 = OpConstant %float 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %43 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_float Function %18
+   %x_32_phi = OpVariable %_ptr_Function_float Function %18
+   %x_33_phi = OpVariable %_ptr_Function_float Function %18
+               OpStore %x_32_phi %float_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %26 = OpLoad %float %x_32_phi
+               OpStore %x_33_phi %26
+         %27 = OpLoad %float %x_33_phi
+         %31 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %32 = OpLoad %float %31
+         %34 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %35 = OpLoad %float %34
+         %36 = OpFOrdLessThan %bool %32 %35
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpStore %x_GLF_color %42
+               OpReturn
+         %40 = OpLabel
+               OpBranch %23
+         %38 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+               OpStore %x_32_phi %27
+               OpBranch %21
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %43
+%tint_symbol = OpFunctionParameter %main_out
+         %47 = OpLabel
+         %48 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %48
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %main_1
+         %53 = OpLoad %v4float %x_GLF_color
+         %54 = OpCompositeConstruct %main_out %53
+         %52 = OpFunctionCall %void %tint_symbol_2 %54
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..ee9a420
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_30 : f32;
+  var x_32_phi : f32;
+  x_32_phi = 0.0;
+  loop {
+    var x_33_phi : f32;
+    let x_32 : f32 = x_32_phi;
+    x_33_phi = x_32;
+    let x_33 : f32 = x_33_phi;
+    let x_39 : f32 = x_5.injectionSwitch.x;
+    let x_41 : f32 = x_5.injectionSwitch.y;
+    if ((x_39 < x_41)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      return;
+    } else {
+      continue;
+    }
+
+    continuing {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
new file mode 100644
index 0000000..ee9a420
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_30 : f32;
+  var x_32_phi : f32;
+  x_32_phi = 0.0;
+  loop {
+    var x_33_phi : f32;
+    let x_32 : f32 = x_32_phi;
+    x_33_phi = x_32;
+    let x_33 : f32 = x_33_phi;
+    let x_39 : f32 = x_5.injectionSwitch.x;
+    let x_41 : f32 = x_5.injectionSwitch.y;
+    if ((x_39 < x_41)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      return;
+    } else {
+      continue;
+    }
+
+    continuing {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..704ebff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,44 @@
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float x_30 = 0.0f;
+  float x_32_phi = 0.0f;
+  x_32_phi = 0.0f;
+  while (true) {
+    float x_33_phi = 0.0f;
+    x_33_phi = x_32_phi;
+    const float x_33 = x_33_phi;
+    const float x_39 = asfloat(x_5[0].x);
+    const float x_41 = asfloat(x_5[0].y);
+    if ((x_39 < x_41)) {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      return;
+    } else {
+      {
+        x_32_phi = x_33;
+      }
+      continue;
+    }
+    {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f3bfdd2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  float x_30 = 0.0f;
+  float x_32_phi = 0.0f;
+  x_32_phi = 0.0f;
+  while (true) {
+    float x_33_phi = 0.0f;
+    float const x_32 = x_32_phi;
+    x_33_phi = x_32;
+    float const x_33 = x_33_phi;
+    float const x_39 = x_5.injectionSwitch.x;
+    float const x_41 = x_5.injectionSwitch.y;
+    if ((x_39 < x_41)) {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      return;
+    } else {
+      {
+        x_32_phi = x_33;
+      }
+      continue;
+    }
+    {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2cc6d3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 55
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_5 "x_5"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %x_32_phi "x_32_phi"
+               OpName %x_33_phi "x_33_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+    %float_0 = OpConstant %float 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %42 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %43 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_float Function %18
+   %x_32_phi = OpVariable %_ptr_Function_float Function %18
+   %x_33_phi = OpVariable %_ptr_Function_float Function %18
+               OpStore %x_32_phi %float_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %26 = OpLoad %float %x_32_phi
+               OpStore %x_33_phi %26
+         %27 = OpLoad %float %x_33_phi
+         %31 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %32 = OpLoad %float %31
+         %34 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %35 = OpLoad %float %34
+         %36 = OpFOrdLessThan %bool %32 %35
+               OpSelectionMerge %38 None
+               OpBranchConditional %36 %39 %40
+         %39 = OpLabel
+               OpStore %x_GLF_color %42
+               OpReturn
+         %40 = OpLabel
+               OpBranch %23
+         %38 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+               OpStore %x_32_phi %27
+               OpBranch %21
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %43
+%tint_symbol = OpFunctionParameter %main_out
+         %47 = OpLabel
+         %48 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %48
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %main_1
+         %53 = OpLoad %v4float %x_GLF_color
+         %54 = OpCompositeConstruct %main_out %53
+         %52 = OpFunctionCall %void %tint_symbol_2 %54
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..ee9a420
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_30 : f32;
+  var x_32_phi : f32;
+  x_32_phi = 0.0;
+  loop {
+    var x_33_phi : f32;
+    let x_32 : f32 = x_32_phi;
+    x_33_phi = x_32;
+    let x_33 : f32 = x_33_phi;
+    let x_39 : f32 = x_5.injectionSwitch.x;
+    let x_41 : f32 = x_5.injectionSwitch.y;
+    if ((x_39 < x_41)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      return;
+    } else {
+      continue;
+    }
+
+    continuing {
+      x_32_phi = x_33;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm
new file mode 100644
index 0000000..2dd3c4d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm
@@ -0,0 +1,67 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %foo "foo"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %foo RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+   %float_n1 = OpConstant %float -1
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Output_float = OpTypePointer Output %float
+%uint_178493 = OpConstant %uint 178493
+%_ptr_Function_uint = OpTypePointer Function %uint
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+       %main = OpFunction %void None %10
+         %29 = OpLabel
+         %30 = OpVariable %_ptr_Function_float Function
+        %foo = OpVariable %_ptr_Function_uint Function
+               OpStore %_GLF_color %16
+         %31 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %32 %float_n1
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %36
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_0
+         %38 = OpLoad %float %37
+               OpStore %30 %38
+               OpBranch %34
+         %36 = OpLabel
+          %6 = OpLoad %uint %foo
+          %7 = OpISub %uint %6 %int_1
+               OpStore %foo %7
+          %8 = OpIAdd %uint %uint_178493 %7
+         %39 = OpConvertUToF %float %8
+               OpStore %30 %39
+               OpBranch %34
+         %34 = OpLabel
+         %40 = OpLoad %float %30
+         %41 = OpAccessChain %_ptr_Output_float %_GLF_color %uint_0
+               OpStore %41 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..9722e0d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float x_30 = 0.0f;
+  uint foo = 0u;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_32 = gl_FragCoord.x;
+  if ((x_32 > -1.0f)) {
+    const float x_38 = x_GLF_color.x;
+    x_30 = x_38;
+  } else {
+    const uint x_7 = (foo - asuint(1));
+    foo = x_7;
+    x_30 = float((178493u + x_7));
+  }
+  x_GLF_color.x = x_30;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a3f6ec6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float x_30 = 0.0f;
+  uint foo = 0u;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_32 = (*(tint_symbol_6)).x;
+  if ((x_32 > -1.0f)) {
+    float const x_38 = (*(tint_symbol_5)).x;
+    x_30 = x_38;
+  } else {
+    uint const x_6 = foo;
+    uint const x_7 = (x_6 - as_type<uint>(1));
+    foo = x_7;
+    x_30 = float((178493u + x_7));
+  }
+  float const x_40 = x_30;
+  (*(tint_symbol_5)).x = x_40;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..10ff9fa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,100 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 60
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %foo "foo"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %21 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n1 = OpConstant %float -1
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%uint_178493 = OpConstant %uint 178493
+   %main_out = OpTypeStruct %v4float
+         %47 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_float Function %17
+        %foo = OpVariable %_ptr_Function_uint Function %21
+               OpStore %x_GLF_color %24
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %28 = OpLoad %float %27
+         %30 = OpFOrdGreaterThan %bool %28 %float_n1
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+         %35 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %36 = OpLoad %float %35
+               OpStore %x_30 %36
+               OpBranch %32
+         %34 = OpLabel
+         %37 = OpLoad %uint %foo
+         %38 = OpBitcast %uint %int_1
+         %41 = OpISub %uint %37 %38
+               OpStore %foo %41
+         %44 = OpIAdd %uint %uint_178493 %41
+         %42 = OpConvertUToF %float %44
+               OpStore %x_30 %42
+               OpBranch %32
+         %32 = OpLabel
+         %45 = OpLoad %float %x_30
+         %46 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+               OpStore %46 %45
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %47
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %51 = OpLabel
+         %52 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %52
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %54 = OpLabel
+         %55 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %55
+         %56 = OpFunctionCall %void %main_1
+         %58 = OpLoad %v4float %x_GLF_color
+         %59 = OpCompositeConstruct %main_out %58
+         %57 = OpFunctionCall %void %tint_symbol_3 %59
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3b84978
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,34 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var x_30 : f32;
+  var foo : u32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_32 : f32 = gl_FragCoord.x;
+  if ((x_32 > -1.0)) {
+    let x_38 : f32 = x_GLF_color.x;
+    x_30 = x_38;
+  } else {
+    let x_6 : u32 = foo;
+    let x_7 : u32 = (x_6 - bitcast<u32>(1));
+    foo = x_7;
+    x_30 = f32((178493u + x_7));
+  }
+  let x_40 : f32 = x_30;
+  x_GLF_color.x = x_40;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
new file mode 100644
index 0000000..3b84978
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
@@ -0,0 +1,34 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var x_30 : f32;
+  var foo : u32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_32 : f32 = gl_FragCoord.x;
+  if ((x_32 > -1.0)) {
+    let x_38 : f32 = x_GLF_color.x;
+    x_30 = x_38;
+  } else {
+    let x_6 : u32 = foo;
+    let x_7 : u32 = (x_6 - bitcast<u32>(1));
+    foo = x_7;
+    x_30 = f32((178493u + x_7));
+  }
+  let x_40 : f32 = x_30;
+  x_GLF_color.x = x_40;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..9722e0d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float x_30 = 0.0f;
+  uint foo = 0u;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_32 = gl_FragCoord.x;
+  if ((x_32 > -1.0f)) {
+    const float x_38 = x_GLF_color.x;
+    x_30 = x_38;
+  } else {
+    const uint x_7 = (foo - asuint(1));
+    foo = x_7;
+    x_30 = float((178493u + x_7));
+  }
+  x_GLF_color.x = x_30;
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a3f6ec6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float x_30 = 0.0f;
+  uint foo = 0u;
+  *(tint_symbol_5) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_32 = (*(tint_symbol_6)).x;
+  if ((x_32 > -1.0f)) {
+    float const x_38 = (*(tint_symbol_5)).x;
+    x_30 = x_38;
+  } else {
+    uint const x_6 = foo;
+    uint const x_7 = (x_6 - as_type<uint>(1));
+    foo = x_7;
+    x_30 = float((178493u + x_7));
+  }
+  float const x_40 = x_30;
+  (*(tint_symbol_5)).x = x_40;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_7));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..10ff9fa
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,100 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 60
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_30 "x_30"
+               OpName %foo "foo"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %17 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %21 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n1 = OpConstant %float -1
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%uint_178493 = OpConstant %uint 178493
+   %main_out = OpTypeStruct %v4float
+         %47 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+       %x_30 = OpVariable %_ptr_Function_float Function %17
+        %foo = OpVariable %_ptr_Function_uint Function %21
+               OpStore %x_GLF_color %24
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %28 = OpLoad %float %27
+         %30 = OpFOrdGreaterThan %bool %28 %float_n1
+               OpSelectionMerge %32 None
+               OpBranchConditional %30 %33 %34
+         %33 = OpLabel
+         %35 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+         %36 = OpLoad %float %35
+               OpStore %x_30 %36
+               OpBranch %32
+         %34 = OpLabel
+         %37 = OpLoad %uint %foo
+         %38 = OpBitcast %uint %int_1
+         %41 = OpISub %uint %37 %38
+               OpStore %foo %41
+         %44 = OpIAdd %uint %uint_178493 %41
+         %42 = OpConvertUToF %float %44
+               OpStore %x_30 %42
+               OpBranch %32
+         %32 = OpLabel
+         %45 = OpLoad %float %x_30
+         %46 = OpAccessChain %_ptr_Private_float %x_GLF_color %uint_0
+               OpStore %46 %45
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %47
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %51 = OpLabel
+         %52 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %52
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %54 = OpLabel
+         %55 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %55
+         %56 = OpFunctionCall %void %main_1
+         %58 = OpLoad %v4float %x_GLF_color
+         %59 = OpCompositeConstruct %main_out %58
+         %57 = OpFunctionCall %void %tint_symbol_3 %59
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3b84978
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,34 @@
+var<private> x_GLF_color : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  var x_30 : f32;
+  var foo : u32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_32 : f32 = gl_FragCoord.x;
+  if ((x_32 > -1.0)) {
+    let x_38 : f32 = x_GLF_color.x;
+    x_30 = x_38;
+  } else {
+    let x_6 : u32 = foo;
+    let x_7 : u32 = (x_6 - bitcast<u32>(1));
+    foo = x_7;
+    x_30 = f32((178493u + x_7));
+  }
+  let x_40 : f32 = x_30;
+  x_GLF_color.x = x_40;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm
new file mode 100644
index 0000000..d6a929a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm
@@ -0,0 +1,269 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
+               OpExecutionMode %main LocalSize 1 1 1
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %A "A"
+               OpName %i "i"
+               OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
+               OpName %value "value"
+               OpName %m "m"
+               OpName %l "l"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %n "n"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "resolution"
+               OpName %__0 ""
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "_compute_data"
+               OpName %__1 ""
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %buf2 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 2
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpDecorate %doesNotMatter BufferBlock
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 0
+       %void = OpTypeVoid
+         %18 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Function_int = OpTypePointer Function %int
+     %int_50 = OpConstant %int 50
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+   %uint_100 = OpConstant %uint 100
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+         %40 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+          %_ = OpVariable %_ptr_Uniform_buf1 Uniform
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+   %uint_120 = OpConstant %uint 120
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+        %__0 = OpVariable %_ptr_Uniform_buf2 Uniform
+      %false = OpConstantFalse %bool
+%_runtimearr_int = OpTypeRuntimeArray %int
+%doesNotMatter = OpTypeStruct %_runtimearr_int
+%_ptr_Uniform_doesNotMatter = OpTypePointer Uniform %doesNotMatter
+        %__1 = OpVariable %_ptr_Uniform_doesNotMatter Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %uint_3 = OpConstant %uint 3
+       %main = OpFunction %void None %18
+         %54 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_float_uint_1 Function
+          %i = OpVariable %_ptr_Function_int Function
+      %value = OpVariable %_ptr_Function_v4float Function
+          %m = OpVariable %_ptr_Function_int Function
+          %l = OpVariable %_ptr_Function_int Function
+          %n = OpVariable %_ptr_Function_int Function
+         %55 = OpAccessChain %_ptr_Function_float %A %int_0
+               OpStore %55 %float_0
+               OpStore %i %int_0
+               OpBranch %56
+         %56 = OpLabel
+               OpLoopMerge %57 %58 None
+               OpBranch %59
+         %59 = OpLabel
+         %60 = OpLoad %int %i
+         %61 = OpSLessThan %bool %60 %int_50
+               OpBranchConditional %61 %62 %57
+         %62 = OpLabel
+         %63 = OpLoad %int %i
+         %64 = OpSGreaterThan %bool %63 %int_0
+               OpSelectionMerge %65 None
+               OpBranchConditional %64 %66 %65
+         %66 = OpLabel
+         %67 = OpAccessChain %_ptr_Function_float %A %int_0
+         %68 = OpLoad %float %67
+         %69 = OpAccessChain %_ptr_Function_float %A %int_0
+         %70 = OpLoad %float %69
+         %71 = OpFAdd %float %70 %68
+         %72 = OpAccessChain %_ptr_Function_float %A %int_0
+               OpStore %72 %71
+               OpBranch %65
+         %65 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+         %73 = OpLoad %int %i
+         %74 = OpIAdd %int %73 %int_1
+               OpStore %i %74
+               OpBranch %56
+         %57 = OpLabel
+               OpBranch %75
+         %75 = OpLabel
+               OpLoopMerge %76 %77 None
+               OpBranch %78
+         %78 = OpLabel
+         %79 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %80 = OpLoad %uint %79
+         %81 = OpULessThan %bool %80 %uint_100
+               OpSelectionMerge %82 None
+               OpBranchConditional %81 %83 %84
+         %83 = OpLabel
+               OpStore %value %40
+               OpStore %m %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %89 = OpLoad %int %m
+         %90 = OpSLessThan %bool %89 %int_1
+               OpBranchConditional %90 %91 %86
+         %91 = OpLabel
+               OpStore %l %int_0
+               OpBranch %92
+         %92 = OpLabel
+               OpLoopMerge %93 %94 None
+               OpBranch %95
+         %95 = OpLabel
+         %96 = OpLoad %int %l
+         %97 = OpSLessThan %bool %96 %int_1
+               OpBranchConditional %97 %98 %93
+         %98 = OpLabel
+         %99 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %100 = OpLoad %float %99
+        %101 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %102 = OpLoad %float %101
+        %103 = OpFOrdGreaterThan %bool %100 %102
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+               OpReturn
+        %104 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+        %106 = OpLoad %int %l
+        %107 = OpIAdd %int %106 %int_1
+               OpStore %l %107
+               OpBranch %92
+         %93 = OpLabel
+               OpBranch %87
+         %87 = OpLabel
+        %108 = OpLoad %int %m
+        %109 = OpIAdd %int %108 %int_1
+               OpStore %m %109
+               OpBranch %85
+         %86 = OpLabel
+               OpStore %n %int_0
+               OpBranch %110
+        %110 = OpLabel
+               OpLoopMerge %111 %112 None
+               OpBranch %113
+        %113 = OpLabel
+        %114 = OpLoad %int %n
+        %115 = OpSLessThan %bool %114 %int_1
+               OpBranchConditional %115 %116 %111
+        %116 = OpLabel
+        %117 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %118 = OpLoad %float %117
+        %119 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %120 = OpLoad %float %119
+        %121 = OpFOrdGreaterThan %bool %118 %120
+               OpSelectionMerge %122 None
+               OpBranchConditional %121 %123 %122
+        %123 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %122
+        %122 = OpLabel
+               OpBranch %112
+        %112 = OpLabel
+        %124 = OpLoad %int %n
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %n %125
+               OpBranch %110
+        %111 = OpLabel
+               OpBranch %82
+         %84 = OpLabel
+        %126 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+        %127 = OpLoad %uint %126
+        %128 = OpULessThan %bool %127 %uint_120
+               OpSelectionMerge %129 None
+               OpBranchConditional %128 %130 %131
+        %130 = OpLabel
+        %132 = OpAccessChain %_ptr_Function_float %A %int_0
+        %133 = OpLoad %float %132
+        %134 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_0
+        %135 = OpLoad %float %134
+        %136 = OpFDiv %float %133 %135
+        %137 = OpAccessChain %_ptr_Function_float %A %int_0
+        %138 = OpLoad %float %137
+        %139 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %uint_1
+        %140 = OpLoad %float %139
+        %141 = OpFDiv %float %138 %140
+        %142 = OpCompositeConstruct %v4float %136 %141 %float_0 %float_1
+               OpStore %value %142
+               OpBranch %129
+        %131 = OpLabel
+        %143 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %144 = OpLoad %float %143
+        %145 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %146 = OpLoad %float %145
+        %147 = OpFOrdGreaterThan %bool %144 %146
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %148
+        %149 = OpLabel
+               OpBranch %77
+        %148 = OpLabel
+               OpBranch %129
+        %129 = OpLabel
+               OpBranch %82
+         %82 = OpLabel
+               OpBranch %77
+         %77 = OpLabel
+               OpBranchConditional %false %75 %76
+         %76 = OpLabel
+        %150 = OpAccessChain %_ptr_Function_float %value %uint_0
+        %151 = OpLoad %float %150
+        %152 = OpConvertFToS %int %151
+        %153 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_0
+               OpStore %153 %152
+        %154 = OpAccessChain %_ptr_Function_float %value %uint_1
+        %155 = OpLoad %float %154
+        %156 = OpConvertFToS %int %155
+        %157 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_1
+               OpStore %157 %156
+        %158 = OpAccessChain %_ptr_Function_float %value %uint_2
+        %159 = OpLoad %float %158
+        %160 = OpConvertFToS %int %159
+        %161 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_2
+               OpStore %161 %160
+        %162 = OpAccessChain %_ptr_Function_float %value %uint_3
+        %163 = OpLoad %float %162
+        %164 = OpConvertFToS %int %163
+        %165 = OpAccessChain %_ptr_Uniform_int %__1 %int_0 %int_3
+               OpStore %165 %164
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..47ae9f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,107 @@
+static uint3 gl_GlobalInvocationID = uint3(0u, 0u, 0u);
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[1];
+};
+cbuffer cbuffer_x_13 : register(b2, space0) {
+  uint4 x_13[1];
+};
+RWByteAddressBuffer x_15 : register(u0, space0);
+
+void main_1() {
+  float A[1] = (float[1])0;
+  int i = 0;
+  float4 value = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int m = 0;
+  int l = 0;
+  int n = 0;
+  A[0] = 0.0f;
+  i = 0;
+  {
+    for(; (i < 50); i = (i + 1)) {
+      if ((i > 0)) {
+        const float x_68 = A[0];
+        const float x_70 = A[0];
+        A[0] = (x_70 + x_68);
+      }
+    }
+  }
+  while (true) {
+    const uint x_80 = gl_GlobalInvocationID.x;
+    if ((x_80 < 100u)) {
+      value = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      m = 0;
+      {
+        for(; (m < 1); m = (m + 1)) {
+          l = 0;
+          {
+            for(; (l < 1); l = (l + 1)) {
+              const float x_100 = asfloat(x_10[0].x);
+              const float x_102 = asfloat(x_10[0].y);
+              if ((x_100 > x_102)) {
+                return;
+              }
+            }
+          }
+        }
+      }
+      n = 0;
+      {
+        for(; (n < 1); n = (n + 1)) {
+          const float x_118 = asfloat(x_10[0].x);
+          const float x_120 = asfloat(x_10[0].y);
+          if ((x_118 > x_120)) {
+            GroupMemoryBarrierWithGroupSync();
+          }
+        }
+      }
+    } else {
+      const uint x_127 = gl_GlobalInvocationID.x;
+      if ((x_127 < 120u)) {
+        const float x_133 = A[0];
+        const float x_135 = asfloat(x_13[0].x);
+        const float x_138 = A[0];
+        const float x_140 = asfloat(x_13[0].y);
+        value = float4((x_133 / x_135), (x_138 / x_140), 0.0f, 1.0f);
+      } else {
+        const float x_144 = asfloat(x_10[0].x);
+        const float x_146 = asfloat(x_10[0].y);
+        if ((x_144 > x_146)) {
+          {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+      }
+    }
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  const float x_151 = value.x;
+  x_15.Store((4u * uint(0)), asuint(int(x_151)));
+  const float x_155 = value.y;
+  x_15.Store(4u, asuint(int(x_155)));
+  const float x_159 = value.z;
+  x_15.Store(8u, asuint(int(x_159)));
+  const float x_163 = value.w;
+  x_15.Store(12u, asuint(int(x_163)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 gl_GlobalInvocationID_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 gl_GlobalInvocationID_param = tint_symbol.gl_GlobalInvocationID_param;
+  gl_GlobalInvocationID = gl_GlobalInvocationID_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a4f03c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,139 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct doesNotMatter {
+  /* 0x0000 */ int x_compute_data[1];
+};
+struct tint_array_wrapper {
+  float arr[1];
+};
+
+void main_1(constant buf1& x_10, constant buf2& x_13, device doesNotMatter& x_15, thread uint3* const tint_symbol_2) {
+  tint_array_wrapper A = {};
+  int i = 0;
+  float4 value = 0.0f;
+  int m = 0;
+  int l = 0;
+  int n = 0;
+  A.arr[0] = 0.0f;
+  i = 0;
+  while (true) {
+    int const x_60 = i;
+    if ((x_60 < 50)) {
+    } else {
+      break;
+    }
+    int const x_63 = i;
+    if ((x_63 > 0)) {
+      float const x_68 = A.arr[0];
+      float const x_70 = A.arr[0];
+      A.arr[0] = (x_70 + x_68);
+    }
+    {
+      int const x_73 = i;
+      i = (x_73 + 1);
+    }
+  }
+  while (true) {
+    uint const x_80 = (*(tint_symbol_2)).x;
+    if ((x_80 < 100u)) {
+      value = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      m = 0;
+      while (true) {
+        int const x_89 = m;
+        if ((x_89 < 1)) {
+        } else {
+          break;
+        }
+        l = 0;
+        while (true) {
+          int const x_96 = l;
+          if ((x_96 < 1)) {
+          } else {
+            break;
+          }
+          float const x_100 = x_10.injectionSwitch.x;
+          float const x_102 = x_10.injectionSwitch.y;
+          if ((x_100 > x_102)) {
+            return;
+          }
+          {
+            int const x_106 = l;
+            l = (x_106 + 1);
+          }
+        }
+        {
+          int const x_108 = m;
+          m = (x_108 + 1);
+        }
+      }
+      n = 0;
+      while (true) {
+        int const x_114 = n;
+        if ((x_114 < 1)) {
+        } else {
+          break;
+        }
+        float const x_118 = x_10.injectionSwitch.x;
+        float const x_120 = x_10.injectionSwitch.y;
+        if ((x_118 > x_120)) {
+          threadgroup_barrier(mem_flags::mem_threadgroup);
+        }
+        {
+          int const x_124 = n;
+          n = (x_124 + 1);
+        }
+      }
+    } else {
+      uint const x_127 = (*(tint_symbol_2)).x;
+      if ((x_127 < 120u)) {
+        float const x_133 = A.arr[0];
+        float const x_135 = x_13.resolution.x;
+        float const x_138 = A.arr[0];
+        float const x_140 = x_13.resolution.y;
+        value = float4((x_133 / x_135), (x_138 / x_140), 0.0f, 1.0f);
+      } else {
+        float const x_144 = x_10.injectionSwitch.x;
+        float const x_146 = x_10.injectionSwitch.y;
+        if ((x_144 > x_146)) {
+          {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+      }
+    }
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_151 = value.x;
+  x_15.x_compute_data[0] = int(x_151);
+  float const x_155 = value.y;
+  x_15.x_compute_data[1] = int(x_155);
+  float const x_159 = value.z;
+  x_15.x_compute_data[2] = int(x_159);
+  float const x_163 = value.w;
+  x_15.x_compute_data[3] = int(x_163);
+  return;
+}
+
+kernel void tint_symbol(uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]], constant buf1& x_10 [[buffer(1)]], constant buf2& x_13 [[buffer(2)]], device doesNotMatter& x_15 [[buffer(0)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = gl_GlobalInvocationID_param;
+  main_1(x_10, x_13, x_15, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..553aab9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,322 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 187
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_10 "x_10"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "x_compute_data"
+               OpName %x_15 "x_15"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %A "A"
+               OpName %i "i"
+               OpName %value "value"
+               OpName %m "m"
+               OpName %l "l"
+               OpName %n "n"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 2
+               OpDecorate %doesNotMatter Block
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 0
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+               OpDecorate %_arr_float_uint_1 ArrayStride 4
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+%gl_GlobalInvocationID = OpVariable %_ptr_Private_v3uint Private %5
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_13 = OpVariable %_ptr_Uniform_buf2 Uniform
+        %int = OpTypeInt 32 1
+%_runtimearr_int = OpTypeRuntimeArray %int
+%doesNotMatter = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_doesNotMatter = OpTypePointer StorageBuffer %doesNotMatter
+       %x_15 = OpVariable %_ptr_StorageBuffer_doesNotMatter StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+         %29 = OpConstantNull %_arr_float_uint_1
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpConstantNull %int
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %36 = OpConstantNull %v4float
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+     %int_50 = OpConstant %int 50
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+   %uint_100 = OpConstant %uint 100
+    %float_1 = OpConstant %float 1
+         %82 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+   %uint_120 = OpConstant %uint 120
+      %false = OpConstantFalse %bool
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_2 = OpConstant %int 2
+     %uint_3 = OpConstant %uint 3
+      %int_3 = OpConstant %int 3
+     %main_1 = OpFunction %void None %21
+         %24 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_float_uint_1 Function %29
+          %i = OpVariable %_ptr_Function_int Function %32
+      %value = OpVariable %_ptr_Function_v4float Function %36
+          %m = OpVariable %_ptr_Function_int Function %32
+          %l = OpVariable %_ptr_Function_int Function %32
+          %n = OpVariable %_ptr_Function_int Function %32
+         %42 = OpAccessChain %_ptr_Function_float %A %int_0
+               OpStore %42 %float_0
+               OpStore %i %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpSLessThan %bool %48 %int_50
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %45
+         %52 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpSGreaterThan %bool %55 %int_0
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+         %59 = OpAccessChain %_ptr_Function_float %A %int_0
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Function_float %A %int_0
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Function_float %A %int_0
+         %64 = OpFAdd %float %62 %60
+               OpStore %63 %64
+               OpBranch %57
+         %57 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %65 = OpLoad %int %i
+         %67 = OpIAdd %int %65 %int_1
+               OpStore %i %67
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %74 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
+         %75 = OpLoad %uint %74
+         %77 = OpULessThan %bool %75 %uint_100
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpStore %value %82
+               OpStore %m %int_0
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+         %87 = OpLoad %int %m
+         %88 = OpSLessThan %bool %87 %int_1
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+               OpBranch %89
+         %91 = OpLabel
+               OpBranch %84
+         %89 = OpLabel
+               OpStore %l %int_0
+               OpBranch %92
+         %92 = OpLabel
+               OpLoopMerge %93 %94 None
+               OpBranch %95
+         %95 = OpLabel
+         %96 = OpLoad %int %l
+         %97 = OpSLessThan %bool %96 %int_1
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %100
+         %99 = OpLabel
+               OpBranch %98
+        %100 = OpLabel
+               OpBranch %93
+         %98 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+        %105 = OpLoad %float %104
+        %106 = OpFOrdGreaterThan %bool %103 %105
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+               OpReturn
+        %107 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+        %109 = OpLoad %int %l
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %l %110
+               OpBranch %92
+         %93 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+        %111 = OpLoad %int %m
+        %112 = OpIAdd %int %111 %int_1
+               OpStore %m %112
+               OpBranch %83
+         %84 = OpLabel
+               OpStore %n %int_0
+               OpBranch %113
+        %113 = OpLabel
+               OpLoopMerge %114 %115 None
+               OpBranch %116
+        %116 = OpLabel
+        %117 = OpLoad %int %n
+        %118 = OpSLessThan %bool %117 %int_1
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %121
+        %120 = OpLabel
+               OpBranch %119
+        %121 = OpLabel
+               OpBranch %114
+        %119 = OpLabel
+        %122 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+        %125 = OpLoad %float %124
+        %126 = OpFOrdGreaterThan %bool %123 %125
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %127
+        %128 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %127
+        %127 = OpLabel
+               OpBranch %115
+        %115 = OpLabel
+        %132 = OpLoad %int %n
+        %133 = OpIAdd %int %132 %int_1
+               OpStore %n %133
+               OpBranch %113
+        %114 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+        %134 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
+        %135 = OpLoad %uint %134
+        %137 = OpULessThan %bool %135 %uint_120
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %140
+        %139 = OpLabel
+        %141 = OpAccessChain %_ptr_Function_float %A %int_0
+        %142 = OpLoad %float %141
+        %143 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+        %144 = OpLoad %float %143
+        %145 = OpAccessChain %_ptr_Function_float %A %int_0
+        %146 = OpLoad %float %145
+        %147 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_1
+        %148 = OpLoad %float %147
+        %149 = OpFDiv %float %142 %144
+        %150 = OpFDiv %float %146 %148
+        %151 = OpCompositeConstruct %v4float %149 %150 %float_0 %float_1
+               OpStore %value %151
+               OpBranch %138
+        %140 = OpLabel
+        %152 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+        %155 = OpLoad %float %154
+        %156 = OpFOrdGreaterThan %bool %153 %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %157
+        %158 = OpLabel
+               OpBranch %70
+        %157 = OpLabel
+               OpBranch %138
+        %138 = OpLabel
+               OpBranch %78
+         %78 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+               OpSelectionMerge %160 None
+               OpBranchConditional %false %161 %162
+        %161 = OpLabel
+               OpBranch %160
+        %162 = OpLabel
+               OpBranch %69
+        %160 = OpLabel
+               OpBranch %68
+         %69 = OpLabel
+        %163 = OpAccessChain %_ptr_Function_float %value %uint_0
+        %164 = OpLoad %float %163
+        %166 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %int_0
+        %167 = OpConvertFToS %int %164
+               OpStore %166 %167
+        %168 = OpAccessChain %_ptr_Function_float %value %uint_1
+        %169 = OpLoad %float %168
+        %170 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %int_1
+        %171 = OpConvertFToS %int %169
+               OpStore %170 %171
+        %172 = OpAccessChain %_ptr_Function_float %value %uint_2
+        %173 = OpLoad %float %172
+        %175 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %int_2
+        %176 = OpConvertFToS %int %173
+               OpStore %175 %176
+        %178 = OpAccessChain %_ptr_Function_float %value %uint_3
+        %179 = OpLoad %float %178
+        %181 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %int_3
+        %182 = OpConvertFToS %int %179
+               OpStore %181 %182
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %21
+        %184 = OpLabel
+        %185 = OpLoad %v3uint %tint_symbol
+               OpStore %gl_GlobalInvocationID %185
+        %186 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 70[%70] is not post dominated by the back-edge block 160[%160]
+  %160 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2b4eb0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,145 @@
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf2 {
+  resolution : vec2<f32>;
+};
+
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct doesNotMatter {
+  x_compute_data : RTArr;
+};
+
+var<private> gl_GlobalInvocationID : vec3<u32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_13 : buf2;
+
+[[group(0), binding(0)]] var<storage, read_write> x_15 : doesNotMatter;
+
+fn main_1() {
+  var A : array<f32, 1>;
+  var i : i32;
+  var value : vec4<f32>;
+  var m : i32;
+  var l : i32;
+  var n : i32;
+  A[0] = 0.0;
+  i = 0;
+  loop {
+    let x_60 : i32 = i;
+    if ((x_60 < 50)) {
+    } else {
+      break;
+    }
+    let x_63 : i32 = i;
+    if ((x_63 > 0)) {
+      let x_68 : f32 = A[0];
+      let x_70 : f32 = A[0];
+      A[0] = (x_70 + x_68);
+    }
+
+    continuing {
+      let x_73 : i32 = i;
+      i = (x_73 + 1);
+    }
+  }
+  loop {
+    let x_80 : u32 = gl_GlobalInvocationID.x;
+    if ((x_80 < 100u)) {
+      value = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+      m = 0;
+      loop {
+        let x_89 : i32 = m;
+        if ((x_89 < 1)) {
+        } else {
+          break;
+        }
+        l = 0;
+        loop {
+          let x_96 : i32 = l;
+          if ((x_96 < 1)) {
+          } else {
+            break;
+          }
+          let x_100 : f32 = x_10.injectionSwitch.x;
+          let x_102 : f32 = x_10.injectionSwitch.y;
+          if ((x_100 > x_102)) {
+            return;
+          }
+
+          continuing {
+            let x_106 : i32 = l;
+            l = (x_106 + 1);
+          }
+        }
+
+        continuing {
+          let x_108 : i32 = m;
+          m = (x_108 + 1);
+        }
+      }
+      n = 0;
+      loop {
+        let x_114 : i32 = n;
+        if ((x_114 < 1)) {
+        } else {
+          break;
+        }
+        let x_118 : f32 = x_10.injectionSwitch.x;
+        let x_120 : f32 = x_10.injectionSwitch.y;
+        if ((x_118 > x_120)) {
+          workgroupBarrier();
+        }
+
+        continuing {
+          let x_124 : i32 = n;
+          n = (x_124 + 1);
+        }
+      }
+    } else {
+      let x_127 : u32 = gl_GlobalInvocationID.x;
+      if ((x_127 < 120u)) {
+        let x_133 : f32 = A[0];
+        let x_135 : f32 = x_13.resolution.x;
+        let x_138 : f32 = A[0];
+        let x_140 : f32 = x_13.resolution.y;
+        value = vec4<f32>((x_133 / x_135), (x_138 / x_140), 0.0, 1.0);
+      } else {
+        let x_144 : f32 = x_10.injectionSwitch.x;
+        let x_146 : f32 = x_10.injectionSwitch.y;
+        if ((x_144 > x_146)) {
+          continue;
+        }
+      }
+    }
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_151 : f32 = value.x;
+  x_15.x_compute_data[0] = i32(x_151);
+  let x_155 : f32 = value.y;
+  x_15.x_compute_data[1] = i32(x_155);
+  let x_159 : f32 = value.z;
+  x_15.x_compute_data[2] = i32(x_159);
+  let x_163 : f32 = value.w;
+  x_15.x_compute_data[3] = i32(x_163);
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] gl_GlobalInvocationID_param : vec3<u32>) {
+  gl_GlobalInvocationID = gl_GlobalInvocationID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
new file mode 100644
index 0000000..2b4eb0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
@@ -0,0 +1,145 @@
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf2 {
+  resolution : vec2<f32>;
+};
+
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct doesNotMatter {
+  x_compute_data : RTArr;
+};
+
+var<private> gl_GlobalInvocationID : vec3<u32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_13 : buf2;
+
+[[group(0), binding(0)]] var<storage, read_write> x_15 : doesNotMatter;
+
+fn main_1() {
+  var A : array<f32, 1>;
+  var i : i32;
+  var value : vec4<f32>;
+  var m : i32;
+  var l : i32;
+  var n : i32;
+  A[0] = 0.0;
+  i = 0;
+  loop {
+    let x_60 : i32 = i;
+    if ((x_60 < 50)) {
+    } else {
+      break;
+    }
+    let x_63 : i32 = i;
+    if ((x_63 > 0)) {
+      let x_68 : f32 = A[0];
+      let x_70 : f32 = A[0];
+      A[0] = (x_70 + x_68);
+    }
+
+    continuing {
+      let x_73 : i32 = i;
+      i = (x_73 + 1);
+    }
+  }
+  loop {
+    let x_80 : u32 = gl_GlobalInvocationID.x;
+    if ((x_80 < 100u)) {
+      value = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+      m = 0;
+      loop {
+        let x_89 : i32 = m;
+        if ((x_89 < 1)) {
+        } else {
+          break;
+        }
+        l = 0;
+        loop {
+          let x_96 : i32 = l;
+          if ((x_96 < 1)) {
+          } else {
+            break;
+          }
+          let x_100 : f32 = x_10.injectionSwitch.x;
+          let x_102 : f32 = x_10.injectionSwitch.y;
+          if ((x_100 > x_102)) {
+            return;
+          }
+
+          continuing {
+            let x_106 : i32 = l;
+            l = (x_106 + 1);
+          }
+        }
+
+        continuing {
+          let x_108 : i32 = m;
+          m = (x_108 + 1);
+        }
+      }
+      n = 0;
+      loop {
+        let x_114 : i32 = n;
+        if ((x_114 < 1)) {
+        } else {
+          break;
+        }
+        let x_118 : f32 = x_10.injectionSwitch.x;
+        let x_120 : f32 = x_10.injectionSwitch.y;
+        if ((x_118 > x_120)) {
+          workgroupBarrier();
+        }
+
+        continuing {
+          let x_124 : i32 = n;
+          n = (x_124 + 1);
+        }
+      }
+    } else {
+      let x_127 : u32 = gl_GlobalInvocationID.x;
+      if ((x_127 < 120u)) {
+        let x_133 : f32 = A[0];
+        let x_135 : f32 = x_13.resolution.x;
+        let x_138 : f32 = A[0];
+        let x_140 : f32 = x_13.resolution.y;
+        value = vec4<f32>((x_133 / x_135), (x_138 / x_140), 0.0, 1.0);
+      } else {
+        let x_144 : f32 = x_10.injectionSwitch.x;
+        let x_146 : f32 = x_10.injectionSwitch.y;
+        if ((x_144 > x_146)) {
+          continue;
+        }
+      }
+    }
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_151 : f32 = value.x;
+  x_15.x_compute_data[0] = i32(x_151);
+  let x_155 : f32 = value.y;
+  x_15.x_compute_data[1] = i32(x_155);
+  let x_159 : f32 = value.z;
+  x_15.x_compute_data[2] = i32(x_159);
+  let x_163 : f32 = value.w;
+  x_15.x_compute_data[3] = i32(x_163);
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] gl_GlobalInvocationID_param : vec3<u32>) {
+  gl_GlobalInvocationID = gl_GlobalInvocationID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..47ae9f1
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,107 @@
+static uint3 gl_GlobalInvocationID = uint3(0u, 0u, 0u);
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[1];
+};
+cbuffer cbuffer_x_13 : register(b2, space0) {
+  uint4 x_13[1];
+};
+RWByteAddressBuffer x_15 : register(u0, space0);
+
+void main_1() {
+  float A[1] = (float[1])0;
+  int i = 0;
+  float4 value = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  int m = 0;
+  int l = 0;
+  int n = 0;
+  A[0] = 0.0f;
+  i = 0;
+  {
+    for(; (i < 50); i = (i + 1)) {
+      if ((i > 0)) {
+        const float x_68 = A[0];
+        const float x_70 = A[0];
+        A[0] = (x_70 + x_68);
+      }
+    }
+  }
+  while (true) {
+    const uint x_80 = gl_GlobalInvocationID.x;
+    if ((x_80 < 100u)) {
+      value = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      m = 0;
+      {
+        for(; (m < 1); m = (m + 1)) {
+          l = 0;
+          {
+            for(; (l < 1); l = (l + 1)) {
+              const float x_100 = asfloat(x_10[0].x);
+              const float x_102 = asfloat(x_10[0].y);
+              if ((x_100 > x_102)) {
+                return;
+              }
+            }
+          }
+        }
+      }
+      n = 0;
+      {
+        for(; (n < 1); n = (n + 1)) {
+          const float x_118 = asfloat(x_10[0].x);
+          const float x_120 = asfloat(x_10[0].y);
+          if ((x_118 > x_120)) {
+            GroupMemoryBarrierWithGroupSync();
+          }
+        }
+      }
+    } else {
+      const uint x_127 = gl_GlobalInvocationID.x;
+      if ((x_127 < 120u)) {
+        const float x_133 = A[0];
+        const float x_135 = asfloat(x_13[0].x);
+        const float x_138 = A[0];
+        const float x_140 = asfloat(x_13[0].y);
+        value = float4((x_133 / x_135), (x_138 / x_140), 0.0f, 1.0f);
+      } else {
+        const float x_144 = asfloat(x_10[0].x);
+        const float x_146 = asfloat(x_10[0].y);
+        if ((x_144 > x_146)) {
+          {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+      }
+    }
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  const float x_151 = value.x;
+  x_15.Store((4u * uint(0)), asuint(int(x_151)));
+  const float x_155 = value.y;
+  x_15.Store(4u, asuint(int(x_155)));
+  const float x_159 = value.z;
+  x_15.Store(8u, asuint(int(x_159)));
+  const float x_163 = value.w;
+  x_15.Store(12u, asuint(int(x_163)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 gl_GlobalInvocationID_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 gl_GlobalInvocationID_param = tint_symbol.gl_GlobalInvocationID_param;
+  gl_GlobalInvocationID = gl_GlobalInvocationID_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a4f03c0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,139 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf1 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct buf2 {
+  /* 0x0000 */ packed_float2 resolution;
+};
+struct doesNotMatter {
+  /* 0x0000 */ int x_compute_data[1];
+};
+struct tint_array_wrapper {
+  float arr[1];
+};
+
+void main_1(constant buf1& x_10, constant buf2& x_13, device doesNotMatter& x_15, thread uint3* const tint_symbol_2) {
+  tint_array_wrapper A = {};
+  int i = 0;
+  float4 value = 0.0f;
+  int m = 0;
+  int l = 0;
+  int n = 0;
+  A.arr[0] = 0.0f;
+  i = 0;
+  while (true) {
+    int const x_60 = i;
+    if ((x_60 < 50)) {
+    } else {
+      break;
+    }
+    int const x_63 = i;
+    if ((x_63 > 0)) {
+      float const x_68 = A.arr[0];
+      float const x_70 = A.arr[0];
+      A.arr[0] = (x_70 + x_68);
+    }
+    {
+      int const x_73 = i;
+      i = (x_73 + 1);
+    }
+  }
+  while (true) {
+    uint const x_80 = (*(tint_symbol_2)).x;
+    if ((x_80 < 100u)) {
+      value = float4(0.0f, 0.0f, 0.0f, 1.0f);
+      m = 0;
+      while (true) {
+        int const x_89 = m;
+        if ((x_89 < 1)) {
+        } else {
+          break;
+        }
+        l = 0;
+        while (true) {
+          int const x_96 = l;
+          if ((x_96 < 1)) {
+          } else {
+            break;
+          }
+          float const x_100 = x_10.injectionSwitch.x;
+          float const x_102 = x_10.injectionSwitch.y;
+          if ((x_100 > x_102)) {
+            return;
+          }
+          {
+            int const x_106 = l;
+            l = (x_106 + 1);
+          }
+        }
+        {
+          int const x_108 = m;
+          m = (x_108 + 1);
+        }
+      }
+      n = 0;
+      while (true) {
+        int const x_114 = n;
+        if ((x_114 < 1)) {
+        } else {
+          break;
+        }
+        float const x_118 = x_10.injectionSwitch.x;
+        float const x_120 = x_10.injectionSwitch.y;
+        if ((x_118 > x_120)) {
+          threadgroup_barrier(mem_flags::mem_threadgroup);
+        }
+        {
+          int const x_124 = n;
+          n = (x_124 + 1);
+        }
+      }
+    } else {
+      uint const x_127 = (*(tint_symbol_2)).x;
+      if ((x_127 < 120u)) {
+        float const x_133 = A.arr[0];
+        float const x_135 = x_13.resolution.x;
+        float const x_138 = A.arr[0];
+        float const x_140 = x_13.resolution.y;
+        value = float4((x_133 / x_135), (x_138 / x_140), 0.0f, 1.0f);
+      } else {
+        float const x_144 = x_10.injectionSwitch.x;
+        float const x_146 = x_10.injectionSwitch.y;
+        if ((x_144 > x_146)) {
+          {
+            if (false) {
+            } else {
+              break;
+            }
+          }
+          continue;
+        }
+      }
+    }
+    {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  float const x_151 = value.x;
+  x_15.x_compute_data[0] = int(x_151);
+  float const x_155 = value.y;
+  x_15.x_compute_data[1] = int(x_155);
+  float const x_159 = value.z;
+  x_15.x_compute_data[2] = int(x_159);
+  float const x_163 = value.w;
+  x_15.x_compute_data[3] = int(x_163);
+  return;
+}
+
+kernel void tint_symbol(uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]], constant buf1& x_10 [[buffer(1)]], constant buf2& x_13 [[buffer(2)]], device doesNotMatter& x_15 [[buffer(0)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = gl_GlobalInvocationID_param;
+  main_1(x_10, x_13, x_15, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..553aab9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,322 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 187
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
+               OpName %buf1 "buf1"
+               OpMemberName %buf1 0 "injectionSwitch"
+               OpName %x_10 "x_10"
+               OpName %buf2 "buf2"
+               OpMemberName %buf2 0 "resolution"
+               OpName %x_13 "x_13"
+               OpName %doesNotMatter "doesNotMatter"
+               OpMemberName %doesNotMatter 0 "x_compute_data"
+               OpName %x_15 "x_15"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %A "A"
+               OpName %i "i"
+               OpName %value "value"
+               OpName %m "m"
+               OpName %l "l"
+               OpName %n "n"
+               OpName %main "main"
+               OpDecorate %buf1 Block
+               OpMemberDecorate %buf1 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 1
+               OpDecorate %buf2 Block
+               OpMemberDecorate %buf2 0 Offset 0
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 2
+               OpDecorate %doesNotMatter Block
+               OpMemberDecorate %doesNotMatter 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 0
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+               OpDecorate %_arr_float_uint_1 ArrayStride 4
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+%gl_GlobalInvocationID = OpVariable %_ptr_Private_v3uint Private %5
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf1 = OpTypeStruct %v2float
+%_ptr_Uniform_buf1 = OpTypePointer Uniform %buf1
+       %x_10 = OpVariable %_ptr_Uniform_buf1 Uniform
+       %buf2 = OpTypeStruct %v2float
+%_ptr_Uniform_buf2 = OpTypePointer Uniform %buf2
+       %x_13 = OpVariable %_ptr_Uniform_buf2 Uniform
+        %int = OpTypeInt 32 1
+%_runtimearr_int = OpTypeRuntimeArray %int
+%doesNotMatter = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_doesNotMatter = OpTypePointer StorageBuffer %doesNotMatter
+       %x_15 = OpVariable %_ptr_StorageBuffer_doesNotMatter StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+         %29 = OpConstantNull %_arr_float_uint_1
+%_ptr_Function_int = OpTypePointer Function %int
+         %32 = OpConstantNull %int
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %36 = OpConstantNull %v4float
+      %int_0 = OpConstant %int 0
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_0 = OpConstant %float 0
+     %int_50 = OpConstant %int 50
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+   %uint_100 = OpConstant %uint 100
+    %float_1 = OpConstant %float 1
+         %82 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+   %uint_120 = OpConstant %uint 120
+      %false = OpConstantFalse %bool
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_2 = OpConstant %int 2
+     %uint_3 = OpConstant %uint 3
+      %int_3 = OpConstant %int 3
+     %main_1 = OpFunction %void None %21
+         %24 = OpLabel
+          %A = OpVariable %_ptr_Function__arr_float_uint_1 Function %29
+          %i = OpVariable %_ptr_Function_int Function %32
+      %value = OpVariable %_ptr_Function_v4float Function %36
+          %m = OpVariable %_ptr_Function_int Function %32
+          %l = OpVariable %_ptr_Function_int Function %32
+          %n = OpVariable %_ptr_Function_int Function %32
+         %42 = OpAccessChain %_ptr_Function_float %A %int_0
+               OpStore %42 %float_0
+               OpStore %i %int_0
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+         %48 = OpLoad %int %i
+         %50 = OpSLessThan %bool %48 %int_50
+               OpSelectionMerge %52 None
+               OpBranchConditional %50 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %45
+         %52 = OpLabel
+         %55 = OpLoad %int %i
+         %56 = OpSGreaterThan %bool %55 %int_0
+               OpSelectionMerge %57 None
+               OpBranchConditional %56 %58 %57
+         %58 = OpLabel
+         %59 = OpAccessChain %_ptr_Function_float %A %int_0
+         %60 = OpLoad %float %59
+         %61 = OpAccessChain %_ptr_Function_float %A %int_0
+         %62 = OpLoad %float %61
+         %63 = OpAccessChain %_ptr_Function_float %A %int_0
+         %64 = OpFAdd %float %62 %60
+               OpStore %63 %64
+               OpBranch %57
+         %57 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+         %65 = OpLoad %int %i
+         %67 = OpIAdd %int %65 %int_1
+               OpStore %i %67
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpLoopMerge %69 %70 None
+               OpBranch %71
+         %71 = OpLabel
+         %74 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
+         %75 = OpLoad %uint %74
+         %77 = OpULessThan %bool %75 %uint_100
+               OpSelectionMerge %78 None
+               OpBranchConditional %77 %79 %80
+         %79 = OpLabel
+               OpStore %value %82
+               OpStore %m %int_0
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+         %87 = OpLoad %int %m
+         %88 = OpSLessThan %bool %87 %int_1
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %91
+         %90 = OpLabel
+               OpBranch %89
+         %91 = OpLabel
+               OpBranch %84
+         %89 = OpLabel
+               OpStore %l %int_0
+               OpBranch %92
+         %92 = OpLabel
+               OpLoopMerge %93 %94 None
+               OpBranch %95
+         %95 = OpLabel
+         %96 = OpLoad %int %l
+         %97 = OpSLessThan %bool %96 %int_1
+               OpSelectionMerge %98 None
+               OpBranchConditional %97 %99 %100
+         %99 = OpLabel
+               OpBranch %98
+        %100 = OpLabel
+               OpBranch %93
+         %98 = OpLabel
+        %102 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %103 = OpLoad %float %102
+        %104 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+        %105 = OpLoad %float %104
+        %106 = OpFOrdGreaterThan %bool %103 %105
+               OpSelectionMerge %107 None
+               OpBranchConditional %106 %108 %107
+        %108 = OpLabel
+               OpReturn
+        %107 = OpLabel
+               OpBranch %94
+         %94 = OpLabel
+        %109 = OpLoad %int %l
+        %110 = OpIAdd %int %109 %int_1
+               OpStore %l %110
+               OpBranch %92
+         %93 = OpLabel
+               OpBranch %85
+         %85 = OpLabel
+        %111 = OpLoad %int %m
+        %112 = OpIAdd %int %111 %int_1
+               OpStore %m %112
+               OpBranch %83
+         %84 = OpLabel
+               OpStore %n %int_0
+               OpBranch %113
+        %113 = OpLabel
+               OpLoopMerge %114 %115 None
+               OpBranch %116
+        %116 = OpLabel
+        %117 = OpLoad %int %n
+        %118 = OpSLessThan %bool %117 %int_1
+               OpSelectionMerge %119 None
+               OpBranchConditional %118 %120 %121
+        %120 = OpLabel
+               OpBranch %119
+        %121 = OpLabel
+               OpBranch %114
+        %119 = OpLabel
+        %122 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %123 = OpLoad %float %122
+        %124 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+        %125 = OpLoad %float %124
+        %126 = OpFOrdGreaterThan %bool %123 %125
+               OpSelectionMerge %127 None
+               OpBranchConditional %126 %128 %127
+        %128 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpBranch %127
+        %127 = OpLabel
+               OpBranch %115
+        %115 = OpLabel
+        %132 = OpLoad %int %n
+        %133 = OpIAdd %int %132 %int_1
+               OpStore %n %133
+               OpBranch %113
+        %114 = OpLabel
+               OpBranch %78
+         %80 = OpLabel
+        %134 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
+        %135 = OpLoad %uint %134
+        %137 = OpULessThan %bool %135 %uint_120
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %140
+        %139 = OpLabel
+        %141 = OpAccessChain %_ptr_Function_float %A %int_0
+        %142 = OpLoad %float %141
+        %143 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_0
+        %144 = OpLoad %float %143
+        %145 = OpAccessChain %_ptr_Function_float %A %int_0
+        %146 = OpLoad %float %145
+        %147 = OpAccessChain %_ptr_Uniform_float %x_13 %uint_0 %uint_1
+        %148 = OpLoad %float %147
+        %149 = OpFDiv %float %142 %144
+        %150 = OpFDiv %float %146 %148
+        %151 = OpCompositeConstruct %v4float %149 %150 %float_0 %float_1
+               OpStore %value %151
+               OpBranch %138
+        %140 = OpLabel
+        %152 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_0
+        %153 = OpLoad %float %152
+        %154 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+        %155 = OpLoad %float %154
+        %156 = OpFOrdGreaterThan %bool %153 %155
+               OpSelectionMerge %157 None
+               OpBranchConditional %156 %158 %157
+        %158 = OpLabel
+               OpBranch %70
+        %157 = OpLabel
+               OpBranch %138
+        %138 = OpLabel
+               OpBranch %78
+         %78 = OpLabel
+               OpBranch %70
+         %70 = OpLabel
+               OpSelectionMerge %160 None
+               OpBranchConditional %false %161 %162
+        %161 = OpLabel
+               OpBranch %160
+        %162 = OpLabel
+               OpBranch %69
+        %160 = OpLabel
+               OpBranch %68
+         %69 = OpLabel
+        %163 = OpAccessChain %_ptr_Function_float %value %uint_0
+        %164 = OpLoad %float %163
+        %166 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %int_0
+        %167 = OpConvertFToS %int %164
+               OpStore %166 %167
+        %168 = OpAccessChain %_ptr_Function_float %value %uint_1
+        %169 = OpLoad %float %168
+        %170 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %int_1
+        %171 = OpConvertFToS %int %169
+               OpStore %170 %171
+        %172 = OpAccessChain %_ptr_Function_float %value %uint_2
+        %173 = OpLoad %float %172
+        %175 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %int_2
+        %176 = OpConvertFToS %int %173
+               OpStore %175 %176
+        %178 = OpAccessChain %_ptr_Function_float %value %uint_3
+        %179 = OpLoad %float %178
+        %181 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %int_3
+        %182 = OpConvertFToS %int %179
+               OpStore %181 %182
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %21
+        %184 = OpLabel
+        %185 = OpLoad %v3uint %tint_symbol
+               OpStore %gl_GlobalInvocationID %185
+        %186 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 70[%70] is not post dominated by the back-edge block 160[%160]
+  %160 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2b4eb0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,145 @@
+[[block]]
+struct buf1 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[block]]
+struct buf2 {
+  resolution : vec2<f32>;
+};
+
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct doesNotMatter {
+  x_compute_data : RTArr;
+};
+
+var<private> gl_GlobalInvocationID : vec3<u32>;
+
+[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+
+[[group(0), binding(2)]] var<uniform> x_13 : buf2;
+
+[[group(0), binding(0)]] var<storage, read_write> x_15 : doesNotMatter;
+
+fn main_1() {
+  var A : array<f32, 1>;
+  var i : i32;
+  var value : vec4<f32>;
+  var m : i32;
+  var l : i32;
+  var n : i32;
+  A[0] = 0.0;
+  i = 0;
+  loop {
+    let x_60 : i32 = i;
+    if ((x_60 < 50)) {
+    } else {
+      break;
+    }
+    let x_63 : i32 = i;
+    if ((x_63 > 0)) {
+      let x_68 : f32 = A[0];
+      let x_70 : f32 = A[0];
+      A[0] = (x_70 + x_68);
+    }
+
+    continuing {
+      let x_73 : i32 = i;
+      i = (x_73 + 1);
+    }
+  }
+  loop {
+    let x_80 : u32 = gl_GlobalInvocationID.x;
+    if ((x_80 < 100u)) {
+      value = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+      m = 0;
+      loop {
+        let x_89 : i32 = m;
+        if ((x_89 < 1)) {
+        } else {
+          break;
+        }
+        l = 0;
+        loop {
+          let x_96 : i32 = l;
+          if ((x_96 < 1)) {
+          } else {
+            break;
+          }
+          let x_100 : f32 = x_10.injectionSwitch.x;
+          let x_102 : f32 = x_10.injectionSwitch.y;
+          if ((x_100 > x_102)) {
+            return;
+          }
+
+          continuing {
+            let x_106 : i32 = l;
+            l = (x_106 + 1);
+          }
+        }
+
+        continuing {
+          let x_108 : i32 = m;
+          m = (x_108 + 1);
+        }
+      }
+      n = 0;
+      loop {
+        let x_114 : i32 = n;
+        if ((x_114 < 1)) {
+        } else {
+          break;
+        }
+        let x_118 : f32 = x_10.injectionSwitch.x;
+        let x_120 : f32 = x_10.injectionSwitch.y;
+        if ((x_118 > x_120)) {
+          workgroupBarrier();
+        }
+
+        continuing {
+          let x_124 : i32 = n;
+          n = (x_124 + 1);
+        }
+      }
+    } else {
+      let x_127 : u32 = gl_GlobalInvocationID.x;
+      if ((x_127 < 120u)) {
+        let x_133 : f32 = A[0];
+        let x_135 : f32 = x_13.resolution.x;
+        let x_138 : f32 = A[0];
+        let x_140 : f32 = x_13.resolution.y;
+        value = vec4<f32>((x_133 / x_135), (x_138 / x_140), 0.0, 1.0);
+      } else {
+        let x_144 : f32 = x_10.injectionSwitch.x;
+        let x_146 : f32 = x_10.injectionSwitch.y;
+        if ((x_144 > x_146)) {
+          continue;
+        }
+      }
+    }
+
+    continuing {
+      if (false) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_151 : f32 = value.x;
+  x_15.x_compute_data[0] = i32(x_151);
+  let x_155 : f32 = value.y;
+  x_15.x_compute_data[1] = i32(x_155);
+  let x_159 : f32 = value.z;
+  x_15.x_compute_data[2] = i32(x_159);
+  let x_163 : f32 = value.w;
+  x_15.x_compute_data[3] = i32(x_163);
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] gl_GlobalInvocationID_param : vec3<u32>) {
+  gl_GlobalInvocationID = gl_GlobalInvocationID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm
new file mode 100644
index 0000000..ef406ac
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm
@@ -0,0 +1,81 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %computeColor_ "computeColor("
+               OpName %_GLF_color "_GLF_color"
+               OpName %_injected_loop_counter "_injected_loop_counter"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %_injected_loop_counter RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+         %12 = OpTypeFunction %v3float
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %17 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+         %29 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+       %main = OpFunction %void None %9
+         %30 = OpLabel
+         %31 = OpFunctionCall %v3float %computeColor_
+               OpReturn
+               OpFunctionEnd
+%computeColor_ = OpFunction %v3float None %12
+         %32 = OpLabel
+%_injected_loop_counter = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %17
+               OpStore %_injected_loop_counter %int_1
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThan %bool %38 %float_1
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %42 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %43 = OpLoad %float %42
+         %44 = OpFOrdGreaterThan %bool %43 %float_1
+               OpSelectionMerge %45 None
+               OpBranchConditional %44 %46 %35
+         %46 = OpLabel
+               OpBranch %35
+         %45 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+               OpBranch %33
+         %40 = OpLabel
+               OpReturnValue %29
+         %34 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..701d8d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+
+float3 computeColor_() {
+  int x_injected_loop_counter = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_injected_loop_counter = 1;
+  while (true) {
+    const float x_38 = asfloat(x_7[0].x);
+    if ((x_38 > 1.0f)) {
+      const float x_43 = asfloat(x_7[0].x);
+      if ((x_43 > 1.0f)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  const float3 x_31 = computeColor_();
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.msl
new file mode 100644
index 0000000..ac448be
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 computeColor_(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int x_injected_loop_counter = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_injected_loop_counter = 1;
+  while (true) {
+    float const x_38 = x_7.injectionSwitch.x;
+    if ((x_38 > 1.0f)) {
+      float const x_43 = x_7.injectionSwitch.x;
+      if ((x_43 > 1.0f)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  float3 const x_31 = computeColor_(x_7, tint_symbol_5);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..d114d3c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.spvasm
@@ -0,0 +1,113 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %computeColor_ "computeColor_"
+               OpName %x_injected_loop_counter "x_injected_loop_counter"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+         %12 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+         %43 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+         %44 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %45 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+%computeColor_ = OpFunction %v3float None %12
+         %15 = OpLabel
+%x_injected_loop_counter = OpVariable %_ptr_Function_int Function %19
+               OpStore %x_GLF_color %22
+               OpStore %x_injected_loop_counter %int_1
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %32 %float_1
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThan %bool %38 %float_1
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %42
+         %41 = OpLabel
+               OpBranch %26
+         %42 = OpLabel
+               OpBranch %26
+         %40 = OpLabel
+               OpBranch %26
+         %35 = OpLabel
+               OpReturnValue %43
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+               OpReturnValue %44
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %45
+         %48 = OpLabel
+         %49 = OpFunctionCall %v3float %computeColor_
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %45
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..543e524
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.spvasm.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn computeColor_() -> vec3<f32> {
+  var x_injected_loop_counter : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_injected_loop_counter = 1;
+  loop {
+    let x_38 : f32 = x_7.injectionSwitch.x;
+    if ((x_38 > 1.0)) {
+      let x_43 : f32 = x_7.injectionSwitch.x;
+      if ((x_43 > 1.0)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  let x_31 : vec3<f32> = computeColor_();
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
new file mode 100644
index 0000000..543e524
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn computeColor_() -> vec3<f32> {
+  var x_injected_loop_counter : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_injected_loop_counter = 1;
+  loop {
+    let x_38 : f32 = x_7.injectionSwitch.x;
+    if ((x_38 > 1.0)) {
+      let x_43 : f32 = x_7.injectionSwitch.x;
+      if ((x_43 > 1.0)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  let x_31 : vec3<f32> = computeColor_();
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..701d8d9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.hlsl
@@ -0,0 +1,43 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+
+float3 computeColor_() {
+  int x_injected_loop_counter = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_injected_loop_counter = 1;
+  while (true) {
+    const float x_38 = asfloat(x_7[0].x);
+    if ((x_38 > 1.0f)) {
+      const float x_43 = asfloat(x_7[0].x);
+      if ((x_43 > 1.0f)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  const float3 x_31 = computeColor_();
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.msl
new file mode 100644
index 0000000..ac448be
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 computeColor_(constant buf0& x_7, thread float4* const tint_symbol_4) {
+  int x_injected_loop_counter = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  x_injected_loop_counter = 1;
+  while (true) {
+    float const x_38 = x_7.injectionSwitch.x;
+    if ((x_38 > 1.0f)) {
+      float const x_43 = x_7.injectionSwitch.x;
+      if ((x_43 > 1.0f)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    return float3(1.0f, 1.0f, 1.0f);
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5) {
+  float3 const x_31 = computeColor_(x_7, tint_symbol_5);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_6 = 0.0f;
+  main_1(x_7, &(tint_symbol_6));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_6};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..d114d3c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.spvasm
@@ -0,0 +1,113 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %computeColor_ "computeColor_"
+               OpName %x_injected_loop_counter "x_injected_loop_counter"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+         %12 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+       %bool = OpTypeBool
+         %43 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+         %44 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %45 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+%computeColor_ = OpFunction %v3float None %12
+         %15 = OpLabel
+%x_injected_loop_counter = OpVariable %_ptr_Function_int Function %19
+               OpStore %x_GLF_color %22
+               OpStore %x_injected_loop_counter %int_1
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %32 %float_1
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+         %37 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %38 = OpLoad %float %37
+         %39 = OpFOrdGreaterThan %bool %38 %float_1
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %42
+         %41 = OpLabel
+               OpBranch %26
+         %42 = OpLabel
+               OpBranch %26
+         %40 = OpLabel
+               OpBranch %26
+         %35 = OpLabel
+               OpReturnValue %43
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+               OpReturnValue %44
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %45
+         %48 = OpLabel
+         %49 = OpFunctionCall %v3float %computeColor_
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %45
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..543e524
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl.expected.wgsl
@@ -0,0 +1,44 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+fn computeColor_() -> vec3<f32> {
+  var x_injected_loop_counter : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  x_injected_loop_counter = 1;
+  loop {
+    let x_38 : f32 = x_7.injectionSwitch.x;
+    if ((x_38 > 1.0)) {
+      let x_43 : f32 = x_7.injectionSwitch.x;
+      if ((x_43 > 1.0)) {
+        continue;
+      } else {
+        continue;
+      }
+      continue;
+    }
+    return vec3<f32>(1.0, 1.0, 1.0);
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  let x_31 : vec3<f32> = computeColor_();
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm
new file mode 100644
index 0000000..b17f848
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm
@@ -0,0 +1,90 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %computePoint_ "computePoint("
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+         %12 = OpTypeFunction %v3float
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %23 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %false = OpConstantFalse %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_0 = OpConstant %float 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %30 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %9
+         %33 = OpLabel
+         %34 = OpVariable %_ptr_Function_bool Function %false
+               OpBranch %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v3float %computePoint_
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %41 = OpLoad %float %40
+         %42 = OpFOrdLessThan %bool %41 %float_0
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpStore %34 %true
+               OpBranch %37
+         %43 = OpLabel
+         %45 = OpFunctionCall %v3float %computePoint_
+               OpStore %_GLF_color %30
+               OpStore %34 %true
+               OpBranch %37
+         %38 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%computePoint_ = OpFunction %v3float None %12
+         %46 = OpLabel
+         %47 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %48 = OpLoad %float %47
+         %49 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %50 = OpLoad %float %49
+         %51 = OpFOrdGreaterThan %bool %48 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpKill
+         %52 = OpLabel
+         %54 = OpUndef %v3float
+               OpReturnValue %54
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..ccaa960
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,50 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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);
+
+float3 computePoint_() {
+  const float x_48 = asfloat(x_7[0].x);
+  const float x_50 = asfloat(x_7[0].y);
+  if ((x_48 > x_50)) {
+    discard;
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  bool x_34 = false;
+  while (true) {
+    const float3 x_36 = computePoint_();
+    const float x_41 = gl_FragCoord.x;
+    if ((x_41 < 0.0f)) {
+      x_34 = true;
+      break;
+    }
+    const float3 x_45 = computePoint_();
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    x_34 = true;
+    break;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d52c896
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 computePoint_(constant buf0& x_7) {
+  float const x_48 = x_7.injectionSwitch.x;
+  float const x_50 = x_7.injectionSwitch.y;
+  if ((x_48 > x_50)) {
+    discard_fragment();
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  bool x_34 = false;
+  while (true) {
+    float3 const x_36 = computePoint_(x_7);
+    float const x_41 = (*(tint_symbol_5)).x;
+    if ((x_41 < 0.0f)) {
+      x_34 = true;
+      break;
+    }
+    float3 const x_45 = computePoint_(x_7);
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    x_34 = true;
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..c4ffa4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %computePoint_ "computePoint_"
+               OpName %main_1 "main_1"
+               OpName %x_34 "x_34"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+    %v3float = OpTypeVector %float 3
+         %15 = OpTypeFunction %v3float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %33 = OpTypeFunction %void
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+%computePoint_ = OpFunction %v3float None %15
+         %18 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %23 = OpLoad %float %22
+         %25 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %26 = OpLoad %float %25
+         %27 = OpFOrdGreaterThan %bool %23 %26
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %29
+         %30 = OpLabel
+               OpKill
+         %29 = OpLabel
+               OpReturnValue %32
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %33
+         %36 = OpLabel
+       %x_34 = OpVariable %_ptr_Function_bool Function %40
+               OpStore %x_34 %false
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpFunctionCall %v3float %computePoint_
+         %47 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %48 = OpLoad %float %47
+         %49 = OpFOrdLessThan %bool %48 %float_0
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpStore %x_34 %true
+               OpBranch %42
+         %50 = OpLabel
+         %53 = OpFunctionCall %v3float %computePoint_
+               OpStore %x_GLF_color %55
+               OpStore %x_34 %true
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %56
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %33
+         %63 = OpLabel
+         %64 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %64
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_3 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..9873801
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,48 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn computePoint_() -> vec3<f32> {
+  let x_48 : f32 = x_7.injectionSwitch.x;
+  let x_50 : f32 = x_7.injectionSwitch.y;
+  if ((x_48 > x_50)) {
+    discard;
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var x_34 : bool = false;
+  loop {
+    let x_36 : vec3<f32> = computePoint_();
+    let x_41 : f32 = gl_FragCoord.x;
+    if ((x_41 < 0.0)) {
+      x_34 = true;
+      break;
+    }
+    let x_45 : vec3<f32> = computePoint_();
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    x_34 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
new file mode 100644
index 0000000..9873801
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
@@ -0,0 +1,48 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn computePoint_() -> vec3<f32> {
+  let x_48 : f32 = x_7.injectionSwitch.x;
+  let x_50 : f32 = x_7.injectionSwitch.y;
+  if ((x_48 > x_50)) {
+    discard;
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var x_34 : bool = false;
+  loop {
+    let x_36 : vec3<f32> = computePoint_();
+    let x_41 : f32 = gl_FragCoord.x;
+    if ((x_41 < 0.0)) {
+      x_34 = true;
+      break;
+    }
+    let x_45 : vec3<f32> = computePoint_();
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    x_34 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..ccaa960
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,50 @@
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+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);
+
+float3 computePoint_() {
+  const float x_48 = asfloat(x_7[0].x);
+  const float x_50 = asfloat(x_7[0].y);
+  if ((x_48 > x_50)) {
+    discard;
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1() {
+  bool x_34 = false;
+  while (true) {
+    const float3 x_36 = computePoint_();
+    const float x_41 = gl_FragCoord.x;
+    if ((x_41 < 0.0f)) {
+      x_34 = true;
+      break;
+    }
+    const float3 x_45 = computePoint_();
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    x_34 = true;
+    break;
+  }
+  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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d52c896
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 computePoint_(constant buf0& x_7) {
+  float const x_48 = x_7.injectionSwitch.x;
+  float const x_50 = x_7.injectionSwitch.y;
+  if ((x_48 > x_50)) {
+    discard_fragment();
+  }
+  return float3(0.0f, 0.0f, 0.0f);
+}
+
+void main_1(constant buf0& x_7, thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  bool x_34 = false;
+  while (true) {
+    float3 const x_36 = computePoint_(x_7);
+    float const x_41 = (*(tint_symbol_5)).x;
+    if ((x_41 < 0.0f)) {
+      x_34 = true;
+      break;
+    }
+    float3 const x_45 = computePoint_(x_7);
+    *(tint_symbol_6) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    x_34 = true;
+    break;
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_7 [[buffer(0)]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(x_7, &(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..c4ffa4c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,125 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_7 "x_7"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %computePoint_ "computePoint_"
+               OpName %main_1 "main_1"
+               OpName %x_34 "x_34"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_7 NonWritable
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_7 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %9
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %9
+    %v3float = OpTypeVector %float 3
+         %15 = OpTypeFunction %v3float
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+       %void = OpTypeVoid
+         %33 = OpTypeFunction %void
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %40 = OpConstantNull %bool
+%_ptr_Private_float = OpTypePointer Private %float
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %56 = OpTypeFunction %void %main_out
+%computePoint_ = OpFunction %v3float None %15
+         %18 = OpLabel
+         %22 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_0
+         %23 = OpLoad %float %22
+         %25 = OpAccessChain %_ptr_Uniform_float %x_7 %uint_0 %uint_1
+         %26 = OpLoad %float %25
+         %27 = OpFOrdGreaterThan %bool %23 %26
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %29
+         %30 = OpLabel
+               OpKill
+         %29 = OpLabel
+               OpReturnValue %32
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %33
+         %36 = OpLabel
+       %x_34 = OpVariable %_ptr_Function_bool Function %40
+               OpStore %x_34 %false
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %45 = OpFunctionCall %v3float %computePoint_
+         %47 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %48 = OpLoad %float %47
+         %49 = OpFOrdLessThan %bool %48 %float_0
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpStore %x_34 %true
+               OpBranch %42
+         %50 = OpLabel
+         %53 = OpFunctionCall %v3float %computePoint_
+               OpStore %x_GLF_color %55
+               OpStore %x_34 %true
+               OpBranch %42
+         %43 = OpLabel
+               OpBranch %41
+         %42 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %56
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %60 = OpLabel
+         %61 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %33
+         %63 = OpLabel
+         %64 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %64
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_3 %68
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..9873801
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,48 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn computePoint_() -> vec3<f32> {
+  let x_48 : f32 = x_7.injectionSwitch.x;
+  let x_50 : f32 = x_7.injectionSwitch.y;
+  if ((x_48 > x_50)) {
+    discard;
+  }
+  return vec3<f32>(0.0, 0.0, 0.0);
+}
+
+fn main_1() {
+  var x_34 : bool = false;
+  loop {
+    let x_36 : vec3<f32> = computePoint_();
+    let x_41 : f32 = gl_FragCoord.x;
+    if ((x_41 < 0.0)) {
+      x_34 = true;
+      break;
+    }
+    let x_45 : vec3<f32> = computePoint_();
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    x_34 = true;
+    break;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm
new file mode 100644
index 0000000..f051a44
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm
@@ -0,0 +1,94 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %mand_ "mand("
+               OpName %k "k"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpDecorate %k RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+         %15 = OpTypeFunction %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+   %int_1000 = OpConstant %int 1000
+       %bool = OpTypeBool
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_4 = OpConstant %int 4
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %12
+         %33 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %27
+               OpStore %i %int_0
+               OpBranch %34
+         %34 = OpLabel
+          %8 = OpLoad %int %i
+         %35 = OpSLessThan %bool %8 %int_4
+               OpLoopMerge %36 %37 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v3float %mand_
+          %9 = OpLoad %int %i
+         %10 = OpIAdd %int %9 %int_1
+               OpStore %i %10
+               OpBranch %34
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %mand_ = OpFunction %v3float None %15
+         %39 = OpLabel
+         %40 = OpVariable %_ptr_Function_bool Function %false
+         %41 = OpVariable %_ptr_Function_v3float Function
+          %k = OpVariable %_ptr_Function_int Function
+               OpBranch %42
+         %42 = OpLabel
+               OpStore %k %int_0
+               OpLoopMerge %43 %44 None
+               OpBranch %45
+         %45 = OpLabel
+          %7 = OpLoad %int %k
+         %46 = OpSLessThan %bool %7 %int_1000
+               OpLoopMerge %47 %48 None
+               OpBranchConditional %46 %49 %47
+         %49 = OpLabel
+               OpStore %40 %true
+               OpStore %41 %22
+               OpBranch %47
+         %48 = OpLabel
+               OpBranch %45
+         %47 = OpLabel
+         %50 = OpLoad %bool %40
+               OpSelectionMerge %51 None
+               OpBranchConditional %50 %43 %51
+         %51 = OpLabel
+               OpKill
+         %44 = OpLabel
+               OpBranch %42
+         %43 = OpLabel
+         %52 = OpLoad %v3float %41
+               OpReturnValue %52
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..a06fe40
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.hlsl
@@ -0,0 +1,55 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 mand_() {
+  bool x_40 = false;
+  float3 x_41 = float3(0.0f, 0.0f, 0.0f);
+  int k = 0;
+  while (true) {
+    k = 0;
+    while (true) {
+      if ((k < 1000)) {
+      } else {
+        break;
+      }
+      x_40 = true;
+      x_41 = float3(1.0f, 1.0f, 1.0f);
+      break;
+    }
+    if (x_40) {
+      break;
+    }
+    discard;
+  }
+  return x_41;
+}
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  while (true) {
+    if ((i < 4)) {
+    } else {
+      break;
+    }
+    {
+      const float3 x_38 = mand_();
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.msl
new file mode 100644
index 0000000..73ff170
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 mand_() {
+  bool x_40 = false;
+  float3 x_41 = 0.0f;
+  int k = 0;
+  while (true) {
+    k = 0;
+    while (true) {
+      int const x_7 = k;
+      if ((x_7 < 1000)) {
+      } else {
+        break;
+      }
+      x_40 = true;
+      x_41 = float3(1.0f, 1.0f, 1.0f);
+      break;
+    }
+    bool const x_50 = x_40;
+    if (x_50) {
+      break;
+    }
+    discard_fragment();
+  }
+  float3 const x_52 = x_41;
+  return x_52;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_8 = i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+    {
+      float3 const x_38 = mand_();
+      int const x_9 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..422a368
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.spvasm
@@ -0,0 +1,144 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %mand_ "mand_"
+               OpName %x_40 "x_40"
+               OpName %x_41 "x_41"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %16 = OpConstantNull %bool
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %19 = OpConstantNull %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+   %int_1000 = OpConstant %int 1000
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %41 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+       %void = OpTypeVoid
+         %46 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_4 = OpConstant %int 4
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+      %mand_ = OpFunction %v3float None %8
+         %11 = OpLabel
+       %x_40 = OpVariable %_ptr_Function_bool Function %16
+       %x_41 = OpVariable %_ptr_Function_v3float Function %19
+          %k = OpVariable %_ptr_Function_int Function %23
+               OpStore %x_40 %false
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+               OpStore %k %int_0
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %k
+         %35 = OpSLessThan %bool %33 %int_1000
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+               OpBranch %36
+         %38 = OpLabel
+               OpBranch %30
+         %36 = OpLabel
+               OpStore %x_40 %true
+               OpStore %x_41 %41
+               OpBranch %30
+         %31 = OpLabel
+               OpBranch %29
+         %30 = OpLabel
+         %42 = OpLoad %bool %x_40
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %25
+         %43 = OpLabel
+               OpKill
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+         %45 = OpLoad %v3float %x_41
+               OpReturnValue %45
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %46
+         %49 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %23
+               OpStore %x_GLF_color %52
+               OpStore %i %int_0
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %int %i
+         %59 = OpSLessThan %bool %57 %int_4
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %54
+         %60 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %63 = OpFunctionCall %v3float %mand_
+         %64 = OpLoad %int %i
+         %66 = OpIAdd %int %64 %int_1
+               OpStore %i %66
+               OpBranch %53
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %46
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..5ad0b89
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.spvasm.expected.wgsl
@@ -0,0 +1,58 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn mand_() -> vec3<f32> {
+  var x_40 : bool = false;
+  var x_41 : vec3<f32>;
+  var k : i32;
+  loop {
+    k = 0;
+    loop {
+      let x_7 : i32 = k;
+      if ((x_7 < 1000)) {
+      } else {
+        break;
+      }
+      x_40 = true;
+      x_41 = vec3<f32>(1.0, 1.0, 1.0);
+      break;
+    }
+    let x_50 : bool = x_40;
+    if (x_50) {
+      break;
+    }
+    discard;
+  }
+  let x_52 : vec3<f32> = x_41;
+  return x_52;
+}
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  loop {
+    let x_8 : i32 = i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_38 : vec3<f32> = mand_();
+      let x_9 : i32 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl
new file mode 100644
index 0000000..5ad0b89
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl
@@ -0,0 +1,58 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn mand_() -> vec3<f32> {
+  var x_40 : bool = false;
+  var x_41 : vec3<f32>;
+  var k : i32;
+  loop {
+    k = 0;
+    loop {
+      let x_7 : i32 = k;
+      if ((x_7 < 1000)) {
+      } else {
+        break;
+      }
+      x_40 = true;
+      x_41 = vec3<f32>(1.0, 1.0, 1.0);
+      break;
+    }
+    let x_50 : bool = x_40;
+    if (x_50) {
+      break;
+    }
+    discard;
+  }
+  let x_52 : vec3<f32> = x_41;
+  return x_52;
+}
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  loop {
+    let x_8 : i32 = i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_38 : vec3<f32> = mand_();
+      let x_9 : i32 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..a06fe40
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.hlsl
@@ -0,0 +1,55 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float3 mand_() {
+  bool x_40 = false;
+  float3 x_41 = float3(0.0f, 0.0f, 0.0f);
+  int k = 0;
+  while (true) {
+    k = 0;
+    while (true) {
+      if ((k < 1000)) {
+      } else {
+        break;
+      }
+      x_40 = true;
+      x_41 = float3(1.0f, 1.0f, 1.0f);
+      break;
+    }
+    if (x_40) {
+      break;
+    }
+    discard;
+  }
+  return x_41;
+}
+
+void main_1() {
+  int i = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  while (true) {
+    if ((i < 4)) {
+    } else {
+      break;
+    }
+    {
+      const float3 x_38 = mand_();
+      i = (i + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.msl
new file mode 100644
index 0000000..73ff170
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.msl
@@ -0,0 +1,63 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float3 mand_() {
+  bool x_40 = false;
+  float3 x_41 = 0.0f;
+  int k = 0;
+  while (true) {
+    k = 0;
+    while (true) {
+      int const x_7 = k;
+      if ((x_7 < 1000)) {
+      } else {
+        break;
+      }
+      x_40 = true;
+      x_41 = float3(1.0f, 1.0f, 1.0f);
+      break;
+    }
+    bool const x_50 = x_40;
+    if (x_50) {
+      break;
+    }
+    discard_fragment();
+  }
+  float3 const x_52 = x_41;
+  return x_52;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_8 = i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+    {
+      float3 const x_38 = mand_();
+      int const x_9 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..422a368
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.spvasm
@@ -0,0 +1,144 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 79
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %mand_ "mand_"
+               OpName %x_40 "x_40"
+               OpName %x_41 "x_41"
+               OpName %k "k"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+    %v3float = OpTypeVector %float 3
+          %8 = OpTypeFunction %v3float
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %16 = OpConstantNull %bool
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %19 = OpConstantNull %v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+      %int_0 = OpConstant %int 0
+   %int_1000 = OpConstant %int 1000
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+         %41 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+       %void = OpTypeVoid
+         %46 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %52 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_4 = OpConstant %int 4
+      %int_1 = OpConstant %int 1
+   %main_out = OpTypeStruct %v4float
+         %67 = OpTypeFunction %void %main_out
+      %mand_ = OpFunction %v3float None %8
+         %11 = OpLabel
+       %x_40 = OpVariable %_ptr_Function_bool Function %16
+       %x_41 = OpVariable %_ptr_Function_v3float Function %19
+          %k = OpVariable %_ptr_Function_int Function %23
+               OpStore %x_40 %false
+               OpBranch %24
+         %24 = OpLabel
+               OpLoopMerge %25 %26 None
+               OpBranch %27
+         %27 = OpLabel
+               OpStore %k %int_0
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %int %k
+         %35 = OpSLessThan %bool %33 %int_1000
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+               OpBranch %36
+         %38 = OpLabel
+               OpBranch %30
+         %36 = OpLabel
+               OpStore %x_40 %true
+               OpStore %x_41 %41
+               OpBranch %30
+         %31 = OpLabel
+               OpBranch %29
+         %30 = OpLabel
+         %42 = OpLoad %bool %x_40
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %43
+         %44 = OpLabel
+               OpBranch %25
+         %43 = OpLabel
+               OpKill
+         %26 = OpLabel
+               OpBranch %24
+         %25 = OpLabel
+         %45 = OpLoad %v3float %x_41
+               OpReturnValue %45
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %46
+         %49 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %23
+               OpStore %x_GLF_color %52
+               OpStore %i %int_0
+               OpBranch %53
+         %53 = OpLabel
+               OpLoopMerge %54 %55 None
+               OpBranch %56
+         %56 = OpLabel
+         %57 = OpLoad %int %i
+         %59 = OpSLessThan %bool %57 %int_4
+               OpSelectionMerge %60 None
+               OpBranchConditional %59 %61 %62
+         %61 = OpLabel
+               OpBranch %60
+         %62 = OpLabel
+               OpBranch %54
+         %60 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+         %63 = OpFunctionCall %v3float %mand_
+         %64 = OpLoad %int %i
+         %66 = OpIAdd %int %64 %int_1
+               OpStore %i %66
+               OpBranch %53
+         %54 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %67
+%tint_symbol = OpFunctionParameter %main_out
+         %71 = OpLabel
+         %72 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %72
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %46
+         %74 = OpLabel
+         %75 = OpFunctionCall %void %main_1
+         %77 = OpLoad %v4float %x_GLF_color
+         %78 = OpCompositeConstruct %main_out %77
+         %76 = OpFunctionCall %void %tint_symbol_2 %78
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..5ad0b89
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement/0.wgsl.expected.wgsl
@@ -0,0 +1,58 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn mand_() -> vec3<f32> {
+  var x_40 : bool = false;
+  var x_41 : vec3<f32>;
+  var k : i32;
+  loop {
+    k = 0;
+    loop {
+      let x_7 : i32 = k;
+      if ((x_7 < 1000)) {
+      } else {
+        break;
+      }
+      x_40 = true;
+      x_41 = vec3<f32>(1.0, 1.0, 1.0);
+      break;
+    }
+    let x_50 : bool = x_40;
+    if (x_50) {
+      break;
+    }
+    discard;
+  }
+  let x_52 : vec3<f32> = x_41;
+  return x_52;
+}
+
+fn main_1() {
+  var i : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  loop {
+    let x_8 : i32 = i;
+    if ((x_8 < 4)) {
+    } else {
+      break;
+    }
+
+    continuing {
+      let x_38 : vec3<f32> = mand_();
+      let x_9 : i32 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm
new file mode 100644
index 0000000..5791da8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm
@@ -0,0 +1,116 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %i "i"
+               OpName %data "data"
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %6 RelaxedPrecision
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %10 RelaxedPrecision
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+    %float_2 = OpConstant %float 2
+       %main = OpFunction %void None %12
+         %32 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function
+       %data = OpVariable %_ptr_Function__arr_float_uint_1 Function
+               OpStore %_GLF_color %18
+               OpStore %i %int_0
+               OpBranch %33
+         %33 = OpLabel
+               OpLoopMerge %34 %35 None
+               OpBranch %36
+         %36 = OpLabel
+          %6 = OpLoad %int %i
+         %37 = OpSLessThan %bool %6 %int_1
+               OpBranchConditional %37 %38 %34
+         %38 = OpLabel
+          %7 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Function_float %data %7
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Function_float %data %int_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdLessThan %bool %40 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpSelectionMerge %46 None
+               OpBranchConditional %false %47 %46
+         %47 = OpLabel
+          %8 = OpLoad %int %i
+         %48 = OpConvertSToF %float %8
+         %49 = OpFOrdGreaterThanEqual %bool %48 %float_1
+               OpSelectionMerge %50 None
+               OpBranchConditional %49 %51 %50
+         %51 = OpLabel
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %46
+         %46 = OpLabel
+               OpSelectionMerge %52 None
+               OpSwitch %int_0 %52 1 %53 0 %54
+         %53 = OpLabel
+               OpBranch %55
+         %55 = OpLabel
+               OpLoopMerge %56 %57 None
+               OpBranch %58
+         %58 = OpLabel
+               OpBranchConditional %true %59 %56
+         %59 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+               OpBranch %55
+         %56 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+               OpLoopMerge %61 %62 None
+               OpBranch %63
+         %63 = OpLabel
+               OpBranch %62
+         %62 = OpLabel
+               OpBranch %60
+         %61 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+         %64 = OpAccessChain %_ptr_Function_float %data %int_0
+               OpStore %64 %float_2
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+          %9 = OpLoad %int %i
+         %10 = OpIAdd %int %9 %int_1
+               OpStore %i %10
+               OpBranch %33
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..49336f5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.hlsl
@@ -0,0 +1,55 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  float data[1] = (float[1])0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 1); i = (i + 1)) {
+      const float x_40 = data[i];
+      const float x_42 = data[0];
+      if ((x_40 < x_42)) {
+        if (false) {
+          if ((float(i) >= 1.0f)) {
+          }
+        }
+        switch(0) {
+          case 1: {
+            while (true) {
+              if (true) {
+              } else {
+                break;
+              }
+            }
+            while (true) {
+            }
+            /* fallthrough */
+          }
+          case 0: {
+            data[0] = 2.0f;
+            break;
+          }
+          default: {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.msl
new file mode 100644
index 0000000..cc9b3ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.msl
@@ -0,0 +1,70 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper data = {};
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_6 = i;
+    if ((x_6 < 1)) {
+    } else {
+      break;
+    }
+    int const x_7 = i;
+    float const x_40 = data.arr[x_7];
+    float const x_42 = data.arr[0];
+    if ((x_40 < x_42)) {
+      if (false) {
+        int const x_8 = i;
+        if ((float(x_8) >= 1.0f)) {
+        }
+      }
+      switch(0) {
+        case 1: {
+          while (true) {
+            if (true) {
+            } else {
+              break;
+            }
+          }
+          while (true) {
+          }
+          /* fallthrough */
+        }
+        case 0: {
+          data.arr[0] = 2.0f;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+    }
+    {
+      int const x_9 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..74f2106
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.spvasm
@@ -0,0 +1,155 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 86
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+         %21 = OpConstantNull %_arr_float_uint_1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+    %float_2 = OpConstant %float 2
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+       %data = OpVariable %_ptr_Function__arr_float_uint_1 Function %21
+               OpStore %x_GLF_color %24
+               OpStore %i %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %i
+         %32 = OpSLessThan %bool %30 %int_1
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpBranch %34
+         %36 = OpLabel
+               OpBranch %27
+         %34 = OpLabel
+         %37 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Function_float %data %37
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Function_float %data %int_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdLessThan %bool %40 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpSelectionMerge %47 None
+               OpBranchConditional %false %48 %47
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpConvertSToF %float %49
+         %51 = OpFOrdGreaterThanEqual %bool %50 %float_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpSelectionMerge %54 None
+               OpSwitch %int_0 %55 1 %56 0 %57
+         %56 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+               OpSelectionMerge %63 None
+               OpBranchConditional %true %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %59
+         %63 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+               OpBranch %58
+         %59 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %66
+         %67 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %data %int_0
+               OpStore %70 %float_2
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %72 = OpLoad %int %i
+         %73 = OpIAdd %int %72 %int_1
+               OpStore %i %73
+               OpBranch %26
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %74
+%tint_symbol = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %81 = OpLabel
+         %82 = OpFunctionCall %void %main_1
+         %84 = OpLoad %v4float %x_GLF_color
+         %85 = OpCompositeConstruct %main_out %84
+         %83 = OpFunctionCall %void %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..27a00c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.spvasm.expected.wgsl
@@ -0,0 +1,60 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var data : array<f32, 1>;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  loop {
+    let x_6 : i32 = i;
+    if ((x_6 < 1)) {
+    } else {
+      break;
+    }
+    let x_7 : i32 = i;
+    let x_40 : f32 = data[x_7];
+    let x_42 : f32 = data[0];
+    if ((x_40 < x_42)) {
+      if (false) {
+        let x_8 : i32 = i;
+        if ((f32(x_8) >= 1.0)) {
+        }
+      }
+      switch(0) {
+        case 1: {
+          loop {
+            if (true) {
+            } else {
+              break;
+            }
+          }
+          loop {
+          }
+          fallthrough;
+        }
+        case 0: {
+          data[0] = 2.0;
+        }
+        default: {
+        }
+      }
+    }
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
new file mode 100644
index 0000000..27a00c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
@@ -0,0 +1,60 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var data : array<f32, 1>;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  loop {
+    let x_6 : i32 = i;
+    if ((x_6 < 1)) {
+    } else {
+      break;
+    }
+    let x_7 : i32 = i;
+    let x_40 : f32 = data[x_7];
+    let x_42 : f32 = data[0];
+    if ((x_40 < x_42)) {
+      if (false) {
+        let x_8 : i32 = i;
+        if ((f32(x_8) >= 1.0)) {
+        }
+      }
+      switch(0) {
+        case 1: {
+          loop {
+            if (true) {
+            } else {
+              break;
+            }
+          }
+          loop {
+          }
+          fallthrough;
+        }
+        case 0: {
+          data[0] = 2.0;
+        }
+        default: {
+        }
+      }
+    }
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..49336f5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.hlsl
@@ -0,0 +1,55 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int i = 0;
+  float data[1] = (float[1])0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  {
+    for(; (i < 1); i = (i + 1)) {
+      const float x_40 = data[i];
+      const float x_42 = data[0];
+      if ((x_40 < x_42)) {
+        if (false) {
+          if ((float(i) >= 1.0f)) {
+          }
+        }
+        switch(0) {
+          case 1: {
+            while (true) {
+              if (true) {
+              } else {
+                break;
+              }
+            }
+            while (true) {
+            }
+            /* fallthrough */
+          }
+          case 0: {
+            data[0] = 2.0f;
+            break;
+          }
+          default: {
+            break;
+          }
+        }
+      }
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.msl
new file mode 100644
index 0000000..cc9b3ff
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.msl
@@ -0,0 +1,70 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  int i = 0;
+  tint_array_wrapper data = {};
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  i = 0;
+  while (true) {
+    int const x_6 = i;
+    if ((x_6 < 1)) {
+    } else {
+      break;
+    }
+    int const x_7 = i;
+    float const x_40 = data.arr[x_7];
+    float const x_42 = data.arr[0];
+    if ((x_40 < x_42)) {
+      if (false) {
+        int const x_8 = i;
+        if ((float(x_8) >= 1.0f)) {
+        }
+      }
+      switch(0) {
+        case 1: {
+          while (true) {
+            if (true) {
+            } else {
+              break;
+            }
+          }
+          while (true) {
+          }
+          /* fallthrough */
+        }
+        case 0: {
+          data.arr[0] = 2.0f;
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+    }
+    {
+      int const x_9 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..74f2106
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.spvasm
@@ -0,0 +1,155 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 86
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %data "data"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %15 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+         %21 = OpConstantNull %_arr_float_uint_1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %24 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+%_ptr_Function_float = OpTypePointer Function %float
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+    %float_2 = OpConstant %float 2
+   %main_out = OpTypeStruct %v4float
+         %74 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+          %i = OpVariable %_ptr_Function_int Function %15
+       %data = OpVariable %_ptr_Function__arr_float_uint_1 Function %21
+               OpStore %x_GLF_color %24
+               OpStore %i %int_0
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %30 = OpLoad %int %i
+         %32 = OpSLessThan %bool %30 %int_1
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %36
+         %35 = OpLabel
+               OpBranch %34
+         %36 = OpLabel
+               OpBranch %27
+         %34 = OpLabel
+         %37 = OpLoad %int %i
+         %39 = OpAccessChain %_ptr_Function_float %data %37
+         %40 = OpLoad %float %39
+         %41 = OpAccessChain %_ptr_Function_float %data %int_0
+         %42 = OpLoad %float %41
+         %43 = OpFOrdLessThan %bool %40 %42
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %44
+         %45 = OpLabel
+               OpSelectionMerge %47 None
+               OpBranchConditional %false %48 %47
+         %48 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpConvertSToF %float %49
+         %51 = OpFOrdGreaterThanEqual %bool %50 %float_1
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+               OpBranch %52
+         %52 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpSelectionMerge %54 None
+               OpSwitch %int_0 %55 1 %56 0 %57
+         %56 = OpLabel
+               OpBranch %58
+         %58 = OpLabel
+               OpLoopMerge %59 %60 None
+               OpBranch %61
+         %61 = OpLabel
+               OpSelectionMerge %63 None
+               OpBranchConditional %true %64 %65
+         %64 = OpLabel
+               OpBranch %63
+         %65 = OpLabel
+               OpBranch %59
+         %63 = OpLabel
+               OpBranch %60
+         %60 = OpLabel
+               OpBranch %58
+         %59 = OpLabel
+               OpBranch %66
+         %66 = OpLabel
+               OpLoopMerge %67 %68 None
+               OpBranch %69
+         %69 = OpLabel
+               OpBranch %68
+         %68 = OpLabel
+               OpBranch %66
+         %67 = OpLabel
+               OpBranch %57
+         %57 = OpLabel
+         %70 = OpAccessChain %_ptr_Function_float %data %int_0
+               OpStore %70 %float_2
+               OpBranch %54
+         %55 = OpLabel
+               OpBranch %54
+         %54 = OpLabel
+               OpBranch %44
+         %44 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %72 = OpLoad %int %i
+         %73 = OpIAdd %int %72 %int_1
+               OpStore %i %73
+               OpBranch %26
+         %27 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %74
+%tint_symbol = OpFunctionParameter %main_out
+         %78 = OpLabel
+         %79 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %79
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %81 = OpLabel
+         %82 = OpFunctionCall %void %main_1
+         %84 = OpLoad %v4float %x_GLF_color
+         %85 = OpCompositeConstruct %main_out %84
+         %83 = OpFunctionCall %void %tint_symbol_2 %85
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..27a00c6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl.expected.wgsl
@@ -0,0 +1,60 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var i : i32;
+  var data : array<f32, 1>;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  i = 0;
+  loop {
+    let x_6 : i32 = i;
+    if ((x_6 < 1)) {
+    } else {
+      break;
+    }
+    let x_7 : i32 = i;
+    let x_40 : f32 = data[x_7];
+    let x_42 : f32 = data[0];
+    if ((x_40 < x_42)) {
+      if (false) {
+        let x_8 : i32 = i;
+        if ((f32(x_8) >= 1.0)) {
+        }
+      }
+      switch(0) {
+        case 1: {
+          loop {
+            if (true) {
+            } else {
+              break;
+            }
+          }
+          loop {
+          }
+          fallthrough;
+        }
+        case 0: {
+          data[0] = 2.0;
+        }
+        default: {
+        }
+      }
+    }
+
+    continuing {
+      let x_9 : i32 = i;
+      i = (x_9 + 1);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm
new file mode 100644
index 0000000..66d7a31
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm
@@ -0,0 +1,80 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injected"
+               OpName %_ ""
+               OpName %m "m"
+               OpDecorate %_GLF_color Location 0
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %m RelaxedPrecision
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+       %main = OpFunction %void None %8
+         %28 = OpLabel
+          %m = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %14
+         %29 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %32 = OpLoad %float %31
+         %33 = OpFOrdGreaterThan %bool %30 %32
+               OpSelectionMerge %34 None
+               OpBranchConditional %33 %35 %34
+         %35 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+               OpBranch %38
+         %38 = OpLabel
+               OpBranchConditional %false %36 %37
+         %37 = OpLabel
+               OpStore %m %int_1
+               OpBranch %40
+         %40 = OpLabel
+               OpLoopMerge %41 %42 None
+               OpBranch %43
+         %43 = OpLabel
+               OpBranchConditional %true %44 %41
+         %44 = OpLabel
+               OpStore %_GLF_color %14
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %40
+         %41 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.hlsl
new file mode 100755
index 0000000..807cb12
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,52 @@
+SKIP: FAILED
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  int m = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_30 = asfloat(x_5[0].x);
+  const float x_32 = asfloat(x_5[0].y);
+  if ((x_30 > x_32)) {
+    while (true) {
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    m = 1;
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+error: validation errors
+T:\tmp\u8hw.0:39: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..da051cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.msl
@@ -0,0 +1,47 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injected;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int m = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_30 = x_5.injected.x;
+  float const x_32 = x_5.injected.y;
+  if ((x_30 > x_32)) {
+    while (true) {
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    m = 1;
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..65afab8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,127 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injected"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %m = OpVariable %_ptr_Function_int Function %19
+               OpStore %x_GLF_color %22
+         %26 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %27 = OpLoad %float %26
+         %29 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %30 = OpLoad %float %29
+         %31 = OpFOrdGreaterThan %bool %27 %30
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %33
+         %34 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpSelectionMerge %40 None
+               OpBranchConditional %false %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %36
+         %40 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+               OpStore %m %int_1
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+               OpSelectionMerge %49 None
+               OpBranchConditional %true %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %45
+         %49 = OpLabel
+               OpStore %x_GLF_color %22
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %52
+%tint_symbol = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %59 = OpLabel
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 37[%37] is not post dominated by the back-edge block 40[%40]
+  %40 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..204bbae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  injected : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var m : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_30 : f32 = x_5.injected.x;
+  let x_32 : f32 = x_5.injected.y;
+  if ((x_30 > x_32)) {
+    loop {
+
+      continuing {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    m = 1;
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
new file mode 100644
index 0000000..204bbae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  injected : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var m : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_30 : f32 = x_5.injected.x;
+  let x_32 : f32 = x_5.injected.y;
+  if ((x_30 > x_32)) {
+    loop {
+
+      continuing {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    m = 1;
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.hlsl
new file mode 100755
index 0000000..a35bdfc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,52 @@
+SKIP: FAILED
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_5 : register(b0, space0) {
+  uint4 x_5[1];
+};
+
+void main_1() {
+  int m = 0;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  const float x_30 = asfloat(x_5[0].x);
+  const float x_32 = asfloat(x_5[0].y);
+  if ((x_30 > x_32)) {
+    while (true) {
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    m = 1;
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+error: validation errors
+T:\tmp\u7ck.0:39: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..da051cd
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.msl
@@ -0,0 +1,47 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injected;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_5, thread float4* const tint_symbol_4) {
+  int m = 0;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  float const x_30 = x_5.injected.x;
+  float const x_32 = x_5.injected.y;
+  if ((x_30 > x_32)) {
+    while (true) {
+      {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    m = 1;
+    while (true) {
+      if (true) {
+      } else {
+        break;
+      }
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_5, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..65afab8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,127 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 64
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injected"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m "m"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_5 NonWritable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_5 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %22 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+      %false = OpConstantFalse %bool
+      %int_1 = OpConstant %int 1
+       %true = OpConstantTrue %bool
+   %main_out = OpTypeStruct %v4float
+         %52 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %m = OpVariable %_ptr_Function_int Function %19
+               OpStore %x_GLF_color %22
+         %26 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_0
+         %27 = OpLoad %float %26
+         %29 = OpAccessChain %_ptr_Uniform_float %x_5 %uint_0 %uint_1
+         %30 = OpLoad %float %29
+         %31 = OpFOrdGreaterThan %bool %27 %30
+               OpSelectionMerge %33 None
+               OpBranchConditional %31 %34 %33
+         %34 = OpLabel
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+               OpBranch %37
+         %37 = OpLabel
+               OpSelectionMerge %40 None
+               OpBranchConditional %false %41 %42
+         %41 = OpLabel
+               OpBranch %40
+         %42 = OpLabel
+               OpBranch %36
+         %40 = OpLabel
+               OpBranch %35
+         %36 = OpLabel
+               OpStore %m %int_1
+               OpBranch %44
+         %44 = OpLabel
+               OpLoopMerge %45 %46 None
+               OpBranch %47
+         %47 = OpLabel
+               OpSelectionMerge %49 None
+               OpBranchConditional %true %50 %51
+         %50 = OpLabel
+               OpBranch %49
+         %51 = OpLabel
+               OpBranch %45
+         %49 = OpLabel
+               OpStore %x_GLF_color %22
+               OpBranch %46
+         %46 = OpLabel
+               OpBranch %44
+         %45 = OpLabel
+               OpBranch %33
+         %33 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %52
+%tint_symbol = OpFunctionParameter %main_out
+         %56 = OpLabel
+         %57 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %57
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %59 = OpLabel
+         %60 = OpFunctionCall %void %main_1
+         %62 = OpLoad %v4float %x_GLF_color
+         %63 = OpCompositeConstruct %main_out %62
+         %61 = OpFunctionCall %void %tint_symbol_2 %63
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 37[%37] is not post dominated by the back-edge block 40[%40]
+  %40 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..204bbae
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,46 @@
+[[block]]
+struct buf0 {
+  injected : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+
+fn main_1() {
+  var m : i32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  let x_30 : f32 = x_5.injected.x;
+  let x_32 : f32 = x_5.injected.y;
+  if ((x_30 > x_32)) {
+    loop {
+
+      continuing {
+        if (false) {
+        } else {
+          break;
+        }
+      }
+    }
+    m = 1;
+    loop {
+      if (true) {
+      } else {
+        break;
+      }
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm
new file mode 100644
index 0000000..4ec26d6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm
@@ -0,0 +1,53 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %5 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+       %true = OpConstantTrue %bool
+         %18 = OpUndef %bool
+       %main = OpFunction %void None %5
+         %19 = OpLabel
+               OpBranch %20
+         %20 = OpLabel
+         %21 = OpPhi %bool %false %19 %18 %22
+               OpLoopMerge %23 %22 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpPhi %bool %21 %20 %18 %26
+         %27 = OpSLessThan %bool %int_1 %int_0
+               OpLoopMerge %28 %26 None
+               OpBranchConditional %27 %29 %28
+         %29 = OpLabel
+               OpBranch %28
+         %26 = OpLabel
+               OpBranch %24
+         %28 = OpLabel
+         %30 = OpPhi %bool %25 %24 %true %29
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %23 %31
+         %31 = OpLabel
+               OpStore %_GLF_color %15
+               OpBranch %23
+         %22 = OpLabel
+               OpBranch %20
+         %23 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.hlsl
new file mode 100755
index 0000000..423d101
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.hlsl
@@ -0,0 +1,52 @@
+SKIP: FAILED
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_21_phi = false;
+  x_21_phi = false;
+  while (true) {
+    bool x_25 = false;
+    bool x_25_phi = false;
+    bool x_30_phi = false;
+    x_25_phi = x_21_phi;
+    while (true) {
+      x_25 = x_25_phi;
+      x_30_phi = x_25;
+      if ((1 < 0)) {
+      } else {
+        break;
+      }
+      x_30_phi = true;
+      break;
+      {
+        x_25_phi = false;
+      }
+    }
+    if (x_30_phi) {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+    {
+      x_21_phi = false;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
+Internal compiler error: access violation. Attempted to read from address 0x0000000000000048
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.msl
new file mode 100644
index 0000000..1daa960
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.msl
@@ -0,0 +1,53 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool x_21_phi = false;
+  x_21_phi = false;
+  while (true) {
+    bool x_25 = false;
+    bool x_25_phi = false;
+    bool x_30_phi = false;
+    bool const x_21 = x_21_phi;
+    x_25_phi = x_21;
+    while (true) {
+      x_25 = x_25_phi;
+      x_30_phi = x_25;
+      if ((1 < 0)) {
+      } else {
+        break;
+      }
+      x_30_phi = true;
+      break;
+      {
+        x_25_phi = false;
+      }
+    }
+    bool const x_30 = x_30_phi;
+    if (x_30) {
+      break;
+    }
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+    {
+      x_21_phi = false;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..335fc7b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_21_phi "x_21_phi"
+               OpName %x_25 "x_25"
+               OpName %x_25_phi "x_25_phi"
+               OpName %x_30_phi "x_30_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+      %false = OpConstantFalse %bool
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+   %x_21_phi = OpVariable %_ptr_Function_bool Function %15
+       %x_25 = OpVariable %_ptr_Function_bool Function %15
+   %x_25_phi = OpVariable %_ptr_Function_bool Function %15
+   %x_30_phi = OpVariable %_ptr_Function_bool Function %15
+               OpStore %x_21_phi %false
+               OpBranch %17
+         %17 = OpLabel
+               OpLoopMerge %18 %19 None
+               OpBranch %20
+         %20 = OpLabel
+         %24 = OpLoad %bool %x_21_phi
+               OpStore %x_25_phi %24
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %29 = OpLoad %bool %x_25_phi
+               OpStore %x_25 %29
+         %30 = OpLoad %bool %x_25
+               OpStore %x_30_phi %30
+         %34 = OpSLessThan %bool %int_1 %int_0
+               OpSelectionMerge %35 None
+               OpBranchConditional %34 %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %26
+         %35 = OpLabel
+               OpStore %x_30_phi %true
+               OpBranch %26
+         %27 = OpLabel
+               OpStore %x_25_phi %false
+               OpBranch %25
+         %26 = OpLabel
+         %39 = OpLoad %bool %x_30_phi
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+               OpBranch %18
+         %40 = OpLabel
+               OpStore %x_GLF_color %44
+               OpBranch %18
+         %19 = OpLabel
+               OpStore %x_21_phi %false
+               OpBranch %17
+         %18 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..005fa19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.spvasm.expected.wgsl
@@ -0,0 +1,49 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_21_phi : bool;
+  x_21_phi = false;
+  loop {
+    var x_25 : bool;
+    var x_25_phi : bool;
+    var x_30_phi : bool;
+    let x_21 : bool = x_21_phi;
+    x_25_phi = x_21;
+    loop {
+      x_25 = x_25_phi;
+      x_30_phi = x_25;
+      if ((1 < 0)) {
+      } else {
+        break;
+      }
+      x_30_phi = true;
+      break;
+
+      continuing {
+        x_25_phi = false;
+      }
+    }
+    let x_30 : bool = x_30_phi;
+    if (x_30) {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    break;
+
+    continuing {
+      x_21_phi = false;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
new file mode 100644
index 0000000..005fa19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
@@ -0,0 +1,49 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_21_phi : bool;
+  x_21_phi = false;
+  loop {
+    var x_25 : bool;
+    var x_25_phi : bool;
+    var x_30_phi : bool;
+    let x_21 : bool = x_21_phi;
+    x_25_phi = x_21;
+    loop {
+      x_25 = x_25_phi;
+      x_30_phi = x_25;
+      if ((1 < 0)) {
+      } else {
+        break;
+      }
+      x_30_phi = true;
+      break;
+
+      continuing {
+        x_25_phi = false;
+      }
+    }
+    let x_30 : bool = x_30_phi;
+    if (x_30) {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    break;
+
+    continuing {
+      x_21_phi = false;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.hlsl
new file mode 100755
index 0000000..423d101
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.hlsl
@@ -0,0 +1,52 @@
+SKIP: FAILED
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool x_21_phi = false;
+  x_21_phi = false;
+  while (true) {
+    bool x_25 = false;
+    bool x_25_phi = false;
+    bool x_30_phi = false;
+    x_25_phi = x_21_phi;
+    while (true) {
+      x_25 = x_25_phi;
+      x_30_phi = x_25;
+      if ((1 < 0)) {
+      } else {
+        break;
+      }
+      x_30_phi = true;
+      break;
+      {
+        x_25_phi = false;
+      }
+    }
+    if (x_30_phi) {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+    {
+      x_21_phi = false;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
+Internal compiler error: access violation. Attempted to read from address 0x0000000000000048
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.msl
new file mode 100644
index 0000000..1daa960
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.msl
@@ -0,0 +1,53 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool x_21_phi = false;
+  x_21_phi = false;
+  while (true) {
+    bool x_25 = false;
+    bool x_25_phi = false;
+    bool x_30_phi = false;
+    bool const x_21 = x_21_phi;
+    x_25_phi = x_21;
+    while (true) {
+      x_25 = x_25_phi;
+      x_30_phi = x_25;
+      if ((1 < 0)) {
+      } else {
+        break;
+      }
+      x_30_phi = true;
+      break;
+      {
+        x_25_phi = false;
+      }
+    }
+    bool const x_30 = x_30_phi;
+    if (x_30) {
+      break;
+    }
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    break;
+    {
+      x_21_phi = false;
+    }
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..335fc7b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.spvasm
@@ -0,0 +1,111 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %x_21_phi "x_21_phi"
+               OpName %x_25 "x_25"
+               OpName %x_25_phi "x_25_phi"
+               OpName %x_30_phi "x_30_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+      %false = OpConstantFalse %bool
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
+       %true = OpConstantTrue %bool
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+   %x_21_phi = OpVariable %_ptr_Function_bool Function %15
+       %x_25 = OpVariable %_ptr_Function_bool Function %15
+   %x_25_phi = OpVariable %_ptr_Function_bool Function %15
+   %x_30_phi = OpVariable %_ptr_Function_bool Function %15
+               OpStore %x_21_phi %false
+               OpBranch %17
+         %17 = OpLabel
+               OpLoopMerge %18 %19 None
+               OpBranch %20
+         %20 = OpLabel
+         %24 = OpLoad %bool %x_21_phi
+               OpStore %x_25_phi %24
+               OpBranch %25
+         %25 = OpLabel
+               OpLoopMerge %26 %27 None
+               OpBranch %28
+         %28 = OpLabel
+         %29 = OpLoad %bool %x_25_phi
+               OpStore %x_25 %29
+         %30 = OpLoad %bool %x_25
+               OpStore %x_30_phi %30
+         %34 = OpSLessThan %bool %int_1 %int_0
+               OpSelectionMerge %35 None
+               OpBranchConditional %34 %36 %37
+         %36 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %26
+         %35 = OpLabel
+               OpStore %x_30_phi %true
+               OpBranch %26
+         %27 = OpLabel
+               OpStore %x_25_phi %false
+               OpBranch %25
+         %26 = OpLabel
+         %39 = OpLoad %bool %x_30_phi
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+               OpBranch %18
+         %40 = OpLabel
+               OpStore %x_GLF_color %44
+               OpBranch %18
+         %19 = OpLabel
+               OpStore %x_21_phi %false
+               OpBranch %17
+         %18 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %45
+%tint_symbol = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %v4float %x_GLF_color
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_2 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..005fa19
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl.expected.wgsl
@@ -0,0 +1,49 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var x_21_phi : bool;
+  x_21_phi = false;
+  loop {
+    var x_25 : bool;
+    var x_25_phi : bool;
+    var x_30_phi : bool;
+    let x_21 : bool = x_21_phi;
+    x_25_phi = x_21;
+    loop {
+      x_25 = x_25_phi;
+      x_30_phi = x_25;
+      if ((1 < 0)) {
+      } else {
+        break;
+      }
+      x_30_phi = true;
+      break;
+
+      continuing {
+        x_25_phi = false;
+      }
+    }
+    let x_30 : bool = x_30_phi;
+    if (x_30) {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    break;
+
+    continuing {
+      x_21_phi = false;
+    }
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm
new file mode 100644
index 0000000..7284b6b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm
@@ -0,0 +1,74 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %c1 "c1"
+               OpName %uv "uv"
+               OpName %i "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %i RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %30 = OpUndef %int
+         %31 = OpUndef %bool
+       %main = OpFunction %void None %11
+         %32 = OpLabel
+         %c1 = OpVariable %_ptr_Function_bool Function
+         %uv = OpVariable %_ptr_Function_v2float Function
+          %i = OpVariable %_ptr_Function_int Function
+         %33 = OpAccessChain %_ptr_Function_float %uv %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpFOrdLessThan %bool %34 %float_0_25
+               OpStore %c1 %35
+               OpStore %i %int_0
+               OpBranch %36
+         %36 = OpLabel
+         %37 = OpPhi %bool %35 %32 %31 %38
+          %9 = OpPhi %int %int_0 %32 %30 %38
+               OpLoopMerge %39 %38 None
+               OpBranch %40
+         %40 = OpLabel
+         %41 = OpSLessThan %bool %9 %int_1
+               OpBranchConditional %41 %42 %39
+         %42 = OpLabel
+               OpStore %_GLF_color %29
+               OpReturn
+         %38 = OpLabel
+          %7 = OpLoad %int %i
+          %8 = OpIAdd %int %7 %int_1
+               OpStore %i %8
+               OpBranch %36
+         %39 = OpLabel
+               OpSelectionMerge %43 None
+               OpBranchConditional %37 %44 %43
+         %44 = OpLabel
+               OpReturn
+         %43 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..49c10a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.hlsl
@@ -0,0 +1,48 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool c1 = false;
+  float2 uv = float2(0.0f, 0.0f);
+  int i = 0;
+  bool x_37 = false;
+  bool x_37_phi = false;
+  int x_9_phi = 0;
+  const float x_34 = uv.y;
+  const bool x_35 = (x_34 < 0.25f);
+  c1 = x_35;
+  i = 0;
+  x_37_phi = x_35;
+  x_9_phi = 0;
+  while (true) {
+    x_37 = x_37_phi;
+    if ((x_9_phi < 1)) {
+    } else {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    return;
+    {
+      i = (i + 1);
+      x_37_phi = false;
+      x_9_phi = 0;
+    }
+  }
+  if (x_37) {
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.msl
new file mode 100644
index 0000000..04778b9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.msl
@@ -0,0 +1,53 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool c1 = false;
+  float2 uv = 0.0f;
+  int i = 0;
+  bool x_37 = false;
+  bool x_37_phi = false;
+  int x_9_phi = 0;
+  float const x_34 = uv.y;
+  bool const x_35 = (x_34 < 0.25f);
+  c1 = x_35;
+  i = 0;
+  x_37_phi = x_35;
+  x_9_phi = 0;
+  while (true) {
+    x_37 = x_37_phi;
+    int const x_9 = x_9_phi;
+    if ((x_9 < 1)) {
+    } else {
+      break;
+    }
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    return;
+    {
+      int const x_7 = i;
+      i = (x_7 + 1);
+      x_37_phi = false;
+      x_9_phi = 0;
+    }
+  }
+  if (x_37) {
+    return;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..d8fd878
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.spvasm
@@ -0,0 +1,119 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %c1 "c1"
+               OpName %uv "uv"
+               OpName %i "i"
+               OpName %x_37 "x_37"
+               OpName %x_37_phi "x_37_phi"
+               OpName %x_9_phi "x_9_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %19 = OpConstantNull %v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+         %c1 = OpVariable %_ptr_Function_bool Function %15
+         %uv = OpVariable %_ptr_Function_v2float Function %19
+          %i = OpVariable %_ptr_Function_int Function %23
+       %x_37 = OpVariable %_ptr_Function_bool Function %15
+   %x_37_phi = OpVariable %_ptr_Function_bool Function %15
+    %x_9_phi = OpVariable %_ptr_Function_int Function %23
+         %30 = OpAccessChain %_ptr_Function_float %uv %uint_1
+         %31 = OpLoad %float %30
+         %33 = OpFOrdLessThan %bool %31 %float_0_25
+               OpStore %c1 %33
+               OpStore %i %int_0
+               OpStore %x_37_phi %33
+               OpStore %x_9_phi %int_0
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %bool %x_37_phi
+               OpStore %x_37 %39
+         %40 = OpLoad %int %x_9_phi
+         %42 = OpSLessThan %bool %40 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %36
+         %43 = OpLabel
+               OpStore %x_GLF_color %48
+               OpReturn
+         %37 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %i %50
+               OpStore %x_37_phi %false
+               OpStore %x_9_phi %int_0
+               OpBranch %35
+         %36 = OpLabel
+         %52 = OpLoad %bool %x_37
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpReturn
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..bd4cfad
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.spvasm.expected.wgsl
@@ -0,0 +1,48 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c1 : bool;
+  var uv : vec2<f32>;
+  var i : i32;
+  var x_37 : bool;
+  var x_37_phi : bool;
+  var x_9_phi : i32;
+  let x_34 : f32 = uv.y;
+  let x_35 : bool = (x_34 < 0.25);
+  c1 = x_35;
+  i = 0;
+  x_37_phi = x_35;
+  x_9_phi = 0;
+  loop {
+    x_37 = x_37_phi;
+    let x_9 : i32 = x_9_phi;
+    if ((x_9 < 1)) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    return;
+
+    continuing {
+      let x_7 : i32 = i;
+      i = (x_7 + 1);
+      x_37_phi = false;
+      x_9_phi = 0;
+    }
+  }
+  if (x_37) {
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
new file mode 100644
index 0000000..bd4cfad
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
@@ -0,0 +1,48 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c1 : bool;
+  var uv : vec2<f32>;
+  var i : i32;
+  var x_37 : bool;
+  var x_37_phi : bool;
+  var x_9_phi : i32;
+  let x_34 : f32 = uv.y;
+  let x_35 : bool = (x_34 < 0.25);
+  c1 = x_35;
+  i = 0;
+  x_37_phi = x_35;
+  x_9_phi = 0;
+  loop {
+    x_37 = x_37_phi;
+    let x_9 : i32 = x_9_phi;
+    if ((x_9 < 1)) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    return;
+
+    continuing {
+      let x_7 : i32 = i;
+      i = (x_7 + 1);
+      x_37_phi = false;
+      x_9_phi = 0;
+    }
+  }
+  if (x_37) {
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..49c10a4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.hlsl
@@ -0,0 +1,48 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  bool c1 = false;
+  float2 uv = float2(0.0f, 0.0f);
+  int i = 0;
+  bool x_37 = false;
+  bool x_37_phi = false;
+  int x_9_phi = 0;
+  const float x_34 = uv.y;
+  const bool x_35 = (x_34 < 0.25f);
+  c1 = x_35;
+  i = 0;
+  x_37_phi = x_35;
+  x_9_phi = 0;
+  while (true) {
+    x_37 = x_37_phi;
+    if ((x_9_phi < 1)) {
+    } else {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    return;
+    {
+      i = (i + 1);
+      x_37_phi = false;
+      x_9_phi = 0;
+    }
+  }
+  if (x_37) {
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.msl
new file mode 100644
index 0000000..04778b9
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.msl
@@ -0,0 +1,53 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  bool c1 = false;
+  float2 uv = 0.0f;
+  int i = 0;
+  bool x_37 = false;
+  bool x_37_phi = false;
+  int x_9_phi = 0;
+  float const x_34 = uv.y;
+  bool const x_35 = (x_34 < 0.25f);
+  c1 = x_35;
+  i = 0;
+  x_37_phi = x_35;
+  x_9_phi = 0;
+  while (true) {
+    x_37 = x_37_phi;
+    int const x_9 = x_9_phi;
+    if ((x_9 < 1)) {
+    } else {
+      break;
+    }
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    return;
+    {
+      int const x_7 = i;
+      i = (x_7 + 1);
+      x_37_phi = false;
+      x_9_phi = 0;
+    }
+  }
+  if (x_37) {
+    return;
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..d8fd878
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.spvasm
@@ -0,0 +1,119 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 67
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %c1 "c1"
+               OpName %uv "uv"
+               OpName %i "i"
+               OpName %x_37 "x_37"
+               OpName %x_37_phi "x_37_phi"
+               OpName %x_9_phi "x_9_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %15 = OpConstantNull %bool
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %19 = OpConstantNull %v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+ %float_0_25 = OpConstant %float 0.25
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %false = OpConstantFalse %bool
+   %main_out = OpTypeStruct %v4float
+         %55 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+         %c1 = OpVariable %_ptr_Function_bool Function %15
+         %uv = OpVariable %_ptr_Function_v2float Function %19
+          %i = OpVariable %_ptr_Function_int Function %23
+       %x_37 = OpVariable %_ptr_Function_bool Function %15
+   %x_37_phi = OpVariable %_ptr_Function_bool Function %15
+    %x_9_phi = OpVariable %_ptr_Function_int Function %23
+         %30 = OpAccessChain %_ptr_Function_float %uv %uint_1
+         %31 = OpLoad %float %30
+         %33 = OpFOrdLessThan %bool %31 %float_0_25
+               OpStore %c1 %33
+               OpStore %i %int_0
+               OpStore %x_37_phi %33
+               OpStore %x_9_phi %int_0
+               OpBranch %35
+         %35 = OpLabel
+               OpLoopMerge %36 %37 None
+               OpBranch %38
+         %38 = OpLabel
+         %39 = OpLoad %bool %x_37_phi
+               OpStore %x_37 %39
+         %40 = OpLoad %int %x_9_phi
+         %42 = OpSLessThan %bool %40 %int_1
+               OpSelectionMerge %43 None
+               OpBranchConditional %42 %44 %45
+         %44 = OpLabel
+               OpBranch %43
+         %45 = OpLabel
+               OpBranch %36
+         %43 = OpLabel
+               OpStore %x_GLF_color %48
+               OpReturn
+         %37 = OpLabel
+         %49 = OpLoad %int %i
+         %50 = OpIAdd %int %49 %int_1
+               OpStore %i %50
+               OpStore %x_37_phi %false
+               OpStore %x_9_phi %int_0
+               OpBranch %35
+         %36 = OpLabel
+         %52 = OpLoad %bool %x_37
+               OpSelectionMerge %53 None
+               OpBranchConditional %52 %54 %53
+         %54 = OpLabel
+               OpReturn
+         %53 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %55
+%tint_symbol = OpFunctionParameter %main_out
+         %59 = OpLabel
+         %60 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %60
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %62 = OpLabel
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %v4float %x_GLF_color
+         %66 = OpCompositeConstruct %main_out %65
+         %64 = OpFunctionCall %void %tint_symbol_2 %66
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..bd4cfad
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl.expected.wgsl
@@ -0,0 +1,48 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var c1 : bool;
+  var uv : vec2<f32>;
+  var i : i32;
+  var x_37 : bool;
+  var x_37_phi : bool;
+  var x_9_phi : i32;
+  let x_34 : f32 = uv.y;
+  let x_35 : bool = (x_34 < 0.25);
+  c1 = x_35;
+  i = 0;
+  x_37_phi = x_35;
+  x_9_phi = 0;
+  loop {
+    x_37 = x_37_phi;
+    let x_9 : i32 = x_9_phi;
+    if ((x_9 < 1)) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    return;
+
+    continuing {
+      let x_7 : i32 = i;
+      i = (x_7 + 1);
+      x_37_phi = false;
+      x_9_phi = 0;
+    }
+  }
+  if (x_37) {
+    return;
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm
new file mode 100644
index 0000000..b5dc0a0
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm
@@ -0,0 +1,195 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %alwaysFalse "alwaysFalse"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %value "value"
+               OpName %a "a"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %count "count"
+               OpName %i_0 "i"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+         %17 = OpTypeFunction %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+   %float_n1 = OpConstant %float -1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+         %34 = OpConstantComposite %v2float %float_2 %float_2
+%_ptr_Function_int = OpTypePointer Function %int
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+      %int_2 = OpConstant %int 2
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %44 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %15
+         %46 = OpLabel
+      %count = OpVariable %_ptr_Function_int Function
+        %i_0 = OpVariable %_ptr_Function_int Function
+               OpStore %count %int_0
+               OpStore %i_0 %int_0
+               OpBranch %47
+         %47 = OpLabel
+               OpLoopMerge %48 %49 None
+               OpBranch %50
+         %50 = OpLabel
+         %51 = OpLoad %int %i_0
+         %52 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %53 = OpLoad %float %52
+         %54 = OpConvertFToS %int %53
+         %55 = OpIAdd %int %54 %int_1
+         %56 = OpSLessThan %bool %51 %55
+               OpBranchConditional %56 %57 %48
+         %57 = OpLabel
+         %58 = OpFunctionCall %float %func_
+         %59 = OpConvertFToS %int %58
+         %60 = OpLoad %int %count
+         %61 = OpIAdd %int %60 %59
+               OpStore %count %61
+               OpBranch %49
+         %49 = OpLabel
+         %62 = OpLoad %int %i_0
+         %63 = OpIAdd %int %62 %int_1
+               OpStore %i_0 %63
+               OpBranch %47
+         %48 = OpLabel
+         %64 = OpLoad %int %count
+         %65 = OpIEqual %bool %64 %int_2
+               OpSelectionMerge %66 None
+               OpBranchConditional %65 %67 %68
+         %67 = OpLabel
+               OpStore %_GLF_color %44
+               OpBranch %66
+         %68 = OpLabel
+               OpStore %_GLF_color %45
+               OpBranch %66
+         %66 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %float None %17
+         %69 = OpLabel
+%alwaysFalse = OpVariable %_ptr_Function_bool Function
+      %value = OpVariable %_ptr_Function_v4float Function
+          %a = OpVariable %_ptr_Function_v2float Function
+          %i = OpVariable %_ptr_Function_int Function
+         %70 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %71 = OpLoad %float %70
+         %72 = OpFOrdLessThan %bool %71 %float_n1
+               OpStore %alwaysFalse %72
+         %73 = OpLoad %bool %alwaysFalse
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %74
+         %75 = OpLabel
+         %76 = OpLoad %v2float %a
+         %77 = OpLoad %v4float %value
+         %78 = OpVectorShuffle %v4float %77 %76 4 5 2 3
+               OpStore %value %78
+               OpBranch %74
+         %74 = OpLabel
+         %79 = OpLoad %bool %alwaysFalse
+         %80 = OpLogicalNot %bool %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+         %83 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
+         %84 = OpLoad %v2float %83
+         %85 = OpLoad %v4float %value
+         %86 = OpVectorShuffle %v4float %85 %84 4 5 2 3
+               OpStore %value %86
+               OpBranch %81
+         %81 = OpLabel
+         %87 = OpLoad %v4float %gl_FragCoord
+         %88 = OpVectorShuffle %v2float %87 %87 0 1
+         %89 = OpLoad %v4float %value
+         %90 = OpVectorShuffle %v2float %89 %89 0 1
+         %91 = OpFMul %v2float %88 %90
+         %92 = OpFMul %v2float %91 %34
+         %93 = OpLoad %v4float %value
+         %94 = OpVectorShuffle %v2float %93 %93 0 1
+         %95 = OpFAdd %v2float %92 %94
+         %96 = OpLoad %v4float %value
+         %97 = OpVectorShuffle %v4float %96 %95 0 1 4 5
+               OpStore %value %97
+               OpStore %i %int_0
+               OpBranch %98
+         %98 = OpLabel
+               OpLoopMerge %99 %100 None
+               OpBranch %101
+        %101 = OpLabel
+        %102 = OpLoad %int %i
+        %103 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %104 = OpLoad %float %103
+        %105 = OpConvertFToS %int %104
+        %106 = OpIAdd %int %105 %int_1
+        %107 = OpSLessThan %bool %102 %106
+               OpBranchConditional %107 %108 %99
+        %108 = OpLabel
+        %109 = OpLoad %int %i
+        %110 = OpConvertSToF %float %109
+        %111 = OpAccessChain %_ptr_Function_float %value %uint_0
+               OpStore %111 %110
+               OpBranch %100
+        %100 = OpLabel
+        %112 = OpLoad %int %i
+        %113 = OpIAdd %int %112 %int_1
+               OpStore %i %113
+               OpBranch %98
+         %99 = OpLabel
+        %114 = OpAccessChain %_ptr_Function_float %value %uint_0
+        %115 = OpLoad %float %114
+        %116 = OpFOrdEqual %bool %115 %float_1
+               OpSelectionMerge %117 None
+               OpBranchConditional %116 %118 %117
+        %118 = OpLabel
+        %119 = OpAccessChain %_ptr_Function_float %value %uint_1
+        %120 = OpLoad %float %119
+        %121 = OpFOrdEqual %bool %120 %float_1
+               OpBranch %117
+        %117 = OpLabel
+        %122 = OpPhi %bool %116 %99 %121 %118
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %125
+        %124 = OpLabel
+               OpReturnValue %float_1
+        %125 = OpLabel
+               OpReturnValue %float_0
+        %123 = OpLabel
+               OpUnreachable
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..f65360e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,104 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  bool alwaysFalse = false;
+  float4 value = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float2 a = float2(0.0f, 0.0f);
+  int i = 0;
+  bool x_121 = false;
+  bool x_122_phi = false;
+  const float x_71 = gl_FragCoord.x;
+  alwaysFalse = (x_71 < -1.0f);
+  if (alwaysFalse) {
+    const float2 x_76 = a;
+    const float4 x_77 = value;
+    value = float4(x_76.x, x_76.y, x_77.z, x_77.w);
+  }
+  if (!(alwaysFalse)) {
+    const float2 x_84 = asfloat(x_10[0].xy);
+    const float4 x_85 = value;
+    value = float4(x_84.x, x_84.y, x_85.z, x_85.w);
+  }
+  const float4 x_87 = gl_FragCoord;
+  const float4 x_89 = value;
+  const float4 x_93 = value;
+  const float2 x_95 = (((float2(x_87.x, x_87.y) * float2(x_89.x, x_89.y)) * float2(2.0f, 2.0f)) + float2(x_93.x, x_93.y));
+  const float4 x_96 = value;
+  value = float4(x_96.x, x_96.y, x_95.x, x_95.y);
+  i = 0;
+  while (true) {
+    const int x_102 = i;
+    const float x_104 = asfloat(x_10[0].y);
+    if ((x_102 < (int(x_104) + 1))) {
+    } else {
+      break;
+    }
+    value.x = float(i);
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_115 = value.x;
+  const bool x_116 = (x_115 == 1.0f);
+  x_122_phi = x_116;
+  if (x_116) {
+    const float x_120 = value.y;
+    x_121 = (x_120 == 1.0f);
+    x_122_phi = x_121;
+  }
+  if (x_122_phi) {
+    return 1.0f;
+  } else {
+    return 0.0f;
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  int count = 0;
+  int i_1 = 0;
+  count = 0;
+  i_1 = 0;
+  while (true) {
+    const int x_51 = i_1;
+    const float x_53 = asfloat(x_10[0].y);
+    if ((x_51 < (int(x_53) + 1))) {
+    } else {
+      break;
+    }
+    const float x_58 = func_();
+    count = (count + int(x_58));
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  if ((count == 2)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..282221c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.msl
@@ -0,0 +1,111 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(constant buf0& x_10, thread float4* const tint_symbol_5) {
+  bool alwaysFalse = false;
+  float4 value = 0.0f;
+  float2 a = 0.0f;
+  int i = 0;
+  bool x_121 = false;
+  bool x_122_phi = false;
+  float const x_71 = (*(tint_symbol_5)).x;
+  alwaysFalse = (x_71 < -1.0f);
+  bool const x_73 = alwaysFalse;
+  if (x_73) {
+    float2 const x_76 = a;
+    float4 const x_77 = value;
+    value = float4(x_76.x, x_76.y, x_77.z, x_77.w);
+  }
+  bool const x_79 = alwaysFalse;
+  if (!(x_79)) {
+    float2 const x_84 = x_10.injectionSwitch;
+    float4 const x_85 = value;
+    value = float4(x_84.x, x_84.y, x_85.z, x_85.w);
+  }
+  float4 const x_87 = *(tint_symbol_5);
+  float4 const x_89 = value;
+  float4 const x_93 = value;
+  float2 const x_95 = (((float2(x_87.x, x_87.y) * float2(x_89.x, x_89.y)) * float2(2.0f, 2.0f)) + float2(x_93.x, x_93.y));
+  float4 const x_96 = value;
+  value = float4(x_96.x, x_96.y, x_95.x, x_95.y);
+  i = 0;
+  while (true) {
+    int const x_102 = i;
+    float const x_104 = x_10.injectionSwitch.y;
+    if ((x_102 < (int(x_104) + 1))) {
+    } else {
+      break;
+    }
+    int const x_109 = i;
+    value.x = float(x_109);
+    {
+      int const x_112 = i;
+      i = (x_112 + 1);
+    }
+  }
+  float const x_115 = value.x;
+  bool const x_116 = (x_115 == 1.0f);
+  x_122_phi = x_116;
+  if (x_116) {
+    float const x_120 = value.y;
+    x_121 = (x_120 == 1.0f);
+    x_122_phi = x_121;
+  }
+  bool const x_122 = x_122_phi;
+  if (x_122) {
+    return 1.0f;
+  } else {
+    return 0.0f;
+  }
+  return 0.0f;
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int count = 0;
+  int i_1 = 0;
+  count = 0;
+  i_1 = 0;
+  while (true) {
+    int const x_51 = i_1;
+    float const x_53 = x_10.injectionSwitch.y;
+    if ((x_51 < (int(x_53) + 1))) {
+    } else {
+      break;
+    }
+    float const x_58 = func_(x_10, tint_symbol_6);
+    int const x_60 = count;
+    count = (x_60 + int(x_58));
+    {
+      int const x_62 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  int const x_64 = count;
+  if ((x_64 == 2)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_10, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..b6beec4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,269 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 170
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %alwaysFalse "alwaysFalse"
+               OpName %value "value"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %x_121 "x_121"
+               OpName %x_122_phi "x_122_phi"
+               OpName %main_1 "main_1"
+               OpName %count "count"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %15 = OpTypeFunction %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %21 = OpConstantNull %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n1 = OpConstant %float -1
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+         %74 = OpConstantComposite %v2float %float_2 %float_2
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+       %void = OpTypeVoid
+        %124 = OpTypeFunction %void
+      %int_2 = OpConstant %int 2
+        %155 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %157 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %15
+         %17 = OpLabel
+%alwaysFalse = OpVariable %_ptr_Function_bool Function %21
+      %value = OpVariable %_ptr_Function_v4float Function %5
+          %a = OpVariable %_ptr_Function_v2float Function %26
+          %i = OpVariable %_ptr_Function_int Function %30
+      %x_121 = OpVariable %_ptr_Function_bool Function %21
+  %x_122_phi = OpVariable %_ptr_Function_bool Function %21
+         %36 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %37 = OpLoad %float %36
+         %39 = OpFOrdLessThan %bool %37 %float_n1
+               OpStore %alwaysFalse %39
+         %40 = OpLoad %bool %alwaysFalse
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+         %43 = OpLoad %v2float %a
+         %44 = OpLoad %v4float %value
+         %45 = OpCompositeExtract %float %43 0
+         %46 = OpCompositeExtract %float %43 1
+         %47 = OpCompositeExtract %float %44 2
+         %48 = OpCompositeExtract %float %44 3
+         %49 = OpCompositeConstruct %v4float %45 %46 %47 %48
+               OpStore %value %49
+               OpBranch %41
+         %41 = OpLabel
+         %50 = OpLoad %bool %alwaysFalse
+         %51 = OpLogicalNot %bool %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_v2float %x_10 %uint_0
+         %56 = OpLoad %v2float %55
+         %57 = OpLoad %v4float %value
+         %58 = OpCompositeExtract %float %56 0
+         %59 = OpCompositeExtract %float %56 1
+         %60 = OpCompositeExtract %float %57 2
+         %61 = OpCompositeExtract %float %57 3
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %value %62
+               OpBranch %52
+         %52 = OpLabel
+         %63 = OpLoad %v4float %gl_FragCoord
+         %64 = OpLoad %v4float %value
+         %65 = OpLoad %v4float %value
+         %66 = OpCompositeExtract %float %63 0
+         %67 = OpCompositeExtract %float %63 1
+         %68 = OpCompositeConstruct %v2float %66 %67
+         %69 = OpCompositeExtract %float %64 0
+         %70 = OpCompositeExtract %float %64 1
+         %71 = OpCompositeConstruct %v2float %69 %70
+         %72 = OpFMul %v2float %68 %71
+         %75 = OpFMul %v2float %72 %74
+         %76 = OpCompositeExtract %float %65 0
+         %77 = OpCompositeExtract %float %65 1
+         %78 = OpCompositeConstruct %v2float %76 %77
+         %79 = OpFAdd %v2float %75 %78
+         %80 = OpLoad %v4float %value
+         %81 = OpCompositeExtract %float %80 0
+         %82 = OpCompositeExtract %float %80 1
+         %83 = OpCompositeExtract %float %79 0
+         %84 = OpCompositeExtract %float %79 1
+         %85 = OpCompositeConstruct %v4float %81 %82 %83 %84
+               OpStore %value %85
+               OpStore %i %int_0
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpLoad %int %i
+         %94 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+         %95 = OpLoad %float %94
+         %96 = OpConvertFToS %int %95
+         %98 = OpIAdd %int %96 %int_1
+         %99 = OpSLessThan %bool %91 %98
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %102
+        %101 = OpLabel
+               OpBranch %100
+        %102 = OpLabel
+               OpBranch %88
+        %100 = OpLabel
+        %103 = OpLoad %int %i
+        %105 = OpAccessChain %_ptr_Function_float %value %uint_0
+        %106 = OpConvertSToF %float %103
+               OpStore %105 %106
+               OpBranch %89
+         %89 = OpLabel
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+               OpBranch %87
+         %88 = OpLabel
+        %109 = OpAccessChain %_ptr_Function_float %value %uint_0
+        %110 = OpLoad %float %109
+        %112 = OpFOrdEqual %bool %110 %float_1
+               OpStore %x_122_phi %112
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+        %115 = OpAccessChain %_ptr_Function_float %value %uint_1
+        %116 = OpLoad %float %115
+        %117 = OpFOrdEqual %bool %116 %float_1
+               OpStore %x_121 %117
+        %118 = OpLoad %bool %x_121
+               OpStore %x_122_phi %118
+               OpBranch %113
+        %113 = OpLabel
+        %119 = OpLoad %bool %x_122_phi
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+               OpReturnValue %float_1
+        %122 = OpLabel
+               OpReturnValue %float_0
+        %120 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %124
+        %127 = OpLabel
+      %count = OpVariable %_ptr_Function_int Function %30
+        %i_1 = OpVariable %_ptr_Function_int Function %30
+               OpStore %count %int_0
+               OpStore %i_1 %int_0
+               OpBranch %130
+        %130 = OpLabel
+               OpLoopMerge %131 %132 None
+               OpBranch %133
+        %133 = OpLabel
+        %134 = OpLoad %int %i_1
+        %135 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+        %136 = OpLoad %float %135
+        %137 = OpConvertFToS %int %136
+        %138 = OpIAdd %int %137 %int_1
+        %139 = OpSLessThan %bool %134 %138
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %142
+        %141 = OpLabel
+               OpBranch %140
+        %142 = OpLabel
+               OpBranch %131
+        %140 = OpLabel
+        %143 = OpFunctionCall %float %func_
+        %144 = OpLoad %int %count
+        %145 = OpConvertFToS %int %143
+        %146 = OpIAdd %int %144 %145
+               OpStore %count %146
+               OpBranch %132
+        %132 = OpLabel
+        %147 = OpLoad %int %i_1
+        %148 = OpIAdd %int %147 %int_1
+               OpStore %i_1 %148
+               OpBranch %130
+        %131 = OpLabel
+        %149 = OpLoad %int %count
+        %151 = OpIEqual %bool %149 %int_2
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %154
+        %153 = OpLabel
+               OpStore %x_GLF_color %155
+               OpBranch %152
+        %154 = OpLabel
+               OpStore %x_GLF_color %156
+               OpBranch %152
+        %152 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %157
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %161 = OpLabel
+        %162 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %162
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %124
+        %164 = OpLabel
+        %165 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %165
+        %166 = OpFunctionCall %void %main_1
+        %168 = OpLoad %v4float %x_GLF_color
+        %169 = OpCompositeConstruct %main_out %168
+        %167 = OpFunctionCall %void %tint_symbol_3 %169
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1036f48
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,112 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var alwaysFalse : bool;
+  var value : vec4<f32>;
+  var a : vec2<f32>;
+  var i : i32;
+  var x_121 : bool;
+  var x_122_phi : bool;
+  let x_71 : f32 = gl_FragCoord.x;
+  alwaysFalse = (x_71 < -1.0);
+  let x_73 : bool = alwaysFalse;
+  if (x_73) {
+    let x_76 : vec2<f32> = a;
+    let x_77 : vec4<f32> = value;
+    value = vec4<f32>(x_76.x, x_76.y, x_77.z, x_77.w);
+  }
+  let x_79 : bool = alwaysFalse;
+  if (!(x_79)) {
+    let x_84 : vec2<f32> = x_10.injectionSwitch;
+    let x_85 : vec4<f32> = value;
+    value = vec4<f32>(x_84.x, x_84.y, x_85.z, x_85.w);
+  }
+  let x_87 : vec4<f32> = gl_FragCoord;
+  let x_89 : vec4<f32> = value;
+  let x_93 : vec4<f32> = value;
+  let x_95 : vec2<f32> = (((vec2<f32>(x_87.x, x_87.y) * vec2<f32>(x_89.x, x_89.y)) * vec2<f32>(2.0, 2.0)) + vec2<f32>(x_93.x, x_93.y));
+  let x_96 : vec4<f32> = value;
+  value = vec4<f32>(x_96.x, x_96.y, x_95.x, x_95.y);
+  i = 0;
+  loop {
+    let x_102 : i32 = i;
+    let x_104 : f32 = x_10.injectionSwitch.y;
+    if ((x_102 < (i32(x_104) + 1))) {
+    } else {
+      break;
+    }
+    let x_109 : i32 = i;
+    value.x = f32(x_109);
+
+    continuing {
+      let x_112 : i32 = i;
+      i = (x_112 + 1);
+    }
+  }
+  let x_115 : f32 = value.x;
+  let x_116 : bool = (x_115 == 1.0);
+  x_122_phi = x_116;
+  if (x_116) {
+    let x_120 : f32 = value.y;
+    x_121 = (x_120 == 1.0);
+    x_122_phi = x_121;
+  }
+  let x_122 : bool = x_122_phi;
+  if (x_122) {
+    return 1.0;
+  } else {
+    return 0.0;
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var count : i32;
+  var i_1 : i32;
+  count = 0;
+  i_1 = 0;
+  loop {
+    let x_51 : i32 = i_1;
+    let x_53 : f32 = x_10.injectionSwitch.y;
+    if ((x_51 < (i32(x_53) + 1))) {
+    } else {
+      break;
+    }
+    let x_58 : f32 = func_();
+    let x_60 : i32 = count;
+    count = (x_60 + i32(x_58));
+
+    continuing {
+      let x_62 : i32 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  let x_64 : i32 = count;
+  if ((x_64 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
new file mode 100644
index 0000000..1036f48
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
@@ -0,0 +1,112 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var alwaysFalse : bool;
+  var value : vec4<f32>;
+  var a : vec2<f32>;
+  var i : i32;
+  var x_121 : bool;
+  var x_122_phi : bool;
+  let x_71 : f32 = gl_FragCoord.x;
+  alwaysFalse = (x_71 < -1.0);
+  let x_73 : bool = alwaysFalse;
+  if (x_73) {
+    let x_76 : vec2<f32> = a;
+    let x_77 : vec4<f32> = value;
+    value = vec4<f32>(x_76.x, x_76.y, x_77.z, x_77.w);
+  }
+  let x_79 : bool = alwaysFalse;
+  if (!(x_79)) {
+    let x_84 : vec2<f32> = x_10.injectionSwitch;
+    let x_85 : vec4<f32> = value;
+    value = vec4<f32>(x_84.x, x_84.y, x_85.z, x_85.w);
+  }
+  let x_87 : vec4<f32> = gl_FragCoord;
+  let x_89 : vec4<f32> = value;
+  let x_93 : vec4<f32> = value;
+  let x_95 : vec2<f32> = (((vec2<f32>(x_87.x, x_87.y) * vec2<f32>(x_89.x, x_89.y)) * vec2<f32>(2.0, 2.0)) + vec2<f32>(x_93.x, x_93.y));
+  let x_96 : vec4<f32> = value;
+  value = vec4<f32>(x_96.x, x_96.y, x_95.x, x_95.y);
+  i = 0;
+  loop {
+    let x_102 : i32 = i;
+    let x_104 : f32 = x_10.injectionSwitch.y;
+    if ((x_102 < (i32(x_104) + 1))) {
+    } else {
+      break;
+    }
+    let x_109 : i32 = i;
+    value.x = f32(x_109);
+
+    continuing {
+      let x_112 : i32 = i;
+      i = (x_112 + 1);
+    }
+  }
+  let x_115 : f32 = value.x;
+  let x_116 : bool = (x_115 == 1.0);
+  x_122_phi = x_116;
+  if (x_116) {
+    let x_120 : f32 = value.y;
+    x_121 = (x_120 == 1.0);
+    x_122_phi = x_121;
+  }
+  let x_122 : bool = x_122_phi;
+  if (x_122) {
+    return 1.0;
+  } else {
+    return 0.0;
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var count : i32;
+  var i_1 : i32;
+  count = 0;
+  i_1 = 0;
+  loop {
+    let x_51 : i32 = i_1;
+    let x_53 : f32 = x_10.injectionSwitch.y;
+    if ((x_51 < (i32(x_53) + 1))) {
+    } else {
+      break;
+    }
+    let x_58 : f32 = func_();
+    let x_60 : i32 = count;
+    count = (x_60 + i32(x_58));
+
+    continuing {
+      let x_62 : i32 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  let x_64 : i32 = count;
+  if ((x_64 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..f65360e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,104 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_10 : register(b0, space0) {
+  uint4 x_10[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+float func_() {
+  bool alwaysFalse = false;
+  float4 value = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float2 a = float2(0.0f, 0.0f);
+  int i = 0;
+  bool x_121 = false;
+  bool x_122_phi = false;
+  const float x_71 = gl_FragCoord.x;
+  alwaysFalse = (x_71 < -1.0f);
+  if (alwaysFalse) {
+    const float2 x_76 = a;
+    const float4 x_77 = value;
+    value = float4(x_76.x, x_76.y, x_77.z, x_77.w);
+  }
+  if (!(alwaysFalse)) {
+    const float2 x_84 = asfloat(x_10[0].xy);
+    const float4 x_85 = value;
+    value = float4(x_84.x, x_84.y, x_85.z, x_85.w);
+  }
+  const float4 x_87 = gl_FragCoord;
+  const float4 x_89 = value;
+  const float4 x_93 = value;
+  const float2 x_95 = (((float2(x_87.x, x_87.y) * float2(x_89.x, x_89.y)) * float2(2.0f, 2.0f)) + float2(x_93.x, x_93.y));
+  const float4 x_96 = value;
+  value = float4(x_96.x, x_96.y, x_95.x, x_95.y);
+  i = 0;
+  while (true) {
+    const int x_102 = i;
+    const float x_104 = asfloat(x_10[0].y);
+    if ((x_102 < (int(x_104) + 1))) {
+    } else {
+      break;
+    }
+    value.x = float(i);
+    {
+      i = (i + 1);
+    }
+  }
+  const float x_115 = value.x;
+  const bool x_116 = (x_115 == 1.0f);
+  x_122_phi = x_116;
+  if (x_116) {
+    const float x_120 = value.y;
+    x_121 = (x_120 == 1.0f);
+    x_122_phi = x_121;
+  }
+  if (x_122_phi) {
+    return 1.0f;
+  } else {
+    return 0.0f;
+  }
+  return 0.0f;
+}
+
+void main_1() {
+  int count = 0;
+  int i_1 = 0;
+  count = 0;
+  i_1 = 0;
+  while (true) {
+    const int x_51 = i_1;
+    const float x_53 = asfloat(x_10[0].y);
+    if ((x_51 < (int(x_53) + 1))) {
+    } else {
+      break;
+    }
+    const float x_58 = func_();
+    count = (count + int(x_58));
+    {
+      i_1 = (i_1 + 1);
+    }
+  }
+  if ((count == 2)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_6;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..282221c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.msl
@@ -0,0 +1,111 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+float func_(constant buf0& x_10, thread float4* const tint_symbol_5) {
+  bool alwaysFalse = false;
+  float4 value = 0.0f;
+  float2 a = 0.0f;
+  int i = 0;
+  bool x_121 = false;
+  bool x_122_phi = false;
+  float const x_71 = (*(tint_symbol_5)).x;
+  alwaysFalse = (x_71 < -1.0f);
+  bool const x_73 = alwaysFalse;
+  if (x_73) {
+    float2 const x_76 = a;
+    float4 const x_77 = value;
+    value = float4(x_76.x, x_76.y, x_77.z, x_77.w);
+  }
+  bool const x_79 = alwaysFalse;
+  if (!(x_79)) {
+    float2 const x_84 = x_10.injectionSwitch;
+    float4 const x_85 = value;
+    value = float4(x_84.x, x_84.y, x_85.z, x_85.w);
+  }
+  float4 const x_87 = *(tint_symbol_5);
+  float4 const x_89 = value;
+  float4 const x_93 = value;
+  float2 const x_95 = (((float2(x_87.x, x_87.y) * float2(x_89.x, x_89.y)) * float2(2.0f, 2.0f)) + float2(x_93.x, x_93.y));
+  float4 const x_96 = value;
+  value = float4(x_96.x, x_96.y, x_95.x, x_95.y);
+  i = 0;
+  while (true) {
+    int const x_102 = i;
+    float const x_104 = x_10.injectionSwitch.y;
+    if ((x_102 < (int(x_104) + 1))) {
+    } else {
+      break;
+    }
+    int const x_109 = i;
+    value.x = float(x_109);
+    {
+      int const x_112 = i;
+      i = (x_112 + 1);
+    }
+  }
+  float const x_115 = value.x;
+  bool const x_116 = (x_115 == 1.0f);
+  x_122_phi = x_116;
+  if (x_116) {
+    float const x_120 = value.y;
+    x_121 = (x_120 == 1.0f);
+    x_122_phi = x_121;
+  }
+  bool const x_122 = x_122_phi;
+  if (x_122) {
+    return 1.0f;
+  } else {
+    return 0.0f;
+  }
+  return 0.0f;
+}
+
+void main_1(constant buf0& x_10, thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  int count = 0;
+  int i_1 = 0;
+  count = 0;
+  i_1 = 0;
+  while (true) {
+    int const x_51 = i_1;
+    float const x_53 = x_10.injectionSwitch.y;
+    if ((x_51 < (int(x_53) + 1))) {
+    } else {
+      break;
+    }
+    float const x_58 = func_(x_10, tint_symbol_6);
+    int const x_60 = count;
+    count = (x_60 + int(x_58));
+    {
+      int const x_62 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  int const x_64 = count;
+  if ((x_64 == 2)) {
+    *(tint_symbol_7) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_7) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_10 [[buffer(0)]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(x_10, &(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_9};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..b6beec4
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,269 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 170
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_10 "x_10"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %func_ "func_"
+               OpName %alwaysFalse "alwaysFalse"
+               OpName %value "value"
+               OpName %a "a"
+               OpName %i "i"
+               OpName %x_121 "x_121"
+               OpName %x_122_phi "x_122_phi"
+               OpName %main_1 "main_1"
+               OpName %count "count"
+               OpName %i_1 "i_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_10 NonWritable
+               OpDecorate %x_10 DescriptorSet 0
+               OpDecorate %x_10 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_10 = OpVariable %_ptr_Uniform_buf0 Uniform
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+         %15 = OpTypeFunction %float
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %21 = OpConstantNull %bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %26 = OpConstantNull %v2float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %30 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+   %float_n1 = OpConstant %float -1
+%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
+    %float_2 = OpConstant %float 2
+         %74 = OpConstantComposite %v2float %float_2 %float_2
+      %int_0 = OpConstant %int 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_1 = OpConstant %int 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+       %void = OpTypeVoid
+        %124 = OpTypeFunction %void
+      %int_2 = OpConstant %int 2
+        %155 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %156 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+        %157 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %float None %15
+         %17 = OpLabel
+%alwaysFalse = OpVariable %_ptr_Function_bool Function %21
+      %value = OpVariable %_ptr_Function_v4float Function %5
+          %a = OpVariable %_ptr_Function_v2float Function %26
+          %i = OpVariable %_ptr_Function_int Function %30
+      %x_121 = OpVariable %_ptr_Function_bool Function %21
+  %x_122_phi = OpVariable %_ptr_Function_bool Function %21
+         %36 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %37 = OpLoad %float %36
+         %39 = OpFOrdLessThan %bool %37 %float_n1
+               OpStore %alwaysFalse %39
+         %40 = OpLoad %bool %alwaysFalse
+               OpSelectionMerge %41 None
+               OpBranchConditional %40 %42 %41
+         %42 = OpLabel
+         %43 = OpLoad %v2float %a
+         %44 = OpLoad %v4float %value
+         %45 = OpCompositeExtract %float %43 0
+         %46 = OpCompositeExtract %float %43 1
+         %47 = OpCompositeExtract %float %44 2
+         %48 = OpCompositeExtract %float %44 3
+         %49 = OpCompositeConstruct %v4float %45 %46 %47 %48
+               OpStore %value %49
+               OpBranch %41
+         %41 = OpLabel
+         %50 = OpLoad %bool %alwaysFalse
+         %51 = OpLogicalNot %bool %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %52
+         %53 = OpLabel
+         %55 = OpAccessChain %_ptr_Uniform_v2float %x_10 %uint_0
+         %56 = OpLoad %v2float %55
+         %57 = OpLoad %v4float %value
+         %58 = OpCompositeExtract %float %56 0
+         %59 = OpCompositeExtract %float %56 1
+         %60 = OpCompositeExtract %float %57 2
+         %61 = OpCompositeExtract %float %57 3
+         %62 = OpCompositeConstruct %v4float %58 %59 %60 %61
+               OpStore %value %62
+               OpBranch %52
+         %52 = OpLabel
+         %63 = OpLoad %v4float %gl_FragCoord
+         %64 = OpLoad %v4float %value
+         %65 = OpLoad %v4float %value
+         %66 = OpCompositeExtract %float %63 0
+         %67 = OpCompositeExtract %float %63 1
+         %68 = OpCompositeConstruct %v2float %66 %67
+         %69 = OpCompositeExtract %float %64 0
+         %70 = OpCompositeExtract %float %64 1
+         %71 = OpCompositeConstruct %v2float %69 %70
+         %72 = OpFMul %v2float %68 %71
+         %75 = OpFMul %v2float %72 %74
+         %76 = OpCompositeExtract %float %65 0
+         %77 = OpCompositeExtract %float %65 1
+         %78 = OpCompositeConstruct %v2float %76 %77
+         %79 = OpFAdd %v2float %75 %78
+         %80 = OpLoad %v4float %value
+         %81 = OpCompositeExtract %float %80 0
+         %82 = OpCompositeExtract %float %80 1
+         %83 = OpCompositeExtract %float %79 0
+         %84 = OpCompositeExtract %float %79 1
+         %85 = OpCompositeConstruct %v4float %81 %82 %83 %84
+               OpStore %value %85
+               OpStore %i %int_0
+               OpBranch %87
+         %87 = OpLabel
+               OpLoopMerge %88 %89 None
+               OpBranch %90
+         %90 = OpLabel
+         %91 = OpLoad %int %i
+         %94 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+         %95 = OpLoad %float %94
+         %96 = OpConvertFToS %int %95
+         %98 = OpIAdd %int %96 %int_1
+         %99 = OpSLessThan %bool %91 %98
+               OpSelectionMerge %100 None
+               OpBranchConditional %99 %101 %102
+        %101 = OpLabel
+               OpBranch %100
+        %102 = OpLabel
+               OpBranch %88
+        %100 = OpLabel
+        %103 = OpLoad %int %i
+        %105 = OpAccessChain %_ptr_Function_float %value %uint_0
+        %106 = OpConvertSToF %float %103
+               OpStore %105 %106
+               OpBranch %89
+         %89 = OpLabel
+        %107 = OpLoad %int %i
+        %108 = OpIAdd %int %107 %int_1
+               OpStore %i %108
+               OpBranch %87
+         %88 = OpLabel
+        %109 = OpAccessChain %_ptr_Function_float %value %uint_0
+        %110 = OpLoad %float %109
+        %112 = OpFOrdEqual %bool %110 %float_1
+               OpStore %x_122_phi %112
+               OpSelectionMerge %113 None
+               OpBranchConditional %112 %114 %113
+        %114 = OpLabel
+        %115 = OpAccessChain %_ptr_Function_float %value %uint_1
+        %116 = OpLoad %float %115
+        %117 = OpFOrdEqual %bool %116 %float_1
+               OpStore %x_121 %117
+        %118 = OpLoad %bool %x_121
+               OpStore %x_122_phi %118
+               OpBranch %113
+        %113 = OpLabel
+        %119 = OpLoad %bool %x_122_phi
+               OpSelectionMerge %120 None
+               OpBranchConditional %119 %121 %122
+        %121 = OpLabel
+               OpReturnValue %float_1
+        %122 = OpLabel
+               OpReturnValue %float_0
+        %120 = OpLabel
+               OpReturnValue %float_0
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %124
+        %127 = OpLabel
+      %count = OpVariable %_ptr_Function_int Function %30
+        %i_1 = OpVariable %_ptr_Function_int Function %30
+               OpStore %count %int_0
+               OpStore %i_1 %int_0
+               OpBranch %130
+        %130 = OpLabel
+               OpLoopMerge %131 %132 None
+               OpBranch %133
+        %133 = OpLabel
+        %134 = OpLoad %int %i_1
+        %135 = OpAccessChain %_ptr_Uniform_float %x_10 %uint_0 %uint_1
+        %136 = OpLoad %float %135
+        %137 = OpConvertFToS %int %136
+        %138 = OpIAdd %int %137 %int_1
+        %139 = OpSLessThan %bool %134 %138
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %142
+        %141 = OpLabel
+               OpBranch %140
+        %142 = OpLabel
+               OpBranch %131
+        %140 = OpLabel
+        %143 = OpFunctionCall %float %func_
+        %144 = OpLoad %int %count
+        %145 = OpConvertFToS %int %143
+        %146 = OpIAdd %int %144 %145
+               OpStore %count %146
+               OpBranch %132
+        %132 = OpLabel
+        %147 = OpLoad %int %i_1
+        %148 = OpIAdd %int %147 %int_1
+               OpStore %i_1 %148
+               OpBranch %130
+        %131 = OpLabel
+        %149 = OpLoad %int %count
+        %151 = OpIEqual %bool %149 %int_2
+               OpSelectionMerge %152 None
+               OpBranchConditional %151 %153 %154
+        %153 = OpLabel
+               OpStore %x_GLF_color %155
+               OpBranch %152
+        %154 = OpLabel
+               OpStore %x_GLF_color %156
+               OpBranch %152
+        %152 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %157
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %161 = OpLabel
+        %162 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %162
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %124
+        %164 = OpLabel
+        %165 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %165
+        %166 = OpFunctionCall %void %main_1
+        %168 = OpLoad %v4float %x_GLF_color
+        %169 = OpCompositeConstruct %main_out %168
+        %167 = OpFunctionCall %void %tint_symbol_3 %169
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1036f48
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,112 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> gl_FragCoord : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> f32 {
+  var alwaysFalse : bool;
+  var value : vec4<f32>;
+  var a : vec2<f32>;
+  var i : i32;
+  var x_121 : bool;
+  var x_122_phi : bool;
+  let x_71 : f32 = gl_FragCoord.x;
+  alwaysFalse = (x_71 < -1.0);
+  let x_73 : bool = alwaysFalse;
+  if (x_73) {
+    let x_76 : vec2<f32> = a;
+    let x_77 : vec4<f32> = value;
+    value = vec4<f32>(x_76.x, x_76.y, x_77.z, x_77.w);
+  }
+  let x_79 : bool = alwaysFalse;
+  if (!(x_79)) {
+    let x_84 : vec2<f32> = x_10.injectionSwitch;
+    let x_85 : vec4<f32> = value;
+    value = vec4<f32>(x_84.x, x_84.y, x_85.z, x_85.w);
+  }
+  let x_87 : vec4<f32> = gl_FragCoord;
+  let x_89 : vec4<f32> = value;
+  let x_93 : vec4<f32> = value;
+  let x_95 : vec2<f32> = (((vec2<f32>(x_87.x, x_87.y) * vec2<f32>(x_89.x, x_89.y)) * vec2<f32>(2.0, 2.0)) + vec2<f32>(x_93.x, x_93.y));
+  let x_96 : vec4<f32> = value;
+  value = vec4<f32>(x_96.x, x_96.y, x_95.x, x_95.y);
+  i = 0;
+  loop {
+    let x_102 : i32 = i;
+    let x_104 : f32 = x_10.injectionSwitch.y;
+    if ((x_102 < (i32(x_104) + 1))) {
+    } else {
+      break;
+    }
+    let x_109 : i32 = i;
+    value.x = f32(x_109);
+
+    continuing {
+      let x_112 : i32 = i;
+      i = (x_112 + 1);
+    }
+  }
+  let x_115 : f32 = value.x;
+  let x_116 : bool = (x_115 == 1.0);
+  x_122_phi = x_116;
+  if (x_116) {
+    let x_120 : f32 = value.y;
+    x_121 = (x_120 == 1.0);
+    x_122_phi = x_121;
+  }
+  let x_122 : bool = x_122_phi;
+  if (x_122) {
+    return 1.0;
+  } else {
+    return 0.0;
+  }
+  return 0.0;
+}
+
+fn main_1() {
+  var count : i32;
+  var i_1 : i32;
+  count = 0;
+  i_1 = 0;
+  loop {
+    let x_51 : i32 = i_1;
+    let x_53 : f32 = x_10.injectionSwitch.y;
+    if ((x_51 < (i32(x_53) + 1))) {
+    } else {
+      break;
+    }
+    let x_58 : f32 = func_();
+    let x_60 : i32 = count;
+    count = (x_60 + i32(x_58));
+
+    continuing {
+      let x_62 : i32 = i_1;
+      i_1 = (x_62 + 1);
+    }
+  }
+  let x_64 : i32 = count;
+  if ((x_64 == 2)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm
new file mode 100644
index 0000000..0e0d541
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm
@@ -0,0 +1,81 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %func_ "func("
+               OpName %coord "coord"
+               OpName %tmp3 "tmp3"
+               OpName %tmp2 "tmp2"
+               OpName %tmp "tmp"
+               OpName %_GLF_color "_GLF_color"
+               OpDecorate %func_ RelaxedPrecision
+               OpDecorate %9 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+         %13 = OpTypeFunction %int
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %float_1 = OpConstant %float 1
+         %18 = OpConstantComposite %v2float %float_1 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %int_180 = OpConstant %int 180
+       %bool = OpTypeBool
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+      %int_0 = OpConstant %int 0
+    %v4float = OpTypeVector %float 4
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+      %int_1 = OpConstant %int 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %32 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %33 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %11
+         %34 = OpLabel
+          %9 = OpFunctionCall %int %func_
+         %35 = OpIEqual %bool %9 %int_1
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %38
+         %37 = OpLabel
+               OpStore %_GLF_color %32
+               OpBranch %36
+         %38 = OpLabel
+               OpStore %_GLF_color %33
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+      %func_ = OpFunction %int None %13
+         %39 = OpLabel
+      %coord = OpVariable %_ptr_Function_v2float Function
+       %tmp3 = OpVariable %_ptr_Function_float Function
+       %tmp2 = OpVariable %_ptr_Function__arr_float_uint_1 Function
+        %tmp = OpVariable %_ptr_Function_v4float Function
+               OpStore %coord %18
+         %40 = OpAccessChain %_ptr_Function_float %coord %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpConvertFToS %int %41
+         %43 = OpSLessThan %bool %42 %int_180
+               OpSelectionMerge %44 None
+               OpBranchConditional %43 %45 %46
+         %45 = OpLabel
+         %47 = OpAccessChain %_ptr_Function_float %tmp2 %int_0
+         %48 = OpLoad %float %47
+               OpStore %tmp3 %48
+               OpBranch %44
+         %46 = OpLabel
+               OpKill
+         %44 = OpLabel
+         %49 = OpCompositeConstruct %v4float %48 %48 %48 %48
+               OpStore %tmp %49
+               OpReturnValue %int_1
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..1051003
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.hlsl
@@ -0,0 +1,43 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  float2 coord = float2(0.0f, 0.0f);
+  float tmp3 = 0.0f;
+  float tmp2[1] = (float[1])0;
+  float4 tmp = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float x_48 = 0.0f;
+  coord = float2(1.0f, 1.0f);
+  const float x_41 = coord.y;
+  if ((int(x_41) < 180)) {
+    x_48 = tmp2[0];
+    tmp3 = x_48;
+  } else {
+    discard;
+  }
+  tmp = float4(x_48, x_48, x_48, x_48);
+  return 1;
+}
+
+void main_1() {
+  const int x_9 = func_();
+  if ((x_9 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.msl
new file mode 100644
index 0000000..ed94dc2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_() {
+  float2 coord = 0.0f;
+  float tmp3 = 0.0f;
+  tint_array_wrapper tmp2 = {};
+  float4 tmp = 0.0f;
+  float x_48 = 0.0f;
+  coord = float2(1.0f, 1.0f);
+  float const x_41 = coord.y;
+  if ((int(x_41) < 180)) {
+    x_48 = tmp2.arr[0];
+    tmp3 = x_48;
+  } else {
+    discard_fragment();
+  }
+  tmp = float4(x_48, x_48, x_48, x_48);
+  return 1;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  int const x_9 = func_();
+  if ((x_9 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..658ed91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.spvasm
@@ -0,0 +1,121 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 73
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %coord "coord"
+               OpName %tmp3 "tmp3"
+               OpName %tmp2 "tmp2"
+               OpName %tmp "tmp"
+               OpName %x_48 "x_48"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+          %8 = OpTypeFunction %int
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+         %24 = OpConstantNull %_arr_float_uint_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v2float %float_1 %float_1
+    %int_180 = OpConstant %int 180
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %49 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %59 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %60 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %61 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %8
+         %11 = OpLabel
+      %coord = OpVariable %_ptr_Function_v2float Function %15
+       %tmp3 = OpVariable %_ptr_Function_float Function %18
+       %tmp2 = OpVariable %_ptr_Function__arr_float_uint_1 Function %24
+        %tmp = OpVariable %_ptr_Function_v4float Function %5
+       %x_48 = OpVariable %_ptr_Function_float Function %18
+               OpStore %coord %29
+         %30 = OpAccessChain %_ptr_Function_float %coord %uint_1
+         %31 = OpLoad %float %30
+         %32 = OpConvertFToS %int %31
+         %34 = OpSLessThan %bool %32 %int_180
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+         %40 = OpAccessChain %_ptr_Function_float %tmp2 %int_0
+         %41 = OpLoad %float %40
+               OpStore %x_48 %41
+         %42 = OpLoad %float %x_48
+               OpStore %tmp3 %42
+               OpBranch %36
+         %38 = OpLabel
+               OpKill
+         %36 = OpLabel
+         %43 = OpLoad %float %x_48
+         %44 = OpLoad %float %x_48
+         %45 = OpLoad %float %x_48
+         %46 = OpLoad %float %x_48
+         %47 = OpCompositeConstruct %v4float %43 %44 %45 %46
+               OpStore %tmp %47
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %49
+         %52 = OpLabel
+         %53 = OpFunctionCall %int %func_
+         %54 = OpIEqual %bool %53 %int_1
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpStore %x_GLF_color %59
+               OpBranch %55
+         %57 = OpLabel
+               OpStore %x_GLF_color %60
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %61
+%tint_symbol = OpFunctionParameter %main_out
+         %65 = OpLabel
+         %66 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %66
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %49
+         %68 = OpLabel
+         %69 = OpFunctionCall %void %main_1
+         %71 = OpLoad %v4float %x_GLF_color
+         %72 = OpCompositeConstruct %main_out %71
+         %70 = OpFunctionCall %void %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..3461a66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.spvasm.expected.wgsl
@@ -0,0 +1,40 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var coord : vec2<f32>;
+  var tmp3 : f32;
+  var tmp2 : array<f32, 1>;
+  var tmp : vec4<f32>;
+  var x_48 : f32;
+  coord = vec2<f32>(1.0, 1.0);
+  let x_41 : f32 = coord.y;
+  if ((i32(x_41) < 180)) {
+    x_48 = tmp2[0];
+    tmp3 = x_48;
+  } else {
+    discard;
+  }
+  tmp = vec4<f32>(x_48, x_48, x_48, x_48);
+  return 1;
+}
+
+fn main_1() {
+  let x_9 : i32 = func_();
+  if ((x_9 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
new file mode 100644
index 0000000..3461a66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
@@ -0,0 +1,40 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var coord : vec2<f32>;
+  var tmp3 : f32;
+  var tmp2 : array<f32, 1>;
+  var tmp : vec4<f32>;
+  var x_48 : f32;
+  coord = vec2<f32>(1.0, 1.0);
+  let x_41 : f32 = coord.y;
+  if ((i32(x_41) < 180)) {
+    x_48 = tmp2[0];
+    tmp3 = x_48;
+  } else {
+    discard;
+  }
+  tmp = vec4<f32>(x_48, x_48, x_48, x_48);
+  return 1;
+}
+
+fn main_1() {
+  let x_9 : i32 = func_();
+  if ((x_9 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..1051003
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.hlsl
@@ -0,0 +1,43 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+int func_() {
+  float2 coord = float2(0.0f, 0.0f);
+  float tmp3 = 0.0f;
+  float tmp2[1] = (float[1])0;
+  float4 tmp = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float x_48 = 0.0f;
+  coord = float2(1.0f, 1.0f);
+  const float x_41 = coord.y;
+  if ((int(x_41) < 180)) {
+    x_48 = tmp2[0];
+    tmp3 = x_48;
+  } else {
+    discard;
+  }
+  tmp = float4(x_48, x_48, x_48, x_48);
+  return 1;
+}
+
+void main_1() {
+  const int x_9 = func_();
+  if ((x_9 == 1)) {
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.msl
new file mode 100644
index 0000000..ed94dc2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[1];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+int func_() {
+  float2 coord = 0.0f;
+  float tmp3 = 0.0f;
+  tint_array_wrapper tmp2 = {};
+  float4 tmp = 0.0f;
+  float x_48 = 0.0f;
+  coord = float2(1.0f, 1.0f);
+  float const x_41 = coord.y;
+  if ((int(x_41) < 180)) {
+    x_48 = tmp2.arr[0];
+    tmp3 = x_48;
+  } else {
+    discard_fragment();
+  }
+  tmp = float4(x_48, x_48, x_48, x_48);
+  return 1;
+}
+
+void main_1(thread float4* const tint_symbol_4) {
+  int const x_9 = func_();
+  if ((x_9 == 1)) {
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  } else {
+    *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..658ed91
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.spvasm
@@ -0,0 +1,121 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 73
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %func_ "func_"
+               OpName %coord "coord"
+               OpName %tmp3 "tmp3"
+               OpName %tmp2 "tmp2"
+               OpName %tmp "tmp"
+               OpName %x_48 "x_48"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_1 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+        %int = OpTypeInt 32 1
+          %8 = OpTypeFunction %int
+    %v2float = OpTypeVector %float 2
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %15 = OpConstantNull %v2float
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
+         %24 = OpConstantNull %_arr_float_uint_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v2float %float_1 %float_1
+    %int_180 = OpConstant %int 180
+       %bool = OpTypeBool
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %void = OpTypeVoid
+         %49 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %59 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+         %60 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %61 = OpTypeFunction %void %main_out
+      %func_ = OpFunction %int None %8
+         %11 = OpLabel
+      %coord = OpVariable %_ptr_Function_v2float Function %15
+       %tmp3 = OpVariable %_ptr_Function_float Function %18
+       %tmp2 = OpVariable %_ptr_Function__arr_float_uint_1 Function %24
+        %tmp = OpVariable %_ptr_Function_v4float Function %5
+       %x_48 = OpVariable %_ptr_Function_float Function %18
+               OpStore %coord %29
+         %30 = OpAccessChain %_ptr_Function_float %coord %uint_1
+         %31 = OpLoad %float %30
+         %32 = OpConvertFToS %int %31
+         %34 = OpSLessThan %bool %32 %int_180
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %38
+         %37 = OpLabel
+         %40 = OpAccessChain %_ptr_Function_float %tmp2 %int_0
+         %41 = OpLoad %float %40
+               OpStore %x_48 %41
+         %42 = OpLoad %float %x_48
+               OpStore %tmp3 %42
+               OpBranch %36
+         %38 = OpLabel
+               OpKill
+         %36 = OpLabel
+         %43 = OpLoad %float %x_48
+         %44 = OpLoad %float %x_48
+         %45 = OpLoad %float %x_48
+         %46 = OpLoad %float %x_48
+         %47 = OpCompositeConstruct %v4float %43 %44 %45 %46
+               OpStore %tmp %47
+               OpReturnValue %int_1
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %49
+         %52 = OpLabel
+         %53 = OpFunctionCall %int %func_
+         %54 = OpIEqual %bool %53 %int_1
+               OpSelectionMerge %55 None
+               OpBranchConditional %54 %56 %57
+         %56 = OpLabel
+               OpStore %x_GLF_color %59
+               OpBranch %55
+         %57 = OpLabel
+               OpStore %x_GLF_color %60
+               OpBranch %55
+         %55 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %61
+%tint_symbol = OpFunctionParameter %main_out
+         %65 = OpLabel
+         %66 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %66
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %49
+         %68 = OpLabel
+         %69 = OpFunctionCall %void %main_1
+         %71 = OpLoad %v4float %x_GLF_color
+         %72 = OpCompositeConstruct %main_out %71
+         %70 = OpFunctionCall %void %tint_symbol_2 %72
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..3461a66
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl.expected.wgsl
@@ -0,0 +1,40 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn func_() -> i32 {
+  var coord : vec2<f32>;
+  var tmp3 : f32;
+  var tmp2 : array<f32, 1>;
+  var tmp : vec4<f32>;
+  var x_48 : f32;
+  coord = vec2<f32>(1.0, 1.0);
+  let x_41 : f32 = coord.y;
+  if ((i32(x_41) < 180)) {
+    x_48 = tmp2[0];
+    tmp3 = x_48;
+  } else {
+    discard;
+  }
+  tmp = vec4<f32>(x_48, x_48, x_48, x_48);
+  return 1;
+}
+
+fn main_1() {
+  let x_9 : i32 = func_();
+  if ((x_9 == 1)) {
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  } else {
+    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm
new file mode 100644
index 0000000..39c774d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm
@@ -0,0 +1,75 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %_GLF_color "_GLF_color"
+               OpName %j "j"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %j RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %7 RelaxedPrecision
+               OpDecorate %8 RelaxedPrecision
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+       %main = OpFunction %void None %10
+         %29 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function
+               OpStore %_GLF_color %16
+               OpBranch %30
+         %30 = OpLabel
+         %31 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+         %32 = OpLoad %float %31
+          %7 = OpConvertFToS %int %32
+               OpStore %j %7
+               OpLoopMerge %33 %34 None
+               OpBranch %35
+         %35 = OpLabel
+          %8 = OpLoad %int %j
+         %36 = OpSLessThan %bool %8 %int_2
+               OpLoopMerge %37 %38 None
+               OpBranchConditional %36 %39 %37
+         %39 = OpLabel
+               OpReturn
+         %38 = OpLabel
+               OpBranch %35
+         %37 = OpLabel
+               OpBranch %34
+         %34 = OpLabel
+         %40 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %41 = OpLoad %float %40
+         %42 = OpFOrdGreaterThan %bool %float_0 %41
+               OpBranchConditional %42 %30 %33
+         %33 = OpLabel
+         %43 = OpConvertFToS %int %41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..257e1e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,44 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  int j = 0;
+  float x_41 = 0.0f;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    const float x_32 = asfloat(x_6[0].x);
+    j = int(x_32);
+    while (true) {
+      if ((j < 2)) {
+      } else {
+        break;
+      }
+      return;
+    }
+    {
+      x_41 = asfloat(x_6[0].y);
+      if ((0.0f > x_41)) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_43 = int(x_41);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..042f177
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int j = 0;
+  float x_41 = 0.0f;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    float const x_32 = x_6.injectionSwitch.x;
+    j = int(x_32);
+    while (true) {
+      int const x_8 = j;
+      if ((x_8 < 2)) {
+      } else {
+        break;
+      }
+      return;
+    }
+    {
+      x_41 = x_6.injectionSwitch.y;
+      if ((0.0f > x_41)) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_43 = int(x_41);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..1f04f3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,130 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %x_41 "x_41"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %19
+       %x_41 = OpVariable %_ptr_Function_float Function %22
+               OpStore %x_GLF_color %25
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %34 = OpLoad %float %33
+         %35 = OpConvertFToS %int %34
+               OpStore %j %35
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %j
+         %42 = OpSLessThan %bool %40 %int_2
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %37
+         %44 = OpLabel
+               OpReturn
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %49 = OpLoad %float %48
+               OpStore %x_41 %49
+         %50 = OpLoad %float %x_41
+         %51 = OpFOrdGreaterThan %bool %float_0 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %27
+         %52 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %56 = OpLoad %float %x_41
+         %55 = OpConvertFToS %int %56
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %57
+%tint_symbol = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %64 = OpLabel
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_2 %68
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 28[%28] is not post dominated by the back-edge block 52[%52]
+  %52 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..563d5c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,47 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var j : i32;
+  var x_41 : f32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  loop {
+    let x_32 : f32 = x_6.injectionSwitch.x;
+    j = i32(x_32);
+    loop {
+      let x_8 : i32 = j;
+      if ((x_8 < 2)) {
+      } else {
+        break;
+      }
+      return;
+    }
+
+    continuing {
+      x_41 = x_6.injectionSwitch.y;
+      if ((0.0 > x_41)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_43 : i32 = i32(x_41);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
new file mode 100644
index 0000000..563d5c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
@@ -0,0 +1,47 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var j : i32;
+  var x_41 : f32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  loop {
+    let x_32 : f32 = x_6.injectionSwitch.x;
+    j = i32(x_32);
+    loop {
+      let x_8 : i32 = j;
+      if ((x_8 < 2)) {
+      } else {
+        break;
+      }
+      return;
+    }
+
+    continuing {
+      x_41 = x_6.injectionSwitch.y;
+      if ((0.0 > x_41)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_43 : i32 = i32(x_41);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..257e1e6
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,44 @@
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+
+void main_1() {
+  int j = 0;
+  float x_41 = 0.0f;
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    const float x_32 = asfloat(x_6[0].x);
+    j = int(x_32);
+    while (true) {
+      if ((j < 2)) {
+      } else {
+        break;
+      }
+      return;
+    }
+    {
+      x_41 = asfloat(x_6[0].y);
+      if ((0.0f > x_41)) {
+      } else {
+        break;
+      }
+    }
+  }
+  const int x_43 = int(x_41);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..042f177
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.msl
@@ -0,0 +1,48 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  int j = 0;
+  float x_41 = 0.0f;
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  while (true) {
+    float const x_32 = x_6.injectionSwitch.x;
+    j = int(x_32);
+    while (true) {
+      int const x_8 = j;
+      if ((x_8 < 2)) {
+      } else {
+        break;
+      }
+      return;
+    }
+    {
+      x_41 = x_6.injectionSwitch.y;
+      if ((0.0f > x_41)) {
+      } else {
+        break;
+      }
+    }
+  }
+  int const x_43 = int(x_41);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..1f04f3b
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,130 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 69
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %j "j"
+               OpName %x_41 "x_41"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %19 = OpConstantNull %int
+%_ptr_Function_float = OpTypePointer Function %float
+         %22 = OpConstantNull %float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+          %j = OpVariable %_ptr_Function_int Function %19
+       %x_41 = OpVariable %_ptr_Function_float Function %22
+               OpStore %x_GLF_color %25
+               OpBranch %26
+         %26 = OpLabel
+               OpLoopMerge %27 %28 None
+               OpBranch %29
+         %29 = OpLabel
+         %33 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_0
+         %34 = OpLoad %float %33
+         %35 = OpConvertFToS %int %34
+               OpStore %j %35
+               OpBranch %36
+         %36 = OpLabel
+               OpLoopMerge %37 %38 None
+               OpBranch %39
+         %39 = OpLabel
+         %40 = OpLoad %int %j
+         %42 = OpSLessThan %bool %40 %int_2
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %46
+         %45 = OpLabel
+               OpBranch %44
+         %46 = OpLabel
+               OpBranch %37
+         %44 = OpLabel
+               OpReturn
+         %38 = OpLabel
+               OpBranch %36
+         %37 = OpLabel
+               OpBranch %28
+         %28 = OpLabel
+         %48 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %49 = OpLoad %float %48
+               OpStore %x_41 %49
+         %50 = OpLoad %float %x_41
+         %51 = OpFOrdGreaterThan %bool %float_0 %50
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %27
+         %52 = OpLabel
+               OpBranch %26
+         %27 = OpLabel
+         %56 = OpLoad %float %x_41
+         %55 = OpConvertFToS %int %56
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %57
+%tint_symbol = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %64 = OpLabel
+         %65 = OpFunctionCall %void %main_1
+         %67 = OpLoad %v4float %x_GLF_color
+         %68 = OpCompositeConstruct %main_out %67
+         %66 = OpFunctionCall %void %tint_symbol_2 %68
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 28[%28] is not post dominated by the back-edge block 52[%52]
+  %52 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..563d5c3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,47 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+var<private> x_GLF_color : vec4<f32>;
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+fn main_1() {
+  var j : i32;
+  var x_41 : f32;
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  loop {
+    let x_32 : f32 = x_6.injectionSwitch.x;
+    j = i32(x_32);
+    loop {
+      let x_8 : i32 = j;
+      if ((x_8 < 2)) {
+      } else {
+        break;
+      }
+      return;
+    }
+
+    continuing {
+      x_41 = x_6.injectionSwitch.y;
+      if ((0.0 > x_41)) {
+      } else {
+        break;
+      }
+    }
+  }
+  let x_43 : i32 = i32(x_41);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm
new file mode 100644
index 0000000..806ac7a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm
@@ -0,0 +1,231 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %idx "idx"
+               OpName %m43 "m43"
+               OpName %ll_1 "ll_1"
+               OpName %GLF_live6rows "GLF_live6rows"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injected"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpName %z "z"
+               OpName %ll_2 "ll_2"
+               OpName %ctr "ctr"
+               OpName %tempm43 "tempm43"
+               OpName %ll_3 "ll_3"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %GLF_live6sums "GLF_live6sums"
+               OpDecorate %idx RelaxedPrecision
+               OpDecorate %ll_1 RelaxedPrecision
+               OpDecorate %GLF_live6rows RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpMemberDecorate %buf0 0 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %z RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %ll_2 RelaxedPrecision
+               OpDecorate %ctr RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %ll_3 RelaxedPrecision
+               OpDecorate %c RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %d RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %34 RelaxedPrecision
+               OpDecorate %35 RelaxedPrecision
+               OpDecorate %36 RelaxedPrecision
+               OpDecorate %37 RelaxedPrecision
+               OpDecorate %38 RelaxedPrecision
+               OpDecorate %39 RelaxedPrecision
+               OpDecorate %40 RelaxedPrecision
+               OpDecorate %41 RelaxedPrecision
+               OpDecorate %42 RelaxedPrecision
+               OpDecorate %43 RelaxedPrecision
+               OpDecorate %44 RelaxedPrecision
+       %void = OpTypeVoid
+         %46 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %56 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %57 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %58 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %59 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %60 = OpConstantComposite %mat4v3float %56 %57 %58 %59
+      %int_2 = OpConstant %int 2
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %67 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+       %main = OpFunction %void None %46
+         %78 = OpLabel
+        %idx = OpVariable %_ptr_Function_int Function
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function
+       %ll_1 = OpVariable %_ptr_Function_int Function
+%GLF_live6rows = OpVariable %_ptr_Function_int Function
+          %z = OpVariable %_ptr_Function_int Function
+       %ll_2 = OpVariable %_ptr_Function_int Function
+        %ctr = OpVariable %_ptr_Function_int Function
+    %tempm43 = OpVariable %_ptr_Function_mat4v3float Function
+       %ll_3 = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+          %d = OpVariable %_ptr_Function_int Function
+%GLF_live6sums = OpVariable %_ptr_Function__arr_float_uint_9 Function
+               OpStore %idx %int_0
+               OpStore %m43 %60
+               OpStore %ll_1 %int_0
+               OpStore %GLF_live6rows %int_2
+               OpBranch %79
+         %79 = OpLabel
+               OpLoopMerge %80 %81 None
+               OpBranch %82
+         %82 = OpLabel
+         %18 = OpLoad %int %ll_1
+         %83 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %19 = OpLoad %int %83
+         %84 = OpSGreaterThanEqual %bool %18 %19
+               OpSelectionMerge %85 None
+               OpBranchConditional %84 %86 %85
+         %86 = OpLabel
+               OpStore %_GLF_color %67
+               OpBranch %80
+         %85 = OpLabel
+         %20 = OpLoad %int %ll_1
+         %21 = OpIAdd %int %20 %int_1
+               OpStore %ll_1 %21
+         %87 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %22 = OpLoad %int %87
+               OpStore %z %22
+               OpStore %ll_2 %int_0
+               OpStore %ctr %int_0
+               OpBranch %88
+         %88 = OpLabel
+               OpLoopMerge %89 %90 None
+               OpBranch %91
+         %91 = OpLabel
+         %23 = OpLoad %int %ctr
+         %92 = OpSLessThan %bool %23 %int_1
+               OpBranchConditional %92 %93 %89
+         %93 = OpLabel
+         %24 = OpLoad %int %ll_2
+         %94 = OpAccessChain %_ptr_Uniform_int %_ %int_0
+         %25 = OpLoad %int %94
+         %95 = OpSGreaterThanEqual %bool %24 %25
+               OpSelectionMerge %96 None
+               OpBranchConditional %95 %97 %96
+         %97 = OpLabel
+               OpBranch %89
+         %96 = OpLabel
+         %26 = OpLoad %int %ll_2
+         %27 = OpIAdd %int %26 %int_1
+               OpStore %ll_2 %27
+         %98 = OpLoad %mat4v3float %m43
+               OpStore %tempm43 %98
+               OpStore %ll_3 %int_0
+               OpStore %c %int_0
+               OpBranch %99
+         %99 = OpLabel
+               OpLoopMerge %100 %101 None
+               OpBranch %102
+        %102 = OpLabel
+         %28 = OpLoad %int %z
+        %103 = OpSLessThan %bool %int_1 %28
+               OpBranchConditional %103 %104 %100
+        %104 = OpLabel
+               OpStore %d %int_0
+         %29 = OpLoad %int %c
+        %105 = OpSGreaterThanEqual %bool %29 %int_0
+         %30 = OpLoad %int %c
+        %106 = OpSLessThan %bool %30 %int_4
+        %107 = OpLogicalAnd %bool %105 %106
+         %31 = OpLoad %int %c
+        %108 = OpSelect %int %107 %31 %int_0
+         %32 = OpLoad %int %d
+        %109 = OpSGreaterThanEqual %bool %32 %int_0
+         %33 = OpLoad %int %d
+        %110 = OpSLessThan %bool %33 %int_3
+        %111 = OpLogicalAnd %bool %109 %110
+         %34 = OpLoad %int %d
+        %112 = OpSelect %int %111 %34 %int_0
+        %113 = OpAccessChain %_ptr_Function_float %tempm43 %108 %112
+               OpStore %113 %float_1
+               OpBranch %101
+        %101 = OpLabel
+         %35 = OpLoad %int %c
+         %36 = OpIAdd %int %35 %int_1
+               OpStore %c %36
+               OpBranch %99
+        %100 = OpLabel
+         %37 = OpLoad %int %idx
+        %114 = OpSGreaterThanEqual %bool %37 %int_0
+         %38 = OpLoad %int %idx
+        %115 = OpSLessThan %bool %38 %int_9
+        %116 = OpLogicalAnd %bool %114 %115
+         %39 = OpLoad %int %idx
+        %117 = OpSelect %int %116 %39 %int_0
+         %40 = OpLoad %int %ctr
+        %118 = OpAccessChain %_ptr_Function_float %m43 %40 %uint_1
+        %119 = OpLoad %float %118
+        %120 = OpAccessChain %_ptr_Function_float %GLF_live6sums %117
+        %121 = OpLoad %float %120
+        %122 = OpFAdd %float %121 %119
+        %123 = OpAccessChain %_ptr_Function_float %GLF_live6sums %117
+               OpStore %123 %122
+               OpBranch %90
+         %90 = OpLabel
+         %41 = OpLoad %int %ctr
+         %42 = OpIAdd %int %41 %int_1
+               OpStore %ctr %42
+               OpBranch %88
+         %89 = OpLabel
+         %43 = OpLoad %int %idx
+         %44 = OpIAdd %int %43 %int_1
+               OpStore %idx %44
+               OpBranch %81
+         %81 = OpLabel
+               OpBranch %79
+         %80 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.hlsl
new file mode 100755
index 0000000..66b4a0e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,99 @@
+SKIP: FAILED
+
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int idx = 0;
+  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);
+  int ll_1 = 0;
+  int GLF_live6rows = 0;
+  int z = 0;
+  int ll_2 = 0;
+  int ctr = 0;
+  float4x3 tempm43 = 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);
+  int ll_3 = 0;
+  int c = 0;
+  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));
+  ll_1 = 0;
+  GLF_live6rows = 2;
+  while (true) {
+    const int x_18 = ll_1;
+    const int x_19 = asint(x_9[0].x);
+    if ((x_18 >= x_19)) {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+    ll_1 = (ll_1 + 1);
+    const int x_22 = asint(x_9[0].x);
+    z = x_22;
+    ll_2 = 0;
+    ctr = 0;
+    {
+      for(; (ctr < 1); ctr = (ctr + 1)) {
+        const int x_24 = ll_2;
+        const int x_25 = asint(x_9[0].x);
+        if ((x_24 >= x_25)) {
+          break;
+        }
+        ll_2 = (ll_2 + 1);
+        tempm43 = m43;
+        ll_3 = 0;
+        c = 0;
+        {
+          for(; (1 < z); c = (c + 1)) {
+            d = 0;
+            bool tint_tmp = (c >= 0);
+            if (tint_tmp) {
+              tint_tmp = (c < 4);
+            }
+            bool tint_tmp_1 = (d >= 0);
+            if (tint_tmp_1) {
+              tint_tmp_1 = (d < 3);
+            }
+            set_float3(tempm43[((tint_tmp) ? c : 0)], ((tint_tmp_1) ? d : 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 float x_119 = m43[ctr].y;
+        const float x_121 = GLF_live6sums[x_117];
+        GLF_live6sums[x_117] = (x_121 + x_119);
+      }
+    }
+    idx = (idx + 1);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+error: validation errors
+T:\tmp\ufmo.0:86: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..aa5c43e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.msl
@@ -0,0 +1,109 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int injected;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_4) {
+  int idx = 0;
+  float4x3 m43 = float4x3(0.0f);
+  int ll_1 = 0;
+  int GLF_live6rows = 0;
+  int z = 0;
+  int ll_2 = 0;
+  int ctr = 0;
+  float4x3 tempm43 = float4x3(0.0f);
+  int ll_3 = 0;
+  int c = 0;
+  int d = 0;
+  tint_array_wrapper GLF_live6sums = {};
+  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));
+  ll_1 = 0;
+  GLF_live6rows = 2;
+  while (true) {
+    int const x_18 = ll_1;
+    int const x_19 = x_9.injected;
+    if ((x_18 >= x_19)) {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+    int const x_20 = ll_1;
+    ll_1 = (x_20 + 1);
+    int const x_22 = x_9.injected;
+    z = x_22;
+    ll_2 = 0;
+    ctr = 0;
+    while (true) {
+      int const x_23 = ctr;
+      if ((x_23 < 1)) {
+      } else {
+        break;
+      }
+      int const x_24 = ll_2;
+      int const x_25 = x_9.injected;
+      if ((x_24 >= x_25)) {
+        break;
+      }
+      int const x_26 = ll_2;
+      ll_2 = (x_26 + 1);
+      float4x3 const x_98 = m43;
+      tempm43 = x_98;
+      ll_3 = 0;
+      c = 0;
+      while (true) {
+        int const x_28 = z;
+        if ((1 < x_28)) {
+        } else {
+          break;
+        }
+        d = 0;
+        int const x_29 = c;
+        int const x_30 = c;
+        int const x_31 = c;
+        int const x_32 = d;
+        int const x_33 = d;
+        int const x_34 = d;
+        tempm43[select(0, x_31, ((x_29 >= 0) && (x_30 < 4)))][select(0, x_34, ((x_32 >= 0) && (x_33 < 3)))] = 1.0f;
+        {
+          int const x_35 = c;
+          c = (x_35 + 1);
+        }
+      }
+      int const x_37 = idx;
+      int const x_38 = idx;
+      int const x_39 = idx;
+      int const x_117 = select(0, x_39, ((x_37 >= 0) && (x_38 < 9)));
+      int const x_40 = ctr;
+      float const x_119 = m43[x_40].y;
+      float const x_121 = GLF_live6sums.arr[x_117];
+      GLF_live6sums.arr[x_117] = (x_121 + x_119);
+      {
+        int const x_41 = ctr;
+        ctr = (x_41 + 1);
+      }
+    }
+    int const x_43 = idx;
+    idx = (x_43 + 1);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..63de0fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,255 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 152
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injected"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %idx "idx"
+               OpName %m43 "m43"
+               OpName %ll_1 "ll_1"
+               OpName %GLF_live6rows "GLF_live6rows"
+               OpName %z "z"
+               OpName %ll_2 "ll_2"
+               OpName %ctr "ctr"
+               OpName %tempm43 "tempm43"
+               OpName %ll_3 "ll_3"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %GLF_live6sums "GLF_live6sums"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %23 = OpConstantNull %mat4v3float
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %38 = OpConstantNull %_arr_float_uint_9
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %43 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %44 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %46 = OpConstantComposite %mat4v3float %42 %43 %44 %45
+      %int_2 = OpConstant %int 2
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+         %61 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+        %idx = OpVariable %_ptr_Function_int Function %18
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function %23
+       %ll_1 = OpVariable %_ptr_Function_int Function %18
+%GLF_live6rows = OpVariable %_ptr_Function_int Function %18
+          %z = OpVariable %_ptr_Function_int Function %18
+       %ll_2 = OpVariable %_ptr_Function_int Function %18
+        %ctr = OpVariable %_ptr_Function_int Function %18
+    %tempm43 = OpVariable %_ptr_Function_mat4v3float Function %23
+       %ll_3 = OpVariable %_ptr_Function_int Function %18
+          %c = OpVariable %_ptr_Function_int Function %18
+          %d = OpVariable %_ptr_Function_int Function %18
+%GLF_live6sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %38
+               OpStore %idx %int_0
+               OpStore %m43 %46
+               OpStore %ll_1 %int_0
+               OpStore %GLF_live6rows %int_2
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpLoad %int %ll_1
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %56 = OpLoad %int %55
+         %57 = OpSGreaterThanEqual %bool %52 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+               OpStore %x_GLF_color %61
+               OpBranch %49
+         %59 = OpLabel
+         %62 = OpLoad %int %ll_1
+         %64 = OpIAdd %int %62 %int_1
+               OpStore %ll_1 %64
+         %65 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %66 = OpLoad %int %65
+               OpStore %z %66
+               OpStore %ll_2 %int_0
+               OpStore %ctr %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %ctr
+         %72 = OpSLessThan %bool %71 %int_1
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %68
+         %73 = OpLabel
+         %76 = OpLoad %int %ll_2
+         %77 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %78 = OpLoad %int %77
+         %79 = OpSGreaterThanEqual %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %80
+         %81 = OpLabel
+               OpBranch %68
+         %80 = OpLabel
+         %82 = OpLoad %int %ll_2
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %ll_2 %83
+         %84 = OpLoad %mat4v3float %m43
+               OpStore %tempm43 %84
+               OpStore %ll_3 %int_0
+               OpStore %c %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %89 = OpLoad %int %z
+         %90 = OpSLessThan %bool %int_1 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %93
+         %92 = OpLabel
+               OpBranch %91
+         %93 = OpLabel
+               OpBranch %86
+         %91 = OpLabel
+               OpStore %d %int_0
+         %94 = OpLoad %int %c
+         %95 = OpLoad %int %c
+         %96 = OpLoad %int %c
+         %97 = OpLoad %int %d
+         %98 = OpLoad %int %d
+         %99 = OpLoad %int %d
+        %101 = OpSGreaterThanEqual %bool %94 %int_0
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %105 = OpSLessThan %bool %95 %int_4
+               OpBranch %102
+        %102 = OpLabel
+        %106 = OpPhi %bool %101 %91 %105 %103
+        %100 = OpSelect %int %106 %96 %int_0
+        %108 = OpSGreaterThanEqual %bool %97 %int_0
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+        %112 = OpSLessThan %bool %98 %int_3
+               OpBranch %109
+        %109 = OpLabel
+        %113 = OpPhi %bool %108 %102 %112 %110
+        %107 = OpSelect %int %113 %99 %int_0
+        %115 = OpAccessChain %_ptr_Function_float %tempm43 %100 %107
+               OpStore %115 %float_1
+               OpBranch %87
+         %87 = OpLabel
+        %116 = OpLoad %int %c
+        %117 = OpIAdd %int %116 %int_1
+               OpStore %c %117
+               OpBranch %85
+         %86 = OpLabel
+        %118 = OpLoad %int %idx
+        %119 = OpLoad %int %idx
+        %120 = OpLoad %int %idx
+        %122 = OpSGreaterThanEqual %bool %118 %int_0
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %123
+        %124 = OpLabel
+        %126 = OpSLessThan %bool %119 %int_9
+               OpBranch %123
+        %123 = OpLabel
+        %127 = OpPhi %bool %122 %86 %126 %124
+        %121 = OpSelect %int %127 %120 %int_0
+        %128 = OpLoad %int %ctr
+        %130 = OpAccessChain %_ptr_Function_float %m43 %128 %uint_1
+        %131 = OpLoad %float %130
+        %132 = OpAccessChain %_ptr_Function_float %GLF_live6sums %121
+        %133 = OpLoad %float %132
+        %134 = OpAccessChain %_ptr_Function_float %GLF_live6sums %121
+        %135 = OpFAdd %float %133 %131
+               OpStore %134 %135
+               OpBranch %69
+         %69 = OpLabel
+        %136 = OpLoad %int %ctr
+        %137 = OpIAdd %int %136 %int_1
+               OpStore %ctr %137
+               OpBranch %67
+         %68 = OpLabel
+        %138 = OpLoad %int %idx
+        %139 = OpIAdd %int %138 %int_1
+               OpStore %idx %139
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %48
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %140
+%tint_symbol = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %147 = OpLabel
+        %148 = OpFunctionCall %void %main_1
+        %150 = OpLoad %v4float %x_GLF_color
+        %151 = OpCompositeConstruct %main_out %150
+        %149 = OpFunctionCall %void %tint_symbol_2 %151
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..00e805e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,106 @@
+[[block]]
+struct buf0 {
+  injected : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var idx : i32;
+  var m43 : mat4x3<f32>;
+  var ll_1 : i32;
+  var GLF_live6rows : i32;
+  var z : i32;
+  var ll_2 : i32;
+  var ctr : i32;
+  var tempm43 : mat4x3<f32>;
+  var ll_3 : i32;
+  var c : i32;
+  var d : i32;
+  var GLF_live6sums : array<f32, 9>;
+  idx = 0;
+  m43 = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
+  ll_1 = 0;
+  GLF_live6rows = 2;
+  loop {
+    let x_18 : i32 = ll_1;
+    let x_19 : i32 = x_9.injected;
+    if ((x_18 >= x_19)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      break;
+    }
+    let x_20 : i32 = ll_1;
+    ll_1 = (x_20 + 1);
+    let x_22 : i32 = x_9.injected;
+    z = x_22;
+    ll_2 = 0;
+    ctr = 0;
+    loop {
+      let x_23 : i32 = ctr;
+      if ((x_23 < 1)) {
+      } else {
+        break;
+      }
+      let x_24 : i32 = ll_2;
+      let x_25 : i32 = x_9.injected;
+      if ((x_24 >= x_25)) {
+        break;
+      }
+      let x_26 : i32 = ll_2;
+      ll_2 = (x_26 + 1);
+      let x_98 : mat4x3<f32> = m43;
+      tempm43 = x_98;
+      ll_3 = 0;
+      c = 0;
+      loop {
+        let x_28 : i32 = z;
+        if ((1 < x_28)) {
+        } else {
+          break;
+        }
+        d = 0;
+        let x_29 : i32 = c;
+        let x_30 : i32 = c;
+        let x_31 : i32 = c;
+        let x_32 : i32 = d;
+        let x_33 : i32 = d;
+        let x_34 : i32 = d;
+        tempm43[select(0, x_31, ((x_29 >= 0) && (x_30 < 4)))][select(0, x_34, ((x_32 >= 0) && (x_33 < 3)))] = 1.0;
+
+        continuing {
+          let x_35 : i32 = c;
+          c = (x_35 + 1);
+        }
+      }
+      let x_37 : i32 = idx;
+      let x_38 : i32 = idx;
+      let x_39 : i32 = idx;
+      let x_117 : i32 = select(0, x_39, ((x_37 >= 0) && (x_38 < 9)));
+      let x_40 : i32 = ctr;
+      let x_119 : f32 = m43[x_40].y;
+      let x_121 : f32 = GLF_live6sums[x_117];
+      GLF_live6sums[x_117] = (x_121 + x_119);
+
+      continuing {
+        let x_41 : i32 = ctr;
+        ctr = (x_41 + 1);
+      }
+    }
+    let x_43 : i32 = idx;
+    idx = (x_43 + 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
new file mode 100644
index 0000000..00e805e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
@@ -0,0 +1,106 @@
+[[block]]
+struct buf0 {
+  injected : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var idx : i32;
+  var m43 : mat4x3<f32>;
+  var ll_1 : i32;
+  var GLF_live6rows : i32;
+  var z : i32;
+  var ll_2 : i32;
+  var ctr : i32;
+  var tempm43 : mat4x3<f32>;
+  var ll_3 : i32;
+  var c : i32;
+  var d : i32;
+  var GLF_live6sums : array<f32, 9>;
+  idx = 0;
+  m43 = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
+  ll_1 = 0;
+  GLF_live6rows = 2;
+  loop {
+    let x_18 : i32 = ll_1;
+    let x_19 : i32 = x_9.injected;
+    if ((x_18 >= x_19)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      break;
+    }
+    let x_20 : i32 = ll_1;
+    ll_1 = (x_20 + 1);
+    let x_22 : i32 = x_9.injected;
+    z = x_22;
+    ll_2 = 0;
+    ctr = 0;
+    loop {
+      let x_23 : i32 = ctr;
+      if ((x_23 < 1)) {
+      } else {
+        break;
+      }
+      let x_24 : i32 = ll_2;
+      let x_25 : i32 = x_9.injected;
+      if ((x_24 >= x_25)) {
+        break;
+      }
+      let x_26 : i32 = ll_2;
+      ll_2 = (x_26 + 1);
+      let x_98 : mat4x3<f32> = m43;
+      tempm43 = x_98;
+      ll_3 = 0;
+      c = 0;
+      loop {
+        let x_28 : i32 = z;
+        if ((1 < x_28)) {
+        } else {
+          break;
+        }
+        d = 0;
+        let x_29 : i32 = c;
+        let x_30 : i32 = c;
+        let x_31 : i32 = c;
+        let x_32 : i32 = d;
+        let x_33 : i32 = d;
+        let x_34 : i32 = d;
+        tempm43[select(0, x_31, ((x_29 >= 0) && (x_30 < 4)))][select(0, x_34, ((x_32 >= 0) && (x_33 < 3)))] = 1.0;
+
+        continuing {
+          let x_35 : i32 = c;
+          c = (x_35 + 1);
+        }
+      }
+      let x_37 : i32 = idx;
+      let x_38 : i32 = idx;
+      let x_39 : i32 = idx;
+      let x_117 : i32 = select(0, x_39, ((x_37 >= 0) && (x_38 < 9)));
+      let x_40 : i32 = ctr;
+      let x_119 : f32 = m43[x_40].y;
+      let x_121 : f32 = GLF_live6sums[x_117];
+      GLF_live6sums[x_117] = (x_121 + x_119);
+
+      continuing {
+        let x_41 : i32 = ctr;
+        ctr = (x_41 + 1);
+      }
+    }
+    let x_43 : i32 = idx;
+    idx = (x_43 + 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.hlsl
new file mode 100755
index 0000000..b2cb2a3
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,99 @@
+SKIP: FAILED
+
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+cbuffer cbuffer_x_9 : register(b0, space0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  int idx = 0;
+  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);
+  int ll_1 = 0;
+  int GLF_live6rows = 0;
+  int z = 0;
+  int ll_2 = 0;
+  int ctr = 0;
+  float4x3 tempm43 = 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);
+  int ll_3 = 0;
+  int c = 0;
+  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));
+  ll_1 = 0;
+  GLF_live6rows = 2;
+  while (true) {
+    const int x_18 = ll_1;
+    const int x_19 = asint(x_9[0].x);
+    if ((x_18 >= x_19)) {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+    ll_1 = (ll_1 + 1);
+    const int x_22 = asint(x_9[0].x);
+    z = x_22;
+    ll_2 = 0;
+    ctr = 0;
+    {
+      for(; (ctr < 1); ctr = (ctr + 1)) {
+        const int x_24 = ll_2;
+        const int x_25 = asint(x_9[0].x);
+        if ((x_24 >= x_25)) {
+          break;
+        }
+        ll_2 = (ll_2 + 1);
+        tempm43 = m43;
+        ll_3 = 0;
+        c = 0;
+        {
+          for(; (1 < z); c = (c + 1)) {
+            d = 0;
+            bool tint_tmp = (c >= 0);
+            if (tint_tmp) {
+              tint_tmp = (c < 4);
+            }
+            bool tint_tmp_1 = (d >= 0);
+            if (tint_tmp_1) {
+              tint_tmp_1 = (d < 3);
+            }
+            set_float3(tempm43[((tint_tmp) ? c : 0)], ((tint_tmp_1) ? d : 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 float x_119 = m43[ctr].y;
+        const float x_121 = GLF_live6sums[x_117];
+        GLF_live6sums[x_117] = (x_121 + x_119);
+      }
+    }
+    idx = (idx + 1);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
+error: validation errors
+T:\tmp\udx0.0:86: error: Loop must have break.
+Validation failed.
+
+
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..aa5c43e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.msl
@@ -0,0 +1,109 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ int injected;
+};
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_9, thread float4* const tint_symbol_4) {
+  int idx = 0;
+  float4x3 m43 = float4x3(0.0f);
+  int ll_1 = 0;
+  int GLF_live6rows = 0;
+  int z = 0;
+  int ll_2 = 0;
+  int ctr = 0;
+  float4x3 tempm43 = float4x3(0.0f);
+  int ll_3 = 0;
+  int c = 0;
+  int d = 0;
+  tint_array_wrapper GLF_live6sums = {};
+  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));
+  ll_1 = 0;
+  GLF_live6rows = 2;
+  while (true) {
+    int const x_18 = ll_1;
+    int const x_19 = x_9.injected;
+    if ((x_18 >= x_19)) {
+      *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+      break;
+    }
+    int const x_20 = ll_1;
+    ll_1 = (x_20 + 1);
+    int const x_22 = x_9.injected;
+    z = x_22;
+    ll_2 = 0;
+    ctr = 0;
+    while (true) {
+      int const x_23 = ctr;
+      if ((x_23 < 1)) {
+      } else {
+        break;
+      }
+      int const x_24 = ll_2;
+      int const x_25 = x_9.injected;
+      if ((x_24 >= x_25)) {
+        break;
+      }
+      int const x_26 = ll_2;
+      ll_2 = (x_26 + 1);
+      float4x3 const x_98 = m43;
+      tempm43 = x_98;
+      ll_3 = 0;
+      c = 0;
+      while (true) {
+        int const x_28 = z;
+        if ((1 < x_28)) {
+        } else {
+          break;
+        }
+        d = 0;
+        int const x_29 = c;
+        int const x_30 = c;
+        int const x_31 = c;
+        int const x_32 = d;
+        int const x_33 = d;
+        int const x_34 = d;
+        tempm43[select(0, x_31, ((x_29 >= 0) && (x_30 < 4)))][select(0, x_34, ((x_32 >= 0) && (x_33 < 3)))] = 1.0f;
+        {
+          int const x_35 = c;
+          c = (x_35 + 1);
+        }
+      }
+      int const x_37 = idx;
+      int const x_38 = idx;
+      int const x_39 = idx;
+      int const x_117 = select(0, x_39, ((x_37 >= 0) && (x_38 < 9)));
+      int const x_40 = ctr;
+      float const x_119 = m43[x_40].y;
+      float const x_121 = GLF_live6sums.arr[x_117];
+      GLF_live6sums.arr[x_117] = (x_121 + x_119);
+      {
+        int const x_41 = ctr;
+        ctr = (x_41 + 1);
+      }
+    }
+    int const x_43 = idx;
+    idx = (x_43 + 1);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_9 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_9, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..63de0fc
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,255 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 152
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injected"
+               OpName %x_9 "x_9"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %idx "idx"
+               OpName %m43 "m43"
+               OpName %ll_1 "ll_1"
+               OpName %GLF_live6rows "GLF_live6rows"
+               OpName %z "z"
+               OpName %ll_2 "ll_2"
+               OpName %ctr "ctr"
+               OpName %tempm43 "tempm43"
+               OpName %ll_3 "ll_3"
+               OpName %c "c"
+               OpName %d "d"
+               OpName %GLF_live6sums "GLF_live6sums"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_9 NonWritable
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+       %buf0 = OpTypeStruct %int
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_9 = OpVariable %_ptr_Uniform_buf0 Uniform
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+         %18 = OpConstantNull %int
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %23 = OpConstantNull %mat4v3float
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %38 = OpConstantNull %_arr_float_uint_9
+      %int_0 = OpConstant %int 0
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %42 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %43 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %44 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %45 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %46 = OpConstantComposite %mat4v3float %42 %43 %44 %45
+      %int_2 = OpConstant %int 2
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+       %bool = OpTypeBool
+         %61 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+        %140 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+        %idx = OpVariable %_ptr_Function_int Function %18
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function %23
+       %ll_1 = OpVariable %_ptr_Function_int Function %18
+%GLF_live6rows = OpVariable %_ptr_Function_int Function %18
+          %z = OpVariable %_ptr_Function_int Function %18
+       %ll_2 = OpVariable %_ptr_Function_int Function %18
+        %ctr = OpVariable %_ptr_Function_int Function %18
+    %tempm43 = OpVariable %_ptr_Function_mat4v3float Function %23
+       %ll_3 = OpVariable %_ptr_Function_int Function %18
+          %c = OpVariable %_ptr_Function_int Function %18
+          %d = OpVariable %_ptr_Function_int Function %18
+%GLF_live6sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %38
+               OpStore %idx %int_0
+               OpStore %m43 %46
+               OpStore %ll_1 %int_0
+               OpStore %GLF_live6rows %int_2
+               OpBranch %48
+         %48 = OpLabel
+               OpLoopMerge %49 %50 None
+               OpBranch %51
+         %51 = OpLabel
+         %52 = OpLoad %int %ll_1
+         %55 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %56 = OpLoad %int %55
+         %57 = OpSGreaterThanEqual %bool %52 %56
+               OpSelectionMerge %59 None
+               OpBranchConditional %57 %60 %59
+         %60 = OpLabel
+               OpStore %x_GLF_color %61
+               OpBranch %49
+         %59 = OpLabel
+         %62 = OpLoad %int %ll_1
+         %64 = OpIAdd %int %62 %int_1
+               OpStore %ll_1 %64
+         %65 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %66 = OpLoad %int %65
+               OpStore %z %66
+               OpStore %ll_2 %int_0
+               OpStore %ctr %int_0
+               OpBranch %67
+         %67 = OpLabel
+               OpLoopMerge %68 %69 None
+               OpBranch %70
+         %70 = OpLabel
+         %71 = OpLoad %int %ctr
+         %72 = OpSLessThan %bool %71 %int_1
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+               OpBranch %73
+         %75 = OpLabel
+               OpBranch %68
+         %73 = OpLabel
+         %76 = OpLoad %int %ll_2
+         %77 = OpAccessChain %_ptr_Uniform_int %x_9 %uint_0
+         %78 = OpLoad %int %77
+         %79 = OpSGreaterThanEqual %bool %76 %78
+               OpSelectionMerge %80 None
+               OpBranchConditional %79 %81 %80
+         %81 = OpLabel
+               OpBranch %68
+         %80 = OpLabel
+         %82 = OpLoad %int %ll_2
+         %83 = OpIAdd %int %82 %int_1
+               OpStore %ll_2 %83
+         %84 = OpLoad %mat4v3float %m43
+               OpStore %tempm43 %84
+               OpStore %ll_3 %int_0
+               OpStore %c %int_0
+               OpBranch %85
+         %85 = OpLabel
+               OpLoopMerge %86 %87 None
+               OpBranch %88
+         %88 = OpLabel
+         %89 = OpLoad %int %z
+         %90 = OpSLessThan %bool %int_1 %89
+               OpSelectionMerge %91 None
+               OpBranchConditional %90 %92 %93
+         %92 = OpLabel
+               OpBranch %91
+         %93 = OpLabel
+               OpBranch %86
+         %91 = OpLabel
+               OpStore %d %int_0
+         %94 = OpLoad %int %c
+         %95 = OpLoad %int %c
+         %96 = OpLoad %int %c
+         %97 = OpLoad %int %d
+         %98 = OpLoad %int %d
+         %99 = OpLoad %int %d
+        %101 = OpSGreaterThanEqual %bool %94 %int_0
+               OpSelectionMerge %102 None
+               OpBranchConditional %101 %103 %102
+        %103 = OpLabel
+        %105 = OpSLessThan %bool %95 %int_4
+               OpBranch %102
+        %102 = OpLabel
+        %106 = OpPhi %bool %101 %91 %105 %103
+        %100 = OpSelect %int %106 %96 %int_0
+        %108 = OpSGreaterThanEqual %bool %97 %int_0
+               OpSelectionMerge %109 None
+               OpBranchConditional %108 %110 %109
+        %110 = OpLabel
+        %112 = OpSLessThan %bool %98 %int_3
+               OpBranch %109
+        %109 = OpLabel
+        %113 = OpPhi %bool %108 %102 %112 %110
+        %107 = OpSelect %int %113 %99 %int_0
+        %115 = OpAccessChain %_ptr_Function_float %tempm43 %100 %107
+               OpStore %115 %float_1
+               OpBranch %87
+         %87 = OpLabel
+        %116 = OpLoad %int %c
+        %117 = OpIAdd %int %116 %int_1
+               OpStore %c %117
+               OpBranch %85
+         %86 = OpLabel
+        %118 = OpLoad %int %idx
+        %119 = OpLoad %int %idx
+        %120 = OpLoad %int %idx
+        %122 = OpSGreaterThanEqual %bool %118 %int_0
+               OpSelectionMerge %123 None
+               OpBranchConditional %122 %124 %123
+        %124 = OpLabel
+        %126 = OpSLessThan %bool %119 %int_9
+               OpBranch %123
+        %123 = OpLabel
+        %127 = OpPhi %bool %122 %86 %126 %124
+        %121 = OpSelect %int %127 %120 %int_0
+        %128 = OpLoad %int %ctr
+        %130 = OpAccessChain %_ptr_Function_float %m43 %128 %uint_1
+        %131 = OpLoad %float %130
+        %132 = OpAccessChain %_ptr_Function_float %GLF_live6sums %121
+        %133 = OpLoad %float %132
+        %134 = OpAccessChain %_ptr_Function_float %GLF_live6sums %121
+        %135 = OpFAdd %float %133 %131
+               OpStore %134 %135
+               OpBranch %69
+         %69 = OpLabel
+        %136 = OpLoad %int %ctr
+        %137 = OpIAdd %int %136 %int_1
+               OpStore %ctr %137
+               OpBranch %67
+         %68 = OpLabel
+        %138 = OpLoad %int %idx
+        %139 = OpIAdd %int %138 %int_1
+               OpStore %idx %139
+               OpBranch %50
+         %50 = OpLabel
+               OpBranch %48
+         %49 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %140
+%tint_symbol = OpFunctionParameter %main_out
+        %144 = OpLabel
+        %145 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %145
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+        %147 = OpLabel
+        %148 = OpFunctionCall %void %main_1
+        %150 = OpLoad %v4float %x_GLF_color
+        %151 = OpCompositeConstruct %main_out %150
+        %149 = OpFunctionCall %void %tint_symbol_2 %151
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..00e805e
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,106 @@
+[[block]]
+struct buf0 {
+  injected : i32;
+};
+
+[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var idx : i32;
+  var m43 : mat4x3<f32>;
+  var ll_1 : i32;
+  var GLF_live6rows : i32;
+  var z : i32;
+  var ll_2 : i32;
+  var ctr : i32;
+  var tempm43 : mat4x3<f32>;
+  var ll_3 : i32;
+  var c : i32;
+  var d : i32;
+  var GLF_live6sums : array<f32, 9>;
+  idx = 0;
+  m43 = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
+  ll_1 = 0;
+  GLF_live6rows = 2;
+  loop {
+    let x_18 : i32 = ll_1;
+    let x_19 : i32 = x_9.injected;
+    if ((x_18 >= x_19)) {
+      x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+      break;
+    }
+    let x_20 : i32 = ll_1;
+    ll_1 = (x_20 + 1);
+    let x_22 : i32 = x_9.injected;
+    z = x_22;
+    ll_2 = 0;
+    ctr = 0;
+    loop {
+      let x_23 : i32 = ctr;
+      if ((x_23 < 1)) {
+      } else {
+        break;
+      }
+      let x_24 : i32 = ll_2;
+      let x_25 : i32 = x_9.injected;
+      if ((x_24 >= x_25)) {
+        break;
+      }
+      let x_26 : i32 = ll_2;
+      ll_2 = (x_26 + 1);
+      let x_98 : mat4x3<f32> = m43;
+      tempm43 = x_98;
+      ll_3 = 0;
+      c = 0;
+      loop {
+        let x_28 : i32 = z;
+        if ((1 < x_28)) {
+        } else {
+          break;
+        }
+        d = 0;
+        let x_29 : i32 = c;
+        let x_30 : i32 = c;
+        let x_31 : i32 = c;
+        let x_32 : i32 = d;
+        let x_33 : i32 = d;
+        let x_34 : i32 = d;
+        tempm43[select(0, x_31, ((x_29 >= 0) && (x_30 < 4)))][select(0, x_34, ((x_32 >= 0) && (x_33 < 3)))] = 1.0;
+
+        continuing {
+          let x_35 : i32 = c;
+          c = (x_35 + 1);
+        }
+      }
+      let x_37 : i32 = idx;
+      let x_38 : i32 = idx;
+      let x_39 : i32 = idx;
+      let x_117 : i32 = select(0, x_39, ((x_37 >= 0) && (x_38 < 9)));
+      let x_40 : i32 = ctr;
+      let x_119 : f32 = m43[x_40].y;
+      let x_121 : f32 = GLF_live6sums[x_117];
+      GLF_live6sums[x_117] = (x_121 + x_119);
+
+      continuing {
+        let x_41 : i32 = ctr;
+        ctr = (x_41 + 1);
+      }
+    }
+    let x_43 : i32 = idx;
+    idx = (x_43 + 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm
new file mode 100644
index 0000000..2e99227
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm
@@ -0,0 +1,817 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode(struct-BST-i1-i1-i11;i1;"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert(i1;i1;"
+               OpName %treeIndex "treeIndex"
+               OpName %data_0 "data"
+               OpName %search_i1_ "search(i1;"
+               OpName %target "target"
+               OpName %hueColor_f1_ "hueColor(f1;"
+               OpName %angle "angle"
+               OpName %makeFrame_f1_ "makeFrame(f1;"
+               OpName %v "v"
+               OpName %baseIndex "baseIndex"
+               OpName %tree_0 "tree"
+               OpName %param "param"
+               OpName %param_0 "param"
+               OpName %param_1 "param"
+               OpName %param_2 "param"
+               OpName %GLF_live8i "GLF_live8i"
+               OpName %GLF_live8A "GLF_live8A"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %nodeData "nodeData"
+               OpName %param_3 "param"
+               OpName %param_4 "param"
+               OpName %param_5 "param"
+               OpName %param_6 "param"
+               OpName %treeIndex_0 "treeIndex"
+               OpName %param_7 "param"
+               OpName %param_8 "param"
+               OpName %param_9 "param"
+               OpName %param_10 "param"
+               OpName %GLF_live1_looplimiter2 "GLF_live1_looplimiter2"
+               OpName %GLF_live1i "GLF_live1i"
+               OpName %param_11 "param"
+               OpName %param_12 "param"
+               OpName %param_13 "param"
+               OpName %param_14 "param"
+               OpName %param_15 "param"
+               OpName %param_16 "param"
+               OpName %param_17 "param"
+               OpName %param_18 "param"
+               OpName %param_19 "param"
+               OpName %param_20 "param"
+               OpName %param_21 "param"
+               OpName %param_22 "param"
+               OpName %GLF_live4_looplimiter3 "GLF_live4_looplimiter3"
+               OpName %GLF_live4i "GLF_live4i"
+               OpName %GLF_live4index "GLF_live4index"
+               OpName %Obj "Obj"
+               OpMemberName %Obj 0 "odd_numbers"
+               OpMemberName %Obj 1 "even_numbers"
+               OpName %GLF_live4obj "GLF_live4obj"
+               OpName %param_23 "param"
+               OpName %param_24 "param"
+               OpName %param_25 "param"
+               OpName %param_26 "param"
+               OpName %z "z"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x "x"
+               OpName %param_27 "param"
+               OpName %y "y"
+               OpName %param_28 "param"
+               OpName %sum "sum"
+               OpName %target_0 "target"
+               OpName %result "result"
+               OpName %param_29 "param"
+               OpName %a "a"
+               OpName %_GLF_color "_GLF_color"
+               OpName %param_30 "param"
+               OpMemberDecorate %BST 0 RelaxedPrecision
+               OpMemberDecorate %BST 1 RelaxedPrecision
+               OpMemberDecorate %BST 2 RelaxedPrecision
+               OpDecorate %data RelaxedPrecision
+               OpDecorate %treeIndex RelaxedPrecision
+               OpDecorate %data_0 RelaxedPrecision
+               OpDecorate %search_i1_ RelaxedPrecision
+               OpDecorate %target RelaxedPrecision
+               OpDecorate %74 RelaxedPrecision
+               OpDecorate %baseIndex RelaxedPrecision
+               OpDecorate %75 RelaxedPrecision
+               OpDecorate %76 RelaxedPrecision
+               OpDecorate %77 RelaxedPrecision
+               OpDecorate %78 RelaxedPrecision
+               OpDecorate %79 RelaxedPrecision
+               OpDecorate %80 RelaxedPrecision
+               OpDecorate %81 RelaxedPrecision
+               OpDecorate %82 RelaxedPrecision
+               OpDecorate %83 RelaxedPrecision
+               OpDecorate %84 RelaxedPrecision
+               OpDecorate %85 RelaxedPrecision
+               OpDecorate %86 RelaxedPrecision
+               OpDecorate %87 RelaxedPrecision
+               OpDecorate %88 RelaxedPrecision
+               OpDecorate %89 RelaxedPrecision
+               OpDecorate %90 RelaxedPrecision
+               OpDecorate %91 RelaxedPrecision
+               OpDecorate %92 RelaxedPrecision
+               OpDecorate %93 RelaxedPrecision
+               OpDecorate %GLF_live8i RelaxedPrecision
+               OpDecorate %94 RelaxedPrecision
+               OpDecorate %95 RelaxedPrecision
+               OpDecorate %96 RelaxedPrecision
+               OpDecorate %97 RelaxedPrecision
+               OpDecorate %98 RelaxedPrecision
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %index RelaxedPrecision
+               OpDecorate %99 RelaxedPrecision
+               OpDecorate %100 RelaxedPrecision
+               OpDecorate %101 RelaxedPrecision
+               OpDecorate %102 RelaxedPrecision
+               OpDecorate %103 RelaxedPrecision
+               OpDecorate %104 RelaxedPrecision
+               OpDecorate %105 RelaxedPrecision
+               OpDecorate %106 RelaxedPrecision
+               OpDecorate %107 RelaxedPrecision
+               OpDecorate %108 RelaxedPrecision
+               OpDecorate %109 RelaxedPrecision
+               OpDecorate %110 RelaxedPrecision
+               OpDecorate %111 RelaxedPrecision
+               OpDecorate %112 RelaxedPrecision
+               OpDecorate %treeIndex_0 RelaxedPrecision
+               OpDecorate %113 RelaxedPrecision
+               OpDecorate %114 RelaxedPrecision
+               OpDecorate %115 RelaxedPrecision
+               OpDecorate %116 RelaxedPrecision
+               OpDecorate %117 RelaxedPrecision
+               OpDecorate %GLF_live1_looplimiter2 RelaxedPrecision
+               OpDecorate %GLF_live1i RelaxedPrecision
+               OpDecorate %118 RelaxedPrecision
+               OpDecorate %119 RelaxedPrecision
+               OpDecorate %120 RelaxedPrecision
+               OpDecorate %121 RelaxedPrecision
+               OpDecorate %122 RelaxedPrecision
+               OpDecorate %123 RelaxedPrecision
+               OpDecorate %124 RelaxedPrecision
+               OpDecorate %125 RelaxedPrecision
+               OpDecorate %126 RelaxedPrecision
+               OpDecorate %127 RelaxedPrecision
+               OpDecorate %128 RelaxedPrecision
+               OpDecorate %129 RelaxedPrecision
+               OpDecorate %130 RelaxedPrecision
+               OpDecorate %131 RelaxedPrecision
+               OpDecorate %132 RelaxedPrecision
+               OpDecorate %133 RelaxedPrecision
+               OpDecorate %134 RelaxedPrecision
+               OpDecorate %135 RelaxedPrecision
+               OpDecorate %136 RelaxedPrecision
+               OpDecorate %137 RelaxedPrecision
+               OpDecorate %138 RelaxedPrecision
+               OpDecorate %139 RelaxedPrecision
+               OpDecorate %140 RelaxedPrecision
+               OpDecorate %GLF_live4_looplimiter3 RelaxedPrecision
+               OpDecorate %GLF_live4i RelaxedPrecision
+               OpDecorate %141 RelaxedPrecision
+               OpDecorate %142 RelaxedPrecision
+               OpDecorate %143 RelaxedPrecision
+               OpDecorate %GLF_live4index RelaxedPrecision
+               OpDecorate %144 RelaxedPrecision
+               OpDecorate %145 RelaxedPrecision
+               OpDecorate %146 RelaxedPrecision
+               OpDecorate %147 RelaxedPrecision
+               OpDecorate %148 RelaxedPrecision
+               OpDecorate %149 RelaxedPrecision
+               OpDecorate %150 RelaxedPrecision
+               OpDecorate %151 RelaxedPrecision
+               OpDecorate %152 RelaxedPrecision
+               OpDecorate %153 RelaxedPrecision
+               OpDecorate %154 RelaxedPrecision
+               OpDecorate %155 RelaxedPrecision
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %sum RelaxedPrecision
+               OpDecorate %target_0 RelaxedPrecision
+               OpDecorate %156 RelaxedPrecision
+               OpDecorate %result RelaxedPrecision
+               OpDecorate %157 RelaxedPrecision
+               OpDecorate %158 RelaxedPrecision
+               OpDecorate %159 RelaxedPrecision
+               OpDecorate %160 RelaxedPrecision
+               OpDecorate %161 RelaxedPrecision
+               OpDecorate %162 RelaxedPrecision
+               OpDecorate %163 RelaxedPrecision
+               OpDecorate %164 RelaxedPrecision
+               OpDecorate %165 RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+        %167 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+        %171 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+        %172 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+        %173 = OpTypeFunction %int %_ptr_Function_int
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+    %v3float = OpTypeVector %float 3
+        %177 = OpTypeFunction %v3float %_ptr_Function_float
+        %178 = OpTypeFunction %float %_ptr_Function_float
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+     %tree_0 = OpVariable %_ptr_Private__arr_BST_uint_10 Private
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+    %uint_50 = OpConstant %uint 50
+%_arr_float_uint_50 = OpTypeArray %float %uint_50
+%_ptr_Function__arr_float_uint_50 = OpTypePointer Function %_arr_float_uint_50
+     %int_50 = OpConstant %int 50
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+     %uint_0 = OpConstant %uint 0
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+     %uint_1 = OpConstant %uint 1
+     %int_15 = OpConstant %int 15
+   %float_30 = OpConstant %float 30
+    %float_1 = OpConstant %float 1
+    %float_5 = OpConstant %float 5
+   %float_50 = OpConstant %float 50
+  %float_6_5 = OpConstant %float 6.5
+  %float_1_5 = OpConstant %float 1.5
+    %int_100 = OpConstant %int 100
+    %float_4 = OpConstant %float 4
+    %float_0 = OpConstant %float 0
+      %int_6 = OpConstant %int 6
+   %float_10 = OpConstant %float 10
+     %int_30 = OpConstant %int 30
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+       %true = OpConstantTrue %bool
+      %int_7 = OpConstant %int 7
+     %int_12 = OpConstant %int 12
+      %int_8 = OpConstant %int 8
+      %int_3 = OpConstant %int 3
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+        %Obj = OpTypeStruct %_arr_float_uint_10 %_arr_float_uint_10
+%_ptr_Function_Obj = OpTypePointer Function %Obj
+     %int_10 = OpConstant %int 10
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+  %float_256 = OpConstant %float 256
+        %228 = OpConstantComposite %v2float %float_256 %float_256
+   %int_n100 = OpConstant %int -100
+     %int_20 = OpConstant %int 20
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %233 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+       %main = OpFunction %void None %167
+        %234 = OpLabel
+%treeIndex_0 = OpVariable %_ptr_Function_int Function
+    %param_7 = OpVariable %_ptr_Function_BST Function
+    %param_8 = OpVariable %_ptr_Function_int Function
+    %param_9 = OpVariable %_ptr_Function_int Function
+   %param_10 = OpVariable %_ptr_Function_int Function
+%GLF_live1_looplimiter2 = OpVariable %_ptr_Function_int Function
+ %GLF_live1i = OpVariable %_ptr_Function_int Function
+   %param_11 = OpVariable %_ptr_Function_int Function
+   %param_12 = OpVariable %_ptr_Function_int Function
+   %param_13 = OpVariable %_ptr_Function_int Function
+   %param_14 = OpVariable %_ptr_Function_int Function
+   %param_15 = OpVariable %_ptr_Function_int Function
+   %param_16 = OpVariable %_ptr_Function_int Function
+   %param_17 = OpVariable %_ptr_Function_int Function
+   %param_18 = OpVariable %_ptr_Function_int Function
+   %param_19 = OpVariable %_ptr_Function_int Function
+   %param_20 = OpVariable %_ptr_Function_int Function
+   %param_21 = OpVariable %_ptr_Function_int Function
+   %param_22 = OpVariable %_ptr_Function_int Function
+%GLF_live4_looplimiter3 = OpVariable %_ptr_Function_int Function
+ %GLF_live4i = OpVariable %_ptr_Function_int Function
+%GLF_live4index = OpVariable %_ptr_Function_int Function
+%GLF_live4obj = OpVariable %_ptr_Function_Obj Function
+   %param_23 = OpVariable %_ptr_Function_int Function
+   %param_24 = OpVariable %_ptr_Function_int Function
+   %param_25 = OpVariable %_ptr_Function_int Function
+   %param_26 = OpVariable %_ptr_Function_int Function
+          %z = OpVariable %_ptr_Function_v2float Function
+          %x = OpVariable %_ptr_Function_float Function
+   %param_27 = OpVariable %_ptr_Function_float Function
+          %y = OpVariable %_ptr_Function_float Function
+   %param_28 = OpVariable %_ptr_Function_float Function
+        %sum = OpVariable %_ptr_Function_int Function
+   %target_0 = OpVariable %_ptr_Function_int Function
+     %result = OpVariable %_ptr_Function_int Function
+   %param_29 = OpVariable %_ptr_Function_int Function
+          %a = OpVariable %_ptr_Function_float Function
+        %235 = OpVariable %_ptr_Function_v3float Function
+   %param_30 = OpVariable %_ptr_Function_float Function
+               OpStore %treeIndex_0 %int_0
+        %236 = OpAccessChain %_ptr_Private_BST %tree_0 %int_0
+        %237 = OpLoad %BST %236
+               OpStore %param_7 %237
+               OpStore %param_8 %int_9
+        %238 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_7 %param_8
+        %239 = OpLoad %BST %param_7
+        %240 = OpAccessChain %_ptr_Private_BST %tree_0 %int_0
+               OpStore %240 %239
+        %113 = OpLoad %int %treeIndex_0
+        %114 = OpIAdd %int %113 %int_1
+               OpStore %treeIndex_0 %114
+        %115 = OpLoad %int %treeIndex_0
+               OpStore %param_9 %115
+               OpStore %param_10 %int_5
+        %241 = OpFunctionCall %void %insert_i1_i1_ %param_9 %param_10
+        %116 = OpLoad %int %treeIndex_0
+        %117 = OpIAdd %int %116 %int_1
+               OpStore %treeIndex_0 %117
+               OpStore %GLF_live1_looplimiter2 %int_0
+               OpStore %GLF_live1i %int_0
+               OpBranch %242
+        %242 = OpLabel
+               OpLoopMerge %243 %244 None
+               OpBranch %245
+        %245 = OpLabel
+               OpBranchConditional %true %246 %243
+        %246 = OpLabel
+        %118 = OpLoad %int %GLF_live1_looplimiter2
+        %247 = OpSGreaterThanEqual %bool %118 %int_7
+               OpSelectionMerge %248 None
+               OpBranchConditional %247 %249 %248
+        %249 = OpLabel
+               OpBranch %243
+        %248 = OpLabel
+        %119 = OpLoad %int %GLF_live1_looplimiter2
+        %120 = OpIAdd %int %119 %int_1
+               OpStore %GLF_live1_looplimiter2 %120
+               OpBranch %244
+        %244 = OpLabel
+        %121 = OpLoad %int %GLF_live1i
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %GLF_live1i %122
+               OpBranch %242
+        %243 = OpLabel
+        %123 = OpLoad %int %treeIndex_0
+               OpStore %param_11 %123
+               OpStore %param_12 %int_12
+        %250 = OpFunctionCall %void %insert_i1_i1_ %param_11 %param_12
+        %124 = OpLoad %int %treeIndex_0
+        %125 = OpIAdd %int %124 %int_1
+               OpStore %treeIndex_0 %125
+        %126 = OpLoad %int %treeIndex_0
+               OpStore %param_13 %126
+               OpStore %param_14 %int_15
+        %251 = OpFunctionCall %void %insert_i1_i1_ %param_13 %param_14
+        %127 = OpLoad %int %treeIndex_0
+        %128 = OpIAdd %int %127 %int_1
+               OpStore %treeIndex_0 %128
+        %129 = OpLoad %int %treeIndex_0
+               OpStore %param_15 %129
+               OpStore %param_16 %int_7
+        %252 = OpFunctionCall %void %insert_i1_i1_ %param_15 %param_16
+        %130 = OpLoad %int %treeIndex_0
+        %131 = OpIAdd %int %130 %int_1
+               OpStore %treeIndex_0 %131
+        %132 = OpLoad %int %treeIndex_0
+               OpStore %param_17 %132
+               OpStore %param_18 %int_8
+        %253 = OpFunctionCall %void %insert_i1_i1_ %param_17 %param_18
+        %133 = OpLoad %int %treeIndex_0
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %treeIndex_0 %134
+        %135 = OpLoad %int %treeIndex_0
+               OpStore %param_19 %135
+               OpStore %param_20 %int_2
+        %254 = OpFunctionCall %void %insert_i1_i1_ %param_19 %param_20
+        %136 = OpLoad %int %treeIndex_0
+        %137 = OpIAdd %int %136 %int_1
+               OpStore %treeIndex_0 %137
+        %138 = OpLoad %int %treeIndex_0
+               OpStore %param_21 %138
+               OpStore %param_22 %int_6
+        %255 = OpFunctionCall %void %insert_i1_i1_ %param_21 %param_22
+        %139 = OpLoad %int %treeIndex_0
+        %140 = OpIAdd %int %139 %int_1
+               OpStore %treeIndex_0 %140
+               OpStore %GLF_live4_looplimiter3 %int_0
+               OpStore %GLF_live4i %int_0
+               OpBranch %256
+        %256 = OpLabel
+               OpLoopMerge %257 %258 None
+               OpBranch %259
+        %259 = OpLabel
+               OpBranchConditional %true %260 %257
+        %260 = OpLabel
+        %141 = OpLoad %int %GLF_live4_looplimiter3
+        %261 = OpSGreaterThanEqual %bool %141 %int_3
+               OpSelectionMerge %262 None
+               OpBranchConditional %261 %263 %262
+        %263 = OpLabel
+               OpBranch %257
+        %262 = OpLabel
+        %142 = OpLoad %int %GLF_live4_looplimiter3
+        %143 = OpIAdd %int %142 %int_1
+               OpStore %GLF_live4_looplimiter3 %143
+               OpStore %GLF_live4index %int_1
+        %144 = OpLoad %int %GLF_live4index
+        %264 = OpSGreaterThanEqual %bool %144 %int_0
+        %145 = OpLoad %int %GLF_live4index
+        %265 = OpSLessThan %bool %145 %int_10
+        %266 = OpLogicalAnd %bool %264 %265
+        %146 = OpLoad %int %GLF_live4index
+        %267 = OpSelect %int %266 %146 %int_0
+        %268 = OpAccessChain %_ptr_Function_float %GLF_live4obj %int_1 %int_1
+        %269 = OpLoad %float %268
+        %270 = OpAccessChain %_ptr_Function_float %GLF_live4obj %int_1 %267
+               OpStore %270 %269
+        %147 = OpLoad %int %GLF_live4i
+        %271 = OpSGreaterThanEqual %bool %147 %int_0
+        %148 = OpLoad %int %GLF_live4i
+        %272 = OpSLessThan %bool %148 %int_10
+        %273 = OpLogicalAnd %bool %271 %272
+        %149 = OpLoad %int %GLF_live4i
+        %274 = OpSelect %int %273 %149 %int_0
+        %275 = OpAccessChain %_ptr_Function_float %GLF_live4obj %int_1 %274
+               OpStore %275 %float_1
+               OpBranch %258
+        %258 = OpLabel
+        %150 = OpLoad %int %GLF_live4i
+        %151 = OpIAdd %int %150 %int_1
+               OpStore %GLF_live4i %151
+               OpBranch %256
+        %257 = OpLabel
+        %152 = OpLoad %int %treeIndex_0
+               OpStore %param_23 %152
+               OpStore %param_24 %int_17
+        %276 = OpFunctionCall %void %insert_i1_i1_ %param_23 %param_24
+        %277 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %278 = OpLoad %float %277
+        %279 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %280 = OpLoad %float %279
+        %281 = OpFOrdGreaterThan %bool %278 %280
+               OpSelectionMerge %282 None
+               OpBranchConditional %281 %283 %282
+        %283 = OpLabel
+               OpReturn
+        %282 = OpLabel
+        %153 = OpLoad %int %treeIndex_0
+        %154 = OpIAdd %int %153 %int_1
+               OpStore %treeIndex_0 %154
+        %155 = OpLoad %int %treeIndex_0
+               OpStore %param_25 %155
+               OpStore %param_26 %int_13
+        %284 = OpFunctionCall %void %insert_i1_i1_ %param_25 %param_26
+        %285 = OpLoad %v4float %gl_FragCoord
+        %286 = OpVectorShuffle %v2float %285 %285 1 0
+        %287 = OpFDiv %v2float %286 %228
+               OpStore %z %287
+        %288 = OpAccessChain %_ptr_Function_float %z %uint_0
+        %289 = OpLoad %float %288
+               OpStore %param_27 %289
+        %290 = OpFunctionCall %float %makeFrame_f1_ %param_27
+               OpStore %x %290
+        %291 = OpAccessChain %_ptr_Function_float %z %uint_1
+        %292 = OpLoad %float %291
+               OpStore %param_28 %292
+        %293 = OpFunctionCall %float %makeFrame_f1_ %param_28
+               OpStore %y %293
+               OpStore %sum %int_n100
+               OpStore %target_0 %int_0
+               OpBranch %294
+        %294 = OpLabel
+               OpLoopMerge %295 %296 None
+               OpBranch %297
+        %297 = OpLabel
+        %156 = OpLoad %int %target_0
+        %298 = OpSLessThan %bool %156 %int_20
+               OpBranchConditional %298 %299 %295
+        %299 = OpLabel
+        %157 = OpLoad %int %target_0
+               OpStore %param_29 %157
+        %158 = OpFunctionCall %int %search_i1_ %param_29
+               OpStore %result %158
+        %159 = OpLoad %int %result
+        %300 = OpSGreaterThan %bool %159 %int_0
+               OpSelectionMerge %301 None
+               OpBranchConditional %300 %302 %303
+        %302 = OpLabel
+               OpBranch %301
+        %303 = OpLabel
+        %160 = OpLoad %int %result
+               OpSelectionMerge %304 None
+               OpSwitch %160 %304 -1 %305 0 %306
+        %305 = OpLabel
+        %161 = OpLoad %int %sum
+        %162 = OpIAdd %int %161 %int_1
+               OpStore %sum %162
+               OpBranch %304
+        %306 = OpLabel
+               OpReturn
+        %304 = OpLabel
+               OpBranch %301
+        %301 = OpLabel
+               OpBranch %296
+        %296 = OpLabel
+        %163 = OpLoad %int %target_0
+        %164 = OpIAdd %int %163 %int_1
+               OpStore %target_0 %164
+               OpBranch %294
+        %295 = OpLabel
+        %307 = OpLoad %float %x
+        %308 = OpLoad %float %y
+        %165 = OpLoad %int %sum
+        %309 = OpConvertSToF %float %165
+        %310 = OpFMul %float %308 %309
+        %311 = OpFAdd %float %307 %310
+               OpStore %a %311
+        %312 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %313 = OpLoad %float %312
+        %314 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %315 = OpLoad %float %314
+        %316 = OpFOrdLessThan %bool %313 %315
+               OpSelectionMerge %317 None
+               OpBranchConditional %316 %318 %319
+        %318 = OpLabel
+               OpStore %235 %233
+               OpBranch %317
+        %319 = OpLabel
+        %320 = OpLoad %float %a
+               OpStore %param_30 %320
+        %321 = OpFunctionCall %v3float %hueColor_f1_ %param_30
+               OpStore %235 %321
+               OpBranch %317
+        %317 = OpLabel
+        %322 = OpLoad %v3float %235
+        %323 = OpCompositeExtract %float %322 0
+        %324 = OpCompositeExtract %float %322 1
+        %325 = OpCompositeExtract %float %322 2
+        %326 = OpCompositeConstruct %v4float %323 %324 %325 %float_1
+               OpStore %_GLF_color %326
+               OpReturn
+               OpFunctionEnd
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %171
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+        %327 = OpLabel
+         %74 = OpLoad %int %data
+        %328 = OpAccessChain %_ptr_Function_int %tree %int_0
+               OpStore %328 %74
+        %329 = OpAccessChain %_ptr_Function_int %tree %int_1
+               OpStore %329 %int_n1
+        %330 = OpAccessChain %_ptr_Function_int %tree %int_2
+               OpStore %330 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %172
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_0 = OpFunctionParameter %_ptr_Function_int
+        %331 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function
+      %param = OpVariable %_ptr_Function_BST Function
+    %param_0 = OpVariable %_ptr_Function_int Function
+    %param_1 = OpVariable %_ptr_Function_BST Function
+    %param_2 = OpVariable %_ptr_Function_int Function
+ %GLF_live8i = OpVariable %_ptr_Function_int Function
+ %GLF_live8A = OpVariable %_ptr_Function__arr_float_uint_50 Function
+               OpStore %baseIndex %int_0
+               OpBranch %332
+        %332 = OpLabel
+               OpLoopMerge %333 %334 None
+               OpBranch %335
+        %335 = OpLabel
+         %75 = OpLoad %int %baseIndex
+         %76 = OpLoad %int %treeIndex
+        %336 = OpSLessThanEqual %bool %75 %76
+               OpBranchConditional %336 %337 %333
+        %337 = OpLabel
+         %77 = OpLoad %int %data_0
+         %78 = OpLoad %int %baseIndex
+        %338 = OpAccessChain %_ptr_Private_int %tree_0 %78 %int_0
+         %79 = OpLoad %int %338
+        %339 = OpSLessThanEqual %bool %77 %79
+               OpSelectionMerge %340 None
+               OpBranchConditional %339 %341 %342
+        %341 = OpLabel
+         %80 = OpLoad %int %baseIndex
+        %343 = OpAccessChain %_ptr_Private_int %tree_0 %80 %int_1
+         %81 = OpLoad %int %343
+        %344 = OpIEqual %bool %81 %int_n1
+               OpSelectionMerge %345 None
+               OpBranchConditional %344 %346 %347
+        %346 = OpLabel
+         %82 = OpLoad %int %baseIndex
+         %83 = OpLoad %int %treeIndex
+        %348 = OpAccessChain %_ptr_Private_int %tree_0 %82 %int_1
+               OpStore %348 %83
+         %84 = OpLoad %int %treeIndex
+        %349 = OpAccessChain %_ptr_Private_BST %tree_0 %84
+        %350 = OpLoad %BST %349
+               OpStore %param %350
+         %85 = OpLoad %int %data_0
+               OpStore %param_0 %85
+        %351 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_0
+        %352 = OpLoad %BST %param
+        %353 = OpAccessChain %_ptr_Private_BST %tree_0 %84
+               OpStore %353 %352
+               OpReturn
+        %347 = OpLabel
+         %86 = OpLoad %int %baseIndex
+        %354 = OpAccessChain %_ptr_Private_int %tree_0 %86 %int_1
+         %87 = OpLoad %int %354
+               OpStore %baseIndex %87
+               OpBranch %334
+        %345 = OpLabel
+               OpBranch %340
+        %342 = OpLabel
+         %88 = OpLoad %int %baseIndex
+        %355 = OpAccessChain %_ptr_Private_int %tree_0 %88 %int_2
+         %89 = OpLoad %int %355
+        %356 = OpIEqual %bool %89 %int_n1
+               OpSelectionMerge %357 None
+               OpBranchConditional %356 %358 %359
+        %358 = OpLabel
+         %90 = OpLoad %int %baseIndex
+         %91 = OpLoad %int %treeIndex
+        %360 = OpAccessChain %_ptr_Private_int %tree_0 %90 %int_2
+               OpStore %360 %91
+         %92 = OpLoad %int %treeIndex
+        %361 = OpAccessChain %_ptr_Private_BST %tree_0 %92
+        %362 = OpLoad %BST %361
+               OpStore %param_1 %362
+         %93 = OpLoad %int %data_0
+               OpStore %param_2 %93
+        %363 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_1 %param_2
+        %364 = OpLoad %BST %param_1
+        %365 = OpAccessChain %_ptr_Private_BST %tree_0 %92
+               OpStore %365 %364
+               OpReturn
+        %359 = OpLabel
+               OpStore %GLF_live8i %int_1
+         %94 = OpLoad %int %GLF_live8i
+        %366 = OpSGreaterThanEqual %bool %94 %int_0
+         %95 = OpLoad %int %GLF_live8i
+        %367 = OpSLessThan %bool %95 %int_50
+        %368 = OpLogicalAnd %bool %366 %367
+         %96 = OpLoad %int %GLF_live8i
+        %369 = OpSelect %int %368 %96 %int_0
+        %370 = OpAccessChain %_ptr_Function_float %GLF_live8A %int_0
+        %371 = OpLoad %float %370
+        %372 = OpAccessChain %_ptr_Function_float %GLF_live8A %369
+        %373 = OpLoad %float %372
+        %374 = OpFAdd %float %373 %371
+        %375 = OpAccessChain %_ptr_Function_float %GLF_live8A %369
+               OpStore %375 %374
+               OpBranch %376
+        %376 = OpLabel
+               OpLoopMerge %377 %378 None
+               OpBranch %379
+        %379 = OpLabel
+         %97 = OpLoad %int %baseIndex
+        %380 = OpAccessChain %_ptr_Private_int %tree_0 %97 %int_2
+         %98 = OpLoad %int %380
+               OpStore %baseIndex %98
+               OpBranch %378
+        %378 = OpLabel
+        %381 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_0
+        %382 = OpLoad %float %381
+        %383 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+        %384 = OpLoad %float %383
+        %385 = OpFOrdGreaterThan %bool %382 %384
+               OpBranchConditional %385 %376 %377
+        %377 = OpLabel
+               OpBranch %334
+        %357 = OpLabel
+               OpBranch %340
+        %340 = OpLabel
+               OpBranch %334
+        %334 = OpLabel
+               OpBranch %332
+        %333 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %173
+     %target = OpFunctionParameter %_ptr_Function_int
+        %386 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function
+%currentNode = OpVariable %_ptr_Function_BST Function
+        %387 = OpVariable %_ptr_Function_int Function
+               OpStore %index %int_0
+               OpBranch %388
+        %388 = OpLabel
+               OpLoopMerge %389 %390 None
+               OpBranch %391
+        %391 = OpLabel
+         %99 = OpLoad %int %index
+        %392 = OpINotEqual %bool %99 %int_n1
+               OpBranchConditional %392 %393 %389
+        %393 = OpLabel
+        %100 = OpLoad %int %index
+        %394 = OpAccessChain %_ptr_Private_BST %tree_0 %100
+        %395 = OpLoad %BST %394
+               OpStore %currentNode %395
+        %396 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %101 = OpLoad %int %396
+        %102 = OpLoad %int %target
+        %397 = OpIEqual %bool %101 %102
+               OpSelectionMerge %398 None
+               OpBranchConditional %397 %399 %398
+        %399 = OpLabel
+        %103 = OpLoad %int %target
+               OpReturnValue %103
+        %398 = OpLabel
+        %104 = OpLoad %int %target
+        %400 = OpAccessChain %_ptr_Function_int %currentNode %int_0
+        %105 = OpLoad %int %400
+        %401 = OpSGreaterThan %bool %104 %105
+               OpSelectionMerge %402 None
+               OpBranchConditional %401 %403 %404
+        %403 = OpLabel
+        %405 = OpAccessChain %_ptr_Function_int %currentNode %int_2
+        %106 = OpLoad %int %405
+               OpStore %387 %106
+               OpBranch %402
+        %404 = OpLabel
+        %406 = OpAccessChain %_ptr_Function_int %currentNode %int_1
+        %107 = OpLoad %int %406
+               OpStore %387 %107
+               OpBranch %402
+        %402 = OpLabel
+        %108 = OpLoad %int %387
+               OpStore %index %108
+               OpBranch %390
+        %390 = OpLabel
+               OpBranch %388
+        %389 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+%hueColor_f1_ = OpFunction %v3float None %177
+      %angle = OpFunctionParameter %_ptr_Function_float
+        %407 = OpLabel
+   %nodeData = OpVariable %_ptr_Function_float Function
+    %param_3 = OpVariable %_ptr_Function_int Function
+               OpStore %param_3 %int_15
+        %109 = OpFunctionCall %int %search_i1_ %param_3
+        %408 = OpConvertSToF %float %109
+               OpStore %nodeData %408
+        %409 = OpLoad %float %angle
+        %410 = OpLoad %float %nodeData
+        %411 = OpCompositeConstruct %v3float %float_1 %float_5 %410
+        %412 = OpVectorTimesScalar %v3float %411 %409
+        %413 = OpCompositeConstruct %v3float %float_30 %float_30 %float_30
+        %414 = OpFAdd %v3float %413 %412
+        %415 = OpCompositeConstruct %v3float %float_50 %float_50 %float_50
+        %416 = OpFDiv %v3float %414 %415
+               OpReturnValue %416
+               OpFunctionEnd
+%makeFrame_f1_ = OpFunction %float None %178
+          %v = OpFunctionParameter %_ptr_Function_float
+        %417 = OpLabel
+    %param_4 = OpVariable %_ptr_Function_int Function
+    %param_5 = OpVariable %_ptr_Function_int Function
+    %param_6 = OpVariable %_ptr_Function_int Function
+        %418 = OpLoad %float %v
+        %419 = OpFMul %float %418 %float_6_5
+               OpStore %v %419
+        %420 = OpLoad %float %v
+        %421 = OpFOrdLessThan %bool %420 %float_1_5
+               OpSelectionMerge %422 None
+               OpBranchConditional %421 %423 %422
+        %423 = OpLabel
+               OpStore %param_4 %int_100
+        %110 = OpFunctionCall %int %search_i1_ %param_4
+        %424 = OpConvertSToF %float %110
+               OpReturnValue %424
+        %422 = OpLabel
+        %425 = OpLoad %float %v
+        %426 = OpFOrdLessThan %bool %425 %float_4
+               OpSelectionMerge %427 None
+               OpBranchConditional %426 %428 %427
+        %428 = OpLabel
+               OpReturnValue %float_0
+        %427 = OpLabel
+        %429 = OpLoad %float %v
+               OpStore %param_5 %int_6
+        %111 = OpFunctionCall %int %search_i1_ %param_5
+        %430 = OpConvertSToF %float %111
+        %431 = OpFOrdLessThan %bool %429 %430
+               OpSelectionMerge %432 None
+               OpBranchConditional %431 %433 %432
+        %433 = OpLabel
+               OpReturnValue %float_1
+        %432 = OpLabel
+               OpStore %param_6 %int_30
+        %112 = OpFunctionCall %int %search_i1_ %param_6
+        %434 = OpConvertSToF %float %112
+        %435 = OpFAdd %float %float_10 %434
+               OpReturnValue %435
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..4e1c9407
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,364 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct Obj {
+  float odd_numbers[10];
+  float even_numbers[10];
+};
+
+static BST tree_1[10] = (BST[10])0;
+cbuffer cbuffer_x_27 : register(b0, space0) {
+  uint4 x_27[1];
+};
+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 makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST tree, inout int data) {
+  const int x_74 = data;
+  tree.data = x_74;
+  tree.leftIndex = -1;
+  tree.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  int GLF_live8i = 0;
+  float GLF_live8A[50] = (float[50])0;
+  baseIndex = 0;
+  while (true) {
+    const int x_75 = baseIndex;
+    const int x_76 = treeIndex;
+    if ((x_75 <= x_76)) {
+    } else {
+      break;
+    }
+    const int x_77 = data_1;
+    const int x_79 = tree_1[baseIndex].data;
+    if ((x_77 <= x_79)) {
+      const int x_81 = tree_1[baseIndex].leftIndex;
+      if ((x_81 == -1)) {
+        const int x_82 = baseIndex;
+        const int x_83 = treeIndex;
+        tree_1[x_82].leftIndex = x_83;
+        const int x_84 = treeIndex;
+        const BST x_350 = tree_1[x_84];
+        param = x_350;
+        const int x_85 = data_1;
+        param_1 = x_85;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree_1[x_84] = param;
+        return;
+      } else {
+        const int x_87 = tree_1[baseIndex].leftIndex;
+        baseIndex = x_87;
+        continue;
+      }
+    } else {
+      const int x_89 = tree_1[baseIndex].rightIndex;
+      if ((x_89 == -1)) {
+        const int x_90 = baseIndex;
+        const int x_91 = treeIndex;
+        tree_1[x_90].rightIndex = x_91;
+        const int x_92 = treeIndex;
+        const BST x_362 = tree_1[x_92];
+        param_2 = x_362;
+        const int x_93 = data_1;
+        param_3 = x_93;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree_1[x_92] = param_2;
+        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 float x_371 = GLF_live8A[0];
+        const float x_373 = GLF_live8A[x_369];
+        GLF_live8A[x_369] = (x_373 + x_371);
+        while (true) {
+          const int x_98 = tree_1[baseIndex].rightIndex;
+          baseIndex = x_98;
+          {
+            const float x_382 = asfloat(x_27[0].x);
+            const float x_384 = asfloat(x_27[0].y);
+            if ((x_382 > x_384)) {
+            } else {
+              break;
+            }
+          }
+        }
+        continue;
+      }
+    }
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_387 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_395 = tree_1[index];
+    currentNode = x_395;
+    const int x_101 = currentNode.data;
+    const int x_102 = target;
+    if ((x_101 == x_102)) {
+      const int x_103 = target;
+      return x_103;
+    }
+    const int x_104 = target;
+    const int x_105 = currentNode.data;
+    if ((x_104 > x_105)) {
+      const int x_106 = currentNode.rightIndex;
+      x_387 = x_106;
+    } else {
+      const int x_107 = currentNode.leftIndex;
+      x_387 = x_107;
+    }
+    index = x_387;
+  }
+  return -1;
+}
+
+float makeFrame_f1_(inout float v) {
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  const float x_418 = v;
+  v = (x_418 * 6.5f);
+  const float x_420 = v;
+  if ((x_420 < 1.5f)) {
+    param_5 = 100;
+    const int x_110 = search_i1_(param_5);
+    return float(x_110);
+  }
+  const float x_425 = v;
+  if ((x_425 < 4.0f)) {
+    return 0.0f;
+  }
+  const float x_429 = v;
+  param_6 = 6;
+  const int x_111 = search_i1_(param_6);
+  if ((x_429 < float(x_111))) {
+    return 1.0f;
+  }
+  param_7 = 30;
+  const int x_112 = search_i1_(param_7);
+  return (10.0f + float(x_112));
+}
+
+float3 hueColor_f1_(inout float angle) {
+  float nodeData = 0.0f;
+  int param_4 = 0;
+  param_4 = 15;
+  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));
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_8 = (BST)0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int GLF_live1_looplimiter2 = 0;
+  int GLF_live1i = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int GLF_live4_looplimiter3 = 0;
+  int GLF_live4i = 0;
+  int GLF_live4index = 0;
+  Obj GLF_live4obj = (Obj)0;
+  int param_24 = 0;
+  int param_25 = 0;
+  int param_26 = 0;
+  int param_27 = 0;
+  float2 z = float2(0.0f, 0.0f);
+  float x_1 = 0.0f;
+  float param_28 = 0.0f;
+  float y_1 = 0.0f;
+  float param_29 = 0.0f;
+  int sum = 0;
+  int target_1 = 0;
+  int result = 0;
+  int param_30 = 0;
+  float a = 0.0f;
+  float3 x_235 = float3(0.0f, 0.0f, 0.0f);
+  float param_31 = 0.0f;
+  treeIndex_1 = 0;
+  const BST x_237 = tree_1[0];
+  param_8 = x_237;
+  param_9 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_8, param_9);
+  tree_1[0] = param_8;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 5;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  GLF_live1_looplimiter2 = 0;
+  GLF_live1i = 0;
+  {
+    for(; true; GLF_live1i = (GLF_live1i + 1)) {
+      if ((GLF_live1_looplimiter2 >= 7)) {
+        break;
+      }
+      GLF_live1_looplimiter2 = (GLF_live1_looplimiter2 + 1);
+    }
+  }
+  param_12 = treeIndex_1;
+  param_13 = 12;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 15;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 7;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 8;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 2;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 6;
+  insert_i1_i1_(param_22, param_23);
+  treeIndex_1 = (treeIndex_1 + 1);
+  GLF_live4_looplimiter3 = 0;
+  GLF_live4i = 0;
+  {
+    for(; true; GLF_live4i = (GLF_live4i + 1)) {
+      if ((GLF_live4_looplimiter3 >= 3)) {
+        break;
+      }
+      GLF_live4_looplimiter3 = (GLF_live4_looplimiter3 + 1);
+      GLF_live4index = 1;
+      const int x_144 = GLF_live4index;
+      const int x_145 = GLF_live4index;
+      const int x_146 = GLF_live4index;
+      const float x_269 = GLF_live4obj.even_numbers[1];
+      bool tint_tmp_1 = (x_144 >= 0);
+      if (tint_tmp_1) {
+        tint_tmp_1 = (x_145 < 10);
+      }
+      GLF_live4obj.even_numbers[((tint_tmp_1) ? x_146 : 0)] = x_269;
+      bool tint_tmp_2 = (GLF_live4i >= 0);
+      if (tint_tmp_2) {
+        tint_tmp_2 = (GLF_live4i < 10);
+      }
+      GLF_live4obj.even_numbers[((tint_tmp_2) ? GLF_live4i : 0)] = 1.0f;
+    }
+  }
+  param_24 = treeIndex_1;
+  param_25 = 17;
+  insert_i1_i1_(param_24, param_25);
+  const float x_278 = asfloat(x_27[0].x);
+  const float x_280 = asfloat(x_27[0].y);
+  if ((x_278 > x_280)) {
+    return;
+  }
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_26 = treeIndex_1;
+  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));
+  const float x_289 = z.x;
+  param_28 = x_289;
+  const float x_290 = makeFrame_f1_(param_28);
+  x_1 = x_290;
+  const float x_292 = z.y;
+  param_29 = x_292;
+  const float x_293 = makeFrame_f1_(param_29);
+  y_1 = x_293;
+  sum = -100;
+  target_1 = 0;
+  {
+    for(; (target_1 < 20); target_1 = (target_1 + 1)) {
+      param_30 = target_1;
+      const int x_158 = search_i1_(param_30);
+      result = x_158;
+      if ((result > 0)) {
+      } else {
+        switch(result) {
+          case 0: {
+            return;
+            break;
+          }
+          case -1: {
+            sum = (sum + 1);
+            break;
+          }
+          default: {
+            break;
+          }
+        }
+      }
+    }
+  }
+  a = (x_1 + (y_1 * float(sum)));
+  const float x_313 = asfloat(x_27[0].x);
+  const float x_315 = asfloat(x_27[0].y);
+  if ((x_313 < x_315)) {
+    x_235 = float3(1.0f, 0.0f, 0.0f);
+  } else {
+    param_31 = a;
+    const float3 x_321 = hueColor_f1_(param_31);
+    x_235 = x_321;
+  }
+  const float3 x_322 = x_235;
+  x_GLF_color = float4(x_322.x, x_322.y, x_322.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..10ddae2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.msl
@@ -0,0 +1,426 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct Obj {
+  tint_array_wrapper odd_numbers;
+  tint_array_wrapper even_numbers;
+};
+struct tint_array_wrapper_1 {
+  BST arr[10];
+};
+struct tint_array_wrapper_2 {
+  float arr[50];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const tree, thread int* const data) {
+  int const x_74 = *(data);
+  (*(tree)).data = x_74;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(constant buf0& x_27, thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper_1* const tint_symbol_5) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  int GLF_live8i = 0;
+  tint_array_wrapper_2 GLF_live8A = {};
+  baseIndex = 0;
+  while (true) {
+    int const x_75 = baseIndex;
+    int const x_76 = *(treeIndex);
+    if ((x_75 <= x_76)) {
+    } else {
+      break;
+    }
+    int const x_77 = *(data_1);
+    int const x_78 = baseIndex;
+    int const x_79 = (*(tint_symbol_5)).arr[x_78].data;
+    if ((x_77 <= x_79)) {
+      int const x_80 = baseIndex;
+      int const x_81 = (*(tint_symbol_5)).arr[x_80].leftIndex;
+      if ((x_81 == -1)) {
+        int const x_82 = baseIndex;
+        int const x_83 = *(treeIndex);
+        (*(tint_symbol_5)).arr[x_82].leftIndex = x_83;
+        int const x_84 = *(treeIndex);
+        BST const x_350 = (*(tint_symbol_5)).arr[x_84];
+        param = x_350;
+        int const x_85 = *(data_1);
+        param_1 = x_85;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_352 = param;
+        (*(tint_symbol_5)).arr[x_84] = x_352;
+        return;
+      } else {
+        int const x_86 = baseIndex;
+        int const x_87 = (*(tint_symbol_5)).arr[x_86].leftIndex;
+        baseIndex = x_87;
+        continue;
+      }
+    } else {
+      int const x_88 = baseIndex;
+      int const x_89 = (*(tint_symbol_5)).arr[x_88].rightIndex;
+      if ((x_89 == -1)) {
+        int const x_90 = baseIndex;
+        int const x_91 = *(treeIndex);
+        (*(tint_symbol_5)).arr[x_90].rightIndex = x_91;
+        int const x_92 = *(treeIndex);
+        BST const x_362 = (*(tint_symbol_5)).arr[x_92];
+        param_2 = x_362;
+        int const x_93 = *(data_1);
+        param_3 = x_93;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_364 = param_2;
+        (*(tint_symbol_5)).arr[x_92] = x_364;
+        return;
+      } else {
+        GLF_live8i = 1;
+        int const x_94 = GLF_live8i;
+        int const x_95 = GLF_live8i;
+        int const x_96 = GLF_live8i;
+        int const x_369 = select(0, x_96, ((x_94 >= 0) && (x_95 < 50)));
+        float const x_371 = GLF_live8A.arr[0];
+        float const x_373 = GLF_live8A.arr[x_369];
+        GLF_live8A.arr[x_369] = (x_373 + x_371);
+        while (true) {
+          int const x_97 = baseIndex;
+          int const x_98 = (*(tint_symbol_5)).arr[x_97].rightIndex;
+          baseIndex = x_98;
+          {
+            float const x_382 = x_27.injectionSwitch.x;
+            float const x_384 = x_27.injectionSwitch.y;
+            if ((x_382 > x_384)) {
+            } else {
+              break;
+            }
+          }
+        }
+        continue;
+      }
+    }
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper_1* const tint_symbol_6) {
+  int index = 0;
+  BST currentNode = {};
+  int x_387 = 0;
+  index = 0;
+  while (true) {
+    int const x_99 = index;
+    if ((x_99 != -1)) {
+    } else {
+      break;
+    }
+    int const x_100 = index;
+    BST const x_395 = (*(tint_symbol_6)).arr[x_100];
+    currentNode = x_395;
+    int const x_101 = currentNode.data;
+    int const x_102 = *(target);
+    if ((x_101 == x_102)) {
+      int const x_103 = *(target);
+      return x_103;
+    }
+    int const x_104 = *(target);
+    int const x_105 = currentNode.data;
+    if ((x_104 > x_105)) {
+      int const x_106 = currentNode.rightIndex;
+      x_387 = x_106;
+    } else {
+      int const x_107 = currentNode.leftIndex;
+      x_387 = x_107;
+    }
+    int const x_108 = x_387;
+    index = x_108;
+  }
+  return -1;
+}
+
+float makeFrame_f1_(thread float* const v, thread tint_array_wrapper_1* const tint_symbol_7) {
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  float const x_418 = *(v);
+  *(v) = (x_418 * 6.5f);
+  float const x_420 = *(v);
+  if ((x_420 < 1.5f)) {
+    param_5 = 100;
+    int const x_110 = search_i1_(&(param_5), tint_symbol_7);
+    return float(x_110);
+  }
+  float const x_425 = *(v);
+  if ((x_425 < 4.0f)) {
+    return 0.0f;
+  }
+  float const x_429 = *(v);
+  param_6 = 6;
+  int const x_111 = search_i1_(&(param_6), tint_symbol_7);
+  if ((x_429 < float(x_111))) {
+    return 1.0f;
+  }
+  param_7 = 30;
+  int const x_112 = search_i1_(&(param_7), tint_symbol_7);
+  return (10.0f + float(x_112));
+}
+
+float3 hueColor_f1_(thread float* const angle, thread tint_array_wrapper_1* const tint_symbol_8) {
+  float nodeData = 0.0f;
+  int param_4 = 0;
+  param_4 = 15;
+  int const x_109 = search_i1_(&(param_4), tint_symbol_8);
+  nodeData = float(x_109);
+  float const x_409 = *(angle);
+  float const x_410 = nodeData;
+  return ((float3(30.0f, 30.0f, 30.0f) + (float3(1.0f, 5.0f, x_410) * x_409)) / float3(50.0f, 50.0f, 50.0f));
+}
+
+void main_1(constant buf0& x_27, thread tint_array_wrapper_1* const tint_symbol_9, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int treeIndex_1 = 0;
+  BST param_8 = {};
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int GLF_live1_looplimiter2 = 0;
+  int GLF_live1i = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int GLF_live4_looplimiter3 = 0;
+  int GLF_live4i = 0;
+  int GLF_live4index = 0;
+  Obj GLF_live4obj = {};
+  int param_24 = 0;
+  int param_25 = 0;
+  int param_26 = 0;
+  int param_27 = 0;
+  float2 z = 0.0f;
+  float x_1 = 0.0f;
+  float param_28 = 0.0f;
+  float y_1 = 0.0f;
+  float param_29 = 0.0f;
+  int sum = 0;
+  int target_1 = 0;
+  int result = 0;
+  int param_30 = 0;
+  float a = 0.0f;
+  float3 x_235 = 0.0f;
+  float param_31 = 0.0f;
+  treeIndex_1 = 0;
+  BST const x_237 = (*(tint_symbol_9)).arr[0];
+  param_8 = x_237;
+  param_9 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_8), &(param_9));
+  BST const x_239 = param_8;
+  (*(tint_symbol_9)).arr[0] = x_239;
+  int const x_113 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  int const x_115 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 5;
+  insert_i1_i1_(x_27, &(param_10), &(param_11), tint_symbol_9);
+  int const x_116 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  GLF_live1_looplimiter2 = 0;
+  GLF_live1i = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    int const x_118 = GLF_live1_looplimiter2;
+    if ((x_118 >= 7)) {
+      break;
+    }
+    int const x_119 = GLF_live1_looplimiter2;
+    GLF_live1_looplimiter2 = (x_119 + 1);
+    {
+      int const x_121 = GLF_live1i;
+      GLF_live1i = (x_121 + 1);
+    }
+  }
+  int const x_123 = treeIndex_1;
+  param_12 = x_123;
+  param_13 = 12;
+  insert_i1_i1_(x_27, &(param_12), &(param_13), tint_symbol_9);
+  int const x_124 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  int const x_126 = treeIndex_1;
+  param_14 = x_126;
+  param_15 = 15;
+  insert_i1_i1_(x_27, &(param_14), &(param_15), tint_symbol_9);
+  int const x_127 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  int const x_129 = treeIndex_1;
+  param_16 = x_129;
+  param_17 = 7;
+  insert_i1_i1_(x_27, &(param_16), &(param_17), tint_symbol_9);
+  int const x_130 = treeIndex_1;
+  treeIndex_1 = (x_130 + 1);
+  int const x_132 = treeIndex_1;
+  param_18 = x_132;
+  param_19 = 8;
+  insert_i1_i1_(x_27, &(param_18), &(param_19), tint_symbol_9);
+  int const x_133 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  int const x_135 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 2;
+  insert_i1_i1_(x_27, &(param_20), &(param_21), tint_symbol_9);
+  int const x_136 = treeIndex_1;
+  treeIndex_1 = (x_136 + 1);
+  int const x_138 = treeIndex_1;
+  param_22 = x_138;
+  param_23 = 6;
+  insert_i1_i1_(x_27, &(param_22), &(param_23), tint_symbol_9);
+  int const x_139 = treeIndex_1;
+  treeIndex_1 = (x_139 + 1);
+  GLF_live4_looplimiter3 = 0;
+  GLF_live4i = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    int const x_141 = GLF_live4_looplimiter3;
+    if ((x_141 >= 3)) {
+      break;
+    }
+    int const x_142 = GLF_live4_looplimiter3;
+    GLF_live4_looplimiter3 = (x_142 + 1);
+    GLF_live4index = 1;
+    int const x_144 = GLF_live4index;
+    int const x_145 = GLF_live4index;
+    int const x_146 = GLF_live4index;
+    float const x_269 = GLF_live4obj.even_numbers.arr[1];
+    GLF_live4obj.even_numbers.arr[select(0, x_146, ((x_144 >= 0) && (x_145 < 10)))] = x_269;
+    int const x_147 = GLF_live4i;
+    int const x_148 = GLF_live4i;
+    int const x_149 = GLF_live4i;
+    GLF_live4obj.even_numbers.arr[select(0, x_149, ((x_147 >= 0) && (x_148 < 10)))] = 1.0f;
+    {
+      int const x_150 = GLF_live4i;
+      GLF_live4i = (x_150 + 1);
+    }
+  }
+  int const x_152 = treeIndex_1;
+  param_24 = x_152;
+  param_25 = 17;
+  insert_i1_i1_(x_27, &(param_24), &(param_25), tint_symbol_9);
+  float const x_278 = x_27.injectionSwitch.x;
+  float const x_280 = x_27.injectionSwitch.y;
+  if ((x_278 > x_280)) {
+    return;
+  }
+  int const x_153 = treeIndex_1;
+  treeIndex_1 = (x_153 + 1);
+  int const x_155 = treeIndex_1;
+  param_26 = x_155;
+  param_27 = 13;
+  insert_i1_i1_(x_27, &(param_26), &(param_27), tint_symbol_9);
+  float4 const x_285 = *(tint_symbol_10);
+  z = (float2(x_285.y, x_285.x) / float2(256.0f, 256.0f));
+  float const x_289 = z.x;
+  param_28 = x_289;
+  float const x_290 = makeFrame_f1_(&(param_28), tint_symbol_9);
+  x_1 = x_290;
+  float const x_292 = z.y;
+  param_29 = x_292;
+  float const x_293 = makeFrame_f1_(&(param_29), tint_symbol_9);
+  y_1 = x_293;
+  sum = -100;
+  target_1 = 0;
+  while (true) {
+    int const x_156 = target_1;
+    if ((x_156 < 20)) {
+    } else {
+      break;
+    }
+    int const x_157 = target_1;
+    param_30 = x_157;
+    int const x_158 = search_i1_(&(param_30), tint_symbol_9);
+    result = x_158;
+    int const x_159 = result;
+    if ((x_159 > 0)) {
+    } else {
+      int const x_160 = result;
+      switch(x_160) {
+        case 0: {
+          return;
+          break;
+        }
+        case -1: {
+          int const x_161 = sum;
+          sum = (x_161 + 1);
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+    }
+    {
+      int const x_163 = target_1;
+      target_1 = (x_163 + 1);
+    }
+  }
+  float const x_307 = x_1;
+  float const x_308 = y_1;
+  int const x_165 = sum;
+  a = (x_307 + (x_308 * float(x_165)));
+  float const x_313 = x_27.injectionSwitch.x;
+  float const x_315 = x_27.injectionSwitch.y;
+  if ((x_313 < x_315)) {
+    x_235 = float3(1.0f, 0.0f, 0.0f);
+  } else {
+    float const x_320 = a;
+    param_31 = x_320;
+    float3 const x_321 = hueColor_f1_(&(param_31), tint_symbol_9);
+    x_235 = x_321;
+  }
+  float3 const x_322 = x_235;
+  *(tint_symbol_11) = float4(x_322.x, x_322.y, x_322.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_27 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread tint_array_wrapper_1 tint_symbol_13 = {};
+  thread float4 tint_symbol_14 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_27, &(tint_symbol_13), &(tint_symbol_12), &(tint_symbol_14));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_14};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..ff48698
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,815 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 536
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree_1 "tree_1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_27 "x_27"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %GLF_live8i "GLF_live8i"
+               OpName %GLF_live8A "GLF_live8A"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_387 "x_387"
+               OpName %makeFrame_f1_ "makeFrame_f1_"
+               OpName %v "v"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %hueColor_f1_ "hueColor_f1_"
+               OpName %angle "angle"
+               OpName %nodeData "nodeData"
+               OpName %param_4 "param_4"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %GLF_live1_looplimiter2 "GLF_live1_looplimiter2"
+               OpName %GLF_live1i "GLF_live1i"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %GLF_live4_looplimiter3 "GLF_live4_looplimiter3"
+               OpName %GLF_live4i "GLF_live4i"
+               OpName %GLF_live4index "GLF_live4index"
+               OpName %Obj "Obj"
+               OpMemberName %Obj 0 "odd_numbers"
+               OpMemberName %Obj 1 "even_numbers"
+               OpName %GLF_live4obj "GLF_live4obj"
+               OpName %param_24 "param_24"
+               OpName %param_25 "param_25"
+               OpName %param_26 "param_26"
+               OpName %param_27 "param_27"
+               OpName %z "z"
+               OpName %x "x"
+               OpName %param_28 "param_28"
+               OpName %y "y"
+               OpName %param_29 "param_29"
+               OpName %sum "sum"
+               OpName %target_1 "target_1"
+               OpName %result "result"
+               OpName %param_30 "param_30"
+               OpName %a "a"
+               OpName %x_235 "x_235"
+               OpName %param_31 "param_31"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_27 NonWritable
+               OpDecorate %x_27 DescriptorSet 0
+               OpDecorate %x_27 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_50 ArrayStride 4
+               OpMemberDecorate %Obj 0 Offset 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %Obj 1 Offset 40
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+     %tree_1 = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_27 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %43 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %49 = OpConstantNull %int
+         %51 = OpConstantNull %BST
+    %uint_50 = OpConstant %uint 50
+%_arr_float_uint_50 = OpTypeArray %float %uint_50
+%_ptr_Function__arr_float_uint_50 = OpTypePointer Function %_arr_float_uint_50
+         %60 = OpConstantNull %_arr_float_uint_50
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+      %int_1 = OpConstant %int 1
+     %int_50 = OpConstant %int 50
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %166 = OpTypeFunction %int %_ptr_Function_int
+        %207 = OpTypeFunction %float %_ptr_Function_float
+  %float_6_5 = OpConstant %float 6.5
+  %float_1_5 = OpConstant %float 1.5
+    %int_100 = OpConstant %int 100
+    %float_4 = OpConstant %float 4
+    %float_0 = OpConstant %float 0
+      %int_6 = OpConstant %int 6
+    %float_1 = OpConstant %float 1
+     %int_30 = OpConstant %int 30
+   %float_10 = OpConstant %float 10
+    %v3float = OpTypeVector %float 3
+        %252 = OpTypeFunction %v3float %_ptr_Function_float
+        %258 = OpConstantNull %float
+     %int_15 = OpConstant %int 15
+   %float_30 = OpConstant %float 30
+        %268 = OpConstantComposite %v3float %float_30 %float_30 %float_30
+    %float_5 = OpConstant %float 5
+   %float_50 = OpConstant %float 50
+        %274 = OpConstantComposite %v3float %float_50 %float_50 %float_50
+        %276 = OpTypeFunction %void
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+        %Obj = OpTypeStruct %_arr_float_uint_10 %_arr_float_uint_10
+%_ptr_Function_Obj = OpTypePointer Function %Obj
+        %305 = OpConstantNull %Obj
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %312 = OpConstantNull %v2float
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %324 = OpConstantNull %v3float
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+       %true = OpConstantTrue %bool
+      %int_7 = OpConstant %int 7
+     %int_12 = OpConstant %int 12
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %int_10 = OpConstant %int 10
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+  %float_256 = OpConstant %float 256
+        %462 = OpConstantComposite %v2float %float_256 %float_256
+   %int_n100 = OpConstant %int -100
+     %int_20 = OpConstant %int 20
+        %514 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %523 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %23
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+         %32 = OpLoad %int %data
+         %35 = OpAccessChain %_ptr_Function_int %tree %uint_0
+               OpStore %35 %32
+         %38 = OpAccessChain %_ptr_Function_int %tree %uint_1
+               OpStore %38 %int_n1
+         %42 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %42 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %43
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %47 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %49
+      %param = OpVariable %_ptr_Function_BST Function %51
+    %param_1 = OpVariable %_ptr_Function_int Function %49
+    %param_2 = OpVariable %_ptr_Function_BST Function %51
+    %param_3 = OpVariable %_ptr_Function_int Function %49
+ %GLF_live8i = OpVariable %_ptr_Function_int Function %49
+ %GLF_live8A = OpVariable %_ptr_Function__arr_float_uint_50 Function %60
+               OpStore %baseIndex %int_0
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %66 = OpLoad %int %baseIndex
+         %68 = OpLoad %int %treeIndex
+         %69 = OpSLessThanEqual %bool %66 %68
+               OpSelectionMerge %71 None
+               OpBranchConditional %69 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %63
+         %71 = OpLabel
+         %75 = OpLoad %int %data_1
+         %76 = OpLoad %int %baseIndex
+         %78 = OpAccessChain %_ptr_Private_int %tree_1 %76 %uint_0
+         %79 = OpLoad %int %78
+         %80 = OpSLessThanEqual %bool %75 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpLoad %int %baseIndex
+         %85 = OpAccessChain %_ptr_Private_int %tree_1 %84 %uint_1
+         %86 = OpLoad %int %85
+         %87 = OpIEqual %bool %86 %int_n1
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+         %91 = OpLoad %int %baseIndex
+         %93 = OpLoad %int %treeIndex
+         %94 = OpAccessChain %_ptr_Private_int %tree_1 %91 %uint_1
+               OpStore %94 %93
+         %96 = OpLoad %int %treeIndex
+         %98 = OpAccessChain %_ptr_Private_BST %tree_1 %96
+         %99 = OpLoad %BST %98
+               OpStore %param %99
+        %101 = OpLoad %int %data_1
+               OpStore %param_1 %101
+        %102 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+        %105 = OpLoad %BST %param
+        %106 = OpAccessChain %_ptr_Private_BST %tree_1 %96
+               OpStore %106 %105
+               OpReturn
+         %90 = OpLabel
+        %107 = OpLoad %int %baseIndex
+        %108 = OpAccessChain %_ptr_Private_int %tree_1 %107 %uint_1
+        %109 = OpLoad %int %108
+               OpStore %baseIndex %109
+               OpBranch %64
+         %88 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+        %110 = OpLoad %int %baseIndex
+        %111 = OpAccessChain %_ptr_Private_int %tree_1 %110 %uint_2
+        %112 = OpLoad %int %111
+        %113 = OpIEqual %bool %112 %int_n1
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %115 = OpLabel
+        %117 = OpLoad %int %baseIndex
+        %119 = OpLoad %int %treeIndex
+        %120 = OpAccessChain %_ptr_Private_int %tree_1 %117 %uint_2
+               OpStore %120 %119
+        %122 = OpLoad %int %treeIndex
+        %123 = OpAccessChain %_ptr_Private_BST %tree_1 %122
+        %124 = OpLoad %BST %123
+               OpStore %param_2 %124
+        %126 = OpLoad %int %data_1
+               OpStore %param_3 %126
+        %127 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %130 = OpLoad %BST %param_2
+        %131 = OpAccessChain %_ptr_Private_BST %tree_1 %122
+               OpStore %131 %130
+               OpReturn
+        %116 = OpLabel
+               OpStore %GLF_live8i %int_1
+        %133 = OpLoad %int %GLF_live8i
+        %134 = OpLoad %int %GLF_live8i
+        %135 = OpLoad %int %GLF_live8i
+        %137 = OpSGreaterThanEqual %bool %133 %int_0
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+        %141 = OpSLessThan %bool %134 %int_50
+               OpBranch %138
+        %138 = OpLabel
+        %142 = OpPhi %bool %137 %116 %141 %139
+        %136 = OpSelect %int %142 %135 %int_0
+        %144 = OpAccessChain %_ptr_Function_float %GLF_live8A %int_0
+        %145 = OpLoad %float %144
+        %146 = OpAccessChain %_ptr_Function_float %GLF_live8A %136
+        %147 = OpLoad %float %146
+        %148 = OpAccessChain %_ptr_Function_float %GLF_live8A %136
+        %149 = OpFAdd %float %147 %145
+               OpStore %148 %149
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %154 = OpLoad %int %baseIndex
+        %155 = OpAccessChain %_ptr_Private_int %tree_1 %154 %uint_2
+        %156 = OpLoad %int %155
+               OpStore %baseIndex %156
+               OpBranch %152
+        %152 = OpLabel
+        %158 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_0
+        %159 = OpLoad %float %158
+        %160 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_1
+        %161 = OpLoad %float %160
+        %162 = OpFOrdGreaterThan %bool %159 %161
+               OpSelectionMerge %163 None
+               OpBranchConditional %162 %164 %165
+        %164 = OpLabel
+               OpBranch %163
+        %165 = OpLabel
+               OpBranch %151
+        %163 = OpLabel
+               OpBranch %150
+        %151 = OpLabel
+               OpBranch %64
+        %114 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+               OpBranch %62
+         %63 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %166
+     %target = OpFunctionParameter %_ptr_Function_int
+        %169 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %49
+%currentNode = OpVariable %_ptr_Function_BST Function %51
+      %x_387 = OpVariable %_ptr_Function_int Function %49
+               OpStore %index %int_0
+               OpBranch %173
+        %173 = OpLabel
+               OpLoopMerge %174 %175 None
+               OpBranch %176
+        %176 = OpLabel
+        %177 = OpLoad %int %index
+        %178 = OpINotEqual %bool %177 %int_n1
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %181
+        %180 = OpLabel
+               OpBranch %179
+        %181 = OpLabel
+               OpBranch %174
+        %179 = OpLabel
+        %182 = OpLoad %int %index
+        %183 = OpAccessChain %_ptr_Private_BST %tree_1 %182
+        %184 = OpLoad %BST %183
+               OpStore %currentNode %184
+        %185 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %186 = OpLoad %int %185
+        %188 = OpLoad %int %target
+        %189 = OpIEqual %bool %186 %188
+               OpSelectionMerge %190 None
+               OpBranchConditional %189 %191 %190
+        %191 = OpLabel
+        %193 = OpLoad %int %target
+               OpReturnValue %193
+        %190 = OpLabel
+        %195 = OpLoad %int %target
+        %196 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %197 = OpLoad %int %196
+        %198 = OpSGreaterThan %bool %195 %197
+               OpSelectionMerge %199 None
+               OpBranchConditional %198 %200 %201
+        %200 = OpLabel
+        %202 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %203 = OpLoad %int %202
+               OpStore %x_387 %203
+               OpBranch %199
+        %201 = OpLabel
+        %204 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %205 = OpLoad %int %204
+               OpStore %x_387 %205
+               OpBranch %199
+        %199 = OpLabel
+        %206 = OpLoad %int %x_387
+               OpStore %index %206
+               OpBranch %175
+        %175 = OpLabel
+               OpBranch %173
+        %174 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+%makeFrame_f1_ = OpFunction %float None %207
+          %v = OpFunctionParameter %_ptr_Function_float
+        %210 = OpLabel
+    %param_5 = OpVariable %_ptr_Function_int Function %49
+    %param_6 = OpVariable %_ptr_Function_int Function %49
+    %param_7 = OpVariable %_ptr_Function_int Function %49
+        %215 = OpLoad %float %v
+        %218 = OpFMul %float %215 %float_6_5
+               OpStore %v %218
+        %220 = OpLoad %float %v
+        %222 = OpFOrdLessThan %bool %220 %float_1_5
+               OpSelectionMerge %223 None
+               OpBranchConditional %222 %224 %223
+        %224 = OpLabel
+               OpStore %param_5 %int_100
+        %226 = OpFunctionCall %int %search_i1_ %param_5
+        %228 = OpConvertSToF %float %226
+               OpReturnValue %228
+        %223 = OpLabel
+        %230 = OpLoad %float %v
+        %232 = OpFOrdLessThan %bool %230 %float_4
+               OpSelectionMerge %233 None
+               OpBranchConditional %232 %234 %233
+        %234 = OpLabel
+               OpReturnValue %float_0
+        %233 = OpLabel
+        %237 = OpLoad %float %v
+               OpStore %param_6 %int_6
+        %239 = OpFunctionCall %int %search_i1_ %param_6
+        %241 = OpConvertSToF %float %239
+        %242 = OpFOrdLessThan %bool %237 %241
+               OpSelectionMerge %243 None
+               OpBranchConditional %242 %244 %243
+        %244 = OpLabel
+               OpReturnValue %float_1
+        %243 = OpLabel
+               OpStore %param_7 %int_30
+        %247 = OpFunctionCall %int %search_i1_ %param_7
+        %250 = OpConvertSToF %float %247
+        %251 = OpFAdd %float %float_10 %250
+               OpReturnValue %251
+               OpFunctionEnd
+%hueColor_f1_ = OpFunction %v3float None %252
+      %angle = OpFunctionParameter %_ptr_Function_float
+        %256 = OpLabel
+   %nodeData = OpVariable %_ptr_Function_float Function %258
+    %param_4 = OpVariable %_ptr_Function_int Function %49
+               OpStore %param_4 %int_15
+        %261 = OpFunctionCall %int %search_i1_ %param_4
+        %263 = OpConvertSToF %float %261
+               OpStore %nodeData %263
+        %265 = OpLoad %float %angle
+        %266 = OpLoad %float %nodeData
+        %270 = OpCompositeConstruct %v3float %float_1 %float_5 %266
+        %271 = OpVectorTimesScalar %v3float %270 %265
+        %272 = OpFAdd %v3float %268 %271
+        %275 = OpFDiv %v3float %272 %274
+               OpReturnValue %275
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %276
+        %278 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %49
+    %param_8 = OpVariable %_ptr_Function_BST Function %51
+    %param_9 = OpVariable %_ptr_Function_int Function %49
+   %param_10 = OpVariable %_ptr_Function_int Function %49
+   %param_11 = OpVariable %_ptr_Function_int Function %49
+%GLF_live1_looplimiter2 = OpVariable %_ptr_Function_int Function %49
+ %GLF_live1i = OpVariable %_ptr_Function_int Function %49
+   %param_12 = OpVariable %_ptr_Function_int Function %49
+   %param_13 = OpVariable %_ptr_Function_int Function %49
+   %param_14 = OpVariable %_ptr_Function_int Function %49
+   %param_15 = OpVariable %_ptr_Function_int Function %49
+   %param_16 = OpVariable %_ptr_Function_int Function %49
+   %param_17 = OpVariable %_ptr_Function_int Function %49
+   %param_18 = OpVariable %_ptr_Function_int Function %49
+   %param_19 = OpVariable %_ptr_Function_int Function %49
+   %param_20 = OpVariable %_ptr_Function_int Function %49
+   %param_21 = OpVariable %_ptr_Function_int Function %49
+   %param_22 = OpVariable %_ptr_Function_int Function %49
+   %param_23 = OpVariable %_ptr_Function_int Function %49
+%GLF_live4_looplimiter3 = OpVariable %_ptr_Function_int Function %49
+ %GLF_live4i = OpVariable %_ptr_Function_int Function %49
+%GLF_live4index = OpVariable %_ptr_Function_int Function %49
+%GLF_live4obj = OpVariable %_ptr_Function_Obj Function %305
+   %param_24 = OpVariable %_ptr_Function_int Function %49
+   %param_25 = OpVariable %_ptr_Function_int Function %49
+   %param_26 = OpVariable %_ptr_Function_int Function %49
+   %param_27 = OpVariable %_ptr_Function_int Function %49
+          %z = OpVariable %_ptr_Function_v2float Function %312
+          %x = OpVariable %_ptr_Function_float Function %258
+   %param_28 = OpVariable %_ptr_Function_float Function %258
+          %y = OpVariable %_ptr_Function_float Function %258
+   %param_29 = OpVariable %_ptr_Function_float Function %258
+        %sum = OpVariable %_ptr_Function_int Function %49
+   %target_1 = OpVariable %_ptr_Function_int Function %49
+     %result = OpVariable %_ptr_Function_int Function %49
+   %param_30 = OpVariable %_ptr_Function_int Function %49
+          %a = OpVariable %_ptr_Function_float Function %258
+      %x_235 = OpVariable %_ptr_Function_v3float Function %324
+   %param_31 = OpVariable %_ptr_Function_float Function %258
+               OpStore %treeIndex_1 %int_0
+        %326 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+        %327 = OpLoad %BST %326
+               OpStore %param_8 %327
+               OpStore %param_9 %int_9
+        %329 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_8 %param_9
+        %332 = OpLoad %BST %param_8
+        %333 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+               OpStore %333 %332
+        %334 = OpLoad %int %treeIndex_1
+        %335 = OpIAdd %int %334 %int_1
+               OpStore %treeIndex_1 %335
+        %336 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %336
+               OpStore %param_11 %int_5
+        %338 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %341 = OpLoad %int %treeIndex_1
+        %342 = OpIAdd %int %341 %int_1
+               OpStore %treeIndex_1 %342
+               OpStore %GLF_live1_looplimiter2 %int_0
+               OpStore %GLF_live1i %int_0
+               OpBranch %343
+        %343 = OpLabel
+               OpLoopMerge %344 %345 None
+               OpBranch %346
+        %346 = OpLabel
+               OpSelectionMerge %348 None
+               OpBranchConditional %true %349 %350
+        %349 = OpLabel
+               OpBranch %348
+        %350 = OpLabel
+               OpBranch %344
+        %348 = OpLabel
+        %351 = OpLoad %int %GLF_live1_looplimiter2
+        %353 = OpSGreaterThanEqual %bool %351 %int_7
+               OpSelectionMerge %354 None
+               OpBranchConditional %353 %355 %354
+        %355 = OpLabel
+               OpBranch %344
+        %354 = OpLabel
+        %356 = OpLoad %int %GLF_live1_looplimiter2
+        %357 = OpIAdd %int %356 %int_1
+               OpStore %GLF_live1_looplimiter2 %357
+               OpBranch %345
+        %345 = OpLabel
+        %358 = OpLoad %int %GLF_live1i
+        %359 = OpIAdd %int %358 %int_1
+               OpStore %GLF_live1i %359
+               OpBranch %343
+        %344 = OpLabel
+        %360 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %360
+               OpStore %param_13 %int_12
+        %362 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %365 = OpLoad %int %treeIndex_1
+        %366 = OpIAdd %int %365 %int_1
+               OpStore %treeIndex_1 %366
+        %367 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %367
+               OpStore %param_15 %int_15
+        %368 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %371 = OpLoad %int %treeIndex_1
+        %372 = OpIAdd %int %371 %int_1
+               OpStore %treeIndex_1 %372
+        %373 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %373
+               OpStore %param_17 %int_7
+        %374 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %377 = OpLoad %int %treeIndex_1
+        %378 = OpIAdd %int %377 %int_1
+               OpStore %treeIndex_1 %378
+        %379 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %379
+               OpStore %param_19 %int_8
+        %381 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %384 = OpLoad %int %treeIndex_1
+        %385 = OpIAdd %int %384 %int_1
+               OpStore %treeIndex_1 %385
+        %386 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %386
+               OpStore %param_21 %int_2
+        %388 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %391 = OpLoad %int %treeIndex_1
+        %392 = OpIAdd %int %391 %int_1
+               OpStore %treeIndex_1 %392
+        %393 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %393
+               OpStore %param_23 %int_6
+        %394 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+        %397 = OpLoad %int %treeIndex_1
+        %398 = OpIAdd %int %397 %int_1
+               OpStore %treeIndex_1 %398
+               OpStore %GLF_live4_looplimiter3 %int_0
+               OpStore %GLF_live4i %int_0
+               OpBranch %399
+        %399 = OpLabel
+               OpLoopMerge %400 %401 None
+               OpBranch %402
+        %402 = OpLabel
+               OpSelectionMerge %403 None
+               OpBranchConditional %true %404 %405
+        %404 = OpLabel
+               OpBranch %403
+        %405 = OpLabel
+               OpBranch %400
+        %403 = OpLabel
+        %406 = OpLoad %int %GLF_live4_looplimiter3
+        %408 = OpSGreaterThanEqual %bool %406 %int_3
+               OpSelectionMerge %409 None
+               OpBranchConditional %408 %410 %409
+        %410 = OpLabel
+               OpBranch %400
+        %409 = OpLabel
+        %411 = OpLoad %int %GLF_live4_looplimiter3
+        %412 = OpIAdd %int %411 %int_1
+               OpStore %GLF_live4_looplimiter3 %412
+               OpStore %GLF_live4index %int_1
+        %413 = OpLoad %int %GLF_live4index
+        %414 = OpLoad %int %GLF_live4index
+        %415 = OpLoad %int %GLF_live4index
+        %416 = OpAccessChain %_ptr_Function_float %GLF_live4obj %uint_1 %int_1
+        %417 = OpLoad %float %416
+        %419 = OpSGreaterThanEqual %bool %413 %int_0
+               OpSelectionMerge %420 None
+               OpBranchConditional %419 %421 %420
+        %421 = OpLabel
+        %423 = OpSLessThan %bool %414 %int_10
+               OpBranch %420
+        %420 = OpLabel
+        %424 = OpPhi %bool %419 %409 %423 %421
+        %418 = OpSelect %int %424 %415 %int_0
+        %425 = OpAccessChain %_ptr_Function_float %GLF_live4obj %uint_1 %418
+               OpStore %425 %417
+        %426 = OpLoad %int %GLF_live4i
+        %427 = OpLoad %int %GLF_live4i
+        %428 = OpLoad %int %GLF_live4i
+        %430 = OpSGreaterThanEqual %bool %426 %int_0
+               OpSelectionMerge %431 None
+               OpBranchConditional %430 %432 %431
+        %432 = OpLabel
+        %433 = OpSLessThan %bool %427 %int_10
+               OpBranch %431
+        %431 = OpLabel
+        %434 = OpPhi %bool %430 %420 %433 %432
+        %429 = OpSelect %int %434 %428 %int_0
+        %435 = OpAccessChain %_ptr_Function_float %GLF_live4obj %uint_1 %429
+               OpStore %435 %float_1
+               OpBranch %401
+        %401 = OpLabel
+        %436 = OpLoad %int %GLF_live4i
+        %437 = OpIAdd %int %436 %int_1
+               OpStore %GLF_live4i %437
+               OpBranch %399
+        %400 = OpLabel
+        %438 = OpLoad %int %treeIndex_1
+               OpStore %param_24 %438
+               OpStore %param_25 %int_17
+        %440 = OpFunctionCall %void %insert_i1_i1_ %param_24 %param_25
+        %443 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_0
+        %444 = OpLoad %float %443
+        %445 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_1
+        %446 = OpLoad %float %445
+        %447 = OpFOrdGreaterThan %bool %444 %446
+               OpSelectionMerge %448 None
+               OpBranchConditional %447 %449 %448
+        %449 = OpLabel
+               OpReturn
+        %448 = OpLabel
+        %450 = OpLoad %int %treeIndex_1
+        %451 = OpIAdd %int %450 %int_1
+               OpStore %treeIndex_1 %451
+        %452 = OpLoad %int %treeIndex_1
+               OpStore %param_26 %452
+               OpStore %param_27 %int_13
+        %454 = OpFunctionCall %void %insert_i1_i1_ %param_26 %param_27
+        %457 = OpLoad %v4float %gl_FragCoord
+        %458 = OpCompositeExtract %float %457 1
+        %459 = OpCompositeExtract %float %457 0
+        %460 = OpCompositeConstruct %v2float %458 %459
+        %463 = OpFDiv %v2float %460 %462
+               OpStore %z %463
+        %464 = OpAccessChain %_ptr_Function_float %z %uint_0
+        %465 = OpLoad %float %464
+               OpStore %param_28 %465
+        %466 = OpFunctionCall %float %makeFrame_f1_ %param_28
+               OpStore %x %466
+        %468 = OpAccessChain %_ptr_Function_float %z %uint_1
+        %469 = OpLoad %float %468
+               OpStore %param_29 %469
+        %470 = OpFunctionCall %float %makeFrame_f1_ %param_29
+               OpStore %y %470
+               OpStore %sum %int_n100
+               OpStore %target_1 %int_0
+               OpBranch %473
+        %473 = OpLabel
+               OpLoopMerge %474 %475 None
+               OpBranch %476
+        %476 = OpLabel
+        %477 = OpLoad %int %target_1
+        %479 = OpSLessThan %bool %477 %int_20
+               OpSelectionMerge %480 None
+               OpBranchConditional %479 %481 %482
+        %481 = OpLabel
+               OpBranch %480
+        %482 = OpLabel
+               OpBranch %474
+        %480 = OpLabel
+        %483 = OpLoad %int %target_1
+               OpStore %param_30 %483
+        %484 = OpFunctionCall %int %search_i1_ %param_30
+               OpStore %result %484
+        %486 = OpLoad %int %result
+        %487 = OpSGreaterThan %bool %486 %int_0
+               OpSelectionMerge %488 None
+               OpBranchConditional %487 %489 %490
+        %489 = OpLabel
+               OpBranch %488
+        %490 = OpLabel
+        %491 = OpLoad %int %result
+               OpSelectionMerge %492 None
+               OpSwitch %491 %493 0 %494 -1 %495
+        %494 = OpLabel
+               OpReturn
+        %495 = OpLabel
+        %496 = OpLoad %int %sum
+        %497 = OpIAdd %int %496 %int_1
+               OpStore %sum %497
+               OpBranch %492
+        %493 = OpLabel
+               OpBranch %492
+        %492 = OpLabel
+               OpBranch %488
+        %488 = OpLabel
+               OpBranch %475
+        %475 = OpLabel
+        %498 = OpLoad %int %target_1
+        %499 = OpIAdd %int %498 %int_1
+               OpStore %target_1 %499
+               OpBranch %473
+        %474 = OpLabel
+        %500 = OpLoad %float %x
+        %501 = OpLoad %float %y
+        %502 = OpLoad %int %sum
+        %503 = OpConvertSToF %float %502
+        %504 = OpFMul %float %501 %503
+        %505 = OpFAdd %float %500 %504
+               OpStore %a %505
+        %506 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_0
+        %507 = OpLoad %float %506
+        %508 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_1
+        %509 = OpLoad %float %508
+        %510 = OpFOrdLessThan %bool %507 %509
+               OpSelectionMerge %511 None
+               OpBranchConditional %510 %512 %513
+        %512 = OpLabel
+               OpStore %x_235 %514
+               OpBranch %511
+        %513 = OpLabel
+        %515 = OpLoad %float %a
+               OpStore %param_31 %515
+        %516 = OpFunctionCall %v3float %hueColor_f1_ %param_31
+               OpStore %x_235 %516
+               OpBranch %511
+        %511 = OpLabel
+        %518 = OpLoad %v3float %x_235
+        %519 = OpCompositeExtract %float %518 0
+        %520 = OpCompositeExtract %float %518 1
+        %521 = OpCompositeExtract %float %518 2
+        %522 = OpCompositeConstruct %v4float %519 %520 %521 %float_1
+               OpStore %x_GLF_color %522
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %523
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %527 = OpLabel
+        %528 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %528
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %276
+        %530 = OpLabel
+        %531 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %531
+        %532 = OpFunctionCall %void %main_1
+        %534 = OpLoad %v4float %x_GLF_color
+        %535 = OpCompositeConstruct %main_out %534
+        %533 = OpFunctionCall %void %tint_symbol_3 %535
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 152[%152] is not post dominated by the back-edge block 163[%163]
+  %163 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..eaa0aec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,420 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+struct Obj {
+  odd_numbers : array<f32, 10>;
+  even_numbers : array<f32, 10>;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_27 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_74 : i32 = *(data);
+  (*(tree)).data = x_74;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  var GLF_live8i : i32;
+  var GLF_live8A : array<f32, 50>;
+  baseIndex = 0;
+  loop {
+    let x_75 : i32 = baseIndex;
+    let x_76 : i32 = *(treeIndex);
+    if ((x_75 <= x_76)) {
+    } else {
+      break;
+    }
+    let x_77 : i32 = *(data_1);
+    let x_78 : i32 = baseIndex;
+    let x_79 : i32 = tree_1[x_78].data;
+    if ((x_77 <= x_79)) {
+      let x_80 : i32 = baseIndex;
+      let x_81 : i32 = tree_1[x_80].leftIndex;
+      if ((x_81 == -1)) {
+        let x_82 : i32 = baseIndex;
+        let x_83 : i32 = *(treeIndex);
+        tree_1[x_82].leftIndex = x_83;
+        let x_84 : i32 = *(treeIndex);
+        let x_350 : BST = tree_1[x_84];
+        param = x_350;
+        let x_85 : i32 = *(data_1);
+        param_1 = x_85;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_352 : BST = param;
+        tree_1[x_84] = x_352;
+        return;
+      } else {
+        let x_86 : i32 = baseIndex;
+        let x_87 : i32 = tree_1[x_86].leftIndex;
+        baseIndex = x_87;
+        continue;
+      }
+    } else {
+      let x_88 : i32 = baseIndex;
+      let x_89 : i32 = tree_1[x_88].rightIndex;
+      if ((x_89 == -1)) {
+        let x_90 : i32 = baseIndex;
+        let x_91 : i32 = *(treeIndex);
+        tree_1[x_90].rightIndex = x_91;
+        let x_92 : i32 = *(treeIndex);
+        let x_362 : BST = tree_1[x_92];
+        param_2 = x_362;
+        let x_93 : i32 = *(data_1);
+        param_3 = x_93;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_364 : BST = param_2;
+        tree_1[x_92] = x_364;
+        return;
+      } else {
+        GLF_live8i = 1;
+        let x_94 : i32 = GLF_live8i;
+        let x_95 : i32 = GLF_live8i;
+        let x_96 : i32 = GLF_live8i;
+        let x_369 : i32 = select(0, x_96, ((x_94 >= 0) && (x_95 < 50)));
+        let x_371 : f32 = GLF_live8A[0];
+        let x_373 : f32 = GLF_live8A[x_369];
+        GLF_live8A[x_369] = (x_373 + x_371);
+        loop {
+          let x_97 : i32 = baseIndex;
+          let x_98 : i32 = tree_1[x_97].rightIndex;
+          baseIndex = x_98;
+
+          continuing {
+            let x_382 : f32 = x_27.injectionSwitch.x;
+            let x_384 : f32 = x_27.injectionSwitch.y;
+            if ((x_382 > x_384)) {
+            } else {
+              break;
+            }
+          }
+        }
+        continue;
+      }
+    }
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_387 : i32;
+  index = 0;
+  loop {
+    let x_99 : i32 = index;
+    if ((x_99 != -1)) {
+    } else {
+      break;
+    }
+    let x_100 : i32 = index;
+    let x_395 : BST = tree_1[x_100];
+    currentNode = x_395;
+    let x_101 : i32 = currentNode.data;
+    let x_102 : i32 = *(target);
+    if ((x_101 == x_102)) {
+      let x_103 : i32 = *(target);
+      return x_103;
+    }
+    let x_104 : i32 = *(target);
+    let x_105 : i32 = currentNode.data;
+    if ((x_104 > x_105)) {
+      let x_106 : i32 = currentNode.rightIndex;
+      x_387 = x_106;
+    } else {
+      let x_107 : i32 = currentNode.leftIndex;
+      x_387 = x_107;
+    }
+    let x_108 : i32 = x_387;
+    index = x_108;
+  }
+  return -1;
+}
+
+fn makeFrame_f1_(v : ptr<function, f32>) -> f32 {
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  let x_418 : f32 = *(v);
+  *(v) = (x_418 * 6.5);
+  let x_420 : f32 = *(v);
+  if ((x_420 < 1.5)) {
+    param_5 = 100;
+    let x_110 : i32 = search_i1_(&(param_5));
+    return f32(x_110);
+  }
+  let x_425 : f32 = *(v);
+  if ((x_425 < 4.0)) {
+    return 0.0;
+  }
+  let x_429 : f32 = *(v);
+  param_6 = 6;
+  let x_111 : i32 = search_i1_(&(param_6));
+  if ((x_429 < f32(x_111))) {
+    return 1.0;
+  }
+  param_7 = 30;
+  let x_112 : i32 = search_i1_(&(param_7));
+  return (10.0 + f32(x_112));
+}
+
+fn hueColor_f1_(angle : ptr<function, f32>) -> vec3<f32> {
+  var nodeData : f32;
+  var param_4 : i32;
+  param_4 = 15;
+  let x_109 : i32 = search_i1_(&(param_4));
+  nodeData = f32(x_109);
+  let x_409 : f32 = *(angle);
+  let x_410 : f32 = nodeData;
+  return ((vec3<f32>(30.0, 30.0, 30.0) + (vec3<f32>(1.0, 5.0, x_410) * x_409)) / vec3<f32>(50.0, 50.0, 50.0));
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_8 : BST;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var GLF_live1_looplimiter2 : i32;
+  var GLF_live1i : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var GLF_live4_looplimiter3 : i32;
+  var GLF_live4i : i32;
+  var GLF_live4index : i32;
+  var GLF_live4obj : Obj;
+  var param_24 : i32;
+  var param_25 : i32;
+  var param_26 : i32;
+  var param_27 : i32;
+  var z : vec2<f32>;
+  var x : f32;
+  var param_28 : f32;
+  var y : f32;
+  var param_29 : f32;
+  var sum : i32;
+  var target_1 : i32;
+  var result : i32;
+  var param_30 : i32;
+  var a : f32;
+  var x_235 : vec3<f32>;
+  var param_31 : f32;
+  treeIndex_1 = 0;
+  let x_237 : BST = tree_1[0];
+  param_8 = x_237;
+  param_9 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_8), &(param_9));
+  let x_239 : BST = param_8;
+  tree_1[0] = x_239;
+  let x_113 : i32 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  let x_115 : i32 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 5;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  GLF_live1_looplimiter2 = 0;
+  GLF_live1i = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    let x_118 : i32 = GLF_live1_looplimiter2;
+    if ((x_118 >= 7)) {
+      break;
+    }
+    let x_119 : i32 = GLF_live1_looplimiter2;
+    GLF_live1_looplimiter2 = (x_119 + 1);
+
+    continuing {
+      let x_121 : i32 = GLF_live1i;
+      GLF_live1i = (x_121 + 1);
+    }
+  }
+  let x_123 : i32 = treeIndex_1;
+  param_12 = x_123;
+  param_13 = 12;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_124 : i32 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  let x_126 : i32 = treeIndex_1;
+  param_14 = x_126;
+  param_15 = 15;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_127 : i32 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  let x_129 : i32 = treeIndex_1;
+  param_16 = x_129;
+  param_17 = 7;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_130 : i32 = treeIndex_1;
+  treeIndex_1 = (x_130 + 1);
+  let x_132 : i32 = treeIndex_1;
+  param_18 = x_132;
+  param_19 = 8;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_133 : i32 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  let x_135 : i32 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 2;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_136 : i32 = treeIndex_1;
+  treeIndex_1 = (x_136 + 1);
+  let x_138 : i32 = treeIndex_1;
+  param_22 = x_138;
+  param_23 = 6;
+  insert_i1_i1_(&(param_22), &(param_23));
+  let x_139 : i32 = treeIndex_1;
+  treeIndex_1 = (x_139 + 1);
+  GLF_live4_looplimiter3 = 0;
+  GLF_live4i = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    let x_141 : i32 = GLF_live4_looplimiter3;
+    if ((x_141 >= 3)) {
+      break;
+    }
+    let x_142 : i32 = GLF_live4_looplimiter3;
+    GLF_live4_looplimiter3 = (x_142 + 1);
+    GLF_live4index = 1;
+    let x_144 : i32 = GLF_live4index;
+    let x_145 : i32 = GLF_live4index;
+    let x_146 : i32 = GLF_live4index;
+    let x_269 : f32 = GLF_live4obj.even_numbers[1];
+    GLF_live4obj.even_numbers[select(0, x_146, ((x_144 >= 0) && (x_145 < 10)))] = x_269;
+    let x_147 : i32 = GLF_live4i;
+    let x_148 : i32 = GLF_live4i;
+    let x_149 : i32 = GLF_live4i;
+    GLF_live4obj.even_numbers[select(0, x_149, ((x_147 >= 0) && (x_148 < 10)))] = 1.0;
+
+    continuing {
+      let x_150 : i32 = GLF_live4i;
+      GLF_live4i = (x_150 + 1);
+    }
+  }
+  let x_152 : i32 = treeIndex_1;
+  param_24 = x_152;
+  param_25 = 17;
+  insert_i1_i1_(&(param_24), &(param_25));
+  let x_278 : f32 = x_27.injectionSwitch.x;
+  let x_280 : f32 = x_27.injectionSwitch.y;
+  if ((x_278 > x_280)) {
+    return;
+  }
+  let x_153 : i32 = treeIndex_1;
+  treeIndex_1 = (x_153 + 1);
+  let x_155 : i32 = treeIndex_1;
+  param_26 = x_155;
+  param_27 = 13;
+  insert_i1_i1_(&(param_26), &(param_27));
+  let x_285 : vec4<f32> = gl_FragCoord;
+  z = (vec2<f32>(x_285.y, x_285.x) / vec2<f32>(256.0, 256.0));
+  let x_289 : f32 = z.x;
+  param_28 = x_289;
+  let x_290 : f32 = makeFrame_f1_(&(param_28));
+  x = x_290;
+  let x_292 : f32 = z.y;
+  param_29 = x_292;
+  let x_293 : f32 = makeFrame_f1_(&(param_29));
+  y = x_293;
+  sum = -100;
+  target_1 = 0;
+  loop {
+    let x_156 : i32 = target_1;
+    if ((x_156 < 20)) {
+    } else {
+      break;
+    }
+    let x_157 : i32 = target_1;
+    param_30 = x_157;
+    let x_158 : i32 = search_i1_(&(param_30));
+    result = x_158;
+    let x_159 : i32 = result;
+    if ((x_159 > 0)) {
+    } else {
+      let x_160 : i32 = result;
+      switch(x_160) {
+        case 0: {
+          return;
+        }
+        case -1: {
+          let x_161 : i32 = sum;
+          sum = (x_161 + 1);
+        }
+        default: {
+        }
+      }
+    }
+
+    continuing {
+      let x_163 : i32 = target_1;
+      target_1 = (x_163 + 1);
+    }
+  }
+  let x_307 : f32 = x;
+  let x_308 : f32 = y;
+  let x_165 : i32 = sum;
+  a = (x_307 + (x_308 * f32(x_165)));
+  let x_313 : f32 = x_27.injectionSwitch.x;
+  let x_315 : f32 = x_27.injectionSwitch.y;
+  if ((x_313 < x_315)) {
+    x_235 = vec3<f32>(1.0, 0.0, 0.0);
+  } else {
+    let x_320 : f32 = a;
+    param_31 = x_320;
+    let x_321 : vec3<f32> = hueColor_f1_(&(param_31));
+    x_235 = x_321;
+  }
+  let x_322 : vec3<f32> = x_235;
+  x_GLF_color = vec4<f32>(x_322.x, x_322.y, x_322.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
new file mode 100644
index 0000000..eaa0aec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
@@ -0,0 +1,420 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+struct Obj {
+  odd_numbers : array<f32, 10>;
+  even_numbers : array<f32, 10>;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_27 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_74 : i32 = *(data);
+  (*(tree)).data = x_74;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  var GLF_live8i : i32;
+  var GLF_live8A : array<f32, 50>;
+  baseIndex = 0;
+  loop {
+    let x_75 : i32 = baseIndex;
+    let x_76 : i32 = *(treeIndex);
+    if ((x_75 <= x_76)) {
+    } else {
+      break;
+    }
+    let x_77 : i32 = *(data_1);
+    let x_78 : i32 = baseIndex;
+    let x_79 : i32 = tree_1[x_78].data;
+    if ((x_77 <= x_79)) {
+      let x_80 : i32 = baseIndex;
+      let x_81 : i32 = tree_1[x_80].leftIndex;
+      if ((x_81 == -1)) {
+        let x_82 : i32 = baseIndex;
+        let x_83 : i32 = *(treeIndex);
+        tree_1[x_82].leftIndex = x_83;
+        let x_84 : i32 = *(treeIndex);
+        let x_350 : BST = tree_1[x_84];
+        param = x_350;
+        let x_85 : i32 = *(data_1);
+        param_1 = x_85;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_352 : BST = param;
+        tree_1[x_84] = x_352;
+        return;
+      } else {
+        let x_86 : i32 = baseIndex;
+        let x_87 : i32 = tree_1[x_86].leftIndex;
+        baseIndex = x_87;
+        continue;
+      }
+    } else {
+      let x_88 : i32 = baseIndex;
+      let x_89 : i32 = tree_1[x_88].rightIndex;
+      if ((x_89 == -1)) {
+        let x_90 : i32 = baseIndex;
+        let x_91 : i32 = *(treeIndex);
+        tree_1[x_90].rightIndex = x_91;
+        let x_92 : i32 = *(treeIndex);
+        let x_362 : BST = tree_1[x_92];
+        param_2 = x_362;
+        let x_93 : i32 = *(data_1);
+        param_3 = x_93;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_364 : BST = param_2;
+        tree_1[x_92] = x_364;
+        return;
+      } else {
+        GLF_live8i = 1;
+        let x_94 : i32 = GLF_live8i;
+        let x_95 : i32 = GLF_live8i;
+        let x_96 : i32 = GLF_live8i;
+        let x_369 : i32 = select(0, x_96, ((x_94 >= 0) && (x_95 < 50)));
+        let x_371 : f32 = GLF_live8A[0];
+        let x_373 : f32 = GLF_live8A[x_369];
+        GLF_live8A[x_369] = (x_373 + x_371);
+        loop {
+          let x_97 : i32 = baseIndex;
+          let x_98 : i32 = tree_1[x_97].rightIndex;
+          baseIndex = x_98;
+
+          continuing {
+            let x_382 : f32 = x_27.injectionSwitch.x;
+            let x_384 : f32 = x_27.injectionSwitch.y;
+            if ((x_382 > x_384)) {
+            } else {
+              break;
+            }
+          }
+        }
+        continue;
+      }
+    }
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_387 : i32;
+  index = 0;
+  loop {
+    let x_99 : i32 = index;
+    if ((x_99 != -1)) {
+    } else {
+      break;
+    }
+    let x_100 : i32 = index;
+    let x_395 : BST = tree_1[x_100];
+    currentNode = x_395;
+    let x_101 : i32 = currentNode.data;
+    let x_102 : i32 = *(target);
+    if ((x_101 == x_102)) {
+      let x_103 : i32 = *(target);
+      return x_103;
+    }
+    let x_104 : i32 = *(target);
+    let x_105 : i32 = currentNode.data;
+    if ((x_104 > x_105)) {
+      let x_106 : i32 = currentNode.rightIndex;
+      x_387 = x_106;
+    } else {
+      let x_107 : i32 = currentNode.leftIndex;
+      x_387 = x_107;
+    }
+    let x_108 : i32 = x_387;
+    index = x_108;
+  }
+  return -1;
+}
+
+fn makeFrame_f1_(v : ptr<function, f32>) -> f32 {
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  let x_418 : f32 = *(v);
+  *(v) = (x_418 * 6.5);
+  let x_420 : f32 = *(v);
+  if ((x_420 < 1.5)) {
+    param_5 = 100;
+    let x_110 : i32 = search_i1_(&(param_5));
+    return f32(x_110);
+  }
+  let x_425 : f32 = *(v);
+  if ((x_425 < 4.0)) {
+    return 0.0;
+  }
+  let x_429 : f32 = *(v);
+  param_6 = 6;
+  let x_111 : i32 = search_i1_(&(param_6));
+  if ((x_429 < f32(x_111))) {
+    return 1.0;
+  }
+  param_7 = 30;
+  let x_112 : i32 = search_i1_(&(param_7));
+  return (10.0 + f32(x_112));
+}
+
+fn hueColor_f1_(angle : ptr<function, f32>) -> vec3<f32> {
+  var nodeData : f32;
+  var param_4 : i32;
+  param_4 = 15;
+  let x_109 : i32 = search_i1_(&(param_4));
+  nodeData = f32(x_109);
+  let x_409 : f32 = *(angle);
+  let x_410 : f32 = nodeData;
+  return ((vec3<f32>(30.0, 30.0, 30.0) + (vec3<f32>(1.0, 5.0, x_410) * x_409)) / vec3<f32>(50.0, 50.0, 50.0));
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_8 : BST;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var GLF_live1_looplimiter2 : i32;
+  var GLF_live1i : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var GLF_live4_looplimiter3 : i32;
+  var GLF_live4i : i32;
+  var GLF_live4index : i32;
+  var GLF_live4obj : Obj;
+  var param_24 : i32;
+  var param_25 : i32;
+  var param_26 : i32;
+  var param_27 : i32;
+  var z : vec2<f32>;
+  var x : f32;
+  var param_28 : f32;
+  var y : f32;
+  var param_29 : f32;
+  var sum : i32;
+  var target_1 : i32;
+  var result : i32;
+  var param_30 : i32;
+  var a : f32;
+  var x_235 : vec3<f32>;
+  var param_31 : f32;
+  treeIndex_1 = 0;
+  let x_237 : BST = tree_1[0];
+  param_8 = x_237;
+  param_9 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_8), &(param_9));
+  let x_239 : BST = param_8;
+  tree_1[0] = x_239;
+  let x_113 : i32 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  let x_115 : i32 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 5;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  GLF_live1_looplimiter2 = 0;
+  GLF_live1i = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    let x_118 : i32 = GLF_live1_looplimiter2;
+    if ((x_118 >= 7)) {
+      break;
+    }
+    let x_119 : i32 = GLF_live1_looplimiter2;
+    GLF_live1_looplimiter2 = (x_119 + 1);
+
+    continuing {
+      let x_121 : i32 = GLF_live1i;
+      GLF_live1i = (x_121 + 1);
+    }
+  }
+  let x_123 : i32 = treeIndex_1;
+  param_12 = x_123;
+  param_13 = 12;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_124 : i32 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  let x_126 : i32 = treeIndex_1;
+  param_14 = x_126;
+  param_15 = 15;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_127 : i32 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  let x_129 : i32 = treeIndex_1;
+  param_16 = x_129;
+  param_17 = 7;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_130 : i32 = treeIndex_1;
+  treeIndex_1 = (x_130 + 1);
+  let x_132 : i32 = treeIndex_1;
+  param_18 = x_132;
+  param_19 = 8;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_133 : i32 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  let x_135 : i32 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 2;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_136 : i32 = treeIndex_1;
+  treeIndex_1 = (x_136 + 1);
+  let x_138 : i32 = treeIndex_1;
+  param_22 = x_138;
+  param_23 = 6;
+  insert_i1_i1_(&(param_22), &(param_23));
+  let x_139 : i32 = treeIndex_1;
+  treeIndex_1 = (x_139 + 1);
+  GLF_live4_looplimiter3 = 0;
+  GLF_live4i = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    let x_141 : i32 = GLF_live4_looplimiter3;
+    if ((x_141 >= 3)) {
+      break;
+    }
+    let x_142 : i32 = GLF_live4_looplimiter3;
+    GLF_live4_looplimiter3 = (x_142 + 1);
+    GLF_live4index = 1;
+    let x_144 : i32 = GLF_live4index;
+    let x_145 : i32 = GLF_live4index;
+    let x_146 : i32 = GLF_live4index;
+    let x_269 : f32 = GLF_live4obj.even_numbers[1];
+    GLF_live4obj.even_numbers[select(0, x_146, ((x_144 >= 0) && (x_145 < 10)))] = x_269;
+    let x_147 : i32 = GLF_live4i;
+    let x_148 : i32 = GLF_live4i;
+    let x_149 : i32 = GLF_live4i;
+    GLF_live4obj.even_numbers[select(0, x_149, ((x_147 >= 0) && (x_148 < 10)))] = 1.0;
+
+    continuing {
+      let x_150 : i32 = GLF_live4i;
+      GLF_live4i = (x_150 + 1);
+    }
+  }
+  let x_152 : i32 = treeIndex_1;
+  param_24 = x_152;
+  param_25 = 17;
+  insert_i1_i1_(&(param_24), &(param_25));
+  let x_278 : f32 = x_27.injectionSwitch.x;
+  let x_280 : f32 = x_27.injectionSwitch.y;
+  if ((x_278 > x_280)) {
+    return;
+  }
+  let x_153 : i32 = treeIndex_1;
+  treeIndex_1 = (x_153 + 1);
+  let x_155 : i32 = treeIndex_1;
+  param_26 = x_155;
+  param_27 = 13;
+  insert_i1_i1_(&(param_26), &(param_27));
+  let x_285 : vec4<f32> = gl_FragCoord;
+  z = (vec2<f32>(x_285.y, x_285.x) / vec2<f32>(256.0, 256.0));
+  let x_289 : f32 = z.x;
+  param_28 = x_289;
+  let x_290 : f32 = makeFrame_f1_(&(param_28));
+  x = x_290;
+  let x_292 : f32 = z.y;
+  param_29 = x_292;
+  let x_293 : f32 = makeFrame_f1_(&(param_29));
+  y = x_293;
+  sum = -100;
+  target_1 = 0;
+  loop {
+    let x_156 : i32 = target_1;
+    if ((x_156 < 20)) {
+    } else {
+      break;
+    }
+    let x_157 : i32 = target_1;
+    param_30 = x_157;
+    let x_158 : i32 = search_i1_(&(param_30));
+    result = x_158;
+    let x_159 : i32 = result;
+    if ((x_159 > 0)) {
+    } else {
+      let x_160 : i32 = result;
+      switch(x_160) {
+        case 0: {
+          return;
+        }
+        case -1: {
+          let x_161 : i32 = sum;
+          sum = (x_161 + 1);
+        }
+        default: {
+        }
+      }
+    }
+
+    continuing {
+      let x_163 : i32 = target_1;
+      target_1 = (x_163 + 1);
+    }
+  }
+  let x_307 : f32 = x;
+  let x_308 : f32 = y;
+  let x_165 : i32 = sum;
+  a = (x_307 + (x_308 * f32(x_165)));
+  let x_313 : f32 = x_27.injectionSwitch.x;
+  let x_315 : f32 = x_27.injectionSwitch.y;
+  if ((x_313 < x_315)) {
+    x_235 = vec3<f32>(1.0, 0.0, 0.0);
+  } else {
+    let x_320 : f32 = a;
+    param_31 = x_320;
+    let x_321 : vec3<f32> = hueColor_f1_(&(param_31));
+    x_235 = x_321;
+  }
+  let x_322 : vec3<f32> = x_235;
+  x_GLF_color = vec4<f32>(x_322.x, x_322.y, x_322.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4e1c9407
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,364 @@
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct Obj {
+  float odd_numbers[10];
+  float even_numbers[10];
+};
+
+static BST tree_1[10] = (BST[10])0;
+cbuffer cbuffer_x_27 : register(b0, space0) {
+  uint4 x_27[1];
+};
+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 makeTreeNode_struct_BST_i1_i1_i11_i1_(inout BST tree, inout int data) {
+  const int x_74 = data;
+  tree.data = x_74;
+  tree.leftIndex = -1;
+  tree.rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(inout int treeIndex, inout int data_1) {
+  int baseIndex = 0;
+  BST param = (BST)0;
+  int param_1 = 0;
+  BST param_2 = (BST)0;
+  int param_3 = 0;
+  int GLF_live8i = 0;
+  float GLF_live8A[50] = (float[50])0;
+  baseIndex = 0;
+  while (true) {
+    const int x_75 = baseIndex;
+    const int x_76 = treeIndex;
+    if ((x_75 <= x_76)) {
+    } else {
+      break;
+    }
+    const int x_77 = data_1;
+    const int x_79 = tree_1[baseIndex].data;
+    if ((x_77 <= x_79)) {
+      const int x_81 = tree_1[baseIndex].leftIndex;
+      if ((x_81 == -1)) {
+        const int x_82 = baseIndex;
+        const int x_83 = treeIndex;
+        tree_1[x_82].leftIndex = x_83;
+        const int x_84 = treeIndex;
+        const BST x_350 = tree_1[x_84];
+        param = x_350;
+        const int x_85 = data_1;
+        param_1 = x_85;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param, param_1);
+        tree_1[x_84] = param;
+        return;
+      } else {
+        const int x_87 = tree_1[baseIndex].leftIndex;
+        baseIndex = x_87;
+        continue;
+      }
+    } else {
+      const int x_89 = tree_1[baseIndex].rightIndex;
+      if ((x_89 == -1)) {
+        const int x_90 = baseIndex;
+        const int x_91 = treeIndex;
+        tree_1[x_90].rightIndex = x_91;
+        const int x_92 = treeIndex;
+        const BST x_362 = tree_1[x_92];
+        param_2 = x_362;
+        const int x_93 = data_1;
+        param_3 = x_93;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(param_2, param_3);
+        tree_1[x_92] = param_2;
+        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 float x_371 = GLF_live8A[0];
+        const float x_373 = GLF_live8A[x_369];
+        GLF_live8A[x_369] = (x_373 + x_371);
+        while (true) {
+          const int x_98 = tree_1[baseIndex].rightIndex;
+          baseIndex = x_98;
+          {
+            const float x_382 = asfloat(x_27[0].x);
+            const float x_384 = asfloat(x_27[0].y);
+            if ((x_382 > x_384)) {
+            } else {
+              break;
+            }
+          }
+        }
+        continue;
+      }
+    }
+  }
+  return;
+}
+
+int search_i1_(inout int target) {
+  int index = 0;
+  BST currentNode = (BST)0;
+  int x_387 = 0;
+  index = 0;
+  while (true) {
+    if ((index != -1)) {
+    } else {
+      break;
+    }
+    const BST x_395 = tree_1[index];
+    currentNode = x_395;
+    const int x_101 = currentNode.data;
+    const int x_102 = target;
+    if ((x_101 == x_102)) {
+      const int x_103 = target;
+      return x_103;
+    }
+    const int x_104 = target;
+    const int x_105 = currentNode.data;
+    if ((x_104 > x_105)) {
+      const int x_106 = currentNode.rightIndex;
+      x_387 = x_106;
+    } else {
+      const int x_107 = currentNode.leftIndex;
+      x_387 = x_107;
+    }
+    index = x_387;
+  }
+  return -1;
+}
+
+float makeFrame_f1_(inout float v) {
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  const float x_418 = v;
+  v = (x_418 * 6.5f);
+  const float x_420 = v;
+  if ((x_420 < 1.5f)) {
+    param_5 = 100;
+    const int x_110 = search_i1_(param_5);
+    return float(x_110);
+  }
+  const float x_425 = v;
+  if ((x_425 < 4.0f)) {
+    return 0.0f;
+  }
+  const float x_429 = v;
+  param_6 = 6;
+  const int x_111 = search_i1_(param_6);
+  if ((x_429 < float(x_111))) {
+    return 1.0f;
+  }
+  param_7 = 30;
+  const int x_112 = search_i1_(param_7);
+  return (10.0f + float(x_112));
+}
+
+float3 hueColor_f1_(inout float angle) {
+  float nodeData = 0.0f;
+  int param_4 = 0;
+  param_4 = 15;
+  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));
+}
+
+void main_1() {
+  int treeIndex_1 = 0;
+  BST param_8 = (BST)0;
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int GLF_live1_looplimiter2 = 0;
+  int GLF_live1i = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int GLF_live4_looplimiter3 = 0;
+  int GLF_live4i = 0;
+  int GLF_live4index = 0;
+  Obj GLF_live4obj = (Obj)0;
+  int param_24 = 0;
+  int param_25 = 0;
+  int param_26 = 0;
+  int param_27 = 0;
+  float2 z = float2(0.0f, 0.0f);
+  float x_1 = 0.0f;
+  float param_28 = 0.0f;
+  float y_1 = 0.0f;
+  float param_29 = 0.0f;
+  int sum = 0;
+  int target_1 = 0;
+  int result = 0;
+  int param_30 = 0;
+  float a = 0.0f;
+  float3 x_235 = float3(0.0f, 0.0f, 0.0f);
+  float param_31 = 0.0f;
+  treeIndex_1 = 0;
+  const BST x_237 = tree_1[0];
+  param_8 = x_237;
+  param_9 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(param_8, param_9);
+  tree_1[0] = param_8;
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_10 = treeIndex_1;
+  param_11 = 5;
+  insert_i1_i1_(param_10, param_11);
+  treeIndex_1 = (treeIndex_1 + 1);
+  GLF_live1_looplimiter2 = 0;
+  GLF_live1i = 0;
+  {
+    for(; true; GLF_live1i = (GLF_live1i + 1)) {
+      if ((GLF_live1_looplimiter2 >= 7)) {
+        break;
+      }
+      GLF_live1_looplimiter2 = (GLF_live1_looplimiter2 + 1);
+    }
+  }
+  param_12 = treeIndex_1;
+  param_13 = 12;
+  insert_i1_i1_(param_12, param_13);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_14 = treeIndex_1;
+  param_15 = 15;
+  insert_i1_i1_(param_14, param_15);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_16 = treeIndex_1;
+  param_17 = 7;
+  insert_i1_i1_(param_16, param_17);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_18 = treeIndex_1;
+  param_19 = 8;
+  insert_i1_i1_(param_18, param_19);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_20 = treeIndex_1;
+  param_21 = 2;
+  insert_i1_i1_(param_20, param_21);
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_22 = treeIndex_1;
+  param_23 = 6;
+  insert_i1_i1_(param_22, param_23);
+  treeIndex_1 = (treeIndex_1 + 1);
+  GLF_live4_looplimiter3 = 0;
+  GLF_live4i = 0;
+  {
+    for(; true; GLF_live4i = (GLF_live4i + 1)) {
+      if ((GLF_live4_looplimiter3 >= 3)) {
+        break;
+      }
+      GLF_live4_looplimiter3 = (GLF_live4_looplimiter3 + 1);
+      GLF_live4index = 1;
+      const int x_144 = GLF_live4index;
+      const int x_145 = GLF_live4index;
+      const int x_146 = GLF_live4index;
+      const float x_269 = GLF_live4obj.even_numbers[1];
+      bool tint_tmp_1 = (x_144 >= 0);
+      if (tint_tmp_1) {
+        tint_tmp_1 = (x_145 < 10);
+      }
+      GLF_live4obj.even_numbers[((tint_tmp_1) ? x_146 : 0)] = x_269;
+      bool tint_tmp_2 = (GLF_live4i >= 0);
+      if (tint_tmp_2) {
+        tint_tmp_2 = (GLF_live4i < 10);
+      }
+      GLF_live4obj.even_numbers[((tint_tmp_2) ? GLF_live4i : 0)] = 1.0f;
+    }
+  }
+  param_24 = treeIndex_1;
+  param_25 = 17;
+  insert_i1_i1_(param_24, param_25);
+  const float x_278 = asfloat(x_27[0].x);
+  const float x_280 = asfloat(x_27[0].y);
+  if ((x_278 > x_280)) {
+    return;
+  }
+  treeIndex_1 = (treeIndex_1 + 1);
+  param_26 = treeIndex_1;
+  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));
+  const float x_289 = z.x;
+  param_28 = x_289;
+  const float x_290 = makeFrame_f1_(param_28);
+  x_1 = x_290;
+  const float x_292 = z.y;
+  param_29 = x_292;
+  const float x_293 = makeFrame_f1_(param_29);
+  y_1 = x_293;
+  sum = -100;
+  target_1 = 0;
+  {
+    for(; (target_1 < 20); target_1 = (target_1 + 1)) {
+      param_30 = target_1;
+      const int x_158 = search_i1_(param_30);
+      result = x_158;
+      if ((result > 0)) {
+      } else {
+        switch(result) {
+          case 0: {
+            return;
+            break;
+          }
+          case -1: {
+            sum = (sum + 1);
+            break;
+          }
+          default: {
+            break;
+          }
+        }
+      }
+    }
+  }
+  a = (x_1 + (y_1 * float(sum)));
+  const float x_313 = asfloat(x_27[0].x);
+  const float x_315 = asfloat(x_27[0].y);
+  if ((x_313 < x_315)) {
+    x_235 = float3(1.0f, 0.0f, 0.0f);
+  } else {
+    param_31 = a;
+    const float3 x_321 = hueColor_f1_(param_31);
+    x_235 = x_321;
+  }
+  const float3 x_322 = x_235;
+  x_GLF_color = float4(x_322.x, x_322.y, x_322.z, 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;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_GLF_color};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..10ddae2
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.msl
@@ -0,0 +1,426 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct BST {
+  int data;
+  int leftIndex;
+  int rightIndex;
+};
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct tint_array_wrapper {
+  float arr[10];
+};
+struct Obj {
+  tint_array_wrapper odd_numbers;
+  tint_array_wrapper even_numbers;
+};
+struct tint_array_wrapper_1 {
+  BST arr[10];
+};
+struct tint_array_wrapper_2 {
+  float arr[50];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_2 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void makeTreeNode_struct_BST_i1_i1_i11_i1_(thread BST* const tree, thread int* const data) {
+  int const x_74 = *(data);
+  (*(tree)).data = x_74;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+void insert_i1_i1_(constant buf0& x_27, thread int* const treeIndex, thread int* const data_1, thread tint_array_wrapper_1* const tint_symbol_5) {
+  int baseIndex = 0;
+  BST param = {};
+  int param_1 = 0;
+  BST param_2 = {};
+  int param_3 = 0;
+  int GLF_live8i = 0;
+  tint_array_wrapper_2 GLF_live8A = {};
+  baseIndex = 0;
+  while (true) {
+    int const x_75 = baseIndex;
+    int const x_76 = *(treeIndex);
+    if ((x_75 <= x_76)) {
+    } else {
+      break;
+    }
+    int const x_77 = *(data_1);
+    int const x_78 = baseIndex;
+    int const x_79 = (*(tint_symbol_5)).arr[x_78].data;
+    if ((x_77 <= x_79)) {
+      int const x_80 = baseIndex;
+      int const x_81 = (*(tint_symbol_5)).arr[x_80].leftIndex;
+      if ((x_81 == -1)) {
+        int const x_82 = baseIndex;
+        int const x_83 = *(treeIndex);
+        (*(tint_symbol_5)).arr[x_82].leftIndex = x_83;
+        int const x_84 = *(treeIndex);
+        BST const x_350 = (*(tint_symbol_5)).arr[x_84];
+        param = x_350;
+        int const x_85 = *(data_1);
+        param_1 = x_85;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        BST const x_352 = param;
+        (*(tint_symbol_5)).arr[x_84] = x_352;
+        return;
+      } else {
+        int const x_86 = baseIndex;
+        int const x_87 = (*(tint_symbol_5)).arr[x_86].leftIndex;
+        baseIndex = x_87;
+        continue;
+      }
+    } else {
+      int const x_88 = baseIndex;
+      int const x_89 = (*(tint_symbol_5)).arr[x_88].rightIndex;
+      if ((x_89 == -1)) {
+        int const x_90 = baseIndex;
+        int const x_91 = *(treeIndex);
+        (*(tint_symbol_5)).arr[x_90].rightIndex = x_91;
+        int const x_92 = *(treeIndex);
+        BST const x_362 = (*(tint_symbol_5)).arr[x_92];
+        param_2 = x_362;
+        int const x_93 = *(data_1);
+        param_3 = x_93;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        BST const x_364 = param_2;
+        (*(tint_symbol_5)).arr[x_92] = x_364;
+        return;
+      } else {
+        GLF_live8i = 1;
+        int const x_94 = GLF_live8i;
+        int const x_95 = GLF_live8i;
+        int const x_96 = GLF_live8i;
+        int const x_369 = select(0, x_96, ((x_94 >= 0) && (x_95 < 50)));
+        float const x_371 = GLF_live8A.arr[0];
+        float const x_373 = GLF_live8A.arr[x_369];
+        GLF_live8A.arr[x_369] = (x_373 + x_371);
+        while (true) {
+          int const x_97 = baseIndex;
+          int const x_98 = (*(tint_symbol_5)).arr[x_97].rightIndex;
+          baseIndex = x_98;
+          {
+            float const x_382 = x_27.injectionSwitch.x;
+            float const x_384 = x_27.injectionSwitch.y;
+            if ((x_382 > x_384)) {
+            } else {
+              break;
+            }
+          }
+        }
+        continue;
+      }
+    }
+  }
+  return;
+}
+
+int search_i1_(thread int* const target, thread tint_array_wrapper_1* const tint_symbol_6) {
+  int index = 0;
+  BST currentNode = {};
+  int x_387 = 0;
+  index = 0;
+  while (true) {
+    int const x_99 = index;
+    if ((x_99 != -1)) {
+    } else {
+      break;
+    }
+    int const x_100 = index;
+    BST const x_395 = (*(tint_symbol_6)).arr[x_100];
+    currentNode = x_395;
+    int const x_101 = currentNode.data;
+    int const x_102 = *(target);
+    if ((x_101 == x_102)) {
+      int const x_103 = *(target);
+      return x_103;
+    }
+    int const x_104 = *(target);
+    int const x_105 = currentNode.data;
+    if ((x_104 > x_105)) {
+      int const x_106 = currentNode.rightIndex;
+      x_387 = x_106;
+    } else {
+      int const x_107 = currentNode.leftIndex;
+      x_387 = x_107;
+    }
+    int const x_108 = x_387;
+    index = x_108;
+  }
+  return -1;
+}
+
+float makeFrame_f1_(thread float* const v, thread tint_array_wrapper_1* const tint_symbol_7) {
+  int param_5 = 0;
+  int param_6 = 0;
+  int param_7 = 0;
+  float const x_418 = *(v);
+  *(v) = (x_418 * 6.5f);
+  float const x_420 = *(v);
+  if ((x_420 < 1.5f)) {
+    param_5 = 100;
+    int const x_110 = search_i1_(&(param_5), tint_symbol_7);
+    return float(x_110);
+  }
+  float const x_425 = *(v);
+  if ((x_425 < 4.0f)) {
+    return 0.0f;
+  }
+  float const x_429 = *(v);
+  param_6 = 6;
+  int const x_111 = search_i1_(&(param_6), tint_symbol_7);
+  if ((x_429 < float(x_111))) {
+    return 1.0f;
+  }
+  param_7 = 30;
+  int const x_112 = search_i1_(&(param_7), tint_symbol_7);
+  return (10.0f + float(x_112));
+}
+
+float3 hueColor_f1_(thread float* const angle, thread tint_array_wrapper_1* const tint_symbol_8) {
+  float nodeData = 0.0f;
+  int param_4 = 0;
+  param_4 = 15;
+  int const x_109 = search_i1_(&(param_4), tint_symbol_8);
+  nodeData = float(x_109);
+  float const x_409 = *(angle);
+  float const x_410 = nodeData;
+  return ((float3(30.0f, 30.0f, 30.0f) + (float3(1.0f, 5.0f, x_410) * x_409)) / float3(50.0f, 50.0f, 50.0f));
+}
+
+void main_1(constant buf0& x_27, thread tint_array_wrapper_1* const tint_symbol_9, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11) {
+  int treeIndex_1 = 0;
+  BST param_8 = {};
+  int param_9 = 0;
+  int param_10 = 0;
+  int param_11 = 0;
+  int GLF_live1_looplimiter2 = 0;
+  int GLF_live1i = 0;
+  int param_12 = 0;
+  int param_13 = 0;
+  int param_14 = 0;
+  int param_15 = 0;
+  int param_16 = 0;
+  int param_17 = 0;
+  int param_18 = 0;
+  int param_19 = 0;
+  int param_20 = 0;
+  int param_21 = 0;
+  int param_22 = 0;
+  int param_23 = 0;
+  int GLF_live4_looplimiter3 = 0;
+  int GLF_live4i = 0;
+  int GLF_live4index = 0;
+  Obj GLF_live4obj = {};
+  int param_24 = 0;
+  int param_25 = 0;
+  int param_26 = 0;
+  int param_27 = 0;
+  float2 z = 0.0f;
+  float x_1 = 0.0f;
+  float param_28 = 0.0f;
+  float y_1 = 0.0f;
+  float param_29 = 0.0f;
+  int sum = 0;
+  int target_1 = 0;
+  int result = 0;
+  int param_30 = 0;
+  float a = 0.0f;
+  float3 x_235 = 0.0f;
+  float param_31 = 0.0f;
+  treeIndex_1 = 0;
+  BST const x_237 = (*(tint_symbol_9)).arr[0];
+  param_8 = x_237;
+  param_9 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_8), &(param_9));
+  BST const x_239 = param_8;
+  (*(tint_symbol_9)).arr[0] = x_239;
+  int const x_113 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  int const x_115 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 5;
+  insert_i1_i1_(x_27, &(param_10), &(param_11), tint_symbol_9);
+  int const x_116 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  GLF_live1_looplimiter2 = 0;
+  GLF_live1i = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    int const x_118 = GLF_live1_looplimiter2;
+    if ((x_118 >= 7)) {
+      break;
+    }
+    int const x_119 = GLF_live1_looplimiter2;
+    GLF_live1_looplimiter2 = (x_119 + 1);
+    {
+      int const x_121 = GLF_live1i;
+      GLF_live1i = (x_121 + 1);
+    }
+  }
+  int const x_123 = treeIndex_1;
+  param_12 = x_123;
+  param_13 = 12;
+  insert_i1_i1_(x_27, &(param_12), &(param_13), tint_symbol_9);
+  int const x_124 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  int const x_126 = treeIndex_1;
+  param_14 = x_126;
+  param_15 = 15;
+  insert_i1_i1_(x_27, &(param_14), &(param_15), tint_symbol_9);
+  int const x_127 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  int const x_129 = treeIndex_1;
+  param_16 = x_129;
+  param_17 = 7;
+  insert_i1_i1_(x_27, &(param_16), &(param_17), tint_symbol_9);
+  int const x_130 = treeIndex_1;
+  treeIndex_1 = (x_130 + 1);
+  int const x_132 = treeIndex_1;
+  param_18 = x_132;
+  param_19 = 8;
+  insert_i1_i1_(x_27, &(param_18), &(param_19), tint_symbol_9);
+  int const x_133 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  int const x_135 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 2;
+  insert_i1_i1_(x_27, &(param_20), &(param_21), tint_symbol_9);
+  int const x_136 = treeIndex_1;
+  treeIndex_1 = (x_136 + 1);
+  int const x_138 = treeIndex_1;
+  param_22 = x_138;
+  param_23 = 6;
+  insert_i1_i1_(x_27, &(param_22), &(param_23), tint_symbol_9);
+  int const x_139 = treeIndex_1;
+  treeIndex_1 = (x_139 + 1);
+  GLF_live4_looplimiter3 = 0;
+  GLF_live4i = 0;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    int const x_141 = GLF_live4_looplimiter3;
+    if ((x_141 >= 3)) {
+      break;
+    }
+    int const x_142 = GLF_live4_looplimiter3;
+    GLF_live4_looplimiter3 = (x_142 + 1);
+    GLF_live4index = 1;
+    int const x_144 = GLF_live4index;
+    int const x_145 = GLF_live4index;
+    int const x_146 = GLF_live4index;
+    float const x_269 = GLF_live4obj.even_numbers.arr[1];
+    GLF_live4obj.even_numbers.arr[select(0, x_146, ((x_144 >= 0) && (x_145 < 10)))] = x_269;
+    int const x_147 = GLF_live4i;
+    int const x_148 = GLF_live4i;
+    int const x_149 = GLF_live4i;
+    GLF_live4obj.even_numbers.arr[select(0, x_149, ((x_147 >= 0) && (x_148 < 10)))] = 1.0f;
+    {
+      int const x_150 = GLF_live4i;
+      GLF_live4i = (x_150 + 1);
+    }
+  }
+  int const x_152 = treeIndex_1;
+  param_24 = x_152;
+  param_25 = 17;
+  insert_i1_i1_(x_27, &(param_24), &(param_25), tint_symbol_9);
+  float const x_278 = x_27.injectionSwitch.x;
+  float const x_280 = x_27.injectionSwitch.y;
+  if ((x_278 > x_280)) {
+    return;
+  }
+  int const x_153 = treeIndex_1;
+  treeIndex_1 = (x_153 + 1);
+  int const x_155 = treeIndex_1;
+  param_26 = x_155;
+  param_27 = 13;
+  insert_i1_i1_(x_27, &(param_26), &(param_27), tint_symbol_9);
+  float4 const x_285 = *(tint_symbol_10);
+  z = (float2(x_285.y, x_285.x) / float2(256.0f, 256.0f));
+  float const x_289 = z.x;
+  param_28 = x_289;
+  float const x_290 = makeFrame_f1_(&(param_28), tint_symbol_9);
+  x_1 = x_290;
+  float const x_292 = z.y;
+  param_29 = x_292;
+  float const x_293 = makeFrame_f1_(&(param_29), tint_symbol_9);
+  y_1 = x_293;
+  sum = -100;
+  target_1 = 0;
+  while (true) {
+    int const x_156 = target_1;
+    if ((x_156 < 20)) {
+    } else {
+      break;
+    }
+    int const x_157 = target_1;
+    param_30 = x_157;
+    int const x_158 = search_i1_(&(param_30), tint_symbol_9);
+    result = x_158;
+    int const x_159 = result;
+    if ((x_159 > 0)) {
+    } else {
+      int const x_160 = result;
+      switch(x_160) {
+        case 0: {
+          return;
+          break;
+        }
+        case -1: {
+          int const x_161 = sum;
+          sum = (x_161 + 1);
+          break;
+        }
+        default: {
+          break;
+        }
+      }
+    }
+    {
+      int const x_163 = target_1;
+      target_1 = (x_163 + 1);
+    }
+  }
+  float const x_307 = x_1;
+  float const x_308 = y_1;
+  int const x_165 = sum;
+  a = (x_307 + (x_308 * float(x_165)));
+  float const x_313 = x_27.injectionSwitch.x;
+  float const x_315 = x_27.injectionSwitch.y;
+  if ((x_313 < x_315)) {
+    x_235 = float3(1.0f, 0.0f, 0.0f);
+  } else {
+    float const x_320 = a;
+    param_31 = x_320;
+    float3 const x_321 = hueColor_f1_(&(param_31), tint_symbol_9);
+    x_235 = x_321;
+  }
+  float3 const x_322 = x_235;
+  *(tint_symbol_11) = float4(x_322.x, x_322.y, x_322.z, 1.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_27 [[buffer(0)]]) {
+  thread float4 tint_symbol_12 = 0.0f;
+  thread tint_array_wrapper_1 tint_symbol_13 = {};
+  thread float4 tint_symbol_14 = 0.0f;
+  tint_symbol_12 = gl_FragCoord_param;
+  main_1(x_27, &(tint_symbol_13), &(tint_symbol_12), &(tint_symbol_14));
+  main_out const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_14};
+  tint_symbol_2 const tint_symbol_4 = {.x_GLF_color_1=tint_symbol_3.x_GLF_color_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..ff48698
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,815 @@
+SKIP: FAILED
+
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 536
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %BST "BST"
+               OpMemberName %BST 0 "data"
+               OpMemberName %BST 1 "leftIndex"
+               OpMemberName %BST 2 "rightIndex"
+               OpName %tree_1 "tree_1"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_27 "x_27"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %makeTreeNode_struct_BST_i1_i1_i11_i1_ "makeTreeNode_struct_BST_i1_i1_i11_i1_"
+               OpName %tree "tree"
+               OpName %data "data"
+               OpName %insert_i1_i1_ "insert_i1_i1_"
+               OpName %treeIndex "treeIndex"
+               OpName %data_1 "data_1"
+               OpName %baseIndex "baseIndex"
+               OpName %param "param"
+               OpName %param_1 "param_1"
+               OpName %param_2 "param_2"
+               OpName %param_3 "param_3"
+               OpName %GLF_live8i "GLF_live8i"
+               OpName %GLF_live8A "GLF_live8A"
+               OpName %search_i1_ "search_i1_"
+               OpName %target "target"
+               OpName %index "index"
+               OpName %currentNode "currentNode"
+               OpName %x_387 "x_387"
+               OpName %makeFrame_f1_ "makeFrame_f1_"
+               OpName %v "v"
+               OpName %param_5 "param_5"
+               OpName %param_6 "param_6"
+               OpName %param_7 "param_7"
+               OpName %hueColor_f1_ "hueColor_f1_"
+               OpName %angle "angle"
+               OpName %nodeData "nodeData"
+               OpName %param_4 "param_4"
+               OpName %main_1 "main_1"
+               OpName %treeIndex_1 "treeIndex_1"
+               OpName %param_8 "param_8"
+               OpName %param_9 "param_9"
+               OpName %param_10 "param_10"
+               OpName %param_11 "param_11"
+               OpName %GLF_live1_looplimiter2 "GLF_live1_looplimiter2"
+               OpName %GLF_live1i "GLF_live1i"
+               OpName %param_12 "param_12"
+               OpName %param_13 "param_13"
+               OpName %param_14 "param_14"
+               OpName %param_15 "param_15"
+               OpName %param_16 "param_16"
+               OpName %param_17 "param_17"
+               OpName %param_18 "param_18"
+               OpName %param_19 "param_19"
+               OpName %param_20 "param_20"
+               OpName %param_21 "param_21"
+               OpName %param_22 "param_22"
+               OpName %param_23 "param_23"
+               OpName %GLF_live4_looplimiter3 "GLF_live4_looplimiter3"
+               OpName %GLF_live4i "GLF_live4i"
+               OpName %GLF_live4index "GLF_live4index"
+               OpName %Obj "Obj"
+               OpMemberName %Obj 0 "odd_numbers"
+               OpMemberName %Obj 1 "even_numbers"
+               OpName %GLF_live4obj "GLF_live4obj"
+               OpName %param_24 "param_24"
+               OpName %param_25 "param_25"
+               OpName %param_26 "param_26"
+               OpName %param_27 "param_27"
+               OpName %z "z"
+               OpName %x "x"
+               OpName %param_28 "param_28"
+               OpName %y "y"
+               OpName %param_29 "param_29"
+               OpName %sum "sum"
+               OpName %target_1 "target_1"
+               OpName %result "result"
+               OpName %param_30 "param_30"
+               OpName %a "a"
+               OpName %x_235 "x_235"
+               OpName %param_31 "param_31"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpMemberDecorate %BST 0 Offset 0
+               OpMemberDecorate %BST 1 Offset 4
+               OpMemberDecorate %BST 2 Offset 8
+               OpDecorate %_arr_BST_uint_10 ArrayStride 12
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_27 NonWritable
+               OpDecorate %x_27 DescriptorSet 0
+               OpDecorate %x_27 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %_arr_float_uint_50 ArrayStride 4
+               OpMemberDecorate %Obj 0 Offset 0
+               OpDecorate %_arr_float_uint_10 ArrayStride 4
+               OpMemberDecorate %Obj 1 Offset 40
+               OpMemberDecorate %main_out 0 Offset 0
+        %int = OpTypeInt 32 1
+        %BST = OpTypeStruct %int %int %int
+       %uint = OpTypeInt 32 0
+    %uint_10 = OpConstant %uint 10
+%_arr_BST_uint_10 = OpTypeArray %BST %uint_10
+%_ptr_Private__arr_BST_uint_10 = OpTypePointer Private %_arr_BST_uint_10
+          %8 = OpConstantNull %_arr_BST_uint_10
+     %tree_1 = OpVariable %_ptr_Private__arr_BST_uint_10 Private %8
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+       %x_27 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %17
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%_ptr_Function_BST = OpTypePointer Function %BST
+%_ptr_Function_int = OpTypePointer Function %int
+         %23 = OpTypeFunction %void %_ptr_Function_BST %_ptr_Function_int
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+     %int_n1 = OpConstant %int -1
+     %uint_2 = OpConstant %uint 2
+         %43 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int
+         %49 = OpConstantNull %int
+         %51 = OpConstantNull %BST
+    %uint_50 = OpConstant %uint 50
+%_arr_float_uint_50 = OpTypeArray %float %uint_50
+%_ptr_Function__arr_float_uint_50 = OpTypePointer Function %_arr_float_uint_50
+         %60 = OpConstantNull %_arr_float_uint_50
+      %int_0 = OpConstant %int 0
+       %bool = OpTypeBool
+%_ptr_Private_int = OpTypePointer Private %int
+%_ptr_Private_BST = OpTypePointer Private %BST
+      %int_1 = OpConstant %int 1
+     %int_50 = OpConstant %int 50
+%_ptr_Function_float = OpTypePointer Function %float
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+        %166 = OpTypeFunction %int %_ptr_Function_int
+        %207 = OpTypeFunction %float %_ptr_Function_float
+  %float_6_5 = OpConstant %float 6.5
+  %float_1_5 = OpConstant %float 1.5
+    %int_100 = OpConstant %int 100
+    %float_4 = OpConstant %float 4
+    %float_0 = OpConstant %float 0
+      %int_6 = OpConstant %int 6
+    %float_1 = OpConstant %float 1
+     %int_30 = OpConstant %int 30
+   %float_10 = OpConstant %float 10
+    %v3float = OpTypeVector %float 3
+        %252 = OpTypeFunction %v3float %_ptr_Function_float
+        %258 = OpConstantNull %float
+     %int_15 = OpConstant %int 15
+   %float_30 = OpConstant %float 30
+        %268 = OpConstantComposite %v3float %float_30 %float_30 %float_30
+    %float_5 = OpConstant %float 5
+   %float_50 = OpConstant %float 50
+        %274 = OpConstantComposite %v3float %float_50 %float_50 %float_50
+        %276 = OpTypeFunction %void
+%_arr_float_uint_10 = OpTypeArray %float %uint_10
+        %Obj = OpTypeStruct %_arr_float_uint_10 %_arr_float_uint_10
+%_ptr_Function_Obj = OpTypePointer Function %Obj
+        %305 = OpConstantNull %Obj
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+        %312 = OpConstantNull %v2float
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+        %324 = OpConstantNull %v3float
+      %int_9 = OpConstant %int 9
+      %int_5 = OpConstant %int 5
+       %true = OpConstantTrue %bool
+      %int_7 = OpConstant %int 7
+     %int_12 = OpConstant %int 12
+      %int_8 = OpConstant %int 8
+      %int_2 = OpConstant %int 2
+      %int_3 = OpConstant %int 3
+     %int_10 = OpConstant %int 10
+     %int_17 = OpConstant %int 17
+     %int_13 = OpConstant %int 13
+  %float_256 = OpConstant %float 256
+        %462 = OpConstantComposite %v2float %float_256 %float_256
+   %int_n100 = OpConstant %int -100
+     %int_20 = OpConstant %int 20
+        %514 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+   %main_out = OpTypeStruct %v4float
+        %523 = OpTypeFunction %void %main_out
+%makeTreeNode_struct_BST_i1_i1_i11_i1_ = OpFunction %void None %23
+       %tree = OpFunctionParameter %_ptr_Function_BST
+       %data = OpFunctionParameter %_ptr_Function_int
+         %30 = OpLabel
+         %32 = OpLoad %int %data
+         %35 = OpAccessChain %_ptr_Function_int %tree %uint_0
+               OpStore %35 %32
+         %38 = OpAccessChain %_ptr_Function_int %tree %uint_1
+               OpStore %38 %int_n1
+         %42 = OpAccessChain %_ptr_Function_int %tree %uint_2
+               OpStore %42 %int_n1
+               OpReturn
+               OpFunctionEnd
+%insert_i1_i1_ = OpFunction %void None %43
+  %treeIndex = OpFunctionParameter %_ptr_Function_int
+     %data_1 = OpFunctionParameter %_ptr_Function_int
+         %47 = OpLabel
+  %baseIndex = OpVariable %_ptr_Function_int Function %49
+      %param = OpVariable %_ptr_Function_BST Function %51
+    %param_1 = OpVariable %_ptr_Function_int Function %49
+    %param_2 = OpVariable %_ptr_Function_BST Function %51
+    %param_3 = OpVariable %_ptr_Function_int Function %49
+ %GLF_live8i = OpVariable %_ptr_Function_int Function %49
+ %GLF_live8A = OpVariable %_ptr_Function__arr_float_uint_50 Function %60
+               OpStore %baseIndex %int_0
+               OpBranch %62
+         %62 = OpLabel
+               OpLoopMerge %63 %64 None
+               OpBranch %65
+         %65 = OpLabel
+         %66 = OpLoad %int %baseIndex
+         %68 = OpLoad %int %treeIndex
+         %69 = OpSLessThanEqual %bool %66 %68
+               OpSelectionMerge %71 None
+               OpBranchConditional %69 %72 %73
+         %72 = OpLabel
+               OpBranch %71
+         %73 = OpLabel
+               OpBranch %63
+         %71 = OpLabel
+         %75 = OpLoad %int %data_1
+         %76 = OpLoad %int %baseIndex
+         %78 = OpAccessChain %_ptr_Private_int %tree_1 %76 %uint_0
+         %79 = OpLoad %int %78
+         %80 = OpSLessThanEqual %bool %75 %79
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %83
+         %82 = OpLabel
+         %84 = OpLoad %int %baseIndex
+         %85 = OpAccessChain %_ptr_Private_int %tree_1 %84 %uint_1
+         %86 = OpLoad %int %85
+         %87 = OpIEqual %bool %86 %int_n1
+               OpSelectionMerge %88 None
+               OpBranchConditional %87 %89 %90
+         %89 = OpLabel
+         %91 = OpLoad %int %baseIndex
+         %93 = OpLoad %int %treeIndex
+         %94 = OpAccessChain %_ptr_Private_int %tree_1 %91 %uint_1
+               OpStore %94 %93
+         %96 = OpLoad %int %treeIndex
+         %98 = OpAccessChain %_ptr_Private_BST %tree_1 %96
+         %99 = OpLoad %BST %98
+               OpStore %param %99
+        %101 = OpLoad %int %data_1
+               OpStore %param_1 %101
+        %102 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param %param_1
+        %105 = OpLoad %BST %param
+        %106 = OpAccessChain %_ptr_Private_BST %tree_1 %96
+               OpStore %106 %105
+               OpReturn
+         %90 = OpLabel
+        %107 = OpLoad %int %baseIndex
+        %108 = OpAccessChain %_ptr_Private_int %tree_1 %107 %uint_1
+        %109 = OpLoad %int %108
+               OpStore %baseIndex %109
+               OpBranch %64
+         %88 = OpLabel
+               OpBranch %81
+         %83 = OpLabel
+        %110 = OpLoad %int %baseIndex
+        %111 = OpAccessChain %_ptr_Private_int %tree_1 %110 %uint_2
+        %112 = OpLoad %int %111
+        %113 = OpIEqual %bool %112 %int_n1
+               OpSelectionMerge %114 None
+               OpBranchConditional %113 %115 %116
+        %115 = OpLabel
+        %117 = OpLoad %int %baseIndex
+        %119 = OpLoad %int %treeIndex
+        %120 = OpAccessChain %_ptr_Private_int %tree_1 %117 %uint_2
+               OpStore %120 %119
+        %122 = OpLoad %int %treeIndex
+        %123 = OpAccessChain %_ptr_Private_BST %tree_1 %122
+        %124 = OpLoad %BST %123
+               OpStore %param_2 %124
+        %126 = OpLoad %int %data_1
+               OpStore %param_3 %126
+        %127 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_2 %param_3
+        %130 = OpLoad %BST %param_2
+        %131 = OpAccessChain %_ptr_Private_BST %tree_1 %122
+               OpStore %131 %130
+               OpReturn
+        %116 = OpLabel
+               OpStore %GLF_live8i %int_1
+        %133 = OpLoad %int %GLF_live8i
+        %134 = OpLoad %int %GLF_live8i
+        %135 = OpLoad %int %GLF_live8i
+        %137 = OpSGreaterThanEqual %bool %133 %int_0
+               OpSelectionMerge %138 None
+               OpBranchConditional %137 %139 %138
+        %139 = OpLabel
+        %141 = OpSLessThan %bool %134 %int_50
+               OpBranch %138
+        %138 = OpLabel
+        %142 = OpPhi %bool %137 %116 %141 %139
+        %136 = OpSelect %int %142 %135 %int_0
+        %144 = OpAccessChain %_ptr_Function_float %GLF_live8A %int_0
+        %145 = OpLoad %float %144
+        %146 = OpAccessChain %_ptr_Function_float %GLF_live8A %136
+        %147 = OpLoad %float %146
+        %148 = OpAccessChain %_ptr_Function_float %GLF_live8A %136
+        %149 = OpFAdd %float %147 %145
+               OpStore %148 %149
+               OpBranch %150
+        %150 = OpLabel
+               OpLoopMerge %151 %152 None
+               OpBranch %153
+        %153 = OpLabel
+        %154 = OpLoad %int %baseIndex
+        %155 = OpAccessChain %_ptr_Private_int %tree_1 %154 %uint_2
+        %156 = OpLoad %int %155
+               OpStore %baseIndex %156
+               OpBranch %152
+        %152 = OpLabel
+        %158 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_0
+        %159 = OpLoad %float %158
+        %160 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_1
+        %161 = OpLoad %float %160
+        %162 = OpFOrdGreaterThan %bool %159 %161
+               OpSelectionMerge %163 None
+               OpBranchConditional %162 %164 %165
+        %164 = OpLabel
+               OpBranch %163
+        %165 = OpLabel
+               OpBranch %151
+        %163 = OpLabel
+               OpBranch %150
+        %151 = OpLabel
+               OpBranch %64
+        %114 = OpLabel
+               OpBranch %81
+         %81 = OpLabel
+               OpBranch %64
+         %64 = OpLabel
+               OpBranch %62
+         %63 = OpLabel
+               OpReturn
+               OpFunctionEnd
+ %search_i1_ = OpFunction %int None %166
+     %target = OpFunctionParameter %_ptr_Function_int
+        %169 = OpLabel
+      %index = OpVariable %_ptr_Function_int Function %49
+%currentNode = OpVariable %_ptr_Function_BST Function %51
+      %x_387 = OpVariable %_ptr_Function_int Function %49
+               OpStore %index %int_0
+               OpBranch %173
+        %173 = OpLabel
+               OpLoopMerge %174 %175 None
+               OpBranch %176
+        %176 = OpLabel
+        %177 = OpLoad %int %index
+        %178 = OpINotEqual %bool %177 %int_n1
+               OpSelectionMerge %179 None
+               OpBranchConditional %178 %180 %181
+        %180 = OpLabel
+               OpBranch %179
+        %181 = OpLabel
+               OpBranch %174
+        %179 = OpLabel
+        %182 = OpLoad %int %index
+        %183 = OpAccessChain %_ptr_Private_BST %tree_1 %182
+        %184 = OpLoad %BST %183
+               OpStore %currentNode %184
+        %185 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %186 = OpLoad %int %185
+        %188 = OpLoad %int %target
+        %189 = OpIEqual %bool %186 %188
+               OpSelectionMerge %190 None
+               OpBranchConditional %189 %191 %190
+        %191 = OpLabel
+        %193 = OpLoad %int %target
+               OpReturnValue %193
+        %190 = OpLabel
+        %195 = OpLoad %int %target
+        %196 = OpAccessChain %_ptr_Function_int %currentNode %uint_0
+        %197 = OpLoad %int %196
+        %198 = OpSGreaterThan %bool %195 %197
+               OpSelectionMerge %199 None
+               OpBranchConditional %198 %200 %201
+        %200 = OpLabel
+        %202 = OpAccessChain %_ptr_Function_int %currentNode %uint_2
+        %203 = OpLoad %int %202
+               OpStore %x_387 %203
+               OpBranch %199
+        %201 = OpLabel
+        %204 = OpAccessChain %_ptr_Function_int %currentNode %uint_1
+        %205 = OpLoad %int %204
+               OpStore %x_387 %205
+               OpBranch %199
+        %199 = OpLabel
+        %206 = OpLoad %int %x_387
+               OpStore %index %206
+               OpBranch %175
+        %175 = OpLabel
+               OpBranch %173
+        %174 = OpLabel
+               OpReturnValue %int_n1
+               OpFunctionEnd
+%makeFrame_f1_ = OpFunction %float None %207
+          %v = OpFunctionParameter %_ptr_Function_float
+        %210 = OpLabel
+    %param_5 = OpVariable %_ptr_Function_int Function %49
+    %param_6 = OpVariable %_ptr_Function_int Function %49
+    %param_7 = OpVariable %_ptr_Function_int Function %49
+        %215 = OpLoad %float %v
+        %218 = OpFMul %float %215 %float_6_5
+               OpStore %v %218
+        %220 = OpLoad %float %v
+        %222 = OpFOrdLessThan %bool %220 %float_1_5
+               OpSelectionMerge %223 None
+               OpBranchConditional %222 %224 %223
+        %224 = OpLabel
+               OpStore %param_5 %int_100
+        %226 = OpFunctionCall %int %search_i1_ %param_5
+        %228 = OpConvertSToF %float %226
+               OpReturnValue %228
+        %223 = OpLabel
+        %230 = OpLoad %float %v
+        %232 = OpFOrdLessThan %bool %230 %float_4
+               OpSelectionMerge %233 None
+               OpBranchConditional %232 %234 %233
+        %234 = OpLabel
+               OpReturnValue %float_0
+        %233 = OpLabel
+        %237 = OpLoad %float %v
+               OpStore %param_6 %int_6
+        %239 = OpFunctionCall %int %search_i1_ %param_6
+        %241 = OpConvertSToF %float %239
+        %242 = OpFOrdLessThan %bool %237 %241
+               OpSelectionMerge %243 None
+               OpBranchConditional %242 %244 %243
+        %244 = OpLabel
+               OpReturnValue %float_1
+        %243 = OpLabel
+               OpStore %param_7 %int_30
+        %247 = OpFunctionCall %int %search_i1_ %param_7
+        %250 = OpConvertSToF %float %247
+        %251 = OpFAdd %float %float_10 %250
+               OpReturnValue %251
+               OpFunctionEnd
+%hueColor_f1_ = OpFunction %v3float None %252
+      %angle = OpFunctionParameter %_ptr_Function_float
+        %256 = OpLabel
+   %nodeData = OpVariable %_ptr_Function_float Function %258
+    %param_4 = OpVariable %_ptr_Function_int Function %49
+               OpStore %param_4 %int_15
+        %261 = OpFunctionCall %int %search_i1_ %param_4
+        %263 = OpConvertSToF %float %261
+               OpStore %nodeData %263
+        %265 = OpLoad %float %angle
+        %266 = OpLoad %float %nodeData
+        %270 = OpCompositeConstruct %v3float %float_1 %float_5 %266
+        %271 = OpVectorTimesScalar %v3float %270 %265
+        %272 = OpFAdd %v3float %268 %271
+        %275 = OpFDiv %v3float %272 %274
+               OpReturnValue %275
+               OpFunctionEnd
+     %main_1 = OpFunction %void None %276
+        %278 = OpLabel
+%treeIndex_1 = OpVariable %_ptr_Function_int Function %49
+    %param_8 = OpVariable %_ptr_Function_BST Function %51
+    %param_9 = OpVariable %_ptr_Function_int Function %49
+   %param_10 = OpVariable %_ptr_Function_int Function %49
+   %param_11 = OpVariable %_ptr_Function_int Function %49
+%GLF_live1_looplimiter2 = OpVariable %_ptr_Function_int Function %49
+ %GLF_live1i = OpVariable %_ptr_Function_int Function %49
+   %param_12 = OpVariable %_ptr_Function_int Function %49
+   %param_13 = OpVariable %_ptr_Function_int Function %49
+   %param_14 = OpVariable %_ptr_Function_int Function %49
+   %param_15 = OpVariable %_ptr_Function_int Function %49
+   %param_16 = OpVariable %_ptr_Function_int Function %49
+   %param_17 = OpVariable %_ptr_Function_int Function %49
+   %param_18 = OpVariable %_ptr_Function_int Function %49
+   %param_19 = OpVariable %_ptr_Function_int Function %49
+   %param_20 = OpVariable %_ptr_Function_int Function %49
+   %param_21 = OpVariable %_ptr_Function_int Function %49
+   %param_22 = OpVariable %_ptr_Function_int Function %49
+   %param_23 = OpVariable %_ptr_Function_int Function %49
+%GLF_live4_looplimiter3 = OpVariable %_ptr_Function_int Function %49
+ %GLF_live4i = OpVariable %_ptr_Function_int Function %49
+%GLF_live4index = OpVariable %_ptr_Function_int Function %49
+%GLF_live4obj = OpVariable %_ptr_Function_Obj Function %305
+   %param_24 = OpVariable %_ptr_Function_int Function %49
+   %param_25 = OpVariable %_ptr_Function_int Function %49
+   %param_26 = OpVariable %_ptr_Function_int Function %49
+   %param_27 = OpVariable %_ptr_Function_int Function %49
+          %z = OpVariable %_ptr_Function_v2float Function %312
+          %x = OpVariable %_ptr_Function_float Function %258
+   %param_28 = OpVariable %_ptr_Function_float Function %258
+          %y = OpVariable %_ptr_Function_float Function %258
+   %param_29 = OpVariable %_ptr_Function_float Function %258
+        %sum = OpVariable %_ptr_Function_int Function %49
+   %target_1 = OpVariable %_ptr_Function_int Function %49
+     %result = OpVariable %_ptr_Function_int Function %49
+   %param_30 = OpVariable %_ptr_Function_int Function %49
+          %a = OpVariable %_ptr_Function_float Function %258
+      %x_235 = OpVariable %_ptr_Function_v3float Function %324
+   %param_31 = OpVariable %_ptr_Function_float Function %258
+               OpStore %treeIndex_1 %int_0
+        %326 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+        %327 = OpLoad %BST %326
+               OpStore %param_8 %327
+               OpStore %param_9 %int_9
+        %329 = OpFunctionCall %void %makeTreeNode_struct_BST_i1_i1_i11_i1_ %param_8 %param_9
+        %332 = OpLoad %BST %param_8
+        %333 = OpAccessChain %_ptr_Private_BST %tree_1 %int_0
+               OpStore %333 %332
+        %334 = OpLoad %int %treeIndex_1
+        %335 = OpIAdd %int %334 %int_1
+               OpStore %treeIndex_1 %335
+        %336 = OpLoad %int %treeIndex_1
+               OpStore %param_10 %336
+               OpStore %param_11 %int_5
+        %338 = OpFunctionCall %void %insert_i1_i1_ %param_10 %param_11
+        %341 = OpLoad %int %treeIndex_1
+        %342 = OpIAdd %int %341 %int_1
+               OpStore %treeIndex_1 %342
+               OpStore %GLF_live1_looplimiter2 %int_0
+               OpStore %GLF_live1i %int_0
+               OpBranch %343
+        %343 = OpLabel
+               OpLoopMerge %344 %345 None
+               OpBranch %346
+        %346 = OpLabel
+               OpSelectionMerge %348 None
+               OpBranchConditional %true %349 %350
+        %349 = OpLabel
+               OpBranch %348
+        %350 = OpLabel
+               OpBranch %344
+        %348 = OpLabel
+        %351 = OpLoad %int %GLF_live1_looplimiter2
+        %353 = OpSGreaterThanEqual %bool %351 %int_7
+               OpSelectionMerge %354 None
+               OpBranchConditional %353 %355 %354
+        %355 = OpLabel
+               OpBranch %344
+        %354 = OpLabel
+        %356 = OpLoad %int %GLF_live1_looplimiter2
+        %357 = OpIAdd %int %356 %int_1
+               OpStore %GLF_live1_looplimiter2 %357
+               OpBranch %345
+        %345 = OpLabel
+        %358 = OpLoad %int %GLF_live1i
+        %359 = OpIAdd %int %358 %int_1
+               OpStore %GLF_live1i %359
+               OpBranch %343
+        %344 = OpLabel
+        %360 = OpLoad %int %treeIndex_1
+               OpStore %param_12 %360
+               OpStore %param_13 %int_12
+        %362 = OpFunctionCall %void %insert_i1_i1_ %param_12 %param_13
+        %365 = OpLoad %int %treeIndex_1
+        %366 = OpIAdd %int %365 %int_1
+               OpStore %treeIndex_1 %366
+        %367 = OpLoad %int %treeIndex_1
+               OpStore %param_14 %367
+               OpStore %param_15 %int_15
+        %368 = OpFunctionCall %void %insert_i1_i1_ %param_14 %param_15
+        %371 = OpLoad %int %treeIndex_1
+        %372 = OpIAdd %int %371 %int_1
+               OpStore %treeIndex_1 %372
+        %373 = OpLoad %int %treeIndex_1
+               OpStore %param_16 %373
+               OpStore %param_17 %int_7
+        %374 = OpFunctionCall %void %insert_i1_i1_ %param_16 %param_17
+        %377 = OpLoad %int %treeIndex_1
+        %378 = OpIAdd %int %377 %int_1
+               OpStore %treeIndex_1 %378
+        %379 = OpLoad %int %treeIndex_1
+               OpStore %param_18 %379
+               OpStore %param_19 %int_8
+        %381 = OpFunctionCall %void %insert_i1_i1_ %param_18 %param_19
+        %384 = OpLoad %int %treeIndex_1
+        %385 = OpIAdd %int %384 %int_1
+               OpStore %treeIndex_1 %385
+        %386 = OpLoad %int %treeIndex_1
+               OpStore %param_20 %386
+               OpStore %param_21 %int_2
+        %388 = OpFunctionCall %void %insert_i1_i1_ %param_20 %param_21
+        %391 = OpLoad %int %treeIndex_1
+        %392 = OpIAdd %int %391 %int_1
+               OpStore %treeIndex_1 %392
+        %393 = OpLoad %int %treeIndex_1
+               OpStore %param_22 %393
+               OpStore %param_23 %int_6
+        %394 = OpFunctionCall %void %insert_i1_i1_ %param_22 %param_23
+        %397 = OpLoad %int %treeIndex_1
+        %398 = OpIAdd %int %397 %int_1
+               OpStore %treeIndex_1 %398
+               OpStore %GLF_live4_looplimiter3 %int_0
+               OpStore %GLF_live4i %int_0
+               OpBranch %399
+        %399 = OpLabel
+               OpLoopMerge %400 %401 None
+               OpBranch %402
+        %402 = OpLabel
+               OpSelectionMerge %403 None
+               OpBranchConditional %true %404 %405
+        %404 = OpLabel
+               OpBranch %403
+        %405 = OpLabel
+               OpBranch %400
+        %403 = OpLabel
+        %406 = OpLoad %int %GLF_live4_looplimiter3
+        %408 = OpSGreaterThanEqual %bool %406 %int_3
+               OpSelectionMerge %409 None
+               OpBranchConditional %408 %410 %409
+        %410 = OpLabel
+               OpBranch %400
+        %409 = OpLabel
+        %411 = OpLoad %int %GLF_live4_looplimiter3
+        %412 = OpIAdd %int %411 %int_1
+               OpStore %GLF_live4_looplimiter3 %412
+               OpStore %GLF_live4index %int_1
+        %413 = OpLoad %int %GLF_live4index
+        %414 = OpLoad %int %GLF_live4index
+        %415 = OpLoad %int %GLF_live4index
+        %416 = OpAccessChain %_ptr_Function_float %GLF_live4obj %uint_1 %int_1
+        %417 = OpLoad %float %416
+        %419 = OpSGreaterThanEqual %bool %413 %int_0
+               OpSelectionMerge %420 None
+               OpBranchConditional %419 %421 %420
+        %421 = OpLabel
+        %423 = OpSLessThan %bool %414 %int_10
+               OpBranch %420
+        %420 = OpLabel
+        %424 = OpPhi %bool %419 %409 %423 %421
+        %418 = OpSelect %int %424 %415 %int_0
+        %425 = OpAccessChain %_ptr_Function_float %GLF_live4obj %uint_1 %418
+               OpStore %425 %417
+        %426 = OpLoad %int %GLF_live4i
+        %427 = OpLoad %int %GLF_live4i
+        %428 = OpLoad %int %GLF_live4i
+        %430 = OpSGreaterThanEqual %bool %426 %int_0
+               OpSelectionMerge %431 None
+               OpBranchConditional %430 %432 %431
+        %432 = OpLabel
+        %433 = OpSLessThan %bool %427 %int_10
+               OpBranch %431
+        %431 = OpLabel
+        %434 = OpPhi %bool %430 %420 %433 %432
+        %429 = OpSelect %int %434 %428 %int_0
+        %435 = OpAccessChain %_ptr_Function_float %GLF_live4obj %uint_1 %429
+               OpStore %435 %float_1
+               OpBranch %401
+        %401 = OpLabel
+        %436 = OpLoad %int %GLF_live4i
+        %437 = OpIAdd %int %436 %int_1
+               OpStore %GLF_live4i %437
+               OpBranch %399
+        %400 = OpLabel
+        %438 = OpLoad %int %treeIndex_1
+               OpStore %param_24 %438
+               OpStore %param_25 %int_17
+        %440 = OpFunctionCall %void %insert_i1_i1_ %param_24 %param_25
+        %443 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_0
+        %444 = OpLoad %float %443
+        %445 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_1
+        %446 = OpLoad %float %445
+        %447 = OpFOrdGreaterThan %bool %444 %446
+               OpSelectionMerge %448 None
+               OpBranchConditional %447 %449 %448
+        %449 = OpLabel
+               OpReturn
+        %448 = OpLabel
+        %450 = OpLoad %int %treeIndex_1
+        %451 = OpIAdd %int %450 %int_1
+               OpStore %treeIndex_1 %451
+        %452 = OpLoad %int %treeIndex_1
+               OpStore %param_26 %452
+               OpStore %param_27 %int_13
+        %454 = OpFunctionCall %void %insert_i1_i1_ %param_26 %param_27
+        %457 = OpLoad %v4float %gl_FragCoord
+        %458 = OpCompositeExtract %float %457 1
+        %459 = OpCompositeExtract %float %457 0
+        %460 = OpCompositeConstruct %v2float %458 %459
+        %463 = OpFDiv %v2float %460 %462
+               OpStore %z %463
+        %464 = OpAccessChain %_ptr_Function_float %z %uint_0
+        %465 = OpLoad %float %464
+               OpStore %param_28 %465
+        %466 = OpFunctionCall %float %makeFrame_f1_ %param_28
+               OpStore %x %466
+        %468 = OpAccessChain %_ptr_Function_float %z %uint_1
+        %469 = OpLoad %float %468
+               OpStore %param_29 %469
+        %470 = OpFunctionCall %float %makeFrame_f1_ %param_29
+               OpStore %y %470
+               OpStore %sum %int_n100
+               OpStore %target_1 %int_0
+               OpBranch %473
+        %473 = OpLabel
+               OpLoopMerge %474 %475 None
+               OpBranch %476
+        %476 = OpLabel
+        %477 = OpLoad %int %target_1
+        %479 = OpSLessThan %bool %477 %int_20
+               OpSelectionMerge %480 None
+               OpBranchConditional %479 %481 %482
+        %481 = OpLabel
+               OpBranch %480
+        %482 = OpLabel
+               OpBranch %474
+        %480 = OpLabel
+        %483 = OpLoad %int %target_1
+               OpStore %param_30 %483
+        %484 = OpFunctionCall %int %search_i1_ %param_30
+               OpStore %result %484
+        %486 = OpLoad %int %result
+        %487 = OpSGreaterThan %bool %486 %int_0
+               OpSelectionMerge %488 None
+               OpBranchConditional %487 %489 %490
+        %489 = OpLabel
+               OpBranch %488
+        %490 = OpLabel
+        %491 = OpLoad %int %result
+               OpSelectionMerge %492 None
+               OpSwitch %491 %493 0 %494 -1 %495
+        %494 = OpLabel
+               OpReturn
+        %495 = OpLabel
+        %496 = OpLoad %int %sum
+        %497 = OpIAdd %int %496 %int_1
+               OpStore %sum %497
+               OpBranch %492
+        %493 = OpLabel
+               OpBranch %492
+        %492 = OpLabel
+               OpBranch %488
+        %488 = OpLabel
+               OpBranch %475
+        %475 = OpLabel
+        %498 = OpLoad %int %target_1
+        %499 = OpIAdd %int %498 %int_1
+               OpStore %target_1 %499
+               OpBranch %473
+        %474 = OpLabel
+        %500 = OpLoad %float %x
+        %501 = OpLoad %float %y
+        %502 = OpLoad %int %sum
+        %503 = OpConvertSToF %float %502
+        %504 = OpFMul %float %501 %503
+        %505 = OpFAdd %float %500 %504
+               OpStore %a %505
+        %506 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_0
+        %507 = OpLoad %float %506
+        %508 = OpAccessChain %_ptr_Uniform_float %x_27 %uint_0 %uint_1
+        %509 = OpLoad %float %508
+        %510 = OpFOrdLessThan %bool %507 %509
+               OpSelectionMerge %511 None
+               OpBranchConditional %510 %512 %513
+        %512 = OpLabel
+               OpStore %x_235 %514
+               OpBranch %511
+        %513 = OpLabel
+        %515 = OpLoad %float %a
+               OpStore %param_31 %515
+        %516 = OpFunctionCall %v3float %hueColor_f1_ %param_31
+               OpStore %x_235 %516
+               OpBranch %511
+        %511 = OpLabel
+        %518 = OpLoad %v3float %x_235
+        %519 = OpCompositeExtract %float %518 0
+        %520 = OpCompositeExtract %float %518 1
+        %521 = OpCompositeExtract %float %518 2
+        %522 = OpCompositeConstruct %v4float %519 %520 %521 %float_1
+               OpStore %x_GLF_color %522
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %523
+%tint_symbol_1 = OpFunctionParameter %main_out
+        %527 = OpLabel
+        %528 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %528
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %276
+        %530 = OpLabel
+        %531 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %531
+        %532 = OpFunctionCall %void %main_1
+        %534 = OpLoad %v4float %x_GLF_color
+        %535 = OpCompositeConstruct %main_out %534
+        %533 = OpFunctionCall %void %tint_symbol_3 %535
+               OpReturn
+               OpFunctionEnd
+1:1: The continue construct with the continue target 152[%152] is not post dominated by the back-edge block 163[%163]
+  %163 = OpLabel
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..eaa0aec
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,420 @@
+struct BST {
+  data : i32;
+  leftIndex : i32;
+  rightIndex : i32;
+};
+
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+struct Obj {
+  odd_numbers : array<f32, 10>;
+  even_numbers : array<f32, 10>;
+};
+
+var<private> tree_1 : array<BST, 10>;
+
+[[group(0), binding(0)]] var<uniform> x_27 : buf0;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn makeTreeNode_struct_BST_i1_i1_i11_i1_(tree : ptr<function, BST>, data : ptr<function, i32>) {
+  let x_74 : i32 = *(data);
+  (*(tree)).data = x_74;
+  (*(tree)).leftIndex = -1;
+  (*(tree)).rightIndex = -1;
+  return;
+}
+
+fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
+  var baseIndex : i32;
+  var param : BST;
+  var param_1 : i32;
+  var param_2 : BST;
+  var param_3 : i32;
+  var GLF_live8i : i32;
+  var GLF_live8A : array<f32, 50>;
+  baseIndex = 0;
+  loop {
+    let x_75 : i32 = baseIndex;
+    let x_76 : i32 = *(treeIndex);
+    if ((x_75 <= x_76)) {
+    } else {
+      break;
+    }
+    let x_77 : i32 = *(data_1);
+    let x_78 : i32 = baseIndex;
+    let x_79 : i32 = tree_1[x_78].data;
+    if ((x_77 <= x_79)) {
+      let x_80 : i32 = baseIndex;
+      let x_81 : i32 = tree_1[x_80].leftIndex;
+      if ((x_81 == -1)) {
+        let x_82 : i32 = baseIndex;
+        let x_83 : i32 = *(treeIndex);
+        tree_1[x_82].leftIndex = x_83;
+        let x_84 : i32 = *(treeIndex);
+        let x_350 : BST = tree_1[x_84];
+        param = x_350;
+        let x_85 : i32 = *(data_1);
+        param_1 = x_85;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
+        let x_352 : BST = param;
+        tree_1[x_84] = x_352;
+        return;
+      } else {
+        let x_86 : i32 = baseIndex;
+        let x_87 : i32 = tree_1[x_86].leftIndex;
+        baseIndex = x_87;
+        continue;
+      }
+    } else {
+      let x_88 : i32 = baseIndex;
+      let x_89 : i32 = tree_1[x_88].rightIndex;
+      if ((x_89 == -1)) {
+        let x_90 : i32 = baseIndex;
+        let x_91 : i32 = *(treeIndex);
+        tree_1[x_90].rightIndex = x_91;
+        let x_92 : i32 = *(treeIndex);
+        let x_362 : BST = tree_1[x_92];
+        param_2 = x_362;
+        let x_93 : i32 = *(data_1);
+        param_3 = x_93;
+        makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
+        let x_364 : BST = param_2;
+        tree_1[x_92] = x_364;
+        return;
+      } else {
+        GLF_live8i = 1;
+        let x_94 : i32 = GLF_live8i;
+        let x_95 : i32 = GLF_live8i;
+        let x_96 : i32 = GLF_live8i;
+        let x_369 : i32 = select(0, x_96, ((x_94 >= 0) && (x_95 < 50)));
+        let x_371 : f32 = GLF_live8A[0];
+        let x_373 : f32 = GLF_live8A[x_369];
+        GLF_live8A[x_369] = (x_373 + x_371);
+        loop {
+          let x_97 : i32 = baseIndex;
+          let x_98 : i32 = tree_1[x_97].rightIndex;
+          baseIndex = x_98;
+
+          continuing {
+            let x_382 : f32 = x_27.injectionSwitch.x;
+            let x_384 : f32 = x_27.injectionSwitch.y;
+            if ((x_382 > x_384)) {
+            } else {
+              break;
+            }
+          }
+        }
+        continue;
+      }
+    }
+  }
+  return;
+}
+
+fn search_i1_(target : ptr<function, i32>) -> i32 {
+  var index : i32;
+  var currentNode : BST;
+  var x_387 : i32;
+  index = 0;
+  loop {
+    let x_99 : i32 = index;
+    if ((x_99 != -1)) {
+    } else {
+      break;
+    }
+    let x_100 : i32 = index;
+    let x_395 : BST = tree_1[x_100];
+    currentNode = x_395;
+    let x_101 : i32 = currentNode.data;
+    let x_102 : i32 = *(target);
+    if ((x_101 == x_102)) {
+      let x_103 : i32 = *(target);
+      return x_103;
+    }
+    let x_104 : i32 = *(target);
+    let x_105 : i32 = currentNode.data;
+    if ((x_104 > x_105)) {
+      let x_106 : i32 = currentNode.rightIndex;
+      x_387 = x_106;
+    } else {
+      let x_107 : i32 = currentNode.leftIndex;
+      x_387 = x_107;
+    }
+    let x_108 : i32 = x_387;
+    index = x_108;
+  }
+  return -1;
+}
+
+fn makeFrame_f1_(v : ptr<function, f32>) -> f32 {
+  var param_5 : i32;
+  var param_6 : i32;
+  var param_7 : i32;
+  let x_418 : f32 = *(v);
+  *(v) = (x_418 * 6.5);
+  let x_420 : f32 = *(v);
+  if ((x_420 < 1.5)) {
+    param_5 = 100;
+    let x_110 : i32 = search_i1_(&(param_5));
+    return f32(x_110);
+  }
+  let x_425 : f32 = *(v);
+  if ((x_425 < 4.0)) {
+    return 0.0;
+  }
+  let x_429 : f32 = *(v);
+  param_6 = 6;
+  let x_111 : i32 = search_i1_(&(param_6));
+  if ((x_429 < f32(x_111))) {
+    return 1.0;
+  }
+  param_7 = 30;
+  let x_112 : i32 = search_i1_(&(param_7));
+  return (10.0 + f32(x_112));
+}
+
+fn hueColor_f1_(angle : ptr<function, f32>) -> vec3<f32> {
+  var nodeData : f32;
+  var param_4 : i32;
+  param_4 = 15;
+  let x_109 : i32 = search_i1_(&(param_4));
+  nodeData = f32(x_109);
+  let x_409 : f32 = *(angle);
+  let x_410 : f32 = nodeData;
+  return ((vec3<f32>(30.0, 30.0, 30.0) + (vec3<f32>(1.0, 5.0, x_410) * x_409)) / vec3<f32>(50.0, 50.0, 50.0));
+}
+
+fn main_1() {
+  var treeIndex_1 : i32;
+  var param_8 : BST;
+  var param_9 : i32;
+  var param_10 : i32;
+  var param_11 : i32;
+  var GLF_live1_looplimiter2 : i32;
+  var GLF_live1i : i32;
+  var param_12 : i32;
+  var param_13 : i32;
+  var param_14 : i32;
+  var param_15 : i32;
+  var param_16 : i32;
+  var param_17 : i32;
+  var param_18 : i32;
+  var param_19 : i32;
+  var param_20 : i32;
+  var param_21 : i32;
+  var param_22 : i32;
+  var param_23 : i32;
+  var GLF_live4_looplimiter3 : i32;
+  var GLF_live4i : i32;
+  var GLF_live4index : i32;
+  var GLF_live4obj : Obj;
+  var param_24 : i32;
+  var param_25 : i32;
+  var param_26 : i32;
+  var param_27 : i32;
+  var z : vec2<f32>;
+  var x : f32;
+  var param_28 : f32;
+  var y : f32;
+  var param_29 : f32;
+  var sum : i32;
+  var target_1 : i32;
+  var result : i32;
+  var param_30 : i32;
+  var a : f32;
+  var x_235 : vec3<f32>;
+  var param_31 : f32;
+  treeIndex_1 = 0;
+  let x_237 : BST = tree_1[0];
+  param_8 = x_237;
+  param_9 = 9;
+  makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_8), &(param_9));
+  let x_239 : BST = param_8;
+  tree_1[0] = x_239;
+  let x_113 : i32 = treeIndex_1;
+  treeIndex_1 = (x_113 + 1);
+  let x_115 : i32 = treeIndex_1;
+  param_10 = x_115;
+  param_11 = 5;
+  insert_i1_i1_(&(param_10), &(param_11));
+  let x_116 : i32 = treeIndex_1;
+  treeIndex_1 = (x_116 + 1);
+  GLF_live1_looplimiter2 = 0;
+  GLF_live1i = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    let x_118 : i32 = GLF_live1_looplimiter2;
+    if ((x_118 >= 7)) {
+      break;
+    }
+    let x_119 : i32 = GLF_live1_looplimiter2;
+    GLF_live1_looplimiter2 = (x_119 + 1);
+
+    continuing {
+      let x_121 : i32 = GLF_live1i;
+      GLF_live1i = (x_121 + 1);
+    }
+  }
+  let x_123 : i32 = treeIndex_1;
+  param_12 = x_123;
+  param_13 = 12;
+  insert_i1_i1_(&(param_12), &(param_13));
+  let x_124 : i32 = treeIndex_1;
+  treeIndex_1 = (x_124 + 1);
+  let x_126 : i32 = treeIndex_1;
+  param_14 = x_126;
+  param_15 = 15;
+  insert_i1_i1_(&(param_14), &(param_15));
+  let x_127 : i32 = treeIndex_1;
+  treeIndex_1 = (x_127 + 1);
+  let x_129 : i32 = treeIndex_1;
+  param_16 = x_129;
+  param_17 = 7;
+  insert_i1_i1_(&(param_16), &(param_17));
+  let x_130 : i32 = treeIndex_1;
+  treeIndex_1 = (x_130 + 1);
+  let x_132 : i32 = treeIndex_1;
+  param_18 = x_132;
+  param_19 = 8;
+  insert_i1_i1_(&(param_18), &(param_19));
+  let x_133 : i32 = treeIndex_1;
+  treeIndex_1 = (x_133 + 1);
+  let x_135 : i32 = treeIndex_1;
+  param_20 = x_135;
+  param_21 = 2;
+  insert_i1_i1_(&(param_20), &(param_21));
+  let x_136 : i32 = treeIndex_1;
+  treeIndex_1 = (x_136 + 1);
+  let x_138 : i32 = treeIndex_1;
+  param_22 = x_138;
+  param_23 = 6;
+  insert_i1_i1_(&(param_22), &(param_23));
+  let x_139 : i32 = treeIndex_1;
+  treeIndex_1 = (x_139 + 1);
+  GLF_live4_looplimiter3 = 0;
+  GLF_live4i = 0;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    let x_141 : i32 = GLF_live4_looplimiter3;
+    if ((x_141 >= 3)) {
+      break;
+    }
+    let x_142 : i32 = GLF_live4_looplimiter3;
+    GLF_live4_looplimiter3 = (x_142 + 1);
+    GLF_live4index = 1;
+    let x_144 : i32 = GLF_live4index;
+    let x_145 : i32 = GLF_live4index;
+    let x_146 : i32 = GLF_live4index;
+    let x_269 : f32 = GLF_live4obj.even_numbers[1];
+    GLF_live4obj.even_numbers[select(0, x_146, ((x_144 >= 0) && (x_145 < 10)))] = x_269;
+    let x_147 : i32 = GLF_live4i;
+    let x_148 : i32 = GLF_live4i;
+    let x_149 : i32 = GLF_live4i;
+    GLF_live4obj.even_numbers[select(0, x_149, ((x_147 >= 0) && (x_148 < 10)))] = 1.0;
+
+    continuing {
+      let x_150 : i32 = GLF_live4i;
+      GLF_live4i = (x_150 + 1);
+    }
+  }
+  let x_152 : i32 = treeIndex_1;
+  param_24 = x_152;
+  param_25 = 17;
+  insert_i1_i1_(&(param_24), &(param_25));
+  let x_278 : f32 = x_27.injectionSwitch.x;
+  let x_280 : f32 = x_27.injectionSwitch.y;
+  if ((x_278 > x_280)) {
+    return;
+  }
+  let x_153 : i32 = treeIndex_1;
+  treeIndex_1 = (x_153 + 1);
+  let x_155 : i32 = treeIndex_1;
+  param_26 = x_155;
+  param_27 = 13;
+  insert_i1_i1_(&(param_26), &(param_27));
+  let x_285 : vec4<f32> = gl_FragCoord;
+  z = (vec2<f32>(x_285.y, x_285.x) / vec2<f32>(256.0, 256.0));
+  let x_289 : f32 = z.x;
+  param_28 = x_289;
+  let x_290 : f32 = makeFrame_f1_(&(param_28));
+  x = x_290;
+  let x_292 : f32 = z.y;
+  param_29 = x_292;
+  let x_293 : f32 = makeFrame_f1_(&(param_29));
+  y = x_293;
+  sum = -100;
+  target_1 = 0;
+  loop {
+    let x_156 : i32 = target_1;
+    if ((x_156 < 20)) {
+    } else {
+      break;
+    }
+    let x_157 : i32 = target_1;
+    param_30 = x_157;
+    let x_158 : i32 = search_i1_(&(param_30));
+    result = x_158;
+    let x_159 : i32 = result;
+    if ((x_159 > 0)) {
+    } else {
+      let x_160 : i32 = result;
+      switch(x_160) {
+        case 0: {
+          return;
+        }
+        case -1: {
+          let x_161 : i32 = sum;
+          sum = (x_161 + 1);
+        }
+        default: {
+        }
+      }
+    }
+
+    continuing {
+      let x_163 : i32 = target_1;
+      target_1 = (x_163 + 1);
+    }
+  }
+  let x_307 : f32 = x;
+  let x_308 : f32 = y;
+  let x_165 : i32 = sum;
+  a = (x_307 + (x_308 * f32(x_165)));
+  let x_313 : f32 = x_27.injectionSwitch.x;
+  let x_315 : f32 = x_27.injectionSwitch.y;
+  if ((x_313 < x_315)) {
+    x_235 = vec3<f32>(1.0, 0.0, 0.0);
+  } else {
+    let x_320 : f32 = a;
+    param_31 = x_320;
+    let x_321 : vec3<f32> = hueColor_f1_(&(param_31));
+    x_235 = x_321;
+  }
+  let x_322 : vec3<f32> = x_235;
+  x_GLF_color = vec4<f32>(x_322.x, x_322.y, x_322.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm
new file mode 100644
index 0000000..553996a
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm
@@ -0,0 +1,213 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %m43 "m43"
+               OpName %ll1 "ll1"
+               OpName %rows "rows"
+               OpName %_GLF_color "_GLF_color"
+               OpName %ll4 "ll4"
+               OpName %ll2 "ll2"
+               OpName %c "c"
+               OpName %tempm43 "tempm43"
+               OpName %ll3 "ll3"
+               OpName %d "d"
+               OpName %r "r"
+               OpName %sums "sums"
+               OpName %idx "idx"
+               OpDecorate %ll1 RelaxedPrecision
+               OpDecorate %rows RelaxedPrecision
+               OpDecorate %_GLF_color Location 0
+               OpDecorate %16 RelaxedPrecision
+               OpDecorate %17 RelaxedPrecision
+               OpDecorate %18 RelaxedPrecision
+               OpDecorate %ll4 RelaxedPrecision
+               OpDecorate %ll2 RelaxedPrecision
+               OpDecorate %c RelaxedPrecision
+               OpDecorate %19 RelaxedPrecision
+               OpDecorate %20 RelaxedPrecision
+               OpDecorate %21 RelaxedPrecision
+               OpDecorate %22 RelaxedPrecision
+               OpDecorate %ll3 RelaxedPrecision
+               OpDecorate %d RelaxedPrecision
+               OpDecorate %23 RelaxedPrecision
+               OpDecorate %24 RelaxedPrecision
+               OpDecorate %25 RelaxedPrecision
+               OpDecorate %26 RelaxedPrecision
+               OpDecorate %r RelaxedPrecision
+               OpDecorate %27 RelaxedPrecision
+               OpDecorate %28 RelaxedPrecision
+               OpDecorate %29 RelaxedPrecision
+               OpDecorate %30 RelaxedPrecision
+               OpDecorate %31 RelaxedPrecision
+               OpDecorate %idx RelaxedPrecision
+               OpDecorate %32 RelaxedPrecision
+               OpDecorate %33 RelaxedPrecision
+               OpDecorate %34 RelaxedPrecision
+               OpDecorate %35 RelaxedPrecision
+               OpDecorate %36 RelaxedPrecision
+               OpDecorate %37 RelaxedPrecision
+               OpDecorate %38 RelaxedPrecision
+               OpDecorate %39 RelaxedPrecision
+       %void = OpTypeVoid
+         %41 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %48 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %49 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %50 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %51 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %52 = OpConstantComposite %mat4v3float %48 %49 %50 %51
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+         %61 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+       %main = OpFunction %void None %41
+         %74 = OpLabel
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function
+        %ll1 = OpVariable %_ptr_Function_int Function
+       %rows = OpVariable %_ptr_Function_int Function
+        %ll4 = OpVariable %_ptr_Function_int Function
+        %ll2 = OpVariable %_ptr_Function_int Function
+          %c = OpVariable %_ptr_Function_int Function
+    %tempm43 = OpVariable %_ptr_Function_mat4v3float Function
+        %ll3 = OpVariable %_ptr_Function_int Function
+          %d = OpVariable %_ptr_Function_int Function
+          %r = OpVariable %_ptr_Function_int Function
+       %sums = OpVariable %_ptr_Function__arr_float_uint_9 Function
+        %idx = OpVariable %_ptr_Function_int Function
+               OpStore %m43 %52
+               OpStore %ll1 %int_0
+               OpStore %rows %int_2
+               OpBranch %75
+         %75 = OpLabel
+               OpLoopMerge %76 %77 None
+               OpBranch %78
+         %78 = OpLabel
+               OpBranchConditional %true %79 %76
+         %79 = OpLabel
+               OpStore %_GLF_color %61
+         %16 = OpLoad %int %ll1
+         %80 = OpSGreaterThanEqual %bool %16 %int_5
+               OpSelectionMerge %81 None
+               OpBranchConditional %80 %82 %81
+         %82 = OpLabel
+               OpBranch %76
+         %81 = OpLabel
+         %17 = OpLoad %int %ll1
+         %18 = OpIAdd %int %17 %int_1
+               OpStore %ll1 %18
+               OpStore %ll4 %int_10
+               OpStore %ll2 %int_0
+               OpStore %c %int_0
+               OpBranch %83
+         %83 = OpLabel
+               OpLoopMerge %84 %85 None
+               OpBranch %86
+         %86 = OpLabel
+         %19 = OpLoad %int %c
+         %87 = OpSLessThan %bool %19 %int_1
+               OpBranchConditional %87 %88 %84
+         %88 = OpLabel
+         %20 = OpLoad %int %ll2
+         %89 = OpSGreaterThanEqual %bool %20 %int_0
+               OpSelectionMerge %90 None
+               OpBranchConditional %89 %91 %90
+         %91 = OpLabel
+               OpBranch %84
+         %90 = OpLabel
+         %21 = OpLoad %int %ll2
+         %22 = OpIAdd %int %21 %int_1
+               OpStore %ll2 %22
+         %92 = OpLoad %mat4v3float %m43
+               OpStore %tempm43 %92
+               OpStore %ll3 %int_0
+               OpStore %d %int_0
+               OpBranch %93
+         %93 = OpLabel
+               OpLoopMerge %94 %95 None
+               OpBranch %96
+         %96 = OpLabel
+         %23 = OpLoad %int %ll4
+         %97 = OpSLessThan %bool %int_1 %23
+               OpBranchConditional %97 %98 %94
+         %98 = OpLabel
+         %24 = OpLoad %int %d
+         %99 = OpSGreaterThanEqual %bool %24 %int_0
+         %25 = OpLoad %int %d
+        %100 = OpSLessThan %bool %25 %int_4
+        %101 = OpLogicalAnd %bool %99 %100
+         %26 = OpLoad %int %d
+        %102 = OpSelect %int %101 %26 %int_0
+         %27 = OpLoad %int %r
+        %103 = OpSGreaterThanEqual %bool %27 %int_0
+         %28 = OpLoad %int %r
+        %104 = OpSLessThan %bool %28 %int_3
+        %105 = OpLogicalAnd %bool %103 %104
+         %29 = OpLoad %int %r
+        %106 = OpSelect %int %105 %29 %int_0
+        %107 = OpAccessChain %_ptr_Function_float %tempm43 %102 %106
+               OpStore %107 %float_1
+               OpBranch %95
+         %95 = OpLabel
+         %30 = OpLoad %int %d
+         %31 = OpIAdd %int %30 %int_1
+               OpStore %d %31
+               OpBranch %93
+         %94 = OpLabel
+         %32 = OpLoad %int %idx
+        %108 = OpSGreaterThanEqual %bool %32 %int_0
+         %33 = OpLoad %int %idx
+        %109 = OpSLessThan %bool %33 %int_9
+        %110 = OpLogicalAnd %bool %108 %109
+         %34 = OpLoad %int %idx
+        %111 = OpSelect %int %110 %34 %int_0
+         %35 = OpLoad %int %c
+        %112 = OpAccessChain %_ptr_Function_float %m43 %35 %uint_1
+        %113 = OpLoad %float %112
+        %114 = OpAccessChain %_ptr_Function_float %sums %111
+        %115 = OpLoad %float %114
+        %116 = OpFAdd %float %115 %113
+        %117 = OpAccessChain %_ptr_Function_float %sums %111
+               OpStore %117 %116
+               OpBranch %85
+         %85 = OpLabel
+         %36 = OpLoad %int %c
+         %37 = OpIAdd %int %36 %int_1
+               OpStore %c %37
+               OpBranch %83
+         %84 = OpLabel
+         %38 = OpLoad %int %idx
+         %39 = OpIAdd %int %38 %int_1
+               OpStore %idx %39
+               OpBranch %77
+         %77 = OpLabel
+               OpBranch %75
+         %76 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..26a0704
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,85 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+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);
+  int ll1 = 0;
+  int rows = 0;
+  int ll4 = 0;
+  int ll2 = 0;
+  int c = 0;
+  float4x3 tempm43 = 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);
+  int ll3 = 0;
+  int d = 0;
+  int r = 0;
+  float sums[9] = (float[9])0;
+  int 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));
+  ll1 = 0;
+  rows = 2;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    if ((ll1 >= 5)) {
+      break;
+    }
+    ll1 = (ll1 + 1);
+    ll4 = 10;
+    ll2 = 0;
+    c = 0;
+    {
+      for(; (c < 1); c = (c + 1)) {
+        if ((ll2 >= 0)) {
+          break;
+        }
+        ll2 = (ll2 + 1);
+        tempm43 = m43;
+        ll3 = 0;
+        d = 0;
+        {
+          for(; (1 < ll4); d = (d + 1)) {
+            bool tint_tmp = (d >= 0);
+            if (tint_tmp) {
+              tint_tmp = (d < 4);
+            }
+            bool tint_tmp_1 = (r >= 0);
+            if (tint_tmp_1) {
+              tint_tmp_1 = (r < 3);
+            }
+            set_float3(tempm43[((tint_tmp) ? d : 0)], ((tint_tmp_1) ? r : 0), 1.0f);
+          }
+        }
+        bool tint_tmp_2 = (idx >= 0);
+        if (tint_tmp_2) {
+          tint_tmp_2 = (idx < 9);
+        }
+        const int x_111 = ((tint_tmp_2) ? idx : 0);
+        const float x_113 = m43[c].y;
+        const float x_115 = sums[x_111];
+        sums[x_111] = (x_115 + x_113);
+      }
+    }
+    idx = (idx + 1);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..2070937
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4x3 m43 = float4x3(0.0f);
+  int ll1 = 0;
+  int rows = 0;
+  int ll4 = 0;
+  int ll2 = 0;
+  int c = 0;
+  float4x3 tempm43 = float4x3(0.0f);
+  int ll3 = 0;
+  int d = 0;
+  int r = 0;
+  tint_array_wrapper sums = {};
+  int 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));
+  ll1 = 0;
+  rows = 2;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    int const x_16 = ll1;
+    if ((x_16 >= 5)) {
+      break;
+    }
+    int const x_17 = ll1;
+    ll1 = (x_17 + 1);
+    ll4 = 10;
+    ll2 = 0;
+    c = 0;
+    while (true) {
+      int const x_19 = c;
+      if ((x_19 < 1)) {
+      } else {
+        break;
+      }
+      int const x_20 = ll2;
+      if ((x_20 >= 0)) {
+        break;
+      }
+      int const x_21 = ll2;
+      ll2 = (x_21 + 1);
+      float4x3 const x_92 = m43;
+      tempm43 = x_92;
+      ll3 = 0;
+      d = 0;
+      while (true) {
+        int const x_23 = ll4;
+        if ((1 < x_23)) {
+        } else {
+          break;
+        }
+        int const x_24 = d;
+        int const x_25 = d;
+        int const x_26 = d;
+        int const x_27 = r;
+        int const x_28 = r;
+        int const x_29 = r;
+        tempm43[select(0, x_26, ((x_24 >= 0) && (x_25 < 4)))][select(0, x_29, ((x_27 >= 0) && (x_28 < 3)))] = 1.0f;
+        {
+          int const x_30 = d;
+          d = (x_30 + 1);
+        }
+      }
+      int const x_32 = idx;
+      int const x_33 = idx;
+      int const x_34 = idx;
+      int const x_111 = select(0, x_34, ((x_32 >= 0) && (x_33 < 9)));
+      int const x_35 = c;
+      float const x_113 = m43[x_35].y;
+      float const x_115 = sums.arr[x_111];
+      sums.arr[x_111] = (x_115 + x_113);
+      {
+        int const x_36 = c;
+        c = (x_36 + 1);
+      }
+    }
+    int const x_38 = idx;
+    idx = (x_38 + 1);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..397a1d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,244 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 147
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m43 "m43"
+               OpName %ll1 "ll1"
+               OpName %rows "rows"
+               OpName %ll4 "ll4"
+               OpName %ll2 "ll2"
+               OpName %c "c"
+               OpName %tempm43 "tempm43"
+               OpName %ll3 "ll3"
+               OpName %d "d"
+               OpName %r "r"
+               OpName %sums "sums"
+               OpName %idx "idx"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %16 = OpConstantNull %mat4v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %34 = OpConstantNull %_arr_float_uint_9
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %39 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %40 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %41 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %42 = OpConstantComposite %mat4v3float %38 %39 %40 %41
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+         %54 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+        %135 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function %16
+        %ll1 = OpVariable %_ptr_Function_int Function %20
+       %rows = OpVariable %_ptr_Function_int Function %20
+        %ll4 = OpVariable %_ptr_Function_int Function %20
+        %ll2 = OpVariable %_ptr_Function_int Function %20
+          %c = OpVariable %_ptr_Function_int Function %20
+    %tempm43 = OpVariable %_ptr_Function_mat4v3float Function %16
+        %ll3 = OpVariable %_ptr_Function_int Function %20
+          %d = OpVariable %_ptr_Function_int Function %20
+          %r = OpVariable %_ptr_Function_int Function %20
+       %sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %34
+        %idx = OpVariable %_ptr_Function_int Function %20
+               OpStore %m43 %42
+               OpStore %ll1 %int_0
+               OpStore %rows %int_2
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+               OpSelectionMerge %51 None
+               OpBranchConditional %true %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %46
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+         %55 = OpLoad %int %ll1
+         %57 = OpSGreaterThanEqual %bool %55 %int_5
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpBranch %46
+         %58 = OpLabel
+         %60 = OpLoad %int %ll1
+         %62 = OpIAdd %int %60 %int_1
+               OpStore %ll1 %62
+               OpStore %ll4 %int_10
+               OpStore %ll2 %int_0
+               OpStore %c %int_0
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %c
+         %69 = OpSLessThan %bool %68 %int_1
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %65
+         %70 = OpLabel
+         %73 = OpLoad %int %ll2
+         %74 = OpSGreaterThanEqual %bool %73 %int_0
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+               OpBranch %65
+         %75 = OpLabel
+         %77 = OpLoad %int %ll2
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %ll2 %78
+         %79 = OpLoad %mat4v3float %m43
+               OpStore %tempm43 %79
+               OpStore %ll3 %int_0
+               OpStore %d %int_0
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %ll4
+         %85 = OpSLessThan %bool %int_1 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+               OpBranch %86
+         %88 = OpLabel
+               OpBranch %81
+         %86 = OpLabel
+         %89 = OpLoad %int %d
+         %90 = OpLoad %int %d
+         %91 = OpLoad %int %d
+         %92 = OpLoad %int %r
+         %93 = OpLoad %int %r
+         %94 = OpLoad %int %r
+         %96 = OpSGreaterThanEqual %bool %89 %int_0
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %97
+         %98 = OpLabel
+        %100 = OpSLessThan %bool %90 %int_4
+               OpBranch %97
+         %97 = OpLabel
+        %101 = OpPhi %bool %96 %86 %100 %98
+         %95 = OpSelect %int %101 %91 %int_0
+        %103 = OpSGreaterThanEqual %bool %92 %int_0
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+        %107 = OpSLessThan %bool %93 %int_3
+               OpBranch %104
+        %104 = OpLabel
+        %108 = OpPhi %bool %103 %97 %107 %105
+        %102 = OpSelect %int %108 %94 %int_0
+        %110 = OpAccessChain %_ptr_Function_float %tempm43 %95 %102
+               OpStore %110 %float_1
+               OpBranch %82
+         %82 = OpLabel
+        %111 = OpLoad %int %d
+        %112 = OpIAdd %int %111 %int_1
+               OpStore %d %112
+               OpBranch %80
+         %81 = OpLabel
+        %113 = OpLoad %int %idx
+        %114 = OpLoad %int %idx
+        %115 = OpLoad %int %idx
+        %117 = OpSGreaterThanEqual %bool %113 %int_0
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %121 = OpSLessThan %bool %114 %int_9
+               OpBranch %118
+        %118 = OpLabel
+        %122 = OpPhi %bool %117 %81 %121 %119
+        %116 = OpSelect %int %122 %115 %int_0
+        %123 = OpLoad %int %c
+        %125 = OpAccessChain %_ptr_Function_float %m43 %123 %uint_1
+        %126 = OpLoad %float %125
+        %127 = OpAccessChain %_ptr_Function_float %sums %116
+        %128 = OpLoad %float %127
+        %129 = OpAccessChain %_ptr_Function_float %sums %116
+        %130 = OpFAdd %float %128 %126
+               OpStore %129 %130
+               OpBranch %66
+         %66 = OpLabel
+        %131 = OpLoad %int %c
+        %132 = OpIAdd %int %131 %int_1
+               OpStore %c %132
+               OpBranch %64
+         %65 = OpLabel
+        %133 = OpLoad %int %idx
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %idx %134
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %45
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %135
+%tint_symbol = OpFunctionParameter %main_out
+        %139 = OpLabel
+        %140 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %140
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+        %142 = OpLabel
+        %143 = OpFunctionCall %void %main_1
+        %145 = OpLoad %v4float %x_GLF_color
+        %146 = OpCompositeConstruct %main_out %145
+        %144 = OpFunctionCall %void %tint_symbol_2 %146
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..dd18573
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,98 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m43 : mat4x3<f32>;
+  var ll1 : i32;
+  var rows : i32;
+  var ll4 : i32;
+  var ll2 : i32;
+  var c : i32;
+  var tempm43 : mat4x3<f32>;
+  var ll3 : i32;
+  var d : i32;
+  var r : i32;
+  var sums : array<f32, 9>;
+  var idx : i32;
+  m43 = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
+  ll1 = 0;
+  rows = 2;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    let x_16 : i32 = ll1;
+    if ((x_16 >= 5)) {
+      break;
+    }
+    let x_17 : i32 = ll1;
+    ll1 = (x_17 + 1);
+    ll4 = 10;
+    ll2 = 0;
+    c = 0;
+    loop {
+      let x_19 : i32 = c;
+      if ((x_19 < 1)) {
+      } else {
+        break;
+      }
+      let x_20 : i32 = ll2;
+      if ((x_20 >= 0)) {
+        break;
+      }
+      let x_21 : i32 = ll2;
+      ll2 = (x_21 + 1);
+      let x_92 : mat4x3<f32> = m43;
+      tempm43 = x_92;
+      ll3 = 0;
+      d = 0;
+      loop {
+        let x_23 : i32 = ll4;
+        if ((1 < x_23)) {
+        } else {
+          break;
+        }
+        let x_24 : i32 = d;
+        let x_25 : i32 = d;
+        let x_26 : i32 = d;
+        let x_27 : i32 = r;
+        let x_28 : i32 = r;
+        let x_29 : i32 = r;
+        tempm43[select(0, x_26, ((x_24 >= 0) && (x_25 < 4)))][select(0, x_29, ((x_27 >= 0) && (x_28 < 3)))] = 1.0;
+
+        continuing {
+          let x_30 : i32 = d;
+          d = (x_30 + 1);
+        }
+      }
+      let x_32 : i32 = idx;
+      let x_33 : i32 = idx;
+      let x_34 : i32 = idx;
+      let x_111 : i32 = select(0, x_34, ((x_32 >= 0) && (x_33 < 9)));
+      let x_35 : i32 = c;
+      let x_113 : f32 = m43[x_35].y;
+      let x_115 : f32 = sums[x_111];
+      sums[x_111] = (x_115 + x_113);
+
+      continuing {
+        let x_36 : i32 = c;
+        c = (x_36 + 1);
+      }
+    }
+    let x_38 : i32 = idx;
+    idx = (x_38 + 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
new file mode 100644
index 0000000..dd18573
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
@@ -0,0 +1,98 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m43 : mat4x3<f32>;
+  var ll1 : i32;
+  var rows : i32;
+  var ll4 : i32;
+  var ll2 : i32;
+  var c : i32;
+  var tempm43 : mat4x3<f32>;
+  var ll3 : i32;
+  var d : i32;
+  var r : i32;
+  var sums : array<f32, 9>;
+  var idx : i32;
+  m43 = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
+  ll1 = 0;
+  rows = 2;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    let x_16 : i32 = ll1;
+    if ((x_16 >= 5)) {
+      break;
+    }
+    let x_17 : i32 = ll1;
+    ll1 = (x_17 + 1);
+    ll4 = 10;
+    ll2 = 0;
+    c = 0;
+    loop {
+      let x_19 : i32 = c;
+      if ((x_19 < 1)) {
+      } else {
+        break;
+      }
+      let x_20 : i32 = ll2;
+      if ((x_20 >= 0)) {
+        break;
+      }
+      let x_21 : i32 = ll2;
+      ll2 = (x_21 + 1);
+      let x_92 : mat4x3<f32> = m43;
+      tempm43 = x_92;
+      ll3 = 0;
+      d = 0;
+      loop {
+        let x_23 : i32 = ll4;
+        if ((1 < x_23)) {
+        } else {
+          break;
+        }
+        let x_24 : i32 = d;
+        let x_25 : i32 = d;
+        let x_26 : i32 = d;
+        let x_27 : i32 = r;
+        let x_28 : i32 = r;
+        let x_29 : i32 = r;
+        tempm43[select(0, x_26, ((x_24 >= 0) && (x_25 < 4)))][select(0, x_29, ((x_27 >= 0) && (x_28 < 3)))] = 1.0;
+
+        continuing {
+          let x_30 : i32 = d;
+          d = (x_30 + 1);
+        }
+      }
+      let x_32 : i32 = idx;
+      let x_33 : i32 = idx;
+      let x_34 : i32 = idx;
+      let x_111 : i32 = select(0, x_34, ((x_32 >= 0) && (x_33 < 9)));
+      let x_35 : i32 = c;
+      let x_113 : f32 = m43[x_35].y;
+      let x_115 : f32 = sums[x_111];
+      sums[x_111] = (x_115 + x_113);
+
+      continuing {
+        let x_36 : i32 = c;
+        c = (x_36 + 1);
+      }
+    }
+    let x_38 : i32 = idx;
+    idx = (x_38 + 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..26a0704
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,85 @@
+void set_float3(inout float3 vec, int idx, float val) {
+  vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
+}
+
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+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);
+  int ll1 = 0;
+  int rows = 0;
+  int ll4 = 0;
+  int ll2 = 0;
+  int c = 0;
+  float4x3 tempm43 = 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);
+  int ll3 = 0;
+  int d = 0;
+  int r = 0;
+  float sums[9] = (float[9])0;
+  int 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));
+  ll1 = 0;
+  rows = 2;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    if ((ll1 >= 5)) {
+      break;
+    }
+    ll1 = (ll1 + 1);
+    ll4 = 10;
+    ll2 = 0;
+    c = 0;
+    {
+      for(; (c < 1); c = (c + 1)) {
+        if ((ll2 >= 0)) {
+          break;
+        }
+        ll2 = (ll2 + 1);
+        tempm43 = m43;
+        ll3 = 0;
+        d = 0;
+        {
+          for(; (1 < ll4); d = (d + 1)) {
+            bool tint_tmp = (d >= 0);
+            if (tint_tmp) {
+              tint_tmp = (d < 4);
+            }
+            bool tint_tmp_1 = (r >= 0);
+            if (tint_tmp_1) {
+              tint_tmp_1 = (r < 3);
+            }
+            set_float3(tempm43[((tint_tmp) ? d : 0)], ((tint_tmp_1) ? r : 0), 1.0f);
+          }
+        }
+        bool tint_tmp_2 = (idx >= 0);
+        if (tint_tmp_2) {
+          tint_tmp_2 = (idx < 9);
+        }
+        const int x_111 = ((tint_tmp_2) ? idx : 0);
+        const float x_113 = m43[c].y;
+        const float x_115 = sums[x_111];
+        sums[x_111] = (x_115 + x_113);
+      }
+    }
+    idx = (idx + 1);
+  }
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..2070937
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.msl
@@ -0,0 +1,105 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[9];
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  float4x3 m43 = float4x3(0.0f);
+  int ll1 = 0;
+  int rows = 0;
+  int ll4 = 0;
+  int ll2 = 0;
+  int c = 0;
+  float4x3 tempm43 = float4x3(0.0f);
+  int ll3 = 0;
+  int d = 0;
+  int r = 0;
+  tint_array_wrapper sums = {};
+  int 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));
+  ll1 = 0;
+  rows = 2;
+  while (true) {
+    if (true) {
+    } else {
+      break;
+    }
+    *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    int const x_16 = ll1;
+    if ((x_16 >= 5)) {
+      break;
+    }
+    int const x_17 = ll1;
+    ll1 = (x_17 + 1);
+    ll4 = 10;
+    ll2 = 0;
+    c = 0;
+    while (true) {
+      int const x_19 = c;
+      if ((x_19 < 1)) {
+      } else {
+        break;
+      }
+      int const x_20 = ll2;
+      if ((x_20 >= 0)) {
+        break;
+      }
+      int const x_21 = ll2;
+      ll2 = (x_21 + 1);
+      float4x3 const x_92 = m43;
+      tempm43 = x_92;
+      ll3 = 0;
+      d = 0;
+      while (true) {
+        int const x_23 = ll4;
+        if ((1 < x_23)) {
+        } else {
+          break;
+        }
+        int const x_24 = d;
+        int const x_25 = d;
+        int const x_26 = d;
+        int const x_27 = r;
+        int const x_28 = r;
+        int const x_29 = r;
+        tempm43[select(0, x_26, ((x_24 >= 0) && (x_25 < 4)))][select(0, x_29, ((x_27 >= 0) && (x_28 < 3)))] = 1.0f;
+        {
+          int const x_30 = d;
+          d = (x_30 + 1);
+        }
+      }
+      int const x_32 = idx;
+      int const x_33 = idx;
+      int const x_34 = idx;
+      int const x_111 = select(0, x_34, ((x_32 >= 0) && (x_33 < 9)));
+      int const x_35 = c;
+      float const x_113 = m43[x_35].y;
+      float const x_115 = sums.arr[x_111];
+      sums.arr[x_111] = (x_115 + x_113);
+      {
+        int const x_36 = c;
+        c = (x_36 + 1);
+      }
+    }
+    int const x_38 = idx;
+    idx = (x_38 + 1);
+  }
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..397a1d8
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,244 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 147
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %m43 "m43"
+               OpName %ll1 "ll1"
+               OpName %rows "rows"
+               OpName %ll4 "ll4"
+               OpName %ll2 "ll2"
+               OpName %c "c"
+               OpName %tempm43 "tempm43"
+               OpName %ll3 "ll3"
+               OpName %d "d"
+               OpName %r "r"
+               OpName %sums "sums"
+               OpName %idx "idx"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %_arr_float_uint_9 ArrayStride 4
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %v3float = OpTypeVector %float 3
+%mat4v3float = OpTypeMatrix %v3float 4
+%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
+         %16 = OpConstantNull %mat4v3float
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %20 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %uint_9 = OpConstant %uint 9
+%_arr_float_uint_9 = OpTypeArray %float %uint_9
+%_ptr_Function__arr_float_uint_9 = OpTypePointer Function %_arr_float_uint_9
+         %34 = OpConstantNull %_arr_float_uint_9
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %38 = OpConstantComposite %v3float %float_1 %float_0 %float_0
+         %39 = OpConstantComposite %v3float %float_0 %float_1 %float_0
+         %40 = OpConstantComposite %v3float %float_0 %float_0 %float_1
+         %41 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+         %42 = OpConstantComposite %mat4v3float %38 %39 %40 %41
+      %int_0 = OpConstant %int 0
+      %int_2 = OpConstant %int 2
+       %bool = OpTypeBool
+       %true = OpConstantTrue %bool
+         %54 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+      %int_5 = OpConstant %int 5
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+      %int_4 = OpConstant %int 4
+      %int_3 = OpConstant %int 3
+%_ptr_Function_float = OpTypePointer Function %float
+      %int_9 = OpConstant %int 9
+     %uint_1 = OpConstant %uint 1
+   %main_out = OpTypeStruct %v4float
+        %135 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+        %m43 = OpVariable %_ptr_Function_mat4v3float Function %16
+        %ll1 = OpVariable %_ptr_Function_int Function %20
+       %rows = OpVariable %_ptr_Function_int Function %20
+        %ll4 = OpVariable %_ptr_Function_int Function %20
+        %ll2 = OpVariable %_ptr_Function_int Function %20
+          %c = OpVariable %_ptr_Function_int Function %20
+    %tempm43 = OpVariable %_ptr_Function_mat4v3float Function %16
+        %ll3 = OpVariable %_ptr_Function_int Function %20
+          %d = OpVariable %_ptr_Function_int Function %20
+          %r = OpVariable %_ptr_Function_int Function %20
+       %sums = OpVariable %_ptr_Function__arr_float_uint_9 Function %34
+        %idx = OpVariable %_ptr_Function_int Function %20
+               OpStore %m43 %42
+               OpStore %ll1 %int_0
+               OpStore %rows %int_2
+               OpBranch %45
+         %45 = OpLabel
+               OpLoopMerge %46 %47 None
+               OpBranch %48
+         %48 = OpLabel
+               OpSelectionMerge %51 None
+               OpBranchConditional %true %52 %53
+         %52 = OpLabel
+               OpBranch %51
+         %53 = OpLabel
+               OpBranch %46
+         %51 = OpLabel
+               OpStore %x_GLF_color %54
+         %55 = OpLoad %int %ll1
+         %57 = OpSGreaterThanEqual %bool %55 %int_5
+               OpSelectionMerge %58 None
+               OpBranchConditional %57 %59 %58
+         %59 = OpLabel
+               OpBranch %46
+         %58 = OpLabel
+         %60 = OpLoad %int %ll1
+         %62 = OpIAdd %int %60 %int_1
+               OpStore %ll1 %62
+               OpStore %ll4 %int_10
+               OpStore %ll2 %int_0
+               OpStore %c %int_0
+               OpBranch %64
+         %64 = OpLabel
+               OpLoopMerge %65 %66 None
+               OpBranch %67
+         %67 = OpLabel
+         %68 = OpLoad %int %c
+         %69 = OpSLessThan %bool %68 %int_1
+               OpSelectionMerge %70 None
+               OpBranchConditional %69 %71 %72
+         %71 = OpLabel
+               OpBranch %70
+         %72 = OpLabel
+               OpBranch %65
+         %70 = OpLabel
+         %73 = OpLoad %int %ll2
+         %74 = OpSGreaterThanEqual %bool %73 %int_0
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %75
+         %76 = OpLabel
+               OpBranch %65
+         %75 = OpLabel
+         %77 = OpLoad %int %ll2
+         %78 = OpIAdd %int %77 %int_1
+               OpStore %ll2 %78
+         %79 = OpLoad %mat4v3float %m43
+               OpStore %tempm43 %79
+               OpStore %ll3 %int_0
+               OpStore %d %int_0
+               OpBranch %80
+         %80 = OpLabel
+               OpLoopMerge %81 %82 None
+               OpBranch %83
+         %83 = OpLabel
+         %84 = OpLoad %int %ll4
+         %85 = OpSLessThan %bool %int_1 %84
+               OpSelectionMerge %86 None
+               OpBranchConditional %85 %87 %88
+         %87 = OpLabel
+               OpBranch %86
+         %88 = OpLabel
+               OpBranch %81
+         %86 = OpLabel
+         %89 = OpLoad %int %d
+         %90 = OpLoad %int %d
+         %91 = OpLoad %int %d
+         %92 = OpLoad %int %r
+         %93 = OpLoad %int %r
+         %94 = OpLoad %int %r
+         %96 = OpSGreaterThanEqual %bool %89 %int_0
+               OpSelectionMerge %97 None
+               OpBranchConditional %96 %98 %97
+         %98 = OpLabel
+        %100 = OpSLessThan %bool %90 %int_4
+               OpBranch %97
+         %97 = OpLabel
+        %101 = OpPhi %bool %96 %86 %100 %98
+         %95 = OpSelect %int %101 %91 %int_0
+        %103 = OpSGreaterThanEqual %bool %92 %int_0
+               OpSelectionMerge %104 None
+               OpBranchConditional %103 %105 %104
+        %105 = OpLabel
+        %107 = OpSLessThan %bool %93 %int_3
+               OpBranch %104
+        %104 = OpLabel
+        %108 = OpPhi %bool %103 %97 %107 %105
+        %102 = OpSelect %int %108 %94 %int_0
+        %110 = OpAccessChain %_ptr_Function_float %tempm43 %95 %102
+               OpStore %110 %float_1
+               OpBranch %82
+         %82 = OpLabel
+        %111 = OpLoad %int %d
+        %112 = OpIAdd %int %111 %int_1
+               OpStore %d %112
+               OpBranch %80
+         %81 = OpLabel
+        %113 = OpLoad %int %idx
+        %114 = OpLoad %int %idx
+        %115 = OpLoad %int %idx
+        %117 = OpSGreaterThanEqual %bool %113 %int_0
+               OpSelectionMerge %118 None
+               OpBranchConditional %117 %119 %118
+        %119 = OpLabel
+        %121 = OpSLessThan %bool %114 %int_9
+               OpBranch %118
+        %118 = OpLabel
+        %122 = OpPhi %bool %117 %81 %121 %119
+        %116 = OpSelect %int %122 %115 %int_0
+        %123 = OpLoad %int %c
+        %125 = OpAccessChain %_ptr_Function_float %m43 %123 %uint_1
+        %126 = OpLoad %float %125
+        %127 = OpAccessChain %_ptr_Function_float %sums %116
+        %128 = OpLoad %float %127
+        %129 = OpAccessChain %_ptr_Function_float %sums %116
+        %130 = OpFAdd %float %128 %126
+               OpStore %129 %130
+               OpBranch %66
+         %66 = OpLabel
+        %131 = OpLoad %int %c
+        %132 = OpIAdd %int %131 %int_1
+               OpStore %c %132
+               OpBranch %64
+         %65 = OpLabel
+        %133 = OpLoad %int %idx
+        %134 = OpIAdd %int %133 %int_1
+               OpStore %idx %134
+               OpBranch %47
+         %47 = OpLabel
+               OpBranch %45
+         %46 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %135
+%tint_symbol = OpFunctionParameter %main_out
+        %139 = OpLabel
+        %140 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %140
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+        %142 = OpLabel
+        %143 = OpFunctionCall %void %main_1
+        %145 = OpLoad %v4float %x_GLF_color
+        %146 = OpCompositeConstruct %main_out %145
+        %144 = OpFunctionCall %void %tint_symbol_2 %146
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..dd18573
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,98 @@
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var m43 : mat4x3<f32>;
+  var ll1 : i32;
+  var rows : i32;
+  var ll4 : i32;
+  var ll2 : i32;
+  var c : i32;
+  var tempm43 : mat4x3<f32>;
+  var ll3 : i32;
+  var d : i32;
+  var r : i32;
+  var sums : array<f32, 9>;
+  var idx : i32;
+  m43 = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
+  ll1 = 0;
+  rows = 2;
+  loop {
+    if (true) {
+    } else {
+      break;
+    }
+    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+    let x_16 : i32 = ll1;
+    if ((x_16 >= 5)) {
+      break;
+    }
+    let x_17 : i32 = ll1;
+    ll1 = (x_17 + 1);
+    ll4 = 10;
+    ll2 = 0;
+    c = 0;
+    loop {
+      let x_19 : i32 = c;
+      if ((x_19 < 1)) {
+      } else {
+        break;
+      }
+      let x_20 : i32 = ll2;
+      if ((x_20 >= 0)) {
+        break;
+      }
+      let x_21 : i32 = ll2;
+      ll2 = (x_21 + 1);
+      let x_92 : mat4x3<f32> = m43;
+      tempm43 = x_92;
+      ll3 = 0;
+      d = 0;
+      loop {
+        let x_23 : i32 = ll4;
+        if ((1 < x_23)) {
+        } else {
+          break;
+        }
+        let x_24 : i32 = d;
+        let x_25 : i32 = d;
+        let x_26 : i32 = d;
+        let x_27 : i32 = r;
+        let x_28 : i32 = r;
+        let x_29 : i32 = r;
+        tempm43[select(0, x_26, ((x_24 >= 0) && (x_25 < 4)))][select(0, x_29, ((x_27 >= 0) && (x_28 < 3)))] = 1.0;
+
+        continuing {
+          let x_30 : i32 = d;
+          d = (x_30 + 1);
+        }
+      }
+      let x_32 : i32 = idx;
+      let x_33 : i32 = idx;
+      let x_34 : i32 = idx;
+      let x_111 : i32 = select(0, x_34, ((x_32 >= 0) && (x_33 < 9)));
+      let x_35 : i32 = c;
+      let x_113 : f32 = m43[x_35].y;
+      let x_115 : f32 = sums[x_111];
+      sums[x_111] = (x_115 + x_113);
+
+      continuing {
+        let x_36 : i32 = c;
+        c = (x_36 + 1);
+      }
+    }
+    let x_38 : i32 = idx;
+    idx = (x_38 + 1);
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm
new file mode 100644
index 0000000..04eff6c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm
@@ -0,0 +1,70 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %_GLF_color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource ESSL 310
+               OpName %main "main"
+               OpName %height "height"
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %_ ""
+               OpName %_GLF_color "_GLF_color"
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %buf0 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 0
+               OpDecorate %_GLF_color Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+  %float_256 = OpConstant %float 256
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %_GLF_color = OpVariable %_ptr_Output_v4float Output
+%float_30_1800003 = OpConstant %float 30.1800003
+%float_8840 = OpConstant %float 8840.0
+%float_469_970001 = OpConstant %float 469.970001
+%float_18_2399998 = OpConstant %float 18.2399998
+         %27 = OpConstantComposite %v4float %float_30_1800003 %float_8840 %float_469_970001 %float_18_2399998
+%float_9_89999962 = OpConstant %float 9.89999962
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_1169_5387 = OpConstant %float 1169.5387
+%float_55_7900009 = OpConstant %float 55.7900009
+         %32 = OpConstantComposite %v4float %float_9_89999962 %float_0_100000001 %float_1169_5387 %float_55_7900009
+%float_7612_94531 = OpConstant %float 7612.94531
+%float_797_010986 = OpConstant %float 797.010986
+    %float_9 = OpConstant %float 9
+    %float_1 = OpConstant %float 1
+         %37 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+       %main = OpFunction %void None %8
+         %38 = OpLabel
+     %height = OpVariable %_ptr_Function_float Function
+               OpStore %height %float_256
+         %39 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %uint_1
+         %40 = OpLoad %float %39
+         %41 = OpFOrdLessThan %bool %40 %float_0
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %44 = OpLoad %float %height
+         %45 = OpCompositeConstruct %v4float %float_7612_94531 %float_797_010986 %44 %float_9
+         %46 = OpExtInst %v4float %1 FMix %27 %32 %45
+               OpStore %_GLF_color %46
+               OpBranch %42
+         %42 = OpLabel
+               OpStore %_GLF_color %37
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c608e00
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,29 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float height = 0.0f;
+  height = 256.0f;
+  const float x_40 = asfloat(x_6[0].y);
+  if ((x_40 < 0.0f)) {
+    x_GLF_color = lerp(float4(30.180000305f, 8840.0f, 469.970001221f, 18.239999771f), float4(9.899999619f, 0.100000001f, 1169.538696289f, 55.790000916f), float4(7612.9453125f, 797.010986328f, height, 9.0f));
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.msl b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..25fe33c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float height = 0.0f;
+  height = 256.0f;
+  float const x_40 = x_6.injectionSwitch.y;
+  if ((x_40 < 0.0f)) {
+    float const x_44 = height;
+    *(tint_symbol_4) = mix(float4(30.180000305f, 8840.0f, 469.970001221f, 18.239999771f), float4(9.899999619f, 0.100000001f, 1169.538696289f, 55.790000916f), float4(7612.9453125f, 797.010986328f, x_44, 9.0f));
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..864cc6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,102 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+         %33 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %height "height"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+  %float_256 = OpConstant %float 256
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+%float_30_1800003 = OpConstant %float 30.1800003
+ %float_8840 = OpConstant %float 8840
+%float_469_970001 = OpConstant %float 469.970001
+%float_18_2399998 = OpConstant %float 18.2399998
+         %38 = OpConstantComposite %v4float %float_30_1800003 %float_8840 %float_469_970001 %float_18_2399998
+%float_9_89999962 = OpConstant %float 9.89999962
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_1169_5387 = OpConstant %float 1169.5387
+%float_55_7900009 = OpConstant %float 55.7900009
+         %43 = OpConstantComposite %v4float %float_9_89999962 %float_0_100000001 %float_1169_5387 %float_55_7900009
+%float_7612_94531 = OpConstant %float 7612.94531
+%float_797_010986 = OpConstant %float 797.010986
+    %float_9 = OpConstant %float 9
+    %float_1 = OpConstant %float 1
+         %49 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+     %height = OpVariable %_ptr_Function_float Function %18
+               OpStore %height %float_256
+         %24 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %25 = OpLoad %float %24
+         %27 = OpFOrdLessThan %bool %25 %float_0
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %29
+         %30 = OpLabel
+         %31 = OpLoad %float %height
+         %47 = OpCompositeConstruct %v4float %float_7612_94531 %float_797_010986 %31 %float_9
+         %32 = OpExtInst %v4float %33 FMix %38 %43 %47
+               OpStore %x_GLF_color %32
+               OpBranch %29
+         %29 = OpLabel
+               OpStore %x_GLF_color %49
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a5f11f5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,31 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var height : f32;
+  height = 256.0;
+  let x_40 : f32 = x_6.injectionSwitch.y;
+  if ((x_40 < 0.0)) {
+    let x_44 : f32 = height;
+    x_GLF_color = mix(vec4<f32>(30.180000305, 8840.0, 469.970001221, 18.239999771), vec4<f32>(9.899999619, 0.100000001, 1169.538696289, 55.790000916), vec4<f32>(7612.9453125, 797.010986328, x_44, 9.0));
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
new file mode 100644
index 0000000..a5f11f5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
@@ -0,0 +1,31 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var height : f32;
+  height = 256.0;
+  let x_40 : f32 = x_6.injectionSwitch.y;
+  if ((x_40 < 0.0)) {
+    let x_44 : f32 = height;
+    x_GLF_color = mix(vec4<f32>(30.180000305, 8840.0, 469.970001221, 18.239999771), vec4<f32>(9.899999619, 0.100000001, 1169.538696289, 55.790000916), vec4<f32>(7612.9453125, 797.010986328, x_44, 9.0));
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c608e00
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,29 @@
+cbuffer cbuffer_x_6 : register(b0, space0) {
+  uint4 x_6[1];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float height = 0.0f;
+  height = 256.0f;
+  const float x_40 = asfloat(x_6[0].y);
+  if ((x_40 < 0.0f)) {
+    x_GLF_color = lerp(float4(30.180000305f, 8840.0f, 469.970001221f, 18.239999771f), float4(9.899999619f, 0.100000001f, 1169.538696289f, 55.790000916f), float4(7612.9453125f, 797.010986328f, height, 9.0f));
+  }
+  x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol {
+  float4 x_GLF_color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {x_GLF_color};
+  const tint_symbol tint_symbol_3 = {tint_symbol_1.x_GLF_color_1};
+  return tint_symbol_3;
+}
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.msl b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..25fe33c
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct buf0 {
+  /* 0x0000 */ packed_float2 injectionSwitch;
+};
+struct main_out {
+  float4 x_GLF_color_1;
+};
+struct tint_symbol_1 {
+  float4 x_GLF_color_1 [[color(0)]];
+};
+
+void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
+  float height = 0.0f;
+  height = 256.0f;
+  float const x_40 = x_6.injectionSwitch.y;
+  if ((x_40 < 0.0f)) {
+    float const x_44 = height;
+    *(tint_symbol_4) = mix(float4(30.180000305f, 8840.0f, 469.970001221f, 18.239999771f), float4(9.899999619f, 0.100000001f, 1169.538696289f, 55.790000916f), float4(7612.9453125f, 797.010986328f, x_44, 9.0f));
+  }
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol(constant buf0& x_6 [[buffer(0)]]) {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(x_6, &(tint_symbol_5));
+  main_out const tint_symbol_2 = {.x_GLF_color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.x_GLF_color_1=tint_symbol_2.x_GLF_color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..864cc6d
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,102 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+         %33 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %buf0 "buf0"
+               OpMemberName %buf0 0 "injectionSwitch"
+               OpName %x_6 "x_6"
+               OpName %x_GLF_color "x_GLF_color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %height "height"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_GLF_color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %buf0 Block
+               OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_6 NonWritable
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+       %buf0 = OpTypeStruct %v2float
+%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
+        %x_6 = OpVariable %_ptr_Uniform_buf0 Uniform
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %9 = OpConstantNull %v4float
+%x_GLF_color = OpVariable %_ptr_Private_v4float Private %9
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %9
+       %void = OpTypeVoid
+         %12 = OpTypeFunction %void
+%_ptr_Function_float = OpTypePointer Function %float
+         %18 = OpConstantNull %float
+  %float_256 = OpConstant %float 256
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_ptr_Uniform_float = OpTypePointer Uniform %float
+    %float_0 = OpConstant %float 0
+       %bool = OpTypeBool
+%float_30_1800003 = OpConstant %float 30.1800003
+ %float_8840 = OpConstant %float 8840
+%float_469_970001 = OpConstant %float 469.970001
+%float_18_2399998 = OpConstant %float 18.2399998
+         %38 = OpConstantComposite %v4float %float_30_1800003 %float_8840 %float_469_970001 %float_18_2399998
+%float_9_89999962 = OpConstant %float 9.89999962
+%float_0_100000001 = OpConstant %float 0.100000001
+%float_1169_5387 = OpConstant %float 1169.5387
+%float_55_7900009 = OpConstant %float 55.7900009
+         %43 = OpConstantComposite %v4float %float_9_89999962 %float_0_100000001 %float_1169_5387 %float_55_7900009
+%float_7612_94531 = OpConstant %float 7612.94531
+%float_797_010986 = OpConstant %float 797.010986
+    %float_9 = OpConstant %float 9
+    %float_1 = OpConstant %float 1
+         %49 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+   %main_out = OpTypeStruct %v4float
+         %50 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %12
+         %15 = OpLabel
+     %height = OpVariable %_ptr_Function_float Function %18
+               OpStore %height %float_256
+         %24 = OpAccessChain %_ptr_Uniform_float %x_6 %uint_0 %uint_1
+         %25 = OpLoad %float %24
+         %27 = OpFOrdLessThan %bool %25 %float_0
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %29
+         %30 = OpLabel
+         %31 = OpLoad %float %height
+         %47 = OpCompositeConstruct %v4float %float_7612_94531 %float_797_010986 %31 %float_9
+         %32 = OpExtInst %v4float %33 FMix %38 %43 %47
+               OpStore %x_GLF_color %32
+               OpBranch %29
+         %29 = OpLabel
+               OpStore %x_GLF_color %49
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %50
+%tint_symbol = OpFunctionParameter %main_out
+         %54 = OpLabel
+         %55 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %55
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %12
+         %57 = OpLabel
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %v4float %x_GLF_color
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_2 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a5f11f5
--- /dev/null
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,31 @@
+[[block]]
+struct buf0 {
+  injectionSwitch : vec2<f32>;
+};
+
+[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+
+var<private> x_GLF_color : vec4<f32>;
+
+fn main_1() {
+  var height : f32;
+  height = 256.0;
+  let x_40 : f32 = x_6.injectionSwitch.y;
+  if ((x_40 < 0.0)) {
+    let x_44 : f32 = height;
+    x_GLF_color = mix(vec4<f32>(30.180000305, 8840.0, 469.970001221, 18.239999771), vec4<f32>(9.899999619, 0.100000001, 1169.538696289, 55.790000916), vec4<f32>(7612.9453125, 797.010986328, x_44, 9.0));
+  }
+  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_GLF_color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(x_GLF_color);
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm
new file mode 100644
index 0000000..cc4f09d
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm
@@ -0,0 +1,209 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %gl_WorkGroupID
+               OpExecutionMode %main LocalSize 4 1 1
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %base_index_in "base_index_in"
+               OpName %gl_WorkGroupID "gl_WorkGroupID"
+               OpName %base_index_out "base_index_out"
+               OpName %index_in0 "index_in0"
+               OpName %index_in1 "index_in1"
+               OpName %index_out0 "index_out0"
+               OpName %index_out1 "index_out1"
+               OpName %condition_index "condition_index"
+               OpName %i "i"
+               OpName %In2 "In2"
+               OpMemberName %In2 0 "data_in2"
+               OpName %_ ""
+               OpName %Out0 "Out0"
+               OpMemberName %Out0 0 "data_out0"
+               OpName %__0 ""
+               OpName %In1 "In1"
+               OpMemberName %In1 0 "data_in1"
+               OpName %__1 ""
+               OpName %In0 "In0"
+               OpMemberName %In0 0 "data_in0"
+               OpName %__2 ""
+               OpName %temp0 "temp0"
+               OpName %temp1 "temp1"
+               OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId
+               OpDecorate %_arr_int_uint_8 ArrayStride 4
+               OpMemberDecorate %In2 0 NonWritable
+               OpMemberDecorate %In2 0 Offset 0
+               OpDecorate %In2 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 2
+               OpDecorate %_arr_int_uint_1024 ArrayStride 4
+               OpMemberDecorate %Out0 0 NonReadable
+               OpMemberDecorate %Out0 0 Offset 0
+               OpDecorate %Out0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 3
+               OpDecorate %_arr_int_uint_512 ArrayStride 4
+               OpMemberDecorate %In1 0 NonWritable
+               OpMemberDecorate %In1 0 Offset 0
+               OpDecorate %In1 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 1
+               OpDecorate %_arr_int_uint_512_0 ArrayStride 4
+               OpMemberDecorate %In0 0 NonWritable
+               OpMemberDecorate %In0 0 Offset 0
+               OpDecorate %In0 Block
+               OpDecorate %__2 DescriptorSet 0
+               OpDecorate %__2 Binding 0
+               OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
+       %void = OpTypeVoid
+         %28 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+   %uint_128 = OpConstant %uint 128
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+   %uint_256 = OpConstant %uint 256
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+    %int_127 = OpConstant %int 127
+    %int_383 = OpConstant %int 383
+    %int_255 = OpConstant %int 255
+      %int_0 = OpConstant %int 0
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+     %uint_8 = OpConstant %uint 8
+%_arr_int_uint_8 = OpTypeArray %int %uint_8
+        %In2 = OpTypeStruct %_arr_int_uint_8
+%_ptr_StorageBuffer_In2 = OpTypePointer StorageBuffer %In2
+          %_ = OpVariable %_ptr_StorageBuffer_In2 StorageBuffer
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+  %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+       %Out0 = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_Out0 = OpTypePointer StorageBuffer %Out0
+        %__0 = OpVariable %_ptr_StorageBuffer_Out0 StorageBuffer
+   %uint_512 = OpConstant %uint 512
+%_arr_int_uint_512 = OpTypeArray %int %uint_512
+        %In1 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In1 = OpTypePointer StorageBuffer %In1
+        %__1 = OpVariable %_ptr_StorageBuffer_In1 StorageBuffer
+      %int_1 = OpConstant %int 1
+%_arr_int_uint_512_0 = OpTypeArray %int %uint_512
+        %In0 = OpTypeStruct %_arr_int_uint_512_0
+%_ptr_StorageBuffer_In0 = OpTypePointer StorageBuffer %In0
+        %__2 = OpVariable %_ptr_StorageBuffer_In0 StorageBuffer
+     %uint_4 = OpConstant %uint 4
+     %uint_1 = OpConstant %uint 1
+%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_4 %uint_1 %uint_1
+       %main = OpFunction %void None %28
+         %56 = OpLabel
+%base_index_in = OpVariable %_ptr_Function_uint Function
+%base_index_out = OpVariable %_ptr_Function_uint Function
+  %index_in0 = OpVariable %_ptr_Function_int Function
+  %index_in1 = OpVariable %_ptr_Function_int Function
+ %index_out0 = OpVariable %_ptr_Function_int Function
+ %index_out1 = OpVariable %_ptr_Function_int Function
+%condition_index = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+      %temp0 = OpVariable %_ptr_Function_int Function
+      %temp1 = OpVariable %_ptr_Function_int Function
+         %57 = OpAccessChain %_ptr_Input_uint %gl_WorkGroupID %uint_0
+         %58 = OpLoad %uint %57
+         %59 = OpIMul %uint %uint_128 %58
+               OpStore %base_index_in %59
+         %60 = OpAccessChain %_ptr_Input_uint %gl_WorkGroupID %uint_0
+         %61 = OpLoad %uint %60
+         %62 = OpIMul %uint %uint_256 %61
+               OpStore %base_index_out %62
+               OpStore %index_in0 %int_127
+               OpStore %index_in1 %int_383
+               OpStore %index_out0 %int_255
+               OpStore %index_out1 %int_383
+               OpStore %condition_index %int_0
+               OpStore %i %int_0
+               OpBranch %63
+         %63 = OpLabel
+               OpLoopMerge %64 %65 None
+               OpBranch %66
+         %66 = OpLabel
+         %67 = OpLoad %int %i
+         %68 = OpSLessThan %bool %67 %int_256
+               OpBranchConditional %68 %69 %64
+         %69 = OpLabel
+         %70 = OpLoad %int %condition_index
+         %71 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_0 %70
+         %72 = OpLoad %int %71
+         %73 = OpIEqual %bool %72 %int_0
+               OpSelectionMerge %74 None
+               OpBranchConditional %73 %75 %76
+         %75 = OpLabel
+         %77 = OpLoad %uint %base_index_out
+         %78 = OpLoad %int %index_out0
+         %79 = OpBitcast %uint %78
+         %80 = OpIAdd %uint %77 %79
+         %81 = OpLoad %uint %base_index_in
+         %82 = OpLoad %int %index_in0
+         %83 = OpBitcast %uint %82
+         %84 = OpIAdd %uint %81 %83
+         %85 = OpAccessChain %_ptr_StorageBuffer_int %__1 %int_0 %84
+         %86 = OpLoad %int %85
+         %87 = OpAccessChain %_ptr_StorageBuffer_int %__0 %int_0 %80
+               OpStore %87 %86
+         %88 = OpLoad %int %index_out0
+         %89 = OpISub %int %88 %int_1
+               OpStore %index_out0 %89
+         %90 = OpLoad %int %index_in1
+         %91 = OpISub %int %90 %int_1
+               OpStore %index_in1 %91
+               OpBranch %74
+         %76 = OpLabel
+         %92 = OpLoad %uint %base_index_out
+         %93 = OpLoad %int %index_out1
+         %94 = OpBitcast %uint %93
+         %95 = OpIAdd %uint %92 %94
+         %96 = OpLoad %uint %base_index_in
+         %97 = OpLoad %int %index_in1
+         %98 = OpBitcast %uint %97
+         %99 = OpIAdd %uint %96 %98
+        %100 = OpAccessChain %_ptr_StorageBuffer_int %__2 %int_0 %99
+        %101 = OpLoad %int %100
+        %102 = OpAccessChain %_ptr_StorageBuffer_int %__0 %int_0 %95
+               OpStore %102 %101
+        %103 = OpLoad %int %index_out1
+        %104 = OpISub %int %103 %int_1
+               OpStore %index_out1 %104
+        %105 = OpLoad %int %index_in1
+        %106 = OpISub %int %105 %int_1
+               OpStore %index_in1 %106
+               OpBranch %74
+         %74 = OpLabel
+        %107 = OpLoad %int %condition_index
+        %108 = OpIAdd %int %107 %int_1
+        %109 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_0 %108
+        %110 = OpLoad %int %109
+        %111 = OpLoad %int %condition_index
+        %112 = OpIAdd %int %111 %110
+               OpStore %condition_index %112
+        %113 = OpLoad %int %index_in0
+               OpStore %temp0 %113
+        %114 = OpLoad %int %index_in1
+               OpStore %index_in0 %114
+        %115 = OpLoad %int %temp0
+               OpStore %index_in1 %115
+        %116 = OpLoad %int %index_out0
+               OpStore %temp1 %116
+        %117 = OpLoad %int %index_out1
+               OpStore %index_out0 %117
+        %118 = OpLoad %int %temp1
+               OpStore %index_out1 %118
+               OpBranch %65
+         %65 = OpLabel
+        %119 = OpLoad %int %i
+        %120 = OpIAdd %int %119 %int_1
+               OpStore %i %120
+               OpBranch %63
+         %64 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..14fc121
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,69 @@
+static uint3 gl_WorkGroupID = uint3(0u, 0u, 0u);
+ByteAddressBuffer x_13 : register(t2, space0);
+RWByteAddressBuffer x_15 : register(u3, space0);
+ByteAddressBuffer x_17 : register(t1, space0);
+ByteAddressBuffer x_19 : register(t0, space0);
+
+void main_1() {
+  uint base_index_in = 0u;
+  uint base_index_out = 0u;
+  int index_in0 = 0;
+  int index_in1 = 0;
+  int index_out0 = 0;
+  int index_out1 = 0;
+  int condition_index = 0;
+  int i = 0;
+  int temp0 = 0;
+  int temp1 = 0;
+  const uint x_58 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_58);
+  const uint x_61 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_61);
+  index_in0 = 127;
+  index_in1 = 383;
+  index_out0 = 255;
+  index_out1 = 383;
+  condition_index = 0;
+  i = 0;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      const int x_72 = asint(x_13.Load((4u * uint(condition_index))));
+      if ((x_72 == 0)) {
+        const uint x_77 = base_index_out;
+        const int x_78 = index_out0;
+        const int x_86 = asint(x_17.Load((4u * (base_index_in + asuint(index_in0)))));
+        x_15.Store((4u * (x_77 + asuint(x_78))), asuint(x_86));
+        index_out0 = (index_out0 - 1);
+        index_in1 = (index_in1 - 1);
+      } else {
+        const uint x_92 = base_index_out;
+        const int x_93 = index_out1;
+        const int x_101 = asint(x_19.Load((4u * (base_index_in + asuint(index_in1)))));
+        x_15.Store((4u * (x_92 + asuint(x_93))), asuint(x_101));
+        index_out1 = (index_out1 - 1);
+        index_in1 = (index_in1 - 1);
+      }
+      const int x_110 = asint(x_13.Load((4u * uint((condition_index + 1)))));
+      condition_index = (condition_index + x_110);
+      temp0 = index_in0;
+      index_in0 = index_in1;
+      index_in1 = temp0;
+      temp1 = index_out0;
+      index_out0 = index_out1;
+      index_out1 = temp1;
+    }
+  }
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 gl_WorkGroupID_param : SV_GroupID;
+};
+
+[numthreads(4, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 gl_WorkGroupID_param = tint_symbol.gl_WorkGroupID_param;
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.msl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..be9d456
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  /* 0x0000 */ int arr[8];
+};
+struct In2 {
+  /* 0x0000 */ tint_array_wrapper data_in2;
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ int arr[1024];
+};
+struct Out0 {
+  /* 0x0000 */ tint_array_wrapper_1 data_out0;
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ int arr[512];
+};
+struct In1 {
+  /* 0x0000 */ tint_array_wrapper_2 data_in1;
+};
+struct In0 {
+  /* 0x0000 */ tint_array_wrapper_2 data_in0;
+};
+
+void main_1(const device In2& x_13, const device In1& x_17, device Out0& x_15, const device In0& x_19, thread uint3* const tint_symbol_2) {
+  uint base_index_in = 0u;
+  uint base_index_out = 0u;
+  int index_in0 = 0;
+  int index_in1 = 0;
+  int index_out0 = 0;
+  int index_out1 = 0;
+  int condition_index = 0;
+  int i = 0;
+  int temp0 = 0;
+  int temp1 = 0;
+  uint const x_58 = (*(tint_symbol_2)).x;
+  base_index_in = (128u * x_58);
+  uint const x_61 = (*(tint_symbol_2)).x;
+  base_index_out = (256u * x_61);
+  index_in0 = 127;
+  index_in1 = 383;
+  index_out0 = 255;
+  index_out1 = 383;
+  condition_index = 0;
+  i = 0;
+  while (true) {
+    int const x_67 = i;
+    if ((x_67 < 256)) {
+    } else {
+      break;
+    }
+    int const x_70 = condition_index;
+    int const x_72 = x_13.data_in2.arr[x_70];
+    if ((x_72 == 0)) {
+      uint const x_77 = base_index_out;
+      int const x_78 = index_out0;
+      uint const x_81 = base_index_in;
+      int const x_82 = index_in0;
+      int const x_86 = x_17.data_in1.arr[(x_81 + as_type<uint>(x_82))];
+      x_15.data_out0.arr[(x_77 + as_type<uint>(x_78))] = x_86;
+      int const x_88 = index_out0;
+      index_out0 = (x_88 - 1);
+      int const x_90 = index_in1;
+      index_in1 = (x_90 - 1);
+    } else {
+      uint const x_92 = base_index_out;
+      int const x_93 = index_out1;
+      uint const x_96 = base_index_in;
+      int const x_97 = index_in1;
+      int const x_101 = x_19.data_in0.arr[(x_96 + as_type<uint>(x_97))];
+      x_15.data_out0.arr[(x_92 + as_type<uint>(x_93))] = x_101;
+      int const x_103 = index_out1;
+      index_out1 = (x_103 - 1);
+      int const x_105 = index_in1;
+      index_in1 = (x_105 - 1);
+    }
+    int const x_107 = condition_index;
+    int const x_110 = x_13.data_in2.arr[(x_107 + 1)];
+    int const x_111 = condition_index;
+    condition_index = (x_111 + x_110);
+    int const x_113 = index_in0;
+    temp0 = x_113;
+    int const x_114 = index_in1;
+    index_in0 = x_114;
+    int const x_115 = temp0;
+    index_in1 = x_115;
+    int const x_116 = index_out0;
+    temp1 = x_116;
+    int const x_117 = index_out1;
+    index_out0 = x_117;
+    int const x_118 = temp1;
+    index_out1 = x_118;
+    {
+      int const x_119 = i;
+      i = (x_119 + 1);
+    }
+  }
+  return;
+}
+
+kernel void tint_symbol(uint3 gl_WorkGroupID_param [[threadgroup_position_in_grid]], const device In2& x_13 [[buffer(2)]], const device In1& x_17 [[buffer(1)]], device Out0& x_15 [[buffer(3)]], const device In0& x_19 [[buffer(0)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = gl_WorkGroupID_param;
+  main_1(x_13, x_17, x_15, x_19, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..85465cc
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,224 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 127
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 4 1 1
+               OpName %gl_WorkGroupID "gl_WorkGroupID"
+               OpName %In2 "In2"
+               OpMemberName %In2 0 "data_in2"
+               OpName %x_13 "x_13"
+               OpName %Out0 "Out0"
+               OpMemberName %Out0 0 "data_out0"
+               OpName %x_15 "x_15"
+               OpName %In1 "In1"
+               OpMemberName %In1 0 "data_in1"
+               OpName %x_17 "x_17"
+               OpName %In0 "In0"
+               OpMemberName %In0 0 "data_in0"
+               OpName %x_19 "x_19"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %base_index_in "base_index_in"
+               OpName %base_index_out "base_index_out"
+               OpName %index_in0 "index_in0"
+               OpName %index_in1 "index_in1"
+               OpName %index_out0 "index_out0"
+               OpName %index_out1 "index_out1"
+               OpName %condition_index "condition_index"
+               OpName %i "i"
+               OpName %temp0 "temp0"
+               OpName %temp1 "temp1"
+               OpName %main "main"
+               OpDecorate %In2 Block
+               OpMemberDecorate %In2 0 Offset 0
+               OpDecorate %_arr_int_uint_8 ArrayStride 4
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 2
+               OpDecorate %Out0 Block
+               OpMemberDecorate %Out0 0 Offset 0
+               OpDecorate %_arr_int_uint_1024 ArrayStride 4
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 3
+               OpDecorate %In1 Block
+               OpMemberDecorate %In1 0 Offset 0
+               OpDecorate %_arr_int_uint_512 ArrayStride 4
+               OpDecorate %x_17 NonWritable
+               OpDecorate %x_17 DescriptorSet 0
+               OpDecorate %x_17 Binding 1
+               OpDecorate %In0 Block
+               OpMemberDecorate %In0 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 0
+               OpDecorate %tint_symbol BuiltIn WorkgroupId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+%gl_WorkGroupID = OpVariable %_ptr_Private_v3uint Private %5
+        %int = OpTypeInt 32 1
+     %uint_8 = OpConstant %uint 8
+%_arr_int_uint_8 = OpTypeArray %int %uint_8
+        %In2 = OpTypeStruct %_arr_int_uint_8
+%_ptr_StorageBuffer_In2 = OpTypePointer StorageBuffer %In2
+       %x_13 = OpVariable %_ptr_StorageBuffer_In2 StorageBuffer
+  %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+       %Out0 = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_Out0 = OpTypePointer StorageBuffer %Out0
+       %x_15 = OpVariable %_ptr_StorageBuffer_Out0 StorageBuffer
+   %uint_512 = OpConstant %uint 512
+%_arr_int_uint_512 = OpTypeArray %int %uint_512
+        %In1 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In1 = OpTypePointer StorageBuffer %In1
+       %x_17 = OpVariable %_ptr_StorageBuffer_In1 StorageBuffer
+        %In0 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In0 = OpTypePointer StorageBuffer %In0
+       %x_19 = OpVariable %_ptr_StorageBuffer_In0 StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %33 = OpConstantNull %uint
+%_ptr_Function_int = OpTypePointer Function %int
+         %37 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+   %uint_128 = OpConstant %uint 128
+   %uint_256 = OpConstant %uint 256
+    %int_127 = OpConstant %int 127
+    %int_383 = OpConstant %int 383
+    %int_255 = OpConstant %int 255
+      %int_0 = OpConstant %int 0
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_1 = OpConstant %int 1
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+%base_index_in = OpVariable %_ptr_Function_uint Function %33
+%base_index_out = OpVariable %_ptr_Function_uint Function %33
+  %index_in0 = OpVariable %_ptr_Function_int Function %37
+  %index_in1 = OpVariable %_ptr_Function_int Function %37
+ %index_out0 = OpVariable %_ptr_Function_int Function %37
+ %index_out1 = OpVariable %_ptr_Function_int Function %37
+%condition_index = OpVariable %_ptr_Function_int Function %37
+          %i = OpVariable %_ptr_Function_int Function %37
+      %temp0 = OpVariable %_ptr_Function_int Function %37
+      %temp1 = OpVariable %_ptr_Function_int Function %37
+         %47 = OpAccessChain %_ptr_Private_uint %gl_WorkGroupID %uint_0
+         %48 = OpLoad %uint %47
+         %50 = OpIMul %uint %uint_128 %48
+               OpStore %base_index_in %50
+         %51 = OpAccessChain %_ptr_Private_uint %gl_WorkGroupID %uint_0
+         %52 = OpLoad %uint %51
+         %54 = OpIMul %uint %uint_256 %52
+               OpStore %base_index_out %54
+               OpStore %index_in0 %int_127
+               OpStore %index_in1 %int_383
+               OpStore %index_out0 %int_255
+               OpStore %index_out1 %int_383
+               OpStore %condition_index %int_0
+               OpStore %i %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpSLessThan %bool %63 %int_256
+               OpSelectionMerge %67 None
+               OpBranchConditional %65 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %60
+         %67 = OpLabel
+         %70 = OpLoad %int %condition_index
+         %72 = OpAccessChain %_ptr_StorageBuffer_int %x_13 %uint_0 %70
+         %73 = OpLoad %int %72
+         %74 = OpIEqual %bool %73 %int_0
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpLoad %uint %base_index_out
+         %79 = OpLoad %int %index_out0
+         %80 = OpLoad %uint %base_index_in
+         %81 = OpLoad %int %index_in0
+         %82 = OpBitcast %uint %81
+         %83 = OpIAdd %uint %80 %82
+         %84 = OpAccessChain %_ptr_StorageBuffer_int %x_17 %uint_0 %83
+         %85 = OpLoad %int %84
+         %86 = OpBitcast %uint %79
+         %87 = OpIAdd %uint %78 %86
+         %88 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %87
+               OpStore %88 %85
+         %89 = OpLoad %int %index_out0
+         %91 = OpISub %int %89 %int_1
+               OpStore %index_out0 %91
+         %92 = OpLoad %int %index_in1
+         %93 = OpISub %int %92 %int_1
+               OpStore %index_in1 %93
+               OpBranch %75
+         %77 = OpLabel
+         %94 = OpLoad %uint %base_index_out
+         %95 = OpLoad %int %index_out1
+         %96 = OpLoad %uint %base_index_in
+         %97 = OpLoad %int %index_in1
+         %98 = OpBitcast %uint %97
+         %99 = OpIAdd %uint %96 %98
+        %100 = OpAccessChain %_ptr_StorageBuffer_int %x_19 %uint_0 %99
+        %101 = OpLoad %int %100
+        %102 = OpBitcast %uint %95
+        %103 = OpIAdd %uint %94 %102
+        %104 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %103
+               OpStore %104 %101
+        %105 = OpLoad %int %index_out1
+        %106 = OpISub %int %105 %int_1
+               OpStore %index_out1 %106
+        %107 = OpLoad %int %index_in1
+        %108 = OpISub %int %107 %int_1
+               OpStore %index_in1 %108
+               OpBranch %75
+         %75 = OpLabel
+        %109 = OpLoad %int %condition_index
+        %110 = OpIAdd %int %109 %int_1
+        %111 = OpAccessChain %_ptr_StorageBuffer_int %x_13 %uint_0 %110
+        %112 = OpLoad %int %111
+        %113 = OpLoad %int %condition_index
+        %114 = OpIAdd %int %113 %112
+               OpStore %condition_index %114
+        %115 = OpLoad %int %index_in0
+               OpStore %temp0 %115
+        %116 = OpLoad %int %index_in1
+               OpStore %index_in0 %116
+        %117 = OpLoad %int %temp0
+               OpStore %index_in1 %117
+        %118 = OpLoad %int %index_out0
+               OpStore %temp1 %118
+        %119 = OpLoad %int %index_out1
+               OpStore %index_out0 %119
+        %120 = OpLoad %int %temp1
+               OpStore %index_out1 %120
+               OpBranch %61
+         %61 = OpLabel
+        %121 = OpLoad %int %i
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %i %122
+               OpBranch %59
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+        %124 = OpLabel
+        %125 = OpLoad %v3uint %tint_symbol
+               OpStore %gl_WorkGroupID %125
+        %126 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e16f3b9
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,120 @@
+type Arr = [[stride(4)]] array<i32, 8>;
+
+[[block]]
+struct In2 {
+  data_in2 : Arr;
+};
+
+type Arr_1 = [[stride(4)]] array<i32, 1024>;
+
+[[block]]
+struct Out0 {
+  data_out0 : Arr_1;
+};
+
+type Arr_2 = [[stride(4)]] array<i32, 512>;
+
+type Arr_3 = [[stride(4)]] array<i32, 512>;
+
+[[block]]
+struct In1 {
+  data_in1 : Arr_3;
+};
+
+[[block]]
+struct In0 {
+  data_in0 : Arr_3;
+};
+
+var<private> gl_WorkGroupID : vec3<u32>;
+
+[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+
+[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+
+[[group(0), binding(1)]] var<storage, read> x_17 : In1;
+
+[[group(0), binding(0)]] var<storage, read> x_19 : In0;
+
+fn main_1() {
+  var base_index_in : u32;
+  var base_index_out : u32;
+  var index_in0 : i32;
+  var index_in1 : i32;
+  var index_out0 : i32;
+  var index_out1 : i32;
+  var condition_index : i32;
+  var i : i32;
+  var temp0 : i32;
+  var temp1 : i32;
+  let x_58 : u32 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_58);
+  let x_61 : u32 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_61);
+  index_in0 = 127;
+  index_in1 = 383;
+  index_out0 = 255;
+  index_out1 = 383;
+  condition_index = 0;
+  i = 0;
+  loop {
+    let x_67 : i32 = i;
+    if ((x_67 < 256)) {
+    } else {
+      break;
+    }
+    let x_70 : i32 = condition_index;
+    let x_72 : i32 = x_13.data_in2[x_70];
+    if ((x_72 == 0)) {
+      let x_77 : u32 = base_index_out;
+      let x_78 : i32 = index_out0;
+      let x_81 : u32 = base_index_in;
+      let x_82 : i32 = index_in0;
+      let x_86 : i32 = x_17.data_in1[(x_81 + bitcast<u32>(x_82))];
+      x_15.data_out0[(x_77 + bitcast<u32>(x_78))] = x_86;
+      let x_88 : i32 = index_out0;
+      index_out0 = (x_88 - 1);
+      let x_90 : i32 = index_in1;
+      index_in1 = (x_90 - 1);
+    } else {
+      let x_92 : u32 = base_index_out;
+      let x_93 : i32 = index_out1;
+      let x_96 : u32 = base_index_in;
+      let x_97 : i32 = index_in1;
+      let x_101 : i32 = x_19.data_in0[(x_96 + bitcast<u32>(x_97))];
+      x_15.data_out0[(x_92 + bitcast<u32>(x_93))] = x_101;
+      let x_103 : i32 = index_out1;
+      index_out1 = (x_103 - 1);
+      let x_105 : i32 = index_in1;
+      index_in1 = (x_105 - 1);
+    }
+    let x_107 : i32 = condition_index;
+    let x_110 : i32 = x_13.data_in2[(x_107 + 1)];
+    let x_111 : i32 = condition_index;
+    condition_index = (x_111 + x_110);
+    let x_113 : i32 = index_in0;
+    temp0 = x_113;
+    let x_114 : i32 = index_in1;
+    index_in0 = x_114;
+    let x_115 : i32 = temp0;
+    index_in1 = x_115;
+    let x_116 : i32 = index_out0;
+    temp1 = x_116;
+    let x_117 : i32 = index_out1;
+    index_out0 = x_117;
+    let x_118 : i32 = temp1;
+    index_out1 = x_118;
+
+    continuing {
+      let x_119 : i32 = i;
+      i = (x_119 + 1);
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(4, 1, 1)]]
+fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
new file mode 100644
index 0000000..e16f3b9
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
@@ -0,0 +1,120 @@
+type Arr = [[stride(4)]] array<i32, 8>;
+
+[[block]]
+struct In2 {
+  data_in2 : Arr;
+};
+
+type Arr_1 = [[stride(4)]] array<i32, 1024>;
+
+[[block]]
+struct Out0 {
+  data_out0 : Arr_1;
+};
+
+type Arr_2 = [[stride(4)]] array<i32, 512>;
+
+type Arr_3 = [[stride(4)]] array<i32, 512>;
+
+[[block]]
+struct In1 {
+  data_in1 : Arr_3;
+};
+
+[[block]]
+struct In0 {
+  data_in0 : Arr_3;
+};
+
+var<private> gl_WorkGroupID : vec3<u32>;
+
+[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+
+[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+
+[[group(0), binding(1)]] var<storage, read> x_17 : In1;
+
+[[group(0), binding(0)]] var<storage, read> x_19 : In0;
+
+fn main_1() {
+  var base_index_in : u32;
+  var base_index_out : u32;
+  var index_in0 : i32;
+  var index_in1 : i32;
+  var index_out0 : i32;
+  var index_out1 : i32;
+  var condition_index : i32;
+  var i : i32;
+  var temp0 : i32;
+  var temp1 : i32;
+  let x_58 : u32 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_58);
+  let x_61 : u32 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_61);
+  index_in0 = 127;
+  index_in1 = 383;
+  index_out0 = 255;
+  index_out1 = 383;
+  condition_index = 0;
+  i = 0;
+  loop {
+    let x_67 : i32 = i;
+    if ((x_67 < 256)) {
+    } else {
+      break;
+    }
+    let x_70 : i32 = condition_index;
+    let x_72 : i32 = x_13.data_in2[x_70];
+    if ((x_72 == 0)) {
+      let x_77 : u32 = base_index_out;
+      let x_78 : i32 = index_out0;
+      let x_81 : u32 = base_index_in;
+      let x_82 : i32 = index_in0;
+      let x_86 : i32 = x_17.data_in1[(x_81 + bitcast<u32>(x_82))];
+      x_15.data_out0[(x_77 + bitcast<u32>(x_78))] = x_86;
+      let x_88 : i32 = index_out0;
+      index_out0 = (x_88 - 1);
+      let x_90 : i32 = index_in1;
+      index_in1 = (x_90 - 1);
+    } else {
+      let x_92 : u32 = base_index_out;
+      let x_93 : i32 = index_out1;
+      let x_96 : u32 = base_index_in;
+      let x_97 : i32 = index_in1;
+      let x_101 : i32 = x_19.data_in0[(x_96 + bitcast<u32>(x_97))];
+      x_15.data_out0[(x_92 + bitcast<u32>(x_93))] = x_101;
+      let x_103 : i32 = index_out1;
+      index_out1 = (x_103 - 1);
+      let x_105 : i32 = index_in1;
+      index_in1 = (x_105 - 1);
+    }
+    let x_107 : i32 = condition_index;
+    let x_110 : i32 = x_13.data_in2[(x_107 + 1)];
+    let x_111 : i32 = condition_index;
+    condition_index = (x_111 + x_110);
+    let x_113 : i32 = index_in0;
+    temp0 = x_113;
+    let x_114 : i32 = index_in1;
+    index_in0 = x_114;
+    let x_115 : i32 = temp0;
+    index_in1 = x_115;
+    let x_116 : i32 = index_out0;
+    temp1 = x_116;
+    let x_117 : i32 = index_out1;
+    index_out0 = x_117;
+    let x_118 : i32 = temp1;
+    index_out1 = x_118;
+
+    continuing {
+      let x_119 : i32 = i;
+      i = (x_119 + 1);
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(4, 1, 1)]]
+fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..14fc121
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,69 @@
+static uint3 gl_WorkGroupID = uint3(0u, 0u, 0u);
+ByteAddressBuffer x_13 : register(t2, space0);
+RWByteAddressBuffer x_15 : register(u3, space0);
+ByteAddressBuffer x_17 : register(t1, space0);
+ByteAddressBuffer x_19 : register(t0, space0);
+
+void main_1() {
+  uint base_index_in = 0u;
+  uint base_index_out = 0u;
+  int index_in0 = 0;
+  int index_in1 = 0;
+  int index_out0 = 0;
+  int index_out1 = 0;
+  int condition_index = 0;
+  int i = 0;
+  int temp0 = 0;
+  int temp1 = 0;
+  const uint x_58 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_58);
+  const uint x_61 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_61);
+  index_in0 = 127;
+  index_in1 = 383;
+  index_out0 = 255;
+  index_out1 = 383;
+  condition_index = 0;
+  i = 0;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      const int x_72 = asint(x_13.Load((4u * uint(condition_index))));
+      if ((x_72 == 0)) {
+        const uint x_77 = base_index_out;
+        const int x_78 = index_out0;
+        const int x_86 = asint(x_17.Load((4u * (base_index_in + asuint(index_in0)))));
+        x_15.Store((4u * (x_77 + asuint(x_78))), asuint(x_86));
+        index_out0 = (index_out0 - 1);
+        index_in1 = (index_in1 - 1);
+      } else {
+        const uint x_92 = base_index_out;
+        const int x_93 = index_out1;
+        const int x_101 = asint(x_19.Load((4u * (base_index_in + asuint(index_in1)))));
+        x_15.Store((4u * (x_92 + asuint(x_93))), asuint(x_101));
+        index_out1 = (index_out1 - 1);
+        index_in1 = (index_in1 - 1);
+      }
+      const int x_110 = asint(x_13.Load((4u * uint((condition_index + 1)))));
+      condition_index = (condition_index + x_110);
+      temp0 = index_in0;
+      index_in0 = index_in1;
+      index_in1 = temp0;
+      temp1 = index_out0;
+      index_out0 = index_out1;
+      index_out1 = temp1;
+    }
+  }
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 gl_WorkGroupID_param : SV_GroupID;
+};
+
+[numthreads(4, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 gl_WorkGroupID_param = tint_symbol.gl_WorkGroupID_param;
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.msl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..be9d456
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  /* 0x0000 */ int arr[8];
+};
+struct In2 {
+  /* 0x0000 */ tint_array_wrapper data_in2;
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ int arr[1024];
+};
+struct Out0 {
+  /* 0x0000 */ tint_array_wrapper_1 data_out0;
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ int arr[512];
+};
+struct In1 {
+  /* 0x0000 */ tint_array_wrapper_2 data_in1;
+};
+struct In0 {
+  /* 0x0000 */ tint_array_wrapper_2 data_in0;
+};
+
+void main_1(const device In2& x_13, const device In1& x_17, device Out0& x_15, const device In0& x_19, thread uint3* const tint_symbol_2) {
+  uint base_index_in = 0u;
+  uint base_index_out = 0u;
+  int index_in0 = 0;
+  int index_in1 = 0;
+  int index_out0 = 0;
+  int index_out1 = 0;
+  int condition_index = 0;
+  int i = 0;
+  int temp0 = 0;
+  int temp1 = 0;
+  uint const x_58 = (*(tint_symbol_2)).x;
+  base_index_in = (128u * x_58);
+  uint const x_61 = (*(tint_symbol_2)).x;
+  base_index_out = (256u * x_61);
+  index_in0 = 127;
+  index_in1 = 383;
+  index_out0 = 255;
+  index_out1 = 383;
+  condition_index = 0;
+  i = 0;
+  while (true) {
+    int const x_67 = i;
+    if ((x_67 < 256)) {
+    } else {
+      break;
+    }
+    int const x_70 = condition_index;
+    int const x_72 = x_13.data_in2.arr[x_70];
+    if ((x_72 == 0)) {
+      uint const x_77 = base_index_out;
+      int const x_78 = index_out0;
+      uint const x_81 = base_index_in;
+      int const x_82 = index_in0;
+      int const x_86 = x_17.data_in1.arr[(x_81 + as_type<uint>(x_82))];
+      x_15.data_out0.arr[(x_77 + as_type<uint>(x_78))] = x_86;
+      int const x_88 = index_out0;
+      index_out0 = (x_88 - 1);
+      int const x_90 = index_in1;
+      index_in1 = (x_90 - 1);
+    } else {
+      uint const x_92 = base_index_out;
+      int const x_93 = index_out1;
+      uint const x_96 = base_index_in;
+      int const x_97 = index_in1;
+      int const x_101 = x_19.data_in0.arr[(x_96 + as_type<uint>(x_97))];
+      x_15.data_out0.arr[(x_92 + as_type<uint>(x_93))] = x_101;
+      int const x_103 = index_out1;
+      index_out1 = (x_103 - 1);
+      int const x_105 = index_in1;
+      index_in1 = (x_105 - 1);
+    }
+    int const x_107 = condition_index;
+    int const x_110 = x_13.data_in2.arr[(x_107 + 1)];
+    int const x_111 = condition_index;
+    condition_index = (x_111 + x_110);
+    int const x_113 = index_in0;
+    temp0 = x_113;
+    int const x_114 = index_in1;
+    index_in0 = x_114;
+    int const x_115 = temp0;
+    index_in1 = x_115;
+    int const x_116 = index_out0;
+    temp1 = x_116;
+    int const x_117 = index_out1;
+    index_out0 = x_117;
+    int const x_118 = temp1;
+    index_out1 = x_118;
+    {
+      int const x_119 = i;
+      i = (x_119 + 1);
+    }
+  }
+  return;
+}
+
+kernel void tint_symbol(uint3 gl_WorkGroupID_param [[threadgroup_position_in_grid]], const device In2& x_13 [[buffer(2)]], const device In1& x_17 [[buffer(1)]], device Out0& x_15 [[buffer(3)]], const device In0& x_19 [[buffer(0)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = gl_WorkGroupID_param;
+  main_1(x_13, x_17, x_15, x_19, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..85465cc
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,224 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 127
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 4 1 1
+               OpName %gl_WorkGroupID "gl_WorkGroupID"
+               OpName %In2 "In2"
+               OpMemberName %In2 0 "data_in2"
+               OpName %x_13 "x_13"
+               OpName %Out0 "Out0"
+               OpMemberName %Out0 0 "data_out0"
+               OpName %x_15 "x_15"
+               OpName %In1 "In1"
+               OpMemberName %In1 0 "data_in1"
+               OpName %x_17 "x_17"
+               OpName %In0 "In0"
+               OpMemberName %In0 0 "data_in0"
+               OpName %x_19 "x_19"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %base_index_in "base_index_in"
+               OpName %base_index_out "base_index_out"
+               OpName %index_in0 "index_in0"
+               OpName %index_in1 "index_in1"
+               OpName %index_out0 "index_out0"
+               OpName %index_out1 "index_out1"
+               OpName %condition_index "condition_index"
+               OpName %i "i"
+               OpName %temp0 "temp0"
+               OpName %temp1 "temp1"
+               OpName %main "main"
+               OpDecorate %In2 Block
+               OpMemberDecorate %In2 0 Offset 0
+               OpDecorate %_arr_int_uint_8 ArrayStride 4
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 2
+               OpDecorate %Out0 Block
+               OpMemberDecorate %Out0 0 Offset 0
+               OpDecorate %_arr_int_uint_1024 ArrayStride 4
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 3
+               OpDecorate %In1 Block
+               OpMemberDecorate %In1 0 Offset 0
+               OpDecorate %_arr_int_uint_512 ArrayStride 4
+               OpDecorate %x_17 NonWritable
+               OpDecorate %x_17 DescriptorSet 0
+               OpDecorate %x_17 Binding 1
+               OpDecorate %In0 Block
+               OpMemberDecorate %In0 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 0
+               OpDecorate %tint_symbol BuiltIn WorkgroupId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+%gl_WorkGroupID = OpVariable %_ptr_Private_v3uint Private %5
+        %int = OpTypeInt 32 1
+     %uint_8 = OpConstant %uint 8
+%_arr_int_uint_8 = OpTypeArray %int %uint_8
+        %In2 = OpTypeStruct %_arr_int_uint_8
+%_ptr_StorageBuffer_In2 = OpTypePointer StorageBuffer %In2
+       %x_13 = OpVariable %_ptr_StorageBuffer_In2 StorageBuffer
+  %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+       %Out0 = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_Out0 = OpTypePointer StorageBuffer %Out0
+       %x_15 = OpVariable %_ptr_StorageBuffer_Out0 StorageBuffer
+   %uint_512 = OpConstant %uint 512
+%_arr_int_uint_512 = OpTypeArray %int %uint_512
+        %In1 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In1 = OpTypePointer StorageBuffer %In1
+       %x_17 = OpVariable %_ptr_StorageBuffer_In1 StorageBuffer
+        %In0 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In0 = OpTypePointer StorageBuffer %In0
+       %x_19 = OpVariable %_ptr_StorageBuffer_In0 StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %33 = OpConstantNull %uint
+%_ptr_Function_int = OpTypePointer Function %int
+         %37 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+   %uint_128 = OpConstant %uint 128
+   %uint_256 = OpConstant %uint 256
+    %int_127 = OpConstant %int 127
+    %int_383 = OpConstant %int 383
+    %int_255 = OpConstant %int 255
+      %int_0 = OpConstant %int 0
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_1 = OpConstant %int 1
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+%base_index_in = OpVariable %_ptr_Function_uint Function %33
+%base_index_out = OpVariable %_ptr_Function_uint Function %33
+  %index_in0 = OpVariable %_ptr_Function_int Function %37
+  %index_in1 = OpVariable %_ptr_Function_int Function %37
+ %index_out0 = OpVariable %_ptr_Function_int Function %37
+ %index_out1 = OpVariable %_ptr_Function_int Function %37
+%condition_index = OpVariable %_ptr_Function_int Function %37
+          %i = OpVariable %_ptr_Function_int Function %37
+      %temp0 = OpVariable %_ptr_Function_int Function %37
+      %temp1 = OpVariable %_ptr_Function_int Function %37
+         %47 = OpAccessChain %_ptr_Private_uint %gl_WorkGroupID %uint_0
+         %48 = OpLoad %uint %47
+         %50 = OpIMul %uint %uint_128 %48
+               OpStore %base_index_in %50
+         %51 = OpAccessChain %_ptr_Private_uint %gl_WorkGroupID %uint_0
+         %52 = OpLoad %uint %51
+         %54 = OpIMul %uint %uint_256 %52
+               OpStore %base_index_out %54
+               OpStore %index_in0 %int_127
+               OpStore %index_in1 %int_383
+               OpStore %index_out0 %int_255
+               OpStore %index_out1 %int_383
+               OpStore %condition_index %int_0
+               OpStore %i %int_0
+               OpBranch %59
+         %59 = OpLabel
+               OpLoopMerge %60 %61 None
+               OpBranch %62
+         %62 = OpLabel
+         %63 = OpLoad %int %i
+         %65 = OpSLessThan %bool %63 %int_256
+               OpSelectionMerge %67 None
+               OpBranchConditional %65 %68 %69
+         %68 = OpLabel
+               OpBranch %67
+         %69 = OpLabel
+               OpBranch %60
+         %67 = OpLabel
+         %70 = OpLoad %int %condition_index
+         %72 = OpAccessChain %_ptr_StorageBuffer_int %x_13 %uint_0 %70
+         %73 = OpLoad %int %72
+         %74 = OpIEqual %bool %73 %int_0
+               OpSelectionMerge %75 None
+               OpBranchConditional %74 %76 %77
+         %76 = OpLabel
+         %78 = OpLoad %uint %base_index_out
+         %79 = OpLoad %int %index_out0
+         %80 = OpLoad %uint %base_index_in
+         %81 = OpLoad %int %index_in0
+         %82 = OpBitcast %uint %81
+         %83 = OpIAdd %uint %80 %82
+         %84 = OpAccessChain %_ptr_StorageBuffer_int %x_17 %uint_0 %83
+         %85 = OpLoad %int %84
+         %86 = OpBitcast %uint %79
+         %87 = OpIAdd %uint %78 %86
+         %88 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %87
+               OpStore %88 %85
+         %89 = OpLoad %int %index_out0
+         %91 = OpISub %int %89 %int_1
+               OpStore %index_out0 %91
+         %92 = OpLoad %int %index_in1
+         %93 = OpISub %int %92 %int_1
+               OpStore %index_in1 %93
+               OpBranch %75
+         %77 = OpLabel
+         %94 = OpLoad %uint %base_index_out
+         %95 = OpLoad %int %index_out1
+         %96 = OpLoad %uint %base_index_in
+         %97 = OpLoad %int %index_in1
+         %98 = OpBitcast %uint %97
+         %99 = OpIAdd %uint %96 %98
+        %100 = OpAccessChain %_ptr_StorageBuffer_int %x_19 %uint_0 %99
+        %101 = OpLoad %int %100
+        %102 = OpBitcast %uint %95
+        %103 = OpIAdd %uint %94 %102
+        %104 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %103
+               OpStore %104 %101
+        %105 = OpLoad %int %index_out1
+        %106 = OpISub %int %105 %int_1
+               OpStore %index_out1 %106
+        %107 = OpLoad %int %index_in1
+        %108 = OpISub %int %107 %int_1
+               OpStore %index_in1 %108
+               OpBranch %75
+         %75 = OpLabel
+        %109 = OpLoad %int %condition_index
+        %110 = OpIAdd %int %109 %int_1
+        %111 = OpAccessChain %_ptr_StorageBuffer_int %x_13 %uint_0 %110
+        %112 = OpLoad %int %111
+        %113 = OpLoad %int %condition_index
+        %114 = OpIAdd %int %113 %112
+               OpStore %condition_index %114
+        %115 = OpLoad %int %index_in0
+               OpStore %temp0 %115
+        %116 = OpLoad %int %index_in1
+               OpStore %index_in0 %116
+        %117 = OpLoad %int %temp0
+               OpStore %index_in1 %117
+        %118 = OpLoad %int %index_out0
+               OpStore %temp1 %118
+        %119 = OpLoad %int %index_out1
+               OpStore %index_out0 %119
+        %120 = OpLoad %int %temp1
+               OpStore %index_out1 %120
+               OpBranch %61
+         %61 = OpLabel
+        %121 = OpLoad %int %i
+        %122 = OpIAdd %int %121 %int_1
+               OpStore %i %122
+               OpBranch %59
+         %60 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+        %124 = OpLabel
+        %125 = OpLoad %v3uint %tint_symbol
+               OpStore %gl_WorkGroupID %125
+        %126 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e16f3b9
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,120 @@
+type Arr = [[stride(4)]] array<i32, 8>;
+
+[[block]]
+struct In2 {
+  data_in2 : Arr;
+};
+
+type Arr_1 = [[stride(4)]] array<i32, 1024>;
+
+[[block]]
+struct Out0 {
+  data_out0 : Arr_1;
+};
+
+type Arr_2 = [[stride(4)]] array<i32, 512>;
+
+type Arr_3 = [[stride(4)]] array<i32, 512>;
+
+[[block]]
+struct In1 {
+  data_in1 : Arr_3;
+};
+
+[[block]]
+struct In0 {
+  data_in0 : Arr_3;
+};
+
+var<private> gl_WorkGroupID : vec3<u32>;
+
+[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+
+[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+
+[[group(0), binding(1)]] var<storage, read> x_17 : In1;
+
+[[group(0), binding(0)]] var<storage, read> x_19 : In0;
+
+fn main_1() {
+  var base_index_in : u32;
+  var base_index_out : u32;
+  var index_in0 : i32;
+  var index_in1 : i32;
+  var index_out0 : i32;
+  var index_out1 : i32;
+  var condition_index : i32;
+  var i : i32;
+  var temp0 : i32;
+  var temp1 : i32;
+  let x_58 : u32 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_58);
+  let x_61 : u32 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_61);
+  index_in0 = 127;
+  index_in1 = 383;
+  index_out0 = 255;
+  index_out1 = 383;
+  condition_index = 0;
+  i = 0;
+  loop {
+    let x_67 : i32 = i;
+    if ((x_67 < 256)) {
+    } else {
+      break;
+    }
+    let x_70 : i32 = condition_index;
+    let x_72 : i32 = x_13.data_in2[x_70];
+    if ((x_72 == 0)) {
+      let x_77 : u32 = base_index_out;
+      let x_78 : i32 = index_out0;
+      let x_81 : u32 = base_index_in;
+      let x_82 : i32 = index_in0;
+      let x_86 : i32 = x_17.data_in1[(x_81 + bitcast<u32>(x_82))];
+      x_15.data_out0[(x_77 + bitcast<u32>(x_78))] = x_86;
+      let x_88 : i32 = index_out0;
+      index_out0 = (x_88 - 1);
+      let x_90 : i32 = index_in1;
+      index_in1 = (x_90 - 1);
+    } else {
+      let x_92 : u32 = base_index_out;
+      let x_93 : i32 = index_out1;
+      let x_96 : u32 = base_index_in;
+      let x_97 : i32 = index_in1;
+      let x_101 : i32 = x_19.data_in0[(x_96 + bitcast<u32>(x_97))];
+      x_15.data_out0[(x_92 + bitcast<u32>(x_93))] = x_101;
+      let x_103 : i32 = index_out1;
+      index_out1 = (x_103 - 1);
+      let x_105 : i32 = index_in1;
+      index_in1 = (x_105 - 1);
+    }
+    let x_107 : i32 = condition_index;
+    let x_110 : i32 = x_13.data_in2[(x_107 + 1)];
+    let x_111 : i32 = condition_index;
+    condition_index = (x_111 + x_110);
+    let x_113 : i32 = index_in0;
+    temp0 = x_113;
+    let x_114 : i32 = index_in1;
+    index_in0 = x_114;
+    let x_115 : i32 = temp0;
+    index_in1 = x_115;
+    let x_116 : i32 = index_out0;
+    temp1 = x_116;
+    let x_117 : i32 = index_out1;
+    index_out0 = x_117;
+    let x_118 : i32 = temp1;
+    index_out1 = x_118;
+
+    continuing {
+      let x_119 : i32 = i;
+      i = (x_119 + 1);
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(4, 1, 1)]]
+fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm
new file mode 100644
index 0000000..50b5277
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm
@@ -0,0 +1,207 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %gl_WorkGroupID
+               OpExecutionMode %main LocalSize 4 1 1
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %base_index_in "base_index_in"
+               OpName %gl_WorkGroupID "gl_WorkGroupID"
+               OpName %base_index_out "base_index_out"
+               OpName %index_in0 "index_in0"
+               OpName %index_in1 "index_in1"
+               OpName %index_out0 "index_out0"
+               OpName %index_out1 "index_out1"
+               OpName %condition_index "condition_index"
+               OpName %i "i"
+               OpName %In2 "In2"
+               OpMemberName %In2 0 "data_in2"
+               OpName %_ ""
+               OpName %Out0 "Out0"
+               OpMemberName %Out0 0 "data_out0"
+               OpName %__0 ""
+               OpName %In0 "In0"
+               OpMemberName %In0 0 "data_in0"
+               OpName %__1 ""
+               OpName %In1 "In1"
+               OpMemberName %In1 0 "data_in1"
+               OpName %__2 ""
+               OpName %temp0 "temp0"
+               OpName %temp1 "temp1"
+               OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId
+               OpDecorate %_arr_int_uint_8 ArrayStride 4
+               OpMemberDecorate %In2 0 NonWritable
+               OpMemberDecorate %In2 0 Offset 0
+               OpDecorate %In2 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 2
+               OpDecorate %_arr_int_uint_1024 ArrayStride 4
+               OpMemberDecorate %Out0 0 NonReadable
+               OpMemberDecorate %Out0 0 Offset 0
+               OpDecorate %Out0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 3
+               OpDecorate %_arr_int_uint_512 ArrayStride 4
+               OpMemberDecorate %In0 0 NonWritable
+               OpMemberDecorate %In0 0 Offset 0
+               OpDecorate %In0 Block
+               OpDecorate %__1 DescriptorSet 0
+               OpDecorate %__1 Binding 0
+               OpDecorate %_arr_int_uint_512_0 ArrayStride 4
+               OpMemberDecorate %In1 0 NonWritable
+               OpMemberDecorate %In1 0 Offset 0
+               OpDecorate %In1 Block
+               OpDecorate %__2 DescriptorSet 0
+               OpDecorate %__2 Binding 1
+               OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
+       %void = OpTypeVoid
+         %28 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+   %uint_128 = OpConstant %uint 128
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+   %uint_256 = OpConstant %uint 256
+        %int = OpTypeInt 32 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+   %int_n128 = OpConstant %int -128
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+     %uint_8 = OpConstant %uint 8
+%_arr_int_uint_8 = OpTypeArray %int %uint_8
+        %In2 = OpTypeStruct %_arr_int_uint_8
+%_ptr_StorageBuffer_In2 = OpTypePointer StorageBuffer %In2
+          %_ = OpVariable %_ptr_StorageBuffer_In2 StorageBuffer
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+  %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+       %Out0 = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_Out0 = OpTypePointer StorageBuffer %Out0
+        %__0 = OpVariable %_ptr_StorageBuffer_Out0 StorageBuffer
+   %uint_512 = OpConstant %uint 512
+%_arr_int_uint_512 = OpTypeArray %int %uint_512
+        %In0 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In0 = OpTypePointer StorageBuffer %In0
+        %__1 = OpVariable %_ptr_StorageBuffer_In0 StorageBuffer
+      %int_1 = OpConstant %int 1
+%_arr_int_uint_512_0 = OpTypeArray %int %uint_512
+        %In1 = OpTypeStruct %_arr_int_uint_512_0
+%_ptr_StorageBuffer_In1 = OpTypePointer StorageBuffer %In1
+        %__2 = OpVariable %_ptr_StorageBuffer_In1 StorageBuffer
+     %uint_4 = OpConstant %uint 4
+     %uint_1 = OpConstant %uint 1
+%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_4 %uint_1 %uint_1
+       %main = OpFunction %void None %28
+         %54 = OpLabel
+%base_index_in = OpVariable %_ptr_Function_uint Function
+%base_index_out = OpVariable %_ptr_Function_uint Function
+  %index_in0 = OpVariable %_ptr_Function_int Function
+  %index_in1 = OpVariable %_ptr_Function_int Function
+ %index_out0 = OpVariable %_ptr_Function_int Function
+ %index_out1 = OpVariable %_ptr_Function_int Function
+%condition_index = OpVariable %_ptr_Function_int Function
+          %i = OpVariable %_ptr_Function_int Function
+      %temp0 = OpVariable %_ptr_Function_int Function
+      %temp1 = OpVariable %_ptr_Function_int Function
+         %55 = OpAccessChain %_ptr_Input_uint %gl_WorkGroupID %uint_0
+         %56 = OpLoad %uint %55
+         %57 = OpIMul %uint %uint_128 %56
+               OpStore %base_index_in %57
+         %58 = OpAccessChain %_ptr_Input_uint %gl_WorkGroupID %uint_0
+         %59 = OpLoad %uint %58
+         %60 = OpIMul %uint %uint_256 %59
+               OpStore %base_index_out %60
+               OpStore %index_in0 %int_0
+               OpStore %index_in1 %int_n128
+               OpStore %index_out0 %int_0
+               OpStore %index_out1 %int_n128
+               OpStore %condition_index %int_0
+               OpStore %i %int_0
+               OpBranch %61
+         %61 = OpLabel
+               OpLoopMerge %62 %63 None
+               OpBranch %64
+         %64 = OpLabel
+         %65 = OpLoad %int %i
+         %66 = OpSLessThan %bool %65 %int_256
+               OpBranchConditional %66 %67 %62
+         %67 = OpLabel
+         %68 = OpLoad %int %condition_index
+         %69 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_0 %68
+         %70 = OpLoad %int %69
+         %71 = OpIEqual %bool %70 %int_0
+               OpSelectionMerge %72 None
+               OpBranchConditional %71 %73 %74
+         %73 = OpLabel
+         %75 = OpLoad %uint %base_index_out
+         %76 = OpLoad %int %index_out0
+         %77 = OpBitcast %uint %76
+         %78 = OpIAdd %uint %75 %77
+         %79 = OpLoad %uint %base_index_in
+         %80 = OpLoad %int %index_in0
+         %81 = OpBitcast %uint %80
+         %82 = OpIAdd %uint %79 %81
+         %83 = OpAccessChain %_ptr_StorageBuffer_int %__1 %int_0 %82
+         %84 = OpLoad %int %83
+         %85 = OpAccessChain %_ptr_StorageBuffer_int %__0 %int_0 %78
+               OpStore %85 %84
+         %86 = OpLoad %int %index_out0
+         %87 = OpIAdd %int %86 %int_1
+               OpStore %index_out0 %87
+         %88 = OpLoad %int %index_in1
+         %89 = OpIAdd %int %88 %int_1
+               OpStore %index_in1 %89
+               OpBranch %72
+         %74 = OpLabel
+         %90 = OpLoad %uint %base_index_out
+         %91 = OpLoad %int %index_out1
+         %92 = OpBitcast %uint %91
+         %93 = OpIAdd %uint %90 %92
+         %94 = OpLoad %uint %base_index_in
+         %95 = OpLoad %int %index_in1
+         %96 = OpBitcast %uint %95
+         %97 = OpIAdd %uint %94 %96
+         %98 = OpAccessChain %_ptr_StorageBuffer_int %__2 %int_0 %97
+         %99 = OpLoad %int %98
+        %100 = OpAccessChain %_ptr_StorageBuffer_int %__0 %int_0 %93
+               OpStore %100 %99
+        %101 = OpLoad %int %index_out1
+        %102 = OpIAdd %int %101 %int_1
+               OpStore %index_out1 %102
+        %103 = OpLoad %int %index_in1
+        %104 = OpIAdd %int %103 %int_1
+               OpStore %index_in1 %104
+               OpBranch %72
+         %72 = OpLabel
+        %105 = OpLoad %int %condition_index
+        %106 = OpIAdd %int %105 %int_1
+        %107 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_0 %106
+        %108 = OpLoad %int %107
+        %109 = OpLoad %int %condition_index
+        %110 = OpIAdd %int %109 %108
+               OpStore %condition_index %110
+        %111 = OpLoad %int %index_in0
+               OpStore %temp0 %111
+        %112 = OpLoad %int %index_in1
+               OpStore %index_in0 %112
+        %113 = OpLoad %int %temp0
+               OpStore %index_in1 %113
+        %114 = OpLoad %int %index_out0
+               OpStore %temp1 %114
+        %115 = OpLoad %int %index_out1
+               OpStore %index_out0 %115
+        %116 = OpLoad %int %temp1
+               OpStore %index_out1 %116
+               OpBranch %63
+         %63 = OpLabel
+        %117 = OpLoad %int %i
+        %118 = OpIAdd %int %117 %int_1
+               OpStore %i %118
+               OpBranch %61
+         %62 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..df55b6b
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,69 @@
+static uint3 gl_WorkGroupID = uint3(0u, 0u, 0u);
+ByteAddressBuffer x_13 : register(t2, space0);
+RWByteAddressBuffer x_15 : register(u3, space0);
+ByteAddressBuffer x_17 : register(t0, space0);
+ByteAddressBuffer x_19 : register(t1, space0);
+
+void main_1() {
+  uint base_index_in = 0u;
+  uint base_index_out = 0u;
+  int index_in0 = 0;
+  int index_in1 = 0;
+  int index_out0 = 0;
+  int index_out1 = 0;
+  int condition_index = 0;
+  int i = 0;
+  int temp0 = 0;
+  int temp1 = 0;
+  const uint x_56 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_56);
+  const uint x_59 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_59);
+  index_in0 = 0;
+  index_in1 = -128;
+  index_out0 = 0;
+  index_out1 = -128;
+  condition_index = 0;
+  i = 0;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      const int x_70 = asint(x_13.Load((4u * uint(condition_index))));
+      if ((x_70 == 0)) {
+        const uint x_75 = base_index_out;
+        const int x_76 = index_out0;
+        const int x_84 = asint(x_17.Load((4u * (base_index_in + asuint(index_in0)))));
+        x_15.Store((4u * (x_75 + asuint(x_76))), asuint(x_84));
+        index_out0 = (index_out0 + 1);
+        index_in1 = (index_in1 + 1);
+      } else {
+        const uint x_90 = base_index_out;
+        const int x_91 = index_out1;
+        const int x_99 = asint(x_19.Load((4u * (base_index_in + asuint(index_in1)))));
+        x_15.Store((4u * (x_90 + asuint(x_91))), asuint(x_99));
+        index_out1 = (index_out1 + 1);
+        index_in1 = (index_in1 + 1);
+      }
+      const int x_108 = asint(x_13.Load((4u * uint((condition_index + 1)))));
+      condition_index = (condition_index + x_108);
+      temp0 = index_in0;
+      index_in0 = index_in1;
+      index_in1 = temp0;
+      temp1 = index_out0;
+      index_out0 = index_out1;
+      index_out1 = temp1;
+    }
+  }
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 gl_WorkGroupID_param : SV_GroupID;
+};
+
+[numthreads(4, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 gl_WorkGroupID_param = tint_symbol.gl_WorkGroupID_param;
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.msl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..734a346
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  /* 0x0000 */ int arr[8];
+};
+struct In2 {
+  /* 0x0000 */ tint_array_wrapper data_in2;
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ int arr[1024];
+};
+struct Out0 {
+  /* 0x0000 */ tint_array_wrapper_1 data_out0;
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ int arr[512];
+};
+struct In0 {
+  /* 0x0000 */ tint_array_wrapper_2 data_in0;
+};
+struct In1 {
+  /* 0x0000 */ tint_array_wrapper_2 data_in1;
+};
+
+void main_1(const device In2& x_13, const device In0& x_17, device Out0& x_15, const device In1& x_19, thread uint3* const tint_symbol_2) {
+  uint base_index_in = 0u;
+  uint base_index_out = 0u;
+  int index_in0 = 0;
+  int index_in1 = 0;
+  int index_out0 = 0;
+  int index_out1 = 0;
+  int condition_index = 0;
+  int i = 0;
+  int temp0 = 0;
+  int temp1 = 0;
+  uint const x_56 = (*(tint_symbol_2)).x;
+  base_index_in = (128u * x_56);
+  uint const x_59 = (*(tint_symbol_2)).x;
+  base_index_out = (256u * x_59);
+  index_in0 = 0;
+  index_in1 = -128;
+  index_out0 = 0;
+  index_out1 = -128;
+  condition_index = 0;
+  i = 0;
+  while (true) {
+    int const x_65 = i;
+    if ((x_65 < 256)) {
+    } else {
+      break;
+    }
+    int const x_68 = condition_index;
+    int const x_70 = x_13.data_in2.arr[x_68];
+    if ((x_70 == 0)) {
+      uint const x_75 = base_index_out;
+      int const x_76 = index_out0;
+      uint const x_79 = base_index_in;
+      int const x_80 = index_in0;
+      int const x_84 = x_17.data_in0.arr[(x_79 + as_type<uint>(x_80))];
+      x_15.data_out0.arr[(x_75 + as_type<uint>(x_76))] = x_84;
+      int const x_86 = index_out0;
+      index_out0 = (x_86 + 1);
+      int const x_88 = index_in1;
+      index_in1 = (x_88 + 1);
+    } else {
+      uint const x_90 = base_index_out;
+      int const x_91 = index_out1;
+      uint const x_94 = base_index_in;
+      int const x_95 = index_in1;
+      int const x_99 = x_19.data_in1.arr[(x_94 + as_type<uint>(x_95))];
+      x_15.data_out0.arr[(x_90 + as_type<uint>(x_91))] = x_99;
+      int const x_101 = index_out1;
+      index_out1 = (x_101 + 1);
+      int const x_103 = index_in1;
+      index_in1 = (x_103 + 1);
+    }
+    int const x_105 = condition_index;
+    int const x_108 = x_13.data_in2.arr[(x_105 + 1)];
+    int const x_109 = condition_index;
+    condition_index = (x_109 + x_108);
+    int const x_111 = index_in0;
+    temp0 = x_111;
+    int const x_112 = index_in1;
+    index_in0 = x_112;
+    int const x_113 = temp0;
+    index_in1 = x_113;
+    int const x_114 = index_out0;
+    temp1 = x_114;
+    int const x_115 = index_out1;
+    index_out0 = x_115;
+    int const x_116 = temp1;
+    index_out1 = x_116;
+    {
+      int const x_117 = i;
+      i = (x_117 + 1);
+    }
+  }
+  return;
+}
+
+kernel void tint_symbol(uint3 gl_WorkGroupID_param [[threadgroup_position_in_grid]], const device In2& x_13 [[buffer(2)]], const device In0& x_17 [[buffer(0)]], device Out0& x_15 [[buffer(3)]], const device In1& x_19 [[buffer(1)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = gl_WorkGroupID_param;
+  main_1(x_13, x_17, x_15, x_19, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..fd4ea43
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,222 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 125
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 4 1 1
+               OpName %gl_WorkGroupID "gl_WorkGroupID"
+               OpName %In2 "In2"
+               OpMemberName %In2 0 "data_in2"
+               OpName %x_13 "x_13"
+               OpName %Out0 "Out0"
+               OpMemberName %Out0 0 "data_out0"
+               OpName %x_15 "x_15"
+               OpName %In0 "In0"
+               OpMemberName %In0 0 "data_in0"
+               OpName %x_17 "x_17"
+               OpName %In1 "In1"
+               OpMemberName %In1 0 "data_in1"
+               OpName %x_19 "x_19"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %base_index_in "base_index_in"
+               OpName %base_index_out "base_index_out"
+               OpName %index_in0 "index_in0"
+               OpName %index_in1 "index_in1"
+               OpName %index_out0 "index_out0"
+               OpName %index_out1 "index_out1"
+               OpName %condition_index "condition_index"
+               OpName %i "i"
+               OpName %temp0 "temp0"
+               OpName %temp1 "temp1"
+               OpName %main "main"
+               OpDecorate %In2 Block
+               OpMemberDecorate %In2 0 Offset 0
+               OpDecorate %_arr_int_uint_8 ArrayStride 4
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 2
+               OpDecorate %Out0 Block
+               OpMemberDecorate %Out0 0 Offset 0
+               OpDecorate %_arr_int_uint_1024 ArrayStride 4
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 3
+               OpDecorate %In0 Block
+               OpMemberDecorate %In0 0 Offset 0
+               OpDecorate %_arr_int_uint_512 ArrayStride 4
+               OpDecorate %x_17 NonWritable
+               OpDecorate %x_17 DescriptorSet 0
+               OpDecorate %x_17 Binding 0
+               OpDecorate %In1 Block
+               OpMemberDecorate %In1 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 1
+               OpDecorate %tint_symbol BuiltIn WorkgroupId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+%gl_WorkGroupID = OpVariable %_ptr_Private_v3uint Private %5
+        %int = OpTypeInt 32 1
+     %uint_8 = OpConstant %uint 8
+%_arr_int_uint_8 = OpTypeArray %int %uint_8
+        %In2 = OpTypeStruct %_arr_int_uint_8
+%_ptr_StorageBuffer_In2 = OpTypePointer StorageBuffer %In2
+       %x_13 = OpVariable %_ptr_StorageBuffer_In2 StorageBuffer
+  %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+       %Out0 = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_Out0 = OpTypePointer StorageBuffer %Out0
+       %x_15 = OpVariable %_ptr_StorageBuffer_Out0 StorageBuffer
+   %uint_512 = OpConstant %uint 512
+%_arr_int_uint_512 = OpTypeArray %int %uint_512
+        %In0 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In0 = OpTypePointer StorageBuffer %In0
+       %x_17 = OpVariable %_ptr_StorageBuffer_In0 StorageBuffer
+        %In1 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In1 = OpTypePointer StorageBuffer %In1
+       %x_19 = OpVariable %_ptr_StorageBuffer_In1 StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %33 = OpConstantNull %uint
+%_ptr_Function_int = OpTypePointer Function %int
+         %37 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+   %uint_128 = OpConstant %uint 128
+   %uint_256 = OpConstant %uint 256
+      %int_0 = OpConstant %int 0
+   %int_n128 = OpConstant %int -128
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_1 = OpConstant %int 1
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+%base_index_in = OpVariable %_ptr_Function_uint Function %33
+%base_index_out = OpVariable %_ptr_Function_uint Function %33
+  %index_in0 = OpVariable %_ptr_Function_int Function %37
+  %index_in1 = OpVariable %_ptr_Function_int Function %37
+ %index_out0 = OpVariable %_ptr_Function_int Function %37
+ %index_out1 = OpVariable %_ptr_Function_int Function %37
+%condition_index = OpVariable %_ptr_Function_int Function %37
+          %i = OpVariable %_ptr_Function_int Function %37
+      %temp0 = OpVariable %_ptr_Function_int Function %37
+      %temp1 = OpVariable %_ptr_Function_int Function %37
+         %47 = OpAccessChain %_ptr_Private_uint %gl_WorkGroupID %uint_0
+         %48 = OpLoad %uint %47
+         %50 = OpIMul %uint %uint_128 %48
+               OpStore %base_index_in %50
+         %51 = OpAccessChain %_ptr_Private_uint %gl_WorkGroupID %uint_0
+         %52 = OpLoad %uint %51
+         %54 = OpIMul %uint %uint_256 %52
+               OpStore %base_index_out %54
+               OpStore %index_in0 %int_0
+               OpStore %index_in1 %int_n128
+               OpStore %index_out0 %int_0
+               OpStore %index_out1 %int_n128
+               OpStore %condition_index %int_0
+               OpStore %i %int_0
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %i
+         %63 = OpSLessThan %bool %61 %int_256
+               OpSelectionMerge %65 None
+               OpBranchConditional %63 %66 %67
+         %66 = OpLabel
+               OpBranch %65
+         %67 = OpLabel
+               OpBranch %58
+         %65 = OpLabel
+         %68 = OpLoad %int %condition_index
+         %70 = OpAccessChain %_ptr_StorageBuffer_int %x_13 %uint_0 %68
+         %71 = OpLoad %int %70
+         %72 = OpIEqual %bool %71 %int_0
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpLoad %uint %base_index_out
+         %77 = OpLoad %int %index_out0
+         %78 = OpLoad %uint %base_index_in
+         %79 = OpLoad %int %index_in0
+         %80 = OpBitcast %uint %79
+         %81 = OpIAdd %uint %78 %80
+         %82 = OpAccessChain %_ptr_StorageBuffer_int %x_17 %uint_0 %81
+         %83 = OpLoad %int %82
+         %84 = OpBitcast %uint %77
+         %85 = OpIAdd %uint %76 %84
+         %86 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %85
+               OpStore %86 %83
+         %87 = OpLoad %int %index_out0
+         %89 = OpIAdd %int %87 %int_1
+               OpStore %index_out0 %89
+         %90 = OpLoad %int %index_in1
+         %91 = OpIAdd %int %90 %int_1
+               OpStore %index_in1 %91
+               OpBranch %73
+         %75 = OpLabel
+         %92 = OpLoad %uint %base_index_out
+         %93 = OpLoad %int %index_out1
+         %94 = OpLoad %uint %base_index_in
+         %95 = OpLoad %int %index_in1
+         %96 = OpBitcast %uint %95
+         %97 = OpIAdd %uint %94 %96
+         %98 = OpAccessChain %_ptr_StorageBuffer_int %x_19 %uint_0 %97
+         %99 = OpLoad %int %98
+        %100 = OpBitcast %uint %93
+        %101 = OpIAdd %uint %92 %100
+        %102 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %101
+               OpStore %102 %99
+        %103 = OpLoad %int %index_out1
+        %104 = OpIAdd %int %103 %int_1
+               OpStore %index_out1 %104
+        %105 = OpLoad %int %index_in1
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %index_in1 %106
+               OpBranch %73
+         %73 = OpLabel
+        %107 = OpLoad %int %condition_index
+        %108 = OpIAdd %int %107 %int_1
+        %109 = OpAccessChain %_ptr_StorageBuffer_int %x_13 %uint_0 %108
+        %110 = OpLoad %int %109
+        %111 = OpLoad %int %condition_index
+        %112 = OpIAdd %int %111 %110
+               OpStore %condition_index %112
+        %113 = OpLoad %int %index_in0
+               OpStore %temp0 %113
+        %114 = OpLoad %int %index_in1
+               OpStore %index_in0 %114
+        %115 = OpLoad %int %temp0
+               OpStore %index_in1 %115
+        %116 = OpLoad %int %index_out0
+               OpStore %temp1 %116
+        %117 = OpLoad %int %index_out1
+               OpStore %index_out0 %117
+        %118 = OpLoad %int %temp1
+               OpStore %index_out1 %118
+               OpBranch %59
+         %59 = OpLabel
+        %119 = OpLoad %int %i
+        %120 = OpIAdd %int %119 %int_1
+               OpStore %i %120
+               OpBranch %57
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+        %122 = OpLabel
+        %123 = OpLoad %v3uint %tint_symbol
+               OpStore %gl_WorkGroupID %123
+        %124 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..6aa8659
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,120 @@
+type Arr = [[stride(4)]] array<i32, 8>;
+
+[[block]]
+struct In2 {
+  data_in2 : Arr;
+};
+
+type Arr_1 = [[stride(4)]] array<i32, 1024>;
+
+[[block]]
+struct Out0 {
+  data_out0 : Arr_1;
+};
+
+type Arr_2 = [[stride(4)]] array<i32, 512>;
+
+type Arr_3 = [[stride(4)]] array<i32, 512>;
+
+[[block]]
+struct In0 {
+  data_in0 : Arr_3;
+};
+
+[[block]]
+struct In1 {
+  data_in1 : Arr_3;
+};
+
+var<private> gl_WorkGroupID : vec3<u32>;
+
+[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+
+[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+
+[[group(0), binding(0)]] var<storage, read> x_17 : In0;
+
+[[group(0), binding(1)]] var<storage, read> x_19 : In1;
+
+fn main_1() {
+  var base_index_in : u32;
+  var base_index_out : u32;
+  var index_in0 : i32;
+  var index_in1 : i32;
+  var index_out0 : i32;
+  var index_out1 : i32;
+  var condition_index : i32;
+  var i : i32;
+  var temp0 : i32;
+  var temp1 : i32;
+  let x_56 : u32 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_56);
+  let x_59 : u32 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_59);
+  index_in0 = 0;
+  index_in1 = -128;
+  index_out0 = 0;
+  index_out1 = -128;
+  condition_index = 0;
+  i = 0;
+  loop {
+    let x_65 : i32 = i;
+    if ((x_65 < 256)) {
+    } else {
+      break;
+    }
+    let x_68 : i32 = condition_index;
+    let x_70 : i32 = x_13.data_in2[x_68];
+    if ((x_70 == 0)) {
+      let x_75 : u32 = base_index_out;
+      let x_76 : i32 = index_out0;
+      let x_79 : u32 = base_index_in;
+      let x_80 : i32 = index_in0;
+      let x_84 : i32 = x_17.data_in0[(x_79 + bitcast<u32>(x_80))];
+      x_15.data_out0[(x_75 + bitcast<u32>(x_76))] = x_84;
+      let x_86 : i32 = index_out0;
+      index_out0 = (x_86 + 1);
+      let x_88 : i32 = index_in1;
+      index_in1 = (x_88 + 1);
+    } else {
+      let x_90 : u32 = base_index_out;
+      let x_91 : i32 = index_out1;
+      let x_94 : u32 = base_index_in;
+      let x_95 : i32 = index_in1;
+      let x_99 : i32 = x_19.data_in1[(x_94 + bitcast<u32>(x_95))];
+      x_15.data_out0[(x_90 + bitcast<u32>(x_91))] = x_99;
+      let x_101 : i32 = index_out1;
+      index_out1 = (x_101 + 1);
+      let x_103 : i32 = index_in1;
+      index_in1 = (x_103 + 1);
+    }
+    let x_105 : i32 = condition_index;
+    let x_108 : i32 = x_13.data_in2[(x_105 + 1)];
+    let x_109 : i32 = condition_index;
+    condition_index = (x_109 + x_108);
+    let x_111 : i32 = index_in0;
+    temp0 = x_111;
+    let x_112 : i32 = index_in1;
+    index_in0 = x_112;
+    let x_113 : i32 = temp0;
+    index_in1 = x_113;
+    let x_114 : i32 = index_out0;
+    temp1 = x_114;
+    let x_115 : i32 = index_out1;
+    index_out0 = x_115;
+    let x_116 : i32 = temp1;
+    index_out1 = x_116;
+
+    continuing {
+      let x_117 : i32 = i;
+      i = (x_117 + 1);
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(4, 1, 1)]]
+fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
new file mode 100644
index 0000000..6aa8659
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
@@ -0,0 +1,120 @@
+type Arr = [[stride(4)]] array<i32, 8>;
+
+[[block]]
+struct In2 {
+  data_in2 : Arr;
+};
+
+type Arr_1 = [[stride(4)]] array<i32, 1024>;
+
+[[block]]
+struct Out0 {
+  data_out0 : Arr_1;
+};
+
+type Arr_2 = [[stride(4)]] array<i32, 512>;
+
+type Arr_3 = [[stride(4)]] array<i32, 512>;
+
+[[block]]
+struct In0 {
+  data_in0 : Arr_3;
+};
+
+[[block]]
+struct In1 {
+  data_in1 : Arr_3;
+};
+
+var<private> gl_WorkGroupID : vec3<u32>;
+
+[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+
+[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+
+[[group(0), binding(0)]] var<storage, read> x_17 : In0;
+
+[[group(0), binding(1)]] var<storage, read> x_19 : In1;
+
+fn main_1() {
+  var base_index_in : u32;
+  var base_index_out : u32;
+  var index_in0 : i32;
+  var index_in1 : i32;
+  var index_out0 : i32;
+  var index_out1 : i32;
+  var condition_index : i32;
+  var i : i32;
+  var temp0 : i32;
+  var temp1 : i32;
+  let x_56 : u32 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_56);
+  let x_59 : u32 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_59);
+  index_in0 = 0;
+  index_in1 = -128;
+  index_out0 = 0;
+  index_out1 = -128;
+  condition_index = 0;
+  i = 0;
+  loop {
+    let x_65 : i32 = i;
+    if ((x_65 < 256)) {
+    } else {
+      break;
+    }
+    let x_68 : i32 = condition_index;
+    let x_70 : i32 = x_13.data_in2[x_68];
+    if ((x_70 == 0)) {
+      let x_75 : u32 = base_index_out;
+      let x_76 : i32 = index_out0;
+      let x_79 : u32 = base_index_in;
+      let x_80 : i32 = index_in0;
+      let x_84 : i32 = x_17.data_in0[(x_79 + bitcast<u32>(x_80))];
+      x_15.data_out0[(x_75 + bitcast<u32>(x_76))] = x_84;
+      let x_86 : i32 = index_out0;
+      index_out0 = (x_86 + 1);
+      let x_88 : i32 = index_in1;
+      index_in1 = (x_88 + 1);
+    } else {
+      let x_90 : u32 = base_index_out;
+      let x_91 : i32 = index_out1;
+      let x_94 : u32 = base_index_in;
+      let x_95 : i32 = index_in1;
+      let x_99 : i32 = x_19.data_in1[(x_94 + bitcast<u32>(x_95))];
+      x_15.data_out0[(x_90 + bitcast<u32>(x_91))] = x_99;
+      let x_101 : i32 = index_out1;
+      index_out1 = (x_101 + 1);
+      let x_103 : i32 = index_in1;
+      index_in1 = (x_103 + 1);
+    }
+    let x_105 : i32 = condition_index;
+    let x_108 : i32 = x_13.data_in2[(x_105 + 1)];
+    let x_109 : i32 = condition_index;
+    condition_index = (x_109 + x_108);
+    let x_111 : i32 = index_in0;
+    temp0 = x_111;
+    let x_112 : i32 = index_in1;
+    index_in0 = x_112;
+    let x_113 : i32 = temp0;
+    index_in1 = x_113;
+    let x_114 : i32 = index_out0;
+    temp1 = x_114;
+    let x_115 : i32 = index_out1;
+    index_out0 = x_115;
+    let x_116 : i32 = temp1;
+    index_out1 = x_116;
+
+    continuing {
+      let x_117 : i32 = i;
+      i = (x_117 + 1);
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(4, 1, 1)]]
+fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..df55b6b
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,69 @@
+static uint3 gl_WorkGroupID = uint3(0u, 0u, 0u);
+ByteAddressBuffer x_13 : register(t2, space0);
+RWByteAddressBuffer x_15 : register(u3, space0);
+ByteAddressBuffer x_17 : register(t0, space0);
+ByteAddressBuffer x_19 : register(t1, space0);
+
+void main_1() {
+  uint base_index_in = 0u;
+  uint base_index_out = 0u;
+  int index_in0 = 0;
+  int index_in1 = 0;
+  int index_out0 = 0;
+  int index_out1 = 0;
+  int condition_index = 0;
+  int i = 0;
+  int temp0 = 0;
+  int temp1 = 0;
+  const uint x_56 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_56);
+  const uint x_59 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_59);
+  index_in0 = 0;
+  index_in1 = -128;
+  index_out0 = 0;
+  index_out1 = -128;
+  condition_index = 0;
+  i = 0;
+  {
+    for(; (i < 256); i = (i + 1)) {
+      const int x_70 = asint(x_13.Load((4u * uint(condition_index))));
+      if ((x_70 == 0)) {
+        const uint x_75 = base_index_out;
+        const int x_76 = index_out0;
+        const int x_84 = asint(x_17.Load((4u * (base_index_in + asuint(index_in0)))));
+        x_15.Store((4u * (x_75 + asuint(x_76))), asuint(x_84));
+        index_out0 = (index_out0 + 1);
+        index_in1 = (index_in1 + 1);
+      } else {
+        const uint x_90 = base_index_out;
+        const int x_91 = index_out1;
+        const int x_99 = asint(x_19.Load((4u * (base_index_in + asuint(index_in1)))));
+        x_15.Store((4u * (x_90 + asuint(x_91))), asuint(x_99));
+        index_out1 = (index_out1 + 1);
+        index_in1 = (index_in1 + 1);
+      }
+      const int x_108 = asint(x_13.Load((4u * uint((condition_index + 1)))));
+      condition_index = (condition_index + x_108);
+      temp0 = index_in0;
+      index_in0 = index_in1;
+      index_in1 = temp0;
+      temp1 = index_out0;
+      index_out0 = index_out1;
+      index_out1 = temp1;
+    }
+  }
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 gl_WorkGroupID_param : SV_GroupID;
+};
+
+[numthreads(4, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 gl_WorkGroupID_param = tint_symbol.gl_WorkGroupID_param;
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.msl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..734a346
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.msl
@@ -0,0 +1,108 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  /* 0x0000 */ int arr[8];
+};
+struct In2 {
+  /* 0x0000 */ tint_array_wrapper data_in2;
+};
+struct tint_array_wrapper_1 {
+  /* 0x0000 */ int arr[1024];
+};
+struct Out0 {
+  /* 0x0000 */ tint_array_wrapper_1 data_out0;
+};
+struct tint_array_wrapper_2 {
+  /* 0x0000 */ int arr[512];
+};
+struct In0 {
+  /* 0x0000 */ tint_array_wrapper_2 data_in0;
+};
+struct In1 {
+  /* 0x0000 */ tint_array_wrapper_2 data_in1;
+};
+
+void main_1(const device In2& x_13, const device In0& x_17, device Out0& x_15, const device In1& x_19, thread uint3* const tint_symbol_2) {
+  uint base_index_in = 0u;
+  uint base_index_out = 0u;
+  int index_in0 = 0;
+  int index_in1 = 0;
+  int index_out0 = 0;
+  int index_out1 = 0;
+  int condition_index = 0;
+  int i = 0;
+  int temp0 = 0;
+  int temp1 = 0;
+  uint const x_56 = (*(tint_symbol_2)).x;
+  base_index_in = (128u * x_56);
+  uint const x_59 = (*(tint_symbol_2)).x;
+  base_index_out = (256u * x_59);
+  index_in0 = 0;
+  index_in1 = -128;
+  index_out0 = 0;
+  index_out1 = -128;
+  condition_index = 0;
+  i = 0;
+  while (true) {
+    int const x_65 = i;
+    if ((x_65 < 256)) {
+    } else {
+      break;
+    }
+    int const x_68 = condition_index;
+    int const x_70 = x_13.data_in2.arr[x_68];
+    if ((x_70 == 0)) {
+      uint const x_75 = base_index_out;
+      int const x_76 = index_out0;
+      uint const x_79 = base_index_in;
+      int const x_80 = index_in0;
+      int const x_84 = x_17.data_in0.arr[(x_79 + as_type<uint>(x_80))];
+      x_15.data_out0.arr[(x_75 + as_type<uint>(x_76))] = x_84;
+      int const x_86 = index_out0;
+      index_out0 = (x_86 + 1);
+      int const x_88 = index_in1;
+      index_in1 = (x_88 + 1);
+    } else {
+      uint const x_90 = base_index_out;
+      int const x_91 = index_out1;
+      uint const x_94 = base_index_in;
+      int const x_95 = index_in1;
+      int const x_99 = x_19.data_in1.arr[(x_94 + as_type<uint>(x_95))];
+      x_15.data_out0.arr[(x_90 + as_type<uint>(x_91))] = x_99;
+      int const x_101 = index_out1;
+      index_out1 = (x_101 + 1);
+      int const x_103 = index_in1;
+      index_in1 = (x_103 + 1);
+    }
+    int const x_105 = condition_index;
+    int const x_108 = x_13.data_in2.arr[(x_105 + 1)];
+    int const x_109 = condition_index;
+    condition_index = (x_109 + x_108);
+    int const x_111 = index_in0;
+    temp0 = x_111;
+    int const x_112 = index_in1;
+    index_in0 = x_112;
+    int const x_113 = temp0;
+    index_in1 = x_113;
+    int const x_114 = index_out0;
+    temp1 = x_114;
+    int const x_115 = index_out1;
+    index_out0 = x_115;
+    int const x_116 = temp1;
+    index_out1 = x_116;
+    {
+      int const x_117 = i;
+      i = (x_117 + 1);
+    }
+  }
+  return;
+}
+
+kernel void tint_symbol(uint3 gl_WorkGroupID_param [[threadgroup_position_in_grid]], const device In2& x_13 [[buffer(2)]], const device In0& x_17 [[buffer(0)]], device Out0& x_15 [[buffer(3)]], const device In1& x_19 [[buffer(1)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = gl_WorkGroupID_param;
+  main_1(x_13, x_17, x_15, x_19, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..fd4ea43
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,222 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 125
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 4 1 1
+               OpName %gl_WorkGroupID "gl_WorkGroupID"
+               OpName %In2 "In2"
+               OpMemberName %In2 0 "data_in2"
+               OpName %x_13 "x_13"
+               OpName %Out0 "Out0"
+               OpMemberName %Out0 0 "data_out0"
+               OpName %x_15 "x_15"
+               OpName %In0 "In0"
+               OpMemberName %In0 0 "data_in0"
+               OpName %x_17 "x_17"
+               OpName %In1 "In1"
+               OpMemberName %In1 0 "data_in1"
+               OpName %x_19 "x_19"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %base_index_in "base_index_in"
+               OpName %base_index_out "base_index_out"
+               OpName %index_in0 "index_in0"
+               OpName %index_in1 "index_in1"
+               OpName %index_out0 "index_out0"
+               OpName %index_out1 "index_out1"
+               OpName %condition_index "condition_index"
+               OpName %i "i"
+               OpName %temp0 "temp0"
+               OpName %temp1 "temp1"
+               OpName %main "main"
+               OpDecorate %In2 Block
+               OpMemberDecorate %In2 0 Offset 0
+               OpDecorate %_arr_int_uint_8 ArrayStride 4
+               OpDecorate %x_13 NonWritable
+               OpDecorate %x_13 DescriptorSet 0
+               OpDecorate %x_13 Binding 2
+               OpDecorate %Out0 Block
+               OpMemberDecorate %Out0 0 Offset 0
+               OpDecorate %_arr_int_uint_1024 ArrayStride 4
+               OpDecorate %x_15 DescriptorSet 0
+               OpDecorate %x_15 Binding 3
+               OpDecorate %In0 Block
+               OpMemberDecorate %In0 0 Offset 0
+               OpDecorate %_arr_int_uint_512 ArrayStride 4
+               OpDecorate %x_17 NonWritable
+               OpDecorate %x_17 DescriptorSet 0
+               OpDecorate %x_17 Binding 0
+               OpDecorate %In1 Block
+               OpMemberDecorate %In1 0 Offset 0
+               OpDecorate %x_19 NonWritable
+               OpDecorate %x_19 DescriptorSet 0
+               OpDecorate %x_19 Binding 1
+               OpDecorate %tint_symbol BuiltIn WorkgroupId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+%gl_WorkGroupID = OpVariable %_ptr_Private_v3uint Private %5
+        %int = OpTypeInt 32 1
+     %uint_8 = OpConstant %uint 8
+%_arr_int_uint_8 = OpTypeArray %int %uint_8
+        %In2 = OpTypeStruct %_arr_int_uint_8
+%_ptr_StorageBuffer_In2 = OpTypePointer StorageBuffer %In2
+       %x_13 = OpVariable %_ptr_StorageBuffer_In2 StorageBuffer
+  %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+       %Out0 = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_Out0 = OpTypePointer StorageBuffer %Out0
+       %x_15 = OpVariable %_ptr_StorageBuffer_Out0 StorageBuffer
+   %uint_512 = OpConstant %uint 512
+%_arr_int_uint_512 = OpTypeArray %int %uint_512
+        %In0 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In0 = OpTypePointer StorageBuffer %In0
+       %x_17 = OpVariable %_ptr_StorageBuffer_In0 StorageBuffer
+        %In1 = OpTypeStruct %_arr_int_uint_512
+%_ptr_StorageBuffer_In1 = OpTypePointer StorageBuffer %In1
+       %x_19 = OpVariable %_ptr_StorageBuffer_In1 StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %27 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %33 = OpConstantNull %uint
+%_ptr_Function_int = OpTypePointer Function %int
+         %37 = OpConstantNull %int
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+   %uint_128 = OpConstant %uint 128
+   %uint_256 = OpConstant %uint 256
+      %int_0 = OpConstant %int 0
+   %int_n128 = OpConstant %int -128
+    %int_256 = OpConstant %int 256
+       %bool = OpTypeBool
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_1 = OpConstant %int 1
+     %main_1 = OpFunction %void None %27
+         %30 = OpLabel
+%base_index_in = OpVariable %_ptr_Function_uint Function %33
+%base_index_out = OpVariable %_ptr_Function_uint Function %33
+  %index_in0 = OpVariable %_ptr_Function_int Function %37
+  %index_in1 = OpVariable %_ptr_Function_int Function %37
+ %index_out0 = OpVariable %_ptr_Function_int Function %37
+ %index_out1 = OpVariable %_ptr_Function_int Function %37
+%condition_index = OpVariable %_ptr_Function_int Function %37
+          %i = OpVariable %_ptr_Function_int Function %37
+      %temp0 = OpVariable %_ptr_Function_int Function %37
+      %temp1 = OpVariable %_ptr_Function_int Function %37
+         %47 = OpAccessChain %_ptr_Private_uint %gl_WorkGroupID %uint_0
+         %48 = OpLoad %uint %47
+         %50 = OpIMul %uint %uint_128 %48
+               OpStore %base_index_in %50
+         %51 = OpAccessChain %_ptr_Private_uint %gl_WorkGroupID %uint_0
+         %52 = OpLoad %uint %51
+         %54 = OpIMul %uint %uint_256 %52
+               OpStore %base_index_out %54
+               OpStore %index_in0 %int_0
+               OpStore %index_in1 %int_n128
+               OpStore %index_out0 %int_0
+               OpStore %index_out1 %int_n128
+               OpStore %condition_index %int_0
+               OpStore %i %int_0
+               OpBranch %57
+         %57 = OpLabel
+               OpLoopMerge %58 %59 None
+               OpBranch %60
+         %60 = OpLabel
+         %61 = OpLoad %int %i
+         %63 = OpSLessThan %bool %61 %int_256
+               OpSelectionMerge %65 None
+               OpBranchConditional %63 %66 %67
+         %66 = OpLabel
+               OpBranch %65
+         %67 = OpLabel
+               OpBranch %58
+         %65 = OpLabel
+         %68 = OpLoad %int %condition_index
+         %70 = OpAccessChain %_ptr_StorageBuffer_int %x_13 %uint_0 %68
+         %71 = OpLoad %int %70
+         %72 = OpIEqual %bool %71 %int_0
+               OpSelectionMerge %73 None
+               OpBranchConditional %72 %74 %75
+         %74 = OpLabel
+         %76 = OpLoad %uint %base_index_out
+         %77 = OpLoad %int %index_out0
+         %78 = OpLoad %uint %base_index_in
+         %79 = OpLoad %int %index_in0
+         %80 = OpBitcast %uint %79
+         %81 = OpIAdd %uint %78 %80
+         %82 = OpAccessChain %_ptr_StorageBuffer_int %x_17 %uint_0 %81
+         %83 = OpLoad %int %82
+         %84 = OpBitcast %uint %77
+         %85 = OpIAdd %uint %76 %84
+         %86 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %85
+               OpStore %86 %83
+         %87 = OpLoad %int %index_out0
+         %89 = OpIAdd %int %87 %int_1
+               OpStore %index_out0 %89
+         %90 = OpLoad %int %index_in1
+         %91 = OpIAdd %int %90 %int_1
+               OpStore %index_in1 %91
+               OpBranch %73
+         %75 = OpLabel
+         %92 = OpLoad %uint %base_index_out
+         %93 = OpLoad %int %index_out1
+         %94 = OpLoad %uint %base_index_in
+         %95 = OpLoad %int %index_in1
+         %96 = OpBitcast %uint %95
+         %97 = OpIAdd %uint %94 %96
+         %98 = OpAccessChain %_ptr_StorageBuffer_int %x_19 %uint_0 %97
+         %99 = OpLoad %int %98
+        %100 = OpBitcast %uint %93
+        %101 = OpIAdd %uint %92 %100
+        %102 = OpAccessChain %_ptr_StorageBuffer_int %x_15 %uint_0 %101
+               OpStore %102 %99
+        %103 = OpLoad %int %index_out1
+        %104 = OpIAdd %int %103 %int_1
+               OpStore %index_out1 %104
+        %105 = OpLoad %int %index_in1
+        %106 = OpIAdd %int %105 %int_1
+               OpStore %index_in1 %106
+               OpBranch %73
+         %73 = OpLabel
+        %107 = OpLoad %int %condition_index
+        %108 = OpIAdd %int %107 %int_1
+        %109 = OpAccessChain %_ptr_StorageBuffer_int %x_13 %uint_0 %108
+        %110 = OpLoad %int %109
+        %111 = OpLoad %int %condition_index
+        %112 = OpIAdd %int %111 %110
+               OpStore %condition_index %112
+        %113 = OpLoad %int %index_in0
+               OpStore %temp0 %113
+        %114 = OpLoad %int %index_in1
+               OpStore %index_in0 %114
+        %115 = OpLoad %int %temp0
+               OpStore %index_in1 %115
+        %116 = OpLoad %int %index_out0
+               OpStore %temp1 %116
+        %117 = OpLoad %int %index_out1
+               OpStore %index_out0 %117
+        %118 = OpLoad %int %temp1
+               OpStore %index_out1 %118
+               OpBranch %59
+         %59 = OpLabel
+        %119 = OpLoad %int %i
+        %120 = OpIAdd %int %119 %int_1
+               OpStore %i %120
+               OpBranch %57
+         %58 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+        %122 = OpLabel
+        %123 = OpLoad %v3uint %tint_symbol
+               OpStore %gl_WorkGroupID %123
+        %124 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..6aa8659
--- /dev/null
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,120 @@
+type Arr = [[stride(4)]] array<i32, 8>;
+
+[[block]]
+struct In2 {
+  data_in2 : Arr;
+};
+
+type Arr_1 = [[stride(4)]] array<i32, 1024>;
+
+[[block]]
+struct Out0 {
+  data_out0 : Arr_1;
+};
+
+type Arr_2 = [[stride(4)]] array<i32, 512>;
+
+type Arr_3 = [[stride(4)]] array<i32, 512>;
+
+[[block]]
+struct In0 {
+  data_in0 : Arr_3;
+};
+
+[[block]]
+struct In1 {
+  data_in1 : Arr_3;
+};
+
+var<private> gl_WorkGroupID : vec3<u32>;
+
+[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+
+[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+
+[[group(0), binding(0)]] var<storage, read> x_17 : In0;
+
+[[group(0), binding(1)]] var<storage, read> x_19 : In1;
+
+fn main_1() {
+  var base_index_in : u32;
+  var base_index_out : u32;
+  var index_in0 : i32;
+  var index_in1 : i32;
+  var index_out0 : i32;
+  var index_out1 : i32;
+  var condition_index : i32;
+  var i : i32;
+  var temp0 : i32;
+  var temp1 : i32;
+  let x_56 : u32 = gl_WorkGroupID.x;
+  base_index_in = (128u * x_56);
+  let x_59 : u32 = gl_WorkGroupID.x;
+  base_index_out = (256u * x_59);
+  index_in0 = 0;
+  index_in1 = -128;
+  index_out0 = 0;
+  index_out1 = -128;
+  condition_index = 0;
+  i = 0;
+  loop {
+    let x_65 : i32 = i;
+    if ((x_65 < 256)) {
+    } else {
+      break;
+    }
+    let x_68 : i32 = condition_index;
+    let x_70 : i32 = x_13.data_in2[x_68];
+    if ((x_70 == 0)) {
+      let x_75 : u32 = base_index_out;
+      let x_76 : i32 = index_out0;
+      let x_79 : u32 = base_index_in;
+      let x_80 : i32 = index_in0;
+      let x_84 : i32 = x_17.data_in0[(x_79 + bitcast<u32>(x_80))];
+      x_15.data_out0[(x_75 + bitcast<u32>(x_76))] = x_84;
+      let x_86 : i32 = index_out0;
+      index_out0 = (x_86 + 1);
+      let x_88 : i32 = index_in1;
+      index_in1 = (x_88 + 1);
+    } else {
+      let x_90 : u32 = base_index_out;
+      let x_91 : i32 = index_out1;
+      let x_94 : u32 = base_index_in;
+      let x_95 : i32 = index_in1;
+      let x_99 : i32 = x_19.data_in1[(x_94 + bitcast<u32>(x_95))];
+      x_15.data_out0[(x_90 + bitcast<u32>(x_91))] = x_99;
+      let x_101 : i32 = index_out1;
+      index_out1 = (x_101 + 1);
+      let x_103 : i32 = index_in1;
+      index_in1 = (x_103 + 1);
+    }
+    let x_105 : i32 = condition_index;
+    let x_108 : i32 = x_13.data_in2[(x_105 + 1)];
+    let x_109 : i32 = condition_index;
+    condition_index = (x_109 + x_108);
+    let x_111 : i32 = index_in0;
+    temp0 = x_111;
+    let x_112 : i32 = index_in1;
+    index_in0 = x_112;
+    let x_113 : i32 = temp0;
+    index_in1 = x_113;
+    let x_114 : i32 = index_out0;
+    temp1 = x_114;
+    let x_115 : i32 = index_out1;
+    index_out0 = x_115;
+    let x_116 : i32 = temp1;
+    index_out1 = x_116;
+
+    continuing {
+      let x_117 : i32 = i;
+      i = (x_117 + 1);
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(4, 1, 1)]]
+fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+  gl_WorkGroupID = gl_WorkGroupID_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm
new file mode 100644
index 0000000..38520f7
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm
@@ -0,0 +1,22 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %color
+               OpExecutionMode %main OriginUpperLeft
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %color "color"
+               OpDecorate %color Location 0
+       %void = OpTypeVoid
+          %5 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+      %color = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+         %10 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+       %main = OpFunction %void None %5
+         %11 = OpLabel
+               OpStore %color %10
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.hlsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..bd7ca9f
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.hlsl
@@ -0,0 +1,20 @@
+static float4 color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 color_1;
+};
+struct tint_symbol {
+  float4 color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.msl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.msl
new file mode 100644
index 0000000..8c9629d
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.msl
@@ -0,0 +1,23 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_1;
+};
+struct tint_symbol_1 {
+  float4 color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.color_1=tint_symbol_2.color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.spvasm b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..7964ca8
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.spvasm
@@ -0,0 +1,52 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 26
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %color "color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+      %color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+         %13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %14 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+               OpStore %color %13
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %14
+%tint_symbol = OpFunctionParameter %main_out
+         %18 = OpLabel
+         %19 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %19
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %main_1
+         %24 = OpLoad %v4float %color
+         %25 = OpCompositeConstruct %main_out %24
+         %23 = OpFunctionCall %void %tint_symbol_2 %25
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..c1d101c
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.spvasm.expected.wgsl
@@ -0,0 +1,17 @@
+var<private> color : vec4<f32>;
+
+fn main_1() {
+  color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color);
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
new file mode 100644
index 0000000..c1d101c
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
@@ -0,0 +1,17 @@
+var<private> color : vec4<f32>;
+
+fn main_1() {
+  color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color);
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.hlsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..bd7ca9f
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.hlsl
@@ -0,0 +1,20 @@
+static float4 color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 color_1;
+};
+struct tint_symbol {
+  float4 color_1 : SV_Target0;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.msl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.msl
new file mode 100644
index 0000000..8c9629d
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.msl
@@ -0,0 +1,23 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_1;
+};
+struct tint_symbol_1 {
+  float4 color_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_4) {
+  *(tint_symbol_4) = float4(1.0f, 1.0f, 1.0f, 1.0f);
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_5 = 0.0f;
+  main_1(&(tint_symbol_5));
+  main_out const tint_symbol_2 = {.color_1=tint_symbol_5};
+  tint_symbol_1 const tint_symbol_3 = {.color_1=tint_symbol_2.color_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.spvasm b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..7964ca8
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.spvasm
@@ -0,0 +1,52 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 26
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1
+               OpExecutionMode %main OriginUpperLeft
+               OpName %color "color"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+      %color = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+         %13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+   %main_out = OpTypeStruct %v4float
+         %14 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %8
+         %11 = OpLabel
+               OpStore %color %13
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %14
+%tint_symbol = OpFunctionParameter %main_out
+         %18 = OpLabel
+         %19 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %19
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %8
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %main_1
+         %24 = OpLoad %v4float %color
+         %25 = OpCompositeConstruct %main_out %24
+         %23 = OpFunctionCall %void %tint_symbol_2 %25
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..c1d101c
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+var<private> color : vec4<f32>;
+
+fn main_1() {
+  color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color);
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm
new file mode 100644
index 0000000..5b5e77b
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm
@@ -0,0 +1,39 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %color_out %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %color_out "color_out"
+               OpName %texture "texture"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpDecorate %color_out Location 0
+               OpDecorate %texture DescriptorSet 0
+               OpDecorate %texture Binding 0
+               OpDecorate %texture NonWritable
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+  %color_out = OpVariable %_ptr_Output_v4float Output
+         %11 = OpTypeImage %float 2D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+    %texture = OpVariable %_ptr_UniformConstant_11 UniformConstant
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+    %v2float = OpTypeVector %float 2
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+       %main = OpFunction %void None %7
+         %17 = OpLabel
+         %18 = OpLoad %11 %texture
+         %19 = OpLoad %v4float %gl_FragCoord
+         %20 = OpVectorShuffle %v2float %19 %19 0 1
+         %21 = OpConvertFToS %v2int %20
+         %22 = OpImageRead %v4float %18 %21
+               OpStore %color_out %22
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.hlsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..64748f3
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.hlsl
@@ -0,0 +1,29 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+Texture2D<float4> tint_symbol : register(t0, space0);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_19 = gl_FragCoord;
+  const float4 x_22 = tint_symbol.Load(int3(float2(x_19.x, x_19.y), 0));
+  color_out = x_22;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_2 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_3 {
+  float4 color_out_1 : SV_Target0;
+};
+
+tint_symbol_3 main(tint_symbol_2 tint_symbol_1) {
+  const float4 gl_FragCoord_param = tint_symbol_1.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_4 = {color_out};
+  const tint_symbol_3 tint_symbol_5 = {tint_symbol_4.color_out_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.msl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.msl
new file mode 100644
index 0000000..43e2437
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_3 {
+  float4 color_out_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, texture2d<float, access::read> tint_symbol_7, thread float4* const tint_symbol_8) {
+  float4 const x_19 = *(tint_symbol_6);
+  float4 const x_22 = tint_symbol_7.read(uint2(int2(float2(x_19.x, x_19.y))));
+  *(tint_symbol_8) = x_22;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol_1(texture2d<float, access::read> tint_symbol_10 [[texture(0)]], float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(&(tint_symbol_9), tint_symbol_10, &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.color_out_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.color_out_1=tint_symbol_4.color_out_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.spvasm b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..5055955
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.spvasm
@@ -0,0 +1,75 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %color_out "color_out"
+               OpName %texture "texture"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %texture NonWritable
+               OpDecorate %texture DescriptorSet 0
+               OpDecorate %texture Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+          %8 = OpTypeImage %float 2D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_8 = OpTypePointer UniformConstant %8
+    %texture = OpVariable %_ptr_UniformConstant_8 UniformConstant
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+    %v2float = OpTypeVector %float 2
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %gl_FragCoord
+         %20 = OpLoad %8 %texture
+         %25 = OpCompositeExtract %float %18 0
+         %26 = OpCompositeExtract %float %18 1
+         %27 = OpCompositeConstruct %v2float %25 %26
+         %21 = OpConvertFToS %v2int %27
+         %19 = OpImageRead %v4float %20 %21
+               OpStore %color_out %19
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %color_out
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..85b125f
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.spvasm.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> color_out : vec4<f32>;
+
+[[group(0), binding(0)]] var texture : texture_storage_2d<rgba8unorm, read>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  let x_19 : vec4<f32> = gl_FragCoord;
+  let x_22 : vec4<f32> = textureLoad(texture, vec2<i32>(vec2<f32>(x_19.x, x_19.y)));
+  color_out = x_22;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(color_out);
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
new file mode 100644
index 0000000..85b125f
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
@@ -0,0 +1,24 @@
+var<private> color_out : vec4<f32>;
+
+[[group(0), binding(0)]] var texture : texture_storage_2d<rgba8unorm, read>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  let x_19 : vec4<f32> = gl_FragCoord;
+  let x_22 : vec4<f32> = textureLoad(texture, vec2<i32>(vec2<f32>(x_19.x, x_19.y)));
+  color_out = x_22;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(color_out);
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.hlsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..64748f3
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.hlsl
@@ -0,0 +1,29 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+Texture2D<float4> tint_symbol : register(t0, space0);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_19 = gl_FragCoord;
+  const float4 x_22 = tint_symbol.Load(int3(float2(x_19.x, x_19.y), 0));
+  color_out = x_22;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_2 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_3 {
+  float4 color_out_1 : SV_Target0;
+};
+
+tint_symbol_3 main(tint_symbol_2 tint_symbol_1) {
+  const float4 gl_FragCoord_param = tint_symbol_1.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_4 = {color_out};
+  const tint_symbol_3 tint_symbol_5 = {tint_symbol_4.color_out_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.msl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.msl
new file mode 100644
index 0000000..43e2437
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_3 {
+  float4 color_out_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, texture2d<float, access::read> tint_symbol_7, thread float4* const tint_symbol_8) {
+  float4 const x_19 = *(tint_symbol_6);
+  float4 const x_22 = tint_symbol_7.read(uint2(int2(float2(x_19.x, x_19.y))));
+  *(tint_symbol_8) = x_22;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol_1(texture2d<float, access::read> tint_symbol_10 [[texture(0)]], float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_11 = 0.0f;
+  tint_symbol_9 = gl_FragCoord_param;
+  main_1(&(tint_symbol_9), tint_symbol_10, &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.color_out_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.color_out_1=tint_symbol_4.color_out_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.spvasm b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..5055955
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.spvasm
@@ -0,0 +1,75 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %color_out "color_out"
+               OpName %texture "texture"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %texture NonWritable
+               OpDecorate %texture DescriptorSet 0
+               OpDecorate %texture Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+          %8 = OpTypeImage %float 2D 0 0 0 2 Rgba8
+%_ptr_UniformConstant_8 = OpTypePointer UniformConstant %8
+    %texture = OpVariable %_ptr_UniformConstant_8 UniformConstant
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+    %v2float = OpTypeVector %float 2
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %gl_FragCoord
+         %20 = OpLoad %8 %texture
+         %25 = OpCompositeExtract %float %18 0
+         %26 = OpCompositeExtract %float %18 1
+         %27 = OpCompositeConstruct %v2float %25 %26
+         %21 = OpConvertFToS %v2int %27
+         %19 = OpImageRead %v4float %20 %21
+               OpStore %color_out %19
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %color_out
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..85b125f
--- /dev/null
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl.expected.wgsl
@@ -0,0 +1,24 @@
+var<private> color_out : vec4<f32>;
+
+[[group(0), binding(0)]] var texture : texture_storage_2d<rgba8unorm, read>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  let x_19 : vec4<f32> = gl_FragCoord;
+  let x_22 : vec4<f32> = textureLoad(texture, vec2<i32>(vec2<f32>(x_19.x, x_19.y)));
+  color_out = x_22;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(color_out);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm
new file mode 100644
index 0000000..e24aea7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm
@@ -0,0 +1,84 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpSource ESSL 320
+               OpName %main "main"
+               OpName %Buf1 "Buf1"
+               OpMemberName %Buf1 0 "result"
+               OpName %_ ""
+               OpName %i "i"
+               OpName %Buf0 "Buf0"
+               OpMemberName %Buf0 0 "values"
+               OpName %__0 ""
+               OpMemberDecorate %Buf1 0 Offset 0
+               OpDecorate %Buf1 Block
+               OpDecorate %_ DescriptorSet 0
+               OpDecorate %_ Binding 1
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpMemberDecorate %Buf0 0 Offset 0
+               OpDecorate %Buf0 Block
+               OpDecorate %__0 DescriptorSet 0
+               OpDecorate %__0 Binding 0
+               OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %Buf1 = OpTypeStruct %int
+%_ptr_StorageBuffer_Buf1 = OpTypePointer StorageBuffer %Buf1
+          %_ = OpVariable %_ptr_StorageBuffer_Buf1 StorageBuffer
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+       %uint = OpTypeInt 32 0
+%_ptr_Function_uint = OpTypePointer Function %uint
+     %uint_0 = OpConstant %uint 0
+   %uint_512 = OpConstant %uint 512
+       %bool = OpTypeBool
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+       %Buf0 = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_Buf0 = OpTypePointer StorageBuffer %Buf0
+        %__0 = OpVariable %_ptr_StorageBuffer_Buf0 StorageBuffer
+     %uint_2 = OpConstant %uint 2
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+     %v3uint = OpTypeVector %uint 3
+     %uint_1 = OpConstant %uint 1
+%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
+       %main = OpFunction %void None %11
+         %27 = OpLabel
+          %i = OpVariable %_ptr_Function_uint Function
+         %28 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_0
+               OpStore %28 %int_1
+               OpStore %i %uint_0
+               OpBranch %29
+         %29 = OpLabel
+               OpLoopMerge %30 %31 None
+               OpBranch %32
+         %32 = OpLabel
+         %33 = OpLoad %uint %i
+         %34 = OpULessThan %bool %33 %uint_512
+               OpBranchConditional %34 %35 %30
+         %35 = OpLabel
+         %36 = OpLoad %uint %i
+         %37 = OpIMul %uint %36 %uint_2
+         %38 = OpAccessChain %_ptr_StorageBuffer_uint %__0 %int_0 %37
+         %39 = OpLoad %uint %38
+         %40 = OpLoad %uint %i
+         %41 = OpINotEqual %bool %39 %40
+               OpSelectionMerge %42 None
+               OpBranchConditional %41 %43 %42
+         %43 = OpLabel
+         %44 = OpAccessChain %_ptr_StorageBuffer_int %_ %int_0
+               OpStore %44 %int_0
+               OpBranch %42
+         %42 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+         %45 = OpLoad %uint %i
+         %46 = OpIAdd %uint %45 %int_1
+               OpStore %i %46
+               OpBranch %29
+         %30 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..db86fa5
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.hlsl
@@ -0,0 +1,23 @@
+RWByteAddressBuffer x_4 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u0, space0);
+
+void main_1() {
+  uint i = 0u;
+  x_4.Store(0u, asuint(1));
+  i = 0u;
+  {
+    for(; (i < 512u); i = (i + asuint(1))) {
+      const uint x_39 = x_7.Load((4u * (i * 2u)));
+      if ((x_39 != i)) {
+        x_4.Store(0u, asuint(0));
+      }
+    }
+  }
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.msl
new file mode 100644
index 0000000..1917c7a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct Buf1 {
+  /* 0x0000 */ int result;
+};
+struct Buf0 {
+  /* 0x0000 */ uint values[1];
+};
+
+void main_1(device Buf1& x_4, device Buf0& x_7) {
+  uint i = 0u;
+  x_4.result = 1;
+  i = 0u;
+  while (true) {
+    uint const x_33 = i;
+    if ((x_33 < 512u)) {
+    } else {
+      break;
+    }
+    uint const x_36 = i;
+    uint const x_39 = x_7.values[(x_36 * 2u)];
+    uint const x_40 = i;
+    if ((x_39 != x_40)) {
+      x_4.result = 0;
+    }
+    {
+      uint const x_45 = i;
+      i = (x_45 + as_type<uint>(1));
+    }
+  }
+  return;
+}
+
+kernel void tint_symbol(device Buf1& x_4 [[buffer(1)]], device Buf0& x_7 [[buffer(0)]]) {
+  main_1(x_4, x_7);
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..9b18e23
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.spvasm
@@ -0,0 +1,96 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %Buf1 "Buf1"
+               OpMemberName %Buf1 0 "result"
+               OpName %x_4 "x_4"
+               OpName %Buf0 "Buf0"
+               OpMemberName %Buf0 0 "values"
+               OpName %x_7 "x_7"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main "main"
+               OpDecorate %Buf1 Block
+               OpMemberDecorate %Buf1 0 Offset 0
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 1
+               OpDecorate %Buf0 Block
+               OpMemberDecorate %Buf0 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+        %int = OpTypeInt 32 1
+       %Buf1 = OpTypeStruct %int
+%_ptr_StorageBuffer_Buf1 = OpTypePointer StorageBuffer %Buf1
+        %x_4 = OpVariable %_ptr_StorageBuffer_Buf1 StorageBuffer
+       %uint = OpTypeInt 32 0
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+       %Buf0 = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_Buf0 = OpTypePointer StorageBuffer %Buf0
+        %x_7 = OpVariable %_ptr_StorageBuffer_Buf0 StorageBuffer
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %16 = OpConstantNull %uint
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_1 = OpConstant %int 1
+   %uint_512 = OpConstant %uint 512
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+      %int_0 = OpConstant %int 0
+     %main_1 = OpFunction %void None %10
+         %13 = OpLabel
+          %i = OpVariable %_ptr_Function_uint Function %16
+         %19 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %19 %int_1
+               OpStore %i %uint_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %uint %i
+         %27 = OpULessThan %bool %25 %uint_512
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpBranch %29
+         %31 = OpLabel
+               OpBranch %22
+         %29 = OpLabel
+         %32 = OpLoad %uint %i
+         %34 = OpIMul %uint %32 %uint_2
+         %36 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %34
+         %37 = OpLoad %uint %36
+         %38 = OpLoad %uint %i
+         %39 = OpINotEqual %bool %37 %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %42 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %42 %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+         %44 = OpLoad %uint %i
+         %45 = OpBitcast %uint %int_1
+         %46 = OpIAdd %uint %44 %45
+               OpStore %i %46
+               OpBranch %21
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %10
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..8c7af0e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.wgsl
@@ -0,0 +1,45 @@
+[[block]]
+struct Buf1 {
+  result : i32;
+};
+
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct Buf0 {
+  values : RTArr;
+};
+
+[[group(0), binding(1)]] var<storage, read_write> x_4 : Buf1;
+
+[[group(0), binding(0)]] var<storage, read_write> x_7 : Buf0;
+
+fn main_1() {
+  var i : u32;
+  x_4.result = 1;
+  i = 0u;
+  loop {
+    let x_33 : u32 = i;
+    if ((x_33 < 512u)) {
+    } else {
+      break;
+    }
+    let x_36 : u32 = i;
+    let x_39 : u32 = x_7.values[(x_36 * 2u)];
+    let x_40 : u32 = i;
+    if ((x_39 != x_40)) {
+      x_4.result = 0;
+    }
+
+    continuing {
+      let x_45 : u32 = i;
+      i = (x_45 + bitcast<u32>(1));
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
new file mode 100644
index 0000000..8c7af0e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
@@ -0,0 +1,45 @@
+[[block]]
+struct Buf1 {
+  result : i32;
+};
+
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct Buf0 {
+  values : RTArr;
+};
+
+[[group(0), binding(1)]] var<storage, read_write> x_4 : Buf1;
+
+[[group(0), binding(0)]] var<storage, read_write> x_7 : Buf0;
+
+fn main_1() {
+  var i : u32;
+  x_4.result = 1;
+  i = 0u;
+  loop {
+    let x_33 : u32 = i;
+    if ((x_33 < 512u)) {
+    } else {
+      break;
+    }
+    let x_36 : u32 = i;
+    let x_39 : u32 = x_7.values[(x_36 * 2u)];
+    let x_40 : u32 = i;
+    if ((x_39 != x_40)) {
+      x_4.result = 0;
+    }
+
+    continuing {
+      let x_45 : u32 = i;
+      i = (x_45 + bitcast<u32>(1));
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..db86fa5
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.hlsl
@@ -0,0 +1,23 @@
+RWByteAddressBuffer x_4 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u0, space0);
+
+void main_1() {
+  uint i = 0u;
+  x_4.Store(0u, asuint(1));
+  i = 0u;
+  {
+    for(; (i < 512u); i = (i + asuint(1))) {
+      const uint x_39 = x_7.Load((4u * (i * 2u)));
+      if ((x_39 != i)) {
+        x_4.Store(0u, asuint(0));
+      }
+    }
+  }
+  return;
+}
+
+[numthreads(1, 1, 1)]
+void main() {
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.msl
new file mode 100644
index 0000000..1917c7a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct Buf1 {
+  /* 0x0000 */ int result;
+};
+struct Buf0 {
+  /* 0x0000 */ uint values[1];
+};
+
+void main_1(device Buf1& x_4, device Buf0& x_7) {
+  uint i = 0u;
+  x_4.result = 1;
+  i = 0u;
+  while (true) {
+    uint const x_33 = i;
+    if ((x_33 < 512u)) {
+    } else {
+      break;
+    }
+    uint const x_36 = i;
+    uint const x_39 = x_7.values[(x_36 * 2u)];
+    uint const x_40 = i;
+    if ((x_39 != x_40)) {
+      x_4.result = 0;
+    }
+    {
+      uint const x_45 = i;
+      i = (x_45 + as_type<uint>(1));
+    }
+  }
+  return;
+}
+
+kernel void tint_symbol(device Buf1& x_4 [[buffer(1)]], device Buf0& x_7 [[buffer(0)]]) {
+  main_1(x_4, x_7);
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..9b18e23
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.spvasm
@@ -0,0 +1,96 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main"
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %Buf1 "Buf1"
+               OpMemberName %Buf1 0 "result"
+               OpName %x_4 "x_4"
+               OpName %Buf0 "Buf0"
+               OpMemberName %Buf0 0 "values"
+               OpName %x_7 "x_7"
+               OpName %main_1 "main_1"
+               OpName %i "i"
+               OpName %main "main"
+               OpDecorate %Buf1 Block
+               OpMemberDecorate %Buf1 0 Offset 0
+               OpDecorate %x_4 DescriptorSet 0
+               OpDecorate %x_4 Binding 1
+               OpDecorate %Buf0 Block
+               OpMemberDecorate %Buf0 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 0
+        %int = OpTypeInt 32 1
+       %Buf1 = OpTypeStruct %int
+%_ptr_StorageBuffer_Buf1 = OpTypePointer StorageBuffer %Buf1
+        %x_4 = OpVariable %_ptr_StorageBuffer_Buf1 StorageBuffer
+       %uint = OpTypeInt 32 0
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+       %Buf0 = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_Buf0 = OpTypePointer StorageBuffer %Buf0
+        %x_7 = OpVariable %_ptr_StorageBuffer_Buf0 StorageBuffer
+       %void = OpTypeVoid
+         %10 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %16 = OpConstantNull %uint
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+      %int_1 = OpConstant %int 1
+   %uint_512 = OpConstant %uint 512
+       %bool = OpTypeBool
+     %uint_2 = OpConstant %uint 2
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+      %int_0 = OpConstant %int 0
+     %main_1 = OpFunction %void None %10
+         %13 = OpLabel
+          %i = OpVariable %_ptr_Function_uint Function %16
+         %19 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %19 %int_1
+               OpStore %i %uint_0
+               OpBranch %21
+         %21 = OpLabel
+               OpLoopMerge %22 %23 None
+               OpBranch %24
+         %24 = OpLabel
+         %25 = OpLoad %uint %i
+         %27 = OpULessThan %bool %25 %uint_512
+               OpSelectionMerge %29 None
+               OpBranchConditional %27 %30 %31
+         %30 = OpLabel
+               OpBranch %29
+         %31 = OpLabel
+               OpBranch %22
+         %29 = OpLabel
+         %32 = OpLoad %uint %i
+         %34 = OpIMul %uint %32 %uint_2
+         %36 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %34
+         %37 = OpLoad %uint %36
+         %38 = OpLoad %uint %i
+         %39 = OpINotEqual %bool %37 %38
+               OpSelectionMerge %40 None
+               OpBranchConditional %39 %41 %40
+         %41 = OpLabel
+         %42 = OpAccessChain %_ptr_StorageBuffer_int %x_4 %uint_0
+               OpStore %42 %int_0
+               OpBranch %40
+         %40 = OpLabel
+               OpBranch %23
+         %23 = OpLabel
+         %44 = OpLoad %uint %i
+         %45 = OpBitcast %uint %int_1
+         %46 = OpIAdd %uint %44 %45
+               OpStore %i %46
+               OpBranch %21
+         %22 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %10
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..8c7af0e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.wgsl
@@ -0,0 +1,45 @@
+[[block]]
+struct Buf1 {
+  result : i32;
+};
+
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct Buf0 {
+  values : RTArr;
+};
+
+[[group(0), binding(1)]] var<storage, read_write> x_4 : Buf1;
+
+[[group(0), binding(0)]] var<storage, read_write> x_7 : Buf0;
+
+fn main_1() {
+  var i : u32;
+  x_4.result = 1;
+  i = 0u;
+  loop {
+    let x_33 : u32 = i;
+    if ((x_33 < 512u)) {
+    } else {
+      break;
+    }
+    let x_36 : u32 = i;
+    let x_39 : u32 = x_7.values[(x_36 * 2u)];
+    let x_40 : u32 = i;
+    if ((x_39 != x_40)) {
+      x_4.result = 0;
+    }
+
+    continuing {
+      let x_45 : u32 = i;
+      i = (x_45 + bitcast<u32>(1));
+    }
+  }
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main() {
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm
new file mode 100644
index 0000000..cde9063
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %1 "main" %gl_GlobalInvocationID
+               OpExecutionMode %1 LocalSize 1 1 1
+               OpSource OpenCL_C 120
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpMemberDecorate %_struct_4 0 Offset 0
+               OpDecorate %_struct_4 BufferBlock
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 1
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 2
+       %uint = OpTypeInt 32 0
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+  %_struct_4 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_4 = OpTypePointer Uniform %_struct_4
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %5 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %6 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %1 = OpFunction %void None %11
+         %19 = OpLabel
+         %20 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %21 = OpLoad %uint %20
+         %22 = OpAccessChain %_ptr_Uniform_uint %5 %uint_0 %21
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %21
+         %25 = OpLoad %uint %24
+         %26 = OpSGreaterThan %bool %23 %25
+         %27 = OpSelect %uint %26 %uint_1 %uint_0
+         %28 = OpAccessChain %_ptr_Uniform_uint %7 %uint_0 %21
+               OpStore %28 %27
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..666291e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_2.x;
+  const uint x_23 = x_5.Load((4u * x_21));
+  const uint x_25 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(((asint(x_23) > asint(x_25)) ? 1u : 0u)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.msl
new file mode 100644
index 0000000..5a1dc97
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_5.field0[x_21];
+  uint const x_25 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (as_type<int>(x_23) > as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..21ad2a6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSGreaterThan %bool %29 %31
+         %28 = OpSelect %uint %32 %uint_1 %uint_0
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+         %37 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %37
+         %38 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..b5c093a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) > bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
new file mode 100644
index 0000000..b5c093a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) > bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..666291e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_2.x;
+  const uint x_23 = x_5.Load((4u * x_21));
+  const uint x_25 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(((asint(x_23) > asint(x_25)) ? 1u : 0u)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.msl
new file mode 100644
index 0000000..5a1dc97
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_5.field0[x_21];
+  uint const x_25 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (as_type<int>(x_23) > as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..21ad2a6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSGreaterThan %bool %29 %31
+         %28 = OpSelect %uint %32 %uint_1 %uint_0
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+         %37 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %37
+         %38 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..b5c093a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) > bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm
new file mode 100644
index 0000000..1560001
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %1 "main" %gl_GlobalInvocationID
+               OpExecutionMode %1 LocalSize 1 1 1
+               OpSource OpenCL_C 120
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpMemberDecorate %_struct_4 0 Offset 0
+               OpDecorate %_struct_4 BufferBlock
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 1
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 2
+       %uint = OpTypeInt 32 0
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+  %_struct_4 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_4 = OpTypePointer Uniform %_struct_4
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %5 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %6 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %1 = OpFunction %void None %11
+         %19 = OpLabel
+         %20 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %21 = OpLoad %uint %20
+         %22 = OpAccessChain %_ptr_Uniform_uint %5 %uint_0 %21
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %21
+         %25 = OpLoad %uint %24
+         %26 = OpSGreaterThanEqual %bool %23 %25
+         %27 = OpSelect %uint %26 %uint_1 %uint_0
+         %28 = OpAccessChain %_ptr_Uniform_uint %7 %uint_0 %21
+               OpStore %28 %27
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..95f5645
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_2.x;
+  const uint x_23 = x_5.Load((4u * x_21));
+  const uint x_25 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(((asint(x_23) >= asint(x_25)) ? 1u : 0u)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.msl
new file mode 100644
index 0000000..459deef
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_5.field0[x_21];
+  uint const x_25 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (as_type<int>(x_23) >= as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..b55f16e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSGreaterThanEqual %bool %29 %31
+         %28 = OpSelect %uint %32 %uint_1 %uint_0
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+         %37 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %37
+         %38 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..4aba7ac
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) >= bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
new file mode 100644
index 0000000..4aba7ac
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) >= bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..95f5645
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_2.x;
+  const uint x_23 = x_5.Load((4u * x_21));
+  const uint x_25 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(((asint(x_23) >= asint(x_25)) ? 1u : 0u)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.msl
new file mode 100644
index 0000000..459deef
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_5.field0[x_21];
+  uint const x_25 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (as_type<int>(x_23) >= as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..b55f16e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSGreaterThanEqual %bool %29 %31
+         %28 = OpSelect %uint %32 %uint_1 %uint_0
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+         %37 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %37
+         %38 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..4aba7ac
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) >= bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm
new file mode 100644
index 0000000..6c13257
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %1 "main" %gl_GlobalInvocationID
+               OpExecutionMode %1 LocalSize 1 1 1
+               OpSource OpenCL_C 120
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpMemberDecorate %_struct_4 0 Offset 0
+               OpDecorate %_struct_4 BufferBlock
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 1
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 2
+       %uint = OpTypeInt 32 0
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+  %_struct_4 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_4 = OpTypePointer Uniform %_struct_4
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %5 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %6 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %1 = OpFunction %void None %11
+         %19 = OpLabel
+         %20 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %21 = OpLoad %uint %20
+         %22 = OpAccessChain %_ptr_Uniform_uint %5 %uint_0 %21
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %21
+         %25 = OpLoad %uint %24
+         %26 = OpSLessThan %bool %23 %25
+         %27 = OpSelect %uint %26 %uint_1 %uint_0
+         %28 = OpAccessChain %_ptr_Uniform_uint %7 %uint_0 %21
+               OpStore %28 %27
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..03594c8
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_2.x;
+  const uint x_23 = x_5.Load((4u * x_21));
+  const uint x_25 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(((asint(x_23) < asint(x_25)) ? 1u : 0u)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.msl
new file mode 100644
index 0000000..169d49e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_5.field0[x_21];
+  uint const x_25 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (as_type<int>(x_23) < as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..19b53073
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSLessThan %bool %29 %31
+         %28 = OpSelect %uint %32 %uint_1 %uint_0
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+         %37 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %37
+         %38 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..c8fe707
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) < bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
new file mode 100644
index 0000000..c8fe707
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) < bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..03594c8
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_2.x;
+  const uint x_23 = x_5.Load((4u * x_21));
+  const uint x_25 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(((asint(x_23) < asint(x_25)) ? 1u : 0u)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.msl
new file mode 100644
index 0000000..169d49e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_5.field0[x_21];
+  uint const x_25 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (as_type<int>(x_23) < as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..19b53073
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSLessThan %bool %29 %31
+         %28 = OpSelect %uint %32 %uint_1 %uint_0
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+         %37 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %37
+         %38 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..c8fe707
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) < bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm
new file mode 100644
index 0000000..e38823e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %1 "main" %gl_GlobalInvocationID
+               OpExecutionMode %1 LocalSize 1 1 1
+               OpSource OpenCL_C 120
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpMemberDecorate %_struct_4 0 Offset 0
+               OpDecorate %_struct_4 BufferBlock
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 1
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 2
+       %uint = OpTypeInt 32 0
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+  %_struct_4 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_4 = OpTypePointer Uniform %_struct_4
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+       %bool = OpTypeBool
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %5 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %6 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %1 = OpFunction %void None %11
+         %19 = OpLabel
+         %20 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %21 = OpLoad %uint %20
+         %22 = OpAccessChain %_ptr_Uniform_uint %5 %uint_0 %21
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %21
+         %25 = OpLoad %uint %24
+         %26 = OpSLessThanEqual %bool %23 %25
+         %27 = OpSelect %uint %26 %uint_1 %uint_0
+         %28 = OpAccessChain %_ptr_Uniform_uint %7 %uint_0 %21
+               OpStore %28 %27
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..65e9ee6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_2.x;
+  const uint x_23 = x_5.Load((4u * x_21));
+  const uint x_25 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(((asint(x_23) <= asint(x_25)) ? 1u : 0u)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.msl
new file mode 100644
index 0000000..7ae0315
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_5.field0[x_21];
+  uint const x_25 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (as_type<int>(x_23) <= as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..830ac7d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSLessThanEqual %bool %29 %31
+         %28 = OpSelect %uint %32 %uint_1 %uint_0
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+         %37 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %37
+         %38 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..a8c97bf
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) <= bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
new file mode 100644
index 0000000..a8c97bf
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) <= bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..65e9ee6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_2.x;
+  const uint x_23 = x_5.Load((4u * x_21));
+  const uint x_25 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(((asint(x_23) <= asint(x_25)) ? 1u : 0u)));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.msl
new file mode 100644
index 0000000..7ae0315
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_5.field0[x_21];
+  uint const x_25 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (as_type<int>(x_23) <= as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..830ac7d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+       %bool = OpTypeBool
+     %uint_1 = OpConstant %uint 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSLessThanEqual %bool %29 %31
+         %28 = OpSelect %uint %32 %uint_1 %uint_0
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %36 = OpLabel
+         %37 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %37
+         %38 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..a8c97bf
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_2.x;
+  let x_23 : u32 = x_5.field0[x_21];
+  let x_25 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = select(0u, 1u, (bitcast<i32>(x_23) <= bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm
new file mode 100644
index 0000000..0e25dbb
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm
@@ -0,0 +1,53 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %2 "main" %gl_GlobalInvocationID
+               OpExecutionMode %2 LocalSize 1 1 1
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %_struct_5 BufferBlock
+               OpMemberDecorate %_struct_5 0 Offset 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 0
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 1
+               OpDecorate %8 DescriptorSet 0
+               OpDecorate %8 Binding 2
+               OpDecorate %9 DescriptorSet 0
+               OpDecorate %9 Binding 3
+       %uint = OpTypeInt 32 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+%_runtimearr_int = OpTypeRuntimeArray %int
+      %v4int = OpTypeVector %int 4
+%_ptr_Input_int = OpTypePointer Input %int
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+  %_struct_5 = OpTypeStruct %_runtimearr_int
+%_ptr_Uniform__struct_5 = OpTypePointer Uniform %_struct_5
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %6 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %8 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %9 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %2 = OpFunction %void None %16
+         %24 = OpLabel
+         %25 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_Uniform_int %6 %uint_0 %26
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_Uniform_int %7 %uint_0 %26
+         %30 = OpLoad %int %29
+         %31 = OpAccessChain %_ptr_Uniform_int %8 %uint_0 %26
+         %32 = OpLoad %int %31
+         %33 = OpExtInst %int %1 UClamp %28 %30 %32
+         %34 = OpAccessChain %_ptr_Uniform_int %9 %uint_0 %26
+               OpStore %34 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..09ae3b9
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+RWByteAddressBuffer x_8 : register(u2, space0);
+RWByteAddressBuffer x_9 : register(u3, space0);
+
+void main_1() {
+  const uint x_26 = x_3.x;
+  const int x_28 = asint(x_6.Load((4u * x_26)));
+  const int x_30 = asint(x_7.Load((4u * x_26)));
+  const int x_32 = asint(x_8.Load((4u * x_26)));
+  x_9.Store((4u * x_26), asuint(asint(clamp(asuint(x_28), asuint(x_30), asuint(x_32)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ef9ae4b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.msl
@@ -0,0 +1,23 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ int field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, device S& x_8, device S& x_9, thread uint3* const tint_symbol_2) {
+  uint const x_26 = (*(tint_symbol_2)).x;
+  int const x_28 = x_6.field0[x_26];
+  int const x_30 = x_7.field0[x_26];
+  int const x_32 = x_8.field0[x_26];
+  x_9.field0[x_26] = as_type<int>(clamp(as_type<uint>(x_28), as_type<uint>(x_30), as_type<uint>(x_32)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]], device S& x_8 [[buffer(2)]], device S& x_9 [[buffer(3)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, x_8, x_9, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2f44746
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,78 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+         %34 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %x_8 "x_8"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 3
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+        %int = OpTypeInt 32 1
+%_runtimearr_int = OpTypeRuntimeArray %int
+          %S = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_8 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_9 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+     %main_1 = OpFunction %void None %16
+         %19 = OpLabel
+         %22 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %23 = OpLoad %uint %22
+         %25 = OpAccessChain %_ptr_StorageBuffer_int %x_6 %uint_0 %23
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_int %x_7 %uint_0 %23
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_StorageBuffer_int %x_8 %uint_0 %23
+         %30 = OpLoad %int %29
+         %31 = OpAccessChain %_ptr_StorageBuffer_int %x_9 %uint_0 %23
+         %35 = OpBitcast %uint %26
+         %36 = OpBitcast %uint %28
+         %37 = OpBitcast %uint %30
+         %33 = OpExtInst %uint %34 UClamp %35 %36 %37
+         %32 = OpBitcast %int %33
+               OpStore %31 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %16
+         %39 = OpLabel
+         %40 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %40
+         %41 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..d03857b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,31 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+
+fn main_1() {
+  let x_26 : u32 = x_3.x;
+  let x_28 : i32 = x_6.field0[x_26];
+  let x_30 : i32 = x_7.field0[x_26];
+  let x_32 : i32 = x_8.field0[x_26];
+  x_9.field0[x_26] = bitcast<i32>(clamp(bitcast<u32>(x_28), bitcast<u32>(x_30), bitcast<u32>(x_32)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
new file mode 100644
index 0000000..d03857b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
@@ -0,0 +1,31 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+
+fn main_1() {
+  let x_26 : u32 = x_3.x;
+  let x_28 : i32 = x_6.field0[x_26];
+  let x_30 : i32 = x_7.field0[x_26];
+  let x_32 : i32 = x_8.field0[x_26];
+  x_9.field0[x_26] = bitcast<i32>(clamp(bitcast<u32>(x_28), bitcast<u32>(x_30), bitcast<u32>(x_32)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..09ae3b9
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+RWByteAddressBuffer x_8 : register(u2, space0);
+RWByteAddressBuffer x_9 : register(u3, space0);
+
+void main_1() {
+  const uint x_26 = x_3.x;
+  const int x_28 = asint(x_6.Load((4u * x_26)));
+  const int x_30 = asint(x_7.Load((4u * x_26)));
+  const int x_32 = asint(x_8.Load((4u * x_26)));
+  x_9.Store((4u * x_26), asuint(asint(clamp(asuint(x_28), asuint(x_30), asuint(x_32)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ef9ae4b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.msl
@@ -0,0 +1,23 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ int field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, device S& x_8, device S& x_9, thread uint3* const tint_symbol_2) {
+  uint const x_26 = (*(tint_symbol_2)).x;
+  int const x_28 = x_6.field0[x_26];
+  int const x_30 = x_7.field0[x_26];
+  int const x_32 = x_8.field0[x_26];
+  x_9.field0[x_26] = as_type<int>(clamp(as_type<uint>(x_28), as_type<uint>(x_30), as_type<uint>(x_32)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]], device S& x_8 [[buffer(2)]], device S& x_9 [[buffer(3)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, x_8, x_9, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2f44746
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,78 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+         %34 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %x_8 "x_8"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 3
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+        %int = OpTypeInt 32 1
+%_runtimearr_int = OpTypeRuntimeArray %int
+          %S = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_8 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_9 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+     %main_1 = OpFunction %void None %16
+         %19 = OpLabel
+         %22 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %23 = OpLoad %uint %22
+         %25 = OpAccessChain %_ptr_StorageBuffer_int %x_6 %uint_0 %23
+         %26 = OpLoad %int %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_int %x_7 %uint_0 %23
+         %28 = OpLoad %int %27
+         %29 = OpAccessChain %_ptr_StorageBuffer_int %x_8 %uint_0 %23
+         %30 = OpLoad %int %29
+         %31 = OpAccessChain %_ptr_StorageBuffer_int %x_9 %uint_0 %23
+         %35 = OpBitcast %uint %26
+         %36 = OpBitcast %uint %28
+         %37 = OpBitcast %uint %30
+         %33 = OpExtInst %uint %34 UClamp %35 %36 %37
+         %32 = OpBitcast %int %33
+               OpStore %31 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %16
+         %39 = OpLabel
+         %40 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %40
+         %41 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..d03857b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,31 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+
+fn main_1() {
+  let x_26 : u32 = x_3.x;
+  let x_28 : i32 = x_6.field0[x_26];
+  let x_30 : i32 = x_7.field0[x_26];
+  let x_32 : i32 = x_8.field0[x_26];
+  x_9.field0[x_26] = bitcast<i32>(clamp(bitcast<u32>(x_28), bitcast<u32>(x_30), bitcast<u32>(x_32)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm
new file mode 100644
index 0000000..9da709ee
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm
@@ -0,0 +1,40 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %2 "main" %gl_GlobalInvocationID
+               OpExecutionMode %2 LocalSize 1 1 1
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %_struct_5 BufferBlock
+               OpMemberDecorate %_struct_5 0 Offset 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 0
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 1
+       %uint = OpTypeInt 32 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+     %v2uint = OpTypeVector %uint 2
+  %_struct_5 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_5 = OpTypePointer Uniform %_struct_5
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %6 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %2 = OpFunction %void None %14
+         %19 = OpLabel
+         %20 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %21 = OpLoad %uint %20
+         %22 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %21
+         %23 = OpLoad %uint %22
+         %24 = OpExtInst %uint %1 SAbs %23
+         %25 = OpAccessChain %_ptr_Uniform_uint %7 %uint_0 %21
+               OpStore %25 %24
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..fd7b050
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,22 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+
+void main_1() {
+  const uint x_21 = x_3.x;
+  const uint x_23 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(asuint(abs(asint(x_23)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..dd60856
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.msl
@@ -0,0 +1,21 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_6.field0[x_21];
+  x_7.field0[x_21] = as_type<uint>(abs(as_type<int>(x_23)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..866a110
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,64 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+         %19 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %20 = OpLoad %uint %19
+         %22 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %20
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %20
+         %29 = OpBitcast %int %23
+         %26 = OpExtInst %int %28 SAbs %29
+         %25 = OpBitcast %uint %26
+               OpStore %24 %25
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %31 = OpLabel
+         %32 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %32
+         %33 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..52b1532
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,25 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_3.x;
+  let x_23 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = bitcast<u32>(abs(bitcast<i32>(x_23)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
new file mode 100644
index 0000000..52b1532
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
@@ -0,0 +1,25 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_3.x;
+  let x_23 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = bitcast<u32>(abs(bitcast<i32>(x_23)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..fd7b050
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,22 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+
+void main_1() {
+  const uint x_21 = x_3.x;
+  const uint x_23 = x_6.Load((4u * x_21));
+  x_7.Store((4u * x_21), asuint(asuint(abs(asint(x_23)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..dd60856
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.msl
@@ -0,0 +1,21 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_6.field0[x_21];
+  x_7.field0[x_21] = as_type<uint>(abs(as_type<int>(x_23)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..866a110
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+         %28 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+         %19 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %20 = OpLoad %uint %19
+         %22 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %20
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %20
+         %29 = OpBitcast %int %23
+         %26 = OpExtInst %int %28 SAbs %29
+         %25 = OpBitcast %uint %26
+               OpStore %24 %25
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %31 = OpLabel
+         %32 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %32
+         %33 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..52b1532
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_3.x;
+  let x_23 : u32 = x_6.field0[x_21];
+  x_7.field0[x_21] = bitcast<u32>(abs(bitcast<i32>(x_23)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm
new file mode 100644
index 0000000..9b588f9
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm
@@ -0,0 +1,50 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %2 "main" %gl_GlobalInvocationID
+               OpExecutionMode %2 LocalSize 1 1 1
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %_struct_5 BufferBlock
+               OpMemberDecorate %_struct_5 0 Offset 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 0
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 1
+               OpDecorate %8 DescriptorSet 0
+               OpDecorate %8 Binding 2
+               OpDecorate %9 DescriptorSet 0
+               OpDecorate %9 Binding 3
+       %uint = OpTypeInt 32 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+     %v4uint = OpTypeVector %uint 4
+  %_struct_5 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_5 = OpTypePointer Uniform %_struct_5
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %6 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %8 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %9 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %2 = OpFunction %void None %16
+         %21 = OpLabel
+         %22 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %23
+         %25 = OpLoad %uint %24
+         %26 = OpAccessChain %_ptr_Uniform_uint %7 %uint_0 %23
+         %27 = OpLoad %uint %26
+         %28 = OpAccessChain %_ptr_Uniform_uint %8 %uint_0 %23
+         %29 = OpLoad %uint %28
+         %30 = OpExtInst %uint %1 SClamp %25 %27 %29
+         %31 = OpAccessChain %_ptr_Uniform_uint %9 %uint_0 %23
+               OpStore %31 %30
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..55f55f5
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+RWByteAddressBuffer x_8 : register(u2, space0);
+RWByteAddressBuffer x_9 : register(u3, space0);
+
+void main_1() {
+  const uint x_23 = x_3.x;
+  const uint x_25 = x_6.Load((4u * x_23));
+  const uint x_27 = x_7.Load((4u * x_23));
+  const uint x_29 = x_8.Load((4u * x_23));
+  x_9.Store((4u * x_23), asuint(asuint(clamp(asint(x_25), asint(x_27), asint(x_29)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f8e42e1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.msl
@@ -0,0 +1,23 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, device S& x_8, device S& x_9, thread uint3* const tint_symbol_2) {
+  uint const x_23 = (*(tint_symbol_2)).x;
+  uint const x_25 = x_6.field0[x_23];
+  uint const x_27 = x_7.field0[x_23];
+  uint const x_29 = x_8.field0[x_23];
+  x_9.field0[x_23] = as_type<uint>(clamp(as_type<int>(x_25), as_type<int>(x_27), as_type<int>(x_29)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]], device S& x_8 [[buffer(2)]], device S& x_9 [[buffer(3)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, x_8, x_9, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..35000ef
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,78 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+         %34 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %x_8 "x_8"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 3
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_8 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_9 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %21 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %22 = OpLoad %uint %21
+         %24 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %22
+         %25 = OpLoad %uint %24
+         %26 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %22
+         %27 = OpLoad %uint %26
+         %28 = OpAccessChain %_ptr_StorageBuffer_uint %x_8 %uint_0 %22
+         %29 = OpLoad %uint %28
+         %30 = OpAccessChain %_ptr_StorageBuffer_uint %x_9 %uint_0 %22
+         %35 = OpBitcast %int %25
+         %36 = OpBitcast %int %27
+         %37 = OpBitcast %int %29
+         %32 = OpExtInst %int %34 SClamp %35 %36 %37
+         %31 = OpBitcast %uint %32
+               OpStore %30 %31
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %39 = OpLabel
+         %40 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %40
+         %41 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..e582903
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,31 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+
+fn main_1() {
+  let x_23 : u32 = x_3.x;
+  let x_25 : u32 = x_6.field0[x_23];
+  let x_27 : u32 = x_7.field0[x_23];
+  let x_29 : u32 = x_8.field0[x_23];
+  x_9.field0[x_23] = bitcast<u32>(clamp(bitcast<i32>(x_25), bitcast<i32>(x_27), bitcast<i32>(x_29)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
new file mode 100644
index 0000000..e582903
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
@@ -0,0 +1,31 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+
+fn main_1() {
+  let x_23 : u32 = x_3.x;
+  let x_25 : u32 = x_6.field0[x_23];
+  let x_27 : u32 = x_7.field0[x_23];
+  let x_29 : u32 = x_8.field0[x_23];
+  x_9.field0[x_23] = bitcast<u32>(clamp(bitcast<i32>(x_25), bitcast<i32>(x_27), bitcast<i32>(x_29)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..55f55f5
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+RWByteAddressBuffer x_8 : register(u2, space0);
+RWByteAddressBuffer x_9 : register(u3, space0);
+
+void main_1() {
+  const uint x_23 = x_3.x;
+  const uint x_25 = x_6.Load((4u * x_23));
+  const uint x_27 = x_7.Load((4u * x_23));
+  const uint x_29 = x_8.Load((4u * x_23));
+  x_9.Store((4u * x_23), asuint(asuint(clamp(asint(x_25), asint(x_27), asint(x_29)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f8e42e1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.msl
@@ -0,0 +1,23 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, device S& x_8, device S& x_9, thread uint3* const tint_symbol_2) {
+  uint const x_23 = (*(tint_symbol_2)).x;
+  uint const x_25 = x_6.field0[x_23];
+  uint const x_27 = x_7.field0[x_23];
+  uint const x_29 = x_8.field0[x_23];
+  x_9.field0[x_23] = as_type<uint>(clamp(as_type<int>(x_25), as_type<int>(x_27), as_type<int>(x_29)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]], device S& x_8 [[buffer(2)]], device S& x_9 [[buffer(3)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, x_8, x_9, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..35000ef
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,78 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+         %34 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %x_8 "x_8"
+               OpName %x_9 "x_9"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %x_9 DescriptorSet 0
+               OpDecorate %x_9 Binding 3
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_8 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_9 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %15
+         %18 = OpLabel
+         %21 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %22 = OpLoad %uint %21
+         %24 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %22
+         %25 = OpLoad %uint %24
+         %26 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %22
+         %27 = OpLoad %uint %26
+         %28 = OpAccessChain %_ptr_StorageBuffer_uint %x_8 %uint_0 %22
+         %29 = OpLoad %uint %28
+         %30 = OpAccessChain %_ptr_StorageBuffer_uint %x_9 %uint_0 %22
+         %35 = OpBitcast %int %25
+         %36 = OpBitcast %int %27
+         %37 = OpBitcast %int %29
+         %32 = OpExtInst %int %34 SClamp %35 %36 %37
+         %31 = OpBitcast %uint %32
+               OpStore %30 %31
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %15
+         %39 = OpLabel
+         %40 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %40
+         %41 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..e582903
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,31 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+
+fn main_1() {
+  let x_23 : u32 = x_3.x;
+  let x_25 : u32 = x_6.field0[x_23];
+  let x_27 : u32 = x_7.field0[x_23];
+  let x_29 : u32 = x_8.field0[x_23];
+  x_9.field0[x_23] = bitcast<u32>(clamp(bitcast<i32>(x_25), bitcast<i32>(x_27), bitcast<i32>(x_29)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm
new file mode 100644
index 0000000..e472f01
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm
@@ -0,0 +1,44 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %2 "main" %gl_GlobalInvocationID
+               OpExecutionMode %2 LocalSize 1 1 1
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %_struct_5 BufferBlock
+               OpMemberDecorate %_struct_5 0 Offset 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 0
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 1
+               OpDecorate %8 DescriptorSet 0
+               OpDecorate %8 Binding 2
+       %uint = OpTypeInt 32 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+  %_struct_5 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_5 = OpTypePointer Uniform %_struct_5
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %6 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %8 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %2 = OpFunction %void None %15
+         %19 = OpLabel
+         %20 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %21 = OpLoad %uint %20
+         %22 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %21
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_Uniform_uint %7 %uint_0 %21
+         %25 = OpLoad %uint %24
+         %26 = OpExtInst %uint %1 SMax %23 %25
+         %27 = OpAccessChain %_ptr_Uniform_uint %8 %uint_0 %21
+               OpStore %27 %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..31dbd68
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+RWByteAddressBuffer x_8 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_3.x;
+  const uint x_23 = x_6.Load((4u * x_21));
+  const uint x_25 = x_7.Load((4u * x_21));
+  x_8.Store((4u * x_21), asuint(asuint(max(asint(x_23), asint(x_25)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d2e3922
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, device S& x_8, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_6.field0[x_21];
+  uint const x_25 = x_7.field0[x_21];
+  x_8.field0[x_21] = as_type<uint>(max(as_type<int>(x_23), as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]], device S& x_8 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, x_8, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9f6c616
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,71 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 38
+; Schema: 0
+               OpCapability Shader
+         %31 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_8 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_8 %uint_0 %21
+         %32 = OpBitcast %int %24
+         %33 = OpBitcast %int %26
+         %29 = OpExtInst %int %31 SMax %32 %33
+         %28 = OpBitcast %uint %29
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+         %36 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %36
+         %37 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..883eb2a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_3.x;
+  let x_23 : u32 = x_6.field0[x_21];
+  let x_25 : u32 = x_7.field0[x_21];
+  x_8.field0[x_21] = bitcast<u32>(max(bitcast<i32>(x_23), bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
new file mode 100644
index 0000000..883eb2a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_3.x;
+  let x_23 : u32 = x_6.field0[x_21];
+  let x_25 : u32 = x_7.field0[x_21];
+  x_8.field0[x_21] = bitcast<u32>(max(bitcast<i32>(x_23), bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..31dbd68
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+RWByteAddressBuffer x_8 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_3.x;
+  const uint x_23 = x_6.Load((4u * x_21));
+  const uint x_25 = x_7.Load((4u * x_21));
+  x_8.Store((4u * x_21), asuint(asuint(max(asint(x_23), asint(x_25)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d2e3922
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, device S& x_8, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_6.field0[x_21];
+  uint const x_25 = x_7.field0[x_21];
+  x_8.field0[x_21] = as_type<uint>(max(as_type<int>(x_23), as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]], device S& x_8 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, x_8, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9f6c616
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,71 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 38
+; Schema: 0
+               OpCapability Shader
+         %31 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_8 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_8 %uint_0 %21
+         %32 = OpBitcast %int %24
+         %33 = OpBitcast %int %26
+         %29 = OpExtInst %int %31 SMax %32 %33
+         %28 = OpBitcast %uint %29
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+         %36 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %36
+         %37 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..883eb2a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_3.x;
+  let x_23 : u32 = x_6.field0[x_21];
+  let x_25 : u32 = x_7.field0[x_21];
+  x_8.field0[x_21] = bitcast<u32>(max(bitcast<i32>(x_23), bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm
new file mode 100644
index 0000000..da2186c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm
@@ -0,0 +1,44 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %2 "main" %gl_GlobalInvocationID
+               OpExecutionMode %2 LocalSize 1 1 1
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %_struct_5 BufferBlock
+               OpMemberDecorate %_struct_5 0 Offset 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 0
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 1
+               OpDecorate %8 DescriptorSet 0
+               OpDecorate %8 Binding 2
+       %uint = OpTypeInt 32 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+  %_struct_5 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_5 = OpTypePointer Uniform %_struct_5
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %6 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %8 = OpVariable %_ptr_Uniform__struct_5 Uniform
+          %2 = OpFunction %void None %15
+         %19 = OpLabel
+         %20 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %21 = OpLoad %uint %20
+         %22 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %21
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_Uniform_uint %7 %uint_0 %21
+         %25 = OpLoad %uint %24
+         %26 = OpExtInst %uint %1 SMin %23 %25
+         %27 = OpAccessChain %_ptr_Uniform_uint %8 %uint_0 %21
+               OpStore %27 %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..12b249c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+RWByteAddressBuffer x_8 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_3.x;
+  const uint x_23 = x_6.Load((4u * x_21));
+  const uint x_25 = x_7.Load((4u * x_21));
+  x_8.Store((4u * x_21), asuint(asuint(min(asint(x_23), asint(x_25)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..aa0d280
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, device S& x_8, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_6.field0[x_21];
+  uint const x_25 = x_7.field0[x_21];
+  x_8.field0[x_21] = as_type<uint>(min(as_type<int>(x_23), as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]], device S& x_8 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, x_8, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..46045f1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,71 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 38
+; Schema: 0
+               OpCapability Shader
+         %31 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_8 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_8 %uint_0 %21
+         %32 = OpBitcast %int %24
+         %33 = OpBitcast %int %26
+         %29 = OpExtInst %int %31 SMin %32 %33
+         %28 = OpBitcast %uint %29
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+         %36 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %36
+         %37 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..93b1988
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_3.x;
+  let x_23 : u32 = x_6.field0[x_21];
+  let x_25 : u32 = x_7.field0[x_21];
+  x_8.field0[x_21] = bitcast<u32>(min(bitcast<i32>(x_23), bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
new file mode 100644
index 0000000..93b1988
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_3.x;
+  let x_23 : u32 = x_6.field0[x_21];
+  let x_25 : u32 = x_7.field0[x_21];
+  x_8.field0[x_21] = bitcast<u32>(min(bitcast<i32>(x_23), bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..12b249c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_3 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_6 : register(u0, space0);
+RWByteAddressBuffer x_7 : register(u1, space0);
+RWByteAddressBuffer x_8 : register(u2, space0);
+
+void main_1() {
+  const uint x_21 = x_3.x;
+  const uint x_23 = x_6.Load((4u * x_21));
+  const uint x_25 = x_7.Load((4u * x_21));
+  x_8.Store((4u * x_21), asuint(asuint(min(asint(x_23), asint(x_25)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_3_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..aa0d280
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_6, device S& x_7, device S& x_8, thread uint3* const tint_symbol_2) {
+  uint const x_21 = (*(tint_symbol_2)).x;
+  uint const x_23 = x_6.field0[x_21];
+  uint const x_25 = x_7.field0[x_21];
+  x_8.field0[x_21] = as_type<uint>(min(as_type<int>(x_23), as_type<int>(x_25)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_3_param [[thread_position_in_grid]], device S& x_6 [[buffer(0)]], device S& x_7 [[buffer(1)]], device S& x_8 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_3_param;
+  main_1(x_6, x_7, x_8, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..46045f1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,71 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 38
+; Schema: 0
+               OpCapability Shader
+         %31 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_3 "x_3"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %x_8 "x_8"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 0
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 1
+               OpDecorate %x_8 DescriptorSet 0
+               OpDecorate %x_8 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_3 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_8 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_3 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_8 %uint_0 %21
+         %32 = OpBitcast %int %24
+         %33 = OpBitcast %int %26
+         %29 = OpExtInst %int %31 SMin %32 %33
+         %28 = OpBitcast %uint %29
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+         %36 = OpLoad %v3uint %tint_symbol
+               OpStore %x_3 %36
+         %37 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..93b1988
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_3 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+
+fn main_1() {
+  let x_21 : u32 = x_3.x;
+  let x_23 : u32 = x_6.field0[x_21];
+  let x_25 : u32 = x_7.field0[x_21];
+  x_8.field0[x_21] = bitcast<u32>(min(bitcast<i32>(x_23), bitcast<i32>(x_25)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+  x_3 = x_3_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm
new file mode 100644
index 0000000..3ebec95
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm
@@ -0,0 +1,43 @@
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %1 "main" %gl_GlobalInvocationID
+               OpExecutionMode %1 LocalSize 1 1 1
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %_struct_4 BufferBlock
+               OpMemberDecorate %_struct_4 0 Offset 0
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 1
+               OpDecorate %7 DescriptorSet 0
+               OpDecorate %7 Binding 2
+       %uint = OpTypeInt 32 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+  %_struct_4 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_4 = OpTypePointer Uniform %_struct_4
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %5 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %6 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %7 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %1 = OpFunction %void None %14
+         %18 = OpLabel
+         %19 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %20 = OpLoad %uint %19
+         %21 = OpAccessChain %_ptr_Uniform_uint %5 %uint_0 %20
+         %22 = OpLoad %uint %21
+         %23 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %20
+         %24 = OpLoad %uint %23
+         %25 = OpSDiv %uint %22 %24
+         %26 = OpAccessChain %_ptr_Uniform_uint %7 %uint_0 %20
+               OpStore %26 %25
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0533d3d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_20 = x_2.x;
+  const uint x_22 = x_5.Load((4u * x_20));
+  const uint x_24 = x_6.Load((4u * x_20));
+  x_7.Store((4u * x_20), asuint(asuint((asint(x_22) / asint(x_24)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..df3eba3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_20 = (*(tint_symbol_2)).x;
+  uint const x_22 = x_5.field0[x_20];
+  uint const x_24 = x_6.field0[x_20];
+  x_7.field0[x_20] = as_type<uint>((as_type<int>(x_22) / as_type<int>(x_24)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..5b924e4
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,70 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 37
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSDiv %int %29 %31
+         %28 = OpBitcast %uint %32
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+         %35 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %35
+         %36 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..c6a7af6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_20 : u32 = x_2.x;
+  let x_22 : u32 = x_5.field0[x_20];
+  let x_24 : u32 = x_6.field0[x_20];
+  x_7.field0[x_20] = bitcast<u32>((bitcast<i32>(x_22) / bitcast<i32>(x_24)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
new file mode 100644
index 0000000..c6a7af6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_20 : u32 = x_2.x;
+  let x_22 : u32 = x_5.field0[x_20];
+  let x_24 : u32 = x_6.field0[x_20];
+  x_7.field0[x_20] = bitcast<u32>((bitcast<i32>(x_22) / bitcast<i32>(x_24)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0533d3d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+RWByteAddressBuffer x_7 : register(u2, space0);
+
+void main_1() {
+  const uint x_20 = x_2.x;
+  const uint x_22 = x_5.Load((4u * x_20));
+  const uint x_24 = x_6.Load((4u * x_20));
+  x_7.Store((4u * x_20), asuint(asuint((asint(x_22) / asint(x_24)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..df3eba3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, device S& x_7, thread uint3* const tint_symbol_2) {
+  uint const x_20 = (*(tint_symbol_2)).x;
+  uint const x_22 = x_5.field0[x_20];
+  uint const x_24 = x_6.field0[x_20];
+  x_7.field0[x_20] = as_type<uint>((as_type<int>(x_22) / as_type<int>(x_24)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]], device S& x_7 [[buffer(2)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, x_7, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..5b924e4
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,70 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 37
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %x_7 "x_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %x_7 DescriptorSet 0
+               OpDecorate %x_7 Binding 2
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_7 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %20 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %21 = OpLoad %uint %20
+         %23 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %21
+         %24 = OpLoad %uint %23
+         %25 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %21
+         %26 = OpLoad %uint %25
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %x_7 %uint_0 %21
+         %29 = OpBitcast %int %24
+         %31 = OpBitcast %int %26
+         %32 = OpSDiv %int %29 %31
+         %28 = OpBitcast %uint %32
+               OpStore %27 %28
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %34 = OpLabel
+         %35 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %35
+         %36 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..c6a7af6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+
+fn main_1() {
+  let x_20 : u32 = x_2.x;
+  let x_22 : u32 = x_5.field0[x_20];
+  let x_24 : u32 = x_6.field0[x_20];
+  x_7.field0[x_20] = bitcast<u32>((bitcast<i32>(x_22) / bitcast<i32>(x_24)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm
new file mode 100644
index 0000000..40a9c24
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm
@@ -0,0 +1,39 @@
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %1 "main" %gl_GlobalInvocationID
+               OpExecutionMode %1 LocalSize 1 1 1
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %_struct_4 BufferBlock
+               OpMemberDecorate %_struct_4 0 Offset 0
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+               OpDecorate %6 DescriptorSet 0
+               OpDecorate %6 Binding 1
+       %uint = OpTypeInt 32 0
+%_ptr_Uniform_uint = OpTypePointer Uniform %uint
+%_ptr_Input_uint = OpTypePointer Input %uint
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+     %uint_1 = OpConstant %uint 1
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+     %v2uint = OpTypeVector %uint 2
+  %_struct_4 = OpTypeStruct %_runtimearr_uint
+%_ptr_Uniform__struct_4 = OpTypePointer Uniform %_struct_4
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+          %5 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %6 = OpVariable %_ptr_Uniform__struct_4 Uniform
+          %1 = OpFunction %void None %13
+         %18 = OpLabel
+         %19 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+         %20 = OpLoad %uint %19
+         %21 = OpAccessChain %_ptr_Uniform_uint %5 %uint_0 %20
+         %22 = OpLoad %uint %21
+         %23 = OpSNegate %uint %22
+         %24 = OpAccessChain %_ptr_Uniform_uint %6 %uint_0 %20
+               OpStore %24 %23
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..35858e0
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,22 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+
+void main_1() {
+  const uint x_20 = x_2.x;
+  const uint x_22 = x_5.Load((4u * x_20));
+  x_6.Store((4u * x_20), asuint(asuint(-(asint(x_22)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..d7828a3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.msl
@@ -0,0 +1,21 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, thread uint3* const tint_symbol_2) {
+  uint const x_20 = (*(tint_symbol_2)).x;
+  uint const x_22 = x_5.field0[x_20];
+  x_6.field0[x_20] = as_type<uint>(-(as_type<int>(x_22)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..4ce732f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,63 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 33
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+         %19 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %20 = OpLoad %uint %19
+         %22 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %20
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %20
+         %27 = OpBitcast %int %23
+         %26 = OpSNegate %int %27
+         %25 = OpBitcast %uint %26
+               OpStore %24 %25
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %30 = OpLabel
+         %31 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %31
+         %32 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1956524
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,25 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+fn main_1() {
+  let x_20 : u32 = x_2.x;
+  let x_22 : u32 = x_5.field0[x_20];
+  x_6.field0[x_20] = bitcast<u32>(-(bitcast<i32>(x_22)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
new file mode 100644
index 0000000..1956524
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
@@ -0,0 +1,25 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+fn main_1() {
+  let x_20 : u32 = x_2.x;
+  let x_22 : u32 = x_5.field0[x_20];
+  x_6.field0[x_20] = bitcast<u32>(-(bitcast<i32>(x_22)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..35858e0
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,22 @@
+static uint3 x_2 = uint3(0u, 0u, 0u);
+RWByteAddressBuffer x_5 : register(u0, space0);
+RWByteAddressBuffer x_6 : register(u1, space0);
+
+void main_1() {
+  const uint x_20 = x_2.x;
+  const uint x_22 = x_5.Load((4u * x_20));
+  x_6.Store((4u * x_20), asuint(asuint(-(asint(x_22)))));
+  return;
+}
+
+struct tint_symbol_1 {
+  uint3 x_2_param : SV_DispatchThreadID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 x_2_param = tint_symbol.x_2_param;
+  x_2 = x_2_param;
+  main_1();
+  return;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..d7828a3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.msl
@@ -0,0 +1,21 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ uint field0[1];
+};
+
+void main_1(device S& x_5, device S& x_6, thread uint3* const tint_symbol_2) {
+  uint const x_20 = (*(tint_symbol_2)).x;
+  uint const x_22 = x_5.field0[x_20];
+  x_6.field0[x_20] = as_type<uint>(-(as_type<int>(x_22)));
+  return;
+}
+
+kernel void tint_symbol(uint3 x_2_param [[thread_position_in_grid]], device S& x_5 [[buffer(0)]], device S& x_6 [[buffer(1)]]) {
+  thread uint3 tint_symbol_3 = 0u;
+  tint_symbol_3 = x_2_param;
+  main_1(x_5, x_6, &(tint_symbol_3));
+  return;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..4ce732f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 33
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %x_2 "x_2"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %x_6 "x_6"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main_1 "main_1"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_uint ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %x_6 DescriptorSet 0
+               OpDecorate %x_6 Binding 1
+               OpDecorate %tint_symbol BuiltIn GlobalInvocationId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Private_v3uint = OpTypePointer Private %v3uint
+          %5 = OpConstantNull %v3uint
+        %x_2 = OpVariable %_ptr_Private_v3uint Private %5
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+          %S = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+        %x_6 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+        %int = OpTypeInt 32 1
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+         %19 = OpAccessChain %_ptr_Private_uint %x_2 %uint_0
+         %20 = OpLoad %uint %19
+         %22 = OpAccessChain %_ptr_StorageBuffer_uint %x_5 %uint_0 %20
+         %23 = OpLoad %uint %22
+         %24 = OpAccessChain %_ptr_StorageBuffer_uint %x_6 %uint_0 %20
+         %27 = OpBitcast %int %23
+         %26 = OpSNegate %int %27
+         %25 = OpBitcast %uint %26
+               OpStore %24 %25
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %30 = OpLabel
+         %31 = OpLoad %v3uint %tint_symbol
+               OpStore %x_2 %31
+         %32 = OpFunctionCall %void %main_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1956524
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+type RTArr = [[stride(4)]] array<u32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec3<u32>;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+
+fn main_1() {
+  let x_20 : u32 = x_2.x;
+  let x_22 : u32 = x_5.field0[x_20];
+  x_6.field0[x_20] = bitcast<u32>(-(bitcast<i32>(x_22)));
+  return;
+}
+
+[[stage(compute), workgroup_size(1, 1, 1)]]
+fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+  x_2 = x_2_param;
+  main_1();
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm
new file mode 100644
index 0000000..a99e3ba
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm
@@ -0,0 +1,61 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %2 "main" %3 %4 %5
+               OpDecorate %3 Location 0
+               OpDecorate %4 Flat
+               OpDecorate %4 Location 0
+               OpMemberDecorate %_struct_6 0 BuiltIn Position
+               OpMemberDecorate %_struct_6 1 BuiltIn PointSize
+               OpMemberDecorate %_struct_6 2 BuiltIn ClipDistance
+               OpDecorate %_struct_6 Block
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+      %float = OpTypeFloat 32
+    %v2float = OpTypeVector %float 2
+%_ptr_Input_v2float = OpTypePointer Input %v2float
+          %3 = OpVariable %_ptr_Input_v2float Input
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+    %float_1 = OpConstant %float 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_uint = OpTypePointer Output %uint
+          %4 = OpVariable %_ptr_Output_uint Output
+    %uint_36 = OpConstant %uint 36
+    %v4float = OpTypeVector %float 4
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+  %_struct_6 = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output__struct_6 = OpTypePointer Output %_struct_6
+          %5 = OpVariable %_ptr_Output__struct_6 Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+    %float_0 = OpConstant %float 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%float_1_02777779 = OpConstant %float 1.02777779
+   %float_18 = OpConstant %float 18
+          %2 = OpFunction %void None %8
+         %28 = OpLabel
+         %29 = OpAccessChain %_ptr_Input_float %3 %uint_0
+         %30 = OpLoad %float %29
+         %31 = OpFAdd %float %30 %float_1_02777779
+         %32 = OpFMul %float %31 %float_18
+         %33 = OpFSub %float %32 %float_1
+         %34 = OpConvertFToU %uint %33
+         %35 = OpAccessChain %_ptr_Input_float %3 %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFAdd %float %36 %float_1_02777779
+         %38 = OpFMul %float %37 %float_18
+         %39 = OpFSub %float %38 %float_1
+         %40 = OpConvertFToU %uint %39
+         %41 = OpIMul %uint %40 %uint_36
+         %42 = OpIAdd %uint %34 %41
+               OpStore %4 %42
+         %43 = OpLoad %v2float %3
+         %44 = OpCompositeExtract %float %43 0
+         %45 = OpCompositeExtract %float %43 1
+         %46 = OpCompositeConstruct %v4float %44 %45 %float_0 %float_1
+         %47 = OpAccessChain %_ptr_Output_v4float %5 %int_0
+               OpStore %47 %46
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..1e05739
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.hlsl
@@ -0,0 +1,33 @@
+static float2 x_3 = float2(0.0f, 0.0f);
+static uint x_4 = 0u;
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_30 = x_3.x;
+  const float x_36 = x_3.y;
+  x_4 = (uint((((x_30 + 1.027777791f) * 18.0f) - 1.0f)) + (uint((((x_36 + 1.027777791f) * 18.0f) - 1.0f)) * 36u));
+  const float2 x_43 = x_3;
+  gl_Position = float4(x_43.x, x_43.y, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  uint x_4_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float2 x_3_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  uint x_4_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float2 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4, gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1, tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.msl
new file mode 100644
index 0000000..7bcd3c2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.msl
@@ -0,0 +1,36 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  uint x_4_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float2 x_3_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  uint x_4_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float2* const tint_symbol_6, thread uint* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float const x_30 = (*(tint_symbol_6)).x;
+  float const x_36 = (*(tint_symbol_6)).y;
+  *(tint_symbol_7) = (uint((((x_30 + 1.027777791f) * 18.0f) - 1.0f)) + (uint((((x_36 + 1.027777791f) * 18.0f) - 1.0f)) * 36u));
+  float2 const x_43 = *(tint_symbol_6);
+  *(tint_symbol_8) = float4(x_43.x, x_43.y, 0.0f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float2 tint_symbol_9 = 0.0f;
+  thread uint tint_symbol_10 = 0u;
+  thread float4 tint_symbol_11 = 0.0f;
+  float2 const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_3_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_10, .gl_Position=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..b95f794
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.spvasm
@@ -0,0 +1,108 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_2 Flat
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v2float = OpTypeVector %float 2
+%_ptr_Private_v2float = OpTypePointer Private %v2float
+          %8 = OpConstantNull %v2float
+        %x_3 = OpVariable %_ptr_Private_v2float Private %8
+       %uint = OpTypeInt 32 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+         %12 = OpConstantNull %uint
+        %x_4 = OpVariable %_ptr_Private_uint Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v2float = OpTypePointer Input %v2float
+%tint_symbol = OpVariable %_ptr_Input_v2float Input
+%_ptr_Output_uint = OpTypePointer Output %uint
+%tint_symbol_2 = OpVariable %_ptr_Output_uint Output %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+%float_1_02777779 = OpConstant %float 1.02777779
+   %float_18 = OpConstant %float 18
+    %float_1 = OpConstant %float 1
+    %uint_36 = OpConstant %uint 36
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %uint %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+         %29 = OpAccessChain %_ptr_Private_float %x_3 %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Private_float %x_3 %uint_1
+         %33 = OpLoad %float %32
+         %36 = OpFAdd %float %30 %float_1_02777779
+         %38 = OpFMul %float %36 %float_18
+         %40 = OpFSub %float %38 %float_1
+         %34 = OpConvertFToU %uint %40
+         %42 = OpFAdd %float %33 %float_1_02777779
+         %43 = OpFMul %float %42 %float_18
+         %44 = OpFSub %float %43 %float_1
+         %41 = OpConvertFToU %uint %44
+         %46 = OpIMul %uint %41 %uint_36
+         %47 = OpIAdd %uint %34 %46
+               OpStore %x_4 %47
+         %48 = OpLoad %v2float %x_3
+         %49 = OpCompositeExtract %float %48 0
+         %50 = OpCompositeExtract %float %48 1
+         %52 = OpCompositeConstruct %v4float %49 %50 %float_0 %float_1
+               OpStore %gl_Position %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %53
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %uint %tint_symbol_1 0
+               OpStore %tint_symbol_2 %58
+         %59 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %59
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %61 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %62 = OpLoad %v2float %tint_symbol
+               OpStore %x_3 %62
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %uint %x_4
+         %66 = OpLoad %v4float %gl_Position
+         %67 = OpCompositeConstruct %main_out %65 %66
+         %64 = OpFunctionCall %void %tint_symbol_4 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..eef9fd1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+var<private> x_3 : vec2<f32>;
+
+var<private> x_4 : u32;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_30 : f32 = x_3.x;
+  let x_36 : f32 = x_3.y;
+  x_4 = (u32((((x_30 + 1.027777791) * 18.0) - 1.0)) + (u32((((x_36 + 1.027777791) * 18.0) - 1.0)) * 36u));
+  let x_43 : vec2<f32> = x_3;
+  gl_Position = vec4<f32>(x_43.x, x_43.y, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : u32;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_3_param : vec2<f32>) -> main_out {
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4, gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
new file mode 100644
index 0000000..eef9fd1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
@@ -0,0 +1,28 @@
+var<private> x_3 : vec2<f32>;
+
+var<private> x_4 : u32;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_30 : f32 = x_3.x;
+  let x_36 : f32 = x_3.y;
+  x_4 = (u32((((x_30 + 1.027777791) * 18.0) - 1.0)) + (u32((((x_36 + 1.027777791) * 18.0) - 1.0)) * 36u));
+  let x_43 : vec2<f32> = x_3;
+  gl_Position = vec4<f32>(x_43.x, x_43.y, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : u32;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_3_param : vec2<f32>) -> main_out {
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4, gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..1e05739
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.hlsl
@@ -0,0 +1,33 @@
+static float2 x_3 = float2(0.0f, 0.0f);
+static uint x_4 = 0u;
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_30 = x_3.x;
+  const float x_36 = x_3.y;
+  x_4 = (uint((((x_30 + 1.027777791f) * 18.0f) - 1.0f)) + (uint((((x_36 + 1.027777791f) * 18.0f) - 1.0f)) * 36u));
+  const float2 x_43 = x_3;
+  gl_Position = float4(x_43.x, x_43.y, 0.0f, 1.0f);
+  return;
+}
+
+struct main_out {
+  uint x_4_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float2 x_3_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  uint x_4_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float2 x_3_param = tint_symbol.x_3_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4, gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1, tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.msl
new file mode 100644
index 0000000..7bcd3c2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.msl
@@ -0,0 +1,36 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  uint x_4_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float2 x_3_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  uint x_4_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float2* const tint_symbol_6, thread uint* const tint_symbol_7, thread float4* const tint_symbol_8) {
+  float const x_30 = (*(tint_symbol_6)).x;
+  float const x_36 = (*(tint_symbol_6)).y;
+  *(tint_symbol_7) = (uint((((x_30 + 1.027777791f) * 18.0f) - 1.0f)) + (uint((((x_36 + 1.027777791f) * 18.0f) - 1.0f)) * 36u));
+  float2 const x_43 = *(tint_symbol_6);
+  *(tint_symbol_8) = float4(x_43.x, x_43.y, 0.0f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float2 tint_symbol_9 = 0.0f;
+  thread uint tint_symbol_10 = 0u;
+  thread float4 tint_symbol_11 = 0.0f;
+  float2 const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_3_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_10, .gl_Position=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..b95f794
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.spvasm
@@ -0,0 +1,108 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 68
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_2 Flat
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v2float = OpTypeVector %float 2
+%_ptr_Private_v2float = OpTypePointer Private %v2float
+          %8 = OpConstantNull %v2float
+        %x_3 = OpVariable %_ptr_Private_v2float Private %8
+       %uint = OpTypeInt 32 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+         %12 = OpConstantNull %uint
+        %x_4 = OpVariable %_ptr_Private_uint Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %16 = OpConstantNull %v4float
+%gl_Position = OpVariable %_ptr_Private_v4float Private %16
+%_ptr_Input_v2float = OpTypePointer Input %v2float
+%tint_symbol = OpVariable %_ptr_Input_v2float Input
+%_ptr_Output_uint = OpTypePointer Output %uint
+%tint_symbol_2 = OpVariable %_ptr_Output_uint Output %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %23 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+%float_1_02777779 = OpConstant %float 1.02777779
+   %float_18 = OpConstant %float 18
+    %float_1 = OpConstant %float 1
+    %uint_36 = OpConstant %uint 36
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %uint %v4float
+         %53 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %23
+         %26 = OpLabel
+         %29 = OpAccessChain %_ptr_Private_float %x_3 %uint_0
+         %30 = OpLoad %float %29
+         %32 = OpAccessChain %_ptr_Private_float %x_3 %uint_1
+         %33 = OpLoad %float %32
+         %36 = OpFAdd %float %30 %float_1_02777779
+         %38 = OpFMul %float %36 %float_18
+         %40 = OpFSub %float %38 %float_1
+         %34 = OpConvertFToU %uint %40
+         %42 = OpFAdd %float %33 %float_1_02777779
+         %43 = OpFMul %float %42 %float_18
+         %44 = OpFSub %float %43 %float_1
+         %41 = OpConvertFToU %uint %44
+         %46 = OpIMul %uint %41 %uint_36
+         %47 = OpIAdd %uint %34 %46
+               OpStore %x_4 %47
+         %48 = OpLoad %v2float %x_3
+         %49 = OpCompositeExtract %float %48 0
+         %50 = OpCompositeExtract %float %48 1
+         %52 = OpCompositeConstruct %v4float %49 %50 %float_0 %float_1
+               OpStore %gl_Position %52
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %53
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %57 = OpLabel
+         %58 = OpCompositeExtract %uint %tint_symbol_1 0
+               OpStore %tint_symbol_2 %58
+         %59 = OpCompositeExtract %v4float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %59
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %61 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %62 = OpLoad %v2float %tint_symbol
+               OpStore %x_3 %62
+         %63 = OpFunctionCall %void %main_1
+         %65 = OpLoad %uint %x_4
+         %66 = OpLoad %v4float %gl_Position
+         %67 = OpCompositeConstruct %main_out %65 %66
+         %64 = OpFunctionCall %void %tint_symbol_4 %67
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..eef9fd1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+var<private> x_3 : vec2<f32>;
+
+var<private> x_4 : u32;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_30 : f32 = x_3.x;
+  let x_36 : f32 = x_3.y;
+  x_4 = (u32((((x_30 + 1.027777791) * 18.0) - 1.0)) + (u32((((x_36 + 1.027777791) * 18.0) - 1.0)) * 36u));
+  let x_43 : vec2<f32> = x_3;
+  gl_Position = vec4<f32>(x_43.x, x_43.y, 0.0, 1.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : u32;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_3_param : vec2<f32>) -> main_out {
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4, gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm
new file mode 100644
index 0000000..4dca9c5
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %position = OpVariable %_ptr_Input_v4float Input
+    %v2float = OpTypeVector %float 2
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %22 = OpLoad %v4float %position
+         %23 = OpVectorShuffle %v2float %22 %22 0 1
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %26 = OpCompositeConstruct %v4float %24 %25 %float_0_5 %float_1
+         %27 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %27 %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..067c7f0
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.5f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f654314
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.5f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..bb27f18
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_5 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..bf7b1a4
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.5, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
new file mode 100644
index 0000000..bf7b1a4
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.5, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..067c7f0
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.5f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f654314
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.5f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..bb27f18
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+  %float_0_5 = OpConstant %float 0.5
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_5 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..bf7b1a4
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.5, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm
new file mode 100644
index 0000000..c63fe28
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm
@@ -0,0 +1,31 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %color_out %gl_FragDepth
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main EarlyFragmentTests
+               OpExecutionMode %main DepthReplacing
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpDecorate %color_out Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+  %color_out = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %12 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+%float_0_300000012 = OpConstant %float 0.300000012
+       %main = OpFunction %void None %6
+         %15 = OpLabel
+               OpStore %color_out %12
+               OpStore %gl_FragDepth %float_0_300000012
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..25aecc7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  gl_FragDepth = 0.300000012f;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 color_out_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color_out, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_out_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.msl
new file mode 100644
index 0000000..d3a4444
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 color_out_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_5) = 0.300000012f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.color_out_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.color_out_1=tint_symbol_2.color_out_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..2656eac
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%float_0_300000012 = OpConstant %float 0.300000012
+   %main_out = OpTypeStruct %v4float %float
+         %21 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %color_out %19
+               OpStore %gl_FragDepth %float_0_300000012
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %main_out
+         %25 = OpLabel
+         %26 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %26
+         %27 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %27
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %main_1
+         %32 = OpLoad %v4float %color_out
+         %33 = OpLoad %float %gl_FragDepth
+         %34 = OpCompositeConstruct %main_out %32 %33
+         %31 = OpFunctionCall %void %tint_symbol_3 %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..48a9583
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.300000012;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
new file mode 100644
index 0000000..48a9583
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.300000012;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..25aecc7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  gl_FragDepth = 0.300000012f;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 color_out_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color_out, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_out_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.msl
new file mode 100644
index 0000000..d3a4444
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 color_out_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_5) = 0.300000012f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.color_out_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.color_out_1=tint_symbol_2.color_out_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..2656eac
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%float_0_300000012 = OpConstant %float 0.300000012
+   %main_out = OpTypeStruct %v4float %float
+         %21 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %color_out %19
+               OpStore %gl_FragDepth %float_0_300000012
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %main_out
+         %25 = OpLabel
+         %26 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %26
+         %27 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %27
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %main_1
+         %32 = OpLoad %v4float %color_out
+         %33 = OpLoad %float %gl_FragDepth
+         %34 = OpCompositeConstruct %main_out %32 %33
+         %31 = OpFunctionCall %void %tint_symbol_3 %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..48a9583
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.300000012;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm
new file mode 100644
index 0000000..6944ce4
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %position = OpVariable %_ptr_Input_v4float Input
+    %v2float = OpTypeVector %float 2
+%float_0_600000024 = OpConstant %float 0.600000024
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %22 = OpLoad %v4float %position
+         %23 = OpVectorShuffle %v2float %22 %22 0 1
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %26 = OpCompositeConstruct %v4float %24 %25 %float_0_600000024 %float_1
+         %27 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %27 %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..224ce12
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.600000024f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..ccc433e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.600000024f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..67f68ab
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_600000024 = OpConstant %float 0.600000024
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_600000024 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..574d2de
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.600000024, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
new file mode 100644
index 0000000..574d2de
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.600000024, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..224ce12
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.600000024f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..ccc433e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.600000024f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..67f68ab
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_600000024 = OpConstant %float 0.600000024
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_600000024 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..574d2de
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.600000024, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm
new file mode 100644
index 0000000..490b9ef
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm
@@ -0,0 +1,32 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %color_out %gl_FragDepth
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main EarlyFragmentTests
+               OpExecutionMode %main DepthReplacing
+               OpExecutionMode %main DepthGreater
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpDecorate %color_out Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+  %color_out = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %12 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+%float_0_400000006 = OpConstant %float 0.400000006
+       %main = OpFunction %void None %6
+         %15 = OpLabel
+               OpStore %color_out %12
+               OpStore %gl_FragDepth %float_0_400000006
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..4e8b74d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  gl_FragDepth = 0.400000006f;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 color_out_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color_out, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_out_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.msl
new file mode 100644
index 0000000..0189307
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 color_out_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_5) = 0.400000006f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.color_out_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.color_out_1=tint_symbol_2.color_out_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..2c1b030
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%float_0_400000006 = OpConstant %float 0.400000006
+   %main_out = OpTypeStruct %v4float %float
+         %21 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %color_out %19
+               OpStore %gl_FragDepth %float_0_400000006
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %main_out
+         %25 = OpLabel
+         %26 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %26
+         %27 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %27
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %main_1
+         %32 = OpLoad %v4float %color_out
+         %33 = OpLoad %float %gl_FragDepth
+         %34 = OpCompositeConstruct %main_out %32 %33
+         %31 = OpFunctionCall %void %tint_symbol_3 %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..df3c7e3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.400000006;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
new file mode 100644
index 0000000..df3c7e3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.400000006;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..4e8b74d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  gl_FragDepth = 0.400000006f;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 color_out_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color_out, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_out_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.msl
new file mode 100644
index 0000000..0189307
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 color_out_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_5) = 0.400000006f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.color_out_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.color_out_1=tint_symbol_2.color_out_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..2c1b030
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%float_0_400000006 = OpConstant %float 0.400000006
+   %main_out = OpTypeStruct %v4float %float
+         %21 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %color_out %19
+               OpStore %gl_FragDepth %float_0_400000006
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %main_out
+         %25 = OpLabel
+         %26 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %26
+         %27 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %27
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %main_1
+         %32 = OpLoad %v4float %color_out
+         %33 = OpLoad %float %gl_FragDepth
+         %34 = OpCompositeConstruct %main_out %32 %33
+         %31 = OpFunctionCall %void %tint_symbol_3 %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..df3c7e3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.400000006;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm
new file mode 100644
index 0000000..716c4b7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %position = OpVariable %_ptr_Input_v4float Input
+    %v2float = OpTypeVector %float 2
+%float_0_400000006 = OpConstant %float 0.400000006
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %22 = OpLoad %v4float %position
+         %23 = OpVectorShuffle %v2float %22 %22 0 1
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %26 = OpCompositeConstruct %v4float %24 %25 %float_0_400000006 %float_1
+         %27 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %27 %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..2f5b031
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.400000006f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..0f220e3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.400000006f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..57cab41
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_400000006 = OpConstant %float 0.400000006
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_400000006 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f3aec87
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.400000006, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
new file mode 100644
index 0000000..f3aec87
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.400000006, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..2f5b031
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.400000006f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..0f220e3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.400000006f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..57cab41
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_400000006 = OpConstant %float 0.400000006
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_400000006 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f3aec87
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.400000006, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm
new file mode 100644
index 0000000..c195cb3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm
@@ -0,0 +1,31 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %color_out %gl_FragDepth
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main EarlyFragmentTests
+               OpExecutionMode %main DepthReplacing
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpDecorate %color_out Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+  %color_out = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %12 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+%float_0_699999988 = OpConstant %float 0.699999988
+       %main = OpFunction %void None %6
+         %15 = OpLabel
+               OpStore %color_out %12
+               OpStore %gl_FragDepth %float_0_699999988
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..47aefbb
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  gl_FragDepth = 0.699999988f;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 color_out_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color_out, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_out_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.msl
new file mode 100644
index 0000000..842cf9d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 color_out_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_5) = 0.699999988f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.color_out_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.color_out_1=tint_symbol_2.color_out_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..2f52f93e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%float_0_699999988 = OpConstant %float 0.699999988
+   %main_out = OpTypeStruct %v4float %float
+         %21 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %color_out %19
+               OpStore %gl_FragDepth %float_0_699999988
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %main_out
+         %25 = OpLabel
+         %26 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %26
+         %27 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %27
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %main_1
+         %32 = OpLoad %v4float %color_out
+         %33 = OpLoad %float %gl_FragDepth
+         %34 = OpCompositeConstruct %main_out %32 %33
+         %31 = OpFunctionCall %void %tint_symbol_3 %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..8bf833a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.699999988;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
new file mode 100644
index 0000000..8bf833a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.699999988;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..47aefbb
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  gl_FragDepth = 0.699999988f;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 color_out_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color_out, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_out_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.msl
new file mode 100644
index 0000000..842cf9d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 color_out_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_5) = 0.699999988f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.color_out_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.color_out_1=tint_symbol_2.color_out_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..2f52f93e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%float_0_699999988 = OpConstant %float 0.699999988
+   %main_out = OpTypeStruct %v4float %float
+         %21 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %color_out %19
+               OpStore %gl_FragDepth %float_0_699999988
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %main_out
+         %25 = OpLabel
+         %26 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %26
+         %27 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %27
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %main_1
+         %32 = OpLoad %v4float %color_out
+         %33 = OpLoad %float %gl_FragDepth
+         %34 = OpCompositeConstruct %main_out %32 %33
+         %31 = OpFunctionCall %void %tint_symbol_3 %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..8bf833a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.699999988;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm
new file mode 100644
index 0000000..0d5987d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %position = OpVariable %_ptr_Input_v4float Input
+    %v2float = OpTypeVector %float 2
+%float_0_300000012 = OpConstant %float 0.300000012
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %22 = OpLoad %v4float %position
+         %23 = OpVectorShuffle %v2float %22 %22 0 1
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %26 = OpCompositeConstruct %v4float %24 %25 %float_0_300000012 %float_1
+         %27 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %27 %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..c0bd655f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.300000012f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..771a789
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.300000012f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..18e2bca
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_300000012 = OpConstant %float 0.300000012
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_300000012 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..1cc00dd
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.300000012, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
new file mode 100644
index 0000000..1cc00dd
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.300000012, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..c0bd655f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.300000012f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..771a789
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.300000012f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..18e2bca
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_300000012 = OpConstant %float 0.300000012
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_300000012 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..1cc00dd
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.300000012, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm
new file mode 100644
index 0000000..2667aee
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm
@@ -0,0 +1,31 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %color_out %gl_FragDepth
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main EarlyFragmentTests
+               OpExecutionMode %main DepthReplacing
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpDecorate %color_out Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+  %color_out = OpVariable %_ptr_Output_v4float Output
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %12 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+  %float_0_5 = OpConstant %float 0.5
+       %main = OpFunction %void None %6
+         %15 = OpLabel
+               OpStore %color_out %12
+               OpStore %gl_FragDepth %float_0_5
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..4343195
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  gl_FragDepth = 0.5f;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 color_out_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color_out, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_out_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.msl
new file mode 100644
index 0000000..ed4b69c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 color_out_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_5) = 0.5f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.color_out_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.color_out_1=tint_symbol_2.color_out_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..a305e7a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+   %main_out = OpTypeStruct %v4float %float
+         %21 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %color_out %19
+               OpStore %gl_FragDepth %float_0_5
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %main_out
+         %25 = OpLabel
+         %26 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %26
+         %27 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %27
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %main_1
+         %32 = OpLoad %v4float %color_out
+         %33 = OpLoad %float %gl_FragDepth
+         %34 = OpCompositeConstruct %main_out %32 %33
+         %31 = OpFunctionCall %void %tint_symbol_3 %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..5051169
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.5;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
new file mode 100644
index 0000000..5051169
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.5;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..4343195
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  color_out = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  gl_FragDepth = 0.5f;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 color_out_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {color_out, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.color_out_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.msl
new file mode 100644
index 0000000..ed4b69c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 color_out_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
+  *(tint_symbol_5) = 0.5f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.color_out_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.color_out_1=tint_symbol_2.color_out_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..a305e7a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %color_out "color_out"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_0 = OpConstant %float 0
+         %19 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
+  %float_0_5 = OpConstant %float 0.5
+   %main_out = OpTypeStruct %v4float %float
+         %21 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %color_out %19
+               OpStore %gl_FragDepth %float_0_5
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %main_out
+         %25 = OpLabel
+         %26 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %26
+         %27 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %27
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %main_1
+         %32 = OpLoad %v4float %color_out
+         %33 = OpLoad %float %gl_FragDepth
+         %34 = OpCompositeConstruct %main_out %32 %33
+         %31 = OpFunctionCall %void %tint_symbol_3 %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..5051169
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> color_out : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = 0.5;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(color_out, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm
new file mode 100644
index 0000000..872cc9f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %position = OpVariable %_ptr_Input_v4float Input
+    %v2float = OpTypeVector %float 2
+%float_0_699999988 = OpConstant %float 0.699999988
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %22 = OpLoad %v4float %position
+         %23 = OpVectorShuffle %v2float %22 %22 0 1
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %26 = OpCompositeConstruct %v4float %24 %25 %float_0_699999988 %float_1
+         %27 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %27 %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..bf017e3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.699999988f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..0c5e876
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.699999988f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..cf0602b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_699999988 = OpConstant %float 0.699999988
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_699999988 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..788ee5b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.699999988, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
new file mode 100644
index 0000000..788ee5b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.699999988, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..bf017e3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.699999988f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..0c5e876
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.699999988f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..cf0602b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_699999988 = OpConstant %float 0.699999988
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_699999988 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..788ee5b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.699999988, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm
new file mode 100644
index 0000000..3d18840
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm
@@ -0,0 +1,46 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %position = OpVariable %_ptr_Input_v4float Input
+    %v2float = OpTypeVector %float 2
+%float_0_200000003 = OpConstant %float 0.200000003
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+       %main = OpFunction %void None %7
+         %21 = OpLabel
+         %22 = OpLoad %v4float %position
+         %23 = OpVectorShuffle %v2float %22 %22 0 1
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %26 = OpCompositeConstruct %v4float %24 %25 %float_0_200000003 %float_1
+         %27 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %27 %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..0ae9555
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.200000003f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..94ed6c1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.200000003f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..240e679
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_200000003 = OpConstant %float 0.200000003
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_200000003 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..f71b320
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.200000003, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
new file mode 100644
index 0000000..f71b320
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.200000003, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..0ae9555
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float4 x_22 = position;
+  const float2 x_23 = float2(x_22.x, x_22.y);
+  gl_Position = float4(x_23.x, x_23.y, 0.200000003f, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..94ed6c1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.msl
@@ -0,0 +1,31 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_22 = *(tint_symbol_6);
+  float2 const x_23 = float2(x_22.x, x_22.y);
+  *(tint_symbol_7) = float4(x_23.x, x_23.y, 0.200000003f, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..240e679
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+    %v2float = OpTypeVector %float 2
+%float_0_200000003 = OpConstant %float 0.200000003
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %28 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+         %18 = OpLoad %v4float %position
+         %20 = OpCompositeExtract %float %18 0
+         %21 = OpCompositeExtract %float %18 1
+         %22 = OpCompositeConstruct %v2float %20 %21
+         %23 = OpCompositeExtract %float %22 0
+         %24 = OpCompositeExtract %float %22 1
+         %27 = OpCompositeConstruct %v4float %23 %24 %float_0_200000003 %float_1
+               OpStore %gl_Position %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %28
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %32 = OpLabel
+         %33 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %33
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %35 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpCompositeConstruct %main_out %39
+         %38 = OpFunctionCall %void %tint_symbol_3 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..f71b320
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> position : vec4<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  let x_23 : vec2<f32> = vec2<f32>(x_22.x, x_22.y);
+  gl_Position = vec4<f32>(x_23.x, x_23.y, 0.200000003, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm
new file mode 100644
index 0000000..ff79f72
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm
@@ -0,0 +1,30 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %outColor %gl_FragDepth
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpExecutionMode %main DepthGreater
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpDecorate %outColor Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+   %outColor = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %11 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+%float_0_300000012 = OpConstant %float 0.300000012
+       %main = OpFunction %void None %6
+         %14 = OpLabel
+               OpStore %outColor %11
+               OpStore %gl_FragDepth %float_0_300000012
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..5cb1813
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.300000012f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.msl
new file mode 100644
index 0000000..620803a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.300000012f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..bb4715a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_300000012 = OpConstant %float 0.300000012
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_300000012
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..b6e0701
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.300000012;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
new file mode 100644
index 0000000..b6e0701
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.300000012;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..5cb1813
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.300000012f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.msl
new file mode 100644
index 0000000..620803a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.300000012f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..bb4715a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_300000012 = OpConstant %float 0.300000012
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_300000012
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..b6e0701
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.300000012;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm
new file mode 100644
index 0000000..e503380
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm
@@ -0,0 +1,30 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %outColor %gl_FragDepth
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpExecutionMode %main DepthLess
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpDecorate %outColor Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+   %outColor = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %11 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+%float_0_100000001 = OpConstant %float 0.100000001
+       %main = OpFunction %void None %6
+         %14 = OpLabel
+               OpStore %outColor %11
+               OpStore %gl_FragDepth %float_0_100000001
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..195740d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.100000001f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.msl
new file mode 100644
index 0000000..1f7be87
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.100000001f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..d7a733d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_100000001 = OpConstant %float 0.100000001
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_100000001
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..9f726a7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.100000001;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
new file mode 100644
index 0000000..9f726a7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.100000001;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..195740d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.100000001f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.msl
new file mode 100644
index 0000000..1f7be87
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.100000001f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..d7a733d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_100000001 = OpConstant %float 0.100000001
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_100000001
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..9f726a7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.100000001;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm
new file mode 100644
index 0000000..29ea362
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm
@@ -0,0 +1,30 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %outColor %gl_FragDepth
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpExecutionMode %main DepthLess
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpDecorate %outColor Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+   %outColor = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %11 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+%float_0_600000024 = OpConstant %float 0.600000024
+       %main = OpFunction %void None %6
+         %14 = OpLabel
+               OpStore %outColor %11
+               OpStore %gl_FragDepth %float_0_600000024
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..d098fd2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.600000024f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.msl
new file mode 100644
index 0000000..ea4a1fc
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.600000024f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..927ca49
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_600000024 = OpConstant %float 0.600000024
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_600000024
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..bc535ca
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.600000024;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
new file mode 100644
index 0000000..bc535ca
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.600000024;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..d098fd2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.600000024f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.msl
new file mode 100644
index 0000000..ea4a1fc
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.600000024f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..927ca49
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_600000024 = OpConstant %float 0.600000024
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_600000024
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..bc535ca
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.600000024;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm
new file mode 100644
index 0000000..544b4ff
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm
@@ -0,0 +1,38 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %outColor %gl_FragDepth %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpExecutionMode %main DepthUnchanged
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpDecorate %outColor Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+   %outColor = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %12 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+%_ptr_Input_float = OpTypePointer Input %float
+       %main = OpFunction %void None %7
+         %18 = OpLabel
+               OpStore %outColor %12
+         %19 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_2
+         %20 = OpLoad %float %19
+               OpStore %gl_FragDepth %20
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..9aee57c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_20 = gl_FragCoord.z;
+  gl_FragDepth = x_20;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {outColor, gl_FragDepth};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.outColor_1, tint_symbol_3.gl_FragDepth_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.msl
new file mode 100644
index 0000000..b08a200
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_2 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6, thread float* const tint_symbol_7) {
+  *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float const x_20 = (*(tint_symbol_6)).z;
+  *(tint_symbol_7) = x_20;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float tint_symbol_10 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_8), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.outColor_1=tint_symbol_9, .gl_FragDepth_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.outColor_1=tint_symbol_3.outColor_1, .gl_FragDepth_1=tint_symbol_3.gl_FragDepth_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..ce10d20
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.spvasm
@@ -0,0 +1,79 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_3 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float %float
+         %26 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %16
+         %19 = OpLabel
+               OpStore %outColor %21
+         %24 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_2
+         %25 = OpLoad %float %24
+               OpStore %gl_FragDepth %25
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %26
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %30 = OpLabel
+         %31 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %31
+         %32 = OpCompositeExtract %float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %16
+         %34 = OpLabel
+         %35 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %35
+         %36 = OpFunctionCall %void %main_1
+         %38 = OpLoad %v4float %outColor
+         %39 = OpLoad %float %gl_FragDepth
+         %40 = OpCompositeConstruct %main_out %38 %39
+         %37 = OpFunctionCall %void %tint_symbol_4 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..0fe24e6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.spvasm.expected.wgsl
@@ -0,0 +1,26 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_20 : f32 = gl_FragCoord.z;
+  gl_FragDepth = x_20;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
new file mode 100644
index 0000000..0fe24e6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
@@ -0,0 +1,26 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_20 : f32 = gl_FragCoord.z;
+  gl_FragDepth = x_20;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..9aee57c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  const float x_20 = gl_FragCoord.z;
+  gl_FragDepth = x_20;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {outColor, gl_FragDepth};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.outColor_1, tint_symbol_3.gl_FragDepth_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.msl
new file mode 100644
index 0000000..b08a200
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_2 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6, thread float* const tint_symbol_7) {
+  *(tint_symbol_5) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  float const x_20 = (*(tint_symbol_6)).z;
+  *(tint_symbol_7) = x_20;
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float tint_symbol_10 = 0.0f;
+  tint_symbol_8 = gl_FragCoord_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_8), &(tint_symbol_10));
+  main_out const tint_symbol_3 = {.outColor_1=tint_symbol_9, .gl_FragDepth_1=tint_symbol_10};
+  tint_symbol_2 const tint_symbol_4 = {.outColor_1=tint_symbol_3.outColor_1, .gl_FragDepth_1=tint_symbol_3.gl_FragDepth_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..ce10d20
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.spvasm
@@ -0,0 +1,79 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_3 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %16 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+   %main_out = OpTypeStruct %v4float %float
+         %26 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %16
+         %19 = OpLabel
+               OpStore %outColor %21
+         %24 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_2
+         %25 = OpLoad %float %24
+               OpStore %gl_FragDepth %25
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %26
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %30 = OpLabel
+         %31 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %31
+         %32 = OpCompositeExtract %float %tint_symbol_1 1
+               OpStore %tint_symbol_3 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %16
+         %34 = OpLabel
+         %35 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %35
+         %36 = OpFunctionCall %void %main_1
+         %38 = OpLoad %v4float %outColor
+         %39 = OpLoad %float %gl_FragDepth
+         %40 = OpCompositeConstruct %main_out %38 %39
+         %37 = OpFunctionCall %void %tint_symbol_4 %40
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..0fe24e6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  let x_20 : f32 = gl_FragCoord.z;
+  gl_FragDepth = x_20;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm
new file mode 100644
index 0000000..65f7b45
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm
@@ -0,0 +1,30 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %outColor %gl_FragDepth
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpExecutionMode %main DepthUnchanged
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpDecorate %outColor Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+   %outColor = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %11 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+%float_0_699999988 = OpConstant %float 0.699999988
+       %main = OpFunction %void None %6
+         %14 = OpLabel
+               OpStore %outColor %11
+               OpStore %gl_FragDepth %float_0_699999988
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..2776dc2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.699999988f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.msl
new file mode 100644
index 0000000..a3796dc
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.699999988f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..9df6dab
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_699999988 = OpConstant %float 0.699999988
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_699999988
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..04a6db7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.699999988;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
new file mode 100644
index 0000000..04a6db7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.699999988;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..2776dc2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.699999988f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.msl
new file mode 100644
index 0000000..a3796dc
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.699999988f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..9df6dab
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_699999988 = OpConstant %float 0.699999988
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_699999988
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..04a6db7
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.699999988;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm
new file mode 100644
index 0000000..0842b2d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm
@@ -0,0 +1,30 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %outColor %gl_FragDepth
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpExecutionMode %main DepthUnchanged
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpDecorate %outColor Location 0
+               OpDecorate %gl_FragDepth BuiltIn FragDepth
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+   %outColor = OpVariable %_ptr_Output_v4float Output
+    %float_0 = OpConstant %float 0
+         %11 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%_ptr_Output_float = OpTypePointer Output %float
+%gl_FragDepth = OpVariable %_ptr_Output_float Output
+%float_0_400000006 = OpConstant %float 0.400000006
+       %main = OpFunction %void None %6
+         %14 = OpLabel
+               OpStore %outColor %11
+               OpStore %gl_FragDepth %float_0_400000006
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..7047d54
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.400000006f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.msl
new file mode 100644
index 0000000..99a77a3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.400000006f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..abc3df8
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_400000006 = OpConstant %float 0.400000006
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_400000006
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..f6cb3ea
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.400000006;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
new file mode 100644
index 0000000..f6cb3ea
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.400000006;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..7047d54
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.hlsl
@@ -0,0 +1,24 @@
+static float4 outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float gl_FragDepth = 0.0f;
+
+void main_1() {
+  outColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  gl_FragDepth = 0.400000006f;
+  return;
+}
+
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol {
+  float4 outColor_1 : SV_Target0;
+  float gl_FragDepth_1 : SV_Depth;
+};
+
+tint_symbol main() {
+  main_1();
+  const main_out tint_symbol_1 = {outColor, gl_FragDepth};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.outColor_1, tint_symbol_1.gl_FragDepth_1};
+  return tint_symbol_2;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.msl
new file mode 100644
index 0000000..99a77a3
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 outColor_1;
+  float gl_FragDepth_1;
+};
+struct tint_symbol_1 {
+  float4 outColor_1 [[color(0)]];
+  float gl_FragDepth_1 [[depth(any)]];
+};
+
+void main_1(thread float4* const tint_symbol_4, thread float* const tint_symbol_5) {
+  *(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
+  *(tint_symbol_5) = 0.400000006f;
+  return;
+}
+
+fragment tint_symbol_1 tint_symbol() {
+  thread float4 tint_symbol_6 = 0.0f;
+  thread float tint_symbol_7 = 0.0f;
+  main_1(&(tint_symbol_6), &(tint_symbol_7));
+  main_out const tint_symbol_2 = {.outColor_1=tint_symbol_6, .gl_FragDepth_1=tint_symbol_7};
+  tint_symbol_1 const tint_symbol_3 = {.outColor_1=tint_symbol_2.outColor_1, .gl_FragDepth_1=tint_symbol_2.gl_FragDepth_1};
+  return tint_symbol_3;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..abc3df8
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %outColor "outColor"
+               OpName %gl_FragDepth "gl_FragDepth"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "outColor_1"
+               OpMemberName %main_out 1 "gl_FragDepth_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+   %outColor = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Private_float = OpTypePointer Private %float
+          %8 = OpConstantNull %float
+%gl_FragDepth = OpVariable %_ptr_Private_float Private %8
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+    %float_0 = OpConstant %float 0
+         %18 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
+%float_0_400000006 = OpConstant %float 0.400000006
+   %main_out = OpTypeStruct %v4float %float
+         %20 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %13
+         %16 = OpLabel
+               OpStore %outColor %18
+               OpStore %gl_FragDepth %float_0_400000006
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %main_out
+         %24 = OpLabel
+         %25 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %13
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %main_1
+         %31 = OpLoad %v4float %outColor
+         %32 = OpLoad %float %gl_FragDepth
+         %33 = OpCompositeConstruct %main_out %31 %32
+         %30 = OpFunctionCall %void %tint_symbol_3 %33
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..f6cb3ea
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> outColor : vec4<f32>;
+
+var<private> gl_FragDepth : f32;
+
+fn main_1() {
+  outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+  gl_FragDepth = 0.400000006;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  outColor_1 : vec4<f32>;
+  [[builtin(frag_depth)]]
+  gl_FragDepth_1 : f32;
+};
+
+[[stage(fragment)]]
+fn main() -> main_out {
+  main_1();
+  return main_out(outColor, gl_FragDepth);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm
new file mode 100644
index 0000000..ba4adaf
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm
@@ -0,0 +1,48 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position %pos
+               OpSource GLSL 450
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpMemberName %gl_PerVertex 3 "gl_CullDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpName %pos "pos"
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+               OpDecorate %pos Flat
+               OpDecorate %pos Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %position = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%_ptr_Output_uint = OpTypePointer Output %uint
+        %pos = OpVariable %_ptr_Output_uint Output
+     %uint_0 = OpConstant %uint 0
+       %main = OpFunction %void None %8
+         %21 = OpLabel
+         %22 = OpLoad %v4float %position
+         %23 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %23 %22
+               OpStore %pos %uint_0
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..b121d9e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static uint pos = 0u;
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  gl_Position = position;
+  pos = 0u;
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+  uint pos_1;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  uint pos_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position, pos};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.pos_1, tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.msl
new file mode 100644
index 0000000..5a99a8e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+  uint pos_1;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  uint pos_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7, thread uint* const tint_symbol_8) {
+  float4 const x_22 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_22;
+  *(tint_symbol_8) = 0u;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  thread uint tint_symbol_11 = 0u;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_9 = position_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_10, .pos_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.pos_1=tint_symbol_4.pos_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..b7ee735
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.spvasm
@@ -0,0 +1,82 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %pos "pos"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpMemberName %main_out 1 "pos_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpDecorate %tint_symbol_3 Location 0
+               OpDecorate %tint_symbol_3 Flat
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+       %uint = OpTypeInt 32 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+         %12 = OpConstantNull %uint
+        %pos = OpVariable %_ptr_Private_uint Private %12
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+%_ptr_Output_uint = OpTypePointer Output %uint
+%tint_symbol_3 = OpVariable %_ptr_Output_uint Output %12
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+   %main_out = OpTypeStruct %v4float %uint
+         %26 = OpTypeFunction %void %main_out
+    %float_1 = OpConstant %float 1
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %24 = OpLoad %v4float %position
+               OpStore %gl_Position %24
+               OpStore %pos %uint_0
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %26
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %30 = OpLabel
+         %31 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %31
+         %32 = OpCompositeExtract %uint %tint_symbol_1 1
+               OpStore %tint_symbol_3 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %34 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpLoad %uint %pos
+         %41 = OpCompositeConstruct %main_out %39 %40
+         %38 = OpFunctionCall %void %tint_symbol_4 %41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..081740c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.wgsl
@@ -0,0 +1,26 @@
+var<private> position : vec4<f32>;
+
+var<private> pos : u32;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  gl_Position = x_22;
+  pos = 0u;
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+  [[location(0)]]
+  pos_1 : u32;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position, pos);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
new file mode 100644
index 0000000..081740c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
@@ -0,0 +1,26 @@
+var<private> position : vec4<f32>;
+
+var<private> pos : u32;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  gl_Position = x_22;
+  pos = 0u;
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+  [[location(0)]]
+  pos_1 : u32;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position, pos);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..b121d9e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.hlsl
@@ -0,0 +1,30 @@
+static float4 position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static uint pos = 0u;
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  gl_Position = position;
+  pos = 0u;
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+  uint pos_1;
+};
+struct tint_symbol_1 {
+  float4 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  uint pos_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position, pos};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.pos_1, tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.msl
new file mode 100644
index 0000000..5a99a8e
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+  uint pos_1;
+};
+struct tint_symbol_2 {
+  float4 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  uint pos_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7, thread uint* const tint_symbol_8) {
+  float4 const x_22 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_22;
+  *(tint_symbol_8) = 0u;
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread float4 tint_symbol_10 = 0.0f;
+  thread uint tint_symbol_11 = 0u;
+  float4 const position_param = tint_symbol_1.position_param;
+  tint_symbol_9 = position_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_10, .pos_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.pos_1=tint_symbol_4.pos_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..b7ee735
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.spvasm
@@ -0,0 +1,82 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %pos "pos"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpMemberName %main_out 1 "pos_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpDecorate %tint_symbol_3 Location 0
+               OpDecorate %tint_symbol_3 Flat
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %8 = OpConstantNull %v4float
+   %position = OpVariable %_ptr_Private_v4float Private %8
+       %uint = OpTypeInt 32 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+         %12 = OpConstantNull %uint
+        %pos = OpVariable %_ptr_Private_uint Private %12
+%gl_Position = OpVariable %_ptr_Private_v4float Private %8
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %8
+%_ptr_Output_uint = OpTypePointer Output %uint
+%tint_symbol_3 = OpVariable %_ptr_Output_uint Output %12
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+   %main_out = OpTypeStruct %v4float %uint
+         %26 = OpTypeFunction %void %main_out
+    %float_1 = OpConstant %float 1
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+         %24 = OpLoad %v4float %position
+               OpStore %gl_Position %24
+               OpStore %pos %uint_0
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %26
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %30 = OpLabel
+         %31 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %31
+         %32 = OpCompositeExtract %uint %tint_symbol_1 1
+               OpStore %tint_symbol_3 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %34 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %36 = OpLoad %v4float %tint_symbol
+               OpStore %position %36
+         %37 = OpFunctionCall %void %main_1
+         %39 = OpLoad %v4float %gl_Position
+         %40 = OpLoad %uint %pos
+         %41 = OpCompositeConstruct %main_out %39 %40
+         %38 = OpFunctionCall %void %tint_symbol_4 %41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..081740c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.wgsl
@@ -0,0 +1,26 @@
+var<private> position : vec4<f32>;
+
+var<private> pos : u32;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec4<f32> = position;
+  gl_Position = x_22;
+  pos = 0u;
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+  [[location(0)]]
+  pos_1 : u32;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position, pos);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm
new file mode 100644
index 0000000..b74d27f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm
@@ -0,0 +1,36 @@
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %1 "main" %2 %3 %4 %5
+               OpDecorate %2 Location 0
+               OpDecorate %3 Location 1
+               OpDecorate %4 Location 0
+               OpDecorate %_struct_6 Block
+               OpMemberDecorate %_struct_6 0 BuiltIn Position
+       %void = OpTypeVoid
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %float = OpTypeFloat 32
+    %float_1 = OpConstant %float 1
+    %v3float = OpTypeVector %float 3
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v3float = OpTypePointer Input %v3float
+%_ptr_Input_int = OpTypePointer Input %int
+%_ptr_Output_int = OpTypePointer Output %int
+  %_struct_6 = OpTypeStruct %v4float
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%_ptr_Output__struct_6 = OpTypePointer Output %_struct_6
+          %2 = OpVariable %_ptr_Input_v3float Input
+          %3 = OpVariable %_ptr_Input_int Input
+          %4 = OpVariable %_ptr_Output_int Output
+          %5 = OpVariable %_ptr_Output__struct_6 Output
+         %20 = OpTypeFunction %void
+          %1 = OpFunction %void None %20
+         %21 = OpLabel
+         %22 = OpLoad %v3float %2
+         %23 = OpCompositeConstruct %v4float %22 %float_1
+         %24 = OpAccessChain %_ptr_Output_v4float %5 %int_0
+               OpStore %24 %23
+               OpCopyMemory %4 %3
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..4d470f2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+static float3 x_2 = float3(0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  gl_Position = float4(x_2, 1.0f);
+  x_4 = x_3;
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float3 x_2_param : TEXCOORD0;
+  int x_3_param : TEXCOORD1;
+};
+struct tint_symbol_2 {
+  int x_4_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float3 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4, gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1, tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..fcba4cc
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float3 x_2_param [[attribute(0)]];
+  int x_3_param [[attribute(1)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float3* const tint_symbol_6, thread float4* const tint_symbol_7, thread int* const tint_symbol_8, thread int* const tint_symbol_9) {
+  float3 const x_22 = *(tint_symbol_6);
+  *(tint_symbol_7) = float4(x_22, 1.0f);
+  *(tint_symbol_8) = *(tint_symbol_9);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float3 tint_symbol_10 = 0.0f;
+  thread int tint_symbol_11 = 0;
+  thread float4 tint_symbol_12 = 0.0f;
+  thread int tint_symbol_13 = 0;
+  float3 const x_2_param = tint_symbol_1.x_2_param;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_10 = x_2_param;
+  tint_symbol_11 = x_3_param;
+  main_1(&(tint_symbol_10), &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_13, .gl_Position=tint_symbol_12};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..2bfe24c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_1 %tint_symbol_3 %tint_symbol_4
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_1 Location 1
+               OpDecorate %tint_symbol_3 Location 0
+               OpDecorate %tint_symbol_3 Flat
+               OpDecorate %tint_symbol_4 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v3float = OpTypeVector %float 3
+%_ptr_Private_v3float = OpTypePointer Private %v3float
+          %8 = OpConstantNull %v3float
+        %x_2 = OpVariable %_ptr_Private_v3float Private %8
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+         %12 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %12
+        %x_4 = OpVariable %_ptr_Private_int Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_Position = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v3float = OpTypePointer Input %v3float
+%tint_symbol = OpVariable %_ptr_Input_v3float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_4 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %26 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %int %v4float
+         %37 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %26
+         %29 = OpLabel
+         %30 = OpLoad %v3float %x_2
+         %31 = OpCompositeExtract %float %30 0
+         %32 = OpCompositeExtract %float %30 1
+         %33 = OpCompositeExtract %float %30 2
+         %35 = OpCompositeConstruct %v4float %31 %32 %33 %float_1
+               OpStore %gl_Position %35
+         %36 = OpLoad %int %x_3
+               OpStore %x_4 %36
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_5 = OpFunction %void None %37
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %41 = OpLabel
+         %42 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %42
+         %43 = OpCompositeExtract %v4float %tint_symbol_2 1
+               OpStore %tint_symbol_4 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %26
+         %45 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %46 = OpLoad %v3float %tint_symbol
+               OpStore %x_2 %46
+         %47 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %47
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %int %x_4
+         %51 = OpLoad %v4float %gl_Position
+         %52 = OpCompositeConstruct %main_out %50 %51
+         %49 = OpFunctionCall %void %tint_symbol_5 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..9959aa6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,29 @@
+var<private> x_2 : vec3<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec3<f32> = x_2;
+  gl_Position = vec4<f32>(x_22, 1.0);
+  x_4 = x_3;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_2_param : vec3<f32>, [[location(1)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4, gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
new file mode 100644
index 0000000..9959aa6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
@@ -0,0 +1,29 @@
+var<private> x_2 : vec3<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec3<f32> = x_2;
+  gl_Position = vec4<f32>(x_22, 1.0);
+  x_4 = x_3;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_2_param : vec3<f32>, [[location(1)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4, gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..4d470f2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+static float3 x_2 = float3(0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  gl_Position = float4(x_2, 1.0f);
+  x_4 = x_3;
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float3 x_2_param : TEXCOORD0;
+  int x_3_param : TEXCOORD1;
+};
+struct tint_symbol_2 {
+  int x_4_1 : TEXCOORD0;
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float3 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4, gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1, tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..fcba4cc
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float3 x_2_param [[attribute(0)]];
+  int x_3_param [[attribute(1)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[user(locn0)]];
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float3* const tint_symbol_6, thread float4* const tint_symbol_7, thread int* const tint_symbol_8, thread int* const tint_symbol_9) {
+  float3 const x_22 = *(tint_symbol_6);
+  *(tint_symbol_7) = float4(x_22, 1.0f);
+  *(tint_symbol_8) = *(tint_symbol_9);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float3 tint_symbol_10 = 0.0f;
+  thread int tint_symbol_11 = 0;
+  thread float4 tint_symbol_12 = 0.0f;
+  thread int tint_symbol_13 = 0;
+  float3 const x_2_param = tint_symbol_1.x_2_param;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_10 = x_2_param;
+  tint_symbol_11 = x_3_param;
+  main_1(&(tint_symbol_10), &(tint_symbol_12), &(tint_symbol_13), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_13, .gl_Position=tint_symbol_12};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1, .gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..2bfe24c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 53
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_1 %tint_symbol_3 %tint_symbol_4
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpMemberName %main_out 1 "gl_Position"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_1 Location 1
+               OpDecorate %tint_symbol_3 Location 0
+               OpDecorate %tint_symbol_3 Flat
+               OpDecorate %tint_symbol_4 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+               OpMemberDecorate %main_out 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v3float = OpTypeVector %float 3
+%_ptr_Private_v3float = OpTypePointer Private %v3float
+          %8 = OpConstantNull %v3float
+        %x_2 = OpVariable %_ptr_Private_v3float Private %8
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+         %12 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %12
+        %x_4 = OpVariable %_ptr_Private_int Private %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %17 = OpConstantNull %v4float
+%gl_Position = OpVariable %_ptr_Private_v4float Private %17
+%_ptr_Input_v3float = OpTypePointer Input %v3float
+%tint_symbol = OpVariable %_ptr_Input_v3float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %12
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_4 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+         %26 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %int %v4float
+         %37 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %26
+         %29 = OpLabel
+         %30 = OpLoad %v3float %x_2
+         %31 = OpCompositeExtract %float %30 0
+         %32 = OpCompositeExtract %float %30 1
+         %33 = OpCompositeExtract %float %30 2
+         %35 = OpCompositeConstruct %v4float %31 %32 %33 %float_1
+               OpStore %gl_Position %35
+         %36 = OpLoad %int %x_3
+               OpStore %x_4 %36
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_5 = OpFunction %void None %37
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %41 = OpLabel
+         %42 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %42
+         %43 = OpCompositeExtract %v4float %tint_symbol_2 1
+               OpStore %tint_symbol_4 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %26
+         %45 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %46 = OpLoad %v3float %tint_symbol
+               OpStore %x_2 %46
+         %47 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %47
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %int %x_4
+         %51 = OpLoad %v4float %gl_Position
+         %52 = OpCompositeConstruct %main_out %50 %51
+         %49 = OpFunctionCall %void %tint_symbol_5 %52
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..9959aa6
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,29 @@
+var<private> x_2 : vec3<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_22 : vec3<f32> = x_2;
+  gl_Position = vec4<f32>(x_22, 1.0);
+  x_4 = x_3;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] x_2_param : vec3<f32>, [[location(1)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4, gl_Position);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm
new file mode 100644
index 0000000..d84314b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm
@@ -0,0 +1,58 @@
+               OpCapability Shader
+               OpExtension "SPV_KHR_terminate_invocation"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %1 "main" %gl_FragCoord %3 %4
+               OpExecutionMode %1 OriginUpperLeft
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %3 Location 0
+               OpDecorate %3 Flat
+               OpDecorate %4 Location 0
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+       %void = OpTypeVoid
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_8 = OpConstant %int 8
+      %v2int = OpTypeVector %int 2
+      %v4int = OpTypeVector %int 4
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_int = OpTypePointer Input %int
+%_ptr_Output_int = OpTypePointer Output %int
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+          %3 = OpVariable %_ptr_Input_int Input
+          %4 = OpVariable %_ptr_Output_int Output
+         %19 = OpTypeImage %int 2D 0 0 0 2 R32i
+%_ptr_UniformConstant_19 = OpTypePointer UniformConstant %19
+          %5 = OpVariable %_ptr_UniformConstant_19 UniformConstant
+         %21 = OpTypeFunction %void
+          %1 = OpFunction %void None %21
+         %22 = OpLabel
+               OpStore %4 %int_1
+         %23 = OpLoad %v4float %gl_FragCoord
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %26 = OpCompositeExtract %float %23 2
+         %27 = OpConvertFToS %int %24
+         %28 = OpConvertFToS %int %25
+         %29 = OpConvertFToS %int %26
+         %30 = OpBitwiseAnd %int %27 %int_1
+         %31 = OpBitwiseAnd %int %28 %int_1
+         %32 = OpIAdd %int %30 %31
+         %33 = OpLoad %int %3
+         %34 = OpIAdd %int %32 %33
+         %35 = OpIEqual %bool %34 %29
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+               OpTerminateInvocation
+         %36 = OpLabel
+         %38 = OpCompositeConstruct %v4int %27 %int_0 %int_0 %int_0
+         %39 = OpCompositeConstruct %v2int %27 %28
+         %40 = OpLoad %19 %5
+               OpImageWrite %40 %39 %38
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..0097cb2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+RWTexture2D<int4> x_5 : register(u0, space0);
+
+void main_1() {
+  x_4 = 1;
+  const float4 x_23 = x_2;
+  const int x_27 = int(x_23.x);
+  const int x_28 = int(x_23.y);
+  if (((((x_27 & 1) + (x_28 & 1)) + x_3) == int(x_23.z))) {
+  }
+  x_5[int2(x_27, x_28)] = int4(x_27, 0, 0, 0);
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.msl
new file mode 100644
index 0000000..88c8f1c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(thread int* const tint_symbol_6, thread float4* const tint_symbol_7, thread int* const tint_symbol_8, texture2d<int, access::write> tint_symbol_9) {
+  *(tint_symbol_6) = 1;
+  float4 const x_23 = *(tint_symbol_7);
+  int const x_27 = int(x_23.x);
+  int const x_28 = int(x_23.y);
+  int const x_33 = *(tint_symbol_8);
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == int(x_23.z))) {
+  }
+  tint_symbol_9.write(int4(x_27, 0, 0, 0), uint2(int2(x_27, x_28)));
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(texture2d<int, access::write> tint_symbol_13 [[texture(0)]], float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread int tint_symbol_11 = 0;
+  thread int tint_symbol_12 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_10 = x_2_param;
+  tint_symbol_11 = x_3_param;
+  main_1(&(tint_symbol_12), &(tint_symbol_10), &(tint_symbol_11), tint_symbol_13);
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_12};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..3a722c8
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %x_5 NonReadable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+         %13 = OpTypeImage %int 2D 0 0 0 2 R32i
+%_ptr_UniformConstant_13 = OpTypePointer UniformConstant %13
+        %x_5 = OpVariable %_ptr_UniformConstant_13 UniformConstant
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %v2int = OpTypeVector %int 2
+      %v4int = OpTypeVector %int 4
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %int
+         %48 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+               OpStore %x_4 %int_1
+         %25 = OpLoad %v4float %x_2
+         %27 = OpCompositeExtract %float %25 0
+         %26 = OpConvertFToS %int %27
+         %29 = OpCompositeExtract %float %25 1
+         %28 = OpConvertFToS %int %29
+         %30 = OpLoad %int %x_3
+         %31 = OpBitwiseAnd %int %26 %int_1
+         %32 = OpBitwiseAnd %int %28 %int_1
+         %33 = OpIAdd %int %31 %32
+         %34 = OpIAdd %int %33 %30
+         %36 = OpCompositeExtract %float %25 2
+         %35 = OpConvertFToS %int %36
+         %37 = OpIEqual %bool %34 %35
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %39
+         %40 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+         %42 = OpLoad %13 %x_5
+         %44 = OpCompositeConstruct %v2int %26 %28
+         %47 = OpCompositeConstruct %v4int %26 %int_0 %int_0 %int_0
+               OpImageWrite %42 %44 %47
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %48
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %52 = OpLabel
+         %53 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %53
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %55 = OpLabel
+         %56 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %56
+         %57 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %57
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %int %x_4
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_4 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..0f3c732
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.spvasm.expected.wgsl
@@ -0,0 +1,32 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+[[group(0), binding(0)]] var x_5 : texture_storage_2d<r32sint, write>;
+
+fn main_1() {
+  x_4 = 1;
+  let x_23 : vec4<f32> = x_2;
+  let x_27 : i32 = i32(x_23.x);
+  let x_28 : i32 = i32(x_23.y);
+  let x_33 : i32 = x_3;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == i32(x_23.z))) {
+  }
+  textureStore(x_5, vec2<i32>(x_27, x_28), vec4<i32>(x_27, 0, 0, 0));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
new file mode 100644
index 0000000..0f3c732
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
@@ -0,0 +1,32 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+[[group(0), binding(0)]] var x_5 : texture_storage_2d<r32sint, write>;
+
+fn main_1() {
+  x_4 = 1;
+  let x_23 : vec4<f32> = x_2;
+  let x_27 : i32 = i32(x_23.x);
+  let x_28 : i32 = i32(x_23.y);
+  let x_33 : i32 = x_3;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == i32(x_23.z))) {
+  }
+  textureStore(x_5, vec2<i32>(x_27, x_28), vec4<i32>(x_27, 0, 0, 0));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..0097cb2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+RWTexture2D<int4> x_5 : register(u0, space0);
+
+void main_1() {
+  x_4 = 1;
+  const float4 x_23 = x_2;
+  const int x_27 = int(x_23.x);
+  const int x_28 = int(x_23.y);
+  if (((((x_27 & 1) + (x_28 & 1)) + x_3) == int(x_23.z))) {
+  }
+  x_5[int2(x_27, x_28)] = int4(x_27, 0, 0, 0);
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.msl
new file mode 100644
index 0000000..88c8f1c
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(thread int* const tint_symbol_6, thread float4* const tint_symbol_7, thread int* const tint_symbol_8, texture2d<int, access::write> tint_symbol_9) {
+  *(tint_symbol_6) = 1;
+  float4 const x_23 = *(tint_symbol_7);
+  int const x_27 = int(x_23.x);
+  int const x_28 = int(x_23.y);
+  int const x_33 = *(tint_symbol_8);
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == int(x_23.z))) {
+  }
+  tint_symbol_9.write(int4(x_27, 0, 0, 0), uint2(int2(x_27, x_28)));
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(texture2d<int, access::write> tint_symbol_13 [[texture(0)]], float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_10 = 0.0f;
+  thread int tint_symbol_11 = 0;
+  thread int tint_symbol_12 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_10 = x_2_param;
+  tint_symbol_11 = x_3_param;
+  main_1(&(tint_symbol_12), &(tint_symbol_10), &(tint_symbol_11), tint_symbol_13);
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_12};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..3a722c8
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.spvasm
@@ -0,0 +1,104 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 62
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %x_5 NonReadable
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+         %13 = OpTypeImage %int 2D 0 0 0 2 R32i
+%_ptr_UniformConstant_13 = OpTypePointer UniformConstant %13
+        %x_5 = OpVariable %_ptr_UniformConstant_13 UniformConstant
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %20 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+      %v2int = OpTypeVector %int 2
+      %v4int = OpTypeVector %int 4
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %int
+         %48 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %20
+         %23 = OpLabel
+               OpStore %x_4 %int_1
+         %25 = OpLoad %v4float %x_2
+         %27 = OpCompositeExtract %float %25 0
+         %26 = OpConvertFToS %int %27
+         %29 = OpCompositeExtract %float %25 1
+         %28 = OpConvertFToS %int %29
+         %30 = OpLoad %int %x_3
+         %31 = OpBitwiseAnd %int %26 %int_1
+         %32 = OpBitwiseAnd %int %28 %int_1
+         %33 = OpIAdd %int %31 %32
+         %34 = OpIAdd %int %33 %30
+         %36 = OpCompositeExtract %float %25 2
+         %35 = OpConvertFToS %int %36
+         %37 = OpIEqual %bool %34 %35
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %39
+         %40 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+         %42 = OpLoad %13 %x_5
+         %44 = OpCompositeConstruct %v2int %26 %28
+         %47 = OpCompositeConstruct %v4int %26 %int_0 %int_0 %int_0
+               OpImageWrite %42 %44 %47
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %48
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %52 = OpLabel
+         %53 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %53
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %20
+         %55 = OpLabel
+         %56 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %56
+         %57 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %57
+         %58 = OpFunctionCall %void %main_1
+         %60 = OpLoad %int %x_4
+         %61 = OpCompositeConstruct %main_out %60
+         %59 = OpFunctionCall %void %tint_symbol_4 %61
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..0f3c732
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.wgsl
@@ -0,0 +1,32 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+[[group(0), binding(0)]] var x_5 : texture_storage_2d<r32sint, write>;
+
+fn main_1() {
+  x_4 = 1;
+  let x_23 : vec4<f32> = x_2;
+  let x_27 : i32 = i32(x_23.x);
+  let x_28 : i32 = i32(x_23.y);
+  let x_33 : i32 = x_3;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == i32(x_23.z))) {
+  }
+  textureStore(x_5, vec2<i32>(x_27, x_28), vec4<i32>(x_27, 0, 0, 0));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm
new file mode 100644
index 0000000..e70d79a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm
@@ -0,0 +1,45 @@
+               OpCapability Shader
+               OpExtension "SPV_KHR_terminate_invocation"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %1 "main" %gl_FragCoord %3 %4
+               OpExecutionMode %1 OriginUpperLeft
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %3 Location 0
+               OpDecorate %3 Flat
+               OpDecorate %4 Location 0
+       %void = OpTypeVoid
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_int = OpTypePointer Input %int
+%_ptr_Output_int = OpTypePointer Output %int
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+          %3 = OpVariable %_ptr_Input_int Input
+          %4 = OpVariable %_ptr_Output_int Output
+         %14 = OpTypeFunction %void
+          %1 = OpFunction %void None %14
+         %15 = OpLabel
+         %16 = OpLoad %v4float %gl_FragCoord
+         %17 = OpCompositeExtract %float %16 0
+         %18 = OpCompositeExtract %float %16 1
+         %19 = OpCompositeExtract %float %16 2
+         %20 = OpConvertFToS %int %17
+         %21 = OpConvertFToS %int %18
+         %22 = OpConvertFToS %int %19
+         %23 = OpBitwiseAnd %int %20 %int_1
+         %24 = OpBitwiseAnd %int %21 %int_1
+         %25 = OpIAdd %int %23 %24
+         %26 = OpLoad %int %3
+         %27 = OpIAdd %int %25 %26
+         %28 = OpIEqual %bool %27 %22
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %29
+         %30 = OpLabel
+               OpTerminateInvocation
+         %29 = OpLabel
+               OpStore %4 %int_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..a97b541
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.hlsl
@@ -0,0 +1,33 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+
+void main_1() {
+  const float4 x_16 = x_2;
+  if (((((int(x_16.x) & 1) + (int(x_16.y) & 1)) + x_3) == int(x_16.z))) {
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.msl
new file mode 100644
index 0000000..a72a509
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread int* const tint_symbol_7, thread int* const tint_symbol_8) {
+  float4 const x_16 = *(tint_symbol_6);
+  int const x_26 = *(tint_symbol_7);
+  if (((((int(x_16.x) & 1) + (int(x_16.y) & 1)) + x_26) == int(x_16.z))) {
+  }
+  *(tint_symbol_8) = 1;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..99bfcd9
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.spvasm
@@ -0,0 +1,90 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %int
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %21 = OpLoad %v4float %x_2
+         %22 = OpLoad %int %x_3
+         %24 = OpCompositeExtract %float %21 0
+         %23 = OpConvertFToS %int %24
+         %26 = OpBitwiseAnd %int %23 %int_1
+         %28 = OpCompositeExtract %float %21 1
+         %27 = OpConvertFToS %int %28
+         %29 = OpBitwiseAnd %int %27 %int_1
+         %30 = OpIAdd %int %26 %29
+         %31 = OpIAdd %int %30 %22
+         %33 = OpCompositeExtract %float %21 2
+         %32 = OpConvertFToS %int %33
+         %34 = OpIEqual %bool %31 %32
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpStore %x_4 %int_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %38
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %45 = OpLabel
+         %46 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %46
+         %47 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %47
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %int %x_4
+         %51 = OpCompositeConstruct %main_out %50
+         %49 = OpFunctionCall %void %tint_symbol_4 %51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..affcd63
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.spvasm.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+fn main_1() {
+  let x_16 : vec4<f32> = x_2;
+  let x_26 : i32 = x_3;
+  if (((((i32(x_16.x) & 1) + (i32(x_16.y) & 1)) + x_26) == i32(x_16.z))) {
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
new file mode 100644
index 0000000..affcd63
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
@@ -0,0 +1,27 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+fn main_1() {
+  let x_16 : vec4<f32> = x_2;
+  let x_26 : i32 = x_3;
+  if (((((i32(x_16.x) & 1) + (i32(x_16.y) & 1)) + x_26) == i32(x_16.z))) {
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..a97b541
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.hlsl
@@ -0,0 +1,33 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+
+void main_1() {
+  const float4 x_16 = x_2;
+  if (((((int(x_16.x) & 1) + (int(x_16.y) & 1)) + x_3) == int(x_16.z))) {
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.msl
new file mode 100644
index 0000000..a72a509
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread int* const tint_symbol_7, thread int* const tint_symbol_8) {
+  float4 const x_16 = *(tint_symbol_6);
+  int const x_26 = *(tint_symbol_7);
+  if (((((int(x_16.x) & 1) + (int(x_16.y) & 1)) + x_26) == int(x_16.z))) {
+  }
+  *(tint_symbol_8) = 1;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..99bfcd9
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.spvasm
@@ -0,0 +1,90 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %int
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %21 = OpLoad %v4float %x_2
+         %22 = OpLoad %int %x_3
+         %24 = OpCompositeExtract %float %21 0
+         %23 = OpConvertFToS %int %24
+         %26 = OpBitwiseAnd %int %23 %int_1
+         %28 = OpCompositeExtract %float %21 1
+         %27 = OpConvertFToS %int %28
+         %29 = OpBitwiseAnd %int %27 %int_1
+         %30 = OpIAdd %int %26 %29
+         %31 = OpIAdd %int %30 %22
+         %33 = OpCompositeExtract %float %21 2
+         %32 = OpConvertFToS %int %33
+         %34 = OpIEqual %bool %31 %32
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpStore %x_4 %int_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %38
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %45 = OpLabel
+         %46 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %46
+         %47 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %47
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %int %x_4
+         %51 = OpCompositeConstruct %main_out %50
+         %49 = OpFunctionCall %void %tint_symbol_4 %51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..affcd63
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+fn main_1() {
+  let x_16 : vec4<f32> = x_2;
+  let x_26 : i32 = x_3;
+  if (((((i32(x_16.x) & 1) + (i32(x_16.y) & 1)) + x_26) == i32(x_16.z))) {
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm
new file mode 100644
index 0000000..c677499
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm
@@ -0,0 +1,53 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %out_data
+               OpExecutionMode %main OriginUpperLeft
+               OpSource GLSL 450
+               OpName %main "main"
+               OpName %x_is_odd "x_is_odd"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %y_is_odd "y_is_odd"
+               OpName %out_data "out_data"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %out_data Location 0
+       %void = OpTypeVoid
+          %8 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+%_ptr_Output_int = OpTypePointer Output %int
+   %out_data = OpVariable %_ptr_Output_int Output
+      %int_0 = OpConstant %int 0
+       %main = OpFunction %void None %8
+         %22 = OpLabel
+   %x_is_odd = OpVariable %_ptr_Function_bool Function
+   %y_is_odd = OpVariable %_ptr_Function_bool Function
+         %23 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %24 = OpLoad %float %23
+         %25 = OpConvertFToS %int %24
+         %26 = OpBitwiseAnd %int %25 %int_1
+         %27 = OpIEqual %bool %26 %int_1
+               OpStore %x_is_odd %27
+         %28 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %29 = OpLoad %float %28
+         %30 = OpConvertFToS %int %29
+         %31 = OpBitwiseAnd %int %30 %int_1
+         %32 = OpIEqual %bool %31 %int_1
+               OpStore %y_is_odd %32
+         %33 = OpLoad %bool %x_is_odd
+         %34 = OpLoad %bool %y_is_odd
+         %35 = OpLogicalOr %bool %33 %34
+         %36 = OpSelect %int %35 %int_1 %int_0
+               OpStore %out_data %36
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..1ad88d2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.hlsl
@@ -0,0 +1,36 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int out_data = 0;
+
+void main_1() {
+  bool x_is_odd = false;
+  bool y_is_odd = false;
+  const float x_24 = gl_FragCoord.x;
+  x_is_odd = ((int(x_24) & 1) == 1);
+  const float x_29 = gl_FragCoord.y;
+  y_is_odd = ((int(x_29) & 1) == 1);
+  bool tint_tmp = x_is_odd;
+  if (!tint_tmp) {
+    tint_tmp = y_is_odd;
+  }
+  out_data = ((tint_tmp) ? 1 : 0);
+  return;
+}
+
+struct main_out {
+  int out_data_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int out_data_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {out_data};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.out_data_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.msl
new file mode 100644
index 0000000..a2b97bf
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int out_data_1;
+};
+struct tint_symbol_2 {
+  int out_data_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread int* const tint_symbol_6) {
+  bool x_is_odd = false;
+  bool y_is_odd = false;
+  float const x_24 = (*(tint_symbol_5)).x;
+  x_is_odd = ((int(x_24) & 1) == 1);
+  float const x_29 = (*(tint_symbol_5)).y;
+  y_is_odd = ((int(x_29) & 1) == 1);
+  bool const x_33 = x_is_odd;
+  bool const x_34 = y_is_odd;
+  *(tint_symbol_6) = select(0, 1, (x_33 || x_34));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread int tint_symbol_8 = 0;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.out_data_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.out_data_1=tint_symbol_3.out_data_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..3488753
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.spvasm
@@ -0,0 +1,95 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 58
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %out_data "out_data"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_is_odd "x_is_odd"
+               OpName %y_is_odd "y_is_odd"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "out_data_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+   %out_data = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_2 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %21 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %int
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+   %x_is_odd = OpVariable %_ptr_Function_bool Function %21
+   %y_is_odd = OpVariable %_ptr_Function_bool Function %21
+         %26 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %27 = OpLoad %float %26
+         %28 = OpConvertFToS %int %27
+         %30 = OpBitwiseAnd %int %28 %int_1
+         %31 = OpIEqual %bool %30 %int_1
+               OpStore %x_is_odd %31
+         %33 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpConvertFToS %int %34
+         %36 = OpBitwiseAnd %int %35 %int_1
+         %37 = OpIEqual %bool %36 %int_1
+               OpStore %y_is_odd %37
+         %38 = OpLoad %bool %x_is_odd
+         %39 = OpLoad %bool %y_is_odd
+               OpSelectionMerge %41 None
+               OpBranchConditional %38 %41 %42
+         %42 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %43 = OpPhi %bool %38 %17 %39 %42
+         %40 = OpSelect %int %43 %int_1 %int_0
+               OpStore %out_data %40
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %45
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %int %tint_symbol_1 0
+               OpStore %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %52 = OpLabel
+         %53 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %53
+         %54 = OpFunctionCall %void %main_1
+         %56 = OpLoad %int %out_data
+         %57 = OpCompositeConstruct %main_out %56
+         %55 = OpFunctionCall %void %tint_symbol_3 %57
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..3820a70
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.spvasm.expected.wgsl
@@ -0,0 +1,28 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> out_data : i32;
+
+fn main_1() {
+  var x_is_odd : bool;
+  var y_is_odd : bool;
+  let x_24 : f32 = gl_FragCoord.x;
+  x_is_odd = ((i32(x_24) & 1) == 1);
+  let x_29 : f32 = gl_FragCoord.y;
+  y_is_odd = ((i32(x_29) & 1) == 1);
+  let x_33 : bool = x_is_odd;
+  let x_34 : bool = y_is_odd;
+  out_data = select(0, 1, (x_33 || x_34));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  out_data_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(out_data);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
new file mode 100644
index 0000000..3820a70
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
@@ -0,0 +1,28 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> out_data : i32;
+
+fn main_1() {
+  var x_is_odd : bool;
+  var y_is_odd : bool;
+  let x_24 : f32 = gl_FragCoord.x;
+  x_is_odd = ((i32(x_24) & 1) == 1);
+  let x_29 : f32 = gl_FragCoord.y;
+  y_is_odd = ((i32(x_29) & 1) == 1);
+  let x_33 : bool = x_is_odd;
+  let x_34 : bool = y_is_odd;
+  out_data = select(0, 1, (x_33 || x_34));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  out_data_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(out_data);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..1ad88d2
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.hlsl
@@ -0,0 +1,36 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int out_data = 0;
+
+void main_1() {
+  bool x_is_odd = false;
+  bool y_is_odd = false;
+  const float x_24 = gl_FragCoord.x;
+  x_is_odd = ((int(x_24) & 1) == 1);
+  const float x_29 = gl_FragCoord.y;
+  y_is_odd = ((int(x_29) & 1) == 1);
+  bool tint_tmp = x_is_odd;
+  if (!tint_tmp) {
+    tint_tmp = y_is_odd;
+  }
+  out_data = ((tint_tmp) ? 1 : 0);
+  return;
+}
+
+struct main_out {
+  int out_data_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int out_data_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {out_data};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.out_data_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.msl
new file mode 100644
index 0000000..a2b97bf
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int out_data_1;
+};
+struct tint_symbol_2 {
+  int out_data_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread int* const tint_symbol_6) {
+  bool x_is_odd = false;
+  bool y_is_odd = false;
+  float const x_24 = (*(tint_symbol_5)).x;
+  x_is_odd = ((int(x_24) & 1) == 1);
+  float const x_29 = (*(tint_symbol_5)).y;
+  y_is_odd = ((int(x_29) & 1) == 1);
+  bool const x_33 = x_is_odd;
+  bool const x_34 = y_is_odd;
+  *(tint_symbol_6) = select(0, 1, (x_33 || x_34));
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread int tint_symbol_8 = 0;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.out_data_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.out_data_1=tint_symbol_3.out_data_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..3488753
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.spvasm
@@ -0,0 +1,95 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 58
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %out_data "out_data"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %x_is_odd "x_is_odd"
+               OpName %y_is_odd "y_is_odd"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "out_data_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+   %out_data = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_2 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %21 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+      %int_0 = OpConstant %int 0
+   %main_out = OpTypeStruct %int
+         %45 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+   %x_is_odd = OpVariable %_ptr_Function_bool Function %21
+   %y_is_odd = OpVariable %_ptr_Function_bool Function %21
+         %26 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %27 = OpLoad %float %26
+         %28 = OpConvertFToS %int %27
+         %30 = OpBitwiseAnd %int %28 %int_1
+         %31 = OpIEqual %bool %30 %int_1
+               OpStore %x_is_odd %31
+         %33 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %34 = OpLoad %float %33
+         %35 = OpConvertFToS %int %34
+         %36 = OpBitwiseAnd %int %35 %int_1
+         %37 = OpIEqual %bool %36 %int_1
+               OpStore %y_is_odd %37
+         %38 = OpLoad %bool %x_is_odd
+         %39 = OpLoad %bool %y_is_odd
+               OpSelectionMerge %41 None
+               OpBranchConditional %38 %41 %42
+         %42 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+         %43 = OpPhi %bool %38 %17 %39 %42
+         %40 = OpSelect %int %43 %int_1 %int_0
+               OpStore %out_data %40
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %45
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %49 = OpLabel
+         %50 = OpCompositeExtract %int %tint_symbol_1 0
+               OpStore %tint_symbol_2 %50
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %52 = OpLabel
+         %53 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %53
+         %54 = OpFunctionCall %void %main_1
+         %56 = OpLoad %int %out_data
+         %57 = OpCompositeConstruct %main_out %56
+         %55 = OpFunctionCall %void %tint_symbol_3 %57
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..3820a70
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl.expected.wgsl
@@ -0,0 +1,28 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> out_data : i32;
+
+fn main_1() {
+  var x_is_odd : bool;
+  var y_is_odd : bool;
+  let x_24 : f32 = gl_FragCoord.x;
+  x_is_odd = ((i32(x_24) & 1) == 1);
+  let x_29 : f32 = gl_FragCoord.y;
+  y_is_odd = ((i32(x_29) & 1) == 1);
+  let x_33 : bool = x_is_odd;
+  let x_34 : bool = y_is_odd;
+  out_data = select(0, 1, (x_33 || x_34));
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  out_data_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(out_data);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm
new file mode 100644
index 0000000..0a6b240
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm
@@ -0,0 +1,45 @@
+               OpCapability Shader
+               OpExtension "SPV_KHR_terminate_invocation"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %1 "main" %gl_FragCoord %3 %4
+               OpExecutionMode %1 OriginUpperLeft
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %3 Location 0
+               OpDecorate %3 Flat
+               OpDecorate %4 Location 0
+       %void = OpTypeVoid
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_int = OpTypePointer Input %int
+%_ptr_Output_int = OpTypePointer Output %int
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+          %3 = OpVariable %_ptr_Input_int Input
+          %4 = OpVariable %_ptr_Output_int Output
+         %14 = OpTypeFunction %void
+          %1 = OpFunction %void None %14
+         %15 = OpLabel
+         %16 = OpLoad %v4float %gl_FragCoord
+         %17 = OpCompositeExtract %float %16 0
+         %18 = OpCompositeExtract %float %16 1
+         %19 = OpCompositeExtract %float %16 2
+         %20 = OpConvertFToS %int %17
+         %21 = OpConvertFToS %int %18
+         %22 = OpConvertFToS %int %19
+         %23 = OpBitwiseAnd %int %20 %int_1
+         %24 = OpBitwiseAnd %int %21 %int_1
+         %25 = OpIAdd %int %23 %24
+         %26 = OpLoad %int %3
+               OpStore %4 %int_1
+         %27 = OpIAdd %int %25 %26
+         %28 = OpIEqual %bool %27 %22
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %29
+         %30 = OpLabel
+               OpTerminateInvocation
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..e3d1bee
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+
+void main_1() {
+  const float4 x_16 = x_2;
+  const int x_26 = x_3;
+  x_4 = 1;
+  if (((((int(x_16.x) & 1) + (int(x_16.y) & 1)) + x_26) == int(x_16.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.msl
new file mode 100644
index 0000000..06facd9
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread int* const tint_symbol_7, thread int* const tint_symbol_8) {
+  float4 const x_16 = *(tint_symbol_6);
+  int const x_26 = *(tint_symbol_7);
+  *(tint_symbol_8) = 1;
+  if (((((int(x_16.x) & 1) + (int(x_16.y) & 1)) + x_26) == int(x_16.z))) {
+  }
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..6d9599f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.spvasm
@@ -0,0 +1,90 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %int
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %21 = OpLoad %v4float %x_2
+         %22 = OpLoad %int %x_3
+               OpStore %x_4 %int_1
+         %25 = OpCompositeExtract %float %21 0
+         %24 = OpConvertFToS %int %25
+         %26 = OpBitwiseAnd %int %24 %int_1
+         %28 = OpCompositeExtract %float %21 1
+         %27 = OpConvertFToS %int %28
+         %29 = OpBitwiseAnd %int %27 %int_1
+         %30 = OpIAdd %int %26 %29
+         %31 = OpIAdd %int %30 %22
+         %33 = OpCompositeExtract %float %21 2
+         %32 = OpConvertFToS %int %33
+         %34 = OpIEqual %bool %31 %32
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %38
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %45 = OpLabel
+         %46 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %46
+         %47 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %47
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %int %x_4
+         %51 = OpCompositeConstruct %main_out %50
+         %49 = OpFunctionCall %void %tint_symbol_4 %51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..e0e933a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.spvasm.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+fn main_1() {
+  let x_16 : vec4<f32> = x_2;
+  let x_26 : i32 = x_3;
+  x_4 = 1;
+  if (((((i32(x_16.x) & 1) + (i32(x_16.y) & 1)) + x_26) == i32(x_16.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
new file mode 100644
index 0000000..e0e933a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
@@ -0,0 +1,27 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+fn main_1() {
+  let x_16 : vec4<f32> = x_2;
+  let x_26 : i32 = x_3;
+  x_4 = 1;
+  if (((((i32(x_16.x) & 1) + (i32(x_16.y) & 1)) + x_26) == i32(x_16.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..e3d1bee
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+
+void main_1() {
+  const float4 x_16 = x_2;
+  const int x_26 = x_3;
+  x_4 = 1;
+  if (((((int(x_16.x) & 1) + (int(x_16.y) & 1)) + x_26) == int(x_16.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.msl
new file mode 100644
index 0000000..06facd9
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.msl
@@ -0,0 +1,35 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread int* const tint_symbol_7, thread int* const tint_symbol_8) {
+  float4 const x_16 = *(tint_symbol_6);
+  int const x_26 = *(tint_symbol_7);
+  *(tint_symbol_8) = 1;
+  if (((((int(x_16.x) & 1) + (int(x_16.y) & 1)) + x_26) == int(x_16.z))) {
+  }
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..6d9599f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.spvasm
@@ -0,0 +1,90 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 52
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %int
+         %38 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %21 = OpLoad %v4float %x_2
+         %22 = OpLoad %int %x_3
+               OpStore %x_4 %int_1
+         %25 = OpCompositeExtract %float %21 0
+         %24 = OpConvertFToS %int %25
+         %26 = OpBitwiseAnd %int %24 %int_1
+         %28 = OpCompositeExtract %float %21 1
+         %27 = OpConvertFToS %int %28
+         %29 = OpBitwiseAnd %int %27 %int_1
+         %30 = OpIAdd %int %26 %29
+         %31 = OpIAdd %int %30 %22
+         %33 = OpCompositeExtract %float %21 2
+         %32 = OpConvertFToS %int %33
+         %34 = OpIEqual %bool %31 %32
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %36
+         %36 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %38
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %42 = OpLabel
+         %43 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %43
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %45 = OpLabel
+         %46 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %46
+         %47 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %47
+         %48 = OpFunctionCall %void %main_1
+         %50 = OpLoad %int %x_4
+         %51 = OpCompositeConstruct %main_out %50
+         %49 = OpFunctionCall %void %tint_symbol_4 %51
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..e0e933a
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.wgsl
@@ -0,0 +1,27 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+fn main_1() {
+  let x_16 : vec4<f32> = x_2;
+  let x_26 : i32 = x_3;
+  x_4 = 1;
+  if (((((i32(x_16.x) & 1) + (i32(x_16.y) & 1)) + x_26) == i32(x_16.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm
new file mode 100644
index 0000000..0adb9cb
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm
@@ -0,0 +1,62 @@
+               OpCapability Shader
+               OpExtension "SPV_KHR_terminate_invocation"
+               OpExtension "SPV_KHR_storage_buffer_storage_class"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %1 "main" %gl_FragCoord %3 %4
+               OpExecutionMode %1 OriginUpperLeft
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %3 Location 0
+               OpDecorate %3 Flat
+               OpDecorate %4 Location 0
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+               OpDecorate %_struct_6 Block
+               OpMemberDecorate %_struct_6 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+       %void = OpTypeVoid
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_8 = OpConstant %int 8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_int = OpTypePointer Input %int
+%_ptr_Output_int = OpTypePointer Output %int
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+          %3 = OpVariable %_ptr_Input_int Input
+          %4 = OpVariable %_ptr_Output_int Output
+%_runtimearr_int = OpTypeRuntimeArray %int
+  %_struct_6 = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+%_ptr_StorageBuffer__struct_6 = OpTypePointer StorageBuffer %_struct_6
+          %5 = OpVariable %_ptr_StorageBuffer__struct_6 StorageBuffer
+         %21 = OpTypeFunction %void
+          %1 = OpFunction %void None %21
+         %22 = OpLabel
+               OpStore %4 %int_1
+         %23 = OpLoad %v4float %gl_FragCoord
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %26 = OpCompositeExtract %float %23 2
+         %27 = OpConvertFToS %int %24
+         %28 = OpConvertFToS %int %25
+         %29 = OpConvertFToS %int %26
+         %30 = OpBitwiseAnd %int %27 %int_1
+         %31 = OpBitwiseAnd %int %28 %int_1
+         %32 = OpIAdd %int %30 %31
+         %33 = OpLoad %int %3
+         %34 = OpIAdd %int %32 %33
+         %35 = OpIEqual %bool %34 %29
+               OpSelectionMerge %36 None
+               OpBranchConditional %35 %37 %36
+         %37 = OpLabel
+               OpTerminateInvocation
+         %36 = OpLabel
+         %38 = OpIMul %int %28 %int_8
+         %39 = OpIAdd %int %27 %38
+         %40 = OpAccessChain %_ptr_StorageBuffer_int %5 %int_0 %39
+               OpStore %40 %27
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..ad10f80
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+RWByteAddressBuffer x_5 : register(u0, space0);
+
+void main_1() {
+  x_4 = 1;
+  const float4 x_23 = x_2;
+  const int x_27 = int(x_23.x);
+  const int x_28 = int(x_23.y);
+  if (((((x_27 & 1) + (x_28 & 1)) + x_3) == int(x_23.z))) {
+  }
+  x_5.Store((4u * uint((x_27 + (x_28 * 8)))), asuint(x_27));
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_4_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.msl
new file mode 100644
index 0000000..bf23c88
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ int field0[1];
+};
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(device S& x_5, thread int* const tint_symbol_6, thread float4* const tint_symbol_7, thread int* const tint_symbol_8) {
+  *(tint_symbol_6) = 1;
+  float4 const x_23 = *(tint_symbol_7);
+  int const x_27 = int(x_23.x);
+  int const x_28 = int(x_23.y);
+  int const x_33 = *(tint_symbol_8);
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == int(x_23.z))) {
+  }
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]], device S& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(x_5, &(tint_symbol_11), &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..fef8d54
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_runtimearr_int = OpTypeRuntimeArray %int
+          %S = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+      %int_8 = OpConstant %int 8
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+   %main_out = OpTypeStruct %int
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %21
+         %24 = OpLabel
+               OpStore %x_4 %int_1
+         %26 = OpLoad %v4float %x_2
+         %28 = OpCompositeExtract %float %26 0
+         %27 = OpConvertFToS %int %28
+         %30 = OpCompositeExtract %float %26 1
+         %29 = OpConvertFToS %int %30
+         %31 = OpLoad %int %x_3
+         %32 = OpBitwiseAnd %int %27 %int_1
+         %33 = OpBitwiseAnd %int %29 %int_1
+         %34 = OpIAdd %int %32 %33
+         %35 = OpIAdd %int %34 %31
+         %37 = OpCompositeExtract %float %26 2
+         %36 = OpConvertFToS %int %37
+         %38 = OpIEqual %bool %35 %36
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %40
+         %41 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %45 = OpIMul %int %29 %int_8
+         %46 = OpIAdd %int %27 %45
+         %48 = OpAccessChain %_ptr_StorageBuffer_int %x_5 %uint_0 %46
+               OpStore %48 %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %49
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %21
+         %56 = OpLabel
+         %57 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %57
+         %58 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %58
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %int %x_4
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_4 %62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..8bf85f1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.spvasm.expected.wgsl
@@ -0,0 +1,39 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+fn main_1() {
+  x_4 = 1;
+  let x_23 : vec4<f32> = x_2;
+  let x_27 : i32 = i32(x_23.x);
+  let x_28 : i32 = i32(x_23.y);
+  let x_33 : i32 = x_3;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == i32(x_23.z))) {
+  }
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
new file mode 100644
index 0000000..8bf85f1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
@@ -0,0 +1,39 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+fn main_1() {
+  x_4 = 1;
+  let x_23 : vec4<f32> = x_2;
+  let x_27 : i32 = i32(x_23.x);
+  let x_28 : i32 = i32(x_23.y);
+  let x_33 : i32 = x_3;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == i32(x_23.z))) {
+  }
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..ad10f80
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.hlsl
@@ -0,0 +1,37 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+RWByteAddressBuffer x_5 : register(u0, space0);
+
+void main_1() {
+  x_4 = 1;
+  const float4 x_23 = x_2;
+  const int x_27 = int(x_23.x);
+  const int x_28 = int(x_23.y);
+  if (((((x_27 & 1) + (x_28 & 1)) + x_3) == int(x_23.z))) {
+  }
+  x_5.Store((4u * uint((x_27 + (x_28 * 8)))), asuint(x_27));
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_4_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.msl
new file mode 100644
index 0000000..bf23c88
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ int field0[1];
+};
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(device S& x_5, thread int* const tint_symbol_6, thread float4* const tint_symbol_7, thread int* const tint_symbol_8) {
+  *(tint_symbol_6) = 1;
+  float4 const x_23 = *(tint_symbol_7);
+  int const x_27 = int(x_23.x);
+  int const x_28 = int(x_23.y);
+  int const x_33 = *(tint_symbol_8);
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == int(x_23.z))) {
+  }
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]], device S& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(x_5, &(tint_symbol_11), &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..fef8d54
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_runtimearr_int = OpTypeRuntimeArray %int
+          %S = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+      %int_8 = OpConstant %int 8
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+   %main_out = OpTypeStruct %int
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %21
+         %24 = OpLabel
+               OpStore %x_4 %int_1
+         %26 = OpLoad %v4float %x_2
+         %28 = OpCompositeExtract %float %26 0
+         %27 = OpConvertFToS %int %28
+         %30 = OpCompositeExtract %float %26 1
+         %29 = OpConvertFToS %int %30
+         %31 = OpLoad %int %x_3
+         %32 = OpBitwiseAnd %int %27 %int_1
+         %33 = OpBitwiseAnd %int %29 %int_1
+         %34 = OpIAdd %int %32 %33
+         %35 = OpIAdd %int %34 %31
+         %37 = OpCompositeExtract %float %26 2
+         %36 = OpConvertFToS %int %37
+         %38 = OpIEqual %bool %35 %36
+               OpSelectionMerge %40 None
+               OpBranchConditional %38 %41 %40
+         %41 = OpLabel
+               OpBranch %40
+         %40 = OpLabel
+         %45 = OpIMul %int %29 %int_8
+         %46 = OpIAdd %int %27 %45
+         %48 = OpAccessChain %_ptr_StorageBuffer_int %x_5 %uint_0 %46
+               OpStore %48 %27
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %49
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %21
+         %56 = OpLabel
+         %57 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %57
+         %58 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %58
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %int %x_4
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_4 %62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..8bf85f1
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.wgsl
@@ -0,0 +1,39 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+fn main_1() {
+  x_4 = 1;
+  let x_23 : vec4<f32> = x_2;
+  let x_27 : i32 = i32(x_23.x);
+  let x_28 : i32 = i32(x_23.y);
+  let x_33 : i32 = x_3;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == i32(x_23.z))) {
+  }
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm
new file mode 100644
index 0000000..7ca5002
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm
@@ -0,0 +1,62 @@
+               OpCapability Shader
+               OpExtension "SPV_KHR_terminate_invocation"
+               OpExtension "SPV_KHR_storage_buffer_storage_class"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %1 "main" %gl_FragCoord %3 %4
+               OpExecutionMode %1 OriginUpperLeft
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %3 Location 0
+               OpDecorate %3 Flat
+               OpDecorate %4 Location 0
+               OpDecorate %5 DescriptorSet 0
+               OpDecorate %5 Binding 0
+               OpDecorate %_struct_6 Block
+               OpMemberDecorate %_struct_6 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+       %void = OpTypeVoid
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+      %int_8 = OpConstant %int 8
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_int = OpTypePointer Input %int
+%_ptr_Output_int = OpTypePointer Output %int
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+          %3 = OpVariable %_ptr_Input_int Input
+          %4 = OpVariable %_ptr_Output_int Output
+%_runtimearr_int = OpTypeRuntimeArray %int
+  %_struct_6 = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+%_ptr_StorageBuffer__struct_6 = OpTypePointer StorageBuffer %_struct_6
+          %5 = OpVariable %_ptr_StorageBuffer__struct_6 StorageBuffer
+         %21 = OpTypeFunction %void
+          %1 = OpFunction %void None %21
+         %22 = OpLabel
+               OpStore %4 %int_1
+         %23 = OpLoad %v4float %gl_FragCoord
+         %24 = OpCompositeExtract %float %23 0
+         %25 = OpCompositeExtract %float %23 1
+         %26 = OpCompositeExtract %float %23 2
+         %27 = OpConvertFToS %int %24
+         %28 = OpConvertFToS %int %25
+         %29 = OpConvertFToS %int %26
+         %30 = OpBitwiseAnd %int %27 %int_1
+         %31 = OpBitwiseAnd %int %28 %int_1
+         %32 = OpIAdd %int %30 %31
+         %33 = OpLoad %int %3
+         %34 = OpIAdd %int %32 %33
+         %35 = OpIMul %int %28 %int_8
+         %36 = OpIAdd %int %27 %35
+         %37 = OpAccessChain %_ptr_StorageBuffer_int %5 %int_0 %36
+               OpStore %37 %27
+         %38 = OpIEqual %bool %34 %29
+               OpSelectionMerge %39 None
+               OpBranchConditional %38 %40 %39
+         %40 = OpLabel
+               OpTerminateInvocation
+         %39 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..bb7ac26
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+RWByteAddressBuffer x_5 : register(u0, space0);
+
+void main_1() {
+  x_4 = 1;
+  const float4 x_23 = x_2;
+  const int x_27 = int(x_23.x);
+  const int x_28 = int(x_23.y);
+  const int x_33 = x_3;
+  x_5.Store((4u * uint((x_27 + (x_28 * 8)))), asuint(x_27));
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == int(x_23.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_4_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.msl
new file mode 100644
index 0000000..893315f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ int field0[1];
+};
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(device S& x_5, thread int* const tint_symbol_6, thread float4* const tint_symbol_7, thread int* const tint_symbol_8) {
+  *(tint_symbol_6) = 1;
+  float4 const x_23 = *(tint_symbol_7);
+  int const x_27 = int(x_23.x);
+  int const x_28 = int(x_23.y);
+  int const x_33 = *(tint_symbol_8);
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == int(x_23.z))) {
+  }
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]], device S& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(x_5, &(tint_symbol_11), &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..ef97582
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_runtimearr_int = OpTypeRuntimeArray %int
+          %S = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+      %int_8 = OpConstant %int 8
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %int
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %21
+         %24 = OpLabel
+               OpStore %x_4 %int_1
+         %26 = OpLoad %v4float %x_2
+         %28 = OpCompositeExtract %float %26 0
+         %27 = OpConvertFToS %int %28
+         %30 = OpCompositeExtract %float %26 1
+         %29 = OpConvertFToS %int %30
+         %31 = OpLoad %int %x_3
+         %35 = OpIMul %int %29 %int_8
+         %36 = OpIAdd %int %27 %35
+         %38 = OpAccessChain %_ptr_StorageBuffer_int %x_5 %uint_0 %36
+               OpStore %38 %27
+         %39 = OpBitwiseAnd %int %27 %int_1
+         %40 = OpBitwiseAnd %int %29 %int_1
+         %41 = OpIAdd %int %39 %40
+         %42 = OpIAdd %int %41 %31
+         %44 = OpCompositeExtract %float %26 2
+         %43 = OpConvertFToS %int %44
+         %45 = OpIEqual %bool %42 %43
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %47
+         %48 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %49
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %21
+         %56 = OpLabel
+         %57 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %57
+         %58 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %58
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %int %x_4
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_4 %62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..55cb745
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.spvasm.expected.wgsl
@@ -0,0 +1,39 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+fn main_1() {
+  x_4 = 1;
+  let x_23 : vec4<f32> = x_2;
+  let x_27 : i32 = i32(x_23.x);
+  let x_28 : i32 = i32(x_23.y);
+  let x_33 : i32 = x_3;
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == i32(x_23.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
new file mode 100644
index 0000000..55cb745
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
@@ -0,0 +1,39 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+fn main_1() {
+  x_4 = 1;
+  let x_23 : vec4<f32> = x_2;
+  let x_27 : i32 = i32(x_23.x);
+  let x_28 : i32 = i32(x_23.y);
+  let x_33 : i32 = x_3;
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == i32(x_23.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..bb7ac26
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+RWByteAddressBuffer x_5 : register(u0, space0);
+
+void main_1() {
+  x_4 = 1;
+  const float4 x_23 = x_2;
+  const int x_27 = int(x_23.x);
+  const int x_28 = int(x_23.y);
+  const int x_33 = x_3;
+  x_5.Store((4u * uint((x_27 + (x_28 * 8)))), asuint(x_27));
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == int(x_23.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_4_1};
+  return tint_symbol_5;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.msl
new file mode 100644
index 0000000..893315f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  /* 0x0000 */ int field0[1];
+};
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(device S& x_5, thread int* const tint_symbol_6, thread float4* const tint_symbol_7, thread int* const tint_symbol_8) {
+  *(tint_symbol_6) = 1;
+  float4 const x_23 = *(tint_symbol_7);
+  int const x_27 = int(x_23.x);
+  int const x_28 = int(x_23.y);
+  int const x_33 = *(tint_symbol_8);
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == int(x_23.z))) {
+  }
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]], device S& x_5 [[buffer(0)]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(x_5, &(tint_symbol_11), &(tint_symbol_9), &(tint_symbol_10));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..ef97582
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.spvasm
@@ -0,0 +1,110 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 63
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %S "S"
+               OpMemberName %S 0 "field0"
+               OpName %x_5 "x_5"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_runtimearr_int ArrayStride 4
+               OpDecorate %x_5 DescriptorSet 0
+               OpDecorate %x_5 Binding 0
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_runtimearr_int = OpTypeRuntimeArray %int
+          %S = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+        %x_5 = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+      %int_8 = OpConstant %int 8
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+       %bool = OpTypeBool
+   %main_out = OpTypeStruct %int
+         %49 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %21
+         %24 = OpLabel
+               OpStore %x_4 %int_1
+         %26 = OpLoad %v4float %x_2
+         %28 = OpCompositeExtract %float %26 0
+         %27 = OpConvertFToS %int %28
+         %30 = OpCompositeExtract %float %26 1
+         %29 = OpConvertFToS %int %30
+         %31 = OpLoad %int %x_3
+         %35 = OpIMul %int %29 %int_8
+         %36 = OpIAdd %int %27 %35
+         %38 = OpAccessChain %_ptr_StorageBuffer_int %x_5 %uint_0 %36
+               OpStore %38 %27
+         %39 = OpBitwiseAnd %int %27 %int_1
+         %40 = OpBitwiseAnd %int %29 %int_1
+         %41 = OpIAdd %int %39 %40
+         %42 = OpIAdd %int %41 %31
+         %44 = OpCompositeExtract %float %26 2
+         %43 = OpConvertFToS %int %44
+         %45 = OpIEqual %bool %42 %43
+               OpSelectionMerge %47 None
+               OpBranchConditional %45 %48 %47
+         %48 = OpLabel
+               OpBranch %47
+         %47 = OpLabel
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %49
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %53 = OpLabel
+         %54 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %54
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %21
+         %56 = OpLabel
+         %57 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %57
+         %58 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %58
+         %59 = OpFunctionCall %void %main_1
+         %61 = OpLoad %int %x_4
+         %62 = OpCompositeConstruct %main_out %61
+         %60 = OpFunctionCall %void %tint_symbol_4 %62
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..55cb745
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.wgsl
@@ -0,0 +1,39 @@
+type RTArr = [[stride(4)]] array<i32>;
+
+[[block]]
+struct S {
+  field0 : RTArr;
+};
+
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+
+fn main_1() {
+  x_4 = 1;
+  let x_23 : vec4<f32> = x_2;
+  let x_27 : i32 = i32(x_23.x);
+  let x_28 : i32 = i32(x_23.y);
+  let x_33 : i32 = x_3;
+  x_5.field0[(x_27 + (x_28 * 8))] = x_27;
+  if (((((x_27 & 1) + (x_28 & 1)) + x_33) == i32(x_23.z))) {
+  }
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm
new file mode 100644
index 0000000..4fd14af
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm
@@ -0,0 +1,57 @@
+               OpCapability Shader
+               OpExtension "SPV_KHR_terminate_invocation"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %1 "main" %gl_FragCoord %3 %4
+               OpExecutionMode %1 OriginUpperLeft
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %3 Location 0
+               OpDecorate %3 Flat
+               OpDecorate %4 Location 0
+       %void = OpTypeVoid
+       %bool = OpTypeBool
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+     %int_10 = OpConstant %int 10
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_int = OpTypePointer Input %int
+%_ptr_Output_int = OpTypePointer Output %int
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+          %3 = OpVariable %_ptr_Input_int Input
+          %4 = OpVariable %_ptr_Output_int Output
+         %16 = OpTypeFunction %void
+          %1 = OpFunction %void None %16
+         %17 = OpLabel
+         %18 = OpLoad %v4float %gl_FragCoord
+         %19 = OpCompositeExtract %float %18 0
+         %20 = OpCompositeExtract %float %18 1
+         %21 = OpCompositeExtract %float %18 2
+         %22 = OpConvertFToS %int %19
+         %23 = OpConvertFToS %int %20
+         %24 = OpConvertFToS %int %21
+         %25 = OpBitwiseAnd %int %22 %int_1
+         %26 = OpBitwiseAnd %int %23 %int_1
+         %27 = OpIAdd %int %25 %26
+         %28 = OpLoad %int %3
+         %29 = OpIAdd %int %27 %28
+         %30 = OpIEqual %bool %29 %24
+               OpSelectionMerge %31 None
+               OpBranchConditional %30 %32 %31
+         %32 = OpLabel
+         %33 = OpPhi %int %int_0 %17 %34 %35
+         %36 = OpULessThan %bool %33 %int_10
+               OpLoopMerge %37 %35 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+               OpTerminateInvocation
+         %35 = OpLabel
+         %34 = OpIAdd %int %33 %int_1
+               OpBranch %32
+         %37 = OpLabel
+               OpBranch %31
+         %31 = OpLabel
+               OpStore %4 %int_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..e1ac82b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.hlsl
@@ -0,0 +1,48 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+
+void main_1() {
+  int x_33_phi = 0;
+  const float4 x_18 = x_2;
+  const int x_28 = x_3;
+  x_33_phi = 0;
+  if (((((int(x_18.x) & 1) + (int(x_18.y) & 1)) + x_28) == int(x_18.z))) {
+    while (true) {
+      int x_34 = 0;
+      const int x_33 = x_33_phi;
+      if ((asuint(x_33) < asuint(10))) {
+      } else {
+        break;
+      }
+      {
+        x_34 = (x_33 + 1);
+        x_33_phi = x_34;
+      }
+    }
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.msl
new file mode 100644
index 0000000..27b481f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread int* const tint_symbol_7, thread int* const tint_symbol_8) {
+  int x_33_phi = 0;
+  float4 const x_18 = *(tint_symbol_6);
+  int const x_28 = *(tint_symbol_7);
+  x_33_phi = 0;
+  if (((((int(x_18.x) & 1) + (int(x_18.y) & 1)) + x_28) == int(x_18.z))) {
+    while (true) {
+      int x_34 = 0;
+      int const x_33 = x_33_phi;
+      if ((as_type<uint>(x_33) < as_type<uint>(10))) {
+      } else {
+        break;
+      }
+      {
+        x_34 = (x_33 + 1);
+        x_33_phi = x_34;
+      }
+    }
+  }
+  *(tint_symbol_8) = 1;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..cdf2918
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.spvasm
@@ -0,0 +1,123 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %x_33_phi "x_33_phi"
+               OpName %x_34 "x_34"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %int_10 = OpConstant %int 10
+   %main_out = OpTypeStruct %int
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+   %x_33_phi = OpVariable %_ptr_Function_int Function %9
+       %x_34 = OpVariable %_ptr_Function_int Function %9
+         %23 = OpLoad %v4float %x_2
+         %24 = OpLoad %int %x_3
+               OpStore %x_33_phi %int_0
+         %27 = OpCompositeExtract %float %23 0
+         %26 = OpConvertFToS %int %27
+         %29 = OpBitwiseAnd %int %26 %int_1
+         %31 = OpCompositeExtract %float %23 1
+         %30 = OpConvertFToS %int %31
+         %32 = OpBitwiseAnd %int %30 %int_1
+         %33 = OpIAdd %int %29 %32
+         %34 = OpIAdd %int %33 %24
+         %36 = OpCompositeExtract %float %23 2
+         %35 = OpConvertFToS %int %36
+         %37 = OpIEqual %bool %34 %35
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %39
+         %40 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %46 = OpLoad %int %x_33_phi
+         %47 = OpBitcast %uint %46
+         %49 = OpBitcast %uint %int_10
+         %51 = OpULessThan %bool %47 %49
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %42
+         %52 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+         %55 = OpIAdd %int %46 %int_1
+               OpStore %x_34 %55
+         %56 = OpLoad %int %x_34
+               OpStore %x_33_phi %56
+               OpBranch %41
+         %42 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+               OpStore %x_4 %int_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %57
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %64 = OpLabel
+         %65 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %65
+         %66 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %66
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %int %x_4
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_4 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..5142f3d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.spvasm.expected.wgsl
@@ -0,0 +1,42 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+fn main_1() {
+  var x_33_phi : i32;
+  let x_18 : vec4<f32> = x_2;
+  let x_28 : i32 = x_3;
+  x_33_phi = 0;
+  if (((((i32(x_18.x) & 1) + (i32(x_18.y) & 1)) + x_28) == i32(x_18.z))) {
+    loop {
+      var x_34 : i32;
+      let x_33 : i32 = x_33_phi;
+      if ((bitcast<u32>(x_33) < bitcast<u32>(10))) {
+      } else {
+        break;
+      }
+
+      continuing {
+        x_34 = (x_33 + 1);
+        x_33_phi = x_34;
+      }
+    }
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
new file mode 100644
index 0000000..5142f3d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
@@ -0,0 +1,42 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+fn main_1() {
+  var x_33_phi : i32;
+  let x_18 : vec4<f32> = x_2;
+  let x_28 : i32 = x_3;
+  x_33_phi = 0;
+  if (((((i32(x_18.x) & 1) + (i32(x_18.y) & 1)) + x_28) == i32(x_18.z))) {
+    loop {
+      var x_34 : i32;
+      let x_33 : i32 = x_33_phi;
+      if ((bitcast<u32>(x_33) < bitcast<u32>(10))) {
+      } else {
+        break;
+      }
+
+      continuing {
+        x_34 = (x_33 + 1);
+        x_33_phi = x_34;
+      }
+    }
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.hlsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..e1ac82b
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.hlsl
@@ -0,0 +1,48 @@
+static float4 x_2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int x_3 = 0;
+static int x_4 = 0;
+
+void main_1() {
+  int x_33_phi = 0;
+  const float4 x_18 = x_2;
+  const int x_28 = x_3;
+  x_33_phi = 0;
+  if (((((int(x_18.x) & 1) + (int(x_18.y) & 1)) + x_28) == int(x_18.z))) {
+    while (true) {
+      int x_34 = 0;
+      const int x_33 = x_33_phi;
+      if ((asuint(x_33) < asuint(10))) {
+      } else {
+        break;
+      }
+      {
+        x_34 = (x_33 + 1);
+        x_33_phi = x_34;
+      }
+    }
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_1 {
+  int x_3_param : TEXCOORD0;
+  float4 x_2_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int x_4_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 x_2_param = tint_symbol.x_2_param;
+  const int x_3_param = tint_symbol.x_3_param;
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  const main_out tint_symbol_3 = {x_4};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.x_4_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.msl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.msl
new file mode 100644
index 0000000..27b481f
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.msl
@@ -0,0 +1,49 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int x_4_1;
+};
+struct tint_symbol_2 {
+  int x_3_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  int x_4_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread int* const tint_symbol_7, thread int* const tint_symbol_8) {
+  int x_33_phi = 0;
+  float4 const x_18 = *(tint_symbol_6);
+  int const x_28 = *(tint_symbol_7);
+  x_33_phi = 0;
+  if (((((int(x_18.x) & 1) + (int(x_18.y) & 1)) + x_28) == int(x_18.z))) {
+    while (true) {
+      int x_34 = 0;
+      int const x_33 = x_33_phi;
+      if ((as_type<uint>(x_33) < as_type<uint>(10))) {
+      } else {
+        break;
+      }
+      {
+        x_34 = (x_33 + 1);
+        x_33_phi = x_34;
+      }
+    }
+  }
+  *(tint_symbol_8) = 1;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(float4 x_2_param [[position]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_9 = 0.0f;
+  thread int tint_symbol_10 = 0;
+  thread int tint_symbol_11 = 0;
+  int const x_3_param = tint_symbol_1.x_3_param;
+  tint_symbol_9 = x_2_param;
+  tint_symbol_10 = x_3_param;
+  main_1(&(tint_symbol_9), &(tint_symbol_10), &(tint_symbol_11));
+  main_out const tint_symbol_4 = {.x_4_1=tint_symbol_11};
+  tint_symbol_3 const tint_symbol_5 = {.x_4_1=tint_symbol_4.x_4_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.spvasm b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..cdf2918
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.spvasm
@@ -0,0 +1,123 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 71
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %x_2 "x_2"
+               OpName %x_3 "x_3"
+               OpName %x_4 "x_4"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main_1 "main_1"
+               OpName %x_33_phi "x_33_phi"
+               OpName %x_34 "x_34"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "x_4_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_1 Flat
+               OpDecorate %tint_symbol_3 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+        %x_2 = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+        %x_3 = OpVariable %_ptr_Private_int Private %9
+        %x_4 = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_3 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+      %int_1 = OpConstant %int 1
+       %bool = OpTypeBool
+       %uint = OpTypeInt 32 0
+     %int_10 = OpConstant %int 10
+   %main_out = OpTypeStruct %int
+         %57 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+   %x_33_phi = OpVariable %_ptr_Function_int Function %9
+       %x_34 = OpVariable %_ptr_Function_int Function %9
+         %23 = OpLoad %v4float %x_2
+         %24 = OpLoad %int %x_3
+               OpStore %x_33_phi %int_0
+         %27 = OpCompositeExtract %float %23 0
+         %26 = OpConvertFToS %int %27
+         %29 = OpBitwiseAnd %int %26 %int_1
+         %31 = OpCompositeExtract %float %23 1
+         %30 = OpConvertFToS %int %31
+         %32 = OpBitwiseAnd %int %30 %int_1
+         %33 = OpIAdd %int %29 %32
+         %34 = OpIAdd %int %33 %24
+         %36 = OpCompositeExtract %float %23 2
+         %35 = OpConvertFToS %int %36
+         %37 = OpIEqual %bool %34 %35
+               OpSelectionMerge %39 None
+               OpBranchConditional %37 %40 %39
+         %40 = OpLabel
+               OpBranch %41
+         %41 = OpLabel
+               OpLoopMerge %42 %43 None
+               OpBranch %44
+         %44 = OpLabel
+         %46 = OpLoad %int %x_33_phi
+         %47 = OpBitcast %uint %46
+         %49 = OpBitcast %uint %int_10
+         %51 = OpULessThan %bool %47 %49
+               OpSelectionMerge %52 None
+               OpBranchConditional %51 %53 %54
+         %53 = OpLabel
+               OpBranch %52
+         %54 = OpLabel
+               OpBranch %42
+         %52 = OpLabel
+               OpBranch %43
+         %43 = OpLabel
+         %55 = OpIAdd %int %46 %int_1
+               OpStore %x_34 %55
+         %56 = OpLoad %int %x_34
+               OpStore %x_33_phi %56
+               OpBranch %41
+         %42 = OpLabel
+               OpBranch %39
+         %39 = OpLabel
+               OpStore %x_4 %int_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_4 = OpFunction %void None %57
+%tint_symbol_2 = OpFunctionParameter %main_out
+         %61 = OpLabel
+         %62 = OpCompositeExtract %int %tint_symbol_2 0
+               OpStore %tint_symbol_3 %62
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %64 = OpLabel
+         %65 = OpLoad %v4float %tint_symbol
+               OpStore %x_2 %65
+         %66 = OpLoad %int %tint_symbol_1
+               OpStore %x_3 %66
+         %67 = OpFunctionCall %void %main_1
+         %69 = OpLoad %int %x_4
+         %70 = OpCompositeConstruct %main_out %69
+         %68 = OpFunctionCall %void %tint_symbol_4 %70
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..5142f3d
--- /dev/null
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.wgsl
@@ -0,0 +1,42 @@
+var<private> x_2 : vec4<f32>;
+
+var<private> x_3 : i32;
+
+var<private> x_4 : i32;
+
+fn main_1() {
+  var x_33_phi : i32;
+  let x_18 : vec4<f32> = x_2;
+  let x_28 : i32 = x_3;
+  x_33_phi = 0;
+  if (((((i32(x_18.x) & 1) + (i32(x_18.y) & 1)) + x_28) == i32(x_18.z))) {
+    loop {
+      var x_34 : i32;
+      let x_33 : i32 = x_33_phi;
+      if ((bitcast<u32>(x_33) < bitcast<u32>(10))) {
+      } else {
+        break;
+      }
+
+      continuing {
+        x_34 = (x_33 + 1);
+        x_33_phi = x_34;
+      }
+    }
+  }
+  x_4 = 1;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  x_4_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+  x_2 = x_2_param;
+  x_3 = x_3_param;
+  main_1();
+  return main_out(x_4);
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm
new file mode 100644
index 0000000..5efeead
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm
@@ -0,0 +1,45 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %_ %position
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %gl_PerVertex "gl_PerVertex"
+               OpMemberName %gl_PerVertex 0 "gl_Position"
+               OpMemberName %gl_PerVertex 1 "gl_PointSize"
+               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+               OpName %_ ""
+               OpName %position "position"
+               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+               OpDecorate %gl_PerVertex Block
+               OpDecorate %position Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+    %v3float = OpTypeVector %float 3
+%_ptr_Input_v3float = OpTypePointer Input %v3float
+   %position = OpVariable %_ptr_Input_v3float Input
+    %float_1 = OpConstant %float 1
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+       %main = OpFunction %void None %7
+         %20 = OpLabel
+         %21 = OpLoad %v3float %position
+         %22 = OpCompositeExtract %float %21 0
+         %23 = OpCompositeExtract %float %21 1
+         %24 = OpCompositeExtract %float %21 2
+         %25 = OpCompositeConstruct %v4float %22 %23 %24 %float_1
+         %26 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+               OpStore %26 %25
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.hlsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.hlsl
new file mode 100644
index 0000000..5d7eab8
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.hlsl
@@ -0,0 +1,27 @@
+static float3 position = float3(0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float3 x_21 = position;
+  gl_Position = float4(x_21.x, x_21.y, x_21.z, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float3 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float3 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.msl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.msl
new file mode 100644
index 0000000..87dbf22
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float3 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float3* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float3 const x_21 = *(tint_symbol_6);
+  *(tint_symbol_7) = float4(x_21.x, x_21.y, x_21.z, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float3 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float3 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.spvasm b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.spvasm
new file mode 100644
index 0000000..3a3cd55
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 40
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v3float = OpTypeVector %float 3
+%_ptr_Private_v3float = OpTypePointer Private %v3float
+          %8 = OpConstantNull %v3float
+   %position = OpVariable %_ptr_Private_v3float Private %8
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_Position = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v3float = OpTypePointer Input %v3float
+%tint_symbol = OpVariable %_ptr_Input_v3float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %27 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %21 = OpLoad %v3float %position
+         %22 = OpCompositeExtract %float %21 0
+         %23 = OpCompositeExtract %float %21 1
+         %24 = OpCompositeExtract %float %21 2
+         %26 = OpCompositeConstruct %v4float %22 %23 %24 %float_1
+               OpStore %gl_Position %26
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %27
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %31 = OpLabel
+         %32 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %34 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %35 = OpLoad %v3float %tint_symbol
+               OpStore %position %35
+         %36 = OpFunctionCall %void %main_1
+         %38 = OpLoad %v4float %gl_Position
+         %39 = OpCompositeConstruct %main_out %38
+         %37 = OpFunctionCall %void %tint_symbol_3 %39
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.wgsl
new file mode 100644
index 0000000..cfebf74
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.wgsl
@@ -0,0 +1,21 @@
+var<private> position : vec3<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_21 : vec3<f32> = position;
+  gl_Position = vec4<f32>(x_21.x, x_21.y, x_21.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec3<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
new file mode 100644
index 0000000..cfebf74
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
@@ -0,0 +1,21 @@
+var<private> position : vec3<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_21 : vec3<f32> = position;
+  gl_Position = vec4<f32>(x_21.x, x_21.y, x_21.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec3<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.hlsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.hlsl
new file mode 100644
index 0000000..5d7eab8
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.hlsl
@@ -0,0 +1,27 @@
+static float3 position = float3(0.0f, 0.0f, 0.0f);
+static float4 gl_Position = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float3 x_21 = position;
+  gl_Position = float4(x_21.x, x_21.y, x_21.z, 1.0f);
+  return;
+}
+
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_1 {
+  float3 position_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 gl_Position : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float3 position_param = tint_symbol.position_param;
+  position = position_param;
+  main_1();
+  const main_out tint_symbol_3 = {gl_Position};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.gl_Position};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.msl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.msl
new file mode 100644
index 0000000..87dbf22
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 gl_Position;
+};
+struct tint_symbol_2 {
+  float3 position_param [[attribute(0)]];
+};
+struct tint_symbol_3 {
+  float4 gl_Position [[position]];
+};
+
+void main_1(thread float3* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float3 const x_21 = *(tint_symbol_6);
+  *(tint_symbol_7) = float4(x_21.x, x_21.y, x_21.z, 1.0f);
+  return;
+}
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float3 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float3 const position_param = tint_symbol_1.position_param;
+  tint_symbol_8 = position_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.gl_Position=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.gl_Position=tint_symbol_4.gl_Position};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.spvasm b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.spvasm
new file mode 100644
index 0000000..3a3cd55
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 40
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_2
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %position "position"
+               OpName %gl_Position "gl_Position"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "gl_Position"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 BuiltIn Position
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v3float = OpTypeVector %float 3
+%_ptr_Private_v3float = OpTypePointer Private %v3float
+          %8 = OpConstantNull %v3float
+   %position = OpVariable %_ptr_Private_v3float Private %8
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+         %12 = OpConstantNull %v4float
+%gl_Position = OpVariable %_ptr_Private_v4float Private %12
+%_ptr_Input_v3float = OpTypePointer Input %v3float
+%tint_symbol = OpVariable %_ptr_Input_v3float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+   %main_out = OpTypeStruct %v4float
+         %27 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %17
+         %20 = OpLabel
+         %21 = OpLoad %v3float %position
+         %22 = OpCompositeExtract %float %21 0
+         %23 = OpCompositeExtract %float %21 1
+         %24 = OpCompositeExtract %float %21 2
+         %26 = OpCompositeConstruct %v4float %22 %23 %24 %float_1
+               OpStore %gl_Position %26
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %27
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %31 = OpLabel
+         %32 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %32
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %17
+         %34 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %35 = OpLoad %v3float %tint_symbol
+               OpStore %position %35
+         %36 = OpFunctionCall %void %main_1
+         %38 = OpLoad %v4float %gl_Position
+         %39 = OpCompositeConstruct %main_out %38
+         %37 = OpFunctionCall %void %tint_symbol_3 %39
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.wgsl
new file mode 100644
index 0000000..cfebf74
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+var<private> position : vec3<f32>;
+
+var<private> gl_Position : vec4<f32>;
+
+fn main_1() {
+  let x_21 : vec3<f32> = position;
+  gl_Position = vec4<f32>(x_21.x, x_21.y, x_21.z, 1.0);
+  return;
+}
+
+struct main_out {
+  [[builtin(position)]]
+  gl_Position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main([[location(0)]] position_param : vec3<f32>) -> main_out {
+  position = position_param;
+  main_1();
+  return main_out(gl_Position);
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm
new file mode 100644
index 0000000..6d8de5f
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm
@@ -0,0 +1,55 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %gl_FragCoord %expect
+               OpExecutionMode %main OriginUpperLeft
+               OpSource GLSL 430
+               OpSourceExtension "GL_KHR_shader_subgroup_ballot"
+               OpSourceExtension "GL_KHR_shader_subgroup_basic"
+               OpSourceExtension "GL_KHR_shader_subgroup_vote"
+               OpName %main "main"
+               OpName %inbounds "inbounds"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %expect "expect"
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+               OpDecorate %expect Location 0
+       %void = OpTypeVoid
+          %7 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+  %float_128 = OpConstant %float 128
+     %uint_1 = OpConstant %uint 1
+        %int = OpTypeInt 32 1
+%_ptr_Output_int = OpTypePointer Output %int
+     %expect = OpVariable %_ptr_Output_int Output
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+       %main = OpFunction %void None %7
+         %22 = OpLabel
+   %inbounds = OpVariable %_ptr_Function_bool Function
+         %23 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %24 = OpLoad %float %23
+         %25 = OpFOrdLessThan %bool %24 %float_128
+         %26 = OpLogicalNot %bool %25
+               OpSelectionMerge %27 None
+               OpBranchConditional %26 %28 %27
+         %28 = OpLabel
+         %29 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %30 = OpLoad %float %29
+         %31 = OpFOrdLessThan %bool %30 %float_128
+               OpBranch %27
+         %27 = OpLabel
+         %32 = OpPhi %bool %25 %22 %31 %28
+               OpStore %inbounds %32
+         %33 = OpLoad %bool %inbounds
+         %34 = OpSelect %int %33 %int_1 %int_n1
+               OpStore %expect %34
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.hlsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..72a9fa8
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int expect = 0;
+
+void main_1() {
+  bool inbounds = false;
+  bool x_31 = false;
+  bool x_32_phi = false;
+  const float x_24 = gl_FragCoord.x;
+  const bool x_25 = (x_24 < 128.0f);
+  x_32_phi = x_25;
+  if (!(x_25)) {
+    const float x_30 = gl_FragCoord.y;
+    x_31 = (x_30 < 128.0f);
+    x_32_phi = x_31;
+  }
+  inbounds = x_32_phi;
+  expect = (inbounds ? 1 : -1);
+  return;
+}
+
+struct main_out {
+  int expect_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int expect_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {expect};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.expect_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.msl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.msl
new file mode 100644
index 0000000..f604d95
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int expect_1;
+};
+struct tint_symbol_2 {
+  int expect_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread int* const tint_symbol_6) {
+  bool inbounds = false;
+  bool x_31 = false;
+  bool x_32_phi = false;
+  float const x_24 = (*(tint_symbol_5)).x;
+  bool const x_25 = (x_24 < 128.0f);
+  x_32_phi = x_25;
+  if (!(x_25)) {
+    float const x_30 = (*(tint_symbol_5)).y;
+    x_31 = (x_30 < 128.0f);
+    x_32_phi = x_31;
+  }
+  bool const x_32 = x_32_phi;
+  inbounds = x_32;
+  bool const x_33 = inbounds;
+  *(tint_symbol_6) = select(-1, 1, x_33);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread int tint_symbol_8 = 0;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.expect_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.expect_1=tint_symbol_3.expect_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.spvasm b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..08bdcac1
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %expect "expect"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %inbounds "inbounds"
+               OpName %x_31 "x_31"
+               OpName %x_32_phi "x_32_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "expect_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+     %expect = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_2 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %21 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_128 = OpConstant %float 128
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+   %main_out = OpTypeStruct %int
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+   %inbounds = OpVariable %_ptr_Function_bool Function %21
+       %x_31 = OpVariable %_ptr_Function_bool Function %21
+   %x_32_phi = OpVariable %_ptr_Function_bool Function %21
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %28 = OpLoad %float %27
+         %30 = OpFOrdLessThan %bool %28 %float_128
+               OpStore %x_32_phi %30
+         %31 = OpLogicalNot %bool %30
+               OpSelectionMerge %32 None
+               OpBranchConditional %31 %33 %32
+         %33 = OpLabel
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFOrdLessThan %bool %36 %float_128
+               OpStore %x_31 %37
+         %38 = OpLoad %bool %x_31
+               OpStore %x_32_phi %38
+               OpBranch %32
+         %32 = OpLabel
+         %39 = OpLoad %bool %x_32_phi
+               OpStore %inbounds %39
+         %40 = OpLoad %bool %inbounds
+         %41 = OpSelect %int %40 %int_1 %int_n1
+               OpStore %expect %41
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %44
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %int %tint_symbol_1 0
+               OpStore %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %51 = OpLabel
+         %52 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %52
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %int %expect
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_3 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..a3e9f61
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.spvasm.expected.wgsl
@@ -0,0 +1,34 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> expect : i32;
+
+fn main_1() {
+  var inbounds : bool;
+  var x_31 : bool;
+  var x_32_phi : bool;
+  let x_24 : f32 = gl_FragCoord.x;
+  let x_25 : bool = (x_24 < 128.0);
+  x_32_phi = x_25;
+  if (!(x_25)) {
+    let x_30 : f32 = gl_FragCoord.y;
+    x_31 = (x_30 < 128.0);
+    x_32_phi = x_31;
+  }
+  let x_32 : bool = x_32_phi;
+  inbounds = x_32;
+  let x_33 : bool = inbounds;
+  expect = select(-1, 1, x_33);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  expect_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(expect);
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
new file mode 100644
index 0000000..a3e9f61
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
@@ -0,0 +1,34 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> expect : i32;
+
+fn main_1() {
+  var inbounds : bool;
+  var x_31 : bool;
+  var x_32_phi : bool;
+  let x_24 : f32 = gl_FragCoord.x;
+  let x_25 : bool = (x_24 < 128.0);
+  x_32_phi = x_25;
+  if (!(x_25)) {
+    let x_30 : f32 = gl_FragCoord.y;
+    x_31 = (x_30 < 128.0);
+    x_32_phi = x_31;
+  }
+  let x_32 : bool = x_32_phi;
+  inbounds = x_32;
+  let x_33 : bool = inbounds;
+  expect = select(-1, 1, x_33);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  expect_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(expect);
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.hlsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..72a9fa8
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.hlsl
@@ -0,0 +1,38 @@
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static int expect = 0;
+
+void main_1() {
+  bool inbounds = false;
+  bool x_31 = false;
+  bool x_32_phi = false;
+  const float x_24 = gl_FragCoord.x;
+  const bool x_25 = (x_24 < 128.0f);
+  x_32_phi = x_25;
+  if (!(x_25)) {
+    const float x_30 = gl_FragCoord.y;
+    x_31 = (x_30 < 128.0f);
+    x_32_phi = x_31;
+  }
+  inbounds = x_32_phi;
+  expect = (inbounds ? 1 : -1);
+  return;
+}
+
+struct main_out {
+  int expect_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  int expect_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {expect};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.expect_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.msl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.msl
new file mode 100644
index 0000000..f604d95
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.msl
@@ -0,0 +1,39 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  int expect_1;
+};
+struct tint_symbol_2 {
+  int expect_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread int* const tint_symbol_6) {
+  bool inbounds = false;
+  bool x_31 = false;
+  bool x_32_phi = false;
+  float const x_24 = (*(tint_symbol_5)).x;
+  bool const x_25 = (x_24 < 128.0f);
+  x_32_phi = x_25;
+  if (!(x_25)) {
+    float const x_30 = (*(tint_symbol_5)).y;
+    x_31 = (x_30 < 128.0f);
+    x_32_phi = x_31;
+  }
+  bool const x_32 = x_32_phi;
+  inbounds = x_32;
+  bool const x_33 = inbounds;
+  *(tint_symbol_6) = select(-1, 1, x_33);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread int tint_symbol_8 = 0;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.expect_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.expect_1=tint_symbol_3.expect_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.spvasm b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..08bdcac1
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 57
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %expect "expect"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %inbounds "inbounds"
+               OpName %x_31 "x_31"
+               OpName %x_32_phi "x_32_phi"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "expect_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+        %int = OpTypeInt 32 1
+%_ptr_Private_int = OpTypePointer Private %int
+          %9 = OpConstantNull %int
+     %expect = OpVariable %_ptr_Private_int Private %9
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_int = OpTypePointer Output %int
+%tint_symbol_2 = OpVariable %_ptr_Output_int Output %9
+       %void = OpTypeVoid
+         %14 = OpTypeFunction %void
+       %bool = OpTypeBool
+%_ptr_Function_bool = OpTypePointer Function %bool
+         %21 = OpConstantNull %bool
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+  %float_128 = OpConstant %float 128
+     %uint_1 = OpConstant %uint 1
+      %int_1 = OpConstant %int 1
+     %int_n1 = OpConstant %int -1
+   %main_out = OpTypeStruct %int
+         %44 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %14
+         %17 = OpLabel
+   %inbounds = OpVariable %_ptr_Function_bool Function %21
+       %x_31 = OpVariable %_ptr_Function_bool Function %21
+   %x_32_phi = OpVariable %_ptr_Function_bool Function %21
+         %27 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %28 = OpLoad %float %27
+         %30 = OpFOrdLessThan %bool %28 %float_128
+               OpStore %x_32_phi %30
+         %31 = OpLogicalNot %bool %30
+               OpSelectionMerge %32 None
+               OpBranchConditional %31 %33 %32
+         %33 = OpLabel
+         %35 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %36 = OpLoad %float %35
+         %37 = OpFOrdLessThan %bool %36 %float_128
+               OpStore %x_31 %37
+         %38 = OpLoad %bool %x_31
+               OpStore %x_32_phi %38
+               OpBranch %32
+         %32 = OpLabel
+         %39 = OpLoad %bool %x_32_phi
+               OpStore %inbounds %39
+         %40 = OpLoad %bool %inbounds
+         %41 = OpSelect %int %40 %int_1 %int_n1
+               OpStore %expect %41
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %44
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %48 = OpLabel
+         %49 = OpCompositeExtract %int %tint_symbol_1 0
+               OpStore %tint_symbol_2 %49
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %51 = OpLabel
+         %52 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %52
+         %53 = OpFunctionCall %void %main_1
+         %55 = OpLoad %int %expect
+         %56 = OpCompositeConstruct %main_out %55
+         %54 = OpFunctionCall %void %tint_symbol_3 %56
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..a3e9f61
--- /dev/null
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl.expected.wgsl
@@ -0,0 +1,34 @@
+var<private> gl_FragCoord : vec4<f32>;
+
+var<private> expect : i32;
+
+fn main_1() {
+  var inbounds : bool;
+  var x_31 : bool;
+  var x_32_phi : bool;
+  let x_24 : f32 = gl_FragCoord.x;
+  let x_25 : bool = (x_24 < 128.0);
+  x_32_phi = x_25;
+  if (!(x_25)) {
+    let x_30 : f32 = gl_FragCoord.y;
+    x_31 = (x_30 < 128.0);
+    x_32_phi = x_31;
+  }
+  let x_32 : bool = x_32_phi;
+  inbounds = x_32;
+  let x_33 : bool = inbounds;
+  expect = select(-1, 1, x_33);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  expect_1 : i32;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(expect);
+}
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm
new file mode 100644
index 0000000..a9ff549
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm
@@ -0,0 +1,25 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %color_out %color_in
+               OpExecutionMode %main OriginUpperLeft
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %color_out "color_out"
+               OpName %color_in "color_in"
+               OpDecorate %color_out Location 0
+               OpDecorate %color_in Location 0
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+  %color_out = OpVariable %_ptr_Output_v4float Output
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+   %color_in = OpVariable %_ptr_Input_v4float Input
+       %main = OpFunction %void None %6
+         %11 = OpLabel
+         %12 = OpLoad %v4float %color_in
+               OpStore %color_out %12
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.hlsl b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.hlsl
new file mode 100644
index 0000000..c1e727e
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 color_in = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  color_out = color_in;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_1 {
+  float4 color_in_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 color_out_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 color_in_param = tint_symbol.color_in_param;
+  color_in = color_in_param;
+  main_1();
+  const main_out tint_symbol_3 = {color_out};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.color_out_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.msl b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.msl
new file mode 100644
index 0000000..dad0955
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_2 {
+  float4 color_in_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  float4 color_out_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_12 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_12;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const color_in_param = tint_symbol_1.color_in_param;
+  tint_symbol_8 = color_in_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.color_out_1=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.color_out_1=tint_symbol_4.color_out_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.spvasm b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.spvasm
new file mode 100644
index 0000000..2050b3e
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.spvasm
@@ -0,0 +1,59 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %color_out "color_out"
+               OpName %color_in "color_in"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+   %color_in = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %16 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %15 = OpLoad %v4float %color_in
+               OpStore %color_out %15
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %16
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %20 = OpLabel
+         %21 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %21
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %23 = OpLabel
+         %24 = OpLoad %v4float %tint_symbol
+               OpStore %color_in %24
+         %25 = OpFunctionCall %void %main_1
+         %27 = OpLoad %v4float %color_out
+         %28 = OpCompositeConstruct %main_out %27
+         %26 = OpFunctionCall %void %tint_symbol_3 %28
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.wgsl b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.wgsl
new file mode 100644
index 0000000..cd7d76c
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.spvasm.expected.wgsl
@@ -0,0 +1,21 @@
+var<private> color_out : vec4<f32>;
+
+var<private> color_in : vec4<f32>;
+
+fn main_1() {
+  let x_12 : vec4<f32> = color_in;
+  color_out = x_12;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(0)]] color_in_param : vec4<f32>) -> main_out {
+  color_in = color_in_param;
+  main_1();
+  return main_out(color_out);
+}
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
new file mode 100644
index 0000000..cd7d76c
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
@@ -0,0 +1,21 @@
+var<private> color_out : vec4<f32>;
+
+var<private> color_in : vec4<f32>;
+
+fn main_1() {
+  let x_12 : vec4<f32> = color_in;
+  color_out = x_12;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(0)]] color_in_param : vec4<f32>) -> main_out {
+  color_in = color_in_param;
+  main_1();
+  return main_out(color_out);
+}
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.hlsl b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.hlsl
new file mode 100644
index 0000000..c1e727e
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+static float4 color_out = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 color_in = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  color_out = color_in;
+  return;
+}
+
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_1 {
+  float4 color_in_param : TEXCOORD0;
+};
+struct tint_symbol_2 {
+  float4 color_out_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 color_in_param = tint_symbol.color_in_param;
+  color_in = color_in_param;
+  main_1();
+  const main_out tint_symbol_3 = {color_out};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.color_out_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.msl b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.msl
new file mode 100644
index 0000000..dad0955
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.msl
@@ -0,0 +1,30 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 color_out_1;
+};
+struct tint_symbol_2 {
+  float4 color_in_param [[user(locn0)]];
+};
+struct tint_symbol_3 {
+  float4 color_out_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_6, thread float4* const tint_symbol_7) {
+  float4 const x_12 = *(tint_symbol_6);
+  *(tint_symbol_7) = x_12;
+  return;
+}
+
+fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  thread float4 tint_symbol_8 = 0.0f;
+  thread float4 tint_symbol_9 = 0.0f;
+  float4 const color_in_param = tint_symbol_1.color_in_param;
+  tint_symbol_8 = color_in_param;
+  main_1(&(tint_symbol_8), &(tint_symbol_9));
+  main_out const tint_symbol_4 = {.color_out_1=tint_symbol_9};
+  tint_symbol_3 const tint_symbol_5 = {.color_out_1=tint_symbol_4.color_out_1};
+  return tint_symbol_5;
+}
+
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.spvasm b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.spvasm
new file mode 100644
index 0000000..2050b3e
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.spvasm
@@ -0,0 +1,59 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %color_out "color_out"
+               OpName %color_in "color_in"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "color_out_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+  %color_out = OpVariable %_ptr_Private_v4float Private %5
+   %color_in = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+   %main_out = OpTypeStruct %v4float
+         %16 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %15 = OpLoad %v4float %color_in
+               OpStore %color_out %15
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %16
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %20 = OpLabel
+         %21 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %21
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %23 = OpLabel
+         %24 = OpLoad %v4float %tint_symbol
+               OpStore %color_in %24
+         %25 = OpFunctionCall %void %main_1
+         %27 = OpLoad %v4float %color_out
+         %28 = OpCompositeConstruct %main_out %27
+         %26 = OpFunctionCall %void %tint_symbol_3 %28
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.wgsl b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.wgsl
new file mode 100644
index 0000000..cd7d76c
--- /dev/null
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+var<private> color_out : vec4<f32>;
+
+var<private> color_in : vec4<f32>;
+
+fn main_1() {
+  let x_12 : vec4<f32> = color_in;
+  color_out = x_12;
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  color_out_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[location(0)]] color_in_param : vec4<f32>) -> main_out {
+  color_in = color_in_param;
+  main_1();
+  return main_out(color_out);
+}
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm
new file mode 100644
index 0000000..baa40ee
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm
@@ -0,0 +1,39 @@
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %result %gl_FragCoord
+               OpExecutionMode %main OriginUpperLeft
+               OpSource GLSL 430
+               OpName %main "main"
+               OpName %result "result"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpDecorate %result Location 0
+               OpDecorate %gl_FragCoord BuiltIn FragCoord
+       %void = OpTypeVoid
+          %6 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+     %result = OpVariable %_ptr_Output_v4float Output
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Input_float = OpTypePointer Input %float
+  %float_255 = OpConstant %float 255
+     %uint_1 = OpConstant %uint 1
+    %float_0 = OpConstant %float 0
+       %main = OpFunction %void None %6
+         %17 = OpLabel
+         %18 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
+         %19 = OpLoad %float %18
+         %20 = OpExtInst %float %1 Floor %19
+         %21 = OpFDiv %float %20 %float_255
+         %22 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
+         %23 = OpLoad %float %22
+         %24 = OpExtInst %float %1 Floor %23
+         %25 = OpFDiv %float %24 %float_255
+         %26 = OpCompositeConstruct %v4float %21 %25 %float_0 %float_0
+               OpStore %result %26
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.hlsl b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.hlsl
new file mode 100644
index 0000000..6b9138b
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 result = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_19 = gl_FragCoord.x;
+  const float x_23 = gl_FragCoord.y;
+  result = float4((floor(x_19) / 255.0f), (floor(x_23) / 255.0f), 0.0f, 0.0f);
+  return;
+}
+
+struct main_out {
+  float4 result_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  float4 result_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {result};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.result_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.msl b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.msl
new file mode 100644
index 0000000..6f93315
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 result_1;
+};
+struct tint_symbol_2 {
+  float4 result_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_19 = (*(tint_symbol_5)).x;
+  float const x_23 = (*(tint_symbol_5)).y;
+  *(tint_symbol_6) = float4((floor(x_19) / 255.0f), (floor(x_23) / 255.0f), 0.0f, 0.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.result_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.result_1=tint_symbol_3.result_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.spvasm b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.spvasm
new file mode 100644
index 0000000..9f52743
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.spvasm
@@ -0,0 +1,74 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+         %24 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %result "result"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "result_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+     %result = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+  %float_255 = OpConstant %float 255
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+         %31 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %19 = OpLoad %float %18
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %22 = OpLoad %float %21
+         %23 = OpExtInst %float %24 Floor %19
+         %26 = OpFDiv %float %23 %float_255
+         %27 = OpExtInst %float %24 Floor %22
+         %28 = OpFDiv %float %27 %float_255
+         %30 = OpCompositeConstruct %v4float %26 %28 %float_0 %float_0
+               OpStore %result %30
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %31
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %35 = OpLabel
+         %36 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %36
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %38 = OpLabel
+         %39 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %39
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %result
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_3 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.wgsl b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.wgsl
new file mode 100644
index 0000000..2130c1a
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.spvasm.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> result : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  let x_19 : f32 = gl_FragCoord.x;
+  let x_23 : f32 = gl_FragCoord.y;
+  result = vec4<f32>((floor(x_19) / 255.0), (floor(x_23) / 255.0), 0.0, 0.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  result_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(result);
+}
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
new file mode 100644
index 0000000..2130c1a
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
@@ -0,0 +1,22 @@
+var<private> result : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  let x_19 : f32 = gl_FragCoord.x;
+  let x_23 : f32 = gl_FragCoord.y;
+  result = vec4<f32>((floor(x_19) / 255.0), (floor(x_23) / 255.0), 0.0, 0.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  result_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(result);
+}
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.hlsl b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.hlsl
new file mode 100644
index 0000000..6b9138b
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+static float4 result = float4(0.0f, 0.0f, 0.0f, 0.0f);
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  const float x_19 = gl_FragCoord.x;
+  const float x_23 = gl_FragCoord.y;
+  result = float4((floor(x_19) / 255.0f), (floor(x_23) / 255.0f), 0.0f, 0.0f);
+  return;
+}
+
+struct main_out {
+  float4 result_1;
+};
+struct tint_symbol_1 {
+  float4 gl_FragCoord_param : SV_Position;
+};
+struct tint_symbol_2 {
+  float4 result_1 : SV_Target0;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  const main_out tint_symbol_3 = {result};
+  const tint_symbol_2 tint_symbol_4 = {tint_symbol_3.result_1};
+  return tint_symbol_4;
+}
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.msl b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.msl
new file mode 100644
index 0000000..6f93315
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct main_out {
+  float4 result_1;
+};
+struct tint_symbol_2 {
+  float4 result_1 [[color(0)]];
+};
+
+void main_1(thread float4* const tint_symbol_5, thread float4* const tint_symbol_6) {
+  float const x_19 = (*(tint_symbol_5)).x;
+  float const x_23 = (*(tint_symbol_5)).y;
+  *(tint_symbol_6) = float4((floor(x_19) / 255.0f), (floor(x_23) / 255.0f), 0.0f, 0.0f);
+  return;
+}
+
+fragment tint_symbol_2 tint_symbol(float4 gl_FragCoord_param [[position]]) {
+  thread float4 tint_symbol_7 = 0.0f;
+  thread float4 tint_symbol_8 = 0.0f;
+  tint_symbol_7 = gl_FragCoord_param;
+  main_1(&(tint_symbol_7), &(tint_symbol_8));
+  main_out const tint_symbol_3 = {.result_1=tint_symbol_8};
+  tint_symbol_2 const tint_symbol_4 = {.result_1=tint_symbol_3.result_1};
+  return tint_symbol_4;
+}
+
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.spvasm b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.spvasm
new file mode 100644
index 0000000..9f52743
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.spvasm
@@ -0,0 +1,74 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 44
+; Schema: 0
+               OpCapability Shader
+         %24 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpName %result "result"
+               OpName %gl_FragCoord "gl_FragCoord"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main_1 "main_1"
+               OpName %main_out "main_out"
+               OpMemberName %main_out 0 "result_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_2 Location 0
+               OpMemberDecorate %main_out 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Private_v4float = OpTypePointer Private %v4float
+          %5 = OpConstantNull %v4float
+     %result = OpVariable %_ptr_Private_v4float Private %5
+%gl_FragCoord = OpVariable %_ptr_Private_v4float Private %5
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%tint_symbol_2 = OpVariable %_ptr_Output_v4float Output %5
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_0 = OpConstant %uint 0
+%_ptr_Private_float = OpTypePointer Private %float
+     %uint_1 = OpConstant %uint 1
+  %float_255 = OpConstant %float 255
+    %float_0 = OpConstant %float 0
+   %main_out = OpTypeStruct %v4float
+         %31 = OpTypeFunction %void %main_out
+     %main_1 = OpFunction %void None %11
+         %14 = OpLabel
+         %18 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_0
+         %19 = OpLoad %float %18
+         %21 = OpAccessChain %_ptr_Private_float %gl_FragCoord %uint_1
+         %22 = OpLoad %float %21
+         %23 = OpExtInst %float %24 Floor %19
+         %26 = OpFDiv %float %23 %float_255
+         %27 = OpExtInst %float %24 Floor %22
+         %28 = OpFDiv %float %27 %float_255
+         %30 = OpCompositeConstruct %v4float %26 %28 %float_0 %float_0
+               OpStore %result %30
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_3 = OpFunction %void None %31
+%tint_symbol_1 = OpFunctionParameter %main_out
+         %35 = OpLabel
+         %36 = OpCompositeExtract %v4float %tint_symbol_1 0
+               OpStore %tint_symbol_2 %36
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %11
+         %38 = OpLabel
+         %39 = OpLoad %v4float %tint_symbol
+               OpStore %gl_FragCoord %39
+         %40 = OpFunctionCall %void %main_1
+         %42 = OpLoad %v4float %result
+         %43 = OpCompositeConstruct %main_out %42
+         %41 = OpFunctionCall %void %tint_symbol_3 %43
+               OpReturn
+               OpFunctionEnd
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.wgsl b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.wgsl
new file mode 100644
index 0000000..2130c1a
--- /dev/null
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+var<private> result : vec4<f32>;
+
+var<private> gl_FragCoord : vec4<f32>;
+
+fn main_1() {
+  let x_19 : f32 = gl_FragCoord.x;
+  let x_23 : f32 = gl_FragCoord.y;
+  result = vec4<f32>((floor(x_19) / 255.0), (floor(x_23) / 255.0), 0.0, 0.0);
+  return;
+}
+
+struct main_out {
+  [[location(0)]]
+  result_1 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  return main_out(result);
+}
